Относительно недавно, прочитав местную статью "Демо, которых никто никогда не видел", решил, что тоже стоит пролить свет на некоторые плоды своей программистской молодости.
Начиналось с этого:
В бытность мою в начале 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 год) указанные наработки были использованы при написании некоторых программок.
Недоделанная обучающая игра для кабинета информатики в школе:
Курсовая работа — игра про фабрики/сырьё/продукцию и прочее «экономическое моделирование»:
Был реализован простейший недоредактор растровых пропорциональных шрифтов (до этого был лишь один мелкий пропорциональный шрифт от CGA-версии, в качестве крупного шрифта приходилось использовать сконвертированный шрифт с фиксированной шириной символов):
Лабораторные работы по статистическому моделированию:
Лаба по логическому программированию:
Часть лаб по компьютерной графике:
В итоге, к 1999 году накопилось следующее:
В рамках подготовки статьи захотелось увидеть, как будет смотреться мой DOS-овский графический WVision в FullHD-разрешении, но, к сожалению, не нашёл VESA-кода для режима 1920x1080x8. Лишь 1280x1024 удалось задать, сделал снимок экрана (вот только habrastorage его ужал до 800x640, увеличив при этом размер файла почти в 6 раз)):
Исходники и рабочие exe-файлы доступны в архиве WORKS.7z
(вот только исходные тексты CGA-реализации потерялись где-то на пятидюймовых дискетах, остался лишь исполняемый файл windy0.exe).
Минимальные требования для запуска: 386-совместимый процессор, 640Кб ОЗУ, 512Кб видеопамяти, поддержка VESA со стороны видео-BIOS (windy0.exe пойдёт и на 8086 с CGA-графикой).
Начиналось с этого:
В бытность мою в начале 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 год) указанные наработки были использованы при написании некоторых программок.
Недоделанная обучающая игра для кабинета информатики в школе:
Курсовая работа — игра про фабрики/сырьё/продукцию и прочее «экономическое моделирование»:
Был реализован простейший недоредактор растровых пропорциональных шрифтов (до этого был лишь один мелкий пропорциональный шрифт от CGA-версии, в качестве крупного шрифта приходилось использовать сконвертированный шрифт с фиксированной шириной символов):
Лабораторные работы по статистическому моделированию:
Лаба по логическому программированию:
Часть лаб по компьютерной графике:
В итоге, к 1999 году накопилось следующее:
- реализованы растровые регионы для отсечения невидимых областей при отрисовке, вследствие чего ограничения на размер/положение элементов были устранены (также хотелось сделать на основе регионов видимые элементы произвольной формы, но не сделалось);
- реализация алгоритма Флойда-Стенберга для адаптации загружаемых картинок к используемой фиксированной палитре (8-битный цвет имел формат RRRGGGBB, т.е. под интенсивность красной и зеленой составляющей выделялось по 3 бита, синей — 2 бита);
- были «портированы» некоторые стандартные элементы управления (список, выпадающий список, диалоговые окна выбора файлов и пр.);
- возможность отображать/править таблички (реализация TGrid)
- в связи с увеличением доступного объема памяти и «победным шествием» Windows 9x постепенно был утрачен интерес к DOS-программам.
В рамках подготовки статьи захотелось увидеть, как будет смотреться мой DOS-овский графический WVision в FullHD-разрешении, но, к сожалению, не нашёл VESA-кода для режима 1920x1080x8. Лишь 1280x1024 удалось задать, сделал снимок экрана (вот только habrastorage его ужал до 800x640, увеличив при этом размер файла почти в 6 раз)):
Исходники и рабочие exe-файлы доступны в архиве WORKS.7z
(вот только исходные тексты CGA-реализации потерялись где-то на пятидюймовых дискетах, остался лишь исполняемый файл windy0.exe).
Минимальные требования для запуска: 386-совместимый процессор, 640Кб ОЗУ, 512Кб видеопамяти, поддержка VESA со стороны видео-BIOS (windy0.exe пойдёт и на 8086 с CGA-графикой).