Apparatus and method for testing transceiver systems and transceiver system
43 claims: 6 independent, 37 dependent
- 1IŠRADIMO APIBRĖŽTIS 1.Celiuliarinis ar celiuliarinio tipo perdavimo aparatas, turintis celiuliarinį ar celiuliarinio tipo siųstuvą-imtuvą, celiuliarinį ar celiuliarinio tipo interfeisinį įrenginį ir standartinį telefoninį rinkinį, prijungtą prie minėto celiuliarinio, ar celiuliarinio tipo siųstuvo-imtuvo, kai minėtas interfeisinis įrenginys konvertuoja DTMF ar pulsinio tipo skambinimo signalus į skaitmeninę formą siuntimui į minėtą celiuliarinį ar celiuliarinio tipo siųstuvąimtuvą, kai skambina iš telefono, formuojant šaukimą celiuliarinėje ar celiuliarinio tipo sistemoje, besiskiriantis tuo, kad turi:autodiagnostines priemones celiuliarinio, ar celiuliarinio tipo siųstuvo-imtuvo ir celiuliarinio ar celiuliarinio tipo interfeisinio įrenginio funkcionavimui stebėti ir pranešti, priemones papildomam minėtų autodiagnostinių priemonių prijungimui prie celiuliarinio ar celiuliarinio tipo interfeisinio įrenginio, priemones papildomam prijungimui minėtų autodiagnostinių priemonių, turinčias priemones standartinio telefoninio rinkinio atjungimui nuo celiuliarinio ar celiuliarinio tipo interfeisinio įrenginio, kai autodiagnostines priemonės yra prijungtos prie celiuliarinio ar celiuliarinio tipo interfeisinio Įrenginio, autodiagnostines priemones^ turinčias priemones, galinčias simuliuoti standartinio telefoninio rinkinio funkcijas, nustatant ar celiuliarinis ar celiuliarinio tipo interfeisinis įrenginys yra funkcionalus.
- 2Celiuliarinis perdavimo aparatas pagal 1 punktą, besiskiriantis tuo, kad standartinio telefoninio aparato funkcijas simuliuojančios priemonės turi priemones pakėlimo signalo generavimui celiuliariniam ar celiuliarinio tipo interfeisiniam įrenginiui.
- 3Celiuliarinis perdavimo aparatas pagal 2 punktą, besiskiriantis tuo, kad autodiagnostinės priemonės turi priemones skambinimo tono detektavimui, kurį sugeneruoja celiuliarinis ar celiuliarinio tipo interfeisinis įrenginys, atsakydamas į pakėlimo signalo sugeneravimą.
- 4Celiuliarinis perdavimo aparatas pagal 1 punktą, besiskiriantis tuo, kad standartinio telefoninio aparato funkcijas simuliuojančios priemonės turi priemones DTMF signalo generavimui ir jo siuntimui į celiuliarinį ar celiuliarinio tipo interfeisinį įrenginį.
- 5Celiuliarinis perdavimo aparatas pagal 4 punktą, besiskiriantis tuo, kad autodiagnostinės priemonės turi priemones DTMF signalo detektavimui, kurį sugeneruoja celiuliarinis ar celiuliarinio tipo interfeisinis įrenginys, atsakydamas į priemonių sugeneruotą DTMF signalą.
- 6Celiuliarinis perdavimo aparatas pagal 1 punktą, besiskiriantis tuo, kad standartinio telefoninio aparato funkcijas simuliuojančios priemonės turi priemones sujungimo signalo generavimui ir jo siuntimui į celiuliarinį ar celiuliarinio tipo interfeisinį įrenginį.
- 7Celiuliarinis perdavimo aparatas pagal 6 punktą, besiskiriantis tuo, kad autodiagnostinės priemonės turi priemones išorinio skambinimo generavimui, siekiant paleisti celiuliarinio ar celiuliarinio tipo interfeisinio įrenginio skambučio generatorių, bei priemones šio sugeneruoto skambučio detektavimui.
- 8Celiuliarinis perdavimo aparatas pagal 7 punktą, besiskiriantis iuo, kad standartinio telefoninio aparato funkcijas simuliuojančios priemonės turi priemones padėjimo signalo generavimui ir jo siuntimui į minėtą celiuliarinį ar celiuliarinio tipo interfeisinį įrenginį, kai celiuliarinio tipo interfeisinis Įrenginys generuoja skambučius, siekiant nustatyti ar minėtas celiuliarinis ar celiuliarinio tipo interfeisinis įrenginys teisingai atjungs skambučio signalą, atėjus telefoniniam kvietimui.
- 9Celiuliarinis perdavimo aparatas pagal 1 punktą, besiskiriantis tuo, kad autodiagnostinės priemonės turi priemones išeinančiam skambinimui generuoti per celiuliarinį ar celiuliarinio tipo interfeisinį įrenginį ir siųstuvą-imtuvą, per celiuliarinę ar celiuliarinio tipo telefoninę sistemą, skambinimui grįžtant atgal į celiuliarinį ar celiuliarinio tipo siųstuvą-imtuvą, bei minėtos autodiagnostinės priemonės turi priemones užimtumo signalo, generuojamo minėto celiuliarinio ar celiuliarinio tipo siųstuvo-imtuvo, atsakant į atėjusį skambutį, detektavimu, ir priemones išeinančiam skambinimui generuoti numeriu, kuris priskirtas minėtam siųstuvui-imtuvui, prie kurio jos yra prijungtos.
- 10Testavimo aparatas celiuliarinio ar celiuliarinio tipo interfeisinio Įrenginio darbingumo tikrinimui, turintis celiuliarinį ar celiuliarinio tipo interfeisinį įrenginį, prijungtą prie standartinio telefoninio rinkinio ar telefoninio tipo prietaiso, ir interfeisinis įrenginys gali konvertuoti prijungto telefoninio tipo prietaiso DTMF ar pulsinio tipo skambinimo signalus į skaitmeninę formą jų siuntimui į celiuliarinį ar celiuliarinio tipo siųstuvą-imtuvą, besiskiriantis tuo, kad turi diagnostines priemones celiuliarinio ar celiuliarinio tipo interfeisinio įrenginio funkcionavimui stebėti ir pranešti.
- 11Testavimo aparatas pagal 10 punktą, besiskiriantis tuo, kad turi priemones papildomam prijungimui diagnostinių priemonių prie minėto celiuliarinio ar celiuliarinio tipo interfeisinio tipo įrenginio, ir diagnostinės priemonės turi priemones, simuliuoti standartinio telefoninio tipo funkcijas, nustatant ar tipo interfeisinis galinčias įrenginio celiuliarinio funkcionalus. celiuliarinis įrenginys ar yra
- 12Testavimo aparatas pagal 11 punktą, besiskiriantis tuo, kad minėtos priemonės papildomam prijungimui, turi priemones telefoninio tipo įrenginio atjungimui nuo celiuliarinio ar celiuliarinio tipo interfeisinio įrenginio, kai diagnostinės priemonės yra prijungtos prie celiuliarinio ar celiuliarinio tipo interfeisinio įrenginio.
- 13Testavimo aparatas pagal 11 punktą, besiskiriantis tuo, kad priemonės galinčios simuliuoti standartinio telefoninio tipo įrenginio funkcijas, turi priemones pakėlimo signalo generavimui minėtam celiuliariniam ar celiuliarinio tipo įrenginiui.
- 14Testavimo aparatas pagal 13 punktą, besiskiriantis tuo, kad diagnostinės priemonės turi priemones skambinimo tono detektavimui, kurį generuoja celiuliarinis ar celiuliarinio tipo interfeisinis įrenginys, atsakydamas į pakėlimo signalo generavimą.
- 15Testavimo aparatas pagal 11 punktą, besiskiriantis tuo, kad telefoninio tipo įtaiso funkcijas stimuliuojančios priemonės turi priemones DTMF signalo generavimui ir jo siuntimui į celiuliarinio ar celiuliarinio tipo interfeisinį įrenginį.
- 16Testavimo aparatas pagal 15 punktą, besiskiriantis tuo, kad diagnostinės priemonės turi priemones DTMF signalo detektavimui, kurį generuoja celiuliarinis ar celiuliarinio tipo interfeisinis įrenginys, atsakydamas į minėtų priemonių generuotą DTMF signalą.
- 17Testavimo aparatas pagal 15 punktą, besiskir i a n funkcijas sujungimo celiuliarinį įrenginį. t i s tuo, kad telefoninio tipo įtaiso simuliuojančios priemonės turi priemones signalo generavimui ir jo siuntimui į ar celiuliarinio tipo interfeisinį
- 18Testavimo aparatas pagal 10 punktą, besiskiriantis tuo, kad telefoninio tipo įtaiso funkcijas simuliuojančios priemonės turi priemones ateinančio šaukimo signalo generavimui ir jo siuntimui į minėtą siųstuvą-imtuvą, siekiant nustatyti ar celiuliarinis ar celiuliarinio tipo interfeisinis įrenginys įjungs savo skambučio generatorių, bei diagnostines priemones, įjungiančias skambučio signalo detektorių.
- 19Testavimo aparatas pagal 18 punktą, besiskiriantis tuo, kad diagnostinės priemonės turi priemones padėjimo signalo generavimui ir jo siuntimui į celiuliarinį ar celiuliarinio tipo interfeisinį įrenginį, kai celiuliarinis ar celiuliarinio tipo interfeisinis įrenginys generuoja skambučius, siekiant nustatyti ar celiuliarinis ar celiuliarinio tipo interfeisinis įrenginys teisingai atjungs skambučio signalą atėjus telefoniniam kvietimui.
- 20Testavimo aparatas pafal 10 punktą, besiskiriantis tuo, kad diagnostinės priemonės turi priemones išeinančiam skambinimui per celiuliarinį ar celiuliarinio tipo telefoninį tinklą, kai celiuliarinis ar celiuliarinio tipo interfeisinis Įrenginys yra prijungtas prie siųstuvo-imtuvo, ko pasėkoje vyksta skambinimas sau pačiam, ir minėtos diagnostinės priemonės turi priemones užimtumo signalo, generuojamo celiuliarinio ar celiuliarinio tipo siųstuvo-imtuvo, atsakant i atėjusį skambutį, detektavimui ir priemones išeinančiam skambinimui generuoti numeriu, kuris priskirtas minėtam siųstuvui-imtuvui, prie kurio jos yra prijungtos.
- 21Testavimo būdas tikrinti diagnostinio įrenginio priemonėmis celiuliarinio tipo interfeisinio įrenginio darbingumą, kai celiuliarinis ar celiuliarinio tipo interfeisinis įrenginys yra prijungiamas prie standartinio telefoninio rinkinio ar telefoninio tipo prietaiso, o interfeisinis įrenginys gali konvertuoti DTMF ar pulsinio tipo skambinimo signalus iš prijungto telefono tipo prietaiso į skaitmeninę formą jų siuntimui į celiuliarinio ar celiuliarinio tipo siųstuvą-imtuvą, besiskiriantis tuo, kad įjungia minėto celiuliarinio ar celiuliarinio tipo interfeisinio įrenginio funkcionavimo stebėjimą ir ataskaitų siuntimą.
- 22Testavimo būdas pagal 21 punktą, besiskiriantis tuo, kad prijungia minėtas diagnostines 100 priemones prie celiuliarinio ar celiuliarinio tipo interfeisinio įrenginio, bei prijungia diagnostines priemones, galinčias simuliuoti telefoninio tipo įrenginio funkcijas, celiuliarinis ar celiuliarinio tipo įrenginys yra funkcionalus. standartinio nustatant ar interfeisinis
- 23Testavimo būdas pagal 22 punktą, besiskiriantis tuo, kad atjungia telefoninio tipo įrenginį nuo minėto celiuliarinio ar celiuliarinio tipo interfeisinio įrenginio, kai minėtos diagnostinės priemonės yra prijungiamos prie celiuliarinio ar celiuliarinio tipo interfeisinio įrenginio.
- 24Testavimo būdas pagal 22 punktą, besiskiriantis tuo, kad generuoja pakėlimo signalą celiuliariniam ar celiuliarinio tipo interfeisinio tipo interfeisiniam įrenginiui.
- 25Testavimo būdas pagal 24 punktą, besiskiriantis tuo, kad detektuoja skambinimo toną, kurį sugeneruoja minėtas celiuliarinis ar celiuliarinio tipo interfeisinis įrenginys, atsakydamas į minėto pakėlimo signalo sugeneravimą.
- 26Testavimo būdas pagal 22 punktą, besiskiriantis tuo, kad generuoja DTMF signalą ir siunčia į celiuliarinio ar celiuliarinio tipo interfeisinį įrenginį.
- 27Testavimo būdas pagal 26 punktą, besiskiriantis tuo, kad detektuoja DTMF signalą, kurį sugeneruoja minėtas celiuliarinis ar celiuliarinio tipo interfeisinis įrenginys, atsakydamas į minėtų priemonių sugeneruotą DTMF signalą. 101
- 28Testavimo būdas pagal 26 punktą, besiskiriantis tuo, kad generuoja sujungimo signalą ir jį siunčia į minėtą celiuliarinį ar celiuliarinio tipo interfeisinį įrenginį.
- 29Testavimo būdas pagal 21 punktą, besiskiriantis tuo, kad generuoja ateinantį šaukimo signalą ir jį siunčia į minėtą siųstuvą-imtuvą, siekiant nustatyti ar celiuliarinis ar celiuliarinio tipo interfeisinis įrenginys įjungs savo skambučio generatorių, bei detektuoja skambučio signalą.
- 30Testavimo būdas pagal 29 punktą, besiskiriantis tuo, kad generuoja padėjimo signalą ir jį siunčia į minėtą celiuliarinį ar celiuliarinio tipo interfeisinį įrenginį, kai minėtas celiuliarinis ar celiuliarinio tipo interfeisinis įrenginys generuoja skambučius, siekiant nustatyti ar celiuliarinis ar celiuliarinio tipo interfeisinis įrenginys teisingai atjungs skambučio signalą atėjus telefoniniam kvietimui.
- 31Testavimo būdas pagal 21 punktą, besiskiriantis tuo, kad generuoja išeinantį skambinimą per celiuliarinį ar celiuliarinio tipo telefoninį tinklą, kai celiuliarinis ar celiuliarinio tipo interfeisinis įrenginys yra prijungtas prie siųstuvoimtuvo, ko pasėkoje vyksta skambinimas sau pačiam, ir detektuoj amas užimtumo signalas, generuojamas minėtam celiuliarinio ar celiuliarinio tipo perdavėjui atsakant į skambutį.
- 32Celiuliarinio perdavimo aparatas, turintis radijo siųstuvą-imtuvą, interfeisinį įrenginį, prijungtą prie minėto siųstuvo-imtuvo, kai minėtas interfeisinis įrenginys prijungia minėtą komunikacinį įrenginį prie minėto radijo siųstuvo-imtuvo kviečiant ar atsakant per 102 minėtą radijo siųstuvą-imtuvą, besiskiriantis tuo, kad turi autodiagnostines priemones minėto siųstuvo-imtuvo ir interfeisinio įrenginio funkcionavimui stebėti ir pranešti, priemones papildomam prijungimui minėtų autodiagnostinių priemonių prie minėto interfeisinio įrenginio, priemones papildomam autodiagnostinių priemonių, minėto komunikacinio įrenginio atjungimui nuo minėto interfeisinio įrenginio, kai autodiagnostines priemonės yra prijungiamos prie interfeisinio įrenginio, minėtas autodiagnostines priemones turinčias priemones, galinčias simuliuoti komunikacinio įrenginio funkcijas, nustatant ar interfeisinis įrenginys yra funkcionalus. prijungimui minėtų turinčias priemones
- 33Celiuliarinis perdavimo besiskirian įrenginio funkcijas priemones pakėlimo aparatas pagal 32 punktą, i s tuo, kad komunikacinio simuliuojančios priemonės turi signalo generavimui minėtam interfeisiniam įrenginiui
- 34Celiuliarinis perdavimo aparatas pagal 33 punktą, besiskiriantis tuo, kad autodiagnostines priemonės turi priemones skambinimo tono detektavimui, kurį sugeneruoja interfeisinis įrenginys, atsakydamas į pakėlimo signalo sugeneravimą.
- 35Celiuliarinis perdavimo aparatas pagal 32 punktą, besiskiriantis tuo, kad komunikacinio įrenginio funkcijas simuliuojančios priemonės turi priemones DTMF signalo generavimui ir jo siuntimui į interfeisinį įrenginį.
- 36Celiuliarinis perdavimo aparatas pagal 35 punktą, besiskiriantis tuo, kad minėtos autodiagnostines priemonės turi priemones DTMF signalo 103 detektavimui, kurį sugeneruoja interfeisinis įrenginys atsakydamas į priemonių sugeneruotą DTMF signalą.
- 37Celiuliarinis perdavimo aparatas pagal 32 punktą, besiskiriantis tuo, kad autodiagnostinės priemonės turi priemones išorinio skambinimo generavimui, siekiant paleisti interfeisinio Įrenginio skambučio generatorių, bei priemones šio sugeneruoto skambučio detektavimui.
- 38Celiuliarinis perdavimo aparatas pagal 32 punktą, besiskiriantis tuo, kad autodiagnostinės priemonės turi priemones išeinančiam skambinimui generuoti per interfeisinį įrenginį ir siųstuvą-imtuvą, per radijo telefono sistemą, kuriai priklauso siųstuvas-imtuvas, skambinimui generuoti per interfeisinį įrenginį ir siųstuvą-imtuvą, per radijo telefono sistemą, kuriai priklauso siųstuvas-imtuvas, skambinimui grįžtant atgal į siųstuvą-imtuvą, bei autodiagnostinės priemonės įjungia priemones užimtumo signalo, generuojamo minėto siųstuvo-imtuvo, atsakant i skambutį, detektavimui, ir priemones išeinančiam skambinimui generuoti numeriu, kuris priskirtas minėtam siųstuvui-imtuvui, prie kurio jos yra prijungtos.
- 39Testavimo aparatas tikrinti interfeisinio įrenginio darbingumą, turintis interfeisinį įrenginį , prijungtą prie komunikacinio Įrenginio, prijungto prie radijo siųstuvo-imtuvo gaunant ir siunčiant pranešimus per radijo siųstuvą-imtuvą, besiskiriantis tuo, kad turi diagnostines priemones minėto interfeisinio įrenginio funkcionavimui stebėti ir pranešti.
- 40Testavimo aparatas pagal 39 punktą, besiskiriantis tuo, kad turi priemones papildomam prijungimui diagnostinių priemonių prie interfeisinio 104 įrenginio, diagnostines priemones, įjungiančias priemones, galinčias simuliuoti komunikacinio įrenginio funkcijas, nustatant ar interfeisinis įrenginys yra funkcionalus.
- 41Testavimo darbingumą interfeisinį įrenginio ir siunčiant b e s i s būdas tikrinti interfeisinio įrenginio diagnostinio įtaiso pagalba, kai įrenginį prijungia tarp komunikacinio radijo siųstuvo-imtuvo, gaunant ir pranešimus radijo siųstuvo-imtuvo pagalba, kiriantis tuo, kad stebi ir praneša apie interfeisinio įrenginio funkcionavimą.
- 42Testavimo būdas pagal 41 punktą, besiskiriantis tuo, kad prijungia diagnostines priemones prie interfeisinio įrenginio, bei prijungia diagnostines priemones, galinčias simuliuoti komunikacinio įrenginio funkcijas, nustatant ar interfeisinis įrenginys yra funkcionalus.
- 43Testavimo būdas pagal 42 punktą, besiskiriantis tuo, kad atjungia komunikacinį įrenginį nuo interfeisinio įrenginio, kai diagnostinės priemonės yra prijungiamos prie interfeisinio įrenginio. DO_TEST funkcija
Independent claims43
1,772 paragraphs in 1 section, as filed
The invention relates to transmission systems and is intended to test the functionality of a cellular transmission system. The present invention is close to the cellular interface system described in U.S. Pat. No. 4658096 and Ref. 4737975. The interface device of the system described in these patents consists of a standard telephone set, a facsimile machine, a modem or other communication device, which is connected to a cellular transmitter, the interface device of which normally communicates with said commutation apparatus via a radio transmitter. The interface also converts DTMF or pulse dialing signals to digital format for transmission via a radio transmitter, where the dialed number is used to form a radio system call.
The system of the invention checks the functionality of all parts of the interface device, as well as other device characteristics: transmitter power, which can vary, or transmitter frequency, which can be changed in either the transmitter or the cellular network.
The diagnostic and testing system described in the present invention can be used in a cellular type system such as ISDN or the like, wherein the cellular adapter or interface device is used to convert DTMF or pulse signals to digital format and then transmit them to a cellular type transmitter operating in the cellular system. .
There are known test and diagnostic devices for the entire cellular system. Self-testing devices are also known. This is described in U.S. Pat. No. 5016269, which discloses a cellular telephone with an alarm system. This system performs self-testing functions and continuously transmits its status information to the central station via a cellular network. However, the said patent does not disclose the monitoring and diagnostic functions of the DTMF converter used in the aforementioned U.S. Patents Nos. No. 4658096 and Ref. 4737975, and does not enable call tone initialization from a central station system for performance testing.
Cellular systems that can use the device of the present invention include digital communication systems having smart base stations and smart handheld terminals, each having a certain communication area, and specifically for a digital, radio cellular, personal communication system supporting full ISDN. interface, and therefore capable of connecting to a public telephone network or any switched network, where the personal communication system supports audio / data / video transmission and is reciprocal, functional with any modulation system, with a cellular communication protocol, and wherein the terminals and stations are controlled by software, and the public switched telephone network is provided with an appropriate base.
Recently, the functionality of mobile and portable communication media has been increasing, which means that wired communications can be dropped. Cellular systems, together with search and other systems, allow real mobility of communication tools. Significant technological advancements have greatly expanded support for wireless communications. This support enables, but is not limited to, digital wireless, cellular, facsimile, and local wireless networks, where available through existing public networks or other local area networks (such as cable TV systems). In this way, digital personal communication systems (PCS) can work independently or in combination with local wired networks, filling the gaps that exist in current communication systems, thus revealing areas that have not yet been mastered. PCS are promising and greatly increase the flexibility and functionality of networks. Accordingly, PCS implementers need to absorb new national markets, given their nature.
Personal communication requirements in the US are changing depending on their functional mobility. One of the benefits of PCS is the ability to communicate to anyone, anytime, anywhere, PCS greatly increases user mobility, which solves the problem of communication with the user. PCS allows users to miss important calls as well as save time and money on answering calls. PCS combines radio functionality with public telephone network technology and infrastructure and enables two-way and uninterrupted communications. It is important to note that there is still plenty of room for new technologies and applications in PCS, such as private communications, smaller terminals, portable fax machines, multichannel phones and more. Current hardware support cannot realize these new PCS features. For example, cordless telephones used in offices or at home have low channels and short communication distances. Search engines have only one-way communication. Cellular phones do not realize all the features of PCS. After some time, PCS will turn on standard provisioning and support registration, auto-convening, data transfer and other features. Digital PCS is required to realize many of these new features. Wireless PCS will make redundant wired systems redundant, in other words, PCS will add new features to communications systems, changing the way they are designed, equipped and features.
The subject matter of the present invention may be used in systems or other PCS systems employing a cellular-type adapter or interface that allows standard telephone tools to be utilized in this system for converting DTMF or pulse signals to a digital format that can be transmitted to a transmitter and supporting other specific system properties. For example, alarm systems may also use the system mentioned. The PCS cellular adapter also supports other necessary functions, such as dialing code generation, calling, and the like, as described in U.S. Patents 4,658,096 and 4,737,975.
It is an object of the present invention to provide a self-diagnostic system for testing all functions of a cellular transmitter having an interface device that connects standard telephones to a cellular system and converts DTMF or pulse dial signals into a digital form when calling from a standard telephone. The subject of the present invention not only monitors the cellular transmitter and its power supply, but also checks the cellular interface.
The test apparatus may be connected to an interface that connects a communication device to the radio transmitter for transmitting and receiving call signs via this transmitter, and the test apparatus has its own diagnostic system for monitoring the interface device.
The tester also connects diagnostic devices to the interface device. The aforementioned diagnostic devices emulate the functions of the communication device, such as telephone, fax, etc., by generating appropriate signals and thus determine the functionality of the interface device.
The tester thus generates a lift signal by checking the generation of the ring tone on the interface device.
The tester also generates a DTMF signal and sends it to the interface device, thereby verifying the operation of the interface device.
The tester thus generates a lift signal and a position signal by checking how the interface device responds to disconnection. The tester also performs a call procedure over the network, addressing the same interface device, thereby verifying the generation of a busy signal.
The invention will be better understood by reference to the accompanying drawings, in which:
FIG. 1A and 1B show the main stages of testing;
FIG. 2 shows a block diagram of an uplift testing program;
FIG. 3 shows a block diagram of a call testing program;
FIG. 4 shows the DTMF tone generator testing
<td>programs</td><td>blockchain</td><td>scheme</td><td></td><td></td><td></td>
<td>FIG. 5A -</td><td colspan="3">5C shows the call</td><td>generating</td><td>testing</td>
<td>programs</td><td>blockchain</td><td>scheme</td><td></td><td></td><td></td>
<td>FIG. 6th</td><td>shows</td><td>a reply</td><td>to</td><td>call</td><td>testing</td>
<td>programs</td><td>blockchain</td><td>scheme</td><td> •</td><td></td><td></td>
<td>FIG. 7th</td><td>shows</td><td>a reply</td><td>i</td><td>call</td><td>testing</td>
<td>programs</td><td>blockchain</td><td>scheme</td><td></td><td></td><td></td>
FIG. 8A and 8B show a block diagram of an error generating program;
FIG. 9 shows a block diagram of a drop program;
FIG. 10 shows a block diagram of the system;
FIG. 11-14 show the various circuits used to test the cellular interface and transmitter by simulating the events being tested.
The autodiagnostic system is for cellular-type interfaces and systems described in U.S. Patents 4,658,096 and 4,737,975. Additionally, the autodiagnostic system can be used in other radio communication systems, such as IMTS, which maintains communication between base station and terminals, and where the transmitter is connected to an interface adapter, as described in U.S. Patents 4,658,096 and 4,737,975, e.g. connecting the means of communication with the radio transmitter. The interface supports functions needed for use, e.g. alarm systems do not require call generation. Systems that only need to receive calls do not need to convert DTMF or pulse signals to digital form. The required software is provided in U.S. Patents 4,658,096 and 4,737,975 and can be activated either manually or automatically for diagnostic testing, depending on test results. Each component can be checked eg. DTMF converter, line switching interface, etc. In addition, the transmitter, batteries, etc. can be checked. The device of the present invention can realize a call over a cellular network to check for line signals. Alternatively, the device of the invention may realize a call to receive a 1000 Hz tone from a predetermined location to verify that the cellular system is working properly. This is very handy for testing the connection, which allows you to determine whether the fault is at a central station or terminal.
According to the invention, two modules are used. The former performs telemarketing functions and the latter performs telemonitoring. The management module generates tests, including dialing a fixed number, and then reports the results. The module also allows you to call your own number to check the busy signal. These tests can be triggered by pressing a special key. When pressed, the LED next to it starts flashing. If it does not go away after the test, this indicates a malfunction. The test lasts a maximum of 40 seconds. If the LED goes out, everything is working fine. Software and firmware allow you to run the test from the country.
The other module (circuit) performs the following functions: It processes the accounting signal from the cellular system and generates the accounting signals for the telephone. The device recognizes signals and does not require local accounting. It can be used with any cellular type system that is capable of generating accounting signals.
Description of the block diagram of the control module
The user launches the tests by pressing the autodiagnostic key, which causes the autostart program to run.
FIG. IA and 1B show the basic DO_TEST program from which various procedures are called. After each procedure, error codes are checked. In the event of a failure, the test shall be terminated and the results shall be reflected in the four LEDs.
According to FIG. IA, In the first step, variables and flags are initialized. In step 2, the program calls the Hook_Test function, whereby the user's phone is disconnected from the TIP and RING lines, and a telecontrol module is connected to these lines, as described in U.S. Patents 4,658,096 and 4,737,975. If an error is detected, testing stops and the program proceeds to step 14 (Fig. 1B). If there are no errors, the program calls the Dial_test function. The ring tone is then checked and, if errors are found, go to step 14. If no errors are found, the DTMF_Test function is called (step 6), and in the event of errors, the test is aborted and proceeded to step 14; In case of errors, go to step 14, in the absence of that - call the Ring_Answer_Test function (step 10) which in case of errors redirect to step 14. The next called test is the function Make_Call_Test verifying the call test. In the event of an error, go to step 14, otherwise call the Fin_Self_Test function in step 15. If no error is found, the program goes to step 14. In step 14, the Error_Acc function is called. The rear clears variables, drops flags, and returns to normal operation.
FIG. 2-9 for details on the above test functions.
FIG. 2 The Hook_Test function initially initializes variables and drops flags. In step 17, the LEDs are extinguished. The user phone is further disconnected from the TIP and RING lines, and the management module is connected. After the delay (21), the connection is simulated. After the delay, the j ungim <Xf state is checked (23). If no connection (25) is made, set 1 ERROR_FEAG ^ and MAIN_FLAG_ERROR. If there are no errors, go to 26, where the ring tone is allowed, then the function returns control to the main program.
FIG. 3 is a block diagram of the Dial_Test function. This function initially initializes variables and drops flags (27). After the delay (28), the ring tone (29) is tested. If the error is found, the value is 3 ERROR_FLAG and MAIN_FLAG_ERROR (30). In the absence of an error, the ring tone is checked in a 711 ms cycle, then returned to the master application.
FIG. 4 is a block diagram of a DTMF_Test function that verifies the conversion of a DTMF to a digital code. The call tone is barred (32), the first DTMF tone is dropped to 0 (33), and the tone corresponding to this value is sent. After the delay (35), the DTMF tone is barred and the next delay is scanned (38) and checked (39). If sending and receiving DTMF tones do not match 4 ERROR_FLAG and MAIN_FLAG_ERROR (40). If they match, the next number is selected to check all DTMF tones. After verification, control is returned to the parent program.
FIG. The Ring_Test function of 5A and 5B checks the pulse generation of the call. This function initially initializes variables and drops flags (43). The module generates a call and a call sequence is generated after a delay (45). Checks whether a call is received within two seconds (47-53). If all goes well, go to step 54. If no call is generated within 2 seconds, an error is displayed (49). Steps 55-59 check that the call rings for at least 1.2 seconds. and there would be no lift signal. If an error occurs, go to step 49. After that, the call is checked for more than 2.5 seconds. (60-62). If an error occurs, go to step 49. Then check for a lift signal during the call (2 seconds). If it is, go to step 49 (error). This is checked twice. If all goes well, return to the main program or, if not, go to step 49. There, the call mode is dropped and 5 ERROR_FLAG and MAIN_FLAG_ERROR (50) are deposited. This is followed by a return to the Do Do main program.
FIG. 6 shows the Ring_Answer_Test function that checks the lift in the event of an external call. Initially, the call and no lift signal are checked (68-69). If an error occurs, go to 73. If a call is signaled, a lift signal is generated (74). If there is an uplift (78), the status is initialized and returns to the main program. In case of error, go to 73, where 6 ERROR FLAG and MAIN_FLAG_ERROR are placed, then go to 78.
FIG. 7A and 7B show a Call_Test function that checks the power supply of the transmitter and generates a connection to its own number. The power is first checked (79) to obtain the transfer number, then the number is called. Any error goes to 93. Then the INUSE status of the transferor is pledged. In case of error go i, 93. Checking employment tone (89). If it is found, it goes to 93 (all right). 93 step 2 checks the error codes, then returns to the main program.
FIG. 8A and 8B provide an ERROR_CQDEhgeneravine for detected errors, which is then used to output .- 'to the LED. According to FIG. 8A, the function initially checks one of the two error signs MAIN_FLAG_ERROR. If it equals 1, ERROR_CODE executes 1 (96) and returns to the main program. If not, checks if MAIN_FLAG_ERROR equals 2, and if so, takes ERROR_CODE to 2 (98) and returns to the main program. If not, checks if MAIN_FLAG_ERROR equals 3, and if so, takes ERROR_CODE to 3 (100) and returns to the main program. If not, verifies that MAIN_FLAG_EROR equals 4, and if so, takes ERROR_CODE to 4 (102) and returns to the main program. If not, check if MAIN_FLAG_ERROR equals 5, and if so, ERROR_CODE takes 5 (104) and returns to the main program. If not, it checks if MAIN_FLAG_ERROR equals 6, and if so, takes ERROR_CODE to 6 (106) and returns to the main program. If not, skip to step 107. FIG. Function 8B starts work by checking another attribute MAIN1_FLAG_ERROR. Checks if MAIN_FLAG_ERROR is equal to 1, and if so, ERROR_CODE takes 7 (108) and returns to the main program. If not, checks MAIN_FLAG_ERROR for 2, and if so, takes ERROR_CODE for 8 (110), and returns to the main program. If not, checks if MAIN_FLAG_ERROR equals 3, and if so, ERROR_CODE takes 9 (112) and returns to the main program. If not, checks for MAIN_FLAG_ERROR equal to 4, and if so returns ERROR_CODE to 10 (114) and returns to the main program. If not, checks if MAIN_FLAG_ERROR equals 5, and if so, ERROR_CODE takes 11 (116) and returns to the main program. The function then returns control to the main program Do_Test.
FIG. 9 is a block diagram of the Fin_Self function. This function drops the interface to normal operation and indicates the end of the test by illuminating the LED four times. This function starts at 117, when the command module generates a lift signal. The variables and attributes (118) are then cleared and the LED (119) is extinguished. After the delay, the LEDs are turned ON (121). All this is repeated 4 times. After the cycle, all LEDs are extinguished (124) and control is transferred to the master program.
A description of the subject invention follows with reference to FIGS. 15, which is accompanied by software descriptions of the individual circuits.
Fig.> 10 shows a television control module designated as 10. This module is installed in a cellular-type system adapter as described in U.S. Patents 4,658,096 and 4,737,975 and is intended to initiate the auto-testing process either by pressing a special key or automatically every 12 hours. above.
Autotest results are output to LED. The management module also has the ability to transmit the test results to a service center, which is realized by automatically dialing a certain number. It is necessary for the service center to have the hardware and software for this purpose. The auto-diagnostic center checks the cellular adapter and its components: main interface circuits, data cables, transmission line, antenna, transmitter, charging circuit, and power supply. The tethering module calls the cellular number of the adder during testing, ie calls itself. The busy signal indicates that the transmission circuit is functioning normally.
The management module 10 is. .. adapted .. 'to work with a cellular adapter: in order to. check its working capacity without unnecessary. call for tea staff. The management module is. powered by an interface board. The control circuit is not autonomous and its operations depend on incoming control signals. The Autodiagnostic Circuit performs the following tests:
Answer Errors (Incorrect Number) - First, Checking Voltage, Second, Checking End of Call, Third, Ringing Tone, Fourth - Checking MFDT Tones, Transmitter Test, Receiving Chain Test, Transmission Chain Test, Charging Chain Test - Frequency Checks 12 kHz, transmitter power check, power system efficiency check. These tests are described in detail above.
The control module is connected to the cellular system interface via a 20-pin connector. Testing starts when the switch is turned on. Upon detection of a malfunction, the user presses the test key, causing the telecommand module 10 to disconnect the phone from the cellular interface and start the test sequence. The control module automatically tests the interface board every 12 hours. Later, the ability to run tests from the outside center will be enabled. This will require a software replacement to install additional software and software in a service center. After the tests, the LED blinks every second to indicate that testing is in progress. The full test takes about 40 seconds. After that the test results are indicated by LED. After the respective LEDs are lit, the interface device returns to its normal state. The LEDs on can be used to determine the type of fault.
equipment and hardware initiation,
The LED indicator is for fault detection. This allows repair personnel to quickly fix the fault. LED lights up for 60 seconds. after the end of the test. The values of the combinations are given below.
After the test, if a malfunction has been detected, it will be transmitted to the television control center about the malfunction found. As a result, information about each device will be stored in a database. If the test has been started by pressing a key, regardless of whether faults have been found or not, information about the results will be transmitted to the control center.
Below are the error codes represented by the LED string:
4.10 ERROR CODES
<td>The type of error</td><td>LED5</td><td>LED4</td><td>LED3</td><td>LED2</td>
<td>No malfunction</td><td>OFF</td><td>OFF</td><td>OFF</td><td>OFF</td>
<td>Cycle error</td><td>OFF</td><td>OFF</td><td>OFF</td><td>ON</td>
<td>Cycle error</td><td>OFF</td><td>OFF</td><td>ON</td><td>OFF</td>
<td>The ring tone</td><td>OFF</td><td>OFF</td><td>ON</td><td>ON</td>
<td>MFTD detector</td><td>OFF</td><td>ON</td><td>OFF</td><td>OFF</td>
<td>Call Detector</td><td>OFF</td><td>ON</td><td>ON</td><td>ON</td>
<td>Summons response</td><td>OFF</td><td>ON</td><td>ON</td><td>OFF</td>
<td>Transmitter Power</td><td>OFF</td><td>ON</td><td>ON</td><td>ON</td>
<td>Transmitter</td><td>ON</td><td>OFF</td><td>OFF</td><td>ON</td>
<td>Receiver (busy)</td><td>ON</td><td>OFF</td><td>OFF</td><td>OFF</td>
<td>12 kHz detection</td><td>ON</td><td>OFF</td><td>ON</td><td>ON</td>
<td>Voltage source power supply</td><td>ON</td><td>OFF</td><td>ON</td><td>OFF</td>
<td>NO SERVICE</td><td>ON</td><td>ON</td><td>ON</td><td>ON</td>
<td>Transmission chain</td><td>ON</td><td>ON</td><td>ON</td><td>OFF</td>
<td>Not set</td><td>ON</td><td>ON</td><td>OFF</td><td>ON</td>
<td>Not set</td><td>ON</td><td>ON</td><td>OFF</td><td>OFF</td>
<td colspan="3">The auto test sequence is as follows. Firstly</td><td colspan="2">l telemarketing</td>
<td>the circuit is disconnected</td><td>from</td><td colspan="2">installations.</td><td>Then</td>
<td colspan="2">simulated user phone</td><td>the answer.</td><td>If</td><td>everything</td>
<td>in order, generated</td><td colspan="3">ring tone.</td><td>Then</td>
<td>verifying call</td><td>tone</td><td colspan="2">generation,</td><td>at</td>
<td>for the minimum frequency and</td><td>level</td><td colspan="2">range.</td><td>Then</td>
an MFTD tone detector test is started, generating 16 MFTD tones and verifying that those tones are well recognized. The call generator is then checked and then checked at minimum frequency and level range. After that, the telephone response is simulated to verify the call circuit. The following test tests a 12 kHz system used in a cellular network.
to
The following tests verify the transferor. First of all, the supply voltage, which is +12 V DC supplied through the data connector, is checked. The NO SERVICE signal is then checked for absence. The cellular system is then called to the apparatus being tested to verify the occupancy signal. If found, the transmission and reception circuits function normally. This test is performed only when the tests are manually initiated. Power system voltage is also checkable. A voltage of less than 13.4 V is considered a fault.
FIG. The main control module 10 is connected to a cellular type adapter or interface board 14. The control module comprises circuits for performing diagnostic tests as described above. These circuits are as follows: the occupancy signal detector 16 is used in the self-call procedure, the 12000-cycle detector circuit 18 is used for pulse loading testing when checked at 12 kHz; The MFTD generator circuit 20 generates DTMF signals transmitted to the cellular adapter, the call detector circuit 22 is used to identify calls, the ring tone circuit 24 is used to verify the ring tone, the voltage detector circuit 28 is used to verify the power supply and the control module control unit 30 is also used to report test results. to a central service station. Each of the circuits mentioned is shown in Figs. 11th - 14 and further described below.
FIG. 11 to 14 are electrical circuits for performing the tests described above. FIG. 11 shows a connection circuit. The part marked A indicates where the telecontrol circuit is connected to the TIP and RING lines. The relay marked RELAY1 is used to disconnect the user's phone from the cellular interface during testing. At this point, the control circuit is connected to the TIP and RING lines. When the ENABLE-TEST signal is high, transistor Q3 is saturated and relay RELAY1 is energized. thus connecting the control circuit:. to the TIP and RING lines. FIG. Paragraph 11 indicates the connection of the user's telephone, where the telephone can be connected in two ways. JI is a standard RJ11 telephone connector.
Section FIG. 11 denoted by C is an audio interface circuit used as an interface between the TIP and RING lines and the audio device. The T1 is a telephone matching transformer. Its function is to combine DC and AC characteristics when receiving and transmitting audio signals. Diodes D1 and D2 are used to cut signals greater than ± 4.5 V. Also used is the optocoupler SSR1, which supports the TIP and RING closing mechanism with transistor Q4. When the Conn-Loop signal is high, transistor Q4 is saturated, powered by SSR1, closed circuit and disconnected.
Section FIG. 11, denoted by D, is a call detector which consists of two parts: U2 which is a circuit of a call detector and U9 with an opton which has a CMOS signal level output. The current flowing between 4 and 7 U2 forms an output signal when the call voltage is generated on the TIP and RING lines. This current is transmitted to the I / O through the optic U9.
Section FIG. 11 denoted by E is a current loop detector having an optocoupler for detecting overcurrent. When the test is enabled (Enable-Test signal is high) and disconnection is performed (ConnLoop signal is high) current is flowing through the TIP and RING lines. This current is transformed by U17 into a low level output / input signal.
Section FIG. The 11 marked F is the output / input audio circuit consisting of 1/4 UI, the operational amplifier IS. The main function of this circuit is to isolate and amplify audio signals. The output of this circuit is called Audio-in. Also through this section DTMF output is sent to TIP and RING lines. This DTMF signal is marked Tone-Out.
FIG. Part 12 G is a DTMF tone generator consisting of a U4, a DTMF tone generator, and a 1/4 UI used as an output amplifier. To generate a DTMF tone, the first four bits of the code are fed to the contacts labeled DTMF-OUT, DTMF1-OUT, DTMF2-OUT, and DTMF3-OUT at U4. When the required signals are set, the DTMF-OUT signal is changed from low to high, resulting in the required tone. Audio output after amplification UI: C is marked TONE-OUT. To stop tone generation, the DTMF-OUT signal is dropped to a low level.
FIG. Section 12 H is the output / input port serviced by IS U8. This circuit is used to read data from the microcontroller of the cellular interface and to control all outputs of the telecontrol module. Ports A and C are the input ports and port B the output ports. Switch J4 toggles the automatic periodic test between 12 and 24 hours. The J5 is used to connect the permit with the answering machine.
FIG. The 12 sections 1.1 and 1.2 are power, data, and control connections, and enable the J2 connector for power supply, as well as for sending and receiving data. It also plugs into a 4-pin connector on the LED panel that represents the test results and connects an external key for manual test.pa Start. Section J is the power regulator and activates the 5 V support circuit required to power the digital circuits.
Tethering Module 10 activates six simple tone detectors to check audio tract, frequency, and time with ROH, call, busy, and reload tones. Each of these tone detectors has an operational amplifier and a simple tone detector circuitry. The Opamp input is connected to the AUDIO-IN line. The detection frequency is determined by the resistance between points 5 and 6 and the capacitor between 6 and ground. When the tone is recognized, the detector output goes to a low level.
Section K is the ring tone detector circuit. With the ring tone at U3 input, the DIAL-DETECT line is dropped to a low level. Section L shows the occupancy tone detector circuit. When there is a busy tone at input U6, the BUSY-DETECT line drops to a low level.
Section M Fig. 13 shows the 400 Hz tone detector circuit. When a 400 Hz tone is applied to the UI4 input, the 400-DETECT line drops to a low level.
Section N Figs. 13 shows the 800 Hz tone detector circuit. When the 800 Hz tone is applied to the U13 input, the 800-DETECT line drops to a low level. Section O FIG. 13 shows the 1020 Hz tone detector circuit. When a 1020 Hz tone is applied to the U16 input, the 1020-DETECT line drops to a low level. Section P<sup>7</sup>FIG. 13 shows the 12 kHz tone detector circuit. When a 12 kHz tone is fed to the U12 input, the 12kHz-DETECT line is dropped to a low level.
Section Q Fig. 13 shows a DTMF tone decoder consisting of Ull, a DTMF tone detector, and 1/4 UI used as the initial amplifier. When the DTMF tone is at the input (IN-), the DTMF-STROBE control line is lowered to a low level until the IS decodes the signal. After tone decoding, the four-bit code is fed to DTMFOIN, DTMF1-IN, DTMF2-IN, and DTMF3-IN Ull. The DTMF-STROBE control line returns to a high level. Section R monitors the 4.5V AC and activates the current detector U10. Resistors R17 and R33 form a voltage divider that allows the U10 to register a voltage of less than 13 V. When the supply voltage drops, it receives a battery voltage of not more than 13 V. The circuit registers a drop and the U10 line AC-DETECT drops.
The following is a list of programs that support the functions of the invention:
object nopi nosb db noge nimo nopr ep 5 $ nolist $ include (reg252.pdf) $ list zero star pound disbuf_start disbuf_end msgbuf_start msgbuf_end main_flag; hook_slic; dial; dtmf_; ring_test; ans_test main_flag_error; hook_slic_error; hook_ring_error; dial_error; dtmf_error; ring_test_error; ans continue error mainl_flag; power_radio; call_test; call_tone mainl_flag_error
<td>equ</td><td>Oah</td>
<td>equ</td><td>Obh</td>
<td>equ</td><td>Och</td>
<td>equ</td><td>80h</td>
<td>equ</td><td>90h</td>
<td>equ</td><td>90h</td>
<td>equ</td><td>. Qh</td>
equ ObOh equ Oblh
2 equ 0b2h
2 3 equ 0b3h
<td>; power radio error</td><td colspan="2"> 1</td>
<td>; call continue error</td><td> 2</td><td></td>
<td>; call tone error</td><td> 3</td><td></td>
<td>; inuse</td><td> 4</td><td></td>
<td>1000hz;</td><td> 5</td><td></td>
<td>error code</td><td>equ</td><td>0b4h</td>
<td>; hook slic error</td><td> 1</td><td></td>
<td>; hook ring error</td><td> 2</td><td></td>
<td>; dial error</td><td> 3</td><td></td>
<td>; dmft error</td><td> 4</td><td></td>
<td>; ring continue error</td><td> 5</td><td></td>
<td>; ans_test_error</td><td> 6</td><td></td>
<td>; power radio error</td><td> 7</td><td></td>
<td>; call continue error</td><td> 8</td><td></td>
<td>; call tone error</td><td> 9</td><td></td>
<td>; insune</td><td> 10</td><td></td>
<td>; 10000hz</td><td> 11</td><td></td>
<td>cero</td><td>equ</td><td>00h</td>
<td>uno</td><td>equ</td><td>08h</td>
<td>dos</td><td>equ</td><td>04h</td>
<td>tres</td><td>equ</td><td>Och</td>
<td>cuatro</td><td>equ</td><td>02h</td>
<td>cinco</td><td>equ</td><td>Oah</td>
<td>stop</td><td>equ</td><td>06h</td>
<td>sieve</td><td>equ</td><td>Oeh</td>
<td>ohh</td><td>equ</td><td>01h</td>
<td>nueve</td><td>equ</td><td>0 9h</td>
<td>estrella</td><td>equ</td><td>Odh</td>
<td>libra</td><td>equ</td><td>03h</td>
<td>; registers take 00h</td><td>-007h</td><td>(bank 0)</td>
<td>; r0</td><td>keep the imo</td><td>buffer</td>
<td>; rl</td><td>link to</td><td>data buffer</td>
<td>; r2</td><td colspan="2">number counter</td>
<td>; r3</td><td>delay cycle for trunk</td><td>for the timer</td>
<td>; r4</td><td>delay cycle for trunk</td><td>for the timer</td>
<td>; r5</td><td>used timer</td><td></td>
<td>; r6</td><td>used send time</td><td></td>
<td>; r7</td><td>used timer</td><td></td>
; storage locations of variables
<td>time_off1</td><td>date</td><td>10h</td>
<td>time off2</td><td>date</td><td>11h</td>
<td>t ime off 3</td><td>date</td><td>12h</td>
<td>time onl</td><td>date</td><td>13h</td>
<td>time on2</td><td>date</td><td>14h</td>
<td>pulse_digit</td><td>date</td><td>15h</td>
<td>in mustache off timer</td><td>date</td><td>16h</td>
<td>ring timer</td><td>date</td><td>17h</td>
<td>bell timer</td><td>date</td><td>18h</td>
<td>bell timer2</td><td>date</td><td>19h</td>
<td>gndstart timerl</td><td>date</td><td>Lah</td>
<td>gndstart_timer2</td><td>date</td><td>lbh</td>
<td>; highpoint</td><td>date</td><td>lch</td>
<td>; lowpoint</td><td>date</td><td>ldh</td>
<td>highpoint</td><td>date</td><td>35h</td>
<td>lowpoint</td><td>date</td><td>36h</td>
<td>continue min</td><td>date</td><td>pages</td>
<td>; f ree</td><td>date</td><td>lfh</td>
; the memory zone from 20h to 29h is used in the main module
<td>f lags</td><td>DATE</td><td>20h</td>
<td>fhook</td><td>bit</td><td>00h</td>
<td>f send</td><td>bit</td><td>01h</td>
<td>fflash</td><td>bit</td><td>02h</td>
<td>fhang</td><td>bit</td><td>03h</td>
ftime bit 04h fdigit bit 05h fonhook bit 06h fdtmfin bit 07h inds DATA 21h roam bit 08h noserv bit 09h lock bit Oah rdis bit Obh horn bit Och f_init bit Odh f_start bit Oeh test_enable bit Ofh indasc DATA 22h inuse bit 10h apl bit 11h ap2 bit 12h test_end bit 13h; not_error bit 14h return_ring bit 15h error_flag bit 16h ring_second bit 17h io_status DATA 23h strobe bit lch flags2 DATA 24h fdig_ready bit 20h fanswer bit 21h fsendtimer bit 22h f_inuseofftiming bit 23h funlocktimer bit 24h fdttone bit 25h
<td>fdecoder busy</td><td>bit</td><td>2 6h</td>
<td>fbellsound</td><td>bit</td><td>27h</td>
<td>pxl temp</td><td>DATE</td><td>25h</td>
<td>mitel</td><td>bit</td><td>28h</td>
<td>mitelq2</td><td>bit</td><td>2 9h</td>
<td>mitelq3</td><td>bit</td><td>2ah</td>
<td>mitelq4</td><td>bit</td><td>2bh</td>
<td>power hold</td><td>bit</td><td>2ch</td>
<td>asparagus</td><td>bit</td><td>2dh</td>
<td>spare2</td><td>bit</td><td>2eh</td>
<td>no ring</td><td>bit</td><td>2h</td>
<td>px2 temp</td><td>DATE</td><td>2 6h</td>
<td>loopswitch</td><td>bit</td><td>30h</td>
<td>ring_</td><td>bit</td><td>31h</td>
<td>mouth</td><td>bit</td><td>32h</td>
<td>roh bost</td><td>bit</td><td>33h</td>
<td>sw sendtimer</td><td>bit</td><td>34h</td>
<td>sw dialtone</td><td>bit</td><td>35h</td>
<td>sw_gndstart</td><td>bit</td><td>36h</td>
<td>sw data</td><td>bit</td><td>37h</td>
<td>lamps temp</td><td>DATE</td><td>27h</td>
<td>; free</td><td>bit</td><td>38h</td>
<td>; free</td><td>bit</td><td>3 9h</td>
<td>; free</td><td>bit</td><td>3ah</td>
<td>; free</td><td>bit</td><td>3bh</td>
<td>roamlamp</td><td>bit</td><td>3ch</td>
<td>noservlamp</td><td>bit</td><td>3dh</td>
<td>locklamp</td><td>bit</td><td>3eh</td>
<td>incandescent lamp</td><td>bit</td><td>3h</td>
<td>flags3</td><td>DATE</td><td>28h</td>
<td>frohtimeout</td><td>bit</td><td>40h</td>
<td>fcall</td><td>bit</td><td>41h</td>
<td>f one sec</td><td>bit</td><td>42h</td>
<td>the grass is</td><td>bit</td><td>43h</td>
<td>fspecl</td><td>bit</td><td>44h</td>
<td>fspec2</td><td>bit</td><td>45h</td>
<td>fremote hup</td><td>bit</td><td>4 6h</td>
<td>flocktimer</td><td>bit</td><td>47h</td>
; Tasks of TRU t
f_cmds DATA 29h; TRU tasks are called from the main task; Problem 1:
; (a) Voltage Testing in NEC 3700; b) Replace sovi OKI key and initialize Motorola; c) Run the rdbus program to read Audiovox indicators; d) Monitor and detect Audiovox CTX - 3100A signals
; Problem 2:
; a) NAM Switching NEC 3700 r
; Exercise 3:
; (a) Voltage Testing in NEC 3700; b) Replace sovi OKI key and initialize Motorola; c) Run the rdbus program to read Audiovox indicators; d) Monitor and detect the Audiovox CTX-3100A signals
; Exercise 4:
; a) Run the rdbus program to read Audiovox indicators; b) Monitor and detect Audiovox CTX - 3100A signals; Memory 2ah - 2dh reserved for TRU modules
<td>; TRU_bitsl</td><td>date</td><td>2ah</td>
<td>; TRU_bits2</td><td>date</td><td>2bh</td>
<td>; TRU bit3</td><td>date</td><td>2ch</td>
<td>; TRU_bits4</td><td>date</td><td>2dh</td>
<td>io mb</td><td>date</td><td>2eh</td>
<td>tdO</td><td>bit</td><td>70h</td>
<td>tdl</td><td>bit</td><td>71h</td>
<td>td2</td><td>bit</td><td>72h</td>
<td>td3</td><td>bit</td><td>73h</td>
<td>dtmf out</td><td>bit</td><td>74h</td>
<td>enable continue</td><td>bit</td><td>75h</td>
<td>enable tone</td><td>bit</td><td>7 6h</td>
<td>enable tone in</td><td>bit</td><td>77h</td>
<td>io mc</td><td>date</td><td>2h</td>
<td>ext led</td><td>bit</td><td>78h</td>
<td>enable special</td><td>bit</td><td>7 9h</td>
<td>enable busy</td><td>bit</td><td>7h</td>
<td>enable 16h</td><td>bit</td><td>7bh</td>
<td>conn loop</td><td>bit</td><td>7ch</td>
<td>9th ; other internal 9th</td><td>variables i</td><td></td>
<td>looptest timer</td><td>date</td><td>30h</td>
<td>looptest_timer2</td><td>date</td><td>31h</td>
<td>display delay</td><td>date</td><td>32h</td>
<td>dsp ptr</td><td>date</td><td>33h</td>
msg_ptr data 34h consecutive bytes reserved for TRU modules as DATA
<td>TRU_byteO</td><td>date</td><td>38h</td>
<td>TRU_bytel</td><td>date</td><td>3 9h</td>
<td>TRU_byte2</td><td>date</td><td>3ah</td>
<td>TRU_byte3</td><td>date</td><td>3bh</td>
<td>TRU_byte4</td><td>date</td><td>3ch</td>
<td>TRU_byte5</td><td>date</td><td>3dh</td>
<td>TRU byte6</td><td>date</td><td>3eh</td>
<td>TRU_byte7</td><td>date</td><td>3h</td>
; stack takes bytes 40h- 5fh; the call numbers are kept at 60h - 7fh along with the LPG code
<td>prefix</td><td>date</td><td>60h</td>
<td>first digit</td><td>date</td><td>61h</td>
<td>second digit</td><td>date</td><td>62h</td>
<td>third digit</td><td>date</td><td>63h</td>
<td>f ; 8051 port 1 r</td><td>and 3:</td><td>settings</td>
<td>io select</td><td>bit</td><td>pi ·.</td>
<td>dt pwm</td><td>bit</td><td>pi.</td>
<td>twenty hz pwm</td><td>bit</td><td>pi ..</td>
<td>; power file</td><td>bit</td><td>pi ·</td>
<td>lc</td><td>bit</td><td>p3:</td>
<td>ring ground</td><td>bit</td><td>p3.</td>
<td>; strobe</td><td>bit</td><td>p3 ..</td>
aO bit pi.6 ai bit p3.5; voltage supply input and interrupt vector processing
<td>org jmp</td><td>0000h init</td>
<td>org</td><td>0003h</td>
<td>jmp</td><td>offhook edge</td>
<td>db</td><td>Offh, Offh, Offh, Offh, Offh</td>
<td>org</td><td>OOObh.</td>
<td>jmp</td><td>onhooir timer</td>
<td>db</td><td>Offh, Offh, · Offh, Offh ,. Offh</td>
<td>org</td><td>0013h</td>
<td>jmp</td><td>intl Service</td>
<td>db</td><td>Offh, Offh, Offh, Offh, Offh</td>
<td>org</td><td>OOlbh</td>
<td>jmp</td><td>offhook timer</td>
<td>db</td><td>Offh, Offh, Offh, Offh, Offh</td>
<td>org</td><td>0023h</td>
<td>jmp</td><td>ser port service</td>
<td>db</td><td>Offh, Offh, Offh, Offh, Offh</td>
<td>org</td><td>002bh</td>
<td>jmp</td><td>timer2 service</td>
<td>db</td><td>Offh, Offh, Offh, Offh, Offh</td>
<td>org</td><td>0033h</td>
<td>jmp</td><td>pca Service</td>
<td>db</td><td>'(c) Copyright Codecom'</td>
<td>db</td><td> '1992'</td>
<td>$ include (main.msg) $ include (true.msg)</td><td></td>
<td>init:</td><td></td>
<td>% set {initmask</td><td> ,0)</td>
<td>mov</td><td>sp, # 3fh</td>
<td>clr</td><td>rsO</td>
<td>clr</td><td>rsl</td>
<td>mov</td><td>a, # 0</td>
<td>mov</td><td>rO, # 0</td>
<td>fili ram:</td><td></td>
<td>mov</td><td>@ r0, a</td>
<td>inc</td><td>rO</td>
<td>cjne</td><td>rO, # 0, fiii ram</td>
<td>clr</td><td>pi. 2</td>
<td>mov</td><td>rl, # main flag</td>
<td>mov</td><td>@rl, # 0</td>
<td>inc</td><td>rl</td>
<td>mov</td><td>@rl, # 0</td>
<td>inc</td><td>rl</td>
<td>mov</td><td>@rl, # 0</td>
<td>inc</td><td>rl</td>
<td>mov</td><td>@rl, # 0</td>
<td>inc</td><td>rl</td>
<td>call</td><td>reset io m</td>
<td>mov</td><td>io mb, # 0</td>
<td>call</td><td>write io mb</td>
<td>mov</td><td>io mc, # 0</td>
<td>call</td><td>write io mc</td>
<td>call</td><td>reset io</td>
<td>mov</td><td>p2, # 0f8h</td>
<td>mov</td><td>pxl temp, # llllllllb</td>
<td>call</td><td>write pxl</td>
<td>mov</td><td>px2 temp, # 00000000b</td>
<td>call</td><td>write px2</td>
<td>call</td><td>read px2</td>
<td>mov</td><td>tmod, # 00000011b</td>
<td>mov</td><td>ip, # 01001010b</td>
<td>mov</td><td>ie, # 11001011b</td>
<td>setb</td><td>itO</td>
<td>setb</td><td>itl</td>
<td>mov</td><td>cmod, # 80h</td>
<td>mov</td><td>ch, # 0</td>
<td>mov</td><td>c, # 0</td>
<td>mov</td><td>ccapOl, # 0ffh</td>
<td>mov</td><td>ccapOh, # 0</td>
<td>mov</td><td>ccapmO, # 04 9h</td>
<td>mov</td><td>ccapml, # 0</td>
<td>mov</td><td>ccapm2, # 0</td>
<td>clr</td><td>trl</td>
<td>clr</td><td>trO</td>
initializing white variables
<td>mov</td><td>time</td><td>onl, # 0</td>
<td>mov</td><td>time</td><td>is2, # 0</td>
<td>mov</td><td>time</td><td>_offl, # 0</td>
<td>mov</td><td>time</td><td>_off2, # 0</td>
<td>mov</td><td>time</td><td>off3, # 0</td>
<td>mov</td><td>flags, # 0</td>
<td>mov</td><td>flags2, # 0</td>
<td>mov</td><td>flags3, # 0</td>
<td>mov</td><td>inds, # Offh</td>
<td>mov</td><td>indasc, # 0ffh</td>
<td>mov</td><td>pulse digit, # 0</td>
<td>mov</td><td>f cmds, # 0</td>
<td>initializing bits</td><td>variables i</td>
<td>clr</td><td>continue enable</td>
<td>clr</td><td>continue to end</td>
<td>clr</td><td>error flag</td>
<td>clr</td><td>return flag</td>
<td>setb</td><td>fonhook</td>
<td>clr</td><td>f init</td>
<td>clr</td><td>fremote hup</td>
<td>clr</td><td>fcall</td>
<td>call</td><td>clr dsp</td>
<td>call</td><td>clr msg</td>
<td>call</td><td>specific inits</td>
<td>mov</td><td>ccap41, # 0ffh</td>
<td>mov</td><td>ccap4h, # 0ffh</td>
<td>mov</td><td>ccamp2, # 48h</td>
<td>slave</td><td>cmod, # 4 0h</td>
<td>setb</td><td>cr</td>
<td>setb</td><td>trO</td>
<td colspan="2">wait 2.22 seconds, clear call numbers, set RO</td>
<td>The start of the 1 number buffer, and</td><td>clear R2 (number of calls)</td>
<td>counter</td><td></td>
<td>miracle wakeup:</td><td></td>
<td>call</td><td>watchdog</td>
<td>mov</td><td>a, time on2</td>
<td>cjne</td><td>a, # 255, time wakeup</td>
<td>mov</td><td>c, sw_gndstart</td>
<td>mov</td><td>loopswitch, c</td>
<td>clr</td><td>no_ring</td>
<td>call</td><td>write px2</td>
<td>jmp</td><td>start</td>
$ include (tru.asm); start and entry point 5 start:
mov r0, # 60h mov a, # 0ffh clr_digbuf:
mov @ rO, a inc rO cjne rO, # 80h, clr_digbuf mov r0, # 60h mov r2, # 0 setb f_start clr ieO setb ex0; endless loop until hookchk calls:
<td>call</td><td>watchdog</td>
<td>jb</td><td>continue enable, do continue</td>
<td>mov</td><td>f cmds, # 1</td>
<td>call</td><td>trucmd</td>
<td>jb</td><td>fhook, firsti</td>
<td>jnb</td><td>fanswer, hhkchk</td>
<td>jmp</td><td>ring answer</td>
<td>companies:</td><td>jmp</td><td>f irst</td>
<td>continue:</td><td>mov</td><td>rl, # main flag error</td>
<td></td><td>mov</td><td>@ lr, # 0</td>
<td></td><td>mov</td><td>rl, # mainl flag error</td>
<td></td><td>mov</td><td>@lr, # 0</td>
<td></td><td>clr</td><td>continue to end</td>
<td></td><td>clr</td><td>error flag</td>
<td></td><td>clr</td><td>error flag</td>
<td></td><td>mov</td><td>rl, # main flag</td>
<td></td><td>mov</td><td>a, @rl</td>
<td></td><td>anl</td><td>a, # 00000001b</td>
<td></td><td>call</td><td>start hook continues</td>
<td>continue hook:</td><td>jb</td><td>error flag, rou error</td>
<td></td><td>call</td><td>dial continues</td>
<td>continue dial:</td><td>jb</td><td>error flag, rou error</td>
<td></td><td>call</td><td>start dtmf</td>
<td>continue dtmf:</td><td>jb</td><td>error flag, rou error</td>
<td></td><td>call</td><td>start ring_test</td>
<td>continue ring:</td><td>jb</td><td>error flag, rou error</td>
<td></td><td>call</td><td>start ring ans continue</td>
<td>continue ring a:</td><td>jb</td><td>error flag, rou error</td>
<td></td><td>call</td><td>make call</td>
<td></td><td>jb</td><td>error flag, rou error</td>
<td></td><td>call</td><td>until fin tim</td>
<td>rou error:</td><td>call</td><td>error acc</td>
<td>t</td><td>jmp</td><td>wait end</td>
until fin tim:
<td></td><td>setb</td><td>continue to end</td>
<td></td><td>clr</td><td>trO</td>
<td></td><td>mov</td><td>time on2, # 0</td>
<td></td><td>mov</td><td>time onl, # 0</td>
<td></td><td>mov</td><td>continue min, # 0</td>
<td></td><td>setb</td><td>trO</td>
<td>wait end:</td><td></td><td></td>
<td></td><td>call</td><td>watchdog</td>
<td></td><td>mov</td><td>a, continue min</td>
<td></td><td>cj no</td><td>a, # 23, wait en</td>
<td></td><td>call</td><td>fin self</td>
<td></td><td>jmp</td><td>hookchk</td>
<td>; start test</td><td></td><td></td>
<td>start hook continues:</td><td></td><td></td>
<td></td><td>mov</td><td>rl, # main flag</td>
<td></td><td>mov</td><td>a, @rl</td>
<td></td><td>slave</td><td>a, # 00000001b</td>
<td></td><td>mov</td><td>@rl, a</td>
<td></td><td>setb</td><td>enable continue</td>
<td></td><td>clr</td><td>conn loop</td>
<td></td><td>call</td><td>write io mb</td>
<td></td><td>call</td><td>reset io m</td>
<td></td><td>call</td><td>write io mb</td>
<td></td><td>call</td><td>write io mc</td>
<td></td><td>clr</td><td>loopswitch</td>
<td></td><td>call</td><td>write px2</td>
<td>continue hup:</td><td></td><td></td>
<td></td><td>setb</td><td>fremote hup</td>
<td></td><td>call</td><td>hup</td>
<td></td><td>mov</td><td>lamps temp, # 0</td>
<td></td><td>call</td><td>write io c</td>
<td></td><td>mov</td><td>r6, # 10</td>
nose:
loop_m:
loop_ma:
loop_mb loop_mc:
test_hup2:
not_hook_det:
<td>push</td><td> 6</td>
<td>mov</td><td>r6, #Offh</td>
<td>mov</td><td>r7, # 0ffh</td>
<td>djnz</td><td>r7, $</td>
<td>call</td><td>watchdog</td>
<td>djnz</td><td>r6, loop m</td>
<td>mov</td><td>r6, # 0ffh</td>
<td>mov</td><td>r7, # 0ffh</td>
<td>djnz</td><td>r7, $</td>
<td>call</td><td>watchdog</td>
<td>djnz</td><td>r6, loop ma</td>
<td>mov</td><td>r6, # 0ffh</td>
<td>mov</td><td>r7, # Offh</td>
<td>djnz</td><td>r7, $</td>
<td>call</td><td>watchdog</td>
<td>djnz</td><td>r6, loop mb</td>
<td>mov</td><td>r6, # 0ffh</td>
<td>mov</td><td>r7, # 0ffh</td>
<td>djnz</td><td>r7, $</td>
<td>call</td><td>watchdog</td>
<td>djnz</td><td>r6, loop mc</td>
<td>pop</td><td> 6</td>
<td>djnz</td><td>r6, nose</td>
<td>clr</td><td>fanswer</td>
<td>clr</td><td>fhook</td>
<td>jnb</td><td>fhook, not hook dt</td>
<td>jmp</td><td>hook error</td>
<td>setb</td><td>fonhook</td>
<td>setb</td><td>conn loop</td>
call mov loop_m_off:
mov djnz call djnz mov loop_m_off2:
mov djnz call djnz mov loop_m_off3:
mov djnz call djnz mov loop_m_off4:
mov djnz call djnz mov loop_m_off5:
mov djnz call djnz test_fhook:
jb jmp detected_hook write_io_m_c r6, # Offh r7, # Offh r7, $ watchdog r6, loop_m_off r6, #Offh r7, # Offh r7, $ watchdog r6, loop_m_off2 r6, # Offh r7, # Offh r7, $ watchdog r6, loop6moff , # Offh r7, # Offh r7, $ watchdog r6, loop_m_off4 r6, # Offh rl, # Offh rl, $ watchdog r6, loop_m_off5 fhook, detected hook hook error dt_delayl:
hook error:
typing off the hook
<td>clr</td><td>exO</td>
<td>clr</td><td>hookswout</td>
<td>setb</td><td>hookswout</td>
<td>clr</td><td>fhook</td>
<td>call</td><td>watchdog</td>
<td>jnb</td><td>lc, stile off hook</td>
<td>jmp</td><td>hook error</td>
<td>jb</td><td>f start, dt delayl</td>
<td>clr</td><td>ieO</td>
<td>Serbian</td><td>exO</td>
<td>setb</td><td>fdtone</td>
<td>call ret</td><td>dtone</td>
<td>mov</td><td>rl, # main_flag error</td>
<td>mov</td><td>@rl, #rl</td>
<td>setb ret</td><td>error flag</td>
; dial dial continues:
delay_dial:
<td colspan="3">check</td>
<td>mov</td><td>rl, # main</td><td>flag</td>
<td>mov</td><td>a, @rl</td><td></td>
<td>slave</td><td colspan="2">a, # 00000010b</td>
<td>mov</td><td>@rl, a</td><td></td>
<td>mov</td><td>r6, # 0ffh</td><td></td>
<td>mov</td><td>r7, # 0ffh</td><td></td>
<td>dj nz</td><td>r7, $</td><td></td>
<td>call</td><td>watchdog</td><td></td>
<td>djnz</td><td>r6, delay</td><td>dial</td>
delay_dial2:
verify_dial:
dial_ok:
; dtmf startup start dtmf:
<td>mov</td><td>r6, # 0ffh</td>
<td>mov</td><td>r7, # Offh</td>
<td>djnz</td><td>r7, $</td>
<td>call</td><td>watchdog</td>
<td>djnz</td><td>r6, delay dial2</td>
<td>clr</td><td>trl</td>
<td>mov</td><td>t ime_o f f1, # 0</td>
<td>mov</td><td>time off2, # 0</td>
<td>setb</td><td>trl</td>
<td>call</td><td>read io ma</td>
<td>anl</td><td>a, # 00000001b</td>
<td>cj no</td><td>a, # 00000001b, dial ok</td>
<td>call</td><td>watchdog</td>
<td>coupling</td><td>a, time off2</td>
<td>c etc.</td><td>a, # 10, verify dial</td>
<td>mov</td><td>rl, # main flag error</td>
<td>mov</td><td>@rl, # 3</td>
<td>setb</td><td>error flag</td>
<td>ret</td><td></td>
<td>ret</td><td></td>
<td>clr</td><td>fdtone</td>
<td>mov</td><td>ccapml, # 0</td>
<td>anl</td><td>io mb, # 0fOh</td>
<td>slave</td><td>io mb, ffcero</td>
<td>call</td><td>send dtmf</td>
<td>call</td><td>delay dtmf</td>
<td>call</td><td>disable dtmf</td>
<td>call</td><td>delay dtmf</td>
<td>call</td><td>get continued</td>
Continue Cero Continue 1:
continue 2:
continue 3:
<td>cjne</td><td>a, # 0h, dtmf error</td><td>f lag</td>
<td>anl</td><td>io mb, # 0fOh</td><td></td>
<td>slave</td><td>io mb, # uno</td><td></td>
<td>call</td><td>send dtmf</td><td></td>
<td>call</td><td>delay dtmf</td><td></td>
<td>call</td><td>disable dtmf</td><td></td>
<td>call</td><td>delay dtmf</td><td></td>
<td>call</td><td>get continued</td><td></td>
<td>cjne</td><td>a, # lh, dtmf error</td><td>f lag</td>
<td>anl</td><td>io mb, # 0f Oh</td><td></td>
<td>slave</td><td>io mb, # dos</td><td></td>
<td>call</td><td>send dtmf</td><td></td>
<td>call</td><td>delay dtmf</td><td></td>
<td>call</td><td>disable dtmf</td><td></td>
<td>call</td><td>delay dtmf</td><td></td>
<td>call</td><td>get continued</td><td></td>
<td>cjne</td><td>a, # 2h, dtmf error</td><td>f lag</td>
<td>anl</td><td>io mb, # 0f0h</td><td></td>
<td>slave</td><td>io mb, # tres</td><td></td>
<td>call</td><td>send dtmf</td><td></td>
<td>call</td><td>delay dtmf</td><td></td>
<td>call</td><td>disable dtmf</td><td></td>
<td>call</td><td>delay dtmf</td><td></td>
<td>call</td><td>get continued</td><td></td>
<td>cjne</td><td>a, # 3h, dtmf error</td><td>f lag</td>
<td>anl</td><td>io mb, # 0fOh</td><td></td>
<td>slave</td><td>io mb, # cuatro</td><td></td>
<td>call</td><td>send dtmf</td><td></td>
<td>call</td><td>delay dtmf</td><td></td>
<td>call</td><td>disable dtmf</td><td></td>
continue 4:
dtmf_e rro r_f1ag:
go_to_5 continued 5:
continue 6:
continue 7:
<td>call</td><td>delay dtmf</td><td></td>
<td>call</td><td>get continued</td><td></td>
<td>cjne</td><td>a, # 4h, dtmf error</td><td>f lag</td>
<td>jmp</td><td>go to 5</td><td></td>
<td>jmp</td><td>error-dtmf</td><td></td>
<td>anl</td><td>io mb, # 0fOh</td><td></td>
<td>slave</td><td>io mb, # cinco</td><td></td>
<td>call</td><td>send dtmf</td><td></td>
<td>call</td><td>delay dtmf</td><td></td>
<td>call</td><td>disable dtmf</td><td></td>
<td>call</td><td>delay dtmf</td><td></td>
<td>call</td><td>get continued</td><td></td>
<td>cjne</td><td>a, # 5h, dtmf error</td><td>f lag</td>
<td>anl</td><td>io mb, # 0fOh</td><td></td>
<td>slave</td><td>io mb, # stop</td><td></td>
<td>call</td><td>send dtmf</td><td></td>
<td>call</td><td>delay dtmf</td><td></td>
<td>call</td><td>disable dtmf</td><td></td>
<td>call</td><td>delay dtmf</td><td></td>
<td>call</td><td>get continued</td><td></td>
<td>cjne</td><td>a, # 6h, dtmf error</td><td>f lag</td>
<td>anl</td><td>io mb, # 0f0h</td><td></td>
<td>slave</td><td>io mb, # siete</td><td></td>
<td>call</td><td>send dtmf</td><td></td>
<td>call</td><td>delay dtmf</td><td></td>
<td>call</td><td>disable dtmf</td><td></td>
<td>call</td><td>delay dtmf</td><td></td>
<td>call</td><td>get continued</td><td></td>
<td>cjne</td><td>a, # 7h, dtmf error</td><td>f lag</td>
<td>anl</td><td>42 io mb, # 0fOh</td><td></td>
<td>slave</td><td>io mb, # ocho</td><td></td>
<td>call</td><td>send dtmf</td><td></td>
<td>call</td><td>delay dtmf</td><td></td>
<td>call</td><td>disable dtmf</td><td></td>
<td>call</td><td>delay dtmf</td><td></td>
<td>call</td><td>get continued</td><td></td>
<td>c etc.</td><td>a, # 8h, dtmf error</td><td>f lagl</td>
<td>anl</td><td>io mb, # 0fOh</td><td></td>
<td>slave</td><td>io mb, # nueve</td><td></td>
<td>call</td><td>send dtmf</td><td></td>
<td>call</td><td>delay dtmf</td><td></td>
<td>call</td><td>disable dtmf</td><td></td>
<td>call</td><td>delay dtmf</td><td></td>
<td>call</td><td>get continued</td><td></td>
<td>cjne</td><td>a, # 9h, dtmf error</td><td>f lagl</td>
<td>anl</td><td>io mb, # 0fOh</td><td></td>
<td>slave</td><td>io mb, # 05h</td><td></td>
<td>call</td><td>send dtmf</td><td></td>
<td>call</td><td>delay_dtmf</td><td></td>
<td>call</td><td>disable dtmf</td><td></td>
<td>call</td><td>delay dtmf</td><td></td>
<td>call</td><td>get_test</td><td></td>
continue to:
<td>cjne</td><td>a, # 0ah, dtmf error flagl</td>
<td>anl</td><td>io mb, # 0fOh</td>
<td>slave</td><td>io mb, # 0dh</td>
<td>call</td><td>send dtmf</td>
<td>call</td><td>delay dtmf</td>
<td>call</td><td>disable dtmf</td>
<td>call</td><td>delay dtmf</td>
<td>call</td><td>get continued</td>
continue b:
continue c:
continue d:
continue e:
dtmf_error_flagl:
go_to_c
<td>cj no etc.</td><td>a, # 0h, dtmf error go to c</td><td>_flagl</td>
<td>jmp</td><td>error dtmf</td><td></td>
<td>anl</td><td>io mb, # 0fOh</td><td></td>
<td>slave</td><td>io mb, # 03h</td><td></td>
<td>call</td><td>send dtmf</td><td></td>
<td>call</td><td>delay dtmf</td><td></td>
<td>call</td><td>disable dtmf</td><td></td>
<td>call</td><td>delay dtmf</td><td></td>
<td>call</td><td>get continued</td><td></td>
<td>cjne</td><td>a, # 0h, dtmf error</td><td>f lagl</td>
<td>anl</td><td>io mb, # 0f0h</td><td></td>
<td>slave</td><td>io mb, # 0bh</td><td></td>
<td>call</td><td>send dtmf</td><td></td>
<td>call</td><td>delay dtmf</td><td></td>
<td>call</td><td>disable dtmf</td><td></td>
<td>call</td><td>delay dtmf</td><td></td>
<td>call</td><td>get continued</td><td></td>
<td>cjne</td><td>a, # 0h, dtmf error</td><td>f lagl</td>
<td>anl</td><td>io mb, # 0fOh</td><td></td>
<td>slave</td><td>io mb, # 07h</td><td></td>
<td>call</td><td>send dtmf</td><td></td>
<td>call</td><td>delay dtmf</td><td></td>
<td>call</td><td>disable dtmf</td><td></td>
<td>call</td><td>delay dtmf</td><td></td>
<td>call</td><td>get continued</td><td></td>
<td>cjne</td><td>a, # 0h, dtmf error</td><td>f lagl</td>
<td>anl</td><td>io mb, # 0fOh</td><td></td>
<td>slave</td><td>io mb, # 0fh</td><td></td>
call call call call call test_f:
cjne re t error_dtmf:
mov mov setb ret; call test start start_ring_test:
mov mov ori mov clr clr call setb call mov loop_ring_wait:
push mov loop_mbb:
mov dj nz call dj nz send_dtmf delay_dtmf disable_dtmf delay_dtmf get_test a, # 0h, dtmf_error_flagl rl, # main_flag_error @ rl, # 4 error_flag rl, # main_flag a, @rl_l_, # 00001000bm @ rl a, # 00001000b # 6 r6, # 0ffh r7, # Offh r7, $ watchdog r6, loop mbb
<td></td><td>mov</td><td>r6, # 0ffh</td>
<td>loop mcc:</td><td></td><td></td>
<td></td><td>mov</td><td>r7, # Offh</td>
<td></td><td>djnz</td><td>r7, $</td>
<td></td><td>call</td><td>watchdog</td>
<td></td><td>djnz</td><td>r6, loop mcc</td>
<td></td><td>mov</td><td>r6, # 0ffh</td>
<td></td><td>pop</td><td> 6</td>
<td></td><td>djnz</td><td>r6, loop ring wait</td>
<td></td><td>clr</td><td>circ</td>
<td></td><td>jb</td><td>lc_, loop ring off</td>
<td></td><td>jmp</td><td>ring_flag</td>
<td>loop ring off:</td><td></td><td></td>
<td></td><td>clr</td><td>trO</td>
<td></td><td>mov</td><td>time on2, # 0</td>
<td></td><td>mov</td><td>time onl, # 0</td>
<td></td><td>setb</td><td>trO</td>
<td>wait 2 sec:</td><td></td><td></td>
<td></td><td>call</td><td>watchdog</td>
<td></td><td>jnb</td><td>fanswer, not answer</td>
<td></td><td>jmp</td><td>ring flag</td>
<td>not answer:</td><td></td><td></td>
<td></td><td>call</td><td>watchdog</td>
<td></td><td>anl</td><td>a, # 00000100b</td>
<td></td><td>cjne</td><td>a, # 00000100b, ring;</td>
<td></td><td>mov</td><td>a, time on2</td>
<td></td><td>cjne</td><td>a, # 2 0 0, wait 2 sec</td>
<td></td><td>jmp</td><td>ring flag</td>
<td>ring starts:</td><td></td><td></td>
<td></td><td>mov</td><td>r6, # 0ffh</td>
<td>loop mbbc:</td><td></td><td></td>
<td></td><td>mov</td><td>r 7, #offh</td>
<td></td><td>djnz</td><td>r7, $</td>
<td></td><td>call</td><td>watchdog</td>
<td></td><td>djnz</td><td>r6, loop mbbc</td>
mov loop_mccd:
mov djnz call djnz ring_start:
clr mov mov setb wait_l30msec:
call j nb jmp not_answerl:
call test_130:
anl cj no jmp ring_expire:
mov cj no wait_520msec:
call call test_250:
anl cj no ring_not_expire:
mov cjne r6, # Offh r7, # 0ffh r7, $ watchdog r6, loop_mccd trO time_on2, # 0 time_onl, # 0 trO watchdog fanswer, not_answerl ring-flag re ad_i o_m_a a, # 00000100b a, # 00000100b, ring_expire ring_flag time_on2 a, # 90, wait_130msec watchdog read_io_m_a a, # 00000100b a, # 00000100b, ring_not_exp after a, time_on2 a, # 250, wait 250msec continue flag:
jmp ring_stop_:
clr mov mov setb wait_2_seca:
call jnb jmp not_answer2:
mov cj no jb setb jmp ring_flag:
setb mov mov setb ring_stopl:
test_timbre:
ret; answer call start_ring_ans_test:
mov mov slave mov loop_ring_off2:
clr mov mov ring_flag trO time_on2, # 0 time_onl, # 0 trO watchdog fanswer, not_answer2 ring_flag a, time_on2 a, # 255, wait_2_seca ring_second, ring_stopl ring_second loop_ring_off apl rl, #main_flag_error @rl, # 5 error_ag, # 5 error_ag @rl a, 00010000b @rl, a trO time_on2, # 0 time onl, # 0 wait 2 sec2:
not answera:
ring_present:
wait ans:
wait trap:
continue ans:
ans_flag:
<td>setb</td><td>trO</td>
<td>call</td><td>watchdog</td>
<td>jnb</td><td>fanswer, not answera</td>
<td>jmp</td><td>ans flag</td>
<td>call</td><td>read io ma</td>
<td>anl</td><td>a, # 00000100b</td>
<td>anl</td><td>a, # 00000100b, ring present</td>
<td>mov</td><td>a, time on2</td>
<td>cj no</td><td>a, # 200, wait 2 sec2</td>
<td>jmp</td><td>ans flag</td>
<td>setb</td><td>conn loop</td>
<td>call</td><td>write io mc</td>
<td>mov</td><td>r7, # 0ffh</td>
<td>mov</td><td>r6, # 0ffh</td>
<td>dj nz</td><td>r6, $</td>
<td>call</td><td>watchdog</td>
<td>djnz</td><td>r7, wait ans</td>
<td>mov</td><td>r7, # 0ffh</td>
<td>mov</td><td>r6, # 0ffh</td>
<td>djnz</td><td>r6, $</td>
<td>call</td><td>watchdog</td>
<td>djnz</td><td>r7, wait ansa</td>
<td>jb</td><td>fanswer, ok ring</td>
<td>jmp</td><td>ans flag</td>
<td>mov</td><td>rl, # main flag error</td>
<td>mov</td><td>@rl, # 6</td>
<td>setb</td><td>error flag</td>
<td>setb</td><td>circ</td>
clr fanswer ret ok_ring:
timbre:
clr fanswer setb apl ret radio call sign make call:
mov mov slave mov test_mute:
jnb mov mov setb jmp power_is_ok:
mov call mov call call mov call mov wait_min:
mov dj nz call dj nz rl, # mainl_flag a, @rl a, # OOOQOOOOlb @rl, a power_, power_is_ok rl, # main_flag_error @rl, # 1 error_flag pre-onhook a, # func wrbus a, # 7 wrbus clr_dsp a , # star wrbus r7, # 0ffh r6, # offh r6, $ watchdog r7, wait min mov wait_mina:
mov djnz call djnz mov call mov mov mov ass mov mov anl call inc mov anl call inc mov anl call inc mov anl call inc mov r7, # Offh r6, # Offh r6, $ watchdog r7, wait_mina a, # 9h wrbus a, # 0ah wrbus a, # dspbuf_start a, # 3 rl, aa, @rl a, # 0fh wrbus rl a, # 0fh wrbus rl a, @rl a, # Ofh wrbus rl a, @rl a, # 0fh wrbus rl a, @rl continue mutel:
delay_call:
continue mute2:
<td>anl</td><td>a, # Ofh</td>
<td>call</td><td>wrbus</td>
<td>inc</td><td>rl</td>
<td>mov</td><td>a, @rl</td>
<td>anl</td><td>a, # Ofh</td>
<td>call</td><td>wrbus</td>
<td>inc</td><td>rl</td>
<td>mov</td><td>a, @ rl</td>
<td>anl</td><td>a, # 0fh</td>
<td>call</td><td>wrbus</td>
<td>setb</td><td>f send</td>
<td>mov</td><td>a, #send</td>
<td>call</td><td>wrbus</td>
<td>setb</td><td>enable special</td>
<td>call</td><td>write io mc</td>
<td>clr</td><td>mouth</td>
<td>call</td><td>write px2</td>
<td>clr</td><td>trl</td>
<td>mov</td><td>time off1, # 0</td>
<td>mov</td><td>time of f2, # 0</td>
<td>setb</td><td>trl</td>
<td>mov</td><td>a, time off2</td>
<td>call</td><td>watchdog</td>
<td>cj no</td><td>a, # 80, delay call</td>
<td>clr</td><td>trl</td>
<td>mov</td><td>time off1, # 0</td>
<td>mov</td><td>time off2, # 0</td>
<td>mov</td><td>time off3, # 0</td>
<td>setb</td><td>trl</td>
cont_waiting:
style inuse:
call error
<td>j nb</td><td>inuse, style inuse</td>
<td>mov</td><td>rl, # mainl flag error</td>
<td>mov</td><td>@ rl, # 4</td>
<td>jmp</td><td>call error</td>
<td>call</td><td>read io ma</td>
<td>anl</td><td>a, # 00000001b</td>
<td>cn je</td><td>a, # 00000001b, busy ok</td>
<td>call</td><td>read io ma</td>
<td>anl</td><td>a, # 00001000b</td>
<td>cn je</td><td>a, # 00001000b, tlOOOhz</td>
<td>mov</td><td>a, time off2</td>
<td>call</td><td>watchdog</td>
<td>cj no</td><td>a, # lh, cont waiting</td>
<td>mov</td><td>rl, # mainl flag error</td>
<td>mov</td><td>@rl, # 3</td>
<td>mov</td><td>a, # endl</td>
<td>call</td><td>wrbus</td>
<td>setb</td><td>error flag</td>
<td>jmp</td><td>pre onhook</td>
tlOOOhz: busy_ok:
pre_onhook:
error code
<td>mov</td><td>a, # endl</td>
<td>call</td><td>wrbus</td>
<td>clr</td><td>conn loop</td>
<td>call</td><td>write io mb</td>
<td>call</td><td>hup</td>
<td>ret</td><td></td>
<td>setting up</td><td></td>
error acc:
mov mov c etc mov mov jmp check__hook_ring:
cj no mov mov jmp check_dial_flag:
cjne mov mov jmp check_dtmf_ring:
cj no mov mov jmp check_ring_flag:
cj no mov mov jmp check_ring_ans_f lag:
cjne mov mov jmp check_power_flag:
mov mov rl, main_flag_error a, @rl a, # 1, check_hook_ring rl, # error_code @rl, # 1 exit_error a, # 2, check_dial_flag rl, # error_code @ rl, # 2 exit_error a, # 3, check_dtmf_flag rl, # error_code @rl, # 3 exit_error a, # 4, check_ring_flag rl, # error_code @rl, # 4 exit_error a, # 5, check_ring_ans_flag rl, # error_code @rl, # 5 exit_error a, # 6, check_power_flag rl, # error_code @ rl, # 6 exit_error rl, # mainl_flag_error a, @rl cjne mov mov jmp check_call_test:
cjne mov mov jmp check_busy_test:
cjne mov mov jmp check_inuse_test:
cjne mov mov jmp check_1000_test:
cj no mov mov jmp exit_error:
ret a, # 1, check_call_test rl, # error_code @ rl, # 7 exit_error a, # 2, check_busy_test rl, # error_code @rl, # 8 exit_error a, # 3, check_inuse_test rl, # error_code @rl, # 9 exit_error a , # 4, check_1000_test rl, # error_code @rl, # 10 exit_error a, # 5, exit_error rl, # error_code @rl, # 11 exit error; return to normal state fin_self:
clr conn_loop call write_io_m_c call hup clr enable_test call write io mb clr clr clr jnb clr call call turn_on_led:
setb call call setb call call setb call call setb call call setb call call test_4on:
clr call call ret loop_bad:
mov test_enable test_end error_flag error_flag, turn_on_led ext_led write_io_m_c loop_bad ext_led write_io_m_c loop_bad ext_led write_io_m_c loop_bad ext_led write_io_m_c loop_bad ext_led write_io
<td></td><td>mov</td><td>r6, # 0ffh</td>
<td></td><td>djnz</td><td>r6, $</td>
<td></td><td>call</td><td>watchdog</td>
<td></td><td>djnz</td><td>r7, wait emb</td>
<td></td><td>mov</td><td>r7, # 0ffh</td>
<td colspan="3">wait emba:</td>
<td></td><td>mov</td><td>r6, # 0ffh</td>
<td></td><td>djnz</td><td>r6, $</td>
<td></td><td>call</td><td>watchdog</td>
<td></td><td>djnz ret</td><td>r7, wait emba</td>
<td>; come here after</td><td>calling</td><td>preparation</td>
<td colspan="3">first:</td>
<td></td><td>call</td><td>clr msg</td>
<td></td><td>clr</td><td>exO</td>
<td></td><td>clr</td><td>hookswout</td>
<td></td><td>setb</td><td>hookswout</td>
<td></td><td>clr</td><td>fhook</td>
<td colspan="3">dt delay:</td>
<td></td><td>call</td><td>watchdog</td>
<td></td><td>mov</td><td>f cmds, # 4</td>
<td></td><td>call</td><td>trucmd</td>
<td></td><td>jb</td><td>f start, dt delay</td>
<td></td><td>clr</td><td>ieO</td>
<td colspan="3">continue lc:</td>
<td></td><td>jnb</td><td>lc, alert check</td>
<td colspan="3">continue lcl:</td>
<td></td><td>call</td><td>hup</td>
<td></td><td>jmp</td><td>start</td>
<td colspan="3">alert check:</td>
<td></td><td>setb</td><td>exO</td>
<td></td><td>jb</td><td>inuse, make dt</td>
<td></td><td>jmp</td><td>wait</td>
; 500ms call tone generated by make dt:
check_prefix:
prefix_0:
prefix_l:
no_prefix:
; save store it:
do store it:
; check check_number:
setb call call jb clr mov jmp jb cj no cj no jmp cj no jmp inc inc numbers and get cj no jmp mov inc numbers entered clr mov fdtone dtone get inuse, check_prefix fdtone ccapml, # 0 wait lock, prefix_0 a, # pound, nosend a, kero, pref ix_l store_it a, # 1, no_prefix store it rO rl next rO, # 7fh, do_store_it check_number @ r0, a rO and parse them fsendtimer a, first_digit unlocking_it:
cjne jmp check_one:
cjne mov cjne jmp check_two:
cjne mov cjne j nb jmp check_nam:
cjne mov cj no jmp check_naml:
mov call; finish with bad nosend:
clr setb setb jmp check_unlock:
cj ne jmp setb jmp a, # 0ffh, check_one check_send a, # pound, check_send a, second_digit a, # 0ffh, check_two check_send a, ipound, check_send a, third_digit a, # pound, check_unlock lock, nosend lock_it a, utter, check_send a, third_digit a, # 0ffh, check_naml check_send f_cmds, # 2 trucmd for number sequences funlocktimer fonhook ieO start a, # 0ffh, unlocking_it check_send funlocktimer get next; if count check send:
sequence does not match special functions check intl:
check_op:
check_service:
check_distance:
check local:
<td>jb</td><td>sw sendtimer, check intl</td>
<td>setb</td><td>fsendtimer</td>
<td>jmp</td><td>get next</td>
<td>mov</td><td>a, prefix</td>
<td>cjne</td><td>a, kero, check op</td>
<td>mov</td><td>a, first digit</td>
<td>cjne</td><td>a, # 1, check op</td>
<td>setb</td><td>fsendtimer</td>
<td>jmp</td><td>get next</td>
<td>mov</td><td>a, prefix</td>
<td>cjne</td><td>a, # 10, check service</td>
<td>cj no</td><td>r2, # 0, check service</td>
<td>setb</td><td>fsendtimer</td>
<td>cjne</td><td>r2, # 3, check distance</td>
<td>mov</td><td>a, second digit</td>
<td>cjne</td><td>a, # 1, check distance</td>
<td>mov</td><td>a, third digit</td>
<td>cjne</td><td>a, # 1, check distance</td>
<td>jmp</td><td>send it</td>
<td>cjne</td><td>r2, # 10, check local</td>
<td>jmp</td><td>send it</td>
<td>cjne</td><td>r2, # 7, get next</td>
<td>setb</td><td>fsendtimer</td>
<td>mov</td><td>a, second digit</td>
<td>subb</td><td>a, # 1</td>
<td>jz</td><td>get next</td>
get_next:
<td>mov</td><td>a, second digit</td>
<td>subb</td><td>a, # 10</td>
<td>jz</td><td>get next</td>
<td>clr</td><td>fsendtimer</td>
<td>jmp</td><td>send it</td>
<td>inc</td><td>r2</td>
<td>call</td><td>get</td>
<td>jmp</td><td>store it</td>
; ring tone, send r
/ check TRU and quit send_it:
jb locked:
mov cjne number if unlock code is not entered lock, sendl a, third_digit a, # ffh, sendl; send caller sendl:
<td>setb</td><td>mouth</td>
<td>call</td><td>write px2</td>
<td>mov</td><td>@ r0, # send</td>
<td>mov</td><td>a, # clear</td>
<td>call</td><td>wrbus</td>
<td>mov</td><td>r0, # 60h</td>
<td>mov</td><td>a, @ r0</td>
<td>cjne</td><td>a, # 0ffh, out</td>
<td>inc</td><td>rO</td>
<td>mov</td><td>a, @ r0</td>
<td></td><td>call</td><td>wrbus</td>
<td></td><td>jnb</td><td>fhang, send ok</td>
<td>continue lc2:</td><td></td><td></td>
<td></td><td>call</td><td>hup</td>
<td></td><td>jmp</td><td>start</td>
<td>send ok:</td><td></td><td></td>
<td></td><td>inc</td><td>rO</td>
<td></td><td>c etc.</td><td>a, # send, out</td>
<td></td><td>setb</td><td>f send</td>
<td></td><td>clr</td><td>mouth</td>
<td></td><td>call</td><td>write px2</td>
<td>; calling</td><td>done,</td><td>wait for the other numbers</td>
<td>wait:</td><td></td><td></td>
<td></td><td>call</td><td>get</td>
<td></td><td>jnb</td><td>sw data, wait</td>
<td></td><td>call</td><td>wrbus</td>
<td></td><td>jmp</td><td>wait</td>
<td>9th ; calling 9th</td><td colspan="2">tone generator</td>
<td>; generated</td><td>required</td><td>tone</td>
<td>dtone:</td><td></td><td></td>
<td></td><td>push</td><td>psw</td>
<td></td><td>jb</td><td>lock, serv check</td>
<td></td><td>mov</td><td>dptr, # table 350</td>
<td></td><td>jmp</td><td>tone out</td>
<td>serv check:</td><td></td><td></td>
<td></td><td>jb</td><td>noserv, roam check</td>
<td></td><td>mov</td><td>dptr, # table 620</td>
<td></td><td>jmp</td><td>tone out</td>
<td></td><td> 62</td><td></td>
<td>roam check:</td><td></td><td></td>
<td></td><td>jb</td><td>sw dialtone, for norm</td>
<td></td><td>jb</td><td>roam, for the norm</td>
<td></td><td>mov</td><td>dptr, # table roam</td>
<td></td><td>jmp</td><td>tone out</td>
<td>for the norm:</td><td></td><td></td>
<td></td><td>mov</td><td>dptr, # table dt</td>
<td>tone out:</td><td></td><td></td>
<td></td><td>mov</td><td>lowpoint, dpi</td>
<td></td><td>mov</td><td>highpoint, dph</td>
<td></td><td>mov</td><td>ccapml, # 0100001Ob</td>
<td></td><td>pop</td><td>psw</td>
<td></td><td>re t</td><td></td>
<td>t ; get numbers 9th</td><td colspan="2">from the keyboard</td>
<td colspan="2">; the resulting numbers are evaluated</td><td>. and settings</td>
<td>get:</td><td></td><td></td>
<td></td><td>push</td><td>psw</td>
<td>getl:</td><td></td><td></td>
<td></td><td>mov</td><td>f cmds, # 3</td>
<td></td><td>call</td><td>trucmd</td>
<td></td><td>call</td><td>watchdog</td>
<td>; wait for the pulse</td><td>mode</td><td></td>
<td>get pulse:</td><td></td><td></td>
<td></td><td>jnb</td><td>fdigit, get dtmf</td>
<td></td><td>clr</td><td>fdtone</td>
<td></td><td>mov</td><td>ccapml, # 0</td>
<td></td><td>mov</td><td>a, # 2</td>
<td></td><td>clr</td><td>c</td>
<td></td><td>subb</td><td>a, time off2</td>
jnc mov clr subb jnc mov mov setb clr; check special get_dtmf:
j nb clr mov clr mov anl setb; check termination hang:
jnb pop test_lc3:
call dec dec j nb clr no_remote:
jmp get_dtmf a, # 131 c
a, time_off1 get_dtmf a, pulse_digit pulse_digit, # 0 fdig_ready fdigit conditions fdtmfin, hang fdtone ccapml, # 0 fdtmfin a, pxl_temp a, # 0fh fdig_ready fhang, gflash psw hup sp sp fremote_hup, no_rem; check flashing gflash:
<td>jnb</td><td>fflash, time</td>
<td>clr</td><td>fflash</td>
<td>mov</td><td>ccapml, # 0</td>
<td>jb</td><td>fdtone, just flash</td>
<td>jb</td><td>fsend, just flash</td>
<td>clr</td><td>fdtone</td>
<td>pop</td><td>psw</td>
<td>Dec</td><td>m.p.</td>
<td>Dec</td><td>m.p.</td>
<td>j amp</td><td>send it</td>
; generate SEND tone just_flash:
<td>clr</td><td>fdtone</td>
<td>mov</td><td>f cmds, # 5</td>
<td>call</td><td>trucmd</td>
<td>mov</td><td>a, #send</td>
<td>call</td><td>wrbus</td>
<td>setb</td><td>f send</td>
<td>POP</td><td>psw</td>
<td>Dec</td><td>m.p.</td>
<td>Dec</td><td>SP</td>
<td>jmp</td><td>wait</td>
; check assembly delay time:
<td>jnb</td><td>ftime, send time</td>
<td>pop</td><td>psw</td>
<td>Dec</td><td>m.p.</td>
<td>Dec</td><td>m.p.</td>
jmp rohtone; check if send_time send_time:
j nb mov cj ne clr pop dec dec jmp; check unlock unlock_time:
jnb mov cjne clr
POP dec dec jb jmp no_unlock:
setb setb jmp; less than 4 digits fsendtimer, unlock_time r6, time_off2 r6, # 56, umlock_time fsendtimer psw sp sp send it funlocktimer, lock_time r6, time_off2 r6, # 28, look funlocktimer psw sp sp lock, no_lock unlock_it fonhook ieO start blocking lock time:
<td>jnb</td><td>flocktimer, look</td>
<td>mov</td><td>r6, time off2</td>
<td>c etc.</td><td>r6, # 28, look</td>
<td>clr</td><td>flocktimer</td>
<td>POP</td><td>psw</td>
<td>Dec</td><td>m.p.</td>
<td>Dec</td><td>m.p.</td>
<td>jmp</td><td>go lock</td>
; check for full number look:
jb fdig_ready, got_a_digit jmp getl; number received got_a_digit:
clr fdig_ready got_inuse:
sleeve time_offl, # 0 sleeve time_off2, # 0 sleeve time_off3, # 0 pop psw ret t
; get a number from the keyboard; evaluating incoming numbers and settings get_test:
push psw get_dtmf_test:
no dtmf continue
<td>jnb</td><td>fdtmfin, no_dtmf continued</td>
<td>clr</td><td>fdtone</td>
<td>mov</td><td>ccapml, # 0</td>
<td>clr</td><td>fdtmfin</td>
<td>mov</td><td>a, pxl temp</td>
<td>anl</td><td>a, # 0fh</td>
<td>setb</td><td>fdig ready</td>
<td>clr</td><td>fdig ready</td>
<td>mov</td><td>time off1, # 0</td>
<td>mov</td><td>time off2, # 0</td>
<td>mov</td><td>time off3, # 0</td>
<td>pop</td><td>psw</td>
<td>ret</td><td></td>
; send ringtone send_dtmf:
<td>call</td><td>watchdog</td>
<td>clr</td><td>dtmf out</td>
<td>call</td><td>write io mb</td>
<td>setb</td><td>dtmf out</td>
<td>call</td><td>write io mb</td>
<td>ret</td><td></td>
; send ringtone disable_dtmf:
clr dtmf_out call write_io_m_b ret delay_dtmf:
clr trl mov t ime_o f f1, # 0 mov time off2, # 0 setb wait_until_dtmf:
mov call c etc ret r
; ROH tone generator
Z Rohtone:
clr clr mov mov mov mov setb call rohtone_on:
mov check_hangup:
call j nb test_lc4 call jmp check_timeout:
jb jb mov jmp roh_timeout:
mov clr setb trl a, time_off2 watchdog a, # 4, wait_until_dtmf fdtime fdtone dptr, # table_400 highpoint, dph lowpoint, dpi roh_boost write_px2 ccapml, # 01000010b watchdog fhang, check_timeout hup start frohtimeout, coh_timeout rohctimeout , # 0 roh_boost loopswitch
<td></td><td>call</td><td>write px2</td>
<td>continue lc5:</td><td></td><td></td>
<td></td><td>call</td><td>'hup</td>
<td></td><td>jnb</td><td>sw gndstart, looptest</td>
<td></td><td>jmp</td><td>looptest end</td>
<td>looptest:</td><td></td><td></td>
<td></td><td>mov</td><td>b, # 40</td>
<td>looptl:</td><td></td><td></td>
<td></td><td>mov</td><td>a, time on2</td>
<td></td><td>add</td><td>a, # 5</td>
<td>loopt2:</td><td></td><td></td>
<td></td><td>call</td><td>watchdog</td>
<td></td><td>c etc.</td><td>a, time on2, loopt2</td>
<td></td><td>djnz</td><td>b, looptl</td>
<td></td><td>clr</td><td>loopswitch</td>
<td></td><td>call</td><td>write px2</td>
<td></td><td>mov</td><td>looptest timer2, # 215</td>
<td>loopt3:</td><td></td><td></td>
<td></td><td>mov</td><td>looptest timer2, # 0ffh</td>
<td></td><td>djnz</td><td>looptest timer, $</td>
<td></td><td>call</td><td>watchdog</td>
<td></td><td>djnz</td><td>looptest timer2, loopt3</td>
<td></td><td>jb</td><td>lc, looptest end</td>
<td></td><td>setb</td><td>loopswitch</td>
<td></td><td>call</td><td>write px2</td>
<td></td><td>jmp</td><td>looptest</td>
<td>looptest end:</td><td></td><td></td>
<td></td><td>clr</td><td>frohtimeout</td>
<td></td><td>mov</td><td>time onl, # 0</td>
<td></td><td>mov</td><td>time on2, # 0</td>
<td></td><td>jmp</td><td>start</td>
; termination subroutine call clr clr mov clr clr clr clr j nb setb call mov add push jmp hupl:
jb clr call hup2:
clr clr mov clr clr call jb mov call no_end_sent:
clr setb clr jnb pop watchdog exO fdigit pulse_digit, # 0 fdig_ready fdtmfin flocktimer funlocktimer sw_gndstart, hupl loopswitch_ write_px2 a, time_on2 a, # 75 acc hup2 frohtimeout, hup2 loopswitch_ write_px2 fapend_tft fpendt 0ft ftendt 0ft ftendt #endcall virbus f send hookswout hookswout_ sw_gndstart, hup4 acc clr hup 3:
call cjne jnc hup 4:
setb clr clr clr setb ret r
; TRU status change r
update_displays:
push push upspecl:
j nb call continue_update:
jb mov mov cpl mov mov cpl mov mov cpl mov c
watchdog a, time_on2, $ + 3 hup3 fonhook fhang f_one_sec f_inuseofftiming exO acc psw fspecl, continue_update specl test_enable, go_to_self a, lamps_temp c, roam c
roamlamp, cc, noserv c
noservlamp, cc, lock c
locklamp, c test_push:
not_push:
go_to_self:
continue led:
pass_ok:
not_error_yet
<td>mov</td><td>c, muse</td>
<td>cpl</td><td>c</td>
<td>mov</td><td>inuselamp, c</td>
<td>call</td><td>writw io c</td>
<td>jb</td><td>sw dialtone, not maint</td>
<td>call</td><td>read io ma</td>
<td>anl</td><td>a, # 00010000b</td>
<td>cjne</td><td>a, # 0h, not push</td>
<td>setb</td><td>continue enable</td>
<td>setb</td><td>fremote hup</td>
<td>setb</td><td>loopswitch</td>
<td>call</td><td>write px2</td>
<td>j nb</td><td>continue enable, not maint</td>
<td>j nb</td><td>continue end, not error yet</td>
<td>j nb</td><td>error flag, pass ok</td>
<td>mov</td><td>rO, # error code</td>
<td>mov</td><td>a, @ r0</td>
<td>rl</td><td>a</td>
<td>rl</td><td>a</td>
<td>rl</td><td>a</td>
<td>rl</td><td>a</td>
<td>mov</td><td>lamps temp, a</td>
<td>call</td><td>write io c</td>
<td>setb</td><td>ext led</td>
<td>jmp</td><td>write to c</td>
<td>clr</td><td>ext led</td>
<td>jmp</td><td>write to c</td>
<td>jb</td><td>ext led, clr led</td>
<td>setb</td><td>ext led</td>
<td></td><td>jmp</td><td>write to c</td>
<td>clr led:</td><td>clr</td><td>ext led</td>
<td>write to c:</td><td>call</td><td>write io mc</td>
<td>not maint:</td><td>mov</td><td>a, lamps temp</td>
<td></td><td>jb</td><td>frohtimeout, compare</td>
<td></td><td>mov</td><td>c, ap2</td>
<td></td><td>anl</td><td>c, apl</td>
<td></td><td>jnc</td><td>compare</td>
<td></td><td>jnb</td><td>fonhook, compare</td>
<td></td><td>clr</td><td>loopswitch</td>
<td></td><td>call</td><td>write px2</td>
<td></td><td>jb</td><td>fcall, reset ring timer</td>
<td></td><td>setb</td><td>fcall</td>
<td></td><td>mov</td><td>bell timer, # 0</td>
<td></td><td>mov</td><td>bell timer2, # 0</td>
<td></td><td>setb</td><td>fbellsound</td>
<td></td><td>mov</td><td>dptr, #table 20</td>
<td></td><td>mov</td><td>lowpoint, dpi</td>
<td></td><td>mow</td><td>highpoint, dph</td>
<td></td><td>setb</td><td>twenty hz pwm</td>
<td></td><td>mov</td><td>ccapm2, # 01000010b</td>
<td>continue:</td><td>clr</td><td>ring</td>
<td></td><td>setb</td><td>no ring</td>
<td></td><td>call</td><td>write px2</td>
<td>reset ring timer:</td><td>mov</td><td>ring timer, # 0</td>
<td>compare:</td><td>xrl</td><td>a, lamps temp</td>
<td></td><td>jnb</td><td>f one sec, dtbits</td>
<td></td><td>mov</td><td>c, acc.7</td>
<td></td><td>anl</td><td>c, Inside lamp</td>
jnc mov setb timing_in_use_of f:
jnb clr cont_in_use_t iming:
jnb djnz clr jb disconnect:
setb setb call dtbits:
anl jz j nb mov call ring_timeout:
jnb inc mov clr subb j no jb check_stop_ring_ps:
mov clr Subba t iming_in_use_o f f_ in_use_off_timer # 28 f_inuseofftiming inuselamp, cont_in_use_timing f_inuseofftiming f_inuseofftiming, dtbits in_use_off_timer, dtbits f_inuseofftiming fonhook, dtbits fremote_hup loopswitch_ write_px2 a, # 01110000b ring_timeout fdtone, ring_timeout ccampl # 0 dtone fcall, update_done ring_timer a # 53 c
a, ring_timer update_done fbellsound, update_done a, # 3 c
a, bell timer2 jnc mov clr clr jnb setb call update_done:
jb jnb jb no_reset_io
POP pop ret; transshipment check watchdog:
push clr mov mov
Pop ret update_done ccapm2, # 0 twenty_hz_pwm fcall sw_gndstart, update_done loopswitch_ write_px2 fcall, no_reset_io lc_, no_reset_io frohtimeout, no_reset_io psw acc ie ea ccap41, # 0 ccap4h, ch ie; onhook timer interrupt handler:
<td>push</td><td>psw</td>
<td>push</td><td>acc</td>
<td>clr</td><td>trl</td>
<td>clr</td><td>tfl</td>
mute check:
on_spec2:
on_spec2_done:
gs_init:
cont_groundstart:
cont Service:
ring_control:
<td>jb</td><td>mute, is spec2</td>
<td>setb</td><td>mouth</td>
<td>call</td><td>write px2</td>
<td>jnb</td><td>fspec2, on spec2 done</td>
<td>call</td><td>spec2</td>
<td>djnz</td><td>display delay, gs init</td>
<td>call</td><td>update displays</td>
<td>jb</td><td>fcall, cont Service</td>
<td>jnb</td><td>sw gndstart, cont Service</td>
<td>j nb</td><td>fonhook, cont Service</td>
<td>jb</td><td>ring ground, cont groundstart</td>
<td>clr</td><td>loopswitch</td>
<td>call</td><td>write px2</td>
<td>mov</td><td>gndstart timerl, # 0</td>
<td>mov</td><td>gndstart timer2, # 0</td>
<td>inc</td><td>gndstart timerl</td>
<td>mov</td><td>a, gndstart timerl</td>
<td>c etc.</td><td>a, # 90, cont Service</td>
<td>inc</td><td>gndstart timer2</td>
<td>mov</td><td>gndstart timerl, # 0</td>
<td>mov</td><td>a, gndstart timer2</td>
<td>cjne</td><td>a, # 40, cont Service</td>
<td>setb</td><td>loopswitch</td>
<td>call</td><td>write px2</td>
<td>jb</td><td>fcall, ring control</td>
<td>jmp</td><td>onhook timers</td>
<td>jb</td><td>fbellsound, timing ring</td>
<td>jb</td><td>ring ground, timing ring</td>
<td></td><td>mov</td><td>a, bell timer2</td>
<td></td><td>cj no</td><td>a, # 0, start_bellsound</td>
<td></td><td>mov</td><td>a, # 28</td>
<td></td><td>clr</td><td>c</td>
<td></td><td>subb</td><td>a, bell timer</td>
<td></td><td>jnc</td><td>timing ring</td>
<td></td><td>jmp</td><td>start bellsound</td>
<td>timing ring</td><td></td><td></td>
<td></td><td>inc</td><td>bell timer</td>
<td></td><td>mov</td><td>a, bell timer</td>
<td></td><td>c etc.</td><td>a, # 90, ringer on</td>
<td></td><td>mov</td><td>bell timer, # 0</td>
<td></td><td>inc</td><td>bell timer2</td>
<td>ringer is</td><td></td><td></td>
<td></td><td>jnb</td><td>fbellsound, ringer off</td>
<td>check stcp bellsound:</td><td></td><td></td>
<td></td><td>mov</td><td>a, bell timer2</td>
<td></td><td>cj no</td><td>a, # 59, onhook timers</td>
<td></td><td>mov</td><td>a, bell timer</td>
<td></td><td>cj no</td><td>a, # 45, onhook timers</td>
<td>stop bellsound:</td><td></td><td></td>
<td></td><td>mov</td><td>ccapm2, # 0</td>
<td></td><td>clr</td><td>fbellsound</td>
<td></td><td>mov</td><td>dptr, #table null</td>
<td> ,</td><td>mov</td><td>lowpoint, dpi</td>
<td></td><td>mov</td><td>highpoint, dph</td>
<td></td><td>mov</td><td>ccamp2, # 01000010b</td>
<td></td><td>clr</td><td>ea</td>
<td></td><td>clr</td><td>no ring</td>
<td></td><td>call</td><td>write px2</td>
<td></td><td>setb</td><td>ea</td>
<td></td><td>call</td><td>watchdog</td>
<td></td><td>jmp</td><td>reset bell timers</td>
<td>ringer off:</td><td></td><td></td>
<td></td><td>mov</td><td>a, bell timer2</td>
start_bellsound:
test_relayl:
reset_bell_timers:
onhook timers:
not inc255:
test_fhangl:
test_fhang2:
<td>cjne</td><td>a, # 120, onhook timers</td>
<td>call</td><td>reset io</td>
<td>call</td><td>write pxl</td>
<td>call</td><td>write px2</td>
<td>clr</td><td>ea</td>
<td>setb</td><td>no ring</td>
<td>call</td><td>write px2</td>
<td>setb</td><td>ea</td>
<td>mov</td><td>ccapm2, # 0</td>
<td>mov</td><td>dptr, # table 20</td>
<td>mov</td><td>lowpoint, dpi</td>
<td>mov</td><td>highpoint, dph</td>
<td>mov</td><td>ccapm2, # 01000010b</td>
<td>setb</td><td>fbellsound</td>
<td>mov</td><td>bell timer, # 0</td>
<td>mov</td><td>bell timer2, # 0</td>
<td>inc</td><td>time onl</td>
<td>mov</td><td>a, time onl</td>
<td>cjne</td><td>a, # 36, onhook done</td>
<td>inc</td><td>time on2</td>
<td>coupling</td><td>time onl, # 0</td>
<td>mov</td><td>a, time on2</td>
<td>cjne</td><td>a, # 0, not inc255</td>
<td>inc</td><td>continue min</td>
<td>jb</td><td>frohtimeout, onhook done</td>
<td>jb</td><td>fonhook, onhook done</td>
<td>mov</td><td>a, time on2</td>
<td>cjne</td><td>a, # 30, onhook done</td>
<td>continue fhang3:</td><td>setb clr</td><td>fhang f_inuseofftiming</td>
<td>onhook done:</td><td>pop</td><td>acc</td>
<td></td><td>pop</td><td>psw</td>
<td></td><td>rare</td><td></td>
; 1 timer interrupt processing offhook timer check strobe:
decode dtmf:
ttime:
<td>push</td><td>psw</td>
<td>push</td><td>acc</td>
<td>j nb</td><td>fspec2, check strobe</td>
<td>call</td><td>spec2</td>
<td>call</td><td>read pxl strobe</td>
<td>jb</td><td>strobe, decode dtmf</td>
<td>clr</td><td>fdecoder busy</td>
<td>jmp</td><td>ttime</td>
<td>jb</td><td>fdecoder busy, ttime</td>
<td>call</td><td>read pxl</td>
<td>setb</td><td>fdtmfin</td>
<td>setb</td><td>fdecoder busy</td>
<td>inc</td><td>time offl</td>
<td>mov</td><td>a, time of.fl</td>
<td>cjne</td><td>a, # 0, t one sec</td>
<td>inc</td><td>time off2</td>
<td>call</td><td>update displays</td>
<td>mov</td><td>a, time off2</td>
<td>cj no</td><td>a, # 0, t one sec</td>
<td>inc</td><td>time off3</td>
t one sec:
trohtimer:
trohstart:
trohąuit:
tdone:
tdoneO:
continue trO:
mov a, time_off2
<td>cjne</td><td>a, # 14, trohtimer</td>
<td>setb</td><td>f one sec</td>
<td>jb</td><td>fsend, tdone</td>
<td>jnb</td><td>inuse, tdone</td>
<td>inc</td><td>r5</td>
<td>cj no</td><td>r 5, # 36, trohstart</td>
<td>inc</td><td>r7</td>
<td>mov</td><td>r5, # 0</td>
<td>cjne</td><td>r7, # 10, trohstart</td>
<td>cpl</td><td>the grass is</td>
<td>mov</td><td>r7, # 0</td>
<td>mov</td><td>a, time off3</td>
<td>cj no</td><td>a, # 2, trohąuit</td>
<td>mov</td><td>a, time off2</td>
<td>cjne</td><td>a, # 51, trohąuit</td>
<td>setb</td><td>ft ime</td>
<td>mov</td><td>a, time off3</td>
<td>cjne</td><td>a, # 5, tdone</td>
<td>mov</td><td>a, time off2</td>
<td>cjne</td><td>a, # 127, tdone</td>
<td>setb</td><td>frohtimeout</td>
<td>jnb</td><td>f-start, tdoneO</td>
<td>mov</td><td>a, time off2</td>
<td>cjne</td><td>a, # 4, tdonel</td>
<td>clr</td><td>f start</td>
<td>jnb</td><td>lc, tdonel</td>
<td>clr</td><td>trl</td>
<td>setb</td><td>trO</td>
tdonel:
pop pop rare acc psw external interrupt service program offhook_edge:
<td></td><td>jb</td><td>frohtimeout, offhook retuml</td>
<td></td><td>jnb</td><td>fcall, not inc call</td>
<td></td><td>jnb</td><td>no ring, ok wait</td>
<td></td><td>setb</td><td>ring</td>
<td></td><td>call</td><td>write px2</td>
<td></td><td>clr</td><td>no ring</td>
<td></td><td>call</td><td>ivrite px2</td>
<td></td><td>setb</td><td>return ring</td>
<td></td><td>clr</td><td>ieO</td>
<td></td><td>clr</td><td>trO</td>
<td></td><td>clr</td><td>tfO</td>
<td>ok wait:</td><td>mov</td><td>r7, # 0ffh</td>
<td>loop ring:</td><td>mov</td><td>r6, # 0ffh</td>
<td></td><td>dj nz</td><td>r6, $</td>
<td></td><td>call</td><td>watchdog</td>
<td></td><td>djnz</td><td>r 7, loop ring</td>
<td></td><td>j nb</td><td>lc, no seed</td>
<td>to sow estonia:</td><td>jnb</td><td>return ring, do not return</td>
<td></td><td>call</td><td>reset io</td>
<td></td><td>call</td><td>ivrite pxl</td>
<td></td><td>call</td><td>write px2</td>
<td></td><td>setb</td><td>no ring</td>
<td></td><td>clr</td><td>ring</td>
<td></td><td>call</td><td>ivrite px2</td>
loop_ringl do not return:
offhook_returnl:
no_set:
not inc call:
<td>clr</td><td>return ring</td>
<td>mov</td><td>r7, # 07fh</td>
<td>mov</td><td>r6, # 0ffh</td>
<td>djnz</td><td>r6, $</td>
<td>call</td><td>watchdog</td>
<td>djnz</td><td>r7, loop round</td>
<td>call</td><td>reset io</td>
<td>call</td><td>write pxl</td>
<td>call</td><td>write px2</td>
<td>setb</td><td>trO</td>
<td>mov</td><td>thio, # o</td>
<td>rare</td><td></td>
<td>jmp</td><td>offhook return</td>
ok off hook:
<td>clr</td><td>trO</td>
<td>clr</td><td>tfO</td>
<td>push</td><td>psw</td>
<td>push</td><td>acc</td>
<td>clr</td><td>ieO</td>
<td>setb</td><td>trl</td>
<td>clr</td><td>fhang</td>
<td>mov</td><td>thO, # 0</td>
<td>mov</td><td>time offl, # 0</td>
<td>mov</td><td>time off2, # 0</td>
<td>mov</td><td>time off3, # 0</td>
<td>clr</td><td>mouth</td>
<td>call</td><td>write px2</td>
<td>j nb</td><td>fonhook, check flash</td>
<td>clr</td><td>fonhook</td>
<td>j nb</td><td>fcall, set hook flag</td>
<td></td><td>setb</td><td>fanswer</td>
<td></td><td>clr</td><td>fcall</td>
<td></td><td>setb</td><td>ring</td>
<td></td><td>call</td><td>write px2</td>
<td></td><td>clr</td><td>no ring</td>
<td></td><td>call</td><td>write px2</td>
<td></td><td>mov</td><td>ccapm 2, # 0</td>
<td></td><td>clr</td><td>twenty hz pwm</td>
<td></td><td>jmp</td><td>offhook done</td>
<td>sow hook flag:</td><td></td><td></td>
<td></td><td>setb</td><td>fhook</td>
<td></td><td>jmp</td><td>offhook done</td>
<td>check flash:</td><td></td><td></td>
<td></td><td>mov</td><td>a, # 19</td>
<td></td><td>clr</td><td>c</td>
<td></td><td>subb</td><td>a, time on2</td>
<td></td><td>j no</td><td>check digit</td>
<td></td><td>j nb</td><td>lock, offhook i</td>
<td></td><td>setb</td><td>fflash</td>
<td></td><td>jmp</td><td>offhook done</td>
<td>check digit:</td><td></td><td></td>
<td></td><td>mov</td><td>a, # l</td>
<td></td><td>clr</td><td>c</td>
<td></td><td>subb</td><td>a, time on2</td>
<td></td><td>jnc</td><td>offhook done</td>
<td></td><td>inc</td><td>pulse digit</td>
<td></td><td>setb</td><td>fdigit</td>
<td>offhook done:</td><td></td><td></td>
<td></td><td>mov</td><td>time onl, # 0</td>
<td></td><td>mov</td><td>time on2, # 0</td>
<td></td><td>mov</td><td>tlO, # 0</td>
<td></td><td>POP</td><td>acc</td>
<td></td><td>Pop</td><td>psw</td>
<td>offhook return:</td><td></td><td></td>
rare
PCA interrupt processing
<td colspan="3">$ ge</td>
<td>pca service:</td><td>% if (% intmask</td><td>not 0) then (</td>
<td></td><td>push</td><td>ie</td>
<td></td><td>mov</td><td>ie, #% intmask</td>
<td></td><td>call</td><td>masklabel</td>
<td></td><td>push</td><td>acc</td>
<td></td><td>push</td><td>psw</td>
<td></td><td>mov</td><td>a, ccapml</td>
<td></td><td>slave</td><td>a, ccapm2</td>
<td></td><td>anl</td><td>a, # 00000010b</td>
<td></td><td>jz</td><td>pca done</td>
<td>do pca:</td><td>mov</td><td>a, # 0</td>
<td>read table:</td><td>movc</td><td>a, @ a + dptr</td>
<td></td><td>c etc.</td><td>a, # 255, write</td>
<td></td><td>mov</td><td>dph, highpoint</td>
<td></td><td>mov</td><td>dpi, lowpoint</td>
<td></td><td>mov</td><td>a, # 0</td>
<td></td><td>jmp</td><td>read table</td>
<td>write tone:</td><td>mov</td><td>ccaplh, a</td>
<td></td><td>mov</td><td>ccap2h, a</td>
<td></td><td>inc</td><td>dptr</td>
<td>pca done:</td><td>clr</td><td>ccf 0</td>
<td></td><td>clr</td><td>ea</td>
<td></td><td>mov</td><td>ccapOl, # 0ffh</td>
<td></td><td>mov</td><td>a, ccapOh</td>
<td></td><td>inc</td><td>a</td>
<td></td><td>mov</td><td>ccapOh, a</td>
<td></td><td>setb</td><td>ea</td>
<td></td><td>pop</td><td>psw</td>
<td></td><td>pop</td><td>acc</td>
<td></td><td>pop</td><td>ie</td>
<td></td><td>ret</td><td></td>
<td colspan="3">masklabel:</td>
<td></td><td>rare ) else ( push</td><td>acc</td>
<td></td><td>push</td><td>psw</td>
<td></td><td>mov</td><td>a, ccapml</td>
<td></td><td>slave</td><td>a, ccapm2</td>
<td></td><td>anl</td><td>a, # 00000010b</td>
<td></td><td>jz</td><td>pca done</td>
<td colspan="3">do pca:</td>
<td></td><td>mov</td><td>a, # 0</td>
<td colspan="3">read table:</td>
<td></td><td>movc</td><td>a, @ a + dptr</td>
<td></td><td>cjne</td><td>a, # 255, write tone</td>
<td></td><td>mov</td><td>dph, highpoint</td>
<td></td><td>mov</td><td>dpi, lowpoint</td>
<td></td><td>mov</td><td>a, # 0</td>
<td></td><td>jmp</td><td>read table</td>
<td colspan="3">vrite tone:</td>
<td></td><td>mov</td><td>ccaplh, a</td>
<td></td><td>mov</td><td>ccap2h, a</td>
<td></td><td>inc</td><td>dptr</td>
<td colspan="3">pca done:</td>
<td></td><td>clr</td><td>ccf 0</td>
<td></td><td>clr</td><td>ea</td>
<td></td><td>mov</td><td>ccapOl, # 0f fh</td>
<td></td><td>mov</td><td>a, ccapOh</td>
<td></td><td>inc</td><td>a</td>
<td></td><td>mov</td><td>ccapOh, a</td>
<td></td><td>setb</td><td>ea</td>
$ noge pop psw pop acc rare) fi output / write support write_pxl:
<td>push</td><td>ie</td>
<td>clr</td><td>ea</td>
<td>clr</td><td>io select</td>
<td>push</td><td>acc</td>
<td>push</td><td> 0</td>
<td>setb</td><td>aO</td>
<td>clr</td><td>al</td>
<td>mov</td><td>a, pxl temp</td>
<td>anl</td><td>a, # 11110000b</td>
<td>mov</td><td>b, a</td>
<td>mov</td><td>a, px2 temp</td>
<td>anl</td><td>a, # 00001111b</td>
<td>slave</td><td>a, b</td>
<td>mov</td><td>r0, # 00h</td>
<td>movx</td><td>@ r0, a</td>
<td>setb</td><td>aO</td>
<td>setb</td><td>al</td>
<td>POP</td><td> 0</td>
<td>Pop</td><td>acc</td>
<td>pop</td><td>ie</td>
<td>ret</td><td></td>
<td>push</td><td>ie</td>
<td>clr</td><td>ea</td>
<td>clr</td><td>io select</td>
<td>push</td><td>acc</td>
<td>push</td><td> 0</td>
<td>clr</td><td>aO</td>
<td>clr</td><td>al</td>
<td>mov</td><td>r0, # 0h</td>
<td>movx</td><td>a, @ r0</td>
<td>anl</td><td>a, # 00001111b</td>
<td>anl</td><td>pxl temp, # 11110000b</td>
<td>slave</td><td>pxl temp, a</td>
<td>setb</td><td>aO</td>
<td>setb</td><td>al</td>
<td>Pop</td><td> 0</td>
<td>Pop</td><td>acc</td>
<td>Pop</td><td>ie</td>
<td>ret</td><td></td>
<td>read pxl strobe:</td><td></td>
<td>push</td><td>ie</td>
<td>clr</td><td>ea</td>
<td>clr</td><td>io select</td>
<td>push</td><td>acc</td>
<td>push</td><td> 0</td>
<td>clr</td><td>aO</td>
<td>clr</td><td>al</td>
<td>mov</td><td>r0, # 0h</td>
<td>movx</td><td>a, @ r0</td>
<td>mov</td><td>io status, a</td>
<td>setb</td><td>aO</td>
<td>setb</td><td>al</td>
<td>Pop</td><td> 0</td>
<td>pop</td><td>acc</td>
<td>Pop</td><td>ie</td>
<td>ret</td><td></td>
<td>write px2:</td><td></td>
<td>push</td><td>ie</td>
<td>clr</td><td>ea</td>
<td>clr</td><td>io select</td>
<td>push</td><td>acc</td>
<td>push</td><td> 0</td>
<td>setb</td><td>aO</td>
<td>clr</td><td>al</td>
<td>mov</td><td>a, pxl temp</td>
<td>anl</td><td>a, # 11110000b</td>
<td>mov</td><td>b, a</td>
<td>mov</td><td>a, px2 temp</td>
<td>anl</td><td>a, # 00001111b</td>
<td>slave</td><td>a, b</td>
<td>mov</td><td>r0, # 00h</td>
<td>ιηονχ</td><td>@ r0, a</td>
<td>setb</td><td>aO</td>
<td>setb</td><td>al</td>
<td>pop</td><td> 0</td>
<td>pop</td><td>acc</td>
<td>pop</td><td>ie</td>
<td>ret</td><td></td>
<td>write io c:</td><td></td>
<td>push</td><td>ie</td>
<td>clr</td><td>ea</td>
<td>clr</td><td>io select</td>
<td>push</td><td>acc</td>
<td>push</td><td> 0</td>
<td>clr</td><td>aO</td>
<td>setb</td><td>al</td>
<td>mov</td><td>a, lamps temp</td>
<td>anl</td><td>a, # 11110000b</td>
<td>rl</td><td>a</td>
<td>rl</td><td>a</td>
<td>rl</td><td>a</td>
<td>rl</td><td>a</td>
<td>mov</td><td>r0, # 00h</td>
<td>movx</td><td>@ r0, a</td>
setb setb
P ° P pop pop ret read_px2:
push clr clr push push clr setb mov movx anl anl ori setb setb pop pop pop ret ret_io_m_a:
push clr setb push push clr clr mov movx aO ai acc ie ie ea io_select acc aO ai r0, # 0h a, @ r0 a, # 11110000b px2_temp, # 0000111 lb px2_temp, a aO ai acc ie ie ea io_select acc aO ai rO , # 0h a, @ r0
<td>setb</td><td>aO</td>
<td>setb</td><td>al</td>
<td>clr</td><td>io select</td>
<td>POP</td><td> 0</td>
<td>pop</td><td>acc</td>
<td>pop</td><td>ie</td>
<td>ret</td><td></td>
write_io_m_b:
<td>push</td><td>ie</td>
<td>setb</td><td>io select</td>
<td>clr</td><td>ea</td>
<td>push</td><td>acc</td>
<td>push</td><td> 0</td>
<td>setb</td><td>aO</td>
<td>clr</td><td>al</td>
<td>mov</td><td>a, io mb</td>
<td>mov</td><td>r0, # 00h</td>
<td>movx</td><td>@ r0, a</td>
<td>setb</td><td>aO</td>
<td>setb</td><td>al</td>
<td>clr</td><td>io select</td>
<td>pop</td><td> 0</td>
<td>pop</td><td>acc</td>
<td>pop</td><td>ie</td>
<td>ret</td><td></td>
write io mc:
<td>push</td><td>ie</td>
<td>setb</td><td>io select</td>
<td>clr</td><td>ea</td>
<td>push</td><td>acc</td>
<td>push</td><td> 0</td>
<td>clr</td><td>aO</td>
<td>setb</td><td>al</td>
<td>mov</td><td>a, io mc</td>
<td>mov</td><td>r0, # 00h</td>
<td>movx</td><td>@ r0, a</td>
<td>setb</td><td>aO</td>
<td>setb</td><td>al</td>
<td>clr</td><td>io select</td>
<td>pop</td><td> 0</td>
<td>pop</td><td>acc</td>
<td>POP</td><td>ie</td>
<td>ret</td><td></td>
<td>reset io m:</td><td></td>
<td>push</td><td>ie</td>
<td>clr</td><td>ea</td>
<td>setb</td><td>io select</td>
<td>push</td><td>acc</td>
<td>push</td><td> 0</td>
<td>setb</td><td>aO</td>
<td>setb</td><td>al</td>
<td>mov</td><td>r0, # 0h</td>
<td>mov</td><td>a, # 10010000b</td>
<td>movx</td><td>@ r0, a</td>
<td>setb</td><td>aO</td>
<td>setb</td><td>al</td>
<td>clr</td><td>io select</td>
<td>pop</td><td> 0</td>
<td>pop</td><td>acc</td>
<td>pop</td><td>ie</td>
<td>ret</td><td></td>
<td>reset io:</td><td></td>
<td>push</td><td>ie</td>
<td>clr</td><td>ea</td>
<td>setb</td><td>io select</td>
<td>push</td><td>acc</td>
<td>push</td><td> 0</td>
<td>setb</td><td>aO</td>
<td>setb</td><td>al</td>
<td>mov</td><td>r0, # 0h</td>
; additional clr_msg:
clr_msgl:
savemg:
saveml:
exit:
clr_dsp:
<td>mov</td><td>a, # 10011000b</td>
<td>movx</td><td>@ r0, a</td>
<td>setb</td><td>aO</td>
<td>setb</td><td>al</td>
<td>clr</td><td>io select</td>
<td>P ° P</td><td> 0</td>
<td>pop</td><td>acc</td>
<td>pop</td><td>ie</td>
<td>ret</td><td></td>
programs
<td>push</td><td> 1</td>
<td>mov</td><td>rl, # msgbuf start</td>
<td>mov</td><td>msg ptr, rl</td>
<td>mov</td><td>@ rl, # 55h</td>
<td>inc</td><td>rl</td>
<td>cjne</td><td>rl, # msgbuf end, clr msgl</td>
<td>pop</td><td> 1</td>
<td>ret</td><td></td>
<td>push</td><td> 1</td>
<td>mov</td><td>rl, msg ptr</td>
<td>cjne</td><td>rl, # msgbuf end, saveml</td>
<td>mov</td><td>rl, # msgbuf start</td>
<td>mov</td><td>@rl, a</td>
<td>inc</td><td>rl</td>
<td>mov</td><td>msg ptr, rl</td>
<td>pop</td><td> 1</td>
<td>ret</td><td></td>
<td>push</td><td> 1</td>
mov mov clr_dspl:
mov inc cjne pop ret save_dsp:
push mov cjne mov save_dspl:
mov inc mov
POP save_dsp2:
; include (SPAIN.asm) ret $ nolist $ include (SPAIN4.asm) $ list rl, # dspbuf_start dsp_ptr, rl @rl, # 0ffh rl rl, # dspbuf_end, clr_dspl 1 rl, dsp_ptr rl, # dspbuf_end, save_ds pi rl , # dspbuf_start
2rl, a rl dsp_ptr, rl nop nop end;
19 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14 Sheet 15 Sheet 16 Sheet 17 Sheet 18 Sheet 19
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US4658096A | Cites | United States of America | Applicant |
| US4737975A | Cites | United States of America | Applicant |
53 members in 34 offices
Priority claims4
| Document | Office | Kind | Date |
|---|---|---|---|
| 3762793 | United States of America | A | |
| 3762793 | United States of America | A | |
| 08037627 | – | – | – |
| US19930037627 | – | – | – |
Members53
| Document | Office | Kind | |
|---|---|---|---|
| IL108809A0 | Israel | A0 | |
| IL108809D0 | Israel | D0 | |
| UY23744A1 | Uruguay | A1 | |
| CA2154789A1 | Canada | A1 | |
| WO9422255A1 | World Intellectual Property Organization (WIPO) | A1 | |
| AU6443194A | Australia | A | |
| ZA941880B | South Africa | B | |
| ECSP941059A | Ecuador | A | |
| LTIP1901A | Lithuania | A | |
| PE12695A1 | Peru | A1 | |
| LT3323BThis record | Lithuania | B | |
| FI954509A | Finland | A | |
| FI954509A0 | Finland | A0 | |
| NO953791D0 | Norway | D0 | |
| NO953791L | Norway | L | |
| MD940289A | Republic of Moldova | A | |
| HU9502752D0 | Hungary | D0 | |
| BR9405970A | Brazil | A | |
| PL310775A1 | Poland | A1 | |
| EP0691058A1 | European Patent Office (EPO) | A1 | |
| ES2080708T1 | Spain | T1 | |
| CN1119898A | China | A | |
| EE9400437A | Estonia | A | |
| HUT73125A | Hungary | A | |
| SI9420026A | Slovenia | A | |
| EP0691058A4 | European Patent Office (EPO) | A4 | |
| NZ263661A | New Zealand | A | |
| LV11510A | Latvia | A | |
| TR28486A | Türkiye | A | |
| BG100027A | Bulgaria | A | |
| JPH08510872A | Japan | A | |
| AU674406B2 | Australia | B2 | |
| IL108809A | Israel | A | |
| CZ240895A3 | Czechia | A3 | |
| OA10229A | African Intellectual Property Organization (OAPI) | A | |
| EP0691058B1 | European Patent Office (EPO) | B1 | |
| AT162036T | Austria | T | |
| ATE162036T1 | Austria | T1 | |
| DE69407773D1 | Germany | D1 | |
| PL173533B1 | Poland | B1 | |
| ES2080708T3 | Spain | T3 | |
| SK118995A3 | Slovakia | A3 | |
| DE69407773T2 | Germany | T2 | |
| MY110488A | Malaysia | A | |
| PL174142B1 | Poland | B1 | |
| GR3026552T3 | Greece | T3 | |
| HK1002642A | Hong Kong, China | A | |
| HK1002642A1 | Hong Kong, China | A1 | |
| DK0691058T3 | Denmark | T3 | |
| CA2154789C | Canada | C | |
| HU216556B | Hungary | B | |
| CZ287151B6 | Czechia | B6 | |
| CN1064808C | China | C |
1 legal event, as the office reported them to INPADOC
Events
| Event | Code | |
|---|---|---|
| Lapsed patentsLapsedMM9A | MM9A |
Numbers
- Publication, DOCDB
- 3323
- Publication, EPODOC
- LT3323
- Application
- 1901
- Application, DOCDB
- IP1901
- Application, EPODOC
- LTIP1901
Titles
- English
- APPARATUS AND METHOD FOR TESTING TRANSCEIVER SYSTEMS AND TRANSCEIVER SYSTEM
Classification
- CPC, 2
- H04W24/00
- H04W84/14
- IPC, 9
- H04M3 22
- H04B7 26
- H04B17 00
- H04M1 00
- H04M1 24
- H04M3 08
- H04M11 00
- H04W24 00
- H04W84 14
