Kernel 0.9.1 : Code reorganization & move to CSTR : SHELL

This commit is contained in:
Rémy GIBERT 2017-09-13 08:17:46 +02:00
parent 46918f88f0
commit 83b1abc4df
5 changed files with 123 additions and 131 deletions

Binary file not shown.

Binary file not shown.

View File

@ -166,11 +166,8 @@ Cmd.Exec.EXT pla Discard CMD len
>PUSHW L.STAT >PUSHW L.STAT
>PUSHW ZPPtr1 >PUSHW ZPPtr1
>SYSCALL STAT >SYSCALL STAT
bcs .99 bcc .3
bra Cmd.Exec.Done
>LDYAI UsrBuf256
>STYA ZPPtr1
bra .3
.1 >LDYA L.ENV.PATH push ENVNAME=PATH for search .1 >LDYA L.ENV.PATH push ENVNAME=PATH for search
>SYSCALL GetEnv.YA get value for ENV=PATH >SYSCALL GetEnv.YA get value for ENV=PATH
@ -183,7 +180,6 @@ Cmd.Exec.EXT pla Discard CMD len
lda (pPs),y lda (pPs),y
>SYSCALL GetMemPtr.A >SYSCALL GetMemPtr.A
jsr Cmd.Exec.Search jsr Cmd.Exec.Search
bcs .99 bcs .99
.3 lda STAT+S.STAT.P.TYPE .3 lda STAT+S.STAT.P.TYPE
@ -382,9 +378,9 @@ Cmd.Exec.STARTPROC
*-------------------------------------- *--------------------------------------
Cmd.Exec.SET lda (ZPPTR2) Cmd.Exec.SET lda (ZPPTR2)
bne Cmd.Exec.SETVAR bne Cmd.Exec.SETVAR
* No arg, print all ENV * No arg, print all ENV
ldy #S.PS.hENV ldy #S.PS.hENV
lda (pPs),y lda (pPs),y
>SYSCALL GetMemPtr.A >SYSCALL GetMemPtr.A
@ -394,11 +390,11 @@ Cmd.Exec.SET lda (ZPPTR2)
beq .8 Ending 0 ? beq .8 Ending 0 ?
ldy #$ff ldy #$ff
.2 iny .2 iny
lda (ZPPTR1),y lda (ZPPTR1),y
bne .2 bne .2
tya tya
sec sec
adc ZPPTR1 adc ZPPTR1
@ -430,7 +426,7 @@ Cmd.Exec.SET lda (ZPPTR2)
bra .1 bra .1
.8 clc .8 clc
.9 rts .9 rts
Cmd.Exec.SETVAR ldy #0 Cmd.Exec.SETVAR ldy #0

View File

@ -64,7 +64,6 @@ L.MSG.CSHERR .DA MSG.CSHERR
L.ENV.PATH .DA ENV.PATH L.ENV.PATH .DA ENV.PATH
L.ENV.PWD .DA ENV.PWD L.ENV.PWD .DA ENV.PWD
L.ENV.PS1 .DA ENV.PS1 L.ENV.PS1 .DA ENV.PS1
L.CMD .DA CMD
L.TIME .DA TIME L.TIME .DA TIME
L.STAT .DA STAT L.STAT .DA STAT
L.FMT.DATE .DA FMT.DATE L.FMT.DATE .DA FMT.DATE
@ -101,25 +100,25 @@ CS.INIT jsr SetPWD
jsr CMD.Init jsr CMD.Init
bcs .9 bcs .9
lda (pPs) lda (pPs)
ora #S.PS.F.EVENT Now accept events ora #S.PS.F.EVENT Now accept events
sta (pPs) sta (pPs)
ldy #S.PS.ARGC ldy #S.PS.ARGC
lda (pPs),y lda (pPs),y
beq .1 no arg, continue starting interactive beq .1 no arg, continue starting interactive
jmp CSH.Init jmp CSH.Init
.1 jsr HIS.Init .1 jsr HIS.Init
bcs .9 bcs .9
>LDYA L.MSG.GREETINGS >LDYA L.MSG.GREETINGS
>SYSCALL PrintF.YA >SYSCALL PrintF.YA
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CS.RUN >LDA.G bReadMode READ Command ? CS.RUN >LDA.G bReadMode READ Command ?
bne CS.RUN.READ bne CS.RUN.READ
@ -135,53 +134,51 @@ CS.RUN >LDA.G bReadMode READ Command ?
>SYSCALL GetChar >SYSCALL GetChar
bcs .8 bcs .8
.13 jsr CheckSleep .13 jsr CheckSleep
bne .8 bne .8
>LDA.G CSH.hBuf batch mode ? >LDA.G CSH.hBuf batch mode ?
beq .10 beq .10
jmp CS.RUN.BATCH
* Interactive Mode
jmp CS.RUN.BATCH
* Interactive Mode
.10 >LDA.G hCmdBuf Get the buffer .10 >LDA.G hCmdBuf Get the buffer
>SYSCALL GetMemPtr.A >SYSCALL GetMemPtr.A
>STYA ZPCMDBuf >STYA ZPCMDBuf
lda #0 reset it lda #0 reset it
sta (ZPCMDBuf) sta (ZPCMDBuf)
>STA.G bSecureRead Clear password mode >STA.G bSecureRead Clear password mode
.12 jsr PrintPrompt .12 jsr PrintPrompt
bcs CS.RUN.EXIT.RTS bcs CS.RUN.EXIT.RTS
.1 >SYSCALL Sleep .1 >SYSCALL Sleep
>SYSCALL GetChar >SYSCALL GetChar
bcs .1 no char bcs .1 no char
jsr CS.CHARIN jsr CS.CHARIN
>LDA.G bCmdBufexec Something to execute ? >LDA.G bCmdBufexec Something to execute ?
bpl .1 bpl .1
jsr Cmd.Parse jsr Cmd.Parse
>LDA.G CmdBuflen >LDA.G CmdBuflen
beq .12 Empty line beq .12 Empty line
jsr HIS.Add jsr HIS.Add
jsr Cmd.Exec jsr Cmd.Exec
ldy #S.PS.RC ldy #S.PS.RC
sta (pPs),y sta (pPs),y
>LDA.G bExit >LDA.G bExit
bne CS.RUN.EXIT bne CS.RUN.EXIT
.8 clc .8 clc
rts rts
@ -192,21 +189,21 @@ CS.RUN.EXIT.RTS rts
CS.RUN.READ >LDA.G hCmdBuf Get the buffer CS.RUN.READ >LDA.G hCmdBuf Get the buffer
>SYSCALL GetMemPtr.A >SYSCALL GetMemPtr.A
>STYA ZPCMDBuf >STYA ZPCMDBuf
lda #0 reset it lda #0 reset it
sta (ZPCMDBuf) sta (ZPCMDBuf)
.1 >SYSCALL Sleep .1 >SYSCALL Sleep
>SYSCALL GetChar >SYSCALL GetChar
bcs .1 no char bcs .1 no char
jsr CS.CHARIN jsr CS.CHARIN
>LDA.G bCmdBufexec >LDA.G bCmdBufexec
bpl .1 bpl .1
>PUSHW ZPCMDBuf >PUSHW ZPCMDBuf
lda #CMD.VarName lda #CMD.VarName
clc clc
adc pData adc pData
@ -219,17 +216,17 @@ CS.RUN.READ >LDA.G hCmdBuf Get the buffer
*-------------------------------------- *--------------------------------------
CS.RUN.BATCH jsr CSH.Run CS.RUN.BATCH jsr CSH.Run
bcs .9 bcs .9
>LDA.G bCmdBufexec >LDA.G bCmdBufexec
bpl .8 Empty line....nothing to do.... bpl .8 Empty line....nothing to do....
jsr Cmd.Parse jsr Cmd.Parse
lda (ZPCMDBuf) lda (ZPCMDBuf)
beq .8 beq .8
jsr Cmd.Exec jsr Cmd.Exec
.8 ldy #S.PS.RC .8 ldy #S.PS.RC
sta (pPs),y sta (pPs),y
clc clc
@ -240,43 +237,43 @@ CS.RUN.BATCH jsr CSH.Run
lda #0 lda #0
sec sec
rts rts
.7 pha .7 pha
ldy #CSH.BufPtr+1 ldy #CSH.BufPtr+1
>PUSHB (pData),y >PUSHB (pData),y
dey dey
>PUSHB (pData),y >PUSHB (pData),y
>LDYA L.MSG.CSHERR >LDYA L.MSG.CSHERR
>SYSCALL PrintF.YA >SYSCALL PrintF.YA
jsr CSH.RestorePtr jsr CSH.RestorePtr
.90 jsr CSH.GetChar .90 jsr CSH.GetChar
bcs .92 bcs .92
>SYSCALL PutChar.A >SYSCALL PutChar.A
.91 jsr CSH.GetNextChar .91 jsr CSH.GetNextChar
bcs .92 bcs .92
cmp #13 cmp #13
beq .92 beq .92
>SYSCALL PutChar.A >SYSCALL PutChar.A
bra .91 bra .91
.92 pla .92 pla
bra .99 bra .99
.98 lda #0 .98 lda #0
.99 ldy #S.PS.RC .99 ldy #S.PS.RC
sta (pPs),y sta (pPs),y
pha pha
ldy #bExitOnEOF ldy #bExitOnEOF
lda (pData),y lda (pData),y
asl CS if bExitOnEOF asl CS if bExitOnEOF
pla pla
rts rts
*-------------------------------------- *--------------------------------------
@ -301,12 +298,12 @@ CS.DOEVENT lda (pEvent)
rts rts
*-------------------------------------- *--------------------------------------
CS.CHARIN tax Save Char CS.CHARIN tax Save Char
>LDA.G CSH.hBuf Batch mode ? >LDA.G CSH.hBuf Batch mode ?
beq .10 beq .10
* Batch Mode * Batch Mode
cpx #3 test Ctrl-c cpx #3 test Ctrl-c
bne .12 bne .12
>LDA.G bExitOnEOF >LDA.G bExitOnEOF
>STA.G bExit >STA.G bExit
clc clc
@ -314,26 +311,26 @@ CS.CHARIN tax Save Char
.12 cpx #19 test Ctrl-s .12 cpx #19 test Ctrl-s
bne .8 bne .8
lda #$80 lda #$80
>STA.G bPause >STA.G bPause
clc clc
rts rts
* interactive mode * interactive mode
.10 >LDA.G hCmdBuf .10 >LDA.G hCmdBuf
>SYSCALL GetMemPtr.A >SYSCALL GetMemPtr.A
>STYA ZPCMDBuf >STYA ZPCMDBuf
>LDA.G bEscMode >LDA.G bEscMode
beq .13 beq .13
cpx #'[' cpx #'['
beq .8 beq .8
lda #0 lda #0
sta (pData),y Y=bEscMode sta (pData),y Y=bEscMode
txa txa
ldx EscChars ldx EscChars
@ -342,10 +339,10 @@ CS.CHARIN tax Save Char
dex dex
bne .17 bne .17
bra .8 bra .8
.18 lda EscAscii,x .18 lda EscAscii,x
tax tax
.13 cpx #$20 .13 cpx #$20
bcs .1 bcs .1
jsr CS.CHARIN.CTRL jsr CS.CHARIN.CTRL
@ -358,12 +355,12 @@ CS.CHARIN tax Save Char
rts rts
.2 >LDA.G CmdBuflen .2 >LDA.G CmdBuflen
cmp #CmdLine.MAX cmp #CmdLine.MAX
beq .8 beq .8
pha pha
inc inc
sta (pData),y sta (pData),y
txa txa
@ -372,10 +369,10 @@ CS.CHARIN tax Save Char
>LDA.G bSecureRead >LDA.G bSecureRead
bne .8 bne .8
txa txa
>SYSCALL PutChar.A >SYSCALL PutChar.A
.8 clc .8 clc
rts rts
*-------------------------------------- *--------------------------------------
@ -385,12 +382,12 @@ CS.CHARIN.CTRL cpx #13 CR
>SYSCALL PutChar.A >SYSCALL PutChar.A
lda #10 lda #10
>SYSCALL PutChar.A >SYSCALL PutChar.A
lda #$ff lda #$ff
>STA.G bCmdBufexec >STA.G bCmdBufexec
clc clc
rts rts
.10 cpx #$1B esc .10 cpx #$1B esc
bne .11 bne .11
@ -405,33 +402,33 @@ CS.CHARIN.CTRL cpx #13 CR
jsr CmdLine.CLR jsr CmdLine.CLR
clc clc
rts rts
.1 cpx #8 BS (left arrow) .1 cpx #8 BS (left arrow)
bne .2 bne .2
jsr CmdLine.DEL jsr CmdLine.DEL
clc clc
rts rts
.2 cpx #10 LF (down arrow) .2 cpx #10 LF (down arrow)
bne .3 bne .3
jsr HIS.GetNext jsr HIS.GetNext
clc clc
rts rts
.3 cpx #11 VT (up arrow) .3 cpx #11 VT (up arrow)
bne .4 bne .4
jsr HIS.GetPrev jsr HIS.GetPrev
clc clc
rts rts
.4 cpx #21 NAK (right arrow) .4 cpx #21 NAK (right arrow)
bne .8 bne .8
clc clc
rts rts
.8 clc .8 clc
rts rts
*-------------------------------------- *--------------------------------------
@ -479,30 +476,30 @@ PrintPrompt >LDYA L.ENV.PS1
CmdLine.CLR ldy #0 CmdLine.CLR ldy #0
.1 lda (ZPCMDBuf),y .1 lda (ZPCMDBuf),y
beq .9 beq .9
lda #8 lda #8
sta (pData),y sta (pData),y
iny iny
bne .1 bne .1
jsr CmdLine.SET jsr CmdLine.SET
lda #0 lda #0
sta (ZPCMDBuf) sta (ZPCMDBuf)
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CmdLine.DEL >LDA.G CmdBuflen CmdLine.DEL >LDA.G CmdBuflen
beq .9 beq .9
dec dec
sta (pData),y sta (pData),y
tay tay
lda #0 lda #0
sta (pData),y sta (pData),y
lda #8 lda #8
>SYSCALL PutChar.A >SYSCALL PutChar.A
.9 rts .9 rts
@ -557,7 +554,6 @@ FMT.TIME >CSTR "%H:%M:%S (%I:%M:%S%p)"
*-------------------------------------- *--------------------------------------
EscChars >PSTR "DBAC" EscChars >PSTR "DBAC"
EscAscii .HS 04080A0B15 EscAscii .HS 04080A0B15
CMD .BS 256
TIME .BS S.TIME TIME .BS S.TIME
STAT .BS S.STAT STAT .BS S.STAT
bStartProc .BS 1 bStartProc .BS 1

View File

@ -37,7 +37,7 @@ A2osX.PrtDrv.Go ldy #S.DEV.ROM.JMP
iny iny
lda (pDev),y lda (pDev),y
sta .8+2 sta .8+2
.8 jsr $ffff .8 jsr $ffff
A2osX.PrtDrv.Go.Cmd A2osX.PrtDrv.Go.Cmd
.BS 1 .BS 1
@ -68,18 +68,18 @@ A2osX.PrtDrv.GetDev
sta K.SP.PARAMS+1 sta K.SP.PARAMS+1
rts rts
A2osX.PrtDrv.Cnt A2osX.PrtDrv.Cnt
.HS 03030301030101010404 .HS 03030301030101010404
*-------------------------------------- *--------------------------------------
DevMgr.NUL.Code .DA .1 STATUS DevMgr.NUL.Code .DA .1 STATUS
.DA A2osX.BADCALL READBLOCK .DA A2osX.BADCALL READBLOCK
.DA A2osX.BADCALL WRITEBLOCK .DA A2osX.BADCALL WRITEBLOCK
.DA A2osX.BADCALL FORMAT .DA A2osX.BADCALL FORMAT
.DA A2osX.BADCALL CONTROL .DA A2osX.BADCALL CONTROL
.DA A2osX.BADCALL INIT .DA A2osX.BADCALL INIT
.DA A2osX.BADCALL OPEN .DA A2osX.BADCALL OPEN
.DA A2osX.BADCALL CLOSE .DA A2osX.BADCALL CLOSE
.DA A2osX.BADCALL READ .DA A2osX.BADCALL READ
.DA .8 WRITE .DA .8 WRITE
.8 clc .8 clc
rts rts
*-------------------------------------- *--------------------------------------
@ -94,14 +94,14 @@ DevMgr.NUL.Code .DA .1 STATUS
.DA #0 .DA #0
.DA $0900 .DA $0900
*-------------------------------------- *--------------------------------------
DevMgr.SYS.Code .DA .1 STATUS DevMgr.SYS.Code .DA .1 STATUS
.DA A2osX.BADCALL READBLOCK .DA A2osX.BADCALL READBLOCK
.DA A2osX.BADCALL WRITEBLOCK .DA A2osX.BADCALL WRITEBLOCK
.DA A2osX.BADCALL FORMAT .DA A2osX.BADCALL FORMAT
.DA DevMgr.SYS.Control .DA DevMgr.SYS.Control
.DA A2osX.BADCALL INIT .DA A2osX.BADCALL INIT
.DA DevMgr.SYS.Open .DA DevMgr.SYS.Open
.DA A2osX.BADCALL CLOSE .DA A2osX.BADCALL CLOSE
.DA DevMgr.SYS.Read .DA DevMgr.SYS.Read
.DA DevMgr.SYS.Write .DA DevMgr.SYS.Write
*-------------------------------------- *--------------------------------------
@ -118,25 +118,25 @@ DevMgr.SYS.Code .DA .1 STATUS
*-------------------------------------- *--------------------------------------
DevMgr.SYS.Open stz DevMgr.SYS.CH DevMgr.SYS.Open stz DevMgr.SYS.CH
stz DevMgr.SYS.CV stz DevMgr.SYS.CV
ldx #0 ldx #0
ldy #0 ldy #0
.1 lda DevMgr.SYS.TITLE,y .1 lda DevMgr.SYS.TITLE,y
beq .2 beq .2
jsr DevMgr.SYS.SetCharAtYX jsr DevMgr.SYS.SetCharAtYX
iny iny
bne .1 bne .1
.2 lda #$20 .2 lda #$20
jsr DevMgr.SYS.SetCharAtYX jsr DevMgr.SYS.SetCharAtYX
iny iny
cpy #80 cpy #80
bne .2 bne .2
jsr DevMgr.SYS.Home jsr DevMgr.SYS.Home
lda #1 lda #1
sta A2osX.SCRNDEVS+1 fall in Control sta A2osX.SCRNDEVS+1 fall in Control
*-------------------------------------- *--------------------------------------
@ -154,18 +154,18 @@ DevMgr.SYS.Control
DevMgr.SYS.Read lda A2osX.ASCREEN DevMgr.SYS.Read lda A2osX.ASCREEN
cmp #2 is SYS active? cmp #2 is SYS active?
bne .9 bne .9
lda OPENAPPLE lda OPENAPPLE
bmi .9 Open apple key, not for us... bmi .9 Open apple key, not for us...
lda KBD lda KBD
bpl .9 bpl .9
sta KBDSTROBE sta KBDSTROBE
and #$7F and #$7F
clc clc
rts rts
.9 lda #0 Error = no event .9 lda #0 Error = no event
sec sec
rts rts
@ -181,21 +181,21 @@ DevMgr.SYS.Write
jsr DevMgr.SYS.SetCharAtYX jsr DevMgr.SYS.SetCharAtYX
jsr DevMgr.SYS.FSOut jsr DevMgr.SYS.FSOut
bra .8 bra .8
.1 cmp #10 .1 cmp #10
bne .2 bne .2
jsr DevMgr.SYS.LF jsr DevMgr.SYS.LF
bra .8 bra .8
.2 cmp #13 .2 cmp #13
bne .3 bne .3
jsr DevMgr.SYS.CR jsr DevMgr.SYS.CR
bra .8 bra .8
.3 ora #$20 .3 ora #$20
jsr DevMgr.SYS.SetCharAtYX jsr DevMgr.SYS.SetCharAtYX
jsr DevMgr.SYS.FSOut jsr DevMgr.SYS.FSOut
.8 ply .8 ply
plx plx
clc clc
@ -205,10 +205,10 @@ DevMgr.SYS.FSOut
lda DevMgr.SYS.CH lda DevMgr.SYS.CH
cmp #79 cmp #79
bne .1 bne .1
stz DevMgr.SYS.CH stz DevMgr.SYS.CH
bra DevMgr.SYS.LF bra DevMgr.SYS.LF
.1 inc DevMgr.SYS.CH .1 inc DevMgr.SYS.CH
rts rts
*-------------------------------------- *--------------------------------------
@ -219,7 +219,7 @@ DevMgr.SYS.CR jsr DevMgr.SYS.ClrEOL
DevMgr.SYS.LF ldx DevMgr.SYS.CV DevMgr.SYS.LF ldx DevMgr.SYS.CV
cpx #23 cpx #23
beq DevMgr.SYS.Scroll beq DevMgr.SYS.Scroll
inc DevMgr.SYS.CV inc DevMgr.SYS.CV
rts rts
*-------------------------------------- *--------------------------------------
DevMgr.SYS.ClrEOL DevMgr.SYS.ClrEOL
@ -259,7 +259,7 @@ DevMgr.SYS.Scroll
sta CLRWRITEAUX sta CLRWRITEAUX
sta CLRREADAUX sta CLRREADAUX
plp plp
ldy #39 ldy #39
.3 lda (ZPDRV+2),y .3 lda (ZPDRV+2),y
sta (ZPDRV),y sta (ZPDRV),y
@ -280,7 +280,7 @@ DevMgr.SYS.ClrLineAtX
lda #$A0 lda #$A0
ldy #39 ldy #39
.1 sta SETWRITEAUX .1 sta SETWRITEAUX
sta (ZPDRV),y sta (ZPDRV),y
sta CLRWRITEAUX sta CLRWRITEAUX
@ -293,15 +293,15 @@ DevMgr.SYS.ClrLineAtX
rts rts
*-------------------------------------- *--------------------------------------
DevMgr.SYS.Home ldx #23 DevMgr.SYS.Home ldx #23
.1 jsr DevMgr.SYS.ClrLineAtX .1 jsr DevMgr.SYS.ClrLineAtX
dex dex
bne .1 bne .1
stz DevMgr.SYS.CH stz DevMgr.SYS.CH
lda #1 lda #1
sta DevMgr.SYS.CV sta DevMgr.SYS.CV
rts rts
*-------------------------------------- *--------------------------------------
DevMgr.SYS.SetCharAtYX DevMgr.SYS.SetCharAtYX
@ -310,9 +310,9 @@ DevMgr.SYS.SetCharAtYX
cmp #$5F cmp #$5F
bcs .1 bcs .1
and #$3F and #$3F
.1 php .1 php
phy phy
pha pha
lda DevMgr.SYS.BASEL,x lda DevMgr.SYS.BASEL,x
@ -324,14 +324,14 @@ DevMgr.SYS.SetCharAtYX
tay tay
bcs .2 bcs .2
sta SETWRITEAUX sta SETWRITEAUX
.2 pla .2 pla
sta (ZPDRV),y sta (ZPDRV),y
sta CLRWRITEAUX sta CLRWRITEAUX
ply ply
plp plp
rts rts
*-------------------------------------- *--------------------------------------
DevMgr.SYS.CH .BS 1 DevMgr.SYS.CH .BS 1