mirror of
https://github.com/A2osX/A2osX.git
synced 2024-08-14 13:29:02 +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
|
cmp #'/' Command line is already full path, no search
|
||||||
bne .10
|
bne .10
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
>LDYA L.ENV.PATH push ENVNAME=PATH for search
|
>LDYA L.ENV.PATH push ENVNAME=PATH for search
|
||||||
>SYSCALL GetEnv.YA get value for ENV=PATH
|
>SYSCALL GetEnv.YA get value for ENV=PATH
|
||||||
bcs .1 No PATH, try in CD
|
bcs .1 No PATH, try in CD
|
||||||
|
@ -116,7 +116,7 @@ CSH.Run jsr CSH.GetBuf
|
|||||||
|
|
||||||
jmp CSH.GetNextCharNB Skip ;
|
jmp CSH.GetNextCharNB Skip ;
|
||||||
|
|
||||||
.99 lda #CSHERR.SYNTAX
|
.99 lda #CSH.E.SYNTAX
|
||||||
sec
|
sec
|
||||||
.9 rts
|
.9 rts
|
||||||
|
|
||||||
@ -365,7 +365,7 @@ CSH.IF jsr CSH.GetCharNB
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #CSHERR.SYNTAX
|
.9 lda #CSH.E.SYNTAX
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -386,7 +386,7 @@ CSH.BREAK
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CSH.CONTINUE
|
CSH.CONTINUE
|
||||||
|
|
||||||
lda #CSHERR.SYNTAX
|
lda #CSH.E.SYNTAX
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -440,12 +440,12 @@ CSH.TYPE sta CSH.ACCT
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #CSHERR.SYNTAX
|
.9 lda #CSH.E.SYNTAX
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
||||||
lda #CSHERR.SYNTAX
|
lda #CSH.E.SYNTAX
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -475,7 +475,7 @@ CSH.ExpEval jsr CSH.ZeroACC
|
|||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #CSHERR.SYNTAX
|
.9 lda #CSH.E.SYNTAX
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -491,7 +491,7 @@ CSH.GetName ldy #0
|
|||||||
cpy #CSH.Name.MAX
|
cpy #CSH.Name.MAX
|
||||||
bcc .1
|
bcc .1
|
||||||
|
|
||||||
lda #CSHERR.TOOLONG
|
lda #CSH.E.TOOLONG
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
@ -499,7 +499,7 @@ CSH.GetName ldy #0
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #CSHERR.SYNTAX
|
.9 lda #CSH.E.SYNTAX
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -523,7 +523,7 @@ CSH.GetNumInACC ldy #0
|
|||||||
bcs .9
|
bcs .9
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #CSHERR.SYNTAX
|
.9 lda #CSH.E.SYNTAX
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -606,12 +606,12 @@ CSH.AddVar jsr CSH.FindVar
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.97 lda #CSHERR.DUP
|
.97 lda #CSH.E.DUP
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.98 pla
|
.98 pla
|
||||||
.99 lda #CSHERR.OOM
|
.99 lda #CSH.E.OOM
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -693,7 +693,7 @@ CSH.Push pha
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #CSHERR.SOVERFLW
|
.9 lda #CSH.E.SOVERFLW
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -707,7 +707,7 @@ CSH.Pop ldy #CSH.StackPtr
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #CSHERR.SYNTAX
|
.9 lda #CSH.E.SYNTAX
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -728,7 +728,7 @@ CSH.CheckStack pha
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #CSHERR.SYNTAX
|
.9 lda #CSH.E.SYNTAX
|
||||||
sec
|
sec
|
||||||
rts
|
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/A2OSX.I
|
||||||
.INB /A2OSX.BUILD/INC/MLI.ERR.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
|
ZPPTR1 .EQ ZPBIN
|
||||||
ZPPTR2 .EQ ZPBIN+2
|
ZPPTR2 .EQ ZPBIN+2
|
||||||
ZPPTR3 .EQ ZPBIN+4
|
ZPPTR3 .EQ ZPBIN+4
|
||||||
@ -23,15 +177,16 @@ ZPCSHStack .EQ ZPBIN+14
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CmdLine.MAX .EQ 127
|
CmdLine.MAX .EQ 127
|
||||||
VarLen.MAX .EQ 15
|
VarLen.MAX .EQ 15
|
||||||
|
|
||||||
CSH.Stack.MAX .EQ 15
|
CSH.Stack.MAX .EQ 15
|
||||||
CSH.Name.MAX .EQ 15
|
CSH.Name.MAX .EQ 15
|
||||||
CSHERR.SYNTAX .EQ $7F
|
CSH.E.SYNTAX .EQ $7F
|
||||||
CSHERR.SOVERFLW .EQ $7E
|
CSH.E.SOVERFLW .EQ $7E
|
||||||
CSHERR.NOVERFLW .EQ $7D
|
CSH.E.NOVERFLW .EQ $7D
|
||||||
CSHERR.OOM .EQ $7C
|
CSH.E.OOM .EQ $7C
|
||||||
CSHERR.DUP .EQ $7B
|
CSH.E.DUP .EQ $7B
|
||||||
CSHERR.UNDEF .EQ $7A
|
CSH.E.UNDEF .EQ $7A
|
||||||
CSHERR.TOOLONG .EQ $79
|
CSH.E.TOOLONG .EQ $79
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* File Header (16 Bytes)
|
* File Header (16 Bytes)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -42,7 +197,7 @@ CS.START cld
|
|||||||
.DA 0
|
.DA 0
|
||||||
.DA CS.END-CS.START Code Length To Relocate
|
.DA CS.END-CS.START Code Length To Relocate
|
||||||
.DA DS.END-DS.START Data Segment to Allocate
|
.DA DS.END-DS.START Data Segment to Allocate
|
||||||
.DA 64 SS
|
.DA 0
|
||||||
.DA 0
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Relocation Table
|
* Relocation Table
|
||||||
@ -103,8 +258,8 @@ CS.INIT jsr SetPWD
|
|||||||
ora #S.PS.F.EVENT Now accept events
|
ora #S.PS.F.EVENT Now accept events
|
||||||
sta (pPs)
|
sta (pPs)
|
||||||
|
|
||||||
>SYSCALL GetArgC
|
ldy #S.PS.ARGC
|
||||||
cmp #1
|
lda (pPs),y
|
||||||
|
|
||||||
beq .1 no arg, continue starting interactive
|
beq .1 no arg, continue starting interactive
|
||||||
|
|
||||||
@ -144,8 +299,7 @@ CS.INIT jsr SetPWD
|
|||||||
* clc
|
* clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN ldy #VarBuffer READ Command ?
|
CS.RUN >GETG.A bReadMode READ Command ?
|
||||||
lda (pData),y
|
|
||||||
bne CS.RUN.READ
|
bne CS.RUN.READ
|
||||||
|
|
||||||
ldy #S.PS.RC
|
ldy #S.PS.RC
|
||||||
@ -165,8 +319,7 @@ CS.RUN ldy #VarBuffer READ Command ?
|
|||||||
.13 jsr CheckSleep
|
.13 jsr CheckSleep
|
||||||
bne .8
|
bne .8
|
||||||
|
|
||||||
ldy #CSH.hBuf batch mode ?
|
>GETG.A CSH.hBuf batch mode ?
|
||||||
lda (pData),y
|
|
||||||
beq .10
|
beq .10
|
||||||
|
|
||||||
jmp CS.RUN.BATCH
|
jmp CS.RUN.BATCH
|
||||||
@ -224,12 +377,9 @@ CS.RUN.READ lda #0
|
|||||||
|
|
||||||
jsr CS.CHARIN
|
jsr CS.CHARIN
|
||||||
|
|
||||||
lda (pData)
|
>GETG.A bCmdBuf.exec
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
and #$7F
|
|
||||||
sta (pData)
|
|
||||||
|
|
||||||
>PUSHW pData
|
>PUSHW pData
|
||||||
|
|
||||||
lda #VarBuffer
|
lda #VarBuffer
|
||||||
@ -317,7 +467,6 @@ CS.RUN.BATCH jsr CSH.Run
|
|||||||
CS.DOEVENT lda (pEvent)
|
CS.DOEVENT lda (pEvent)
|
||||||
bpl .9
|
bpl .9
|
||||||
|
|
||||||
|
|
||||||
jsr CheckSleep
|
jsr CheckSleep
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
@ -335,32 +484,33 @@ CS.DOEVENT lda (pEvent)
|
|||||||
.9 sec
|
.9 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.CHARIN tax
|
CS.CHARIN >ADDLOCAL 2 room for bCmdBuf
|
||||||
ldy #CSH.hBuf Batch mode ?
|
>GETG.A hCmdBuf
|
||||||
lda (pData),y
|
>SYSCALL GetMemPtr.A
|
||||||
|
>SETL.YA 0
|
||||||
|
|
||||||
|
tax Save Char
|
||||||
|
>GETG.A CSH.hBuf Batch mode ?
|
||||||
beq .10
|
beq .10
|
||||||
* Batch Mode
|
* Batch Mode
|
||||||
cpx #3 test Ctrl-c
|
cpx #3 test Ctrl-c
|
||||||
bne .12
|
bne .12
|
||||||
|
|
||||||
ldy #bExitOnEOF
|
>GETG.A bExitOnEOF
|
||||||
lda (pData),y
|
>SETG.A bExit
|
||||||
ldy #bExit
|
|
||||||
sta (pData),y
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.12 cpx #19 test Ctrl-s
|
.12 cpx #19 test Ctrl-s
|
||||||
bne .8
|
bne .8
|
||||||
ldy #bPause
|
|
||||||
lda #$80
|
lda #$80
|
||||||
sta (pData),y
|
>SETG.A bPause
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
* interactive mode
|
* interactive mode
|
||||||
.10 ldy #bEscMode
|
.10 >GETG.A bEscMode
|
||||||
lda (pData),y
|
|
||||||
beq .13
|
beq .13
|
||||||
|
|
||||||
cpx #'['
|
cpx #'['
|
||||||
@ -421,18 +571,16 @@ CS.CHARIN.CTRL cpx #13 CR
|
|||||||
lda #10
|
lda #10
|
||||||
>SYSCALL PutChar.A
|
>SYSCALL PutChar.A
|
||||||
|
|
||||||
lda (pData) CmdBuffer
|
lda #$ff
|
||||||
ora #$80
|
>SETG.A bCmdBuf.exec
|
||||||
sta (pData)
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.10 cpx #$1B esc
|
.10 cpx #$1B esc
|
||||||
bne .11
|
bne .11
|
||||||
|
|
||||||
ldy #bEscMode
|
|
||||||
lda #$ff
|
lda #$ff
|
||||||
sta (pData),y
|
>SETG.A bEscMode
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
@ -605,8 +753,12 @@ CSH.ARG .BS 5
|
|||||||
.DUMMY
|
.DUMMY
|
||||||
.OR 0
|
.OR 0
|
||||||
DS.START
|
DS.START
|
||||||
CmdBuffer .BS CmdLine.MAX+1 (pData)
|
hCmdBuf .BS 1
|
||||||
VarBuffer .BS VarLen.MAX+1
|
CmdBuf.len .BS 1
|
||||||
|
bCmdBuf.exec .BS 1
|
||||||
|
|
||||||
|
bReadMode .BS 1
|
||||||
|
|
||||||
bEscMode .BS 1
|
bEscMode .BS 1
|
||||||
bPause .BS 1
|
bPause .BS 1
|
||||||
bExit .BS 1
|
bExit .BS 1
|
||||||
|
Loading…
Reference in New Issue
Block a user