mirror of
https://github.com/TomHarte/CLK.git
synced 2024-12-02 02:49:28 +00:00
104 lines
2.5 KiB
NASM
104 lines
2.5 KiB
NASM
; Macros for defining the test vectors.
|
|
;
|
|
; Copyright (C) 2012 Patrik Rak (patrik@raxoft.cz)
|
|
;
|
|
; This source code is released under the MIT license, see included license.txt.
|
|
|
|
macro db8 b7,b6,b5,b4,b3,b2,b1,b0
|
|
db (b7<<7)|(b6<<6)|(b5<<5)|(b4<<4)|(b3<<3)|(b2<<2)|(b1<<1)|b0
|
|
endm
|
|
|
|
macro ddbe n
|
|
db (n>>24)&0xff
|
|
db (n>>16)&0xff
|
|
db (n>>8)&0xff
|
|
db n&0xff
|
|
endm
|
|
|
|
macro inst op1,op2,op3,op4,tail
|
|
; Unfortunately, elseifidn doesn't seem to work properly.
|
|
ifidn op4,stop
|
|
db op1,op2,op3,tail,0
|
|
else
|
|
ifidn op3,stop
|
|
db op1,op2,tail,op4,0
|
|
else
|
|
ifidn op2,stop
|
|
db op1,tail,op3,op4,0
|
|
else
|
|
db op1,op2,op3,op4,tail
|
|
endif
|
|
endif
|
|
endif
|
|
endm
|
|
|
|
macro flags sn,s,zn,z,f5n,f5,hcn,hc,f3n,f3,pvn,pv,nn,n,cn,c
|
|
if maskflags
|
|
db8 s,z,f5,hc,f3,pv,n,c
|
|
else
|
|
db 0xff
|
|
endif
|
|
endm
|
|
|
|
.veccount := 0
|
|
|
|
macro vec op1,op2,op3,op4,memn,mem,an,a,fn,f,bcn,bc,den,de,hln,hl,ixn,ix,iyn,iy,spn,sp
|
|
|
|
if postccf
|
|
|
|
if ( .@veccount % 3 ) == 0
|
|
inst op1,op2,op3,op4,tail
|
|
.@areg := 0
|
|
else
|
|
db op1,op2,op3,op4,0
|
|
.@areg := .@areg | a
|
|
endif
|
|
|
|
else
|
|
db op1,op2,op3,op4
|
|
endif
|
|
|
|
db f
|
|
|
|
if postccf & ( ( .veccount % 3 ) == 2 )
|
|
db a | ( ( ~ .@areg ) & 0x28 )
|
|
else
|
|
db a
|
|
endif
|
|
|
|
dw bc,de,hl,ix,iy
|
|
dw mem
|
|
dw sp
|
|
|
|
.@veccount := .@veccount+1
|
|
|
|
endm
|
|
|
|
macro crcs allflagsn,allflags,alln,all,docflagsn,docflags,docn,doc,ccfn,ccf,mptrn,mptr
|
|
if postccf
|
|
ddbe ccf
|
|
elseif memptr
|
|
ddbe mptr
|
|
else
|
|
if maskflags
|
|
if onlyflags
|
|
ddbe docflags
|
|
else
|
|
ddbe doc
|
|
endif
|
|
else
|
|
if onlyflags
|
|
ddbe allflags
|
|
else
|
|
ddbe all
|
|
endif
|
|
endif
|
|
endif
|
|
endm
|
|
|
|
macro name n
|
|
dz n
|
|
endm
|
|
|
|
; EOF ;
|