Kernel 0.93+

This commit is contained in:
Rémy GIBERT 2019-08-05 15:30:58 +02:00
parent 5583961f72
commit 52b146d6ea
18 changed files with 156 additions and 148 deletions

Binary file not shown.

View File

@ -111,7 +111,7 @@ CMD.CD.YA >SYSCALL realpath
sec
rts
.11 jsr GetPtr1Len
.11 jsr GetPtr1LenY
dey
lda (ZPPtr1),y
@ -172,7 +172,7 @@ CMD.SET lda (ZPArgVBufPtr)
.1 lda (ZPPTR1)
beq .8 Ending 0 ?
jsr GetPtr1Len
jsr GetPtr1LenY
tya
sec
@ -544,7 +544,7 @@ CMD.FUNC lda (ZPArgVBufPtr)
jsr CORE.StkGetCtx
bcc .9 NO context allowed
lda #3
lda #3 Check stack for 3 bytes
jsr CORE.StkCheck
bcs .99
@ -559,15 +559,16 @@ CMD.FUNC lda (ZPArgVBufPtr)
>LDA.G hFuncList
>SYSCALL SListNewKey
bcs .99
jsr CORE.StkPushYA
bcs .99
lda #$C0+C.FUNC
jsr CORE.StkPush
lda #$ff
>STA.G bFuncMode
clc
* clc
.99 rts
.9 jmp CMD.Exec.CSYN
@ -579,7 +580,7 @@ CMD.. lda (ZPArgVBufPtr)
jsr IO.Load
bcs CMD.CALL.RTS
>LDYA ZPArgVBufPtr
jmp CMD.CALL.YAX exec cmd file and continue
jmp CORE.Load.YAX exec cmd file and continue
.9 jmp CMD.Exec.CSYN
*--------------------------------------
@ -594,7 +595,7 @@ CMD.CALL >LDA.G hFuncList
>LDA.G hFuncList
>SYSCALL SListLookup
bcs CMD.CALL.UNDEF
>STYA ZPTmpW KeyID
>PUSHWZ From Start
@ -602,67 +603,22 @@ CMD.CALL >LDA.G hFuncList
>PUSHWZ Allocate..
>PUSHW ZPTmpW KeyID
>LDA.G hFuncList
>DEBUG
>SYSCALL SListGetData
>DEBUG
bcs CMD.CALL.RTS
>LDYA ZPArgVBufPtr FUNC PARAM1 PARAM2...
CMD.CALL.YAX stx M32.ACC X=Code to Execute
jsr CORE.ArgV.Dup Y,A = ArgV
bcs CMD.CALL.RTS
sta M32.ACC+2 A=ARGC
stx M32.ACC+1 X=ARGV
lda #8
jsr CORE.StkCheck
bcs CMD.CALL.RTS
>LDYA ZPInputBuf
jsr CORE.StkPushYA
bcs CMD.CALL.9
>LDYA ZPInputBufPtr
jsr CORE.StkPushYA
bcs CMD.CALL.9
ldy #S.PS.ARGC
lda (pPS),y
jsr CORE.StkPush old ARGC
ldy #S.PS.hARGV
lda (pPS),y
jsr CORE.StkPush old ARGV
ldy #S.PS.ARGC
lda M32.ACC+2 new ARGC
sta (pPS),y
iny #S.PS.hARGV
lda M32.ACC+1
sta (pPS),y new ARGV
lda M32.ACC new code
jsr CORE.StkPush
lda M32.ACC
>SYSCALL GetMemPtr
>STYA ZPInputBuf
>STYA ZPInputBufPtr
lda #$C0
jmp CORE.StkPush
CMD.CALL.9 rts
jmp CORE.Load.YAX
*--------------------------------------
CMD.EXIT lda (ZPArgVBufPtr)
beq .1 no arg, exit 0
>LDYA ZPArgVBufPtr
jsr EXP.GET
bcs CMD.CALL.9
bcs .9
>SYSCALL AToL
bcs CMD.CALL.9
bcs .9
>PULLA
inc pStack
@ -790,7 +746,6 @@ CMD.SWITCH jsr CORE.StkGetCtx
txa
jsr CORE.StkPush Push EXP hVALUE
bcs .9
lda CORE.TestResult
beq .1

View File

@ -21,7 +21,55 @@ CORE.FUNCRESET >LDA.G hFuncList
>SYSCALL SListFree
>STZ.G hFuncList
.8 rts
.8
CORE.FUNCRESET.RTS
rts
*--------------------------------------
CORE.Load.YAX stx M32.ACC X=Code to Execute
jsr CORE.ArgV.Dup Y,A = ArgV
bcs CORE.FUNCRESET.RTS
sta M32.ACC+2 A=ARGC
stx M32.ACC+1 X=ARGV
lda #8
jsr CORE.StkCheck
bcs CORE.FUNCRESET.RTS
>LDYA ZPInputBuf
jsr CORE.StkPushYA
bcs CORE.FUNCRESET.RTS
>LDYA ZPInputBufPtr
jsr CORE.StkPushYA
bcs CORE.FUNCRESET.RTS
ldy #S.PS.ARGC
lda (pPS),y
jsr CORE.StkPush old ARGC
ldy #S.PS.hARGV
lda (pPS),y
jsr CORE.StkPush old ARGV
ldy #S.PS.ARGC
lda M32.ACC+2 new ARGC
sta (pPS),y
iny #S.PS.hARGV
lda M32.ACC+1
sta (pPS),y new ARGV
lda M32.ACC new code
jsr CORE.StkPush
lda M32.ACC
>SYSCALL GetMemPtr
>STYA ZPInputBuf
>STYA ZPInputBufPtr
lda #$C0
jmp CORE.StkPush
*--------------------------------------
* http://heirloom.sourceforge.net/sh/sh.1.html
*--------------------------------------
@ -245,27 +293,27 @@ CORE.ExecExtCmd.Exit
*--------------------------------------
CORE.AddFunc >LDYA L.ENDCMD
jsr CORE.LookupInputBuf
bcs .8
bcs .1
.7 lda #0
>STA.G bFuncMode
>STZ.G bFuncMode
jsr .8 add "END"
jsr .1 add "END"
bcs .9
jmp CMD.END.FUNC Cleanup Stk
.9 jmp CORE.Run.SYN
.8 ldy #0
.1 ldy #$ff
.80 lda (ZPInputBufPtr),y
iny
beq .82
cmp #C.CR
bne .80
.2 iny
lda (ZPInputBufPtr),y
beq .3
.82 lda #0
eor #C.CR
bne .2
.3
>PUSHYA DataLen
>PUSHW ZPInputBufPtr DataPtr
@ -278,6 +326,7 @@ CORE.AddFunc >LDYA L.ENDCMD
lda (pData),y KeyID
>PUSHA
>LDA.G hFuncList
>SYSCALL SListAddData
bcs .9
*--------------------------------------
@ -359,15 +408,15 @@ CORE.ArgV.Dup >STYA ZPPtr1
sta ZPPtr2
stz ZPPtr2+1
.1 lda (ZPPtr1)
beq .4
.1 jsr GetPtr1LenY
tya
beq .2
jsr GetPtr1Len
jsr CORE.ArgV.DupNextY
jsr AddAp1Ptr2
jsr AddYp1Ptr1
bra .1
.4 pla
.2 pla
ply
>STYA ZPPtr1
@ -380,34 +429,22 @@ CORE.ArgV.Dup >STYA ZPPtr1
lda #$ff Arg count-1 (skip $0)
pha
.5 lda (ZPPtr1)
sta (ZPPtr2)
beq .8
pla
.5 pla
inc
pha
jsr StrCpyPtr1Ptr2
jsr CORE.ArgV.DupNextY
bra .5
tya
beq .8
.8 pla Arg count
jsr AddAp1Ptr2
jsr AddYp1Ptr1
bra .5
.8 pla A = Arg count, X = hARGV
clc
.9 rts
*--------------------------------------
CORE.ArgV.DupNextY
jsr AddYp1Ptr1
tya
sec
adc ZPPtr2
sta ZPPtr2
bcc .8
inc ZPPtr2+1
.8 rts
*--------------------------------------
CORE.ArgV.Add >LDYA ZPArgVBufPtr
>STYA ZPArgVBufPrev Save String start of Expand
@ -624,9 +661,12 @@ CORE.SkipCharsA clc
CORE.StkCheck sec
adc (pData) StackPtr
cmp #CORE.STACK.MAX
bcc .8
lda #E.STKOVERFLOW
rts
* clc
.8 rts
*--------------------------------------
CORE.StkPushYAX phx
jsr CORE.StkPushYA

View File

@ -31,11 +31,11 @@ HIS.Add >LDA.G HIS.hBuf
tya
sec add len+1
>ADC.G CL.Len CmdBuffer length
>ADC.G CL.Len CmdBuffer length
pla
bcc .2 enough room
jsr GetPtr1Len get len of oldest string
jsr GetPtr1LenY get len of oldest string
tya
* sec

View File

@ -222,7 +222,7 @@ CS.RUN jsr CL.Init
lda (pPS),y
>SYSCALL GetMemPtr
plx
jsr CMD.CALL.YAX
jsr CORE.Load.YAX
bra CS.RUN.LOOP
*--------------------------------------
.1 jsr CMD.CD.HOME
@ -244,7 +244,7 @@ CS.RUN jsr CL.Init
jsr IO.Load
bcs CS.RUN.LOOP
>LDYA L.HOME.PROFILE
jsr CMD.CALL.YAX exec profile and continue
jsr CORE.Load.YAX exec profile and continue
* bcs CS.RUN.LOOP
*--------------------------------------
@ -361,7 +361,7 @@ CS.RUN.INTERACTIVE
>SYSCALL GetMemPtr Y,A =ARGV
plx
jsr CMD.CALL.YAX X = Copy of CL
jsr CORE.Load.YAX X = Copy of CL
.6 jsr CORE.Run
@ -533,7 +533,7 @@ RemoveStrFromArgV
>STYA ZPPtr1
>STYA ZPPtr2
jsr GetPtr1Len
jsr GetPtr1LenY
.2 jsr AddYp1Ptr1
@ -542,11 +542,7 @@ RemoveStrFromArgV
tya
beq .8
sec
adc ZPPtr2
sta ZPPtr2
bcc .2
inc ZPPtr2+1
jsr AddAp1Ptr2
bra .2
.8 rts
@ -559,7 +555,7 @@ IncPtr1 inc ZPPtr1
inc ZPPtr1+1
IncPtr1.8 rts
*--------------------------------------
GetPtr1Len ldy #$ff
GetPtr1LenY ldy #$ff
.1 iny
lda (ZPPtr1),y
@ -576,6 +572,13 @@ AddAPtr1 clc
inc ZPPtr1+1
.8 rts
*--------------------------------------
AddAp1Ptr2 sec
adc ZPPtr2
sta ZPPtr2
bcc .8
inc ZPPtr1+2
.8 rts
*--------------------------------------
StrCpyPtr1Ptr2 ldy #$ff
.1 iny

View File

@ -188,7 +188,7 @@ BIN.Load.1 >LDYA K.S.STAT+S.STAT.P.AUXTYPE
>LDYAI K.Buf256 get back bin path
ldx #SYS.strdup make a copy of this string
jsr K.SYSCALL2.BANK
jsr K.SYSCALL2
bcs .98
lda BIN.hMem Keep X=new string hMem

View File

@ -567,7 +567,7 @@ K.ReadDir.ConvertTime
lda ZPPtr3+1
adc #0
ldx #SYS.PTime2Time BANK2
jmp K.SYSCALL2.BANK
jmp K.SYSCALL2
*/-------------------------------------
* # CloseDir
* ## C

View File

@ -232,7 +232,7 @@ ENV.Search.YA >STYA .4+1
.5 >PUSHWI K.S.STAT
>LDYAI K.Buf256
ldx #SYS.stat
jsr K.SYSCALL2.BANK
jsr K.SYSCALL2
bcs .1 Failed...retry next path...
lda K.S.STAT+S.STAT.P.TYPE

View File

@ -7,12 +7,7 @@ NEW
* X = SYSfnc.Index
* Y,A = free for Inline param
*--------------------------------------
sta CLRREADAUX
sta CLRWRITEAUX
jsr K.SYSCALL2
sta SETREADAUX
sta SETWRITEAUX
rts
JMP *
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.GPX

View File

@ -432,18 +432,30 @@ K.SYSCALL.BANK .DA #RRAMWRAMBNK1 $00
.DA #$C0
.DA #$80
*--------------------------------------
* K.SYSCALL2 : From KERNEL (MAIN,AUX), LIB
*--------------------------------------
K.SYSCALL2 bit K.SYSCALL.BANK,x Get Target BNK
bpl K.SYSCALL.JMP 0, E000, no BNK change
bvc K.SYSCALL2.BANK
K.SYSCALL2.AUX sta SETREADAUX AUX Mem API
K.SYSCALL2.AUX sta SETREADAUX MAIN to AUX Mem API
sta SETWRITEAUX
jsr K.SYSCALL.JMP
sta CLRREADAUX
sta CLRWRITEAUX
rts
K.SYSCALL2.BANK sta .7+1
K.SYSCALL2.MAIN sta CLRREADAUX Coming from KERNEL in AUX...
sta CLRWRITEAUX
jsr .1
sta SETREADAUX
sta SETWRITEAUX
rts
.1 bit K.SYSCALL.BANK,x Get Target LC BNK
K.SYSCALL2.BANK bpl K.SYSCALL.JMP 0, E000, no BNK change
sta .7+1
lda $D000 #RRAMWRAMBNK1 or #RRAMWRAMBNK2
cmp K.SYSCALL.BANK,x
beq .7

View File

@ -272,7 +272,7 @@ K.FreeMem.ERR phx
>LDYAI K.FreeMem.MSG
.1 ldx #SYS.printf
jsr K.SYSCALL2.BANK
jsr K.SYSCALL2
plx
lda #E.INVH
>DEBUGOA
@ -415,7 +415,7 @@ Mem.DecRefCnt ldy #S.MEM.REFCNT
* X = hMem of Loaded Object in AUX mem
*\--------------------------------------
K.LoadStkObj ldx #SYS.LoadTxtFile To get ending \0
jsr K.SYSCALL2.BANK
jsr K.SYSCALL2
bcs .99
sty .81+1 Save File Len
@ -428,7 +428,7 @@ K.LoadStkObj ldx #SYS.LoadTxtFile To get ending \0
.1 >STYA A2L Save LEN temporarly
ldx #SYS.NewStkObj
jsr K.SYSCALL2.AUX
jsr K.SYSCALL2
bcs .9
stx .80+1

View File

@ -36,7 +36,7 @@ IO.CLOSE.PIPE ldy #S.FD.PIPE.S
.DO AUXPIPE=1
ldx #SYS.FreeStkObj
jsr K.SYSCALL2.AUX
jsr K.SYSCALL2
.ELSE
jsr K.FreeMem
.FIN
@ -275,7 +275,7 @@ IO.PIPE.GET.BUF lda (pFD),y
.DO AUXPIPE=1
ldx #SYS.GetStkObjPtr
jsr K.SYSCALL2.AUX
jsr K.SYSCALL2
.ELSE
jsr K.GetMemPtr get src buf
.FIN

View File

@ -242,7 +242,7 @@ PS.Load ldy #$ff
>PUSHWI K.S.STAT
>LDYA PS.ArgV found /, some path specified, no search
ldx #SYS.stat
jsr K.SYSCALL2.BANK
jsr K.SYSCALL2
bcc .6 REAL path in K.Buf256
.99 rts
@ -320,7 +320,7 @@ PS.Load.SCRIPT ldx #$ff
.5 >PUSHWI K.S.STAT
>LDYAI K.Buf256
ldx #SYS.stat
jsr K.SYSCALL2.BANK
jsr K.SYSCALL2
bcs PS.Load.RTS
lda K.S.STAT+S.STAT.P.TYPE
@ -419,7 +419,7 @@ PS.LoadGetHeader
>PUSHBI O.RDONLY
>LDYAI K.IOBuf
ldx #SYS.fopen
jsr K.SYSCALL2.BANK
jsr K.SYSCALL2
bcs .9
sta .1+1
@ -427,13 +427,13 @@ PS.LoadGetHeader
>PUSHWI K.IOBuf+128
.1 lda #$ff SELF MODIFIED
ldx #SYS.fread
jsr K.SYSCALL2.BANK
jsr K.SYSCALL2
php
pha
lda .1+1
ldx #SYS.fclose
jsr K.SYSCALL2.BANK
jsr K.SYSCALL2
pla
plp
.9 rts
@ -630,7 +630,7 @@ K.Kill.2 ldy #S.PS.hSID
ldy #S.PS.hStdOut
lda (ZPPtr1),y
ldx #SYS.fclose
jsr K.SYSCALL2.BANK
jsr K.SYSCALL2
.1 lda K.Kill.PID
@ -697,7 +697,7 @@ K.LoadFile clc
ror FIO.bTXT
ldx #SYS.FOpen
jsr K.SYSCALL2.BANK
jsr K.SYSCALL2
bcs .9
@ -707,7 +707,7 @@ K.LoadFile clc
>PUSHWI K.S.Stat
pla
ldx #SYS.FStat
jsr K.SYSCALL2.BANK
jsr K.SYSCALL2
bcs .11
lda K.S.Stat+S.STAT.SIZE+3
@ -735,7 +735,7 @@ K.LoadFile clc
>PUSHW FIO.MemPtr
lda FIO.hFILE
ldx #SYS.FRead
jsr K.SYSCALL2.BANK
jsr K.SYSCALL2
bcc .2
pha
@ -746,7 +746,7 @@ K.LoadFile clc
.99 pha
lda FIO.hFILE
ldx #SYS.FClose
jsr K.SYSCALL2.BANK
jsr K.SYSCALL2
pla
sec
.9 rts

View File

@ -247,7 +247,7 @@ PWD.Save lda PWD.bDirty
>PUSHBI O.WRONLY+O.CREATE
>LDYAI PWD.FILE
ldx #SYS.FOpen
jsr K.SYSCALL2.BANK
jsr K.SYSCALL2
bcc .1
pha
@ -264,7 +264,7 @@ PWD.Save lda PWD.bDirty
>PUSHYA
lda .7+1
ldx #SYS.FWrite
jsr K.SYSCALL2.BANK
jsr K.SYSCALL2
bcc .2
pha
@ -277,7 +277,7 @@ PWD.Save lda PWD.bDirty
.7 lda #$ff SELF MODIFIED
ldx #SYS.fclose
jsr K.SYSCALL2.BANK
jsr K.SYSCALL2
.8 lda #$ff
jmp K.freemem SELF MODIFIED

View File

@ -55,7 +55,8 @@ K.SListGetData sta SLIST.hList
bne .12
>LDYA SLIST.DataLen
>SYSCALL2 GetMem In MAIN Mem
ldx #SYS.GetMem
jsr K.SYSCALL2.MAIN !!! Get a buffer In MAIN Mem !!!
bcs .9
stx .82+1
>STYA ZPSListDataPtr
@ -302,7 +303,7 @@ K.SListNewKey sta SLIST.hList
jsr SHARED.PullYA
>STYA ZPSListDataPtr
jsr SLIST.Search
bcc .99
@ -411,7 +412,8 @@ K.SListFree sta .8+1
*--------------------------------------
* PRIVATE
*--------------------------------------
SLIST.Search jsr K.GetMemPtr
SLIST.Search lda SLIST.hList
jsr K.GetMemPtr
>STYA ZPSListIBlkPtr
lda (ZPSListIBlkPtr)
@ -467,7 +469,8 @@ SLIST.Search jsr K.GetMemPtr
sec
rts
*--------------------------------------
SLIST.Select jsr K.GetMemPtr
SLIST.Select lda SLIST.hList
jsr K.GetMemPtr
>STYA ZPSListIBlkPtr
SLIST.Select.I ldy ZPSListKeyID+1

View File

@ -333,7 +333,7 @@ K.MkNod.I ldx #2
>LDYA ZPPtr1
ldx #SYS.StrDup
jsr K.SYSCALL2.BANK
jsr K.SYSCALL2
bcs .9
txa

View File

@ -1322,7 +1322,7 @@ STDIO.NewHFile sta .4+1 Store hFD
.21 >LDYAI K.buf256
ldx #SYS.strdup
jsr K.SYSCALL2.BANK
jsr K.SYSCALL2
bcs .9
txa

View File

@ -151,7 +151,7 @@ STDLIB.realpath.I
ror .82+1
ldx #SYS.ExpandStr
jsr K.SYSCALL2.BANK
jsr K.SYSCALL2
bcs K.atoi.RTS
>STYA ZPPtr1
@ -262,7 +262,7 @@ STDLIB.realpath.I
bpl .88
>LDYAI K.Buf256
ldx #SYS.StrDup BANK 2
jmp K.SYSCALL2.BANK
jmp K.SYSCALL2
.88 clc
rts