📄 kaihuan.asm
字号:
SPLK #9307H,COMCON ;A72FH
;***************************************************
SPLK #0FFFFH,EVIFRA
SPLK #0FFFFH,EVIFRB
SPLK #0FFFFH,EVIFRC
SPLK #0201H,EVIMRA ;PDPINT
SPLK #0001H,EVIMRB ;T2PERINT,T2COMINT
SPLK #0004H,EVIMRC ;CAP3INT 0000H
LDP #DP_0
LACC IMR
OR #0EH
SACL IMR ;OPEN INT 2,3,4 ---T1 TIMER UF,PDPINT
LDP #DP_EV
SPLK #1200H,T2CON ;9204H
SPLK #1240H,T2CON ;9244H
LDP #PAGE_VAR
B GDI
READKEY1:
BIT SWITCH_ST,10 ;IF STOP?
BCND GDI, TC ;IF STOP,FLAG0.0=1
LACC FLAG0 ;IF STOP,FLAG0.1=1
OR #02H
SACL FLAG0
GDI:
BIT FLAG0,14
BCND STOP,TC
BIT FLAG0,15
BCND LOOP,TC
B READKEY
;---------------------------- READ FGD----------------------------------------
LOOP:
LDP #PAGE_VAR
MAR *,AR1
LAR AR1,FREL
LAR AR0,FGD
CMPR 1 ;FREL<FGD?
BCND LOOP1,TC
CMPR 0 ;FREL=FGD?
BCND LOOP2,TC
CALL DOWN
B LOOP2
LOOP1:
CALL UP
LOOP2:
B READKEY
STOP:
LDP #PAGE_VAR
MAR *,AR1
LAR AR1,FREL
LAR AR0,#1
CMPR 1
BCND STOP1,TC
CALL DOWN
B READKEY
STOP1:
LDP #DP_EV
SPLK #00H,COMCON
LDP #DP_0
LACC IMR
AND #00H; #0FFFDH
SACL IMR ;OPEN INT 2 ---T1 TIMER UF,PDPINT
SPLK #0FFFH,ACTR
LDP #PAGE_VAR
LACC FLAG0
AND #0FFFCH
SACL FLAG0
B READKEY
;******************THIS IS THE END OF PROGRAM.***************************
UP:
MAR *, AR1
LAR AR1,CNT
LAR AR0, #0400H
CMPR 1
BCND END1, TC
LACC FREL
ADD #1
SACL FREL
SPLK #0,CNT
CALL VMTAB
CALL SDELTA
END1:
RET
DOWN:
MAR *, AR1
LAR AR1, CNT
LAR AR0, #0400H ; TCON <= 100
CMPR 1
BCND END2, TC
LACC FREL
SUB #1
SACL FREL
SPLK #0,CNT
CALL VMTAB
CALL SDELTA
END2:
RET
;---------------------- ERROR JUDGE--------------------------
ERROUT:
LDP #PAGE_VAR
SPLK #9,FL
LACC SWITCH_ST,16
SFL
BCND ERR7, NC ;D7=0 ERR
SFL
BCND ERR6, NC ;D6=0
SFL
BCND ERR5,NC ;D5=0
SFL
BCND ERR4,NC ;D4=0
SFL
BCND ERR3,NC ;D3=0
SFL
BCND ERR2,NC ;D2=0
SFL
BCND ERR1, NC ;D1=0
SFL
BCND ERR0, NC ;D0=0
SPLK #08,FL
LDP #PAGE_VAR
SPLK #0FFFFH, GPR0
OUT GPR0, LED1
OUT GPR0, LED2
B ERR8
ERR0:
SPLK #0, FL
B ERR8
ERR1:
SPLK #01,FL
B ERR8
ERR2:
SPLK #02,FL
B ERR8
ERR3:
SPLK #03,FL
B ERR8
ERR4:
SPLK #04, FL
B ERR8
ERR5:
SPLK #05, FL
B ERR8
ERR6:
SPLK #06, FL
B ERR8
ERR7:
SPLK #07, FL
ERR8:
RET
DISPWR:
LDP #PAGE_VAR
LACC WR_R0
LAR AR1,#WR_R1
MAR *,AR1
RPT #6
ADD *+
RPT #2
SFR
SACL WR_R
ABS
SACL WR_A
SPLK #10,DIVIDE
LACC WR_A
RPT #15
SUBC DIVIDE
SACH ONE ;ONE
SACL TEN
LACC TEN
RPT #15
SUBC DIVIDE
SACH TEN ;TEN
SACL HUNDRED
LACC HUNDRED
RPT #15
SUBC DIVIDE
SACH HUNDRED ;HUNDRED
SACL THOUSAND ;THOUSAND
LACC TEN
SPLK #STABLE1,GPR0
ADD GPR0
TBLR VALUEL
LACC ONE
ADD GPR0
TBLR VALUEH
LACC VALUEH,8
OR VALUEL
SACL GPR0
OUT GPR0,LED1
LACC THOUSAND
SPLK #STABLE2,GPR0
ADD GPR0
TBLR VALUEL
LACC HUNDRED
ADD GPR0
TBLR VALUEH
LACC VALUEH,8
OR VALUEL
SACL GPR0
BIT FLAG0,12
BCND DISPWR2,TC
LAR AR0,THOUSAND
MAR *,AR1
LAR AR1,#0
CMPR 0
BCND DISPWR1,TC
AND #0FFFBH
SACL GPR0
B DISPWR2
DISPWR1:
OR #000FFH
AND #0FFFBH
SACL GPR0
DISPWR2:
OUT GPR0,LED2
RET
;=====================================================
DISFGD: LDP #PAGE_VAR
LACC FGD
SPLK #10, DIVIDE ;TEN
RPT #15
SUBC DIVIDE
SACH ONE
SACL TEN
LACC TEN
SPLK #STABLE2,GPR0
ADD GPR0
TBLR VALUEL
LACC ONE
ADD GPR0
TBLR VALUEH
LACC VALUEH,8
OR VALUEL
SACL GPR0
OUT GPR0,LED2
RET
DISFREL: LDP #PAGE_VAR
LACC FREL
SPLK #10, DIVIDE ;TEN
RPT #15
SUBC DIVIDE
SACH ONE
SACL TEN
LDP #PAGE_VAR
LACC TEN
SPLK #STABLE1,GPR0
ADD GPR0
TBLR VALUEL
LACC ONE
ADD GPR0
TBLR VALUEH
LACC VALUEH,8
OR VALUEL
SACL GPR0
OUT GPR0,LED1
RET
;-----------------------------ERROR DISPLAY-----------------------------
DISERR:
LDP #PAGE_VAR
LACC FL
SPLK #STABLE2,GPR0
ADD GPR0
TBLR GPR1
LACC GPR1,8
OR #00FFH
SACL GPR1
OUT GPR1,LED2
OUT GPR1,LED2
RET
;===============================================================
PHANTOM: KICK_DOG ;RESETS WD COUNTER
RET; B PHANTOM
;****************SEARCH DELTA********************RY
SDELTA:
LDP #PAGE_VAR
LACC FREL,3
SACL GPR0
LT GPR0
SPLK #5033,GPR1
MPY GPR1
PAC
SACH DELTA
RET
VMTAB:
LDP #PAGE_VAR
LT FREL
MPY UDMAX
PAC
SACL UDG
SACL REAL
MPY UQMAX
PAC
SACL UQG
SACL IMAG
CALL R_PT
LACC P_VALUE
SACL USG
LACC P_THITA
SACL UDQTHITA
RET
;=============R/P TRANSFORMATION =============
R_PT:
SETC SXM
LDP #PAGE_VAR
LACC REAL
ABS
SACL BUFFER0
BCND R_PT6,EQ ;IF REAL=0 GO R_PT6
LACC IMAG
ABS
SACL BUFFER1
BCND R_PT9,EQ ;IF IMAG=0 GO R_PT9
SUB BUFFER0
BCND R_PT2,EQ ;IF IMAG=REAL GO R_PT2
BCND R_PT1,GT ;IF IMAG>REAL GO R_PT1
LACC BUFFER1,10 ; IMAG<REAL
RPT #15
SUBC BUFFER0
SACL P_GPRP
ADD #SQRTTAB
TBLR BUFFER2
LT BUFFER0
MPY BUFFER2
PAC
SACH BUFFER2,2
LACC P_GPRP
ADD #ATANTAB
TBLR BUFFER3
B R_PT3
R_PT1: ;IMAG>REAL
LACC BUFFER0,10
RPT #15
SUBC BUFFER1
SACL P_GPRP
ADD #SQRTTAB
TBLR BUFFER2
LT BUFFER1
MPY BUFFER2
PAC
SACH BUFFER2,2
LACC P_GPRP
ADD #ATANTAB
TBLR BUFFER3
LACC #DEGREE90
SUB BUFFER3
SACL BUFFER3
B R_PT3
R_PT2: ;IMAG=REAL
SPLK #DEGREE45,BUFFER3
LT BUFFER0
SPLK #SQRT2,BUFFER1
MPY BUFFER1
PAC
SACH BUFFER2,2
R_PT3:
LACC REAL
BCND R_PT5,GT ;REAL>0 GO R_PT5
LACC IMAG ;REAL<0
BCND R_PT4,LT ;REAL<0 & IMAG<0 GO R_PT4
LACC #DEGREE180 ;REAL<0 & IMAG>0
SUB BUFFER3
SACL BUFFER3
B R_PTZ
R_PT4: ;REAL<0 & IMAG<0
LACC #DEGREE180
ADD BUFFER3
SACL BUFFER3
B R_PTZ
R_PT5:
LACC IMAG
BCND R_PTZ,GT ;REAL>0 & IMAG>0 GO R_PTZ
LACC #DEGREE360 ;REAL>0 & IMAG<0 GO R_PTZ
SUB BUFFER3
SACL BUFFER3
B R_PTZ
R_PT6:
LACC IMAG
BCND R_PT8,EQ ;REAL=0 & IMAG=0 GO R_PT8
BCND R_PT7,LT ;REAL=0 & IMAG<0 GO R_PT7
ABS
SACL BUFFER2 ;REAL=0 & IMAG>0
SPLK #DEGREE90,BUFFER3
B R_PTZ
R_PT7:
ABS
SACL BUFFER2
SPLK #DEGREE270,BUFFER3
B R_PTZ
R_PT8: ;REAL=0 & IMAG=0
SPLK #0,BUFFER2
SPLK #0,BUFFER3
B R_PTZ
R_PT9: ;IMAG=0
LACC REAL
BCND R_PTA,LT ;IF IMAG=0 & REAL<0 GO R_PTA
SACL BUFFER2 ;IMAG=0 & REAL>0
SPLK #DEGREE0,BUFFER3
B R_PTZ
R_PTA:
ABS
SACL BUFFER2
SPLK #DEGREE180,BUFFER3
R_PTZ:
LACC BUFFER2
SACL P_VALUE
LACC BUFFER3
SACL P_THITA
RET
EVCINT:
MAR *,AR7
SST #ST1,*-
SST #ST0,*-
SACH *-
SACL *-
SAR AR0,*-
LDP #DP_0
LACC IMR
SACL *-
SPH *-
SPL *-
MPY #1
SPL *-
SPLK #02H,IMR
CLRC INTM
SPLK #02H,IMR
SETC SXM ;EXTEND SIGNAL
LDP #DP_EV
LACL EVIVRC
LACL EVIMRC
AND #000BH ;CLOSE CAPTURE3
SACL EVIMRC
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -