Merged in RASCSI version 1.47 and re-generated english PDF

This commit is contained in:
Tony Kuker
2020-07-04 09:57:44 -05:00
parent 497ff70eac
commit 00186fd77e
42 changed files with 5279 additions and 3010 deletions

View File

@@ -1,158 +1,116 @@
------------------------------------------------------------------------------
SCSI Target Emulator RaSCSI (*^..^*)
version 1.33 for Raspberry Pi
Powered by XM6 TypeG Technology.
Copyright (C) 2016-2018 GIMONS
------------------------------------------------------------------------------
□変換基板の必要性について
SCSIはTTLレベルで5Vを220Ωと330Ωで分圧パッシブターミネータの場合する
ことで各信号線に3V弱の電圧がかかった状態が定常状態信号的にはネゲート)に
なっています。
イニシエータ側もしくはターゲット側が信号をアサートする0Vにしようと
すると両端のターミネータから合わせて5000÷220×2=45mAの電流が流れることに
なりますX68000のSCSIコントローラであるMB89352のデータシートを見ればシンク
電流としてIol48mAとなっています
RPIのGPIOはこのような大きなシンク電流は吸収できません。電気的に安全な接続
を行うためには汎用ロジックIC等で変換基板を作る必要があります。汎用ロジック
ICで48mAものシンク電流に耐えるのは74LS06とか07といったオープンコレクタで
ハイパワータイプのものを使用します。
作者は74HC541×3,74HC126×1,74HC04×1で基本的なSCSIの方向制御を行い更に
74LS07×3を使ってバスをドライブする回路を組んでみたところ問題なく動作する
ことを確認しました。
他にも74LS641の派生版である74LS641-1を使用すると回路はシンプルに構成できる
でしょう。ーマル品と違ってシンク電流が48mA対応なので74LS07を使用する必要
はありません。しかし入手性はそれほど良くありません。
□変換基板の回路図案
同じフォルダに回路図案を入れています。
・target.png
SCSIのターゲットモードを使用するための変換基板回路図です。基本機能である
HDDやMOのエミュレーションを行うのであればこの回路図相当の物を作れば良い
でしょう。使用するGPIOピンも最も少ない構成になります。
ピンアサインを変更しなければRaSCSIのstandardディレクトリに含まれる
バイナリを使用することが可能です。
・initiator.png
SCSIのターゲットモードに加えイニシエータモードを使用するための変換基板
回路図です。基本機能に加えてRPIがイニシエータとなって物理HDDにコマンド
を発行することが可能になります。モードの制御に追加で一つGPIOピンを消費
します。このイニシエータモードを使用したサンプルプログラムとしてrasdump
を用意しました。実HDDやMOからイメージファイルにダンプすることができます。
オプションでリストア機能も使用できます
ピンアサインのカスタマイズでPIN_INDに標準では7を設定してコンパイルする
必要があります。ピンアサインのカスタマイズを参照してください。
・fullspec.png
SCSIのターゲットモード、イニシエータモードに加えてSCSIの通信をモニター
することができる変換基板回路図です。SCSIプロトコロルを解析する等の特殊
要件がある場合はこの回路が最適です。全ての74LS641-1の方向制御をRaSCSI
から行いますのでGPIOピンを三つ余分に使用してしまいます。SCSIの開発に
興味があればこの回路を組んでみてはどうでしょうか。特徴としてGPIOピン
を余分に使用する代わりに上のイニシエータモードが使用できる基板と比較
して74LS86が必要にならないため基板がシンプルになるという恩恵があります。
ピンアサインのカスタマイズで、PIN_TAD,PIN_IND,PIN_DTDにそれぞれ標準
では6,7,8を設定してコンパイルする必要があります。ピンアサインの
カスタマイズを参照してください。
□既存のものを手に入れる方法
最近では主にTwitter界隈を通じてRaSCSI用の変換基板を作成していただいて
いる方々がいらっしゃいます。
また秋葉原で委託販売されてます。
家電のKENCHAN 同人ハード(キット)のページ等です。
http://www.kadenken.com/shopbrand/ct76/"
現在のところ市販されているものとして
・BELさん開発のあいぼむ版
・tomcatさん開発のGAMERnium版
があります。
□ピンアサインのカスタマイズ
GPIOの信号制御論理やピンアサインはgpiobus.hとrascsidrv.cに定義があります。
定義が分かれているのはrascsidrv.cだけGPLなので敢えて分離しています。
御察し下さい。
カスタマイズ例としてgpiobus.hとrascsidrv.cに下記の二つの変換基板用定義例を
用意しました。配布物の中にはコンパイル済みバイナリも含まれています
・BELさん開発のあいぼむ版
・tomcatさん開発のGAMERnium版
□カスタマイズ方法
RaSCSI起動時のメッセージです。
CONNECT_DESC
・信号制御モードを選択します。
SIGNAL_CONTROL_MODE
0:SCSI論理仕様
直結またはHPに公開した74LS641-1等を使用する変換基板
アーサート:0V
ネゲート :オープンコレクタ出力(バスから切り離す)
1:負論理仕様(負論理->SCSI論理への変換基板を使用する場合)
現時点でこの仕様による変換基板は存在しません
アーサート:0V -> (CONVERT) -> 0V
ネゲート :3.3V -> (CONVERT) -> オープンコレクタ出力
2:正論理仕様(正論理->SCSI論理への変換基板を使用する場合)
RaSCSI Adapter Rev.C @132sync等
アーサート:3.3V -> (CONVERT) -> 0V
ネゲート :0V -> (CONVERT) -> オープンコレクタ出力
・制御信号ピンアサイン
PIN_ACT:SCSIコマンドを処理中の状態を示す信号のピン番号。
PIN_ENB:起動から終了の間の有効信号を示す信号のピン番号。
PIN_TAD:ターゲット信号(BSY,IO,CD,MSG,REG)の入出力方向を示す信号のピン番号。
PIN_IND:イニシーエータ信号(SEL,ATN,RST,ACK)の入出力方向を示す信号のピン番号。
PIN_DTD:データ信号(DT0...DT7,DP)の入出力方向を示す信号のピン番号。
・制御信号出力論理
0V:FALSE 3.3V:TRUEで指定します。
ACT_ON:PIN_ACT信号の論理です。
ENB_ON:PIN_ENB信号の論理です。
TAD_IN:PIN_TAD入力方向時の論理です。
IND_IN:PIN_ENB入力方向時の論理です。
DTD_IN:PIN_ENB入力方向時の論理です。
・SCSI信号ピンアサイン
PIN_DT0PIN_SEL:それぞれSCSI信号のピン番号です。
□コンパイル方法
・実行ファイル(rascsi,rasctl)
gpiobus.hを修正
make clean
make
・カーネルドライバ(rascsidrv.ko)
①OS最新化(必要あれば)
sudo apt-get update
sudo apt-get upgrade
sudo reboot
②カーネルヘッダー取得(必要あれば)
sudo apt-get install raspberrypi-kernel-headers
③コンパイル
cd kernelmodule
rascsidrv.cの修正
make
[EOF]
------------------------------------------------------------------------------
SCSI Target Emulator RaSCSI for Raspberry Pi
Powered by XM6 TypeG Technology.
Copyright (C) 2016-2020 GIMONS
------------------------------------------------------------------------------
□変換基板の必要性について
SCSIはTTLレベルで5Vを220Ωと330Ωで分圧パッシブターミネータの場合する
ことで各信号線に3V弱の電圧がかかった状態が定常状態信号的にはネゲート)に
なっています。
イニシエータ側もしくはターゲット側が信号をアサートする0Vにしようと
すると両端のターミネータから合わせて5000÷220×2=45mAの電流が流れることに
なりますX68000のSCSIコントローラであるMB89352のデータシートを見ればシンク
電流としてIol48mAとなっています
RPIのGPIOはこのような大きなシンク電流は吸収できません。電気的に安全な接続
を行うためには汎用ロジックIC等で変換基板を作る必要があります。汎用ロジック
ICで48mAものシンク電流に耐えるのは74LS06とか07といったオープンコレクタで
ハイパワータイプのものを使用します。
作者は74HC541×3,74HC126×1,74HC04×1で基本的なSCSIの方向制御を行い更に
74LS07×3を使ってバスをドライブする回路を組んでみたところ問題なく動作する
ことを確認しました。
他にも74LS641の派生版である74LS641-1を使用すると回路はシンプルに構成できる
でしょう。ーマル品と違ってシンク電流が48mA対応なので74LS07を使用する必要
はありません。しかし入手性はそれほど良くありません。
□変換基板の回路図案
同じフォルダに回路図案を入れています。
・target.png
SCSIのターゲットモードを使用するための変換基板回路図です。基本機能である
HDDやMOのエミュレーションを行うのであればこの回路図相当の物を作れば良い
でしょう。使用するGPIOピンも最も少ない構成になります。
ピンアサインを変更しなければRaSCSIのstandardディレクトリに含まれる
バイナリを使用することが可能です。
・fullspec.png
SCSIのターゲットモード、イニシエータモードを利用できる変換基板回路図です。
全ての74LS641-1の方向制御をRaSCSIから行いますのでGPIOピンを三つ余分に使用
してしまいます。
ピンアサインのカスタマイズで、PIN_TAD,PIN_IND,PIN_DTDにそれぞれ標準
では6,7,8を設定してコンパイルする必要があります。ピンアサインの
カスタマイズを参照してください
□既存のものを手に入れる方法
最近では主にTwitter界隈を通じてRaSCSI用の変換基板を作成していただいて
いる方々がいらっしゃいます。直ぐに見つかると思いますのでここでの紹介
は省略します。時期は未定ですが公式版の有償頒布を計画しています。
□ピンアサインのカスタマイズ
GPIOの信号制御論理やピンアサインはgpiobus.hに定義があります。
カスタマイズ例としてgpiobus.hに下記の二つの変換基板用定義例を用意しました。
配布物の中にはコンパイル済みバイナリも含まれています。
・あいぼむ版
・GAMERnium版
カスタマイズ方法
・RaSCSI起動時のメッセージです。
CONNECT_DESC
・信号制御モードを選択します。
SIGNAL_CONTROL_MODE
0:SCSI論理仕様
直結またはHPに公開した74LS641-1等を使用する変換基板
アーサート:0V
ネゲート :オープンコレクタ出力(バスから切り離す)
1:負論理仕様(負論理->SCSI論理への変換基板を使用する場合)
現時点でこの仕様による変換基板は存在しません
アーサート:0V -> (CONVERT) -> 0V
ネゲート :3.3V -> (CONVERT) -> オープンコレクタ出力
2:正論理仕様(正論理->SCSI論理への変換基板を使用する場合)
RaSCSI Adapter Rev.C @132sync等
アーサート:3.3V -> (CONVERT) -> 0V
ネゲート :0V -> (CONVERT) -> オープンコレクタ出力
・制御信号ピンアサイン
PIN_ACT:SCSIコマンドを処理中の状態を示す信号のピン番号
PIN_ENB:起動から終了の間の有効信号を示す信号のピン番号。
PIN_TAD:ターゲット信号(BSY,IO,CD,MSG,REG)の入出力方向を示す信号のピン番号。
PIN_IND:イニシーエータ信号(SEL,ATN,RST,ACK)の入出力方向を示す信号のピン番号。
PIN_DTD:データ信号(DT0...DT7,DP)の入出力方向を示す信号のピン番号。
制御信号出力論理
0V:FALSE 3.3V:TRUEで指定します。
ACT_ON:PIN_ACT信号の論理です。
ENB_ON:PIN_ENB信号の論理です。
TAD_IN:PIN_TAD入力方向時の論理です。
IND_IN:PIN_ENB入力方向時の論理です。
DTD_IN:PIN_ENB入力方向時の論理です。
・SCSI信号ピンアサイン
PIN_DT0PIN_SEL:それぞれSCSI信号のピン番号です。
□コンパイル方法
・実行ファイル(rascsi,rasctl)
gpiobus.hを修正
make clean
make
[EOF]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

View File

@@ -1,315 +1,335 @@
------------------------------------------------------------------------------
SCSI Target Emulator RaSCSI (*^..^*)
version 1.34 for Raspberry Pi
Powered by XM6 TypeG Technology.
Copyright (C) 2016-2018 GIMONS
------------------------------------------------------------------------------
□RaSCSIとは
RaSCSIはRaspberry Piで動作するSCSIデバイス(ハードディスクMOCD-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 3 Model B を推奨します。
Raspberry Pi 2 Model BやZeroでも動作すると考えられます。
ピンアサインを独自に変更しRaspberry Pi 1で動作させたという報告もあります。
(2)OS
RASPBIAN STRETCHで開発およびテストしています。
sudo apt-get update及びsudo apt-get upgradeで最新にしています。
このドキュメントを記述している時点で"Linux raspberrypi 4.14.34-v7+"です。
RaSCSIはSCSI信号をGPIOを利用して制御しているので可能な限り低レイテンシー
の状態で使用する必要があります。したがってCUIモードで利用することを推奨
します。更に不要なサービスは極力停止して下さい
□SCSIコネクタとの接続方法
状況が複雑になってきましたのでRaSCSIのホームページ上で情報提供しています。
このドキュメントの最後にある公式ホームページを参考にして下さい。
□配布物
配布するアーカイブには実行ファイル、ドキュメント、ソースコードのそれぞれが
ディレクトリで分かれて含まれています。
bin/ ・・・ 実行ファイル
raspberrypi/ ・・・ RPI用のプログラム
rascsi.tar.gz ・・・ 実行ファイルとカーネルモジュールをtar+gzipしたもの。
x68k/ ・・・ X68000用のプログラム
RASDRV.SYS ・・・ ホストドライブドライバ
RASETHER.SYS ・・・ イーサネットドライバ
doc/ ・・・ ドキュメント
rascsi.txt ・・・ 当ドキュメント
x68k.txt ・・・ X68000固有機能の説明
converter.txt ・・・ 変換基板の説明
pinassign.png ・・・ ピンアサイン図
target.png ・・・ 変換基板回路図案(ターゲットモード)
initiator.png ・・・ 変換基板回路図案(イニシエータサポート)
fullspec.png ・・・ 変換基板回路図案(フルスペック)
src/ ・・・ ソースコード
raspberrypi/ ・・・ RPI用のプログラムソース一式
x68k/ ・・・ X68000用のプログラム一式
RPIで使用するプログラムはrascsi.tar.gzですのでRPI上に転送してから解凍して
下さい。パーミッション等を維持するためにRPI上で解凍することを推奨します。
rascsi.tar.gzにはstandard,fullspec,aibom,gamerniumのディレクトリが含まれ
ています。通常はstandardディレクトリにある実行ファイルを使用して下さい。
aibom,gamerniumディレクトリのものは"あいぼむ版","GAMERnium版"の変換基板を
使用する時のものです。
fullspecディレクトリのものは公開したフルスペック版変換基板の回路図案で
変換基板を作成した時に使用する時のものです。
□RASCI本体の使用方法(rascsi)
sudo rascsi [-ID{01234567} FILE] ...
ルート権限が必要ですのでsudo等で起動する必要があります。
オプションに-hを付けると簡単なHELPが表示されます
Usage: ./rascsi [-ID{0|1|2|3|4|5|6|7} FILE] ...
ID is SCSI identification number.
FILE is disk image file.
Detected images type 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)
引数では-ID{01234567}とFILEの一組で一つのSCSIデバイスを指定できます。
-IDの後ろの番号はSCSI IDです。SCSI 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 [-c CMD] [-t TYPE] [-f FILE]
ID : SCSI ID
CMD : 操作コマンド
attach : ディスクを取り付ける
detatch : ディスクを取り外す
insert : メディアを挿入する(MOまたはCDのみ)
eject : メディアを取り出す(MOまたはCDのみ)
protect : メディアを書き込み禁止にする(MOのみ)
TYPE : ディスク種別
hd : ハードディスク(SASI/SCSI)
mo : MO(光磁気ディスク)
cd : CDROM(CDROMドライブ)
bridge : ブリッジデバイス
FILE : ディスクイメージファイルのパス
IDは必須です。CMDは省略時はattachと解釈します。TYPEはコマンドがattachの
場合にはFILEの拡張子から自動判定します。FILEはTYPEを明示的に指定している
場合は拡張子が異なっても構いません。基本的CMD,TYPEの解釈は大文字小文字を
無視します。現在のところ最初の1文字でのみ判定しています。
コマンド例
rascsi -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 リストアモード
サンプルなので必要最低限の処理しか実装していませんので改造するなりして
ご使用下さい。
□カーネルモジュールの導入方法(rascsidrv.ko)
version 1.24から安定化のためにGPIO制御の一部をカーネルモジュールで動作
させる拡張を加えました。
カーネルモジュールを導入しなくても動作できますが、X68000シリーズのSASI
を使用する場合や純正SCSIボードを増設した場合はカーネルモジュールの導入
を行っていないと動作が不安定になります。
カーネルモジュールを有効にするには
sudo insmod rascsidrv.ko
を実行してください。
カーネルモジュールの起動を確認するにはdmesgコマンドで出力されるログの
最後に次のような表示がされている筈です。
"RaSCSI GPIO Driver Loaded(STANDARD)"
注意!
カーネルモジュールは使用中のOSのバージョンに依存します。
rascsiやrasctlと同じ階層にあるrascsidrv.koはRaspberry Pi 2/3用の
"Linux raspberrypi 4.14.34-v7+"でコンパイルしたモジュールになります
同じ階層のrpi1orZero/rascsidrv.koはRaspberry Pi 1/Zero用です。
"Linux raspberrypi 4.14.34+"でコンパイルしたモジュールになります。
自身でカーネルモジュールをコンパイルする手順を簡単に記しておきます。
・OSの最新化
sudo apt-get update
sudo apt-get upgrade
sudo reboot
・カーネルヘッダー取得
sudo apt-get install raspberrypi-kernel-headers
・コンパイル
cd kernelmodule
make
□サポートするディスクイメージ
(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ドライブに対応)
(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シリーズ、PC98シリーズ、Apple Macintosh、
MSX(MEGA-SCSI利用)で動作報告があります。
その他の機種でもちらほらと動作報告を頂いています。
活用方法
 XM6等のX68000エミュレータを使用している場合はエミュレータで環境構築したHDD
イメージをFTP等でRaspberry Piに転送することでX68000の実機に接続できます
またその逆も然りで実機上に存在するファイルを格納したHDDイメージをPCにFTP等
で転送することでエミュレータで活用することができます。
□ライセンス
RaSCSIはカーネルドライバを除きあるがまま"AS IS"で配布されるソフトウェアです。
カーネルドライバのソースrascsidrv.cのみGPLです(御察っし下さい)。
つまり使用者が受けたあらゆる損害に対して一切責任を持ちません。またソフト
ウェアに不備もしくは不具合があったとしてもそれを修正する責任もありません。
RaSCSIを利用することでRaspberry PiやレトロPCが故障するリスクがあります。
あくまで自己責任でチャレンジしてください。
XM6 TypeG同様に実験成果公開という性質上私のHP以外での配布を認めておりません。
XM6のライセンス条項を継承していますので雑誌/書籍での紹介事前の許諾が必要です。
そもそも2017年にもなってSCSIに反応するのは限られた人だけだと思います。
□変換基板の頒布について
変換基板の頒布については作者に許諾を得る必要はありません。
一応ご連絡いただければ何かとサポートできるかもしれません
但しレトロPCのSCSI環境改善を応援するという趣旨から、
有料の場合は
基板製作費 パーツ費用 運送費 +(社会通念上一般的な)手数料
を大きく越えるような頒布についてはお止め下さい。
□公開ホームページ
http://www.geocities.jp/kugimoto0715/rascsi/index.html
□連絡先
twitter https://twitter.com/kugimoto0715
e-mail kugimoto0715@yahoo.co.jp
[EOF]
------------------------------------------------------------------------------
SCSI Target Emulator RaSCSI (*^..^*)
for Raspberry Pi
Powered by XM6 TypeG Technology.
Copyright (C) 2016-2020 GIMONS
------------------------------------------------------------------------------
□RaSCSIとは
RaSCSIはRaspberry Piで動作するSCSIデバイス(ハードディスクMOCD-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:07
HD指定の場合(X68000 SASI機のHD指定互換)
rascsi [-HDn FILE] ...
n:015
ルート権限が必要ですので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(07)
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バイト単位であれば10M512Mの任意のファイルサイズがマウント可能です。
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]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 72 KiB

View File

@@ -1,109 +1,114 @@
------------------------------------------------------------------------------
SCSI Target Emulator RaSCSI (*^..^*)
version 1.33 for Raspberry Pi
Powered by XM6 TypeG Technology.
Copyright (C) 2016-2018 GIMONS
------------------------------------------------------------------------------
□X68000固有の機能について
RaSCSIにはブリッジデバイスという仮想的なSCSIデバイスが実装されておりX68000と
ホストであるRaspberry Piの橋渡しを行うことができます。このブリッジデバイスと
X68000用の専用ドライバを使用して下記の機能を提供します。
・イーサーネット
Neptune-Xと同様のイーサーネット機能を提供します。SCSI接続のイーサーネット
BOXのようにRaSCSIが振舞います。Raspberry PiのTAPデバイスにパケットを中継
することで実現しています。Ether+と似たものです。
・ホストファイルシステム
X68000のエミュレーターでは標準的な機能であるWindrv相当の機能を提供します。
Raspberry Pi上のファイルシステムをリモートドライブとしてマウントすること
ができます。
□ブジッジデバイスの起動方法
RaSCSI起動時にファイル名として"BRIDGE"というキーワードを設定するとそのIDに
対してブジッリデバイスを生成します。
ex)
sudo rascsi -ID0 HDIMAGE0.HDS -ID6 BRIDGE
イーサーネット接続
配布物に含まれるRASETHER.SYSを使用します。このデバイスドライバがブリッジ
デバイスと連携してイーサーネットのパケット送受信を行うことができます。
以下、Raspberry Piの仮想アダプタ(TAP)のIPアドレスを「192.168.68.1」として、
X68000側を「192.168.68.3」とするケースで説明します。
・X68000の設定
RASETHER.SYSはNeptune-X用ドライバを改造して作ったものですので使用方法は
全く同じです。X68000をネット接続するためには他に環境設定を行う必要があり
ます。設定方法は自力で調べていただくようお願いします。
以下実際に使用しているCONFIG.SYSとAUTOEXEC.BATの抜粋です。
[CONFIG.SYS抜粋]
PROCESS = 3 10 10
DEVICE = \NETWORK\RASETHER.SYS
[AUTOEXEC.BAT抜粋]
SET SYSROOT=A:/NETWORK/
SET temp=A:\
SET tmp=A:\
SET HOME=A:/NETWORK/ETC/
SET HOST=X68000
XIP.X
IFCONFIG.X lp0 up
IFCONFIG.X en0 192.168.68.3 netmask 255.255.255.0 up
INETDCONF.X +router 192.168.68.1 -rip
INETDCONF.X
・Raspberry Piの設定
TAPデバイスというものを利用していますのでTAPを有効にしてください。恐らく
最近のJessieであれば最初から有効なはずです。確認方法は/dev/net/tunという
ファイルが存在すれば有効となっていると判断できます。
仮想アダプタの作成方法は次の様に行います。
[/etc/rc.local等から設定]
ip tuntap add ras0 mode tap user root
ip link set ras0 up
ifconfig ras0 inet 192.168.68.1/8 up
route add -net 192.168.68.0 netmask 255.255.255.0 dev ras0
上記によってRaspberry Pi(192.168.68.1)とX68000(192.168.68.3)の間で通信が
可能になります。
インターネット等と接続する場合はRaspberry Pi側でブリッジやルーティングの
設定が必要になります。ご自身の環境に合わせて設定してください。無線LANの
場合にブリッジ構成するには色々と課題があるようなのでフォワーディングと
NAT構成等もお勧めです。作者はrc.localで次のような設定で使用しています。
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
□ホストファイルシステム連携
X68000エミュレータでよく利用されるWindrvやWindrvXMと同等の機能を提供します。
専用のRASDRV.SYSというデバイスドライバを組み込めばRaspberri Piのファイル
システムがX68000側のドライブに見えて操作できるということです。
デバイスドライバの登録は簡単です。
例えば
DEVICE = \SYS\RASDRV.SYS
この場合はデフォルトでRaspberry Piのルートディレクトリをマウントします。
デバイスドライバ起動時にどのドライブにマウントされたか表示されます。
ルートを以外をマウントする場合はディレクトリを指定して下さい。/home/pi等を
マウントするには
DEVICE = \SYS\RASDRV.SYS /home/pi
と指定します。複数のディレクトリを指定すれば別々のドライブとしてマウントする
ことが可能です。
SUSIEをご利用の方はSUSIEより先にRASDRV.SYSを組み込んで下さい。後に組み込むと
正しく認識できなくなると報告があります。
[EOF]
------------------------------------------------------------------------------
SCSI Target Emulator RaSCSII (*^..^*)
for Raspberry Pi
Powered by XM6 TypeG Technology.
Copyright (C) 2016-2020 GIMONS
------------------------------------------------------------------------------
□X68000固有の機能について
RaSCSIにはブリッジデバイスという仮想的なSCSIデバイスが実装されておりX68000と
ホストであるRaspberry Piの橋渡しを行うことができます。このブリッジデバイスと
X68000用の専用ドライバを使用して下記の機能を提供します。
・イーサーネット
Neptune-Xと同様のイーサーネット機能を提供します。SCSI接続のイーサーネット
BOXのようにRaSCSIが振舞います。Raspberry PiのTAPデバイスにパケットを中継
することで実現しています。Ether+と似たものです。
・ホストファイルシステム
X68000のエミュレーターでは標準的な機能であるWindrv相当の機能を提供します。
Raspberry Pi上のファイルシステムをリモートドライブとしてマウントすること
ができます。
□ブジッジデバイスの起動方法
RaSCSI起動時にファイル名として"BRIDGE"というキーワードを設定するとそのIDに
対してブジッリデバイスを生成します。
ex)
sudo rascsi -ID0 HDIMAGE0.HDS -ID6 BRIDGE
専用ドライバ
配布物に含まれるRASDRIVER.XDFもしくはRASDRIVER.HDSに二つのドライバが含まれ
ています。RaSCSIでRASDRIVER.HDSをマウントし適宜コピーした方が実機への転送が
簡単でしょう。
□イーサーネット接続
イーサネットドライバ(RASETHER.SYS)がブリッジデバイスと連携してイーサーネット
のパケット送受信を行うことができます。
以下、Raspberry Piの仮想アダプタ(TAP)のIPアドレスを「192.168.68.1」として、
X68000側を「192.168.68.3」とするケースで説明します。
・X68000の設定
RASETHER.SYSはNeptune-X用ドライバを改造して作ったものですので使用方法は
全く同じです。X68000をネット接続するためには他に環境設定を行う必要があり
ます。設定方法は自力で調べていただくようお願いします。
以下実際に使用しているCONFIG.SYSとAUTOEXEC.BATの抜粋です。
[CONFIG.SYS抜粋]
PROCESS = 3 10 10
DEVICE = \NETWORK\RASETHER.SYS
[AUTOEXEC.BAT抜粋]
SET SYSROOT=A:/NETWORK/
SET temp=A:\
SET tmp=A:\
SET HOME=A:/NETWORK/ETC/
SET HOST=X68000
XIP.X
IFCONFIG.X lp0 up
IFCONFIG.X en0 192.168.68.3 netmask 255.255.255.0 up
INETDCONF.X +router 192.168.68.1 -rip
INETDCONF.X
・Raspberry Piの設定
TAPデバイスというものを利用していますのでTAPを有効にしてください。恐らく
最近のJessieであれば最初から有効なはずです。確認方法は/dev/net/tunという
ファイルが存在すれば有効となっていると判断できます。
仮想アダプタの作成方法は次の様に行います。
[/etc/rc.local等から設定]
ip tuntap add ras0 mode tap user root
ip link set ras0 up
ifconfig ras0 inet 192.168.68.1/8 up
route add -net 192.168.68.0 netmask 255.255.255.0 dev ras0
上記によってRaspberry Pi(192.168.68.1)とX68000(192.168.68.3)の間で通信が
可能になります。
インターネット等と接続する場合はRaspberry Pi側でブリッジやルーティングの
設定が必要になります。ご自身の環境に合わせて設定してください。無線LANの
場合にブリッジ構成するには色々と課題があるようなのでフォワーディングと
NAT構成等もお勧めです。作者はrc.localで次のような設定で使用しています。
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
□ホストファイルシステム連携
X68000エミュレータでよく利用されるWindrvやWindrvXMと同等の機能を提供します。
専用のRASDRV.SYSというデバイスドライバを組み込めばRaspberri Piのファイル
システムがX68000側のドライブに見えて操作できるということです。
デバイスドライバの登録は簡単です。
例えば
DEVICE = \SYS\RASDRV.SYS
この場合はデフォルトでRaspberry Piのルートディレクトリをマウントします。
デバイスドライバ起動時にどのドライブにマウントされたか表示されます。
ルートを以外をマウントする場合はディレクトリを指定して下さい。/home/pi等を
マウントするには
DEVICE = \SYS\RASDRV.SYS /home/pi
と指定します。複数のディレクトリを指定すれば別々のドライブとしてマウントする
ことが可能です。
SUSIEをご利用の方はSUSIEより先にRASDRV.SYSを組み込んで下さい。後に組み込むと
正しく認識できなくなると報告があります。
[EOF]