◎1987年5月号のOh!MZを入手できなかったので、″P″や″;″といったコ マンド(?)がわかりません。何なんですか、これは? #119 浅野 憲 羽曳野市 これは立派なコマンドです。Pコマンドは実行すると″HIT KE Y″とメッセージを出してキー入力待ちになります。なにかキーを押 すとコマンド待ちに戻ります。一方、;コマンドは実行してもなにも 起こりません。こんなのが何の役に立つのでしょう? 例えば、指定されたトラックをメモリに読み込むREADTRと、そ れで読まれた内容を指定したトラックに書き込むWRITETRとい うトランジェントコマンドをでっちあげて、それを利用した1ドライ ブ部分ディスクコピープログラムを考えてみましょう。実際のプログ ラムはさきの2つだけで、あとはバッチファイルで実行します。バッ チファイルとは、一連のコマンドを並べたアスキーファイルのことで、 これを読み取ったOSは最初の行からキー入力されたコマンドのかわ りに実行していきます。ここでは、次のようなバッチファイルが考え られるでしょう。 READTR:10 WRITETR:10 READTR:11 WRITETR:11 この4行を書いたファイルを実行すると、 1)10トラックを読み込む。 2) 〃 書き込む。 3)11トラックを読み込む。 4) 〃 書き込む。 と順番に実行されます。 これで、10トラックと11トラックがコピーされそうな気がしま すが、あにはからんやいもうとはかるや、これではぜんぜんうまくな いのです。それは、「ディスクの入れ換えができない」。すぐわかり ましたか? バッチファイル中のコマンドは、休みなく連続で実行されます。そ のために、読み込みと書き込みの間にディスクを入れ換えることがで きないのです。つまり、解決法としてディスクの入れ換えの時間を稼 げば良いということもわかります。 では、具体的にどうすればいいでしょうか?ここで、さきほどのP コマンドと;コマンドが出てくるのです。これを使うと、さっきのバッ チファイルはこうなります。 ; ヨミコムホウノ ディスクヲ セットシテクダサイ P READTR:10 ; カキコムホウノ ディスクヲ セットシテクダサイ P WRITETR:10 ; ヨミコムホウノ ディスクヲ セットシテクダサイ P READTR:11 ; カキコムホウノ ディスクヲ セットシテクダサイ P WRITETR:11 すると、それぞれの処理の前にメッセージが出力され、ディスクを入れ 換えてから何かキーを押せば正しく実行されるわけです。 どうでしょうか?バッチファイルを有効に使えばトランジェントコマ ンドの負担を(少し)軽くできたりもします。S−OSのバッチはやや 貧弱なので過剰な期待はできませんが、みなさんもどんどん活用してやっ て下さい。(石) ◎質問します。僕は現在turbo SWORDの#FATPS($1F5E)を書き替えて2HDの環境でマシン 語しています。512KBの制限はあるもののturboZの辞書ディスクはそのまま使えるし、 S-OSの膨大なアプリケーションも1枚のディスクに難無く収まります。  しかしこの無敵かと思われたシステムに障害が出てきました。そうRAMディスクが使 えないのです。原因はFATを書き替えたため2HDとRAMディスクの両方に対応できなくな った為だと思います。  これではと思い僕も何度かチャレンジして見ましたがどうもうまくいきません。何と か2Dのときと同じように「DE:」でRAMディスクが使えるようにできないもんでしょうか (なるべくスマートに)。 #98 松下 篤根 浜松市  ご存じのように,HuBASICとS−OSでは,2D/2DDでは FATとディレクトリの位置が共通で,$7Fクラスタまでは管理方法 も同じです.  しかし2HDになると,FAT/ディレクトリの位置がずれるため, BASICで鍛えたシステム辞書をSWORD上で使用することができ ません. 松下さんのように,#FATPS/#DIRPSを書き替えるのも1 つの方法ですが,これだと2DやRAMディスクを読むときに困ってし まいます.  そこで,SWORDのワークエリアに手を加えることはしないで,H uBASICとSWORDの両方で使用できる辞書ディスクを作ってみ ましょう.  まずHuBASICでフォーマットしたディスクに,システム辞書を 作成します.このとき,複数のファイルを一緒に入れてあっても構いま せんが,かならずファイル数は95個以下で,$7Fクラスタまでに収 まるようにしてください.  つぎに,リスト1のプログラムを用いて,レコード$1C〜$1Dの 内容を$0E〜$0Fへ,$20〜$2Bを$10〜$1Bへそれぞれ 複写します(その前にバックアップを忘れずに).これでHuBASI CとSWORDの両方からファイルの読み出しができるようになりまし た. ただし,このディスクに対してSWORD上で書き込みを行なっても HuBASIC側のFAT/ディレクトリは更新されないので注意して ください(テンキーによる辞書の学習は可).その逆も然りです.(森) リスト1 DIRCOPY.ASM ; ; HuBASICのSYS辞書をSWORDで使う ; #DRDSB EQU 2000H #DWRSB EQU 2003H #MPRNT EQU 1FE2H #PRINT EQU 1FF4H #FLGET EQU 2021H #DSK EQU 1F5DH HAJIME: ORG 3000H CALL #MPRNT DEFM "HuBASICのFAT/DIRをSWORDのFAT/DIRにCOPYします." DEFB 0DH DEFM "FAT/DIRをCOPYするドライブ名 ==>" DEFB 0 CALL #FLGET CP 'A' JR C,OWARI CP 'D'+1 JR NC,OWARI LD (#DSK),A ; DEVICE NAME CALL #PRINT CALL #MPRNT DEFB ':',0DH,0 LD HL,WORK LD DE,1CH ; HuBASIC FAT LD A,2 CALL #DRDSB LD DE,0EH ; SWORD FAT LD A,2 CALL #DWRSB LD DE,20H ; HuBASIC DIR. LD A,0CH CALL #DRDSB LD DE,10H ; SWORD DIR. LD A,0CH CALL #DWRSB CALL #MPRNT DEFM "終了しました." DEFB 0DH,0 OWARI: OR A ; RCF RET WORK: (EOF)