I used to run CP/M on a couple of Vector Graphics MZ S-100 computers back in the early 80's. I don't remember a ton about it, but I think I loved it. Nostalgia is like that.
I've rarely used the C128 mode in VICE, but according to the manual[1], x128 emulates a z80 too. It would be kind of cool to develop in linux and then "deploy" the code to x128's z80 emulator as a "production" environment.
Speaking of weird chips from that era, Amstrad CPC464's sold in Spain came with an extra 8KB RAM on board that was not connected to anywhere. It was put there only to avoid import tax for computers with 64KB RAM or less.
Even as late as the Amiga you got stuff like that. To this day you can probably find a PPC based accelerator for all models.
I guess the close to the metal, with little to no memory protection barriers, made these kinds of things easy to implement.
That said, some early GPUs were somewhat similar.
The 3DFX cards used pass through VGA cabling. And i personally owned a PowerVR card that wrote rendered frames back to the graphics card over the PCI buss.
IIRC the Z80 would be the first processor to wake up, too, and would retain control CP/M were being used but would shift control over to the other processor if either native or C64 mode were being used.
I had these machine, however, I never saw CP/M running it. As far I read, was weird, as not had a 80 column mode and the CP/M for it, had a weird trick of panning the screen so the user could see the right half of the 80 column screen.
My first computer was an Amstrad 8256, also known as the Joyce. It ran a custom word processing program straight on the metal, but also came with CP/M. I used it for Protext, later added a 3 1/2 floppy and a serial interface so I could connect to bbs's, and got a 16 bit dot matrix printer. I still kind of like CLI, you feel in more direct control of the computer.
I still have an Intertec Superbrain here. The looks of it alone make it worth keeping. It needs repairs, but I'm afraid the screen is dead (has stains on it), and then it's probably over. I would like to be able to copy the 5.25" disks, but how? I probably need an old DOS machine which can write to 3.5" floppy or something... Hobby project for later! ;-)
Back in the 80s this was my machine, for Wordstart, Dbase II and Turbo Pascal mostly. I was one of the only kids with such a machine, although soon the PC would take over.
Some of the 5.25' floppy drives for the 8-bit Atari [1] had the Z80 CPU and it was possible to run the CP/M on it. The Atari was serving as a terminal for its own disk drive.
Acorn's master plan for the BBC Micro series of computers was that they'd really just be the I/O terminals for another, much faster computer attached via a high-speed bus; there was an RPC interface to allow the second processor unit to make system calls on the I/O computer and use its peripherals.
The only second processor unit they released in bulk was a 6502 unit (3MHz with 62kB of free RAM and no interrupt overhead, so it was blisteringly fast by 8-bit standards). But there was also a Z80 unit, which would run CP/M.
The plan was evenutally scrapped in favour of the BBC Master, but they produced limited quantities of a 10MHz 32016 unit (running Panos) and was used to develop the original 8MHz ARM1.
I used to develop applications in COBOL for CP/M microcomputers, then Dataflex and then, for a short time, Turbo Pascal. Some customers ran inventory and accounts receivable applications off floppy disks. Lots of manual data entry too.
I used to develop apps in dBase II on CP/M back in the early to mid 80's. We used to have these lovely NEC computers (PC 8800 and APC) with dual 8" and 5.25" drives running CP/M. Later the boss bought me a Torch Z80 [0] co-processor, which ran a clone of CP/M called CPN, for my BBC Micro so I could fiddle about and work from home. We used to use WordStar as our code editor and would patch its printer drivers by hand to get them working with certain NEC and Juki printers. Then once day we bought an early PC clone (a Ferranti box) and things moved on.
Amazingly some semblance of Torch is still around [1]
DataFlex :) it's still around, but nowadays it supports less platforms. There's still a unix/linux version (3.2) but that hasn't been updated in many years.
The Windows version however is still going strong -version 18.2- and also supports web.
I used to program in dBase and Turbo Pascal around that time, but mostly skipped CP/M and started with that Microsoft clone albeit the IBM version.
Toward the end of my CP/M days (~1986/87) we had debugger named DSD for Dynamic Screen Debugger. Of course we take our modern IDEs for granted, but back then, being able to step one instruction to the next on screen, with the current instruction highlighted in inverse video, and all the registers and flags displayed in a box in one corner of the screen was pretty unbelievable.
This is where I worked (link below), they gave me my first job coding when I was 17. On the first page of the brochure, the card in the lower left was what we called the dpc-816. It had a Z80 and an 80186 chip on it. The silver heat sink covers the 80186 and the Z80 is just to the left, vertically oriented. I worked on parts of the BIOS for it. Both the 8 and 16 bit BIOSes scanned for a sequence, ESC Ctrl-\, which would switch the terminal from one CPU to the other. Both CPUs could execute simultaneously on the same bus, with shared RAM. They solved the arbitration problem very simply; they inverted the clock from the 80186 and fed the inverted clock into the Z80. This way whichever CPU was going for the bus first would pull the HLT pin on the other via some TTL logic, so on the next rising edge of the clock, the other chip would stop. When the bus cycle was complete, some TTL would drop the HLT pin.
The Research Machines 380Z (http://www.theregister.co.uk/2013/11/13/archaeologic_the_res...) is the machine I'll always (happily) associate with CP/M. That article says "even in 1982, the 380Z was a veteran", and that was still a couple of years before I ever got to use one. My school had two of them in the mid-to-late-80s that had long been seen as obsolete (having been replaced by a room of BBC micros) but were still sitting around and that nobody else wanted to use. I used to write text adventures and tank games on them and I had a plan for a crude version of Lords of Midnight that I'm pretty sure never got anywhere. I still have the floppies, though I very much doubt if they'd read any more.
>I still have the floppies, though I very much doubt if they'd read any more
I think you might be surprised. Those low-density floppies were remarkably DURABLE.
I have a whole pile of 8" and 5.25" floppies from the late 1970s / early 80s and even after decades of storage in less-than-ideal circumstances nearly all of them worked the last time I fed them to a TRS80 or my old Apple ][ about 5 years ago. (I was just as surprised the computer power supplies were still functional after this time, as electrolytic caps aren't exactly known for their longevity).
Looking at code written when I was 12 is equal parts bemusement and cringe. Text adventures, BBS (bulletin board systems), Video game copies of arcade hits (space invaders in Basic. Donkey Kong in 6502 Assembly, A half-written tempest clone...) all are terrible judged by today's standards, but I thought they were amazing at the time.
Speaking of amazement, I have no idea how I was able to accomplish anything without a search function, autocomplete, or google search. Just a blinking block in a text editor.
Another alternative to building under an emulated CP/M environment is to cross-build directly under Linux. If you need something that can assemble code intended for LASM you can use this: http://www.insentricity.com/a.cl/259
A box from Jameco with a few Z80 chips, some SRAM and some EEPROMS showed up on my doorstep yesterday morning. Yep, I'm going to take a stab at doing a homebrew Z80 based machine. :-)
Assuming I get something useful built, I guess I'll try to get CP/M up and running on it (it's that or try writing my own OS, I suppose), so this may be very useful.
I know what you're thinking... "why, for the love of FSM, would you build an 8-bit microcomputer today?" In my case, it's partly for fun, and largely for educational purposes. I've been a software guy my whole career, and while I've dabbled with some hobby electronics stuff, I never really learned a lot about the low level computer architecture stuff, and the hardware aspects. So I want the understanding that comes from literally building a machine from IC's. I want to understand more about how the data bus works, how I/O works, the timer for the CPU, interrupts at the hardware level etc.
And interestingly enough... I've done some searching and have found some cool projects where people have built Z80 machines and added things like USB support, PS/2 keyboard support, SD card interfaces, etc. Not bad for a CPU that's 30 some odd years out of date.
Yeah, I'm pretty excited. I've wanted to do something like this for a long time, and finally quit dragging my feet. Well, I got as far as ordering some books and some of the components I'll need.
The first two things I'm planning to do are:
1. implement a Z80 test circuit that will let me just blink some LED's or whatever they do. This is apparently one of the most basic things you can do with a Z80 and doesn't require much in the way of supporting components and what-not.
2. Figure out how to write bytes to, and read bytes from, an EEPROM using an Arduino. I found a bunch of Youtube videos and websites on this topic, to use as resources.
Sometime after that, I'll start investigating what it takes to read a program off the EEPROM and execute it.
1. Indeed; that requires only very basic components; I would recommend a cheap digiscope + analog scope so you need even less components to have fun. The z80 is so slow that you can use very cheap scopes.
2. I bought an 80s EPROM writer from a forum for E1 which I use for that; because it's so old (and slow), you can actually understand and measure what everything does.
+1 on the cheap scope recommendation. Without seeing your signals, solving a problem with shoving bits around is (educated) guesswork. Nothing like struggling for days with a weird fault or corrupted xmit only to throw a scope on a bus line and see in a few seconds where the problem lies. (voice of experience speaking).
And here's the good part: These days, a basic scope is incredibly cheap!
Check ebay and/or amazon for a DSO138. It's a simple creature but ideal for a project such as a Z80. There are two variants of the DSO138 - kit form and pre-assembled. Prices are an astounding $25/$30 respectively.
Unless you just want to spend 4 hours soldering (not a bad thing), spend the extra $5 and get the prebuilt. And make sure it has the latest firmware (cleaned up some bugs, improved centering, and reduced noise).
And @mindcrime - please blog that project! I know I speak for loads of others when I say I'd love to watch your progress. I never get tired of seeing others do cool stuff I don't have time for anymore. :)
I've been eying one of those Rigol DSO's that people seem to really like. They're not crazy expensive, but get pretty good reviews. I think I'll wind up getting a standalone frequency counter as well, at some point.
Well, back in the day, when Z80 systems were still a thing, I actually built a soundcard for one such system. Wavetable synthesis, DAC-controlled envelope, did the whole nine yards from scratch, starting with circuit diagrams drawn on the proverbial napkin. Ended up using it to make theremin-like sounds. I was still in school and it was a fun project.
Cool, good luck. Blog about it :) It'll be a lot of fun indeed and it gives you incredible magic powers of actually understanding computers.
I am currently reading Uzix[0] and the disassembly of Symbos[1] to do some OS dev on Z80 machines which, in the end, will hopefully run on my own homebrew hardware.
43 comments
[ 2.7 ms ] story [ 94.7 ms ] thread[1] http://www.cs.cmu.edu/~dsladic/vice/doc/html/vice_2.html#SEC...
I guess the close to the metal, with little to no memory protection barriers, made these kinds of things easy to implement.
That said, some early GPUs were somewhat similar.
The 3DFX cards used pass through VGA cabling. And i personally owned a PowerVR card that wrote rendered frames back to the graphics card over the PCI buss.
Could only see it at a friend's place, given that I only had access to a Timex 2068 and a ZX Spectrum 48K, none of them suitable for CP/M.
Back in the 80s this was my machine, for Wordstart, Dbase II and Turbo Pascal mostly. I was one of the only kids with such a machine, although soon the PC would take over.
[1] http://www.retrobits.net/atari/indus.shtml
The only second processor unit they released in bulk was a 6502 unit (3MHz with 62kB of free RAM and no interrupt overhead, so it was blisteringly fast by 8-bit standards). But there was also a Z80 unit, which would run CP/M.
http://chrisacorns.computinghistory.org.uk/8bit_Upgrades/Aco...
The plan was evenutally scrapped in favour of the BBC Master, but they produced limited quantities of a 10MHz 32016 unit (running Panos) and was used to develop the original 8MHz ARM1.
http://www.mci.org.br/micro/prologica/s700.html
http://www.mci.org.br/micro/prologica/s700_ms_1g.jpg
Amazingly some semblance of Torch is still around [1]
[0]: https://en.wikipedia.org/wiki/Torch_Computers
[1]: http://www.torchcomputers.co.uk/
The Windows version however is still going strong -version 18.2- and also supports web.
I used to program in dBase and Turbo Pascal around that time, but mostly skipped CP/M and started with that Microsoft clone albeit the IBM version.
http://www.vintagecomputer.net/ace/ACEDiscovery500Ads.pdf
Love the industrial design of the 380Z as well.
I think you might be surprised. Those low-density floppies were remarkably DURABLE.
I have a whole pile of 8" and 5.25" floppies from the late 1970s / early 80s and even after decades of storage in less-than-ideal circumstances nearly all of them worked the last time I fed them to a TRS80 or my old Apple ][ about 5 years ago. (I was just as surprised the computer power supplies were still functional after this time, as electrolytic caps aren't exactly known for their longevity).
Looking at code written when I was 12 is equal parts bemusement and cringe. Text adventures, BBS (bulletin board systems), Video game copies of arcade hits (space invaders in Basic. Donkey Kong in 6502 Assembly, A half-written tempest clone...) all are terrible judged by today's standards, but I thought they were amazing at the time.
Speaking of amazement, I have no idea how I was able to accomplish anything without a search function, autocomplete, or google search. Just a blinking block in a text editor.
Assuming I get something useful built, I guess I'll try to get CP/M up and running on it (it's that or try writing my own OS, I suppose), so this may be very useful.
I know what you're thinking... "why, for the love of FSM, would you build an 8-bit microcomputer today?" In my case, it's partly for fun, and largely for educational purposes. I've been a software guy my whole career, and while I've dabbled with some hobby electronics stuff, I never really learned a lot about the low level computer architecture stuff, and the hardware aspects. So I want the understanding that comes from literally building a machine from IC's. I want to understand more about how the data bus works, how I/O works, the timer for the CPU, interrupts at the hardware level etc.
And interestingly enough... I've done some searching and have found some cool projects where people have built Z80 machines and added things like USB support, PS/2 keyboard support, SD card interfaces, etc. Not bad for a CPU that's 30 some odd years out of date.
The first two things I'm planning to do are:
1. implement a Z80 test circuit that will let me just blink some LED's or whatever they do. This is apparently one of the most basic things you can do with a Z80 and doesn't require much in the way of supporting components and what-not.
2. Figure out how to write bytes to, and read bytes from, an EEPROM using an Arduino. I found a bunch of Youtube videos and websites on this topic, to use as resources.
Sometime after that, I'll start investigating what it takes to read a program off the EEPROM and execute it.
2. I bought an 80s EPROM writer from a forum for E1 which I use for that; because it's so old (and slow), you can actually understand and measure what everything does.
And here's the good part: These days, a basic scope is incredibly cheap!
Check ebay and/or amazon for a DSO138. It's a simple creature but ideal for a project such as a Z80. There are two variants of the DSO138 - kit form and pre-assembled. Prices are an astounding $25/$30 respectively.
Unless you just want to spend 4 hours soldering (not a bad thing), spend the extra $5 and get the prebuilt. And make sure it has the latest firmware (cleaned up some bugs, improved centering, and reduced noise).
And @mindcrime - please blog that project! I know I speak for loads of others when I say I'd love to watch your progress. I never get tired of seeing others do cool stuff I don't have time for anymore. :)
I am currently reading Uzix[0] and the disassembly of Symbos[1] to do some OS dev on Z80 machines which, in the end, will hopefully run on my own homebrew hardware.
[0] https://github.com/marioaugustorama/uzix-kernel [1] http://symbos.de/
Edit: forgot; https://github.com/EtchedPixels/FUZIX