mirror of
https://github.com/a2-4am/passport.git
synced 2025-01-02 17:30:53 +00:00
guard against C0EC crossing a page
This commit is contained in:
parent
e4f6ed2a26
commit
fc74b8b31a
@ -417,18 +417,32 @@ VerifyInfocom18
|
||||
|
||||
lda #$00
|
||||
-- ldy #$56
|
||||
.x1
|
||||
- ldx $C0EC
|
||||
bpl -
|
||||
!if >.x1 != >* {
|
||||
!serious "branch crosses a page"
|
||||
}
|
||||
eor $BA00,x ; from universal RWTS
|
||||
dey
|
||||
bne -
|
||||
.x2
|
||||
!warn "x1=",*
|
||||
- ldx $C0EC
|
||||
bpl -
|
||||
!warn "x2=",*
|
||||
!if >.x2 != >* {
|
||||
!serious "branch crosses a page"
|
||||
}
|
||||
eor $BA00,x ; from universal RWTS
|
||||
iny
|
||||
bne -
|
||||
.x3
|
||||
- ldx $C0EC
|
||||
bpl -
|
||||
!if >.x3 != >* {
|
||||
!serious "branch crosses a page"
|
||||
}
|
||||
eor $BA00,x ; from universal RWTS
|
||||
bne .badsect
|
||||
dec tmp
|
||||
@ -495,15 +509,23 @@ VerifyInfocom18
|
||||
+ ldy #4
|
||||
- dey
|
||||
beq .badrw18
|
||||
.x4
|
||||
-- ldx $C0EC
|
||||
bpl --
|
||||
!if >.x4 != >* {
|
||||
!serious "branch crosses a page"
|
||||
}
|
||||
lda $BA00,x
|
||||
eor #$A5
|
||||
bne -
|
||||
sta $3A
|
||||
tay
|
||||
.x5
|
||||
-- ldx $C0EC
|
||||
bpl --
|
||||
!if >.x5 != >* {
|
||||
!serious "branch crosses a page"
|
||||
}
|
||||
eor $3A
|
||||
eor $BA00,x
|
||||
sta $2F
|
||||
@ -511,32 +533,48 @@ VerifyInfocom18
|
||||
asl
|
||||
asl
|
||||
sta $30
|
||||
.x6
|
||||
- ldx $C0EC
|
||||
bpl -
|
||||
!if >.x6 != >* {
|
||||
!serious "branch crosses a page"
|
||||
}
|
||||
and #$C0
|
||||
ora $BA00,x
|
||||
sta $3A
|
||||
lda $30
|
||||
asl
|
||||
asl
|
||||
.x7
|
||||
- ldx $C0EC
|
||||
bpl -
|
||||
!if >.x7 != >* {
|
||||
!serious "branch crosses a page"
|
||||
}
|
||||
sta $30
|
||||
and #$C0
|
||||
ora $BA00,x
|
||||
sta $3B
|
||||
lda $30
|
||||
asl
|
||||
.x8
|
||||
- ldx $C0EC
|
||||
bpl -
|
||||
!if >.x8 != >* {
|
||||
!serious "branch crosses a page"
|
||||
}
|
||||
asl
|
||||
ora $BA00,x
|
||||
eor $3B
|
||||
eor $2F
|
||||
iny
|
||||
bne --
|
||||
.x9
|
||||
- ldx $C0EC
|
||||
bpl -
|
||||
!if >.x9 != >* {
|
||||
!serious "branch crosses a page"
|
||||
}
|
||||
eor $BA00,x
|
||||
eor $3A
|
||||
and #$3F
|
||||
@ -555,22 +593,38 @@ VerifyInfocom18
|
||||
jmp .badsect
|
||||
|
||||
.rw18pro
|
||||
.x10
|
||||
-- ldx $C0EC
|
||||
bpl --
|
||||
!if >.x10 != >* {
|
||||
!serious "branch crosses a page"
|
||||
}
|
||||
lda $BA00,x ; region (half)
|
||||
sta $2C
|
||||
.x11
|
||||
-- ldx $C0EC
|
||||
bpl --
|
||||
!if >.x11 != >* {
|
||||
!serious "branch crosses a page"
|
||||
}
|
||||
lda $BA00,x ; region (half)
|
||||
sta $2D
|
||||
.x12
|
||||
-- ldx $C0EC
|
||||
bpl --
|
||||
!if >.x12 != >* {
|
||||
!serious "branch crosses a page"
|
||||
}
|
||||
lda $BA00,x ; checksum
|
||||
eor $2C
|
||||
eor $2D
|
||||
bne +
|
||||
.x13
|
||||
-- ldx $C0EC
|
||||
bpl --
|
||||
!if >.x13 != >* {
|
||||
!serious "branch crosses a page"
|
||||
}
|
||||
lda $BA00,x ; epilogue
|
||||
eor #$AA
|
||||
+ rts
|
||||
@ -604,12 +658,20 @@ read13
|
||||
cmp #$B5
|
||||
bne +
|
||||
ldy #$03
|
||||
.x14
|
||||
-- lda $C0EC
|
||||
bpl --
|
||||
!if >.x14 != >* {
|
||||
!serious "branch crosses a page"
|
||||
}
|
||||
rol
|
||||
sta $3C
|
||||
.x15
|
||||
- lda $C0EC
|
||||
bpl -
|
||||
!if >.x15 != >* {
|
||||
!serious "branch crosses a page"
|
||||
}
|
||||
and $3C
|
||||
dey
|
||||
bne --
|
||||
@ -622,18 +684,30 @@ read13
|
||||
eor #$AD
|
||||
bne .readaddr
|
||||
-- ldy #$9A
|
||||
.x16
|
||||
- ldx $C0EC
|
||||
bpl -
|
||||
!if >.x16 != >* {
|
||||
!serious "branch crosses a page"
|
||||
}
|
||||
eor $800,x
|
||||
dey
|
||||
bne -
|
||||
.x17
|
||||
- ldx $C0EC
|
||||
bpl -
|
||||
!if >.x17 != >* {
|
||||
!serious "branch crosses a page"
|
||||
}
|
||||
eor $800,x
|
||||
iny
|
||||
bne -
|
||||
.x18
|
||||
- ldx $C0EC
|
||||
bpl -
|
||||
!if >.x18 != >* {
|
||||
!serious "branch crosses a page"
|
||||
}
|
||||
eor $800,x
|
||||
cmp #$01 ; set carry if non-zero
|
||||
!byte $2c
|
||||
|
@ -247,8 +247,12 @@ ReadChoplifter
|
||||
.prolog3
|
||||
cmp #$D1 ; SMC
|
||||
bne - ; this had the same bug
|
||||
.x1
|
||||
-- lda $C0EC ; timing issue requires unrolling part of this
|
||||
bpl --
|
||||
!if >.x1 != >* {
|
||||
!serious "branch crosses a page"
|
||||
}
|
||||
sec
|
||||
rol
|
||||
sta tmp
|
||||
@ -263,8 +267,12 @@ ReadChoplifter
|
||||
sec
|
||||
rol
|
||||
sta tmp
|
||||
.x2
|
||||
- lda $C0EC
|
||||
bpl -
|
||||
!if >.x2 != >* {
|
||||
!serious "branch crosses a page"
|
||||
}
|
||||
and tmp
|
||||
sta (BASEPAGE+8)<<8,y
|
||||
iny
|
||||
|
@ -158,6 +158,9 @@ JustTheSameDamnThingOverAndOver
|
||||
sta @cmp+1 ; 4
|
||||
@loop lda $C0EC ; 4
|
||||
bpl @loop ; 2 when not taken
|
||||
!if >@loop != >* {
|
||||
!serious "branch crosses a page"
|
||||
}
|
||||
dex ; 2
|
||||
bne @cmp ; 2 when not taken
|
||||
dec unform+1 ; 5
|
||||
@ -201,6 +204,9 @@ IsUnformatted
|
||||
@reset ldy #$00
|
||||
@loop ldx $C0EC ; 4
|
||||
bpl @loop ; 2 when not taken
|
||||
!if >@loop != >* {
|
||||
!serious "branch crosses a page"
|
||||
}
|
||||
dec unform ; 5
|
||||
bne + ; 2 when not taken
|
||||
dec unform+1 ; 5
|
||||
@ -246,8 +252,12 @@ IsEATrack6
|
||||
; out: A contains nibble value
|
||||
;-------------------------------
|
||||
ReadNib
|
||||
.x1
|
||||
- lda $C0EC
|
||||
bpl -
|
||||
!if >.x1 != >* {
|
||||
!serious "branch crosses a page"
|
||||
}
|
||||
rts
|
||||
|
||||
;-------------------------------
|
||||
@ -259,12 +269,20 @@ ReadNib
|
||||
; @tmp clobbered
|
||||
;-------------------------------
|
||||
Read4x4
|
||||
.x2
|
||||
- lda $C0EC
|
||||
bpl -
|
||||
!if >.x2 != >* {
|
||||
!serious "branch crosses a page"
|
||||
}
|
||||
sec
|
||||
rol
|
||||
sta tmp
|
||||
.x3
|
||||
- lda $C0EC
|
||||
bpl -
|
||||
!if >.x3 != >* {
|
||||
!serious "branch crosses a page"
|
||||
}
|
||||
and tmp
|
||||
rts
|
||||
|
Loading…
Reference in New Issue
Block a user