mirror of https://github.com/A2osX/A2osX.git
CC:more bugfix, small optimization that reduces code by ...20% :-)
This commit is contained in:
parent
07172d7359
commit
dfe8d13304
Binary file not shown.
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue