📄 svgamacr.inc
字号:
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;define MACROs for R/W to the W9968's CRs
;
wrCR MACRO CR,H,L
MOV SubAddress,#CR
MOV dataH,H
MOV dataL,L
CALL wrCR
ENDM
;;
rdCR MACRO CR,H,L
MOV SubAddress,#CR
CALL rdCR
MOV H,dataH
MOV L,dataL
ENDM
;
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
writeSDRAM_L MACRO src
MOV R1,#CR0E_DramDataPortRegL ;BA+1CH
MOV A,src
MOVX @R1,A ;write low byte SDRAM data
ENDM
;
writeSDRAM_H MACRO src
MOV R1,#CR0E_DramDataPortRegH ;BA+1DH
MOV A,src
MOVX @R1,A ;write high byte SDRAM data
ENDM
;
;;
readSDRAM_L MACRO dst
MOV R1,#CR0E_DramDataPortRegL ;BA+1CH
MOVX A,@R1 ;read low byte SDRAM data11
MOV dst,A
ENDM
;
readSDRAM_H MACRO dst
MOV R1,#CR0E_DramDataPortRegH ;BA+1DH
MOVX A,@R1 ;read high byte SDRAM data
MOV dst,A
ENDM
;
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
; if d2d1>=b2b1, C=0, otherwise, C=1
Large MACRO d1,d2,b1,b2
PUSH 01h
CLR C
MOV A,d1
MOV R1,b1
SUBB A,R1
JC $mknc1
$mknc0:
JNZ $mknc1
MOV A,d2
MOV R1,b2
SUBB A,R1
$mknc1:
POP 01h
ENDM
;==============================================================================
; d2 d1 d0 = d2 d1 * d0
MUL_2B MACRO d2,d1,d0
PUSH ACC
PUSh B
PUSH 01h
MOV A,d2
MOV B,d0
MUL AB
MOV d2,B
MOV B,d1
MOV d1,A
MOV A,d0
MUL AB
MOV d0,#0
MOV R1,A
Adder_3B d2,d1,d0,#0,B,R1
POP 01h
POP B
POP ACC
ENDM
;==============================================================================
; d3 d2 d1 d0= d3 d2 d1 * d0
MUL_3B MACRO d3,d2,d1,d0
PUSH ACC
PUSh B
PUSH 02h
MOV R2,d0
MUL_2B d3,d2,R2
MOV A,d1
MOV B,d0
MUL AB
MOV d0,#0
MOV d1,R2
MOV R2,A
Adder_4B d3,d2,d1,d0,#00,#00,B,R2
POP 02h
POP B
POP ACC
ENDM
;==============================================================================
; dd1 dd0/dD =dd1 dd0 + dR
DIV_2B MACRO dd1,dd0,dD,dR
MOV d1,dd1
MOV d0,dd0
MOV D,dD
CALL DIV_2B
MOV dd1,d1
MOV dd0,d0
MOV dR,R
ENDM
;==============================================================================
;data2 data1 data0 < dd1 dd0 dR, then C=1
Larger_3B MACRO dd1,dd0,dR
MOV d1,dd1
MOV d0,dd0
MOV R,dR
CALL Compare_value
ENDM
;==============================================================================
; a1 a0 =a1 a0 + b1 b0
Adder_2B MACRO a1,a0,b1,b0
PUSH A
MOV A,a0
ADD A,b0
MOV a0,A
JNC $mknc0
INC a1 ;carry to a1
$mknc0:
MOV A,a1
ADD A,b1
MOV a1,A
POP A
ENDM
;==============================================================================
;a2 a1 a0 = a2 a1 a0 + b2 b1 b0
Adder_3B MACRO a2,a1,a0,b2,b1,b0
PUSH A
MOV A,a0
ADD A,b0
MOV a0,A
JNC $mknc0
INC a1 ;carry to a1,a2
MOV A,a1
JNZ $mknc0
INC a2
$mknc0:
MOV A,a1
ADD A,b1
MOV a1,A
JNC $mknc1
INC a2 ;carry to a2
$mknc1:
MOV A,a2
ADD A,b2
MOV a2,A
POP A
ENDM
;==============================================================================
;a3 a2 a1 a0 = a3 a2 a1 a0 + b3 b2 b1 b0
Adder_4B MACRO a3,a2,a1,a0,b3,b2,b1,b0
PUSH A
MOV A,a0
ADD A,b0
MOV a0,A
JNC $mkn0
INC a1 ;carry to a1,a2,a3
MOV A,a1
JNZ $mkn0
INC a2
MOV A,a2
JNZ $mkn0
INC a3
$mkn0:
MOV A,a1
ADD A,b1
MOV a1,A
JNC $mkn1
INC a2 ;carry to a2,a3
MOV A,a2
JNZ $mkn1
INC a3
$mkn1:
MOV A,a2
ADD A,b2
MOV a2,A
JNC $mkn2
INC a3 ;carry to a3
$mkn2:
MOV A,a3
ADD A,b3
MOV a3,A
POP A
ENDM
;
;==============================================================================
;a1 a0 = a1 a0 - b1 b0
Dec_2B MACRO a1, a0, b1, b0
CLR C
MOV A,a0
SUBB A,b0
MOV a0,A
MOV A,a1
SUBB A,b1
MOV a1,A
ENDM
;==============================================================================
;a2 a1 a0 = a2 a1 a0 - b2 b1 b0
Dec_3B MACRO a2, a1, a0, b2, b1, b0
PUSH A
Dec_2B a1,a0,b1,b0
MOV A,a2
SUBB A,b2
MOV a2,A
POP A
ENDM
;==============================================================================
;;
Adder_3B_dec MACRO a2,a1,a0,b2,b1,b0
PUSH A
PUSH B
MOV A,a0
ADD A,b0
MOV B,#10
DIV AB
MOV a0,B
JZ $mk1
INC a1
MOV A,a1
MOV B,#10
DIV AB
MOV a1,B
JZ $mk1
INC a2
$mk1:
MOV A,a1
ADD A,b1
MOV B,#10
DIV AB
MOV a1,B
JZ $mk2
INC a2
$mk2:
MOV A,a2
ADD A,b2
MOV B,#10
DIV AB
MOV a2,B
POP B
POP A
ENDM
;
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -