mirror of
https://github.com/A2osX/A2osX.git
synced 2024-11-29 17:50:18 +00:00
188 lines
3.1 KiB
Plaintext
188 lines
3.1 KiB
Plaintext
NEW
|
||
AUTO 3,1
|
||
.LIST OFF
|
||
*--------------------------------------
|
||
CC.TYPE.Decl >ENTER 2
|
||
lda #0
|
||
sta (pStack) Type
|
||
ldy #1
|
||
sta (pStack),y Qual
|
||
|
||
jsr .7
|
||
bcs .99
|
||
|
||
ldy #1
|
||
lda (pStack),y
|
||
pha
|
||
lda (pStack)
|
||
tay Y = Type
|
||
pla A = Qual
|
||
|
||
clc
|
||
|
||
.99 >LEAVE
|
||
rts
|
||
|
||
.7 jmp (J.CC.TYPEQUAL,x)
|
||
*--------------------------------------
|
||
* Type Declaration keywords
|
||
*--------------------------------------
|
||
CC.TYPE.CONST lda #SYM.Q.CONST
|
||
bra CC.TYPE.VOLATILE.1
|
||
*--------------------------------------
|
||
CC.TYPE.VOLATILE
|
||
lda #SYM.Q.VOLATILE
|
||
CC.TYPE.VOLATILE.1
|
||
ldy #1
|
||
ora (pStack),y
|
||
sta (pStack),y
|
||
|
||
jsr CC.CheckSpace
|
||
bcs .9
|
||
|
||
>LDYA L.CC.TYPESPEC
|
||
jsr CC.LookupID
|
||
bcs .9
|
||
|
||
jmp (J.CC.TYPESPEC,x)
|
||
|
||
.9 lda #E.CSYN
|
||
sec
|
||
rts
|
||
*--------------------------------------
|
||
CC.TYPE.SIGNED sec
|
||
.HS 90 BCC
|
||
*--------------------------------------
|
||
CC.TYPE.UNSIGNED
|
||
clc
|
||
php
|
||
|
||
jsr CC.CheckSpace
|
||
bcs .9
|
||
|
||
>LDYA L.CC.TYPES
|
||
jsr CC.LookupID
|
||
|
||
bcs .9
|
||
|
||
cpx #SYM.T.UCHAR
|
||
bcc .9 void
|
||
|
||
cpx #SYM.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.TYPE.SHORT jsr CC.CheckSpace
|
||
bcs .9
|
||
|
||
>LDYA L.CC.TYPES
|
||
jsr CC.LookupID
|
||
|
||
bcs CC.TYPE.UCHAR
|
||
|
||
cpx #4 only int allowed
|
||
beq CC.TYPE.SCHAR
|
||
|
||
.9 lda #E.CSYN
|
||
sec
|
||
rts
|
||
*--------------------------------------
|
||
CC.TYPE.VOID lda #SYM.T.VOID
|
||
bra CC.TYPE
|
||
|
||
CC.TYPE.CHAR
|
||
CC.TYPE.UCHAR lda #SYM.T.UCHAR
|
||
bra CC.TYPE
|
||
|
||
CC.TYPE.SCHAR lda #SYM.T.SCHAR
|
||
bra CC.TYPE
|
||
|
||
CC.TYPE.UINT lda #SYM.T.UINT
|
||
bra CC.TYPE
|
||
|
||
CC.TYPE.INT
|
||
CC.TYPE.SINT lda #SYM.T.SINT
|
||
bra CC.TYPE
|
||
|
||
CC.TYPE.ULONG lda #SYM.T.ULONG
|
||
bra CC.TYPE
|
||
|
||
CC.TYPE.LONG
|
||
CC.TYPE.SLONG lda #SYM.T.SLONG
|
||
bra CC.TYPE
|
||
|
||
CC.TYPE.FLOAT lda #SYM.T.FLOAT
|
||
|
||
CC.TYPE sta (pStack) T
|
||
|
||
jsr CC.GetCharNB
|
||
bcs .9
|
||
|
||
.1 cmp #'*'
|
||
bne .10
|
||
|
||
ldy #1 Q
|
||
lda (pStack),y
|
||
clc
|
||
adc #SYM.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 #SYM.Q.FUNC+SYM.Q.FASTCALL
|
||
sta (pStack),y
|
||
|
||
jsr CC.GetNextCharNB
|
||
bcs .9 next char is an identifier, ",", "(",")"
|
||
|
||
.8 clc
|
||
rts
|
||
*--------------------------------------
|
||
* in : Y,A = type/qual
|
||
* out : X = size
|
||
*--------------------------------------
|
||
CC.TYPE.SizeOf bit #SYM.Q.PPPOINTER
|
||
bne .2
|
||
|
||
ldx CC.TYPESIZE-1,y
|
||
|
||
clc
|
||
rts
|
||
|
||
.2 ldx #2 pointer
|
||
sec +1 for hMem Storage
|
||
rts
|
||
*--------------------------------------
|
||
MAN
|
||
SAVE usr/src/bin/cc.s.type
|
||
LOAD usr/src/bin/cc.s
|
||
ASM
|