2021-12-02 21:28:26 +00:00
|
|
|
|
NEW
|
|
|
|
|
AUTO 3,1
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
* Built in Keywords
|
|
|
|
|
*--------------------------------------
|
2022-09-04 20:12:49 +00:00
|
|
|
|
CC.KW.IF jsr CC.KW.BEGIN00
|
2022-08-20 14:37:37 +00:00
|
|
|
|
bcs .99
|
|
|
|
|
|
|
|
|
|
jsr CC.GetCharNB
|
2021-12-02 21:28:26 +00:00
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
cmp #'('
|
|
|
|
|
bne .9
|
|
|
|
|
|
|
|
|
|
jsr CC.GetNextCharNB
|
|
|
|
|
bcs .9
|
|
|
|
|
|
2022-01-30 21:47:08 +00:00
|
|
|
|
jsr CC.EXP.Eval00 Any var type
|
|
|
|
|
bcs .99
|
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
jsr CC.KW.TestZero Y,A=T/Q
|
2022-01-30 21:47:08 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
lda #'E'
|
|
|
|
|
jsr CC.SYM.LookupA
|
2021-12-02 21:28:26 +00:00
|
|
|
|
bcs .99
|
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
lda #$4C emit JMP else
|
|
|
|
|
jsr CODE.TOABSYX
|
|
|
|
|
bcs .99
|
2021-12-02 21:28:26 +00:00
|
|
|
|
|
|
|
|
|
jsr CC.GetCharNB
|
|
|
|
|
bcs .99
|
|
|
|
|
|
|
|
|
|
cmp #')'
|
|
|
|
|
bne .9
|
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
jmp CC.KW.STMT
|
2021-12-02 21:28:26 +00:00
|
|
|
|
|
|
|
|
|
.9 lda #E.CSYN
|
|
|
|
|
sec
|
2022-08-20 14:37:37 +00:00
|
|
|
|
.99 rts
|
2021-12-02 21:28:26 +00:00
|
|
|
|
*--------------------------------------
|
2022-08-20 14:37:37 +00:00
|
|
|
|
CC.KW.IF.END jsr CC.GetCharNBNL
|
|
|
|
|
bcs .1
|
2021-12-02 21:28:26 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
cmp #';'
|
|
|
|
|
beq .1
|
2021-12-02 21:28:26 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
>LDYA L.CC.KW2.IF Check allowed KW for IF....
|
|
|
|
|
jsr CC.LookupID
|
|
|
|
|
bcc .2
|
2022-01-30 21:47:08 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
.1 lda #'E' define ELSE Label
|
|
|
|
|
jsr CC.KW.NewLabel
|
|
|
|
|
bcs .99
|
|
|
|
|
|
|
|
|
|
clv pop context
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
.2 lda #'X'
|
|
|
|
|
jsr CC.SYM.LookupA
|
|
|
|
|
bcs .99
|
2021-12-02 21:28:26 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
lda #$4C emit JMP exit
|
|
|
|
|
jsr CODE.TOABSYX
|
|
|
|
|
bcs .99
|
2021-12-02 21:28:26 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
lda #'E' define ELSE Label
|
|
|
|
|
jsr CC.KW.NewLabel
|
|
|
|
|
bcs .99
|
2022-01-30 21:47:08 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
inc CStackPtr pop ; or }
|
|
|
|
|
|
|
|
|
|
lda #4 replace IF by ELSE keyword
|
|
|
|
|
ldy CStackPtr
|
|
|
|
|
sta (ZPCCStack),y
|
|
|
|
|
|
|
|
|
|
jsr CC.KW.STMT
|
|
|
|
|
bcs .99
|
|
|
|
|
|
|
|
|
|
bit .99 set V : DONT pop context
|
2022-01-30 21:47:08 +00:00
|
|
|
|
rts
|
2021-12-02 21:28:26 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
.9 lda #E.CSYN
|
|
|
|
|
sec
|
|
|
|
|
.99 rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
CC.KW.ELSE lda #E.CSYN illegal
|
|
|
|
|
sec
|
2021-12-02 21:28:26 +00:00
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2022-08-20 14:37:37 +00:00
|
|
|
|
CC.KW.ELSE.END lda #'X' define EXIT Label
|
|
|
|
|
jsr CC.KW.NewLabel
|
|
|
|
|
bcs .99
|
|
|
|
|
|
|
|
|
|
clv pop context
|
|
|
|
|
.99 rts
|
|
|
|
|
*--------------------------------------
|
2022-09-04 20:12:49 +00:00
|
|
|
|
CC.KW.WHILE jsr CC.KW.BEGIN00
|
2022-08-20 14:37:37 +00:00
|
|
|
|
bcs .99
|
|
|
|
|
|
|
|
|
|
lda #'C' define CONT Label
|
|
|
|
|
jsr CC.SYM.NewA
|
|
|
|
|
bcs .99
|
|
|
|
|
|
|
|
|
|
jsr CC.GetCharNB
|
2021-12-02 21:28:26 +00:00
|
|
|
|
bcs .9
|
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
cmp #'('
|
|
|
|
|
bne .9
|
2022-01-30 21:47:08 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
jsr CC.GetNextCharNB
|
2021-12-02 21:28:26 +00:00
|
|
|
|
bcs .9
|
2022-06-22 06:26:44 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
jsr CC.EXP.Eval00 Any var type
|
|
|
|
|
bcs .99
|
|
|
|
|
|
|
|
|
|
jsr CC.KW.TestZero
|
|
|
|
|
|
|
|
|
|
lda #'B'
|
|
|
|
|
jsr CC.SYM.LookupA
|
|
|
|
|
bcs .99
|
2022-06-22 06:26:44 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
lda #$4C emit JMP break:
|
2022-01-30 21:47:08 +00:00
|
|
|
|
jsr CODE.TOABSYX
|
2022-08-20 14:37:37 +00:00
|
|
|
|
bcs .99
|
2022-01-30 21:47:08 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
jsr CC.GetCharNB
|
|
|
|
|
bcs .99
|
2022-01-30 21:47:08 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
cmp #')'
|
|
|
|
|
bne .9
|
2022-01-30 21:47:08 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
jmp CC.KW.STMT
|
2022-01-30 21:47:08 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
.9 lda #E.CSYN
|
2022-01-30 21:47:08 +00:00
|
|
|
|
sec
|
2022-08-20 14:37:37 +00:00
|
|
|
|
.99 rts
|
2022-01-30 21:47:08 +00:00
|
|
|
|
*--------------------------------------
|
2022-08-20 14:37:37 +00:00
|
|
|
|
CC.KW.WHILE.END lda #'C'
|
|
|
|
|
jsr CC.KW.GetLabel
|
|
|
|
|
bcs .99
|
|
|
|
|
|
|
|
|
|
lda #$4C
|
|
|
|
|
jsr CODE.TOABSYX emit JMP cont:
|
|
|
|
|
bcs .99
|
|
|
|
|
|
|
|
|
|
lda #'B' define BREAK Label
|
|
|
|
|
jsr CC.KW.NewLabel
|
|
|
|
|
bcs .99
|
|
|
|
|
|
|
|
|
|
clv pop context
|
|
|
|
|
|
|
|
|
|
.99 rts
|
|
|
|
|
*--------------------------------------
|
2022-09-04 20:12:49 +00:00
|
|
|
|
CC.KW.DO jsr CC.KW.BEGIN00
|
2022-08-20 14:37:37 +00:00
|
|
|
|
bcs .99
|
|
|
|
|
|
|
|
|
|
lda #'C' define CONT Label
|
|
|
|
|
jsr CC.SYM.NewA
|
|
|
|
|
bcs .99
|
|
|
|
|
|
|
|
|
|
jmp CC.KW.STMT
|
|
|
|
|
|
|
|
|
|
.99 rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
CC.KW.DO.END >LDYA L.CC.KW2.DO Check allowed KW for DO....
|
|
|
|
|
jsr CC.LookupID
|
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
jsr CC.GetCharNB
|
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
cmp #'('
|
|
|
|
|
bne .9
|
|
|
|
|
|
|
|
|
|
jsr CC.GetNextCharNB
|
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
jsr CC.EXP.Eval00 Any var type
|
|
|
|
|
bcs .99
|
|
|
|
|
|
|
|
|
|
jsr CC.KW.TestnZero
|
|
|
|
|
|
|
|
|
|
lda #'C'
|
|
|
|
|
jsr CC.KW.GetLabel
|
|
|
|
|
bcs .99
|
|
|
|
|
|
|
|
|
|
lda #$4C emit JMP cont
|
|
|
|
|
jsr CODE.TOABSYX
|
|
|
|
|
bcs .99
|
|
|
|
|
|
|
|
|
|
lda #'B' define BREAK Label
|
|
|
|
|
jsr CC.KW.NewLabel
|
|
|
|
|
bcs .99
|
|
|
|
|
|
|
|
|
|
jsr CC.GetCharNB
|
|
|
|
|
bcs .99
|
|
|
|
|
|
|
|
|
|
cmp #')'
|
|
|
|
|
bne .9
|
|
|
|
|
|
|
|
|
|
jsr CC.GetNextCharNB
|
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
clv pop context
|
2022-01-30 21:47:08 +00:00
|
|
|
|
clc
|
|
|
|
|
rts
|
2022-08-20 14:37:37 +00:00
|
|
|
|
|
|
|
|
|
.9 lda #E.CSYN
|
|
|
|
|
sec
|
|
|
|
|
.99 rts
|
2022-01-30 21:47:08 +00:00
|
|
|
|
*--------------------------------------
|
2022-08-20 14:37:37 +00:00
|
|
|
|
* for (s1;e2;s3) s;
|
2022-01-30 21:47:08 +00:00
|
|
|
|
*
|
2022-06-12 20:42:22 +00:00
|
|
|
|
* { <- new scope : allows for(int i=1; ....)
|
2022-08-20 14:37:37 +00:00
|
|
|
|
* s1;
|
2022-06-12 20:42:22 +00:00
|
|
|
|
* loop:
|
2022-08-20 14:37:37 +00:00
|
|
|
|
* while (e2) jmp break:
|
2022-06-12 20:42:22 +00:00
|
|
|
|
* {
|
2022-08-20 14:37:37 +00:00
|
|
|
|
* s; jsr s:
|
2022-06-12 20:42:22 +00:00
|
|
|
|
* cont:
|
2022-08-20 14:37:37 +00:00
|
|
|
|
* s3; jmp loop:
|
2022-06-12 20:42:22 +00:00
|
|
|
|
* }
|
2022-08-20 14:37:37 +00:00
|
|
|
|
* s:
|
|
|
|
|
* <s>;
|
|
|
|
|
* break:
|
2022-01-30 21:47:08 +00:00
|
|
|
|
* }
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
CC.KW.FOR jsr CC.GetCharNB
|
2022-08-20 14:37:37 +00:00
|
|
|
|
bcs .29
|
2022-01-30 21:47:08 +00:00
|
|
|
|
|
|
|
|
|
cmp #'('
|
2022-08-20 14:37:37 +00:00
|
|
|
|
bne .29
|
2022-01-30 21:47:08 +00:00
|
|
|
|
|
2022-09-04 20:12:49 +00:00
|
|
|
|
jsr CC.KW.BEGIN00
|
2022-08-20 14:37:37 +00:00
|
|
|
|
bcs .29
|
2021-12-02 21:28:26 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
jsr CC.GetNextCharNB skip '('
|
|
|
|
|
bcs .29
|
2022-01-30 21:47:08 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
>LDYA L.CC.TYPEQUAL
|
|
|
|
|
jsr CC.LookupID
|
|
|
|
|
bcs .1
|
2022-06-22 06:26:44 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
jsr CC.DECL
|
|
|
|
|
bcc .2
|
|
|
|
|
|
|
|
|
|
.19 rts
|
|
|
|
|
|
|
|
|
|
.1 jsr CC.STMT get s1
|
|
|
|
|
bcs .19
|
|
|
|
|
|
|
|
|
|
* jsr CC.KW.StackDiscard
|
|
|
|
|
|
|
|
|
|
.2 jsr CC.GetCharNB
|
2022-06-12 20:42:22 +00:00
|
|
|
|
bcs .9
|
2022-01-30 21:47:08 +00:00
|
|
|
|
|
|
|
|
|
cmp #';'
|
2022-06-12 20:42:22 +00:00
|
|
|
|
bne .9
|
2022-01-30 21:47:08 +00:00
|
|
|
|
|
|
|
|
|
jsr CC.GetNextCharNB skip ';'
|
2022-06-12 20:42:22 +00:00
|
|
|
|
bcs .9
|
2022-01-30 21:47:08 +00:00
|
|
|
|
*--------------------------------------
|
2022-08-20 14:37:37 +00:00
|
|
|
|
lda #'L' LOOP Label
|
|
|
|
|
jsr CC.SYM.NewA
|
|
|
|
|
bcs .99
|
2022-01-30 21:47:08 +00:00
|
|
|
|
|
|
|
|
|
jsr CC.EXP.Eval00 get e2
|
|
|
|
|
.29 bcs .99
|
|
|
|
|
|
|
|
|
|
jsr CC.KW.TestZero
|
|
|
|
|
bcs .99
|
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
lda #'B'
|
|
|
|
|
jsr CC.SYM.LookupA
|
|
|
|
|
bcs .99
|
2022-01-30 21:47:08 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
lda #$4C emit JMP break:
|
|
|
|
|
jsr CODE.TOABSYX
|
2022-01-30 21:47:08 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
lda #'S'
|
|
|
|
|
jsr CC.SYM.LookupA
|
|
|
|
|
bcs .99
|
2022-01-30 21:47:08 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
lda #$20 emit JSR s:
|
|
|
|
|
jsr CODE.TOABSYX
|
2022-01-30 21:47:08 +00:00
|
|
|
|
|
|
|
|
|
jsr CC.GetCharNB
|
2021-12-02 21:28:26 +00:00
|
|
|
|
bcs .9
|
|
|
|
|
|
2022-01-30 21:47:08 +00:00
|
|
|
|
cmp #';'
|
|
|
|
|
bne .9
|
|
|
|
|
|
|
|
|
|
jsr CC.GetNextCharNB skip ';'
|
|
|
|
|
bcs .9
|
|
|
|
|
*--------------------------------------
|
2022-08-20 14:37:37 +00:00
|
|
|
|
lda #'C' CONT Label
|
|
|
|
|
jsr CC.SYM.NewA
|
|
|
|
|
bcs .99
|
2022-01-30 21:47:08 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
jsr CC.STMT get s3
|
2022-01-30 21:47:08 +00:00
|
|
|
|
bcs .99
|
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
* jsr CC.KW.StackDiscard
|
2022-01-30 21:47:08 +00:00
|
|
|
|
|
|
|
|
|
jsr CC.GetCharNB
|
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
cmp #')'
|
|
|
|
|
bne .9
|
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
lda #'L'
|
|
|
|
|
jsr CC.SYM.LookupA
|
|
|
|
|
bcs .99
|
2022-01-30 21:47:08 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
lda #$4C
|
|
|
|
|
jsr CODE.TOABSYX emit JMP loop
|
2022-01-30 21:47:08 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
lda #'S' S Label
|
|
|
|
|
jsr CC.SYM.NewA
|
|
|
|
|
bcs .99
|
2022-01-30 21:47:08 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
jmp CC.KW.STMT
|
2022-01-30 21:47:08 +00:00
|
|
|
|
|
|
|
|
|
.9 lda #E.CSYN
|
|
|
|
|
sec
|
|
|
|
|
.99 rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
CC.KW.FOR.END lda #$60
|
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
jsr CODE.EmitByte set RTS for JSR code;
|
|
|
|
|
bcs .99
|
2022-01-30 21:47:08 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
lda #'B' define BREAK Label
|
|
|
|
|
jsr CC.KW.NewLabel
|
|
|
|
|
bcs .99
|
2021-12-02 21:28:26 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
clv pop context
|
2021-12-02 21:28:26 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
.99 rts
|
2021-12-02 21:28:26 +00:00
|
|
|
|
*--------------------------------------
|
2022-09-04 20:12:49 +00:00
|
|
|
|
CC.KW.SWITCH jsr CC.GetCharNB
|
|
|
|
|
bcs .98
|
|
|
|
|
|
|
|
|
|
cmp #'('
|
|
|
|
|
bne .98
|
|
|
|
|
|
|
|
|
|
jsr CC.GetNextCharNB
|
|
|
|
|
bcs .98
|
|
|
|
|
|
|
|
|
|
jsr CC.EXP.Eval00 Any var type
|
|
|
|
|
bcs .99 Y,A=T/Q
|
|
|
|
|
|
|
|
|
|
tax
|
|
|
|
|
bne .97
|
|
|
|
|
|
|
|
|
|
cpy #SYM.T.UCHAR
|
|
|
|
|
bcc .97
|
|
|
|
|
|
|
|
|
|
cpy #SYM.T.FLOAT
|
|
|
|
|
bcs .97
|
|
|
|
|
|
|
|
|
|
phy
|
|
|
|
|
tya
|
|
|
|
|
jsr CC.Push push integral type
|
|
|
|
|
ply
|
|
|
|
|
bcs .99
|
|
|
|
|
|
|
|
|
|
lda CC.TYPESIZE-1,y
|
|
|
|
|
|
|
|
|
|
jsr CC.Push push SizeOf(type)
|
|
|
|
|
bcs .99
|
|
|
|
|
|
|
|
|
|
jsr CC.KW.BEGIN
|
|
|
|
|
bcs .99
|
|
|
|
|
|
|
|
|
|
jsr CC.GetCharNB
|
|
|
|
|
bcs .99
|
|
|
|
|
|
|
|
|
|
cmp #')'
|
|
|
|
|
bne .98
|
|
|
|
|
|
|
|
|
|
jmp CC.KW.STMT
|
|
|
|
|
|
|
|
|
|
.97 lda #E.TMISMATCH
|
|
|
|
|
sec
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
.98 lda #E.CSYN
|
|
|
|
|
sec
|
|
|
|
|
.99 rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
CC.KW.SWITCH.END
|
|
|
|
|
lda #'B' define BREAK Label
|
|
|
|
|
jsr CC.KW.NewLabel
|
|
|
|
|
bcs .99
|
|
|
|
|
|
|
|
|
|
clv pop context
|
|
|
|
|
|
|
|
|
|
.99 rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
CC.KW.CASE ldy CStackPtr
|
|
|
|
|
beq .9
|
|
|
|
|
|
|
|
|
|
iny skip ; or }
|
|
|
|
|
lda (ZPCCStack),y
|
|
|
|
|
cmp #10 SWITCH ??
|
|
|
|
|
bne .9
|
|
|
|
|
|
|
|
|
|
lda CStackPtr
|
|
|
|
|
clc
|
|
|
|
|
adc #7
|
|
|
|
|
tay
|
|
|
|
|
|
|
|
|
|
lda (ZPCCStack),y type
|
|
|
|
|
tay
|
|
|
|
|
lda #0 for integral type
|
|
|
|
|
|
|
|
|
|
jsr CC.EXP.Eval
|
|
|
|
|
bcs .99
|
|
|
|
|
|
|
|
|
|
jsr CC.GetCharNB
|
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
cmp #':'
|
|
|
|
|
bne .9
|
|
|
|
|
|
|
|
|
|
jsr CC.GetNextCharNB skip ':'
|
|
|
|
|
|
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
.9 lda #E.CSYN
|
2022-06-12 20:42:22 +00:00
|
|
|
|
sec
|
2022-09-04 20:12:49 +00:00
|
|
|
|
.99 rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
CC.KW.DEFAULT ldy CStackPtr
|
|
|
|
|
beq .9
|
|
|
|
|
|
|
|
|
|
iny skip ; or }
|
|
|
|
|
lda (ZPCCStack),y
|
|
|
|
|
cmp #10 SWITCH ??
|
|
|
|
|
bne .9
|
|
|
|
|
|
|
|
|
|
jsr CC.GetCharNB
|
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
cmp #':'
|
|
|
|
|
bne .9
|
|
|
|
|
|
|
|
|
|
jsr CC.GetNextCharNB skip ':'
|
|
|
|
|
|
|
|
|
|
clc
|
2022-06-12 20:42:22 +00:00
|
|
|
|
rts
|
2022-09-04 20:12:49 +00:00
|
|
|
|
|
|
|
|
|
.9 lda #E.CSYN
|
|
|
|
|
sec
|
|
|
|
|
.99 rts
|
2022-06-12 20:42:22 +00:00
|
|
|
|
*--------------------------------------
|
2022-08-20 14:37:37 +00:00
|
|
|
|
CC.KW.BREAK lda #'B'
|
|
|
|
|
|
|
|
|
|
jsr CC.KW.LookupLabel
|
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
lda #$4C emit JMP break
|
|
|
|
|
jmp CODE.TOABSYX
|
|
|
|
|
|
|
|
|
|
.9 lda #E.CSYN
|
2022-06-12 20:42:22 +00:00
|
|
|
|
sec
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2022-08-20 14:37:37 +00:00
|
|
|
|
CC.KW.CONTINUE lda #'C'
|
|
|
|
|
|
|
|
|
|
jsr CC.KW.LookupLabel
|
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
lda #$4C emit JMP cont
|
|
|
|
|
jmp CODE.TOABSYX
|
|
|
|
|
|
|
|
|
|
.9 lda #E.CSYN
|
2022-01-30 21:47:08 +00:00
|
|
|
|
sec
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
CC.KW.RETURN ldy CStackPtr
|
|
|
|
|
beq .9
|
|
|
|
|
|
|
|
|
|
.1 iny skip ; or }
|
|
|
|
|
lda (ZPCCStack),y
|
|
|
|
|
bmi .7 f()
|
|
|
|
|
|
|
|
|
|
tya
|
|
|
|
|
clc
|
2022-08-20 14:37:37 +00:00
|
|
|
|
adc #5 skip CPStmt (6 bytes)
|
2022-01-30 21:47:08 +00:00
|
|
|
|
tay
|
|
|
|
|
bcc .1
|
|
|
|
|
|
|
|
|
|
.9 lda #E.STACKERROR
|
|
|
|
|
sec
|
|
|
|
|
.99 rts
|
|
|
|
|
|
|
|
|
|
.7 iny skip bState
|
|
|
|
|
iny skip Locals
|
2022-06-22 06:26:44 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
iny
|
|
|
|
|
iny skip CPSID
|
|
|
|
|
|
2022-01-30 21:47:08 +00:00
|
|
|
|
iny get SYM.T
|
|
|
|
|
lda (ZPCCStack),y
|
2022-06-22 06:26:44 +00:00
|
|
|
|
|
2022-01-30 21:47:08 +00:00
|
|
|
|
pha
|
|
|
|
|
|
|
|
|
|
iny get SYM.Q
|
|
|
|
|
lda (ZPCCStack),y
|
2022-06-22 06:26:44 +00:00
|
|
|
|
|
2022-01-30 21:47:08 +00:00
|
|
|
|
ply
|
|
|
|
|
|
|
|
|
|
jsr CC.EXP.Eval
|
|
|
|
|
bcs .99
|
|
|
|
|
|
|
|
|
|
jsr CC.SYM.GetYASizeOfInAXC Y,A=T/Q
|
|
|
|
|
tax X = sizeof
|
|
|
|
|
jsr CODE.SetRetValue
|
2022-08-20 14:37:37 +00:00
|
|
|
|
bcs .99
|
2022-06-22 06:26:44 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
>LDYA L.PCC.LEAVE
|
|
|
|
|
jmp CODE.EmitPCC
|
2022-01-30 21:47:08 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
CC.KW.SIZEOF
|
2022-02-04 14:57:17 +00:00
|
|
|
|
lda #E.CSYN
|
2021-12-02 21:28:26 +00:00
|
|
|
|
sec
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2022-01-30 21:47:08 +00:00
|
|
|
|
CC.KW.STRUCT >ENTER 4
|
2021-12-02 21:28:26 +00:00
|
|
|
|
|
|
|
|
|
jsr CC.GetCharNB
|
|
|
|
|
bcs .99
|
|
|
|
|
|
2022-06-12 20:42:22 +00:00
|
|
|
|
ldx #SYM.SC.TAG
|
2021-12-02 21:28:26 +00:00
|
|
|
|
>LDA.G CC.hTags
|
2022-01-30 21:47:08 +00:00
|
|
|
|
jsr CC.SYM.NewKey
|
2021-12-02 21:28:26 +00:00
|
|
|
|
bcs .99
|
|
|
|
|
|
|
|
|
|
sta (pStack) Y,A = KeyID
|
|
|
|
|
tya
|
|
|
|
|
ldy #1
|
|
|
|
|
sta (pStack),y
|
2022-06-22 06:26:44 +00:00
|
|
|
|
|
2022-02-04 14:57:17 +00:00
|
|
|
|
jsr CC.SkipX
|
2021-12-02 21:28:26 +00:00
|
|
|
|
|
|
|
|
|
jsr CC.GetNextCharNB
|
|
|
|
|
bcs .99
|
|
|
|
|
|
|
|
|
|
cmp #'{'
|
|
|
|
|
bne .99
|
|
|
|
|
|
|
|
|
|
.1 jsr CC.GetNextCharNB
|
|
|
|
|
bcs .99
|
|
|
|
|
|
|
|
|
|
cmp #'}'
|
|
|
|
|
bne .1
|
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
jsr CC.GetNextCharNB skip '}'
|
2021-12-02 21:28:26 +00:00
|
|
|
|
|
|
|
|
|
clc
|
|
|
|
|
.99 >LEAVE
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2022-09-04 20:12:49 +00:00
|
|
|
|
CC.KW.UNION
|
|
|
|
|
CC.KW.ENUM
|
|
|
|
|
lda #E.CSYN
|
|
|
|
|
sec
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
CC.KW.BEGIN00 lda #0
|
|
|
|
|
jsr CC.Push no T/Q
|
|
|
|
|
bcs CC.KW.BEGIN.RTS
|
|
|
|
|
|
|
|
|
|
jsr CC.Push
|
|
|
|
|
bcs CC.KW.BEGIN.RTS
|
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
CC.KW.BEGIN jsr CC.SYM.NewCPSID
|
|
|
|
|
bcs .99
|
2022-01-30 21:47:08 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
>LDA.G CC.CPSPFX+3
|
|
|
|
|
jsr CC.Push
|
|
|
|
|
bcs .99
|
2022-01-30 21:47:08 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
>LDA.G CC.CPSPFX+2
|
|
|
|
|
jsr CC.Push
|
|
|
|
|
bcs .99
|
2022-01-30 21:47:08 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
lda LocalPtr Locals
|
2022-01-30 21:47:08 +00:00
|
|
|
|
jsr CC.Push
|
|
|
|
|
bcs .99
|
2022-06-22 06:26:44 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
lda #0 bState
|
|
|
|
|
jsr CC.Push
|
|
|
|
|
bcs .99
|
|
|
|
|
|
|
|
|
|
>LDA.G CC.CmdSave
|
|
|
|
|
jmp CC.Push
|
|
|
|
|
|
2022-09-04 20:12:49 +00:00
|
|
|
|
.99
|
|
|
|
|
CC.KW.BEGIN.RTS rts
|
2022-08-20 14:37:37 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
CC.KW.STMT jsr CC.GetNextCharNBNL
|
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
cmp #'{'
|
|
|
|
|
bne .1
|
|
|
|
|
|
|
|
|
|
jsr CC.GetNextCharNB skip '{'
|
|
|
|
|
bcs .99
|
|
|
|
|
|
|
|
|
|
lda #'}'
|
|
|
|
|
jmp CC.Push
|
|
|
|
|
|
|
|
|
|
.1 lda #';'
|
2022-01-30 21:47:08 +00:00
|
|
|
|
jmp CC.Push
|
2022-06-22 06:26:44 +00:00
|
|
|
|
|
2022-01-30 21:47:08 +00:00
|
|
|
|
.9 lda #E.CSYN
|
|
|
|
|
sec
|
2022-06-22 06:26:44 +00:00
|
|
|
|
.99 rts
|
2021-12-02 21:28:26 +00:00
|
|
|
|
*--------------------------------------
|
2022-08-20 14:37:37 +00:00
|
|
|
|
CC.KW.NewLabel pha
|
|
|
|
|
|
|
|
|
|
lda CStackPtr
|
|
|
|
|
clc
|
|
|
|
|
adc #4
|
|
|
|
|
tay
|
|
|
|
|
|
|
|
|
|
lda (ZPCCStack),y
|
|
|
|
|
pha
|
|
|
|
|
iny
|
|
|
|
|
lda (ZPCCStack),y
|
|
|
|
|
ply
|
|
|
|
|
>STYA.G CC.CPSPFX+2
|
|
|
|
|
|
|
|
|
|
pla
|
|
|
|
|
jmp CC.SYM.NewA
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
CC.KW.GetLabel pha
|
|
|
|
|
|
|
|
|
|
lda CStackPtr
|
|
|
|
|
clc
|
|
|
|
|
adc #4
|
|
|
|
|
tay
|
|
|
|
|
|
|
|
|
|
lda (ZPCCStack),y
|
|
|
|
|
pha
|
|
|
|
|
iny
|
|
|
|
|
lda (ZPCCStack),y
|
|
|
|
|
ply
|
|
|
|
|
>STYA.G CC.CPSPFX+2
|
|
|
|
|
|
|
|
|
|
pla
|
|
|
|
|
jmp CC.SYM.LookupA
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
CC.KW.LookupLabel
|
|
|
|
|
pha
|
|
|
|
|
|
|
|
|
|
ldy CStackPtr
|
|
|
|
|
sty ArgIndex
|
|
|
|
|
|
|
|
|
|
.1 ldy ArgIndex
|
|
|
|
|
beq .9
|
|
|
|
|
|
|
|
|
|
iny skip ; or }
|
|
|
|
|
|
|
|
|
|
lda (ZPCCStack),y
|
|
|
|
|
bmi .9 f()
|
|
|
|
|
|
|
|
|
|
iny
|
|
|
|
|
iny
|
|
|
|
|
iny
|
|
|
|
|
|
|
|
|
|
lda (ZPCCStack),y
|
|
|
|
|
pha
|
|
|
|
|
iny
|
|
|
|
|
lda (ZPCCStack),y
|
|
|
|
|
iny
|
|
|
|
|
|
2022-09-04 20:12:49 +00:00
|
|
|
|
iny
|
|
|
|
|
iny
|
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
sty ArgIndex
|
|
|
|
|
|
|
|
|
|
ply
|
|
|
|
|
>STYA.G CC.CPSPFX+2
|
|
|
|
|
|
|
|
|
|
pla
|
|
|
|
|
pha
|
|
|
|
|
jsr CC.SYM.LookupA
|
|
|
|
|
bcs .1
|
|
|
|
|
|
|
|
|
|
pla
|
|
|
|
|
.8 rts
|
|
|
|
|
|
|
|
|
|
.9 pla
|
|
|
|
|
lda #E.CSYN
|
|
|
|
|
sec
|
|
|
|
|
.99 rts
|
|
|
|
|
*--------------------------------------
|
2022-01-30 21:47:08 +00:00
|
|
|
|
* Input : Value on Stack, Y,A = Type/Qual
|
|
|
|
|
*--------------------------------------
|
2022-08-20 14:37:37 +00:00
|
|
|
|
CC.KW.TestZero jsr CC.EXP.GetYASizeOfInAXC
|
2022-01-30 21:47:08 +00:00
|
|
|
|
tax
|
2022-08-20 14:37:37 +00:00
|
|
|
|
cpx #1
|
|
|
|
|
bne .1
|
2021-12-02 21:28:26 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
>LDYA L.PCC.TestZero1
|
|
|
|
|
jmp CODE.EmitPCC
|
2021-12-02 21:28:26 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
.1 cpx #2
|
|
|
|
|
bne .2
|
2022-01-30 21:47:08 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
>LDYA L.PCC.TestZero2
|
|
|
|
|
jmp CODE.EmitPCC
|
2021-12-02 21:28:26 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
.2 jsr CODE.LDXI
|
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
>LDYA L.PCC.TestZeroX
|
|
|
|
|
jmp CODE.EmitPCC
|
|
|
|
|
|
|
|
|
|
.9 rts
|
2021-12-02 21:28:26 +00:00
|
|
|
|
*--------------------------------------
|
2022-08-20 14:37:37 +00:00
|
|
|
|
* Input : Value on Stack, Y,A = Type/Qual
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
CC.KW.TestnZero jsr CC.EXP.GetYASizeOfInAXC
|
|
|
|
|
tax
|
|
|
|
|
cpx #1
|
|
|
|
|
bne .1
|
2021-12-02 21:28:26 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
>LDYA L.PCC.TestnZero1
|
|
|
|
|
jmp CODE.EmitPCC
|
2021-12-02 21:28:26 +00:00
|
|
|
|
|
2022-08-20 14:37:37 +00:00
|
|
|
|
.1 cpx #2
|
|
|
|
|
bne .2
|
|
|
|
|
|
|
|
|
|
>LDYA L.PCC.TestnZero2
|
|
|
|
|
jmp CODE.EmitPCC
|
|
|
|
|
|
|
|
|
|
.2 jsr CODE.LDXI
|
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
>LDYA L.PCC.TestnZeroX
|
|
|
|
|
jmp CODE.EmitPCC
|
|
|
|
|
|
|
|
|
|
.9 rts
|
2021-12-02 21:28:26 +00:00
|
|
|
|
*--------------------------------------
|
2022-01-30 21:47:08 +00:00
|
|
|
|
* Input : Value on Stack, Y,A = Type/Qual
|
2021-12-02 21:28:26 +00:00
|
|
|
|
*--------------------------------------
|
2022-01-30 21:47:08 +00:00
|
|
|
|
CC.KW.StackDiscard
|
2021-12-02 21:28:26 +00:00
|
|
|
|
|
2022-01-30 21:47:08 +00:00
|
|
|
|
jsr CC.TYPE.SizeOf
|
|
|
|
|
txa
|
|
|
|
|
beq .8 void
|
2021-12-02 21:28:26 +00:00
|
|
|
|
|
2022-01-30 21:47:08 +00:00
|
|
|
|
jsr CODE.AddLocal
|
2021-12-02 21:28:26 +00:00
|
|
|
|
|
|
|
|
|
.8 clc
|
2022-01-30 21:47:08 +00:00
|
|
|
|
.9 rts
|
2021-12-02 21:28:26 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
MAN
|
|
|
|
|
SAVE usr/src/bin/cc.s.kw
|
|
|
|
|
LOAD usr/src/bin/cc.s
|
|
|
|
|
ASM
|