feat(dataforth-dos): Add DOS 6.22 Coding Agent and fix all batch files
DOS 6.22 Coding Agent (.claude/agents/dos-coding.md): - 18 documented compatibility rules - Validation checklist for all DOS batch files - Known working constructs reference - Error message troubleshooting guide Batch file fixes for DOS 6.22 compatibility: - CTONW.BAT v3.2: Removed %DATE%/%TIME%, square brackets - ATESYNC.BAT v1.1: Removed square brackets, ERRORLEVEL checks - CHECKUPD.BAT v1.4: Removed CALL :label subroutines, square brackets - UPDATE.BAT v2.4: Removed square brackets, fixed NUL directory checks - DOSTEST.BAT v1.2: Removed 2>NUL, square brackets, NUL checks Key DOS 6.22 incompatibilities fixed: - CALL :label (Windows NT+ only) - %DATE% and %TIME% variables (don't exist) - Square brackets in ECHO (cause errors) - 2>NUL stderr redirect (not supported) - IF NOT EXIST path\NUL (unreliable) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,143 +1,77 @@
|
||||
@ECHO OFF
|
||||
REM CHECKUPD.BAT - Check for available updates without applying them
|
||||
REM Quick status check to see if network has newer files
|
||||
REM
|
||||
REM Usage: CHECKUPD
|
||||
REM
|
||||
REM Checks these sources:
|
||||
REM T:\COMMON\ProdSW\*.bat
|
||||
REM T:\%MACHINE%\ProdSW\*.*
|
||||
REM T:\COMMON\DOS\*.NEW
|
||||
REM
|
||||
REM Version: 1.3 - Removed %~nx1 syntax for DOS 6.22 compatibility
|
||||
REM Last modified: 2026-01-20
|
||||
REM Version: 1.4 - DOS 6.22 compatible (removed CALL :label subroutines)
|
||||
REM Last modified: 2026-01-21
|
||||
|
||||
REM ==================================================================
|
||||
REM STEP 1: Verify machine name is set
|
||||
REM ==================================================================
|
||||
IF "%MACHINE%"=="" GOTO NO_MACHINE
|
||||
|
||||
IF NOT "%MACHINE%"=="" GOTO CHECK_DRIVE
|
||||
|
||||
:NO_MACHINE
|
||||
ECHO.
|
||||
ECHO [ERROR] MACHINE variable not set
|
||||
ECHO.
|
||||
ECHO Set MACHINE in AUTOEXEC.BAT:
|
||||
ECHO SET MACHINE=TS-4R
|
||||
ECHO.
|
||||
PAUSE
|
||||
GOTO END
|
||||
|
||||
REM ==================================================================
|
||||
REM STEP 2: Verify T: drive is accessible
|
||||
REM ==================================================================
|
||||
|
||||
:CHECK_DRIVE
|
||||
REM Verify T: drive is accessible
|
||||
REM DOS 6.22: Direct file test is most reliable
|
||||
REM Verify T: drive
|
||||
IF NOT EXIST T:\*.* GOTO NO_T_DRIVE
|
||||
GOTO START_CHECK
|
||||
|
||||
:NO_T_DRIVE
|
||||
C:
|
||||
ECHO.
|
||||
ECHO [ERROR] T: drive not available
|
||||
ECHO.
|
||||
ECHO Run: C:\STARTNET.BAT
|
||||
ECHO.
|
||||
PAUSE
|
||||
GOTO END
|
||||
|
||||
REM ==================================================================
|
||||
REM STEP 3: Display check banner
|
||||
REM ==================================================================
|
||||
|
||||
:START_CHECK
|
||||
ECHO.
|
||||
ECHO ==============================================================
|
||||
ECHO Update Check: %MACHINE%
|
||||
ECHO ==============================================================
|
||||
ECHO.
|
||||
|
||||
REM Initialize flags (no counters - not critical for functionality)
|
||||
REM Initialize flags
|
||||
SET COMMON=
|
||||
SET MACHINEFILES=
|
||||
SET SYSFILE=
|
||||
|
||||
REM ==================================================================
|
||||
REM STEP 4: Check COMMON batch files
|
||||
REM ==================================================================
|
||||
REM Check COMMON batch files
|
||||
ECHO (1/3) Checking T:\COMMON\ProdSW for batch file updates...
|
||||
|
||||
ECHO [1/3] Checking T:\COMMON\ProdSW for batch file updates...
|
||||
IF NOT EXIST T:\COMMON\ProdSW\*.* GOTO NO_COMMON
|
||||
|
||||
IF NOT EXIST T:\COMMON\ProdSW\NUL GOTO NO_COMMON
|
||||
|
||||
REM Check for files on network
|
||||
FOR %%F IN (T:\COMMON\ProdSW\*.BAT) DO CALL :CHECK_COMMON_FILE %%F
|
||||
|
||||
IF "%COMMON%"=="" ECHO [OK] No updates in COMMON
|
||||
IF NOT "%COMMON%"=="" ECHO [FOUND] Updates available in COMMON
|
||||
IF EXIST T:\COMMON\ProdSW\*.BAT SET COMMON=FOUND
|
||||
IF "%COMMON%"=="" ECHO No updates in COMMON
|
||||
IF NOT "%COMMON%"=="" ECHO Updates available in COMMON
|
||||
|
||||
ECHO.
|
||||
GOTO CHECK_MACHINE
|
||||
|
||||
:NO_COMMON
|
||||
ECHO [SKIP] T:\COMMON\ProdSW not found
|
||||
ECHO T:\COMMON\ProdSW not found
|
||||
ECHO.
|
||||
|
||||
REM ==================================================================
|
||||
REM STEP 5: Check machine-specific files
|
||||
REM ==================================================================
|
||||
|
||||
:CHECK_MACHINE
|
||||
ECHO [2/3] Checking T:\%MACHINE%\ProdSW for machine-specific updates...
|
||||
ECHO (2/3) Checking T:\%MACHINE%\ProdSW for machine-specific updates...
|
||||
|
||||
IF NOT EXIST T:\%MACHINE%\ProdSW\NUL GOTO NO_MACHINE_DIR
|
||||
IF NOT EXIST T:\%MACHINE%\ProdSW\*.* GOTO NO_MACHINE_DIR
|
||||
|
||||
REM Check for any files (BAT, EXE, DAT)
|
||||
FOR %%F IN (T:\%MACHINE%\ProdSW\*.*) DO CALL :COUNT_FILE
|
||||
|
||||
IF "%MACHINEFILES%"=="" ECHO [OK] No updates for %MACHINE%
|
||||
IF NOT "%MACHINEFILES%"=="" ECHO [FOUND] Updates available for %MACHINE%
|
||||
IF EXIST T:\%MACHINE%\ProdSW\*.* SET MACHINEFILES=FOUND
|
||||
IF "%MACHINEFILES%"=="" ECHO No updates for %MACHINE%
|
||||
IF NOT "%MACHINEFILES%"=="" ECHO Updates available for %MACHINE%
|
||||
|
||||
ECHO.
|
||||
GOTO CHECK_SYSTEM
|
||||
|
||||
:NO_MACHINE_DIR
|
||||
ECHO [SKIP] T:\%MACHINE%\ProdSW not found
|
||||
ECHO T:\%MACHINE%\ProdSW not found
|
||||
ECHO.
|
||||
|
||||
REM ==================================================================
|
||||
REM STEP 6: Check system file updates
|
||||
REM ==================================================================
|
||||
|
||||
:CHECK_SYSTEM
|
||||
ECHO [3/3] Checking T:\COMMON\DOS for system file updates...
|
||||
ECHO (3/3) Checking T:\COMMON\DOS for system file updates...
|
||||
|
||||
IF NOT EXIST T:\COMMON\DOS\NUL GOTO NO_DOS_DIR
|
||||
IF NOT EXIST T:\COMMON\DOS\*.* GOTO NO_DOS_DIR
|
||||
|
||||
REM Check for .NEW files
|
||||
IF EXIST T:\COMMON\DOS\AUTOEXEC.NEW SET SYSFILE=FOUND
|
||||
IF EXIST T:\COMMON\DOS\AUTOEXEC.NEW ECHO [FOUND] AUTOEXEC.NEW (system reboot required)
|
||||
IF EXIST T:\COMMON\DOS\AUTOEXEC.NEW ECHO AUTOEXEC.NEW found (reboot required)
|
||||
|
||||
IF EXIST T:\COMMON\DOS\CONFIG.NEW SET SYSFILE=FOUND
|
||||
IF EXIST T:\COMMON\DOS\CONFIG.NEW ECHO [FOUND] CONFIG.NEW (system reboot required)
|
||||
IF EXIST T:\COMMON\DOS\CONFIG.NEW ECHO CONFIG.NEW found (reboot required)
|
||||
|
||||
IF "%SYSFILE%"=="" ECHO [OK] No system file updates
|
||||
IF "%SYSFILE%"=="" ECHO No system file updates
|
||||
|
||||
ECHO.
|
||||
GOTO SHOW_SUMMARY
|
||||
|
||||
:NO_DOS_DIR
|
||||
ECHO [SKIP] T:\COMMON\DOS not found
|
||||
ECHO T:\COMMON\DOS not found
|
||||
ECHO.
|
||||
|
||||
REM ==================================================================
|
||||
REM STEP 7: Show summary and recommendations
|
||||
REM ==================================================================
|
||||
|
||||
:SHOW_SUMMARY
|
||||
REM Determine if any updates found
|
||||
SET HASUPDATES=
|
||||
IF NOT "%COMMON%"=="" SET HASUPDATES=YES
|
||||
IF NOT "%MACHINEFILES%"=="" SET HASUPDATES=YES
|
||||
@@ -147,59 +81,46 @@ ECHO ==============================================================
|
||||
ECHO Update Summary
|
||||
ECHO ==============================================================
|
||||
ECHO.
|
||||
ECHO Available updates:
|
||||
IF NOT "%COMMON%"=="" ECHO [FOUND] Common batch files
|
||||
IF "%COMMON%"=="" ECHO [OK] Common batch files
|
||||
IF NOT "%MACHINEFILES%"=="" ECHO [FOUND] Machine-specific files
|
||||
IF "%MACHINEFILES%"=="" ECHO [OK] Machine-specific files
|
||||
IF NOT "%SYSFILE%"=="" ECHO [FOUND] System files
|
||||
IF "%SYSFILE%"=="" ECHO [OK] System files
|
||||
IF NOT "%COMMON%"=="" ECHO FOUND: Common batch files
|
||||
IF "%COMMON%"=="" ECHO OK: Common batch files
|
||||
IF NOT "%MACHINEFILES%"=="" ECHO FOUND: Machine-specific files
|
||||
IF "%MACHINEFILES%"=="" ECHO OK: Machine-specific files
|
||||
IF NOT "%SYSFILE%"=="" ECHO FOUND: System files
|
||||
IF "%SYSFILE%"=="" ECHO OK: System files
|
||||
ECHO.
|
||||
|
||||
REM Provide recommendation
|
||||
IF "%HASUPDATES%"=="" GOTO NO_UPDATES_AVAILABLE
|
||||
|
||||
ECHO Recommendation:
|
||||
ECHO Run NWTOC to download and install updates
|
||||
ECHO Recommendation: Run NWTOC to install updates
|
||||
ECHO.
|
||||
IF NOT "%SYSFILE%"=="" ECHO [WARNING] System file updates will require reboot
|
||||
IF NOT "%SYSFILE%"=="" ECHO WARNING: System file updates require reboot
|
||||
IF NOT "%SYSFILE%"=="" ECHO.
|
||||
|
||||
GOTO END
|
||||
GOTO CLEANUP
|
||||
|
||||
:NO_UPDATES_AVAILABLE
|
||||
ECHO Status: All files are up to date
|
||||
ECHO.
|
||||
GOTO CLEANUP
|
||||
|
||||
GOTO END
|
||||
:NO_MACHINE
|
||||
ECHO.
|
||||
ECHO ERROR: MACHINE variable not set
|
||||
ECHO Set MACHINE in AUTOEXEC.BAT: SET MACHINE=TS-4R
|
||||
ECHO.
|
||||
PAUSE
|
||||
GOTO CLEANUP
|
||||
|
||||
REM ==================================================================
|
||||
REM HELPER SUBROUTINES
|
||||
REM ==================================================================
|
||||
:NO_T_DRIVE
|
||||
ECHO.
|
||||
ECHO ERROR: T: drive not available
|
||||
ECHO Run: C:\STARTNET.BAT
|
||||
ECHO.
|
||||
PAUSE
|
||||
GOTO CLEANUP
|
||||
|
||||
:CHECK_COMMON_FILE
|
||||
REM Flag that network files exist (DOS 6.22 cannot extract filename from path)
|
||||
REM Simply mark updates as available if any network file is found
|
||||
SET COMMON=FOUND
|
||||
GOTO END_SUBROUTINE
|
||||
|
||||
:COUNT_FILE
|
||||
REM Flag that machine-specific files exist
|
||||
SET MACHINEFILES=FOUND
|
||||
GOTO END_SUBROUTINE
|
||||
|
||||
:END_SUBROUTINE
|
||||
REM Return point for all subroutines (replaces :EOF)
|
||||
|
||||
REM ==================================================================
|
||||
REM CLEANUP AND EXIT
|
||||
REM ==================================================================
|
||||
|
||||
:END
|
||||
REM Clean up environment variables
|
||||
:CLEANUP
|
||||
SET COMMON=
|
||||
SET MACHINEFILES=
|
||||
SET SYSFILE=
|
||||
SET HASUPDATES=
|
||||
SET NETFILE=
|
||||
SET FILENAME=
|
||||
|
||||
Reference in New Issue
Block a user