I looked in the Reference section, and if you look at the command "PHY GET COLLISION DATA", it says in the help file that when this command is called, THEN you can use the other collision commands like the ones you are trying to use.
Here's an example
sync on:sync rate 60
set display mode 1024,768,32
autocam off:randomize timer()
phy start:phy set continuous cd 1.0
set camera range 0.01,100000
for i = 1 to 1000
make object cube i,rnd(4)
color object i,rgb(rnd(255),rnd(255),rnd(255))
position object i,rnd(100) - rnd(100),100 + (i * 4),rnd(100) - rnd(100)
phy make rigid body dynamic box i
next i
make object box 1001,10000,10,10000
color object 1001,rgb(255,255,255)
phy make rigid body static box 1001
position camera -100,50,-100
point camera 0,0,0
do
col = phy get collision data()
if col = 1
a = phy get collision object a()
b = phy get collision object b()
endif
ink rgb(0,255,0),0
text 10,10,"Col NX for example object " + str$(a) + " against second object " + str$(b) + " = " + str$(phy get collision contact normal x(a,phy get collision count(a))) + "."
text 10,40,"Col NY for example object " + str$(a) + " against second object " + str$(b) + " = " + str$(phy get collision contact normal y(a,phy get collision count(a))) + "."
text 10,70,"Col NZ for example object " + str$(a) + " against second object " + str$(b) + " = " + str$(phy get collision contact normal z(a,phy get collision count(a))) + "."
text 10,100,"Col PX for example object " + str$(a) + " against second object " + str$(b) + " = " + str$(phy get collision contact point x(a,phy get collision count(a))) + "."
text 10,130,"Col PY for example object " + str$(a) + " against second object " + str$(b) + " = " + str$(phy get collision contact point y(a,phy get collision count(a))) + "."
text 10,160,"Col PZ for example object " + str$(a) + " against second object " + str$(b) + " = " + str$(phy get collision contact point z(a,phy get collision count(a))) + "."
phy update
sync
loop
I hope that helps.