Manuke Station BBS

RSS
投稿者 題名 内容 URL

4th ROMからの転送

投稿者: Manuke 投稿日:
To PC88さん
> わざわざ詳しい解説までありがとうございます。
> 本当に無知の自分を痛感しています。そこで、恥を忍んで教えていただきたいのですが、
> 4thROMの内容を別のアドレスに移動させたい場合はどうしたらよろしいのでしょうか?

処理内容にもよるかと思いますが、基本はメモリ間のコピーでしょうね。
BASICからもアクセス可能な領域へコピーしてしまえば、後の処理が楽になります。

例えば、BASIC側であらかじめCLEAR文でメモリを確保し、0C000H~0DFFFHがワークエリ
アとして利用可能だとします。(TransRomはここを使用)
この場合、先ほどのコードに挿入するなら、

        PUSH    BC              ; Bレジスタ(71H)をスタックへ待避
        LD      HL, 6000H       ; 4th ROM先頭メモリアドレス
        LD      DE, 0C000H      ; ワークエリアメモリアドレス
        LD      BC, 2000H       ; 転送バイト数
        LDIR                    ; 一括コピー
        POP     BC              ; Bレジスタをスタックから復帰

と実行すれば、6000H~7FFFHの内容が0C000H~0DFFFHへコピーされます。
この領域ならば、BASICのPEEK関数でも読み出し可能です。

(無題)

投稿者: PC88 投稿日:
わざわざ詳しい解説までありがとうございます。
本当に無知の自分を痛感しています。そこで、恥を忍んで教えていただきたいのですが、4thROMの内容を別のアドレスに移動させたい場合はどうしたらよろしいのでしょうか?

4th ROMアクセス

投稿者: Manuke 投稿日:
4th ROMアクセス


To PC88さん
> 今、頑張って、自力でROMの吸い出しに挑戦をしています。
> ところで、4th ROMの吸い出しを行うのにバンク切り替えが必要であるとのことなので
> すが、バンク切り替えはどのようにすればよいのでしょうか?

4th ROM 1のアクセスは、I/Oポート71Hへ0FEHを出力するだけです。
ポートへ0FEHを出力した瞬間に、メモリアドレス6000H~7FFFHの範囲が4th ROMのものへ
と切り替わります。
(SR以降の機種では、標準4th ROMが4つ搭載されていますので更にバンク切り替えの指
定も必要になりますが、無印/mkIIでは関係なし)

ただ、ROMのバンク切り替えはBASICからは行えませんので、基本的に機械語でコードを
記述する必要があります。
また、切り替え中は割り込みが発生しないよう割り込み禁止をかけておくこと、アクセ
スが終了した後はバンク切り替えを元に戻すことにご注意ください。

ざっと書いてしまうと、こんな感じです。
(Z80ザイログ表記。ちゃんと実行を確認してません)

        DI                ; 割り込み禁止
        IN      A, (71H)  ; 現在の71Hの値を取得
        LD      B, A      ; Bレジスタへ保管
        LD      A, 0FEH   ; 4th ROM 1切り替え値をセット
        OUT     (71H), A  ; 4th ROM 1へバンク切り替え

        ; 4th ROMアクセス

        LD      A, B      ; Bレジスタから以前の値を取得
        OUT     (71H), A  ; メインROM切り替え
        EI                ; 割り込み許可

(無題)

投稿者: PC88 投稿日:
今、頑張って、自力でROMの吸い出しに挑戦をしています。
ところで、4th ROMの吸い出しを行うのにバンク切り替えが必要であるとのことなのですが、バンク切り替えはどのようにすればよいのでしょうか?
ネットでは「通常は6000Hから7FFFHまでのエリアは「メインROM」が選択されているので、裏のバンクにあるROM内のルーチンを呼び出すには、I/Oポート71H へデータを出力してバンクを切り換え、CPUから「見える」状態にする必要があります。」とあったのですがよくわからないので、教えていただけると助かります。

あぅぅ

投稿者: Manuke 投稿日:
To PC88さん

うむむ、駄目でしたか。お力になれず申し訳ないです。
やっぱり実機がないとこれ以上は難しいですね。
無印を入手する機会があったら、改めてチャレンジしてみます。
ご協力ありがとうございました。

(無題)

投稿者: PC88 投稿日:
新バージョン再度確認いたしました。
残念です!やはり同じでした。

せっかく2度にわたって対応していただいたのに・・・
本当に残念です・・・ でも、作者の対応の暖かさには改めて感謝です!!!

TransRom Ver. 1, 0, 2 Beta2

投稿者: Manuke 投稿日:
To PC88さん
> 新バージョンのTransRom確認を行いました。
> 残念ながら、前バージョンと同じ(ReadRomの送信、機動(Beep音にて)までは確認。
> しかし、Romの受信はいつまでたっても終わらない(始まらない?))でした。

何が影響を及ぼしているのかと思ってソースを眺めていたら、もう一箇所抑えなければ
ならないところがあったのを失念してました(^^;)
申し訳ないです。改めてBeta2をアップロードし直しました。
(Ver. 1, 0, 2 Beta2)

http://www.cug.net/~manuke/trr_1_0_2b2.zip

> よい報告ができず残念です。でも、わざわざ対応してくださる作者様には本当に感謝です

いえ、こちらこそお手を煩わせてごめんなさい。
ウチのFEでは動いてしまうだけに、やっぱり実機がないとデバッグが厄介ですね。

(無題)

投稿者: PC88 投稿日:
新バージョンのTransRom確認を行いました。
残念ながら、前バージョンと同じ(ReadRomの送信、機動(Beep音にて)までは確認。しかし、Romの受信はいつまでたっても終わらない(始まらない?))でした。
TransT88はちゃんと起動し、今までwav形式では読めなかったプログラムも見事に読めたんですが・・・
よい報告ができず残念です。でも、わざわざ対応してくださる作者様には本当に感謝です。

TransRom Ver. 1, 0, 2 Beta

投稿者: Manuke 投稿日:
To PC88さん

TransRomですが、ROMで機種判定を行い、mkII以前のマシンでは不要なポート出力を行わ
ないバージョンを試作してみました。(Ver. 1, 0, 2 Beta)

http://www.cug.net/~manuke/trr_1_0_2b.zip

お手数ではありますが、この修正版が無印88で正常に動作するか、確認を行っていただ
けないでしょうか。
問題なく動作するようでしたら、正式にバージョンを上げたいと思います。

Re: TransRom

投稿者: Manuke 投稿日:
To PC88さん
> こちらで配布なさっているTransRomを使いBIOSの吸い出し(RS232リバースケー
> ブルを使用)を行ったのですが、うまくいきませんでした。
> やはり、初代PC-88では無理なのですかね?

うーん、そうですね。
TransRomはROMのバンク切り替えに、SRから追加されたI/Oポートへ出力を行っています。
これがPC-8801無印では悪さをしてしまっているのかも……。
手元に88無印がないのでちょっと確認できず、申し訳ないです。