> Ткни мне ей?
http://petersplus.ru/sprinter/arhitecture.htm
и вот еще цитата из форума:
Функции для работы с экраном:
Сейчас DOS поддерживает четыре режима экрана.
Два текстовых:
40x32 символов c 16 цветами (режим 02h);
80x32 символов c 16 цветами (режим 03h);
и два графических:
320x256 точек с 256 цветами (режим 81h);
640x256 точек с 16 цветами (режим 82h);
Основным режимом является текстовый режим 80x32 (03h), если вашапрограмма
работает в другом режиме, то вам следует перед переключением режимаполучить
номер текущего режима функцией 51h GETVMOD и сохранить его, а передзавершением
программы восстановить его.
Например:
LD C,51h ;получить режим экрана
RST 10h
LD C,A ;поместить номер режима экрана в регистр C
PUSH BC ;и сохранить на стеке (B - страница, C - режим)
.
. ;ваша программа
.
POP BC ;взять со стека режим экрана
LD A,C ;поместить номер режима экрана в регистр A
LD C,50h ;установить режим экрана
RST 10h
LD C,41h ;завершить программу.
RST 10h
DSS имеет функции вывода на текстовый экран символов и символьных строк.Для
графических режимов требуются собственные процедуры вывода на экран.Например,
при завершении программы вы можете выдать строку на текстовый экран:
LD HL,STRING ;указатель на строку символов
LD C,5Ch ;вывод строки символов
RST 10h
STRING DB "Thank you for using my program..." ;текстовая строка
DB 13,10 ;символы возврата каретки и перевода строки
DB 0 ;символ конца строки
Для вывода на графический экран, вам необходимо подключить видео память водно
из трех окон памяти 04000h-07FFFh, 08000h-0BFFFh, 0C000h-0FFFFh. Этоосуществля-
ется выводом значения 50h в соответствующий порт 0A2h, 0C2h или 0E2h в
зависимости от окна памяти. При подключении обратите внимание на то, чтобыстек
вашей программы не попадал в это адресное пространство.
Например, если вам нужно поставить точку на экране, то подпрограмма длярежима
81h будет выглядеть так:
; HL - горизонтальная координата
; DE - вертикальная координата
IN A,(0E2h) ;считать из порта номер страницы подключенной в
;третье окно памяти
LD C,A ;запомнить в регистре C
LD A,50h ;страница видео памяти
OUT (0E2h),A ;подключение видео памяти
LD A,E ;поместить вертикальную координату в регистр A.
OUT (89h),A ;выдать в порт
LD DE,0C000h ;адрес начала третьего окна памяти
ADD HL,DE ;получить адрес точки (адрес начала окна +
;горизонтальная координата)
LD A,255 ;цвет выводимой точки (от 0 до 255)
LD (HL),A ;вывод точки на экран
LD A,C ;вспомнить номер страницы памяти
OUT (0E2h) ;подключить страницу памяти вместо страницы видео
;памяти
Перед выводом точек следует установить необходимые цвета в палитре.Различные
режимы вывода на экран задаются номером видео страницы от 50h до 5Fh.Подробнее
о режимах вывода вы можете прочитать в описании архитектуры компьютера.
50h (80) SETVMOD (Выбор режима экрана)
входные данные:
A - режим экрана
02h - текстовый 40x32x16 цветов
03h - текстовый 80x32x16 цветов
81h - графический 320x256x256 цветов
82h - графический 640x256x16 цветов
B - страница экрана 0/1
C - 50h
выходные данные:
A - код ошибки, если CF=1
Функция устанавливает режим экрана. Седьмой бит режима экрана установлен
для графических режимов и сброшен для текстовых. Существуют два текстовыхрежима
и два графических.
51h (81) GETVMOD (Получить текущий режим экрана)
входные данные:
C - 51h
выходные данные:
A - текущий режим экрана
B - страница экрана 0/1
Функция возвращает текущий режим экрана и номер страницы экрана.
Alexander Shabarshin (shaos@mail.ru)
NedoPC Project
|