mirror of
https://github.com/A2osX/A2osX.git
synced 2024-11-29 17:50:18 +00:00
104 lines
2.1 KiB
Plaintext
104 lines
2.1 KiB
Plaintext
PR#3
|
||
PREFIX /A2OSX.SRC
|
||
NEW
|
||
INC 1
|
||
AUTO 6
|
||
.LIST OFF
|
||
*---------------------------------------
|
||
* Global Symbol Record: (7 bytes)
|
||
* 0 : SYM.Block.ID
|
||
* 1 : Index in SYM.Block
|
||
* 2 : Flags:
|
||
* b7=R/W (.SE)
|
||
* b6=Forward ref
|
||
* 3-6 : Value
|
||
*---------------------------------------
|
||
* Local Symbol Record: (4 bytes)
|
||
* 0,1 : Pointer to Global Symbol in main table
|
||
* 2 : 2 digits name (.99)
|
||
* 3 : offset from Global Symbol
|
||
*---------------------------------------
|
||
* Private Symbol Record: (7 bytes)
|
||
* 0,1 : MacroID
|
||
* 2 : 2 digits name (:99)
|
||
* 3-6 : Value
|
||
*---------------------------------------
|
||
SYM.Init >PUSHWI SYM.MAXCOUNT*8
|
||
>PUSHBI S.MEM.F.INIT0
|
||
>SYSCALL SYS.GetMem
|
||
bcs .9
|
||
|
||
ldy #SYM.hMem
|
||
txa
|
||
sta (pData),y
|
||
clc
|
||
.9 rts
|
||
*---------------------------------------
|
||
SYM.Quit ldy #SYM.hMem
|
||
lda (pData),y
|
||
beq .8
|
||
>SYSCALL SYS.FreeMemA
|
||
.8 clc
|
||
rts
|
||
*---------------------------------------
|
||
SYM.Add
|
||
clc
|
||
rts
|
||
*---------------------------------------
|
||
SYM.AddGlobal
|
||
clc
|
||
rts
|
||
*---------------------------------------
|
||
SYM.LookupGlobal
|
||
clc
|
||
rts
|
||
*---------------------------------------
|
||
SYM.ClearPrivate
|
||
clc
|
||
rts
|
||
*---------------------------------------
|
||
SYM.ClearLocal
|
||
clc
|
||
rts
|
||
*---------------------------------------
|
||
SYM.AddLocal
|
||
clc
|
||
rts
|
||
*---------------------------------------
|
||
SYM.LookupLocal
|
||
clc
|
||
rts
|
||
*---------------------------------------
|
||
SYM.AddPrivate
|
||
clc
|
||
rts
|
||
*---------------------------------------
|
||
SYM.LookupPrivate
|
||
clc
|
||
rts
|
||
*---------------------------------------
|
||
SYM.AddBlock ldx #0
|
||
.1 lda SYM.BLOCKS,x
|
||
beq .2
|
||
inx
|
||
cpx #SYM.BLOCK.MAX
|
||
bne .1
|
||
lda #ERR.SYM.TOO.LONG
|
||
sec Out of block error
|
||
rts
|
||
|
||
.2 phx Save next free block
|
||
>LDYA SYM.BLOCK.SIZE
|
||
>SYSCALL SYS.GetMem
|
||
bcs .9
|
||
txa
|
||
plx
|
||
sta SYM.BLOCKS,x
|
||
clc
|
||
.9 rts
|
||
*---------------------------------------
|
||
MAN
|
||
SAVE BIN/ASM.S.SYM
|
||
LOAD BIN/ASM.S
|
||
ASM
|