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

@ -37,6 +37,14 @@ J.CSH.BOPS.SUBt .DA CSH.TMISMATCH
.DA CSH.BOPS.SUBu16 .DA CSH.BOPS.SUBu16
.DA CSH.BOPS.SUBu32 .DA CSH.BOPS.SUBu32
.DA CSH.BOPS.SUBf .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.FN .DA CSH.FN
L.CSH.DIRS .DA CSH.DIRS L.CSH.DIRS .DA CSH.DIRS
L.CSH.KW .DA CSH.KW L.CSH.KW .DA CSH.KW

View File

@ -46,7 +46,10 @@ CSH.Quit >LDA.G CSH.hSymbols
>SYSCALL SListFree >SYSCALL SListFree
.2 >LDA.G hFileBuf .2 lda ZPhMacro
jsr .7
>LDA.G hFileBuf
jsr .7 jsr .7
>LDA.G CSH.hStack >LDA.G CSH.hStack
@ -193,10 +196,25 @@ CSH.DIR.DEFINE jsr CSH.CheckSpace
jsr CSH.CheckSpace jsr CSH.CheckSpace
bcs .99 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 ZPFileBufPtr
>PUSHW ZPVarID >PUSHW ZPVarID
>LDA.G CSH.hSymbols >LDA.G CSH.hDefines
>SYSCALL SListAddData >SYSCALL SListAddData
bcs .99 bcs .99
@ -579,7 +597,7 @@ CSH.ExpEval ldx ZPPtr1
bne .19 bne .19
jsr CSH.GetNextCharNB skip ) jsr CSH.GetNextCharNB skip )
* >DEBUG
bcs .19 bcs .19
jmp .12 jmp .12
@ -588,6 +606,9 @@ CSH.ExpEval ldx ZPPtr1
.20 jsr CSH.IsLetter define, Fnc or Var ? .20 jsr CSH.IsLetter define, Fnc or Var ?
bcs .2 bcs .2
jsr CSH.GetDefine
bcc .10
jsr CSH.GetVar jsr CSH.GetVar
bcs .1 bcs .1
@ -655,7 +676,7 @@ CSH.ExpEval ldx ZPPtr1
* Old OP has precedence, compute ACC=ARG <BOP> ACC * Old OP has precedence, compute ACC=ARG <BOP> ACC
.6 lda ZPPtr2 Var Type .6 lda ZPPtr2 Var Type
ldx ZPPtr2+1 BOP ldx ZPPtr2+1 BOP
jsr CSH.BOPExec jsr CSH.BOP.EXEC
bcs .99 bcs .99
jsr CSH.GetCharNB jsr CSH.GetCharNB
bcs .90 bcs .90
@ -664,7 +685,7 @@ CSH.ExpEval ldx ZPPtr1
.8 ldx ZPPtr2+1 .8 ldx ZPPtr2+1
bmi .80 bmi .80
lda ZPPtr2 Var Type lda ZPPtr2 Var Type
jsr CSH.BOPExec jsr CSH.BOP.EXEC
bcc .80 bcc .80
bcs .99 bcs .99
@ -718,10 +739,6 @@ CSH.SavePtr >LDYA ZPFileBufPtr
>STYA.G CSH.BufPtrSave >STYA.G CSH.BufPtrSave
rts rts
*-------------------------------------- *--------------------------------------
CSH.RestorePtr >LDYA.G CSH.BufPtrSave
>STYA ZPFileBufPtr
rts
*--------------------------------------
CSH.LookupFN sec CSH.LookupFN sec
.HS 90 BCC .HS 90 BCC
CSH.LookupID clc CSH.LookupID clc
@ -809,11 +826,13 @@ CSH.GetNumOnStack
.10 cpx #CSH.T.FLOAT .10 cpx #CSH.T.FLOAT
bcc .1 bcc .1
bne .99 bne .99
>PUSHWI ZPFileBufPtr >PUSHWI ZPFileBufPtr
>LDYA ZPFileBufPtr >LDYA ZPFileBufPtr
>SYSCALL StrToF >SYSCALL StrToF
clc clc
rts rts
.1 >PUSHBI 10 .1 >PUSHBI 10
>PUSHWI ZPFileBufPtr >PUSHWI ZPFileBufPtr
@ -900,6 +919,7 @@ CSH.SetVarValueFromStack
iny iny
dex dex
bne .1 bne .1
>PUSHBI 0 Datalen HI >PUSHBI 0 Datalen HI
pla pla
inc inc
@ -917,9 +937,38 @@ CSH.SetVarValueFromStack
.2 >SYSCALL SListSetData .2 >SYSCALL SListSetData
rts 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 CSH.GetVar >PUSHW ZPFileBufPtr
>LDA.G CSH.hSymbols >LDA.G CSH.hSymbols
>SYSCALL SListLookup CSH.Get >SYSCALL SListLookup
bcs .9 bcs .9
pha pha
@ -1006,118 +1055,6 @@ CSH.IsValue0 cpx #CSH.T.FLOAT
.9 sec .9 sec
rts 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 * Stack
*-------------------------------------- *--------------------------------------
CSH.CheckStack tax CSH.CheckStack tax
@ -1263,9 +1200,30 @@ CSH.GetNextChar inc ZPFileBufPtr
inc ZPFileBufPtr+1 inc ZPFileBufPtr+1
*-------------------------------------- *--------------------------------------
CSH.GetChar lda (ZPFileBufPtr) CSH.GetChar lda (ZPFileBufPtr)
bne .8
lda ZPhMacro
beq .9 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 rts
.9 lda #MLI.E.EOF .9 lda #MLI.E.EOF
sec sec
rts rts

View File

@ -2,6 +2,203 @@ NEW
AUTO 3,1 AUTO 3,1
.LIST OFF .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 EXEC.log >FPU LOG
clc clc
rts rts

View File

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

View File

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

View File

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

View File

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