『ドライブ番号=SCSI ID』としているので、理論上はドライブ番号0~3だけでなく4~6からも起動できるのですが、X1turboのIPLがそれを許さない。なので、制限している部分を書き換え。
書き換えたBIOSで起動し、ドライブ番号6を選択してのBASICを起動…
BASICの起動画面が表示されたものの、直後に"Bad file descpriter"エラーで停止。
あー、そうか。
ディスク上にあるBASICではドライブ番号の最大値を変更していないのに"HD6:Start up.Bas"を読み出そうとしてエラーになっている。
標準ではないブート手法は無用な混乱を避けるために、控えた方が良さそうだ。
2016/06/17
ドライブ番号が0~3の理由って
せっかくのSCSIも、X1turbo(正確にはHuBAISCやturbo CP/M)では0~3の4台しか使用できない。この制限は、FDDが4台まで接続出来るので、これに合わせたのかな?ではなぜ、EMMは0~9なのか…なんで?そんなに拡張スロットないでしょ。
SASIを解析をしたとき、マシン語処理部"DISK UTILTY.Obj"では、わざわざ8台分のHDDに対応した作りになっており、将来的には0~7になっていたかも?
FDDはドライブ側の仕様も関係しているため4台までですが、SCSIならば最大7台までの接続が可能なわけで、この制限突破を試みる。
手始めにFILES"HD4:"を実行すると"Bad file descripter"になるところから、このエラーにジャンプしている部分を検索。すると、ドライブ数を格納しているテーブルらしき領域を発見。EMMであれば0~9の最大10ドライブ、 MEMなら0~1の2ドライブと、X1turboならではの「それっぽい値」が並んでる。
しかし、ドライブ番号が0~3なのはHDDだけではなく、5(or3)インチFDD、サポートされず仕舞いの8インチFDDもあるため、どれがHDDに該当するのか…全部書きかえて試せば分かる事が、テーブル値の並びを見てBIOSワークのFDCNOと同じではないかと推測。
HDDに相当する部分を書き換え、FILES"HD6:"を実行するとID6にしてあるMOドライブをアクセスする事に成功。
turbo CP/Mについては、HDD用のワークが4台分しか存在せず、そもそものドライブレターがA~Hの8台分なので、最大接続数の変更は面倒なうえにメリットがないような…ので割愛っと
SASIを解析をしたとき、マシン語処理部"DISK UTILTY.Obj"では、わざわざ8台分のHDDに対応した作りになっており、将来的には0~7になっていたかも?
FDDはドライブ側の仕様も関係しているため4台までですが、SCSIならば最大7台までの接続が可能なわけで、この制限突破を試みる。
手始めにFILES"HD4:"を実行すると"Bad file descripter"になるところから、このエラーにジャンプしている部分を検索。すると、ドライブ数を格納しているテーブルらしき領域を発見。EMMであれば0~9の最大10ドライブ、 MEMなら0~1の2ドライブと、X1turboならではの「それっぽい値」が並んでる。
しかし、ドライブ番号が0~3なのはHDDだけではなく、5(or3)インチFDD、サポートされず仕舞いの8インチFDDもあるため、どれがHDDに該当するのか…全部書きかえて試せば分かる事が、テーブル値の並びを見てBIOSワークのFDCNOと同じではないかと推測。
HDDに相当する部分を書き換え、FILES"HD6:"を実行するとID6にしてあるMOドライブをアクセスする事に成功。
turbo CP/Mについては、HDD用のワークが4台分しか存在せず、そもそものドライブレターがA~Hの8台分なので、最大接続数の変更は面倒なうえにメリットがないような…ので割愛っと
2016/06/15
光磁気ディスクへの対応
今やすっかり過去のデバイスとなったMOこと光磁気ディスク。
電源投入直後から読み出せるハードディスクと異なり、MOドライブでは電源投入直後に読み出しても読み出せません。そもそも電源投入直後に接続デバイスのチェックもせず、いきなり読み出す使い方がダメなんだけど、X1turboの場合はドライバを仕込むROM容量が厳しいわけで…
で、本題。
MOドライブは電源投入直後(メディア交換直後)にはユニットアテンション状態になっていて、このときに読み出しコマンドを実行してもチェックコンディションのステータスを返し、イニシエーター側にそれなりの対応を促してきます。
そこで、この状態から抜け出すための処理を追加するだけの簡単なというか、手抜きな対応。
チェックコンディションをクリアするためだけにリクエストセンスを実行し、戻ってくる情報は読み捨て(ヒドいw)。あとはROM容量との相談でしたが、実装してみると空き容量を数バイト残してなんとか対応。
変換番長からブートして、MOドライブに230MBのメディアを挿入してみると、無事にメディアを認識。フォーマット、SYSGENで起動ディスクの作成も正常終了し、MOからのブートも可能です。もちろん、メディアを交換しても大丈夫。
このMOドライブは640MB対応なので、2048バイト/セクタの640MBメディアはどうか…
640MBのメディアを挿入し、フォーマット…問題無しかな(以下略
電源投入直後から読み出せるハードディスクと異なり、MOドライブでは電源投入直後に読み出しても読み出せません。そもそも電源投入直後に接続デバイスのチェックもせず、いきなり読み出す使い方がダメなんだけど、X1turboの場合はドライバを仕込むROM容量が厳しいわけで…
で、本題。
MOドライブは電源投入直後(メディア交換直後)にはユニットアテンション状態になっていて、このときに読み出しコマンドを実行してもチェックコンディションのステータスを返し、イニシエーター側にそれなりの対応を促してきます。
そこで、この状態から抜け出すための処理を追加するだけの簡単なというか、手抜きな対応。
チェックコンディションをクリアするためだけにリクエストセンスを実行し、戻ってくる情報は読み捨て(ヒドいw)。あとはROM容量との相談でしたが、実装してみると空き容量を数バイト残してなんとか対応。
変換番長からブートして、MOドライブに230MBのメディアを挿入してみると、無事にメディアを認識。フォーマット、SYSGENで起動ディスクの作成も正常終了し、MOからのブートも可能です。もちろん、メディアを交換しても大丈夫。
このMOドライブは640MB対応なので、2048バイト/セクタの640MBメディアはどうか…
640MBのメディアを挿入し、フォーマット…問題無しかな(以下略
登録:
投稿 (Atom)