mirror of
https://github.com/A2osX/A2osX.git
synced 2025-01-27 09:34:38 +00:00
Kernel 0.94
This commit is contained in:
parent
5d6b5670f2
commit
bc6eec2c22
Binary file not shown.
@ -20,6 +20,8 @@ CSH.DataPtr .BS 2
|
||||
|
||||
CSH.hStack .BS 1
|
||||
CSH.StackPtr .BS 1
|
||||
|
||||
CSH.VarDef .BS 6
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/BIN/CSH.D
|
||||
|
@ -444,7 +444,7 @@ CSH.TYPE stx ZPVarType
|
||||
*--------------------------------------
|
||||
CSH.fCall ldx ZPPtr1
|
||||
phx
|
||||
ldx ZPPtr1+1
|
||||
ldx ZPPtr1+1 local : fdef
|
||||
phx
|
||||
ldx ZPPtr2 local : type
|
||||
phx
|
||||
@ -571,7 +571,7 @@ CSH.fCall ldx ZPPtr1
|
||||
*--------------------------------------
|
||||
CSH.ExpEval ldx ZPPtr1
|
||||
phx
|
||||
ldx ZPPtr1+1
|
||||
ldx ZPPtr1+1 local : used by lookup
|
||||
phx
|
||||
ldx ZPPtr2 local : VarType
|
||||
phx
|
||||
@ -615,7 +615,7 @@ CSH.ExpEval ldx ZPPtr1
|
||||
|
||||
jsr CSH.GetDefine
|
||||
bcc .10
|
||||
|
||||
|
||||
jsr CSH.GetVar
|
||||
bcs .1
|
||||
|
||||
@ -645,7 +645,7 @@ CSH.ExpEval ldx ZPPtr1
|
||||
|
||||
.22 jsr CSH.GetNumOnStack
|
||||
.29 bcs .99
|
||||
|
||||
*--------------------------------------
|
||||
.11 jsr CSH.GetCharNB
|
||||
bcs .90
|
||||
|
||||
@ -662,7 +662,7 @@ CSH.ExpEval ldx ZPPtr1
|
||||
>LDYA L.CSH.BOPS
|
||||
jsr CSH.LookupOP
|
||||
bcs .90
|
||||
lda ZPPtr2+1 previous OP...
|
||||
lda ZPPtr2+1 X=OP lookup,get previous OP in A
|
||||
bpl .5 go check precedence
|
||||
stx ZPPtr2+1
|
||||
|
||||
@ -676,12 +676,13 @@ CSH.ExpEval ldx ZPPtr1
|
||||
bcs .99
|
||||
|
||||
jmp .11
|
||||
*--------------------------------------
|
||||
.5 cpx ZPPtr2+1
|
||||
bcs .6
|
||||
* new OP has precedence, stack ACC
|
||||
* new OP has precedence, on stack : V1,V2
|
||||
|
||||
jmp .10
|
||||
* Old OP has precedence, compute ACC=ARG <BOP> ACC
|
||||
* Old OP has precedence, compute STK=V1 <BOP> V2
|
||||
.6 lda ZPPtr2 Var Type
|
||||
ldx ZPPtr2+1 BOP
|
||||
jsr CSH.BOP.EXEC
|
||||
@ -885,7 +886,7 @@ CSH.GetNumOnStack
|
||||
rts
|
||||
*--------------------------------------
|
||||
* Input : ZPFileBufPtr
|
||||
* Output : Y,A = ZPVarID
|
||||
* Output : Y,A = VarID
|
||||
*--------------------------------------
|
||||
CSH.AddDefine >LDA.G CSH.hDefines
|
||||
jsr CSH.NewKey
|
||||
@ -898,7 +899,6 @@ CSH.AddVar >LDA.G CSH.hSymbols
|
||||
bcs .9
|
||||
|
||||
>STYA ZPVarID
|
||||
|
||||
ldx ZPVarType
|
||||
jsr CSH.SizeOf
|
||||
sta ZPVarSizeOf
|
||||
@ -926,10 +926,10 @@ CSH.AddVar >LDA.G CSH.hSymbols
|
||||
>PUSHWI ZPVarDef
|
||||
>PUSHWI 6
|
||||
>SYSCALL SListAddData
|
||||
bcs .9
|
||||
* bcs .9
|
||||
|
||||
lda #'*'
|
||||
jsr DEBUG.KPL
|
||||
* lda #'*'
|
||||
* jsr DEBUG.VAR
|
||||
|
||||
.9 rts
|
||||
|
||||
@ -942,9 +942,9 @@ CSH.TMISMATCH lda #CSH.E.TMISMATCH
|
||||
CSH.NewKey >PUSHA
|
||||
>PUSHW ZPFileBufPtr
|
||||
>SYSCALL SListNewKey
|
||||
>DEBUG
|
||||
bcs .9
|
||||
|
||||
pha
|
||||
txa
|
||||
* clc
|
||||
adc ZPFileBufPtr
|
||||
@ -954,6 +954,7 @@ CSH.NewKey >PUSHA
|
||||
inc ZPFileBufPtr+1
|
||||
|
||||
.1 clc
|
||||
pla
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
* X=Type
|
||||
@ -971,9 +972,8 @@ CSH.SetVarValueFromStack
|
||||
cpy ZPVarSizeOf
|
||||
bne .1
|
||||
|
||||
|
||||
lda #'>'
|
||||
jsr DEBUG.KPL
|
||||
jsr DEBUG.VAR
|
||||
clc
|
||||
rts
|
||||
|
||||
@ -1036,7 +1036,6 @@ CSH.Get >PUSHW ZPFileBufPtr
|
||||
* Output : Stack, X = Var Type
|
||||
*--------------------------------------
|
||||
CSH.GetVarValueOnStack
|
||||
>DEBUG
|
||||
phx
|
||||
phy
|
||||
pha
|
||||
@ -1047,7 +1046,7 @@ CSH.GetVarValueOnStack
|
||||
pla
|
||||
>PUSHA KeyID
|
||||
|
||||
>PUSHWI ZPVarDef
|
||||
>PUSHEA.G CSH.VarDef
|
||||
>PUSHWI 6 6 bytes
|
||||
>PUSHWI 0 From Start
|
||||
>SYSCALL SListGetData
|
||||
@ -1058,32 +1057,39 @@ CSH.GetVarValueOnStack
|
||||
txa
|
||||
beq .1 any type
|
||||
|
||||
cmp ZPVarType
|
||||
>CMP.G CSH.VarDef Type
|
||||
beq .2
|
||||
|
||||
and #CSH.Q.PPPOINTER
|
||||
beq .99 not pointer....mismatch
|
||||
|
||||
eor ZPVarType
|
||||
>EOR.G CSH.VarDef
|
||||
and #CSH.Q.PPPOINTER
|
||||
bne .99 compare only pointer depth
|
||||
|
||||
.1 ldx ZPVarType
|
||||
.1 >LDA.G CSH.VarDef
|
||||
beq *
|
||||
|
||||
.2 jsr CSH.SIZEOF
|
||||
tay
|
||||
.2 tax
|
||||
jsr CSH.SIZEOF
|
||||
pha
|
||||
|
||||
>LDA.G CSH.VarDef+4
|
||||
sta ZPPtr3
|
||||
iny
|
||||
lda (pData),y
|
||||
sta ZPPtr3+1
|
||||
|
||||
ply
|
||||
|
||||
.3 dey
|
||||
lda (ZPVarDataPtr),y
|
||||
lda (ZPPtr3),y
|
||||
>PUSHA
|
||||
tya
|
||||
bne .3
|
||||
|
||||
lda #'<'
|
||||
jsr DEBUG.KPL
|
||||
|
||||
ldx ZPVarType
|
||||
>LDA.G CSH.VarDef
|
||||
tax
|
||||
clc X = Var Type
|
||||
.9 rts
|
||||
|
||||
@ -1349,10 +1355,12 @@ CSH.SIZEOF txa
|
||||
.2 lda #2
|
||||
rts
|
||||
*--------------------------------------
|
||||
DEBUG.KPL >SYSCALL putchar
|
||||
DEBUG.VAR >SYSCALL putchar
|
||||
|
||||
>PUSHW L.MSG.DBGKPL
|
||||
>PUSHW L.MSG.DBGVAR
|
||||
>PUSHW ZPVarID
|
||||
>PUSHW ZPVarType
|
||||
>PUSHW ZPVarSizeOf
|
||||
>PUSHW ZPVarDataPtr
|
||||
|
||||
ldy #3
|
||||
@ -1361,7 +1369,7 @@ DEBUG.KPL >SYSCALL putchar
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
>PUSHBI 8
|
||||
>PUSHBI 12
|
||||
>SYSCALL printf
|
||||
* >DEBUG
|
||||
rts
|
||||
|
@ -34,10 +34,12 @@ ZPVarDataPtr .BS 2
|
||||
|
||||
ZPhMacro .BS 1
|
||||
|
||||
ArgIndex .BS 1
|
||||
|
||||
ZPPtr1 .BS 2
|
||||
ZPPtr2 .BS 2
|
||||
|
||||
|
||||
ArgIndex .BS 1
|
||||
|
||||
ZPPtr3 .BS 2
|
||||
|
||||
ZS.END .ED
|
||||
@ -67,7 +69,7 @@ L.MSG.USAGE .DA MSG.USAGE
|
||||
L.MSG.ECHOCRLF .DA MSG.ECHOCRLF
|
||||
L.MSG.DEBUG .DA MSG.DEBUG
|
||||
L.MSG.ERR .DA MSG.ERR
|
||||
L.MSG.DBGKPL .DA MSG.DBGKPL
|
||||
L.MSG.DBGVAR .DA MSG.DBGVAR
|
||||
.INB USR/SRC/BIN/CSH.R
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
@ -303,7 +305,7 @@ MSG.USAGE .AS "Usage : CSH <option> file\r\n"
|
||||
MSG.ECHOCRLF .AZ "\r\n"
|
||||
MSG.DEBUG .AZ "pStack=%H"
|
||||
MSG.ERR .AZ "^\r\nLine #%D:"
|
||||
MSG.DBGKPL .AZ "K=%H, P=%H, V=%L\r\n"
|
||||
MSG.DBGVAR .AZ "K=%H, T=%H, S=%H, P=%H, V=%L\r\n"
|
||||
*--------------------------------------
|
||||
OptionList .AS "DdTt"
|
||||
OptionVars .DA #bDebug,#bDebug,#bTrace,#bTrace
|
||||
|
@ -13,7 +13,7 @@ NEW
|
||||
* Y,A = Byte Count
|
||||
* X = hMem (if DataPtr = 0)
|
||||
*\--------------------------------------
|
||||
K.SListGetData >PULLW ZPMemMgrSize
|
||||
K.SListGetData >PULLW ZPSListDataOfs
|
||||
*/--------------------------------------
|
||||
* # SListAddData
|
||||
* ## ASM
|
||||
@ -76,7 +76,7 @@ K.SListLookup >PULLW TXTPTR
|
||||
* `>SYSCALL SListFree`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
K.SListFree >PULLB SLIST.hList
|
||||
K.SListFree >PULLA
|
||||
*/--------------------------------------
|
||||
* # SListNew
|
||||
* ## ASM
|
||||
@ -86,8 +86,6 @@ K.SListFree >PULLB SLIST.hList
|
||||
*\--------------------------------------
|
||||
K.SListNew jmp K.SYSCALL.JMPX
|
||||
*--------------------------------------
|
||||
SLIST.hList .BS 1
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.SLIST
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
|
@ -1,7 +1,7 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
*--------------------------------------
|
||||
ZPSListKeyID .EQ ZPMEMMGR+8
|
||||
ZPSListDataOfs .EQ ZPMEMMGR+8
|
||||
ZPSListDataLen .EQ ZPMEMMGR+10
|
||||
ZPSListIBlkPtr .EQ ZPMEMMGR+12
|
||||
ZPSListDBlkPtr .EQ ZPMEMMGR+14
|
||||
@ -24,19 +24,19 @@ SLISTX.SListGetData
|
||||
|
||||
lda SLIST.DataLen
|
||||
sec
|
||||
sbc ZPMemMgrSize Offset
|
||||
sbc ZPSListDataOfs Offset
|
||||
eor #$ff
|
||||
sta SLIST.nDataCnt
|
||||
|
||||
lda SLIST.DataLen+1
|
||||
sbc ZPMemMgrSize+1
|
||||
sbc ZPSListDataOfs+1
|
||||
eor #$ff
|
||||
sta SLIST.nDataCnt+1 Data remaining
|
||||
|
||||
bcc .99 Offset Beyond DataLen
|
||||
|
||||
.10 lda ZPMemMgrSize Skip to Offset
|
||||
ldx ZPMemMgrSize+1
|
||||
.10 lda ZPSListDataOfs Skip to Offset
|
||||
ldx ZPSListDataOfs+1
|
||||
jsr SLIST.SkipDataAX
|
||||
|
||||
lda FORPNT
|
||||
@ -255,7 +255,7 @@ SLISTX.SListNewKey
|
||||
jsr SLIST.AddBlockByte
|
||||
bcs .9
|
||||
|
||||
>LDYA SLIST.KeyID
|
||||
>LDYA SLIST.KeyID.Save
|
||||
ldx SLIST.KeyLen
|
||||
* clc
|
||||
rts
|
||||
@ -272,7 +272,7 @@ SLISTX.SListLookup
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
SLISTX.SListFree
|
||||
sta SLIST.hList
|
||||
sta .8+1
|
||||
|
||||
jsr K.GetMemPtr
|
||||
>STYA .1+1
|
||||
@ -286,7 +286,7 @@ SLISTX.SListFree
|
||||
inx
|
||||
bra .1
|
||||
|
||||
.8 lda SLIST.hList
|
||||
.8 lda #$ff SELF MODIFIED
|
||||
jmp K.FreeMem
|
||||
*--------------------------------------
|
||||
SLISTX.SListNew >LDYAI 128 32k Max before out of memory!!!
|
||||
@ -312,8 +312,7 @@ SLISTX.SListNew >LDYAI 128 32k Max before out of memory!!!
|
||||
*--------------------------------------
|
||||
* PRIVATE
|
||||
*--------------------------------------
|
||||
SLIST.Search lda SLIST.hList
|
||||
jsr K.GetMemPtr
|
||||
SLIST.Search jsr K.GetMemPtr
|
||||
>STYA ZPSListIBlkPtr
|
||||
|
||||
lda (ZPSListIBlkPtr)
|
||||
@ -334,15 +333,15 @@ SLIST.Search lda SLIST.hList
|
||||
stz SLIST.BytePtr
|
||||
stz SLIST.BlockPtr
|
||||
|
||||
.2 ldy SLIST.BytePtr
|
||||
.2 >LDYA SLIST.KeyID
|
||||
>STYA SLIST.KeyID.Save
|
||||
|
||||
ldy SLIST.BytePtr
|
||||
lda (ZPSListDBlkPtr),y
|
||||
beq .9
|
||||
|
||||
cmp SLIST.KeyLen
|
||||
bne .5
|
||||
|
||||
>LDYA SLIST.KeyID
|
||||
>STYA SLIST.KeyID.Save
|
||||
|
||||
jsr SLIST.GetNextByte Skip Len
|
||||
|
||||
@ -376,8 +375,7 @@ SLIST.Search lda SLIST.hList
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
SLIST.Select lda SLIST.hList
|
||||
jsr K.GetMemPtr
|
||||
SLIST.Select jsr K.GetMemPtr
|
||||
>STYA ZPSListIBlkPtr
|
||||
|
||||
>LDYA TXTPTR
|
||||
|
Loading…
x
Reference in New Issue
Block a user