A single board computer using Z180

Well, that’s my concern: once they’ve gone to all the trouble to implement a separate protocol for talking to the printer to do all that other stuff, and they’re requiring custom drivers anyway, would they bother to do the additional work to support “traditional” IEEE-1284 printing?

No, you’d need a /dev/usb1284 or /dev/usbprinter or whatever device that’s “attached” to a particular interface and endpoint on a USB device that supports the printer protocol/interface. (The OS USB stack has to query the device to find out what it supports; there’s nothing stopping a device from being both a printer and a keyboard, for example.)

The Linux kernel does support this for serial ports: you plug in a USB serial adapter and /dev/ttyUSB0 appears, looking and acting just like any serial TTY interface. But Linux doesn’t appear to support this for printers, last I checked. I’ve got a few USB printer adapters (mainly because, at $1.50 each, they’re the cheapest way to get 36-pin micro-ribbon plugs!) and they didn’t come up as new “parallel ports” of any kind as far as I could tell; I had write a C program using libusb to talk to them.

Hui-Chien Shen (aka Bill Shen aka Plasmo), designer of the Z80SBC64 kit, has evolved a new smaller and slightly faster (22Mz Z80) design, the ZRCC.


It still uses an Altera EPM7064S CPLD as a combined glue logic, simple serial port and boot ROM to load CP/M from a CF card, but with the smaller RC2014-lite expansion connector.

He had been aiming for a break-even target of $10 for a kit, but has settled on a target of $20 for a kit and $30 assembled (plus postage, $5 in US, $15 elsewhere). It looks like he will have some 20 kits ready soon, though I expect they will sell very quickly:- RC2014 Users Club He does says that he does not plan to sell the kit long term:-

I was looking at the international shipping to see whether I can find a cheaper rate, but USPS 1st Class International is the cheapest available at $15, and it is slow; that’s really expensive in the context of $20 kit. Alternatively, since all the design info are published, please feel free to have the pc board made yourself and order parts yourself. This makes good financial sense for European hobbyists. I have no problem with you selling them at whatever price you feel is appropriate. I don’t plan to sell the kit long term, so I’ll be pleased if one or more people want to sell it and priced to make it worth your efforts.

1 Like

I have one of those and it is a GREAT system.
If people haven’t looked at Plasmos stuff do it now.
He has a lot of really nice retro projects.
RetroBrewComputers site and forum

2 Likes

Indeed so! See
https://www.retrobrewcomputers.org/doku.php?id=builderpages:plasmo:start

(Welcome @WolfgangBlack!)

1 Like

Thanks!
This ZRCC system is small but it does CP/M 2.2 and 3 and he talked about ROMWBW
but hasn’t that hasn’t happened as it would have to be modded to work.
It runs at 22MHz with 128K banked RAM so it’s a monster CP/M.
Looks like two ports but I don’t know if the 2nd one is working and he uses the other
one with a cp2012 adapter.

1 Like

How do you get more that about 48KB for CP/M?

You bank in the BDOS/BIOS, thus freeing up more space for the TPA. I haven’t done it, and it would take some juggling, but it’s possible.

I thought that only gave you about a 56K TPA.
You need a bit of ram to your stack,bios and cp/m
hooks.
The 8080A did give memory acess type decoding
so you could have a 64KB program , data and stack segment. I never heard of anybody doing that.
Ben.

For CP/M 2.2 some systems used ROMs for the BIOS, and could switch out ROM and also video memory to increase the TPA size. CP/M 3.0, aka CP/M Plus, can bank-switch parts of the BDOS too, and used MP/M’s memory management for single users. Many CP/M 3 systems had 128KB of RAM, including the Basis-108 system I used back in the day. To run CP/M 3 in banked mode needs 96KB or more. Banked mode has some more features too, e.g. password-protected files. The CP/M 3 System Guide says that (due to the fact that 11KB of the BDOS can be switched out) the effective TPA can be 60KB or more. And if you have a DMA controller which can copy between banks you could even keep data buffers in alternate banks.cpm3-memory

3 Likes

I did have acess to pain CP/M machine once
but it had interesting bug, The 8" floppy would
stick seeking a track. You had to bang the drive to
reset it. You hit the drive too hard, and the S100 cards
jiggle and and reset the the computer, I never really
did look at cp/m after that.

I ordered one of these SC130 kits a while ago from Tindie ( after seeing this post), and finally got around to assembling it. All done in an afternoon, clear instructions and a quality board made it an easy and pleasurable build (but haven’t fitted all the sockets yet).


It all worked first time as expected, but now I regret giving away my CP/M and Z80 books.

So what to do with it now?

1 Like

Benchmark some Basics! There’s MBasic, BBC Basic, and Mallard Basic, at least.

Yea, that’s always the nit isn’t it?

For some, it all stops when the thing boots “Successful assembly!”. Obviously perhaps more interesting the more difficult the project is. I read some vintage forums and look at the work folks go through to get their legacy machines to boot up. Much less getting some real legacy project like a legacy mini computer or something.

But in the end, computers are tools and without application, tend to sit on the shelf.

I considered getting one of those boards and assembling it. But I’ve also done some work with machine simulators. And while these z80 boards are pretty neat, they’re functional to be sure, and perhaps a nice platform to do some hardware hacking from, they lack something for me.

After playing around with this stuff for a while, myself, I’m striving to get my SB180 board up. And I’m striving to get it going simply because it’s a floppy based system.

I’ve learned a few things working with the simulators and such.

One, box stock CP/M is quite awful as an OS. It’s really and truly is designed for a floppy based system. Using CP/M with a hard drive is borderline a disaster. Have 10’s of MB of files in a single flat structure is…terrible.

Now, to be fair, CP/M has User areas which can be used to break up the disk. But each of these User Areas is separate, and support for them is weak to say the least. Consider that if you want to use the ubiquitous PIP command (which is not part of the CP/M CPP, but must be run from disk), if your PIP.COM file is in User Area 0, it’s not accessible to, say, User Area 1. And this means that to use it, you need to make a copy of PIP.COM to the other User Areas where you want to access it. And that would suggest that you would use PIP to copy itself (because PIP is the utility you use to copy files on CP/M).

But PIP has no concept of User Areas. You can’t use PIP to copy from one User Area to another. Instead, you have to load PIP in to memory, switch User Areas, then SAVE the memory back out to a file. Hardly intuitive, and you have to do that for any other utility you want in the other User Areas.

And that’s just a single example. Now, if you’re running the classic, two floppy CP/M, with limited size floppies, it’s a much different world. You wouldn’t use User Areas. But part and parcel to that experience is being able to swap floppies. Using a single floppy disk as an organizational unit.

This is something you can’t easily do on the modern Z80s, because nobody does floppies anymore. (With good reason.) They’re not really set up for yanking Flash cards in and out. And a 32G flash card makes for a pretty lousy floppy. So, you end up with a floppy based OS with no floppies.

Mind, if you go beyond CP/M, such as Z system, or find other utilities, they all address issues like this to some degree. But out of the box, CP/M and large drives is just not a good experience.

Which brings us back to the SB180. Which does have floppies, and will give me a more “authentic” experience of trying to write software in that environment.

It was fun doing some BASIC on that fellows Altair that he’s live streaming.

So, that’s my goal. To actually do work on an actual system, with their tools, and their constraints. Build a fire rubbing two sticks together. Limited memory, slow CPUs, S L O W floppy systems. Folks used to get real work done on these things, so I’m going to try.

Conider the thread about the mini Unix on an LSI-11 with, what, 28K of RAM? A system that can regenerate itself, with a C compiler, run two tasks, and floppy disks, with 28K of RAM? Interesting challenge.

But with CP/M standard floppies were 8". Way more the information that a APPLE or TRS-80 had,
Was Unix the only OS for the PDP 11 that had a C compiler
in the late 1970’s?

The most common CP/M installations were all on 5 1/4 SD or DD floppies. Microsoft (or at least Bill Gates) has claimed (p.20, rightmost column) that the single largest homogeneous installation base was Apple ][ machines with the Microsoft Softcard installed. Certainly there were many thousands of Osborne, Kaypro, and TRS-80 machines running CP/M – many more than there ever were IMSAI or MITS machines with 8" floppy disks!

I don’t know what size 8" floppies were popular on those early, 8" CP?M machines, but I have to imagine it was not the end-of-life 1 MB+ 8" floppies used on larger computers. SD 8" disks were 256-512 kB, which is not dissimilar from DD 5 1/4" disks. It would be interesting to see numbers on this.

I have spent quite a bit of time running RT-11 on the PDP-11 with 5 MB and 10 MB RL01 and RL02 disks. RT-11, like CP/M, has a flat filesystem with no directory hierarchy whatsoever. It can be painful simply to list the disk, particularly with a 9600 bps or slower terminal interface (or with the VT-100 smooth scrolling!). Later CP/M machines often had much faster, memory-mapped CRT displays, which at least made the listing faster, but they didn’t necessarily make it easier to navigate hundreds of files on a flat disk structure.

As far as other systems with C compilers in the late 70s, many of the minicomputer operating systems (such as DEC’s RSX-11M) had C support, and by the early 1980s C was certainly available for micros, including for CP/M.

Leor Zolman has claimed that his BDS C, released in 1979, was the first C compiler for CP/M. Like many other early micro C implementations (such as Small C, first appearing in Dr Dobb’s Journal (go to p. 190) in May of 1980), it was not quite a “complete” C.

1 Like

Does any one make a single board computer, that is 6809
based and not a COCO emulation? OS/9 level 2 was a great
little multitasking OS. I would be nice to compare that with the Z180 board.

Thanks for the observations on PIP.COM and the implications of user areas!
Regarding modern systems, wouldn’t it make sense to partition large modern drives into virtual floppies? These could even be folders/directories converted on the fly to floppy images by the firmware or the emulator. So, instead of changing directories from inside the OS, you’d rather change them from the outside to much the same effect. (It should be possible to add commands for changing or creating virtual floppies via some basic protocol.)

Edit: Mind that there are also logical drives (up to 16 per physical drive, up to 8 MB each, numbered only), which do pretty much the same thing.

One of the standard things to do in the land of Acorn is to use a container file with slots for some hundreds of floppies. Commonly any given game or application has a floppy to itself, and one mounts one, or up to four, floppy images from the container file onto ‘disk drives’ for access. It works very well, with the caveat that a utility program is needed to manipulate the images into and out of the container file.

Using these Benchmarks with the BASIC in the ROM. My rough timings came out as :-

System BM1 BM2 BM3 BM4 BM5 BM6 BM7 BM8 Avg
SC130 0.2 1.0 1.9 1.9 2.1 3.0 4.1 6.8
BBC (B ?) 0.6 3.2 8.1 8.8 9.9 14.3 21.9 48 14.3

So it seems to be about five times faster than the BBC B.

1 Like

Well it certainly possible, and, as you mentioned, the slicing up of large volumes in to 8MB chunks.

The way to handle it would probably be through some low level BIOS facility, with a custom app to do the swapping (i.e. it talks to the hardware, or tweaks the BIOS settings to look at the different chunks on the volume, and “mounts” them).

But, for example, the simulator I use, you can’t “swap floppies” behind its back. You have to shut down and restart. Mind, not that this is that big of a deal. In fact, on CP/M that essentially what you do when you swap floppies anyway, use ^C which is essentially a warm restart.

But you do lose some physicality of the experience.

With the simulator, I find the experience kind of ungainly, to be honest. Partly it’s the interface, partly its my unfamiliarity with it, and partly it’s the limited toolset avaiable in CP/M in the first place.