В последнее время при разработке программ заслуженную популярность приобрел язык Си. В связи с этим, а также учитывая отсутствие компиляторов на АГАТе, стало актуальной проблемой написание компилятора этого языка. После основательной переработки известного на 8-разрядных машинах Aztec C возник предлагаемый Компилятор. При его разработке мы старались сделать простым использование Компилятора как для программистов, писавших ранее на Бейсике и Ассемблере(АГАТа), так и для привыкших к среде компиляторов Си на IBM PC. Надеемся, что нам удалось реализовать эти пожелания хотя-бы частично...

Данное описание предполагает знакомство с основами языка Си (см. рекомендованную литературу). Если Вы не имеете возможности изучить язык Си самостоятельно, Вы имеете возможность пройти курсы по програмированию на Си в НМЦ АГАТ при школе 231.

Как работать с данным руководством: не знаю ...

Глава 1 Конфигурация ЭВМ.

Для работы Компилятора необходим АГАТ-9 практически любой конфигурации. Минимумом является один дисковод типа ЕС-5323.01, максимум - до 6 дисководов различных типов и принтер. Дополнительная память не используется.

Глава 2 Комплект поставки.

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

Глава 3 Основные понятия.

Меню - выведенный на экран дисплея список,по которому может быть сделан конкретный выбор. Передвижение курсора по пунктам меню осуществляется стрелками или "горячими" клавишами (см. ниже), выбор осуществляется нажатием клавиши '

'.

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

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

Тип файла - параметр, указывающий способ его использования.

Расширение - рекомендуемое, общепринятое(но ни в коем случае не обязательное) окончание имени файла. Например у файла 'FIRST.C' расширением является '.C'.

Каталог - список типов, длин и имен файлов, содержащихся на диске.

Текстовый файл - файл типа 'Т'(так он отображается в каталоге), последовательность символов, которую Вы можете ввести в ЭВМ посредством текстового редактора.

Перемещаемыый файл - файл типа 'R' или 'П'. Программа в машинных кодах, которую ,однако, невозможно запустить без предварительной обработки (Линкером). Для перемещаемых файлов принято расширение '.REL'.

Объектный файл - файл типа 'В'. Прелагаемое расширение - '.СОМ'. Программа в машинных кодах, которую можно запустить командой BRUN ДОСа или [RUN ОТЛАДЧИКа ...

Библиотечный файл - так же как и объектный, это файл типа 'В'. Для библиотечных файлов принято расширение '.LIB'. Файл содержащий базовые подпрограммы, и функции, обращения к которым могут содержаться в перемещаемом файле.

Проектный файл - текстовый файл, в котором содержится(записаннное по принятым соглашениям) руководство для Линкера. Для проектных файлов принято расширение '.PRJ'.

Ассемблерная программа - текстовый файл, содержащий программу на языке Ассемблера. Обычное расширение - '.ASM'.

Си программа - текстовый файл, в котором содержится текст программы на Си, записанный согласно лексическим правилам языка Си. Си программы обычно имеют расширение '.C'.

Заголовочный файл - текстовый файл, в котором содержатся стандартные описания функций, глобальных переменных и макросов(#define). Для заголовочные файлов принято расширение '.H'.

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

Компилятор - программа, преобразовывающая Си программу в перемещаемый файл. Состоит из трех частей - Препроцессора, обрабатывающего команды начинающиеся с '#'(такие как '#define', '#include' ...), собственно Компилятора, который создает Ассемблерную программу и Ассемблера, результатом работы которого является перемещаемый файл. Иногда в тексте будет встречаться слово Компилятор, понимаемое как вся среда в целом. По контексту будет ясно какое из значений используется.

Линкер - компоновщик объектных программ. Программа, сцепляющая перемещаемые и/или библиотечные файлы в объектную программу.

Глава 4 Что Вы должны знать.

Необходимо знакомство с ядром языка Си:

1. Понятия функции, оператора, блока, выражения, переменной, структуры, описателя.

2. Поток управления: реализация условных операторов 'if','switch'

                                циклов 'while','for','do - while'
                                операторы 'break','continue','goto'

3. Команды препроцессора.

4. Стандартные функции, включенные в библиотеку, соответствуют стандарту POSIX(здесь мы можем посоветовать книгу [3]).

Глава 5 Работа со средой.

Сразу после загрузки с диска с Компилятором Вы попадаете в основное меню см. рис.

/---------------------------------------------\
| Редактор Файлы Компилятор Линкер Информация |
\---------------------------------------------/

В этом, как, в прочем, и в любом другом меню, для того, чтобы выбрать альтернативу нужно пользоваться стрелками и вводом подтверждать свой выбор. Клавиша РЕД позволяет вернуться в предыдущее меню(для основного меню, 'предыдущим' является текстовый редактор). Кроме того можно использовать 'горячие' клавиши: каждому пункту меню соответствует клавиша(определяемая по заглавной букве пункта: например пункту 'Фаилы' соответствует клавиша 'Ф'),нажав на которую Вы выбираете этот пункт.

1) Выбрав 'Редактор' Вы переходите в меню редактора:

а) Редактировать - перейти в текстовый редактор

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

в) Вставить текст, если таковой был запомнен командой 'Запомнить текст'. Вставляет текст, содержащийся в буфере с заданной строки.

г) Запомнить текст - скопировать текст в буфер.

д) Перейти к строке - передвинуть курсор к указанной строке.

е) Вывод на бумагу - напечатаь текст при помощи принтера.

ж) Очистить буфер - полная очистка рабочего буфера - теряется редактируемый текст.

2) 'Файлы'

а) Каталог - вывести каталог текущего ГМД.

б) Прочитать файл - считать текстовый файл с текущего ГМД в память.

в) Записать файл - записать текстовый файл из памяти на текущий ГМД.

г) Удалить файл - ...

д) Текущее ДЗУ - сменить номер текущего НГМД.

е) Системное ДЗУ - сменить номер системного НГМД. Следует отметить, что системным может быть только дисковод ЕС-5323.01.

ж) Закрыть файл - установить защиту на файл.

з) Открыть файл - снять защиту с файла.

и) Вставить фрагмент - вставить фрагмент с диска.

к) Сохранить фрагмент - записать фрагмент на диск.

л) Выход из системы - среда заканчивает свою работу, осуществляется холодный перезапуск системы.

3) 'Компилятор'

а) Компилировать ( .С  .REL) - запустить препроцессор,компилятор, а затем ассемблер. Исходным файлом является Си программа, результирующим - перемещаемый файл.

б) Компилировать ( .С  .ASM) - запустить препроцессор и компилятор. Исходным файлом является Си программа, результирующим - программа на языке Ассемблера.

в) Ассемблировать - запустить ассемблер. Позволяет проассемблировать любую ассемблерную программу и записать результат в перемещаемый файл.

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

г) Из памяти/С диска - переключает режимы компиляции.

4) 'Линкер'

а) Линковать - запустить линкер. Необходимо задать имя проектного файла.

б) Начальный адрес - задать шестнадцатеричный начальный адрес для объектной программы.

в) Рабочий экран - войти в меню выбора рабочей экранной страницы:

        I) Выбрать режим отображения из следующих:
         Режимы отображения АГАТ
            МГДП  - Монохромный графический двойной плотности(256*512)
            ЦГВР  - Цветной графический высокого разрешения(256*256)
            ЦГСР  - Цветной графический среднего разрешения(128*128)
            МГВР  - Монохромный графический высокого разрешения(256*256)
            АЦР32 - Цветной алфавитно-цифровой(32*32)
            АЦР64 - Монохромный алфавитно-цифровой(64*32)
         Режимы отображения APPLE
            HGR   - Графический режим высокого разрешения(280*192)
            Т40   - Текстовый режим
            T40&HGR - смешанный режим HGR и Т40
        II) Выбрать номер страницы.

г) Запустить - запустить объектный файл (имя по умолчанию - имя проекта со смененным расширением).

5) 'Информация' - выдать справочную информацию по программе и подсказку к текстовому редактору.

Глава 6 Пользование текстовым редактором.

Назначение функциональных клавиш:

1 - удаление в буфер символа, на котором моргает курсор (аналог Delete на IBM PC).

2 - переключение режимов замена/вставка символа (Insert).

3 - удаление в буфер символа, стоящего слева от курсора (BackSpace).

4 - перемещение курсора по тексту на страницу вверх (PageUp).

5 - перемещение курсора по тексту на страницу вниз (PageDown).

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

7 - вставить в текст символ, сохраненный ранее в буфере.

8 - удалить в буфер часть строки, находящуюся справа от курсора.

9 - удалить в буфер текущую строку (Ctrl-Y).

0 - переключение режимов большие/маленькие буквы (CapsLock).

. - передвинуть курсор в начало текущей строки (Home).

= - передвинуть курсор в конец текущей строки (End).

F1 - включить рабочую страницу (см 4.(в).(I), аналог Alt-F5 в Turbo C), или, в режиме неавтоматическои замены, подтвердить желание заменить(например: На запрос Искать текст Вы вводите 'ИЩЕМ ОЧЕПЯТКУ', на запрос Заменить на - 'ИЩЕМ ОПЕЧАТКУ' и включаете неавтоматический режим. Редактируя текст, нажимаете F3, тем самым находите 'ИЩЕМ ОЧЕПЯТКУ' и нажимая на F1 подтверждаете свое желание произвести замену).

F2 - переключение палитры.

F3 - поиск и/или замена текста.

Ред - позволяет войти в основное меню.

Упр+J - табуляция (Tab).

Упр+V - позволяет ввести управляющий символ (например, что бы ввести '' необходимо нажать последовательно Упр+V, Упр+О).

Глава 7 Формат ассемблерных программ.

Во-первых следует отметить, что мнемоника команд процессора соответствуют общепринятым(см. [1]). Несколько отличаются псевдокоманды, и связано это в основном с тем, что результатом работы Ассемблера являются перемещаемые файлы(в отличие от объектных в СПК). Ниже приводятся все псевдокоманды и их описания(или отличия от СПК):

 fcb       - аналог dfb
 fcc       - анaлог asc
 fdb       - аналог dw
 rmb       - аналог ds
 dseg      - показывает, что информация, идущая далее, является данными(DataSegment).
 cseg      - показывает, что информация, идущая далее, является кодом(CodeSegment)
 common    - описывает глобальную переменную
 ext       - описывает внешнюю метку
 func      - описывает внешнюю функцию
 public    - делает метку видимой из других модулей
 end       - Конец модуля ...

Глава 8 Формат проектных файлов.

Проектные файлы имеют следующий формат:(каждое имя файла начинается с новой строки)

Вначале указывается имя результирующего объектного файла. Затем, в произвольном порядке, записываются имена одного или нескольких исходноых перемещаемых файлов. Далее следует(ют) имя(имена) библиотечного(ых) файла(ов). Здесь и всюду в дальнейшем используется следующее соглашение: если имя файла начинается с 'n:', где 1<n<N - количество ДЗУ, то файл берется с ДЗУ номер n, если имя начинается с 'S:' - то с системного, иначе используется текущее ДЗУ. Пример проектного файла:

/-Файл: Еxample.prj-\
|                   |
|Example.com        | - имя результата
|                   |
|Example.rel        | - перемещаемый файл
|1:ех1.rel          | - -----//----//----
|S:FLOAT.LIB        | - библиотека
\-------------------/

Рекомендуемая литература:

1. Описание ПЭВМ Агат.

2. Керниган Б., Ритчи Д. Язык программирования Си; Фьюэр А. Задачи по языку Си. М.:Финансы и статистика, 1985.

3. Беляков М.И., Рабовер Ю.И., Фридман А.Л. Мобильная операционная система: Справочник. - М.:Радио и связь, 1991.