diff --git a/src/id/dos33.a b/src/id/dos33.a index cd3a08a..e043c19 100755 --- a/src/id/dos33.a +++ b/src/id/dos33.a @@ -29,7 +29,7 @@ IDDOS33 ; + lda #$00 ldx #$00 - ldy #$4A + ldy #$3F jsr compare ; if T00,S00,$00 == !byte $01 !byte $A5,$27 @@ -62,11 +62,32 @@ IDDOS33 !byte $6C,$3E,$00 !byte $EE,$FE,$08 !byte $EE,$FE,$08 + bcs .exit +; +; DOS 3.3 has JSR $FE89 / JSR $FE93 / JSR $FB2F +; some Sierra have STA $C050 / STA $C057 / STA $C055 instead +; with the unpleasant side-effect of showing text-mode garbage +; if mixed-mode was enabled at the time +; + lda #$00 + ldx #$3F + ldy #$0B + jsr compare ; if T00,S00,$3F == !byte $20,$89,$FE !byte $20,$93,$FE !byte $20,$2F,$FB !byte $A6,$2B - bcs .exit + bcc + + lda #$00 + ldx #$3F + ldy #$0B + jsr compare ; if T00,S00,$3F == + !byte $8D,$50,$C0 + !byte $8D,$57,$C0 + !byte $8D,$55,$C0 + !byte $A6,$2B ++ + ; ; Sector order map must be standard (no exceptions) ; diff --git a/src/id/trace.a b/src/id/trace.a index fc585fb..27bb958 100755 --- a/src/id/trace.a +++ b/src/id/trace.a @@ -44,10 +44,12 @@ TraceDOS33b sta $084B lda #>TraceDOS33c sta $084C - lda #$2C ; disable calls to - sta $083F ; TEXt/PR0/IN0 - sta $0842 - sta $0845 + lda #$EA + ldy #9 +.noppatch + sta $83E,Y ; disable calls to + dey ; TEXt/PR0/IN0 + bne .noppatch ; including "Grafboot" jmp $0801 TraceDOS33c diff --git a/src/patchers/sierra.a b/src/patchers/sierra.a index ea1f2a6..5745a7f 100755 --- a/src/patchers/sierra.a +++ b/src/patchers/sierra.a @@ -17,6 +17,13 @@ ; Oil's Well ; Sammy Lightfoot ; Sierra Championship Boxing +; Winnie the Pooh +; Donald Duck +; Mickey's Space Adventure +; King's Quest +; Leisure Suit Larry +; Space Quest +; The Black Cauldron ; ; module by qkumba ;------------------------------- @@ -30,7 +37,7 @@ + ldy #3 jsr SearchTrack .call - !byte $20,$D1,$D1 + !byte $20,$D1,$D1 ;JSR $xxxx bcs + ldy #$01 jsr modify @@ -38,7 +45,7 @@ + ldy #3 jsr SearchTrack .load - !byte $AD,$D1,$D1 + !byte $AD,$D1,$D1 ;LDA $xxxx bcs + sta .cmp7+1 adc #BASEPAGE @@ -56,7 +63,8 @@ lda #$D1 ldy #3 jsr compare - !byte $C9,$1D,$B0 + !byte $C9,$1D ;CMP #$1D + !byte $B0 ;BCS *+xx bcs + inx inx @@ -66,7 +74,11 @@ !byte $00 + ldy #12 jsr SearchTrack - !byte $AD,WILDCARD,WILDCARD,$85,$C1,$A9,$00,$85,$C0,$6C,$C0,$00 + !byte $AD,WILDCARD,WILDCARD ;LDA $xxxx + !byte $85,$C1 ;STA $C1 + !byte $A9,$00 ;LDA #$00 + !byte $85,$C0 ;STA $C0 + !byte $6C,$C0,$00 ;JMP ($00C0) bcs + pha txa @@ -78,7 +90,15 @@ !byte $60 + ldy #14 jsr SearchTrack - !byte $85,$11,$49,WILDCARD,$48,$A5,$10,$49,WILDCARD,$48,$D0,$01,$4C,$60 + !byte $85,$11 ;STA $11 + !byte $49,WILDCARD ;EOR #$xx + !byte $48 ;PHA + !byte $A5,$10 ;LDA $10 + !byte $49,WILDCARD ;EOR #$xx + !byte $48 ;PHA + !byte $D0,$01 ;BNE *+3 + !byte $4C ;dummy + !byte $60 ;RTS bcs + pha tay @@ -91,7 +111,7 @@ tya ldy #1 jsr modify - !byte $EA + !byte $EA ;NOP pla clc adc #5 @@ -99,28 +119,44 @@ pla ldy #1 jsr modify - !byte $EA + !byte $EA ;NOP + ldy #10 jsr SearchTrack - !byte $A9,$20,$8D,$DC,$4D,$A9,$60,$8D,$DF,$4D + !byte $A9,$20 ;LDA #$20 + !byte $8D,$DC,$4D ;STA $4DDC + !byte $A9,$60 ;LDA #$60 + !byte $8D,$DF,$4D ;STA $4DDF bcs + inx ldy #$01 jsr modify - !byte $2C + !byte $2C ;BIT $xxxx + ldy #6 jsr SearchTrack - !byte $20,$0A,$14,$6C,$C6,$03 + !byte $20,$0A,$14 ;JSR $140A + !byte $6C,$C6,$03 ;JMP ($03C6) bcs + inx inx inx ldy #$01 jsr modify - !byte $60 + !byte $60 ;RTS + ldy #17 jsr SearchTrack - !byte $48,$8A,$48,$98,$48,$20,$3D,$9B,$68,$A8,$68,$AA,$68,$28,$6C,$36,$00 + !byte $48 ;PHA + !byte $8A ;TXA + !byte $48 ;PHA + !byte $98 ;TYA + !byte $48 ;PHA + !byte $20,$3D,$9B ;JSR $9B3D + !byte $68 ;PLA + !byte $A8 ;TAY + !byte $68 ;PLA + !byte $AA ;TAX + !byte $68 ;PLA + !byte $28 ;PLP + !byte $6C,$36,$00 ;JMP ($0036) bcs + inx inx @@ -129,7 +165,7 @@ inx ldy #$01 jsr modify - !byte $2C + !byte $2C ;BIT $xxxx + jmp .exit .foundsierra !byte $00 @@ -137,17 +173,82 @@ .trybox ldy #17 jsr SearchTrack - !byte $20,$00,$1D,$20,$C0,$1D,$A9,$16,$85,$56,$A9,$15,$85,$57,$20,$93,$15 - bcs .bcsexit1 - sta gDisplayBytes + !byte $20,$00,$1D ;JSR $1D00 + !byte $20,$C0,$1D ;JSR $1DC0 + !byte $A9,$16 ;LDA #$16 + !byte $85,$56 ;STA $56 + !byte $A9,$15 ;LDA #$15 + !byte $85,$57 ;STA $57 + !byte $20,$93,$15 ;JSR $1593 + bcc + + ldy #19 + jsr SearchTrack + !byte $20,$17,$0A ;JSR $0A17 + !byte $20,$25,$0D ;JSR $0D25 + !byte $20,$85,$1E ;JSR $1E85 + !byte $80 ;dummy + !byte $08,$CE,$CF,$CD,$CF,$CE,$C9,$C3,$CF + ;NOMONICO ++ bcc + + ldy #19 + jsr SearchTrack + !byte $20,$07,$FF ;JSR $FF07 + !byte $A2,$00 ;LDX #$00 + !byte $A9,$01 ;LDA #$01 + !byte $85,$08 ;STA $08 + !byte $86,$09 ;STA $09 + !byte $60 ;RTS + !byte $A9,$02 ;LDA #$02 + !byte $85,$0C ;STA $0C + !byte $4C,$41,$7E ;JMP $7E41 ++ bcc + + ldy #17 + jsr SearchTrack + !byte $20,$27,$15 ;JSR $1527 + !byte $4C,$6C,$41 ;JMP $416C + !byte $84,$C2,$CC,$CF,$C1,$C4,$A0,$D7,$C1,$CC,$D4 + ;"BLOAD WALT..." ++ bcc + + ldy #11 + jsr SearchTrack + !byte $20,$00,$FF ;JSR $FF00 + !byte $18 ;CLC + !byte $A9,$7A ;LDA #$7A + !byte $65,$08 ;ADC $08 + !byte $8D,$65,$66 ;STA $6665 ++ bcc + + ldy #18 + jsr SearchTrack + !byte $20,$00,$FF ;JSR $FF00 + !byte $A9,$00 ;LDA #$00 + !byte $85,$A6 ;STA $A6 + !byte $85,$A7 ;STA $A7 + !byte $A9,$00 ;LDA #$00 + !byte $85,$A8 ;STA $A8 + !byte $85,$A9 ;STA $A9 + !byte $20,WILDCARD,$53 ;JSR $53xx ++ bcc + + ldy #21 + jsr SearchTrack + !byte $20,$00,$FF ;JSR $FF00 + !byte $A5,$AC ;LDA $AC + !byte $8D,$E0,$7E ;STA $7EE0 + !byte $A5,$AD ;LDA $AD + !byte $8D,$E1,$7E ;STA $7EE1 + !byte $A5,$06 ;LDA $06 + !byte $85,$AC ;STA $AC + !byte $A5,$07 ;LDA $07 + !byte $85,$AD ;STA $AD + bcs ++ ++ sta gDisplayBytes pha lda #s_sierra jsr PrintByID pla ldy #$01 jsr modify - !byte $2C - jmp .exit + !byte $2C ;BIT $xxxx +++ jmp .exit .dosearch lda gIsBoot0 @@ -155,10 +256,16 @@ jmp .exit + ldy #15 jsr SearchTrack - !byte $CE,WILDCARD,WILDCARD,$EF,WILDCARD,WILDCARD,$AD - !byte WILDCARD,WILDCARD,$49,WILDCARD,$D0,01,$20,$8D - bcs .trybox - sta .cmp1+1 + !byte $CE,WILDCARD,WILDCARD ;DEC $xxxx + !byte $EF,WILDCARD,WILDCARD ;mod->INC $xxxx + !byte $AD,WILDCARD,WILDCARD ;LDA $xxxx + !byte $49,WILDCARD ;EOR #$xx + !byte $D0,01 ;BNE *+3 + !byte $20 ;dummy + !byte $8D ;STA $xxxx + bcc + + jmp .trybox ++ sta .cmp1+1 sta .cmp2+1 sta .cmp3+1 sta .cmp4+1 @@ -188,7 +295,10 @@ + pla ldy #6 jsr compare - !byte $D0,$01,$4C,$A0,WILDCARD,$98 + !byte $D0,$01 ;BNE *+3 + !byte $4C ;dummy + !byte $A0,WILDCARD ;LDY #$xx + !byte $98 ;TYA .bcsexit1 bcs .bcsexit2 .page2 @@ -210,7 +320,10 @@ + pla ldy #8 jsr compare - !byte $59,WILDCARD,WILDCARD,$99,WILDCARD,WILDCARD,$C8,$D0 + !byte $59,WILDCARD,WILDCARD ;EOR $xxxx,Y + !byte $99,WILDCARD,WILDCARD ;STA $xxxx,Y + !byte $C8 ;INY + !byte $D0 ;BNE *+xx .bcsexit2 bcs .bcsexit3 .page3 @@ -227,12 +340,18 @@ pha ldy #5 jsr compare - !byte $88,$30,$01,$4C,$60 + !byte $88 ;DEY + !byte $30,$01 ;BMI *+3 + !byte $4C ;dummy + !byte $60 ;RTS pla bcc + ldy #5 jsr compare - !byte $98,$10,$01,$4C,$60 + !byte $98 ;TYA + !byte $10,$01 ;BPL *+3 + !byte $4C ;dummy + !byte $60 ;RTS .bcsexit3 bcs .bcsexit4 + txa @@ -261,7 +380,11 @@ lda #$D1 ldy #11 jsr compare - !byte $8C,$F4,$B7,WILDCARD,$EC,$B7,$A9,$B7,$A0,$E8,$20 + !byte $8C,$F4,$B7 ;STY $B7F4 + !byte WILDCARD,$EC,$B7 ;STx $B7EC + !byte $A9,$B7 ;LDA #$B7 + !byte $A0,$E8 ;LDY #$E8 + !byte $20 ;JSR $xxxx .bcsexit4 bcs .bcsexit5 txa @@ -293,7 +416,7 @@ pha ldy #3 jsr compare - !byte $AE,$E9,$B7 + !byte $AE,$E9,$B7 ;LDX #$B7E9 bcs + inx inx @@ -301,7 +424,10 @@ + pla ldy #9 jsr compare - !byte $BD,$89,$C0,$A9,WILDCARD,$8D,WILDCARD,WILDCARD,$20 + !byte $BD,$89,$C0 ;LDA $C089,X + !byte $A9,WILDCARD ;LDA #$xx + !byte $8D,WILDCARD,WILDCARD ;STA $xxxx + !byte $20 ;JSR $xxxx .bcsexit6 bcs .exit .page8 @@ -314,7 +440,8 @@ pha ldy #3 jsr compare - !byte $A9,$1C,$8D + !byte $A9,$1C ;LDA #$1C + !byte $8D ;STA $xxxx pla bcs .exit