📄 sysdef.inc
字号:
ior addr+3
add a, @.B3.imm
rlc pr1
jbc pr1, 1
add a, 1
iow addr+3
.ENDIF
;IND
.IF access = 3
mov a, @.B0.(addr)
mov pr0, a
mov a, @.B1.(addr)
mov pr0+1, a
mov a, @.B2.(addr)
mov pr0+2, a
call ReadIND
add a, @.B0.imm
call WriteIND
rlc pr1
inc pr0
jbs r3, zflag
jmp addmid_read1
inc pr0+1
jbc r3, zflag
inc pr0+2
addmid_read1:
call ReadIND
add a, @.B1.imm
rlc pr1
jbc pr1, 1
add a, 1
call WriteIND
jbc r3, zflag
bs pr1, 0
inc pr0
jbs r3, zflag
jmp addmid_read2
inc pr0+1
jbc r3, zflag
inc pr0+2
addmid_read2:
call ReadIND
add a, @.B2.imm
rlc pr1
jbc pr1, 1
add a, 1
call WriteIND
jbc r3, zflag
bs pr1, 0
inc pr0
jbs r3, zflag
jmp addmid_read3
inc pr0+1
jbc r3, zflag
inc pr0+2
addmid_read3:
call ReadIND
add a, @.B3.imm
rlc pr1
jbc pr1, 1
add a, 1
call WriteIND
.ENDIF
.ENDM
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.MACRO SUBMIB addr,imm,access
;RAM
.IF access = 0
mov a, @imm
sub addr, a
.ENDIF
;ROM
.IF access = 1
ERROR "Can't write to ROM data"
.ENDIF
; IO
.IF access = 2
ior addr
sub a, @imm
sub a, @0
iow addr
.ENDIF
;IND
.IF access = 3
mov a, @.B0.(addr)
mov pr0, a
mov a, @.B1.(addr)
mov pr0+1, a
mov a, @.B2.(addr)
mov pr0+2, a
call ReadIND
sub a, @imm
sub a, @0
call WriteIND
.ENDIF
.ENDM
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.MACRO SUBMIW addr,imm,access
.LOCAL submiw_read
; RAM
.IF access = 0
mov a, @.B0.imm
sub addr, a
jbs r3, cflag
dec addr+1
mov a, @.B1.imm
sub addr+1, a
.ENDIF
;ROM
.IF access = 1
ERROR "Can't write to ROM data"
.ENDIF
; IO
.IF access = 2
ior addr
sub a, @.B0.imm
rlc pr1
sub a, @0
iow addr
ior addr+1
sub a, @.B1.imm
jbs pr1, 0
add a, @1
sub a, @0
iow addr+1
.ENDIF
;IND
.IF access = 3
mov a, @.B0.(addr)
mov pr0, a
mov a, @.B1.(addr)
mov pr0+1, a
call ReadIND
sub a, @.B0.imm
rlc pr1
sub a, @0
call WriteIND
inc pr0
jbs r3, zflag
jmp submiw_read
inc pr0+1
jbc r3, zflag
inc pr0+2
submiw_read:
sub a, @.B1.imm
jbs pr1, 0
add a, @1
sub a, @0
call WriteIND
.ENDIF
.ENDM
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.MACRO SUBMID addr,imm,access
.LOCAL SUBMID_BYTE2
.LOCAL SUBMID_BYTE3
.LOCAL submid_read1
.LOCAL submid_read2
.LOCAL submid_read3
;RAM
.IF access = 0
mov A, @.B0.imm
sub addr, a
rlc pr1
mov a, @.B1.imm
sub addr+1, a
jbc pr1,0
jmp SUBMID_BYTE2
mov addr+1, addr+1
jbc r3,zflag
bc r3,cflag
dec addr+1
SUBMID_BYTE2:
rlc pr1
mov a, @.B2.imm
sub addr+2, a
jbc pr1,0
jmp SUBMID_BYTE3
mov addr+2, addr+2
jbc r3,zflag
bc r3,cflag
dec addr+2
SUBMID_BYTE3:
jbs r3, cflag
dec addr+3
mov a, @.B3.imm
sub addr+3, a
.ENDIF
;ROM
.IF access = 1
ERROR "Can't write to ROM data"
.ENDIF
; IO
.IF access = 2
ior addr
sub a, @.B0.imm
rlc pr1
sub a, @0
iow addr
ior addr+1
sub a, @.B1.imm
rlc pr1
jbs pr1, 1
add a, @0xFF
iow addr+1
jbs r3, cflag
bc pr1, 0
ior addr+2
sub a, @.B2.imm
rlc pr1
jbc pr1, 1
add a, @0xFF
iow addr+2
jbs r3, cflag
bc pr1, 0
ior addr+3
sub a, @.B3.imm
rlc pr1
jbc pr1, 1
add a, @0xFF
iow addr+3
.ENDIF
;IND
.IF access = 3
mov a, @.B0.(addr)
mov pr0, a
mov a, @.B1.(addr)
mov pr0+1, a
mov a, @.B2.(addr)
mov pr0+2, a
call ReadIND
sub a, @.B0.imm
rlc pr1
sub a, @0
call WriteIND
inc pr0
jbs r3, zflag
jmp submid_read1
inc pr0+1
jnc r3, zflag
inc pr0+2
submid_read1:
call ReadIND
sub a, @.B1.imm
rlc pr1
jbs pr1, 1
add a, @0xFF
call WriteIND
jbs r3, cflag
bc pr1, 0
inc pr0
jbs r3, zflag
jmp submid_read2
inc pr0+1
jnc r3, zflag
inc pr0+2
submid_read2:
call ReadIND
sub a, @.B2.imm
rlc pr1
jbs pr1, 1
add a, @0xFF
call WriteIND
jbs r3, cflag
bc pr1, 0
inc pr0
jbs r3, zflag
jmp submid_read3
inc pr0+1
jnc r3, zflag
inc pr0+2
submid_read3:
call ReadIND
sub a, @.B3.imm
rlc pr1
jbs pr1, 1
add a, @0xFF
call WriteIND
.ENDIF
.ENDM
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.MACRO ORMIB addr,imm,access
;RAM
.IF access = 0
mov a, @imm
or addr, a
.ENDIF
;ROM
.IF access = 1
ERROR "Can't write to ROM data"
.ENDIF
; IO
.IF access = 2
ior addr
or a, @imm
iow addr
.ENDIF
;IND
.IF access = 3
mov a, @.B0.(addr)
mov pr0, a
mov a, @.B1.(addr)
mov pr0+1, a
mov a, @.B2.(addr)
mov pr0+2, a
call ReadIND
or a, @imm
call WriteIND
.ENDIF
.ENDM
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.MACRO ORMIW addr,imm,access
.LOCAL ormiw_read
;RAM
.IF access = 0
mov a, @.B0.imm
or addr, a
mov a, @.HIGH.imm
or addr+1, a
.ENDIF
;ROM
.IF access = 1
ERROR "Can't write to ROM data"
.ENDIF
; IO
.IF access = 2
ior addr
or a, @.B0.imm
iow addr
ior addr+1
or a, @.HIGH.imm
iow addr+1
.ENDIF
;IND
.IF access = 3
mov a, @.B0.(addr)
mov pr0, a
mov a, @.B1.(addr)
mov pr0+1, a
mov a, @.B2.(addr)
mov pr0+2, a
call ReadIND
or a, @.B0.imm
call WriteIND
inc pr0
jbs r3, zflag
jmp ormiw_read
inc pr0+1
jbc r3, zflag
inc pr0+2
ormiw_read:
call ReadIND
or a, @.HIGH.imm
call WriteIND
.ENDIF
.ENDM
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.MACRO ORMID addr,imm,access
.LOCAL ormid_read1
.LOCAL ormid_read2
.LOCAL ormid_read3
;RAM
.IF access = 0
mov a, @.B0.imm
or addr, a
mov a, @.B1.imm
or addr+1, a
mov a, @.B2.imm
or addr+2, a
mov a, @.B3.imm
or addr+3, a
.ENDIF
;ROM
.IF access = 1
ERROR "Can't write to ROM data"
.ENDIF
; IO
.IF access = 2
ior addr
or a, @.B0.imm
iow addr
ior addr+1
or a, @.B1.imm
iow addr+1
ior addr+2
or a, @.B2.imm
iow addr+2
ior addr+3
or a, @.B3.imm
iow addr+3
.ENDIF
;IND
.IF access = 3
mov a, @.B0.(addr)
mov pr0, a
mov a, @.B1.(addr)
mov pr0+1, a
mov a, @.B2.(addr)
mov pr0+2, a
call ReadIND
or a, @.B0.imm
call WriteIND
inc pr0
jbs r3, zflag
jmp ormid_read1
inc pr0+1
jbc r3, zflag
inc pr0+2
ormid_read1:
call ReadIND
or a, @.B1.imm
call WriteIND
inc pr0
jbs r3, zflag
jmp ormid_read2
inc pr0+1
jbc r3, zflag
inc pr0+2
ormid_read2:
call ReadIND
or a, @.B2.imm
call WriteIND
inc pr0
jbs r3, zflag
jmp ormid_read3
inc pr0+1
jbc r3, zflag
inc pr0+2
ormid_read3:
call ReadIND
or a, @.B3.imm
call WriteIND
.ENDIF
.ENDM
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.MACRO XORMIB addr,imm,access
;RAM
.IF access = 0
mov a, @imm
xor addr, a
.ENDIF
;ROM
.IF access = 1
ERROR "Can't write to ROM data"
.ENDIF
; IO
.IF access = 2
ior addr
xor a, @imm
iow addr
.ENDIF
;IND
.IF access = 3
mov a, @.B0.(addr)
mov pr0, a
mov a, @.B1.(addr)
mov pr0+1, a
mov a, @.B2.(addr)
mov pr0+2, a
call ReadIND
xor a, @imm
call WriteIND
.ENDIF
.ENDM
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.MACRO XORMIW addr,imm,access
.LOCAL xormiw_read
;RAM
.IF access = 0
mov a, @.B0.imm
xor addr, a
mov a, @.HIGH.imm
xor addr+1, a
.ENDIF
;ROM
.IF access = 1
ERROR "Can't write to ROM data"
.ENDIF
; IO
.IF access = 2
ior addr
xor a, @.B0.imm
iow addr
ior addr+1
xor a, @.HIGH.imm
iow addr+1
.ENDIF
;IND
.IF access = 3
mov a, @.B0.(addr)
mov pr0, a
mov a, @.B1.(addr)
mov pr0+1, a
mov a, @.B2.(addr)
mov pr0+2, a
call ReadIND
xor a, @.B0.imm
call WriteIND
inc pr0
jbs r3, zflag
jmp xormiw_read
inc pr0+1
jbc r3, zflag
inc pr0+2
xormiw_read:
call ReadIND
xor a, @.HIGH.imm
call WriteIND
.ENDIF
.ENDM
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.MACRO XORMID addr,imm,access
.LOCAL xormid_read1
.LOCAL xormid_read2
.LOCAL xormid_read3
;RAM
.IF access = 0
mov a, @.B0.imm
xor addr, a
mov a, @.B1.imm
xor addr+1, a
mov a, @.B2.imm
xor addr+2, a
mov a, @.B3.imm
xor addr+3, a
.ENDIF
;ROM
.IF access = 1
ERROR "Can't write to ROM data"
.ENDIF
; IO
.IF access = 2
ior addr
xor a, @.B0.imm
iow addr
ior addr+1
xor a, @.B1.imm
iow addr+1
ior addr+2
xor a, @.B2.imm
iow addr+2
ior addr+3
xor a, @.B3.imm
iow addr+3
.ENDIF
;IND
.IF access = 3
mov a, @.B0.(addr)
mov pr0, a
mov a, @.B1.(addr)
mov pr0+1, a
mov a, @.B2.(addr)
mov pr0+2, a
call ReadIND
xor a, @.B0.imm
call WriteIND
inc pr0
jbs r3, zflag
jmp xormid_read1
inc pr0+1
jbc r3, zflag
inc pr0+2
xormid_read1:
call ReadIND
xor a, @.B1.imm
call WriteIND
inc pr0
jbs r3, zflag
jmp xormid_read2
inc pr0+1
jbc r3, zflag
inc pr0+2
xormid_read2:
call ReadIND
xor a, @.B2.imm
call WriteIND
inc pr0
jbs r3, zflag
jmp xormid_read3
inc pr0+1
jbc r3, zflag
inc pr0+2
xormid_read3:
call ReadIND
xor a, @.B3.imm
call WriteIND
.ENDIF
.ENDM
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.MACRO ANDMIB addr,imm,access
;RAM
.IF access = 0
mov a, @imm
and addr, a
.ENDIF
;ROM
.IF access = 1
ERROR "Can't write to ROM data"
.ENDIF
; IO
.IF access = 2
ior addr
and a, @imm
iow addr
.ENDIF
;IND
.IF access = 3
mov a, @.B0.(addr)
mov pr0, a
mov a, @.B1.(addr)
mov pr0+1, a
mov a, @.B2.(addr)
mov pr0+2, a
call ReadIND
and a, @imm
call WriteIND
.ENDIF
.ENDM
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.MACRO ANDMIW addr,imm,access
.LOCAL andmiw_read
;RAM
.IF access = 0
mov a, @.B0.imm
and addr, a
mov a, @.HIGH.imm
and addr+1, a
.ENDIF
;ROM
.IF access = 1
ERROR "Can't write to ROM data"
.ENDIF
; IO
.IF access = 2
ior addr
and a, @.B0.imm
iow addr
ior addr+1
and a, @.HIGH.imm
iow addr+1
.ENDIF
;IND
.IF access = 3
mov a, @.B0.(addr)
mov pr0, a
mov a, @.B1.(addr)
mov pr0+1, a
mov a, @.B2.(addr)
mov pr0+2, a
call ReadIND
and a, @.B0.imm
call WriteIND
inc pr0
jbs r3, zflag
jmp andmiw_read
inc pr0+1
jbc r3, zflag
inc pr0+2
andmiw_read:
call ReadIND
and a, @.HIGH.imm
call WriteIND
.ENDIF
.ENDM
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.MACRO ANDMID addr,imm,access
.LOCAL andmiw_read1
.LOCAL andmiw_read2
.LOCAL andmiw_read3
;RAM
.IF access = 0
mov a, @.B0.imm
and addr, a
mov a, @.B1.imm
and addr+1, a
mov a, @.B2.imm
and addr+2, a
mov a, @.B3.imm
and addr+3, a
.ENDIF
;ROM
.IF access = 1
ERROR "Can't write to ROM data"
.ENDIF
; IO
.IF access = 2
ior addr
and a, @.B0.imm
iow addr
ior addr+1
and a, @.B1.imm
iow addr+1
ior addr+2
and a, @.B2.imm
iow addr+2
ior addr+3
and a, @.B3.imm
iow addr+3
.ENDIF
;IND
.IF access = 3
mov a, @.B0.(addr)
mov pr0, a
mov a, @.B1.(addr)
mov pr0+1, a
mov a, @.B2.(addr)
mov pr0+2, a
call ReadIND
and a, @.B0.imm
call WriteIND
inc pr0
jbs r3, zflag
jmp andmiw_read1
inc pr0+1
jbc r3,zflag
inc pr0+2
andmiw_read1:
call ReadIND
and a, @.B1.imm
call WriteIND
inc pr0
jbs r3, zflag
jmp andmiw_read2
inc pr0+1
jbc r3,zflag
inc pr0+2
andmiw_read2:
call ReadIND
and a, @.B2.imm
call WriteIND
inc pr0
jbs r3, zflag
jmp andmiw_read3
inc pr0+1
jbc r3,zflag
inc pr0+2
andmiw_read3:
call ReadIND
and a, @.B3.imm
call WriteIND
.ENDIF
.ENDM
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.MACRO LSHMIB addr,imm,access
.LOCAL shlmib_end
.LOCAL shlmib_loop
mov a, @imm
mov pr1, a
mov pr1, pr1
jbc r3, zflag
jmp shlmib_end
;RAM
.IF access = 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -