[net.micro.cbm] C64 Reset

jwh@mh3bs.UUCP (J.W.Herndon) (03/15/84)

Thanks to all who responded to my question regarding how some programs
prevent a cold start when the reset lead is grounded.
The following two methods can be used to accomplish this.
Method 2  is the better method.

1.  Copy the kernal ROM into the underlying RAM, then flip out the kernal
ROM by resetting bit 1 at address $0001.  The cold start and NMI
interrupt vectors located respectively at $fffc-fffd and $fffa-fffb
can now be changed as desired.
2.  If the following bytes occur at locations $8004-8008 then *both* the cold start (reset) and the warm start (nmi) routines assume an auto start catridge is
present: $C3, C2, CD, 38, 30.  The subroutine which checks for this is located
at $FD02.
If the cold start routine ($FCE2) finds that, then it executes a JMP ($8000)
If the warm start routine ($FE43) finds that, then it executes a JMP ($8002)
therefore, a program can prevent a user from getting control on a reset or 
nmi by merely loading $8000 through $8008 with the desired information.