Kernel 0.9.1 : Code reorganization & move to CSTR

This commit is contained in:
Rémy GIBERT 2017-08-24 14:46:48 +02:00
parent 7cecefb477
commit e7825666a6
43 changed files with 794 additions and 353 deletions

Binary file not shown.

Binary file not shown.

View File

@ -61,7 +61,7 @@ CS.RUN >SYSCALL GetArgC
.1 >PUSHW L.DST.IP
>PUSHW L.SSCANF.IP
lda #1
>SYSCALL GetArgA
>SYSCALL GetArg.A
>PUSHYA
>SYSCALL SSCANF

View File

@ -154,7 +154,7 @@ CS.INIT >SYSCALL GetArgC
beq .99 No arg, new file....
lda #1
>SYSCALL GetArgA
>SYSCALL GetArg.A
>SYSCALL GetFullPathYA
txa

View File

@ -47,7 +47,7 @@ CS.INIT >SYSCALL GetArgC
beq .5
lda ArgCount
>SYSCALL GetArgA
>SYSCALL GetArg.A
>STYA ZPPtr1
ldy #1
@ -121,7 +121,7 @@ CS.RUN >SYSCALL GetC
lda (pData),y
inc
sta (pData),y
>SYSCALL GetArgA
>SYSCALL GetArg.A
bcs .99 No more arg...the end!
>STYA ZPPtr1

View File

@ -58,7 +58,7 @@ CS.INIT >SYSCALL GetArgC
inc ArgIndex
lda ArgIndex
>SYSCALL GetArgA
>SYSCALL GetArg.A
>STYA ZPPtr1
lda (ZPPtr1)

View File

@ -41,7 +41,7 @@ CS.INIT >SYSCALL GetArgC
beq .9
lda #1
>SYSCALL GetArgA
>SYSCALL GetArg.A
>SYSCALL GetDevByNameYA
bcs .9

View File

@ -60,14 +60,14 @@ CS.RUN.ADD cmp #3
>PUSHW L.IP
>PUSHW L.SSCANF.IP
lda #3
>SYSCALL GetArgA
>SYSCALL GetArg.A
>PUSHYA
>SYSCALL SSCANF
bcs .9
>PUSHW L.IP
lda #2
>SYSCALL GetArgA
>SYSCALL GetArg.A
>PUSHYA
>LIBCALL hLIBTCPIP,LIBTCPIP.DNS.ADD
bcs .99

View File

@ -108,7 +108,7 @@ CS.INIT lda #$ff
beq .1 No arg, new file....
lda #1
>SYSCALL GetArgA
>SYSCALL GetArg.A
>SYSCALL GetFullPathYA
txa

View File

@ -53,7 +53,7 @@ CS.INIT >SYSCALL GetArgC
inc ArgIndex
lda ArgIndex
>SYSCALL GetArgA
>SYSCALL GetArg.A
>STYA ZPPtr1
lda (ZPPtr1)

View File

@ -60,7 +60,7 @@ CS.INIT >SYSCALL GetArgC
beq .5
lda ArgCount
>SYSCALL GetArgA
>SYSCALL GetArg.A
>STYA ZPPtr1
lda (ZPPtr1)

View File

@ -41,7 +41,7 @@ CS.RUN >SYSCALL GetArgC
beq .99
lda #1
>SYSCALL GetArgA
>SYSCALL GetArg.A
>SYSCALL GetFullPathYA
bcs .9

View File

@ -76,7 +76,7 @@ CS.RUN.READ jsr NSC.Init
rts
CS.RUN.SET lda #1
>SYSCALL GetArgA
>SYSCALL GetArg.A
>STYA ZPPtr1
lda (ZPPtr1)

View File

@ -80,7 +80,7 @@ CS.RUN.IPOK >SYSCALL GetArgC
.2 >PUSHW pData DST.IP
lda #1
>SYSCALL GetArgA
>SYSCALL GetArg.A
>PUSHYA
>LIBCALL hLIBTCPIP,LIBTCPIP.HST.GETBYNAME
bcc CS.RUN.HOSTOK
@ -89,7 +89,7 @@ CS.RUN.IPOK >SYSCALL GetArgC
bcc .2
lda #1
>SYSCALL GetArgA
>SYSCALL GetArg.A
>PUSHYA
>LDYA L.MSG.UNKNOWN
bra .99
@ -101,7 +101,7 @@ CS.RUN.IPOK >SYSCALL GetArgC
rts
CS.RUN.HOSTOK lda #1
>SYSCALL GetArgA
>SYSCALL GetArg.A
>PUSHYA
ldy #DST.IP+3

View File

@ -83,7 +83,7 @@ CS.RUN jsr Init.Timeout
.1 >PUSHW L.Socket.Dst.Addr
lda #1
>SYSCALL GetArgA
>SYSCALL GetArg.A
>PUSHYA
>LIBCALL hLIBTCPIP,LIBTCPIP.HST.GETBYNAME
bcc .2
@ -93,7 +93,7 @@ CS.RUN jsr Init.Timeout
bcc .1
lda #1
>SYSCALL GetArgA
>SYSCALL GetArg.A
>PUSHYA
>LDYA L.MSG.UNKNOWN
>SYSCALL PrintFYA
@ -155,7 +155,7 @@ CS.RUN jsr Init.Timeout
rts
.99 lda #1
>SYSCALL GetArgA
>SYSCALL GetArg.A
>PUSHYA
>LDYA L.MSG.TIMEOUT
>SYSCALL PrintFYA

View File

@ -54,7 +54,7 @@ CS.INIT >SYSCALL GetArgC
inc ArgIndex
lda ArgIndex
>SYSCALL GetArgA
>SYSCALL GetArg.A
>STYA ZPPtr1
lda (ZPPtr1)

View File

@ -63,8 +63,9 @@ K.MLI.PATH .EQ $03B0 64+1 -> $03D0
*--------------------------------------
*UsrBuf256 .EQ $0C00 Main
*--------------------------------------
KrnBuf256 .EQ $0D00 Main
K.Buf256 .EQ $0D00 Main
*--------------------------------------
K.STACK .EQ $0F00 Up to $0FFF
*--------------------------------------
*** Z80 Reserved $0F00-10FF***
*--------------------------------------
@ -172,7 +173,7 @@ SYS.ChGrp .EQ $0E
SYS.LoadDrvYA .EQ $10
SYS.LoadLibYA .EQ $12
SYS.UnloadLibA .EQ $14
SYS.LoadExeYA .EQ $16
SYS.LoadBin.YA .EQ $16
SYS.TimeYA .EQ $18
SYS.CTime2Time .EQ $1A
SYS.PTime2Time .EQ $1C
@ -231,7 +232,7 @@ SYS.Sleep .EQ $6C
* .EQ $6E
*--------------------------------------
SYS.GetArgC .EQ $70
SYS.GetArgA .EQ $72
SYS.GetArg.A .EQ $72
SYS.ExpandPStrYA .EQ $74
* .EQ $76
SYS.PutEnvYA .EQ $78

View File

@ -51,7 +51,7 @@ CS.INIT >SYSCALL GetArgC
rts
.1 lda #1
>SYSCALL GetArgA
>SYSCALL GetArg.A
>SYSCALL MkNodYA
bcs .9
@ -64,7 +64,7 @@ CS.INIT >SYSCALL GetArgC
sta (pPs),y
lda #2
>SYSCALL GetArgA
>SYSCALL GetArg.A
bcs .9
>SYSCALL ExpandPStrYA

View File

@ -48,14 +48,14 @@ CS.INIT >SYSCALL GetArgC
rts
.1 lda #1 get PTR to ARG[1] (Driver name)
>SYSCALL GetArgA
>SYSCALL GetArg.A
>PUSHYA
>LDYA L.MSG.LOAD
>SYSCALL PrintFYA
lda #1 get PTR to ARG[1] (Driver name)
>SYSCALL GetArgA
>SYSCALL GetArg.A
>SYSCALL LoadDrvYA YA = PTR to ARG[1...n]
bcs .99

View File

@ -210,7 +210,7 @@ Cmd.Exec.EXT ldy #1
*--------------------------------------
Cmd.Exec.EXT.TXT
lda #0 Get arg[0] = /PATH/SHELL
>SYSCALL GetArgA
>SYSCALL GetArg.A
>PUSHYA
>PUSHWI UsrBuf256
>SYSCALL PStrCpy

View File

@ -113,7 +113,7 @@ CS.INIT jsr SetPWD
>PUSHBI SYS.FOpen.R
lda #1
>SYSCALL GetArgA
>SYSCALL GetArg.A
>PUSHYA
>SYSCALL LoadFile
bcs .9

View File

@ -25,7 +25,7 @@ K.GetArgC jsr ARG.InitArgPtr1
.8 txa
rts
*/--------------------------------------
* # GetArgA
* # GetArg.A
* ## In:
* A = argument index.
* ## Out:
@ -33,7 +33,7 @@ K.GetArgC jsr ARG.InitArgPtr1
* Y,A = CStr To Arg[A]
* CS : Out Of Bound
*\--------------------------------------
K.GetArgA sta .2+1
K.GetArg.A sta .2+1
jsr ARG.InitArgPtr1
lda .2+1

View File

@ -4,17 +4,151 @@ LOMEM $A00
INC 1
AUTO 6
*--------------------------------------
* BIN.LoadExeYA
* K.LoadDrv.YA
* in :
* Y,A = PTR To Full Cmd Line PStrArray
* out :
* none
*--------------------------------------
K.LoadDrv.YA >STYA K.LoadDrv.CmdArray
>LDYAI ENV.DRV push ENVNAME=DRV
>SYSCALL GetEnvYA get value for ENV=DRV
bcs .9
>PUSHYA Push $DRV value
>PUSHW K.LoadDrv.CmdArray (ARG[0] = DRVNAME)
jsr K.FileSearch.I find Driver in $DRV
bcs .9
>LDYAI K.Buf256
jsr K.LoadBin.YA Y,A =filename full path
bcs .9
>STYA pDrv
stx .97+1
>LDYA K.LoadDrv.CmdArray
>STYA ZPPtr1
.1 lda (ZPPtr1) Advance to ARG[1]
beq .2
inc ZPPtr1
bne .1
inc ZPPtr1+1
bra .1
.2 >LDYA ZPPtr1
jsr pDrvJmp call Dev.Detect
bcs .96
jsr BIN.InstallDRV
bcs .96
jsr .96 Cleanup...
lda #0 Make sure RC = 0 if success
clc
.9 rts
.96 pha
.97 lda #$ff
jsr K.FreeMemA
pla
rts
*--------------------------------------
K.LoadDrv.CmdArray .BS 2
*--------------------------------------
* K.LoadLib.YA
* in :
* Y,A = PTR To Lib Name
* out :
* A = hMem To loaded LIB
*--------------------------------------
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
bcs .9
>PUSHYA Push $LIB value
>PUSHW K.LoadLib.Name
jsr K.FileSearch.I find libname in $LIB
bcs .9
>LDYAI K.Buf256
jsr K.LoadBin.YA Y,A=filename full path
bcs .9
stx .8+1
>STYA LIB.Jump+1
txa Pass hLib to LibLoad
ldx #LIBMGR.LOAD
jsr LIB.Jump Call LIB.LOAD function
bcs .99
.8 lda #$ff hLib
clc
.9 rts
.99 pha
lda .8+1
jsr K.FreeMemA
pla
sec
rts
*--------------------------------------
K.LoadLib.Name .BS 2
*--------------------------------------
* K.UnloadLib.A
* in :
* A = hMem To Lib
* out :
*--------------------------------------
K.UnloadLib.A pha
jsr K.GetMemByIDA
>STYA ZPPtr1
ldy #S.MEM.REFCNT
lda (ZPPtr1),y Get count of those referencing this lib
dec only one left ?
beq .1
sta (ZPPtr1),y
pla
clc
rts
.1 ldy #S.MEM.PTR
lda (ZPPtr1),y
sta LIB.Jump+1
iny
lda (ZPPtr1),y
sta LIB.Jump+2
ldx #LIBMGR.UNLOAD
jsr LIB.Jump Call LIB.UNLOAD function
pla
jmp K.FreeMemA
LIB.Jump jmp $ffff Self Modiied
*--------------------------------------
* K.LoadBin.YA
* in :
* A = hMem of FilePath (PSTR)
* out :
* Y,A = MEMPTR
* X = hMem of Code Segment
*--------------------------------------
K.LoadEXEYA >STYA K.LoadEXEYA.Filename
>SYSCALL StrUprYA Y,A unmodified
K.LoadBin.YA >STYA K.LoadBin.YA.Filename
jsr MEM.GetMemByNameYA
bcs K.LoadEXEYA.1 not already loaded
bcs K.LoadBin.YA.1 not already loaded
>STYA ZPPtr1 Save base address
ldy #S.MEM.REFCNT
@ -25,8 +159,8 @@ K.LoadEXEYA >STYA K.LoadEXEYA.Filename
txa
jmp K.GetMemPtrA X=hMem from K.GetMemByNameA
*--------------------------------------
K.LoadEXEYA.1 >PUSHWI K.S.STAT
>PUSHW K.LoadEXEYA.Filename
K.LoadBin.YA.1 >PUSHWI K.S.STAT
>PUSHW K.LoadBin.YA.Filename
jsr K.STAT Look for AUXTYPE
bcs .9
@ -36,12 +170,12 @@ K.LoadEXEYA.1 >PUSHWI K.S.STAT
>PUSHYA Push AUXTYPE
>PUSHBI 6 S.FILEINFO.TYPE.BIN
>PUSHBI SYS.FOpen.R
>PUSHW K.LoadEXEYA.Filename
>PUSHW K.LoadBin.YA.Filename
jsr K.LoadFile
.9 bcs .99 Error Loading file
stx K.LoadEXEYA.hMem save hMem
stx K.LoadBin.YA.hMem save hMem
pha YA=CODE+DATA size
tya
@ -78,11 +212,11 @@ K.LoadEXEYA.1 >PUSHWI K.S.STAT
jsr BIN.RelocateEXE
>LDYA K.LoadEXEYA.Filename get back bin path
>LDYA K.LoadBin.YA.Filename get back bin path
>SYSCALL NewPStrYA make a copy of this string
bcs .98
lda K.LoadEXEYA.hMem Keep X=hMem
lda K.LoadBin.YA.hMem Keep X=hMem
jsr K.GetMemByIDA X unmodified
>STYA ZPPtr1
@ -94,28 +228,28 @@ K.LoadEXEYA.1 >PUSHWI K.S.STAT
ldy #S.MEM.BIN
sta (ZPPtr1),y
lda K.LoadEXEYA.hMem
lda K.LoadBin.YA.hMem
tax return hMEM to Caller...
jsr K.GetMemPtrA
clc ...and Y,A=PTR to CS
rts
.98 pha
lda K.LoadEXEYA.hMem
lda K.LoadBin.YA.hMem
jsr K.FreeMemA Discard Loaded Code
pla
sec
.99 rts
*--------------------------------------
K.LoadEXEYA.Filename .BS 2
K.LoadEXEYA.hMem .BS 1
K.LoadBin.YA.Filename .BS 2
K.LoadBin.YA.hMem .BS 1
*--------------------------------------
* BIN.InstallDRV
* In:
* pDrv = .DRV File Loaded Address
* Note:
* K.LoadEXEYA called from K.LoadDrvYA
* K.LoadBin.YA called from K.LoadDrvYA
* Already setup correctly pDrv,
* BIN.Relocate.Start,End
*--------------------------------------

View File

@ -1,10 +0,0 @@
PR#3
PREFIX /A2OSX.BUILD
LOMEM $A00
INC 1
AUTO 6
*--------------------------------------
MAN
SAVE /A2OSX.SRC/SYS/KERNEL.S.CHR
LOAD /A2OSX.SRC/SYS/KERNEL.S
ASM

View File

@ -1,10 +0,0 @@
PR#3
PREFIX /A2OSX.BUILD
LOMEM $A00
INC 1
AUTO 6
*--------------------------------------
MAN
SAVE /A2OSX.SRC/SYS/KERNEL.S.CIO
LOAD /A2OSX.SRC/SYS/KERNEL.S
ASM

View File

@ -1,10 +0,0 @@
PR#3
PREFIX /A2OSX.BUILD
LOMEM $A00
INC 1
AUTO 6
*--------------------------------------
MAN
SAVE /A2OSX.SRC/SYS/KERNEL.S.CNV
LOAD /A2OSX.SRC/SYS/KERNEL.S
ASM

View File

@ -38,7 +38,7 @@ K.OpenDirYA jsr PFT.CheckPathYA
cmp #$0F Directory ?
bne .98
jsr FILE.SetIOBUF
jsr STDIO.SetIOBUF
bcs .98
@ -102,7 +102,7 @@ K.ReadDirA.ROOT ldy #S.NODE.DIR.FC did we already returned something ?
stz K.MLI.PARAMS+1 All Volumes
>LDYAI KrnBuf256
>LDYAI K.Buf256
>STYA K.MLI.PARAMS+2
>STYA ZPPtr2
>MLICALL MLIONLINE

View File

@ -4,64 +4,6 @@ LOMEM $A00
INC 1
AUTO 6
*--------------------------------------
* K.LoadDrvYA
* in :
* Y,A = PTR To Full Cmd Line PStrArray
* out :
* none
*--------------------------------------
K.LoadDrvYA >STYA K.LoadDrv.CmdArray
>LDYAI ENV.DRV push ENVNAME=DRV
>SYSCALL GetEnvYA get value for ENV=DRV
bcs .9
>PUSHYA Push $DRV value
>PUSHW K.LoadDrv.CmdArray (ARG[0] = DRVNAME)
jsr K.FileSearch.I find Driver in $DRV
bcs .9
>LDYAI KrnBuf256
jsr K.LoadExeYA Y,A =filename full path
bcs .9
>STYA pDrv
stx .97+1
>LDYA K.LoadDrv.CmdArray Advance to ARG[1]
>STYA ZPPtr1
lda ZPPtr1
sec
adc (ZPPtr1)
sta ZPPtr1
bcc .1
inc ZPPtr1+1
.1 >LDYA ZPPtr1
jsr pDrvJmp call Dev.Detect
bcs .96
jsr BIN.InstallDRV
bcs .96
jsr .96 Cleanup...
lda #0 Make sure RC = 0 if success
clc
.9 rts
.96 pha
.97 lda #$ff
jsr K.FreeMemA
pla
rts
*--------------------------------------
K.LoadDrv.CmdArray .BS 2
*--------------------------------------
MAN
SAVE /A2OSX.SRC/SYS/KERNEL.S.DRV
LOAD /A2OSX.SRC/SYS/KERNEL.S

View File

@ -4,18 +4,54 @@ LOMEM $A00
INC 1
AUTO 6
*/--------------------------------------
* # ExpandPStrYA
* # NewPStrYA
* Create a new copy of PSTR
* ## In:
* Y,A = PTR to buffer
* ## Out:
* CC : success
* Y,A = PTR to String
* X = hMem (PSTR)
* CS : error
* A = SYS error code
*\--------------------------------------
K.NewPStr.YA >STYA ZPPtr2
lda (ZPPtr2)
inc
tay
lda #0 Y,A = len of new string
jsr K.GetMemYA
bcs .9
>STYA ZPPtr1
lda (ZPPtr2)
sta (ZPPtr1)
tay
beq .2
.1 lda (ZPPtr2),y
sta (ZPPtr1),y
dey
bne .1
.2 >LDYA ZPPtr1
clc
.9 rts
*/--------------------------------------
* # ExpandPStr.YA
* ## In:
* Y,A = PTR to String to Expand (PSTR)
* ## Out:
* X = hMem to Expanded String (PSTR)
* Y,A = PTR to Expanded String
*\--------------------------------------
K.ExpandPStrYA stz K.ExpandPStr.hPStr Reset Intermediate string...
K.ExpandPStr.YA stz K.ExpandPStr.hPStr Reset Intermediate string...
.1 >STYA ZPPtr2
stz KrnBuf256 init Expanded String len=0
stz K.Buf256 init Expanded String len=0
stz K.ExpandPStr.bFound No var found yet
stz K.ExpandPStr.bNoExp Reset no expand flag
@ -43,11 +79,11 @@ K.ExpandPStrYA stz K.ExpandPStr.hPStr Reset Intermediate string...
.21 bit K.ExpandPStr.bNoExp
bpl .23
.22 ldx KrnBuf256
.22 ldx K.Buf256
inx
beq .8
sta KrnBuf256,x
stx KrnBuf256
sta K.Buf256,x
stx K.Buf256
bra .11
.23 ldx K.ExpandPStr.bInVar already in a var?
@ -110,8 +146,8 @@ K.ExpandPStrYA stz K.ExpandPStr.hPStr Reset Intermediate string...
jsr K.FreeMemA yes, discard....
.81 >LDYAI KrnBuf256
jsr K.NewPStrYA
.81 >LDYAI K.Buf256
jsr K.NewPStr.YA
bcs .9
stx K.ExpandPStr.hPStr save this as temp string, in case of recurse
ldx K.ExpandPStr.bFound Did we expand something ?
@ -147,7 +183,7 @@ K.ExpandPStrGetValue
bcc .9
>LDYAI K.ExpandPStr.Name
jsr K.GetEnvYA
jsr K.GetEnv.YA
bcs .9
>STYA ZPPtr3
@ -162,52 +198,52 @@ K.ExpandPStr.bFound .BS 1
K.ExpandPStr.hPStr .BS 1
K.ExpandPStr.Name .BS 16
*/--------------------------------------
* # PutEnvYA
* # PutEnv.YA
* ## In:
* Y,A = PTR to String NAME=VALUE (PSTR)
* ## Out:
*\--------------------------------------
K.PutEnvYA >STYA ZPPtr1 NAME=VALUE
K.PutEnv.YA >STYA ZPPtr1 NAME=VALUE
lda (ZPPtr1)
beq .9
sta KrnBuf256
sta K.Buf256
tay
.1 lda (ZPPtr1),y copy PSTR to KrnBuf256
sta KrnBuf256,y
.1 lda (ZPPtr1),y copy PSTR to K.Buf256
sta K.Buf256,y
dey
bne .1
ldy #0
.2 iny
cpy KrnBuf256 last char ?
cpy K.Buf256 last char ?
beq .9 no "=" found
lda KrnBuf256,y
lda K.Buf256,y
cmp #'='
bne .2
cpy #1 String like "=value" ?
beq .9
cpy KrnBuf256 last char ?
cpy K.Buf256 last char ?
beq .9 we have "VAR="
lda KrnBuf256 get actual string len
lda K.Buf256 get actual string len
sty KrnBuf256 set length of VAR string
dec KrnBuf256 ...without "="
sty K.Buf256 set length of VAR string
dec K.Buf256 ...without "="
clc Substract VAR len+1 from whole len to get
sbc KrnBuf256 VALUE len
sta KrnBuf256,y save it at "=" POS
sbc K.Buf256 VALUE len
sta K.Buf256,y save it at "=" POS
stz ZPPtr1 #KrnBuf256
stz ZPPtr1 #K.Buf256
sty ZPPtr2
lda /KrnBuf256
lda /K.Buf256
sta ZPPtr1+1
sta ZPPtr2+1
@ -295,14 +331,14 @@ K.SetEnvPtr1Ptr2
sec
rts
*/--------------------------------------
* # GetEnvYA
* # GetEnv.YA
* ## In:
* Y,A = PTR to NAME (PSTR)
* ## Out:
* CC : Y,A = PTR to VALUE (PSTR)
* CS : not found
*\--------------------------------------
K.GetEnvYA >STYA ZPPtr1
K.GetEnv.YA >STYA ZPPtr1
jsr ENV.FindVarPtr1
bcs .9
@ -314,12 +350,12 @@ K.GetEnvYA >STYA ZPPtr1
.9 >LDYAI EmptyPSTR
rts
*/--------------------------------------
* # UnsetEnvYA
* # UnsetEnv.YA
* ## In:
* Y,A = PTR To Name (PSTR)
* ## Out:
*\--------------------------------------
K.UnsetEnvYA >STYA ZPPtr1 Store VAR Name
K.UnsetEnv.YA >STYA ZPPtr1 Store VAR Name
S.UnsetEnvPtr1 jsr ENV.FindVarPtr1
bcs .8 not found, quit
@ -335,7 +371,7 @@ S.UnsetEnvPtr1 jsr ENV.FindVarPtr1
* K.ExpandPStr.Name
* Out:
* CC: Found
* Append VALUE to KrnBuf256
* Append VALUE to K.Buf256
* CS: Not Found
*--------------------------------------
ENV.ExpandSysVar
@ -350,7 +386,7 @@ ENV.ExpandSysVar
cmp #'9'+1
bcs .1
and #$0F
jsr K.GetArgA
jsr K.GetArg.A
bcs .99
>STYA ZPPtr3
@ -383,7 +419,7 @@ ENV.SysVarsJmp .DA ENV.SysVarsArgs
.DA ENV.SysVarsCPID
*--------------------------------------
ENV.SysVarsArgs lda #1
jsr K.GetArgA
jsr K.GetArg.A
bcs ENV.SysVarsExit2
>STYA ZPPtr3
@ -396,12 +432,12 @@ ENV.SysVarsArgs lda #1
lda (ZPPtr3)
beq ENV.SysVarsExit2
ldx KrnBuf256
ldx K.Buf256
inx
beq ENV.SysVarsExit2 make sure not overlapping buf 256
stx KrnBuf256
stx K.Buf256
lda #' '
sta KrnBuf256,x
sta K.Buf256,x
jsr ENV.AppendPtr3ToBuf
bra .2
@ -434,12 +470,12 @@ ENV.SysVarsA sta HEXBUF
cpy #9 Print always last char
bne .1
.2 ldx KrnBuf256
.2 ldx K.Buf256
.3 inx
beq ENV.SysVarsExit2
sta KrnBuf256,x
sta K.Buf256,x
iny
cpy #10
beq ENV.SysVarsExit
@ -447,7 +483,7 @@ ENV.SysVarsA sta HEXBUF
lda ASCBUF,y
bra .3
ENV.SysVarsExit stx KrnBuf256
ENV.SysVarsExit stx K.Buf256
ENV.SysVarsExit2
clc
rts
@ -539,19 +575,19 @@ ENV.NextEnvPtr3 lda ZPPtr3
*--------------------------------------
ENV.AppendPtr3ToBuf
ldy #0
ldx KrnBuf256
ldx K.Buf256
.1 iny
lda (ZPPtr3),y
inx
beq .9
sta KrnBuf256,x
sta K.Buf256,x
tya
cmp (ZPPtr3) last char?
bne .1
stx KrnBuf256
stx K.Buf256
.9 rts
*--------------------------------------
MAN

View File

@ -1,10 +0,0 @@
PR#3
PREFIX /A2OSX.BUILD
LOMEM $A00
INC 1
AUTO 6
*--------------------------------------
MAN
SAVE /A2OSX.SRC/SYS/KERNEL.S.FILE
LOAD /A2OSX.SRC/SYS/KERNEL.S
ASM

View File

@ -22,12 +22,12 @@ K.FileSearch >PULLW ZPPtr2 DstBuf
jsr K.FileSearch.I
bcs .9
lda KrnBuf256
lda K.Buf256
sta (ZPPtr2)
tay
.1 lda KrnBuf256,y
.1 lda K.Buf256,y
sta (ZPPtr2),y
dey
bne .1
@ -44,7 +44,7 @@ K.FileSearch.I >PULLW ZPPtr4 ZPPtr1 trashed by ExpandPStrYA
stz .11+1
.1 stz KrnBuf256 reset String
.1 stz K.Buf256 reset String
ldx #0
.11 ldy #$ff Self Modified
@ -57,7 +57,7 @@ K.FileSearch.I >PULLW ZPPtr4 ZPPtr1 trashed by ExpandPStrYA
cmp #';'
beq .3
inx
sta KrnBuf256,x
sta K.Buf256,x
bra .2
.3 txa
@ -70,15 +70,15 @@ K.FileSearch.I >PULLW ZPPtr4 ZPPtr1 trashed by ExpandPStrYA
.4 iny
lda (ZPPtr4),y Append Fiename...
inx
sta KrnBuf256,x
sta K.Buf256,x
tya
cmp (ZPPtr4)
bne .4
stx KrnBuf256 set string length
stx K.Buf256 set string length
>PUSHWI K.S.STAT
>PUSHWI KrnBuf256
>PUSHWI K.Buf256
jsr K.STAT
bcs .1 Failed...retry next path...
@ -106,7 +106,7 @@ K.GetFullPathYA >STYA ZPPtr3 Ptr1 & 2 used by StrCpy
lda (ZPPtr3)
beq K.GetFullPathYA.9
stz KrnBuf256
stz K.Buf256
ldy #1
lda (ZPPtr3),y
@ -117,14 +117,14 @@ K.GetFullPathYA >STYA ZPPtr3 Ptr1 & 2 used by StrCpy
lda (pPs),y
jsr K.GetMemPtrA
>PUSHYA
>PUSHWI KrnBuf256
>PUSHWI K.Buf256
>SYSCALL PStrCpy
.1 >PUSHW ZPPtr3
>PUSHWI KrnBuf256
>PUSHWI K.Buf256
>SYSCALL PStrCat
K.GetFullPathYA.NewStr
>LDYAI KrnBuf256
>LDYAI K.Buf256
>SYSCALL NewPStrYA
rts

View File

@ -76,8 +76,8 @@ Kernel.Init2 >LDAXI MSG.Init2
>STYA ZPPtr3
jsr Kernel.Move
>LDYAI D.STACK.TOP
>STYA pStack init Soft Stack
>LDYAI K.STACK
>STYA pStack init Soft Stack
sta CLRALTZP Make MAIN ZP is enabled for X.PRINT.F
@ -775,12 +775,12 @@ TskMgrInit >LDYAI TskMgr.Table+S.PS Clear whole process table except PS0
ldy #S.PS.hENV
sta (pPs),y
>LDYAI UsrBuf256
>LDYAI K.Buf256
>STYA K.MLI.PARAMS+1
>MLICALL MLIGETPREFIX
bcs .9
>LDYAI UsrBuf256
>LDYAI K.Buf256
>SYSCALL NewPStrYA
bcs .9
@ -788,7 +788,7 @@ TskMgrInit >LDYAI TskMgr.Table+S.PS Clear whole process table except PS0
ldy #S.PS.hPREFIX
sta (pPs),y
>PUSHWI UsrBuf256 push ENV value
>PUSHWI K.Buf256 push ENV value
>PUSHWI I.ENV.A2osX push ENV name
>SYSCALL SetEnv
bcs .9

View File

@ -17,11 +17,11 @@ K.SYSCALL.JMP .DA K.FileSearch $00
.DA K.ChOwn
.DA K.ChGrp
*--------------------------------------
.DA K.LoadDrvYA $10
.DA K.LoadLibYA
.DA K.UnloadLibA
.DA K.LoadExeYA
.DA K.TimeYA
.DA K.LoadDrv.YA $10
.DA K.LoadLib.YA
.DA K.UnloadLib.A
.DA K.LoadBin.YA
.DA K.Time.YA
.DA K.CTime2Time
.DA K.PTime2Time
.DA 0
@ -49,18 +49,18 @@ K.SYSCALL.JMP .DA K.FileSearch $00
.DA 0 $40
.DA K.SScanF
.DA 0
.DA K.PrintFYA
.DA K.SPrintFYA
.DA K.FPrintFYA
.DA K.PrintF.YA
.DA K.SPrintF.YA
.DA K.FPrintF.YA
.DA K.AToI
.DA 0
*--------------------------------------
.DA K.NewPStrYA $50
.DA K.PStrCpy
.DA K.PStrCat
.DA K.PStrMatch
.DA K.PStrUprYA
.DA K.PStrLwrYA
.DA 0 $50
.DA K.StrCpy
.DA K.StrCat
.DA K.StrMatch
.DA K.StrUpr.YA
.DA K.StrLwr.YA
.DA K.StrFTime
.DA 0 K.PStr2StrArrayYA
*--------------------------------------
@ -74,13 +74,13 @@ K.SYSCALL.JMP .DA K.FileSearch $00
.DA 0
*--------------------------------------
.DA K.GetArgC $70
.DA K.GetArgA
.DA K.ExpandPStrYA
.DA K.GetArg.A
.DA K.ExpandPStr.YA
.DA 0
.DA K.PutEnvYA
.DA K.PutEnv.YA
.DA K.SetEnv
.DA K.GetEnvYA
.DA K.UnsetEnvYA
.DA K.GetEnv.YA
.DA K.UnsetEnv.YA
*--------------------------------------
.DA K.GetDevByIDA $80
.DA K.GetDevByNameYA

View File

@ -4,82 +4,6 @@ LOMEM $A00
INC 1
AUTO 6
*--------------------------------------
* K.LoadLibYA
* in :
* Y,A = PTR To Lib Name
* out :
* A = hMem To loaded LIB
*--------------------------------------
K.LoadLibYA >STYA K.LoadLib.Name SAVE LIBname for K.FileSearch
>LDYAI ENV.LIB push ENVNAME=LIB
>SYSCALL GetEnvYA get value for ENV=LIB
bcs .9
>PUSHYA Push $LIB value
>PUSHW K.LoadLib.Name
jsr K.FileSearch.I find libname in $LIB
bcs .9
>LDYAI KrnBuf256
jsr K.LoadExeYA Y,A=filename full path
bcs .9
stx .8+1
>STYA LIB.Jump+1
txa Pass hLib to LibLoad
ldx #LIBMGR.LOAD
jsr LIB.Jump Call LIB.LOAD function
bcs .99
.8 lda #$ff hLib
clc
.9 rts
.99 pha
lda .8+1
jsr K.FreeMemA
pla
sec
rts
*--------------------------------------
K.LoadLib.Name .BS 2
*--------------------------------------
* K.UnloadLibA
* in :
* A = hMem To Lib
* out :
*--------------------------------------
K.UnloadLibA pha
jsr K.GetMemByIDA
>STYA ZPPtr1
ldy #S.MEM.REFCNT
lda (ZPPtr1),y Get count of those referencing this lib
dec only one left ?
beq .1
sta (ZPPtr1),y
pla
clc
rts
.1 ldy #S.MEM.PTR
lda (ZPPtr1),y
sta LIB.Jump+1
iny
lda (ZPPtr1),y
sta LIB.Jump+2
ldx #LIBMGR.UNLOAD
jsr LIB.Jump Call LIB.UNLOAD function
pla
jmp K.FreeMemA
LIB.Jump jmp $ffff Self Modiied
*--------------------------------------
MAN
SAVE /A2OSX.SRC/SYS/KERNEL.S.LIB
LOAD /A2OSX.SRC/SYS/KERNEL.S

View File

@ -365,7 +365,7 @@ K.FreeMemA phy
>PUSHYA
>LDYAI K.FreeMemA.ERR
jsr K.PrintFYA
jsr K.PrintF.YA
.91 ldx #$ff
bit $C000,x

View File

@ -175,7 +175,7 @@ PS.CreateChild >LDYAI TskMgr.Table+S.PS
ldy #S.PS.hPREFIX copy hPREFIX...
lda (pPs),y
jsr K.GetMemPtrA
jsr K.NewPStrYA
jsr K.NewPStr.YA
bcs .9
txa
@ -232,7 +232,7 @@ PS.CreateChild >LDYAI TskMgr.Table+S.PS
.9 rts
*--------------------------------------
PS.Init >LDYA K.CreateProcess.CmdLine
jsr PS.PStr2StrArrayYA
jsr PS.Str2StrArrayYA
bcs .9
phy save PTR to StrArray...
@ -244,7 +244,7 @@ PS.Init >LDYA K.CreateProcess.CmdLine
pla Restore PTR...
ply
>SYSCALL LoadExeYA Y,A=filename full path
>SYSCALL LoadBin.YA Y,A=filename full path
bcs .9
>STYA ZPPtr4 save PTR to Code Segment

View File

@ -92,7 +92,7 @@ RUN.DumpEvent ldy #S.EVT-1
bpl .1
>LDYAI MSG.DumpEvent
jmp K.PrintFYA
jmp K.PrintF.YA
*--------------------------------------
MSG.DumpEvent >CSTR "!Evt:F=%b,Dev=$%h,LO=$%h,HI=$%h,W1=$%H,W2=$%H\n"
SYS.CPULOADI .BS 1

79
SYS/KERNEL.S.STAT.txt Normal file
View File

@ -0,0 +1,79 @@
PR#3
PREFIX /A2OSX.BUILD
LOMEM $A00
INC 1
AUTO 6
*/--------------------------------------
* # Stat
* Return information about a file
* ## In :
* PUSHW = PTR to S.STAT buffer
* PUSHW = PTR to Filename (PSTR)
* ## Out :
*\--------------------------------------
K.Stat jsr PFT.CheckPathSTK
jsr STDIO.PullMLIPath
>PULLW ZPPtr2
>MLICALL MLIGETFILEINFO
bcs .9
ldx K.MLI.PARAMS+S.FILEINFO.ACCESS
lda #S.STAT.MODE.XO+S.STAT.MODE.WO+S.STAT.MODE.RO
cpx #S.FILEINFO.ACCESS.FULL
beq .2
lda #S.STAT.MODE.XO+S.STAT.MODE.RO
cpx #S.FILEINFO.ACCESS.R
beq .2
lda #0
.2 ldy #S.STAT.MODE
sta (ZPPtr2),y
ldx #K.Stat.DST-K.Stat.SRC
.3 ldy K.Stat.SRC-1,x
lda K.MLI.PARAMS,y
ldy K.Stat.DST-1,x
sta (ZPPtr2),y
dex
bne .3
ldy #S.STAT.SIZE
lda #0
sta (ZPPtr2),y
iny
lda K.MLI.PARAMS+S.FILEINFO.BLOCKSUSED
asl
sta (ZPPtr2),y
iny
lda K.MLI.PARAMS+S.FILEINFO.BLOCKSUSED+1
rol
sta (ZPPtr2),y
iny
lda #0
rol
sta (ZPPtr2),y
clc
.9 rts
*--------------------------------------
K.Stat.SRC .DA #S.FILEINFO.TYPE
.DA #S.FILEINFO.AUXTYPE,#S.FILEINFO.AUXTYPE+1
.DA #S.FILEINFO.BLOCKSUSED,#S.FILEINFO.BLOCKSUSED+1
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
*--------------------------------------
MAN
SAVE /A2OSX.SRC/SYS/KERNEL.S.STAT
LOAD /A2OSX.SRC/SYS/KERNEL.S
ASM

View File

@ -4,6 +4,402 @@ LOMEM $A00
INC 1
AUTO 6
*/--------------------------------------
* # FOpen
* Open a file
* ## In :
* PUSHW = AUXTYPE
* PUSHB = TYPE
* PUSHB = MODE
* SYS.FOpen.R : if R and !exists -> ERROR
* SYS.FOpen.W : if W and !exists -> CREATE
* SYS.FOpen.A : Append
* SYS.FOpen.T : Open/Append in Text mode
* SYS.FOpen.X : Create if not exists
* PUSHW = PATH (PSTR)
* ## Out :
* CC : A = hFILE
* CS : A = EC
*\--------------------------------------
K.FOpen jsr PFT.CheckPathSTK
jsr STDIO.PullMLIPath
>PULLB K.FOpen.MODE
>PULLB K.FOpen.TYPE
>PULLW K.FOpen.AUXTYPE
>MLICALL MLIGETFILEINFO
bcc K.FOpen.10 Already Exists
bit K.FOpen.MODE Create if not exists ?
bpl K.FOpen.9 No, return MLI error
lda #S.FILEINFO.ACCESS.FULL Yes, Create...
sta K.MLI.PARAMS+3 Access
lda K.FOpen.TYPE
sta K.MLI.PARAMS+4 File type
>LDYA K.FOpen.AUXTYPE
>STYA K.MLI.PARAMS+5 Aux type
lda #S.FILEINFO.STORETYPE.STD
sta K.MLI.PARAMS+7
ldx #3
.1 lda DATELO,x
sta K.MLI.PARAMS+8,x
dex
bpl .1
>MLICALL MLICREATE
bcc K.FOpen.10
K.FOpen.9 rts
K.FOpen.10 >LDYAI S.NODE.REG
jsr K.GetMem0YA
bcs K.FOpen.9
>STYA ZPPtr1
stx hFILE
jsr STDIO.SetIOBUF
bcs .98
>MLICALL MLIOPEN
bcs .98
lda K.MLI.PARAMS+5 get ref_num
ldy #S.NODE.REG.REF
sta (ZPPtr1),y
sta K.MLI.PARAMS+1 Next MLI Calls are REF_NUM based
lda K.FOpen.MODE
bit #SYS.FOpen.W
beq .20 Write mode ?
and #SYS.FOpen.A Append ?
bne .11 yes, go to end of file
stz K.MLI.PARAMS+2
stz K.MLI.PARAMS+3
stz K.MLI.PARAMS+4
>MLICALL MLISETEOF no, reset size to 0
bcs .98
bra .20
.11 >MLICALL MLIGETEOF
bcs .98
>MLICALL MLISETMARK
bcs .98
.20 lda K.FOpen.MODE
and #SYS.FOpen.T Text Mode ?
beq .30
lda #$FF
sta K.MLI.PARAMS+2
lda #$0D
sta K.MLI.PARAMS+3
>MLICALL MLINEWLINE
.30 ldy #S.NODE.T
lda #S.NODE.T.REG
sta (ZPPtr1),y
lda hFILE
clc
rts CC
.98 pha save MLI error
lda hFILE
jsr K.FCloseA.1
pla get back MLI error
sec
rts
*--------------------------------------
K.FOpen.MODE .BS 1
K.FOpen.TYPE .BS 1
K.FOpen.AUXTYPE .BS 2
hFILE .BS 1
*/--------------------------------------
* # FCloseA
* Close a file
* ## In :
* A = hFILE
* ## Out :
*\--------------------------------------
K.FCloseA jsr PFT.CheckNodeA
pha
jsr K.GetMemPtrA
>STYA ZPPtr1
pla
K.FCloseA.1 sta K.FCloseA.2+1
ldy #S.NODE.REG.REF
lda (ZPPtr1),y
beq .1
sta K.MLI.PARAMS+1
>MLICALL MLICLOSE
.1 ldy #S.NODE.REG.IOBUF
lda (ZPPtr1),y
beq K.FCloseA.2
jsr K.FreeMemA
K.FCloseA.2 lda #$ff Self Modified
jmp K.FreeMemA
*/--------------------------------------
* # FReadA
* Read ONE byte from file
* ## In :
* A = hFILE
* ## Out :
* A = Byte Read
*\--------------------------------------
K.FReadA jsr PFT.CheckNodeA
ldx #MLIREAD
bra K.FReadWrite.0
*/--------------------------------------
* # FWriteAY
* ## In:
* A = hFILE
* Y = char
* # Out:
* Y,A = Bytes Written
*\--------------------------------------
K.FWriteAY jsr PFT.CheckNodeA
sty K.FWriteAY.Buf
ldx #MLIWRITE
K.FReadWrite.0 jsr STDIO.GetRefNum
>LDYAI K.FWriteAY.Buf
>STYA K.MLI.PARAMS+2
lda #1
sta K.MLI.PARAMS+4
stz K.MLI.PARAMS+5
lda #4 Param Count = 4 for MLIREAD & MLIWRITE
jsr A2osX.MLICALL
bcs .9
lda K.FWriteAY.Buf
.9 rts
K.FWriteAY.Buf .BS 1
*/--------------------------------------
* # FRead
* Read bytes from file
* ## In :
* PUSHW = Dest Ptr
* PUSHW = Bytes To Read
* PUSHB = hFILE
* ## Out :
* Y,A = Bytes Read
*\--------------------------------------
K.FRead jsr PFT.CheckNodeSTK
ldx #MLIREAD
bra K.FReadWrite.1
*/--------------------------------------
* # FWrite
* ## In:
* PUSHW = Src Ptr
* PUSHW = Bytes To Write
* PUSHB = hFILE
* # Out:
* Y,A = Bytes Written
*\--------------------------------------
K.FWrite jsr PFT.CheckNodeSTK
ldx #MLIWRITE
K.FReadWrite.1 >PULLA
jsr STDIO.GetRefNum
>PULLW K.MLI.PARAMS+4
>PULLW K.MLI.PARAMS+2
lda #4 Param Count = 4 for MLIREAD & MLIWRITE
jsr A2osX.MLICALL
bcs .9
>LDYA K.MLI.PARAMS+6
.9 rts
*/--------------------------------------
* # FFlushA
* ## In:
* A = hFILE
*\--------------------------------------
K.FFlushA jsr PFT.CheckNodeA
jsr STDIO.GetRefNum
>MLICALL MLIFLUSH
rts
*/-------------------------------------
* # FSeek
* ## In:
* PUSHW = OffsetHi
* PUSHW = OffsetLo
* PUSHB = From
* PUSHB = hFILE
*\-------------------------------------
K.FSeek jsr PFT.CheckNodeSTK
>PULLA
jsr STDIO.GetRefNum
>PULLA FROM
tax
>PULLW K.FSeek.OFFSET
>PULLW K.FSeek.OFFSET+2
cpx #SYS.FSeek.SET
bne .1
stz K.MLI.PARAMS+2
stz K.MLI.PARAMS+3
stz K.MLI.PARAMS+4
bra .8
.1 cpx #SYS.FSeek.CUR
bne .2
>MLICALL MLIGETMARK
bcc .8
rts
.2 cpx #SYS.FSeek.END
bne .98
>MLICALL MLIGETEOF
bcs .9
.8 ldx #0
ldy #3
clc
.81 lda K.MLI.PARAMS+2,x
adc K.FSeek.OFFSET,x
sta K.MLI.PARAMS+2,x
inx
dey
bne .81
bcs .99 Offset out of range!
>MLICALL MLISETMARK
.9 rts
.98 lda #SYSMGR.ERRSYN
.HS 2C bit abs
.99 lda #SYSMGR.ERRFTB
sec
rts
*--------------------------------------
K.FSeek.OFFSET .BS 4
*/--------------------------------------
* # FTellA
* ## In:
* A = hFILE
* ## Out:
* Y,A,X = Offset
*\--------------------------------------
K.FTellA jsr PFT.CheckNodeA
K.FTellA.1 jsr STDIO.GetRefNum
>MLICALL MLIGETMARK
bcs .9
>LDYA K.MLI.PARAMS+2
ldx K.MLI.PARAMS+4
.9 rts
*/--------------------------------------
* # FEOFA
* ## In:
* A = hFILE
* ## Out:
* CC :
* A=0 EOF
* A !=0 NOT EOF
* CS :
*\--------------------------------------
K.FEOFA jsr PFT.CheckNodeA
jsr STDIO.GetRefNum
jsr K.FTellA.1
bcs .9
>STYA K.FEOFA.MARK
stx K.FEOFA.MARK+2
>MLICALL MLIGETEOF
bcs .9
sec
lda K.MLI.PARAMS+2
sbc K.FEOFA.MARK
bne .8
lda K.MLI.PARAMS+3
sbc K.FEOFA.MARK+1
bne .8
lda K.MLI.PARAMS+4
sbc K.FEOFA.MARK+2
.8 clc
.9 rts
K.FEOFA.MARK .BS 3
*/--------------------------------------
* # RemoveYA
*\--------------------------------------
K.RemoveYA jsr PFT.CheckPathYA
jsr STDIO.PullMLIPath
>MLICALL MLIDESTROY
rts
*/--------------------------------------
* # Rename
* Rename a file
* ## In :
* PUSHW = New Name
* PUSHW = Old Name
* ## Out :
*\--------------------------------------
K.Rename jsr PFT.CheckPathSTK
jsr STDIO.PullMLIPath
>PULLW .1+1
ldy #0
.1 lda $ffff,y Self Modified
beq .8
iny
sta K.Buf256,y
cpy #MLI.MAXPATH
bne .1
.8 sty K.Buf256
>LDYAI K.Buf256
>STYA K.MLI.PARAMS+3
>MLICALL MLIRename
rts
*--------------------------------------
STDIO.PullMLIPath
>PULLW .1+1
ldy #0
.1 lda $ffff,y Self Modified
beq .8
iny
sta K.MLI.PATH,y
cpy #MLI.MAXPATH
bne .1
.8 sty K.MLI.PATH
>LDYAI K.MLI.PATH
>STYA K.MLI.PARAMS+1
rts
*--------------------------------------
STDIO.SetIOBUF >PUSHWI 1024 get a ProDOS IOBUF
>PUSHBI S.MEM.F.ALIGN+S.MEM.F.NOMOVE
jsr K.GetMem
bcs .9
>STYA K.MLI.PARAMS+3 Save Ptr to IOBUF for MLIOPEN call
txa
ldy #S.NODE.REG.IOBUF
sta (ZPPtr1),y
.9 rts
*--------------------------------------
STDIO.GetRefNum jsr K.GetMemPtrA
>STYA ZPPtr1
ldy #S.NODE.REG.REF
lda (ZPPtr1),y
sta K.MLI.PARAMS+1
rts
*/--------------------------------------
* # FPutCAY
* Print A (char) to File
* ## In:
@ -331,15 +727,15 @@ K.SScanF.IsDigit
.1 sec
rts
*/--------------------------------------
* # PrintFYA/SPrintFYA/FPrintFYA
* # PrintF.YA/SPrintF.YA/FPrintF.YA
* Prints C-Style String
* ## In:
* PrintFYA :
* PrintF.YA :
* Y,A = PTR to CStr
* SPrintFYA :
* SPrintF.YA :
* Y,A = PTR to CStr
* PULLW = Ptr to Dst Buffer
* FPrintFYA :
* FPrintF.YA :
* Y,A = PTR to CStr
* PULLB = hNode
* ## Out:
@ -378,12 +774,12 @@ K.SScanF.IsDigit
* %011s : 'ABCDEFGH000'
* %2f : '3.14'
*\--------------------------------------
K.SPrintFYA >STYA ZPPtr1
K.SPrintF.YA >STYA ZPPtr1
>PULLW Printf.Cout.Ptr+1
K.FPrintFYA >STYA ZPPtr1
K.FPrintF.YA >STYA ZPPtr1
K.PrintFYA >STYA ZPPtr1
K.PrintF.YA >STYA ZPPtr1
ldy #0
@ -730,24 +1126,6 @@ Printf.Cout jmp K.PutCharA
Printf.Cout.Ptr sta $ffff Self modified
*--------------------------------------
FILE.SetIOBUF >PUSHWI 1024 get a ProDOS IOBUF
>PUSHBI S.MEM.F.ALIGN+S.MEM.F.NOMOVE
jsr K.GetMem
bcs .9
>STYA K.MLI.PARAMS+3 Save Ptr to IOBUF for MLIOPEN call
txa
ldy #S.NODE.REG.IOBUF
sta (ZPPtr1),y
.9 rts
*--------------------------------------
FILE.SetupPrt1A jsr K.GetMemPtrA
>STYA ZPPtr1
ldy #S.NODE.REG.REF
lda (ZPPtr1),y
sta K.MLI.PARAMS+1
rts
*--------------------------------------
MAN
SAVE /A2OSX.SRC/SYS/KERNEL.S.STDIO
LOAD /A2OSX.SRC/SYS/KERNEL.S

View File

@ -1,10 +0,0 @@
PR#3
PREFIX /A2OSX.BUILD
LOMEM $A00
INC 1
AUTO 6
*--------------------------------------
MAN
SAVE /A2OSX.SRC/SYS/KERNEL.S.STR
LOAD /A2OSX.SRC/SYS/KERNEL.S
ASM

View File

@ -143,16 +143,16 @@ K.StrMatch jsr PullPtr1Ptr2
.9 sec
rts
*/--------------------------------------
* # StrUprYA/StrLwrYA
* # StrUpr.YA/StrLwr.YA
* Convert string to UPPERCASE/lowercase
* ## In:
* Y,A = PTR to String (CSTR)
* ## Out:
* Uppercased/lowercased String in Buffer
*\--------------------------------------
K.StrUprYA ldx #0
K.StrUpr.YA ldx #0
.HS 2C bit abs
K.StrLwrYA ldx #2
K.StrLwr.YA ldx #2
>STYA ZPPtr1
pha save Y,A to restore them at exit
@ -163,9 +163,9 @@ K.StrLwrYA ldx #2
.1 lda (ZPPtr1),y
beq .8
cmp K.PStrUprLwr,x
cmp .9,x
bcc .2
cmp K.PStrUprLwr+1,x
cmp .9+1,x
bcs .2
eor #$20
sta (ZPPtr1),y
@ -178,7 +178,7 @@ K.StrLwrYA ldx #2
pla
rts
*--------------------------------------
K.PStrUprLwr .AS "azAZ"
.9 .AS "azAZ"
*--------------------------------------
MAN
SAVE /A2OSX.SRC/SYS/KERNEL.S.STRING

View File

@ -11,13 +11,13 @@ CENTURY0 .EQ 19
YEAR0 .EQ 70
DAY0 .EQ 4 day 0 was a thursday
*--------------------------------------
* K.TimeYA get System Time
* K.Time.YA get System Time
* In :
* Y,A = PTR to S.TIME
* Out :
* S.TIME filled with System date/time
*--------------------------------------
K.TimeYA >STYA ZPPtr2
K.Time.YA >STYA ZPPtr2
>MLICALL MLIGETTIME
>LDYAI DATELO
>STYA ZPPtr1
@ -618,6 +618,6 @@ K.StrFTime.BIN .BS 1
K.StrFTime.DEC .BS 1 always < 100
*--------------------------------------
MAN
SAVE /A2OSX.SRC/SYS/KERNEL.S.Time
SAVE /A2OSX.SRC/SYS/KERNEL.S.TIME
LOAD /A2OSX.SRC/SYS/KERNEL.S
ASM

View File

@ -28,24 +28,22 @@ A2osX.GP .PH $BD00
.EP
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.FIO
.INB /A2OSX.SRC/SYS/KERNEL.S.DRV
.INB /A2OSX.SRC/SYS/KERNEL.S.LIB
.INB /A2OSX.SRC/SYS/KERNEL.S.TIME
.INB /A2OSX.SRC/SYS/KERNEL.S.FILE
.INB /A2OSX.SRC/SYS/KERNEL.S.DIR
.INB /A2OSX.SRC/SYS/KERNEL.S.PFT
.INB /A2OSX.SRC/SYS/KERNEL.S.BIN
.EP
A2osX.D2 .PH $D000
.DA #RRAMWRAMBNK2
.INB /A2OSX.SRC/SYS/KERNEL.S.CIO
.INB /A2OSX.SRC/SYS/KERNEL.S.STR
.INB /A2OSX.SRC/SYS/KERNEL.S.STRING
.INB /A2OSX.SRC/SYS/KERNEL.S.STDLIB
.INB /A2OSX.SRC/SYS/KERNEL.S.DEV
.INB /A2OSX.SRC/SYS/KERNEL.S.PS
.INB /A2OSX.SRC/SYS/KERNEL.S.ARG
.INB /A2OSX.SRC/SYS/KERNEL.S.ENV
.INB /A2OSX.SRC/SYS/KERNEL.S.CNV
.INB /A2OSX.SRC/SYS/KERNEL.S.RUN
.INB /A2OSX.SRC/SYS/KERNEL.S.EVT
.INB /A2OSX.SRC/SYS/KERNEL.S.TSK
@ -55,7 +53,6 @@ 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.CHR
.INB /A2OSX.SRC/SYS/KERNEL.S.D01
.EP
A2osX.E0.E .EQ *