マイコン独立大作戦
ROM/RAM/RTCボードの製作
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
WindowsパソコンにUSB接続して使う現行方式はそれなりに便利ではありますが、ときとしてWindows
のしがらみから開放されて、小さいながらも独立した一個のパソコンとして機能したいと思うこともあります。
独立大作戦の作戦その1はCRTインターフェースボードの製作です。
作戦その2はキーボードインターフェースです。
作戦その3は、SDカードインターフェースです。
作戦その4は、ROM/RAM/RTCボードです。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第31回]
●増設ROM(27C4001)のテスト(2)
前回は2ヶ月以上も前にテストして確認していたことをすっかり忘れてしまい、また全く同じことをやってしまったことがわかって、それはもう、われながら情けない思いでありました。
しかし2ヶ月前のテストはND80Z3.5のシステムプログラムを27C1001にCOPYしたのでしたが、今回は27C4001ですから全く同じということでもありませぬ。
などど強弁してわれとわが身をいたわっております。
さて、気を取り直しまして、今回はその先のテストです。
2ヶ月前には、その先のテストはしておりません。
ですので今回が初めてです(多分)。
下が今回作りました27C4001のREADテストプログラムです。
2017/9/5 11:8 rom4mt1.txt END=8619 ;;;27c4001 test ;17/9/5 ; ORG $8600 ; REENT=$1033 BKRD=$E9A9 ; 8600 0610 RDTEST:LD B,10 8602 210000 LD HL,$0000 8605 78 RDTEST1:LD A,B 8606 CDA9E9 CALL BKRD 8609 79 LD A,C 860A 07 RLCA 860B B8 CP B 860C C21986 JP NZ,ERR 860F 78 LD A,B 8610 C610 ADD A,10 8612 CA3310 JP Z,REENT 8615 47 LD B,A 8616 C30586 JP RDTEST1 ; 8619 00 ERR:NOP;break point set ; BKRD =E9A9 ERR =8619 RDTEST =8600 RDTEST1 =8605 REENT =1033 |
ERR:のところはRAMのテストプログラムと同じく手抜きです。
アドレス8619にブレークポイントを設定してから実行します。
このようにすると、エラーが発生したことを知ると同時にそのときのレジスタの値からエラーの原因を推測することができます。
とても短いプログラムなのですが、何をやっているのかということになりますと、いまひとつよくわからないプログラムです。
今回テスト用に使用しました27C4001にはあらかじめROM WRITERで00000〜07FFFのアドレスにND80Z3.5用のシステムモニタプログラムを書き込んだことは前回、前々回に書きました。
27C4001は512KBのROMですから、アドレスとしては00000〜7FFFFの範囲の容量になります。
ROM/RAM/RTCボードはそれをバンク00〜バンクF0の16に分けてアクセスします。
各バンクは32KBのメモリサイズになります。
最初のバンクにはND80Z3.5のシステムプログラムがありますから、テストデータはその次のバンクから書き込みます。
本当はRAMのテストのときのように全メモリアドレスにベタにテストデータを書き込んでテストするとよかったのですが、ちょっとそこまでの準備ができていませんので、今回のテストは簡易なテストデータで行なうことにしました。
つまり各メモリバンクの先頭の1バイトだけにテストデータを書き込みました。
最初のバンクをバンク0としたときに、次のバンク1はアドレス08000〜0FFFFになります。
そこでその先頭アドレス08000にテストデータとして08を書き込みました。
次のバンク2はアドレス10000〜17FFFですから、アドレス10000にテストデータ10を書き込みました。
そのようにして、以下18、20、28…70、78までをそれぞれ各バンクの先頭アドレスに書き込みました。
上のテストプログラムはそのようにして作成した27C4001をROM/RAM/RTCボードに実装して、バンクを切り換えながら各バンクの先頭アドレスの値をチェックするものです。
ROMアクセスの場合バンク1はI/Oアドレス9Cに10をOUTしますが、テストデータは08です。
バンク2は20をOUTしますがテストデータは10です。
バンク3は30をOUTしますがテストデータは18です。
ちょっとややこしくて分かりづらいかもしれませんが、そういうことになっています。
下はテストプログラムを実行したときのログです。
>logfile nd80zlog\09051101.txt open ND80ZVに接続しました 0001 0000 - z 1000 00C3 - *** nd80z3 basic **** ndwr2h.bin loaded,from E23F to E535 >/ld nd3sd4l.bin,9000 loading ND3SD4L.BIN ...0d28(3368)bytes loaded,from 9000 to 9D27 >usr($903c) >/ld rom4mt1.bin,8600 loading ROM4MT1.BIN ...001a(26)bytes loaded,from 8600 to 8619 >bp 8619 >jp 8600 >/exit 0000 00C3 - リモート接続を終了しました logfile closed at Tue Sep 05 11:10:34 2017 |
エラーブレークすることなく終りましたから、ROM/RAM/RTCボードに27C4001を実装しての読み出しテストは、簡易ですがとりあえず問題なくできた、と考えてよいと思います。
ROM/RAM/RTCボードの製作[第31回]
2017.9.21upload
前へ
次へ
ホームページトップへ戻る