             Некоторые особенности пакета SOLID C для ОС Estex
             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


                           СИ-КОМПИЛЯТОР

Коды возврата компилятора (1-й и 2-й проходы):

   00h  - Ok
   0FFh - были errors/warnings, ошибки выделения памяти или работы с файлами.


                        1-й проход компилятора

1. При компиляции "чужих" исходников ставить опцию "-k".

2. В опциях: -dNAME, -jN, -oNAME и -rP:S:H пробелы не допускаются.

3. Максимальная длина строки полного пути (disk\dir\file.ext) файлов
   равна 80 символов.

4. Файл "file.err" создается всегда по текущему пути входного .c файла.

5. Формат записи include-файлов только как:

     #include <file.ext>  - поиск ведется только в подкаталоге "INCLUDE"
                            расположения компилятора.

     #include "file.ext"  - поиск ведется только в каталоге расположения
                            входного .c файла.

Задание пути в имени файла не допускается!. Имя папки "INCLUDE" зарезерви-
ровано.

                        2-й проход компилятора

1. Позволяет компилировать несколько бОльшие исходники, по сравнению
   с фирменной версией.

2. Исправлены две фирменные ошибки:
     a) нельзя было указывать расширение для TMC-файлов
     b) зависание при компиляции запредельно больших исходников



                             АССЕМБЛЕР

Примечание: Поскольку ассемблер AS совместим с ассемблером M80 фирмы Microsoft
по формату записи ассемблерных текстов - в качестве документации на AS исполь-
зуется документация ассемблера M80. Отличие ассемблера AS от M80 заключается в
том, что у AS отсутствуют некоторые команды M80 (в основном, управление вывода
листингов).

1. Максимальная длина имен (включающих букву диска и каталоги) файлов
   равна 64 символа.

2. В псевдокоманде NAME('...') можно использовать также двойные (")
   кавычки.

3. Имя include-файла можно указывать без расширения. В этом случае будет
   использоваться расширение по-умолчанию ".asm". Это же правило действует
   и для входного asm-файла.

4. Поддерживаются три варианта записи недокументированных регистров:

        HX/XH      LX/XL  
        HY/YH      LY/YL  
        HIX/IXH    LIX/IXL

5. Псевдокоманды "EQU" и "=" идентичны.

6. Максимальная длина имен глобальных меток, передаваемых в объектный
   файл (rel-файл) зависит от режима работы ассемблера:

        6 символов   -  при указании опции "-t"
        8 символов   -  по-умолчанию
       30 символов   -  при указании опции "-x" (расширенный rel-формат)

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

7. Коды возврата ассемблера:

      00h  - Ok
      0FFh - были errors/warnings, ошибки выделения памяти
             или работы с файлами.



                               ЛИНКЕР

При линковке готовых си-программ, собираемых с библиотекой "clib.irl" необхо-
димо всегда указывать линкеру опцию "/gXMAIN". Она передает управление на
начальный startup-код си-программ. См. исходники библиотеки "clib".

1. Линкер работает только с именами входных файлов. Указание диска и пути
   расположения файлов не поддерживается.

2. Исправлены фирменные глюки:
     a) неверная работа с "@list" файлом
     b) не отслеживались запросы на request-файлы

3. При вставке exe-заголовка, параметры равны: ORG = 4100h, Stack = 0C000h.
   (Значение ORG-a может быть изменено опцией "/r").

4. Файл "list" - содержит одну ком-строку с агрументами. Отдельные аргументы
   могут начинаться с новой строки. В конце файла должна стоять пустая новая
   строка. Кол-во читаемых байт ограничено до 256 байт.

5. Поиск библы: сперва файл *.irl, после *.rel. Если не найден, выдается
   сообщение ошибки: "файл *.rel не найден".

6. Максимальная длина имен идентификаторов - 30 символов.

7. Метки вида ?labels не выводятся в sym-файл и на экран. Становятся
   "видимыми" только при опции /Q.

8. Отслеживается превышение размера 16kB для dll-библиотек (выдается
   предупреждение).

9. Коды возврата линкера:

      00h  - Ok
      0FFh - были ошибки выделения памяти или работы с файлами.



                            БИБЛИОТЕКАРЬ

1. Тип открываемого входного файла отслеживается не по его расширению,
а по внутреннему содержимому.

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

3. Глобальные символы "*" и "?" поддерживаются только для режима извлечения
модулей (опция "e"). В остальных режимах необходимо указывать реальное имя
файла.

4. Задание пути поддерживается только для файла библиотеки. Для rel-файлов
указание пути не поддерживается и используется путь расположения библиотеки.

5. В опции l(ist) (список модулей библиотеки), размеры "Code size: ..." и
"Data size: ..." выводятся в десятичном формате.

6. В опциях d(ump) и l(ist) вывод на экран можно остановить/продолжить при
нажатии на любую клавишу. При нажатии на Esc - выход из режима.

7. Коды возврата библиотекаря:

      00h  - Ok
      0FFh - были ошибки работы или операций с файлами.
