mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-19 23:29:29 +00:00
Kernel 0.94
This commit is contained in:
parent
f8dd42b0d6
commit
95fb344b30
Binary file not shown.
@ -137,7 +137,7 @@ DIR.DA jsr SRC.GetNextCharNB
|
|||||||
|
|
||||||
ldx SRC.ACC.SIZE
|
ldx SRC.ACC.SIZE
|
||||||
bne .10
|
bne .10
|
||||||
|
>DEBUG
|
||||||
ldx #2
|
ldx #2
|
||||||
.10 ldy #0
|
.10 ldy #0
|
||||||
|
|
||||||
@ -265,10 +265,21 @@ DIR.SE sec
|
|||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
DIR.EQ clc
|
DIR.EQ clc
|
||||||
|
|
||||||
>LDA.G SYM.bInGlobal
|
>LDA.G SYM.BufPtr
|
||||||
bpl .99
|
beq .99
|
||||||
|
|
||||||
jsr SRC.GetNextCharNB
|
eor #SYMG
|
||||||
|
beq .1
|
||||||
|
|
||||||
|
bcs .99 .SE not allowed in local/private
|
||||||
|
bcc .10 in local, skip F update
|
||||||
|
|
||||||
|
.1 ror A = 0 : SYMG.F.RW
|
||||||
|
|
||||||
|
ora (ZPSymbolBuf)
|
||||||
|
sta (ZPSymbolBuf)
|
||||||
|
|
||||||
|
.10 jsr SRC.GetNextCharNB
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #$ff
|
lda #$ff
|
||||||
@ -280,7 +291,7 @@ DIR.EQ clc
|
|||||||
>LDA.G ASM.PASS
|
>LDA.G ASM.PASS
|
||||||
bne .2
|
bne .2
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
>LDA.G SYM.GlobalPtr PASS#1
|
>LDA.G SYM.BufPtr PASS#1
|
||||||
|
|
||||||
cmp #SYMG
|
cmp #SYMG
|
||||||
beq .12
|
beq .12
|
||||||
@ -293,14 +304,14 @@ DIR.EQ clc
|
|||||||
sta (ZPSymbolBuf),y
|
sta (ZPSymbolBuf),y
|
||||||
dex
|
dex
|
||||||
bpl .11
|
bpl .11
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.12 jsr SYM.Acc2Global global, update and close
|
.12 jsr SYM.Acc2Global global, update and close
|
||||||
jmp SYM.StoreGlobal
|
jmp SYM.StoreGlobal
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
.2 >LDA.G SYM.GlobalPtr PASS#2
|
.2 >LDA.G SYM.BufPtr PASS#2
|
||||||
|
|
||||||
cmp #SYMG
|
cmp #SYMG
|
||||||
beq .22
|
beq .22
|
||||||
@ -314,6 +325,12 @@ DIR.EQ clc
|
|||||||
dex
|
dex
|
||||||
bpl .21
|
bpl .21
|
||||||
|
|
||||||
|
lda #'e'
|
||||||
|
* jsr OUT.DEBUG
|
||||||
|
|
||||||
|
|
||||||
|
>DEBUG
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
@ -22,15 +22,20 @@ EXP.Eval.Missing
|
|||||||
EXP.Eval >STZ.G EXP.Modifier
|
EXP.Eval >STZ.G EXP.Modifier
|
||||||
>STZ.G EXP.Prefix
|
>STZ.G EXP.Prefix
|
||||||
>STZ.G EXP.Operator
|
>STZ.G EXP.Operator
|
||||||
|
|
||||||
jsr SRC.GetChar
|
jsr SRC.GetChar
|
||||||
bcs EXP.Eval.Missing
|
bcs EXP.Eval.Missing
|
||||||
jsr SRC.IsMODReserved
|
jsr SRC.IsMODReserved
|
||||||
bcs EXP.Eval.Next
|
bcs EXP.Eval.Next
|
||||||
|
|
||||||
txa
|
txa
|
||||||
>STA.G EXP.Modifier
|
>STA.G EXP.Modifier
|
||||||
|
|
||||||
lda #'#'
|
lda #'#'
|
||||||
>STA.G EXP.Prefix
|
>STA.G EXP.Prefix
|
||||||
|
|
||||||
EXP.Eval.Next0 jsr SRC.GetNextChar
|
EXP.Eval.Next0 jsr SRC.GetNextChar
|
||||||
|
|
||||||
EXP.Eval.Next stz SRC.ACC.F
|
EXP.Eval.Next stz SRC.ACC.F
|
||||||
lda #2
|
lda #2
|
||||||
sta SRC.ACC.SIZE Default To WORD (2 bytes)
|
sta SRC.ACC.SIZE Default To WORD (2 bytes)
|
||||||
@ -57,23 +62,23 @@ EXP.Eval.Next stz SRC.ACC.F
|
|||||||
beq .9 illegal OUTSIDE macro
|
beq .9 illegal OUTSIDE macro
|
||||||
|
|
||||||
.13 jsr EXP.GetLocal
|
.13 jsr EXP.GetLocal
|
||||||
bcs .19
|
bcs .99
|
||||||
|
|
||||||
* jsr OUT.DEBUG
|
|
||||||
|
|
||||||
jmp EXP.EvalOperator
|
jmp EXP.EvalOperator
|
||||||
.19 rts
|
|
||||||
|
|
||||||
.14 cmp #'*'
|
.14 cmp #'*'
|
||||||
bne .10
|
bne .10
|
||||||
|
|
||||||
jsr SYM.PC2Acc
|
jsr SYM.PC2Acc
|
||||||
|
|
||||||
|
lda #"*"
|
||||||
|
* jsr OUT.DEBUG
|
||||||
jsr SRC.GetNextChar
|
jsr SRC.GetNextChar
|
||||||
jmp EXP.EvalOperator
|
jmp EXP.EvalOperator
|
||||||
|
|
||||||
.9 lda #E.INV.LABEL
|
.9 lda #E.INV.LABEL
|
||||||
sec
|
sec
|
||||||
rts
|
.99 rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
.10 jsr SRC.IsDigit10 Decimal constant ?
|
.10 jsr SRC.IsDigit10 Decimal constant ?
|
||||||
bcs .1
|
bcs .1
|
||||||
@ -168,19 +173,14 @@ EXP.EvalOperator
|
|||||||
>LDA.G EXP.Operator
|
>LDA.G EXP.Operator
|
||||||
beq .7
|
beq .7
|
||||||
|
|
||||||
* pha
|
|
||||||
* phx
|
|
||||||
* phy
|
|
||||||
* tax
|
|
||||||
* lda SRC.EXP.RESERVED,x
|
|
||||||
* >SYSCALL putchar
|
|
||||||
|
|
||||||
* jsr OUT.DEBUG
|
|
||||||
* ply
|
|
||||||
* plx
|
|
||||||
* pla
|
|
||||||
|
|
||||||
jsr EXP.Compute
|
jsr EXP.Compute
|
||||||
|
bcc .7
|
||||||
|
|
||||||
|
tax
|
||||||
|
>LDA.G ASM.PASS
|
||||||
|
beq .7 Ignore error ...
|
||||||
|
|
||||||
|
txa
|
||||||
bcs EXP.EvalExitRTS
|
bcs EXP.EvalExitRTS
|
||||||
|
|
||||||
.7 jsr SRC.GetChar
|
.7 jsr SRC.GetChar
|
||||||
@ -220,8 +220,6 @@ EXP.GetLocal jsr SRC.GetNextChar
|
|||||||
>LDA.G ASM.PASS pass#2?
|
>LDA.G ASM.PASS pass#2?
|
||||||
bne EXP.EvalExitUND
|
bne EXP.EvalExitUND
|
||||||
|
|
||||||
stz SRC.ACC.SIZE Mark ACC as undefined
|
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
@ -251,26 +249,9 @@ EXP.MOD.32 lda #4
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
EXP.Compute ldx SRC.ACC.SIZE
|
EXP.Compute asl
|
||||||
beq .1
|
|
||||||
|
|
||||||
ldx SRC.ARG.SIZE
|
|
||||||
beq .1
|
|
||||||
|
|
||||||
asl
|
|
||||||
tax
|
tax
|
||||||
jmp (J.EXP.OP-2,x)
|
jmp (J.EXP.OP-2,x)
|
||||||
|
|
||||||
.1 >LDA.G ASM.PASS
|
|
||||||
beq .8
|
|
||||||
|
|
||||||
lda #E.UNDEF.SYMBOL
|
|
||||||
sec
|
|
||||||
rts
|
|
||||||
|
|
||||||
.8 stz SRC.ACC.SIZE Mark ACC as undefined
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
EXP.OP.EOR ldx #3
|
EXP.OP.EOR ldx #3
|
||||||
|
|
||||||
|
@ -31,9 +31,6 @@ MAC.Init >SYSCALL SListNew
|
|||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
MAC.Reset >STZ.G MAC.StkPtr
|
|
||||||
rts
|
|
||||||
*---------------------------------------
|
|
||||||
MAC.Quit >LDA.G MAC.StkPtr
|
MAC.Quit >LDA.G MAC.StkPtr
|
||||||
beq .10
|
beq .10
|
||||||
|
|
||||||
@ -280,7 +277,7 @@ MAC.ReadLine >LDA.G MAC.hBuf
|
|||||||
inc ZPMacroBuf+1
|
inc ZPMacroBuf+1
|
||||||
|
|
||||||
.21 cmp #'#'
|
.21 cmp #'#'
|
||||||
bne .20
|
bne .22
|
||||||
|
|
||||||
lda ZPMacroArgCnt
|
lda ZPMacroArgCnt
|
||||||
ora #$30
|
ora #$30
|
||||||
@ -289,7 +286,7 @@ MAC.ReadLine >LDA.G MAC.hBuf
|
|||||||
|
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.20 cmp #'1'
|
.22 cmp #'1'
|
||||||
bcc .9
|
bcc .9
|
||||||
|
|
||||||
cmp #'9'+1
|
cmp #'9'+1
|
||||||
@ -304,6 +301,17 @@ MAC.ReadLine >LDA.G MAC.hBuf
|
|||||||
jsr MAC.GetArgX
|
jsr MAC.GetArgX
|
||||||
bcs .1 no arg ]n, append nothing
|
bcs .1 no arg ]n, append nothing
|
||||||
|
|
||||||
|
lda (ZPPtr1)
|
||||||
|
cmp #'"'
|
||||||
|
bne .3
|
||||||
|
|
||||||
|
inc ZPPtr1
|
||||||
|
bne .23
|
||||||
|
inc ZPPtr1+1
|
||||||
|
|
||||||
|
.23 dex
|
||||||
|
dex
|
||||||
|
|
||||||
.3 lda (ZPPtr1)
|
.3 lda (ZPPtr1)
|
||||||
sta (ZPLineBuf),y
|
sta (ZPLineBuf),y
|
||||||
iny
|
iny
|
||||||
|
@ -297,7 +297,7 @@ OUT.PrintCR1 >DEC.G OUT.LineCnt
|
|||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
OUT.DEBUG phy
|
OUT.DEBUG phy
|
||||||
phx
|
phx
|
||||||
|
>SYSCALL putchar
|
||||||
>PUSHW L.MSG.DEBUG
|
>PUSHW L.MSG.DEBUG
|
||||||
|
|
||||||
ldy #ASM.PC+4
|
ldy #ASM.PC+4
|
||||||
|
@ -55,8 +55,8 @@ SRC.ParseLine.LABEL
|
|||||||
>LDA.G MAC.StkPtr
|
>LDA.G MAC.StkPtr
|
||||||
beq SRC.ParseLine.InvLbl illegal OUTSIDE macro
|
beq SRC.ParseLine.InvLbl illegal OUTSIDE macro
|
||||||
|
|
||||||
.2 >LDA.G SYM.bInGlobal Not relative to Global label...
|
.2 >LDA.G SYM.BufPtr Not relative to Global label...
|
||||||
bpl SRC.ParseLine.InvLbl
|
beq SRC.ParseLine.InvLbl
|
||||||
|
|
||||||
jsr SRC.GetNextChar
|
jsr SRC.GetNextChar
|
||||||
bcs SRC.ParseLine.InvLbl
|
bcs SRC.ParseLine.InvLbl
|
||||||
@ -188,54 +188,73 @@ SRC.ParseLine.AM
|
|||||||
|
|
||||||
.1 jsr SRC.IsAMReserved
|
.1 jsr SRC.IsAMReserved
|
||||||
bcs .2
|
bcs .2
|
||||||
|
|
||||||
jsr SRC.AddToBuf
|
jsr SRC.AddToBuf
|
||||||
bra .7
|
bra .7
|
||||||
|
|
||||||
.2 jsr SRC.IsLetter Any register?
|
.2 jsr SRC.IsLetter Any register?
|
||||||
bcs .6 no, try something else
|
bcs .6 no, try something else
|
||||||
|
|
||||||
>LDYA ZPRPtr Check in register table
|
>LDYA ZPRPtr Check in register table
|
||||||
jsr SRC.GetKeyword
|
jsr SRC.GetKeyword
|
||||||
bcs .6
|
bcs .6
|
||||||
|
|
||||||
lda (ZPPtr1) get register len
|
lda (ZPPtr1) get register len
|
||||||
tax
|
tax
|
||||||
.4 inc ZPPtr1
|
.4 inc ZPPtr1
|
||||||
bne .5
|
bne .5
|
||||||
|
|
||||||
inc ZPPtr1+1
|
inc ZPPtr1+1
|
||||||
|
|
||||||
.5 lda (ZPPtr1)
|
.5 lda (ZPPtr1)
|
||||||
jsr SRC.AddToBuf
|
jsr SRC.AddToBuf
|
||||||
dex
|
dex
|
||||||
bne .4
|
bne .4
|
||||||
|
|
||||||
bra .74
|
bra .74
|
||||||
|
|
||||||
.6 jsr EXP.Eval
|
.6 jsr EXP.Eval
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
>LDA.G EXP.Prefix
|
>LDA.G EXP.Prefix
|
||||||
beq .75
|
beq .75
|
||||||
|
|
||||||
jsr SRC.AddToBuf
|
jsr SRC.AddToBuf
|
||||||
|
|
||||||
.75 ldx SRC.ACC.SIZE
|
.75 ldx SRC.ACC.SIZE
|
||||||
bne .73
|
bne .73
|
||||||
|
>DEBUG
|
||||||
ldx #2 FWREF ...assume 2 bytes...
|
ldx #2 FWREF ...assume 2 bytes...
|
||||||
.73 lda SRC.ACC-1,x
|
.73 lda SRC.ACC-1,x
|
||||||
bne .72
|
bne .72
|
||||||
|
|
||||||
dex
|
dex
|
||||||
bne .73
|
bne .73
|
||||||
|
|
||||||
inx
|
inx
|
||||||
.72 lda #'a'
|
.72 lda #'a'
|
||||||
|
|
||||||
.71 jsr SRC.AddToBuf
|
.71 jsr SRC.AddToBuf
|
||||||
dex
|
dex
|
||||||
bne .71
|
bne .71
|
||||||
|
|
||||||
.74 jsr SRC.GetChar
|
.74 jsr SRC.GetChar
|
||||||
bcs .8
|
bcs .8
|
||||||
|
|
||||||
cmp #C.SPACE
|
cmp #C.SPACE
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
bra .8
|
bra .8
|
||||||
|
|
||||||
.7 jsr SRC.GetNextChar
|
.7 jsr SRC.GetNextChar
|
||||||
bcs .8
|
bcs .8
|
||||||
|
|
||||||
cmp #C.SPACE
|
cmp #C.SPACE
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
.8 jsr SRC.ParseLine.AMCheck
|
.8 jsr SRC.ParseLine.AMCheck
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
jsr SRC.ParseLine.AMCheck4OP
|
jsr SRC.ParseLine.AMCheck4OP
|
||||||
bcc .88
|
bcc .88
|
||||||
|
|
||||||
@ -369,29 +388,37 @@ SRC.ParseLine.Emit
|
|||||||
.6 cmp #'r
|
.6 cmp #'r
|
||||||
bne .7
|
bne .7
|
||||||
|
|
||||||
lda SRC.ACC.SIZE
|
jsr SRC.ComputeRel8
|
||||||
|
bcs .61
|
||||||
|
|
||||||
|
lda SRC.ACC
|
||||||
|
bra .50
|
||||||
|
|
||||||
|
.61 >LDA.G ASM.PASS
|
||||||
beq .50 Emit 00 if pending symbol (pass #1)
|
beq .50 Emit 00 if pending symbol (pass #1)
|
||||||
|
|
||||||
jsr SRC.ComputeRel8
|
bra .91
|
||||||
bcs .91
|
|
||||||
bra .50
|
|
||||||
|
|
||||||
.7 cmp #'l
|
.7 cmp #'l
|
||||||
bne .90
|
bne .90
|
||||||
|
|
||||||
lda SRC.ACC.SIZE
|
jsr SRC.ComputeRel16
|
||||||
bne .71
|
bcs .71
|
||||||
jsr OUT.EmitByte Emit 00 00 if pending symbol (pass #1)
|
|
||||||
bcs .9
|
|
||||||
lda #0
|
|
||||||
bra .50
|
|
||||||
.71 jsr SRC.ComputeRel16
|
|
||||||
bcs .91
|
|
||||||
lda SRC.ACC
|
lda SRC.ACC
|
||||||
jsr OUT.EmitByte
|
jsr OUT.EmitByte
|
||||||
bcs .9
|
bcs .9
|
||||||
lda SRC.ACC+1
|
lda SRC.ACC+1
|
||||||
bra .50
|
bra .50
|
||||||
|
|
||||||
|
.71 >LDA.G ASM.PASS
|
||||||
|
bne .91
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
jsr OUT.EmitByte
|
||||||
|
bcs .9
|
||||||
|
lda #0
|
||||||
|
bra .50 Emit 00 00 if pending symbol (pass #1)
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
.9 rts
|
.9 rts
|
||||||
@ -399,6 +426,7 @@ SRC.ParseLine.Emit
|
|||||||
.90 lda #E.INV.T.FILE
|
.90 lda #E.INV.T.FILE
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.91 lda #E.RANGE
|
.91 lda #E.RANGE
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
@ -485,7 +513,8 @@ SRC.ComputeRel16
|
|||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
SRC.ComputeRel phy
|
SRC.ComputeRel phy
|
||||||
|
|
||||||
jsr OUT.DEBUG
|
lda #'r'
|
||||||
|
* jsr OUT.DEBUG
|
||||||
|
|
||||||
ldy #ASM.PC
|
ldy #ASM.PC
|
||||||
clc
|
clc
|
||||||
@ -506,7 +535,8 @@ SRC.ComputeRel phy
|
|||||||
sta SRC.ACC+3
|
sta SRC.ACC+3
|
||||||
|
|
||||||
php
|
php
|
||||||
jsr OUT.DEBUG
|
lda #'R'
|
||||||
|
* jsr OUT.DEBUG
|
||||||
plp
|
plp
|
||||||
ply
|
ply
|
||||||
rts
|
rts
|
||||||
|
@ -24,10 +24,10 @@ SYM.Init >SYSCALL SListNew
|
|||||||
bcs .9
|
bcs .9
|
||||||
>STYA ZPSymbolBuf
|
>STYA ZPSymbolBuf
|
||||||
txa
|
txa
|
||||||
>STA.G SYM.hGlobalBuf
|
>STA.G SYM.hBuf
|
||||||
.9 rts
|
.9 rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
SYM.Quit >LDA.G SYM.hGlobalBuf
|
SYM.Quit >LDA.G SYM.hBuf
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
>SYSCALL FreeMem
|
>SYSCALL FreeMem
|
||||||
@ -54,7 +54,7 @@ SYM.NewGlobal >LDA.G ASM.PASS
|
|||||||
>SYSCALL SListNewKey
|
>SYSCALL SListNewKey
|
||||||
bcs .9 Already Defined
|
bcs .9 Already Defined
|
||||||
|
|
||||||
>STYA.G SYM.GlobalID
|
>STYA.G SYM.ID
|
||||||
|
|
||||||
txa
|
txa
|
||||||
* clc
|
* clc
|
||||||
@ -64,17 +64,19 @@ SYM.NewGlobal >LDA.G ASM.PASS
|
|||||||
inc ZPLinePtr+1
|
inc ZPLinePtr+1
|
||||||
|
|
||||||
.1 jsr SYM.PC2Acc
|
.1 jsr SYM.PC2Acc
|
||||||
|
|
||||||
|
lda #2
|
||||||
|
sta SRC.ACC.SIZE
|
||||||
|
stz SRC.ACC.F
|
||||||
|
|
||||||
jsr SYM.Acc2Global
|
jsr SYM.Acc2Global
|
||||||
|
|
||||||
lda #SYMG
|
lda #SYMG
|
||||||
>STA.G SYM.GlobalPtr
|
>STA.G SYM.BufPtr
|
||||||
tay
|
tay
|
||||||
lda #0
|
lda #0
|
||||||
sta (ZPSymbolBuf),y
|
sta (ZPSymbolBuf),y
|
||||||
|
|
||||||
lda #$ff
|
|
||||||
>STA.G SYM.bInGlobal
|
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
@ -87,7 +89,7 @@ SYM.NewGlobal2 >PUSHB.G SYM.hList Pass #2: should be already defined...
|
|||||||
>SYSCALL SListLookup
|
>SYSCALL SListLookup
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>STYA.G SYM.GlobalID
|
>STYA.G SYM.ID
|
||||||
|
|
||||||
txa
|
txa
|
||||||
* clc
|
* clc
|
||||||
@ -97,15 +99,15 @@ SYM.NewGlobal2 >PUSHB.G SYM.hList Pass #2: should be already defined...
|
|||||||
inc ZPLinePtr+1
|
inc ZPLinePtr+1
|
||||||
|
|
||||||
.1 >PUSHB.G SYM.hList Pass #2: Retore full context
|
.1 >PUSHB.G SYM.hList Pass #2: Retore full context
|
||||||
>PUSHW.G SYM.GlobalID
|
>PUSHW.G SYM.ID
|
||||||
>PUSHW ZPSymbolBuf
|
>PUSHW ZPSymbolBuf
|
||||||
>PUSHWI $ffff all
|
>PUSHWI $ffff all
|
||||||
>PUSHWZ from Start
|
>PUSHWZ from Start
|
||||||
>SYSCALL SListGetData
|
>SYSCALL SListGetData
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #$ff
|
lda #SYMG
|
||||||
>STA.G SYM.bInGlobal
|
>STA.G SYM.BufPtr
|
||||||
|
|
||||||
>STZ.G MAC.CtxID
|
>STZ.G MAC.CtxID
|
||||||
>STA.G MAC.CtxNextID
|
>STA.G MAC.CtxNextID
|
||||||
@ -132,19 +134,41 @@ SYM.LookupGlobal
|
|||||||
bcc .1
|
bcc .1
|
||||||
inc ZPLinePtr+1
|
inc ZPLinePtr+1
|
||||||
|
|
||||||
.1 >PUSHB.G SYM.hList
|
.1 >LDA.G SYM.ID
|
||||||
|
cmp ZPPtr1
|
||||||
|
bne .3
|
||||||
|
iny
|
||||||
|
lda (pData),y
|
||||||
|
cmp ZPPtr1+1
|
||||||
|
bne .3
|
||||||
|
|
||||||
|
ldy #SYMG-1
|
||||||
|
|
||||||
|
.2 lda (ZPSymbolBuf),y
|
||||||
|
sta SRC.ACC.F,y
|
||||||
|
dey
|
||||||
|
bpl .2
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.3 >PUSHB.G SYM.hList
|
||||||
>PUSHW ZPPtr1
|
>PUSHW ZPPtr1
|
||||||
>PUSHW L.SRC.ACC.F
|
>PUSHW L.SRC.ACC.F
|
||||||
>PUSHWI SYMG Get only Global value
|
>PUSHWI SYMG Get only Global value
|
||||||
>PUSHWZ Start
|
>PUSHWZ Start
|
||||||
>SYSCALL SListGetData
|
>SYSCALL SListGetData
|
||||||
|
php
|
||||||
|
pha
|
||||||
|
lda #'G'
|
||||||
|
* jsr OUT.DEBUG
|
||||||
|
pla
|
||||||
|
plp
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.4 >LDA.G ASM.PASS pass#2?
|
.4 >LDA.G ASM.PASS pass#2?
|
||||||
bne .9 yes, undefined symbol
|
bne .9 yes, undefined symbol
|
||||||
|
|
||||||
stz SRC.ACC.SIZE Mark ACC as undefined
|
|
||||||
|
|
||||||
.5 jsr SRC.GetNextChar
|
.5 jsr SRC.GetNextChar
|
||||||
bcs .8
|
bcs .8
|
||||||
|
|
||||||
@ -167,14 +191,14 @@ SYM.LookupGlobal
|
|||||||
SYM.StoreGlobal >LDA.G ASM.PASS
|
SYM.StoreGlobal >LDA.G ASM.PASS
|
||||||
bne .8
|
bne .8
|
||||||
|
|
||||||
>LDA.G SYM.bInGlobal
|
>LDA.G SYM.BufPtr
|
||||||
bpl .8
|
beq .8
|
||||||
|
|
||||||
>PUSHB.G SYM.hList
|
>PUSHB.G SYM.hList
|
||||||
>PUSHW.G SYM.GlobalID
|
>PUSHW.G SYM.ID
|
||||||
>PUSHW ZPSymbolBuf
|
>PUSHW ZPSymbolBuf
|
||||||
|
|
||||||
>LDA.G SYM.GlobalPtr
|
>LDA.G SYM.BufPtr
|
||||||
tay
|
tay
|
||||||
lda #0
|
lda #0
|
||||||
cpy #SYMG
|
cpy #SYMG
|
||||||
@ -189,17 +213,17 @@ SYM.StoreGlobal >LDA.G ASM.PASS
|
|||||||
>SYSCALL SListAddData
|
>SYSCALL SListAddData
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>STZ.G SYM.bInGlobal
|
>STZ.G SYM.BufPtr
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
SYM.UpdateGlobal
|
SYM.UpdateGlobal
|
||||||
>PUSHB.G SYM.hList
|
>PUSHB.G SYM.hList
|
||||||
>PUSHW.G SYM.GlobalID
|
>PUSHW.G SYM.ID
|
||||||
>PUSHW ZPSymbolBuf
|
>PUSHW ZPSymbolBuf
|
||||||
|
|
||||||
>LDA.G SYM.GlobalPtr
|
>LDA.G SYM.BufPtr
|
||||||
tay
|
tay
|
||||||
lda #0
|
lda #0
|
||||||
cpy #SYMG
|
cpy #SYMG
|
||||||
@ -223,9 +247,6 @@ SYM.PC2Acc ldy #ASM.PC+3
|
|||||||
dex
|
dex
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
lda #2
|
|
||||||
sta SRC.ACC.SIZE
|
|
||||||
stz SRC.ACC.F
|
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
SYM.Acc2Global ldy #SYMG-1
|
SYM.Acc2Global ldy #SYMG-1
|
||||||
@ -239,8 +260,8 @@ SYM.Acc2Global ldy #SYMG-1
|
|||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
SYM.NewLocalA tax Save Local ID
|
SYM.NewLocalA tax Save Local ID
|
||||||
|
|
||||||
>LDA.G SYM.bInGlobal not in a global label
|
>LDA.G SYM.BufPtr not in a global label
|
||||||
bpl .91
|
beq .91
|
||||||
|
|
||||||
>LDA.G ASM.PASS
|
>LDA.G ASM.PASS
|
||||||
bne .20
|
bne .20
|
||||||
@ -248,7 +269,7 @@ SYM.NewLocalA tax Save Local ID
|
|||||||
jsr SYM.LookupLocalX Pass #1: try to add
|
jsr SYM.LookupLocalX Pass #1: try to add
|
||||||
bcc .9 Already Defined
|
bcc .9 Already Defined
|
||||||
|
|
||||||
>LDA.G SYM.GlobalPtr
|
>LDA.G SYM.BufPtr
|
||||||
cmp #252 6*42
|
cmp #252 6*42
|
||||||
beq .90
|
beq .90
|
||||||
|
|
||||||
@ -264,7 +285,7 @@ SYM.NewLocalA tax Save Local ID
|
|||||||
|
|
||||||
pha
|
pha
|
||||||
|
|
||||||
>LDA.G SYM.GlobalPtr
|
>LDA.G SYM.BufPtr
|
||||||
tay
|
tay
|
||||||
txa Get Back ID
|
txa Get Back ID
|
||||||
sta (ZPSymbolBuf),y
|
sta (ZPSymbolBuf),y
|
||||||
@ -282,7 +303,7 @@ SYM.NewLocalA tax Save Local ID
|
|||||||
sta (ZPSymbolBuf),y ending \0
|
sta (ZPSymbolBuf),y ending \0
|
||||||
tya
|
tya
|
||||||
|
|
||||||
>STA.G SYM.GlobalPtr
|
>STA.G SYM.BufPtr
|
||||||
|
|
||||||
lda (ZPSymbolBuf)
|
lda (ZPSymbolBuf)
|
||||||
ora #SYMG.F.LOCALS
|
ora #SYMG.F.LOCALS
|
||||||
@ -303,10 +324,11 @@ SYM.NewLocalA tax Save Local ID
|
|||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
.20 jsr SYM.LookupLocalX Pass #2: check if defined
|
.20 >LDA.G SYM.BufPtr Pass #2: setup SYM.BufPtr in case of .EQ
|
||||||
bcs .9
|
clc
|
||||||
|
adc #SYML
|
||||||
|
sta (pData),y
|
||||||
|
|
||||||
>STA.G SYM.GlobalPtr
|
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
SYM.LookupLocalX
|
SYM.LookupLocalX
|
||||||
@ -343,14 +365,8 @@ SYM.LookupLocalX
|
|||||||
|
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
lda #2
|
|
||||||
sta SRC.ACC.SIZE
|
|
||||||
|
|
||||||
pla
|
pla
|
||||||
|
|
||||||
iny point to 0 after local
|
|
||||||
tya
|
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
@ -406,8 +422,21 @@ SYM.Dump.1 >LDYA L.MSG.SYMBOLS
|
|||||||
>PUSHWZ from Start
|
>PUSHWZ from Start
|
||||||
>SYSCALL SListGetData
|
>SYSCALL SListGetData
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
jsr SYM.Dump.GLP
|
||||||
|
|
||||||
|
bcc .1
|
||||||
|
|
||||||
|
.9 rts
|
||||||
|
*---------------------------------------
|
||||||
|
SYM.Dump.DBG >PUSHW L.MSG.WORD
|
||||||
|
|
||||||
jsr SYM.Dump.G
|
>PUSHW ZPPtr2
|
||||||
|
>PUSHBI 2
|
||||||
|
>SYSCALL printf
|
||||||
|
rts
|
||||||
|
*---------------------------------------
|
||||||
|
SYM.Dump.GLP jsr SYM.Dump.G
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
ldx #5
|
ldx #5
|
||||||
@ -422,17 +451,10 @@ SYM.Dump.1 >LDYA L.MSG.SYMBOLS
|
|||||||
.2 cpx #5 already CR printed ?
|
.2 cpx #5 already CR printed ?
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
jsr OUT.PrintCR
|
jmp OUT.PrintCR
|
||||||
.8 jmp .1
|
|
||||||
|
.8 clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*---------------------------------------
|
|
||||||
SYM.Dump.DBG >PUSHW L.MSG.WORD
|
|
||||||
|
|
||||||
>PUSHW ZPPtr2
|
|
||||||
>PUSHBI 2
|
|
||||||
>SYSCALL printf
|
|
||||||
rts
|
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
SYM.Dump.G ldy #SYMG.SIZE Get Symbol Size
|
SYM.Dump.G ldy #SYMG.SIZE Get Symbol Size
|
||||||
lda (ZPSymbolBuf),y
|
lda (ZPSymbolBuf),y
|
||||||
|
@ -337,9 +337,9 @@ CS.RUN ldy #S.PS.hStdIn
|
|||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr DIR.Reset
|
jsr DIR.Reset
|
||||||
jsr MAC.Reset
|
|
||||||
|
>STZ.G MAC.StkPtr
|
||||||
>STZ.G SYM.bInGlobal
|
>STZ.G SYM.BufPtr
|
||||||
|
|
||||||
.10 >LDYA ZPLineBuf
|
.10 >LDYA ZPLineBuf
|
||||||
>STYA ZPLinePtr
|
>STYA ZPLinePtr
|
||||||
@ -395,7 +395,8 @@ CS.RUN ldy #S.PS.hStdIn
|
|||||||
|
|
||||||
.9 pha
|
.9 pha
|
||||||
jsr OUT.PrintLineErr
|
jsr OUT.PrintLineErr
|
||||||
|
jsr SYM.Dump.GLP
|
||||||
|
|
||||||
jsr SYM.StoreGlobal Make sure last Global flushed
|
jsr SYM.StoreGlobal Make sure last Global flushed
|
||||||
* jsr SYM.Dump.1
|
* jsr SYM.Dump.1
|
||||||
pla
|
pla
|
||||||
@ -597,18 +598,18 @@ ASM.PC.PH .BS 4
|
|||||||
ASM.PC.DU .BS 4
|
ASM.PC.DU .BS 4
|
||||||
|
|
||||||
SYM.hList .BS 1
|
SYM.hList .BS 1
|
||||||
SYM.bInGlobal .BS 1
|
SYM.hBuf .BS 1
|
||||||
SYM.GlobalID .BS 2
|
SYM.BufPtr .BS 1
|
||||||
SYM.hGlobalBuf .BS 1
|
SYM.ID .BS 2
|
||||||
SYM.GlobalPtr .BS 1
|
|
||||||
|
|
||||||
MAC.hList .BS 1
|
MAC.hList .BS 1
|
||||||
MAC.hBuf .BS 1
|
MAC.hBuf .BS 1
|
||||||
MAC.BufPtr .BS 1
|
MAC.BufPtr .BS 1
|
||||||
|
MAC.ID .BS 2
|
||||||
|
|
||||||
MAC.hStk .BS 1
|
MAC.hStk .BS 1
|
||||||
MAC.StkPtr .BS 1
|
MAC.StkPtr .BS 1
|
||||||
MAC.hArgBuf .BS 1
|
MAC.hArgBuf .BS 1
|
||||||
MAC.ID .BS 2
|
|
||||||
MAC.CtxID .BS 1
|
MAC.CtxID .BS 1
|
||||||
MAC.CtxNextID .BS 1
|
MAC.CtxNextID .BS 1
|
||||||
MAC.CtxStackPtr .BS 1
|
MAC.CtxStackPtr .BS 1
|
||||||
|
@ -14,7 +14,7 @@ NEW
|
|||||||
.OR ZPBIN
|
.OR ZPBIN
|
||||||
ZS.START
|
ZS.START
|
||||||
ArgIndex .BS 1
|
ArgIndex .BS 1
|
||||||
ZPPTR1 .BS 2
|
ZPPtr1 .BS 2
|
||||||
|
|
||||||
bPause .BS 1
|
bPause .BS 1
|
||||||
bAll .BS 1
|
bAll .BS 1
|
||||||
@ -143,7 +143,7 @@ CS.RUN
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.LOOP ldy #S.PS.hStdIn
|
CS.RUN.LOOP ldy #S.PS.hStdIn
|
||||||
lda (pPS),y
|
lda (pPS),y
|
||||||
>SYSCALL feof
|
>SYSCALL FEOF
|
||||||
bcs .9 IO error
|
bcs .9 IO error
|
||||||
tay
|
tay
|
||||||
bne .1 no char
|
bne .1 no char
|
||||||
@ -211,7 +211,7 @@ CS.RUN.OPEN >PUSHW ZPPtr1
|
|||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.SEEK >LDYA ZPPtr1
|
CS.RUN.SEEK >LDYA ZPPtr1
|
||||||
>SYSCALL atol
|
>SYSCALL AToL
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>PULLL SeekOfs
|
>PULLL SeekOfs
|
||||||
@ -221,12 +221,12 @@ CS.RUN.SEEK >LDYA ZPPtr1
|
|||||||
>PUSHL SeekOfs
|
>PUSHL SeekOfs
|
||||||
lda hFile1
|
lda hFile1
|
||||||
|
|
||||||
>SYSCALL fseek
|
>SYSCALL FSeek
|
||||||
bcs .9
|
bcs .9
|
||||||
.1 >PUSHBI SEEK.SET
|
.1 >PUSHBI SEEK.SET
|
||||||
>PUSHL SeekOfs
|
>PUSHL SeekOfs
|
||||||
lda hFile2
|
lda hFile2
|
||||||
>SYSCALL fseek
|
>SYSCALL FSeek
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -16,7 +16,7 @@ CSH.T.ULONG .EQ 6
|
|||||||
CSH.T.FLOAT .EQ 7
|
CSH.T.FLOAT .EQ 7
|
||||||
CSH.T.VARIADIC .EQ $1F
|
CSH.T.VARIADIC .EQ $1F
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CSH.OPChars .AS "!~+-*/%=&|^&<>"
|
CSH.OPChars .AS "!~+-*/%=&|^<>"
|
||||||
CSH.OPChars.Cnt .EQ *-CSH.OPChars
|
CSH.OPChars.Cnt .EQ *-CSH.OPChars
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Pre Operators: + - ! ~ ++ --
|
* Pre Operators: + - ! ~ ++ --
|
||||||
|
Loading…
x
Reference in New Issue
Block a user