add patchers/f7f6 for SSPROT1 encrypted nibble check with checksum 35

This commit is contained in:
4am 2017-12-24 22:05:05 -05:00
parent f7693d117d
commit 48706b4067
4 changed files with 69 additions and 2 deletions

View File

@ -738,6 +738,7 @@ _applyToAll
!source "patchers/sierra13.a" ; gIsDOS32 only
!source "patchers/t11diskvol.a" ; T11 && gIsRWTS only
!source "patchers/t02volumename.a" ; T02 && gIsBoot0 only
!source "patchers/f7f6.a" ; gIsBoot0 only
lda gPatchCount
beq .nopatches

62
src/patchers/f7f6.a Normal file
View File

@ -0,0 +1,62 @@
;-------------------------------
; #F7F6
; nibble check hidden inside encrypted startup program SSPROT$$1
;
; tested on
; Grammar Lab 1 (1986, Southwell)
; Grammar Lab 2 (1986, Southwell)
; Mathematics Activities Courseware Level 4 (1983, Houghton Mifflin)
; Mathematics Activities Courseware Level 6 (1983, Houghton Mifflin)
; Sailing Through Story Problems (1987, DLM)
; Spanish Grammar Review - Future and Conditional Tenses of Regular and Irregular Verbs (1984, Gessler)
; Spanish Grammar Review - Familiar and Formal Commands in the Affirmative and Negative (1984, Gessler)
; Spanish Grammar Review - Por vs. Para (1984, Gessler)
; Water in the Air Quiz (1985, EME)
;-------------------------------
!zone {
lda gIsBoot0
bne .exit
lda #$0F
sta .sector+1
.sector lda #$FF ; modified above
sta gDisplayBytes
ldx #$00
ldy #$08
jsr compare
!byte $00,$08,$02,$03
!byte $D8 ; CLD
!byte $20,$0B,$08 ; JSR $080B
bcs .nextsector
ldx #$17
ldy #$0C
jsr compare
!byte $A9,$00 ; LDA #$00
!byte $AA ; TAX
!byte $5D,$00,$08 ; EOR $0800,X
!byte $CA ; DEX
!byte $F0,$03 ; BEQ +3
!byte $4C,$16,$08 ; JMP $0816
bcs .nextsector
ldx #$76
ldy #$03
jsr compare
!byte $23,$2A,$28
bcs .nextsector
lda #s_f7f6
jsr PrintByID
lda .sector+1
ldx #$20
ldy #$03
jsr modify
!byte $EA ; NOP
!byte $A9,$35 ; LDA #$35
lda .sector+1
ldx #$76
ldy #$02
jsr modify
!byte $AA,$A2 ; new JMP entry point ($0900 when decrypted)
.nextsector
dec .sector+1
bpl .sector
.exit
}

View File

@ -112,6 +112,7 @@ StringTable
!word .origin
!word .volumename
!word .dinkeydos
!word .f7f6
;
; Text can contain substitution strings, which
; are replaced by current values at runtime. Each
@ -137,7 +138,7 @@ StringTable
; can be set directly before calling PrintByID.
;
.header
!text "Passport by 4am 2017-12-12",$00
!text "Passport by 4am 2017-12-24",$00
.mainmenu
!text "________________________________________",$8D,$8D,$8D,$8D,$8D,$8D,$8D
!text " "
@ -428,4 +429,6 @@ StringTable
!text "T%t,S%0 Volume name is ",$00
.dinkeydos
!text "T00,S0B Found Dinkey-DOS",$8D,$00
.f7f6
!text "T%t,S%0 Found F7F6 protection check",$8D,$00
}

View File

@ -100,4 +100,5 @@ s_muse = $5E
s_origin = $5F
s_volumename = $60
s_dinkeydos = $61
STRINGCOUNT = $62
s_f7f6 = $62
STRINGCOUNT = $63