https://emuverse.ru/w/index.php?title=%D0%9C%D0%B8%D0%BA%D1%80%D0%BE-80/%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE_1983-11,12/%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BC%D0%B8%D0%BA%D1%80%D0%BE-%D0%AD%D0%92%D0%9C/MonRK80.asm&feed=atom&action=history
Микро-80/Радио 1983-11,12/Программное обеспечение микро-ЭВМ/MonRK80.asm - История изменений
2024-03-29T12:53:36Z
История изменений этой страницы в вики
MediaWiki 1.40.0
https://emuverse.ru/w/index.php?title=%D0%9C%D0%B8%D0%BA%D1%80%D0%BE-80/%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE_1983-11,12/%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BC%D0%B8%D0%BA%D1%80%D0%BE-%D0%AD%D0%92%D0%9C/MonRK80.asm&diff=968&oldid=prev
Panther: http://retro.h1.ru/MK80/CPU/MonRK80.asm
2008-06-19T08:59:17Z
<p>http://retro.h1.ru/MK80/CPU/MonRK80.asm</p>
<p><b>Новая страница</b></p><div>{{ДИ|Автор=Г. ЗЕЛЕНКО, В. ПАНОВ, С. ПОПОВ|Источник=http://retro.h1.ru/MK80/CPU/MonRK80.asm}}<br />
<pre><br />
STEC: .equ 0F7FFH<br />
EKRAN: .equ 0E800H<br />
CURSOR: .equ 0E000H<br />
WRK: .equ 0F750H<br />
RWRK: .equ WRK+1FH<br />
ABUF: .equ WRK+15H<br />
BUF: .equ WRK+70H<br />
WORK: .equ WRK+2BH<br />
REGP: .equ 0E77CH<br />
SREG: .equ WRK+0ADH<br />
PORT0: .equ 0<br />
PORT1: .equ 1<br />
PORT2: .equ 2<br />
PORT3: .equ 3<br />
PORT4: .equ 4<br />
PORT5: .equ 5<br />
PORT6: .equ 6<br />
PORT7: .equ 7<br />
CR: .equ 0DH<br />
LF: .equ 0AH<br />
.org 0F800H<br />
JMP START<br />
JMP CI<br />
JMP MI<br />
JMP CO<br />
JMP MO<br />
JMP CO<br />
JMP STAT<br />
JMP D16<br />
JMP DISSO<br />
START: LXI H,BUF<br />
SHLD ABUF<br />
LXI SP,STEC<br />
MVI A,1FH<br />
CALL DIS<br />
BEGIN: MVI A,8BH<br />
OUT PORT4<br />
LXI SP,STEC<br />
LXI H,SOOB<br />
CALL DISSO<br />
CALL RADR<br />
LXI H,BEGIN<br />
PUSH H<br />
BEG1: LXI H,WORK<br />
MOV B,M<br />
LXI H,TBL<br />
LOOP: MOV A,M<br />
ANA A<br />
JZ ERROR<br />
CMP B<br />
JZ JOB<br />
INX H<br />
INX H<br />
INX H<br />
JMP LOOP<br />
JOB: INX H<br />
SPHL<br />
POP H<br />
LXI SP,SREG<br />
PCHL<br />
;<br />
RADR: LXI H,WORK<br />
RAD: CALL CI<br />
CPI 8<br />
JZ DELE<br />
CNZ DIS<br />
MOV M,A<br />
CPI CR<br />
JZ BKK<br />
MVI A,9AH<br />
CMP L<br />
INX H<br />
JNZ RAD<br />
ERROR: MVI A,3FH<br />
CALL DIS<br />
JMP BEGIN<br />
BKK: MVI M,CR<br />
RET<br />
;<br />
DELE: CALL DELET<br />
JMP RAD<br />
;<br />
DELET: MVI A,7BH<br />
CMP L<br />
RZ<br />
MVI A,8<br />
CALL DIS<br />
DCX H<br />
RET<br />
;<br />
PV: CALL PROB<br />
LXI H,WORK<br />
PVV0: MVI B,0<br />
PVV: CALL CI<br />
CPI 8<br />
JZ OGR<br />
CNZ DIS<br />
MOV M,A<br />
CPI ' '<br />
JZ SPACE<br />
CPI CR<br />
JZ BK<br />
MVI B,0FFH<br />
MVI A,9AH<br />
CMP L<br />
JZ ERROR<br />
INX H<br />
JMP PVV<br />
;<br />
SPACE: MVI M,CR<br />
MOV A,B<br />
RAL<br />
LXI D,WORK<br />
MVI B,0<br />
RET<br />
;<br />
OGR: CALL DELET<br />
JZ PVV0<br />
JMP PVV<br />
;<br />
BK: INX SP<br />
INX SP<br />
RET<br />
;<br />
DISSOOB:LXI H,CRLF<br />
DISSO: MOV A,M<br />
ANA A<br />
RZ<br />
CALL DIS<br />
INX H<br />
JMP DISSO<br />
;<br />
ADRES: LXI H,WRK+1<br />
MVI B,6<br />
XRA A<br />
LIP: MOV M,A<br />
DCR B<br />
JNZ LIP<br />
LXI D,RWRK+0DH<br />
CALL OBADR<br />
SHLD WRK+1<br />
SHLD WRK+3<br />
RC<br />
CALL OBADR<br />
SHLD WRK+3<br />
PUSH PSW<br />
PUSH D<br />
XCHG<br />
LHLD WRK+1<br />
XCHG<br />
CALL HILO1<br />
JC ERROR<br />
POP D<br />
POP PSW<br />
RC<br />
CALL OBADR<br />
SHLD WRK+5<br />
RC<br />
JMP ERROR<br />
;<br />
OBADR: LXI H,0<br />
FSP: LDAX D<br />
INX D<br />
CPI CR<br />
JZ FBK<br />
CPI ','<br />
RZ<br />
CPI ' '<br />
JZ FSP<br />
SUI '0'<br />
JM ERROR<br />
CPI LF<br />
JM FLF<br />
CPI 11H<br />
JM ERROR<br />
CPI 17H<br />
JP ERROR<br />
SUI 7<br />
FLF: MOV C,A<br />
DAD H<br />
DAD H<br />
DAD H<br />
DAD H<br />
JC ERROR<br />
DAD B<br />
JMP FSP<br />
FBK: STC<br />
RET<br />
;<br />
AD16: LHLD WRK+1<br />
MOV A,M<br />
D16: MOV B,A<br />
MOV A,B<br />
RRC<br />
RRC<br />
RRC<br />
RRC<br />
CALL CD16<br />
MOV A,B<br />
CD16: ANI 0FH<br />
CPI 0AH<br />
JM MD16<br />
ADI 7<br />
MD16: ADI 30H<br />
JMP DIS<br />
MD161: CALL DISSOOB<br />
LXI H,WRK+2<br />
ADR16: MOV A,M<br />
CALL D16<br />
DCX H<br />
MOV A,M<br />
CALL D16<br />
PROB: MVI A,' '<br />
JMP DIS<br />
;<br />
HILO: PUSH D<br />
LHLD WRK+1<br />
XCHG<br />
LHLD WRK+3<br />
CALL HILO1<br />
POP D<br />
JZ BK<br />
LXI H,WRK+1<br />
HIL: INR M<br />
RNZ<br />
INX H<br />
INR M<br />
RET<br />
;<br />
HILO1: MOV A,H<br />
CMP D<br />
RNZ<br />
MOV A,L<br />
CMP E<br />
RET<br />
;<br />
XREG: LXI H,RWRK+0DH<br />
MOV A,M<br />
CPI CR<br />
JZ MBK<br />
CPI 'S'<br />
JZ S<br />
LXI D,DIR<br />
CALL ADRS<br />
LXI H,ABUF<br />
INX D<br />
LDAX D<br />
MOV L,A<br />
PUSH H<br />
CALL PROB<br />
MOV A,M<br />
CALL D16<br />
CALL PV<br />
JNC BEGIN<br />
CALL OBADR<br />
MOV A,L<br />
POP H<br />
MOV M,A<br />
RET<br />
S: CALL PROB<br />
LXI H,ABUF+1<br />
CALL ADR16<br />
CALL PV<br />
JNC BEGIN<br />
CALL OBADR<br />
SHLD ABUF<br />
RET<br />
;<br />
ADRS: LDAX D<br />
ANA A<br />
JZ ERROR<br />
CMP M<br />
RZ<br />
INX D<br />
INX D<br />
JMP ADRS<br />
MBK: LXI D,DIR<br />
MVI B,8<br />
CALL DISSOOB<br />
MB1: LDAX D<br />
MOV C,A<br />
INX D<br />
PUSH B<br />
CALL RAZD<br />
LDAX D<br />
LXI H,ABUF<br />
MOV L,A<br />
MOV A,M<br />
CALL D16<br />
POP B<br />
INX D<br />
DCR B<br />
JNZ MB1<br />
LDAX D<br />
MOV C,A<br />
CALL RAZD<br />
LHLD ABUF<br />
SHLD WRK+1<br />
CALL ADR16-3<br />
MVI C,'O'<br />
CALL RAZD<br />
LXI H,WRK+20H<br />
CALL ADR16<br />
JMP DISSOOB<br />
;<br />
RAZD: CALL PROB<br />
MOV A,C<br />
CALL DIS<br />
MVI A,'-'<br />
JMP DIS<br />
;<br />
DIR: .db 'A',68H<br />
.db 'B',6AH<br />
.db 'C',69H<br />
.db 'D',6CH<br />
.db 'E',6BH<br />
.db 'F',67H<br />
.db 'H',6EH<br />
.db 'L',6DH<br />
.db 'S',65H,0<br />
;<br />
SBS: .db LF<br />
.text "START-"<br />
.db 0<br />
SBD: .db LF<br />
.text "DIR. -"<br />
.db 0<br />
BASTR: CALL ADRES<br />
CALL OST<br />
LHLD WRK+1<br />
MOV A,M<br />
MVI M,0FFH<br />
SHLD RWRK+3<br />
STA RWRK+5<br />
RET<br />
;<br />
OST: MVI A,0C3H<br />
STA 038H<br />
LXI H,WOST<br />
SHLD 39H<br />
RET<br />
;<br />
WOST: SHLD RWRK-2<br />
PUSH PSW<br />
LXI H,4<br />
DAD SP<br />
SHLD ABUF<br />
POP PSW<br />
XTHL<br />
DCX H<br />
XTHL<br />
LXI SP,RWRK-2<br />
PUSH D<br />
PUSH B<br />
PUSH PSW<br />
LXI SP,STEC<br />
LHLD ABUF<br />
DCX H<br />
MOV D,M<br />
DCX H<br />
MOV E,M<br />
MOV L,E<br />
MOV H,D<br />
SHLD RWRK<br />
LHLD RWRK+3<br />
CALL HILO1<br />
JZ WOS<br />
LHLD RWRK+6<br />
CALL HILO1<br />
JZ POT<br />
LHLD RWRK+09H<br />
CALL HILO1<br />
JZ POT1<br />
JMP ERROR<br />
WOS: LDA RWRK+5<br />
MOV M,A<br />
LXI H,0FFFFH<br />
SHLD RWRK+3<br />
JMP BEGIN<br />
;<br />
GO: CALL ADRES<br />
LDA RWRK+0DH<br />
CPI CR<br />
JNZ GO1<br />
LHLD RWRK<br />
SHLD WRK+1<br />
GO1: MVI A,0C3H<br />
STA WRK<br />
LXI SP,ABUF<br />
POP H<br />
POP PSW<br />
POP B<br />
POP D<br />
SPHL<br />
LHLD RWRK-2<br />
JMP WRK<br />
;<br />
POTL: CALL ADRES<br />
CALL OST<br />
LHLD WRK+1<br />
SHLD RWRK+6<br />
MOV A,M<br />
MVI M,0FFH<br />
STA RWRK+08H<br />
LHLD WRK+3<br />
SHLD RWRK+09H<br />
MOV A,M<br />
MVI M,0FFH<br />
STA RWRK+0BH<br />
LDA WRK+5<br />
STA RWRK+2<br />
LXI H,SBS<br />
CALL DISSO<br />
LXI H,RWRK+0DH<br />
CALL RAD<br />
CALL ADRES<br />
LXI H,SBD<br />
CALL DISSO<br />
CALL RADR<br />
JMP GO1<br />
POT: LDA RWRK+8<br />
MOV M,A<br />
LHLD RWRK+09H<br />
MVI A,0FFH<br />
CMP M<br />
JZ POT0<br />
MOV B,M<br />
MOV M,A<br />
MOV A,B<br />
STA RWRK+0BH<br />
POT0: CALL MBK<br />
CALL BEG1<br />
LHLD RWRK<br />
SHLD WRK+1<br />
JMP GO1<br />
POT1: LDA RWRK+0BH<br />
MOV M,A<br />
LHLD RWRK+6<br />
MVI A,0FFH<br />
CMP M<br />
JZ POT0<br />
MOV B,M<br />
MOV M,A<br />
MOV A,B<br />
STA RWRK+8<br />
LXI H,RWRK+2<br />
DCR M<br />
JNZ POT0<br />
LDA RWRK+8<br />
LHLD RWRK+6<br />
MOV M,A<br />
JMP BEGIN<br />
;<br />
DISPL: CALL ADRES<br />
CALL DISSOOB<br />
DIPL1: CALL MD161<br />
IPL2: CALL PROB<br />
CALL AD16<br />
CALL HILO<br />
LDA WRK+1<br />
ANI 0FH<br />
JZ DIPL1<br />
JMP IPL2<br />
;<br />
CREF: CALL ADRES<br />
LHLD WRK+5<br />
XCHG<br />
CRE: LHLD WRK+1<br />
LDAX D<br />
CMP M<br />
JZ CRE1<br />
CALL MD161<br />
CALL PROB<br />
CALL AD16<br />
CALL PROB<br />
LDAX D<br />
CALL D16<br />
CRE1: INX D<br />
CALL HILO<br />
JMP CRE<br />
;<br />
FMEM: CALL ADRES<br />
LDA WRK+5<br />
MOV B,A<br />
FM: LHLD WRK+1<br />
MOV M,B<br />
CALL HILO<br />
JMP FM<br />
;<br />
SBAIT: CALL ADRES<br />
MOV C,L<br />
SB: LHLD WRK+1<br />
MOV A,C<br />
CMP M<br />
CZ MD161<br />
CALL HILO<br />
JMP SB<br />
;<br />
TMEM: CALL ADRES<br />
LHLD WRK+5<br />
XCHG<br />
TM: LHLD WRK+1<br />
MOV A,M<br />
STAX D<br />
INX D<br />
CALL HILO<br />
JMP TM<br />
;<br />
MEMOR: CALL ADRES<br />
MEM: CALL PROB<br />
CALL AD16<br />
CALL PV<br />
JNC MEM1<br />
CALL OBADR<br />
MOV A,L<br />
LHLD WRK+1<br />
MOV M,A<br />
MEM1: LXI H,WRK+1<br />
CALL HIL<br />
CALL MD161<br />
JMP MEM<br />
;<br />
JOBS: CALL ADRES<br />
LHLD WRK+1<br />
PCHL<br />
;<br />
MA: CALL DISSOOB<br />
LDA RWRK+0DH<br />
CALL D16<br />
JMP DISSOOB<br />
;<br />
KLB: CALL CI<br />
CPI 1<br />
JZ BEGIN<br />
CALL DIS<br />
JMP KLB<br />
;<br />
QMEM: CALL ADRES<br />
QM: LHLD WRK+1<br />
MOV C,M<br />
MVI A,55H<br />
MOV M,A<br />
CMP M<br />
CNZ QM1<br />
MVI A,0AAH<br />
MOV M,A<br />
CMP M<br />
CNZ QM1<br />
MOV M,C<br />
CALL HILO<br />
JMP QM<br />
QM1: PUSH PSW<br />
CALL MD161<br />
CALL PROB<br />
CALL AD16<br />
CALL PROB<br />
POP PSW<br />
CALL D16<br />
RET<br />
;<br />
LMEM: CALL ADRES<br />
CALL DISSOOB<br />
LM0: CALL MD161<br />
LM: CALL PROB<br />
LHLD WRK+1<br />
MOV A,M<br />
CPI 20H<br />
JC LM1<br />
CPI 80H<br />
JNC LM1<br />
JMP LM2<br />
LM1: MVI A,'.'<br />
LM2: CALL DIS<br />
CALL HILO<br />
LDA WRK+1<br />
ANI 0FH<br />
JZ LM0<br />
JMP LM<br />
;<br />
HEX: LXI H,WRK+1<br />
MVI B,6<br />
XRA A<br />
HE1: MOV M,A<br />
DCR B<br />
JNZ HE1<br />
LXI D,RWRK+0DH<br />
CALL OBADR<br />
SHLD WRK+1<br />
CALL OBADR<br />
SHLD WRK+3<br />
CALL DISSOOB<br />
LHLD WRK+1<br />
SHLD WRK+5<br />
XCHG<br />
LHLD WRK+3<br />
DAD D<br />
SHLD WRK+1<br />
CALL MD161+3<br />
LHLD WRK+3<br />
XCHG<br />
LHLD WRK+5<br />
MOV A,E<br />
CMA<br />
MOV E,A<br />
MOV A,D<br />
CMA<br />
MOV D,A<br />
INX D<br />
DAD D<br />
SHLD WRK+1<br />
CALL MD161+3<br />
JMP DISSOOB<br />
;<br />
INPUT: MVI A,0FFH<br />
CALL MI<br />
STA WRK+2<br />
STA WRK+0FH<br />
MVI A,8<br />
CALL MI<br />
STA WRK+1<br />
STA WRK+0EH<br />
MVI A,8<br />
CALL MI<br />
STA WRK+4<br />
STA WRK+11H<br />
MVI A,8<br />
CALL MI<br />
STA WRK+3<br />
STA WRK+10H<br />
MVI A,8<br />
LXI H,IN3<br />
PUSH H<br />
INP1: LHLD WRK+1<br />
CALL MI<br />
MOV M,A<br />
CALL HILO<br />
MVI A,8<br />
JMP INP1<br />
IN3: LXI H,WRK+0FH<br />
CALL ADR16<br />
LXI H,WRK+11H<br />
CALL ADR16<br />
JMP DISSOOB<br />
;<br />
OUTPUT: CALL ADRES<br />
XRA A<br />
MVI B,0<br />
OU1: CALL MO<br />
DCR B<br />
JNZ OU1<br />
MVI A,0E6H<br />
CALL MO<br />
LDA WRK+2<br />
CALL MO<br />
LDA WRK+1<br />
CALL MO<br />
LDA WRK+4<br />
CALL MO<br />
LDA WRK+3<br />
CALL MO<br />
OU2: LHLD WRK+1<br />
MOV A,M<br />
CALL MO<br />
CALL HILO<br />
JMP OU2<br />
;<br />
VERIFI: MVI A,0FFH<br />
CALL MI<br />
STA WRK+2<br />
MVI A,8<br />
CALL MI<br />
STA WRK+1<br />
MVI A,8<br />
CALL MI<br />
STA WRK+4<br />
MVI A,8<br />
CALL MI<br />
STA WRK+3<br />
VER0: MVI A,8<br />
CALL MI<br />
LHLD WRK+1<br />
CMP M<br />
JZ VER1<br />
PUSH PSW<br />
CALL MD161<br />
CALL PROB<br />
CALL AD16<br />
CALL PROB<br />
POP PSW<br />
CALL D16<br />
VER1: CALL HILO<br />
JMP VER0<br />
;<br />
MI: PUSH B<br />
PUSH D<br />
MVI C,0<br />
MOV D,A<br />
IN PORT1<br />
MOV E,A<br />
MI0: MOV A,C<br />
ANI 7FH<br />
RLC<br />
MOV C,A<br />
MI1: IN PORT1<br />
CMP E<br />
JZ MI1<br />
ANI 1<br />
ORA C<br />
MOV C,A<br />
CALL DELAY7<br />
IN PORT1<br />
MOV E,A<br />
MOV A,D<br />
ORA A<br />
JP MI5<br />
MOV A,C<br />
CPI 0E6H<br />
JNZ MI4<br />
XRA A<br />
STA WRK+7<br />
JMP MI3<br />
MI4: CPI 19H<br />
JNZ MI0<br />
MVI A,0FFH<br />
STA WRK+7<br />
MI3: MVI D,9<br />
MI5: DCR D<br />
JNZ MI0<br />
LDA WRK+7<br />
XRA C<br />
POP D<br />
POP B<br />
RET<br />
;<br />
DELAY7: PUSH PSW<br />
LDA WRK+0CH<br />
DELY33: MOV B,A<br />
POP PSW<br />
DELY: DCR B<br />
JNZ DELY<br />
RET<br />
;<br />
MO: PUSH B<br />
PUSH D<br />
PUSH PSW<br />
MOV D,A<br />
MVI C,8<br />
MO0: MOV A,D<br />
RLC<br />
MOV D,A<br />
MVI A,1<br />
XRA D<br />
OUT PORT1<br />
CALL DELY5<br />
MVI A,0<br />
XRA D<br />
OUT PORT1<br />
CALL DELY5<br />
DCR C<br />
JNZ MO0<br />
POP PSW<br />
POP D<br />
POP B<br />
RET<br />
;<br />
DELY5: PUSH PSW<br />
LDA WRK+0DH<br />
JMP DELY33<br />
;<br />
TBL: .db 'M'<br />
.dw MEMOR<br />
.db 'C'<br />
.dw CREF<br />
.db 'D'<br />
.dw DISPL<br />
.db 'B'<br />
.dw BASTR<br />
.db 'G'<br />
.dw GO<br />
.db 'P'<br />
.dw POTL<br />
.db 'X'<br />
.dw XREG<br />
.db 'F'<br />
.dw FMEM<br />
.db 'S'<br />
.dw SBAIT<br />
.db 'T'<br />
.dw TMEM<br />
.db 'I'<br />
.dw INPUT<br />
.db 'O'<br />
.dw OUTPUT<br />
.db 'V'<br />
.dw VERIFI<br />
.db 'J'<br />
.dw JOBS<br />
.db 'A'<br />
.dw MA<br />
.db 'K'<br />
.dw KLB<br />
.db 'Q'<br />
.dw QMEM<br />
.db 'L'<br />
.dw LMEM<br />
.db 'H'<br />
.dw HEX<br />
.db 0<br />
SOOB: .db LF<br />
.text "*Њ€ЉђЋ/80* ЊЋЌ€’Ћђ"<br />
.db LF,3EH,0<br />
CRLF: .db LF,0<br />
DIS: PUSH H<br />
PUSH B<br />
PUSH D<br />
PUSH PSW<br />
MOV C,A<br />
JMP DI1<br />
CO: PUSH H<br />
PUSH B<br />
PUSH D<br />
PUSH PSW<br />
DI1: LHLD WRK+0AH<br />
LXI D,0F801H<br />
DAD D<br />
MVI M,0<br />
LHLD WRK+0AH<br />
MOV A,C<br />
CPI 1FH<br />
JZ CTR<br />
CPI 8<br />
JZ LEV<br />
CPI 18H<br />
JZ PRAV<br />
CPI 19H<br />
JZ VERX<br />
CPI 1AH<br />
JZ VNIZ<br />
CPI LF<br />
JZ DLF<br />
CPI 0CH<br />
JZ HOME<br />
MOV A,H<br />
CPI 0F0H<br />
JNZ NEP<br />
CALL STAT<br />
ORA A<br />
JZ ECT<br />
CALL CI<br />
ECT: CALL CLEAR<br />
LXI H,EKRAN<br />
NEP: MOV M,C<br />
INX H<br />
OKON: SHLD WRK+0AH<br />
LXI D,0F801H<br />
DAD D<br />
MVI M,80H<br />
POP PSW<br />
POP D<br />
POP B<br />
POP H<br />
RET<br />
CTR: CALL CLEAR<br />
HOME: LXI H,EKRAN<br />
JMP OKON<br />
CLEAR: LXI H,EKRAN<br />
LXI D,CURSOR<br />
CLE1: MVI M,' '<br />
INX H<br />
MVI A,0<br />
STAX D<br />
INX D<br />
MOV A,H<br />
CPI 0F0H<br />
RZ<br />
JMP CLE1<br />
PRAV: INX H<br />
MOV A,H<br />
CPI 0F0H<br />
JNZ OKON<br />
JZ HOME<br />
LEV: DCX H<br />
MOV A,H<br />
CPI 0E7H<br />
JNZ OKON<br />
LXI H,0EFFFH<br />
JMP OKON<br />
VNIZ: LXI D,40H<br />
DAD D<br />
MOV A,H<br />
CPI 0F0H<br />
JNZ OKON<br />
MVI H,0E8H<br />
JMP OKON<br />
VERX: LXI D,0FFC0H<br />
DAD D<br />
MOV A,H<br />
CPI 0E7H<br />
JNZ OKON<br />
LXI D,800H<br />
DAD D<br />
JMP OKON<br />
DLF: INX H<br />
MOV A,L<br />
ORA A<br />
JZ DLF1<br />
CPI 40H<br />
JZ DLF1<br />
CPI 80H<br />
JZ DLF1<br />
CPI 0C0H<br />
JZ DLF1<br />
JMP DLF<br />
DLF1: MOV A,H<br />
CPI 0F0H<br />
JNZ OKON<br />
CALL STAT<br />
ORA A<br />
JZ CTR<br />
CALL CI<br />
JMP CTR<br />
;<br />
CI: PUSH B<br />
PUSH D<br />
PUSH H<br />
CI0: MVI B,0<br />
MVI C,0FEH<br />
MVI D,8<br />
CI2: MOV A,C<br />
OUT PORT7<br />
RLC<br />
MOV C,A<br />
IN PORT6<br />
ANI 7FH<br />
CPI 7FH<br />
JNZ CI1<br />
MOV A,B<br />
ADI 7<br />
MOV B,A<br />
DCR D<br />
JNZ CI2<br />
JMP CI0<br />
CI1: STA WRK+14H<br />
RAR<br />
JNC CI3<br />
INR B<br />
JMP CI1+3<br />
CI3: MOV A,B<br />
CPI '0'<br />
JNC CI4<br />
ADI '0'<br />
CPI 3CH<br />
JC CI5<br />
CPI 40H<br />
JNC CI5<br />
ANI 2FH<br />
CI5: MOV C,A<br />
JMP CI6<br />
CI4: LXI H,TBLK<br />
SUI 30H<br />
MOV C,A<br />
MVI B,0<br />
DAD B<br />
MOV A,M<br />
JMP CI7<br />
CI6: IN PORT5<br />
ANI 7H<br />
CPI 7<br />
JZ CI8<br />
RAR <br />
RAR<br />
JNC CI9<br />
RAR<br />
JNC CI10<br />
MOV A,C<br />
ORI 20H<br />
JMP CI7<br />
CI9: MOV A,C<br />
ANI 1FH<br />
JMP CI7<br />
CI10: MOV A,C<br />
CPI 40H<br />
JNC CI7<br />
CPI 30H<br />
JNC CI11<br />
ORI 10H<br />
JMP CI7<br />
CI11: ANI 2FH<br />
JMP CI7<br />
CI8: MOV A,C<br />
CI7: MOV C,A<br />
CALL CDELY<br />
LXI H,WRK+14H<br />
CI12: IN PORT6<br />
CMP M<br />
JZ CI12<br />
CALL CDELY<br />
MOV A,C<br />
POP H<br />
POP D<br />
POP B<br />
RET<br />
;<br />
CDELY: LXI D,1000H<br />
CDE: DCX D<br />
MOV A,D<br />
ORA E<br />
RZ<br />
JMP CDE<br />
;<br />
TBLK: .db 20H,18H,8,19H,1AH,CR,1FH,0CH<br />
;<br />
STAT: MVI A,0<br />
OUT PORT7<br />
IN PORT6<br />
ANI 7FH<br />
CPI 7FH<br />
JNZ MIMO<br />
XRA A<br />
RET<br />
MIMO: MVI A,0FFH<br />
RET<br />
.end<br />
</pre><br />
[[Категория:Микро-80/Публикации|081]]</div>
Panther