Kernel 0.9.1 : Code reorganization & move to CSTR (SHELL)

This commit is contained in:
Rémy GIBERT 2017-09-05 17:17:10 +02:00
parent 17a4222ff7
commit b057d6e2f5
11 changed files with 147 additions and 242 deletions

Binary file not shown.

Binary file not shown.

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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
.10 >GETG.A hCmdBuf Get the buffer
>SYSCALL GetMemPtr.A
>STYA ZPBufBase
ldy #bSecureRead
sta (pData),y
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,13 +338,8 @@ 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
>GETG.A CSH.hBuf Batch mode ?
CS.CHARIN tax Save Char
>GETG.A CSH.hBuf Batch mode ?
beq .10
* Batch Mode
cpx #3 test Ctrl-c
@ -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

View File

@ -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

View File

@ -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
*\--------------------------------------