Windows 10, облачные технологии, нейронные сети. А где-то всё ещё используются программы написанные под DOS на ассемблере для управления уникальным оборудованием.
Одна из таких программ была создана под заказ в 1989 году в НИИ ВЭМ (город Ижевск) для управления технологическим процессом роста на установке молекулярно-лучевой эпитаксии "Ангара". В начале 90-ых программа дорабатывалась уже другими людьми для работы с дополнительными датчиками, а также вносились изменения адаптирующие для MS-DOS, где она и по сей день используется для управления оборудованием через COM-порт с компьютера.
Одним из существенных неудобств программы было то, что она, в принципе, не работала с жёсткими дисками, а только с дискетами. Причём на дискете в первом дисководе (A:) должна быть программа, а настройки сохранялись на дискету второго (B:) и только в корневой каталог. Оборудование не вечное, так что при выходе второго дисковода из строя работать можно было и с одним (в программе был предусмотрен вариант переключения между A: и B:), но тогда после загрузки программы в память приходилось менять дискеты, да и дискеты тоже не вечные. Идеальным вариантом было бы заставить программу работать с жёсткого диска, а также сохранять и загружать туда свои настройки, что и требовалось в итоге сделать.
Интересно, что хоть программа и читала свои настройки из файлов посредством стандартных функций DOS сервисного прерывания 21h, но перед этим сурово проверяла наличие дискеты в дисководе чтением первого сектора через сервис прерывания 25h. Отключив эту проверку, а также убрав принудительное добавление "A:\" или "B:\" к началу имени файла, удалось заставить программу сохранять и читать свои настройки из текущего каталога вне зависимости от его расположения (на дискете или на жёстком диске в подкаталоге).
Помимо этого была исправлена ещё одна проблема с программой возникшая в связи с изменениями 90-ых годов - новые информационные сообщения были добавлены в неверной кодировке. Дело в том что поздние изменения вносились в программу уже в кодировке CP866, в то время как сама программа разрабатывалась под MIK кодировку (также известную как Interprog, "Болгарская кодировка" или "старый вариант ВЦ АН СССР").
Графическая матрица шрифта для вывода русских букв (программа работает в графическом режиме 6 - 640x200 ч/б) как раз была рассчитана на кодировку MIK, где сначала идут прописные русские буквы, а затем сразу строчные, в то время как в CP866 между строчными буквами "п" и "р" идут 48 символов псевдографики. Поэтому все новые сообщения пришлось вылавливать и переводить в кодировку MIK, заменяя байты 0E?h на 0B?h.
В остальном программа была написана очень аккуратно, поэтому никаких проблем с ней больше не было, так что её можно продолжать использовать и на современном компьютерном оборудовании, необходимым является лишь наличие COM-порта для управления, а вместо MS-DOS можно использовать даже FreeDOS.
2018.06.27