📄 sysdef.inc
字号:
shlmib_loop:
bc r3, cflag
rlc addr
djz pr1
jmp shlmib_loop
.ENDIF
;ROM
.IF access = 1
ERROR "Can't write to ROM data"
.ENDIF
; IO
.IF access = 2
ior addr
mov pr0, a
shlmib_loop:
bc r3, cflag
rlc pr0
djz pr1
jmp shlmib_loop
mov a, pr0
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
mov pr1+1, a
shlmib_loop:
bc r3, cflag
rlc pr1+1
djz pr1
jmp shlmib_loop
mov a, pr1+1
call WriteIND
.ENDIF
shlmib_end:
.ENDM
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.MACRO LSHMIW addr,imm,access
.LOCAL shlmiw_clear
.LOCAL shlmiw_end
.LOCAL shlmiw_loop
.LOCAL shlmiw_read
.LOCAL shlmiw_write1
.LOCAL shlmiw_write2
mov a, @.B1.imm
mov pr1, a
mov pr1, pr1
jbs r3, zflag
jmp shlmiw_clear
mov a, @.B0.imm
mov pr1, a
mov pr1, pr1
jbc r3, zflag
jmp shlmiw_end
;RAM
.IF access = 0
shlmiw_loop:
bc r3, cflag
rlc addr
rlc addr+1
djz pr1
jmp shlmiw_loop
jmp shlmiw_end
shlmiw_clear:
clr addr
clr addr+1
.ENDIF
;ROM
.IF access = 1
ERROR "Can't write to ROM data"
.ENDIF
; IO
.IF access = 2
ior addr
mov pr1+2, a
ior addr+1
mov pr1+3, a
shlmiw_loop:
bc r3, cflag
rlc pr1+2
rlc pr1+3
djz pr1
jmp shlmiw_loop
mov a, pr1+2
iow addr
mov a, pr1+3
iow addr+1
jmp shlmiw_end
shlmiw_clear:
mov a, @0
iow addr
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
mov pr1+2, a
inc pr0
jbs r3, zflag
jmp shlmiw_read
inc pr0+1
jbc r3, zflag
inc pr0+2
shlmiw_read:
call ReadIND
mov pr1+3, a
shlmiw_loop:
bc r3, cflag
rlc pr1+2
rlc pr1+3
djz pr1
jmp shlmiw_loop
mov a, pr1+3
call WriteIND
mov pr0, pr0
jbs r3, zflag
jmp shlmiw_write1
mov pr0+1, pr0+1
jbc r3, zflag
dec pr0+2
dec pr0+1
shlmiw_write1:
dec pr0
mov a, pr1+2
call WriteIND
jmp shlmiw_end
shlmiw_clear:
mov a, @.B0.(addr)
mov pr0, a
mov a, @.B1.(addr)
mov pr0+1, a
mov a, @.B2.(addr)
mov pr0+2, a
mov a, @0
call WriteIND
inc pr0
jbs r3, zflag
jmp shlmiw_write2
inc pr0+1
jnc r3, zflag
inc pr0+2
shlmiw_write2:
call WriteIND
.ENDIF
shlmiw_end:
.ENDM
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.MACRO LSHMID addr,imm,access
.LOCAL shlmid_clear
.LOCAL shlmid_end
.LOCAL shlmid_loop
.LOCAL shlmid_read1
.LOCAL shlmid_read2
.LOCAL shlmid_read3
.LOCAL shlmid_write1
.LOCAL shlmid_write2
.LOCAL shlmid_write3
.LOCAL shlmid_clear1
.LOCAL shlmid_clear2
.LOCAL shlmid_clear3
mov a, @.B3.imm
mov pr1, a
mov pr1, pr1
jbs r3, zflag
jmp shlmid_clear
mov a, @.B2.imm
mov pr1, a
mov pr1, pr1
jbs r3, zflag
jmp shlmid_clear
mov a, @.B1.imm
mov pr1, a
mov pr1, pr1
jbs r3, zflag
jmp shlmid_clear
mov a, @.B0.imm
mov pr1, a
mov pr1, pr1
jbc r3, zflag
jmp shlmid_end
;RAM
.IF access = 0
shlmid_loop:
bc r3, cflag
rlc addr
rlc addr+1
rlc addr+2
rlc addr+3
djz pr1
jmp shlmid_loop
jmp shlmid_end
shlmid_clear:
clr addr
clr addr+1
clr addr+2
clr addr+3
.ENDIF
;ROM
.IF access = 1
ERROR "Can't write to ROM data"
.ENDIF
; IO
.IF access = 2
ior addr
mov pr1+1, a
ior addr+1
mov pr1+2, a
ior addr+2
mov pr1+3, a
ior addr+3
mov pr1+4, a
shlmid_loop:
bc r3, cflag
rlc pr1+1
rlc pr1+2
rlc pr1+3
rlc pr1+4
djz pr1
jmp shlmid_loop
mov a, pr1+1
iow addr
mov a, pr1+2
iow addr+1
mov a, pr1+3
iow addr+2
mov a, pr1+4
iow addr+3
jmp shlmid_end
shlmid_clear:
mov a, @0
iow addr
iow addr+1
iow addr+2
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
mov pr1+1, a
inc pr0
jbs r3, zflag
jmp shlmid_read1
inc pr0+1
jbc r3, zflag
inc pr0+2
shlmid_read1:
call ReadIND
mov pr1+2, a
inc pr0
jbs r3, zflag
jmp shlmid_read2
inc pr0+1
jbc r3, zflag
inc pr0+2
shlmid_read2:
call ReadIND
mov pr1+3, a
inc pr0
jbs r3, zflag
jmp shlmid_read3
inc pr0+1
jbc r3, zflag
inc pr0+2
shlmid_read3:
call ReadIND
mov pr1+4, a
shlmid_loop:
bc r3, cflag
rlc pr1+1
rlc pr1+2
rlc pr1+3
rlc pr1+4
djz pr1
jmp shlmid_loop
mov a, pr1+4
call WriteIND
mov pr0, pr0
jbs r3, zflag
jmp shlmid_write1
mov pr0+1, pr0+1
jbc r3, zflag
dec pr0+2
dec pr0+1
shlmid_write1:
dec pr0
mov a, pr1+3
call WriteIND
jbs r3, zflag
jmp shlmid_write2
mov pr0+1, pr0+1
jbc r3, zflag
dec pr0+2
dec pr0+1
shlmid_write2:
dec pr0
mov a, pr1+2
call WriteIND
jbs r3, zflag
jmp shlmid_write3
mov pr0+1, pr0+1
jbc r3, zflag
dec pr0+2
dec pr0+1
shlmid_write3:
dec pr0
mov a, pr1+1
call WriteIND
jmp shlmid_end
shlmid_clear:
mov a, @.B0.(addr)
mov pr0, a
mov a, @.B1.(addr)
mov pr0+1, a
mov a, @.B2.(addr)
mov pr0+2, a
mov a, @0
call WriteIND
inc pr0
jbs r3, zflag
jmp shlmid_clear1
inc pr0+1
jbc r3, zflag
inc pr0+2
shlmid_clear1:
call WriteIND
inc pr0
jbs r3, zflag
jmp shlmid_clear2
inc pr0+1
jbc r3, zflag
inc pr0+2
shlmid_clear2:
call WriteIND
inc pr0
jbs r3, zflag
jmp shlmid_clear3
inc pr0+1
jbc r3, zflag
inc pr0+2
shlmid_clear3:
call WriteIND
.ENDIF
shlmid_end:
.ENDM
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.MACRO RSHIMIB addr,imm,access
.LOCAL rshimib_end
.LOCAL rshimib_loop
mov a, @imm
mov pr1, a
mov pr1, pr1
jbc r3, zflag
jmp rshimib_end
;RAM
.IF access = 0
rshimib_loop:
bc r3, cflag
jbc addr, 7
bs r3, cflag
rrc addr
djz pr1
jmp rshimib_loop
.ENDIF
;ROM
.IF access = 1
ERROR "Can't write to ROM data"
.ENDIF
; IO
.IF access = 2
ior addr
mov pr0, a
rshimib_loop:
bc r3, cflag
jbc addr, 7
bs r3, cflag
rrc pr0
djz pr1
jmp rshimib_loop
mov a, pr0
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
mov pr1+1, a
rshimib_loop:
bc r3, cflag
jbc addr, 7
bs r3, cflag
rrc pr0
djz pr1
jmp rshimib_loop
mov a, pr1+1
call WriteIND
.ENDIF
rshimib_end:
.ENDM
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.MACRO RSHIMIW addr,imm,access
.LOCAL rshimiw_clear
.LOCAL rshimiw_loop
.LOCAL rshimiw_end
.LOCAL rshimiw_symbol
.LOCAL rshimiw_write
.LOCAL rshimiw_read
.LOCAL rshimiw_read1
.LOCAL rshimiw_clear1
.LOCAL rshimiw_clear2
mov a, @.B1.imm
mov pr1, a
mov pr1, pr1
jbs r3, zflag
jmp rshimiw_clear
mov a, @.B0.imm
mov pr1, a
mov pr1, pr1
jbc r3, zflag
jmp rshimiw_end
;RAM
.IF access = 0
rshimiw_loop:
bc r3, cflag
jbc addr+1, 7
bs r3, cflag
rrc addr+1
rrc addr
djz pr1
jmp rshimiw_loop
jmp rshimiw_end
rshimiw_clear:
jbc addr+1, 7
jmp rshimiw_symbol
clr addr
clr addr+1
jmp rshimiw_end
rshimiw_symbol:
mov a, @0xff
mov addr, a
mov addr+1, a
.ENDIF
;ROM
.IF access = 1
ERROR "Can't write to ROM data"
.ENDIF
; IO
.IF access = 2
ior addr
mov pr1+1, a
ior addr+1
mov pr1+2, a
rshimiw_loop:
bc r3, cflag
jbc pr1+2, 7
bs r3, cflag
rrc pr1+2
rrc pr1+1
djz pr1
jmp rshimiw_loop
mov a, pr1+1
iow addr
mov a, pr1+2
iow addr+1
jmp rshimiw_end
rshimiw_clear:
ior addr+1
mov pr1+2, a
jbc pr1+2, 7
jmp rshimiw_symbol
mov a, @0
iow addr
iow addr+1
jmp rshimiw_end
rshimiw_symbol:
mov a, @0xff
iow addr
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
mov pr1+1, a
inc pr0
jbs r3, zflag
jmp rshimiw_read
inc pr0+1
jbc r3,zflag
inc pr0+2
rshimiw_read:
call ReadIND
mov pr1+2, a
rshimiw_loop:
bc r3, cflag
jbc pr1+2, 7
bs r3, cflag
rrc pr1+2
rrc pr1+1
djz pr1
jmp rshimiw_loop
mov a, pr1+2
call WriteIND
mov pr0, pr0
jbs r3, zflag
jmp rshimiw_write
mov pr0+1, pr0+1
jbc r3, zflag
dec pr0+2
rshimiw_write:
dec pr0
mov a, pr1+1
call WriteIND
jmp rshimiw_end
rshimiw_clear:
mov a, @B0.(addr)
mov pr0, a
mov a, @B1.(addr)
mov pr0+1, a
mov a, @B2.(addr)
mov pr0+2, a
inc pr0
jbs r3, zflag
jmp rshimiw_read1
inc pr0+1
jbc r3, zflag
inc pr0+2
rshimiw_read1:
call ReadIND
mov pr1+1, a
jbc pr1+1, 7
jmp rshimiw_symbol
mov a, @0
call WriteIND
mov pr0, pr0
jbs r3, zflag
jmp rshimiw_clear1
mov pr0+1, pr0+1
jbc r3, zflag
dec pr0+2
dec pr0+1
rshimiw_clear1:
dec pr0
call WriteIND
jmp rshimiw_end
rshimiw_symbol:
mov a, @0xff
call WriteIND
mov pr0, pr0
jbs r3, zflag
jmp rshimiw_clear2
mov pr0+1, pr0+1
jbc r3, zflag
dec pr0+2
dec pr0+1
rshimiw_clear2:
dec pr0
call WriteIND
.ENDIF
rshimiw_end:
.ENDM
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.MACRO RSHIMID addr,imm,access
.LOCAL rshimid_clear
.LOCAL rshimid_clear1
.LOCAL rshimid_clear2
.LOCAL rshimid_clear3
.LOCAL rshimid_clear4
.LOCAL rshimid_end
.LOCAL rshimid_loop
.LOCAL rshimid_symbol
.LOCAL rshimid_symbol1
.LOCAL rshimid_symbol2
.LOCAL rshimid_symbol3
.LOCAL rshimid_read1
.LOCAL rshimid_read2
.LOCAL rshimid_read3
.LOCAL rshimid_write1
.LOCAL rshimid_write2
.LOCAL rshimid_write3
mov a, @.B3.imm
mov pr1, a
mov pr1, pr1
jbs r3, zflag
jmp rshimid_clear
mov a, @.B2.imm
mov pr1, a
mov pr1, pr1
jbs r3, zflag
jmp rshimid_clear
mov a, @.B1.imm
mov pr1, a
mov pr1, pr1
jbs r3, zflag
jmp rshimid_clear
mov a, @.B0.imm
mov pr1, a
mov pr1, pr1
jbc r3, zflag
jmp rshimid_end
;RAM
.IF access = 0
rshimid_loop:
bc r3, cflag
jbc addr+3, 7
bs r3, cflag
rrc addr+3
rrc addr+2
rrc addr+1
rrc addr
djz pr1
jmp rshimid_loop
jmp rshimid_end
rshimid_clear:
jbc addr+3, 7
jmp rshimid_symbol
clr addr
clr addr+1
clr addr+2
clr addr+3
jmp rshimid_end
rshimid_symbol:
mov a, @0xff
mov addr, a
mov addr+1, a
mov addr+2, a
mov addr+3, a
.ENDIF
;ROM
.IF access = 1
ERROR "Can't write to ROM data"
.ENDIF
; IO
.IF access = 2
ior addr
mov pr1+1, a
ior addr+1
mov pr1+2, a
ior addr+2
mov pr1+3, a
ior addr+3
mov pr1+4, a
rshimid_loop:
bc r3, cflag
jbc pr1+4, 7
bs r3, cflag
rrc pr1+4
rrc pr1+3
rrc pr1+2
rrc pr1+1
djz pr1
jmp rshimid_loop
mov a, pr1+1
iow addr
mov a, pr1+2
iow addr+1
mov a, pr1+3
iow addr+2
mov a, pr1+4
iow addr+3
jmp rshimid_end
rshimid_clear:
ior addr+3
mov pr1+2, a
jbc pr1+2, 7
jmp rshimid_symbol
mov a, @0
iow addr
iow addr+1
iow addr+2
iow addr+3
jmp rshimid_end
rshimid_symbol:
mov a, @0xff
iow addr
iow addr+1
iow addr+2
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
mov pr1+1, a
inc pr0
jbs r3, zflag
jmp rshimid_read1
inc pr0+1
jbc r3, zflag
rshimid_read1:
call ReadIND
mov pr1+2, a
inc pr0
jbs r3, zflag
jmp rshimid_read2
inc pr0+1
jbc r3, zflag
rshimid_read2:
call ReadIND
mov pr1+3, a
inc pr0
jbs r3, zflag
jmp rshimid_read3
inc pr0+1
jbc r3, zflag
rshimid_read3:
call ReadIND
mov pr1+4, a
rshimid_loop:
bc r3, cflag
jbc pr1+2, 7
bs r3, cflag
rrc pr1+4
rrc pr1+3
rrc pr1+2
rrc pr1+1
djz pr1
jmp rshimid_loop
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -