NEW AUTO 3,1 *-------------------------------------- STMT.Get jsr CC.GetCharNB 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() ? 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 bcs .99 jmp SYM.LookupFree .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 *-------------------------------------- * X = KW.ID *-------------------------------------- STMT.CPStmt.NEW lda LocalPtr Locals jsr CC.Push bcs .99 lda #0 bState jsr CC.Push bcs .99 lda #'}' jsr CC.Push bcs .99 txa jmp CC.Push .99 rts *-------------------------------------- STMT.CPStmt.END ldy CStackPtr beq STMT.POP.9 iny lda (ZPCCStack),y cmp #'}' must be '}' on stack.... STMT.POP bne .9 dey CPS.KW lda (ZPCCStack),y jsr STMT.CLOSE bcs .99 bvs .1 DONT POP reused context (ELSE....) ldy #CPS.LOCAL lda (ZPCCStack),y sta LocalPtr lda CStackPtr * clc adc #CPS sta CStackPtr .1 clc .99 rts .9 STMT.POP.9 lda #E.STACKERROR sec rts *-------------------------------------- STMT.CLOSE tax bmi .8 jmp (J.CC.KW.END,x) .8 jmp F.Def.END .98 lda #E.CSYN sec .99 rts *-------------------------------------- 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 *-------------------------------------- MAN SAVE usr/src/bin/cc.s.stmt LOAD usr/src/bin/cc.s ASM