#!/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-0] == "FALSE"} {
   puts "kinematic does not match! Are you calling M100 instead of M300?"
   exit 1
}

# RESTORE INI axis limits
hal setp ini.x.min_limit        [set ::AXIS_X(MIN_LIMIT)]
hal setp ini.x.max_limit        [set ::AXIS_X(MAX_LIMIT)]
hal setp ini.x.max_velocity     [set ::AXIS_X(MAX_VELOCITY)]
hal setp ini.x.max_acceleration [set ::AXIS_X(MAX_ACCELERATION)]
hal setp ini.0.max_velocity     [set ::JOINT_0(MAX_VELOCITY)]

hal setp ini.v.min_limit        [set ::AXIS_V(MIN_LIMIT)]
hal setp ini.v.max_limit        [set ::AXIS_V(MAX_LIMIT)]
hal setp ini.v.max_velocity     [set ::AXIS_V(MAX_VELOCITY)]
hal setp ini.v.max_acceleration [set ::AXIS_V(MAX_ACCELERATION)]

# 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.
# EDITED 2026-03-30 RMC.  ORIGINAL FILES IN MILLTURN EXAMPLE AVAILABLE ON LCNC GITHUB

# M100: PARTING SLIDE NORMAL MODE