You could always try this code, It works using an object at ground level, though you might have to change start position and also the bsp map.
Rem Project: BSP check
Rem Created: 20/10/2002 17:40:11
Rem ***** Main Source File *****
sync on : sync rate 60 : hide mouse
rem setup camera
set camera range 0.1,50000
position camera 0, 8, 0
rem setup guide object
make object cube 1, 0.1
position object 1, 0, 8, 0
hide object 1
rem setup bsp
Text 20,20,"Loading BSP File..."
load bsp "ut_dam.pk3","maps/ut_dam.bsp"
set bsp object collision 1, 1, 0.5, 0
set bsp object Collision radius 1, 1, 0.4, 1.3, 0.4
set bsp collision threshhold 1, 0.0
rem main loop
do
rem mouselook
yrotate camera 0, camera angle y(0)+ mousemovex()
xrotate camera 0, camera angle x(0)+ mousemovey()
yrotate object 1, camera angle y(0)
rem control movement
SF#=(60.0/screen fps())
if upkey()=1 then move object 1, 0.3*SF#
if downkey()=1 then move object 1, -0.2*SF#
if leftkey()=1 then move object left 1, 0.15*SF#
if rightkey()=1 then move object right 1, 0.15*SF#
if mouseclick()=1 then m#=-0.4 else m#=0.2
height#=1.5
position object 1, object position x(1), object position y(1)-m#, object position z(1)
position camera 0, object position x(1), object position y(1)+height#, object position z(1)
text 10, 10, "FPS "+str$(screen fps())
sync
loop
Specs:- 1GHZ athlon, Radeon8500, 192mb ram, winxp