A2osX/BIN/CC.S.STMT.txt

258 lines
3.9 KiB
Plaintext
Raw Normal View History

2022-01-30 21:47:08 +00:00
NEW
AUTO 3,1
*--------------------------------------
STMT.Get jsr CC.GetCharNB
2022-08-20 14:37:37 +00:00
jsr CC.IsLetter
ldx #$ff
bcc .20
>LDYA L.CC.PREOPS ++var ?
jsr CC.LookupOP
bcs .9
.20 stx StmtPreOp
jsr SYM.Lookup var or func() ?
2022-08-20 14:37:37 +00:00
bcs .99
ldy #SYM.SC
lda (ZPLookupSymPtr),y
cmp #SYM.SC.TYPEDEF
bne .60
*--------------------------------------
jsr CORE.GetNCharNB
bcs .9
ldy #SYM.Q
lda (ZPLookupSymPtr),y
pha
lda (ZPLookupSymPtr)
pha
jsr SYM.LookupFree
ply
pla
sec Reset Buffer
jmp DECL.YAC
*--------------------------------------
.60 ldy #SYM.Q
lda (ZPLookupSymPtr),y
bit #SYM.Q.FUNC
beq .61
bit StmtPreOp
bpl .9 ++func ????????
jsr F.CallNoRetV func( ... );
bcs .99
jmp SYM.LookupFree
*--------------------------------------
.61 jsr STMT.SetVar
2022-08-20 14:37:37 +00:00
bcs .99
jmp SYM.LookupFree
2022-08-20 14:37:37 +00:00
.9 lda #E.CSYN
sec
.99 rts
*--------------------------------------
STMT.SetVar stz ExpState
jsr EXP.POSTOPS var++, var[0]... ?
bcs .99
ldx StmtPreOp
jsr EXP.PREOPS apply ++var, ....
bcs .99
jsr CC.GetCharNB
bcs .90
jsr CC.IsEndArg var++; or ++var; ?
bcc .8
jsr CC.LookupAOP var=, var+= ... ?
bcs .90
cpx #0 TOTO : all AOPS
bne *
lda ExpState
bmi .90 VonStack
asl
bmi .7 AinPTR
asl
bmi .6 AonStack
jsr EXP.GetAddr1
bcc .7
rts
.6 >LDYA L.PCC.PopAddr1
jsr CODE.EmitPCC
bcs .99
.7 ldy #SYM.Q
lda (ZPLookupSymPtr),y
pha
lda (ZPLookupSymPtr)
tay
pla get expected T/Q
jsr EXP.Eval
bcs .99
jmp SYM.PopValue
.8 clc
rts
.90 lda #E.CSYN
sec
.99 rts
*--------------------------------------
*--------------------------------------
STMT.Stmt.END ldy CStackPtr
beq .8
iny CPS.TERM
lda (ZPCCStack),y
cmp #'}'
beq .8
cmp #';' must be ';' on stack....
bra STMT.POP
.8 clc
rts
2022-08-20 14:37:37 +00:00
*--------------------------------------
2022-01-30 21:47:08 +00:00
* X = KW.ID
*--------------------------------------
STMT.CPStmt.NEW lda LocalPtr Locals
2022-08-20 14:37:37 +00:00
jsr CC.Push
bcs .99
2022-01-30 21:47:08 +00:00
lda #0 bState
jsr CC.Push
bcs .99
lda #'}'
2022-01-30 21:47:08 +00:00
jsr CC.Push
bcs .99
txa
2022-01-30 21:47:08 +00:00
jmp CC.Push
.99 rts
*--------------------------------------
STMT.CPStmt.END ldy CStackPtr
beq STMT.POP.9
2022-08-20 14:37:37 +00:00
iny
lda (ZPCCStack),y
2022-01-30 21:47:08 +00:00
cmp #'}' must be '}' on stack....
STMT.POP bne .9
2022-01-30 21:47:08 +00:00
dey CPS.KW
2022-08-20 14:37:37 +00:00
lda (ZPCCStack),y
jsr STMT.CLOSE
2022-08-20 14:37:37 +00:00
bcs .99
2022-08-20 14:37:37 +00:00
bvs .1 DONT POP reused context (ELSE....)
ldy #CPS.LOCAL
lda (ZPCCStack),y
sta LocalPtr
2022-08-20 14:37:37 +00:00
lda CStackPtr
* clc
adc #CPS
2022-08-20 14:37:37 +00:00
sta CStackPtr
2022-01-30 21:47:08 +00:00
2022-08-20 14:37:37 +00:00
.1 clc
.99 rts
.9
STMT.POP.9 lda #E.STACKERROR
sec
2022-08-20 14:37:37 +00:00
rts
*--------------------------------------
STMT.CLOSE tax
2022-08-20 14:37:37 +00:00
bmi .8
2022-01-30 21:47:08 +00:00
jmp (J.CC.KW.END,x)
.8 jmp F.Def.END
2022-01-30 21:47:08 +00:00
2022-08-20 14:37:37 +00:00
.98 lda #E.CSYN
2022-01-30 21:47:08 +00:00
sec
2022-08-20 14:37:37 +00:00
.99 rts
2022-06-12 20:42:22 +00:00
*--------------------------------------
STMT.NewCPS00 lda #0
jsr CC.Push no T/Q
bcs STMT.NewCPS.RTS
jsr CC.Push
bcs STMT.NewCPS.RTS
STMT.NewCPS lda LocalPtr Locals
jsr CC.Push
bcs .99
lda #0 bState
jsr CC.Push
bcs .99
lda #';' CPS.TERM
jsr CC.Push
bcs .99
>LDA.G CC.CmdSave
jmp CC.Push
.99
STMT.NewCPS.RTS rts
*--------------------------------------
STMT.SetCPSType jsr CORE.GetNCharNBNL
bcs .9
ldx #';'
cmp #'{'
bne .1
jsr CORE.GetNCharNB skip '{'
bcs .99
ldx #'}'
.1 txa
ldy CStackPtr
iny CPS.TERM
sta (ZPCCStack),y
.8 clc
rts
.9 lda #E.CSYN
sec
.99 rts
*--------------------------------------
2022-01-30 21:47:08 +00:00
MAN
SAVE usr/src/bin/cc.s.stmt
LOAD usr/src/bin/cc.s
ASM