Kernel 0.93++

This commit is contained in:
Rémy GIBERT 2020-02-02 15:58:01 +01:00
parent ddf079965d
commit dc10f1715e
12 changed files with 127 additions and 278 deletions

Binary file not shown.

View File

@ -19,117 +19,67 @@ HIS.Init >LDYAI HISTORY.MAX Get a buffer for History
*--------------------------------------
HIS.Add >LDA.G HIS.hBuf
beq .9
>SYSCALL GetMemPtr
>STYA ZPPTR1
.10 lda #$ff
jsr HIS.GetA Y=ending 0
phy
tya
sec add len+1
>ADC.G CL.Len CmdBuffer length
pla
bcc .2 enough room
jsr GetPtr1LenY get len of oldest string
tya
* sec
adc ZPPTR1
sta ZPPTR2
lda ZPPTR1+1
adc #0
sta ZPPTR2+1
ldy #$FF
.1 iny
lda (ZPPTR2),y move back until String ending 0 found
sta (ZPPTR1),y
bne .1
iny
lda (ZPPTR2),y move back until Array ending 0 found
sta (ZPPTR1),y
bne .1
>PUSHA
>PUSHW ZPCLBuf
>SYSCALL StrVAdd
bcc .1
>PUSHB.G HIS.hBuf
lda #0
>PUSHA
>SYSCALL StrVShift
>DEC.G HIS.Count
bra .10 retry....
.2 jsr AddAPtr1 A = ending O offset
ldy #$ff
.4 iny
lda (ZPCLBuf),y
sta (ZPPTR1),y
bne .4
iny
sta (ZPPTR1),y set new array ending 0
* lda #0
>STA.G HIS.Index Reset Index
bra HIS.Add
.1 >STZ.G HIS.Index Reset Index
>INC.G HIS.Count
.9 rts
*--------------------------------------
HIS.GetPrev >LDA.G HIS.hBuf
beq HISTORY.RTS
>SYSCALL GetMemPtr
>STYA ZPPTR1
>LDA.G HIS.Count
beq HISTORY.RTS empty history,nothing to do
>LDA.G HIS.Index
bne .1
>LDA.G HIS.Count
.1 dec
>STA.G HIS.Index
bra HIS.SetA
bra HIS.GetToCl
History.RTS rts
*--------------------------------------
HIS.GetNext >LDA.G HIS.hBuf
beq HISTORY.RTS
>SYSCALL GetMemPtr
>STYA ZPPTR1
>LDA.G HIS.Count
beq HISTORY.RTS empty history,nothing to do
>LDA.G HIS.Index
inc
>CMP.G HIS.Count
bne .1
bne HIS.GetToCl
lda #0
>STA.G HIS.Index
jmp CL.CLR
.1 >STA.G HIS.Index
*--------------------------------------
HIS.SetA jsr HIS.GetA
HIS.GetToCl >STA.G HIS.Index
tya
jsr AddAPtr1
jsr CL.CLR
ldy #$ff
.2 iny
lda (ZPPTR1),y
sta (ZPCLBuf),y
bne .2
tya
>STA.G CL.Ptr
>PUSHB.G HIS.hBuf
>PUSHB.G HIS.Index
>PUSHW ZPCLBuf
>SYSCALL StrVGet
>STZ.G CL.Ptr
>STA.G CL.Len
jmp CL.PrintCLBuf
*--------------------------------------
HIS.GetA ldy #0
tax
beq .80
lda (ZPPTR1),y
beq .9
.1 iny
lda (ZPPTR1),y
bne .1
dex
beq .8
iny
lda (ZPPTR1),y
bne .1
.9 sec Found ending 0....
rts
.8 iny
.80 clc
rts
*--------------------------------------
MAN
SAVE USR/SRC/BIN/SH.S.HIS
LOAD USR/SRC/BIN/SH.S

View File

@ -266,9 +266,9 @@ SYS.Kill .EQ $A6
SYS.LoadFile .EQ $A8
SYS.LoadTxtFile .EQ $AA
SYS.GetMemStat .EQ $AC
SYS.StrVDup .EQ $AE
* .EQ $AE
SYS.StrVGet .EQ $B0
* .EQ $B0
SYS.ArgV .EQ $B2
SYS.Expand .EQ $B4
SYS.FileSearch .EQ $B6
@ -293,10 +293,10 @@ SYS.GetPWName .EQ $D2
SYS.PutPW .EQ $D4
SYS.FlushEtcPasswd .EQ $D6
* .EQ $D8
* .EQ $DA
* .EQ $DC
* .EQ $DE
SYS.StrVShift .EQ $D8
SYS.StrVGet .EQ $DA
SYS.StrVAdd .EQ $DC
SYS.StrVDup .EQ $DE
*--------------------------------------
SYS.GetMem .EQ $E0
SYS.Realloc .EQ $E2

View File

@ -2,7 +2,6 @@ NEW
AUTO 3,1
*--------------------------------------
AUXPIPE .EQ 1
AUXENV .EQ 1
*--------------------------------------
ZPKERNEL .EQ $0
*--------------------------------------

View File

@ -353,9 +353,7 @@ K.SetEnv.I jsr K.UnsetEnv.I
jsr ENV.NextEnvP4Y
bra .10
.15 .DO AUXENV=1
sta CLRREADAUX
.FIN
.15 sta CLRREADAUX
ldy #$ff
@ -395,12 +393,8 @@ K.SetEnv.I jsr K.UnsetEnv.I
ldy #S.PS.hENV
lda (pPs),y
.DO AUXENV=1
ldx #SYS.FreeStkObj
jsr K.SYSCALL2.AUX
.ELSE
jsr K.Freemem
.FIN
pla hEnv
ldy #S.PS.hENV
@ -412,9 +406,7 @@ K.SetEnv.I jsr K.UnsetEnv.I
.22 ldy #$ff
.DO AUXENV=1
sta SETWRITEAUX
.FIN
.23 iny
lda (TXTPTR),y
@ -438,10 +430,8 @@ K.SetEnv.I jsr K.UnsetEnv.I
sta (ZPPtr3),y don't forget array ending 0
clc
.9 .DO AUXENV=1
sta CLRREADAUX
.9 sta CLRREADAUX
sta CLRWRITEAUX
.FIN
rts
*/--------------------------------------
* # GetEnv
@ -461,8 +451,34 @@ K.SetEnv.I jsr K.UnsetEnv.I
K.GetEnv >PULLW FORPNT value
>PULLW TXTPTR name
K.GetEnv.I lda TXTPTR
beq K.GetEnvDump
K.GetEnv.I ldy #S.PS.hENV
lda (pPs),y
tax
ldy TXTPTR+1
bne .10
sta SETREADAUX
jsr MEM.GetMemByID
ldy #S.MEM.LEN
lda (ZPMemMgrSPtr),y
pha
iny
lda (ZPMemMgrSPtr),y
ply
sta CLRREADAUX
jmp MEM.CopyToMain
.10
* sta SETREADAUX
* sta SETWRITEAUX
* stx ENVX.hEnv
* jsr ENVX.GetEnv
* sta CLRREADAUX
* sta CLRWRITEAUX
* rts
jsr ENV.FindVar
bcs .9
@ -474,35 +490,27 @@ K.GetEnv.I lda TXTPTR
ldy #$ff
.DO AUXENV=1
sta SETREADAUX
.FIN
.1 iny
lda (ZPPtr3),y
bne .1
.DO AUXENV=1
sta CLRREADAUX
.FIN
iny
bne .2
inc
.2 .DO AUXENV=1
sta CLRREADAUX
.2 sta CLRREADAUX
sta CLRWRITEAUX
.FIN
jsr K.getmem
bcs .99
>STYA FORPNT
.3 .DO AUXENV=1
sta SETREADAUX
.FIN
.3 sta SETREADAUX
ldy #$ff
@ -512,9 +520,7 @@ K.GetEnv.I lda TXTPTR
bne .4
>LDYA FORPNT
.DO AUXENV=1
sta CLRREADAUX
.FIN
clc
rts
@ -522,42 +528,6 @@ K.GetEnv.I lda TXTPTR
.9 >LDYAI 0
* sec
.99 rts
K.GetEnvDump ldy #S.PS.ENVPAGECNT
lda (pPs),y
sta .1+1
ldy #0
jsr K.getmem
bcs .9
>STYA FORPNT
sty .80+1
sta .81+1
stx .82+1
jsr ENV.InitEnvP3 SETREADAUX
.1 ldx #$ff SELF MODIFIED
ldy #0
.2 lda (ZPPtr3),y
sta (FORPNT),y
iny
bne .2
.80 ldy #$ff SELF MODIFIED
.81 lda #$ff SELF MODIFIED
.82 ldx #$ff SELF MODIFIED
.DO AUXENV=1
sta CLRREADAUX
.FIN
clc
.9 rts
*/--------------------------------------
* # UnsetEnv
* Remove an environment variable
@ -591,10 +561,8 @@ K.UnsetEnv.I jsr ENV.FindVar
* ZPPtr3 -> PTR to Ending 0
*--------------------------------------
ENV.FindVar
.DO AUXENV=1
sta SETREADAUX
sta SETWRITEAUX
.FIN
jsr ENV.InitEnvP3 Store ENV
@ -604,11 +572,7 @@ ENV.FindVar
ldy #$ff
.2 iny
.DO AUXENV=1
jsr SHARED.TXTPTR.GetY
.ELSE
lda (TXTPTR),y
.FIN
beq .3
jsr SHARED.IsIDValid
@ -623,20 +587,16 @@ ENV.FindVar
cmp #'='
bne .4
.DO AUXENV=1
sta CLRREADAUX
sta CLRWRITEAUX
.FIN
clc
rts
.4 jsr ENV.NextEnvP3 Skip NAME=VALUE
bra .1
.9 .DO AUXENV=1
sta CLRREADAUX
.9 sta CLRREADAUX
sta CLRWRITEAUX
.FIN
sec
rts
*--------------------------------------
@ -644,10 +604,8 @@ ENV.FindVar
* In:
* ZPPtr3 -> ENV.NAME to Discard
*--------------------------------------
ENV.DelVarP3 .DO AUXENV=1
sta SETREADAUX
ENV.DelVarP3 sta SETREADAUX
sta SETWRITEAUX
.FIN
>LDYA ZPPtr3 save actual Ptr
>STYA ZPPtr4
jsr ENV.NextEnvP3 Skip NAME=VALUE
@ -667,20 +625,14 @@ ENV.DelVarP3 .DO AUXENV=1
jsr ENV.NextEnvP4Y
bra .1
.8 .DO AUXENV=1
sta CLRREADAUX
.8 sta CLRREADAUX
sta CLRWRITEAUX
.FIN
rts
*--------------------------------------
ENV.InitEnvP3 .DO AUXENV=1
sta CLRREADAUX
.FIN
ENV.InitEnvP3 sta CLRREADAUX
ldy #S.PS.hENV
lda (pPs),y
.DO AUXENV=1
sta SETREADAUX
.FIN
jsr K.GetMemPtr
>STYA ZPPtr3 Store ENV
@ -728,10 +680,8 @@ ENV.Dup.A sta .8+1 Store target page Count
ldy #S.PS.hENV
lda (pPs),y
.DO AUXENV=1
sta SETREADAUX
sta SETWRITEAUX
.FIN
jsr K.GetMemPtr
>STYA .1+1
@ -762,10 +712,8 @@ ENV.Dup.A sta .8+1 Store target page Count
pla hMem
clc
.9 .DO AUXENV=1
sta CLRREADAUX
.9 sta CLRREADAUX
sta CLRWRITEAUX
.FIN
rts
*--------------------------------------
MAN

View File

@ -1,6 +1,8 @@
NEW
AUTO 3,1
*--------------------------------------
ENVX.hEnv .BS 1
*--------------------------------------
ENVX.PutEnv ldy #$ff
.1 iny
@ -70,7 +72,7 @@ ENVX.SetEnv jsr ENVX.UnsetEnv
bcs .22 env is large enough
lda ZPPtr4+1
jsr ENV.Dup.A
jsr ENVX.Dup.A
bcs .9
pha
@ -113,10 +115,7 @@ ENVX.SetEnv jsr ENVX.UnsetEnv
.9 rts
*--------------------------------------
ENVX.GetEnv lda TXTPTR
beq ENVX.Dump
jsr ENVX.FindVar
ENVX.GetEnv jsr ENVX.FindVar
bcs .9
jsr ENVX.NextEnvP3Y Skip NAME=
@ -162,55 +161,11 @@ ENVX.GetEnv lda TXTPTR
* sec
.99 rts
*--------------------------------------
ENVX.Dump sta CLRREADAUX
sta CLRWRITEAUX
ldy #S.PS.ENVPAGECNT
lda (pPs),y
sta .1+1
ldy #0
jsr K.getmem
sta SETREADAUX
sta SETWRITEAUX
bcs .9
>STYA FORPNT
sty .80+1
sta .81+1
stx .82+1
jsr ENV.InitEnvP3 SETREADAUX
.1 ldx #$ff SELF MODIFIED
ldy #0
.2 lda (ZPPtr3),y
jsr SHARED.FORPNT.PutY
iny
bne .2
inc ZPPtr3+1
inc FORPNT+1
dex
bne .2
.80 ldy #$ff SELF MODIFIED
.81 lda #$ff SELF MODIFIED
.82 ldx #$ff SELF MODIFIED
clc
.9 rts
*--------------------------------------
ENVX.UnsetEnv jsr ENVX.FindVar
bcs . 8 not found, quit
bcs .8 not found, quit
jsr ENVX.DelVarP3 Ptr3 -> NAME=VALUE
clc
.8 clc
rts
*--------------------------------------
@ -283,10 +238,7 @@ ENVX.DelVarP3 >LDYA ZPPtr3 save actual Ptr
.8 rts
*--------------------------------------
ENVX.InitEnvP3 sta CLRREADAUX
ldy #S.PS.hENV
lda (pPs),y
sta SETREADAUX
ENVX.InitEnvP3 lda ENVX.hEnv
jsr K.GetMemPtr
>STYA ZPPtr3 Store ENV
@ -323,10 +275,10 @@ ENVX.NextEnvP4Y tya
* A = hMem to new ENV
* X = Page Count
*--------------------------------------
ENV.Dup ldy #S.PS.ENVPAGECNT
ENVX.Dup ldy #S.PS.ENVPAGECNT
lda (pPs),y
ENV.Dup.A sta .8+1 Store target page Count
ENVX.Dup.A sta .8+1 Store target page Count
ldy #S.PS.ENVPAGECNT get SOURCE page count
lda (pPs),y

View File

@ -992,12 +992,8 @@ TskMgrInit >LDYAI MSG.TSK
>SYSCALL2 puts
>LDYAI K.ENV.SIZE get a buffer for ENV
.DO AUXENV=1
ldx #SYS.NewStkObj
jsr K.SYSCALL2.AUX Buffer in AUX mem
.ELSE
jsr K.GetMem
.FIN
bcs EvtMgrInit.RTS
>STYA ZPPtr1
ldy #S.PS.ENVPAGECNT
@ -1009,16 +1005,12 @@ TskMgrInit >LDYAI MSG.TSK
iny #S.PS.hENV
sta (pPs),y
.DO AUXENV=1
sta SETWRITEAUX
.FIN
lda #0
sta (ZPPtr1) make sure blank!!
.DO AUXENV=1
sta CLRWRITEAUX
.FIN
>LDYAI $2E0 Get ROOT from QC
>SYSCALL2 strdup
bcs .9

View File

@ -104,9 +104,9 @@ K.SYSCALL .DA 0 $00
.DA K.LoadFile
.DA K.LoadTxtFile
.DA K.GetMemStat
.DA K.StrVDup
.DA 0
.DA K.StrVGet $B0
.DA 0 $B0
.DA K.ArgV
.DA K.Expand
.DA K.FileSearch
@ -128,10 +128,10 @@ K.SYSCALL .DA 0 $00
.DA K.GetPWName
.DA K.PutPW
.DA K.FlushEtcPasswd
.DA 0
.DA 0
.DA 0
.DA 0 X.OSD
.DA K.StrVShift
.DA K.StrVGet
.DA K.StrVAdd
.DA K.StrVDup
*--------------------------------------
* $E000
*--------------------------------------
@ -386,13 +386,13 @@ K.SYSCALL.BANK .DA #RRAMWRAMBNK1 $00
.DA #$80
.DA #0 PWD
.DA #$80
.DA #RRAMWRAMBNK2
.DA #0 StrV
.DA #$80
.DA #RRAMWRAMBNK2
.DA #0
.DA #$80
.DA #RRAMWRAMBNK2
.DA #0
.DA #$80
.DA #$C0 Off Screen Driver
.DA #0
.DA #$80
*--------------------------------------
.DA #0 $E0 : MemMgr at $E000

View File

@ -29,12 +29,13 @@ K.Realloc ldy #2 src hMem
ldy #S.MEM.LEN
lda (ZPMemMgrSPtr),y
sta .2+1
pha
iny
lda (ZPMemMgrSPtr),y
sta .3+1
ply
sty .2+1
sta .3+1
jsr MEM.MoveToAux x = Src hMem, YA = LEN
bcs .99
@ -498,8 +499,12 @@ K.LoadStkObj ldx #SYS.LoadTxtFile To get ending \0
* none.
* (X,Y unmodified)
*\--------------------------------------
MEM.MoveToMain stx .1+1 Save AUX hMem
>STYA A2L Save LEN to move
MEM.CopyToMain clc
.HS B0 BCS
MEM.MoveToMain sec
ror .1+1
stx .2+1 Save AUX hMem
>STYA A2L Save LEN to copy/move
jsr K.GetMem
bcs .9
@ -507,7 +512,7 @@ MEM.MoveToMain stx .1+1 Save AUX hMem
stx .8+1 Save MAIN hMem
>STYA A4L Save MAIN Ptr
lda .1+1
lda .2+1
>SYSCALL2 GetStkObjPtr
>STYA A1L Save AUX base Ptr
pha Add Allocated LEN
@ -523,10 +528,14 @@ MEM.MoveToMain stx .1+1 Save AUX hMem
jsr AuxMove
.1 lda #$ff SELF MODIFIED
bpl .8
.2 lda #$ff SELF MODIFIED
>SYSCALL2 FreeStkObj release AUX memory
.8 ldx #$ff Returns MAIN hMem
* clc
txa
jmp K.GetMemPtr Y,A = Ptr
.9 rts
*--------------------------------------

View File

@ -581,12 +581,8 @@ K.Kill.2 ldy #S.PS.hSID
ldy #S.PS.hENV
lda (ZPPtr1),y
.DO AUXENV=1
ldx #SYS.FreeStkObj
jsr K.SYSCALL2.AUX
.ELSE
jsr K.Freemem
.FIN
ldx #4

View File

@ -43,14 +43,14 @@ K.StrVShift >PULLA index
* CC: Y,A = Ptr
* CS: Y,A = NULL
*\--------------------------------------
K.StrVGet >PULLW ZPPtr2 ptr
K.StrVGet >PULLW FORPNT ptr
>PULLA index
eor #$ff
tax
>PULLA
>SYSCALL GetMemPtr
jsr K.GetMemPtr
>STYA ZPPtr1 strV
.1 inx
@ -63,20 +63,22 @@ K.StrVGet >PULLW ZPPtr2 ptr
.2 lda (ZPPtr1)
tay
sec
beq .9 Y,A = 0
bne .3
lda ZPPtr2+1
sec
rts Y,A = 0
.3 lda FORPNT+1
beq .8
.4 ldy #$ff
.5 iny
lda (ZPPtr1),y
sta (ZPPtr2),y
sta (FORPNT),y
bne .5
>LDYA ZPPtr2
>LDYA FORPNT
clc
rts
@ -93,7 +95,7 @@ K.StrVGet >PULLW ZPPtr2 ptr
* CC : str added to hSTRV
* CS : hSTRV full
*\--------------------------------------
K.StrVAdd >PULLW ZPPtr2 str
K.StrVAdd >PULLW TXTPTR str
>PULLA
>SYSCALL GetMemPtr
>STYA ZPPtr1
@ -105,13 +107,13 @@ K.StrVAdd >PULLW ZPPtr2 str
.1 jsr STRV.NStrPtr1
bcs .2
jsr SHARED.AddYp1ToPtr1
jsr SHARED.AddYp1ToPtr2
bra .1
.2 ldy #$ff
.3 iny
lda (ZPPtr1),y
lda (TXTPTR),y
bne .3
tya
@ -137,12 +139,12 @@ K.StrVAdd >PULLW ZPPtr2 str
.4 ldy #$ff
.5 iny
lda (ZPPtr2),y
lda (TXTPTR),y
sta (ZPPtr1),y
bne .5
iny
sta (ZPPtr1),y
sta (ZPPtr1),y StrV Ending \0
clc
rts

View File

@ -45,9 +45,10 @@ A2osX.AUX .DA #0
A2osX.AUX.B .PH Mem.XHiMem
.INB USR/SRC/SYS/KERNEL.S.TERMX
.INB USR/SRC/SYS/KERNEL.S.ENVX
.INB USR/SRC/SYS/KERNEL.S.TIMEX
.INB USR/SRC/SYS/KERNEL.S.MD5X
.INB USR/SRC/SYS/KERNEL.S.PWDX
.INB USR/SRC/SYS/KERNEL.S.TIMEX
.INB USR/SRC/SYS/KERNEL.S.SLISTX
.EP
A2osX.AUX.S .EQ *-A2osX.AUX.B
@ -95,16 +96,16 @@ A2osX.E0 .DA #0
A2osX.E0.B .PH $E000
.INB USR/SRC/SYS/KERNEL.S.JMP
.INB USR/SRC/SYS/KERNEL.S.IRQ
.INB USR/SRC/SYS/KERNEL.S.MEM
.INB USR/SRC/SYS/KERNEL.S.SHARED
.INB USR/SRC/SYS/KERNEL.S.MATH
.INB USR/SRC/SYS/KERNEL.S.STRV
.INB USR/SRC/SYS/KERNEL.S.TERM
.INB USR/SRC/SYS/KERNEL.S.TIME
.INB USR/SRC/SYS/KERNEL.S.MD5
.INB USR/SRC/SYS/KERNEL.S.PWD
.INB USR/SRC/SYS/KERNEL.S.TIME
.INB USR/SRC/SYS/KERNEL.S.SHARED
.INB USR/SRC/SYS/KERNEL.S.STDIO2
.INB USR/SRC/SYS/KERNEL.S.STRV
.INB USR/SRC/SYS/KERNEL.S.MEM
* go to A2osX.D1
.INB USR/SRC/SYS/KERNEL.S.STDIO2
.INB USR/SRC/SYS/KERNEL.S.IO
.INB USR/SRC/SYS/KERNEL.S.PIPE
.INB USR/SRC/SYS/KERNEL.S.PFT