端末エミュレーションについて

MSXBIOSやMSXDOSのファンクションコールがサポートする端末はTV52互換だったと思う。
ターミナルエミュレーションとしての互換性はVT52を基本としていて、Cのprintf()やputs()
を使う場合は内部でファンクションコールを呼び出しており、それらはVT52互換となる。

C言語からは普通にVT52互換エスケープシーケンスを使える
(VT100互換ではないからMSDOSと同じでない)

#include <stdio.h>

main(void){
		printf("\033j");     //画面消去
}


端末エミュレーション互換性という意味では、世の中にはMSDOSなどのEDITコマンドやDOSSHELL、
UNIXではncursesなどで作成された「キャラクタユーザーインターフェース」がある。
これらと同等のライブラリはMSXにはないが、9918や9938/58などではキャラクタ画面に直接、
文字コードを書き出せば文字が出力されるので、そもそもこれらの端末制御機能はAPIライブラリ
として実装する必要がないのである。
この時代のマシンにはVDPに端末スクリーン機能があり、直接VRAMに文字コードを書く事で、
文字端末のスクリーン操作(ANSIエスケープシーケンス)と等しい機能を実現できたからである。

当時のIBM-PCのVGAテキスト画面も同じで、MSDOSのEDITコマンドやDOSSHELLなどは直接VGA
テキスト画面を操作している。それは端末エミュレーションよりもVGAを操作するほうが体感的に
速かった為でもある。
しかしVGAハードウエアに強く依存し、互換性のある端末エミュレーション機能を採用しなかったことで、
Windows世代のDOSプロンプトでEDITコマンドが動作しないという問題も生じた。
(当時のコンピュータは端末を接続して利用するという形態よりも、スタンドアロンで
利用するものなのでハードウエア的に端末スクリーンが実装されていた部分があった)

このVDP機能を用いて、比較的有名なゲームが移植されたこともある。
キャラクタ文字端末で動くゲームとして有名なものの一つにスネークゲーム(2013年はヘビ年!)がある。

これらの移植もVDPのテキストキャラクタ画面では比較的容易で、大型機やミニコン、UNIX等で
動いていた端末スクリーン操作のゲームは、単にVDPの画面上の位置を示すVRAMに文字コード
(キャラクタ)を書き出すことで実現できる。

ちなみにこの文字キャラクタをビットマップに置き換える事も可能に進化することで、
ファミコンやマスターシステムの絵が描画されているわけである。(MSXではSCR1,2モード)
当時は今と違ってフルカラービットマップで画面を描画していない。
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。