Z8S180の回路図をまとめてみました。
汎用ロジックを使用したSPI接続でのSDCARD読み書き、PCA9554を使用したI2C回路、および、ROMとして今回はAT28C64B、RAMはHM678127を使用しました。
回路が作成できましたら、確認用ソフトで動作確認を行っていきます。
まずは、ROMから行います。
HALTに接続したLEDが点灯します。
; Z8S180 rom check
; Z8S180 cpu
; rom 0000h -- 7fffh
; External clock 16MHz
; assemblers ASxxxx and ASlink V5.10
; file name rom_test.asm
; $ asz80 -l -s -o rom_test.asm
; $ aslink -i ron_test
; win10 ROM writer TL866(2)PLUS rom_test.ihx
;
;
.z180
.area TEST(ABS)
.org 0x0000
start:
jp main
.org 0x0100
main:
halt
.end
RS232C関連の通信確認をします。
A-CHを使用します。
通信速度は、38400bps、8ビット ノンパリティ 1ストップビット
押されたキーをエコーバックします。
; Z8S180 serial communication test (A-CH)
;
; Z8S180 cpu
; rom 0000h -- 7fffh
; External clock 16MHz
; assemblers ASxxxx and ASlink V5.10
; file name com_test.asm
; $ asz80 -l -s -o com_test.asm
; $ aslink -i com_test
; win10 ROM writer TL866(2)PLUS com_test.ihx
;
;
.z180
.area TEST(ABS)
TDR0 .equ 0x06
RDR0 .equ 0x08
STAT0 .equ 0x04
CNTLA0 .equ 0x00
CNTLB0 .equ 0x02
.org 0x0000
jp start
.org 0x100
start:
ld a,0x64 ;Receiver Enable,Transmitter Enable
out0 (CNTLA0),a ;8N1(8bit non-parity 1stop bit)
ld a,0x07 ;external clock
out0 (CNTLB0),a ;38400bps * 16 (614.4KHz CKAo in)
com_in: in0 a,(STAT0)
rlca
jr nc,com_in
in0 d,(RDR0)
com_out:in0 a,(STAT0)
bit 1,a
jr z,com_out
out0 (TDR0),d
jr com_in
RAMの確認をします。
キーinされたデータを、いったん0x8000番地のメモリエリアに保存し、0x8000番地の内容をRS232C経由で書きだします。つまり、0x8000番地経由のエコーバックです。
; Z8S180 ram test (A-CH)
;
; Z8S180 cpu
; rom 00000h -- 7ffffh
; ram 20000h -- 3ffffh
; External clock 16MHz
; assemblers ASxxxx and ASlink V5.10
; file name ram_test.asm
; $ asz80 -l -s -o ram_test.asm
; $ aslink -i ram_test
; win10 ROM writer TL866(2)PLUS ram_test.ihx
;
.z180
.area TEST(ABS)
TDR0 .equ 0x06
RDR0 .equ 0x08
STAT0 .equ 0x04
CNTLA0 .equ 0x00
CNTLB0 .equ 0x02
CBR .equ 0x38 ;setting reg
BBR .equ 0x39
CBAR .equ 0x3a
ram .equ 0x20 ;ram address 0x20000
cbar_set .equ 0x88 ;CBAR setting address 0x8000
temp_addr .equ 0x8000 ;temprary address
.org 0x0000
jp start
.org 0x100
start:
ld a,cbar_set ;ram 0x8000 to 0xffff
out0 (CBAR),a
ld a,ram
out0 (BBR),a
out0 (CBR),a
ld hl,temp_addr ;temprary address 0x8000 setting
ld a,0x64 ;Receiver Enable,Transmitter Enable
out0 (CNTLA0),a ;8N1(8bit non-parity 1stop bit)
ld a,0x07 ;external clock
out0 (CNTLB0),a ;38400bps * 16 (614.4KHz CKAo in)
com_in: in0 a,(STAT0)
rlca
jr nc,com_in
in0 a,(RDR0)
ld (hl),a ;temprary address write
com_out:in0 a,(STAT0)
bit 1,a
jr z,com_out
ld a,(hl) ;temprary address read
out0 (TDR0),a
jr com_in
ここまでくれば、ROM、RAMは正常なので、過去に上げているモニタ等を書き込みしてみましょう。