Найти тему

Как работает программа начальной загрузки компьютера ROM BIOS INPUT OUTPUT SYSTEM

Программа ROM BIOS загружающая в память системные подпрограммы младшей части таблицы прерываний, с адресами INT 00h - 07h и 10h - 20h. Она необходима для работы операционной системы.

Программа ROM BIOS загружающая в память системные подпрограммы младшей части таблицы прерываний, с адресами INT 00h - 07h и 10h - 20h. Она необходима для работы операционной системы.

После включения компьютера, резидент таблицы прерываний ROM BIOS считывается в оперативную память и в ней постоянно находиться. Каждая из 24 системных подпрограмм таблицы прерываний BIOS занимает фиксированный объём памяти и находиться по фиксированному адресу вектора, который соответствует её номеру.

Перечень кодов вызова и назначений подпрограмм младшей части таблицы прерываний.

Таблица прерываний системных подпрограмм ROM BIOS.

Коды вызова INT 01h - 07h и 10h - 20h (кроме аппаратных, с кодами вызова INT 08h - 0Fh).

----------------------------------------------------------------

| Номер подпрограммы | Назначение подпрограммы |

----------------------------------------------------------------

| 0h | Деление на 0 (не допуст. операция) |

| 1h | Пошаговое выполнение команд |

| 2h | Немаскируемое прерывание |

| 3h | Команда INT без числового параметра |

| 4h | Прерывание по переполнению INTO |

| 5h | Вызывается нажатием клавиши Print Scr |

| 6h | Отключение управления консолью |

| 7h | Регулирование работы сопроцессора |

| 10h | Видео драйвер ROM BIOS |

| 11h | Работа с энергообеспечением |

| 12h | Работа с оперативной памятью |

| 13h | Чтение и запись на физический диск |

| 14h | Чтение и запись на порты |

| 15h | Работа с манипулятором "мышь" |

| 16h | Работа с клавиатурой |

| 17h | Работа с принтером |

| 18h | Загрузка операционной системы с диска |

| 19h | Перезагрузка компьютера |

| 1Ah | Карендарь - часы CMOS - памяти ROM BIOS |

| 1Bh | Обработчик прерываний по CTRL \ BREAK |

| 1Ch | Работа со звукозаписью. |

| 1Dh | Таблица видеопараметров ROM BIOS |

| 1Eh | Адрес таблицы параметров дискеты |

| 1Fh | 2-я часть таблицы видеопараметров |

| 20h | Выход из выполняемой программы |

|---------------------|-----------------------------------------|

Программа IOS.BIN должна загружаться с микросхемы Flash - Memory, сразу же после включения компьютера, или же с системного диска, как аналог резидентных системных программ ROM BIOS. Программа IOS.BIN содержит расширение BIOS. Это значит, что она сама все, свои действия по установке в памяти и инициализации работы компьютера, выполняет только по процедуре IOS т.е. без запроса аппаратных и программных прерываний. В тоже время, она устанавливает в сегментах нижней части Базовой Оперативной Памяти резиденты системных программ и для каждой программы в ячейках MCB вербует свой двухбайтовый вектор. Так, после включения компьютера, во время начальной загрузки, формируется таблица прерываний.

В дальнейшем, когда система уже загрузиться и программа начальной загрузки IOS.BIN передаст управление командному процессору операционной системы, то прикладные программы пользователя загружаясь в память, при вызове команды INT n обработки прерывания, в процессе своей работы вызывают соответствующею резидентную программу из отведённой, ей области оперативной памяти. Она и выполняет нужное действие, затребованное вызовом прерывания. Сама программа пользователя оказывается приостановленной, до тех пор, пока системная подпрограмма не будет выполнена до конца.

Когда, процессор её выполнит до конца и выйдет из неё по команде IRET, программа пользователя продолжит свою работу, с того самого места, в котором её выполнение и было приостановлено.

Программные файлы с расширением .BIN имеют специальную процедуру загрузки, как и системные драйвера устройств. Как известно, такие программы загружаются, либо самой операционной системой во время старта компьютера, либо через настроечные командные файлы.

Их нельзя, загружать пользователю как обычные исполняемые .COM и .EXE - файлы. Иначе, они не будут работать должным образом !

Более того, некоторые из них содержат специальные установочные процедуры, которые не могут быть выполнены, поверх загруженных в память системных резидентов MS-DOS и Windows. И тем более, категорически запрещается загружать системные программы содержащие расширение BIOS, если в операционной системе, были предварительно загружены резидентные программы и драйвера устройств, работающие с использованием задействованных векторов прерываний. Это обычно, приводит к попытке загруженной программы, заново переписать системные подпрограммы резидента операционной системы, по фиксированным сегментам задействованной памяти. Что в дальнейшем счёте, может привести к зависанию системы в лучшем случае, а в худшем и к потере информации на дисках!

Поэтому, для корректной работы, системные программы с расширением .BIN можно загружать, только в строгом соответствии с их процедурой загрузки. У разных системных драйверов и программ, работающих в расширении BIOS она своя. Как известно, графическая среда Windows имеет в своём составе системные драйвера, работающие по процедуре IOS. Они могут запускаться системой, только в процессе её загрузки и только системной программой IO.SYS которая и загружает графическую среду Windows 95/98/ME с системного диска.

Наша же вышеупомянутая системная программа IOS.BIN может загружаться двумя способами:

1) В начале, она предварительно должна быть записана на микросхему Flash - Memory с помощи универсального популярного программатора, типа Cart Riader. Вместе с ней на эту же микросхему, надо обязательно переписать и все другие файлы и программы которые к ней прилагаются. Потом, аккуратно взять материнскую плату, типа RSC-2C или RSC-3G, чтобы на ней случайно, ничего не повредить.

После этого, при помощи специального приспособления вытащить старую микросхему ROM BIOS из своего гнезда на материнской плате и на её место, также поставить новую Flash - микросхему с выше упомянутой записью. Как это осторожно сделать, чтобы не повредить гнездо в которое вставляется микросхема Flash - Memory можно прочитать в документации, прилагаемой к материнской плате или надо обратится к специалистам, с просьбой поменять действующею микросхему ROM BIOS материнской платы на Вашу новую с записью.

Затем, когда уже всё будет готово и новая Flash - микросхема будет находиться на своём месте - в гнезде материнской платы для носителя Постоянно - Запоминающего Устройства (ПЗУ), её надо вставить назад - в системный блок компьютера, подсоединить все полагающиеся по инструкции шлейфа и устройства, а также не забыть по окончанию работы, закрыть крышкой корпус системного блока.

Теперь, всё готово! Осталось, только подсоединить провод к источнику напряжения и нажать кнопку POWER на системном блоке Вашего компьютера.

Системная программа IOS.BIN загруженная в память с микросхемы Flash - Memory, сразу после включения Вашего компьютера задействует системную область младшей части таблицы прерываний, а затем передаст управление специальной программе, которая и будет управлять начальной загрузкой системы.

2) Взять обычную гибкую дискету, ёмкостью 1,44 Мб. Она должна, быть чистой без записи. Вставить её в дисковод. Перед началом работы, её предварительно, нужно отформатировать и проверить программой SCANDISK на наличие дефектных секторов.

Затем, запустить программу Disk Editor из нортоновских утилит. С помощи соответствующей опции верхнего меню, загрузить в просмотре кода ASCII программный файл BOOTSEC.BIN и с помощи другой опции "Запись объекта в..." переписать его в 1-й сектор, 0-й цилиндр, 0-ю головку гибкой дискеты, т.е. в её загрузочный сектор Boot Master. При выходе из программы Disk Editor в ответ на появившиеся диалоговое окно "Запись объекта в 1 сектор, 0 цилиндр, 0 головку" кликнуть левой кнопкой мыши на кнопку "OK" или просто нажать клавишу ENTER.

После этого, скопировать на эту дискету программу IOS.BIN и вместе с ней, надо также, обязательно скопировать и все другие файлы и программы которые к ней прилагаются. Системная программа IOS.BIN и все остальные файлы, должны при этом находится в корневом каталоге дискеты, как и обычно на любом системном диске. Директорий на этой дискете, создавать не надо.

Далее, не вытаскивая эту дискету из дисковода, перезагрузить компьютер. В процессе начальной загрузки, нажав клавишу DEL войти в программу SETUP ROM BIOS. В появившемся меню выбрать раздел BIOS FEATURES SETUP и зайти в него. В нём выбрать опцию Boot Sequence и убедиться, что первым в опросе дисковых накопителей стоит гибкий дисковод, названный как Floppy Disk. Если нет, то с помощи нажатия клавиш PAGE UP и PAGE DOWN установить такую последовательность опроса дисковых накопителей в процессе начальной загрузки. Потом, сначала нажать клавишу F10, а затем ENTER, чтобы выйти из программы SETUP с сохранением сделанных изменений.

Теперь, всё готово! Компьютер загрузит систему с дискеты. Системная программа IOS.BIN будет запущена, программой загрузочного сектора гибкого диска. Она сформирует в памяти, младшею часть таблицы прерываний с адресами INT 00 - 07h и 10 - 20h, альтернативную той, которая представляет собой системный резидент ROM BIOS. Далее, она загрузит другую системную программу MSDOS.BIN которая сформирует старшею часть таблицы прерываний с адресами INT 21 - 2Fh и 45 - 6Fh, которая и является системным резидентом операционной системы DOS.

После этого, управление снова будет передано программе IOS.BIN и она установит параметры рабочей конфигурации операционной системы, открыв настроечный файл IOS.CFG

Затем, системная программа IOS.BIN передаст управление программе командного процессора, указанной в этом же настроечном файле IOS.CFG

В ней пользователю, и предстоит работать с компьютером, когда процесс загрузки будет завершён.

Системная программа IOS.BIN предназначена для формирования в нижней области Базовой Оперативной Памяти, резидента младшей части таблицы прерываний с адресами INT 00 - 07h и 10 - 20h. Её можно использовать, как системную программу для инициализации аппаратных функций Постоянно-Запоминающего Устройства (ПЗУ), так и в качестве главного модуля начальной загрузки операционной системы RSC-DOS с системного диска.

В ниже приведённой таблице, показаны отличительные характеристики системы RSC-DOS и MS-DOS.

|--------------------|---------------|--------------|

| Характеристика | RSC-DOS | MS-DOS |

|--------------------|---------------|--------------|

| Системные файлы | IOS.BIN | IO.SYS |

| | MSDOS.BIN | MSDOS.SYS |

|--------------------|---------------|--------------|

| Настроечные | IOS.CFG | CONFIG.SYS |

| командные файлы | | AUTOEXEC.BAT |

|--------------------|---------------|--------------|

| Файл командного | COMMAND.EXE | COMMAND.COM |

| процессора | | |

|--------------------|---------------|--------------|

Программа ROM BIOS загружающая в память системные подпрограммы младшей части таблицы прерываний, с адресами INT 00h - 07h и 10h - 20h. Она необходима для работы операционной системы.-2

После загрузки в память, приняв управление, системная программа IOS.BIN начинает выполнять несколько основных функций:

1) Вывод на дисплей сообщения, о начале загрузки Loading...

2) Выделение нужных объёмов оперативной памяти, занесение в них системных подпрограмм, выполняющих различные функции и вербовка в блоках MCB для каждой из них, своего соответствующего вектора.

Всего, этих системных подпрограмм, должно быть 24.

Так формируется таблица обработки прерываний.

3) Определение типов стандартных устройств компьютера:

CON - Консоль, ввод через клавиатуру, вывод на дисплей.

PRN - Принтер, печатающие устройства вывода информации.

AUX - Устройство подсоединяемое к последовательному порту COM1.

NUL - Буфер оперативной памяти, для временного размещения

копируемой информации. Обычно, называется пустым устройством.

LPT1-LPT4 - Устройства подсоединяемые к параллельным портам 1 - 4.

Обычно, это принтеры.

COM1-COM4 - Устройства подсоединяемые к последовательным портам 1 - 4.

Занесение в выделенный буфер оперативной памяти, соответствующей системной подпрограммы; оставление её резидентно в памяти и вербовка для неё вектора ведомого устройства - 0Ah.

4) Отыскание в корневом каталоге дискового накопителя (вне зависимости от его типа) системного файла MSDOS.BIN и его загрузка в память на выполнение. Если он отсутствует, загрузка системы производится без него.

5) Получение сведений о ёмкости накопителя информации, с которого производиться загрузка и наличии на нём свободного места.

6) Отыскание в корневом каталоге дискового накопителя (вне зависимости от его типа) настроечного файла IOS.CFG и установка параметров конфигурации системы, указанных в нём. Если он отсутствует, установка параметров системы производиться по умолчанию.

7) Загрузка управляющей программы для работы пользователя, из настроечного файла IOS.CFG

Она должна, производится начиная со 193-го байта кодового текста этого настроечного файла. Если он не указан, то по умолчанию загружаться интерприкатор команд COMMAND.EXE, а если в корневом каталоге носителя, отсутствует и он, то дальнейшая загрузка системы блокируется с выводом сообщения об ошибке.

Но, по желанию пользователя, вместо COMMAND.EXE может быть загружена любая другая программа. Даже, если это командный процессор, а обычная прикладная программа. Для этого, надо внести соответствующие изменения в настроечный файл IOS.CFG

там, где команда ProgramDos, секции [LoadProg].

Ниже приводиться схема структуры программного модуля IOS.BIN:

Программа ROM BIOS загружающая в память системные подпрограммы младшей части таблицы прерываний, с адресами INT 00h - 07h и 10h - 20h. Она необходима для работы операционной системы.-3
Программа ROM BIOS загружающая в память системные подпрограммы младшей части таблицы прерываний, с адресами INT 00h - 07h и 10h - 20h. Она необходима для работы операционной системы.-4

Начало тела: |-------IOS PROC----------|

| | Переход на секцию инициализации:

|-------JMP BEGIN---------|

| Сведения об версии | НЕРАБОЧАЯ ЧАСТЬ ПРОГРАММЫ

|--------------------------|

Метка --- BEGIN: 1.-----|----- Вывод сообщения о загрузке.

|--------------------------|

| |

| 2.-----|----- Вербовка вектора для неё.

| 3.-----|----- Загрузка подпрограммы

| | в блок памяти.

| Всего 24 подпрограммы |

|--------------------------| -------------------------------

| Определение типов | Выполнение прочих функций:

| стандартных устройств | CON, PRN, NUL, PNP и SDA

| компьютера. | Использование данных файловой

| 4. | системы: BOOT и ROOT.

|--------------------------|

| Получение сведений о |

| ёмкости накопителя |

| информации |

| 5. |

|--------------------------|

| Загрузка системной |

| программы MSDOS.BIN |

| 6. |

|--------------------------|

| Открытие настроечного |

| файла IOS.CFG и |

| обработка сведений из |

| него. 7. ---|---------- Последнее действие.

| | Конец рабочей части

Выход ------ |-----------IRET-----------| ------ программы.

| |

|--------------------------|

| ПОЛЯ ДАННЫХ |

| |

Конец тела: |-------IOS ENDP----------| ------ Конец блока подпрограмм

| |

| Сведения о параметрах |

| файловой системы FAT12 |

|--------------------------| ------ Начало блока подпрограмм

| Системные подпрограммы |

| младшей части таблицы | Метка - Int00h:

| прерываний. Адреса | ...

| INT 00 - 07h и 10 - 20h | IRET

| | Int00hLen EQU $ = Int00h

| |

|--------------------------| ----------------------

| СТЁК ДЛЯ ВЫДЕЛЕНИЯ | Размер стёка:

| ОПЕРАТИВНОЙ ПАМЯТИ | 18 512 байт или 18 К

|--------------------------| -------------------

Программа ROM BIOS загружающая в память системные подпрограммы младшей части таблицы прерываний, с адресами INT 00h - 07h и 10h - 20h. Она необходима для работы операционной системы.-5
Программа ROM BIOS загружающая в память системные подпрограммы младшей части таблицы прерываний, с адресами INT 00h - 07h и 10h - 20h. Она необходима для работы операционной системы.-6
Программа ROM BIOS загружающая в память системные подпрограммы младшей части таблицы прерываний, с адресами INT 00h - 07h и 10h - 20h. Она необходима для работы операционной системы.-7

Программа ROM BIOS загружающая в память системные подпрограммы младшей части таблицы прерываний, с адресами INT 00h - 07h и 10h - 20h. Она необходима для работы операционной системы.-8
Программа ROM BIOS загружающая в память системные подпрограммы младшей части таблицы прерываний, с адресами INT 00h - 07h и 10h - 20h. Она необходима для работы операционной системы.-9
Программа ROM BIOS загружающая в память системные подпрограммы младшей части таблицы прерываний, с адресами INT 00h - 07h и 10h - 20h. Она необходима для работы операционной системы.-10
Программа ROM BIOS загружающая в память системные подпрограммы младшей части таблицы прерываний, с адресами INT 00h - 07h и 10h - 20h. Она необходима для работы операционной системы.-11
Программа ROM BIOS загружающая в память системные подпрограммы младшей части таблицы прерываний, с адресами INT 00h - 07h и 10h - 20h. Она необходима для работы операционной системы.-12
Программа ROM BIOS загружающая в память системные подпрограммы младшей части таблицы прерываний, с адресами INT 00h - 07h и 10h - 20h. Она необходима для работы операционной системы.-13
Программа ROM BIOS загружающая в память системные подпрограммы младшей части таблицы прерываний, с адресами INT 00h - 07h и 10h - 20h. Она необходима для работы операционной системы.-14
Программа ROM BIOS загружающая в память системные подпрограммы младшей части таблицы прерываний, с адресами INT 00h - 07h и 10h - 20h. Она необходима для работы операционной системы.-15
Программа ROM BIOS загружающая в память системные подпрограммы младшей части таблицы прерываний, с адресами INT 00h - 07h и 10h - 20h. Она необходима для работы операционной системы.-16
Программа ROM BIOS загружающая в память системные подпрограммы младшей части таблицы прерываний, с адресами INT 00h - 07h и 10h - 20h. Она необходима для работы операционной системы.-17
Программа ROM BIOS загружающая в память системные подпрограммы младшей части таблицы прерываний, с адресами INT 00h - 07h и 10h - 20h. Она необходима для работы операционной системы.-18

Скачать примерное системное ПО можно по ссылкам:

SYSTEM_x86
Исходники
https://disk.yandex.ru/d/7scZpX7D7egX-A
Исполняемые программы
https://disk.yandex.ru/d/1k9pGjTa6HiKCw
Справочная информация
https://disk.yandex.ru/d/dk6Q_vHT3WBUtw

ВНИМАНИЕ:

Многие из исходников, представленных здесь программ, а также файлов документации к ним (типа READ ME) имеют русскоязычный DOS-формат. Так многие из них, создавались на компьютерах со старой 16-ти разрядной системой DOS.

ПОЭТОМУ, для конвертирования файлов исходников программ и документации в формат Windows, лучше всего воспользоваться программой текстового редактора Microsoft Word из пакета Microsoft Office 2003.

При открытии файлов исходников (с расширениями *.ASM, *.BAS, *.PAS, *.CPP, *.INC и прочих) появляется диалоговое окно, в котором надо выбрать опцию "Формат DOS", а затем нажать <ENTER> или кликнуть левой клавишей мыши на кнопку "OK".

С файлами документации (с расширениями *.TXT, *.LOG, *.DOC и прочих) приложенным к исходникам данных программ для их конвертации из формата DOS в формат Windows, следует поступать также, с помощи этой же программы Microsoft Word из пакета Microsoft Office 2003.