mirror of
https://github.com/A2osX/A2osX.git
synced 2025-01-12 01:30:36 +00:00
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
|
||||
AUTO 3,1
|
||||
*--------------------------------------
|
||||
F.Decl jsr SCOPE.New
|
||||
F.Decl jsr SCOPE.New function (
|
||||
bcs .99
|
||||
|
||||
lda (ZPSymBufPtr) #SYM.T
|
||||
@ -79,15 +79,11 @@ F.Decl jsr SCOPE.New
|
||||
cmp #';'
|
||||
bne .7
|
||||
|
||||
jsr SCOPE.Close discard local scope
|
||||
jsr SCOPE.Close function ();
|
||||
bcs .99
|
||||
|
||||
jsr SYM.Update Store this declaration & exit
|
||||
bcs .99
|
||||
jmp SYM.Update Store this declaration & exit
|
||||
|
||||
* jsr CORE.GetNCharNBNL Skip ';'
|
||||
|
||||
clc no error even if EOF
|
||||
rts
|
||||
*--------------------------------------
|
||||
.7 cmp #'{'
|
||||
@ -137,9 +133,10 @@ F.Def >LDA.G CC.bInitCode
|
||||
jsr STMT.New00
|
||||
bcs .99
|
||||
|
||||
jsr STMT.SetTypeCP
|
||||
jsr STMT.SetTypeCP type = {}
|
||||
bcs .99
|
||||
|
||||
jmp SCOPE.AddLocal function () {
|
||||
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
@ -147,6 +144,9 @@ F.Def.END lda #'X' define EXIT Label
|
||||
jsr SYM.NewLabelA
|
||||
bcs .9
|
||||
|
||||
jsr SCOPE.RemLocal function () {}
|
||||
bcs .9
|
||||
|
||||
jsr STMT.Close
|
||||
bcs .9
|
||||
|
||||
@ -154,7 +154,7 @@ F.Def.END lda #'X' define EXIT Label
|
||||
jsr CODE.EmitPCC
|
||||
bcs .9
|
||||
|
||||
jsr SCOPE.Close
|
||||
jsr SCOPE.Close function () {};
|
||||
bcs .9
|
||||
|
||||
.9 rts
|
||||
@ -228,7 +228,8 @@ F.NewArg >LDYA.G CC.SymID
|
||||
>LDYA.G CC.SymIDSave
|
||||
>STYA.G CC.SymID
|
||||
|
||||
.9 rts
|
||||
.9
|
||||
F.NewArg.RTS rts
|
||||
*--------------------------------------
|
||||
* in : ZPSymPtr
|
||||
* Y,A = Expected T/Q
|
||||
@ -255,11 +256,9 @@ F.CallRetV sec
|
||||
bpl .1
|
||||
|
||||
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 '('
|
||||
bcs .90
|
||||
|
@ -3,7 +3,7 @@ NEW
|
||||
*--------------------------------------
|
||||
* Built in Keywords
|
||||
*--------------------------------------
|
||||
KW.IF jsr SCOPE.New IF {
|
||||
KW.IF jsr SCOPE.New IF (
|
||||
bcs .99
|
||||
|
||||
jsr CC.GetCharNB
|
||||
@ -54,7 +54,7 @@ KW.IF.END jsr STMT.Close
|
||||
jsr SYM.NewLabelA
|
||||
bcs .99
|
||||
|
||||
jmp SCOPE.Close } IF
|
||||
jmp SCOPE.Close IF )
|
||||
*--------------------------------------
|
||||
.2 lda #'X'
|
||||
jsr SYM.LookupLabelA
|
||||
@ -91,11 +91,11 @@ KW.ELSE.END jsr STMT.Close
|
||||
jsr SYM.NewLabelA
|
||||
bcs .99
|
||||
|
||||
jmp SCOPE.Close } IF
|
||||
jmp SCOPE.Close IF }
|
||||
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
KW.WHILE jsr SCOPE.New
|
||||
KW.WHILE jsr SCOPE.New WHILE (
|
||||
bcs .99
|
||||
|
||||
lda #'C' define CONT Label
|
||||
@ -157,11 +157,11 @@ KW.WHILE.END jsr STMT.Close
|
||||
lda #'B' define BREAK Label
|
||||
jsr SYM.NewLabelA
|
||||
|
||||
jmp SCOPE.Close
|
||||
jmp SCOPE.Close WHILE )
|
||||
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
KW.DO jsr SCOPE.New
|
||||
KW.DO jsr SCOPE.New DO {
|
||||
bcs .99
|
||||
|
||||
lda #'C' define CONT Label
|
||||
@ -171,7 +171,7 @@ KW.DO jsr SCOPE.New
|
||||
>LDYA L.PCC.SLEEP
|
||||
jsr CODE.EmitPCC
|
||||
bcs .99
|
||||
|
||||
|
||||
jsr STMT.New00
|
||||
bcs .99
|
||||
|
||||
@ -221,7 +221,7 @@ KW.DO.END jsr STMT.Close
|
||||
jsr SYM.NewLabelA
|
||||
bcs .99
|
||||
|
||||
jmp SCOPE.Close
|
||||
jmp SCOPE.Close D0 )
|
||||
|
||||
.9 lda #E.CSYN
|
||||
sec
|
||||
@ -243,7 +243,13 @@ KW.DO.END jsr STMT.Close
|
||||
* 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
|
||||
|
||||
cmp #'('
|
||||
@ -252,9 +258,6 @@ KW.FOR jsr CC.GetCharNB
|
||||
jsr CORE.GetNCharNB skip '('
|
||||
bcs .29
|
||||
|
||||
jsr SCOPE.New for (
|
||||
bcs .19
|
||||
|
||||
>LDYA L.CC.TYPEQUAL
|
||||
jsr CC.LookupID
|
||||
bcs .1
|
||||
@ -349,7 +352,7 @@ KW.FOR jsr CC.GetCharNB
|
||||
KW.FOR.END >LDYA L.PCC.SLEEP
|
||||
jsr CODE.EmitPCC
|
||||
bcs .99
|
||||
|
||||
|
||||
lda #$60
|
||||
|
||||
jsr CODE.EmitByte set RTS for JSR code;
|
||||
@ -362,6 +365,9 @@ KW.FOR.END >LDYA L.PCC.SLEEP
|
||||
jsr SYM.NewLabelA
|
||||
bcs .99
|
||||
|
||||
jsr SCOPE.RemLocal FOR (int...) {};
|
||||
bcs .99
|
||||
|
||||
jmp SCOPE.Close FOR )
|
||||
|
||||
.99 rts
|
||||
@ -629,11 +635,9 @@ KW.CONTINUE lda #'C'
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
KW.RETURN lda #'R'
|
||||
jsr SYM.LookupLabelA
|
||||
jsr SYM.LookupLabelA Y,A=T/Q
|
||||
bcs .99
|
||||
|
||||
txa
|
||||
|
||||
jsr EXP.Eval
|
||||
bcs .99
|
||||
|
||||
|
@ -41,15 +41,6 @@ SCOPE.New lda ScopePtr
|
||||
lda #0
|
||||
sta (ScopeStk),y #SCOPE.FrameSize
|
||||
|
||||
lda #'F'
|
||||
jsr SYM.LookupLabelA
|
||||
bcs .99
|
||||
|
||||
txa
|
||||
|
||||
jsr CODE.AddLocal
|
||||
bcs .99
|
||||
|
||||
.DO _DBG_SCOPE=1
|
||||
>PUSHW L.MSG.DEBUG.SCIN
|
||||
jsr SCOPE.Push
|
||||
@ -77,7 +68,15 @@ SCOPE.New lda ScopePtr
|
||||
.99
|
||||
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
|
||||
bcs SCOPE.New.RTS
|
||||
|
||||
@ -87,10 +86,9 @@ SCOPE.Close lda #'F' define FRAME SIZE
|
||||
iny
|
||||
lda (ScopeStk),y #SCOPE.FrameSize
|
||||
|
||||
jsr CODE.RemLocal
|
||||
bcs SCOPE.New.RTS
|
||||
|
||||
.DO _DBG_SCOPE=1
|
||||
jmp CODE.RemLocal
|
||||
*--------------------------------------
|
||||
SCOPE.Close .DO _DBG_SCOPE=1
|
||||
>PUSHW L.MSG.DEBUG.SCOUT
|
||||
jsr SCOPE.Push
|
||||
lda ScopePtr
|
||||
|
@ -224,7 +224,7 @@ STMT.Close lda StmtPtr
|
||||
cmp #'}'
|
||||
bne .2
|
||||
|
||||
jsr SCOPE.Close
|
||||
jsr SCOPE.Close {};
|
||||
bcs .99
|
||||
|
||||
.2 lda StmtPtr
|
||||
|
@ -717,6 +717,9 @@ SYM.NewLabelR ldy #SYM.Q
|
||||
sta (pData),y
|
||||
rts
|
||||
*--------------------------------------
|
||||
* _R : Y,A = T/Q
|
||||
* others : X,Y = SYM.Addr
|
||||
*--------------------------------------
|
||||
SYM.LookupLabelA
|
||||
cmp #'R'
|
||||
beq .1
|
||||
@ -778,13 +781,12 @@ SYM.LookupLabelA
|
||||
plx
|
||||
|
||||
>LDA.G CC.Label+1
|
||||
ldy #SYM.T return T/Q
|
||||
cmp #'R'
|
||||
beq .4
|
||||
|
||||
ldy #SYM.Addr
|
||||
|
||||
.4 lda (ZPLookupPtr),y
|
||||
lda (ZPLookupPtr),y
|
||||
|
||||
pha
|
||||
|
||||
@ -800,6 +802,27 @@ SYM.LookupLabelA
|
||||
|
||||
* 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
|
||||
*--------------------------------------
|
||||
SYM.LookupFree >LDA.G CC.LookupIdx
|
||||
|
Loading…
x
Reference in New Issue
Block a user