Ok, I found these macros. They are for a Hitachi Seiki machine with a Fanuc 15MB control. Not a lot of comments, but this is what was provided by the machine tool builder.
If someone wants to wrap (ok warp) their mind around all those variables and better document it...
As I recall it is based around the O9010 set as G100 which then calls the rest as needed. It supports measuring at and angle and distance from the tool centerline for large tools. As well as a tolerance that triggers resetting the tool if it is too far off, and broken tool detection.
This was setup to use a skip function with a touch sensor.
... and I see a call for O8074, but it isn't in there. I hope that was an option we didn't have.
Code:
O8050(TOOL CHECK CONST)
#1 = #1
N1 #15 = 1 (SKIP)
N3 #27 = 1/#9 (TOLERANCE)
N4 #12 = 2500/#9 (ROUGH TOUCH FEED)
N5 #14 = 1/#9 (ROUGH TOUCH BACK)
N6 #29 = #511 (SENSOR POS.X)
N7 #30 = #512 (SENSOR POS.Y)
N8 #32 = #509 (SENSOR POS.Z)
N9 #11 = 60/#9 (MIN SENSIBLE LENGTH)
M99
O8053(TOOL BROKEN NG)
#142 = #142-FIX[#142]
N1 M86
IF [#5 LE 1] GOTO 195
M99
N195
#3000 = 195 (TOOL BROKEN NG)
O9010(G100 V6.2 92- 2)
#2 = 4
SETVN509 (TLSENS.Z,PRINTON,TLSENS.X,TLSENS.Y)
SETVN549 (MACROALM)
IF [#4 EQ #0] GOTO 3
#9 = 505-24*#4006
M98 P8050
#3 = 1
IF [#20 EQ 1] GOTO 6
IF [#15 LT 1] GOTO 2
#3 = [#140 MOD #15]+1
IF [#3 EQ 1] GOTO 6
N2 IF [#142-FIX[#142] GE .08] GOTO 5
M99
N3IF [#18 LT 1] GOTO 4
G65 P9013 R509. T#18 U#21 X#24 W#23 Z#26 J195. E#8
N4 M99
N5 #3 = 0
N6 #12 = #18 GT 0
N10 #5 = #[#2]
IF [FIX[#5] NE #5] GOTO 181
IF [#5 LT 1] GOTO 181
#32 = #26
IF [#26 NE #0] GOTO 11
#32 = 10000
N11 #27 = [1-FUP[#17]]*10000
N24 IF [#12 LE 0] GOTO 25
G65 P9013 R509. T#18 U#5 Z#26 J195. V4641. E#8
#12 = #0
N25 #6 = #[#2+3-FIX[#2/31]*34]
IF [#6 GT 0] GOTO 30
#6 = #21
N30 IF [#6-FIX[#6] NE 0] GOTO 181
G65 P9013 R#27 T#5 U#6 X#24 W#23 Z#32 J1. V4641. E#8
N41 #2 = #2+3
IF [#2 GT 33] GOTO 50
IF [#[#2] NE #0] GOTO 10
N50 M41
M99
N181 M41
#3000 = 181 (G100 I NOT CORRECT)
N195
#3000 = 195 (REFERENCE TOOL NG)
O9013(G103 V6.2 92- 2)
G40 M9
#9 = 505-24*#4006
G80 G90 G0 M5
#28 = #4311
#1 = 0
IF [#22 EQ 4641] GOTO 10
IF [#18 EQ 509] GOTO 10
#1 = 1
N10 #145 = #0
WHILE [FIX[#4012-66]*FIX[#4014-66] EQ 0] DO 1
G67
END1
G53
G49 X#5041 Y#5042 Z#5043
G30 Z#5003 M19
M98 P9180
IF [#7 EQ #0] GOTO 11
T#7
N11 IF [#5 NE #0] GOTO 35
M99
N35 IF [FIX[#5] NE #5] GOTO 181
IF [#20 NE #0] GOTO 38
#6 = #28
N38 IF [#6 GE 1] GOTO 39
#6 = #4400
N39 IF [#6 LT 1] GOTO 187
#2 = 0
N36 M98 P8050
M74
G53 G90 G0 X[#29+#24] Y[#30+#23]
IF [#26 EQ #0] GOTO 37
#27 = #26
N37 #145 = #0
#549 = 0
G53
#31 = #5043
#15 = #5043-#5023+#32+#11
IF [[#18-10000]*[#18-509] EQ 0] GOTO 40
#15 = #5043-#5023+#32+#[2000+8000*[#6 GT 200]+#6]+#[[2200+8800*[#6 GT 200]+#6]*#514*[#6 GE 1]]-6/#9
N40 #19 = #5023-#5043
M40
#3004 = 2
G31 Z#15 F#12
IF [ABS[#5063-#31] LT #14] GOTO 198
G1Z[#5063+#14]F[1000/#9]
IF [ABS[#5063-#15] LT .01/#9] GOTO 191
#16 = #5063-1/#9
#3 = 1
WHILE [#3 LE 4] DO 1
G53
#17 = #5043
G31 Z#16 F[200/#9]
IF [ABS[#5063-#17] LT .05/#9] GOTO 199
G1 Z[#5063+1./#9] F[400/#9]
#141 = ABS[#31-#5063]
IF [#141 LE #27*#1/10] GOTO 41
IF [#141 LE .02005/#9] GOTO 41
#31 = #5063
#3 = #3+1
END1
#145 = #145 OR 1
N41 G1 Z[[#31+#5063]/2+10/#9] F[2000/#9]
#3004 = 0
#10= FUP[#9/2.5]*1000
#31 = [#31+#5063]/2
#144 = #19+#31-#509
#144 = ROUND[#144*#10]/#10
IF [#141 LE #27*#1/5] GOTO 411
IF [#141 GT .03/#9] GOTO 192
N411 IF [ABS[#144-#[2000+8000*[#6 GT 200]+#6]-#[[2200+8800*[#6 GT 200]+#6]*#514*[#6 GE 1]]] LE #27+.000005] GOTO 43
#145 = #145 OR 2
N43 IF [#145 LE 0] GOTO 44
#2 = #2+1
IF [#2 LT 2] GOTO 36
IF [#145 GE 2] GOTO 90
N44 G90 G30 Z#5003
IF [#18 NE 10000] GOTO 45
#[2000+8000*[#6GT200]+#6] = #144
IF [#514 LT 1] GOTO 46
#[2200+8800*[#6GT200]+#6] = 0
GOTO 46
N45 IF [#18 NE 509] GOTO 46
#509 = #19+#31-#[2000+8000*[#6 GT 200]+#6]-#[[2200+8800*[#6 GT 200]+#6]*#514*[#6 GE 1]]
#509 = ROUND[#509*#10]/#10
#144 = #[2000+8000*[#6 GT 200]+#6]
N46#4=41
IF [#22 EQ 4641] THEN #4 = #0
G30 X#5001 Y#5002 M#4
G49
IF [#8 LE 0] GOTO 60
M98 P8074
N60 M99
N191 #3004 = 0
#144 = 0
#145 = 191
IF [[#18-10000]*[#18-509] EQ 0] GOTO 291
N90 IF [#145 EQ 3] GOTO 192
#549 = 195
G90 G30 Z#5003
G30 X#5001 Y#5002 M41
IF [#8 LE 0] GOTO 91
M98 P8074
N91 M98 P8053
M99 P#5
N291 #549 = 191
G30 Z#5003
M41
#3000 = 191 (TOUCH SIGNAL NOT RECEIVED)
N192 #549 = 192
G30 Z#5003
M41
#3000 = 192 (TOOL LENGTH SENSOR ERROR)
N198 #3004 = 0
#549 = 198
G30 Z#5003
M41
#3000 = 198 (G100/G103 TOUCH SIGNAL ON)
N199 #3004 = 0
#549 = 199
G30 Z#5003
M41
#3000 = 199 (G100/G103 SENSOR BROKEN)
N181
#3000 = 181 (G103 J NOT CORRECT)
N187
#3000 = 187 (H CODE NOT FOUND)
O9015 (G105 WORK COUNT)
#140 = #140+1
M99
O9180(TOOL CALL)
#6 = #20
#7 = #21
IF [#20 EQ #0] GOTO 13
IF [0+#20 EQ 0] GOTO 3
N8 IF [#6 LT 1] GOTO 183
GOTO 3
N13 IF [#5 NE #0] GOTO 15
N3 G30 X#5001 Y#5002
IF [#6 EQ #0] GOTO 15
T#6 M6
#149 = #6
N15 IF [#21 EQ #0] GOTO 19
IF [#21 EQ 0] GOTO 19
IF [#21 EQ #20] GOTO 20
N18 IF [#7 LT 1] GOTO 183
GOTO 19
N20 #7 = #0
N19 M99
N183
#3000 = 183 (TOOL NO. NOT FOUND)
%