I have had no luck getting homing to work on my machine, so I've decided to write a macro that should do what I want. This macro should set the DRO of X axis to zero if the switch wired to input#1 is tripped, and then reverse away from it. Not tested yet, as I'm not near the machine.
If IsActive(INPUT1) Then 'if switch is triggered
   DoOemButton (250)     'stop X axis
   Code "G92 X0"            'zero X axis
   Code "G00 X10"          'move away from switch
   While IsMoving()
   Wend
End If
This should allow me to zero from my Gcode program. 
Can I call this macro when needed by using an M command in the Gcode? Would it switch off after it has returned to the main Gcode?
The problem is, I only need this to happen once in each file, but if the macro is constantly running in the background checking the input, it will use a lot of processor power; not good.