----------------The Mist--------------- A 4am crack 2015-04-24 --------------------------------------- Name: Stephen King: The Mist Genre: adventure Year: 1985 Authors: Angelsoft, Inc. Publisher: Mindscape Media: single-sided 5.25-inch floppy OS: Pascal Other versions: Sean Johnson / Lord Gypher crack Identical cracks: - Rambo: First Blood Part II (no. 89) - Riddle Magic (no. 132) - Racter (no. 174) ~ 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! 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 Pascal-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.) Just by booting the copy, I can rule out problem #1. The disk seems to read itself just fine. It makes it exactly as far as the failed bit copy -- far enough to figure out that it's not an original disk and reboot. It's time for a little boot tracing. ~ Chapter 2 Every Day A Little Boot Trace [S6,D1=original disk] [S5,D1=my work disk] ]PR#5 CAPTURING BOOT0 ...reboots slot 6... ...reboots slot 5... SAVING BOOT0 ]CALL -151 *800<2800.28FFM *801L ; only supports booting from slot 6 0801- E0 60 CPX #$60 0803- F0 03 BEQ $0808 0805- 4C E3 08 JMP $08E3 ; this is a loop that reuses the disk ; controller ROM routine to read ; several more sectors from track 0 0808- AD 00 08 LDA $0800 080B- C9 06 CMP #$06 ; break out of read loop 080D- B0 0A BCS $0819 080F- 69 02 ADC #$02 0811- 8D 00 08 STA $0800 0814- E6 3D INC $3D ; jump to ROM to read the sector into ; the memory page given in zero page ; $3D (this jumps back to $801 when ; it finishes, which is why this read ; loop is actually a loop) 0816- 4C 5C C6 JMP $C65C ; out of the read loop 0819- A9 00 LDA #$00 ; don't know what this does yet 081B- 20 00 0B JSR $0B00 This is where I need to interrupt the boot process. *9600