По стандарту у меня в биос стоит не русский язык. Как мне известно можно поменять графические символы с помощью прерывания 0x1F, который обычно указывает на F000:0000. Там содержится таблица символов 128-255. Каждая буква 8x8 бит или 8 байт. Единственный вопрос, где найти эти таблицы графических символов для разных языков? Так-же хотелось-бы найти стандартную таблицу символов 0-127?
В инете можно найти по KW "консольные шрифты". Можешь даже у виндов позаимствовать bootfont.bin. Вообще знакогенератор перезагружается с помощью функции BIOS int 10h/11h. Вектор 1Fh указывает на теневую память, поэтому просто так перезагрузить шрифт BIOS не получится, да и эффекта от этого не будет, если перезагружать шрифт после инициализации видеоподсистемы BIOS, потому что реально используемый знакогенератором шрифт хранится в видеопамяти. Также вполне достойной альтернативой функции BIOS int 10h/11h является непосредственная загрузка шрифта в память знакогенератора.
Вообще, как оказалось, в bootfont.bin хранится дополнительная информация по каждому символу, а именно юникод и порядковый номер символа (всего 19 байт на символ), плюс заголовок файла. Зная это, можно легко выделить из файла нужные последовательности байт. Шрифты с матрицей 8x8 сейчас используются редко (качество представления символов низкое). Обычно матрица имеет размер 8x16 - 4096 байт на шрифт без сжатия. Есть еще EGA-матрица 8x14, но она сейчас практически не используется.
1:Как сказать компьютеру, что теперь надо загрузить матрицу 8x8 или 8x16? 2:В Bootfont.bin я явно увидел символы 0x01 по адресу 0x4B и 0x02 по адресу 0x5E, но ох размер 8x9? (возможно 8x10 с учётом пустой строки)
Код (Text): mov ax,cs mov es,ax mov bp,fnt8x16.value mov bx,1000h ; bh=16 (высота) mov cx,256 xor dx,dx mov ax,1110h int 10h что-то в этом роде
Формат матрицы в видеопамяти один и тот же. Просто образ символа должен умещаться в матрицу знакоместа на экране (а она может быть разной). При использовании функции BIOS там вроде бы должны использоваться разные подфункции, ну или разные параметры одной функции - никогда не использовал этот способ - если нужно, посмотри в каком-нибудь справочнике по функциям BIOS. bootfont.bin я вроде бы вскрыл. Несмотря на то что там на символ приходится 19 байт, по сути используется матрица 8x12 - по символам псевдографики это хорошо видно. Брал файл от WinXPProSP2. В других версиях может дела обстоят иначе. Вот fasm-скрипт для преобразования bootcode.bin в asm-текст - можешь сам попробовать. Код (Text): repeat 256 i=%-1 db 13,10 repeat 16 virtual at 0 file "c:\bootfont.bin":52+19*i+%,1 load var from 0 end virtual db "db",32 repeat 8 db (var shr (8-%)) and 1 + "0" end repeat db "b",13,10 end repeat end repeat