CodeNet / Платформы / Другие платформы / DOS / Прерывания DOS и BIOS
Функции BIOS - INT 1fH: указатель графических символов
Этот вектор (0:007c) указывает на таблицу, определяющую изображения старших 128 символов (коды ASCII 128-255). Ее использует ROM-BIOS, когда выводит на экран символы в графическом (с битовой разверткой) режиме.
При запуске системы этот указатель устанавливается на F000:0000, так что старшие 128 символов в графическом режиме выдаются как случайный "мусор". команда DOS 3.x "GrafTabl" может использоваться для загрузки таблицы старших 128 символов и соответствующей переустановки данного вектора.
Вы можете создать вашу собственную RAM-резидентную таблицу, например, чтобы предоставить курсив для графики. таблица состоит из 128 групп по 8 байт в группе. Каждый байт представляет 8 точек по горизонтали, причем первый байт отвечает верхней строке точек, составляющих изображение символа. например, определение символа "Л" могло бы быть следующим:
г7+6+5+4+3+2+1+0¬ смещение_в_таблице + 0: ¦ $ $ $ $ $ $ ¦ = 01111110 = 7e hex =¬ смещение_в_таблице + 1: ¦ $ $ $ $ ¦ = 00111100 = 3c hex ¦ смещение_в_таблице + 2: ¦ $ $ $ $ ¦ = 01101100 = 6c hex ¦ смещение_в_таблице + 3: ¦ $ $ $ $ ¦ = 01101100 = 6c hex ¦=> =¬ смещение_в_таблице + 4: ¦ $ $ $ $ ¦ = 01101100 = 6c hex ¦ ¦ смещение_в_таблице + 5: ¦ $ $ $ $ ¦ = 01101100 = 6c hex ¦ ¦ смещение_в_таблице + 6: ¦$ $ $ $ $ ¦ = 11001110 = ce hex ¦ ¦ смещение_в_таблице + 7: ¦ ¦ = 00000000 = 00 hex =- ¦ +-+-+-+-+-+-+-+-+ ¦ +====================+ ¦ +===============¦=============+ 8-байтовая последовательность: 7еH,3cH,6cH,6cH,6cH,6cH,ceH,00H стояла бы в таблице по смещению, соответствующему символу "Л". так как код ASCII буквы 'Л' равен 139, а таблица начинается для символа с кодом 128, это будет 12-я группа из 8 байт (смещение - 88 байт от начала таблицы).
замечание:
Младшие 128 символов хранятся в ROM-таблице по адресу f000:fa6e. Это не указано в документации, но, похоже, этот адрес остается постоянным во всех IBM-версиях ROM. этот адрес жестко закодирован в кодах программы INT 10H, так что вы не можете использовать свою таблицу для младших 128 символов (если у вас не EGA , который позволяет переопределять весь набор символов).