а курсор кстати софтовый будет? на прерывании висеть мигать?
Вид для печати
а курсор кстати софтовый будет? на прерывании висеть мигать?
Да, в обработчике прерывания будет вызываться функция мигания курсора.
---------- Post added at 15:46 ---------- Previous post was at 15:42 ----------
Вот ты это зря. Я столько раз пользовался и пользуюсь выводить символы в
HEX виде, это очень удобно со времен РКшки. :)
А функции преобразования можно отдельно забубенить. :)
---------- Post added at 15:48 ---------- Previous post was at 15:46 ----------
Про первую не скажу, а вторая реально может использоваться если например, хочешь проинвертировать символ. Грубо говоря менять менюшки непосредственно в экранной памяти - т.е. не нужно в буфере меню еще раз отрисовывать :)
Mick, а что это значит "символ в HEX виде"? Я думал, это опечатка.
Первая используется в любом оконном драйвере открывающем и, что принципиально, закрывающем окна с возвращением фокуса (в примитиве - курсора) туда, откуда он был сорван.
Вторая может использоваться в том же драйвере для прочитывания "подоконного" экранного ОЗУ используемого в момент закрытия окна (восстановления нижнего плана), если для этого не будет отдельной функции (ибо читать по символу да еще каждый раз выставляя курсор - тормознуто).
Да, это было бы правильно. Но и чтение единичного символа под курсором все равно надо тоже оставить. Такая функция есть во многих реализациях VT-52/VT-100. Вдруг кто-то на базе БИОСа напишет эти подгружаемые драйвера.
И хорошо бы векторизировать подпрограммы БИОСа (т.е. при старте в ОЗУ инициализировать керналь через которую пропускать вызовы)
Это можно сделать.
Так вот обновленный список функций RST 10h
Код:;---------------------------------------------------------------------
; Функция 00h - Инициализация видеодрайвера
;---------------------------------------------------------------------
; Входные параметры: A = 00h
; Выходные параметры: нет
; Описание: Происходит инициализация драйвера видеоконтроллера.
; Устанавливается 1 видеостраница, отображение экрана происходит
; в адресах 2000....3FFFh. Происходит очистка экрана и установка
; цвета символов и фона по умолчанию, а именно белые буквы на черном фоне
; Курсор устанавливается в левый верхний угол (координаты 0,0).
; Курсор при этом выключен (не отображается)
;--------------------------------------------------------------------
; Функция 01h - Установка режима работы курсора
;---------------------------------------------------------------------
; Входные параметры: A = 01h
; C = 00h - курсор выключен,
; 01h - курсор включен (мерцает)
; Выходные параметры: нет
; Описание: Происходит установка режима работы курсора. Если курсор
; включен, то текущее знакоместо будет мерцать (происходит попеременное
; влючение/выключение инверсии символа)
;--------------------------------------------------------------------
; Функция 02h - Чтение режима работы курсора
;---------------------------------------------------------------------
; Входные параметры: A = 02h
; Выходные параметры: С = текущий режим работы курсора
; Описание: Происходит чтение текущего значения режима работы курсора
; (выключен или включен).
;--------------------------------------------------------------------
; Функция 03h - Установка позиции курсора
;---------------------------------------------------------------------
; Входные параметры: A = 03h
; B = позиция по Y (вертикали), с значениями 0...24
; С = позиция по X (горизонтали), с значениями 0...79
; Выходные параметры: нет
; Описание: Происходит установка новой позиции курсора. После этого
; вывод символьной информации будет осуществлятся с новой позиции курсора
;--------------------------------------------------------------------
; Функция 04h - Чтение текущей позиции курсора
;---------------------------------------------------------------------
; Входные параметры: A = 04h
; Выходные параметры: текущая позиция курсора
; B = позиция по Y (вертикали)
; С = позиция по X (горизонтали)
; Описание: Происходит чтение текущей позиции курсора.
;--------------------------------------------------------------------
; Функция 05h - Установка цвета символов
;---------------------------------------------------------------------
; Входные параметры: A = 05h
; C = цвет фона и цвет точек, с значениями 0...15
; Выходные параметры: нет
; Описание: Происходит установка нового цвета знакоместа. После этого
; вывод символьной информации будет осуществлятся с новым цветом.
;--------------------------------------------------------------------
; Функция 06h - Чтение текущей цвета символов
;---------------------------------------------------------------------
; Входные параметры: A = 06h
; Выходные параметры: С = текущий цвет
; Описание: Происходит чтение текущего цвета.
;--------------------------------------------------------------------
; Функция 07h - Установить активную страницу экрана
;---------------------------------------------------------------------
; Входные параметры: A = 07h
; C = новая страница экрана с значением 0..7
; Выходные параметры: нет
; Описание: По этой команде происходит переключение на новую страницу экрана
;--------------------------------------------------------------------
; Функция 08h - Установить пользовательский знакогенератор
;---------------------------------------------------------------------
; Входные параметры: A = 08h
; BC = адрес знакогенератора пользователя
; Выходные параметры: нет
; Описание: По этой команде происходит копирование знакогенератора из программы
; пользователя в область знакогенератора страницы экрана
;--------------------------------------------------------------------
; Функция 09h - Вывод символа на экран
;---------------------------------------------------------------------
; Входные параметры: A = 09h
; C = выводимый символ
; Выходные параметры: нет
; Описание: Выводится символ в текущее положение курсора с текущим цветом
; Кроме того обрабатываются управляющие символы
;--------------------------------------------------------------------
; Функция 0Ah - Вывод символа и его цвета на экран
;---------------------------------------------------------------------
; Входные параметры: A = 0Ah
; B = цвет символа и цвет фона
; C = выводимый символ
; Выходные параметры: нет
; Описание: Выводится символ и его цвет в текущее положение курсора.
; В этой команде не обрабатываются управляющие символы
;--------------------------------------------------------------------
; Функция 0Bh - Прочитать символ и его цвет с текущего положения курсора
;---------------------------------------------------------------------
; Входные параметры: A = 0Bh
; Выходные параметры:
; B = цвет символа и цвет фона
; C = выводимый символ
; Описание: Происходит чтение символа и его цвета из текущего положения курсора.
;--------------------------------------------------------------------
; Функция 0Ch - Заполнение символом и его цветом область экрана
;---------------------------------------------------------------------
; Входные параметры: A = 0Сh
; B = цвет символа и цвет фона
; C = выводимый символ
; D = количество строк
; E = количество символов в строке
; Выходные параметры: нет
; Описание: Заполняется область экрана начиная с текущей позиции курсора
; символом и его цветом.
; В этой команде не обрабатываются управляющие символы
;--------------------------------------------------------------------
; Функция 0Dh - Вывод байта в HEX виде экран
;---------------------------------------------------------------------
; Входные параметры: A = 0Dh
; C = выводимый байта
; Выходные параметры: нет
; Описание: Выводится байта в виде HEX в текущее положение курсора и
; в текущем цвете.
;--------------------------------------------------------------------
; Функция 0Eh - Отрисовка окна без заголовка
;---------------------------------------------------------------------
; Входные параметры: A = 0Eh
; B = цвет символа и цвет фона
; C = выводимый символ
; D = размер окна по вертикали (число строк)
; E = размер окна по горизонтали (число символов в строке)
; Выходные параметры: нет
; Описание: Создается область на экране окруженная рамкой, созданная
; символом и его цветом. Кроме того область внутри окна очищается
; символом пробела с цветом, заданным при создании окна .
; Окно отрисовывается с текущего положения курсора.
;--------------------------------------------------------------------
; Функция 0Fh - Отрисовка окна c заголовком
;---------------------------------------------------------------------
; Входные параметры: A = 0Fh
; B = цвет символа и цвет фона
; C = выводимый символ
; D = размер окна по вертикали (число строк)
; E = размер окна по горизонтали (число символов в строке)
; HL = адрес текстовой строки заголовка
; Выходные параметры: нет
; Описание: Создается область на экране окруженная рамкой, созданная
; символом и его цветом. Кроме того область внутри окна очищается
; символом пробела с цветом, заданным при создании окна
; Окно отрисовывается с текущего положения курсора.
;-----------------------------------------------------------------------
Продолжение
Код:;--------------------------------------------------------------------
; Функция 10h - Вывод строки символов на экран
;---------------------------------------------------------------------
; Входные параметры: A = 10h
; BC = адрес выводимой строки
; Выходные параметры: нет
; Описание: Выводится строка символов в текущее положение курсора с текущим цветом
; Кроме того обрабатываются управляющие символы.
; Строка должна заканчиваться кодом - 00h
;--------------------------------------------------------------------
; Функция 11h - Вывод строки символов и их цвета на экран
;---------------------------------------------------------------------
; Входные параметры: A = 11h
; BC = адрес выводимой строки
; Выходные параметры: нет
; Описание: Выводится строка символов в текущее положение курсора
; Формат симольной строки должен соответствовать следующей последовательности - символ, цвет,....
; Кроме того управляющие символы не обрабатываются
; Строка должна заканчиваться кодом - 00h
;---------------------------------------------------------------------
; Функция 12h - Копирование области экрана в память программы пользователя
;---------------------------------------------------------------------
; Входные параметры: A = 12h
; B = количество строк
; С = количество символов в строке
; HL = адрес памяти куда будет происходить копирование
; Выходные параметры: нет
; Описание: Копируется область экранной памяти из текущей позиции курсора
; в область памяти программы пользователя. Стоит учитывать, что копируется
; кроме символа, еще и его атрибут.
;---------------------------------------------------------------------
; Функция 13h - Копирование из памяти программы пользователя в область экрана
;---------------------------------------------------------------------
; Входные параметры: A = 13h
; B = количество строк
; С = количество символов в строке
; HL = адрес памяти откуда будет происходить копирование
; Выходные параметры: нет
; Описание: Копируется из области памяти программы пользователя в область
; экранной памяти в текущую позицию курсора.
; Стоит учитывать, что копируется кроме символа, еще и его атрибут.
;--------------------------------------------------------------------
; Функция 14h - Вывод байта или слова в двоичном, десятичном или шестнадцатеричном
; виде на экран
;---------------------------------------------------------------------
; Входные параметры: A = 14h
; B = старший байт если выводится слово
; C = младший байт
; E = 00h вывод байта в двоичном виде
; = 01h вывод байта в десятичном виде
; = 02h вывод байта в шестнадцатеричном виде
; = 04h вывод слова в двоичном виде
; = 05h вывод слова в десятичном виде
; = 06h вывод слова в шестнадцатеричном виде
; Выходные параметры: нет
; Описание: Выводится байт или слова на экран в двоичном, десятичном или шестнадцатеричном
; виде на экран в текущее положение курсора и в текущем цвете.
;---------------------------------------------------------------------
Вроде все хорошо, маленькое замечание по формату:
Нужна будет PC прога, рисующая менюшки и экранчики, и создающая текстовую последовательность для вставки в текст программ (asm и C). Может, уже есть такие?Код:; Формат симольной строки должен соответствовать следующей последовательности - символ, цвет,....