;----------------------------------------------------------------------------
; ASM Function calls for bsdsocket.library functions v1.0 by Roger Light 1999.
;
; Allows non-restrictive use of bsdsocket.library - ie bsdsocket.library
; doesn't have to be open on your program startup.
;
; See MiamiSDK from Nordic Global for function descriptions.
;
; Functions are named as follows:
;
; socket_() changes to socket{}
;
; NOTE: This is a cut down version of SocketIncs.bb2 intended for use with
; TCPFuncs.bb A complete set of replacement bsdsocket.library function calls
; is available from me.
;
; Contact me at rogerlight@mindless.com


;----------------------------------------------------------------------------

Function.l socket{domain.l, type_.l, protocol.l}
;                   d0        d1        d2
  SHARED SocketBase.l
  MOVE.l a6,-(a7)
  GetReg d6,SocketBase
  MOVE.l d6,a6
  JSR -30(a6)

  MOVE.l (a7)+,a6
  AsmExit
End Function

;----

Function.l connect{s.l, *name.l, namelen.l}
;                   d0    a0        d1
  SHARED SocketBase.l
  MOVE.l a6,-(a7)
  GetReg d6,SocketBase
  MOVE.l d6,a6

  MOVE.l d1,a0
  MOVE.l d2,d1

  JSR -54(a6)

  MOVE.l (a7)+,a6
  AsmExit
End Function

;----

Function.l send{s.l, *buf.l, len_.l, flags.l}
;                d0    a0      d1      d2
  SHARED SocketBase.l
  MOVE.l a6,-(a7)
  GetReg d6,SocketBase
  MOVE.l d6,a6

  MOVE.l d1,a0
  MOVE.l d2,d1
  MOVE.l d3,d2

  JSR -66(a6)

  MOVE.l (a7)+,a6
  AsmExit

End Function

;----

Function.l recv{s.l, *buf.l, len_.l, flags.l}
;                d0    a0      d1      d2
  SHARED SocketBase.l
  MOVE.l a6,-(a7)
  GetReg d6,SocketBase
  MOVE.l d6,a6

  MOVE.l d1,a0
  MOVE.l d2,d1
  MOVE.l d3,d2

  JSR -78(a6)

  MOVE.l (a7)+,a6
  AsmExit

End Function

;----

Function.l IoctlSocket{s.l, req.l, *argp.l}
;                       d0    d1      a0
  SHARED SocketBase.l
  MOVE.l a6,-(a7)
  GetReg d6,SocketBase
  MOVE.l d6,a6

  MOVE.l d2,a0

  JSR -114(a6)

  MOVE.l (a7)+,a6
  AsmExit

End Function

;----

Statement CloseSocket{s.l}
;                       d0
  SHARED SocketBase.l
  MOVE.l a6,-(a7)
  GetReg d6,SocketBase
  MOVE.l d6,a6
                        ; s.l in d0
  JSR -120(a6)

  MOVE.l (a7)+,a6
  AsmExit

End Statement

;----

Function.l WaitSelect{nfds.l, *readfds.l, *writefds.l, *exceptfds.l, *timeout.l, *signal.l}
;                       d0        a0          a1            a2           a3         d1
  SHARED SocketBase.l
  MOVE.l a6,-(a7)
  GetReg d6,SocketBase
  MOVE.l d6,a6

  MOVE.l d1,a0
  MOVE.l d2,a1
  MOVE.l d3,a2
  MOVE.l d4,a3
  MOVE.l d5,d1

  JSR -126(a6)

  MOVE.l (a7)+,a6
  AsmExit
End Function

;----

Function.l gethostbyname{*name.l}
;                           a0
  SHARED SocketBase.l
  MOVE.l a6,-(a7)
  GetReg d6,SocketBase
  MOVE.l d6,a6

  MOVE.l d0,a0

  JSR -210(a6)

  MOVE.l (a7)+,a6
  AsmExit

End Function
