SysTools Logo SysTools


Программное обеспечение для научного оборудования


Windows 10, облачные технологии, нейронные сети. А где-то всё ещё используются программы написанные под DOS на ассемблере для управления уникальным оборудованием.

Одна из таких программ была создана под заказ в 1989 году в НИИ ВЭМ (город Ижевск) для управления технологическим процессом роста на установке молекулярно-лучевой эпитаксии "Ангара". В начале 90-ых программа дорабатывалась уже другими людьми для работы с дополнительными датчиками, а также вносились изменения адаптирующие для MS-DOS, где она и по сей день используется для управления оборудованием через COM-порт с компьютера.


640x400 Main screen
Главное окно программы

Одним из существенных неудобств программы было то, что она, в принципе, не работала с жёсткими дисками, а только с дискетами. Причём на дискете в первом дисководе (A:) должна быть программа, а настройки сохранялись на дискету второго (B:) и только в корневой каталог. Оборудование не вечное, так что при выходе второго дисковода из строя работать можно было и с одним (в программе был предусмотрен вариант переключения между A: и B:), но тогда после загрузки программы в память приходилось менять дискеты, да и дискеты тоже не вечные. Идеальным вариантом было бы заставить программу работать с жёсткого диска, а также сохранять и загружать туда свои настройки, что и требовалось в итоге сделать.

Интересно, что хоть программа и читала свои настройки из файлов посредством стандартных функций DOS сервисного прерывания 21h, но перед этим сурово проверяла наличие дискеты в дисководе чтением первого сектора через сервис прерывания 25h. Отключив эту проверку, а также убрав принудительное добавление "A:\" или "B:\" к началу имени файла, удалось заставить программу сохранять и читать свои настройки из текущего каталога вне зависимости от его расположения (на дискете или на жёстком диске в подкаталоге).

Помимо этого была исправлена ещё одна проблема с программой возникшая в связи с изменениями 90-ых годов - новые информационные сообщения были добавлены в неверной кодировке. Дело в том что поздние изменения вносились в программу уже в кодировке CP866, в то время как сама программа разрабатывалась под MIK кодировку (также известную как Interprog, "Болгарская кодировка" или "старый вариант ВЦ АН СССР").


640x400 Error message
Пример нового сообщения
(самая нижняя строка)

Графическая матрица шрифта для вывода русских букв (программа работает в графическом режиме 6 - 640x200 ч/б) как раз была рассчитана на кодировку MIK, где сначала идут прописные русские буквы, а затем сразу строчные, в то время как в CP866 между строчными буквами "п" и "р" идут 48 символов псевдографики. Поэтому все новые сообщения пришлось вылавливать и переводить в кодировку MIK, заменяя байты 0E?h на 0B?h.


640x400 Fixed error message
Исправленное сообщение
(самая нижняя строка)

В остальном программа была написана очень аккуратно, поэтому никаких проблем с ней больше не было, так что её можно продолжать использовать и на современном компьютерном оборудовании, необходимым является лишь наличие COM-порта для управления, а вместо MS-DOS можно использовать даже FreeDOS.


2018.06.27


[ Статьи ]