diff --git a/README.md b/README.md index df01b55..8073081 100644 --- a/README.md +++ b/README.md @@ -452,6 +452,8 @@ Development (unreleased) The Desecration, Depreciation Log) - "BB00 protection" renamed to its marketing name "Lock-It-Up" +- Serial numbers will be erased while + cracking Lock-It-Up disks, if present - Update Passport disk to ProDOS 2.4.2 - Matching updates to the [Passport test suite](https://github.com/a2-4am/passport-test-suite) diff --git a/src/patchers/jmpbbfe.a b/src/patchers/jmpbbfe.a index 516cab0..96e0ce1 100755 --- a/src/patchers/jmpbbfe.a +++ b/src/patchers/jmpbbfe.a @@ -1,4 +1,4 @@ -;------------------------------- + ; #JMPBBFE ; marketed as 'Lock-It-Up' ; boot0 jumps to ($BBFE) instead of ($08FD) @@ -135,5 +135,29 @@ _jmpbbfe jsr modify + !byte $FD ; SMC (byte offset of new entry point) + ldx #$5E + ldy #$02 + jsr compare ; check for code that branches over serial number + !byte $D0,$05 + bcs .exit + + inx + inx + ldy #$05 + jsr compare ; see if there is actually a non-zero serial number + !byte $00,$00,$00,$00,$00 + bcc .exit ; passport-test-suite/Quadrilaterals.woz [C=1] here + + sta gDisplayBytes+5 + ldy #4 +- lda $1560, y + sta gDisplayBytes, y + lda #0 + sta $1560, y + dey + bpl - + lda #s_lockitupserial + jsr PrintByID + .exit } diff --git a/src/strings/en.a b/src/strings/en.a index 4bb280d..2fea0ee 100755 --- a/src/strings/en.a +++ b/src/strings/en.a @@ -164,6 +164,8 @@ StringTableLow !byte <.targetcffa !byte <.rw18 !byte <.x555 + !byte <.erasingserialnumber + !byte <.lockitupserial StringTableHigh !byte >.header @@ -311,6 +313,8 @@ StringTableHigh !byte >.targetcffa !byte >.rw18 !byte >.x555 + !byte >.erasingserialnumber + !byte >.lockitupserial ; ; Text can contain substitution strings, which @@ -416,6 +420,8 @@ StringTableHigh !text "accepts any value for the",$00 .addressepilogue !text "address epilogue ",$00 +.erasingserialnumber + !text "Erasing serial number ",$00 .lockitup !text "@",s_found,"Lock-It-Up protection",$8D !text "T00,S0A @",s_maybeunreadable,$8D,$00 @@ -582,7 +588,9 @@ StringTableHigh .decryptrwts !text "T00 Decrypting RWTS before writing",$8D,$00 .protserial - !text "T%t,S%3 Erasing serial number %0%1%2",$8D,$00 + !text "T%t,S%3 @",s_erasingserialnumber,"%0%1%2",$8D,$00 +.lockitupserial + !text "T%t,S%5 @",s_erasingserialnumber,"%0%1%2%3%4",$00 .fbff !text "@",s_found,"FBFF @",s_protectioncheck,$8D,$00 .encoded44 diff --git a/src/strings/enid.a b/src/strings/enid.a index a4fc3e8..c29a06d 100644 --- a/src/strings/enid.a +++ b/src/strings/enid.a @@ -147,3 +147,5 @@ s_targetfile = $8D s_targetcffa = $8E s_rw18 = $8F s_555 = $90 +s_erasingserialnumber = $91 +s_lockitupserial = $92