diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index a6ae9a32..5314b6df 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 e9361311..bd5291e4 100644 Binary files a/.Floppies/A2OSX.SRC.po and b/.Floppies/A2OSX.SRC.po differ diff --git a/BIN/PING.S.txt b/BIN/PING.S.txt index 324fb5f7..a978f819 100644 --- a/BIN/PING.S.txt +++ b/BIN/PING.S.txt @@ -182,7 +182,7 @@ CS.RUN.SEND.ECHO >PUSHW L.ICMP.Request >PUSHWI ICMP.RequestLen - >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.Write + >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.Send bcs CS.RUN.ERR jsr Init.Timeout @@ -196,7 +196,7 @@ CS.RUN.WAIT.REPLY .1 ldy #hSocket lda (pData),y - >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.ReadFrame + >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.Rcvd bcs .2 ldy #hFrame diff --git a/BIN/RPCDUMP.S.txt b/BIN/RPCDUMP.S.txt index 274aac3f..578e06cc 100644 --- a/BIN/RPCDUMP.S.txt +++ b/BIN/RPCDUMP.S.txt @@ -121,7 +121,7 @@ CS.RUN jsr Init.Timeout >PUSHB (pData),y >PUSHW L.RPC.Request >PUSHWI RPC.Request.End-RPC.Request - >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.Write + >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.Send bcc .4 >SLEEP @@ -133,7 +133,7 @@ CS.RUN jsr Init.Timeout .5 ldy #hSocket lda (pData),y - >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.ReadFrame + >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.Rcvd bcc .6 >SLEEP diff --git a/BIN/TELNET.S.txt b/BIN/TELNET.S.txt index 3344956e..8de2547a 100644 --- a/BIN/TELNET.S.txt +++ b/BIN/TELNET.S.txt @@ -250,7 +250,7 @@ MSG.SKTOK .AZ "Connected." *-------------------------------------- Socket .DA #S.SOCKET.SOCK.STREAM .BS 1 - .DA #S.IP.PROTOCOL.TCP + .BS 1 .BS 1 Socket.Src.Addr .BS 4 Socket.Src.Port .DA 0 Dynamic diff --git a/INC/LIBTCPIP.I.txt b/INC/LIBTCPIP.I.txt index a4ed8302..24128f43 100644 --- a/INC/LIBTCPIP.I.txt +++ b/INC/LIBTCPIP.I.txt @@ -47,9 +47,10 @@ LIBTCPIP.SKT.Get .EQ 38 LIBTCPIP.SKT.Accept .EQ 40 LIBTCPIP.SKT.MkNod .EQ 42 -LIBTCPIP.SKT.Write .EQ 44 -LIBTCPIP.SKT.Read .EQ 46 -LIBTCPIP.SKT.ReadFrame .EQ 48 +LIBTCPIP.SKT.Read .EQ 44 +LIBTCPIP.SKT.Write .EQ 46 +LIBTCPIP.SKT.Rcvd .EQ 48 +LIBTCPIP.SKT.Send .EQ 50 *-------------------------------------- ERR.SKT.OOS .EQ $BF ERR.SKT.BUSY .EQ $BE diff --git a/LIB/LIBTCPIP.S.DNS.txt b/LIB/LIBTCPIP.S.DNS.txt index 042eb1a7..7caa6b35 100644 --- a/LIB/LIBTCPIP.S.DNS.txt +++ b/LIB/LIBTCPIP.S.DNS.txt @@ -109,7 +109,7 @@ DNS.REQUEST lda hDNSSocket1 >PUSHB hDNSSocket1 >PUSHW L.DNS.MSG >PUSHW DNS.MSG.LEN - jsr SKT.Write + jsr SKT.Send lda hDNSSocket2 beq .3 @@ -117,7 +117,7 @@ DNS.REQUEST lda hDNSSocket1 >PUSHB hDNSSocket2 >PUSHW L.DNS.MSG >PUSHW DNS.MSG.LEN - jsr SKT.Write + jsr SKT.Send .3 lda #ERR.DNS.PENDING .9 sec @@ -360,14 +360,14 @@ DNS.FREE ldy #S.DNSCACHE.hNAME *-------------------------------------- DNS.POLL lda hDNSSocket1 beq .8 - jsr SKT.ReadFrame + jsr SKT.Rcvd bcs .1 jsr DNS.DecodeMsg .1 lda hDNSSocket2 beq .8 - jsr SKT.ReadFrame + jsr SKT.Rcvd bcs .8 jsr DNS.DecodeMsg diff --git a/LIB/LIBTCPIP.S.SKT.txt b/LIB/LIBTCPIP.S.SKT.txt index 83e6be9b..860c5782 100644 --- a/LIB/LIBTCPIP.S.SKT.txt +++ b/LIB/LIBTCPIP.S.SKT.txt @@ -56,7 +56,7 @@ SKT.New >PULLW ZPTmpPtr1 bpl .5 already found an empty slot.... >LDYA ZPTmpPtr2 found one... - >STYA ZPTmpPtr3 save it! + >STYA ZPPtrSKT save it! stx TmpOffset .5 lda ZPTmpPtr2 @@ -75,7 +75,7 @@ SKT.New >PULLW ZPTmpPtr1 ldy #S.SOCKET.HDR-1 .7 lda (ZPTmpPtr1),y - sta (ZPTmpPtr3),y + sta (ZPPtrSKT),y dey bpl .7 @@ -91,8 +91,6 @@ SKT.New >PULLW ZPTmpPtr1 jsr SKT.NewTCB bcs .99 - >LDYA ZPTmpPtr3 - >STYA ZPPtrSKT lda #S.TCP.OPTIONS.SYN jsr TCP.OUT.SendOptA Send SYN,Only for CLIENT conn!!!! bcs .99 @@ -329,233 +327,6 @@ SKT.MkNod sta .1+1 .9 rts */-------------------------------------- -* # SKT.Write (DGRAM,STREAM,RAW) -* Send block of data -* **In:** -* PUSHB = hSocket -* PUSHW = pBuf -* PUSHW = len -* **Out:** -*\-------------------------------------- -SKT.Write >PULLW ZPDataInLen - >PULLW ZPDataInPtr - >PULLA - - jsr SKT.Get.I - bcs .9 - - cmp #S.SOCKET.SOCK.DGRAM - beq SKT.Write.UDP - - cmp #S.SOCKET.SOCK.RAW - beq SKT.Write.RAW - - cmp #S.SOCKET.SOCK.STREAM - bne .99 - - ldy #S.SOCKET.SO - lda (ZPPtrSKT),y - and #S.SOCKET.SO.ACCEPTCONN - bne .99 - jmp SKT.Write.TCP - -.99 lda #ERR.SKT.BAD - sec -.9 rts -*-------------------------------------- -SKT.Write.RAW ldy #S.SOCKET.RAW.PROTO - lda (ZPPtrSKT),y - - tax - >LDYA ZPDataInLen - jsr FRM.NewIP - bcs .9 - - jsr SKT.SetFrameOutDstIP - - jsr SKT.CopyDataInToOut - - jmp FRM.SendIP - -.9 rts -*-------------------------------------- -SKT.Write.UDP ldx #S.IP.PROTOCOL.UDP - >LDYA ZPDataInLen - jsr FRM.NewIP - bcs .9 - - jsr SKT.SetFrameOutDstIP - - ldy #S.SOCKET.SRC.PORT - lda (ZPPtrSKT),y - tax - iny - lda (ZPPtrSKT),y - ldy #S.UDP.SRCPORT - sta (ZPFrameOutPtr),y - iny - txa - sta (ZPFrameOutPtr),y - - ldy #S.SOCKET.DST.PORT - lda (ZPPtrSKT),y - tax - iny - lda (ZPPtrSKT),y - ldy #S.UDP.DSTPORT - sta (ZPFrameOutPtr),y - iny - txa - sta (ZPFrameOutPtr),y - - jsr SKT.CopyDataInToOut - - jmp FRM.SendIP - -.9 rts -*-------------------------------------- -SKT.Write.TCP ldy #S.SOCKET.TCP.STATUS - lda (ZPPtrSKT),y - cmp #S.SOCKET.TCP.STATUS.ESTBLSH - bne .91 - - jsr SKT.AddDataToSktOut will call SKT.GetTCB - bcs .90 - - jsr TCP.OUT.I SKT.GetTCB called, try to push, ignore error.... - clc - rts - -.90 lda #0 no data transfered - sec - rts - -.91 lda #MLI.E.IO - sec -.99 rts -*/-------------------------------------- -* # SKT.ReadFrame (DGRAM,RAW) -* **In:** -* A = hSocket -* **Out:** -* A = hFrame -*\-------------------------------------- -SKT.ReadFrame jsr SKT.Get.I - bcs .9 - - ldy #S.SOCKET.HQ.TAIL - lda (ZPPtrSKT),y - tax - - ldy #S.SOCKET.HQ.HEAD - cmp (ZPPtrSKT),y - beq .99 - - inc - cmp #S.SOCKET.HQ.MAX - bne .1 - lda #0 - -.1 ldy #S.SOCKET.HQ.TAIL - sta (ZPPtrSKT),y - - txa - clc - adc #S.SOCKET.HQ - tay - lda (ZPPtrSKT),y - clc - rts - -.99 sec -.9 rts -*/-------------------------------------- -* # SKT.PutC (STREAM) -* Write a Char To Stream -* **In:** -* PUSHB = hSocket -* PUSHB = Char -* **Out:** -*\-------------------------------------- -SKT.PutC >PULLB TmpByte - - ldx #1 - stx ZPDataInLen - stz ZPDataInLen+1 - - ldx L.TmpByte - stx ZPDataInPtr - - ldx L.TmpByte+1 - stx ZPDataInPtr+1 - bra SKT.PutS.1 -*/-------------------------------------- -* # SKT.PutS (STREAM) -* Write Line in pBuf -* **In:** -* PUSHB = hSocket -* PUSHW = PSTR -* **Out:** -*\-------------------------------------- -SKT.PutS >PULLW ZPDataOutPtr - lda (ZPDataInPtr) - - sta ZPDataInLen - stz ZPDataInLen+1 - - inc ZPDataInPtr - bne SKT.PutS.1 - inc ZPDataInPtr+1 - -SKT.PutS.1 >PULLA - jsr SKT.Get.I - bcs .9 - - cmp #S.SOCKET.SOCK.STREAM - bne .9 - - jmp SKT.Write.TCP - -.9 lda #ERR.SKT.BAD - sec - rts -*/-------------------------------------- -* # SKT.GetC.A (STREAM) -* Read a Char From Stream in A -* **In:** -* A = hSocket -* **Out:** -* A = char -*\-------------------------------------- -SKT.GetC.A stz bTextMode - - ldx #1 - stx ZPDataOutLen - stz ZPDataOutLen+1 - - ldx L.TmpByte - stx ZPDataOutPtr - ldx L.TmpByte+1 - stx ZPDataOutPtr+1 - - jsr SKT.Read.I - bcs .9 - lda TmpByte - -.9 rts -*/-------------------------------------- -* # SKT.GetS (STREAM) -* Read a CR terminated Line in pBuf -* **In:** -* PUSHB = hSocket -* PUSHW = pBuf -* PUSHW = len -* **Out:** -* Y,A = bytes read -*\-------------------------------------- -SKT.GetS sec - .HS 90 bcc -*/-------------------------------------- * # SKT.Read (STREAM) * Read data in pBuf * **In:** @@ -565,9 +336,7 @@ SKT.GetS sec * **Out:** * Y,A = bytes transfered *\-------------------------------------- -SKT.Read clc - ror bTextMode - >PULLW ZPDataOutLen +SKT.Read >PULLW ZPDataOutLen >PULLW ZPDataOutPtr >PULLA @@ -601,6 +370,163 @@ SKT.Read.I jsr SKT.Get.I .92 lda #0 sec .99 rts +*/-------------------------------------- +* # SKT.Write (STREAM) +* Send block of data +* **In:** +* PUSHB = hSocket +* PUSHW = pBuf +* PUSHW = len +* **Out:** +*\-------------------------------------- +SKT.Write >PULLW ZPDataInLen + >PULLW ZPDataInPtr + >PULLA + + jsr SKT.Get.I + bcs .9 + + cmp #S.SOCKET.SOCK.STREAM + bne .99 + + ldy #S.SOCKET.SO + lda (ZPPtrSKT),y + and #S.SOCKET.SO.ACCEPTCONN + bne .99 + + ldy #S.SOCKET.TCP.STATUS + lda (ZPPtrSKT),y + cmp #S.SOCKET.TCP.STATUS.ESTBLSH + bne .91 + + jsr SKT.AddDataToSktOut will call SKT.GetTCB + bcs .90 + + jsr TCP.OUT.I SKT.GetTCB called, try to push, ignore error.... + clc + rts + +.90 lda #0 no data transfered + sec + rts + +.91 lda #MLI.E.IO + sec + rts + +.99 lda #ERR.SKT.BAD + sec +.9 rts +*/-------------------------------------- +* # SKT.Rcvd (DGRAM,RAW) +* **In:** +* A = hSocket +* **Out:** +* A = hFrame +*\-------------------------------------- +SKT.Rcvd jsr SKT.Get.I + bcs .9 + + ldy #S.SOCKET.HQ.TAIL + lda (ZPPtrSKT),y + tax + + ldy #S.SOCKET.HQ.HEAD + cmp (ZPPtrSKT),y + beq .99 + + inc + cmp #S.SOCKET.HQ.MAX + bne .1 + lda #0 + +.1 ldy #S.SOCKET.HQ.TAIL + sta (ZPPtrSKT),y + + txa + clc + adc #S.SOCKET.HQ + tay + lda (ZPPtrSKT),y + clc + rts + +.99 sec +.9 rts +*/-------------------------------------- +* # SKT.Send (DGRAM,RAW) +* **In:** +* A = hSocket +* **Out:** +* A = hFrame +*\-------------------------------------- +SKT.Send >PULLW ZPDataInLen + >PULLW ZPDataInPtr + >PULLA + + jsr SKT.Get.I + bcs .9 + + cmp #S.SOCKET.SOCK.DGRAM + beq SKT.Send.UDP + + cmp #S.SOCKET.SOCK.RAW + beq SKT.Send.RAW + + lda #ERR.SKT.BAD + sec +.9 rts +*-------------------------------------- +SKT.Send.RAW ldy #S.SOCKET.RAW.PROTO + lda (ZPPtrSKT),y + + tax + >LDYA ZPDataInLen + jsr FRM.NewIP + bcs .9 + + jsr SKT.SetFrameOutDstIP + + jsr SKT.CopyDataInToOut + + jmp FRM.SendIP + +.9 rts +*-------------------------------------- +SKT.Send.UDP ldx #S.IP.PROTOCOL.UDP + >LDYA ZPDataInLen + jsr FRM.NewIP + bcs .9 + + jsr SKT.SetFrameOutDstIP + + ldy #S.SOCKET.SRC.PORT + lda (ZPPtrSKT),y + tax + iny + lda (ZPPtrSKT),y + ldy #S.UDP.SRCPORT + sta (ZPFrameOutPtr),y + iny + txa + sta (ZPFrameOutPtr),y + + ldy #S.SOCKET.DST.PORT + lda (ZPPtrSKT),y + tax + iny + lda (ZPPtrSKT),y + ldy #S.UDP.DSTPORT + sta (ZPFrameOutPtr),y + iny + txa + sta (ZPFrameOutPtr),y + + jsr SKT.CopyDataInToOut + + jmp FRM.SendIP + +.9 rts *-------------------------------------- * PRIVATE *-------------------------------------- @@ -754,7 +680,6 @@ SKT.AddDataToSktIn * In: * Src : hInMem/INTAIL * Dst : ZPDataOutPtr/ZPDataOutLen -* bTextMode * Out: * Y,A = bytes read *-------------------------------------- @@ -832,12 +757,6 @@ SKT.GetDataFromSktIn .5 pla get back data.... - bit bTextMode do we need to check CR ? - bpl .6 - - cmp #13 - beq .7 - .6 sta (ZPDataOutPtr),y iny bne .61 @@ -851,10 +770,7 @@ SKT.GetDataFromSktIn .7 pla discard byte counter HI -.8 bit bTextMode here, bacause dst buf full.... - bmi .9 ....and TextMode selected, NO ending CR found - - lda ZPTmpPtr3 Do we have transfered something? +.8 lda ZPTmpPtr3 Do we have transfered something? ora ZPTmpPtr3+1 beq .9 @@ -1138,7 +1054,7 @@ SKT.NewTCB >LDYAI S.TCB txa ldy #S.SOCKET.SQ.hTCB - sta (ZPTmpPtr3),y + sta (ZPPtrSKT),y lda #K.TCP.WSIZE sta SKT.TCBCache+S.TCB.INFREE @@ -1160,7 +1076,7 @@ SKT.NewTCB >LDYAI S.TCB txa ldy #S.SOCKET.SQ.hInMem - sta (ZPTmpPtr3),y + sta (ZPPtrSKT),y >LDYAI K.TCP.WSIZE >SYSCALL getmem @@ -1168,7 +1084,7 @@ SKT.NewTCB >LDYAI S.TCB txa ldy #S.SOCKET.SQ.hOutMem - sta (ZPTmpPtr3),y + sta (ZPPtrSKT),y ldx #S.TCB-1 diff --git a/LIB/LIBTCPIP.S.txt b/LIB/LIBTCPIP.S.txt index b92671b0..727ff2ea 100644 --- a/LIB/LIBTCPIP.S.txt +++ b/LIB/LIBTCPIP.S.txt @@ -79,9 +79,10 @@ CS.START cld .DA SKT.Accept .DA SKT.MkNod - .DA SKT.Write .DA SKT.Read - .DA SKT.ReadFrame + .DA SKT.Write + .DA SKT.Rcvd + .DA SKT.Send *-------------------------------------- L.DEVNAME .DA DEVNAME L.MSG.DEV.KO .DA MSG.DEV.KO diff --git a/SBIN/DHCPCLNT.S.txt b/SBIN/DHCPCLNT.S.txt index 793a5650..9d179cdd 100644 --- a/SBIN/DHCPCLNT.S.txt +++ b/SBIN/DHCPCLNT.S.txt @@ -124,7 +124,7 @@ CS.RUN >PUSHW L.Socket CS.RUN.SDISC >PUSHB.G hSocket >PUSHW L.DHCP.DISC >PUSHWI DHCP.DISC.LEN - >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.Write + >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.Send bcc .1 jmp CS.RUN.KO @@ -161,7 +161,7 @@ CS.RUN.SREQ ldx #3 >PUSHB.G hSocket >PUSHW L.DHCP.REQ >PUSHWI DHCP.REQ.LEN - >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.Write + >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.Send bcs CS.RUN.KO lda #S.IPCFG.STATUS.SREQ @@ -214,7 +214,7 @@ CS.RUN.KO pha rts *-------------------------------------- CS.RUN.SKT.RCVD >LDA.G hSocket - >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.ReadFrame + >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.Rcvd bcs .9 >STA.G hFrame