Difference between revisions of "BIOS"
(→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 выглядит примерно вот так :
- У 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 перед запуском.
Оболочка запускается если в привод не вставлен игровой диск.