10/23のツイートまとめ

shujiakita

メモリの名称(容量表示)はビットが常識でDRAMだと8個を束ねるので間違わない。しかし覚えていた筈なのにSRAMだと勘違い。某ラムディスク基板のドライバを制作したので調子に乗り互換基板の製作と思い立ち、256 メモリのシンボルを配置し(当然ながら)容量が1/8に愕然とする。 https://t.co/HSLY10efFc
10-23 11:54

スポンサーサイト



10/12のツイートまとめ

shujiakita

夏も終りです、と何を今更と。夏季に咲く松葉ボタンと住人の方に教わりました。あまりに綺麗なので散歩中に他人の庭に入り撮りましたが今日は刈られてなかったです。UPのためデータの間引きが残念です。 https://t.co/ZI3LX2B9iS
10-12 15:24

FM-7(77/AV)用「RD-512」のドライバ II

今更、「RD-512」のドライバを必要とされる方が自分以外に
いるのかと言う疑問を持ちながら制作しましたが自分自身も
どうしても必要と言う訳ではなく、趣味なのでが理由です。

<ドライバ制作の動機>
「RD-512」が未だ使えるとなると単にFDをコピーするバッファで
使うだけでは物足りなくなりました。先に制作したテストコードは
FDをコピーするバッファ用途として使えますけど、ここまで調べ
取りかかれば、RAMディスク用のドライバが視界に入ってきました。
しかし自力で一から制作する知識は持ち合わせてなく、参考となる
資料を探した所、運良く直ぐに見つかりました。1984年11月号の
OH!FM誌に掲載された「轍名 聡」氏制作のドライバです。全容で
256バイト足らずで、洗練されたコードにも関わらず丁寧で詳しい
説明があり広範囲でコードを流用させて頂きました。また運が良い
時は重なるもので相互リンクさせて頂いている「Old68fun」様が
「6809用クロス逆アセンブラ」を公開してくれましたので、早速、
これも利用させて頂きました。ソフト制作で強力な支援ツールに
なりましたので、御礼申し上げます。

<ドライバ(ソース)の簡単な説明>
「轍名」氏(同氏と略すことあり)制作のドライバを広範囲で
流用させて頂きましたが同記事はFM-7の裏ラムをRAMディスクと
して使うのでI/Oも違い記憶容量も違うので、その部分で修正が
必要でした。逆アセンブラしたリストは下にありますが著作権を
勘案して詳細な説明は転載してませんので詳細な説明については
国会図書館等のコピーサービスを利用して下さい。
逆アセンブラリスト:「XRAMDK77_20211007.lst」
https://onedrive.live.com/?authkey=%21Aln7kHlkHDL28EE&id=6357DCB7DCA88133%21113&cid=6357DCB7DCA88133

上記URLの「RD-512DRV」の下にありますが「Old68fun」様
制作の「6809用クロス逆アセンブラ」を使い、出力したものです。

1)ワークエリア(以下の情報を一時的に退避して使用する)
$6B02:8個の「データポート」用、デバッグ用に使用
$6B03:256個のセクタ番号を管理する「アドレスポート」
$6B06:BIOSコールが読みか書きかを判断するフラグ用

2)轍名氏制作ドライバとの違いと共通部
同氏のドライバは、RAMディスク用のBIOSコールか否かを
常時ラムである「$FC30」から始まるコードで判断しますが
自分のドライバは通常の表ラムで判断します。尚、コードは
この部分では100%流用してます。RAMディスク用のBIOS
コールと判断されれば、次はパラメータが正常か否かを判断
することになります。同氏のドライバでは、裏ラムで判断し
自分のドライバは表ラムで判断します。尚、コードはやはり
この部分でも100%流用してます。最後まで100%流用して
いればパクりで、お笑いネタになりますが流石に、I/Oも
違い、容量も違うので変更・工夫は必要になります。
15行「34 07 PSHS CC,A,B」から55行「A6 04 LDA 4,X」
までは、そのままのコピーになります。尚、読みか書きかの
フラグは轍名氏制作ドライバでは$FC5Aを使っていますが
自分のドライバでは$6B06を使ってす。ただしドライバを
$6B00から配置した時でポジション・インディペンデント
仕様で制作しました。(独自仕様もないと無様なので)
ソフトの配置を変える際は256バイト毎の変位にして下さい。

3)I/O等の違いに起因する轍名氏ドライバとの違い
具体的な逆アセンブラリストになると、下の56行目の
「6B6E 84 07 ANDA #$07」以降になります。
轍名氏はRAMディスク用ドライバを制作する上では、全セクタに
通し番号をつけて計算すると管理が容易になると説明してますが、
自分もwindowsアプリではセクタ用のデータを管理する際に
同様な式を使い処理してます。具体的な式は下です。
(トラック番号)×32 + (サイド番号)×16 +(セクタ番号)- 1

しかし既に説明してますが「RD-512」はリニアに管理はできません。
データポート1個で8トラック分の管理しかできませんので、変換する
必要があります。そこで考え易いように変換表を作成しました。
「RD512_BIOS.png」です。「XRAMDK77_20211007.lst」と同じ
リンク先にあります。

8トラック分の管理と言うことは、(32セクタ)×8 = 256(セクタ)
これが1個の「データポート」で管理できる最大セクタ数です。また
$FD41 でセクタ内の256バイトを管理し、変換表からアドレスポート
$FD40 でセクタ番号を管理するとした時にトラック数の2進数表示で
下位の3ビットの最大値7を使い 7×32 + 1×16 + 16 (= 256セクタ)
これが8トラック分のセクタ数の最大値と等しくなります。また、
3ビットから5ビットの3ビットで「データポート」用のアドレスが
切り分けられています。ここが判らないと56行目以降の意味は理解
できないと思いますが、説明が疎く上手くも説明できません。逆に
上記の内容が判れば56行目以降のコードは判るのではと思います。

轍名氏制作のドライバはFM-7の裏ラムをRAMディスクとして使うので
存在しないセクタを考慮する必要があり難しいですが幸い「RD-512」
では320Kバイト(全容量で512Kバイト)以上ありますので容易です。
ただし「RD-512」ではアドレスポートをリニアに管理できないので
そこは工夫が必要でした。念の為、55行-60行までが$FD40で管理する
セクタ数の処理になり、61行-68行までが、どのデータポートを使うか
と言う処理になります。その後、$6B06から「読み」か「書き」かの
の情報を取得して、所定のルーチンで処理します。尚、「読み」、
「書き」の局所的なコードは1987年2月号の「THE・BASIC」誌の
P137に掲載されたソースを流用させて頂いています。

<謝意>
一からドライバを制作することは不可能でしたが、有識者の知恵と
コードとツールをお借りして何とかドライバとして仕上げました。
改めて御名前を上た方々には感謝する次第です。

<ドライバ使い方・補足>
先ずは「RD-512」をFM-7の32ピンコネクタに確り挿し込んで下さい。
特にFM-77では溝(左に窪み)がありますので注意深く挿して下さい。
挿し込みが甘いとブザーがなり、FM-7が起動しませんし、最悪の
ケースは考えたくないですがハードの故障に繋がります。次にFM-7を
起動する際に実FDDの数より1多い数を入力して下さい。ドライバを
$6B00からに配置した時は「EXEC &H6B10」リターンとコマンド
ラインから打ち込んで下さい。BIOSを一旦 $6B20 からに迂回させ、
以降は「RD-512」用のRAMディスクコマンドか否か等の検査をします。
否の時は本来のドライバに処理を任せますし、該当するコマンドの時は
パラメータを検査して、エラーがあればBIOSにエラー設定をして、
コール元に復帰します。該当コマンドであり、なおかつパラメータが
正常であれば、このドライバが対応します。確かめたコマンドは
「files,load,save,kill」です。また、BIOSをFM-7(77)が
起動した時の初期状態にする時は「EXEC &H6B08」リターンと
して下さい。尚、このドライバで「FT245基板」を使い「RD-512」の
セクタデータをwindowsに送るようなことはしないで下さい。
このドライバはBASICから呼ばれ「RD-512」を操作してるからです。
この仕組みはwindowsアプリがイベントから呼ばれwindowsAPIで
コーデイングするサンドイッチ構造に何か似てると思いました。

<ユーティリティ(テストコード)の追加>
FDD ←→ RAMディスク の全セクタのコピー:RD512_RW.dat
「XRAMDK77_20211007.lst」と同じリンク先にあります。
アドレスの配置は固定です:$6700-$68FF
FDD1 → RAMディスク:EXEC &H6850 リターン
RAMディスク → FDD1:EXEC &H6750 リターン

それではまた。

FM-7(77/AV)用「RD-512」のドライバ I

<背景・経緯>
「RD-512」とはFM-7(77/AV)用に発売されたRAMディスクです。
ハードを入手した際に、F-BASICで使うドライバ等がなかったので
今回、制作してみました。ハードの仕様として512KバイトのRAMが
搭載されてると言う以外、I/Oが判らなかったので先ず調べました。
I/Oを調査する時に使った資料は1987年2月号の「THE・BASIC」誌
P126からです。某ワープロソフトの辞書をRAMディスクで使うと言う
内容です。I/OはP137に掲載された下のソースから特定しました。
https://imgur.com/a/XqI3iHR(猿人 留夢氏の制作コード)

・「RD-512」のI/Oについて
1)$FD41:1セクタ内の256バイトを管理する「アドレスポート」
参考資料の131行目のラベルの「READ」以下を見ると $FD41 を
ゼロクリア後に、Aレジスタをカウンタとしてインクリメントを
256回行ってますのでセクタ内の任意の256バイトをアクセスする
アドレスポートと考えました。

2)$FD40:$FD41と組み合わせて使う「アドレスポート」
$FD41と組み合わせることにより 256×256 = 64Kバイト を
管理することになります。この考えに至った背景して116行目に
注目しYレジスタに#$FD40(10 8E FD 40 LDY #MFD40)
を設定して、次にAレジスタの内容をアドレス $FD40 に設定
してることより(A7 A4 )アドレスポートと推測しました。
また資料に「RAM_PORT」と明記されていることが駄目押しに
なりました。尚、ソフト内で一貫性があれば$FD40と$FD41の
役割は交換できると考えますが、参考にした資料を踏襲します。

3)$FD48-$FD4F:8個の「データポート」
とりあえず、最初に発見したデータポートは$FD48です。123行目と
124行目でYレジスタの内容#$FD40にAレジスタの値を加えて、この
ポートを使い、データの読み書きを行っています。その際に#$08を
加えることがあるので$FD48はデータポートと判断しました。
しかし、ここで一旦袋小路に入りました。データポートが見付かり、
$FD40と$FD41と組み合わせて 256×256 = 64Kバイト の管理が
できるけど残りの 512Kバイト - 64Kバイト はどこで、どのように
管理してるのかと言う疑問です。先入観念では 64Kバイト × 8 を
更に上位の3ビットを管理するアドレスポートがどこにあるのかと。
聡明な方は123行目と124行目で「#$08」以外に「#$0E」や「#$0F」
ならそのまま加えてると気付くかも知れませんけど、他のポートは
探しても手掛かりはなく、時間がかかって気付きました。以上の
背景から$FD48-$FD4Fが8個のデータレジスタになると推論する
ことに至りました。8個の「データポート」 夫々が 64Kバイトの
アドレスにアクセスするイメージになります。尚、推論結果の
認証はテストコードで行いました。

・テストコードについて
「RD-512」のI/Oが確定すれば故障もなく、未だ使えるのかとか、
推論が正しいのかと言う点でテストコードを制作したくなりました。
と言うより、ハードは未だ使えるのかと言う思いからI/Oを調べたと
言った方が近いですけど。そこはともかく、拙作の「FDIMGFM2」を
流用しFDD ←→ RAMディスク のデータコピーソフトを制作しました。
最初にコピー元のFDを「A」とし一旦は内容をRAMディスクにコピーし
再度、RAMディスクから別のFDである「B」にコピーしました。この
各々のFDイメージを「FT245カード」を使い、windows に転送して
FDイメージを比較し一致したことより推論したI/Oとテストコードに
間違いがないことと、「RD-512」が使えると言う判断に至りました。

間をおかず、この内容の続きを「II」として掲載します。

FM-7用データ転送基板用ユーティリティの新機能の紹介

<概要>
2本のファイルを比較します。Windows側ソフト「FDDIMG_RW77.exe」のみの更新です。
コピーしたFDイメージを1セクタ毎に比較します。不一致の時はトラック番号、セクタ番号、
表裏情報、その他の情報として1セクタ256バイトを16バイト毎に1ラインとして換算して、
ライン番号を表示します。「40トラック × 32セクタ」を比較してます。Windows側は
中核機能の「77(88)形式ファイル作成」の他に、FDメディアのHDDへのバックアップ、
FDへのリストア機能もあり、結果としてFDメディアのコピーも可能ですのでファイル
比較機能で一層、利便性が高まると思います。尚、広範囲にデータが違っていても
最初のライン番号のみを表示します。「FDDIMG_RW77.exe」単独でも動作しますが
データ形式は「FT245」を使って受信した専用データファイルのみの適用になります。

「新機能:(FDイメージの)データ照合」の使い方
被比較用のファイルを選択後に比較用のファイルを選択するだけです。一致した時は
「一致しまた」とメッセージを出します。具体的な操作方法は先ずメニュー左側にある
「ファイルオープン」より被比較用のファイルを選択します。その後「FDDデータ」を
クリックすると「データ照合」のサブメニューが出力します。操作を続けるのであれば
クリックすると「データファイル比較」用のダイヤログが出ますので「OK」ボタンを
クリックして比較用のファイルを選択して下さい。途中「CANCEL」ボタンをクリック
すると操作は中断してメニュー選択画面に戻ります。

実行形式(FDDIMG_RW77.exe)は下にあります。
https://onedrive.live.com/?authkey=%21Aln7kHlkHDL28EE&id=6357DCB7DCA88133%21113&cid=6357DCB7DCA88133

それではまた。

プロフィール

vehwk3yxv7hw

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

検索フォーム

ブロとも申請フォーム

QRコード

QR