I’m just amazed at how many people dig the Z80 as much as I do. It’s so cool seeing all these projects on my favourite CPU.
I mean this stuff would have seemed absolutely incredible to my 18 year old self. And so very cool to see a reference to MP/M. Though I seem to recall needing to use 8080 mnemonics to work on MP/M?
I bet a lot of us got our start doing low-level programming for the Z80. I remember learning to program assembly from the manual for a TI calculator. I'm pretty sure those things are still ubiquitous. It's probably the easiest way to learn assembly programming on real hardware anymore.
"Well Johnny, the first thing to understand is how time travel works. You see, our CPUs guess at what you wanted to do next and start executing the pipeline before they know for sure, and sometimes it's wrong, and..."
Received my first home computer, a Sinclair ZX Spectrum, in 1982 or so. No working cassette drive in the house, so of course I started reading the manual. That taught me BASIC. Later I learned assembly language programming, partly via the manuals, and partly via some books at the local library.
I'll always have a soft-spot for Z80 assembly, and have started to work on raw Z80 processors myself now - after spending the past year or two playing with Arduino and ESP8266 devices.
Sound a lot like me in the 80s. Hard to find information. Came across random books in the library.
My latest experience is with AVR assembly. What is it about Z80 that makes you prefer it? Wider variety of practical instructions? Cleaner design?
This blog got me curious about looking into Z80. Not a chip I ever learned anything about. I started out as an Amiga guy and I would occasionally come across books and stuff about 6502. Z80 is just a name I heard from time to time.
The instruction set is simple, and clean. The fact that you don't need much supporting circuitry to drive it is a nice bonus, but mostly I remember coding the thing when I was 12 or so, and now I know what I'm doing for real :)
I have been a bit fascinated by this, but perhaps you could explain to me what fascinates you about Z80. Just for reference I am a Motorola 68000 fan, mostly because I grew up with Amiga. My first computer was an Amiga 1000. After Amiga Basic some of the first programming I did was 68000 assembly.
I really liked it, and I absolutely hated x86 assembly when I tried that later. x86 seemed so quirky to me, with its segment registers and the naming of assembly instructions just didn't seem as nicely organized as for 68000, which almost felt like high level language in comparison.
x86 turned me off assembly for years. I have gotten some interest again these last years by playing around with AVR. I like AVR for the simplicity and low price.
Perhaps you could sell me on Z80, how does it compare to using AVR chips?
I love the M68K, in fact I almost said it was my favourite, but I think the Z80 taught me more.
Like the 68K, the Z80 had great mnemonics, was really easy to understand. In many ways I think it was at least a spiritual predecessor to the 68K. I mean, Z80 was an 8 bit CPU and 68K was much more capable 16 bit CPU. My guess is that if you liked the 68K you'd probably like the Z80.
Intel mnemonics always sucked :) 8086 and 80286 put me off assembly language too.
I don't know the AVR... don't get to play with CPUs much any more :(
MP/M ran fine on the Z-80. Only the mnemonics were different between Intel and Zilog. The byte-level machine code of the 8080/8085 would run just fine on the Z-80.
I was once blessed with a z80 c compiler, hosted on msdos but targeting cp/m (maybe it was ported for use with embedded targets). Its output was 8080 assembler with the odd db here and there when it wanted to emit a z80 instruction. It shipped with a perfectly good z80 assembler, mind; the compiler just emitted 8080 mnemonics because reasons.
I always thought that the Zilog mnemonics were better than Intel's. I learned Intel first, but immediately recognized that Zilog's were better once I became aware of them.
The only C compiler I had on CP/M was BDS C. It was fairly limited and had no floating point support whatsoever. Maybe that's the one you're thinking of?
This one was called Aztec and Manx C, depending on what part you looked at. It lacked bit field struct members and I think a couple of other features but don't remember now.
I learned Zilog first and agree with you. I had to keep an 8080 manual handy for a while to make any sense out of that compiler output.
I used Aztec C for the 68k on some embedded projects for work in the late 80's. The 68k version was a full-featured C implementation complete with IEEE-754 floating-point math and bit fields. I liked the fact that Aztec included the source code for parts of their libraries so one could write their own drivers for stdio devices. I still have that code somewhere...
yes - but as a Z80 programmer it was hard to use the 8080-oriented tooling on the MP/M machines. I mean there was a direct correspondence from 8080 to Z80 but man... 8080 was ugly.
I mean this stuff would have seemed absolutely incredible to my 18 year old self. And so very cool to see a reference to MP/M. Though I seem to recall needing to use 8080 mnemonics to work on MP/M?