Я, пожалуй, начну с BIOSа. И так понятно, что это ответственная часть. В самом BIOSе всего несколько ключевых подпрограмм. И начну я с вывода символа.
Вывод символа будет стандартный для Спеца (для поддержки совместимости): 64х25, даже координатная сетка будет та же. Только реализация будет быстрой и с поддержкой цвета. Задумок много, пока только оформлю хотелки. Для начала все будет писаться для именно для стандарт режима, потом допилится и до МХа.
1. Полная совместимость со старыми программами, которые печатают старый текст в режиме КОИ7. А значит будет управляющий код, переключающий КОИ7 и ... (нет, не КОИ8р, я его с линупсов не люблю. :3) ср866. Почему? FAT. Этим все сказано.
2. Полная поддержка цвета. 5/8 для стандарта и 16 для МХа. Символы будут выводиться без проверки на перекрытие байтом атрибутов двух символов. Так что эстетическая сторона полностью на совести программистов. :3
3. Поддержка ESC кодов. Вообще, весь сервис планируется именно через ESC последовательности. Во первых, они стандартны (вроде как), а во вторых - можно придумать много своих, не теряя в совместимости со старыми программами.
Пошерстил журнальчики про Орион, 86РК и Спец и нарыл следующие управляющие коды, которые будет поддерживаться моим выводом символа:
Код:
07H - Гудок
08H - Влево, с переходом на строку выше на границе экрана
0AH - Перевод строки со скроллингом
0CH - Домой
0DH - Возврат каретки
18H - Вправо с переходом на следующую строку на границе экрана
19H - Вверх со скроллингом
1AH - Вниз со скроллингом
1FH - Очистка экрана
7FH - Инверсия вывода (выключается повтором кода)
1BH - ESC:
1BH, 41H - Вверх
1BH, 42H - Вниз
1BH, 43H - Вправо
1BH, 44H - Влево
1BH, 45H - Стирание экрана
1BH, 48H - Домой
1BH, 4AH - Стирание ниже курсора
1BH, 4BH - Стирание правее курсора
1BH, 59H, (XXH+20H), (YYH+20H) - Позиция курсора
1BH, 61H - Гашение курсора
1BH, 62H - Восстановление курсора
Эта таблица не полная, поэтому призываю к активному обсуждению и дополнению ее. Так же, будет введен код управления направления автосмещения. По умолчанию, это курсор вправо. Но можно будет задавать вверх, вниз, влево и даже отменять автоматическое перемещение. Это позволит быстро рисовать всяческие рамки. Так же, хочется повторить много управляющих кодов из МХа, но там они однобайтовые, что в нашем случае не подходит: у нас полная кодовая страница ср866, за исключением кодом менее 20Н. Давайте обсудим это и я примусь за реализацию.
Ах да, сам вывод символа будет запускаться из ПЗУ и сам фонт так же будет находиться в ПЗУ. Как в стандарте, так и в МХе.