mirror of https://github.com/A2osX/A2osX.git
CC:wip
This commit is contained in:
parent
6a46b55ff8
commit
cdd2a24149
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -223,10 +223,31 @@ CODE.EmitByte clc if Pass 1...
|
|||
|
||||
phx
|
||||
phy
|
||||
tax
|
||||
pha
|
||||
|
||||
.DO _DBG_OUT=1
|
||||
|
||||
lda ZPCCCode
|
||||
and #$1F
|
||||
bne .11
|
||||
|
||||
>PUSHW L.MSG.DEBUG.CSOUT
|
||||
>PUSHW ZPCCCode
|
||||
>PUSHBI 2
|
||||
>SYSCALL PrintF
|
||||
|
||||
.11 >PUSHW L.MSG.DEBUG.OUT
|
||||
pla
|
||||
pha
|
||||
>PUSHA
|
||||
>PUSHBI 1
|
||||
>SYSCALL PrintF
|
||||
|
||||
.FIN
|
||||
|
||||
>PUSHB.G CC.hOutFile
|
||||
txa
|
||||
pla
|
||||
|
||||
>PUSHA
|
||||
>SYSCALL fputc
|
||||
|
||||
|
@ -247,9 +268,9 @@ CODE.EmitDATA clc
|
|||
phx
|
||||
phy
|
||||
tax
|
||||
|
||||
>PUSHB.G CC.hOutFile
|
||||
txa
|
||||
|
||||
>PUSHA
|
||||
>SYSCALL fputc
|
||||
ply
|
||||
|
|
|
@ -135,10 +135,10 @@ CORE.CompileLine
|
|||
jsr CORE.GetNCharNB Skip '}'
|
||||
|
||||
jsr STMT.CPStmt.END
|
||||
bcs .9
|
||||
|
||||
bra CORE.CompileLine
|
||||
|
||||
bcc CORE.CompileLine
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
.3 cmp #';' End of Stmt ?
|
||||
bne .4
|
||||
|
||||
|
@ -333,21 +333,6 @@ CC.SListLookup >PUSHA hSList
|
|||
*--------------------------------------
|
||||
* CT Stack
|
||||
*--------------------------------------
|
||||
CC.PushTQ ldy #SYM.Q
|
||||
lda (ZPSymBufPtr),y
|
||||
and #$FC ignore SYM.Q.FUNC+SYM.Q.FASTCALL
|
||||
jsr CC.Push
|
||||
bcs CC.Push.RTS
|
||||
|
||||
lda (ZPSymBufPtr) SYM.T
|
||||
bra CC.Push
|
||||
*--------------------------------------
|
||||
CC.PushCS lda ZPCCCode+1
|
||||
jsr CC.Push
|
||||
bcs CC.Push.RTS
|
||||
|
||||
lda ZPCCCode
|
||||
*--------------------------------------
|
||||
CC.Push ldy CStackPtr
|
||||
dey
|
||||
beq .9
|
||||
|
@ -360,50 +345,6 @@ CC.Push ldy CStackPtr
|
|||
|
||||
.9 lda #E.STKOVERFLOW
|
||||
sec
|
||||
CC.Push.RTS rts
|
||||
*--------------------------------------
|
||||
CC.PopYA ldy CStackPtr
|
||||
beq .9
|
||||
|
||||
lda (ZPCCStack),y
|
||||
pha
|
||||
|
||||
iny
|
||||
beq .90
|
||||
|
||||
lda (ZPCCStack),y
|
||||
|
||||
iny
|
||||
sty CStackPtr
|
||||
|
||||
ply
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.90 pla
|
||||
.9 lda #E.STACKERROR
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CC.Pop jsr CC.Get
|
||||
|
||||
inc CStackPtr
|
||||
|
||||
* clc
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CC.Get ldy CStackPtr
|
||||
beq .9
|
||||
|
||||
lda (ZPCCStack),y
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #E.STACKERROR
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
* ZPLineBufPtr related Subs.....
|
||||
|
|
|
@ -117,18 +117,7 @@ DIR.INCLUDE lda #0 >STZ.G PathBuf
|
|||
lda #0
|
||||
sta (pData),y terminate string
|
||||
|
||||
dey
|
||||
lda (pData),y
|
||||
cmp #'h'
|
||||
bne .5
|
||||
|
||||
bit bPass2
|
||||
bpl .5
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.5 >LDYA pData
|
||||
>LDYA pData
|
||||
jmp FIO.FOpen
|
||||
*--------------------------------------
|
||||
DIR.IFDEF
|
||||
|
|
|
@ -83,27 +83,25 @@ F.Decl ldy #SYM.Q
|
|||
bcs .99
|
||||
|
||||
jsr SCOPE.Close discard local scope
|
||||
bcs .99
|
||||
|
||||
stz LocalPtr reset for DEBUG Message
|
||||
|
||||
clc
|
||||
* clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
.7 cmp #'{'
|
||||
bne .9
|
||||
>DEBUG
|
||||
*--------------------------------------
|
||||
F.Def bit bInitCode
|
||||
bmi .1
|
||||
|
||||
dec bInitCode
|
||||
|
||||
lda #$60 RTS
|
||||
jsr CODE.EmitByte Close INIT code
|
||||
bcs .99
|
||||
|
||||
.1 >LDYA ZPCCCode f() Code starts HERE
|
||||
jsr SYM.SetAddrYA
|
||||
dec bInitCode
|
||||
|
||||
.1 jsr SYM.SetAddrCCode f() Code starts HERE
|
||||
|
||||
jsr SYM.Update
|
||||
bcs .99
|
||||
|
@ -114,7 +112,12 @@ F.Def bit bInitCode
|
|||
jsr STMT.NewCPS00
|
||||
bcs .99
|
||||
|
||||
lda LocalPtr
|
||||
lda #'F'
|
||||
jsr SYM.LookupLabelA
|
||||
bcs .99
|
||||
|
||||
txa
|
||||
|
||||
jsr CODE.LDAI A = f() ARGS size
|
||||
bcs .99
|
||||
|
||||
|
@ -123,6 +126,21 @@ F.Def bit bInitCode
|
|||
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
F.Def.END lda #'X' define EXIT Label
|
||||
jsr SYM.NewLabelA
|
||||
bcs .9
|
||||
|
||||
>LDYA L.PCC.LEAVE
|
||||
jsr CODE.EmitPCC
|
||||
bcs .9
|
||||
|
||||
jsr SCOPE.Close
|
||||
bcs .9
|
||||
|
||||
jmp STMT.Close
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
F.DeclGetTQ lda (ZPLineBufPtr)
|
||||
cmp #'.'
|
||||
bne .5
|
||||
|
@ -195,7 +213,7 @@ F.NewArg >LDYA.G CC.SymID
|
|||
>LDYA ZPPtr2
|
||||
ldx #SYM.SC.AUTO
|
||||
sec Reset Buffer
|
||||
* >DEBUG
|
||||
|
||||
jsr SYM.New
|
||||
bcs .9
|
||||
|
||||
|
@ -211,18 +229,6 @@ F.NewArg >LDYA.G CC.SymID
|
|||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
F.Def.END >LDYA L.PCC.LEAVE
|
||||
jsr CODE.EmitPCC
|
||||
bcs .9
|
||||
|
||||
jsr SCOPE.Close
|
||||
|
||||
stz LocalPtr back to global
|
||||
* >DEBUG
|
||||
clv pop context
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
* in : ZPSymPtr
|
||||
* Y,A = Expected T/Q
|
||||
*--------------------------------------
|
||||
|
@ -245,16 +251,8 @@ F.CallRetV sec
|
|||
>STYA ZPPtr2
|
||||
|
||||
ror ZPPtr1+1 bRetV
|
||||
* bpl .20 no return value on stack
|
||||
|
||||
* ldy #SYM.Addr+1
|
||||
* lda (ZPLookupSymPtr),y
|
||||
* beq .20 SYS/LIB/FPU call, no ret value space
|
||||
|
||||
jsr EXP.GetSymSizeOfInAXC
|
||||
jsr CODE.nAddLocal
|
||||
* >DEBUG
|
||||
.20 jsr CORE.GetNCharNB skip '('
|
||||
jsr CORE.GetNCharNB skip '('
|
||||
bcs .90
|
||||
|
||||
jsr SYM.LookupCheckTQ
|
||||
|
@ -273,9 +271,9 @@ F.CallRetV sec
|
|||
|
||||
lda #0 Expected T/Q = 0 if VARIADIC
|
||||
tay
|
||||
|
||||
* >DEBUG
|
||||
.4 and #$F0 CONST+VOLATILE+FUNC+FASTCALL
|
||||
|
||||
* >DEBUG
|
||||
jsr EXP.Eval
|
||||
bcs .93
|
||||
|
||||
|
|
106
BIN/CC.S.KW.txt
106
BIN/CC.S.KW.txt
|
@ -3,9 +3,9 @@ NEW
|
|||
*--------------------------------------
|
||||
* Built in Keywords
|
||||
*--------------------------------------
|
||||
KW.IF jsr STMT.NewCPS00
|
||||
KW.IF jsr SCOPE.New
|
||||
bcs .99
|
||||
|
||||
|
||||
jsr CC.GetCharNB
|
||||
bcs .9
|
||||
|
||||
|
@ -34,6 +34,9 @@ KW.IF jsr STMT.NewCPS00
|
|||
cmp #')'
|
||||
bne .9
|
||||
|
||||
jsr STMT.NewCPS00
|
||||
bcs .99
|
||||
|
||||
jmp STMT.SetCPSType
|
||||
|
||||
.9 lda #E.CSYN
|
||||
|
@ -54,7 +57,11 @@ KW.IF.END jsr CORE.GetCharNBNL
|
|||
jsr SYM.NewLabelA
|
||||
bcs .99
|
||||
|
||||
clv pop context
|
||||
jsr SCOPE.Close
|
||||
bcs .99
|
||||
|
||||
jmp STMT.Close
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
.2 lda #'X'
|
||||
|
@ -73,11 +80,7 @@ KW.IF.END jsr CORE.GetCharNBNL
|
|||
ldy CStackPtr
|
||||
sta (ZPCCStack),y
|
||||
|
||||
jsr STMT.SetCPSType
|
||||
bcs .99
|
||||
|
||||
bit .99 set V : DONT pop context
|
||||
rts
|
||||
jmp STMT.SetCPSType reuse IF STMT
|
||||
|
||||
.9 lda #E.CSYN
|
||||
sec
|
||||
|
@ -91,7 +94,11 @@ KW.ELSE.END lda #'X' define EXIT Label
|
|||
jsr SYM.NewLabelA
|
||||
bcs .99
|
||||
|
||||
jsr SCOPE.Close
|
||||
bcs .99
|
||||
|
||||
clv pop context
|
||||
* clc
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
KW.WHILE jsr SCOPE.New
|
||||
|
@ -129,10 +136,10 @@ KW.WHILE jsr SCOPE.New
|
|||
cmp #')'
|
||||
bne .9
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
* jmp STMT.SetCPSType
|
||||
jsr STMT.NewCPS00
|
||||
bcs .99
|
||||
|
||||
jmp STMT.SetCPSType
|
||||
|
||||
.9 lda #E.CSYN
|
||||
sec
|
||||
|
@ -154,19 +161,23 @@ KW.WHILE.END >LDYA L.PCC.SLEEP
|
|||
jsr SYM.NewLabelA
|
||||
bcs .99
|
||||
|
||||
* clv pop context
|
||||
|
||||
bit .99
|
||||
jsr SCOPE.Close
|
||||
bcs .99
|
||||
|
||||
jmp STMT.Close
|
||||
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
KW.DO jsr STMT.NewCPS00
|
||||
KW.DO jsr SCOPE.New
|
||||
bcs .99
|
||||
|
||||
lda #'C' define CONT Label
|
||||
jsr SYM.NewLabelA
|
||||
bcs .99
|
||||
|
||||
jsr STMT.NewCPS00
|
||||
bcs .99
|
||||
|
||||
jmp STMT.SetCPSType
|
||||
|
||||
.99 rts
|
||||
|
@ -209,10 +220,11 @@ KW.DO.END >LDYA L.CC.KW2.DO Check allowed KW for DO....
|
|||
|
||||
jsr CORE.GetNCharNB
|
||||
bcs .9
|
||||
|
||||
clv pop context
|
||||
clc
|
||||
rts
|
||||
|
||||
jsr SCOPE.Close
|
||||
bcs .99
|
||||
|
||||
jmp STMT.Close
|
||||
|
||||
.9 lda #E.CSYN
|
||||
sec
|
||||
|
@ -235,17 +247,17 @@ KW.DO.END >LDYA L.CC.KW2.DO Check allowed KW for DO....
|
|||
* }
|
||||
*--------------------------------------
|
||||
KW.FOR jsr CC.GetCharNB
|
||||
bcs .29
|
||||
bcs .19
|
||||
|
||||
cmp #'('
|
||||
bne .29
|
||||
|
||||
jsr STMT.NewCPS00
|
||||
bcs .29
|
||||
|
||||
jsr CORE.GetNCharNB skip '('
|
||||
bcs .29
|
||||
|
||||
jsr SCOPE.New
|
||||
bcs .19
|
||||
|
||||
>LDYA L.CC.TYPEQUAL
|
||||
jsr CC.LookupID
|
||||
bcs .1
|
||||
|
@ -255,26 +267,28 @@ KW.FOR jsr CC.GetCharNB
|
|||
|
||||
.19 rts
|
||||
|
||||
.29 lda #E.CSYN
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
.1 jsr STMT.Get get s1
|
||||
bcs .19
|
||||
|
||||
* jsr KW.StackDiscard
|
||||
|
||||
.2 jsr CC.GetCharNB
|
||||
bcs .9
|
||||
bcs .29
|
||||
|
||||
cmp #';'
|
||||
bne .9
|
||||
bne .29
|
||||
|
||||
jsr CORE.GetNCharNB skip ';'
|
||||
bcs .9
|
||||
bcs .29
|
||||
*--------------------------------------
|
||||
lda #'L' LOOP Label
|
||||
jsr SYM.NewLabelA
|
||||
bcs .99
|
||||
|
||||
jsr EXP.Eval00 get e2
|
||||
.29 bcs .99
|
||||
bcs .99
|
||||
|
||||
jsr KW.TestZero
|
||||
bcs .99
|
||||
|
@ -309,8 +323,6 @@ KW.FOR jsr CC.GetCharNB
|
|||
jsr STMT.Get get s3
|
||||
bcs .99
|
||||
|
||||
* jsr KW.StackDiscard
|
||||
|
||||
jsr CC.GetCharNB
|
||||
bcs .9
|
||||
|
||||
|
@ -328,6 +340,9 @@ KW.FOR jsr CC.GetCharNB
|
|||
jsr SYM.NewLabelA
|
||||
bcs .99
|
||||
|
||||
jsr STMT.NewCPS00
|
||||
bcs .9
|
||||
|
||||
jmp STMT.SetCPSType
|
||||
|
||||
.9 lda #E.CSYN
|
||||
|
@ -343,8 +358,11 @@ KW.FOR.END lda #$60
|
|||
jsr SYM.NewLabelA
|
||||
bcs .99
|
||||
|
||||
clv pop context
|
||||
jsr SCOPE.Close
|
||||
bcs .99
|
||||
|
||||
jmp STMT.Close
|
||||
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
KW.SWITCH jsr CC.GetCharNB
|
||||
|
@ -494,7 +512,7 @@ KW.SWITCH.END lda #'J' define JMP Label
|
|||
lda (ZPCCStack),y
|
||||
>SYSCALL FreeMem
|
||||
|
||||
clv pop context
|
||||
jmp STMT.Close
|
||||
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
|
@ -593,26 +611,26 @@ KW.DEFAULT ldy CStackPtr
|
|||
KW.BREAK lda #'B'
|
||||
|
||||
jsr SYM.LookupLabelA
|
||||
bcs .9
|
||||
bcs .99
|
||||
|
||||
lda #$4C emit JMP break
|
||||
jmp CODE.TOABSYX
|
||||
|
||||
.9 lda #E.CSYN
|
||||
sec
|
||||
rts
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
KW.CONTINUE lda #'C'
|
||||
|
||||
jsr SYM.LookupLabelA
|
||||
bcs .9
|
||||
bcs .99
|
||||
|
||||
lda #$4C emit JMP cont
|
||||
jmp CODE.TOABSYX
|
||||
|
||||
.9 lda #E.CSYN
|
||||
sec
|
||||
rts
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
KW.RETURN ldx ZPLineBufPtr
|
||||
phx
|
||||
|
@ -646,8 +664,16 @@ KW.RETURN ldx ZPLineBufPtr
|
|||
jsr CODE.SetRetValue
|
||||
bcs .99
|
||||
|
||||
>LDYA L.PCC.LEAVE
|
||||
jmp CODE.EmitPCC
|
||||
lda #'X'
|
||||
jsr SYM.LookupLabelA
|
||||
bcs .9
|
||||
|
||||
lda #$4C emit JMP exit
|
||||
jmp CODE.TOABSYX
|
||||
|
||||
.9 lda #E.CSYN
|
||||
sec
|
||||
rts
|
||||
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
|
|
|
@ -33,8 +33,7 @@ CC.Link >LDYA L.MSG.LINKING
|
|||
|
||||
.2 ldy #SYM.SC
|
||||
lda (ZPSymBufPtr),y
|
||||
cmp #SYM.SC.TYPEDEF
|
||||
bcs .7
|
||||
bne .7 SYM.SC.STATIC
|
||||
|
||||
ldy #SYM.Addr+1
|
||||
lda (ZPSymBufPtr),y
|
||||
|
@ -55,7 +54,7 @@ CC.Link >LDYA L.MSG.LINKING
|
|||
rts
|
||||
|
||||
.9 >LDA.G bTrace
|
||||
bmi .2
|
||||
bmi .90
|
||||
|
||||
jsr CC.Link.Dump
|
||||
|
||||
|
@ -163,9 +162,19 @@ CC.Link.Update ldy #SYM.Addr
|
|||
>PUSHW ZPPtr1 SymID
|
||||
>PUSHW ZPSymBufPtr
|
||||
>PUSHBI 0
|
||||
|
||||
ldy #SYM.Q
|
||||
lda (ZPSymBufPtr),y
|
||||
and #SYM.Q.FUNC
|
||||
bne .1
|
||||
|
||||
ldy #SYM.DefSize
|
||||
lda (ZPSymBufPtr),y
|
||||
>PUSHA
|
||||
bra .2
|
||||
|
||||
.1 lda #SYM.F.MAX
|
||||
|
||||
.2 >PUSHA
|
||||
>SYSCALL SListSetData
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
|
|
@ -145,7 +145,7 @@ PCC.FH.RUN lda #0
|
|||
>PUSHA int ARGC (lo byte)
|
||||
|
||||
>PUSHW pData *char[] ARGV
|
||||
* >DEBUG
|
||||
>DEBUG
|
||||
PCC.FH.MAIN .EQ *-PCC.FH.ORG+1
|
||||
jsr $FFFF jsr main
|
||||
>PULLA
|
||||
|
|
|
@ -23,6 +23,15 @@ SCOPE.New ldy ScopeIdx
|
|||
sta (pData),y
|
||||
|
||||
dec bLocalScope
|
||||
|
||||
.DO _DBG_SCOPE=1
|
||||
>PUSHW L.MSG.DEBUG.SCIN
|
||||
jsr SCOPE.Push
|
||||
>PUSHB LocalPtr
|
||||
>PUSHBI 3
|
||||
>SYSCALL PrintF
|
||||
.FIN
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
|
@ -30,7 +39,16 @@ SCOPE.New ldy ScopeIdx
|
|||
sec
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
SCOPE.Close ldy ScopeIdx
|
||||
SCOPE.Close lda #'F' define FRAME SIZE
|
||||
jsr SYM.NewLabelA
|
||||
bcs .99
|
||||
|
||||
.DO _DBG_SCOPE=1
|
||||
>PUSHW L.MSG.DEBUG.SCOUT
|
||||
jsr SCOPE.Push
|
||||
.FIN
|
||||
|
||||
ldy ScopeIdx
|
||||
cpy #CC.ScopeIDs
|
||||
beq *
|
||||
|
||||
|
@ -40,7 +58,18 @@ SCOPE.Close ldy ScopeIdx
|
|||
|
||||
inc bLocalScope
|
||||
|
||||
rts
|
||||
.DO _DBG_SCOPE=1
|
||||
|
||||
>PUSHB LocalPtr
|
||||
jsr SCOPE.Push
|
||||
>PUSHBI 5
|
||||
>SYSCALL PrintF
|
||||
* >DEBUG
|
||||
.FIN
|
||||
|
||||
clc
|
||||
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
SCOPE.Push ldy ScopeIdx
|
||||
|
||||
|
|
|
@ -123,70 +123,71 @@ STMT.SetVar stz ExpState
|
|||
|
||||
*--------------------------------------
|
||||
STMT.Stmt.END ldy CStackPtr
|
||||
beq STMT.POP.8
|
||||
beq STMT.POP.8 Global context
|
||||
|
||||
lda (ZPCCStack),y
|
||||
bmi STMT.POP.8 local F context
|
||||
* in an istruction ...
|
||||
iny CPS.TERM
|
||||
lda (ZPCCStack),y
|
||||
cmp #'}'
|
||||
beq STMT.POP.8
|
||||
beq STMT.POP.8 in a CPS...
|
||||
|
||||
cmp #';' must be ';' on stack....
|
||||
beq STMT.POP
|
||||
beq STMT.End
|
||||
|
||||
STMT.POP.9 lda #E.STACKERROR
|
||||
sec
|
||||
rts
|
||||
|
||||
STMT.POP.8 clc
|
||||
rts
|
||||
STMT.POP.99 rts
|
||||
*--------------------------------------
|
||||
STMT.CPStmt.END ldy CStackPtr
|
||||
beq STMT.POP.9
|
||||
|
||||
iny
|
||||
|
||||
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.POP dey CPS.KW
|
||||
jsr SCOPE.Close
|
||||
bcs STMT.POP.99
|
||||
*--------------------------------------
|
||||
STMT.End ldy CStackPtr CPS.KW
|
||||
lda (ZPCCStack),y
|
||||
jsr STMT.End
|
||||
bcs .99
|
||||
|
||||
bvs .8 DONT POP reused context (ELSE....)
|
||||
|
||||
ldy #CPS.LOCAL
|
||||
tax
|
||||
jmp (J.CC.KW.END,x)
|
||||
*--------------------------------------
|
||||
STMT.Close ldy CStackPtr
|
||||
iny
|
||||
iny CPS.LOCAL
|
||||
lda (ZPCCStack),y
|
||||
sta LocalPtr
|
||||
|
||||
lda CStackPtr
|
||||
* clc
|
||||
clc
|
||||
adc #CPS
|
||||
sta CStackPtr
|
||||
|
||||
.8 clc
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
STMT.End tax
|
||||
bmi .8
|
||||
|
||||
jmp (J.CC.KW.END,x)
|
||||
|
||||
.8 jmp F.Def.END
|
||||
*--------------------------------------
|
||||
STMT.NewCPS00 lda #0
|
||||
jsr CC.Push no T/Q
|
||||
jsr CC.Push
|
||||
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
|
||||
|
||||
|
|
156
BIN/CC.S.SYM.txt
156
BIN/CC.S.SYM.txt
|
@ -11,7 +11,7 @@ SYM.New >STYA ZPPtr2 T/Q
|
|||
|
||||
bit bPass2
|
||||
bpl SYM.New.1
|
||||
|
||||
* PASS 2
|
||||
>PUSHB.G CC.hSyms
|
||||
>PUSHW ZPLineBufPtr
|
||||
jsr SCOPE.Push
|
||||
|
@ -43,7 +43,7 @@ SYM.New.1 jsr SYM.BufInitYAXC set buf according C
|
|||
>STYA.G CC.SymID Y,A = KeyID
|
||||
|
||||
jsr CC.SkipX X = KeyLen
|
||||
.DO DBG_SYM=1
|
||||
.DO _DBG_SYM=1
|
||||
jsr SYM.DEBUG0
|
||||
.FIN
|
||||
*--------------------------------------
|
||||
|
@ -185,22 +185,21 @@ SYM.SetAddrL ldy #SYM.SizeOf+1
|
|||
lda (ZPSymBufPtr),y
|
||||
bne .9
|
||||
|
||||
dey SYM.SizeOf
|
||||
|
||||
lda (ZPSymBufPtr),y
|
||||
|
||||
lda LocalPtr
|
||||
tax
|
||||
|
||||
clc
|
||||
adc LocalPtr
|
||||
sta LocalPtr
|
||||
|
||||
dey SYM.SizeOf
|
||||
adc (ZPSymBufPtr),y
|
||||
bcs .9
|
||||
|
||||
sta LocalPtr
|
||||
|
||||
txa
|
||||
ldy #SYM.Addr
|
||||
sta (ZPSymBufPtr),y
|
||||
|
||||
ldy #SYM.SizeOf
|
||||
lda (ZPSymBufPtr),y
|
||||
jsr CODE.nAddLocal
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
|
@ -226,10 +225,10 @@ SYM.BufInitYAXC pha
|
|||
|
||||
.1 iny
|
||||
sta (ZPSymBufPtr),y
|
||||
cpy #SYM.DefSize-1
|
||||
bne .1
|
||||
cpy #SYM
|
||||
bcc .1
|
||||
|
||||
iny #SYM.DefSize
|
||||
ldy #SYM.DefSize
|
||||
lda #SYM.Def
|
||||
sta (ZPSymBufPtr),y
|
||||
|
||||
|
@ -453,52 +452,6 @@ SYM.AddByte pha
|
|||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
SYM.NewLabelA bit bPass2
|
||||
bmi .8
|
||||
|
||||
>STA.G CC.Label+1 _A = "B"reak, "C"ontinue...
|
||||
|
||||
>PUSHB.G CC.hSyms
|
||||
>PUSHEA.G CC.Label
|
||||
jsr SCOPE.Push
|
||||
>SYSCALL SListNewKey
|
||||
bcs .99
|
||||
|
||||
>STYA.G CC.SymID Y,A = KeyID
|
||||
|
||||
lda #SYM.T.VOID
|
||||
sta (ZPSymBufPtr) #SYM.T
|
||||
|
||||
lda #SYM.Q.POINTER
|
||||
ldy #SYM.Q
|
||||
sta (ZPSymBufPtr),y
|
||||
|
||||
lda #SYM.SC.STATIC
|
||||
iny #SYM.SC
|
||||
sta (ZPSymBufPtr),y
|
||||
|
||||
lda #0
|
||||
|
||||
.1 iny
|
||||
sta (ZPSymBufPtr),y
|
||||
cpy #SYM.DefSize-1
|
||||
bne .1
|
||||
|
||||
iny #SYM.DefSize
|
||||
lda #SYM.Def
|
||||
sta (ZPSymBufPtr),y
|
||||
|
||||
>LDYA ZPCCCode
|
||||
jsr SYM.SetAddrYA
|
||||
.DO DBG_SYM=1
|
||||
jsr SYM.DEBUG0
|
||||
.FIN
|
||||
jmp SYM.Store
|
||||
|
||||
.8 clc
|
||||
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
SYM.Update sec
|
||||
.HS 90 BCC
|
||||
*--------------------------------------
|
||||
|
@ -508,7 +461,7 @@ SYM.Store clc
|
|||
|
||||
|
||||
php
|
||||
.DO DBG_SYM=1
|
||||
.DO _DBG_SYM=1
|
||||
bcc .10
|
||||
|
||||
jsr SYM.DEBUG1
|
||||
|
@ -613,6 +566,65 @@ SYM.Lookup >LDA.G CC.LookupIdx
|
|||
* clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
* "B"reak
|
||||
* "C"ontinue
|
||||
* "D"efault
|
||||
* "E"lse
|
||||
* "F"rameSize
|
||||
* "J"umptable
|
||||
* "L"oop
|
||||
* "S"statement
|
||||
* e"X"it
|
||||
*--------------------------------------
|
||||
SYM.NewLabelA bit bPass2
|
||||
bpl .10
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.10 >STA.G CC.Label+1
|
||||
|
||||
>PUSHB.G CC.hSyms
|
||||
>PUSHEA.G CC.Label
|
||||
jsr SCOPE.Push
|
||||
>SYSCALL SListNewKey
|
||||
bcs .99
|
||||
|
||||
>STYA.G CC.SymID Y,A = KeyID
|
||||
|
||||
ldy #SYM.T.VOID
|
||||
lda #SYM.Q.POINTER
|
||||
ldx #SYM.SC.STATIC
|
||||
sec
|
||||
jsr SYM.BufInitYAXC
|
||||
|
||||
>LDA.G CC.Label+1
|
||||
cmp #'F'
|
||||
bne .1
|
||||
|
||||
lda LocalPtr
|
||||
ldy #SYM.Addr
|
||||
sta (ZPSymBufPtr),y
|
||||
bra .2
|
||||
|
||||
.1 jsr SYM.SetAddrCCode
|
||||
|
||||
.2 .DO _DBG_SYM=1
|
||||
jsr SYM.DEBUG0
|
||||
.FIN
|
||||
|
||||
>PUSHB.G CC.hSyms
|
||||
>PUSHW.G CC.SymID
|
||||
>PUSHW ZPSymBufPtr
|
||||
>PUSHBI 0
|
||||
|
||||
ldy #SYM.DefSize
|
||||
lda (ZPSymBufPtr),y
|
||||
>PUSHA
|
||||
>SYSCALL SListAddData
|
||||
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
SYM.LookupLabelA
|
||||
bit bPass2
|
||||
bmi .1
|
||||
|
@ -626,9 +638,9 @@ SYM.LookupLabelA
|
|||
|
||||
>PUSHB.G CC.hSyms ...for SListGetData
|
||||
|
||||
lda ScopeIdx
|
||||
ldy ScopeIdx
|
||||
|
||||
.2 pha
|
||||
.2 phy
|
||||
>PUSHB.G CC.hSyms
|
||||
>PUSHEA.G CC.Label
|
||||
ply
|
||||
|
@ -637,12 +649,12 @@ SYM.LookupLabelA
|
|||
>SYSCALL SListLookup
|
||||
bcc .8
|
||||
|
||||
pla
|
||||
cmp #CC.ScopeIDs
|
||||
ply
|
||||
cpy #CC.ScopeIDs
|
||||
beq .9
|
||||
|
||||
dec
|
||||
dec
|
||||
dey
|
||||
dey
|
||||
bra .2
|
||||
|
||||
.9 inc pStack discard CC.hSyms
|
||||
|
@ -651,7 +663,9 @@ SYM.LookupLabelA
|
|||
sec
|
||||
rts
|
||||
|
||||
.8 >PUSHA KeyID.HI
|
||||
.8 plx
|
||||
|
||||
>PUSHA KeyID.HI
|
||||
tya
|
||||
>PUSHA KeyID.LO
|
||||
|
||||
|
@ -859,6 +873,8 @@ SYM.SetSizeOf ldy #SYM.SizeOf
|
|||
pla
|
||||
rts
|
||||
*--------------------------------------
|
||||
SYM.SetAddrCCode
|
||||
>LDYA ZPCCCode
|
||||
SYM.SetAddrYA phy
|
||||
|
||||
ldy #SYM.Addr+1
|
||||
|
@ -871,7 +887,7 @@ SYM.SetAddrYA phy
|
|||
|
||||
rts
|
||||
*--------------------------------------
|
||||
.DO DBG_SYM=1
|
||||
.DO _DBG_SYM=1
|
||||
SYM.DEBUG0 >PUSHW L.MSG.DEBUG.SYM0
|
||||
>PUSHW.G CC.SymID
|
||||
jsr SCOPE.Push
|
||||
|
|
73
BIN/CC.S.txt
73
BIN/CC.S.txt
|
@ -10,7 +10,9 @@ NEW
|
|||
.INB inc/mli.i
|
||||
.INB inc/mli.e.i
|
||||
*--------------------------------------
|
||||
DBG_SYM .EQ 1
|
||||
_DBG_SYM .EQ 0
|
||||
_DBG_SCOPE .EQ 1
|
||||
_DBG_OUT .EQ 0
|
||||
*--------------------------------------
|
||||
FILES.MAX .EQ 4
|
||||
LIBS.MAX .EQ 4
|
||||
|
@ -48,16 +50,17 @@ SYM.SC.EXTERN .EQ 6
|
|||
SYM.SC.TYPEDEF .EQ 8
|
||||
SYM.SC.DEFINE .EQ 10
|
||||
SYM.SC.TAG .EQ 12
|
||||
* .EQ 3
|
||||
SYM.DefSize .EQ 3
|
||||
SYM.SizeOf .EQ 4
|
||||
SYM.Addr .EQ 6
|
||||
SYM.BitO .EQ 8
|
||||
SYM.BitW .EQ 9
|
||||
SYM.DefSize .EQ 10
|
||||
*
|
||||
SYM.Def .EQ 12 Funtions : fTQ,a1TQ,a2TQ....
|
||||
*
|
||||
SYM .EQ 14
|
||||
*
|
||||
SYM.Def .EQ 14 Funtions : fTQ,a1TQ,a2TQ....
|
||||
*
|
||||
SYM .EQ 16
|
||||
SYM.F.MAX .EQ 64
|
||||
*--------------------------------------
|
||||
SU.F.T .EQ 0
|
||||
|
@ -67,18 +70,13 @@ SU.F.BitO .EQ 4
|
|||
SU.F.BitW .EQ 5
|
||||
SU.F.Name .EQ 6
|
||||
*--------------------------------------
|
||||
CPS.hMEM .EQ 5 switch/case
|
||||
CPS.Ptr .EQ 4
|
||||
|
||||
CPS.Q .EQ 5 f
|
||||
CPS.T .EQ 4
|
||||
|
||||
CPS.LOCAL .EQ 3
|
||||
CPS.STATE .EQ 2
|
||||
CPS.hMEM .EQ 4 switch/case
|
||||
CPS.Ptr .EQ 3
|
||||
CPS.LOCAL .EQ 2
|
||||
CPS.TERM .EQ 1
|
||||
CPS.KW .EQ 0
|
||||
*
|
||||
CPS .EQ 6
|
||||
CPS .EQ 5
|
||||
*--------------------------------------
|
||||
|
||||
*--------------------------------------
|
||||
|
@ -146,11 +144,20 @@ L.MSG.LINKING .DA MSG.LINKING
|
|||
L.MSG.LINKING2 .DA MSG.LINKING2
|
||||
L.MSG.GENERATING .DA MSG.GENERATING
|
||||
L.MSG.DEBUG .DA MSG.DEBUG
|
||||
.DO DBG_SYM=1
|
||||
.DO _DBG_SYM=1
|
||||
L.MSG.DEBUG.SYM0 .DA MSG.DEBUG.SYM0
|
||||
L.MSG.DEBUG.SYM1 .DA MSG.DEBUG.SYM1
|
||||
L.MSG.DEBUG.SYM2 .DA MSG.DEBUG.SYM2
|
||||
.FIN
|
||||
.DO _DBG_SCOPE=1
|
||||
L.MSG.DEBUG.SCIN .DA MSG.DEBUG.SCIN
|
||||
L.MSG.DEBUG.SC .DA MSG.DEBUG.SC
|
||||
L.MSG.DEBUG.SCOUT .DA MSG.DEBUG.SCOUT
|
||||
.FIN
|
||||
.DO _DBG_OUT=1
|
||||
L.MSG.DEBUG.CSOUT .DA MSG.DEBUG.CSOUT
|
||||
L.MSG.DEBUG.OUT .DA MSG.DEBUG.OUT
|
||||
.FIN
|
||||
L.MSG.TRACE .DA MSG.TRACE
|
||||
L.MSG.RTSTK .DA MSG.RTSTK
|
||||
L.MSG.ERROR .DA MSG.ERROR
|
||||
|
@ -243,7 +250,7 @@ J.CC.STYPES .DA TYPE.SCHAR
|
|||
.DA TYPE.SLONG
|
||||
*--------------------------------------
|
||||
L.CC.MAIN .DA CC.MAIN
|
||||
L.CC._RETURN_ .DA CC._RETURN_
|
||||
L.CC._RETURN_ .DA CC._RETURN_
|
||||
L.CC.SYSCALL .DA CC.SYSCALL
|
||||
L.CC.FPUCALL .DA CC.FPUCALL
|
||||
*--------------------------------------
|
||||
|
@ -384,7 +391,7 @@ CS.RUN.CLOOP jsr CORE.CompileFile
|
|||
|
||||
jsr CC.Link
|
||||
bcs .99
|
||||
* >DEBUG
|
||||
>DEBUG
|
||||
jsr CC.Link.CheckMain
|
||||
bcs .99
|
||||
|
||||
|
@ -404,11 +411,11 @@ CS.RUN.CLOOP jsr CORE.CompileFile
|
|||
cmp #MLI.E.EOF
|
||||
bne .9
|
||||
|
||||
jsr CODE.EmitTail
|
||||
bcs .9
|
||||
|
||||
jsr FIO.FClose
|
||||
bne .2
|
||||
|
||||
jsr CODE.EmitTail
|
||||
bcs .9
|
||||
*--------------------------------------
|
||||
>LDYA L.MSG.ALLDONE
|
||||
>SYSCALL PutS
|
||||
|
@ -526,6 +533,15 @@ CS.QUIT jsr CODE.Quit
|
|||
rts
|
||||
*--------------------------------------
|
||||
PrintTraceMsg
|
||||
.DO _DBG_SCOPE=1
|
||||
>PUSHW L.MSG.DEBUG.SC
|
||||
jsr SCOPE.Push
|
||||
>PUSHB LocalPtr
|
||||
>PUSHBI 3
|
||||
>SYSCALL PrintF
|
||||
* >DEBUG
|
||||
.FIN
|
||||
|
||||
ldy #S.PS.hStdOut
|
||||
* ldy #S.PS.hStdErr
|
||||
lda (pPS),y
|
||||
|
@ -676,11 +692,20 @@ MSG.LINKING2 .CZ "*** %H:%H:%18s T/Q=%h/%h, SC=%h, Def=%h, SizeOf=%H, @=%H\r\n"
|
|||
MSG.GENERATING .CZ "*** Generating: %s\r\n"
|
||||
MSG.DEBUG .CS "*** pCode=%H, pConst=%H, pData=%H, pStack=%H\r\n"
|
||||
.CZ " LSP=%h, CSP=%H:%h>%h:%h, ScopeIdx=%h\r\n"
|
||||
.DO DBG_SYM=1
|
||||
.DO _DBG_SYM=1
|
||||
MSG.DEBUG.SYM0 .CZ "New SymID=%H[%H],T=%h,Q=%h "
|
||||
MSG.DEBUG.SYM1 .CZ "Upd SymID=%H\r\n"
|
||||
MSG.DEBUG.SYM2 .CZ "Sto SymID=%H\r\n"
|
||||
.FIN
|
||||
.DO _DBG_SCOPE=1
|
||||
MSG.DEBUG.SCIN .CZ "Scope { %H (%h)\r\n"
|
||||
MSG.DEBUG.SC .CZ "Scope = %H (%h)\r\n"
|
||||
MSG.DEBUG.SCOUT .CZ "Scope } %H (%h) -> %H\r\n"
|
||||
.FIN
|
||||
.DO _DBG_OUT=1
|
||||
MSG.DEBUG.CSOUT .CZ "\r\n%H-"
|
||||
MSG.DEBUG.OUT .CZ "%h"
|
||||
.FIN
|
||||
MSG.TRACE .CZ "%5D> %s\r\n"
|
||||
MSG.RTSTK .CZ "<pBase=%H, pVar=%H, (pVar)=%H, pStack=%H>\r\n"
|
||||
MSG.ERROR .CZ " %s^\r\n"
|
||||
|
@ -815,13 +840,13 @@ CC.TYPES .PS "void"
|
|||
.PS "float"
|
||||
.HS 00
|
||||
*--------------------------------------
|
||||
CC.Type2FPU .DA #FPU.wMUL,#FPU.iMUL,#FPU.uMUL,#FPU.lMUL,#FPU.fMUL
|
||||
CC.Type2FPU .DA #FPU.wMUL,#FPU.iMUL,#FPU.uMUL,#FPU.lMUL,#FPU.fMUL
|
||||
*--------------------------------------
|
||||
CC.FTYPES .PS "fastcall"
|
||||
* .HS 00
|
||||
*--------------------------------------
|
||||
CC.TYPESIZE .HS 0001010202040405
|
||||
CC.TYPESIGN .HS 0000FF00FF00FFFF
|
||||
CC.TYPESIZE .HS 0001010202040405
|
||||
CC.TYPESIGN .HS 0000FF00FF00FFFF
|
||||
*--------------------------------------
|
||||
CC.MAIN .AZ "main"
|
||||
CC.MAIN.DEF .DA #SYM.T.SINT,#0,#SYM.T.SINT,#0,#SYM.T.UCHAR,#SYM.Q.PPOINTER,0
|
||||
|
|
|
@ -438,12 +438,12 @@ PRODOS.ERROR
|
|||
CHECK.DOT.DIGIT.OR.LETTER
|
||||
CMP #'.
|
||||
BEQ CHECKS.OK
|
||||
CMP #'_' allow underline in symbols too
|
||||
BEQ CHECKS.OK
|
||||
CHECK.DIGIT.OR.LETTER
|
||||
JSR CHECK.DIGIT
|
||||
BCS CHECKS.OK
|
||||
CHECK.LETTER
|
||||
CMP #'_' allow underline in symbols too
|
||||
BEQ CHECKS.OK
|
||||
CMP #'A
|
||||
BCC CHECKS.NOT.OK
|
||||
CMP #'Z+1
|
||||
|
|
Loading…
Reference in New Issue