diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index fe76ff6c..28ad6ed6 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/SYS/KERNEL.S.ENV.txt b/SYS/KERNEL.S.ENV.txt index 5db75692..26a11c05 100644 --- a/SYS/KERNEL.S.ENV.txt +++ b/SYS/KERNEL.S.ENV.txt @@ -96,8 +96,17 @@ K.Expand jsr K.strdup bcs .70 jsr ENV.NextEnvP3Y Skip NAME= + + .DO AUXENV=1 + sta SETREADAUX + .FIN + jsr ENV.AddP3ToBuf Add VALUE - + + .DO AUXENV=1 + sta CLRREADAUX + .FIN + .70 lda (TXTPTR) beq .72 @@ -329,8 +338,8 @@ K.SetEnv >PULLW FORPNT value >PULLW TXTPTR name K.SetEnv.I jsr K.UnsetEnv.I - -.1 jsr ENV.InitEnvP3 ZPPtr3 -> Env + +.1 jsr ENV.InitEnvP3 ZPPtr3 -> Env (SETREADAUX) lda #1 sta ZPPtr4 @@ -338,18 +347,26 @@ K.SetEnv.I jsr K.UnsetEnv.I .10 lda (ZPPtr3) End of ENV beq .15 + jsr ENV.GetP3LenY jsr ENV.NextEnvP3Y jsr ENV.NextEnvP4Y bra .10 -.15 ldy #$ff +.15 .DO AUXENV=1 + sta CLRREADAUX + .FIN + + ldy #$ff .16 iny lda (TXTPTR),y - bne .16 + beq .17 - jsr ENV.NextEnvP4Y ZPPtr4 = ENVSIZE + VAR + jsr SHARED.IsIDValid + bcc .16 + +.17 jsr ENV.NextEnvP4Y ZPPtr4 = ENVSIZE + VAR ldy #$ff @@ -375,7 +392,14 @@ K.SetEnv.I jsr K.UnsetEnv.I pha ldy #S.PS.hENV lda (pPs),y + + .DO AUXENV=1 + ldx #SYS.FreeStkObj + jsr K.SYSCALL2.AUX + .ELSE jsr K.Freemem + .FIN + pla ldy #S.PS.hENV sta (pPs),y @@ -386,6 +410,10 @@ K.SetEnv.I jsr K.UnsetEnv.I .22 ldy #$ff + .DO AUXENV=1 + sta SETWRITEAUX + .FIN + .23 iny lda (TXTPTR),y sta (ZPPtr3),y @@ -407,7 +435,12 @@ K.SetEnv.I jsr K.UnsetEnv.I iny sta (ZPPtr3),y don't forget array ending 0 clc -.9 rts + +.9 .DO AUXENV=1 + sta CLRREADAUX + sta CLRWRITEAUX + .FIN + rts */-------------------------------------- * # GetEnv * searches the environment list to find the environment variable name, @@ -425,6 +458,9 @@ K.SetEnv.I jsr K.UnsetEnv.I *\-------------------------------------- K.GetEnv >PULLW FORPNT value >PULLW TXTPTR name + + lda TXTPTR + beq K.GetEnvDump jsr ENV.FindVarTXTPTR bcs .9 @@ -443,13 +479,22 @@ K.GetEnv >PULLW FORPNT value iny bne .2 inc + +.2 .DO AUXENV=1 + sta CLRREADAUX + sta CLRWRITEAUX + .FIN -.2 jsr K.getmem + jsr K.getmem bcs .99 >STYA FORPNT + +.3 .DO AUXENV=1 + sta SETREADAUX + .FIN -.3 ldy #$ff + ldy #$ff .4 iny lda (ZPPtr3),y @@ -457,6 +502,9 @@ K.GetEnv >PULLW FORPNT value bne .4 >LDYA FORPNT + .DO AUXENV=1 + sta CLRREADAUX + .FIN clc rts @@ -464,6 +512,9 @@ K.GetEnv >PULLW FORPNT value .9 >LDYAI 0 * sec .99 rts + +K.GetEnvDump sec + rts */-------------------------------------- * # UnsetEnv * Remove an environment variable @@ -482,6 +533,7 @@ K.UnsetEnv.I jsr ENV.FindVarTXTPTR jsr ENV.DelVarP3 Ptr3 -> NAME=VALUE K.UnsetEnv.I.8 clc + K.UnsetEnv.I.9 rts *-------------------------------------- * ENV.FindVarTXTPTR @@ -497,6 +549,11 @@ K.UnsetEnv.I.9 rts * ZPPtr3 -> PTR to Ending 0 *-------------------------------------- ENV.FindVarTXTPTR + .DO AUXENV=1 + sta SETREADAUX + sta SETWRITEAUX + .FIN + jsr ENV.InitEnvP3 Store ENV .1 lda (ZPPtr3) @@ -505,7 +562,11 @@ ENV.FindVarTXTPTR ldy #$ff .2 iny + .DO AUXENV=1 + jsr SHARED.TXTPTR.GetY + .ELSE lda (TXTPTR),y + .FIN beq .3 jsr SHARED.IsIDValid @@ -520,20 +581,32 @@ ENV.FindVarTXTPTR cmp #'=' bne .4 + .DO AUXENV=1 + sta CLRREADAUX + sta CLRWRITEAUX + .FIN clc rts .4 jsr ENV.NextEnvP3 Skip NAME=VALUE bra .1 -.9 sec +.9 .DO AUXENV=1 + sta CLRREADAUX + sta CLRWRITEAUX + .FIN + sec rts *-------------------------------------- * ENV.DelVarP3 * In: * ZPPtr3 -> ENV.NAME to Discard *-------------------------------------- -ENV.DelVarP3 >LDYA ZPPtr3 save actual Ptr +ENV.DelVarP3 .DO AUXENV=1 + sta SETREADAUX + sta SETWRITEAUX + .FIN + >LDYA ZPPtr3 save actual Ptr >STYA ZPPtr4 jsr ENV.NextEnvP3 Skip NAME=VALUE @@ -543,14 +616,29 @@ ENV.DelVarP3 >LDYA ZPPtr3 save actual Ptr lda (ZPPtr3),y Move back CSTRs... sta (ZPPtr4),y bne .2 + tya - beq ENV.InitEnvP3.RTS we moved back ending \0 + + beq .8 we moved back ending \0 + jsr ENV.NextEnvP3Y jsr ENV.NextEnvP4Y bra .1 + +.8 .DO AUXENV=1 + sta CLRREADAUX + sta CLRWRITEAUX + .FIN + rts *-------------------------------------- -ENV.InitEnvP3 ldy #S.PS.hENV +ENV.InitEnvP3 .DO AUXENV=1 + sta CLRREADAUX + .FIN + ldy #S.PS.hENV lda (pPs),y + .DO AUXENV=1 + sta SETREADAUX + .FIN jsr K.GetMemPtr >STYA ZPPtr3 Store ENV ENV.InitEnvP3.RTS @@ -591,7 +679,22 @@ ENV.Dup ldy #S.PS.ENVPAGECNT lda (pPs),y ENV.Dup.A sta .8+1 Store target page Count + + ldy #S.PS.ENVPAGECNT get SOURCE page count + lda (pPs),y + sta .10+1 + + ldy #S.PS.hENV + lda (pPs),y + .DO AUXENV=1 + sta SETREADAUX + sta SETWRITEAUX + .FIN + jsr K.GetMemPtr + >STYA .1+1 + ldy #0 + lda .8+1 jsr K.GetMem bcs .9 @@ -599,17 +702,9 @@ ENV.Dup.A sta .8+1 Store target page Count phx save hMem jsr Mem.SetOwner Set Ownership - ldy #S.PS.ENVPAGECNT get SOURCE page count - lda (pPs),y - tax - - iny #S.PS.hENV - lda (pPs),y - - jsr K.GetMemPtr - >STYA .1+1 - ldy #0 + +.10 ldx #$ff SELF MODIFIED .1 lda $ffff,y SELF MODIFIED .2 sta $ffff,y SELF MODIFIED @@ -624,7 +719,12 @@ ENV.Dup.A sta .8+1 Store target page Count .8 ldx #$ff SELF MODIFIED Target Page Count pla hMem clc -.9 rts + +.9 .DO AUXENV=1 + sta CLRREADAUX + sta CLRWRITEAUX + .FIN + rts *-------------------------------------- MAN SAVE USR/SRC/SYS/KERNEL.S.ENV diff --git a/SYS/KERNEL.S.INIT.txt b/SYS/KERNEL.S.INIT.txt index d8ae36a4..842ebbeb 100644 --- a/SYS/KERNEL.S.INIT.txt +++ b/SYS/KERNEL.S.INIT.txt @@ -734,6 +734,10 @@ DevMgrInit.USR ldx #4 .HS 2C BIT ABS *-------------------------------------- DevMgrInit.BLK ldx #6 + .HS 2C BIT ABS +*-------------------------------------- +DevMgrInit.REMAP + ldx #10 *-------------------------------------- >LDYAI DRV.BlkDevice bra DevMgrInit.AddBDev @@ -744,9 +748,6 @@ DevMgrInit.SP ldy #$ff adc #3 Compute smartport entry point sta FD.BDEV+S.FD.DEV.BUSPTR ldx #8 - .HS 2C BIT ABS -DevMgrInit.REMAP - ldx #10 >LDYAI DRV.SmartPort *-------------------------------------- DevMgrInit.AddBDev @@ -1016,15 +1017,25 @@ TskMgrInit >LDYAI MSG.TSK iny #S.PS.hENV sta (pPs),y + + .DO AUXENV=1 + sta SETWRITEAUX + .FIN lda #0 sta (ZPPtr1) make sure blank!! + .DO AUXENV=1 + sta CLRWRITEAUX + .FIN + >LDYAI $2E0 Get ROOT from QC >SYSCALL2 strdup bcs .9 + txa ldy #S.PS.hCWD sta (pPs),y + >PUSHWI I.ENV.BOOT >PUSHWI $2C0 Get BOOT from QC >SYSCALL2 SetEnv