diff --git a/.gitignore b/.gitignore index 1b25989..afe86f5 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ stuff/ patches/ .vamosrc activate +test/report.txt diff --git a/src/AMOSPro_BSDSocket.Lib b/src/AMOSPro_BSDSocket.Lib index bd44a67..781ff6c 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 45d4229..49f4e5a 100644 --- a/src/BSDSocket.s +++ b/src/BSDSocket.s @@ -512,7 +512,7 @@ _SocketLibraryOpen_Finish: ; ; Turn an IP address and port into a sockaddr_in strucure ; -; d0 - 0 on success, -1 on failure +; d0 - address of sockaddr_in on success, -1 on failure ; - - - - - - - - Lib_Def SocketIPAddressPortToSockaddr @@ -537,6 +537,15 @@ _ToSockaddr_PortOK: MOVE.L D1,A1 ; ip string address MOVE.W (A1)+,D3 ; string length + BNE _ToSockaddr_StringHasLength + MOVEM.L (SP)+,A0-A3/D3 + MOVEM.L (SP)+,A0/A3/D3 + + MOVE.L #-14,D0 + RTS + +_ToSockaddr_StringHasLength: + ; temporarily store a null-terminated copy of the ip string in A0 MOVE.L A0,A2 SUBQ #1,D3 ; DBRA loop runs D3 + 1 times @@ -656,7 +665,6 @@ _SocketCreateInetSocket_Done: Ret_Int _SocketConnect_LibraryOpen: - MOVE.L D0,-(SP) ; socket id onto stack Rbsr L_SocketIPAddressPortToSockaddr @@ -674,6 +682,8 @@ _SocketConnect_SockaddrIn: MOVE.L D0,A0 MOVE.L (SP)+,D0 + CLR.W $100 + MOVE.L D0,-(SP) MOVEM.L A0/A3,-(SP) Dload A3 @@ -1946,24 +1956,25 @@ _SocketReuseAddr_LibraryOpen: _DnsGetHostAddressByName_LibraryOpen: ; string so you need demande, hichaine, and chvide MOVE.L D3,A0 ; name + MOVEQ #0,D0 MOVE.W (A0)+,D0 ; d0 contains length MOVE.L D0,D1 ; d1 also has length MOVE.L D0,D2 ; d2 also has length Rjsr L_RamFast ; d0 contains address - BNE .StringRamAllocated + BNE _DnsGetHostAddressByName_StringRamAllocated MOVE.L ChVide(A5),D3 RestoreStackFunction Ret_String -.StringRamAllocated: +_DnsGetHostAddressByName_StringRamAllocated: MOVE.L D0,A1 ; a1 contains address SUBQ #1,D1 ; reduce by one for DBRA -.KeepCopyingAMOSString +_DnsGetHostAddressByName_KeepCopyingAMOSString MOVE.B (A0)+,(A1)+ ; byte copy - DBRA D1,.KeepCopyingAMOSString ; keep copying + DBRA D1,_DnsGetHostAddressByName_KeepCopyingAMOSString ; keep copying MOVE.B #0,(A1)+ ; null terminate string MOVE.L D0,A0 ; first param of gethostbyname @@ -1982,14 +1993,14 @@ _DnsGetHostAddressByName_LibraryOpen: MOVE.L (SP)+,D0 TST.L D0 - BNE .GetIPAddress + BNE _DnsGetHostAddressByName_GetIPAddress RestoreStackFunction MOVE.L ChVide(A5),D3 Ret_String -.GetIPAddress: +_DnsGetHostAddressByName_GetIPAddress: MOVE.L D0,A0 MOVE.L 16(A0),A1 ; **h_addr_list MOVE.L (A1),A1 ; *h_addr_list @@ -2156,7 +2167,7 @@ _SocketCloseSocket_LibraryOpen: EndDataStorage TST.L D0 - BEQ .success + BEQ _SocketHerrno_success ; failed MOVE.L #-1,D3 @@ -2164,7 +2175,7 @@ _SocketCloseSocket_LibraryOpen: RestoreStackFunction Ret_Int -.success +_SocketHerrno_success: MOVE.L (A1),D3 RestoreStackFunction diff --git a/src/BSDSocket_Labels.s b/src/BSDSocket_Labels.s index 0e40485..5e81b7d 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 17:02:36 +; BSDSocket.s, list of the library functions on the 26-04-2024 08:23:46 ; ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ L_Cold: set 0 diff --git a/src/BSDSocket_Size.s b/src/BSDSocket_Size.s index f60a36d..f3e9d7f 100644 --- a/src/BSDSocket_Size.s +++ b/src/BSDSocket_Size.s @@ -1,5 +1,5 @@ ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -; BSDSocket.s, library size on the 25-04-2024 17:02:36 +; BSDSocket.s, library size on the 26-04-2024 08:23:46 ; ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lib_Size equ 39 diff --git a/test/TestSuite.amos b/test/TestSuite.amos new file mode 100644 index 0000000..521803a Binary files /dev/null and b/test/TestSuite.amos differ