マイコン独立大作戦
CRT/VGAIF+KEYIF+SDCARDIFボードの製作
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
WindowsパソコンにUSB接続して使う現行方式はそれなりに便利ではありますが、ときとしてWindows
のしがらみから開放されて、小さいながらも独立した一個のパソコンとして機能したいと思うこともあります。
昔はそれが普通のことだったのですが、安価なCRTディスプレイが生産中止となって久しい今日ではそれ
は叶わぬことと諦めていたのですが…。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[総合第103回]
●27C512のテスト
前回の続きです。
27C512も書き込みできるように改造した27C256WRITERを使って、27C512の0000〜7FFFにND80Z3.5システムプログラムを書き込んで、それをROM/RAM/RTCボードに接続したのですが、ND80Z3.5は全く起動してくれませんでした。
最初は512WRITERの書き込みプログラムに問題があって、うまく書き込みができていないのかと疑って、書き込み済みの27C512の内容を確認してみたのですが、ちゃんと正しく書き込みできています。
ということになりますと疑うべきはROM/RAM/RTCボードということになります。
じょーだんじゃないよお。
ここまできて。
そういう冗談はほんとやめてほしいなあ。
などとぼやきつつROM/RAM/RTCボードの回路図を眺めていましたら。
なんだあ?
なんでこんなバカなことをやっておるのだ?
下は「ROM/RAM/RTCボードの製作」[第32回]でお見せしたメモリ部分の回路図です。
問題はディップスイッチの設定にありました。
というよりもそもそもディップスイッチの回路に問題があったのでした。
なんでこんなおばかな回路にしてしまったのか?
何回も回路図を見ていながらなぜ気が付かなかったのか。
なんとも情けない限りです。
DS1とDS2のbR、bSが完全にダブッています。
DS1は27C512を追加するために新たに設けたものでしたが、そもそも追加などする必要はなかったのでした。
つねづね視野の狭さと先入観の強さについては自信を持って(?)自覚していたのでありますが、ここまでくるともうほとんど病気ですなあ(とほほ)。
DS1はもともと不要なものなので、ここはbPをON、bQをOFFにします。
そしてDS2のbRをON、bSをOFFにします。
bTをOFF、bUをONにします。
(DS2の)bP、bQは27C256、27C512は無関係なのでどちらでもよいのですが、OFFにしておきます。
そのようにしたところ、無事にND80Z3.5が起動してくれました。
27C512とディップスイッチのところを大きく撮りました。
めでたしめでたしといいたいところですけれど。
そりゃあ素直には喜べませんです。
むしろ。
ばっかじゃないのぉ、と自分に向かって言いたい気分であります。
●テストプログラム
自分がばかなのは十分熟知しておりますので、いまさらそれを愚痴ってみても始まりませぬ。
気を取り直してテストです。
ROMのテストは27C4001、27C1001でやったのと同じです。
あらかじめ27C512のシステム以外のエリア(27C512の場合には8000〜FFFFの32KBのみ)にテストデータを書いておきます。
そのようにして作成した27C512をROM/RAM/RTCボードに実装して、テストプログラムでテストデータを読み出して正しく読み出せるかどうかをテストします。
27C512用のテストプログラムは27C1001用のテストプログラム1mromt2の一部を書き換えて作成しました。
下が今回作った27C512用のテストプログラム512romt2のアセンブルリストです。
2017/10/6 20:46 512romt2.txt END=9445 ;;; 512 ROM read test ;from 4mromt2 ; 17/9/28 9/29 10/5 ;10/6 from 1mromt2 ; ORG $9300 ; ADISP=$1015 DEDP=$1018 REENT=$1033 SPDP=$1039 HXDP2=$104B HXDP4=$104E CRLF2=$107B ; ;address C,H,L ; 9300 C30693 JP RTEST 9303 10 BKADRS:DB 10 9304 00 CSBF:DB 00 9305 00 DB 00 9306 110080 RTEST:LD DE,$8000 9309 3E10 LD A,10;***** 930B 320393 LD (BKADRS),A 930E D39C OUT (9C),A 9310 210000 LD HL,$0000 9313 220493 LD (CSBF),HL 9316 0E00 LD C,00 9318 210080 LD HL,$8000 931B 7C RTEST1:LD A,H 931C E67F AND 7F 931E 44 LD B,H 931F 67 LD H,A 9320 7E LD A,(HL) 9321 E5 PUSH HL 9322 D5 PUSH DE 9323 2A0493 LD HL,(CSBF) 9326 1600 LD D,00 9328 5F LD E,A 9329 19 ADD HL,DE 932A 220493 LD (CSBF),HL 932D D1 POP DE 932E E1 POP HL 932F 60 LD H,B 9330 B9 CP C 9331 41 LD B,C 9332 C40694 CALL NZ,ERR 9335 1B DEC DE 9336 7A LD A,D 9337 B3 OR E 9338 C24D93 JP NZ,RTEST12 933B 3A0393 LD A,(BKADRS) 933E C610 ADD A,10 9340 FE20 CP 20;******** 9342 CAD293 JP Z,END 9345 320393 LD (BKADRS),A 9348 D39C OUT (9C),A 934A 110080 LD DE,$8000 934D 23 RTEST12:INC HL 934E 7C LD A,H 934F B5 OR L 9350 C25793 JP NZ,RTEST2 9353 CD3C94 CALL ASTDP 9356 0C INC C 9357 7C RTEST2:LD A,H 9358 E67F AND 7F 935A 44 LD B,H 935B 67 LD H,A 935C 7E LD A,(HL) 935D E5 PUSH HL 935E D5 PUSH DE 935F 2A0493 LD HL,(CSBF) 9362 1600 LD D,00 9364 5F LD E,A 9365 19 ADD HL,DE 9366 220493 LD (CSBF),HL 9369 D1 POP DE 936A E1 POP HL 936B 60 LD H,B 936C BD CP L 936D 45 LD B,L 936E C40694 CALL NZ,ERR 9371 1B DEC DE 9372 7A LD A,D 9373 B3 OR E 9374 C28993 JP NZ,RTEST22 9377 3A0393 LD A,(BKADRS) 937A C610 ADD A,10 937C FE20 CP 20;******* 937E CAD293 JP Z,END 9381 320393 LD (BKADRS),A 9384 D39C OUT (9C),A 9386 110080 LD DE,$8000 9389 23 RTEST22:INC HL 938A 7C LD A,H 938B B5 OR L 938C C29393 JP NZ,RTEST3 938F CD3C94 CALL ASTDP 9392 0C INC C 9393 7C RTEST3:LD A,H 9394 E67F AND 7F 9396 44 LD B,H 9397 67 LD H,A 9398 7E LD A,(HL) 9399 E5 PUSH HL 939A D5 PUSH DE 939B 2A0493 LD HL,(CSBF) 939E 1600 LD D,00 93A0 5F LD E,A 93A1 19 ADD HL,DE 93A2 220493 LD (CSBF),HL 93A5 D1 POP DE 93A6 E1 POP HL 93A7 60 LD H,B 93A8 BC CP H 93A9 44 LD B,H 93AA C40694 CALL NZ,ERR 93AD 1B DEC DE 93AE 7A LD A,D 93AF B3 OR E 93B0 C2C593 JP NZ,RTEST32 93B3 3A0393 LD A,(BKADRS) 93B6 C610 ADD A,10 93B8 FE20 CP 20;******* 93BA CAD293 JP Z,END 93BD 320393 LD (BKADRS),A 93C0 D39C OUT (9C),A 93C2 110080 LD DE,$8000 93C5 23 RTEST32:INC HL 93C6 7C LD A,H 93C7 B5 OR L 93C8 C21B93 JP NZ,RTEST1 93CB CD3C94 CALL ASTDP 93CE 0C INC C 93CF C31B93 JP RTEST1 93D2 AF END:XOR A 93D3 D39C OUT (9C),A 93D5 E5 PUSH HL 93D6 11FD93 LD DE,ENDT 93D9 3E0D LD A,0D 93DB CD1810 CALL DEDP 93DE 61 LD H,C 93DF CD4B10 CALL HXDP2 93E2 E1 POP HL 93E3 CD4E10 CALL HXDP4 93E6 CD7B10 CALL CRLF2 93E9 110294 LD DE,CST 93EC 3E0D LD A,0D 93EE CD1810 CALL DEDP 93F1 2A0493 LD HL,(CSBF) 93F4 CD4E10 CALL HXDP4 93F7 CD7B10 CALL CRLF2 93FA C33310 JP REENT ; 93FD 45 ENDT:DB 45;E 93FE 4E DB 4E;N 93FF 44 DB 44;D 9400 3D DB 3D;= 9401 0D DB 0D ; 9402 43 CST:DB 43;C 9403 53 DB 53;S 9404 3D DB 3D;= 9405 0D DB 0D ; 9406 E5 ERR:PUSH HL 9407 D5 PUSH DE 9408 C5 PUSH BC 9409 F5 PUSH AF 940A E5 PUSH HL 940B AF XOR A 940C D39C OUT (9C),A 940E 61 LD H,C 940F CD4B10 CALL HXDP2 9412 E1 POP HL 9413 CD4E10 CALL HXDP4 9416 CD3910 CALL SPDP 9419 60 LD H,B 941A CD4B10 CALL HXDP2 941D 3E2D LD A,2D 941F CD1510 CALL ADISP 9422 F1 POP AF 9423 67 LD H,A 9424 CD4B10 CALL HXDP2 9427 113794 LD DE,ERRT 942A AF XOR A 942B CD1810 CALL DEDP 942E C1 POP BC 942F D1 POP DE 9430 E1 POP HL 9431 3A0393 ERR2:LD A,(BKADRS) 9434 D39C OUT (9C),A 9436 C9 RET ; 9437 20 ERRT:DB 20 9438 45 DB 45;E 9439 52 DB 52;R 943A 52 DB 52;R 943B 0D DB 0D ; 943C D39C ASTDP:OUT (9C),A 943E 3E2A LD A,2A 9440 CD1510 CALL ADISP 9443 C33194 JP ERR2 ; ADISP =1015 ASTDP =943C BKADRS =9303 CRLF2 =107B CSBF =9304 CST =9402 DEDP =1018 END =93D2 ENDT =93FD ERR =9406 ERR2 =9431 ERRT =9437 HXDP2 =104B HXDP4 =104E REENT =1033 RTEST =9306 RTEST1 =931B RTEST12 =934D RTEST2 =9357 RTEST22 =9389 RTEST3 =9393 RTEST32 =93C5 SPDP =1039 |
あ。
またばかなことをやっておりました。
うーん。
ちょっと脳細胞のリフレッシュが必要かも(今更無理か)。
27C512のテスト対象はアドレス8000〜FFFFのバンク10のみですから、アドレス9340、937C、93B8のところでADD A,10のあとでCP 20なんてやっていないで、ADD A,10も取ってしまっていきなりJP ENDとすればよかったのでした(10に10を加算すれば20になるに決っていますから!)。
そうそう。
937C、93B8がもとの1mromt2.lstとアドレスが変わっているのには理由があります。
今回のテストをしてみて4mromt2、1mromt2のプログラムミスに気が付いて直したからです。
チェックサム値が正しく算出されていませんでした。
データの照合は3箇所で行なっているのにチェックサムの加算は最初の1箇所でしか行なっていませんでした。
今回はそこを直したために1mromt2.lstとアドレスがずれています。
下は512romt2.binを実行したときのログです。
>/ld 512romt2.bin,9300 loading 512ROMT2.BIN ...0146(326)bytes loaded,from 9300 to 9445 >jp 9300 END=00FFFF CS=2A2B >/exit 0000 00C3 - リモート接続を終了しました logfile closed at Fri Oct 06 20:47:29 2017 |
エラーブレークすることなく正常に終了しました。
CRT/VGAIF+KEYIF+SDCARDIFボードの製作[総合第103回]
2017.10.9upload
前へ
次へ
ホームページトップへ戻る