mirror of
https://github.com/a2-4am/passport.git
synced 2024-11-01 07:07:59 +00:00
Merge pull request #1 from peterferrie/master
Use local labels, add FBFF patcher, update Sierra patcher
This commit is contained in:
commit
b614f2d4bc
@ -8,6 +8,7 @@
|
||||
; out C clear if sequence was found
|
||||
; C set if sequence was not found
|
||||
;-------------------------------
|
||||
!zone {
|
||||
IsF7
|
||||
lda $C0E9
|
||||
lda #$00
|
||||
@ -19,34 +20,34 @@ IsF7
|
||||
bpl -
|
||||
cmp #$F7
|
||||
beq +
|
||||
restart iny
|
||||
.restart iny
|
||||
bne -
|
||||
dec nibcount
|
||||
bne -
|
||||
beq F7fail
|
||||
-
|
||||
+ lda $C0EC
|
||||
+
|
||||
- lda $C0EC
|
||||
bpl -
|
||||
cmp #$F6
|
||||
bne restart
|
||||
bne .restart
|
||||
- lda $C0EC
|
||||
bpl -
|
||||
cmp #$EF
|
||||
bne restart
|
||||
bne .restart
|
||||
- lda $C0EC
|
||||
bpl -
|
||||
cmp #$EE
|
||||
bne restart
|
||||
bne .restart
|
||||
- lda $C0EC
|
||||
bpl -
|
||||
cmp #$AB
|
||||
bne restart
|
||||
bne .restart
|
||||
clc
|
||||
!byte $24 ; hides SEC
|
||||
F7fail sec
|
||||
lda $C0E8
|
||||
rts
|
||||
|
||||
}
|
||||
;-------------------------------
|
||||
; IsSyncBytes
|
||||
; check if track is mostly $FF bytes
|
||||
@ -106,6 +107,7 @@ nibloop ldx $C0EC
|
||||
; out: C clear if protection code was found
|
||||
; C set if protection code was not found
|
||||
;-------------------------------
|
||||
!zone {
|
||||
xHeredityDog
|
||||
lda $08FE
|
||||
clc
|
||||
@ -114,27 +116,28 @@ xHeredityDog
|
||||
ldx #$16
|
||||
ldy #$0B
|
||||
jsr CompareMemory
|
||||
!byte $F0,05,$A2,$B2,$4C,$F0,$BB,$BD,$8C,$C0,$A9
|
||||
!byte $F0,$05,$A2,$B2,$4C,$F0,$BB,$BD,$8C,$C0,$A9
|
||||
pla
|
||||
bcc analyze_maybe
|
||||
jmp no1
|
||||
bcc .maybe
|
||||
jmp .no
|
||||
|
||||
; don't check byte at $BB21 because it can vary
|
||||
|
||||
analyze_maybe
|
||||
.maybe
|
||||
ldx #$22
|
||||
ldy #$3E
|
||||
jsr CompareMemory
|
||||
!byte $8D,00,02,$BD,$8C,$C0,$10,$FB,$C9,$EB,$D0,$F7,$BD,$8C
|
||||
!byte $8D,$00,$02,$BD,$8C,$C0,$10,$FB,$C9,$EB,$D0,$F7,$BD,$8C
|
||||
!byte $C0,$10,$FB,$C9,$D5,$D0,$EE,$BD,$8C,$C0,$10,$FB,$C9,$AA,$D0,$E5
|
||||
!byte $A9,$4C,$A0,00,$99,00,$95,$88,$D0,$FA,$CE,$46,$BB,$AD,$46,$BB
|
||||
!byte $C9,07,$D0,$EC,$A9,$18,$8D,$42,$B9,$A9,$0A,$8D,$ED,$B7,$D0,05
|
||||
bcs no1
|
||||
yes1
|
||||
!byte $A9,$4C,$A0,$00,$99,$00,$95,$88,$D0,$FA,$CE,$46,$BB,$AD,$46,$BB
|
||||
!byte $C9,$07,$D0,$EC,$A9,$18,$8D,$42,$B9,$A9,$0A,$8D,$ED,$B7,$D0,$05
|
||||
bcs .no
|
||||
.yes
|
||||
lda #$80
|
||||
sta T00S0A
|
||||
no1
|
||||
.no
|
||||
rts
|
||||
}
|
||||
|
||||
;-------------------------------
|
||||
; xSunburst
|
||||
@ -146,6 +149,7 @@ no1
|
||||
; out: C clear if Sunburst RWTS was found
|
||||
; C set otherwise
|
||||
;-------------------------------
|
||||
!zone {
|
||||
xSunburst
|
||||
lda $08FE
|
||||
clc
|
||||
@ -156,15 +160,16 @@ xSunburst
|
||||
!byte $48,$A5,$2A,$4A,$A8,$B9,$29,$BA
|
||||
!byte $8D,$6A,$B9,$8D,$84,$BC,$B9,$34
|
||||
!byte $BA,$8D,$FC,$B8,$8D,$5D,$B8,$C0
|
||||
!byte $11,$D0,03,$A9,02,$AC,$A9,$0E
|
||||
!byte $8D,$C0,$BF,$68,$69,00,$48,$AD
|
||||
!byte $78,04,$90,$2B
|
||||
bcs no2
|
||||
yes2
|
||||
!byte $11,$D0,$03,$A9,$02,$AC,$A9,$0E
|
||||
!byte $8D,$C0,$BF,$68,$69,$00,$48,$AD
|
||||
!byte $78,$04,$90,$2B
|
||||
bcs .no
|
||||
.yes
|
||||
lda #$80
|
||||
sta T11S0F
|
||||
no2
|
||||
.no
|
||||
rts
|
||||
}
|
||||
|
||||
;-------------------------------
|
||||
; xOptimumRes
|
||||
@ -176,26 +181,28 @@ no2
|
||||
; out: C clear if OptimumRes bootloader was found
|
||||
; C set otherwise
|
||||
;-------------------------------
|
||||
!zone {
|
||||
xOptimumRes
|
||||
lda #$08
|
||||
ldx #$5D
|
||||
ldy #$0C
|
||||
jsr CompareMemory
|
||||
!byte $68,$85,$F0,$68,$85,$F1,$A0,01
|
||||
!byte $68,$85,$F0,$68,$85,$F1,$A0,$01
|
||||
!byte $B1,$F0,$85,$54
|
||||
bcc yes3
|
||||
bcc .yes
|
||||
lda #$08
|
||||
ldx #$5D
|
||||
ldy #$0C
|
||||
jsr CompareMemory
|
||||
!byte $68,$85,$A0,$68,$85,$A1,$A0,01
|
||||
!byte $68,$85,$A0,$68,$85,$A1,$A0,$01
|
||||
!byte $B1,$A0,$85,$54
|
||||
bcs no3
|
||||
yes3
|
||||
bcs .no
|
||||
.yes
|
||||
lda #$80
|
||||
sta T01S0F
|
||||
no3
|
||||
.no
|
||||
rts
|
||||
}
|
||||
|
||||
;-------------------------------
|
||||
; xB4BB
|
||||
@ -207,6 +214,7 @@ no3
|
||||
; out: C clear if RWTS was modified in this routine
|
||||
; C set otherwise
|
||||
;-------------------------------
|
||||
!zone {
|
||||
xB4BB
|
||||
lda gTrack
|
||||
pha
|
||||
@ -218,9 +226,9 @@ b4bbcompare
|
||||
ldy #$20
|
||||
jsr CompareMemory
|
||||
!byte $D8,$A9,$DF,$48,$A9,$FF,$48,$A9
|
||||
!byte 08,$85,$3D,$85,$43,$A9,$BF,$85
|
||||
!byte $3F,$A9,00,$85,$3C,$85,$42,$E6
|
||||
!byte $42,$A9,$FE,$85,$3E,$A0,00,$AD
|
||||
!byte $08,$85,$3D,$85,$43,$A9,$BF,$85
|
||||
!byte $3F,$A9,$00,$85,$3C,$85,$42,$E6
|
||||
!byte $42,$A9,$FE,$85,$3E,$A0,$00,$AD
|
||||
bcs _b4bbexit
|
||||
lda #$00
|
||||
sta gTrack
|
||||
@ -260,6 +268,7 @@ _b4bbexit
|
||||
pla
|
||||
sta gTrack
|
||||
rts
|
||||
}
|
||||
|
||||
;-------------------------------
|
||||
; xB660
|
||||
@ -276,18 +285,20 @@ _b4bbexit
|
||||
; out: C clear if $B660 routine was found
|
||||
; C set otherwise
|
||||
;-------------------------------
|
||||
!zone {
|
||||
xB660
|
||||
lda #$08
|
||||
ldx #$60
|
||||
ldy #$1A
|
||||
jsr CompareMemory
|
||||
!byte $BD,$8C,$C0,$10,$FB,$C9,$AD,$D0
|
||||
!byte $F4,$A9,$F8,$3D,$8C,$C0,$D0,02
|
||||
!byte $F4,$A9,$F8,$3D,$8C,$C0,$D0,$02
|
||||
!byte $EA,$EA,$EA,$EA,$BD,$8C,$C0,$2A
|
||||
!byte $30,02
|
||||
bcs no4
|
||||
yes4
|
||||
!byte $30,$02
|
||||
bcs .no
|
||||
.yes
|
||||
lda #$FE
|
||||
sta T00S09
|
||||
no4
|
||||
.no
|
||||
rts
|
||||
}
|
||||
|
@ -2,6 +2,7 @@
|
||||
; initialize some variables that are used by many
|
||||
; other patchers on track $00
|
||||
;
|
||||
!zone {
|
||||
ApplyGlobals
|
||||
lda #$00
|
||||
ldx #$00
|
||||
@ -12,72 +13,72 @@ ApplyGlobals
|
||||
; we're going to patch the sector and trace it to capture
|
||||
; the RWTS.
|
||||
|
||||
!byte 01,$A5,$27,$C9,09,$D0,$18,$A5
|
||||
!byte $2B,$4A,$4A,$4A,$4A,09,$C0,$85
|
||||
!byte $01,$A5,$27,$C9,$09,$D0,$18,$A5
|
||||
!byte $2B,$4A,$4A,$4A,$4A,$09,$C0,$85
|
||||
!byte $3F,$A9,$5C,$85,$3E,$18,$AD,$FE
|
||||
!byte 08,$6D,$FF,08,$8D,$FE,08,$AE
|
||||
!byte $FF,08,$30,$15,$BD,$4D,08,$85
|
||||
!byte $3D,$CE,$FF,08,$AD,$FE,08,$85
|
||||
!byte $27,$CE,$FE,08,$A6,$2B,$6C,$3E
|
||||
!byte 00,$EE,$FE,08,$EE,$FE,08,$20
|
||||
!byte $08,$6D,$FF,$08,$8D,$FE,$08,$AE
|
||||
!byte $FF,$08,$30,$15,$BD,$4D,$08,$85
|
||||
!byte $3D,$CE,$FF,$08,$AD,$FE,$08,$85
|
||||
!byte $27,$CE,$FE,$08,$A6,$2B,$6C,$3E
|
||||
!byte $00,$EE,$FE,$08,$EE,$FE,$08,$20
|
||||
!byte $89,$FE,$20,$93,$FE,$20,$2F,$FB
|
||||
!byte $A6,$2B
|
||||
ldx #TRUE
|
||||
bcc boot0
|
||||
bcc .boot0
|
||||
ldx #FALSE
|
||||
boot0
|
||||
.boot0
|
||||
stx gIsBoot0
|
||||
|
||||
lda #$01
|
||||
ldx #$00
|
||||
ldy #$38
|
||||
jsr compare ; if T00,S01,$00 ==
|
||||
!byte $8E,$E9,$B7,$8E,$F7,$B7,$A9,01
|
||||
!byte $8E,$E9,$B7,$8E,$F7,$B7,$A9,$01
|
||||
!byte $8D,$F8,$B7,$8D,$EA,$B7,$AD,$E0
|
||||
!byte $B7,$8D,$E1,$B7,$A9,02,$8D,$EC
|
||||
!byte $B7,$A9,04,$8D,$ED,$B7,$AC,$E7
|
||||
!byte $B7,$88,$8C,$F1,$B7,$A9,01,$8D
|
||||
!byte $B7,$8D,$E1,$B7,$A9,$02,$8D,$EC
|
||||
!byte $B7,$A9,$04,$8D,$ED,$B7,$AC,$E7
|
||||
!byte $B7,$88,$8C,$F1,$B7,$A9,$01,$8D
|
||||
!byte $F4,$B7,$8A,$4A,$4A,$4A,$4A,$AA
|
||||
!byte $A9,00,$9D,$F8,04,$9D,$78,04
|
||||
!byte $A9,$00,$9D,$F8,$04,$9D,$78,$04
|
||||
ldx #TRUE
|
||||
bcc boot1
|
||||
bcc .boot1
|
||||
ldx #FALSE
|
||||
:boot1
|
||||
.boot1
|
||||
stx gIsBoot1
|
||||
|
||||
lda #$01
|
||||
ldx #$00
|
||||
ldy #$38
|
||||
jsr compare ; if T00,S01,$00 ==
|
||||
!byte $8E,$E9,$37,$8E,$F7,$37,$A9,01
|
||||
!byte $8E,$E9,$37,$8E,$F7,$37,$A9,$01
|
||||
!byte $8D,$F8,$37,$8D,$EA,$37,$AD,$E0
|
||||
!byte $37,$8D,$E1,$37,$A9,02,$8D,$EC
|
||||
!byte $37,$A9,04,$8D,$ED,$37,$AC,$E7
|
||||
!byte $37,$88,$8C,$F1,$37,$A9,01,$8D
|
||||
!byte $37,$8D,$E1,$37,$A9,$02,$8D,$EC
|
||||
!byte $37,$A9,$04,$8D,$ED,$37,$AC,$E7
|
||||
!byte $37,$88,$8C,$F1,$37,$A9,$01,$8D
|
||||
!byte $F4,$37,$8A,$4A,$4A,$4A,$4A,$AA
|
||||
!byte $A9,00,$9D,$F8,04,$9D,$78,04
|
||||
!byte $A9,$00,$9D,$F8,$04,$9D,$78,$04
|
||||
ldx #TRUE
|
||||
bcc master
|
||||
bcc .master
|
||||
ldx #FALSE
|
||||
master
|
||||
.master
|
||||
stx gIsMaster
|
||||
|
||||
lda #$07
|
||||
ldx #$00
|
||||
ldy #$40
|
||||
jsr compare ; if T00,S07,$00 ==
|
||||
!byte $84,$48,$85,$49,$A0,02,$8C,$F8
|
||||
!byte 06,$A0,04,$8C,$F8,04,$A0,01
|
||||
!byte $84,$48,$85,$49,$A0,$02,$8C,$F8
|
||||
!byte $06,$A0,$04,$8C,$F8,$04,$A0,$01
|
||||
!byte $B1,$48,$AA,$A0,$0F,$D1,$48,$F0
|
||||
!byte $1B,$8A,$48,$B1,$48,$AA,$68,$48
|
||||
!byte $91,$48,$BD,$8E,$C0,$A0,08,$BD
|
||||
!byte $91,$48,$BD,$8E,$C0,$A0,$08,$BD
|
||||
!byte $8C,$C0,$DD,$8C,$C0,$D0,$F6,$88
|
||||
!byte $D0,$F8,$68,$AA,$BD,$8E,$C0,$BD
|
||||
!byte $8C,$C0,$A0,08,$BD,$8C,$C0,$48
|
||||
!byte $8C,$C0,$A0,$08,$BD,$8C,$C0,$48
|
||||
ldx #TRUE
|
||||
bcc rwts
|
||||
bcc .rwts
|
||||
ldx #FALSE
|
||||
rwts
|
||||
.rwts
|
||||
stx gIsRWTS
|
||||
|
||||
lda #$00
|
||||
@ -94,9 +95,9 @@ rwts
|
||||
|
||||
!byte 01,$38,$B0,$03,$4C
|
||||
ldx #TRUE
|
||||
bcc prodos
|
||||
bcc .prodos
|
||||
ldx #FALSE
|
||||
prodos
|
||||
.prodos
|
||||
stx gIsProDOS
|
||||
|
||||
lda #$00
|
||||
@ -108,9 +109,9 @@ prodos
|
||||
; The wildcard in 7th position catches alternate jump
|
||||
; addresses (e.g. Wizardry I, Sundog Frozen Legacy)
|
||||
|
||||
!byte 01,$E0,$60,$F0,03,$4C,$97,$08
|
||||
!byte $01,$E0,$60,$F0,$03,$4C,$97,$08
|
||||
ldx #TRUE
|
||||
bcc pascal
|
||||
bcc .pascal
|
||||
lda #$00
|
||||
ldx #$00
|
||||
ldy #$08
|
||||
@ -118,11 +119,12 @@ prodos
|
||||
|
||||
; Pascal 1.3 signature [thanks Marco V.]
|
||||
|
||||
!byte 01,$E0,$07,$B0,04,$E0,$40,$B0
|
||||
!byte $01,$E0,$07,$B0,$04,$E0,$40,$B0
|
||||
ldx #TRUE
|
||||
bcc pascal
|
||||
bcc .pascal
|
||||
ldx #FALSE
|
||||
pascal
|
||||
.pascal
|
||||
stx gIsPascal
|
||||
|
||||
rts
|
||||
}
|
||||
|
@ -161,6 +161,7 @@ all_done_set
|
||||
; $cmp2 zero page clobbered
|
||||
; stack set to first instruction after string
|
||||
;-------------------------------
|
||||
!zone {
|
||||
compare
|
||||
clc
|
||||
adc #BASEPAGE
|
||||
@ -182,17 +183,17 @@ CompareMemory
|
||||
pha
|
||||
lda tmp
|
||||
pha
|
||||
xcmp
|
||||
.cmp
|
||||
lda (cmp2),y
|
||||
dey
|
||||
bmi success
|
||||
bmi .success
|
||||
cmp (cmp1),y
|
||||
beq xcmp
|
||||
beq .cmp
|
||||
cmp #WILDCARD
|
||||
beq xcmp
|
||||
beq .cmp
|
||||
sec
|
||||
!byte $24 ; hide CLC
|
||||
success clc
|
||||
.success clc
|
||||
php
|
||||
lda cmp1+1
|
||||
sec
|
||||
@ -200,3 +201,4 @@ success clc
|
||||
ldx cmp1
|
||||
plp
|
||||
rts
|
||||
}
|
||||
|
@ -13,20 +13,20 @@ IDDatasoft
|
||||
ldx #$00
|
||||
ldy #$7E
|
||||
jsr compare
|
||||
!byte 01,$4C,$7E,08,04,$8A,$0C,$B8
|
||||
!byte 00,$56,$10,$7A,00,00,$1A,$16
|
||||
!byte $12,$0E,$0A,06,$53,$18,$9A,02
|
||||
!byte $10,$1B,02,$10,$4D,$56,$15,$0B
|
||||
!byte $01,$4C,$7E,$08,$04,$8A,$0C,$B8
|
||||
!byte $00,$56,$10,$7A,$00,$00,$1A,$16
|
||||
!byte $12,$0E,$0A,$06,$53,$18,$9A,$02
|
||||
!byte $10,$1B,$02,$10,$4D,$56,$15,$0B
|
||||
!byte $BF,$14,$14,$54,$54,$54,$92,$81
|
||||
!byte $1B,$10,$10,$41,06,$73,$0A,$10
|
||||
!byte $33,$4E,00,$73,$12,$10,$33,$7C
|
||||
!byte 00,$11,$20,$E3,$49,$50,$73,$1A
|
||||
!byte $10,$41,00,$23,$80,$5B,$0A,$10
|
||||
!byte $1B,$10,$10,$41,$06,$73,$0A,$10
|
||||
!byte $33,$4E,$00,$73,$12,$10,$33,$7C
|
||||
!byte $00,$11,$20,$E3,$49,$50,$73,$1A
|
||||
!byte $10,$41,$00,$23,$80,$5B,$0A,$10
|
||||
!byte $0B,$4E,$9D,$0A,$10,$9D,$0C,$10
|
||||
!byte $60,$1E,$53,$10,$90,$53,$BC,$90
|
||||
!byte $53,00,$90,$D8,$52,00,$D8,$7C
|
||||
!byte 00,$53,$80,$0B,06,$41,00,09
|
||||
!byte 04,$45,$0C,$63,04,$90,$94,$D0
|
||||
!byte $D4,$23,04,$91,$A1,$EB,$CD,06
|
||||
!byte $53,$00,$90,$D8,$52,$00,$D8,$7C
|
||||
!byte $00,$53,$80,$0B,$06,$41,$00,$09
|
||||
!byte $04,$45,$0C,$63,$04,$90,$94,$D0
|
||||
!byte $D4,$23,$04,$91,$A1,$EB,$CD,$06
|
||||
!byte $95,$A1,$E1,$98,$97,$86
|
||||
rts
|
||||
|
@ -10,82 +10,84 @@
|
||||
; all registers clobbered
|
||||
; all other flags clobbered
|
||||
;-------------------------------
|
||||
!zone {
|
||||
IDDOS33
|
||||
lda $08FE ; $08FE must be either $36 or $B6
|
||||
cmp #$36 ; (prevents matching on some
|
||||
beq match0 ; Infocom disks that would
|
||||
beq .match0 ; Infocom disks that would
|
||||
cmp #$B6 ; otherwise match but then load
|
||||
beq match0 ; boot1 over program space and crash)
|
||||
jmp notd33boot0
|
||||
beq .match0 ; boot1 over program space and crash)
|
||||
jmp .notd33boot0
|
||||
|
||||
match0
|
||||
.match0
|
||||
lda #$00 ; match first $1C bytes of T00S00
|
||||
ldx #$00 ; against standard DOS 3.3 boot0
|
||||
ldy #$1C
|
||||
jsr compare
|
||||
!byte 01,$A5,$27,$C9,09,$D0,$18,$A5
|
||||
!byte $2B,$4A,$4A,$4A,$4A,09,$C0,$85
|
||||
!byte $01,$A5,$27,$C9,$09,$D0,$18,$A5
|
||||
!byte $2B,$4A,$4A,$4A,$4A,$09,$C0,$85
|
||||
!byte $3F,$A9,$5C,$85,$3E,$18,$AD,$FE
|
||||
!byte 08,$6D,$FF,08
|
||||
bcc maybe_d33_1
|
||||
jmp notd33boot0
|
||||
!byte $08,$6D,$FF,$08
|
||||
bcc .maybe_d33_1
|
||||
jmp .notd33boot0
|
||||
|
||||
maybe_d33_1
|
||||
.maybe_d33_1
|
||||
lda #$00 ; match more bytes of T00S00
|
||||
ldx #$1F ; against standard DOS 3.3 boot0
|
||||
ldy #$2B
|
||||
jsr compare
|
||||
!byte $AE
|
||||
!byte $FF,08,$30,$15,$BD,$4D,08,$85
|
||||
!byte $3D,$CE,$FF,08,$AD,$FE,08,$85
|
||||
!byte $27,$CE,$FE,08,$A6,$2B,$6C,$3E
|
||||
!byte 00,$EE,$FE,08,$EE,$FE,08,$20
|
||||
!byte $FF,$08,$30,$15,$BD,$4D,$08,$85
|
||||
!byte $3D,$CE,$FF,$08,$AD,$FE,$08,$85
|
||||
!byte $27,$CE,$FE,$08,$A6,$2B,$6C,$3E
|
||||
!byte $00,$EE,$FE,$08,$EE,$FE,$08,$20
|
||||
!byte $89,$FE,$20,$93,$FE,$20,$2F,$FB
|
||||
!byte $A6,$2B
|
||||
bcc maybe_d33_2
|
||||
jmp notd33boot0
|
||||
bcc .maybe_d33_2
|
||||
jmp .notd33boot0
|
||||
|
||||
maybe_d33_2
|
||||
.maybe_d33_2
|
||||
lda #$00 ; check sector order map
|
||||
ldx #$4D
|
||||
ldy #$10
|
||||
jsr compare
|
||||
!byte 00,$0D,$0B,09,07,05,03,01
|
||||
!byte $0E,$0C,$0A,08,06,04,02,$0F
|
||||
bcc maybe_d33_3
|
||||
jmp notd33boot0
|
||||
!byte $00,$0D,$0B,$09,$07,$05,$03,$01
|
||||
!byte $0E,$0C,$0A,$08,$06,$04,$02,$0F
|
||||
bcc .maybe_d33_3
|
||||
jmp .notd33boot0
|
||||
|
||||
maybe_d33_3
|
||||
.maybe_d33_3
|
||||
lda #$00 ; match 3 final bytes of T00S00
|
||||
ldx #$1C ; against standard DOS 3.3 boot0
|
||||
ldy #$03
|
||||
jsr compare
|
||||
!byte $8D,$FE,08
|
||||
bcs maybe_d33_4
|
||||
jmp founddos33
|
||||
!byte $8D,$FE,$08
|
||||
bcs .maybe_d33_4
|
||||
jmp .founddos33
|
||||
|
||||
maybe_d33_4
|
||||
.maybe_d33_4
|
||||
lda #$00 ; minor variation (e.g. Terrapin
|
||||
ldx #$1C ; Logo 3.0) jumps to $08F0 and
|
||||
ldy #$03 ; back, but still safe to trace
|
||||
jsr compare
|
||||
!byte $4C,$F0,08
|
||||
bcc maybe_d33_5
|
||||
jmp notd33boot0
|
||||
!byte $4C,$F0,$08
|
||||
bcc .maybe_d33_5
|
||||
jmp .notd33boot0
|
||||
|
||||
maybe_d33_5
|
||||
.maybe_d33_5
|
||||
lda #$00
|
||||
ldx #$F0
|
||||
ldy #$09
|
||||
jsr compare
|
||||
!byte $8D,$FE,08,$EE,$F3,03,$4C,$1F
|
||||
!byte 08
|
||||
bcs notd33boot0
|
||||
!byte $8D,$FE,$08,$EE,$F3,$03,$4C,$1F
|
||||
!byte $08
|
||||
bcs .notd33boot0
|
||||
|
||||
founddos33
|
||||
.founddos33
|
||||
clc
|
||||
!byte $24 ; hide next SEC
|
||||
|
||||
notd33boot0
|
||||
.notd33boot0
|
||||
sec
|
||||
rts
|
||||
}
|
||||
|
@ -10,10 +10,12 @@
|
||||
; all registers clobbered
|
||||
; all other flags clobbered
|
||||
;-------------------------------
|
||||
!zone {
|
||||
IDEncoded44
|
||||
ldy #$07
|
||||
jsr SearchTrack
|
||||
!byte $BD,$8C,$C0,$10,$FB,$38,$2A
|
||||
bcs encoded44_exit
|
||||
encoded44_exit
|
||||
bcs .exit
|
||||
.exit
|
||||
rts
|
||||
}
|
||||
|
@ -10,11 +10,13 @@
|
||||
; all registers clobbered
|
||||
; all other flags clobbered
|
||||
;-------------------------------
|
||||
!zone {
|
||||
IDEncoded53
|
||||
ldy #$10
|
||||
jsr SearchTrack
|
||||
!byte $BD,$8C,$C0,$10,$FB,$C9,$B5,$F0
|
||||
!byte 09,$28,$90,$DF,$49,$AD,$F0,$1F
|
||||
bcs encoded53_exit
|
||||
encoded53_exit
|
||||
!byte $09,$28,$90,$DF,$49,$AD,$F0,$1F
|
||||
bcs .exit
|
||||
.exit
|
||||
rts
|
||||
}
|
||||
|
@ -3,6 +3,7 @@
|
||||
; main entry point to identify the bootloader
|
||||
; based on T00,S00 (currently in memory at $0800)
|
||||
;-------------------------------
|
||||
!zone {
|
||||
CheckT00S00
|
||||
lda #FALSE
|
||||
sta gIsBoot0
|
||||
@ -43,86 +44,86 @@ CheckT00S00
|
||||
; we can maybe trace to capture the RWTS in memory.
|
||||
;
|
||||
jsr IDDOS33
|
||||
bcs notdos33
|
||||
bcs .notdos33
|
||||
lda #s_dosb0
|
||||
jsr PrintByID
|
||||
jmp TraceDOS33
|
||||
|
||||
notdos33
|
||||
.notdos33
|
||||
;
|
||||
; Try to identify a variant bootloader that calls to $08B3
|
||||
; early to munge the nibble tables used by the drive firmware.
|
||||
;
|
||||
jsr ID8b3
|
||||
bcs not8b3
|
||||
bcs .not8b3
|
||||
jmp found8b3
|
||||
|
||||
not8b3
|
||||
.not8b3
|
||||
;
|
||||
; Try to identify all the different MECC fastloader variants.
|
||||
;
|
||||
jsr IDMECC
|
||||
bcs notmecc
|
||||
bcs .notmecc
|
||||
jsr IDMECCM8
|
||||
bcs notmeccm8
|
||||
bcs .notmeccm8
|
||||
jmp foundmeccm8
|
||||
notmeccm8
|
||||
.notmeccm8
|
||||
jsr IDMECCM7
|
||||
bcs notmeccm7
|
||||
bcs .notmeccm7
|
||||
jmp foundmeccm7
|
||||
|
||||
notmeccm7
|
||||
notmecc
|
||||
.notmeccm7
|
||||
.notmecc
|
||||
;
|
||||
; Try to identify the encrypted Datasoft bootloader.
|
||||
;
|
||||
jsr IDDatasoft
|
||||
bcs notdatasoft
|
||||
bcs .notdatasoft
|
||||
lda #s_datasoftb0
|
||||
jsr PrintByID
|
||||
lda #TRUE
|
||||
sta gIsDatasoft
|
||||
jmp useuniv
|
||||
jmp .useuniv
|
||||
|
||||
:notdatasoft
|
||||
.notdatasoft
|
||||
;
|
||||
; Try to identify ProDOS bootloader.
|
||||
;
|
||||
lda gIsProDOS
|
||||
bne notprodos
|
||||
bne .notprodos
|
||||
lda #s_prodosb0
|
||||
jsr PrintByID
|
||||
jmp useuniv
|
||||
jmp .useuniv
|
||||
|
||||
notprodos
|
||||
.notprodos
|
||||
;
|
||||
; Try to identify Apple Pascal bootloader (all variants).
|
||||
;
|
||||
lda gIsPascal
|
||||
bne notpascal
|
||||
bne .notpascal
|
||||
lda #s_pascalb0
|
||||
jsr PrintByID
|
||||
|
||||
notpascal
|
||||
.notpascal
|
||||
jsr IDSpecDel
|
||||
bcs notspecdel
|
||||
bcs .notspecdel
|
||||
lda #s_specdel
|
||||
jsr PrintByID
|
||||
jmp TraceSpecDel
|
||||
|
||||
notspecdel
|
||||
.notspecdel
|
||||
;
|
||||
; Try to detect whether there is code in the boot sector
|
||||
; that loads 4-and-4-encoded data. This is an early escape
|
||||
; hatch for disks that are guaranteed to fail later anyway.
|
||||
;
|
||||
jsr IDEncoded44
|
||||
bcs notencoded44
|
||||
bcs .notencoded44
|
||||
lda #s_encoded44
|
||||
jsr PrintByID
|
||||
jmp TheEnd
|
||||
|
||||
notencoded44
|
||||
.notencoded44
|
||||
;
|
||||
; Try to detect whether there is code in the boot sector
|
||||
; that loads 5-and-3-encoded data (like DOS 3.2 disks with
|
||||
@ -132,15 +133,16 @@ notencoded44
|
||||
; guaranteed to fail later anyway.
|
||||
;
|
||||
jsr IDEncoded53
|
||||
bcs notencoded53
|
||||
bcs .notencoded53
|
||||
lda #s_encoded53
|
||||
jsr PrintByID
|
||||
jmp TheEnd
|
||||
|
||||
notencoded53
|
||||
useuniv
|
||||
.notencoded53
|
||||
.useuniv
|
||||
;
|
||||
; We didn't recognize the boot sector, so use the universal
|
||||
; (built-in) RWTS and hope for the best
|
||||
;
|
||||
jmp UseUniversal
|
||||
}
|
||||
|
@ -10,38 +10,39 @@
|
||||
; all other flags clobbered
|
||||
; all registers clobbered
|
||||
;-------------------------------
|
||||
!zone {
|
||||
ID8b3
|
||||
lda #$00
|
||||
ldx #$00
|
||||
ldy #$5A
|
||||
jsr compare
|
||||
!byte 01,$20,$B3,08,$D0,$19,$EA,$A5
|
||||
!byte $2B,$4A,$4A,$4A,$4A,09,$C0,$85
|
||||
!byte $01,$20,$B3,$08,$D0,$19,$EA,$A5
|
||||
!byte $2B,$4A,$4A,$4A,$4A,$09,$C0,$85
|
||||
!byte $3F,$A9,$5C,$85,$3E,$18,$AD,$FE
|
||||
!byte 08,$6D,$FF,08,$8D,$FE,08,$AE
|
||||
!byte $FF,08,$F0,$15,$8A,$EA,$EA,$85
|
||||
!byte $3D,$CE,$FF,08,$AD,$FE,08,$85
|
||||
!byte $27,$CE,$FE,08,$A6,$2B,$6C,$3E
|
||||
!byte 00,$EE,$FE,08,$EE,$FE,08,$20
|
||||
!byte $08,$6D,$FF,$08,$8D,$FE,$08,$AE
|
||||
!byte $FF,$08,$F0,$15,$8A,$EA,$EA,$85
|
||||
!byte $3D,$CE,$FF,$08,$AD,$FE,$08,$85
|
||||
!byte $27,$CE,$FE,$08,$A6,$2B,$6C,$3E
|
||||
!byte $00,$EE,$FE,$08,$EE,$FE,$08,$20
|
||||
!byte $89,$FE,$20,$93,$FE,$20,$2F,$FB
|
||||
!byte $A2,$FF,$BD,00,08,$9D,00,$B6
|
||||
!byte $CA,$E0,$FF,$D0,$F5,$20,$CC,08
|
||||
!byte $A2,$FF,$BD,$00,$08,$9D,$00,$B6
|
||||
!byte $CA,$E0,$FF,$D0,$F5,$20,$CC,$08
|
||||
!byte $A6,$2B
|
||||
bcc jsr8b3_maybe
|
||||
bcc .maybe
|
||||
rts
|
||||
|
||||
jsr8b3_maybe
|
||||
.maybe
|
||||
lda #$00
|
||||
ldx #$B3
|
||||
ldy #$36
|
||||
jsr compare
|
||||
!byte $A9,$3F,$8D,$6C,03
|
||||
!byte $A9,$1C,$8D,$CC,03,$A9,00,$8D
|
||||
!byte $D5,03,$A9,$37,$8D,$A3,03,$A5
|
||||
!byte $27,$C9,09,$60,$A9,00,$85,00
|
||||
!byte $A9,$B5,$85,01,$A0,$FF,$C8,$B9
|
||||
!byte 00,$F0,$91,00,$C0,$FF,$D0,$F6
|
||||
!byte $C6,01,$A9,08,$C5,01,$D0,$EC
|
||||
!byte $A9,$3F,$8D,$6C,$03
|
||||
!byte $A9,$1C,$8D,$CC,$03,$A9,$00,$8D
|
||||
!byte $D5,$03,$A9,$37,$8D,$A3,$03,$A5
|
||||
!byte $27,$C9,$09,$60,$A9,$00,$85,$00
|
||||
!byte $A9,$B5,$85,$01,$A0,$FF,$C8,$B9
|
||||
!byte $00,$F0,$91,$00,$C0,$FF,$D0,$F6
|
||||
!byte $C6,$01,$A9,$08,$C5,$01,$D0,$EC
|
||||
!byte $60
|
||||
rts
|
||||
|
||||
@ -75,3 +76,4 @@ B8b3 sta T02,y
|
||||
pla
|
||||
plp
|
||||
jmp $0801
|
||||
}
|
||||
|
@ -16,9 +16,9 @@ IDMECC
|
||||
ldx #$00
|
||||
ldy #$17
|
||||
jsr compare
|
||||
!byte 01,$4C,$1A,08,$17,$0F,00,00
|
||||
!byte $0D,$0B,09,07,05,03,01,$0E
|
||||
!byte $0C,$0A,08,06,04,02,$0F
|
||||
!byte $01,$4C,$1A,$08,$17,$0F,$00,$00
|
||||
!byte $0D,$0B,$09,$07,$05,$03,$01,$0E
|
||||
!byte $0C,$0A,$08,$06,$04,$02,$0F
|
||||
rts
|
||||
|
||||
;-------------------------------
|
||||
@ -31,6 +31,7 @@ IDMECC
|
||||
; all other flags clobbered
|
||||
; all registers clobbered
|
||||
;-------------------------------
|
||||
!zone {
|
||||
IDMECCM8
|
||||
lda #$00
|
||||
sta gTrack
|
||||
@ -42,7 +43,7 @@ IDMECCM8
|
||||
sta gAddress+1
|
||||
jsr ReadSector
|
||||
bcc +
|
||||
mecc_no1
|
||||
.no
|
||||
rts
|
||||
+
|
||||
lda #$0B
|
||||
@ -50,34 +51,34 @@ mecc_no1
|
||||
ldy #$06
|
||||
jsr compare ; IF T00,S0B,$02 ==
|
||||
!byte $BD,$8C,$C0,$10,$FB,$C9
|
||||
bcs mecc_no1
|
||||
bcs .no
|
||||
lda #$0B
|
||||
ldx #$09
|
||||
ldy #$09
|
||||
jsr compare ; AND T00,S0B,$09 ==
|
||||
!byte $D0,$EF,$EA,$BD,$8C,$C0,$10,$FB
|
||||
!byte $C9
|
||||
bcs mecc_no1
|
||||
bcs .no
|
||||
lda #$0B
|
||||
ldx #$13
|
||||
ldy #$0A
|
||||
jsr compare ; AND T00,S0B,$13 ==
|
||||
!byte $D0,$E5,$A0,03,$BD,$8C,$C0,$10
|
||||
!byte $D0,$E5,$A0,$03,$BD,$8C,$C0,$10
|
||||
!byte $FB,$C9
|
||||
bcs mecc_no1
|
||||
bcs .no
|
||||
lda #$0B
|
||||
ldx #$89
|
||||
ldy #$06
|
||||
jsr compare ; AND T00,S0B,$89 ==
|
||||
!byte $BD,$8C,$C0,$10,$FB,$C9
|
||||
bcs mecc_no1
|
||||
bcs .no
|
||||
lda #$0B
|
||||
ldx #$90
|
||||
ldy #$09
|
||||
jsr compare ; AND T00,S0B,$90 ==
|
||||
!byte $D0,$F4,$EA,$BD,$8C,$C0,$10,$FB
|
||||
!byte $C9
|
||||
bcs mecc_no1
|
||||
bcs .no
|
||||
lda #$0B
|
||||
ldx #$9A
|
||||
ldy #$09
|
||||
@ -125,6 +126,7 @@ foundmeccm8
|
||||
pla
|
||||
plp
|
||||
jmp ADStyle
|
||||
}
|
||||
|
||||
;-------------------------------
|
||||
; IDMECCM7
|
||||
@ -136,6 +138,7 @@ foundmeccm8
|
||||
; all other flags clobbered
|
||||
; all registers clobbered
|
||||
;-------------------------------
|
||||
!zone {
|
||||
IDMECCM7
|
||||
lda #$00
|
||||
sta gTrack
|
||||
@ -147,7 +150,7 @@ IDMECCM7
|
||||
sta gAddress+1
|
||||
jsr ReadSector
|
||||
bcc +
|
||||
mecc_no2
|
||||
.no
|
||||
rts
|
||||
+
|
||||
lda #$07
|
||||
@ -155,31 +158,31 @@ mecc_no2
|
||||
ldy #$06
|
||||
jsr compare ; IF T00,S07,$7D ==
|
||||
!byte $BD,$8C,$C0,$10,$FB,$C9
|
||||
bcs mecc_no2
|
||||
bcs .no
|
||||
lda #$07
|
||||
ldx #$84
|
||||
ldy #$09
|
||||
jsr compare ; AND T00,S07,$84 ==
|
||||
!byte $D0,$F0,$EA,$BD,$8C,$C0,$10,$FB,$C9
|
||||
bcs mecc_no2
|
||||
bcs .no
|
||||
lda #$07
|
||||
ldx #$8E
|
||||
ldy #$0A
|
||||
jsr compare ; and T00,S07,$8E ==
|
||||
!byte $D0,$F2,$A0,03,$BD,$8C,$C0,$10,$FB,$C9
|
||||
bcs mecc_no2
|
||||
!byte $D0,$F2,$A0,$03,$BD,$8C,$C0,$10,$FB,$C9
|
||||
bcs .no
|
||||
lda #$07
|
||||
ldx #$0F
|
||||
ldy #$06
|
||||
jsr compare ; and T00,S07,$0F ==
|
||||
!byte $BD,$8C,$C0,$10,$FB,$49
|
||||
bcs mecc_no2
|
||||
bcs .no
|
||||
lda #$07
|
||||
ldx #$18
|
||||
ldy #$07
|
||||
jsr compare ; and T00,S07,$18 ==
|
||||
!byte $EA,$BD,$8C,$C0,$10,$FB,$C9
|
||||
bcs mecc_no2
|
||||
bcs .no
|
||||
lda #$07
|
||||
ldx #$20
|
||||
ldy #$0A
|
||||
@ -228,3 +231,4 @@ foundmeccm7
|
||||
pla
|
||||
plp
|
||||
jmp ADStyle
|
||||
}
|
||||
|
@ -6,19 +6,20 @@
|
||||
; C set if "Protected DOS" was not found
|
||||
; gProtectedDOS is set to TRUE or FALSE
|
||||
;-------------------------------
|
||||
!zone {
|
||||
ProtectedDOS
|
||||
lda #$B7
|
||||
ldx #$00
|
||||
ldy #$1A
|
||||
jsr CompareMemory
|
||||
!byte $A0,$1A,$B9,00,$B7,$49,$97,$99
|
||||
!byte 00,$B7,$C8,$D0,$F5,$EE,04,$B7
|
||||
!byte $EE,09,$B7,$AD,09,$B7,$C9,$C0
|
||||
!byte $A0,$1A,$B9,$00,$B7,$49,$97,$99
|
||||
!byte $00,$B7,$C8,$D0,$F5,$EE,$04,$B7
|
||||
!byte $EE,$09,$B7,$AD,$09,$B7,$C9,$C0
|
||||
!byte $D0,$E8
|
||||
bcs protecteddos_exit
|
||||
bcs .exit
|
||||
|
||||
lda $B706 ; decryption key
|
||||
sta key+1
|
||||
sta .key+1
|
||||
sta gDisplayBytes
|
||||
lda #s_protdos
|
||||
jsr PrintByID
|
||||
@ -27,19 +28,19 @@ ProtectedDOS
|
||||
; decrypt RWTS in memory
|
||||
;
|
||||
lda #$B7
|
||||
sta decrypt+2
|
||||
sta store+2
|
||||
sta .decrypt+2
|
||||
sta .store+2
|
||||
ldy #$1A
|
||||
decrypt lda $B700,y
|
||||
key eor #$FF ; set at runtime
|
||||
store sta $B700,y
|
||||
.decrypt lda $B700,y
|
||||
.key eor #$FF ; set at runtime
|
||||
.store sta $B700,y
|
||||
iny
|
||||
bne decrypt
|
||||
inc decrypt+2
|
||||
inc store+2
|
||||
lda store+2
|
||||
bne .decrypt
|
||||
inc .decrypt+2
|
||||
inc .store+2
|
||||
lda .store+2
|
||||
cmp #$C0
|
||||
bne decrypt
|
||||
bne .decrypt
|
||||
|
||||
;
|
||||
; this RWTS swaps the A/Y hi/lo parameter table address
|
||||
@ -50,5 +51,6 @@ store sta $B700,y
|
||||
lda #TRUE
|
||||
sta gIsProtDOS
|
||||
clc
|
||||
protecteddos_exit
|
||||
.exit
|
||||
rts
|
||||
}
|
||||
|
@ -12,15 +12,15 @@ IDSpecDel
|
||||
ldx #$00
|
||||
ldy #$58
|
||||
jsr compare
|
||||
!byte 02,$90,$4A,$C6,$27,$BD,$31,09
|
||||
!byte $02,$90,$4A,$C6,$27,$BD,$31,$09
|
||||
!byte $49,$B0,$48,$C6,$3D,$98,$C8,$48
|
||||
!byte $CE,00,08,$A9,$20,$C6,$27,$48
|
||||
!byte $CE,$00,$08,$A9,$20,$C6,$27,$48
|
||||
!byte $51,$26,$91,$26,$AA,$A5,$27,$85
|
||||
!byte $32,$CE,00,08,$A8,$B5,$33,$84
|
||||
!byte $32,$CE,$00,$08,$A8,$B5,$33,$84
|
||||
!byte $29,$84,$21,$8A,$A2,$17,$86,$31
|
||||
!byte $D5,$33,$A6,$2B,$5D,$31,09,$85
|
||||
!byte $29,$5D,$32,09,$C6,$3D,$85,$28
|
||||
!byte $5D,$33,09,$85,$48,$A0,$2B,$84
|
||||
!byte $D5,$33,$A6,$2B,$5D,$31,$09,$85
|
||||
!byte $29,$5D,$32,$09,$C6,$3D,$85,$28
|
||||
!byte $5D,$33,$09,$85,$48,$A0,$2B,$84
|
||||
!byte $20,$C6,$40,$30,$3E,$24,$40,$30
|
||||
!byte $33,$24,$24,$24,$24,$40,$40,$40
|
||||
rts
|
||||
@ -225,18 +225,18 @@ skipsectors
|
||||
; rev. a5b839d7d0fa21b0ff3a7776d9f6c9750b09ae10 of 2016-11-29
|
||||
;
|
||||
SDboot0
|
||||
!byte 01,$a8,$ee,06,08,$ad,$4e,08
|
||||
!byte $01,$a8,$ee,$06,$08,$ad,$4e,$08
|
||||
!byte $c9,$c0,$f0,$40,$85,$27,$c8,$c0
|
||||
!byte $10,$90,09,$f0,05,$20,$2f,08
|
||||
!byte $a8,$2c,$a0,01,$84,$3d,$c8,$a5
|
||||
!byte $10,$90,$09,$f0,$05,$20,$2f,$08
|
||||
!byte $a8,$2c,$a0,$01,$84,$3d,$c8,$a5
|
||||
!byte $27,$f0,$df,$8a,$4a,$4a,$4a,$4a
|
||||
!byte 09,$c0,$48,$a9,$5b,$48,$60,$e6
|
||||
!byte $41,06,$40,$20,$37,08,$18,$20
|
||||
!byte $3c,08,$e6,$40,$a5,$40,$29,03
|
||||
!byte $2a,05,$2b,$a8,$b9,$80,$c0,$a9
|
||||
!byte $09,$c0,$48,$a9,$5b,$48,$60,$e6
|
||||
!byte $41,$06,$40,$20,$37,$08,$18,$20
|
||||
!byte $3c,$08,$e6,$40,$a5,$40,$29,$03
|
||||
!byte $2a,$05,$2b,$a8,$b9,$80,$c0,$a9
|
||||
!byte $30,$4c,$a8,$fc,$4c,$b3,$10
|
||||
!byte $1E,$1D,$1C,$1B,00,00,00,00
|
||||
!byte 00,00,$13,$12,$11,$10,$1F,$20
|
||||
!byte $1E,$1D,$1C,$1B,$00,$00,$00,$00
|
||||
!byte $00,$00,$13,$12,$11,$10,$1F,$20
|
||||
!byte $2E,$2D,$2C,$2B,$2A,$29,$28,$27
|
||||
!byte $26,$25,$24,$23,$22,$21,$2F,$30
|
||||
!byte $3E,$3D,$3C,$3B,$3A,$39,$38,$37
|
||||
|
@ -3,6 +3,7 @@
|
||||
; set up 1st-level boot trace on
|
||||
; a DOS 3.3-shaped bootloader
|
||||
;-------------------------------
|
||||
!zone {
|
||||
TraceDOS33
|
||||
;
|
||||
; Before we trace through the drive firmware (which --
|
||||
@ -52,8 +53,8 @@ TraceDOS33c
|
||||
clc
|
||||
adc #$02
|
||||
_Inspect1a
|
||||
sta x1+1
|
||||
sta x2+1
|
||||
sta .x1+1
|
||||
sta .x2+1
|
||||
sta b4bbmodify+2
|
||||
sta b4bbmodify2+2
|
||||
clc
|
||||
@ -61,36 +62,36 @@ _Inspect1a
|
||||
sta b4bbcompare+1
|
||||
sec
|
||||
sbc #$02
|
||||
sta x3+1
|
||||
sta x4+1
|
||||
sta .x3+1
|
||||
sta .x4+1
|
||||
sta callrwts+2
|
||||
jsr ProtectedDOS ; check for a specific (encrypted)
|
||||
; bootloader called "Protected DOS"
|
||||
bcs notprotdos
|
||||
bcs .notprotdos
|
||||
jmp ADStyle
|
||||
notprotdos
|
||||
.notprotdos
|
||||
lda callrwts+2
|
||||
ldx #$00 ; check for "STY $48;STA $49"
|
||||
ldy #$04 ; at RWTS entry point
|
||||
jsr CompareMemory ; (e.g. $BD00 or $3D00)
|
||||
!byte $84,$48,$85,$49
|
||||
bcc x1
|
||||
bcc .x1
|
||||
jmp UseUniversal
|
||||
x1 lda #$FF ; check for "SEC;RTS" at $B942
|
||||
.x1 lda #$FF ; check for "SEC;RTS" at $B942
|
||||
ldx #$42
|
||||
ldy #$02
|
||||
jsr CompareMemory
|
||||
!byte $38,$60
|
||||
bcc x2
|
||||
bcc .x2
|
||||
jmp UseUniversal
|
||||
x2 lda #$FF ; check for "LDA $C08C,X" at $B94F
|
||||
.x2 lda #$FF ; check for "LDA $C08C,X" at $B94F
|
||||
ldx #$4F
|
||||
ldy #$03
|
||||
jsr CompareMemory
|
||||
!byte $BD,$8C,$C0
|
||||
bcc x3
|
||||
bcc .x3
|
||||
jmp UseUniversal
|
||||
x3 lda #$FF ; check for "JSR $xx00" at $BDB9
|
||||
.x3 lda #$FF ; check for "JSR $xx00" at $BDB9
|
||||
ldx #$B9
|
||||
ldy #$02
|
||||
jsr CompareMemory
|
||||
@ -100,7 +101,7 @@ x3 lda #$FF ; check for "JSR $xx00" at $BDB9
|
||||
; Check for RWTS variant that has extra code before
|
||||
; JSR $B800 e.g. Verb Viper (DLM), Advanced Analogies (Hartley)
|
||||
;
|
||||
x4 lda #$FF ; check for "JSR $xx00" at $BDC5
|
||||
.x4 lda #$FF ; check for "JSR $xx00" at $BDC5
|
||||
ldx #$C5
|
||||
ldy #$02
|
||||
jsr CompareMemory
|
||||
@ -137,20 +138,21 @@ Trace
|
||||
pla
|
||||
ldy $B6F8
|
||||
cpy #$4C
|
||||
bne maybe_gs
|
||||
bne .maybe_gs
|
||||
sty $B6F8 ; JMP
|
||||
sta $B6F9 ; lo byte of callback
|
||||
stx $B6FA ; hi byte of callback
|
||||
jmp $B600
|
||||
maybe_gs
|
||||
.maybe_gs
|
||||
ldy $B6FB
|
||||
cpy #$4C
|
||||
bne unknowndrive
|
||||
bne .unknowndrive
|
||||
sty $B6FB ; JMP
|
||||
sta $B6FC ; lo byte of callback
|
||||
stx $B6FD ; hi byte of callback
|
||||
jmp $B600
|
||||
unknowndrive
|
||||
.unknowndrive
|
||||
lda #s_canttrace
|
||||
jsr PrintByID
|
||||
jmp UseUniversal
|
||||
}
|
||||
|
10
src/keys.a
10
src/keys.a
@ -1,20 +1,22 @@
|
||||
KEY = $C000
|
||||
STROBE = $C010
|
||||
|
||||
!zone {
|
||||
WaitForKey
|
||||
bit STROBE
|
||||
k lda KEY
|
||||
bpl k
|
||||
.k lda KEY
|
||||
bpl .k
|
||||
bit STROBE
|
||||
cmp #"*"
|
||||
bne noast
|
||||
bne .noast
|
||||
jsr TEXT
|
||||
lda #s_reset
|
||||
jsr PrintByID
|
||||
jmp $FF59
|
||||
noast
|
||||
.noast
|
||||
cmp #$E1
|
||||
bcc +
|
||||
and #$DF ; force uppercase
|
||||
+
|
||||
rts
|
||||
}
|
||||
|
64
src/memory.a
64
src/memory.a
@ -5,19 +5,21 @@
|
||||
; Y = number of pages to copy
|
||||
; out: all flags and registers clobbered
|
||||
;-------------------------------
|
||||
!zone {
|
||||
CopyMemory
|
||||
sta source1+2
|
||||
stx dest1+2
|
||||
sta .source+2
|
||||
stx .dest+2
|
||||
ldx #$00
|
||||
source1 lda $FF00,x
|
||||
dest1 sta $FF00,x
|
||||
.source lda $FF00,x
|
||||
.dest sta $FF00,x
|
||||
inx
|
||||
bne source1
|
||||
inc source1+2
|
||||
inc dest1+2
|
||||
bne .source
|
||||
inc .source+2
|
||||
inc .dest+2
|
||||
dey
|
||||
bne source1
|
||||
bne .source
|
||||
rts
|
||||
}
|
||||
|
||||
;-------------------------------
|
||||
; ClearMemory
|
||||
@ -26,17 +28,19 @@ dest1 sta $FF00,x
|
||||
; Y = number of pages
|
||||
; out: all flags and registers clobbered
|
||||
;-------------------------------
|
||||
!zone {
|
||||
ClearMemory
|
||||
sta dest2+2
|
||||
sta .dest+2
|
||||
txa
|
||||
ldx #$00
|
||||
dest2 sta $FF00,x
|
||||
.dest sta $FF00,x
|
||||
inx
|
||||
bne dest2
|
||||
inc dest2+2
|
||||
bne .dest
|
||||
inc .dest+2
|
||||
dey
|
||||
bne dest2
|
||||
bne .dest
|
||||
rts
|
||||
}
|
||||
|
||||
;-------------------------------
|
||||
; ClearTSBuffer
|
||||
@ -58,27 +62,29 @@ ClearTSBuffer
|
||||
; Y = number of pages to copy
|
||||
; out: all flags and registers clobbered
|
||||
;-------------------------------
|
||||
!zone {
|
||||
SwapMemory
|
||||
sta source11+2
|
||||
sta source22+2
|
||||
stx dest11+2
|
||||
stx dest22+2
|
||||
sta .source1+2
|
||||
sta .source2+2
|
||||
stx .dest1+2
|
||||
stx .dest2+2
|
||||
ldx #$00
|
||||
source11 lda $FF00,x
|
||||
.source1 lda $FF00,x
|
||||
pha
|
||||
dest11 lda $FF00,x
|
||||
source22 sta $FF00,x
|
||||
.dest1 lda $FF00,x
|
||||
.source2 sta $FF00,x
|
||||
pla
|
||||
dest22 sta $FF00,x
|
||||
.dest2 sta $FF00,x
|
||||
inx
|
||||
bne source11
|
||||
inc source11+2
|
||||
inc source22+2
|
||||
inc dest11+2
|
||||
inc dest22+2
|
||||
bne .source1
|
||||
inc .source1+2
|
||||
inc .source2+2
|
||||
inc .dest1+2
|
||||
inc .dest2+2
|
||||
dey
|
||||
bne source11
|
||||
bne .source1
|
||||
rts
|
||||
}
|
||||
|
||||
;-------------------------------
|
||||
; SaveProDOS
|
||||
@ -87,6 +93,7 @@ dest22 sta $FF00,x
|
||||
; in: none
|
||||
; out: all flags and registers clobbered
|
||||
;-------------------------------
|
||||
!zone {
|
||||
SaveProDOS
|
||||
lda #$00
|
||||
ldx #$40
|
||||
@ -100,8 +107,9 @@ SaveProDOS
|
||||
ldx #$42
|
||||
ldy #$01
|
||||
jsr CopyMemory
|
||||
memory_exit
|
||||
.exit
|
||||
rts
|
||||
}
|
||||
|
||||
;-------------------------------
|
||||
; SwapProDOS
|
||||
|
81
src/mli.a
81
src/mli.a
@ -38,6 +38,7 @@ ERR_EOF = $4C
|
||||
; all other flags clobbered
|
||||
; all registers clobbered
|
||||
;-------------------------------
|
||||
!zone {
|
||||
WriteTrackMLI
|
||||
jsr SwapProDOS
|
||||
jsr ReorderBuffer
|
||||
@ -68,7 +69,7 @@ WriteTrackMLI
|
||||
lda #$00
|
||||
sta mliparam+2 ; lo byte of data buffer
|
||||
lda #$08
|
||||
sta blockcount
|
||||
sta .blockcount
|
||||
lda gTrack
|
||||
asl
|
||||
asl
|
||||
@ -79,20 +80,20 @@ WriteTrackMLI
|
||||
sta mliparam+5 ; hi byte of block number
|
||||
lda #BASEPAGE ; hi byte of data buffer
|
||||
sta mliparam+3
|
||||
writeloop
|
||||
.writeloop
|
||||
lda mlicmd
|
||||
ldy #$03 ; parameter count
|
||||
jsr mli
|
||||
bcs mli_writeerr
|
||||
bcs .writeerr
|
||||
inc mliparam+3 ; 2 pages per block
|
||||
inc mliparam+3
|
||||
inc mliparam+4
|
||||
dec blockcount
|
||||
bne writeloop
|
||||
dec .blockcount
|
||||
bne .writeloop
|
||||
clc
|
||||
bcc writedone
|
||||
mli_writeerr
|
||||
writedone
|
||||
bcc .writedone
|
||||
.writeerr
|
||||
.writedone
|
||||
php
|
||||
pha
|
||||
jsr ReorderBuffer
|
||||
@ -101,8 +102,8 @@ writedone
|
||||
plp
|
||||
rts
|
||||
|
||||
blockcount !byte $FF
|
||||
|
||||
.blockcount !byte $FF
|
||||
}
|
||||
;-------------------------------
|
||||
; ReorderBuffer - convert data
|
||||
; buffer between ProDOS and
|
||||
@ -114,6 +115,7 @@ blockcount !byte $FF
|
||||
; all registers clobbered
|
||||
; @cmp1, @cmp2 clobbered
|
||||
;-------------------------------
|
||||
!zone {
|
||||
ReorderBuffer
|
||||
lda #$00
|
||||
sta cmp1
|
||||
@ -128,19 +130,20 @@ ReorderBuffer
|
||||
adc #BASEPAGE
|
||||
sta cmp2+1
|
||||
ldx #$07
|
||||
L lda (cmp1),y
|
||||
.L lda (cmp1),y
|
||||
pha
|
||||
lda (cmp2),y
|
||||
sta (cmp1),y
|
||||
pla
|
||||
sta (cmp2),y
|
||||
iny
|
||||
bne L
|
||||
bne .L
|
||||
inc cmp1+1
|
||||
dec cmp2+1
|
||||
dex
|
||||
bne L
|
||||
bne .L
|
||||
rts
|
||||
}
|
||||
|
||||
;-------------------------------
|
||||
; SaveFile1Shot
|
||||
@ -161,6 +164,7 @@ L lda (cmp1),y
|
||||
; all registers clobbered
|
||||
; stack set to next instruction after parameters
|
||||
;-------------------------------
|
||||
!zone {
|
||||
SaveFile1Shot
|
||||
pla
|
||||
sta $00
|
||||
@ -170,9 +174,9 @@ SaveFile1Shot
|
||||
lda #$0B
|
||||
clc
|
||||
adc $00
|
||||
bcc mli_noinc1
|
||||
bcc .noinc
|
||||
inx
|
||||
mli_noinc1
|
||||
.noinc
|
||||
tay
|
||||
txa
|
||||
pha
|
||||
@ -196,7 +200,7 @@ mli_noinc1
|
||||
lda ($00),y ; hi byte of aux file type
|
||||
sta mliparam+6
|
||||
jsr CreateFile
|
||||
bcs savefile1s
|
||||
bcs .savefile1s
|
||||
|
||||
ldy #$0A
|
||||
lda ($00),y ; lo byte of ProDOS file buffer
|
||||
@ -205,7 +209,7 @@ mli_noinc1
|
||||
lda ($00),y ; hi byte of ProDOS file buffer
|
||||
sta mliparam+4
|
||||
jsr OpenFile
|
||||
bcs savefile1s
|
||||
bcs .savefile1s
|
||||
|
||||
pha ; push file reference number
|
||||
ldy #$06
|
||||
@ -230,8 +234,9 @@ mli_noinc1
|
||||
; (so caller gets codes from write attempt,
|
||||
; not close)
|
||||
|
||||
savefile1s
|
||||
.savefile1s
|
||||
rts
|
||||
}
|
||||
|
||||
;-------------------------------
|
||||
; LoadFile1Shot
|
||||
@ -251,6 +256,7 @@ savefile1s
|
||||
; all registers clobbered
|
||||
; stack set to next instruction after parameters
|
||||
;-------------------------------
|
||||
!zone {
|
||||
LoadFile1Shot
|
||||
pla
|
||||
sta $00
|
||||
@ -260,9 +266,9 @@ LoadFile1Shot
|
||||
lda #$08
|
||||
clc
|
||||
adc $00
|
||||
bcc mli_noinc2
|
||||
bcc .noinc
|
||||
inx
|
||||
mli_noinc2
|
||||
.noinc
|
||||
tay
|
||||
txa
|
||||
pha
|
||||
@ -283,7 +289,7 @@ mli_noinc2
|
||||
sta mliparam+4
|
||||
|
||||
jsr OpenFile
|
||||
bcs loadfile1s ; C set on error
|
||||
bcs .loadfile1s ; C set on error
|
||||
|
||||
pha ; push file reference number
|
||||
ldy #$03
|
||||
@ -307,8 +313,9 @@ mli_noinc2
|
||||
plp ; restore flags from readfile
|
||||
; (so caller gets codes from read attempt,
|
||||
; not close)
|
||||
loadfile1s
|
||||
.loadfile1s
|
||||
rts
|
||||
}
|
||||
|
||||
;-------------------------------
|
||||
; open file via ProDOS MLI
|
||||
@ -321,16 +328,18 @@ loadfile1s
|
||||
; if C clear, open succeeded and A contains
|
||||
; file reference number
|
||||
;-------------------------------
|
||||
!zone {
|
||||
OpenFile
|
||||
lda #CMD_OPEN ; MLI command
|
||||
ldy #PC_OPEN ; number of parameters for 'open' command
|
||||
jsr mli
|
||||
bcs openfile
|
||||
bcs .openfile
|
||||
lda refnum ; caller should save file reference number
|
||||
; as this memory location may be
|
||||
; overwritten by later MLI calls
|
||||
openfile
|
||||
.openfile
|
||||
rts
|
||||
}
|
||||
|
||||
;-------------------------------
|
||||
; set line-by-line mode via ProDOS MLI
|
||||
@ -343,6 +352,7 @@ openfile
|
||||
lbl_mask = $7F
|
||||
lbl_cr = $0D
|
||||
|
||||
!zone {
|
||||
SetLineByLine
|
||||
sta mliparam+1 ; store file reference number
|
||||
lda #lbl_mask ; accept high bit set or clear
|
||||
@ -352,10 +362,11 @@ SetLineByLine
|
||||
lda #CMD_NEWLINE ; MLI 'newline' command to set read mode
|
||||
ldy #PC_NEWLINE ; number of parameters for 'newline' command
|
||||
jsr mli
|
||||
bcs setlinebylin
|
||||
bcs .setlinebylin
|
||||
lda mliparam+1 ; if no error, return file reference number
|
||||
setlinebylin
|
||||
.setlinebylin
|
||||
rts
|
||||
}
|
||||
|
||||
;-------------------------------
|
||||
; read an open file via ProDOS MLI
|
||||
@ -367,15 +378,17 @@ setlinebylin
|
||||
; if C clear, read succeeded and A contains the same
|
||||
; file reference number that was passed in
|
||||
;-------------------------------
|
||||
!zone {
|
||||
ReadFile
|
||||
sta mliparam+1 ; store file reference number
|
||||
lda #CMD_READ ; MLI read command
|
||||
ldy #PC_READ ; number of parameters for 'read' command
|
||||
jsr mli
|
||||
bcs readfile
|
||||
bcs .readfile
|
||||
lda mliparam+1 ; if no error, return file reference number
|
||||
readfile
|
||||
.readfile
|
||||
rts
|
||||
}
|
||||
|
||||
;-------------------------------
|
||||
; change file position in an open file via ProDOS MLI
|
||||
@ -387,14 +400,16 @@ readfile
|
||||
; if C clear, set_mark call succeeded and A contains
|
||||
; the same file reference number that was passed in
|
||||
;-------------------------------
|
||||
!zone {
|
||||
SetMark
|
||||
sta mliparam+1 ; store file reference number
|
||||
lda #CMD_SETMARK ; MLI set_mark command
|
||||
ldy #PC_SETMARK ; number of params for 'set_mark' cmd
|
||||
jsr mli
|
||||
bcs mli_exit
|
||||
bcs .exit
|
||||
lda mliparam+1 ; if no error, return file refnum
|
||||
mli_exit rts
|
||||
.exit rts
|
||||
}
|
||||
|
||||
;-------------------------------
|
||||
; write to an open file via ProDOS MLI
|
||||
@ -406,15 +421,17 @@ mli_exit rts
|
||||
; if C clear, write succeeded and A contains the same
|
||||
; file reference number that was passed in
|
||||
;-------------------------------
|
||||
!zone {
|
||||
WriteFile
|
||||
sta mliparam+1 ; store file reference number
|
||||
lda #CMD_WRITE ; MLI write command
|
||||
ldy #PC_WRITE ; number of parameters for 'write' command
|
||||
jsr mli
|
||||
bcs writefile
|
||||
bcs .writefile
|
||||
lda mliparam+1 ; if no error, return file reference number
|
||||
writefile
|
||||
.writefile
|
||||
rts
|
||||
}
|
||||
|
||||
;-------------------------------
|
||||
; close an open file
|
||||
|
28
src/modify.a
28
src/modify.a
@ -13,6 +13,7 @@
|
||||
; all registers clobbered
|
||||
; all flags clobbered
|
||||
;-------------------------------
|
||||
!zone {
|
||||
modify
|
||||
sta gDisplayBytes
|
||||
clc
|
||||
@ -28,9 +29,9 @@ modify
|
||||
tya
|
||||
clc
|
||||
adc modsrc
|
||||
bcc noinc
|
||||
bcc .noinc
|
||||
inx
|
||||
noinc
|
||||
.noinc
|
||||
sta tmp
|
||||
txa
|
||||
pha
|
||||
@ -38,36 +39,37 @@ noinc
|
||||
pha
|
||||
sty modtmp
|
||||
bit gMode
|
||||
bpl exitnomod ; verify mode -> no modify
|
||||
bvc exitnomod ; demuffin mode -> no modify
|
||||
bpl .exitnomod ; verify mode -> no modify
|
||||
bvc .exitnomod ; demuffin mode -> no modify
|
||||
lda #s_modify
|
||||
jsr PrintByID
|
||||
ldy #0
|
||||
dest
|
||||
.dest
|
||||
lda (moddest),y
|
||||
jsr PrintByte
|
||||
iny
|
||||
cpy modtmp
|
||||
bne dest
|
||||
bne .dest
|
||||
lda #s_modifyto
|
||||
jsr PrintByID
|
||||
ldy #0
|
||||
src
|
||||
.src
|
||||
iny
|
||||
lda (modsrc),y
|
||||
jsr PrintByte
|
||||
cpy modtmp
|
||||
bne src
|
||||
bne .src
|
||||
lda #$8D
|
||||
jsr PrintA
|
||||
mod
|
||||
.mod
|
||||
lda (modsrc),y
|
||||
dey
|
||||
bmi modify_exit
|
||||
bmi .exit
|
||||
sta (moddest),y
|
||||
clv
|
||||
bvc mod ; unconditional branch
|
||||
modify_exit
|
||||
bvc .mod ; unconditional branch
|
||||
.exit
|
||||
inc gPatchCount
|
||||
exitnomod
|
||||
.exitnomod
|
||||
rts
|
||||
}
|
||||
|
162
src/passport.a
162
src/passport.a
@ -113,7 +113,7 @@ FM lda $2000,x
|
||||
jmp OneTimeSetup
|
||||
|
||||
!pseudopc *+$4800 {
|
||||
|
||||
!zone
|
||||
; use localized strings based on current language
|
||||
|
||||
!if LANG=ENGLISH {
|
||||
@ -159,15 +159,15 @@ OneTimeSetup
|
||||
jsr SaveProDOS
|
||||
ldx MACHINEID
|
||||
cpx #$EA
|
||||
bne slotscan
|
||||
bne .slotscan
|
||||
lda #$DF
|
||||
sta kForceLower
|
||||
slotscan
|
||||
.slotscan
|
||||
jsr ScanForDiskII
|
||||
lda DiskIIArray+5
|
||||
bne founds6
|
||||
bne .founds6
|
||||
jmp FatalNoSlot6
|
||||
founds6
|
||||
.founds6
|
||||
jsr LoadPrefs ; load preferences (if available)
|
||||
bcc ResetVector
|
||||
jsr SavePrefs ; save preferences (if possible)
|
||||
@ -195,13 +195,13 @@ MainMenu
|
||||
jsr PrintByID
|
||||
lda #s_mainmenu
|
||||
jsr PrintByID
|
||||
:getkey
|
||||
.getkey
|
||||
jsr WaitForKey
|
||||
cmp #$9B
|
||||
beq jmptoexit
|
||||
beq .jmptoexit
|
||||
cmp #k_quit
|
||||
bne +
|
||||
jmptoexit
|
||||
.jmptoexit
|
||||
jmp CleanExit
|
||||
+
|
||||
cmp #k_slot
|
||||
@ -222,7 +222,7 @@ jmptoexit
|
||||
bne Action ; unconditional branch
|
||||
+
|
||||
cmp #k_crack
|
||||
bne getkey
|
||||
bne .getkey
|
||||
lda #%11000000
|
||||
|
||||
; note: execution falls through here
|
||||
@ -264,9 +264,9 @@ Action
|
||||
ldy #<gRWTSParams ; call universal RWTS to see
|
||||
lda #>gRWTSParams ; if T00,S00 is readable
|
||||
jsr $BD00 ; (only care about the return code)
|
||||
bcs fatalt00s00
|
||||
jmp checkt00s00
|
||||
:fatalt00s00
|
||||
bcs .fatalt00s00
|
||||
jmp .checkt00s00
|
||||
.fatalt00s00
|
||||
lda #$F0
|
||||
sta $B959
|
||||
lda #$05
|
||||
@ -274,7 +274,7 @@ Action
|
||||
ldy #<gRWTSParams
|
||||
lda #>gRWTSParams
|
||||
jsr $BD00
|
||||
bcs reallyfatal
|
||||
bcs .reallyfatal
|
||||
;
|
||||
; Bad emulator detected (disk controller presents nibbles
|
||||
; immediately instead of based on cycle count). Patch the
|
||||
@ -284,14 +284,14 @@ Action
|
||||
sta _B959
|
||||
lda #$05
|
||||
sta _B95A
|
||||
bne checkt00s00 ; unconditional branch
|
||||
reallyfatal
|
||||
bne .checkt00s00 ; unconditional branch
|
||||
.reallyfatal
|
||||
lda #s_fail
|
||||
jsr PrintByID
|
||||
lda #s_fatal0000
|
||||
jsr PrintByID
|
||||
jmp TheEnd
|
||||
checkt00s00
|
||||
.checkt00s00
|
||||
jmp CheckT00S00 ; /src/id/inspect0
|
||||
|
||||
|
||||
@ -315,20 +315,20 @@ ADStyle
|
||||
; before we start.
|
||||
;
|
||||
jsr xHeredityDog
|
||||
bcs noDog
|
||||
bcs .noDog
|
||||
lda #s_bb00
|
||||
jsr PrintByID
|
||||
noDog
|
||||
.noDog
|
||||
jsr xSunburst
|
||||
bcs noSun
|
||||
bcs .noSun
|
||||
lda #s_sunburst
|
||||
jsr PrintByID
|
||||
noSun
|
||||
.noSun
|
||||
jsr xOptimumRes
|
||||
bcs noOptimum
|
||||
bcs .noOptimum
|
||||
lda #s_optimum
|
||||
jsr PrintByID
|
||||
noOptimum
|
||||
.noOptimum
|
||||
jsr xB660
|
||||
jsr xB4BB
|
||||
jmp ReadWithRWTS
|
||||
@ -348,7 +348,7 @@ ReadWithRWTS
|
||||
sta checksector+1
|
||||
lda #>T22S0F
|
||||
sta checksector+2
|
||||
read
|
||||
.read
|
||||
lda KEY
|
||||
bpl checksector
|
||||
jmp Cancel
|
||||
@ -372,7 +372,7 @@ checksector
|
||||
; on markers in the bootloader.
|
||||
;
|
||||
cmp #$80
|
||||
beq optional
|
||||
beq .optional
|
||||
;
|
||||
; If we're in the middle of a track, try switching to the
|
||||
; universal RWTS and see if that helps. (Many disks contain
|
||||
@ -382,7 +382,7 @@ checksector
|
||||
;
|
||||
lda gSector
|
||||
cmp #$0F
|
||||
bne tryuniversal
|
||||
bne .tryuniversal
|
||||
;
|
||||
; We just got to this track, so check for a variety
|
||||
; of whole-track conditions
|
||||
@ -390,52 +390,52 @@ checksector
|
||||
; 1) unformatted track
|
||||
;
|
||||
jsr IsUnformatted
|
||||
bcs checkf7
|
||||
bcs .checkf7
|
||||
lda #s_unformat
|
||||
jsr PrintByID
|
||||
jmp skiptrack
|
||||
jmp .skiptrack
|
||||
;
|
||||
; 2) $F7 protection track (F7F6EFEAAB nibble sequence)
|
||||
;
|
||||
checkf7
|
||||
.checkf7
|
||||
jsr IsF7
|
||||
bcs checksync
|
||||
bcs .checksync
|
||||
lda #s_f7
|
||||
jsr PrintByID
|
||||
jmp skiptrack
|
||||
jmp .skiptrack
|
||||
;
|
||||
; 3) nibble count track (mostly $FF sync bytes)
|
||||
;
|
||||
:checksync
|
||||
.checksync
|
||||
jsr IsSyncBytes
|
||||
bcs tryuniversal
|
||||
bcs .tryuniversal
|
||||
lda #s_sync
|
||||
jsr PrintByID
|
||||
|
||||
; note: execution falls through here
|
||||
|
||||
skiptrack
|
||||
.skiptrack
|
||||
lda #$00 ; skip rest of track
|
||||
jsr ChangeSector
|
||||
lda checksector+1
|
||||
sec
|
||||
sbc #$0F
|
||||
sta checksector+1
|
||||
bcs notrackdec
|
||||
bcs .notrackdec
|
||||
dec checksector+2
|
||||
notrackdec
|
||||
.notrackdec
|
||||
jmp nextsector
|
||||
|
||||
:tryuniversal
|
||||
.tryuniversal
|
||||
lda gTriedUniv ; have we tried the universal RWTS?
|
||||
beq fatal ; yes, so read error is fatal
|
||||
beq .fatal ; yes, so read error is fatal
|
||||
jsr SwitchToUniv ; no, switch it in now
|
||||
jmp read ; and re-read this sector
|
||||
jmp .read ; and re-read this sector
|
||||
|
||||
fatal pla ; if we get to here, we've
|
||||
.fatal pla ; if we get to here, we've
|
||||
jmp FatalError ; decided the read error is fatal
|
||||
|
||||
optional
|
||||
.optional
|
||||
lda #s_optbad ; say we're skipping this
|
||||
jsr PrintByID ; optional sector
|
||||
|
||||
@ -446,17 +446,17 @@ nextsector
|
||||
dec checksector+1
|
||||
lda checksector+1
|
||||
cmp #$FF
|
||||
bne nodec
|
||||
bne .nodec
|
||||
dec checksector+2
|
||||
nodec
|
||||
.nodec
|
||||
lda gSector
|
||||
sec
|
||||
sbc #$01
|
||||
jsr ChangeSector
|
||||
lda gSector
|
||||
bmi prevtrack
|
||||
jmp read
|
||||
prevtrack
|
||||
bmi .prevtrack
|
||||
jmp .read
|
||||
.prevtrack
|
||||
lda #$0F
|
||||
jsr ChangeSector
|
||||
lda gTrack
|
||||
@ -465,27 +465,27 @@ prevtrack
|
||||
jsr ChangeTrack
|
||||
jsr IncProgress
|
||||
lda gTrack
|
||||
bmi pass
|
||||
bmi .pass
|
||||
cmp gLastTrack
|
||||
bcc pass
|
||||
jmp read
|
||||
pass
|
||||
bcc .pass
|
||||
jmp .read
|
||||
.pass
|
||||
bit gMode
|
||||
bmi passwrite
|
||||
bmi .passwrite
|
||||
lda #s_pass
|
||||
bne passprint ; always branches
|
||||
passwrite
|
||||
bvs ppasscrack
|
||||
bne .passprint ; always branches
|
||||
.passwrite
|
||||
bvs .passcrack
|
||||
lda #s_passdemuf
|
||||
bne passprint ; always branches
|
||||
ppasscrack
|
||||
bne .passprint ; always branches
|
||||
.passcrack
|
||||
lda gPatchCount
|
||||
beq ppasscrack0
|
||||
beq .passcrack0
|
||||
lda #s_passcrack
|
||||
!byte $2C ; hide next LDA
|
||||
ppasscrack0
|
||||
.passcrack0
|
||||
lda #s_passcrack0
|
||||
passprint
|
||||
.passprint
|
||||
jsr PrintByID
|
||||
jmp TheEnd
|
||||
|
||||
@ -523,14 +523,14 @@ FatalError
|
||||
jsr PrintByID
|
||||
lda gTrack
|
||||
cmp #$22
|
||||
beq failont22
|
||||
beq .failont22
|
||||
jmp TheEnd
|
||||
failont22
|
||||
.failont22
|
||||
lda gSector
|
||||
cmp #$0F
|
||||
beq failont22s0f
|
||||
beq .failont22s0f
|
||||
jmp TheEnd
|
||||
failont22s0f
|
||||
.failont22s0f
|
||||
lda #s_fatal220f
|
||||
jsr PrintByID
|
||||
|
||||
@ -548,14 +548,14 @@ TheEnd
|
||||
CleanExit
|
||||
jsr SwapProDOS
|
||||
lda gChangedPrefs
|
||||
bne doquit
|
||||
bne .doquit
|
||||
jsr SavePrefs
|
||||
doquit
|
||||
.doquit
|
||||
jsr MLI
|
||||
!byte $65
|
||||
!word quitparm
|
||||
quitparm
|
||||
!byte 04,00,00,00,00,00,00
|
||||
!word .quitparm
|
||||
.quitparm
|
||||
!byte $04,$00,$00,$00,$00,$00,$00
|
||||
|
||||
FatalNoSlot6
|
||||
lda #s_noslot6
|
||||
@ -589,32 +589,32 @@ WriteTrack
|
||||
WriteTrackNA ; entry point used by Special Delivery tracer
|
||||
; to write track with "N"o "A"nalysis
|
||||
bit gMode
|
||||
bpl pdone ; verify mode -> no write
|
||||
bpl .done ; verify mode -> no write
|
||||
lda gSaidWriting
|
||||
beq write
|
||||
beq .write
|
||||
lda #s_writing ; only print "writing to" message once
|
||||
jsr PrintByID
|
||||
lda #TRUE
|
||||
sta gSaidWriting
|
||||
write
|
||||
.write
|
||||
jsr WriteTrackMLI
|
||||
bcc pdone
|
||||
bcc .done
|
||||
sta gDisplayBytes ; for use in error messages, if any
|
||||
cmp #MLI_IOERR
|
||||
beq ioerr
|
||||
beq .ioerr
|
||||
cmp #MLI_NODEV
|
||||
beq nodev
|
||||
beq .nodev
|
||||
cmp #MLI_WRITEPROT
|
||||
beq pwriteprot
|
||||
beq .writeprot
|
||||
lda #s_othermli
|
||||
!byte $2C ; hide next LDA
|
||||
ioerr
|
||||
.ioerr
|
||||
lda #s_writeioerr
|
||||
!byte $2C ; hide next LDA
|
||||
nodev
|
||||
.nodev
|
||||
lda #s_writenodev
|
||||
!byte $2C ; hide next LDA
|
||||
pwriteprot
|
||||
.writeprot
|
||||
lda #s_writeprot
|
||||
pha
|
||||
lda #s_writeerr
|
||||
@ -622,7 +622,7 @@ pwriteprot
|
||||
pla
|
||||
jsr PrintByID
|
||||
jmp TheEnd
|
||||
pdone
|
||||
.done
|
||||
rts
|
||||
|
||||
;-------------------------------
|
||||
@ -708,12 +708,14 @@ _applyToAll
|
||||
!source "patchers/prodosmecc.a"
|
||||
!source "patchers/rwtsswapmecc.a"
|
||||
!source "patchers/protecteddos.a"
|
||||
!source "patchers/fbff.a"
|
||||
!source "patchers/sierra.a"
|
||||
|
||||
lda gPatchCount
|
||||
beq nopatches
|
||||
beq .nopatches
|
||||
clc
|
||||
!byte $24 ; hide next SEC
|
||||
nopatches
|
||||
.nopatches
|
||||
sec ; set carry if nothing happened
|
||||
rts
|
||||
|
||||
|
@ -4,15 +4,16 @@
|
||||
; address prologue
|
||||
; e.g. Game Frame One, Game Frame Two
|
||||
;-------------------------------
|
||||
!zone {
|
||||
_a5count
|
||||
lda gIsPascal ; only ever seen this protection
|
||||
bne a5count_exit ; on Pascal disks
|
||||
bne .exit ; on Pascal disks
|
||||
|
||||
ldy #$0A
|
||||
jsr SearchTrack
|
||||
!byte $07,$E6,$02,$D0,$03,$4C,$A5,$00
|
||||
!byte $C9,$A5
|
||||
bcs a5count_exit
|
||||
bcs .exit
|
||||
sta gDisplayBytes
|
||||
pha
|
||||
lda #s_a5count
|
||||
@ -25,4 +26,5 @@ _a5count
|
||||
ldy #$02
|
||||
jsr modify
|
||||
!byte $D0,$7B
|
||||
a5count_exit
|
||||
.exit
|
||||
}
|
||||
|
@ -3,30 +3,31 @@
|
||||
; nibble count after "A6 BC 95" prologue
|
||||
; e.g. The Secrets of Science Island
|
||||
;-------------------------------
|
||||
!zone {
|
||||
_a6bc95
|
||||
lda gIsPascal ; only ever seen this protection
|
||||
bne a6bc95_exit ; on Pascal disks
|
||||
bne .exit ; on Pascal disks
|
||||
|
||||
ldy #$09
|
||||
jsr SearchTrack
|
||||
!byte $BD,$8C,$C0,$10,$FB,$C9,$A6,$D0
|
||||
!byte $ED
|
||||
bcs a6bc95_exit
|
||||
bcs .exit
|
||||
ldy #$09
|
||||
jsr SearchTrack
|
||||
!byte $BD,$8C,$C0,$10,$FB,$C9,$BC,$D0
|
||||
!byte $E4
|
||||
bcs a6bc95_exit
|
||||
bcs .exit
|
||||
ldy #$09
|
||||
jsr SearchTrack
|
||||
!byte $BD,$8C,$C0,$10,$FB,$C9,$95,$D0
|
||||
!byte $DB
|
||||
bcs a6bc95_exit
|
||||
bcs .exit
|
||||
ldy #$0E
|
||||
jsr SearchTrack
|
||||
!byte $AE,$F8,$01,$A9,$0A,$8D,$FE,$01
|
||||
!byte $BD,$8E,$C0,$BD,$89,$C0
|
||||
bcs a6bc95_exit
|
||||
bcs .exit
|
||||
sta gDisplayBytes
|
||||
pha
|
||||
lda #s_a6bc95
|
||||
@ -35,4 +36,5 @@ _a6bc95
|
||||
ldy #$01
|
||||
jsr modify
|
||||
!byte $60
|
||||
a6bc95_exit
|
||||
.exit
|
||||
}
|
||||
|
@ -8,9 +8,10 @@
|
||||
; so we patch it for compatibility
|
||||
; e.g. Dino Dig, Make A Face
|
||||
;-------------------------------
|
||||
!zone {
|
||||
_bademu
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne bademu_exit
|
||||
bne .exit
|
||||
lda #$03
|
||||
ldx #$4F
|
||||
ldy #$11
|
||||
@ -18,10 +19,11 @@ _bademu
|
||||
!byte $BD,$8C,$C0,$10,$FB,$C9,$D5,$D0
|
||||
!byte $F0,$EA,$BD,$8C,$C0,$C9,$D5,$F0
|
||||
!byte $12
|
||||
bcs bademu_exit
|
||||
bcs .exit
|
||||
lda #$03
|
||||
ldx #$58
|
||||
ldy #$02
|
||||
jsr modify ; and set T00,S03,$58 =
|
||||
!byte $F0,06
|
||||
bademu_exit
|
||||
.exit
|
||||
}
|
||||
|
@ -8,9 +8,10 @@
|
||||
; so we patch it for compatibility
|
||||
; e.g. Dinosaur Days
|
||||
;-------------------------------
|
||||
!zone {
|
||||
_bademu2
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne bademu2_exit
|
||||
bne .exit
|
||||
lda #$03
|
||||
ldx #$4F
|
||||
ldy #$11
|
||||
@ -18,10 +19,11 @@ _bademu2
|
||||
!byte $BD,$8C,$C0,$10,$FB,$4A,$C9,$6A
|
||||
!byte $D0,$EF,$BD,$8C,$C0,$C9,$D5,$F0
|
||||
!byte $12
|
||||
bcs bademu2_exit
|
||||
bcs .exit
|
||||
lda #$03
|
||||
ldx #$59
|
||||
ldy #$02
|
||||
jsr modify ; and set T00,S03,$59 =
|
||||
!byte $F0,05
|
||||
bademu2_exit
|
||||
!byte $F0,$05
|
||||
.exit
|
||||
}
|
||||
|
@ -6,17 +6,18 @@
|
||||
; e.g. Arena, Early Bird by
|
||||
; Border Software
|
||||
;-------------------------------
|
||||
!zone {
|
||||
_border
|
||||
lda gIsBoot0 ; if DOS 3.3 boot0 loader
|
||||
bne border_exit
|
||||
bne .exit
|
||||
lda gIsBoot1 ; and DOS 3.3 boot1 loader
|
||||
bne border_exit
|
||||
bne .exit
|
||||
lda #$08
|
||||
ldx #$5A
|
||||
ldy #$0A
|
||||
jsr compare ; and T00,S08,$5A ==
|
||||
!byte $C9,$23,$B0,$EB,$0A,$20,$6C,$BF,$EA,$EA
|
||||
bcs border_exit
|
||||
bcs .exit
|
||||
sta gDisplayBytes
|
||||
pha
|
||||
lda #s_bytrack
|
||||
@ -25,4 +26,5 @@ _border
|
||||
ldy #$0A
|
||||
jsr modify ; then set T00,S08,$5A =
|
||||
!byte $48,$A0,$01,$B1,$3C,$6A,$68,$90,$08,$0A
|
||||
border_exit
|
||||
.exit
|
||||
}
|
||||
|
@ -12,6 +12,7 @@
|
||||
; track because there is no fixed
|
||||
; position for it to start.
|
||||
;-------------------------------
|
||||
!zone {
|
||||
_c9ff
|
||||
ldy #$1A
|
||||
jsr SearchTrack
|
||||
@ -19,7 +20,7 @@ _c9ff
|
||||
!byte $C9,$FF,$D0,$0C,$EA,$BD,$8C,$C0
|
||||
!byte $10,$FB,$C9,$FF,$D0,$02,$18,$60
|
||||
!byte $38,$60
|
||||
bcs c9ff_exit
|
||||
bcs .exit
|
||||
sta gDisplayBytes
|
||||
pha
|
||||
txa
|
||||
@ -40,4 +41,5 @@ _c9ff
|
||||
ldy #$01
|
||||
jsr modify
|
||||
!byte $AA
|
||||
c9ff_exit
|
||||
.exit
|
||||
}
|
||||
|
@ -5,14 +5,15 @@
|
||||
; e.g. NoteCard Maker, many Mindplay titles
|
||||
; (Ace Detective, Robomath, Fraction-oids)
|
||||
;-------------------------------
|
||||
!zone {
|
||||
_d5d5f7
|
||||
ldy #$20
|
||||
jsr SearchTrack
|
||||
!byte $BD,$8C,$C0,$10,$FB,$48,$68,$C9
|
||||
!byte $D5,$D0,$F5,$A0,00,$8C,$97,$97
|
||||
!byte $D5,$D0,$F5,$A0,$00,$8C,$97,$97
|
||||
!byte $BD,$8C,$C0,$10,$FB,$C9,$D5,$F0
|
||||
!byte $0F,$C9,$F7,$D0,01,$C8,$18,$6D
|
||||
bcs d5d5f7_exit
|
||||
!byte $0F,$C9,$F7,$D0,$01,$C8,$18,$6D
|
||||
bcs .exit
|
||||
sta gDisplayBytes
|
||||
pha
|
||||
lda #s_d5d5f7
|
||||
@ -21,4 +22,5 @@ _d5d5f7
|
||||
ldy #$01
|
||||
jsr modify
|
||||
!byte $60
|
||||
d5d5f7_exit
|
||||
.exit
|
||||
}
|
||||
|
@ -3,14 +3,15 @@
|
||||
; nibble count in encrypted bootloader
|
||||
; e.g. Video Title Shop, Tomahawk //e
|
||||
;-------------------------------
|
||||
!zone {
|
||||
_datasoft
|
||||
lda gIsDatasoft ; only ever seen this protection
|
||||
bne datasoft_exit ; on Datasoft disks (ID'd earlier)
|
||||
bne .exit ; on Datasoft disks (ID'd earlier)
|
||||
|
||||
ldy #$06
|
||||
jsr SearchTrack
|
||||
!byte $5D,$D4,$80,$49,00,$19
|
||||
bcs datasoft_exit
|
||||
bcs .exit
|
||||
sta gDisplayBytes
|
||||
pha
|
||||
lda #s_datasoft
|
||||
@ -19,4 +20,5 @@ _datasoft
|
||||
ldy #$01
|
||||
jsr modify
|
||||
!byte $C0
|
||||
datasoft_exit
|
||||
.exit
|
||||
}
|
||||
|
@ -9,41 +9,43 @@
|
||||
; Chick, Mrs. Wigglesworth's Secret
|
||||
; Mystery of the Witch's Shoes
|
||||
;-------------------------------
|
||||
!zone {
|
||||
_davidbb03
|
||||
lda #$00
|
||||
ldx #$00
|
||||
ldy #$38
|
||||
jsr compare ; and T00,S00,$00 ==
|
||||
!byte 01,$A5,$27,$C9,09,$D0,$17,$A5
|
||||
!byte $2B,$4A,$4A,$4A,$4A,$AA,09,$C0
|
||||
!byte $85,$3F,$A9,00,$9D,$78,04,$9D
|
||||
!byte $F8,04,$A9,$5C,$85,$3E,$AE,$FF
|
||||
!byte 08,$30,$15,$BD,$ED,08,$85,$3D
|
||||
!byte $CE,$FF,08,$AD,$FE,08,$85,$27
|
||||
!byte $CE,$FE,08,$A6,$2B,$6C,$3E,00
|
||||
bcs davidbb03_exit
|
||||
!byte $01,$A5,$27,$C9,$09,$D0,$17,$A5
|
||||
!byte $2B,$4A,$4A,$4A,$4A,$AA,$09,$C0
|
||||
!byte $85,$3F,$A9,$00,$9D,$78,$04,$9D
|
||||
!byte $F8,$04,$A9,$5C,$85,$3E,$AE,$FF
|
||||
!byte $08,$30,$15,$BD,$ED,$08,$85,$3D
|
||||
!byte $CE,$FF,$08,$AD,$FE,$08,$85,$27
|
||||
!byte $CE,$FE,$08,$A6,$2B,$6C,$3E,$00
|
||||
bcs .exit
|
||||
lda #$00
|
||||
ldx #$8B
|
||||
ldy #$03
|
||||
jsr compare ; and T00,S00,$8B ==
|
||||
!byte $20,03,$BB
|
||||
bcs davidbb03_exit
|
||||
bcs .exit
|
||||
lda #$07
|
||||
ldx #$03
|
||||
ldy #$25
|
||||
jsr compare ; and T00,S07,$03 ==
|
||||
!byte $4E,06,$BB,$71,$6E
|
||||
!byte $4E,$06,$BB,$71,$6E
|
||||
!byte $0A,$BB,$40,$27,$6E,$0F,$BB,$DD
|
||||
!byte $1B,$BB,$6E,$15,$BB,$DC,$1E,$BB
|
||||
!byte $6E,$25,$BB,$72,00,$BB,$B3,00
|
||||
!byte $B8,$99,00,$BB,$C8,$A0,$F4,$B0
|
||||
bcs davidbb03_exit
|
||||
!byte $6E,$25,$BB,$72,$00,$BB,$B3,$00
|
||||
!byte $B8,$99,$00,$BB,$C8,$A0,$F4,$B0
|
||||
bcs .exit
|
||||
lda #s_jsrbb03
|
||||
jsr PrintByID
|
||||
lda #$07
|
||||
ldx #$03
|
||||
ldy #$0B
|
||||
jsr modify ; then set T00,S07,$03 =
|
||||
!byte $A9,$B5,$48,$A9,$18,$48,$A0,04
|
||||
!byte $A9,$B5,$48,$A9,$18,$48,$A0,$04
|
||||
!byte $4C,$A9,$B7
|
||||
davidbb03_exit
|
||||
.exit
|
||||
}
|
||||
|
@ -3,44 +3,46 @@
|
||||
; non-standard disk volume prevents
|
||||
; DOS from loading
|
||||
;-------------------------------
|
||||
!zone {
|
||||
_diskvol
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne diskvol_exit
|
||||
bne .exit
|
||||
lda #$01
|
||||
ldx #$EE
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S01,$EE ==
|
||||
!byte $FB
|
||||
bcs diskvol_exit
|
||||
bcs .exit
|
||||
lda #$01
|
||||
ldx #$FB
|
||||
ldy #$04
|
||||
jsr compare ; and T00,S01,$FB ==
|
||||
!byte 00,01,$EF,$D8
|
||||
bcs diskvol_exit
|
||||
!byte $00,$01,$EF,$D8
|
||||
bcs .exit
|
||||
lda #$08
|
||||
ldx #$10
|
||||
ldy #$05
|
||||
jsr compare ; and T00,S08,$10 ==
|
||||
!byte $A0,03,$B1,$48,$48
|
||||
bcs diskvol_exit
|
||||
!byte $A0,$03,$B1,$48,$48
|
||||
bcs .exit
|
||||
lda #$01
|
||||
ldx #$EB
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S01,$EB !=
|
||||
!byte $FE
|
||||
bcc diskvol_exit
|
||||
bcc .exit
|
||||
lda #$01
|
||||
ldx #$EB
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S01,$EB !=
|
||||
!byte 00
|
||||
bcc diskvol_exit
|
||||
!byte $00
|
||||
bcc .exit
|
||||
lda #s_diskvol
|
||||
jsr PrintByID
|
||||
lda #$08
|
||||
ldx #$12
|
||||
ldy #$02
|
||||
jsr modify ; then set T00,S08,$12 =
|
||||
!byte $A9,00
|
||||
diskvol_exit
|
||||
!byte $A9,$00
|
||||
.exit
|
||||
}
|
||||
|
@ -1 +1,34 @@
|
||||
狎限限限限限限限限限限限限限限限龟 ␆藐<E29086><E89790> 蜧臇瀁 貗濻樍鏻瀁 蜼樍<E89CBC> 鐓敳龟 斀瀇<E69680> 緮<> 亠 勹 勹 勹 勹 鍣瞁懤龟 鵴嚬槴蜲 玃鐓 <20> 鶇樍氄殫 謯鐀殣<E99080><E6AEA3> 檴 鏻臄鍡 睾鏵 濎 瞂鐎槫<E9908E>狎限限限限限限限限限限限限限限限渘糋緧<E7B38B>懥<EFBFBD> 迚仇<E8BF9A>𥻗麔 <20>槦蠆髫蠌蜱<E8A08C><E89CB1><EFBFBD>藏蜆簸掠亠簸亠襤<E4BAA0><E8A5A4><EFBFBD>鼴⑹偽鰻鰻藏蜆簸<E89C86><E7B0B8><EFBFBD>簸偶笠簞兜藏蜆簸<E89C86><E7B0B8><EFBFBD>掠亠簸勹襤譫⑹鷓<E291B9><E9B793><EFBFBD>藏蜆簸掠亠葩僩羅<E583A9><E7BE85><EFBFBD>偭襤藕薩蜆簸掠亠<E68EA0><E4BAA0><EFBFBD>雩笠眶<E7ACA0>睼<EFBFBD> 舚氂濊<E6B082>黀<EFBFBD>褔澞謽朅雙醲<E99B99>𦆭酃舚嶉<E8889A>𦆭鐖舚曮<E8889A>𥔱魟迚鵸糋緧<E7B38B>膧<EFBFBD>唗濎蘌钃<E8988C>𥔱魟迚什<E8BF9A>𦆭酃舚蜧羻糮<E7BEBB>箝瀦隮𥔱噌迚化<E8BF9A><E58C96> 臩僸縃槼 敳 觶隮澼<E99AAE>罱臄舚氂濊<E6B082>懥<EFBFBD>箇摫紇<E691AB>蜵<EFBFBD><E89CB5>鳲舚曮<E8889A>𦆭酃舚曮<E8889A>罱蝆舚<E89D86>𣳇鍏舚嶉<E8889A>滌<EFBFBD>懥<EFBFBD>綺摐籓紇<E7B193>黀<EFBFBD>綰檷攠<E6AAB7>筵𥔱魟迚化<E8BF9A><E58C96> 臩僸縃槼 敳 觶隮澼<E99AAE>綿𥔱噌迚化<E8BF9A><E58C96> 臩僸縃槼 敳 觶隮澼<E99AAE>𥔱嘵迚什<E8BF9A>𥻗麔𡥄檷氄<E6AAB7>綰檷攠<E6AAB7><E694A0><EFBFBD>勹朌 臩僸縃槼 敳 觶隮澼<E99AAE>牐樍舚蜧羻糮<E7BEBB>𥻗艛舚蜧羻<E89CA7>箇摫<E7AE87><E691AB><EFBFBD>停偎捧冕偉㭲攠檁<E694A0>臈臢螩亅僕斑蜊<E69691>箏鼞<E7AE8F>
|
||||
;-------------------------------
|
||||
; #FBFF
|
||||
; Activision's Timing Bit Detection:
|
||||
; FB+FF FF+FF FF+FD FF+FF+FF+FF+FF+FF+FF+FF+FF+ and
|
||||
; DE AA EB+FF+FF+FF+FF+FF+FF D5 AA
|
||||
; Magic key is #FF, usually EOR'ed with #$AA but not always
|
||||
; As found on Aliens, Maniac Mansion + 22 other titles
|
||||
;
|
||||
; Module by Brian Troha
|
||||
;-------------------------------
|
||||
!zone {
|
||||
_fbff
|
||||
ldy #$45
|
||||
jsr SearchTrack
|
||||
!byte $BD,$89,$C0,$A9,$56,$85,$FD,$A9
|
||||
!byte $08,$C6,$FC,$D0,$04,$C6,$FD,$F0
|
||||
!byte WILDCARD,$BC,$8C,$C0,$10,$FB,$C0,$FB
|
||||
!byte $D0,$ED,$F0,$00,$EA,$EA,$BC,$8C
|
||||
!byte $C0,$C0,$08,$2A,$B0,$0B,$BC,$8C
|
||||
!byte $C0,$10,$FB,$C0,$FF,$D0,$D8,$F0
|
||||
!byte $EB,$BC,$8C,$C0,$10,$FB,$84,$FC
|
||||
!byte $C9,$0A,$D0,$CB,$BD,$8C,$C0,$10
|
||||
!byte $FB,$38,$2A,$25,$FC
|
||||
bcs .exit
|
||||
sta gDisplayBytes
|
||||
pha
|
||||
lda #s_fbff
|
||||
jsr PrintByID
|
||||
pla
|
||||
ldy #$05
|
||||
jsr modify
|
||||
!byte $A9,$FF,$18,$90,$40
|
||||
.exit
|
||||
}
|
||||
|
@ -4,17 +4,18 @@
|
||||
; for a nibble check
|
||||
; e.g. Alien Addition
|
||||
;-------------------------------
|
||||
!zone {
|
||||
_jmpae8e
|
||||
lda gIsBoot0 ; if DOS 3.3 boot0 loader
|
||||
bne jmpae8e_exit
|
||||
bne .exit
|
||||
lda gIsBoot1 ; and DOS 3.3 boot1 loader
|
||||
bne jmpae8e_exit
|
||||
bne .exit
|
||||
lda #$0D
|
||||
ldx #$4D
|
||||
ldy #$03
|
||||
jsr compare ; and T00,S0D,$4D ==
|
||||
!byte $4C,$8E,$AE
|
||||
bcs jmpae8e_exit
|
||||
bcs .exit
|
||||
lda #s_jmpae8e
|
||||
jsr PrintByID
|
||||
lda #$0D
|
||||
@ -22,4 +23,5 @@ _jmpae8e
|
||||
ldy #$02
|
||||
jsr modify ; then set T00,S0D,$4E =
|
||||
!byte $80,$A1
|
||||
jmpae8e_exit
|
||||
.exit
|
||||
}
|
||||
|
@ -4,18 +4,19 @@
|
||||
; $B400 instead of $9D84
|
||||
; e.g. Decimal Discovery
|
||||
;-------------------------------
|
||||
!zone {
|
||||
_jmpb400
|
||||
lda gIsBoot0 ; if DOS 3.3 boot0 loader
|
||||
bne jmpb400_exit
|
||||
bne .exit
|
||||
lda gIsBoot1 ; and DOS 3.3 boot1 loader
|
||||
bne jmpb400_exit
|
||||
bne .exit
|
||||
lda #$01
|
||||
sta gDisplayBytes
|
||||
ldx #$47
|
||||
ldy #$03
|
||||
jsr compare ; and T00,S01,$47 ==
|
||||
!byte $4C,00,$B4
|
||||
bcs jmpb400_exit
|
||||
!byte $4C,$00,$B4
|
||||
bcs .exit
|
||||
lda #s_jmpb400
|
||||
jsr PrintByID
|
||||
lda #$01
|
||||
@ -23,4 +24,5 @@ _jmpb400
|
||||
ldy #$02
|
||||
jsr modify ; then set T00,S01,$48 =
|
||||
!byte $84,$9D
|
||||
jmpb400_exit
|
||||
.exit
|
||||
}
|
||||
|
@ -4,16 +4,17 @@
|
||||
; nibble check
|
||||
; e.g. Troll's Tale
|
||||
;-------------------------------
|
||||
_jmpb4bb
|
||||
!zone {
|
||||
jmpb4bb
|
||||
lda gIsMaster ; if DOS 3.3 lomem bootloader
|
||||
bne jmpb4bb_exit
|
||||
bne .exit
|
||||
lda #$0C
|
||||
sta gDisplayBytes
|
||||
ldx #$84
|
||||
ldy #$03
|
||||
jsr compare ; and T00,S0C,$84 ==
|
||||
!byte $4C,$BB,$B4
|
||||
bcs jmpb4bb_exit
|
||||
bcs .exit
|
||||
lda #s_jmpb4bb
|
||||
lda #$0C
|
||||
ldx #$84
|
||||
@ -30,10 +31,11 @@ _jmpb4bb
|
||||
ldy #$03
|
||||
jsr compare ; if T00,S0D,$BA ==
|
||||
!byte $4C,$0B,$37
|
||||
bcs jmpb4bb_exit
|
||||
bcs .exit
|
||||
lda #$0D
|
||||
ldx #$BA
|
||||
ldy #$03
|
||||
jsr modify ; then set T00,S0D,$BA =
|
||||
!byte $6C,$38,00
|
||||
jmpb4bb_exit
|
||||
.exit
|
||||
}
|
||||
|
@ -4,16 +4,17 @@
|
||||
; nibble check
|
||||
; e.g. Snooper Troops 2
|
||||
;-------------------------------
|
||||
!zone {
|
||||
_jmpb4bbhi
|
||||
lda gIsBoot1 ; if DOS 3.3 bootloader
|
||||
bne jmpb4bbhi_exit
|
||||
bne .exit
|
||||
lda #$0C
|
||||
sta gDisplayBytes
|
||||
ldx #$84
|
||||
ldy #$03
|
||||
jsr compare ; and T00,S0C,$84 ==
|
||||
!byte $4C,$BB,$B4
|
||||
bcs jmpb4bbhi_exit
|
||||
bcs .exit
|
||||
lda #s_jmpb4bb
|
||||
jsr PrintByID
|
||||
lda #$0C
|
||||
@ -21,4 +22,5 @@ _jmpb4bbhi
|
||||
ldy #$03
|
||||
jsr modify ; then set T00,S0C,$84 =
|
||||
!byte $AD,$E9,$B7
|
||||
jmpb4bbhi_exit
|
||||
.exit
|
||||
}
|
||||
|
@ -4,9 +4,10 @@
|
||||
; checking third data prologue
|
||||
; e.g. Analogies Tutorial, Verb Viper
|
||||
;-------------------------------
|
||||
!zone {
|
||||
_jmpb660
|
||||
lda gIsRWTS ; if DOS 3.3-shaped RWTS
|
||||
bne jmpb660_exit
|
||||
bne .exit
|
||||
lda #$02
|
||||
ldx #$DC
|
||||
ldy #$1D
|
||||
@ -15,7 +16,7 @@ _jmpb660
|
||||
!byte $10,$FB,$49,$97,$D0,$F4,$EA,$BD
|
||||
!byte $8C,$C0,$10,$FB,$C9,$97,$D0,$F2
|
||||
!byte $A0,$56,$4C,$60,$B6
|
||||
bcs jmpb660_exit
|
||||
bcs .exit
|
||||
lda #s_jmpb660
|
||||
jsr PrintByID
|
||||
lda #$02
|
||||
@ -23,4 +24,5 @@ _jmpb660
|
||||
ldy #$03
|
||||
jsr modify ; then set T00,S02,$F6 =
|
||||
!byte $BD,$8C,$C0
|
||||
jmpb660_exit
|
||||
.exit
|
||||
}
|
||||
|
@ -5,20 +5,22 @@
|
||||
; third data prologue
|
||||
; e.g. Analogies Tutorial, Verb Viper
|
||||
;-------------------------------
|
||||
!zone {
|
||||
_jmpb720
|
||||
lda gIsRWTS ; if DOS 3.3-shaped RWTS
|
||||
bne jmpb720_exit
|
||||
bne .exit
|
||||
lda #$0B
|
||||
ldx #$08
|
||||
ldy #$18
|
||||
jsr compare ; and T00,S0B,$08 ==
|
||||
!byte $4C,$20,$B7,$4C,$0E,$A9,$A2,02
|
||||
!byte $BD,$0B,$B7,$9D,$5E,$B8,$BD,08
|
||||
!byte $4C,$20,$B7,$4C,$0E,$A9,$A2,$02
|
||||
!byte $BD,$0B,$B7,$9D,$5E,$B8,$BD,$08
|
||||
!byte $B7,$9D,$F6,$B8,$CA,$10,$F1,$60
|
||||
bcs jmpb720_exit
|
||||
bcs .exit
|
||||
lda #$0B
|
||||
ldx #$08
|
||||
ldy #$06
|
||||
jsr modify ; then set T00,S0B,$08 =
|
||||
!byte $BD,$8C,$C0,$20,$B8,$B8
|
||||
jmpb720_exit
|
||||
.exit
|
||||
}
|
||||
|
@ -4,18 +4,20 @@
|
||||
; ($BBFE) instead of ($08FD)
|
||||
; e.g. Mind Over Matter
|
||||
;-------------------------------
|
||||
!zone {
|
||||
_jmpbbfe
|
||||
lda gIsBoot0 ; if DOS 3.3 boot0 loader
|
||||
bne jmpbbfe_exit
|
||||
bne .exit
|
||||
lda #$00
|
||||
ldx #$4A
|
||||
ldy #$03
|
||||
jsr compare ; and T00,S00,$4A ==
|
||||
!byte $6C,$FE,$BB
|
||||
bcs jmpbbfe_exit
|
||||
bcs .exit
|
||||
lda #$00
|
||||
ldx #$4B
|
||||
ldy #$02
|
||||
jsr modify ; then set T00,S00,$4B =
|
||||
!byte $FD,08
|
||||
jmpbbfe_exit
|
||||
.exit
|
||||
}
|
||||
|
@ -6,15 +6,16 @@
|
||||
; NOTE: must be run before RWTS
|
||||
; patchers due to overlapping bytes
|
||||
;-------------------------------
|
||||
!zone {
|
||||
_jmpbcf0
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne jmpbcf0_exit
|
||||
bne .exit
|
||||
lda #$03
|
||||
ldx #$94
|
||||
ldy #$08
|
||||
jsr compare ; and T00,S03,$94 ==
|
||||
!byte $DD,$8C,$C0,$D0,$A9,$4C,$F0,$BC
|
||||
bcs jmpbcf0_exit
|
||||
bcs .exit
|
||||
lda #s_jmpbcf0
|
||||
jsr PrintByID
|
||||
lda #$03
|
||||
@ -22,4 +23,5 @@ _jmpbcf0
|
||||
ldy #$08
|
||||
jsr modify ; then set T00,S03,$94 =
|
||||
!byte $EA,$BD,$8C,$C0,$10,$FB,$C9,$AA
|
||||
jmpbcf0_exit
|
||||
.exit
|
||||
}
|
||||
|
@ -6,33 +6,34 @@
|
||||
; NOTE: must be run before RWTS
|
||||
; patchers due to overlapping bytes
|
||||
;-------------------------------
|
||||
!zone {
|
||||
_jmpbeb1
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne jmpbeb1_exit
|
||||
bne .exit
|
||||
lda #$02
|
||||
ldx #$48
|
||||
ldy #$10
|
||||
jsr compare ; and T00,S03,$48 ==
|
||||
!byte $A0,03,$48,$68,$20,$B9,$B8,$88
|
||||
!byte $A0,$03,$48,$68,$20,$B9,$B8,$88
|
||||
!byte $D0,$F8,$4C,$B1,$BE,$EA,$EA,$A9
|
||||
bcs jmpbeb1_exit
|
||||
bcs .exit
|
||||
lda #$02
|
||||
ldx #$59
|
||||
ldy #$04
|
||||
jsr compare ; and T00,S02,$59 ==
|
||||
!byte $20,$B8,$B8,$A9
|
||||
bcs jmpbeb1_exit
|
||||
bcs .exit
|
||||
lda #$02
|
||||
ldx #$5E
|
||||
ldy #$03
|
||||
jsr compare ; and T00,S04,$5E ==
|
||||
!byte $20,$BB,$B8
|
||||
bcs jmpbeb1_exit
|
||||
bcs .exit
|
||||
lda #$02
|
||||
ldx #$49
|
||||
ldy #$01
|
||||
jsr modify ; then set T00,S02,$49 =
|
||||
!byte 04
|
||||
!byte $04
|
||||
lda #$02
|
||||
ldx #$52
|
||||
ldy #$05
|
||||
@ -43,4 +44,5 @@ _jmpbeb1
|
||||
ldy #$01
|
||||
jsr modify ; and set T00,S02,$5F =
|
||||
!byte $B8
|
||||
jmpbeb1_exit
|
||||
.exit
|
||||
}
|
||||
|
@ -6,16 +6,17 @@
|
||||
; NOTE: must be run before RWTS
|
||||
; patchers due to overlapping bytes
|
||||
;-------------------------------
|
||||
!zone {
|
||||
_jmpbeca
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne jmpbeca_exit
|
||||
bne .exit
|
||||
lda #$02
|
||||
ldx #$F4
|
||||
ldy #$0D
|
||||
jsr compare ; and T00,S02,$F4 ==
|
||||
!byte $EA,$BD,$8C,$C0,$10,$FB,$C9,$AD
|
||||
!byte $D0,$E8,$4C,$CA,$BE
|
||||
bcs jmpbeca_exit
|
||||
bcs .exit
|
||||
lda #s_jmpbeca
|
||||
jsr PrintByID
|
||||
lda #$02
|
||||
@ -24,4 +25,5 @@ _jmpbeca
|
||||
jsr modify ; and set T00,S02,$F4 =
|
||||
!byte $A0,$56,$BD,$8C,$C0,$10,$FB,$C9
|
||||
!byte $AD,$D0,$E7,$A9,$00
|
||||
jmpbeca_exit
|
||||
.exit
|
||||
}
|
||||
|
@ -7,16 +7,17 @@
|
||||
; NOTE: must be run before RWTS
|
||||
; patchers due to overlapping bytes
|
||||
;-------------------------------
|
||||
!zone {
|
||||
_jmpbeca2
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne jmpbeca2_exit
|
||||
bne .exit
|
||||
lda #$02
|
||||
ldx #$F4
|
||||
ldy #$0D
|
||||
jsr compare ; and T00,S02,$F4 ==
|
||||
!byte $4C,$CA,$BE,$EA,$BD,$8C,$C0,$10
|
||||
!byte $FB,$49,$AD,$D0,$DD
|
||||
bcs jmpbeca2_exit
|
||||
bcs .exit
|
||||
lda #s_jmpbeca
|
||||
jsr PrintByID
|
||||
lda #$02
|
||||
@ -24,5 +25,6 @@ _jmpbeca2
|
||||
ldy #$0D
|
||||
jsr modify ; and set T00,S02,$F4 =
|
||||
!byte $A0,$56,$BD,$8C,$C0,$10,$FB,$C9
|
||||
!byte $AD,$D0,$E7,$A9,00
|
||||
jmpbeca2_exit
|
||||
!byte $AD,$D0,$E7,$A9,$00
|
||||
.exit
|
||||
}
|
||||
|
@ -6,27 +6,28 @@
|
||||
; e.g. Classifying Animals with
|
||||
; Backbones, EduCalc
|
||||
;-------------------------------
|
||||
!zone {
|
||||
_jsrbb03
|
||||
lda gIsBoot0 ; if DOS 3.3 boot0 loader
|
||||
bne jsrbb03_exit
|
||||
bne .exit
|
||||
lda gIsBoot1 ; and DOS 3.3 boot1 loader
|
||||
bne jsrbb03_exit
|
||||
bne .exit
|
||||
lda #$01
|
||||
ldx #$38
|
||||
ldy #$03
|
||||
jsr compare ; and T00,S01,$38 ==
|
||||
!byte $20,03,$BB
|
||||
bcs jsrbb03_exit
|
||||
!byte $20,$03,$BB
|
||||
bcs .exit
|
||||
lda #$05
|
||||
ldx #$03
|
||||
ldy #$25
|
||||
jsr compare ; and T00,S05,$03 ==
|
||||
!byte $4E,06,$BB,$71,$6E
|
||||
!byte $4E,$06,$BB,$71,$6E
|
||||
!byte $0A,$BB,$40,$27,$6E,$0F,$BB,$DD
|
||||
!byte $1B,$BB,$6E,$15,$BB,$DC,$1E,$BB
|
||||
!byte $6E,$25,$BB,$72,00,$BB,$B3,00
|
||||
!byte $B8,$99,00,$BB,$C8,$A0,$F4,$B0
|
||||
bcs jsrbb03_exit
|
||||
!byte $6E,$25,$BB,$72,$00,$BB,$B3,$00
|
||||
!byte $B8,$99,$00,$BB,$C8,$A0,$F4,$B0
|
||||
bcs .exit
|
||||
lda #s_jsrbb03
|
||||
jsr PrintByID
|
||||
lda #$05
|
||||
@ -34,4 +35,5 @@ _jsrbb03
|
||||
ldy #$09
|
||||
jsr modify ; then set T00,S05,$03 =
|
||||
!byte $A9,$B5,$48,$A9,$18,$48,$4C,$93,$B7
|
||||
jsrbb03_exit
|
||||
.exit
|
||||
}
|
||||
|
@ -4,123 +4,125 @@
|
||||
; address and data prologues
|
||||
; e.g. Phonics Prime Time series
|
||||
;-------------------------------
|
||||
!zone {
|
||||
_meccm7
|
||||
lda #$00
|
||||
ldx #$00
|
||||
ldy #$17
|
||||
jsr compare ; if T00,S00,$00 ==
|
||||
!byte 01,$4C,$1A,08,$17,$0F,00,00
|
||||
!byte $0D,$0B,09,07,05,03,01,$0E
|
||||
!byte $0C,$0A,08,06,04,02,$0F
|
||||
bcs meccm7_exit
|
||||
!byte $01,$4C,$1A,$08,$17,$0F,$00,$00
|
||||
!byte $0D,$0B,$09,$07,$05,$03,$01,$0E
|
||||
!byte $0C,$0A,$08,$06,$04,$02,$0F
|
||||
bcs .exit
|
||||
lda #$07
|
||||
ldx #$7D
|
||||
ldy #$06
|
||||
jsr compare ; and T00,S07,$7D ==
|
||||
!byte $BD,$8C,$C0,$10,$FB,$C9
|
||||
bcs meccm7_exit
|
||||
bcs .exit
|
||||
lda #$07
|
||||
ldx #$84
|
||||
ldy #$09
|
||||
jsr compare ; and T00,S07,$84 ==
|
||||
!byte $D0,$F0,$EA,$BD,$8C,$C0,$10,$FB,$C9
|
||||
bcs meccm7_exit
|
||||
bcs .exit
|
||||
lda #$07
|
||||
ldx #$8E
|
||||
ldy #$0A
|
||||
jsr compare ; and T00,S07,$8E ==
|
||||
!byte $D0,$F2,$A0,03,$BD,$8C,$C0,$10,$FB,$C9
|
||||
bcs meccm7_exit
|
||||
bcs .exit
|
||||
lda #$07
|
||||
ldx #$0F
|
||||
ldy #$06
|
||||
jsr compare ; and T00,S07,$0F ==
|
||||
!byte $BD,$8C,$C0,$10,$FB,$49
|
||||
bcs meccm7_exit
|
||||
bcs .exit
|
||||
lda #$07
|
||||
ldx #$18
|
||||
ldy #$07
|
||||
jsr compare ; and T00,S07,$18 ==
|
||||
!byte $EA,$BD,$8C,$C0,$10,$FB,$C9
|
||||
bcs meccm7_exit
|
||||
bcs .exit
|
||||
lda #$07
|
||||
ldx #$20
|
||||
ldy #$0A
|
||||
jsr compare ; and T00,S07,$20 ==
|
||||
!byte $D0,$F2,$A0,$56,$BD,$8C,$C0,$10,$FB,$C9
|
||||
bcc meccm7_allclear
|
||||
meccm7_exit
|
||||
jmp meccm7_exit2
|
||||
meccm7_allclear
|
||||
bcc .allclear
|
||||
.exit
|
||||
jmp .exit2
|
||||
.allclear
|
||||
lda #$07
|
||||
ldx #$83
|
||||
ldy #$01
|
||||
jsr compare ; if T00,S07,$83 !=
|
||||
!byte $D5
|
||||
bcc meccm7_addr2
|
||||
bcc .addr2
|
||||
lda #$07
|
||||
ldx #$83
|
||||
ldy #$01
|
||||
jsr modify ; then set T00,S07,$83 =
|
||||
!byte $D5
|
||||
meccm7_addr2
|
||||
.addr2
|
||||
lda #$07
|
||||
ldx #$8D
|
||||
ldy #$01
|
||||
jsr compare ; if T00,S07,$8D !=
|
||||
!byte $AA
|
||||
bcc meccm7_addr3
|
||||
bcc .addr3
|
||||
lda #$07
|
||||
ldx #$8D
|
||||
ldy #$01
|
||||
jsr modify ; then set T00,S07,$8D =
|
||||
!byte $AA
|
||||
meccm7_addr3
|
||||
.addr3
|
||||
lda #$07
|
||||
ldx #$98
|
||||
ldy #$01
|
||||
jsr compare ; if T00,S07,$98 !=
|
||||
!byte $96
|
||||
bcc meccm7_data1
|
||||
bcc .data1
|
||||
lda #$07
|
||||
ldx #$98
|
||||
ldy #$01
|
||||
jsr modify ; then set T00,S07,$98 =
|
||||
!byte $96
|
||||
meccm7_data1
|
||||
.data1
|
||||
lda #$07
|
||||
ldx #$15
|
||||
ldy #$01
|
||||
jsr compare ; if T00,S07,$15 !=
|
||||
!byte $D5
|
||||
bcc meccm7_data2
|
||||
bcc .data2
|
||||
lda #$07
|
||||
ldx #$15
|
||||
ldy #$01
|
||||
jsr modify ; then set T00,S07,$15 =
|
||||
!byte $D5
|
||||
meccm7_data2
|
||||
.data2
|
||||
lda #$07
|
||||
ldx #$1F
|
||||
ldy #$01
|
||||
jsr compare ; if T00,S07,$1F !=
|
||||
!byte $AA
|
||||
bcc meccm7_data3
|
||||
bcc .data3
|
||||
lda #$07
|
||||
ldx #$1F
|
||||
ldy #$01
|
||||
jsr modify ; then set T00,S07,$1F =
|
||||
!byte $AA
|
||||
meccm7_data3
|
||||
.data3
|
||||
lda #$07
|
||||
ldx #$2A
|
||||
ldy #$01
|
||||
jsr compare ; if T00,S07,$2A !=
|
||||
!byte $AD
|
||||
bcc meccm7_exit2
|
||||
bcc .exit2
|
||||
lda #$07
|
||||
ldx #$2A
|
||||
ldy #$01
|
||||
jsr modify ; then set T00,S07,$2A =
|
||||
!byte $AD
|
||||
meccm7_exit2
|
||||
.exit2
|
||||
}
|
||||
|
@ -4,127 +4,129 @@
|
||||
; address and data prologues
|
||||
; e.g. Word Munchers
|
||||
;-------------------------------
|
||||
!zone {
|
||||
_meccm8
|
||||
lda #$00
|
||||
ldx #$00
|
||||
ldy #$17
|
||||
jsr compare ; if T00,S00,$00 ==
|
||||
!byte 01,$4C,$1A,08,$17,$0F,00,00
|
||||
!byte $0D,$0B,09,07,05,03,01,$0E
|
||||
!byte $0C,$0A,08,06,04,02,$0F
|
||||
bcs meccm8_exit
|
||||
!byte $01,$4C,$1A,$08,$17,$0F,$00,$00
|
||||
!byte $0D,$0B,$09,$07,$05,$03,$01,$0E
|
||||
!byte $0C,$0A,$08,$06,$04,$02,$0F
|
||||
bcs .exit
|
||||
lda #$0B
|
||||
ldx #$02
|
||||
ldy #$06
|
||||
jsr compare ; and T00,S0B,$02 ==
|
||||
!byte $BD,$8C,$C0,$10,$FB,$C9
|
||||
bcs meccm8_exit
|
||||
bcs .exit
|
||||
lda #$0B
|
||||
ldx #$09
|
||||
ldy #$09
|
||||
jsr compare ; and T00,S0B,$09 ==
|
||||
!byte $D0,$EF,$EA,$BD,$8C,$C0,$10,$FB
|
||||
!byte $C9
|
||||
bcs meccm8_exit
|
||||
bcs .exit
|
||||
lda #$0B
|
||||
ldx #$13
|
||||
ldy #$0A
|
||||
jsr compare ; and T00,S0B,$13 ==
|
||||
!byte $D0,$E5,$A0,$03,$BD,$8C,$C0,$10
|
||||
!byte $FB,$C9
|
||||
bcs meccm8_exit
|
||||
bcs .exit
|
||||
lda #$0B
|
||||
ldx #$89
|
||||
ldy #$06
|
||||
jsr compare ; and T00,S0B,$89 ==
|
||||
!byte $BD,$8C,$C0,$10,$FB,$C9
|
||||
bcs meccm8_exit
|
||||
bcs .exit
|
||||
lda #$0B
|
||||
ldx #$90
|
||||
ldy #$09
|
||||
jsr compare ; and T00,S0B,$90 ==
|
||||
!byte $D0,$F4,$EA,$BD,$8C,$C0,$10,$FB
|
||||
!byte $C9
|
||||
bcs meccm8_exit
|
||||
bcs .exit
|
||||
lda #$0B
|
||||
ldx #$9A
|
||||
ldy #$09
|
||||
jsr compare ; and T00,S0B,$9A ==
|
||||
!byte $D0,$F2,$EA,$BD,$8C,$C0,$10,$FB
|
||||
!byte $C9
|
||||
bcc meccm8_allclear
|
||||
meccm8_exit
|
||||
jmp meccm8_exit2
|
||||
meccm8_allclear
|
||||
bcc .allclear
|
||||
.exit
|
||||
jmp .exit2
|
||||
.allclear
|
||||
lda #$0B
|
||||
ldx #$08
|
||||
ldy #$01
|
||||
jsr compare ; if T00,S0B,$08 !=
|
||||
!byte $D5
|
||||
bcc meccm8_addr2
|
||||
bcc .addr2
|
||||
lda #$0B
|
||||
ldx #$08
|
||||
ldy #$01
|
||||
jsr modify ; then set T00,S0B,$0B =
|
||||
!byte $D5
|
||||
meccm8_addr2
|
||||
.addr2
|
||||
lda #$0B
|
||||
ldx #$12
|
||||
ldy #$01
|
||||
jsr compare ; if T00,S0B,$12 !=
|
||||
!byte $AA
|
||||
bcc meccm8_addr3
|
||||
bcc .addr3
|
||||
lda #$0B
|
||||
ldx #$12
|
||||
ldy #$01
|
||||
jsr modify ; then set T00,S0B,$12 =
|
||||
!byte $AA
|
||||
meccm8_addr3
|
||||
.addr3
|
||||
lda #$0B
|
||||
ldx #$1D
|
||||
ldy #$01
|
||||
jsr compare ; if T00,S0B,$1D !=
|
||||
!byte $96
|
||||
bcc meccm8_data1
|
||||
bcc .data1
|
||||
lda #$0B
|
||||
ldx #$1D
|
||||
ldy #$01
|
||||
jsr modify ; then set T00,S0B,$1D =
|
||||
!byte $96
|
||||
meccm8_data1
|
||||
.data1
|
||||
lda #$0B
|
||||
ldx #$8F
|
||||
ldy #$01
|
||||
jsr compare ; if T00,S0B,$8F !=
|
||||
!byte $D5
|
||||
bcc meccm8_data2
|
||||
bcc .data2
|
||||
lda #$0B
|
||||
ldx #$8F
|
||||
ldy #$01
|
||||
jsr modify ; then set T00,S0B,$8F =
|
||||
!byte $D5
|
||||
meccm8_data2
|
||||
.data2
|
||||
lda #$0B
|
||||
ldx #$99
|
||||
ldy #$01
|
||||
jsr compare ; if T00,S0B,$99 !=
|
||||
!byte $AA
|
||||
bcc meccm8_data3
|
||||
bcc .data3
|
||||
lda #$0B
|
||||
ldx #$99
|
||||
ldy #$01
|
||||
jsr modify ; then set T00,S0B,$99 =
|
||||
!byte $AA
|
||||
meccm8_data3
|
||||
.data3
|
||||
lda #$0B
|
||||
ldx #$A3
|
||||
ldy #$01
|
||||
jsr compare ; if T00,S0B,$A3 !=
|
||||
!byte $AD
|
||||
bcc meccm8_exit2
|
||||
bcc .exit2
|
||||
lda #$0B
|
||||
ldx #$A3
|
||||
ldy #$01
|
||||
jsr modify ; then set T00,S0B,$A3 =
|
||||
!byte $AD
|
||||
meccm8_exit2
|
||||
.exit2
|
||||
}
|
||||
|
@ -4,14 +4,15 @@
|
||||
; nibble-to-byte translation
|
||||
; e.g. Travels with Za-Zoom
|
||||
;-------------------------------
|
||||
!zone {
|
||||
_nibtable
|
||||
jmp checkread
|
||||
jmp .checkread
|
||||
|
||||
readdata
|
||||
!byte 00,01
|
||||
!byte $98,$99,02,03,$9C,04,05,06
|
||||
!byte $A0,$A1,$A2,$A3,$A4,$A5,07,08
|
||||
!byte $A8,$A9,$AA,09,$0A,$0B,$0C,$0D
|
||||
.readdata
|
||||
!byte $00,$01
|
||||
!byte $98,$99,$02,$03,$9C,$04,$05,$06
|
||||
!byte $A0,$A1,$A2,$A3,$A4,$A5,$07,$08
|
||||
!byte $A8,$A9,$AA,$09,$0A,$0B,$0C,$0D
|
||||
!byte $B0,$B1,$0E,$0F,$10,$11,$12,$13
|
||||
!byte $B8,$14,$15,$16,$17,$18,$19,$1A
|
||||
!byte $C0,$C1,$C2,$C3,$C4,$C5,$C6,$C7
|
||||
@ -23,7 +24,7 @@ readdata
|
||||
!byte $F0,$F1,$33,$34,$35,$36,$37,$38
|
||||
!byte $F8,$39,$3A,$3B,$3C,$3D,$3E,$3F
|
||||
|
||||
writedata
|
||||
.writedata
|
||||
!byte $96,$97,$9A,$9B,$9D,$9E,$9F,$A6
|
||||
!byte $A7,$AB,$AC,$AD,$AE,$AF,$B2,$B3
|
||||
!byte $B4,$B5,$B6,$B7,$B9,$BA,$BB,$BC
|
||||
@ -33,104 +34,105 @@ writedata
|
||||
!byte $ED,$EE,$EF,$F2,$F3,$F4,$F5,$F6
|
||||
!byte $F7,$F9,$FA,$FB,$FC,$FD,$FE,$FF
|
||||
|
||||
checkread
|
||||
.checkread
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne nibtable_exit
|
||||
bne .exit
|
||||
lda #$02
|
||||
ldx #$6D
|
||||
ldy #$03
|
||||
jsr compare ; and T00,S02,$6D ==
|
||||
!byte $BD,$29,$BA
|
||||
bcs checkwrite
|
||||
bcs .checkwrite
|
||||
lda #$02
|
||||
ldx #$82
|
||||
ldy #$03
|
||||
jsr compare ; and T00,S02,$82 ==
|
||||
!byte $BD,$29,$BA
|
||||
bcs checkwrite
|
||||
bcs .checkwrite
|
||||
lda #$02
|
||||
ldx #$95
|
||||
ldy #$03
|
||||
jsr compare ; and T00,S02,$95 ==
|
||||
!byte $BD,$29,$BA
|
||||
bcs checkwrite
|
||||
jsr fixwrite
|
||||
checkwrite
|
||||
bcs .checkwrite
|
||||
jsr .fixwrite
|
||||
.checkwrite
|
||||
lda #$03
|
||||
ldx #$09
|
||||
ldy #$03
|
||||
jsr compare ; if T00,S03,$09 ==
|
||||
!byte $59,00,$BA
|
||||
bcs nibtable_exit
|
||||
!byte $59,$00,$BA
|
||||
bcs .exit
|
||||
lda #$03
|
||||
ldx #$1A
|
||||
ldy #$03
|
||||
jsr compare ; and T00,S03,$1A ==
|
||||
!byte $59,00,$BA
|
||||
bcs nibtable_exit
|
||||
!byte $59,$00,$BA
|
||||
bcs .exit
|
||||
lda #$03
|
||||
ldx #$2A
|
||||
ldy #$03
|
||||
jsr compare ; and T00,S03,$2A ==
|
||||
!byte $D9,00,$BA
|
||||
bcs nibtable_exit
|
||||
jsr fixread
|
||||
nibtable_exit
|
||||
jmp nibtable_exit2
|
||||
!byte $D9,$00,$BA
|
||||
bcs .exit
|
||||
jsr .fixread
|
||||
.exit
|
||||
jmp .exit2
|
||||
|
||||
fixread
|
||||
.fixread
|
||||
lda #$00
|
||||
sta nibsrcindex
|
||||
lda #$96
|
||||
sta nibdestindex
|
||||
nibtable_read
|
||||
.read
|
||||
ldx nibsrcindex
|
||||
lda readdata,x
|
||||
sta nibcmpr
|
||||
sta nibmodr
|
||||
lda .readdata,x
|
||||
sta .nibcmpr
|
||||
sta .nibmodr
|
||||
lda #$04
|
||||
ldx nibdestindex
|
||||
ldy #$01
|
||||
jsr compare
|
||||
nibcmpr !byte $FF
|
||||
bcc nomodr
|
||||
.nibcmpr !byte $FF
|
||||
bcc .nomodr
|
||||
lda #$04
|
||||
ldx nibdestindex
|
||||
ldy #$01
|
||||
jsr modify
|
||||
nibmodr !byte $FF
|
||||
nomodr
|
||||
.nibmodr !byte $FF
|
||||
.nomodr
|
||||
inc nibsrcindex
|
||||
inc nibdestindex
|
||||
bne nibtable_read
|
||||
bne .read
|
||||
rts
|
||||
|
||||
fixwrite
|
||||
.fixwrite
|
||||
lda #$00
|
||||
sta nibsrcindex
|
||||
lda #$29
|
||||
sta nibdestindex
|
||||
nibtable_write
|
||||
.write
|
||||
ldx nibsrcindex
|
||||
lda writedata,x
|
||||
sta nibcmpw
|
||||
sta nibmodw
|
||||
lda .writedata,x
|
||||
sta .nibcmpw
|
||||
sta .nibmodw
|
||||
lda #$04
|
||||
ldx nibdestindex
|
||||
ldy #$01
|
||||
jsr compare
|
||||
nibcmpw !byte $FF
|
||||
bcc nomodw
|
||||
.nibcmpw !byte $FF
|
||||
bcc .nomodw
|
||||
lda #$04
|
||||
ldx nibdestindex
|
||||
ldy #$01
|
||||
jsr modify
|
||||
nibmodw !byte $FF
|
||||
nomodw
|
||||
.nibmodw !byte $FF
|
||||
.nomodw
|
||||
inc nibsrcindex
|
||||
inc nibdestindex
|
||||
lda nibsrcindex
|
||||
cmp #$40
|
||||
bne nibtable_write
|
||||
bne .write
|
||||
rts
|
||||
nibtable_exit2
|
||||
.exit2
|
||||
}
|
||||
|
@ -4,14 +4,15 @@
|
||||
; ProDOS-based MECC disks
|
||||
; [thanks LoGo]
|
||||
;-------------------------------
|
||||
!zone {
|
||||
_prodosmecc
|
||||
lda gIsProDOS
|
||||
beq +
|
||||
jmp prodosmecc_exit
|
||||
jmp .exit
|
||||
+
|
||||
ldy #$0E
|
||||
jsr SearchTrack
|
||||
!byte $50,$54,$58,$5C,$60,$64,$68,00
|
||||
!byte $50,$54,$58,$5C,$60,$64,$68,$00
|
||||
!byte $20,$10,$30,$97,$AA,$EB
|
||||
bcs +
|
||||
sta gDisplayBytes
|
||||
@ -36,9 +37,9 @@ _prodosmecc
|
||||
+
|
||||
ldy #$15
|
||||
jsr SearchTrack
|
||||
!byte $AD,$C4,$D1,$CD,$C8,$D4,08,$2C
|
||||
!byte $81,$C0,$28,$D0,06,$C9,$DE,$F0
|
||||
!byte 02,$18,$24,$38,$60
|
||||
!byte $AD,$C4,$D1,$CD,$C8,$D4,$08,$2C
|
||||
!byte $81,$C0,$28,$D0,$06,$C9,$DE,$F0
|
||||
!byte $02,$18,$24,$38,$60
|
||||
bcs +
|
||||
sta gDisplayBytes
|
||||
inx
|
||||
@ -73,9 +74,9 @@ _prodosmecc
|
||||
|
||||
; variation seen in e.g. A-232 Spelling Press
|
||||
|
||||
!byte $AD,$C4,$D1,$CD,$C8,$D4,08,$2C
|
||||
!byte $81,$C0,$28,$D0,09,$8D,$97,$97
|
||||
!byte $C9,$DE,$F0,02,$18,$24,$38,$60
|
||||
!byte $AD,$C4,$D1,$CD,$C8,$D4,$08,$2C
|
||||
!byte $81,$C0,$28,$D0,$09,$8D,$97,$97
|
||||
!byte $C9,$DE,$F0,$02,$18,$24,$38,$60
|
||||
bcs +
|
||||
sta gDisplayBytes
|
||||
inx
|
||||
@ -110,7 +111,7 @@ _prodosmecc
|
||||
+
|
||||
ldy #$0C
|
||||
jsr SearchTrack
|
||||
!byte $30,$A2,$20,00,$BF,$80,$97,$97,$B0,$98,$38,$60
|
||||
!byte $30,$A2,$20,$00,$BF,$80,$97,$97,$B0,$98,$38,$60
|
||||
bcs +
|
||||
inx
|
||||
inx
|
||||
@ -133,14 +134,15 @@ _prodosmecc
|
||||
ldy #$0B
|
||||
jsr SearchTrack
|
||||
!byte $30,$91,$38,$60,00,$20,00,03,00,03,00
|
||||
bcs prodosmecc_exit
|
||||
bcs .exit
|
||||
inx
|
||||
inx
|
||||
ldy #$01
|
||||
jsr compare
|
||||
!byte $38
|
||||
bcs prodosmecc_exit
|
||||
bcs .exit
|
||||
ldy #$01
|
||||
jsr modify
|
||||
!byte $18
|
||||
prodosmecc_exit
|
||||
.exit
|
||||
}
|
||||
|
@ -3,15 +3,16 @@
|
||||
; patch ProDOS RWTS
|
||||
; e.g. ProDOS-based MECC disks
|
||||
;-------------------------------
|
||||
!zone {
|
||||
_prodosrwts
|
||||
lda gIsProDOS
|
||||
bne prodosrwts_exit
|
||||
bne .exit
|
||||
ldy #$14
|
||||
jsr SearchTrack
|
||||
!byte $29,$FC,$5D,$97,$97,$D0,$0C,$A6
|
||||
!byte $97,$BD,$8C,$C0,$10,$FB,$C9,$97
|
||||
!byte $18,$F0,01,$38
|
||||
bcs prodosrwts_exit
|
||||
!byte $18,$F0,$01,$38
|
||||
bcs .exit
|
||||
sta gDisplayBytes
|
||||
inx
|
||||
inx
|
||||
@ -31,8 +32,9 @@ _prodosrwts
|
||||
ldy #$01
|
||||
jsr compare
|
||||
!byte $DE
|
||||
bcc prodosrwts_exit
|
||||
bcc .exit
|
||||
ldy #$01
|
||||
jsr modify
|
||||
!byte $DE
|
||||
prodosrwts_exit
|
||||
.exit
|
||||
}
|
||||
|
@ -8,10 +8,11 @@
|
||||
; (Home Alone / Outdoor Safety / Famous People),
|
||||
; Math Blaster, Moebius
|
||||
;-------------------------------
|
||||
!zone {
|
||||
_protdos
|
||||
lda gIsProtDOS
|
||||
beq +
|
||||
jmp protdos_exit
|
||||
jmp .exit
|
||||
+
|
||||
;
|
||||
; Find secondary/tertiary RWTS swappers on any track
|
||||
@ -21,30 +22,30 @@ _protdos
|
||||
jsr SearchTrack
|
||||
!byte $A9,$B5,$85,$4E,$8D,$5D,$BD,$A9
|
||||
!byte $D5,$8D,$2C,$BF
|
||||
bcs specific
|
||||
sta swapper2+1
|
||||
bcs .specific
|
||||
sta .swapper2+1
|
||||
inx
|
||||
stx swapper1+1
|
||||
stx .swapper1+1
|
||||
ldy #$01
|
||||
jsr modify ; offset $01: $B5 -> $AD
|
||||
jsr modify ; offset $01. $B5 -> $AD
|
||||
!byte $AD
|
||||
swapper1
|
||||
.swapper1
|
||||
lda #$FF ; modified at runtime
|
||||
clc
|
||||
adc #$07
|
||||
tax
|
||||
swapper2
|
||||
.swapper2
|
||||
lda #$FF ; modified at runtime
|
||||
ldy #$01
|
||||
jsr modify ; offset $08: $D5 -> 9B
|
||||
jsr modify ; offset $08. $D5 -> 9B
|
||||
!byte $9B
|
||||
|
||||
specific
|
||||
.specific
|
||||
lda gTrack
|
||||
cmp #$02
|
||||
bcc strip
|
||||
jmp protdos_exit
|
||||
strip
|
||||
bcc .strip
|
||||
jmp .exit
|
||||
.strip
|
||||
;
|
||||
; strip 6-digit numeric serial number
|
||||
; (appears on both track 0 and 1, but
|
||||
@ -64,27 +65,27 @@ strip
|
||||
inx
|
||||
lda #$02
|
||||
++
|
||||
stx serial+2
|
||||
stx serialb+2
|
||||
stx .serial+2
|
||||
stx .serialb+2
|
||||
sta gDisplayBytes+3
|
||||
lda #$C5
|
||||
sta serial+1
|
||||
sta serialb+1
|
||||
sta .serial+1
|
||||
sta .serialb+1
|
||||
ldy #$00
|
||||
serialloop
|
||||
jsr serial
|
||||
.serialloop
|
||||
jsr .serial
|
||||
tax
|
||||
jsr serial
|
||||
jsr XA2byte
|
||||
jsr .serial
|
||||
jsr .XA2byte
|
||||
sta gDisplayBytes,y
|
||||
iny
|
||||
cpy #$03
|
||||
bne serialloop
|
||||
bne .serialloop
|
||||
lda #s_protserial
|
||||
jsr PrintByID
|
||||
|
||||
lda gTrack
|
||||
beq track0
|
||||
beq .track0
|
||||
|
||||
;
|
||||
; disable RWTS swapper (technically make the
|
||||
@ -97,7 +98,7 @@ serialloop
|
||||
jsr compare ; if T01,S02,$AF ==
|
||||
!byte $A2,$B5,$86,$4E,$8E,$5D,$BD,$A2
|
||||
!byte $D5,$8E,$2C,$BF
|
||||
bcs exitt1
|
||||
bcs .exitt1
|
||||
lda #$02
|
||||
ldx #$B0
|
||||
ldy #$01
|
||||
@ -109,10 +110,10 @@ serialloop
|
||||
jsr modify ; and set T01,S02,$B7 =
|
||||
!byte $9B
|
||||
|
||||
exitt1
|
||||
jmp protdos_exit
|
||||
.exitt1
|
||||
jmp .exit
|
||||
|
||||
:track0
|
||||
.track0
|
||||
;
|
||||
; decrypt RWTS in track buffer
|
||||
;
|
||||
@ -120,22 +121,22 @@ exitt1
|
||||
jsr PrintByID
|
||||
ldx #BASEPAGE
|
||||
inx
|
||||
stx a+2
|
||||
stx b+2
|
||||
stx c+2
|
||||
a lda $FF06 ; modified at runtime
|
||||
sta pdkey+1
|
||||
stx .a+2
|
||||
stx .b+2
|
||||
stx .c+2
|
||||
.a lda $FF06 ; modified at runtime
|
||||
sta .key+1
|
||||
ldx #$09
|
||||
ldy #$1A
|
||||
b lda $FF00,Y ; modified at runtime
|
||||
pdkey eor #$FF ; modified at runtime
|
||||
c sta $FF00,Y ; modified at runtime
|
||||
.b lda $FF00,Y ; modified at runtime
|
||||
.key eor #$FF ; modified at runtime
|
||||
.c sta $FF00,Y ; modified at runtime
|
||||
iny
|
||||
bne b
|
||||
inc b+2
|
||||
inc c+2
|
||||
bne .b
|
||||
inc .b+2
|
||||
inc .c+2
|
||||
dex
|
||||
bne b
|
||||
bne .b
|
||||
|
||||
;
|
||||
; disable decryption loop
|
||||
@ -153,12 +154,12 @@ c sta $FF00,Y ; modified at runtime
|
||||
ldx #$93
|
||||
ldy #$03
|
||||
jsr compare ; if T00,S01,$93 ==
|
||||
!byte $4C,00,$B8
|
||||
bcs skipcheck
|
||||
!byte $4C,$00,$B8
|
||||
bcs .skipcheck
|
||||
ldy #$03
|
||||
jsr modify ; then set T00,S01,$93 =
|
||||
!byte $AC,$E5,$B7
|
||||
skipcheck
|
||||
.skipcheck
|
||||
|
||||
;
|
||||
; fake "found disk volume" in RWTS parameter table
|
||||
@ -170,10 +171,10 @@ skipcheck
|
||||
ldy #$02
|
||||
jsr compare ; if T00,S05,$15 ==
|
||||
!byte $A5,$2F
|
||||
bcs protdos_exit
|
||||
bcs .exit
|
||||
ldy #$02
|
||||
jsr modify ; then set T00,S05,$15 =
|
||||
!byte $A9,00
|
||||
!byte $A9,$00
|
||||
|
||||
;
|
||||
; re-enable write mode if it was disabled
|
||||
@ -182,34 +183,34 @@ skipcheck
|
||||
ldx #$48
|
||||
ldy #$19
|
||||
jsr compare ; if T00,S07,$48 ==
|
||||
!byte $A0,04,$48,$68,$A0,$B9,$BD,$88
|
||||
!byte $A0,$04,$48,$68,$A0,$B9,$BD,$88
|
||||
!byte $D0,$F8,$A9,$97,$20,$B8,$BD,$A9
|
||||
!byte $97,$20,$B8,$BD,$A9,$97,$20,$B8
|
||||
!byte $BD
|
||||
bcs writeIsOK
|
||||
bcs .writeIsOK
|
||||
ldx #$4C
|
||||
ldy #$01
|
||||
jsr modify ; then set T00,S07,$4C =
|
||||
!byte $20
|
||||
writeIsOK
|
||||
jmp protdos_exit
|
||||
.writeIsOK
|
||||
jmp .exit
|
||||
|
||||
; subroutines for getting (and erasing) the embedded
|
||||
; 6-digit serial number and converting them to bytes
|
||||
; for printing
|
||||
serial
|
||||
.serial
|
||||
lda $FFFF ; modified at runtime
|
||||
pha
|
||||
lda #$B0
|
||||
serialb
|
||||
.serialb
|
||||
sta $FFFF ; modified at runtime
|
||||
pla
|
||||
inc serial+1
|
||||
inc serialb+1
|
||||
inc .serial+1
|
||||
inc .serialb+1
|
||||
inc gPatchCount
|
||||
rts
|
||||
|
||||
XA2byte
|
||||
.XA2byte
|
||||
and #$0F
|
||||
sta tmp
|
||||
txa
|
||||
@ -220,4 +221,5 @@ XA2byte
|
||||
ora tmp
|
||||
rts
|
||||
|
||||
protdos_exit
|
||||
.exit
|
||||
}
|
||||
|
@ -3,28 +3,29 @@
|
||||
; RWTS stores timing bits in $1E
|
||||
; e.g. Spellicopter
|
||||
;-------------------------------
|
||||
!zone {
|
||||
_rol1e
|
||||
lda #$03
|
||||
ldx #$00
|
||||
ldy #$2F
|
||||
jsr compare ; if T00,S03,$00 ==
|
||||
!byte $86,$1B,$BA,$BD,02,01,$85,03
|
||||
!byte $18,$69,04,$85,05,$A0,00,$84
|
||||
!byte 02,$A0,$40,$84,04,$A0,$39,$A9
|
||||
!byte $93,$91,02,$C8,$A5,03,$91,02
|
||||
!byte $A0,$7F,$B1,04,$99,00,08,$88
|
||||
!byte $10,$F8,$A6,$1B,$4C,00,08
|
||||
bcs rol1e_exit
|
||||
!byte $86,$1B,$BA,$BD,$02,$01,$85,$03
|
||||
!byte $18,$69,$04,$85,$05,$A0,$00,$84
|
||||
!byte $02,$A0,$40,$84,$04,$A0,$39,$A9
|
||||
!byte $93,$91,$02,$C8,$A5,$03,$91,$02
|
||||
!byte $A0,$7F,$B1,$04,$99,$00,$08,$88
|
||||
!byte $10,$F8,$A6,$1B,$4C,$00,$08
|
||||
bcs .exit
|
||||
lda #$03
|
||||
ldx #$40
|
||||
ldy #$28
|
||||
jsr compare ; and T00,S03,$40 ==
|
||||
!byte $A9,00,$A0,$EC,$91,02,$C8,$91
|
||||
!byte 02,$A9,09,$A0,$F1,$91,02,$A9
|
||||
!byte 08,$A0,$E1,$91,02,$A9,$4C,$85
|
||||
!byte 01,$A9,$93,$85,02,$20,01,00
|
||||
!byte $A0,00,$84,02,$A5,$1E,$85,08
|
||||
bcs rol1e_exit
|
||||
!byte $A9,$00,$A0,$EC,$91,$02,$C8,$91
|
||||
!byte $02,$A9,$09,$A0,$F1,$91,$02,$A9
|
||||
!byte $08,$A0,$E1,$91,$02,$A9,$4C,$85
|
||||
!byte $01,$A9,$93,$85,$02,$20,$01,$00
|
||||
!byte $A0,$00,$84,$02,$A5,$1E,$85,$08
|
||||
bcs .exit
|
||||
lda #s_rol1e
|
||||
jsr PrintByID
|
||||
lda #$03
|
||||
@ -32,4 +33,5 @@ _rol1e
|
||||
ldy #$02
|
||||
jsr modify ; then set T00,S03,$64 =
|
||||
!byte $A9,$F7
|
||||
rol1e_exit
|
||||
.exit
|
||||
}
|
||||
|
@ -5,48 +5,50 @@
|
||||
; startup program after succeeding
|
||||
; e.g. Microzine 15, Alpine Tram Ride
|
||||
;-------------------------------
|
||||
!zone {
|
||||
_runhello
|
||||
lda gIsProDOS ; this exact protection is only
|
||||
beq runhello_exit ; on DOS 3.3 disks (other patchers
|
||||
beq .exit ; on DOS 3.3 disks (other patchers
|
||||
lda gIsPascal ; will catch other variations)
|
||||
beq runhello_exit
|
||||
beq .exit
|
||||
lda #$0F
|
||||
sta rhsector+1
|
||||
rhsector lda #$FF ; modified at runtime
|
||||
sta .sector+1
|
||||
.sector lda #$FF ; modified at runtime
|
||||
ldx #$04
|
||||
ldy #$05
|
||||
jsr compare
|
||||
!byte $20,$E3,03,$85,$FB
|
||||
!byte $20,$E3,$03,$85,$FB
|
||||
bcc +
|
||||
jmp rhnextsector
|
||||
jmp .nextsector
|
||||
+
|
||||
lda rhsector+1
|
||||
lda .sector+1
|
||||
ldx #$19
|
||||
ldy #$06
|
||||
jsr compare
|
||||
!byte $CA,$10,$F8,$8A,$48,$20
|
||||
bcc +
|
||||
jmp rhnextsector
|
||||
jmp .nextsector
|
||||
+
|
||||
lda rhsector+1
|
||||
lda .sector+1
|
||||
ldx #$21
|
||||
ldy #$06
|
||||
jsr compare
|
||||
!byte $A0,01,$B1,$FA,$AA,$20
|
||||
!byte $A0,$01,$B1,$FA,$AA,$20
|
||||
bcc +
|
||||
jmp rhnextsector
|
||||
jmp .nextsector
|
||||
+
|
||||
lda rhsector+1
|
||||
lda .sector+1
|
||||
sta gDisplayBytes
|
||||
lda #s_runhello
|
||||
jsr PrintByID
|
||||
lda rhsector+1
|
||||
lda .sector+1
|
||||
ldx #$26
|
||||
ldy #$01
|
||||
jsr modify
|
||||
!byte $2C
|
||||
rhnextsector
|
||||
dec rhsector+1
|
||||
bmi runhello_exit
|
||||
jmp rhsector
|
||||
runhello_exit
|
||||
.nextsector
|
||||
dec .sector+1
|
||||
bmi .exit
|
||||
jmp .sector
|
||||
.exit
|
||||
}
|
||||
|
@ -2,598 +2,599 @@
|
||||
; RWTS fixup #AP1R
|
||||
; address prologue byte 1 (read)
|
||||
;-------------------------------
|
||||
!zone {
|
||||
rwtspatcher
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne ap1r
|
||||
bne .ap1r
|
||||
lda #$03
|
||||
ldx #$4F
|
||||
ldy #$06
|
||||
jsr compare ; and T00,S03,$4F ==
|
||||
!byte $BD,$8C,$C0,$10,$FB,$C9
|
||||
bcs ap1r
|
||||
bcs .ap1r
|
||||
ldx #$56
|
||||
ldy #$03
|
||||
jsr compare ; and T00,S03,$56 ==
|
||||
!byte $D0,$F0,$EA
|
||||
bcs ap1r
|
||||
bcs .ap1r
|
||||
ldx #$55
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S03,$55 !=
|
||||
!byte $D5
|
||||
bcc ap1r
|
||||
bcc .ap1r
|
||||
ldy #$01
|
||||
jsr modify ; then set T00,S03,$55 =
|
||||
!byte $D5
|
||||
ap1r
|
||||
.ap1r
|
||||
|
||||
;-------------------------------
|
||||
; RWTS fixup #AP2R
|
||||
; address prologue byte 2 (read)
|
||||
;-------------------------------
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne ap2r
|
||||
bne .ap2r
|
||||
lda #$03
|
||||
ldx #$59
|
||||
ldy #$06
|
||||
jsr compare ; and T00,S03,$59 ==
|
||||
!byte $BD,$8C,$C0,$10,$FB,$C9
|
||||
bcs ap2r
|
||||
bcs .ap2r
|
||||
ldx #$60
|
||||
ldy #$04
|
||||
jsr compare ; and T00,S03,$60 ==
|
||||
!byte $D0,$F2,$A0,$03
|
||||
bcs ap2r
|
||||
bcs .ap2r
|
||||
ldx #$5F
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S03,$5F !=
|
||||
!byte $AA
|
||||
bcc ap2r
|
||||
bcc .ap2r
|
||||
ldy #$01
|
||||
jsr modify ; then set T00,S03,$5F =
|
||||
!byte $AA
|
||||
ap2r
|
||||
.ap2r
|
||||
|
||||
;-------------------------------
|
||||
; RWTS fixup #AP3R
|
||||
; address prologue byte 3 (read)
|
||||
;-------------------------------
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne ap3r
|
||||
bne .ap3r
|
||||
lda #$03
|
||||
ldx #$64
|
||||
ldy #$06
|
||||
jsr compare ; and T00,S03,$64 ==
|
||||
!byte $BD,$8C,$C0,$10,$FB,$C9
|
||||
bcs ap3r
|
||||
bcs .ap3r
|
||||
ldx #$6B
|
||||
ldy #$02
|
||||
jsr compare ; and T00,S03,$6B ==
|
||||
!byte $D0,$E7
|
||||
bcs ap3r
|
||||
bcs .ap3r
|
||||
ldx #$6A
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S03,$6A !=
|
||||
!byte $96
|
||||
bcc ap3r
|
||||
bcc .ap3r
|
||||
ldy #$01
|
||||
jsr modify ; then set T00,S03,$6A =
|
||||
!byte $96
|
||||
ap3r
|
||||
.ap3r
|
||||
|
||||
;-------------------------------
|
||||
; RWTS fixup #AE1R
|
||||
; address epilogue byte 1 (read)
|
||||
;-------------------------------
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne ae1r
|
||||
bne .ae1r
|
||||
lda #$03
|
||||
ldx #$8B
|
||||
ldy #$06
|
||||
jsr compare ; and T00,S03,$8B ==
|
||||
!byte $BD,$8C,$C0,$10,$FB,$C9
|
||||
bcs ae1r
|
||||
bcs .ae1r
|
||||
ldx #$92
|
||||
ldy #$03
|
||||
jsr compare ; and T00,S03,$92 ==
|
||||
!byte $D0,$AE,$EA
|
||||
bcs ae1r
|
||||
bcs .ae1r
|
||||
ldx #$91
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S03,$91 !=
|
||||
!byte $DE
|
||||
bcc ae1r
|
||||
bcc .ae1r
|
||||
ldy #$01
|
||||
jsr modify ; then set T00,S03,$91 =
|
||||
!byte $DE
|
||||
ae1r
|
||||
.ae1r
|
||||
|
||||
;-------------------------------
|
||||
; RWTS fixup #AE2R
|
||||
; address epilogue byte 2 (read)
|
||||
;-------------------------------
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne ae2r
|
||||
bne .ae2r
|
||||
lda #$03
|
||||
ldx #$95
|
||||
ldy #$06
|
||||
jsr compare ; and T00,S03,$95 ==
|
||||
!byte $BD,$8C,$C0,$10,$FB,$C9
|
||||
bcs ae2r
|
||||
bcs .ae2r
|
||||
ldx #$9C
|
||||
ldy #$03
|
||||
jsr compare ; and T00,S03,$9C ==
|
||||
!byte $D0,$A4,$18
|
||||
bcs ae2r
|
||||
bcs .ae2r
|
||||
ldx #$9B
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S03,$9B !=
|
||||
!byte $AA
|
||||
bcc ae2r
|
||||
bcc .ae2r
|
||||
ldy #$01
|
||||
jsr modify ; then set T00,S03,$9B =
|
||||
!byte $AA
|
||||
ae2r
|
||||
.ae2r
|
||||
|
||||
;-------------------------------
|
||||
; RWTS fixus #DP1R
|
||||
; data prologue byte 1 (read)
|
||||
;-------------------------------
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne dp1r
|
||||
bne .dp1r
|
||||
lda #$02
|
||||
ldx #$E1
|
||||
ldy #$06
|
||||
jsr compare ; and T00,S02,$E1 ==
|
||||
!byte $BD,$8C,$C0,$10,$FB,$49
|
||||
bcs dp1r
|
||||
bcs .dp1r
|
||||
ldx #$E8
|
||||
ldy #$03
|
||||
jsr compare ; and T00,S02,$E8 ==
|
||||
!byte $D0,$F4,$EA
|
||||
bcs dp1r
|
||||
bcs .dp1r
|
||||
ldx #$E7
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S02,$E7 !=
|
||||
!byte $D5
|
||||
bcc dp1r
|
||||
bcc .dp1r
|
||||
ldy #$01
|
||||
jsr modify ; then set T00,S02,$E7 =
|
||||
!byte $D5
|
||||
dp1r
|
||||
.dp1r
|
||||
|
||||
;-------------------------------
|
||||
; RWTS fixup #DP2R
|
||||
; data prologue byte 2 (read)
|
||||
;-------------------------------
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne dp2r
|
||||
bne .dp2r
|
||||
lda #$02
|
||||
ldx #$EB
|
||||
ldy #$06
|
||||
jsr compare ; and T00,S02,$EB ==
|
||||
!byte $BD,$8C,$C0,$10,$FB,$C9
|
||||
bcs dp2r
|
||||
bcs .dp2r
|
||||
ldx #$F2
|
||||
ldy #$04
|
||||
jsr compare ; and T00,S02,$F2 ==
|
||||
!byte $D0,$F2,$A0,$56
|
||||
bcs dp2r
|
||||
bcs .dp2r
|
||||
ldx #$F1
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S02,$F1 !=
|
||||
!byte $AA
|
||||
bcc dp2r
|
||||
bcc .dp2r
|
||||
ldy #$01
|
||||
jsr modify ; then set T00,S02,$F1 =
|
||||
!byte $AA
|
||||
dp2r
|
||||
.dp2r
|
||||
|
||||
;-------------------------------
|
||||
; RWTS fixup #DP3R
|
||||
; data prologue byte 3 (read)
|
||||
;-------------------------------
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne dp3r
|
||||
bne .dp3r
|
||||
lda #$02
|
||||
ldx #$F6
|
||||
ldy #$06
|
||||
jsr compare ; and T00,S02,$F6 ==
|
||||
!byte $BD,$8C,$C0,$10,$FB,$C9
|
||||
bcs dp3r
|
||||
bcs .dp3r
|
||||
ldx #$FD
|
||||
ldy #$02
|
||||
jsr compare ; and T00,S02,$FD ==
|
||||
!byte $D0,$E7
|
||||
bcs dp3r
|
||||
bcs .dp3r
|
||||
ldx #$FC
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S02,$FC !=
|
||||
!byte $AD
|
||||
bcc dp3r
|
||||
bcc .dp3r
|
||||
ldy #$01
|
||||
jsr modify ; then set T00,S02,$FC =
|
||||
!byte $AD
|
||||
dp3r
|
||||
.dp3r
|
||||
|
||||
;-------------------------------
|
||||
; RWTS fixup #DE1R
|
||||
; data epilogue byte 1 (read)
|
||||
;-------------------------------
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne de1r
|
||||
bne .de1r
|
||||
lda #$03
|
||||
ldx #$2F
|
||||
ldy #$06
|
||||
jsr compare ; and T00,S03,$2F ==
|
||||
!byte $BD,$8C,$C0,$10,$FB,$C9
|
||||
bcs de1r
|
||||
bcs .de1r
|
||||
ldx #$36
|
||||
ldy #$03
|
||||
jsr compare ; and T00,S03,$36 ==
|
||||
!byte $D0,$0A,$EA
|
||||
bcs de1r
|
||||
bcs .de1r
|
||||
ldx #$35
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S03,$35 !=
|
||||
!byte $DE
|
||||
bcc de1r
|
||||
bcc .de1r
|
||||
ldy #$01
|
||||
jsr modify ; then set T00,S03,$35 =
|
||||
!byte $DE
|
||||
de1r
|
||||
.de1r
|
||||
|
||||
;-------------------------------
|
||||
; RWTS fixup #DE2R
|
||||
; data epilogue byte 2 (read)
|
||||
;-------------------------------
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne de2r
|
||||
bne .de2r
|
||||
lda #$03
|
||||
ldx #$39
|
||||
ldy #$06
|
||||
jsr compare ; and T00,S03,$39 ==
|
||||
!byte $BD,$8C,$C0,$10,$FB,$C9
|
||||
bcs de2r
|
||||
bcs .de2r
|
||||
ldx #$40
|
||||
ldy #$03
|
||||
jsr compare ; and T00,S03,$40 ==
|
||||
!byte $F0,$5C,$38
|
||||
bcs de2r
|
||||
bcs .de2r
|
||||
ldx #$3F
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S03,$3F !=
|
||||
!byte $AA
|
||||
bcc de2r
|
||||
bcc .de2r
|
||||
ldy #$01
|
||||
jsr modify ; then set T00,S03,$3F =
|
||||
!byte $AA
|
||||
de2r
|
||||
.de2r
|
||||
|
||||
;-------------------------------
|
||||
; RWTS fixup #AP1W
|
||||
; address prologue byte 1 (write)
|
||||
;-------------------------------
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne ap1w
|
||||
bne .ap1w
|
||||
lda #$06
|
||||
ldx #$79
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S06,$79 ==
|
||||
!byte $A9
|
||||
bcs ap1w
|
||||
bcs .ap1w
|
||||
ldx #$7B
|
||||
ldy #$02
|
||||
jsr compare ; and T00,S06,$7B ==
|
||||
!byte $20,$D5
|
||||
bcs ap1w
|
||||
bcs .ap1w
|
||||
ldx #$7A
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S06,$7A !=
|
||||
!byte $D5
|
||||
bcc ap1w
|
||||
bcc .ap1w
|
||||
ldy #$01
|
||||
jsr modify ; then set T00,S06,$7A =
|
||||
!byte $D5
|
||||
ap1w
|
||||
.ap1w
|
||||
|
||||
;-------------------------------
|
||||
; RWTS fixup #AP2W
|
||||
; address prologue byte 2 (write)
|
||||
;-------------------------------
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne ap2w
|
||||
bne .ap2w
|
||||
lda #$06
|
||||
ldx #$7E
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S06,$7E ==
|
||||
!byte $A9
|
||||
bcs ap2w
|
||||
bcs .ap2w
|
||||
ldx #$80
|
||||
ldy #$02
|
||||
jsr compare ; and T00,S06,$80 ==
|
||||
!byte $20,$D5
|
||||
bcs ap2w
|
||||
bcs .ap2w
|
||||
ldx #$7F
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S06,$7F !=
|
||||
!byte $AA
|
||||
bcc ap2w
|
||||
bcc .ap2w
|
||||
ldy #$01
|
||||
jsr modify ; then set T00,S06,$7F =
|
||||
!byte $AA
|
||||
ap2w
|
||||
.ap2w
|
||||
|
||||
;-------------------------------
|
||||
; RWTS fixup #AP3W
|
||||
; address prologue byte 3 (write)
|
||||
;-------------------------------
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne ap3w
|
||||
bne .ap3w
|
||||
lda #$06
|
||||
ldx #$83
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S06,$83 ==
|
||||
!byte $A9
|
||||
bcs ap3w
|
||||
bcs .ap3w
|
||||
ldx #$85
|
||||
ldy #$02
|
||||
jsr compare ; and T00,S06,$85 ==
|
||||
!byte $20,$D5
|
||||
bcs ap3w
|
||||
bcs .ap3w
|
||||
ldx #$84
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S06,$84 !=
|
||||
!byte $96
|
||||
bcc ap3w
|
||||
bcc .ap3w
|
||||
ldy #$01
|
||||
jsr modify ; then set T00,S06,$84 =
|
||||
!byte $96
|
||||
ap3w
|
||||
.ap3w
|
||||
|
||||
;-------------------------------
|
||||
; RWTS fixup #AE1W
|
||||
; address epilogue byte 1 (write)
|
||||
;-------------------------------
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne ae1w
|
||||
bne .ae1w
|
||||
lda #$06
|
||||
ldx #$AD
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S06,$AD ==
|
||||
!byte $A9
|
||||
bcs ae1w
|
||||
bcs .ae1w
|
||||
ldx #$AF
|
||||
ldy #$02
|
||||
jsr compare ; and T00,S06,$AF ==
|
||||
!byte $20,$D5
|
||||
bcs ae1w
|
||||
bcs .ae1w
|
||||
ldx #$AE
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S06,$AE !=
|
||||
!byte $DE
|
||||
bcc ae1w
|
||||
bcc .ae1w
|
||||
ldy #$01
|
||||
jsr modify ; then set T00,S06,$AE =
|
||||
!byte $DE
|
||||
ae1w
|
||||
.ae1w
|
||||
|
||||
;-------------------------------
|
||||
; RWTS fixup #AE2W
|
||||
; address epilogue byte 2 (write)
|
||||
;-------------------------------
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne ae2w
|
||||
bne .ae2w
|
||||
lda #$06
|
||||
ldx #$B2
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S06,$B2 ==
|
||||
!byte $A9
|
||||
bcs ae2w
|
||||
bcs .ae2w
|
||||
ldx #$B4
|
||||
ldy #$02
|
||||
jsr compare ; and T00,S06,$B4 ==
|
||||
!byte $20,$D5
|
||||
bcs ae2w
|
||||
bcs .ae2w
|
||||
ldx #$B3
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S06,$B3 !=
|
||||
!byte $AA
|
||||
bcc ae2w
|
||||
bcc .ae2w
|
||||
ldy #$01
|
||||
jsr modify ; then set T00,S06,$B3 =
|
||||
!byte $AA
|
||||
ae2w
|
||||
.ae2w
|
||||
|
||||
;-------------------------------
|
||||
; RWTS fixup #AE3W
|
||||
; address epilogue byte 3 (write)
|
||||
;-------------------------------
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne ae3w
|
||||
bne .ae3w
|
||||
lda #$06
|
||||
ldx #$B7
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S06,$B7 ==
|
||||
!byte $A9
|
||||
bcs ae3w
|
||||
bcs .ae3w
|
||||
ldx #$B9
|
||||
ldy #$02
|
||||
jsr compare ; and T00,S06,$B9 ==
|
||||
!byte $20,$D5
|
||||
bcs ae3w
|
||||
bcs .ae3w
|
||||
ldx #$B8
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S06,$B8 !=
|
||||
!byte $EB
|
||||
bcc ae3w
|
||||
bcc .ae3w
|
||||
ldy #$01
|
||||
jsr modify ; then set T00,S06,$B8 =
|
||||
!byte $EB
|
||||
ae3w
|
||||
.ae3w
|
||||
|
||||
;-------------------------------
|
||||
; RWTS fixup #DP1W
|
||||
; data prologue byte 1 (write)
|
||||
;-------------------------------
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne dp1w
|
||||
bne .dp1w
|
||||
lda #$02
|
||||
ldx #$52
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S02,$52 ==
|
||||
!byte $A9
|
||||
bcs dp1w
|
||||
bcs .dp1w
|
||||
ldx #$54
|
||||
ldy #$02
|
||||
jsr compare ; and T00,S02,$54 ==
|
||||
!byte $20,$B8
|
||||
bcs dp1w
|
||||
bcs .dp1w
|
||||
ldx #$53
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S02,$53 !=
|
||||
!byte $D5
|
||||
bcc dp1w
|
||||
bcc .dp1w
|
||||
ldy #$01
|
||||
jsr modify ; then set T00,S02,$53 =
|
||||
!byte $D5
|
||||
dp1w
|
||||
.dp1w
|
||||
|
||||
;-------------------------------
|
||||
; RWTS fixup #DP2W
|
||||
; data prologue byte 2 (write)
|
||||
;-------------------------------
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne dp2w
|
||||
bne .dp2w
|
||||
lda #$02
|
||||
ldx #$57
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S02,$57 ==
|
||||
!byte $A9
|
||||
bcs dp2w
|
||||
bcs .dp2w
|
||||
ldx #$59
|
||||
ldy #$02
|
||||
jsr compare ; and T00,S02,$59 ==
|
||||
!byte $20,$B8
|
||||
bcs dp2w
|
||||
bcs .dp2w
|
||||
ldx #$58
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S02,$58 ==
|
||||
!byte $AA
|
||||
bcc dp2w
|
||||
bcc .dp2w
|
||||
ldy #$01
|
||||
jsr modify ; then set T00,S02,$58 =
|
||||
!byte $AA
|
||||
dp2w
|
||||
.dp2w
|
||||
|
||||
;-------------------------------
|
||||
; RWTS fixup #DP3W
|
||||
; data prologue byte 3 (write)
|
||||
;-------------------------------
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne dp3w
|
||||
bne .dp3w
|
||||
lda #$02
|
||||
ldx #$5C
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S02,$5C ==
|
||||
!byte $A9
|
||||
bcs dp3w
|
||||
bcs .dp3w
|
||||
ldx #$5E
|
||||
ldy #$02
|
||||
jsr compare ; and T00,S02,$5E ==
|
||||
!byte $20,$B8
|
||||
bcs dp3w
|
||||
bcs .dp3w
|
||||
ldx #$5D
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S02,$5D !=
|
||||
!byte $AD
|
||||
bcc dp3w
|
||||
bcc .dp3w
|
||||
ldy #$01
|
||||
jsr modify ; then set T00,S02,$5D =
|
||||
!byte $AD
|
||||
dp3w
|
||||
.dp3w
|
||||
|
||||
;-------------------------------
|
||||
; RWTS fixup #DE1W
|
||||
; data epilogue byte 1 (write)
|
||||
;-------------------------------
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne de1w
|
||||
bne .de1w
|
||||
lda #$02
|
||||
ldx #$9D
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S02,$9D ==
|
||||
!byte $A9
|
||||
bcs de1w
|
||||
bcs .de1w
|
||||
ldx #$9F
|
||||
ldy #$02
|
||||
jsr compare ; and T00,S02,$9F ==
|
||||
!byte $20,$B8
|
||||
bcs de1w
|
||||
bcs .de1w
|
||||
ldx #$9E
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S02,$9E !=
|
||||
!byte $DE
|
||||
bcc de1w
|
||||
bcc .de1w
|
||||
ldy #$01
|
||||
jsr modify ; then set T00,S02,$9E =
|
||||
!byte $DE
|
||||
|
||||
de1w
|
||||
.de1w
|
||||
|
||||
;-------------------------------
|
||||
; RWTS fixup #DE2W
|
||||
; data epilogue byte 2 (write)
|
||||
;-------------------------------
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne de2w
|
||||
bne .de2w
|
||||
lda #$02
|
||||
ldx #$A2
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S02,$A2 ==
|
||||
!byte $A9
|
||||
bcs de2w
|
||||
bcs .de2w
|
||||
ldx #$A4
|
||||
ldy #$02
|
||||
jsr compare ; and T00,S02,$A4 ==
|
||||
!byte $20,$B8
|
||||
bcs de2w
|
||||
bcs .de2w
|
||||
ldx #$A3
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S02,$A3 !=
|
||||
!byte $AA
|
||||
bcc de2w
|
||||
bcc .de2w
|
||||
ldy #$01
|
||||
jsr modify ; then set T00,S02,$A3 =
|
||||
!byte $AA
|
||||
|
||||
de2w
|
||||
.de2w
|
||||
|
||||
;-------------------------------
|
||||
; RWTS fixup #DE3W
|
||||
; data epilogue byte 3 (write)
|
||||
;-------------------------------
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne de3w
|
||||
bne .de3w
|
||||
lda #$02
|
||||
ldx #$A7
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S02,$A7 ==
|
||||
!byte $A9
|
||||
bcs de3w
|
||||
bcs .de3w
|
||||
ldx #$A9
|
||||
ldy #$02
|
||||
jsr compare ; and T00,S02,$A9 ==
|
||||
!byte $20,$B8
|
||||
bcs de3w
|
||||
bcs .de3w
|
||||
ldx #$A8
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S02,$A8 !=
|
||||
!byte $EB
|
||||
bcc de3w
|
||||
bcc .de3w
|
||||
ldy #$01
|
||||
jsr modify ; then set T00,S02,$A8 =
|
||||
!byte $EB
|
||||
de3w
|
||||
.de3w
|
||||
|
||||
;-------------------------------
|
||||
; RWTS fixup #DE4W
|
||||
@ -601,27 +602,27 @@ de3w
|
||||
; needed by some Sunburst disks
|
||||
;-------------------------------
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne de4w
|
||||
bne .de4w
|
||||
lda #$02
|
||||
ldx #$AC
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S02,$AC ==
|
||||
!byte $A9
|
||||
bcs de4w
|
||||
bcs .de4w
|
||||
ldx #$AE
|
||||
ldy #$02
|
||||
jsr compare ; and T00,S02,$AE ==
|
||||
!byte $20,$B8
|
||||
bcs de4w
|
||||
bcs .de4w
|
||||
ldx #$AD
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S02,$AD !=
|
||||
!byte $FF
|
||||
bcc de4w
|
||||
bcc .de4w
|
||||
ldy #$01
|
||||
jsr modify ; then set T00,S02,$AD =
|
||||
!byte $FF
|
||||
de4w
|
||||
.de4w
|
||||
|
||||
;-------------------------------
|
||||
; RWTS "LSR $6A" identification
|
||||
@ -631,17 +632,17 @@ de4w
|
||||
; log it)
|
||||
;-------------------------------
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne rwts_lsr6a
|
||||
bne .lsr6a
|
||||
lda #$03
|
||||
ldx #$4F
|
||||
ldy #$0A
|
||||
jsr compare ; and T00,S03,$4F ==
|
||||
!byte $BD,$8C,$C0,$10,$FB,$4A,$97,$6A,$D0,$EF
|
||||
bcs rwts_lsr6a
|
||||
bcs .lsr6a
|
||||
lda #s_lsr6a
|
||||
jsr PrintByID
|
||||
inc gPatchCount
|
||||
rwts_lsr6a
|
||||
.lsr6a
|
||||
|
||||
;-------------------------------
|
||||
; RWTS "CMP #$08 / BCS" identification
|
||||
@ -651,14 +652,15 @@ rwts_lsr6a
|
||||
; log it)
|
||||
;-------------------------------
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne rwts_bcs08
|
||||
bne .bcs08
|
||||
lda #$03
|
||||
ldx #$8B
|
||||
ldy #$15
|
||||
jsr compare ; and T00,S03,$8B ==
|
||||
!byte $BD,$8C,$C0,$10,$FB,$C9,$DE,$F0,$0A,$48,$68,$BD,$8C,$C0,$C9,08,$B0,$A5,$EA,$18,$60
|
||||
bcs rwts_bcs08
|
||||
!byte $BD,$8C,$C0,$10,$FB,$C9,$DE,$F0,$0A,$48,$68,$BD,$8C,$C0,$C9,$08,$B0,$A5,$EA,$18,$60
|
||||
bcs .bcs08
|
||||
lda #s_bcs08
|
||||
jsr PrintByID
|
||||
inc gPatchCount
|
||||
rwts_bcs08
|
||||
.bcs08
|
||||
}
|
||||
|
@ -6,25 +6,26 @@
|
||||
; fly
|
||||
; e.g. Puzzle Master
|
||||
;-------------------------------
|
||||
!zone {
|
||||
_rwtsswap
|
||||
lda gIsBoot0 ; if DOS 3.3 boot0 loader
|
||||
bne rwtsswap_exit
|
||||
bne .exit
|
||||
lda gIsBoot1 ; and DOS 3.3 boot1 loader
|
||||
bne rwtsswap_exit
|
||||
bne .exit
|
||||
lda #$04
|
||||
ldx #$69
|
||||
ldy #$0B
|
||||
jsr compare ; and T00,S04,$69 ==
|
||||
!byte $A0,07,$B9,$DF,$BC,$99,$94,$B9
|
||||
!byte $A0,$07,$B9,$DF,$BC,$99,$94,$B9
|
||||
!byte $88,$10,$F7
|
||||
bcs rwtsswap_exit
|
||||
bcs .exit
|
||||
lda #$04
|
||||
ldx #$7F
|
||||
ldy #$0B
|
||||
jsr compare ; and T00,S04,$7F ==
|
||||
!byte $A0,07,$B9,$E7,$BC,$99,$94,$B9
|
||||
!byte $A0,$07,$B9,$E7,$BC,$99,$94,$B9
|
||||
!byte $88,$10,$F7
|
||||
bcs rwtsswap_exit
|
||||
bcs .exit
|
||||
lda #$04
|
||||
ldx #$69
|
||||
ldy #$01
|
||||
@ -35,4 +36,5 @@ _rwtsswap
|
||||
ldy #$01
|
||||
jsr modify ; and set T00,S04,$7F =
|
||||
!byte $60
|
||||
rwtsswap_exit
|
||||
.exit
|
||||
}
|
||||
|
@ -6,9 +6,10 @@
|
||||
; fly
|
||||
; e.g. Mask Parade
|
||||
;-------------------------------
|
||||
!zone {
|
||||
_rwtsswap2
|
||||
lda gIsBoot0 ; if DOS 3.3 boot0 loader
|
||||
bne rwtsswap2_exit
|
||||
bne .exit
|
||||
lda #$04
|
||||
ldx #$69
|
||||
ldy #$13
|
||||
@ -16,7 +17,7 @@ _rwtsswap2
|
||||
!byte $A9,$AB,$8D,$4B,$B8,$A9,$FF,$20
|
||||
!byte $DF,$BC,$20,$EC,$BC,$A9,$AA,$8D
|
||||
!byte $29,$BA,$60
|
||||
bcs rwtsswap2_exit
|
||||
bcs .exit
|
||||
lda #$04
|
||||
ldx #$7D
|
||||
ldy #$15
|
||||
@ -24,7 +25,7 @@ _rwtsswap2
|
||||
!byte $A9,$FF,$8D,$4B,$B8,$A9,$DE,$20
|
||||
!byte $DF,$BC,$A9,$AA,$20,$EC,$BC,$A9
|
||||
!byte $96,$8D,$29,$BA,$60
|
||||
bcs rwtsswap2_exit
|
||||
bcs .exit
|
||||
lda #$04
|
||||
ldx #$69
|
||||
ldy #$01
|
||||
@ -35,4 +36,5 @@ _rwtsswap2
|
||||
ldy #$01
|
||||
jsr modify ; and set T00,S04,$7D =
|
||||
!byte $60
|
||||
rwtsswap2_exit
|
||||
.exit
|
||||
}
|
||||
|
@ -3,15 +3,17 @@
|
||||
; post-boot RWTS swapper in MECC
|
||||
; disks
|
||||
;-------------------------------
|
||||
!zone {
|
||||
_rwtsswapmecc
|
||||
ldy #$11
|
||||
jsr SearchTrack
|
||||
!byte $0A,$18,$69,$FF,$A8,$8D,$8B,$C0
|
||||
!byte $8D,$8B,$C0,$B9,$97,$97,$8D,$AC
|
||||
!byte $D5
|
||||
bcs rwtsswapmecc_exit
|
||||
bcs .exit
|
||||
sta gDisplayBytes
|
||||
ldy #$03
|
||||
jsr modify
|
||||
!byte $A9,00,$24
|
||||
rwtsswapmecc_exit
|
||||
!byte $A9,$00,$24
|
||||
.exit
|
||||
}
|
||||
|
@ -1 +1,327 @@
|
||||
×<EFBFBD>× £׃ֱֵֹׂׂ<D782>× ףובעדט במה הוףפעןש ב ףולזהודעשנפימח<D79E>× נעןפודפיןמ דטודכ ץףוה ןמ םבמש ׃יועעב<D7A2>× היףכף ימ ב קבש פטבפ הןוףמ§פ פעינ פטו<D798>× פבםנוע דטודכ פטבפ דטודכףץםף פטו דןהו<D794>× ו®ח® ׃בםםש ּיחטפזןןפ¬ ֳעןףףזיעו<D7A2>×<C2AD><C2AD>ףיועעב<D7A2> להב £₪°ֶ<C2B0> ףפב ÷ףודפןע«±<C2AB>÷ףודפןע להב £₪ֶֶ » םןהיזיוה בפ עץמפיםו<D79D> להר £₪°°<C2B0> להש £₪°²<C2B0> ךףע דןםנבעו<D7A2> ֵָ״ ֳֵ°³<C2B0> גדד ÷°<C3B7> ךםנ ÷מורפףודפןע<D79F>÷°<C3B7> להב ÷ףודפןע«±<C2AB> להר £₪°³<C2B0> להש £₪°²<C2B0> ךףע דןםנבעו<D7A2> ֵָ״ ֵֶ°³<C2B0> גדד ÷±<C3B7> ךםנ ÷מורפףודפןע<D79F>÷±<C3B7> להב ÷ףודפןע«±<C2AB> להר £₪°¶<C2B0> להש £₪°²<C2B0> ךףע דןםנבעו<D7A2> ֵָ״ ֱִ²¸<C2B2> גדד ÷²<C3B7> להב ÷ףודפןע«±<C2AB> להר £₪°¶<C2B0> להש £₪°²<C2B0> ךףע דןםנבעו<D7A2> ֵָ״ ֱִ²´<C2B2> גדד ÷²<C3B7> ךםנ ÷מורפףודפןע<D79F>÷²<C3B7> להב ÷ףודפןע«±<C2AB> דלד<D79C> בהד £ֱֲ׃ֵ׀ֱֵַ<D6B7> ףפב ÷דטודכב«²<C2AB> ףפב ÷דטודכג«²<C2AB>÷דטודכב<D79B> להב ₪ֶֶ°² » םןהיזיוה בגןצו<D7A6>÷דטודכג<D79B> דםנ ₪ֶֶ°µ » םןהיזיוה בגןצו<D7A6> גוס ÷שוף<D795> ךםנ ÷מורפףודפןע<D79F>÷שוף<D795> להב ÷ףודפןע«±<C2AB> ףפב חִיףנלבשֲשפוף<D795> להב £ף<C2A3>ףיועעב<D7A2> ךףע ׀עימפֲשִֹ<D6B9> להב ÷ףודפןע«±<C2AB> להר £₪°°<C2B0> להש £₪°²<C2B0> ךףע םןהיזש<D796> ֵָ״ ¶°ֱִ<D6B1>÷מורפףודפןע<D79F> הוד ÷ףודפןע«±<C2AB> גםי ÷וריפ<D799> ךםנ ÷ףודפןע<D79F>÷וריפ<D799>
|
||||
;-------------------------------
|
||||
; #SIERRA
|
||||
; search and disable a self-decrypting
|
||||
; protection check used on many Sierra
|
||||
; disks in a way that doesn't trip the
|
||||
; tamper check that checksums the code
|
||||
; e.g. Sammy Lightfoot, Crossfire
|
||||
;
|
||||
; module by qkumba
|
||||
;-------------------------------
|
||||
!zone {
|
||||
_sierra
|
||||
lda .foundsierra
|
||||
bne +
|
||||
jmp .dosearch
|
||||
+ lda gTrack
|
||||
bne +
|
||||
dec .foundsierra
|
||||
+ ldy #3
|
||||
jsr SearchTrack
|
||||
.call
|
||||
!byte $20,$D1,$D1
|
||||
bcs +
|
||||
ldy #$01
|
||||
jsr modify
|
||||
!byte $2C
|
||||
+ ldy #3
|
||||
jsr SearchTrack
|
||||
.load
|
||||
!byte $AD,$D1,$D1
|
||||
bcs +
|
||||
sta .cmp7+1
|
||||
adc #BASEPAGE
|
||||
sta .page11+2
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
.page11
|
||||
lda $D100,x
|
||||
cmp #$F0
|
||||
bne .cmp7
|
||||
inx
|
||||
inx
|
||||
.cmp7
|
||||
lda #$D1
|
||||
ldy #3
|
||||
jsr compare
|
||||
!byte $C9,$1D,$B0
|
||||
bcs +
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
ldy #$01
|
||||
jsr modify
|
||||
!byte $00
|
||||
+ ldy #12
|
||||
jsr SearchTrack
|
||||
!byte $AD,WILDCARD,WILDCARD,$85,$C1,$A9,$00,$85,$C0,$6C,$C0,$00
|
||||
bcs +
|
||||
pha
|
||||
txa
|
||||
adc #9
|
||||
tax
|
||||
pla
|
||||
ldy #$01
|
||||
jsr modify
|
||||
!byte $60
|
||||
+ ldy #14
|
||||
jsr SearchTrack
|
||||
!byte $85,$11,$49,WILDCARD,$48,$A5,$10,$49,WILDCARD,$48,$D0,$01,$4C,$60
|
||||
bcs +
|
||||
pha
|
||||
tay
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
txa
|
||||
pha
|
||||
tya
|
||||
ldy #1
|
||||
jsr modify
|
||||
!byte $EA
|
||||
pla
|
||||
clc
|
||||
adc #5
|
||||
tax
|
||||
pla
|
||||
ldy #1
|
||||
jsr modify
|
||||
!byte $EA
|
||||
+ ldy #10
|
||||
jsr SearchTrack
|
||||
!byte $A9,$20,$8D,$DC,$4D,$A9,$60,$8D,$DF,$4D
|
||||
bcs +
|
||||
inx
|
||||
ldy #$01
|
||||
jsr modify
|
||||
!byte $2C
|
||||
+ ldy #6
|
||||
jsr SearchTrack
|
||||
!byte $20,$0A,$14,$6C,$C6,$03
|
||||
bcs +
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
ldy #$01
|
||||
jsr modify
|
||||
!byte $60
|
||||
+ jmp .exit
|
||||
.foundsierra
|
||||
!byte $00
|
||||
|
||||
.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
|
||||
pha
|
||||
lda #s_sierra
|
||||
jsr PrintByID
|
||||
pla
|
||||
ldy #$01
|
||||
jsr modify
|
||||
!byte $2C
|
||||
jmp .exit
|
||||
|
||||
.dosearch
|
||||
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
|
||||
sta .cmp2+1
|
||||
sta .cmp3+1
|
||||
sta .cmp4+1
|
||||
sta .cmp5+1
|
||||
sta .cmp6+1
|
||||
pha
|
||||
adc #BASEPAGE
|
||||
sta .page1+2
|
||||
sta .page2+2
|
||||
sta .page3+2
|
||||
sta .page4+2
|
||||
sta .page5+2
|
||||
sta .page6+2
|
||||
sta .page7+2
|
||||
sta .page8+2
|
||||
sta .page9+2
|
||||
sta .page10+2
|
||||
stx .adj+1
|
||||
txa
|
||||
adc #17
|
||||
tax
|
||||
.page1
|
||||
lda $D100,x
|
||||
cmp #$18
|
||||
bne +
|
||||
inx
|
||||
+ pla
|
||||
ldy #6
|
||||
jsr compare
|
||||
!byte $D0,$01,$4C,$A0,WILDCARD,$98
|
||||
.bcsexit1
|
||||
bcs .bcsexit2
|
||||
.page2
|
||||
lda $D104,x
|
||||
sta .key+1
|
||||
txa
|
||||
adc #6
|
||||
tax
|
||||
.cmp1
|
||||
lda #$D1
|
||||
pha
|
||||
ldy #3
|
||||
jsr compare
|
||||
!byte $90,$01,$20
|
||||
bcs +
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
+ pla
|
||||
ldy #8
|
||||
jsr compare
|
||||
!byte $59,WILDCARD,WILDCARD,$99,WILDCARD,WILDCARD,$C8,$D0
|
||||
.bcsexit2
|
||||
bcs .bcsexit3
|
||||
.page3
|
||||
lda $D101,x
|
||||
sta .call+1
|
||||
.page4
|
||||
lda $D102,x
|
||||
sta .call+2
|
||||
txa
|
||||
adc #9
|
||||
tax
|
||||
.cmp2
|
||||
lda #$D1
|
||||
pha
|
||||
ldy #5
|
||||
jsr compare
|
||||
!byte $88,$30,$01,$4C,$60
|
||||
pla
|
||||
bcc +
|
||||
ldy #5
|
||||
jsr compare
|
||||
!byte $98,$10,$01,$4C,$60
|
||||
.bcsexit3
|
||||
bcs .bcsexit4
|
||||
+ txa
|
||||
adc #5
|
||||
pha
|
||||
tax
|
||||
.key ldy #$D1
|
||||
- tya
|
||||
.page5
|
||||
eor $D100, x
|
||||
.page6
|
||||
sta $D100, x
|
||||
iny
|
||||
inx
|
||||
bne -
|
||||
pla
|
||||
tax
|
||||
.page7
|
||||
lda $D100, x
|
||||
beq +
|
||||
cmp #$C8
|
||||
sec
|
||||
bne .bcsexit4
|
||||
+ inx
|
||||
.cmp3
|
||||
lda #$D1
|
||||
ldy #11
|
||||
jsr compare
|
||||
!byte $8C,$F4,$B7,WILDCARD,$EC,$B7,$A9,$B7,$A0,$E8,$20
|
||||
.bcsexit4
|
||||
bcs .bcsexit5
|
||||
txa
|
||||
adc #11
|
||||
tax
|
||||
.cmp4
|
||||
lda #$D1
|
||||
pha
|
||||
ldy #2
|
||||
jsr compare
|
||||
!byte $B5,$B7
|
||||
pla
|
||||
bcc +
|
||||
pha
|
||||
ldy #2
|
||||
jsr compare
|
||||
!byte $D9,$03
|
||||
pla
|
||||
bcc +
|
||||
ldy #2
|
||||
jsr compare
|
||||
!byte $00,$BD
|
||||
.bcsexit5
|
||||
bcs .bcsexit6
|
||||
+ inx
|
||||
inx
|
||||
.cmp5
|
||||
lda #$D1
|
||||
pha
|
||||
ldy #3
|
||||
jsr compare
|
||||
!byte $AE,$E9,$B7
|
||||
bcs +
|
||||
inx
|
||||
inx
|
||||
inx
|
||||
+ pla
|
||||
ldy #9
|
||||
jsr compare
|
||||
!byte $BD,$89,$C0,$A9,WILDCARD,$8D,WILDCARD,WILDCARD,$20
|
||||
.bcsexit6
|
||||
bcs .exit
|
||||
.page8
|
||||
lda $D109,x
|
||||
.adj
|
||||
adc #$D1
|
||||
tax
|
||||
.cmp6
|
||||
lda #$D1
|
||||
pha
|
||||
ldy #3
|
||||
jsr compare
|
||||
!byte $A9,$1C,$8D
|
||||
pla
|
||||
bcs .exit
|
||||
|
||||
.yes
|
||||
sta gDisplayBytes
|
||||
lda #s_sierra
|
||||
jsr PrintByID
|
||||
.page9
|
||||
lda $D103,x
|
||||
sta .load+1
|
||||
.page10
|
||||
lda $D104,x
|
||||
sta .load+2
|
||||
|
||||
bit gMode
|
||||
bpl .exit
|
||||
bvc .exit
|
||||
lda #s_restart
|
||||
jsr PrintByID
|
||||
inc .foundsierra
|
||||
lda VPOS
|
||||
pha
|
||||
lda #1
|
||||
sta VPOS
|
||||
lda #s_progbar
|
||||
jsr PrintByID
|
||||
pla
|
||||
sta VPOS
|
||||
jsr $FC22
|
||||
jsr ResetProgress
|
||||
jsr IncProgress
|
||||
ldx #$FF
|
||||
txs
|
||||
jmp ReadWithRWTS
|
||||
.exit
|
||||
}
|
||||
|
@ -6,22 +6,23 @@
|
||||
; NOTE: must be run before RWTS
|
||||
; patchers due to overlapping bytes
|
||||
;-------------------------------
|
||||
!zone {
|
||||
_sunburst
|
||||
sec
|
||||
lda gIsRWTS ; if DOS 3.3 RWTS
|
||||
bne sunburst_exit
|
||||
bne .exit
|
||||
lda #$03
|
||||
ldx #$40
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S03,$40 ==
|
||||
!byte $D0
|
||||
bcs sunburst_exit
|
||||
bcs .exit
|
||||
lda #$03
|
||||
ldx #$9C
|
||||
ldy #$01
|
||||
jsr compare ; and T00,S03,$9C ==
|
||||
!byte $F0
|
||||
bcs sunburst_exit
|
||||
bcs .exit
|
||||
lda #$04
|
||||
ldx #$69
|
||||
ldy #$2C
|
||||
@ -32,22 +33,22 @@ _sunburst
|
||||
!byte $11,$D0,03,$A9,02,$AC,$A9,$0E
|
||||
!byte $8D,$C0,$BF,$68,$69,00,$48,$AD
|
||||
!byte $78,04,$90,$2B
|
||||
bcs sunburst_exit
|
||||
bcs .exit
|
||||
lda #$06
|
||||
ldx #$69
|
||||
ldy #$06
|
||||
jsr compare ; and T00,S06,$69 ==
|
||||
!byte $4C,$B8,$B6,$EA,$EA,$EA
|
||||
bcs sunburst_exit
|
||||
bcs .exit
|
||||
lda #$08
|
||||
ldx #$8C
|
||||
ldy #$02
|
||||
jsr compare ; and T00,S08,$8C ==
|
||||
!byte $69,$BA
|
||||
bcc sunburst_yes
|
||||
sunburst_exit
|
||||
bcs sunburst_exit2
|
||||
sunburst_yes
|
||||
bcc .yes
|
||||
.exit
|
||||
bcs .exit2
|
||||
.yes
|
||||
lda #$03
|
||||
ldx #$40
|
||||
ldy #$01
|
||||
@ -68,4 +69,5 @@ sunburst_yes
|
||||
ldy #$02
|
||||
jsr modify ; and set T00,S08,$8C =
|
||||
!byte $A0,$B9
|
||||
sunburst_exit2
|
||||
.exit2
|
||||
}
|
||||
|
@ -7,36 +7,37 @@
|
||||
; e.g. Thunder Mountain versions of
|
||||
; Dig Dug, Pac-Man, Galaxian
|
||||
;-------------------------------
|
||||
!zone {
|
||||
_thunder
|
||||
lda gIsBoot0 ; if DOS 3.3 boot0 loader
|
||||
bne thunder_no
|
||||
bne .no
|
||||
lda gIsBoot1 ; and DOS 3.3 boot1 loader
|
||||
bne thunder_no
|
||||
bne .no
|
||||
lda #$03
|
||||
ldx #$3E
|
||||
ldy #$04
|
||||
jsr compare ; and T00,S03,$3E ==
|
||||
!byte $4C,$B3,$B6,$EA
|
||||
bcc +
|
||||
thunder_no
|
||||
jmp thunder_exit
|
||||
.no
|
||||
jmp .exit
|
||||
+
|
||||
lda #$01
|
||||
ldx #$47
|
||||
ldy #$4C
|
||||
jsr compare ; and T00,S01,$47 ==
|
||||
!byte $4C
|
||||
!byte $C1,$B3,$60,$48,$A9,02,$8D,$EC
|
||||
!byte $B7,$A9,00,$8D,$EB,$B7,$8D,$F2
|
||||
!byte $B7,$A9,05,$8D,$ED,$B7,$A9,$36
|
||||
!byte $C1,$B3,$60,$48,$A9,$02,$8D,$EC
|
||||
!byte $B7,$A9,$00,$8D,$EB,$B7,$8D,$F2
|
||||
!byte $B7,$A9,$05,$8D,$ED,$B7,$A9,$36
|
||||
!byte $8D,$F0,$B7,$A9,$B4,$8D,$F1,$B7
|
||||
!byte $A9,01,$8D,$E1,$B7,$8D,$F4,$B7
|
||||
!byte $20,$93,$B7,$90,09,$4C,$62,$FA
|
||||
!byte $A9,$01,$8D,$E1,$B7,$8D,$F4,$B7
|
||||
!byte $20,$93,$B7,$90,$09,$4C,$62,$FA
|
||||
!byte $EA,$EA,$EA,$EA,$EA,$EA,$20,$36
|
||||
!byte $B4,$68,$F0,03,$6C,$72,$AA,$6C
|
||||
!byte $58,$9D,00,$A9,00,$F0,$BC,$A9
|
||||
!byte 01,$D0,$B8
|
||||
bcs thunder_exit
|
||||
!byte $B4,$68,$F0,$03,$6C,$72,$AA,$6C
|
||||
!byte $58,$9D,$00,$A9,$00,$F0,$BC,$A9
|
||||
!byte $01,$D0,$B8
|
||||
bcs .exit
|
||||
lda #s_thunder
|
||||
jsr PrintByID
|
||||
lda #$01
|
||||
@ -54,4 +55,5 @@ thunder_no
|
||||
ldy #$04
|
||||
jsr modify ; and set T00,S03,$3E =
|
||||
!byte $C9,$AA,$F0,$5C
|
||||
thunder_exit
|
||||
.exit
|
||||
}
|
||||
|
@ -6,62 +6,64 @@
|
||||
; (invented by qkumba, see PoC||GTFO 0x11
|
||||
; and 4am crack no. 655 Rocky's Boots 4.0)
|
||||
;-------------------------------
|
||||
_universale7
|
||||
!zone {
|
||||
universale7
|
||||
lda #$0F
|
||||
sta sector+1
|
||||
sector lda #$FF ; modified at runtime
|
||||
sta .sector+1
|
||||
.sector lda #$FF ; modified at runtime
|
||||
ldx #$A0
|
||||
ldy #$60
|
||||
jsr compare
|
||||
!byte $AC,00,$AC,00,$AC,00,$AC,00
|
||||
!byte $AC,00,$AC,00,$AC,00,$AC,00
|
||||
!byte $AC,00,$AC,00,$AC,00,$AC,00
|
||||
!byte $AC,00,$AC,00,$AC,00,$AC,00
|
||||
!byte $AC,00,$AC,00,$AC,00,$AC,00
|
||||
!byte $AC,00,$AC,00,$AC,00,$AC,00
|
||||
!byte $AC,00,$AC,00,$AC,00,$AC,00
|
||||
!byte $AC,00,$AC,00,$AC,00,$AC,00
|
||||
!byte $AC,00,$AC,00,$AC,00,$AC,00
|
||||
!byte $AC,00,$AC,00,$AC,00,$AC,00
|
||||
!byte $AC,00,$AC,00,$AC,00,$AC,00
|
||||
!byte $AC,00,$AC,00,$AC,00,$AC,00
|
||||
!byte $AC,$00,$AC,$00,$AC,$00,$AC,$00
|
||||
!byte $AC,$00,$AC,$00,$AC,$00,$AC,$00
|
||||
!byte $AC,$00,$AC,$00,$AC,$00,$AC,$00
|
||||
!byte $AC,$00,$AC,$00,$AC,$00,$AC,$00
|
||||
!byte $AC,$00,$AC,$00,$AC,$00,$AC,$00
|
||||
!byte $AC,$00,$AC,$00,$AC,$00,$AC,$00
|
||||
!byte $AC,$00,$AC,$00,$AC,$00,$AC,$00
|
||||
!byte $AC,$00,$AC,$00,$AC,$00,$AC,$00
|
||||
!byte $AC,$00,$AC,$00,$AC,$00,$AC,$00
|
||||
!byte $AC,$00,$AC,$00,$AC,$00,$AC,$00
|
||||
!byte $AC,$00,$AC,$00,$AC,$00,$AC,$00
|
||||
!byte $AC,$00,$AC,$00,$AC,$00,$AC,$00
|
||||
bcc +
|
||||
jmp e7nextsector
|
||||
jmp .nextsector
|
||||
+
|
||||
lda sector+1
|
||||
lda .sector+1
|
||||
ldx #$00
|
||||
ldy #$80
|
||||
jsr compare
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
bcc +
|
||||
jmp e7nextsector
|
||||
jmp .nextsector
|
||||
+
|
||||
lda sector+1
|
||||
lda .sector+1
|
||||
sta gDisplayBytes
|
||||
lda #s_e7
|
||||
jsr PrintByID
|
||||
lda sector+1
|
||||
lda .sector+1
|
||||
ldx #$A3
|
||||
ldy #$0C
|
||||
jsr modify
|
||||
!byte $64,$B4,$44,$80,$2C,$DC,$18,$B4,$44,$80,$44,$B4
|
||||
e7nextsector
|
||||
dec sector+1
|
||||
bmi universale7_exit
|
||||
jmp sector
|
||||
universale7_exit
|
||||
.nextsector
|
||||
dec .sector+1
|
||||
bmi .exit
|
||||
jmp .sector
|
||||
.exit
|
||||
}
|
||||
|
32
src/prefs.a
32
src/prefs.a
@ -46,8 +46,8 @@ SavePrefs
|
||||
jsr ValidatePrefs
|
||||
jsr SaveFile1Shot
|
||||
!word PREFSFILE
|
||||
!byte 04 ; text file
|
||||
!byte 00,00 ; no aux file type
|
||||
!byte $04 ; text file
|
||||
!byte $00,$00 ; no aux file type
|
||||
!word PREFSVER
|
||||
!word PREFSWRITELEN
|
||||
!word PREFSBUFFER
|
||||
@ -67,49 +67,51 @@ SavePrefs
|
||||
; C clear if all prefs were valid
|
||||
; A,X clobbered
|
||||
;-------------------------------
|
||||
!zone {
|
||||
ValidatePrefs
|
||||
ldx #$00
|
||||
lda PREFSVER
|
||||
cmp #CURRENTVER
|
||||
beq checkslot
|
||||
beq .checkslot
|
||||
lda #CURRENTVER
|
||||
sta PREFSVER
|
||||
lda #$FF
|
||||
sta SLOT
|
||||
sta DRIVE
|
||||
inx
|
||||
checkslot
|
||||
.checkslot
|
||||
lda SLOT
|
||||
sec
|
||||
sbc #$30
|
||||
beq badslot
|
||||
beq .badslot
|
||||
cmp #$08
|
||||
bcc checkdrive
|
||||
badslot
|
||||
bcc .checkdrive
|
||||
.badslot
|
||||
lda #DEFSLOT
|
||||
sta SLOT
|
||||
inx
|
||||
checkdrive
|
||||
.checkdrive
|
||||
lda DRIVE
|
||||
sec
|
||||
sbc #$30
|
||||
beq baddrive
|
||||
beq .baddrive
|
||||
cmp #$03
|
||||
bcc checks6d1
|
||||
baddrive
|
||||
bcc .checks6d1
|
||||
.baddrive
|
||||
lda #DEFDRIVE
|
||||
sta DRIVE
|
||||
inx
|
||||
checks6d1
|
||||
.checks6d1
|
||||
lda SLOT
|
||||
cmp #$36
|
||||
bne prefs_done
|
||||
bne .done
|
||||
lda DRIVE
|
||||
cmp #$31
|
||||
bne prefs_done
|
||||
bne .done
|
||||
lda #$32
|
||||
sta DRIVE
|
||||
inx
|
||||
prefs_done
|
||||
.done
|
||||
cpx #$01 ; set carry if anything changed
|
||||
rts
|
||||
}
|
128
src/print.a
128
src/print.a
@ -8,91 +8,92 @@ gDisplayBytes !fill 10 ; array of ten bytes for use as
|
||||
; Print a string from the string table;
|
||||
; handles string substitutions and
|
||||
; auto-uppercases on older machines
|
||||
; in A = string ID
|
||||
; out C clear if string was printed
|
||||
; in: A = string ID
|
||||
; out: C clear if string was printed
|
||||
; C set if string ID was invalid
|
||||
; all other flags clobbered
|
||||
; X register preserved, others clobbered
|
||||
;-------------------------------
|
||||
!zone {
|
||||
PrintByID
|
||||
stx x
|
||||
stx .x
|
||||
ldy #0 ; substitution mode flag
|
||||
cmp #STRINGCOUNT
|
||||
bcs error
|
||||
bcs .error
|
||||
asl
|
||||
tax
|
||||
lda StringTable,x
|
||||
sta print+1
|
||||
sta .print+1
|
||||
lda StringTable+1,x
|
||||
sta print+2
|
||||
print
|
||||
sta .print+2
|
||||
.print
|
||||
lda $FFFF ; modified at runtime
|
||||
beq print_done
|
||||
beq .done
|
||||
cpy #0 ; are we in substitution mode?
|
||||
beq nosub ; no -> branch
|
||||
beq .nosub ; no -> branch
|
||||
ldy #0
|
||||
cmp #"t" ; "%t" = current track
|
||||
bne sub1
|
||||
bne .sub1
|
||||
lda gTrack
|
||||
bpl printbyte ; unconditional branch
|
||||
sub1
|
||||
bpl .printbyte ; unconditional branch
|
||||
.sub1
|
||||
cmp #"s" ; "%s" = current sector
|
||||
bne sub2
|
||||
bne .sub2
|
||||
lda gSector
|
||||
bpl printbyte ; unconditional branch
|
||||
sub2
|
||||
bpl .printbyte ; unconditional branch
|
||||
.sub2
|
||||
cmp #"S" ; write slot
|
||||
bne sub3
|
||||
bne .sub3
|
||||
lda SLOT
|
||||
bne printsd ; unconditional branch
|
||||
sub3
|
||||
bne .printsd ; unconditional branch
|
||||
.sub3
|
||||
cmp #"D" ; write drive
|
||||
bne sub4
|
||||
bne .sub4
|
||||
lda DRIVE
|
||||
printsd
|
||||
.printsd
|
||||
ora #$80
|
||||
jsr PrintA
|
||||
bvc next ; unconditional branch
|
||||
sub4
|
||||
bvc .next ; unconditional branch
|
||||
.sub4
|
||||
cmp #"0" ; "%0" through "%9"
|
||||
bcc nosub
|
||||
bcc .nosub
|
||||
cmp #":"
|
||||
bcs nosub
|
||||
bcs .nosub
|
||||
sec
|
||||
sbc #"0"
|
||||
tax
|
||||
lda gDisplayBytes,x
|
||||
printbyte
|
||||
.printbyte
|
||||
jsr PrintByte
|
||||
bvc next ; unconditional branch
|
||||
nosub
|
||||
bvc .next ; unconditional branch
|
||||
.nosub
|
||||
cmp #"%"
|
||||
bne stillnosub
|
||||
bne .stillnosub
|
||||
iny ; switch to substitution mode
|
||||
bne next ; (next character will be interpreted)
|
||||
stillnosub
|
||||
bne .next ; (next character will be interpreted)
|
||||
.stillnosub
|
||||
cmp #$E1
|
||||
bcc noforce
|
||||
bcc .noforce
|
||||
and kForceLower
|
||||
noforce
|
||||
.noforce
|
||||
jsr COUT
|
||||
next
|
||||
inc print+1
|
||||
bne print
|
||||
inc print+2
|
||||
bne print
|
||||
print_done
|
||||
.next
|
||||
inc .print+1
|
||||
bne .print
|
||||
inc .print+2
|
||||
bne .print
|
||||
.done
|
||||
clc
|
||||
error
|
||||
ldx x
|
||||
.error
|
||||
ldx .x
|
||||
rts
|
||||
x !byte 00
|
||||
.x !byte 00
|
||||
|
||||
;-------------------------------
|
||||
; PrintByte
|
||||
; print a hexadecimal byte
|
||||
; in A contains byte to print
|
||||
; out all registers preserved
|
||||
; in: A contains byte to print
|
||||
; out: all registers preserved
|
||||
; all flags clobbered
|
||||
; @tmpa clobbered
|
||||
; @tmpx clobbered
|
||||
@ -112,8 +113,8 @@ PrintByte
|
||||
;-------------------------------
|
||||
; PrintA
|
||||
; print a single character through COUT
|
||||
; in A contains character to print
|
||||
; out all registers preserved
|
||||
; in: A contains character to print
|
||||
; out: all registers preserved
|
||||
; all flags clobbered
|
||||
; @tmpa clobbered
|
||||
; @tmpx clobbered
|
||||
@ -136,40 +137,41 @@ PrintA
|
||||
ClearScreen
|
||||
jsr TEXT
|
||||
lda $C061
|
||||
bpl home
|
||||
bpl .home
|
||||
lda $C062
|
||||
bpl home
|
||||
begin
|
||||
bpl .home
|
||||
.begin
|
||||
ldx #$04
|
||||
stx counter
|
||||
stx loop+2
|
||||
stx change+2
|
||||
stx .loop+2
|
||||
stx .change+2
|
||||
ldy #$00
|
||||
sty flag
|
||||
loop
|
||||
.loop
|
||||
lda $FF00,y ; modified at runtime
|
||||
cmp #$A0
|
||||
beq nochange
|
||||
bcs down
|
||||
beq .nochange
|
||||
bcs .down
|
||||
clc
|
||||
adc #$01
|
||||
bne change
|
||||
down
|
||||
bne .change
|
||||
.down
|
||||
sec
|
||||
sbc #$01
|
||||
change
|
||||
.change
|
||||
sta $FF00,y ; modified at runtime
|
||||
sta flag
|
||||
nochange
|
||||
.nochange
|
||||
iny
|
||||
bne loop
|
||||
inc loop+2
|
||||
inc change+2
|
||||
bne .loop
|
||||
inc .loop+2
|
||||
inc .change+2
|
||||
dec counter
|
||||
bne loop
|
||||
bne .loop
|
||||
lda #$01
|
||||
jsr WAIT
|
||||
lda flag
|
||||
bne begin
|
||||
home
|
||||
bne .begin
|
||||
.home
|
||||
jmp HOME
|
||||
}
|
28
src/rwts.a
28
src/rwts.a
@ -37,39 +37,41 @@ endread
|
||||
; nibble is stored in zp$4E and varies based on track
|
||||
; and sector.
|
||||
;
|
||||
!zone {
|
||||
_protread
|
||||
lda gTrack ; T02,S05+ use "protected" mode
|
||||
cmp #$03 ; (altered data prologue and
|
||||
bcs protected ; nibble translate table)
|
||||
bcs .protected ; nibble translate table)
|
||||
cmp #$02 ; T00,S00 - T02,S04 use
|
||||
bcc standard ; "standard" mode
|
||||
bcc .standard ; "standard" mode
|
||||
lda gSector
|
||||
cmp #$05
|
||||
bcs protected
|
||||
standard
|
||||
bcs .protected
|
||||
.standard
|
||||
lda #$9B
|
||||
sta $BF2C
|
||||
bne go ; unconditional branch
|
||||
protected
|
||||
bne .go ; unconditional branch
|
||||
.protected
|
||||
lda #$B5
|
||||
sta $4E
|
||||
lda #$D5
|
||||
sta $BF2C ; execution falls through here
|
||||
go
|
||||
.go
|
||||
lda #<gRWTSParams
|
||||
ldy #>gRWTSParams
|
||||
jsr $BA00 ; note non-standard entry point
|
||||
bcc endprotread
|
||||
lda gOnAClearDayYouCanReadForever
|
||||
beq go
|
||||
beq .go
|
||||
endprotread
|
||||
rts
|
||||
}
|
||||
|
||||
gRWTSParams ; used to read each sector
|
||||
!byte 01,$60,01,00
|
||||
gTrack !byte 00
|
||||
gSector !byte 00
|
||||
!byte $01,$60,$01,$00
|
||||
gTrack !byte $00
|
||||
gSector !byte $00
|
||||
!word dct
|
||||
gAddress !word $1F00
|
||||
!byte 00,00,01,00,$FE,$60,01,00,00
|
||||
dct !byte 00,01,$EF,$D8,00
|
||||
!byte $00,$00,$01,$00,$FE,$60,$01,$00,$00
|
||||
dct !byte $00,$01,$EF,$D8,$00
|
||||
|
@ -1,20 +1,22 @@
|
||||
!zone {
|
||||
InitSectorMap
|
||||
lda #<sectormap
|
||||
sta B+1
|
||||
sta .B+1
|
||||
lda #>sectormap
|
||||
sta B+2
|
||||
sta .B+2
|
||||
lda #$FF
|
||||
ldx #$22
|
||||
A ldy #$0F
|
||||
B sta $FFFF
|
||||
inc B+1
|
||||
.A ldy #$0F
|
||||
.B sta $FFFF
|
||||
inc .B+1
|
||||
bne +
|
||||
inc B+2
|
||||
inc .B+2
|
||||
+ dey
|
||||
bpl B
|
||||
bpl .B
|
||||
dex
|
||||
bpl A
|
||||
bpl .A
|
||||
rts
|
||||
}
|
||||
|
||||
;-------------------------------
|
||||
; This is a map of how much we care about each sector
|
||||
@ -31,7 +33,7 @@ B sta $FFFF
|
||||
; 80 = sector is optional -- read, but ignore any errors
|
||||
; FE = sector is required, and switch to the built-in RWTS
|
||||
; after reading it (if we haven't already)
|
||||
; $FF = sector is required -- read, and any error is fatal
|
||||
; FF = sector is required -- read, and any error is fatal
|
||||
; (this is the default value for all sectors)
|
||||
;-------------------------------
|
||||
sectormap
|
||||
|
36
src/slots.a
36
src/slots.a
@ -10,65 +10,69 @@ DiskIIArray
|
||||
; all flags clobbered
|
||||
; DiskIIArray filled with 00 or FF
|
||||
;-------------------------------
|
||||
!zone {
|
||||
ScanForDiskII
|
||||
lda #$00
|
||||
sta cmp1
|
||||
ldx #$07
|
||||
fingerprint
|
||||
.fingerprint
|
||||
txa
|
||||
ora #$C0
|
||||
sta cmp1+1
|
||||
ldy #$01
|
||||
lda (cmp1),y
|
||||
cmp #$20
|
||||
bne slots_next
|
||||
bne .next
|
||||
ldy #$03
|
||||
lda (cmp1),y
|
||||
bne slots_next
|
||||
bne .next
|
||||
ldy #$05
|
||||
lda (cmp1),y
|
||||
cmp #$03
|
||||
bne slots_next
|
||||
bne .next
|
||||
ldy #$FF
|
||||
lda (cmp1),y
|
||||
bne slots_next
|
||||
bne .next
|
||||
tya
|
||||
sta DiskIIArray-1,x
|
||||
slots_next
|
||||
.next
|
||||
dex
|
||||
bne fingerprint
|
||||
bne .fingerprint
|
||||
rts
|
||||
}
|
||||
|
||||
;-------------------------------
|
||||
; NextSlot
|
||||
;-------------------------------
|
||||
!zone {
|
||||
NextSlot
|
||||
lda DRIVE
|
||||
cmp #$31
|
||||
bne incslot
|
||||
bne .incslot
|
||||
lda #$32
|
||||
sta DRIVE
|
||||
bne slots_done ; unconditional branch
|
||||
incslot
|
||||
bne .done ; unconditional branch
|
||||
.incslot
|
||||
lda #$31
|
||||
sta DRIVE
|
||||
inc SLOT
|
||||
lda SLOT
|
||||
cmp #$38
|
||||
bne nowrap
|
||||
bne .nowrap
|
||||
lda #$31
|
||||
sta SLOT
|
||||
nowrap
|
||||
.nowrap
|
||||
sec
|
||||
sbc #$30
|
||||
tax
|
||||
lda DiskIIArray-1,x
|
||||
beq incslot
|
||||
slots_done
|
||||
beq .incslot
|
||||
.done
|
||||
lda SLOT
|
||||
cmp #$36
|
||||
bne reallydone
|
||||
bne .reallydone
|
||||
lda #$32
|
||||
sta DRIVE
|
||||
reallydone
|
||||
.reallydone
|
||||
rts
|
||||
}
|
||||
|
286
src/strings/en.a
286
src/strings/en.a
@ -1,6 +1,6 @@
|
||||
;
|
||||
; Main menu keys
|
||||
; (should match the text in mainmenu below)
|
||||
; (should match the text in .mainmenu below)
|
||||
; (these are NOT case-sensitive)
|
||||
;
|
||||
!ct "lcase.ct"
|
||||
@ -83,77 +83,80 @@ s_encoded53 = $40
|
||||
s_specdel = $41
|
||||
s_bytrack = $42
|
||||
s_a5count = $43
|
||||
STRINGCOUNT = $44
|
||||
s_restart = $44
|
||||
STRINGCOUNT = $45
|
||||
|
||||
!zone {
|
||||
StringTable
|
||||
!word header
|
||||
!word mainmenu
|
||||
!word progbar
|
||||
!word reading
|
||||
!word diskrwts
|
||||
!word bb00
|
||||
!word sunburst
|
||||
!word optimum
|
||||
!word builtin
|
||||
!word switch
|
||||
!word writing
|
||||
!word unformat
|
||||
!word f7
|
||||
!word sync
|
||||
!word optbad
|
||||
!word passver
|
||||
!word passdemuf
|
||||
!word passcrack
|
||||
!word passcrack0
|
||||
!word fail
|
||||
!word fatal0000
|
||||
!word fatal220f
|
||||
!word done
|
||||
!word noslot6
|
||||
!word writeerr
|
||||
!word writeioerr
|
||||
!word writenodev
|
||||
!word writeprot
|
||||
!word othermli
|
||||
!word canttrace
|
||||
!word canceled
|
||||
!word bademu
|
||||
!word reset
|
||||
!word smodify
|
||||
!word modifyto
|
||||
!word dosboot0
|
||||
!word prodosboot0
|
||||
!word pascalboot0
|
||||
!word meccboot0
|
||||
!word sierra
|
||||
!word a6bc95
|
||||
!word jmpbcf0
|
||||
!word rol1e
|
||||
!word runhello
|
||||
!word e7
|
||||
!word jmpb4bb
|
||||
!word jmpb400
|
||||
!word jmpbeca
|
||||
!word jsrbb03
|
||||
!word thunder
|
||||
!word jmpae8e
|
||||
!word diskvol
|
||||
!word d5d5f7
|
||||
!word meccm7
|
||||
!word datasoftb0
|
||||
!word datasoft
|
||||
!word lsr6a
|
||||
!word bcs08
|
||||
!word jmpb660
|
||||
!word protdos
|
||||
!word protdosw
|
||||
!word protserial
|
||||
!word fbff
|
||||
!word encoded44
|
||||
!word encoded53
|
||||
!word specdel
|
||||
!word bytrack
|
||||
!word a5count
|
||||
!word .header
|
||||
!word .mainmenu
|
||||
!word .progbar
|
||||
!word .reading
|
||||
!word .diskrwts
|
||||
!word .bb00
|
||||
!word .sunburst
|
||||
!word .optimum
|
||||
!word .builtin
|
||||
!word .switch
|
||||
!word .writing
|
||||
!word .unformat
|
||||
!word .f7
|
||||
!word .sync
|
||||
!word .optbad
|
||||
!word .passver
|
||||
!word .passdemuf
|
||||
!word .passcrack
|
||||
!word .passcrack0
|
||||
!word .fail
|
||||
!word .fatal0000
|
||||
!word .fatal220f
|
||||
!word .done
|
||||
!word .noslot6
|
||||
!word .writeerr
|
||||
!word .writeioerr
|
||||
!word .writenodev
|
||||
!word .writeprot
|
||||
!word .othermli
|
||||
!word .canttrace
|
||||
!word .canceled
|
||||
!word .bademu
|
||||
!word .reset
|
||||
!word .modify
|
||||
!word .modifyto
|
||||
!word .dosboot0
|
||||
!word .prodosboot0
|
||||
!word .pascalboot0
|
||||
!word .meccboot0
|
||||
!word .sierra
|
||||
!word .a6bc95
|
||||
!word .jmpbcf0
|
||||
!word .rol1e
|
||||
!word .runhello
|
||||
!word .e7
|
||||
!word .jmpb4bb
|
||||
!word .jmpb400
|
||||
!word .jmpbeca
|
||||
!word .jsrbb03
|
||||
!word .thunder
|
||||
!word .jmpae8e
|
||||
!word .diskvol
|
||||
!word .d5d5f7
|
||||
!word .meccm7
|
||||
!word .datasoftb0
|
||||
!word .datasoft
|
||||
!word .lsr6a
|
||||
!word .bcs08
|
||||
!word .jmpb660
|
||||
!word .protdos
|
||||
!word .protdosw
|
||||
!word .protserial
|
||||
!word .fbff
|
||||
!word .encoded44
|
||||
!word .encoded53
|
||||
!word .specdel
|
||||
!word .bytrack
|
||||
!word .a5count
|
||||
!word .restart
|
||||
;
|
||||
; Text can contain substitution strings, which
|
||||
; are replaced by current values at runtime. Each
|
||||
@ -167,7 +170,7 @@ StringTable
|
||||
;
|
||||
; Substitution strings are case-sensitive.
|
||||
;
|
||||
; Supported substitution strings
|
||||
; Supported substitution strings:
|
||||
; %S destination (write) slot
|
||||
; %D destination (write) drive
|
||||
; %t current track (during read and patch)
|
||||
@ -178,9 +181,9 @@ StringTable
|
||||
; These are stored in the gDisplayBytes array and
|
||||
; can be set directly before calling PrintByID.
|
||||
;
|
||||
header
|
||||
!text "Passport by 4am 2017-01-17",00
|
||||
mainmenu
|
||||
.header
|
||||
!text "Passport by 4am 2017-01-25",00
|
||||
.mainmenu
|
||||
!text "________________________________________",$8D,$8D,$8D,$8D,$8D,$8D,$8D
|
||||
!text " "
|
||||
!scrxor $40, "V"
|
||||
@ -197,47 +200,47 @@ mainmenu
|
||||
!text "source: S6,D1 target: "
|
||||
!scrxor $40, "S"
|
||||
!text "%S,D%D",00
|
||||
progbar
|
||||
.progbar
|
||||
!byte $8D
|
||||
!text " ______________________________________",$8D
|
||||
!text " "
|
||||
!scrxor $00, " "
|
||||
!text "____________________________________"
|
||||
!scrxor $00, " ",$8D,$8D,$8D,00
|
||||
reading
|
||||
.reading
|
||||
!text "Reading from S6,D1",$8D,00
|
||||
diskrwts
|
||||
.diskrwts
|
||||
!text "Using disk's own RWTS",$8D,00
|
||||
bb00
|
||||
.bb00
|
||||
!text "T00,S05 Found $BB00 protection check",$8D
|
||||
!text "T00,S0A might be unreadable",$8D,00
|
||||
sunburst
|
||||
.sunburst
|
||||
!text "T00,S04 Found Sunburst disk",$8D
|
||||
!text "T11,S0F might be unreadable",$8D,00
|
||||
optimum
|
||||
.optimum
|
||||
!text "T00,S00 Found Optimum Resource disk",$8D
|
||||
!text "T01,S0F might be unreadable",$8D,00
|
||||
builtin
|
||||
.builtin
|
||||
!text "Using built-in RWTS",$8D,00
|
||||
switch
|
||||
.switch
|
||||
!text "Switching to built-in RWTS",$8D,00
|
||||
writing
|
||||
.writing
|
||||
!text "Writing to S%S,D%D",$8D,00
|
||||
unformat
|
||||
.unformat
|
||||
!text "T%t is unformatted",$8D,00
|
||||
f7
|
||||
.f7
|
||||
!text "T%t Found $F7F6EFEEAB protection",$8D,00
|
||||
sync
|
||||
.sync
|
||||
!text "T%t Found nibble count protection",$8D,00
|
||||
optbad
|
||||
.optbad
|
||||
!text "T%t,S%s is unreadable (ignoring)",$8D,00
|
||||
passver
|
||||
.passver
|
||||
!text "Verification complete. The disk is good.",00
|
||||
passdemuf
|
||||
.passdemuf
|
||||
!text "Demuffin complete.",$8D,00
|
||||
passcrack
|
||||
.passcrack
|
||||
!text "Crack complete.",$8D,00
|
||||
passcrack0
|
||||
.passcrack0
|
||||
!byte $8D
|
||||
!text "The disk was copied successfully, but",$8D
|
||||
!text "Passport did not apply any patches.",$8D,$8D
|
||||
@ -246,38 +249,38 @@ passcrack0
|
||||
!text "- The target disk works without patches."
|
||||
!text "- The disk uses an unknown protection,",$8D
|
||||
!text " and Passport can not help any further.",00
|
||||
fail
|
||||
.fail
|
||||
!byte $8D
|
||||
!text "T%t,S%s Fatal read error",$8D,00
|
||||
fatal0000
|
||||
.fatal0000
|
||||
!byte $8D
|
||||
!text "Possible reasons:",$8D
|
||||
!text "- There is no disk in S6,D1.",$8D
|
||||
!text "- It is not an Apple ][ disk.",$8D
|
||||
!text "- The disk is DOS 3.2-only.",$8D
|
||||
!text "- The disk is unformatted.",$8D,00
|
||||
fatal220f
|
||||
.fatal220f
|
||||
!byte $8D
|
||||
!text "Passport does not work on this disk.",$8D,$8D
|
||||
!text "Possible reasons:",$8D
|
||||
!text "- This is not a 16-sector disk.",$8D
|
||||
!text "- The disk modifies its RWTS in ways",$8D
|
||||
!text " that Passport is not able to detect.",$8D,00
|
||||
done
|
||||
.done
|
||||
!byte $8D
|
||||
!text "Press any key to continue "
|
||||
!scrxor $40, " ",00
|
||||
noslot6
|
||||
.noslot6
|
||||
!text "Passport requires a Disk II drive in S6.",$8D
|
||||
!text "Press any key to quit "
|
||||
!scrxor $40, " ",00
|
||||
writeerr
|
||||
.writeerr
|
||||
!byte $8D
|
||||
!text "T%t Fatal write error",$8D,$8D,00
|
||||
;
|
||||
; MLI error $27
|
||||
;
|
||||
writeioerr
|
||||
.writeioerr
|
||||
!text "Possible reasons:",$8D
|
||||
!text "- There is no disk in S%S,D%D.",$8D
|
||||
!text "- The disk has bad sectors.",$8D
|
||||
@ -285,118 +288,121 @@ writeioerr
|
||||
;
|
||||
; MLI error $28
|
||||
;
|
||||
writenodev
|
||||
.writenodev
|
||||
!text "S%S,D%D does not exist.",$8D,00
|
||||
;
|
||||
; MLI error $2B
|
||||
;
|
||||
writeprot
|
||||
.writeprot
|
||||
!text "The disk in S%S,D%D is write-protected.",$8D,00
|
||||
;
|
||||
; other MLI error
|
||||
;
|
||||
othermli
|
||||
.othermli
|
||||
!text "MLI error $%0.",$8D
|
||||
!text "Please contact the developer.",$8D,00
|
||||
|
||||
canttrace
|
||||
.canttrace
|
||||
!text "Unrecognized drive, tracing is disabled",$8D,00
|
||||
canceled
|
||||
.canceled
|
||||
!text "Canceled at your request.",$8D,00
|
||||
bademu
|
||||
.bademu
|
||||
!byte 00
|
||||
reset
|
||||
.reset
|
||||
!byte $8D
|
||||
!text "Press <Ctrl-Reset> to continue.",$8D,00
|
||||
smodify
|
||||
.modify
|
||||
!text "T%t,S%0,$%1: ",00
|
||||
modifyto
|
||||
.modifyto
|
||||
!text " -> ",00
|
||||
dosboot0
|
||||
.dosboot0
|
||||
!text "T00,S00 Found DOS 3.3 bootloader",$8D,00
|
||||
prodosboot0
|
||||
.prodosboot0
|
||||
!text "T00,S00 Found ProDOS bootloader",$8D,00
|
||||
pascalboot0
|
||||
.pascalboot0
|
||||
!text "T00,S00 Found Pascal bootloader",$8D,00
|
||||
meccboot0
|
||||
.meccboot0
|
||||
!text "T00 Found MECC M8 bootloader",$8D,00
|
||||
sierra
|
||||
.sierra
|
||||
!text "T%t,S%0 Found Sierra protection check",$8D,00
|
||||
a6bc95
|
||||
.a6bc95
|
||||
!text "T%t,S%0 Found A6BC95 protection check",$8D,00
|
||||
jmpbcf0
|
||||
.jmpbcf0
|
||||
!text "T00,S03 RWTS requires a timing bit after"
|
||||
!text "the first data epilogue by jumping to",$8D
|
||||
!text "$BCF0.",$8D,00
|
||||
rol1e
|
||||
.rol1e
|
||||
!text "T00,S03 RWTS accumulates timing bits in",$8D
|
||||
!text "$1E and checks its value later.",$8D,00
|
||||
runhello
|
||||
.runhello
|
||||
!text "T%t,S%0 Startup program executes a",$8D
|
||||
!text "protection check before running the real"
|
||||
!text "startup program.",$8D,00
|
||||
e7
|
||||
.e7
|
||||
!text "T%t,S%0 Found E7 bitstream",$8D,00
|
||||
jmpb4bb
|
||||
.jmpb4bb
|
||||
!text "T00,S0C Disk calls a protection check at"
|
||||
!text "$B4BB before initializing DOS.",$8D,00
|
||||
jmpb400
|
||||
.jmpb400
|
||||
!text "T00,S01 Disk calls a protection check at"
|
||||
!text "$B400 before initializing DOS.",$8D,00
|
||||
jmpbeca
|
||||
.jmpbeca
|
||||
!text "T00,S02 RWTS requires extra nibbles and",$8D
|
||||
!text "timing bits after the data prologue by",$8D
|
||||
!text "jumping to $BECA.",$8D,00
|
||||
jsrbb03
|
||||
.jsrbb03
|
||||
!text "T00,S05 Found a self-decrypting",$8D
|
||||
!text "protection check at $BB03.",$8D,00
|
||||
thunder
|
||||
.thunder
|
||||
!text "T00,S03 RWTS counts timing bits and",$8D
|
||||
!text "checks them later.",$8D,00
|
||||
jmpae8e
|
||||
.jmpae8e
|
||||
!text "T00,S0D Disk calls a protection check at"
|
||||
!text "$AE8E after initializing DOS.",$8D,00
|
||||
diskvol
|
||||
.diskvol
|
||||
!text "T00,S08 RWTS requires a non-standard",$8D
|
||||
!text "disk volume number.",$8D,00
|
||||
d5d5f7
|
||||
.d5d5f7
|
||||
!text "T%t,S%0 Found D5D5F7 protection check",$8D,00
|
||||
meccm7
|
||||
.meccm7
|
||||
!text "T00 Found MECC M7 bootloader",$8D,00
|
||||
datasoftb0
|
||||
.datasoftb0
|
||||
!text "T00,S00 Found Datasoft bootloader",$8D,00
|
||||
datasoft
|
||||
.datasoft
|
||||
!text "T%t,S%0 Found Datasoft protection check",$8D,00
|
||||
lsr6a
|
||||
.lsr6a
|
||||
!text "T00,S03 RWTS accepts $D4 or $D5 for the",$8D
|
||||
!text "first address prologue nibble.",$8D,00
|
||||
bcs08
|
||||
.bcs08
|
||||
!text "T00,S03 RWTS accepts $DE or a timing bit"
|
||||
!text "for the first address epilogue nibble.",$8D,00
|
||||
jmpb660
|
||||
.jmpb660
|
||||
!text "T00,S02 RWTS requires timing bits after",$8D
|
||||
!text "the data prologue by jumping to $B660.",$8D,00
|
||||
protdos
|
||||
.protdos
|
||||
!text "T00,S01 Found encrypted RWTS, key=$%0",$8D,00
|
||||
protdosw
|
||||
.protdosw
|
||||
!text "T00 Decrypting RWTS before writing",$8D,00
|
||||
protserial
|
||||
.protserial
|
||||
!text "T%t,S%3 Erasing serial number %0%1%2",$8D,00
|
||||
fbff
|
||||
.fbff
|
||||
!text "T%t,S%0 Found FBFF protection check",$8D,00
|
||||
encoded44
|
||||
.encoded44
|
||||
!byte $8D
|
||||
!text "T00,S00 Fatal error",$8D,$8D
|
||||
!text "Passport does not work on this disk,",$8D
|
||||
!text "because it uses a 4-and-4 encoding.",$8D,00
|
||||
encoded53
|
||||
.encoded53
|
||||
!byte $8D
|
||||
!text "T00,S00 Fatal error",$8D,$8D
|
||||
!text "Passport does not work on this disk,",$8D
|
||||
!text "because it uses a 5-and-3 encoding.",$8D,00
|
||||
specdel
|
||||
.specdel
|
||||
!text "T00,S00 Found DOS 3.3P bootloader",$8D,00
|
||||
bytrack
|
||||
.bytrack
|
||||
!text "T%t,S%0 RWTS changes based on track",$8D,$00
|
||||
a5count
|
||||
.a5count
|
||||
!text "T%t,S%0 Found A5 nibble count",$8D,$00
|
||||
.restart
|
||||
!text "Restarting scan",$8D,$00
|
||||
}
|
||||
|
@ -28,75 +28,75 @@
|
||||
!fill 256-(* & 255), 0
|
||||
}
|
||||
universalrwts
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,$a0,00,$a2,$56,$ca,$30
|
||||
!byte $fb,$b9,00,$bb,$5e,00,$bc,$2a
|
||||
!byte $5e,00,$bc,$2a,$91,$3e,$c8,$c4
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$a0,$00,$a2,$56,$ca,$30
|
||||
!byte $fb,$b9,$00,$bb,$5e,$00,$bc,$2a
|
||||
!byte $5e,$00,$bc,$2a,$91,$3e,$c8,$c4
|
||||
!byte $26,$d0,$eb,$60,$a0,$20,$88,$f0
|
||||
!byte $61,$bd,$8c,$c0,$10,$fb,$49,$d5
|
||||
!byte $d0,$f4,$ea,$bd,$8c,$c0,$10,$fb
|
||||
!byte $c9,$aa,$d0,$f2,$a0,$56,$bd,$8c
|
||||
!byte $c0,$10,$fb,$c9,$ad,$d0,$e7,$a9
|
||||
!byte 00,$88,$84,$26,$bc,$8c,$c0,$10
|
||||
!byte $fb,$59,00,$ba,$a4,$26,$99,00
|
||||
!byte $00,$88,$84,$26,$bc,$8c,$c0,$10
|
||||
!byte $fb,$59,$00,$ba,$a4,$26,$99,$00
|
||||
!byte $bc,$d0,$ee,$84,$26,$bc,$8c,$c0
|
||||
!byte $10,$fb,$59,00,$ba,$a4,$26,$99
|
||||
!byte 00,$bb,$c8,$d0,$ee,$bc,$8c,$c0
|
||||
!byte $10,$fb,$d9,00,$ba,$d0,$13,$18
|
||||
!byte $60,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,$38,$60,$a0,$fc,$84,$26
|
||||
!byte $c8,$d0,04,$e6,$26,$f0,$f3,$bd
|
||||
!byte $10,$fb,$59,$00,$ba,$a4,$26,$99
|
||||
!byte $00,$bb,$c8,$d0,$ee,$bc,$8c,$c0
|
||||
!byte $10,$fb,$d9,$00,$ba,$d0,$13,$18
|
||||
!byte $60,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$38,$60,$a0,$fc,$84,$26
|
||||
!byte $c8,$d0,$04,$e6,$26,$f0,$f3,$bd
|
||||
!byte $8c,$c0,$10,$fb,$4a,$c9,$6a,$d0
|
||||
!byte $ef
|
||||
_B959 !byte $bd
|
||||
_B95A !byte $8c,$c0,$c9,$d5,$f0,$36
|
||||
!byte $bd,$8c,$c0,$10,$fb,$c9,$aa,$d0
|
||||
!byte $df,$bd,$8c,$c0,$10,$fb,$c9,$96
|
||||
!byte $d0,$d6,$a0,03,$a9,00,$85,$27
|
||||
!byte $d0,$d6,$a0,$03,$a9,$00,$85,$27
|
||||
!byte $bd,$8c,$c0,$10,$fb,$2a,$85,$26
|
||||
!byte $bd,$8c,$c0,$10,$fb,$25,$26,$99
|
||||
!byte $2c,00,$45,$27,$88,$10,$e7,$a8
|
||||
!byte $d0,00,$18,$60,$38,$60,$8D,$9B
|
||||
!byte $B9,$F0,$D7,00,00,00,$18,$60
|
||||
!byte $2c,$00,$45,$27,$88,$10,$e7,$a8
|
||||
!byte $d0,$00,$18,$60,$38,$60,$8D,$9B
|
||||
!byte $B9,$F0,$D7,$00,$00,$00,$18,$60
|
||||
!byte $86,$2b,$85,$2a,$cd,$78,$04,$f0
|
||||
!byte $53,$a9,00,$85,$26,$ad,$78,04
|
||||
!byte $53,$a9,$00,$85,$26,$ad,$78,$04
|
||||
!byte $85,$27,$38,$e5,$2a,$f0,$33,$b0
|
||||
!byte 07,$49,$ff,$ee,$78,04,$90,05
|
||||
!byte $69,$fe,$ce,$78,04,$c5,$26,$90
|
||||
!byte 02,$a5,$26,$c9,$0c,$b0,01,$a8
|
||||
!byte $07,$49,$ff,$ee,$78,$04,$90,$05
|
||||
!byte $69,$fe,$ce,$78,$04,$c5,$26,$90
|
||||
!byte $02,$a5,$26,$c9,$0c,$b0,$01,$a8
|
||||
!byte $38,$20,$ee,$b9,$b9,$11,$ba,$20
|
||||
!byte 00,$ba,$a5,$27,$18,$20,$f1,$b9
|
||||
!byte $b9,$1d,$ba,$20,00,$ba,$e6,$26
|
||||
!byte $d0,$c3,$20,00,$ba,$18,$ad,$78
|
||||
!byte 04,$29,03,$2a,05,$2b,$aa,$bd
|
||||
!byte $00,$ba,$a5,$27,$18,$20,$f1,$b9
|
||||
!byte $b9,$1d,$ba,$20,$00,$ba,$e6,$26
|
||||
!byte $d0,$c3,$20,$00,$ba,$18,$ad,$78
|
||||
!byte $04,$29,$03,$2a,$05,$2b,$aa,$bd
|
||||
!byte $80,$c0,$a6,$2b,$60,$aa,$a0,$a0
|
||||
nibtable !byte $a2,$11,$ca,$d0,$fd,$e6,$46,$d0
|
||||
!byte 02,$e6,$47,$38,$e9,01,$d0,$f0
|
||||
!byte $60,01,$30,$28,$24,$20,$1e,$1d
|
||||
!byte $02,$e6,$47,$38,$e9,$01,$d0,$f0
|
||||
!byte $60,$01,$30,$28,$24,$20,$1e,$1d
|
||||
!byte $1c,$1c,$1c,$1c,$1c,$70,$2c,$26
|
||||
!byte $22,$1f,$1e,$1d,$1c,$1c,$1c,$1c
|
||||
!byte $1c,$96,$97,$9a,$9b,$9d,$9e,$9f
|
||||
@ -107,17 +107,17 @@ nibtable !byte $a2,$11,$ca,$d0,$fd,$e6,$46,$d0
|
||||
!byte $de,$df,$e5,$e6,$e7,$e9,$ea,$eb
|
||||
!byte $ec,$ed,$ee,$ef,$f2,$f3,$f4,$f5
|
||||
!byte $f6,$f7,$f9,$fa,$fb,$fc,$fd,$fe
|
||||
!byte $ff,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte $ff,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
; these $FF bytes (at $BA80..$BA94) are used by the
|
||||
; routine that checks whether a track is formatted
|
||||
!byte $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff
|
||||
!byte $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff
|
||||
!byte $ff,$ff,$ff,$ff,$ff,$ff,00,01
|
||||
!byte $98,$99,02,03,$9c,04,05,06
|
||||
!byte $a0,$a1,$a2,$a3,$a4,$a5,07,08
|
||||
!byte $a8,$a9,$aa,09,$0a,$0b,$0c,$0d
|
||||
!byte $ff,$ff,$ff,$ff,$ff,$ff,$00,$01
|
||||
!byte $98,$99,$02,$03,$9c,$04,$05,$06
|
||||
!byte $a0,$a1,$a2,$a3,$a4,$a5,$07,$08
|
||||
!byte $a8,$a9,$aa,$09,$0a,$0b,$0c,$0d
|
||||
!byte $b0,$b1,$0e,$0f,$10,$11,$12,$13
|
||||
!byte $b8,$14,$15,$16,$17,$18,$19,$1a
|
||||
!byte $c0,$c1,$c2,$c3,$c4,$c5,$c6,$c7
|
||||
@ -130,163 +130,163 @@ nibtable !byte $a2,$11,$ca,$d0,$fd,$e6,$46,$d0
|
||||
!byte $f8,$39,$3a,$3b,$3c,$3d,$3e
|
||||
nibtableff
|
||||
!byte $3f
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte $84,$48,$85,$49,$a0,02,$8c,$f8
|
||||
!byte 06,$a0,04,$8c,$f8,04,$a0,01
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $84,$48,$85,$49,$a0,$02,$8c,$f8
|
||||
!byte $06,$a0,$04,$8c,$f8,$04,$a0,$01
|
||||
!byte $b1,$48,$aa,$a0,$0f,$d1,$48,$f0
|
||||
!byte $1b,$8a,$48,$b1,$48,$aa,$68,$48
|
||||
!byte $91,$48,$bd,$8e,$c0,$a0,08,$bd
|
||||
!byte $91,$48,$bd,$8e,$c0,$a0,$08,$bd
|
||||
!byte $8c,$c0,$dd,$8c,$c0,$d0,$f6,$88
|
||||
!byte $d0,$f8,$68,$aa,$bd,$8e,$c0,$bd
|
||||
!byte $8c,$c0,$a0,08,$bd,$8c,$c0,$48
|
||||
!byte $68,$48,$68,$8e,$f8,05,$dd,$8c
|
||||
!byte $c0,$d0,03,$88,$d0,$ee,08,$bd
|
||||
!byte $89,$c0,$a0,06,$b1,$48,$99,$36
|
||||
!byte 00,$c8,$c0,$0a,$d0,$f6,$a0,03
|
||||
!byte $b1,$3c,$85,$47,$a0,02,$b1,$48
|
||||
!byte $a0,$10,$d1,$48,$f0,06,$91,$48
|
||||
!byte $28,$a0,00,08,$6a,$90,05,$bd
|
||||
!byte $8a,$c0,$b0,03,$bd,$8b,$c0,$66
|
||||
!byte $35,$28,$08,$d0,$0b,$a0,07,$20
|
||||
!byte 00,$ba,$88,$d0,$fa,$ae,$f8,05
|
||||
!byte $a0,04,$b1,$48,$20,$5a,$be,$28
|
||||
!byte $8c,$c0,$a0,$08,$bd,$8c,$c0,$48
|
||||
!byte $68,$48,$68,$8e,$f8,$05,$dd,$8c
|
||||
!byte $c0,$d0,$03,$88,$d0,$ee,$08,$bd
|
||||
!byte $89,$c0,$a0,$06,$b1,$48,$99,$36
|
||||
!byte $00,$c8,$c0,$0a,$d0,$f6,$a0,$03
|
||||
!byte $b1,$3c,$85,$47,$a0,$02,$b1,$48
|
||||
!byte $a0,$10,$d1,$48,$f0,$06,$91,$48
|
||||
!byte $28,$a0,$00,$08,$6a,$90,$05,$bd
|
||||
!byte $8a,$c0,$b0,$03,$bd,$8b,$c0,$66
|
||||
!byte $35,$28,$08,$d0,$0b,$a0,$07,$20
|
||||
!byte $00,$ba,$88,$d0,$fa,$ae,$f8,$05
|
||||
!byte $a0,$04,$b1,$48,$20,$5a,$be,$28
|
||||
!byte $d0,$11,$a4,$47,$10,$0d,$a0,$12
|
||||
!byte $88,$d0,$fd,$e6,$46,$d0,$f7,$e6
|
||||
!byte $47,$d0,$f3,$a0,$0c,$b1,$48,$f0
|
||||
!byte $5a,$c9,04,$f0,$58,$6a,08,$b0
|
||||
!byte 03,$20,00,$b8,$a0,$30,$8c,$78
|
||||
!byte 05,$ae,$f8,05,$20,$44,$b9,$90
|
||||
!byte $24,$ce,$78,05,$10,$f3,$ad,$78
|
||||
!byte 04,$48,$a9,$60,$20,$95,$be,$ce
|
||||
!byte $f8,06,$f0,$28,$a9,$04,$8d,$f8
|
||||
!byte 04,$a9,00,$20,$5a,$be,$68,$20
|
||||
!byte $5a,$c9,$04,$f0,$58,$6a,$08,$b0
|
||||
!byte $03,$20,$00,$b8,$a0,$30,$8c,$78
|
||||
!byte $05,$ae,$f8,$05,$20,$44,$b9,$90
|
||||
!byte $24,$ce,$78,$05,$10,$f3,$ad,$78
|
||||
!byte $04,$48,$a9,$60,$20,$95,$be,$ce
|
||||
!byte $f8,$06,$f0,$28,$a9,$04,$8d,$f8
|
||||
!byte $04,$a9,$00,$20,$5a,$be,$68,$20
|
||||
!byte $5a,$be,$4c,$bc,$bd,$a4,$2e,$cc
|
||||
!byte $78,04,$f0,$1c,$ad,$78,04,$48
|
||||
!byte $98,$20,$95,$be,$68,$ce,$f8,04
|
||||
!byte $78,$04,$f0,$1c,$ad,$78,$04,$48
|
||||
!byte $98,$20,$95,$be,$68,$ce,$f8,$04
|
||||
!byte $d0,$e5,$f0,$ca,$68,$a9,$40,$28
|
||||
!byte $4c,$48,$be,$f0,$39,$4c,$af,$be
|
||||
!byte $a0,03,$b1,$48,$48,$a5,$2f,$a0
|
||||
!byte $0e,$91,$48,$68,$f0,08,$c5,$2f
|
||||
!byte $f0,04,$a9,$20,$d0,$e1,$a0,05
|
||||
!byte $a0,$03,$b1,$48,$48,$a5,$2f,$a0
|
||||
!byte $0e,$91,$48,$68,$f0,$08,$c5,$2f
|
||||
!byte $f0,$04,$a9,$20,$d0,$e1,$a0,$05
|
||||
!byte $b1,$48,$a8,$b9,$b8,$bf,$c5,$2d
|
||||
!byte $d0,$97,$28,$90,$1c,$20,$dc,$b8
|
||||
!byte 08,$b0,$8e,$28,$a2,00,$86,$26
|
||||
!byte $20,$c2,$b8,$ae,$f8,05,$18,$24
|
||||
!byte $08,$b0,$8e,$28,$a2,$00,$86,$26
|
||||
!byte $20,$c2,$b8,$ae,$f8,$05,$18,$24
|
||||
!byte $38,$a0,$0d,$91,$48,$bd,$88,$c0
|
||||
!byte $60,$20,$2a,$b8,$90,$f0,$a9,$10
|
||||
!byte $b0,$ee,$48,$a0,01,$b1,$3c,$6a
|
||||
!byte $68,$90,08,$0a,$20,$6b,$be,$4e
|
||||
!byte $78,04,$60,$85,$2a,$20,$8e,$be
|
||||
!byte $b9,$78,04,$24,$35,$30,03,$b9
|
||||
!byte $f8,04,$8d,$78,$04,$a5,$2a,$24
|
||||
!byte $35,$30,05,$99,$f8,04,$10,03
|
||||
!byte $99,$78,04,$4c,$a0,$b9,$8a,$4a
|
||||
!byte $4a,$4a,$4a,$a8,$60,$48,$a0,02
|
||||
!byte $b0,$ee,$48,$a0,$01,$b1,$3c,$6a
|
||||
!byte $68,$90,$08,$0a,$20,$6b,$be,$4e
|
||||
!byte $78,$04,$60,$85,$2a,$20,$8e,$be
|
||||
!byte $b9,$78,$04,$24,$35,$30,$03,$b9
|
||||
!byte $f8,$04,$8d,$78,$04,$a5,$2a,$24
|
||||
!byte $35,$30,$05,$99,$f8,$04,$10,$03
|
||||
!byte $99,$78,$04,$4c,$a0,$b9,$8a,$4a
|
||||
!byte $4a,$4a,$4a,$a8,$60,$48,$a0,$02
|
||||
!byte $b1,$48,$6a,$66,$35,$20,$8e,$be
|
||||
!byte $68,$0a,$24,$35,$30,05,$99,$f8
|
||||
!byte 04,$10,03,$99,$78,04,$60,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,$0d,$0b,09,07,05,03,01
|
||||
!byte $0e,$0c,$0a,08,06,04,02,$0f
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte 00,00,00,00,00,00,00,00
|
||||
!byte $68,$0a,$24,$35,$30,$05,$99,$f8
|
||||
!byte $04,$10,$03,$99,$78,$04,$60,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$0d,$0b,$09,$07,$05,$03,$01
|
||||
!byte $0e,$0c,$0a,$08,$06,$04,$02,$0f
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
!byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
|
Loading…
Reference in New Issue
Block a user