
Сообщение от
Serebriakov
Сообщение от ivagor:
В Бейсике 1.1 можно использовать POKE (в 2.0 они тоже сработают)
POKE&HFB3A,PEEK(&HFB3A)AND251 - основной знакогенератор
POKE&HFB3A,PEEK(&HFB3A)OR4 - альтернативный знакогенератор
Этим способом получилось. Очень интересно, как вы его нашли? Как нашли адрес в памяти и почему к нему применяются именно эти логические операции? Они накладывают какую-то определенную битовую маску? Действительно очень интересно.
В документации ч*рт ногу сломит... Даташиты писать не умели..
Код:
; Системный регистр вместе с регистром цвета и
; цветовой таблицей (см. ниже) располагается в стра-
; нице, начальное смещение которой определяется па-
; раметром RGBASE, способным принимать одно из 4
; значений:
RGBASE1 EQU 3A00H ; в TRS80 и ROMB2
RGBASE2 EQU 0FA00H ; в ROMB1, ODOSA, NDOS и BASIC
RGBASE3 EQU 0FF00H ; в DOSA и DOSG1
RGBASE4 EQU 0BF00H ; в BASG
SYSREG EQU 7FH ; Относительный адрес
; системного регистра
Ок, понятно, - регистры
Код:
; Адреса остальных регистров, представляющих собой
; порты периферийных БИС, сведены в одну страницу,
; начальный адрес которой PBASE может принимать одно
; из 3 значений:
PBASE1 EQU 3B00H ; в TRS80 и ROMB2
PBASE2 EQU 0FB00H ; в ROMB1, ODOSA, NDOS и BASIC
PBASE3 EQU 0FE00H ; в DOSA и DOSG1
Тоже понятно, - порты
Код:
; КОНТРОЛЛЕР ОТОБРАЖЕНИЯ АЛФАВИТНО-ЦИФРОВОЙ ИНФОРМАЦИИ
.....................................................
VIBASE1 EQU 3C00H ; Начальный адрес АЦЗУ в конфигурациях
; TRS80 и ROMB2
VIBASE2 EQU 0FC00H ; Начальный адрес АЦЗУ в конфигурациях
; ROMB1, ODOSA, NDOS и BASIC
Тоже понятно..
А это как понимать???
Код:
VIREG EQU 3AH ; Относительный адрес регистра управления
; отображением
VISTS EQU 38H ; Относительный адрес регистра состояния
; атрибута видеоинверсии
Почему описаны как регистры? Они же в 0FB00H.
Код:
; Константы для работы с регистрами
ATRMSK EQU 8 ; Маска атрибута видеоинверсии
VBLMSK EQU 2 ; Маска кадрового гасящего импульса
FONT1 EQU 4 ; Выбор альтернативного набора
; символов в знакогенераторе
LARGE EQU 8 ; Режим отображения расширенных
; символов (32 символа в строке)
ATRSET EQU 10H ; Установка бита атрибута
ATRRES EQU 20H ; Сброс бита атрибута
ATRFRE EQU 30H ; Сохранение состояния атрибута
; и условие чтения атрибута
Свалили в кучу...
Код:
; Константы для работы с регистрами
ATRMSK EQU 8 ; Маска атрибута видеоинверсии
VBLMSK EQU 2 ; Маска кадрового гасящего импульса
ATRSET EQU 10H ; Установка бита атрибута
ATRRES EQU 20H ; Сброс бита атрибута
ATRFRE EQU 30H ; Сохранение состояния атрибута
; и условие чтения атрибута
Это биты VISTS EQU 38H
Код:
FONT1 EQU 4 ; Выбор альтернативного набора
; символов в знакогенераторе
LARGE EQU 8 ; Режим отображения расширенных
; символов (32 символа в строке)
А это биты VIREG EQU 3AH
Дальше
Код:
; КОНТРОЛЛЕР ОТОБРАЖЕНИЯ ГРАФИЧЕСКОЙ ИНФОРМАЦИИ
..................................
PAGREG EQU VIREG ; Адрес регистра выбора страниц
VPAGE0 EQU 00000000B ; Выбор 0 страницы отображения
VPAGE1 EQU 00000001B ; Выбор 1 страницы отображения
VPAGE2 EQU 00000010B ; Выбор 2 страницы отображения
VPAGE3 EQU 00000011B ; Выбор 3 страницы отображения
RWPAG0 EQU 00000000B ; Выбор 0 страницы чтения/записи
RWPAG1 EQU 01000000B ; Выбор 1 страницы чтения/записи
RWPAG2 EQU 10000000B ; Выбор 2 страницы чтения/записи
RWPAG3 EQU 11000000B ; Выбор 3 страницы чтения/записи
О, АЦЗУ и ГЗУ конфигурится одним портом (PAGREG EQU VIREG)
Код:
LUT EQU 0FBH ; Адрес таблицы присвоения цветов
; (относительный)
; При записи в LUT биты D0...D3 задают номер одной из 16
; строк таблицы, а D4...D7 - содержимое этой строки.
; D3 соответствует АЦЗУ, D2 - слою ГЗУ #2, D1 - слою #1,
; D0 - слою #0; D7 задает интенсивность (яркость),
; D6 - наличие красного цвета, D5 - зеленого цвета, D4 -
; синего цвета.
С этим разобрались.. более-менее.