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」互換基板を製作中です。動作確認できれば回路図は
公開予定してますのでドライバが動作する仕組みより、使ってみたい
と言う方は<ドライバ使い方・補足>と<ユーティリティの追加>を
先に御読み下さい。

尚、著作権を勘案して15行目の「34 07 PSHS CC,A,B」から55行目の
「A6 04 LDA 4,X」までを当面、削除します。国会図書館で、コピー
サービスがありますので、研究したい方は1984年11月号のOH!FM誌に
掲載された「轍名 聡」氏制作の内容(P129-P133)を入手して
P133に掲載されている15行目の「34 07 PSHS CC,A,B」以降から
55行目の「A6 04 LDA 4,X」まで入力して、完成させてください。
現在ソフトバンクの出版部に、この部分の著作権に対する対応を確認
しています。返答がないか公開は不可と返答があった時は残念ながら
この部分で当ブログで公開する訳には行きません。互換基板が存在
しない状況であれば研究・調査と言うことで著作権侵害にはならない
と考えていましたが、状況が変わりました。

<2022/01/08追記>
ソフトの知識を蓄えたことにより、ハードの仕組みが見えてきました。
また互換基板を製作したことにより、ソフトの仕組みを整理することが
できましたので、判りにくかった点で説明を加え、大幅に修正しました。

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

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

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

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

2)轍名氏制作のドライバからの流用部分
「RAMディスクか否かの判断」と「パラメータ検査」で流用する。
34行目の「A7 BC BF STA L_6B08,PCR」を除き、15行目の
「34 07 PSHS CC,A,B」から55行目の「A6 04 LDA 4,X」までは、
そのままのコピーになります。

3)今回製作した当ドライバ独自の部分
ポジション・インディペンデント仕様でありますが、配置は
「$6B00ー$6BB2」にあるこを前提として、説明します

I/Oの違いがあるので、逆アセンブラの56行目の
「6B6E 84 07 ANDA #$07」以降になります。

ディスク関連のユーティリティを制作する上で、全セクタに通し
番号をつけて計算すると管理が容易になりますので、ドライバでは
セクタ用のデータを管理する際に↓の式を前提に、制作してます。
(トラック番号)×32 + (サイド番号)×16 +(セクタ番号)- 1

しかし既に説明してますが「RD-512」はリニアに管理はできません。
各データポート1個につき8トラック分の管理しかできません。なので、
変換する必要があります。そこで考え易いように変換表を作成しました。
「RD512_BIOS.png」です。「XRAMDK77_20220110.lst」と同じ
リンク先にあります。尚、「オフセット」とは$FD48をゼロ基点とした
時のオフセットで、「000」の時は$FD48が「データポート」となり
「オフセット」が「001」の時は $FD49が「データポート」になります。
以下「オフセット」が「010」の時は$FD4Aが「データポート」となり、
以下同様に繰り返します。リストの60行の$6B76で、RCBからトラック
番号をAレジスタに取得していますが、この3ビット目から5ビット目の
3ビットが$FD48を基点とするオフセット値になります。なので61行目
以下、3回「ASRA」を繰り返した値を#$FD48に加算してアクセスする
「データポート」を決定してます。

また8トラック分を管理できる最大セクタ数は↓の式になります。
(32セクタ)×8 = 256(セクタ)(16進数では「#$20」です)
この数値が1個の「データポート」で管理できる最大セクタ数です。
RCBから取得したトラック数をセクタ数に変換する際はトラック数を
丸ごとセクタ数に変換はできません。$FD48を基点とする、8個の
「データポート」で、64Kバイト毎に区分けしてバンクメモリ的に
管理するからです。ですのでRCBから取得したトラック数の処理で
下位の3ビットだけを使い、56行目で「ANDA #$07」としてます。
結局、54行目から57行目からの処理はセクタ番号を管理する上で
$FD40 を使っていますが、このアドレスに設定する数値を求めて
います。式としては↓のイメージになります。
(下位の3ビット)×32 + (サイド番号)×16 +(セクタ番号)- 1
尚、「下位の3ビット」とは「トラック数の下位の3ビット」です。

ここが判らないと56行目以降の意味は理解できないと思いますが、
説明が疎く、上手くも説明できません。逆に上記の内容が判れば
56行目以降のコードは判ると思います。

「RD-512」では1個のアドレスポートだけではリニアに管理できない
ので、以上が工夫した点です。尚、「読み」、「書き」の局所的な
コードは1987年2月号の「THE・BASIC」誌のアルゴリズムを取り
入れてます。尚、現状のコードは実FDD数を2個としてますので、
実FDD数が違う時は21行目の「CMPB #$02」の部分を変更して
下さい。

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

<ドライバ使い方・補足>
先ずは「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」として掲載します。

プロフィール

vehwk3yxv7hw

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

検索フォーム

ブロとも申請フォーム

QRコード

QR