ワンボードマイコンをつくろう!(パソコンの原点はここから始まった)
TK80ソフトコンパチブル!8080、Z80マシン語からBASICまでこれ1台でこなせます
| 当記事は2009年11月から「TTLでCPUをつくろう!」というタイトルの もとにほとんど毎日連載をしてきたものを再編集したものです。 | 2011.7.5 前へ 次へ 目次へ戻る ホームページトップへ戻る | 
| ☆またもやトラブル発生 ND80ZVの説明書作業も大詰めを迎えて、あと一息で販売開始というところまできて、最後の動作確認をしていましたら、おかしなところが出て来てしまいました。 | 
[第98回]
●どうやら05C0でブレイクしているらしい
ディップスイッチをSTEP側にしている状態で、リモート接続プログラムを終了すると、ND80ZVの7セグメントLEDに必ず表示されてしまう05C0xxxxというのは、表示のされかたから考えてみますと、どうもステップ動作(ブレイク動作)の結果表示されたアドレスのようです。
すると、その05C0というアドレスはND80ZVのモニタROMのアドレス、ということになります。
ND80ZVのROMには3つの異なるモニタプログラムが入っています。
そのうちの1番目は、0000〜3FFFの範囲にある、TK80モニタプログラムです。
その次のアドレス0400〜07FFの範囲には、TK80モニタプログラムと同じだけれど、ワークエリアのアドレスだけが83xxではなくて、FFxxになっているモニタプログラムがあります。
そして0800〜0FFFの範囲には、ND80Zモニタプログラムがあります。
ND80ZVのリモート接続動作は、このND80Zモニタプログラムの機能として組み込まれています。
そしてND80Zモニタプログラムは、キーボードや7セグメントLEDに対するアクセスや、プログラム、データのSAVE、LOADのような基本的な動作は、0400〜07FFの”TK80モニタプログラム”のサブルーチンをCALLしています。
●05C0にあるモニタプログラムのルーチン
05C0は、0400〜07FFの範囲にありますから、0400〜に移植された”TK80モニタプログラム”のアドレスです。
その部分のプログラムリストです。
| 
              ;
              ; SEGMENT CONVERT SUB
              ;
05C0 21F4FF   SEGCG:LXI H,DISP
05C3 11F8FF   	LXI D,DIG
05C6 01E905   	LXI B,SEGD
05C9 7E       SEGCG2:MOV A,M
05CA 23       	INX H
05CB E5       	PUSH H
05CC F5       	PUSH PSW
05CD E6F0     	ANI F0
05CF 0F       	RRC
05D0 0F       	RRC
05D1 0F       	RRC
05D2 0F       	RRC
05D3 2600     	MVI H,00
05D5 6F       	MOV L,A
05D6 09       	DAD B
05D7 7E       	MOV A,M
05D8 12       	STAX D
05D9 13       	INX D
05DA F1       	POP PSW
05DB E60F     	ANI 0F
05DD 2600     	MVI H,00
05DF 6F       	MOV L,A
05E0 09       	DAD B
05E1 7E       	MOV A,M
05E2 12       	STAX D
05E3 E1       	POP H
05E4 1C       	INR E
05E5 C2C905   	JNZ SEGCG2
05E8 C9       	RET
 | 
|               ;
              ; REGISTER RESTORE
              ;
05F9 2AE2FF   RESRG:LHLD SSAVE
05FC F9       	SPHL
05FD 2AE0FF   	LHLD PSAVE
0600 E5       	PUSH H
0601 2AE4FF   	LHLD LSAVE
0604 E5       	PUSH H
0605 2AEAFF   	LHLD FSAVE
0608 E5       	PUSH H
0609 2AE8FF   	LHLD CSAVE
060C 4D       	MOV C,L
060D 44       	MOV B,H
060E 2AE6FF   	LHLD ESAVE
0611 EB       	XCHG
0612 F1       	POP PSW
0613 E1       	POP H
0614 FB       	EI
0615 C9       	RET | 
