A2osX/BIN/ASM.S.SYM.txt

336 lines
5.8 KiB
Plaintext
Raw Normal View History

NEW
PREFIX /A2OSX.BUILD
AUTO 4,1
2015-10-04 20:55:51 +00:00
*---------------------------------------
2015-11-13 16:25:31 +00:00
* Global Symbol Record: (8+ bytes)
* 0 : Len (6)
* 1 : Flags:
* b7=0=pending,1=resolved
* b6=R/W (.SE)
* 2-5 : 32 bits Value
*
2015-11-13 16:25:31 +00:00
* Local Symbol Record: (2 bytes)
2015-11-20 16:31:14 +00:00
* 2 : Local ID (1->255)
2015-10-30 16:34:59 +00:00
* 3 : offset from Global Symbol
2015-11-13 16:25:31 +00:00
* ......
* Ending 0
*---------------------------------------
* Global Symbol Index (Sorted)
* 0 : hGblock
* 1 : Offset in block
2015-10-30 16:34:59 +00:00
*---------------------------------------
* Private Symbol Record: (7 bytes)
* 0,1 : MacroID
2015-11-13 16:25:31 +00:00
* 2 : Private ID (0->255)
2015-10-30 16:34:59 +00:00
* 3-6 : Value
*---------------------------------------
2015-11-13 16:25:31 +00:00
* Macro Record: ( bytes)
*---------------------------------------
SYM.Init >SYSCALL SListNew
bcs .9
2018-01-22 16:52:04 +00:00
>STA.G SYM.hGlobals
>LDYAI 256
>SYSCALL GetMem.YA
bcs .9
>STYA ZPLocalBuf
txa
>STA.G SYM.hLocalBuf
.9 rts
*---------------------------------------
2018-01-29 07:41:05 +00:00
SYM.Quit >LDA.G SYM.hLocalBuf
beq .2
>SYSCALL FreeMem.A
.2 >LDA.G SYM.hGlobals
beq .8
>SYSCALL SListFree.A
.8 clc
rts
2015-10-30 16:34:59 +00:00
*---------------------------------------
2018-01-29 16:48:07 +00:00
SYM.Dump stz ZPLinePtr
2018-01-22 16:52:04 +00:00
stz ZPLinePtr+1
2018-01-26 07:04:29 +00:00
2018-01-29 16:48:07 +00:00
>LDA.G ASM.LI.ON
bpl .1
>LDYA L.MSG.SYMBOLS
>SYSCALL PrintF.YA
2018-01-22 16:52:04 +00:00
.1 >PUSHB.G SYM.hGlobals
>PUSHW ZPLinePtr
>PUSHW ZPTmpBuf
>SYSCALL SListGetByID
bcs .8
stx ZPLinePtr Save Next ID
sty ZPLinePtr+1
2018-01-29 16:48:07 +00:00
>LDA.G ASM.LI.ON
bpl .1
2018-01-22 16:52:04 +00:00
lda (ZPTmpBuf)
sec
adc ZPTmpBuf
sta ZPPtr1
lda ZPTmpBuf+1
adc #0
sta ZPPtr1+1
ldy #SYM.F Get Symbol Size
lda (ZPPtr1),y
and #SYM.F.SIZE
beq .3
pha
tax
iny SYM.V
2018-01-22 16:52:04 +00:00
.2 lda (ZPPtr1),y
>PUSHA
iny
dex
bne .2
pla
asl
.3 tax
ldy L.MSG.EQU0,x
lda L.MSG.EQU0+1,x
2018-01-22 16:52:04 +00:00
>SYSCALL PrintF.YA
>PUSHW ZPTmpBuf Label (PString)
>LDYA L.MSG.PSTRCRLF
>SYSCALL PrintF.YA
2018-01-22 16:52:04 +00:00
bcc .1
rts
.8 clc
2015-10-04 20:55:51 +00:00
rts
*---------------------------------------
2018-03-19 16:48:41 +00:00
SYM.AddGlobalPC jsr SYM.PC2Global A=PC Size
ora #SYM.F.RESOLVED PC is always known
2015-10-04 20:55:51 +00:00
*---------------------------------------
2018-01-29 07:41:05 +00:00
SYM.AddGlobal >STA.G SYM.Global+SYM.F
2018-01-22 16:52:04 +00:00
lda #5 F+DWORD
2018-01-22 07:34:59 +00:00
>STA.G SYM.Global+SYM.LEN
>PUSHB.G SYM.hGlobals
>PUSHW ZPLinePtr
2018-01-22 16:52:04 +00:00
2018-01-22 07:34:59 +00:00
>PUSHEA.G SYM.Global
>SYSCALL SListAdd
bcs .9
2018-01-22 16:52:04 +00:00
2018-01-22 07:34:59 +00:00
adc ZPLinePtr
sta ZPLinePtr
bcc .1
inc ZPLinePtr+1
2018-01-29 16:48:07 +00:00
.1 clc
.HS B0 BCS
.9 sec
tya
>STA.G SYM.ID+1
2018-01-22 07:34:59 +00:00
dey
txa
sta (pData),y
2018-01-29 16:48:07 +00:00
rts
2018-01-22 07:34:59 +00:00
*---------------------------------------
SYM.LookupGlobal >PUSHB.G SYM.hGlobals
>PUSHW ZPLinePtr
>PUSHEA.G SYM.Lookup
>SYSCALL SListLookup
bcs .9
adc ZPLinePtr
sta ZPLinePtr
bcc .1
inc ZPLinePtr+1
clc
.1 tya
>STA.G SYM.ID+1
txa
>STA.G SYM.ID
2018-01-29 07:41:05 +00:00
.9 rts
*---------------------------------------
2018-01-29 16:48:07 +00:00
SYM.UpdateGlobalPC jsr SYM.PC2Global
bra SYM.UpdateGlobal
*---------------------------------------
SYM.UpdateGlobalAcc ldx #3
ldy #SYM.Global+SYM.V+3
.1 lda SRC.ACC,x
sta (pData),y
dey
dex
bpl .1
2018-03-19 16:48:41 +00:00
lda SRC.ACC.SIZE
*---------------------------------------
SYM.UpdateGlobal ora #SYM.F.RESOLVED
>STA.G SYM.Global+SYM.F
lda #5 F+DWORD
>STA.G SYM.Global+SYM.LEN
>PUSHB.G SYM.hGlobals
>PUSHW.G SYM.ID
2018-01-22 07:34:59 +00:00
>PUSHEA.G SYM.Global
>SYSCALL SListUpdateByID
2015-10-04 20:55:51 +00:00
rts
*---------------------------------------
2018-01-29 16:48:07 +00:00
SYM.PC2Global ldx #4
ldy #ASM.PC
.1 lda (pData),y
pha
iny
dex
bne .1
ldx #4
ldy #SYM.Global+SYM.V+3
.2 pla
sta (pData),y
dey
dex
bne .2
ldx #4
ldy #ASM.PC+3
.3 lda (pData),y
bne .4
dex
dey
bne .3
2018-03-19 16:48:41 +00:00
.4 txa A=PC Size
2018-01-29 16:48:07 +00:00
rts
*---------------------------------------
SYM.AddLocalPC tax Save ID
>LDA.G SYM.LocalIndex
tay
2015-10-04 20:55:51 +00:00
clc
adc #6
bcs .9
txa Get Back ID
sta (ZPLocalBuf),y
iny
lda #SYM.F.RESOLVED
sta (ZPLocalBuf),y
iny
phy
ldx #4
ldy #ASM.PC+3
.1 lda (pData),y
pha
dey
dex
bne .1
ldx #4
ply
.2 pla
sta (ZPLocalBuf),y
iny
dex
bne .2
lda #0
sta (ZPLocalBuf),y
tya
>STA.G SYM.LocalIndex
* clc
rts
.9 lda #ERR.TOO.MANY.LOCAL
* sec
rts
*---------------------------------------
SYM.AddLocalPending tax Save ID
>LDA.G SYM.LocalIndex
tay
clc
adc #6
bcs .9
txa Get Back ID
sta (ZPLocalBuf),y
ldx #6 F+DWORD+Ending 0
lda #0
.1 iny
sta (ZPLocalBuf),y
iny
dex
bne .1
>STA.G SYM.LocalIndex
* clc
rts
.9 lda #ERR.TOO.MANY.LOCAL
* sec
2015-10-04 20:55:51 +00:00
rts
*---------------------------------------
2018-01-22 07:34:59 +00:00
SYM.GetLocal
2015-10-04 20:55:51 +00:00
clc
rts
*---------------------------------------
2018-01-22 07:34:59 +00:00
SYM.AddPrivate
2015-10-04 20:55:51 +00:00
clc
rts
*---------------------------------------
2018-01-22 07:34:59 +00:00
SYM.LookupPrivate
2015-11-27 16:26:11 +00:00
clc
rts
*---------------------------------------
2018-01-22 07:34:59 +00:00
SYM.AddMacro
2015-11-27 16:26:11 +00:00
clc
rts
2015-11-20 16:31:14 +00:00
*---------------------------------------
2018-01-22 07:34:59 +00:00
SYM.LookupMacro
clc
2015-11-20 16:31:14 +00:00
rts
2018-01-22 07:34:59 +00:00
*---------------------------------------
2015-10-04 20:55:51 +00:00
MAN
SAVE /A2OSX.BUILD/BIN/DEV/ASM.S.SYM
LOAD /A2OSX.BUILD/BIN/DEV/ASM.S
2015-10-04 20:55:51 +00:00
ASM