MSXパソコンでプログラミングしています。
ファイル入力の部分を改善しています。F$にファイルスペックが入ります。
ファイルスペックは今は死語になりつつありますが、
マイクロソフトのアプリではMS-DOS以前のROMBASICの話になります。
MSXBASICの構文でOPEN"GRP:"AS#1というふうにGRP:というのがあります。
これはグラフィック画面に出力させるもので、この構文をディスクへ出力する場合は
OPEN"A:TEST.TXT"となります。もともとはデバイスへ入出力する命令から変わったものです。
ディスクドライブのほかMEM:やCAS:のほかCP/MではCON、LST、EXE、PUNなどあります。
調べてみると…紙テープの穴あけパンチに出力できるんですね。CP/M互換はすごいです。
磁気カードの前は昭和時代の高速道路の通行券はパンチカードでしたね。
ということはMSX-DOSは今でいうDOS/V互換機みたいなマシンにできたような気がします。
MSX2ではカセットでOPEN"CAS:TEST_T"FOROUTPUTAS#1というふうに使います。
FDDドライブはもちろんメモリーディスクに出力させることもできます。
テープ式にMSXGAME01と書くとMSXGAME0.1というふうに1が拡張子になりますが、
LOAD"MSXGAME01"でロード可能です。
拡張子はわかりやすくするものでMSXBASICでは拡張子がなくても動作します。(え!)
B:TESTDOCと入力することもできます。カセットでは最大6文字でしたが
MSX-DOS2ではディレクトリが最大8文字までとかなり長いアドレスパスを指定できるようになりました。
このプログラムはピリオドがない場合、TXTをファイルスペックに加えます。
F$に入力した文字を入力してGOTOで実行します。
RUNを実行すると初期化されますのでGOTOを使います。
1は「FILENAME:README_」でREADMEと入力しても
README.TXTをロードできるようになります。
2は「FILENAME:TESTDOC.TXT_」と入力しても
TESTDOC.TXTをロードできるようになります。MSX-DOSではMENUDAT.DOCでもロードできます。
拡張子が異なってもファイル名を全て入力すれば動作します。
3は「FILENAME:A:\MENU.TXT_」と入力しても
MSX-DOS2では¥をディレクトリ(フォルダ)と判別してA:¥MENU.TXTをロードできるようになります。
フォルダ名がツクリカケ¥にプログラムがあって別のフォルダや別のドライブのデータを読み込みたい場合に
フルパス※で入力すればロードできます。MSXturboR,1chipMSXなどで有効ですね。
※8文字を超えるファイル名はMS-DOSからの指定方法になります。
このように環境が異なるMSXでも動作できるようになりましたが、
データだけ別のフォルダ(a:¥h-drive2)にしてある場合、File not foundのエラーが起こりました。
filesでファイルスペックを確認しましたがファイル名は間違っていません。
このような場合はカレントディレクトリをh-dirve2に一時変更して戻す作業が必要のようです。
実行用ディレクトリ:a:¥h-drive
データ用ディレクトリ:a:¥h-drive2
みたいにカレントの場所を指定してカスタマイズファイルが必要な気がしますw。
ここまで書くとMSXというよりPC98みたいな感じです。
どうもMSX-DOS2はDISKBASICのFILESなどが変わっただけで
ファイルのロードには対応していないです。¥(パス)もファイル名として読んでいますね。
それにはロードできるようにCALL CHDIR("A:¥H-DRIVE2")とカレントを変える必要があるようです。