DOS-программы (архив)

Эмулятор графического курсора мыши
Сброс приложений при работе в DOS
Конвертор текстовых файлов RUSCOD
Тест-программа PC Monitor
Разархиватор файлов UNLZEXE
Редактор знакогенератора FE
Программа, печатающая свой текст

Программы на другие темы можно посмотреть здесь:
Программы для Windows и Office
Программы для Windows Mobile
Рентгеноструктурный процессор RTP
Архив программ для Windows
Исправления к играм Нивала


Эмулятор графического курсора мыши (1993-96)

Программа MOUSEMU — драйвер, который работает в текстовом экране в DOS или в полноэкранном DOS-режиме Windows. Создаваемая им "стрелка" мыши во многом похожа на ту, что можно видеть в программах Norton Utilities. Смысл драйвера в том, чтобы курсором могли пользоваться и другие DOS-приложения, не имеющие встроенного эмулятора. Основные низкоуровневые функции эмуляции курсора были написаны в 1993 г. на ассемблере для вызова из языка С, чтобы программа RUSCOD, над которой я тогда работал, могла использовать "стрелку" мыши. Чуть позднее на основе этих функций я сделал независимый драйвер. Сразу же он был представлен (как дополнение) на конкурс к выставке SOFTOOL-93 для фирмы Микроинформ, где активно шла работа над известным в то время редактором "Лексикон". В конкурсе участвовал и текстовый конвертор RUSCOD, уже имеющий встроенный эмулятор курсора, причём он шёл по теме основного задания. В результате конкурса RUSCOD был отмечен, его включили в комплект "Лексикона" 1.3, а MOUSEMU остался незамеченным...

Эмулятор работает, как резидентная программа DOS, для работы под Windows 9x её следует загружать при создании среды соответствующей виртуальной машины (можно даже указать её в строке "Batch file:" в свойствах приложения). При работе драйвера переключать DOS-экран в окно (Alt+Enter) не рекомендуется — отслеживать такое переключение программа (как и её разработчик) не умеет и в области курсора мыши будут выводиться символы псевдографики, из которых, собственно, курсор и состоит. Однако сбоя при этом не происходит, и курсор восстанавливается при переводе DOS-окна в полный экран. Программа написана на ассемблере.

mousemu.cab30 475 13.01.1997драйвер, исходный текст и описание

Примечание: для распаковки cab-архива используйте Explorer или программу extract.exe.

Сброс приложений при работе в DOS (1994-96)

Программа RESET была написана для закрытия приложений в DOS при их "зависании" или "зацикливании", я занялся ей под влиянием таких программ, как RELEASE, STOP и т.д. Предполагалось, что она не будет иметь многих недостатков, присущих упомянутым программам. Программа достаточно корректно обрабатывает нажатие Ctrl-Alt-Del, сохраняет видеопамять и палитру VGA, и даже способна восстановить клавиатурное прерывание, перехваченное прикладной програмой. В качестве буфера используется область HMA, а резидентная часть составляет около 2 Кб. В связи с повсеместным распространением Windows программа в настоящее время стала не столь актуальной, хотя в отдельных случаях может быть полезна... Написана на ассемблере (286), для инсталляции требуется драйвер HIMEM.SYS.

Сообщение, выводимое программой

reset.cab17 825 28.02.1996программа, исходный текст и описание, версия 2.3

Конвертор текстовых файлов RUSCOD (1993-95)

Первый прототип этой программы был написана на Basic'е где-то в 1990 г. и предназначался для преобразования текстов из "основной" кодировки (Ассистент, Искра-1030) в "альтернативную". Чуть позже я переписал его на Turbo-Basic и сделал полноэкранным, чтобы можно было подобрать код по началу текста, а также добавил небольшую справку. Программа называлась "Recoder". Затем она была переписана на TC 2.0, переименована, добавлено окно файловой системы и "графический" курсор мыши. В таком виде программа была заявлена на конкурс SOFTOOL-93 для фирмы "Микроинформ". К моему удивлению, она заняла первое место, и в результате версия 2.8 была включена в комплект утилит Лексикона 1.3, который вышел в начале 1994 г. Условия Микроинформа были очень свободные. Исходный текст и права на дальнейшую разработку оставались у автора, требовалось лишь включить название фирмы в окно справки и написать подробную инструкцию. Правда, отчислений автору от продаж также не предусматривалось. С поддержкой этой утилиты и у меня, и у Микроинформа не было проблем: или она была очень простой, или пользовались ей немногие, а может, просто содержала мало ошибок.

Основное окно программы

Программе очень не хватало возможности просмотра на экране всего преобразованного текста (т.е. прокрутки), и вскоре это было сделано. Был обеспечен вызов программы как viewer'а из VC или NC, чтение документов в формате Word for Windows 2.0. Примерно через год по заданию Микроинформа я добавил возможность трансляции текста по таблицам, задаваемым пользователем. Было ли это решение удачным, сказать трудно. Во всяком случае от т.н. "клерного кода" — способа записи русского текста латинскими буквами — я давно отказался. Версия 3.01 была сдана в конце 1994 г. для включения в Лексикон 1.4 и имела несколько таблиц в ini-файле. К сожалению, сам редактор увидел свет лишь весной 1996 г., и его короткий "жизненный цикл" был заранее предопределён...

Программа написана на C, имеет много ассемблерных функций. Архив включает саму программу, файл конфигурации с набором таблиц, (Болгарская, KOI-8, ISO-8859-5, Macintosh, транслитерация по "клерному коду"), пиктограмму для Windows и описание в формате DOS CP 866.

ruscod.cab34 689 26.04.1995программа, таблицы и описание, версия 3.03

Тест-программа PC Monitor (1990-2000)

Это довольно своеобразная программа, отчасти напоминающая отладчик DOS (Debug). Она способна выводить содержимое памяти, делать копию и сравнение блока памяти, работать с портами ввода-вывода, читать/записывать на диски на уровне int 13h, размечать сектора дискеты, устанавливать видеорежим, загружать COM и EXE файлы, выполнять простой тест мыши, способна загружаться без DOS, при этом может выполнять тест блока памяти и перемещать себя на другой адрес, однако встроенного ассемблера/дизассемблера не имеет. Первые версии программы имели набор функций для работы с кассетными файлами (int 15h), т.к. моя первая домашняя машина "Ассистент" вначале не имела дискового контроллера и работала с кассетным магнитофоном. Monitor представлял собой аналог операционной системы для исполняемых файлов...

Несколько позднее, при модернизации "Ассистента", с её помощью мне удалось обнаружить причину сбоя на плате ОЗУ, взятом из ПЭВМ "Искра-1030М", при повышении тактовой частоты до 8 МГц (DOS загружалась, CHECKIT зависал при запуске). Посегментный тест памяти monitor'ом не выявил ошибки, но случайно обнаружилось изменение контрольной суммы в других блоках памяти, к которым не было обращения при тесте. Причина — при постоянном циклическом обращении процессора к одному из двух банков ОЗУ начинались пропуски циклов регенерации во второго банке. Как выяснилось, при выборе схемы регенерации контроллером динамической памяти К1810ВТ03 разработчики допустили ошибку; схему платы мне удалось довольно легко исправить.

После 1992 года кассетные функции были исключены, улучшена загрузка EXE-файлов, обеспечена совместимость с DOS 5.0, сделана небольшая встроенная справка по F1. После 1994 года разработка программы по существу прекратилась, в код вносились лишь небольшие изменения, чтобы обеспечить корректный запуск под Windows 95, и делались исправления обнаруженных ошибок.

Предупреждение:
Программа работает с аппаратными средствами на низком уровне, что требует от пользователя необходимой квалификации. Автор не может дать гарантию корректной работы программы с любыми версиями DOS и Windows.

Программа написана на ассемблере 8086, причём первые версии делались в режиме ручного ввода команд в отладчике Debug, позднее текст был переписан, добавлены функции ввода-вывода строк из библиотеки C. Первый архив содержит саму программу и boot-сектор (загрузчик) для дискеты 1,44 Мб. Для возможности самозагрузки программа должна быть записана в самом начале диска (т.е. на чистую дискету), причём дискета не должна иметь метки (её можно задать после). Загрузчик надо записать вручную, используя или сам Monitor, или Debug, или Disk Editor.

monitor.cab7 233 10.10.2000программа и загрузчик, версия 4.68

Разархиватор файлов UNLZEXE (1992-93)

В начале 90-х годов появились и сразу получили большую популярность архиваторы исполняемых файлов для DOS-приложений, когда программа распаковывается при запуске. Это обеспечивало значительную экономию места на диске (объём жёстких дисков в те времена был не столь велик, как сейчас), и почти не было заметно при работе, так как скорость распаковки из-за не слишком сильного сжатия была высокой. Одной из первых программ была LZEXE, её автор — Fabrice Bellard [Фабрис Беллар]. Несколько позднее появились DIET и PKLITE, последнюю использовал Microsoft для упаковки файлов в DOS 6.x; версия PKLITE 2.50 применяется и в наше время.

Будучи первой, LZEXE не имела встроеного распаковщика, однако эффективность более поздних программ (где распаковка была предусмотрена) оказалась существенно выше — возникла проблема распаковки файлов после LZEXE для последующей упаковки PKLITE или DIET. Эту задачу и решает программа UNLZEXE. Она не восстанавливает код "байт в байт", однако обеспечивает оптимизацию заголовка EXE-файла, что позволяет затем упаковать его более эффективно. Программа может распаковывать файлы с "дописанными" OVL-блоками, а также COM-файлы, преобразованные в EXE и затем упакованные. Программа работает только с форматом "LZ91", предыдущий формат "LZ09" (значительно менее распространённый) не обрабатывается. Программа написана на ассемблере, причём код распаковки был взят непосредственно из упакованных файлов.

unlzexe.cab15 089 14.03.1993программа, исходный текст и описание, версия 1.1

Редактор знакогенератора FE (1990-93)

Рабочий экран FE

Программа Font Editor используется для правки знакогенератора — либо того, что установлен в видеоадаптере машины, либо загружаемого с помощью экранного драйвера. Первый вариант программы был написан на языке Basic и работал на ПЭВМ "Ассистент", с его помощью я переделал таблицу знакогенератора CGA с "основной" на "альтернативную". В последующем программа была переписана на C, сделана работа с файловой системой. С помощью программы FE были созданы все шрифтовые таблицы для драйверов кириллицы VEGA и CLARUS. Программа предназначалась в основном для собственного использования, к ней не была составлена инструкция; впрочем, есть справка, выводимая по F1:
"...Данная версия редактора работает с таблицами форматом от 8x4 до 16x32 точек на символ. При необходимости, если редактор не может определить размер матрицы шрифта, Вам следует указать его или подобрать вручную. Если таблица занимает только часть файла, выведите ее на экран и подберите смещение относительно начала или конца. Изменение размера матрицы позволяет применить данный шрифт в другом видеорежиме, для этого следует задать число линий в матрице и число строк смещения сверху."

Программа написана на C (TC 2.0) с использованием ассемблерных функций ввода-вывода. Архив содержит программу Font Editor, комплект шрифтовых файлов из программы VEGA (прототип драйвера CLARUS), а также первый вариант редактора для интерпретатора BASIC'а с таблицей GRAFTABL. Обозначения в именах шрифтовых файлов: 437 — DOS CP 437; 866 — DOS CP 866; H — символы увеличенной высоты; X — содержит украинские и белорусские буквы; S — символы смещены вверх на 1 линию.

fe.cab39 398 20.01.1994программа и шрифты, версия 2.6

Программа, печатающая свой текст (1990)

' Программа на Бейсике минимальной длины, печатающая сама себя.
' Версия для компилятора Turbo-Basic, написана для конкурса - аукциона,
' обьявленного журналом "Информатика и образование", номер 4 за 1990 год.
' (C) Я. Чеботарев, 12 сентября 1990 г.

a$="+chr$(34):?mid$(a$,28)a$a$'a$="+chr$(34):?mid$(a$,28)a$a$'a$="

Вы, вероятно, подумали, что это шутка? Не совсем так. В 1990 году я действительно выписывал журнал "Информатика и образование", надеясь, что он поможет мне освоить только что приобретённую машину "Ассистент". У меня уже была небольшая практика работы на Basic'е и некоторый опыт оптимизации программ на ассемблере (ПЭВМ "Агат", процессор 6502). Я решил, что в состоянии участвовать в конкурсе, написал программу для Turbo Basic'а из 1 строки и где-то дня за три довёл её до минимальной длины, отпечатал на работе листинг... Увы, она так никогда и не была послана в редакцию (ни электронной почты, ни Internet в те времена у нас не существовало). Позднее я даже несколько пожалел об этом — когда в журнале напечатали итоги конкурса, то оказалось, что такого короткого текста (66 символов) не прислал ни один из участников.

А вот другой вариант программы, работающий с уже с интерпретатором:

1 A$="+chr$(34):?1mid$(a$,29)a$a$'a$="+CHR$(34):PRINT 1 MID$(A$,29)A$A$'a$="

Оба варианта программы где-либо ещё не публиковались. Хотя с тех пор прошло более 10 лет, определённое влияние на мой стиль программирования этот конкурс оказал. Я до сих пор стараюсь уменьшать размер программного кода, насколько возможно, хотя сейчас пишу довольно редко...