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