mirror of
https://github.com/A2osX/A2osX.git
synced 2024-08-12 14:29:33 +00:00
Kernel 0.93
This commit is contained in:
parent
bdb1045920
commit
4ec9387e39
Binary file not shown.
@ -307,7 +307,7 @@ DIR.EQ clc
|
|||||||
jsr SYM.Acc2Global
|
jsr SYM.Acc2Global
|
||||||
jmp SYM.StoreGlobal
|
jmp SYM.StoreGlobal
|
||||||
|
|
||||||
.2 lda (ZPGlobalBuf) PASS#2
|
.2 lda (ZPSymbolBuf) PASS#2
|
||||||
and #SYMG.F.FWREF
|
and #SYMG.F.FWREF
|
||||||
beq .3
|
beq .3
|
||||||
|
|
||||||
@ -318,7 +318,7 @@ DIR.EQ clc
|
|||||||
|
|
||||||
.3 ldy #SYMG-1 copy back value for OUT.Print
|
.3 ldy #SYMG-1 copy back value for OUT.Print
|
||||||
|
|
||||||
.4 lda (ZPGlobalBuf),y
|
.4 lda (ZPSymbolBuf),y
|
||||||
sta SRC.ACC.F,y
|
sta SRC.ACC.F,y
|
||||||
dey
|
dey
|
||||||
bpl .4
|
bpl .4
|
||||||
@ -513,10 +513,10 @@ DIR.MA >LDA.G ASM.MA.ON
|
|||||||
beq DIR.OP.SYNERR
|
beq DIR.OP.SYNERR
|
||||||
|
|
||||||
>PUSHW ZPLinePtr
|
>PUSHW ZPLinePtr
|
||||||
>LDA.G MAC.hMacroList
|
>LDA.G MAC.hList
|
||||||
>SYSCALL SListNewKey
|
>SYSCALL SListNewKey
|
||||||
bcs .99
|
bcs .99
|
||||||
>STYA.G MAC.MacroID
|
>STYA.G MAC.ID
|
||||||
|
|
||||||
.8 lda #$ff
|
.8 lda #$ff
|
||||||
>STA.G ASM.MA.ON
|
>STA.G ASM.MA.ON
|
||||||
|
@ -79,7 +79,7 @@ EXP.Eval.Next stz SRC.ACC.F
|
|||||||
jsr SRC.GetDecimal
|
jsr SRC.GetDecimal
|
||||||
|
|
||||||
bcs EXP.EvalExitRTS
|
bcs EXP.EvalExitRTS
|
||||||
bra EXP.EvalOperator
|
jmp EXP.EvalOperator
|
||||||
|
|
||||||
.1 cmp #'$' Hex?
|
.1 cmp #'$' Hex?
|
||||||
bne .2
|
bne .2
|
||||||
@ -115,8 +115,12 @@ EXP.Eval.Next stz SRC.ACC.F
|
|||||||
jsr SRC.GetNextChar
|
jsr SRC.GetNextChar
|
||||||
bcs EXP.EvalOperator
|
bcs EXP.EvalOperator
|
||||||
cmp #'''
|
cmp #'''
|
||||||
|
beq .44
|
||||||
|
cmp #','
|
||||||
bne EXP.EvalExitSYN
|
bne EXP.EvalExitSYN
|
||||||
jsr SRC.GetNextChar
|
bra EXP.EvalOperator
|
||||||
|
|
||||||
|
.44 jsr SRC.GetNextChar
|
||||||
bra EXP.EvalOperator
|
bra EXP.EvalOperator
|
||||||
|
|
||||||
.43 cmp #'"'
|
.43 cmp #'"'
|
||||||
@ -128,8 +132,12 @@ EXP.Eval.Next stz SRC.ACC.F
|
|||||||
jsr SRC.GetNextChar
|
jsr SRC.GetNextChar
|
||||||
bcs EXP.EvalOperator
|
bcs EXP.EvalOperator
|
||||||
cmp #'"'
|
cmp #'"'
|
||||||
|
beq .45
|
||||||
|
cmp #','
|
||||||
bne EXP.EvalExitSYN
|
bne EXP.EvalExitSYN
|
||||||
jsr SRC.GetNextChar
|
bra EXP.EvalOperator
|
||||||
|
|
||||||
|
.45 jsr SRC.GetNextChar
|
||||||
bra EXP.EvalOperator
|
bra EXP.EvalOperator
|
||||||
|
|
||||||
.42 jsr SRC.IsLetter Symbol ?
|
.42 jsr SRC.IsLetter Symbol ?
|
||||||
@ -205,7 +213,7 @@ EXP.GetLocal jsr SRC.GetNextChar
|
|||||||
bne EXP.EvalExitUND
|
bne EXP.EvalExitUND
|
||||||
|
|
||||||
lda #SYMG.F.FWREF Mark ACC as pending
|
lda #SYMG.F.FWREF Mark ACC as pending
|
||||||
tsb SRC.ACC.F
|
sta SRC.ACC.F
|
||||||
stz SRC.ACC.SIZE
|
stz SRC.ACC.SIZE
|
||||||
|
|
||||||
clc
|
clc
|
||||||
@ -216,13 +224,13 @@ EXP.GetLocal jsr SRC.GetNextChar
|
|||||||
.8 rts
|
.8 rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
EXP.GetGlobal jsr SYM.LookupGlobal
|
EXP.GetGlobal jsr SYM.LookupGlobal
|
||||||
bcc .2
|
bcc .8
|
||||||
|
|
||||||
>LDA.G ASM.PASS pass#2?
|
>LDA.G ASM.PASS pass#2?
|
||||||
bne EXP.EvalExitUND yes, undefined symbol
|
bne EXP.EvalExitUND yes, undefined symbol
|
||||||
|
|
||||||
lda #SYMG.F.FWREF
|
lda #SYMG.F.FWREF
|
||||||
tsb SRC.ACC.F Mark ACC as pending
|
sta SRC.ACC.F Mark ACC as pending
|
||||||
stz SRC.ACC.SIZE
|
stz SRC.ACC.SIZE
|
||||||
|
|
||||||
.1 jsr SRC.GetNextChar
|
.1 jsr SRC.GetNextChar
|
||||||
@ -235,11 +243,6 @@ EXP.GetGlobal jsr SYM.LookupGlobal
|
|||||||
cmp #'_'
|
cmp #'_'
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
.2
|
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
|
@ -181,10 +181,7 @@ FIO.OpenFile >STYA ZPPtr1
|
|||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
FIO.ReadLine >LDYA ZPLineBuf
|
FIO.ReadLine ldy #SRC.COUNT
|
||||||
>STYA ZPLinePtr
|
|
||||||
|
|
||||||
ldy #SRC.COUNT
|
|
||||||
lda (pData),y
|
lda (pData),y
|
||||||
clc
|
clc
|
||||||
adc #SRC.hFILETYPES-1
|
adc #SRC.hFILETYPES-1
|
||||||
|
@ -5,7 +5,7 @@ AUTO 4,1
|
|||||||
MAC.Init >SYSCALL SListNew
|
MAC.Init >SYSCALL SListNew
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>STA.G MAC.hMacroList
|
>STA.G MAC.hList
|
||||||
|
|
||||||
>LDYAI 256
|
>LDYAI 256
|
||||||
>SYSCALL getmem
|
>SYSCALL getmem
|
||||||
@ -13,43 +13,32 @@ MAC.Init >SYSCALL SListNew
|
|||||||
|
|
||||||
>STYA ZPMacroBuf
|
>STYA ZPMacroBuf
|
||||||
txa
|
txa
|
||||||
>STA.G MAC.hMacroBuf
|
>STA.G MAC.hBuf
|
||||||
|
|
||||||
>SYSCALL SListNew
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
>STA.G MAC.hCtxList
|
|
||||||
|
|
||||||
>LDYAI 256
|
>LDYAI 256
|
||||||
>SYSCALL getmem
|
>SYSCALL getmem
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>STYA ZPCtxBuf
|
>STYA ZPMacroStk
|
||||||
txa
|
txa
|
||||||
>STA.G MAC.hCtxBuf
|
>STA.G MAC.hStk
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
MAC.Reset >STZ.G MAC.CtxID
|
MAC.Reset >STZ.G MAC.StkPtr
|
||||||
iny
|
|
||||||
sta (pData),y
|
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
MAC.Quit >LDA.G MAC.hCtxBuf
|
MAC.Quit >LDA.G MAC.hStk
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
>SYSCALL FreeMem
|
>SYSCALL FreeMem
|
||||||
|
|
||||||
.1 >LDA.G MAC.hCtxList
|
.1 >LDA.G MAC.hBuf
|
||||||
beq .2
|
|
||||||
>SYSCALL SListFree
|
|
||||||
|
|
||||||
.2 >LDA.G MAC.hMacroBuf
|
|
||||||
beq .3
|
beq .3
|
||||||
|
|
||||||
>SYSCALL FreeMem
|
>SYSCALL FreeMem
|
||||||
|
|
||||||
.3 >LDA.G MAC.hMacroList
|
.3 >LDA.G MAC.hList
|
||||||
beq .8
|
beq .8
|
||||||
>SYSCALL SListFree
|
>SYSCALL SListFree
|
||||||
|
|
||||||
@ -77,8 +66,8 @@ MAC.AddChar tax
|
|||||||
|
|
||||||
>PUSHYA
|
>PUSHYA
|
||||||
>PUSHW ZPMacroBuf
|
>PUSHW ZPMacroBuf
|
||||||
>PUSHW.G MAC.MacroID
|
>PUSHW.G MAC.ID
|
||||||
>LDA.G MAC.hMacroList
|
>LDA.G MAC.hList
|
||||||
>SYSCALL SListAddData
|
>SYSCALL SListAddData
|
||||||
rts
|
rts
|
||||||
|
|
||||||
@ -86,9 +75,11 @@ MAC.AddChar tax
|
|||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
MAC.Lookup >PUSHW ZPLinePtr
|
MAC.Lookup >PUSHW ZPLinePtr
|
||||||
>LDA.G MAC.hMacroList
|
>LDA.G MAC.hList
|
||||||
>SYSCALL SListLookup
|
>SYSCALL SListLookup
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
pha
|
||||||
txa
|
txa
|
||||||
adc ZPLinePtr
|
adc ZPLinePtr
|
||||||
sta ZPLinePtr
|
sta ZPLinePtr
|
||||||
@ -96,15 +87,43 @@ MAC.Lookup >PUSHW ZPLinePtr
|
|||||||
|
|
||||||
inc ZPLinePtr+1
|
inc ZPLinePtr+1
|
||||||
clc
|
clc
|
||||||
.8 rts
|
.8 pla Y,A = MAC.ID
|
||||||
|
|
||||||
.9 >DEBUG
|
.9 rts
|
||||||
rts
|
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
MAC.NewOrGetCtx sec
|
MAC.ReadLine >LDA.G MAC.StkPtr
|
||||||
|
|
||||||
|
tay
|
||||||
|
dey
|
||||||
|
dey
|
||||||
|
dey
|
||||||
|
|
||||||
|
lda (ZPMacroStk),y
|
||||||
|
|
||||||
|
>PUSHA offset
|
||||||
|
dey
|
||||||
|
lda (ZPMacroStk),y
|
||||||
|
>PUSHA
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
>PUSHA len = 0 (string mode)
|
||||||
|
>PUSHA
|
||||||
|
|
||||||
|
>PUSHW ZPLineBuf
|
||||||
|
>LDA.G MAC.StkPtr
|
||||||
|
|
||||||
|
tay
|
||||||
|
dey
|
||||||
|
lda (ZPMacroStk),y
|
||||||
|
>PUSHA
|
||||||
|
dey
|
||||||
|
lda (ZPMacroStk),y
|
||||||
|
>PUSHA
|
||||||
|
|
||||||
|
>LDA.G MAC.hList
|
||||||
|
>SYSCALL SListGetData
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
*---------------------------------------
|
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/BIN/ASM.S.MAC
|
SAVE USR/SRC/BIN/ASM.S.MAC
|
||||||
LOAD USR/SRC/BIN/ASM.S
|
LOAD USR/SRC/BIN/ASM.S
|
||||||
|
@ -32,8 +32,8 @@ OUT.Reset ldx #4
|
|||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
OUT.PrintLineOn
|
OUT.PrintLineOn
|
||||||
clc
|
* clc
|
||||||
rts
|
* rts
|
||||||
|
|
||||||
>LDA.G ASM.LI.ON
|
>LDA.G ASM.LI.ON
|
||||||
bpl .9
|
bpl .9
|
||||||
|
@ -205,22 +205,32 @@ SRC.ParseLine.ExecMacro
|
|||||||
|
|
||||||
jsr MAC.Lookup
|
jsr MAC.Lookup
|
||||||
bcs .90
|
bcs .90
|
||||||
|
>STYA ZPPtr1 MAC.ID
|
||||||
|
>LDA.G MAC.StkPtr
|
||||||
|
cmp #MA.MAXDEPTH*4
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
>LDA.G ASM.MA.StackPtr
|
|
||||||
cmp #MA.MAXDEPTH
|
|
||||||
beq .91
|
beq .91
|
||||||
clc
|
|
||||||
adc #ASM.MA.StackPtr
|
|
||||||
tay
|
tay
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta (ZPMacroStk),y
|
||||||
|
iny
|
||||||
|
|
||||||
|
sta (ZPMacroStk),y
|
||||||
|
iny
|
||||||
|
|
||||||
|
lda ZPPtr1
|
||||||
|
sta (ZPMacroStk),y
|
||||||
|
iny
|
||||||
|
|
||||||
|
lda ZPPtr1+1
|
||||||
|
sta (ZPMacroStk),y
|
||||||
|
iny
|
||||||
|
|
||||||
|
tya
|
||||||
|
>STA.G MAC.StkPtr
|
||||||
|
|
||||||
|
|
||||||
* >INC.G ASM.MA.StackPtr
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
@ -342,7 +352,7 @@ SRC.ParseLine.AM
|
|||||||
dex
|
dex
|
||||||
bne .4
|
bne .4
|
||||||
|
|
||||||
bra .7
|
bra .74
|
||||||
|
|
||||||
.6 jsr EXP.Eval
|
.6 jsr EXP.Eval
|
||||||
bcs .99
|
bcs .99
|
||||||
@ -369,7 +379,8 @@ SRC.ParseLine.AM
|
|||||||
.71 jsr SRC.AddToBuf
|
.71 jsr SRC.AddToBuf
|
||||||
dex
|
dex
|
||||||
bne .71
|
bne .71
|
||||||
jsr SRC.GetChar
|
|
||||||
|
.74 jsr SRC.GetChar
|
||||||
bcs .8
|
bcs .8
|
||||||
|
|
||||||
cmp #C.SPACE
|
cmp #C.SPACE
|
||||||
|
@ -18,13 +18,13 @@ AUTO 4,1
|
|||||||
SYM.Init >SYSCALL SListNew
|
SYM.Init >SYSCALL SListNew
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>STA.G SYM.hGlobalList
|
>STA.G SYM.hList
|
||||||
|
|
||||||
>LDYAI 256
|
>LDYAI 256
|
||||||
>SYSCALL getmem
|
>SYSCALL getmem
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>STYA ZPGlobalBuf
|
>STYA ZPSymbolBuf
|
||||||
txa
|
txa
|
||||||
>STA.G SYM.hGlobalBuf
|
>STA.G SYM.hGlobalBuf
|
||||||
|
|
||||||
@ -38,7 +38,7 @@ SYM.Quit >LDA.G SYM.hGlobalBuf
|
|||||||
|
|
||||||
>SYSCALL FreeMem
|
>SYSCALL FreeMem
|
||||||
|
|
||||||
.3 >LDA.G SYM.hGlobalList
|
.3 >LDA.G SYM.hList
|
||||||
beq SYM.Quit.8
|
beq SYM.Quit.8
|
||||||
>SYSCALL SListFree
|
>SYSCALL SListFree
|
||||||
|
|
||||||
@ -65,7 +65,7 @@ SYM.Dump >LDA.G ASM.LI.ON
|
|||||||
|
|
||||||
>PUSHW ZPTmpBuf
|
>PUSHW ZPTmpBuf
|
||||||
>PUSHW ZPPtr1
|
>PUSHW ZPPtr1
|
||||||
>LDA.G SYM.hGlobalList
|
>LDA.G SYM.hList
|
||||||
>SYSCALL SListGetByID
|
>SYSCALL SListGetByID
|
||||||
bcs SYM.Dump.End
|
bcs SYM.Dump.End
|
||||||
|
|
||||||
@ -73,15 +73,15 @@ SYM.Dump >LDA.G ASM.LI.ON
|
|||||||
|
|
||||||
>PUSHWI 0 Start
|
>PUSHWI 0 Start
|
||||||
>PUSHWI $ffff End
|
>PUSHWI $ffff End
|
||||||
>PUSHW ZPGlobalBuf
|
>PUSHW ZPSymbolBuf
|
||||||
>PUSHW ZPPtr1 KeyID
|
>PUSHW ZPPtr1 KeyID
|
||||||
>LDA.G SYM.hGlobalList
|
>LDA.G SYM.hList
|
||||||
|
|
||||||
>SYSCALL SListGetData
|
>SYSCALL SListGetData
|
||||||
bcs SYM.Dump.RTS
|
bcs SYM.Dump.RTS
|
||||||
|
|
||||||
ldy #SYMG.SIZE Get Symbol Size
|
ldy #SYMG.SIZE Get Symbol Size
|
||||||
lda (ZPGlobalBuf),y
|
lda (ZPSymbolBuf),y
|
||||||
|
|
||||||
tax
|
tax
|
||||||
beq .3
|
beq .3
|
||||||
@ -89,7 +89,7 @@ SYM.Dump >LDA.G ASM.LI.ON
|
|||||||
phx
|
phx
|
||||||
|
|
||||||
.2 iny
|
.2 iny
|
||||||
lda (ZPGlobalBuf),y
|
lda (ZPSymbolBuf),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
dex
|
dex
|
||||||
bne .2
|
bne .2
|
||||||
@ -108,22 +108,24 @@ SYM.Dump >LDA.G ASM.LI.ON
|
|||||||
>LDYA ZPTmpBuf Label
|
>LDYA ZPTmpBuf Label
|
||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
|
|
||||||
lda (ZPGlobalBuf)
|
lda (ZPSymbolBuf)
|
||||||
|
|
||||||
bit #SYMG.F.LOCALS
|
bit #SYMG.F.LOCALS
|
||||||
beq .7
|
beq .7
|
||||||
|
|
||||||
ldy #SYMG
|
ldy #SYMG
|
||||||
|
|
||||||
.4 lda (ZPGlobalBuf),y
|
.4 lda (ZPSymbolBuf),y
|
||||||
beq .7 End Local Symbol
|
beq .7 End Local Symbol
|
||||||
|
|
||||||
pha Save ID
|
pha Save ID
|
||||||
|
|
||||||
ldx #4
|
ldx #4
|
||||||
|
|
||||||
|
iny Skip Macro ID
|
||||||
|
|
||||||
.5 iny
|
.5 iny
|
||||||
lda (ZPGlobalBuf),y
|
lda (ZPSymbolBuf),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
dex
|
dex
|
||||||
bne .5
|
bne .5
|
||||||
@ -135,7 +137,8 @@ SYM.Dump >LDA.G ASM.LI.ON
|
|||||||
>LDYA L.MSG.LSYMBOL
|
>LDYA L.MSG.LSYMBOL
|
||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
ply
|
ply
|
||||||
bne .4
|
iny
|
||||||
|
bra .4
|
||||||
|
|
||||||
.7 >PUSHBI 0
|
.7 >PUSHBI 0
|
||||||
>LDYA L.MSG.CRLF
|
>LDYA L.MSG.CRLF
|
||||||
@ -150,7 +153,7 @@ SYM.NewGlobal jsr SYM.StoreGlobal
|
|||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
>PUSHW ZPLinePtr Pass #1; try to add global...
|
>PUSHW ZPLinePtr Pass #1; try to add global...
|
||||||
>LDA.G SYM.hGlobalList
|
>LDA.G SYM.hList
|
||||||
>SYSCALL SListNewKey
|
>SYSCALL SListNewKey
|
||||||
bcs .9 Already Defined
|
bcs .9 Already Defined
|
||||||
>STYA.G SYM.GlobalID
|
>STYA.G SYM.GlobalID
|
||||||
@ -172,7 +175,7 @@ SYM.NewGlobal jsr SYM.StoreGlobal
|
|||||||
tay
|
tay
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
sta (ZPGlobalBuf),y
|
sta (ZPSymbolBuf),y
|
||||||
|
|
||||||
lda #$ff
|
lda #$ff
|
||||||
>STA.G SYM.bInGlobal
|
>STA.G SYM.bInGlobal
|
||||||
@ -189,7 +192,7 @@ SYM.NewGlobal jsr SYM.StoreGlobal
|
|||||||
.99 rts
|
.99 rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
SYM.GetGlobal >PUSHW ZPLinePtr Pass #2: should be already defined...
|
SYM.GetGlobal >PUSHW ZPLinePtr Pass #2: should be already defined...
|
||||||
>LDA.G SYM.hGlobalList
|
>LDA.G SYM.hList
|
||||||
>SYSCALL SListLookup
|
>SYSCALL SListLookup
|
||||||
bcs .9
|
bcs .9
|
||||||
>STYA.G SYM.GlobalID
|
>STYA.G SYM.GlobalID
|
||||||
@ -203,9 +206,9 @@ SYM.GetGlobal >PUSHW ZPLinePtr Pass #2: should be already defined...
|
|||||||
|
|
||||||
.1 >PUSHWI 0 Start
|
.1 >PUSHWI 0 Start
|
||||||
>PUSHWI $ffff End
|
>PUSHWI $ffff End
|
||||||
>PUSHW ZPGlobalBuf
|
>PUSHW ZPSymbolBuf
|
||||||
>PUSHW.G SYM.GlobalID
|
>PUSHW.G SYM.GlobalID
|
||||||
>LDA.G SYM.hGlobalList
|
>LDA.G SYM.hList
|
||||||
>SYSCALL SListGetData
|
>SYSCALL SListGetData
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
@ -220,7 +223,7 @@ SYM.GetGlobal >PUSHW ZPLinePtr Pass #2: should be already defined...
|
|||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
SYM.LookupGlobal
|
SYM.LookupGlobal
|
||||||
>PUSHW ZPLinePtr
|
>PUSHW ZPLinePtr
|
||||||
>LDA.G SYM.hGlobalList
|
>LDA.G SYM.hList
|
||||||
>SYSCALL SListLookup
|
>SYSCALL SListLookup
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
@ -243,7 +246,7 @@ SYM.LookupGlobal
|
|||||||
|
|
||||||
ldy #SYMG-1
|
ldy #SYMG-1
|
||||||
|
|
||||||
.2 lda (ZPGlobalBuf),y
|
.2 lda (ZPSymbolBuf),y
|
||||||
sta SRC.ACC.F,y
|
sta SRC.ACC.F,y
|
||||||
dey
|
dey
|
||||||
bpl .2
|
bpl .2
|
||||||
@ -255,7 +258,7 @@ SYM.LookupGlobal
|
|||||||
>PUSHWI SYMG Get only Global value
|
>PUSHWI SYMG Get only Global value
|
||||||
>PUSHW L.SRC.ACC.F
|
>PUSHW L.SRC.ACC.F
|
||||||
>PUSHW ZPPtr1
|
>PUSHW ZPPtr1
|
||||||
>LDA.G SYM.hGlobalList
|
>LDA.G SYM.hList
|
||||||
>SYSCALL SListGetData
|
>SYSCALL SListGetData
|
||||||
rts
|
rts
|
||||||
|
|
||||||
@ -275,31 +278,21 @@ SYM.StoreGlobal >LDA.G ASM.PASS
|
|||||||
cpy #SYMG
|
cpy #SYMG
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
lda (ZPGlobalBuf)
|
lda (ZPSymbolBuf)
|
||||||
ora #SYMG.F.LOCALS
|
ora #SYMG.F.LOCALS
|
||||||
sta (ZPGlobalBuf)
|
sta (ZPSymbolBuf)
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
sta (ZPGlobalBuf),y
|
sta (ZPSymbolBuf),y
|
||||||
iny
|
iny
|
||||||
bne .1
|
bne .1
|
||||||
inc
|
inc
|
||||||
|
|
||||||
* phy
|
|
||||||
* pha
|
|
||||||
* >PUSHYA
|
|
||||||
* >PUSHBI 2
|
|
||||||
* >LDYA L.MSG.WORD
|
|
||||||
* >SYSCALL printf
|
|
||||||
* pla
|
|
||||||
* ply
|
|
||||||
|
|
||||||
.1 >PUSHYA
|
.1 >PUSHYA
|
||||||
|
|
||||||
.2 >PUSHW ZPGlobalBuf
|
>PUSHW ZPSymbolBuf
|
||||||
>PUSHW.G SYM.GlobalID
|
>PUSHW.G SYM.GlobalID
|
||||||
>LDA.G SYM.hGlobalList
|
>LDA.G SYM.hList
|
||||||
* >DEBUG
|
|
||||||
>SYSCALL SListAddData
|
>SYSCALL SListAddData
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
@ -315,7 +308,7 @@ SYM.UpdateGlobal
|
|||||||
>PUSHWI SYMG
|
>PUSHWI SYMG
|
||||||
>PUSHW L.SRC.ACC.F
|
>PUSHW L.SRC.ACC.F
|
||||||
>PUSHW.G SYM.GlobalID
|
>PUSHW.G SYM.GlobalID
|
||||||
>LDA.G SYM.hGlobalList
|
>LDA.G SYM.hList
|
||||||
>SYSCALL SListSetData
|
>SYSCALL SListSetData
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
@ -337,7 +330,7 @@ SYM.PC2Acc ldy #ASM.PC+3
|
|||||||
SYM.Acc2Global ldy #SYMG-1
|
SYM.Acc2Global ldy #SYMG-1
|
||||||
|
|
||||||
.2 lda SRC.ACC.F,y
|
.2 lda SRC.ACC.F,y
|
||||||
sta (ZPGlobalBuf),y
|
sta (ZPSymbolBuf),y
|
||||||
dey
|
dey
|
||||||
bpl .2
|
bpl .2
|
||||||
|
|
||||||
@ -345,7 +338,7 @@ SYM.Acc2Global ldy #SYMG-1
|
|||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
* Local Symbol Record: (6 bytes)
|
* Local Symbol Record: (6 bytes)
|
||||||
* 0 : Local ID (1->255)
|
* 0 : Local ID (1->255)
|
||||||
* 1 : Macro Context ID
|
* 1 : Macro ID
|
||||||
* 2-5 : 32 bits Value (PC)
|
* 2-5 : 32 bits Value (PC)
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
SYM.NewOrGetLocalA
|
SYM.NewOrGetLocalA
|
||||||
@ -361,7 +354,7 @@ SYM.NewOrGetLocalA
|
|||||||
bcc .9 Already Defined
|
bcc .9 Already Defined
|
||||||
|
|
||||||
>LDA.G SYM.GlobalPtr
|
>LDA.G SYM.GlobalPtr
|
||||||
tay
|
cmp #252 6*42
|
||||||
beq .90
|
beq .90
|
||||||
|
|
||||||
ldy #ASM.PC+4
|
ldy #ASM.PC+4
|
||||||
@ -372,30 +365,32 @@ SYM.NewOrGetLocalA
|
|||||||
cpy #ASM.PC
|
cpy #ASM.PC
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
|
>LDA.G MAC.StkPtr Get Macro Context ID
|
||||||
|
pha
|
||||||
|
|
||||||
>LDA.G SYM.GlobalPtr
|
>LDA.G SYM.GlobalPtr
|
||||||
tay
|
tay
|
||||||
|
|
||||||
txa Get Back ID
|
txa Get Back ID
|
||||||
sta (ZPGlobalBuf),y
|
sta (ZPSymbolBuf),y
|
||||||
|
|
||||||
ldx #4
|
ldx #5 MAC ID + PC (4)
|
||||||
|
|
||||||
.2 pla
|
.2 pla
|
||||||
iny
|
iny
|
||||||
sta (ZPGlobalBuf),y
|
sta (ZPSymbolBuf),y
|
||||||
dex
|
dex
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
tya
|
|
||||||
iny
|
iny
|
||||||
lda #0
|
lda #0
|
||||||
sta (ZPGlobalBuf),y
|
sta (ZPSymbolBuf),y
|
||||||
tya
|
tya
|
||||||
>STA.G SYM.GlobalPtr
|
>STA.G SYM.GlobalPtr
|
||||||
|
|
||||||
lda (ZPGlobalBuf)
|
lda (ZPSymbolBuf)
|
||||||
ora #SYMG.F.LOCALS
|
ora #SYMG.F.LOCALS
|
||||||
sta (ZPGlobalBuf)
|
sta (ZPSymbolBuf)
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
@ -412,23 +407,25 @@ SYM.NewOrGetLocalA
|
|||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
SYM.GetLocalX lda (ZPGlobalBuf)
|
SYM.GetLocalX lda (ZPSymbolBuf)
|
||||||
and #SYMG.F.LOCALS
|
and #SYMG.F.LOCALS
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
ldy #SYMG
|
ldy #SYMG
|
||||||
|
|
||||||
.1 lda (ZPGlobalBuf),y
|
.1 lda (ZPSymbolBuf),y
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
txa
|
txa
|
||||||
cmp (ZPGlobalBuf),y
|
cmp (ZPSymbolBuf),y
|
||||||
bne .3
|
bne .3
|
||||||
|
|
||||||
ldx #0
|
ldx #0
|
||||||
|
|
||||||
|
iny Macro ID
|
||||||
|
|
||||||
.2 iny
|
.2 iny
|
||||||
lda (ZPGlobalBuf),y
|
lda (ZPSymbolBuf),y
|
||||||
sta SRC.ACC,x
|
sta SRC.ACC,x
|
||||||
inx
|
inx
|
||||||
cpx #4
|
cpx #4
|
||||||
@ -444,28 +441,12 @@ SYM.GetLocalX lda (ZPGlobalBuf)
|
|||||||
clc
|
clc
|
||||||
adc #SYML
|
adc #SYML
|
||||||
tay
|
tay
|
||||||
bne .1
|
bra .1
|
||||||
|
|
||||||
.9 lda #E.UNDEF.SYMBOL
|
.9 lda #E.UNDEF.SYMBOL
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
* Private Symbol Record: (9 bytes)
|
|
||||||
* 0 : Len (8)
|
|
||||||
* 1 : Flags:
|
|
||||||
* b7=0=pending,1=resolved
|
|
||||||
* 2-5 : 32 bits Value (PC)
|
|
||||||
* 6,7 : MCID (Macro Context ID)
|
|
||||||
* 8 : Private ID (0->255)
|
|
||||||
*---------------------------------------
|
|
||||||
SYM.AddPrivate
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
*---------------------------------------
|
|
||||||
SYM.LookupPrivate
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
*---------------------------------------
|
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/BIN/ASM.S.SYM
|
SAVE USR/SRC/BIN/ASM.S.SYM
|
||||||
LOAD USR/SRC/BIN/ASM.S
|
LOAD USR/SRC/BIN/ASM.S
|
||||||
|
@ -21,10 +21,10 @@ ZPPtr2 .BS 2
|
|||||||
ZPTmpBuf .BS 2
|
ZPTmpBuf .BS 2
|
||||||
ZPLineBuf .BS 2
|
ZPLineBuf .BS 2
|
||||||
ZPLinePtr .BS 2
|
ZPLinePtr .BS 2
|
||||||
ZPGlobalBuf .BS 2
|
ZPSymbolBuf .BS 2
|
||||||
|
|
||||||
ZPMacroBuf .BS 2
|
ZPMacroBuf .BS 2
|
||||||
ZPCtxBuf .BS 2
|
ZPMacroStk .BS 2
|
||||||
|
|
||||||
ZPAMPtr .BS 2
|
ZPAMPtr .BS 2
|
||||||
ZPRPtr .BS 2
|
ZPRPtr .BS 2
|
||||||
@ -45,21 +45,17 @@ SYMG.V .EQ 2
|
|||||||
SYMG .EQ 6 DWORD
|
SYMG .EQ 6 DWORD
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
SYML.ID .EQ 0 1..255
|
SYML.ID .EQ 0 1..255
|
||||||
SYML.V .EQ 1 DWORD
|
SYML.MacroID .EQ 1
|
||||||
|
SYML.V .EQ 2 DWORD
|
||||||
*
|
*
|
||||||
SYML .EQ 5
|
SYML .EQ 6
|
||||||
*---------------------------------------
|
|
||||||
MCTX.LEN .EQ 0
|
|
||||||
MCTX.PTR .EQ 1
|
|
||||||
MCTX.ID .EQ 2
|
|
||||||
MCTX.ARGS .EQ 4
|
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
ASM.T.AM .EQ 0
|
ASM.T.AM .EQ 0
|
||||||
ASM.T.R .EQ 2
|
ASM.T.R .EQ 2
|
||||||
ASM.T.O .EQ 4
|
ASM.T.O .EQ 4
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
DO.MAXDEPTH .EQ 8
|
DO.MAXDEPTH .EQ 8
|
||||||
IN.MAXDEPTH .EQ 7
|
IN.MAXDEPTH .EQ 4
|
||||||
MA.MAXDEPTH .EQ 8
|
MA.MAXDEPTH .EQ 8
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
E.SYNTAX.ERROR .EQ $A0
|
E.SYNTAX.ERROR .EQ $A0
|
||||||
@ -309,7 +305,18 @@ CS.RUN ldy #S.PS.hStdIn
|
|||||||
jsr SYM.Reset
|
jsr SYM.Reset
|
||||||
jsr MAC.Reset
|
jsr MAC.Reset
|
||||||
|
|
||||||
.10 jsr FIO.ReadLine
|
.10 >LDYA ZPLineBuf
|
||||||
|
>STYA ZPLinePtr
|
||||||
|
|
||||||
|
>LDA.G MAC.StkPtr
|
||||||
|
beq .20
|
||||||
|
|
||||||
|
jsr MAC.ReadLine
|
||||||
|
bcc .2
|
||||||
|
tax
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
.20 jsr FIO.ReadLine
|
||||||
bcc .2
|
bcc .2
|
||||||
cmp #MLI.E.EOF End Of File?
|
cmp #MLI.E.EOF End Of File?
|
||||||
bne .9
|
bne .9
|
||||||
@ -454,10 +461,10 @@ MSG.PASS .AZ "**** Pass:#%d ****"
|
|||||||
MSG.SRC.FILE .AZ "**** Reading SRC File:%s"
|
MSG.SRC.FILE .AZ "**** Reading SRC File:%s"
|
||||||
MSG.OBJ.FILE .AZ "**** Writing OBJ File:%s, Type=%02x"
|
MSG.OBJ.FILE .AZ "**** Writing OBJ File:%s, Type=%02x"
|
||||||
MSG.T.FILE .AZ "**** Loading CPU File:%s"
|
MSG.T.FILE .AZ "**** Loading CPU File:%s"
|
||||||
MSG.OUT0 .AZ "%H%H- "
|
MSG.OUT0 .AZ "%H- "
|
||||||
MSG.OUT1 .AZ "%H%H-%h "
|
MSG.OUT1 .AZ "%H-%h "
|
||||||
MSG.OUT2 .AZ "%H%H-%h %h "
|
MSG.OUT2 .AZ "%H-%h %h "
|
||||||
MSG.OUT3 .AZ "%H%H-%h %h %h"
|
MSG.OUT3 .AZ "%H-%h %h %h"
|
||||||
MSG.EQU0 .AZ " [ ?] "
|
MSG.EQU0 .AZ " [ ?] "
|
||||||
MSG.EQU1 .AZ " [ %h] "
|
MSG.EQU1 .AZ " [ %h] "
|
||||||
MSG.EQU2 .AZ " [ %h%h] "
|
MSG.EQU2 .AZ " [ %h%h] "
|
||||||
@ -536,14 +543,12 @@ ASM.LI.MON .BS 1
|
|||||||
ASM.LI.XON .BS 1
|
ASM.LI.XON .BS 1
|
||||||
|
|
||||||
ASM.MA.ON .BS 1
|
ASM.MA.ON .BS 1
|
||||||
ASM.MA.StackPtr .BS 1
|
|
||||||
ASM.MA.Stack .BS MA.MAXDEPTH
|
|
||||||
|
|
||||||
ASM.PC .BS 4
|
ASM.PC .BS 4
|
||||||
ASM.PC.PH .BS 4
|
ASM.PC.PH .BS 4
|
||||||
ASM.PC.DU .BS 4
|
ASM.PC.DU .BS 4
|
||||||
|
|
||||||
SYM.hGlobalList .BS 1
|
SYM.hList .BS 1
|
||||||
SYM.bInGlobal .BS 1
|
SYM.bInGlobal .BS 1
|
||||||
SYM.GlobalID .BS 2
|
SYM.GlobalID .BS 2
|
||||||
SYM.hGlobalBuf .BS 1
|
SYM.hGlobalBuf .BS 1
|
||||||
@ -551,13 +556,12 @@ SYM.GlobalPtr .BS 1
|
|||||||
|
|
||||||
SYM.LookupID .BS 2
|
SYM.LookupID .BS 2
|
||||||
|
|
||||||
MAC.hMacroList .BS 1
|
MAC.hList .BS 1
|
||||||
MAC.hMacroBuf .BS 1
|
MAC.hBuf .BS 1
|
||||||
MAC.hCtxList .BS 1
|
|
||||||
MAC.hCtxBuf .BS 1
|
|
||||||
MAC.MacroID .BS 2
|
|
||||||
MAC.BufPtr .BS 1
|
MAC.BufPtr .BS 1
|
||||||
MAC.CtxID .BS 2
|
MAC.hStk .BS 1
|
||||||
|
MAC.StkPtr .BS 1
|
||||||
|
MAC.ID .BS 2
|
||||||
|
|
||||||
OUT.PC .BS 4
|
OUT.PC .BS 4
|
||||||
OUT.Buf .BS 4
|
OUT.Buf .BS 4
|
||||||
|
@ -254,7 +254,8 @@ SLIST.NewKey jsr SLIST.Search
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.99 lda #E.DUPKEY
|
.99 >DEBUG
|
||||||
|
lda #E.DUPKEY
|
||||||
sec
|
sec
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
Loading…
Reference in New Issue
Block a user