Try this code it shows the results of all the joystick interrogation commands.
a as integer : i as integer
do
cls 0
a = 0
text 0,a,"Joystick : "+control device name$() : inc a,15
text 0,a,"Joystick up :"+str$(JOYSTICK UP()) : inc a,15
text 0,a,"Joystick down :"+str$(Joystick down()) : inc a,15
text 0,a,"Joystick left :"+str$(Joystick left()) : inc a,15
text 0,a,"Joystick right :"+str$(Joystick right()) : inc a,15
text 0,a,"Joystick x :"+str$(Joystick x()) : inc a,15
text 0,a,"Joystick y :"+str$(Joystick y()) : inc a,15
text 0,a,"Joystick z :"+str$(Joystick z()) : inc a,15
text 0,a,"Joystick fire a :"+str$(Joystick fire a()) : inc a,15
text 0,a,"Joystick fire b :"+str$(Joystick fire b()) : inc a,15
text 0,a,"Joystick fire c :"+str$(Joystick fire c()) : inc a,15
text 0,a,"Joystick fire d :"+str$(Joystick fire d()) : inc a,15
text 0,a,"Joystick slider a :"+str$(Joystick slider a()) : inc a,15
text 0,a,"Joystick slider b :"+str$(Joystick slider b()) : inc a,15
text 0,a,"Joystick slider c :"+str$(Joystick slider c()) : inc a,15
text 0,a,"Joystick slider d :"+str$(Joystick slider d()) : inc a,15
text 0,a,"Joystick twist x :"+str$(Joystick twist x()) : inc a,15
text 0,a,"Joystick twist y :"+str$(Joystick twist y()) : inc a,15
text 0,a,"Joystick twist z :"+str$(Joystick twist z()) : inc a,15
for i = 0 to 4
text 0,a,"Joystick hat angle ("+str$(i)+") :"+str$(Joystick hat angle(i)) : inc a,15
next i
text 0,a,"Control device x :"+str$(Control device x()) : inc a,15
text 0,a,"Control device y :"+str$(Control device y()) : inc a,15
text 0,a,"Control device z :"+str$(Control device z()) : inc a,15
for i = 0 to 32
if joystick fire x(i) = 1 then text 0,a,"joystick Fire x("+str$(i)+") :"+str$(joystick fire x(i)) : inc a,15
next i
loop
As for what is up on the control pad you will just have to test it and see what changes when you press up. I don't know if there is any sort of standard between control pads.
can i scream