That's a solid fist try Graham

Nice job, in fact you can have some Karma for that.
As far as image drawing is concerned, there are some functions in the freebasic graphics lib to do that for you.
Alpha etc is very easy to do.
This example was taken from the feeebasic help manual (press F1 in the editor), I've modified it slightly so that you need to press a key to exit..
OPTION explicit
'' set screen mode
SCREEN 15, 32
'' allocate and draw to an image buffer
DIM image_buffer AS ANY PTR
image_buffer = ImageCreate( 64, 64, RGBA( 64, 160, 0, 255 ) )
CIRCLE image_buffer, ( 32, 32 ), 28, RGBA( 255, 0, 0, 128 ),,,,F
'' blit image buffer to screen
PUT( 160, 120 ), image_buffer, PSET
PUT( 180, 140 ), image_buffer, ALPHA
'' free image buffer memory
ImageDestroy( image_buffer )
while inkey$=""
wend
end 0