From b25f08cdae258db44a8f4ca9596e4ae166ef83f6 Mon Sep 17 00:00:00 2001 From: John Bintz Date: Thu, 25 Apr 2024 17:03:25 -0400 Subject: [PATCH] 1.1.3 works --- src/AMOSPro_BSDSocket.Lib | Bin 6108 -> 6160 bytes src/BSDSocket.s | 41 +++++++++++++++++++++++++------------- src/BSDSocket_Labels.s | 2 +- src/BSDSocket_Size.s | 2 +- 4 files changed, 29 insertions(+), 16 deletions(-) diff --git a/src/AMOSPro_BSDSocket.Lib b/src/AMOSPro_BSDSocket.Lib index f707d660edaa2ff014283b11c17e9ebc42b03f05..bd44a6760c730b9bacf0cd0206b32071f11aac1c 100644 GIT binary patch delta 486 zcmcbkKfz#vc=B%s2IiLx46Hz!!4Jq5Vqg%F1F}OH7#stP3>fD!Ffphxuru&5crh3= zSOM7v3}y_93@QxnK)xJ<1CXD?kjgNDftNv$L5RVFp^ib1L7w3b!#p5q!XUv=zOm{H zo0!LQfe%WKW|Ar%!OkK#15f||BeI8qVR9S0k%Yh=1_8kupgoL+P7F-$FBn+V4mizr zn!R}syArF4$8!k=HO5!7nVNyFVt+dO;$aO&rWPPuzKrqZZY5@)`wSA3|L|-eO5x^H zypNbRZxV1|geYf1F_#Hpt_s9l0U>ABN7)PvrzS@T$w0I)qiA79Xi)=e**r;zhe*Ts z2s^W<0S!-5ke{3&Bto3=79yt@nSz}+Gl|V-66gvISoKzIX0+E^p40r?NoUBF*= zY<3O~3lehh(ZUL88%wC5hE?)qc;t7ng%C1SXb8|p9R?n7M$<(Jy{p5YY)L(W0?_1O z%{F*2RlZEW8$_p)lc{*f#CK9vEH?y;y$|>aHIOEQ`y1XTW%Stduqs$aq|28nC-JNN z#Ix-KfFT|!9!u`|4D$F7IT_XxWL@jX<2~TkG#2*xTmzA<>q$tM2_=oF$8=~>D8ANm tsoCT-sQ~@w`xh%IYUuy~ diff --git a/src/BSDSocket.s b/src/BSDSocket.s index 17a87c4..45d4229 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.2-20240318" + dc.b "1.1.3-20240417" ENDM VerNumber equ $1 @@ -56,7 +56,6 @@ SO_REUSEADDR EQU $4 MAX_SOCKETS EQU 64 len_sockaddr_in EQU 16 -sockaddr_in_sin_len EQU 0 sockaddr_in_sin_family EQU 1 sockaddr_in_sin_port EQU 2 sockaddr_in_sin_addr EQU 4 @@ -142,19 +141,20 @@ LeaFdset MACRO ; LeaFdsetForBit fd_set reg,target address,target bit in address LeaFdsetForBit MACRO LeaFdset \1,\2 ; get fdset base address in \2 - MOVE.L D3,-(SP) + MOVEM.L D3-D4,-(SP) MOVE.L \3,D3 ; Put target bit into D3 ROR.L #5,D3 ; lop off the first 5 bits AND.L #$7,D3 ; only keep the top three ROL.L #2,D3 ; multiply by 4 ADD.L D3,\2 ; add that value to the fdset address - AND.L #$1F,\3 ; only keep 0-31 in \3 + MOVE.L \3,D4 + AND.L #$1F,D4 ; only keep 0-31 in \3 MOVEQ #1,D3 - ROL.L \3,D3 ; shift that bit left as many as target + ROL.L D4,D3 ; shift that bit left as many as target MOVE.L D3,\3 ; put that in the target - MOVE.L (SP)+,D3 + MOVEM.L (SP)+,D3-D4 ENDM @@ -533,14 +533,17 @@ _ToSockaddr_PortOK: MOVE.L sockaddr_ram-MB(A3),A0 ADD.L D3,A0 ; A0 contains our offset in ram - MOVE.B #len_sockaddr_in,sockaddr_in_sin_len(A0) - MOVE.B #AF_INET,sockaddr_in_sin_family(A0) - MOVE.W D2,sockaddr_in_sin_port(A0) - MOVEM.L A0-A3/D3,-(SP) + MOVE.L D1,A1 ; ip string address + MOVE.W (A1)+,D3 ; string length - MOVE.L D1,A0 ; ip address - ADDQ #2,A0 ; string data starts 2 bytes in + ; 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 +_ToSockaddr_CopyIPString: + MOVE.B (A1)+,(A2)+ + DBRA D3,_ToSockaddr_CopyIPString + MOVE.B #0,(A2) ; end of string ; if the string contains "INADDR_ANY", we use that value instead MOVE.L A0,A1 @@ -565,7 +568,15 @@ _ToSockaddr_ParseIPAddress: _ToSockaddr_DoneParsing: MOVEM.L (SP)+,A0-A3/D3 - MOVE.L D0,sockaddr_in_sin_addr(A0) + + ; create struct sockaddr_in + MOVE.B #len_sockaddr_in,(A0) + MOVE.B #AF_INET,sockaddr_in_sin_family(A0) + MOVE.W D2,sockaddr_in_sin_port(A0) + LEA sockaddr_in_sin_addr(A0),A3 + MOVE.L D0,(A3)+ + CLR.L (A3)+ + CLR.L (A3)+ MOVE.L A0,D0 MOVEM.L (SP)+,A0/A3/D3 @@ -1999,6 +2010,8 @@ _DnsGetHostAddressByName_GetIPAddressLength: BNE _DnsGetHostAddressByName_GetIPAddressLength MOVE.L (SP)+,A2 + SUBQ #1,D3 + MOVE.L D3,D4 AND.W #$FFFE,D3 ADDQ #2,D3 @@ -2013,7 +2026,7 @@ _DnsGetHostAddressByName_GetIPAddressLength: SUBQ #1,D4 _DnsGetHostAddressByName_KeepCopying: - MOVE.B (A2,D4),(A0,D4) + MOVE.B (A2,D4),(A0,D4) DBRA D4,_DnsGetHostAddressByName_KeepCopying RestoreStackFunction diff --git a/src/BSDSocket_Labels.s b/src/BSDSocket_Labels.s index ca423b1..0e40485 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 16:01:54 +; BSDSocket.s, list of the library functions on the 25-04-2024 17:02:36 ; ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ L_Cold: set 0 diff --git a/src/BSDSocket_Size.s b/src/BSDSocket_Size.s index 2764174..f60a36d 100644 --- a/src/BSDSocket_Size.s +++ b/src/BSDSocket_Size.s @@ -1,5 +1,5 @@ ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -; BSDSocket.s, library size on the 25-04-2024 16:01:54 +; BSDSocket.s, library size on the 25-04-2024 17:02:36 ; ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Lib_Size equ 39