Радио-86РК/Радио 10-91/ROM-диск/Таблица 2
Данный материал защищён авторскими правами!
Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей. Автор: М. ОВЕЧКИН, Ю. КРЫЛОВ |
Таблица 2 ; ПРОГРАММА УПРАВЛЕНИЯ ROM-DISK/32K ДЛЯ КОМПЬЮТЕРА ;"РАДИО-В6РК" С OБ'EMOM ОЗУ ПОЛЬЗОВАТЕЛЯ 32К. ;ПРОГРАММА УПРАВЛЕНИЯ ЗАФИКСИРОВАНА В ПЗУ ;ПО АДРЕСАМ 7E00H-7FFFH. УКАЗАННУЮ ОБЛАСТЬ ПЗУ ;ЗАПРЕЩЕНО ИСПОЛЬЗОВАТЬ ПОД ROM-DISK. ;ПРОГРАММА ИЗ ПЗУ В ОЗУ ПЕРЕНОСИТСЯ ЗАГРУЗЧИКОМ, ;(В MONITORE) ПО ДИРЕКТИВЕ "U" И ЗАНИМАЕТ ; ВЕРХНИЕ АДРЕСА ОЗУ, НАЧИНАЯ С 7400Н. ORG 7400Н ; PRINT: EQU 0F818Н ;ВЫВОД СООБЩЕНИЯ НА ЭКРАН WW: EQU 0F803Н ;ВВОД С КЛАВИАТУРЫ WYW: EQU 0F609H ; ВЫВОД СИМВОЛА НА ЭКРАН CONST: EQU 6 ;ЧИСЛО ПРОГРАММ МО: LXI H,SOI ; ВЫВЕСТИ КАТАЛОГ MI: CALL PRINT ;ROM-DISK/32K CALL WW ; ВЫБОР МЕНЮ. CPI 'Z' ;УСТАНОВКА ПАМЯТИ В 0? JZ ZERO ;НЕТ, CPI 'S' ; ЗАПИСЬ ВО ВРЕМЕННЫЙ JZ SAVE ; БУФЕР?- НЕТ, CPI 'L' ;СЧИТЫВАНИЕ В ТЕКСТОВЫЙ JZ LOAD ; БУФЕР?-НЕТ, SUI ЗОН ; ВХОДИТ ЛИ НАЖАТАЯ JM МО ; ЦИФРА В ДИАПАЗОН CPI CONST ; У КАЗАННЫХ ЗНАЧЕНИЙ? JNC МО ;НЕТ, ПОВТОРИТЬ ВВОД. MOV В,А ;ДА, КОД СОХРАНИТЬ. ORA А ;ЭТО 0? JNZ М2 ;НЕТ, НА ВЫЧИСЛЕНИЕ АДРЕСОВ. XRA А ;ДА, ОЧИСТИТЬ СЛУЖЕБНУЮ STA 2117Н ;ЯЧЕЙКУ ПАМЯТИ BASIC. M2: LXI D,6 ;ШАГ ПОИСКА ПО ТАБЛИЦЕ. LXI H,TABL ; БАЗОВЫЙ АДРЕС ТАБЛИЦЫ. XRA А ; СОДЕРЖИМОЕ АККУМУЛЯТОРА МЗ: СМР В ; РАВНО ХРАНИМОМУ КОДУ? JZ М4 ;ДА, ВЗЯТЬ АДРЕСА ПРОГРАММЫ. DAD D ;НЕТ, ПЕРЕЙТИ НА СЛЕДУЮЩУЮ INR А ; СТРОКУ ТАБЛИЦЫ, УВЕЛИЧИТЬ ДАННЫЕ JMP МЗ ;АККУМУЛЯТОРА И ВНОВЬ СРАВНИТЬ М4: SPHL ;ИСПОЛЬЗУЯ СТЕК, POP Н ; ВЗЯТЬ POP D ; АДРЕСА POP В ; ПРОГРАММЫ. DCX SP ; ПОСЛЕДНИЙ АДРЕС DCX SP ; -СТАРТОВЫЙ . ; ПОДПРОГРАММА MONITORA, ОБЕСПЕЧИВАЮЩАЯ КОПИРОВАНИЕ ; ДАННЫХ ИЗ АДРЕСУЕМОЙ ОБЛАСТИ ПЗУ В АДРЕСУЕМУЮ ; ОБЛАСТЬ ОЗУ ПОЛЬЗОВАТЕЛЯ. CALL 0FA68H ; ПЕРЕСЫЛКА ПРОГРАММЫ. POP Н ; ВЗЯТЬ АДРЕС PCHL ;И ЗАПУСТИТЬ ПРОГРАММУ. ; ПОДПРОГРАММА СЧИТЫВАНИЯ ФАЙЛА ИЗ ВРЕМЕННОГО БУФЕРА ;В ТЕКСТОВЫЙ БУФЕР РЕДАКТОРА "МИКРОН". LOAD: LXI Н, S04 ; ПОДТВЕРДИТЬ CALL PRINT ;ВЫБОР СЧИТЫВАНИЯ. LXI Н,4A00Н ;НАЧАЛЬНЫЙ АДРЕС LXI D,2100H ;BPEMEHHOГO БУФЕРА. RDO: LXI B,28FFH ;OБ'EM ФАЙЛА. RDI: MOV A,M ;ПЕРЕСЛАТЬ STAX D ;ФАЙЛ INX H ;И3 INX D ;ВРЕМЕННОГО БУФЕРА DCX В ;B ТЕКСТОВЫЙ БУФЕР MOV А,В ;С АДРЕСА 2100Н. ORA С ; JNZ RDI ; JMP МО ;ВЫЙТИВ МЕНЮ. ;ПОДПРОГРАММА СОХРАНЕНИЯ ФАЙЛА ВО ВРЕМЕННОМ ; БУФЕРЕ. ЕСЛИ ОБ 'ЕМ ФАЙЛА ПРЕВЫШАЕТ 28FFH, ТО ; ОПЕРАЦИЯ ПО ХРАНЕНИЮ НЕ ВЫПОЛНЯЕТСЯ. SAVE: LXI Н, 2100Н SI: MOV A,M ;ПРОВЕРИТЬ РАЗМЕР CPI 0FFH ; ФАЙЛА. JZ S2 ;ЕСЛИ ФАЙЛ HE УМЕЩАЕТСЯ INX Н ;ВО ВРЕМЕННОМ MOV А, Н ; БУФЕРЕ, ТО CPI 4АН ; JNZ SI ; LXI H,SO6 ;СООБЩИТЬ, А ПЕРЕСЫЛКУ JMP MI ;HE ПРОИЗВОДИТЬ. S2: LXI H,SO5 ; ИНАЧЕ CALL PRINT ;ПОДТВЕРДИТЬ ЗАПИСЬ LXI Н,2100Н ;ВО ВРЕМЕННЫЙ БУФЕР. LXI D,4A00H ; JMP RDO ;УйТИ НА ЗАПИСЬ. ;ПОДПРОГРАММА ОЧИСТКИ ПАМЯТИ (ЗАПИСЬ "0" ;BO ВСЕ ДОСТУПНЫЕ ПОЛЬЗОВАТЕЛЮ ЯЧЕЙКИ ОЗУ, ; КРОМЕ ЯЧЕЕК, НАЧИНАЯ С 7400Н). ZERO: LXI H,SO5 ;ПОДТВЕРДИТЬ ПРИЕМ CALL PRINT ; ОПЕРАЦИИ СБРОСА RAM. LXI Н,0 ; Z1: MVI М,0 ;ОЧИСТИТЬ INX Н ; ПАМЯТЬ. MOV A,Н ; СРI 74Н ;ЕСЛИ АДРЕС БОЛЬШЕ JNZ Z1 ; 7400Н, ТО ВЫЙТИ JMP МО ;В МЕНН). SOI: DB 1FH,0CH,0AH,'"ROM-DISK/32K"V2.0-91'; DB 0AH,0AH,0DH,'DIR:'; DB 0DH,0AH,'<0>-BASIC'; DB 0DH,0AH,'<1>-ED/ASSM'; DB 0DH,0AH,'<2>-DP/DDT'; DB 0DH,0AH,'<3>-SORT UT'; DB 0DH,0AH,'<4>-DRIV/260'; DB 0DH,0AH,'<5>-PROGR' ; DB 0AH,0DH DB 0AH,0DH,' <S>-BUFF' ; DB 0AH,0DH,' <L>-RED' ; DB 0AH,0DH,' <2>-0/RAM' ; DB 0DH,0AH,0 SO3: DB 19H ; SO4: DB 19H ; SO5: DB 19H,7FH,08H,0 SO6: DB 0DH,'OUT OF BUFF',0 ;ТАБЛИЦА АДРЕСОВ ФАЙЛОВ ROM~DISK/32K. ;ПОСЛЕДОВАТЕЛЬНО ПО КАТАЛОГУ УКАЗАНЫ; ;НАЧАЛЬНЫЙ, КОНЕЧНЫЙ АДРЕСА ФАЙЛА В ПЗУ. ;НАЧАЛЬНЫЙ АДРЕС ЭТОГО ЖЕ ФАЙЛА В ОЗУ. TABL: DW 0,1FFFH,0 ; BASIC DW 2000H,2FFFH,0 ; RED/ASSM DW 3000H,3FFFH,6400H ; DP/DDT DW 6E4EH,74E3H,800H ; SORT/UT DW 74E4H,7A94H,800H ; DR I V/260 DW 7A95H,7DFFH,0 ; PROGR END ;