-----------------Take 1---------------- A 4am crack 2014-06-12 --------------------------------------- "Take 1" is a 1984 animation utility distributed by Baudville, Inc. COPYA gives no read errors, but the copy does not work. (EDD 4 bit copy fares no better.) It displays the two strings "TAKE 1" and "06451" (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 marching 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 37 BNE $083E 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- 8D FE 08 STA $08FE 0814- A9 5C LDA #$5C 0816- 85 3E STA $3E 0818- 18 CLC ; slightly unusual -- it appears to ; keep the target address and sector ; count in $0869/A instead of $08FE/F 0819- AD 69 08 LDA $0869 081C- 6D 6A 08 ADC $086A 081F- 8D 69 08 STA $0869 ; enable read/write on RAM bank 2 (at ; $D000..$FFFF) 0822- AD 83 C0 LDA $C083 0825- AD 83 C0 LDA $C083 ; set low-level reset vector 0828- A9 F9 LDA #$F9 082A- 8D FC FF STA $FFFC 082D- 8D FE FF STA $FFFE 0830- 8D FA FF STA $FFFA 0833- A9 08 LDA #$08 0835- 8D FD FF STA $FFFD 0838- 8D FF FF STA $FFFF 083B- 8D FB FF STA $FFFB ; looks like a sector read loop 083E- AE 6A 08 LDX $086A ; jump out of the read loop here 0841- 30 28 BMI $086B 0843- BD 58 08 LDA $0858,X 0846- 85 3D STA $3D 0848- CE 6A 08 DEC $086A 084B- AD 69 08 LDA $0869 084E- 85 27 STA $27 0850- CE 69 08 DEC $0869 0853- A6 2B LDX $2B ; jump to disk controller ROM routine ; to read sectors 0855- 6C 3E 00 JMP ($003E) . . . ; looks like the loop above will read ; 7 sectors into $DA00..$E0FF 0869- DA 086A- 07 ; out of the sector read loop -- ; switch back to ROM, initialize ; keyboard/video/text mode/screen 086B- AD 82 C0 LDA $C082 086E- 20 93 FE JSR $FE93 0871- 20 89 FE JSR $FE89 0874- 20 2F FB JSR $FB2F 0877- 20 58 FC JSR $FC58 ; these two subroutines appear to copy ; the title and version number to the ; text page 087A- A0 00 LDY #$00 087C- 20 AC 08 JSR $08AC 087F- C8 INY 0880- 20 AC 08 JSR $08AC ; check for Applesoft in ROM, display ; error message if not found 0883- AD 00 E0 LDA $E000 0886- C9 4C CMP #$4C 0888- D0 13 BNE $089D ; switch back to RAM bank 2 088A- AD 83 C0 LDA $C083 088D- AD 83 C0 LDA $C083 ; push ($E000) to the stack, then ; "return" to that address (+1) 0890- AD 00 E0 LDA $E000 0893- C9 E0 CMP #$E0 0895- D0 06 BNE $089D 0897- 48 PHA 0898- AD 01 E0 LDA $E001 089B- 48 PHA 089C- 60 RTS 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