Kernel 0.94

This commit is contained in:
Rémy GIBERT 2020-02-20 17:54:51 +01:00
parent 5d6b5670f2
commit bc6eec2c22
6 changed files with 62 additions and 54 deletions

Binary file not shown.

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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