diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 47bb3f07..76bc8eda 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 680fb626..6f111164 100644 Binary files a/.Floppies/A2OSX.SRC.po and b/.Floppies/A2OSX.SRC.po differ diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index 4c4b14ef..cfdd1103 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -151,6 +151,7 @@ H.BIN.JMP .EQ 2 H.BIN.CODE.LEN .EQ 8 * H.BIN.EXE.DS.SIZE .EQ 10 +H.BIN.EXE.SS.SIZE .EQ 12 H.BIN.EXE.REL.TABLE .EQ 16 * H.BIN.DRV.HEADER.O .EQ 10 @@ -201,7 +202,13 @@ SYS.FTell .EQ $3C SYS.FEOF .EQ $3E SYS.Remove.YA .EQ $40 SYS.Rename .EQ $42 -* .EQ $44-$4E +* .EQ $44 +* .EQ $46 + +SYS.GetDevByID.A .EQ $48 +SYS.GetDevByName.YA .EQ $4A +SYS.GetDevStatus.A .EQ $4C +* .EQ $4E * .EQ $50 SYS.SScanF .EQ $52 @@ -223,11 +230,11 @@ SYS.ChOwn .EQ $6C SYS.ChGrp .EQ $6E *-------------------------------------- * .EQ $70 -SYS.PStrCpy .EQ $72 -SYS.PStrCat .EQ $74 -SYS.PStrMatch .EQ $76 -SYS.PStrUprYA .EQ $78 -SYS.PStrLwrYA .EQ $7A +SYS.StrCpy .EQ $72 +SYS.StrCat .EQ $74 +SYS.StrMatch .EQ $76 +SYS.StrUprYA .EQ $78 +SYS.StrLwrYA .EQ $7A SYS.StrFTime .EQ $7C * .EQ $7E @@ -241,9 +248,9 @@ SYS.CTime2Time .EQ $92 SYS.PTime2Time .EQ $94 * .EQ $96 -SYS.GetDevByID.A .EQ $98 -SYS.GetDevByName.YA .EQ $9A -SYS.GetDevStatus.A .EQ $9C +* .EQ $98 +* .EQ $9A +* .EQ $9C * .EQ $9E SYS.ExecProcessNewEnvYA .EQ $A0 diff --git a/SYS/KERNEL.S.ENV.txt b/SYS/KERNEL.S.ENV.txt index 299b33df..96de1f65 100644 --- a/SYS/KERNEL.S.ENV.txt +++ b/SYS/KERNEL.S.ENV.txt @@ -4,66 +4,63 @@ LOMEM $A00 INC 1 AUTO 6 */-------------------------------------- -* # ExpandPStr.YA +* # ExpandStr.YA * ## In: -* Y,A = PTR to String to Expand (PSTR) +* Y,A = PTR to String to Expand (C-String) * ## Out: -* X = hMem to Expanded String (PSTR) +* X = hMem to Expanded String (C-String) * Y,A = PTR to Expanded String *\-------------------------------------- -K.ExpandPStr.YA stz K.ExpandPStr.hPStr Reset Intermediate string... +K.ExpandStr.YA stz K.ExpandStr.hPStr Reset Intermediate string... .1 >STYA ZPPtr2 - stz K.Buf256 init Expanded String len=0 - stz K.ExpandPStr.bFound No var found yet + stz K.ExpandStr.Len init Expanded String len=0 + stz K.ExpandStr.bFound No var found yet - stz K.ExpandPStr.bNoExp Reset no expand flag + stz K.ExpandStr.bNoExp Reset no expand flag ldy #0 -.10 stz K.ExpandPStr.Name - stz K.ExpandPStr.bInVar +.10 stz K.ExpandStr.Name + stz K.ExpandStr.bInVar -.11 tya - cmp (ZPPtr2) End of PSTR? +.11 lda (ZPPtr2),y End of CSTR? beq .8 iny - lda (ZPPtr2),y cmp #''' bne .21 - lda K.ExpandPStr.bNoExp + lda K.ExpandStr.bNoExp eor #$ff - sta K.ExpandPStr.bNoExp toggle flag + sta K.ExpandStr.bNoExp toggle flag bra .11 -.21 bit K.ExpandPStr.bNoExp +.21 bit K.ExpandStr.bNoExp bpl .23 -.22 ldx K.Buf256 - inx - beq .8 +.22 ldx K.ExpandStr.Len sta K.Buf256,x - stx K.Buf256 + inx + stx K.ExpandStr.Len bra .11 -.23 ldx K.ExpandPStr.bInVar already in a var? +.23 ldx K.ExpandStr.bInVar already in a var? bne .3 yes.... cmp #'$' no, found one ? bne .22 no, store.... - sta K.ExpandPStr.bFound Toggle flag - sta K.ExpandPStr.bInVar + sta K.ExpandStr.bFound Toggle flag + sta K.ExpandStr.bInVar bra .11 skip this char .3 cmp #'{' we are in var, "{" after "$"? bne .31 - ldx K.ExpandPStr.Name No char in var yet ? + ldx K.ExpandStr.Name No char in var yet ? beq .11 normal, "${" syntax is ok,skip bne .5 not allowed char in varname, end of var @@ -71,59 +68,59 @@ K.ExpandPStr.YA stz K.ExpandPStr.hPStr Reset Intermediate string... .31 cmp #'}' end of var? beq .50 - jsr K.ExpandPStrValidChar + jsr K.ExpandStrValidChar bcc .32 yes, add to varname - ldx K.ExpandPStr.Name + ldx K.ExpandStr.Name bne .5 varname has already chars...end of var inx must be a $? or ?x.....go expand - stx K.ExpandPStr.Name - sta K.ExpandPStr.Name+1 + stx K.ExpandStr.Name + sta K.ExpandStr.Name+1 bra .51 go Expand.... -.32 ldx K.ExpandPStr.Name +.32 ldx K.ExpandStr.Name inx cpx #16 beq .11 varname longer than 15....ignore - sta K.ExpandPStr.Name,x - stx K.ExpandPStr.Name + sta K.ExpandStr.Name,x + stx K.ExpandStr.Name bra .11 .5 dey last char was invalid...move back -.50 ldx K.ExpandPStr.Name +.50 ldx K.ExpandStr.Name beq .52 var name is empty...start over .51 phy save current index - jsr K.ExpandPStrGetValue + jsr K.ExpandStrGetValue ply restore index in string... .52 jmp .10 reset start flag and continue -.8 ldx K.ExpandPStr.Name end of PSTR,are we in a var? +.8 ldx K.ExpandStr.Name end of PSTR,are we in a var? beq .80 no...exit... - jsr K.ExpandPStrGetValue yes, expand and add to STR + jsr K.ExpandStrGetValue yes, expand and add to STR -.80 lda K.ExpandPStr.hPStr working from our temp string ? +.80 lda K.ExpandStr.hPStr working from our temp string ? beq .81 no... jsr K.FreeMem.A yes, discard.... .81 >LDYAI K.Buf256 - jsr K.NewPStr.YA + jsr K.NewCStr.YA bcs .9 - stx K.ExpandPStr.hPStr save this as temp string, in case of recurse - ldx K.ExpandPStr.bFound Did we expand something ? + stx K.ExpandStr.hPStr save this as temp string, in case of recurse + ldx K.ExpandStr.bFound Did we expand something ? beq .82 jmp .1 Yes, start over with hPStr -.82 ldx K.ExpandPStr.hPStr +.82 ldx K.ExpandStr.hPStr * or exit with Y,A from K.NewPStrYA .9 rts *-------------------------------------- -K.ExpandPStrValidChar +K.ExpandStrValidChar cmp #'0' bcc .9 cmp #'9'+1 @@ -142,11 +139,11 @@ K.ExpandPStrValidChar .9 sec rts *-------------------------------------- -K.ExpandPStrGetValue +K.ExpandStrGetValue jsr ENV.ExpandSysVar bcc .9 - >LDYAI K.ExpandPStr.Name + >LDYAI K.ExpandStr.Name jsr K.GetEnv.YA bcs .9 @@ -156,11 +153,12 @@ K.ExpandPStrGetValue .9 rts *-------------------------------------- -K.ExpandPStr.bNoExp .BS 1 -K.ExpandPStr.bInVar .BS 1 -K.ExpandPStr.bFound .BS 1 -K.ExpandPStr.hPStr .BS 1 -K.ExpandPStr.Name .BS 16 +K.ExpandStr.Len .BS 1 +K.ExpandStr.bNoExp .BS 1 +K.ExpandStr.bInVar .BS 1 +K.ExpandStr.bFound .BS 1 +K.ExpandStr.hPStr .BS 1 +K.ExpandStr.Name .BS 16 */-------------------------------------- * # PutEnv.YA * ## In: @@ -332,19 +330,19 @@ S.UnsetEnvPtr1 jsr ENV.FindVarPtr1 *-------------------------------------- * ENV.ExpandSysVar * In: -* K.ExpandPStr.Name +* K.ExpandStr.Name * Out: * CC: Found * Append VALUE to K.Buf256 * CS: Not Found *-------------------------------------- ENV.ExpandSysVar - ldx K.ExpandPStr.Name + ldx K.ExpandStr.Name cpx #1 is name 1 char? bne .9 ldy #1 - lda K.ExpandPStr.Name+1 + lda K.ExpandStr.Name+1 cmp #'0'-1 $0...$9 ?? bcc .1 cmp #'9'+1 diff --git a/SYS/KERNEL.S.EVT.txt b/SYS/KERNEL.S.EVT.txt index 1d9c297b..93b58493 100644 --- a/SYS/KERNEL.S.EVT.txt +++ b/SYS/KERNEL.S.EVT.txt @@ -20,7 +20,7 @@ EVT.GetEvents lda #EvtMgr.Table bpl .10 no, regular poll lda K.IrkMgr.VBLINT - beq EVT.GetEvents.DEV no + beq .3 no dec K.IrkMgr.VBLINT bra .11 @@ -28,17 +28,17 @@ EVT.GetEvents lda #EvtMgr.Table .10 lda VBL get VLINE status tax eor EvtMgr.VBLState - bpl EVT.GetEvents.DEV no change,no tick + bpl .3 no change,no tick txa sta EvtMgr.VBLState save new - bpl EVT.GetEvents.DEV Up2down transition,no tick + bpl .3 Up2down transition,no tick .11 inc A2osX.TIMER16 bne .1 inc A2osX.TIMER16+1 .1 dec EvtMgr.HZ.CNT - bne EVT.GetEvents.DEV not yet 100ms + bne .3 not yet 100ms ldx A2osX.HZ stx EvtMgr.HZ.CNT @@ -54,43 +54,8 @@ EVT.GetEvents lda #EvtMgr.Table ora #S.EVT.F.T1SEC .2 sta (pEvent) - jsr EVT.GetEvents.Add -*-------------------------------------- -EVT.GetEvents.DEV -* >LDYAI DevMgr.Table -* >STYA pDev - -* stz EvtMgr.Idx - -*.1 ldy #S.DEV.F -* lda (pDev),y get S.DEV.F -* bit #S.DEV.F.EVENT -* beq .2 EVENT enabled ? - -* ldx #DEVMGR.GETEVENT - -* jsr pDevJmp Call DRV GetEvent function -* bcs .2 no event - -* ldy #S.EVT.hDEV -* lda EvtMgr.Idx -* sta (pEvent),y - -* jsr EVT.GetEvents.Add - -* bcs .8 Event Q is full, exit now with CC - -*.2 lda pDev -* clc -* adc #S.DEV -* sta pDev -* bcc .3 -* inc pDev+1 -* -*.3 lda EvtMgr.Idx -* inc EvtMgr.Idx -* cmp DevMgr.Count -* bne .1 + jsr EVT.GetEvents.Add +.3 sec lda EvtMgr.Count if 0, exit with CS (from cmp), and A=0 "no event" beq .9 diff --git a/SYS/KERNEL.S.FIO.txt b/SYS/KERNEL.S.FIO.txt index 06832911..f0f3ee78 100644 --- a/SYS/KERNEL.S.FIO.txt +++ b/SYS/KERNEL.S.FIO.txt @@ -95,43 +95,54 @@ K.FileSearch.I >PULLW ZPPtr4 ZPPtr1 trashed by ExpandStr.YA */-------------------------------------- * # GetFullPath.YA * ## In : -* Y,A = Filename (PSTR) +* Y,A = Filename (C-String) * ## Out : * CC : success -* Y,A = FullPath (PSTR) +* Y,A = FullPath (C-String) * X = hMem of FullPath * CS : A = Error Code *\-------------------------------------- K.GetFullPath.YA - >STYA ZPPtr3 Ptr1 & 2 used by StrCpy - lda (ZPPtr3) - beq K.GetFullPath.YA.9 - + >STYA ZPPtr1 stz K.Buf256 + + lda (ZPPtr1) + beq .8 + - ldy #1 - lda (ZPPtr3),y + ldx #0 + + lda (ZPPtr1) cmp #'/' full path starting with '/'? - beq .1 yes, do not append to current prefix + beq .2 yes, do not append to current prefix ldy #S.PS.hPREFIX lda (pPs),y jsr K.GetMemPtr.A - >PUSHYA - >PUSHWI K.Buf256 - >SYSCALL PStrCpy + >STYA ZPPtr2 -.1 >PUSHW ZPPtr3 - >PUSHWI K.Buf256 - >SYSCALL PStrCat -K.GetFullPath.YA.NewStr + ldy #0 + +.1 lda (ZPPtr2),y + beq .2 + sta K.Buf256,x + iny + inx + bne .1 + +.2 ldy #0 + +.3 lda (ZPPtr1),y + beq .8 + sta K.Buf256,x + iny + inx + bne .3 + +.8 stz K.Buf256,x >LDYAI K.Buf256 jsr K.NewPStr.YA rts - -K.GetFullPath.YA.9 - sec - rts */-------------------------------------- * # LoadFile * ## In: diff --git a/SYS/KERNEL.S.INIT.txt b/SYS/KERNEL.S.INIT.txt index 119d0292..53299093 100644 --- a/SYS/KERNEL.S.INIT.txt +++ b/SYS/KERNEL.S.INIT.txt @@ -31,8 +31,8 @@ Kernel.Init2 >LDAXI MSG.Init2 jsr PrintFAX sta SETALTZP - lda RRAMWRAMBNK2 - lda RRAMWRAMBNK2 + bit RRAMWRAMBNK2 + bit RRAMWRAMBNK2 >LDYAI A2osX.D2 >STYA ZPPtr1 @@ -48,8 +48,8 @@ Kernel.Init2 >LDAXI MSG.Init2 jsr PrintFAX sta SETALTZP - lda RRAMWRAMBNK1 - lda RRAMWRAMBNK1 + bit RRAMWRAMBNK1 + bit RRAMWRAMBNK1 >LDYAI A2osX.D1 >STYA ZPPtr1 @@ -65,8 +65,8 @@ Kernel.Init2 >LDAXI MSG.Init2 jsr PrintFAX sta SETALTZP - lda RRAMWRAMBNK1 - lda RRAMWRAMBNK1 + bit RRAMWRAMBNK1 + bit RRAMWRAMBNK1 >LDYAI A2osX.E0 >STYA ZPPtr1 @@ -100,7 +100,7 @@ Kernel.Init2 >LDAXI MSG.Init2 Kernel.Init3 sta SETALTZP bit RRAMWRAMBNK1 bit RRAMWRAMBNK1 - + jsr MemMgrInit jsr PS0Init bcs * @@ -147,6 +147,7 @@ Kernel.Init3 sta SETALTZP >LDYAI STARTUP.CMDLINE >SYSCALL ExpandStr.YA phx Save Expanded CMDLINE for discard + >SYSCALL CreateProcessYA bcs .9 pla @@ -168,7 +169,6 @@ Kernel.Init3 sta SETALTZP >LDYAI MSG.StartupErr >SYSCALL PrintF.YA bra * No need to discard Expanded CMDLINE - *-------------------------------------- Kernel.Move ldy #0 .1 inc ZPPtr3 @@ -768,7 +768,7 @@ TskMgrInit >LDYAI TskMgr.Table+S.PS Clear whole process table except PS0 bne .1 >LDYAI K.ENV.SIZE get a buffer for ENV - >SYSCALL GetMem0.YA make sure blank!! + >SYSCALL GetMem0.YA make sure blank!! bcs .9 txa @@ -781,7 +781,7 @@ TskMgrInit >LDYAI TskMgr.Table+S.PS Clear whole process table except PS0 bcs .9 >LDYAI K.Buf256 - jsr K.NewPStr.YA + jsr K.NewCStr.YA bcs .9 txa @@ -818,8 +818,8 @@ MSG.IRQ >CSTR "-Interrupt Manager...\r\n" MSG.EVT >CSTR "-Event Manager...\r\n" MSG.FLT >CSTR "-Path Filter...\r\n" MSG.TSK >CSTR "-Task Manager...\r\n" -MSG.Prefix >CSTR "Prefix:%S\r\n" -MSG.Startup >CSTR "Executing Kernel Startup Script...\r\nCmd:%S\r\n" +MSG.Prefix >CSTR "Prefix:%s\r\n" +MSG.Startup >CSTR "Executing Kernel Startup Script...\r\nCmd:%s\r\n" MSG.StartupErr >CSTR "Failed : [$%h]\r\n" MSG.Init3.OK >CSTR "A2osX[Stage3]:Complete.\r\n" *-------------------------------------- @@ -850,7 +850,7 @@ I.ENV.A2osX >PSTR "A2OSX" I.ENV.PATH >PSTR "PATH=${A2OSX}SBIN/;${A2OSX}BIN/" I.ENV.LIB >PSTR "LIB=${A2OSX}LIB/" I.ENV.DRV >PSTR "DRV=${A2OSX}DRV/" -STARTUP.CMDLINE >PSTR "${A2OSX}SBIN/SHELL ${A2OSX}A2osX.STARTUP" +STARTUP.CMDLINE >CSTR "${A2OSX}SBIN/SHELL ${A2OSX}A2osX.STARTUP" *-------------------------------------- MLIOPEN00 .DA #3 .DA A2OSXCONF diff --git a/SYS/KERNEL.S.JMP.txt b/SYS/KERNEL.S.JMP.txt index bf3566bb..6c243b61 100644 --- a/SYS/KERNEL.S.JMP.txt +++ b/SYS/KERNEL.S.JMP.txt @@ -48,9 +48,9 @@ K.SYSCALL.JMP .DA 0 $00 .DA K.Rename .DA 0 .DA 0 - .DA 0 - .DA 0 - .DA 0 + .DA K.GetDevByID.A + .DA K.GetDevByName.YA + .DA K.GetDevStatus.A .DA 0 .DA 0 $50 @@ -95,9 +95,9 @@ K.SYSCALL.JMP .DA 0 $00 .DA K.CTime2Time .DA K.PTime2Time .DA 0 - .DA K.GetDevByID.A - .DA K.GetDevByName.YA - .DA K.GetDevStatus.A + .DA 0 + .DA 0 + .DA 0 .DA 0 .DA K.ExecProcessNewEnv.YA $A0 @@ -111,7 +111,7 @@ K.SYSCALL.JMP .DA 0 $00 .DA K.GetArgC $B0 .DA K.GetArg.A - .DA K.ExpandPStr.YA + .DA K.ExpandStr.YA .DA 0 .DA K.PutEnv.YA .DA K.SetEnv @@ -451,6 +451,36 @@ K.NewPStr.YA >STYA ZPPtr2 clc .9 rts *-------------------------------------- +K.NewCStr.YA >STYA ZPPtr1 + lda (ZPPtr1) + inc + tay + lda #0 Y,A = len of new string + jsr K.GetMem.YA + bcs .9 + + >STYA ZPPtr2 + + lda (ZPPtr1) + tay + phy + beq .2 + +.1 lda (ZPPtr1),y + dey + sta (ZPPtr2),y + bne .1 + +.2 ply + lda #0 + sta (ZPPtr2),y + + >LDYA ZPPtr1 + + clc +.9 rts +*-------------------------------------- + MAN SAVE /A2OSX.SRC/SYS/KERNEL.S.JMP LOAD /A2OSX.SRC/SYS/KERNEL.S diff --git a/SYS/KERNEL.S.PS.txt b/SYS/KERNEL.S.PS.txt index da04cfc1..a5518d24 100644 --- a/SYS/KERNEL.S.PS.txt +++ b/SYS/KERNEL.S.PS.txt @@ -32,6 +32,8 @@ K.CreateProcess.YA sta .8+1 + >DEBUG + jsr PS.Init bcc .8 @@ -233,10 +235,10 @@ PS.CreateChild >LDYAI TskMgr.Table+S.PS .9 rts *-------------------------------------- PS.Init >LDYA K.CreateProcess.CmdLine - jsr PS.Str2StrArray.YA + jsr PS.CmdLine2Args.YA bcs .9 - phy save PTR to StrArray... + phy save PTR to Args[0]... pha txa @@ -271,7 +273,24 @@ PS.Init >LDYA K.CreateProcess.CmdLine ldy #S.PS.hDS sta (ZPPtr3),y save DS hMem in TSKSLOT -.2 +.2 ldy #H.BIN.EXE.SS.SIZE+1 + lda (ZPPtr4),y Load DS.SIZE HI + tax + dey + ora (ZPPtr4),y + + beq * DS.SIZE=0!!!! + + lda (ZPPtr4),y + tay + txa Y,A = DS.SIZE + jsr K.GetMem0.YA + bcs .9 + + txa + ldy #S.PS.hSS + sta (ZPPtr3),y save DS hMem in TSKSLOT + clc .9 rts @@ -354,8 +373,8 @@ PS.DupEnv.A jsr K.GetMemPtr.A clc .9 rts */-------------------------------------- -* # Str2StrArray.YA -* Convert a CSTR (e.g. : command Line) to a Array of CSTRs (Args[]) +* # CmdLine2Args.YA +* Convert a CSTR (e.g. : command Line) to Args[] * ## In: * Y,A = PTR to String * ## Out: @@ -365,7 +384,7 @@ PS.DupEnv.A jsr K.GetMemPtr.A * CS : error * A = SYS error code *\-------------------------------------- -PS.Str2StrArray.YA +PS.CmdLine2Args.YA >STYA ZPPtr1 lda (ZPPtr1) Get mem size STRLEN+1 inc diff --git a/SYS/KERNEL.S.txt b/SYS/KERNEL.S.txt index 0c5c5d4f..1e6f4029 100644 --- a/SYS/KERNEL.S.txt +++ b/SYS/KERNEL.S.txt @@ -33,19 +33,19 @@ A2osX.D1 .PH $D000 .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.DEV .EP 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 .INB /A2OSX.SRC/SYS/KERNEL.S.ENV - .INB /A2OSX.SRC/SYS/KERNEL.S.RUN .INB /A2OSX.SRC/SYS/KERNEL.S.EVT .INB /A2OSX.SRC/SYS/KERNEL.S.TSK + .INB /A2OSX.SRC/SYS/KERNEL.S.RUN .EP A2osX.E0 .PH $E000 .INB /A2OSX.SRC/SYS/KERNEL.S.JMP