----------The Perfect College---------- A 4am crack 2015-08-09 --------------------------------------- Name: The Perfect College Genre: educational Year: 1987 Authors: Soft Press Corp. Publisher: Mindscape Media: double-sided 5.25-inch floppy OS: custom Previous cracks: none Similar cracks: ColorMe (crack no. 25) Side A is protected but bootable. Side B is unprotected but unbootable. Life is like that. This has not been a haiku. ~ Chapter 0 In Which Various Automated Tools Fail In Interesting Ways COPYA immediate disk read error, but it gets a participation medal just for showing up Locksmith Fast Disk Backup unable to read any track EDD 4 bit copy (no sync, no count) no errors, but the copy just boots, briefly ponders the meaning of life, then reboots Copy ][+ nibble editor all tracks use standard prologues (address: D5 AA 96, data: D5 AA AD) but modified epilogues (address: FF FF FF, data: FF FF FF) Disk Fixer ["O" -> "Input/Output Control"] set Address Epilogue to "FF FF FF" set Data Epilogue to "FF FF FF" Success! All tracks readable! T00 -> custom bootloader No sign of a disk catalog anywhere No sign of any known OS No sign of intelligent life anywhere Why didn't COPYA work? modified epilogue bytes (every track) Why didn't Locksmith FDB work? modified epilogue bytes (every track) Why didn't my EDD copy work? Probably a nibble check during boot. Definitely a nibble check. Disks do not spontaneously reboot unless someone tells them to. That is not a thing that happens naturally. That is just not a thing. Next steps: 1. Super Demuffin to convert the disk to a standard format 2. Patch the RWTS (if necessary) 3. Find nibble check and bypass it ~ Chapter 1 In Which We Choose The Right Tool For The Job I'm going to use Super Demuffin here (instead of my usual go-to conversion tool, Advanced Demuffin). The disk uses some custom bootloader that I've never seen before [correction: I saw it once on crack no. 25, but whatever]. My automated tools won't capture the RWTS. Luckily, the RWTS modifications are minor (custom epilogue bytes, same on every track), so Super Demuffin will work just fine. When you first run Super Demuffin, it asks for the parameters of the original disk. In this case, the prologue bytes are the same, but the epilogues are "FF FF FF" instead of "DE AA EB". --v-- SUPER-DEMUFFIN AND FAST COPY Modified by: The Saltine/Coast to Coast Address prologue: D5 AA 96 Address epilogue: FF FF FF DISK ^^^^^^^^ ORIGINAL change from DE AA EB ++++++++ Data prologue: D5 AA AD Data epilogue: FF FF FF ^^^^^^^^ change from DE AA EB ++++++++ Ignore write errors while demuffining! D - Edit parameters - Advance to next parm - Exit edit mode R - Restore DOS 3.3 parameters O - Edit Original disk's parameters C - Edit Copy disk's parameters G - Begin demuffin process --^-- Pressing "G" switches to the Locksmith Fast Disk Copy UI. It assumes that both disks are in slot 6, and that drive 1 is the original and drive 2 is the copy. [S6,D1=original disk] [S6,D2=blank disk] --v-- LOCKSMITH 7.0 FAST DISK BACKUP R................................... W*********************************** HEX 00000000000000001111111111111111222 TRK 0123456789ABCDEF0123456789ABCDEF012 0................................... 1................................... 2................................... 3................................... 4................................... 5................................... 6................................... 7................................... 8................................... 9................................... A................................... B................................... C................................... D................................... 12 E................................... F................................... [ ] PRESS [RESET] TO EXIT --^-- Piece of cake. ]PR#6 ...reboots endlessly... Humbug. But not unexpected. Let's go find that nibble check. ~ Chapter 2 Every Day A Little Boot Trace [S6,D1=non-working copy] [S5,D1=my work disk] ]PR#5 CAPTURING BOOT0 ...reboots slot 6... ...reboots slot 5... SAVING BOOT0 ]BLOAD BOOT0,A$800 ]CALL -151 *801L 0801- A5 27 LDA $27 0803- C9 09 CMP #$09 0805- D0 13 BNE $081A ; first-time initialization -- set ; 40 column mode and 80STOREOFF 0807- 8D 0C C0 STA $C00C 080A- 8D 00 C0 STA $C000 ; munge boot slot into $Cx format and ; make a vector to read another sector ; via the disk controller ROM routine 080D- 8A TXA 080E- 4A LSR 080F- 4A LSR 0810- 4A LSR 0811- 4A LSR 0812- 09 C0 ORA #$C0 0814- 85 3F STA $3F 0816- A9 5C LDA #$5C 0818- 85 3E STA $3E ; sector count 081A- CE 75 08 DEC $0875 081D- 30 03 BMI $0822 *875 0875- 0F OK, we're reading the rest of track $00 into memory at $0900..$17FF. ; jump to read disk controller ROM to ; read another sector 081F- 6C 3E 00 JMP ($003E) ; execution continues here (from $081D) 0822- 4C 00 16 JMP $1600 And that's where I need to interrupt the boot. *9600