CC:more bugfix, small optimization that reduces code by ...20% :-)

This commit is contained in:
burniouf 2023-01-22 15:38:20 +01:00
parent 07172d7359
commit dfe8d13304
6 changed files with 71 additions and 47 deletions

Binary file not shown.

View File

@ -1,7 +1,7 @@
NEW NEW
AUTO 3,1 AUTO 3,1
*-------------------------------------- *--------------------------------------
F.Decl jsr SCOPE.New F.Decl jsr SCOPE.New function (
bcs .99 bcs .99
lda (ZPSymBufPtr) #SYM.T lda (ZPSymBufPtr) #SYM.T
@ -79,15 +79,11 @@ F.Decl jsr SCOPE.New
cmp #';' cmp #';'
bne .7 bne .7
jsr SCOPE.Close discard local scope jsr SCOPE.Close function ();
bcs .99 bcs .99
jsr SYM.Update Store this declaration & exit jmp SYM.Update Store this declaration & exit
bcs .99
* jsr CORE.GetNCharNBNL Skip ';'
clc no error even if EOF
rts rts
*-------------------------------------- *--------------------------------------
.7 cmp #'{' .7 cmp #'{'
@ -137,9 +133,10 @@ F.Def >LDA.G CC.bInitCode
jsr STMT.New00 jsr STMT.New00
bcs .99 bcs .99
jsr STMT.SetTypeCP jsr STMT.SetTypeCP type = {}
bcs .99 bcs .99
jmp SCOPE.AddLocal function () {
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
@ -147,6 +144,9 @@ F.Def.END lda #'X' define EXIT Label
jsr SYM.NewLabelA jsr SYM.NewLabelA
bcs .9 bcs .9
jsr SCOPE.RemLocal function () {}
bcs .9
jsr STMT.Close jsr STMT.Close
bcs .9 bcs .9
@ -154,7 +154,7 @@ F.Def.END lda #'X' define EXIT Label
jsr CODE.EmitPCC jsr CODE.EmitPCC
bcs .9 bcs .9
jsr SCOPE.Close jsr SCOPE.Close function () {};
bcs .9 bcs .9
.9 rts .9 rts
@ -228,7 +228,8 @@ F.NewArg >LDYA.G CC.SymID
>LDYA.G CC.SymIDSave >LDYA.G CC.SymIDSave
>STYA.G CC.SymID >STYA.G CC.SymID
.9 rts .9
F.NewArg.RTS rts
*-------------------------------------- *--------------------------------------
* in : ZPSymPtr * in : ZPSymPtr
* Y,A = Expected T/Q * Y,A = Expected T/Q
@ -255,11 +256,9 @@ F.CallRetV sec
bpl .1 bpl .1
jsr EXP.GetYASizeOfInAX jsr EXP.GetYASizeOfInAX
txa
jsr CODE.AddLocal
bcc .1
rts jsr CODE.AddLocal add room for return value
bcs F.NewArg.RTS
.1 jsr CORE.GetNCharNB skip '(' .1 jsr CORE.GetNCharNB skip '('
bcs .90 bcs .90

View File

@ -3,7 +3,7 @@ NEW
*-------------------------------------- *--------------------------------------
* Built in Keywords * Built in Keywords
*-------------------------------------- *--------------------------------------
KW.IF jsr SCOPE.New IF { KW.IF jsr SCOPE.New IF (
bcs .99 bcs .99
jsr CC.GetCharNB jsr CC.GetCharNB
@ -54,7 +54,7 @@ KW.IF.END jsr STMT.Close
jsr SYM.NewLabelA jsr SYM.NewLabelA
bcs .99 bcs .99
jmp SCOPE.Close } IF jmp SCOPE.Close IF )
*-------------------------------------- *--------------------------------------
.2 lda #'X' .2 lda #'X'
jsr SYM.LookupLabelA jsr SYM.LookupLabelA
@ -91,11 +91,11 @@ KW.ELSE.END jsr STMT.Close
jsr SYM.NewLabelA jsr SYM.NewLabelA
bcs .99 bcs .99
jmp SCOPE.Close } IF jmp SCOPE.Close IF }
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
KW.WHILE jsr SCOPE.New KW.WHILE jsr SCOPE.New WHILE (
bcs .99 bcs .99
lda #'C' define CONT Label lda #'C' define CONT Label
@ -157,11 +157,11 @@ KW.WHILE.END jsr STMT.Close
lda #'B' define BREAK Label lda #'B' define BREAK Label
jsr SYM.NewLabelA jsr SYM.NewLabelA
jmp SCOPE.Close jmp SCOPE.Close WHILE )
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
KW.DO jsr SCOPE.New KW.DO jsr SCOPE.New DO {
bcs .99 bcs .99
lda #'C' define CONT Label lda #'C' define CONT Label
@ -171,7 +171,7 @@ KW.DO jsr SCOPE.New
>LDYA L.PCC.SLEEP >LDYA L.PCC.SLEEP
jsr CODE.EmitPCC jsr CODE.EmitPCC
bcs .99 bcs .99
jsr STMT.New00 jsr STMT.New00
bcs .99 bcs .99
@ -221,7 +221,7 @@ KW.DO.END jsr STMT.Close
jsr SYM.NewLabelA jsr SYM.NewLabelA
bcs .99 bcs .99
jmp SCOPE.Close jmp SCOPE.Close D0 )
.9 lda #E.CSYN .9 lda #E.CSYN
sec sec
@ -243,7 +243,13 @@ KW.DO.END jsr STMT.Close
* break: * break:
* } * }
*-------------------------------------- *--------------------------------------
KW.FOR jsr CC.GetCharNB KW.FOR jsr SCOPE.New FOR (
bcs .19
jsr SCOPE.AddLocal FOR (int...
bcs .19
jsr CC.GetCharNB
bcs .19 bcs .19
cmp #'(' cmp #'('
@ -252,9 +258,6 @@ KW.FOR jsr CC.GetCharNB
jsr CORE.GetNCharNB skip '(' jsr CORE.GetNCharNB skip '('
bcs .29 bcs .29
jsr SCOPE.New for (
bcs .19
>LDYA L.CC.TYPEQUAL >LDYA L.CC.TYPEQUAL
jsr CC.LookupID jsr CC.LookupID
bcs .1 bcs .1
@ -349,7 +352,7 @@ KW.FOR jsr CC.GetCharNB
KW.FOR.END >LDYA L.PCC.SLEEP KW.FOR.END >LDYA L.PCC.SLEEP
jsr CODE.EmitPCC jsr CODE.EmitPCC
bcs .99 bcs .99
lda #$60 lda #$60
jsr CODE.EmitByte set RTS for JSR code; jsr CODE.EmitByte set RTS for JSR code;
@ -362,6 +365,9 @@ KW.FOR.END >LDYA L.PCC.SLEEP
jsr SYM.NewLabelA jsr SYM.NewLabelA
bcs .99 bcs .99
jsr SCOPE.RemLocal FOR (int...) {};
bcs .99
jmp SCOPE.Close FOR ) jmp SCOPE.Close FOR )
.99 rts .99 rts
@ -629,11 +635,9 @@ KW.CONTINUE lda #'C'
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
KW.RETURN lda #'R' KW.RETURN lda #'R'
jsr SYM.LookupLabelA jsr SYM.LookupLabelA Y,A=T/Q
bcs .99 bcs .99
txa
jsr EXP.Eval jsr EXP.Eval
bcs .99 bcs .99

View File

@ -41,15 +41,6 @@ SCOPE.New lda ScopePtr
lda #0 lda #0
sta (ScopeStk),y #SCOPE.FrameSize sta (ScopeStk),y #SCOPE.FrameSize
lda #'F'
jsr SYM.LookupLabelA
bcs .99
txa
jsr CODE.AddLocal
bcs .99
.DO _DBG_SCOPE=1 .DO _DBG_SCOPE=1
>PUSHW L.MSG.DEBUG.SCIN >PUSHW L.MSG.DEBUG.SCIN
jsr SCOPE.Push jsr SCOPE.Push
@ -77,7 +68,15 @@ SCOPE.New lda ScopePtr
.99 .99
SCOPE.New.RTS rts SCOPE.New.RTS rts
*-------------------------------------- *--------------------------------------
SCOPE.Close lda #'F' define FRAME SIZE SCOPE.AddLocal lda #'F'
jsr SYM.LookupLabelA
bcs SCOPE.New.RTS
txa
jmp CODE.AddLocal
*--------------------------------------
SCOPE.RemLocal lda #'F' define FRAME SIZE
jsr SYM.NewLabelA jsr SYM.NewLabelA
bcs SCOPE.New.RTS bcs SCOPE.New.RTS
@ -87,10 +86,9 @@ SCOPE.Close lda #'F' define FRAME SIZE
iny iny
lda (ScopeStk),y #SCOPE.FrameSize lda (ScopeStk),y #SCOPE.FrameSize
jsr CODE.RemLocal jmp CODE.RemLocal
bcs SCOPE.New.RTS *--------------------------------------
SCOPE.Close .DO _DBG_SCOPE=1
.DO _DBG_SCOPE=1
>PUSHW L.MSG.DEBUG.SCOUT >PUSHW L.MSG.DEBUG.SCOUT
jsr SCOPE.Push jsr SCOPE.Push
lda ScopePtr lda ScopePtr

View File

@ -224,7 +224,7 @@ STMT.Close lda StmtPtr
cmp #'}' cmp #'}'
bne .2 bne .2
jsr SCOPE.Close jsr SCOPE.Close {};
bcs .99 bcs .99
.2 lda StmtPtr .2 lda StmtPtr

View File

@ -717,6 +717,9 @@ SYM.NewLabelR ldy #SYM.Q
sta (pData),y sta (pData),y
rts rts
*-------------------------------------- *--------------------------------------
* _R : Y,A = T/Q
* others : X,Y = SYM.Addr
*--------------------------------------
SYM.LookupLabelA SYM.LookupLabelA
cmp #'R' cmp #'R'
beq .1 beq .1
@ -778,13 +781,12 @@ SYM.LookupLabelA
plx plx
>LDA.G CC.Label+1 >LDA.G CC.Label+1
ldy #SYM.T return T/Q
cmp #'R' cmp #'R'
beq .4 beq .4
ldy #SYM.Addr ldy #SYM.Addr
.4 lda (ZPLookupPtr),y lda (ZPLookupPtr),y
pha pha
@ -800,6 +802,27 @@ SYM.LookupLabelA
* clc * clc
rts
.4 ldy #SYM.T return T/Q
lda (ZPLookupPtr),y
pha
iny #SYM.Q
lda (ZPLookupPtr),y
pha
txa
>SYSCALL FreeMem
pla
ply
* clc
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
SYM.LookupFree >LDA.G CC.LookupIdx SYM.LookupFree >LDA.G CC.LookupIdx