diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index f806e85d..0c977aaa 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index f543758c..1c9d8898 100644 Binary files a/.Floppies/A2OSX.SRC.po and b/.Floppies/A2OSX.SRC.po differ diff --git a/BIN/ARP.S.txt b/BIN/ARP.S.txt index 42c95ca7..e05a82b7 100644 --- a/BIN/ARP.S.txt +++ b/BIN/ARP.S.txt @@ -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 diff --git a/BIN/ASM.S.txt b/BIN/ASM.S.txt index a4e83110..95acc03f 100644 --- a/BIN/ASM.S.txt +++ b/BIN/ASM.S.txt @@ -154,7 +154,7 @@ CS.INIT >SYSCALL GetArgC beq .99 No arg, new file.... lda #1 - >SYSCALL GetArgA + >SYSCALL GetArg.A >SYSCALL GetFullPathYA txa diff --git a/BIN/CAT.S.txt b/BIN/CAT.S.txt index 83882ee8..20b097d8 100644 --- a/BIN/CAT.S.txt +++ b/BIN/CAT.S.txt @@ -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 diff --git a/BIN/CHTYP.S.txt b/BIN/CHTYP.S.txt index 7ab5bddb..625a5613 100644 --- a/BIN/CHTYP.S.txt +++ b/BIN/CHTYP.S.txt @@ -58,7 +58,7 @@ CS.INIT >SYSCALL GetArgC inc ArgIndex lda ArgIndex - >SYSCALL GetArgA + >SYSCALL GetArg.A >STYA ZPPtr1 lda (ZPPtr1) diff --git a/BIN/DEVDUMP.S.txt b/BIN/DEVDUMP.S.txt index a5456d14..f1ec6621 100644 --- a/BIN/DEVDUMP.S.txt +++ b/BIN/DEVDUMP.S.txt @@ -41,7 +41,7 @@ CS.INIT >SYSCALL GetArgC beq .9 lda #1 - >SYSCALL GetArgA + >SYSCALL GetArg.A >SYSCALL GetDevByNameYA bcs .9 diff --git a/BIN/DNSINFO.S.txt b/BIN/DNSINFO.S.txt index fe2fc0b8..bae27280 100644 --- a/BIN/DNSINFO.S.txt +++ b/BIN/DNSINFO.S.txt @@ -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 diff --git a/BIN/EDIT.S.txt b/BIN/EDIT.S.txt index 7e64bdbf..33f7a99f 100644 --- a/BIN/EDIT.S.txt +++ b/BIN/EDIT.S.txt @@ -108,7 +108,7 @@ CS.INIT lda #$ff beq .1 No arg, new file.... lda #1 - >SYSCALL GetArgA + >SYSCALL GetArg.A >SYSCALL GetFullPathYA txa diff --git a/BIN/FORMAT.S.txt b/BIN/FORMAT.S.txt index 9f4d822f..89876ae0 100644 --- a/BIN/FORMAT.S.txt +++ b/BIN/FORMAT.S.txt @@ -53,7 +53,7 @@ CS.INIT >SYSCALL GetArgC inc ArgIndex lda ArgIndex - >SYSCALL GetArgA + >SYSCALL GetArg.A >STYA ZPPtr1 lda (ZPPtr1) diff --git a/BIN/LS.S.txt b/BIN/LS.S.txt index 6f547048..a1d6e44d 100644 --- a/BIN/LS.S.txt +++ b/BIN/LS.S.txt @@ -60,7 +60,7 @@ CS.INIT >SYSCALL GetArgC beq .5 lda ArgCount - >SYSCALL GetArgA + >SYSCALL GetArg.A >STYA ZPPtr1 lda (ZPPtr1) diff --git a/BIN/MD.S.txt b/BIN/MD.S.txt index 8d9b35d4..2ad1d46e 100644 --- a/BIN/MD.S.txt +++ b/BIN/MD.S.txt @@ -41,7 +41,7 @@ CS.RUN >SYSCALL GetArgC beq .99 lda #1 - >SYSCALL GetArgA + >SYSCALL GetArg.A >SYSCALL GetFullPathYA bcs .9 diff --git a/BIN/NSCUTIL.S.txt b/BIN/NSCUTIL.S.txt index 4b4eac6b..7462ebc1 100644 --- a/BIN/NSCUTIL.S.txt +++ b/BIN/NSCUTIL.S.txt @@ -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) diff --git a/BIN/PING.S.txt b/BIN/PING.S.txt index 6a8b458f..08a37294 100644 --- a/BIN/PING.S.txt +++ b/BIN/PING.S.txt @@ -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 diff --git a/BIN/RPCDUMP.S.txt b/BIN/RPCDUMP.S.txt index e5a9c0b8..05bec13e 100644 --- a/BIN/RPCDUMP.S.txt +++ b/BIN/RPCDUMP.S.txt @@ -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 diff --git a/BIN/X.CPMVRM.S.txt b/BIN/X.CPMVRM.S.txt index af157c05..eb0564d5 100644 --- a/BIN/X.CPMVRM.S.txt +++ b/BIN/X.CPMVRM.S.txt @@ -54,7 +54,7 @@ CS.INIT >SYSCALL GetArgC inc ArgIndex lda ArgIndex - >SYSCALL GetArgA + >SYSCALL GetArg.A >STYA ZPPtr1 lda (ZPPtr1) diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index cff90e21..36633317 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -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 diff --git a/SBIN/GETTY.S.txt b/SBIN/GETTY.S.txt index fb0cecb8..ded066a2 100644 --- a/SBIN/GETTY.S.txt +++ b/SBIN/GETTY.S.txt @@ -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 diff --git a/SBIN/INSDRV.S.txt b/SBIN/INSDRV.S.txt index 6efce01b..b704f80a 100644 --- a/SBIN/INSDRV.S.txt +++ b/SBIN/INSDRV.S.txt @@ -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 diff --git a/SBIN/SHELL.S.CMD.txt b/SBIN/SHELL.S.CMD.txt index 9100a433..dadb85ff 100644 --- a/SBIN/SHELL.S.CMD.txt +++ b/SBIN/SHELL.S.CMD.txt @@ -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 diff --git a/SBIN/SHELL.S.txt b/SBIN/SHELL.S.txt index e4117cc6..c95b150a 100644 --- a/SBIN/SHELL.S.txt +++ b/SBIN/SHELL.S.txt @@ -113,7 +113,7 @@ CS.INIT jsr SetPWD >PUSHBI SYS.FOpen.R lda #1 - >SYSCALL GetArgA + >SYSCALL GetArg.A >PUSHYA >SYSCALL LoadFile bcs .9 diff --git a/SYS/KERNEL.S.ARG.txt b/SYS/KERNEL.S.ARG.txt index 9a9be783..dfb74f9f 100644 --- a/SYS/KERNEL.S.ARG.txt +++ b/SYS/KERNEL.S.ARG.txt @@ -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 diff --git a/SYS/KERNEL.S.BIN.txt b/SYS/KERNEL.S.BIN.txt index 4cb9bc52..e5b36395 100644 --- a/SYS/KERNEL.S.BIN.txt +++ b/SYS/KERNEL.S.BIN.txt @@ -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 *-------------------------------------- diff --git a/SYS/KERNEL.S.CHR.txt b/SYS/KERNEL.S.CHR.txt deleted file mode 100644 index 1cb03960..00000000 --- a/SYS/KERNEL.S.CHR.txt +++ /dev/null @@ -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 diff --git a/SYS/KERNEL.S.CIO.txt b/SYS/KERNEL.S.CIO.txt deleted file mode 100644 index f87438f2..00000000 --- a/SYS/KERNEL.S.CIO.txt +++ /dev/null @@ -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 diff --git a/SYS/KERNEL.S.CNV.txt b/SYS/KERNEL.S.CNV.txt deleted file mode 100644 index 20b160bf..00000000 --- a/SYS/KERNEL.S.CNV.txt +++ /dev/null @@ -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 diff --git a/SYS/KERNEL.S.DIR.txt b/SYS/KERNEL.S.DIR.txt index 3ff3597e..7940c67e 100644 --- a/SYS/KERNEL.S.DIR.txt +++ b/SYS/KERNEL.S.DIR.txt @@ -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 diff --git a/SYS/KERNEL.S.DRV.txt b/SYS/KERNEL.S.DRV.txt index 0d8f9247..77309e28 100644 --- a/SYS/KERNEL.S.DRV.txt +++ b/SYS/KERNEL.S.DRV.txt @@ -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 diff --git a/SYS/KERNEL.S.ENV.txt b/SYS/KERNEL.S.ENV.txt index ef860906..1985f3b5 100644 --- a/SYS/KERNEL.S.ENV.txt +++ b/SYS/KERNEL.S.ENV.txt @@ -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 diff --git a/SYS/KERNEL.S.FILE.txt b/SYS/KERNEL.S.FILE.txt deleted file mode 100644 index ad83e014..00000000 --- a/SYS/KERNEL.S.FILE.txt +++ /dev/null @@ -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 diff --git a/SYS/KERNEL.S.FIO.txt b/SYS/KERNEL.S.FIO.txt index d4f0a6eb..b23808c1 100644 --- a/SYS/KERNEL.S.FIO.txt +++ b/SYS/KERNEL.S.FIO.txt @@ -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 diff --git a/SYS/KERNEL.S.INIT.txt b/SYS/KERNEL.S.INIT.txt index e3753d87..58798668 100644 --- a/SYS/KERNEL.S.INIT.txt +++ b/SYS/KERNEL.S.INIT.txt @@ -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 diff --git a/SYS/KERNEL.S.JMP.txt b/SYS/KERNEL.S.JMP.txt index ca9c1e51..acb266a9 100644 --- a/SYS/KERNEL.S.JMP.txt +++ b/SYS/KERNEL.S.JMP.txt @@ -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 diff --git a/SYS/KERNEL.S.LIB.txt b/SYS/KERNEL.S.LIB.txt index a6ea7b22..3c3bd144 100644 --- a/SYS/KERNEL.S.LIB.txt +++ b/SYS/KERNEL.S.LIB.txt @@ -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 diff --git a/SYS/KERNEL.S.MEM.txt b/SYS/KERNEL.S.MEM.txt index e76e7e63..bb5d20d9 100644 --- a/SYS/KERNEL.S.MEM.txt +++ b/SYS/KERNEL.S.MEM.txt @@ -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 diff --git a/SYS/KERNEL.S.PS.txt b/SYS/KERNEL.S.PS.txt index b7d0b292..8a4b56e4 100644 --- a/SYS/KERNEL.S.PS.txt +++ b/SYS/KERNEL.S.PS.txt @@ -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 diff --git a/SYS/KERNEL.S.RUN.txt b/SYS/KERNEL.S.RUN.txt index 141bc618..5af1670a 100644 --- a/SYS/KERNEL.S.RUN.txt +++ b/SYS/KERNEL.S.RUN.txt @@ -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 diff --git a/SYS/KERNEL.S.STAT.txt b/SYS/KERNEL.S.STAT.txt new file mode 100644 index 00000000..6f0945c9 --- /dev/null +++ b/SYS/KERNEL.S.STAT.txt @@ -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 diff --git a/SYS/KERNEL.S.STDIO.txt b/SYS/KERNEL.S.STDIO.txt index 3c16a16e..4f400ed0 100644 --- a/SYS/KERNEL.S.STDIO.txt +++ b/SYS/KERNEL.S.STDIO.txt @@ -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 diff --git a/SYS/KERNEL.S.STR.txt b/SYS/KERNEL.S.STR.txt deleted file mode 100644 index 73fd4ba8..00000000 --- a/SYS/KERNEL.S.STR.txt +++ /dev/null @@ -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 diff --git a/SYS/KERNEL.S.STRING.txt b/SYS/KERNEL.S.STRING.txt index 952f6c6b..d02d2900 100644 --- a/SYS/KERNEL.S.STRING.txt +++ b/SYS/KERNEL.S.STRING.txt @@ -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 diff --git a/SYS/KERNEL.S.TIME.txt b/SYS/KERNEL.S.TIME.txt index 6fd3232e..4edb0452 100644 --- a/SYS/KERNEL.S.TIME.txt +++ b/SYS/KERNEL.S.TIME.txt @@ -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 diff --git a/SYS/KERNEL.S.txt b/SYS/KERNEL.S.txt index 5391a037..21430d80 100644 --- a/SYS/KERNEL.S.txt +++ b/SYS/KERNEL.S.txt @@ -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 *