Date: Thu, 31 Jan 2008 09:21:58 -0500
From: Allison
If one takes a moment some of that was INTEL MDS
artifact that were
programmed around. Also there are plenty of unused RST vectors.
For the later systems the 8259 was available and it inserted a
CALL XXXX where XXXX was anywere in addressable memory. The Z80
in mode2 interrupt also could vector anywhere in ram. DMA
is not impacted by how the low page is used.
IIRC, in ISIS-II, programs were loaded somewhere above 3000H,
depending on the buffer requirements of the program, but always above
the ISIS resident, which always occupied the same space, regardless
of memory size.
On some early 8080 implementations, an 8259 wasn't used (expensive!)
and a simpler circuit using a priority encoder and a latch to stuff
111iii11 onto the bus in response to an interrupt acknowledge. CP/M
could get in the way of this scheme, if it was desired to use the
RST0 vector for an interrupt. Otherwise, there was no problem,
except for the RST vector (usually 7) used for DDT--but that's local
to DDT and easily patchable (it's done for the Amstrad PCW, for
example).
After having used ISIS before CP/M, I was happy to see the "lean and
mean" CP/M. ISIS was verbose, clumsy and slow (e.g., :F0: instead of
A: for the first floppy drive; "DELETE" instead of "ERA").
Of course, had CP/M simply shifted the TPA up 256 bytes and used the
area between 0100h and 01FFh for command-line storage, system request
vectors and FCBs, that would have solved the problem, but for the DDT
RST vector.
Cheers,
Chuck