Файл: jourdain_spravochnik_programmista.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 04.07.2020

Просмотров: 3050

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.




Робер Журден. Справочник программиста на персональном

компьютере фирмы IBM






Оглавление.




Введение

Соглашения о числах, принятые в этой книге.

Введение


Глава 1. Системные ресурсы.

Раздел 1. Ревизия системных ресурсов.

Доступ к микросхеме интерфейса с периферией 8255.

Определение типа IBM PC.

Определение версии MS DOS.

Определение числа и типов адаптеров дисплея.

Определение числа и типа дисковых накопителей.

Определение числа и типа периферийных устройств.

Ревизия количества памяти.

Раздел 2. Управление прерываниями.

Программирование контроллера прерываний 8259.

Запрет/разрешение отдельных аппаратных прерываний.

Написание собственного прерывания.

Дополнение к существующему прерыванию.

Раздел 3. Управление программами.

Манипуляции с памятью.

Запуск одной программы из другой.

Использование команд интерфейса с пользователем из программы.

Сохранение программы в памяти после завершения.

Загрузка и запуск программных оверлеев.

Преобразование программ из типа .EXE в тип .COM.

Глава 2. Таймеры и звук.

Раздел 1. Установка и чтение таймера.

Программирование микросхемы таймера 8253/8254.

Установка/чтение времени.

Установка/чтение даты.

Установка/чтение часов реального времени.

Задержка программных операций.

Операции запрограммированные во времени.

Управление работой в реальном времени.

Генерация случайных чисел с помощью микросхемы таймера.

Раздел 2. Создание звука.

Программирование генератора звука 76496 (только PCjr).

Генерация тона.

Генерация звука одновременно с другими действиями.

Гудок динамика.

Генерация набора тонов.

Генерация строки тонов, одновременно с другими операциями.

Создание плавного перехода тонов.

Создание звуковых эффектов.

Одновременная генерация разных звуков.

Глава 3. Клавиатура.

Раздел 1. Управление клавиатурой.

Очистка буфера клавиатуры.

Проверка символов в буфере.

Ожидать ввод символа и не выводить его на экран.

Ожидание нажатия клавиши и эхо на экран.

Прием символа без ожидания.

Получение строки символов.

Проверка/установка статуса клавиш-переключателей.

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

Перепрограммирование прерывания клавиатуры.

Раздел 2. Доступ к отдельным клавишам.

Использование клавиш <BackSpace>, <Enter>, <Escape> и <Tab>.

Использование клавиш-переключателей: <Shift>, <Ctrl> и <Alt>.

Использование клавиш-переключателей: NumLock, CapsLock, Ins и ScrollLock.

Использование цифровой дополнительной клавиатуры и кла-

виш перемещения курсора.

Использование функциональных клавиш.

Перепрограммирование отдельных клавиш.

Создание макроопределений для отдельных клавиш.


Создание процедуры обработки Ctrl-Break.

Перепрограммирование клавиши PrtSc.

Раздел 3: Сводка кодов клавиш и применений.

Предопределенное использование клавиш.

Сводная таблица скан-кодов.

Сводная таблица кодов ASCII

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

Сводная таблица расширенных кодов.

Глава 4. Вывод на терминал.

Раздел 1. Управление выводом на терминал.

Программирование контроллера дисплея 6845.

Установка/проверка режима дисплея.

Установка атрибутов/цветов символов.

Установка цвета границы экрана.

Очистка части/всего экрана.

Переключение между видеоадапторами.

Раздел 2. Управление курсором.

Установка курсора в абсолютную позицию.

Относительное позиционирование курсора

Включение и выключение курсора.

Изменение формы курсора.

Чтение/сохранение/восстановление позиции курсора.

Создание альтернативных типов курсора.

Раздел 3. Вывод символов на экран.

Вывод на экран одного символа.

Вывод строки символов на экран.

Чтение символа и его атрибутов в данной позиции.

Создание специальных символов.

Сводка данных для описания символов.

Раздел 4. Вывод точечной графики.

Установка цветов для точечной графики.

Рисование точки на экране (монохромный, цветной и PCjr).

Рисование точки на экране (EGA).

Определение цвета точки экрана.

Рисование линий на экране.

Заполнение областей экрана.

Графический вывод с использованием символов псевдографики.

Раздел 5. Сдвиг экрана и страницы.

Вертикальный сдвиг текстового экрана.

Сдвиг текстового экрана горизонтально.

Переключение между текстовыми страницами.

Сдвиг между страницами текста.

Глава 5. Дисковые накопители.

Раздел 1. Управление распределением диска.

Чтение таблицы размещения файлов.

Определение доступного дискового пространства.

Получение/установка размера файла.

Восстановление после ошибок, связанных с нехваткой

пространства на диске.

Раздел 2. Работа с каталогами диска.

Чтение/изменение корневого каталога.

Создание/удаление подкаталога.

Чтение/изменение подкаталога.

Получение/установка текущего каталога.

Получение/установка времени и даты последнего доступа к

файлу.

Спрятанные и защищенные от записи файлы.

Чтение/изменение метки тома.

Раздел 3. Подготовка к работе с файлами.

Установка/проверка накопителя по умолчанию.

Создание/удаление файла.

Открытие/закрытие файла.

Переименование файла; изменение позиции файла в каталоге.

Подготовка к файловым операциям.

Анализ информации командной строки.

Раздел 4. Чтение и запись файла.

Программирование контроллера НГМД 765 и микросхемы пря-

мого доступа к памяти 8237.

Чтение/запись определенных секторов.


Запись в последовательные файлы.

Чтение из последовательных файлов.

Запись в файлы прямого доступа.

Чтение из файлов прямого доступа.

Проверка данных после операций чтения/записи.

Определение дисковых ошибок и восстановление после них.

Глава 6. Принтер.

Раздел 1. Управление работой принтера.

Инициализация порта принтера/повторная инициализация

принтера.

Проверка того, что принтер связан с машиной.

Интерпретация ошибок принтера и восстановление после них.

Переключение между двумя или несколькими принтерами.

Раздел 2. Установка спецификаций печати.

Установка текстового и графического режимов.

Управление расстоянием между строками.

Управление движением бумаги.

Управление положением печатающей головки.

Установка позиций табуляции.

Изменение шрифта печати.

Сравнение возможностей принтеров IBM.

Раздел 3. Посылка данных на принтер.

Вывод текстовых или графических данных на принтер.

Выравнивание правого поля.

Пропорциональная печать.

Печать специальных символов.

Копирование экрана на принтер (дамп экрана).

Глава 7. Ввод/вывод.

Раздел 1. Доступ к последовательному порту.

Программирование микросхемы UART 8250.

Инициализация последовательного порта.

Установка текущего коммуникационного порта.

Определение статуса коммуникационного порта.

Инициализация и управление модемом.

Передача данных.

Получение данных.

Посылка/получение данных с помощью коммуникационного

прерывания.

Сводка управляющих кодов, используемых при коммуникации.

Раздел 2. Создание драйвера устройства.

Создание заголовка драйвера.

Создание стратегии устройства.

Создание обработчика прерывания устройства.

Доступ к драйверу устройства.

Обнаружение и анализ ошибок устройства.

Раздел 3. Использование специальных устройств ввода/вывода.

Чтение/запись с кассетного магнитофона.

Чтение позиции светового пера.

Получение аналогового ввода через игровой порт.

Получение цифрового ввода из игрового порта.


Приложения.

Приложение А. Двоичные и шестнадцатиричные числа и адре-

сация памяти.

Приложение Б. Битовые операции в Бейсике.

Приложение В. Основные сведения об языке ассемблера.

Приложение Г. Включение ассемблерных процедур в программы

на Бейсике.

Приложение Д. Использование драйвера устройства ANSI.SYS.

Приложение Е. Набор инструкций микропроцессора 8088.

Приложение Ж. Набор инструкций микропроцессора 80286.

Приложение З. Толковый словарь IBM PC.



Глава 1. Системные ресурсы.





Раздел 1. Ревизия системных ресурсов.




Одной из первых задач после загрузки задачи является проверка

куда мы попали: на каком типе IBM PC запущена задача?... под


какой версией MS DOS?... сколько имеется памяти?... все ли необ-

ходимое оборудование присутствует? Имеется три способа получения

этой информации. Наименее элегантный способ - спросить об этом у

пользователя (но знает ли он ответы?). Намного лучше получить всю

доступную информацию из установки переключателей на системной

плате. Но эта установка не всегда соответствует реальности. Поэ-

тому лучше всего использовать третью возможность - получить пря-

мой доступ к требуемому оборудованию или прочитать нужную инфор-

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

может служить отправной точкой для получения требуемой информа-

ции, то этот раздел начинается с обсуждения микросхемы, содержа-

щей эту информацию - микросхемы интерфейса с периферией 8255.

Программа может получить доступ к оборудованию только двумя

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

соответствующему присоединенному оборудованию (обычно бывает

занята лишь малая доля из 65535 возможных адресов портов). Или

программа может обратиться к любому из более чем миллиону адресов

оперативной памяти. Сводная таблица адресов портов приведена в

[7.3.0]. На рис. 1-1 показано как распределены в памяти опера-

ционная система и программы.




1.1.1 Доступ к микросхеме интерфейса с периферией 8255.




Микросхема интерфейса с периферией Intel 8255 - лучшее место,

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

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

сообщает об установке переключателей на системной плате. Она

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

периферийных устройств, включая микросхему таймера 8253. Из машин

семейства IBM PC только AT не использует микросхему 8255; он

хранит информацию об оборудовании вместе с часами реального вре-

мени в специальной микросхеме с независимым питанием. Однако AT

использует те же адреса портов, что и 8255, для работы с клавиа-

турой и управления микросхемой таймера.

Микросхема 8255 имеет три однобайтных регистра, называемых от

порта A до порта C. Адреса этих портов от 60H до 62H сответствен-

но. Все три порта можно читать, но писать можно только в порт B.

Для PC, установка бита 7 порта B в 1 изменяет информацию, содер-

жащуюся в порте A. Аналогично для PC установка бита 2 определяет

содержимое четырех младших битов порта C, а установка бита 3

делает то же самое для XT. Содержимое этих регистров следующее:


Порт A (60H)

когда в порте B бит 7=0

биты 0-7 PC,XT,PCjr,AT: 8-битные скан-коды с клавиатуры

когда в порте B бит 7=1 для PC

бит 0 PC: 0 = нет накопителей на дискетах

1 PC: не используется

2-3 PC: число банков памяти на системной плате

4-5 PC: тип дисплея (11 = монохромный,

10 = цветной 80*25, 01 = цветной 40*25)

6-7 PC: число накопителей на дискетах



Порт B (61H)

бит 0 PC,XT,PCjr: управляет каналом 2 таймера 8253

1 PC,XT,PCjr: вывод на динамик

2 PC: выбор содержимого порта C

PCjr: 1 = символьный режим, 0 = графический

3 PC,PCjr: 1 = кассетный мотор выключен

XT: выбор содержимого порта C

4 PC,XT: 0 = разрешение ОЗУ

PCjr: 1 = запрет динамика и мотора кассеты

5 PC,XT: 0 = разрешение ошибок щелей расширения

6 PC,XT: 1 = разрешение часов клавиатуры

5-6 PCjr: выбор динамика (00 = 8253, 01 = кассета,

10 = ввод/вывод, 11 = микросхема 76496)

7 PC: выбор содержимого порта A

PC,XT: подтверждение клавиатуры



Порт C (62H)

когда в порте B бит 2=1 для PC или бит 3=1 для XT

биты 0-3 PC: нижняя половина переключателя 2 конфи-

гурации (ОЗУ на плате расширения)

0 PCjr: 1 = введенный символ потерян

1 XT: 1 = есть мат. сопроцессор

PCjr: есть карта модема

2 PCjr: есть карта НГМД

2-3 XT: число банков памяти на системной плате

3 PCjr: 0 = 128K памяти

4 PC,PCjr: ввод с кассеты

XT: не используется

5 PC,XT,PCjr: выход канала 2 8253

6 PC,XT: 1 = проверка ошибок щелей расширения

PCjr: 1 = данные с клавиатуры

7 PC,XT: 1 = контроль ошибок четности

PCjr: 0 = кабель клавиатуры подсоединен

когда в порте B бит 2=0 для PC или бит 3=0 для XT

биты 0-3 PC: верхняя половина переключателя 2 конфи-

гурации (не используется)

0-1 XT: тип дисплея (11 = монохромный,

10 = цветной 80*25, 01 = цветной 40*25)

2-3 XT: число накопителей НГМД (00 = 1 и т.д.)

4-7 PC,XT: то же, что и с установленными битами


Отметим, что 0 в одном из битов регистра соответствует уста-

новке переключателя "off".

AT хранит информацию о конфигурации в микросхеме MC146818

фирмы Motorola, вместе с часами реального времени. Он вовсе не

имеет микросхемы 8255, хотя для управления микросхемой таймера и

приема данных с клавиатуры используются те же самые адреса пор-

тов. Микросхема имеет 64 регистра, пронумерованных от 00 до 3FH.

Для чтения регистра нужно сначала послать его номер в порт с

адресом 70H, а затем прочитать его через порт 71H. Различные

параметры конфигурации обсуждаются на последующих страницах.

Приведем здесь только краткую сводку:


Номер регистра Использование

10H тип накопителя НГМД

12H тип накопителя фиксированного диска

14H периферия

15H память на системной плате (младший байт)

16H память на системной плате (старший байт)

17H общая память (младший байт)

18H общая память (старший байт)

30H память сверх 1 мегабайта (младший байт)

31H память сверх 1 мегабайта (старший байт)



Высокий уровень.


В данной книге имеется множество примеров доступа к этим пор-

там. Ниже приводится программа на Бейсике, устанавливающая число

дисковых накопителей, присоединенных к IBM PC. Прежде чем прочи-