APPENDIX FOUR _____________________________________________________________ Old (A) And New (B) ROMS The new OS ROMs have been mentioned throughout the book. They fixed some of the earlier OS bugs, but also changed a few ROM locations in the process. The result is a better OS, but some of your earlier software which calls up old ROM locations may not work with the new. There are two ways to test to see if you have the new or old ROMs; one is to PEEK location 58383, as described there. The other (the hardware solution) is to take out your ROM card, unscrew the metal top, and look inside. If the two chips facing you on your left have an "A" after their first code number, you have the earlier ROMs. If they have a "B", lucky you. You have the latest ROMs. There is also the empirical test: if your drive times out during I/O operations, you've got the old ROMs. Here are the differences between the new and old ROM locations. There are also a number of changes made with the new ROMs to the vectors at locations 512 to 534, 546 to 549 and 550. Refer to those locations and the OS locations for more information. The list below first specifies the old ROM locations, then the changes in the new ROMs. 55296-57343 (FP package) same 57344-58367 (character set) same 58368-58477 (vector tables) are the same to 58459 ($E45B) where there are changes in the table between 58460-58466 ($E45C to $E462). 58467-59092 ($E463-$E6D4) same 59093 ($E6D5) is the start of the IRQ handler. Changes to the new ROMs begin at 59126 ($E6F6) and continue to the end of the new IRQ handler at 59280 ($E790). 59316 ($E7B4) is the NMI interrupt handler in the old ROMs, now starts at 59281 ($E791). It is the same as the old version except moved 35 bytes lower. 59345 ($E7D1) is the start of the VBLANK routines in the old ROMs; they now start at 59310 ($E7AE) in the new ROMs. The routines remain the same until the SETVBL routine is reached at 59666 ($E912) old ROMs, 59629 ($E8ED) new ROMs. The changes to the VBLANK routine are mostly to adjust for the shift in the new memory locations. 58457 ($E459) is the SIO entry point for both versions. There are changes in the SIO routines to accommodate the new memory locations, but the entry point is still the same. 60048 ($EA90) output data needed interrupt service routine is changed, but the entry point is the same in both versions. 60113 ($EAD1) the transmit done interrupt service routine is the same,