Hi Peter,
I've marked up the fixes.
the glut callback functions must be marked 
callback or 
externalpkey must be masked to 8 bits to obtain ascii codes.
low level bound functions (without prototypes) will not take expressions as parameters.
But I would not spend too long with GLUT. The full Opengl gives you far more control and flexibility.
You are welcome to borrow any code from my OpenglView Demos if it helps save time. 

Charles
Declare Sub ExitProcess Lib "kernel32.dll" (ByVal uExitCode As Long)
% GL_QUADS     = &H0007
% GL_LINES     = &H0001
% GLUT_DOUBLE  = 2
% GLUT_RGBA    = 0
Dim ogl32,glut32,kernel32 as long
ogl32    = LoadLibrary "opengl32.dll"
glut32   = LoadLibrary "glut32.dll"
kernel32 = LoadLibrary "kernel32.dll" 
Bind glut32
(
  glutInitWindowPosition glutInitWindowPosition
  glutInitDisplayMode    glutInitDisplayMode
  glutInitWindowSize     glutInitWindowSize 
  glutCreateWindow       glutCreateWindow
  glutKeyboardFunc       glutKeyboardFunc
  glutDisplayFunc        glutDisplayFunc
  glutMainLoop           glutMainLoop
  glutSwapBuffers        glutSwapBuffers
  glutDestroyWindow      glutDestroyWindow
  glutMainLoop           glutMainLoop
)
Bind ogl32
(
  glClearColor   glClearColor
  glBegin        glBegin
  glEnd          glEnd
  glColor3f      glColor3f
  glVertex3f     glVertex3f
  glVertex2f     glVertex2f
  glLineWidth    glLineWidth
)
StackPointer=esp
Function Key(byval pkey as long, byval x as long, byval y as long) callback 'must be byval
 k=pkey and 255
 'print hex pkey
iF k =27 Or K =32   /* Escape / Space bar */
 ExitProcess 0
End iF
End Function
Function Draw() callback
glClearColor 0.0, 0.0, 0.0, 0.0 
glBegin (GL_QUADS)
  glColor3f (1.0, 0.0, 0.0): glVertex2f ( 1.0, 1.0)
  glColor3f (0.0, 1.0, 0.0): glVertex2f (-1.0, 1.0)
  glColor3f (0.0, 0.0, 1.0): glVertex2f (-1.0,-1.0)
  glColor3f (1.0, 1.0, 1.0): glVertex2f ( 1.0,-1.0)
glEnd 
glLineWidth 2.5
glColor3f(0.5, 1.0, 0.0)
glBegin(GL_LINES)
  glVertex2f(-1.0, 0.0 )
  glVertex2f( 1.0, 0.0 )
  glVertex2f( 0.0, -1.0)
  glVertex2f( 0.0, 1.0 )
glEnd
glutSwapBuffers     
End Function
A = GLUT_DOUBLE | GLUT_RGBA   /* bad solution! */
glutInitDisplayMode (A)       /* GLUT_SINGLE | GLUT_RGBA  <--- doesn't go! - low level binding does not take expressions*/
glutInitWindowPosition 320,240
glutInitWindowSize 640,480
glutCreateWindow ("Colour")
glutDisplayFunc  &Draw ' must be a callback function
glutKeyboardFunc &Key           /* <--- compiler error! - key(..) must be a callback function */       
glutMainLoop
               
/*Attention: 
a click of the window close button [X] want not close this application! 
program is still running in the task!
*/