diff --git a/src/AMOSPro_BSDSocket.Lib b/src/AMOSPro_BSDSocket.Lib index 0c0c7ee..f707d66 100644 Binary files a/src/AMOSPro_BSDSocket.Lib and b/src/AMOSPro_BSDSocket.Lib differ diff --git a/src/BSDSocket.s b/src/BSDSocket.s index 4cc7c51..17a87c4 100644 --- a/src/BSDSocket.s +++ b/src/BSDSocket.s @@ -7,7 +7,7 @@ ; extension number 18 ExtNb equ 18-1 Version MACRO - dc.b "1.1.1-20240317" + dc.b "1.1.2-20240318" ENDM VerNumber equ $1 @@ -1374,10 +1374,24 @@ _SocketInetNtoA_StringSizeLoop: MOVE.L A0,D3 SUB.L A2,D3 ; D3 = length SUBQ #1,D3 ; get rid of the null terminator + MOVE.L A0,D4 + SUB.L A2,D4 ; D4 = length + SUBQ #1,D4 ; get rid of the null terminator + + ; add 2 and even out the space + MOVE.L D4,D3 + AND.W #$FFFE,D3 + ADDQ.W #2,D3 + Rjsr L_Demande ; string base address is in A0/A1 - MOVE.W D3,(A0)+ ; length of string - SUBQ #1,D3 + LEA 2(A0,D3.W),A1 + + MOVE.L A1,HiChaine(A5) + MOVE.L A0,A1 + + MOVE.W D4,(A0)+ ; length of string + SUBQ #1,D4 _SocketInetNtoA_StringCopyLoop: MOVE.B (A2,D3),(A0,D3) @@ -1451,7 +1465,7 @@ _SocketRecvString_NotTooLong: _SocketRecvString_BufferAllocated: MOVE.L D0,A0 ; buffer address MOVE.L D1,D0 ; socket - MOVE.L (SP)+,D1 ; length + MOVE.L (SP)+,D1 ; reserved ram buffer length MOVEQ #0,D2 ; flags MOVEM.L A0-A1/D1,-(SP) @@ -1479,39 +1493,38 @@ _SocketRecvString_BufferAllocated: Ret_String ; TODO received data is wrong somewhere - _SocketRecvString_DataReceived: - ; D0 contains receive length + ; D0 contains socket receive length - MOVE.L D1,-(SP) + ; TODO: handle zero return length + + MOVE.L A0,A2 ; A2 contains read buffer + + MOVE.L D1,-(SP) ; reserved ram buffer length + ; demande/hichaine string setup MOVEQ #0,D3 - MOVE.W D0,D3 ; prep for L_Demande. can we request a zero length string? - MOVE.L A0,A2 ; L_Demande blows away A0 and A1, A2 now contains buffer + MOVE.W D0,D3 + AND.W #$FFFE,D3 + ADDQ #2,D3 Rjsr L_Demande ; A0/A1 contain string address - MOVE.W D3,(A0)+ ; put in string length - SUBQ #1,D3 ; reduce by one for DBRA + LEA 2(A0,D3.W),A1 + MOVE.L A1,HiChaine(A5) + MOVE.L A0,A1 + + MOVE.W D0,(A1)+ ; put in string length + SUBQ #1,D0 ; reduce by one for DBRA MOVE.L A2,A3 ; A3 now contains start of buffer _SocketRecvString_CopyData: - MOVE.B (A2,D3),(A0,D3) - DBRA D3,_SocketRecvString_CopyData + MOVE.B (A2,D0),(A1,D0) + DBRA D0,_SocketRecvString_CopyData + MOVE.L (SP)+,D0 ; reserved ram buffer length - EvenOutStringAddress A0,D2 - - ; add to string manager for garbage collection? - MOVE.L A0,HiChaine(A5) - MOVE.L (SP)+,D0 - - ; free ram - MOVE.L A1,-(SP) ; A1 contains our string addres - - ;MOVE.L D1,D0 + MOVE.L A0,-(SP) MOVE.L A3,A1 Rjsr L_RamFree - MOVE.L (SP)+,D3 ; string return - MOVE.L (SP)+,A3 RestoreStackFunction @@ -1905,7 +1918,7 @@ _SocketReuseAddr_LibraryOpen: ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -; =Dns Get Host Address By Name$(Name String) +; =Dns Get Address By Name$(Name String) ; ; Get the status of a socket ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1986,18 +1999,22 @@ _DnsGetHostAddressByName_GetIPAddressLength: BNE _DnsGetHostAddressByName_GetIPAddressLength MOVE.L (SP)+,A2 + MOVE.L D3,D4 + AND.W #$FFFE,D3 + ADDQ #2,D3 + Rjsr L_Demande ; string is in A0/A1 - MOVE.W D3,(A0)+ - SUBQ #1,D3 + + LEA 2(A0,D3.W),A1 + MOVE.L A1,HiChaine(A5) + MOVE.L A0,D3 + + MOVE.W D4,(A0)+ + SUBQ #1,D4 _DnsGetHostAddressByName_KeepCopying: - MOVE.B (A2,D3),(A0,D3) - DBRA D3,_DnsGetHostAddressByName_KeepCopying - - EvenOutStringAddress A0,D0 - - MOVE.L A0,HiChaine(A5) - MOVE.L A1,D3 + MOVE.B (A2,D4),(A0,D4) + DBRA D4,_DnsGetHostAddressByName_KeepCopying RestoreStackFunction diff --git a/src/BSDSocket_Labels.s b/src/BSDSocket_Labels.s index 52ab0ee..ca423b1 100644 --- a/src/BSDSocket_Labels.s +++ b/src/BSDSocket_Labels.s @@ -1,5 +1,5 @@ ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -; BSDSocket.s, list of the library functions on the 25-04-2024 14:44:28 +; BSDSocket.s, list of the library functions on the 25-04-2024 16:01:54 ; ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ L_Cold: set 0 diff --git a/src/BSDSocket_Size.s b/src/BSDSocket_Size.s index ab081f3..2764174 100644 --- a/src/BSDSocket_Size.s +++ b/src/BSDSocket_Size.s @@ -1,5 +1,5 @@ ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -; BSDSocket.s, library size on the 25-04-2024 14:44:28 +; BSDSocket.s, library size on the 25-04-2024 16:01:54 ; ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lib_Size equ 39