RAM:0000 ;
RAM:0000 ; +-------------------------------------------------------------------------+
RAM:0000 ; | This file is generated by The Interactive Disassembler (IDA) |
RAM:0000 ; | Copyright (c) 2007 by DataRescue sa/nv, <ida@datarescue.com> |
RAM:0000 ; | Licensed to: Mach EDV Dienstleistungen, Jan Mach, 1 user, adv, 11/2007 |
RAM:0000 ; +-------------------------------------------------------------------------+
RAM:0000 ;
RAM:0000 ; Input MD5 : B5BAA9ECD5006A029D65AF2F5C0980D3
RAM:0000
RAM:0000
RAM:0000 ; Processor : 8085 []
RAM:0000 ; Target assembler: Table Driven Assembler (TASM) by Speech Technology Inc.
RAM:0000
RAM:0000 ; ===========================================================================
RAM:0000
RAM:0000 ; Segment type: Regular
RAM:0000 RST: .block 38h ; Рестарты
RAM:0038 RSTCOM: .block 1 ; Команда точки останова
RAM:0039 RSTADR: .block 2 ; Адрес команды точки останова
RAM:003B OZU: .block 0DFC5h ; Свободное ОЗУ
RAM:E000 CUR: .block 800h ; DATA XREF: TXTVIDEO+3o
RAM:E000 ; ОЗУ курсора
RAM:E800 STR: .block 800h ; DATA XREF: OUTHEX2CT+4Fo
RAM:E800 ; OUTHEX2CT:loc_FEC5o ...
RAM:E800 ; ОЗУ страницы
RAM:F000 OZU2: .block 750h
RAM:F750 JMPOPCODE: .block 1 ; CODE XREF: ROM:FAE2j
RAM:F750 ; DATA XREF: ROM:FAD4w
RAM:F750 ; Здесь из директивы P прописывается опкод C3, который совместно с PARAM1 образует команду JMP
RAM:F751 PARAM1: .block 2 ; DATA XREF: GETPARAMSo
RAM:F751 ; GETPARAMS+11w ...
RAM:F751 ; Первый параметр ADR1
RAM:F753 PARAM2: .block 2 ; Второй параметр ADR2
RAM:F755 PARAM3: .block 2 ; Дополнительный параметр (байт или слово)
RAM:F757 VERIFYFLG: .block 1 ; Флаг директивы V
RAM:F758 RES1: .block 2
RAM:F75A OUTTMP: .block 2 ; Временная переменная OUTHEX2CT, OUTSYM2
RAM:F75C LOADCON: .block 1 ; Константа чтения
RAM:F75D SAVECON: .block 1 ; Константа записи
RAM:F75E IPARAM1: .block 2 ; DATA XREF: ROM:FCD3w
RAM:F75E ; ROM:IRETo
RAM:F75E ; Временная переменная директивы I
RAM:F760 IPARAM2: .block 2 ; DATA XREF: ROM:FCE9w
RAM:F760 ; ROM:FD12o
RAM:F760 ; Временная переменная директивы I
RAM:F762 RES2: .block 2
RAM:F764 RSTTRTMP: .block 1 ; DATA XREF: INSYM2:loc_FF63w
RAM:F764 ; INSYM2+8Ao
RAM:F764 ; Временно сохраняем A
RAM:F765 RSTTRSP: .block 2 ; DATA XREF: ROM:F81Ew
RAM:F765 ; ROM:F9ADo ...
RAM:F765 ; Начальное значение F7C0 (вводится при инициализации)
RAM:F767 RSTTRAF: .block 2 ; Временное значение PSW
RAM:F769 RSTTRBC: .block 2 ; Временное значение BC
RAM:F76B RSTTRDE: .block 2 ; Временное значение DE
RAM:F76D RSTTRHL: .block 2 ; DATA XREF: ROM:RSTTRw
RAM:F76D ; ROM:FA81o ...
RAM:F76D ; Временное значение HL
RAM:F76F RSTTRTMP2: .block 2 ; DATA XREF: XVIEW+31o
RAM:F76F ; Временно сохраняем DE
RAM:F771 PAR3BT: .block 1 ; DATA XREF: ROM:FB06w
RAM:F771 ; ROM:FB59o
RAM:F771 ; Временное значение PARAM3 в директиве P
RAM:F772 BREAKPOINT: .block 2 ; Адрес точки останова
RAM:F774 BPACCUM: .block 1
RAM:F775 RSTTRPAR1: .block 2 ; Временное значение PARAM1 в директиве P
RAM:F777 PAR1BT: .block 1 ; Временное значение команды-байта (вместо него запишется RST7)
RAM:F778 RSTTRPAR2: .block 2 ; Временное значение PARAM2 в директиве P
RAM:F77A PAR2BT: .block 1 ; Временное значение команды-байта (вместо него запишется RST7)
RAM:F77B MBUFF: .block 1 ; DATA XREF: INIT3o READDIRo ...
RAM:F77B ; Байтовый буфер директивы M
RAM:F77C KBDBUFF: .block 44h ; DATA XREF: GETPARAMS+Bo
RAM:F77C ; ROM:X_o ...
RAM:F77C ; Клавиатурный буфер
RAM:F7C0 INITHL: .block 3Fh ; DATA XREF: ROM:INITo
RAM:F7FF STACKINI: .block 1 ; DATA XREF: ROM:F821o
RAM:F7FF ; READDIR-2Do ...
RAM:F7FF ; end of 'RAM' ; Начальное положение указателя стека
RAM:F7FF
ROM:F800 ; ---------------------------------------------------------------------------
ROM:F800 ; File Name : C:\MICRO80\Micro80.rom
ROM:F800 ; Format : Binary file
ROM:F800 ; Base Address: 0000h Range: F800h - 10000h Loaded length: 0800h
ROM:F800 ; ===========================================================================
ROM:F800
ROM:F800 ; Segment type: Pure code
ROM:F800 .org 0F800h
ROM:F800
ROM:F800 START: ; DATA XREF: OUTHEX2CT+Fo
ROM:F800 ; OUTHEX2CT+57o
ROM:F800 jmp INIT ; Холодный старт
ROM:F803 ; ---------------------------------------------------------------------------
ROM:F803
ROM:F803 INSYM: ; Ввод символа с клавиатуры (A=введенный символ)
ROM:F803 jmp INSYM2
ROM:F806 ; ---------------------------------------------------------------------------
ROM:F806
ROM:F806 INMAG: ; Ввод байта с магнитофона (A=введённый байт)
ROM:F806 jmp INMAG2
ROM:F809 ; ---------------------------------------------------------------------------
ROM:F809
ROM:F809 OUTSYM: ; Вывод символа на экран дисплея (C=выводимый символ)
ROM:F809 jmp OUTSYM2
ROM:F80C ; ---------------------------------------------------------------------------
ROM:F80C
ROM:F80C OUTMAG: ; Вывод байта на магнитофон (C= выводимый байт)
ROM:F80C jmp OUTMAG2
ROM:F80F ; ---------------------------------------------------------------------------
ROM:F80F
ROM:F80F OUTSYM_: ; Вывод символа на экран дисплея (C=выводимый символ)
ROM:F80F jmp OUTSYM2
ROM:F812 ; ---------------------------------------------------------------------------
ROM:F812
ROM:F812 CHKKEY: ; Проверка состояния клавиатуры.
ROM:F812 jmp CHKKEY2 ; A=00 клавиша не нажата
ROM:F812 ; A=FF клавиша нажата
ROM:F815 ; ---------------------------------------------------------------------------
ROM:F815
ROM:F815 OUTHEX: ; Вывод содержимого A в шестнадцатеричном виде
ROM:F815 jmp OUTHEX2
ROM:F818 ; ---------------------------------------------------------------------------
ROM:F818
ROM:F818 OUTSTR: ; Вывод на экран сообщений (HL=начальный адрес, 0-байт - конец)
ROM:F818 jmp OUTSTR2
ROM:F81B ; ---------------------------------------------------------------------------
ROM:F81B
ROM:F81B INIT: ; CODE XREF: ROM:STARTj
ROM:F81B lxi h, INITHL ; Начало холодного старта
ROM:F81E shld RSTTRSP ; Начальное значение F7C0 (вводится при инициализации)
ROM:F821 lxi sp, STACKINI ; Начальное положение указателя стека
ROM:F824 mvi a, 1Fh
ROM:F826 call OUTHEX2CT ; Выводит A в символьном виде
ROM:F829 ; START OF FUNCTION CHUNK FOR READDIR
ROM:F829
ROM:F829 INIT2: ; CODE XREF: READDIR+20j
ROM:F829 ; ROM:F9BEj ...
ROM:F829 mvi a, 8Bh ; 'Л'
ROM:F82B out 4
ROM:F82D lxi sp, STACKINI ; Начальное положение указателя стека
ROM:F830 lxi h, aMikro80Prompt ; aMikro80Prompt
ROM:F833 call OUTSTR2 ; Вывод строки на экран
ROM:F836 call READDIR ; Ждём ввода директивы
ROM:F839 lxi h, INIT2 ; INIT2 - кладём на стек чтобы вернуться
ROM:F83C push h
ROM:F83C ; END OF FUNCTION CHUNK FOR READDIR
ROM:F83D
ROM:F83D ; =============== S U B R O U T I N E =======================================
ROM:F83D
ROM:F83D
ROM:F83D INIT3: ; CODE XREF: ROM:FB3Ap
ROM:F83D lxi h, MBUFF ; Байтовый буфер директивы M
ROM:F840 mov b, m
ROM:F841 lxi h, DIRTABLE
ROM:F844
ROM:F844 loc_F844: ; CODE XREF: INIT3+13j
ROM:F844 mov a, m
ROM:F845 ana a
ROM:F846 jz PRNERROR ; Печать знака вопрос (ошибка)
ROM:F849 cmp b
ROM:F84A jz loc_F853
ROM:F84D inx h
ROM:F84E inx h
ROM:F84F inx h
ROM:F850 jmp loc_F844
ROM:F853 ; ---------------------------------------------------------------------------
ROM:F853
ROM:F853 loc_F853: ; CODE XREF: INIT3+Dj
ROM:F853 inx h
ROM:F854 sphl
ROM:F855 pop h
ROM:F856 lxi sp, INITHL+3Dh
ROM:F859 pchl
ROM:F859 ; End of function INIT3
ROM:F859
ROM:F85A
ROM:F85A ; =============== S U B R O U T I N E =======================================
ROM:F85A
ROM:F85A ; Ждём ввода директивы
ROM:F85A
ROM:F85A READDIR: ; CODE XREF: READDIR-24p
ROM:F85A ; ROM:FB1Ep
ROM:F85A
ROM:F85A ; FUNCTION CHUNK AT ROM:F829 SIZE 00000014 BYTES
ROM:F85A
ROM:F85A lxi h, MBUFF ; Байтовый буфер директивы M
ROM:F85D
ROM:F85D PTR: ; CODE XREF: READDIR+18j
ROM:F85D ; READDIR+29j ...
ROM:F85D call INSYM2 ; Обработка директивы P
ROM:F860 cpi 8
ROM:F862 jz loc_F880
ROM:F865 cnz OUTHEX2CT ; Выводит A в символьном виде
ROM:F868 mov m, a
ROM:F869 cpi 0Dh
ROM:F86B jz loc_F87D
ROM:F86E mvi a, 9Ah ; 'Ъ'
ROM:F870 cmp l
ROM:F871 inx h
ROM:F872 jnz PTR ; Обработка директивы P
ROM:F875
ROM:F875 PRNERROR: ; CODE XREF: INIT3+9j
ROM:F875 ; MPRNTR+23j ...
ROM:F875 mvi a, 3Fh ; '?' ; Печать знака вопрос (ошибка)
ROM:F877 call OUTHEX2CT ; Выводит A в символьном виде
ROM:F87A jmp INIT2
ROM:F87D ; ---------------------------------------------------------------------------
ROM:F87D
ROM:F87D loc_F87D: ; CODE XREF: READDIR+11j
ROM:F87D mvi m, 0Dh
ROM:F87F ret
ROM:F880 ; ---------------------------------------------------------------------------
ROM:F880
ROM:F880 loc_F880: ; CODE XREF: READDIR+8j
ROM:F880 call MPRNTR2
ROM:F883 jmp PTR ; Обработка директивы P
ROM:F883 ; End of function READDIR
ROM:F883
ROM:F886
ROM:F886 ; =============== S U B R O U T I N E =======================================
ROM:F886
ROM:F886
ROM:F886 MPRNTR2: ; CODE XREF: READDIR:loc_F880p
ROM:F886 ; MPRNTR:loc_F8C5p
ROM:F886 mvi a, 7Bh ; '{'
ROM:F888 cmp l
ROM:F889 rz
ROM:F88A mvi a, 8
ROM:F88C call OUTHEX2CT ; Выводит A в символьном виде
ROM:F88F dcx h
ROM:F890 ret
ROM:F890 ; End of function MPRNTR2
ROM:F890
ROM:F891
ROM:F891 ; =============== S U B R O U T I N E =======================================
ROM:F891
ROM:F891 ; Печать байта для директивы M, затем запрос на ввод нового байта и обработка ответа
ROM:F891
ROM:F891 MPRNTR: ; CODE XREF: ROM:F9BBp
ROM:F891 ; ROM:F9D1p ...
ROM:F891 call DUMP4 ; Печатает пробел в строке дампа
ROM:F894 lxi h, MBUFF ; Байтовый буфер директивы M
ROM:F897
ROM:F897 loc_F897: ; CODE XREF: MPRNTR+37j
ROM:F897 mvi b, 0
ROM:F899
ROM:F899 loc_F899: ; CODE XREF: MPRNTR+27j
ROM:F899 ; MPRNTR+3Aj
ROM:F899 call INSYM2 ; Ввод символа с клавиатуры
ROM:F89C cpi 8
ROM:F89E jz loc_F8C5
ROM:F8A1 cnz OUTHEX2CT ; Выводит A в символьном виде
ROM:F8A4 mov m, a
ROM:F8A5 cpi 20h ; ' '
ROM:F8A7 jz loc_F8BB
ROM:F8AA cpi 0Dh
ROM:F8AC jz LOOPEXIT ; Выход из цикла директив
ROM:F8AF mvi b, 0FFh
ROM:F8B1 mvi a, 9Ah ; 'Ъ'
ROM:F8B3 cmp l
ROM:F8B4 jz PRNERROR ; Печать знака вопрос (ошибка)
ROM:F8B7 inx h
ROM:F8B8 jmp loc_F899
ROM:F8BB ; ---------------------------------------------------------------------------
ROM:F8BB
ROM:F8BB loc_F8BB: ; CODE XREF: MPRNTR+16j
ROM:F8BB mvi m, 0Dh
ROM:F8BD mov a, b
ROM:F8BE ral
ROM:F8BF lxi d, MBUFF ; Байтовый буфер директивы M
ROM:F8C2 mvi b, 0
ROM:F8C4 ret
ROM:F8C5 ; ---------------------------------------------------------------------------
ROM:F8C5
ROM:F8C5 loc_F8C5: ; CODE XREF: MPRNTR+Dj
ROM:F8C5 call MPRNTR2
ROM:F8C8 jz loc_F897
ROM:F8CB jmp loc_F899
ROM:F8CE ; ---------------------------------------------------------------------------
ROM:F8CE
ROM:F8CE LOOPEXIT: ; CODE XREF: MPRNTR+1Bj
ROM:F8CE ; LOOP+Cj
ROM:F8CE inx sp ; Выход из цикла директив
ROM:F8CF inx sp
ROM:F8D0 ret
ROM:F8D0 ; End of function MPRNTR
ROM:F8D0
ROM:F8D1
ROM:F8D1 ; =============== S U B R O U T I N E =======================================
ROM:F8D1
ROM:F8D1 ; Печатаем новую строку
ROM:F8D1
ROM:F8D1 PRNNEWLINE: ; CODE XREF: DUMP1p XVIEW+5p ...
ROM:F8D1 lxi h, NEWLINE ; "\n"
ROM:F8D1 ; End of function PRNNEWLINE
ROM:F8D1
ROM:F8D4
ROM:F8D4 ; =============== S U B R O U T I N E =======================================
ROM:F8D4
ROM:F8D4 ; Вывод строки на экран
ROM:F8D4
ROM:F8D4 OUTSTR2: ; CODE XREF: ROM:OUTSTRj
ROM:F8D4 ; READDIR-27p ...
ROM:F8D4 mov a, m
ROM:F8D5 ana a
ROM:F8D6 rz
ROM:F8D7 call OUTHEX2CT ; Выводит A в символьном виде
ROM:F8DA inx h
ROM:F8DB jmp OUTSTR2 ; Вывод строки на экран
ROM:F8DB ; End of function OUTSTR2
ROM:F8DB
ROM:F8DE
ROM:F8DE ; =============== S U B R O U T I N E =======================================
ROM:F8DE
ROM:F8DE ; Получаем параметры ADR1, ADR2 в переменные PARAM1, PARAM2
ROM:F8DE ; Последний параметр помещается в HL
ROM:F8DE
ROM:F8DE GETPARAMS: ; CODE XREF: ROM:B_p ROM:G_p ...
ROM:F8DE lxi h, PARAM1 ; Первый параметр ADR1
ROM:F8E1 mvi b, 6
ROM:F8E3 xra a
ROM:F8E4
ROM:F8E4 loc_F8E4: ; CODE XREF: GETPARAMS+8j
ROM:F8E4 mov m, a
ROM:F8E5 dcr b
ROM:F8E6 jnz loc_F8E4
ROM:F8E9 lxi d, KBDBUFF ; Клавиатурный буфер
ROM:F8EC call PARSESTR ; Получаем строку и парсим её
ROM:F8EF shld PARAM1 ; Первый параметр ADR1
ROM:F8F2 shld PARAM2 ; Второй параметр ADR2
ROM:F8F5 rc
ROM:F8F6 call PARSESTR ; Получаем строку и парсим её
ROM:F8F9 shld PARAM2 ; Второй параметр ADR2
ROM:F8FC push psw
ROM:F8FD push d
ROM:F8FE xchg
ROM:F8FF lhld PARAM1 ; Первый параметр ADR1
ROM:F902 xchg
ROM:F903 call CMPDEHL ; MACRO COMPARE DE HL
ROM:F906 jc PRNERROR ; Печать знака вопрос (ошибка)
ROM:F909 pop d
ROM:F90A pop psw
ROM:F90B rc
ROM:F90C call PARSESTR ; Получаем строку и парсим её
ROM:F90F shld PARAM3 ; Дополнительный параметр (байт или слово)
ROM:F912 rc
ROM:F913 jmp PRNERROR ; Печать знака вопрос (ошибка)
ROM:F913 ; End of function GETPARAMS
ROM:F913
ROM:F916
ROM:F916 ; =============== S U B R O U T I N E =======================================
ROM:F916
ROM:F916 ; Получаем строку и парсим её
ROM:F916
ROM:F916 PARSESTR: ; CODE XREF: GETPARAMS+Ep
ROM:F916 ; GETPARAMS+18p ...
ROM:F916 lxi h, 0
ROM:F919
ROM:F919 loc_F919: ; CODE XREF: PARSESTR+Fj
ROM:F919 ; PARSESTR+31j
ROM:F919 ldax d
ROM:F91A inx d
ROM:F91B cpi 0Dh
ROM:F91D jz loc_F94A
ROM:F920 cpi 2Ch ; ','
ROM:F922 rz
ROM:F923 cpi 20h ; ' '
ROM:F925 jz loc_F919
ROM:F928 sui 30h ; '0'
ROM:F92A jm PRNERROR ; Печать знака вопрос (ошибка)
ROM:F92D cpi 0Ah
ROM:F92F jm loc_F93E
ROM:F932 cpi 11h
ROM:F934 jm PRNERROR ; Печать знака вопрос (ошибка)
ROM:F937 cpi 17h
ROM:F939 jp PRNERROR ; Печать знака вопрос (ошибка)
ROM:F93C sui 7
ROM:F93E
ROM:F93E loc_F93E: ; CODE XREF: PARSESTR+19j
ROM:F93E mov c, a
ROM:F93F dad h
ROM:F940 dad h
ROM:F941 dad h
ROM:F942 dad h
ROM:F943 jc PRNERROR ; Печать знака вопрос (ошибка)
ROM:F946 dad b
ROM:F947 jmp loc_F919
ROM:F94A ; ---------------------------------------------------------------------------
ROM:F94A
ROM:F94A loc_F94A: ; CODE XREF: PARSESTR+7j
ROM:F94A stc
ROM:F94B ret
ROM:F94B ; End of function PARSESTR
ROM:F94B
ROM:F94C
ROM:F94C ; =============== S U B R O U T I N E =======================================
ROM:F94C
ROM:F94C ; Выводим на экран байт, находящийся по адресу PARAM1
ROM:F94C
ROM:F94C OUTHEXPAR1: ; CODE XREF: ROM:FB76p
ROM:F94C ; ROM:FB9Cp ...
ROM:F94C lhld PARAM1 ; Первый параметр ADR1
ROM:F94F mov a, m
ROM:F94F ; End of function OUTHEXPAR1
ROM:F94F
ROM:F950
ROM:F950 ; =============== S U B R O U T I N E =======================================
ROM:F950
ROM:F950 ; Вывод содержимого аккумулятора в HEX виде
ROM:F950
ROM:F950 OUTHEX2: ; CODE XREF: ROM:OUTHEXj
ROM:F950 ; DUMP3+1p ...
ROM:F950 mov b, a
ROM:F951 mov a, b
ROM:F952 rrc
ROM:F953 rrc
ROM:F954 rrc
ROM:F955 rrc
ROM:F956 call OUTHEX2LP
ROM:F959 mov a, b
ROM:F959 ; End of function OUTHEX2
ROM:F959
ROM:F95A
ROM:F95A ; =============== S U B R O U T I N E =======================================
ROM:F95A
ROM:F95A
ROM:F95A OUTHEX2LP: ; CODE XREF: OUTHEX2+6p
ROM:F95A ani 0Fh
ROM:F95C cpi 0Ah
ROM:F95E jm loc_F963
ROM:F961 adi 7
ROM:F963
ROM:F963 loc_F963: ; CODE XREF: OUTHEX2LP+4j
ROM:F963 adi 30h ; '0'
ROM:F965 jmp OUTHEX2CT ; Выводит A в символьном виде
ROM:F965 ; End of function OUTHEX2LP
ROM:F965
ROM:F968
ROM:F968 ; =============== S U B R O U T I N E =======================================
ROM:F968
ROM:F968 ; Печатает адрес в строке дампа
ROM:F968
ROM:F968 DUMP1: ; CODE XREF: ROM:loc_FB70p
ROM:F968 ; ROM:FB96p ...
ROM:F968 call PRNNEWLINE ; Печатаем новую строку
ROM:F968 ; End of function DUMP1
ROM:F968
ROM:F96B
ROM:F96B ; =============== S U B R O U T I N E =======================================
ROM:F96B
ROM:F96B ; PARAM1
ROM:F96B
ROM:F96B DUMP2: ; CODE XREF: XVIEW+29p
ROM:F96B ; ROM:FCB0p ...
ROM:F96B lxi h, PARAM1+1 ; Первый параметр ADR1
ROM:F96B ; End of function DUMP2
ROM:F96B
ROM:F96E
ROM:F96E ; =============== S U B R O U T I N E =======================================
ROM:F96E
ROM:F96E ; Печать слова в HEX виде
ROM:F96E
ROM:F96E DUMP3: ; CODE XREF: ROM:F9CEp
ROM:F96E ; XVIEW+34p ...
ROM:F96E mov a, m
ROM:F96F call OUTHEX2 ; Вывод содержимого аккумулятора в HEX виде
ROM:F972 dcx h
ROM:F973 mov a, m
ROM:F974 call OUTHEX2 ; Вывод содержимого аккумулятора в HEX виде
ROM:F974 ; End of function DUMP3
ROM:F974
ROM:F977
ROM:F977 ; =============== S U B R O U T I N E =======================================
ROM:F977
ROM:F977 ; Печатает пробел в строке дампа
ROM:F977
ROM:F977 DUMP4: ; CODE XREF: MPRNTRp
ROM:F977 ; ROM:F9B4p ...
ROM:F977 mvi a, 20h ; ' '
ROM:F979 jmp OUTHEX2CT ; Выводит A в символьном виде
ROM:F979 ; End of function DUMP4
ROM:F979
ROM:F97C
ROM:F97C ; =============== S U B R O U T I N E =======================================
ROM:F97C
ROM:F97C ; Цикл директивы
ROM:F97C ; Сравнивает PARAM1 и PARAM2,
ROM:F97C ; если PARAM2 > PARAM1, то увеличиваем PARAM1 на единицу.
ROM:F97C
ROM:F97C LOOP: ; CODE XREF: ROM:FB79p
ROM:F97C ; ROM:FBA7p ...
ROM:F97C push d
ROM:F97D lhld PARAM1 ; Первый параметр ADR1
ROM:F980 xchg
ROM:F981 lhld PARAM2 ; Второй параметр ADR2
ROM:F984 call CMPDEHL ; MACRO COMPARE DE HL
ROM:F987 pop d
ROM:F988 jz LOOPEXIT ; Выход из цикла директив
ROM:F98B lxi h, PARAM1 ; Первый параметр ADR1
ROM:F98E
ROM:F98E LOOP2: ; CODE XREF: ROM:FBFDp
ROM:F98E inr m
ROM:F98F rnz
ROM:F990 inx h
ROM:F991 inr m
ROM:F992 ret
ROM:F992 ; End of function LOOP
ROM:F992
ROM:F993
ROM:F993 ; =============== S U B R O U T I N E =======================================
ROM:F993
ROM:F993 ; MACRO COMPARE DE HL
ROM:F993
ROM:F993 CMPDEHL: ; CODE XREF: GETPARAMS+25p
ROM:F993 ; LOOP+8p ...
ROM:F993 mov a, h
ROM:F994 cmp d
ROM:F995 rnz
ROM:F996 mov a, l
ROM:F997 cmp e
ROM:F998 ret
ROM:F998 ; End of function CMPDEHL
ROM:F998
ROM:F999 ; ---------------------------------------------------------------------------
ROM:F999
ROM:F999 X_: ; DATA XREF: ROM:FE21o
ROM:F999 lxi h, KBDBUFF ; Директива X
ROM:F999 ; Просмотр содержимого внутренних регистров
ROM:F99C mov a, m
ROM:F99D cpi 0Dh
ROM:F99F jz XVIEW ; Только просмотр регистров
ROM:F99F ; aAhbjcidlekfghn
ROM:F9A2 cpi 53h ; 'S'
ROM:F9A4 jz loc_F9C8
ROM:F9A7 lxi d, aAhbjcidlekfghn ; "AhBjCiDlEkFgHnLmSe"
ROM:F9AA call XLOOP ; Цикл директивы X
ROM:F9AD lxi h, RSTTRSP ; Начальное значение F7C0 (вводится при инициализации)
ROM:F9B0 inx d
ROM:F9B1 ldax d
ROM:F9B2 mov l, a
ROM:F9B3 push h
ROM:F9B4 call DUMP4 ; Печатает пробел в строке дампа
ROM:F9B7 mov a, m
ROM:F9B8 call OUTHEX2 ; Вывод содержимого аккумулятора в HEX виде
ROM:F9BB call MPRNTR ; Печать байта для директивы M, затем запрос на ввод нового байта и обработка ответа
ROM:F9BE jnc INIT2
ROM:F9C1 call PARSESTR ; Получаем строку и парсим её
ROM:F9C4 mov a, l
ROM:F9C5 pop h
ROM:F9C6 mov m, a
ROM:F9C7 ret
ROM:F9C8 ; ---------------------------------------------------------------------------
ROM:F9C8
ROM:F9C8 loc_F9C8: ; CODE XREF: ROM:F9A4j
ROM:F9C8 call DUMP4 ; Печатает пробел в строке дампа
ROM:F9CB lxi h, RSTTRSP+1 ; Начальное значение F7C0 (вводится при инициализации)
ROM:F9CE call DUMP3 ; Печать слова в HEX виде
ROM:F9D1 call MPRNTR ; Печать байта для директивы M, затем запрос на ввод нового байта и обработка ответа
ROM:F9D4 jnc INIT2
ROM:F9D7 call PARSESTR ; Получаем строку и парсим её
ROM:F9DA shld RSTTRSP ; Начальное значение F7C0 (вводится при инициализации)
ROM:F9DD ret
ROM:F9DE
ROM:F9DE ; =============== S U B R O U T I N E =======================================
ROM:F9DE
ROM:F9DE ; Цикл директивы X
ROM:F9DE
ROM:F9DE XLOOP: ; CODE XREF: ROM:F9AAp
ROM:F9DE ; XLOOP+9j
ROM:F9DE ldax d
ROM:F9DF ana a
ROM:F9E0 jz PRNERROR ; Печать знака вопрос (ошибка)
ROM:F9E3 cmp m
ROM:F9E4 rz
ROM:F9E5 inx d
ROM:F9E6 inx d
ROM:F9E7 jmp XLOOP ; Цикл директивы X
ROM:F9E7 ; End of function XLOOP
ROM:F9E7
ROM:F9EA
ROM:F9EA ; =============== S U B R O U T I N E =======================================
ROM:F9EA
ROM:F9EA ; Только просмотр регистров
ROM:F9EA ; aAhbjcidlekfghn
ROM:F9EA
ROM:F9EA XVIEW: ; CODE XREF: ROM:F99Fj
ROM:F9EA ; ROM:loc_FB37p
ROM:F9EA lxi d, aAhbjcidlekfghn ; "AhBjCiDlEkFgHnLmSe"
ROM:F9ED mvi b, 8
ROM:F9EF call PRNNEWLINE ; Печатаем новую строку
ROM:F9F2
ROM:F9F2 loc_F9F2: ; CODE XREF: XVIEW+1Bj
ROM:F9F2 ldax d
ROM:F9F3 mov c, a
ROM:F9F4 inx d
ROM:F9F5 push b
ROM:F9F6 call REGVALPRN ; Печатает содержимое регистра
ROM:F9F9 ldax d
ROM:F9FA lxi h, RSTTRSP ; Начальное значение F7C0 (вводится при инициализации)
ROM:F9FD mov l, a
ROM:F9FE mov a, m
ROM:F9FF call OUTHEX2 ; Вывод содержимого аккумулятора в HEX виде
ROM:FA02 pop b
ROM:FA03 inx d
ROM:FA04 dcr b
ROM:FA05 jnz loc_F9F2
ROM:FA08 ldax d
ROM:FA09 mov c, a
ROM:FA0A call REGVALPRN ; Печатает содержимое регистра
ROM:FA0D lhld RSTTRSP ; Начальное значение F7C0 (вводится при инициализации)
ROM:FA10 shld PARAM1 ; Первый параметр ADR1
ROM:FA13 call DUMP2 ; PARAM1
ROM:FA16 mvi c, 4Fh ; 'O'
ROM:FA18 call REGVALPRN ; Печатает содержимое регистра
ROM:FA1B lxi h, RSTTRTMP2+1 ; Временно сохраняем DE
ROM:FA1E call DUMP3 ; Печать слова в HEX виде
ROM:FA21 jmp PRNNEWLINE ; Печатаем новую строку
ROM:FA21 ; End of function XVIEW
ROM:FA21
ROM:FA24
ROM:FA24 ; =============== S U B R O U T I N E =======================================
ROM:FA24
ROM:FA24 ; Печатает содержимое регистра
ROM:FA24
ROM:FA24 REGVALPRN: ; CODE XREF: XVIEW+Cp
ROM:FA24 ; XVIEW+20p ...
ROM:FA24 call DUMP4 ; Печатает пробел в строке дампа
ROM:FA27 mov a, c
ROM:FA28 call OUTHEX2CT ; Выводит A в символьном виде
ROM:FA2B mvi a, 2Dh ; '-'
ROM:FA2D jmp OUTHEX2CT ; Выводит A в символьном виде
ROM:FA2D ; End of function REGVALPRN
ROM:FA2D
ROM:FA2D ; ---------------------------------------------------------------------------
ROM:FA30 aAhbjcidlekfghn:.text "AhBjCiDlEkFgHnLmSe" ; DATA XREF: ROM:F9A7o
ROM:FA30 ; XVIEWo
ROM:FA30 .db 0
ROM:FA43 aSartNL: .db 0Ah ; DATA XREF: ROM:FB09o
ROM:FA44 aStart: .text "START-"
ROM:FA44 .db 0
ROM:FA4B aDirNL: .db 0Ah ; DATA XREF: ROM:FB18o
ROM:FA4C aDir: .text "DIR. -"
ROM:FA4C .db 0
ROM:FA53 ; ---------------------------------------------------------------------------
ROM:FA53
ROM:FA53 B_: ; DATA XREF: ROM:FE18o
ROM:FA53 call GETPARAMS ; Директива B
ROM:FA53 ; Задание адреса останова при отладке
ROM:FA56 call BTR ; Обрабатываем установку брэкпоинта
ROM:FA59 lhld PARAM1 ; Первый параметр ADR1
ROM:FA5C mov a, m
ROM:FA5D mvi m, 0FFh
ROM:FA5F shld BREAKPOINT ; Адрес точки останова
ROM:FA62 sta BPACCUM
ROM:FA65 ret
ROM:FA66
ROM:FA66 ; =============== S U B R O U T I N E =======================================
ROM:FA66
ROM:FA66 ; Обрабатываем установку брэкпоинта
ROM:FA66
ROM:FA66 BTR: ; CODE XREF: ROM:FA56p
ROM:FA66 ; ROM:FAE8p
ROM:FA66 mvi a, 0C3h ; '+'
ROM:FA68 sta RSTCOM ; Команда точки останова
ROM:FA6B lxi h, RSTTR ; Подпрограмма обработки RSTCOM, RSTADR
ROM:FA6B ; Сюда попадаем из адреса записанного ранее в BTR
ROM:FA6E shld RSTADR ; Адрес команды точки останова
ROM:FA71 ret
ROM:FA71 ; End of function BTR
ROM:FA71
ROM:FA72 ; ---------------------------------------------------------------------------
ROM:FA72
ROM:FA72 RSTTR: ; DATA XREF: BTR+5o
ROM:FA72 shld RSTTRHL ; Подпрограмма обработки RSTCOM, RSTADR
ROM:FA72 ; Сюда попадаем из адреса записанного ранее в BTR
ROM:FA75 push psw
ROM:FA76 lxi h, 4
ROM:FA79 dad sp
ROM:FA7A shld RSTTRSP ; Начальное значение F7C0 (вводится при инициализации)
ROM:FA7D pop psw
ROM:FA7E xthl
ROM:FA7F dcx h
ROM:FA80 xthl
ROM:FA81 lxi sp, RSTTRHL ; Временное значение HL
ROM:FA84 push d
ROM:FA85 push b
ROM:FA86 push psw
ROM:FA87 lxi sp, STACKINI ; Начальное положение указателя стека
ROM:FA8A lhld RSTTRSP ; Начальное значение F7C0 (вводится при инициализации)
ROM:FA8D dcx h
ROM:FA8E mov d, m
ROM:FA8F dcx h
ROM:FA90 mov e, m
ROM:FA91 mov l, e
ROM:FA92 mov h, d
ROM:FA93 shld RSTTRTMP2 ; Временно сохраняем DE
ROM:FA96 lhld BREAKPOINT ; Адрес точки останова
ROM:FA99 call CMPDEHL ; MACRO COMPARE DE HL
ROM:FA9C jz loc_FAB4
ROM:FA9F lhld RSTTRPAR1 ; Временное значение PARAM1 в директиве P
ROM:FAA2 call CMPDEHL ; MACRO COMPARE DE HL
ROM:FAA5 jz loc_FB24
ROM:FAA8 lhld RSTTRPAR2 ; Временное значение PARAM2 в директиве P
ROM:FAAB call CMPDEHL ; MACRO COMPARE DE HL
ROM:FAAE jz loc_FB46
ROM:FAB1 jmp PRNERROR ; Печать знака вопрос (ошибка)
ROM:FAB4 ; ---------------------------------------------------------------------------
ROM:FAB4
ROM:FAB4 loc_FAB4: ; CODE XREF: ROM:FA9Cj
ROM:FAB4 lda BPACCUM
ROM:FAB7 mov m, a
ROM:FAB8 lxi h, 0FFFFh
ROM:FABB shld BREAKPOINT ; Адрес точки останова
ROM:FABE jmp INIT2
ROM:FAC1 ; ---------------------------------------------------------------------------
ROM:FAC1
ROM:FAC1 G_: ; DATA XREF: ROM:FE1Bo
ROM:FAC1 call GETPARAMS ; Директива G
ROM:FAC1 ; Запуск программы в отладочном режиме
ROM:FAC4 lda KBDBUFF ; Клавиатурный буфер
ROM:FAC7 cpi 0Dh
ROM:FAC9 jnz G_2
ROM:FACC lhld RSTTRTMP2 ; Временно сохраняем DE
ROM:FACF shld PARAM1 ; Первый параметр ADR1
ROM:FAD2
ROM:FAD2 G_2: ; CODE XREF: ROM:FAC9j
ROM:FAD2 ; ROM:FB21j ...
ROM:FAD2 mvi a, 0C3h ; '+'
ROM:FAD4 sta JMPOPCODE ; Здесь из директивы P прописывается опкод C3, который совместно с PARAM1 образует команду JMP
ROM:FAD7 lxi sp, RSTTRSP ; Начальное значение F7C0 (вводится при инициализации)
ROM:FADA pop h
ROM:FADB pop psw
ROM:FADC pop b
ROM:FADD pop d
ROM:FADE sphl
ROM:FADF lhld RSTTRHL ; Временное значение HL
ROM:FAE2 jmp JMPOPCODE ; Здесь из директивы P прописывается опкод C3, который совместно с PARAM1 образует команду JMP
ROM:FAE5 ; ---------------------------------------------------------------------------
ROM:FAE5
ROM:FAE5 P_: ; DATA XREF: ROM:FE1Eo
ROM:FAE5 call GETPARAMS ; Директива P
ROM:FAE5 ; Подготовка к запуску циклически работающей программы
ROM:FAE8 call BTR ; Обрабатываем установку брэкпоинта
ROM:FAEB lhld PARAM1 ; Первый параметр ADR1
ROM:FAEE shld RSTTRPAR1 ; Временное значение PARAM1 в директиве P
ROM:FAF1 mov a, m
ROM:FAF2 mvi m, 0FFh
ROM:FAF4 sta PAR1BT ; Временное значение команды-байта (вместо него запишется RST7)
ROM:FAF7 lhld PARAM2 ; Второй параметр ADR2
ROM:FAFA shld RSTTRPAR2 ; Временное значение PARAM2 в директиве P
ROM:FAFD mov a, m
ROM:FAFE mvi m, 0FFh
ROM:FB00 sta PAR2BT ; Временное значение команды-байта (вместо него запишется RST7)
ROM:FB03 lda PARAM3 ; Дополнительный параметр (байт или слово)
ROM:FB06 sta PAR3BT ; Временное значение PARAM3 в директиве P
ROM:FB09 lxi h, aSartNL
ROM:FB0C call OUTSTR2 ; Вывод строки на экран
ROM:FB0F lxi h, KBDBUFF ; Клавиатурный буфер
ROM:FB12 call PTR ; Обработка директивы P
ROM:FB15 call GETPARAMS ; Получаем параметры ADR1, ADR2 в переменные PARAM1, PARAM2
ROM:FB15 ; Последний параметр помещается в HL
ROM:FB18 lxi h, aDirNL
ROM:FB1B call OUTSTR2 ; Вывод строки на экран
ROM:FB1E call READDIR ; Ждём ввода директивы
ROM:FB21 jmp G_2
ROM:FB24 ; ---------------------------------------------------------------------------
ROM:FB24
ROM:FB24 loc_FB24: ; CODE XREF: ROM:FAA5j
ROM:FB24 lda PAR1BT ; Временное значение команды-байта (вместо него запишется RST7)
ROM:FB27 mov m, a
ROM:FB28 lhld RSTTRPAR2 ; Временное значение PARAM2 в директиве P
ROM:FB2B mvi a, 0FFh
ROM:FB2D cmp m
ROM:FB2E jz loc_FB37
ROM:FB31 mov b, m
ROM:FB32 mov m, a
ROM:FB33 mov a, b
ROM:FB34 sta PAR2BT ; Временное значение команды-байта (вместо него запишется RST7)
ROM:FB37
ROM:FB37 loc_FB37: ; CODE XREF: ROM:FB2Ej
ROM:FB37 ; ROM:FB50j ...
ROM:FB37 call XVIEW ; Только просмотр регистров
ROM:FB37 ; aAhbjcidlekfghn
ROM:FB3A call INIT3
ROM:FB3D lhld RSTTRTMP2 ; Временно сохраняем DE
ROM:FB40 shld PARAM1 ; Первый параметр ADR1
ROM:FB43 jmp G_2
ROM:FB46 ; ---------------------------------------------------------------------------
ROM:FB46
ROM:FB46 loc_FB46: ; CODE XREF: ROM:FAAEj
ROM:FB46 lda PAR2BT ; Временное значение команды-байта (вместо него запишется RST7)
ROM:FB49 mov m, a
ROM:FB4A lhld RSTTRPAR1 ; Временное значение PARAM1 в директиве P
ROM:FB4D mvi a, 0FFh
ROM:FB4F cmp m
ROM:FB50 jz loc_FB37
ROM:FB53 mov b, m
ROM:FB54 mov m, a
ROM:FB55 mov a, b
ROM:FB56 sta PAR1BT ; Временное значение команды-байта (вместо него запишется RST7)
ROM:FB59 lxi h, PAR3BT ; Временное значение PARAM3 в директиве P
ROM:FB5C dcr m
ROM:FB5D jnz loc_FB37
ROM:FB60 lda PAR1BT ; Временное значение команды-байта (вместо него запишется RST7)
ROM:FB63 lhld RSTTRPAR1 ; Временное значение PARAM1 в директиве P
ROM:FB66 mov m, a
ROM:FB67 jmp INIT2
ROM:FB6A ; ---------------------------------------------------------------------------
ROM:FB6A
ROM:FB6A D_: ; DATA XREF: ROM:FE15o
ROM:FB6A call GETPARAMS ; Директива D
ROM:FB6A ; Просмотр содержимого области памяти в шестнадцатиричном виде
ROM:FB6A ;
ROM:FB6D call PRNNEWLINE ; Печатаем новую строку
ROM:FB70
ROM:FB70 loc_FB70: ; CODE XREF: ROM:FB81j
ROM:FB70 call DUMP1 ; Печатает адрес в строке дампа
ROM:FB73
ROM:FB73 loc_FB73: ; CODE XREF: ROM:FB84j
ROM:FB73 call DUMP4 ; Печатает пробел в строке дампа
ROM:FB76 call OUTHEXPAR1 ; Выводим на экран байт, находящийся по адресу PARAM1
ROM:FB79 call LOOP ; Цикл директивы
ROM:FB79 ; Сравнивает PARAM1 и PARAM2,
ROM:FB79 ; если PARAM2 > PARAM1, то увеличиваем PARAM1 на единицу.
ROM:FB7C lda PARAM1 ; Первый параметр ADR1
ROM:FB7F ani 0Fh
ROM:FB81 jz loc_FB70
ROM:FB84 jmp loc_FB73
ROM:FB87 ; ---------------------------------------------------------------------------
ROM:FB87
ROM:FB87 C_: ; DATA XREF: ROM:FE12o
ROM:FB87 call GETPARAMS ; Директива C
ROM:FB87 ; Сравнение содержимого двух областей памяти
ROM:FB8A lhld PARAM3 ; Дополнительный параметр (байт или слово)
ROM:FB8D xchg
ROM:FB8E
ROM:FB8E loc_FB8E: ; CODE XREF: ROM:FBAAj
ROM:FB8E lhld PARAM1 ; Первый параметр ADR1
ROM:FB91 ldax d
ROM:FB92 cmp m
ROM:FB93 jz loc_FBA6
ROM:FB96 call DUMP1 ; Печатает адрес в строке дампа
ROM:FB99 call DUMP4 ; Печатает пробел в строке дампа
ROM:FB9C call OUTHEXPAR1 ; Выводим на экран байт, находящийся по адресу PARAM1
ROM:FB9F call DUMP4 ; Печатает пробел в строке дампа
ROM:FBA2 ldax d
ROM:FBA3 call OUTHEX2 ; Вывод содержимого аккумулятора в HEX виде
ROM:FBA6
ROM:FBA6 loc_FBA6: ; CODE XREF: ROM:FB93j
ROM:FBA6 inx d
ROM:FBA7 call LOOP ; Цикл директивы
ROM:FBA7 ; Сравнивает PARAM1 и PARAM2,
ROM:FBA7 ; если PARAM2 > PARAM1, то увеличиваем PARAM1 на единицу.
ROM:FBAA jmp loc_FB8E
ROM:FBAD ; ---------------------------------------------------------------------------
ROM:FBAD
ROM:FBAD F_: ; DATA XREF: ROM:FE24o
ROM:FBAD call GETPARAMS ; Директива F
ROM:FBAD ; Запись байта в ячейки области памяти
ROM:FBB0 lda PARAM3 ; Дополнительный параметр (байт или слово)
ROM:FBB3 mov b, a
ROM:FBB4
ROM:FBB4 loc_FBB4: ; CODE XREF: ROM:FBBBj
ROM:FBB4 lhld PARAM1 ; Первый параметр ADR1
ROM:FBB7 mov m, b
ROM:FBB8 call LOOP ; Цикл директивы
ROM:FBB8 ; Сравнивает PARAM1 и PARAM2,
ROM:FBB8 ; если PARAM2 > PARAM1, то увеличиваем PARAM1 на единицу.
ROM:FBBB jmp loc_FBB4
ROM:FBBE ; ---------------------------------------------------------------------------
ROM:FBBE
ROM:FBBE S_: ; DATA XREF: ROM:FE27o
ROM:FBBE call GETPARAMS ; Директива S
ROM:FBBE ; Поиск байта в области памяти
ROM:FBC1 mov c, l
ROM:FBC2
ROM:FBC2 loc_FBC2: ; CODE XREF: ROM:FBCDj
ROM:FBC2 lhld PARAM1 ; Первый параметр ADR1
ROM:FBC5 mov a, c
ROM:FBC6 cmp m
ROM:FBC7 cz DUMP1 ; Печатает адрес в строке дампа
ROM:FBCA call LOOP ; Цикл директивы
ROM:FBCA ; Сравнивает PARAM1 и PARAM2,
ROM:FBCA ; если PARAM2 > PARAM1, то увеличиваем PARAM1 на единицу.
ROM:FBCD jmp loc_FBC2
ROM:FBD0 ; ---------------------------------------------------------------------------
ROM:FBD0
ROM:FBD0 T_: ; DATA XREF: ROM:FE2Ao
ROM:FBD0 call GETPARAMS ; Директива T
ROM:FBD0 ; Пересылка содержимого одной области в другую
ROM:FBD3 lhld PARAM3 ; Дополнительный параметр (байт или слово)
ROM:FBD6 xchg
ROM:FBD7
ROM:FBD7 loc_FBD7: ; CODE XREF: ROM:FBE0j
ROM:FBD7 lhld PARAM1 ; Первый параметр ADR1
ROM:FBDA mov a, m
ROM:FBDB stax d
ROM:FBDC inx d
ROM:FBDD call LOOP ; Цикл директивы
ROM:FBDD ; Сравнивает PARAM1 и PARAM2,
ROM:FBDD ; если PARAM2 > PARAM1, то увеличиваем PARAM1 на единицу.
ROM:FBE0 jmp loc_FBD7
ROM:FBE3 ; ---------------------------------------------------------------------------
ROM:FBE3
ROM:FBE3 M_: ; DATA XREF: ROM:FE0Fo
ROM:FBE3 call GETPARAMS ; Директива M
ROM:FBE3 ; Просмотр или изменение содержимого ячейки (ячеек) памяти
ROM:FBE6
ROM:FBE6 loc_FBE6: ; CODE XREF: ROM:FC03j
ROM:FBE6 call DUMP4 ; Печатает пробел в строке дампа
ROM:FBE9 call OUTHEXPAR1 ; Выводим на экран байт, находящийся по адресу PARAM1
ROM:FBEC call MPRNTR ; Печать байта для директивы M, затем запрос на ввод нового байта и обработка ответа
ROM:FBEF jnc loc_FBFA
ROM:FBF2 call PARSESTR ; Получаем строку и парсим её
ROM:FBF5 mov a, l
ROM:FBF6 lhld PARAM1 ; Первый параметр ADR1
ROM:FBF9 mov m, a
ROM:FBFA
ROM:FBFA loc_FBFA: ; CODE XREF: ROM:FBEFj
ROM:FBFA lxi h, PARAM1 ; Первый параметр ADR1
ROM:FBFD call LOOP2
ROM:FC00 call DUMP1 ; Печатает адрес в строке дампа
ROM:FC03 jmp loc_FBE6
ROM:FC06 ; ---------------------------------------------------------------------------
ROM:FC06
ROM:FC06 J_: ; DATA XREF: ROM:FE36o
ROM:FC06 call GETPARAMS ; Директива J
ROM:FC06 ; Запуск программы с заданного адреса
ROM:FC09 lhld PARAM1 ; Первый параметр ADR1
ROM:FC0C pchl
ROM:FC0D ; ---------------------------------------------------------------------------
ROM:FC0D
ROM:FC0D A_: ; DATA XREF: ROM:FE39o
ROM:FC0D call PRNNEWLINE ; Директива A
ROM:FC0D ; Вывод кода символа на экран
ROM:FC10 lda KBDBUFF ; Клавиатурный буфер
ROM:FC13 call OUTHEX2 ; Вывод содержимого аккумулятора в HEX виде
ROM:FC16 jmp PRNNEWLINE ; Печатаем новую строку
ROM:FC19 ; ---------------------------------------------------------------------------
ROM:FC19
ROM:FC19 K_: ; CODE XREF: ROM:FC24j
ROM:FC19 ; DATA XREF: ROM:FE3Co
ROM:FC19 call INSYM2 ; Директива K
ROM:FC19 ; Вывод символа с клавиатуры на экран (окончание режима УС-А)
ROM:FC1C cpi 1
ROM:FC1E jz INIT2
ROM:FC21 call OUTHEX2CT ; Выводит A в символьном виде
ROM:FC24 jmp K_ ; Директива K
ROM:FC24 ; Вывод символа с клавиатуры на экран (окончание режима УС-А)
ROM:FC27 ; ---------------------------------------------------------------------------
ROM:FC27
ROM:FC27 Q: ; DATA XREF: ROM:FE3Fo
ROM:FC27 call GETPARAMS ; Директива Q
ROM:FC27 ; Тестирование области памяти
ROM:FC2A
ROM:FC2A loc_FC2A: ; CODE XREF: ROM:FC40j
ROM:FC2A lhld PARAM1 ; Первый параметр ADR1
ROM:FC2D mov c, m
ROM:FC2E mvi a, 55h ; 'U'
ROM:FC30 mov m, a
ROM:FC31 cmp m
ROM:FC32 cnz PRNERRADR ; Печатает ошибочные ячейки памяти (директива Q)
ROM:FC35 mvi a, 0AAh ; 'к'
ROM:FC37 mov m, a
ROM:FC38 cmp m
ROM:FC39 cnz PRNERRADR ; Печатает ошибочные ячейки памяти (директива Q)
ROM:FC3C mov m, c
ROM:FC3D call LOOP ; Цикл директивы
ROM:FC3D ; Сравнивает PARAM1 и PARAM2,
ROM:FC3D ; если PARAM2 > PARAM1, то увеличиваем PARAM1 на единицу.
ROM:FC40 jmp loc_FC2A
ROM:FC43
ROM:FC43 ; =============== S U B R O U T I N E =======================================
ROM:FC43
ROM:FC43 ; Печатает ошибочные ячейки памяти (директива Q)
ROM:FC43
ROM:FC43 PRNERRADR: ; CODE XREF: ROM:FC32p
ROM:FC43 ; ROM:FC39p
ROM:FC43 push psw
ROM:FC44 call DUMP1 ; Печатает адрес в строке дампа
ROM:FC47 call DUMP4 ; Печатает пробел в строке дампа
ROM:FC4A call OUTHEXPAR1 ; Выводим на экран байт, находящийся по адресу PARAM1
ROM:FC4D call DUMP4 ; Печатает пробел в строке дампа
ROM:FC50 pop psw
ROM:FC51 call OUTHEX2 ; Вывод содержимого аккумулятора в HEX виде
ROM:FC54 ret
ROM:FC54 ; End of function PRNERRADR
ROM:FC54
ROM:FC55 ; ---------------------------------------------------------------------------
ROM:FC55
ROM:FC55 L_: ; DATA XREF: ROM:FE42o
ROM:FC55 call GETPARAMS ; Директива L
ROM:FC55 ; Просмотр содержимого области памяти в символьном виде
ROM:FC58 call PRNNEWLINE ; Печатаем новую строку
ROM:FC5B
ROM:FC5B loc_FC5B: ; CODE XREF: ROM:FC7Fj
ROM:FC5B call DUMP1 ; Печатает адрес в строке дампа
ROM:FC5E
ROM:FC5E loc_FC5E: ; CODE XREF: ROM:FC82j
ROM:FC5E call DUMP4 ; Печатает пробел в строке дампа
ROM:FC61 lhld PARAM1 ; Первый параметр ADR1
ROM:FC64 mov a, m
ROM:FC65 cpi 20h ; ' '
ROM:FC67 jc loc_FC72
ROM:FC6A cpi 80h ; 'А'
ROM:FC6C jnc loc_FC72
ROM:FC6F jmp loc_FC74
ROM:FC72 ; ---------------------------------------------------------------------------
ROM:FC72
ROM:FC72 loc_FC72: ; CODE XREF: ROM:FC67j
ROM:FC72 ; ROM:FC6Cj
ROM:FC72 mvi a, 2Eh ; '.'
ROM:FC74
ROM:FC74 loc_FC74: ; CODE XREF: ROM:FC6Fj
ROM:FC74 call OUTHEX2CT ; Выводит A в символьном виде
ROM:FC77 call LOOP ; Цикл директивы
ROM:FC77 ; Сравнивает PARAM1 и PARAM2,
ROM:FC77 ; если PARAM2 > PARAM1, то увеличиваем PARAM1 на единицу.
ROM:FC7A lda PARAM1 ; Первый параметр ADR1
ROM:FC7D ani 0Fh
ROM:FC7F jz loc_FC5B
ROM:FC82 jmp loc_FC5E
ROM:FC85 ; ---------------------------------------------------------------------------
ROM:FC85
ROM:FC85 H_: ; DATA XREF: ROM:FE45o
ROM:FC85 lxi h, PARAM1 ; Директива H
ROM:FC85 ; Вывод на экран суммы и разности заданных шестнадцатиричных чисел
ROM:FC88 mvi b, 6
ROM:FC8A xra a
ROM:FC8B
ROM:FC8B loc_FC8B: ; CODE XREF: ROM:FC8Dj
ROM:FC8B mov m, a
ROM:FC8C dcr b
ROM:FC8D jnz loc_FC8B
ROM:FC90 lxi d, KBDBUFF ; Клавиатурный буфер
ROM:FC93 call PARSESTR ; Получаем строку и парсим её
ROM:FC96 shld PARAM1 ; Первый параметр ADR1
ROM:FC99 call PARSESTR ; Получаем строку и парсим её
ROM:FC9C shld PARAM2 ; Второй параметр ADR2
ROM:FC9F call PRNNEWLINE ; Печатаем новую строку
ROM:FCA2 lhld PARAM1 ; Первый параметр ADR1
ROM:FCA5 shld PARAM3 ; Дополнительный параметр (байт или слово)
ROM:FCA8 xchg
ROM:FCA9 lhld PARAM2 ; Второй параметр ADR2
ROM:FCAC dad d
ROM:FCAD shld PARAM1 ; Первый параметр ADR1
ROM:FCB0 call DUMP2 ; PARAM1
ROM:FCB3 lhld PARAM2 ; Второй параметр ADR2
ROM:FCB6 xchg
ROM:FCB7 lhld PARAM3 ; Дополнительный параметр (байт или слово)
ROM:FCBA mov a, e
ROM:FCBB cma
ROM:FCBC mov e, a
ROM:FCBD mov a, d
ROM:FCBE cma
ROM:FCBF mov d, a
ROM:FCC0 inx d
ROM:FCC1 dad d
ROM:FCC2 shld PARAM1 ; Первый параметр ADR1
ROM:FCC5 call DUMP2 ; PARAM1
ROM:FCC8 jmp PRNNEWLINE ; Печатаем новую строку
ROM:FCCB ; ---------------------------------------------------------------------------
ROM:FCCB
ROM:FCCB I_: ; DATA XREF: ROM:FE2Do
ROM:FCCB mvi a, 0FFh ; Директива I
ROM:FCCB ; Ввод информации с магнитной ленты
ROM:FCCD call INMAG2 ; Ввод байта с магнитофона
ROM:FCD0 sta PARAM1+1 ; Первый параметр ADR1
ROM:FCD3 sta IPARAM1+1 ; Временная переменная директивы I
ROM:FCD6 mvi a, 8
ROM:FCD8 call INMAG2 ; Ввод байта с магнитофона
ROM:FCDB sta PARAM1 ; Первый параметр ADR1
ROM:FCDE sta IPARAM1 ; Временная переменная директивы I
ROM:FCE1 mvi a, 8
ROM:FCE3 call INMAG2 ; Ввод байта с магнитофона
ROM:FCE6 sta PARAM2+1 ; Второй параметр ADR2
ROM:FCE9 sta IPARAM2+1 ; Временная переменная директивы I
ROM:FCEC mvi a, 8
ROM:FCEE call INMAG2 ; Ввод байта с магнитофона
ROM:FCF1 sta PARAM2 ; Второй параметр ADR2
ROM:FCF4 sta IPARAM2 ; Временная переменная директивы I
ROM:FCF7 mvi a, 8
ROM:FCF9 lxi h, IRET ; IRET - сюда вернёмся после отработки цикла директивы I
ROM:FCFC push h
ROM:FCFD
ROM:FCFD loc_FCFD: ; CODE XREF: ROM:FD09j
ROM:FCFD lhld PARAM1 ; Первый параметр ADR1
ROM:FD00 call INMAG2 ; Ввод байта с магнитофона
ROM:FD03 mov m, a
ROM:FD04 call LOOP ; Цикл директивы
ROM:FD04 ; Сравнивает PARAM1 и PARAM2,
ROM:FD04 ; если PARAM2 > PARAM1, то увеличиваем PARAM1 на единицу.
ROM:FD07 mvi a, 8
ROM:FD09 jmp loc_FCFD
ROM:FD0C ; ---------------------------------------------------------------------------
ROM:FD0C
ROM:FD0C IRET: ; DATA XREF: ROM:FCF9o
ROM:FD0C lxi h, IPARAM1+1 ; IPARAM1
ROM:FD0F call DUMP3 ; Печать слова в HEX виде
ROM:FD12 lxi h, IPARAM2+1 ; IPARAM2
ROM:FD15 call DUMP3 ; Печать слова в HEX виде
ROM:FD18 jmp PRNNEWLINE ; Печатаем новую строку
ROM:FD1B ; ---------------------------------------------------------------------------
ROM:FD1B
ROM:FD1B O_: ; DATA XREF: ROM:FE30o
ROM:FD1B call GETPARAMS ; Директива O
ROM:FD1B ; Вывод содержимого области памяти на магнитную ленту
ROM:FD1E xra a
ROM:FD1F mvi b, 0
ROM:FD21
ROM:FD21 loc_FD21: ; CODE XREF: ROM:FD25j
ROM:FD21 call OUTMAG2 ; Вывод байта на магнитофон
ROM:FD24 dcr b
ROM:FD25 jnz loc_FD21
ROM:FD28 mvi a, 0E6h ; 'ц'
ROM:FD2A call OUTMAG2 ; Вывод байта на магнитофон
ROM:FD2D lda PARAM1+1 ; Первый параметр ADR1
ROM:FD30 call OUTMAG2 ; Вывод байта на магнитофон
ROM:FD33 lda PARAM1 ; Первый параметр ADR1
ROM:FD36 call OUTMAG2 ; Вывод байта на магнитофон
ROM:FD39 lda PARAM2+1 ; Второй параметр ADR2
ROM:FD3C call OUTMAG2 ; Вывод байта на магнитофон
ROM:FD3F lda PARAM2 ; Второй параметр ADR2
ROM:FD42 call OUTMAG2 ; Вывод байта на магнитофон
ROM:FD45
ROM:FD45 loc_FD45: ; CODE XREF: ROM:FD4Fj
ROM:FD45 lhld PARAM1 ; Первый параметр ADR1
ROM:FD48 mov a, m
ROM:FD49 call OUTMAG2 ; Вывод байта на магнитофон
ROM:FD4C call LOOP ; Цикл директивы
ROM:FD4C ; Сравнивает PARAM1 и PARAM2,
ROM:FD4C ; если PARAM2 > PARAM1, то увеличиваем PARAM1 на единицу.
ROM:FD4F jmp loc_FD45
ROM:FD52 ; ---------------------------------------------------------------------------
ROM:FD52
ROM:FD52 V_: ; DATA XREF: ROM:FE33o
ROM:FD52 mvi a, 0FFh ; Директива V
ROM:FD52 ; Сравнение информации на магнитной ленте с содержимым области памяти
ROM:FD54 call INMAG2 ; Ввод байта с магнитофона
ROM:FD57 sta PARAM1+1 ; Первый параметр ADR1
ROM:FD5A mvi a, 8
ROM:FD5C call INMAG2 ; Ввод байта с магнитофона
ROM:FD5F sta PARAM1 ; Первый параметр ADR1
ROM:FD62 mvi a, 8
ROM:FD64 call INMAG2 ; Ввод байта с магнитофона
ROM:FD67 sta PARAM2+1 ; Второй параметр ADR2
ROM:FD6A mvi a, 8
ROM:FD6C call INMAG2 ; Ввод байта с магнитофона
ROM:FD6F sta PARAM2 ; Второй параметр ADR2
ROM:FD72
ROM:FD72 loc_FD72: ; CODE XREF: ROM:FD92j
ROM:FD72 mvi a, 8
ROM:FD74 call INMAG2 ; Ввод байта с магнитофона
ROM:FD77 lhld PARAM1 ; Первый параметр ADR1
ROM:FD7A cmp m
ROM:FD7B jz loc_FD8F
ROM:FD7E push psw
ROM:FD7F call DUMP1 ; Печатает адрес в строке дампа
ROM:FD82 call DUMP4 ; Печатает пробел в строке дампа
ROM:FD85 call OUTHEXPAR1 ; Выводим на экран байт, находящийся по адресу PARAM1
ROM:FD88 call DUMP4 ; Печатает пробел в строке дампа
ROM:FD8B pop psw
ROM:FD8C call OUTHEX2 ; Вывод содержимого аккумулятора в HEX виде
ROM:FD8F
ROM:FD8F loc_FD8F: ; CODE XREF: ROM:FD7Bj
ROM:FD8F call LOOP ; Цикл директивы
ROM:FD8F ; Сравнивает PARAM1 и PARAM2,
ROM:FD8F ; если PARAM2 > PARAM1, то увеличиваем PARAM1 на единицу.
ROM:FD92 jmp loc_FD72
ROM:FD95
ROM:FD95 ; =============== S U B R O U T I N E =======================================
ROM:FD95
ROM:FD95 ; Ввод байта с магнитофона
ROM:FD95
ROM:FD95 INMAG2: ; CODE XREF: ROM:INMAGj
ROM:FD95 ; ROM:FCCDp ...
ROM:FD95 push b
ROM:FD96 push d
ROM:FD97 mvi c, 0
ROM:FD99 mov d, a
ROM:FD9A in 1
ROM:FD9C mov e, a
ROM:FD9D
ROM:FD9D loc_FD9D: ; CODE XREF: INMAG2+31j
ROM:FD9D ; INMAG2+3Cj
ROM:FD9D mov a, c
ROM:FD9E ani 7Fh
ROM:FDA0 rlc
ROM:FDA1 mov c, a
ROM:FDA2
ROM:FDA2 loc_FDA2: ; CODE XREF: INMAG2+10j
ROM:FDA2 in 1
ROM:FDA4 cmp e
ROM:FDA5 jz loc_FDA2
ROM:FDA8 ani 1
ROM:FDAA ora c
ROM:FDAB mov c, a
ROM:FDAC call INMAG2TR ; Читает константу чтения в A
ROM:FDAF in 1
ROM:FDB1 mov e, a
ROM:FDB2 mov a, d
ROM:FDB3 ora a
ROM:FDB4 jp loc_FDD0
ROM:FDB7 mov a, c
ROM:FDB8 cpi 0E6h ; 'ц'
ROM:FDBA jnz loc_FDC4
ROM:FDBD xra a
ROM:FDBE sta VERIFYFLG ; Флаг директивы V
ROM:FDC1 jmp loc_FDCE
ROM:FDC4 ; ---------------------------------------------------------------------------
ROM:FDC4
ROM:FDC4 loc_FDC4: ; CODE XREF: INMAG2+25j
ROM:FDC4 cpi 19h
ROM:FDC6 jnz loc_FD9D
ROM:FDC9 mvi a, 0FFh
ROM:FDCB sta VERIFYFLG ; Флаг директивы V
ROM:FDCE
ROM:FDCE loc_FDCE: ; CODE XREF: INMAG2+2Cj
ROM:FDCE mvi d, 9
ROM:FDD0
ROM:FDD0 loc_FDD0: ; CODE XREF: INMAG2+1Fj
ROM:FDD0 dcr d
ROM:FDD1 jnz loc_FD9D
ROM:FDD4 lda VERIFYFLG ; Флаг директивы V
ROM:FDD7 xra c
ROM:FDD8 pop d
ROM:FDD9 pop b
ROM:FDDA ret
ROM:FDDA ; End of function INMAG2
ROM:FDDA
ROM:FDDB
ROM:FDDB ; =============== S U B R O U T I N E =======================================
ROM:FDDB
ROM:FDDB ; Читает константу чтения в A
ROM:FDDB
ROM:FDDB INMAG2TR: ; CODE XREF: INMAG2+17p
ROM:FDDB push psw
ROM:FDDC lda LOADCON ; Константа чтения
ROM:FDDF
ROM:FDDF loc_FDDF: ; CODE XREF: OUTMAG2TR+4j
ROM:FDDF mov b, a
ROM:FDE0 pop psw
ROM:FDE1
ROM:FDE1 loc_FDE1: ; CODE XREF: INMAG2TR+7j
ROM:FDE1 dcr b
ROM:FDE2 jnz loc_FDE1
ROM:FDE5 ret
ROM:FDE5 ; End of function INMAG2TR
ROM:FDE5
ROM:FDE6
ROM:FDE6 ; =============== S U B R O U T I N E =======================================
ROM:FDE6
ROM:FDE6 ; Вывод байта на магнитофон
ROM:FDE6
ROM:FDE6 OUTMAG2: ; CODE XREF: ROM:OUTMAGj
ROM:FDE6 ; ROM:loc_FD21p ...
ROM:FDE6 push b
ROM:FDE7 push d
ROM:FDE8 push psw
ROM:FDE9 mov d, a
ROM:FDEA mvi c, 8
ROM:FDEC
ROM:FDEC loc_FDEC: ; CODE XREF: OUTMAG2+1Aj
ROM:FDEC mov a, d
ROM:FDED rlc
ROM:FDEE mov d, a
ROM:FDEF mvi a, 1
ROM:FDF1 xra d
ROM:FDF2 out 1
ROM:FDF4 call OUTMAG2TR ; Читает константу записи в A
ROM:FDF7 mvi a, 0
ROM:FDF9 xra d
ROM:FDFA out 1
ROM:FDFC call OUTMAG2TR ; Читает константу записи в A
ROM:FDFF dcr c
ROM:FE00 jnz loc_FDEC
ROM:FE03 pop psw
ROM:FE04 pop d
ROM:FE05 pop b
ROM:FE06 ret
ROM:FE06 ; End of function OUTMAG2
ROM:FE06
ROM:FE07
ROM:FE07 ; =============== S U B R O U T I N E =======================================
ROM:FE07
ROM:FE07 ; Читает константу записи в A
ROM:FE07
ROM:FE07 OUTMAG2TR: ; CODE XREF: OUTMAG2+Ep
ROM:FE07 ; OUTMAG2+16p
ROM:FE07 push psw
ROM:FE08 lda SAVECON ; Константа записи
ROM:FE0B jmp loc_FDDF
ROM:FE0B ; End of function OUTMAG2TR
ROM:FE0B
ROM:FE0B ; ---------------------------------------------------------------------------
ROM:FE0E DIRTABLE: .db 4Dh ; M ; DATA XREF: INIT3+4o
ROM:FE0F .dw M_ ; Директива M
ROM:FE0F ; Просмотр или изменение содержимого ячейки (ячеек) памяти
ROM:FE11 .db 43h ; C
ROM:FE12 .dw C_ ; Директива C
ROM:FE12 ; Сравнение содержимого двух областей памяти
ROM:FE14 .db 44h ; D
ROM:FE15 .dw D_ ; Директива D
ROM:FE15 ; Просмотр содержимого области памяти в шестнадцатиричном виде
ROM:FE15 ;
ROM:FE17 .db 42h ; B
ROM:FE18 .dw B_ ; Директива B
ROM:FE18 ; Задание адреса останова при отладке
ROM:FE1A .db 47h ; G
ROM:FE1B .dw G_ ; Директива G
ROM:FE1B ; Запуск программы в отладочном режиме
ROM:FE1D .db 50h ; P
ROM:FE1E .dw P_ ; Директива P
ROM:FE1E ; Подготовка к запуску циклически работающей программы
ROM:FE20 .db 58h ; X
ROM:FE21 .dw X_ ; Директива X
ROM:FE21 ; Просмотр содержимого внутренних регистров
ROM:FE23 .db 46h ; F
ROM:FE24 .dw F_ ; Директива F
ROM:FE24 ; Запись байта в ячейки области памяти
ROM:FE26 .db 53h ; S
ROM:FE27 .dw S_ ; Директива S
ROM:FE27 ; Поиск байта в области памяти
ROM:FE29 .db 54h ; T
ROM:FE2A .dw T_ ; Директива T
ROM:FE2A ; Пересылка содержимого одной области в другую
ROM:FE2C .db 49h ; I
ROM:FE2D .dw I_ ; Директива I
ROM:FE2D ; Ввод информации с магнитной ленты
ROM:FE2F .db 4Fh ; O
ROM:FE30 .dw O_ ; Директива O
ROM:FE30 ; Вывод содержимого области памяти на магнитную ленту
ROM:FE32 .db 56h ; V
ROM:FE33 .dw V_ ; Директива V
ROM:FE33 ; Сравнение информации на магнитной ленте с содержимым области памяти
ROM:FE35 .db 4Ah ; J
ROM:FE36 .dw J_ ; Директива J
ROM:FE36 ; Запуск программы с заданного адреса
ROM:FE38 .db 41h ; A
ROM:FE39 .dw A_ ; Директива A
ROM:FE39 ; Вывод кода символа на экран
ROM:FE3B .db 4Bh ; K
ROM:FE3C .dw K_ ; Директива K
ROM:FE3C ; Вывод символа с клавиатуры на экран (окончание режима УС-А)
ROM:FE3E .db 51h ; Q
ROM:FE3F .dw Q ; Директива Q
ROM:FE3F ; Тестирование области памяти
ROM:FE41 .db 4Ch ; L
ROM:FE42 .dw L_ ; Директива L
ROM:FE42 ; Просмотр содержимого области памяти в символьном виде
ROM:FE44 .db 48h ; H
ROM:FE45 .dw H_ ; Директива H
ROM:FE45 ; Вывод на экран суммы и разности заданных шестнадцатиричных чисел
ROM:FE47 .db 0
ROM:FE48 aMikro80Prompt: .db 0Ah ; DATA XREF: READDIR-2Ao
ROM:FE48 .text "*MikrO/80* MONITOR"
ROM:FE48 .db 0Ah
ROM:FE48 .text ">"
ROM:FE48 .db 0
ROM:FE5E NEWLINE: .db 0Ah ; DATA XREF: PRNNEWLINEo
ROM:FE5E .db 0
ROM:FE60
ROM:FE60 ; =============== S U B R O U T I N E =======================================
ROM:FE60
ROM:FE60 ; Выводит A в символьном виде
ROM:FE60
ROM:FE60 OUTHEX2CT: ; CODE XREF: ROM:F826p
ROM:FE60 ; READDIR+Bp ...
ROM:FE60
ROM:FE60 ; FUNCTION CHUNK AT ROM:FEDF SIZE 00000062 BYTES
ROM:FE60
ROM:FE60 push h
ROM:FE61 push b
ROM:FE62 push d
ROM:FE63 push psw
ROM:FE64 mov c, a
ROM:FE65 jmp loc_FE6C
ROM:FE68 ; ---------------------------------------------------------------------------
ROM:FE68
ROM:FE68 OUTSYM2: ; CODE XREF: ROM:OUTSYMj
ROM:FE68 ; ROM:OUTSYM_j
ROM:FE68 push h ; Вывод символа на экран
ROM:FE69 push b
ROM:FE6A push d
ROM:FE6B push psw
ROM:FE6C
ROM:FE6C loc_FE6C: ; CODE XREF: OUTHEX2CT+5j
ROM:FE6C lhld OUTTMP ; Временная переменная OUTHEX2CT, OUTSYM2
ROM:FE6F lxi d, START+1 ; Холодный старт
ROM:FE72 dad d
ROM:FE73 mvi m, 0
ROM:FE75 lhld OUTTMP ; Временная переменная OUTHEX2CT, OUTSYM2
ROM:FE78 mov a, c
ROM:FE79 cpi 1Fh
ROM:FE7B jz loc_FEC2
ROM:FE7E cpi 8
ROM:FE80 jz loc_FEE9
ROM:FE83 cpi 18h
ROM:FE85 jz loc_FEDF
ROM:FE88 cpi 19h
ROM:FE8A jz loc_FF05
ROM:FE8D cpi 1Ah
ROM:FE8F jz loc_FEF6
ROM:FE92 cpi 0Ah
ROM:FE94 jz loc_FF16
ROM:FE97 cpi 0Ch
ROM:FE99 jz loc_FEC5
ROM:FE9C mov a, h
ROM:FE9D cpi 0F0h ; 'Ё'
ROM:FE9F jnz loc_FEB2
ROM:FEA2 call CHKKEY2 ; Проверка состояния клавиатуры
ROM:FEA5 ora a
ROM:FEA6 jz loc_FEAC
ROM:FEA9 call INSYM2 ; Ввод символа с клавиатуры
ROM:FEAC
ROM:FEAC loc_FEAC: ; CODE XREF: OUTHEX2CT+46j
ROM:FEAC call TXTVIDEO
ROM:FEAF lxi h, STR ; ОЗУ страницы
ROM:FEB2
ROM:FEB2 loc_FEB2: ; CODE XREF: OUTHEX2CT+3Fj
ROM:FEB2 mov m, c
ROM:FEB3 inx h
ROM:FEB4
ROM:FEB4 loc_FEB4: ; CODE XREF: OUTHEX2CT+68j
ROM:FEB4 ; OUTHEX2CT+83j ...
ROM:FEB4 shld OUTTMP ; Временная переменная OUTHEX2CT, OUTSYM2
ROM:FEB7 lxi d, START+1 ; Холодный старт
ROM:FEBA dad d
ROM:FEBB mvi m, 80h ; 'А'
ROM:FEBD pop psw
ROM:FEBE pop d
ROM:FEBF pop b
ROM:FEC0 pop h
ROM:FEC1 ret
ROM:FEC2 ; ---------------------------------------------------------------------------
ROM:FEC2
ROM:FEC2 loc_FEC2: ; CODE XREF: OUTHEX2CT+1Bj
ROM:FEC2 ; OUTHEX2CT+D8j ...
ROM:FEC2 call TXTVIDEO
ROM:FEC5
ROM:FEC5 loc_FEC5: ; CODE XREF: OUTHEX2CT+39j
ROM:FEC5 ; OUTHEX2CT+86j
ROM:FEC5 lxi h, STR ; ОЗУ страницы
ROM:FEC8 jmp loc_FEB4
ROM:FEC8 ; End of function OUTHEX2CT
ROM:FEC8
ROM:FECB
ROM:FECB ; =============== S U B R O U T I N E =======================================
ROM:FECB
ROM:FECB
ROM:FECB TXTVIDEO: ; CODE XREF: OUTHEX2CT:loc_FEACp
ROM:FECB ; OUTHEX2CT:loc_FEC2p
ROM:FECB lxi h, STR ; ОЗУ страницы
ROM:FECE lxi d, CUR ; ОЗУ курсора
ROM:FED1
ROM:FED1 loc_FED1: ; CODE XREF: TXTVIDEO+11j
ROM:FED1 mvi m, 20h ; ' '
ROM:FED3 inx h
ROM:FED4 mvi a, 0
ROM:FED6 stax d
ROM:FED7 inx d
ROM:FED8 mov a, h
ROM:FED9 cpi 0F0h ; 'Ё'
ROM:FEDB rz
ROM:FEDC jmp loc_FED1
ROM:FEDC ; End of function TXTVIDEO
ROM:FEDC
ROM:FEDF ; ---------------------------------------------------------------------------
ROM:FEDF ; START OF FUNCTION CHUNK FOR OUTHEX2CT
ROM:FEDF
ROM:FEDF loc_FEDF: ; CODE XREF: OUTHEX2CT+25j
ROM:FEDF inx h
ROM:FEE0 mov a, h
ROM:FEE1 cpi 0F0h ; 'Ё'
ROM:FEE3 jnz loc_FEB4
ROM:FEE6 jz loc_FEC5
ROM:FEE9
ROM:FEE9 loc_FEE9: ; CODE XREF: OUTHEX2CT+20j
ROM:FEE9 dcx h
ROM:FEEA mov a, h
ROM:FEEB cpi 0E7h ; 'ч'
ROM:FEED jnz loc_FEB4
ROM:FEF0 lxi h, STR+7FFh ; ОЗУ страницы
ROM:FEF3 jmp loc_FEB4
ROM:FEF6 ; ---------------------------------------------------------------------------
ROM:FEF6
ROM:FEF6 loc_FEF6: ; CODE XREF: OUTHEX2CT+2Fj
ROM:FEF6 lxi d, 40h ; '@'
ROM:FEF9 dad d
ROM:FEFA mov a, h
ROM:FEFB cpi 0F0h ; 'Ё'
ROM:FEFD jnz loc_FEB4
ROM:FF00 mvi h, 0E8h ; 'ш'
ROM:FF02 jmp loc_FEB4
ROM:FF05 ; ---------------------------------------------------------------------------
ROM:FF05
ROM:FF05 loc_FF05: ; CODE XREF: OUTHEX2CT+2Aj
ROM:FF05 lxi d, loc_FFBE+2
ROM:FF08 dad d
ROM:FF09 mov a, h
ROM:FF0A cpi 0E7h ; 'ч'
ROM:FF0C jnz loc_FEB4
ROM:FF0F lxi d, 800h
ROM:FF12 dad d
ROM:FF13 jmp loc_FEB4
ROM:FF16 ; ---------------------------------------------------------------------------
ROM:FF16
ROM:FF16 loc_FF16: ; CODE XREF: OUTHEX2CT+34j
ROM:FF16 ; OUTHEX2CT+CBj
ROM:FF16 inx h
ROM:FF17 mov a, l
ROM:FF18 ora a
ROM:FF19 jz loc_FF2E
ROM:FF1C cpi 40h ; '@'
ROM:FF1E jz loc_FF2E
ROM:FF21 cpi 80h ; 'А'
ROM:FF23 jz loc_FF2E
ROM:FF26 cpi 0C0h ; 'L'
ROM:FF28 jz loc_FF2E
ROM:FF2B jmp loc_FF16
ROM:FF2E ; ---------------------------------------------------------------------------
ROM:FF2E
ROM:FF2E loc_FF2E: ; CODE XREF: OUTHEX2CT+B9j
ROM:FF2E ; OUTHEX2CT+BEj ...
ROM:FF2E mov a, h
ROM:FF2F cpi 0F0h ; 'Ё'
ROM:FF31 jnz loc_FEB4
ROM:FF34 call CHKKEY2 ; Проверка состояния клавиатуры
ROM:FF37 ora a
ROM:FF38 jz loc_FEC2
ROM:FF3B call INSYM2 ; Ввод символа с клавиатуры
ROM:FF3E jmp loc_FEC2
ROM:FF3E ; END OF FUNCTION CHUNK FOR OUTHEX2CT
ROM:FF41
ROM:FF41 ; =============== S U B R O U T I N E =======================================
ROM:FF41
ROM:FF41 ; Ввод символа с клавиатуры
ROM:FF41
ROM:FF41 INSYM2: ; CODE XREF: ROM:INSYMj
ROM:FF41 ; READDIR:PTRp ...
ROM:FF41 push b
ROM:FF42 push d
ROM:FF43 push h
ROM:FF44
ROM:FF44 loc_FF44: ; CODE XREF: INSYM2+1Fj
ROM:FF44 mvi b, 0
ROM:FF46 mvi c, 0FEh ; '¦'
ROM:FF48 mvi d, 8
ROM:FF4A
ROM:FF4A loc_FF4A: ; CODE XREF: INSYM2+1Cj
ROM:FF4A mov a, c
ROM:FF4B out 7
ROM:FF4D rlc
ROM:FF4E mov c, a
ROM:FF4F in 6
ROM:FF51 ani 7Fh
ROM:FF53 cpi 7Fh ; ''
ROM:FF55 jnz loc_FF63
ROM:FF58 mov a, b
ROM:FF59 adi 7
ROM:FF5B mov b, a
ROM:FF5C dcr d
ROM:FF5D jnz loc_FF4A
ROM:FF60 jmp loc_FF44
ROM:FF63 ; ---------------------------------------------------------------------------
ROM:FF63
ROM:FF63 loc_FF63: ; CODE XREF: INSYM2+14j
ROM:FF63 sta RSTTRTMP ; Временно сохраняем A
ROM:FF66
ROM:FF66 loc_FF66: ; CODE XREF: INSYM2+2Aj
ROM:FF66 rar
ROM:FF67 jnc loc_FF6E
ROM:FF6A inr b
ROM:FF6B jmp loc_FF66
ROM:FF6E ; ---------------------------------------------------------------------------
ROM:FF6E
ROM:FF6E loc_FF6E: ; CODE XREF: INSYM2+26j
ROM:FF6E mov a, b
ROM:FF6F cpi 30h ; '0'
ROM:FF71 jnc loc_FF86
ROM:FF74 adi 30h ; '0'
ROM:FF76 cpi 3Ch ; '<'
ROM:FF78 jc loc_FF82
ROM:FF7B cpi 40h ; '@'
ROM:FF7D jnc loc_FF82
ROM:FF80 ani 2Fh
ROM:FF82
ROM:FF82 loc_FF82: ; CODE XREF: INSYM2+37j
ROM:FF82 ; INSYM2+3Cj
ROM:FF82 mov c, a
ROM:FF83 jmp loc_FF93
ROM:FF86 ; ---------------------------------------------------------------------------
ROM:FF86
ROM:FF86 loc_FF86: ; CODE XREF: INSYM2+30j
ROM:FF86 lxi h, TABINIT
ROM:FF89 sui 30h ; '0'
ROM:FF8B mov c, a
ROM:FF8C mvi b, 0
ROM:FF8E dad b
ROM:FF8F mov a, m
ROM:FF90 jmp loc_FFC7
ROM:FF93 ; ---------------------------------------------------------------------------
ROM:FF93
ROM:FF93 loc_FF93: ; CODE XREF: INSYM2+42j
ROM:FF93 in 5
ROM:FF95 ani 7
ROM:FF97 cpi 7
ROM:FF99 jz loc_FFC6
ROM:FF9C rar
ROM:FF9D rar
ROM:FF9E jnc loc_FFAB
ROM:FFA1 rar
ROM:FFA2 jnc loc_FFB1
ROM:FFA5 mov a, c
ROM:FFA6 ori 20h
ROM:FFA8 jmp loc_FFC7
ROM:FFAB ; ---------------------------------------------------------------------------
ROM:FFAB
ROM:FFAB loc_FFAB: ; CODE XREF: INSYM2+5Dj
ROM:FFAB mov a, c
ROM:FFAC ani 1Fh
ROM:FFAE jmp loc_FFC7
ROM:FFB1 ; ---------------------------------------------------------------------------
ROM:FFB1
ROM:FFB1 loc_FFB1: ; CODE XREF: INSYM2+61j
ROM:FFB1 mov a, c
ROM:FFB2 cpi 40h ; '@'
ROM:FFB4 jnc loc_FFC7
ROM:FFB7 cpi 30h ; '0'
ROM:FFB9 jnc loc_FFC1
ROM:FFBC ori 10h
ROM:FFBE
ROM:FFBE loc_FFBE: ; DATA XREF: OUTHEX2CT:loc_FF05o
ROM:FFBE jmp loc_FFC7
ROM:FFC1 ; ---------------------------------------------------------------------------
ROM:FFC1
ROM:FFC1 loc_FFC1: ; CODE XREF: INSYM2+78j
ROM:FFC1 ani 2Fh
ROM:FFC3 jmp loc_FFC7
ROM:FFC6 ; ---------------------------------------------------------------------------
ROM:FFC6
ROM:FFC6 loc_FFC6: ; CODE XREF: INSYM2+58j
ROM:FFC6 mov a, c
ROM:FFC7
ROM:FFC7 loc_FFC7: ; CODE XREF: INSYM2+4Fj
ROM:FFC7 ; INSYM2+67j ...
ROM:FFC7 mov c, a
ROM:FFC8 call WAIT800
ROM:FFCB lxi h, RSTTRTMP ; Временно сохраняем A
ROM:FFCE
ROM:FFCE loc_FFCE: ; CODE XREF: INSYM2+90j
ROM:FFCE in 6
ROM:FFD0 cmp m
ROM:FFD1 jz loc_FFCE
ROM:FFD4 call WAIT800
ROM:FFD7 mov a, c
ROM:FFD8 pop h
ROM:FFD9 pop d
ROM:FFDA pop b
ROM:FFDB ret
ROM:FFDB ; End of function INSYM2
ROM:FFDB
ROM:FFDC
ROM:FFDC ; =============== S U B R O U T I N E =======================================
ROM:FFDC
ROM:FFDC
ROM:FFDC WAIT800: ; CODE XREF: INSYM2+87p
ROM:FFDC ; INSYM2+93p
ROM:FFDC lxi d, 800h
ROM:FFDF
ROM:FFDF loc_FFDF: ; CODE XREF: WAIT800+7j
ROM:FFDF dcx d
ROM:FFE0 mov a, d
ROM:FFE1 ora e
ROM:FFE2 rz
ROM:FFE3 jmp loc_FFDF
ROM:FFE3 ; End of function WAIT800
ROM:FFE3
ROM:FFE3 ; ---------------------------------------------------------------------------
ROM:FFE6 TABINIT: .db 20h, 18h, 8, 19h, 1Ah, 0Dh, 1Fh, 0Ch
ROM:FFE6 ; DATA XREF: INSYM2:loc_FF86o
ROM:FFEE
ROM:FFEE ; =============== S U B R O U T I N E =======================================
ROM:FFEE
ROM:FFEE ; Проверка состояния клавиатуры
ROM:FFEE
ROM:FFEE CHKKEY2: ; CODE XREF: ROM:CHKKEYj
ROM:FFEE ; OUTHEX2CT+42p ...
ROM:FFEE mvi a, 0
ROM:FFF0 out 7
ROM:FFF2 in 6
ROM:FFF4 ani 7Fh
ROM:FFF6 cpi 7Fh ; ''
ROM:FFF8 jnz loc_FFFD
ROM:FFFB xra a
ROM:FFFC ret
ROM:FFFD ; ---------------------------------------------------------------------------
ROM:FFFD
ROM:FFFD loc_FFFD: ; CODE XREF: CHKKEY2+Aj
ROM:FFFD mvi a, 0FFh
ROM:FFFF ret
ROM:FFFF ; End of function CHKKEY2
ROM:FFFF
ROM:FFFF ; end of 'ROM'
ROM:FFFF
ROM:FFFF
ROM:FFFF .end