mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-02 18:32:20 +00:00
Kernel 0.9.1 : Code reorganization & move to CSTR (SHELL)
This commit is contained in:
parent
17a4222ff7
commit
b057d6e2f5
Binary file not shown.
Binary file not shown.
@ -226,15 +226,17 @@ SCRN.UpdateStatusBar
|
||||
lda (pData),y
|
||||
bne .2
|
||||
|
||||
ldy #FileY+1
|
||||
ldy #FileY
|
||||
lda (pData),y
|
||||
tax
|
||||
dey
|
||||
iny
|
||||
lda (pData),y
|
||||
inc
|
||||
bne .1
|
||||
inx
|
||||
.1 >PUSHAX
|
||||
bne .1
|
||||
inc
|
||||
.1 >PUSHA
|
||||
txa
|
||||
>PUSHA
|
||||
|
||||
ldy #FileX
|
||||
lda (pData),y
|
||||
|
@ -137,7 +137,7 @@ CS.RUN >LDYA L.SEQ.DETECT
|
||||
bcs .9
|
||||
|
||||
.1 >SYSCALL Sleep
|
||||
>SYSCALL GetC
|
||||
>SYSCALL GetChar
|
||||
bcs .1
|
||||
|
||||
jsr CharIn
|
||||
@ -154,7 +154,7 @@ CS.RUN >LDYA L.SEQ.DETECT
|
||||
bne .99
|
||||
|
||||
>SYSCALL Sleep
|
||||
>SYSCALL GetC
|
||||
>SYSCALL GetChar
|
||||
|
||||
bcs .2
|
||||
|
||||
|
@ -277,7 +277,7 @@ SYS.GetMemByID.A .EQ $C6
|
||||
SYS.GetMem.YA .EQ $C8
|
||||
SYS.GetMem0.YA .EQ $CA
|
||||
* .EQ $CC
|
||||
* .EQ $CE
|
||||
SYS.NewStr.YA .EQ $CE
|
||||
|
||||
SYS.SetLoMem .EQ $D0
|
||||
SYS.GetMemStat.YA .EQ $D2
|
||||
|
@ -113,7 +113,37 @@ AUTO 6
|
||||
jsr A2osX.MLICALL
|
||||
.EM
|
||||
*--------------------------------------
|
||||
* D.STACK PUSH/PULL Macros
|
||||
* Global DATA Segment Access
|
||||
*--------------------------------------
|
||||
.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
|
||||
*--------------------------------------
|
||||
* STACK PUSH/PULL
|
||||
*--------------------------------------
|
||||
.MA PUSHA
|
||||
dec pStack
|
||||
@ -140,26 +170,6 @@ AUTO 6
|
||||
lda (pStack)
|
||||
inc pStack
|
||||
.EM
|
||||
*--------------------------------------
|
||||
.MA PUSHAX
|
||||
pha
|
||||
txa
|
||||
dec pStack
|
||||
sta (pStack)
|
||||
pla
|
||||
dec pStack
|
||||
sta (pStack)
|
||||
.EM
|
||||
*--------------------------------------
|
||||
.MA PULLAX
|
||||
lda (pStack)
|
||||
inc pStack
|
||||
pha
|
||||
lda (pStack)
|
||||
inc pStack
|
||||
tax
|
||||
pla
|
||||
.EM
|
||||
*--------------------------------------
|
||||
.MA PUSHBI
|
||||
dec pStack
|
||||
|
@ -84,7 +84,11 @@ L.ProDOS.Boot .DA ProDOS.Boot
|
||||
* Y,A=BufSize (max $4400)
|
||||
*\--------------------------------------
|
||||
GetProDOSCatSize
|
||||
>PULLAX A=DevSizeLo
|
||||
>PULLA
|
||||
pha
|
||||
>PULLA
|
||||
tax
|
||||
pla A=DevSizeLo
|
||||
|
||||
GetProDOSCatSizeAX
|
||||
clc for now, no partial bitmap blk to add
|
||||
|
@ -7,14 +7,12 @@ AUTO 6
|
||||
*--------------------------------------
|
||||
* Remove extra SPACE & comment
|
||||
*--------------------------------------
|
||||
Cmd.Normalize >LDYA pData
|
||||
Cmd.Normalize >LDYA ZPBufBase
|
||||
>STYA ZPPtr1
|
||||
|
||||
lda (pData) empty line...quit
|
||||
lda (ZPBufBase) empty line...quit
|
||||
beq .9
|
||||
|
||||
tax Char count
|
||||
|
||||
ldy #0
|
||||
|
||||
.1 jsr Cmd.Normalize.Next
|
||||
@ -26,8 +24,8 @@ Cmd.Normalize >LDYA pData
|
||||
cmp #'#' Comment ?
|
||||
beq .8 ignore remaining chars
|
||||
|
||||
.3 iny add char to buffer
|
||||
sta (pData),y
|
||||
.3 sta (ZPBufBase),y add char to buffer
|
||||
iny
|
||||
|
||||
jsr Cmd.Normalize.Next
|
||||
beq .8
|
||||
@ -35,28 +33,28 @@ Cmd.Normalize >LDYA pData
|
||||
cmp #' '
|
||||
bne .3
|
||||
|
||||
iny add One SPACE to buffer
|
||||
sta (pData),y
|
||||
sta (ZPBufBase),y add One SPACE to buffer
|
||||
iny
|
||||
|
||||
.5 jsr Cmd.Normalize.Next
|
||||
beq .8
|
||||
|
||||
cmp #' '
|
||||
beq .5 skip additional spaces
|
||||
bne .3 no more space, add next word...
|
||||
|
||||
.8 tya
|
||||
sta (pData)
|
||||
.8 lda #0
|
||||
sta (ZPBufBase),y
|
||||
|
||||
.9 rts
|
||||
|
||||
Cmd.Normalize.Next
|
||||
txa
|
||||
lda (ZPPtr1)
|
||||
beq .8
|
||||
dex
|
||||
|
||||
inc ZPPtr1
|
||||
bne .1
|
||||
inc ZPPtr1+1
|
||||
.1 lda (ZPPtr1)
|
||||
bne .8
|
||||
inc ZPPtr1+1 never Z
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
* Y,A -> Command line (formatted & not empty)
|
||||
@ -152,8 +150,9 @@ Cmd.Exec.EXT ldy #1
|
||||
lda (ZPPtr1),y
|
||||
cmp #'/' Command line is already full path, no search
|
||||
bne .10
|
||||
jmp .3
|
||||
|
||||
>LDYA L.ENV.PATH push ENVNAME=PATH for search
|
||||
.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
|
||||
|
||||
|
215
SBIN/SHELL.S.txt
215
SBIN/SHELL.S.txt
@ -1,6 +1,6 @@
|
||||
PR#3
|
||||
PREFIX /A2OSX.BUILD
|
||||
NEW
|
||||
LOMEM $A00
|
||||
INC 1
|
||||
AUTO 6
|
||||
.LIST OFF
|
||||
@ -14,158 +14,6 @@ AUTO 6
|
||||
*--------------------------------------
|
||||
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
|
||||
@ -309,8 +157,7 @@ CS.RUN >GETG.A bReadMode READ Command ?
|
||||
jsr IO.PrintErrMsg
|
||||
bcs CS.RUN.EXIT.RTS
|
||||
|
||||
.11 ldy #bPause
|
||||
lda (pData),y
|
||||
.11 >GETG.A bPause
|
||||
bpl .13
|
||||
|
||||
>SYSCALL GetChar
|
||||
@ -324,11 +171,16 @@ CS.RUN >GETG.A bReadMode READ Command ?
|
||||
|
||||
jmp CS.RUN.BATCH
|
||||
|
||||
.10 lda #0
|
||||
sta (pData)
|
||||
* Interactive Mode
|
||||
|
||||
ldy #bSecureRead
|
||||
sta (pData),y
|
||||
.10 >GETG.A hCmdBuf Get the buffer
|
||||
>SYSCALL GetMemPtr.A
|
||||
>STYA ZPBufBase
|
||||
|
||||
lda #0 reset it
|
||||
sta (ZPBufBase)
|
||||
|
||||
>SETG.A bSecureRead Clear password mode
|
||||
|
||||
.12 jsr PrintPrompt
|
||||
bcs CS.RUN.EXIT.RTS
|
||||
@ -339,14 +191,12 @@ CS.RUN >GETG.A bReadMode READ Command ?
|
||||
|
||||
jsr CS.CHARIN
|
||||
|
||||
lda (pData)
|
||||
>GETG.A bCmdBufexec Something to execute ?
|
||||
bpl .1
|
||||
|
||||
and #$7F
|
||||
sta (pData)
|
||||
|
||||
jsr Cmd.Normalize
|
||||
lda (pData)
|
||||
|
||||
>GETG.A CmdBuflen
|
||||
beq .12 Empty line
|
||||
|
||||
jsr HIS.Add
|
||||
@ -368,8 +218,12 @@ CS.RUN.EXIT lda #0
|
||||
CS.RUN.EXIT.ERR sec
|
||||
CS.RUN.EXIT.RTS rts
|
||||
*--------------------------------------
|
||||
CS.RUN.READ lda #0
|
||||
sta (pData)
|
||||
CS.RUN.READ >GETG.A hCmdBuf Get the buffer
|
||||
>SYSCALL GetMemPtr.A
|
||||
>STYA ZPBufBase
|
||||
|
||||
lda #0 reset it
|
||||
sta (ZPBufBase)
|
||||
|
||||
.1 >SYSCALL Sleep
|
||||
>SYSCALL GetChar
|
||||
@ -377,10 +231,10 @@ CS.RUN.READ lda #0
|
||||
|
||||
jsr CS.CHARIN
|
||||
|
||||
>GETG.A bCmdBuf.exec
|
||||
>GETG.A bCmdBufexec
|
||||
bpl .1
|
||||
|
||||
>PUSHW pData
|
||||
>PUSHW ZPBufBase
|
||||
|
||||
lda #VarBuffer
|
||||
clc
|
||||
@ -484,12 +338,7 @@ CS.DOEVENT lda (pEvent)
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.CHARIN >ADDLOCAL 2 room for bCmdBuf
|
||||
>GETG.A hCmdBuf
|
||||
>SYSCALL GetMemPtr.A
|
||||
>SETL.YA 0
|
||||
|
||||
tax Save Char
|
||||
CS.CHARIN tax Save Char
|
||||
>GETG.A CSH.hBuf Batch mode ?
|
||||
beq .10
|
||||
* Batch Mode
|
||||
@ -510,14 +359,18 @@ CS.CHARIN >ADDLOCAL 2 room for bCmdBuf
|
||||
rts
|
||||
|
||||
* interactive mode
|
||||
.10 >GETG.A bEscMode
|
||||
.10 >GETG.A hCmdBuf
|
||||
>SYSCALL GetMemPtr.A
|
||||
>STYA ZPBufBase
|
||||
|
||||
>GETG.A bEscMode
|
||||
beq .13
|
||||
|
||||
cpx #'['
|
||||
beq .8
|
||||
|
||||
lda #0
|
||||
sta (pData),y
|
||||
sta (pData),y Y=bEscMode
|
||||
|
||||
txa
|
||||
|
||||
@ -572,7 +425,7 @@ CS.CHARIN.CTRL cpx #13 CR
|
||||
>SYSCALL PutChar.A
|
||||
|
||||
lda #$ff
|
||||
>SETG.A bCmdBuf.exec
|
||||
>SETG.A bCmdBufexec
|
||||
clc
|
||||
rts
|
||||
|
||||
@ -754,8 +607,8 @@ CSH.ARG .BS 5
|
||||
.OR 0
|
||||
DS.START
|
||||
hCmdBuf .BS 1
|
||||
CmdBuf.len .BS 1
|
||||
bCmdBuf.exec .BS 1
|
||||
CmdBuflen .BS 1
|
||||
bCmdBufexec .BS 1
|
||||
|
||||
bReadMode .BS 1
|
||||
|
||||
@ -766,12 +619,16 @@ bEcho .BS 1
|
||||
bSecureRead .BS 1
|
||||
bExitOnEOF .BS 1
|
||||
Sleep .BS 4
|
||||
VarBuffer .BS 16
|
||||
|
||||
HIS.hBuf .BS 1
|
||||
HIS.BufIndex .BS 1
|
||||
HIS.BufEnd .BS 1
|
||||
|
||||
IO.hIn .BS 1
|
||||
IO.hOut .BS 1
|
||||
IO.hErr .BS 1
|
||||
|
||||
CSH.hBuf .BS 1
|
||||
CSH.BufPtr .BS 2
|
||||
CSH.BufLen .BS 2
|
||||
|
@ -127,7 +127,7 @@ K.SYSCALL.JMP .DA 0 $00
|
||||
.DA K.GetMem.YA
|
||||
.DA K.GetMem0.YA
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA K.NewStr.YA
|
||||
*--------------------------------------
|
||||
.DA K.SetLoMem $D0
|
||||
.DA K.GetMemStat.YA
|
||||
|
@ -33,28 +33,32 @@ MemMgr.ReqFlags .EQ ZPMEMMGR+6 store requested Flags
|
||||
* A = EC
|
||||
*\--------------------------------------
|
||||
K.GetMem >PULLB MemMgr.ReqFlags store requested flags
|
||||
|
||||
clc
|
||||
>PULLA get requested size LO
|
||||
bit #$0F 16 bytes aligned ?
|
||||
beq .1 yes, request it
|
||||
|
||||
and #$F0 align on 16 bytes
|
||||
adc #$10
|
||||
|
||||
.1 sta MemMgr.ReqSize
|
||||
|
||||
>PULLA get requested size HI
|
||||
adc #0
|
||||
sta MemMgr.ReqSize+1
|
||||
|
||||
bit MemMgr.ReqFlags S.MEM.F.AUX ?
|
||||
bpl K.GetMem.I
|
||||
|
||||
and #S.MEM.F.AUX
|
||||
beq .1
|
||||
|
||||
sta SETREADAUX Aux Mem requested,switch to AUX
|
||||
sta SETWRITEAUX
|
||||
|
||||
.1 >PULLAX get requested size
|
||||
bit #$0F 16 bytes aligned ?
|
||||
beq .2 yes, request it
|
||||
|
||||
and #$F0 align on 16 bytes
|
||||
clc
|
||||
adc #$10
|
||||
bcc .2
|
||||
inx
|
||||
|
||||
.2 >STAX MemMgr.ReqSize
|
||||
jsr K.GetMem.I
|
||||
|
||||
bit MemMgr.ReqFlags S.MEM.F.AUX ?
|
||||
bpl .9
|
||||
|
||||
sta CLRREADAUX
|
||||
sta CLRWRITEAUX
|
||||
|
||||
@ -436,6 +440,35 @@ K.GetMemByID.A sta ZPMemMgrSPtr
|
||||
* sty ZPMemMgrSPtr
|
||||
* sta ZPMemMgrSPtr+1
|
||||
* rts
|
||||
*/--------------------------------------
|
||||
* # NewStr.YA
|
||||
* Create a new copy of this C-String
|
||||
* ## In:
|
||||
* Y,A = Ptr to source C-String
|
||||
* ## Out:
|
||||
* CC : success
|
||||
* Y,A = PTR to String
|
||||
* X = hMem (PSTR)
|
||||
* CS : error
|
||||
* A = SYS error code
|
||||
*\--------------------------------------
|
||||
K.NewStr.YA >STYA .1+1
|
||||
>STYA .
|
||||
|
||||
.1 lda $ffff,
|
||||
|
||||
|
||||
|
||||
|
||||
stz MemMgr.ReqFlags
|
||||
jsr K.GemMem.YA
|
||||
bcs .9
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
*--------------------------------------
|
||||
K.LoadStkObj.YA
|
||||
*--------------------------------------
|
||||
@ -449,7 +482,7 @@ K.SetLoMem
|
||||
*/--------------------------------------
|
||||
* # GetMemStat.YA
|
||||
* ## In:
|
||||
* Y,A = 24 bytes buffer
|
||||
* Y,A = Ptr to 24 bytes buffer
|
||||
* ## Out:
|
||||
* Buffer filled with memory stats
|
||||
*\--------------------------------------
|
||||
|
Loading…
x
Reference in New Issue
Block a user