A2osX/BIN/CC.S.STMT.txt

236 lines
3.8 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
2022-12-13 06:55:13 +00:00
beq STMT.POP.8 Global context
2022-12-13 06:55:13 +00:00
lda (ZPCCStack),y
bmi STMT.POP.8 local F context
* in an istruction ...
iny CPS.TERM
lda (ZPCCStack),y
cmp #'}'
2022-12-13 06:55:13 +00:00
beq STMT.POP.8 in a CPS...
cmp #';' must be ';' on stack....
2022-12-13 06:55:13 +00:00
beq STMT.End
2022-12-07 16:09:29 +00:00
STMT.POP.9 lda #E.STACKERROR
sec
rts
2022-01-30 21:47:08 +00:00
2022-12-07 16:09:29 +00:00
STMT.POP.8 clc
2022-12-13 06:55:13 +00:00
STMT.POP.99 rts
2022-01-30 21:47:08 +00:00
*--------------------------------------
STMT.CPStmt.END ldy CStackPtr
beq STMT.POP.9
2022-12-13 06:55:13 +00:00
lda (ZPCCStack),y
2022-12-13 06:55:13 +00:00
bpl .1
jmp F.Def.END local F context
.1 iny
lda (ZPCCStack),y CPS.TERM
2022-01-30 21:47:08 +00:00
cmp #'}' must be '}' on stack....
2022-12-07 16:09:29 +00:00
bne STMT.POP.9
2022-12-13 06:55:13 +00:00
jsr SCOPE.Close
bcs STMT.POP.99
*--------------------------------------
STMT.End ldy CStackPtr CPS.KW
2022-08-20 14:37:37 +00:00
lda (ZPCCStack),y
2022-12-13 06:55:13 +00:00
tax
jmp (J.CC.KW.END,x)
*--------------------------------------
STMT.Close ldy CStackPtr
iny
iny CPS.LOCAL
lda (ZPCCStack),y
sta LocalPtr
2022-08-20 14:37:37 +00:00
lda CStackPtr
2022-12-13 06:55:13 +00:00
clc
adc #CPS
2022-08-20 14:37:37 +00:00
sta CStackPtr
2022-01-30 21:47:08 +00:00
2022-12-07 16:09:29 +00:00
.8 clc
.99 rts
2022-08-20 14:37:37 +00:00
*--------------------------------------
STMT.NewCPS00 lda #0
2022-12-13 06:55:13 +00:00
jsr CC.Push
bcs STMT.NewCPS.RTS
jsr CC.Push
bcs STMT.NewCPS.RTS
STMT.NewCPS lda LocalPtr Locals
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
2022-12-07 16:09:29 +00:00
jsr SCOPE.New
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