а курсор кстати софтовый будет? на прерывании висеть мигать?
а курсор кстати софтовый будет? на прерывании висеть мигать?
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Да, в обработчике прерывания будет вызываться функция мигания курсора.
---------- 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 виде"? Я думал, это опечатка.
ZXM-Phoenix rev.01 2048K, VG93 hw emulator
Последний раз редактировалось Mick; 26.07.2013 в 16:26.
Первая используется в любом оконном драйвере открывающем и, что принципиально, закрывающем окна с возвращением фокуса (в примитиве - курсора) туда, откуда он был сорван.
Вторая может использоваться в том же драйвере для прочитывания "подоконного" экранного ОЗУ используемого в момент закрытия окна (восстановления нижнего плана), если для этого не будет отдельной функции (ибо читать по символу да еще каждый раз выставляя курсор - тормознуто).
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
Да, это было бы правильно. Но и чтение единичного символа под курсором все равно надо тоже оставить. Такая функция есть во многих реализациях VT-52/VT-100. Вдруг кто-то на базе БИОСа напишет эти подгружаемые драйвера.
И хорошо бы векторизировать подпрограммы БИОСа (т.е. при старте в ОЗУ инициализировать керналь через которую пропускать вызовы)
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
Это можно сделать.
Так вот обновленный список функций 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). Может, уже есть такие?Код:; Формат симольной строки должен соответствовать следующей последовательности - символ, цвет,....
ZXM-Phoenix rev.01 2048K, VG93 hw emulator
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)