|
前回、WindowsのGUI用に移植する上で、FM-7→PCの転送では
マルチスレッド化しないと使い勝手が悪いので別スレッド化に 取り組んでいると言及しましたが同時にFM-7側のソフトの変更 も必要になりました。理由は前回述べた通りデータ長を先頭で 送る必要があるからです。先ずは変更したFM-7のソフトを公開 する予定です。運良く、128バイトで収まったので、離れ小島の $FC00ー$FC7FのRAMに常駐させることもできます。ただし この領域は知る人は知る、カセット等でメモリを目一杯使う ソフト等で裏RAMを使用する際に窓として頻繁に使われてます。 なので競合するソフトとの併用はできません。例えば今回も 変更で使ったC-DOS7に同梱してる拡張モニタでも使ってます。 PCのコンソールで使う時は件の拡張モニタと競合しないように 作りましたけど(昨年の11月)、WindowsのGUI環境として 使うのであれば他のソフトと比較になると考えますので、 この辺りは用途に合わせて選択して頂ければと考えます。 なお、それに合わせてPCのコンソールで使うソフトも変更が 必要になりましたのでWindowsのGUIのソフトと合わせ順次 公開を考えてます。 <今回作成したFMDRV37_20190718の各ルーチンの機能> 常駐アドレス:$FC00-$FC7F、使用バイト数:128バイト、 ワークエリア:$FC00-$FC07、下の(1)から(3)の機能を持つ FMDRV37_20190718のプリミティブなデータ送受信ルーチンは ポジション・インディベンドですがヘッダ付きデータの受信機能を 使う時はサブルーチンから固定アドレスの$FC12を更にコールして ますのでアドレスの変更は不可です。この辺りは昨年、製作18で 公開した<FM7DRV27_20181124>と同様ですが一部エントリが 違います。具体的には(3)ヘッダ付きデータの受信ルーチンを 使う時はエントリが$3079に変更となりました。プリミティブな コードはポジション・インディベンドですがワークエリアの先頭は 必ずアドレスの下8ビットは「00(16進数)」の配置して下さい。 (1)プリミティブなデータ受信ルーチン 製作18で公開した<FM7DRV27_20181124>と同様ですので そちらを参照して下さい。 (2)プリミティブなデータ送信ルーチン エントリ:$FC39、ワークエリアにデータを設定しコールする なお今回ソフトは他のエントリ$FC68も用意しました。 機能:メモリの内容を送信バッファに送る コールする前に下のアドレスにデータを(手動で)設定すること 先頭アドレスを$FC02からの2バイトに、終端+1を$FC04からの 2バイトに設定する。更に、このアドレスをエントリにする時は $FC00からの2バイトにFC00と入力して下さい。例えば、他の $3000のアドレスに配置する時は3000と入力して下さい。 $FC39をエントリにせず$FC68をエントリにする時はFC00の 入力を省略できます。詳細はディスアセンブラを参照して下さい。 <補足> 終了時のXレジスタの内容を$FC06に書き出す機能を復活しました。 前回は拡張モニタと競合しないように使用メモリを削減しましたが 今回は$FC00-$FC57に収まる量ではないので拡張モニタと併用を 諦めて機能を復活しました。 (3)ヘッダ付きデータの受信ルーチン エントリ:$FC68、ワークエリアにデータを設定しコールする 機能:ヘッダ付き受信データをメモリに展開する アドレス$FC02からの2バイトに#0460(16進数)を設定しアドレス $FC04からの2バイトに#04A0(16進数)を設定する。 また$307Cからの3バイトは[JSR $470]になってると思います。 なおこのソフトを$FC00-$FC7Fに配置しない時は、この機能は 使えません。なお、製作19も参照して下さい。 ではまた。 |

>
- コンピュータとインターネット
>
- コンピュータ
>
- ソフトウェア





