This should explain it.
;Passing Doubles to a DLL in Blitz Example ;Thanks to Michael Reitzenstein ;gluPerspective has 4 doubles for parameters: ;gluPerspective(fovy as Double,aspect as Double,zNear as Double,zFar as Double) ;Blitz does not have an 8-byte data type that you can pass by value ;but this syntax can be used instead: ;blitz_gluPerspective(fovy_hi%,fovy_low%,aspect_hi%,aspect_low%,zNear_hi%,zNear_low%,zFar_hi%,zFar_low%):"gluPerspective" ;The decls file should look like this: ;;Glu32.decls ;.lib "Glu32.dll" ;blitz_gluPerspective(fovy_l%,fovy_r%,aspect_l%,aspect_r%,zNear_l%,zNear_r%,zFar_l%,zFar_r%):"gluPerspective" ;Then a blitz wrapper function is made: ;Function gluPerspective(fovy#,aspect#,zNear#,zFar#) ;The only difference is that you call it with Blitz floats ;instead of doubles. Function gluPerspective(fovy#,aspect#,zNear#,zFar#) Local dblBank,fovy_l,fovy_r,aspect_l,aspect_r Local zNear_l,zNear_r,zFar_l,zFar_r dblBank=CreateBank(8) SngToDbl fovy#,dblBank fovy_l=PeekInt(dblBank,0) fovy_r=PeekInt(dblBank,4) SngToDbl aspect#,dblBank aspect_l=PeekInt(dblBank,0) aspect_r=PeekInt(dblBank,4) SngToDbl zNear#,dblBank zNear_l=PeekInt(dblBank,0) zNear_r=PeekInt(dblBank,4) SngToDbl zFar#,dblBank zFar_l=PeekInt(dblBank,0) zFar_r=PeekInt(dblBank,4) FreeBank dblBank blitz_gluPerspective fovy_l,fovy_r,aspect_l,aspect_r,zNear_l,zNear_r,zFar_l,zFar_r End Function Function SngToDbl( x#, bank ) ;Thanks to Floyd for this one. His comments: ;This should convert all ordinary floats correctly. ;The extreme cases +Infinity, -Infinity, NaN ;would require special handling. Local s, e, m, Lo, Hi, n PokeFloat bank, 0, x# n = PeekInt( bank, 0 ) ; raw bits of x s = n And %10000000000000000000000000000000 ; sign bit e = n And %01111111100000000000000000000000 ; 8-bit exponent e = (e Shr 3) + %00111000000000000000000000000000 ; 11-bit exponent m = n And %00000000011111111111111111111111 ; 23-bit mantissa Lo = m Shl 29 ; final three bits of mantissa Hi = s Or e Or (m Shr 3 ) ; sign, exponent, first twenty bits of m PokeInt bank, 0, Lo PokeInt bank, 4, Hi End Function