0

非常に変わった VGA システム フォントを持つ古いToshiba 386 PC (T2000Sx) にアクセスできます。Web サイトのフォント ファイルとドキュメントとして復元したいと考えています。

VGA メモリからフォント データを読み取り、フロッピーに書き込むプログラムを作成するにはどうすればよいですか?

システムはフロッピーからかろうじて起動し、メモリーもほとんどなく (基本 1MB + 拡張 9MB)、ハードドライブもありません。以前は、パラレル ポートの ZIP ドライブを介して Debian 2.1 を起動していましたが、それはもはや機能していないようです。

質問は次の組み合わせです。

  1. これを行う(DOS)プログラムはすでにありますか?(まだ見つけていませんが、もしかしたらあるのでしょうか?)

  2. プログラミング ツール: どの言語/コンパイラを使用できますか? 明らかに、このマシンは最新の OS を実行しないため、GCC / VS は問題外です。私は 20 年前にアセンブリから手動で .COM 実行可能ファイルを作成した経験がありましたが、さびています。現在、より優れたプログラミング ツールはありますか?

  3. VGA 標準: アドレス空間のどのアドレスでフォント データを見つけることができ、何バイトを読み取る必要がありますか? 私はこれをオンラインの他の情報源でまだ見つけていません.

4

2 に答える 2

2

MSDOS 6.22 ブート フロッピーを持っていると仮定すると、フロッピーをブートし、デバッグを実行して小さなアセンブリ プログラムを作成できます。

INT 6 (オフセット 16 進数 18) は、現在のフォント テーブル (少なくとも 0 ~ 7fh) への far ポインターである可能性があります。

INT 10 を呼び出す

AX = 1130h
BH = pointer specifier
    00h INT 1Fh pointer
    01h INT 43h pointer
    02h ROM 8x14 character font pointer
    03h ROM 8x8 double dot font pointer
    04h ROM 8x8 double dot font (high 128 characters)
    05h ROM alpha alternate (9 by 14) pointer (EGA,VGA)
    06h ROM 8x16 font (MCGA, VGA)
    07h ROM alternate 9x16 font (VGA only) (see #0020)
    11h (UltraVision v2+) 8x20 font (VGA) or 8x19 font (autosync EGA)
    12h (UltraVision v2+) 8x10 font (VGA) or 8x11 font (autosync EGA)
Return: ES:BP = specified pointer
    CX    = bytes/character of on-screen font (not the requested font!)
    DL    = highest character row on screen

cs および ds セグメント レジスタをビデオ カードの BIOS のセグメント (おそらく 16 進数の C000) に設定し、次に cx をバイト数に設定し、n を使用してファイル名を設定し、書き込みを行うことができます。これにより、BIOS のバイナリ ファイルが作成されます。他のオペレーティング システム用にこれを行うためのユーティリティがある場合があります。次に、ビデオ BIOS イメージ ファイル内からフォント データを見つける必要があります。

于 2014-05-15T21:56:35.053 に答える
0

Linuxsetfontユーティリティを使用すると、現在 (画面上で) 使用されている VGA フォントをファイルにキャプチャできます。

Linux にこの機能がどのくらいの期間備わっているかはわかりません。1 つの考えとしては、非常に古い Linux ブートディスク (Debian/Slackware/Yggdrasil など) を探して、このユーティリティが含まれているものを見つけるか、ブートディスクを分解してsetfontバイナリをコピーすることです。 VM 内から完全にすべての準備作業を行う必要がある 1.x/2.0/2.2 日の後半。

徹底的な作業を行うにはvga=ask、カードを 80x43、80x50 などにプッシュして、これらの解像度で起動し、それらのフォントもキャプチャできるようにする必要があります。

経験レベルによっては、他のコメントが示唆するように、アセンブリ言語を試す方が簡単な場合があります。この領域での迅速な反復は、これまで以上に簡単であることに注意してください。QEMU-KVM (および同様の) は、非常に基本的なハードウェアでも、DOS などをおよそ 1 秒未満で起動します。

于 2016-07-17T03:00:24.497 に答える