Мой вариант, дизассемблировал на Орион-128 самописным дизассемблером :)
Orion-128 file
RK.AS
; дИЗАССЕМБЛИРОВАЛ DENN
; 13.02.2017
; пОРТ КЛАВИАТУРЫ
PT_KB1:EQU 8001H
PT_KB0:EQU 8000H
PT_KB2:EQU 8002H
PT_KB3:EQU 8003H
; пОРТ ROM-ДИСКА
PT_RD0:EQU 0A000H
PT_RD1:EQU 0A001H
PT_RD2:EQU 0A002H
PT_RD3:EQU 0A003H
; рЕГИСТРЫ вг75
VG_R0:EQU 0C000H
VG_R1:EQU 0C001H
; рЕГИСТРЫ вт57 (ТОЛЬКО ЗАПИСЬ)
VT_R4:EQU 0E004H
VT_R8:EQU 0E008H
STACK:EQU 76CFH; СТЕК мОНИТОРА
STACK2:EQU 7618H
RAMTOP:EQU 75FFH
ExtPRG:EQU 0F000H; АДРЕС ПЕРЕХОДА ПО 'U'
VidBEG:EQU 77C2H; НАЧАЛО ВИДИМОЙ ОБЛАСТИ
VidEND:EQU 765FH; КОНЕЦ ВИДИМОЙ ОБЛАСТИ
ScrEND:EQU 7FF4H; КОНЕЦ ЭКРАННОЙ ОБЛАСТИ
; сИСТЕМНЫЕ ПЕРЕМЕННЫЕ
M_eVID:EQU 7600H; РАЗРЕШЕНИЕ ОТОБРАЖЕНИЯ ВИДЕО
M_cPOS:EQU 7602H; ТЕКУЩАЯ ПОЗИЦИЯ КУРСОРА
M_PCHR:EQU 7604H; ПЕРЕМЕННАЯ П/П PRC
M_PKEY:EQU 7605H; ПЕРЕМЕННАЯ П/П KEY
M_RULA:EQU 7606H; рус/LAT
M_KEY1:EQU 7609H
M_KEY2:EQU 760BH
M_SFST:EQU 760DH
M_RRST:EQU 7614H
M_ADDR:EQU 7616H; СОХР-Е [HL] (АДРЕСА)
M_STAK:EQU 761CH; СОХР-Е СТЕКА
M_RST2:EQU 761EH
M_SvDE:EQU 7623H; СОХР-Е [DE] (GOTO)
M_SvOC:EQU 7625H; СОХР-Е КОМАНДЫ (GOTO)
M_GOTO:EQU 7626H; ВЕКТОР ПЕРЕХОДА (GOTO)
; === НАЧАЛО ОБНУЛЯЕМОЙ ОБЛАСТИ ПЕРМЕННЫХ ===
M_[HL]:EQU 7627H; СОХР-Е [HL]
M_[DE]:EQU 7629H; СОХР-Е [DE]
M_[BC]:EQU 762BH; СОХР-Е [BC]
M_MGLD:EQU 762DH; ПЕРЕМЕННАЯ П/П ЧТЕНИЯ мг
; === КОНЕЦ ОБНУЛЯЕМОЙ ОБЛАСТИ ПЕРМЕННЫХ ===
M_LDBT:EQU 762EH; ПЕРЕМЕННАЯ П/П ЧТЕНИЯ БАЙТА
M_C\LD:EQU 762FH; КОНСТАНТА ЧТЕНИЯ С мг
M_C\SV:EQU 7630H; КОНСТАНТА ЗАПИСИ НА мг
M_RTOP:EQU 7631H; ЗНАЧЕНИЕ RamTOP
B_CMD:EQU 7633H; БУФЕР ВВОДА СТРОКИ
ORG 0F800H
; кЕРНАЛЬ ПЕРЕХОДОВ СТАНДАРТНЫХ п/п
JMP RESET; 0F800h
JMP KEY; 0F803h
JMP LdBYTE; 0F806h
JMP PRC; 0F809h
JMP SvBYTE; 0F80Ch
JMP PRC; 0F80Fh
JMP TstKEY; 0F812h
JMP PRH; 0F815h
JMP MSG; 0F818h
JMP SCN; 0F81Bh
JMP AskPOS; 0F81Eh
JMP GetSCR; 0F821h
JMP LdBLOK; 0F824h
JMP SvBLOK; 0F827h
JMP GetK\S; 0F82Ah
JMP EnVID; 0F82Dh
JMP GetTOP; 0F830h
JMP SetTOP; 0F833h
RESET:
; "хОЛОДНЫЙ" СБРОС (0F800h)
; НАСТРОКА ПОРТА КЛАВИАТУРЫ
MVI A,8AH
STA PT_KB3
; НАСТРОКА СТЕКА
LXI SP,STACK
; НАСТРОЙКА/ВКЛЮЧЕНИЕ ОТОБРАЖЕНИЯ
CALL EnVID
LXI H,M_eVID
LXI D,VidEND
MVI C,0
CALL FILL
; ЗН-Е СТЕКА В СИСТЕМНУЮ ПЕРМЕННУЮ
LXI H,STACK
SHLD M_STAK
; ВЫВОД ЗАСТАВКИ "радио-86рк"
LXI H,T_MAIN
CALL MSG
; ОТОБРАЖЕНИЕ...
CALL EnVID
; УСТАНОВКА RamTOP В 75FFh
LXI H,RAMTOP
SHLD M_RTOP
; ИНИЦИАЛИЗАЦИЯ КОНСТАНТ мг
LXI H,1D2AH
SHLD M_C\LD
; ИНИЦИАЛИЗАЦИЯ ПЕРЕХОДА (GOTO)
MVI A,0C3H
STA M_GOTO
HotRES:
; "гОРЯЧИЙ СБРОС" (F86Ch)
LXI SP,STACK
; ВЫВОд ПРОМПТА
LXI H,T_PMPT
CALL MSG
; ГАШЕНИЕ С/Д "рус/LAT"
; [A]=00h
STA PT_KB2
DCR A; [A]=FFh
STA PT_RD2
; ВВОД КОМАНДНОЙ СТРОКИ
CALL InBUF
; АДРЕС ВОЗВРАТА В F86Ch В СТЕК
LXI H,HotRES
PUSH H
; АНАЛИЗ КОМАНДНОЙ СТРОКИ
LXI H,B_CMD
MOV A,M
CPI 'X'
JZ PrREGS
CPI 'U'
JZ ExtPRG
; ОБНУЛЕНИЕ ПЕРЕМЕННЫХ
; ВЗЯТИЕ ПАРАМЕТРОВ
; СОХРАНЕНИЕ РЕГИСТРОВ
PUSH PSW
CALL GetPRM
LHLD M_[BC]
MOV C,L
MOV B,H
LHLD M_[DE]
XCHG
LHLD M_[HL]
POP PSW
; АНАЛИЗ ДЕРИКТИВ
CPI 'D'
JZ PrDUMP
CPI 'C'
JZ COMPR
CPI 'F'
JZ FILL
CPI 'S'
JZ SEARCH
CPI 'T'
JZ TRANSF
CPI 'M'
JZ MODIFY
CPI 'G'
JZ GOTO
CPI 'I'
JZ MGLOAD
CPI 'O'
JZ MGSAVE
CPI 'L'
JZ PrSIMB
CPI 'R'
JZ LdROMD
JMP ExtPRG
InBKSP:
; УДАЛЕНИЕ СИМВОЛА КОМАНДНОЙ СТРОКИ
MVI A,B_CMD; 33H
CMP L
JZ InBUF0
PUSH H
LXI H,T_DEL
CALL MSG
POP H
DCX H
JMP InBUF1
InBUF:
; вВОД КОМАНДНОЙ СТРОКИ
LXI H,B_CMD
InBUF0:
MVI B,0
InBUF1:
CALL KEY
CPI 8
JZ InBKSP
CPI 7FH
JZ InBKSP
CNZ PRA
MOV M,A
CPI 13
JZ InENTR
CPI '.'
JZ HotRES
MVI B,0FFH
MVI A,B_CMD+31; 52H
CMP L
JZ ErEXIT
INX H
JMP InBUF1
InENTR:
MOV A,B
RAL
LXI D,B_CMD
MVI B,0
RET
MSG:
; вЫВОД СООБЩЕНИЯ
MOV A,M
ANA A
RZ
CALL PRA
INX H
JMP MSG
GetPRM:
; вЗЯТИЕ ПАРАМЕТРОВ ИЗ КОМАНДНОЙ СТРОКИ
LXI H,M_[HL]
LXI D,M_MGLD
MVI C,0
CALL FILL
LXI D,B_CMD+1; 7634h
CALL GetVAL
SHLD M_[HL]
SHLD M_[DE]
RC
MVI A,0FFH
STA M_MGLD
CALL GetVAL
SHLD M_[DE]
RC
CALL GetVAL
SHLD M_[BC]
RC
JMP ErEXIT
GetVAL:
; вЗЯТИЕ ЗНАЧЕНИЯ АДРЕСА В [HL]
LXI H,0
AddVAL:
LDAX D
INX D
CPI 13
JZ StcRET
CPI ','
RZ
CPI ' '
JZ AddVAL
SUI '0'
JM ErEXIT
CPI 10
JM GtVAL1
CPI 17
JM ErEXIT
CPI 23
JP ErEXIT
SUI 7
GtVAL1:
MOV C,A
DAD H
DAD H
DAD H
DAD H
JC ErEXIT
DAD B
JMP AddVAL
StcRET:
STC
RET
TSTHD:
MOV A,H
CMP D
RNZ
MOV A,L
CMP E
RET
IfENDF:
; пРОВЕРКА НА [F4] И НА КОНЕЦ АДРЕСА
CALL TstF4
TstEND:
; пРОВЕРКА НА КОНЕЦ АДРЕСА
CALL TSTHD
JNZ HppRET
SP2RET:
INX SP
INX SP
RET
HppRET:
INX H
RET
TstF4:
; пРОВЕРКА НА [F4]
CALL SCN
CPI 3
RNZ
CALL EnVID
JMP ErEXIT
PrUPUP:
; вЫВОД [╨] + ЧЕТЫРЕ [╡]
PUSH H
LXI H,T_GoUP
CALL MSG
POP H
RET
PRM:
; вЫВОД ЗН-Я ЯЧЕЙКИ ПО [HL] В HEX-ВИДЕ
MOV A,M
PRH_SP:
PUSH B
CALL PRH
MVI A,' '
CALL PRA
POP B
RET
PrDUMP:
; вЫВОД ДАМПА
CALL Pr[HL]
PrDMP1:
CALL PRM
CALL IfENDF
MOV A,L
ANI 0FH
JZ PrDUMP
JMP PrDMP1
COMPR:
LDAX B
CMP M
JZ COMPR1
CALL Pr[HL]
CALL PRM
LDAX B
CALL PRH_SP
COMPR1:
INX B
CALL IfENDF
JMP COMPR
FILL:
MOV M,C
CALL TstEND
JMP FILL
SEARCH:
MOV A,C
CMP M
CZ Pr[HL]
CALL IfENDF
JMP SEARCH
TRANSF:
MOV A,M
STAX B
INX B
CALL TstEND
JMP TRANSF
PrSIMB:
; вВОД ДАМПА В СИМВОЛЬНОМ ВИДЕ
CALL Pr[HL]
PrSIM1:
MOV A,M
ORA A
JM PrSIM2
CPI 20H
JNC PrSIM3
PrSIM2:
MVI A,2EH
PrSIM3:
CALL PRA
CALL IfENDF
MOV A,L
ANI 0FH
JZ PrSIMB
JMP PrSIM1
MODIFY:
; мОДИФИКАЦИЯ ЯЧЕЕК озу
CALL Pr[HL]
CALL PRM
PUSH H
CALL InBUF
POP H
JNC MODIF1
PUSH H
CALL GetVAL
MOV A,L
POP H
MOV M,A
MODIF1:
INX H
JMP MODIFY
GOTO:
; пЕРЕХОД ПО АДРЕСУ
CALL TSTHD
JZ GOTO1
XCHG
SHLD M_SvDE
MOV A,M
STA M_SvOC
MVI M,0F7H; ЗАПИСЬ КОМАНДЫ "RST 6" (CALL 0030h)
; ПО АДРЕСУ 0030h ЗАПИСЫВАЕМ "JMP RtRST6"
MVI A,0C3H
STA 0030H
LXI H,RtRST6
SHLD 0031H
GOTO1:
LXI SP,STACK2
POP B
POP D
POP H
POP PSW
SPHL
LHLD M_ADDR
JMP M_GOTO
LdROMD:
; чТЕНИЕ ROM-ДИСКА
; ПРОГРАММИРОВАНИЕ ПОРТА
MVI A,90H
STA PT_RD3
LdROM0:
SHLD PT_RD1
LDA PT_RD0
STAX B
INX B
CALL TstEND
JMP LdROM0
AskPOS:
; зАПРОС ТЕКУЩЕЙ ПОЗИЦИИ КУРСОРА
LHLD M_cPOS
RET
GetSCR:
; зАПРОС БАЙТА ИЗ ЭКРАННОГО БУФЕРА
PUSH H
LHLD M_eVID
MOV A,M
POP H
RET
MGLOAD:
; чТЕНИЕ БЛОКА С МАГНИТОФОНА
LDA M_MGLD
ORA A
JZ MG_LD1
MOV A,E
STA M_C\LD
MG_LD1:
CALL LdBLOK
CALL Pr[HL]
XCHG
CALL Pr[HL]
XCHG
PUSH B
CALL GetK\S
MOV H,B
MOV L,C
CALL Pr[HL]
POP D
CALL TSTHD
RZ
XCHG
CALL Pr[HL]
ErEXIT:
; вЫХОД ПРИ ОШИБКЕ
MVI A,'?'
CALL PRA
JMP HotRES
LdBLOK:
; чТЕНИЕ БЛОКА С мг
MVI A,0FFH
CALL LdSYNC
PUSH H
DAD B
XCHG
CALL Ld0808
POP H
DAD B
XCHG
PUSH H
CALL LdBODY
MVI A,0FFH
CALL LdSYNC
POP H
EnVID:
; вКЛЮЧИТЬ ОТОБРАЖЕНИЕ ИЗОБРАЖЕНИЯ
PUSH H
LXI H,VG_R1
MVI M,0
DCX H
MVI M,4DH
MVI M,1DH
MVI M,99H
MVI M,93H
INX H
MVI M,27H
MOV A,M
EnVID1:
MOV A,M
ANI 20H
JZ EnVID1
LXI H,VT_R8
MVI M,80H
MVI L,4
MVI M,0D0H
MVI M,76H
INR L
MVI M,23H
MVI M,49H
MVI L,8
MVI M,0A4H
POP H
RET
Ld0808:
MVI A,8
LdSYNC:
CALL LdBYTE
MOV B,A
MVI A,8
CALL LdBYTE
MOV C,A
RET
LdBODY:
MVI A,8
CALL LdBYTE
MOV M,A
CALL TstEND
JMP LdBODY
GetK\S:
; пОДСЧЕТ КОНТРОЛЬНОЙ СУММЫ БЛОКА
LXI B,0
GetKS1:
MOV A,M
ADD C
MOV C,A
PUSH PSW
CALL TSTHD
JZ SP2RET
POP PSW
MOV A,B
ADC M
MOV B,A
CALL TstEND
JMP GetKS1
MGSAVE:
; зАПИСЬ БЛОКА НА мг
MOV A,C
ORA A
JZ MG_SV1
STA M_C\SV
MG_SV1:
PUSH H
CALL GetK\S
POP H
CALL Pr[HL]
XCHG
CALL Pr[HL]
XCHG
PUSH H
MOV H,B
MOV L,C
CALL Pr[HL]
POP H
SvBLOK:
; зАПИСЬ БЛОКА НА мг
PUSH B
LXI B,0
SvBLK1:
CALL SvBYTE
DCR B
XTHL
XTHL
JNZ SvBLK1
MVI C,0E6H
CALL SvBYTE
CALL SvWORD
XCHG
CALL SvWORD
XCHG
CALL Sv[HL]
LXI H,0
CALL SvWORD
MVI C,0E6H
CALL SvBYTE
POP H
CALL SvWORD
JMP EnVID
Pr[HL]:
PUSH B
CALL PrUPUP
MOV A,H
CALL PRH
MOV A,L
CALL PRH_SP
POP B
RET
Sv[HL]:
MOV C,M
CALL SvBYTE
CALL TstEND
JMP Sv[HL]
SvWORD:
; зАПИСЬ РЕГ. ПАРЫ [HL] НА мг
MOV C,H
CALL SvBYTE
MOV C,L
JMP SvBYTE
LdBYTE:
; чТЕНИЕ БАЙТА С мг
PUSH H
PUSH B
PUSH D
MOV D,A
LdBYT1:
MVI A,80H
STA VT_R8
LXI H,0
DAD SP
LXI SP,0
SHLD M_SFST
MVI C,0
LDA PT_KB2
RRC
RRC
RRC
RRC
ANI 1
MOV E,A
LdBYT2:
POP PSW
MOV A,C
ANI 7FH
RLC
MOV C,A
MVI H,0
LdBYT3:
DCR H
JZ LdBYT9
POP PSW
LDA PT_KB2
RRC
RRC
RRC
RRC
ANI 1
CMP E
JZ LdBYT3
ORA C
MOV C,A
DCR D
LDA M_C\LD
JNZ LdBYT4
SUI 12H
LdBYT4:
MOV B,A
LdBYT5:
POP PSW
DCR B
JNZ LdBYT5
INR D
LDA PT_KB2
RRC
RRC
RRC
RRC
ANI 1
MOV E,A
MOV A,D
ORA A
JP LdBYT8
MOV A,C
CPI 0E6H
JNZ LdBYT6
XRA A
STA M_LDBT
JMP LdBYT7
LdBYT6:
CPI 19H
JNZ LdBYT2
MVI A,0FFH
STA M_LDBT
LdBYT7:
MVI D,9
LdBYT8:
DCR D
JNZ LdBYT2
; НАСТРОЙКА вг75/вт57
LXI H,VT_R4
MVI M,0D0H
MVI M,76H
INX H
MVI M,23H
MVI M,49H
MVI A,27H
STA VG_R1
MVI A,0E0H
STA VG_R1
MVI L,8
MVI M,0A4H
LHLD M_SFST
SPHL
LDA M_LDBT
XRA C
JMP AllRET
LdBYT9:
LHLD M_SFST
SPHL
CALL EnVID
MOV A,D
ORA A
JP ErEXIT
CALL TstF4
JMP LdBYT1
SvBYTE:
; зАПИСЬ БАЙТА НА мг
PUSH H
PUSH B
PUSH D
PUSH PSW
MVI A,80H
STA VT_R8
LXI H,0
DAD SP
LXI SP,0
MVI D,8
SvBYT1:
POP PSW
MOV A,C
RLC
MOV C,A
MVI A,1
XRA C
STA PT_KB2
LDA M_C\SV
MOV B,A
SvBYT2:
POP PSW
DCR B
JNZ SvBYT2
MVI A,0
XRA C
STA PT_KB2
DCR D
LDA M_C\SV
JNZ SvBYT3
SUI 0EH
SvBYT3:
MOV B,A
SvBYT4:
POP PSW
DCR B
JNZ SvBYT4
INR D
DCR D
JNZ SvBYT1
SPHL
LXI H,VT_R4
MVI M,0D0H
MVI M,76H
INX H
MVI M,23H
MVI M,49H
MVI A,27H
STA VG_R1
MVI A,0E0H
STA VG_R1
MVI L,8
MVI M,0A4H
POP PSW
AllRET:
POP D
POP B
POP H
RET
PRH:
; вВОД HEX-БАЙТА
PUSH PSW
RRC
RRC
RRC
RRC
CALL PrHEX1
POP PSW
PrHEX1:
ANI 0FH
CPI 0AH
JM PrHEX2
ADI 7
PrHEX2:
ADI 30H
PRA:
; вВОД СИМВОЛА [A]
MOV C,A
PRC:
; вВОД СИМВОЛА [C]
PUSH PSW
PUSH B
PUSH D
PUSH H
CALL TstKEY
LXI H,PrCH11
PUSH H
LHLD M_cPOS
XCHG
LHLD M_eVID
LDA M_PCHR
DCR A
JM PrCHR4
JZ PrCHR8
JPO PrCHR9
MOV A,C
SUI 20H
MOV C,A
PrCHR1:
DCR C
JM PrCHR2
PUSH B
CALL PrRIGT
POP B
JMP PrCHR1
PrCHR2:
XRA A
PrCHR3:
STA M_PCHR
RET
PrCHR4:
MOV A,C
ANI 7FH
MOV C,A
CPI 31
JZ PrCLS
CPI 12
JZ PrHOME
CPI 13
JZ Pr0DH
CPI 10
JZ Pr0AH
CPI 8
JZ PrLEFT
CPI 24
JZ PrRIGT
CPI 25
JZ PrUP
CPI 26
JZ PrDOWN
CPI 27
JZ PrESC
CPI 7
JNZ PrCHR5
; ВЫВОД 07H (ЗВОНОК)
LXI B,05F0H
BEEP:
; вЫВОД ЗВУКА
MOV A,B
BEEP1:
EI
DCR A
JNZ BEEP1
MOV A,B
BEEP2:
DI
DCR A
JNZ BEEP2
DCR C
JNZ BEEP
RET
PrCHR5:
MOV M,C
CALL PrRIGT
MOV A,D
CPI 3
RNZ
MOV A,E
CPI 8
RNZ
CALL PrUP
Pr0AH:
MOV A,D
CPI 1BH
JNZ PrDOWN
PUSH H
PUSH D
LXI H,VidBEG
LXI D,7810H
LXI B,079EH
PrCHR7:
LDAX D
MOV M,A
INX H
INX D
DCX B
MOV A,C
ORA B
JNZ PrCHR7
POP D
POP H
RET
PrCHR8:
MOV A,C
CPI 59H
JNZ PrCHR2
CALL PrHOME
MVI A,2
JMP PrCHR3
PrCHR9:
MOV A,C
SUI 20H
MOV C,A
PrCH10:
DCR C
MVI A,4
JM PrCHR3
PUSH B
CALL PrDOWN
POP B
JMP PrCH10
PrCH11:
SHLD M_eVID
XCHG
SHLD M_cPOS
MVI A,80H
STA VG_R1
MOV A,L
STA VG_R0
MOV A,H
STA VG_R0
POP H
POP D
POP B
POP PSW
RET
PrESC:
MVI A,1
JMP PrCHR3
PrCLS:
LXI H,ScrEND
LXI D,0925H
PrCLS1:
XRA A
MOV M,A
DCX H
DCX D
MOV A,E
ORA D
JNZ PrCLS1
PrHOME:
LXI D,0308H
LXI H,VidBEG
RET
PrRIGT:
MOV A,E
INX H
INR E
CPI 47H
RNZ
MVI E,8
LXI B,0FFC0H
DAD B
PrDOWN:
MOV A,D
CPI 1BH
LXI B,004EH
JNZ MFDD3
MVI D,2
LXI B,0F8B0H
MFDD3:
INR D
DAD B
RET
PrLEFT:
MOV A,E
DCX H
DCR E
CPI 8
RNZ
MVI E,47H
LXI B,0040H
DAD B
PrUP:
MOV A,D
CPI 3
LXI B,RtR6_1
JNZ PrUP1
MVI D,1CH
LXI B,0750H
PrUP1:
DCR D
DAD B
RET
Pr0DH:
MOV A,L
SUB E
JNC $+4
DCR H
;$+4
MOV L,A
MVI E,8
LXI B,8
DAD B
RET
TstKEY:
LDA PT_KB2
ANI 80H
JZ TstKE1
LDA M_PKEY
ORA A
RNZ
TstKE1:
PUSH H
LHLD M_KEY1
CALL SCN
CMP L
MOV L,A
JZ TstKE5
TstKE2:
MVI A,1
STA M_KEY2
MVI H,15H
TstKE3:
XRA A
TstKE4:
SHLD M_KEY1
POP H
STA M_PKEY
RET
TstKE5:
DCR H
JNZ TstKE3
INR A
JZ TstKE4
INR A
JZ TstKE7
PUSH B
LXI B,5003H
CALL BEEP
POP B
LDA M_KEY2
MVI H,0E0H
DCR A
STA M_KEY2
JZ TstKE6
MVI H,40H
TstKE6:
MVI A,0FFH
JMP TstKE4
TstKE7:
LDA PT_KB2
ANI 80H
JZ TstKE7
LDA M_RULA
CMA
STA M_RULA
JMP TstKE2
KEY:
CALL TstKEY
ORA A
JZ KEY
XRA A
STA M_PKEY
LDA M_KEY1
RET
SCN:
LDA PT_KB2
ANI 80H
JNZ KeySCN
MVI A,0FEH
RET
KeySCN:
XRA A
STA PT_KB0
STA PT_KB2
LDA M_RULA
ANI 1
ORI 6
STA PT_KB3
LDA PT_KB1
INR A
JNZ KeySC1
DCR A
RET
KeySC1:
PUSH H
MVI L,1
MVI H,7
KeySC2:
MOV A,L
RRC
MOV L,A
CMA
STA PT_KB0
LDA PT_KB1
CMA
ORA A
JNZ KeySC4
DCR H
JP KeySC2
KeySC3:
MVI A,0FFH
POP H
RET
KeySC4:
MVI L,20H
KeySC5:
LDA PT_KB1
CMA
ORA A
JZ KeySC3
DCR L
JNZ KeySC5
MVI L,8
KeySC6:
DCR L
RLC
JNC KeySC6
MOV A,H
MOV H,L
MOV L,A
CPI 1
JZ KeySC8
JC KeySC7
RLC
RLC
RLC
ADI 20H
ORA H
CPI 5FH
JNZ KeyS10
MVI A,20H
POP H
RET
KB_L0:
DB 9
DB 0AH
DB 0DH
DB 7FH
DB 8
DB 19H
DB 18H
DB 1AH
KB_L1:
DB 0CH
DB 1FH
DB 1BH
DB 0
DB 1
DB 2
DB 3
DB 4
DB 5
KeySC7:
MOV A,H
LXI H,KB_L1
JMP KeySC9
KeySC8:
MOV A,H
LXI H,KB_L0
KeySC9:
ADD L
MOV L,A
MOV A,M
CPI 40H
POP H
RC
PUSH H
KeyS10:
MOV L,A
LDA PT_KB2
MOV H,A
ANI 40H
JNZ KeyS11
MOV A,L
CPI 40H
JM KeyS14
ANI 1FH
POP H
RET
KeyS11:
LDA M_RULA
ORA A
JZ KeyS12
MOV A,L
CPI 40H
JM KeyS12
ORI 20H
MOV L,A
KeyS12:
MOV A,H
ANI 20H
JNZ KeyS14
MOV A,L
CPI 40H
JM KeyS13
MOV A,L
XRI 20H
POP H
RET
KeyS13:
MOV A,L
ANI 2FH
MOV L,A
KeyS14:
MOV A,L
CPI 40H
POP H
RP
PUSH H
MOV L,A
ANI 0FH
CPI 0CH
MOV A,L
JM HRET
XRI 10H
HRET:
POP H
RET
GetTOP:LHLD M_RTOP
RET
SetTOP:SHLD M_RTOP
RET
T_MAIN:DB 1FH
DB 'radio-86rk',0
T_PMPT:DB 13,10,'-->',0
T_GoUP:DB 13,10,24,24,24,24,0
T_REGS:
DB 13,10,' PC-'
DB 13,10,' HL-'
DB 13,10,' BC-'
DB 13,10,' DE-'
DB 13,10,' SP-'
DB 13,10,' AF-'
DB 25,25,25,25,25,25,0
T_DEL:DB 8,32,8,0
RtRST6:
; ВЫХОД ПО КОМАНДЕ RST6
SHLD M_ADDR
PUSH PSW
POP H
SHLD M_RST2
POP H
DCX H
SHLD M_RRST
LXI H,0
RtR6_1:
DAD SP
LXI SP,M_RST2
PUSH H
PUSH D
PUSH B
LHLD M_RRST
LXI SP,STACK
CALL Pr[HL]
RtR6_2:
XCHG
LHLD M_SvDE
CALL TSTHD
JNZ HotRES
LDA M_SvOC
MOV M,A
JMP HotRES
PrREGS:
LXI H,T_REGS
CALL MSG
LXI H,M_RRST
MVI B,6
PrREG1:
MOV E,M
INX H
MOV D,M
PUSH B
PUSH H
XCHG
CALL Pr[HL]
CALL InBUF
JNC PrREG2
CALL GetVAL
POP D
PUSH D
XCHG
MOV M,D
DCX H
MOV M,E
PrREG2:
POP H
POP B
DCR B
INX H
JNZ PrREG1
RET
DB 0FFH,0FFH
END
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot