--------------Video Vegas-------------- A 4am crack 2014-06-12 --------------------------------------- "Video Vegas" is a 1984 casino simulation game by Baudville, Inc. [The copy protection is identical to "Take 1," also by Baudville. This write-up is therefore quite similar to that one, with updated listings and a few corrections.] COPYA gives no read errors, but the copy does not work. (EDD 4 bit copy fares no better.) It displays "12501" (a version number, I think), then grinds the disk in a most unusual fashion (hopping back and forth between two tracks? trying to read a quarter track? I've never heard anything like it) until I frantically power off in an attempt to save my 30 year old floppy drive from frog-stepping off my desk. Time for boot tracing, I suppose. [S6,D1=original disk] [S5,D1=my work disk] ]PR#5 ... CAPTURING BOOT0 ...reboots slot 6... ...reboots slot 5... SAVING BOOT0 ]BLOAD BOOT0,A$800 ]CALL -151 *801L ; starts off looking like DOS 3.3 boot0 0801- A5 27 LDA $27 0803- C9 09 CMP #$09 0805- D0 34 BNE $083B 0807- A5 2B LDA $2B 0809- 4A LSR 080A- 4A LSR 080B- 4A LSR 080C- 4A LSR 080D- 09 C0 ORA #$C0 080F- 85 3F STA $3F 0811- A9 5C LDA #$5C 0813- 85 3E STA $3E 0815- 18 CLC ; slightly unusual -- it appears to ; keep the target address and sector ; count in $0866/7 instead of $08FE/F 0816- AD 66 08 LDA $0866 0819- 6D 67 08 ADC $0867 081C- 8D 66 08 STA $0866 ; enable read/write on RAM bank 2 (at ; $D000..$FFFF) 081F- AD 83 C0 LDA $C083 0822- AD 83 C0 LDA $C083 ; set low-level reset vector 0825- A9 EF LDA #$EF 0827- 8D FC FF STA $FFFC 082A- 8D FE FF STA $FFFE 082D- 8D FA FF STA $FFFA 0830- A9 08 LDA #$08 0832- 8D FD FF STA $FFFD 0835- 8D FF FF STA $FFFF 0838- 8D FB FF STA $FFFB ; looks like a sector read loop 083B- AE 67 08 LDX $0867 ; jump out of the read loop here 083E- 30 28 BMI $0868 0840- BD 55 08 LDA $0855,X 0843- 85 3D STA $3D 0845- CE 67 08 DEC $0867 0848- AD 66 08 LDA $0866 084B- 85 27 STA $27 084D- CE 66 08 DEC $0866 0850- A6 2B LDX $2B ; jump to disk controller ROM routine ; to read sectors 0852- 6C 3E 00 JMP ($003E) . . . ; looks like the loop above will read ; 7 sectors into $DA00..$E0FF 0866- DA 0867- 07 ; out of the sector read loop -- ; switch back to ROM, initialize ; keyboard/video/text mode/screen 0868- AD 82 C0 LDA $C082 086B- 20 93 FE JSR $FE93 086E- 20 89 FE JSR $FE89 0871- 20 2F FB JSR $FB2F 0874- 20 58 FC JSR $FC58 ; display the version number 0877- A0 00 LDY #$00 0879- 20 A5 08 JSR $08A5 ; check for Applesoft in ROM, display ; error message if not found 087C- AD 00 E0 LDA $E000 087F- C9 4C CMP #$4C 0881- D0 13 BNE $0896 ; switch back to RAM bank 2 0883- AD 83 C0 LDA $C083 0886- AD 83 C0 LDA $C083 ; push ($E000) to the stack, then ; "return" to that address (+1) 0889- AD 00 E0 LDA $E000 088C- C9 E0 CMP #$E0 088E- D0 06 BNE $0896 0890- 48 PHA 0891- AD 01 E0 LDA $E001 0894- 48 PHA 0895- 60 RTS 0896- AD 82 C0 LDA $C082 Since this boot0 code bears little resemblance to DOS 3.3, I'll need a custom trace routine to capture the code it loads into $DA00..$E0FF. *9600