OK here is another way that is very close. This way the param values remain modal until you change them . You just have to add the M81 to each drill point.
HUM, BUT there is a "BUG" in MACH that prevents us from using this approach. When Mach see the empty Q parameter call it should call "null" BUT instead it calls -1. The P and R work as they are suppose to. THat puts a monkey wrench in the works, Close but no cigar again.
G0X0Y0
M81 X1.000 Y1.000 P-1.000 Q0.010 R.500 F5 S1000
M81 X2.000 Y2.000
M81 X3.000 Y3.000
M81 X4.000 Y4.000
M81 X5.000 Y5.000 P-1.5
M81 X6.000 Y6.000 Q.1 R1.000 F4 S500
M81 X7.000 Y7.000
M81 X8.000 Y8.000
The Mcode M81 code is this:
'M81 , Macro for G81 function
SetVar(300,(Param1))
Sleep(10)
Setvar(301,(Param2))
Sleep(10)
SetVar(302,(Param3))
Sleep(10)
ActivateSignal(output3)
Sleep(1000)
Code"G0 Z#301"
While Ismoving()
Sleep(20)
Wend
Code"G1 Z#300"
While Ismoving
Sleep(20)
Wend
Code"G0 Z#302"
While Ismoving
Sleep(20)
Wend
DeactivateSignal(output3)
Sleep(1000)
End