mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-16 18:30:26 +00:00
Kernel 0.92 : SHELL, fixed the instability problem
This commit is contained in:
parent
be851c6636
commit
996a7b3a9e
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -71,7 +71,7 @@ CL.CHARIN.CTRL cpx #C.CR
|
|||||||
>LDA.G CL.Ptr
|
>LDA.G CL.Ptr
|
||||||
tay
|
tay
|
||||||
lda #0
|
lda #0
|
||||||
sta (ZPCMDBuf),y
|
sta (ZPCLBuf),y
|
||||||
tya
|
tya
|
||||||
>STA.G CL.Len
|
>STA.G CL.Len
|
||||||
|
|
||||||
@ -102,7 +102,7 @@ CL.CHARIN.CTRL cpx #C.CR
|
|||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CL.Insert >LDA.G CL.Len
|
CL.Insert >LDA.G CL.Len
|
||||||
cmp #CmdLine.MAX
|
cmp #CL.MAX
|
||||||
beq .9 Buffer full, discard...
|
beq .9 Buffer full, discard...
|
||||||
|
|
||||||
inc
|
inc
|
||||||
@ -112,9 +112,9 @@ CL.Insert >LDA.G CL.Len
|
|||||||
|
|
||||||
.1 ply
|
.1 ply
|
||||||
dey
|
dey
|
||||||
lda (ZPCMDBuf),y Move from Ptr To end of buffer forward...
|
lda (ZPCLBuf),y Move from Ptr To end of buffer forward...
|
||||||
iny
|
iny
|
||||||
sta (ZPCMDBuf),y
|
sta (ZPCLBuf),y
|
||||||
dey
|
dey
|
||||||
phy
|
phy
|
||||||
tya
|
tya
|
||||||
@ -126,7 +126,7 @@ CL.Insert >LDA.G CL.Len
|
|||||||
* >LDA.G CL.Ptr
|
* >LDA.G CL.Ptr
|
||||||
|
|
||||||
txa
|
txa
|
||||||
sta (ZPCMDBuf),y
|
sta (ZPCLBuf),y
|
||||||
|
|
||||||
>LDA.G bREAD.S
|
>LDA.G bREAD.S
|
||||||
bpl .2
|
bpl .2
|
||||||
@ -142,23 +142,23 @@ CL.Insert >LDA.G CL.Len
|
|||||||
.9 clc
|
.9 clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CL.CLR ldy #0
|
CL.CLR lda (ZPCLBuf)
|
||||||
|
beq CL.RESET.1
|
||||||
|
|
||||||
.1 lda (ZPCMDBuf),y
|
ldy #0
|
||||||
beq CL.RESET
|
|
||||||
|
|
||||||
.2 lda #$7F
|
.1 lda #$7F
|
||||||
|
sta (ZPCLBuf),y
|
||||||
|
|
||||||
sta (ZPCMDBuf),y
|
|
||||||
iny
|
iny
|
||||||
lda (ZPCMDBuf),y
|
lda (ZPCLBuf),y
|
||||||
bne .2
|
bne .1
|
||||||
|
|
||||||
jsr CL.PrintCmdBuf
|
jsr CL.PrintCmdBuf
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CL.RESET lda #0
|
CL.RESET lda #0
|
||||||
sta (ZPCMDBuf)
|
sta (ZPCLBuf)
|
||||||
>STA.G CL.bExec
|
CL.RESET.1 >STA.G CL.bExec
|
||||||
>STA.G CL.Ptr
|
>STA.G CL.Ptr
|
||||||
>STA.G CL.Len
|
>STA.G CL.Len
|
||||||
rts
|
rts
|
||||||
@ -209,9 +209,9 @@ CL.DEL.1 pha
|
|||||||
|
|
||||||
.1 ply
|
.1 ply
|
||||||
iny
|
iny
|
||||||
lda (ZPCMDBuf),y
|
lda (ZPCLBuf),y
|
||||||
dey
|
dey
|
||||||
sta (ZPCMDBuf),y
|
sta (ZPCLBuf),y
|
||||||
iny
|
iny
|
||||||
phy
|
phy
|
||||||
tya
|
tya
|
||||||
@ -230,7 +230,7 @@ CL.PrintEOL >LDA.G CL.Ptr
|
|||||||
|
|
||||||
pha
|
pha
|
||||||
tay
|
tay
|
||||||
lda (ZPCMDBuf),y
|
lda (ZPCLBuf),y
|
||||||
>SYSCALL PutChar
|
>SYSCALL PutChar
|
||||||
pla
|
pla
|
||||||
inc
|
inc
|
||||||
@ -258,7 +258,7 @@ CL.PrintEOL >LDA.G CL.Ptr
|
|||||||
CL.PrintEOL.8 clc
|
CL.PrintEOL.8 clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CL.PrintCmdBuf >LDYA ZPCMDBuf
|
CL.PrintCmdBuf >LDYA ZPCLBuf
|
||||||
>PUSHYA
|
>PUSHYA
|
||||||
ldy #S.PS.hStdOut
|
ldy #S.PS.hStdOut
|
||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
@ -279,9 +279,9 @@ CL.GetLine lda (ZPFileBufPtr)
|
|||||||
* cmp #';'
|
* cmp #';'
|
||||||
* beq .6
|
* beq .6
|
||||||
|
|
||||||
sta (ZPCMDBuf),y
|
sta (ZPCLBuf),y
|
||||||
iny
|
iny
|
||||||
cpy #CmdLine.MAX
|
cpy #CL.MAX
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
lda #E.SYN Line Too long !!!
|
lda #E.SYN Line Too long !!!
|
||||||
@ -300,7 +300,7 @@ CL.GetLine lda (ZPFileBufPtr)
|
|||||||
inc ZPFileBufPtr+1
|
inc ZPFileBufPtr+1
|
||||||
|
|
||||||
.8 lda #0
|
.8 lda #0
|
||||||
sta (ZPCMDBuf),y
|
sta (ZPCLBuf),y
|
||||||
|
|
||||||
tya
|
tya
|
||||||
>STA.G CL.Len
|
>STA.G CL.Len
|
||||||
@ -314,18 +314,8 @@ CL.GetLine lda (ZPFileBufPtr)
|
|||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CL.Trace >LDA.G bSET.X
|
|
||||||
beq .8
|
|
||||||
|
|
||||||
>PUSHW ZPCMDBuf
|
|
||||||
>PUSHBI 2
|
|
||||||
>LDYA L.MSG.TRACE
|
|
||||||
>SYSCALL printf
|
|
||||||
.8 clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
* in:
|
* in:
|
||||||
* ZPCMDBuf : CString command line
|
* ZPCLBuf : CString command line
|
||||||
* out:
|
* out:
|
||||||
* ZPArgVBuf :
|
* ZPArgVBuf :
|
||||||
* /path/excmd\0 arg1\0 arg2\0 ... \0
|
* /path/excmd\0 arg1\0 arg2\0 ... \0
|
||||||
@ -337,15 +327,16 @@ CL.Parse >STZ.G CMD.IntCmd
|
|||||||
lda #S.PS.F.HOLD+S.PS.F.DUPENV
|
lda #S.PS.F.HOLD+S.PS.F.DUPENV
|
||||||
>STA.G CMD.PSFlags
|
>STA.G CMD.PSFlags
|
||||||
|
|
||||||
>PUSHW ZPCMDBuf
|
>PUSHW ZPCLBuf
|
||||||
>LDYA ZPCMDBuf
|
>LDYA ZPCLBuf
|
||||||
|
>STYA ZPCLBufPtr
|
||||||
|
|
||||||
>SYSCALL Args2ArgV
|
>SYSCALL Args2ArgV
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
sta (ZPArgVBuf)
|
sta (ZPArgVBuf)
|
||||||
|
|
||||||
lda (ZPCMDBuf)
|
lda (ZPCLBufPtr)
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
.1 cmp #'#' comment ?
|
.1 cmp #'#' comment ?
|
||||||
@ -355,10 +346,10 @@ CL.Parse >STZ.G CMD.IntCmd
|
|||||||
bne .3 we already have Cmd, go check args
|
bne .3 we already have Cmd, go check args
|
||||||
|
|
||||||
ldy #1
|
ldy #1
|
||||||
lda (ZPCMDBuf),y only one char ?
|
lda (ZPCLBufPtr),y only one char ?
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
lda (ZPCMDBuf)
|
lda (ZPCLBufPtr)
|
||||||
cmp #'.' leading dot ?
|
cmp #'.' leading dot ?
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
@ -377,28 +368,28 @@ CL.Parse >STZ.G CMD.IntCmd
|
|||||||
tay an error ?
|
tay an error ?
|
||||||
bne .9 yes...I/O error...
|
bne .9 yes...I/O error...
|
||||||
|
|
||||||
jsr CL.AddCmdBufTokenToArgV no...add as an arg
|
jsr CL.AddCLBufPtrToArgV no...add as an arg
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
.6 jsr CL.NextCmdBufToken
|
.6 jsr CL.NextCLToken
|
||||||
.7 lda (ZPCMDBuf)
|
.7 lda (ZPCLBufPtr)
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* ZPCMDBuf-> argv[] (formatted & not empty)
|
* ZPCLBuf-> argv[] (formatted & not empty)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CL.CheckCmd ldy #$ff
|
CL.CheckCmd ldy #$ff
|
||||||
|
|
||||||
.1 iny
|
.1 iny
|
||||||
lda (ZPCMDBuf),y
|
lda (ZPCLBufPtr),y
|
||||||
beq .2
|
beq .2
|
||||||
cmp #'/'
|
cmp #'/'
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
>LDYA ZPCMDBuf found /, some path specified, External, no search
|
>LDYA ZPCLBufPtr found /, some path specified, External, no search
|
||||||
>SYSCALL realpath
|
>SYSCALL realpath
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
@ -406,7 +397,7 @@ CL.CheckCmd ldy #$ff
|
|||||||
>STA.G CMD.hCmdLine
|
>STA.G CMD.hCmdLine
|
||||||
bra .6 go check type...
|
bra .6 go check type...
|
||||||
|
|
||||||
.2 >PUSHW ZPCMDBuf
|
.2 >PUSHW ZPCLBufPtr
|
||||||
>LDYA L.CMD.INT
|
>LDYA L.CMD.INT
|
||||||
jsr Lookup no / found, search internal...
|
jsr Lookup no / found, search internal...
|
||||||
bcs .4 not internal, search PATH
|
bcs .4 not internal, search PATH
|
||||||
@ -508,17 +499,17 @@ CL.SearchExt pha
|
|||||||
ply
|
ply
|
||||||
pla
|
pla
|
||||||
>PUSHYA push search list
|
>PUSHYA push search list
|
||||||
>LDYA ZPCMDBuf push CMD
|
>LDYA ZPCLBufPtr push CMD
|
||||||
>SYSCALL FileSearch
|
>SYSCALL FileSearch
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CL.CheckIO >PUSHW ZPCMDBuf
|
CL.CheckIO >PUSHW ZPCLBufPtr
|
||||||
>LDYA L.CL.IO
|
>LDYA L.CL.IO
|
||||||
jsr Lookup
|
jsr Lookup
|
||||||
bcs .9 not a IO token...should be an arg....
|
bcs .9 not a IO token...should be an arg....
|
||||||
phx
|
phx
|
||||||
|
|
||||||
jsr CL.NextCmdBufToken skip this IO token
|
jsr CL.NextCLToken skip this IO token
|
||||||
|
|
||||||
plx
|
plx
|
||||||
jmp (J.CL.IO,x)
|
jmp (J.CL.IO,x)
|
||||||
@ -541,7 +532,7 @@ CL.IO.IN lda #O.RDONLY+O.TEXT
|
|||||||
bcs .9
|
bcs .9
|
||||||
jsr IO.Set.In
|
jsr IO.Set.In
|
||||||
|
|
||||||
jsr CL.NextCmdBufToken skip arg
|
jsr CL.NextCLToken skip arg
|
||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
|
|
||||||
@ -555,7 +546,7 @@ CL.IO.OUT.1 jsr CL.IO.Open
|
|||||||
bcs .9
|
bcs .9
|
||||||
jsr IO.Set.Out
|
jsr IO.Set.Out
|
||||||
|
|
||||||
jsr CL.NextCmdBufToken skip arg
|
jsr CL.NextCLToken skip arg
|
||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
|
|
||||||
@ -567,19 +558,19 @@ CL.IO.2OUT.1 jsr CL.IO.Open
|
|||||||
bcs .9
|
bcs .9
|
||||||
jsr IO.Set.Err
|
jsr IO.Set.Err
|
||||||
|
|
||||||
jsr CL.NextCmdBufToken skip arg
|
jsr CL.NextCLToken skip arg
|
||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CL.IO.Open pha
|
CL.IO.Open pha
|
||||||
lda (ZPCMDBuf)
|
lda (ZPCLBufPtr)
|
||||||
beq .9 no arg left....
|
beq .9 no arg left....
|
||||||
|
|
||||||
>PUSHWI 0 Aux type
|
>PUSHWI 0 Aux type
|
||||||
>PUSHBI S.FI.T.TXT ftype
|
>PUSHBI S.FI.T.TXT ftype
|
||||||
pla
|
pla
|
||||||
>PUSHA flags
|
>PUSHA flags
|
||||||
>LDYA ZPCMDBuf
|
>LDYA ZPCLBufPtr
|
||||||
>SYSCALL fopen
|
>SYSCALL fopen
|
||||||
rts
|
rts
|
||||||
|
|
||||||
@ -588,17 +579,17 @@ CL.IO.Open pha
|
|||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CL.NextCmdBufToken
|
CL.NextCLToken
|
||||||
lda (ZPCMDBuf)
|
lda (ZPCLBufPtr)
|
||||||
inc ZPCMDBuf
|
inc ZPCLBufPtr
|
||||||
bne .1
|
bne .1
|
||||||
inc ZPCMDBuf+1
|
inc ZPCLBufPtr+1
|
||||||
.1 tax
|
.1 tax
|
||||||
bne CL.NextCmdBufToken
|
bne CL.NextCLToken
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CL.AddCmdBufTokenToArgV
|
CL.AddCLBufPtrToArgV
|
||||||
>LDYA ZPCmdBuf
|
>LDYA ZPCLBufPtr
|
||||||
CL.AddYAToArgV >STYA ZPPtr1
|
CL.AddYAToArgV >STYA ZPPtr1
|
||||||
|
|
||||||
>LDYA ZPArgVBuf
|
>LDYA ZPArgVBuf
|
||||||
|
@ -6,9 +6,10 @@ AUTO 4,1
|
|||||||
CMD.Init >LDYAI 256
|
CMD.Init >LDYAI 256
|
||||||
>SYSCALL GetMem
|
>SYSCALL GetMem
|
||||||
bcs .9
|
bcs .9
|
||||||
>STYA ZPCMDBuf
|
>STYA ZPCLBuf
|
||||||
|
|
||||||
txa
|
txa
|
||||||
>STA.G CMD.hCmdBuf
|
>STA.G CMD.hCLBuf
|
||||||
|
|
||||||
>LDYAI 256
|
>LDYAI 256
|
||||||
>SYSCALL GetMem
|
>SYSCALL GetMem
|
||||||
@ -17,7 +18,7 @@ CMD.Init >LDYAI 256
|
|||||||
txa
|
txa
|
||||||
>STA.G CMD.hArgVBuf
|
>STA.G CMD.hArgVBuf
|
||||||
|
|
||||||
lda #CMD.IF.PTR
|
lda #CMD.STACK.PTR
|
||||||
tay
|
tay
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
|
|
||||||
@ -27,7 +28,7 @@ CMD.Quit >LDA.G CMD.hArgVBuf
|
|||||||
beq .1
|
beq .1
|
||||||
>SYSCALL FreeMem
|
>SYSCALL FreeMem
|
||||||
|
|
||||||
.1 >LDA.G CMD.hCmdBuf
|
.1 >LDA.G CMD.hCLBuf
|
||||||
beq .9
|
beq .9
|
||||||
>SYSCALL FreeMem
|
>SYSCALL FreeMem
|
||||||
.9 rts
|
.9 rts
|
||||||
@ -41,9 +42,9 @@ Cmd.Exec >LDA.G CMD.IntCmd
|
|||||||
cpx #C.ELSE
|
cpx #C.ELSE
|
||||||
bcs .1
|
bcs .1
|
||||||
|
|
||||||
>LDA.G CMD.IF.PTR
|
>LDA.G CMD.STACK.PTR
|
||||||
|
|
||||||
cmp #CMD.IF.PTR
|
cmp #CMD.STACK.PTR
|
||||||
beq .1 no IF pending...
|
beq .1 no IF pending...
|
||||||
|
|
||||||
tay
|
tay
|
||||||
@ -72,6 +73,9 @@ Cmd.Exec >LDA.G CMD.IntCmd
|
|||||||
|
|
||||||
.3 >SLEEP Suspend this PID
|
.3 >SLEEP Suspend this PID
|
||||||
|
|
||||||
|
ldy #S.PS.RC
|
||||||
|
lda (pPs),y
|
||||||
|
bne .9
|
||||||
.8 clc
|
.8 clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -221,15 +225,13 @@ Cmd.INT.SETVAR jsr CMD.IsSwitch
|
|||||||
cmp #'X'
|
cmp #'X'
|
||||||
bne .99
|
bne .99
|
||||||
|
|
||||||
>LDA.G bSET.X
|
lda #$ff
|
||||||
eor #$ff
|
>EOR.G bSET.X
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.10 >STYA ZPPTR1
|
.10 lda (ZPPTR1) set by CMD.IsSwitch
|
||||||
|
|
||||||
lda (ZPPTR1)
|
|
||||||
cmp #'=' string is '=value' ?
|
cmp #'=' string is '=value' ?
|
||||||
beq .99 syntax error
|
beq .99 syntax error
|
||||||
|
|
||||||
@ -258,10 +260,6 @@ Cmd.INT.SETVAR jsr CMD.IsSwitch
|
|||||||
>SYSCALL UnsetEnv
|
>SYSCALL UnsetEnv
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
.8 clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
.99 lda #E.SYN
|
.99 lda #E.SYN
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
@ -295,10 +293,10 @@ Cmd.INT.TIME clc
|
|||||||
bra .2
|
bra .2
|
||||||
.1 >PUSHW L.FMT.TIME
|
.1 >PUSHW L.FMT.TIME
|
||||||
|
|
||||||
.2 >LDYA ZPCMDBuf
|
.2 >LDYA ZPCLBuf
|
||||||
>SYSCALL StrFTime
|
>SYSCALL StrFTime
|
||||||
|
|
||||||
>LDYA ZPCMDBuf
|
>LDYA ZPCLBuf
|
||||||
>SYSCALL puts
|
>SYSCALL puts
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -454,8 +452,8 @@ Cmd.INT.RD ldx #1
|
|||||||
|
|
||||||
.9 jmp Cmd.Exec.ERRSYN
|
.9 jmp Cmd.Exec.ERRSYN
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Cmd.INT.IF >LDA.G CMD.IF.PTR
|
Cmd.INT.IF >LDA.G CMD.STACK.PTR
|
||||||
cmp #CMD.IF.PTR+CMD.IF.STACK.MAX
|
cmp #CMD.STACK.PTR+CMD.STACK.MAX
|
||||||
beq .9
|
beq .9
|
||||||
inc
|
inc
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
@ -475,7 +473,7 @@ Cmd.INT.IF >LDA.G CMD.IF.PTR
|
|||||||
dex
|
dex
|
||||||
dex 1 or $ff
|
dex 1 or $ff
|
||||||
|
|
||||||
>LDA.G CMD.IF.PTR
|
>LDA.G CMD.STACK.PTR
|
||||||
tay
|
tay
|
||||||
txa
|
txa
|
||||||
sta (pData),y true or false
|
sta (pData),y true or false
|
||||||
@ -496,7 +494,7 @@ Cmd.INT.IF >LDA.G CMD.IF.PTR
|
|||||||
jsr CMD.IF.UNARY
|
jsr CMD.IF.UNARY
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>LDA.G CMD.IF.PTR
|
>LDA.G CMD.STACK.PTR
|
||||||
tay
|
tay
|
||||||
txa
|
txa
|
||||||
eor (pData),y
|
eor (pData),y
|
||||||
@ -523,7 +521,7 @@ Cmd.INT.IF >LDA.G CMD.IF.PTR
|
|||||||
jsr CMD.IF.BINARY
|
jsr CMD.IF.BINARY
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>LDA.G CMD.IF.PTR
|
>LDA.G CMD.STACK.PTR
|
||||||
tay
|
tay
|
||||||
txa
|
txa
|
||||||
eor (pData),y
|
eor (pData),y
|
||||||
@ -616,6 +614,7 @@ CMD.IF.BINARY ldx #2
|
|||||||
>SYSCALL strcmp
|
>SYSCALL strcmp
|
||||||
lsr CS if !=
|
lsr CS if !=
|
||||||
>EOR.G CMD.Operator
|
>EOR.G CMD.Operator
|
||||||
|
sta (pData),y
|
||||||
tax
|
tax
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
@ -705,9 +704,9 @@ CMD.IF.BINARY.NUM
|
|||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Cmd.INT.ELSE >LDA.G CMD.IF.PTR
|
Cmd.INT.ELSE >LDA.G CMD.STACK.PTR
|
||||||
|
|
||||||
cmp #CMD.IF.PTR
|
cmp #CMD.STACK.PTR
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
tay
|
tay
|
||||||
@ -722,12 +721,12 @@ Cmd.INT.ELSE >LDA.G CMD.IF.PTR
|
|||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Cmd.INT.FI >LDA.G CMD.IF.PTR
|
Cmd.INT.FI >LDA.G CMD.STACK.PTR
|
||||||
cmp #CMD.IF.PTR
|
cmp #CMD.STACK.PTR
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
dec
|
dec
|
||||||
>STA.G CMD.IF.PTR
|
>STA.G CMD.STACK.PTR
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
@ -70,7 +70,7 @@ HIS.Add >LDA.G HIS.hBuf
|
|||||||
.3 ldy #$ff
|
.3 ldy #$ff
|
||||||
|
|
||||||
.4 iny
|
.4 iny
|
||||||
lda (ZPCMDBuf),y
|
lda (ZPCLBuf),y
|
||||||
sta (ZPPTR1),y
|
sta (ZPPTR1),y
|
||||||
bne .4
|
bne .4
|
||||||
|
|
||||||
@ -138,7 +138,7 @@ HIS.SetA jsr HIS.GetA
|
|||||||
|
|
||||||
.2 iny
|
.2 iny
|
||||||
lda (ZPPTR1),y
|
lda (ZPPTR1),y
|
||||||
sta (ZPCMDBuf),y
|
sta (ZPCLBuf),y
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
tya
|
tya
|
||||||
|
@ -8,6 +8,10 @@ AUTO 4,1
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CSH .EQ 0
|
CSH .EQ 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
CL.MAX .EQ 127
|
||||||
|
History.MAX .EQ 256
|
||||||
|
CMD.STACK.MAX .EQ 8
|
||||||
|
*--------------------------------------
|
||||||
C.STARTPROC .EQ 0
|
C.STARTPROC .EQ 0
|
||||||
C.CD .EQ 2
|
C.CD .EQ 2
|
||||||
C.DATE .EQ 4
|
C.DATE .EQ 4
|
||||||
@ -34,20 +38,17 @@ C.FI .EQ 30
|
|||||||
ZPPtr1 .EQ ZPBIN
|
ZPPtr1 .EQ ZPBIN
|
||||||
ZPPtr2 .EQ ZPBIN+2
|
ZPPtr2 .EQ ZPBIN+2
|
||||||
ZPPtr3 .EQ ZPBIN+4
|
ZPPtr3 .EQ ZPBIN+4
|
||||||
ZPCMDBuf .EQ ZPBIN+6
|
ZPCLBuf .EQ ZPBIN+6
|
||||||
ZPArgVBuf .EQ ZPBIN+8
|
ZPArgVBuf .EQ ZPBIN+8
|
||||||
ZPFileBufPtr .EQ ZPBIN+10
|
ZPFileBufPtr .EQ ZPBIN+10
|
||||||
|
ZPCLBufPtr .EQ ZPBIN+12
|
||||||
.DO CSH=1
|
.DO CSH=1
|
||||||
ZPCSHSymbols .EQ ZPBIN+12
|
ZPCSHSymbols .EQ ZPBIN+14
|
||||||
ZPCSHData .EQ ZPBIN+14
|
ZPCSHData .EQ ZPBIN+16
|
||||||
ZPCSHValue .EQ ZPBIN+16
|
ZPCSHValue .EQ ZPBIN+18
|
||||||
ZPCSHStack .EQ ZPBIN+18
|
ZPCSHStack .EQ ZPBIN+20
|
||||||
.FIN
|
.FIN
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CmdLine.MAX .EQ 127
|
|
||||||
History.MAX .EQ 256
|
|
||||||
CMD.IF.STACK.MAX .EQ 8
|
|
||||||
*--------------------------------------
|
|
||||||
* File Header (16 Bytes)
|
* File Header (16 Bytes)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.START cld
|
CS.START cld
|
||||||
@ -60,9 +61,10 @@ CS.START cld
|
|||||||
.DA DS.END-DS.START DS
|
.DA DS.END-DS.START DS
|
||||||
.DA #64 SS
|
.DA #64 SS
|
||||||
.DO CSH=1
|
.DO CSH=1
|
||||||
.DA #20 ZP
|
.DA #22 ZP
|
||||||
.ELSE
|
.ELSE
|
||||||
.DA #12 ZP
|
.DA #14 ZP
|
||||||
|
.FIN
|
||||||
.DA 0
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Relocation Table
|
* Relocation Table
|
||||||
@ -199,16 +201,18 @@ CS.RUN.LOOP jsr CL.Reset
|
|||||||
|
|
||||||
>LDA.G hFileBuf batch mode ?
|
>LDA.G hFileBuf batch mode ?
|
||||||
bne .8
|
bne .8
|
||||||
|
bra .61
|
||||||
|
|
||||||
.60 cmp #C.CR
|
.60 cmp #C.CR
|
||||||
bne .4
|
bne .4
|
||||||
|
|
||||||
>STZ.G bPause
|
.61 >STZ.G bPause
|
||||||
|
bra .62
|
||||||
|
|
||||||
.6 >LDA.G hVarName read mode ?
|
.6 >LDA.G hVarName read mode ?
|
||||||
bne .7
|
bne .7
|
||||||
|
|
||||||
>LDA.G hFileBuf batch mode ?
|
.62 >LDA.G hFileBuf batch mode ?
|
||||||
beq CS.RUN.INTERCATIVE
|
beq CS.RUN.INTERCATIVE
|
||||||
jmp CS.RUN.BATCH
|
jmp CS.RUN.BATCH
|
||||||
.7 jmp CS.RUN.READ
|
.7 jmp CS.RUN.READ
|
||||||
@ -238,7 +242,7 @@ CS.RUN.INTERCATIVE
|
|||||||
>LDA.G CL.bExec Something to execute ?
|
>LDA.G CL.bExec Something to execute ?
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
lda (ZPCMDBuf)
|
lda (ZPCLBuf)
|
||||||
beq .8 Empty line
|
beq .8 Empty line
|
||||||
|
|
||||||
jsr HIS.Add
|
jsr HIS.Add
|
||||||
@ -256,7 +260,7 @@ CS.RUN.READ
|
|||||||
>LDA.G CL.bExec
|
>LDA.G CL.bExec
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
lda (ZPCMDBuf)
|
lda (ZPCLBuf)
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
>LDA.G hVarName
|
>LDA.G hVarName
|
||||||
@ -264,7 +268,7 @@ CS.RUN.READ
|
|||||||
>SYSCALL UnSetEnv
|
>SYSCALL UnSetEnv
|
||||||
bra .7
|
bra .7
|
||||||
|
|
||||||
.2 >PUSHW ZPCMDBuf
|
.2 >PUSHW ZPCLBuf
|
||||||
|
|
||||||
>LDA.G hVarName
|
>LDA.G hVarName
|
||||||
>SYSCALL GetMemPtr
|
>SYSCALL GetMemPtr
|
||||||
@ -290,7 +294,7 @@ CS.RUN.BATCH >SYSCALL GetChar
|
|||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
* sec
|
* sec
|
||||||
rts
|
.9 rts
|
||||||
|
|
||||||
.1 cmp #19 test Ctrl-s
|
.1 cmp #19 test Ctrl-s
|
||||||
bne .2
|
bne .2
|
||||||
@ -321,10 +325,17 @@ CS.RUN.BATCH >SYSCALL GetChar
|
|||||||
.7 >LDA.G CL.bExec
|
.7 >LDA.G CL.bExec
|
||||||
bpl CS.RUN.LOOP.80
|
bpl CS.RUN.LOOP.80
|
||||||
|
|
||||||
lda (ZPCMDBuf)
|
lda (ZPCLBuf)
|
||||||
beq CS.RUN.LOOP.80
|
beq CS.RUN.LOOP.80
|
||||||
|
|
||||||
jsr CL.Trace
|
>LDA.G bSET.X
|
||||||
|
beq CS.RUN.Exec
|
||||||
|
|
||||||
|
>PUSHW ZPCLBuf
|
||||||
|
>PUSHBI 2
|
||||||
|
>LDYA L.MSG.TRACE
|
||||||
|
>SYSCALL printf
|
||||||
|
bcs .9
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.Exec jsr CL.Parse
|
CS.RUN.Exec jsr CL.Parse
|
||||||
bcs CS.RUN.LOOP.END
|
bcs CS.RUN.LOOP.END
|
||||||
@ -555,9 +566,10 @@ CL.Ptr .BS 1
|
|||||||
CL.Len .BS 1
|
CL.Len .BS 1
|
||||||
CL.bExec .BS 1
|
CL.bExec .BS 1
|
||||||
|
|
||||||
|
CMD.hCLBuf .BS 1
|
||||||
|
|
||||||
CMD.IntCmd .BS 1
|
CMD.IntCmd .BS 1
|
||||||
CMD.hCmdLine .BS 1
|
CMD.hCmdLine .BS 1
|
||||||
CMD.hCmdBuf .BS 1
|
|
||||||
CMD.hArgVBuf .BS 1
|
CMD.hArgVBuf .BS 1
|
||||||
|
|
||||||
CMD.ArgIndex .BS 1
|
CMD.ArgIndex .BS 1
|
||||||
@ -569,8 +581,8 @@ CMD.PSFlags .BS 1
|
|||||||
CMD.Stat .BS S.STAT
|
CMD.Stat .BS S.STAT
|
||||||
CMD.Time .BS S.TIME
|
CMD.Time .BS S.TIME
|
||||||
|
|
||||||
CMD.IF.PTR .BS 1
|
CMD.STACK.PTR .BS 1
|
||||||
CMD.IF.STACK .BS CMD.IF.STACK.MAX
|
CMD.STACK .BS CMD.STACK.MAX
|
||||||
|
|
||||||
HIS.hBuf .BS 1
|
HIS.hBuf .BS 1
|
||||||
HIS.Count .BS 1
|
HIS.Count .BS 1
|
||||||
|
Loading…
x
Reference in New Issue
Block a user