
Halt and Catch Fire
I love reading these stories of early computing (waits for a grumpy old sod to complain it's not THAT old). Sad it is normally in obits, though. Sounds like the guy made a huge contribution to computing. Cheers.
Dr Bernard L Peuto, the architect of the Zilog Z8000 processor has died. The Z8000 was the big brother of the 8-bit Z80, used in the first wave of low cost microcomputers like the Spectrum and TRS80, though it had a starring role in its own right. As a 16-bit CPU it powered several Unix systems, including those from Commodore …
Our University m/f at Southampton in 1975 was still 1900 series. Room full of punch-card machines, one always going flat-out interpolating, as some jobs delivered their output on non-decoded punched-cards.
The new ICL 2970 didn't come on line until about 1976 or thereabouts.
My first job, just before my 18th birthday, was as a Data Control Clerk where I prepared batch jobs for an ICL 1901A. By the time I'd become an Operator it had had its ferrite core store replaced by transistors and had been upgraded to a 1901T. I remember the 1901T itself to be very solid and reliable. Less so, the 7502s that drove the 7561 terminals (the 'T' part of the suffix), which had to be frequently rebooted.
I think I can do better than that. Early 80s went to the Science Museum in London and they had an exhibition on early C20 Hollerith tabulator technology - including a manual single-card card-punch (with 12 buttons on a sort of carriage on top) (Not have heavy use, we had proper 029 punches and 'punch girls' for that)
I gleefully told my friends that we still had one in the department that was used daily!
[I'm sad that I can still remember 12-0-1-8-9 as being an important code as it was x00]
While I never personally used one, there were people in my first real job who did - it was easier to quickly change a parameter card in a stack than open a text editor, edit a file, and send the file to the mainframe.
They were used for batch control on an ICL29 series, but running the old ICL1900 OS (rewrite of old Assembler code in COBOL was under way to run under VME).
I wrote a simple parameter substitution program (replace %A - %Z) with appropriate input on a screen, that almost put paid to them.
I loved the Z8000. We were doing embedded development for a Z8000 based system, and used the ZEUS System 8000 (essentially a port of Unix System III) for development. It was a great chip for its time.
They came out with the Z80000 as their 32-bit chip, which was backward compatible with the Z8000, but it was too late. :(
I worked on the Olivetti systems at the time, designing a separate operating system for customers in Germany, Spain and the Netherlands. Also used the ZEUS System 8000 as our development system.
The exciting bit was that the Z8000 was chosen after a choice was made for the 68000. Probably Olivetti got extra money to use the Z8000. Thus we were tooled up and has "something" working for the 68000 and then the choice was made for the Z8000. We got first versions as well with loads of work-arounds and erratas.
Very exciting and always had my fingers crossed when demonstrating to customers....
waits for a grumpy old sod to complain it's not THAT old
The first computer I ever programmed had a Z80 in it. It was a Sinclair Spectrum, 48K RAM, rubber thump keyboard. I shall forever have a place in my heart for the Z80. It was a bloody good design as proven by its continuing use in products even now. Albeit clocked a bit faster than the dear ol' Speccy was :)
It's a shame the Z8000 never had the same successful career, but at least it was appreciated by some.
...although I seem to recall the cover of the edition I had being pink, and google tells me otherwise. Bearing in mind I was 11 or 12 at the time, my memory may be not as accurate as I would like to think.
My parents were too mean to buy a compiler for the Amstrad I had at the time, so I had to hand-compile my code, which, without fail, always crashed the first time. An early lesson in saving your work first.
If I remember rightly, LD A was 0x21 and RET was 0xC9.
"...although I seem to recall the cover of the edition I had being pink"
Mine was the more commonly available one with the Blue/Grey cover with the lightning bolt, however Google did also throw up a Radio Shack branded version titled "How to program the Z80", but with the same contents, that had a red (possibly pink?) and white cover.
I think that the reddish/pinkish one would have been the one I had as I had a Radio Shack unit. Fun times of writing and compiling code and seeing if it worked. One did have to get creative though since memory was limited and the OS and complier took up most of the memory. 16 and then 32K as an upgrade. I could be wrong as it was a long time ago.
Back then, the tape cassette sat next to the computer and "save early, save often" was hammered into my brain cells as when the code crashed, you would have to start over if it hadn't been saved.
Ah, having just googled it, this was the bad-boy I had...
Amstrad Machine Language for the Absolute Beginner. It had a nice section on twos-complement that many modern programmers could do with reading. The section that got the most dog-eared was the appendix at the back with the instruction tables.
...although I seem to recall the cover of the edition I had being pink, and google tells me otherwise.
Mine was blue/white with a picture of a 'planet' and a lightening bolt apparently gouging a canyon into it.
the Amstrad I had at the time
Which Amstrad did you have? I eventually moved from the Speccy to a CPC6128. Much as I loved the Speccy the CPC has to be my favourite ever computer. The Speccy was a good introduction to programming but the CPC was a more capable and interesting machine. Locomotive Software did a great job with the BIOS and the BASIC implementation.
Mind you I remember a letter in one of the Amstrad mags from someone wondering what CPC stood for. It was hilarious when the editor pointed out the obvious.
It was the CPC464 (pictured). It was a generally good piece of hardware, although with some questionable design decisions made in the name of cost-cutting, such as the 7-bit bus for the printer port which meant that you couldn't natively print anything in the top half of the character set (the high bit just got dropped by the hardware, you could set it in software to your herart's content). Some enterprising individuals cobbled together a hardware/software hack so that the port would be sent the low seven bits, and then the eight bit, and the hardware would glue them back together.
Wasn't there also something 'creative' about how you communicated with the sound chip and with the joystick? Something about putting one of the chips into an odd mode.
Ah, possibly this.
"The CPC keyboard is directly connected to the AY chip - Thus, the keyboard service routine (which runs as an interrupt service routine) is accessing the AY ports directly.
Accessing the sound chip sometimes needs non-atomic operations like "register select" + "register write" - If the interrupt service routine for the keyboard collides with such non-atomic access, it (or your own code) might become upset."
Dr. Peuto's name seems to be spelled correctly in the story, but not in the headline.
My first processor was the 6502, but I always kind of wished I'd have a chance to try both the Z80 and 6809. Maybe I'll find a simulator and putter around a bit. Low-level programming on the old 8-bit processors with their paucity of registers and addressing modes etc. always felt more like puzzle solving than most of what I've done since. Got a second taste of it with the 88K, which was an early exposed-pipeline RISC, and it's something I still remember fondly.
By the end of the 1980s I'd used all three (6502, Z80 and 6809), programming in assembly and building hardware around them for different projects. I grew up with the 6502, and that was where most of my 8-bit experience came from, a Z80 project got me my MSc, and the 6809 actually made me some money.
If you want to get that 'puzzle' spirit back try making up a small PCB with a microcontroller such as a PIC, and try fitting your application into the limited ROM available and making it work with the rather small amount of RAM on the devices. Since pretty much giving up 8-bit CPUs around 1990, I've played around with some 'puzzles', as you put it, in assembler on some 16F-series PICs.
Low-level programming on the old 8-bit processors with their paucity of registers and addressing modes etc. always felt more like puzzle solving than most of what I've done since.
You should have tried the Z80, there are quite a few more than the 6502... I never thought the zero page was an adequate substitute.
Ah yes, the old register exchange shuffle. And for hard core you could access the high and low bytes of the index registers. Actually using them for indexing was in any case quite slow. That was one reason why I didn't like the 6502. Having taught myself assembler on the Z80 having to constrain myself to only one register or trust in the speed of page zero felt weird.
The other reason was that I just preferred the syntax. <operation> <target>, [<source>] and ()s to indicate an address reference seems more intuitive.
LD HL,1234
LD A, (HL)
or
LD A, (1234)
For the uninitiated both read memory location 1234 into the accumulator. The use of HL demonstrates the Z80s partial support for 16 bit values. It could do 16 bit arithmetic:
LD HL,1234
LD DE, 5678,
ADD HL,DE
Although there were faster ways of doing it, thus betraying its 8-bit nature.
I had a lot of experience with the Z80, and I never actually work with this device. I believe at the time Intel's and Motorola migration to the 16 bit market involved using lookup tables in ROM for the instruction sets, where as people I knew who worked with the Z8000 said it was still based on the old discrete logic which result in a awful lot of bugs in the hardware, which were difficult to work around and repair. These issues resulted in them migrating mainly to the Motorola family, which at the the time was the preferred platform by engineers. (Damn IBM for there decisions).
There were loads of bugs in the hardware. And the chips were often updated so that we never knew whether the fixes were in or not. We made a sort of check for the known bugs and ran this as part of the start-up so that we knew which "version" we had. Then in our code we steered around them. Code was C and assembly with lots of strange checks.
Still preferred the Z8000 to the early Intel 16 bitters though.
Zilog used a Western Electric WE32100 based CPU board, designed i think with engineering assistance from AT&T, for their 32-bit Unix systems. Someone in one of the engineering teams at Zilog told me that they'd wanted to use the Z80k but developing & maintaining the Z8k based 800 h/w & ZEUS had been way too expensive, they needed a cheaper solution. The 32100 meant they could use the close to vanilla SVR2 from the 3B2. All the heavy lifting had been done, they only had to add support for the Zilog unique items - ZBus, I/O cards, peripherals etc.
The ZBus Interconnect backplane & card cage were retained between the 16 & 32 bit systems, so in theory all you needed to do was swap the CPU board, though iirc customers opted for the new scsi controller to replace the old E-SMD or ST506 disk controllers, & the QIC tape with larger capacity.
(Company i worked at in the 80's was the UK master reseller for Zilog computer systems. I used to fix the boards).
As the story points out, the Z-8000 was a completely different design from the Z-80. Both the Intel 8080 and Zilog Z-80 were single chip versions of the Datapoint 2200 CPU, the Z-80 team having split off from Intel after Intel declined to make the expanded later version.
See: Wikipedia article on Victor Poor, esp. reference 8, "Forgotten PC history: The true origins of the personal computer" --Computerworld, August 2008
https://web.archive.org/web/20080814215757/http://www.computerworld.com/action/article.do?command=printArticleBasic&articleId=9111341
I'll have to get my homebrew Z8001 computer up and running again 1 day. I used to have a system where my Z8001 connected to my ZX Spectrum via a parallel port I'd added to the latter, then the Spectrum communicated (via Interface 1) to my Amstrad PCW, to which I'd ported my Z8001 segmented mode assembler from Spectrum Basic to Turbo C.
Unfortunately, neither the keyboard nor the Interface 1 of my Spectrum currently work and I'd be surprised if the rubber bands(!) in the PCW haven't perished.
I've got a Z80 PIO waiting for me to do another Z280 board, then I could use that to interface to my Z8001.
I'd buy a Z320 (or Z80,000) if I saw 1 for a reasonable price. That's the 32-bit version of the Z8000.
The article starts off rather misleadingly, since the Z8000s don't bear much resemblance with the Z80, except for a confusing similarity of the assembly languages. I was always writing "DJNZ label" on the Z8001, forgetting that I had to specify a register (unlike on the Z80 when DJNZ always used B)... and DJNZ used a 16-bit register on the Z8000. There was also a DJNZB 8-bit version.