Kernel 0.93++

This commit is contained in:
Rémy GIBERT 2020-01-26 20:36:49 +01:00
parent 97ccc238b0
commit 272c301bc2
9 changed files with 370 additions and 188 deletions

Binary file not shown.

View File

@ -1,6 +1,6 @@
NEW
AUTO 3,1
.LIST OFF
.LIST OFF
*--------------------------------------
hFileBuf .BS 1

View File

@ -37,6 +37,14 @@ J.CSH.BOPS.SUBt .DA CSH.TMISMATCH
.DA CSH.BOPS.SUBu16
.DA CSH.BOPS.SUBu32
.DA CSH.BOPS.SUBf
J.CSH.BOPS.SHLt .DA CSH.TMISMATCH
.DA CSH.BOPS.SHL8
.DA CSH.BOPS.SHL16
.DA CSH.BOPS.SHL32
.DA CSH.BOPS.SHL8
.DA CSH.BOPS.SHL16
.DA CSH.BOPS.SHL32
.DA CSH.TMISMATCH
L.CSH.FN .DA CSH.FN
L.CSH.DIRS .DA CSH.DIRS
L.CSH.KW .DA CSH.KW

View File

@ -46,7 +46,10 @@ CSH.Quit >LDA.G CSH.hSymbols
>SYSCALL SListFree
.2 >LDA.G hFileBuf
.2 lda ZPhMacro
jsr .7
>LDA.G hFileBuf
jsr .7
>LDA.G CSH.hStack
@ -193,10 +196,25 @@ CSH.DIR.DEFINE jsr CSH.CheckSpace
jsr CSH.CheckSpace
bcs .99
>PUSHWI 0
ldy #$ff
.1 iny
lda (ZPFileBufPtr),y
beq .2
cmp #C.CR
bne .1
dey
.2 iny
lda #0
>PUSHYA DataLen
>PUSHW ZPFileBufPtr
>PUSHW ZPVarID
>LDA.G CSH.hSymbols
>LDA.G CSH.hDefines
>SYSCALL SListAddData
bcs .99
@ -579,7 +597,7 @@ CSH.ExpEval ldx ZPPtr1
bne .19
jsr CSH.GetNextCharNB skip )
* >DEBUG
bcs .19
jmp .12
@ -588,7 +606,10 @@ CSH.ExpEval ldx ZPPtr1
.20 jsr CSH.IsLetter define, Fnc or Var ?
bcs .2
jsr CSH.GetVar
jsr CSH.GetDefine
bcc .10
jsr CSH.GetVar
bcs .1
ldx ZPPtr2 expected var type (could be 0=any)
@ -655,7 +676,7 @@ CSH.ExpEval ldx ZPPtr1
* Old OP has precedence, compute ACC=ARG <BOP> ACC
.6 lda ZPPtr2 Var Type
ldx ZPPtr2+1 BOP
jsr CSH.BOPExec
jsr CSH.BOP.EXEC
bcs .99
jsr CSH.GetCharNB
bcs .90
@ -664,7 +685,7 @@ CSH.ExpEval ldx ZPPtr1
.8 ldx ZPPtr2+1
bmi .80
lda ZPPtr2 Var Type
jsr CSH.BOPExec
jsr CSH.BOP.EXEC
bcc .80
bcs .99
@ -718,10 +739,6 @@ CSH.SavePtr >LDYA ZPFileBufPtr
>STYA.G CSH.BufPtrSave
rts
*--------------------------------------
CSH.RestorePtr >LDYA.G CSH.BufPtrSave
>STYA ZPFileBufPtr
rts
*--------------------------------------
CSH.LookupFN sec
.HS 90 BCC
CSH.LookupID clc
@ -809,11 +826,13 @@ CSH.GetNumOnStack
.10 cpx #CSH.T.FLOAT
bcc .1
bne .99
>PUSHWI ZPFileBufPtr
>LDYA ZPFileBufPtr
>SYSCALL StrToF
clc
rts
.1 >PUSHBI 10
>PUSHWI ZPFileBufPtr
@ -900,6 +919,7 @@ CSH.SetVarValueFromStack
iny
dex
bne .1
>PUSHBI 0 Datalen HI
pla
inc
@ -917,9 +937,38 @@ CSH.SetVarValueFromStack
.2 >SYSCALL SListSetData
rts
*--------------------------------------
CSH.GetDefine >PUSHW ZPFileBufPtr
>LDA.G CSH.hDefines
jsr CSH.Get
bcs .9
pha
>PUSHWZ From Start
>PUSHWZ len = 0 (string mode)
>PUSHWZ Allocate..
pla
>PUSHYA KeyID
>LDA.G CSH.hDefines
>SYSCALL SListGetData
bcs .9
stx ZPhMacro
lda ZPFileBufPtr
sta ZPFileBufPtrBak
lda ZPFileBufPtr+1
sta ZPFileBufPtrBak+1
txa
>SYSCALL getmemptr
>STYA ZPFileBufPtr
.9 rts
*--------------------------------------
CSH.GetVar >PUSHW ZPFileBufPtr
>LDA.G CSH.hSymbols
>SYSCALL SListLookup
CSH.Get >SYSCALL SListLookup
bcs .9
pha
@ -1006,118 +1055,6 @@ CSH.IsValue0 cpx #CSH.T.FLOAT
.9 sec
rts
*--------------------------------------
* A = Type, X = OP
*--------------------------------------
CSH.BOPExec jmp (J.CSH.BOPS,x)
*--------------------------------------
CSH.BOPS.ADD asl
tax
jmp (J.CSH.BOPS.ADDt,x)
CSH.BOPS.ADDi8
CSH.BOPS.ADDu8 clc
>PULLA
adc (pStack)
sta (pStack)
clc
rts
CSH.BOPS.ADDi16
CSH.BOPS.ADDu16 clc
ldy #1
>PULLA
adc (pStack),y
sta (pStack),y
>PULLA
adc (pStack),y
sta (pStack),y
clc
rts
CSH.BOPS.ADDi32
CSH.BOPS.ADDu32 >FPU ADD32
clc
rts
CSH.BOPS.ADDf >FPU FADD
clc
rts
*--------------------------------------
CSH.BOPS.SUB asl
tax
jmp (J.CSH.BOPS.SUBt,x)
CSH.BOPS.SUBi8
CSH.BOPS.SUBu8 sec
ldy #1
lda (pStack),y
sbc (pStack)
sta (pStack),y
inc pStack
clc
rts
CSH.BOPS.SUBi16
CSH.BOPS.SUBu16 sec
ldy #2
lda (pStack),y
sbc (pStack)
sta (pStack),y
iny
lda (pStack),y
ldy #1
sbc (pStack),y
inc pStack
inc pStack
sta (pStack),y
clc
rts
CSH.BOPS.SUBi32
CSH.BOPS.SUBu32 >FPU SUB32
clc
rts
CSH.BOPS.SUBf >FPU FSUB
clc
rts
*--------------------------------------
CSH.BOPS.MUL cmp #CSH.T.FLOAT
beq .8
clc
rts
.8 >FPU FMULT
clc
rts
*--------------------------------------
CSH.BOPS.DIV cmp #CSH.T.FLOAT
beq .8
clc
rts
.8 >FPU FDIV
clc
rts
*--------------------------------------
CSH.BOPS.MOD
CSH.BOPS.SHL
CSH.BOPS.SHR
CSH.BOPS.L
CSH.BOPS.G
CSH.BOPS.LE
CSH.BOPS.GE
CSH.BOPS.EQ
CSH.BOPS.NE
CSH.BOPS.AND
CSH.BOPS.OR
CSH.BOPS.EOR
CSH.BOPS.LAND
CSH.BOPS.LOR
clc
rts
*--------------------------------------
* Stack
*--------------------------------------
CSH.CheckStack tax
@ -1263,9 +1200,30 @@ CSH.GetNextChar inc ZPFileBufPtr
inc ZPFileBufPtr+1
*--------------------------------------
CSH.GetChar lda (ZPFileBufPtr)
bne .8
lda ZPhMacro
beq .9
clc
stz ZPhMacro
phx
phy
>SYSCALL freemem
ply
plx
lda ZPFileBufPtrBak
sta ZPFileBufPtr
lda ZPFileBufPtrBak+1
sta ZPFileBufPtr+1
bra CSH.GetChar
.8 clc
rts
.9 lda #MLI.E.EOF
sec
rts

View File

@ -2,6 +2,203 @@ NEW
AUTO 3,1
.LIST OFF
*--------------------------------------
* A = Type, X = OP
*--------------------------------------
CSH.BOP.EXEC jmp (J.CSH.BOPS,x)
*--------------------------------------
CSH.BOPS.ADD asl
tax
jmp (J.CSH.BOPS.ADDt,x)
CSH.BOPS.ADDi8
CSH.BOPS.ADDu8 clc
>PULLA
adc (pStack)
sta (pStack)
clc
rts
CSH.BOPS.ADDi16
CSH.BOPS.ADDu16 clc
ldy #1
>PULLA
adc (pStack),y
sta (pStack),y
>PULLA
adc (pStack),y
sta (pStack),y
clc
rts
CSH.BOPS.ADDi32
CSH.BOPS.ADDu32 >FPU ADD32
clc
rts
CSH.BOPS.ADDf >FPU FADD
clc
rts
*--------------------------------------
CSH.BOPS.SUB asl
tax
jmp (J.CSH.BOPS.SUBt,x)
CSH.BOPS.SUBi8
CSH.BOPS.SUBu8 sec
ldy #1
lda (pStack),y
sbc (pStack)
sta (pStack),y
inc pStack
clc
rts
CSH.BOPS.SUBi16
CSH.BOPS.SUBu16 sec
ldy #2
lda (pStack),y
sbc (pStack)
sta (pStack),y
iny
lda (pStack),y
ldy #1
sbc (pStack),y
inc pStack
inc pStack
sta (pStack),y
clc
rts
CSH.BOPS.SUBi32
CSH.BOPS.SUBu32 >FPU SUB32
clc
rts
CSH.BOPS.SUBf >FPU FSUB
clc
rts
*--------------------------------------
CSH.BOPS.MUL cmp #CSH.T.FLOAT
beq .8
clc
rts
.8 >FPU FMULT
clc
rts
*--------------------------------------
CSH.BOPS.DIV cmp #CSH.T.FLOAT
beq .8
clc
rts
.8 >FPU FDIV
clc
rts
*--------------------------------------
CSH.BOPS.MOD clc
rts
*--------------------------------------
CSH.BOPS.SHL asl
tax
jmp (J.CSH.BOPS.SHLt,x)
CSH.BOPS.SHL8 lda (pStack)
tax
beq .8
ldy #1
lda (pStack),y
.1 asl
dex
bne .1
sta (pStack),y
.8 inc pStack
clc
rts
CSH.BOPS.SHL16 lda (pStack)
tax
beq .8
ldy #2
lda (pStack),y
iny
.1 asl
pha
lda (pStack),y
rol
sta (pStack),y
pla
dex
bne .1
dey
sta (pStack),y
.8 inc pStack
inc pStack
clc
rts
CSH.BOPS.SHL32 lda (pStack)
tax
beq .8
ldy #4
lda (pStack),y
.1 asl
pha
ldy #5
lda (pStack),y
rol
sta (pStack),y
iny
lda (pStack),y
rol
sta (pStack),y
iny
lda (pStack),y
rol
sta (pStack),y
pla
dex
bne .1
ldy #4
sta (pStack),y
.8 inc pStack
inc pStack
inc pStack
inc pStack
clc
rts
*--------------------------------------
CSH.BOPS.SHR
CSH.BOPS.L
CSH.BOPS.G
CSH.BOPS.LE
CSH.BOPS.GE
CSH.BOPS.EQ
CSH.BOPS.NE
CSH.BOPS.AND
CSH.BOPS.OR
CSH.BOPS.EOR
CSH.BOPS.LAND
CSH.BOPS.LOR
clc
rts
*--------------------------------------
EXEC.log >FPU LOG
clc
rts

View File

@ -19,6 +19,8 @@ NEW
ZS.START
ZPFileBuf .BS 2
ZPFileBufPtr .BS 2
ZPFileBufPtrBak .BS 2
ZPCSHConst .BS 2
ZPCSHStack .BS 2
@ -31,6 +33,8 @@ ZPVarID .BS 2
ZPVarData .BS 6
ZPVarType .BS 1
ZPhMacro .BS 1
ArgIndex .BS 1
ZS.END .ED
@ -176,7 +180,16 @@ CS.QUIT jsr CSH.Quit
clc
rts
*--------------------------------------
PrintErrMsg >LDYA ZPFileBuf
PrintErrMsg lda ZPhMacro
beq .10
lda ZPFileBufPtrBak
sta ZPFileBufPtr
lda ZPFileBufPtrBak+1
sta ZPFileBufPtr+1
.10 >LDYA ZPFileBuf
>STYA ZPPtr1
stz ZPPtr2
stz ZPPtr2+1 Line counter

View File

@ -12,24 +12,12 @@ BUF.InsertA sta TmpByte
jsr BUF.BufPtrSetup
bcs .9
lda BufPtr
clc
adc #1
sta BufPtrDst
lda BufPtr+1
adc #0
sta BufPtrDst+1
jsr BUF.MoveForwardTail
.2 lda TmpByte
sta (BufPtr)
inc FileLen
bne .3
inc FileLen+1
.3 jmp SCRN.Unsaved
jmp SCRN.Unsaved
.8 clc
.9 rts
@ -53,15 +41,6 @@ BUF.InsertTAB >LDA.G FileX
jsr BUF.BufPtrSetup
bcs .9
lda BufPtr
clc
adc TmpByte
sta BufPtrDst
lda BufPtr+1
adc #0
sta BufPtrDst+1
jsr BUF.MoveForwardTail
lda #C.SPACE
@ -73,15 +52,7 @@ BUF.InsertTAB >LDA.G FileX
dey
bpl .2
.4 lda FileLen
clc
adc TmpByte
sta FileLen
bcc .5
inc FileLen+1
.5 jsr SCRN.UpdateStatusBar
.4 jsr SCRN.UpdateStatusBar
jmp SCRN.Unsaved
@ -134,14 +105,6 @@ BUF.InsertClipboard
jsr BUF.BufPtrSetup
bcs .9
lda BufPtr
clc
>ADC.G ClipboardLen
sta BufPtrDst
lda BufPtr+1
>ADC.G ClipboardLen+1
sta BufPtrDst+1
jsr BUF.MoveForwardTail
>LDA.G ClipboardLen
@ -172,17 +135,7 @@ BUF.InsertClipboard
inc BufPtr+1
bra .1
.3 >LDA.G ClipboardLen
clc
adc FileLen
sta FileLen
iny
lda (pData),y
adc FileLen+1
sta FileLen+1
jsr BUF.ResetSel
.3 jsr BUF.ResetSel
jsr SCRN.UpdateStatusBar
jmp SCRN.Unsaved
@ -557,23 +510,60 @@ BUF.GetSelLen ldy #SelEnd
*--------------------------------------
* in : Y,A = cnt to insert at COffset
*--------------------------------------
BUF.BufPtrSetup pha
BUF.BufPtrSetup >STYA TmpLen
tya
clc
adc FileLen
tay
sta FileLen
pla
lda TmpLen+1
adc FileLen+1
sta FileLen+1
cpy BufLen
sbc BufLen+1
bcc .8
>LDYA BufLen
inc
>SYSCALL getmem
bcs .9
stx TmpByte
>STYA BufPtrDst
>LDYA.G BufBase
>STYA BufPtr
ldx BufLen+1
ldy #0
.1 lda (BufPtr),y
sta (BufPtrDst),y
iny
bne .1
inc BufPtr
inc BufPtrDst
dex
bne .1
inc BufLen+1
>LDA.G hBuf
>SYSCALL freemem
lda TmpByte
>STA.G hBuf
>SYSCALL getmemptr
>STYA BufBase
lda BUF.COffset
.8 lda BUF.COffset
clc
>ADC.G BufBase
sta BufPtr
@ -582,13 +572,17 @@ BUF.BufPtrSetup pha
>ADC.G BufBase+1
sta BufPtr+1
lda BufPtr
clc
adc TmpLen
sta BufPtrDst
lda BufPtr+1
adc TmpLen+1
sta BufPtrDst+1
clc
rts
.9 lda #E.BUF
sec
rts
.9 rts
*--------------------------------------
MAN
SAVE USR/SRC/BIN/EDIT.S.BUF

View File

@ -13,7 +13,7 @@ FILE.New.1 >SYSCALL RealPath
txa
>STA.G hFileName
>LDYAI 4096
>LDYAI 1024
>STYA BufLen
>SYSCALL GetMem
bcs .9

View File

@ -39,6 +39,7 @@ K.SListGetData sta SLIST.hList
sbc ZPMemMgrSize Offset
eor #$ff
sta SLIST.nDataCnt
lda SLIST.DataLen+1
sbc ZPMemMgrSize+1
eor #$ff
@ -53,10 +54,13 @@ K.SListGetData sta SLIST.hList
lda ZPSListDataPtr
ora ZPSListDataPtr+1
bne .12
>LDYA SLIST.DataLen
iny
bne .11
inc +1 for ending 0
.11 ldx #SYS.GetMem
jsr K.SYSCALL2.MAIN !!! Get a buffer In MAIN Mem !!!
bcs .9
@ -67,6 +71,7 @@ K.SListGetData sta SLIST.hList
ora ZPSListDataLen+1
sec
beq .1 String Mode
lda ZPSListDataLen
eor #$ff
sta SLIST.nBufCnt
@ -74,18 +79,25 @@ K.SListGetData sta SLIST.hList
eor #$ff
sta SLIST.nBufCnt+1
clc
.1 ror SLIST.bStringMode
stz ZPSListDataLen
stz ZPSListDataLen+1
.2 inc SLIST.nDataCnt
bne .3
inc SLIST.nDataCnt+1
beq .8
.3 inc SLIST.nBufCnt
.3 bit SLIST.bStringMode
bmi .4 String mode : until CR
inc SLIST.nBufCnt
bne .4
inc SLIST.nBufCnt+1
beq .8
.4 jsr SLIST.GetNextByte
bit SLIST.bStringMode
bpl .5