Содержание |
Хм, только сейчас обнаружил, что, оказывается, мало кто знает структуру этого файла из Award 6.0. Странно, уж, думал, что исходники Award, уже второй десяток лет валяющихся во всём интернете, не оставили "белых пятен" на теле славного китайского биоса. Ан нет, оказалось, это просто таки загадка какая-то.
Многократно отсылая "обратиться к первоисточникам" ("читать мануалы", "курить даташиты", "гуглить яндексы" и т.п.) многочисленных обращающихся ко мне с просьбами просветить по устройству AwardBIOS - сделал вывод, что, оказывается, даже наличие доступных текстов, мягко говоря, не добавляет света в, казалось бы, куда уж более "просветлённом" биосе. Странно. В общем, отбросим эти словоблудные пассажи и перейдём к делу. Делу "просвещения неразумных". Последнее из моего бурчания будет упоминание того, что, в частности, патчер был "зачат" без "чтения первоисточников" - всё нужное было банально "вырыто" посредством анализа сотен (без преувеличения) биосов. А когда есть "буквари-справочники"... Ладно, больше не буду и просьба не считать сказанное снобизмом-консерватизмом-популизмом-итэпэизмом.
Порядка в изложении не будет, будут отрывочные, максимально предметные комментарии к различным вопросам на различных форумах во всём интернете. Потому, в частности, просьба знающих английский - как-то "параллельно" переводить.
_ITEM.BIN
Модуль появился в Award 6.0. Причин его появлению было несколько.
Во-первых, не только юзеры устали рассматривать "коряболки" в своём modbin-е из-за использования двух вариантов размещения исходного текста для отображения на экране во время POST и в Setup. Ведь в старом, 4.5х-ном варианте, весь текст сообщений лежит в сегментах Eseg (E000:0000-FFFF), Fseg (F000:0000-FFFF), Xseg (обычно 1000:0000-FFFF, для Asus - 6000:0000-FFFF) или для POST и лишь Fseg для Setup. А в новом (Award 6.0) он (текст) может храниться как по "старому" образцу, так и "по-новому" - в файле _XX_code.bin (по умолчанию - английский, т.е. _EN_CODE.BIN), структура которога весьма прозрачна для понимания (но если я ошибаюсь - просите, опишу :) ). В результате такое долгое время модбины показывали вышеназванные "коряболки" - текст пунктов менюшек modbin "по-привычке" брал из Fseg, хотя индекс предназначался для использования в модуле _XX_code.bin. Во-вторых, современные матплаты обзаводятся всё бОльшим количеством настроек, что привело к неприятному "распуханию" кода менюшек в Fseg и всё плотней "поджимало" другой код, который по структуре AwardBIOS должен располагаться именно в Fseg. В результате был добавлен модуль "_ITEM.BIN", который, по сути, является "выжимкой" начала Fseg, предназначенный для использования Setup-ом, где хранится информация о пунктах (item-ах, отсюда и банальное название) менюшек. Его использование биосом такое же банальное как и название :) - если биос находит модуль с ID = 40B5:0000 (_ITEM.BIN) - он просто распаковывает его прямо в самое начало Fseg, заменяя таким образом информацию, которая там была и использовалась в предваряющем процессе POST.
Ну, в самом модуле "_ITEM.BIN" всё те же стандартные для Award структуры:
ItemAward
struct ItemAward
{
dw Status; +00
dw Name; +02
dw ChipReg; +04
dw ChipReg_mask; +06
db CMOS; +08
dw CMOS_mask; +09
dw index_ValueNameTable; +0A
dw ItemMin; +0C
dw ItemMax; +0E
db xPosition; +11
db yPosition; +12
dw BIOS_default; +13
dw SETUP_default; +15
dw Help; +17
}; =19h (25 bytes)
Status
Status bits:
"NOMODBIN" 0x0000;
"CT_RVS" 0x0001;
"CT_RIS" 0x0002;
"SHOWONLY" 0x0004;
"ITEMDISABLE" 0x0008;
"GAP_ITEM" 0x0010;
"PMITEM" 0x0020;
"NODEFAULT" 0x0040;
"USERONLY" 0x0080;
"KEYIN" 0x0100;
"SHOWNUM" 0x0200;
"SHOWHEX" 0x0400;
"DIGIT3" 0x0800; // 0x1800);
"DIGIT4" 0x1000; // 0x1800);
"DIGIT5" 0x1800; // 0x1800);
"EARLYPROG" 0x2000;
"AUTOPROG" 0x4000;
"APPEND" 0x8000;
...продолжение следует...
...in progess...
Отправить комментарий