Kernel 0.9.1 : Code reorganization & move to CSTR

This commit is contained in:
Rémy GIBERT 2017-08-24 17:29:22 +02:00
parent 78cfec8668
commit 278104b43c
21 changed files with 229 additions and 223 deletions

Binary file not shown.

Binary file not shown.

View File

@ -46,7 +46,7 @@ CS.RUN >SYSCALL GetArgC
bcs .9
stx hFullPath
>SYSCALL MKDirYA
>SYSCALL MKDir.YA
bcs .9
lda #0

View File

@ -379,7 +379,7 @@ CS.RUN.DIR jsr CS.RUN.DIR.MSG
.3 ldy #hDstFullPath
jsr CS.RUN.GetPathY
>SYSCALL MKDirYA
>SYSCALL MKDir.YA
.4 jsr CS.RUN.CheckErr
bcs CS.RUN.DIR.RTS

View File

@ -202,7 +202,7 @@ SYS.STAT .EQ $34
SYS.OpenDirYA .EQ $38
SYS.ReadDirA .EQ $3A
SYS.CloseDirA .EQ $3C
SYS.MKDirYA .EQ $3E
SYS.MKDir.YA .EQ $3E
*--------------------------------------
* .EQ $40
SYS.SScanF .EQ $42
@ -233,12 +233,12 @@ SYS.Sleep .EQ $6C
*--------------------------------------
SYS.GetArgC .EQ $70
SYS.GetArg.A .EQ $72
SYS.ExpandPStrYA .EQ $74
SYS.ExpandStr.YA .EQ $74
* .EQ $76
SYS.PutEnvYA .EQ $78
SYS.PutEnv.YA .EQ $78
SYS.SetEnv .EQ $7A
SYS.GetEnvYA .EQ $7C
SYS.UnsetEnvYA .EQ $7E
SYS.GetEnv.YA .EQ $7C
SYS.UnsetEnv.YA .EQ $7E
*--------------------------------------
SYS.GetDevByIDA .EQ $80
SYS.GetDevByNameYA .EQ $82

View File

@ -67,7 +67,7 @@ CS.INIT >SYSCALL GetArgC
>SYSCALL GetArg.A
bcs .9
>SYSCALL ExpandPStrYA
>SYSCALL ExpandStr.YA
bcs .9
txa

View File

@ -64,7 +64,7 @@ CS.INIT clc
rts
*--------------------------------------
CS.RUN >LDYA L.FILENAME
>SYSCALL ExpandPStrYA
>SYSCALL ExpandStr.YA
txa
ldy #hFileName
sta (pData),y

View File

@ -86,7 +86,7 @@ CS.RUN lda #0
bcs .9
>LDYA L.SHELL
>SYSCALL ExpandPStrYA
>SYSCALL ExpandStr.YA
bcs .9
stx .3+1

View File

@ -63,7 +63,7 @@ Cmd.Normalize.Next
*--------------------------------------
Cmd.ExecYA stz bStartProc
Cmd.ExecYA.1 >SYSCALL ExpandPStrYA
Cmd.ExecYA.1 >SYSCALL ExpandStr.YA
>STYA ZPPtr1
>STYA ZPPtr2
stx Cmd.ExecYA.Exit.1+1

View File

@ -499,7 +499,7 @@ SetPWD ldy #S.PS.hPREFIX
*--------------------------------------
PrintPrompt >LDYA L.ENV.PS1
>SYSCALL GetEnvYA
>SYSCALL ExpandPStrYA
>SYSCALL ExpandStr.YA
phx
>PUSHYA
>LDYA L.MSG.PROMPT

View File

@ -48,7 +48,7 @@ CFG.Read.HOSTNAME
stz CFG.hCfgPath
>LDYA L.HOSTNAME
>SYSCALL ExpandPStrYA
>SYSCALL ExpandStr.YA
bcs .99
stx CFG.hCfgPath
@ -103,7 +103,7 @@ CFG.Read.TCPIP.CONF
stz CFG.hCfgPath
>LDYA L.TCPIP.CONF
>SYSCALL ExpandPStrYA
>SYSCALL ExpandStr.YA
bcs .99
stx CFG.hCfgPath

View File

@ -13,7 +13,7 @@ AUTO 6
K.LoadDrv.YA >STYA K.LoadDrv.CmdArray
>LDYAI ENV.DRV push ENVNAME=DRV
>SYSCALL GetEnvYA get value for ENV=DRV
>SYSCALL GetEnv.YA get value for ENV=DRV
bcs .9
>PUSHYA Push $DRV value
@ -70,7 +70,7 @@ K.LoadDrv.CmdArray .BS 2
*--------------------------------------
K.LoadLib.YA >STYA K.LoadLib.Name SAVE LIBname for K.FileSearch
>LDYAI ENV.LIB push ENVNAME=LIB
>SYSCALL GetEnvYA get value for ENV=LIB
>SYSCALL GetEnv.YA get value for ENV=LIB
bcs .9
>PUSHYA Push $LIB value
@ -466,9 +466,9 @@ BIN.RelocateDRV ldy #H.BIN.DRV.REL.TABLE
adc ZPPtr1
sta ZPPtr1
bcc .3
inc ZPPtr1+1 ZPPtr1=Current Code PTR
inc ZPPtr1+1 ZPPtr1=Current Code PTR
.3 lda (ZPPtr1) get OPCODE
.3 lda (ZPPtr1) get OPCODE
lsr /2
tax
lda BIN.OPCODES,x get OPCODE definition

View File

@ -93,125 +93,6 @@ K.GetDevStatusA jsr K.GetDevByIDA
>STYA ZPPtr1
ldx #DEVMGR.STATUS
jmp (ZPPtr1)
*/--------------------------------------
* # MkNodYA
* return a hFile for a given Device Name
* ## IN:
* Y,A=DevName
* ## OUT:
* CC = OK, CS = ERROR
* A = hFILE
*\--------------------------------------
K.MkNodYA jsr K.GetDevByNameYA Ptr1=NAME
bcs .9
>STYA pDev
stx .1+1
ldy #S.DEV.S
lda (pDev),y
bit #S.DEV.S.BLOCK
bne .99
txa Pass DEV.ID to OPEN
ldx #DEVMGR.OPEN
jsr pDevJmp
bcs .9
>LDYAI S.NODE.DEV
jsr K.GetMem0YA
bcs .9
>STYA ZPPtr3 Ptr3=S.NODE
ldy #S.NODE.T
lda #S.NODE.T.CDEV
sta (ZPPtr3),y
ldy #S.NODE.DEV.ID
.1 lda #$ff Self Modified
sta (ZPPtr3),y
ldy #S.NODE.DEV.JMP
lda pDev
sta (ZPPtr3),y
iny
lda pDev+1
sta (ZPPtr3),y
txa
clc
.9 rts
.99 lda #MLI.ERR.IO
sec
rts
*/--------------------------------------
* # MkNodA
* return a hFile for a given Socket
* ## IN:
* A=hSocket
* ## OUT:
* CC = OK, CS = ERROR
* X = hFILE
* Y,A = pFILE
*\--------------------------------------
K.MkNodA sta .1+1
>LDYAI S.NODE.SSOCK
jsr K.GetMem0YA
bcs .9
>STYA ZPPtr1
ldy #S.NODE.T
lda #S.NODE.T.SSOCK
sta (ZPPtr1),y
ldy #S.NODE.SSOCK.HSKT
.1 lda #$ff
sta (ZPPtr1),y
>LDYA ZPPtr1
.9 rts
*/--------------------------------------
* # MKFIFO
* return a S.FILE to a new FIFO
* ## IN:
* ## OUT:
* CC = OK, CS = ERROR
* A = hFILE
*\--------------------------------------
K.MKFIFO >LDYAI 256
jsr K.GetMemYA
bcs .99
stx .1+1 save FIFO buffer
>LDYAI S.NODE.FIFO
jsr K.GetMem0YA
bcs .9
>STYA ZPPtr1
ldy #S.NODE.T
lda #S.NODE.T.FIFO
sta (ZPPtr1),y
iny S.NODE.FIFO.hMem
.1 lda #$ff Self Modified
sta (ZPPtr1),y
txa
clc
rts
.9 pha save error code
lda .1+1 get back FIFO buffer
jsr K.FreeMemA
pla
sec
.99 rts
*--------------------------------------
MAN
SAVE /A2OSX.SRC/SYS/KERNEL.S.DEV

View File

@ -6,7 +6,7 @@ AUTO 6
*/--------------------------------------
* # OpenDirYA
* ## In:
* Y,A = PATH (PSTR)
* Y,A = PATH (C-String)
* ## Out:
* CC : success
* A = hDIR
@ -23,15 +23,11 @@ K.OpenDirYA jsr PFT.CheckPathYA
>STYA ZPPtr1
stx K.ReadDirA.hDir
lda (ZPPtr2)
cmp #1 One char ?
bne .7 No, Go open dir....
tay Y=1
lda (ZPPtr2),y
cmp #'/' Root required ?
beq .8 Yes, Go for ONLINE Call (S.DIR.PRODOS.REF=0)
ldy #1
lda (ZPPtr2),y One char ?
beq .8 No, Go open dir....
.7 >MLICALL MLIGETFILEINFO
bcs .98 file/dir does not exists....quit
lda K.MLI.PARAMS+4
@ -45,7 +41,7 @@ K.OpenDirYA jsr PFT.CheckPathYA
>MLICALL MLIOPEN
bcs .98
lda K.MLI.PARAMS+5 get ref_num
lda K.MLI.PARAMS+5 get ref_num
ldy #S.NODE.DIR.REF
sta (ZPPtr1),y
@ -147,7 +143,6 @@ K.ReadDirA.ROOT ldy #S.NODE.DIR.FC did we already returned something ?
beq .88
tax
jsr K.ReadDirA.AddToBuf
inc
sta K.MLI.PATH
lda #'/'
@ -161,6 +156,9 @@ K.ReadDirA.ROOT ldy #S.NODE.DIR.FC did we already returned something ?
dex
bne .4
txa Add ending 0 for C String
jsr K.ReadDirA.AddToBuf
jsr K.ReadDirA.ClrStat
lda (ZPPtr2)
@ -436,13 +434,13 @@ K.ReadDirA.ADD. ldx #1 filename="1."
.HS 2C bit abs
K.ReadDirA.ADD..
ldx #2 filename="2.."
txa
jsr K.ReadDirA.AddToBuf Add LEN
lda #'.'
.1 jsr K.ReadDirA.AddToBuf Add X dot(s)
dex
bne .1
txa
jsr K.ReadDirA.AddToBuf Add Ending 0
jsr K.ReadDirA.ClrStat
@ -559,7 +557,6 @@ K.ReadDirA.AddFNToBuf
.7 lda (ZPPtr3)
and #$0F get filename len
tax
jsr K.ReadDirA.AddToBuf
ldy #1
@ -568,6 +565,10 @@ K.ReadDirA.AddFNToBuf
iny
dex
bne .8
txa
jsr K.ReadDirA.AddToBuf
rts
*--------------------------------------
K.ReadDirA.AddToBuf
@ -599,34 +600,6 @@ ADDF.DST .DA #S.STAT.P.TYPE,#S.STAT.BLOCKS,#S.STAT.BLOCKS+1
*\-------------------------------------
K.CloseDirA .EQ K.FCloseA
K.CloseDirA.1 .EQ K.FCloseA.1
*/-------------------------------------
* # MKDirYA
* ## In:
* Y,A = DIR name
* ## Out:
* CC : success
* CS : error
* A = EC
*\-------------------------------------
K.MKDirYA jsr PFT.CheckPathYA
>STYA K.MLI.PARAMS+1
lda #S.FILEINFO.ACCESS.FULL
sta K.MLI.PARAMS+S.FILEINFO.ACCESS
lda #S.FILEINFO.TYPE.DIR
sta K.MLI.PARAMS+S.FILEINFO.TYPE
lda #S.FILEINFO.STORETYPE.DIR
sta K.MLI.PARAMS+S.FILEINFO.STORETYPE
* jsr DATETIME
ldx #3
.1 lda DATELO,x
sta K.MLI.PARAMS+8,x
dex
bpl .1
>MLICALL MLICREATE
rts
*--------------------------------------
MAN
SAVE /A2OSX.SRC/SYS/KERNEL.S.DIRENT

View File

@ -34,9 +34,9 @@ K.FileSearch >PULLW ZPPtr2 DstBuf
.9 rts
K.FileSearch.I >PULLW ZPPtr4 ZPPtr1 trashed by ExpandPStrYA
K.FileSearch.I >PULLW ZPPtr4 ZPPtr1 trashed by ExpandStr.YA
>PULLYA Get Search list
>SYSCALL ExpandPStrYA Expand it (SYSCALL to BNK1)
>SYSCALL ExpandStr.YA Expand it (SYSCALL to BNK1)
bcs .99
stx .98+1
@ -235,9 +235,8 @@ K.SaveFile jsr K.FOpen
jsr K.FCloseA
pla
sec
rts
rts
.9 pha
>POP 4 Discard SrcPtr & SrcLen
pla
@ -260,15 +259,6 @@ K.ChTyp jsr PFT.CheckPathSTK
>MLICALL MLISETFILEINFO
.9 rts
*/--------------------------------------
* # ChMod
* ## In:
* PUSHW = MODE
* PUSHW = PATH
*\--------------------------------------
K.ChMod
sec
rts
*/--------------------------------------
* # ChOwn
* ## In:
* PUSHW = UID

View File

@ -145,7 +145,7 @@ Kernel.Init3 sta SETALTZP
>SYSCALL PrintFYA
>LDYAI STARTUP.CMDLINE
>SYSCALL ExpandPStrYA
>SYSCALL ExpandStr.YA
phx Save Expanded CMDLINE for discard
>SYSCALL CreateProcessYA
bcs .9
@ -794,15 +794,15 @@ TskMgrInit >LDYAI TskMgr.Table+S.PS Clear whole process table except PS0
bcs .9
>LDYAI I.ENV.PATH
>SYSCALL PutEnvYA
>SYSCALL PutEnv.YA
bcs .9
>LDYAI I.ENV.LIB
>SYSCALL PutEnvYA
>SYSCALL PutEnv.YA
bcs .9
>LDYAI I.ENV.DRV
>SYSCALL PutEnvYA
>SYSCALL PutEnv.YA
.9 rts
*--------------------------------------
MSG.Init2 >CSTR "A2osX[Stage2]:Init\nInstalling KERNEL...\n - $BE00 Global Page...\n"

View File

@ -42,7 +42,7 @@ K.SYSCALL.JMP .DA K.FileSearch $00
.DA K.OpenDirYA
.DA K.ReadDirA
.DA K.CloseDirA
.DA K.MKDirYA
.DA K.MKDir.YA
*--------------------------------------
* Bank 2
*--------------------------------------

View File

@ -22,7 +22,7 @@ K.PFTRemove
*--------------------------------------
* PFT.CheckPath___
* In :
* PULLW/Y,A = PATH (PSTR)
* PULLW/Y,A = PATH (C-String)
* Out :
*--------------------------------------
PFT.CheckPathSTK
@ -38,23 +38,29 @@ PFT.CheckPathYA
>LDYAI FltMgr.Table
>STYA ZPPtr2
.1 lda (ZPPtr2) Get Filter Len
.1 lda (ZPPtr2) Get Filter char....
beq .9 End Of Table, Exit
tay
lda (ZPPtr1),y is there a "/" at this point in SRC path?
ldy #0
.2 lda (ZPPtr2),y
beq .3 end of filter string....
lda (ZPPtr1),y
beq .8
cmp (ZPPtr2),y
bne .8
iny
bne .2
.3 lda (ZPPtr1),y
cmp #'/'
bne .8
.2 lda (ZPPtr1),y
cmp (ZPPtr2),y
bne .8
dey
bne .2
ldy #S.PFT.HANDLER
lda (ZPPtr2),y get hLib
lda (ZPPtr2),y get hLib
jsr K.GetMemPtrA
>STYA .3+1
>STYA .7+1
lda S.PFT.SYSCALL getback #SYSCALL
sec
@ -64,8 +70,8 @@ PFT.CheckPathYA
pla discard JSR return @
pla
>LDYA ZPPtr1 restore passed params
.3 jmp $ffff
>LDYA ZPPtr1 restore passed params
.7 jmp $ffff
.8 lda ZPPtr2

View File

@ -72,6 +72,162 @@ K.Stat.SRC .DA #S.FILEINFO.TYPE
K.Stat.DST .DA #S.STAT.P.TYPE
.DA #S.STAT.P.AUXTYPE,#S.STAT.P.AUXTYPE+1
.DA #S.STAT.BLOCKS,#S.STAT.BLOCKS+1
*/-------------------------------------
* # MKDir.YA
* ## In:
* Y,A = DIR name
* ## Out:
* CC : success
* CS : error
* A = EC
*\-------------------------------------
K.MKDir.YA jsr PFT.CheckPathYA
>STYA K.MLI.PARAMS+1
lda #S.FILEINFO.ACCESS.FULL
sta K.MLI.PARAMS+S.FILEINFO.ACCESS
lda #S.FILEINFO.TYPE.DIR
sta K.MLI.PARAMS+S.FILEINFO.TYPE
lda #S.FILEINFO.STORETYPE.DIR
sta K.MLI.PARAMS+S.FILEINFO.STORETYPE
* jsr DATETIME
ldx #3
.1 lda DATELO,x
sta K.MLI.PARAMS+8,x
dex
bpl .1
>MLICALL MLICREATE
rts
*/--------------------------------------
* # MkNodYA
* return a hFile for a given Device Name
* ## IN:
* Y,A=DevName
* ## OUT:
* CC = OK, CS = ERROR
* A = hFILE
*\--------------------------------------
K.MkNodYA jsr K.GetDevByNameYA Ptr1=NAME
bcs .9
>STYA pDev
stx .1+1
ldy #S.DEV.S
lda (pDev),y
bit #S.DEV.S.BLOCK
bne .99
txa Pass DEV.ID to OPEN
ldx #DEVMGR.OPEN
jsr pDevJmp
bcs .9
>LDYAI S.NODE.DEV
jsr K.GetMem0YA
bcs .9
>STYA ZPPtr3 Ptr3=S.NODE
ldy #S.NODE.T
lda #S.NODE.T.CDEV
sta (ZPPtr3),y
ldy #S.NODE.DEV.ID
.1 lda #$ff Self Modified
sta (ZPPtr3),y
ldy #S.NODE.DEV.JMP
lda pDev
sta (ZPPtr3),y
iny
lda pDev+1
sta (ZPPtr3),y
txa
clc
.9 rts
.99 lda #MLI.ERR.IO
sec
rts
*/--------------------------------------
* # MkNodA
* return a hFile for a given Socket
* ## IN:
* A=hSocket
* ## OUT:
* CC = OK, CS = ERROR
* X = hFILE
* Y,A = pFILE
*\--------------------------------------
K.MkNodA sta .1+1
>LDYAI S.NODE.SSOCK
jsr K.GetMem0YA
bcs .9
>STYA ZPPtr1
ldy #S.NODE.T
lda #S.NODE.T.SSOCK
sta (ZPPtr1),y
ldy #S.NODE.SSOCK.HSKT
.1 lda #$ff
sta (ZPPtr1),y
>LDYA ZPPtr1
.9 rts
*/--------------------------------------
* # MKFIFO
* return a S.FILE to a new FIFO
* ## IN:
* ## OUT:
* CC = OK, CS = ERROR
* A = hFILE
*\--------------------------------------
K.MKFIFO >LDYAI 256
jsr K.GetMemYA
bcs .99
stx .1+1 save FIFO buffer
>LDYAI S.NODE.FIFO
jsr K.GetMem0YA
bcs .9
>STYA ZPPtr1
ldy #S.NODE.T
lda #S.NODE.T.FIFO
sta (ZPPtr1),y
iny S.NODE.FIFO.hMem
.1 lda #$ff Self Modified
sta (ZPPtr1),y
txa
clc
rts
.9 pha save error code
lda .1+1 get back FIFO buffer
jsr K.FreeMemA
pla
sec
.99 rts
*/--------------------------------------
* # ChMod
* ## In:
* PUSHW = MODE
* PUSHW = PATH
*\--------------------------------------
K.ChMod
sec
rts
*--------------------------------------
MAN
SAVE /A2OSX.SRC/SYS/KERNEL.S.STAT

View File

@ -448,11 +448,11 @@ K.PutCharA.1 sta K.PutC.Node
*--------------------------------------
K.PutCharA.Jmp jmp (.1,x)
.1 .DA K.PutCharA.REG
.DA K.CHR.IOERR DIR
.DA STDIO.IOERR DIR
.DA K.PutCharA.CDEV
.DA K.CHR.IOERR BDEV
.DA K.CHR.IOERR LNK
.DA K.CHR.IOERR DSOCK
.DA STDIO.IOERR BDEV
.DA STDIO.IOERR LNK
.DA STDIO.IOERR DSOCK
.DA K.PutCharA.SSOCK
.DA K.PutCharA.FIFO
*--------------------------------------
@ -551,11 +551,11 @@ K.GetCA sta K.PutC.Node
jmp (.1,x)
.1 .DA K.GetC.REG
.DA K.CHR.IOERR DIR
.DA STDIO.IOERR DIR
.DA K.GetC.CDEV
.DA K.CHR.IOERR BDEV
.DA K.CHR.IOERR LNK
.DA K.CHR.IOERR DSOCK
.DA STDIO.IOERR BDEV
.DA STDIO.IOERR LNK
.DA STDIO.IOERR DSOCK
.DA K.GetC.SSOCK
.DA K.GetC.FIFO
*--------------------------------------
@ -625,7 +625,7 @@ K.FGetS
K.GetSYA
bra *
*--------------------------------------
K.CHR.IOERR lda #MLI.ERR.IO
STDIO.IOERR lda #MLI.ERR.IO
sec
rts
*/--------------------------------------

View File

@ -30,9 +30,7 @@ A2osX.D1 .PH $D000
.DA #RRAMWRAMBNK1
.INB /A2OSX.SRC/SYS/KERNEL.S.STDIO
.INB /A2OSX.SRC/SYS/KERNEL.S.STAT
.INB /A2OSX.SRC/SYS/KERNEL.S.TIME
.INB /A2OSX.SRC/SYS/KERNEL.S.DIRENT
.INB /A2OSX.SRC/SYS/KERNEL.S.FIO
.INB /A2OSX.SRC/SYS/KERNEL.S.PFT
.INB /A2OSX.SRC/SYS/KERNEL.S.BIN
.EP
@ -40,6 +38,7 @@ A2osX.D2 .PH $D000
.DA #RRAMWRAMBNK2
.INB /A2OSX.SRC/SYS/KERNEL.S.STRING
.INB /A2OSX.SRC/SYS/KERNEL.S.STDLIB
.INB /A2OSX.SRC/SYS/KERNEL.S.TIME
.INB /A2OSX.SRC/SYS/KERNEL.S.DEV
.INB /A2OSX.SRC/SYS/KERNEL.S.PS
.INB /A2OSX.SRC/SYS/KERNEL.S.ARG
@ -53,6 +52,7 @@ A2osX.E0 .PH $E000
.INB /A2OSX.SRC/SYS/KERNEL.S.DAT
.INB /A2OSX.SRC/SYS/KERNEL.S.IRQ
.INB /A2OSX.SRC/SYS/KERNEL.S.MEM
.INB /A2OSX.SRC/SYS/KERNEL.S.FIO
.INB /A2OSX.SRC/SYS/KERNEL.S.D01
.EP
A2osX.E0.E .EQ *