Òàáëèöà 1. ; ÒÅÐÌÈÍÀË - ÐÀÄÈÎ-86ÐÊ RA3AU STEK: EQU 74FFH ; ÍÀ×ÀËÎ ÑÒÅÊÀ RUS: EQU 0A00ÇÍ ; P Ó Ñ ÏÎÐÒÀ DU ÒÕ: EQU 0À000Í ; ÊÀÍÀË À - ÏÅÐÅÄÀ×À RX: EQU 0À001Í ; ÊÀÍÀË Â - ÏÐÈÅÌ INKEY: EQU 0F803Í ; ÂÂÎÄ ÑÈÌÂÎËÀ Ñ ÊËÀÂÈÀÒÓÐÛ PRINTS: EQU 0F809H ; ÂÛÄÀ×À ÑÈÌÂÎËÀ STATKY: EQU 0F812H ; ÎÏÐÎÑ ÊËÀÂÈÀÒÓÐÛ RXDBUF: EQU 7500Í ; ÁÓÔÅÐ ÏÐÈÍÈÌÀÅÌÛÕ ÁÀÉÒΠNRKY: EQU 0FFH ; ÊÎË. ÖÈÊËΠÎÏÐÎÑÀ ÊËÀÂÈÀÒÓÐÛ NPRT: EQU 0FFH ; ÊÎË. ÖÈÊËΠÎÏÐÎÑÀ ÏÎÐÒÀ RX LNRBF: EQU 7FH ; ÐÀÇÌÅÐ ÏÐÈÅÌÍÎÃÎ ÁÓÔÅÐÀ ;==== ÍÀ×ÀËÜÍÀß ÓÑÒÀÍÎÂÊÀ LXI SP,STEK ; ÍÀ×. ÇÀÃÐÓÇÊÀ ÓÊÀÇÀÒÅËß ÑÒÅÊÀ MVI À,82Í ; ÇÀÃÐÓÇÊÀ Ð Ó Ñ STA RUS MVI À,0ÇÍ ; RXO"DO=1, RTS=D1s1 STA ÒÕ ; ÇÀÊÐÛÒÜ ÏÅÐÅÄÀ×Ó ÏÓ->ÒÅÐÌÈÍÀË MVI À, 0 ; ÍÀ×. ÇÀÃÐÓÇÊÀ ÓÊÀÇÀÒÅËß ÁÓÔÅÐÀ STA RXDBUF ; ====== ÃÎËÎÂÍÀß ×ÀÑÒÜ ÏÐÎÃÐÀÌÌÛ - ÖÈÊËÈ×ÅÑÊÈÉ ÎÏÐÎÑ ; ÊÀÍÀËÀ ÏÐÈÅÌÀ È ÊËÀÂÈÀÒÓÐÛ LINK: CALL RCHNL ; ÎÏÐÎÑ ÊÀÍÀËÀ ÏÐÈÅÌÀ CALL REQKEY ; ÎÏÐÎÑ ÑÎÑÒÎßÍÈß ÊËÀÂÈÀÒÓÐÛ JZ LINK ; ÊËÀÂ.ÍÅ ÍÀÆÀÒÀ -> ÍÀ ÍÀ×ÀËÎ CALL INKEY ; ÂÂÎÄ ÑÈÌÂÎËÀ Ñ ÊËÀÂÈÀÒÓÐÛ MOV Ñ,À ; Ñ:"8ÂÅÄÅÍÍÛé ÑÈÌÂÎË CALL TXBYTE ; ÏÅÐÅÄÀ×À ÁÀÉÒÀ JMP LINK ; ÍÀ ÍÀ×ÀËÎ ÖÈÊËÀ ;======= ÎÏÐÎÑ ÊÀÍÀËÀ ÏÐÈÅÌÀ È ÎÁÐÀÁÎÒÊÀ ÁÓÔÅÐÀ RCHNL: MVI À,01Í ; RXD"DO=1, RTS"D1=0 STA ÒÕ ; ÎÒÊÐÛÒÜ ÏÅÐÅÄÀ×Ó ÏÓ->ÒÅÐÌÈÍÀË CALL RXBYTE ; ÏÐÈÅÌ ÁÀÉÒΠ ÁÓÔÅÐ MVI À,0ÇÍ ; RXD"DO=1, RTS"D1=1 STA ÒÕ ; ÇÀÊÐÛÒÜ ÏÅÐÅÄÀ×Ó ÏÓ->ÒÅÐÌÈÍÀË CALL RXBYTE ; ÏÐÈÅÌ ÁÀÉÒΠ ÁÓÔÅÐ CALL OUTBUF ; ÐÀÇÃÐÓÇÊÀ ÏÐÈÅÌÍÎÃÎ ÁÓÔÅÐÀ RET ;========== ÖÈÊËÈ×ÅÑÊÈÉ ÎÏÐÎÑ ÑÎÑÒÎßÍÈß ÊËÀÂÈÀÒÓÐÛ ; A=OFFH -> ÊËÀÂÈØÀ ÍÀÆÀÒÀ, À=ÎÎÍ -> ÍÅ ÍÀÆÀÒÀ ; ÑÎÎÒÂÅÒÑÒÂÅÍÍÎ ÇÍÀ×ÅÍÈÞ À ÂÎÇÂÐÀÙÀÅÒÑß ÔËÀà FZ REQKEY: MVI B,NRKY ; Ñ×ÅÒ×ÈÊ Â=ÊÎË. ÖÈÊËΠÎÏÐÎÑÀ REQ1: CALL STATKY ; ÍÀ ÏÎÄÏÐÎÃÐÀÌÌÓ ÌÎÍÈÒÎÐÀ JNZ REQO ; ÊËÀÂÈØÀ ÍÀÊÀÒÀ -> ÂÂÎÄ ÑÈÌÂÎËÀ DCR  ; Ñ×ÅÒ×ÈÊ-1 JNZ REQ1 ; 00 -> ÎÏÐÎÑ ÑÎÑÒ. ÊËÀÂÈÀÒÓÐÛ REQ0: RET ;========== ÏÐÈÅÌ ÁÀÉÒΠÏÎ ÏÎÑËÅÄ. ÊÀÍÀËÓ RXDO ; ÐÅÇÓËÜÒÀÒ ÏÎÌÅÙÀÅÒÑß 8 ÏÐÈÅÌÍÛÉ ÁÓÔÅÐ ; ÂÛÕÎÄ ÈÇ ÏÎÄÏÐÎÃÐÀÌÌÛ - ËÈÁÎ ÏÎÑËÅ ÇÀÏÎËÍ. ÁÓÔÅÐÀ, ; ËÈÁÎ ÏÎÑËÅ ÈÑÒÅ×ÅÍÈß ÂÐÅÌÅÍÈ ÎÆÈÄÀÍÈß ÑÒÀÐÒ. ÁÈÒÀ. RXBYTE: PUSH  ; ÐÅÃÈÑÒÐÛ -  ÑÒÅÊ PUSH D PUSH Í RXB1: LHLD TIMSTB ; ÇÀÃÐÓÇÊÀ TIMSTB  Ñ×ÅÒ×ÈÊ HL RXB2: LDA RX ; ÏÐÈÅÌ ÁÀÉÒÀ ÈÇ ÏÎÐÒÀ RX ANI 01Í ; ÂÛÄÅËÅÍÈÅ ÁÈÒÀ DO JZ RXB3 ; 00=0 -> ÀÍÀËÈÇ ÑÒÀÐÒ.ÁÈÒÀ DCX Í ; Ñ×ÅÒ×ÈÊ-1 MOV À,Í ORA L JNZ RXB2 ; 00 -> ÏÎÂÒÎÐÈÒÜ JMP RXB0 ; ÍÅ ÎÁÍÀÐÓÆÅÍ ÑÒ.ÁÈÒ -> ÂÛÕÎÄ RXB3: MVI D,1 ; D=1 ÏÎËÓÒÀÊÒ CALL TIME ; ÏÀÓÇÀ LDA RX ; ÏÐÈÅÌ ÁÀÉÒÀ ÈÇ ÏÎÐÒÀ RX ANI 01Í ; ÂÛÄÅËÅÍÈÅ ÁÈÒÀ DO JNZ RXB1 ; D0=1, ÍÅ ÑÒÀÐÒ.ÁÈÒ -> ÎÆÈÄÀÍÈÅ MVI D,2 ; D=2 ÏÎËÓÒÀÊÒÀ^ÒÀÊÒ CALL TIME ; ÏÀÓÇÀ LDA LBYT ; ÇÀÃÐÓÇÊÀ ÄËÈÍÛ ÁÀÉÒÀ MOV Â,À ; 8 Ñ×ÅÒ×ÈÊ-ÐÅÃÈÑÒÐ Â MVI Ñ,0 ; Ñ=0 RXB4: LDA RX ; ÏÐÈÅÌ ÁÀÉÒÀ ÈÇ ÏÎÐÒÀ RX ANI 01Í ; ÂÛÄÅËÅÍÈÅ ÁÈÒÀ DO ORA Ñ ; ÎÁ'ÅÄÈÍÅÍÈÅ Ñ ÐÀÍÅÅ ÏÐÈÍßÒÛÌÈ RRC ; ÑÄÂÈà ÐÅÇÓËÜÒÀÒÀ ÂÏÐÀÂÎ MOV Ñ,À ; ÇÀÍÅÑÅÍÈÅ ÐÅÇÓËÜÒÀÒÀ Â Ñ MVI D,2 ; 0=2 ÏÎËÓÒÀÊÒÀ=ÒÀÊÒ CALL TIME ; ÏÀÓÇÀ DCR  ; Ñ×ÅÒ×ÈÊ-1 JNZ RXB4 ; 00 -> ÏÐÈÅÌ ÑËÅÄÓÞÙÅÃÎ ÁÈÒÀ LDA RX ; ÏÐÈÅÌ ÁÀÉÒÀ ÈÇ ÏÎÐÒÀ RX ANI 01Í ; ÂÛÄÅËÅÍÈÅ ÁÈÒÀ DO JZ RXB1 ; D0=0, ÍÅ ÑÒÎÏ.ÁÈÒ! -> ÎØÈÁÊÀ, ;ÍÀ ÏÐÈÅÌ ÑËÅÄÓÞÙÅÃÎ ÁÀÉÒÀ LXI H,RXDBUF ; HL=PEC ÏÐÈÅÌÍÎÃÎ ÁÓÔÅÐÀ INR Ì ; 1+×ÈÑËÎ ÏÐÈÍßÒÛÕ ÁÀÉÒΠMOV À,Ì ; À"×ÈÑËÎ ÏÐÈÍßÒÛÕ ÁÀÉÒΠMOV L,M ; L^HCAO ÏÐÈÍßÒÛÕ ÁÀÉÒΠMOV Ì,Ñ ; ÏÐÈÍßÒÛÉ ÁÀÉÒ ->  ÁÓÔÅÐ ÑÐI LNRBF ; ÏÐÎÂÅÐÊÀ ÏÅÐÅÏÎËÍÅÍÈß ÁÓÔÅÐÀ JNZ RX81 ; ÍÅ ÏÎËÎÍ -> ÏÐÈÅÌ ÁÀÉÒÀ RXB0: POP Í ; ÐÅÃÈÑÒÐÛ - ÈÇ ÑÒÅÊÀ POP D POP  RÅÒ ;------- ÏÅÐÅÄÀ×À ÁÀÉÒÀ ÏÎ ÏÎÑËÅÄ. ÊÀÍÀËÓ TXDO ; ÏÅÐÅÄÀÂÀÅÌÛÉ ÁÀÉÒ ÏÎÌÅÙÀÅÒÑß Â ÐÅÃÈÑÒÐ Ñ. ; ÑÎÕÐÀÍßÅÒÑß RTS"1 - ÊÀÍÀË ïÓ->ÒÅÐÌ ÇÀÊÐÛÒ! ; ÁÀÉÒ ÏÅÐÅÄÀÅÒÑß, ÅÑËÈ ÎÒÊÐÛÒ ÊÀÖÀË ÒÅÐÌÈÍÀË->ïÓ ; ÁÀÉÒ ÍÅ ÏÅÐÅÄÀÅÒÑß, ÅÑËÈ ÇÀÊÐÛÒ ÊÀÍÀË ÒÅÐÌÈÍÀË->ÏÓ ; ÅÑËÈ ÊÀÍÀË ÇÀÊÐÛÒ, ÂÎÇÂÐÀÙÀÅÒÑß À<>0! ; ÑÎÎÒÂÅÒÑÒÂÅÍÍÎ ÇÍÀ×ÅÍÈÞ À ÂÎÇÂÐÀÙÀÅÒÑß ÔËÀà FZ TXBYTE: PUSH  ; ÐÅÃÈÑÒÐÛ -  ÑÒÅÊ PUSH D PUSH Í MVI B,NPRT ; Ñ×ÅÒ×ÈÊ Â'ÊÎË. ÖÈÊËΠÎÏÐÎÑÀ ÒÕÂ1: LDA RX ; ÏÐÈÅÌ ÁÀÉÒÀ ÈÇ ÏÎÐÒÀ RX ANI 02Í ; ÂÛÄÅËÅÍÈÅ ÁÈÒÀ D1 JZ ÒÕÂ2 ; CTS"D1"0,ÊÀÍÀË ÎÒÊÐ.->ÏÅÐÅËÀ×À DCR  ; Ñ×ÅÒ×ÈÊ-1 JNZ ÒÕÂ1 ; 00 -> ÍÀ ÎÏÐÎÑ ÁÈÒÀ D1=CTS ANA À ; À<>0, ÓÑÒ. PZ -> ÊÀÍÀË ÇÀÊÐÛÒ JMP ÒÕB0 ; ÊÀÍÀË ÇÀÊÐÛÒ -> ÍÀ ÂÛÕÎÄ ÒÕÂ2: MVI À,02Í ; TXD=DO=0 - ÑÒÀÐÒ.ÁÈÒ, RTS=01=1 STA ÒÕ ; ÂÛÄÀ×À ÁÀÉÒÀ  ÏÎÐÒ ÒÕ MVI 0,2 ; D=2 ÏÎËÓÒÀÊÒÀ^ÒÀÊÒ CALL TIME ; ÏÀÓÇÀ LDA LBYT ; ÇÀÃÐÓÇÊÀ ÄËÈÍÛ ÁÀÉÒÀ MOV Â,À ;  Ñ×ÅÒ×ÈÊ-ÐÅÃÈÑÒÐ Â ÒÕÂÇ: MOV À, Ñ ; À" Ñ ORI 02Í ; TXD=DOaÏEPEÄAB. ÁÈÒ, RTS"D1"1 ANI 0ÇÍ ; D2"...D7=0 STA ÒÕ ; ÂÛÄÀ×À ÁÀÉÒÀ  ÏÎÐÒ ÒÕ MOV À, Ñ ; ÑÄÂÈà ÑÎÄÅÐÆÈÌÎÃÎ RRC ; ÐÅÃÈÑÒÐÀ Ñ ÂÏÐÀÂÎ MOV Ñ,À ; ÍÀ ÎÄÍÓ ÏÎÇÈÖÈÞ MVI D,2 ; D=2 ÏÎËÓÒÀÊÃÀ"ÒÀÊÒ CALL TIME ; ÏÀÓÇÀ DCR 8 ; Ñ×ÅÒ×ÈÊ-1 JNZ ÒÕÂÇ ; 00 -> ÍÀ ÏÅÐÅÄÀ×Ó ÑËÅÄ. ÁÈÒÀ MVI À,0ÇÍ ; TXO=DO=1 - ÑÃÎÏ.ÁÈÒ, RTS"D1=1 STA ÒÕ ; ÂÛÄÀ×À ÁÀÉÒÀ  ÏÎÐÒ ÒÕ LDA LSTPB ; ÇÀÃÐÓÇÊÀ ÄËÈÍÛ ÑÒÎÏÎÂÎÃÎ ÁÈÒÀ MOV D,A ; D=4HCAO ÏÎËÓÒÀÊÒΠÑÒÎÏ.ÁÈÒÀ CALL TIME ; ÏÀÓÇÀ XRA À ; À=0, ÓÑÒ. FZ -> ÁÀÉÒ ÏÅÐÅÄÀÍ! ÒÕÂ0: POP Í ; ÐÅÃÈÑÒÐÛ - ÈÇ ÑÒÅÊÀ POP D POP  RET ;========== ÂÐÅÌÅÍÍÀß ÇÀÄÅÐÆÊÀ ;  BAUD ÕÐÀÍÈÒÑß ÄËÈÒÅËÜÍÎÑÒÜ ÏÎËÓÒÀÊÒÀ - ÑÊÎÐÎÑÒÜ ; ÏÅÐÅÄÀ×È,  ÐÅÃÈÑÒÐÅ D ÇÀÄÀÅÒÑß ×ÈÑËÎ ÏÎËÓÒÀÊÒΠTIME: LHLD BAUD ; ÇÀÃÐÓÇÊÀ BAUD  Ñ×ÅÒ×ÈÊ HL ÒIÌ1: DCX Í ; Ñ×ÅÒ×ÈÊ-1 MOV À,Í ORA L JNZ ÒIÌ1 ; 00 -> ÏÎÂÒÎÐÈÒÜ DCR D ; Ñ×ÅÒ×ÈÊ ÏÎËÓÒÀÊÒÎÂ-1 JNZ TIME ; 00-> ÏÎÂÒÎÐÈÒÜ RET ;============ ÐÀÇÃÐÓÇÊÀ ÁÓÔÅÐÀ ÏÐÈÍßÒÛÕ ÁÀÉÒΠ; ÏÎÑËÅ ÐÀÇÃÐÓÇÊÈ ÑÁÐÀÑÛÂÀÅÒÑß ÓÊÀÇÀÒÅËÜ - ×ÈÑËÎ ÁÀé- ; ÒΠ8 ÁÓÔÅÐÅ. ÏÎÑËÅ ÂÎÑÑÒÀÍÎÂËÅÍÈß ÏÐÈÍßÒÎÃÎ ÁÀÉÒÀ ; ÂÛÇÛÂÀÅÒÑß ÏÎÄÏÐÎÃÐÀÌÌÀ ÎÁÐÀÁÎÒÊÈ (ÂÛÄÀ×È) ÁÀÉÒÀ. OUTBUF: PUSH  ; ÐÅÃÈÑÒÐÛ -  ÑÒÅÊ PUSH D PUSH Í LDA RXDBUF ; ÀàÄËÈÍÀ ÁÓÔÅÐÀ ÏÐÈÍßÒÛÕ ÁÀÉÒΠANA À ; ÔÎÐÌÈÐÎÂÀÍÈÅ PZ JZ OUT0 ; ÁÓÔÅÐ ÏÓÑÒÎÉ -> ÍÀ ÂÛÕÎÄ MOV D,A ; D=A - Ñ×ÅÒ×ÈÊ ÁÀÉÒΠ ÁÓÔÅÐÅ LXI H,RXDBUP ; HL=AflPEC ÁÓÔÅÐÀ ÏÐÈÍßÒÛÕ ÁÀÉÒΠINX Í ; HL+1 OUT1: LDA LBYT ; ÇÀÃÐÓÇÊÀ ÄËÈÍÛ ÁÀÉÒÀ MOV Â,À ;  Ñ×ÅÒ×ÈÊ-ÐÅÃÈÑÒÐ Â MOV À,Ì ; À=ÏÐÈÍßÒÀß ÏÎÑËÅÄÎÂÀÒÅËÜÍÎÑÒÜ OUT2: RLC ; ÑÄÂÈà ÏÐÈÍßÒÎÃÎ ÂËÅÂÎ ÄËß DCR  ; ÂÎÑÑÒÀÍÎÂËÅÍÈß ÍÀ×ÀËÀ ÁÀÉÒÀ JNZ OUT2 ; 6 ÏÎÇÈÖÈÈ 00 MOV Ñ,À ; Ñ:=ÏÎËÓ×ÅÍÍÛé ÑÈÌÂÎË CALL PRINTS ; ÂÛÄÀ×À ÁÀÉÒÀ ÍÀ ÝÊÐÀÍ INX Í ; HL+1 DCR D ; Ñ×ÅÒ×ÈÊ ÁÀÉÒΠ ÁÓÔÅÐÅ-1 JNZ OUT1 ; 00 -> ÎÁÐÀÁÎÒÊÀ ÑËÅÄ.ÁÀÉÒÀ MVI À, 0 ; À=0 STA RXDBUF ; ÑÁÐÎÑ ÓÊÀÇÀÒÅËß -> ÁÓÔÅÐ ÏÓÑÒ! OUT0: POP Í ; ÐÅÃÈÑÒÐÛ - ÈÇ ÑÒÅÊÀ POP D POP  RET TIMSTB: DW 768 ; ÊÎË. ÖÈÊËΠÎÆÈÄÀÍÈß ÑÒ.ÁÈÒÀ ;ÊÂÀÐÖ=16ÌÃÖ Ê=1200/ÑÊÎÐ , BAUD=22.6*K-2.6 ;BAUD: DW 539 ; ÑÊÎÐÎÑÒÜ RX/TX " 50 ÁÎÄ ;BAUD: DW 88 ; ÑÊÎÐÎÑÒÜ RX/TX " 300 ÁÎÄ BAUD: DW 20 ; ÑÊÎÐÎÑÒÜ RX/TX = 1200 ÁÎÄ LBYT: DB 8 ; ÄËÈÍÀ ÁÀÉÒÀ LSTPB: DB 4 ; ÄËÈÒ.ÑÒÎÏ.ÁÈÒÀ  ÏÎËÓÒÀÊÒÀÕ END ;************* ÊÎÍÅÖ ***************