------------------------------------------------------------------------------

 SCSI Target Emulator RaSCSI (*^..^*)
 for Raspberry Pi

 Powered by XM6 TypeG Technology.
 Copyright (C) 2016-2020 GIMONS

------------------------------------------------------------------------------
□RaSCSIとは
  RaSCSIはRaspberry Piで動作するSCSIデバイス(ハードディスク，MO，CD-ROM)を
  仮想的に再現するエミュレータです。SCSIを採用したSHARPのX68000で使用する
  ことを目的として開発しました。RaSCSIを導入したRaspberry PiをX68000のSCSI
  コネクタに接続するだけで物理的なSCSIデバイスとして認識されます。

  X68000以外にもSCSIを採用したFM TOWNSやPC98等のレトロPCでも使用できるかも
  しれません。作者はFM TOWNSとPC9821Ceで動作するところまでは確認しています。
  
  RaSCSIはSCSIデバイスをエミュレートするソフトウェアに加えてRaspberry Piの
  GPIOコネクタをSCSIコネクタに変換する機構の総称を指します。

□動作環境
  (1)Raspberry Pi
    Raspberry Pi Zero
    Raspberry Pi Zero W
    Raspberry Pi Zero WH
    Raspberry Pi 2 Model B
    Raspberry Pi 3 Model B(推奨)
    Raspberry Pi 3 Model A+
    Raspberry Pi 3 Model B+
    Raspberry Pi 4 Model B

    Zero/Zero W/Zero WHでは性能的に少し不安定かもしれません。

    3 Model A+/3 Model B+/4 Model Bは高性能ですが熱の影響でCPUクロックが
    変動することがありますので対策が必要でしょう。

  (2)OS
    RASPBIAN BUSTERで開発およびテストしています。
    RaSCSIはSCSI信号をGPIOを利用して制御しているので可能な限り低レイテンシー
    の状態で使用する必要があります。したがってCUIモードで利用することを推奨
    します。

□SCSIコネクタとの接続方法
  状況が複雑になってきましたのでRaSCSIのホームページ上で情報提供しています。
  このドキュメントの最後にある公式ホームページを参考にして下さい。

□配布物
  配布するアーカイブには実行ファイル、ドキュメント、ソースコードのそれぞれが
  ディレクトリで分かれて含まれています。

  bin/ ･･･ 実行ファイル
    raspberrypi/ ･･･ RPI用のプログラム
       rascsi.tar.gz ･･･ 実行ファイルをtar+gzipしたもの。

    x68k/ ･･･ X68000用の専用ドライバ
       RASDRIVER.XDF･･･ 二つのドライバを含むフロッピーイメージ
       RASDRIVER.HDS･･･ 二つのドライバを含むSCSI HDイメージ
       RASDRIVER.HDF･･･ 二つのドライバを含むSASI HDイメージ

  doc/ ･･･ ドキュメント
    rascsi.txt ･･･ 当ドキュメント
    x68k.txt ･･･ X68000固有機能の説明
    converter.txt ･･･ 変換基板の説明
    pinassign.png ･･･ ピンアサイン図
    target.png ･･･ 変換基板回路図案(ターゲットモード)
    fullspec.png ･･･ 変換基板回路図案(フルスペック)

  src/ ･･･ ソースコード
    raspberrypi/ ･･･ RPI用のプログラムソース一式
    x68k/ ･･･ X68000用のプログラム一式


  RPIで使用するプログラムはrascsi.tar.gzですのでRPI上に転送してから解凍して
  下さい。パーミッション等を維持するためにRPI上で解凍することを推奨します。

  rascsi.tar.gzにはstandard,fullspec,aibom,gamerniumのディレクトリが含まれ
  ています。

  直結ケーブルや直結基板を使用する場合はstandardディレクトリの実行ファイル
  を使用して下さい。

  同様にフルスペック版と説明された変換基板の場合はfullspecのディレクトリの
  ものを使用します(直結でも動くと思います)。

  aibom,gamerniumディレクトリのものは"あいぼむ版","GAMERnium版"の変換基板を
  使用する時のものです。

  X68000用のドライバはRASDRIVER.XDFもしくはRASDRIVER.HDSの中に次の二つが含ま
  れています。
    RASDRV.SYS ･･･ ホストドライブドライバ
    RASETHER.SYS ･･･ イーサネットドライバ

□RASCI本体の使用方法(rascsi)

  ID指定の場合
   rascsi [-IDn FILE] ...
    n:0～7

  HD指定の場合(X68000 SASI機のHD指定互換)
   rascsi [-HDn FILE] ...
    n:0～15

  ルート権限が必要ですのでsudo等で起動する必要があります。
  オプションに-hを付けると簡単なHELPが表示されます

  Usage: rascsi [-IDn FILE] ...

   n is SCSI identification number(0-7).
   FILE is disk image file.

  Usage: rascsi [-HDn FILE] ...

   n is X68000 SASI HD number(0-15).
   FILE is disk image file.

   Image type is detected based on file extension.
    hdf : SASI HD image(XM6 SASI HD image)
    hds : SCSI HD image(XM6 SCSI HD image)
    hdn : SCSI HD image(NEC GENUINE)
    hdi : SCSI HD image(Anex86 HD image)
    nhd : SCSI HD image(T98Next HD image)
    hda : SCSI HD image(APPLE GENUINE)
    mos : SCSI MO image(XM6 SCSI MO image)
    iso : SCSI CD image(ISO 9660 image)

  引数では-IDnもしくは-HDnとFILEの一組で一つのSCSI(SASI)デバイスを指定できます。
  -IDの後ろの番号はSCSI(SASI) IDです。IDは0-7を指定できますが通常レトロPC本体
  がイニシエータとしてID7等を使用していると思います。その場合は0-6を指定する
  ことになります。

  FILEは仮想ディスクイメージのファイルパスです。イメージファイル名には拡張子
  が必要です。拡張子によってHD,MO,CDの種別を判定しています。

  例)SCSI ID0にHDIMAGE0.HDS,ID1にHDIMAGE1.HDSを指定して起動する場合、
    sudo rascsi -ID0 HDIMAGE0.HDS -ID1 HDIMAGE1.HDS

  終了する場合はCTRL+Cで停止します。
  バックグラウンドで起動した場合にはkillコマンド該当プロセスにINTシグナルか
  HUPシグナルを送ることで終了します。

  rascsiは起動後にソケット(6868ポート)を開いて外部からの管理コマンドを受け
  付ける状態になります。したがって既に別プロセスとしてrascsiが起動している
  場合はエラーメッセージとともに起動を中断します。

□管理ツールの使用方法(rasctl)
  バージョン1.10からrasctlという管理ツールを提供します。これはrascsiプロセス
  がバックグラウンドで起動(6868ポートで接続待ちの状態)している場合にディスク
  操作のコマンドを発行することが可能となります。コマンドラインは下記の通り。

    rasctl -i ID [-u UNIT] [-c CMD] [-t TYPE] [-f FILE]

      ID   : SCSI ID(0～7)
      UNIT : ユニット番号(0または1)
      CMD  : 操作コマンド
             attach  : ディスクを取り付ける
             detach  : ディスクを取り外す
             insert  : メディアを挿入する(MOまたはCDのみ)
             eject   : メディアを取り出す(MOまたはCDのみ)
             protect : メディアを書き込み禁止にする(MOのみ)
      TYPE : ディスク種別
             hd      : ハードディスク(SASI/SCSI)
             mo      : MO(光磁気ディスク)
             cd      : CDROM(CDROMドライブ)
             bridge  : ブリッジデバイス
      FILE : ディスクイメージファイルのパス

  IDは必須です。UNITは省略時は0です(SCSIの場合は0を基本とします)。
  CMDは省略時はattachと解釈します。TYPEはコマンドがattachの場合にはFILEの拡張子
  から自動判定します。FILEはTYPEを明示的に指定している場合は拡張子が異なっても
  構いません。基本的CMD,TYPEの解釈は大文字小文字を無視します。最初の1文字でのみ
  判定しています。

  コマンド例
    rasctl -i 0 -f HDIMAGE0.HDS

  の場合はSCSI IDは0。CMDはデフォルトでattachでありTYPEは拡張子HDSから判断
  するのでhdと推測することになりrascsi起動時のオプション指定と同等です。

  現在の状態を確認するにために-lオプションのみを指定するとデバイス一覧が表示
  されます。コマンドラインは下記の通り。

    rasctl -l

  rasctl自体の起動にはルート権限は必要ありません。

□ディスクダンプツールの使用方法(rasdump)
  直結もしくは直結基板、またはフルスペック基板向けのサンプルプログラムです。

  名前の通りSCSI HDDやMOのイメージをダンプ(オプションでリストア)します。
  自身のIDはBIDで指定して下さい。省略時は7を使用します。

    rasdump -i ID [-b BID] -f FILE [-r]
     ID   : ターゲットデバイスのSCSI ID
     BID  : RaSCSI自身のSCSI ID
     FILE : ダンプファイル名
     -r  ： リストアモード

  サンプルなので必要最低限の処理しか実装していませんので改造するなりして
  ご使用下さい。

□SASI専用ディスクダンプツールの使用方法(sasidump)
  rasdumpをベースにSASI専用に作成したダンプツールです。
  SASI HDイメージをダンプ(オプションでリストア)します。

    sasidump -i ID [-u UT] [-b BSIZE] -c COUNT -f FILE [-r]
     ID   : ターゲットデバイスのSASI ID
     UT   : ターゲットデバイスのUNIT ID
     BSIZE: ブロックサイズ(デフォルトは512)
     COUNT: ブロック数
     FILE : ダンプファイル名
     -r  ： リストアモード

□ソースから実行ファイルをコンパイルする場合
   スタンダード版
     make CONNECT_TYPE=STANDARD

   フルスペック版
     make CONNECT_TYPE=FULLSPEC

   あいぼむ版
     make CONNECT_TYPE=AIBOM

   GAMERnium版
     make CONNECT_TYPE=GAMERNIUM
 
□サポートするディスクイメージ
  (1)SCSI ハードディスク
    HDSファイル形式    (拡張子HDS/HDN/HDI/NHD/HDA)
    ファイルサイズは10MB以上4095MB以下の範囲で任意のサイズ(但し512バイト単位)

    拡張子が"HDN"の場合はNEC純正55ボード(PC-9801-55)向けの純正ハードディスク
    エミュレーションを行います。INQUIRYで返却される情報やMODE SENSEのサイズに
    に違いがあります。

    拡張子が"HDI","NHD"の場合はそれぞれPC98エミュレータであるAnex86及びT98Next
    のSCSIハードディスクイメージを使用するものです。HDNの時と同様に一部の情報
    がNEC用に変換されます。

    拡張子が"HDA"の場合はAPPLE純正ハードディスクエミュレーションを行います。
    INQUIRY及びMODE SENSEで返却される情報に違いがあります。

  (2)SASI ハードディスク
    HDFファイル形式    (拡張子HDF)
    ファイルサイズは10441728バイト、20748288バイト、41496576バイトのいずれか
    (それぞれ10MBドライブ、20MBドライブ、40MBドライブに対応)を推奨します。
    256バイト単位であれば10M～512Mの任意のファイルサイズがマウント可能です。

    Version1.46から22437888バイトのイメージはMZ-2500/MZ-2800 MZ-1F23専用の
    20MBイメージとして認識します(ブロックサイズが1024という特殊イメージ)。

  (3)SCSI 光磁気(MO)ディスク
    MOSファイル形式    (拡張子MOS)
    ファイルサイズは次の4種類のいずれか：
      128MBタイプ (127398912バイト)
      230MBタイプ (228518400バイト)
      540MBタイプ (533248000バイト)
      640MBタイプ (635600896バイト)
    128MB,230MB,540MBは512バイト/セクタ、640MBは2048バイト/セクタになります。

  (4)SCSI CD-ROMディスク
     ISOファイル形式   (拡張子ISO、ISO9660ベタイメージ)
     モード1(2048バイト/セクタ)で、データのみ格納されたファイルとRAW形式で記録
     されたファイルの両方に対応しています。

□ディスクイメージの作成
  RaSCSI自体がX68000エミュレータであるXM6 TypeGの派生物です。従ってディスク
  イメージの作成はXM6 TypeGの「ツール」メニューから行うことを前提としています。
  もちろん先に説明した仕様に従えばdd等で空のイメージファイルを作成することも
  可能です。

  例）100MBのHDSイメージ(空ファイル)を作る場合

    dd if=/dev/zero of=HARDDISK.HDS bs=512 count=204800

□動作実績
  作者の開発環境であるX68000 PRO(内蔵SASI/純正SCSIボード)、X68030 内蔵SCSI、
  XVI Compact 内蔵SCSIで動作確認しています。Mach-2でも動作しました。

  他にも初代X68000,ACE,EXPERT,XVI,PRO2,SUPER等で動作報告がありましたので、
  X68000シリーズはほぼ問題ないでしょう。

  その他のレトロPCではFM TOWNSシリーズ、Apple Macintosh、MSX(MEGA-SCSI利用)
  で動作報告があります。PC98シリーズは動作したという報告も多数ありますが、
  SCSIボードによっては全く動作しないという報告もあります。

□活用方法
　XM6等のX68000エミュレータを使用している場合はエミュレータで環境構築したHDD
  イメージをFTP等でRaspberry Piに転送することでX68000の実機に接続できます。
  またその逆も然りで実機上に存在するファイルを格納したHDDイメージをPCにFTP等
  で転送することでエミュレータで活用することができます。

□ライセンス
  RaSCSIはあるがまま"AS IS"で配布されるソフトウェアです。
  
  つまり使用者が受けたあらゆる損害に対して一切責任を持ちません。またソフト
  ウェアに不備もしくは不具合があったとしてもそれを修正する責任もありません。

  RaSCSIを利用することでRaspberry PiやレトロPCが故障するリスクがあります。
  あくまで自己責任でチャレンジしてください。

  XM6 TypeG同様に実験成果公開という性質上私のHP以外での配布を認めておりません。

  XM6のライセンス条項を継承していますので雑誌/書籍での紹介事前の許諾が必要です。
  そもそも2019年にもなってSCSIに反応するのは限られた人だけだと思います。

□変換基板の頒布について
  変換基板を有償で頒布する場合は下記の条件に従う限り作者に許諾を得る必要は
  ありません。重要なことは基板を購入したユーザーに十分な情報を提供することと
  心得て下さい。

  1.頒布価格
    基板製作費 ＋ パーツ費用 ＋ 運送費 ＋（社会通念上一般的な）手数料。

  2.回路図
    購入者に回路図を提供して下さい。基板頒布と同時もしくは別途ホームページから
    のダウンロード等手段は自由です。

  3.動作検証
    X68000実機環境の動作検証は必須とします。実機が手に入らない場合はX68000
    ユーザーの方に検証の協力をお願いしてもよいでしょう。動作検証は起動確認以外
    に書き込みや負荷テストをお願いします。検証結果は使用した環境やと共に公開
    して下さい。

□変換基板（公式版）について
  BOOTHで2019年3月以降配布しています(数に限りがありますので不定期です)。

□公開ホームページ
  http://retropc.net/gimons/rascsi/

□連絡先
  twitter        https://twitter.com/kugimoto0715
  e-mail         gimons.developer.works@gmail.com

[EOF]
