apratt@atari.UUcp (Allan Pratt) (01/06/87)
Not surprisingly, bus errors on the ST are there for a reason. You get a bus error any time the processor is in USER state (as opposed to SUPERVISOR state) and you: 1) read or write below $7ff 2) read or write above $ff0000 (the I/O space) You also get bus error (even is Supervisor state) when you write to ROM ($FC0000 to $FEFFFF) or below $8 (because that's the reset vector and it's mapped to ROM), or if you read or write above 4Meg. I am not sure if accesses above existing RAM but below 4Meg work or cause bus errors. The Glue Chip "causes" bus error by acting like a black hole: the processor makes a memory access request, and the glue chip doesn't pass the request along to any device (ROM, RAM, or the I/O bus). Hence DTACK isn't asserted and the processor says, "There's nobody out there." Since Macintosh programs run in Supervisor state, the only sources of bus error are accessing nonexistent memory (why would they do that?), and writing to ROM. The latter is most likely: stupid applications which don't check for a null pointer before writing to it. On the other hand, I am told that the lowest 8 bytes of Mac memory are RAM and unused, because when you RESET the machine a bit of ROM is mapped there briefly, then mapped back out again, leaving useless RAM at that address. If a Mac program takes advantage of those 8 bytes, it won't work on an ST. /----------------------------------------------\ | Opinions expressed above do not necessarily | -- Allan Pratt, Atari Corp. | reflect those of Atari Corp. or anyone else. | ...lll-lcc!atari!apratt \----------------------------------------------/