From: Daniel Kahlin (tlr_at_stacken.kth.se)
Date: 2003-02-02 18:10:27
Hi,
the code is not for protection. :)
Well you can not just remove it... It is the thing that makes
the readback work. The routine you are talking about has two entry
points in the kernal jumptable. $ff8a (RESTOR) which points to $fd15 on
the c64, and $ff8d (VECTOR) which points to $fd1a.
If VECTOR is called with carry=0 the vector table is copied from the
adress you specify with X/Y. If it is called with carry=1 the vector
table is copied _to_ the adress you specify with X/Y.
If you just "nop" the code it will break.
Note: on the vic20 it didn't really matter that the code wrote to ROM
locations, but when the code was ported to the c64 it started trashing
memory...
Regards
/Daniel Kahlin
Below is a fix for the c64 rom, which I assume is easy to adapt for the
vic20.
;**************************************************************************
;*
;* bug: fd30-fd4f under rom gets trashed when setting up the vectors
;* from rom.
;*
;******
;FD15 A2 30 LDX #$30
;FD17 A0 FD LDY #$FD
;FD19 18 CLC
;FD1A 86 C3 STX $C3
;FD1C 84 C4 STY $C4
;FD1E A0 1F LDY #$1F
;FD20 B9 14 03 LDA $0314,Y FD20 B1 C3 LDA ($C3),Y
;FD24 B0 02 BCS $FD27 ---> FD22 90 05 BCC $FD29
;FD25 B1 C3 LDA ($C3),Y FD24 B9 14 03 LDA $0314,Y
;FD27 91 C3 STA ($C3),Y
;FD29 99 14 03 STA $0314,Y
;FD2C 88 DEY
;FD2D 10 F1 BPL $FD20
;FD2F 60 RTS
On Sun, 2 Feb 2003, Christer Palm wrote:
> Nicolas Welte; address is valid for replies (Re:) only! wrote:
> >
> > Can anyone think of problems that I could create when I patch this code
> > fragment?
> >
>
> As Groepaz points out, the C64 KERNAL has the same piece of code. Many
> replacement ROMs (i.e. SpeedDOS and the like) already has it removed, so
> it should be 100% safe to remove it.
>
> It is indeed one of the major reasons to why many programs do not
> survive a reset properly.
>
> Its history would surely make a good piece of trivia. It was hardly put
> in there by mistake and it couldn't be one of those "am I running from
> ROM?" protection mechanisms as such a mechanism would surely write
> something different than what's already there.
>
>
Message was sent through the cbm-hackers mailing list
Archive generated by hypermail 2.1.6.