Complete project organization: move all DOS files to projects/dataforth-dos, create client folders, update Claude config
This commit is contained in:
289
projects/dataforth-dos/documentation/DOS_FIX_SUMMARY.md
Normal file
289
projects/dataforth-dos/documentation/DOS_FIX_SUMMARY.md
Normal file
@@ -0,0 +1,289 @@
|
||||
# DOS 6.22 UPDATE.BAT Fix - Executive Summary
|
||||
|
||||
## Problem
|
||||
|
||||
UPDATE.BAT failed on TS-4R Dataforth test machine:
|
||||
1. Could not identify machine name automatically
|
||||
2. Reported "T: not available" even though T: drive was accessible
|
||||
|
||||
## Root Causes
|
||||
|
||||
### Issue 1: Machine Name Detection
|
||||
- **Problem:** UPDATE.BAT tried to use %COMPUTERNAME% environment variable
|
||||
- **Cause:** DOS 6.22 does NOT set %COMPUTERNAME% (Windows 95+ feature only)
|
||||
- **Fix:** Use %MACHINE% variable set in AUTOEXEC.BAT instead
|
||||
|
||||
### Issue 2: T: Drive Detection
|
||||
- **Problem:** Batch script checked wrong condition for drive existence
|
||||
- **Likely causes:**
|
||||
- Used `IF "%TDRIVE%"==""` (checks variable, not drive)
|
||||
- Or used `IF EXIST T:\` (unreliable in DOS 6.22)
|
||||
- **Fix:** Use proper DOS 6.22 drive test: `T: 2>NUL` and `IF EXIST T:\NUL`
|
||||
|
||||
### Issue 3: DOS 6.22 Limitations
|
||||
- No `IF /I` (case-insensitive) - requires checking both cases
|
||||
- No `%ERRORLEVEL%` variable - must use `IF ERRORLEVEL n` syntax
|
||||
- No `||` or `&&` operators - must use GOTO for flow control
|
||||
- 8.3 filenames only
|
||||
|
||||
## Solution
|
||||
|
||||
Created three fixed batch files:
|
||||
|
||||
### 1. UPDATE.BAT (D:\ClaudeTools\UPDATE.BAT)
|
||||
**Fixed backup script with:**
|
||||
- Machine name from %MACHINE% environment variable OR command-line parameter
|
||||
- Proper T: drive detection using `T: 2>NUL` test
|
||||
- Comprehensive error handling with visible messages
|
||||
- Compact console output (errors pause, success doesn't)
|
||||
- XCOPY with optimal flags for incremental backup
|
||||
|
||||
**Usage:**
|
||||
```
|
||||
UPDATE REM Use MACHINE variable from AUTOEXEC.BAT
|
||||
UPDATE TS-4R REM Override with manual machine name
|
||||
```
|
||||
|
||||
### 2. AUTOEXEC.BAT (D:\ClaudeTools\AUTOEXEC.BAT)
|
||||
**Updated startup script with:**
|
||||
- `SET MACHINE=TS-4R` for automatic machine identification
|
||||
- Call to STARTNET.BAT for network initialization
|
||||
- Optional automatic backup on boot (commented out by default)
|
||||
- Network drive status display
|
||||
- Error handling if network fails
|
||||
|
||||
**Customize for each machine:**
|
||||
```
|
||||
SET MACHINE=TS-4R REM Change to TS-7A, TS-12B, etc.
|
||||
```
|
||||
|
||||
### 3. STARTNET.BAT (D:\ClaudeTools\STARTNET.BAT)
|
||||
**Network initialization with:**
|
||||
- Start Microsoft Network Client
|
||||
- Map T: to \\D2TESTNAS\test
|
||||
- Map X: to \\D2TESTNAS\datasheets
|
||||
- Error messages for each failure point
|
||||
|
||||
## Files Created
|
||||
|
||||
| File | Purpose | Location |
|
||||
|------|---------|----------|
|
||||
| UPDATE.BAT | Fixed backup script | Deploy to C:\BATCH\ |
|
||||
| AUTOEXEC.BAT | Updated startup script | Deploy to C:\ |
|
||||
| STARTNET.BAT | Network initialization | Deploy to C:\NET\ |
|
||||
| DOS_BATCH_ANALYSIS.md | Technical analysis | Reference only |
|
||||
| DOS_DEPLOYMENT_GUIDE.md | Complete deployment guide | Reference only |
|
||||
| DOS_FIX_SUMMARY.md | This summary | Reference only |
|
||||
|
||||
## Deployment (Quick Version)
|
||||
|
||||
### Step 1: Backup existing files
|
||||
```
|
||||
MD C:\BACKUP
|
||||
COPY C:\AUTOEXEC.BAT C:\BACKUP\AUTOEXEC.OLD
|
||||
COPY C:\NET\STARTNET.BAT C:\BACKUP\STARTNET.OLD
|
||||
```
|
||||
|
||||
### Step 2: Copy new files to DOS machine
|
||||
- Copy UPDATE.BAT to C:\BATCH\
|
||||
- Copy AUTOEXEC.BAT to C:\
|
||||
- Copy STARTNET.BAT to C:\NET\
|
||||
|
||||
### Step 3: Edit AUTOEXEC.BAT for this machine
|
||||
```
|
||||
EDIT C:\AUTOEXEC.BAT
|
||||
REM Change: SET MACHINE=TS-4R
|
||||
REM to match actual machine name
|
||||
```
|
||||
|
||||
### Step 4: Create required directory
|
||||
```
|
||||
MD C:\BATCH
|
||||
```
|
||||
|
||||
### Step 5: Reboot and test
|
||||
```
|
||||
REBOOT
|
||||
```
|
||||
|
||||
### Step 6: Test UPDATE.BAT
|
||||
```
|
||||
UPDATE
|
||||
```
|
||||
|
||||
## Expected Boot Sequence
|
||||
|
||||
With fixed files, boot should show:
|
||||
|
||||
```
|
||||
==============================================================
|
||||
Dataforth Test Machine: TS-4R
|
||||
DOS 6.22 with Network Client
|
||||
==============================================================
|
||||
|
||||
Starting network client...
|
||||
|
||||
[OK] Network client started
|
||||
[OK] T: mapped to \\D2TESTNAS\test
|
||||
[OK] X: mapped to \\D2TESTNAS\datasheets
|
||||
|
||||
Network Drives:
|
||||
T: = \\D2TESTNAS\test
|
||||
X: = \\D2TESTNAS\datasheets
|
||||
|
||||
System ready.
|
||||
|
||||
Commands:
|
||||
UPDATE - Backup C: to T:\TS-4R\BACKUP
|
||||
CTONW - Copy files C: to network
|
||||
NWTOC - Copy files network to C:
|
||||
|
||||
C:\>
|
||||
```
|
||||
|
||||
## Expected UPDATE.BAT Output
|
||||
|
||||
```
|
||||
C:\>UPDATE
|
||||
|
||||
Checking network drive T:...
|
||||
[OK] T: drive accessible
|
||||
|
||||
==============================================================
|
||||
Backup: Machine TS-4R
|
||||
==============================================================
|
||||
Source: C:\
|
||||
Target: T:\TS-4R\BACKUP
|
||||
|
||||
[OK] Backup directory ready
|
||||
|
||||
Starting backup...
|
||||
This may take several minutes depending on file count.
|
||||
|
||||
[OK] Backup completed successfully
|
||||
|
||||
Files backed up to: T:\TS-4R\BACKUP
|
||||
|
||||
C:\>
|
||||
```
|
||||
|
||||
## Key Improvements
|
||||
|
||||
1. **Machine detection now works:**
|
||||
- Uses %MACHINE% environment variable (set in AUTOEXEC.BAT)
|
||||
- Falls back to command-line parameter if variable not set
|
||||
- Clear error message if both missing
|
||||
|
||||
2. **T: drive detection fixed:**
|
||||
- Actually tests if drive exists (not just variable)
|
||||
- Uses DOS 6.22 compatible method
|
||||
- Clear error with troubleshooting steps if unavailable
|
||||
|
||||
3. **Console output improved:**
|
||||
- Compact status messages
|
||||
- Errors pause automatically (PAUSE command)
|
||||
- Success messages don't require keypress
|
||||
- No |MORE pipes (cause issues in batch files)
|
||||
|
||||
4. **Error handling comprehensive:**
|
||||
- Each failure point has specific error message
|
||||
- Suggests troubleshooting steps
|
||||
- ERRORLEVEL checked for all critical operations
|
||||
|
||||
5. **Automatic backup option:**
|
||||
- Can enable in AUTOEXEC.BAT (3 lines to uncomment)
|
||||
- Runs silently if successful
|
||||
- Pauses on error so messages visible
|
||||
|
||||
## Testing Checklist
|
||||
|
||||
- [ ] MACHINE variable set after boot (`SET` command shows it)
|
||||
- [ ] T: drive accessible (`T:` and `DIR` work)
|
||||
- [ ] X: drive accessible (`X:` and `DIR` work)
|
||||
- [ ] UPDATE without parameter works (uses %MACHINE%)
|
||||
- [ ] UPDATE TS-4R with parameter works (overrides %MACHINE%)
|
||||
- [ ] Backup creates T:\TS-4R\BACKUP directory
|
||||
- [ ] Files copied to network successfully
|
||||
- [ ] Error message if network disconnected (unplug cable test)
|
||||
- [ ] Error message if T: unmapped (NET USE T: /DELETE test)
|
||||
|
||||
## Troubleshooting Quick Reference
|
||||
|
||||
**MACHINE variable not set:**
|
||||
- Check AUTOEXEC.BAT has `SET MACHINE=TS-4R`
|
||||
- Verify AUTOEXEC.BAT runs at boot
|
||||
- Check CONFIG.SYS has `SHELL=C:\DOS\COMMAND.COM C:\DOS\ /P /E:1024`
|
||||
|
||||
**T: drive not accessible:**
|
||||
- Run `C:\NET\STARTNET.BAT` manually
|
||||
- Check network cable connected
|
||||
- Verify NAS server online from another machine
|
||||
- Test `NET VIEW \\D2TESTNAS`
|
||||
|
||||
**UPDATE.BAT not found:**
|
||||
- Check file exists: `DIR C:\BATCH\UPDATE.BAT`
|
||||
- Add to PATH: `SET PATH=C:\DOS;C:\NET;C:\BATCH;C:\`
|
||||
- Or run with full path: `C:\BATCH\UPDATE.BAT`
|
||||
|
||||
## For Complete Details
|
||||
|
||||
See:
|
||||
- **DOS_DEPLOYMENT_GUIDE.md** - Full deployment and testing procedures
|
||||
- **DOS_BATCH_ANALYSIS.md** - Technical analysis of issues and solutions
|
||||
|
||||
## DOS 6.22 Boot Sequence Reference
|
||||
|
||||
```
|
||||
1. BIOS POST
|
||||
2. Load DOS kernel
|
||||
- IO.SYS
|
||||
- MSDOS.SYS
|
||||
- COMMAND.COM
|
||||
3. Process CONFIG.SYS
|
||||
- DEVICE=C:\NET\PROTMAN.DOS
|
||||
- DEVICE=C:\NET\NE2000.DOS (or other NIC driver)
|
||||
- DEVICE=C:\NET\NETBEUI.DOS
|
||||
4. Process AUTOEXEC.BAT
|
||||
- SET MACHINE=TS-4R
|
||||
- SET PATH=C:\DOS;C:\NET;C:\BATCH
|
||||
- CALL C:\NET\STARTNET.BAT
|
||||
5. STARTNET.BAT runs
|
||||
- NET START
|
||||
- NET USE T: \\D2TESTNAS\test
|
||||
- NET USE X: \\D2TESTNAS\datasheets
|
||||
6. (Optional) CALL C:\BATCH\UPDATE.BAT
|
||||
7. DOS prompt ready
|
||||
```
|
||||
|
||||
## Why Manual XCOPY Worked
|
||||
|
||||
The user's manual command worked:
|
||||
```
|
||||
XCOPY /S C:\*.* T:\TS-4R\BACKUP
|
||||
```
|
||||
|
||||
Because:
|
||||
1. User ran it AFTER network was started (T: already mapped)
|
||||
2. User manually typed machine name (TS-4R)
|
||||
3. Command was simple (no error checking needed)
|
||||
|
||||
UPDATE.BAT failed because:
|
||||
1. Tried to detect machine name automatically (failed - no %COMPUTERNAME% in DOS)
|
||||
2. Tried to check if T: available (used wrong method)
|
||||
3. Had complex error handling that itself had bugs
|
||||
|
||||
The fixed version:
|
||||
1. Uses %MACHINE% from AUTOEXEC.BAT (set at boot)
|
||||
2. Actually tests T: drive properly (DOS 6.22 compatible method)
|
||||
3. Has simple, working error handling
|
||||
|
||||
## Version History
|
||||
|
||||
- **Version 1.0** (Original) - Failed with machine detection and drive check
|
||||
- **Version 2.0** (2026-01-19) - Fixed for DOS 6.22 compatibility
|
||||
|
||||
## Contact
|
||||
|
||||
Files created by Claude (Anthropic)
|
||||
For Dataforth test machine maintenance
|
||||
Date: 2026-01-19
|
||||
Reference in New Issue
Block a user