mirror of https://github.com/A2osX/A2osX.git
Kernel 0.92
This commit is contained in:
parent
bcfa618bfe
commit
7abd289f48
|
@ -515,6 +515,6 @@ BUF.GetSelLen ldy #SelEnd
|
|||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/BIN/BIN/EDIT.S.BUF
|
||||
LOAD USR/SRC/BIN/BIN/EDIT.S
|
||||
SAVE USR/SRC/BIN/EDIT.S.BUF
|
||||
LOAD USR/SRC/BIN/EDIT.S
|
||||
ASM
|
||||
|
|
|
@ -679,6 +679,6 @@ Prompt.Save cmp #3 Ctrl-C
|
|||
.9 jmp Ctrl.Q
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/BIN/BIN/EDIT.S.CTRL
|
||||
LOAD USR/SRC/BIN/BIN/EDIT.S
|
||||
SAVE USR/SRC/BIN/EDIT.S.CTRL
|
||||
LOAD USR/SRC/BIN/EDIT.S
|
||||
ASM
|
||||
|
|
|
@ -561,6 +561,6 @@ SCRN.scrollDn ldy #CurX
|
|||
.9 jmp Ctrl.Q
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/BIN/BIN/EDIT.S.SCRN
|
||||
LOAD USR/SRC/BIN/BIN/EDIT.S
|
||||
SAVE USR/SRC/BIN/EDIT.S.SCRN
|
||||
LOAD USR/SRC/BIN/EDIT.S
|
||||
ASM
|
||||
|
|
|
@ -438,9 +438,9 @@ DecTmpCount lda TmpCount
|
|||
ora #$ff make sure NZ
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
.INB USR/SRC/BIN/BIN/EDIT.S.BUF
|
||||
.INB USR/SRC/BIN/BIN/EDIT.S.CTRL
|
||||
.INB USR/SRC/BIN/BIN/EDIT.S.SCRN
|
||||
.INB USR/SRC/BIN/EDIT.S.BUF
|
||||
.INB USR/SRC/BIN/EDIT.S.CTRL
|
||||
.INB USR/SRC/BIN/EDIT.S.SCRN
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
SEQ.DETECT .AZ "Querying terminal capabilities...\e[999;999H\e[6n"
|
||||
|
@ -534,5 +534,5 @@ DS.END
|
|||
.ED
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/BIN/BIN/EDIT.S
|
||||
SAVE USR/SRC/BIN/EDIT.S
|
||||
ASM
|
||||
|
|
|
@ -54,16 +54,18 @@ L.MSG5 .DA MSG5
|
|||
L.MSG.FREE .DA MSG.FREE
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
CS.INIT lda #0
|
||||
>STA.G MEM.COUNT Skip SLOT 0
|
||||
|
||||
>LEA.G MemStat
|
||||
>SYSCALL GetMemStat
|
||||
|
||||
clc
|
||||
CS.INIT clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN >SYSCALL GetChar
|
||||
CS.RUN >LEA.G MemStat
|
||||
>SYSCALL GetMemStat
|
||||
|
||||
>LDYAI Mem.Table+S.MEM
|
||||
>STYA ZPPTR1
|
||||
|
||||
CS.RUN.LOOP >SLEEP
|
||||
|
||||
>SYSCALL GetChar
|
||||
bcs .13
|
||||
|
||||
cmp #3 Ctrl-C ?
|
||||
|
@ -80,11 +82,7 @@ CS.RUN >SYSCALL GetChar
|
|||
.12 >STZ.G bSTOP
|
||||
|
||||
.13 >LDA.G bSTOP
|
||||
bne .8
|
||||
|
||||
>INC.G MEM.COUNT
|
||||
>SYSCALL GetMemByID
|
||||
>STYA ZPPTR1
|
||||
bne CS.RUN.LOOP
|
||||
|
||||
>LDA.G LINE.COUNT
|
||||
bne .1
|
||||
|
@ -99,12 +97,19 @@ CS.RUN >SYSCALL GetChar
|
|||
|
||||
.2 jsr CS.RUN.PRINTMEM
|
||||
|
||||
>LDA.G MEM.COUNT
|
||||
lda ZPPTR1
|
||||
clc
|
||||
adc #S.MEM
|
||||
sta ZPPTR1
|
||||
bcc .3
|
||||
|
||||
inc ZPPTR1+1
|
||||
|
||||
.3 >INC.G MEM.COUNT
|
||||
>CMP.G MemStat+S.MSTAT.MLast
|
||||
beq CS.RUN.FOOTER
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
bra CS.RUN.LOOP
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
|
|
|
@ -3,307 +3,707 @@ PREFIX
|
|||
AUTO 4,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
* Read From InputBuf
|
||||
*--------------------------------------
|
||||
CMD.Get >LDYA ZPInputBufPtr
|
||||
>STYA ZPInputBufPtrBak
|
||||
|
||||
lda (ZPInputBufPtr)
|
||||
beq .9
|
||||
|
||||
ldx #0 not in "
|
||||
|
||||
ldy #0
|
||||
|
||||
.1 lda (ZPInputBufPtr),y
|
||||
beq .7
|
||||
|
||||
cmp #C.CR
|
||||
beq .6
|
||||
|
||||
cmp #'"'
|
||||
bne .2
|
||||
|
||||
txa
|
||||
eor #$80 toggle " switch
|
||||
tax
|
||||
|
||||
lda #'"'
|
||||
bra .5
|
||||
|
||||
.2 cmp #';'
|
||||
bne .5
|
||||
|
||||
txa
|
||||
beq .6
|
||||
|
||||
lda #';'
|
||||
|
||||
.5 sta (ZPCLBuf),y
|
||||
iny
|
||||
cpy #CL.MAX
|
||||
bne .1
|
||||
|
||||
lda #E.SYN Line Too long !!!
|
||||
* sec
|
||||
rts
|
||||
|
||||
.6 sec skip CR or ;
|
||||
.HS 90 BCC
|
||||
|
||||
.7 clc
|
||||
|
||||
tya
|
||||
adc ZPInputBufPtr
|
||||
sta ZPInputBufPtr
|
||||
bcc .8
|
||||
inc ZPInputBufPtr+1
|
||||
|
||||
.8 lda #0
|
||||
sta (ZPCLBuf),y
|
||||
|
||||
tya
|
||||
>STA.G CL.Len
|
||||
lda #$ff
|
||||
>STA.G CL.bExec
|
||||
|
||||
CMD.STARTPROC
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #C.EOF
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
* in:
|
||||
* ZPCLBuf : CString command line
|
||||
* out:
|
||||
* ZPArgVBuf :
|
||||
* /path/excmd\0 arg1\0 arg2\0 ... \0
|
||||
* - or -
|
||||
* intcmd\0 arg1\0 arg2\0 ... \0
|
||||
*--------------------------------------
|
||||
CL.Parse >STZ.G CORE.IntCmd
|
||||
CMD.SHIFT lda #1
|
||||
|
||||
lda #S.PS.F.HOLD+S.PS.F.DUPENV
|
||||
>STA.G CORE.PSFlags
|
||||
|
||||
>PUSHW ZPCLBuf
|
||||
>LDYA ZPCLBuf
|
||||
>STYA ZPCLBufPtr
|
||||
|
||||
>SYSCALL Args2ArgV
|
||||
CMD.SHIFTA >SYSCALL ArgV
|
||||
bcs .8
|
||||
|
||||
lda #0
|
||||
sta (ZPArgVBuf)
|
||||
|
||||
lda (ZPCLBufPtr)
|
||||
beq .8
|
||||
|
||||
.1 cmp #'#' comment ?
|
||||
beq .8 yes, ignore remaining
|
||||
|
||||
>LDA.G CORE.IntCmd
|
||||
bne .3 we already have Cmd, go check args
|
||||
|
||||
ldy #1
|
||||
lda (ZPCLBufPtr),y only one char ?
|
||||
bne .2
|
||||
|
||||
lda (ZPCLBufPtr)
|
||||
cmp #'.' leading dot ?
|
||||
bne .2
|
||||
|
||||
>LDA.G CORE.PSFlags yes, child process will run in same ENV
|
||||
and #$ff^S.PS.F.DUPENV
|
||||
sta (pData),y
|
||||
bra .6 and skip this token
|
||||
|
||||
.2 jsr CL.CheckCmd
|
||||
bcc .6 success, skip token, already added by CheckCmd
|
||||
|
||||
rts
|
||||
|
||||
.3 jsr CL.CheckIO
|
||||
bcc .7 IO token & related args processed
|
||||
tay an error ?
|
||||
bne .9 yes...I/O error...
|
||||
|
||||
jsr CL.AddCLBufPtrToArgV no...add as an arg
|
||||
bcs .9
|
||||
|
||||
.6 jsr CL.NextCLToken
|
||||
.7 lda (ZPCLBufPtr)
|
||||
bne .1
|
||||
|
||||
.8 clc
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
* ZPCLBuf-> argv[] (formatted & not empty)
|
||||
*--------------------------------------
|
||||
CL.CheckCmd ldy #$ff
|
||||
|
||||
.1 iny
|
||||
lda (ZPCLBufPtr),y
|
||||
beq .2
|
||||
cmp #'/'
|
||||
bne .1
|
||||
|
||||
bra .4
|
||||
|
||||
.2 >PUSHW ZPCLBufPtr
|
||||
>LDYA L.CORE.INT
|
||||
jsr Lookup no / found, search internal...
|
||||
bcs .4 not internal, search PATH
|
||||
|
||||
phx
|
||||
plx
|
||||
bne .3
|
||||
|
||||
>LDA.G CORE.PSFlags if STARTPROC, skip keyword...
|
||||
and #$ff^S.PS.F.HOLD
|
||||
sta (pData),y ...and toggle S.PS.F.HOLD flag
|
||||
clc
|
||||
.9 rts
|
||||
|
||||
.3 jsr CL.AddYAToArgV X unmodified
|
||||
bcs .9
|
||||
|
||||
txa
|
||||
>STA.G CORE.IntCmd
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.4 >LDYA ZPCLBufPtr
|
||||
jsr CL.AddYAToArgV
|
||||
|
||||
lda #$ff
|
||||
>STA.G CORE.IntCmd
|
||||
clc
|
||||
|
||||
CL.CheckCmd.RTS
|
||||
rts
|
||||
*--------------------------------------
|
||||
CL.CheckIO >PUSHW ZPCLBufPtr
|
||||
>LDYA L.CL.IO
|
||||
jsr Lookup
|
||||
bcs .9 not a IO token...should be an arg....
|
||||
phx
|
||||
|
||||
jsr CL.NextCLToken skip this IO token
|
||||
|
||||
plx
|
||||
jmp (J.CL.IO,x)
|
||||
|
||||
.9 lda #0
|
||||
rts
|
||||
*--------------------------------------
|
||||
CL.IO.AMP >LDA.G CORE.PSFlags
|
||||
and #$ff^S.PS.F.HOLD
|
||||
sta (pData),y
|
||||
clc
|
||||
rts
|
||||
|
||||
CL.IO.IN lda #O.RDONLY+O.TEXT
|
||||
jsr CL.IO.Open
|
||||
bcs .9
|
||||
jsr IO.Set.In
|
||||
|
||||
jsr CL.NextCLToken skip arg
|
||||
clc
|
||||
.9 rts
|
||||
|
||||
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
|
||||
|
||||
CL.IO.OUT.1 jsr CL.IO.Open
|
||||
bcs .9
|
||||
jsr IO.Set.Out
|
||||
|
||||
jsr CL.NextCLToken skip arg
|
||||
clc
|
||||
.9 rts
|
||||
|
||||
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
|
||||
|
||||
CL.IO.2OUT.1 jsr CL.IO.Open
|
||||
bcs .9
|
||||
jsr IO.Set.Err
|
||||
|
||||
jsr CL.NextCLToken skip arg
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CL.IO.Open pha
|
||||
lda (ZPCLBufPtr)
|
||||
beq .9 no arg left....
|
||||
|
||||
>PUSHWI 0 Aux type
|
||||
>PUSHBI S.FI.T.TXT ftype
|
||||
pla
|
||||
>PUSHA flags
|
||||
>LDYA ZPCLBufPtr
|
||||
>SYSCALL fopen
|
||||
rts
|
||||
|
||||
.9 pla
|
||||
lda #E.CSYN
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CL.NextCLToken
|
||||
lda (ZPCLBufPtr)
|
||||
inc ZPCLBufPtr
|
||||
bne .1
|
||||
inc ZPCLBufPtr+1
|
||||
.1 tax
|
||||
bne CL.NextCLToken
|
||||
rts
|
||||
*--------------------------------------
|
||||
CL.AddCLBufPtrToArgV
|
||||
>LDYA ZPCLBufPtr
|
||||
CL.AddYAToArgV >STYA ZPPtr1
|
||||
|
||||
>LDYA ZPArgVBuf
|
||||
>STYA ZPPtr1
|
||||
>STYA ZPPtr2
|
||||
|
||||
.10 ldy #$ff
|
||||
|
||||
.1 lda (ZPPtr2) scan to end of argV
|
||||
beq .6
|
||||
|
||||
.2 inc ZPPtr2
|
||||
bne .3
|
||||
inc ZPPtr2+1
|
||||
.3 lda (ZPPtr2)
|
||||
bne .2
|
||||
|
||||
inc ZPPtr2
|
||||
bne .4
|
||||
inc ZPPtr2+1
|
||||
.4 lda (ZPPtr2)
|
||||
bne .2
|
||||
.1 iny Compute ArgX len
|
||||
lda (ZPPtr1),y
|
||||
bne .1
|
||||
|
||||
.6 ldy #$ff
|
||||
|
||||
.7 iny
|
||||
* beq .9
|
||||
.2 tya
|
||||
sec
|
||||
adc ZPPtr1
|
||||
sta ZPPtr1
|
||||
bcc .3
|
||||
inc ZPPtr1+1
|
||||
|
||||
.3 ldy #$ff
|
||||
|
||||
.4 iny
|
||||
lda (ZPPtr1),y
|
||||
sta (ZPPtr2),y
|
||||
bne .7 including str ending \0
|
||||
bne .4
|
||||
tya
|
||||
beq .7
|
||||
|
||||
sec
|
||||
adc ZPPtr2
|
||||
sta ZPPtr2
|
||||
bcc .2
|
||||
inc ZPPtr2+1
|
||||
bra .2
|
||||
|
||||
.7 ldy #S.PS.ARGC
|
||||
lda (pPS),y
|
||||
dec
|
||||
sta (pPS),y
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CMD.PWD ldy #S.PS.hPREFIX
|
||||
lda (pPs),y
|
||||
>SYSCALL GetMemPtr
|
||||
>SYSCALL puts
|
||||
rts
|
||||
*--------------------------------------
|
||||
CMD.PUSHD >LDA.G PUSHD.STACK
|
||||
cmp #PUSHD.STACK+PUSHD.STACK.MAX
|
||||
beq CMD.POPD.CSYN
|
||||
|
||||
ldy #S.PS.hPREFIX
|
||||
lda (pPs),y
|
||||
>SYSCALL GetMemPtr
|
||||
>SYSCALL strdup
|
||||
bcs CMD.POPD.CSYN
|
||||
|
||||
>INC.G PUSHD.STACK
|
||||
tay
|
||||
txa
|
||||
sta (pData),y
|
||||
|
||||
ldx #1
|
||||
jsr CORE.GetArgX
|
||||
bcc CMD.CD.1
|
||||
|
||||
.8 clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CMD.POPD >LDA.G PUSHD.STACK
|
||||
cmp #PUSHD.STACK
|
||||
beq CMD.POPD.CSYN
|
||||
|
||||
tay
|
||||
lda (pData),y
|
||||
jsr CORE.SetPrefixA
|
||||
|
||||
>DEC.G PUSHD.STACK
|
||||
clc
|
||||
CMD.POPD.RTS
|
||||
rts
|
||||
|
||||
CMD.POPD.CSYN jmp CORE.Exec.CSYN
|
||||
*--------------------------------------
|
||||
CMD.CD ldx #1
|
||||
jsr CORE.GetArgX
|
||||
bcc CMD.CD.1
|
||||
|
||||
CMD.CD.HOME >LDYA L.ENV.HOME
|
||||
>SYSCALL GetEnv
|
||||
bcc CMD.CD.1
|
||||
|
||||
>LDYA L.ENV.ROOT
|
||||
>SYSCALL GetEnv
|
||||
bcc CMD.CD.1
|
||||
|
||||
jmp CMD.PWD
|
||||
|
||||
CMD.CD.1.9 pla
|
||||
>SYSCALL freemem
|
||||
bra CMD.POPD.CSYN
|
||||
|
||||
CMD.CD.1 >SYSCALL realpath
|
||||
bcs CMD.POPD.RTS
|
||||
>STYA ZPPtr1
|
||||
phx
|
||||
|
||||
ldy #1
|
||||
lda (ZPPtr1),y
|
||||
beq CORE.SetPrefixPHA we have '/'
|
||||
|
||||
>PUSHEA.G StatBuf
|
||||
>LDYA ZPPtr1
|
||||
>SYSCALL STAT
|
||||
|
||||
bcs CMD.CD.1.9
|
||||
|
||||
>LDA.G StatBuf+S.STAT.P.TYPE
|
||||
cmp #S.FI.T.DIR
|
||||
bne CMD.CD.1.9
|
||||
|
||||
ldy #$ff
|
||||
|
||||
.1 iny
|
||||
lda (ZPPtr1),y
|
||||
bne .1
|
||||
|
||||
dey
|
||||
lda (ZPPtr1),y
|
||||
cmp #'/'
|
||||
beq CORE.SetPrefixPHA already ends witrh a /
|
||||
|
||||
iny
|
||||
* beq .9
|
||||
sta (ZPPtr2),y arg[] ending \0
|
||||
iny
|
||||
lda #0
|
||||
>SYSCALL getmem
|
||||
bcs CMD.CD.1.9
|
||||
>STYA ZPPtr2
|
||||
|
||||
ldy #$ff
|
||||
|
||||
.2 iny
|
||||
lda (ZPPtr1),y
|
||||
lda (ZPPtr2),y
|
||||
bne .2
|
||||
|
||||
iny
|
||||
sta (ZPPtr2),y
|
||||
dey
|
||||
lda #'/'
|
||||
sta (ZPPtr2),y
|
||||
pla
|
||||
phx
|
||||
>SYSCALL freemem
|
||||
pla
|
||||
*--------------------------------------
|
||||
CORE.SetPrefixA pha
|
||||
CORE.SetPrefixPHA
|
||||
ldy #S.PS.hPREFIX
|
||||
lda (pPs),y
|
||||
>SYSCALL FreeMem
|
||||
|
||||
pla
|
||||
|
||||
ldy #S.PS.hPREFIX
|
||||
sta (pPs),y
|
||||
lda #0
|
||||
* clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CORE.Exec.CSYN lda #E.CSYN
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CORE.Exec.SSYN lda #E.SSYN
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CMD.SET ldx #1
|
||||
jsr CORE.GetArgX
|
||||
bcc CMD.SET.1
|
||||
|
||||
* No arg, print all ENV
|
||||
|
||||
ldy #S.PS.hENV
|
||||
lda (pPs),y
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPPTR1
|
||||
|
||||
.1 lda (ZPPTR1)
|
||||
beq .8 Ending 0 ?
|
||||
|
||||
ldy #$ff
|
||||
|
||||
.2 iny
|
||||
lda (ZPPTR1),y
|
||||
bne .2
|
||||
|
||||
tya
|
||||
sec
|
||||
adc ZPPTR1
|
||||
sta ZPPTR2
|
||||
lda #0
|
||||
adc ZPPTR1+1
|
||||
sta ZPPTR2+1
|
||||
|
||||
>PUSHW ZPPTR2 Push value
|
||||
>PUSHW ZPPTR1 Push name
|
||||
jsr CMD.SET.PRINT
|
||||
|
||||
bcs .9
|
||||
|
||||
ldy #$ff
|
||||
|
||||
.3 iny
|
||||
lda (ZPPTR2),y
|
||||
bne .3
|
||||
|
||||
tya
|
||||
sec
|
||||
adc ZPPTR2
|
||||
sta ZPPTR1
|
||||
lda #0
|
||||
adc ZPPTR2+1
|
||||
sta ZPPTR1+1
|
||||
bra .1
|
||||
|
||||
.8 clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
* SET +X VAR = VALUE1 op VALUE2 op VALUE3 ...
|
||||
*--------------------------------------
|
||||
CMD.SET.1 >STZ.G CORE.Varname
|
||||
|
||||
lda #1
|
||||
>STA.G CORE.ArgIndex
|
||||
|
||||
.1 tax
|
||||
jsr CORE.GetArgX
|
||||
bcs .8
|
||||
|
||||
jsr CMD.IsSwitch
|
||||
bcs .6
|
||||
|
||||
cmp #'C'
|
||||
bne .2
|
||||
|
||||
>LDA.G bSET.C
|
||||
bra .5
|
||||
|
||||
.2 cmp #'X'
|
||||
bne .99
|
||||
|
||||
>LDA.G bSET.X
|
||||
|
||||
.5 eor #$ff
|
||||
sta (pData),y
|
||||
>INC.G CORE.ArgIndex
|
||||
bra .1
|
||||
|
||||
.6 >LDA.G CORE.ArgIndex
|
||||
>STA.G CORE.Varname
|
||||
|
||||
>INC.G CORE.ArgIndex
|
||||
tax
|
||||
jsr CORE.GetArgX
|
||||
bcs CMD.SET.GET
|
||||
|
||||
>STYA ZPPTR1
|
||||
|
||||
lda (ZPPTR1)
|
||||
|
||||
cmp #'='
|
||||
bne .99
|
||||
|
||||
ldy #1
|
||||
lda (ZPPTR1),y
|
||||
bne .99
|
||||
|
||||
>INC.G CORE.ArgIndex
|
||||
tax
|
||||
jsr CORE.GetArgX
|
||||
bcs CMD.SET.UNSET
|
||||
|
||||
jsr EXP.GET
|
||||
|
||||
bcs .99
|
||||
|
||||
>PUSHYA
|
||||
>LDA.G CORE.Varname
|
||||
tax
|
||||
jsr CORE.GetArgX
|
||||
>SYSCALL SetEnv
|
||||
rts
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
.99 jmp CORE.Exec.CSYN
|
||||
|
||||
CMD.SET.UNSET >LDA.G CORE.Varname
|
||||
tax
|
||||
jsr CORE.GetArgX
|
||||
>SYSCALL UnsetEnv
|
||||
rts
|
||||
|
||||
CMD.SET.GET >LDA.G CORE.Varname
|
||||
tax
|
||||
jsr CORE.GetArgX
|
||||
>SYSCALL GetEnv
|
||||
bcc .1
|
||||
clc
|
||||
rts
|
||||
|
||||
.1 >PUSHYA push value
|
||||
>LDA.G CORE.Varname
|
||||
tax
|
||||
jsr CORE.GetArgX
|
||||
>PUSHYA push name
|
||||
*--------------------------------------
|
||||
CMD.SET.PRINT >PUSHBI 4
|
||||
>LDYA L.MSG.PRINTENV
|
||||
>SYSCALL printf
|
||||
rts
|
||||
*--------------------------------------
|
||||
CMD.DATE sec
|
||||
.HS 90 bcc
|
||||
CMD.TIME clc
|
||||
php
|
||||
>LEA.G TimeBuf
|
||||
>SYSCALL Time
|
||||
|
||||
>PUSHEA.G TimeBuf
|
||||
|
||||
plp
|
||||
bcc .1
|
||||
>PUSHW L.FMT.DATE
|
||||
bra .2
|
||||
.1 >PUSHW L.FMT.TIME
|
||||
|
||||
.2 >LDYA ZPCLBuf
|
||||
>SYSCALL StrFTime
|
||||
|
||||
>LDYA ZPCLBuf
|
||||
>SYSCALL puts
|
||||
rts
|
||||
*--------------------------------------
|
||||
CMD.ECHO >STZ.G bECHO.N
|
||||
|
||||
lda #1
|
||||
>STA.G CORE.ArgIndex
|
||||
|
||||
.1 tax
|
||||
jsr CORE.GetArgX
|
||||
bcs .7
|
||||
|
||||
jsr CMD.IsSwitch
|
||||
bcs .2
|
||||
|
||||
cmp #'N'
|
||||
bne .99
|
||||
|
||||
lda #$ff
|
||||
>EOR.G bECHO.N
|
||||
sta (pData),y
|
||||
>INC.G CORE.ArgIndex
|
||||
bra .1
|
||||
|
||||
.2 pha
|
||||
>PUSHBI 0
|
||||
pla
|
||||
>SYSCALL printf
|
||||
bcs .9
|
||||
|
||||
>INC.G CORE.ArgIndex
|
||||
tax
|
||||
|
||||
jsr CORE.GetArgX
|
||||
bcs .7
|
||||
|
||||
.6 lda #C.SPACE
|
||||
>SYSCALL putchar
|
||||
bcs .9
|
||||
|
||||
>PUSHBI 0
|
||||
|
||||
>LDA.G CORE.ArgIndex
|
||||
tax
|
||||
jsr CORE.GetArgX
|
||||
|
||||
>SYSCALL printf
|
||||
bcs .9
|
||||
|
||||
>INC.G CORE.ArgIndex
|
||||
tax
|
||||
|
||||
jsr CORE.GetArgX
|
||||
bcc .6
|
||||
|
||||
.7 >LDA.G bECHO.N
|
||||
bmi .8
|
||||
|
||||
>PUSHBI 0
|
||||
>LDYA L.MSG.ECHOCRLF
|
||||
>SYSCALL printf
|
||||
rts
|
||||
|
||||
.8 clc
|
||||
.9 rts
|
||||
|
||||
.99 lda #E.CSYN
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CMD.GETKEY ldx #1
|
||||
jsr CORE.GetArgX
|
||||
bcs .99
|
||||
|
||||
>SYSCALL getchar
|
||||
bcc .1
|
||||
tay
|
||||
bne .9
|
||||
|
||||
.1 >PUSHA
|
||||
>PUSHBI 1
|
||||
>PUSHW L.FMT.GETKEY
|
||||
>LEA.G M32.BUF
|
||||
>SYSCALL sprintf
|
||||
bcs .9
|
||||
|
||||
>PUSHEA.G M32.BUF
|
||||
|
||||
ldx #1
|
||||
jsr CORE.GetArgX
|
||||
>SYSCALL SetEnv
|
||||
.9 rts
|
||||
|
||||
.99 jmp CORE.Exec.CSYN
|
||||
*--------------------------------------
|
||||
CMD.READ lda #1
|
||||
>STA.G CORE.ArgIndex
|
||||
|
||||
tax
|
||||
jsr CORE.GetArgX
|
||||
bcs .9
|
||||
|
||||
.1 jsr CMD.IsSwitch
|
||||
bcs .4
|
||||
cmp #'S'
|
||||
bne .2
|
||||
|
||||
lda #$ff
|
||||
>STA.G bREAD.S
|
||||
|
||||
bra .7
|
||||
|
||||
.2 cmp #'P'
|
||||
bne .9
|
||||
|
||||
>INC.G CORE.ArgIndex
|
||||
tax
|
||||
jsr CORE.GetArgX
|
||||
bcs .9
|
||||
pha
|
||||
>PUSHBI 0
|
||||
pla
|
||||
>SYSCALL printf
|
||||
bcs .99
|
||||
bra .7
|
||||
|
||||
.4 >SYSCALL strdup
|
||||
txa
|
||||
>STA.G hVarName
|
||||
|
||||
.7 >INC.G CORE.ArgIndex
|
||||
tax
|
||||
jsr CORE.GetArgX
|
||||
bcc .1
|
||||
|
||||
>LDA.G hVarName
|
||||
beq .9
|
||||
clc
|
||||
.99 rts
|
||||
|
||||
.9 jmp CORE.Exec.CSYN
|
||||
*--------------------------------------
|
||||
CMD.SLEEP ldx #1
|
||||
jsr CORE.GetArgX
|
||||
bcs .9
|
||||
|
||||
>SYSCALL AToL
|
||||
bcs .9
|
||||
|
||||
>PULLL.G Sleep
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 jmp CORE.Exec.CSYN
|
||||
*--------------------------------------
|
||||
CMD.PAUSE lda #$FF
|
||||
>STA.G bPause
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CMD.EXIT ldx #1
|
||||
jsr CORE.GetArgX
|
||||
bcs .8 no arg, exit 0
|
||||
|
||||
>SYSCALL AToL
|
||||
bcs .9
|
||||
|
||||
>PULLL.G M32.ACC
|
||||
|
||||
lda #$FF
|
||||
>STA.G bExit
|
||||
|
||||
>LDA.G M32.ACC
|
||||
clc
|
||||
rts
|
||||
|
||||
.8 lda #$FF
|
||||
>STA.G bExit
|
||||
inc
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CMD.MD ldx #1
|
||||
jsr CORE.GetArgX
|
||||
bcs .9
|
||||
|
||||
>SYSCALL MKDir
|
||||
rts
|
||||
|
||||
.9 jmp CORE.Exec.CSYN
|
||||
*--------------------------------------
|
||||
CMD.REN ldx #2
|
||||
jsr CORE.GetArgX
|
||||
bcs .9
|
||||
>PUSHYA
|
||||
ldx #1
|
||||
jsr CORE.GetArgX
|
||||
|
||||
>SYSCALL Rename
|
||||
rts
|
||||
|
||||
.9 jmp CORE.Exec.CSYN
|
||||
*--------------------------------------
|
||||
CMD.RD ldx #1
|
||||
jsr CORE.GetArgX
|
||||
bcs .9
|
||||
phy
|
||||
pha
|
||||
>PUSHEA.G StatBuf
|
||||
pla
|
||||
ply
|
||||
>SYSCALL STAT
|
||||
bcs .99
|
||||
|
||||
>LDA.G StatBuf+S.STAT.P.TYPE
|
||||
cmp #S.FI.T.DIR
|
||||
bne .9
|
||||
|
||||
ldx #1
|
||||
jsr CORE.GetArgX
|
||||
>SYSCALL Remove
|
||||
.99 rts
|
||||
|
||||
.9 jmp CORE.Exec.CSYN
|
||||
*--------------------------------------
|
||||
CMD.BREAK
|
||||
.9 jmp CORE.Exec.SSYN
|
||||
*--------------------------------------
|
||||
CMD.CONTINUE
|
||||
.9 jmp CORE.Exec.SSYN
|
||||
*--------------------------------------
|
||||
CMD.FOR
|
||||
.9 jmp CORE.Exec.SSYN
|
||||
*--------------------------------------
|
||||
CMD.NEXT
|
||||
.9 jmp CORE.Exec.SSYN
|
||||
*--------------------------------------
|
||||
CMD.WHILE
|
||||
CMD.IF jsr CORE.StkGet
|
||||
bcs .1 no context...
|
||||
|
||||
and #$80 get current..
|
||||
lsr becomes parent
|
||||
bra .2
|
||||
|
||||
.1 lda #$40 ...set Parent = true
|
||||
|
||||
.2 >STA.G CORE.Test
|
||||
|
||||
bit #$40 Parent is true ?
|
||||
beq .3
|
||||
|
||||
jsr EXP.EVAL
|
||||
bcs .9
|
||||
|
||||
.3 >LDA.G CORE.IntCmd
|
||||
cmp #C.WHILE
|
||||
bne .8
|
||||
|
||||
jsr CORE.StkPushPtr
|
||||
bcs .9
|
||||
|
||||
.8 >LDA.G CORE.Test
|
||||
>ORA.G CORE.IntCmd
|
||||
jmp CORE.StkPush
|
||||
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CMD.ELSE jsr CORE.StkGet
|
||||
bcs .9
|
||||
|
||||
bit #$40 parent is true ?
|
||||
beq .8 no, skip
|
||||
|
||||
tax
|
||||
and #$3F
|
||||
cmp #C.IF
|
||||
bne .9
|
||||
txa
|
||||
eor #$80 toggle and store at stack ptr
|
||||
sta (pData),y
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
.9 lda #E.NOIF
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CMD.FI jsr CORE.StkPull
|
||||
bcs .9
|
||||
|
||||
and #$3F
|
||||
cmp #C.IF
|
||||
bne .9
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #E.BUF
|
||||
.9 lda #E.NOIF
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CMD.LOOP jsr CORE.StkPull
|
||||
bcs .9
|
||||
tax
|
||||
and #$3F
|
||||
cmp #C.WHILE
|
||||
bne .9
|
||||
|
||||
txa
|
||||
bpl .1
|
||||
|
||||
jmp CORE.StkPullPtr
|
||||
|
||||
.1 jsr CORE.StkPull
|
||||
bcs .99
|
||||
jmp CORE.StkPull
|
||||
|
||||
.9 lda #E.NOWHILE
|
||||
sec
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
CMD.IsSwitch >STYA ZPPtr1
|
||||
lda (ZPPtr1)
|
||||
cmp #'-'
|
||||
bne .9
|
||||
|
||||
ldy #1
|
||||
lda (ZPPtr1),y
|
||||
beq .9
|
||||
|
||||
iny
|
||||
lda (ZPPtr1),y
|
||||
bne .9
|
||||
|
||||
dey
|
||||
lda (ZPPtr1),y
|
||||
cmp #'a'
|
||||
bcc .8
|
||||
cmp #'z'+1
|
||||
bcs .8
|
||||
eor #$20
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
.9 >LDYA ZPPtr1
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
|
1289
BIN/SHELL.S.CORE.txt
1289
BIN/SHELL.S.CORE.txt
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,279 @@
|
|||
NEW
|
||||
PREFIX
|
||||
AUTO 4,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
EXP.EVAL ldx #1
|
||||
jsr CORE.GetArgX
|
||||
beq .9
|
||||
|
||||
>PUSHYA
|
||||
>LDYA L.EXP.BEGIN
|
||||
jsr Lookup
|
||||
|
||||
bcs .9
|
||||
|
||||
cpx #4 [ or ![
|
||||
bcs .9
|
||||
dex
|
||||
dex 1 or $ff
|
||||
|
||||
txa
|
||||
|
||||
and #$80 true or false
|
||||
>ORA.G CORE.Test
|
||||
sta (pData),y
|
||||
|
||||
ldx #2
|
||||
jsr CORE.GetArgX
|
||||
beq .9
|
||||
|
||||
>PUSHYA
|
||||
>LDYA L.EXP.OP.UNARY -d -e -f ?
|
||||
jsr Lookup
|
||||
|
||||
bcs .1
|
||||
|
||||
txa
|
||||
>STA.G CORE.Operator
|
||||
|
||||
jsr EXP.EVAL.UNARY
|
||||
bcs .9
|
||||
|
||||
>EOR.G CORE.Test
|
||||
sta (pData),y
|
||||
|
||||
ldx #4 go check ]
|
||||
bra .8
|
||||
|
||||
.9 lda #E.ESYN
|
||||
sec
|
||||
.99 rts
|
||||
|
||||
.1 ldx #3
|
||||
jsr CORE.GetArgX
|
||||
beq .9
|
||||
|
||||
>PUSHYA
|
||||
>LDYA L.EXP.OP.BINARY -eq -ne .... ?
|
||||
jsr Lookup
|
||||
bcs .9
|
||||
txa
|
||||
>STA.G CORE.Operator
|
||||
|
||||
jsr EXP.EVAL.BINARY
|
||||
bcs .9
|
||||
|
||||
>EOR.G CORE.Test
|
||||
sta (pData),y
|
||||
|
||||
ldx #5 go check ]
|
||||
|
||||
.8 jsr CORE.GetArgX
|
||||
beq .9
|
||||
|
||||
>STYA ZPPTR1
|
||||
|
||||
lda (ZPPTR1)
|
||||
cmp #']'
|
||||
bne .9
|
||||
|
||||
ldy #1
|
||||
lda (ZPPTR1),y
|
||||
bne .9
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
EXP.EVAL.UNARY ldx #3
|
||||
jsr CORE.GetArgX
|
||||
bcs .9 we need one arg
|
||||
|
||||
>LDA.G CORE.Operator
|
||||
tax
|
||||
jmp (J.EXP.OP.UNARY,x)
|
||||
|
||||
.9 lda #E.ESYN
|
||||
sec
|
||||
rts
|
||||
|
||||
EXP.OP.UNARY.D jsr EXP.OP.UNARY.DEF.7
|
||||
bcs EXP.OP.UNARY.DEF.9
|
||||
>LDA.G StatBuf+S.STAT.P.TYPE
|
||||
cmp #S.FI.T.DIR
|
||||
bne EXP.OP.UNARY.DEF.9
|
||||
bra EXP.OP.UNARY.DEF.8
|
||||
|
||||
EXP.OP.UNARY.E jsr EXP.OP.UNARY.DEF.7
|
||||
bcs EXP.OP.UNARY.DEF.9
|
||||
bra EXP.OP.UNARY.DEF.8 DIR or FILE exist
|
||||
|
||||
EXP.OP.UNARY.F jsr EXP.OP.UNARY.DEF.7
|
||||
bcs EXP.OP.UNARY.DEF.9
|
||||
|
||||
>LDA.G StatBuf+S.STAT.P.TYPE
|
||||
cmp #S.FI.T.DIR
|
||||
beq EXP.OP.UNARY.DEF.9
|
||||
bra EXP.OP.UNARY.DEF.8
|
||||
|
||||
EXP.OP.UNARY.DEF.7
|
||||
>PUSHEA.G StatBuf
|
||||
ldx #3
|
||||
jsr CORE.GetArgX
|
||||
>SYSCALL STAT
|
||||
rts
|
||||
|
||||
EXP.OP.UNARY.DEF.8
|
||||
lda #$80 true
|
||||
clc
|
||||
rts
|
||||
|
||||
EXP.OP.UNARY.DEF.9
|
||||
lda #0 false
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
EXP.EVAL.BINARY ldx #2
|
||||
jsr CORE.GetArgX
|
||||
bcs .9
|
||||
|
||||
ldx #4
|
||||
jsr CORE.GetArgX
|
||||
bcs .9
|
||||
|
||||
>LDA.G CORE.Operator
|
||||
beq .1 =
|
||||
|
||||
cmp #2 !=
|
||||
bne EXP.EVAL.BINARY.NUM
|
||||
lda #$80
|
||||
>STA.G CORE.Operator
|
||||
|
||||
.1 ldx #2
|
||||
jsr CORE.GetArgX
|
||||
>PUSHYA
|
||||
ldx #4
|
||||
jsr CORE.GetArgX
|
||||
>SYSCALL strcmp
|
||||
ror CS if !=
|
||||
and #$80
|
||||
eor #$80
|
||||
>EOR.G CORE.Operator
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #E.ESYN
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
EXP.EVAL.BINARY.NUM
|
||||
ldx #2
|
||||
jsr CORE.GetArgX
|
||||
bcs .9
|
||||
|
||||
>SYSCALL AToL
|
||||
bcs .9
|
||||
|
||||
>PULLL.G M32.ACC
|
||||
|
||||
ldx #4
|
||||
jsr CORE.GetArgX
|
||||
bcs .9
|
||||
|
||||
>SYSCALL AToL
|
||||
bcs .9
|
||||
|
||||
>PULLL.G M32.ARG
|
||||
|
||||
jsr M32.Cmp
|
||||
pha
|
||||
|
||||
>LDA.G CORE.Operator
|
||||
lsr
|
||||
tax
|
||||
pla
|
||||
and EXP.OP.BINARY.BITS,x
|
||||
beq .80
|
||||
|
||||
lda #$80 true
|
||||
clc
|
||||
rts
|
||||
|
||||
.80 lda #0 false
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #E.ESYN
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
EXP.GET >LDA.G CORE.ArgIndex
|
||||
inc
|
||||
tax
|
||||
jsr CORE.GetArgX
|
||||
bcc .1
|
||||
|
||||
>LDA.G CORE.ArgIndex no op, return text value
|
||||
tax
|
||||
jsr CORE.GetArgX
|
||||
rts
|
||||
|
||||
.1 >LDA.G CORE.ArgIndex
|
||||
tax
|
||||
jsr CORE.GetArgX
|
||||
>SYSCALL AToL
|
||||
bcs .99
|
||||
|
||||
>PULLL.G M32.ACC
|
||||
|
||||
jsr EXP.GetNext
|
||||
|
||||
.2 >PUSHYA
|
||||
>LDYA L.EXP.OP.MATH + - .... ?
|
||||
jsr Lookup
|
||||
|
||||
bcs .9
|
||||
txa
|
||||
>STA.G CORE.Operator
|
||||
|
||||
jsr M32.ACC2ARG
|
||||
|
||||
jsr EXP.GetNext get next argument in ACC
|
||||
.99 bcs .9
|
||||
|
||||
>SYSCALL AToL
|
||||
bcs .9
|
||||
|
||||
>PULLL.G M32.ACC
|
||||
jsr EXP.GET.OP
|
||||
bcs .9
|
||||
|
||||
jsr EXP.GetNext another op ?
|
||||
bcc .2
|
||||
|
||||
.8 >PUSHL.G M32.ACC
|
||||
>PUSHBI 4
|
||||
>PUSHW L.M32.Printf
|
||||
>LEA.G M32.BUF
|
||||
>SYSCALL sprintf
|
||||
bcs .9
|
||||
|
||||
>LEA.G M32.Buf
|
||||
|
||||
rts
|
||||
|
||||
.9 lda #E.BADEXP
|
||||
rts
|
||||
|
||||
EXP.GET.OP >LDA.G CORE.Operator
|
||||
tax
|
||||
jmp (J.EXP.OP.MATH,x)
|
||||
*--------------------------------------
|
||||
EXP.GetNext >INC.G CORE.ArgIndex
|
||||
tax
|
||||
jsr CORE.GetArgX
|
||||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/BIN/SHELL.S.EXP
|
||||
LOAD USR/SRC/BIN/SHELL.S
|
||||
ASM
|
|
@ -111,9 +111,9 @@ IO.PrintBatchErrMsg
|
|||
bne .2 Scan until EoL
|
||||
|
||||
ldx ZPPtr1
|
||||
cpx ZPInputBufPtr
|
||||
cpx ZPFileBufPtr
|
||||
lda ZPPtr1+1
|
||||
sbc ZPInputBufPtr+1
|
||||
sbc ZPFileBufPtr+1
|
||||
bcc .1 not this line....
|
||||
|
||||
.4 ldy #0
|
||||
|
@ -137,7 +137,7 @@ IO.PrintBatchErrMsg
|
|||
lda (pPS),y
|
||||
>SYSCALL fprintf
|
||||
|
||||
lda ZPInputBufPtr
|
||||
lda ZPFileBufPtr
|
||||
sec
|
||||
sbc ZPPtr2
|
||||
beq .8
|
||||
|
|
144
BIN/SHELL.S.txt
144
BIN/SHELL.S.txt
|
@ -63,10 +63,9 @@ ZPPtr2 .BS 2
|
|||
ZPPtr3 .BS 2
|
||||
ZPCLBuf .BS 2
|
||||
ZPCLBufPtr .BS 2
|
||||
ZPInputBufPtr .BS 2
|
||||
ZPInputBufPtrBak .BS 2
|
||||
ZPFileBufPtr .BS 2
|
||||
ZPFileBufPtrBak .BS 2
|
||||
ZPArgVBuf .BS 2
|
||||
ZPArgVBufPtr .BS 2
|
||||
ZS.END .ED
|
||||
*--------------------------------------
|
||||
* File Header (16 Bytes)
|
||||
|
@ -110,51 +109,51 @@ J.ESC .DA CL.BS left arrow
|
|||
.DA HIS.GetNext
|
||||
.DA HIS.GetPrev
|
||||
.DA CL.NAK right arow
|
||||
L.CL.IO .DA CL.IO
|
||||
J.CL.IO .DA CL.IO.AMP
|
||||
.DA CL.IO.IN
|
||||
.DA CL.IO.OUTA
|
||||
.DA CL.IO.OUT
|
||||
.DA CL.IO.1OUTA
|
||||
.DA CL.IO.1OUT
|
||||
.DA CL.IO.2OUTA
|
||||
.DA CL.IO.2OUT
|
||||
L.CORE.IO .DA CORE.IO
|
||||
J.CORE.IO .DA CORE.IO.AMP
|
||||
.DA CORE.IO.IN
|
||||
.DA CORE.IO.OUTA
|
||||
.DA CORE.IO.OUT
|
||||
.DA CORE.IO.1OUTA
|
||||
.DA CORE.IO.1OUT
|
||||
.DA CORE.IO.2OUTA
|
||||
.DA CORE.IO.2OUT
|
||||
L.CORE.INT .DA CORE.INT
|
||||
J.CORE.INT .DA CORE.INT.STARTPROC
|
||||
.DA CORE.INT.CD
|
||||
.DA CORE.INT.DATE
|
||||
.DA CORE.INT.ECHO
|
||||
.DA CORE.INT.EXIT
|
||||
.DA CORE.INT.GETKEY
|
||||
.DA CORE.INT.MD
|
||||
.DA CORE.INT.PAUSE
|
||||
.DA CORE.INT.PWD
|
||||
.DA CORE.INT.RD
|
||||
.DA CORE.INT.READ
|
||||
.DA CORE.INT.REN
|
||||
.DA CORE.INT.SET
|
||||
.DA CORE.INT.SLEEP
|
||||
.DA CORE.INT.SHIFT
|
||||
.DA CORE.INT.TIME
|
||||
.DA CORE.INT.PUSHD
|
||||
.DA CORE.INT.POPD
|
||||
.DA CORE.INT.BREAK
|
||||
.DA CORE.INT.CONTINUE
|
||||
.DA CORE.INT.FOR
|
||||
.DA CORE.INT.NEXT
|
||||
.DA CORE.INT.WHILE
|
||||
.DA CORE.INT.LOOP
|
||||
.DA CORE.INT.IF
|
||||
.DA CORE.INT.ELSE
|
||||
.DA CORE.INT.FI
|
||||
L.CORE.Eval.TOKEN1 .DA CORE.Eval.TOKEN1
|
||||
L.CORE.Eval.TOKEN2 .DA CORE.Eval.TOKEN2
|
||||
J.CORE.Eval.TOKEN2 .DA CORE.Eval.D
|
||||
.DA CORE.Eval.E
|
||||
.DA CORE.Eval.F
|
||||
L.CORE.Eval.TOKEN3 .DA CORE.Eval.TOKEN3
|
||||
L.CORE.Eval.TOKEN4 .DA CORE.Eval.TOKEN4
|
||||
J.CORE.Eval.TOKEN4 .DA M32.Add
|
||||
J.CMD .DA CMD.STARTPROC
|
||||
.DA CMD.CD
|
||||
.DA CMD.DATE
|
||||
.DA CMD.ECHO
|
||||
.DA CMD.EXIT
|
||||
.DA CMD.GETKEY
|
||||
.DA CMD.MD
|
||||
.DA CMD.PAUSE
|
||||
.DA CMD.PWD
|
||||
.DA CMD.RD
|
||||
.DA CMD.READ
|
||||
.DA CMD.REN
|
||||
.DA CMD.SET
|
||||
.DA CMD.SLEEP
|
||||
.DA CMD.SHIFT
|
||||
.DA CMD.TIME
|
||||
.DA CMD.PUSHD
|
||||
.DA CMD.POPD
|
||||
.DA CMD.BREAK
|
||||
.DA CMD.CONTINUE
|
||||
.DA CMD.FOR
|
||||
.DA CMD.NEXT
|
||||
.DA CMD.WHILE
|
||||
.DA CMD.LOOP
|
||||
.DA CMD.IF
|
||||
.DA CMD.ELSE
|
||||
.DA CMD.FI
|
||||
L.EXP.BEGIN .DA EXP.BEGIN
|
||||
L.EXP.OP.UNARY .DA EXP.OP.UNARY
|
||||
J.EXP.OP.UNARY .DA EXP.OP.UNARY.D
|
||||
.DA EXP.OP.UNARY.E
|
||||
.DA EXP.OP.UNARY.F
|
||||
L.EXP.OP.BINARY .DA EXP.OP.BINARY
|
||||
L.EXP.OP.MATH .DA EXP.OP.MATH
|
||||
J.EXP.OP.MATH .DA M32.Add
|
||||
.DA M32.Sub
|
||||
.DA M32.Mul
|
||||
.DA M32.Div
|
||||
|
@ -168,9 +167,9 @@ L.ERR.Messages .DA ERR.Messages
|
|||
CS.INIT clc
|
||||
CS.INIT.RTS rts
|
||||
*--------------------------------------
|
||||
CS.RUN jsr CMD.Init
|
||||
bcs CS.INIT.RTS
|
||||
|
||||
CS.RUN jsr CL.Init
|
||||
jsr CORE.Init
|
||||
|
||||
ldy #S.PS.ARGC
|
||||
lda (pPS),y
|
||||
beq .1 no arg, continue starting interactive
|
||||
|
@ -186,15 +185,14 @@ CS.RUN jsr CMD.Init
|
|||
txa
|
||||
>STA.G hFileBuf
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPInputBufPtr
|
||||
>STYA ZPFileBufPtr
|
||||
|
||||
lda #0
|
||||
jsr CORE.INT.SHIFTA Remove $0=/bin/shell
|
||||
jsr CMD.SHIFTA Remove $0=/bin/shell
|
||||
|
||||
bra CS.RUN.LOOP
|
||||
*--------------------------------------
|
||||
.1 jsr CORE.INT.CD.HOME
|
||||
jsr CL.Init
|
||||
.1 jsr CMD.CD.HOME
|
||||
jsr HIS.Init
|
||||
bcs CS.INIT.RTS
|
||||
|
||||
|
@ -302,10 +300,9 @@ CS.RUN.INTERACTIVE
|
|||
|
||||
jsr HIS.Add
|
||||
|
||||
>LDYA ZPCLBuf
|
||||
>STYA ZPInputBufPtr
|
||||
jmp CS.RUN.Exec
|
||||
.8 jmp CS.RUN.LOOP
|
||||
jsr CORE.Exec
|
||||
|
||||
.8 jmp CS.RUN.LOOP.END
|
||||
*--------------------------------------
|
||||
CS.RUN.READ
|
||||
.1 >SLEEP
|
||||
|
@ -361,7 +358,7 @@ CS.RUN.BATCH >SYSCALL GetChar
|
|||
clc
|
||||
jmp CS.RUN.LOOP.END
|
||||
|
||||
.2 jsr CMD.Get
|
||||
.2 jsr CORE.GetCmdFromFile
|
||||
bcc .7
|
||||
|
||||
cmp #C.EOF
|
||||
|
@ -383,7 +380,7 @@ CS.RUN.BATCH >SYSCALL GetChar
|
|||
beq CS.RUN.LOOP.80
|
||||
|
||||
>LDA.G bSET.X
|
||||
beq CS.RUN.Exec
|
||||
beq .8
|
||||
|
||||
>PUSHW ZPCLBuf
|
||||
>PUSHBI 2
|
||||
|
@ -391,9 +388,9 @@ CS.RUN.BATCH >SYSCALL GetChar
|
|||
>SYSCALL printf
|
||||
|
||||
bcs .9
|
||||
*--------------------------------------
|
||||
CS.RUN.Exec jsr CORE.Exec
|
||||
*--------------------------------------
|
||||
|
||||
.8 jsr CORE.Exec
|
||||
|
||||
CS.RUN.LOOP.END ldy #S.PS.RC
|
||||
sta (pPs),y
|
||||
|
||||
|
@ -450,7 +447,7 @@ CS.QUIT >LDA.G hFileBuf
|
|||
|
||||
.1 jsr HIS.Quit
|
||||
jsr CL.Quit
|
||||
|
||||
jsr CORE.Quit
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
@ -505,8 +502,9 @@ Lookup >STYA ZPPtr2
|
|||
.INB USR/SRC/BIN/SHELL.S.CL
|
||||
.INB USR/SRC/BIN/SHELL.S.HIS
|
||||
.INB USR/SRC/BIN/SHELL.S.CORE
|
||||
.INB USR/SRC/BIN/SHELL.S.CMD
|
||||
.INB USR/SRC/BIN/SHELL.S.IO
|
||||
.INB USR/SRC/BIN/SHELL.S.CMD
|
||||
.INB USR/SRC/BIN/SHELL.S.EXP
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
*--------------------------------------
|
||||
|
@ -531,7 +529,7 @@ HOME.PROFILE .AZ "${HOME}PROFILE"
|
|||
*--------------------------------------
|
||||
* https://www.tldp.org/LDP/abs/html/io-redirection.html
|
||||
*--------------------------------------
|
||||
CL.IO .AZ "&"
|
||||
CORE.IO .AZ "&"
|
||||
.AZ "<"
|
||||
.AZ ">>"
|
||||
.AZ ">"
|
||||
|
@ -570,17 +568,14 @@ CORE.INT .AZ "STARTPROC"
|
|||
.AZ "FI"
|
||||
.HS 00
|
||||
*--------------------------------------
|
||||
CORE.Eval.TOKEN1
|
||||
.AZ "!["
|
||||
EXP.BEGIN .AZ "!["
|
||||
.AZ "["
|
||||
.HS 00
|
||||
CORE.Eval.TOKEN2
|
||||
.AZ "-d"
|
||||
EXP.OP.UNARY .AZ "-d"
|
||||
.AZ "-e"
|
||||
.AZ "-f"
|
||||
.HS 00
|
||||
CORE.Eval.TOKEN3
|
||||
.AZ "="
|
||||
EXP.OP.BINARY .AZ "="
|
||||
.AZ "!="
|
||||
.AZ "-eq"
|
||||
.AZ "-ne"
|
||||
|
@ -589,7 +584,7 @@ CORE.Eval.TOKEN3
|
|||
.AZ "-gt"
|
||||
.AZ "-ge"
|
||||
.HS 00
|
||||
CORE.Eval.TOKEN3.BITS
|
||||
EXP.OP.BINARY.BITS
|
||||
.DA #%000
|
||||
.DA #%000
|
||||
.DA #%010
|
||||
|
@ -598,8 +593,7 @@ CORE.Eval.TOKEN3.BITS
|
|||
.DA #%110
|
||||
.DA #%001
|
||||
.DA #%011
|
||||
CORE.Eval.TOKEN4
|
||||
.AZ "+"
|
||||
EXP.OP.MATH .AZ "+"
|
||||
.AZ "-"
|
||||
.AZ "*"
|
||||
.AZ "div"
|
||||
|
|
|
@ -181,11 +181,11 @@ Kernel.Init3C >LDYAI MSG.Init3
|
|||
>LDYAI MSG.Prefix
|
||||
>SYSCALL printf
|
||||
|
||||
* lda KBD
|
||||
* bpl .7
|
||||
* sta KBDSTROBE
|
||||
* cmp #146 CTRL-R for ROOT mode
|
||||
* bne .7
|
||||
lda KBD
|
||||
bpl .7
|
||||
sta KBDSTROBE
|
||||
cmp #146 CTRL-R for ROOT mode
|
||||
bne .7
|
||||
|
||||
>PUSHBI 0
|
||||
>LDYAI MSG.CTRLR
|
||||
|
|
Loading…
Reference in New Issue