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.