Операционная система MS DOS (том 2)


Характеристики дисководов


Прежде чем начать работу с дисками на физическом уровне, необходимо выяснить конфигурацию дисковой подсистемы - сколько дисководов и какого типа подключено к компьютеру, сколько дорожек и головок имеется на каждом из дисководов и т.п. Способ, которым определяется конфигурация дисковой подсистемы, зависит от модели компьютера (PC, XT, AT), поэтому вначале займемся определением типа персонального компьютера.

ПЗУ BIOS BIOSсодержит по адресу FFFF:FFFE

байт, значение которого можно использовать для идентификации типа компьютера:

FF оригинальный IBM PC
FE XT, Portable PC
FD PCjr
FC AT
FB XT с памятью 640 К на материнской плате
F9 Convertible PC

Для компьютеров IBM PC и IBM XT конфигурация дисковой подсистемы определяется установкой переключателей на материнской плате, в частности, переключателями устанавливается количество подключенных к системе НГМД.

Машины IBM AT (и машины более высокого класса) имеют на материнской плате КМОП-память с малым энергопотреблением и питающуюся от аккумулятора (КМОП - это технология изготовления микросхем - КОМПЛЕМЕНТАРНАЯ пара МЕТАЛЛ-ОКИСЕЛ-ПОЛУПРОВОДНИК). В КМОП-памяти хранится информация о конфигурации дисковой подсистемы, при инициализации BIOS считывает эту информацию и записывает ее в свою внутреннюю область данных.

Для определения модели компьютера мы предлагаем следующую функцию:

/** *.Name pc_model * *.Title Определить модель компьютера * *.Descr Функция возвращает байт, идентифицирующий * модель персонального компьютера * *.Params Нет * *.Return Код модели персонального компьютера: * * 0xff - оригинальный PC; * 0xfe - XT, Portable PC; * 0xfd - PCjr; * 0xfc - AT; * 0xfb - XT с памятью 640К; * 0xf9 - Convertible PC. **/

#include <stdio.h> #include <dos.h> #include "sysp.h"

char unsigned pc_model(void) {

char unsigned _far *modptr;

modptr = FP_MAKE(0xf000,0xfffe);

return *modptr; }

Проанализировав значение, возвращаемое этой функцией, можно сделать предварительное заключение о конфигурации дисковой подсистемы компьютера. Если мы получили значения 0xff, 0xfd, 0xf9,




- Начало -  - Назад -  - Вперед -