mirror of
https://github.com/A2osX/A2osX.git
synced 2024-06-05 18:29:37 +00:00
340 lines
5.1 KiB
Plaintext
340 lines
5.1 KiB
Plaintext
|
NEW
|
|||
|
AUTO 3,1
|
|||
|
.LIST OFF
|
|||
|
*--------------------------------------
|
|||
|
* Built in Keywords
|
|||
|
*--------------------------------------
|
|||
|
CC.KW.JMP txa
|
|||
|
>STA.G CC.CmdSave
|
|||
|
jmp (J.CC.KW,x)
|
|||
|
*--------------------------------------
|
|||
|
CC.WHILE jsr CC.PushCS push Test location for WHILE loop
|
|||
|
bcc CC.IF
|
|||
|
|
|||
|
rts
|
|||
|
*--------------------------------------
|
|||
|
CC.IF jsr CC.GetCharNB
|
|||
|
bcs .9
|
|||
|
|
|||
|
cmp #'('
|
|||
|
bne .9
|
|||
|
|
|||
|
jsr CC.GetNextCharNB
|
|||
|
bcs .9
|
|||
|
|
|||
|
ldy #0 Any var type
|
|||
|
lda #0
|
|||
|
jsr CC.ExpEval
|
|||
|
bcs .99
|
|||
|
|
|||
|
jsr CC.IsValue0
|
|||
|
|
|||
|
jsr CC.GetCharNB
|
|||
|
bcs .99
|
|||
|
|
|||
|
cmp #')'
|
|||
|
bne .9
|
|||
|
|
|||
|
jsr CC.GetNextCharNB skip ')'
|
|||
|
bcs .9
|
|||
|
|
|||
|
jsr CC.PushCS push place to set JMP if false
|
|||
|
bcs .99
|
|||
|
|
|||
|
lda ZPCCCode
|
|||
|
clc
|
|||
|
adc #2
|
|||
|
sta ZPCCCode
|
|||
|
bcc .5
|
|||
|
|
|||
|
inc ZPCCCode+1
|
|||
|
|
|||
|
.5 >LDA.G CC.CmdSave
|
|||
|
jsr CC.Push push IF / WHILE
|
|||
|
bcs .99
|
|||
|
|
|||
|
lda #'}' end block expected
|
|||
|
jmp CC.Push
|
|||
|
|
|||
|
.9 lda #E.CSYN
|
|||
|
sec
|
|||
|
.99 rts
|
|||
|
*--------------------------------------
|
|||
|
CC.IF.END jsr CC.Pop
|
|||
|
bcs .9
|
|||
|
|
|||
|
sta ZPPtr1
|
|||
|
|
|||
|
jsr CC.Pop
|
|||
|
bcs .9
|
|||
|
|
|||
|
sta ZPPtr1+1
|
|||
|
|
|||
|
lda ZPCCCode
|
|||
|
sta (ZPPtr1)
|
|||
|
|
|||
|
ldy #1
|
|||
|
lda ZPCCCode+1
|
|||
|
sta (ZPPtr1),y
|
|||
|
|
|||
|
* clc
|
|||
|
|
|||
|
.9 rts
|
|||
|
*--------------------------------------
|
|||
|
CC.ELSE
|
|||
|
|
|||
|
clc
|
|||
|
rts
|
|||
|
*--------------------------------------
|
|||
|
CC.WHILE.END jsr CC.Pop
|
|||
|
bcs .9
|
|||
|
|
|||
|
sta ZPPtr1
|
|||
|
|
|||
|
jsr CC.Pop
|
|||
|
bcs .9
|
|||
|
|
|||
|
sta ZPPtr1+1
|
|||
|
|
|||
|
jsr CC.Pop
|
|||
|
bcs .9
|
|||
|
|
|||
|
pha
|
|||
|
|
|||
|
jsr CC.Pop
|
|||
|
bcs .9
|
|||
|
|
|||
|
tax
|
|||
|
ply
|
|||
|
jsr CODE.JMPYX
|
|||
|
|
|||
|
lda ZPCCCode
|
|||
|
sta (ZPPtr1)
|
|||
|
|
|||
|
ldy #1
|
|||
|
lda ZPCCCode+1
|
|||
|
sta (ZPPtr1),y
|
|||
|
|
|||
|
clc
|
|||
|
|
|||
|
.9 rts
|
|||
|
*--------------------------------------
|
|||
|
CC.DO
|
|||
|
CC.FOR
|
|||
|
CC.SWITCH
|
|||
|
CC.CASE
|
|||
|
CC.BREAK
|
|||
|
CC.CONTINUE
|
|||
|
CC.SIZEOF
|
|||
|
*--------------------------------------
|
|||
|
CC.TYPEDEF lda #E.CSYN
|
|||
|
sec
|
|||
|
rts
|
|||
|
*--------------------------------------
|
|||
|
CC.STRUCT >ENTER 4
|
|||
|
|
|||
|
jsr CC.GetCharNB
|
|||
|
bcs .99
|
|||
|
|
|||
|
>LDA.G CC.hTags
|
|||
|
jsr CC.NewKey
|
|||
|
bcs .99
|
|||
|
|
|||
|
sta (pStack) Y,A = KeyID
|
|||
|
tya
|
|||
|
ldy #1
|
|||
|
sta (pStack),y
|
|||
|
|
|||
|
jsr CC.GetNextCharNB
|
|||
|
bcs .99
|
|||
|
|
|||
|
cmp #'{'
|
|||
|
bne .99
|
|||
|
|
|||
|
.1 jsr CC.GetNextCharNB
|
|||
|
bcs .99
|
|||
|
|
|||
|
cmp #'}'
|
|||
|
bne .1
|
|||
|
|
|||
|
jsr CC.GetNextCharNB skip }
|
|||
|
|
|||
|
clc
|
|||
|
.99 >LEAVE
|
|||
|
rts
|
|||
|
*--------------------------------------
|
|||
|
* Input : Value on Stack, Y,A = Type/Qual
|
|||
|
* Output : CC = true, CS = false
|
|||
|
*--------------------------------------
|
|||
|
CC.IsValue0 and #CC.Q.PPPOINTER
|
|||
|
beq .2
|
|||
|
|
|||
|
ldx #2
|
|||
|
bra .6
|
|||
|
|
|||
|
.2 cpy #CC.T.FLOAT
|
|||
|
bcc .5 char,int,long
|
|||
|
|
|||
|
ldx #5
|
|||
|
*--------------------------------------
|
|||
|
.5 jsr CC.GetVarSize
|
|||
|
|
|||
|
.6 lda #$A2 LDX #imm
|
|||
|
jsr CODE.EmitByte
|
|||
|
txa
|
|||
|
jsr CODE.EmitByte
|
|||
|
|
|||
|
ldx #PCC.Test0X.L
|
|||
|
ldy #0
|
|||
|
|
|||
|
.7 lda PCC.Test0X,y
|
|||
|
jsr CODE.EmitByte
|
|||
|
iny
|
|||
|
dex
|
|||
|
bne .7
|
|||
|
|
|||
|
clc
|
|||
|
rts
|
|||
|
*--------------------------------------
|
|||
|
* Type Declaration keywords
|
|||
|
*--------------------------------------
|
|||
|
CC.CONST ldy #1
|
|||
|
|
|||
|
lda (pStack),y
|
|||
|
ora #CC.Q.CONST
|
|||
|
sta (pStack),y
|
|||
|
|
|||
|
jsr CC.CheckSpace
|
|||
|
bcs .9
|
|||
|
|
|||
|
>LDYA L.CC.TMODS2
|
|||
|
jsr CC.LookupID
|
|||
|
bcs .9
|
|||
|
|
|||
|
jmp (J.CC.TMODS2,x)
|
|||
|
|
|||
|
.9 lda #E.CSYN
|
|||
|
sec
|
|||
|
rts
|
|||
|
*--------------------------------------
|
|||
|
CC.SIGNED sec
|
|||
|
.HS 90 BCC
|
|||
|
*--------------------------------------
|
|||
|
CC.UNSIGNED clc
|
|||
|
php
|
|||
|
|
|||
|
jsr CC.CheckSpace
|
|||
|
bcs .9
|
|||
|
|
|||
|
>LDYA L.CC.TYPES
|
|||
|
jsr CC.LookupID
|
|||
|
|
|||
|
bcs .9
|
|||
|
|
|||
|
cpx #CC.T.UCHAR
|
|||
|
bcc .9 void
|
|||
|
|
|||
|
cpx #CC.T.SLONG+1 only char int long allowed
|
|||
|
bcs .9
|
|||
|
|
|||
|
plp
|
|||
|
bcs .8
|
|||
|
|
|||
|
jmp (J.CC.UTYPES-2,x)
|
|||
|
|
|||
|
.8 jmp (J.CC.STYPES-2,x)
|
|||
|
|
|||
|
.9 plp
|
|||
|
|
|||
|
lda #E.CSYN
|
|||
|
sec
|
|||
|
rts
|
|||
|
*--------------------------------------
|
|||
|
CC.SHORT jsr CC.CheckSpace
|
|||
|
bcs .9
|
|||
|
|
|||
|
>LDYA L.CC.TYPES
|
|||
|
jsr CC.LookupID
|
|||
|
|
|||
|
bcs CC.UCHAR
|
|||
|
|
|||
|
cpx #4 only int allowed
|
|||
|
beq CC.SCHAR
|
|||
|
|
|||
|
.9 lda #E.CSYN
|
|||
|
sec
|
|||
|
rts
|
|||
|
*--------------------------------------
|
|||
|
CC.VOID lda #CC.T.VOID
|
|||
|
bra CC.TYPE
|
|||
|
|
|||
|
CC.CHAR
|
|||
|
CC.UCHAR lda #CC.T.UCHAR
|
|||
|
bra CC.TYPE
|
|||
|
|
|||
|
CC.SCHAR lda #CC.T.SCHAR
|
|||
|
bra CC.TYPE
|
|||
|
|
|||
|
CC.UINT lda #CC.T.UINT
|
|||
|
bra CC.TYPE
|
|||
|
|
|||
|
CC.INT
|
|||
|
CC.SINT lda #CC.T.SINT
|
|||
|
bra CC.TYPE
|
|||
|
|
|||
|
CC.ULONG lda #CC.T.ULONG
|
|||
|
bra CC.TYPE
|
|||
|
|
|||
|
CC.LONG
|
|||
|
CC.SLONG lda #CC.T.SLONG
|
|||
|
bra CC.TYPE
|
|||
|
|
|||
|
CC.FLOAT lda #CC.T.FLOAT
|
|||
|
|
|||
|
CC.TYPE sta (pStack)
|
|||
|
|
|||
|
jsr CC.GetCharNB
|
|||
|
bcs .9
|
|||
|
|
|||
|
ldy #1
|
|||
|
|
|||
|
.1 cmp #'*'
|
|||
|
bne .10
|
|||
|
|
|||
|
lda (pStack),y
|
|||
|
clc
|
|||
|
adc #CC.Q.POINTER
|
|||
|
bcs .9 more than ***
|
|||
|
|
|||
|
sta (pStack),y
|
|||
|
|
|||
|
jsr CC.GetNextCharNB
|
|||
|
bcc .1
|
|||
|
|
|||
|
.9 lda #E.CSYN
|
|||
|
sec
|
|||
|
.99 rts
|
|||
|
|
|||
|
.10 jsr CC.IsLetter
|
|||
|
bcs .8
|
|||
|
|
|||
|
>LDYA L.CC.FTYPES
|
|||
|
jsr CC.LookupID
|
|||
|
bcs .8 next char is an identifier
|
|||
|
|
|||
|
ldy #1
|
|||
|
lda (pStack),y
|
|||
|
ora #CC.Q.FUNC+CC.Q.FASTCALL
|
|||
|
sta (pStack),y
|
|||
|
|
|||
|
jsr CC.GetNextCharNB
|
|||
|
bcs .9 next char is an identifier, ",", "(",")"
|
|||
|
|
|||
|
.8 clc
|
|||
|
rts
|
|||
|
*--------------------------------------
|
|||
|
MAN
|
|||
|
SAVE usr/src/bin/cc.s.kw
|
|||
|
LOAD usr/src/bin/cc.s
|
|||
|
ASM
|