Есть такое.
Любопытно глянуть на практике
Любопытно, не более
Опоздало лет на 40
Самая безрассудная доработка
Есть такое.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
А как-же это: Радио-86РК на 8088 (или 8086) ?
max232cpe (08.03.2024)
Итак, основная работа над изменением Монитора практически завершена.
Подпрограммы вывода на экран
- CALL F809 выводит символ на экран из регистра C
- CALL F80F выводит символ на экран из регистра A (как в «Орионе»)
- CALL F815 выводит байт на экран, сохраняя все регистры
- CALL F818 выводит текст на экран с утерей регистра A (завершение строки по 00 или >128)
Код подпрограммы вывода символа на экран полностью переписан, поддерживает пользовательский буфер и оконность.
Рабочие ячейки:Тем самым, подпрограмма Монитора уже поддерживает оконность (от 1x1 до 80x64) и может полноценно работать с буфером в любом месте ОЗУ. Исключения составляют только коды:Код:CONADR: EQU 07600H ; Адрес символа под курсором в памяти; CONPOS: EQU 07602H ; Координаты позиции X,Y курсора на экране; CON@PX: EQU 07602H ; Консольная позиция курсора по X; CON@PY: EQU 07603H ; Консольная позиция курсора по Y; CONSTA: EQU 07604H ; Консольный статус в Escape-последовательности; CONLEN: EQU 0760FH ; Ширина одного знакоряда в настройках ИМС ВГ75 (стандарт: 78); CONORG: EQU 07610H ; Консольный организатор окна с позицией X1,Y1 относительно начала буфера; CON@XO: EQU 07610H ; Консольная абсолютная позиция окна по горизонтали (стандарт: 8); CON@YO: EQU 07611H ; Консольная абсолютная позиция окна по вертикали (стандарт: 3); CONBOX: EQU 07612H ; Относительный размер бокса ограничителя окна на экране (стандарт: 63x24); CON@XS: EQU 07612H ; Относительный размер окна по горизонтали с указанием крайнего правого столбца (стандарт: 63); CON@YS: EQU 07613H ; Относительный размер окна по вертикали с указанием крайней нижней строки (стандарт: 24)
- 19 - Перемещает позицию курсора лишь до верхней основной строки окна, затем - прокручивает область вниз;
- 1B - Помимо установки курсора в нужную позицию по Escape-команде «Y», все остальные комбинации перенаправляет в драйвер пользователя, вызываемый через ловушку;
- 1F/0C - Перезапускают ВТ57/ВГ75 в стандартный режим 78x30 в буфере 76D0…7FF3 с окном 64x25 в позиции 8,3;
- 1F - Очищает буфер 76D0…7FFF и перезапускает ВТ57/ВГ75 на стандартный режим
Подпрограмма управления режимом экрана
Для переключения режима ВТ57 и ВГ75 достаточно в HL загрузить адрес на таблицу с описанием режима и вызвать подпрограмму F83C.
Естественно, служебные ячейки с параметрами окна нужно корректировать непосредственно.
Ниже - сам образ ПЗУ Монитора и подгружаемый файл с режимом 80x64.
После запуска программы с переходом по G0 режим экрана переключается и управление возвращается Монитору, что позволяет использовать все директивы в установленном режиме: Даже директивы «I» и «O»!
Выход из режима, как выше и говорилось, клавиша «Стр» или «Home»…
P.S.: Пришлось пожертвовать директивами «X» и «C»… :roll:
Для запуска игры «Volcano» следует сначала обнулить ячейки 03EA и 03EE…
Электроника КР-03; ZX-Spectrum "Ленинград-48"; Atari-130XE; Поиск-1...
Не совсем уместный вопрос...
Сколько страниц памяти доступно для рк с минимальными изменениями?
Минимальные изменения, предлагаемые здесь?
Конкретно данный вариант Монитора разрабатывается под одну страницу объёмом в 65536 байтов (пользователь имеет доступ ко всем 65536 ячейкам).Код:ПАМЯТЬ ПОД БСВВ / ДОС (PC>DFFF) ПАМЯТЬ ПОЛЬЗОВАТЕЛЯ (PC<E000) FFFF +-------------------------+ FFFF +-------------------------+ | ПЗУ "МОНИТОР" / ПДП | | | F800 +-------------------------+ | ОЗУ | | ПЗУ #2 / РЕГИСТРЫ КНГМД | | ПОЛЬЗОВАТЕЛЯ | F000 +-------------------------+ | (ТОЛЬКО ДАННЫЕ) | | ПЗУ "ДОС" | | | E000 +-------------------------+ E000 +-------------------------+ | ВГ75 | | | C000 +-------------------------+ | ОЗУ | | D14 ВВ55 | | ПОЛЬЗОВАТЕЛЯ | A000 +-------------------------+ | (ПРОГРАММЫ И ДАННЫЕ) | | D20 ВВ55 | | | 8000 +-------------------------+ 8000 +-------------------------+ | БУФЕР ЭКРАНА | | БУФЕР ЭКРАНА | 76D0 +-------------------------+ 76D0 +-------------------------+ | РАБОЧИЕ ЯЧЕЙКИ МОНИТОРА | | РАБОЧИЕ ЯЧЕЙКИ МОНИТОРА | 7600 +-------------------------+ 7600 +-------------------------+ | | | | | ОЗУ | | ОЗУ | | | | | | ПОЛЬЗОВАТЕЛЯ | | ПОЛЬЗОВАТЕЛЯ | | | | | | (ПРОГРАММЫ И ДАННЫЕ) | | (ПРОГРАММЫ И ДАННЫЕ) | | | | | 0000 +-------------------------+ 0000 +-------------------------+
То есть, код пользователя видит только одно сплошное ОЗУ и к УВВ прямого доступа не имеет. Только через вызовы подпрограмм Монитора F836/F839/F83C приложение может читать УВВ, писать в УВВ и менять режим ВТ57/ВГ75.
С другой стороны, сам код Монитора не видит верхние 32 Кб непосредственно, но директивы D/F/L/S/T через трюковые механизмы получают доступ ко всем 64 Кб.
(Директивы I и O пока ещё не переработал: Они не видят верхние 32 Кб ОЗУ. То есть «OF800,FFFF» выгрузит содержимое ПЗУ Монитора, а не ОЗУ…)
Последний раз редактировалось Alikberov; 09.03.2024 в 08:50.
Электроника КР-03; ZX-Spectrum "Ленинград-48"; Atari-130XE; Поиск-1...
Область 8000-DFFF заявлена как "программы и данные", однако триггер устанавливается по значению только одного бита А15. Какой будет использован дешифратор, если программа будет выполняться в данной области?
Может необходимо добавить еще элемент И для А13-А15?
- - - Добавлено - - -
Может второй дешифратор и не нужен вовсе?
В рамках доработки rk86.ru я дополнил скрипт с проверкой на «cpu.pc < 0x8000»…
Однако, Виктор Пыхонин помог в плане сборки Emu80 с поддержкой переключений и в рамках «ночной сборки Emu80» конфигурация позволяет использовать память 0000…DFFF полностью под код также, как и "заявленно".
(В рамках rk86.ru я специально себя ограничил.)
А так, элемент К155ЛИ3 может помочь получить исполнение кода до самых DFFF.Второй ИД7 упоминается лишь формально, так как с заменой РУ6 на РУ5 выборка ОЗУ должна производиться минуя ИД7, так как на ТМ2 перекладывается эта функция
Электроника КР-03; ZX-Spectrum "Ленинград-48"; Atari-130XE; Поиск-1...
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)