📄 main.asm
字号:
LDD 0,Y
STD 0,X
INX
INX
INY
INY
LDAA #32
STAA FCMD
LDAA #128
STAA FSTAT
LDAB TSTAT
BITB #48
BNE OUT1
DEC BUF3
BNE PROGRAM
BRCLR FSTAT,#CCIF,* ;abs = F47F
OUT1 LDAA CCRCOP
TFR A,CCR
LDAA #42
BRCLR SCI0SR1,#128,* ;abs = F48B
STAA SCI0DRL
LBRA FHEAD
*
*INPUT 1 ADDR,IN THE BUF0 &BUF1
*
FIN1ADR BSR FBYTE
BVS FIN1AD1
STAA BUF0
BSR FBYTE
BVS FIN1AD1
STAA BUF1
LDX BUF0
FIN1AD1 RTS
*
*INPUT A BYTE
*
FBYTE BSR FINHEX
BVS FBYTEND
ASLA
ASLA
ASLA
ASLA
TAB
BSR FINHEX
BVS FBYTEND
ABA
FBYTEND RTS
*
FINHEX BRCLR SCI0SR1,#$20,*
LDAA SCI0DRL
CMPA #48
BCS FNOTHEX
CMPA #57
BHI FINHEXA
SUBA #48
RTS
*
FINHEXA CMPA #65
BCS FNOTHEX
CMPA #70
BHI FNOTHEX
SUBA #55
RTS
*
FNOTHEX ORCC #2
RTS
FEND EQU *
*
*E COMMAND ERASE FLASH ON PAGE $3E AND $3F
*
EHEAD LDAB #32
STAB BUF0
LDAB PPAGE
PSHB
LDX #FlashSTART
BESCTLP LDAA #0
STAA FCNFG
LDAB #48
STAB FSTAT
LDAB #62
STAB PPAGE
BRCLR FSTAT,#CBEIF,*
LDY #65535
STY 0,X
LDAB #64
STAB FCMD
LDAB #CBEIF
STAB FSTAT
LDAB FSTAT
BITB #48
BNE BOUT1
LEAX 512,X
DEC BUF0
BNE BESCTLP
BRCLR FSTAT,#CBEIF,* ;abs = F514
BRCLR FSTAT,#CCIF,*
BOUT1 LDAB #48
STAB FSTAT
LDAB #24
STAB BUF0
LDX #FlashRAM
ESCTLP1 LDAA #0
STAA FCNFG
LDAB #48
STAB FSTAT
LDAB #63
STAB PPAGE
BRCLR FSTAT,#CBEIF,*
LDY #65535
STY 0,X
LDAB #64
STAB FCMD
LDAB #128
STAB FSTAT
LDAB FSTAT
BITB #48
BNE BOUT2 ;continue if the privilege violation&addess errflag areclrared
LEAX 512,X
DEC BUF0
BNE ESCTLP1
BRCLR FSTAT,#CBEIF,*
BRCLR FSTAT,CCIF,*
BOUT2 LDAB #48
STAB FSTAT
PULB
STAB PPAGE
RTS
EEND EQU *
*
*Q:ERASE BANKED FLASH
*
QHEAD LDAA PPAGE
CMPA #63
BEQ OBACK
STAA BUF4
ANDA #12
LSRA
LSRA
STAA BUF5
LDAB #3
SUBB BUF5
STAB BUF5
LDAB #32
STAB BUF0
LDX #FlashSTART
OLOOP LDAA BUF5
STAA FCNFG
LDAB #48
STAB FSTAT
LDAB BUF4
STAB PPAGE
BRCLR FSTAT,#CBEIF,*
LDY #65535
STY 0,X
LDAB #64
STAB FCMD
LDAB #CBEIF
STAB FSTAT
LDAB FSTAT
BITB #48
BNE OOUT1
LEAX 512,X
DEC BUF0
BNE OLOOP
BRCLR FSTAT,#CBEIF,*
BRCLR FSTAT,#CCIF,*
OUT1 LDAB #48
STAB FSTAT
OBACK RTS
QEND EUQ *
*
*PRINT SBUROUTINE
*
PRTPP LDX #PPRIN
JSR PDATA
LDX #48
LDAA 0,X
BRA KK
PRTSP LDX #MSG10
JSR PDATA
LDX SPBUF
JMP OUT4H
PRTIX LDX #MSG14
JSR PDATA
LDX MRX
JMP OUT4H
PRTIY LDX #MSG13
JSR PDATA
LDX MRY
LBRA OUT4H
PRTPC LDX #MSG11
JSR PDATA
LDX MRPC
LBRA OUT4H
PRTA LDX #MSG16
JSR PDATA
LDAA MRA
KK LBRA OUT2H
LDX #MSG17
JSR PDATA
LDAA MRB
BRA OUT2H
PRTCC LDX #MSG17
JSR PDATA
LDAA MRCC
LDX #MSG19
*
*CHANG BIN TO ASCii
*
BIASCI STAA BUF0
LDAB #8
OUTBA LDAA 0,X
INX
ASL BUF0
BCS CCFLAG
LDAA #45
CCFLAG JSR OUTCH
JSR OUT1S
DECB
BNE OUTBA
LDAA BUF0
RTS
*
*INPUT 2 ADDR.IN YYYY-XXXX&BUF2,3-BUF0,1
*
IN2ADR BSR IN1ADR
BVS IN1AD1
PSHX
PULY
STY BUF2
LDAA #45
JSR OUTCH
*
*INPUT 1 ADDR.IN XXXX
*
IN1ADR BSR BYTE
BVS BYTEN
STAA BUF0
BSR BYTE
BVS BYTEN
STAA BUF1
LDX BUF0
IN1AD1 RTS
*
*INPUT ONE BYTE
*
BYTE BSR INHEX
BVS BYTEN
ASLA
ASLA
ASLA
ASLA
TAB
BSR INHEX
BVS BYTEN
ABA
BYTEN RTS
INHEX BSR ECHOM ;abs = F6C6
CMPA #48
BCS NOTHEX
CMPA #57
BHI INHEXA
SUBA #48
RTS
*
INHEXA ANDA #223
CMPA #65
BCS NOTHEX
CMPA #70
BHI NOTHEX
SUBA #55
RTS
NOTHEX ORCC #2
RTS
*
*output 4 hex in ix
*
OUT4H PSHX
PULA
BSR OUT2H
PULA
OUT2H PSHA
LSRA
LSRA
LSRA
LSRA
BSR XASCII
PULA
ANDA #15
XASCII ADDA #48
CMPA #57
BLE OUTC
ADDA #7
OUTC BRA OUTCH
*
*print a string following a cr & lf
*
PSRNG BSR PCRLF1
BRA PDATA
PCRLF1 PSHX
LDX #PCRLF
BSR PDATA
PULX
RTS
*
ECHOM TST ECHO
BEQ INCH
BRA INCHE
*
PRINT JSR OUTCH
PDATA LDAA 0,X
INX
CMPA #EOT
BNE PRINT
RTS
*
OUT2S BSR OUT1S
OUT1S LDAA #32
JMP OUTCH
*
*ROUTINES TO DRIVE SCI
*
INCHE BSR INCH
BRA OUTCH
INCH BSR INCHEK
BEQ INCH
LDAA SCIOSR1
RTS
*
INCHEK LDAA #32
BITA SCI0SR1
RTS
*
OUTCH BRCLR SCI0SR1,#128,*+0 ;abs = F6EF
STAA SCI0DRL
RTS
*
*swi software isr
*
SWIE PULA
STAA MRCC
PULX
STX MRB
PULX
STX MRX
PULX
STX MRY
PULX
STX MRPC
STS SPBUF
JSR REGDSP
JSR CLEARBP
JMP NXTCMD
*
*MONITOR COMMAND JUMP TABLE
*
JMPTAB EQU *
FCB CTRLA
FDB ALTA
FCB CTRLB
FDB ALTB
FCB CTRLC
FDB ALTCC
FCB CTRLP
FDB ALTPC
FCB $18
FDB ALTX
FCB $19
FDB ALTY
FCC 'E'
FDB ERSPLSH
FCC 'D'
FDB MDUMP
FCC 'G'
FDB GO
FCC 'H'
FDB HELP
FCC 'L'
FDB DWNLD
FCC 'M'
FDB MEMCHG
FCC 'R'
FDB REGDSP
FCC 'S'
FDB DISSP
FCC 'C'
FDB ALTPP
FCC 'F'
FDB PROGRAMFlash
FCC 'Q'
FDB ERASEBANK
FCC 'B'
FDB BREAKPOINT
FCC 'Z'
FDB CLEARBP
TBLEND EQU *
*
*PRINTABLE MESSAGE STRING DEFINE
*
*
MSGWELCOME
FCB CF,LF
FCC 'Type any key in debug,type h for help'
FCB EOT
MSG1 FCC 'D-BUG V1.1 WANLIANKEJI MAC ALL RIGHT RESERVED'
FCB CR,LF
FCC 'TYPE H FOR HELP'
FCB CF,LF
FCB EOT
MSG2 FCC 'K'
PCRLF FCB CR,LF,EOT
MSG3 FCC '>'
FCB EOT
MSG4 FCB CR,LF
FCC 'WHAT?'
FCB EOT
MSG5 FCC '-'
FCB EOT
MSG10 FCC ' SP='
FCB EOT
MSG11 FCC ' PC='
FCB EOT
MSG13 FCC ' IY='
FCB EOT
MSG14 FCC ' IX='
FCB EOT
MSG16 FCC ' A='
FCB EOT
MAG17 FCC ' B='
FCB EOT
MSG18 FCC ' CC:'
FCB EOT
MSG19 FCC 'SXHINZVC'
FCB EOT
LERRM FCC 'DOWNLOAD ERROR'
FCB EOT
*
HELPM FDB CR,LF
FCC 'HELP HAS NOT DONE'
PPRIN FCC ' PP='
FCB EOT
MSG20 FCB CR,LF
FCC ' SET PPAGE:'
FCB EOT
MSG21 FCB CR,LF
FCC ' SET ADDRESS:'
FCB EOT
MSG22 FCB CR,LF
FCC 'THE BREAKPOINT'
FCB EOT
MSG23 FCB CR,LF
FCC 'BREAK POINT CKEARED'
FCB EOT
*
*
*
*
*
V1 LDX $EF8C
PSHX
RTS
V2 LDX $EF8E
PSHX
RTS
V3 LDX $EF90
PSHX
RTS
V4 LDX $EF92
PSHX
RTS
V5 LDX $EF94
PSHX
RTS
V6 LDX $EF96
PSHX
RTS
V7 LDX $EF98
PSHX
RTS
V8 LDX $EF9A
PSHX
RTS
V9 LDX $EF9C
PSHX
RTS
V10 LDX $EF9E
PSHX
RTS
V11 LDX $EFA0
PSHX
RTS
V12 LDX $EFA2
PSHX
RTS
V13 LDX $EFA4
PSHX
RTS
V14 LDX $EFA6
PSHX
RTS
V15 LDX $EFA8
PSHX
RTS
V16 LDX $EFAA
PSHX
RTS
V17 LDX $EFAC
PSHX
RTS
V18 LDX $EFAE
PSHX
RTS
V19 LDX $EFB0
PSHX
RTS
V20 LDX $EFB2
PSHX
RTS
V21 LDX $EFB4
PSHX
RTS
V22 LDX $EFB6
PSHX
RTS
V23 LDX $EFB8
PSHX
RTS
V24 LDX $EFBA
PSHX
RTS
V25 LDX $EFBC
PSHX
RTS
V26 LDX $EFBE
PSHX
RTS
V27 LDX $EFC0
PSHX
RTS
V28 LDX $EFC2
PSHX
RTS
V29 LDX $EFC4
PSHX
RTS
V30 LDX $EFC6
PSHX
RTS
V31 LDX $EFC8
PSHX
RTS
V32 LDX $EFCA
PSHX
RTS
V33 LDX $EFCC
PSHX
RTS
V34 LDX $EFCE
PSHX
RTS
V35 LDX $EFD0
PSHX
RTS
V36 LDX $EFD2
PSHX
RTS
V37 LDX $EFD4
PSHX
RTS
V38 LDX $EFD6
PSHX
RTS
V39 LDX $EFD8
PSHX
RTS
V40 LDX $EFDA
PSHX
RTS
V41 LDX $EFDC
PSHX
RTS
V42 LDX $EFDE
PSHX
RTS
V43 LDX $EFE0
PSHX
RTS
V44 LDX $EFE2
PSHX
RTS
V45 LDX $EFE4
PSHX
RTS
V46 LDX $EFE6
PSHX
RTS
V47 LDX $EFE8
PSHX
RTS
V48 LDX $EFEA
PSHX
RTS
V49 LDX $EFEC
PSHX
RTS
V50 LDX $EFEE
PSHX
RTS
V51 LDX $EFF0
PSHX
RTS
V52 LDX $EFF2
PSHX
RTS
V53 LDX $EFF4
PSHX
RTS
V54 LDX $EFF6
CPX #65535
BNE *+7 ;abs = FB4C
LDX #63222
PSHX
RTS
VV LDX $EFF6
PSHX
RTS
V55 LDX $EFF8
PSHX
RTS
V56 LDX $EFFA
PSHX
RTS
V57 LDX $EFFC
PSHX
RTS
*
*SYSTEM CALL
*
ORG $FE80
HOSTART JMP NXTCMD
SOUTCH JMP OUTCH
SPSTRING JMP PDATA
SINCH JMP INCH
SINCHE JMP INCHE
SKEYHIT JMP INCHEK
*
*YOU CAN PUT MORE SUBROUTINE ENTRY HERE,IF YOU FEEL IT IS USEFUL
*
*
*
ORG $FF0C
FDB $FFCF
*
*INTERRUPT VICTORS
*
ORG $FF8C
*
FDB V1
FDB V2
FDB V3
FDB V4
FDB V5
FDB V6
FDB V7
FDB V8
FDB V9
FDB V10
FDB V11
FDB V12
FDB V13
FDB V14
FDB V15
FDB V16
FDB V17
FDB V18
FDB V19
FDB V20
FDB V21
FDB V22
FDB V23
FDB V24
FDB V25
FDB V26
FDB V27
FDB V28
FDB V29
FDB V30
FDB V31
FDB V32
FDB V33
FDB V34
FDB V35
FDB V36
FDB V37
FDB V38
FDB V39
FDB V40
FDB V41
FDB V42
FDB V43
FDB V44
FDB V45
FDB V46
FDB V47
FDB V48
FDB V49
FDB V50
FDB V51
FDB V52
FDB V53
FDB V54
FDB V55
FDB V56
FDB V57
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -