Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.1 6/24/83; site mh3bs.UUCP Path: utzoo!watmath!clyde!burl!ulysses!harpo!eagle!mh3bs!jwh From: jwh@mh3bs.UUCP (J.W.Herndon) Newsgroups: net.micro.cbm Subject: C64 Reset Message-ID: <389@mh3bs.UUCP> Date: Thu, 15-Mar-84 09:50:01 EST Article-I.D.: mh3bs.389 Posted: Thu Mar 15 09:50:01 1984 Date-Received: Fri, 16-Mar-84 01:56:55 EST Organization: AT&T Bell Laboratories, Murray Hill, NJ Lines: 18 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.