VOGONS


First post, by legodude

User metadata
Rank Newbie
Rank
Newbie

Compaq distributed drivers/firmware/etc as "Softpaq" executables*. Many of the earlier Softpaqs were designed to be run in DOS and wrote directly to a formatted floppy - there is no option to extract the files without writing to a floppy and this can make accessing drivers challenging in 2025. I have jury-rigged VMs or emulators into being able to write to a floppy image file, but this process is labor-intensive and inconsistent.

I thought there had to be a better way of extracting these, but Google lead me nowhere. Makefile on The Retro Web Discord helped with this project ( and by help I mean did 95% of the work). So I present 'unsoftpaq.py', a very quick and very dirty Python script that will extract Softpaqs. It handles multiple image files as well. I've only tested this with Softpaqs that write floppies and only in Linux (MacOS would likely work as well)

Take a look at the file before you blindly run it, there are likely bugs etc.
It depends on the python library bitstring
It depends on having 'blast' in your path. This can be obtained from zlib in the 'contrib/blast' directory.

*Many of these are only available due to Davidg's mirror: https://ftp.zx.net.nz/pub/archive/ftp.compaq. … om/pub/softpaq/

mike

Reply 1 of 6, by DaveDDS

User metadata
Rank Oldbie
Rank
Oldbie

You could probably also use DBDOS[.ZIP] (DosBox Boot DOS) along with DOSBOOT.ZIP
on my site...

DBDOS "boots" real DOS from an A: floppy disk image - DOS sees it as an actual
floppy disk - you can also mount a B: drive(image) and a C: hard drive image if
you want more working space.

DOSBOOT is a collection of 15+ versions of DOS as bootabke images.

Unless the SOFTPAK checks for hardware, you should be able to unpack it to a
floppy disk image within booted DOS. There are tools included which will let
you read/write individual files to/from the host and the floppy disk images.
For bigger stuff there's a tool to transfer files by Network (or Serial)

- Dave ; https://dunfield.themindfactory.com ; "Daves Old Computers" ; SW dev addict best known:
ImageDisk: rd/wr ANY floppy PChardware can ; Micro-C: compiler for DOS+ManySmallCPU ; DDLINK: simple/small FileTrans(w/o netSW)via Lan/Lpt/Serial

Reply 2 of 6, by legodude

User metadata
Rank Newbie
Rank
Newbie

Small bug fix
Thanks Dave, I'll check that out

Reply 3 of 6, by DaveDDS

User metadata
Rank Oldbie
Rank
Oldbie
legodude wrote on 2025-06-05, 03:16:

Thanks Dave, I'll check that out

Btw, If you need a more comprehensive/accurate emulation of an actual PC, something like 86BOX, MartyPC etc.
can work well and will boot the same .IMG files that I have in DOSBOOT.ZIP

DosBox does good emulation of floppy disks to the BIOS level, but doesn't go far in emulating the
actual FDC hardware - not usually a problem unless you are running software that access the FDC
directly - usually for strange/unusual floppy disk formats, copy protection etc.

(I'd try the DBBOOT first - I find 86box/MartyPC need a fair bit of stuff configured "just right" to work properly
(but once you get it - they work well) - DBDOS was something I created for myself, just to be able to boot real DOS
without having to fire up one of my actual retro. systems - at least for me it's quite a bit easier)

- Dave ; https://dunfield.themindfactory.com ; "Daves Old Computers" ; SW dev addict best known:
ImageDisk: rd/wr ANY floppy PChardware can ; Micro-C: compiler for DOS+ManySmallCPU ; DDLINK: simple/small FileTrans(w/o netSW)via Lan/Lpt/Serial

Reply 4 of 6, by vetz

User metadata
Rank l33t
Rank
l33t

This was a godsend! Thank you!

I had trouble running the script on Windows due to dependencies, so I made some changes/improvements with the help of AI.

- No dd, no external blast — dclimplode (pure Python binding to the same blast.c). Runs on Windows unchanged.
- No bitstring — bytes.find() + struct.unpack_from.
- Python ≤3.10 safe — explicit byteorder on every int read.
- TOC scan constrained to last 4KB — eliminates false "IMAGE" hits inside payload.
- [FIT] magic check + DCL-header sanity check before decompression — bad TOC parsing now fails loudly instead of writing a 0-byte IMG.
- Verify against [FIT]+8 uncompressed-size field (toggleable with --no-verify).
-o OUTDIR (optional), -v (verbose output optional), proper exit codes, synchronous extraction, per-image error handling that doesn't abort the batch.

pip install dclimplode required beforehand

run using python unsoftpaq2.py -o out_dir [-v] [--no-verify] spXXXX.exe

Worked on sp8975.exe for me!

3D Accelerated Games List (Proprietary APIs - No 3DFX/Direct3D)
3D Acceleration Comparison Episodes

Reply 5 of 6, by BitWrangler

User metadata
Rank l33t++
Rank
l33t++

I remember opening one a while back with one of the archiver utils, but I can't remember if it was winrar, 7zip or winzip.

Unicorn herding operations are proceeding, but all the totes of hens teeth and barrels of rocking horse poop give them plenty of hiding spots.

Reply 6 of 6, by vetz

User metadata
Rank l33t
Rank
l33t
BitWrangler wrote on 2026-05-28, 03:47:

I remember opening one a while back with one of the archiver utils, but I can't remember if it was winrar, 7zip or winzip.

Yes, that is correct, many can be opened with 7z, Winrar without issues, but some like SP8975.exe has Compaq's proprietary FTL compression.

3D Accelerated Games List (Proprietary APIs - No 3DFX/Direct3D)
3D Acceleration Comparison Episodes