tob@inuxm.UUCP (T Burger) (02/07/86)
DD A COLD START RESET TO YOUR XE After I got my new 130XE, I began to get a little frustrated by the ram chips in it. In order to do a cold start, I had to leave the machine off for at least 20 seconds. This is a *real* long time. I was convinced there had to be a better way. First of all a little history about what causes the problem. When Atari switched to the XL/XE line of computers, they changed the reset button to do a hard chip reset instead of an interrupt like on the old 800's. This means that every time the reset button is pressed the 6502 does a reset and starts over. The software must determine whether this is a cold start (power up) or a warm start (reset button). It does this by checking for a signature in the ram. On the XE there are three bytes $33D, $33E, $33F. If these three bytes are intact ($5C $93 $25) then it does a warm start. If any of them are wrong then it does a cold start. The same day that I picked up my 130XE, I ordered the OMNIVIEW XE operating system from CDY. This OS gives you several advantages. 1. It does away with the need for a translator disk. It looks like the old Rev B operating system. 2. It gives me an 80 column mode for some applications. 3. It reverses the effect of the option key at coldstart. 4. It gives me ramdisk capability with any DOS. This OS only uses the first byte of the signature ($33D). I decided to fix my OMNIVIEW XE OS first. You will need access to an EPROM burner and a 27128 EPROM to make this fix. The fix..... My fix involves 'stealing' the reset vector and checking the keyboard secondary buffer. This is a byte at $2F2 where the keyboard handler keeps the last button press to see if it should start auto-repeating on the next key stroke. I decided to use 'shift esc reset' as my cold start method. If the byte at $2F2 is $5C then the last key press was the 'shift esc' and I trash the byte at $33D and let the system continue with a normal reset. This will cause a COLD START without touching the power switch. The program..... LDA $2F2 load the last key buffer CMP #$5C check it for 'shift esc' BNE EXIT branch if it isn't LDA #$00 load a zero STA $033D trash the signature EXIT JMP RESET continue with the system reset vectors I made this change on the OMNIVIEW XE rom from CDY first. These are the changes for the OMNIVIEW XE rom. ********** DAVID YOUNG are you listening. *********** The changes.... EPROM ADDRS OLD NEW 3FFC 29 20 power up reset vector 3FFD EF E9 power up reset vector 2920 44 AD 2921 61 F2 2922 76 02 2923 69 C9 2924 64 5C 2925 20 D0 2926 59 05 2927 6F A9 2928 75 00 2929 6E 8D 292A 67 3D 292B 20 03 292C CF 4C 292D CD 29 292E CE EF These bytes were used for Dave's title 'David Young OMNIVIEW XE (C)1985'. Sorry Dave, but this was the only safe place I could find!!!! If you boot without basic his message will be messed up. NOW THE XE...... There are about 30 bytes of $00 in the rom at address $24A0. This area was reserved for jump vectors, but was never needed. The XE OS does a rom checksum during power up. So I changed that routine so it will always pass the check. This fix should also work on the XL series, but you may have to find a new location for the code. The changes.... EPROM ADDRS OLD NEW 3FFC AA A8 power up reset vector 3FFD C2 E4 power up reset vector 3F90 38 18 defeat the rom check 24A8 00 AD 24A9 00 F2 24AA 00 02 24AB 00 C9 24AC 00 5C 24AD 00 D0 24AE 00 05 24AF 00 A9 24B0 00 00 24B1 00 8D 24B2 00 3D 24B3 00 03 24B4 00 4C 24B5 00 AA 24B6 00 C2 If you have both systems installed with a switch to select one of them at a time, you may want to make an additional change. Right now both systems use $5C for the first signature byte. You might change one of them to use a different signature byte. This would require finding all the places in the OS that it checks this byte and making the neccessary changes. Once in a while, if your system is 'locked-up' it may take two attempts to get a cold start. It seems the first attempt gets the interrupt system working, then the second attempt does the coldstart. NO MORE FLIPPING THE POWER SWITCH FOR ME. Hope this works for you. Ted Burger 317-835-7635 All the standard disclaimers apply. I don't work for any of the above companies, some people claim I don't work at all!!