mirror of
https://github.com/A2osX/A2osX.git
synced 2025-04-04 18:32:56 +00:00
Kernel 0.94
This commit is contained in:
parent
6d0fdcc345
commit
a2cb686ead
Binary file not shown.
@ -73,6 +73,8 @@ DIR.AZ jsr DIR.AS
|
||||
DIR.BS jsr SRC.GetNextCharNB
|
||||
bcs .98
|
||||
|
||||
jsr EXP.ResetAcc
|
||||
|
||||
jsr EXP.Eval
|
||||
bcs .9
|
||||
|
||||
@ -98,8 +100,11 @@ DIR.BS jsr SRC.GetNextCharNB
|
||||
cmp #','
|
||||
bne .98
|
||||
|
||||
jsr EXP.ResetAcc
|
||||
|
||||
jsr EXP.Eval
|
||||
bcs .9
|
||||
|
||||
lda SRC.ACC+3
|
||||
ora SRC.ACC+2
|
||||
ora SRC.ACC+1
|
||||
@ -132,11 +137,14 @@ DIR.BS jsr SRC.GetNextCharNB
|
||||
DIR.DA jsr SRC.GetNextCharNB
|
||||
bcs .98
|
||||
|
||||
.1 jsr EXP.Eval
|
||||
.1 jsr EXP.ResetAcc
|
||||
|
||||
jsr EXP.Eval
|
||||
bcs .9
|
||||
|
||||
ldy #0
|
||||
|
||||
ldx SRC.ACC.SIZE
|
||||
|
||||
.2 lda SRC.ACC,y
|
||||
jsr OUT.EmitByte
|
||||
bcs .9
|
||||
@ -172,6 +180,8 @@ DIR.DO >LDA.G ASM.DO.StackPtr
|
||||
jsr SRC.GetNextCharNB
|
||||
bcs .99
|
||||
|
||||
jsr EXP.ResetAcc
|
||||
|
||||
jsr EXP.Eval
|
||||
bcs .99
|
||||
|
||||
@ -267,32 +277,31 @@ DIR.SE sec
|
||||
DIR.EQ clc
|
||||
|
||||
>LDA.G SYM.BufPtr
|
||||
beq .99
|
||||
beq .9
|
||||
|
||||
eor #SYMG
|
||||
beq .1
|
||||
|
||||
bcs .99 .SE not allowed in local/private
|
||||
bcs .9 .SE not allowed in local/private
|
||||
bcc .10 in local, skip F update
|
||||
|
||||
.1 ror A = 0 : SYMG.F.RW
|
||||
|
||||
ora #SYMG.F.EQU
|
||||
tsb SRC.ACC.F
|
||||
sta SRC.ACC.F
|
||||
|
||||
.10 jsr SRC.GetNextCharNB
|
||||
bcs .99
|
||||
bcs .9
|
||||
|
||||
lda #$ff
|
||||
>STA.G OUT.bEquate
|
||||
|
||||
jsr EXP.ResetAcc
|
||||
|
||||
jsr EXP.Eval
|
||||
bcs .9
|
||||
|
||||
>LDA.G ASM.PASS
|
||||
bne .2
|
||||
*---------------------------------------
|
||||
>LDA.G SYM.BufPtr PASS#1
|
||||
>LDA.G SYM.BufPtr
|
||||
|
||||
cmp #SYMG
|
||||
beq .12
|
||||
@ -310,30 +319,13 @@ DIR.EQ clc
|
||||
rts
|
||||
|
||||
.12 jsr SYM.Acc2Global global, update and close
|
||||
>LDA.G ASM.PASS
|
||||
bne .2
|
||||
|
||||
jmp SYM.StoreGlobal
|
||||
*---------------------------------------
|
||||
.2 >LDA.G SYM.BufPtr PASS#2
|
||||
|
||||
cmp #SYMG
|
||||
beq .22
|
||||
|
||||
tay
|
||||
ldx #3 we are in local/private
|
||||
|
||||
.21 lda SRC.ACC,x update value
|
||||
dey
|
||||
sta (ZPSymbolBuf),y
|
||||
dex
|
||||
bpl .21
|
||||
.2 jmp SYM.UpdateGlobal
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.22 jsr SYM.Acc2Global global, update and close
|
||||
jmp SYM.UpdateGlobal
|
||||
|
||||
.99 lda #E.SYNTAX.ERROR
|
||||
sec
|
||||
.9 rts
|
||||
*---------------------------------------
|
||||
DIR.FI >LDA.G ASM.DO.StackPtr
|
||||
@ -525,6 +517,8 @@ DIR.OP.SYNERR lda #E.SYNTAX.ERROR
|
||||
DIR.OR jsr SRC.GetNextCharNB
|
||||
bcs DIR.OP.SYNERR
|
||||
|
||||
jsr EXP.ResetAcc
|
||||
|
||||
jsr EXP.Eval
|
||||
bcs .9
|
||||
|
||||
|
@ -23,8 +23,6 @@ EXP.Eval >STZ.G EXP.Modifier
|
||||
>STZ.G EXP.Prefix
|
||||
>STZ.G EXP.Operator
|
||||
|
||||
stz SRC.ACC.SIZE
|
||||
|
||||
jsr SRC.GetChar
|
||||
bcs EXP.Eval.Missing
|
||||
|
||||
@ -39,9 +37,7 @@ EXP.Eval >STZ.G EXP.Modifier
|
||||
|
||||
EXP.Eval.Next0 jsr SRC.GetNextChar
|
||||
|
||||
EXP.Eval.Next stz SRC.ACC.F
|
||||
|
||||
stz SRC.ACC
|
||||
EXP.Eval.Next stz SRC.ACC
|
||||
stz SRC.ACC+1
|
||||
stz SRC.ACC+2
|
||||
stz SRC.ACC+3
|
||||
@ -92,14 +88,14 @@ EXP.Eval.Next stz SRC.ACC.F
|
||||
|
||||
jsr SRC.GetHex
|
||||
bcs EXP.EvalExitRTS
|
||||
bra EXP.EvalOperator
|
||||
jmp EXP.EvalOperator
|
||||
|
||||
.2 cmp #'%' binary?
|
||||
bne .3
|
||||
|
||||
jsr SRC.GetBinary
|
||||
bcs EXP.EvalExitRTS
|
||||
bra EXP.EvalOperator
|
||||
jmp EXP.EvalOperator
|
||||
|
||||
.3 cmp #'&' octal?
|
||||
bne .4
|
||||
@ -133,10 +129,12 @@ EXP.Eval.Next stz SRC.ACC.F
|
||||
|
||||
jsr SRC.GetNextChar
|
||||
bcs EXP.EvalExitSYN
|
||||
|
||||
ora #$80
|
||||
jsr EXP.SetAccA
|
||||
jsr SRC.GetNextChar
|
||||
bcs EXP.EvalOperator
|
||||
|
||||
cmp #'"'
|
||||
beq .45
|
||||
|
||||
@ -152,17 +150,21 @@ EXP.Eval.Next stz SRC.ACC.F
|
||||
|
||||
jsr SYM.LookupGlobal
|
||||
bcc EXP.EvalOperator
|
||||
rts
|
||||
EXP.EvalExitRTS rts
|
||||
|
||||
EXP.EvalExitOK >LDA.G EXP.Modifier
|
||||
beq .8
|
||||
beq .1
|
||||
|
||||
asl
|
||||
tax
|
||||
|
||||
lda #SYMG.F.FWREF
|
||||
trb SRC.ACC.F
|
||||
|
||||
jmp (J.EXP.MOD-2,x)
|
||||
|
||||
.8 clc
|
||||
EXP.EvalExitRTS rts
|
||||
.1 clc
|
||||
rts
|
||||
|
||||
EXP.EvalExitSYN lda #E.SYNTAX.ERROR
|
||||
sec
|
||||
@ -173,7 +175,7 @@ EXP.EvalExitUND lda #E.UNDEF.SYMBOL
|
||||
rts
|
||||
*---------------------------------------
|
||||
EXP.EvalOperator
|
||||
jsr EXP.SetACCSize
|
||||
* jsr EXP.SetACCSize
|
||||
|
||||
>LDA.G EXP.Operator
|
||||
beq .7
|
||||
@ -228,18 +230,17 @@ EXP.GetLocal jsr SRC.GetNextChar
|
||||
|
||||
lda #SYMG.F.FWREF
|
||||
tsb SRC.ACC.F
|
||||
|
||||
lda #2
|
||||
sta SYMG.SIZE
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #E.SYNTAX.ERROR
|
||||
sec
|
||||
rts
|
||||
|
||||
.8 lda #SYMG.F.FWREF
|
||||
trb SRC.ACC.F
|
||||
|
||||
clc
|
||||
rts
|
||||
.8 rts
|
||||
*---------------------------------------
|
||||
EXP.MOD.8.3 lda SRC.ACC+2
|
||||
bra EXP.MOD.8
|
||||
@ -317,11 +318,7 @@ EXP.OP.EQU ldx #0 ARG-ACC->ACC
|
||||
|
||||
.2 lda #0
|
||||
rol
|
||||
sta SRC.ACC
|
||||
|
||||
lda #1
|
||||
sta SRC.ACC.SIZE
|
||||
.9 rts
|
||||
jmp EXP.SetAccA
|
||||
*---------------------------------------
|
||||
EXP.OP.GRT jsr EXP.OP.SUB
|
||||
|
||||
@ -382,6 +379,17 @@ EXP.OP.DIV >PUSHL SRC.ARG
|
||||
clc
|
||||
rts
|
||||
*---------------------------------------
|
||||
EXP.ResetAcc stz SRC.ACC.F
|
||||
|
||||
lda #2
|
||||
sta SRC.ACC.SIZE
|
||||
|
||||
stz SRC.ACC
|
||||
stz SRC.ACC+1
|
||||
stz SRC.ACC+2
|
||||
stz SRC.ACC+3
|
||||
rts
|
||||
*---------------------------------------
|
||||
EXP.SetAccA sta SRC.ACC
|
||||
stz SRC.ACC+1
|
||||
stz SRC.ACC+2
|
||||
@ -394,17 +402,27 @@ EXP.SetAccA sta SRC.ACC
|
||||
EXP.SetACCSize lda SRC.ACC.SIZE
|
||||
bne .8
|
||||
|
||||
ldx #4
|
||||
>LDA.G ASM.PASS
|
||||
bne .1
|
||||
|
||||
lda SRC.ACC.F
|
||||
and #SYMG.F.FWREF
|
||||
beq .1
|
||||
|
||||
ldx #2
|
||||
bra .7
|
||||
|
||||
.1 ldx #4
|
||||
|
||||
.1 lda SRC.ACC-1,x
|
||||
bne .2
|
||||
.2 lda SRC.ACC-1,x
|
||||
bne .7
|
||||
|
||||
dex
|
||||
bne .1
|
||||
bne .2
|
||||
|
||||
inx
|
||||
|
||||
.2 stx SRC.ACC.SIZE
|
||||
.7 stx SRC.ACC.SIZE
|
||||
.8 rts
|
||||
*---------------------------------------
|
||||
MAN
|
||||
|
@ -231,7 +231,9 @@ SRC.ParseLine.AM
|
||||
|
||||
bra .74
|
||||
|
||||
.6 jsr EXP.Eval
|
||||
.6 jsr EXP.ResetAcc
|
||||
|
||||
jsr EXP.Eval
|
||||
bcs .99
|
||||
|
||||
>LDA.G EXP.Prefix
|
||||
@ -239,13 +241,10 @@ SRC.ParseLine.AM
|
||||
|
||||
jsr SRC.AddToBuf
|
||||
|
||||
.75 ldx #2 FWREF ...assume 2 bytes...
|
||||
lda SRC.ACC.F
|
||||
and #SYMG.F.FWREF
|
||||
bne .72
|
||||
|
||||
ldx SRC.ACC.SIZE
|
||||
beq * SHOULD NEVER APPEND
|
||||
.75 ldx SRC.ACC.SIZE
|
||||
beq * SHOULD NEVER APPEND
|
||||
|
||||
jsr SRC.GetACCSize
|
||||
|
||||
.72 lda #'a'
|
||||
|
||||
@ -449,7 +448,7 @@ SRC.ParseLine.Emit
|
||||
.8 clc
|
||||
.9 rts
|
||||
|
||||
.90 lda #E.INV.T.FILE
|
||||
.90 lda #E.INV.CPU.FILE
|
||||
sec
|
||||
rts
|
||||
|
||||
@ -1018,6 +1017,26 @@ SRC.ACC10 lda SRC.ACC ACC*2-> ACC & ACCTMP
|
||||
sta SRC.ACC+3 CS if overflow
|
||||
.9 rts
|
||||
*---------------------------------------
|
||||
SRC.GetACCSize lda SRC.ACC.F
|
||||
|
||||
and #SYMG.F.FWREF
|
||||
beq .1
|
||||
|
||||
ldx #2
|
||||
rts
|
||||
|
||||
.1 ldx SRC.ACC.SIZE
|
||||
|
||||
.2 lda SRC.ACC-1,x
|
||||
bne .8
|
||||
|
||||
dex
|
||||
bne .2
|
||||
|
||||
inx
|
||||
|
||||
.8 rts
|
||||
*---------------------------------------
|
||||
SRC.DoCheck sec
|
||||
>LDA.G ASM.DO.StackPtr
|
||||
beq .8
|
||||
|
@ -80,12 +80,14 @@ SYM.NewGlobal >LDA.G ASM.PASS
|
||||
|
||||
.9 lda #E.SYMBOL.REDEF
|
||||
sec
|
||||
.99 rts
|
||||
.99
|
||||
SYM.NewGlobal.RTS
|
||||
rts
|
||||
*---------------------------------------
|
||||
SYM.NewGlobal2 >PUSHB.G SYM.hList Pass #2: should be already defined...
|
||||
>PUSHW ZPLinePtr
|
||||
>SYSCALL SListLookup
|
||||
bcs .9
|
||||
bcs SYM.NewGlobal.RTS
|
||||
|
||||
>STYA.G SYM.ID
|
||||
|
||||
@ -104,13 +106,31 @@ SYM.NewGlobal2 >PUSHB.G SYM.hList Pass #2: should be already defined...
|
||||
>SYSCALL SListGetData
|
||||
bcs .99
|
||||
|
||||
lda #SYMG
|
||||
* lda (ZPSymbolBuf)
|
||||
* and #SYMG.F.EQU
|
||||
* bne .8
|
||||
|
||||
* >LDA.G ASM.PC
|
||||
* ldy #SYMG.V
|
||||
* cmp (ZPSymbolBuf),y
|
||||
* bne .7
|
||||
|
||||
* >LDA.G ASM.PC+1
|
||||
* ldy #SYMG.V+1
|
||||
* cmp (ZPSymbolBuf),y
|
||||
* beq .8
|
||||
|
||||
*.7 lda #E.OUT.OF.SYNC
|
||||
* sec
|
||||
* rts
|
||||
|
||||
.8 lda #SYMG
|
||||
>STA.G SYM.BufPtr
|
||||
|
||||
>STZ.G MAC.CtxID
|
||||
>STA.G MAC.CtxNextID
|
||||
|
||||
* clc
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #E.UNDEF.SYMBOL
|
||||
@ -147,9 +167,6 @@ SYM.LookupGlobal
|
||||
dey
|
||||
bpl .2
|
||||
|
||||
lda #SYMG.F.FWREF
|
||||
trb SRC.ACC.F
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
@ -166,11 +183,9 @@ SYM.LookupGlobal
|
||||
|
||||
lda #SYMG.F.FWREF
|
||||
tsb SRC.ACC.F
|
||||
|
||||
lda #$ff
|
||||
|
||||
sta SRC.ACC
|
||||
sta SRC.ACC+1 setup ACC=$FFFF to reserve 2 bytes in AM
|
||||
|
||||
lda #2
|
||||
sta SYMG.SIZE
|
||||
|
||||
.5 jsr SRC.GetNextChar
|
||||
bcs .8
|
||||
@ -276,8 +291,9 @@ SYM.NewLocalA tax Save Local ID
|
||||
bcc .9 Already Defined
|
||||
|
||||
>LDA.G SYM.BufPtr
|
||||
cmp #252 6*42
|
||||
beq .90
|
||||
* sec
|
||||
adc #SYML
|
||||
bcs .90
|
||||
|
||||
ldy #ASM.PC+4
|
||||
|
||||
|
@ -87,9 +87,10 @@ E.MACRO.TOO.BIG .EQ $B4
|
||||
E.MACRO.INV .EQ $B5
|
||||
E.MACRO.TOO.MANY .EQ $B6
|
||||
*
|
||||
E.OUT.OF.SYNC .EQ $B8
|
||||
E.INV.SYM .EQ $B9
|
||||
E.INV.ARGS .EQ $BA
|
||||
E.INV.T.FILE .EQ $BC
|
||||
E.INV.CPU.FILE .EQ $BC
|
||||
E.SRC.INV.TYPE .EQ $BD
|
||||
E.SRC.TOO.MANY.IN .EQ $BE
|
||||
E.SRC.UNEXP.EOF .EQ $BF
|
||||
|
@ -341,7 +341,7 @@ CS.RUN.PRINTMEMX
|
||||
lda #'-'
|
||||
bcc .30
|
||||
|
||||
lda MSG.FLAGS,x
|
||||
lda MSG.FLAGSX,x
|
||||
|
||||
.30 sta (pData),y
|
||||
pla
|
||||
@ -377,11 +377,11 @@ CS.RUN.PRINTMEMX
|
||||
ldy #S.MEM.F
|
||||
jsr ZPReadAux Get flags
|
||||
bpl .12
|
||||
|
||||
|
||||
txa
|
||||
jsr CS.RUN.CHECKPS
|
||||
bcc .12
|
||||
|
||||
|
||||
>PUSHW L.MSG1.INV
|
||||
>PUSHBI 0
|
||||
>SYSCALL PrintF
|
||||
@ -396,7 +396,7 @@ CS.RUN.CHECKPS ldx #0
|
||||
beq .8
|
||||
|
||||
inx
|
||||
cpx K.PS.MAX
|
||||
cpx #K.PS.MAX
|
||||
bne .1
|
||||
|
||||
rts CS
|
||||
@ -430,6 +430,7 @@ MSG3 .AS "High Memory: $%H\r\n"
|
||||
.AS "Low Memory: $%H\r\n"
|
||||
.AZ "\r\nFree Memory: %D Bytes.\r\n\r\n"
|
||||
MSG.FLAGS .AS "UZXAfcds"
|
||||
MSG.FLAGSX .AS "UZXAidep"
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
.OR 0
|
||||
|
@ -366,8 +366,9 @@ K.FreeMem tay
|
||||
bne .8 no, must be a code segment loaded several times
|
||||
|
||||
lda (ZPMemMgrSPtr)
|
||||
and #S.MEM.F.CODE CS: Any BINPATH to discard ?
|
||||
and #$7f keep flags for memdump
|
||||
sta (ZPMemMgrSPtr) Mark as FREE
|
||||
and #S.MEM.F.CODE CS: Any BINPATH to discard ?
|
||||
beq .1
|
||||
|
||||
ldy #S.MEM.BIN
|
||||
|
@ -118,8 +118,6 @@ SLISTX.SListAddData
|
||||
jsr SLIST.Select
|
||||
|
||||
jsr SLIST.SkipKey
|
||||
* >LDYA SLIST.KeyID Save DataLen location
|
||||
* >STYA SLIST.KeyID.Save to update later
|
||||
|
||||
ldy SLIST.BytePtr
|
||||
lda (ZPSListDBlkPtr),y
|
||||
@ -149,13 +147,21 @@ SLISTX.SListAddData
|
||||
eor #$ff
|
||||
sta ZPSListDataLen+1
|
||||
|
||||
sec
|
||||
|
||||
.1 inc ZPSListDataLen
|
||||
bne .2
|
||||
inc ZPSListDataLen+1
|
||||
beq .8
|
||||
|
||||
.2 jsr SHARED.FORPNT.GetNext
|
||||
jsr SLIST.AddDataByte
|
||||
bcc .3
|
||||
|
||||
jsr SLIST.SetBlockByte override ending 0, already allocated
|
||||
clc
|
||||
bra .1
|
||||
|
||||
.3 jsr SLIST.AddDataByte
|
||||
bcc .1
|
||||
rts
|
||||
|
||||
@ -180,10 +186,13 @@ SLISTX.SListSetData
|
||||
txa
|
||||
eor #$ff
|
||||
sta SLIST.nDataCnt+1
|
||||
|
||||
.1 inc SLIST.nDataCnt
|
||||
bne .2
|
||||
|
||||
inc SLIST.nDataCnt+1
|
||||
beq .8
|
||||
|
||||
.2 jsr SHARED.FORPNT.GetNext
|
||||
jsr SLIST.SetBlockByte
|
||||
bra .1
|
||||
@ -234,8 +243,7 @@ SLISTX.SListNewKey
|
||||
>STYA SLIST.KeyID.Save End of list
|
||||
|
||||
lda SLIST.KeyLen
|
||||
jsr SLIST.AddDataByte
|
||||
bcs .9
|
||||
jsr SLIST.SetBlockByte override ending 0, already allocated
|
||||
|
||||
ldy #0
|
||||
|
||||
@ -247,15 +255,15 @@ SLISTX.SListNewKey
|
||||
cpy SLIST.KeyLen
|
||||
bne .1
|
||||
|
||||
lda #0 Data Len = 0
|
||||
lda #0 Data Len lo = 0
|
||||
jsr SLIST.AddDataByte
|
||||
bcs .9
|
||||
|
||||
lda #0
|
||||
lda #0 Data Len hi = 0
|
||||
jsr SLIST.AddDataByte
|
||||
bcs .9
|
||||
|
||||
lda #0 Next Len = 0
|
||||
lda #0 Ending Len = 0
|
||||
jsr SLIST.AddDataByte
|
||||
bcs .9
|
||||
|
||||
@ -460,10 +468,6 @@ SLIST.AddDataByte
|
||||
txa
|
||||
inc SLIST.BlockPtr
|
||||
ldy SLIST.BlockPtr
|
||||
cpy #$4A
|
||||
bcc .55
|
||||
>DEBUG
|
||||
.55
|
||||
sta (ZPSListIBlkPtr),y
|
||||
|
||||
* stz SLIST.BytePtr
|
||||
|
Loading…
x
Reference in New Issue
Block a user