A2osX/BIN/CC.S.SYM.txt

1159 lines
18 KiB
Plaintext
Raw Permalink Normal View History

2022-01-30 21:47:08 +00:00
NEW
AUTO 3,1
*--------------------------------------
* Input : ZPLineBufPtr, Y,A = T/Q, X = SC
* CS : Reset Buffer
* CC : Reuse Buffer
2022-01-30 21:47:08 +00:00
* Output : Y,A = VarID
*--------------------------------------
SYM.New >STYA ZPPtr2 T/Q
2022-01-30 21:47:08 +00:00
stx ZPPtr3 SC
2022-06-22 06:26:44 +00:00
bit bPass2
bmi SYM.New.Pass2
*--------------------------------------
SYM.New.Pass1 jsr SYM.BufInitYAXC set buf according C
jsr SYM.Get
bcs .1
ldy #SYM.Q
lda (ZPSymBufPtr),y
and #SYM.Q.FUNC
beq .90
ldy #SYM.Addr+1
lda (ZPSymBufPtr),y
bne .90
jmp F.Def
.1 >PUSHB.G CC.hSyms
2022-06-22 06:26:44 +00:00
>PUSHW ZPLineBufPtr
jsr SCOPE.Push
>SYSCALL SListNewKey
bcs SYM.New.9
2022-01-30 21:47:08 +00:00
2022-06-12 20:42:22 +00:00
>STYA.G CC.SymID Y,A = KeyID
2022-01-30 21:47:08 +00:00
2022-06-22 06:26:44 +00:00
jsr CC.SkipX X = KeyLen
.DO _DBG_SYM=1
jsr SYM.DEBUGN
.FIN
bra SYM.New.2
.90 lda #E.REDEF
sec
2022-06-22 06:26:44 +00:00
SYM.New.9 rts
2022-06-22 06:26:44 +00:00
*--------------------------------------
SYM.New.Pass2 jsr SYM.Get
bcs SYM.New.9
*--------------------------------------
SYM.New.2 jsr CC.GetCharNB
bcs .98
2022-06-12 20:42:22 +00:00
cmp #';'
bne .1
2022-01-30 21:47:08 +00:00
lda ZPPtr3
cmp #SYM.SC.TYPEDEF
bne SYM.SetAddr
2022-01-30 21:47:08 +00:00
clc
rts
2022-01-30 21:47:08 +00:00
.1 cmp #'('
bne SYM.NewV
2022-01-30 21:47:08 +00:00
jsr SYM.GetSymSizeOfInAX
jsr SYM.SetSizeOf
ldy #SYM.Q
lda (ZPSymBufPtr),y
ora #SYM.Q.FUNC
sta (ZPSymBufPtr),y
jsr SYM.Store Store this f() with no prototype...
bcs .99
jsr F.Decl
rts
.98 lda #E.CSYN
sec
.99 rts
2022-01-30 21:47:08 +00:00
*--------------------------------------
SYM.NewV cmp #'['
bne SYM.SetAddr
2022-01-30 21:47:08 +00:00
2022-08-20 14:37:37 +00:00
ldy #SYM.Q
2022-01-30 21:47:08 +00:00
lda (ZPSymBufPtr),y
2022-08-20 14:37:37 +00:00
and #%11001111
sta (ZPSymBufPtr),y
2022-01-30 21:47:08 +00:00
2022-08-20 14:37:37 +00:00
ldy #SYM.DefSize
lda #SYM.Def
2022-08-20 14:37:37 +00:00
sta (ZPSymBufPtr),y
2022-01-30 21:47:08 +00:00
2022-08-20 14:37:37 +00:00
ldy #SYM.Q
.1 lda (ZPSymBufPtr),y
clc
2022-01-30 21:47:08 +00:00
adc #SYM.Q.ARRAY
sta (ZPSymBufPtr),y
jsr CORE.GetNCharNB Skip [
bcs .98
2022-01-30 21:47:08 +00:00
2022-08-20 14:37:37 +00:00
cmp #']'
bne .2
2022-01-30 21:47:08 +00:00
2022-08-20 14:37:37 +00:00
ldy #SYM.Q
lda (ZPSymBufPtr),y
and #SYM.Q.PPPOINTER
beq .98 [] only allowed for *
jsr SYM.Add0000 set as [0] (deref)
bcs .99
2022-01-30 21:47:08 +00:00
2022-08-20 14:37:37 +00:00
bra .3
.2 jsr EXP.IntConst
bcs .98
2022-08-20 14:37:37 +00:00
jsr SYM.AddWord
bcs .99
2022-01-30 21:47:08 +00:00
jsr CC.GetCharNB
bcs .98
2022-01-30 21:47:08 +00:00
cmp #']'
bne .98
2022-01-30 21:47:08 +00:00
.3 jsr CORE.GetNCharNB Skip ]
bcs SYM.SetAddr
2022-01-30 21:47:08 +00:00
2022-08-20 14:37:37 +00:00
cmp #'['
bne SYM.SetAddr
2022-08-20 14:37:37 +00:00
ldy #SYM.Q
lda (ZPSymBufPtr),y
and #SYM.Q.AAARRAY
cmp #SYM.Q.AAARRAY
bne .1 already [][][] ?
2022-01-30 21:47:08 +00:00
.98 lda #E.CSYN
2022-01-30 21:47:08 +00:00
sec
.99 rts
2022-01-30 21:47:08 +00:00
*--------------------------------------
SYM.SetAddr ldy #SYM.SizeOf
lda (ZPSymBufPtr),y
iny
ora (ZPSymBufPtr),y
bne .1
jsr SYM.GetSymSizeOfInAX
jsr SYM.SetSizeOf
.1 ldy #SYM.SC
2022-01-30 21:47:08 +00:00
lda (ZPSymBufPtr),y
beq SYM.SetAddrG SYM.SC.STATIC
2022-01-30 21:47:08 +00:00
cmp #SYM.SC.AUTO
beq SYM.SetAddrL
2022-01-30 21:47:08 +00:00
.9 lda #E.TMISMATCH
sec
rts
*--------------------------------------
SYM.SetAddrG ldy #SYM.Addr
2022-01-30 21:47:08 +00:00
lda ZPCCData
sta (ZPSymBufPtr),y
iny
lda ZPCCData+1
sta (ZPSymBufPtr),y
ldy #SYM.SizeOf
lda (ZPSymBufPtr),y
2022-08-20 14:37:37 +00:00
clc
adc ZPCCData
sta ZPCCData
iny
lda (ZPSymBufPtr),y
2022-01-30 21:47:08 +00:00
adc ZPCCData+1
sta ZPCCData+1
clc
rts
*--------------------------------------
SYM.SetAddrL ldy #SYM.SizeOf+1
2022-01-30 21:47:08 +00:00
lda (ZPSymBufPtr),y
bne .9
dey #SYM.SizeOf
lda (ZPSymBufPtr),y
2022-12-13 06:55:13 +00:00
clc
ldy ScopePtr
iny
iny
adc (ScopeStk),y
2022-12-13 06:55:13 +00:00
bcs .9
2022-01-30 21:47:08 +00:00
sta (ScopeStk),y
2022-01-30 21:47:08 +00:00
ldy #SYM.Addr
sta (ZPSymBufPtr),y
2022-06-12 20:42:22 +00:00
ldy #SYM.SizeOf
lda (ZPSymBufPtr),y
clc
ldy ScopePtr
iny
iny
iny
adc (ScopeStk),y
sta (ScopeStk),y
2022-01-30 21:47:08 +00:00
clc
rts
.9 lda #E.BUF
sec
rts
*--------------------------------------
SYM.BufInitYAXC pha
tya
sta (ZPSymBufPtr) #SYM.T
pla
ldy #SYM.Q
sta (ZPSymBufPtr),y
txa
iny #SYM.SC
sta (ZPSymBufPtr),y
bcc .8 DONT reset buffer
lda #0
.1 iny
sta (ZPSymBufPtr),y
cpy #SYM-1
2022-12-13 06:55:13 +00:00
bcc .1
2022-12-13 06:55:13 +00:00
ldy #SYM.DefSize
lda #SYM.Def
sta (ZPSymBufPtr),y
.8 rts
*--------------------------------------
SYM.PushAddr ldy #SYM.SC
2022-08-20 14:37:37 +00:00
lda (ZPSymBufPtr),y
beq .1 SYM.SC.STATIC
* LOCAL
>LDYA L.PCC.PushLAddrH
jsr CODE.EmitPCC
bcs .9
ldy #SYM.Addr
lda (ZPSymBufPtr),y
eor #$FF
inc
jsr CODE.LDAI
bcs .9
>LDYA L.PCC.PushLAddrL
jmp CODE.EmitPCC
* GLOBAL
.1 ldy #SYM.Addr+1
lda (ZPSymBufPtr),y
tax
dey
lda (ZPSymBufPtr),y
jsr CODE.LDAXI
bcs .9
ldy #SYM.Q
lda (ZPSymBufPtr),y
and #SYM.Q.CONST
beq .2
>LDYA L.PCC.PushIAddr
jmp CODE.EmitPCC
.2 >LDYA L.PCC.PushUAddr
jmp CODE.EmitPCC
.9 rts
*--------------------------------------
SYM.GetAddr1 ldy #SYM.SC
2022-08-20 14:37:37 +00:00
lda (ZPSymBufPtr),y
beq .1 SYM.SC.STATIC
* LOCAL
ldy #SYM.Addr
lda (ZPSymBufPtr),y
eor #$FF
inc
jsr CODE.LDAI
bcs .9
>LDYA L.PCC.GetLAddr1
jmp CODE.EmitPCC
* GLOBAL
.1 ldy #SYM.Addr+1
lda (ZPSymBufPtr),y
tax
dey
lda (ZPSymBufPtr),y
jsr CODE.LDAXI
bcs .9
ldy #SYM.Q
lda (ZPSymBufPtr),y
and #SYM.Q.CONST
beq .2
>LDYA L.PCC.GetIAddr1
jmp CODE.EmitPCC
2022-08-20 14:37:37 +00:00
.2 >LDYA L.PCC.GetUAddr1
jmp CODE.EmitPCC
.9 rts
*--------------------------------------
SYM.GetAddr2 ldy #SYM.SC
2022-08-20 14:37:37 +00:00
lda (ZPSymBufPtr),y
beq .1 SYM.SC.STATIC
* LOCAL
ldy #SYM.Addr
lda (ZPSymBufPtr),y
eor #$FF
inc
jsr CODE.LDAI
bcs .9
>LDYA L.PCC.GetLAddr2
jmp CODE.EmitPCC
* GLOBAL
.1 ldy #SYM.Addr+1
lda (ZPSymBufPtr),y
tax
dey
lda (ZPSymBufPtr),y
jsr CODE.LDAXI
bcs .9
ldy #SYM.Q
lda (ZPSymBufPtr),y
and #SYM.Q.CONST
beq .2
>LDYA L.PCC.GetIAddr2
jmp CODE.EmitPCC
.2 >LDYA L.PCC.GetUAddr2
jmp CODE.EmitPCC
.9 rts
*--------------------------------------
SYM.Get >PUSHB.G CC.hSyms
>PUSHW ZPLineBufPtr
jsr SCOPE.Push
>SYSCALL SListLookup
bcs .9
>STYA.G CC.SymID Y,A = KeyID
jsr CC.SkipX X = KeyLen
>PUSHB.G CC.hSyms
>PUSHW.G CC.SymID
>PUSHW ZPSymBufPtr
>PUSHWI 65535 all
>PUSHWZ From Start
>SYSCALL SListGetData
.DO _DBG_SYM=1
bcs .9
jsr SYM.DEBUGG
.FIN
.9 rts
*--------------------------------------
SYM.NewKey >PUSHA
2022-01-30 21:47:08 +00:00
>PUSHW ZPLineBufPtr
2022-11-02 06:54:30 +00:00
>PUSHWI 0 ScopeID
2022-06-22 06:26:44 +00:00
>SYSCALL SListNewKey
rts Y,A = KeyID, X = KeyLen
2022-06-12 20:42:22 +00:00
*--------------------------------------
SYM.Add0000 >LDYAI 0
*--------------------------------------
SYM.AddWord phy
pha
2022-08-20 14:37:37 +00:00
ldy #SYM.DefSize
lda (ZPSymBufPtr),y
clc
adc #2
bcs .9
2022-08-20 14:37:37 +00:00
sta (ZPSymBufPtr),y
tay
2022-08-20 14:37:37 +00:00
dey
2022-08-20 14:37:37 +00:00
pla A
sta (ZPSymBufPtr),y
dey
pla Y
pha
2022-08-20 14:37:37 +00:00
sta (ZPSymBufPtr),y
iny
lda (ZPSymBufPtr),y get back A
ply get back Y
* clc
rts
.9 pla
pla
lda #E.BUF
sec
rts
*--------------------------------------
SYM.AddName jsr CC.GetCharNB
bcs .98
jsr CC.IsLetter
bcs .98
jsr CC.GetIDLen
tax
jsr SYM.AddByte
bcs .99
ldy #0
.1 lda (ZPLineBufPtr),y
phy
jsr SYM.AddByte
ply
bcs .99
iny
dex
bne .1
tya
jsr CC.SkipA
clc
rts
.98 lda #E.CSYN
sec
.99 rts
*--------------------------------------
SYM.AddByte pha
ldy #SYM.DefSize
lda (ZPSymBufPtr),y
inc
beq .9
sta (ZPSymBufPtr),y
dec
tay
2022-08-20 14:37:37 +00:00
pla
sta (ZPSymBufPtr),y
clc
rts
.9 pla
lda #E.BUF
sec
2022-08-20 14:37:37 +00:00
rts
*--------------------------------------
SYM.Update sec
.HS 90 BCC
*--------------------------------------
SYM.Store clc
2022-06-12 20:42:22 +00:00
bit bPass2
bmi .8
2022-08-20 14:37:37 +00:00
php
2022-12-13 06:55:13 +00:00
.DO _DBG_SYM=1
bcc .10
2022-01-30 21:47:08 +00:00
jsr SYM.DEBUGU
bra .11
2022-01-30 21:47:08 +00:00
.10
jsr SYM.DEBUGS
2022-01-30 21:47:08 +00:00
.11 .FIN
>PUSHB.G CC.hSyms
2022-06-22 06:26:44 +00:00
>PUSHW.G CC.SymID
>PUSHW ZPSymBufPtr
>PUSHBI 0
ldy #SYM.Q
lda (ZPSymBufPtr),y
and #SYM.Q.FUNC
bne .1
2022-06-22 06:26:44 +00:00
ldy #SYM.DefSize
lda (ZPSymBufPtr),y
bra .2
2022-06-22 06:26:44 +00:00
.1 lda #SYM.F.MAX
2022-06-12 20:42:22 +00:00
.2 >PUSHA
2022-01-30 21:47:08 +00:00
plp
bcs .3
2022-01-30 21:47:08 +00:00
>SYSCALL SListAddData
2022-01-30 21:47:08 +00:00
rts
.3 >SYSCALL SListSetData
rts
2022-01-30 21:47:08 +00:00
.8 bcc .9
>PUSHB.G CC.hSyms
>PUSHW.G CC.SymID
>PUSHW ZPSymBufPtr
>PUSHWI 65535 all
>PUSHWZ From Start
>SYSCALL SListGetData
.DO _DBG_SYM=1
bcs .9
jsr SYM.DEBUGG
.FIN
.9 rts
2022-01-30 21:47:08 +00:00
*--------------------------------------
SYM.Lookup >LDA.G CC.LookupIdx
2022-06-22 06:26:44 +00:00
cmp #CC.LookupIdx+LOOKUP.MAX
beq .99
>PUSHB.G CC.hSyms ...for SListGetData
2022-01-30 21:47:08 +00:00
lda ScopePtr
.1 pha
>PUSHB.G CC.hSyms
>PUSHW ZPLineBufPtr
pla
pha
jsr SCOPE.PushA
>SYSCALL SListLookup
2022-01-30 21:47:08 +00:00
bcc .8
pla
2022-06-12 20:42:22 +00:00
beq .9
2022-01-30 21:47:08 +00:00
* sec
sbc #SCOPE
2022-01-30 21:47:08 +00:00
bra .1
.99 lda #E.OOH
* sec
rts
.9 inc pStack discard CC.hSyms
2022-01-30 21:47:08 +00:00
lda #E.NOKEY
2022-06-12 20:42:22 +00:00
sec
2022-01-30 21:47:08 +00:00
rts
.8 >PUSHA KeyID.HI
tya
>PUSHA KeyID.LO
pla discard ScopePtr
jsr CC.SkipX
>PUSHWZ allocate
>PUSHWI 65535 all
>PUSHWZ From Start
>SYSCALL SListGetData
2022-06-22 06:26:44 +00:00
>STYA.G CC.LookupSymSize
>INC.G CC.LookupIdx
tay
txa
sta (pdata),y
>SYSCALL GetMemPtr
2022-06-12 20:42:22 +00:00
>STYA ZPLookupSymPtr
2022-01-30 21:47:08 +00:00
2022-06-22 06:26:44 +00:00
* clc
rts
2022-01-30 21:47:08 +00:00
*--------------------------------------
* "_B"reak
* "_C"ontinue
* "_D"efault
* "_E"lse
* "_F"rame Size
* "_J"umpTable
* "_L"oop
* "_R"eturn value
* "_S"statement
* e"_X"it
2022-12-13 06:55:13 +00:00
*--------------------------------------
SYM.NewLabelA bit bPass2
bpl .10
clc
.98 rts
2022-12-13 06:55:13 +00:00
.10 >STA.G CC.Label+1
>PUSHB.G CC.hSyms
>PUSHEA.G CC.Label
jsr SCOPE.Push
>SYSCALL SListNewKey
bcs .98
2022-12-13 06:55:13 +00:00
>STYA.G CC.LabelID
ldy #CC.LabelBuf+SYM.DefSize
lda #SYM.Def
sta (pData),y
2022-12-13 06:55:13 +00:00
>LDA.G CC.Label+1
cmp #'F'
bne .1
jsr SYM.NewLabelF
bra .7
.1 cmp #'R'
bne .6
jsr SYM.NewLabelR
bra .7
2022-12-13 06:55:13 +00:00
.6 lda #SYM.T.VOID
>STA.G CC.LabelBuf
lda #SYM.Q.POINTER
iny
sta (pData),y
iny
lda #SYM.SC.STATIC
sta (pData),y
ldy #CC.LabelBuf+SYM.Addr
lda ZPCCCode
sta (pData),y
iny
lda ZPCCCode+1
sta (pData),y
2022-12-13 06:55:13 +00:00
.7 .DO _DBG_SYM=1
jsr SYM.DEBUGNL
2022-12-13 06:55:13 +00:00
.FIN
>PUSHB.G CC.hSyms
>PUSHW.G CC.LabelID
>PUSHEA.G CC.LabelBuf
2022-12-13 06:55:13 +00:00
>PUSHBI 0
lda #SYM.Def
2022-12-13 06:55:13 +00:00
>PUSHA
>SYSCALL SListAddData
.DO _DBG_SYM=1
bcs .99
jsr SYM.DEBUGSL
.FIN
2022-12-13 06:55:13 +00:00
.99 rts
*--------------------------------------
SYM.NewLabelF lda #SYM.T.UCHAR
>STA.G CC.LabelBuf
lda #0
iny
sta (pData),y
iny
lda #SYM.SC.AUTO
sta (pData),y
ldy ScopePtr
iny
iny
iny
lda (ScopeStk),y #SCOPE.FrameSize
ldy #CC.LabelBuf+SYM.Addr
sta (pData),y
rts
*--------------------------------------
SYM.NewLabelR ldy #SYM.Q
lda (ZPSymBufPtr),y
and #$F8 strip off SYM.Q.FUNC...
pha
lda (ZPSymBufPtr)
>STA.G CC.LabelBuf
pla
iny
sta (pData),y
iny
lda #SYM.SC.AUTO
sta (pData),y
rts
*--------------------------------------
* _R : Y,A = T/Q
* others : X,Y = SYM.Addr
*--------------------------------------
SYM.LookupLabelA
cmp #'R'
beq .1
bit bPass2
2022-08-20 14:37:37 +00:00
bmi .1
ldx #0
ldy #0
clc
rts
.1 >STA.G CC.Label+1 A = "B"reak, "C"ontinue...
2022-08-20 14:37:37 +00:00
>PUSHB.G CC.hSyms ...for SListGetData
lda ScopePtr
.2 pha
>PUSHB.G CC.hSyms
>PUSHEA.G CC.Label
pla
pha
jsr SCOPE.PushA
2022-08-20 14:37:37 +00:00
>SYSCALL SListLookup
bcc .3
2022-08-20 14:37:37 +00:00
pla
beq .9
* sec
sbc #SCOPE
bra .2
.9 inc pStack discard CC.hSyms
lda #E.NOKEY
sec
rts
.3 plx
2022-12-13 06:55:13 +00:00
>PUSHA KeyID.HI
tya
>PUSHA KeyID.LO
2022-08-20 14:37:37 +00:00
>PUSHWZ allocate
2022-08-20 14:37:37 +00:00
>PUSHWI 65535 all
>PUSHWZ From Start
>SYSCALL SListGetData
bcs .99
phx
txa
>SYSCALL GetMemPtr
>STYA ZPLookupPtr
plx
>LDA.G CC.Label+1
cmp #'R'
beq .4
2022-08-20 14:37:37 +00:00
ldy #SYM.Addr
lda (ZPLookupPtr),y
2022-08-20 14:37:37 +00:00
pha
2022-08-20 14:37:37 +00:00
iny
lda (ZPLookupPtr),y
pha
txa
>SYSCALL FreeMem
ply
plx
2022-08-20 14:37:37 +00:00
* clc
rts
.4 ldy #SYM.T return T/Q
lda (ZPLookupPtr),y
pha
iny #SYM.Q
lda (ZPLookupPtr),y
pha
txa
>SYSCALL FreeMem
pla
ply
* clc
2022-08-20 14:37:37 +00:00
.99 rts
*--------------------------------------
SYM.LookupFree >LDA.G CC.LookupIdx
beq .9 Never set by CORE.Init
2022-06-22 06:26:44 +00:00
cmp #CC.LookupIdx
beq .9
tay
lda (pdata),y
2022-01-30 21:47:08 +00:00
>SYSCALL FreeMem
2022-06-12 20:42:22 +00:00
bcs .99
2022-06-22 06:26:44 +00:00
>DEC.G CC.LookupIdx
cmp #CC.LookupIdx
beq .8
tay
lda (pdata),y
>SYSCALL GetMemPtr
>STYA ZPLookupSymPtr
.8 clc
rts
.9 lda #E.INVH
2022-06-22 06:26:44 +00:00
* sec
.99 rts
*--------------------------------------
* ZPPtr2 = expected T/Q
* ZPLookupSymPtr
*--------------------------------------
SYM.LookupCheckTQ
lda ZPPtr2 target T
bne .1
2022-06-22 06:26:44 +00:00
lda (ZPLookupSymPtr) SYM.T
sta ZPPtr2 T
ldy #SYM.Q
lda (ZPLookupSymPtr),y
and #$F8 ignore VOLATILE|FUNC|FASTCALL
sta ZPPtr2+1 Q
2022-06-22 06:26:44 +00:00
clc
2022-01-30 21:47:08 +00:00
rts
.1 cmp #SYM.T.VOID
beq .2
2022-01-30 21:47:08 +00:00
lda (ZPLookupSymPtr) SYM.T
cmp #SYM.T.VOID
beq .2
cmp ZPPtr2 T
2022-01-30 21:47:08 +00:00
bne .9
.2 lda ZPPtr2+1 Q
2022-08-20 14:37:37 +00:00
2022-01-30 21:47:08 +00:00
ldy #SYM.Q
eor (ZPLookupSymPtr),y
and #$F8 ignore VOLATILE|FUNC|FASTCALL
beq .8
and #SYM.Q.AAARRAY is mismatch about array ?
beq .9 no...
lda ZPPtr2+1 Q
and #SYM.Q.AAARRAY
2022-01-30 21:47:08 +00:00
bne .9
.8 clc
2022-01-30 21:47:08 +00:00
rts
.9 lda #E.TMISMATCH
2022-01-30 21:47:08 +00:00
sec
.99 rts
*--------------------------------------
* on RT stack : Addr,value
*--------------------------------------
SYM.PopValue jsr SYM.GetYASizeOfInAX
tax
dex
bne .1
>LDYA L.PCC.PopValue1
jmp CODE.EmitPCC
.1 cpx #1
bne .2
>LDYA L.PCC.PopValue2
jmp CODE.EmitPCC
.2 jsr CODE.LDXI
bcs .9
>LDYA L.PCC.PopValueX
jmp CODE.EmitPCC
.9 rts
2022-01-30 21:47:08 +00:00
*--------------------------------------
* out : Y,A = T/Q
*--------------------------------------
SYM.GetTQInYA ldy #SYM.Q
2022-01-30 21:47:08 +00:00
lda (ZPSymBufPtr),y
pha
lda (ZPSymBufPtr)
tay
pla
rts
*--------------------------------------
* out : A,X = size
2022-01-30 21:47:08 +00:00
*--------------------------------------
SYM.GetSymSizeOfInAX
2022-01-30 21:47:08 +00:00
ldy #SYM.Q
lda (ZPSymBufPtr),y
pha
lda (ZPSymBufPtr) SYM.T
tay
pla
SYM.GetYASizeOfInAX
2022-01-30 21:47:08 +00:00
bit #SYM.Q.PPPOINTER
2022-08-20 14:37:37 +00:00
beq .1
lda #2 pointer
ldx #0
sec +1 for hMem Storage
rts
.1 bit #SYM.Q.AAARRAY
bne .2
2022-01-30 21:47:08 +00:00
lda CC.TYPESIZE-1,y
ldx #0
clc
rts
2022-08-20 14:37:37 +00:00
.2 ldx CC.TYPESIZE-1,y
2022-01-30 21:47:08 +00:00
2022-08-20 14:37:37 +00:00
ldy #SYM.Def
lda (ZPSymBufPtr),y
>PUSHA
iny
lda (ZPSymBufPtr),y
>PUSHA
ldy #1
.3 dex
beq .5
.4 lda (pStack),y
clc
adc (pStack),y
sta (pStack),y
lda (pStack)
adc (pStack)
sta (pStack)
dex
bne .4
.5 >PULLA
tax
>PULLA
clc
2022-01-30 21:47:08 +00:00
rts
*--------------------------------------
* in/out : A,X = size
2022-01-30 21:47:08 +00:00
*--------------------------------------
SYM.SetSizeOf ldy #SYM.SizeOf
2022-01-30 21:47:08 +00:00
sta (ZPSymBufPtr),y
pha
iny
txa
sta (ZPSymBufPtr),y
pla
rts
*--------------------------------------
2022-12-13 06:55:13 +00:00
SYM.SetAddrCCode
lda ZPCCCode
ldy #SYM.Addr
2022-01-30 21:47:08 +00:00
sta (ZPSymBufPtr),y
lda ZPCCCode+1
iny
2022-01-30 21:47:08 +00:00
sta (ZPSymBufPtr),y
rts
*--------------------------------------
2022-12-13 06:55:13 +00:00
.DO _DBG_SYM=1
SYM.DEBUGN >PUSHW L.MSG.DEBUG.SYMN
>PUSHW.G CC.SymID
jsr SCOPE.Push
lda (ZPSymBufPtr)
>PUSHA
ldy #1
lda (ZPSymBufPtr),y
>PUSHA
iny
lda (ZPSymBufPtr),y
>PUSHA
>PUSHBI 7
>SYSCALL Printf
rts
SYM.DEBUGU >PUSHW L.MSG.DEBUG.SYMU
>PUSHW.G CC.SymID
lda (ZPSymBufPtr)
>PUSHA
ldy #1
lda (ZPSymBufPtr),y
>PUSHA
iny
lda (ZPSymBufPtr),y
>PUSHA
ldy #SYM.Addr+1
lda (ZPSymBufPtr),y
>PUSHA
dey
lda (ZPSymBufPtr),y
>PUSHA
>PUSHBI 7
>SYSCALL Printf
rts
SYM.DEBUGS >PUSHW L.MSG.DEBUG.SYMS
>PUSHW.G CC.SymID
lda (ZPSymBufPtr)
>PUSHA
ldy #1
lda (ZPSymBufPtr),y
>PUSHA
iny
lda (ZPSymBufPtr),y
>PUSHA
ldy #SYM.Addr+1
lda (ZPSymBufPtr),y
>PUSHA
dey
lda (ZPSymBufPtr),y
>PUSHA
>PUSHBI 7
>SYSCALL Printf
>DEBUG
rts
SYM.DEBUGG >PUSHW L.MSG.DEBUG.SYMG
>PUSHW.G CC.SymID
lda (ZPSymBufPtr)
>PUSHA
ldy #1
lda (ZPSymBufPtr),y
>PUSHA
iny
lda (ZPSymBufPtr),y
>PUSHA
>PUSHBI 5
>SYSCALL Printf
rts
SYM.DEBUGNL >PUSHW L.MSG.DEBUG.SYMNL
>PUSHEA.G CC.Label
>PUSHW.G CC.LabelID
jsr SCOPE.Push
ldy #CC.LabelBuf
lda (pData),y
>PUSHA
iny
lda (pData),y
>PUSHA
iny
lda (pData),y
>PUSHA
>PUSHBI 9
>SYSCALL Printf
* >DEBUG
rts
SYM.DEBUGSL >PUSHW L.MSG.DEBUG.SYMSL
>PUSHW.G CC.LabelID
ldy #CC.LabelBuf
lda (pData),y
>PUSHA
iny
lda (pData),y
>PUSHA
iny
lda (pData),y
>PUSHA
>PUSHBI 5
>SYSCALL Printf
rts
.FIN
2022-01-30 21:47:08 +00:00
*--------------------------------------
MAN
SAVE usr/src/bin/cc.s.sym
LOAD usr/src/bin/cc.s
ASM