CP/M survey

Allison ajp166 at bellatlantic.net
Thu Apr 19 17:17:32 CDT 2007

>Subject: Re: CP/M survey
>   From: Jim Battle <frustum at pacbell.net>
>   Date: Thu, 19 Apr 2007 12:19:48 -0500
>     To: General Discussion: On-Topic and Off-Topic Posts <cctalk at classiccmp.org>
>Chuck Guzis wrote:
>> ... And most professional apps for CP/M used the 8080 instruction 
>> set initially--only later did a bunch of Z80-specific (e.g. ZCPR) 
>> code come out.  I never could understand this--in general,  little to 
>> be gained in speed by using Z80 codes.
>I thought the main motivation was footprint, not speed.  The relative 
>jumps save a byte each time they are used, and djnz saved two.

the Z80 instruction set not only had the relative jump, and DJNZ but also
small fixes like the the asymetric problem of you could load the SP 
but in 8080 you had to burn a register to get the SP contents.  The 
block moves and bit tests are worthwhile too.

Where the Z80 gained speed was 4mhz and faster (best 8080 hit was 3)
and a much more sophisticated interrupt capability. That and those 
index registers helped solve those times when 8080 needed more 
registers to play with pointers without twisty code.

>One of the most wasteful features in the 8080 instruction set, I 
>thought, were the 8 conditional calls and 8 conditional returns.  I 
>would have much rather they had only unconditional call and 
>unconditional return only and used those 16 opcodes for something more 
>useful.  Sure, they were useful once in a while, but not so often that 
>they should use up 6% of the single byte opcode space.

;) 8080 was what it was and compare to the 8008 a huge improvement. What
was more interesting to me at that time was to 6800 and 6502 which were 
in many ways simpler yet better by a differt route.

One of the oddities of most cpus is 90% of the code is done with a small
portion of the instrucion set.  the remaining 10% of code may use less
than 50% of the unused to that point instructions.  There are always 
a few that are nearly never used.

One example of a 8080 (and 8085 and z80 usage) is ORA A with in one 
assembler I renamed to SEF (set flags).  The 8080 family is loaded with
instructions like that.

At the other extreme.. 8085 and z80 "unsupported" instructions that every 
chip maker insures are there and behave the same even if not specified.


More information about the cctalk mailing list