A2osX/BIN/CC.S.DECL.txt
burniouf 9a7d20a7e1 ProDOS 203 / FX:TC mod for year 2022-2026
FORMAT: new switches & checks
SH:BREAK in FOR and WHILE
ASM / S-C MASM: new directives, CString support and .HX
LC / UC:bugfix
DHGR.DRV:bugfix
LIBGUI:wip
CC:wip
2022-12-07 08:02:29 +01:00

152 lines
2.5 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

NEW
AUTO 3,1
*--------------------------------------
DECL.AUTO
DECL.REGISTER
DECL.STATIC
DECL.EXTERN
.98 lda #E.CSYN
sec
.99 rts
*--------------------------------------
DECL.TYPEDEF jsr CORE.GetNCharNB
bcs .98
>LDYA L.CC.TYPEQUAL
jsr CC.LookupID
bcs .98
cpx #4 no const nor volatile
bcc .98
jsr TYPE.GetTQInYA
bcs .99
ldx #SYM.SC.TYPEDEF
sec Reset Buffer
jsr SYM.New Y,A=T/Q,storage class TYPEDEF
bcs .99
jsr CC.GetCharNB
bcs .98
cmp #';'
bne .98
jsr CORE.GetNCharNB skip ';'
jmp SYM.Store
.98 lda #E.CSYN
sec
.99
DECL.TYPEDEF.RTS
rts
*--------------------------------------
* X = type qual
*--------------------------------------
DECL.X jsr TYPE.GetTQInYA
bcs .99
cpy #SYM.T.SU
bne .7
tax save Q
jsr CC.GetCharNB
bcs .98
cmp #';' from a tag def
beq .8
jsr CC.IsLetter
bcs .98
* >DEBUG
.1 clc reuse buffer
ldy #SYM.T.SU
txa restore Q
jsr DECL.YAC
bcs .99
jsr CC.GetCharNB
bcs .98
cmp #','
bne .2
jsr CORE.GetNCharNBNL
bcc .1
bcs .98
.2 cmp #';' TODO: struct initalizers
bne .98
.8 clc
rts
.98 lda #E.CSYN
sec
.99 rts
*--------------------------------------
.7 sec Reset Buffer
DECL.YAC ldx #SYM.SC.STATIC Y,A = Type/Qual
bit bLocalScope
bpl .25
bit #SYM.Q.FUNC someone wants to add a local f() ?
bne .98
ldx #SYM.SC.AUTO
.25 jsr SYM.New Y,A=T/Q, X=SC, C=clear/reuse
bcs .98 OOM or DUP
.22 jsr CC.GetCharNB
bcs .98
cmp #';'
beq .8
cmp #'{'
bne .26
jmp CORE.GetNCharNBNL Skip '{'
*--------------------------------------
* Initializer
*--------------------------------------
.26 cmp #'=' type var = value ?
bne .98
jsr CORE.GetNCharNB skip '='
bcs .98
jsr SYM.GetTypeInYA expected T/Q
jsr EXP.Eval
bcs .99
jsr SYM.GetAddr1
bcs .99
jsr SYM.GetTypeInYA Y,A = T/Q
jsr SYM.PopValue Set value to this var
.29 bcs .99
.28 jsr SYM.Store
bcs .99
jsr CC.GetCharNB
cmp #';'
bne .98
.8 clc
rts
.98 lda #E.CSYN
sec
.99 rts
*--------------------------------------
MAN
SAVE usr/src/bin/cc.s.decl
LOAD usr/src/bin/cc.s
ASM