比較的最近、地元の記事「
誰も見たことのないデモ 」を読んだ後、プログラマーの若者の成果のいくつかを明らかにする価値があると判断しました。
これで始まった:

1996年の初めに、私は1年生で、
検索コンピューターの所有者でしたが、
私は同僚のファロノフの素晴らしい本「ターボビジョン」から得たもので、オブジェクト指向プログラミング、特にターボビジョンに興味がありました(すべてがとても「美味しかった」と説明されていました)。
私のコンピューター(640 KBのRAM、5.25インチ720Kbディスケットドライブ、モニターの代わりにテレビ)がTurbo Pascal 6.0をプルしなかったことに言及する価値があります。TurboVisionライブラリを含み、CGAテキストモードをエミュレートしました「検索」はひどいものでした-記憶があれば、文字は黒の背景に白/青/ピンク、または青/ピンク/白の背景に黒になります。
要するに、Turbo Assembler 2.5のコードを使用して、Turbo Pascal 5.5でCGAグラフィックス用のTurbo Visionのグラフィックアナログ(320x240、4色)を作成しました(このエコノミーの簡易キットは720Kbフロッピーディスクにちょうど収まります)。
CGA実装のニュアンス:
- グラフィックライブラリは使用されません
- すべてのレンダリングは、1ピクセルが各ピクセルに対応する中間バッファーを介して行われます(ちらつきを排除し、レンダリング速度を向上させるため)。
- 部分的にオーバーラップした要素は、配列マスクを使用して描画されます(つまり、画像のマスクされていない部分のみが画面上のバッファーから表示されます)。
メモリを節約するために、各マスク要素は4x4スクリーンピクセルの正方形にそれぞれ対応し、要素の位置とサイズは4の倍数でした。 - 自家製のプロポーショナルビットマップフォント(320x240の解像度の標準は巨大に見えました)。
- デジタルブロックのカーソルキーを使用したマウスエミュレーション(「検索」でマウスが見つかりませんでした)。
私のプログラムは、その時点では何の有用性も自慢できませんでした。むしろ、仲間の生徒に自慢した「テクノデモ」でした(ウィンドウがドラッグされ、ボタンが押され、時計がオンになっています))
彼女は最初の写真のように見えました。
1996年の秋、父は私にフルコンピュータ(AMD 5x86-133、4Mb RAM、S3 Trio64 1Mbビデオ、850Mb HDD、14インチARXモニター)を購入しました(多大な労力を費やして、彼に感謝します)。
これで、Borland Pascal 7.0、マウス、および256色SVGAモードを使用できます。
次の実装:
- UniVBEがインストールされた256色VESAモードを使用しました-VESA-video-BIOSエミュレーター(当時のまれなビデオカードには対応する組み込みサポートがありました)。
- バッファに完全には収まらない大きな要素の描画は、横縞で行われました。
- 更新された領域に重ねられた場合にのみ点滅するフルカラーのマウスカーソルを描画しました(つまり、ほとんどのグラフィックプログラムよりもはるかに小さく点滅しました)。
- 256色のBMP画像のレンダリングをサポートしました。
- Turbo Visionグラフィックサポート用の「移植」/「ドープ」ソースが含まれています。
その後の期間(1999年まで)で、これらの開発はいくつかのプログラムを書くために使用されました。
学校のコンピューターサイエンスキャビネット用の未完成の教育用ゲーム:

コースワーク-工場/原材料/製品およびその他の「経済モデリング」に関するゲーム:

ラスタープロポーショナルフォントの最も単純なアンダーエディターが実装されました(CGAバージョンから小さなプロポーショナルフォントが1つだけになる前は、固定フォント幅の変換フォントを大きなフォントとして使用する必要がありました)。

統計モデリングに関する実験室作業:

論理プログラミングのラバ:

コンピュータグラフィックスに関するラボの一部:

その結果、1999年までに次のことが蓄積されました。
- レンダリング中に不可視領域をクリッピングするためにラスター領域が実装され、その結果、要素のサイズ/位置の制限が削除されました(領域に基づいて任意の形状の可視要素を作成したいのですが、そうしませんでした)。
- アップロードされた画像を使用済みの固定パレットに適合させるためのフロイド-ステンバーグアルゴリズムの実装(8ビットカラーはRRRGGGBB形式でした。つまり、赤と緑のコンポーネントに3ビット、青のコンポーネントに2ビットが割り当てられました)。
- 一部の標準コントロール(リスト、ドロップダウンリスト、ファイル選択ダイアログなど)は「移植」されました。
- タブレットを表示/編集する機能(TGrid実装)
- 使用可能なメモリの増加とWindows 9xの「勝利」により、DOSプログラムへの関心は徐々に失われました。
記事の準備の一環として、FullHD解像度のDOSグラフィックWVisionがどのように見えるかを見たかったのですが、残念ながら、1920x1080x8モードのVESAコードは見つかりませんでした。 設定できるのは1280x1024だけで、スクリーンショットを撮りました(800x640に変更したhabrastorageで、ファイルサイズがほぼ6倍になります):

ソースと作業用exeファイルは
WORKS.7zアーカイブで利用可能です
(ここでは、CGA実装のソースコードのみが5インチフロッピーディスクのどこかに失われ、実行可能ファイルwindy0.exeのみが残っていました)。
実行するための最小要件:386互換プロセッサ、640KBのRAM、512KBのビデオメモリ、ビデオBIOSからのVESAサポート(windy0.exeはCGAグラフィックを使用して8086に移動します)。