Subject: Re: "CP/M compatible" vs. "MS-DOS Compatible" machines?
From: "Roy J. Tellason" <rtellason at verizon.net>
Date: Tue, 05 Feb 2008 15:46:14 -0500
To: "General Discussion: On-Topic and Off-Topic Posts" <cctalk at
classiccmp.org>
On Tuesday 05 February 2008 04:08, Chuck Guzis wrote:
Date:
Tue, 05 Feb 2008 02:20:29 -0500
From: "Roy J. Tellason"
I'd already done it for DX-85M
What's that?
Proprietary multitasking operating system, based on the 8085;
basically the other end of the spectrum from CP/M. Included built-in-
interrupt-driven I/O (including 4 channels of async), file types
(i.e. differentiated between executable, data, index, etc.), built-in
ISAM files and a bunch of other stuff. One of these days I'll chat
about it if anyone's curious.
Yup! Count me in...
Always curious, that sounds like my definition of an OS.
(Snip)
Re: passing arguments on the stack. It's an
interesting exercise on
the 8085 using the "undocumented" instructions. For example, opcode
38H, which is a two-byte instruction would take SP, add the second
instruction byte and stick the result in DE. Opcode 28H would do the
same, but use HL instead of SP.
Another 8085 16-bit operation, opcode D9H, would store HL in the
address pointed to by DE. Opcode EDh would load HL from the address
pointed to by DE.
There were a couple of other 16-bit operations in 8085 not
documented. 08H would subtract BC from HL, 10H shifted HL right one
place with sign extension. 18H rotated DE left one place through the
carry flag (i.e. 17 bit rotate).
There were a few other instructions of less interest: a couple of
jumps that tested for unsigned overflow and a conditional restart to
location 40H (RST 8) if the overflow flag was set.
Interesting stuff. I've run across the occasional info on undocumented ops
for different chips, but don't remember seeing any for the 8085 before.
They were commonly known before the Z80 and both were both widely
circulated and all the vendors made sure thies worked exactly the same
way. Whats funny is while they all worked to see it was there none
officially acknopwleged that save for under NDA.
It was kind of
unfortunate that Intel simply didn't leave blanks in
the 8080 documentation for the "do nothing" moves; (e.g. MOV A,A; MOV
B,B, etc.). It might have freed up a few more spare opcodes for
later exploitation.
I suspect that a lot of the reasons for them laying things out the way they
did had to do with convenience in the manufacturing process, mask layout or
somesuch stuff, rather than intent.
Maufacturing no. Design yes. back then there was little if any automated
chip design so anything to save time or transistors on the die was good.
The redundant moves are simple example of not decoding all possible states.
Saves transistors at a time when getting things on that much silicon was
still hard.
Allison