−<□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□>−


	  Human ディスク共有 システム (with SCSI-TARGET) 計画

		COmmon DIsk sYstem with scsi-target Project

			     Codiy プロジェクト

 				       ver 0.69

		  Copyright 1996-1998,2022 TNB製作所




−<□■□ はじめに □■□>−


 これは、SCSITAI.SYS をしようして、二台以上の X68 でのディスク共有を目的

に開発されたものです。これにより、二台で同時に HDD をアクセスが(書き込み

も)出来るようになります。また、片方がドライブとして認識出来るドライブなら 

FD でも RAMDISK でもアクセスすることも出来ます。

 SCSITAI.SYS により、X68 同士が高速にデータのやり取りが出来るようになった

とはいえ、速度は余り期待出来るものではありません(PRO 10MHz がサーバの時、

約 200KB/s。030 でも変わりませんが・・・)。




−<□■□ 登録 □■□>−


 サーバ用とクライアント用の二種のソフトがあります。それぞれの X68 にそれ

ぞれの環境をそろえ、ソフトを登録して下さい。


○サーバ機には−−−−−−−−−−−−−−−−

 サーバの X68 に、SCSITAI.SYS が登録して下さい。SCSITAI.SYS が使えない

SCSI ポートでは、(現在)サーバ機にすることは出来ません(SCSITAI.SYS のマ

ニュアル、参照のこと)。


[使用法] CODIYSERV.x [LUN] [switch]

	[LUN]
		省略すると 6 になります。普通はシングルクライアントになる
		ので、設定の必要はありません。 クライアントが二台以上の場
		合、LUN を変え、複数のサーバを登録することになります(ソフ
		ト的にはサーバ、クライアント、1対1の関係になります)。
		LUN は 0〜6 まで有効です。


	[switch]
		-R ・・・・	サーバを削除します。ただし、ソフトではクライアント
			の動作を確認しないので、注意すること。

		-I ・・・・	サーバスレッドを初期化します。

		-S ・・・・	サーバの機能を一時停止します。
		-O ・・・・	サーバ一時停止を解除します。


	サーバプログラムはバックグラウンドで動作しますので、CONFIG.SYS で
	PROCESS の設定を忘れずに。



○クライアント機には−−−−−−−−−−−−−−−−

 クライアントの X68 には、SCSITAI.SYS 必須ではありませんが、SCSI のアービ

トレーションをしっかりしていることが必須になります。Mach2 がそれに当たりま

す。


[使用法] DEVICE = DISKRW.x
	 DEVICE = CODIYCLI.SYS [ID[,LUN]]:[DRV][-SWC]

			DISKRW.x は Codiy-PROJECT で問題になる Human の DOS 
			コールの不都合を解消するものです。これを登録していな
			いと DISKCOPY 等でエラーが出ます。

	[ID]	サーバになる X68 の ID を指定します。省略出来ません。また、
		自機の ID を書くと、その項は無視されます。

	[LUN]	省略すると 6 になります。普通はシングルクライアントになる
		ので、設定の必要はありません。 クライアントが二台以上の場
		合、LUN を変え、一つの LUN のサーバに二つ登録しない様にし
		ます(ソフト的にはサーバ、クライアント、1対1の関係になり
		ます)。

	[DRV]	クライアントで扱いたいサーバのドライブを書きます。

	[SWC]	スイッチ。スペースを入れず続けて書きます。
			-R[n] ・・ サーバへの問い合わせリトライ数指定。デフォ
				ルトでは8回です。ファイルアクセス中、頻繁
				に「Codiy が起動していない」白帯が出る場合、
				増やしてみて下さい。ただし、増やしすぎると、
				サーバの電源を切った時に、それ相当の時間が
				かかることになります。
			-P ・・・・・ サーバのプリンタを使用します。[COPY]キー
				によるハードコピー機能は使えなくなります。
				クライアント機のプリンタポートに繋がってい
				るプリンタは使えなくなります。
			-F ・・・・・ サーバの FD を扱う場合、クライアント機側
				でもメディアバイトを FD する様にします。た
				だしユニット番号はそのまま([DRV] で列べた
				順番の値)なので注意、工夫して下さい。
			-N ・・・・・ サーバへの問い合わせをしません。つまり非
				接続状態で登録します。登録時もサーバへの問
				い合わせもしません。接続方法は下記の「補足」
				を見てください。
			-C ・・・・・ DIR コマンドなどで使用される DOS コール
				files/nfiles を高速化します。現在のバージョ
				ン(ver 0.67〜)ではちょっとバグがあります。

					★スペースを開けないようにして下さい。

		EX1) DEVICE = DISKRW.x
		     DEVICE = CODIYCLI.SYS 6,6:ABCD-R10

					ID 6 のサーバの A:,B:,C:,D: をアク
					セス出来る様にします。リトライは 
					10 回です。

		EX2) DEVICE = DISKRW.x
		     DEVICE = CODIYCLI.SYS 6:A-R2-P

					ID 6 のサーバの A: をアクセス、プ
					リンタを使用できるようにします。リ
					トライは 2 回です。

		EX3) DEVICE = DISKRW.x
		     DEVICE = CODIYCLI.SYS 6:CDAB-P-F
					ID 6 のサーバの C:,D:,A:,B: をアク
					セス、プリンタを使用できるようにし
					ます。サーバの A: B: が FD の場合
					このような順番で登録しておけば、
					ユニット番号が 内蔵FD 0,1 、Codiy
					FD 2,3 となります。

		EX4) DEVICE = DISKRW.x
		     DEVICE = CODIYCLI.SYS 6:K-P
		     DEVICE = CODIYCLI.SYS 5:S
					ID 6 のサーバの K: をアクセス、プ
					リンタを使用できるようにし、ID 5 の
					サーバの S: をアクセス出来る様にし
					ます。サーバが2つの場合、CODIYCLI.SYS 
					をそれぞれに2つ登録する必要があり
					ます。


	 補足) サーバが起動していない時や停止している時、クライアントか
		らアクセス行うと、「サーバが起動していません」という白帯が
		発生します。ここで無視を行うと、以後、サーバへの問い合わせ
		を行わなくなります。再開するには、
			ECHO > @CODIY
		のようにキャラデバドラ`@CODIY'になにか書き込こむか、CODIYC.x
		を使用して下さい。

		 CODIYCLI.SYS 登録時、サーバが起動していない時や -N が付
		いている場合も、以後、同様にサーバへの問い合わせが行われな
		くなります。

		 「サーバが起動していません」等という白帯は、サーバなどが 
		SCSI を長時間連続使用している時や、割り込み禁止で動いてい
		る場合にも発生する可能性があります。この場合は落ち着いて、
		「R」(再実行)を選択して下さい。

		 サーバとクライアントソフトのバージョンは同じにするように
		気を付けて下さい。特に1の位、小数点第1の値が異なるバージョ
		ンでは、プロトコルの変更がある場合があります。この場合、ア
		クセス出来ないだけでなく、ハングすることが予想されます。




−<□■□ セッティング □■□>−


 まずは SCSI-TARGET IOCS(SCSITAI.SYS)のドキュメントに沿って X68 同士を 

SCSI で繋いで下さい。以下の環境を例に Codiy を設定してみます。


PRO(ID=7) == HDD(ID=0) == HDD(ID=1) == MO(ID=2) == CDROM(ID=5) == EXPERT(ID=6)


 PRO をサーバにしてみます。勿論、両方の X68 には SHARP(あるいはサコムな

ど、完全互換もの)の SCSI ボードをさしています。Codiy を使うためには最低 

SCSITAI.SYS がサーバの PRO だけに入っていればいいのですが、アービトレーショ

ンに問題があるので、EXPERT にもいれます。Mach-2 や他の改造 SCSI-IOCS でも

大丈夫なのですが、Codiy 以外でも SCSITAI.SYS 関係のソフトが使えるので、入

れられるなら、両方に SCSITAI.SYS が入れられる環境が好ましいです。


 とりあえず Codiy では、クライアントである EXPERT で TARGET の機能は使用

しません。


 サーバの PRO の CONFIG.SYS & AUTOEXEC.BAT はこんな感じです(必須事項のみ)。


	CONFIG.SYS ---------

		DEVICE		= \SYS\SCSITAI.SYS ES
		DEVICE		= \SYS\SCSIF8K.x 6
		PROCESS		= 16 10 100

	AUTOEXEC.BAT ---------

		CODIYSERV.x
		SCHDPAT.x


 この時、PRO のドライブはこうなっているとします。


	A: ハードディスク(SCSI)	ユニット番号・・・・    0
	B: 5inch FDD		ユニット番号・・・・    0
	C: 5inch FDD		ユニット番号・・・・    1
	D: RAM DISK	ユニット番号・・・・    0
	E: RAM DISK	ユニット番号・・・・    0
	F: ハードディスク(SCSI)	ユニット番号・・・・    0
	G: ハードディスク(SCSI)	ユニット番号・・・・    1
	H: ハードディスク(SCSI)	ユニット番号・・・・    2
	I: 3.5inch FDD		ユニット番号・・・・    2
	J: 3.5inch FDD		ユニット番号・・・・    3
	M: 光磁気ディスク(SCSI)	ユニット番号・・・・    0
	Q: CDROM(SCSI)	ユニット番号・・・・    0


 クライアントの EXPERT では、PRO 動作中に起動出来るように、FDD 起動にして

みました。普通に起動すると SCSI-HD などが認識されてしまうので、SCSIDEV=OFF

も指定しています。


	CONFIG.SYS --------

		*		  ↓ SCSI-HD の認識をしないように
		SCSIDEV		= OFF
		DEVICE		= \SYS\SCSITAI.SYS ES
		DEVICE		= \SYS\SCSIF8K.x 7
		DEVICE		= \SYS\RAMDISK.SYS #M128
		DEVICE		= \SYS\DISKRW.x
		DEVICE		= \SYS\CODIYCLI.SYS 7:FGHIJM


 この時、EXPERT ではこうなります。


	A: 5inch FDD		ユニット番号・・・・    0
	B: 5inch FDD		ユニット番号・・・・    1
	C: RAM DISK	ユニット番号・・・・    0
	D: その他のタイプ 	ユニット番号・・・・    0		サーバの F:
	E: その他のタイプ 	ユニット番号・・・・    1		サーバの G:
	F: その他のタイプ 	ユニット番号・・・・    2		サーバの H:
	G: その他のタイプ 	ユニット番号・・・・    3		サーバの I:
	H: その他のタイプ 	ユニット番号・・・・    4		サーバの J:
	I: その他のタイプ 	ユニット番号・・・・    5		サーバの M:


 DRIVE.x では、サーバのドライブは「その他のタイプ」と表示になります。


 このように、サーバで使用しているドライブ、どんなものでも、クライアント側

で認識でき、アクセス出来るようになります(SUBST による仮想ドライブも登録出

来ます)。SCSI-HD も上のようにクライアント側から認識させず、Codiy を介すこ

とにより、読み込みは勿論、書き込みも問題無く行うことが出来ます。ただ、サー

バでなにかやっていたりするとクライアント側からはアクセス不可能になるので、

いわゆる「Codiyディスク」のみ、というシステムは作らないほうが懸命です(速

度も期待出来ないし)。


 例では、サーバとクライアント、主機と従機と考えて設定しましたが、単純に、

PRO だけに繋がっている 3.5inch FDD を EXPERT で使いたいから、そこだけ Codiy

で繋いでおく、なんてことも出来るわけです。


 そうそう、クライアント側のデバイスドライバ登録時にサーバ機のサーバプログ

ラムチェックに行きますが、この時、サーバプログラムを登録していない場合(あ

るいは電源が入っていない場合)、無視して登録します。次、Codiy ディスクをア

クセス使用とした時、サーバのチェックを行います。ので、クライアント機を先に

起動していても問題はありません(サーバを探す時間がちょっとあるけど)。




−<□■□ デバイスドライバ □■□>−


 Codiy のクライアント側のドライブは特殊デバイスドライバです。(基本的に)

クラスタなどなく、ファイル名、ディレクトリ名のみで作られているドライブです。

そのため、クラスタの内容を記憶していく、既存のディスクキャッシュは全く効き

目がありません(登録は出来てしまいます)。

 ファイルを1byteずつ読み書きするプログラムの場合、鬼のように遅くなります。

これは、1byteずつサーバとのやり取りを行っているためです。Codiy-PROJECT 

ver 0.34 からは簡易的な先読みバッファを装備したため読み込みに関しては、実

用的な速度になりましたが、書き込みに関しては絶望的です。当然、従来の遅延書

込キャッシュは使えません( DOS の リダイレクトが「1byte ずつ書き込むプロ

グラム」なのだ。あう)。

 なお、特殊デバイスドライバであるため、ASK の辞書を置くことが出来ません。

クライアント側では、ローカルディスク(クライアントのみで使用しているドライ

ブ)にコピーするなりして使って下さい。


 現在、特殊デバイスドライバでありながら、クラスタ単位の書き替えも許可して

います。ので、クライアントでサーバのディスクを REFRESH したり出来ます。

REFRESH 、DISKCOPY などの使用中、他からそのディスクにアクセスしないようご

注意下さい。


 Codiy 使用中でも、SCSITAI.SYS 関係(附属)のツールは問題無く併用出来ます。

SCTRDISK など、LUN 一つを占領するソフトとは登録する LUN がぶつからないよう

に気を付けて登録すればオッケーです。




−<□■□ ソフト □■□>−


 ファイル関係の常駐ソフトに付いてあげておきます。ディスク共有なので、サー

バ側とクライアント側とで環境が違うと問題があることがあります。

・Twentyone
	マルチピリオドや21文字など、サーバ側の Twentyone の状態が優先され
	ます。クライアント側で Twentyone のモードを変えても、Codiy ディス
	クのアクセスはサーバのモードで行われてしまいます。

・LZDSYS
	サーバ、クライアント側、どちらに常駐しても LZD ファイルは読めます。
	ただ、クライアント側に常駐した場合は、かなり速度が落ちます。

・DCACHE2
	クライアント側で、Codiy ディスクに登録は出来ますが、意味がありませ
	ん ^^; 。サーバ側に入れるのは効果大です。




−<□■□ プリンタ □■□>−


 クライアント側の登録の時、スイッチ -P を付けることで、サーバに接続のプリ

ンタをクライアント側から使用することが出来るようになります。IOCS レベルで

使用可能なので、キャラクターデバイスの`PRN'、`LPT'でも使えます(マチエール

は直接 I/O ポートを叩いているために使用出来ません)。

 プリンタデバイスの PRNDRV.SYS、PRNDRV1.SYS などは、サーバ機とクライアン

ト機共、同じものを同じモードで登録する様にして下さい。

 [COPY]キーによるハードコピー機能は使えなくなります。また、クライアント機

のプリンタポートに繋がっているプリンタは使え無くなります(IOCS で対応しな

いだけで I/O ポートを叩けば可能)。


 プリンタのデータは、1024byte ずつ送る様にしています。そのため、データ数
 ・・・・・・・・・・・・・・・・・・・・・・・・・・・
が 1024byte に満たない場合、サーバにデータが送られません。ディスク関係のコ

ールをサーバに送ろうとした時に、残り(端数)のデータを送り出します。ので、

プリンタ使用後、Codiy ディスクのディレクトリを見るなどして下さい。


 Codiy では、どのクライアント、あるいはサーバが使用しているか、管理してい

ません。同時にプリンタを使用しないようにご注意下さい。




−<□■□ Codiy の出す白帯 □■□>−


 Codiy のクライアント側で、サーバへの問い合わせに関して白帯を出します。


「Codiy Project Server が起動していません」
		  or
「Codiy Project Server が動作していません」

	 サーバに SCSITAI と CODIYSERV が登録されていない場合か、サーバが
	忙しくて SPC 割り込みが出来ない場合に出ます。ドライバが登録されて
	いない場合は `I' を選ぶしかありません(あるいはサーバにドライバを
	登録しても可)。ドライバが登録されて出た場合、サーバのプログラムを
	終了させ、`R' を押すか、`I' を選んでください(接続は中止されます)。


「エラーが発生しました」

	 これは、サーバに命令を送ったが、サーバとしての処理が出来ない場合、
	あるいは時間が掛かってしまっている場合(サーバのスレッドに切り換え
	られない時など)、この白帯になります。ほとんどの場合、`R' を押して
	作業を続けることが出来ます。ただ、サーバ機がなにもしていないにも関
	わらず頻発する場合、一度 `A' を押して下さい。




−<□■□ 応用 □■□>−


 Codiy では、互いに CODIYSERV.x と CODIYCLI.SSYS を登録してピア・ツー・ピ

ア環境を構築することが出来ます。更に、Codiy では、マルチサーバ、マルチクラ

イアント環境も構築することが出来ます。

 そのためには、2台以外の X68 の SCSI ポートに2つの SCSI コネクタを付け、

ディジーチェン出来るようにしなければなりません。例えば、4台あるばあい・・・


	X68(ID=7) == X68(ID=4) == X68(ID=5) == X68(ID=6)


 ID= 4, 5 はディジーチェンする必要があるのです。ここでは ID= 7, 6 をサー

バ、他をクライアントと考えます。


	ID = 7 の CONFIG.SYS -------

		DEVICE		= \SYS\SCSITAI.SYS E
		DEVICE		= \SYS\SCSIF8K.x 6
		DEVICE		= \SYS\SCSIF8K.x 5
		DEVICE		= \SYS\SCSIF8K.x 4
		DEVICE		= \SYS\CODIYCLI.SYS 6:AB
		PROCESS		= 16 10 100

	AUTOEXEC.BAT ---------

		CODIYSERV.x
		CODIYSERV.x 5
		CODIYSERV.x 4
		SCHDPAT.x


	ID = 6 の CONFIG.SYS -------

		DEVICE		= \SYS\SCSITAI.SYS E
		DEVICE		= \SYS\SCSIF8K.x 7
		DEVICE		= \SYS\SCSIF8K.x 5
		DEVICE		= \SYS\SCSIF8K.x 4
		DEVICE		= \SYS\CODIYCLI.SYS 7:AB
		PROCESS		= 16 10 100

	AUTOEXEC.BAT ---------

		CODIYSERV.x
		CODIYSERV.x 5
		CODIYSERV.x 4
		SCHDPAT.x


	ID = 5 の CONFIG.SYS -------

		DEVICE		= \SYS\SCSITAI.SYS
		DEVICE		= \SYS\SCSIF8K.x 7
		DEVICE		= \SYS\SCSIF8K.x 6
		DEVICE		= \SYS\SCSIF8K.x 4
		DEVICE		= \SYS\CODIYCLI.SYS 7,5:AB
		DEVICE		= \SYS\CODIYCLI.SYS 6,5:AB


	ID = 4 の CONFIG.SYS -------

		DEVICE		= \SYS\SCSITAI.SYS
		DEVICE		= \SYS\SCSIF8K.x 7
		DEVICE		= \SYS\SCSIF8K.x 6
		DEVICE		= \SYS\SCSIF8K.x 5
		DEVICE		= \SYS\CODIYCLI.SYS 7,4:AB
		DEVICE		= \SYS\CODIYCLI.SYS 6,4:AB


 こんな感じで出来ます。わかりる!? ^^;




−<□■□ 注意 □■□>−


 TNB製作所は  Codiy Project の著作権を保持しますが、フリーウェアで転載は

自由です。ただし同梱ファイルの変更はしないで下さい。

 TNB製作所は この Codiy Project によるトラブルは一切責任を負わないものと

します。個人の責任において使用して下さい。

 バグ、トラブルの御報告はぜひお願いします。出来る限り対処、対応していきま

す。




−<□■□ 使用,参考ツール,参考ドキュメント □■□>−


	*  SUPERED.X ver 1.18  T.Nishikawa氏作
	*  has.x ver 3.08  YuNK氏作
	*  hlk.x ver 3.01  SALT氏作

	*  電脳倶楽部 vol.102 アセンブラプログラマのための資料室  鎌田氏作
	*  HOUNDS のドキュメント  Ext氏/COR.氏作
	*  Oh!X 1993/2 ,X68マシン語プログラミング「バックグラウンド処理」  村田敏幸氏作