48242 (762399)
Текст из файла
ВВЕДЕНИЕ
В эпоху интенсивного развития высоких технологий и технологий Internet программирование для отошло на второй план. А между тем практически невозможно реализовать ничего стоящего без правильной конфигурации оборудования, в частности CMOS - энергонезависимой памяти компьютера. В данной статье мы рассмотрим устройство CMOS, его структуру и возможности программирования. Сразу оговорюсь, что программировать CMOS желательно из реального режима ОС; под ОС Windows это делается с помощью специальных драйверов VxD или SYS. В Сети существует достаточно источников документации по построению таковых, поэтому я на них останавливаться не буду. Естественно, что проводить все ниже перечисленные действия по записи значений в CMOS следует с особой осторожностью; иногда (!) можно потерять практически все значения конфигурации ПК. В таковом случае необходимо очистить CMOS; как это сделать - смотрите в документации к вашей материнской плате. Также я буду использовать язык ассемблера для иллюстрации конкретных примеров, а так же широко распространенный отладчик DEBUG.EXE, который прилагается практически с каждой версией ОС Windows/DOS.
ДАННЫЕ CMOS
CMOS является нечто вроде базы данных, которая предназначена для хранения информации о конфигурации ПК. Однако, в отличие от реальной БД, которая имеет реальный образ на магнитном носителе, CMOS хранит свои данные на микросхеме многократной записи (write many-read many). Программа установки BIOS SETUP при записи сохраняет в ней свою системную информацию, которую впоследствии сама же и считывает (при загрузке ПК). Каждая ячейка имеет размер в 1 байт.
Таблица данных имеет следующий вид
Адрес | Назначение |
00H-0DH | RTC (Real Time Clock) - часы реального времени (таймер) |
0EH | Байт статуса процедуры POST (результат загрузки ПК) |
0FH | Байт завершения работы ПК |
10Н | Тип дисковода |
11Н | Зарезервировано |
12Н | Тип(ы) винчестера (если значение < 15) |
13Н | Зарезервировано |
14Н | Байт конфигурации оборудования |
15Н-16Н | Размр базовой памяти |
17Н-18Н | Размер памяти за пределом 1 Мб |
19Н | Тип винчестера С: (если значение > 15) |
1АН | Тип винчестера D: (если значение > 15) |
1BH-20H | Зарезервировано |
21H-2DH | Зарезервировано |
2EH-2FH | Контрольная сумма CMOS (от 10Н - 20Н) |
30Н-31Н | Размер расширенной памяти за пределом 1 Мб |
32Н | Номер текущего века в BCD нотации (например 17Н) |
33Н | Другая информация |
34Н-3АН | Зарезервировано |
Некоторые адреса CMOS, защищены контрольной суммой. То есть запись в диапазон адресов 10Н-20Н должен сопровождаться корректировкой значений в ячейках 2ЕН-2FH. Иначе можно получить сообщение о неправильной установке параметров или о батарее CMOS. Контрольная сумма представляет собой 16-битную сумму всех значений, записанных в ячейки CMOS с 10Н по 20Н. В ячейку 2ЕН пишется старший байт суммы, а в 2FH - младший. В любом случае, мой вам совет - сначала сохраните старое значение CMOS (да и вообще все значения CMOS) а потом просто вычитайте или складывайте нужные значения с полученной контрольной суммой. Так проще.
ЧТЕНИЕ И ЗАПИСЬ CMOS
Чтение: для чтения значения из ячейки, запишите значение в порт 70Н адрес интересующей вас ячейки, а затем считайте значение из порта 71Н - это и будет интересующие вас значение. Например получим номер текущего века (MS Debug):
Нумерация веков идёт с 00Н (если так можно выразиться), поэтому значение 20Н вполне адекватно.
Запись: для записи значения в CMOS запишите значение адреса в порт 70Н, а затем новое значение в порт 71Н. Установим для примера новое значение века (так сказать J):
Теперь чтобы вернуть все как было, введем в порт 70Н значение 32Н, а в 71Н - 20Н:
Пусть вас не смущает отсутствие символа "Н" после цифр - все значения в MS Debug идут только в шестнадцатеричном виде.
ПОДРОБНЕЕ ОБ АДРЕСАХ CMOS
Итак, остановимся на подробном рассмотрении значений, хранящихся в CMOS.
Адрес (HEX) | Описание |
00Н | Текущая секунда |
01Н | Сигнальная секунда |
02Н | Текущая минута |
03Н | Сигнальная минута |
04Н | Текущий час |
05Н | Сигнальный час |
06Н | Текущий день недели (1 - Воскресенье) |
07Н | Текущий день месяца |
08Н | Текущий месяц |
09Н | Текущий год (только 2 последние цифры, напр. 98) |
Все значения RTC храняться в BCD формате как 2 полубайта но в десятичном формате. Например 31 (dec) хранится как 31 (hex).
Адрес (HEX) | Описание |
0AH | Регистр статуса RTC (# A): Биты 0-3 - Селектор уровня (установлены в 0110) Биты 4-6 - 22-уровневый делитель (установлен в 010) Бит 7 - В данный момент производится обновление (если == 0 то разрешено чтение) |
0BH | Регистр статуса RTC (# B): Бит 0 - Включен режим экономии времени (летнее); (0 = стандартное время; по умолч. = 0) Бит 1 - 12 или 24 часовой режим времени (если 0 то 12 часовой; по умолч. = 1) Бит 2 - Режим BCD даты (1=двоичный, 0 =BCD, по умолч. = 0) Бит 3 - Включить Square Wave (1=включить; по умолч. = 0) Бит 4 - Включить прерывание обновления (0=отключить, по умолч. = 0) Бит 5 - Включить сигнальное прерывание (0=отключить, по умолч = 0) Бит 6 - Включить периодическое прерывание (0=отключить, по умолч. = 0) Бит 7 - UIP флаг (Update In Progress), 0 - можно читать CMOS |
0CH | Регистр статуса RTC (# С): в основном не используется |
0DH | Регистр статуса RTC (# D): если бит 7=1, то питание CMOS включено, если бит 7=0 - то батарея разряжена. |
0EH | Байт диагностики загрузки (POST Byte): Биты 0 и 1 всегда равны 0. Бит 2 - Время правильное (1=верно, что сегодня не 30 февраля) Бит 3 - Неверный загрузочный жесткий диск (1=нельзя загрузиться с винчестера) Бит 4 - Ошибка размера RAM (1=POST нашла неверный размер RAM) Бит 5 - Неверная запись об оборудовании (1=неверное оборудование) Бит 6 - Неверная контрольная сумма (1=неверная сумма CMOS) Бит 7 - Утеря питания батареи CMOS (1=утеря питания) |
0FH | Байт статуса завершения работы ПК. Применяется чаще всего после перезагрузки ПК процедурой SETUP. Значения могут быть следующие: 0 , если была перезагр. по нажатии Ctrl-Alt-Del или неожиданный перезапуск. В любом случае - процедура POST НЕ выполняется 1 перезапуск после определения размера памяти 2 перезапуск после теста памяти 3 перезапуск после обнаружения ошибки памяти 4 перезапуск по запросу загрузчика ОС 5 перезапуск вследствие дальнего перехода (FAR JMP) на адрес 0:0467Н 6,7,8 перезапуск после проверки защищ. режима 80286 9 перезапуск после переназначения блока памяти (ф-я 0х87 прерыв. 0х15) |
10Н | Байт типа дисковода: Биты 0-3: первый дисковод Биты 4-7: второй дисковод В любом случае, значения битов могут быть следующими: 0000 = 0 = дисковод не установлен 0001 = 1 = 360 К 0010 = 2 = 1,2 Мб 0011 = 3 = 720 К 0100 = 4 = 1,44 Мб Например: 24Н - это диск А: размером 1,2М и диск В: размером 1,44М |
11Н | РЕЗЕРВ |
12Н | Тип винчестера (для дисков С: и D:, когда байт наход. В промежутке от 1 до 14). Биты 0-3: первый винчестер Биты 4 -7: второй винчестер В любом случае, значения битов могут быть следующими: 0000 = 0 = диск не установлен другое_значение = тип диска 1111 = см. адреса 19Н и 1АН |
13Н | РЕЗЕРВ |
14Н | Байт оборудования: Бит 0 = 1, если присутствует дисковод(ы) Бит 1 = 1, если присутствует матем. сопроцессор Биты 2, 3 не используются и равны 0 Биты 5, 4 - основной видеоадаптер: · 00 - нет или EGA · 01 - 40*25 EGA, CGA, VGA · 10 - 80*25 EGA, CGA, VGA · 11 - монохромный (ч/б) Биты 6, 7 - количество дисководов - 1 (00=1, 01=2, 10=3, 11=4) |
15Н, 16Н | Базовая память 15Н - младший байт 16Н - старший байт Могут быть равны: · 0100Н = 256К · 0200 Н = 512К · 0280Н = 640К |
17Н, 18Н | Дополнительная память свыше 1 Мб 17 Н - младший байт 18 Н - старший байт Размер записан в Кб. |
19Н | Тип диска № 0 (С:), если значение адреса (12 Н & 0FH) = 0FH |
20Н | Тип диска № 1 ( D:), если значение адреса (12Н & F0H) = F0H |
1BH-2DH | РЕЗЕРВ |
2ЕН, 2 FH | Контрольная сумма значений адресов от 10Н по 20Н · 2ЕН - старший байт · 2FH - младший байт |
30Н-31Н | РЕЗЕРВ |
32Н | Век в формате BCD |
33H | Другая информация (специфич. для машин AT/PS-2 класса) |
34Н-3FH | РЕЗЕРВ. Как показывает практика, эта область чаще всего свободна от системных данных (но не всегда!), поэтому можете записывать сюда свои личные данные (но не много ) для сохранения между перезагрузками) |
Итак, мы рассмотрели CMOS, его логическое строение и структуру. Конечно, в таблице приведены лишь общие для всех машин значения параметров CMOS, но тем не менее даже с этим «набором» можно сделать много «чего», например подключить отключенный администратором дисковод (см. адреса 14Н, 10Н, 2ЕН, 2АР) и т.д. В любом случае: будьте крайне осторожны, не делайте ничего такого, чего потом вы не сможете вернуть обратно . Всё же буду надеяться, что данная статья принесёт вам пользу.
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.