A2osX/BIN/SHELL.S.CMD.txt

314 lines
5.4 KiB
Plaintext
Raw Normal View History

NEW
2018-11-17 17:17:13 +00:00
PREFIX
AUTO 4,1
2015-10-19 20:35:00 +00:00
.LIST OFF
*--------------------------------------
2019-01-28 16:33:30 +00:00
* Read From InputBuf
2018-11-09 15:59:04 +00:00
*--------------------------------------
2019-01-28 16:33:30 +00:00
CMD.Get >LDYA ZPInputBufPtr
>STYA ZPInputBufPtrBak
2018-11-26 10:40:19 +00:00
2019-01-28 16:33:30 +00:00
lda (ZPInputBufPtr)
beq .9
2018-11-26 10:40:19 +00:00
2019-01-28 16:33:30 +00:00
ldx #0 not in "
ldy #0
2018-11-26 06:57:11 +00:00
2019-01-28 16:33:30 +00:00
.1 lda (ZPInputBufPtr),y
beq .7
cmp #C.CR
beq .6
2019-01-28 16:33:30 +00:00
cmp #'"'
bne .2
txa
2019-01-28 16:33:30 +00:00
eor #$80 toggle " switch
tax
2018-12-06 11:40:30 +00:00
2019-01-28 16:33:30 +00:00
lda #'"'
bra .5
2018-11-26 16:36:55 +00:00
2019-01-28 16:33:30 +00:00
.2 cmp #';'
bne .5
2018-11-26 16:36:55 +00:00
txa
2019-01-28 16:33:30 +00:00
beq .6
2018-11-26 16:36:55 +00:00
2019-01-28 16:33:30 +00:00
lda #';'
2018-11-26 16:36:55 +00:00
2019-01-28 16:33:30 +00:00
.5 sta (ZPCLBuf),y
iny
cpy #CL.MAX
bne .1
2018-11-26 16:36:55 +00:00
2019-01-28 16:33:30 +00:00
lda #E.SYN Line Too long !!!
* sec
2018-11-26 16:36:55 +00:00
rts
2019-01-28 16:33:30 +00:00
.6 sec skip CR or ;
.HS 90 BCC
2019-01-28 16:33:30 +00:00
.7 clc
2018-11-26 16:36:55 +00:00
2019-01-28 16:33:30 +00:00
tya
adc ZPInputBufPtr
sta ZPInputBufPtr
bcc .8
inc ZPInputBufPtr+1
2019-01-23 16:26:48 +00:00
2019-01-28 16:33:30 +00:00
.8 lda #0
sta (ZPCLBuf),y
2019-01-23 16:26:48 +00:00
2019-01-28 16:33:30 +00:00
tya
>STA.G CL.Len
lda #$ff
>STA.G CL.bExec
2019-01-21 06:52:04 +00:00
2019-01-28 16:33:30 +00:00
clc
2018-11-28 14:58:42 +00:00
rts
2019-01-28 16:33:30 +00:00
.9 lda #C.EOF
2018-11-28 11:39:33 +00:00
sec
rts
*--------------------------------------
2019-01-28 16:33:30 +00:00
* in:
* ZPCLBuf : CString command line
* out:
* ZPArgVBuf :
* /path/excmd\0 arg1\0 arg2\0 ... \0
* - or -
* intcmd\0 arg1\0 arg2\0 ... \0
*--------------------------------------
2019-01-30 16:23:00 +00:00
CL.Parse >STZ.G CORE.IntCmd
2019-01-28 16:33:30 +00:00
lda #S.PS.F.HOLD+S.PS.F.DUPENV
2019-01-30 16:23:00 +00:00
>STA.G CORE.PSFlags
2019-01-28 16:33:30 +00:00
>PUSHW ZPCLBuf
>LDYA ZPCLBuf
>STYA ZPCLBufPtr
2015-10-19 20:35:00 +00:00
2019-01-28 16:33:30 +00:00
>SYSCALL Args2ArgV
lda #0
2019-01-28 16:33:30 +00:00
sta (ZPArgVBuf)
2018-11-20 15:54:49 +00:00
2019-01-28 16:33:30 +00:00
lda (ZPCLBufPtr)
beq .8
2019-01-23 16:26:48 +00:00
2019-01-28 16:33:30 +00:00
.1 cmp #'#' comment ?
beq .8 yes, ignore remaining
2019-01-30 16:23:00 +00:00
>LDA.G CORE.IntCmd
2019-01-28 16:33:30 +00:00
bne .3 we already have Cmd, go check args
2016-08-17 06:25:58 +00:00
2018-11-20 15:54:49 +00:00
ldy #1
2019-01-28 16:33:30 +00:00
lda (ZPCLBufPtr),y only one char ?
bne .2
2016-08-17 06:25:58 +00:00
2019-01-28 16:33:30 +00:00
lda (ZPCLBufPtr)
cmp #'.' leading dot ?
bne .2
2016-08-17 06:25:58 +00:00
2019-01-30 16:23:00 +00:00
>LDA.G CORE.PSFlags yes, child process will run in same ENV
2019-01-28 16:33:30 +00:00
and #$ff^S.PS.F.DUPENV
sta (pData),y
bra .6 and skip this token
2018-10-11 15:23:06 +00:00
2019-01-28 16:33:30 +00:00
.2 jsr CL.CheckCmd
bcc .6 success, skip token, already added by CheckCmd
2018-10-15 06:25:40 +00:00
rts
2018-11-28 11:39:33 +00:00
2019-01-28 16:33:30 +00:00
.3 jsr CL.CheckIO
bcc .7 IO token & related args processed
tay an error ?
bne .9 yes...I/O error...
2018-11-28 11:39:33 +00:00
2019-01-28 16:33:30 +00:00
jsr CL.AddCLBufPtrToArgV no...add as an arg
bcs .9
2018-11-28 11:39:33 +00:00
2019-01-28 16:33:30 +00:00
.6 jsr CL.NextCLToken
.7 lda (ZPCLBufPtr)
bne .1
2019-01-23 16:26:48 +00:00
2019-01-28 16:33:30 +00:00
.8 clc
2019-01-23 16:26:48 +00:00
2019-01-28 16:33:30 +00:00
.9 rts
2019-01-23 16:26:48 +00:00
*--------------------------------------
2019-01-28 16:33:30 +00:00
* ZPCLBuf-> argv[] (formatted & not empty)
*--------------------------------------
CL.CheckCmd ldy #$ff
2018-09-17 06:16:45 +00:00
2019-01-28 16:33:30 +00:00
.1 iny
lda (ZPCLBufPtr),y
beq .2
cmp #'/'
bne .1
2019-01-28 16:33:30 +00:00
bra .4
2019-01-28 16:33:30 +00:00
.2 >PUSHW ZPCLBufPtr
2019-01-30 16:23:00 +00:00
>LDYA L.CORE.INT
2019-01-28 16:33:30 +00:00
jsr Lookup no / found, search internal...
bcs .4 not internal, search PATH
2018-09-17 06:16:45 +00:00
2019-01-28 16:33:30 +00:00
phx
plx
bne .3
2018-09-17 06:16:45 +00:00
2019-01-30 16:23:00 +00:00
>LDA.G CORE.PSFlags if STARTPROC, skip keyword...
2019-01-28 16:33:30 +00:00
and #$ff^S.PS.F.HOLD
sta (pData),y ...and toggle S.PS.F.HOLD flag
clc
2019-01-28 16:33:30 +00:00
.9 rts
2018-11-19 16:15:16 +00:00
2019-01-28 16:33:30 +00:00
.3 jsr CL.AddYAToArgV X unmodified
2018-11-09 13:29:23 +00:00
bcs .9
2019-01-28 16:33:30 +00:00
txa
2019-01-30 16:23:00 +00:00
>STA.G CORE.IntCmd
2018-09-17 06:16:45 +00:00
2018-10-15 06:25:40 +00:00
clc
rts
2018-11-28 21:37:18 +00:00
2019-01-28 16:33:30 +00:00
.4 >LDYA ZPCLBufPtr
jsr CL.AddYAToArgV
2018-11-28 21:37:18 +00:00
2019-01-28 16:33:30 +00:00
lda #$ff
2019-01-30 16:23:00 +00:00
>STA.G CORE.IntCmd
2018-11-28 21:37:18 +00:00
clc
2019-01-28 16:33:30 +00:00
CL.CheckCmd.RTS
2018-11-15 15:04:14 +00:00
rts
2018-11-10 14:30:09 +00:00
*--------------------------------------
2019-01-28 16:33:30 +00:00
CL.CheckIO >PUSHW ZPCLBufPtr
>LDYA L.CL.IO
jsr Lookup
bcs .9 not a IO token...should be an arg....
phx
2018-11-26 06:57:11 +00:00
2019-01-28 16:33:30 +00:00
jsr CL.NextCLToken skip this IO token
2018-11-26 06:57:11 +00:00
2019-01-28 16:33:30 +00:00
plx
jmp (J.CL.IO,x)
2018-11-26 06:57:11 +00:00
2019-01-28 16:33:30 +00:00
.9 lda #0
2018-11-26 06:57:11 +00:00
rts
*--------------------------------------
2019-01-30 16:23:00 +00:00
CL.IO.AMP >LDA.G CORE.PSFlags
2019-01-28 16:33:30 +00:00
and #$ff^S.PS.F.HOLD
sta (pData),y
2018-11-26 06:57:11 +00:00
clc
rts
2019-01-28 16:33:30 +00:00
CL.IO.IN lda #O.RDONLY+O.TEXT
jsr CL.IO.Open
2018-11-26 06:57:11 +00:00
bcs .9
2019-01-28 16:33:30 +00:00
jsr IO.Set.In
2018-11-09 15:59:04 +00:00
2019-01-28 16:33:30 +00:00
jsr CL.NextCLToken skip arg
2018-11-26 06:57:11 +00:00
clc
2019-01-28 16:33:30 +00:00
.9 rts
2019-01-28 16:33:30 +00:00
CL.IO.OUTA
CL.IO.1OUTA lda #O.WRONLY+O.APPEND+O.CREATE+O.TEXT
bra CL.IO.OUT.1
CL.IO.OUT
CL.IO.1OUT lda #O.WRONLY+O.TRUNC+O.CREATE+O.TEXT
2019-01-28 16:33:30 +00:00
CL.IO.OUT.1 jsr CL.IO.Open
bcs .9
jsr IO.Set.Out
2019-01-28 16:33:30 +00:00
jsr CL.NextCLToken skip arg
clc
.9 rts
2019-01-28 16:33:30 +00:00
CL.IO.2OUTA lda #O.WRONLY+O.APPEND+O.CREATE+O.TEXT
bra CL.IO.2OUT.1
CL.IO.2OUT lda #O.WRONLY+O.TRUNC+O.CREATE+O.TEXT
2019-01-28 16:33:30 +00:00
CL.IO.2OUT.1 jsr CL.IO.Open
bcs .9
2019-01-28 16:33:30 +00:00
jsr IO.Set.Err
2019-01-28 16:33:30 +00:00
jsr CL.NextCLToken skip arg
clc
2019-01-28 16:33:30 +00:00
.9 rts
2018-11-24 22:25:33 +00:00
*--------------------------------------
2019-01-28 16:33:30 +00:00
CL.IO.Open pha
lda (ZPCLBufPtr)
beq .9 no arg left....
2019-01-28 16:33:30 +00:00
>PUSHWI 0 Aux type
>PUSHBI S.FI.T.TXT ftype
pla
2019-01-28 16:33:30 +00:00
>PUSHA flags
>LDYA ZPCLBufPtr
>SYSCALL fopen
rts
2019-01-28 16:33:30 +00:00
.9 pla
lda #E.CSYN
sec
rts
2018-11-10 17:43:20 +00:00
*--------------------------------------
2019-01-28 16:33:30 +00:00
CL.NextCLToken
lda (ZPCLBufPtr)
inc ZPCLBufPtr
bne .1
inc ZPCLBufPtr+1
.1 tax
bne CL.NextCLToken
2018-11-24 18:20:48 +00:00
rts
*--------------------------------------
2019-01-28 16:33:30 +00:00
CL.AddCLBufPtrToArgV
>LDYA ZPCLBufPtr
CL.AddYAToArgV >STYA ZPPtr1
>LDYA ZPArgVBuf
>STYA ZPPtr2
2018-10-16 15:48:03 +00:00
2019-01-28 16:33:30 +00:00
.1 lda (ZPPtr2) scan to end of argV
beq .6
2018-10-19 06:13:04 +00:00
2019-01-28 16:33:30 +00:00
.2 inc ZPPtr2
bne .3
2019-01-28 16:33:30 +00:00
inc ZPPtr2+1
.3 lda (ZPPtr2)
bne .2
2018-10-21 20:54:07 +00:00
2019-01-28 16:33:30 +00:00
inc ZPPtr2
bne .4
inc ZPPtr2+1
.4 lda (ZPPtr2)
bne .2
2019-01-28 16:33:30 +00:00
.6 ldy #$ff
2019-01-28 16:33:30 +00:00
.7 iny
* beq .9
lda (ZPPtr1),y
2019-01-28 16:33:30 +00:00
sta (ZPPtr2),y
bne .7 including str ending \0
2018-11-19 16:15:16 +00:00
iny
2019-01-28 16:33:30 +00:00
* beq .9
sta (ZPPtr2),y arg[] ending \0
2018-11-19 16:15:16 +00:00
clc
rts
2019-01-28 16:33:30 +00:00
.9 lda #E.BUF
sec
2018-11-19 16:15:16 +00:00
rts
*--------------------------------------
2015-10-19 20:35:00 +00:00
MAN
2018-11-22 16:39:41 +00:00
SAVE USR/SRC/BIN/SHELL.S.CMD
LOAD USR/SRC/BIN/SHELL.S
2015-10-19 20:35:00 +00:00
ASM