Radio transmit-receive unit for cellular communication systems
2 claims: 1 independent, 1 dependent
- 1Zastrzeżenia patentowe 1. Radiowe urządzenie nadawczo-odbiorcze w systemie łączności komórkowej zawierające nadajnik-odbiornik radiowy, blok interfejsu i urządzenie telekomunikacyjne dołączone do nadajnika-odbiornika radiowego, przy czym blok interfejsu łączy operacyjnie urządzenie telekomunikacyjne z nadajnikiem-odbiornikiem radiowym dla telefonicznych połączeń wychodzących albo połączeń odbieranych przez nadajnik-odbiornik radiowy, znamienne tym, że zawiera urządzenie testujące (10) dla kontrolowania i określania właściwego działania nadajnika-odbiornika radiowego i bloku interfejsu (14), przekaźnik (RELYl) do dołączania urządzenia testującego (10) do bloku interfejsu (14) w miejsce urządzenia telekomunikacyjnego, przy czym urządzenie testujące (10) zawiera układy (SSR1, Q4, U4) generowania funkcji wykonywanych przez urządzenie telekomunikacyjne do wygenerowania w bloku interfejsu (14) odpowiedzi dla określenia, czy blok interfejsu (14) działa poprawnie.
- 2Urządzenie według zastrz. 1, znamienne tym, że urządzenie testujące (10) zawiera układy generowania połączenia telefonicznego wychodzącego przez blok interfejsu (14) i radiowy nadajnik-odbiornik, czyli przez radiowy system telefoniczny, z którym ten radiowy nadajnik-odbiornik jest związany, i na powrót do tego nadajnika-odbiornika, przy czym urządzenie testujące (10) zawiera następnie układ (U6) dla wykrywania sygnału zajętości przez nadajnik-odbiornik w odpowiedzi na to połączenie telefoniczne, przy czym układy (SSR1, Q4, U4) generowania funkcji, w tym generowania wychodzącego połączenia telefonicznego, wywołują numer aparatu telefonicznego, który został przydzielony temu nadajnikowi-odbiornikowi, do którego jest operacyjnie dołączony.
Independent claims2
2,117 paragraphs in 84 sections, as filed
The present invention relates to a radio transceiver in a cellular communication system.
Known from U.S. Patent Nos. 4,658,096 and 4,737,975, cellular interface systems in which the interface block connects a standard telephone set, facsimile, modem or other telecommunications equipment with a transceiver cellular device, the interface block enabling normal operation of the telecommunications device by a radio transceiver. The interface block can also convert DTMF or pulse type dial signals into a digital format, transmitted to the radio transceiver, so that the dialed number can be used to call the number by the radio system via the transceiver.
The use of diagnostic and testing equipment for entire cell systems is also known. It is also known to use a self-testing brave block. The latter is described in U.S. Patent No. 5,016,269, which describes an emergency cell phone box. This patent describes the self-diagnostics performed by the junction box itself. The connection box provides self-diagnostics and periodically reports the status of the checked position to the central station via the cellular network. This patent specification describes a cellular apparatus and transceiver as well as an auto-diagnostic system assigned to it for checking the system and sending reports back to a central station. However, this patent does not cover the monitoring and self-diagnostic functions of the DTMF transducer, e.g. as used in the above-mentioned US Patent Nos. 4,658,096 and 4,737,975.
These known solutions generally relate to wireless personal communication telecommunication systems, with a plurality of intelligent base stations and intelligent mobile handset terminals, each of which has a predetermined radio cell coverage area, and in particular refers to personal digital telecommunications cellular systems (PCS) with full ISDN interface, enabling direct connection and commutation of PCS connection traffic through the ISDN interface and a public switched telephone network or any other switched network, with the personal telecommunications system having telephone and data capabilities, video (or any combination thereof) and set up two-way fully duplex inbound and outbound connections, and at the same time it is completely operational and fully compatible with any selected type of modulation. In addition, the intercellular takeover protocol implements distributed logic, implemented in the form of software in intelligent portable handsets, intelligent base stations and public switched telephone network or any switched network equipped with a control database of PCS services.
The increasing availability of mobile and mobile telecommunications frees professional and residential subscribers from the physical limitations of a fully wired telecommunications network. In particular, cellular telecommunications systems, together with notification and other complementary services, ensure full mobility of telecommunications services. Significant technical progress in the field of mobile and portable equipment, as well as new methods, such as digital transmission in wireless telecommunications, have significantly expanded the number and types of wireless telecommunications services using radio spectrum available to the user. These forward-looking services include, but are not limited to, extended forms of mobile telephony services, extended digital wireless telephony services, support for portable fax devices, and wireless local area network support, and can be used by existing public switched networks or other alternative wired local networks, such as systems cable television. As such, digital personal telecommunications systems can exist independently or in cooperation with local wired networks, bridging the gaps in existing telecommunications systems, also creating new markets, many of which are yet to be shaped. The appearance of PCS will have a major impact on the future development and configuration of all telecommunications systems
174 142 by significantly improving their flexibility and functionality. Accordingly, PCS service providers will have the opportunity to enrich and service existing and new domestic markets in an economic and responsible manner.
The requirements for personal telecommunications systems change rapidly as demand for instant telecommunications increases, as a result of increased mobility of subscribers. One of the advantages of PCS is that it can use a single telecommunications device to enrich the possibilities of reaching each person, anytime, anywhere. PCS gives the user the opportunity to increase mobility and flexibility, because this approach solves the basic problem of being in constant communication with the subscriber. PCS by radio will provide subscribers with connectivity without losing an important connection, as well as reducing the time and expense on return calls. PCS combine the functionality of the technology and infrastructure of radio devices and the Public Switched Telephone PSTN Network and allow matching the possibility of supporting fully duplex connections (two-way incoming and outgoing connections) and interception between radio cells ((enabling users to move freely from one radio cell to the second without interrupting the conversation). It is therefore important to remember that there is a constantly increasing demand for PCS services and technology for numerous, sometimes incompatible applications, namely wireless private indoor exchanges, smaller and lighter portable mobile phones, portable fax machines, multi-channel wireless phones and additional services aimed at is' enabling the contact details of individual users (not station data). The current radio equipment and related services currently offered (i.e. cordless telephones, radio messaging and cellular communication) are not able to completely satisfy the demand for these new types of PCS services. For example, cordless phones are used inside and around the home or office, work on a very small number of channels (e.g. ten) and in densities, and their use is limited to the immediate proximity of the assigned base station. Radio notification services are only one-way and have limited capabilities. Cellular and specialized mobile radiocommunication services are not able to meet the full range of expected demand for PCS. Over time, PCS will have standardized equipment with common modules ensuring greater reliability of cooperating equipment, which will also be less sensitive to transient interference from external sources, will be equipped with the possibility of automatic registration of calls, automatic call forwarding, voicemail, the ability to receive faxes, the ability to change location install, remote data transfer, increased scope of privacy protection / caller identification / qualified services, increasing battery life and common protocols. In order to best accomplish this task, the use of digital PCS becomes a necessity. Wireless PCS can eliminate the need for wired buildings for telecommunications. Generally speaking, PCS will provide additional capabilities for telecommunications equipment. Digital PCS
174 142 will ensure the improvement of telecommunications equipment, telecommunications systems and structures.
The essence of a radio transceiver in a cellular communication system, according to the invention, comprising a radio transceiver, an interface block and a telecommunications device connected to the radio transceiver, the interface block operatively connecting the telecommunications device with the radio transceiver for outgoing telephone calls, or calls received by a radio transceiver, it is that includes a testing device for controlling and determining the proper operation of the radio transceiver and interface block, a relay for attaching the testing device to the interface block in place of a telecommunications device, the testing device comprising circuits for generating functions performed by the telecommunications device to generate a response in the interface block determine if the interface block is working properly.
Preferably, according to the invention, the testing device comprises circuits for generating an outgoing telephone connection through the interface block and a radio transceiver: i.e. via a radio telephone system with which this radio transceiver is associated, and back to this transceiver, wherein the testing device then includes a system for detecting the busy signal by the transceiver in response to this telephone connection, wherein the function generation systems, including the generation of an outgoing telephone connection, call the number of the telephone apparatus which has been assigned to the transceiver to which it is operatively connected.
An advantage of the solution of the present invention is that it can be used in any cell type system, for example in a cell system or in cell-like systems, for example ISDN or other personal telecommunication systems, with an adapter block or interface similar to mobile, used to process DTMF dial or pulse dial signals into a digital format for delivery to a cell-like transceiver connected to a cell-like system.
The solution according to the invention, intended for use in cellular interface blocks and systems known in the prior art, can be used with other radio transceivers, e.g. IMTS, where a wireless connection between the base station and main stations is used, whose transmitters are connected to the blocks interface devices that enable connection and normal operation of a telecommunications type device, e.g. a landline telephone, facsimile, modem, etc., with a radio transceiver. The interface block performs a number of functions depending on its intended use. For example, in specialized alarm systems, where the radio transceiver only performs outgoing calls, the interface block does not need to generate ringing, busy signal generation, etc., transmitted to the telecommunications device. In contrast, in systems where only connections need to be made6
174 142, the interface block need not convert the DTMF dial tone or pulse type into a digital format.
According to this solution, software is used that has access to the microprocessor of the cell interface block or the radio interface block of the transceiver system, whereby the software can be started either manually or automatically to activate the testing device. The software diagnoses the proper functioning of all software and hardware systems. You can check each of the individual items. For example, from the interface block the DTMF converter can be checked, the interface from four wires to a two-wire connection, the busy tone software can be checked, as well as other features characterizing the operation of the interface. In addition, the transceiver, battery, and even any other interface parameter can be checked. The maintenance system has the ability to make a connection via the cellular network to a given telephone number of the base station, whereby the central station can then either send a return tone or dial the current interface system number to retrieve the busy signal. This can be considered a certain test. It is also possible to send a different telephone number by the cellular system to call the same or a different central station, so that a precise reverse tone (1000 Hz) can be sent, and the software can compare this 100 Hz tone with its own configuration to determine whether there is a line connection and the cell system is functioning properly. The solution is particularly useful because it allows the end subscriber to activate the phone in case the subscriber is convinced that he is having trouble with this phone. This test informs the telephone company about the occurrence or not of the occurrence of an irregularity in the cellular system exchange or about a problem in the end subscriber base unit.
The solution uses two different circuits. The first is a teleconservation circuit, and the second is a passing circuit. The teleconservation circuit generates a multiple test that involves making a phone call to a specific number. The system reports the test results under this specific number. The system can connect when dialing its own number to ensure, by receiving a busy signal, that the block reception and transmission are working properly. These test teams can be initiated by the subscriber by pressing the button in the block. After pressing the button, the LED near the button starts flashing continuously, identifying the test being performed. If the LED remains on at the end of the test, it indicates that there is a problem with this block. This test takes no more than 40 seconds in total. On the other hand, if the LED stops flashing and turns off, it indicates that the test was successful and that the block is OK with respect to the position checked in the test. In the additional option, it is possible to conduct a test from an external number, in which the transceiver works correctly by receiving the phone number.
The operation of the second circuit is that it uses a pass signal from the cellular system and generates appropriate pass pulses for a standard home telephone or payphone.
174 142
The device interprets the incoming signal from the cellular system and does not require local tariffing. It works in a similar way as in the generation of second tones ?. It can be used in any cellular system capable of sending pass signals.
The subject of the invention is shown in an embodiment of the drawing, in which Figs. 1A and IB show a flowchart of the self-testing process, Fig. 2 is a flowchart of the hang-up self-test subroutine, Fig. 3 is a flowchart of the self-test dial tone generation subroutine, Fig. 4 is a network Figures 5A, 5B and 5C of the DTMF signal generation test sub-program of the self-testing routine of the ring generation, Fig. 5A, 5B and 5C 6 is a flowchart of the self-testing subroutine process of the ringing response process, Figures 7A and 7B are a flowchart of the call test subroutine that checks the correctness of the call detection and response to an incoming call, Figures 8A and 8B - the flowchart of the error code subroutine, Fig. 9 flowchart of the reset subroutine, Fig. 10 - block diagram of the testing device, and Fig. 11, 12, 13 and 14 show circuit diagrams for implementing the simulation of tested events.
The call of the operational test sequence is made by pressing the self-diagnosis button and then the control of the interface block 14 is transferred to the main self-diagnostic subprogram of the testing device 10 for self-testing.
Figures 1A and IB show the test subroutine, i.e. the main self-diagnostic subroutine. A number of connections are made with various test procedures. Error flags are checked after each subroutine. If any abnormality occurs, the test sequence stops. The status is then coded and the result is presented to the user via four LEDs as described below.
As shown in Figure 1A, in Step 1, the operational test sequence begins with the initialization of variables and flags. In step 2, the program calls the hanging test subroutine. In the hanging test subprogram, the user's telephone is disconnected from the search and calling line, in place of the interface block, a testing device is attached, described in detail below. In step 3, you check whether an error is detected in the hanging test subprogram. If an error is detected, the test sequence is suspended and the program proceeds to step 14 in Fig. 1B. However, if no error is detected, the program calls the dial tone test subroutine in step 4. In step 5, the dial tone error occurs. If an error is detected, the test sequence is suspended and the program proceeds to step 14 of Fig. 1B. However, if no error is detected, the program calls the next test - the DTMF test subroutine in step 6. The program is continued in step 7 of FIG. 1B, where the result of the DTMF subroutine is checked. If an error is found, the test sequence is suspended and the program proceeds to step 14. If no error is detected, the program then calls the next test, the subroutine test subroutine in step 8. In step 9, a check is made for a ringing error. If an error is detected, the test sequence is stopped and the program goes to
174 142 step 14. On the other hand, if no error is detected, the program triggers the next test, the ring response test subroutine in step 10. In step 11, a check is made for a ringing error. If an error is detected, the test sequence is stopped and the program goes to step 14. If no error is detected, the program goes to the connection setup subprogram in step 12. In step 13, you check for a development error. If an error is detected, the test sequence is stopped and the program goes to step 14. If no error is detected, the program goes to the Fin_Self subroutine in step 15. If an error is detected during the execution of the subprogram, the program goes to step 14 At step 14, the program calls the subroutine connection error. Eventually, the sequence ends after deleting all variables and flags in step 15, returning control to the telephone device and performing normal operation of the interface block 14.
The following explains the individual test programs mentioned in Figs. 2 to 9 and describes in detail.
The suspension test subprogram shown in Fig. 2 (step 2 of Fig. 1A) begins with the initialization of variables and flags in step 16. In step 17, the program clears all LED input signals. In step 18, the user's telephone is disconnected from the search and calling line of the interface block .14, while in step 19 the testing device 10 is switched on in place of the telephone. Step 20 introduces a time delay ensuring a sufficiently long response time, sufficient for this connection. At step 21, the testing device simulates and generates hang-up. Step 22 provides a time delay sufficient to take the handset off the hook. In step 23, the program checks the condition of the fork of the interface block 14, which is now attached to the testing device 10. In step 24, the suspension is checked. If no hangup is detected, the program proceeds to step 25, where the Error_Flag flag is set and the Main_Flag_Error flag is set. However, if no error is detected, the program continues until step 23, where the dial tone is unlocked, as shown in Fig. 3. Finally, the subprogram ends and the program returns to the main subprogram of Figures 1A and 1B.
The dial test subroutine shown in Fig. 3 begins with the initialization of variables and flags in step 27. Step 28 provides the time delay needed for proper tone dialing. In step 28, the dial tone is tested. If the dial tone is incorrect, the program proceeds to step 30, where the Error_Flag flag is set and the MAIN_FLAG_ERROR flag is set to 3. However, if no error is detected, the program proceeds to step 31, from where the program returns to step 29, testing the dial tone over at least 711 ms. If no error has occurred and 711 ms have elapsed, the subprogram ends and the program returns to the main subprogram of Figures 1A and 1B.
The DTMF test subroutine shown in FIG. 4, which checks the correctness of the conversion to digital data using interface block 14, begins in step 32 blocking the dial tone from the previous test subroutine. Step 33 sets the first DTMF tone to
174 142
0. In step 34, the testing device 10 sends a DTMF tone corresponding to this value. Step 35 implements a time delay providing sufficient time to complete the inclusion. In step 36, the DTMF tone is blocked. Step 37 implements a time delay enabling the interface to detect DTMF tone pulses. In step 38, the interface block 14 reads the tone. In step 39, the received DTMF tone is checked. If the DTMF tone is not the same as the received DTMF tone, or if the DTMF tone is not received, the program proceeds to step 40, where the Error_Flag flag is set and the MAIN_FLAG_ERROR flag is set to 4. However, if the DTMF tones are identical, the program goes to step 41 and the next DTMF digit is selected. At step 42, the program checks whether all DTMF tones have been tested. Otherwise, the program returns to testing the next digit. Finally, after testing all DTMF tones, the subprogram ends and returns to the main subprogram of Figures 1A and 1B.
Figures 5A and 5B show the subroutine of the ringing test. This subroutine tests the timing of two ringing pulses generated by the ringing systems of the interface block 14. As can be seen in Fig. 5A, the subroutine starts with the initialization of variables and flags in step 43. In step 44, the testing device 10 generates the hang-up. Step 45 is a time delay enabling the interface block 14 to detect the hang up. In step 46, the interface block 14 is set to make sure that an inbound connection is being made. Thus, interface block 14 generates its calling sequence. The purpose of steps 47 to 53 is to verify the ringing within the next 2 s and not detecting the removal of the handset from the hook. In step 47, the time block is deleted. Step 48 checks the photo of the handset and if a photo of the handset is detected, the test stops and the program goes to step 49 in fig. 5C to indicate an error. On the other hand, when the receiver hangs up, the program proceeds to step 51, in which the testing device 10 checks the ringtone activity. In step 52 checking if the ringing starts. If the ringing has started, the program proceeds to step 54 shown in Fig. 5B. However, if the ringtone has not ringed yet, the program checks the time block in step 53. If this time is less than 2 s, the program returns in a loop to step 48 until ringing begins. Conversely, if the 2 s time has elapsed, the test is aborted and the program proceeds to step 49 according to Fig. 5C to signal an error as shown in Fig. 5B. Step 54 brings a time delay. The purpose of steps 55 to 59 is to verify that the bell rings for at least one period of 1.3 seconds and that no pick-up is detected. In step 55 the time block is deleted. In step 56 suspension is checked. If pick-up is detected, the test is stopped and the program proceeds to step 49 of Fig. 5C to signal an error. Conversely, if hanging off is detected, the program proceeds to step 57, in which the testing device 10 checks for bell activity. In step 58, you check whether the ringing has been stopped. If the ringing has been stopped, the program checks the time block in step 59. If the time block works less than 1.3 s, the program returns in a loop to step 56 until ringing stops. Nato10
174 142 cities, if the time has expired, the test is stopped and the program proceeds to step 49 of Fig. 5C. The purpose of steps 60 to 62 is to verify that the bell rings for no more than 2.5 s. In step 60, the testing device 10 checks for bell activity. In step 61 check whether the ringing has stopped. If so, the program proceeds to step 63 of Fig. 5C. However, if the ringing has not stopped, the program checks the time block in step 62. If the time block shows less than 2.5 seconds, the program will loop back to step 60 until the ring stops. In contrast, if the time has expired, the test is stopped and the program jumps to step 49 of Fig. 5C.
The purpose of steps 63 to 65 in Fig. 5C is to verify that no pick-up is detected during a period of 2 s. In step 63, the time block is deleted. In step 64, hang up the handset. If pick-up is detected, the test is stopped and the program goes to step 49 to signal an error. If no pick-up is detected, the program checks the time block, in step 65. If the time block shows less than 2 seconds, the program returns to step 64 until ringing begins. However, if the time has run out, the program proceeds to step 66, in which it checks how many cycles of this subroutine the ringing was checked. If the call was checked only once, the program proceeds to step 67, where the Ring_Second flag is set. The program then returns to step 47 to check the ringing for the second time. However, if the ringing was checked twice, the test is stopped and the program returns to the main subprogram. If an error was detected during any part of the read test subroutine, the program proceeds to step 49. In step 49, the incoming connection is cleared and the calling sequence is terminated. Then the program goes to step 50, where the Error_Flag flag is set and the Main_Flag_Error flag is set to 5. Then the subprogram ends and the program returns to the main subprogram.
Figure 6 shows the sub-program of the ringing response test. This subroutine checks the response of the interface block 14 when a pick-up is reported to it in the ringing cycle when the telephone answers to an incoming call. The purpose of steps 68 and 69 is to verify that a ringing will begin in the next 2 seconds and that no pick-up is detected. In step 68 the time block is deleted. In step 69 hanging up the handset is checked. If the handset hang-up is detected, the test is stopped and the program goes to step 73. If the hang-off is detected, the program continues with the active bell. In step 71, the ringing check is checked. If the ringing has started, the program proceeds to step 74. However, if the ringtone has not yet ringed, then in step 72 the program checks the time block. If the time block shows less than 2 seconds, the program returns in a loop to step 65, waiting for the ring to start. However, if the time above 2 s has elapsed, the test is stopped, and the program goes to step 73. In step 74, the testing device 10 generates a handset pick up signal. Step 75 is a time delay enabling the interface block 14 to detect the pick up of the handset. In kro174 142 toward 76, interface block 14 checks the condition of the forks :. If no pick-up is detected in step 77, the test stops and the program goes to step 73. However, if the interface block 14 detects a pick-up, the program goes to step 78. If an error is detected during any part of the ringing test subroutine, the program jumps to step 73, where the Error_Flag flag is set and the Main_Flag_Error flag is set to 6. Then the program proceeds to step 78. In step 78, the incoming call is cleared and the interface block 14 suspends the calling sequence. Then the subprogram ends and the program moves to the main subprogram.
Figures 7A and 7B show the subroutine of the ringing test. This subroutine checks the cellular transceiver attached to the interface block 14 by checking at the beginning of the power supply and then generating a call to its own telephone number. In Fig. 7A, step 79 checks if the power of the transceiver is turned on. If not, the Mainl_Flag_Error flag in step 81 is set to 1, and then the program proceeds to step 93 in Fig. 7B. On the other hand, if the power is on ;, the program proceeds to step 92, in which the interface block 14 requests the telephone number from the transceiver and retrieves it. Step 83 introduces a time delay that allows the transceiver to respond. In step 84, the interface block 14 generates a call to its own telephone number. Step 85 is a time delay allowing connection between the cellular network and the transceiver. In step 86, the interface block 14 detects the transceiver status. In step 87, the connection status takes place. If this is not a working state, then the Mainl_Flag_Error flag in step 88 is set to 4, and then the program goes to step 93 in Fig. 7B. However, if the transceiver is in the working state?, Then the program goes to step 99 of Fig. 7B.
As shown in Fig. 7B, the testing device 10 checks the busy tone in step 89. If a busy tone is detected in step 90, the program proceeds to step 93 to indicate that everything is working correctly. However, if no busy tone is detected, the program continues to step 91, where the time block is checked. If the time block shows less than 18.2 s, the program returns to step 86. This provides more time for the mobile network to send back busy responses. However, if the time has already elapsed, the program proceeds to step 93, where the Mainl_Flag_Error flag is set to 3. In step 93, interface block 14 sends the end of connection signal to the transceiver. Then the testing device 10 signals that the handset is hung up to the interface block 14, in step 94. The program ends and returns to the main subroutine.
The task of part of the subroutine of Figures 8A and 8B is to generate the ERROR CODE code based on the previously described error flags in such a way that the results can then be output via LEDs. As shown in Fig. 8A, the subroutine begins checking the value of one of the two error flags, the Main_Flag_Error flag. In step 95, it is checked if the Main_Flag_Error is 1, i.e. it responds
174 142
Hook Slic Error. If this, then EIROOR_CODE is set to 1 in step 96, and then the program returns to the main subprogram. However, in the case of a negative result, the program proceeds to step 67. In step 67, checks are made whether Main_Flag_Error is equal to 2, i.e. it corresponds to a calling error when hanging up. If so, ERROR_CODE is set to 1 in step 66, and then the program returns to the main subprogram). However, in the case of a negative result, the program proceeds to step 97. In step 67 checks whether the Main_Flag_Error is equal to 2, i.e. corresponds to a calling error - hanging up. If so, ERROR_CODE is set to 2 in step 68, and then the program returns to the main subprogram. However, if the result is negative, the program proceeds to step 66. In step 66 it is checked) whether Main_Flag_Error is equal to 3, i.e. it corresponds to a dialing error. If so, ERROR_CODE is set to 3 in step 100, and then the program returns to the main subprogram). However, in the case of a negative result, the program proceeds to step 101. In step 101, check is made whether Main_Flag_Error is equal to 4, i.e. it corresponds to a DTMF tone error. If so, the ERROR_CODE code is set to 4 in step 102, and then the program returns to the subroutine. In the case of a negative result, the program proceeds to step 103. In step 103, it checks whether Main_Flag_Error is equal to 5 , i.e. it responds with a call detection error. If so, the ERROR_CODE code is set to 5 in step 104, then the program returns to the main subprogram. However, in the case of a negative result, the program proceeds to step 105. In step 105 the check is carried out) whether the Main_Flae_Errgr is equal to 6, i.e. it responds to the answer to the call error. If so, the ERROR_CODE code is set to 6 in step 106, and then the program returns to the main subprogram. However, in the case of a negative result, the program proceeds to step 107 according to Fig. 8B. In fig. 8B, the subroutine starts checking the value of the second error flag, Mainl_Flag_Error. In step 107, it is checked if Maial_Flag_Err-r is equal to 1, i.e. it corresponds to the power error of the radio part. If so, the ERROR_CODE code is set to 7 in step 108, and then the program returns to the main subprogram. However, if the result is negative, the program proceeds to step 106. In step 106, it is checked if Maial_Flag_Error is equal to 2, i.e. it corresponds to a calling error. If so, the ERROR_CODE code is set to 8 in step 110, and then the program returns to the main subprogram. However, in the case of a negative result, the program proceeds to step 111. In step 111, it checks whether Mainl_Flag_Error is equal to 3, i.e. it corresponds to a busy tone error. If so, the ERROR_CODE code is set to 6 in step 112, then the program returns to the main subprogram. However, in the case of a negative result, the program proceeds to step 113. In step 113, it is checked if Maial_Flag_Error is equal to 4, i.e. it corresponds to a device operating error. If so, the ERROR_CODE code is set to 10 in step 114, then the program returns to the main subprogram. In the case of a negative result, the program proceeds to step 115. In step 115, check is made whether Mainl_Flag_Error is
174 142 is 5, i.e. it corresponds to a 1000 Hz error. If so, the ERROR_CODE code is set to 11 in step 116 and returns to the main subprogram. However, in case of a negative result, the program returns to the main subroutine.
Figure 9 shows the FIN_SELF test subroutine whose purpose is to reset the interface block 14 to ensure its normal functioning and to indicate the end of the test by lighting the LED four times. The subprogram begins with step 117, in which the testing device 10 generates a handset hang-up signal. In step 118 all variables and error flags are deleted. In step 119 all LEDs are turned off. Step 120 brings a time delay. In step 121 all LEDs are turned on. Step 122 brings a time delay. Step 123 allows the loop to be closed to step 119 so that the LEDs are turned on four times. Finally, all LEDs are turned off in step 124, and then the program returns to the main subprogram of Figures 1A and 1B.
The solution according to the invention is described below, with reference to the following figures, description of individual circuits used to perform the self-test described above, and documentation of the program for performing the operations detailed in the description.
Figure 10 shows a block diagram of the testing device 10. The testing device 10 is installed in the cell adapter system and is intended to initiate the process of automatic testing of the telephone function when the telephone subscriber activates the button or during automatic testing at intervals of about 12 hours, in accordance with the networks of activities of Figs. 1A-9, as described in detail above. The final result of this self-test will be transmitted to the user via an indicator in the form of LEDs, installed on the right wall of the cellular adapter, or similar to a cellular one. Device 10 has the ability to report test results to a free service center. This notification can be done by automatically connecting to a predefined service center number. This function requires that the service center is equipped with the system and program elements necessary to establish communication and to interpret received messages. The self-diagnostic test checks the correct operation of the cellular adapter, including its elements such as: basic interface block systems, cables between the radio part and the interface, transmission line, antenna, cellular transceiver, billing system and power source. The test device 10 is configured to call the same number assigned to the adapter transceiver when performing the test. The self-diagnostic test is programmed to detect a busy signal or congestion signal on the line as an indication that the connection cannot be made and that the transmission system is working properly.
The testing device 10 is intended for use in the cellular adapter block to check that the latter is working properly, without having to send technical staff to the place where the equipment is installed. The testing device 10 of the teleconservation system is powered directly from the cell interface block 14. The testing device 10 is not an autonomous system. Its operation depends on the control signals it receives from the supervision system,
174 142 cell interface located in the block 14. The supervisor compares the test results with the operating system parameters. The autodiagnostic system of test device 10 performs the following tests ?: answer errors (incorrect number) - test performed in two different ways, ringing voltage - generates a call and detects the presence of ringing voltage generated by the interface block 14, answer to the call - checks that the ringing stops after answering it., tone dialing - checks the occurrence dial tone, MFTD operation - checks if interface block 14 correctly detects the tones received by the multi-frequency tone detector (MJFTD), transceiver test, receive circuit test, transmit circuit test, pass system test - checks the frequency characteristics of pulses generated at 12 kHz, transceiver power supply, efficiency of the power supply system. These tests are detailed above in the flowchart description of Figs. 1A-9.
The testing device 10 is connected to the conventional cell interface block card 14 via a 20-pin plug socket. The testing subroutine is initiated via a manual switch installed on the right side of the adapter box. After finding any abnormality in the operation of the telephone, such as the inability to hear the dial tone after picking up the receiver, the subscriber approaches the adapter box and presses the appropriately marked test button. The testing device 10 interrupts the connection of the subscriber's apparatus with the cell interface block 14 and carries out the self-diagnostic test sequence described above. The testing device 10 is programmed in such a way that it automatically initiates the testing program at intervals of about 12 hours from the moment the cell interface block 14 is switched on. With the automatic test initialization, the sequence of the outgoing test connection is not generated. After further development, you can ensure that the automatic test generation function is initiated from a remote site. This teleconservation function involves the modification of the operating software of the interface block 14 and additionally requires the development of new circuits and software of the testing device 10. After initiating the self-testing program, the orange indicator light (LED) flashes, indicating to the subscriber that testing is underway. Between successive tests there are pauses in flashing signaling lasting about 1 s. A full test lasts approximately 40 s. After the test, its result is shown by the remaining indicator light on. In this case, the problem may be related to the corresponding wired connection or the use of a telephone apparatus attached to the cell interface block 14. When the indicator is continuously lit, the cell interface block 14 returns to its operating conditions. In the event of damage to the cell interface block 14, this is determined on the basis of tests, and the light indicator remains clearly off ?. This indicates to the user that the damage has occurred in the cell adapter. Upon completion of the testing procedure, the cell interface block 14 returns to its normal operating conditions? Regardless of whether damage has been detected. The user can continue to use the adapter even with restrictions due to the detected damage.
174 142
The LED indicator in the cell interface block 14 can be used to identify the fault detected. This display helps the service technician who has access to the inside of the box to check the probable cause of the damage. The combination of on and off LEDs can identify the faults originally detected in the test. This combination remains lit during 60 s after the test. A list of possible fault codes indicated by the LEDs on the cell interface block 14 is provided below.
If damage is detected as a result of the test, a connection to the teleconservation center may be initiated. After establishing communication, the detected damage is reported. This teleconservation function allows you to maintain a database for each block. If the test was started manually, using the button, the full result of the completed test, regardless of the detected damage, will be reported to the teleconservation center.
<td>See below</td><td>list</td><td colspan="3">codes displayed on</td><td colspan="2">diode array</td><td>LED:</td>
<td>4.10 ERROR CODE</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
<td>Error type</td><td></td><td>L</td><td></td><td>L</td><td>L</td><td></td><td>L</td>
<td></td><td>ED 5</td><td></td><td>ED 4</td><td>ED 3</td><td></td><td>ED 2</td><td></td>
<td>No damage</td><td></td><td>IN</td><td></td><td>IN</td><td>IN</td><td></td><td>IN</td>
<td></td><td>Y</td><td></td><td>Y</td><td>Y</td><td></td><td>Y</td><td></td>
<td></td><td> —</td><td></td><td> —</td><td> —</td><td></td><td> —</td><td></td>
<td>Loop error</td><td></td><td>IN</td><td></td><td>in</td><td>IN</td><td></td><td>IN</td>
<td></td><td>Y_</td><td></td><td>Y_</td><td>Y_</td><td></td><td></td><td></td>
<td>Loop error</td><td></td><td>IN</td><td></td><td>in</td><td>IN</td><td></td><td>IN</td>
<td></td><td>Y_</td><td></td><td>Y_</td><td></td><td></td><td>Y_</td><td></td>
<td>Dial tone</td><td></td><td>in</td><td></td><td>in</td><td>in</td><td></td><td>in</td>
<td></td><td>Y_</td><td></td><td>Y_</td><td></td><td></td><td></td><td></td>
<td>MFTD detector</td><td></td><td>in</td><td></td><td>in</td><td>in</td><td></td><td>in</td>
Y_ _
Call detector W
Y_ _
Reply to the call W
Y_ _
Transmitter power supply
Y_ _
Transmitter (connection) W _ Y
Receiver (busy) W
Y
IN
Tone detection at 12 kHz
Y
IN
IN
IN
In υ
IN
Y
IN
Y
IN
IN
Y in
abovementioned
Y_ in
f
abovementioned
abovementioned
174 142
Main power supply
NO SERVICE
Transmission circuit
Not specified
Not specified
Y_
WW
Y
Website
WWW _ _ Y
WWW _ Y_ _
Website
YY
The self-testing sequence is as follows. The first action carried out by the testing device 10 is to disconnect the subscriber's installation. Then the conditions of answering the subscriber's phone are simulated. Under these conditions, the correct loop detection is checked by generating a dial tone. Then the correct generation of the dial tone is checked in the minimum frequency and level range. Then the MFTD multi-frequency tone detector test begins. It consists of an autodiagnostic card generating a full sequence of 16 MFTD tones, sending it to the conventional cell interface block 14 in the cell adapter and checking the correct reception of these tones. Then a test is carried out to check the correct functioning of the ring generator. Ringing current is generated while checking its frequency and level within a specified minimum range. Then the conditions of the telephone response, i.e. the answer to the call, are simulated again to check the operation of the ringing system, which should be deactivated before the telephone answers. The next test detects the ability of the counting system to generate pulses with a frequency of 12 kHz, in the minimum frequency and level range, for cellular phone adapters. The pulses generated by the scoring system card are detected by the precision pulse detector in the testing device 10 in a known manner. For cellular system adapters that do not have a pass module, in this case the J1.3 connector of the cell interface block 14 is set to open. A jumper must be used for those blocks that have a pass module installed.
The next tests check the operation of the cellular transceiver. First, the power to the transceiver is checked. This test is performed by detecting the +12 V DC voltage received from the transceiver's data connector. Then the transceiver is checked, i.e. in conditions of cellular access services characterized by the lack of NO SERVICE signal. The presence of the NO SERVICE signal will be recognized as a fault. Such conditions may be caused by a faulty detection, and not simply damage to the cellular receiver unit. Then a connection is generated via the cellular network with the subscriber's number. In this way, the operation of the transceiver is checked by detecting the busy signal from the system, because self-calling is taking place. If you encounter congestion in the network, the transceiver will be informed about the conditions of PATH ENGAGED. The transceiver then generates a CONCESS (busy) tone. The presence of this tone is interpreted as the correct operation of the transceiver block, as is the busy signal. This tone is interpreted as the result of the proper operation of the transceiver, in the same way as the busy signal. This test can only be carried out if the subprogram is initiated manually, for example by pressing a button. The test will not be carried out in blocks that initiate the process automatically. Then the power supply voltage is checked. If the DC voltage is less than 14.5 V, a damaged power source will be detected.
In Figure 10, the testing device 10 is connected to a standard cellular adapter or interface block 14. The testing device 10 is constructed of diagnostic systems used to perform the self-diagnostic tests described above. These systems are: the busy signal detector 16, used during the call acceptance test performed by the testing device 10 during the self-testing described above, with the callback shown in Fig. 7A, a 12,000 Hz detector system 18 used for passing tests that checks the frequency parameters of the pulses generated at 12 kHz, an MFTD generator system 20 that generates DTMF signals processed by the cellular interface block 14, as described above with reference to FIG. 4, a ringing signal detector circuit 22, used to detect the ringing signal generated by the cellular interface block 14, during the ringing test routine and ringing response described above with reference to Figures 5A and 6, the dial tone detector system 24 that checks the correctness of the generation a dialing tone through a cellular or similar cellular interface block 14 as described above with reference to Figs. 3, a voltage detector system 28 for checking the power supply of the transceiver and the entire device, and teleconstruction control block 30, which is a control block and which is also used for making connections and reporting to the central reporting station, self-test results. The actual configuration of each of the systems mentioned above in Figures 11, 12, 13 and 14 is described in more detail below.
Figures 11, 12, 13 and 14 show diagrams of systems for performing simulations of the tests described above throughout the entire self-testing process. Fig. 11 shows a testing device 10.
The part, schematically indicated in FIG. 11 by the letter A, is the place where the test device 10 is connected to the search and ringing line of the conventional cellular interface block. The RELY1 relay is used to disconnect the user's telephone from the cell interface block 14 during the maintenance function test. Instead, the testing device 10 is connected to a search and calling line to perform these tests. When
174 The test unlock signal is high, the Q3 transistor enters saturation and then powers the RELY1 relay by connecting the teleconservation system to the search and calling line.
The simplified part of the system marked with the letter B in Fig. 11 is the subscriber's spade switch, whereby the subscriber's handset can be hung on the board in two possible ways. J1 is a two-terminal connector of a normal P1 telephone socket.
The simplified part of the system marked with the letter C in Fig. 11 is the audio interface system used as the interface between the search and calling line and the audio line. Tl means telephone matching transformer. Its task is to maintain similar parameters of alternating and direct current for the telephone while realizing the reception and transmission of audio signals. Zener diodes Dl and D2 are used to eliminate all signals with voltages greater than ± 4.5 V. An SSR1 optoisolator is also installed, which, in combination with the Q4 transistor, ensures that the search and calling lines are closed. When the loop connection signal is set to a high state, i.e. the Q4 transistor enters saturation, which powers the SSR1 optoisolator, closes the circuit and performs the function of removing the handset.
The simplified part of the circuit marked with the letter D in Fig. 11 is a ring detection circuit containing two integrated circuits: the U2 ring detection circuit and the U9 optoisolator ensuring the correct CMOS output level. An input signal is supplied to the U2 ring detection circuit when the ring voltage is present on the search and ringing lines. This signal is transformed by the U9 optoisolator system, which then generates an active low signal on the I / O line.
The simplified part of the system marked with the letter E in Fig. 11 is a current loop detection system comprising another U17 optoisolator ensuring detection of the loop current. When this test is performed (the test unlock signal in Part A is high) and the handset is lifted (the loop connection signal in Part C is in a high state), the search and ringing lines are shorted providing the handset lift current. This current is transformed by the U17 optoisolator to an active low level on the I / O line.
The simplified part of the circuit marked with the letter F in Fig. 11 is a set of input / output audio circuits built from 1 integrated operational amplifier Ul. The main task of this circuit is to isolate and amplify the input audio signals. The output of this circuit is an audio input. Also in this case, the DTMF input signal generated by the testing device 10 is forwarded for searching and calling. This DTMF signal appears at the tone output.
The part marked schematically in Fig. 12 with the letter G is a DTMF signal generator, which is built of the U4 circuit, generating the DTMF signal and 1 integrated output amplifier Ul. In order to generate the DTMF signal, a four-bit code value is first given to the input terminals marked DTMF1-OUT, DTMF2-OUT, DTMF3-OlUr, DTMF4-OUT of the U4 system. Then, by maintaining this four-bit value, it causes that
174 The enable signal on the input terminal marked D3MF-OUT changes the level from low to high, thus enabling signal generation. The acoustic frequency is output to the tone output after signal amplification by the Ul. To turn off the tone, the signal at the D3MF-OOT terminal is brought back to low.
The part marked schematically in Fig. 12 with the letter H is a U8 integrated circuit for 1 / O ports. This integrated circuit with input and output ports is used by the microcontroller of the cellular interface block 14 to read the input data and to control all output signals of the testing device 10. The J4 connector is a switch for the automatic periodic test providing a choice of 12 or 24 hours. J5 is used to enable automatic response to a call.
The parts marked diagrammatically in Figure 12 with the letters I.1 and I.2 are power connectors, data communication connectors, and control connectors. They include a J2 plug head with 2 x 10 contact pins used for power supply as well as for sending and receiving I / O port data. They also contain a J3 head with four contact pins used to signal the test status and an external button for manually activating the test.
The part marked schematically in Fig. 12 with the letter J is a power stabilizer and contains a U7, 5-watt unregulated positive voltage stabilizer system, providing the voltage necessary for digital circuits.
The testing device 10 includes six individual tone detectors, used to test the audio path, frequency and timing of the ROH tone duration, dialing, occupancy and crowding. Each of the tone detectors consists of an operational amplifier and a separate tone detector. The operational amplifier input is connected to the audio input line. The detection frequency is set by means of a resistor and a capacitor, which are connected between the contact pins and ground. When the tone programmed by the resistor and capacitor circuit corresponds to a valid tone, the tone detector output signal changes from low to high.
Part K in Fig. 12 is a dial signal detector system. When a valid dial tone occurs at the input of the U3 dial signal detection circuit, the dial detection line is set to a low state.
Part L of Fig. 13 is a busy signal detector system. When a valid busy signal is present at the input of the U6 detection circuit, the busy detection line is set to low.
Part M of Fig. 13 is a 400 Hz tone detector system. When a valid 400 Hz tone occurs at the U14 input, the 400 Hz tone detection line is set to a low state.
Part N of Fig. 14 is a 800 Hz tone detector system. When a valid 800 Hz tone is present at the U13 input, the 800 Hz tone detection line is set to a low state.
Part O is a 1020 Hz tone detector system. When a valid 1020 Hz tone occurs at the input of the U16 IC, the 1020 Hz tone detection line is set to a low state.
174 142
Part P is a 12 kHz tone detector system. When a valid 12 kHz tone occurs at the input of the U12, the kHz tone detection line is set to a low state.
Part Q of Fig. 13 is the DTMF signal detector circuit, consisting of the U13 DTMF signal detection circuit and 1 U1 integrated input amplifier. When a valid DTMF signal is present at the input terminal, the DTMF-STROBE line is set to low and the U13 system detects the DTMF signal<sup>1</sup>. After the signal is decoded, the detected four-bit value is output to the terminals marked DTMF0-IN, DTMF1-IN, DTMF2-IN, DTMF4-IN. Then the DSMF-STROBE line is set to high again.
Part R is a variable component monitor, including a U10 system, for detecting a voltage drop below 4.5 V. Resistors R17 and R33 are a voltage divider that increases the detection voltage of the U10 system from 4.5 V to 13 V. The system works on the assumption that when the supply voltage from the power supply comes, 13 V occurs at the input of the test device. In the event of an AC power failure, the voltage drops to a battery backup level that does not exceed 13 V. This circuit detects the loss and sets the detection line of the variable signal to low.
Below is a printout of the source program for carrying out the invention.
174 142 $ nopi nosb db noge nomo nopr ep $ nolist $ include (reg252.pdf) $ list • * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * k -k -kr; Maxjack, aut. Alexis V. Torres for Telular International,
Inc.
; (C) Copyright Telular International, Inc. 1993-1995; Telephone / cellular interface:
/ Main program with operating table vol
; 92.11.29 maint.asm;
• * * * * * * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * r * * * * * * * * * * * * * * * * * * * * * * ★ ★ z
/ Universal terrestrial telephone key codes
<td>zero equ 0ah</td><td>; code</td><td>the key [0]</td>
<td>star equ Obh</td><td>/ code</td><td>the [*] key</td>
<td>pound equ</td><td>Oh</td><td>/ key code [#]</td>
<td>/ Indicators for</td><td colspan="2">HS displays and TRU messages</td>
<td>dspbuf start</td><td>E <u</td><td>80h / Display buffer start 16B</td>
<td>LCD</td><td></td><td></td>
<td>dspbuf end</td><td>E <q</td><td>90h / End of display / LCD buffer</td>
<td>msgbuf start</td><td>eCU</td><td>90h / Start of message buffer; ; TRU</td>
<td> )</td><td></td><td></td>
<td>msgbuf end</td><td>equ</td><td>90h / End of Oomuwkleóś RRU buffer</td>
<td>main flag equ</td><td>Ob0h</td><td>; Use address to check flags</td>
174 142
<td colspan="3">; direct</td>
<td colspan="2">; hook slic 1 ; dial 2 ; dtmf 3 ; ring test 4 ; ans test 5 main flag error eęqu 01bh ; hook slic error 1</td><td>hang up error</td>
<td>; hook ring_error</td><td> 2</td><td>hang up error</td>
<td>; dial error</td><td> 3</td><td>; dial tone error</td>
<td>; dtmf error</td><td> 4</td><td>; dtmf error</td>
<td>; ring_test_error</td><td> 5</td><td>; calling error</td>
<td>; ans_test_error</td><td> 6</td><td>; error responding to</td>
<td colspan="2">ringing main1 flag equ 0b1h</td><td>;as above</td>
<td>; power radio</td><td> 1</td><td>; power failure - radio</td>
<td>; call test</td><td> 2</td><td>;connection error</td>
<td>; call tone</td><td> 3</td><td>; conversation error</td>
<td>main1 flag error equ</td><td>Oblh</td><td>;as above</td>
<td>; power radio_error</td><td> 1</td><td>;reserve</td>
<td>; call test</td><td> 2</td><td>; backup connection error</td>
<td>; call_tone</td><td> 3</td><td>backup call error</td>
<td>; inuse</td><td> 4</td><td>; work error</td>
<td>; 1000Hz</td><td> 5</td><td>1000 Hz error</td>
<td>error code equ</td><td>0b4h</td><td>; final LED signaling</td>
<td>; hook slic error</td><td> 1</td><td>; hangup</td>
<td>; hook ring_error</td><td> 2</td><td>; hangup</td>
<td>; dial error</td><td> 3</td><td>;selection</td>
<td>; dtmf error</td><td> 4</td><td>; dtmf</td>
<td>; ring test error</td><td> 5</td><td>;ringing</td>
174 142 / ans_test_error / power_radio_error; call_test; call_tone; inuse / lOOOhz; answer to ringing; power-radio / connection / talk / work
1000Hz
<td>cero</td><td>equ</td><td>OOH</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>Oh</td>
cuatro equ 02h
<td>cinco</td><td>equ</td><td>Noah</td><td></td>
<td>seis</td><td>equ</td><td>06h</td><td></td>
<td>siete</td><td>equ</td><td>OEH</td><td></td>
<td>ocho</td><td>equ</td><td>Olhão</td><td></td>
<td>nueve</td><td>equ</td><td>09h</td><td></td>
<td colspan="2">estrella</td><td>equ</td><td>Odh</td>
<td>libra</td><td></td><td>equ</td><td>o3h</td>
. ************************************************* ********* from
Internal definitions of Ram variables ********************************************** ************* / Registers occupy bytes 00h-07h (bank reg. 0)
<td>rO</td><td>memory indicator</td>
<td colspan="2">kspander I / O)</td>
<td>rl</td><td>memory indicator</td>
<td>r2</td><td>number of digits</td>
<td>r3</td><td>delay loop</td>
<td>r4</td><td>delay loop</td>
(also the address pointer for TRU data for the bus time block for the bus time block
174 142
<td>; r5</td><td>used in</td>
<td>r6</td><td>excavation gained in</td>
<td>; r7</td><td>used in</td>
rohtone time block send_time rohtone time block; Variable memory locations
<td>rttde offl</td><td>DDAA</td><td>10h</td><td>/ measures</td><td>time</td>
<td>bear</td><td>headphones</td><td></td><td></td><td></td>
<td>/ time off2</td><td>ddat</td><td>Lui</td><td>/ measures</td><td>time</td>
<td>bear</td><td>headphones</td><td></td><td></td><td></td>
<td>; aCmetOff3</td><td>ddat</td><td>uh</td><td>/ measures</td><td>time</td>
<td>bear</td><td>headphones</td><td></td><td></td><td></td>
<td>/ tirne on1</td><td>ddat</td><td>1? 3t</td><td>// ^ θγζυ</td><td>czss</td>
hang up
<td>/ time on2</td><td>dćłtaći</td><td>11h</td><td>/ • measures content</td>
<td>hang up</td><td></td><td></td><td></td>
<td>puiaitaigia</td><td>ddat</td><td>11h</td><td>/ digit value</td>
<td colspan="2">pulsed</td><td></td><td></td>
<td>in use off timer</td><td>date</td><td>uh</td><td>/ ^ true ,, or</td>
the lamp lights up after starting
<td>ringttimer</td><td>ddat</td><td>11h</td><td>/ time block</td>
<td>checks the time</td><td>between the bells</td><td></td><td></td>
<td></td><td>d ^ t ^ t</td><td>Uli</td><td>/ time block</td>
<td>generates 20 Hz</td><td>for the bell</td><td></td><td></td>
<td>bell aimer2</td><td>d? ^ a ^^</td><td>11h</td><td>/ time block for</td>
ringtone gndstart_timerl ddta 1ah no connection for 1 s gnóstart — timerk daaa 1bh; highpoint ddaa 1 tone; lowpoint dc ^ a 1dh tone / releases the GS line if; as above / saves dph for tables; saves dpi for tables
174 142
<td>highpoint</td><td>date</td><td>35h</td><td>; stores</td><td>dph</td><td>for</td><td>arrays</td>
<td>tone</td><td></td><td></td><td></td><td></td><td></td><td></td>
<td>LOWPOINT</td><td>date</td><td>3 6h</td><td>/ writes</td><td>dpi</td><td>for</td><td>arrays</td>
<td>tone</td><td></td><td></td><td></td><td></td><td></td><td></td>
<td>min test</td><td>date</td><td>1Eh</td><td></td><td></td><td></td><td></td>
<td>; free</td><td>date</td><td>1Fh</td><td></td><td></td><td></td><td></td>
tf
; RAM area 20h-29h is reserved for use by the main module; or as data in the form of bytes, or individual bits
<td>flags</td><td>DATE</td><td>20h</td><td>; this byte contains the following</td>
<td>flags addressable fhook</td><td>bits bit</td><td>00h</td><td>in individual form ; Flag set by the photo</td>
<td>fsend</td><td>bi t</td><td>00 ii</td><td>headphones, deleted after ; processing ; Broadcasting flag</td>
<td>fflash</td><td>bi t</td><td>022l</td><td>; Flash flag "</td>
<td>fhang</td><td>bb-t</td><td>o3h</td><td>; Flag suspended</td>
<td>ftime</td><td>and bb-:</td><td>00h</td><td>'40s time block flag</td>
<td>fdigit</td><td>bii</td><td>05h</td><td>; Impulse entry flag</td>
<td>fonhook</td><td>b: Lt</td><td>06h</td><td>digital 'Flag hung from the border in</td>
<td>fdtmin</td><td>bli</td><td>00h</td><td>700 ms after putting away, resetting 'next pick up ; Input flag dtmf</td>
<td>inds</td><td>DATE</td><td>21h</td><td>; Indicators - this byte contains</td>
174 142 following bits:
<td>roam</td><td>bit</td><td>08h</td><td>; movement indicator roam</td>
<td>noserv</td><td>bit</td><td>09h</td><td>; No service indicator</td>
<td>lock</td><td>bit</td><td>Noah</td><td>; Lock indicator</td>
<td>RDIS</td><td>bit</td><td>0Bh</td><td>, 'Delete digit display</td>
<td>horn</td><td>bit</td><td>0Ch</td><td>; Beep indicator</td>
<td>f init</td><td>bit</td><td>0Dh</td><td>; Set only by TRU! (1 = initialization done</td>
<td>f start</td><td>bit</td><td>0Eh</td><td>; 1 = interruption of postponement blocked for 500 ms</td>
<td>test enable</td><td>bit</td><td>0Fh</td><td>self-test after the first one removed headphones due to ; on vibration of contacts</td>
<td>indasc</td><td>date</td><td>22h</td><td>; Switch on control indicators and audio, ; this byte contains the following bits:</td>
<td>inuse</td><td>bit</td><td>10h</td><td>/ Work indicator</td>
<td>ap1</td><td>bit</td><td>11h</td><td>; audio path</td>
<td>ap2</td><td>bit</td><td>12h</td><td>; audio path</td>
<td>test_end</td><td>bit</td><td>13h</td><td></td>
<td>; not_error</td><td>bit</td><td>14h</td><td>; no error in self-testing</td>
<td>return ring</td><td>bit</td><td>15h</td><td></td>
<td>error flag</td><td>bit</td><td>16h</td><td>self-test error</td>
<td>called Ring_Second</td><td>bit</td><td>17h</td><td></td>
<td>io_status</td><td>DATE</td><td>24</td><td>; bits 18h-lfh</td>
<td>strobe</td><td>bit</td><td>1ch</td><td></td>
<td>flags2</td><td>DATE</td><td>24</td><td>; bits 20h-27h</td>
<td>fdig_ready</td><td>bit</td><td>20h</td><td>; digit readiness flag</td>
174 142
<td>fanswer</td><td>bit</td><td>21h</td><td>/ ringtone response flag</td>
<td>fsnndOimnr</td><td>bit</td><td>22h</td><td>/ flag to send after 4 s</td>
<td colspan="2">f inusngffOimine</td><td>bit</td><td>23h / flag indicating action</td>
<td>funlgckOimnr</td><td>bit</td><td>24</td><td>time block at / checking shutdown work lights / flag to be unlocked after 4 s</td>
<td>idtone</td><td>bit</td><td>25h</td><td>/ flag indicating DT is enabled</td>
<td>idecoder busy</td><td>bit</td><td>26h</td><td>/ flag indicating that the decoder</td>
<td>dtmf is not</td><td colspan="3">yet deleted</td>
<td>ibellsound</td><td>bit</td><td>27h</td><td>jflaga: L ^ 1 ^ a ringtone</td>
<td>px1 temp DATA</td><td>25h</td><td></td><td>/ I / O buffer for pxl-Zawinra port</td>
<td>bits: mi0nlq1</td><td>bit</td><td>28h</td><td>/ from the dtmf decoder</td>
<td>mi0nlq2</td><td>bit</td><td>26h</td><td>/ from the dtmf decoder</td>
<td>Mitel</td><td>bit</td><td>2Ah</td><td>/ from the dtmf decoder</td>
<td>mi0nlq4</td><td>bit</td><td>2BH</td><td>/ from the dtmf decoder</td>
<td>power hold</td><td>bit</td><td>2ch</td><td>/ maintains power after</td>
<td colspan="2">power failure to</td><td colspan="2">TRU off</td>
<td>sparel</td><td>bit</td><td>2Dh</td><td>/ spare I / O pin</td>
<td>spare2</td><td>bit</td><td>2EH</td><td>/ spare I / O pin</td>
<td>nO-ring</td><td>bit</td><td>2Fh</td><td>/ spare I / O pin</td>
<td>px2 temp DATA</td><td>26h</td><td></td><td>/ I / O buffer for port px2 (30h-37h)</td>
<td>lggpswiOch</td><td>bit</td><td>30h</td><td>/ low closes the loop</td>
<td>ring</td><td>bit</td><td>31h</td><td>/ low indicates ringtone ps</td>
<td>mute</td><td>bit</td><td>32h</td><td>/ mute radio reception</td>
<td>roh boost</td><td>bit</td><td>33h</td><td>/ increases tone gain</td>
<td>roh sw sendtimer</td><td>bit</td><td>34h</td><td>/ inclusion of the sphincter gives</td>
<td colspan="2">optional broadcasting</td><td>! 4 p</td><td></td>
<td>sw dial</td><td>bit</td><td>35n</td><td>/ sphincter on = differentials</td>
dial tone for roam / off means module
174 142 operating module
<td>sw gndstart basic</td><td>bit</td><td>36h</td><td>/ IN = loop start, OUT = start</td>
<td>sw date</td><td>bit</td><td>37h</td><td>/ sphincter on prevents from being turned off enables / transferring data digits to TRU after posting (for / enable function celi.switch)</td>
<td>lamps temp</td><td>DATE</td><td>27h</td><td>/ contains bits:</td>
<td>free</td><td>bit</td><td>38h</td><td>/ do not necessarily apply lamps - remember current status / indicators</td>
<td>free</td><td>bit</td><td>39h</td><td>r</td>
<td>free</td><td>bit</td><td>3AH</td><td>r</td>
<td>free</td><td>bit</td><td>3BH</td><td>r</td>
<td>roamiamp</td><td>bit</td><td>3ch</td><td>t</td>
<td>noservlamp</td><td>bit</td><td>3DH</td><td>t</td>
<td>locklamp</td><td>bit</td><td>3EH</td><td>t</td>
<td>inuselamp</td><td>bit</td><td>3Fh</td><td>t</td>
<td>flags3</td><td>DATE</td><td>28h</td><td>/ other flags - byte includes the following individually / address bits</td>
<td>frohtimeout</td><td>bit</td><td>40h</td><td>/ set when rohtone</td>
he performed for 1 minute
<td>fcall</td><td>bit</td><td>41h</td><td>/ positioned by the entrant</td>
<td>combination,</td><td colspan="2">deleted at</td><td>his absence</td>
<td>f one sec</td><td>bit</td><td>42h</td><td>/ positioned on the photo</td>
headphones for 1 s so: to avoid / cause remote hanging if the handset is removed / immediately after hanging up
174 142
<td>roh_on</td><td>bit</td><td>43h</td><td>; enables and disables rohtone</td>
<td>fspec1</td><td>bit</td><td>44h</td><td>; flag to be used with TRU data processed in ; update_displays every 71.1 ms, calls spec2</td>
<td>fspec2</td><td>bit</td><td>45h</td><td>; flag to be used with TRU data processed in blocks temporary hangings and photos headphones every 277.8 us / calls spec2</td>
<td>fremote hup</td><td>bit</td><td>46h</td><td>; indicates remote pulse synchronizing delay of 700 ms</td>
<td>flocktimer seconds</td><td>bit</td><td>47h</td><td>; block flag after 2</td>
. ************************************************* ********** / Current tasks TRU. ********************************** ***********************
f_cmds DATA 29h; optional own TRU task numbers; TRU tasks are called from the main program in the TRU module.
f; Task 1:
; a) Checking the power failure for NEC 3700 (see nae01); b) Sending the change of the handset hang up switch status to OKI and sending the initial CLR to; Motorola (see oee02 and mae04); c) Calling the rdbus subroutine to read the indicator status in blocks TRU Autovidox (see tae01 and tbe01); d) Monitoring of silent alarm mode in Autovidox CTX30
174 142
3100Α and setting mode / silent alarm if needed (see tb ^!
/ /Exercise 2:
/ / a) Double commutation with NAM for NEC 3700 (see nae01) /
/Exercise 3:
^ Checking the power failure for NEC 37 00 (see nae01) / b) Sending the change of the handset switch off to OKI and Motorola (see mae04 and oee02) / c) Calling the rdbus subroutine to read the status of the indicator in TRU Autovidox blocks (see tae01 / i tbe01) / d) Monitoring the silent alarm mode in the Autovidox CTX3100A and setting the mode / silent alarm if needed (see tbe01) / Task 4:
/ a) Calling the rdbus subroutine to read the status of indicators in the Aueovwdox TRU blocks (see tae01 and tbe01) / b) Monitoring the silent alarm mode in Autovidox CTX3100a and setting the mode / silent alarm if needed (see tbe01) »9999'9999r999r99999<sup>,</sup>999r99t999f99999999f99999r99999f99999r999r9'999 ': 999'99
/ RAM area 2ah to 2dh is reserved for use by TRU modules either as DATA bytes or / individual BIT variables.
.***********************************************************
<td>/ TRU-bitsl</td><td>date</td><td>2Ah</td><td>// oit5Oh. down</td><td>57h</td>
<td>/ TRR_bwts2</td><td>date</td><td>2BH</td><td>/ bit58h to</td><td>5fh</td>
<td>/ TRU bits3</td><td>date</td><td>2ch</td><td>// ob ^ and ^^ (^ ln to</td><td>67h</td>
<td>/ TRU_bits4</td><td>date</td><td>2chi</td><td>/ Łiit68łi to</td><td>6fh</td>
<td>/Used to</td><td>table</td><td>service!</td><td>Check</td><td>trio subroutine!</td>
<td>o m_b</td><td>date</td><td>2 eh</td>
<td>#tdO</td><td>bit</td><td>7 oh</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_test</td><td>bit</td><td>75h</td>
<td>#enable_tone</td><td>bit</td><td>7 6h</td>
<td>#enable_tone</td><td>in bit</td><td>77h</td>
<td>and bw</td><td>date</td><td>2Fh</td>
<td>#ext_led</td><td>bit</td><td>78h</td>
<td colspan="2">#enable_special bit</td><td>79h</td>
<td>#enable_busy</td><td>bit</td><td>7Ah</td>
<td>#enable 16h</td><td>bit</td><td>7BH</td>
<td>#conn loop</td><td>bit</td><td>7ch</td>
/ bit 78h to 7fh / bit 7Oh to 77h f
/ Rest of internal RAM variables (address byte) · **************************************** ******* + *********** looptest_timer date 30h looptest_timer2 data display_delay date 32h dsp_ptr date 33h
LCD handset msg_ptr data 34h
TRU / delay test loop up to 2 ms after / loops short for 31h / SLIC response / delay display update to / further 71.1 ms / display buffer indicator / message buffer indicator ************ ***************************************** are reserved for TRU modules up to
174 142 use only as / bytes DATE (not BITABLE). ************************************* **********************
<td>/ TRUthyteO</td><td>date</td><td># 38h</td>
<td>/ TRUtbyaei</td><td>date</td><td>3HH #</td>
<td>/ ^ Y ^ TRU</td><td>date</td><td>3AH #</td>
<td>/ TRU byte</td><td>date</td><td>3 BH #</td>
<td>, TRUtbyte4</td><td>date</td><td>3ch #</td>
<td>/ TRUtbyte5</td><td>date</td><td>3DH #</td>
<td>/ TRUtbyte6</td><td>date</td><td># 3EH</td>
<td>/ TRU bytel</td><td>date</td><td>3Fh #</td>
/ Stack daemuei bytes 4hh
5fh f
r / The selected digits are stored in bytes from 60h to 7fh in a total of 32, / including the SND code used as the terminator. '*' * - k'k '*' k - ** '*' k '*' k ' * k'k 'k'k' * 'k'k' * '*' * k · **************************** *****: *: * vol
<td>prefix</td><td>date</td><td>60h</td><td>: valid only [0] and [1] if</td>
<td>no, FFh</td><td></td><td></td><td></td>
<td>first aigCa</td><td>date</td><td>61h</td><td>/ First three locations in digit buffer</td>
<td>aiconataigCt</td><td>date</td><td>62h</td><td>/ (emergency numbers, no directional,</td>
<td>thirataigca</td><td>date</td><td>63h</td><td>/ beginning of a 7-digit number e.t.c)</td>
.***********************************************************
174 142 'Port bit definitions, port1 and port2, 8051 (common to all blocks)
<td># TO-aelect</td><td>bb t</td><td>P1.2;</td><td></td>
<td>#dt pwm</td><td>bit</td><td>P1.4</td><td>'Pwm tone dialing</td>
<td>#twenty Sz pwm</td><td>bbt</td><td>P1.5</td><td>'Pwm 20 Hz for ringtone</td>
<td>#; Power-mltl-</td><td>bii</td><td>P1.6</td><td>'Input, 0 = no power</td>
<td># 1c_</td><td>whip</td><td>P3.2</td><td>'' Checking for electricity</td>
loop, (Extlnt0)
<td>#ring_ground_</td><td>bbt</td><td>P3.4</td><td>'Input: indicates</td><td>land on</td>
<td colspan="3">ringing wire</td><td></td><td></td>
<td>#; Strobe</td><td>bk</td><td>P3.5</td><td>'Entry: readiness</td><td>digits from</td>
<td>DTEM decoder</td><td></td><td></td><td></td><td></td>
<td># a0</td><td>bbt</td><td>P1.6</td><td></td><td></td>
<td># a1</td><td>bbi</td><td>P3.5</td><td></td><td></td>
'Entry point at power up and interrupt routine vectors:
<td>org jmp</td><td>OOOOSo ini t</td><td>'Reset vector</td>
<td>org</td><td>OOO3ło</td><td>'' ExtIntO support vector</td>
<td>jmp</td><td>ofhook_edge</td><td>'Comfort, forest selection</td>
impulse db OffL, O7; fL, Q7<sup>r</sup>fL, Ofi, 'Filling for Eprom and org 777bS emulator' Vector (tlO ^ yc block Timer0
174 142 jmp onhook_timer / To track the hanging time of db db headphones Offh, Offh, Offh, Offh
<td>org</td><td>0013h / Eetlnti service vector</td>
<td>jmp</td><td>intl_service / Usually used for reading</td>
<td>data from</td><td>TRU</td>
<td>db</td><td>0ffh, 0ffh, 0ffh, 0ffh /</td>
<td>org</td><td>001bh / Vector (th0) svc block Timer1</td>
<td><sup>j</sup>mp</td><td>offhook timer / For periodic block interruptions</td>
temporary db 0ffh, 0ffh, 0ffh, 0ffh /
<td>org</td><td>0023h / Serial port svc vector</td>
<td>jmp</td><td>ser port_device / Usually used for reading</td>
<td>data from</td><td>TRU</td>
<td>db</td><td>0ffh, 0ffh, 0ffh, 0ffh /</td>
<td>org</td><td>002bh / Vector svc block Timer2 / ext2</td>
<td>jmp</td><td>timer2_device /</td>
<td>db</td><td>0ffh, 0ffh, 0ffh, 0ffh /</td>
<td>org</td><td>0033h / Vector PCA service</td>
<td><sup>j</sup>mp</td><td>pca service / For pulse modulators</td>
<td>db</td><td>"(C) Copyright Codecom </td>
<td>db</td><td> 1992</td>
$ include (main.msg) $ include (tru.msg)
174 142 init:
% set (intmask, 0) / Usually two interrupt levels unless intimask in TRU; section (TAE01.ASM: Audiovox) set to a non-zero value;
<td rowspan="2">mov clr clr mov mov</td><td rowspan="2">sp # 3Fh / RS0 / RSL / a, # 0 / r0, # 0 /</td><td colspan="2">/ Stack starts from 40h</td>
<td>/ Select the register bank ;As above , • Filling the RAM with zeros ; Point to the first RAM</td><td> 0</td>
<td>fill_ram:</td><td></td><td></td><td></td>
<td>mov</td><td>@ R0, a;</td><td>; Individual locations</td><td></td>
<td>inc</td><td>r0 /</td><td>; Indicate next location</td><td></td>
<td>CJNE</td><td>r0, # 0, fill ram</td><td>/ End of RAM filling</td><td>(FFh)</td>
<td>clr</td><td>pl.2 /</td><td></td><td></td>
<td>mov</td><td>rl, # laii_flag</td><td></td><td></td>
<td>mov</td><td>@ R1, # 0</td><td>; Load the next flag</td><td></td>
<td>inc</td><td>r1</td><td></td><td></td>
<td>mov</td><td>@ R1, # 0</td><td></td><td></td>
<td>inc</td><td>r1</td><td></td><td></td>
<td>mov</td><td>@ Rl, # 0</td><td></td><td></td>
<td>mov</td><td>@ Rl, # 0</td><td></td><td></td>
<td>inches</td><td>reset_io_m</td><td>; reset the control panel</td><td></td>
<td>mov</td><td>and ib, # 0</td><td>; block the module</td><td></td>
<td>inches</td><td>write io ib</td><td></td><td></td>
<td>mov</td><td>io_m_c, # 0</td><td>; block the module</td><td></td>
<td>inches</td><td>write io mc</td><td></td><td></td>
cali port reset_io mov s2, # 0f8h; reset i / o extended to # 13; set p2 to control exssaiderel
174 142 mov px1_0emp, 01111111H / initialize together with pgwnr_hgld ca11 write_pxl mov px2_0nmp, # 11110011b / initialize: loopsw open, no calling
<td colspan="3">inch write px2</td>
<td>CA11</td><td>read px2</td><td>/ load option keys</td>
<td>mov</td><td colspan="2">0mo0,000000011l / TiimerC is double, 0imer1 can be a generator / a timing</td>
<td>mov</td><td>ip 01001010b</td><td>/ • set priorities for interruptions.</td>
<td>mov</td><td>ie, # 11001011b ·</td><td>/ • oe & louuj PCA. Umro,. ExOO, Tmr / Ext2, SnrPort, Extl / by ίniajρlizaaję TRU</td>
<td>setb</td><td>I00</td><td>/ ExtInt0 is triggered by the edge</td>
<td>setb</td><td>t1</td><td>/ Extlntl is triggered by a slope</td>
<td>mov</td><td>cmod, # 8Oh</td><td>/ disable in itoane luPoow ^,</td>
<td colspan="3">clock / 12</td>
<td>mov</td><td>ch, # 0</td><td>/ • charge top meter</td>
<td>mov</td><td>custom duty</td><td>/ lower level</td>
<td>mov</td><td>ccapOl, # 0fff</td><td>/ a good byte for kogiopaaooa bloOu</td>
<td colspan="3">time</td>
<td>mov</td><td>ccapOh ,, 0</td><td>/ upper byte for kugiopaaooa Mokk</td>
<td colspan="3">time</td>
<td>mov</td><td>ccapmO, # 04 9h</td><td>/ PCA0: software time block</td>
<td>mov</td><td>^ CAPL! , 0</td><td>/ PCA1: (Dial Tone) remains</td>
<td colspan="3">excluded</td>
<td>mov</td><td>cacpm2, # 0</td><td>/ PCA2: (pwm 20 Hz) off</td>
<td>clr</td><td>t ^ l</td><td>/ interrupt time bolt for photos</td>
<td>headphones</td><td colspan="2">not yet launched</td>
<td>clr</td><td>trr</td><td>/ suspension block time still</td>
174 142 does not work / Initialization of byte variables mov time_on1, # 0 / initialization of interrupt hang time blocks
<td>mov</td><td colspan="2">time_on2, # 0</td>
<td>mov</td><td>time_off1, # 0</td><td>; interrupt initialization photo blocks time ;; headphones</td>
<td>mov</td><td>time_off2, # 0</td><td></td>
<td>mov</td><td>time_off3, # 0</td><td></td>
<td>mov</td><td>flags, # 0</td><td>; delete all flags</td>
<td>mov</td><td>flags2, # 0</td><td>/ delete all flags</td>
<td>mov</td><td>flags3, # 0</td><td>/ delete all flags</td>
<td>mov</td><td>inds, # 0FFH</td><td>, - initial values</td>
<td>mov</td><td>indasc, Offham</td><td>, - initial values</td>
<td>mov</td><td>pulse_digit, # 0</td><td>; 0 = none available from now on</td>
pulsed digit
<td>mov</td><td>f_cmds, # 0</td><td>; 0 = no TRU task assigned</td>
<td colspan="2">/ Initialization of variables</td><td>bit</td>
<td>clr</td><td>test_enable</td><td></td>
<td>clr</td><td>test_end</td><td></td>
<td>clr</td><td>ERROR_FLAG</td><td></td>
<td>clr</td><td>return_ring</td><td></td>
<td>setb</td><td>fonhook</td><td>/ 1 = hangs up headphones when power on</td>
<td>clr</td><td>finit</td><td> ,<sup>,</sup>0 = not yet completed TRU initialization</td>
<td>clr</td><td>fremote_hup</td><td></td>
<td>clr</td><td>fcall</td><td>; 0 = no connection yet</td>
entering (ALERT)
<td>inches</td><td>clr-dsp</td>
<td>Cali inches</td><td>clr_msg spiaifia inits</td>
<td>mov</td><td>caαp41; # 0FFH</td>
<td>mov</td><td>caap4h; # 0FFH</td>
<td>mov</td><td>ccapm4, # 48h</td>
<td>OR1</td><td>cmod, # 4 OH</td>
<td>setb setb</td><td>cr tr0</td>
/ reset the handset LCD display buffer / delete TRU message box / complete inuuju typical for TRU / lower byte for the control device / upper byte for the control signal / PCA4: reflector ^ comparator and interruption / o <bll ^ y time block / start PCA counter / start handset hang up block / Wait 2.55 s for TRU to wake up. Delete the location of selected digits, then point R0 to / beginning of the buffer (60h), and delete R2 (the number of selected digits).
^ tim wakeup:
ca11 watchdog mov a; time_ln2 cjne a; # 255; eimi_śakeup awakening TRU mov c<sub>from</sub>sw_ęfndsta: rt
1 = GS mov ^^ switch—, c clr no_ri.ng ca11 śriti_px2 jmp start / take time out / wait / wait here 2.55 s for; check short with GS-LS, 0 = LS / save start mode
174 142 $ include (tru.asm) / TRU module, so when assembling you can get INTMASK. * · ************* · **** · **** · ***** ******************************** / Start, and re-entry point after hanging up. ******** ************************************************** * start:
<td>mov</td><td>r0, # 60h</td><td></td><td>/ indicate the beginning of the digit buffer</td>
<td>mov</td><td>and, # 0FFH</td><td></td><td>/ fill in with non-numbers</td>
<td colspan="2">digbuf:</td><td></td><td></td>
<td>mov</td><td>@ r0, a</td><td></td><td>/ locations one at a time</td>
<td>inc</td><td>r0</td><td></td><td>/ indicate next location</td>
<td>CJNE</td><td>r0, # 80h,</td><td>ole_digbuf</td><td>/ up to 7fh</td>
<td>mov</td><td>r0, # 60h</td><td></td><td>/ indicate the beginning of the buffer</td>
<td>mov</td><td> ^,#0</td><td></td><td>/ initialize the number of digits</td>
<td>setb</td><td>f ^ start</td><td></td><td>/ ^ enable key deglitching</td>
<td></td><td></td><td>hook</td><td>_switch</td>
<td>clr</td><td>t / 0</td><td colspan="2">/ cancel interruption in a given case</td>
<td>setb</td><td>ee0</td><td colspan="2">/ unlock photo break</td>
Headphones if locked / Closed loop until an incoming call is detected or the handset is picked up / dialed.
hookchk:
ca11 watchdog jb tmsX_mnablm, do_Xest / if activated samot / stowanim mov fccmds, # 1 / load order ID
174 142 / cali trucra / do the taskl task if needed for TRU jb fhook] finsai / interrupt if the handset jnb fαnswer] hookchk / return: if no incoming ring was detected
<td>jmp</td><td>ringtanswer</td><td>/ answer the ringtone,</td><td>removed</td>
<td></td><td></td><td>handset during /</td><td>the state</td>
<td></td><td></td><td colspan="2">ALERT (outgoing call)!</td>
<td>yinsai:</td><td></td><td></td><td></td>
<td>jmp</td><td>first</td><td></td><td></td>
<td>dottes ^</td><td></td><td></td><td></td>
<td>mov</td><td colspan="2">rl, # raintflagtirron</td><td></td>
<td>mov</td><td>@ Η, # 0</td><td>/ set tone error as</td><td>busy</td>
<td></td><td></td><td>or 1000 Hz</td><td></td>
<td>mov</td><td>rl, # mainitflagt</td><td>error</td><td></td>
<td>mov</td><td>@ Rl, # 0</td><td>/ set tone error as</td><td>busy</td>
<td></td><td></td><td>or 1000 Hz</td><td></td>
<td>clr</td><td>test ^^</td><td></td><td></td>
<td>clr</td><td>errortflag</td><td></td><td></td>
<td>clr</td><td>irrortflag</td><td></td><td></td>
<td>mov</td><td>ri] #maintfiag</td><td></td><td></td>
<td>mov</td><td>a, @rl</td><td colspan="2">/ load the first flag</td>
<td>or</td><td>and, # 00000001b</td><td>/ check if done</td><td>hook</td>
<td>CAU</td><td>start hook test</td><td>/ suspension test</td><td></td>
^ a test © ::
<td>jb</td><td>error</td><td>flag, routerror</td><td></td>
<td>inches</td><td>DIALTA</td><td>test / test</td><td>dialing</td>
<td>tiat_aial</td><td><sub>:</sub></td><td></td><td></td>
<td>jb</td><td>error</td><td>flags, routerror</td><td></td>
<td>CA11</td><td>start</td><td>tdtmf / test</td><td>dtmf</td>
174 142 test_dtmf:
jb error_flag, rou_error call start ^ ring-test; ring test test_ring:
jb error_flag, rou_error call start_riig_ais_test; tpst will answer the call test_ring_a:
<td>jb</td><td colspan="2">error flag, rou error</td>
<td>call</td><td>make_call</td><td>; connection test</td>
<td>jb</td><td>ERROR_FLAG rou</td><td>error</td>
<td>call</td><td>until fin tim</td><td>; exit without errors</td>
<td>rou error: call</td><td>error acc</td><td>; load error variable</td>
; jmp wait_ein uitil_fin_til:
<td>setb test_eid</td><td></td>
<td>clr tr0 mov time_on2, # 0</td><td>; pzzp odwiellinip op 10 bowls</td>
<td>mov ttme_onl, # 0</td><td>/ reetp e.g. nexthP 36</td>
<td>mov test min, # 0</td><td>/ 10 sp p 255 =, 55P p</td>
<td>setb tr0 wait end: call watchdog</td><td>j-stay here until</td>
<td>1 minute has elapsed mov a, test_lii cjn a, ## 3, wait end</td><td>;, 25p x 23p = 60.88</td>
<td>call frn ^ c ^ lf</td><td>/ back to nonaal</td>
<td>jmp hook</td><td>; return to normll</td>
<td colspan="2">i * * * ii iii-i: ki kikk * (*; ·) (k iii · * · * kki • kk *; ** H ki f</td>
<td>; start Okkk_tlst - beginning</td><td>kdwtlezliia headphones test</td>
<td colspan="2">.λ ************************************************ · ******</td>
174 142 start-hock-test:
<td>mov</td><td>rl ^ main flag</td><td>'enable flag iaain</td>
<td>mov</td><td>a, @ r1</td><td></td>
<td>orl</td><td>l # 0777001b</td><td></td>
<td>mov</td><td>@ R1, and</td><td>; set the handset photo flag</td>
<td>setb</td><td>enable test</td><td>; scans camera</td>
<td>clr</td><td>conn loop</td><td></td>
<td>inches</td><td>wr ^ e ^ o ^^</td><td>; and module at the bottom</td>
<td>inches</td><td>reset io_m</td><td>'resetjo control panel</td>
<td>inches</td><td>wr ^ e ^ o ^^</td><td></td>
<td>inches</td><td>write-iO-M_C</td><td></td>
<td>clr</td><td>loopawich_</td><td>Second side disconnected</td>
inch write_px2 testJSup:
<td>setb</td><td>fremote_hup</td><td></td>
<td>inches</td><td>sup</td><td></td>
<td>mov</td><td>ł ^ ps ^ er ^, # 0</td><td></td>
<td>inches</td><td>write io_c</td><td>'update, LEDs</td>
<td>mov</td><td>R6, # 10</td><td></td>
<td>nose:</td><td></td><td></td>
<td>push</td><td> 6</td><td></td>
<td>mov</td><td>γ6, # 01</td><td>corpse power</td>
loop_m:
<td>mov</td><td>R7, # 0ffS</td>
<td>djnz</td><td>r7, $</td>
<td>inches</td><td>watchdog</td>
<td>djnz</td><td>r6, loop m</td>
mov γ6, # 01 'delay module
174 142
<td colspan="2">loop has: mov</td><td rowspan="2">R7, # 0FFH r7, $ watchdog r6, loop has R6, # 0FFH</td>
<td></td><td>djnz call djnz mov</td>
<td colspan="2">loop iUb:</td><td></td>
<td></td><td>mov</td><td>R7, # 0FFH</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 mb</td>
<td></td><td>mov</td><td>R6, # 0FFH</td>
<td>loop_</td><td>mc:</td><td></td>
<td></td><td>mov</td><td>R7, # 0FFH</td>
<td></td><td>djnz</td><td>r7, $</td>
<td></td><td>call</td><td>watchdog</td>
<td></td><td>djnz</td><td>R6, loopimc</td>
<td></td><td>pop</td><td> 6</td>
<td></td><td>djnz</td><td>R6, nose</td>
<td>test_</td><td>hup2:</td><td></td>
<td></td><td>clr</td><td>fanswer</td>
<td></td><td>clr</td><td>f hook</td>
<td></td><td>JNB</td><td>fhook, not_hook</td>
; delay module; delay module
- OKAY
: delete flgga det; no handset photo detected jmp hook_error not_hook_det:
setb fonhook setb conn_loop cali write_io_m_c mov r6<sub>from</sub># 0f ff / headset photo detection - error; headset photo test è headset photo to; interij su; i ^ o <^ T ^ delay
174 142 loop_m_off:
mov r7, # 0ffh djnz r7, $ cali watchdog djnz r6, loop_m_off mov r6, # 0ffh / delay_m_off2 delay module:
mov r7, # 0ffh djnz r7, $ cali watchdog djnz r6, loop_m_off2 mov r6, # 0ffh / delay module loop_m_off3:
mov r7, # 0ffh djnz r7, $ cali watchdog djnz r6, loop_m_off3 mov r6, # 0ffh / delay module loop_m_off4:
mov r7, # 0ffh djnz r7, $ cali watchdog djnz r6, loop_m_off4 mov r6, # 0ffh / delay module loop_m_off5:
mov r7, # 0ffh djnz r7, $ cali watchdog djnz r6, loop_m_off5 test_fhook:
jb fhook, detected_hook / if a handset photo is detected - OK
/ if no photo detected - error
174 142
OnOnaOed_hook:
<td>clr eeO</td><td>jzL ^ l ^ ZL ^; chise abort suspension to occurrence of tone / dial for avoid dialing interference / commutation</td>
<td>clr hhoOutout</td><td>/ TRU show handset photo</td>
<td>seOb hooUtwouO</td><td>/ as in ^ / Ż ^ j</td>
<td>clr fhook</td><td>/ cassia flag</td>
<td>to Delay:</td><td></td>
<td>all waOahOoe</td><td></td>
<td>jnb la_, tOill_off</td><td>_hook</td>
<td>jmp hooU_nrror</td><td>/ hang up error</td>
<td>tti0l_off_hooU:</td><td></td>
<td colspan="2">jb h_tOρrO, Ot_OnlαyO / will be set after nliminpaji</td>
<td colspan="2">commutational interference 500 / ms</td>
<td>clr iie</td><td>/ Push the interrupt flag back</td>
<td></td><td>for this case</td>
<td>seOb ex0</td><td></td>
<td>SEOB</td><td>/ 1 = Dial Tone is on</td>
<td>inch 00onn</td><td>/ oidJ ^ oij Dial Tone</td>
<td>ret</td><td>/ quit hanging test</td>
<td>hook error:</td><td></td>
<td>mov r1,0main flag</td><td>error</td>
<td>mov @ r1,01</td><td>/ SLIC hang up error</td>
setb nrror_flpe ret checks the dial tone .kkkk-kkkkkkkkkkkkkkkkkkkkkkkkkk-kkkkkkkkkkk-kkkkkkkk-k-kkk /
0ial_0nst:
mov r1,0liain_flae / load main flag
174 142
<td>mov</td><td>a, @rl</td>
<td>orl</td><td>and, # 0000010b</td>
<td>mov</td><td>@rl, a</td>
<td>iriov</td><td>R6, # 0FFH</td>
<td colspan="2">y_dial:</td>
<td>mov</td><td>R7, # 0FFH</td>
<td>djnz</td><td>r7, $</td>
<td>inches</td><td>watchdog</td>
<td>djnz</td><td>R6, delay_dial</td>
<td>mov</td><td>R6, # 0FFH</td>
<td colspan="2">y_dia! 2:</td>
<td>mov</td><td>R7, # 0FFH</td>
<td>djnz</td><td>r7, $</td>
<td>inches</td><td>watchdog</td>
<td>djnz</td><td>R6, delay_dial2</td>
<td>clr</td><td>tri</td>
<td>mov</td><td>time_off1, # 0</td>
<td>mov</td><td>time_off2, # 0</td>
<td>setb</td><td>tri</td>
/ set dial tone flag / handset delay / handset delay / wait 711 ms for dialing verify_dial:
inch read_io_m_a ani a, # 00000001b cjne a, # 00000001b, dial_ok
OKAY
check dial tone / if 0 is dialing inches watchdog mov a, time_off2 / dialing not detected cjne a, # 10, verify_dial / wait 711 ms, if busy is not detected - tone / dial error mov rl, # main_flag_error mov @ rl # 3 / dialing error
174 142 ret dial_ok: ret • ★ ★ ★ ★ kdk kk kk mmikimmmkffikkk -ki -kimkki -kiii -kikkk F / start_dtmf - beginning of dtmf start_dtmf:
<td>clr</td><td>fdtone</td>
<td>mov</td><td>ccapml, # 0</td>
<td>or</td><td>iO mb, # 0fOh</td>
orl io_m_b, ttcero / send 0 inches send_dtmf inches delay_dtmf
<td>inches</td><td>disable_dtmf</td>
<td>inches</td><td>delay_dtmf</td>
<td>inches</td><td>get_test</td>
test_cero
<td>CJNE</td><td>a, # 0h, dtmf_error_flag / check 0</td>
<td>or</td><td>iO m_b, # OfOh</td>
<td>orl</td><td>io_m_b, # uno / send 1</td>
<td>inches</td><td>send_dtmf</td>
<td>inches</td><td>delay dtmf</td>
<td>inches</td><td>disable_dtmf</td>
<td>inches</td><td>delay_dtmf</td>
<td>inches</td><td>get_test</td>
<td>test_l:</td><td></td>
<td>CJNE</td><td>a, # lh, dtmf_error_flag / check 1</td>
<td>or</td><td>iO m_b, # 0f0h</td>
<td>orl</td><td>io_m_b, # dos / send 2</td>
<td>inches</td><td>send dtmf</td>
cali delay_dtmf cali disable_dtmf
174 142 inches delay_dtmf inches get_test test_2:
cjne a, # 2h, dtmf_error_flag nor iO_m_b, # 0fOh orl io_m_b, # tres cali send_dtmf cali delay_dtmf cali disable_dtmf cali delay_dtmf cali get_test test_3:
cjne a, # 3h, dtmf_error_flag ani i 0_m_b, # 0 f Oh orl io_m_b, # cuatro cali send_dtmf cali delay_dtmf cali disable_dtmf cali delay_dtmf cali get_test test_4:
cjne a, # 4h, dtmf_error_flag jmp go_to_5 dtmf_error_f1ag:
; check 2 / send 3; check 3 'send 4; check 4' send 5
<td>jmp</td><td>error_dtmf</td>
<td>go_to_5:</td><td></td>
<td>or</td><td>iO mb, # 0fOh</td>
<td>orl</td><td>io_m_b, cinco #</td>
<td>inches</td><td>send dtmf</td>
<td>inches</td><td>delay_dtmf</td>
<td>inches</td><td>disable_dtmf</td>
<td>inches</td><td>delay_dtmf</td>
<td>inches</td><td>get_test</td>
test_5:
cjne a, # 5h, dtmf_error_flag ani i O_m_b, # O f Oh drl io__m_b, #seis cali send_dtmf cali delay_dtmf cali disable_dtmf cali delay_dtmf cali get_test test_6:
cjne a, # 6h, dtmf_error_flag ani i 0_m_b, # O f Oh orl io_m_b, # siete cali send_dtmf cali delay_dtmf cali disable_dtxnf cali delay_dtmf cali get_test test_7:
cjne a, # 7h, dtmf_error_flag nor iO_m_b, # OfOh orl and o_m_b, # o cho cali send_dtmf cali delay_dtmf cali disable_dtmf cali delay_dtmf cali get_test test_8:
cjne a, # 8h, dtmf_error_flag nor iO_m_b, # 0fOh orl io_m_b, # nueve cali send_dtmf cali delay_dtmf; check 5 / send 6; check 6 / send 7 / check 7 / send 8 / check 8 / send 9
174 142
<td colspan="3">call disable dtmf</td>
<td>call</td><td colspan="2">delay dtmf</td>
<td>call</td><td>get__test</td><td></td>
<td>test 9:</td><td></td><td></td>
<td>CJNE</td><td>a, # 9h, dtmf_error flag</td><td>; check 9</td>
<td>or</td><td>i0_m__b, # 0f Oh</td><td></td>
<td>orl</td><td>io_m_b, # 05h</td><td>/ send a</td>
call send_dtmf call delay_dtmf call disable_dtmf call delay_dtmf call get__test test_a:
<td></td><td>CJNE</td><td>and, # 0AH, dtmf_error_flag</td><td>/ collect a</td>
<td></td><td>or</td><td>i0_m_b, # 0f0h</td><td></td>
<td></td><td>orl</td><td>io_m_b, # 0Dh</td><td>/ es b</td>
<td></td><td>call</td><td>send dtmf</td><td></td>
<td></td><td>call</td><td>delay dtmf</td><td></td>
<td></td><td>call</td><td>disable dtmf</td><td></td>
<td></td><td>call</td><td>delay dtmf</td><td></td>
<td></td><td>call</td><td>get__test</td><td></td>
<td>test_</td><td>_b:</td><td></td><td></td>
<td>CJNE</td><td colspan="2">and<sub>from</sub># 0bh, dtmf error flag</td><td></td>
<td></td><td>jmp</td><td>go_to c</td><td></td>
<td>dtmf</td><td colspan="2">error_flagl:</td><td></td>
<td></td><td>jmp</td><td>dtmf error</td><td></td>
<td colspan="2">go_to_c:</td><td></td><td></td>
<td></td><td>or</td><td>i0_m_b, # 0f0h</td><td></td>
<td></td><td>orl</td><td>io_m b, # 03h</td><td>/ es 3</td>
<td></td><td>call</td><td>send dtmf</td><td></td>
<td></td><td>call</td><td>delay_dtmf</td><td></td>
174 142 call d ^ able-b ^ f call delay_dtnif call get_test test ^:
cjne k, # 0bh, dtmf_eiior_flagf or i0_m_b, # 0f0h orl io_m_b, # 0bh; es d call send_dtmf call delay_dtmf call diaable_dtmf call delay_dtmf call get_test test_d:
cjne a, # 0bh, dtmf_erior_flagl nor 10_m_b, # 0fOh orl io__ii_bi # 07h; ee 7 call sendidtmf call delayidtmf call disableidŁm ^ f call delayidtmf call get_test test_e:
cjne a, # 0bh, dtbf_sii · oi_flagl anl 10_m_b, # 0fOh orl io_m_b, # 0fh ;; sf call asnd_dtbf call de ^ y-dŁmi call d1aabls_dtbf call de ^ yidtof call get-test test_f:
cjne a, # 0bh, dtbf_siior_flags ret without errors
174 142 irnor_dtmf:
mov r1] ftraintyiαgtinror mov @ rl, # 4 / error setb enrortflαg ret f
/ ataratningtteat - the beginning of the ringing test · ++ ★ +++++++++++ ★ ++++ ★ + ★ ++++++++++++++++++++ ★ ++++++++++++++++ aaara_ning_test:
<td>mov</td><td>n1] #: raCntyiag</td>
<td>mov</td><td>a, @ r1</td>
<td>orl</td><td>and, # 00001000b</td>
<td>mov</td><td>Sr ^ and</td>
<td>clr</td><td>ring second</td>
<td>clr</td><td>conn loop</td>
<td>call</td><td>write io mc</td>
<td>setb</td><td>fnirote hup</td>
<td>call</td><td>hup</td>
<td>mov</td><td>r6, # 6</td>
<td>loop ring</td><td>wait:</td>
<td>push</td><td> 6</td>
<td>mov</td><td>R6, # 0yyh</td>
<td>iooPtmlb:</td><td></td>
<td>mov</td><td>R7, # 0FFH</td>
<td>^ dj</td><td>r7, $</td>
<td>inches</td><td>watchdog</td>
<td>djaz</td><td>R6, iooPtmlb</td>
<td>mov</td><td>R6, # 0FFH</td>
^ P ^ cc:
; ring the call; rczdZat flag main / set the ring test flag, · ssuuhawka put off / delay / delay
174 142
<td>mov</td><td>R7, # 0ffS</td>
<td>djnz</td><td>r7, $</td>
<td>call</td><td>watcSdog</td>
<td>djnz</td><td>r6, loop mcc</td>
<td>pop</td><td> 6</td>
<td>djnz</td><td>r6, loop ring wait / • Incoming call</td>
<td>clr</td><td>apl; tntdj) dj inbound connection</td>
<td>jb</td><td>lc_, loop — ring — Of</td>
<td>jmp</td><td>ring flag</td>
lccP-ring-O:; come back <until you start ringing Iub
<td>clr</td><td>tr0 'will pass 2 s</td>
<td>mov</td><td>time on2, # 0</td>
<td>mov</td><td>time onf, # 7</td>
<td>setb</td><td>tr0</td>
wait 2 sec:
<td>call</td><td>watcSdog</td>
<td>JNB</td><td>fanswer, not answer</td>
<td>jmp</td><td>ring flag 'error response</td>
not answer:
<td>call</td><td>write io ma</td>
<td>or</td><td>a, # 000001003:</td>
<td>CJNE</td><td>l, # 77077ł77b, rtng starts' if 7-started ringing</td>
<td>mov</td><td>a, time on2 'check if 2 s have expired</td>
<td>CJNE</td><td>a, # 200, wait 2 sec 'wait 2 s until latch<sup>n</sup>and<sup>and</sup>dtmf</td>
<td><sup>j</sup>mp</td><td>ring flag '2: 3 expired, error</td>
rtng_atlrts:
mov r6, # 0ffh 'loopjmbbc delay:
174 142
<td></td><td>mov djnz</td><td>τ7,00ϋΗ r7, $</td>
<td></td><td>caOO</td><td>wp0ah0oe</td>
<td></td><td>djnz</td><td>r6, loop mbbc</td>
<td></td><td>mov</td><td>r6, 00ϋή</td>
<td colspan="2">Ooop iiccO</td><td></td>
<td></td><td>mov</td><td>Γ7,00ϋ</td>
<td></td><td>djnz</td><td>r7, $</td>
<td></td><td>safely</td><td>wa0ahOoe</td>
<td></td><td>djnz</td><td>r6, Ooop mccd</td>
<td>ring</td><td colspan="2">^ ΟργΟ:</td>
<td></td><td>cor</td><td>0R0</td>
<td></td><td>mov</td><td>tirne-O ^, 00</td>
<td></td><td>mov</td><td>Oim-OnO, 00</td>
<td></td><td>setb</td><td>0R0</td>
<td>wpit</td><td colspan="2"></td>
<td></td><td>Caol</td><td>wa0ahOoe</td>
<td></td><td>JNB</td><td>hantwnr, no0 answerl</td>
<td></td><td>jmp</td><td>rine_hOρe</td>
/ delay no0_αntwerl:
cali rnaO_eo_m_a test-lSO:
ani p, 0000001001; checks ringing continuity in 1.3 s / check ringing in 1.3 s / response error / should be low during 1.3 s cjne a, Ο000001001, rine__expirn jmp rine_hOpe / ringing disappears in 0.3s rine_expire:
mov a, 0ime__on2 cjne a, 090, wpi0_130mtna / wait 130 ms wpi0_250mtea: / ringing should stop after
1.5 seconds
174 142
<td colspan="2">whole watchdog</td>
<td>inches</td><td>read io ma</td>
<td>test 250:</td><td></td>
<td>or</td><td>and, # 00000100b</td>
<td>CJNE</td><td>and, # 00000100b</td>
<td>test_stop:</td><td></td>
<td>jmp</td><td>ring stop_</td>
ring_not_expire:
mov a, time_on2 cjne a, # 250, wait test_flag:
; but we are waiting 2.5 s to check if / stops / should be low during above 2 s, ring_not_expire / ringing stops before 2.5 s / after 1.5 s should be high 250msec / wait 250 ms
<td>jmp</td><td>ring</td><td>flags</td><td>/ call continuity failure in 2.5</td>
<td>Stop</td><td></td><td></td><td>/ wait 2.55 s</td>
<td>clr</td><td>tRO</td><td></td><td></td>
<td>mov</td><td>time</td><td>_on2, # 0</td><td></td>
<td>mov</td><td>time</td><td>They 0 #</td><td></td>
<td>setb</td><td>tRO</td><td></td><td></td>
wait_2seca:
cali watchdog jnb fanswer, not_answer2 jmp ring_flag / not_answer2 response error:
mov a, time_on2 cjne a, # 255, wait_2_seca / wait 2.55 s to stop the second loop dtmf jb ring_second, ring_stopl / check the ringtone twice times jmp loop_ring__off / start again ring_flag:
setb apl / delete incoming connection mov rl, # main_flag mov @ rl, # 5; ringing error setb error_flag ring_stopl:
test_timbre:
ret / exit without error / start_ring_ans_test - answer to calling
From start_ring_ans_test:
/ initiate ringing
<td>mov</td><td>rl, # main_flag</td><td>/ load the main flag</td>
<td>mov</td><td>a, @rl</td><td></td>
<td>orl</td><td>and, # 00010000b</td><td></td>
<td>mov</td><td>@rl, a</td><td>/ set the ring test flag</td>
loop_ring_off2: / come back here until ringing starts again clr trO mov time_on2, # 0 mov time_onl, # 0 setb trO wait 2 sec2:
<td>call</td><td>watchdog</td>
<td>JNB</td><td>fanswer, not answering / output on reply</td>
<td>jmp</td><td>ring flag</td>
<td colspan="2">answering notes:</td>
<td>call</td><td>read_io_m_a</td>
<td>or</td><td>and, # 00000100b</td>
<td>CJNE</td><td>a, # 00000100b, ring starts / if 0 is done</td>
<td></td><td>ringing</td>
<td>mov</td><td>a, time on2 / check if 2 s have expired</td>
<td>CJNE</td><td>a, # 200, wait 2 sec2 / wait 2 s to stop</td>
jmp ans flag / 2 seconds have expired
174 142 rńng_ppeeent:
<td>setb</td><td>conn lup /</td><td>responded to</td>
<td>inches</td><td>venei io b</td><td></td>
<td>mov</td><td>e7; # 0ffh /</td><td>zcśola alt aste'αlnnnw fannwer</td>
<td colspan="3">wait ans:</td>
<td>mov</td><td># 0FFH</td><td></td>
<td>djuz</td><td>ζ6, $</td><td></td>
<td>call</td><td>wleahdlg</td><td></td>
<td>djnz</td><td>ζ7 ^ ζϊ] ans</td><td></td>
<td>mov</td><td>e7; # 0FFH</td><td></td>
<td>śanepaΩSl</td><td></td><td></td>
<td>mov</td><td>e6; # 0FFH</td><td></td>
<td>djuz</td><td> $</td><td></td>
<td>call</td><td>watchdog</td><td></td>
<td>djnz</td><td>e7; wantpansa</td><td></td>
<td colspan="3">ans test:</td>
<td>jb</td><td>Flnssie</td><td>/ if it is available; this OKAY</td>
<td>jmp</td><td>anspflag</td><td>no error occurred</td>
<td colspan="3">ans flag:</td>
<td>mov</td><td colspan="2">ζΙ ^ ζϊπ. flags</td>
<td>mov</td><td>ΖΙ @, # 6</td><td>/ ncelnirniα error</td>
<td>setb</td><td>flags</td><td></td>
<td>setb</td><td>apl</td><td></td>
<td>clr</td><td>fanswer</td><td></td>
<td colspan="3">ret</td>
<td>^ .Ring:</td><td></td><td>/ exit without error</td>
<td colspan="3">timbre:</td>
<td>clr</td><td>fanswer</td><td></td>
<td>setb</td><td>ap1</td><td>/ delete incoming call</td>
ret
174 142. ************************************************ *********** / make_call - connection set for checking the radio • and ***************************** *****************************
<td>mov</td><td>rl, # mainl_flag</td>
<td>mov</td><td>a, @rl</td>
<td>orl</td><td>and, # 00000001b</td>
<td>mov</td><td>@rl, a</td>
<td>mute test</td><td></td>
<td>JNB</td><td>power_, power is ok</td>
<td colspan="2">the line should be low (0)</td>
<td>mov</td><td>rl, # mainl_flag error</td>
<td>mov</td><td>@ Rl, L #</td>
<td>setb</td><td>ERROR_FLAG</td>
<td>jmp</td><td>pre onhook</td>
<td>power is</td><td>okay:</td>
<td>mov</td><td>and, # func</td>
<td>inches</td><td>wrbus</td>
<td>mov</td><td>a, # 7</td>
<td>inches</td><td>wrbus</td>
<td>inches</td><td>clr dsp</td>
<td>mov</td><td>and, star</td>
<td>inches</td><td>wrbus</td>
/ load the mainl flag / set the connection test flag / if the radio is OK, status / set power error / read function phone number mov r7, # 0ffh / delay for sending the number to the interface su wa? it_min:
mov r6, # 0ffh djnz r6, $ cali watchdog djnz r7, wait_min mov r7, # 0ffh
174 142 waia_mCna:
<td>mov</td><td>R6, # 0FFH</td>
<td></td><td>r6, $</td>
<td>Call</td><td>watchdog</td>
<td>aend</td><td>r7, wait mina</td>
<td>mov</td><td>and, # 9</td>
<td>call</td><td>wrbus</td>
<td>mov</td><td>and, # 0AH</td>
<td>call</td><td>wrbus</td>
/ generate a connection with your phone nurerir
<td>mov</td><td>a ^ dspbuf start</td><td>/ Po ^ erz</td><td>current indicator</td>
<td>add</td><td>a, # 3</td><td></td><td></td>
<td>mov</td><td>rl, a</td><td></td><td></td>
<td>mov</td><td>and,</td><td>/ read</td><td>message in</td>
<td>anl</td><td>a ,, ffh</td><td></td><td></td>
<td>call</td><td>wrbus</td><td></td><td></td>
<td>inc</td><td>rl</td><td></td><td></td>
<td>mov</td><td>a, @rl</td><td></td><td>message in</td>
<td>or</td><td></td><td></td><td></td>
<td>inches</td><td>wrbus</td><td></td><td></td>
<td>inc</td><td>rr</td><td></td><td></td>
<td>mov</td><td>and, @ rl</td><td>/ ^ Read</td><td>message in bbfcond</td>
<td>or</td><td>and, # FFH</td><td></td><td></td>
<td>call</td><td>wrbus</td><td></td><td></td>
<td>inc</td><td>n</td><td></td><td></td>
<td>mov</td><td>aa, η</td><td>/ sdahyZaj</td><td>message in bbfcrnd</td>
<td>or</td><td>a ^ fi</td><td></td><td></td>
<td>call</td><td>wrrbs</td><td></td><td></td>
174 142
<td>inc mov an1 call</td><td>rl and, and, # FFH wrbus</td><td>/ read the communion</td><td>in the buffer</td>
<td>inc</td><td>t1</td><td></td><td></td>
<td>mov</td><td>a, @yy</td><td>/ read the bookmark</td><td>in the buffer</td>
<td>anl</td><td>a, #ffh</td><td></td><td></td>
<td>inches</td><td>wrbus</td><td></td><td></td>
<td>inc</td><td>rr</td><td></td><td></td>
<td>mov</td><td>a, @ γ1</td><td>; by removing tissue</td><td>in the buffer</td>
<td>or</td><td>and, # FFH</td><td></td><td></td>
<td>inches</td><td>wrbus</td><td></td><td></td>
<td>inc</td><td>t1</td><td></td><td></td>
<td>mov</td><td>a, @ γ1</td><td>/ reading ^ πΐϋΐίkat</td><td>in the buffer</td>
<td>anl</td><td>and,</td><td></td><td></td>
<td>inches</td><td>wrbus</td><td></td><td></td>
<td>setb</td><td>fsend</td><td colspan="2">/ set the adadging flag</td>
<td>mov</td><td>a,, # emd</td><td>/ set connection</td><td></td>
<td>inches</td><td>wwIus</td><td></td><td></td>
<td>setb</td><td>emnaie special</td><td>: odbokuuC</td><td></td>
<td>inches</td><td>writm This is</td><td></td><td></td>
t / stjnutel:
<td>clr</td><td>mutm</td><td>/ don't mute</td>
<td>inches</td><td>writm pe2</td><td></td>
<td>clr</td><td>Xit</td><td>/ delay for checking work</td>
<td>mov</td><td>txme_offi, # 0</td><td></td>
<td>mov</td><td>Xime_of f2 (# 0</td><td></td>
174 142 setb tri delay_call:
<td>mov</td><td>a, time_off2</td><td></td>
<td>call</td><td>watchdog</td><td></td>
<td>CJNE</td><td>a, # 80, delay call</td><td>wait 1? s</td>
<td>test_mute2</td><td><sup>1</sup> ·</td><td>; busy tone test</td>
<td>clr</td><td>tri</td><td>delay in checking work</td>
mov time_offl, # 0 mov time_of f 2, # 0 mov time_off3, # 0 setb tri cont_waiting:
<td>JNB</td><td>inuse, still inuse</td><td></td>
<td>mov</td><td>rl, # main_flag error</td><td></td>
<td>mov</td><td>@ Rl, # 4</td><td>; set work error</td>
<td>jmp</td><td>call error</td><td>/ if iube disappears set error</td>
still_inuse:
<td rowspan="2">call or CJNE</td><td colspan="3">read_io_m a 'check the dial tone and, # 00000001b</td>
<td>a, # 00000001b, busy ok 'if</td><td> 0,</td><td>busy OK</td>
<td>call</td><td>read_io_m a; check</td><td>tone</td><td>dialing</td>
<td>or</td><td>and, # 00000001b</td><td></td><td></td>
<td>CJNE</td><td>a, # 00000001b, busy ok 'if</td><td colspan="2">10000k busy</td>
<td></td><td>OKAY</td><td></td><td></td>
<td>mov</td><td colspan="2">a, time_off3; not detected</td><td>busy</td>
<td>call</td><td>watchdog</td><td></td><td></td>
<td>CJNE</td><td>a, # lh, cont_waiting 'wait:</td><td> 18,2</td><td>s if not</td>
busy detected
174 142 mov rl, # mainl_flag_error
<td>mov @ rl, # 3</td><td>; set busy tone error or 1000Hz</td>
<td>call_error:</td><td></td>
<td>mov a, # endl</td><td>; connection set</td>
<td>inches wrbus</td><td></td>
<td>setb error_flag</td><td>/ is and the handset is hung up</td>
<td>jmp pre onhook</td><td></td>
<td>tlOOOhz:</td><td></td>
<td>busy_ok:</td><td></td>
<td>mov a, # endl</td><td>/ set connection</td>
cali wrbus pre_onhook:
<td>clr</td><td>conn loop</td><td>/ is and the handset is hung up</td>
<td>inches</td><td>write_io_m_c</td><td>/ and connect the module</td>
<td>inches</td><td>hup</td><td></td>
<td>ret</td><td></td><td></td>
. ************************************************* **********; error_acc - set the error code. ********************************* ************************** error_acc:
mov rl, # main_flag_error mov @ rl, # 4 / cjne a error, # 1.check_hook_ring mov rl, # error_code; SLIC hanging error mov @ rl, # l jmp exit_error
174 142 cOlck_hkkk_riIig:
cjne α, # 2.cOlck_niαl_flag
<td>mov</td><td>ρ1, # ιρρ ^ code</td><td>;error</td><td>knwllezliiα at</td>
<td></td><td></td><td>nlwkileiiu</td><td></td>
<td>mov</td><td>@ P1, # 2</td><td></td><td></td>
<td>jmp</td><td>exit ippop</td><td></td><td></td>
<td>check dial</td><td>_flag This:</td><td></td><td></td>
<td>CJNE</td><td>a, # 3.οΟιο ^^^</td><td>flags</td><td></td>
<td>mov</td><td>rl, #error_code</td><td>;error</td><td>dialing</td>
mov @ rl, # 3 jmp exit_errop cOelk_dttlf_faag:
<td>CJNE</td><td colspan="3">a, # 4.check hook ping</td>
<td>mov</td><td>rl, perror code</td><td>/ bbłd</td><td>dtmf</td>
<td>mov</td><td>@ Rl, # 4</td><td></td><td></td>
<td>jmp</td><td>exit esprozp</td><td></td><td></td>
<td>check ping</td><td>l_flag:</td><td></td><td></td>
<td>CJNE</td><td>a, # 5, c0lck ping</td><td>ans flag</td><td></td>
<td>mov</td><td>r 11 #er r orr _</td><td></td><td>call detection</td>
mov @ rl, # 5 jmp exit_error cOlck_pΊig_ais_flag:
<td colspan="4">cjne a, # 6, c0lck_pkwlP_flag</td>
<td>mov mov jmp</td><td>p1, # ippop code @ Rl, # 6 exit erszroor</td><td>; lołąd</td><td>answers to ringing</td>
<td colspan="2">check power flag:</td><td colspan="2">; check the connection flag</td>
<td>mov</td><td colspan="2">r1, # malil_flag_lppkp</td><td></td>
<td>EOV</td><td>and, @ rl</td><td></td><td></td>
<td>CJNE</td><td>α, # 1, c0lck call_</td><td>test</td><td></td>
<td>mov</td><td>pl, ^ prop ^^ e</td><td>;error</td><td>radio power supply</td>
<td>mov</td><td>@ Rl, # 7</td><td></td><td></td>
<td>jmp</td><td>exit error</td><td></td><td></td>
174 142 ahrakpaαll_trst:
<td colspan="2">cjne z ^ Ż ^ Łeck busy test</td>
<td>mov</td><td>ρΙ ^ τ ^ Ρ-ΜΙτ / error xxx</td>
<td>wov</td><td>@ Ρ1, # 8</td>
<td>jmp</td><td>rxit rrror</td>
<td colspan="2">check busy test:</td>
<td>CJNE</td><td>with ^ S ^^ ck inusr test</td>
<td>MIV</td><td>Γΐ, ^ ΓΓίΓρΟοάθ / Ł> łącl tone aaeoyanci</td>
mov @ e1, # 9 jimp rxwtpreelr ahrak_inssr_test:
<td colspan="3">CJNE</td>
<td>MIV mov<sup>IU</sup>p</td><td>γΙ, ΑΤγγιγ ^ Ιτ 0γΙ, # 10 rxńtprerir</td><td>/ mistake of drinking status</td>
<td>check 100C</td><td>i_trst:</td><td></td>
<td>CJNE</td><td>ι ^ δ ^ κΐ] reeie</td><td></td>
<td>MIV</td><td>e1, ^ me ^ ili</td><td>/ 0000 Hz tone error</td>
<td>MIV</td><td>@ Γ1, # 11</td><td></td>
<td>jmp</td><td>rxi] reeor</td><td></td>
rxit.error:
ret • * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / ain_srlf - return to noemal • * * * * k * * k * k * kkk * * * * * * * * * * * * * * * * * k * kk * * * kkkk ** kkk * * kr kr kk * * * * * * kk
<td colspan="3">fin self:</td>
<td>cle</td><td>cinn lip</td><td>/ jise lneirscrnir headphones li</td>
<td>czll</td><td>erier_nl_m_a</td><td>/ interface</td>
<td>czll</td><td>hup</td><td></td>
142
<td>clr</td><td>enable test</td><td>; camera included</td>
<td>inches</td><td>write io mb</td><td>; and disconnect the module</td>
<td>clr</td><td>enahle test</td><td>; iniuja1iuj test main</td>
<td>clr</td><td>test end</td><td>finish the test</td>
<td>clr</td><td>error flag</td><td>; error flag</td>
<td>JNB</td><td>siioi_flαg, turn</td><td>_on led</td>
<td>clr</td><td>ext led</td><td>; turn off the external LED during</td>
<td></td><td></td><td>test</td>
<td>inches</td><td>write io mc</td><td>z-on / off external LED</td>
<td>inches</td><td>loop bad</td><td></td>
tuin_on_lsd:
<td colspan="2">setb ext led μ11 write _omc</td><td rowspan="2">; turn off the external LED during test ; enable / disable external LED</td>
<td>inches</td><td>ICCP-bad</td>
<td>clr</td><td>eetlfd</td><td>; turn off the external LED during test</td>
<td>inches</td><td>wrrie iomc</td><td>; turn on / off external LED</td>
<td>inches</td><td>Icap-bad</td><td></td>
<td>setb</td><td>Cette-id</td><td>; turn off the external LED during test</td>
<td>inches</td><td>wadit _o bw</td><td>; round / corner LED external</td>
<td>inches</td><td>loop-bad</td><td></td>
<td>clr</td><td>est_iιS</td><td>; turn off the external LED during test</td>
<td>inches</td><td>wri1t_COa_ c</td><td>/ on / off external LED</td>
<td>inches</td><td>loop bad</td><td></td>
174 142 setb exttlid cali wnCtitiOtmth cali loop-tbad clr exatlia cali rrCaetCo_rtC cali loop__bad / turn off external LED during the test / turn on / turn off LED zi / male / turn off LED external during test / turn on / turn off LED external loop_baa:
mov r7] # 0CCh delay at fatsea price fseaansren raCttenl:
mov n6, # 0ffh djnz r6, $ call rαachdog denz r7, raCaterl mov r7] # 0CCh raCaterl> a:
mov ζ6, # 0 ^ 1 denz z6, $ call raahhdog denz r7, rαiaterιba ret / enter here after picking up the handset to dial
CCzsZ:
cali hlrJrsg / delete previous messages
TRU clr ex0 / block interrupt the pick-up up to the tone / dial, in
174 142 clr hookswout setb hookswout clr hook to prevent dialing with commutation interference and PTR notifications about lifting; ja0 higher; kssj0 flag dt_delay:
cali mov cali jb clr watchdog _cmda, # 4; NOTE: INT0 and TIMERO are suspended here - do not 'use any special TRU function based on these' interruptions trucmd 'execute special orders TRU f_atlrt, dt_delly' will be set after 500 ms elimination commutation interference iej, kasj, interrupt flag ppr ^ i ^^^^^ and headphones for this 'case jnb lC—, llert-CSeck' pop out if the handset removed after 500 ms teat_lcł:
inch Sup jmp start 'handset hung up again within 500 ms alert_cSeck:
setb ex0 'again ocióloSd0 interrupt the handset photo (DT already' on ') jb tnuae, mlke-dt' pop out, if not INUSE, we are ready to choose 'if already IIUJSE, then jmp wait
174 142 likely / occurring / / podiτmsi / ni / headphones responds to the position / ii / incoming / we lift the handset for 500 ms in order to tone gmnmeaojτ, ^ ζΙΤ / ιηπϊβ make_dt:
<td>s / tb</td><td>fdton /</td><td>/ l = DiaC Tonc enabled</td>
<td>inches</td><td>dton /</td><td>/ reflector (DiaC Ton</td>
<td>inches</td><td>g / X</td><td>/ pob / erc know to enter in case of hook</td>
<td>jb</td><td colspan="2">inns / zch / ck pr / fie</td>
<td>clr</td><td>fdton /</td><td></td>
<td>mov</td><td>ooapml, # 0</td><td></td>
<td>jmp</td><td>wait</td><td></td>
<td colspan="2">ch / ck pr / fie:</td><td></td>
<td>jb</td><td>lock ^ r / fTe 0</td><td>/ jump out, j / z / li TRU ni /</td>
blocked cjn / a, # pound, nos / id / jump, blocked / valid only # (unlocked /)
<td rowspan="2">pe / fix 0: cjn / jmp</td><td colspan="2">a, # zmel, pe / fie 1 / hop in, c</td><td colspan="3">if not [0]</td>
<td>KTN / jt</td><td>/ jump to prefix</td><td>remember</td><td> [0(</td><td>as</td>
<td>pr / fie 1:</td><td></td><td></td><td></td><td></td><td></td>
<td>cjn /</td><td>a, # 1, no pr / fie</td><td>/ Jump (</td><td>if not [l (</td><td colspan="2">AHO</td>
<td>jmp;</td><td>stor / TX</td><td>/ jump to</td><td>remember</td><td> [10</td><td>as</td>
io_prefix prefix:
<td>inc</td><td>r0</td><td>, - leave the pretext on (FFh)</td>
<td>tnc</td><td>i2</td><td>, U ^ cc ttrend lidbc <^^ 1γ</td>
/ Remember the current T number next to their time
174 142 uploads, list it:
cjne rO, # 7fh, do_store_it / pop out if the digit buffer is not yet full jmp check_number / pop out if full buffer without remembering do_store_it:
mov @ rO, a inc rO / memorize the number / move the digit buffer indicator forward / check the entered numbers and analyze them for sequence validity.
<td colspan="4">check number:</td>
<td>clr</td><td>fsendtimer</td><td></td><td>/ make sure it's turned off</td>
<td>mov</td><td>and, first_digit</td><td></td><td>/ point to interval one</td>
<td></td><td></td><td colspan="2">digits</td>
<td>CJNE</td><td>and, # 0FFH, check</td><td>_they</td><td>/ pop up if entered</td>
<td></td><td></td><td>as</td><td>first character digit</td>
<td>jmp</td><td>check send</td><td></td><td>/otherwise</td>
check if it's time to send check_one:
cjne a, # pound, check_send / pop up, if not [#] (block, unblock etc.) mov a, second_digit / indicate the second digit, if the first is [#] cjne a, # 0ffh, check_two / pop up if entered as the second digit is jmp check_send / otherwise check if it's time to send check_two
174 142
<td colspan="2">cjne a, # SkUin, kOeck_ial / -express, (if, 1ι [#] [#]</td>
<td></td><td>(blocking or unblocking)</td>
<td>mov a ,, hótp ciicjil</td><td>; Two ## can mean blocking or unblocking</td>
<td>cjne α, souin, kOlkk</td><td>unlock # mean block</td>
<td>jnb 1ooc, ΐϋ osnd</td><td>; nte block / C ^ fśZLi blocked</td>
<td>Cip lockiC:</td><td>; [#] [#][#] means</td>
block cOlck_nam:
cjne a, # stage, cOlck_elin; ekkcl, if not the sequence [#] [*] cjne jmp ciOek a, WhOtP_digit; otherwise. in the case, also take the third character, the number a, # 0ffO, cOlck_ialιl; wyekkcl, if entered as the third digit / in the counter, check that it is time to send a check-narnl: mov cali truc ^; load the function number, then jump; Cycle off to another US / Pause with illegal number queries (dialing). ikelin:
<td>clr</td><td>funiokkttlϊln</td><td>; byte coating block unlock, character # sets it</td>
<td>setb</td><td>fokiLOkk</td><td>as with onwieellnia</td>
<td>setb</td><td>Ito</td><td>; ekkcz to the ExtIntO support function</td>
<td><sup>cm</sup>p</td><td>small, sealed, transportable, autonomous reactor</td><td>just like raising it again headphones</td>
hhihk_fnlock:
cjne a, # 0fCh] UnlohkingtCa / pop up if if any number after ## has been selected
<td>jmp check send</td><td>/otherwise check if it's time to send</td>
<td>unlocking it:</td><td></td>
<td>setb funlohkairir</td><td>/ rrZśi after 2s bbe kodd SSD</td>
<td>jmp gittnexa</td><td>/ to avoid sending the code unlock as a valid digit</td>
/ Enter here if the number sequence does not qualify as one of the special function options / (blocking, oablokoryrαnCe, double NAM, etc.).
haihk_aena ^
jb artainatimer] hhehktCnal / jump if swin,
<td></td><td>internal connections</td>
<td>setb Cainaaimir</td><td>/ unlocked transmission after 4 s, if sw7 = 0</td>
<td>emp giatnext</td><td>/ and for oorrot] after the next digit</td>
<td>hhehk_Cntl:</td><td></td>
<td>rov ζ ^ ζ ^ ϊχ</td><td>/ test the prefix in the battery</td>
<td>cjne a] # 0] ChihO op</td><td>/ jump if not [0]</td>
<td>a, f ^ st dCgit</td><td>/ otherwise first proper number</td>
<td>cjne a, # 1, haih0tOp</td><td>^ Ιαχ / ,, if not [1], it can be operator call</td>
<td>setb fainaairin</td><td>/ international call! starts on 01- ..</td>
<td>j / p get next</td><td>return the rest, now only broadcasts a time block!</td>
check op:
174 142 mov α, pisfit ^ choose the prefix number again cjns a, # 10, ohsok_asiv1os; akaoz if the prefix is not 0 cjns i2, # 0, ohsok_asiv1oe; akαoz if the digit (digits)
<td>setb fasndelbsi</td><td>also selected ; otherwise it may be operator call</td>
Service check-:
cjns i2, # 3, ohsok_d1atanos; akaoz, if not 3 digits
<td>mov a, sscond digit</td><td>; otherwise,. jeśeii alarm, information, etc.</td>
cjns a, # 1, ćhsok_d1aeanos; akaoz, if the second digit is 1 mov a, ehiid_d1g1t; pał1siz and the third digit cjns a, # 1, ohsok_diatanos; akaoz, if., if the third
<td>jmp ssnd it</td><td>the number is not 1 ; probably alab] arwo. wyliij</td>
<td>check distance:</td><td></td>
<td>cjns r2, # 10, chsok_lαoαl</td><td>, Ozy 10 digits selected?</td>
<td>jmp sendcit</td><td>; display 1 U lO-t ,. if not international</td>
<td>check-CLOCAL:</td><td></td>
<td>cjns i2, # 7gse nett</td><td>; Skoco. if moSu is selected, nij 7 digits</td>
<td>setb fasndelbsi</td><td>; send delivery within 4 s</td>
<td>mov a, sscond digit</td><td>; enter the second digit</td>
<td>subb a, # f</td><td>, Eoy jt is # 1?</td>
<td>jz gst nett</td><td>; eaoαo, yes, it can be directional or local</td>
<td>mov a, sscond digit</td><td>; download the second cffra again</td>
<td>subb i, # 10</td><td>^ tt is 0?</td>
<td>jz gst_nstt</td><td>; eaoao, jsjli yes, ooS. then be no</td>
174 142 area code, it can be local
<td>clr</td><td>fsendtimer</td><td>/ don't download more, take 5 o'clock</td>
<td></td><td></td><td>later</td>
<td>jmp</td><td>send it</td><td></td>
<td>ge0</td><td>next:</td><td></td>
<td>inc</td><td>r2</td><td></td>
<td>inches</td><td>get</td><td>/ Obtain a new number</td>
<td>jmp</td><td>s0ore_it</td><td>/ make everyone, check with</td>
new number • kkk-kk-kkk-kkkkkkkkkkkk-kkkkkkk-kk-kkkk-kkkk-kkk-kkkk-kkkkkkkkkkkkk * t
/ Dialing done, send number • kkkk-kk-kkkkkkkkkkkkkkkkkk-k-kkk-k-kkkkkk-kk-kkkk-k-kkkkk-k-kkkkk-kkkkk-k r
/ Check if TRU is blocked and abort if no unlock code has been entered ^ nd-it:
jb loak, sendl / sOcc ,. jeżii TRU nnie jeot zalloUowann
<td colspan="3">| GaUnd:</td>
<td>jb,</td><td>Ohird digiO</td><td>j · download the third cflta</td>
<td>CJNE</td><td>p, 00ffh, sencH</td><td>j · sOack. if introduced</td>
<td></td><td></td><td>digit</td>
<td>jmp</td><td>^^ πΟ</td><td>/ • other ness ^. hedgehogs no</td>
Unlock code entered / Send selected digit.
^ π01:
setb mute / mute audio rx reception
177 1 42 call write_px2 mov @ r0, # aend mov a, # clear cali wrbus; insert wysanneo no horse cfr; erasure code; insert first the erase code to erase all digits from the TRU memory if you enter it from the handset as the first
<td>mov</td><td>r0, # 60S</td><td>'resetuj0 nlair of love</td>
<td>mov</td><td>a, @ r0</td><td>insert the program, as in msuitOoaa</td>
<td>CJNE</td><td>a, #fJs, out</td><td></td>
<td>inc</td><td>rO</td><td>; dump full ^, jefio FF</td>
<td>out:</td><td>mov a ^ rO</td><td></td>
<td>inches</td><td>wrbus</td><td>; wpsso no manSetlfga</td>
<td>oak</td><td>fSaag — a end ^ k</td><td></td>
<td>test_</td><td>_lc2:</td><td></td>
<td>inches</td><td>sup</td><td>; the gift is over, about Jesus</td>
<td></td><td></td><td>hangup</td>
<td>jmp</td><td>start</td><td></td>
<td>probes</td><td>_okay:</td><td></td>
<td>inc</td><td>r0</td><td></td>
<td>CJNE</td><td>a, # sed ^ out</td><td>; prγetsγmldO to the SND code</td>
<td>setb</td><td>fsend</td><td>'require the sender flag</td>
<td>clr</td><td>mute</td><td>'odlloUd0 phonio rx</td>
<td>call</td><td>write px2</td><td></td>
'Dialing completed, conditional ecSa digit to TRU, then wait for the next possible digits; (internal etc.) or allow control to be taken over by interrupts.
wait:
call get 'check digits from MJ camera
174 142
<td>JNB</td><td>sw data, wait</td><td>/ ζϋ ^ ΐά ^ ó given after blocking snd</td>
<td>call</td><td>webus</td><td>/ otherwise send it</td>
<td></td><td></td><td>to TRU</td>
<td>jmp</td><td>wzit</td><td>/ stay in the loop until</td>
picking up the headphones by us / the headphones or the other side
/ Dial Tonr Generator ********************************************* ************** / Trn subroutine selects and generates the appropriate dial tone, depending on our current state / (roam psahlmy; hoHie - calling etc.) lelnr: push psw jb tlak; srpv_ahrak mov npee; # eαblr_35C / 350 Ho for jmp blocking elne_lse srev_ahrak:
jb nlsepV; Plαm_ahrak mov npeP; # eαblrp620 jmp elnrplue eozm check:
jb se_nnalelnr; nlpmal / tone 620 Hz for nnrlbserwne αnnα signal / if the optional sw is closed (= 0) produce tone / late dial in eozm jb putm, noema mov ^ te ^ tib ^ roam / 440-620 Hz for roam
174 142 jmp tlnm_lkX nurnal: mov dpXe, # tabbm_dt / 350 - 440 Hz (normal
DT) ton out:
<td>mov</td><td>llwplτnt, dpl</td><td>/ remembering where e: Q '// connect \ ia ^<sub>ί</sub></td>
<td>mov</td><td>hTghp! Tnx, dph</td><td>blackboard</td>
<td>mov</td><td>ccapml, # 01000010b</td><td>/ o <block tone</td>
<td>pop</td><td>psw</td><td></td>
<td>r / t</td><td></td><td></td>
/ Pllimer digit from the mTkelX keyboard / leelik • '* ^^ (' k'k ^ 'k'k'k ^ c'k'k ^ i (^ e'k'kki4'k'k ^^ 4'k' 4'k'k k ^^ ^ ( 'i (' * ^^ (- ^^ k'kk ( 'k'k-ki (^ (- *' kk! '^ k'kk e'k' k ^ k'k'k'kk:
/ The subprogram processes incoming digits and / or processing flags / On return / returns the data in the battery
<td>g / p: push</td><td>psw</td><td></td>
<td>g / tl:</td><td></td><td></td>
<td>mov</td><td>f omdkj # 3</td><td>/ flag indicates the function used</td>
<td>call</td><td>trucmd</td><td>/ executes one of the commands</td>
<td>call</td><td>watchdog</td><td>special TRUs</td>
/ Cr / kaj na impuls, j / f / lT impulse / was marked by EXTINT0 (0ee_Hllk_S / eviom) with the flag as / input impulse wzbimeailia, we check as the DTMF input digit. j / f / l is the input signal λ ^ ζΙ ^ ι, ^, impulsewmgl, takes place
174142 77 continues to count the number of ilsuls until the end of 250 ms after the last pulse. In this lilCek we consider the numbers numilPailC; ilsuleowk to be zakkńklkin lnetawlαiln, so that we copy it to the battery and set the flag fnig_Plany.
get_pulse:
<td>JNB</td><td>fdigitIgnh dtmf</td><td></td>
<td>clr</td><td>fdtom</td><td>; reset the flag for the Wybirania tone.</td>
<td>mov</td><td>ccapml, # 0</td><td>; disable dial tone</td>
<td>mov</td><td>a, # 2</td><td>if an input signal exists</td>
<td>clr</td><td>c</td><td>; delete transfer before knljlkwanill</td>
<td>Subb</td><td>a, himl_kff3</td><td>; eprawdW] whether 213.3 ms elapsed (3x71.1 ms)</td>
<td>JNC</td><td>get_dtmf</td><td>^ ΙΙ-ιΙ! not yet, p tp digit no is full</td>
<td>mov</td><td>and, # 131</td><td></td>
<td>clr</td><td>c</td><td>; delete transfer before kneClkwαiill</td>
<td>Subb</td><td>and, tlml_kffl</td><td>, · Check if additional ones have expired 36.7 ms (132x277.8 us -; łdkliil 250 ms)</td>
<td>JNC</td><td>get dtmf</td><td>; jiżil-L Cnszcz ni, p is a number is full</td>
<td>mov</td><td>and, pulse_digit</td><td>; enter the number into the battery</td>
<td>mov</td><td>pulse_digit, # 0</td><td>; kascC for the next digit</td>
<td>setb</td><td>fdig ready</td><td>; during the message] that the number is ready</td>
<td>clr</td><td>fdigit</td><td>; delete flag</td>
; If the DTMF digit being dialed is ready, copy it to the battery. Check the conditions esekCali.lI; flaeO ^ 'W knwllelliil etc. Perform a conditional jump in the case of conditions
174 142 special or continue / apnaradenie for further C impulses / or full digits ?.
<td colspan="2">git_darf:</td>
<td>JNB clr</td><td>fcaafin, hang fcatne</td>
<td>mov</td><td>cccpmi, # 0</td>
<td>clr</td><td>fdamffn</td>
<td>mov</td><td>N-Pl temp</td>
<td>or</td><td>a ^ CCH</td>
<td>setb</td><td>ready</td>
/ reset dial tone flag / disable dial tone / reset DTMF input flag; · feed digit to battery / keep only lower four bits / to indicate readiness ο / ζ ^ χυ / Check oariiazinia (pulse 700 ms).
hang: jnb faαng] Clαsh / if not hanging up
<td>pop</td><td></td><td></td>
<td>test</td><td>LC3:</td><td></td>
<td>call</td><td>HHU</td><td></td>
<td>OEC</td><td>ss</td><td>/ correct the stack pointer</td>
<td>dec</td><td>ss</td><td>/ by learning a subroutine without ret. instructions</td>
<td>JNB</td><td>fneroai_</td><td>thuO] nOtnimoai / jump if signal no ņemot</td>
<td>clr</td><td>fnemoai</td><td></td>
<td colspan="2">no nemote:</td><td></td>
<td>jmp</td><td>small, sealed, transportable, autonomous reactor</td><td>/ leave, someone hung up the phone</td>
/ Check for flash (200 <pulse <700ms). gClash: jnb fflaah] aCmi / if not flash cln fflash mov ccaomi, # 0 jb fatoni, euaa flash / delete flafl ”flacl / disable dial tone / U ^ ż ^^ ł ^ and enable dial tone, send only again
174142 77 'last dialed jb number fsend, dsat-laaS' if the send flag is set, nis enter digits,
<td>clr</td><td>dtons</td><td>'send only 'cassia dial tone flag</td>
<td>pop</td><td>psw</td><td></td>
<td>dSC</td><td>sp</td><td>'correct the stack pointer</td>
<td>dSC</td><td>sp</td><td>'leaving a subroutine without</td>
<td>jmp</td><td>^ send it.</td><td>instructions rst 'win the numbers +</td>
'Send only the SEND code, als bsz digits, if either Dial Tone or Lag probe is high.
dsae_laaS:
<td>clr</td><td>dtons</td><td>'reset dial tone flag</td>
<td>mov</td><td>crnds ^ S</td><td></td>
<td>inches</td><td>trucmd</td><td></td>
<td>mov</td><td>and, send #</td><td>'send code</td>
<td>inches</td><td>wrbus</td><td></td>
<td>sst</td><td>fsend</td><td>'send flag</td>
<td>pop</td><td>psw</td><td></td>
<td>dSC</td><td>sp</td><td>'correct stack pointer</td>
<td>dSC</td><td>sp</td><td>'leaving the subroutine bsz 'instructions rst</td>
<td>jmp</td><td>wait</td><td>'return for a number, ocPwąesie] s0e etc.</td>
'If we have still dialed the full telephone number, and 40 seconds have passed since the last press' of the key, the text begins: mtautoaγ ton Sollsra.
time:
dab fti ims.s sad_e ims pop psw 'if time has elapsed
174 142
<td>dSC</td><td>sp</td><td>; correct the stack pointer</td>
<td>dSC</td><td>sp</td><td>/ • leaving the subroutine bsz</td>
<td></td><td></td><td>instructions rst</td>
<td>jmp</td><td></td><td>, 'then be full</td>
<td>; Check</td><td>has it come</td><td>transmission time (4 s have elapsed since</td>
last key pressed).
<td colspan="3">asnd_t1bs:</td>
<td>JNB</td><td colspan="2">fasndelbsi, snlaok tims</td>
<td>mov</td><td>re ^ ims off2</td><td>; in r6 time 71.1 ms</td>
<td>cjns</td><td>R6, # 56, unlock</td><td>tirne / 'check for 4 s (56 t 71.1 ms</td>
<td></td><td></td><td>= 3.98 s)</td>
<td>clr</td><td>yasndelbsi</td><td></td>
<td>pop</td><td>psw</td><td></td>
<td>dSC</td><td>sp</td><td>; enable stack pointer</td>
<td>dSC</td><td>sp</td><td>, • leaving the subroutine bsz</td>
<td></td><td></td><td>instructions rst</td>
<td>jmp</td><td>ssnd it</td><td>, • output numbers and send</td>
<td>; Check</td><td colspan="2">whether unlock was requested.</td>
unlaok_tibs:
jnb yunlaoktibsi, laok_tibs
<td>mov</td><td>r6, elbs_ayy2</td><td></td><td>; in r6 time 71.4 ms</td>
<td>cjns</td><td>i6, # 28, laak</td><td>c</td><td>/ check on (28 t 71.4 ms =) 2</td>
<td>clr</td><td>yunlaokt1bsi</td><td>about</td><td></td>
<td>pop</td><td>psw</td><td></td><td></td>
<td>dSC</td><td>sp</td><td></td><td>; enable stack pointer</td>
<td>dSC</td><td>sp</td><td></td><td>/ • leaving the subroutine without</td>
<td></td><td></td><td colspan="2">instructions rst</td>
<td>jb</td><td>lockono unlock</td><td></td><td>; nis unlock, already</td>
unlocked
174 142
<td>jmp</td><td>unlock it</td><td></td><td></td>
<td colspan="2">no unlock:</td><td></td><td></td>
<td>setb</td><td>fonhook</td><td>/as with</td><td>hanging up</td>
<td>setb</td><td>IEO</td><td>/ jump to</td><td>operating function</td>
<td></td><td></td><td>extinto</td><td></td>
<td>jmp</td><td>start</td><td>/as with</td><td>raising again</td>
<td></td><td></td><td>headphones</td><td></td>
<td colspan="2">/ Adding value</td><td colspan="2">flocktimer to enable</td>
block the passage of time with less than 4 digits.
; You must add the go_lock label to TRU and set the flocktimer (if necessary).
lock_time:
<td>JNB</td><td>flocktimer, look</td><td>/ jump if not</td>
<td>mov</td><td>r6, time off2</td><td>/ w r6 time 71.4 ms</td>
<td>CJNE</td><td>R6, # 28, look</td><td>/ check for (28 x 71.4 ms s)</td>
<td>clr</td><td>flocktimer</td><td></td>
<td>POP</td><td>psw</td><td></td>
<td>dec</td><td>sp</td><td>/ correct SP</td>
<td>dec</td><td>sp</td><td></td>
<td>jmp</td><td>go lock</td><td></td>
<td>/ Check</td><td>do we have (all)</td><td>digit</td>
<td>look: jb</td><td>fdig_ready, got_a</td><td>_digit</td>
<td>jmp</td><td>getl</td><td>/ check again or not</td>
numbers entered / Poor number (pulse or DTMF), we return it in the battery.
got_a_digit:
clr fdig_ready / delete the got_inuse digit readiness flag:
mov time_offl, # 0 / start time blocks with each entry / number
Π <4 142
<td>mov</td><td>time</td><td> #0</td>
<td>mov</td><td>timr</td><td>_laa3; # 0</td>
<td>pop</td><td>psw</td><td></td>
<td>ert</td><td></td><td></td>
; ************************************************* ********** / Download a digit from the miSrlerlinal keyboard * · ******************************** *************************** / The subprogram processes incoming numbers and / or processing flags / Pezy plwrlair; will be given in aks: mslaelecr grtptrst:
push psw / Jrrr dialed the DTMF digit is ready, copy it to the battery. Check for special conditions, / ^ 1 ^.<sup>1</sup>W Invirshiny etc. Perform a conditional jump in the case of special conditions or continue / check for further pulses and / or full digits.
<td colspan="3">git dtmf:</td>
<td>JNB</td><td colspan="2">fd.tmfin, no dtff test</td>
<td>cle</td><td>Fatone</td><td>/ k / suj u1ι | ι toto u / wybierln</td>
<td>mov</td><td>«Wash it, # 0</td><td>/ turn off / turn on</td>
<td>clr</td><td>anemann</td><td>/ kasu / l ^ j ^ i ^ ge I hide it ΙΧΜ1</td>
<td>mov</td><td>u, pxt temp</td><td>/ lead off ^ e to the battery</td>
<td>or</td><td> 1,#01111</td><td>/ icαeζcwιa1 ŁiWIo adOtn / four beaten</td>
<td>srtb</td><td>fnng_eelnw</td><td>/ to indicate readiness</td>
digits
174 142
<td colspan="3">no dtmf test:</td>
<td rowspan="2">clr mov</td><td colspan="2">fdig r / ady</td>
<td>tim / _</td><td></td>
<td>mov</td><td>time</td><td># of _lee2j</td>
<td>mov</td><td>tim /</td><td> #0</td>
<td>pop</td><td>psw</td><td></td>
<td>r / t</td><td></td><td></td>
/ delete the ready flag digits / ueuchlili / iie time blocks with each entry / digits »kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk /
f / kmid_dtme - send tone select / rania • kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk /
<td colspan="6">k / nd dtmf:</td>
<td>call</td><td>watchdog</td><td></td><td></td><td></td><td></td>
<td>clr</td><td>dtmf out</td><td></td><td>/ unlock</td><td>tone</td><td>dfemf</td>
<td>call</td><td>wiTX € _3 ^ ^ o_</td><td>mb</td><td></td><td></td><td></td>
<td>k / TB</td><td>dtmf-Out</td><td></td><td>/ unlock</td><td>tone</td><td>dtmf</td>
<td>inches</td><td>writ / To</td><td>mb</td><td></td><td></td><td></td>
<td>r / t</td><td></td><td></td><td></td><td></td><td></td>
• kk kk kkk kkk kk kk kk kk kk kk kk kk kk kk kk kk kk kk kk kk kk kk kk kk, ό1ι_! ΧμΙ - send ton wzbi / rania • kkkkkkkkkkkkkkkk
^ disable dtmf:
clr dt: ie_lut / unlock ton dtmf call weiXm_il_m_l r / t
174 142
<td colspan="2">delay dtmf</td><td>/ DTMF tone delay</td>
<td>clr</td><td>tri</td><td>/ delay for checking work</td>
<td>mov</td><td>time off2, # 0</td><td></td>
<td>mov</td><td>time_off1, # 0</td><td></td>
<td>setb</td><td>tri</td><td></td>
<td>wait</td><td>_until dtmf:</td><td></td>
<td>mov</td><td>and, time_off2</td><td></td>
<td>call</td><td>watchdog</td><td></td>
<td>CJNE</td><td>a, # 4, wait until</td><td>dtmf / wait 40 ms for</td>
stop dtmf ret. ********************************************** ************* vol
t; ROH tone generator /
************************************************** ********** vol
; 40 s after picking up the handset without selecting any digit, or from selecting the last digit. We generate the ROH tone (intermittent at 80 ms intervals) within 1 minute, or until the handset is lifted - hang_up, depending on which situation occurs first.
rohtone:
clr ftime / reset flag clr fdtone / reset dial tone flag so that indicator changes do not / cause tone changes ROH mov dptr, # table_400 mov highpoint, dph / remember location of mov lowpoint table, dpl setb roh_boost / increase audio level
174 142 inches wri0n_ox2 roh0onn_on:
mov aaPOIi1,001000010b / turn on tone
<td>/ Pocot0pń in a loop through (Hook).</td><td>1 minute or to hang up</td>
<td colspan="2">check hang-iup:</td>
<td>cpll wpOchdog</td><td>/ refresh v ^ p ^ 0 ^ c ^^^^ g pending this place</td>
<td>jnb hhpne, ahnak 0emnou0</td><td>/ jump if still a photo headphones</td>
<td colspan="2">0nt0lc4:</td>
<td>call hup</td><td>wwuOnPj and 2 ^ 41/0 ^ 1 oWintcnaiek, jjee handset for return / about</td>
<td>jmp start</td><td>wwpooaod1 new staot</td>
<td colspan="2">Oimeout check:</td>
<td colspan="2">jb faoh0imnout, aoh_0emnou0 / tkoac if it has expired time roh (after 1 ienuain ^;</td>
<td>jb roh gn, aoh0onn</td><td>_he</td>
<td>mov aaρom0.00</td><td>on tone</td>
<td>jmp check hpngup</td><td>/ this late change turns on and turns off aoh</td>
<td colspan="2">roh Oimeout:</td>
<td>mov aaαomO, 00</td><td>calling tone</td>
<td>clr roh IoosO</td><td>/ off fhgai level increase</td>
<td>setb loootwe0ah_</td><td>/ It will prevent polla</td>
<td>inch wre0n_px2</td><td>vwpaooaddz de port</td>
<td colspan="2">lc5 test:</td>
I want to drive away
174 142 cf.
Ump / Go here looptest:
mov loopai:
mov aód loopt ?:
call cjne djnz clr call mov looptS:
mov aenz call denz jb sWtgndatant] loopteat / perform loop test if start loop of ioopteaatena / do not run if ground start, only / leave the loop open until udiirCenCα of the bell we are in Loopstar ^ mode.
b, # 40 / set delay, s (40 x 5, ms) a, timetdn2 / download current hanging time a, # 5 / dodei 5, m, to the present time loooarCach wncte px2 watchdog / refresh, watcła <dog
α] tCmetOnS, loooa2 / smaller delay is 50 ms ^^ op ^ / wait in total, s / Zimykej loop every 2, for aprαraziniα _ / whether the handset has been put back on the fork lood0aiaatacιre2 ,, # 115 / order, delay 2.2 , ms (8 x 277.8 us) looPest__timer, # 0ffC. / in order to provide sufficient time for the / SLIC looptiat_aimir] $ system, / to indicate the status of the watchdog odriiazinik; laugh watchdog loooaiatttCmenS] looot3 lCt, ldOoaisatind, / sdcds, jelC, bra, prddu
174 142 loops (hanging up) setb looiaatecS 'open ioaoaais loop switch
<td>clr</td><td>looiaatecS</td><td>'close the loop every 2 s to end</td>
<td></td><td></td><td>check</td>
<td>call</td><td>writs px2</td><td></td>
<td>jmp</td><td>fooiesae</td><td>'Waiting .; to hang up</td>
<td>looiesat-</td><td>snd:</td><td></td>
<td>clr</td><td>'froStimeout</td><td>; 0 = there was an unstoppable walk</td>
<td></td><td></td><td>work in GS mode</td>
<td>mov</td><td>timis onl-ztO</td><td>'time block growth</td>
<td></td><td></td><td>hook</td>
<td>mov</td><td>ttmιS-OA2. # 0</td><td></td>
<td>jmp</td><td>start</td><td>'start again</td>
<td colspan="3">• * -kieie'kieie'kieie '*' łeie * 'kieie'kieie' * ie ^ -kieie'kieie'kie'kieie-kieie'kieie- * ieie'kieie '* ieie'kieie' * ieie'k-kieie r</td>
<td>r '</td><td colspan="2">Subroutine, for hanging</td>
<td colspan="3">r • * * * · * * * * · * ** ** ** ** ** ** ** ** ie ** ** * ie ie ie ie * * * * * * * * ** ** ie ie ie ie ie ie ie * ie ie i * ie * * * * * * * * * * * * * * r</td>
<td>sup:</td><td></td><td></td>
<td>call</td><td>watchdog</td><td></td>
<td>clr</td><td>ex0</td><td>'lockdj 0X ^: 0 (photo LC_)</td>
<td>clr</td><td>digit</td><td>in the event of a lift during</td>
<td></td><td></td><td>pulse dialing</td>
<td>mov</td><td>pulse digit, # 0</td><td>in case of tact during</td>
<td></td><td></td><td>pulse digit input</td>
<td>clr</td><td>f dig__ready</td><td>in case of tact during</td>
<td></td><td></td><td>pulse input / dLm</td>
<td>clr</td><td>dtmfin</td><td>'for tact during</td>
dtm input
174 142
<td>clr</td><td>ylaokt1bsi</td><td>in case of tact during blocking</td>
<td>clr</td><td>yunlaokeibsi</td><td>in case of tact during unlocking</td>
<td>JNB</td><td>sw gndaeait,</td><td>hupl; akaoy, if the loop starts</td>
<td>SSTB</td><td>laopsrleoh</td><td>^ starting the grounding Laapar opening for 750 ms</td>
<td>call</td><td>riits pt2</td><td>; for tact simulation</td>
<td></td><td>a, eibs on2</td><td>; increased every 10 ms</td>
<td>add</td><td>a, # 75</td><td>; scraper 750 ms</td>
<td>push</td><td>acc</td><td>; zaoharaj for later</td>
jmp hup2 hupl hup2 jb yiαhtibsαue, hup2
<td>clr</td><td>laapswleoh_</td><td>; jslili start loop</td>
<td>call</td><td>Returns pt2</td><td></td>
<td>clr</td><td>Fums</td><td>; show time block flag</td>
<td>clr</td><td>yssndelbsi</td><td>; send block broadcast flag time</td>
<td>mov</td><td>c ^ pml, # 0</td><td>; take up your dtons jsst excluded</td>
<td>clr</td><td>fdtons</td><td>; mark the dial tone flag</td>
<td>clr</td><td>roh boost</td><td>; fαniα normal</td>
<td>call</td><td>riits pt2</td><td></td>
jb fiebats_hs ^^, na_snd_asnt; nis send the final jssel if the remote tact, because nis has; eak1sj need, and nis are necessary to clear the buffer; Motorola mov a ^ endkall; check the end code of the call ^ bus; send the best to TRU, then delete the flag
174 142 ik_iid_sent:
<td>clr</td><td></td><td>; in case of sending Iub numbers alarm response</td>
<td>setb</td><td>Okkkswkut</td><td>; so] <hang up to TRU</td>
<td>clr</td><td>Okkkewkut</td><td>as above</td>
<td>CNB</td><td>sw_ginetapt,</td><td>hook4; ιιίθ at suction p ^ tli</td>
<td>pop</td><td>acc</td><td>; download back delayed / time</td>
<td>clr</td><td>c</td><td>; clear transfer flag before</td>
next hup3 instruction:
inch watchdog αIhilli_ki3, $ + 3; OnklikaC 750 ms to allow open loop and pbx in; several espawnliiia that is off. Jump to iaetęsi · iC; lietPukkCi unconditionally
Cnc hup3; πϊι movep as long as hili_on2 is larger than the battery; (in case if bus write took ^ C than 750 ms) hup4:
<td>setb</td><td>fonhook</td><td>; uehaw</td><td>the refresh flag</td>
<td>clr</td><td>fhang</td><td>; delete</td><td>lifting flag</td>
<td>clr</td><td>f one sec</td><td>;or</td><td>honorary block of l</td>
start skikwiii after photo; headphones clr f_liueioffhiliig; kaeuC flag setb ex0 / - unlock ixhlntk (photo of headphones). **************************** **************************
/
TRU status update
174 142
/ The subroutine updates the TRU status every 71.4 ms and turns the ringer on and off. It also checks for 3.9 seconds after calling update_displays: push acc push psw upspecl:
jnb fspecl, continue_update / check the special flag
<td>inches</td><td>SPECL</td><td>/ special subroutine in the section TRU</td>
<td>continue</td><td>update:</td><td></td>
<td>jb</td><td>test_enable, go_</td><td>_to_self / check if the test itself He started</td>
<td>mov</td><td>and, lampSptemp</td><td>/ keep values until later comparisons</td>
<td>mov</td><td>c, roam</td><td></td>
<td>cpl</td><td>c</td><td>/ in fact there are no lights for Maxjacka!</td>
<td>κιον</td><td>roamlamp c</td><td>/ roam indicator (only to remember)</td>
<td>mov</td><td>c noserv</td><td></td>
<td>cpl</td><td>c</td><td></td>
<td>mov</td><td>noservlamp c</td><td>/ no service indicator (only to remember)</td>
<td>mov</td><td>c, lock</td><td></td>
<td>cpl</td><td>c</td><td></td>
<td>mov</td><td>locklamp c</td><td>/ blocking indicator (only up to</td>
remember)
174 142
<td>mov</td><td>c, muse</td><td></td>
<td>cpl</td><td>c</td><td></td>
<td>mov</td><td>inuselamp c</td><td>/ work indicator (only up to remember)</td>
<td>inches</td><td>write io c</td><td>/ LED updates</td>
jb sw_dialtone, not_maint / if the sw option is off (= 1) / without the test_push programming module:
<td>inches</td><td>read io ma</td><td>/ read out</td><td>button</td>
<td>or</td><td>and, # 00010000b</td><td></td><td></td>
<td>CJNE</td><td>a, # 0h, not push</td><td></td><td></td>
<td>setb</td><td>test_enable</td><td>/ initialize</td><td>service test</td>
<td>setb</td><td>fremote hup</td><td colspan="2">/ set the remote clock cycle to 700 ms</td>
<td>setb</td><td>loopswitch</td><td colspan="2">/ other side disconnected</td>
<td>inches</td><td>write px2</td><td></td><td></td>
<td>not_push:</td><td></td><td></td><td></td>
<td>JNB</td><td>test enable, not</td><td>maint</td><td>/ check start</td>
go_to_self test:
<td>JNB</td><td>test end, not error yet / if not found</td>
<td></td><td>error</td>
<td>JNB</td><td>error flag, pass ok</td>
<td>led test:</td><td></td>
<td>mov</td><td>rO, # error_code</td>
<td>mov</td><td>a, @ r0</td>
<td>rl</td><td>and</td>
<td>rl</td><td>and</td>
<td>rl</td><td>and</td>
<td>rl</td><td>and</td>
<td>mov</td><td>lamps_temp, a</td>
<td>inches</td><td>write io c / update LEDs</td>
<td>setb</td><td>ext led / enable external led for 1</td>
174 142 minute
<td></td><td>jmp</td><td>weiter is c</td><td></td><td></td><td></td><td></td>
<td>pis</td><td>okay:</td><td></td><td></td><td></td><td></td><td></td>
<td></td><td>clr</td><td>ext led</td><td>/ vice</td><td>led</td><td>external</td><td>no 1</td>
<td></td><td></td><td></td><td>minute</td><td></td><td></td><td></td>
<td></td><td>jmp</td><td>wpierpeOpa</td><td></td><td></td><td></td><td></td>
<td>not_</td><td>rero</td><td>_yet:</td><td></td><td></td><td></td><td></td>
<td></td><td>jb</td><td>rxt lr!, cle</td><td>lid</td><td></td><td></td><td></td>
<td></td><td>srtb</td><td>rxt trd</td><td>/ vice</td><td>led</td><td>external</td><td>which themselves ^ s</td>
testing jmp weiei_elpa ΑΡρΙη ^:
<td>cle</td><td>ext led</td><td>; external led paid during testing</td>
<td>pinned it</td><td>c:</td><td></td>
<td>cull not miit:</td><td>writer iOpc</td><td>· WaccśWwwacoz Doz śntepcnwny</td>
<td>mov</td><td>a, lamps temp</td><td>/! ^: has deprecated ^ <^ and ^^ them worth to late Slmplelaan</td>
<td>jb</td><td>frohtimelse;</td><td>oompare</td>
<td>mov</td><td>c, ap2</td><td>check if we are in aelniz ALERT</td>
<td>ant</td><td>c, / apl</td><td>/( that is, waiting for incoming call)</td>
<td>JNC</td><td>compare</td><td>/ blemish, if not ALERT (no eahldcwaz connection)</td>
<td>JNB</td><td colspan="2">falnIoolkCompa: re / stoc, oh handset znatea, nir ring the bell!</td>
<td>cle</td><td>loooswitch_</td><td>/ ^ «^ Ι ^ Ι ^ ηύO switch was looped, ύ ^ 1ή ALER.T status,</td>
<td>cull</td><td>eeier px2</td><td>/ (call waiting</td>
wahlncwaigo)
174 142 jb foallje / s / t_eiig_Ximme / skocz, j / śli already drwlnτ / nτ / k / tb fcall / 1 = ploząt / k άΜΜί / πί, (detected
ALERT) mov bell_timer, # 0 mov bell_timer2, # 0 k / tb f łbell soianci mov dptr, # table_20 mov loowpoint, dpl clr ring_ k / tb n ^ rina call welt / _pe2 r / s / t ^ rn n_t ime r:
mov ring_timer ,, 0 olmpare:
erl a, lamps_temp / delete time bladki / bell action flag / at joke / how many indicate at 20 Hz table / remember plora X / k table of bell / iia mov highpoint, dph k / tb tw / ntz ^ h ^ pwm mov ooapm2j # 010000101
X / SX1:
/ taC, so the pin can be pwm / unblock pwm / switch on the pc ringing / lead to the port / ka ^ j between bells close to time until / we are ALERT / different bits should be
1 jb f_one_sec, dtbits / waiting C s after removing the handset front / d check / ni / m / / work lights, riplbi / g and disconnection j / f / li / pictures / / the headphones have already followed the signal / tact mov o, ioo.7 / get the status IIUJSE anl o, 2iπkk / limp; C = no IIUJSE jnc timing_in_use_off / run the block for time if
174 142 lkrokk inuse already disabled mov intUaitOff_aCmin, # S8; nfaaw time block nz again with 1.99 s (28 x 71.1 ms) Setb f_inusidCfairing // «let the block shut down aCmCng_in_use_off:
jnb infselkmO] hont_CntUSitaCmCng / do lkroOk work still off clr. ftiming / if ni,, kasu, phlegm stop stop time, cont ^ nu s ^ tt name ng:
jnb f_inusiofftCring, aabCts / if the flag is fsakrionk continue to save time denz intUSitOffttimin] dtbCaa / disconnect when the time block reaches 1.99 s clr ft_tnuseoffaCming / cassia Clage jb Conhook, dtbits / if necessary / We enter here if the other party hangs up C does not put the handset back / forth within 2 s.
dCacdnnect:
setb fnimotitafo setb ldoparCahat czll rnCtitOxS dt ^ s:
anC k] # 01110000l / set the remote clock cycle to 70, ms, · the other side disconnected / check, only bits regarding the dial tone jz ringtaCmidut / if there are no changes jb ydeαns, i1ng_tibsαst; or if DT nis jsst enabled mov ccepimlz # 0; it is current. DT
Call dtons; bins for the new dial tone i1og_timeout:
<td>JNB</td><td>fcall, updats done</td><td>; keep track of time</td>
<td>inc</td><td>ring</td><td>calling if Nis has connections; ; every 71, j ms</td>
<td></td><td>a, # 53</td><td>; 5j x 711 isj = 3.4j p</td>
<td>clr</td><td>c</td><td>/ · Delete transfers before</td>
subtraction
<td>Subb</td><td>a, ring tiimer</td><td></td><td></td>
<td>JNC</td><td>update_done</td><td>; if it is attached</td><td>3.84 p</td>
<td></td><td>tr</td><td>ringing</td><td></td>
<td>jb</td><td>fbellsound, upatSc</td><td>done; ^^^ k ^ j also</td><td>down</td>
ringing disappearance ohsok_atop_ring_ps:
<td>mov</td><td>a, # 3</td><td>; jx 25 j iso = 10 j ms</td>
<td>clr</td><td>c</td><td>; ready to go ^ ^ ^ ^ ^ ^ ^ ^</td>
<td>Subb</td><td>a, 0> θ 1 l_t imer2</td><td></td>
<td>JNC</td><td>update_done</td><td>; if prsenSaieeoSo,</td>
jb ring_, check_stop_null ^ Ιωοο, ringtone ps
<td colspan="4">already turned off</td>
<td>SSTB</td><td>ring</td><td colspan="2">; otherwise, turn it off</td>
<td></td><td></td><td>now the bell</td><td>ps</td>
<td>call</td><td>wrrte_px2</td><td>; correct to</td><td>potuu</td>
<td>clr</td><td>no dg</td><td></td><td></td>
<td>inches</td><td>PX2</td><td>; produce a dj</td><td>pr-Tuu</td>
chsck_stop_null:
<td>mov</td><td>and, # 0</td><td>; jx 2 j is j = 20 j ms</td>
<td>clr</td><td>c</td><td>; ready for execution odujaownia</td>
<td>Subb</td><td>a, bsll t ^ erl</td><td></td>
174 142
<td>JNC</td><td>upOate done / if oaznnentinnin, 200 ms</td>
<td>mov</td><td>aaαpm2, # 0 / stop pwm</td>
<td>cla</td><td>Owenty hz pwm / pocot0 after output pin w low state, pwm was active 10 ms / longer than ps bell / p, Ola oadnline smoothing</td>
<td>cla</td><td>haρll / 0 = no ALERT, cpononep ninOcoonennin</td>
<td>JNB</td><td>sw gn0t0ρa0, uo0ρtn_donn / tkoac if loop start</td>
<td>setb</td><td>looOtoe0ah / GS does not answer, e.g. ringtone</td>
<td>cpll</td><td>waite px2</td>
up0α0n_0one:
<td>jb</td><td>fcall, ng_antn0 io</td>
<td>JNB</td><td>lc_, no_antn0 io</td>
<td>jb</td><td>haoh0imngu0, no antn0_io</td>
no_aetnt_io:
<td>pop</td><td>psw</td>
<td>pop</td><td>acc</td>
<td>aet</td><td></td>
fr
/ Reload t0ooo ooaóonaoccn control op0ah0oe /
. ************************************************* *****
op0ahdog:
<td>push</td><td>e</td>
<td>cla</td><td>ea / zablou ^ interrupted</td>
<td>mov</td><td>ccap41 # 0 / -ws / paż at the beginning of the current s ^ aon</td>
<td>mov</td><td>ccap4h, ch / current page</td>
<td>pop</td><td>e</td>
<td>ae0</td><td></td>
174 142 · ************ Of kkkkkkkkkkeekkk-ki ^^ kkkkkkkkkkkkkkiekkkkkkkk; TimsrO (TLO) hang up interrupt routine • 'kk'k'k'k'k'k'kkkkkkk * kkkkk-k-kkk-kkkk'kkkkkkkk ** kkkkkkkkkkkkkkk t
<td colspan="4">onSook timer:</td>
<td>Puss</td><td>psw</td><td></td><td></td>
<td>Puss</td><td>acc</td><td></td><td></td>
<td>clr</td><td>tri</td><td>'zatzYyadO</td><td>bloO you dashed it off</td>
<td></td><td></td><td>headphones</td><td></td>
<td>clr</td><td>tl</td><td colspan="2">'sasudO pssrawanlo block was hung</td>
<td></td><td></td><td>time</td><td>pictures of headphones</td>
mueS-CSeck: db mute, oa-Siec2 'if already muted, drop sstb muts; silence rx to prevent' aSasγwsmu 'from decoding audio ringing as dtm. also prevents 'audio feedback' from inch arteS — ix2 when entering port oa_apec2:
jnb fspsc2, oa — Sisc2 — doae 'check the flag call aisc2' call the special subroutine in the TRU section oa — Spsc2_done:
djnz dtaifaγ_delaγ, gs_init; within 71.1 ms call uidleS — diailaγa 'every 71.1 ms gs_init:
174 142 jb fcal 1 cont_serrvice, the incoming połądenia dump onto lilkCsllzαcji GS JNB sw_ginstaphI kknh_eipviki; eWocz if NLE mode GS JNB fonOokWICknt_eiPvlki ^ Ιι cziWsC on the ground tone for the mobilization of GS; pliklywishigo postpone ełucOawkl jb rlng_gpound_I cknh_gpkunnehαpt clp loopswitch_; service request start by grounding call write_px2 mov gndstart_ti] lerlI p0 mov gndnehsr_etmlir ,, 0; inieCalizcj time block kknt_gpkundstart:
lnc gnnshspt_tllipl; sbknint slowed the ringtone iov αIgndetspt_tlmiPl a, # 90, sipviki account; 25 ms (90 x. 277.8 ps) lnc gnnetapt_tlmip; 3ck 25 ms mov gnnetspt_tlmiPlI # 0hapt_ 1 s (40 x 25 ms) setb lkksewitcO_; open the loop after a second if the subscriber has not closed ;; ^ 1ϊ call wpihi_px2 kknh_eirvike ::
jb fks0l, plng_konhPk0 / skocW] if the ALERT state for jms knOkkW_hllipe call generation; in sPlikivnzm case, only update the clsekwi blocks; UpukOsmiαmy nlWknik, Ciżi0ί TRU Cest in ALERT state (incoming call waiting for receiving).
174 142 eing.aontrol:
jb abr11alunl; en] mnnjpring / Scdzwon does not ring in the ringing cycle, check / ring the bell to signal the response to impulses / ringing jb Ρnngpgelsnnp; enmnngpeinj / if nir has a ringing ground, measure the ringing time, / then ignore the pulse on the ringing ground, after cessation / ringing mov a ^ bZl-Beer ^ / impulses every 25 ms cjni a; #C; jeareabrlljlunn / check the ground ringtones after 25 ms mov u, # 28/29 x 277.8 us = 8.1 ms cle c / readiness should be subb α; brllpenmre jnc teminn_PΡnn / no transfer to 8.1 races after the call stops / ignore only ringing confirmation after 8.1 ms jmp saeue_PbZ1tal ^ d / if confirm lzwlnirnna indicates the connection of the handset during / in poland, restart 20 Hz in crlu extortion / calling ring timńngp ~ ring:
inc br1lpenmre mov u, brllpenmre cjne a, # 90, PWngrPpOn mov brl1peimre; # 0 inc br1lpenmre2 eWngzPpOn:
jnb abrllslsnlS emnger / co 277, o O as / 2O ms (90 x 277.8 ps) / TestujO for i ^ ^ ^ st ^ ne 99 / every 255 ms off / jump, arrogle in trj
100
17 ^ 142 moment ringing does not ring / Activation time the ringtone has been modified from 1.95 s n with 1.975 s, Azronik stops at a positive pulse which is continuous. This promm resulted from a box with five; ddrdnkarl · c, atdsorkneU from MaxUack. (ssh) checOtatoPtlellaound:
mov k, lelltaCminS / save time elapsed ringing cjne k] # 59] OnhooktaCmera / lust,, jeesC,: ιlCieS, than x 25 ms = 1, 975 s mov k, billtaimir / 4, x 27 ,,, μ, = 12 ,, ms (total 1.987 s) cjne k] # 45] OnhooktaCrers / ringtone priesaeie operate after 1.987 with a negative pulse, / cuts the last quarter of the cycle to correct the string / ringing aaoPtbillaound:
mov cckomS] # 0 clr elillsouna mov dotr] #aklli mov lorooCna, dol; unprofit pm /, = the bell does not ring null / insert a zero tone table (zero tone causes; azroneO has zero output variable component, only / batenCC voltage / memory, beginning of de2orej array mov highodCnt, doa mov cckomS, # 01000010b / ο ^ ΐο ^, pm cln ea cln notrcng cali wnitipPxS
174 142
101 setb ea call watchdog jmp reset_bell_timers ringer_off:
mov a, bell_timer cjne a, # 120, onhook_timers x 25) start_bellsound:
call reset_io call write_pxl call write_px2 clr ea setb no_ring call write_px2 setb ea mov ccapm2, # 0 mov dptr, # table_20 mov lowpoint, dpl mov highpoint, dph mov ccapm2, # 01000010b test_relayl:
setb fbellsound reset bell_timers:
mov bell_timer, # 0 mov bell_timer2, # 0 onhook_timers:
inc time_onl / reset time blocks / 4 s without ringing (160; unlock pwm; indicate table for 20 Hz / remember table start / unlock pwm / 1 = bell is ringing / every 277.8 ps, when sewing mov a, time_onl cjne a , # 36, onhook_done / 36 x 277.8 ps - 10 ms
102
174 142 iac time on2 '• what IO m, o when I leave the mov etys_oal, # 0' restu; O no next 36 mnv a, tiye — Oa2 cjnea, # 0, aot — iac255 inc tese-min; 1O iso at 25O =, 25O s ale — tac255:
jp tlStimeout, oa] sloO — for 'dump hanging information up to a positive' toast result tsae_hangl:
jb foaSooO, onSloO — for new carry out a new hang-up if iodine is left; done to_hang2:
nv a, etye — Oa2.
; ON-HOOK STATUS; cjaea. # 70, laSll0 — doao; 700 ms indicates hanging cjaoa, # 36, oaSolO — dlao; 700 iss hanging on toat_hang3:
sotb Sang; set hanging flag clr f — iausoofeiyiag 'stop time block in backward sailbteżoaia possible' eaOelaaats remote laSooO_done: after acc pop psw reti. *************** *********************************
174 142
103
FROM ; Interrupt handling subroutine - pictures of the Timerl (THO) hook. ************************************* ********************** offhook_timer:
push psw / keep the initial state push acc jnb fspec2, check_strobe / jump if spec 2 not unlocked call spec2 / otherwise perform the special TRU task / Check the presence of the DTMF digit, and read it from MT8870, if available there.
check_strobe:
call read_pxl_strobe jb strobe, decode_dtmf / jump if the DTMF digit clr fdecoder_busy is waiting / reset if strob jmp ttime has arrived / and just do the task measuring the time of the photo / headphones decode_dtmf:
jb fdecoder__busy, ttime / jump if the DTMF digit has already been read / otherwise call read_pxl
104
174 142 read it now setb fntlfin; db anoPcyiP the DTMF number!
setb fnecknip_busy / 1 = numerf DTMF in
SPletwαPlαniu; Synchronizing the time lapse of the fork photos, updating the displays every 70 ms, and polskczicie- / zskońkzenli if necessary the tone of ROH ttime:
lnc hlle_oiil; iIspueo of the younger time block ooo handset photos (@ 277.8 us) mov s, timi_oiil; pobipl0 younger cap from the earphone; JMP TEST_HOOK s, # 0, h_kni_eik; skclw p if <256 x 277 ps = 71.1 ms lnc hile_kii3; impueo of the junior block time (every 71.1 ms) inch usnαhi_nieslsys / • update every 71.1 ms mov SItlmi_kii3 / ρ ^ νικ main time of hanging s, # 0, t_kni_eik; skolw p jeżelp <256 x 71.1 ms = 18.2 s inc hime_kii3; impplo fertile p boou p Olsekeig picking up the handset (@ 18.2 s) h_oni_sec:
mov SItili_kii3; let's face time
Sknniesiinis a, # 14, tr ^ tlmi; skclw p if <14 x has passed
71.1 ms - 995 ms setb i_onn_enk; so that changing the blaispkp INUSE cannot cause hanging, ^ ι ^ ιΟι the handset is removed from the cradle
174 142
105
<td></td><td>too late after hanging up</td>
<td>taohtimer:</td><td></td>
<td>jb hsnnO, 0Oonn</td><td>/ jump, we are stopping aocmool (without ROH)</td>
<td>In Apple Jab<sub>/</sub>0Oonn</td><td>; ^! ^ (- ac, jenoii jtteeima w sOpiie INUSE (also without RRO)</td>
<td>inc a5</td><td>/ clock low pulse t0ρa0u / hemp RRO</td>
cjne a5,036,0aoht0aa0; jump, jenoii passed <3ż x
<td></td><td>277.8 s = 10 ms</td>
<td>inc a7</td><td>/ ilopote o-dtcngga OOuku</td>
<td>mov a5,00</td><td>acptooneo ołaaznnep / ołąccnnip RRO / re set iPo next October (10 ms)</td>
cjne a7, # 10.0aoht0pa0 // finish if <10 x 10 has passed
<td></td><td>ms = 10ims</td>
<td>cpl aoh on</td><td>and overheating ołaazpnin / oyłąazpnin RRO every 100 ms</td>
<td>mov a7,00</td><td>/ reset next fapn</td>
<td>Oaohstart:</td><td>On / Off</td>
<td>mov P / Oim-e ohf3</td><td>/ After the general passage of time photos from wideOek</td>
<td>cjne a, 02,0aohqke0</td><td>/ • sOcc e minoła <ex 18.2 = 36.3 p</td>
<td>mov p, 0emn ohf2</td><td>/ • also download an additional one main time</td>
<td>cjne p, 051,0aohqkeo</td><td>/ • sOcc e if total <4ż ms</td>
<td>setb fOime</td><td>photos from wideOek = the ROH period begins</td>
taohquit:
106
174 142 mov a, time_off3 cjne, # 5, tdone mov a, time_off2 cjne a, # 127, tdone setb frohtimeout tdone:
jnb f_start, tdoneO mov a, time_off2 cjne a, # 4, tdonel cjne a, # 7, tdonel / download the general photo elapsed time again from the fork / jump if <5 x 18.2 = 91 s has passed / also download additional time main / jump if <91+ (127 x 71.1 ms) = 100OOs / 1 = ROH period has expired / jump if no 500 ms clocking after the first / download the photo time from the fork / jump if <285 ms has elapsed / jump, if <500 ms has passed clr f start / unlocking after 500 ms interruption of putting off / Enter here only after 500 ms after the first removal from the fork after each hanging up. tdoneO:
jnb lc_, tdonel / jump, if the state of the photo from the range test_tr0 is currently present:
clr tri setb trO tdonel:
pop acc pop psw / otherwise stop the time block from the fork / and start the hang block / play
174 142
107 reti. ★ λ · ************************** · ****************** ********; External Interrupt 0 subroutine handling program offhook_edge:
jb frohtimeout, offhook_returnl jnb fcall, not__inc_call jnb no_ring, ok_wait setb ring_ / off ringtone cali write_px2 clr no_ring cali write_px2 setb return_ring
<td>clr</td><td>IEO</td><td>/ dump related interrupt ΕΧ0 (LC_)</td>
<td>clr</td><td>tRO</td><td>/ disable onhook timer and flag</td>
<td>clr</td><td>TFO</td><td>/ in the case of the related</td>
block interrupt onhook_timer ok_wait: mov r7, # 0ffh loop_ring:
mov r 6, # 0 f fh djnz r6, $ cali watchdog djnz r7, no set
108
17-4 142 saek_aet:
jnb istuio_i1og, do_oαt_istuio cali rsast_ia call wltS-ptl call ri1ts_ut2 sstb no-ring clr ring-; rbconn ring call call ri1ts_ut2 clr return-ring mov i7, # 0fyh lop-ringl:
mov i6, # 0fyh djnz r6, $ call rαtchdαg djnz i7, laou_iiogl call isase_ia call riits_utl call ri1ts_ut2 sstb ttr mov tt_O, 0 ^ About rsti ayyhoak_iseuio1:
jmp oOyyhok_return oa_ast:
oae_ioo_oall: clr trr clr tfO; disable onhaak_timsi block and flag; disable oohaak_tibsi block and flag; in case Siyjp break aohaak_t1bsi is suspended
174 142
109
<td>push</td><td>psw</td><td></td>
<td>push</td><td>acc</td><td></td>
<td>clr</td><td>IEO</td><td>dump the suspended interrupt ΕΧ0 (LC_)</td>
<td>setb</td><td>tri</td><td>/ start photo time block headphones</td>
<td>clr</td><td>fhang</td><td>/ delete hanging flag for bezpieczeństwau</td>
<td>mov</td><td>Th0, # 0</td><td>reset photo time block headphones</td>
<td>mov</td><td>time offl, # 0</td><td>/ incremented time blocks by interrupting thO</td>
<td>mov</td><td>time_of f2, # 0</td><td></td>
<td>mov</td><td>time_off 3, # 0</td><td></td>
<td>clr</td><td>mute</td><td>/ remove rx volume down</td>
<td>call</td><td>write px2</td><td></td>
<td>JNB</td><td>fonhook, check_flash</td><td>/ jump if not back it was hanging up after the picture</td>
<td>clr</td><td>fonhook</td><td>/ delete flag, afraid hanging</td>
now ok_offhook:
<td>JNB</td><td colspan="2">fcall, set_hook_flag / jump if not able</td>
<td>setb</td><td>fanswer</td><td>ALERT / 1 = picture from the fork during</td>
<td>clr</td><td>fcall</td><td>call / incoming / delete the ALERT flag (answers</td>
<td>setb</td><td>ring_</td><td>per connection) / deactivate the ringtone</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>ccapm2, # 0</td><td>/ stop ringing pwm</td>
<td colspan="2">elear twenty h with pwm</td><td>/ leave the output pin in</td>
110
174 142
<td>jmp</td><td>kffSkkk dono</td>
<td>sot Suk</td><td>flags:</td>
<td>SOTB</td><td>Suk</td>
<td>jmp</td><td>kffSokk dono</td>
<td colspan="2">cSock lasS:</td>
<td>mov</td><td>and, # 19</td>
<td>clr</td><td>c</td>
<td>Subb</td><td>time_on2</td>
<td>JNC</td><td>check_digit</td>
<td>JNB</td><td>lock.kfSkkk dono</td>
<td>SOTB</td><td>lash</td>
<td>jmp</td><td>ofhook_done</td>
<td colspan="2">chock digit:</td>
<td></td><td>and, #, and</td>
<td>clr</td><td>c</td>
<td>Subb</td><td>EIMS-Ka2</td>
<td>JNC</td><td>ofhook_done</td>
<td>inc</td><td>pulse_digit</td>
<td>SOTB</td><td>digit</td>
<td colspan="2">kfSkkk done:</td>
<td>iot</td><td>t ime_on1, # 0</td>
<td>md</td><td>timeon2, # 0</td>
<td>md</td><td>thio, # 0</td>
<td>pop</td><td>acc</td>
<td>pop</td><td>psw</td>
aisOty state 'signal a picture from the range, if not ALERT; 2 O o IO = 20O iss' Isu; O psseneateaneo oo subtraction '^ 0--00O iso stnnan0 liash' boz flasS, if TRU blocked, set flago flash
2O x IO = 2O iss' ksudO moved to subtraction; 2O-20O mso state impuss; only disturbance; contains nuser; set the flag <for a unique number; reseO of hanging time periods so that it can be; activated when unloading
174 142
111 offhooktriaunn: zetC ·, + + + ** + + + * ★ + + + + + + + ** + ** + + + + + + + * + + * + * + + + + + * + + + + + + * + + + + + +
PCA interrupt routine · ++++++++++++++++++++++++++++++++++++++++++++++ ++++++++; Pndinrknck PCA gininorkni are with the coordination of Saoaaorizing module options; zinorigo (software blockaaaigigo) with each compliance of the lower part of the number with FF. In this way / we can generate onsenrknie at the end of each aanone] 00 ^ -0100,0 ^^ 0200 and ^., Which gives us OndirranCi / co (256 * 1,085 us) 278 us.
/ This Cmpleminakcjk Maxjahk to ryardrzinik dmoayfCkdranigd the PCA service program for TRU blocks with very high speeds orzikkzz<sup>,</sup>The data source uses conditional kaairllacUk / (Audiovox requires dmCilioligo of the PCA subroutine).
$ ge ocatainvice:
% Cf% Cnamkak ne 0) then
<td>push</td><td>Ce</td>
<td>mov</td><td>Ce #% Cnamkak</td>
<td>czll</td><td>mkaOlalel</td>
<td>push</td><td>ZCC</td>
<td>push</td><td>psw</td>
<td>mov</td><td>z ^ l cczp</td>
(ppdiejhci7 to s; rfuaceji third level / interrupt priorities / oSpecified in sec, TRU w to perform reCi / • uoZu, pm tonoweoo
112
174 142
<td>orl</td><td>s, ccapm2</td>
<td>ant</td><td>s, # 01000010b</td>
<td>part</td><td>pca done</td>
<td>do_pca:</td><td></td>
<td>mov</td><td>a, # 0</td>
<td>pesd table</td><td> : :</td>
; search pwip ringing / send only bit pm; dump the next call if there is no tone / ringing; L_n ^: Lcc: indicator
<td colspan="2">moye s, @ s + dptr</td><td rowspan="2">; download data from the table</td>
<td>CCNE</td><td>αI # 355IWpihi tone</td>
<td>mov</td><td>cSO, OleOskint</td><td>; reset the indicator Wp it is</td>
<td></td><td></td><td>end of array</td>
<td>mov</td><td>dsl, Okwsklnt</td><td></td>
<td>mov</td><td>s # 0</td><td>; so the indicator will be</td>
<td></td><td></td><td>SPswinąkwy</td>
<td>cmp</td><td>^ reed -table</td><td>sii<sup>rw</sup>el position</td>
embedded ton:
<td>mov</td><td>CksslOw p</td><td>; insert data in tone tone</td>
<td>mov</td><td>ccss30w p</td><td>; in ^^ t ^^ in given ringing in swm only pw! tone Iub; pwm ringing works in everyone given czssii</td>
<td>lnc Skα_none:</td><td>dptr</td><td>; next position the board with the next time</td>
<td>clp</td><td>ccfO</td><td>; pieetuC module flag 0</td>
<td>clp</td><td>ea</td><td>; block sPliP<sup>in</sup>ania</td>
<td>mov</td><td>ccappO 1,</td><td>; lowercase C of the lower part compared and suspend ; comparator</td>
<td>mov</td><td>and, ccapOh</td><td>· Link to last page</td>
<td>lnc</td><td>and</td><td>; in ^^ k ^^ y next page</td>
174 142
113
<td>mov</td><td>ccapOh and</td><td>/ load the upper part of the data into compare and restart / restart comparator</td>
<td>setb</td><td>ea</td><td>/ re-enable interrupts</td>
<td>pop</td><td>psw</td><td></td>
<td>POP</td><td>acc</td><td></td>
<td>POP</td><td>e</td><td>/ play interrupts</td>
ret masklabel:
<td colspan="3">reti</td>
<td colspan="2">) Else (</td><td></td>
<td>push</td><td>acc</td><td></td>
<td>push</td><td>psw</td><td></td>
<td>mov</td><td>accapml</td><td>/ search for pwm tone</td>
<td>orl</td><td>a, ccapm2</td><td>/ look for pwm calling</td>
<td>anl</td><td>and, # 00000010b</td><td>/ search only for the pwm bit</td>
<td>j</td><td>pca_done</td><td>/ dump the next part;</td>
there is no tone or ringing on the output / If we are currently generating a dial tone - Dial Ton, then the current value should be taken from the table of the selected tone and sent to PCA1, so that the correct one is generated in CEX1 (pl.4) / DTMF frequency.
do_pca:
mov a, # 0 read_table:
movc a, @ a + dptr cjne a, # 255, write_tone mov dph, highpoint mov dpl, lowpoint mo va, # 0 / initialize pointer / get data from the array / reset pointer, this is the end of the array / so the pointer will
114
174 142 jmp read_table ore0n_tone:
mov aaρolh, p mov aaρo2h, p inc dptr pca ^ one:
cla ccfO clr ea mov ccappOl, # 00: 0] :, mov a, ccapOh inc a mov ccapOh, a setb ea pop psw pop acc reti) Oi $ noen correct / · read the item again; insert the data so you can enter Cownenanp and only pw, 0onoon or / pwm dzooninnip operate at any given time
VwuaeZ next board members with nps0lonzm time / reet ^ e flan] gap 0; zabo / je pcneopnipa / zaiO © © ree bottom lower parts Ogróonyopnn and hang / kompprpOor / pcnjjdZ ne last site / • next / next pages; crew top (for comparison and tailoring / run comparator / start / new / new) falls. ************************************************ *********** f
Subroutines announced I / R. ******************************************** **********
174 142
115
<td colspan="2">wenti pxl:</td><td>/ Dana from pxl temp to pxl</td>
<td>push</td><td>and</td><td>/ remember interrupt status</td>
<td>cle</td><td>ez</td><td>/ no interrupts</td>
<td>cle</td><td>in peiect</td><td></td>
<td>push</td><td>mcc</td><td></td>
<td>push</td><td> 0</td><td>/ empty rO</td>
<td>setb</td><td>al</td><td>/ B</td>
<td>cle</td><td>al</td><td></td>
<td>mov</td><td>a, pxl temp</td><td></td>
<td>un1</td><td>and, # 11110000b</td><td></td>
<td>mov</td><td>b, a</td><td></td>
<td>mov</td><td>a, px2 temp</td><td></td>
<td>un1</td><td>a, # 0000111113</td><td>/ ZaPryymaO higher bits</td>
<td>oel</td><td>a, b</td><td>input</td>
<td>mov</td><td>r0, # 00h</td><td>/ bottom adreo to the latch</td>
<td>MOVX</td><td>@ Ρ0,1</td><td>integrated I / O circuit</td>
<td>srtb</td><td>u0</td><td></td>
<td>srtb</td><td>ul</td><td></td>
<td>pop</td><td> 0</td><td>/ play rO</td>
<td>pop</td><td>acc</td><td></td>
<td>pop</td><td>e</td><td>/ play interrupt status</td>
<td>ert</td><td></td><td></td>
<td colspan="3">erud pxl:</td>
<td>push</td><td>e</td><td>/ remembers the interrupt status</td>
<td>cle</td><td>ea</td><td>/ no interrupts</td>
<td>cle</td><td>io select</td><td></td>
<td>push</td><td>mcc</td><td></td>
116
174 142
<td>push</td><td> 0</td><td>; push u0</td>
<td>clr</td><td>aO</td><td>/AND</td>
<td>clr</td><td>al</td><td></td>
<td>mov</td><td>r0, # 0h</td><td>/ bottom address for latch koillπ / gl of the I / O system</td>
<td>move</td><td>,, @ ι0</td><td></td>
<td>or</td><td>and, # 00001111b</td><td>/ makuu c output bits ^ θ</td>
<td>or</td><td>pxl temp, # 1 IŁ 110000b</td><td>/ mask bits womakOolo w full temp</td>
<td>orl</td><td>pxl temp, a</td><td>/ the link is not functional either o / akoτlo / i zamiow / wj / 0 / π byte</td>
<td>k / TB</td><td>i0</td><td></td>
<td>setb</td><td>loam</td><td></td>
<td>pop</td><td> 0</td><td>/ pop rO</td>
<td>pop</td><td>acc</td><td></td>
<td>pop</td><td>e</td><td>/ player interrupt status</td>
ret r / a ^ pKl-Strobe:
<td>Puah</td><td>and/</td><td>/ remember interruption</td>
<td>clr</td><td>ea</td><td>/ no interrupts</td>
<td>clr</td><td>io_select</td><td></td>
<td>Puah</td><td>acc</td><td></td>
<td>Puah</td><td> 0</td><td>/ push rO</td>
<td>clr</td><td>aO</td><td>;AND</td>
<td>clr</td><td>al</td><td></td>
<td>mov</td><td>r0, # 0h</td><td>/ bottom address for the pxl latch</td>
<td></td><td></td><td>koillπ / gl of the I / O system</td>
<td>move</td><td>,, @ ι0</td><td></td>
<td>mov</td><td>IOStatus and</td><td></td>
<td>and / tb</td><td>aO</td><td></td>
<td>and / tb</td><td>loam</td><td></td>
<td>pop</td><td> 0</td><td>/ pop rO</td>
174 142
117
<td colspan="2">pop acc</td>
<td>pop is rst</td><td>; reverse the interrupt status</td>
<td>Returns pt2:</td><td></td><td>; Data from pt: 2 temp to px2</td>
<td>push</td><td>e</td><td>interrupt status</td>
<td>clr</td><td>es</td><td>; no interrupts</td>
<td>clr</td><td>and</td><td></td>
<td>push</td><td>acc</td><td></td>
<td>push</td><td> 0</td><td>; push rrO</td>
<td>SSTB</td><td>aa</td><td>/ B</td>
<td>clr</td><td>a1</td><td></td>
<td>mov</td><td>and, ux1_esbu</td><td></td>
<td>or</td><td>and, # 11110000b</td><td></td>
<td>mov</td><td>b, and</td><td></td>
<td>mov</td><td>and, ut2_esbu</td><td></td>
<td>or</td><td> 0000001111</td><td>; eaαeiyjbłl Ołee orsuci.owe</td>
<td>orf</td><td>AOB</td><td></td>
<td>mov</td><td>r0, # 00h</td><td>; and address for the latch ptl</td>
<td>moYt</td><td>@ r0 / a</td><td>integrated I / O circuit</td>
<td>SSTB</td><td>k0</td><td></td>
<td>SSTB</td><td>ll</td><td></td>
<td>pop</td><td> 0</td><td>; oiewóiy r0</td>
<td>pop</td><td>acc</td><td></td>
<td>pop</td><td>is</td><td>; plow the state with<sup>r</sup>ysirań</td>
<td colspan="2">rst riles_1OcC:</td><td>; Data from pt2 temp to mature</td>
<td>push</td><td>is</td><td>; y note the state of pp ^ z ^^^ eiii</td>
<td>clr</td><td>are</td><td>, Ίι: interrupts</td>
<td>clr</td><td>and</td><td></td>
<td>push</td><td>acc</td><td></td>
118
174 142
<td>push</td><td> 0</td><td>/ push rO</td>
<td>clr</td><td>aO</td><td>/ B</td>
<td>setb</td><td>al</td><td></td>
<td>mov</td><td>a, lamps temp</td><td></td>
<td>or</td><td>and, # 11110000b</td><td></td>
<td>rl</td><td>and</td><td></td>
<td>rl</td><td>and</td><td></td>
<td>rl</td><td>and</td><td></td>
<td>rl</td><td>and</td><td></td>
<td>mov</td><td>r0, # 00h</td><td>/ bottom address for the pxl latch</td>
<td>MOVX</td><td>@ r0, a</td><td>integrated I / O circuit</td>
<td>setb</td><td>aO</td><td></td>
<td>setb</td><td>al</td><td></td>
<td>pop</td><td> 0</td><td>/ play rO</td>
<td>pop</td><td>acc</td><td></td>
<td>pop</td><td>e</td><td>/ restore interrupt status</td>
<td>ret</td><td></td><td></td>
<td colspan="3">read px2:</td>
<td>push</td><td>e</td><td>/ remember interrupt status</td>
<td>clr</td><td>ea</td><td>/ no interrupts</td>
<td>clr</td><td>io_select</td><td></td>
<td>push</td><td>acc</td><td></td>
<td>push</td><td> 0</td><td>/ push rO</td>
<td>clr</td><td>aO</td><td>/ C</td>
<td>setb</td><td>al</td><td></td>
<td>mov</td><td>r0, # 0h</td><td>/ bottom address for the pxl latch</td>
<td>MOVX</td><td>a, @ r0</td><td>integrated I / O circuit</td>
<td>or</td><td>and, # 11110000b</td><td>/ mask output bits</td>
<td>or</td><td colspan="2">px2 temp, # 00001111b / mask input bits in</td>
174 142
119 sx1_tels
<td>orl</td><td>px2 temp, a</td><td>; combine the function or data thoroughly</td>
<td>setb</td><td>a0</td><td>and output in one byte</td>
<td>setb</td><td>al</td><td></td>
<td>sauce</td><td> 0</td><td>^ pop rO</td>
<td>pop</td><td>acc</td><td></td>
<td>sauce</td><td>e</td><td>·· play interrupt status</td>
<td>pet pead and m</td><td>_and:</td><td>; data from px2 temp to p</td>
<td>push</td><td>e</td><td>; save status</td>
<td>clp</td><td>ea</td><td>; no interrupts</td>
<td>setb</td><td>lk_eilict</td><td></td>
<td>; usop</td><td>soc</td><td></td>
<td>push</td><td> 0</td><td>; push r0</td>
<td>clp</td><td>s0</td><td>b</td>
<td>clr</td><td>cil</td><td></td>
<td>mov</td><td>ρ0, # 00</td><td>; nklny sdres for the pxl latch</td>
<td>MOVX</td><td>a, @ p0</td><td>integrated I / O circuit</td>
<td>setb</td><td>s0</td><td></td>
<td>setb</td><td>sl</td><td></td>
<td>clp</td><td>and about eilech</td><td></td>
<td>sauce</td><td> 0</td><td>; onhwrpz p0</td>
<td>; pop</td><td>soc</td><td></td>
<td>sauce</td><td>e</td><td>; create an interrupt state</td>
<td colspan="2">pet wpite io ib:</td><td>; ^^ n ^ with pxl temp to p</td>
<td>push</td><td>these</td><td>; lssamiitaC state prsprnpń</td>
<td>setb</td><td>and eeOekh</td><td></td>
<td>clr</td><td>es</td><td>; bpsk are ^ r ^ z ^^ r ^ in ^^</td>
120
174 142
<td colspan="2">pusS acc</td>
<td>push</td><td> 0</td>
<td>SOTB</td><td>a0</td>
<td>clr</td><td>al</td>
<td>mov</td><td>a, tk mb</td>
<td>mov</td><td>r0, # 00S</td>
<td>Ι ^ Χ</td><td>@ t0.l</td>
<td>SOTB</td><td>a0</td>
<td>setb</td><td>al</td>
<td>clr</td><td>and soloct</td>
<td>pop</td><td> 0</td>
<td>pop</td><td>acc</td>
<td>pop</td><td>and</td>
<td>rot</td><td></td>
; puish rO; B 'lower address for the pxi latch of the integrated circuit I'O; playback rO; oft ^^ i ^ t ^ izo interrupt state atpeo_ik_y_c: pusS io setb tk_aoloce clr oa pusS acc pusS 0 clr a0 sotb al mov a, to_y_c iot t0, # 0OS movx (^ 0, ι sotb a0 sotb al clr io solsct 'Dana o px2_temp to px2; memory interrupt status' no interrupts; push rO 'B' lower address to the pxl latch of the integrated circuit IO
174 142
121 pop 0 pop acc pop ie ret reset_io_m: push ie / play rO / play interrupt status / remember interrupt status
<td>clr</td><td>ea</td><td>/ no work</td>
<td>setb</td><td></td><td>io_select</td>
<td>push</td><td>acc</td><td></td>
<td>push</td><td> 0</td><td>/ push rO</td>
<td>setb</td><td>aO</td><td>/ control</td>
<td>setb</td><td>al</td><td></td>
<td>mov</td><td>rO, 0h #</td>
<td>mov</td><td>and, # 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>e</td>
<td>ret</td><td></td>
<td>reset io:</td><td></td>
; pop rO / lower address to the px2 latch of the integrated circuit 1/0 / play interrupt status push ie clr ea setb push acc push 0 setb aO io select / remember interrupt status / no interrupt / push rO / control
122
174 142 setb p1
<td>mov</td><td>rO, 0h #</td><td>/ bottom alese Oe zzpoia saplonneo of the I / R system</td>
<td>mov</td><td>a, # 10011000b</td><td></td>
<td>MOVX</td><td>@ r0, p</td><td></td>
<td>setb</td><td>a0</td><td></td>
<td>setb</td><td>al</td><td></td>
<td>clr</td><td>ioselect</td><td></td>
<td>pop</td><td> 0</td><td>/ pop rO</td>
<td>pop</td><td>acc</td><td></td>
<td>pop</td><td>e</td><td>/ except interrupts</td>
<td>ret</td><td></td><td></td>
. ************************************************* **********
/ PoOorgerpmz ogiιoaniczn f
• · kkkkkkkkkkkk-kkkkkkkkkkkkkkkkkk-kkkkkkkkkkkkkkkkkkkkkkkkkkkkk rr / To help you run the program you can save general messages about the TRU and / Cnljpak. The buffer of these messages occupies locations from 90h Oo FFh.
cla_mse:
<td>push 1</td><td>/remember</td><td>R1</td>
<td>mov rl, 0mtiuf start</td><td colspan="2">/ pointer to the beginning of the buffer</td>
<td></td><td>komunikp0óo</td><td></td>
<td>mov msg ptr, r1</td><td>/ zappmiętjj</td><td>start of buffer</td>
<td>alr_msg1:</td><td></td><td></td>
<td>mov @ rl, 055h</td><td colspan="2">/ fill with a mask with values</td>
55h inc r1 / indicate npt0lonn location
174 142
123 cjne rl, #msgbuf_end, clr_msgl; to the end of the buffer
<td>pop 1</td><td>/ play Rl</td>
<td>ret</td><td></td>
<td>savemg:</td><td></td>
<td>push 1</td><td>/ remember Rl</td>
<td>mov rl, msg ptr</td><td>/ get current indicator</td>
cjne rl, # msgbuf_end, saveml / jump if the message buffer is not yet full mov rl, # msgbuf start / reset start if
<td></td><td>filled</td>
<td>saveml: mov @ rl, a</td><td>/ remember the message in buffer</td>
<td>inc rl</td><td>/ move the pointer forward</td>
<td>mov msg ptr, rl</td><td>/ remember moved to</td>
<td>pop 1</td><td>next use / play Rl</td>
<td>exit: ret</td><td></td>
/ Delete the copy of the LCD indicator on the handset in the display's RAM buffer.
clr_dsp:
push 1 / remember Rl mov rl, # dspbuf start / pointer to the beginning of the buffer
<td></td><td>messages</td>
<td>mov dsp ptr, rl</td><td>/ remember the beginning of the buffer</td>
<td>clr msgl:</td><td></td>
<td>mov @ rl, # 0ffh</td><td>/ fill with mask with values</td>
FFh inc rl / point to next location
124
174 142 cjne rl, # dspbuf_end, clr_dspl / to the end buffer pop 1 / play Rl ret / Some TRU blocks must store the LCD display information of the handset in the local display buffer.
save_dsp:
push 1 / remember Rl mov rl, dsp_ptr / download current pointer cjne rl, # dspbuf_end, save_dspl / jump if the message buffer is not yet full mov rl, # dspbuf_start / reset start if saved savedspl is full:
mov @ rl, a / save message in inc rl buffer / move pointer forward mov dsp_ptr, rl / update pointer for next use pop 1 / play Rl save_dsp2:
/include(SPAIN.asm) ret $ nolist
Śinclude (SPAIN4.asm) $ list nop nop end /
174 142
174 142
<img file="PL174142B1_D0001.tif" />
1A is
174 142
<img file="PL174142B1_D0002.tif" />
Figure 1B
174 142
STEP 25
STEP 16
STEP 17
STEP 18
STEP 19
STEP 20
STEP 21
STEP 22
STEP 23
STEP 24 NO
SET ERROR_FLAG MAIN FLAG ERR0R = 1
INITIATE VARIABLES 'and ..... Z
CLEAR STATE LEOs
PLACE YOUR SUBSCRIBE HANDSET
PITCH HANDLING MODULE
DELAY
OPERATING MOOULE HEADPHONE PHOTOS
DELAY
SUSPENSION DETECTION INTERFACE. IS THE HEADSET REMOVED?
STEP 26 {γ<sub>ΑΚ</sub>
UNLOCK DIAL TONE
RETURNJ
FIG. 2
174 142
<img file="PL174142B1_D0003.tif" />
FIG. 3
174 142
<img file="PL174142B1_D0004.tif" />
FIG. 4
174 142
<img file="PL174142B1_D0005.tif" />
FIG. 5A
174 142
<img file="PL174142B1_D0006.tif" />
FIG. 5B
174 142
<td>STEP 67</td><td></td>
<td colspan="2">SET RING.SECONO</td>
Ε
STEP 63
STEP 64
LOOP! ZOJECZ HEADPHONES ARE EXPOSED TO 2S
STEP 65 NO
STEP 66
<img file="PL174142B1_D0007.tif" />
ERROR DETECTED HANDSET PHOTOS
DELETE INCOMING CALL
SET ERROR.FLAG MAIN ERR0R FLAG = 5
STEP 49
STEP 50
RETURN
Figure 5c
174 142
<img file="PL174142B1_D0008.tif" />
FIG. 6
174 142
<img file="PL174142B1_D0009.tif" />
7A
174 142
<img file="PL174142B1_D0010.tif" />
7B
174 142
STEP 95
STEP 97
STEP 99
STEP 103
STEP 105
<img file="PL174142B1_D0011.tif" />
FIG. 8A
BtAO SUSPENSIONS
J STEP 96 ERR0R C0DE = 1
BtAO RUNNING OF THE RING
J STEP 98 ERR0R C00E = 2
STEP 101
BtAO TONE DIAL
J STEP 100 ERR0R C00E = 3
DTMF TONE ERROR} STEP 102
ERR0R_C00E = 4
BOOK DETECTION CALL KR0K-104 ERROR COOE = 5
BtAO REPLY TO THE ORDER
ERR0R C0DE = 6
174 142
STEP 111
STEP 107
STEP 109
STEP 113
STEP 115
<img file="PL174142B1_D0012.tif" />
ERR0R C00E = 7
CONNECTION ERROR
J STEP 110 ERR0R C0DE = 8
BUSINESS TONE BLAO} STEP 112 ERR0R C00E = 9
STATE OF OPERATION BLAO STEP 114 ERR0R C00E = 10
ERROR 1000 Hz
I STEP 116 ERROR COOE 11
POWER ERROR - RA0I0
STEP 108
NO
RETURN
FIG. 8B
174 142
STEP 117
STEP 118
STEP 119
STEP 120
STEP 121
STEP 122
STEP 123
STEP 124
<img file="PL174142B1_D0013.tif" />
FIG. 9
174 142
<img file="PL174142B1_D0014.tif" />
Figure 10
174 142
<img file="PL174142B1_D0015.tif" />
FiG. 11
174 142
<img file="PL174142B1_D0016.tif" />
12 is an
174 142
-IN
<img file="PL174142B1_D0017.tif" />
13A
174 142
<img file="PL174142B1_D0018.tif" />
FIG. 14
UP Department of Publications. Circulation of 90 copies Price PLN 6.00
Contents84
37 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 Sheet 20 Sheet 21 Sheet 22 Sheet 23 Sheet 24 Sheet 25 Sheet 26 Sheet 27 Sheet 28 Sheet 29 Sheet 30 Sheet 31 Sheet 32 Sheet 33 Sheet 34 Sheet 35 Sheet 36 Sheet 37
53 members in 34 offices
Priority claims8
| Document | Office | Kind | Date |
|---|---|---|---|
| 3762793 | United States of America | A | |
| 3762793 | United States of America | A | |
| 9402281 | United States of America | W | |
| 9402281 | United States of America | W | |
| 37627 | – | – | – |
| US9402281 | – | – | – |
| US19930037627 | – | – | – |
| WO1994US02281 | – | – | – |
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 | |
| LT3323B | 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 | |
| PL174142B1This record | 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 |
Numbers
- Publication, DOCDB
- 174142
- Publication, EPODOC
- PL174142B
- Application
- 94321371
- Application, DOCDB
- 32137194
- Application, EPODOC
- PL19940321371
Titles2
- English
- RADIO TRANSMIT-RECEIVE UNIT FOR CELLULAR COMMUNICATION SYSTEMS
- Polish
- Radiowe urządzenie nadawczo-odbiorcze w systemie łączności komórkowej
Classification
- CPC, 2
- H04W24/00
- H04W84/14
- IPC, 9
- H04B7 26
- H04B17 00
- H04M1 00
- H04M1 24
- H04M3 08
- H04M11 00
- H04M3 22
- H04W24 00
- H04W84 14
