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 STMT.POP.8 Global context lda (ZPCCStack),y bmi STMT.POP.8 local F context * in an instruction ... iny CPS.TERM lda (ZPCCStack),y cmp #'}' beq STMT.POP.8 in a CPS... cmp #';' must be ';' on stack.... beq STMT.End STMT.POP.9 lda #E.STACKERROR sec rts STMT.POP.8 clc STMT.POP.99 rts *-------------------------------------- STMT.CPStmt.END ldy CStackPtr beq STMT.POP.9 lda (ZPCCStack),y bpl .1 jmp F.Def.END local F context .1 iny lda (ZPCCStack),y CPS.TERM cmp #'}' must be '}' on stack.... bne STMT.POP.9 *-------------------------------------- STMT.End ldy CStackPtr CPS.KW lda (ZPCCStack),y tax jmp (J.CC.KW.END,x) *-------------------------------------- STMT.New00 lda #0 jsr CC.Push CPS.hMEM bcs STMT.New.RTS jsr CC.Push CPS.MemPtr bcs STMT.New.RTS STMT.New lda LocalFrame jsr CC.Push bcs .99 lda LocalPtr jsr CC.Push bcs .99 lda #';' CPS.TERM jsr CC.Push bcs .99 >LDA.G CC.CmdSave jmp CC.Push .99 STMT.New.RTS rts *-------------------------------------- STMT.SetType jsr CORE.GetNCharNBNL bcs STMT.SetType.9 ldx #';' cmp #'{' bne STMT.SetType.1 STMT.SetTypeCP jsr CORE.GetNCharNB skip '{' bcs STMT.SetType.9 jsr SCOPE.New bcs STMT.New.RTS lda #'F' jsr SYM.LookupLabelA bcs STMT.New.RTS txa jsr CODE.nAddLocal bcs STMT.New.RTS ldx #'}' STMT.SetType.1 txa ldy CStackPtr iny CPS.TERM sta (ZPCCStack),y clc rts STMT.SetType.9 lda #E.CSYN sec rts *-------------------------------------- STMT.Close ldy CStackPtr CPS.KW iny CPS.TERM lda (ZPCCStack),y cmp #'}' bne .1 lda #'F' define FRAME SIZE jsr SYM.NewLabelA bcs .99 lda LocalFrame jsr CODE.AddLocal bcs .99 lda CStackPtr clc adc #CPS.LocalPtr tay lda (ZPCCStack),y sta LocalPtr iny CPS.LocalFrame lda (ZPCCStack),y sta LocalFrame jsr SCOPE.Close bcs .99 .1 lda CStackPtr clc adc #CPS sta CStackPtr .8 clc .99 rts *-------------------------------------- MAN SAVE usr/src/bin/cc.s.stmt LOAD usr/src/bin/cc.s ASM