A2osX/SBIN/SHELL.S.CMD.txt

467 lines
8.1 KiB
Plaintext
Raw Normal View History

2015-10-19 20:35:00 +00:00
PR#3
PREFIX /A2OSX.SRC
NEW
INC 1
AUTO 6
.LIST OFF
*--------------------------------------
EXEC.CMD stz hFullCmd
stz hEnvPath
ldy #hCmdLine
lda (pData),y
>PUSHA
2015-10-19 20:35:00 +00:00
>PUSHBI $20 Push SEP=' '
>PUSHBI 0 Push 0 for getting CMD & ARGS
>SYSCALL SYS.PStrGetTkn
bcs .99
sta hExecCmd
stx hExecArgs
>SYSCALL SYS.GetMemPtrA
>STYA ZPPtr1
ldx #0
stz ExecCmdIdx
2016-03-13 21:53:55 +00:00
stz ExecCmdMode
2015-10-19 20:35:00 +00:00
.1 lda CMDS,x
2016-03-13 21:53:55 +00:00
beq .6
2015-10-19 20:35:00 +00:00
cmp (ZPPtr1)
bne .5
phx
ldy #0
.2 iny
inx
lda (ZPPtr1),y
cmp #'a'
bcc .3
cmp #'z'+1
2015-10-19 20:35:00 +00:00
bcs .3
eor #$20 to Uppercase
.3 cmp CMDS,x
bne .4
tya
cmp (ZPPtr1)
bne .2
plx
2016-03-13 21:53:55 +00:00
ldx ExecCmdIdx
2015-10-19 20:35:00 +00:00
jsr EXEC.CMD.INT
jmp EXEC.CMD.ClnUp
.4 plx
.5 txa
sec
adc CMDS,x
tax
inc ExecCmdIdx
inc ExecCmdIdx
bra .1
2016-03-13 21:53:55 +00:00
.6 jsr EXEC.CMD.EXT
jmp EXEC.CMD.ClnUp
2015-10-19 20:35:00 +00:00
.99 rts
*--------------------------------------
2016-03-13 21:53:55 +00:00
EXEC.CMD.ClnUp pha
php
lda hFullCmd
beq .1
>SYSCALL SYS.FreeMemA
.1 lda hEnvPath
beq .2
>SYSCALL SYS.FreeMemA
.2 lda hExecArgs
beq .3
>SYSCALL SYS.FreeMemA
.3 lda hExecCmd
beq .8
>SYSCALL SYS.FreeMemA
.8 plp
pla
rts
*--------------------------------------
EXEC.CMD.INT jmp (J.INTCMDS,x)
*--------------------------------------
* ZPPtr1 = hExecCmd
*--------------------------------------
2015-10-19 20:35:00 +00:00
EXEC.CMD.EXT ldy #1
lda (ZPPtr1),y
cmp #'/'
bne .1
>LDYA ZPPtr1
>SYSCALL SYS.NewPStrYA
bra .10
2015-10-19 20:35:00 +00:00
.1 >LDYA L.ENV.PATH push ENVNAME=PATH
>SYSCALL SYS.GetEnvVarYA get value for ENV=PATH
2015-10-19 20:35:00 +00:00
bcc .12
2016-03-13 21:53:55 +00:00
jmp .9
2015-10-19 20:35:00 +00:00
.12 sta hEnvPath
2015-10-19 20:35:00 +00:00
>PUSHB hExecCmd
>PUSHB hEnvPath
>SYSCALL SYS.FileSearch
bcc .10
>PUSHB hExecCmd
ldy #S.PS.hPREFIX
lda (pPs),y
>PUSHA
>SYSCALL SYS.FileSearch
2016-03-13 21:53:55 +00:00
.10 bcs .9
2015-10-19 20:35:00 +00:00
sta hFullCmd
2016-06-07 06:10:18 +00:00
>SYSCALL SYS.GetMemPtrA
>SYSCALL SYS.MLIGetFileInfoYA
2016-03-13 21:53:55 +00:00
bcs .9
2015-10-19 20:35:00 +00:00
>STYA ZPPTR1
ldy #1 Get File Type
lda (ZPPTR1),y
cmp #$04 TXT File ?
bne .2
2015-10-19 20:35:00 +00:00
lda hFullCmd
jsr OpenTxtFileA
2016-03-13 21:53:55 +00:00
bcs .9
2015-10-19 20:35:00 +00:00
lda hExecArgs
beq .11
2016-06-23 20:18:29 +00:00
>SYSCALL SYS.GetMemPtrA
>SYSCALL SYS.NewPStrYA
2016-03-13 21:53:55 +00:00
bcs .9
.11 ldy #hInputArgs
sta (pData),y
2016-03-13 21:53:55 +00:00
bra .9
2015-10-19 20:35:00 +00:00
.2 cmp #$06 BIN File ?
bne .4
lda hFullCmd
ldy hExecArgs
2016-03-13 21:53:55 +00:00
bit ExecCmdMode
bmi .3 startproc
>SYSCALL SYS.ExecProcessNewEnvYA
2016-03-13 21:53:55 +00:00
bra .9
2016-03-13 21:53:55 +00:00
.3 >SYSCALL SYS.CreateProcessYA
bra.9
.4 cmp #$ff SYS File ?
bne .5
bra *
.5 lda #SYSMGR.ERRSYN
2016-03-13 21:53:55 +00:00
sec
.9 rts
2015-10-19 20:35:00 +00:00
*--------------------------------------
EXEC.CMD.CD lda hExecArgs
bne EXEC.CMD.CD.C
ldy #S.PS.hPREFIX
lda (pPs),y
2016-06-07 06:10:18 +00:00
>SYSCALL SYS.GetMemPtrA
>SYSCALL SYS.PSTROutYA
lda #13
>SYSCALL SYS.COutA
2015-10-19 20:35:00 +00:00
clc
rts
EXEC.CMD.CD.C >SYSCALL SYS.GetMemPtrA
>STYA ZPPTR2
ldy #S.PS.hPREFIX
lda (pPs),y
>SYSCALL SYS.GetMemPtrA
>STYA ZPPTR1
>PUSHWI MLI.MAXPATH+1 Get a buffer for new PATH
>PUSHBI 0 no particular Option
>SYSCALL SYS.GetMem
bcs .99
>STYA ZPPTR3
stx hNEWPATH
lda #0
sta (ZPPTR3)
ldy #1
lda (ZPPTR2),y
cmp #'/' Full Path?
beq .3
cmp #'.' ".." ?
bne .2
lda (ZPPTR2)
cmp #2
bne .97
iny
lda (ZPPTR2),y
cmp #'.'
bne .97
lda (ZPPTR1)
tay
.1 dey
beq .97
lda (ZPPTR1),y
cmp #'/'
bne .1
tya
sta (ZPPTR3)
.11 lda (ZPPTR1),y
sta (ZPPTR3),y
dey
bne .11
bra .4
.97 lda #SYSMGR.ERRSYN
.98 pha
lda hNEWPATH
>SYSCALL SYS.FreeMemA
pla
sec
.99 rts
.2 >PUSHW ZPPTR1
>PUSHW ZPPTR3
>LIBCALL hLIBSTR,LIBSTR.STRCPYP
.3 >PUSHW ZPPTR2
>PUSHW ZPPTR3
>LIBCALL hLIBSTR,LIBSTR.STRCATP
lda (ZPPTR3)
tay
lda #'/' Ending with '/'?
cmp (ZPPTR3),y
beq .4
iny
sta (ZPPTR3),y
tya
sta (ZPPTR3)
2016-06-24 06:02:32 +00:00
.4 >LDYA ZPPTR3
>SYSCALL SYS.CheckPrefixYA
2015-10-19 20:35:00 +00:00
bcs .98
ldy #S.PS.hPREFIX
lda (pPs),y
pha
lda hNEWPATH
sta (pPs),y
pla
>SYSCALL SYS.FreeMemA
clc
rts
*--------------------------------------
2016-03-13 21:53:55 +00:00
EXEC.CMD.STARTPROC
lda hExecCmd
>SYSCALL SYS.FreeMemA
stz hExecCmd
lda hExecArgs
beq .9
>PUSHA
>PUSHBI $20 Push SEP=' '
>PUSHBI 0 Push 0 for getting CMD & ARGS
>SYSCALL SYS.PStrGetTkn
bcs .99
phx
sta hExecCmd
>SYSCALL SYS.GetMemPtrA
>STYA ZPPTR1
lda hExecArgs
>SYSCALL SYS.FreeMemA
pla
sta hExecArgs
sec
ror ExecCmdMode
jmp EXEC.CMD.EXT
.9 lda #SYSMGR.ERRSYN
sec
.99 rts
*--------------------------------------
2015-10-19 20:35:00 +00:00
EXEC.CMD.SET lda hExecArgs
bne EXEC.CMD.SETVAR
2015-10-19 20:35:00 +00:00
ldy #S.PS.hENV
lda (pPs),y
>SYSCALL SYS.GetMemPtrA
>STYA ZPPTR1
.1 lda (ZPPTR1)
beq .8 Ending 0 ?
>LDYA ZPPTR1
>SYSCALL SYS.PSTROutYA
lda #13
>SYSCALL SYS.COutA
2015-10-19 20:35:00 +00:00
lda ZPPTR1
sec
adc (ZPPTR1) Add len+1 to PTR
sta ZPPTR1
bcc .1
inc ZPPTR1
bra .1
.8 clc
rts
EXEC.CMD.SETVAR >PUSHA Push Cmd Line
2015-10-19 20:35:00 +00:00
>PUSHBI $3D Push SEP='='
>PUSHBI 0 Push Token IDX
>SYSCALL SYS.PStrGetTkn
bcc .3
lda #SYSMGR.ERRSYN
rts
.3 sta hVarName
stx hVarValue
txa
beq .31
2015-10-19 20:35:00 +00:00
>PUSHB hVarValue
>PUSHB hVarName
>SYSCALL SYS.SetEnvVarH
jmp .97
.31 lda hExecArgs
2015-10-19 20:35:00 +00:00
>SYSCALL SYS.GetMemPtrA
>STYA ZPPTR1
lda (ZPPTR1)
tay
lda (ZPPTR1),y
cmp #'='
bne .4
lda hVarName
>SYSCALL SYS.DelEnvVarA
bra .97
2015-10-19 20:35:00 +00:00
.4 lda hVarName
2016-06-07 06:10:18 +00:00
>SYSCALL SYS.GetMemPtrA
>SYSCALL SYS.GetEnvVarYA
2015-10-19 20:35:00 +00:00
bcs .97
sta hVarValue
lda hVarName
2016-06-07 06:10:18 +00:00
>SYSCALL SYS.GetMemPtrA
>SYSCALL SYS.PSTROutYA
2015-10-19 20:35:00 +00:00
lda #'='
>SYSCALL SYS.COutA
2015-10-19 20:35:00 +00:00
lda hVarValue
2016-06-07 06:10:18 +00:00
>SYSCALL SYS.GetMemPtrA
>SYSCALL SYS.PSTROutYA
lda #13
>SYSCALL SYS.COutA
clc
2015-10-19 20:35:00 +00:00
.97 php
pha
lda hVarValue
beq .98
>SYSCALL SYS.FreeMemA
.98 lda hVarName
>SYSCALL SYS.FreeMemA
pla
php
rts
*--------------------------------------
EXEC.CMD.DATE >SYSCALL SYS.MLIGetTime
bcs .9
>PUSHW DATELO
>LIBCALL hLIBSTR,LIBSTR.PRINTDATE
lda #13
>SYSCALL SYS.COutA
2015-10-19 20:35:00 +00:00
clc
.9 rts
*--------------------------------------
EXEC.CMD.TIME >SYSCALL SYS.MLIGetTime
bcs .9
>PUSHW TIMELO
>LIBCALL hLIBSTR,LIBSTR.PRINTTIME
lda #13
>SYSCALL SYS.COutA
2015-10-19 20:35:00 +00:00
clc
.9 rts
*--------------------------------------
EXEC.CMD.ECHO lda hExecArgs
beq .98
>SYSCALL SYS.ExpandPStrA
bcs .99
pha
2016-06-07 06:10:18 +00:00
>SYSCALL SYS.GetMemPtrA
>SYSCALL SYS.PSTROutYA
lda #13
>SYSCALL SYS.COutA
2015-10-19 20:35:00 +00:00
pla
>SYSCALL SYS.FreeMemA
clc
rts
.98 lda #SYSMGR.ERRSYN
sec
.99 rts
*--------------------------------------
EXEC.CMD.TYPE lda hExecArgs
beq .98
2016-06-07 06:10:18 +00:00
>SYSCALL SYS.GetMemPtrA
>SYSCALL SYS.LoadFileYA
2015-10-19 20:35:00 +00:00
bcs .99
>STYA ZPPTR2 store file len
phx
txa
>SYSCALL SYS.GetMemPtrA
>STYA ZPPTR1
.1 lda ZPPTR2
bne .2
lda ZPPTR2+1
beq .3
dec ZPPTR2+1
.2 dec ZPPTR2
lda (ZPPTR1)
>SYSCALL SYS.COutA
2015-10-19 20:35:00 +00:00
inc ZPPTR1
bne .1
inc ZPPTR1+1
bra .1
.3 pla
>SYSCALL SYS.FreeMemA
clc
rts
.98 lda #SYSMGR.ERRSYN
sec
.99 rts
*--------------------------------------
EXEC.CMD.READ
clc
rts
*--------------------------------------
EXEC.CMD.PAUSE ldy #bPause
lda #$80
sta (pData),y
clc
rts
*--------------------------------------
2015-10-19 20:35:00 +00:00
EXEC.CMD.EXIT ldy #bEXIT
lda #$FF
sta (pData),y
clc
rts
*--------------------------------------
MAN
SAVE SBIN/SHELL.S.CMD
LOAD SBIN/SHELL.S
ASM