
Сообщение от
norduk
Может быть есть какие-то куски примеров кода как инициализировать графический режим АТМки 320x200x16, как установить палитру, как нарисовать точку или что-то вроде того (или исходники какие-нибудь)?
Ну, давай начнем просто с включения режима 320х200 (остальное как-нибудь в следующий раз):
Код:
;включение графического режима 320х200 в ATM-turbo 2+ из обычной конфигурации TR-DOS:
LD A,%10101000 ;биты 4-7 обязательны именно в таком
;виде, бит 3=1 – турбо включено
;биты 0-2 код экрана - %000 – режим 320x200
;соответственно %10100000 тоже самое, но с
;выключенной турбой, а %10101011 – ZX-экран
LD BC,retadr ;адрес возврата из TR-DOS
PUSH BC ;на стек
LD BC, #2A53 ;адрес подпрограммы в TR-DOS с командой OUT (C),A:RET
PUSH BC ;на стек
LD BC, #FF77 ;скрытый системный порт ATM
JP # 3D2F ;переходим в TR-DOS для доступа к скрытому порту
retadr … ;здесь продолжается программа пользователя
;включение графического режима 320х200 в ATM-turbo 2+ из ОС TASiS:
XOR A ;задание режима системному вызову на получение
INC A ; в HL’ адрес спецблока системных переменных OS TASiS
LD C,#79 ;задаем номер системного вызова(рестарта) $PAL
RST #10 ;получаем их адрес
EXX
PUSH HL
POP IX ;перекидываем адрес блока в индексный регистр
LD A, %10101011 ;задаем экран 320х200 (значение байта точно как и выше)
LD (IX+55),A ;ставим номер экрана в «экранную» переменную
XOR A ;режим «восстановления» для следующего рестарта
LD BC,#007B ;рестарт #7B $set_pg (в регистре B один из режимов работы)
RST #10 ;меняем экран
… ;продолжение программы пользователя
P.S. В этом примере изменится экран только в программе пользователя, а при выходе из нее в систему
восстановится «системный» экран (сейчас по умолчанию текстовый). Чтобы поменять системный экран,
используйте (IX+54).