Kernel version 0.9 : KERNEL.S.ENV.txt, SHELL.....bugfix in ENV & CMD line params

This commit is contained in:
Rémy GIBERT 2017-04-03 08:01:52 +02:00
parent 0d5e4282f2
commit e868cab63d
6 changed files with 112 additions and 54 deletions

View File

@ -8,6 +8,29 @@ AUTO 6
* Y,A -> Command line (formatted & not empty) * Y,A -> Command line (formatted & not empty)
*-------------------------------------- *--------------------------------------
Cmd.ExecYA stz Cmd.Exec.Mode Cmd.ExecYA stz Cmd.Exec.Mode
pha
phy
lda #'<'
>SYSCALL PutCA
ply
pla
pha
phy
>SYSCALL PPrintFYA
lda #'>'
>SYSCALL PutCA
lda #13
>SYSCALL PutCA
lda #10
>SYSCALL PutCA
ply
pla
Cmd.ExecYA.1 >SYSCALL ExpandPStrYA Cmd.ExecYA.1 >SYSCALL ExpandPStrYA
>STYA ZPPtr1 >STYA ZPPtr1
phx phx
@ -49,6 +72,17 @@ Cmd.ExecYA.1 >SYSCALL ExpandPStrYA
pla pla
>SYSCALL FreeMemA >SYSCALL FreeMemA
lda #'|'
>SYSCALL PutCA
>LDYA L.ARGS
>SYSCALL PPrintFYA
lda #'|'
>SYSCALL PutCA
lda #13
>SYSCALL PutCA
lda #10
>SYSCALL PutCA
>LDYA L.CMDS >LDYA L.CMDS
>STYA ZPPtr2 >STYA ZPPtr2
@ -63,15 +97,17 @@ Cmd.ExecYA.1 >SYSCALL ExpandPStrYA
tay tay
.2 lda CMD,y .2 lda CMD,y
.3 cmp (ZPPtr2),y cmp (ZPPtr2),y
bne .4 bne .4
dey dey
bne .2 bne .2
jsr .5 Found an internal Cmd... jsr .5 Found an internal Cmd...
bcs .31 bcs .3
lda #0 lda #0
.31 ldy #S.PS.RC
.3 ldy #S.PS.RC
sta (pPS),y sta (pPS),y
rts rts
@ -86,7 +122,21 @@ Cmd.ExecYA.1 >SYSCALL ExpandPStrYA
inc ZPPtr2+1 inc ZPPtr2+1
bra .1 bra .1
.5 jmp (J.INTCMDS,x) .5 phx
lda #'{'
>SYSCALL PutCA
>LDYA L.ARGS
>SYSCALL PPrintFYA
lda #'}'
>SYSCALL PutCA
lda #13
>SYSCALL PutCA
lda #10
>SYSCALL PutCA
plx
jmp (J.INTCMDS,x)
*-------------------------------------- *--------------------------------------
Cmd.Exec.EXT ldy #1 Cmd.Exec.EXT ldy #1
lda CMD,y lda CMD,y
@ -344,7 +394,7 @@ Cmd.Exec.SET lda ARGS
>PUSHW ZPPTR1 Push name >PUSHW ZPPTR1 Push name
>LDYA L.MSG.PRINTENV >LDYA L.MSG.PRINTENV
>SYSCALL CPrintFYA >SYSCALL PPrintFYA
bcs .9 bcs .9
lda ZPPTR2 lda ZPPTR2
@ -392,7 +442,7 @@ Cmd.Exec.SETVAR tax
>PUSHYA push value >PUSHYA push value
>PUSHW L.ARGS push name >PUSHW L.ARGS push name
>LDYA L.MSG.PRINTENV >LDYA L.MSG.PRINTENV
>SYSCALL CPrintFYA >SYSCALL PPrintFYA
.8 clc .8 clc
.9 rts .9 rts

View File

@ -38,7 +38,7 @@ ERR.Print >PUSHA Save EC for PrintF
.8 >PUSHW ZPPTR1 .8 >PUSHW ZPPTR1
>LDYA L.MSG.ERROR >LDYA L.MSG.ERROR
>SYSCALL CPrintFYA >SYSCALL PPrintFYA
rts rts
*-------------------------------------- *--------------------------------------
MAN MAN

View File

@ -173,7 +173,9 @@ HIS.SetBuf jsr CmdBuffer.CLR
dey dey
bpl .1 bpl .1
jmp CmdBuffer.PRINT >LDYA pData
>SYSCALL PPrintfYA
rts
*-------------------------------------- *--------------------------------------
HIS.Quit ldy #hCmdHistory HIS.Quit ldy #hCmdHistory
lda (pData),y lda (pData),y

View File

@ -51,7 +51,7 @@ TXT.ReadFile >PUSHWI UsrBuf256+1
>PUSHW pData >PUSHW pData
>LDYA L.MSG.ECHO >LDYA L.MSG.ECHO
>SYSCALL CPrintFYA >SYSCALL PPrintFYA
.8 clc .8 clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------

View File

@ -90,7 +90,7 @@ CS.INIT.INTERACTIVE
bcs .9 bcs .9
>LDYA L.MSG.GREETINGS >LDYA L.MSG.GREETINGS
>SYSCALL CPrintFYA >SYSCALL PPrintFYA
lda (pPs) lda (pPs)
ora #S.PS.F.EVENT Now accept events ora #S.PS.F.EVENT Now accept events
@ -394,12 +394,21 @@ PrintPrompt >LDYA L.ENV.PS1
pla pla
>SYSCALL FreeMemA >SYSCALL FreeMemA
>LDYA L.MSG.PROMPT >LDYA L.MSG.PROMPT
>SYSCALL CPrintFYA >SYSCALL PPrintFYA
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
* Remove extra SPACE & comment * Remove extra SPACE & comment
*-------------------------------------- *--------------------------------------
CmdBuffer.Normalize CmdBuffer.Normalize
>LDYA pData
>SYSCALL PPrintFYA
lda #'\'
>SYSCALL PutCA
lda #13
>SYSCALL PutCA
lda #10
>SYSCALL PutCA
>LDYA pData >LDYA pData
>STYA ZPPtr1 >STYA ZPPtr1
@ -438,8 +447,18 @@ CmdBuffer.Normalize
bne .3 no more space, add next word... bne .3 no more space, add next word...
.8 tya .8 tya
sta (pData) sta (pData)
.9 rts
.9 >LDYA pData
>SYSCALL PPrintFYA
lda #'%'
>SYSCALL PutCA
lda #13
>SYSCALL PutCA
lda #10
>SYSCALL PutCA
rts
CmdBuffer.Normalize.Next CmdBuffer.Normalize.Next
txa txa
@ -451,15 +470,6 @@ CmdBuffer.Normalize.Next
.1 lda (ZPPtr1) .1 lda (ZPPtr1)
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
CmdBuffer.PRINT ldy #0
.1 iny
lda (pData),y
>SYSCALL PutCA
tya
cmp (pData)
bne .1
rts
*--------------------------------------
CmdBuffer.CLR jsr CmdBuffer.DEL CmdBuffer.CLR jsr CmdBuffer.DEL
bne CmdBuffer.CLR bne CmdBuffer.CLR
rts rts
@ -495,13 +505,13 @@ CMDS >PSTR "CD"
>PSTR "TIME" >PSTR "TIME"
.HS 00 .HS 00
*-------------------------------------- *--------------------------------------
MSG.GREETINGS >CSTR "\r\nA2osX-Shell\r\n\r\n" MSG.GREETINGS >PSTR "\r\nA2osX-Shell\r\n\r\n"
MSG.PROMPT >CSTR "%S$ " MSG.PROMPT >PSTR "%S$ "
MSG.ECHO >CSTR ">%S\r\n" MSG.ECHO >PSTR ">%S\r\n"
MSG.ERROR >CSTR "Err:%S [%h]\r\n" MSG.ERROR >PSTR "Err:%S [%h]\r\n"
MSG.PRINTENV >PSTR "%S=%S\r\n"
FMT.DATE >PSTR "%A, %B %d %Y" FMT.DATE >PSTR "%A, %B %d %Y"
FMT.TIME >PSTR "%H:%M:%S (%I:%M:%S%p)" FMT.TIME >PSTR "%H:%M:%S (%I:%M:%S%p)"
MSG.PRINTENV >CSTR "%S=%S\r\n"
*-------------------------------------- *--------------------------------------
.INB /A2OSX.SRC/X.ERRORS.S .INB /A2OSX.SRC/X.ERRORS.S
*-------------------------------------- *--------------------------------------

View File

@ -383,39 +383,35 @@ ENV.SysVarsJmp .DA ENV.SysVarsArgs
.DA ENV.SysVarsPID .DA ENV.SysVarsPID
.DA ENV.SysVarsCPID .DA ENV.SysVarsCPID
*-------------------------------------- *--------------------------------------
ENV.SysVarsArgs ENV.SysVarsArgs lda #1
jsr K.GetArgA
lda #1
jsr K.GetArgA Trash Ptr1
bcs ENV.SysVarsExit2 bcs ENV.SysVarsExit2
ldx KrnBuf256 >STYA ZPPtr3
.1 lda (ZPPtr1)
bcs ENV.SysVarsExit
ldy #0 .1 lda (ZPPtr3)
beq ENV.SysVarsExit2
.2 iny .2 jsr ENV.AppendPtr3ToBuf
inx lda (ZPPtr3)
beq ENV.SysVarsExit make sure not overlapping buf 256 sec
adc ZPPtr3
lda (ZPPtr1),y sta ZPPtr3
sta KrnBuf256,x
tya
cmp (ZPPtr1)
bne .2
adc ZPPtr1 CS from beq .2
sta ZPPtr1
bcc .3 bcc .3
inc ZPPtr1+1
.3 lda #' '
inx
beq ENV.SysVarsExit make sure not overlapping buf 256
sta KrnBuf256,x
bra .1
inc ZPPtr3+1
.3 lda (ZPPtr3)
beq ENV.SysVarsExit2
ldx KrnBuf256
inx
beq ENV.SysVarsExit2 make sure not overlapping buf 256
stx KrnBuf256
lda #' '
sta KrnBuf256,x
bra .2
*--------------------------------------
ENV.SysVarsArgC jsr K.GetArgC Trash Ptr1 ENV.SysVarsArgC jsr K.GetArgC Trash Ptr1
bra ENV.SysVarsA bra ENV.SysVarsA