diff --git a/BIN/ARP.S.txt b/BIN/ARP.S.txt index 0c1bd5fa..7109fd6a 100644 --- a/BIN/ARP.S.txt +++ b/BIN/ARP.S.txt @@ -62,7 +62,7 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG .1 ldy #S.PS.ARGC lda (pPs),y - cmp #2 + cmp #1 bcs .2 jmp CS.RUN.DUMP @@ -81,7 +81,7 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG ldy #S.PS.ARGC lda (pPs),y - cmp #2 + cmp #1 beq CS.RUN.QUERY cmp #3 diff --git a/BIN/DNSINFO.S.txt b/BIN/DNSINFO.S.txt index f7eaa9f8..4ce96aa9 100644 --- a/BIN/DNSINFO.S.txt +++ b/BIN/DNSINFO.S.txt @@ -63,7 +63,6 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ? CS.RUN.IPOK ldy #S.PS.ARGC lda (pPs),y - cmp #1 bne .1 jmp CS.RUN.DUMP diff --git a/BIN/FORMAT.S.txt b/BIN/FORMAT.S.txt index 35f52919..8a785fa3 100644 --- a/BIN/FORMAT.S.txt +++ b/BIN/FORMAT.S.txt @@ -42,8 +42,7 @@ L.MSG.ERR .DA MSG.ERR *-------------------------------------- CS.INIT ldy #S.PS.ARGC lda (pPs),y - cmp #2 - bcc .90 + beq .90 .1 >INC.G ArgIndex diff --git a/BIN/MD5.S.txt b/BIN/MD5.S.txt index 9094ab31..8e7936d9 100644 --- a/BIN/MD5.S.txt +++ b/BIN/MD5.S.txt @@ -49,7 +49,6 @@ CS.INIT >LDYA L.LIBCRYPT *-------------------------------------- CS.RUN ldy #S.PS.ARGC lda (pPs),y - dec beq .99 .1 >INC.G ArgIndex diff --git a/BIN/NSCUTIL.S.txt b/BIN/NSCUTIL.S.txt index 2cde14b5..e032eef7 100644 --- a/BIN/NSCUTIL.S.txt +++ b/BIN/NSCUTIL.S.txt @@ -46,7 +46,7 @@ CS.INIT clc *-------------------------------------- CS.RUN ldy #S.PS.ARGC lda (pPs),y - cmp #2 + cmp #1 bcs CS.RUN.SET CS.RUN.READ jsr NSC.Init diff --git a/BIN/SHELL.S.CL.txt b/BIN/SHELL.S.CL.txt index f739fe96..7d7f89cc 100644 --- a/BIN/SHELL.S.CL.txt +++ b/BIN/SHELL.S.CL.txt @@ -54,7 +54,7 @@ CL.CHARIN tax .1 cpx #$7f bne .2 - jmp CL.DEL + jmp CL.SUPPR .2 jmp CL.Insert @@ -68,12 +68,12 @@ CL.CHARIN.CTRL cpx #C.CR >LDYA L.MSG.ECHOCRLF >SYSCALL printf - >LDA.G CL.Ptr - tay - lda #0 - sta (ZPCLBuf),y - tya - >STA.G CL.Len +* >LDA.G CL.Ptr +* tay +* lda #0 +* sta (ZPCLBuf),y +* tya +* >STA.G CL.Len lda #$ff >STA.G CL.bExec @@ -96,7 +96,7 @@ CL.CHARIN.CTRL cpx #C.CR .12 cpx #24 Ctrl-X bne .13 - jmp CL.SUPPR + jmp CL.DEL .13 clc rts @@ -478,9 +478,9 @@ CL.CheckCmd.RTS *-------------------------------------- * TXT : add "/PATH/SHELL" "/PATH/CMD" *-------------------------------------- -CL.CheckCmd.TXT >LDYA L.SHELL - jsr CL.AddYAToArgV - bcs CL.CheckCmd.90 +*CL.CheckCmd.TXT >LDYA L.SHELL +* jsr CL.AddYAToArgV +* bcs CL.CheckCmd.90 *-------------------------------------- * BIN : add "/PATH/CMD" *-------------------------------------- diff --git a/BIN/SHELL.S.txt b/BIN/SHELL.S.txt index c7765c34..f94d2be9 100644 --- a/BIN/SHELL.S.txt +++ b/BIN/SHELL.S.txt @@ -96,12 +96,10 @@ L.MSG.BATCHERR .DA MSG.BATCHERR L.MSG.ERROR .DA MSG.ERROR L.MSG.PRINTENV .DA MSG.PRINTENV L.MSG.PID .DA MSG.PID -L.SHELL .DA SHELL L.ENV.ROOT .DA ENV.ROOT L.ENV.PATH .DA ENV.PATH L.ENV.PWD .DA ENV.PWD L.ENV.PS1 .DA ENV.PS1 -L.ENV.SHELL .DA ENV.SHELL L.ENV.HOME .DA ENV.HOME L.FMT.DATE .DA FMT.DATE L.FMT.TIME .DA FMT.TIME @@ -173,12 +171,6 @@ CS.RUN jsr CMD.Init lda (pPS),y beq .1 no arg, continue starting interactive - >PUSHW L.ENV.SHELL - lda #0 - >SYSCALL ArgV - >SYSCALL setenv - bcs CS.INIT.RTS - lda #1 >SYSCALL ArgV @@ -566,13 +558,11 @@ MSG.PID .AZ "PID=%d\r\n" FMT.DATE .AZ "%A (%w), %B %d %Y" FMT.TIME .AZ "%H:%M:%S (%I:%M:%S%p)" *-------------------------------------- -SHELL .AZ "${ROOT}SBIN/SHELL" ENV.ROOT .AZ "ROOT" ENV.PATH .AZ "PATH" ENV.PWD .AZ "PWD" ENV.PS1 .AZ "PS1" ENV.HOME .AZ "HOME" -ENV.SHELL .AZ "SHELL" *-------------------------------------- * https://www.tldp.org/LDP/abs/html/io-redirection.html *-------------------------------------- diff --git a/BIN/TELNET.S.txt b/BIN/TELNET.S.txt index 039391fb..9550ed2a 100644 --- a/BIN/TELNET.S.txt +++ b/BIN/TELNET.S.txt @@ -73,7 +73,7 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ? CS.RUN.IPOK ldy #S.PS.ARGC lda (pPs),y - cmp #2 + cmp #1 bcc .9 ldy #S.IPCFG.IP+3 diff --git a/SBIN/GETTY.S.txt b/SBIN/GETTY.S.txt index 9598de48..862055b1 100644 --- a/SBIN/GETTY.S.txt +++ b/SBIN/GETTY.S.txt @@ -47,7 +47,7 @@ CS.INIT clc *-------------------------------------- CS.RUN ldy #S.PS.ARGC lda (pPs),y - cmp #3 + cmp #2 bcc .9 diff --git a/SBIN/INSDRV.S.txt b/SBIN/INSDRV.S.txt index 82720fe2..c9eaf4de 100644 --- a/SBIN/INSDRV.S.txt +++ b/SBIN/INSDRV.S.txt @@ -38,7 +38,7 @@ L.MSG.LOAD .DA MSG.LOAD *-------------------------------------- CS.RUN ldy #S.PS.ARGC lda (pPs),y - cmp #2 + cmp #1 bcc .9 lda #1 get PTR to ARG[1] (Driver name) diff --git a/SBIN/LOGIN.S.txt b/SBIN/LOGIN.S.txt index e55037a5..f6efcb54 100644 --- a/SBIN/LOGIN.S.txt +++ b/SBIN/LOGIN.S.txt @@ -35,7 +35,10 @@ CS.START cld .DA CS.QUIT L.MSG.LOGIN .DA MSG.LOGIN L.MSG.PASSWORD .DA MSG.PASSWORD +L.ENV.SHELL .DA ENV.SHELL L.SHELL .DA SHELL +L.ENV.HOME .DA ENV.HOME +L.HOME .DA HOME .DA 0 *-------------------------------------- CS.INIT clc @@ -92,11 +95,27 @@ CS.RUN lda #0 >SYSCALL PutChar bcs .9 + jsr CS.RUN.SETENV + bcs .9 >PUSHBI S.PS.F.HOLD >LDYA L.SHELL >SYSCALL ExecL rts *-------------------------------------- +CS.RUN.SETENV >PUSHW L.ENV.HOME + >LDYA L.HOME + >SYSCALL setenv + bcs .9 + + >PUSHW L.ENV.SHELL + >LDYA L.SHELL + >SYSCALL setenv + bcs .9 + + + +.9 rts +*-------------------------------------- CS.DOEVENT sec rts @@ -184,7 +203,10 @@ INPUT.LINEIN ldy #INPUT.Status CS.END MSG.LOGIN .AZ "\r\nlogin:" MSG.PASSWORD .AZ "\r\npassword:" +ENV.SHELL .AZ "SHELL" +ENV.HOME .AZ "HOME" SHELL .AZ "${ROOT}SBIN/SHELL" +HOME .AZ "${ROOT}ROOT" .HS 00 *-------------------------------------- .DUMMY diff --git a/SYS/KERNEL.S.DEF.txt b/SYS/KERNEL.S.DEF.txt new file mode 100644 index 00000000..a4f99467 --- /dev/null +++ b/SYS/KERNEL.S.DEF.txt @@ -0,0 +1,171 @@ +NEW +PREFIX +AUTO 4,1 +*-------------------------------------- +ZPKERNEL .EQ $0 +ZPMEMMGR .EQ $10 +*-------------------------------------- +ZPPtr1 .EQ ZPKERNEL +ZPPtr2 .EQ ZPKERNEL+2 +ZPPtr3 .EQ ZPKERNEL+4 +ZPPtr4 .EQ ZPKERNEL+6 + +pFD .EQ ZPKERNEL+10 +pDRV .EQ ZPKERNEL+12 +pIOCTL .EQ ZPKERNEL+12 +pIOBuf .EQ ZPKERNEL+14 +*-------------------------------------- +SYS.BASL0 .EQ $800 +*-------------------------------------- +* AuxMove / XFer +*-------------------------------------- +A1L .EQ $3C +A2L .EQ $3E +A4L .EQ $42 + +XFer.JMP .EQ $3ED + +AuxMove .EQ $C311 +XFer .EQ $C314 CS:M->X, VS:Use Aux ZP +*-------------------------------------- +* $42-$47 ProDOS Block Device Drivers Main +*-------------------------------------- +DRV.BLK.Cmd .EQ $42 +DRV.BLK.UnitNum .EQ $43 +DRV.BLK.Buf .EQ $44 +DRV.BLK.BlkNum .EQ $47 +*-------------------------------------- +* $5E-$C8 RESERVED APPLESOFT Main/Aux (ROM Call, no need to switch back MainZP) +*-------------------------------------- +SIGNFLG .EQ $16 COS,SIN,TAN +INDEX .EQ $5E ->$5F +FORPNT .EQ $85 ->$86 +FAC .EQ $9D ->$A1 +FAC.SIGN .EQ $A2 +ARG .EQ $A5 -> $A9 (5 bytes) +ARG.SIGN .EQ $AA +*FAC.EXTENSION .EQ $AC +TXTPTR .EQ $B8 +*-------------------------------------- +* ROM Entry Point +*-------------------------------------- +ROM.FSUB .EQ 0 +ROM.FADD .EQ 2 +ROM.LTOF .EQ 4 +ROM.LOG .EQ 6 +ROM.FMULT .EQ 8 +ROM.SETARG .EQ 10 +ROM.FDIV .EQ 12 +ROM.SETFAC .EQ 14 + +ROM.GETFAC .EQ 16 Copy FAC to (FORPNT) +ROM.FCOMP .EQ 18 +ROM.QINT .EQ 20 +ROM.FIN .EQ 22 +ROM.FOUT .EQ 24 +ROM.SQR .EQ 26 +ROM.PWR .EQ 28 +ROM.EXP .EQ 30 + +ROM.COS .EQ 32 +ROM.SIN .EQ 34 +ROM.TAN .EQ 36 +ROM.ATAN .EQ 38 +*-------------------------------------- +* Memory Map +*-------------------------------------- +A2osX.SaveSM .EQ $100 Aux +A2osX.SaveSX .EQ $101 Aux +*-------------------------------------- +* Main $200 -> 2FF : (Used By ProDOS,Clock DRV....) +* Main $300 -> 3EF : +* Main $3F0 -> 3FF : SYS Vectors (reset,IRQ...) +* Aux $200 -> 3FD : /RAM Driver +* Aux $3FE -> 3FF : IRQ Vector +*-------------------------------------- +K.S.STAT .EQ $0300 S.STAT for internal kernel operations +*K.S.DIB .EQ $0340 S.DIB=25 or higher depends on dev type +K.S.IOCTL .EQ $0360 9 bytes +K.MLI.PATH .EQ $0369 64+1 +K.MLI.PARAMS .EQ $03AA Main, 18 bytes min for GetFileInfo (ATLK needs MORE!!!...32 max for now) +*-------------------------------------- +K.STACKTOP .EQ $03ED XFer !!! down to $3E0 +*-------------------------------------- +*** $3F0-$3FF IRQ Handler.... *** +*-------------------------------------- +* Main/Aux $400 -> $7FF : TXT PAGE1 Console Screen +* Main/Aux $800 -> $BFF : TXT PAGE2 System Screen +*-------------------------------------- +* free $0C00->$17FF = $C00 (3072) Aux +*-------------------------------------- +Dev.Table.hPath .EQ $0C00 K.Dev.MAX +Dev.Table.hFD .EQ $0C20 K.Dev.MAX +*-------------------------------------- +Nod.Table.hPath .EQ $0C40 K.NOD.MAX +Nod.Table.hFD .EQ $0C60 K.NOD.MAX +*-------------------------------------- +PS.Table.PID .EQ $0C80 K.PS.MAX +PS.Table.hPS .EQ $0CA0 K.PS.MAX +PS.Table.Hits .EQ $0CC0 K.PS.MAX +PS.Table.Stats .EQ $0CE0 K.PS.MAX +*-------------------------------------- +OF.Table.hPath .EQ $0D00 K.OF.MAX +OF.Table.hFD .EQ $0D20 K.OF.MAX +*-------------------------------------- +Evt.Table .EQ $0D60 K.EVT.MAX*S.EVT.SIZE=4*8=32b +*-------------------------------------- +Flt.Table .EQ $0D80 K.FLT.MAX*S.FLT.SIZE=4*32=128b +*-------------------------------------- +K.Buf256 .EQ $0E00 +*-------------------------------------- +K.IOBuf .EQ $0F00 +*-------------------------------------- +*** Z80 Reserved $1000-10FF*** +*-------------------------------------- +Z80CODE .EQ $1000 (00000h) Up To $10FF +Z80STACK .EQ $10FF (000FFh) Down to $1000 +*-------------------------------------- +* CORE $1100->$17FF = $700 Main +*-------------------------------------- +* MemMgr : $1800->$1FFF MAIN/AUX (2 kBytes) +*-------------------------------------- +Mem.Table .EQ $1800 Slot 0 is Reserved +Mem.LoMem .EQ $1800 +Mem.Free .EQ $1802 +Mem.HiMem .EQ $1804 +Mem.LastSlot .EQ $1806 +*-------------------------------------- +Mem.MLoMem .EQ $2000 +Mem.MHiMem .EQ $BD00 +Mem.XLoMem .EQ $2000 +Mem.XHiMem .EQ $C000 +*-------------------------------------- +DevMgr.HiMem .EQ $FFFA Protect IRQ vectors in Aux LC +*-------------------------------------- +H.BIN.T .EQ 0 +H.BIN.T.DRV65 .EQ $4CD8 6502:cld,jmp abs +H.BIN.T.LIB65 .EQ $7CD8 6502:cld,jmp (abs,x) +H.BIN.T.BIN65 .EQ $7CD8 6502:cld,jmp (abs,x) +*H.BIN.T.LIB80 .EQ $A28D Z80: +*H.BIN.T.BIN80 .EQ $A28D Z80: +H.BIN.JMP .EQ 2 +H.BIN.CPU .EQ 4 +H.BIN.CPU.6502 .EQ $60 +H.BIN.CPU.65C02 .EQ $61 +H.BIN.CPU.65R02 .EQ $62 +H.BIN.CPU.65816 .EQ $63 +H.BIN.V .EQ 5 +H.BIN.F .EQ 6 +H.BIN.CS.SIZE .EQ 8 +H.BIN.DS.SIZE .EQ 10 +H.BIN.SS.SIZE .EQ 12 +H.BIN.ZP.SIZE .EQ 13 +* +H.BIN.EXE.REL.TABLE .EQ 16 +* +H.BIN.DRV.REL.TABLE .EQ 2 Including main jmp +*-------------------------------------- +MAN +SAVE INC/KERNEL.I +LOAD USR/SRC/SYS/KERNEL.S +ASM diff --git a/SYS/KERNEL.S.INIT.txt b/SYS/KERNEL.S.INIT.txt index c81a8be4..82392970 100644 --- a/SYS/KERNEL.S.INIT.txt +++ b/SYS/KERNEL.S.INIT.txt @@ -138,11 +138,11 @@ Kernel.Init3 sta SETALTZP >LDYAI MSG.Prefix >SYSCALL printf -* lda KBD -* bpl .1 -* sta KBDSTROBE -* cmp #$84 CTRL-D for Maintenace mode -* bne .1 + lda KBD + bpl .1 + sta KBDSTROBE + cmp #$84 CTRL-D for Maintenace mode + bne .1 >PUSHBI 0 >LDYAI MSG.CTRLD diff --git a/SYS/KERNEL.S.MEM.txt b/SYS/KERNEL.S.MEM.txt index cfc3c709..1838cbaf 100644 --- a/SYS/KERNEL.S.MEM.txt +++ b/SYS/KERNEL.S.MEM.txt @@ -741,6 +741,43 @@ MEM.PutCharPtr2 sta (ZPPtr2) bne .8 inc ZPPtr2+1 .8 rts +*/-------------------------------------- +* # GetPSStat +* **In:** +* Y,A = Ptr to K.PS.MAX*2+1 bytes buffer +* ## RETURN VALUE +* Buffer filled with PS stats +*\-------------------------------------- +K.GetPSStat >STYA ZPPtr1 + + ldx #0 + + ldy #1 + lda CORE.InKernelStats + sta (ZPPtr1),y + + iny + +.1 lda PS.Table.PID,x + beq .2 + + lda PS.Table.hPS,x + sta (ZPPtr1),y + iny + + lda PS.Table.Stats,x + sta (ZPPtr1),y + iny + +.2 inx + cpx #K.PS.MAX + bne .1 + +.9 tya + lsr + dec + sta (ZPPtr1) + rts *-------------------------------------- * 6502/65C02/65816 OPCODES * Bit 3 : 1 = absolute addressing diff --git a/SYS/KERNEL.S.PS.txt b/SYS/KERNEL.S.PS.txt index 82dd024b..b50fe187 100644 --- a/SYS/KERNEL.S.PS.txt +++ b/SYS/KERNEL.S.PS.txt @@ -59,14 +59,11 @@ K.ExecV >STYA PS.ArgV PS.Exec stz PS.Load.hBIN - jsr PS.CreateChild Child S.PS at ZPPtr3 + jsr PS.CreateChild Child S.PS at ZPPtr3,PS.Load.hMem bcs .9 - sta .8+1 - jsr PS.Load bcs .90 - jsr PS.AddArgV bcc .8 @@ -82,7 +79,7 @@ PS.Exec stz PS.Load.hBIN sec rts -.8 lda #$ff self modified +.8 lda PS.Load.hMem .9 rts *-------------------------------------- * PS.CreateChild @@ -131,6 +128,7 @@ PS.CreateChild ldx CORE.PSCount bcs .99 >STYA ZPPtr3 + stx PS.Load.hMem txa plx sta PS.Table.hPS,x @@ -217,17 +215,17 @@ PS.Load >PUSHWI K.S.STAT cmp #S.FI.T.BIN beq PS.LoadBIN cmp #S.FI.T.TXT - beq .10 - cmp #S.FI.T.SYS bne .98 - - bra * + +* beq .10 +* cmp #S.FI.T.SYS +* bra * .10 jsr PS.LoadGetHeader bcs .99 >LDYAI PS.Load.ROOT - jsr K.GetEnv + jsr K.GetEnv ZPPtr3 Trashed bcs .97 >STYA .21+1 @@ -235,8 +233,8 @@ PS.Load >PUSHWI K.S.STAT ldx #$ff .2 inx -.21 lda $ffff,x - sta K.Buf256,x +.21 lda $ffff,x SELF MODIFIED + sta K.IOBuf,x bne .2 ldy #0 @@ -251,10 +249,19 @@ PS.Load >PUSHWI K.S.STAT .4 iny inx lda K.IOBuf+128-1,y - sta K.Buf256-1,x + sta K.IOBuf-1,x bne .4 - >LDYAI K.Buf256 + >PUSHWI K.S.STAT + >LDYAI K.IOBuf + >SYSCALL stat BANK 1 + bcs .99 + + lda PS.Load.hMem Restore ZPPtr3 trashed by GetEnv + jsr K.GetMemPtr + >STYA ZPPtr3 + + >LDYAI K.IOBuf >SYSCALL NewStr bcs .99 stx PS.Load.hBIN @@ -271,7 +278,7 @@ PS.LoadBIN >LDYA PS.ArgV PS.LoadBIN.YA jsr BIN.Load bcs .9 >STYA ZPPtr4 save PTR to Code Segment - + phy ldy #S.PS.ZP.CODE+1 sta (ZPPtr3),y save pCode HI... @@ -364,7 +371,7 @@ PS.LoadGetHeader >PUSHBI O.RDONLY >LDYA PS.ArgV >SYSCALL fopen - bcs .99 + bcs PS.LoadGetHeader.RTS sta .1+1 >PUSHWI 128 @@ -378,12 +385,14 @@ PS.LoadGetHeader >SYSCALL fclose pla plp -.99 rts +PS.LoadGetHeader.RTS + rts *-------------------------------------- PS.Load.ROOT .AZ "ROOT" PS.Load.HEADER .AZ "#!/" PS.Load.hBIN .BS 1 PS.Load.ArgSize .BS 2 +PS.Load.hMem .BS 1 *-------------------------------------- * hBIN + PS.ArgV -> #S.PS.hARGV *-------------------------------------- @@ -394,19 +403,25 @@ PS.AddArgV stz PS.Load.ArgSize beq .10 jsr K.GetMemPtr + jsr K.strlen + iny +1 for \0 >STYA PS.Load.ArgSize + ldx #0 ARGC-1 + .HS 2C +.10 ldx #$ff ARGC-1 >LDYA PS.ArgV >STYA ZPPtr1 - >STYA ZPPtr2 -.1 lda (ZPPtr2) +.1 lda (ZPPtr1) beq .4 + inx + ldy #0 .2 iny - lda (ZPPtr2),y + lda (ZPPtr1),y bne .2 tya @@ -417,84 +432,46 @@ PS.AddArgV stz PS.Load.ArgSize inc PS.Load.ArgSize+1 -.3 tya - sec - adc ZPPtr2 - sta ZPPtr2 - bcc .1 - inc ZPPtr2+1 +.3 jsr PS.AddYp1ToPtr1 bra .1 -.4 >LDYA PS.Load.ArgSize +.4 txa + ldy #S.PS.ARGC + sta (ZPPtr3),y + + >LDYA PS.Load.ArgSize Add 1 for ending 0 iny bne .5 inc - jsr K.GetMem - bcs .9 +.5 jsr K.GetMem + bcs PS.LoadGetHeader.RTS - - - - - bcs .9 + >STYA ZPPtr2 Target Buffer + txa ldy #S.PS.hARGV sta (ZPPtr3),y - dey S.PS.ARGC - txa - dec don't include $0 - sta (ZPPtr3),y + lda PS.Load.hBIN + beq .6 -* clc + jsr K.GetMemPtr + >STYA ZPPtr1 + jsr PS.AddPtr1ToStrV + +.6 >LDYA PS.ArgV + >STYA ZPPtr1 + +.7 lda (ZPPtr1) + sta (ZPPtr2) + beq .8 Ending \0 + + jsr PS.AddPtr1ToStrV + bra .7 + +.8 clc .9 rts *-------------------------------------- -* PS.DupArgs -* In: -* Y,A = Ptr To Args[] -* Out: -* A = hMem -* X = Count -*-------------------------------------- -PS.DupArgs >STYA ZPPtr1 - - >STYA ZPPtr2 - - lda #1 - sta .7+1 - lda #0 - sta .8+1 len = 1 for array ending 0 - -.1 lda (ZPPtr2) - beq .7 - - ldy #0 - -.2 iny - lda (ZPPtr2),y - bne .2 - - tya - sec - adc .7+1 - sta .7+1 - bcc .3 - - inc .8+1 - -.3 tya - sec - adc ZPPtr2 - sta ZPPtr2 - bcc .1 - inc ZPPtr2+1 - bra .1 - -.7 ldy #$ff SELF MODIFIED -.8 lda #$ff SELF MODIFIED - - bra PS.DupStrV -*-------------------------------------- * PS.DupEnv * In: * A = ENV hMem To Duplicate @@ -507,22 +484,27 @@ PS.DupEnv jsr K.GetMemPtr >LDYAI K.ENV.SIZE -PS.DupStrV jsr K.GetMem + jsr K.GetMem bcs .9 - >STYA ZPPtr2 + >STYA ZPPtr2 Target Buffer phx save hMem jsr PS.SetMemOwner Set Ownership - ldx #0 Count - .1 lda (ZPPtr1) sta (ZPPtr2) beq .8 Ending \0 - inx + jsr PS.AddPtr1ToStrV + bra .1 +.8 pla hMem + + clc +.9 rts +*-------------------------------------- +PS.AddPtr1ToStrV ldy #0 .2 iny @@ -530,26 +512,26 @@ PS.DupStrV jsr K.GetMem sta (ZPPtr2),y bne .2 + jsr PS.AddYp1ToPtr1 + tya - sec - adc ZPPtr1 - sta ZPPtr1 - bcc .3 - - inc ZPPtr1+1 - -.3 tya sec adc ZPPtr2 sta ZPPtr2 - bcc .1 + bcc .8 inc ZPPtr2+1 - bra .1 + +.8 rts +*-------------------------------------- +PS.AddYp1ToPtr1 tya + sec + adc ZPPtr1 + sta ZPPtr1 + bcc .8 -.8 pla hMem + inc ZPPtr1+1 - clc -.9 rts +.8 rts *-------------------------------------- PS.SetMemOwner lda CORE.LastPSID ldy #S.MEM.OWNERPID @@ -567,43 +549,6 @@ K.GetPSStatus jsr CORE.GetPSByID >STYA ZPPtr1 lda (ZPPtr1) .9 rts -*/-------------------------------------- -* # GetPSStat -* **In:** -* Y,A = Ptr to K.PS.MAX*2+1 bytes buffer -* ## RETURN VALUE -* Buffer filled with PS stats -*\-------------------------------------- -K.GetPSStat >STYA ZPPtr1 - - ldx #0 - - ldy #1 - lda CORE.InKernelStats - sta (ZPPtr1),y - - iny - -.1 lda PS.Table.PID,x - beq .2 - - lda PS.Table.hPS,x - sta (ZPPtr1),y - iny - - lda PS.Table.Stats,x - sta (ZPPtr1),y - iny - -.2 inx - cpx #K.PS.MAX - bne .1 - -.9 tya - lsr - dec - sta (ZPPtr1) - rts *-------------------------------------- MAN SAVE USR/SRC/SYS/KERNEL.S.PS diff --git a/SYS/KERNEL.S.txt b/SYS/KERNEL.S.txt index 2e823fa6..cff4a26d 100644 --- a/SYS/KERNEL.S.txt +++ b/SYS/KERNEL.S.txt @@ -46,7 +46,6 @@ A2osX.D2 .PH $D000 .INB USR/SRC/SYS/KERNEL.S.PS .INB USR/SRC/SYS/KERNEL.S.ARG .INB USR/SRC/SYS/KERNEL.S.ENV - .INB USR/SRC/SYS/KERNEL.S.MATH .EP A2osX.E0 .PH $E000 .INB USR/SRC/SYS/KERNEL.S.JMP @@ -55,6 +54,8 @@ A2osX.E0 .PH $E000 ********* TMP ***** go to A2osX.D1 .INB USR/SRC/SYS/KERNEL.S.FIO .INB USR/SRC/SYS/KERNEL.S.IO +********* TMP ***** go to A2osX.D2 + .INB USR/SRC/SYS/KERNEL.S.MATH .LIST ON DevMgr.FreeMem .EQ * .LIST OFF