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