Это текстовый режим, палитра номер ноль, судя по дампу ПЗУ используются цвета 0,7,2. Даже с учётом того, что биты адреса палитры и биты RGB в другом порядке всё равно останется 0,7,2, т.к. эти трёхбитовые числа симметричные.
Вид для печати
У Поиска нет текстового режима. И видимый 80x25 это есть графический 640x200 1bpp. Как получается еще один цвет, кроме белого, я если честно не очень понял. Вот что пишет ТО по этому поводу:
Код:В графическом режиме 640 х 200 точек отображение произво-
дится в формате 1 бит на точку. Каждая точка может иметь два
цвета из 16 возможных.
В символьном режиме 80 символов х 25 строк отображение
производится также в формате 1 бит на точку, но каждый байт
содержит неиспользуемый для формирования знака бит D7, кото-
рый может нести информацию о цвете символа.
Короче какая-то магия с портами 0x6A, 0x6B и каким-то 7-мым битом где-то.Код:4.5.8. В конце каждого элементарного цикла регенерации
оперативной памяти происходит загрузка содержимого видеопа-
мяти в сдвиговые регистры, выполненные на элементах D72 и
D77. Загрузка данных осуществляется выходным сигналом "S/L"
контроллера ОЗУ (потенциал низкого уровня). Текущий адрес
определяется содержимым основного счетчика (микросхемы D23,
- 37 -
D24 и D25), состоянием выходного сигнала триггера D12.1:9 и
состоянием сигнала управления порта 68Н (бит 6).
Данные в сдвиговые регистры загружаются так, как показано
в таблице 4.12.
Т а б л и ц а 4.12
-----------T-------------------------------
¦ Р а з р я д
+---T---T---T---T---T---T---T---
¦ 7¦ 6 ¦ 5 ¦ 4 ¦ 3 ¦ 2 ¦ 1 ¦ 0
+---+---+---+---+---+---+---+---
¦ Четный банк ¦Нечетный банк
-----------+---T---T---T---+---T---T---T---
регистр 1 ¦D7L¦D5L¦D3L¦D1L¦D7H¦D5H¦D3H¦D1H
-----------+---+---+---+---+---+---+---+---
регистр 2 ¦D6L¦D4L¦D2L¦D0L¦D6H¦D4H¦D2H¦D0Н
Четные биты видеопамяти загружаются в один регистр, не-
четные - в другой.
Выходные сигналы сдвиговых регистров D72 и D77 поступают
на мультиплексор данных (микросхема D48). Сюда же поступает
сигнал с выхода схемы управления цветом, выполненненной на
элементах D4.2, D46 и D4.3. Данная схема позволяет по-
чить в символьном режиме 80 символов х 25 строк и дополни-
тельно цвет символа, в отличие от графического 640х200 то-
чек.
Думаешь, я ТО не читал, прежде чем делать эмуляцию? И схему не смотрел? :)
Про бит D7 проще из схемы узнать - это как бы альтернативный цвет засвеченных точек (из остальных семи). Я так понял, первая точка будет всегда незасвеченная, отсюда и полоски на инверсных символах. В принципе, при определённых настройках портов она может и не обнуляться, но тогда появятся вертикальные линии у символов с альтернативным цветом. Можно поиграться портами в отладчике.
Вообще, круто! Скорость очень похожа на настоящую. Только что-то checkit v3 не запускается в эмуле. И цвет все-таки надо поправить.
А мне всё-таки кажется, что я сделал правильно. Нортон вообще не устанавливает регистр палитры, он остался такой, какой был при установке режима, т.е. палитра номер ноль. Более того, в конфигурации Нортона установлен ч/б режим, т.е. реально использованы цвета 0,7,15, чёрный, серый и белый. А биос Поиска в псевдотектовом режиме 80х25 преобразовывает их в цвет фона, нормальный цвет и альтернативный цвет. А в палитре номер ноль это как раз чёрный, серый и зелёный (точнее, основная палитра с нулевым цветом фона).
Ну зачем спорить, если уже много человек сказало, что не было в текстовом режиме зеленого. Было только 3 цвета - черный, белый и бирюзовый. При переключении на русский цвет фона менялся на синий, остальные цвета оставались как есть.
Возможно была другая прошивка ПЗУ палитры. Другого объяснения у меня нет.
А что по поводу checkit? Вообще, побольше бы деталей.. Вижу, что x86 в виде отдельного плагина. С нуля писалось или где-то позаимствовано? Исходников нам не видать конечно?
Не смотрел ещё.
Писал с нуля, поэтому не уверен в 100% точности эмуляции процессора. Исходников не будет. :) Я уже где-то писал, что единственный заимствованный код в эмуляторе - процессор Z80, потому что мне до сих пор лень писать свою реализацию. Даже несмотря на неприлично большой размер имеющейся z80.dll