diff --git a/.Docs/KERNEL.md b/.Docs/KERNEL.md index 1f014108..ae4c36ed 100644 --- a/.Docs/KERNEL.md +++ b/.Docs/KERNEL.md @@ -615,6 +615,14 @@ A=hSList none. (X,Y unmodified) +# GetStkObjPtr + +## ASM +`lda hStkObj` +`>SYSCALL GetStkObjPtr` + +## RETURN VALUE + # LoadStkObj Load a file in AUX memory (Stock Objects) PUSHW = AUXTYPE (Handled by.... @@ -626,15 +634,12 @@ Load a file in AUX memory (Stock Objects) Y,A = File Length X = hMem of Loaded Object in AUX mem -# GetStkObjData - -## ASM -`PUSHW DataLen` -`PUSHW DataPtr` -`lda hStkObj` -`>SYSCALL GetStkObjData` +# GetMemStat +**In:** + Y,A = Ptr to 24 bytes buffer ## RETURN VALUE + Buffer filled with memory stats # ExecL @@ -710,13 +715,6 @@ A = Child PSID ## RETURN VALUE -# GetMemStat -**In:** - Y,A = Ptr to 24 bytes buffer - -## RETURN VALUE - Buffer filled with memory stats - # Stat Return information about a file diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index a3dc2f76..af46bf92 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index e9a3624a..458c49ef 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -295,9 +295,9 @@ SYS.GetMemPtr .EQ $E4 SYS.FreeMem .EQ $E6 SYS.NewStkObj .EQ $E8 -SYS.FreeStkObj .EQ $EA -SYS.LoadStkObj .EQ $EC -SYS.GetStkObjData .EQ $EE +SYS.LoadStkObj .EQ $EA +SYS.GetStkObjPtr .EQ $EC +SYS.FreeStkObj .EQ $EE SYS.SListGetData .EQ $F0 SYS.SListAddData .EQ $F2 diff --git a/LIB/LIBTCPIP.S.SKT.txt b/LIB/LIBTCPIP.S.SKT.txt index ad004bcd..a33dba4f 100644 --- a/LIB/LIBTCPIP.S.SKT.txt +++ b/LIB/LIBTCPIP.S.SKT.txt @@ -431,7 +431,13 @@ SKT.GetDataFromSktIn ldy #S.SOCKET.SQ.hInMem lda (ZPPtrSKT),y + + .DO AUXPIPE=1 + >SYSCALL2 GetStkObjPtr + .ELSE >SYSCALL2 GetMemPtr + .FIN + sty ZPTmpPtr1 * clc @@ -445,7 +451,11 @@ SKT.GetDataFromSktIn lda ZPDataInLen+1 eor #$FF pha - + + .DO AUXPIPE=1 + jsr SKT.SetupZPCode + .FIN + ldy SKT.Cache+S.SOCKET.TCP.INTAIL .1 inx Check if room left in dest buffer @@ -456,7 +466,12 @@ SKT.GetDataFromSktIn pha -.2 lda (ZPTmpPtr1),y +.2 .DO AUXPIPE=1 + jsr ZPCode + .ELSE + lda (ZPTmpPtr1),y + .FIN + sta (ZPDataInPtr) inc ZPDataInPtr bne .3 @@ -510,7 +525,13 @@ SKT.AddDataToSktIn ldy #S.SOCKET.SQ.hInMem lda (ZPPtrSKT),y + + .DO AUXPIPE=1 + >SYSCALL2 GetStkObjPtr + .ELSE >SYSCALL2 GetMemPtr + .FIN + sty ZPTmpPtr1 * clc @@ -618,7 +639,13 @@ SKT.Write jsr SKT.PullhFDDataInPtrLen SKT.AddDataToSktOut ldy #S.SOCKET.SQ.hOutMem lda (ZPPtrSKT),y + + .DO AUXPIPE=1 + >SYSCALL2 GetStkObjPtr + .ELSE >SYSCALL2 GetMemPtr + .FIN + sty ZPTmpPtr1 * clc @@ -700,7 +727,12 @@ SKT.GetDataFromSktOut ldy #S.SOCKET.SQ.hOutMem lda (ZPPtrSKT),y + .DO AUXPIPE=1 + >SYSCALL2 GetStkObjPtr + .ELSE >SYSCALL2 GetMemPtr + .FIN + sty ZPTmpPtr1 * clc @@ -715,6 +747,10 @@ SKT.GetDataFromSktOut eor #$FF pha + .DO AUXPIPE=1 + jsr SKT.SetupZPCode + .FIN + ldy SKT.Cache+S.SOCKET.TCP.OUTTAILSENT .1 inx @@ -725,7 +761,11 @@ SKT.GetDataFromSktOut pha -.2 lda (ZPTmpPtr1),y +.2 .DO AUXPIPE=1 + jsr ZPCode + .ELSE + lda (ZPTmpPtr1),y + .FIN sta (ZPDataOutPtr) inc ZPDataOutPtr bne .3 @@ -1321,6 +1361,16 @@ SKT.CopyDataInToOut pla sta ZPDataInPtr+1 rts +*-------------------------------------- + .DO AUXPIPE=1 +SKT.SetupZPCode ldy #ZP.CODE.Len-1 + +.1 lda ZP.CODE,y + sta ZPCode,y + dey + bpl .1 + rts + .FIN *-------------------------------------- MAN SAVE USR/SRC/LIB/LIBTCPIP.S.SKT diff --git a/LIB/LIBTCPIP.S.txt b/LIB/LIBTCPIP.S.txt index 972d6751..23818513 100644 --- a/LIB/LIBTCPIP.S.txt +++ b/LIB/LIBTCPIP.S.txt @@ -29,8 +29,11 @@ IPDEBUG .EQ 0 .EM *-------------------------------------- .INB INC/MACROS.I + .DO AUXPIPE=1 + .INB INC/IO.I + .FIN .INB INC/A2OSX.I - .INB INC/MLI.I +* .INB INC/MLI.I .INB INC/MLI.E.I .INB INC/NIC.I .INB INC/ETH.I @@ -49,13 +52,15 @@ ZPFrameOutLen .EQ ZPLIB+10 ZPDataOutPtr .EQ ZPLIB+12 ZPDataOutLen .EQ ZPLIB+14 -ZPPtrIP .EQ ZPLIB+16 -ZPPtrMAC .EQ ZPLIB+18 -ZPPtrDNS .EQ ZPLIB+20 -ZPPtrSKT .EQ ZPLIB+22 +ZPTmpPtr1 .EQ ZPLIB+16 +ZPPtrSKT .EQ ZPLIB+18 -ZPCachePtr .EQ ZPLIB+24 -ZPTmpPtr1 .EQ ZPLIB+26 +ZPCode .EQ ZPLIB+20 12 bytes + +ZPPtrIP .EQ ZPLIB+20 +ZPPtrMAC .EQ ZPLIB+22 +ZPPtrDNS .EQ ZPLIB+24 +ZPCachePtr .EQ ZPLIB+26 IP.CHECKSUM .EQ ZPLIB+28 IP.CHECKSUM.TMP .EQ ZPLIB+30 @@ -357,6 +362,14 @@ SKT.Dump ldy #S.SOCKET.REM.PORT+1 .INB USR/SRC/LIB/LIBTCPIP.S.TCP *-------------------------------------- CS.END +*-------------------------------------- + .DO AUXPIPE=1 +ZP.CODE sta SETREADAUX + lda (ZPTmpPtr1),y + sta CLRREADAUX + rts +ZP.CODE.Len .EQ *-ZP.CODE + .FIN *-------------------------------------- SA.LOCAL .DA #AF.INET S.SOCKADDR.AF .BS 1 diff --git a/SYS/KERNEL.S.FIFO.txt b/SYS/KERNEL.S.FIFO.txt deleted file mode 100644 index 0a950212..00000000 --- a/SYS/KERNEL.S.FIFO.txt +++ /dev/null @@ -1,72 +0,0 @@ -NEW -PREFIX -AUTO 4,1 -*/-------------------------------------- -* # NewFIFO -* ## C -* `int getpwuid(short int uid, S.PW* passwd );` -* ## ASM -* `>PUSHW passwd` -* `>LDYA size` -* `>SYSCALL getpwuid` -* ## RETURN VALUE -* A = hFIFO -*\-------------------------------------- -FIFO.New -*/-------------------------------------- -* # GetPWName -* ## C -* `int getpwname(const char* name, S.PW* passwd );` -* ## ASM -* `>PUSHW passwd` -* `>LDYA name` -* `>SYSCALL getpwname` -* ## RETURN VALUE -*\-------------------------------------- -FIFO.Free -*/-------------------------------------- -* # PutPW -* ## C -* `int putpw( S.PW* passwd );` -* ## ASM -* `>LDYA passwd` -* `>SYSCALL putpw` -* ## RETURN VALUE - -*\-------------------------------------- -FIFO.Get -*/-------------------------------------- -* # PutPW -* ## C -* `int putpw( S.PW* passwd );` -* ## ASM -* `>LDYA passwd` -* `>SYSCALL putpw` -* ## RETURN VALUE -*\-------------------------------------- -FIFO.Put -*/-------------------------------------- -* # PutPW -* ## C -* `int putpw( S.PW* passwd );` -* ## ASM -* `>LDYA passwd` -* `>SYSCALL putpw` -* ## RETURN VALUE -*\-------------------------------------- -FIFO.GetUsed -*/-------------------------------------- -* # PutPW -* ## C -* `int putpw( S.PW* passwd );` -* ## ASM -* `>LDYA passwd` -* `>SYSCALL putpw` -* ## RETURN VALUE -*\-------------------------------------- -FIFO.GetFree -*-------------------------------------- -MAN -SAVE USR/SRC/SYS/KERNEL.S.FIFO -LOAD USR/SRC/SYS/KERNEL.S -ASM diff --git a/SYS/KERNEL.S.IO.txt b/SYS/KERNEL.S.IO.txt index bdbd87d8..2520d5cd 100644 --- a/SYS/KERNEL.S.IO.txt +++ b/SYS/KERNEL.S.IO.txt @@ -288,7 +288,8 @@ IO.CLOSE.PIPE ldy #S.FD.PIPE.S beq .2 .DO AUXPIPE=1 - jsr K.FreeStkObj + ldx #SYS.FreeStkObj + jsr K.SYSCALL2.AUX .ELSE jsr K.FreeMem .FIN @@ -503,12 +504,12 @@ IO.READ.PIPE ldy #S.FD.PIPE.Used+1 ldy #S.FD.PIPE.hMem lda (pFD),y + .DO AUXPIPE=1 - sta SETREADAUX - .FIN + ldx #SYS.GetStkObjPtr + jsr K.SYSCALL2.AUX + .ELSE jsr K.GetMemPtr - .DO AUXPIPE=1 - sta CLRREADAUX .FIN sty .2+1 @@ -648,11 +649,10 @@ IO.WRITE.PIPE ldy #S.FD.PIPE.S lda (pFD),y .DO AUXPIPE=1 - sta SETREADAUX - .FIN + ldx #SYS.GetStkObjPtr + jsr K.SYSCALL2.AUX + .ELSE jsr K.GetMemPtr get src buf - .DO AUXPIPE=1 - sta CLRREADAUX .FIN sty .3+1 diff --git a/SYS/KERNEL.S.JMP.txt b/SYS/KERNEL.S.JMP.txt index 2eb17f6b..a060a48e 100644 --- a/SYS/KERNEL.S.JMP.txt +++ b/SYS/KERNEL.S.JMP.txt @@ -140,10 +140,10 @@ K.SYSCALL .DA K.GetMemStat $00 .DA K.GetMemPtr .DA K.FreeMem - .DA K.NewStkObj - .DA K.FreeStkObj + .DA K.GetMem K.NewStkObj .DA K.LoadStkObj - .DA K.GetStkObjData + .DA K.GetMemPtr K.GetStkObjPtr + .DA K.FreeMem K.FreeStkObj *-------------------------------------- .DA K.SListGetData $F0 .DA K.SListAddData @@ -398,26 +398,50 @@ K.SYSCALL.BANK .DA #RRAMWRAMBNK1 $00 .DA #RRAMWRAMBNK2 .DA #$80 *-------------------------------------- - .DA 0 $E0 : MemMgr at $E000 - .DA 0 - .DA 0 - .DA 0 - .DA 0 - .DA 0 - .DA 0 - .DA 0 + .DA #0 $E0 : MemMgr at $E000 + .DA #$80 + .DA #0 + .DA #$80 + .DA #0 + .DA #$80 + .DA #0 + .DA #$80 + .DA #$40 NewStkObj + .DA #$80 + .DA #0 + .DA #$80 + .DA #$40 GetStkObjPtr + .DA #$80 + .DA #$40 FreeStkObj + .DA #$80 *-------------------------------------- - .DA 0 $F0 - .DA 0 - .DA 0 - .DA 0 - .DA 0 - .DA 0 - .DA 0 - .DA 0 + .DA #0 $F0 : SLIST + .DA #$80 + .DA #0 + .DA #$80 + .DA #0 + .DA #$80 + .DA #0 + .DA #$80 + .DA #0 + .DA #$80 + .DA #0 + .DA #$80 + .DA #0 + .DA #$80 + .DA #0 + .DA #$80 *-------------------------------------- K.SYSCALL2 bit K.SYSCALL.BANK,x Get Target BNK bpl K.SYSCALL.JMP 0, E000, no BNK change + bvc K.SYSCALL2.BANK + +K.SYSCALL2.AUX sta SETREADAUX AUX Mem API + sta SETWRITEAUX + jsr K.SYSCALL.JMP + sta CLRREADAUX + sta CLRWRITEAUX + rts K.SYSCALL2.BANK sta .7+1 lda $D000 #RRAMWRAMBNK1 or #RRAMWRAMBNK2 diff --git a/SYS/KERNEL.S.MEM.txt b/SYS/KERNEL.S.MEM.txt index 3c9c2946..52dcdeaf 100644 --- a/SYS/KERNEL.S.MEM.txt +++ b/SYS/KERNEL.S.MEM.txt @@ -405,7 +405,6 @@ K.SListGetData pha >PULLW ZPMemMgrSize pla bra K.SListFree - pla */-------------------------------------- * # SListAddData * ## ASM @@ -505,25 +504,6 @@ K.SListFree sta SETREADAUX * CS : * A = EC *\-------------------------------------- -K.NewStkObj ldx #SYS.GetMem - .HS 2C BIT ABS -*/-------------------------------------- -* # FreeStkObj -* A = hMem To Free (AUX Memory) -* ## RETURN VALUE -* none. -* (X,Y unmodified) -*\-------------------------------------- -K.FreeStkObj ldx #SYS.FreeMem - - sta SETREADAUX - sta SETWRITEAUX - - jsr K.SYSCALL.JMP - - sta CLRREADAUX - sta CLRWRITEAUX - rts */-------------------------------------- * # LoadStkObj * Load a file in AUX memory (Stock Objects) @@ -548,7 +528,9 @@ K.LoadStkObj ldx #SYS.LoadTxtFile To get ending \0 inc +1 for ending 0 .1 >STYA A2L Save LEN temporarly - jsr K.NewStkObj + ldx #SYS.NewStkObj + jsr K.SYSCALL2.AUX + bcs .9 stx .80+1 >STYA A4L Save Destination Address in AUX @@ -585,29 +567,19 @@ K.LoadStkObj ldx #SYS.LoadTxtFile To get ending \0 sec .99 rts */-------------------------------------- -* # GetStkObjData +* # GetStkObjPtr * ## ASM -* `PUSHW DataLen` -* `PUSHW DataPtr` * `lda hStkObj` -* `>SYSCALL GetStkObjData` +* `>SYSCALL GetStkObjPtr` * ## RETURN VALUE *\-------------------------------------- -K.GetStkObjData sta SETREADAUX - jsr K.GetMemPtr - >STYA ZPMemMgrTmp1 - - >PULLW ZPSListDataLen - >PULLW ZPSListDataPtr - - lda (ZPMemMgrTmp1),y - pha - iny - lda (ZPMemMgrTmp1),y - ply - - sta CLRREADAUX - rts +*/-------------------------------------- +* # FreeStkObj +* A = hMem To Free (AUX Memory) +* ## RETURN VALUE +* none. +* (X,Y unmodified) +*\-------------------------------------- *-------------------------------------- * in Y,A = buf size *-------------------------------------- @@ -721,7 +693,7 @@ MEM.SetDataByte.1 inc ZPSListDataPtr+1 .8 rts *-------------------------------------- -MEM.TXTPTR.GetY sta CLRREADAUX +MEM.TXTPTR.GetY sta SETREADAUX lda (TXTPTR),y sta SETREADAUX rts diff --git a/SYS/KERNEL.S.STAT.txt b/SYS/KERNEL.S.STAT.txt index 0107c0a8..4b06760d 100644 --- a/SYS/KERNEL.S.STAT.txt +++ b/SYS/KERNEL.S.STAT.txt @@ -378,7 +378,8 @@ K.MkNod.I ldx #2 K.Pipe sta .1+1 SIZE HI .DO AUXPIPE=1 - jsr K.NewStkObj Buffer in AUX mem + ldx #SYS.NewStkObj + jsr K.SYSCALL2.AUX Buffer in AUX mem .ELSE jsr K.GetMem .FIN @@ -414,7 +415,8 @@ K.Pipe sta .1+1 SIZE HI .9 pha save error code lda .8+1 get back PIPE buffer .DO AUXPIPE=1 - jsr K.FreeStkObj + ldx #SYS.FreeStkObj + jsr K.SYSCALL2.AUX .ELSE jsr K.FreeMem .FIN