DM2 objects are created laying down and (I know this is going to shock you) set camera to object orientation is bugged
Try this code instead.
rem make character
load object "knight.X", 1
sync on : sync rate 0
rem Standard conversion for DM2 object use
xrotate object 1,270
fix object pivot 1
`make it easy to see the player turning and moving
make matrix 1, 1000, 1000, 50, 50
`place player near the center of the matrix
position object 1, 500, 5, 500
do
`player movement and turning
if upkey() = 1 then move object 1, 1
if downkey() = 1 then move object 1, -1
if leftkey() = 1 then yrotate object 1, object angle y(1) - 1
if rightkey() = 1 then yrotate object 1, object angle y(1) + 1
`store player posuition
objx# = object position x(1)
objy# = object position y(1)
objz# = object position z(1)
`place the camera at the players position and face it the same angles it faces
position camera objx#, objy#, objz#
`set camera to object orientation 1
rotate camera object angle x(1), object angle y(1), object angle z(1)
`move camera straight up
xrotate camera 90
move camera -70
`set camera back to players angles and move it behind him
`set camera to object orientation 1
rotate camera object angle x(1), object angle y(1), object angle z(1)
move camera -30
`draw changes
sync
loop