  Версии C--.
-----------------

   Версия   * Комментарии
   -----------------------
  До 0.187  - Большое количество версий, с большим изменением содержимого.

     0.187a - VGAX.H-- изменён.
            - VGA.H-- дополнен.
            - VGAFILL.H-- добавлен вновь.

     0.188  - Исправлены две ошибки в операторах сравнения.
            - Spiffed документы немного больше.
            - KEYCODES.H-- изменён и дополнен.
            - VIDEO.H-- изменён и дополнен.
            - WRITEHEX (word_value) добавлена в WRITE.H--.
            - STARS.C-- добавлен вновь.
            - DPMI.H-- и DPMI.C-- добавлены вновь.
            - добавлены условные выражения ZEROFLAG и NOTZEROFLAG.

     0.189  - Исправлена ошибка local_var = seg_reg .
            - Версии ранее этой применять не рекомендуется!

     0.189a - Документы spiffed.
            - STARS.C-- изменён.
            - DOS.H-- дополнен.
            - COMPLETE.C-- добавлен.
            - DPMI.H-- и DPMI.C-- изменены.
            - DOSWRITESTR () добавлена в DOS.H--.

     0.190  - DOSWRITESTRING() удалена из внутренней библиотеки.
            - DOS.H-- дополнен.
            - DATETIME.C-- добавлен.
            - Документы spiffed.
            - Добавлены 3 цветовые схемы для всех зануд, кто
              не любит Цветной Схемы 1.
            - VIDEO.H-- дополнен.

     0.190a - FIXPATH.C - ver 1.1 добавлен (автор Jean-Marc Lasgouttes)
            - Цветная Схема 3 в Work Bench немного изменена.
            - Исправлена ошибка в Num Pad в Work Bench
              (теперь версия Бета 0.120).
            - найдена, но не исправлена ошибка поиска в Work Bench
            - найдена и исправлена ошибка в TINYDRAW.C-- выбор файла.
            - VCPI.H-- и VCPI.C-- добавлены.
            - ENCRYPT.C-- добавлен.
            - BOUNCE.C-- изменён.

     0.191  - Найдена и исправлена ошибка в функциях, возвращающих
              32-разрядные значения.
            - 'fixed32u' и  'fixed32s' теперь зарезервированные ключевые
              слова, они будут использоваться для определения в будущем
              32-битных переменных с фиксированной запятой (16bit.16bit).
            - Документы немного обновлены.
            - добавлены много символьные константы.
              Например: 'ab'.

     0.192  - Вся имевшаяся ранее поддержка VESA из VIDEO.H-- удалена.
            - проделана некоторая работа по 32-битным переменным с
              фиксированной запятой.
            - VESA.H-- и VESA.C-- добавлены.
            - Оскорбительная строка в POW4.C-- удалена.

     0.192a - WAIT() добавлена в SYSTEM.H--.
            - ДОБАВЛЕНА ПОДДЕРЖКА ЗВУКОВЫХ ПЛАТ!!!
              За весь код благодарность Michael B. Martin.
              Были добавлены следующие файлы:
              SB.H--, SBDMA.H--, SBDETECT.C--, SBGETVOL.C--,
              SBSETVOL.C--, SB_DMA.C-- и SB_DMA_.C--.
            - стал ясен весь список процедур.

     0.192b - FIXPATH.C-- ver 1.1 заменён на 1.2 ver.
            - TSR.H-- добавлен.
            - KEEP() перемещена из DOS.H-- в TSR.H--.
            - PCX.H-- и PCX.C-- добавлены.

     0.192c - Процедуры добавлены в VGAX.H--.

     0.192d - файлы примеров, теперь рассортированы по каталогам.
            - VGAXFNT5.H-- и XFONT5.C-- добавлены.

     0.193  - Устранена ошибка в обработке переменных типа long и dword
              (classic cut and paste bug).

     0.194  - Начата работа над возможностью выводить файл в формате OBJ.
            - добавлена поддержка Logitech Cyberman (занятная игрушка).

     0.195  - Доделан вывод файла в формате OBJ.
            - Изменён C-- Work Bench - в него включена поддержка
              форматов OBJ и EXE выходного файла компилятора
              (при том, что EXE ещё не поддерживается C--).

     0.196  - Приобретён большой опыт по работе с файлами OBJ формата.
	      Благодарю всех, кто прислал мне информацию по OBJ и EXE
	      форматам файлов. Вся информация пригодилась - это огромный
	      справочник!  Теперь предстоит много работы.

     0.197  - Добавлено ключевое слово far.
            - добавлен CLOCK.C--, написанный Gerardo Maiorano.

     0.198  - Выходные файлы формата OBJ, проверены и отлажены с Турбо
	      Паскалем и Microsoft C. Теперь OBJ работают прекрасно, но все
	      ещё не поддерживают глобальные данные. Надеюсь, скоро будут.  -
              Документы обновлены.

     0.198a - Добавлен занятный файл FIRE.C-- .
            - в Work Bench добавлен параметр поддержки файла формата OBJ
              (новая версия 0.123).

     0.198b - То же самое, что и 0.198a, но введено новое имя, чтобы
              устранить ошибку upload error to wuarchive.

     0.198c - Work Bench теперь помнит режим видео (новая версия 0.124).

     0.199  - добавлена поддержка встроенным ассемблером следующих команд
	      80486:  BSWAP, CMPXCHG, INVD, INVLPG, WBINVD и XADD.
            - критерий поиска файлов в Work Bench изменён с *.C-- на *.?--
              (версия 0.125).
            - в Work Bench добавлен справочник по встроенному ассемблеру
              (новая версия 0.126).

     0.200  - Устранены ошибки, найденные Johan в STRCAT() и strcat()
              в STRING.H--.
            - Если первое значение в стековом или регистровом выражении
              переменная типа dword или ling, 32-разрядный регистр, или
              переменная типа fixed32, выражение будет иметь тот
              же тип данных постольку поскольку никакая отмена не сделана.
              Все другие выражения будут иметь тип word.

     0.201  - Добавлен $REP псевдоним для $REPZ .

     0.202  - Устранена ошибка в операторе >< для long и dword.
            - Транслятор, перетранслирован БЕЗ 286 опции кода.

     0.203  - символы строчных букв, добавлены к шрифту 5x5 в
              VGAFONT.H-- и VGAXFNT5.H--
            - OBJ устанавливает по умолчанию переход к main() как NONE

     0.204 от 13.04.98
            - Исправлена ошибка: вместо $MOVZX получалось MOVSX
            - Добавлена поддержка ini файла
            - Некоторые внутренние процедуры имеют более короткий код
            - Исправлена ошибка в заголовке при создании EXE файла
            - EXE файл теперь работает с командной строкой (директива
              parsecommandline, процедуры PARAMCOUNT, PARAMSTR)
            - Исправлена ошибка установки заглушки CTRLC
            - Добавлены операторы GOTO и goto
            - Оптимизация кода компилятора

     0.205 от 4.05.98
            - Исправлена ошибка в реализации оператора GOTO и goto
            - Добавлены операторы BREAK, break, CONTINUE, continue.
            - Добавлен цикл WHILE{}, while{}, FOR{}, for{}.
            - Произведена ревизия выходного кода и в некоторых случаях теперь
              генерируется более компактный код.
            - Исправлена ошибка: при компиляции команды
              $PUSH <непосредственное значение> - искажалась величина
              <непосредственного значения>.
            - Добавлена возможность заносить в стек двойное слово. Формат
              команды: $PUSH DWORD value или $PUSH LONG value.
            - Добавлено ключевое слово asm.

     0.206 от 5.06.98
            - Реализована возможность синтаксиса типа: CX = PROC( ) ; и
              EBX += proc2( ) ;...
            - Продолжена оптимизация выходного кода.
            - Исправлена ошибка в циклах for и while: при длине цикла равной
              127 байт генерировался неправильный jmp.
            - Добавлен оператор-переключатель switch.
            - Добавлены ассемблерные команды: SHLD/SHRD, BSF/BSR,
              BT/BTC/BTR/BTS, 16 команд группы SETxxx. Команды процессора
              Pentium: CPUID, RDMSR, RDTSC, RSM, WRMSR, CMPXCHG8B.
            - Поддержка встроенным ассемблером команд MMX процессора.
            - Исправлена ошибка - при выполнении ассемблерной команды
              <TEST dwordvar,reg32> генерировался неверный код.
            - Убрана несуществующая ассемблерная команда CBD. Добавлена
	      команда CWDE, генерирующая тот же код.
            - Добавлена ассемблерная команда LOOPD.

     0.207 от 30.07.98
            - Добавлена возможность использовать в качестве индекса к массиву
              данных другую переменную.
            - Продолжена оптимизация выходного кода.
            - Добавлены ассемблерные команды FPU.
            - Убраны, заложенные ранее, переменные fixed32s и fixed32u.
            - Введена переменная типа float. Но полностью еще не реализована.
            - Исправлена допущенная мною ошибка: при использовании сравнения
              двух переменных типа long или dword генерировался код сравнения
              слов.

     0.207a от 6.08.98
            - Добавлена директива компилятору ?else.
            - Добавлена пропущенная ассемблерная инструкция FPU - fstp.
            - Добавлена ассемблерная инструкция FPU - fildq.
            - Исправлена ошибка: при операции var <<= n и var >>= n (сдвиг
              переменной с присвоением на n битов) генерировался неверный код.
            - Исправлена ошибка: при сравнении 32-битной переменной с числом -
              типа if(var32 > n) генерировался неверный код.

     0.208 от 6.09.98
            - Реализована поддержка переменных типа float.
            - В оператор switch добавлена возможность делать подряд несколько
              пустых case.
            - Исправлено выравнивание 32-битных не инициализированных
              переменных.
            - Добавлена возможность использовать директивы компилятору в
              ассемблерных блоках и при объявлении локальных переменных.
            - Регистры инструкций FPU (st(0), st(1)...) можно набирать как
              маленькими буквами, так и большими.
            - Откорректирована генерация префикса SS при косвенной адресации.
              Теперь директива компилятору assumeDSSS не играет никакой роли.

     0.209 от 24.09.98
            - Добавлена новая директива компилятору: ?setdinproc, по которой
              компилятор немедленно вставляет в код вызывавшиеся ранее
              динамические процедуры.
            - Появилась возможность компилировать файлы драйверов устройств
	      ДОС. Выходные файлы *.SYS.
            - Снято ограничение в 64 кб для файлов с исходными текстами.
            - Реализована поддержка логического объединения сравнений в
              условиях IF и if, в циклах do{}while, while, WHILE, for, FOR.
              Например: if(a>5)||(a<9).
            - Расширены возможности цикла for и FOR. Число операторов
	      инициализации цикла и операторов приращения теперь
	      неограниченно.
            - Оптимизирован выходной код при компиляции сочетаний: IF()BREAK,
              IF()CONTINUE, if()break, if()continue.
            - Исправлены ошибки, допущенные при реализации поддержки float и
              другие мелкие ошибки.
            - Реализована поддержка присваивания 16-битным переменным и
              регистрам адреса символьной строки типа: SI="1234";

     0.210 от 15.10.98
            - Исправлена ошибка, возникавшая при использовании ассемблерных
              инструкций CMPXCHG m8,r8; XADD m8,r8; XCHG m8,r8.
            - Исправлена ошибка, возникавшая при попытке компиляции с опцией
              командной строки /SYM.
            - При преобразовании переменных типа char (byte) в 16-битные
	      регистры применена команда MOVSX (MOVZX), что вызывает
	      уменьшение длины кода.
            - Изменена генерация кода при сдвигах 8 битных регистров в
              синтаксисе типа BH<<=3.
            - Добавлена поддержка пропущенных ранее ассемблерных инструкций:
              ARPL, LAR, LSL, LGDT, LIDT, LLDT, LMSW, LTR, SGDT, SIDT, SLDT,
              SMSW, VERR, VERW.
            - Введена директива компилятору ?warning и ключи командной строки
              /+w и /wf=<file_warning>.
            - Добавлена поддержка 32-битной адресации к памяти.
            - Откорректирована и расширены возможности индексирования массива
	      и переменных.
            - Добавлена возможность использовать inline в процедурах обработки
              прерывания.

     0.211 от 15.11.98
            - В не-EAX/AX/AL - выражениях для CPU 286 или выше теперь можно
              пользоваться командой умножения и производить сдвиги на число.
            - Введена опция оптимизации числовых выражений. Включается ключом
              командной строки /on или в c--.ini строкой on.
            - Введена возможность учитывать временное расширение разрядности
              переменной после умножения. Включается ключом командной строки
              /de или в c--.ini строкой de.
            - Исправлена работа команды return. При использовании return в
              конце процедуры не генерируются лишние RET. Скобки теперь
              необязательны.
            - Исправлена ошибка в цикле for/FOR - не компилировался синтаксис
	      с не блочным телом цикла.
            - В ассемблерной инструкции PUSH стал доступен синтаксис $PUSH
	      #var.
            - При умножении 16 и 32-битных переменных на число применены
	      другие, более короткие и быстрые варианты кода.
            - Расширены возможности ассемблерной инструкции IMUL.
	      Поддерживается синтаксис: IMUL r16,imm16; IMUL r32,imm32; IMUL
	      r16,r/m16,imm16; IMUL r32,r/m32,imm32; IMUL r16,r/m16; IMUL
	      r32,r/m32.
            - Исправлена ошибка генерации кода при обмене 16 или 32-битных
              локальных с глобальными переменными.
            - Для нерегистровых переменных добавлена возможность использовать
	      синтаксис умножение с присвоением (var *= var1+var2;) и деление
	      с присвоением (var /= var1+var2;).

     0.212 от 7.12.98
            - Введена поддержка структур.
            - Добавлен оператор sizeof.
            - Теперь компилятор может генерировать вызовы стековых процедур и
	      в C-стиле.
            - Появилась возможность добавлять пути поиска включаемых файлов из
              командной строки ключом /ip=<path> или строкой в ini-файле
              ip=<path> или директивой компилятору ?includepath "path".
            - Исправлена ошибка, не позволявшая использовать в синтаксисе
              некоторых ассемблерных инструкций (int, loop ) маленькие буквы.
            - Исправлены ошибки, допущенные в предыдущей версии.

     0.213 от 1.02.99
            - Добавлена возможность указывать смещения на нижележащие метки и
              процедуры.
            - Во встроенный ассемблер добавлена поддержка $ - текущее значение
              регистра IP.
            - Введена поддержка макросов: inp(), inpotr(), inportb(),
              inportd(), outp(), outport(), outportb(), outportd().
            - Вынесены из компилятора в KEYCODES.H-- процедуры CLICKOFF() и
              CLICKON(), в VIDEO.H-- процедура SETATIMASK() и SETPANREG().
            - Введен альтернативный обработчик командной строки, который
              включается/отключается директивой ?argc TRUE/FALSE или из
              командной строки /+argc /-argc. По умолчанию отключен.
            - Теперь компилятор может использовать для компиляции EMS память.
            - Введены директивы компилятору ?usestartup, ?startusevar,
              ?initallvar.
            - Для директив ?ifdef ?ifndef зарезервированы константы codesize и
              speed, которые устанавливаются в соответствии с директивами
              ?codesize/?speed или командами /size или /speed или /os или /oc.
            - Теперь директива ?ifdef не срабатывает на константу объявленную
              FALSE, а директива ?ifndef срабатывает на константу объявленную
              FALSE.
            - Исправлена ошибка преобразования 16-ричных символов строк и
              несколько ошибок генерации кода при использовании встроенного
              ассемблера.

     0.214 от 21.02.99
            - Для ассемблерных инструкций PUSH и POP добавлена возможность
              задавать несколько операндов через запятую.
            - Добавлена поддержка процедуры ATEXIT. Включается директивой
              ?atexit.
            - Добавлена поддержка внешней библиотеки динамических процедур и
              почти все внутренние процедуры перенесены в неё.
            - Перенесены в библиотеку динамических процедур и многие процедуры
              из включаемых файлов. Всего на сегодняшний день библиотека
              содержит 431 процедуру.
            - Исправлены ошибки, допущенные в предыдущей версии.

     0.215 от 14.03.99
            - В два раза увеличен стек компилятора.
            - Удалена поддержка ключей командной строки /MACRO /PROC /REGPROC.
            - Для проверок условий добавлены два специальных условных
	      выражения MINUSFLAG и PLUSFLAG, которые делают проверку бита
	      знака в регистре флагов.
            - Введено объявление процедур. Оно является не обязательным, но
              желательным.
            - К присваиваниям переменной добавлена возможность изменять тип на
              время вычисления их значений.

     0.216 от 12.04.99
            - Появилась возможность компилировать код для расширителей
	      ROM-BIOS.  Включается ключом командной строки /ROM.
            - Введена поддержка выходного формата файла *.exe с моделью
	      памяти tiny. Активизируется ключом командной строки /TEXE.
            - Начато внедрение указателей.
            - К присваиваниям регистра EAX/AX/AL добавлена возможность делать
              их знаковыми.
            - Исправлены ошибки обнаруженные в предыдущей версии.

     0.217 от 24.05.99
            - Наконец закончена реализация 32-битного кода. Теперь на C--
	      можно создавать 32-битные программы как под DOS, так и под
	      Windows (есть возможность использовать вызовы API-процедур).
            - Для директив ?ifdef/?ifndef добавлена возможность проверки
              компилируемого типа CPU. Пример: ?ifdef cpu >= 3
            - Добавлена поддержка синтаксиса: SegReg >< SegReg; - обмен
              содержимого сегментных регистров.
            - Введена оптимизация сочетаний операторов if()goto, IF()GOTO,
              IF()goto.
            - Введено игнорирование оператора else/ELSE, если предыдущий блок
              оператора if/IF заканчивается операторами: break/BREAK,
              conntinue/CONTINUE, goto/GOTO, return.
            - В операторе switch введено игнорирование последнего break/BREAK.
            - Изменена генерация кода в операциях проверки на нуль типа
              IF(variable), что позволяет получать более быстрый код, а в
              некоторых случаях и более компактный.
            - Исправлены ошибки обнаруженные в предыдущей версии.

     0.218 от 14.06.99
            - Добавлена возможность инициализировать глобальные структуры при
              объявлении адресами неинициализированных переменных и адресами
              еще не объявленных переменных и меток.
            - Немного подкорректирован формат obj-файлов.
            - Для com-файлов введена директива компилятору ?startuptomain,
              по которой startup-код вставляется в начало процедуры main().
            - Добавлен ключ командной строки /w32c, позволяющий получать
              консольные программы Windows.
            - Введена директива компилятору ?undef.
            - Код начальной инициализации вынесен из компилятора в файл
              startup.h-- .
            - Для ассемблерных команд DB/DW/DD добавлен префикс повторений
	      dup.
            - Введен модификатор cdecl, позволяющий объявлять стековые
	      процедуры процедурами C-стиля. Выполнявший эту роль префикс
	      имени "c_" отменен.
            - Исправлена ошибка, не позволявшая при компиляции 32-битных
              программ под ДОС использовать неинициализированные переменные.

     0.219 от 06.07.99
            - Переработана генерация obj-файлов. Появилась возможность при
	      генерации obj использовать внешние (extern) переменные,
	      процедуры и структуры.
            - Для директивы ?align добавлена возможность указывать число на
              кратное которому будет сделано выравнивание данных.
            - Введена директива ?aligncode делающая выравнивание кода на
	      кратное указанному в качестве параметра числу. Заполнение
	      ведется числом 0x90 (код инструкции NOP).
            - Удалена поддержка опции командной строки /+map и соответственно
              удалена генерация map-файла.
            - Исправлена ошибка не позволявшая обращаться к динамическим
              процедурам ранее их определения.
            - Добавлена возможность использовать локальные переменные в
              процедурах обработки прерываний.
            - Добавлена возможность обращаться к процедурам обработки
              прерываний как к обычным процедурам.
            - Добавлена возможность обращаться к процедурам объявленными как
              дальние (far).
            - Добавлены модификаторы процедур: pascal, stdcall, fastcall. Тем
              самым, снято ограничение на синтаксис имен процедур в верхнем
              или нижнем регистре.

     0.220 от 23.08.99
            - В качестве имен локальных переменных стало возможным
	      использовать имена глобальных переменных, процедур и констант.
            - При объявлении тега структуры, в качестве имен элементов
              структуры, стало возможным использовать имена глобальных и
              локальных переменных, процедур и констант. Введена проверка
              повторного имени элемента тега.
            - Введена директива ?dosstring, при установки которой в TRUE
              терминатором строк будет символ доллара '$'.
            - Добавлен ключ командной строки /sobj позволяющий получать slave
              obj-модули с таблицей перемещения всех объектов.
            - Введена поддержка оператора объединения - union.
            - При умножении на число и оптимизации на скорость введен поиск
              возможности замены умножения на сдвиги и сложение.
            - Для компиляции программ под windows добавлены директивы:
              - ?imagebase value        - задать адрес Image Base отличный от
                                          0x400000.
              - ?fixuptable TRUE/FALSE  - разрешить/запретить создание FixUp
                                          таблицы (по умолчанию запрещено).
              - ?fastcallapi FALSE/TRUE - запретить/разрешить генерацию
                                          быстрого вызова API-процедур (по
                                          умолчанию разрешено).
            - Сгенерирована консольная версия компилятора.

     0.221 от 10.09.99
            - Для регистровых процедур теперь можно указывать, через какие
              регистры будут передаваться параметры.
            - Добавлена директива ?compilerversion указывающая минимальную
              версию компилятора, необходимую для компиляции программы.
            - Исправлены ошибки: в реализации директивы ?atexit, в
	      формировании таблиц fix_up для obj-файлов, в объявлении
	      локальных переменных.

     0.222 от 19.09.99
            - При программировании под windows появилась возможность делать
              экспорт процедур и получать файлы библиотек - DLL.
            - Добавлена поддержка альтернативного расширения исходных файлов -
              *.CMM.
            - Немного изменен синтаксис декларации API-процедур.
            - Исправлены ошибки: в заголовке exe-файла под Windows; в
              объявлении структур; в генераторе 32-битного кода; в умножении
              при генерации файлов под windows; в операторе sizeof.

     0.223 от 05.10.99
            - Добавлена поддержка вложенных структур.
            - 16-ричные числа можно теперь записывать и в стиле ассемблера.
            - Для объявления директив компилятору, теперь, кроме символа '?'
              можно использовать символ '#'.
            - Исправлены ошибки: в связке IF-GOTO; генераторе 32-битного кода.

     0.224 от 28.10.99
            - Добавлен ключ командной строки /AP делающий выравнивание
	      процедур на границу параграфа, но только при компиляции
	      программ для Windows.
            - Для консольной версии компилятора при создании 32-битных
	      программ снято ограничение размера 64кб.
            - При компиляции программ под Windows все таблицы помещаются в
	      одну секцию.
            - Добавлены директивы компилятору: #pragma, #winmonoblock.
            - Добавлены предопределенные макросы __DATE__ и __TIME__.
            - Для операторов BREAK, break, CONTINUE, continue можно указывать
              число циклов, через которое будет передано управление.
            - Исправлены ошибки: в диагностике превышения 64кб размера; при
              передаче отрицательного числа в качестве параметра стековой
              процедуре в 32-битном режиме; в консольной версии при компиляции
              16-битных программ, если использовалась неинициализированная
              переменная с отрицательным индексом типа var[-1], искажался
              последующий код; в формировании fixup таблицы pe-файла; в
              диагностике позднего объявления процедуры и др.

     0.225 от 09.12.99
            - Изменен алгоритм поиска директив и зарезервированных слов на
              более компактный и более быстрый.
            - В генераторе 32-битного кода исправлены ошибки и в некоторых
              случаях применены более компактные формы инструкций.

     0.226 от 10.01.00
            - В операциях сравнения введена поддержка символа '!' -
              инвертирующего результат операции сравнения.
            - Исправлены ошибки: выдавалось ложное сообщение об ошибке в
              выражениях типа intvar = #ucnownlabel + number ; происходил
              сбой парсера при разборе выражений типа: $ push 8, AX, var ;
              генерировался неправильный месяц при использовании
              макроподстановки выражения __DATE__.

     0.227 от 09.02.00
            - Появилась возможность инициализировать локальные переменные
              при их объявлении.
            - Компилятор контролирует число и тип параметров передаваемых
              стековой процедуре, если она была предварительно объявлена.
            - Введены новые операторы LOOPNZ и loopnz.
            - Исправлены ошибки, возникавшие при использовании переменных
              типа float и при использовании в циклах for/FOR оператора не
              заключенного в блок.

     0.228 от 08.08.00
            - Добавлена возможность через define определять вещественные
              числа типа float.
            - Введена поддержка внутренних процедур-макросов: atan, atan2,
              cos, exp, fabs, log, log10, sin, sqrt, tan.
            - Код, генерируемый при использовании переменных типа float,
              стал более компактным и быстрым.
            - Добавлен новый режим оптимизации - слияние одинаковых
              строковых констант. Включатся с командной строки /ost или
              директивой #pragma option ost.
            - Добавлен ключ командной строки /d=idname, позволяющий с
              командной строки определить идентификатор idname равным TRUE.
            - Исправлены ошибки: при использовании extern процедур;
              инициализации локальных указателей; генераторе 32-битного кода.

     0.229 от 06.04.00
            - При безусловном переходе на ранее определенную метку или
              процедуру компилятор автоматически определяет тип перехода
              (short или near) независимо от заданного типа.
            - Для числовых значений допустимо использовать операцию NOT -
              символ '!'. Например: AX = ! 0x3f ;
            - Для выражений DSWORD[var] DSDWORD[var]... убрано масштабирование
              по типу переменной. Для выражений var[idxvar] можно отключить
              масштабирование, поместив в начале idxvar символ '*'.
            - При вычислении в не-AX/EAX регистр разрешено использовать сдвиг
              на CL  DX=1<<CL;
            - Исходный текст главного компилируемого модуля теперь можно
              хранить и в файлах с расширениями: "c", "h--", "hmm", "h".
            - Исправлена ошибка, иногда возникавшая в цикле for/FOR.

     0.230 от 13.06.00
            - Улучшена диагностика и обработка ошибок.
            - Изменился алгоритм загрузки c--.ini файла.
            - Стало возможным использовать ассемблерные инструкции без
              включения их в asm-блоки и без символа '$'. Этот режим
              включается командой /ia.
            - Список поддерживаемых компилятором ассемблерных инструкций
              можно получить, набрав в командной строке: >C-- /lai.
            - В консольной версии компилятора увеличены в два раза
              максимальный размер идентификатора и строковой переменной.
            - Для директивы include стало возможным использовать имена файлов
              в угловых скобках <>. Для таких файлов изменен алгоритм поиска.
            - Изменился синтаксис параметров командной строки.
            - Теперь компилятор при повторной загрузке включаемого файла
              пропускает его. Отключить это можно с командной строки
              командой /cri-.
            - При объявлении структур с известным тегом можно опускать
              ключевое слово "struct".

     0.231 от 16.07.00
            - Для программ под Windows введена поддержка встроенных процедур
              'ATEXIT', 'ABORT', 'EXIT'.
            - Увеличена скорость компиляции программ под Windows.
            - Введена поддержка директивы #pragma startup.
            - Заполнение пустого места выделенного под инициализированные
              переменные ведется кодом, определенным директивой '#aligner',
              по умолчанию 0.
            - Для глобальных инициализированных массивов можно не указывать
              число элементов.
            - Расширена область использования символа '$' и оператора 'sizeof'.
            - Восстановлена работа директивы '#startuptomain' .
            - Исправлены ошибки: при работе с переменными из вложенных
              структур; в 32-битном режиме для параметров типа word
              исправлена организация стека; и многие другие мелкие ошибки.
            - Добавлено: для инструкции '$push DWORD/LONG number' модификатор
              типа числа можно писать маленькими буквами 'dword/long';
              возможность получать адрес указателя; для инструкций 'DD' и 'DW'
              указывать адрес не инициализированной переменной; для
              инструкции 'push' брать адрес еще не известного идентификатора.

     0.232 от 31.08.2000
            - Реализованы некоторые рекомендации по улучшению быстродействия
              генерируемого кода для процессора Pentium и лучше.
            - Произошли изменения в параметрах командной строки компилятора:
              - добавлена большая группа параметров повторяющих функции
	        директив не имевших аналогов в параметрах.
              - у параметров имевших два синтаксических варианта убран более
                длинный вариант.
              - добавлен новый параметр командной строки - /MIF=<file> ,
                определяющий имя компилируемого файла.
              - добавлен новый параметр командной строки - /AC , делающий
                выравнивание начала циклов for/FOR, do-while, while/WHILE,
                loop/loopnz/LOOPNZ.
            - Файл начальной инициализации *.ini может иметь любое имя.
            - Сообщения об ошибках теперь выводятся параллельно и в файл с
              именем главного модуля и расширением *.err.
            - Файл с предупреждениями теперь создается только в случае если
	      эти предупреждения есть.
            - В операторе-переключателе 'switch' можно использовать
	      'continue', если он находится в каком-то операторе-цикле.
            - В предупреждениях, о возможности использования более коротких
              форм операторов, теперь указывается правильный номер строки.
            - Инструкция 'push', у которой операнд число или адрес
	      идентификатора, в 16 битном режиме по умолчанию вставляет в
	      стек 16 битное число, а в 32 битном - 32 битное.
            - Добавлено:
              - делать goto на api-процедуры.
              - если goto делается на процедуру, то можно передавать
	        параметры.
            - Исправлены ошибки:
              - в передаче параметров процедурам в 32-битном режиме.
              - в работе с указателями.
              - в генераторе таблицы перемещений для windows.
              - в объявлении вложенных структур.
              - при обращении к переменной из 32-битного и 16-битного режима
                одновременно.

     0.233 от 11.09.2000
            - Исправлена ошибка в заголовке DOS32 программ.
            - Введен контроль за регистрами при замене MOVZX reg32:16,mem16:8
              на XOR reg32:16,reg32:16 + MOV reg16:8,mem16:8.
            - Продолжена оптимизация выходного кода на скорость и на размер.

     0.234 от 01.10.2000
            - При объявлении API процедур поддерживаются имена типа
	      ProcName@8.
            - Добавлена опция командной строки /ind=FILENAME указывающая на
	      имя файла DLL, из которого будет считан список экспортируемых
	      имен.
            - Добавлена опция командной строки /ws=FILENAME указывающая имя
	      DOS stub файла при компиляции программ для windows.
            - Немного изменена функция ключа командной строки /ns. Теперь
	      этот ключ запрещает подключение stub для windows программ.
            - В программах для gui windows не инициализированные данные
	      автоматически помещаются в отдельную секцию. Использовать эту
	      секцию при компиляции консольных программ или DLL можно с
	      помощью опции командной строки /wbss.
            - В строках с директивой #pragma теперь можно делать комментарии.
            - Пути к файлам в операторах FROM, EXTRACT, sizeof теперь надо
              писать с одним '\', т.е. "c:\path\file".
            - Восстановлена работа опции /ia.
            - Исправлены ошибки:
              - в связке операторов IF - goto;
              - при использовании смещений идентификаторов под windows;
              - при инициализации структуры строками;
            - Добавлено:
              - брать адрес еще не объявленной структуры;

     0.235 от 11.11.2000
            - В программах под DOS32 изменен способ передачи stub-у размера
              памяти, необходимого для работы программы, и введена поддержка
              встроенного компактного stub-а, использующего dpmi сервис.
            - Улучшен код, получаемый при использовании переменных типа float
              в 32-битном режиме.
            - В файлах динамических библиотек (DLL) можно использовать
              процедуру 'main'.
            - Локальные переменные теперь можно объявлять и в начале блока
              процедуры.
            - Сделана генерация obj-файлов при компиляции программ под DOS32.
            - Введены ключевые слова 'short', 'signed' и 'unsigned'.
            - Для числовых констант сделана поддержка суффиксов 'L', 'U' и
	      'F'.
            - Генерация отладочной информации включается ключом командной
              строки /dbg.
            - Исправлены ошибки:
              - в структуре выходного PE-файла;
              - в операциях сравнения с переменными типа float;
              - ложное сообщение, о неожиданном конце файла, при оптимизации
                числовых выражений;
              - в выражениях сравнения при использовании символа инверсии '!'
                иногда генерировался неправильный JMP;
              - в парсере, при разборке числа, иногда приводившая к
                зацикливанию компилятора;
              - при обращении к локальному массиву через переменную-индекс.
              - в объявлении параметров процедуры, когда тип переменной
                определялся через define;
            - Добавлено:
              - для инструкции DB/DW/DD, PUSH использовать отрицательные
                числа;

     0.236 от 13.02.2001
            - Компилятор поддерживает все ассемблерные инструкции процессора
              Intel Pentium II.
            - Расширены возможности в операциях сравнения.
            - Введена опция создания ассемблерного листинга.
            - Введена возможность отображать тег структуры на блок памяти.
            - Введена поддержка динамических переменных и структур.
            - Для работы с макросами введена поддержка inline-процедур и
              директива #inline.
            - Можно запретить вывод определенных типов предупреждений.
            - Компилятор выдает предупреждения о возможно не использованных
              процедурах, глобальных переменных и структурах.
            - Вызов WIN API процедур теперь возможен и по ординалам.
            - Введена поддержка предопределенных макросов __FILE__ и __LINE__.
              В зависимости от режима компиляции определяются идентификаторы:
              __CONSOLE__, __DLL__, __FLAT__, __MSDOS__, __WIN32__, __TINY__,
              __SMALL__.
            - Сняты ограничения на динамические процедуры.
            - Введена поддержка двоичных чисел в стиле ассемблера.
            - Исправлены ошибки:
              - в ассемблерных инструкциях mov variable,number генерировался
                неверный код;
              - в заголовке PE-файла указывался неверный размер таблицы
                перемещений;
              - при применении оператора sizeof, иногда возникали ошибки;
              - размер параметров стека последней процедуры передавались
	        первой процедуре включаемого файла;
              - при обращении в 32-битном режиме к переменной объявленной в
                16-битном режиме и при обращении в 16-битном режиме к
                переменной объявленной в 32-битном режиме генерировался
                неправильный адрес;
              - при обращении к 16-битной переменной в 32-битном режиме, адрес
                которой определяется адресом лежащего ниже идентификатора,
                искажался адрес;
              - при использовании инициализированных локальных переменных
                иногда выдавалось ложное сообщение об ошибке;

     0.237 от 5.11.2001
            - В тело процедуры можно вставлять любую динамическую процедуру.
            - Компилятор поддерживает все ассемблерные инструкции процессора
              Intel Pentium III.
            - В startup введена очистка post-области данных. Включается опцией
              командной строки -CPA.
            - Введен автоматический выбор разрядности регистров.
            - В startup введено сохранение адреса переменных окружения.
              Активизируется опцией командной строки -ENV.
            - Для case/CASE введена поддержка диапазонов значений.
            - Для процедур можно указывать флаг возврата.
            - Введена поддержка LE формата для DOS32 exe-файлов.
            - Возможно получать ассемблерный листинг указанных фрагментов
              программы.
            - Расширены возможности не AX/EAX регистров.
            - Компилятор выдает предупреждения о возможно не использованных
              локальных и параметрических переменных.
            - Для опций разрешающих выравнивание процедур и циклов можно
              задавать величину выравнивания.
            - Имена MMX, TR, DR, CR - регистров теперь не являются
              зарезервированными.
            - В ассемблерных инструкциях имена всех регистров можно писать
              маленькими и большими буквами.
            - Выполнена оптимизация оператора 'switch'. Добавлены
              зарезервированные слова: 'SWITCH' и 'CASE'.
            - Выполнена оптимизация кода при операциях сравнения. В
	      сравнениях допустимо использовать ассемблерную инструкцию
	      'test'.

     0.238 от 28.03.2002
            - Добавлена компиляция и линковка ресурсов.
            - Допускается использовать метки вне процедур.
            - В структурах можно объявлять процедуры.
            - Сделана поддержка наследования классов.
            - Расширены возможности указателей.
            - В стековые процедуры можно передавать параметры через регистры.
            - Введена поддержка связанного присваивания.
            - Введена операция разрешения видимости '::'.
            - Добавлено зарезервированные слова 'RETURN', 'static'.
            - Компилятор, при включенной оптимизации на размер кода и при
              использовании динамических процедур в качестве макросов может
              заменять оператор return/RETURN на goto/GOTO.
            - Выполнена оптимизация связки IF()RETURN, if()return и связок
              else с операторами передачи управления (goto, break, BREAK ...).
            - Выдаются предупреждения о возможно не исполнимом коде.
            - Введена поддержка битовых полей структур.

     0.239 от 14.12.2002
	    - Введена поддержка выходного формата файла для MeOS.
            - Введены дополнительные опции управления оптимизацией.
            - Введена опция разрешения выравнивания в структурах.
            - Оператор 'switch/SWITCH' может быть реализован 3 различными
              способами.
            - Оператор 'while/WHILE' теперь работает немного быстрее.
            - Расширены возможности операторов сравнения ('if', 'while',
              'for'...).
            - Для переменных введена возможность, указывать сегмент отличный
              от сегмента по умолчанию.

