ФИЗТЕХ-СОФТ

 

Техническая документация

 

 

 

Содержание

 

1. РУКОВОДСТВО ПРОГРАММИСТА по BIOS

1.1. ПОДДЕРЖИВАЕМЫЕ ПРЕРЫВАНИЯ BIOS

1.2. ПОДДЕРЖИВАЕМЫЕ ПОЛЯ ОБЛАСТИ ПЕРЕМЕННЫХ BIOS

1.3. ИСПОЛЬЗУЕМЫЕ ПОЛЯ ОБЛАСТИ ДАННЫХ В СТАТИЧЕСКОМ ОЗУ

2. СИСТЕМНЫЕ УТИЛИТЫ

2.1. Программа SETUP.COM

2.2. Программа FLASHWR.COM

3. ОПИСАНИЕ ПРОТОКОЛА КАНАЛА УПРАВЛЕНИЯ PTSROM-DOS

3.1. ЛОГИКА КАНАЛА УПРАВЛЕНИЯ

3.2. ФОРМАТЫ УПРАВЛЯЮЩИХ ПАКЕТОВ ВЫСОКОГО УРОВНЯ

3.3. ФОРМАТЫ ПАКЕТОВ НИЗКОГО УРОВНЯ (ПАКЕТНЫЙ ПРОТОКОЛ)

 


1. РУКОВОДСТВО ПРОГРАММИСТА по BIOS

 

1.1. ПОДДЕРЖИВАЕМЫЕ ПРЕРЫВАНИЯ BIOS

 

INT 0 (деление на ноль)

Обработчик по умолчанию.

 

INT 1 (пошаговое выполнение)

Обработчик по умолчанию.

 

INT 2 (немаскируемое прерывание)

Обработчик по умолчанию.

 

INT 3 (точка останова)

Обработчик по умолчанию.

 

INT 4 (переполнение)

Обработчик по умолчанию.

 

INT 5 (копия экрана)

Обработчик по умолчанию.

 

INT 6 (неверный код операции)

Обработчик по умолчанию.

 

INT 7

Обработчик по умолчанию.

 

INT 8 (IRQ0 - таймер)

Обновляет текущее время в области переменных BIOS.

 

INT 9 (IRQ1 - контроллер клавиатуры)

Обработчик по умолчанию.

 

INT 0Ah (IRQ2 - видео)

Обработчик по умолчанию.

 

INT 0Bh (IRQ3 - COM2)

Обработчик по умолчанию.

 

INT 0Ch (IRQ4 - COM1)

Обработчик по умолчанию.

 

INT 0Dh (IRQ5 - LPT2)

Обработчик по умолчанию.

 

INT 0Eh (IRQ6 - контроллер дискет)

Обработчик по умолчанию.

 

INT 0Fh (IRQ7 - LPT1)

Обработчик по умолчанию.

 

INT 10h (Функции BIOS работы с видео)

На входе:
AH = 3 (Получить позицию и форму курсора)
BH = Номер видео страницы (игнорируется)
На выходе:
CX = Форма курсора (2000h)
DX = Позиция курсора (0)

На входе:
AH = 8 (Получить символ и атрибут из текущей позиции курсора)
На выходе:
AX = Символ (20h)
BH = Атрибут (7)

На входе:
AH = 9 (Записать символ и атрибут в текущую позицию курсора)
AL = Код символа
BH = Номер видео страницы (игнорируется)
BL = Атрибут (игнорируется)
CX = Количество символов (игнорируется)
На выходе: -

На входе:
AH = 0Ah (Записать символ в текущую позицию курсора)
AL = Код символа
BH = Номер видео страницы (игнорируется)
CX = Количество символов (игнорируется)
На выходе: -

На входе:
AH = 0Eh (Вывести символ с модификацией текущей позиции)
AL = Код символа
На выходе: -

На входе:
AH = 0Fh (Получить текущий видео режим)
На выходе:
AH = Ширина экрана (80)
AL = Видео режим(3 = Текстовый 80x25)
BH = Активная видео страница(0)

На входе:
AH = 13h (Вывести строку символов)
AL = Номер подфункции (игнорируется)
BH = Номер видео страницы (игнорируется)
BL = Атрибут (игнорируется)
CX = Длина строки
DX = Позиция курсора (игнорируется)
ES:BP = Адрес строки
На выходе: -

 

INT 11h (Получить список оборудования в AX)

Список оборудования см. ниже.

 

INT 12h (Получить размер основной памяти в AX)

 

INT 13h (Функции BIOS работы с дисками)

В случае ошибки устанавливается флаг переноса (CF), а код ошибки возвращается в регистре AH. Возможны следующие коды ошибок:

 

0
Нет ошибки.
1
Неизвестная функция.
3
Защита от записи (ошибка записи).
10h
Ошибка контрольной суммы (ошибка чтения).

На входе:
AH = 0 (Сбросить дисковую систему)
DL = Номер диска
На выходе:
CF, AH

На входе:
AH = 1 (Получить состояние последней операции)
DL = Номер диска
На выходе:
CF, AH

На входе:
AH = 2 (Прочитать заданное количество секторов)
AL = Количество секторов
CH = Номер цилиндра
CL = Номер сектора
DH = Номер головки
DL = Номер диска
ES:BX = Адрес буфера
На выходе:
CF, AH
AL = Количество прочитанных секторов

На входе:
AH = 3 (Записать заданное количество секторов)
AL = Количество секторов
CH = Номер цилиндра
CL = Номер сектора
DH = Номер головки
DL = Номер диска
ES:BX = Адрес буфера
На выходе:
CF, AH
AL = Количество записанных секторов

На входе:
AH = 4 (Проверить заданное количество секторов)
AL = Количество секторов
CH = Номер цилиндра
CL = Номер сектора
DH = Номер головки
DL = Номер диска
ES:BX = Адрес буфера
На выходе:
CF, AH
AL = Количество проверенных секторов

На входе:
AH = 8 (Получить параметры диска)
DL = Номер диска
На выходе:
CF, AH
BL = Тип диска (10h)
CH = Максимальный номер цилиндра
CL = Максимальный номер сектора
DH = Максимальный номер головки
DL = Количество дисков
ES:DI = Адрес таблицы параметров дискеты

На входе:
AH = 15h (Получить тип диска)
DL = Номер диска
На выходе:
AH = Тип диска (2 = Дисковод с детектором смены)

На входе:
AH = 16h (Получить состояние детектора смены дисковода)
DL = Номер диска
На выходе:
AH = Состояние детектора смены (0 = Смены диска не было)

 

INT 14h (Функции BIOS работы с последовательными портами)

На входе:
AH = 0 (Инициализировать порт)
AL = Параметры инициализации
DX = Номер порта
На выходе:
AX = Состояние порта

На входе:
AH = 1 (Передать символ)
AL = Код символа
DX = Номер порта
На выходе:
AH = Состояние порта

На входе:
AH = 2 (Получить символ)
DX = Номер порта
На выходе:
AH = Состояние порта
AL = Код символа

На входе:
AH = 3 (Получить состояние порта)
DX = Номер порта
На выходе:
AX = Состояние порта

На входе:
AH = 4 (Инициализировать порт)
AL, BX, CX = Параметры инициализации
DX = Номер порта
На выходе:
AX = Состояние порта

На входе:
AH = 5 (Передать пакет)
CX = Длина пакета
DX = Номер порта
DS:SI = Пакет
На выходе:
AH = Код ошибки (0 = нет ошибки, -1 = ошибка)

На входе:
AH = 6 (Получить пакет)
CX = Размер буфера под пакет
DX = Номер порта
DS:SI = Буфер под пакет
На выходе:
AH = Код ошибки (0 = нет ошибки, -1 = ошибка)
CX = Длина пакета

 

INT 15h (Специальные функции)

На входе:
AH = 0E900h (Сбросить таймер-сторож)
На выходе: -

На входе:
AH = 0E901h (Записать код диагностической контрольной точки)
CX = Код контрольной точки (коды 000h-1FFh зарезервированы для системы)
На выходе: -

На входе:
AH = 0E902h (Установить диагностический флаг ошибки DOS)
CX = Маска диагностического флага
На выходе: -

На входе:
AH = 0E903h (Разрешить запись на флэш-диск)
На выходе: -

На входе:
AH = 0E904h (Запретить запись на флэш-диск)
На выходе: -

На входе:
AH = 0E905h (Записать образ BIOS во флэш-память)
DS:SI = адрес буфера
На выходе: -

На входе:
AH = 0E906h (Прочитать setup-информацию с флэш-диска)
DS:SI = адрес буфера
На выходе:
AL = Код ошибки(0 = нет ошибки; 1 = setup-информация не найдена)

На входе:
AH = 0E907h (Записать setup-информацию на флэш-диск)
DS:SI = адрес буфера
На выходе: -

На входе:
AH = 0E908h (Установить точку останова)
CL = Флаги:
(0) = 0 Посылать отладочную информацию в канал управления.
1 Вызывать обработчик.
(1) = 0 Сработать однократно.
1 Срабатывать многократно.
ES:SI = Адрес точки останова.
DX:DI = Адрес обработчика.
На выходе:
AH = Код ошибки:

0
Нет ошибки.
1
Неправильный параметр.
2
Нет места в таблице точек останова.

На входе:
AH = 0E909h (Снять точку останова)
ES:SI = Адрес точки останова.
На выходе:
AH = Код ошибки:

0
Нет ошибки.
1
Неправильный параметр.

 

INT 16h (Функции BIOS работы с клавиатурой)

На входе:
AH = 0 (Получить код нажатой клавиши)
На выходе:
AH = Скан-код
AL = ASCII код

На входе:
AH = 1 (Получить состояние клавиатуры)
На выходе:
ZF = 1, если буфер клавиатуры пуст

На входе:
AH = 2 (Получить флаги клавиатуры)
На выходе:
AL = флаги клавиатуры (0)

 

INT 17h (Функции BIOS работы с параллельными портами)

Обработчик по умолчанию (работа с параллельным портом ведется как с COM3).

 

INT 18h (ROM BASIC)

Обработчик по умолчанию.

 

INT 19h (Перезагрузка)

 

INT 1Ah (Функции BIOS работы с таймером)

На входе:
AH = 0 (Получить счетчик таймера)
На выходе:
AL = Состояние переполнения счетчика таймера
CX:DX = Счетчик таймера

На входе:
AH = 1 (Установить счетчик таймера)
CX:DX = Счетчик таймера
На выходе: -

 

INT 1Bh (Пользовательский обработчик Ctrl/Break)

 

INT 1Ch (Пользовательский обработчик прерывания таймера)

 

Vector 1Dh (Адрес таблицы видео параметров)

Указывает на фиктивную таблицу.

 

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

Указывает на фиктивную таблицу.

 

Vector 1Fh (Адрес таблицы графических символов CGA)

Указывает на фиктивную таблицу.

 

1.2. ПОДДЕРЖИВАЕМЫЕ ПОЛЯ ОБЛАСТИ ПЕРЕМЕННЫХ BIOS

Область переменных BIOS расположена в сегменте 0040h.

 

Поддерживаются следующие поля:

 

0000h (8 слов)
Базовые адреса портов COM1-COM4 и LPT1-LPT4.
0010h (слово)
Список оборудования:
0
Наличие дисководов.
1
Наличие сопроцессора.
2-3
Количество памяти (01 = 16К; 10 = 32К; 11 = 64К+).
4-5
Видео адаптер/режим (01 = 40ц; 10 = 80ц; 11 = ч/б).
6-7
Количество дисководов (00 = 1; 01 = 2; 10 = 3; 11 = 4).
8
Наличие DMA.
9-11
Количество последовательных портов.
12
Наличие игрового порта.
13
Наличие принтера у Pcjr.
14-15
Количество параллельных портов.
0013h (слово)
Размер основной памяти в Кбайтах.
0017h (слово)
Флаги клавиатуры.
0019h (байт)
Значение, накапливаемое при Alt-вводе.
001Ah (слово)
Адрес начала очереди клавиатуры.
001Ch (слово)
Адрес конца очереди клавиатуры.
001Eh (32 байта)
Очередь клавиатуры.
0049h (байт)
Текущий видео режим.
004Ah (слово)
Ширина экрана.
006Ch (2 слова)
Счетчик таймера.
0070h (байт)
Флаг переполнения счетчика таймера.
0071h (байт)
Флаг Ctrl/Break (бит 7).
0072h (слово)
Тип перезагрузки.
0084h (байт)
Максимальный номер строки на экране.
0085h (слово)
Высота символа.

 

1.3. ИСПОЛЬЗУЕМЫЕ ПОЛЯ ОБЛАСТИ ДАННЫХ В СТАТИЧЕСКОМ ОЗУ (СТРАНИЦА 7 СМЕЩЕНИЕ 0FF00H).

 

(Слово прямое, слово инвертированное)
Размер области данных.
(Слово прямое, слово инвертированное)
Setup-информация загрузчика.
(Слово прямое, слово инвертированное)
Setup-информация BIOS.
(байт прямой, байт инвертированный)
Номер текущего элемента в массиве диагностической информации.
(Слово прямое, слово инвертированное)
Setup-информация загрузчика с флэш-диска.
(Слово прямое, слово инвертированное)
Setup-информация BIOS с флэш-диска.
(Размер определяется исходным текстом)
Массив диагностической информации.

 

Структура элемента массива диагностической информации:

 

(Слово прямое, слово инвертированное)
Код последней исполненной контрольной точки.
(Слово прямое, слово инвертированное)
Флаги ошибок загрузчика.
(Слово прямое, слово инвертированное)
Флаги ошибок BIOS.
(Слово прямое, слово инвертированное)
Флаги ошибок DOS.

Описание кодов контрольных точек и флагов ошибок см. в документе "РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ BIOS".

 

2. РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ BIOS

 

2.1. ПРОГРАММА SETUP.COM

Предназначена для просмотра и изменения setup-информации, записанной на флэш-диске, а также для просмотра диагностической информации.

Программа позволяет менять следующие параметры конфигурации (в скобках указаны значения по умолчанию):

Скорость канала управления: 110-115200 (9600).
Режим турбо (ON).
BIOS в ПЗУ (ON).
Таймер-сторож (ON).
Порт канала управления: COM1/COM2/COM3/COM4/LPT1 (COM1).
Скорость канала терминала: 110-115200 (115200).
Системный диск: A-E (A).
Два флаш-диска (ON).
Пропустить тестирование процессора (OFF).
Порт канала терминала: COM1/COM2/COM3/COM4/LPT1/OFF (COM1).
Пропустить тестирование обычной памяти (OFF).
Пропустить тестирование SRAM (OFF).
Пропустить тестирование EMS (OFF).

Опции разбиты на два подменю (меню setup загрузчика и меню setup BIOS). Кроме того, есть возможность загрузить значения setup по умолчанию, либо восстановить используемые в данный момент значения.

Отдельный пункт меню позволяет получить стек диагностической информации. Информация выдается в виде таблицы, состоящей из 4-х столбцов. В самой нижней строке - информация после последней перезагрузки. В первом столбце - код последней исполненной контрольной точки. Возможны следующие значения (L - загрузчик, B - BIOS, D - DOS):

L: Stack Loaded
L: IVT Initialized
L: Channel Initialized
L: Local Loading
L: Flash Tested
L: Load from ROM
L: Load ROM Comp
L: Load from Fla
L: Load Flash Co
B: Chipset Initialized
B: CPU Tested
B: Stack Tested
B: CRC Tested
B: IVT Initialized
B: Vars Initialized
B: Resident Init
B: Channel Initialized
B: Memory Tested
B: SRAM Tested
B: EMS Tested
B: PIC Initialized
B: PPI Initialized
B: DMA Initialized
B: Timer Initialized
B: Disks Initialized
B: Boot Loaded
B: Failed Boot
D: Job Point: ##

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

D: Job Point: 25

В остальных 3-х стоблбцах выдаются флаги накопленных ошибок соответственно для загрузчика, BIOS и DOS.

 

Флаги ошибок загрузчика:

Не прошел тест процессора.
Поврежден код загрузчика.
Поврежден код загрузчика в ОЗУ.
Повреждена setup-информация загрузчика во флэш-памяти.
Повреждена setup-инфрмация BIOS во флэш-памяти.
Повреждено поле смещения BIOS во флэш-памяти.
Повреждено поле размера BIOS size во флэш-памяти.
Поврежден BIOS во флэш-памяти.
Поврежден BIOS в ПЗУ.
Повреждено поле последней операции во флэш-памяти.
Ошибка канала.
Повреждена setup-информация во флэш-памяти.
Загрузка BIOS с канала управления не прошла.
Загрузка DOS с канала управления не прошла.

 

Флаги ошибок BIOS:

Не прошел тест процессора.
Не прошел тест стека.
Поврежден код BIOS.
Не прошел тест основной памяти.
Не прошел тест SRAM.
Не прошел тест EMS.
Поврежден boot-сектор.
Ошибка при чтении boot-сектора.
Повреждена setup-информация загрузчика.
Повреждена setup-информация BIOS.

Флаги ошибок DOS могут формироваться прикладной программой (см. документ "Руководство программиста по BIOS")

ВНИМАНИЕ! Выход из программы SETUP с сохранением может привести к разрушению информации на EMS-диске!

 

2.2. ПРОГРАММА FLASHWR.COM

Предназначена для разрешения и запрещения записи на флэш-диск, а также для записи образа BIOS во флэш-память.

FLASHWR ON
Разрешает запись на флэш-диск.

FLASHWR OFF
Сбрасывает буфер флэш-диска. Запрещает запись на флэш-диск.

FLASHWR BIOS <файл>
Записывает образ BIOS из заданного файла во флэш-память.

ВНИМАНИЕ! Разрешение записи на флэш-диск может привести к разрушению информации на EMS-диске!

 

3. ОПИСАНИЕ ПРОТОКОЛА КАНАЛА УПРАВЛЕНИЯ PTS ROM-DOS

 

3.1. ЛОГИКА КАНАЛА УПРАВЛЕНИЯ

В нормальном состоянии управляемая ЭВМ (MicroPC) находится в активном состоянии, то есть она в любой момент может послать сообщение, на которое управляющая ЭВМ, находящаяся в пассивном, ждущем состоянии, должна успеть отреагировать. Если же какое-либо сообщение хочет послать управляющая ЭВМ, она каким-либо образом должна произвести удаленную перезагрузку управляемой ЭВМ. Передача сообщений между управляемой и управляющей ЭВМ производится пакетами.

 

3.2. ФОРМАТЫ УПРАВЛЯЮЩИХ ПАКЕТОВ ВЫСОКОГО УРОВНЯ

 

Извещение о перезагрузке управляемой ЭВМ.

Пакет имеет длину 4 байта, содержащие слово "LOAD", и извещает управляющую ЭВМ о том, что произошла перезагрузка и можно посылать команду.

 

Команда от управляющей ЭВМ.

Пакет имеет длину 6 байт, содержащие слово "COMM" и 2-х байтовый код команды. Возможны следующие команды:

 

01
Требует получить setup-информацию.
02
Требует передать диагностическую информацию.

 

Диагностическая информация.

Пакет заголовка имеет длину 6 байт, содержит слово "DIAG" и 2-х байтовую длину диагностической информации в пакетах. Далее идет сама диагностическая информация пакетами. Каждый пакет имеет длину 134 байта и содержит слово "DIAG", 2-х байтовый номер пакета и 128 байт полезной информации.

 

Setup-информация.

Пакет имеет длину 8 байт и содержит слово "SETP" и 2-х байтовые setup-информации загрузчика и BIOS.

Содержимое setup-информации определяет, будет ли происходить передача BIOS и/или DOS.

 

Запрос от управляемой ЭВМ на передачу BIOS.

Пакет имеет длину 4 байта и содержит слово "BIOS".

 

Заголовок BIOS.

Пакет заголовка имеет длину 6 байт и содержит слово "BIOS" и 2-х майтовую длину образа BIOS в пакетах.

 

Запрос от управляемой ЭВМ на передачу пакета BIOS.

Пакет имеет длину 6 байт и содержит слово "BIOS" и номер требуемого пакета.

 

Пакет BIOS.

Пакет имеет длину 134 байта и содержит слово "BIOS", 2-х байтовый номер пакета и 128 байт полезной информации.

 

Подтверждение управляемой ЭВМ окончания приема BIOS.

Пакет имеет длину 6 байт и содержит слово "BIOS" и 2 байта 0.

 

Запрос от управляемой ЭВМ на передачу DOS.

Пакет имеет длину 4 байта и содержит слово "PTOS".

 

Заголовок DOS.

Пакет заголовка имеет длину 6 байт и содержит слово "PTOS" и 2-х байтовую длину образа PTOS в пакетах.

 

Запрос от управляемой ЭВМ на передачу пакета DOS.

Пакет имеет длину 6 байт и содержит слово "PTOS" и номер требуемого пакета.

 

Пакет DOS.

Пакет имеет длину 134 байта и содержит слово "PTOS", 2-х байтовый номер пакета и 128 байт полезной информации.

 

Подтверждение управляемой ЭВМ окончания приема DOS.

Пакет имеет длину 6 байт и содержит слово "PTOS" и 2 байта 0.

 

Отладочная информация.

Пакет имеет длину 32 байта, содержащие слово "DEBU" и содержимое регистров процессора 8088 в следующем порядке: SP, SS, ES, DS, BP, DI, SI, DX, CX, BX, AX, IP, CS, FLAGS. Отладочная информация передается при достижении соответствующей точки останова (см. документ "Руководство программиста по BIOS").

 

3.3. ФОРМАТ ПАКЕТОВ НИЗКОГО УРОВНЯ (ПАКЕТНЫЙ ПРОТОКОЛ)

Перед передачей пакета передающая сторона передает в канал байт 52h и ждет подтверждения от принимающей стороны в течение некоторого времени (для MicroPC это время составляет приблизительно 1 с), если подтверждение не было получено, то делается еще 4 попытки, после чего возвращается ошибка. Если же подтверждение было получено (байт 41h), то посылается следующая информация:

Два синхронизирующих байта 50h, 50h;
Байт размера пакета - 1 (данных);
Два байта CRC (данных);
Блок данных;
Два синхронизирующих байта F0h, F0h.

После этого передающая сторона ожидает подтверждения в виде двух байтов 59h, 59h. Если подтверждение не приходит, то делается еще 4 попытки, после чего возвращается ошибка.

См. документ "Руководство программиста по BIOS".

  • О компании
    • Новости
    • Наши клиенты
    • История
    • Карьера
  • Управление рисками
  • Защита информации StrongDisk
  • PTS-DOS
    • PTS-DOS 32
    • PTS-DOS 2000
    • ЛИЦЕНЗИОННЫЙ ДОГОВОР
  • Контакты
  • О компании
    • Новости
    • Наши клиенты
    • История
    • Карьера
  • Управление рисками
  • Защита информации StrongDisk
  • PTS-DOS
    • PTS-DOS 32
    • PTS-DOS 2000
    • ЛИЦЕНЗИОННЫЙ ДОГОВОР
  • Контакты
Сервис Доставка
flexsmm.comSetup.ru: Создай и раскрути свой сайт бесплатно

 

© phystechsoft.ru

2017    ООО "Физтех-софт"

Все права защищены.