Kernel 0.9.2

This commit is contained in:
Rémy GIBERT 2018-10-21 22:54:07 +02:00
parent 7bdcbe7731
commit 384aa458b0
41 changed files with 305 additions and 373 deletions

Binary file not shown.

Binary file not shown.

View File

@ -77,7 +77,7 @@ CS.RUN ldy #S.PS.ARGC
cmp #2
beq CS.RUN.ADD
.9 lda #K.E.SYN
.9 lda #E.SYN
sec
rts
*--------------------------------------
@ -139,7 +139,7 @@ CS.RUN.ADD >PUSHEA.G DST.MAC+5
rts
.9 lda #K.E.SYN
.9 lda #E.SYN
.99 sec
rts
*--------------------------------------

View File

@ -64,7 +64,7 @@ CS.INIT
.99 >PUSHBI 0
>LDYA L.MSG.USAGE
>SYSCALL printf
lda #K.E.SYN
lda #E.SYN
sec
rts

View File

@ -68,7 +68,7 @@ CS.INIT
.99 >PUSHBI 0
>LDYA L.MSG.USAGE
>SYSCALL printf
lda #K.E.SYN
lda #E.SYN
sec
rts

View File

@ -81,7 +81,7 @@ CS.RUN.ADD cmp #2
sec we do not want to stay in memory
rts
.9 lda #K.E.SYN
.9 lda #E.SYN
sec
.99 rts
*--------------------------------------

View File

@ -123,7 +123,7 @@ CS.INIT ldy #S.PS.ARGC
.99 >PUSHBI 0
>LDYA L.MSG.USAGE
>SYSCALL printf
lda #K.E.SYN
lda #E.SYN
sec
rts
*--------------------------------------

View File

@ -68,7 +68,7 @@ CS.INIT
dex
bne .2
lda #K.E.SYN
lda #E.SYN
sec
rts

View File

@ -52,7 +52,7 @@ CS.RUN lda #1
sec
.9 rts
.99 lda #K.E.SYN
.99 lda #E.SYN
sec
rts
*--------------------------------------

View File

@ -68,7 +68,7 @@ CS.INIT ldy #S.PS.ARGC
.99 >PUSHBI 0
>LDYA L.MSG.USAGE
>SYSCALL printf
lda #K.E.SYN
lda #E.SYN
sec
rts

View File

@ -63,7 +63,7 @@ CS.INIT >SYSCALL ArgVC
.99 >LDYA L.MSG.USAGE
>SYSCALL printf
lda #K.E.SYN
lda #E.SYN
sec
rts
*--------------------------------------

View File

@ -141,7 +141,7 @@ CS.RUN.SET lda #1
sec we do not want to stay in memory
rts
.9 lda #K.E.SYN
.9 lda #E.SYN
sec
rts
*--------------------------------------

View File

@ -62,7 +62,7 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ?
>LDYA L.MSG.IPKO
>SYSCALL puts
lda #K.E.SYN
lda #E.SYN
sec
rts
@ -116,7 +116,7 @@ CS.RUN.IPOK
.99 >SYSCALL printf
lda #K.E.SYN
lda #E.SYN
sec
rts
@ -162,7 +162,7 @@ CS.RUN.OPENSKT ldx #3
>LDYA L.MSG.SKTKO
>SYSCALL puts
lda #K.E.SYN
lda #E.SYN
sec
rts

View File

@ -73,7 +73,7 @@ CS.INIT ldy #S.PS.ARGC
.99 >LDYA L.MSG.USAGE
>SYSCALL puts
lda #K.E.SYN
lda #E.SYN
sec
rts
*--------------------------------------

View File

@ -69,7 +69,7 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ?
>LDYA L.MSG.IPKO
>SYSCALL puts
lda #K.E.SYN
lda #E.SYN
sec
rts
@ -101,7 +101,7 @@ CS.RUN.IPOK ldy #S.PS.ARGC
.9 >LDYA L.MSG.USAGE
>SYSCALL puts
.99 lda #K.E.SYN
.99 lda #E.SYN
sec
rts
@ -145,7 +145,7 @@ CS.RUN.OPENSKT >PUSHBI 0 no protocol
.9 >LDYA L.MSG.SKTKO
>SYSCALL puts
lda #K.E.SYN
lda #E.SYN
sec
rts

View File

@ -68,7 +68,7 @@ CS.INIT
.99 >PUSHBI 0
>LDYA L.MSG.USAGE
>SYSCALL printf
lda #K.E.SYN
lda #E.SYN
sec
rts

View File

@ -69,7 +69,7 @@ CS.INIT
.99 >LDYA L.MSG.USAGE
>SYSCALL printf
lda #K.E.SYN
lda #E.SYN
sec
rts
@ -176,7 +176,7 @@ CS.INIT.OPENINPUT
.99 >LDYA L.MSG.HEADER.KO
>SYSCALL printf
lda #K.E.IBIN
lda #E.IBIN
sec
rts
*--------------------------------------

View File

@ -126,7 +126,7 @@ Dev.ParseArgs >LDYA ARGS
>SYSCALL sscanf
bcc .8
lda #K.E.SYN
lda #E.SYN
sec
.8 rts
*--------------------------------------

View File

@ -145,7 +145,7 @@ Dev.ParseArgs >LDYA ARGS
>SYSCALL sscanf
bcc .8
lda #K.E.SYN
lda #E.SYN
sec
.8 rts
*--------------------------------------

View File

@ -163,7 +163,7 @@ Dev.ParseArgs >LDYA ARGS
beq .92
>SYSCALL freemem
.92 lda #K.E.SYN
.92 lda #E.SYN
sec
rts
*--------------------------------------

View File

@ -146,7 +146,7 @@ Dev.ParseArgs >LDYA ARGS
>SYSCALL sscanf
bcc .8
lda #K.E.SYN
lda #E.SYN
sec
.8 rts
*--------------------------------------

View File

@ -72,7 +72,7 @@ CS.INIT
.99 >LDYA L.MSG.USAGE
>SYSCALL printf
lda #K.E.SYN
lda #E.SYN
sec
rts
@ -166,7 +166,7 @@ CS.INIT.OPENINPUT
.99 >LDYA L.MSG.HEADER.KO
>SYSCALL printf
lda #K.E.IBIN
lda #E.IBIN
sec
rts
*--------------------------------------

View File

@ -75,6 +75,22 @@ A2osX.S.XY .EQ $E1
A2osX.S.NIC .EQ $E2
A2osX.S.DISABLE .EQ $FF
*--------------------------------------
* ProDOS ERROR CODES : $00->$5F
* Lib ERROR CODES : $80->$BF
* Kernel ERROR CODES : $C0->$FF
*--------------------------------------
E.OOM .EQ $FF Out Of Memory Error
E.OOH .EQ $FE Out Of Handle Error
E.INVH .EQ $FD Invalid Handle
E.BUF .EQ $FC Buffer Overflow
*--------------------------------------
E.NSP .EQ $DD No Such Process Error
*--------------------------------------
E.SYN .EQ $CF Syntax Error
E.ENVF .EQ $CE Env is Full
E.IBIN .EQ $CD Invalid BIN format
E.FTB .EQ $CC File Too Big Error
*--------------------------------------
* A2osX.SYSCALL Constants
*--------------------------------------
C.EOF .EQ 4
@ -262,22 +278,6 @@ SYS.FreeStkObj .EQ $FE
SYS.Kernel.JMP .EQ $E000
SYS.GuiOSD.JMP .EQ $E200
*--------------------------------------
* ProDOS ERROR CODES : $00->$5F
* Lib ERROR CODES : $80->$BF
* Kernel ERROR CODES : $C0->$FF
*--------------------------------------
K.E.OOM .EQ $FF Out Of Memory Error
K.E.OOH .EQ $FE Out Of Handle Error
K.E.INVH .EQ $FD Invalid Handle
K.E.BUF .EQ $FC Buffer Overflow
*--------------------------------------
K.E.NSP .EQ $DD No Such Process Error
*--------------------------------------
K.E.SYN .EQ $CF Syntax Error
K.E.ENVF .EQ $CE Env is Full
K.E.IBIN .EQ $CD Invalid BIN format
K.E.FTB .EQ $CC File Too Big Error
*--------------------------------------
* MEM STRUCT
*--------------------------------------
S.MEM.F .EQ 0

View File

@ -123,7 +123,7 @@ Pak >PULLW ZPStatPtr
clc
rts
.9 lda #K.E.OOM
.9 lda #E.OOM
sec
rts
*--------------------------------------

View File

@ -92,7 +92,7 @@ SKT.Socket.FindFree
txa
>SYSCALL freemem
lda #K.E.OOH
lda #E.OOH
sec
rts

View File

@ -70,7 +70,7 @@ CS.RUN ldy #S.PS.ARGC
.90 >LDYA L.MSG.USAGE
>SYSCALL puts
lda #K.E.SYN
lda #E.SYN
sec
.9 rts

View File

@ -85,7 +85,7 @@ CS.RUN jsr Init.Timeout
.99 >LDYA L.MSG.TCPIPERR
>SYSCALL printf
lda #K.E.SYN
lda #E.SYN
sec
CS.RUN.RTS rts
@ -141,7 +141,7 @@ CS.RUN.LOOP >SLEEP
.9 >LDYA L.MSG.SKTERR
>SYSCALL printf
lda #K.E.SYN
lda #E.SYN
sec
rts

View File

@ -61,7 +61,7 @@ CS.RUN ldy #S.PS.ARGC
.9 >LDYA L.MSG.USAGE
>SYSCALL puts
lda #K.E.SYN tell TSKMGR that all done ok, but
lda #E.SYN tell TSKMGR that all done ok, but
sec we do not want to stay in memory
.99 rts
*--------------------------------------

View File

@ -73,7 +73,7 @@ CS.RUN jsr Init.Timeout
.99 >LDYA L.MSG.TCPIPERR
>SYSCALL printf
lda #K.E.SYN
lda #E.SYN
sec
rts
@ -122,7 +122,7 @@ CS.RUN.INIT ldx #3
.9 >LDYA L.MSG.SKTERR
>SYSCALL printf
lda #K.E.SYN
lda #E.SYN
sec
rts

View File

@ -19,10 +19,14 @@ CMD.Quit >LDA.G hCmdBuf
* in:
* ZPCMDBuf : CString command line
* out:
* ZPCMDBuf : Remove extra SPACE & comment
* ZPCMDBuf : cmd\0 arg1\0 arg2\0 ... \0
* ZPArgVBuf :
* /path/excmd\0 arg1\0 arg2\0 ... \0
* - or -
* intcmd\0 arg1\0 arg2\0 ... \0
*--------------------------------------
Cmd.Parse lda #S.PS.F.HOLD+S.PS.F.DUPENV
Cmd.Parse >STZ.G CMD.bCmd
lda #S.PS.F.HOLD+S.PS.F.DUPENV
>STA.G CMD.PSFlags
>LDYA ZPCMDBuf
@ -42,125 +46,151 @@ Cmd.Parse lda #S.PS.F.HOLD+S.PS.F.DUPENV
bcs .9
>STYA ZPArgVBuf
txa
>STA.G hArgVBuf
>STA.G CMD.hArgVBuf
lda #0
sta (ZPArgVBuf)
.1 lda (ZPCMDBuf)
lda (ZPCMDBuf)
beq .8
>LDA.G CMD.hCmdLine
bne .6 we already have Cmd
.1 >LDYA ZPCMDBuf
>SYSCALL puts
jsr CMD.CheckExternal
bcs .9
>LDA.G CMD.bCmd
bne .6 we already have Cmd, go check args
ldy #2
lda (ZPCMDBuf),y only one char ?
bne .2
dey
lda (ZPCMDBuf),y
cmp #'.' leading dot ?
bne .2
.6 jsr CMD.AddToArgV
>lda.G CMD.PSFlags yes, child process will run in same ENV
and #S.PS.F.DUPENV
sta (pData),y
bra .7 and skip this token
.2 jsr CMD.CheckCmd
bcc .7 success, skip token, already added by CheckCmd
rts
.6 jsr CMD.AddTokenToArgV
bcs .9
.7 jsr CMD.NextCmdBufToken
bra .1
lda (ZPCMDBuf)
bne .1
.8 clc
rts
.8 clc
.9 rts
*--------------------------------------
* ZPCMDBuf-> argv[] (formatted & not empty)
*--------------------------------------
Cmd.Exec.CheckExternal
ldy #$ff
Cmd.CheckCmd ldy #$ff
.1 iny
lda (ZPCMDBuf),y
beq .2 no / found, search...
beq .2
cmp #'/'
bne .1
>LDYA ZPCMDBuf found /, some path specified, no search
>LDYA ZPCMDBuf found /, some path specified, External, no search
>SYSCALL realpath
bcs .9
phy
pha
txa
>STA.G CMD.hCmdLine
pla
ply
>PUSHEA.G CMD.Stat Command line is already full path, no search
>LDYA ZPCMDBuf
>SYSCALL STAT
bcs .9
bra .6 go check type...
.2 >LDYAI 256 Get a buffer for found path
.2 >LDYA L.CMD.INT
jsr CMD.SearchInt no / found, search internal...
bcs .4 not internal, search PATH
jsr CMD.AddYAToArgV X unmodified
bcs .9
txa
>STA.G CMD.bCmd
clc
.9 rts
.4 >LDYAI 256 Get a buffer for found path
>SYSCALL GetMem
bcs .9
txa
>STA.G CMD.hCmdLine
>LDYA L.ENV.PATH push ENVNAME=PATH for search
>SYSCALL GetEnv get value for ENV=PATH
bcs .9 No PATH, try in CD
bcs Cmd.CheckCmd.90
jsr Cmd.Exec.EXT.Search
bcc Cmd.Exec.EXT.ARGS
jsr Cmd.SearchExt
bcc .6 found in PATH, go check Type
ldy #S.PS.hPREFIX not found, try in CD
lda (pPs),y
>SYSCALL GetMemPtr
jsr Cmd.Exec.EXT.Search
bcc Cmd.Exec.EXT.ARGS
jsr Cmd.SearchExt
bcs Cmd.CheckCmd.90
.6 >PUSHEA.G CMD.Stat
>LDA.G CMD.hCmdLine
>SYSCALL GetMemPtr
>SYSCALL STAT
bcs Cmd.CheckCmd.90
ldy #CMD.Stat+S.STAT.P.TYPE
lda (pData),y
cmp #S.FI.T.TXT
beq Cmd.CheckCmd.TXT
cmp #S.FI.T.BIN
beq Cmd.CheckCmd.BIN
cmp #S.FI.T.SYS
beq Cmd.CheckCmd.SYS
lda #E.SYN
sec
Cmd.CheckCmd.90 php
pha
>LDA.G CMD.hCmdLine
>SYSCALL FreeMem
pla
sec
.9 rts
*--------------------------------------
* CMD.hCmdLine = /path/bin
*--------------------------------------
Cmd.Exec.EXT.ARGS
ldx #0
jsr Cmd.RemoveStrAtX
>LDYA ZPCMDBuf
>SYSCALL puts
>DEBUG
>LDA.G CMD.hCmdLine
>SYSCALL GetMemPtr
ldx #0
jsr CMD.InsertStrYAAtX
>LDYA ZPCMDBuf
>SYSCALL puts
>DEBUG
>LDA.G CMD.hCmdLine
>SYSCALL FreeMem
ldy #CMD.Stat+S.STAT.P.TYPE
lda (pData),y
cmp #S.FI.T.TXT
beq Cmd.Exec.EXT.TXT
cmp #S.FI.T.BIN
beq Cmd.Exec.EXT.BIN
cmp #S.FI.T.SYS
bne .9
bra *
.9 lda #K.E.SYN
sec
plp
Cmd.CheckCmd.RTS
rts
*--------------------------------------
Cmd.Exec.EXT.Search
pha
* TXT : add "/PATH/SHELL" "/PATH/CMD"
*--------------------------------------
Cmd.CheckCmd.TXT
lda #0
>SYSCALL ArgV
jsr CMD.AddYAToArgV
bcs Cmd.CheckCmd.90
*--------------------------------------
* BIN : add "/PATH/CMD"
*--------------------------------------
Cmd.CheckCmd.BIN
>LDA.G CMD.hCmdLine
>SYSCALL GetMemPtr
jsr CMD.AddYAToArgV
bcs Cmd.CheckCmd.90
lda #$ff
>STA.G CMD.bCmd
bra Cmd.CheckCmd.90
*--------------------------------------
Cmd.CheckCmd.SYS
*--------------------------------------
bra *
*--------------------------------------
Cmd.SearchExt pha
phy
>PUSHEA.G CMD.Stat
>LDA.G CMD.hCmdLine
@ -172,59 +202,27 @@ Cmd.Exec.EXT.Search
>LDYA ZPCMDBuf push CMD
>SYSCALL FileSearch
rts
*--------------------------------------
* TXT : Launch "/PATH/SHELL /PATH/CMD ARGS"
*--------------------------------------
Cmd.Exec.EXT.TXT
lda #0
>SYSCALL ArgV
ldx #0
jsr Cmd.InsertStrYAAtX
*--------------------------------------
* BIN : Launch "/PATH/CMD ARGS"
*--------------------------------------
Cmd.Exec.EXT.BIN
*--------------------------------------
Cmd.Exec lda (ZPArgVBuf)
cmp #'/'
bne .8
>PUSHB.G CMD.PSFlags
>LDYA ZPCMDBuf
>SYSCALL Exec
rts
>LDYA ZPArgVBuf
>SYSCALL exec
.8 >LDA.G CMD.bCmd
tax
jmp (J.CMD.INT,x)
*--------------------------------------
* Internal Commands
* STARTPROC : intcmd = 0
*--------------------------------------
CMD.Exec.INT >LDYA L.CMD.INT
>STYA ZPPtr2
ldx #0
Cmd.INT.STARTPROC
>LDA.G CMD.PSFlags
and #$ff^S.PS.F.HOLD
sta (pData),y
.1 phx
>PUSHW ZPPtr2
>LDYA ZPCMDBuf
>SYSCALL StrCaseCmp
bcs .2
plx
jmp (J.CMD.INT,x) Found an internal Cmd...
.2 inc ZPPtr2
bne .3
inc ZPPtr2+1
.3 lda (ZPPtr2)
bne .2
inc ZPPtr2
bne .4
inc ZPPtr2+1
.4 plx
inx
inx
lda (ZPPtr2) Array Ending 0, must be an external Cmd....
bne .1
sec
clc
rts
*--------------------------------------
Cmd.INT.PWD ldy #S.PS.hPREFIX
@ -233,8 +231,9 @@ Cmd.INT.PWD ldy #S.PS.hPREFIX
>SYSCALL puts
rts
*--------------------------------------
Cmd.INT.CD lda (ZPCMDBuf)
bne .1
Cmd.INT.CD ldx #1
jsr Cmd.GetArgX
bcc .1
>LDYA L.ENV.HOME
>SYSCALL GetEnv
@ -242,33 +241,17 @@ Cmd.INT.CD lda (ZPCMDBuf)
>SYSCALL ExpandStr
bcs .9
bra .4
.1 ldy #0
.2 lda (ZPCMDBuf),y
tax
iny
lda (ZPCMDBuf),y
bne .2
cpx #'/'
beq .3
lda #'/'
sta (ZPCMDBuf),y
iny
lda #0
sta (ZPCMDBuf),y
.3 >LDYA ZPCMDBuf Get ARG0
>SYSCALL RealPath
.1 >SYSCALL RealPath
bcs .9
.4 >STYA ZPCMDBuf
txa
>STA.G CMD.hCmdLine
**** MEMORY LEAK : CMD.hCmdLine not released
ldy #1
lda (ZPCMDBuf),y
beq .8 we have '/'
@ -278,8 +261,7 @@ Cmd.INT.CD lda (ZPCMDBuf)
>SYSCALL STAT
bcs .9
ldy #CMD.Stat+S.STAT.P.TYPE
lda (pData),y
>LDA.G CMD.Stat+S.STAT.P.TYPE
cmp #$0F Directory ?
bne Cmd.Exec.ERRSYN
@ -296,26 +278,19 @@ Cmd.INT.CD lda (ZPCMDBuf)
ldy #S.PS.hPREFIX
sta (pPs),y
jsr SetPWD
clc
jmp SetPWD
.9 rts
*--------------------------------------
Cmd.Exec.ERRSYN lda #K.E.SYN
Cmd.Exec.ERRSYN lda #E.SYN
sec
rts
*--------------------------------------
Cmd.INT.STARTPROC
lda (ZPCMDBuf)
beq Cmd.Exec.ERRSYN
>LDA.G CMD.PSFlags
and #$ff^S.PS.F.HOLD
sta (pData),y
jmp Cmd.Exec.EXT
*--------------------------------------
Cmd.INT.SET lda (ZPCMDBuf)
bne Cmd.INT.SETVAR
Cmd.INT.SET >DEBUG
ldx #1
jsr Cmd.GetArgX
bcc Cmd.INT.SETVAR
* No arg, print all ENV
@ -365,42 +340,45 @@ Cmd.INT.SET lda (ZPCMDBuf)
.8 clc
.9 rts
*--------------------------------------
Cmd.INT.SETVAR cmp #'=' string is '=value' ?
Cmd.INT.SETVAR >STYA ZPPTR1
lda (ZPPTR1)
cmp #'=' string is '=value' ?
beq .99 syntax error
ldy #0
.1 iny
lda (ZPCMDBuf),y
lda (ZPPTR1),y
beq .3 no =, GetEnv
cmp #'=' ARGS contains =, PutEnv
bne .1
iny
lda (ZPCMDBuf),y
lda (ZPPTR1),y
beq .2 "VAR=" go UnsetEnv
>LDYA ZPCMDBuf String is VAR=VALUE...
>LDYA ZPPTR1 String is VAR=VALUE...
>SYSCALL PutEnv
rts
.2 dey String is "VAR=", Remove ending '='
lda #0
sta (ZPCMDBuf),y
sta (ZPPTR1),y
>LDYA ZPCMDBuf String is "VAR"...
>LDYA ZPPTR1 String is "VAR"...
>SYSCALL UnsetEnv
rts
* Print requested VAR
.3 >LDYA ZPCMDBuf
.3 >LDYA ZPPTR1
>SYSCALL GetEnv
bcs .8
>PUSHYA push value
>PUSHW ZPCMDBuf push name
>PUSHW ZPPTR1 push name
jsr Cmd.INT.SET.PRINT
.8 clc
@ -436,16 +414,21 @@ Cmd.INT.TIME clc
>SYSCALL puts
rts
*--------------------------------------
Cmd.INT.ECHO >PUSHW ZPCMDBuf
Cmd.INT.ECHO ldx #1
jsr Cmd.GetArgX
bcs .71
>PUSHYA
ldy #S.PS.hStdOut
lda (pPs),y
>SYSCALL fputs
>DEBUG
bcs .9
ldx #1
ldx #2
.1 phx
jsr Cmd.GetStrAtX
jsr Cmd.GetArgX
bcs .7
>PUSHYA
@ -458,11 +441,11 @@ Cmd.INT.ECHO >PUSHW ZPCMDBuf
plx
inx
bcc .1
clc
rts
.7 plx
>LDA.G bECHO.N
.71 >LDA.G bECHO.N
bmi .8
>PUSHBI 0
@ -643,150 +626,104 @@ CMD.NextCmdBufToken
bne .1
inc ZPCMDBuf+1
.1 tax
bne CMD.NextCmdBuf
bne CMD.NextCmdBufToken
rts
*--------------------------------------
CMD.AddToArgV >LDYA ZPArgVBuf
>STYA ZPPtr1
CMD.AddTokenToArgV
>LDYA ZPCmdBuf
CMD.AddYAToArgV >STYA ZPPtr1
>LDYA ZPArgVBuf
>STYA ZPPtr2
.1 lda (ZPPtr1) scan to end of argV
.1 lda (ZPPtr2) scan to end of argV
beq .6
.2 inc ZPPtr1
.2 inc ZPPtr2
bne .3
inc ZPPtr1+1
.3 lda (ZPPtr1)
inc ZPPtr2+1
.3 lda (ZPPtr2)
bne .2
inc ZPPtr1
inc ZPPtr2
bne .4
inc ZPPtr1+1
.4 lda (ZPPtr1)
inc ZPPtr2+1
.4 lda (ZPPtr2)
bne .2
.6 ldy #$ff
.7 iny
beq .9
lda (ZPCMDBuf),y
sta (ZPPtr1),y
* beq .9
lda (ZPPtr1),y
sta (ZPPtr2),y
bne .7 including str ending \0
iny
beq .9
sta (ZPPtr1),y arg[] ending \0
* beq .9
sta (ZPPtr2),y arg[] ending \0
clc
rts
.9 lda #K.E.BUF
.9 lda #E.BUF
sec
rts
*--------------------------------------
Cmd.InsertStrYAAtX
>STYA ZPPtr3 new str to insert
CMD.SearchInt >STYA ZPPtr2
ldx #0
jsr Cmd.GetStrAtX get ptr1=arg[x]
bcs .9
.1 phx
>STYA ZPPtr4 Save ptr where to insert
>PUSHW ZPPtr2
>LDYA ZPCMDBuf
>SYSCALL StrCaseCmp
bcs .2
ldy $ff
plx
>LDYA ZPPtr2
clc Found an internal Cmd...
rts
.1 iny get new str len
lda (ZPPtr3),y
.2 inc ZPPtr2
bne .3
inc ZPPtr2+1
.3 lda (ZPPtr2)
bne .2
inc ZPPtr2
bne .4
inc ZPPtr2+1
.4 plx
inx
inx
lda (ZPPtr2) Array Ending 0, must be an external Cmd....
bne .1
tya
sec +1
adc ZPPtr1
sta ZPPtr2
lda #0
adc ZPPtr1+1
lda ZPPtr2+1
ldy #0
.3 lda (ZPPtr1),y
sta (ZPPtr2),y
beq .4
iny
bne .3
.4 tay
beq .5
jsr Cmd.NextStrPtr1
>STYA ZPPtr1
jsr Cmd.NextStrPtr2
>STYA ZPPtr2
bra .3
.5 ldy #ff copy new str in hole created
.6 iny
lda (ZPPtr3),y
sta (ZPPtr4),y
bne .6
.8 clc
.9 rts
*--------------------------------------
Cmd.RemoveStrAtX
jsr Cmd.GetStrAtX
bcs .9
jsr Cmd.NextStrPtr1
>STYA ZPPtr2
.3 ldy #0
.4 lda (ZPPtr2),y
sta (ZPPtr1),y
beq .5
iny
bra .4
.5 tya we moved the ending \0
beq .8
sec
adc ZPPtr2
sta ZPPtr2
bcc .6
inc ZPPtr2+1
.6 tya
sec
adc ZPPtr1
sta ZPPtr1
bcc .3
inc ZPPtr2+1
bra .3
.8 rts
rts
*--------------------------------------
Cmd.GetStrAtX >LDYA ZPCMDBuf
Cmd.GetArgX >LDYA ZPArgVBuf
.1 dex
dex
bmi .8
>STYA ZPPtr1
jsr Cmd.NextStrPtr1
bcc .1
rts
.1 jsr Cmd.NextArgPtr1
bcs .9
dex
bpl .1
.8 >LDYA ZPPtr1
>LDYA ZPPtr1
clc
rts
.8 clc
.9 rts
*--------------------------------------
Cmd.NextStrPtr1 lda (ZPPtr1)
Cmd.NextArgPtr1 lda (ZPPtr1)
beq .9
.1 inc ZPPtr1
@ -796,31 +733,15 @@ Cmd.NextStrPtr1 lda (ZPPtr1)
bne .1
inc ZPPtr1
bne .8
bne .3
inc ZPPtr1+1
.3 lda (ZPPtr1)
beq .9
.8 clc
rts
.9 sec
rts
*--------------------------------------
Cmd.NextStrPtr2 lda (ZPPtr2)
beq .9
>LDYA ZPPtr2
>SYSCALL strlen
pha
tya
sec +1
adc ZPPtr2
tay
pla
adc ZPPtr2+1
* clc
rts
.9 sec
rts
*--------------------------------------

View File

@ -65,7 +65,8 @@ J.ESC .DA CL.BS left arrow
.DA HIS.GetPrev
.DA CL.NAK right arow
L.CMD.INT .DA CMD.INT
J.CMD.INT .DA Cmd.INT.CD
J.CMD.INT .DA Cmd.INT.STARTPROC
.DA Cmd.INT.CD
.DA Cmd.INT.DATE
.DA Cmd.INT.ECHO
.DA Cmd.INT.EXIT
@ -75,9 +76,8 @@ J.CMD.INT .DA Cmd.INT.CD
.DA Cmd.INT.READ
.DA Cmd.INT.SET
.DA Cmd.INT.SLEEP
.DA Cmd.INT.STARTPROC
.DA Cmd.INT.TIME
L.CMD.IOR .DA CMD.IOR
L.CMD.IO .DA CMD.IO
L.CSH.BOPS .DA CSH.BOPS
J.CSH.BOPS .DA CSH.BOPS.ADD
.DA CSH.BOPS.SUB
@ -198,7 +198,7 @@ CS.RUN >LDA.G bReadMode READ Command ?
jsr CMD.Parse
lda (ZPCMDBuf)
lda (ZPArgVBuf)
beq .10 Empty line
jsr HIS.Add
@ -285,7 +285,7 @@ CS.RUN.BATCH >SYSCALL GetChar
jsr CMD.Parse
lda (ZPCMDBuf)
lda (ZPArgVBuf)
beq .8
jsr CMD.Exec
@ -371,7 +371,7 @@ ENV.HOME .AZ "HOME"
*--------------------------------------
* https://www.tldp.org/LDP/abs/html/io-redirection.html
*--------------------------------------
CMD.IOR .AZ "&"
CMD.IO .AZ "&"
.AZ "|"
.AZ "<"
.AZ ">>"
@ -382,7 +382,8 @@ CMD.IOR .AZ "&"
.AZ "2>"
.HS 00
*--------------------------------------
CMD.INT .AZ "CD"
CMD.INT .AZ "STARTPROC"
.AZ "CD"
.AZ "DATE"
.AZ "ECHO"
.AZ "EXIT"
@ -392,7 +393,6 @@ CMD.INT .AZ "CD"
.AZ "READ"
.AZ "SET"
.AZ "SLEEP"
.AZ "STARTPROC"
.AZ "TIME"
.HS 00
*--------------------------------------
@ -424,6 +424,7 @@ bSecureRead .BS 1
Sleep .BS 4
CMD.hCmdLine .BS 1
CMD.bCmd .BS 1
CMD.hArgVBuf .BS 1
CMD.PSFlags .BS 1

View File

@ -356,7 +356,7 @@ K.InsDrv >STYA ZPPtr1
clc
rts
.9 lda #K.E.OOM
.9 lda #E.OOM
sec
rts
*--------------------------------------
@ -405,7 +405,7 @@ BIN.RelExe ldy #H.BIN.T+1
cmp /H.BIN.T.DRV65
beq .1
lda #K.E.IBIN
lda #E.IBIN
sec
rts

View File

@ -358,7 +358,7 @@ CORE.GetPS ldy #0
cpy #K.PS.MAX
bne .1
.9 lda #K.E.NSP
.9 lda #E.NSP
* sec
rts
*--------------------------------------

View File

@ -148,7 +148,7 @@ K.MKDev >STYA .1+1
cpx #K.IRQDEV.MAX*2
bne .2
.9 lda #K.E.OOH
.9 lda #E.OOH
* sec
.99 rts

View File

@ -372,7 +372,7 @@ K.SetEnv.I jsr K.UnsetEnv.I
clc
rts
.99 lda #K.E.ENVF
.99 lda #E.ENVF
* sec
rts
*/--------------------------------------

View File

@ -58,7 +58,7 @@ K.LoadFile clc
inc
bne .1
.10 lda #K.E.FTB
.10 lda #E.FTB
.11 bra .99
.1 jsr K.GetMem

View File

@ -218,7 +218,7 @@ Mem.AddSlot >STYA ZPMemMgrTmp1 save req size
.98 pla discard new Mem.Free HI
.99 lda #K.E.OOM
.99 lda #E.OOM
sec
rts
*--------------------------------------

View File

@ -64,7 +64,7 @@ PS.CreateChild ldx #0
cpx #K.PS.MAX
bne .1
lda #K.E.OOH
lda #E.OOH
sec
rts

View File

@ -1022,7 +1022,7 @@ K.FClose jsr PFT.CheckNodeA
stz Nod.Table.hFD,x
jmp K.Close
.9 lda #K.E.INVH
.9 lda #E.INVH
sec
K.FClose.RTS rts
*/--------------------------------------
@ -1144,9 +1144,9 @@ K.FSeek jsr PFT.CheckNodeA
.9 rts
.98 lda #K.E.SYN
.98 lda #E.SYN
.HS 2C bit abs
.99 lda #K.E.FTB
.99 lda #E.FTB
sec
rts
*/--------------------------------------
@ -1285,7 +1285,7 @@ STDIO.NewHFileYAX
bne .1
pla
lda #K.E.OOH
lda #E.OOH
* sec
rts
@ -1326,7 +1326,7 @@ STDIO.GetHFile tay
rts
STDIO.GetHFile.9
lda #K.E.INVH
lda #E.INVH
sec
rts
*--------------------------------------

View File

@ -386,7 +386,7 @@ K.realpath >STYA ZPPtr1
.89 >LDYAI K.Buf256
jmp K.NewStr
.90 lda #K.E.SYN
.90 lda #E.SYN
sec
rts
*--------------------------------------

View File

@ -20,9 +20,14 @@ ERR.Codes .DA #MLI.E.IO
.DA #MLI.E.LOCKED
.DA #MLI.E.OPEN
*--------------------------------------
.DA #K.E.OOM
.DA #K.E.OOH
.DA #K.E.SYN
.DA #E.OOM
.DA #E.OOH
.DA #E.INVH
.DA #E.BUF
.DA #E.SYN
.DA #E.ENVF
.DA #E.IBIN
.DA #E.FTB
*--------------------------------------
ERR.Count .EQ *-ERR.Codes
*--------------------------------------
@ -45,7 +50,12 @@ ERR.Messages >PSTR "I/O Error"
*--------------------------------------
>PSTR "Out Of Memory"
>PSTR "Out Of Memory Handle"
>PSTR "Invalid Handle"
>PSTR "Buffer Overflow"
>PSTR "Syntax Error"
>PSTR "Env Is Full"
>PSTR "Invalid BIN format"
>PSTR "File Too Big"
*--------------------------------------
>PSTR "Unknown Error"
*--------------------------------------