So it worked! I have the inverse assembler files from the disks and did a hex comparison between all common files with no differences except for a single file that couldn't be fully read. Ironically, the data for this file is missing in the middle, but the start and end match the file on the other disk, so I'm fairly sure the other copy is good. With that in mind, I feel confident about sharing what I've recovered from the disks.
I ended up using my TLA5202B as a Windows 7 machine with a normal 3.5in floppy connected to the "new" motherboard (D946GZIS) I installed with a E7300 core 2 duo (better than the old P4 Celeron D!). I used this system since it was already pulled apart and ready to go. No need for Linux, DOS, Win9x or even XP. That said, you do need an older computer that still has a floppy connector since the software needs to access the controller directly (i.e., can't be done through USB, FireWire, etc.).
It took some figuring out but hpdir and fdio (in tandem with fdrawcmd by Simon Owen) are great tools to have for reading old disks. The hpdir plugins for Total Commander make reading LIF disks on modern Windows installations trivial. That said, I still did everything via command line with hpdir and fdio as I like to see all the details of each transaction--which became very important because each disk had bad areas that did and did not affect recovering the contents of each disk!
The L1631D disk had read errors starting at record 256, but the actual files were stored between records 10 and 252 so this had no effect on recovering the stored data. Pretty lucky if you ask me.
L1631D
C:\Users\TLA\Desktop\Hpdir>hpdir -info 0:
Info: FDC sense: Windows NT/2000/XP/VISTA/Windows7 detected
Info: FDC sense: National controller detected
Info: FDC get drives: drive 0 = DS/HD 3.5" (1440k)
Info: FDC get drives: drive 1 = not installed
Info: FDC get drives: drive 2 = not installed
Info: FDC get drives: drive 3 = not installed
Info: FDC autodetect: LIF 3.5 SS/DD found.
-- Floppy drive info --
Media type: LIF 3.5 SS/DD
Media capacity: 280 bytes
Number of cylinders: 70
Number of heads: 1
Sectors per track: 16
Sector size: 256
Info: No valid cylinder/head/sector data in system record, using device data
-- File system info --
Image format: Logical Interchange Format (LIF) id=$1000 version=0
Image size: 286720 bytes
Volume label: "L1631D"
Creation date & time:
Sectors per track: 16
Number of heads or surfaces: 1
Total number of user accessable tracks: 70
Total number of user accessable records: 1120
System area starts at record #0
Directory starts at record #2
Directory size: 8 records
File area starts at record #10
Total number of system tracks: 1
Total number of usable data tracks: 69
213504 bytes of 282624 free.
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -list 0:
0:
VOLUME LABEL: L1631D
FILE NAME PRO TYPE REC/FILE BYTE/REC ADDRESS DATE TIME
COPYFILEx #fffe 28 256 10 21-Dec-84 10:24
I68000I3i #fffe 17 256 38 13-Jun-84 8:40
I68000I8i #fffe 17 256 55 13-Jun-84 8:41
I68000P3i #fffe 17 256 72 13-Jun-84 8:43
I68000P8i #fffe 17 256 89 13-Jun-84 8:45
I6800Ii #fffe 14 256 106 13-Jun-84 7:45
I6800Pi #fffe 14 256 120 13-Jun-84 7:46
I6809EPi #fffe 21 256 134 13-Jun-84 8:11
I6809Pi #fffe 21 256 155 13-Jun-84 8:15
I6809Ii #fffe 21 256 176
I68008Ii #fffe 18 256 197
I68008Pi #fffe 17 256 215
SATCOM1c #fffe 21 256 232
213504 of 282624 bytes free.
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -dup 0: L1631D.hpi
Warning: Read error at record 256 (ignored)
Warning: Read error at record 257 (ignored)
Warning: Read error at record 258 (ignored)
Warning: Read error at record 259 (ignored)
Warning: Read error at record 260 (ignored)
Warning: Read error at record 261 (ignored)
Warning: Read error at record 262 (ignored)
Warning: Read error at record 263 (ignored)
Warning: Read error at record 264 (ignored)
Warning: Read error at record 265 (ignored)
Warning: Read error at record 266 (ignored)
Warning: Read error at record 267 (ignored)
Warning: Read error at record 268 (ignored)
Warning: Read error at record 269 (ignored)
Warning: Read error at record 270 (ignored)
Warning: Read error at record 271 (ignored)
Warning: Read error at record 272 (ignored)
Warning: Read error at record 273 (ignored)
Warning: Read error at record 274 (ignored)
Warning: Read error at record 275 (ignored)
Warning: Read error at record 276 (ignored)
Warning: Read error at record 277 (ignored)
Warning: Read error at record 278 (ignored)
Warning: Read error at record 279 (ignored)
Warning: Read error at record 280 (ignored)
Record 1119 (100%)
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -extract -c 0: COPYFILEx
Extracting COPYFILEx
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -extract -c 0: I68000I3i
Extracting I68000I3i
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -extract -c 0: I68000I8i
Extracting I68000I8i
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -extract -c 0: I68000P3i
Extracting I68000P3i
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -extract -c 0: I68000P8i
Extracting I68000P8i
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -extract -c 0: I6800Ii
Extracting I6800Ii
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -extract -c 0: I6800Pi
Extracting I6800Pi
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -extract -c 0: I6809EPi
Extracting I6809EPi
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -extract -c 0: I6809Pi
Extracting I6809Pi
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -extract -c 0: I6809Ii
Extracting I6809Ii
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -extract -c 0: I68008Ii
Extracting I68008Ii
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -extract -c 0: I68008Pi
Extracting I68008Pi
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -extract -c 0: SATCOM1c
Extracting SATCOM1c
L1631D
C:\Users\TLA\Desktop\fdio-22>fdio -info a:
Medium in drive a: looks like LIF 3.5 SS/DD (280 kBytes)
Media id: LIF 3.5 SS/DD
Form factor: 3.5"
Track density: high
Capacity: 280 kBytes
Cylinders: 70
Heads: 1
Sectors: 16
Blocks: 1120
Start sector: 0
Sector size: 256
Data rate: 250 kBytes/s
R/W gap3: 32
Format gap3: 50
Interleave: 2:1
Head skew: 0
Cylinder skew: 2
Modulation: MFM
Note that these values only reflect the standard settings for this preset.
Use the -analyze function to get the characteristics of the current medium.
C:\Users\TLA\Desktop\fdio-22>fdio -analyze a:
Analyzing disc
FDC analyze: --- testing sector geometry for side 0 ---
FDC analyze: testing modulation & data rate...OK
FDC analyze: testing sector size, start sector and sectors/track...OK
FDC analyze: testing interleave...OK
FDC analyze: testing intra-track consistancy...OK
FDC analyze: --- testing sector geometry for side 1 ---
FDC analyze: testing modulation & data rate...OK
FDC analyze: testing sector size, start sector and sectors/track...
FDC analyze: --- testing track geometry ---
FDC analyze: testing cylinders...
FDC analyze: testing track integrity & media density...OK
FDC analyze: testing cylinder skew...OK
FDC analyze: testing R/W GAP3...OK
Analysis summary:
-----------------
Rotational speed: 301 RPM
Form factor: 3.5"
Track density: 135 tpi (high density)
Capacity: 208896 bytes (204k)
Data rate: 250 kbit/s
Modulation: MFM
Sector size: 256 bytes
First sector ID: 0
Sectors total: 816
Sectors per track: 16
Cylinders: 51
Heads: 1
Interleave: 2:1
Minimum R/W GAP3: 0 bytes (32 recommended)
Format GAP3: 43 bytes (50 recommended)
Cylinder skew: 10
Remarks:
- 1 unused tracks detected, maybe from previous formatting
- Tracks contain 1 extra sector(s) with junk data
Errors:
- Found 10 unreadable track(s) on side 0 (maybe spares)
Recommended preset data for fdc.ini:
0x10,1,204,51,1,16,816,0,256,2,0x20,0x32,0xdf,2,0,10,0x40
C:\Users\TLA\Desktop\hpdir_fdio>fdio -verify a:
Using presets from fdc.ini
Verifying disc
Verifying cylinder 69
Verify completed without errors.
C:\Users\TLA\Desktop\fdio-22>fdio -dup a: L1631D.hpi
Using presets from fdc.ini
Dumping disc to image
Error: Disc read failed (abnormal termination /data error /data error in data field)
Reading cylinder 69
The L1630G disk had two read errors at records 96 and 97. This affected the I68000I3i file stored between records 96 and 112. Thankfully, a copy of this file was also on the L1631D disk.
L1630G
C:\Users\TLA\Desktop\Hpdir>hpdir -info 0:
Info: FDC sense: Windows NT/2000/XP/VISTA/Windows7 detected
Info: FDC sense: National controller detected
Info: FDC get drives: drive 0 = DS/HD 3.5" (1440k)
Info: FDC get drives: drive 1 = not installed
Info: FDC get drives: drive 2 = not installed
Info: FDC get drives: drive 3 = not installed
Info: FDC autodetect: LIF 3.5 SS/DD found.
-- Floppy drive info --
Media type: LIF 3.5 SS/DD
Media capacity: 280 bytes
Number of cylinders: 70
Number of heads: 1
Sectors per track: 16
Sector size: 256
Info: No valid cylinder/head/sector data in system record, using device data
-- File system info --
Image format: Logical Interchange Format (LIF) id=$1000 version=0
Image size: 286720 bytes
Volume label: "L1630G"
Creation date & time:
Sectors per track: 16
Number of heads or surfaces: 1
Total number of user accessable tracks: 70
Total number of user accessable records: 1120
System area starts at record #0
Directory starts at record #2
Directory size: 8 records
File area starts at record #10
Total number of system tracks: 1
Total number of usable data tracks: 69
162048 bytes of 282624 free.
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -list 0:
0:
VOLUME LABEL: L1630G
FILE NAME PRO TYPE REC/FILE BYTE/REC ADDRESS DATE TIME
SETUP02c #fffe 22 256 10
SETUP02Ac #fffe 22 256 32 29-Oct-84 13:38
I6809EPi #fffe 21 256 54 13-Jun-84 8:11
I6809Ii #fffe 21 256 75 13-Jun-84 8:06
I68000I3i #fffe 17 256 96 13-Jun-84 8:27
I68000I8i #fffe 17 256 113 13-Jun-84 8:28
I68000P3i #fffe 17 256 130 13-Jun-84 8:32
I68000P8i #fffe 17 256 147 13-Jun-84 8:34
I6800Ii #fffe 14 256 164 13-Jun-84 7:45
I6800Pi #fffe 14 256 178 13-Jun-84 7:46
I6809Pi #fffe 21 256 192 13-Jun-84 8:15
COPYFILEx #fffe 27 256 213 13-Jun-84 8:22
I8086Ii #fffe 22 256 240
I8088Ii #fffe 22 256 262
I80186Ii #fffe 23 256 284
I80186IEi #fffe 24 256 307
I80188IEi #fffe 24 256 331
I80188Ii #fffe 24 256 355
I80286Ii #fffe 24 256 379
I6809Ic #fffe 22 256 403
SETUP03JOc #fffe 21 256 425
SETUP03JOs #fffe 17 256 446
SETUP03JOt #fffe 9 256 463
SETUP03JOa #fffe 9 256 472
162048 of 282624 bytes free.
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -dup 0: 1630G.hpi
Warning: Read error at record 96 (ignored)
Warning: Read error at record 97 (ignored)
Record 1119 (100%)
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -extract -c 0: SETUP02c
Extracting SETUP02c
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -extract -c 0: SETUP02Ac
Extracting SETUP02Ac
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -extract -c 0: I6809EPi
Extracting I6809EPi
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -extract -c 0: I6809Ii
Extracting I6809Ii
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -extract -c 0: I68000I3i
Extracting I68000I3i
Error: Disc read failed (drive 0 at cylinder 6)
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -extract -c 0: I68000I8i
Extracting I68000I8i
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -extract -c 0: I68000P3i
Extracting I68000P3i
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -extract -c 0: I68000P8i
Extracting I68000P8i
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -extract -c 0: I6800Ii
Extracting I6800Ii
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -extract -c 0: I6800Pi
Extracting I6800Pi
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -extract -c 0: I6809Pi
Extracting I6809Pi
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -extract -c 0: COPYFILEx
Extracting COPYFILEx
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -extract -c 0: I8086Ii
Extracting I8086Ii
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -extract -c 0: I8088Ii
Extracting I8088Ii
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -extract -c 0: I80186Ii
Extracting I80186Ii
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -extract -c 0: I80186IEi
Extracting I80186IEi
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -extract -c 0: I80188IEi
Extracting I80188IEi
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -extract -c 0: I80188Ii
Extracting I80188Ii
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -extract -c 0: I80286Ii
Extracting I80286Ii
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -extract -c 0: I6809Ic
Extracting I6809Ic
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -extract -c 0: SETUP03JOc
Extracting SETUP03JOc
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -extract -c 0: SETUP03JOs
Extracting SETUP03JOs
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -extract -c 0: SETUP03JOt
Extracting SETUP03JOt
C:\Users\TLA\Desktop\Hpdir>hpdir -s 1000 -extract -c 0: SETUP03JOa
Extracting SETUP03JOa
L1630G
C:\Users\TLA\Desktop\fdio-22>fdio -info a:
Medium in drive a: looks like LIF 3.5 SS/DD (280 kBytes)
Media id: LIF 3.5 SS/DD
Form factor: 3.5"
Track density: high
Capacity: 280 kBytes
Cylinders: 70
Heads: 1
Sectors: 16
Blocks: 1120
Start sector: 0
Sector size: 256
Data rate: 250 kBytes/s
R/W gap3: 32
Format gap3: 50
Interleave: 2:1
Head skew: 0
Cylinder skew: 2
Modulation: MFM
Note that these values only reflect the standard settings for this preset.
Use the -analyze function to get the characteristics of the current medium.
C:\Users\TLA\Desktop\fdio-22>fdio -analyze a:
Analyzing disc
FDC analyze: --- testing sector geometry for side 0 ---
FDC analyze: testing modulation & data rate...OK
FDC analyze: testing sector size, start sector and sectors/track...OK
FDC analyze: testing interleave...OK
FDC analyze: testing intra-track consistancy...OK
FDC analyze: --- testing sector geometry for side 1 ---
FDC analyze: testing modulation & data rate...OK
FDC analyze: testing sector size, start sector and sectors/track...
FDC analyze: --- testing track geometry ---
FDC analyze: testing cylinders...
FDC analyze: testing track integrity & media density...OK
FDC analyze: testing cylinder skew...OK
FDC analyze: testing R/W GAP3...OK
Analysis summary:
-----------------
Rotational speed: 301 RPM
Form factor: 3.5"
Track density: 135 tpi (high density)
Capacity: 77824 bytes (76k)
Data rate: 250 kbit/s
Modulation: MFM
Sector size: 256 bytes
First sector ID: 0
Sectors total: 304
Sectors per track: 16
Cylinders: 19
Heads: 1
Interleave: 2:1
Minimum R/W GAP3: 0 bytes (32 recommended)
Format GAP3: 43 bytes (50 recommended)
Cylinder skew: 10
Remarks:
- 2 unused tracks detected, maybe from previous formatting
- Tracks contain 1 extra sector(s) with junk data
Errors:
- Found 10 unreadable track(s) on side 0 (maybe spares)
Recommended preset data for fdc.ini:
0x10,1,76,19,1,16,304,0,256,2,0x20,0x32,0xdf,2,0,10,0x40
C:\Users\TLA\Desktop\hpdir_fdio>fdio -verify a:
Using presets from fdc.ini
Verifying disc
Error: Disc verify failed (drive 0 cylinder 0 head 0)
Error: Disc verify failed (drive 0 cylinder 6 head 0)
Verifying cylinder 69
Verify completed without errors.
C:\Users\TLA\Desktop\fdio-22>fdio -dup a: L1630G.hpi
Using presets from fdc.ini
Dumping disc to image
Error: Disc read failed (abnormal termination /data error /data error in data field)
Reading cylinder 69
I ended up preferring fdio for making the disk images since it has configurable reading presets (such as cylinder skew) that can be fine-tuned using analyze. If you compare images made using fdio and hpdir there will be some minor differences, but a hex comparison of the extracted files was the same. Of note, fdio will attempt to read bad files, which can be useful, while hpdir gives up as soon as an error occurs.
The HP163xx zip has the combined inverse asembler files and is likely what you want.
The LIF Disks zip has the archived disk images, hpdir and fdio logs and extracted/converted (LIF to DOS) files from the images for anyone who wants to double check my work.