mirror of
https://github.com/A2osX/A2osX.git
synced 2025-04-04 03:32:12 +00:00
Kernel 0.9.1 : Code reorganization & move to CSTR, Stack Management
This commit is contained in:
parent
d4db5090af
commit
17a4222ff7
Binary file not shown.
Binary file not shown.
@ -153,8 +153,6 @@ Cmd.Exec.EXT ldy #1
|
||||
cmp #'/' Command line is already full path, no search
|
||||
bne .10
|
||||
|
||||
|
||||
|
||||
>LDYA L.ENV.PATH push ENVNAME=PATH for search
|
||||
>SYSCALL GetEnv.YA get value for ENV=PATH
|
||||
bcs .1 No PATH, try in CD
|
||||
|
@ -116,7 +116,7 @@ CSH.Run jsr CSH.GetBuf
|
||||
|
||||
jmp CSH.GetNextCharNB Skip ;
|
||||
|
||||
.99 lda #CSHERR.SYNTAX
|
||||
.99 lda #CSH.E.SYNTAX
|
||||
sec
|
||||
.9 rts
|
||||
|
||||
@ -365,7 +365,7 @@ CSH.IF jsr CSH.GetCharNB
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #CSHERR.SYNTAX
|
||||
.9 lda #CSH.E.SYNTAX
|
||||
sec
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
@ -386,7 +386,7 @@ CSH.BREAK
|
||||
*--------------------------------------
|
||||
CSH.CONTINUE
|
||||
|
||||
lda #CSHERR.SYNTAX
|
||||
lda #CSH.E.SYNTAX
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
@ -440,12 +440,12 @@ CSH.TYPE sta CSH.ACCT
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #CSHERR.SYNTAX
|
||||
.9 lda #CSH.E.SYNTAX
|
||||
sec
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
|
||||
lda #CSHERR.SYNTAX
|
||||
lda #CSH.E.SYNTAX
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
@ -475,7 +475,7 @@ CSH.ExpEval jsr CSH.ZeroACC
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
.9 lda #CSHERR.SYNTAX
|
||||
.9 lda #CSH.E.SYNTAX
|
||||
sec
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
@ -491,7 +491,7 @@ CSH.GetName ldy #0
|
||||
cpy #CSH.Name.MAX
|
||||
bcc .1
|
||||
|
||||
lda #CSHERR.TOOLONG
|
||||
lda #CSH.E.TOOLONG
|
||||
sec
|
||||
rts
|
||||
|
||||
@ -499,7 +499,7 @@ CSH.GetName ldy #0
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #CSHERR.SYNTAX
|
||||
.9 lda #CSH.E.SYNTAX
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
@ -523,7 +523,7 @@ CSH.GetNumInACC ldy #0
|
||||
bcs .9
|
||||
rts
|
||||
|
||||
.9 lda #CSHERR.SYNTAX
|
||||
.9 lda #CSH.E.SYNTAX
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
@ -606,12 +606,12 @@ CSH.AddVar jsr CSH.FindVar
|
||||
clc
|
||||
rts
|
||||
|
||||
.97 lda #CSHERR.DUP
|
||||
.97 lda #CSH.E.DUP
|
||||
sec
|
||||
rts
|
||||
|
||||
.98 pla
|
||||
.99 lda #CSHERR.OOM
|
||||
.99 lda #CSH.E.OOM
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
@ -693,7 +693,7 @@ CSH.Push pha
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #CSHERR.SOVERFLW
|
||||
.9 lda #CSH.E.SOVERFLW
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
@ -707,7 +707,7 @@ CSH.Pop ldy #CSH.StackPtr
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #CSHERR.SYNTAX
|
||||
.9 lda #CSH.E.SYNTAX
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
@ -728,7 +728,7 @@ CSH.CheckStack pha
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #CSHERR.SYNTAX
|
||||
.9 lda #CSH.E.SYNTAX
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
226
SBIN/SHELL.S.txt
226
SBIN/SHELL.S.txt
@ -12,6 +12,160 @@ AUTO 6
|
||||
.INB /A2OSX.BUILD/INC/A2OSX.I
|
||||
.INB /A2OSX.BUILD/INC/MLI.ERR.I
|
||||
*--------------------------------------
|
||||
UsrBuf256 .EQ $200
|
||||
*--------------------------------------
|
||||
Stack .EQ $80
|
||||
Stack.B .EQ $fe
|
||||
Stack.P .EQ $ff Initial value=$fd
|
||||
*--------------------------------------
|
||||
.MA STACK.BACKUP
|
||||
|
||||
ldy #0
|
||||
|
||||
ldx Stack.P At least eq $fd
|
||||
inx
|
||||
|
||||
:1 lda Stack,x
|
||||
sta (pStack),y
|
||||
iny
|
||||
inx
|
||||
bne :1
|
||||
|
||||
tsx
|
||||
inx
|
||||
inx Skip 2 bytes Return address to Kernel
|
||||
|
||||
txa
|
||||
eor #$ff compute byte count on stack....
|
||||
inx
|
||||
beq :9
|
||||
|
||||
sta :8+1 save count for later
|
||||
|
||||
|
||||
:2 pla
|
||||
sta (pStack),y
|
||||
iny
|
||||
inx
|
||||
bne :2
|
||||
|
||||
:8 lda #$ff
|
||||
:9 sta (pStack),y
|
||||
|
||||
tya
|
||||
ldy #S.PS.SP
|
||||
sta (pPs),y
|
||||
|
||||
.EM
|
||||
*--------------------------------------
|
||||
.MA STACK.RESTORE
|
||||
ldy #S.PS.SP get PS stack top....
|
||||
lda (pPs),y
|
||||
tay
|
||||
|
||||
lda (pStack),y get 6502 stack bytes to restore
|
||||
dey
|
||||
tax
|
||||
beq :2
|
||||
|
||||
:1 lda (pStack),y
|
||||
dey
|
||||
pha
|
||||
dex
|
||||
bne :1
|
||||
|
||||
ldx #$ff
|
||||
|
||||
:2 tya
|
||||
beq :8
|
||||
|
||||
lda (pStack),y
|
||||
sta Stack,x
|
||||
dex
|
||||
dey
|
||||
|
||||
:8
|
||||
.EM
|
||||
*--------------------------------------
|
||||
.MA ADDLOCAL
|
||||
lda Stack.P
|
||||
sec
|
||||
sbc #]1
|
||||
sta Stack.P
|
||||
sta Stack.B
|
||||
.EM
|
||||
*--------------------------------------
|
||||
.MA GETL.A
|
||||
ldx Stack.B
|
||||
lda Stack+]1,x
|
||||
.EM
|
||||
*--------------------------------------
|
||||
.MA GETL.YA
|
||||
ldx Stack.B
|
||||
ldy Stack+]1,x
|
||||
lda Stack+1+]1,x
|
||||
.EM
|
||||
*--------------------------------------
|
||||
.MA SETL.A
|
||||
ldx Stack.B
|
||||
sta Stack+]1,x
|
||||
.EM
|
||||
*--------------------------------------
|
||||
.MA SETL.YA
|
||||
ldx Stack.B
|
||||
sty Stack+]1,x
|
||||
sta Stack+1+]1,x
|
||||
.EM
|
||||
*--------------------------------------
|
||||
.MA PUSHLW
|
||||
ldx Stack.P
|
||||
.DO ]#=2
|
||||
lda ]1+1,]2
|
||||
sta Stack,x
|
||||
dex
|
||||
lda ]1,]2
|
||||
sta Stack,x
|
||||
dex
|
||||
stx Stack.P
|
||||
.ELSE
|
||||
lda ]1+1
|
||||
sta Stack,x
|
||||
dex
|
||||
lda ]1
|
||||
sta Stack,x
|
||||
dex
|
||||
stx Stack.P
|
||||
.FIN
|
||||
.EM
|
||||
*--------------------------------------
|
||||
.MA GETG.A
|
||||
ldy #]1
|
||||
lda (pData),y
|
||||
.EM
|
||||
*--------------------------------------
|
||||
.MA SETG.A
|
||||
ldy #]1
|
||||
sta (pData),y
|
||||
.EM
|
||||
*--------------------------------------
|
||||
.MA GETG.YA
|
||||
ldy #]1
|
||||
lda (pData),y
|
||||
pha
|
||||
iny
|
||||
lda (pData),y
|
||||
ply
|
||||
.EM
|
||||
*--------------------------------------
|
||||
.MA SETG.YA
|
||||
phy
|
||||
ldy #]1+1
|
||||
sta (pData),y
|
||||
dey
|
||||
pla
|
||||
sta (pData),y
|
||||
.EM
|
||||
*--------------------------------------
|
||||
ZPPTR1 .EQ ZPBIN
|
||||
ZPPTR2 .EQ ZPBIN+2
|
||||
ZPPTR3 .EQ ZPBIN+4
|
||||
@ -23,15 +177,16 @@ ZPCSHStack .EQ ZPBIN+14
|
||||
*--------------------------------------
|
||||
CmdLine.MAX .EQ 127
|
||||
VarLen.MAX .EQ 15
|
||||
|
||||
CSH.Stack.MAX .EQ 15
|
||||
CSH.Name.MAX .EQ 15
|
||||
CSHERR.SYNTAX .EQ $7F
|
||||
CSHERR.SOVERFLW .EQ $7E
|
||||
CSHERR.NOVERFLW .EQ $7D
|
||||
CSHERR.OOM .EQ $7C
|
||||
CSHERR.DUP .EQ $7B
|
||||
CSHERR.UNDEF .EQ $7A
|
||||
CSHERR.TOOLONG .EQ $79
|
||||
CSH.E.SYNTAX .EQ $7F
|
||||
CSH.E.SOVERFLW .EQ $7E
|
||||
CSH.E.NOVERFLW .EQ $7D
|
||||
CSH.E.OOM .EQ $7C
|
||||
CSH.E.DUP .EQ $7B
|
||||
CSH.E.UNDEF .EQ $7A
|
||||
CSH.E.TOOLONG .EQ $79
|
||||
*--------------------------------------
|
||||
* File Header (16 Bytes)
|
||||
*--------------------------------------
|
||||
@ -42,7 +197,7 @@ CS.START cld
|
||||
.DA 0
|
||||
.DA CS.END-CS.START Code Length To Relocate
|
||||
.DA DS.END-DS.START Data Segment to Allocate
|
||||
.DA 64 SS
|
||||
.DA 0
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
* Relocation Table
|
||||
@ -103,8 +258,8 @@ CS.INIT jsr SetPWD
|
||||
ora #S.PS.F.EVENT Now accept events
|
||||
sta (pPs)
|
||||
|
||||
>SYSCALL GetArgC
|
||||
cmp #1
|
||||
ldy #S.PS.ARGC
|
||||
lda (pPs),y
|
||||
|
||||
beq .1 no arg, continue starting interactive
|
||||
|
||||
@ -144,8 +299,7 @@ CS.INIT jsr SetPWD
|
||||
* clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.RUN ldy #VarBuffer READ Command ?
|
||||
lda (pData),y
|
||||
CS.RUN >GETG.A bReadMode READ Command ?
|
||||
bne CS.RUN.READ
|
||||
|
||||
ldy #S.PS.RC
|
||||
@ -165,8 +319,7 @@ CS.RUN ldy #VarBuffer READ Command ?
|
||||
.13 jsr CheckSleep
|
||||
bne .8
|
||||
|
||||
ldy #CSH.hBuf batch mode ?
|
||||
lda (pData),y
|
||||
>GETG.A CSH.hBuf batch mode ?
|
||||
beq .10
|
||||
|
||||
jmp CS.RUN.BATCH
|
||||
@ -224,12 +377,9 @@ CS.RUN.READ lda #0
|
||||
|
||||
jsr CS.CHARIN
|
||||
|
||||
lda (pData)
|
||||
>GETG.A bCmdBuf.exec
|
||||
bpl .1
|
||||
|
||||
and #$7F
|
||||
sta (pData)
|
||||
|
||||
>PUSHW pData
|
||||
|
||||
lda #VarBuffer
|
||||
@ -317,7 +467,6 @@ CS.RUN.BATCH jsr CSH.Run
|
||||
CS.DOEVENT lda (pEvent)
|
||||
bpl .9
|
||||
|
||||
|
||||
jsr CheckSleep
|
||||
beq .9
|
||||
|
||||
@ -335,32 +484,33 @@ CS.DOEVENT lda (pEvent)
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.CHARIN tax
|
||||
ldy #CSH.hBuf Batch mode ?
|
||||
lda (pData),y
|
||||
CS.CHARIN >ADDLOCAL 2 room for bCmdBuf
|
||||
>GETG.A hCmdBuf
|
||||
>SYSCALL GetMemPtr.A
|
||||
>SETL.YA 0
|
||||
|
||||
tax Save Char
|
||||
>GETG.A CSH.hBuf Batch mode ?
|
||||
beq .10
|
||||
* Batch Mode
|
||||
cpx #3 test Ctrl-c
|
||||
bne .12
|
||||
|
||||
ldy #bExitOnEOF
|
||||
lda (pData),y
|
||||
ldy #bExit
|
||||
sta (pData),y
|
||||
>GETG.A bExitOnEOF
|
||||
>SETG.A bExit
|
||||
clc
|
||||
rts
|
||||
|
||||
.12 cpx #19 test Ctrl-s
|
||||
bne .8
|
||||
ldy #bPause
|
||||
|
||||
lda #$80
|
||||
sta (pData),y
|
||||
>SETG.A bPause
|
||||
clc
|
||||
rts
|
||||
|
||||
* interactive mode
|
||||
.10 ldy #bEscMode
|
||||
lda (pData),y
|
||||
.10 >GETG.A bEscMode
|
||||
beq .13
|
||||
|
||||
cpx #'['
|
||||
@ -421,18 +571,16 @@ CS.CHARIN.CTRL cpx #13 CR
|
||||
lda #10
|
||||
>SYSCALL PutChar.A
|
||||
|
||||
lda (pData) CmdBuffer
|
||||
ora #$80
|
||||
sta (pData)
|
||||
lda #$ff
|
||||
>SETG.A bCmdBuf.exec
|
||||
clc
|
||||
rts
|
||||
|
||||
.10 cpx #$1B esc
|
||||
bne .11
|
||||
|
||||
ldy #bEscMode
|
||||
lda #$ff
|
||||
sta (pData),y
|
||||
>SETG.A bEscMode
|
||||
clc
|
||||
rts
|
||||
|
||||
@ -605,8 +753,12 @@ CSH.ARG .BS 5
|
||||
.DUMMY
|
||||
.OR 0
|
||||
DS.START
|
||||
CmdBuffer .BS CmdLine.MAX+1 (pData)
|
||||
VarBuffer .BS VarLen.MAX+1
|
||||
hCmdBuf .BS 1
|
||||
CmdBuf.len .BS 1
|
||||
bCmdBuf.exec .BS 1
|
||||
|
||||
bReadMode .BS 1
|
||||
|
||||
bEscMode .BS 1
|
||||
bPause .BS 1
|
||||
bExit .BS 1
|
||||
|
Loading…
x
Reference in New Issue
Block a user