Open SuperTurboZ opened 2 years ago
いろいろ応用できそうな感じですね。 ただ、LSX-Dodgers 1.45でGRAMディスクのDPBを少し変えちゃったのですが大丈夫ですか? ダメだったら元に戻します。 https://github.com/tablacus/LSX-Dodgers/releases
今回作ったものはLDのバージョンごと凍結させるのでDPBの変更は問題ないです。
GRAMドライブに必要なファイルをコピーした状態から、
SYSHD {HDドライブ} {MBRに書き込むファイル}
のようなコマンドで書き込むようにすればよいかなと考えていますがいかがでしょうか。 ISO9660だとBOOTブロックが32KBしかないので、GRAMドライブは容量を指定するかランレングス圧縮かけた方がよいのかもしれません。 どちらにしてもX1turboの標準BIOS-ROMではSCSI CDROMからIPL起動することは出来ないのですが。
ちょっと違うアプローチですが、LD本体と外部コマンド1つをまとめる外部コマンドを作ってみました。
以下のように外部コマンドと作成するシステムのパスとデフォルトにしたいドライブ名を入れて実行するとLD本体と外部コマンドをまとめたMSXバイナリ形式のシステムファイルができます。
MAKESYS 外部コマンドのパス 作成するシステムのパス [ドライブ名]
例えば、「hdd.com」をまとめて「h:」で起動する「ldhd,bin」を作成したい場合は以下のようになります。
makesys hdd.com ldhd.bin h:
以下のようにデフォルトドライブのautoexec.bat(autoexec.com)を実行します。
こちらでのやりとりを参考に、ある程度簡単にHDDからの起動を行うための手順を下記にまとめてみました(LD-hddリポジトリ内)。
https://github.com/ho-ogino/LD-hdd/tree/main/ld-hddboot
まだ若干手順が煩雑なので、もう少し整理する可能性もありますが、ひとまずはある程度誰でも動かせるものを置いておこう、という感じです。
例によってGakuさんとすーぱーたーぼさんの成果物を利用させていただきました。ありがとうございます……!
HDからLD+HDをIPL起動するためには、LDを起動した後にHDドライバを どこから読み込んで実行させるのか、という問題があります。
LD本体の初期化コードを変更する方法もありますが、トリックを使って GRAMドライブから読ませることができたので、その方法を書いておきます。
流れとしては、
1.ドライバを自動実行させるAUTOEXEC.BATとHDD.COMをGRAMディスクに 格納した状態のGRAMイメージを作る。 2.BPB(先頭レコード)の直後の未使用領域にLD.BINとGRAMイメージを格納する。 3.BPBの先頭にX1用のIPLレコードとHD用ローダープログラムを配置する。 4.X1のIPLがHD内のBPB+未使用領域 を読み込んでローダーを実行する 5.ローダーは未使用領域から読まれた LD.BIN と GRAMイメージを再配置して "G:"ドライブからIPL起動したように偽装してLDを実行する。 6.LDは起動後に "G:AUTOEXEC.BAT" を実行する。 7."G:AUTOEXEC.BAT" は "G:HDD.COM" を実行してHDドライバを有効にして、 カレントドライブを'H:'に変更して"H:AUTOEXEC.BAT" を実行する。
といった感じです。
今回は時間が無く手作業でインストールしましたが、GRAM上に自動実行用の ファイル群を格納した状態で、Sysgenのコマンド等でHDに書き込むようにすれば CDROM、ROMドライブ、独自デバイスなど結構応用が利く方法なのかなと思いました。
G:AUTOEXEC.BAT
IPLレコード+ローダー