---------------SuperPrint-------------- A 4am crack 2015-06-13 --------------------------------------- Name: SuperPrint! Genre: graphics Year: 1987 Authors: Joel Fried, Susan Swanson, Ken Grey, Lester Humphreys, Kim Looney, and David Shearer of Pelican Software Publisher: Scholastic, Inc. Media: 3 double-sided 5.25-inch disks OS: ProDOS 1.4 Other versions: none (Asimov has some auxiliary graphics packs but not the program itself) Similar cracks: Math Shop (no. 146) There are a total of six sides, labeled 1A "Program" 1B "Work Area" 2A "Clip Art and Fonts" 2B "Backgrounds" 3A "Poster Art" 3B "Banners" Only disk 1 side A is bootable, so I'll start there. ~ Chapter 0 In Which Various Automated Tools Fail In Interesting Ways COPYA immediate disk read error Locksmith Fast Disk Backup unable to read any track EDD 4 bit copy (no sync, no count) no errors, but copy reboots endlessly Copy ][+ nibble editor all tracks use standard prologues (address: D5 AA 96, data: D5 AA AD) but modified epilogues (address: FF FF EB, data: FF FF EB) Disk Fixer ["O" -> "Input/Output Control"] set Address Epilogue to "FF FF EB" set Data Epilogue to "FF FF EB" Success! All tracks readable! T00 -> ProDOS boot0 and disk catalog 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 Next steps: 1. Super Demuffin 2. Patch 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 is ProDOS-based, so my AUTOTRACE script on my work disk won't capture the RWTS. But 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 EB" 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 EB DISK ^^^^^ ORIGINAL *change from "DE AA" Data prologue: D5 AA AD Data epilogue: FF FF EB ^^^^^ *change from "DE AA" 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 --^-- There are two problems with this copy: 1. Depending on how the original disk was written, this copy may or may not be able to read itself. I may need to patch the disk's RWTS to deal with the fact that the disk is now in a standard format. 2. Even if it can read itself, it won't run. The copies I tried to make -- even the bit copies -- just rebooted endlessly, which means there is some code being executed during boot to check if the disk is original. (Hint: it's not.) It's time for a little boot tracing. ~ Chapter 2 In Which We Run Into An Old Friend In An Unexpected Place [S6,D1=original disk, side A] [S5,D1=my work disk] ]PR#5 ... CAPTURING BOOT0 ...reboots slot 6... ...reboots slot 5... SAVING BOOT0 ]BLOAD BOOT0,A$800 ]CALL -151 *801L ; This looks like the standard ProDOS ; boot0 code, which is unsurprising, ; since the original disk loads ProDOS 0801- 38 SEC 0802- B0 03 BCS $0807 0804- 4C 32 A1 JMP $A132 0807- 86 43 STX $43 0809- C9 03 CMP #$03 080B- 08 PHP 080C- 8A TXA 080D- 29 70 AND #$70 080F- 4A LSR 0810- 4A LSR 0811- 4A LSR 0812- 4A LSR 0813- 09 C0 ORA #$C0 0815- 85 49 STA $49 0817- A0 FF LDY #$FF 0819- 84 48 STY $48 081B- 28 PLP 081C- C8 INY 081D- B1 48 LDA ($48),Y 081F- D0 3A BNE $085B 0821- B0 0E BCS $0831 0823- A9 03 LDA #$03 0825- 8D 00 08 STA $0800 0828- E6 3D INC $3D 082A- A5 49 LDA $49 082C- 48 PHA 082D- A9 5B LDA #$5B 082F- 48 PHA 0830- 60 RTS ; this is not standard 0831- 4C 00 09 JMP $0900 Let's see what's lurking at $0900. To do this, I'll need to interrupt the boot process at $0831, after the code is loaded into memory but before it gets executed. *9600