diff --git a/A2OSX.BOOT.po b/A2OSX.BOOT.po index 66203d8b..86e27842 100644 Binary files a/A2OSX.BOOT.po and b/A2OSX.BOOT.po differ diff --git a/A2OSX.DEV.po b/A2OSX.DEV.po index e3dc08c2..8f16acd4 100644 Binary files a/A2OSX.DEV.po and b/A2OSX.DEV.po differ diff --git a/A2OSX.SRC.po b/A2OSX.SRC.po index 69fc8c01..e7547073 100644 Binary files a/A2OSX.SRC.po and b/A2OSX.SRC.po differ diff --git a/BIN/ARP.S.txt b/BIN/ARP.S.txt index 46480e6d..a0b4c704 100644 --- a/BIN/ARP.S.txt +++ b/BIN/ARP.S.txt @@ -64,6 +64,8 @@ CS.RUN >SYSCALL GetArgC >SYSCALL GetArgA >PUSHYA + >DEBUG + >SYSCALL SSCANF bcc CS.RUN.QUERY @@ -72,7 +74,7 @@ CS.RUN >SYSCALL GetArgC rts *-------------------------------------- CS.RUN.QUERY jsr Init.Timeout - + .1 >PUSHW L.DST.MAC >PUSHW L.DST.IP >LIBCALL hLIBTCPIP,LIBTCPIP.ARP.QUERY diff --git a/BIN/PING.S.txt b/BIN/PING.S.txt index ab8df1c4..84abd4db 100644 --- a/BIN/PING.S.txt +++ b/BIN/PING.S.txt @@ -172,11 +172,11 @@ CS.RUN.SEND.ECHO jsr Init.Timeout - >PUSHWI ICMP.RequestLen - >PUSHW L.ICMP.Request - ldy #hSocket >PUSHB (pData),y + >PUSHW L.ICMP.Request + >PUSHWI ICMP.RequestLen + >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.SEND bcs CS.RUN.ERR @@ -339,7 +339,6 @@ Socket.Src.Addr .BS 4 Socket.Src.Port .DA 0 Dynamic Socket.Dst.Addr .BS 4 Socket.Dst.Port .DA 0 Identifier - .BS S.SOCKET-16 *-------------------------------------- ICMP.Request .DA #S.ICMP.TYPE.ECHOREQ .DA #0 CODE diff --git a/INC/LIBTCPIP.I.txt b/INC/LIBTCPIP.I.txt index c8406040..2b83c030 100644 --- a/INC/LIBTCPIP.I.txt +++ b/INC/LIBTCPIP.I.txt @@ -171,6 +171,8 @@ S.SOCKET.SRC.ADDR .EQ 4 S.SOCKET.SRC.PORT .EQ 8 S.SOCKET.DST.ADDR .EQ 10 S.SOCKET.DST.PORT .EQ 14 +* +S.SOCKET.TEMPLATE .EQ 16 * Listen type Queue * Raw Type Queue * Datagram type Queue @@ -185,8 +187,8 @@ S.SOCKET.SQ.OUTHEAD .EQ 20 S.SOCKET.SQ.OUTTAIL .EQ 22 S.SOCKET.SQ.INFREE .EQ 24 S.SOCKET.SQ.OUTFREE .EQ 26 -* -* +S.SOCKET.SQ.INUSED .EQ 28 +S.SOCKET.SQ.OUTUSED .EQ 30 S.SOCKET.SQ.SEQNUM .EQ 32 S.SOCKET.SQ.ACKNUM .EQ 36 * diff --git a/LIB/LIBTCPIP.S.FRM.txt b/LIB/LIBTCPIP.S.FRM.txt index a74b5e45..8eacbc3b 100644 --- a/LIB/LIBTCPIP.S.FRM.txt +++ b/LIB/LIBTCPIP.S.FRM.txt @@ -5,25 +5,86 @@ INC 1 AUTO 6 .LIST OFF *-------------------------------------- -* #FRM.NewA -* ##In: -* A = S.IP.PROTOCOL.??? -* ##Out: -* Y,A = Frame PTR -* X = hMem +* FRM.New +* In: +* Y,A = DataLen +* X = S.IP.PROTOCOL.xxx +* Out: +* Y,A = Frame PTR +* X = hMem *-------------------------------------- -FRM.NewA sta .2+1 - >PUSHWI K.ETH.FRAME.LEN - >PUSHBI S.MEM.F.INIT0 +FRM.NewIP stx .8+1 + >STYA ZPDataOutLen + cpx #S.IP.PROTOCOL.ICMP + bne .1 + lda #S.IP-2 + bra .4 + +.1 cpx #S.IP.PROTOCOL.UDP + bne .2 + lda #S.UDP-2 + bra .4 + +.2 cpx #S.IP.PROTOCOL.TCP + bne * + + lda #S.TCP-2 + bra .4 + +.4 sta .5+1 save Header len for reset later + clc + adc ZPDataOutLen + sta ZPFrameOutLen + pha + + lda #0 + adc ZPDataOutLen+1 + sta ZPFrameOutLen+1 + tax + + pla + adc #2 + tay + txa + adc #0 + + >PUSHYA + >PUSHBI 0 >SYSCALL GetMem bcs .9 stx hFrameOut >STYA ZPFrameOutPtr + lda ZPFrameOutLen + sta (ZPFrameOutPtr) + ldy #1 + lda ZPFrameOutLen+1 + sta (ZPFrameOutPtr),y + + iny + +.5 ldx #$ff Self Modified, header length + + lda #0 + +.6 sta (ZPFrameOutPtr),y + iny + dex + bne .6 + + tya +* clc + adc ZPFrameOutPtr + sta ZPDataOutPtr + + lda #0 + adc ZPFrameOutPtr+1 + sta ZPDataOutPtr+1 + lda DevFlags and #S.DEVSTAT.NET.FLAGS.IPOFFLOAD - bne .1 + bne .7 ldy #S.ETH.ETHERTYPE lda /S.ETH.ETHERTYPE.IP @@ -39,47 +100,41 @@ FRM.NewA sta .2+1 * iny * lda #$0 * sta (ZPFrameOutPtr),y - -* ldy #S.IP.IDENTIFICATION -* sta (ZPFrameOutPtr),y -* inc -* iny -* sta (ZPFrameOutPtr),y -* dec + * ldy #S.IP.FRAGMENT.FLAGS * sta (ZPFrameOutPtr),y * iny * sta (ZPFrameOutPtr),y + + ldy #S.IP.IDENTIFICATION+1 + + lda IP.ID + ldx IP.ID+1 + inc + bne .61 + inx + stx IP.ID+1 + +.61 sta IP.ID + + sta (ZPFrameOutPtr),y + dey + txa + sta (ZPFrameOutPtr),y ldy #S.IP.TTL lda #K.IP.TTL sta (ZPFrameOutPtr),y -.1 ldy #S.IP.PROTOCOL -.2 lda #$ff +.7 ldy #S.IP.PROTOCOL + +.8 lda #$ff sta (ZPFrameOutPtr),y - .9 rts *-------------------------------------- -FRM.SendICMP >PUSHW ZPFrameOutLen - >PUSHWI S.ICMP.TYPE-2 +FRM.SendICMP - ldy #S.ICMP.CHECKSUM - lda #0 - sta (ZPFrameOutPtr),y - iny - sta (ZPFrameOutPtr),y - - jsr IP.ComputeChecksum - - phy - ldy #S.ICMP.CHECKSUM - sta (ZPFrameOutPtr),y - iny - pla - sta (ZPFrameOutPtr),y - bra FRM.SendIP *-------------------------------------- FRM.SendTCP @@ -164,20 +219,25 @@ FRM.SendIP ldx #3 Copy SRC.IP even if IP offload cmp #S.IP.PROTOCOL.TCP bne .3 jsr TCP.ComputeChecksum - bra .4 + bra .5 .3 cmp #S.IP.PROTOCOL.UDP bne .4 jsr UDP.ComputeChecksum + bra .5 -.4 lda DevFlags - and #S.DEVSTAT.NET.FLAGS.ARPOFFLOAD +.4 cmp #S.IP.PROTOCOL.ICMP bne .5 + jsr ICMP.ComputeChecksum + +.5 lda DevFlags + and #S.DEVSTAT.NET.FLAGS.ARPOFFLOAD + bne .6 jsr IP.SetDestMAC bcs FRM.Queue -.5 >LDYA ZPFrameOutPtr +.6 >LDYA ZPFrameOutPtr ldx #DEVMGR.WRITEBLOCK jsr NetDevJmp bcs FRM.Queue diff --git a/LIB/LIBTCPIP.S.ICMP.txt b/LIB/LIBTCPIP.S.ICMP.txt index 7b390f67..6e89ae0a 100644 --- a/LIB/LIBTCPIP.S.ICMP.txt +++ b/LIB/LIBTCPIP.S.ICMP.txt @@ -132,6 +132,26 @@ ICMP.IN.ECHOREP jsr IP.FillTmpSocketSrcDst >SYSCALL FreeMemA rts *-------------------------------------- +ICMP.ComputeChecksum + >PUSHW ZPFrameOutLen + >PUSHWI S.ICMP.TYPE-2 + + ldy #S.ICMP.CHECKSUM + lda #0 + sta (ZPFrameOutPtr),y + iny + sta (ZPFrameOutPtr),y + + jsr IP.ComputeChecksum + + phy + ldy #S.ICMP.CHECKSUM + sta (ZPFrameOutPtr),y + iny + pla + sta (ZPFrameOutPtr),y + rts +*-------------------------------------- MAN SAVE LIB/LIBTCPIP.S.ICMP LOAD LIB/LIBTCPIP.S diff --git a/LIB/LIBTCPIP.S.SKT.txt b/LIB/LIBTCPIP.S.SKT.txt index b488568f..9cea497e 100644 --- a/LIB/LIBTCPIP.S.SKT.txt +++ b/LIB/LIBTCPIP.S.SKT.txt @@ -6,6 +6,7 @@ AUTO 6 .LIST OFF */-------------------------------------- * #SKT.New +* Create a new socket * ##In : * PUSHW = PTR to S.SOCKET template * ##Out : @@ -13,7 +14,6 @@ AUTO 6 * X = hSocket *\-------------------------------------- SKT.New >PULLW ZPTmpPtr1 - ldy #S.SOCKET.SRC.PORT+1 lda (ZPTmpPtr1),y dey @@ -74,7 +74,8 @@ SKT.New >PULLW ZPTmpPtr1 lda TmpOffset Did we found an empty slot ? bmi .9 - ldy #S.SOCKET-1 + ldy #S.SOCKET.TEMPLATE-1 + .7 lda (ZPTmpPtr1),y sta (ZPTmpPtr3),y dey @@ -115,6 +116,17 @@ SKT.New.TCP ldy #S.SOCKET.SQ.INFREE iny lda /K.TCP.WSIZE sta (ZPTmpPtr3),y + + lda #0 + ldy #S.SOCKET.SQ.INUSED + sta (ZPTmpPtr3),y + iny + sta (ZPTmpPtr3),y + + ldy #S.SOCKET.SQ.OUTUSED + sta (ZPTmpPtr3),y + iny + sta (ZPTmpPtr3),y >PUSHW K.TCP.WSIZE >PUSHBI 0 @@ -136,7 +148,14 @@ SKT.New.TCP ldy #S.SOCKET.SQ.INFREE clc .9 rts -*-------------------------------------- +*/-------------------------------------- +* #SKT.AcceptA +* Check for an incoming connection +* ##In : +* A = hListeningSocket +* ##Out : +* A = hSocket +*\-------------------------------------- SKT.AcceptA jsr SKT.GetA.I bcs .9 ldy #S.SOCKET.SO @@ -149,11 +168,14 @@ SKT.AcceptA jsr SKT.GetA.I ldy #S.SOCKET.HQ.TAIL cmp (ZPPtrSKT),y Queue Empty beq .9 CC + pha inc cmp #S.SOCKET.HQ.MAX bne .1 + lda #0 + .1 sta (ZPPtrSKT),y pla clc @@ -166,49 +188,81 @@ SKT.AcceptA jsr SKT.GetA.I .99 lda #ERR.SKT.BAD sec .9 rts -*-------------------------------------- -* SKT.Send -*-------------------------------------- +*/-------------------------------------- +* #SKT.Send (DGRAM,STREAM,RAW) +* Send block of data +* ##In : +* PUSHB = hSocket +* PUSHW = pBuf +* PUSHW = len +* ##Out : +* A = hFrame +*\-------------------------------------- SKT.Send >PULLW ZPDataInLen >PULLW ZPDataInPtr >PULLB hSocket + jsr SKT.GetA.I bcs .9 + and #S.SOCKET.SOCK.MASK cmp #S.SOCKET.SOCK.DGRAM beq SKT.SEND.UDP - + cmp #S.SOCKET.SOCK.STREAM bne .1 - jmp SKT.SEND.TCP + ldy #S.SOCKET.SO + lda (ZPPtrSKT),y + and #S.SOCKET.SO.ACCEPTCONN + bne .99 + jmp SKT.SEND.TCP + .1 cmp #S.SOCKET.SOCK.RAW bne .99 jmp SKT.SEND.RAW -.99 sec +.99 lda #ERR.SKT.BAD + sec .9 rts *-------------------------------------- -SKT.SEND.UDP lda #S.IP.PROTOCOL.UDP - jsr FRM.NewA +SKT.SEND.UDP ldx #S.IP.PROTOCOL.UDP + >LDYA ZPDataInLen + jsr FRM.NewIP bcs .9 - >LDAXI S.UDP-2 - jsr SKT.SetFrameOutLenAX - - >LDAXI S.UDP - jsr SKT.SetDataOutPtrAX - jsr SKT.SetFrameOutDstIP jsr SKT.SetFrameOutPorts - + jsr SKT.CopyDataInToOut jmp FRM.SendUDP .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 + + ldy #S.SOCKET.RAW.PROTO + lda (ZPPtrSKT),y + cmp #S.IP.PROTOCOL.ICMP + bne .1 + jmp FRM.SendICMP +.1 jmp FRM.SendIP + +.9 sec + rts +*-------------------------------------- SKT.SEND.TCP ldy #S.SOCKET.STATUS lda (ZPPtrSKT),y and #S.SOCKET.STATUS.MASK @@ -328,32 +382,6 @@ SKT.SEND.TCP ldy #S.SOCKET.STATUS .91 lda #MLI.ERR.VOLFULL sec rts -*-------------------------------------- -SKT.SEND.RAW ldy #S.SOCKET.RAW.PROTO - lda (ZPPtrSKT),y - - jsr FRM.NewA - bcs .9 - - >LDAXI S.IP-2 - jsr SKT.SetFrameOutLenAX - - >LDAXI S.IP - jsr SKT.SetDataOutPtrAX - - jsr SKT.SetFrameOutDstIP - - jsr SKT.CopyDataInToOut - - ldy #S.SOCKET.RAW.PROTO - lda (ZPPtrSKT),y - cmp #S.IP.PROTOCOL.ICMP - bne .1 - jmp FRM.SendICMP -.1 jmp FRM.SendIP - -.9 sec - rts */-------------------------------------- * #SKT.RcvdA (DGRAM,RAW) * ##In : @@ -554,8 +582,14 @@ SKT.Rcvd.1 jsr SKT.GetCopy .90 lda #0 .9 sec A=0, no data rts -*-------------------------------------- -SKT.CLOSEA cmp #K.SKTTABLE.SIZE +*/-------------------------------------- +* #SKT.CloseA +* Close socket +* ##In : +* A = hSocket +* ##Out : +*\-------------------------------------- +SKT.CloseA cmp #K.SKTTABLE.SIZE bcs SKT.GetA.9 jsr SKT.GetA.I @@ -579,7 +613,14 @@ SKT.CLOSEA cmp #K.SKTTABLE.SIZE sta (ZPPtrSKT) clc .9 rts -*-------------------------------------- +*/-------------------------------------- +* #SKT.GetA +* Get Ptr to socket +* ##In : +* A = hSocket +* ##Out : +* Y,A = pS.SOCKET +*\-------------------------------------- SKT.GetA cmp #K.SKTTABLE.SIZE bcs SKT.GetA.9 @@ -609,14 +650,26 @@ SKT.GetA.I pha .2 dex bne .1 - lda (ZPPtrSKT) +.8 lda (ZPPtrSKT) beq SKT.GetA.9 -.8 rts CC + clc + rts SKT.GetA.9 lda #ERR.SKT.BAD sec rts +*/-------------------------------------- +* #SKT.GetTable +* Get socket table +* ##In : +* ##Out : +* Y,A = pS.SOCKET +*\-------------------------------------- +SKT.GetTable lda hSocketTable + >SYSCALL GetMemPtrA + clc + rts *-------------------------------------- * ZPPtrSKT -> actual socket * A = hSocket or hFrame @@ -648,11 +701,6 @@ SKT.AddToQueueA sta .2+1 .9 sec rts *-------------------------------------- -SKT.GETTABLE lda hSocketTable - >SYSCALL GetMemPtrA - clc - rts -*-------------------------------------- SKT.AddToQueueS clc rts @@ -674,28 +722,6 @@ SKT.PutCopy ldy #S.SOCKET-1 bpl .1 rts *-------------------------------------- -SKT.SetFrameOutLenAX - clc - adc ZPDataInLen - sta (ZPFrameOutPtr) - sta ZPFrameOutLen - - txa - adc ZPDataInLen+1 - ldy #1 - sta (ZPFrameOutPtr),y - sta ZPFrameOutLen+1 - rts -*-------------------------------------- -SKT.SetDataOutPtrAX - clc - adc ZPFrameOutPtr - sta ZPDataOutPtr - txa - adc ZPFrameOutPtr+1 - sta ZPDataOutPtr+1 - rts -*-------------------------------------- SKT.SetFrameOutDstIP ldy #S.SOCKET.DST.ADDR ldx #4 @@ -738,21 +764,29 @@ SKT.SetFrameOutPorts iny txa sta (ZPFrameOutPtr),y + rts *-------------------------------------- SKT.CopyDataInToOut + lda ZPDataInPtr+1 + pha + lda ZPDataOutPtr+1 + pha + lda ZPDataInLen eor #$ff - sta ZPDataInLen + tax lda ZPDataInLen+1 eor #$ff - tax + pha ldy #0 -.1 inc ZPDataInLen +.1 inx bne .2 - inx + pla + inc beq .9 + pha .2 lda (ZPDataInPtr),y sta (ZPDataOutPtr),y @@ -761,8 +795,13 @@ SKT.CopyDataInToOut inc ZPDataInPtr+1 inc ZPDataOutPtr+1 bne .1 -.9 rts - + +.9 pla + sta ZPDataOutPtr+1 + pla + sta ZPDataInPtr+1 + rts +*-------------------------------------- MAN SAVE LIB/LIBTCPIP.S.SKT LOAD LIB/LIBTCPIP.S diff --git a/LIB/LIBTCPIP.S.TCP.txt b/LIB/LIBTCPIP.S.TCP.txt index db868571..6da32ac7 100644 --- a/LIB/LIBTCPIP.S.TCP.txt +++ b/LIB/LIBTCPIP.S.TCP.txt @@ -223,6 +223,29 @@ TCP.IN.JMP.TIMEWT clc rts *-------------------------------------- +TCP.OUT jsr SKT.GetCopy + + lda SKT.TmpCache+S.SOCKET.SQ.OUTUSED+1 + bne .1 + ldy SKT.TmpCache+S.SOCKET.SQ.OUTUSED + beq .8 nothing to send....go check if ACK pending + +.1 cpy #K.TCP.MSS + pha + sbc /K.TCP.MSS OUTDATA > MSS ? + pla + bcs .2 no....get data len + + >LDYAI K.TCP.MSS yes gert only MSS + +.2 >STYA ZPDataOutLen + + + jmp FRM.SendTCP + +.8 clc + rts +*-------------------------------------- TCP.UpdateSktAckNum ldy #S.SOCKET.SQ.ACKNUM+3 lda (ZPPtrSKT),y diff --git a/LIB/LIBTCPIP.S.txt b/LIB/LIBTCPIP.S.txt index 65804c4d..599f23ca 100644 --- a/LIB/LIBTCPIP.S.txt +++ b/LIB/LIBTCPIP.S.txt @@ -123,9 +123,6 @@ LIB.LOAD lda bFirstLoad jsr ARP.CLEAR jsr DNS.CLEAR - >LDYAI K.DYNPORT.START - >STYA DYNPORT.LAST - >PUSHWI K.SKTTABLE.SIZE*S.SOCKET >PUSHBI S.MEM.F.INIT0 >SYSCALL GetMem @@ -138,7 +135,12 @@ LIB.LOAD lda bFirstLoad .8 clc .9 rts *-------------------------------------- -LIB.UNLOAD clc +LIB.UNLOAD lda hSocketTable + beq .8 + + >SYSCALL FreeMemA + +.8 clc rts *-------------------------------------- POLL ldx #DEVMGR.READBLOCK @@ -294,7 +296,6 @@ DNS.SOCKET.SA .BS 4 DNS.SOCKET.SP .DA 0 Dynamic DNS.SOCKET.DA .BS 4 DNS.SOCKET.DP .DA UDP.PORT.DNS - .BS S.SOCKET-16 *-------------------------------------- DNS.MSG.LEN .BS 2 DNS.MSG @@ -317,7 +318,7 @@ FRM.QUEUE.Retry .BS K.FRMQUEUE.SIZE bFirstLoad .DA #0 hSocketTable .BS 1 DevFlags .BS 1 -DYNPORT.LAST .BS 2 +DYNPORT.LAST .DA K.DYNPORT.START hDNSSocket1 .BS 1 hDNSSocket2 .BS 1 DNS.HostNameLen .BS 1 @@ -333,6 +334,7 @@ hSocket .BS 1 TmpOffset .BS 2 HST.DecStr .BS 4 HST.IP .BS 5 +IP.ID .BS 2 IP.CHECKSUM .BS 4 *-------------------------------------- MAN diff --git a/SBIN/DHCPCLNT.S.txt b/SBIN/DHCPCLNT.S.txt index afe0ea84..833a7484 100644 --- a/SBIN/DHCPCLNT.S.txt +++ b/SBIN/DHCPCLNT.S.txt @@ -106,7 +106,6 @@ CS.INIT >LDYA L.LIBTCPIP CS.RUN >PUSHW L.Socket >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.NEW - bcc .1 jmp CS.RUN.KO @@ -119,10 +118,11 @@ CS.RUN >PUSHW L.Socket jsr Init.Timeout -CS.RUN.SDISC >PUSHWI DHCP.DISC.LEN +CS.RUN.SDISC ldy #hSocket + >PUSHB (pData),y >PUSHW L.DHCP.DISC - jsr CS.RUN.SKT.SEND - + >PUSHWI DHCP.DISC.LEN + >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.SEND bcc .1 jmp CS.RUN.KO @@ -155,9 +155,11 @@ CS.RUN.SREQ ldx #3 >LDYA L.MSG.CFG2 >SYSCALL CPrintFYA - >PUSHWI DHCP.REQ.LEN + ldy #hSocket + >PUSHB (pData),y >PUSHW L.DHCP.REQ - jsr CS.RUN.SKT.SEND + >PUSHWI DHCP.REQ.LEN + >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.SEND bcs CS.RUN.KO lda #S.IPCFG.STATUS.SREQ @@ -207,11 +209,6 @@ CS.RUN.KO pha sec rts *-------------------------------------- -CS.RUN.SKT.SEND ldy #hSocket - >PUSHB (pData),y - >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.SEND - rts -*-------------------------------------- CS.RUN.SKT.RCVD ldy #hSocket lda (pData),y >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.RCVDA @@ -243,7 +240,7 @@ CS.DOEVENT lda (pEvent) CS.QUIT ldy #hSocket lda (pData),y -* >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.CLOSEA + >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.CLOSEA lda hLIBTCPIP >SYSCALL UnloadLibA @@ -449,7 +446,6 @@ Socket .DA #S.SOCKET.SOCK.DGRAM .DA UDP.PORT.DHCPC Socket.Src.Port .HS FF.FF.FF.FF Socket.Dst.Addr .DA UDP.PORT.DHCPS Socket.Dst.Port - .BS S.SOCKET-16 *-------------------------------------- DHCP.DISC .HS 01010600 OP,HTYPE,HLEN,HOPS DHCP.DISC.XID .BS 4 diff --git a/SYS/KERNEL.S.txt b/SYS/KERNEL.S.txt index 66e093fc..57695aae 100644 --- a/SYS/KERNEL.S.txt +++ b/SYS/KERNEL.S.txt @@ -12,6 +12,7 @@ AUTO 6 .INB /A2OSX.DEV/INC/A2OSX.I .INB /A2OSX.DEV/INC/IO.I .INB /A2OSX.DEV/INC/PRODOS.I + .INB /A2OSX.DEV/INC/MLI.ERR.I *-------------------------------------- TmpPtr1 .EQ $0 for X.PRINTF.S ZPPtr1 .EQ ZPKERNEL Temp Ptrs for use in very limited scope diff --git a/_Docs/LIBTCPIP.md b/_Docs/LIBTCPIP.md index 30798d6d..8a02c6fe 100644 --- a/_Docs/LIBTCPIP.md +++ b/_Docs/LIBTCPIP.md @@ -1,15 +1,7 @@ *** Auto generated by docgen.cmd *** -#FRM.NewA - -##In: -+ A = S.IP.PROTOCOL.??? - -##Out: -* Y,A = Frame PTR -* X = hMem - #SKT.New ++ Create a new socket ##In : + PUSHW = PTR to S.SOCKET template @@ -17,3 +9,87 @@ ##Out : + YA = PTR to new S.SOCKET + X = hSocket + +#SKT.AcceptA ++ Check for an incoming connection + +##In : ++ A = hListeningSocket + +##Out : ++ A = hSocket + +#SKT.Send (DGRAM,STREAM,RAW) ++ Send block of data + +##In : ++ PUSHB = hSocket ++ PUSHW = pBuf ++ PUSHW = len + +##Out : ++ A = hFrame + +#SKT.RcvdA (DGRAM,RAW) + +##In : ++ A = hSocket + +##Out : ++ A = hFrame + +#SKT.GetCA (STREAM) ++ Read a Char From Stream in A + +##In : ++ A = hSocket + +##Out : ++ A = char + +#SKT.GetS (STREAM) ++ Read a CR terminated Line in pBuf + +##In : ++ PUSHB = hSocket ++ PUSHW = pBuf ++ PUSHW = len + +##Out : ++ Y,A = bytes read + +#SKT.Rcvd (STREAM) ++ Read data in pBuf + +##In : ++ PUSHB = hSocket ++ PUSHW = pBuf ++ PUSHW = len + +##Out : ++ Y,A = bytes transfered + +#SKT.CloseA ++ Close socket + +##In : ++ A = hSocket + +##Out : + +#SKT.GetA ++ Get Ptr to socket + +##In : ++ A = hSocket + +##Out : ++ Y,A = pS.SOCKET + +#SKT.GetTable ++ Get socket table + +##In : + +##Out : ++ Y,A = pS.SOCKET