Difference between revisions of "Uknc ROM disasm - 1"
From Felixl.com
Jump to navigationJump to search (Исправлены ошибки) |
|||
| Line 1: | Line 1: | ||
<pre> | <pre> | ||
| − | + | .TITLE ROM | |
| − | + | .ASECT | |
| + | |||
| + | .=100000 ; Начальный адрес ПЗУ | ||
; ******************************************************************** | ; ******************************************************************** | ||
| Line 13: | Line 15: | ||
; П/п установки начальных значений в меню УСТАНОВКА и ЗАГРУЗКА | ; П/п установки начальных значений в меню УСТАНОВКА и ЗАГРУЗКА | ||
| − | 100000$:JSR R5,110712$ ; П/п заносит данные из области | + | 100000$:JSR R5,110712$ ; П/п заносит данные из области |
| − | + | .WORD 100012$,7152 ; по адресу 100012 в 7152 | |
| − | + | RETURN | |
| − | 100012$:.WORD 10. | + | 100012$:.WORD 10. ; Количество слов |
| − | + | .WORD 177701,0,0 ; Пункт УСТ не выбран, VT-52, 80x24 | |
| − | + | .WORD 7,1,1,7 ; Цвета символа, знакоместа, экрана и курсора | |
| − | + | .WORD 0,0 ; Рулон плавный, таймер включен | |
| − | + | .WORD 177701 ; Пункт ЗАГРУЗКА не выбран | |
; П/п обслуживания главного меню УСТАНОВКА | ; П/п обслуживания главного меню УСТАНОВКА | ||
| − | 100040$:TST @#23170 | + | 100040$:TST @#23170 ; Ожидание завершения скроллинга |
| − | + | BNE 100040$ | |
| − | + | MOV @#2476,-(SP) ; Сохранить адрес пользовательского экрана | |
| − | + | MOV #4672,@#2476 ; Включить экран установки | |
| − | + | MOV #22754,R5 ; Сделать текущей таблицу видеопараметров | |
| − | + | CALL 110210$ ; экрана установки | |
| − | + | JSR R5,105346$ ; Перевести клавиатуру в системный режим | |
| − | + | .WORD 107310$,11054 ; Данные для системного режима | |
| − | + | CALL 104054$ ; Очистить буфер клавиатуры | |
| − | + | CLR @#7232 ; Разрешение алфавитно-цифровой клавиатуры | |
| − | + | MOV SP,@#7142 | |
| − | + | EMT 52 ; Вывод УСТ в верхней строке | |
| − | + | .WORD 107533$ | |
| − | 100120$:EMT 44 | + | 100120$:EMT 44 ; Вывод заголовка |
| − | + | .WORD 102133$ | |
| − | 100124$:MOV #4,R0 | + | 100124$:MOV #4,R0 |
| − | + | JSR R4,101202$ ; Вывод меню и запрос пункта | |
| − | + | .WORD 101644$ ; Адрес списка для меню УСТАНОВКА | |
| − | + | BMI 100172$ ; Нажата <Enter> или УПР-@ ? | |
| − | + | CALL @100150$(R2) ; Обслуживание выбранного пункта | |
| − | + | BMI 100172$ ; Нажата <Enter> или УПР-@ ? | |
| − | + | BR 100124$ | |
; Адреса п/п обслуживания пунктов меню УСТАНОВКА | ; Адреса п/п обслуживания пунктов меню УСТАНОВКА | ||
| − | 100150$:.WORD 100172$,100334$,100372$,100432$,100476$ | + | 100150$:.WORD 100172$,100334$,100372$,100432$,100476$ |
| − | + | .WORD 100536$,100576$,100630$,100730$ | |
; Если нажаты <Enter> или УПР-@ | ; Если нажаты <Enter> или УПР-@ | ||
| − | 100172$:CMP R0,#177772 ; Нажата УПР-@ (выход в монитор ПП) ? | + | 100172$:CMP R0,#177772 ; Нажата УПР-@ (выход в монитор ПП) ? |
| − | + | BEQ 100302$ | |
| − | + | MOV @#7142,SP | |
| − | + | EMT 52 ; Стирание в верхней строке надписи УСТ | |
| − | + | .WORD 107524$ | |
| − | + | EMT 52 | |
| − | + | .WORD 107542$ | |
| − | + | TST @#7146 ; Предыдущий режим клавиатуры был системным ? | |
| − | + | BNE 100232$ ; Да | |
| − | + | JSR R5,105400$ ; Восстановить пользовательский режим | |
| − | + | .WORD 107310$,11054 ; Данные для пользовательского режима | |
| − | 100232$:CALL 110204$ | + | 100232$:CALL 110204$ ; Включение пользовательского экрана |
| − | + | MOV (SP)+,@#2476 | |
| − | + | CLR @#7070 ; Очистить признак вызова | |
| − | + | TST @#7072 ; Вызов происходил из меню ЗАГРУЗКА ? | |
| − | + | BNE 100300$ ; Да | |
| − | 100254$:MOV #2,@#7230 ; Установить признак выполнения TRAP 2 | + | 100254$:MOV #2,@#7230 ; Установить признак выполнения TRAP 2 |
| − | + | MOV #2,@#22546 ; Установить признак выполнения TRAP 4 | |
| − | + | MOV #2,@#7042 ; Адресовать ASCII-коды клавиатуры каналу 0 | |
| − | + | TRAP 4 ; Прочесть символ с канала 0 (если есть) | |
100300$:RETURN | 100300$:RETURN | ||
| − | 100302$:MOV #14,R0 | + | 100302$:MOV #14,R0 ; Очистить экран |
| − | + | EMT 42 | |
| − | + | MOV #100120$,-(SP) ; Адрес возврата в меню УСТАНОВКА | |
| − | + | MOV SP,@#7144 | |
| − | + | JMP @#160576 ; Переход к программе монитора ПП | |
; П/п обслуживания подменю СИСТЕМА КОМАНД | ; П/п обслуживания подменю СИСТЕМА КОМАНД | ||
| − | 100324$:CALL @100346(R2) ; Вызов п/п по текущему пункту меню | + | 100324$:CALL @100346(R2) ; Вызов п/п по текущему пункту меню |
| − | + | MOV #4,R0 | |
| − | 100334$:JSR R4,101202$ ; Вывод подменю и запрос пункта | + | 100334$:JSR R4,101202$ ; Вывод подменю и запрос пункта |
| − | + | .WORD 101672$ ; Адрес списка подменю СИСТЕМА КОМАНД | |
| − | + | BEQ 100324$ | |
| − | + | RETURN | |
; Адреса п/п для обслуживания подменю СИСТЕМА КОМАНД | ; Адреса п/п для обслуживания подменю СИСТЕМА КОМАНД | ||
| − | 100346$:.WORD 162572$,113670$,113712$ | + | 100346$:.WORD 162572$,113670$,113712$ |
; П/п обслуживания подменю ФОРМАТ ЭКРАНА | ; П/п обслуживания подменю ФОРМАТ ЭКРАНА | ||
| − | 100354$:MOV R2,R0 | + | 100354$:MOV R2,R0 ; Получение номера формата |
| − | + | ASR R0 ; 0 - 80x24, 1 - 40x24, 2 - 20x24, 3 - 10x24 | |
| − | + | DEC R0 | |
| − | + | CALL 116502$ ; Обращение к п/п установки формата экрана | |
| − | + | MOV #2,R0 | |
| − | 100372$:JSR R4,101202$ ; Вывод меню и запрос пункта | + | 100372$:JSR R4,101202$ ; Вывод меню и запрос пункта |
| − | + | .WORD 101704$ ; Адрес списка подменю ФОРМАТ ЭКРАНА | |
| − | + | BEQ 100354$ | |
| − | + | RETURN | |
; П/п для обслуживания подменю ЦВЕТ СИМВОЛА | ; П/п для обслуживания подменю ЦВЕТ СИМВОЛА | ||
| − | 100404$:MOV R2,R0 | + | 100404$:MOV R2,R0 ; Получение номера цвета |
| − | + | ASR R0 | |
| − | + | DEC R0 | |
| − | + | MOV R5,-(SP) ; Сохранить адрес текущей таблицы видеопар. | |
| − | + | MOV #22656,R5 ; Загрузить адрес таблицы экрана пользователя | |
| − | + | CALL 116052$ ; Обращение к п/п установки цвета символа | |
| − | + | MOV (SP)+,R5 | |
| − | + | MOV #2,R0 | |
| − | 100432$:JSR R4,101202$ ; Вывод меню и запрос пункта | + | 100432$:JSR R4,101202$ ; Вывод меню и запрос пункта |
| − | + | .WORD 101722$ ; Адрес списка подменю ЦВЕТ СИМВОЛА | |
| − | + | BEQ 100404$ | |
| − | + | RETURN | |
; П/п для обслуживания подменю ЦВЕТ ЗНАКОМЕСТА | ; П/п для обслуживания подменю ЦВЕТ ЗНАКОМЕСТА | ||
| − | 100444$:MOV R2,R0 | + | 100444$:MOV R2,R0 ; Получение номера цвета |
| − | + | SUB #2,R0 | |
| − | + | MOV 113512$(R0),R0 | |
| − | + | MOV R5,-(SP) | |
| − | + | MOV #22656,R5 | |
| − | + | CALL 116130$ ; Обращение к п/п установки цвета знакоместа | |
| − | + | MOV (SP)+,R5 | |
| − | + | MOV #2,R0 | |
| − | 100476$:JSR R4,101202$ | + | 100476$:JSR R4,101202$ |
| − | + | .WORD 101750$ ; Адрес списка подменю ЦВЕТ ЗНАКОМЕСТА | |
| − | + | BEQ 100444$ | |
| − | + | RETURN | |
; П/п для обслуживания подменю ЦВЕТ ЭКРАНА | ; П/п для обслуживания подменю ЦВЕТ ЭКРАНА | ||
| − | 100510$:MOV R2,R0 | + | 100510$:MOV R2,R0 ; Получение номера цвета |
| − | + | ASR R0 | |
| − | + | DEC R0 | |
| − | + | MOV R5,-(SP) | |
| − | + | MOV #22656,R5 | |
| − | + | CALL 116170$ ; Обращение к п/п установки цвета экрана | |
| − | + | MOV (SP)+,R5 | |
| − | + | MOV #2,R0 | |
| − | 100536$:JSR R4,101202$ | + | 100536$:JSR R4,101202$ |
| − | + | .WORD 101776$ ; Адрес списка подменю ЦВЕТ ЭКРАНА | |
| − | + | BEQ 100510$ | |
| − | + | RETURN | |
; П/п для обслуживания подменю ЦВЕТ КУРСОРА | ; П/п для обслуживания подменю ЦВЕТ КУРСОРА | ||
| − | 100550$:MOV R2,R0 | + | 100550$:MOV R2,R0 ; Получение номера цвета |
| − | + | ASR R0 | |
| − | + | DEC R0 | |
| − | + | MOV R5,-(SP) | |
| − | + | MOV #22656,R5 | |
| − | + | CALL 116226$ ; Обращение к п/п установки цвета курсора | |
| − | + | MOV (SP)+,R5 | |
| − | + | MOV #2,R0 | |
| − | 100576$:JSR R4,101202$ | + | 100576$:JSR R4,101202$ |
| − | + | .WORD 102024$ ; Адрес списка подменю ЦВЕТ КУРСОРА | |
| − | + | BEQ 100550$ | |
| − | + | RETURN | |
; П/п для обслуживания подменю РУЛОН | ; П/п для обслуживания подменю РУЛОН | ||
| − | 100610$:MOV R5,-(SP) | + | 100610$:MOV R5,-(SP) |
| − | + | MOV #22656,R5 | |
| − | + | CALL @<100642$-2>(R2); Обращение к п/п-ам установки рулона | |
| − | + | MOV (SP)+,R5 | |
| − | + | MOV #2,R0 | |
| − | 100630$:JSR R4,101202$ | + | 100630$:JSR R4,101202$ |
| − | + | .WORD 102052$ ; Адрес списка подменю РУЛОН | |
| − | + | BEQ 100610$ | |
| − | + | RETURN | |
; Адреса п/п-ам для установки рулона | ; Адреса п/п-ам для установки рулона | ||
| − | 100642$:.WORD 100650$,100656$,100674$ | + | 100642$:.WORD 100650$,100656$,100674$ |
| − | 100650$:CLR @#7136 | + | 100650$:CLR @#7136 ; Установить плавный рулон |
| − | + | BR 100664$ | |
| − | 100656$:MOV #2,@#7136 ; Установить дискретный рулон | + | 100656$:MOV #2,@#7136 ; Установить дискретный рулон |
| − | 100664$:MOV #2,74(R5) ; Установить присутствие рулона | + | 100664$:MOV #2,74(R5) ; Установить присутствие рулона |
| − | + | RETURN ; 74 - смещение в таблице видеопараметров | |
| − | 100674$:CLR 74(R5) | + | 100674$:CLR 74(R5) ; Установить отсутствие рулона |
| − | + | RETURN | |
; П/п для обслуживания подменю ТАЙМЕР | ; П/п для обслуживания подменю ТАЙМЕР | ||
| − | 100702$:BIS #1000,@#177054 ; Выключить таймер в канале ЦП | + | 100702$:BIS #1000,@#177054 ; Выключить таймер в канале ЦП |
| − | + | SUB #2,R2 ; Текущий пункт - включен ? | |
| − | + | BNE 100724$ ; Нет | |
| − | + | BIC #1000,@#177054 ; Включить таймер в канале ЦП | |
| − | 100724$:MOV #2,R0 | + | 100724$:MOV #2,R0 |
| − | 100730$:JSR R4,101202$ | + | 100730$:JSR R4,101202$ |
| − | + | .WORD 102066$ ; Адреса списка подменю ТАЙМЕР | |
| − | + | BEQ 100702$ | |
| − | + | RETURN | |
; П/п обслуживания главного меню ЗАГРУЗКА | ; П/п обслуживания главного меню ЗАГРУЗКА | ||
| − | 100742$:CLR @#7042 | + | 100742$:CLR @#7042 ; Направлять ASCII-коды запросам EMT 22 |
| − | + | CLR -(SP) ; Номер устройства = 0 | |
| − | 100750$:MOV #14,R0 | + | 100750$:MOV #14,R0 ; Очистить экран |
| − | + | EMT 42 | |
| − | 100756$:CLR @SP | + | 100756$:CLR @SP |
| − | + | JSR R4,101616$ ; Позиционирование курсора | |
| − | + | .BYTE 2,5 ; Y=2, X=5 | |
| − | + | MOV #-6,@#7150 ; Запрет вывода в верхнюю инф. строку | |
| − | + | CLR @#23164 ; Разрешение использования курсора | |
| − | + | EMT 44 ; Вывод заголовка | |
| − | + | .WORD 103114$ | |
| − | 101004$:MOV #4,R0 | + | 101004$:MOV #4,R0 |
| − | + | JSR R4,101202$ ; Вывод меню и запрос пункта | |
| − | + | .WORD 102100$ ; Адрес списка меню ЗАГРУЗКА | |
| − | + | BEQ 100756$ | |
| − | + | BMI 101146$ ; Нажаты <Enter>,<ИСП> или <0> ? | |
| − | + | ADD R2,PC ; Переход по номеру пункта (нажата вправо) | |
| − | + | BR 100756$ | |
| − | + | BR 101044$ ; Диск | |
| − | + | BR 101102$ ; Кассета ПЗУ | |
| − | + | BR 101004$ ; Сеть | |
| − | + | BR 101004$ ; Стык С2 | |
| − | + | BR 101004$ ; Магнитофон | |
| − | + | BR 101004$ ; Отладка | |
| − | + | BR 101004$ ; Тестирование | |
; Запрос номера диска | ; Запрос номера диска | ||
| − | 101044$:JSR R4,101616$ ; Позиционирование курсора | + | 101044$:JSR R4,101616$ ; Позиционирование курсора |
| − | + | .BYTE 4,34 | |
| − | + | EMT 22 ; Ввод символа с ожиданием | |
| − | + | CMP R0,#33 ; Код Escape ? | |
| − | + | BEQ 101142$ ; Да | |
| − | + | EMT 42 ; Вывод символа | |
| − | + | SUB #60,R0 ; Проверка нажатия <0> - <3> | |
| − | + | BMI 100756$ | |
| − | + | CMP R0,#3 | |
| − | + | BHI 100756$ | |
| − | + | BR 101136$ | |
; Запрос номера кассеты ПЗУ | ; Запрос номера кассеты ПЗУ | ||
| − | 101102$:JSR R4,101616$ ; Позиционирование курсора | + | 101102$:JSR R4,101616$ ; Позиционирование курсора |
| − | + | .BYTE 5,34 | |
| − | + | EMT 22 ; Ввод символа с ожиданием | |
| − | + | CMP R0,#33 ; Код Escape ? | |
| − | + | BEQ 101142$ ; Да | |
| − | + | EMT 42 ; Вывод символа | |
| − | + | SUB #61,R0 ; Проверка нажатия <1>,<2> | |
| − | + | BMI 100756$ | |
| − | + | CMP R0,#1 | |
| − | + | BHI 100756$ | |
| − | 101136$:MOV R0,@SP | + | 101136$:MOV R0,@SP ; Сохранение номера устройства |
| − | + | BR 101004$ | |
| − | 101142$:EMT 22 | + | 101142$:EMT 22 |
| − | + | BR 100750$ | |
| − | 101146$:MOV #14,R0 | + | 101146$:MOV #14,R0 ; Очистка экрана |
| − | + | EMT 42 | |
| − | + | CALL 100254$ ; Восстановить пользовательский режим | |
| − | + | MOV R2,R0 ; Занести номер пункта в буфер клавиатуры | |
| − | + | CALL 104160$ | |
| − | + | MOVB (SP)+,R0 ; Занести номер устройства в буфер клавиатуры | |
| − | + | CALL 104160$ | |
| − | + | CLR @#7072 ; Очистить признак вызова | |
| − | + | RETURN | |
; П/п вывода пунктов меню и запроса номера пункта | ; П/п вывода пунктов меню и запроса номера пункта | ||
| − | 101202$:MOV #-6,@#7150 ; Запрет вывода в верхнюю инф. строку | + | 101202$:MOV #-6,@#7150 ; Запрет вывода в верхнюю инф. строку |
| − | + | MOV R0,-(SP) | |
| − | + | CALL 101446$ ; Вывод пунктов меню | |
| − | + | ADD (SP)+,PC | |
| − | + | BR 101432$ | |
| − | + | BR 101224$ | |
| − | 101224$:MOV @R4,R0 | + | 101224$:MOV @R4,R0 ; Позиционирование курсора |
| − | + | MOV 2(R0),R3 ; R3 = координаты | |
| − | + | DEC R3 | |
| − | + | CALL 101564$ | |
| − | + | MOV @R4,R3 ; R3 = адрес списка | |
| − | 101242$:EMT 22 | + | 101242$:EMT 22 ; Ввод символа с ожиданием |
| − | + | TST R0 ; Нажата УПР-@ ? | |
| − | + | BEQ 101436$ | |
| − | + | CMP R0,#33 ; Символ Escape ? | |
| − | + | BEQ 101306$ | |
| − | + | SUB #60,R0 ; Символы <0> - <9> ? | |
| − | + | BMI 101276$ | |
| − | + | BEQ 101442$ ; Символ <0> ? | |
| − | + | CMP R0,@R3 ; Не превышает номер последнего пункта ? | |
| − | + | BHI 101242$ | |
| − | + | MOV R0,R2 ; R2 = номер выбранного пункта | |
| − | + | BR 101404$ | |
| − | 101276$:ADD #43,R0 | + | 101276$:ADD #43,R0 ; Нажата <Enter> (15(8)-60(8)+43(8)=0) ? |
| − | + | BEQ 101442$ | |
| − | + | BR 101404$ | |
| − | 101306$:EMT 22 | + | 101306$:EMT 22 |
| − | + | SUB #176,R0 ; Нажаты <ПОМ>,<ИСП> или стрелки | |
| − | + | BMI 101242$ | |
| − | + | CMP R0,#6 | |
| − | + | BHIS 101242$ | |
| − | + | ASL R0 | |
| − | + | ADD R0,PC | |
| − | + | BR 101344$ ; <ПОМ> | |
| − | + | BR 101436$ ; <ИСП> | |
| − | + | BR 101362$ ; <Вверх> | |
| − | + | BR 101372$ ; <Вниз> | |
| − | + | BR 101436$ ; <Влево> | |
| − | + | BR 101436$ ; <Вправо> | |
| − | 101344$:MOV #20,R3 | + | 101344$:MOV #20,R3 ; Позиционирование курсора |
| − | + | CALL 101564$ | |
| − | + | EMT 44 ; Вывод краткого хелпинга | |
| − | + | .WORD 103406$ ; Адрес начала хелпинга | |
| − | + | BR 101224$ | |
| − | 101362$:DEC R2 | + | 101362$:DEC R2 ; Уменьшить номер пункта |
| − | + | BGT 101404$ | |
| − | + | MOV @R3,R2 ; R2 = номер последнего пункта | |
| − | + | BR 101404$ | |
| − | 101372$:INC R2 | + | 101372$:INC R2 ; Увеличить номер пункта |
| − | + | CMP R2,@R3 ; Превысил номер последнего пункта ? | |
| − | + | BLOS 101404$ | |
| − | + | MOV #1,R2 | |
| − | 101404$:MOV R2,@4(R3) ; Запомнить номер текущего пункта | + | 101404$:MOV R2,@4(R3) ; Запомнить номер текущего пункта |
| − | + | DEC @4(R3) | |
| − | + | CLR R0 | |
| − | 101416$:TST (R4)+ | + | 101416$:TST (R4)+ |
| − | + | CLR @#7150 ; Разрешение вывода в верхнюю инф. строку | |
| − | + | ASL R2 | |
| − | + | TST R0 | |
| − | + | RTS R4 | |
| − | 101432$:MOV #10,R0 | + | 101432$:MOV #10,R0 |
| − | 101436$:SUB #5,R0 | + | 101436$:SUB #5,R0 |
| − | 101442$:DEC R0 | + | 101442$:DEC R0 |
| − | + | BR 101416$ | |
; П/п вывода пунктов меню | ; П/п вывода пунктов меню | ||
| − | 101446$:CLR @#23164 | + | 101446$:CLR @#23164 ; Запрет использования курсора |
| − | + | MOV @R4,R2 | |
| − | + | MOV (R2)+,-(SP) ; Число пунктов меню | |
| − | + | MOV (R2)+,R3 ; Координаты курсора | |
| − | + | ADD R3,@SP | |
| − | + | MOV @(R2)+,-(SP) ; Номер текущего пункта меню | |
| − | + | ADD R3,@SP | |
| − | + | TST R0 | |
| − | + | BNE 101502$ | |
| − | + | CALL 101564$ ; Курсор в начало экрана | |
| − | + | EMT 44 ; Стирание правой части экрана | |
| − | + | .WORD 103364$ | |
| − | 101502$:CALL 101564$ | + | 101502$:CALL 101564$ |
| − | + | CMP R3,@SP ; Номер выводимого пункта совпадает с текущим ? | |
| − | + | BNE 101516$ | |
| − | + | EMT 44 ; Включить режим инверсии | |
| − | + | .WORD 102124$ | |
| − | 101516$:MOV (R2)+,R1 ; Вывод очередного пункта | + | 101516$:MOV (R2)+,R1 ; Вывод очередного пункта |
| − | + | EMT 46 | |
| − | + | CMP R3,@SP ; Номер выводимого пункта совпадает с текущим ? | |
| − | + | BNE 101532$ | |
| − | + | EMT 44 ; Выключить режим инверсии | |
| − | + | .WORD 102127$ | |
| − | 101532$:INC R3 | + | 101532$:INC R3 ; Переход к очередному пункту |
| − | + | CMP R3,2(SP) ; Вывод завершен ? | |
| − | + | BLO 101502$ ; Нет | |
| − | + | CMP (SP)+,(SP)+ | |
| − | + | MOV @R4,R0 | |
| − | + | MOV @4(R0),R2 ; R2 = номер текущего пункта | |
| − | + | INC R2 | |
| − | + | MOV #2,@#23164 ; Разрешить использование курсора | |
| − | + | RETURN | |
; Следующие две п/п осуществляют позиционирование курсора | ; Следующие две п/п осуществляют позиционирование курсора | ||
; В первой п/п координаты задаются в R3, во второй - в слове, | ; В первой п/п координаты задаются в R3, во второй - в слове, | ||
; которое следует за командой вызова п/п (JSR R4,101616$). | ; которое следует за командой вызова п/п (JSR R4,101616$). | ||
| − | 101564$:MOV @#23150,R5 ; R5 = адрес таблицы видеопараметров | + | 101564$:MOV @#23150,R5 ; R5 = адрес таблицы видеопараметров |
| − | + | MOVB R3,R0 ; R0 = Y (строка) | |
| − | + | CALL 115720$ ; Позиционирование по строке | |
| − | + | SWAB R3 | |
| − | + | MOVB R3,R0 ; R0 = X (столбец) | |
| − | + | CALL 115672$ ; Позиционирование по столбцу | |
| − | + | SWAB R3 | |
| − | + | INC @#7066 ; Установить признак перемещения курсора | |
| − | + | RETURN | |
| − | 101616$:MOV @#23150,R5 ; R5 = адрес таблицы видеопараметров | + | 101616$:MOV @#23150,R5 ; R5 = адрес таблицы видеопараметров |
| − | + | MOVB (R4)+,R0 ; R0 = Y (строка) | |
| − | + | CALL 115720$ ; Позиционирование по строке | |
| − | + | MOVB (R4)+,R0 ; R0 = X (столбец) | |
| − | + | CALL 115672$ ; Позиционирование по столбцу | |
| − | + | INC @#7066 ; Установить признак перемещения курсора | |
| − | + | RTS R4 | |
; СПИСКИ ПУНКТОВ МЕНЮ | ; СПИСКИ ПУНКТОВ МЕНЮ | ||
| Line 375: | Line 377: | ||
; Список главного меню УСТАНОВКА | ; Список главного меню УСТАНОВКА | ||
| − | 101644$:.WORD 10 | + | 101644$:.WORD 10 |
| − | + | .BYTE 4,0 | |
| − | + | .WORD 7152,102165$,102211$,102235$,102261$ | |
| − | + | .WORD 102305$,102331$,102355$,102401$ | |
; Список меню СИСТЕМА КОМАНД | ; Список меню СИСТЕМА КОМАНД | ||
| − | 101672$:.WORD 2 | + | 101672$:.WORD 2 |
| − | + | .BYTE 4,30 | |
| − | + | .WORD 7154,102425$,102445$ | |
; Список меню ФОРМАТ ЭКРАНА | ; Список меню ФОРМАТ ЭКРАНА | ||
| − | 101704$:.WORD 4 | + | 101704$:.WORD 4 |
| − | + | .BYTE 4,30 | |
| − | + | .WORD 7156,102465$,102477$,102511$,102523$ | |
; Список меню ЦВЕТ СИМВОЛА | ; Список меню ЦВЕТ СИМВОЛА | ||
| − | 101722$:.WORD 10 | + | 101722$:.WORD 10 |
| − | + | .BYTE 4,30 | |
| − | + | .WORD 7160,102535$,102562$,102607$,102634$ | |
| − | + | .WORD 102661$,102706$,102733$,102760$ | |
; Список меню ЦВЕТ ЗНАКОМЕСТА | ; Список меню ЦВЕТ ЗНАКОМЕСТА | ||
| − | 101750$:.WORD 10 | + | 101750$:.WORD 10 |
| − | + | .BYTE 4,30 | |
| − | + | .WORD 7162,102535$,102562$,102607$,102634$ | |
| − | + | .WORD 102661$,102706$,102733$,102760$ | |
; Список меню ЦВЕТ ЭКРАНА | ; Список меню ЦВЕТ ЭКРАНА | ||
| − | 101776$:.WORD 10 | + | 101776$:.WORD 10 |
| − | + | .BYTE 4,30 | |
| − | + | .WORD 7164,102535$,102562$,102607$,102634$ | |
| − | + | .WORD 102661$,102706$,102733$,102760$ | |
; Список меню ЦВЕТ КУРСОРА | ; Список меню ЦВЕТ КУРСОРА | ||
| − | 102024$:.WORD 10 | + | 102024$:.WORD 10 |
| − | + | .BYTE 4,30 | |
| − | + | .WORD 7166,102535$,102562$,102607$,102634$ | |
| − | + | .WORD 102661$,102706$,102733$,102760$ | |
; Список меню РУЛОН | ; Список меню РУЛОН | ||
| − | 102052$:.WORD 3 | + | 102052$:.WORD 3 |
| − | + | .BYTE 4,30 | |
| − | + | .WORD 7170,103005$,103024$,103043$ | |
; Список меню ТАЙМЕР | ; Список меню ТАЙМЕР | ||
| − | 102066$:.WORD 2 | + | 102066$:.WORD 2 |
| − | + | .BYTE 4,30 | |
| − | + | .WORD 7172,103062$,103077$ | |
; Список меню ЗАГРУЗКА | ; Список меню ЗАГРУЗКА | ||
| − | 102100$:.WORD 7 | + | 102100$:.WORD 7 |
| − | + | .BYTE 4,2 | |
| − | + | .WORD 7174,103175$,103216$,103237$,103260$ | |
| − | + | .WORD 103301$,103322$,103343$ | |
; Esc-последовательность включения инверсии | ; Esc-последовательность включения инверсии | ||
| − | 102124$:.BYTE 33,243,0 | + | 102124$:.BYTE 33,243,0 |
; Esc-последовательность выключения инверсии | ; Esc-последовательность выключения инверсии | ||
| − | 102127$:.BYTE 33,277,243,0 | + | 102127$:.BYTE 33,277,243,0 |
; Заголовок меню УСТАНОВКА | ; Заголовок меню УСТАНОВКА | ||
| − | 102133$:.BYTE 14,12,40,33,244 | + | 102133$:.BYTE 14,12,40,33,244 |
| − | + | .ASCII /УСТАНОВКА РЕЖИМОВ/ | |
| − | + | .BYTE 33,277,244,0 | |
; Надписи меню УСТАНОВКА | ; Надписи меню УСТАНОВКА | ||
| − | 102165$:.ASCIZ /1 - система команд / | + | 102165$:.ASCIZ /1 - система команд / |
| − | 102211$:.ASCIZ /2 - формат экрана / | + | 102211$:.ASCIZ /2 - формат экрана / |
| − | 102235$:.ASCIZ /3 - цвет символа / | + | 102235$:.ASCIZ /3 - цвет символа / |
| − | 102261$:.ASCIZ /4 - цвет знакоместа/ | + | 102261$:.ASCIZ /4 - цвет знакоместа/ |
| − | 102305$:.ASCIZ /5 - цвет экрана / | + | 102305$:.ASCIZ /5 - цвет экрана / |
| − | 102331$:.ASCIZ /6 - цвет курсора / | + | 102331$:.ASCIZ /6 - цвет курсора / |
| − | 102355$:.ASCIZ /7 - рулон / | + | 102355$:.ASCIZ /7 - рулон / |
| − | 102401$:.ASCIZ /8 - таймер / | + | 102401$:.ASCIZ /8 - таймер / |
; Надписи меню СИСТЕМА КОМАНД | ; Надписи меню СИСТЕМА КОМАНД | ||
| − | 102425$:.ASCIZ /1 - VT-52 / | + | 102425$:.ASCIZ /1 - VT-52 / |
| − | 102445$:.ASCIZ /2 - 15ИЭ-00-013/ | + | 102445$:.ASCIZ /2 - 15ИЭ-00-013/ |
; Надписи меню ФОРМАТ ЭКРАНА | ; Надписи меню ФОРМАТ ЭКРАНА | ||
| − | 102465$:.ASCIZ /1 - 80/<220>/24/ | + | 102465$:.ASCIZ /1 - 80/<220>/24/ |
| − | 102477$:.ASCIZ /2 - 40/<220>/24/ | + | 102477$:.ASCIZ /2 - 40/<220>/24/ |
| − | 102511$:.ASCIZ /3 - 20/<220>/24/ | + | 102511$:.ASCIZ /3 - 20/<220>/24/ |
| − | 102523$:.ASCIZ /4 - 10/<220>/24/ | + | 102523$:.ASCIZ /4 - 10/<220>/24/ |
; Надписи меню ЦВЕТ СИМВОЛА, ЦВЕТ ЗНАКОМЕСТА, ЦВЕТ ЭКРАНА, ЦВЕТ КУРСОРА | ; Надписи меню ЦВЕТ СИМВОЛА, ЦВЕТ ЗНАКОМЕСТА, ЦВЕТ ЭКРАНА, ЦВЕТ КУРСОРА | ||
| − | 102535$:. | + | 102535$:.BYTE '1,40,'-,40,33,240,'0,33,241,'0 |
| − | + | .BYTE 237,237,237,237,33,277,240,33,277,241,0 | |
| − | + | 102562$:.BYTE '2,40,'-,40,33,240,'1,33,241,'1 | |
| − | + | .BYTE 237,237,237,237,33,277,240,33,277,241,0 | |
| + | 102607$:.BYTE '3,40,'-,40,33,240,'2,33,241,'2 | ||
| + | .BYTE 237,237,237,237,33,277,240,33,277,241,0 | ||
| + | 102634$:.BYTE '4,40,'-,40,33,240,'3,33,241,'3 | ||
| + | .BYTE 237,237,237,237,33,277,240,33,277,241,0 | ||
| + | 102661$:.BYTE '5,40,'-,40,33,240,'4,33,241,'4 | ||
| + | .BYTE 237,237,237,237,33,277,240,33,277,241,0 | ||
| + | 102706$:.BYTE '6,40,'-,40,33,240,'5,33,241,'5 | ||
| + | .BYTE 237,237,237,237,33,277,240,33,277,241,0 | ||
| + | 102733$:.BYTE '7,40,'-,40,33,240,'6,33,241,'6 | ||
| + | .BYTE 237,237,237,237,33,277,240,33,277,241,0 | ||
| + | 102760$:.BYTE '8,40,'-,40,33,240,'7,33,241,'7 | ||
| + | .BYTE 237,237,237,237,33,277,240,33,277,241,0 | ||
; Надписи меню РУЛОН | ; Надписи меню РУЛОН | ||
| − | 103005$:.ASCIZ /1 - плавный / | + | 103005$:.ASCIZ /1 - плавный / |
| − | 103024$:.ASCIZ /2 - дискретный/ | + | 103024$:.ASCIZ /2 - дискретный/ |
| − | 103043$:.ASCIZ /3 - выключен / | + | 103043$:.ASCIZ /3 - выключен / |
; Надписи меню ТАЙМЕР | ; Надписи меню ТАЙМЕР | ||
| − | 103062$:.ASCIZ /1 - включен / | + | 103062$:.ASCIZ /1 - включен / |
| − | 103077$:.ASCIZ /2 - выключен/ | + | 103077$:.ASCIZ /2 - выключен/ |
; Заголовок меню ЗАГРУЗКА | ; Заголовок меню ЗАГРУЗКА | ||
| − | 103114$:.ASCII <33><244>/ЗАГРУЗКА/<33><277><244> | + | 103114$:.ASCII <33><244>/ЗАГРУЗКА/<33><277><244> |
| − | + | .BYTE 12,12 | |
| − | + | .REPT 10 | |
| − | + | .BYTE 31 | |
| − | + | .ENDR | |
| − | + | .ASCII /(0/<221>/3): 0/<12> | |
| − | + | .REPT 10 | |
| − | + | .BYTE 32 | |
| − | + | .ENDR | |
| − | + | .ASCIZ /(1,2): 1/ | |
; Надписи меню ЗАГРУЗКА | ; Надписи меню ЗАГРУЗКА | ||
| − | 103175$:.ASCIZ /1 - диск / | + | 103175$:.ASCIZ /1 - диск / |
| − | 103216$:.ASCIZ /2 - кассета ПЗУ / | + | 103216$:.ASCIZ /2 - кассета ПЗУ / |
| − | 103237$:.ASCIZ /3 - сеть / | + | 103237$:.ASCIZ /3 - сеть / |
| − | 103260$:.ASCIZ /4 - стык С2 / | + | 103260$:.ASCIZ /4 - стык С2 / |
| − | 103301$:.ASCIZ /5 - магнитофон / | + | 103301$:.ASCIZ /5 - магнитофон / |
| − | 103322$:.ASCIZ /6 - отладка / | + | 103322$:.ASCIZ /6 - отладка / |
| − | 103343$:.ASCIZ /7 - тестирование/ | + | 103343$:.ASCIZ /7 - тестирование/ |
; Стирание правой части экрана | ; Стирание правой части экрана | ||
| − | 103364$:.REPT 10 | + | 103364$:.REPT 10 |
| − | + | .BYTE 37,35 | |
| − | + | .ENDR | |
| − | + | .BYTE 37,0 | |
; Краткий хелпинг | ; Краткий хелпинг | ||
| − | 103406$:.BYTE 61,221,71,54,200,54,201 | + | 103406$:.BYTE 61,221,71,54,200,54,201 |
| − | + | .ASCII / - выбор элемента/<15><12> | |
| − | + | .BYTE 40,40,203 | |
| − | + | .ASCII / - следующий уровень/<15><12> | |
| − | + | .BYTE 40,40,202 | |
| − | + | .ASCII / - предыдущий уровень/<15><12> | |
| − | + | .ASCIZ /0,/<224>/,ИСП - выход/ | |
| − | + | .EVEN | |
| − | |||
</pre> | </pre> | ||
Latest revision as of 08:32, 13 January 2008
.TITLE ROM
.ASECT
.=100000 ; Начальный адрес ПЗУ
; ********************************************************************
; * *
; * ПОДПРОГРАММЫ ОБСЛУЖИВАНИЯ МЕНЮ УСТАНОВКА И ЗАГРУЗКА *
; * *
; * Адреса 100000 - 103553 *
; * *
; ********************************************************************
; П/п установки начальных значений в меню УСТАНОВКА и ЗАГРУЗКА
100000$:JSR R5,110712$ ; П/п заносит данные из области
.WORD 100012$,7152 ; по адресу 100012 в 7152
RETURN
100012$:.WORD 10. ; Количество слов
.WORD 177701,0,0 ; Пункт УСТ не выбран, VT-52, 80x24
.WORD 7,1,1,7 ; Цвета символа, знакоместа, экрана и курсора
.WORD 0,0 ; Рулон плавный, таймер включен
.WORD 177701 ; Пункт ЗАГРУЗКА не выбран
; П/п обслуживания главного меню УСТАНОВКА
100040$:TST @#23170 ; Ожидание завершения скроллинга
BNE 100040$
MOV @#2476,-(SP) ; Сохранить адрес пользовательского экрана
MOV #4672,@#2476 ; Включить экран установки
MOV #22754,R5 ; Сделать текущей таблицу видеопараметров
CALL 110210$ ; экрана установки
JSR R5,105346$ ; Перевести клавиатуру в системный режим
.WORD 107310$,11054 ; Данные для системного режима
CALL 104054$ ; Очистить буфер клавиатуры
CLR @#7232 ; Разрешение алфавитно-цифровой клавиатуры
MOV SP,@#7142
EMT 52 ; Вывод УСТ в верхней строке
.WORD 107533$
100120$:EMT 44 ; Вывод заголовка
.WORD 102133$
100124$:MOV #4,R0
JSR R4,101202$ ; Вывод меню и запрос пункта
.WORD 101644$ ; Адрес списка для меню УСТАНОВКА
BMI 100172$ ; Нажата <Enter> или УПР-@ ?
CALL @100150$(R2) ; Обслуживание выбранного пункта
BMI 100172$ ; Нажата <Enter> или УПР-@ ?
BR 100124$
; Адреса п/п обслуживания пунктов меню УСТАНОВКА
100150$:.WORD 100172$,100334$,100372$,100432$,100476$
.WORD 100536$,100576$,100630$,100730$
; Если нажаты <Enter> или УПР-@
100172$:CMP R0,#177772 ; Нажата УПР-@ (выход в монитор ПП) ?
BEQ 100302$
MOV @#7142,SP
EMT 52 ; Стирание в верхней строке надписи УСТ
.WORD 107524$
EMT 52
.WORD 107542$
TST @#7146 ; Предыдущий режим клавиатуры был системным ?
BNE 100232$ ; Да
JSR R5,105400$ ; Восстановить пользовательский режим
.WORD 107310$,11054 ; Данные для пользовательского режима
100232$:CALL 110204$ ; Включение пользовательского экрана
MOV (SP)+,@#2476
CLR @#7070 ; Очистить признак вызова
TST @#7072 ; Вызов происходил из меню ЗАГРУЗКА ?
BNE 100300$ ; Да
100254$:MOV #2,@#7230 ; Установить признак выполнения TRAP 2
MOV #2,@#22546 ; Установить признак выполнения TRAP 4
MOV #2,@#7042 ; Адресовать ASCII-коды клавиатуры каналу 0
TRAP 4 ; Прочесть символ с канала 0 (если есть)
100300$:RETURN
100302$:MOV #14,R0 ; Очистить экран
EMT 42
MOV #100120$,-(SP) ; Адрес возврата в меню УСТАНОВКА
MOV SP,@#7144
JMP @#160576 ; Переход к программе монитора ПП
; П/п обслуживания подменю СИСТЕМА КОМАНД
100324$:CALL @100346(R2) ; Вызов п/п по текущему пункту меню
MOV #4,R0
100334$:JSR R4,101202$ ; Вывод подменю и запрос пункта
.WORD 101672$ ; Адрес списка подменю СИСТЕМА КОМАНД
BEQ 100324$
RETURN
; Адреса п/п для обслуживания подменю СИСТЕМА КОМАНД
100346$:.WORD 162572$,113670$,113712$
; П/п обслуживания подменю ФОРМАТ ЭКРАНА
100354$:MOV R2,R0 ; Получение номера формата
ASR R0 ; 0 - 80x24, 1 - 40x24, 2 - 20x24, 3 - 10x24
DEC R0
CALL 116502$ ; Обращение к п/п установки формата экрана
MOV #2,R0
100372$:JSR R4,101202$ ; Вывод меню и запрос пункта
.WORD 101704$ ; Адрес списка подменю ФОРМАТ ЭКРАНА
BEQ 100354$
RETURN
; П/п для обслуживания подменю ЦВЕТ СИМВОЛА
100404$:MOV R2,R0 ; Получение номера цвета
ASR R0
DEC R0
MOV R5,-(SP) ; Сохранить адрес текущей таблицы видеопар.
MOV #22656,R5 ; Загрузить адрес таблицы экрана пользователя
CALL 116052$ ; Обращение к п/п установки цвета символа
MOV (SP)+,R5
MOV #2,R0
100432$:JSR R4,101202$ ; Вывод меню и запрос пункта
.WORD 101722$ ; Адрес списка подменю ЦВЕТ СИМВОЛА
BEQ 100404$
RETURN
; П/п для обслуживания подменю ЦВЕТ ЗНАКОМЕСТА
100444$:MOV R2,R0 ; Получение номера цвета
SUB #2,R0
MOV 113512$(R0),R0
MOV R5,-(SP)
MOV #22656,R5
CALL 116130$ ; Обращение к п/п установки цвета знакоместа
MOV (SP)+,R5
MOV #2,R0
100476$:JSR R4,101202$
.WORD 101750$ ; Адрес списка подменю ЦВЕТ ЗНАКОМЕСТА
BEQ 100444$
RETURN
; П/п для обслуживания подменю ЦВЕТ ЭКРАНА
100510$:MOV R2,R0 ; Получение номера цвета
ASR R0
DEC R0
MOV R5,-(SP)
MOV #22656,R5
CALL 116170$ ; Обращение к п/п установки цвета экрана
MOV (SP)+,R5
MOV #2,R0
100536$:JSR R4,101202$
.WORD 101776$ ; Адрес списка подменю ЦВЕТ ЭКРАНА
BEQ 100510$
RETURN
; П/п для обслуживания подменю ЦВЕТ КУРСОРА
100550$:MOV R2,R0 ; Получение номера цвета
ASR R0
DEC R0
MOV R5,-(SP)
MOV #22656,R5
CALL 116226$ ; Обращение к п/п установки цвета курсора
MOV (SP)+,R5
MOV #2,R0
100576$:JSR R4,101202$
.WORD 102024$ ; Адрес списка подменю ЦВЕТ КУРСОРА
BEQ 100550$
RETURN
; П/п для обслуживания подменю РУЛОН
100610$:MOV R5,-(SP)
MOV #22656,R5
CALL @<100642$-2>(R2); Обращение к п/п-ам установки рулона
MOV (SP)+,R5
MOV #2,R0
100630$:JSR R4,101202$
.WORD 102052$ ; Адрес списка подменю РУЛОН
BEQ 100610$
RETURN
; Адреса п/п-ам для установки рулона
100642$:.WORD 100650$,100656$,100674$
100650$:CLR @#7136 ; Установить плавный рулон
BR 100664$
100656$:MOV #2,@#7136 ; Установить дискретный рулон
100664$:MOV #2,74(R5) ; Установить присутствие рулона
RETURN ; 74 - смещение в таблице видеопараметров
100674$:CLR 74(R5) ; Установить отсутствие рулона
RETURN
; П/п для обслуживания подменю ТАЙМЕР
100702$:BIS #1000,@#177054 ; Выключить таймер в канале ЦП
SUB #2,R2 ; Текущий пункт - включен ?
BNE 100724$ ; Нет
BIC #1000,@#177054 ; Включить таймер в канале ЦП
100724$:MOV #2,R0
100730$:JSR R4,101202$
.WORD 102066$ ; Адреса списка подменю ТАЙМЕР
BEQ 100702$
RETURN
; П/п обслуживания главного меню ЗАГРУЗКА
100742$:CLR @#7042 ; Направлять ASCII-коды запросам EMT 22
CLR -(SP) ; Номер устройства = 0
100750$:MOV #14,R0 ; Очистить экран
EMT 42
100756$:CLR @SP
JSR R4,101616$ ; Позиционирование курсора
.BYTE 2,5 ; Y=2, X=5
MOV #-6,@#7150 ; Запрет вывода в верхнюю инф. строку
CLR @#23164 ; Разрешение использования курсора
EMT 44 ; Вывод заголовка
.WORD 103114$
101004$:MOV #4,R0
JSR R4,101202$ ; Вывод меню и запрос пункта
.WORD 102100$ ; Адрес списка меню ЗАГРУЗКА
BEQ 100756$
BMI 101146$ ; Нажаты <Enter>,<ИСП> или <0> ?
ADD R2,PC ; Переход по номеру пункта (нажата вправо)
BR 100756$
BR 101044$ ; Диск
BR 101102$ ; Кассета ПЗУ
BR 101004$ ; Сеть
BR 101004$ ; Стык С2
BR 101004$ ; Магнитофон
BR 101004$ ; Отладка
BR 101004$ ; Тестирование
; Запрос номера диска
101044$:JSR R4,101616$ ; Позиционирование курсора
.BYTE 4,34
EMT 22 ; Ввод символа с ожиданием
CMP R0,#33 ; Код Escape ?
BEQ 101142$ ; Да
EMT 42 ; Вывод символа
SUB #60,R0 ; Проверка нажатия <0> - <3>
BMI 100756$
CMP R0,#3
BHI 100756$
BR 101136$
; Запрос номера кассеты ПЗУ
101102$:JSR R4,101616$ ; Позиционирование курсора
.BYTE 5,34
EMT 22 ; Ввод символа с ожиданием
CMP R0,#33 ; Код Escape ?
BEQ 101142$ ; Да
EMT 42 ; Вывод символа
SUB #61,R0 ; Проверка нажатия <1>,<2>
BMI 100756$
CMP R0,#1
BHI 100756$
101136$:MOV R0,@SP ; Сохранение номера устройства
BR 101004$
101142$:EMT 22
BR 100750$
101146$:MOV #14,R0 ; Очистка экрана
EMT 42
CALL 100254$ ; Восстановить пользовательский режим
MOV R2,R0 ; Занести номер пункта в буфер клавиатуры
CALL 104160$
MOVB (SP)+,R0 ; Занести номер устройства в буфер клавиатуры
CALL 104160$
CLR @#7072 ; Очистить признак вызова
RETURN
; П/п вывода пунктов меню и запроса номера пункта
101202$:MOV #-6,@#7150 ; Запрет вывода в верхнюю инф. строку
MOV R0,-(SP)
CALL 101446$ ; Вывод пунктов меню
ADD (SP)+,PC
BR 101432$
BR 101224$
101224$:MOV @R4,R0 ; Позиционирование курсора
MOV 2(R0),R3 ; R3 = координаты
DEC R3
CALL 101564$
MOV @R4,R3 ; R3 = адрес списка
101242$:EMT 22 ; Ввод символа с ожиданием
TST R0 ; Нажата УПР-@ ?
BEQ 101436$
CMP R0,#33 ; Символ Escape ?
BEQ 101306$
SUB #60,R0 ; Символы <0> - <9> ?
BMI 101276$
BEQ 101442$ ; Символ <0> ?
CMP R0,@R3 ; Не превышает номер последнего пункта ?
BHI 101242$
MOV R0,R2 ; R2 = номер выбранного пункта
BR 101404$
101276$:ADD #43,R0 ; Нажата <Enter> (15(8)-60(8)+43(8)=0) ?
BEQ 101442$
BR 101404$
101306$:EMT 22
SUB #176,R0 ; Нажаты <ПОМ>,<ИСП> или стрелки
BMI 101242$
CMP R0,#6
BHIS 101242$
ASL R0
ADD R0,PC
BR 101344$ ; <ПОМ>
BR 101436$ ; <ИСП>
BR 101362$ ; <Вверх>
BR 101372$ ; <Вниз>
BR 101436$ ; <Влево>
BR 101436$ ; <Вправо>
101344$:MOV #20,R3 ; Позиционирование курсора
CALL 101564$
EMT 44 ; Вывод краткого хелпинга
.WORD 103406$ ; Адрес начала хелпинга
BR 101224$
101362$:DEC R2 ; Уменьшить номер пункта
BGT 101404$
MOV @R3,R2 ; R2 = номер последнего пункта
BR 101404$
101372$:INC R2 ; Увеличить номер пункта
CMP R2,@R3 ; Превысил номер последнего пункта ?
BLOS 101404$
MOV #1,R2
101404$:MOV R2,@4(R3) ; Запомнить номер текущего пункта
DEC @4(R3)
CLR R0
101416$:TST (R4)+
CLR @#7150 ; Разрешение вывода в верхнюю инф. строку
ASL R2
TST R0
RTS R4
101432$:MOV #10,R0
101436$:SUB #5,R0
101442$:DEC R0
BR 101416$
; П/п вывода пунктов меню
101446$:CLR @#23164 ; Запрет использования курсора
MOV @R4,R2
MOV (R2)+,-(SP) ; Число пунктов меню
MOV (R2)+,R3 ; Координаты курсора
ADD R3,@SP
MOV @(R2)+,-(SP) ; Номер текущего пункта меню
ADD R3,@SP
TST R0
BNE 101502$
CALL 101564$ ; Курсор в начало экрана
EMT 44 ; Стирание правой части экрана
.WORD 103364$
101502$:CALL 101564$
CMP R3,@SP ; Номер выводимого пункта совпадает с текущим ?
BNE 101516$
EMT 44 ; Включить режим инверсии
.WORD 102124$
101516$:MOV (R2)+,R1 ; Вывод очередного пункта
EMT 46
CMP R3,@SP ; Номер выводимого пункта совпадает с текущим ?
BNE 101532$
EMT 44 ; Выключить режим инверсии
.WORD 102127$
101532$:INC R3 ; Переход к очередному пункту
CMP R3,2(SP) ; Вывод завершен ?
BLO 101502$ ; Нет
CMP (SP)+,(SP)+
MOV @R4,R0
MOV @4(R0),R2 ; R2 = номер текущего пункта
INC R2
MOV #2,@#23164 ; Разрешить использование курсора
RETURN
; Следующие две п/п осуществляют позиционирование курсора
; В первой п/п координаты задаются в R3, во второй - в слове,
; которое следует за командой вызова п/п (JSR R4,101616$).
101564$:MOV @#23150,R5 ; R5 = адрес таблицы видеопараметров
MOVB R3,R0 ; R0 = Y (строка)
CALL 115720$ ; Позиционирование по строке
SWAB R3
MOVB R3,R0 ; R0 = X (столбец)
CALL 115672$ ; Позиционирование по столбцу
SWAB R3
INC @#7066 ; Установить признак перемещения курсора
RETURN
101616$:MOV @#23150,R5 ; R5 = адрес таблицы видеопараметров
MOVB (R4)+,R0 ; R0 = Y (строка)
CALL 115720$ ; Позиционирование по строке
MOVB (R4)+,R0 ; R0 = X (столбец)
CALL 115672$ ; Позиционирование по столбцу
INC @#7066 ; Установить признак перемещения курсора
RTS R4
; СПИСКИ ПУНКТОВ МЕНЮ
; Структура списка:
; первое слово - число пунктов меню
; второе слово - координаты курсора
; третье слово - адрес ячейки, в которой сохраняется номер тек. пункта
; далее - адреса надписей пунктов меню
; Список главного меню УСТАНОВКА
101644$:.WORD 10
.BYTE 4,0
.WORD 7152,102165$,102211$,102235$,102261$
.WORD 102305$,102331$,102355$,102401$
; Список меню СИСТЕМА КОМАНД
101672$:.WORD 2
.BYTE 4,30
.WORD 7154,102425$,102445$
; Список меню ФОРМАТ ЭКРАНА
101704$:.WORD 4
.BYTE 4,30
.WORD 7156,102465$,102477$,102511$,102523$
; Список меню ЦВЕТ СИМВОЛА
101722$:.WORD 10
.BYTE 4,30
.WORD 7160,102535$,102562$,102607$,102634$
.WORD 102661$,102706$,102733$,102760$
; Список меню ЦВЕТ ЗНАКОМЕСТА
101750$:.WORD 10
.BYTE 4,30
.WORD 7162,102535$,102562$,102607$,102634$
.WORD 102661$,102706$,102733$,102760$
; Список меню ЦВЕТ ЭКРАНА
101776$:.WORD 10
.BYTE 4,30
.WORD 7164,102535$,102562$,102607$,102634$
.WORD 102661$,102706$,102733$,102760$
; Список меню ЦВЕТ КУРСОРА
102024$:.WORD 10
.BYTE 4,30
.WORD 7166,102535$,102562$,102607$,102634$
.WORD 102661$,102706$,102733$,102760$
; Список меню РУЛОН
102052$:.WORD 3
.BYTE 4,30
.WORD 7170,103005$,103024$,103043$
; Список меню ТАЙМЕР
102066$:.WORD 2
.BYTE 4,30
.WORD 7172,103062$,103077$
; Список меню ЗАГРУЗКА
102100$:.WORD 7
.BYTE 4,2
.WORD 7174,103175$,103216$,103237$,103260$
.WORD 103301$,103322$,103343$
; Esc-последовательность включения инверсии
102124$:.BYTE 33,243,0
; Esc-последовательность выключения инверсии
102127$:.BYTE 33,277,243,0
; Заголовок меню УСТАНОВКА
102133$:.BYTE 14,12,40,33,244
.ASCII /УСТАНОВКА РЕЖИМОВ/
.BYTE 33,277,244,0
; Надписи меню УСТАНОВКА
102165$:.ASCIZ /1 - система команд /
102211$:.ASCIZ /2 - формат экрана /
102235$:.ASCIZ /3 - цвет символа /
102261$:.ASCIZ /4 - цвет знакоместа/
102305$:.ASCIZ /5 - цвет экрана /
102331$:.ASCIZ /6 - цвет курсора /
102355$:.ASCIZ /7 - рулон /
102401$:.ASCIZ /8 - таймер /
; Надписи меню СИСТЕМА КОМАНД
102425$:.ASCIZ /1 - VT-52 /
102445$:.ASCIZ /2 - 15ИЭ-00-013/
; Надписи меню ФОРМАТ ЭКРАНА
102465$:.ASCIZ /1 - 80/<220>/24/
102477$:.ASCIZ /2 - 40/<220>/24/
102511$:.ASCIZ /3 - 20/<220>/24/
102523$:.ASCIZ /4 - 10/<220>/24/
; Надписи меню ЦВЕТ СИМВОЛА, ЦВЕТ ЗНАКОМЕСТА, ЦВЕТ ЭКРАНА, ЦВЕТ КУРСОРА
102535$:.BYTE '1,40,'-,40,33,240,'0,33,241,'0
.BYTE 237,237,237,237,33,277,240,33,277,241,0
102562$:.BYTE '2,40,'-,40,33,240,'1,33,241,'1
.BYTE 237,237,237,237,33,277,240,33,277,241,0
102607$:.BYTE '3,40,'-,40,33,240,'2,33,241,'2
.BYTE 237,237,237,237,33,277,240,33,277,241,0
102634$:.BYTE '4,40,'-,40,33,240,'3,33,241,'3
.BYTE 237,237,237,237,33,277,240,33,277,241,0
102661$:.BYTE '5,40,'-,40,33,240,'4,33,241,'4
.BYTE 237,237,237,237,33,277,240,33,277,241,0
102706$:.BYTE '6,40,'-,40,33,240,'5,33,241,'5
.BYTE 237,237,237,237,33,277,240,33,277,241,0
102733$:.BYTE '7,40,'-,40,33,240,'6,33,241,'6
.BYTE 237,237,237,237,33,277,240,33,277,241,0
102760$:.BYTE '8,40,'-,40,33,240,'7,33,241,'7
.BYTE 237,237,237,237,33,277,240,33,277,241,0
; Надписи меню РУЛОН
103005$:.ASCIZ /1 - плавный /
103024$:.ASCIZ /2 - дискретный/
103043$:.ASCIZ /3 - выключен /
; Надписи меню ТАЙМЕР
103062$:.ASCIZ /1 - включен /
103077$:.ASCIZ /2 - выключен/
; Заголовок меню ЗАГРУЗКА
103114$:.ASCII <33><244>/ЗАГРУЗКА/<33><277><244>
.BYTE 12,12
.REPT 10
.BYTE 31
.ENDR
.ASCII /(0/<221>/3): 0/<12>
.REPT 10
.BYTE 32
.ENDR
.ASCIZ /(1,2): 1/
; Надписи меню ЗАГРУЗКА
103175$:.ASCIZ /1 - диск /
103216$:.ASCIZ /2 - кассета ПЗУ /
103237$:.ASCIZ /3 - сеть /
103260$:.ASCIZ /4 - стык С2 /
103301$:.ASCIZ /5 - магнитофон /
103322$:.ASCIZ /6 - отладка /
103343$:.ASCIZ /7 - тестирование/
; Стирание правой части экрана
103364$:.REPT 10
.BYTE 37,35
.ENDR
.BYTE 37,0
; Краткий хелпинг
103406$:.BYTE 61,221,71,54,200,54,201
.ASCII / - выбор элемента/<15><12>
.BYTE 40,40,203
.ASCII / - следующий уровень/<15><12>
.BYTE 40,40,202
.ASCII / - предыдущий уровень/<15><12>
.ASCIZ /0,/<224>/,ИСП - выход/
.EVEN