[comp.sys.atari.st] Bus error

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
\----------------------------------------------/