mirror of
https://github.com/a2-4am/passport.git
synced 2024-12-21 13:29:19 +00:00
shave some bytes
This commit is contained in:
parent
e2a397815c
commit
ce2e3b5813
@ -217,8 +217,7 @@ b4bbcompare
|
||||
bcs _b4bbexit
|
||||
lda #$0C
|
||||
ldx #$84
|
||||
ldy #$03
|
||||
jsr compare
|
||||
jsr compare3
|
||||
!byte $4C,$BB,$B4
|
||||
bcs _b4bbexit
|
||||
ldx #$02 ; track
|
||||
|
@ -33,10 +33,18 @@
|
||||
jmp modify
|
||||
;jmodify1
|
||||
jmp modify1
|
||||
;jmodify2
|
||||
jmp modify2
|
||||
;jmodify3
|
||||
jmp modify3
|
||||
;jcompare
|
||||
jmp compare
|
||||
;jcompare1
|
||||
jmp compare1
|
||||
;jcompare2
|
||||
jmp compare2
|
||||
;jcompare3
|
||||
jmp compare3
|
||||
;gDisplayBytes
|
||||
!fill 10 ; array of ten bytes for use as
|
||||
; substitution strings
|
||||
|
@ -189,9 +189,13 @@ gTargetType = gOnAClearDayYouCanReadForever-$01 ; byte
|
||||
gRAMDiskRef = gTargetType-$01 ; byte
|
||||
gHardDiskRef = gRAMDiskRef-$01 ; byte
|
||||
gDisplayBytes = gHardDiskRef-$0A ; 10 bytes
|
||||
jcompare1 = gDisplayBytes-$03 ; 3-byte
|
||||
jcompare3 = gDisplayBytes-$03 ; 3-byte
|
||||
jcompare2 = jcompare3-$03 ; 3-byte
|
||||
jcompare1 = jcompare2-$03 ; 3-byte
|
||||
jcompare = jcompare1-$03 ; 3-byte
|
||||
jmodify1 = jcompare-$03 ; 3-byte
|
||||
jmodify3 = jcompare-$03 ; 3-byte
|
||||
jmodify2 = jmodify3-$03 ; 3-byte
|
||||
jmodify1 = jmodify2-$03 ; 3-byte
|
||||
jmodify = jmodify1-$03 ; 3-byte
|
||||
jPrintByID = jmodify-$03 ; 3-byte
|
||||
jSearchTrack = jPrintByID-$03 ; 3-byte
|
||||
@ -206,8 +210,12 @@ gNIBTableBase = gNIBTableFF-$7F ; 127 byte
|
||||
!ifdef MODULE {
|
||||
compare = jcompare
|
||||
compare1 = jcompare1
|
||||
compare2 = jcompare2
|
||||
compare3 = jcompare3
|
||||
modify = jmodify
|
||||
modify1 = jmodify1
|
||||
modify2 = jmodify2
|
||||
modify3 = jmodify3
|
||||
PrintByID = jPrintByID
|
||||
SearchTrack = jSearchTrack
|
||||
CallRWTS = jCallRWTS
|
||||
|
@ -173,10 +173,20 @@ all_done_set
|
||||
sec
|
||||
rts
|
||||
|
||||
; utility functions for common cases
|
||||
; (from the caller's perspective, these have the side effect of setting Y,
|
||||
; since the compare routine will 'save' and 'restore' the value we're setting here)
|
||||
compare3
|
||||
ldy #$03
|
||||
!byte $2C
|
||||
; /!\ execution falls through here
|
||||
compare2
|
||||
ldy #$02
|
||||
!byte $2C
|
||||
; /!\ execution falls through here
|
||||
compare1
|
||||
ldy #$01
|
||||
; /!\ execution falls through here
|
||||
|
||||
;-------------------------------
|
||||
; compare subroutine
|
||||
; in: A = sector
|
||||
|
@ -37,8 +37,7 @@
|
||||
!byte $4C,$3B,$02; JMP $023B
|
||||
bcs +
|
||||
ldx #$45
|
||||
ldy #$03
|
||||
jsr compare ; and T00,S00,$45 =
|
||||
jsr compare3 ; and T00,S00,$45 =
|
||||
!byte $4C,$01,$03; JMP $0301
|
||||
tax
|
||||
+
|
||||
|
@ -33,12 +33,11 @@
|
||||
!byte $20,$D1,$02; JSR $02D1
|
||||
bcs +
|
||||
ldx #$41
|
||||
ldy #$03
|
||||
jsr compare
|
||||
jsr compare3
|
||||
!byte $4C,$01,$03; JMP $0301
|
||||
bcc +
|
||||
ldx #$37
|
||||
jsr compare
|
||||
jsr compare3
|
||||
!byte $4C,$01,$03; JMP $0301
|
||||
+ tax
|
||||
}
|
||||
|
@ -115,15 +115,14 @@ IDDOS33
|
||||
; DOS 3.3 and most derivatives have STA $08FE at $081C
|
||||
;
|
||||
ldx #$1C
|
||||
ldy #$03
|
||||
jsr compare ; if T00,S00,$1C ==
|
||||
jsr compare3 ; if T00,S00,$1C ==
|
||||
!byte $8D,$FE,$08
|
||||
bcc @exit ; passport-test-suite/Binomial Multiplication.woz [C=0] matches
|
||||
;
|
||||
; Variant jumps to $08F0 and back but is still safe to trace.
|
||||
; Check for this jump and also match the code at $08F0 exactly.
|
||||
;
|
||||
jsr compare ; if T00,S00,$1C ==
|
||||
jsr compare3 ; if T00,S00,$1C ==
|
||||
!byte $4C,$F0,$08; JMP $08F0
|
||||
bcs @exit ; unknown code at $081C -> failure
|
||||
ldx #$F0
|
||||
|
@ -22,8 +22,7 @@
|
||||
!byte $85,$3F
|
||||
bcs @notMicrograms ; passport-test-suite/Shapes and Patterns.woz [C=0] matches
|
||||
ldx #$42
|
||||
ldy #$02
|
||||
jsr compare
|
||||
jsr compare2
|
||||
!byte $4C,$00
|
||||
; passport-test-suite/Shapes and Patterns.woz [C=0] matches
|
||||
tax
|
||||
|
@ -12,8 +12,7 @@
|
||||
IDPhoenix
|
||||
lda #$00
|
||||
ldx #$B8
|
||||
ldy #$03
|
||||
jsr compare
|
||||
jsr compare3
|
||||
!byte $AC,$B7,$F6
|
||||
rts ; passport-test-suite/Zoom Grafix 26-JAN-82.woz [C=0] matches
|
||||
}
|
||||
|
@ -97,8 +97,7 @@ TraceSpecDel4
|
||||
|
||||
lda #$0B
|
||||
ldx #$00
|
||||
ldy #$03
|
||||
jsr compare ; if $1B00 ==
|
||||
jsr compare3 ; if $1B00 ==
|
||||
!byte $4C,$4D,$2A
|
||||
SDfail
|
||||
php
|
||||
|
@ -19,13 +19,11 @@
|
||||
!byte $C9,$09
|
||||
bcs @notTSR
|
||||
ldx #$FE
|
||||
ldy #$02
|
||||
jsr compare
|
||||
jsr compare2
|
||||
!byte $B0,$0F
|
||||
bcs @notTSR
|
||||
ldx #$1C
|
||||
iny
|
||||
jsr compare
|
||||
jsr compare3
|
||||
!byte $20,$B3,$08
|
||||
; passport-test-suite/Dawn Patrol.woz [C=0] matches
|
||||
@notTSR
|
||||
|
12
src/modify.a
12
src/modify.a
@ -1,7 +1,17 @@
|
||||
; utility functions for common cases
|
||||
; (from the caller's perspective, these have the side effect of setting Y,
|
||||
; since the modify routine will 'save' and 'restore' the value we're setting here)
|
||||
modify3
|
||||
ldy #$03
|
||||
!byte $2C
|
||||
; /!\ execution falls through here
|
||||
modify2
|
||||
ldy #$02
|
||||
!byte $2C
|
||||
; /!\ execution falls through here
|
||||
modify1
|
||||
ldy #$01
|
||||
; /!\ execution falls through here
|
||||
|
||||
;-------------------------------
|
||||
; modify subroutine
|
||||
; in: A = starting address (high byte)
|
||||
|
@ -19,8 +19,7 @@
|
||||
jsr inx8
|
||||
jsr PrintByID
|
||||
!byte s_a5count
|
||||
ldy #$02
|
||||
jsr modify
|
||||
jsr modify2
|
||||
!byte $D0,$7B ; BNE +$7B
|
||||
.exit
|
||||
}
|
||||
|
@ -27,8 +27,7 @@
|
||||
bcs .exit ; passport-test-suite/S.A.G.A. 6.woz [C=0] matches
|
||||
jsr PrintByID
|
||||
!byte s_advint
|
||||
ldy #$03
|
||||
jsr modify
|
||||
jsr modify3
|
||||
!byte $D1 ;CLC
|
||||
!byte $59,$A7 ;BCC +$6E
|
||||
.exit
|
||||
|
@ -33,8 +33,7 @@
|
||||
bcs .exit ; passport-test-suite/Odd One Out 1990.woz [C=0] matches
|
||||
jsr PrintByID
|
||||
!byte s_bbf9
|
||||
ldy #$02
|
||||
jsr modify
|
||||
jsr modify2
|
||||
!byte $18,$60
|
||||
.exit
|
||||
}
|
||||
|
@ -19,8 +19,7 @@
|
||||
bcs .exit ; passport-test-suite/Elementary Vol. 2 v3.2 limited backup.woz [C=0] matches
|
||||
jsr PrintByID
|
||||
!byte s_bootcounter
|
||||
ldy #$03
|
||||
jsr modify ; then set T01,S00,$00 =
|
||||
jsr modify3 ; then set T01,S00,$00 =
|
||||
!byte $4C,$03,$1B
|
||||
.exit
|
||||
}
|
||||
|
@ -13,8 +13,7 @@
|
||||
bne .exit
|
||||
lda #$08
|
||||
ldx #$D6
|
||||
ldy #$02
|
||||
jsr compare ; if T01,S08,$D6 ==
|
||||
jsr compare2 ; if T01,S08,$D6 ==
|
||||
!byte $4C,$D5
|
||||
bcs .exit ; passport-test-suite/Castle Wolfenstein.woz [C=0] matches
|
||||
iny
|
||||
|
@ -34,7 +34,6 @@ E7Everywhere
|
||||
bcs + ; passport-test-suite/Garfield Trivia Game.woz [C=0] matches
|
||||
jsr PrintByID ; passport-test-suite/Curious George Goes Shopping.woz [C=0] matches
|
||||
!byte s_e7everywhere
|
||||
ldy #$02
|
||||
jsr modify
|
||||
jsr modify2
|
||||
!byte $18,$60 ; CLC/RTS
|
||||
+
|
||||
|
@ -36,8 +36,7 @@
|
||||
jsr PrintByID
|
||||
!byte s_fbff
|
||||
lda gDisplayBytes
|
||||
ldy #$03
|
||||
jsr modify
|
||||
jsr modify3
|
||||
; unconditional jump to success path
|
||||
!byte $18 ; CLC
|
||||
!byte $90 ; BCC +
|
||||
|
@ -13,8 +13,7 @@
|
||||
|
||||
lda #$01
|
||||
ldx #$95
|
||||
ldy #$03
|
||||
jsr compare ; if T01,S01,$95 ==
|
||||
jsr compare3 ; if T01,S01,$95 ==
|
||||
!byte $4C,$32,$A3
|
||||
bcs .exit ; passport-test-suite/Harvey by Primes.woz [C=0] here
|
||||
|
||||
@ -26,8 +25,7 @@
|
||||
!byte s_beforedos
|
||||
|
||||
inx
|
||||
tay
|
||||
jsr modify ; then set T01,S01,$96 =
|
||||
jsr modify1 ; then set T01,S01,$96 =
|
||||
!byte $47
|
||||
.exit
|
||||
}
|
||||
|
@ -189,8 +189,7 @@
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
ldy #$02
|
||||
jsr modify ; disable CPU-burning JSR after data prologue
|
||||
jsr modify2 ; disable CPU-burning JSR after data prologue
|
||||
!byte $F0,$03
|
||||
+
|
||||
ldy #(.dataEpilogue1End-.dataEpilogue1Start)
|
||||
@ -223,8 +222,7 @@
|
||||
LDY $2F
|
||||
.diskVolumeEnd
|
||||
bcs +
|
||||
ldy #$02
|
||||
jsr modify ; don't use disk volume number to initialize data field checksum
|
||||
jsr modify2 ; don't use disk volume number to initialize data field checksum
|
||||
LDY #$00
|
||||
+
|
||||
ldy #(.alternatingTrackEnd-.alternatingTrackStart)
|
||||
|
@ -32,8 +32,7 @@
|
||||
!byte s_beforedos
|
||||
|
||||
ldx #$EC
|
||||
ldy #$02
|
||||
jsr modify ; then set T02,S00,$EC =
|
||||
jsr modify2 ; then set T02,S00,$EC =
|
||||
!byte $84,$9D
|
||||
.exit
|
||||
}
|
||||
|
@ -34,8 +34,7 @@
|
||||
!byte s_beforedos
|
||||
|
||||
ldx #$F6
|
||||
ldy #$02
|
||||
jsr modify ; then set T02,S00,$F6 =
|
||||
jsr modify2 ; then set T02,S00,$F6 =
|
||||
!byte $84,$9D
|
||||
.exit
|
||||
}
|
||||
|
@ -69,8 +69,7 @@
|
||||
!byte s_beforedos
|
||||
|
||||
inx
|
||||
ldy #$03
|
||||
jsr modify ; then set offset+1 to
|
||||
jsr modify3 ; then set offset+1 to
|
||||
!byte $4C,$84,$9D
|
||||
.exit
|
||||
}
|
||||
|
@ -26,8 +26,7 @@
|
||||
jsr PrintByID
|
||||
!byte s_pdi
|
||||
jsr inx0C
|
||||
ldy #$02
|
||||
jsr modify
|
||||
jsr modify2
|
||||
!byte $99,$8E ; jmp directly to decoder
|
||||
.exit
|
||||
}
|
||||
|
@ -152,11 +152,10 @@
|
||||
; bypass check for duplicate T00,S00
|
||||
;
|
||||
ldx #$93
|
||||
ldy #$03
|
||||
jsr compare ; if T00,S01,$93 ==
|
||||
jsr compare3 ; if T00,S01,$93 ==
|
||||
!byte $4C,$00,$B8
|
||||
bcs .skipcheck ; passport-test-suite/Ultima IV.woz [C=0] matches
|
||||
jsr modify ; then set T00,S01,$93 =
|
||||
jsr modify3 ; then set T00,S01,$93 =
|
||||
!byte $AC,$E5,$B7
|
||||
.skipcheck
|
||||
|
||||
|
@ -52,8 +52,7 @@
|
||||
!byte $B9,WILDCARD,WILDCARD
|
||||
!byte $8D,$AC,$D5
|
||||
bcs + ; passport-test-suite/MECC Dataquest - Europe and Soviet Union.woz [C=0] matches
|
||||
ldy #$03
|
||||
jsr modify
|
||||
jsr modify3
|
||||
!byte $A9,$00
|
||||
!byte $24
|
||||
+
|
||||
|
@ -496,19 +496,16 @@
|
||||
tax
|
||||
lda .cmp1+1
|
||||
pha
|
||||
ldy #2
|
||||
jsr compare
|
||||
jsr compare2
|
||||
!byte $B5,$B7
|
||||
pla
|
||||
bcc +
|
||||
pha
|
||||
ldy #2
|
||||
jsr compare
|
||||
jsr compare2
|
||||
!byte $D9,$03
|
||||
pla
|
||||
bcc +
|
||||
ldy #2
|
||||
jsr compare
|
||||
jsr compare2
|
||||
!byte $00,$BD
|
||||
.bcsexit5
|
||||
bcs .bcsexit6
|
||||
|
@ -88,8 +88,7 @@
|
||||
adc #$48
|
||||
tax
|
||||
pla
|
||||
ldy #2
|
||||
jsr modify
|
||||
jsr modify2
|
||||
!byte $A0,$B9
|
||||
bvc .jmpexit
|
||||
|
||||
|
@ -29,8 +29,7 @@ SRA
|
||||
jsr PrintByID
|
||||
!byte s_sra
|
||||
inx
|
||||
ldy #$02
|
||||
jsr modify
|
||||
jsr modify2
|
||||
!byte $0F,$5A ; new JSR entry point
|
||||
@next dec @sector+1
|
||||
bpl @sector
|
||||
|
@ -40,16 +40,15 @@
|
||||
bcs .nextsector
|
||||
|
||||
ldx #$76
|
||||
ldy #$03
|
||||
jsr compare
|
||||
jsr compare3
|
||||
!byte $23,$2A,$28
|
||||
bcc .variant1 ; passport-test-suite/Creative Contraptions.woz [C=0] matches
|
||||
|
||||
jsr compare
|
||||
jsr compare3
|
||||
!byte $70,$79,$77
|
||||
bcc .variant2 ; passport-test-suite/Wortgefecht.woz [C=0] matches
|
||||
|
||||
jsr compare
|
||||
jsr compare3
|
||||
!byte $23,$2A,$24 ; passport-test-suite/Metric System Tutor.woz [C=0] matches
|
||||
bcc .variant3
|
||||
|
||||
|
@ -14,8 +14,7 @@ T00_ARTSCI
|
||||
|
||||
lda #$0A
|
||||
ldx #$FE
|
||||
ldy #$02
|
||||
jsr compare
|
||||
jsr compare2
|
||||
!byte $DE,$D5
|
||||
bcs +
|
||||
|
||||
|
@ -28,8 +28,7 @@
|
||||
bne .exit
|
||||
lda #$05 ; sector to check for DOS 3.3 variant
|
||||
.check ldx #$03
|
||||
ldy #$03
|
||||
jsr compare ; if T00,S0(5|7),$03 ==
|
||||
jsr compare3 ; if T00,S0(5|7),$03 ==
|
||||
!byte $4E,$06,$BB
|
||||
bcs .exit
|
||||
jsr PrintByID
|
||||
@ -40,11 +39,11 @@
|
||||
|
||||
lda #$01
|
||||
ldx #$38
|
||||
jsr compare ; if T00,S01,$38 ==
|
||||
jsr compare3 ; if T00,S01,$38 ==
|
||||
!byte $20,$03,$BB; JSR $BB03
|
||||
bcc .variant1
|
||||
|
||||
jsr compare ; if T00,S01,$38 ==
|
||||
jsr compare3 ; if T00,S01,$38 ==
|
||||
!byte $4C,$03,$BB; JMP $BB03
|
||||
bcs .exit
|
||||
lda #$05
|
||||
@ -55,13 +54,11 @@
|
||||
!byte $39,$41
|
||||
bcs .exit
|
||||
;variant3
|
||||
ldy #$02
|
||||
jsr modify ; then set T00,S05,$6B =
|
||||
jsr modify2 ; then set T00,S05,$6B =
|
||||
!byte $6B,$F6 ; encrypted, decrypts to 'BNE +$5C' which will unconditionally branch to success path at $BBC9
|
||||
lda #$06
|
||||
ldx #$0F
|
||||
dey
|
||||
jsr modify ; and set T00,S06,$0F =
|
||||
jsr modify1 ; and set T00,S06,$0F =
|
||||
!byte $89 ; encrypted, decrypts to $10 which is the expected nibble count value
|
||||
; passport-test-suite/Trivia Fever.woz [V=0] reaches here
|
||||
bvc .exit ; unconditional branch (V is always 0 coming out of modify)
|
||||
|
@ -17,13 +17,12 @@
|
||||
|
||||
lda #$01
|
||||
ldx #$48
|
||||
ldy #$02
|
||||
jsr compare
|
||||
jsr compare2
|
||||
!byte $00,$9B
|
||||
bcs .exit ; passport-test-suite/Fathoms 40.woz [C=0] matches
|
||||
jsr PrintByID
|
||||
!byte s_datasoft
|
||||
jsr modify
|
||||
jsr modify2
|
||||
!byte $76,$9C
|
||||
.exit
|
||||
}
|
||||
|
@ -63,8 +63,7 @@
|
||||
lda #$08
|
||||
inx
|
||||
inx ; now $12 or $18 (depending on which compare matched)
|
||||
ldy #$02
|
||||
jsr modify ; then set T00,S08,$12/18 =
|
||||
jsr modify2 ; then set T00,S08,$12/18 =
|
||||
!byte $A9,$00 ; LDA #$00
|
||||
.exit
|
||||
}
|
||||
|
@ -41,8 +41,7 @@
|
||||
|
||||
lda #$01
|
||||
ldx #$38
|
||||
ldy #$03
|
||||
jsr compare
|
||||
jsr compare3
|
||||
!byte $20,$93,$37
|
||||
bcs + ; passport-test-suite/Bellhop.woz [C=0] matches
|
||||
jsr modify1
|
||||
|
@ -12,13 +12,12 @@
|
||||
!zone {
|
||||
lda gIsDOS32
|
||||
bne .exit
|
||||
lda #$0b
|
||||
lda #$0B
|
||||
ldx #$84
|
||||
ldy #$03
|
||||
jsr compare ; if T00,S0B,$84 ==
|
||||
jsr compare3 ; if T00,S0B,$84 ==
|
||||
!byte $4C,$F0,$BC
|
||||
bcs .exit ; passport-test-suite/Demolition Division.woz [C=0] matches
|
||||
jsr modify ; then set T00,S0B,$84 =
|
||||
jsr modify3 ; then set T00,S0B,$84 =
|
||||
!byte $AD,$E9,$B7
|
||||
.exit
|
||||
}
|
||||
|
@ -16,12 +16,11 @@
|
||||
EARTHWARE
|
||||
lda #$02
|
||||
ldx #$F6
|
||||
ldy #$03
|
||||
jsr compare
|
||||
jsr compare3
|
||||
!byte $4C,$89,$B6
|
||||
bcs @exit ; passport-test-suite/Zoo Master.woz [C=0] here
|
||||
jsr PrintByID
|
||||
!byte s_bytrack
|
||||
jsr modify
|
||||
jsr modify3
|
||||
!byte $BD,$8C,$C0
|
||||
@exit
|
||||
|
@ -18,15 +18,14 @@
|
||||
|
||||
lda #$0C
|
||||
ldx #$84
|
||||
ldy #$03
|
||||
jsr compare ; if T00,S0C,$84 ==
|
||||
jsr compare3 ; if T00,S0C,$84 ==
|
||||
!byte $4C,$00,$B5; JMP $B500
|
||||
bcs .exit
|
||||
|
||||
jsr PrintByID
|
||||
!byte s_beforedos
|
||||
|
||||
jsr modify ; then set T00,$0C,$84 =
|
||||
jsr modify3 ; then set T00,$0C,$84 =
|
||||
!byte $AD,$E9,$B7
|
||||
.exit
|
||||
}
|
||||
|
@ -98,8 +98,7 @@ _jmpbbfe
|
||||
|
||||
lda #$00
|
||||
ldx #$4B
|
||||
ldy #$02
|
||||
jsr compare ; if T00,S00,$4B ==
|
||||
jsr compare2 ; if T00,S00,$4B ==
|
||||
!byte $FE,$BB
|
||||
bcs .exit
|
||||
|
||||
@ -128,8 +127,7 @@ _jmpbbfe
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
ldy #$03
|
||||
jsr modify
|
||||
jsr modify3
|
||||
!byte $6C,$FD,$08
|
||||
|
||||
ldx #$FE
|
||||
|
@ -56,8 +56,7 @@ _jmpbeb1
|
||||
!byte $A9
|
||||
bcs .exit
|
||||
ldx #$5E
|
||||
ldy #$03
|
||||
jsr compare ; and T00,S02,$5E ==
|
||||
jsr compare3 ; and T00,S02,$5E ==
|
||||
!byte $20,$BB,WILDCARD
|
||||
bcs .exit ; passport-test-suite/Easy as ABC.woz [C=0] matches
|
||||
ldx #$49 ; passport-test-suite/Spelling Rules.woz [C=0] matches
|
||||
|
@ -11,8 +11,7 @@
|
||||
|
||||
lda #$07
|
||||
ldx #$00
|
||||
ldy #$03
|
||||
jsr compare
|
||||
jsr compare3
|
||||
!byte $20,$CC,$B6
|
||||
bcs .exit
|
||||
txa
|
||||
|
@ -34,11 +34,10 @@
|
||||
|
||||
lda #$0A
|
||||
ldx #$12
|
||||
ldy #$02
|
||||
jsr compare
|
||||
jsr compare2
|
||||
!byte $B1,$48
|
||||
bcs .exit
|
||||
jsr modify
|
||||
jsr modify2
|
||||
!byte $A9,$00
|
||||
.exit
|
||||
}
|
||||
|
@ -11,8 +11,7 @@
|
||||
|
||||
lda #$07
|
||||
ldx #$00
|
||||
ldy #$03
|
||||
jsr compare
|
||||
jsr compare3
|
||||
!byte $20,$AF,$BE
|
||||
bcs .exit
|
||||
lda #$08
|
||||
|
@ -11,8 +11,7 @@
|
||||
|
||||
lda #$08
|
||||
ldx #$5A
|
||||
ldy #$03
|
||||
jsr compare ; and T00,S08,$5A ==
|
||||
jsr compare3 ; and T00,S08,$5A ==
|
||||
!byte $4C,$B4,$36; JMP $36B4
|
||||
bcs .exit
|
||||
lda #$00
|
||||
@ -40,8 +39,7 @@
|
||||
!byte $24 ; BIT
|
||||
tya
|
||||
ldx #$47
|
||||
ldy #$03
|
||||
jsr compare ; if T00,S01,$47 ==
|
||||
jsr compare3 ; if T00,S01,$47 ==
|
||||
!byte $4C,$CE,$36; JMP $36CE
|
||||
bcs .exit
|
||||
inx
|
||||
|
@ -23,8 +23,7 @@
|
||||
bcs .exit ; passport-test-suite/Miner 2049er.woz [C=0] matches
|
||||
jsr PrintByID
|
||||
!byte s_microfun
|
||||
ldy #$02
|
||||
jsr modify
|
||||
jsr modify2
|
||||
!byte $18 ; CLC
|
||||
!byte $60 ; RTS
|
||||
.exit
|
||||
|
@ -11,11 +11,10 @@
|
||||
|
||||
lda #$02
|
||||
ldx #$5E
|
||||
ldy #$03
|
||||
jsr compare
|
||||
jsr compare3
|
||||
!byte $4C,$B8,$B6
|
||||
bcs .exit ; passort-test-suite/Crown Of Arthain.woz [C=0] matches
|
||||
jsr modify
|
||||
jsr modify3
|
||||
!byte $20,$B8,$B8
|
||||
.exit
|
||||
}
|
||||
|
@ -11,11 +11,10 @@
|
||||
bne .exit
|
||||
lda #$01
|
||||
ldx #$48
|
||||
ldy #$02
|
||||
jsr compare ; and T00,S01,$48 ==
|
||||
jsr compare2 ; and T00,S01,$48 ==
|
||||
!byte $03,$9B
|
||||
bcs .exit ; passport-test-suite/Tangrams Puzzler.woz [C=0] matches
|
||||
jsr modify ; then set T00,S01,$48 =
|
||||
jsr modify2 ; then set T00,S01,$48 =
|
||||
!byte $84,$9D
|
||||
.exit
|
||||
}
|
||||
|
@ -14,8 +14,7 @@
|
||||
bne .exit
|
||||
lda #$06
|
||||
ldx #$F2
|
||||
ldy #$03
|
||||
jsr compare ; if T00,S06,$F2 ==
|
||||
jsr compare3 ; if T00,S06,$F2 ==
|
||||
!byte $20,$B6,$B6
|
||||
bcs .exit ; passport-test-suite/The Function Game.woz [C=0] matches
|
||||
jsr PrintByID
|
||||
|
@ -11,40 +11,30 @@ _nibtable
|
||||
|
||||
lda #$02
|
||||
ldx #$6D
|
||||
ldy #$03
|
||||
jsr compare ; and T00,S02,$6D ==
|
||||
jsr compare3 ; and T00,S02,$6D ==
|
||||
!byte $BD,$29,$BA
|
||||
bcs .checkwrite
|
||||
lda #$02
|
||||
ldx #$82
|
||||
ldy #$03
|
||||
jsr compare ; and T00,S02,$82 ==
|
||||
jsr compare3 ; and T00,S02,$82 ==
|
||||
!byte $BD,$29,$BA
|
||||
bcs .checkwrite
|
||||
lda #$02
|
||||
ldx #$95
|
||||
ldy #$03
|
||||
jsr compare ; and T00,S02,$95 ==
|
||||
jsr compare3 ; and T00,S02,$95 ==
|
||||
!byte $BD,$29,$BA
|
||||
bcs .checkwrite
|
||||
jsr .fixwrite
|
||||
.checkwrite
|
||||
lda #$03
|
||||
ldx #$09
|
||||
ldy #$03
|
||||
jsr compare ; if T00,S03,$09 ==
|
||||
jsr compare3 ; if T00,S03,$09 ==
|
||||
!byte $59,$00,$BA
|
||||
bcs .exit
|
||||
lda #$03
|
||||
ldx #$1A
|
||||
ldy #$03
|
||||
jsr compare ; and T00,S03,$1A ==
|
||||
jsr compare3 ; and T00,S03,$1A ==
|
||||
!byte $59,$00,$BA
|
||||
bcs .exit
|
||||
lda #$03
|
||||
ldx #$2A
|
||||
ldy #$03
|
||||
jsr compare ; and T00,S03,$2A ==
|
||||
jsr compare3 ; and T00,S03,$2A ==
|
||||
!byte $D9,$00,$BA
|
||||
bcs .exit
|
||||
jsr .fixread
|
||||
|
@ -29,8 +29,7 @@
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
ldy #$02
|
||||
jsr modify
|
||||
jsr modify2
|
||||
!byte $A9,$00 ;LDA #$00
|
||||
ldy #$06
|
||||
jsr SearchTrack
|
||||
@ -42,8 +41,7 @@
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
ldy #$02
|
||||
jsr modify
|
||||
jsr modify2
|
||||
!byte $A9,$00 ;LDA #$00
|
||||
|
||||
;Monopoly
|
||||
@ -61,7 +59,7 @@
|
||||
jsr SearchTrack
|
||||
!byte $4C,$56,$BB ;JMP $BB56
|
||||
bcs .exit
|
||||
jsr modify
|
||||
jsr modify3
|
||||
!byte $AD,$00,$E0 ;LDA $E000
|
||||
.exit
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
;-------------------------------
|
||||
; #RDOS13
|
||||
; #rdos13
|
||||
; patch RDOS to be 16-sector compatible
|
||||
;
|
||||
; module by qkumba
|
||||
@ -45,11 +45,10 @@
|
||||
|
||||
lda #$0A
|
||||
ldx #$75
|
||||
ldy #2
|
||||
jsr compare
|
||||
jsr compare2
|
||||
!byte $C9,$D5 ;CMP #$D5
|
||||
bcc +
|
||||
jsr modify
|
||||
jsr modify2
|
||||
!byte $C9,$D5 ;CMP #$D5
|
||||
|
||||
+
|
||||
|
@ -26,13 +26,12 @@ _rol1e
|
||||
!byte $BD,$02,$01
|
||||
bcs .exit
|
||||
ldx #$64
|
||||
ldy #$02
|
||||
jsr compare ; and T00,S03,$64 ==
|
||||
jsr compare2 ; and T00,S03,$64 ==
|
||||
!byte $A5,$1E
|
||||
bcs .exit ; passport-test-suite/Crypto Cube.woz [C=0] matches
|
||||
jsr PrintByID
|
||||
!byte s_rol1e
|
||||
jsr modify ; then set T00,S03,$64 =
|
||||
jsr modify2 ; then set T00,S03,$64 =
|
||||
!byte $A9,$F7
|
||||
.exit
|
||||
}
|
||||
|
@ -26,8 +26,7 @@
|
||||
|
||||
lda #$01
|
||||
ldx #$48
|
||||
ldy #$02
|
||||
jsr compare ; if T00,S01,$48 ==
|
||||
jsr compare2 ; if T00,S01,$48 ==
|
||||
!byte $C1,$B3
|
||||
bcs .exit ; primary pattern not found, bail
|
||||
|
||||
@ -45,16 +44,16 @@
|
||||
|
||||
lda #$01 ; presence of JMP $B6B3 also indicates code at
|
||||
ldx #$48 ; $B41F that copies the real DOS code back to $B6B3
|
||||
ldy #$02 ; so we modify $B747 to jump to that (it exits via $9D84)
|
||||
jsr modify ; and set T00,S01,$48 =
|
||||
; so we modify $B747 to jump to that (it exits via $9D84)
|
||||
jsr modify2 ; and set T00,S01,$48 =
|
||||
!byte $1F,$B4
|
||||
bvc .variant1 ; always branches
|
||||
|
||||
.variant0
|
||||
lda #$01 ; lack of JMP $B6B3 indicates an earlier variant
|
||||
ldx #$48 ; which has no useful code at $B3C1, so we
|
||||
ldy #$02 ; modify $B747 to jump directly to $9D84
|
||||
jsr modify
|
||||
; modify $B747 to jump directly to $9D84
|
||||
jsr modify2
|
||||
!byte $84,$9D
|
||||
; /!\ execution falls through here
|
||||
|
||||
@ -62,8 +61,7 @@
|
||||
;A=#$01 here regardless of how we got here
|
||||
;Y=#$02 here regardless of how we got here
|
||||
ldx #$87
|
||||
iny
|
||||
jsr compare ; if T00,S01,$87 ==
|
||||
jsr compare3 ; if T00,S01,$87 ==
|
||||
!byte $6C,$58,$9D
|
||||
bcs .variant2 ; passport-test-suite/Pac-Man (Thunder Mountain).woz [C=0] here
|
||||
ldx #$8E
|
||||
@ -76,8 +74,7 @@
|
||||
|
||||
.variant2
|
||||
inx
|
||||
ldy #$03
|
||||
jsr compare ; if T00,S01,$88 ==
|
||||
jsr compare3 ; if T00,S01,$88 ==
|
||||
!byte $6C,$58,$9D
|
||||
bcs .exit ; passport/test-suite/Problem Solving in Algebra.woz [C=0] here
|
||||
; if we didn't find indirect jump in either location, bail
|
||||
|
@ -144,8 +144,7 @@
|
||||
pla
|
||||
inx
|
||||
inx
|
||||
ldy #2
|
||||
jsr compare
|
||||
jsr compare2
|
||||
.cmpbyte5
|
||||
!byte $20,$D1 ; SMC
|
||||
|
||||
|
@ -87,8 +87,7 @@
|
||||
bcs .exit
|
||||
lda #$08
|
||||
ldx #$8C
|
||||
ldy #$02
|
||||
jsr compare ; and T00,S08,$8C ==
|
||||
jsr compare2 ; and T00,S08,$8C ==
|
||||
!byte $69,$BA
|
||||
bcc .yes ; passport-test-suite/Green Globs and Graphing Equations.woz [C=0] matches
|
||||
.exit
|
||||
@ -109,8 +108,7 @@
|
||||
!byte $20,$C3,$BC
|
||||
lda #$08
|
||||
ldx #$8C
|
||||
ldy #$02
|
||||
jsr modify ; and set T00,S08,$8C =
|
||||
jsr modify2 ; and set T00,S08,$8C =
|
||||
!byte $A0,$B9
|
||||
.exit2
|
||||
}
|
||||
|
@ -12,11 +12,10 @@
|
||||
|
||||
lda #$08
|
||||
ldx #$5A
|
||||
ldy #$03
|
||||
jsr compare
|
||||
jsr compare3
|
||||
!byte $4C,$71,$A9 ; JMP $A971
|
||||
bcs .exit
|
||||
jsr modify
|
||||
jsr modify3
|
||||
!byte $48,$A0,$01
|
||||
lda #$06
|
||||
ldx #$56
|
||||
|
@ -13,8 +13,7 @@
|
||||
bne .exit
|
||||
lda #$0F
|
||||
ldx #$31
|
||||
ldy #$03
|
||||
jsr compare
|
||||
jsr compare3
|
||||
!byte $C9,$CF,$A0
|
||||
bcs .exit
|
||||
lda #TRUE
|
||||
|
@ -26,8 +26,7 @@
|
||||
jsr PrintByID
|
||||
!byte s_badblock
|
||||
jsr inx4
|
||||
ldy #$02
|
||||
jsr modify
|
||||
jsr modify2
|
||||
!byte $F0,$0E
|
||||
.exit
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user