home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
EMULATOR
/
UNIX
/
CAIN2
/
Z80TEST.Z
< prev
Wrap
Text File
|
2000-06-30
|
2KB
|
198 lines
; Z80TEST
; tests the validity of a z80 emulation
;
; First we test a few flags to make sure that the emulator works enough
; to test itself. Basically we want to make sure we can test the flags
; and jump to 0 if the processor does something unexpected. If it passes
; all of our tests then the OK string is printed and the program ends.
; if there is a problem the program should end just after the problem
; instructions. This allows us to examine the debugger output at that
; point without having to painstakingly follow the code all the way.
org 100h
; test some flags flags first
ld a, 0ffh
add a, a
jp nc, 0
ld a, 1
add a, a
jp c, 0
xor a, a
jp nz, 0
inc a
jp z, 0
dec a
jp m, 0
dec a
jp p, 0
ld a, 7fh
inc a
jp po, 0
and 0ffh
jp pe, 0
; adc and add
add_test1 macro reg
ld reg, 34h
ld a, 21h
add a, reg
jp c, 0
cp 55h
jp nz, 0
scf
ld a, 21h
adc a, reg
jp c, 0
cp 56h
jp nz, 0
adc a, a
jp po, 0
adc a, a
jp nc, 0
ld a, 0fh
ld reg, 55h
and reg
cp 5
jp nz, 0
endm
ld hl, test_var
add_test1 (hl)
ld ix, test_var - 7
add_test1 (ix+7)
ld iy, test_var - 7
add_test1 (iy+7)
add_test1 b
add_test1 c
add_test1 d
add_test1 e
add_test1 h
add_test1 l
add_test2 macro reg
ld hl, 1234h
ld reg, 4321h
add hl, reg
jp c, 0
ld a, l
cp h
jp nz, 0
cp 55h
jp nz, 0
scf
adc hl, hl
ld a, l
dec a
cp h
jp nz, 0
cp 0aah
jp nz, 0
endm
add_test2 bc
add_test2 de
add_test2 sp
add_test3 macro reg
ld ix, 1234h
ld reg, 4321h
add ix, reg
jp c, 0
push ix
pop hl
ld a, l
cp h
jp nz, 0
cp 55h
jp nz, 0
add ix, ix
push ix
pop hl
ld a, l
cp h
jp nz, 0
cp 0aah
jp nz, 0
ld iy, 1234h
ld reg, 4321h
add iy, reg
jp c, 0
push iy
pop hl
ld a, l
cp h
jp nz, 0
cp 55h
jp nz, 0
add iy, iy
push iy
pop hl
ld a, l
cp h
jp nz, 0
cp 0aah
jp nz, 0
endm
add_test3 bc
add_test3 de
add_test3 sp
ld a, 21h
add a, 34h
jp c, 0
cp 55h
jp nz, 0
scf
ld a, 21h
adc a, 34h
jp c, 0
cp 56h
jp nz, 0
adc a, a
jp po, 0
adc a, a
jp nc, 0
ld a, 0fh
and 55h
cp 5
jp nz, 0
; that finishes the As!
ld_imm macro reg
ld reg, 34h
ld a, 34h
cp reg
jp nz, 0
endm
ld_imm a
ld_imm b
ld_imm c
ld_imm d
ld_imm e
ld_imm h
ld_imm l
ld_imm (hl)
ld de, ok
ld c, 9
call 5
jp 0
ok:
db 'OK', 0dh, 0ah, '$'
test_var:
ds 100h