2017.10.5
前へ
次へ
ホームページトップへ戻る

マイコン独立大作戦
CRT/VGAIF+KEYIF+SDCARDIFボードの製作

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
WindowsパソコンにUSB接続して使う現行方式はそれなりに便利ではありますが、ときとしてWindows
のしがらみから開放されて、小さいながらも独立した一個のパソコンとして機能したいと思うこともあります。
昔はそれが普通のことだったのですが、安価なCRTディスプレイが生産中止となって久しい今日ではそれ
は叶わぬことと諦めていたのですが…。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[総合第99回]


●27C4001のテスト

27C4001のテストは「ROM/RAM/RTCボードの製作」[第31回]でしています。
そのときは旧ROM/RAM/RTCボードを使って、バンクROMアドレスに対しては各バンクの先頭1バイトのみにデータを書いて、それを読み出すという簡易型のテストでした。
今回はせっかく4M/1MROM WRITERを作りましたので、全メモリアドレスにテストデータをびっしり書き込んでテストすることにしました。

下が今回作った27C4001テストプログラム4mromt2のアセンブルリストです。

2017/9/29  8:32  4mromt2.txt
END=9423
              ;;; 4M WRITER ROM read test
              ; 17/9/28 9/29
              ;
                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 C4E493     CALL NZ,ERR
9335 1B         DEC DE
9336 7A         LD A,D
9337 B3         OR E
9338 C24B93     JP NZ,RTEST12
933B 3A0393     LD A,(BKADRS)
933E C610       ADD A,10
9340 CAB093     JP Z,END
9343 320393     LD (BKADRS),A
9346 D39C       OUT (9C),A
9348 110080     LD DE,$8000
934B 23       RTEST12:INC HL
934C 7C         LD A,H
934D B5         OR L
934E C25593     JP NZ,RTEST2
9351 CD1A94     CALL ASTDP
9354 0C         INC C
9355 7C       RTEST2:LD A,H
9356 E67F       AND 7F
9358 44         LD B,H
9359 67         LD H,A
935A 7E         LD A,(HL)
935B 60         LD H,B
935C BD         CP L
935D 45         LD B,L
935E C4E493     CALL NZ,ERR
9361 1B         DEC DE
9362 7A         LD A,D
9363 B3         OR E
9364 C27793     JP NZ,RTEST22
9367 3A0393     LD A,(BKADRS)
936A C610       ADD A,10
936C CAB093     JP Z,END
936F 320393     LD (BKADRS),A
9372 D39C       OUT (9C),A
9374 110080     LD DE,$8000
9377 23       RTEST22:INC HL
9378 7C         LD A,H
9379 B5         OR L
937A C28193     JP NZ,RTEST3
937D CD1A94     CALL ASTDP
9380 0C         INC C
9381 7C       RTEST3:LD A,H
9382 E67F       AND 7F
9384 44         LD B,H
9385 67         LD H,A
9386 7E         LD A,(HL)
9387 60         LD H,B
9388 BC         CP H
9389 44         LD B,H
938A C4E493     CALL NZ,ERR
938D 1B         DEC DE
938E 7A         LD A,D
938F B3         OR E
9390 C2A393     JP NZ,RTEST32
9393 3A0393     LD A,(BKADRS)
9396 C610       ADD A,10
9398 CAB093     JP Z,END
939B 320393     LD (BKADRS),A
939E D39C       OUT (9C),A
93A0 110080     LD DE,$8000
93A3 23       RTEST32:INC HL
93A4 7C         LD A,H
93A5 B5         OR L
93A6 C21B93     JP NZ,RTEST1
93A9 CD1A94     CALL ASTDP
93AC 0C         INC C
93AD C31B93     JP RTEST1
93B0 AF       END:XOR A
93B1 D39C       OUT (9C),A
93B3 E5         PUSH HL
93B4 11DB93     LD DE,ENDT
93B7 3E0D       LD A,0D
93B9 CD1810     CALL DEDP
93BC 61         LD H,C
93BD CD4B10     CALL HXDP2
93C0 E1         POP HL
93C1 CD4E10     CALL HXDP4
93C4 CD7B10     CALL CRLF2
93C7 11E093     LD DE,CST
93CA 3E0D           LD A,0D
93CC CD1810         CALL DEDP
93CF 2A0493     LD HL,(CSBF)
93D2 CD4E10     CALL HXDP4
93D5 CD7B10     CALL CRLF2
93D8 C33310     JP REENT
              ;
93DB 45       ENDT:DB 45;E
93DC 4E         DB 4E;N
93DD 44         DB 44;D
93DE 3D         DB 3D;=
93DF 0D         DB 0D
              ;
93E0 43       CST:DB 43;C
93E1 53         DB 53;S
93E2 3D         DB 3D;=
93E3 0D         DB 0D
              ;
93E4 E5       ERR:PUSH HL
93E5 D5         PUSH DE
93E6 C5         PUSH BC
93E7 F5         PUSH AF
93E8 E5         PUSH HL
93E9 AF         XOR A
93EA D39C       OUT (9C),A
93EC 61         LD H,C
93ED CD4B10     CALL HXDP2
93F0 E1         POP HL
93F1 CD4E10         CALL HXDP4
93F4 CD3910         CALL SPDP
93F7 60             LD H,B
93F8 CD4B10         CALL HXDP2
93FB 3E2D           LD A,2D
93FD CD1510         CALL ADISP
9400 F1             POP AF
9401 67             LD H,A
9402 CD4B10         CALL HXDP2
9405 111594         LD DE,ERRT
9408 AF             XOR A
9409 CD1810         CALL DEDP
940C C1         POP BC
940D D1         POP DE
940E E1         POP HL
940F 3A0393   ERR2:LD A,(BKADRS)
9412 D39C       OUT (9C),A
9414 C9             RET
              ;
9415 20       ERRT:DB 20
9416 45         DB 45;E
9417 52         DB 52;R
9418 52         DB 52;R
9419 0D         DB 0D
              ;
941A D39C     ASTDP:OUT (9C),A
941C 3E2A       LD A,2A
941E CD1510     CALL ADISP
9421 C30F94     JP ERR2
              ;
ADISP        =1015  ASTDP        =941A  BKADRS       =9303  
CRLF2        =107B  CSBF         =9304  CST          =93E0  
DEDP         =1018  END          =93B0  ENDT         =93DB  
ERR          =93E4  ERR2         =940F  ERRT         =9415  
HXDP2        =104B  HXDP4        =104E  REENT        =1033  
RTEST        =9306  RTEST1       =931B  RTEST12      =934B  
RTEST2       =9355  RTEST22      =9377  RTEST3       =9381  
RTEST32      =93A3  SPDP         =1039  

テスト対象の27C4001にはND80Z3.5のシステムプログラムを書込済みのROMを使います。
システムプログラムはアドレス00000〜07FFF(バンク00)に書いてあります。
その後ろのアドレス08000(バンク10)〜7FFFF(バンクF0)にテストデータを追加書込みします。
書き込むテストデータは増設RAM628512のテストで使ったものと同じです。
ただし00000〜07FFF(バンク00)にはシステムプログラムが書かれていてテストデータではありませんから、テストは08000(バンク10)から行います。
増設RAMのテストではエラー処理のところがちょいと手抜きになっていましたが、今回はエラーが発生したら、そのアドレスとエラーデータを表示するようにしました。
またエラーなしで終了した場合に何も表示しないとちょっと不安になりますので、「ちゃんとチェックしたぞ!」というメッセージとして、64KB書き込みごとに*を表示するとともに、終了時に終了アドレスを表示するようにしました。
下は4mromt2.binを実行したときのログです。

logfile nd80zlog\10011543.txt open

ND80ZVに接続しました
0001 0000 - z
1000 00C3 - 
*** nd80z3 basic ****
ndwr2h.bin loaded,from E23F to E535
>/ld 4mromt2.bin,9300
loading 4MROMT2.BIN ...0124(292)bytes loaded,from 9300 to 9423
>jp 9300
*******END=07FFFF
CS=5553
>/exit
0000 00C3 - 
リモート接続を終了しました
logfile closed at Sun Oct 01 16:03:23 2017

エラー表示することなく終了しましたから、これでテストOKということなのですが、プログラムにバグがあって、エラーがあってもそれを検出できなくて終了してしまっているかもしれません。
そこでわざとエラーを発生させてみることにしました。
RAMのテストの場合にはRAMをわざと書き換えるという方法でテストすることができます。
ROMも同じようにわざと間違えたデータを書き込めばよいのですが、RAMのように簡単にはできません。
もう一度ROMを書き直さなければなりません。
そこで簡単な方法としてテストプログラムの側を書き直すことにしました。
下はそのようにしてテストしたときのログです。

>cm 9319
9319 00-01
931A 80-
>jp 9300
008001 00-01 ERR
008002 02-80 ERR
008003 80-00 ERR
008004 00-04 ERR
008005 05-80 ERR
008006 80-00 ERR
008007 00-07 ERR
008008 08-80 ERR
008009 80-00 ERR
00800A 00-0A ERR
00800B 0B-80 ERR
00800C 80-00 ERR
00800D 00-0D ERR
00800E 0E-80 ERR
00800F 80-00 ERR
008010 00-10 ERR

プログラムではテストデータとアドレスが一致するようにDEレジスタとHLレジスタにともに初期値として8000をセットして、それをカウントアップさせながら照合することでテストを行ないます。
HLに初期値として8000ではなくて8001をセットしてスタートした結果が上のログです。
当然全データが不一致になりますから最初から連続してエラーが表示されました。
これによってエラーチェックは正常に機能していることが確認できました。

CRT/VGAIF+KEYIF+SDCARDIFボードの製作[総合第99回]
2017.10.5upload

前へ
次へ
ホームページトップへ戻る