Относительно недавно, прочитав местную статью "Демо, которых никто никогда не видел", решил, что тоже стоит пролить свет на некоторые плоды своей программистской молодости.
Начиналось с этого:
![image](https://habrastorage.org/r/w1560/storage2/dde/afb/290/ddeafb29061bafac6068e60f829a81ea.png)
В бытность мою в начале 1996 года студентом первого курса и обладателем компьютера "Поиск",
досталась мне от сокурсника чудесная книга Фаронова «Turbo Vision», которая заинтересовала меня в объектно-ориентированном программировании, и в Turbo Vision, в частности (там всё было так «вкусно» описано)).
Здесь стоит упомянуть, что тот мой комп (обладая 640 Кб ОЗУ, приводом для 5.25" 720Кб дискет и телевизором вместо монитора) «не тянул» Turbo Pascal 6.0, в составе с которым шла библиотека Turbo Vision, да и эмуляция текстового CGA-режима на «Поиске» была ужасна — символы могли быть, если память не изменяет, белыми/голубыми/розовыми на чёрном фоне, либо черными на голубом/розовом/белом фоне.
Короче, свой графический аналог Turbo Vision под CGA-графику (320x240, 4 цвета) писал я на Turbo Pascal 5.5 с кусками кода на Turbo Assembler 2.5 (урезанный комплект этого хозяйства как раз умещался на 720Кб-дискету).
Нюансы CGA-реализации:
Никакой полноценностью на тот момент моя программка не могла похвастать, это, скорее, была «технодемка», которой я хвастался перед сокурсниками (окна перетаскиваются, кнопки нажимаются, часики идут))
Выглядела она именно так, как на первой картинке.
Осенью 1996 года отец купил (ценой больших усилий: накопления и взятия взаймы долларов, спасибо ему) мне полноценный компьютер (AMD 5x86-133, 4Mb RAM, видео S3 Trio64 1Mb, 850Mb HDD, 14" монитор ARX).
Появилась возможность использовать Borland Pascal 7.0, мышь и 256-цветные SVGA-режимы.
Следующая реализация:
В последующий период (по 1999 год) указанные наработки были использованы при написании некоторых программок.
Недоделанная обучающая игра для кабинета информатики в школе:
![](https://habrastorage.org/storage2/bc5/d53/929/bc5d539295d9aa6c325f0d0c2bfd3097.gif)
Курсовая работа — игра про фабрики/сырьё/продукцию и прочее «экономическое моделирование»:
![](https://habrastorage.org/r/w1560/storage2/370/8c5/9c2/3708c59c2477bf7ff4f1b293a10d56cd.png)
Был реализован простейший недоредактор растровых пропорциональных шрифтов (до этого был лишь один мелкий пропорциональный шрифт от CGA-версии, в качестве крупного шрифта приходилось использовать сконвертированный шрифт с фиксированной шириной символов):
![](https://habrastorage.org/storage2/471/740/fbc/471740fbc65d07b7844a44531bfb4f31.gif)
Лабораторные работы по статистическому моделированию:
![](https://habrastorage.org/storage2/de7/a0a/636/de7a0a63689661172ce88147175ac70e.gif)
Лаба по логическому программированию:
![](https://habrastorage.org/r/w1560/storage2/ee9/29d/021/ee929d021ce43e5a47f98ddab9bab41a.png)
Часть лаб по компьютерной графике:
![](https://habrastorage.org/r/w1560/storage2/17c/3d3/4e9/17c3d34e91e5dc2e8fdfe4643a602983.png)
В итоге, к 1999 году накопилось следующее:
В рамках подготовки статьи захотелось увидеть, как будет смотреться мой DOS-овский графический WVision в FullHD-разрешении, но, к сожалению, не нашёл VESA-кода для режима 1920x1080x8. Лишь 1280x1024 удалось задать, сделал снимок экрана (вот только habrastorage его ужал до 800x640, увеличив при этом размер файла почти в 6 раз)):
![](https://habrastorage.org/r/w1560/storage2/b7c/45c/143/b7c45c1430d5baea4a0b0682e4345625.png)
Исходники и рабочие exe-файлы доступны в архиве WORKS.7z
(вот только исходные тексты CGA-реализации потерялись где-то на пятидюймовых дискетах, остался лишь исполняемый файл windy0.exe).
Минимальные требования для запуска: 386-совместимый процессор, 640Кб ОЗУ, 512Кб видеопамяти, поддержка VESA со стороны видео-BIOS (windy0.exe пойдёт и на 8086 с CGA-графикой).
Начиналось с этого:
![image](https://habrastorage.org/storage2/dde/afb/290/ddeafb29061bafac6068e60f829a81ea.png)
В бытность мою в начале 1996 года студентом первого курса и обладателем компьютера "Поиск",
досталась мне от сокурсника чудесная книга Фаронова «Turbo Vision», которая заинтересовала меня в объектно-ориентированном программировании, и в Turbo Vision, в частности (там всё было так «вкусно» описано)).
Здесь стоит упомянуть, что тот мой комп (обладая 640 Кб ОЗУ, приводом для 5.25" 720Кб дискет и телевизором вместо монитора) «не тянул» Turbo Pascal 6.0, в составе с которым шла библиотека Turbo Vision, да и эмуляция текстового CGA-режима на «Поиске» была ужасна — символы могли быть, если память не изменяет, белыми/голубыми/розовыми на чёрном фоне, либо черными на голубом/розовом/белом фоне.
Короче, свой графический аналог Turbo Vision под CGA-графику (320x240, 4 цвета) писал я на Turbo Pascal 5.5 с кусками кода на Turbo Assembler 2.5 (урезанный комплект этого хозяйства как раз умещался на 720Кб-дискету).
Нюансы CGA-реализации:
- Библиотеки для работы с графикой не используются
- Вся отрисовка ведётся через промежуточный буфер, в котором каждому пикселу соответствует 1 байт (для устранения мерцания и увеличения скорости отрисовки).
- Отрисовка частично перекрытых элементов осуществляется с использованием массива-маски (т.е. из буфера на экран выводятся только немаскированные части изображения).
Для экономии памяти каждому элементу маски соответствовал квадрат 4x4 экранных пиксела, соответственно, позиция и размеры элементов были кратны 4-м. - Самодельный пропорциональный растровый шрифт (стандартные в разрешении 320x240 выглядели гигантскими).
- Эмуляция мыши через клавиши управления курсором цифрового блока (на «Поиске» мыши не водились)).
Никакой полноценностью на тот момент моя программка не могла похвастать, это, скорее, была «технодемка», которой я хвастался перед сокурсниками (окна перетаскиваются, кнопки нажимаются, часики идут))
Выглядела она именно так, как на первой картинке.
Осенью 1996 года отец купил (ценой больших усилий: накопления и взятия взаймы долларов, спасибо ему) мне полноценный компьютер (AMD 5x86-133, 4Mb RAM, видео S3 Trio64 1Mb, 850Mb HDD, 14" монитор ARX).
Появилась возможность использовать Borland Pascal 7.0, мышь и 256-цветные SVGA-режимы.
Следующая реализация:
- использовала 256-цветные VESA-режимы, для чего ставился UniVBE — эмулятор VESA-видео-BIOS (редкие видеокарты на тот момент имели соответствующую встроенную поддержку);
- отрисовка крупных элементов, не помещающихся целиком в буфер, велась горизонтальными полосами;
- рисовала полноцветный курсор мыши, который мерцал только если накладывался на обновляемую область (т.е. мерцал гораздо меньше, чем в большинстве тогдашних графических программ);
- заимела поддержку отрисовки 256-цветных картинок формата BMP;
- включала в себя некоторые «портированные»/«допиленные» для поддержки графики исходники Turbo Vision.
В последующий период (по 1999 год) указанные наработки были использованы при написании некоторых программок.
Недоделанная обучающая игра для кабинета информатики в школе:
![](https://habrastorage.org/storage2/bc5/d53/929/bc5d539295d9aa6c325f0d0c2bfd3097.gif)
Курсовая работа — игра про фабрики/сырьё/продукцию и прочее «экономическое моделирование»:
![](https://habrastorage.org/storage2/370/8c5/9c2/3708c59c2477bf7ff4f1b293a10d56cd.png)
Был реализован простейший недоредактор растровых пропорциональных шрифтов (до этого был лишь один мелкий пропорциональный шрифт от CGA-версии, в качестве крупного шрифта приходилось использовать сконвертированный шрифт с фиксированной шириной символов):
![](https://habrastorage.org/storage2/471/740/fbc/471740fbc65d07b7844a44531bfb4f31.gif)
Лабораторные работы по статистическому моделированию:
![](https://habrastorage.org/storage2/de7/a0a/636/de7a0a63689661172ce88147175ac70e.gif)
Лаба по логическому программированию:
![](https://habrastorage.org/storage2/ee9/29d/021/ee929d021ce43e5a47f98ddab9bab41a.png)
Часть лаб по компьютерной графике:
![](https://habrastorage.org/storage2/17c/3d3/4e9/17c3d34e91e5dc2e8fdfe4643a602983.png)
В итоге, к 1999 году накопилось следующее:
- реализованы растровые регионы для отсечения невидимых областей при отрисовке, вследствие чего ограничения на размер/положение элементов были устранены (также хотелось сделать на основе регионов видимые элементы произвольной формы, но не сделалось);
- реализация алгоритма Флойда-Стенберга для адаптации загружаемых картинок к используемой фиксированной палитре (8-битный цвет имел формат RRRGGGBB, т.е. под интенсивность красной и зеленой составляющей выделялось по 3 бита, синей — 2 бита);
- были «портированы» некоторые стандартные элементы управления (список, выпадающий список, диалоговые окна выбора файлов и пр.);
- возможность отображать/править таблички (реализация TGrid)
- в связи с увеличением доступного объема памяти и «победным шествием» Windows 9x постепенно был утрачен интерес к DOS-программам.
В рамках подготовки статьи захотелось увидеть, как будет смотреться мой DOS-овский графический WVision в FullHD-разрешении, но, к сожалению, не нашёл VESA-кода для режима 1920x1080x8. Лишь 1280x1024 удалось задать, сделал снимок экрана (вот только habrastorage его ужал до 800x640, увеличив при этом размер файла почти в 6 раз)):
![](https://habrastorage.org/storage2/b7c/45c/143/b7c45c1430d5baea4a0b0682e4345625.png)
Исходники и рабочие exe-файлы доступны в архиве WORKS.7z
(вот только исходные тексты CGA-реализации потерялись где-то на пятидюймовых дискетах, остался лишь исполняемый файл windy0.exe).
Минимальные требования для запуска: 386-совместимый процессор, 640Кб ОЗУ, 512Кб видеопамяти, поддержка VESA со стороны видео-BIOS (windy0.exe пойдёт и на 8086 с CGA-графикой).