"CP/M compatible" vs. "MS-DOS Compatible" machines?
ajp166 at bellatlantic.net
Fri Feb 1 21:23:29 CST 2008
>Subject: Re: "CP/M compatible" vs. "MS-DOS Compatible" machines?
> From: "Chuck Guzis" <cclist at sydex.com>
> Date: Fri, 01 Feb 2008 13:06:58 -0800
> To: cctalk at classiccmp.org
>> 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
That scheme also work for Z80 mode2 where I is XX and the inserted
low byte comes from the commonly 74148 and a pair of 74175s.
>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").
Also an ISIS user. The usual OS used on the shop MDS was not ISIS
but instead CP/M!
>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
Having the RST0 vector already used wasn't too bad as it's also RESET
but the DDT one was harder as the cheap pullup resistor address
(RST7) was easy. Most of the z80 boards had vectored interrupt
logic and that made it easy as most systems only needed maybe two
or three ints to do the job and 6 were unused. It was only the early
8080 S100 machines that were impacted and some did have interrupt
hardware that was more than RST7 by pullup. By time CP/M-2 was
available Z80 was almost universal and the few that werent were
either 8085 or 8080 with ints. Whats interesting is the 8085
interrupt pins were all usable including trap in a CP/M environment,
thats potentially four interrupt inputs.
Now if you are doing low memory banking those interrupts locked in page
zero were a pain. Z80 mode 2 or other hardware was needed to get
out of that hole.
More information about the cctalk