スポンサーサイト



02/18のツイートまとめ

shujiakita

@fm7mei FM-7についての話題です。発売当初は4万円程したので買えませんでしたが、FM-7が下火になり中古で1万円になった時に思わず、オリジナルを購入しました。入手時にBASIC用のドライバがなかったので用意し、この度、弾みで互換基板も製作しました。
02-18 09:16

02/13のツイートまとめ

shujiakita

RAMディスクは快適ですが停電等で電源供給が途絶えた時の懸念は残ります。無停電電源装置(UPS)も選択肢ですが低コストのバッテリバックアップ機能は懐に優しいと思います。
02-13 11:17

512K_RAMディスクのドライバの説明II

・初めに著作権保護法と文化財の保全機能に一文を添えます
著作権保護法は著作権者の権利を守る側面がある一方で、数十年前に
作成されたプログラムと言う著作物を保全すると言う観点では、機能
してるように思えません。使われなくなったプログラムは忘れ去られ
著作権者に経済的な恩恵はないのに文化財の保全機能も果たしてません。
細やかでも著作権者に経済的な恩恵をもたらし、同時に文化財の保全を
考えて行く上で、当ブログに意見を投稿をして頂ければ幸いです。

・前回のドライバ「XRAMDK77.DAT」の説明の続きになります
「XRAMDK77.DAT」の実行前に Windows 上のディスクイメージを
RAMディスクに転送する上で、先ずは「RAM512SR.DAT」を実行する
と言う続きです。この機能を使う上で、FT245カードが必要ですので
FT245カードがない時は入手を検討して頂くか、無ければ前回説明した
「RD512_RW.DAT」を使って、ドライブ1の内容を RAMディスクに
コピーする以外の方法はありませんので、これ以降の説明は意味を
なしません。FT245カードがあればFDDIMG_RW77.EXE(VER2.0)を
使い、WindowsのディスクイメージをRAMディスクに転送することが
可能になります。尚、FDDIMG_RW77.EXE(VER1.0)はFT245カード
を使って Windows と FM-7の実FDD間でディスクイメージを転送する
ユーティリティでしたが、今回の(VER2.0)は上記の機能に加え、
WindowsとRAMディスク間でFDイメージの転送が可能になりました。
ですのでFDDIMG_RW77.EXEの使用法は以前と変わりません。
<Windows → RAMディスク>
1)Windows側でRAMディスクに転送するファイルを選択する
以前、FDDIMG_RW77.EXE を使って Windowsにバックアップした
ファイルが、そのまま使えます。先に、実ドライブからWindowsに
FDイメージを転送してバックアップファイルを用意する事は可能です。
その場合は FM-7用の「FDIMGFM2」が必要となります。
2)FM-7側で「RAM512SR.DAT」を「$6700-$68FF」に配置して
「EXEC &H6768 リターン」と実行し、Windowsから送られてくる
データを待つ
3)再度Windows側に戻り、メニューのFDDからFM-7へ転送する

想定してる「トラック番号」のカウントアップが期待通りに表示
されれば約80秒後にFDイメージがRAMディスクに転送されます。
リソースが足りないPCの場合は、カウントアップで止まったままで
一抹の不安を感じますが、約80秒程お待ちください。

4)この操作後に「XRAMDK77.DAT」を「$6B00-$6BB2」に配置して
「EXEC &H6B10 リターン」と実行した後に「files"2:」とすると
RAMディスクの内容が表示されます。以降はRAMディスクを実ドライブ
の如く使えます。RAMディスクですので速いです。ただ実ドライブの
ように音が出ませんので、快く感じる方と物足りなく感じる方がいる
とは思いますが、変更はできませんので御了承下さい。

尚、FDDIMG_RW77.EXE(VER2.0)は下記の「RD-512DRV」の
配下にあります。
https://onedrive.live.com/?authkey=%21AAYw2tf9YTW2SLo&id=6357DCB7DCA88133%21284&cid=6357DCB7DCA88133

<RAMディスク → Windows>
1)Windows側でFDDIMG_RW77.EXE(VER2.0)を起動して
FM-7から送ってくるデータ(FDイメージ)を受信するために
メニューのFDDから「受信」をクリック(選択)して待機して
下さい。

2)FM-7側で「RAM512SR.DAT」を「$6700-$68FF」に配置して
「EXEC &H6868 リターン」と実行すると、RAMディスク内の
FDイメージを Windows に送信する動作が始まります。
全データの受信後「DIMG_20201130.dat」と言うファイルが
(FDDIMG_RW77.EXEを起動した)カレントフォルダに作成され
ますので、任意のファイル名に変更して下さい。変更しない時は
次のデータ受信で「DIMG_20201130.dat」の内容は上書き
されます。

やはり想定してる「トラック番号」のカウントアップが期待通りに
表示されれば約80秒後にFDイメージがWindowsに転送されます。
リソースが足りないPCの場合は、カウントアップで止まったままで
一抹の不安を感じますが、約80秒程お待ちください。

以上です。何か質問があれば、このブログに投稿して下さい。

RAMディスクのドライバ「XRAMDK77.DAT」の説明

512K_RAMディスクのドライバの説明としてコードに説明を加えた
「XRAMDK77.DATの説明書」を作成しましたので公開します。
https://onedrive.live.com/?authkey=%21AAYw2tf9YTW2SLo&id=6357DCB7DCA88133%21284&cid=6357DCB7DCA88133

・512K_RAMディスクを使うために、2つの方法を用意しました
1)RD512_RW.DAT︓ドライブ1の内容を RAMディスクにコピーします。
実行は配置位置を「$6700ー$68FF」にしてあることを前提として
「EXEC &H6850 リターン」です。尚、RD512_RW.DATは RAMディスク
の内容をドライブ1にコピーする機能も持っています。
実行は配置位置を「$6700ー$68FF」にしてあることを前提として
「EXEC &H6750 リターン」です。

2)RAM512SR.DAT︓Windows 上のディスクイメージをRAMディスクに
転送します。FT245カードとFDDIMG_RW77.EXE(VER2.0)が必要です。
その後、512K_RAMディスクのドライバ「XRAMDK77.DAT」を実行します。
尚、RAM512SR.DATは RAMディスクの内容をWindows に転送する機能も
持っています。この方法はFDDIMG_RW77.EXE(VER2.0)も使いますので
改めて説明します。

3)上記のユーティリティを実行後に、ドライバの「XRAMDK77.DAT」を
「$6B00ー$6BB2」に配置して下さい。この状態を前提とし説明しますが
「XRAMDK77.DAT」自体は256バイト毎の配置位置が変更可能な、所謂
ポジション・インディペンデント仕様です。配置位置が、この状態の時に
コマンドラインから「EXEC &H6B10 リターン」と実行して下さい。
事前にユーティリティの「RD512_RW.DAT」か「RAM512SR.DAT」を
使った設定がないと、filesコマンドを実行すると「FD構造エラー」的な
メッセージが出力します。説明通りに設定した後に「files"2:」とすると
RAMディスクの内容が表示されます。ただし、 RAMディスクをドライブ2に
設定した場合です。ドライブ数の設定はDISK-BASIC起動時に
「HOW MANY DISK DRIVES?」で「3」と入力(実ドライブより1大きい値)
して下さい。FILE数は任意です。RAMディスクをドライブ1に設定する時は、
この内容の最下部を参照して下さい。

・ドライバの構造と仕組み
重点とした内容を御読み頂くと理解の一助になるのではと考えています。
尚、「49行目の$6B61」から「53行目の$6B69」までの7バイトを
意図的に空白にしました。この7バイトは1984年11月号のOH!FM誌に
掲載されたP133にある「轍名 聡」氏のコードの一部です。
著作権を勘案して国会図書館からコピーを入手し、空白の7バイトを
補充して下さい。そうすることによりドライバが完成します。
因みに、試してはいませんが空白の7バイトを補充せずに実行すると
FM-7は暴走すると考えています。7バイトの補充後も入念にコードは
検査して下さい。何かありましても責任は持てません。
また、7バイトを空白にした理由は「FM-7」だからです・・・???
更に、「XRAMDK77.DATの説明書」は著作権を保有してる方より
削除要求があった時には速やかに削除することを御了承下さい。

1)15行目から55行目まではRAMディスクか否か、とパラメータ検査に
1984年11月号のOH!FM誌に掲載された轍名氏のコードを参考にしてます。

2)56行目から64行目までは、全セクタに通し番号を振ると言う考えは
取り入れてますが「RD-512」の「I/O」仕様による制約から、自分が
工夫して作成したコードです。

3)65行目から85行目までは、「RD-512」の「I/O」仕様に基ずく
「RD-512」とメインメモリ間のデータ転送コードになります。
1987年2月号の「THE・BASIC」誌のP137に掲載された
「猿人 留夢」氏が制作したコードのアルゴリズムを参考にしました。

4)この後に再度、轍名氏のコードを参考にし完了します。

ポジション・インディペンデント仕様とRD-512のI/Oに対応させた部分が
当方の独自内容になります。尚、参考にした轍名 聡氏のドライバ自体が対応
可能な作りとも言える訳で同ドライバが秀逸だった証左になると考えています。
「轍名 聡」氏のドライバは「FM-7」の裏RAMを使い、RD-512のドライバは
「データポート」として$FD48を基点にバンクメモリ的な「I/O」にアクセス
します。

重点としてはRCBから取得したトラック番号の処理で、2つの事をする必要が
あります。1つはトラック番号の下位3ビット分をセクタ数に変換し、セクタ
番号、サイド番号×16とを合算した「通算のセクタ数」を求めることです。
理由はこの数値の合計の最大値が256セクタになり、RD-512のバンク的な1つの
メモリ空間の限界だからだからです。もう一つの処理は、このトラック番号の
3ビット目から5ビット目の3ビットが$FD48をゼロ基点とする「オフセット値」
になり、アクセスする「データポート」を決定します。

重点を補足すると、実際には下記の処理をしています。
下記のリンク先にある「RD512_BIOS.png」で単に「オフセット」と言う値は
https://onedrive.live.com/?authkey=%21AAYw2tf9YTW2SLo&id=6357DCB7DCA88133%21284&cid=6357DCB7DCA88133
$FD48をゼロ基点とした時のオフセット値で、「オフセット」が「000」の時は
$FD48を「データポート」として「オフセット」が「001」の時は$FD49が
「データポート」になります。以下「オフセット」が「010」の時は$FD4Aが
「データポート」になり、以下同様に繰り返します。リストの60行の$6B76で、
RCBからトラック番号をAレジスタに取得していますが、この3ビット目から
5ビット目の3ビットが$FD48を基点とする「オフセット」になります。
ですので61行以下3回「ASRA」を繰り返した値を#$FD48に加算しアクセスする
「データポート」を決定してます。判り難い点は全セクタに通し番号をつける
考えですが、「アドレスポート:$FD40」で使う数値は、RCBから取得した
トラック番号の下位3ビット分のみ使います。そのためのコードが56行の
$6B6E における「ANDA #$07」になっています。全セクタに通し番号を
つけて考えるとは説明してますが「RD-512」のI/Oに制約されますので、
RCBのトラック番号の下位3ビットは「$FD40」に設定する数値を決定する
ために使い、3ビット目から5ビット目の3ビットは$FD48を基点とする
「データポート」を決定する数値として使ってる訳です。

またI/Oにアクセスするコードは1987年2月号の「THE・BASIC」誌のP137に
掲載された「猿人 留夢」氏制作のドライバ(コード)ですが、誰が書いても
変わらないと思います。なので分かり易く、「RD-512」の「I/O」である
「$FD40」、「$FD41」、「$FD48」の3個は、あくまでも比較としてですが
他の「I/O」よりは容易に発見できました。尚、「猿人 留夢」氏のコードが
判り易かったことは同氏の技術力が低いことを意味しません。逆に判り易い
と言うことは同氏の技術力も熟練の域に達していたと考えています。

(1)$6B08 ー $6B0E:BIOSのエントリアドレスの復元
(2)$6B10 ー $6B1A:BIOSのエントリアドレスをRAMディスク用に設定
(3)$6B1B ー $6B1E:リクエスト番号8で何もする必要がない時の最後の処理
上は「轍名 聡」氏の説明でラベル名は「NOSECT」となっています

(4)$6B20 ー $6B32:1984年11月号のOH!FM誌のP133に掲載されたコピー
(5)$6B35がエントリになり、更に真の「RAMDSK」の処理ルーチンへJSR
理由は「轍名 聡」氏のドライバは裏RAMを使っていて裏RAMとの遷移で、$FD0Fを
変更してますが、自分はこのコードを削除してるので、エントリのみ残りました。
「轍名 聡」氏のドライバではラベル名が「URAMDK:$8000」にJSRしますが
自分のコードでは「L_6B40」からの処理が該当します。「L_6B40」以降では
RCBパラメータの検査をします
(6)の演算でリクエスト番号9(書き込み)は:A=0 となり、リクエスト番号10
(読み出し)は:A=$FF となる(巧妙なコードで、驚くばかりです)
(7)セクタ番号が1から16であるかの検査ですが、「セクタ番号が1から16」なら
Aレジスタの値は 0 から $0F になると説明されてます
(8)「セクタ番号 ー 1」とスタックに入っていた「サイド番号 × 16」を加算
(9)御存知とは思いますが、RAMディスク用ドライバを制作する上で、トラック
番号をセクタ数に変換しセクタに通し番号をつけ計算する考えで、Windows用の
「FDDIMG_RW77」でも、同じ計算はセクタ内容の書き換え機能で使ってます。
因みに全セクタをリニアにアクセスできるなら計算式は下になります
(トラック番号)×32 + (サイド番号)×16 +(セクタ番号)- 1

残念ながら「RD-512」の「I/O」の仕様より、この式のままでは使えません。
しかし、考え方(着想)は取り入れてプログラムを制作しました。

(10)実FDD数が1個なら「CMPB #$01」にしますが、他のドライブ数では
テストしてません

02/09のツイートまとめ

shujiakita

尚、ドライバもありますし、FDイメージを転送するツールはオリジナルのRAMディスクの右にある拙作FT245データ転送カードを使えば対Windows間で、更には実FDD間でも動作確認したものを用意してます。尋ね人「轍名 聡」氏は継続中です。
02-09 19:37

FM-7用512KバイトのRAMディスク基板です。実装するにはTTL7個とを512KバイトのSRAMが必要です。因みにRAMディスク基板の手前がオリジナルのRAMディスクですがオリジナル版より高機能で電源ラインが確りしてます。理由はOld68funさまの仕上げだからです。 https://t.co/MvzHw0EVy1
02-09 19:20

02/04のツイートまとめ

shujiakita

変換基板に表面実装のハンダ付け作業はありますが動作確認ができてるSRAMは「HM628512、M5M5408、TC554001」です。DIPのHM658512は疑似SRAMとなっていますが「HM628512」と仕様が違い動作しません。以上、Old68funさまより報告を受けています。
02-04 21:43

プロフィール

vehwk3yxv7hw

Author:vehwk3yxv7hw
今から40年近く前に発売されたFM-7
と言う8ビット機のデータ管理を
現行PCでできるようにしましたが、
この程度の作業でも1年以上かかり
ました。とは言え現行PCでデータが
管理できれば昔のPCでも間接的とは
言えインターネットに接続してると
考えました。昔からFM-7用基板を
製作したい思いもありました。
FM-7の機能追加としてソフト的に
あと一つ残ってます。某ブログを
利用し公開してましたけど閉鎖に
伴いココを新発信基地とします。
思いはFM-7のハードに止まらず
昔のゲーム機の機能も拡張も考えて
います。尚写真は30年以上前です。

検索フォーム

ブロとも申請フォーム

QRコード

QR