📄 basensyntax.asm
字号:
;/subrutine name : Basensyntax.asm
;/user bady : HE
;/fast clock : 4Mhz
;/slow clock : 32768khz
;/programer : Alton
.area Basensyntax(code,rel)
.Basensyntax::
call .InitBasenSyntax
.Bsyntax:
lda #>.INDP
sta PP
lda0 .INDP
cmpe .DataDP
brz .EnddataChk
lda #02h
sta PP
lda0 .INDP
sta DP
lda i
sta0 .DataBuf
cmpe #0b6h
brnz 1$
lda0 .DataDP
cmpe #01h
brz 1$
br .Errorsyntax
1$:
call .CheckMem
call .Paricmp
lda0 .INDP
cmpe #0h
brz .ChkHead
lda0 .DataBuf
cmpe #0b2h
brz .ChkLC
cmpe #0b3h
brz .ChkRC
lda0 .AfterPari
cmpe #01h
brz .ChkMem
cmpe #04h
brz .ChkNum
cmpe #07h
brz .ChkLogic
cmpe #08h
brz .ChkLogic
cmpe #09h
brz .ChkLogic
cmpe #0ch
brz .ChkAddDec
cmpe #0dh
brz .ChkMulDiv
cmpe #0eh
brz .ChkNotNeg
cmpe #0fh
brz .ChkTrnCode
.NextDP:
lda0 .DataBuf
sta0 .Buf1
lda0 .INDP
inca
sta0 .INDP
br .Bsyntax
;-------------------------------------------
.ChkHead:
lda0 .DataBuf
cmpe #0b2h
brz .HeadLC
cmpe #0b3h
brz .Errorsyntax
lda0 .AfterPari
cmpe #07h
brz .Errorsyntax
cmpe #08h
brz .Errorsyntax
cmpe #09h
brz .Errorsyntax
cmpe #0dh
brz .Errorsyntax
br .NextDP
.ChkLC:
call .GetPari
lda0 .Buf1
;cmpe #0b3h
;brz .Errorsyntax
lda0 .AfterPari
cmpe #0fh
brz .Errorsyntax
.HeadLC:
lda0 .LRcnt
inca
sta0 .LRcnt
br .NextDP
.ChkRC:
lda0 .LRcnt
deca
sta0 .LRcnt
cmpe #0ffh
brz .Errorsyntax
call .GetPari
lda0 .Buf1
cmpe #0b2h
brz .Errorsyntax
lda0 .AfterPari
cmpe #0h
brz .NextDP
cmpe #01h
brz .NextDP
cmpe #04h
brz .NextDP
br .Errorsyntax
.ChkMem:
call .GetPari
lda0 .Buf1
cmpe #0b3h
brz .Errorsyntax
lda0 .AfterPari
cmpe #0fh
brz .Errorsyntax
br .NextDP
.ChkNum:
call .GetPari
lda0 .Buf1
cmpe #0b3h ;)A
brz .Errorsyntax
lda0 .AfterPari
cmpe #01h ;A8
brz .Errorsyntax
br .NextDP
.ChkLogic:
call .GetPari
lda0 .Buf1
cmpe #0b2h ;(And
brz .Errorsyntax
lda0 .AfterPari
cmpe #0h
brz .NextDP
cmpe #01h ;AndXor
brz .NextDP
cmpe #04h ;AndOR
brz .NextDP
br .Errorsyntax
.ChkTrnCode:
.ChkNotNeg:
.ChkAddDec:
call .GetPari
lda0 .AfterPari
cmpe #0fh ;D-3
brz .Errorsyntax
br .NextDP
.ChkMulDiv:
call .GetPari
lda0 .Buf1
cmpe #0b2h
brz .Errorsyntax
lda0 .AfterPari
cmpe #0h
brz .NextDP
cmpe #01h
brz .NextDP
cmpe #04h
brz .NextDP
br .Errorsyntax
;-------------------------------------------
.Errorsyntax:
lda #02h
sta0 ErrorFlag
lda0 .INDP
sta0 .SFDP
br .EndBsyntax
.EnddataChk:
lda0 .DataBuf
cmpe #0b2h
brz .Errorsyntax
call .GetPari
lda0 .AfterPari
cmpe #0h
brz .EndBsyntax
cmpe #01h
brz .EndBsyntax
cmpe #04h
brz .EndBsyntax
br .Errorsyntax
.EndBsyntax:
ret
;-------------------------------------------
.InitBasenSyntax:
lda #0h
sta0 .BeforePari
sta0 .AfterPari
sta0 ErrorFlag
sta0 .LRcnt
sta0 .INDP
ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -