Техника программирования на турбо-С
A L S T E V E N S
НННННННННННННННННННННННННННННННННННННННННННННННННННННН
ЪДДДДДДД¬
ЪД¬ ЪД¬ ¦ ЪДДД¬ ¦ ЪД¬
ЪДЩ АД¬ ЪД¬ ЪД¬ ЪДДД¬ ¦ АДДД¬ ЪДДДДД¬ ¦ ¦ АДЩ АДЩ
АД¬ ЪДЩ ¦ ¦ ¦ ¦ ¦ ЪДЩ ¦ ЪД¬ ¦ ¦ ЪД¬ ¦ ¦ ¦ ЪД¬ ЪД¬
¦ АД¬ ¦ АДЩ ¦ ¦ ¦ ¦ АДЩ ¦ ¦ АДЩ ¦ ¦ АДДДЩ ¦ АДЩ
АДДДЩ АДДДДДЩ АДЩ АДДДДДЩ АДДДДДЩ АДДДДДДДЩ
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¬
¦ MEMORY - RESIDENT UTILITIES, SCREEN I / O ¦
¦ AND PROGRAMMING TECHNIQUES ¦
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
MANAGEMENT INFORMATION SOURCE, INC.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
ЪДДДДДДДДДДДДД¬
¦ ¦
¦ M I S : ¦
ГДДДДДДДДДДДДДґ
¦ P R E S S ¦
ГДДДДДДДДДДДДДґ
Г - - - - - - ґ
ГДДДДДДДДДДДДДґ
ГДДДДДДДДДДДДДґ
ЖНННННННННННННµ
ФНННННННННННННѕ
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Ал. Стивенс
"ТЕХНИКА ПРОГРАММИРОВАНИЯ НА ТУРБО СИ"
( c ) пеpевод на pусский язык AcademySoft, 1989.
Предисловие..................................................... 5
Обзор разделов.................................................. 7
ГЛАВА 1......................................................... 9
Интерактивное программное обеспечение, управляющее изображением. 9
ГЛАВА 2......................................................... 14
Язык Cи........................................................ 14
Краткая история языка Си....................................... 14
Особенности языка Си........................................... 15
Достоинства языка Си........................................... 17
Одобрение языка Си............................................. 18
Рекомендуемая литература по Си ................................ 18
ГЛАВА 3 ........................................................ 20
Компилятор Турбо Си ........................................... 20
Два Турбо Си .................................................. 21
Настройка интегрированной среды ............................... 21
Редактор Турбо Си ............................................. 22
Компоновщик Турбо Си .......................................... 23
Утилита построителя задач (Make) в Турбо Си ................... 23
Обнаружение ошибок при компиляции и компоновке ................ 24
Программные средства низкого уровня ........................... 24
Начальная установка ........................................... 25
Модели памяти ................................................. 25
Библиотека исходных модулей ................................... 25
Заключение .................................................... 25
ГЛАВА 4 ........................................................ 26
Функции общего назначения ..................................... 26
Исходные модули функций общего назначения ..................... 28
Заключение..................................................... 32
ГЛАВА 5 ........................................................ 33
Экранные окна ................................................. 33
Экранное окно ................................................. 33
Архитектура видеопамяти ....................................... 36
"Снег" и обратный ход луча развертки .......................... 39
Заключение .................................................... 41
ГЛАВА 6 ........................................................ 42
Библиотека оконных функций .................................... 42
Стековые окна ................................................. 42
Слоеные окна .................................................. 43
Оконные функции ............................................... 46
Листинги оконных функций ...................................... 51
Описание программы: twindow.h ................................. 54
Описание программы: twindow.c ................................. 66
Примеры окон .................................................. 69
Перемещение окна ............................................. 69
Подъем и опускание окон ....................................... 72
Назначение заголовков и изменение цветов окна ................. 74
Сравнение стековых и слоеных окон ............................. 76
Перемещение, подъем, скрытие окон, меню, изменение интенсив. .. 77
Резюме ........................................................ 82
ГЛАВА 7 ........................................................ 83
Контекстно-управляемые окна подсказки ......................... 83
Программирование окон подсказки ............................... 84
Текстовый файл окна подсказки ................................. 86
Функции подсказки ............................................. 88
Изменение функциональной клавиши подсказки .................... 88
Изменение функции подсказки ................................... 88
Выключение подсказки .......................................... 89
Исходный листинг: thelp.c ..................................... 89
Описание программы: thelp.c ................................... 91
Пример контекстно-управляемой подсказки ....................... 92
Резюме ........................................................ 94
ГЛАВА 8 ........................................................ 95
Иcпользование данных в окнах .................................. 95
Шаблон ввода данных ........................................... 95
Поле ввода данных ............................................. 96
Позиция ....................................................... 96
Атрибуты ...................................................... 96
Буфер ......................................................... 96
Проверка допустимости значений ................................ 96
Help-информация ............................................... 97
Маска вводимых данных ......................................... 97
Приглашения к вводу в поле (Prompts) .......................... 97
Ввод данных ................................................... 98
Функции сбора данных .......................................... 98
Исходный текст: entry.c ....................................... 103
Описание программы: entry.c ................................... 109
Пример: Ввод данных в определенном порядке .................... 112
Резюме ........................................................ 117
ГЛАВА 9 ........................................................ 118
Оконный текстовый редактор .................................... 118
Команды тестового редактора ................................... 119
Управление курсором ........................................... 119
Постраничная работа ........................................... 120
Команды работы с блоками текста ............................... 120
Команды редактирования ........................................ 121
Функция, реализующая текстовый редактор ....................... 121
Исходный листинг: editor.c .................................... 122
Описание программы: editor.c .................................. 134
Пример: Использование редактора ............................... 138
Резюме ........................................................ 140
ГЛАВА 10 ....................................................... 141
Оконные меню .................................................. 141
Меню .......................................................... 141
Процесс, образующий оконное меню .............................. 142
Функции поддержки меню ........................................ 143
Исходный листинг: tmenu.c ..................................... 144
Описание программы: tmenu.c ................................... 147
Пример оконного меню .......................................... 148
Резюме ........................................................ 151
ГЛАВА 11 ....................................................... 152
Резидентные программы ......................................... 154
Прерывания .................................................... 154
Векторы прерывания ............................................ 154
Аппаратные прерывания ......................................... 155
Программные прерывания ........................................ 155
ДОС - однозадачная операционная система ....................... 155
TSR-программы ................................................. 157
Программы обработки прерываний ................................ 158
Резидентные утилиты ........................................... 158
Что может быть резидентным .................................... 159
Построение TSR-программ ....................................... 160
Превращение программы в резидентную ........................... 161
Резидентна ли уже программа? .................................. 161
Захват прерывания ............................................. 162
Величина TSR-программы ........................................ 163
Переключение контекстов ....................................... 165
Стек .......................................................... 165
Program Segment Prefix (PSP) .................................. 166
Дисковый буфер ................................................ 172
Прерывание от клавиатуры (9) .................................. 173
Прерывание от таймера ......................................... 173
Проблема реентерабельности ДОС ................................ 174
Два стека ДОС ................................................. 174
Системный флажок занятости (0х34) ............................. 174
Прерывание DOSOK .............................................. 175
Дисковое прерывание ROM-BIOS.(0х13) ........................... 176
Прерывание Ctrl-Break в ДОС.(0х23) ............................ 177
Выполнение TSR-программы ...................................... 177
Завершение TSR-программы ...................................... 177
Приостановка и возобновление выполнения TSR-программы ......... 179
Выводы ........................................................ 179
ГЛАВА 12 ....................................................... 180
Построение резидентных программ ............................... 180
Пример TSR-программы - "часы" ................................. 180
Превращение программы в резидентную ........................... 180
Прерывание по делению на ноль ................................. 181
Выполнение обработчика прерываний от таймера .................. 182
Связывание старого вектора прерывания по таймеру .............. 182
Сохранение и переключение контекста стека ..................... 182
Вычисление времени ............................................ 182
Программы TSR-драйвера ........................................ 185
Действия трех программных модулей ............................. 186
Размер TSR-программы .......................................... 186
Присвоение "горячего ключа" ................................... 186
Сигнатура TSR-программы ....................................... 188
Коммуникационные прерывания ................................... 188
Подготовка к резидентности .................................... 189