#!/usr/bin/tclsh

package require Linuxcnc ;# must be before Hal
emc_init -quick
package require Hal
parse_ini $::env(INI_FILE_NAME)

# Check if correct kinematic is active
if {[hal getp kinstype.is-1] == "FALSE"} {
   puts "kinematic does not match! Are you calling M101 instead of M301?"
   exit 1
}

# SET INI AXIS LIMITS
hal setp ini.x.min_limit        [set ::AXIS_X(MIN_LIMIT_X_SWITCHKINS)]
hal setp ini.x.max_limit        [set ::AXIS_X(MAX_LIMIT_X_SWITCHKINS)]
hal setp ini.x.max_velocity     [set ::AXIS_X(MAX_VELOCITY_X_SWITCHKINS)]
hal setp ini.x.max_acceleration [set ::AXIS_X(MAX_ACCELERATION_X_SWITCHKINS)]

hal setp ini.v.min_limit        [set ::AXIS_V(MIN_LIMIT_V_SWITCHKINS)]
hal setp ini.v.max_limit        [set ::AXIS_V(MAX_LIMIT_V_SWITCHKINS)]
hal setp ini.v.max_velocity     [set ::AXIS_V(MAX_VELOCITY_V_SWITCHKINS)]
hal setp ini.v.max_acceleration [set ::AXIS_V(MAX_ACCELERATION_V_SWITCHKINS)]
hal setp ini.0.max_velocity     [set ::AXIS_V(MAX_VELOCITY_V_SWITCHKINS)]

# SUBROUTINE FOR LATHE WITH SEPARATE PART-OFF SLIDE. SWITCHES V-AXIS PARTING SLIDE WITH X-AXIS.
# WHEN SWITCH IS ACTIVE, PART-OFF SLIDE PROGRAMMING IS DONE WITH X-AXIS.
# SWITCH REQUIRED BECAUSE G96 CSS IS HARD-CODED ONLY TO X-AXIS IN LCNC AS OF 2.9
# PARTING TOOL LENGTH ADJUSTMENTS ARE MADE WITH G54 V-AXIS OFFSET.  NO TOOL NUMBER IS CALLED DURING PART-OFF.
# EDITED 2026-03-30 RMC.  ORIGINAL FILES IN MILLTURN EXAMPLE AVAILABLE ON LCNC GITHUB

# M101: PARTING SLIDE SWITCHED MODE
