Difference between revisions of "BIOS"

From PSXDEV
Jump to: navigation, search
(Boot)
(Boot)
Line 25: Line 25:
  
 
Программа начальной загрузки (RESET)
 
Программа начальной загрузки (RESET)
 +
 +
Исполнение начинается с адреса 0xBFC00000
  
 
* Инициализирует недокументированные аппаратные регистры CPU (тайминг и пр.)
 
* Инициализирует недокументированные аппаратные регистры CPU (тайминг и пр.)

Revision as of 18:40, 25 May 2015

512 KB ROM содержит стартовый загрузчик BIOS, копию ядра (kernel) PlayStation OS, а также "оболочку" (shell), которая открывается, если в консоль не вставлен игровой диск и содержит менеджер карт памяти и CD-проигрыватель.

Типичный ROM BIOS выглядит примерно вот так :

400px

  • У BIOS PU-7 и старых PU-8 микросхема 40 выводов.
  • Начиная с новых версий PU-8 (и далее) микросхема 32 вывода (в том числе и у PSOne)

Внутри скорее всего ROM с ионной имплантацией по маске.

Contents

Тайминги

Версии BIOS

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

Эталонной версией BIOS почти все эмуляторы считают SCPH1001.BIN. Этот BIOS был подробно дизассемблирован и считается "стабильным" для работы в эмуляторах.

Boot

Программа начальной загрузки (RESET)

Исполнение начинается с адреса 0xBFC00000

  • Инициализирует недокументированные аппаратные регистры CPU (тайминг и пр.)
  • Очищает память и регистры CPU
  • Если в PSX присутствует устройство PIO - выполняет его программу загрузки
  • Загружает kernel
  • Воспроизводит заставку (логотип SONY на белом фоне)
  • Запускает процедуру Main, которая либо загружает диск (если он вставлен), либо запускает SHELL

Kernel (PlayStation OS)

Ядро PS OS резидентно находится в памяти. Доступ к процедурам ядра производится через специальные таблицы (которые находятся по адресам 0xA0, 0xB0, 0xC0).

Второй способ вызова некоторых механизмов ядра - это инструкция Syscall (но набор её функций ограничен, по сути используется только для EnterCriticalSection / ExitCriticalSection)

Также приложениям доступна специальная "Таблица Таблиц" ядра (ToT), через которую программа может получить различные системные описатели и пр.

Выполнение пользовательских программ происходит в режиме CPU Kernel Mode, поскольку одновременно может быть запущен только один "процесс" (исполняемый файл игры).

Shell

Оболочка BIOS - это специальным образом запакованный исполняемый файл формата PS-X EXE, который находится внутри ROM.

Программа начальной загрузки распаковывает его и загружает на лету в RAM перед запуском.

Оболочка запускается если в привод не вставлен игровой диск.