Важная информация

User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 11

Тема: Инструменты для компиляции BIOS.

  1. #1
    Master
    Регистрация
    02.03.2015
    Адрес
    г. Санкт-Петербург
    Сообщений
    801
    Спасибо Благодарностей отдано 
    341
    Спасибо Благодарностей получено 
    72
    Поблагодарили
    57 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Инструменты для компиляции BIOS.

    Подскажите пожалуйста:
    1) Какой компилятор и линкер можно использовать для создания BIOS?
    2) Как полученный код конвертировать в бинарный или hex файл, пригодный для прошивки?
    3) Где посмотреть правила оформления: точка старта, сигнатуры, КСумма и т.п.?
    Если кто-то сможет поделиться своим набором, буду очень благодарен.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Moderator
    Регистрация
    23.01.2011
    Адрес
    Донецк
    Сообщений
    793
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    1. Ассемблер нужен, а не компилятор TASM вполне подойдет.
    2. В принципе, прошивку можно собирать как обычный COM-файл, базовое смещение org f000h, кажется.
    3. Точка входа у всех х86 находится на FFFF:0h. Там должен быть джамп на начало основного кода BIOS, а за джампом традиционно размещается его дата сборки. У Поиска также есть требование, чтобы контрольная сумма прошивки должна быть равна нулю. Поэтому где-то в неиспользуемой области надо поместить байтик, добивающий КС до нуля. Ну, или убрать проверку контрольных сумм из кода
    Последний раз редактировалось DrPass; 19.03.2015 в 12:49.
    Поиск-1, Поиск-2, Парус ВИ-201, Олимпик-С, Электроника МК61

  4. #3
    Master
    Регистрация
    02.03.2015
    Адрес
    г. Санкт-Петербург
    Сообщений
    801
    Спасибо Благодарностей отдано 
    341
    Спасибо Благодарностей получено 
    72
    Поблагодарили
    57 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Спасибо.
    Я понимаю, что весь код должен лежать в одном сегменте, поэтому готовим COM.
    А ведь COM файл ещё нужно преобразовать в бинарный, для программатора?
    С точкой входа основного BIOS всё и так понятно, я хотел узнать про дополнительные, типа VGA, IDE...
    И где для них размещается стек?

  5. #4
    Moderator
    Регистрация
    23.01.2011
    Адрес
    Донецк
    Сообщений
    793
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Копейкин Посмотреть сообщение
    Спасибо.
    Я понимаю, что весь код должен лежать в одном сегменте, поэтому готовим COM.
    А ведь COM файл ещё нужно преобразовать в бинарный, для программатора?
    COM-файл и есть бинарный, это просто код, и ничего более. Единственное, стандартный COM-файл имеет фиксированное смещение относительно начала сегмента, 100h (ниже DOS размещает служебные области данных). В случае BIOS это смещение надо устанавливать в соответствии с размещением ПЗУ в области памяти.

    Цитата Сообщение от Копейкин Посмотреть сообщение
    С точкой входа основного BIOS всё и так понятно, я хотел узнать про дополнительные, типа VGA, IDE...
    Дополнительные размещаются произвольно в диапазоне от C000:0h и до основного BIOS. Требования стандарные как и для всех IBM PC - адрес размещения дополнительного ПЗУ должен быть кратным 512 байт, первые два байта содержат сигнатуру AA55h, третий байт содержит размер ПЗУ в 512-байтных блоках. И, поскольку это Поиск, а не IBM PC, то контрольная сумма должна быть равна 0.


    Цитата Сообщение от Копейкин Посмотреть сообщение
    И где для них размещается стек?
    В BIOS Data Area, как обычно.
    Поиск-1, Поиск-2, Парус ВИ-201, Олимпик-С, Электроника МК61

  6. #5
    Master
    Регистрация
    02.03.2015
    Адрес
    г. Санкт-Петербург
    Сообщений
    801
    Спасибо Благодарностей отдано 
    341
    Спасибо Благодарностей получено 
    72
    Поблагодарили
    57 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ещё раз спасибо!
    Соберу сюда всё, что узнал.
    Итак, имеем скелет: "bios-exp.asm"

    Код

    IDEAL
    P86
    MODEL TINY
    ORG 0
    Sign1 DB 055H
    Sign2 DB 0AAH
    Size DB ?? ; В блоках по 512 байт
    Entry: ; здесь код
    ...
    retf ; завершаем работу
    ORG EndOfROM
    CheckSum DB ??; дополнить, чтобы до ксум=0 для "Поиск"
    [свернуть]


    Чтобы получить бинарный файл используем пакет Borland C++ 3.1:
    tasm /m/l/s bios-exp.asm
    tlink /t bios-exp.obj bios-exp.bin

  7. #6
    Veteran Аватар для Tronix
    Регистрация
    16.09.2010
    Адрес
    г. Москва
    Сообщений
    1,933
    Спасибо Благодарностей отдано 
    78
    Спасибо Благодарностей получено 
    231
    Поблагодарили
    115 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Важно понять - что хочется сделать - BIOS или дополнительный ROM-BIOS?. Просто если пишем свой BIOS, то и играть можно по своим правилам - никаких 55AA, контрольную сумму можно не хранить или хранить не в конце, а в середине и так далее, так как процессор после старта просто начинает выполнять первую команду по адресу FFFF:0 (или какому там, забыл уже). А что это за первая команда и какие будут остальные - решает только программист. В простейшем случае мне никто не запрещает написать вот такой основной BIOS:

    PHP код:
    org 0h
    start
    :
        
    nop
        jmp far 0ffff
    :
    Это вполне рабочий вариант.

    Другое дело, когда пишется расширение ROM-BIOS, здесь уже да, приходится подстраиваться под основной BIOS. Уже да, появляется сигнатура 55AA, появляется контрольная сумма в конце. По сигнатуре основной BIOS ищет расширения в памяти, а контрольную сумму проверяет, что бы убедится, что чужой ром-биос не попортился. Если одно из этих условий не выполнится, основной BIOS просто не запустит такое дополнительное расширение.

    Не знаю, поможет ли, но я когда-то выкладывал набросок дополнительного расширения ROM-BIOS для Поиск (да и на XT работает) здесь: http://zx-pk.ru/showthread.php?p=701...bin#post701642 Там сорец есть в архиве. Но писалось по-быстрому, "на коленке", с копипастой начальной структуры (вот эти все 55AAh) откуда-то, вроде от сорца ROM-BIOS MFM контроллера.

  8. #7
    Veteran Аватар для Tronix
    Регистрация
    16.09.2010
    Адрес
    г. Москва
    Сообщений
    1,933
    Спасибо Благодарностей отдано 
    78
    Спасибо Благодарностей получено 
    231
    Поблагодарили
    115 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну и до кучи исходник моего теста оперативки, зашиваемый вместо основного BIOS. Я его по-моему собирался причесать и выложить, но так и не дошли руки до наведения красоты в коде, а потом и вовсе забыл. То же слеплен скелет из того, что было под рукой (а были сорцы Super PC/Turbo XT BIOS и сорцы BIOS Поиска), но работает, и здорово меня выручил в свое время...
    Вложения Вложения

  9. #8
    Master
    Регистрация
    02.03.2015
    Адрес
    г. Санкт-Петербург
    Сообщений
    801
    Спасибо Благодарностей отдано 
    341
    Спасибо Благодарностей получено 
    72
    Поблагодарили
    57 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Tronix, спасибо!
    Я имел в виду расширение BIOSа. Так, что играем по всем правилам.
    Мечтаю внешний видеоадаптер сделать.
    Сейчас восстанавливаю из руин купленный "Поиск".
    Его турбировали или пытались это сделать, но он не работает.
    Даже не пытается...
    И на доп. установленных микросхемах названия сточены.
    Так, что кропотливо восстанавливаю оригинальную схему.
    Дорожки очень слабо держатся, печалька.

  10. #9
    Activist Аватар для Cat_Alex/QRP
    Регистрация
    10.12.2012
    Адрес
    г. Рубцовск, Алтайский край
    Сообщений
    334
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Всем привет! У меня вопрос тоже по bios, но несколько другого толку. Задача: считать биос с одной противной материнки (286). Программатора нет, материнка рабочая. Возможно ли провернуть с ней старый спектрумовский трюк? Сорри за флейм, если что.
    Daewoo CPC-400 MSX-2, Ленинград-1, Пентагон-128, Datacom 286-turbo, Dendy Junior (Steepler)
    73 de UB9YUF Alex
    Ищу клавиатуру "Старт 9069"

    недорого куплю или приму в дар дискеты 5.25'

  11. #10
    Master
    Регистрация
    02.03.2015
    Адрес
    г. Санкт-Петербург
    Сообщений
    801
    Спасибо Благодарностей отдано 
    341
    Спасибо Благодарностей получено 
    72
    Поблагодарили
    57 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В какой-то ветке, про дисководы кажется, Tronix вроде выкладывал программку, которая может биос и/или расширения на диск скинуть.

Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 22
    Последнее: 30.03.2015, 04:52
  2. Музыкальные инструменты
    от Destr в разделе Разный софт
    Ответов: 11
    Последнее: 30.06.2014, 08:52
  3. Инструменты pt3
    от Destr в разделе Музыка
    Ответов: 16
    Последнее: 09.01.2012, 19:19
  4. Инструменты к Sampler?
    от KostikVento в разделе Музыка
    Ответов: 7
    Последнее: 19.11.2011, 23:10
  5. как слить BIOS
    от Wicked в разделе Память
    Ответов: 8
    Последнее: 05.07.2008, 10:23

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •