mirror of
https://github.com/A2osX/A2osX.git
synced 2025-04-04 18:32:56 +00:00
Kernel 0.93
This commit is contained in:
parent
4d8432082a
commit
34c7de8bea
Binary file not shown.
@ -293,7 +293,11 @@ DIR.EQ >LDA.G SYM.bNewGlobal
|
||||
jsr SRC.GetNextCharNB
|
||||
bcs .99
|
||||
|
||||
jmp EXP.Eval
|
||||
jsr EXP.Eval
|
||||
bcs .9
|
||||
|
||||
jsr SYM.Acc2Global
|
||||
jmp SYM.StoreGlobal
|
||||
|
||||
.99 lda #ERR.SYNTAX.ERROR
|
||||
sec
|
||||
|
@ -194,16 +194,19 @@ EXP.GetSymL jsr SRC.GetNextChar
|
||||
ora SRC.ACC+2
|
||||
ora SRC.ACC+3
|
||||
bne EXP.EvalExitSYN Max .255
|
||||
lda SRC.ACC
|
||||
ldx SRC.ACC
|
||||
beq EXP.EvalExitSYN .0 is not allowed
|
||||
|
||||
jsr SYM.LookupLocal
|
||||
jsr SYM.GetLocalX
|
||||
bcc .8
|
||||
|
||||
>LDA.G ASM.PASS pass#2?
|
||||
bne EXP.EvalExitUND
|
||||
lda #0 Mark ACC as pending
|
||||
sta SRC.ACC.SIZE
|
||||
|
||||
lda #SYMG.F.FWREF Mark ACC as pending
|
||||
sta SRC.ACC.F
|
||||
stz SRC.ACC.SIZE
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
@ -214,7 +217,7 @@ EXP.GetSymL jsr SRC.GetNextChar
|
||||
EXP.GetSymG jsr SYM.LookupGlobal
|
||||
bcs .2
|
||||
|
||||
jsr SYM.Lookup2Acc
|
||||
* jsr SYM.Lookup2Acc
|
||||
|
||||
clc
|
||||
rts
|
||||
|
@ -361,7 +361,7 @@ SRC.ParseLine.AM
|
||||
|
||||
.74 lda SRC.ACC.SIZE
|
||||
beq .72 Pending...assume 2 bytes...
|
||||
|
||||
|
||||
tax
|
||||
|
||||
.73 lda SRC.ACC-1,x
|
||||
@ -391,9 +391,8 @@ SRC.ParseLine.AM
|
||||
*---------------------------------------
|
||||
SRC.ParseLine.AMCheck
|
||||
* jsr OUT.PrintLine.1
|
||||
* >PUSHW L.SRC.AM.StrBuf
|
||||
* >LDYA L.MSG.PSTRCRLF
|
||||
* >SYSCALL printf
|
||||
* >LDYA L.SRC.AM.StrBuf
|
||||
* >SYSCALL puts
|
||||
* >DEBUG
|
||||
lda SRC.AM.StrBuf
|
||||
beq SRC.ParseLine.OPAMCheckFF
|
||||
|
@ -63,79 +63,80 @@ SYM.Quit >LDA.G SYM.hLookupBuf
|
||||
beq .3
|
||||
|
||||
>SYSCALL FreeMem
|
||||
|
||||
.3 >LDA.G SYM.hGlobalList
|
||||
beq .8
|
||||
beq SYM.Quit.8
|
||||
>SYSCALL SListFree
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
SYM.Quit.8 clc
|
||||
SYM.Quit.RTS rts
|
||||
*---------------------------------------
|
||||
SYM.Dump stz ZPPtr2
|
||||
stz ZPPtr2+1
|
||||
|
||||
>LDA.G ASM.LI.ON
|
||||
bpl .1
|
||||
SYM.Dump >LDA.G ASM.LI.ON
|
||||
bpl SYM.Quit.8
|
||||
|
||||
>LDYA L.MSG.SYMBOLS
|
||||
>SYSCALL puts
|
||||
|
||||
.1 >PUSHW ZPNameBuf
|
||||
stz ZPPtr2
|
||||
stz ZPPtr2+1
|
||||
|
||||
.1 >LDYA ZPPtr2
|
||||
>STYA ZPPtr1
|
||||
|
||||
>PUSHW ZPNameBuf
|
||||
>PUSHW ZPPtr1
|
||||
>LDA.G SYM.hGlobalList
|
||||
>SYSCALL SListGetByID
|
||||
bcc .10
|
||||
bcs SYM.Quit.8
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.10 >STYA ZPPtr2 Save Next ID
|
||||
>STYA ZPPtr2 Save Next ID
|
||||
|
||||
>PUSHW ZPNameBuf Label (PString)
|
||||
>PUSHBI 2
|
||||
>LDYA L.MSG.PSTR
|
||||
>SYSCALL printf
|
||||
bcs .9
|
||||
.9 bcs SYM.Quit.RTS
|
||||
|
||||
>PUSHWI 0 Start
|
||||
>PUSHWI $ffff End
|
||||
>PUSHWI 0 Allocate
|
||||
>PUSHW ZPPtr1
|
||||
>PUSHW ZPGlobalBuf
|
||||
>PUSHW ZPPtr1 KeyID
|
||||
>LDA.G SYM.hGlobalList
|
||||
>SYSCALL SListGetData
|
||||
bcs .9
|
||||
txa
|
||||
|
||||
>STA.G hBuf
|
||||
|
||||
ldy #SYMG.F Get Symbol Size
|
||||
ldy #SYMG.SIZE Get Symbol Size
|
||||
lda (ZPGlobalBuf),y
|
||||
* and #SYMG.F.SIZE
|
||||
|
||||
>PUSHA Byte Count
|
||||
tax
|
||||
beq .3
|
||||
|
||||
asl
|
||||
pha
|
||||
|
||||
phx
|
||||
|
||||
.2 iny
|
||||
lda (ZPGlobalBuf),y
|
||||
>PUSHA
|
||||
dex
|
||||
bne .2
|
||||
|
||||
plx
|
||||
|
||||
.3 ldy L.MSG.EQU0,x
|
||||
pla Byte Count
|
||||
asl
|
||||
tax
|
||||
|
||||
.3 >PUSHA
|
||||
|
||||
ldy L.MSG.EQU0,x
|
||||
lda L.MSG.EQU0+1,x
|
||||
>SYSCALL printf
|
||||
|
||||
ldy #SYMG.SIZE
|
||||
|
||||
.4 tya
|
||||
lda (ZPGlobalBuf)
|
||||
bit #SYMG.F.LOCALS
|
||||
beq .7
|
||||
|
||||
cmp (ZPGlobalBuf)
|
||||
beq .7 No Local Symbol
|
||||
ldy #SYMG
|
||||
|
||||
.4 lda (ZPGlobalBuf),y
|
||||
beq .7 End Local Symbol
|
||||
|
||||
iny
|
||||
lda (ZPGlobalBuf),y Get ID
|
||||
@ -162,16 +163,15 @@ SYM.Dump stz ZPPtr2
|
||||
>LDYA L.MSG.CRLF
|
||||
>SYSCALL printf
|
||||
jmp .1
|
||||
rts
|
||||
|
||||
.8 clc
|
||||
.9 rts
|
||||
*---------------------------------------
|
||||
SYM.NewOrGetGlobal
|
||||
>LDA.G ASM.PASS
|
||||
bne SYM.GetGlobal
|
||||
|
||||
SYM.NewGlobal >PUSHW ZPLinePtr Pass #1; try to add global...
|
||||
SYM.NewGlobal jsr SYM.StoreGlobal
|
||||
bcs .99
|
||||
|
||||
>PUSHW ZPLinePtr Pass #1; try to add global...
|
||||
>LDA.G SYM.hGlobalList
|
||||
>SYSCALL SListNewKey
|
||||
bcs .9 Already Defined
|
||||
@ -184,10 +184,19 @@ SYM.NewGlobal >PUSHW ZPLinePtr Pass #1; try to add global...
|
||||
|
||||
inc ZPLinePtr+1
|
||||
|
||||
.1 lda #$ff
|
||||
.1 jsr SYM.PC2Acc
|
||||
|
||||
jsr SYM.Acc2Global
|
||||
|
||||
lda #SYMG
|
||||
|
||||
>STA.G SYM.GlobalPtr
|
||||
|
||||
lda #$ff
|
||||
>STA.G SYM.bNewGlobal
|
||||
|
||||
jmp SYM.PC2Acc
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #ERR.SYMBOL.REDEF
|
||||
sec
|
||||
@ -206,8 +215,12 @@ SYM.GetGlobal >PUSHW ZPLinePtr Pass #2: should be already defined...
|
||||
|
||||
inc ZPLinePtr+1
|
||||
|
||||
.1
|
||||
clc
|
||||
.1 >PUSHWI 0 Start
|
||||
>PUSHWI $ffff End
|
||||
>PUSHWI ZPGlobalBuf
|
||||
>PUSHW SYM.GlobalID
|
||||
>LDA.G SYM.hGlobalList
|
||||
>SYSCALL SListGetData
|
||||
rts
|
||||
|
||||
.9 lda #ERR.UNDEF.SYMBOL
|
||||
@ -219,27 +232,62 @@ SYM.LookupGlobal
|
||||
>LDA.G SYM.hGlobalList
|
||||
>SYSCALL SListLookup
|
||||
bcs .9
|
||||
>STYA.G SYM.GlobalID
|
||||
|
||||
phy
|
||||
pha
|
||||
|
||||
txa
|
||||
adc ZPLinePtr
|
||||
sta ZPLinePtr
|
||||
bcc .8
|
||||
bcc .1
|
||||
|
||||
inc ZPLinePtr+1
|
||||
clc
|
||||
.8
|
||||
.9 rts
|
||||
|
||||
.1 >PUSHWI 0 Start
|
||||
>PUSHWI SYMG
|
||||
>PUSHW L.SRC.ACC.F
|
||||
pla
|
||||
ply
|
||||
>PUSHYA
|
||||
>LDA.G SYM.hGlobalList
|
||||
>SYSCALL SListGetData
|
||||
rts
|
||||
|
||||
.9 lda #ERR.UNDEF.SYMBOL
|
||||
sec
|
||||
rts
|
||||
*---------------------------------------
|
||||
SYM.StoreGlobal >LDA.G ASM.PASS
|
||||
bne .8
|
||||
|
||||
>PUSHWI 5
|
||||
>PUSHW L.SRC.ACC.SIZE
|
||||
>LDA.G SYM.StoreGlobal
|
||||
bpl .8
|
||||
|
||||
>LDA.G SYM.GlobalPtr
|
||||
tay
|
||||
lda #0
|
||||
cpy #SYMG
|
||||
beq .1
|
||||
|
||||
lda #SYMG.F.LOCALS
|
||||
tsb SRC.ACC.F
|
||||
|
||||
lda #0
|
||||
sta (ZPGlobalBuf),y
|
||||
iny
|
||||
bne .1
|
||||
inc
|
||||
|
||||
.1 >PUSHYA
|
||||
|
||||
.2 >PUSHW ZPGlobalBuf
|
||||
>PUSHW.G SYM.GlobalID
|
||||
>LDA.G SYM.hGlobalList
|
||||
>SYSCALL SListAddData
|
||||
bcs .9
|
||||
|
||||
lda #0
|
||||
>STA.G SYM.bNewGlobal
|
||||
|
||||
rts
|
||||
|
||||
@ -253,10 +301,20 @@ SYM.PC2Acc ldy #ASM.PC+3
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
lda #4
|
||||
lda #2
|
||||
sta SRC.ACC.SIZE
|
||||
rts
|
||||
*---------------------------------------
|
||||
SYM.Acc2Global ldy #0
|
||||
|
||||
.2 lda SRC.ACC.F,y
|
||||
sta (ZPGlobalBuf),y
|
||||
|
||||
iny
|
||||
cpy #SYMG
|
||||
bne .2
|
||||
rts
|
||||
*---------------------------------------
|
||||
SYM.Lookup2Acc ldy #SYMG.F+4
|
||||
ldx #4
|
||||
|
||||
@ -281,23 +339,18 @@ SYM.NewOrGetLocalA
|
||||
tax Save ID
|
||||
|
||||
>LDA.G SYM.bNewGlobal not in a global label
|
||||
bmi .1
|
||||
bpl .91
|
||||
|
||||
lda #ERR.INV.LABEL
|
||||
clc
|
||||
rts
|
||||
|
||||
.1 >LDA.G ASM.PASS
|
||||
bne SYM.LookupLocal.1 Pass #2: should be already defined...
|
||||
>LDA.G ASM.PASS
|
||||
bne SYM.GetLocalX
|
||||
|
||||
SYM.NewLocal jsr SYM.LookupLocal.1 Pass #1; try to add
|
||||
jsr SYM.GetLocalX Pass #1; try to add
|
||||
bcc .9 Already Defined
|
||||
|
||||
lda (ZPGlobalBuf)
|
||||
>LDA.G SYM.GlobalPtr
|
||||
tay
|
||||
clc
|
||||
adc #SYML.SIZE
|
||||
bcs .90
|
||||
inc
|
||||
beq .90
|
||||
|
||||
ldy #ASM.PC+4
|
||||
|
||||
@ -312,9 +365,8 @@ SYM.NewLocal jsr SYM.LookupLocal.1 Pass #1; try to add
|
||||
iny
|
||||
|
||||
txa Get Back ID
|
||||
|
||||
sta (ZPGlobalBuf),y
|
||||
|
||||
|
||||
ldx #4
|
||||
|
||||
.2 pla
|
||||
@ -324,55 +376,55 @@ SYM.NewLocal jsr SYM.LookupLocal.1 Pass #1; try to add
|
||||
bne .2
|
||||
|
||||
tya
|
||||
sta (ZPGlobalBuf)
|
||||
>STA.G SYM.GlobalPtr
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
|
||||
.91 lda #ERR.INV.LABEL
|
||||
sec
|
||||
rts
|
||||
|
||||
.90 lda #ERR.TOO.MANY.LOCAL
|
||||
* sec
|
||||
sec
|
||||
rts
|
||||
|
||||
.9 lda #ERR.SYMBOL.REDEF
|
||||
sec
|
||||
rts
|
||||
*---------------------------------------
|
||||
SYM.LookupLocal tax
|
||||
SYM.LookupLocal.1
|
||||
ldy #SYMG.SIZE
|
||||
SYM.GetLocalX >LDA.G SYM.GlobalPtr Pass #2: should be already defined...
|
||||
|
||||
beq .9
|
||||
|
||||
tya
|
||||
|
||||
.1 cmp (ZPGlobalBuf)
|
||||
beq .9 CS if =
|
||||
|
||||
txa
|
||||
iny
|
||||
cmp (ZPGlobalBuf),y
|
||||
beq .2
|
||||
|
||||
tya
|
||||
clc
|
||||
adc #SYML.SIZE-1
|
||||
tay
|
||||
bcc .1
|
||||
|
||||
.9 lda #ERR.UNDEF.SYMBOL
|
||||
* sec
|
||||
rts
|
||||
|
||||
.2 ldx #0
|
||||
|
||||
.3 iny
|
||||
|
||||
lda (ZPGlobalBuf),y
|
||||
sta SRC.ACC,x
|
||||
inx
|
||||
cpx #4
|
||||
.1 txa
|
||||
cmp (ZPGlobalBuf),y
|
||||
bne .3
|
||||
|
||||
ldx #4
|
||||
stx SRC.ACC.SIZE
|
||||
|
||||
.2 iny
|
||||
lda (ZPGlobalBuf),y
|
||||
sta SRC.ACC.SIZE,x
|
||||
dex
|
||||
bne .2
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.3 tya
|
||||
clc
|
||||
adc #SYML
|
||||
tay
|
||||
inc
|
||||
bne .1
|
||||
|
||||
.9 lda #ERR.UNDEF.SYMBOL
|
||||
sec
|
||||
rts
|
||||
*---------------------------------------
|
||||
* Private Symbol Record: (9 bytes)
|
||||
* 0 : Len (8)
|
||||
|
@ -12,43 +12,42 @@ AUTO 4,1
|
||||
.DUMMY
|
||||
.OR ZPBIN
|
||||
ZS.START
|
||||
ZPPtr1 .EQ ZPBIN
|
||||
ZPPtr2 .EQ ZPBIN+2
|
||||
ZPPtr1 .BS 2
|
||||
ZPPtr2 .BS 2
|
||||
|
||||
ZPLineBuf .EQ ZPBIN+4
|
||||
ZPLinePtr .EQ ZPBIN+6
|
||||
ZPNameBuf .EQ ZPBIN+8
|
||||
ZPGlobalBuf .EQ ZPBIN+10
|
||||
ZPLookupBuf .EQ ZPBIN+12
|
||||
ZPLineBuf .BS 2
|
||||
ZPLinePtr .BS 2
|
||||
ZPNameBuf .BS 2
|
||||
ZPGlobalBuf .BS 2
|
||||
|
||||
ZPMacroBuf .EQ ZPBIN+14
|
||||
ZPCtxBuf .EQ ZPBIN+16
|
||||
ZPLookupBuf .BS 2
|
||||
|
||||
ZPAMPtr .EQ ZPBIN+18
|
||||
ZPRPtr .EQ ZPBIN+20
|
||||
ZPOpsPtr .EQ ZPBIN+22
|
||||
ZPOpDefPtr .EQ ZPBIN+24
|
||||
ZPMacroBuf .BS 2
|
||||
ZPCtxBuf .BS 2
|
||||
|
||||
ZPTmpBuf .EQ ZPBIN+26
|
||||
ZPAMPtr .BS 2
|
||||
ZPRPtr .BS 2
|
||||
ZPOpsPtr .BS 2
|
||||
ZPOpDefPtr .BS 2
|
||||
|
||||
ZPTmpBuf .BS 2
|
||||
ZS.END .ED
|
||||
*---------------------------------------
|
||||
* Symbols
|
||||
*---------------------------------------
|
||||
SYM.F.PENDING .EQ %10000000
|
||||
SYM.F.RW .EQ %01000000
|
||||
*---------------------------------------
|
||||
SYMG.TYPE .EQ 0 1,2,3,4
|
||||
SYMG.TYPE.S .EQ $ff String
|
||||
SYMG.F .EQ 1
|
||||
SYMG.F .EQ 0
|
||||
SYMG.F.FWREF .EQ %10000000
|
||||
SYMG.F.RW .EQ %01000000
|
||||
SYMG.F.LOCALS .EQ %00100000
|
||||
SYMG.SIZE .EQ 1 1,2,3,4
|
||||
SYMG.V .EQ 2
|
||||
*
|
||||
SYMG.SIZE .EQ 6 DWORD
|
||||
SYMG .EQ 6 DWORD
|
||||
*---------------------------------------
|
||||
SYML.ID .EQ 0 1..255
|
||||
SYML.F .EQ 1
|
||||
SYML.V .EQ 2 DWORD
|
||||
SYML.V .EQ 1 DWORD
|
||||
*
|
||||
SYML.SIZE .EQ 6
|
||||
SYML .EQ 5
|
||||
*---------------------------------------
|
||||
MCTX.LEN .EQ 0
|
||||
MCTX.PTR .EQ 1
|
||||
@ -137,7 +136,7 @@ L.SRC.AM.StrBuf .DA SRC.AM.StrBuf
|
||||
L.ASM.6502 .DA ASM.6502
|
||||
L.ASM.T.FILENAME .DA ASM.T.FILENAME
|
||||
L.FIO.Stat .DA FIO.Stat
|
||||
L.SRC.ACC.SIZE .DA SRC.ACC.SIZE
|
||||
L.SRC.ACC.F .DA SRC.ACC.F
|
||||
L.T.DIRECTIVES .DA T.DIRECTIVES
|
||||
J.DIRECTIVES .DA DIR.AC
|
||||
.DA DIR.AS
|
||||
@ -476,6 +475,7 @@ ASM.T.FILENAME .BS 65
|
||||
|
||||
FIO.Stat .BS S.STAT
|
||||
|
||||
SRC.ACC.F .BS 1
|
||||
SRC.ACC.SIZE .BS 1
|
||||
SRC.ACC .BS 4
|
||||
|
||||
@ -538,15 +538,14 @@ ASM.PC.PH .BS 4
|
||||
ASM.PC.DU .BS 4
|
||||
|
||||
SYM.hGlobalList .BS 1
|
||||
SYM.hNameBuf .BS 1
|
||||
SYM.hGlobalBuf .BS 1
|
||||
SYM.GlobalID .BS 2
|
||||
SYM.bNewGlobal .BS 1
|
||||
SYM.GlobalID .BS 2
|
||||
SYM.hGlobalBuf .BS 1
|
||||
SYM.GlobalPtr .BS 1
|
||||
|
||||
SYM.hNameBuf .BS 1
|
||||
|
||||
SYM.hLookupBuf .BS 1
|
||||
SYM.hBuf .BS 1
|
||||
|
||||
SYM.LocalID .BS 2
|
||||
|
||||
MAC.hMacroList .BS 1
|
||||
MAC.hMacroBuf .BS 1
|
||||
|
Loading…
x
Reference in New Issue
Block a user