2019/09/04
FM-7用データ転送ハードの使い方
Yahoo!ブログより引っ越して来ました、今後も宜しくどうぞ。拙作基板とFTDI社のFT245RLを使います。
・FM-7側のソフト(MSのOneDriveにあり、URLは下に記載)
機能的には高速なカセットの位置付けですがFDDより速いかと。
<FMDRV37_20190719の各ルーチンの機能>
常駐アドレス:$FC00-$FC78、使用バイト数:121バイト、
ワークエリア:$FC00-$FC07、下の(1)から(3)の機能を持つ
FMDRV37_20190719のプリミティブなデータ送受信ルーチンは
ポジション・インディベンドですがヘッダ付きデータの受信機能を
使う時はサブルーチンから固定アドレスの$FC12を更にコールして
ますのでアドレスの変更は不可です。ヘッダ付きデータの受信機能
を使わない時は下位8ビットが 00(16進数)であれば任意の位置
に配置できます。なお下位8ビットが00はWindowsのGUI用ソフト
との兼ね合いです。また$FC00-$FC78以外に配置にする時の
エントリアドレスは移動した分だけズレることに考慮して下さい。
(1)プリミティブなデータ受信ルーチン(配置変更可能)
エントリ:$FC12、ワークエリアにデータを設定しコールする
機能:受信バッファのデータをメモリに展開する
コールする前に下のアドレスにデータを(手動で)設定すること
先頭アドレスを$FC02からの2バイトに、終端+1を$FC04からの
2バイトに設定する。
<補足>
終了条件として二つの場合を想定してます。一つはXレジスタが
[終端+1]になった時、もう一つは$FDFEの7ビット(最上位ビット)
が[hi]になった時(受信バッファにデータがない)また後者で終了
した場合は、その時のXレジスタの内容を$FC06に書いていません。
I/O操作をメモリを節約するためサブルーチン化したのでせめて、
速度低下を少しでも抑えようとした結果です。ただし結果的に
意味が無かった可能性もありますがコードの修正も一手間なので。
(2)プリミティブなデータ送信ルーチン(配置変更可能)
エントリ:$FC68、ワークエリアにデータを設定しコールする
機能:メモリの内容を送信バッファに送る
コールする前に下のアドレスにデータを(手動で)設定すること
先頭アドレスを$FC02からの2バイトに、終端+1を$FC04からの
2バイトに設定する、終了はXレジスタが[終端+1]になった時。
注意点は先頭アドレス:下位8ビットを00(16進数)にすること。
(末尾+1)アドレス:下位ビットの下のニブルをX0にすること。
転送するデータの先頭アドレスと(末尾+1)アドレスの差分は
16の倍数になります。これはWindowsのGUIソフトとドライバの
制約が理由です。終了時のXレジスタの内容を$FC06に保存します
ので情報として使って頂ければと考えます。
(3)ヘッダ付きデータの受信機能(配置変更不可)
ヘッダ付きデータの作成機能をWindowsのGUI用で作成してません。
気長にお待ち下さい。
・WindowsのGUI用ソフトについて
実行形式はMSのOneDriveからダウンロードして下さい。
FM_DATA_TRNS.EXE(WindowsのGUI用の実行形式)下の「Release」配下にあります。
https://onedrive.live.com/?authkey=%21Aln7kHlkHDL28EE&id=6357DCB7DCA88133%21108&cid=6357DCB7DCA88133
(1)WindowsPC → FM-7 にデーターを転送する時
<PC側>ファイル → 開く → データ転送 → PC2FM
128(256)バイトのバッファ量より多い時は送信ウィンドウが
待ち状態になりマウス入力を受け付けません。なお74LS244の
1ビット分をバッファの状態監視に流用してるため、1バイトを
2回に分けて送信してます。この部分のソースは早晩サイトに
公開します。
Windows側では↓を呼んでますので身動きできませんが
fSuccess = SetPriorityClass(hProcess, HIGH_PRIORITY_CLASS);
FM-7側ではFT245RLの受信バッファの状態は取得できます。
$FDFE = ステータスレジスタ(Bit7=0なら受信データあり)
もう少し具体的に言うと、このアドレスが FF なら受信データなし
7F なら受信データあり、となります。因みにモニタでも確認できます。
<FM-7>側はWindowsがデータを送信しても受信するタイミングは
FM-7側の操作で決定できますので EXEC &HFC12 (リターン)
ワークエリアに設定した領域にデータが展開されます。
(2)FM-7 → WindowsPC にデーターを転送する時
<PC側> データ転送 → FM2PC (先ずこの状況にします)
この操作後PC側は別ウィンドウで待ちの状態になります。
<FM-7>側はワークエリアに送信データの先頭と末尾+1
を設定して EXEC &HFC68 (リターン)
(FMDRV37_20190719.datが$FC00-$FC78にあれば)
<PC側>別ウィンドウでマウスの入力が受け付け可能な
状況になりますのでシステムメニューのイグジット(×)を
クリックして別ウィンドウを閉じてください。
テンプファイルとして「sirial_20190620.dat」が作成
されますので適宜、相応しい名称に変更して下さい。
・拙作のWindowsのGUI用ソフトの位置付けと機能
高速カセットとしてますけど登録したファイル・データを
今時のパソコンで確認する時はWindowsのフォルダにある
ファイル・データと同じ扱いですのでFM-7単独のFDDより
扱いやすいと考えています。取り敢えずマシン語であれば
FM-7 ←→ PC のデータ転送でPC側はWindowsでできます。
それではまた。