мож лучше у CP/M-овского биоса? эта оська куда приемлемей для зетника, чем MS-DOS.
Вид для печати
BIOS у CP/M опять же состоит из 2х частей, более менее платформо независимый биос и монитор по типу тех что РК86 Специалист итд
Давайте проясним ситуацию. Биос для девборды, это скажем помощник разработчику программ. Он скажем ближе должен к монитору РК подобных.
Тоесть набор простых функций, которые помогли бы самим не заморачиваться с выводом символов и строк на экран, чтение клавиатуры, ввода и вывода информации в COM порт. Ну и работа с SD картой.
Все остальные Оси это уже на любителя. Тем более Биос можно отключать и играться только с ОЗУ.
Естественно в ПЗУ будет необходим некий набор утилит для упрощения жизни разработчику.
Вот чтобы скажем упростить вызовы проще думаю их через RST делать,
например:
RST 8h - переход по адресу в другую страницу ПЗУ
RST 10h - работа с видеоадаптером
RST 18h - работа с клавиатурой и мышой
RST 20h - работа с COM портом
RST 28h - работа с SD картой
он к тому, можно повыдерать, код, чем писать полностью свое. или использовать номера функций и предаваемые значения как там.
оси то не надо, просто удобный доступ к периферии.
вообщем, чем проще тем лучше, ну а если запускать модифицированный cpm, кому то будет еще одно щастие,
по сути это уже мелко комп. :)
Ну я к тому тоже, что не пустые слова говорите, а ссылки на страницы или лучше выдержки. Чтобы было удобно самим же потом пользоваться.
Кстати подумалось. Что типа ближе CPM или MS DOS. В последней мне лично привычнее, тем более я там частый гость :)
Вот похожий проект, тут есть список реализованных функций вывода:
http://habrahabr.ru/post/129746/
Вот накалякал примерный список функций видеодрайвера BIOSа.
Список управляющих символов позаимствовал из тем про Специалист.
Если что не понятно или есть предложения, высказывайтесь.Код:;--------------------------------------------------------------------
; Управляющие последовательности
;--------------------------------------------------------------------
;08h - Влево, с переходом на строку выше на границе экрана
;0Ah - Перевод строки со скроллингом
;0Ch - Домой
;0Dh - Возврат каретки
;18h - Вправо с переходом на следующую строку на границе экрана
;19h - Вверх со скроллингом
;1Ah - Вниз со скроллингом
;1Fh - Очистка экрана
;
;1Bh - ESC:
;1Bh, 41h - Вверх
;1Bh, 42h - Вниз
;1Bh, 43h - Вправо
;1Bh, 44h - Влево
;1Bh, 45h - Стирание экрана
;1Bh, 48h - Домой
;1Bh, 4Ah - Стирание ниже курсора
;1Bh, 4Bh - Стирание правее курсора
;1Bh, 58h, (COLOUR) - Цвет сивола и фона
;1Bh, 59h, (XXH+20H), (YYH+20H) - Позиция курсора
;1Bh, 61h - Гашение курсора
;1Bh, 62h - Восстановление курсора
;1Bh, 70h - Включение инверсии
;1Bh, 71h - Выключение инверсии
;---------------------------------------------------------------------
; Функции видеодрайвера 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 = количество символов по Y (вертикали)
; E = количество символов по X (горизонтали)
; Выходные параметры: нет
; Описание: Заполняется область экрана начиная с текущей позиции курсора
; символом и его цветом.
; В этой команде не обрабатываются управляющие символы
;--------------------------------------------------------------------
; Функция 0Dh - Отрисовка окна без заголовка
;---------------------------------------------------------------------
; Входные параметры: A = 0Dh
; B = цвет символа и цвет фона
; C = выводимый символ
; D = размер окна Y (вертикали)
; E = размер окна по X (горизонтали)
; Выходные параметры: нет
; Описание: Создается область на экране окруженная рамкой, созданная
; символом и его цветом. Кроме того область внутри окна очищается
; символом пробела с цветом, заданным при создании окна
;--------------------------------------------------------------------
; Функция 0Eh - Отрисовка окна c заголовком
;---------------------------------------------------------------------
; Входные параметры: A = 0Eh
; B = цвет символа и цвет фона
; C = выводимый символ
; D = размер окна Y (вертикали)
; E = размер окна по X (горизонтали)
; HL = адрес текстовой строки заголовка
; Выходные параметры: нет
; Описание: Создается область на экране окруженная рамкой, созданная
; символом и его цветом. Кроме того область внутри окна очищается
; символом пробела с цветом, заданным при создании окна
;--------------------------------------------------------------------
; Функция 0Fh - Вывод строки символов на экран
;---------------------------------------------------------------------
; Входные параметры: A = 0Fh
; BC = адрес выводимой строки
; Выходные параметры: нет
; Описание: Выводится строка символов в текущее положение курсора с текущим цветом
; Кроме того обрабатываются управляющие символы.
; Строка должна заканчиваться кодом - 00h
;--------------------------------------------------------------------
; Функция 10h - Вывод строки символов и их цвета на экран
;---------------------------------------------------------------------
; Входные параметры: A = 10h
; BC = адрес выводимой строки
; Выходные параметры: нет
; Описание: Выводится строка символов в текущее положение курсора
; Формат симольной строки должен соответствовать следующей последовательности - символ, цвет,....
; Кроме того управляющие символы не обрабатываются
; Строка должна заканчиваться кодом - 00h
Вот, думаю сюда еще внести функцию вывода символа в HEX виде
Лучше бы не символа в HEX-виде, а 16-битного числа в двоичном и шестнадцатиричном форматах.
A=код функции
BC=число
D=основание(2,10,16)
вывод тек.цветом с тек.позиции
Просто любопытно: вот эти функции, они где-нибудь реально используются ?
Чтение текущей позиции курсора
Прочитать символ и его цвет с текущего положения курсора