fadden / ciderpress

CiderPress Apple II archive utility for Windows
https://a2ciderpress.com/
Other
130 stars 25 forks source link

Incorrect file size on this file #18

Closed Keatah closed 1 year ago

Keatah commented 8 years ago

ftp://ftp.apple.asimov.com/pub/apple_II/images/games/file_based/escape_taipan_u-boatcommand.dsk

Taipan and Taipan Instructions report as 144 bytes in Ciderpress and cannot be copy/pasted. But Copy II+ or even the most standard and basic file copier of all time, FID, from the System Master disk, can make a copy.

fadden commented 8 years ago

The problem is that 'B' files on DOS 3.3 disks have two lengths: the length value stored in the first four bytes, and the number of blocks allocated to the file.

Games like Taipan have a short "loader" segment that pulls the rest of the file in. This was often done for single-load games that were too large to fit in memory with DOS present.

If you open the disk image, then select Tools > Disk Sector Viewer, click Open Current Archive, then click Open File and type "taipan", you can see in the first four bytes that it's a $90-byte file that loads at address $0300. If you click Read Next, you will be able to walk through the entire file (you'll start to see game text about 5 sectors in).

File copiers like FID ignore the embedded length, and just copy all allocated blocks. File viewers stop early, because they don't want to show leftover junk stored in the sector. CiderPress is both viewer and copier, and in this instance the approach it uses doesn't do what you expect.

FWIW, the behavior is noted in the CiderPress help, under Using CiderPress > Commands > Copying and Pasting:

Some DOS games were stored in 'B' files with a short "loader" segment. The "loader" would start immediately and load the rest of the game itself. CiderPress obeys the shorter length value, and as a result will not copy the entire file (as evidenced by the pasted file being significantly smaller than the original).

CiderPress could do a better job when copying files between DOS disks, but there's no way to salvage this when copying to anything else (ProDOS, ShrinkIt) without inventing some way to preserve both lengths.

Keatah commented 8 years ago

Got it.

fadden commented 1 year ago

This will not be addressed in CiderPress. See this demo for how this can be addressed.