かずの不定期便ブログ

備忘録代わりに書きます

X68000 EXPERT RaSCSI起動!ですよ

目次

 

RaSCSIの準備(物理編)

 GIMONSさんが作成、公開されているRaSCSIに対応したラズパイ向けの変換基板(私はあいぼむプロダクツさんのRaSCSI Adapter Lite External Editionをチョイス)を購入します。私のX68KはEXPERTなのですが、アンフェノールフルピッチ50ピン メス端子が実装されています。フルピッチなSCSIケーブルはHDD廃棄と同時に捨てちゃったみたいです。押し入れを探すと片側はアンフェノールハーフピッチの50pinオス(RaSCSIへ)、もう一方はピンタイプハーフピッチ50ピンオスがあったので、後者の端子を変換するためフルピッチ→ハーフピッチへ変換アダプタを購入しました。(運よく新品を手に入れることが出来ました。)

 SCSIケーブルと変換アダプタ。昨今のシリアル転送のケーブルと比較するとすごい存在感ですね。

f:id:spend-carefree:20190826095905j:plain

f:id:spend-carefree:20190826095919j:plain

   しかしSCSIってこんなに複雑だったのですね。ピン数の違いだけならまだしも、端子の形が異なったり(フルピッチ、ハーフピッチ、D-Sub)、同じ形状なのに名称が異なったりで。。。市場に少ない上に種類が多すぎで探すのに大変苦労しました。

呼称は以下だと思います(間違ってたらゴメンナサイ)

  • アンフェノール(フル/ハーフ)=セントロニクス(フル/ハーフ)=ベローズ(フル/ハーフ)
  • ピンタイプ(ハーフ)=D-Sub(ハーフ)=くし形(ハーフ)

いくつか参考ページを上げときます。

http://ecole-rg.meclib.jp/sanwasuply2016/book/pdf/0475.pdf

https://www.atmarkit.co.jp/ait/articles/0207/10/news005.html

http://square.umin.ac.jp/~itoh/ex_scsi.html

 

RaSCSIの準備から導入(ソフト編)

 私のX68000はEXPERTなのでHDDのインターフェースはSASI I/Fなのですが、SxSIというドライバを使うとSCSI機器が扱えるっていう素晴らしいソフトウェアを利用してました。RaSCSIには幸いSxSIの動作実績があるので安心です。

 GIMONSさんのwebではRaSCSI導入マニュアルがダウンロードできるのですが、本マニュアルにはラズパイのOS導入からRaSCSIを動かすまでが丁寧に記載されています。ラズパイを初めて買った人向けに記載されているので、RaSCSI導入に関わらずラズパイをまず動かしたいという要望も満たせるすごく良い資料になってます。OSセットアップ後のRaSCSIセットアップはこのマニュアルに載っている半自動実行スクリプトで難なくできます。

 PCからラズパイのディスクをexplorerでアクセス出来るようにするためのソフトウェアsambaの設定方法も記載されており簡単に導入できます。これでHDDイメージのコピーがexplorer出来るのでX68Kのディスクをエミュレータのごとく扱えるようになります。

大まかな流れ
  1. SDカードをフォーマット
  2. ラズパイのOSであるRaspbianのイメージを公式サイトからダウンロードし上記のSDカードにイメージコピー
  3. ラズパイにLAN接続(SSHでPCからラズパイをリモート制御します)出来るようにあらかじめ、細工。無線LAN接続も可能なように設定。
  4. 出来上がったSDカードをラズパイに入れて電源ON(ACアダプタを繋ぐ)
  5. PC側にSSHクライアントのインストール(私はTeraTermを選択)
  6. 上記のSSHクライアントを使ってラズパイにログイン
  7. ラズパイ上で半自動実行スクリプトのダウンロードと実行(OSのアップデート及びRaSCSI,sambaのインストールが行われます)
  8. sambaの設定ファイルを修正&有効化
  9. 終了後、sudo reboot でラズパイの再起動
  10. PCからネットワークドライブの割り当てて任意のドライブ(私はRaSCSIという事でRドライブにしました)へラズパイのフォルダー:\\raspberrypi\RaSCSI を割り当てます。

    f:id:spend-carefree:20190819230656p:plain

※3のリモート接続が可能にする作業はラズパイにキーボードやモニタを繋げなくてもPCからの操作を可能にします。また導入OSはGUIの無いLite版です。

  #しかし、この記事、訪問してくれた人たちには何の参考にもならないですね。。。導入マニュアルに分かりやすく書いてあるので。

  

HDDイメージの準備

 次にイメージファイルの準備なのですが、エミュレータXM6で使っているSCSIハードディスクイメージがそのまま使えるということなので、XM6で利用しているHDDイメージをラズパイのドライブのrasimg配下にコピーして、ラズパイにログインして/home/pi/rasimg/rasmount.shを編集して、ID0にコピーしたファイル名を指定してラズパイを再起動させればよいです。HDDイメージが無い場合にはXM6でイメージを作成するのが楽です。導入マニュアルには空ディスクイメージを作成して、RaSCSIに割り当てる方法が記載されています。この場合にはRaSCSIを起動させたうえで実機にてFDDからHuman起動、そしてRaSCSIにて提供される空ディスクHDDをフォーマットする必要があります。私はXM6で運用(現役当時のイメージです)していたものをそのまま使う事にしました。

!/bin/sh
rascsi -ID0 /home/pi/rasimg/SYSTEM.HDS \
       -ID1 /home/pi/rasimg/MO_DATA.MOS \
       -ID2 /home/pi/rasimg/RASDRIVER.HDS \  ←RaSCSIに同梱されていたイメージ
       -ID6 bridge

 しかし、SxSIなEXPERTはこのSCSIイメージから準備なしにはブートできません。SRAMにSxSIのドライバを組み込んでSRAMから起動させてSASIをSCSIにエミュレートした上でブートさせないといけません。

 SxSIによるSCSIエミュレートではなくSASIのHDDイメージを作成すればSxSIなしにブートさせることが出来るはずですが、イメージを新たに作成するのが面倒だと思ったのと、実機で運用していたMOのデータをXM6にてMOイメージとして既に作成もしていました。更に更にX68K現役時代に数々のフリーソフト、MDXなどの音楽ファイル、FDイメージをCDにバックアップしていたので、これをISOイメージにしてRaSCSIで扱いたい(ISOイメージもCDROMドライブとして扱えるのです!)のでHDD以外も扱えるSCSIじゃないといけないです。因みに当時使っていた230MBのMOのデータもCDに焼いていました。(偉いぞ。自分。しかし手持ちの全データがCD2枚に収まってしまうというのは時代を感じます)

 X68Kの現役当時は(確か)100MBの外付けSCSI-HDD(boot用)、230MBのMOドライブ(データ用)を運用させてました。MOディスクでwindows機へデータを持って行った記憶があります。ファイル名の文字数がwindows機でみると8.3文字になっちゃうので何か対策したのですが、記憶を呼び出せません。

 という事からSxSIブートさせたいです。SASI、SCSI混在運用という手もあるのですが、やったことないのでこれは最終手段です。

 

SxSIインストール

 私が行った手順です。以下にSxSIブートまでの道のりを記載します。もっとスマートなやり方はあったと思いますが、自分の覚書きです。

  1. SxSIのSASIIOCSドライバの入ったHuman OS起動ディスクでブートさせます。私は幸いいくつかのFDを残しており、この中に一枚だけブート可能なディスクがありました。すんなり見つけたわけでなく、ラベルのついたディスクはことごとくブートに失敗しました。SASIOCSが新しい版を使っていてアドレスエラーが出たり(理由が今のところ不明)、メモリー不足だったり(後で判明)で使えないディスクばかりで、途方に暮れました。ラベルなしのディスクが一緒に置いてありコレはなんだろうか?と思ってブートさせたらたまたまブートしてくれました。まさに不幸中の幸い
    *1
  1. ブート中以下の様なメッセージが出てきました。
    X680x0 Super SCSI unit driver ver 1.00 by Hero Soft.
    ターゲット ID 1 のデバイスでドライブ C: が利用可能です
    この後、「コマンドまたはファイル名が違います」がたくさん出てきました。
    SCSI ID=1のディスクが認識できたようなので、dir c:で中を確認するとrasmout.shで指定したID=1のディスクでした。この時点で正しくRaSCSIが動けているのが確認できます。
  2. ここで本ディスクのCONFIG.SYSを書き換えてID=0を認識できるように以下の様に書き換える事が出来たなら簡単だったのですが、なんと本ディスクにはBIN dirが無くedコマンドも、常用していた高速版のsuperedも使えなかったのです。。。

    DEVICE = \SYS\SASIIOCS.SYS ← この行は既に存在しているハズ。
    DEVICE = \SYS\SCSIHD.SYS ID=0 X68SCSI.BRP IBMSTD.BRP
    DEVICE = \SYS\SCSIHD.SYS ID=1 MX=1 X68SCSI.BRP IBMSTD.BRP
    DEVICE = \SYS\SCSIHD.SYS ID=2 MX=1 X68SCSI.BRP IBMSTD.BRP

    ID=0~2の3台のHDDを認識させる設定で、ID=1~2はSCSI-HDでなくてもIBMフォーマットの施されたMOでも認識が可能な設定です。
    とにかく上記の様に書き換えることが出来なかった為、RaSCSI側の設定をID=0とID=1の設定を交換して、CドライブとしてSYSTEM.HDSを認識できるようになりました。やれやれ。
  3. 後は以下の様にSCSI HDDからブートできるようにBOOTSET.Xコマンドを実行すれば、本プログラムがドライバをSRAMへ登録し、SRAM起動に切り替えてくれます。私のHDDイメージは元々SxSI運用していたので本コマンドが入っていますが、無い場合はSxSI4.LZHを入手し展開したものをあらかじめハードディスクイメージに格納しておく必要があります。XM6でイメージは作成できると思います。
    A>c:
    C>cd bin
    C>bootset.x
  4. フロッピーを抜いてX68の電源を落とし、RaSCSIのIDを元に戻してラズパイ再起動。でX68Kの電源ON
    で成功すると思いきや、キャッシュドライバwcache.xがメモリ不足で実行できないとかRAMDISKが登録できないなどのメッセージが出て最後まで起動できませんでした。
  5. 再度、さきほどのフロッピーをセットして、RaSCSIの設定をID=1がシステムになるよう変更しOPT.1を押しながら起動します。
    カレントドライブをC:にしてcd binでSUPERED.Xが見える位置に移動して、HDDのautoexec.batをSUPEREDで読み込みます。wcacheの呼び出しをコメントアウト、またRAMDISKドライバGRADの起動もコメントアウト、autoexec.batの最後の方でRAMDISKをカレントドライブへ変更するz:という記述があったのでハードディスクになるようにc:へ変更しました。これでようやく起動しました。メモリ不足の原因は後で分かります。
  6. MOやCDドライブイメージをマウントさせるならばautoexec.batの中にsusieコマンドの実行を記載します。自分はX68Kの現役時代MOドライブを使っていたので、以下の記述がありました。-IDでSCSIIDの設定、-RSオプションは忘れてしまってますがそのまま使いました。3.のconfig.sysの設定でID=1以降はHDD、MOどちらでも認識できるようにしているので-IDで指定する番号は1-3の間なら何番でもOKだと思います。ID=1をMOにしていますので
    susie -ID1 -RS *:
  7. X68Kを再起動します。RASDRIVERのイメージにあるRASDRV.SYSをSYS配下にコピーし、config.sysの最後の行へ追記します。これでラズパイのディスクがX68Kから見えるようになります。windowsとのデータのやり取りがすごく楽ちんに。windows⇔(samba)ラズパイ←X68K
    DEVICE = \SYS\RASDRV.SYS
    
  8. 以上でRaSCSIにてX68Kが復活しました。長い道のりでした。

 ブート時(実機では久しぶりの画面)

f:id:spend-carefree:20190827204856j:plain

 


メモリ不足の画面。これでもRAMDISKを外してます。おかしいなぁ。

f:id:spend-carefree:20190827205723j:plain

 

番外編

 全くイメージが無くゼロから構築する場合(SASIしかないEXPERT以前の機種が対象)

(尚、以下のやり方は未検証です。No9までは実際に行いました。ここに記載した方法は後で思いついたことです。こうやっておけばよかったと今なら思います。本記事で記載したようにわたしは既にSxSI組み込みのフロッピーを所持していた事、SCSIブートイメージも持っていたため、作業不要でした)

  1. XM6やXM6 TypeGなどのエミュレータに付属のドキュメントXM6.txtに従い(□使いこなすためのヒント→ (9)SxSIを読んでください)SxSI4.LZHを展開したFDDイメージを作成します。これを5インチFDへ書き出す手段があれば、簡単なのですが無いので。。。まずSASIでのOS起動ディスクイメージを作成します(これをRaSCSIで読ませればOK)。

  2. XM6.txtの[7]でSCSIイメージの作成と記載がありますが追加で40MBのSASIイメージを作成してください。また、[9],[10]でSASIのドライブ数を0,SxSIを2にしていますが、SASIを"1",SxSIは"0"としてください。作成した40MBのSASIイメージを設定してください。

  3. SxSI4の展開済みHumanの入ったFDイメージをXM6にセットしてリセットします。

  4. これで、SASIのHDDが物理的に繋がっています。

  5. HDDを初期化します。format.xコマンドを打ち込んでハードディスク→装置初期化、終わったら領域確保で容量に40を設定して実行を選択します。終わるとリセットを求められるのでフロッピーをejectしてそのままリセット。
    #SASIだからか、FDからブートするとHDDは認識しているもののファイルシステムが見えなくなる。

  6. HDDから立ち上がり、command.xが実行されるのみの状態です。
    先ほどのSxSI入りのブートフロッピーイメージをFDD0へセットします。以下の様にFDの内容を全部コピーします。(A:HDD, B:,C: がFDDのハズです)

  7. A>b:  ←Bドライブ(フロッピーへカレントドライブを変更)
    B>REN SCSIFORM.X SCSIFORMAT.X
    B>REN IBMFORMA.X IBMFORMAT.X
    B>cd bin
    B>copyall B:\*.* A:\.
    B>dir a:  ←念のためコピーできているか確認
  8. 次にFDD0をejectしてHDDからブート可能かチェック。今度はCONFIG.SYSが読み込まれるはずです。

  9. これでSxSI4の展開済みSASI-HDDイメージが出来たので、RaSCSIで本イメージを設定して、実機と繋いでブートさせれば起動するはず。
    ただ、switch.xの設定をBOOT→STD, HD_MAX=1と変更するために、OS入りのフロッピーは必要。SRAMがクリアされていれば初期状態はこの様になっているはず。
    #注意点。イメージをラズパイへコピーする際、XM6は落としてからコピーする事。正しい状態でコピーできないようです。実機でブートできない場合はこのせいだと思います。
    ラズパイの設定
    --- rasmout.sh ---
    rascsi -HD0 /home/pi/rasimg/HD0_SxSI4.HDF
  10. 次にSCSIが見えるようにSxSI組み込みのフロッピーを作成します。XM6.txtの[11]の内容を実機で行えます。空のFDをセットしてA>format.x
  11. ドライブBを指定して「システム転送をする」で初期化
    A>copyall a:\*.* b:
    ED B:\CONFIG.SYS
  12. FD内のCONFIG.SYSにXM6.txtの[11]に記載されているようにSASIIOCS.SYS及びSCSIHD.SYSの追記を行います。
  13. 一旦X68Kの電源を落として
  14. RaSCSIの設定を変更します。
  15. 作成済みのSCSIイメージをRaSCSIに設定します(ID=0,ID=1)。SASIイメージは設定不要です。ラズパイをリブート後、
  16. 先ほど実機で作成したFDをドライブにセットし(セットしてあるはずです)OPT1を押しながら電源ボタンを押します。
  17. XM6.txtの[13]以降に記載してあるように、SCSIFORMAT.XでSCSIイメージのフォーマット、リブート、システムの転送、SRAMへの起動プログラムの設定を行えば、フロッピーなしでSCSIで起動が出来るはずです。

 

 今回の記事はここまで。次回はメモリ編です。(大した内容ではないです)

 

 

前の記事はこちら

   

spend-carefree.hatenablog.com

 

 

*1:※無い場合は、XM6に同梱されているXM6.txtの□使いこなすためのヒント→(9)SxSIで丁寧に解説されています。ただしこの手順ではSCSIのシステムイメージ作成、エミュレータSRAMへSASIをSCSIエミュレートするドライバを入れることになるので、実機で行うには一工夫がいります。最後に記載します。