[新連載開始]W65C02マイコンボードの製作
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
私としてはW65C02をさわるのは全く初めてです。何から何まで未経験です。さてどうなりますでしょうか。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第76回]
●ROM(27C256)を接続しました
いよいよ次のステップに入ります。
今までのテスト基板は64KBのメモリ空間の全部にRAMを配していました(必要なときは$0200〜$02FFにI/Oを割り当てます)。
昔と違って今はWindowsパソコンと簡単にUSBで接続することができます。
プログラムの開発やデバッグなどもその環境で(つまりこの連載でずっと使っているまさにその環境で)RAMにプログラムを書いて即実行しデバッグするのが最も簡単で手軽な方法です。
これから作成していくつもりのシステムプログラムなどもそのようにしてWindowsパソコンからUSB経由でW65C02テストボード上にロードすることでシステムプログラムを実行することもできます。
そういうことからすればROMは必須アイテムではないとも言えます。
しかし。
やっぱりシステムプログラムやユーザープログラムをROMに書いてスタンドアローンで動かしてみたい。
そういう願望をお持ちの方も多いのでは。
ということで。
今回はROM(27C256)の接続テストです。
最初の最初のとりあえずの接続テストですから今まで82C55を接続していた外部接続用のフラットケーブルコネクタにROMボードを接続してその中身を読み出せるかどうかのテストをとりあえず手っ取り早く行ないます。
ROMボードとしてW65C02テストボードのプリント基板をそのまま使って32pinRAMを置くためのところに28pinのICソケットを実装してそれと外部接続用のフラットケーブルコネクタのみを実装して即席の増設ROM基板を作りました。

W65C02のメモリアクセスはメモリを256バイトずつに分割しそれぞれをページという単位でアクセスします。
そのうちの$0000〜$00FFはゼロページという特別のエリアになっていてそのエリアのみにアクセスできる特別のアクセスモードが用意されています。
また$0100〜$01FFはスタックエリアに割り当てられています。
当然のことながらこのエリアを含む$0000〜$7FFFの32KBはROMに割り当てるわけにはいきません。
ということになると27C256を割り当てることができるのは後半の$8000〜$FFFFになります。
その場合ジャンプテーブル$FFFA〜$FFFFもROMになってしまいますがそこを可変にしたい場合にはRAMエリアへのジャンプアドレスを書いておくことで対処可能です。
とにかくそれは今後の作業です。
今回はROMの中身が読めるかどうかのテストです。
下は即席で作ったROM基板(W65C02テスト基板を流用)の回路図です。

回路は省略しますが上記ROM基板を接続したときはW65C02テストボード上の628128のCSにはA15がつながるようにショートピン部分を加工してあります。
それによってA15=0のときのみ628128にアクセスできます(A15=1のときには628128はアクセスされません)。
上の写真のように2枚の基板を接続して行なった動作テストは一週間ほど前のことでそのときのコマンドプロンプト画面は残っていません。
そのときのログは残っていますのでそれを使って説明をします。
logfile piciolog\0910210738.txt open *** pic i/o *** picio-08 connected write & check FFFC=20,FFFD=FE loading 65c02bp.bin ...002e(46)bytes loaded,from FF80 to FFAD >/dm ff FF00 3C 20 ED 53 C8 F0 CD 01 - 71 CD 88 76 CD 85 7D ED FF10 5B C8 F0 C9 D1 F1 3E 33 - C3 0F 20 3E 08 C3 0F 20 FF20 3E 09 C3 0F 20 3E 0A C3 - 0F 20 3E 0B C3 0F 20 3E FF30 0C C3 0F 20 3E 34 C3 0F - 20 3E 3F C3 0F 20 C3 0F FF40 20 ED B0 7E B7 F2 4D 7F - EB 2B 2B CB FE C1 D1 CD FF50 D3 7E C9 3E 08 C3 0F 20 - 3E 09 C3 0F 20 3E 0A C3 FF60 0F 20 3E 0B C3 0F 20 3E - 0C C3 0F 20 00 00 50 04 FF70 00 00 00 40 01 00 FF FF - 7F 00 00 CA 5F 6B E9 00 FF80 21 71 7F C3 A9 7E 21 76 - 7F C3 A9 7E 21 76 7F C3 FF90 30 7E 21 7B 7F C3 30 7E - 21 71 7F C3 92 7B 24 43 FFA0 4D 98 21 52 54 98 27 52 - 31 4D 90 15 44 45 4C 45 FFB0 54 45 D4 98 43 50 D4 8C - 4A 50 18 36 4D 56 D4 89 FFC0 53 4C D4 8F 58 4C D4 92 - 52 36 34 90 0C 57 32 35 FFD0 36 90 00 52 32 35 36 90 - 03 42 52 4F 4D D4 9E 43 FFE0 53 D4 83 52 52 42 D4 80 - 52 31 32 38 90 0F 43 4F FFF0 4E 54 A0 1B 41 53 20 FE - 0F 00 44 41 20 FE 0F 03 end of /dm >/dm 80 8000 C3 00 08 00 00 00 00 00 - C3 BA FF 00 00 00 00 00 8010 C3 BD FF 00 00 00 00 00 - C3 C0 FF 00 00 00 00 00 8020 C3 C3 FF 00 00 00 00 00 - C3 C6 FF 00 00 00 00 00 8030 C3 C9 FF 00 00 00 00 00 - C3 CC FF 3E FF D3 98 21 8040 EC 83 06 0C AF 77 23 05 - C2 45 00 21 C7 83 22 E2 8050 83 3E FF D3 98 31 D1 83 - CD C0 01 CD 16 02 47 E6 8060 10 CA 84 00 78 E6 0F 06 - 00 87 4F 21 74 00 09 7E 8070 23 66 6F E9 CC 00 F9 01 - 94 00 B8 00 9D 00 C2 00 8080 D5 00 07 01 CD B5 01 3A - EC 83 B0 32 EC 83 CD A1 8090 01 C3 51 00 2A EC 83 22 - EE 83 C3 A1 00 2A EE 83 80A0 23 CD AD 00 22 EE 83 CD - A1 01 C3 51 00 3A EC 83 80B0 32 ED 83 7E 32 EC 83 C9 - 2A EE 83 2B CD AD 00 C3 80C0 A4 00 2A EE 83 3A EC 83 - 77 C3 9D 00 2A EE 83 22 80D0 E0 83 C3 F9 01 06 F7 2A - EC 83 EB 2A EE 83 78 D3 80E0 98 7C CD 7C 02 7D CD 7C - 02 7A CD 7C 02 7B CD 7C 80F0 02 2B 23 7E CD 7C 02 CD - 01 03 C2 F2 00 C3 51 00 end of /dm >/exit リモート接続を終了しました logfile closed at Thu Sep 10 21:08:16 2026 |
適当なROMを実装してその中身を/DMコマンドで読み出しました。
$8000〜にはROM(27C256)の$0000〜が読み出されます。
適当なROMとしてND80Z3.5のシステムROMを実装しました。
$8000〜にはND80Zモニタプログラムの先頭のジャンプテーブルが読み出されました。
ざっと見たところ正しく読み出されているようです。
念のために$0000〜のRAMエリアがちゃんとアクセス可能になっているかどうかも確認してみました。
logfile piciolog\0910212306.txt open *** pic i/o *** picio-08 connected write & check FFFC=20,FFFD=FE loading 65c02bp.bin ...002e(46)bytes loaded,from FF80 to FFAD >/dm ff FF00 3C 20 ED 53 C8 F0 CD 01 - 71 CD 88 76 CD 85 7D ED FF10 5B C8 F0 C9 D1 F1 3E 33 - C3 0F 20 3E 08 C3 0F 20 FF20 3E 09 C3 0F 20 3E 0A C3 - 0F 20 3E 0B C3 0F 20 3E FF30 0C C3 0F 20 3E 34 C3 0F - 20 3E 3F C3 0F 20 C3 0F FF40 20 ED B0 7E B7 F2 4D 7F - EB 2B 2B CB FE C1 D1 CD FF50 D3 7E C9 3E 08 C3 0F 20 - 3E 09 C3 0F 20 3E 0A C3 FF60 0F 20 3E 0B C3 0F 20 3E - 0C C3 0F 20 00 00 50 04 FF70 00 00 00 40 01 00 FF FF - 7F 00 00 CA 5F 6B E9 00 FF80 21 71 7F C3 A9 7E 21 76 - 7F C3 A9 7E 21 76 7F C3 FF90 30 7E 21 7B 7F C3 30 7E - 21 71 7F C3 92 7B 24 43 FFA0 4D 98 21 52 54 98 27 52 - 31 4D 90 15 44 45 4C 45 FFB0 54 45 D4 98 43 50 D4 8C - 4A 50 18 36 4D 56 D4 89 FFC0 53 4C D4 8F 58 4C D4 92 - 52 36 34 90 0C 57 32 35 FFD0 36 90 00 52 32 35 36 90 - 03 42 52 4F 4D D4 9E 43 FFE0 53 D4 83 52 52 42 D4 80 - 52 31 32 38 90 0F 43 4F FFF0 4E 54 A0 1B 41 53 20 FE - 0F 00 44 41 20 FE 0F 03 end of /dm >/dm 00 0000 6D 0C 84 40 28 54 64 64 - 64 41 42 00 40 45 C5 EE 0010 68 CD 65 CC C0 64 CF 40 - 52 4A 04 44 64 46 4D 41 0020 4D 46 84 26 40 8A 44 4E - 54 44 4E C4 C4 46 15 55 0030 09 07 64 44 04 41 41 44 - 44 44 65 0A 86 41 45 6C 0040 63 42 6C 64 C6 44 66 44 - 6E 66 4C 04 04 45 CD 55 0050 D5 60 AE A4 6E 91 5D 64 - 4C 50 45 B4 64 C4 44 65 0060 05 4C E4 4C C0 40 45 24 - 60 CC 64 42 44 4E 47 64 0070 57 42 0A C4 66 C6 46 47 - 64 8D 47 40 44 45 45 64 0080 6A 02 44 0C C5 0D 64 00 - 4C 06 4E C7 40 66 45 44 0090 C5 64 C0 44 E4 45 44 06 - 8C 45 4C 46 54 04 41 4C 00A0 27 EC 84 C6 00 E4 75 44 - C6 46 2C 44 44 4C 41 84 00B0 CF 44 E8 49 66 40 C0 44 - 44 40 14 CF 54 C4 55 57 00C0 45 C0 84 04 45 06 E5 04 - 4C C0 44 44 D4 C4 44 40 00D0 46 46 C6 52 04 46 44 C5 - 46 60 40 C4 45 4C 55 44 00E0 45 A0 C5 6C E4 6C 44 E5 - E6 44 F5 C4 64 44 4C 45 00F0 FF 49 45 43 7F EF 66 E5 - 4D CC 45 45 55 45 64 64 end of /dm >/cm 0000 0000 6D-12 0001 0C-34 0002 84-56 0003 40-78 0004 28- 0003 78- 0002 56- 0001 34- 0000 12- /cm end >/exit リモート接続を終了しました logfile closed at Thu Sep 10 21:37:12 2026 |
/CMコマンドで中身を書き換えてみました。
ちゃんとRAMとしてREAD/WRITEできていることが確認できました。
W65C02マイコンボードの製作[第76回]
2026.9.18 upload
前へ
次へ
ホームページトップへ戻る