• Please review our updated Terms and Rules here

Teensy-based series of S-100 cards

The echo chamber of making an expansion card? We don't have the same definition of the word then. Fooling around with old hardware is not politics or an ideology. I don't get the point.
 
Last edited by a moderator:
I think a software-defined expansion card would be a great idea. It'd make experimenting with hard-to-find boards much more accessible. I wish I had something like that when I was messing around with OSI stuff. Trying out boards before buying/building them, and testing hardware modifications in software would have save me a lot of time on some projects.

There are some very non-constructive remarks and comments in this thread. Just because you don't find a particular method of enjoying the hobby "fun" doesn't mean you should rain on everyone else's parade.
 
then why present yourself as a vintage computer enthusiast? sounds like you're not into vintage hardware anymore and you've moved on
Time out.

Just because someone doesn't want to futz with the hardware (or the software) anymore doesn't mean they aren't able to participate.
I ain't paying what people want for an Altair 8800, hence why I paid $500 for an Altair Clone. The modern solution was cheaper and with the lid on, you'd never know.*

*I have my reservations though for that new commodore 64, but apples to oranges here
 
This isn't about building something that is just slapping an
SOC or FPGA but more like LPC instead of having a whole ISA
bus in a system.

So, just to call this out: busses like LPC require a state machine to decode them, and far as I can tell there aren't simple glue chips you can buy off the shelf to turn LPC into something that you can easily use to build some kind of homebrew peripheral. The bus was designed to go from a Northbridge to one (or rarely more) legacy-providing SuperIO chips (and sometimes a specialized LPC flash ROM), and all the glue necessary to use the bus exists inside the ASICs. So... unless someone sells off the shelf chips to interface with a bus like this and break it out to something like GPIO pins it's basically useless for homebrewers unless they intend to use it solely as an interconnect between programmable logic? There are verilog implementations of LPC you can download easily enough, sure, but... let's get real here, if you're already up to FPGA-level tech what is the point of having a bus between two FPGAs? Once you get off the bus what you really want is "GPIO", and if GPIO is what you want then why not just slap a microcontroller with plenty of GPIO pins down to handle that? (And do networking with an even *simpler* wiring arrangement to the central control node, assuming you even need it?)

I dunno, this just seems like it's a non-sequitur to me if we're talking about "hobby fun time"... which let's be frank, is not about maximum efficiency in the first place, but... okay, let's pretend we *do* care about efficiency and compare this to a dumb parallel bus? In our scenario here we're going to say we have some kind of "hobby computer", and we want to whip up a peripheral to do some kind of real-world interfacing. For this scenario let's say we want a card that drives some relays to control, say, a sprinkler system. IE, a pretty brain dead application. So let's consider some options and figure out where a "new bus" fits into this:

1: It's 1980, or you're pretending you're living in 1980, and you're looking at a simple dumb parallel bus on a computer with an 8 bit CPU. To interface your relays to this you need an address decoder on the parallel address lines, a latch on the data lines to hold the on/off state for your sprinkler relays, and an open collector buffer or opto-isolator to drive the relays. The most complicated thing here is the address decoder, but that's going to be just a few chips even it you don't use something like a PAL, right? (Unless you're using a bus that has slot enable signals, like an Apple II, in which case you pretty much just need the latch.) So... in this scenario your simple peripheral card is going to need like 4-6 TTL chips, and an ape can solder it together on perfboard. The resulting board lets you toggle the sprinklers on and off with a POKE or OUT command in BASIC, so there you go, off to the races. It's stupidly oldschool, but it seems to me like it's still a pretty reasonable and practical solution to this problem.

2: Your computer is a Raspberry Pi running Linux. This board, which you bought for $35 (unless it's a zero, in which case it was $15), has a header on it which has GPIO pins on it. So you sit down for an hour with the interwebs, read the howtos on how to configure some of those GPIO pins into an output port, and also run into a bunch of grumbling about how preassembled relay boards (which you were thinking of using because they're dirt chip) usually expect 5v logic inputs, but also find a million different ways to handle that. So, boom, you're wetting your lawn in python in no time and you still didn't need more than the most basic soldering/breadboard skills to do it. Easy Peasy.

3: Your computer is an Arduino-style microcontroller board bristling with GPIO ports, because it occurs to you it's dumb for you to have a keyboard and monitor on a thing that's running your sprinkler. So... it's basically just option 2 but lower stakes because your whole computer basically costs nothing. ($3 verses $15.) Hook up the USB cable, bang up some C code in the IDE, and again, problem solved without needing a "bus" at all.

4: You have either 2 or 3 for your host computer, but before you get to work breadboarding your design using parallel GPIO pins to directly map to each relay you discover you can buy a four-channel relay board that already has an i2c bus chip on it for only $13. Okay, fine, forget the breadboarding, just do that; I can control 8 of these boards with just two pins. Man, at this point this project is getting so easy I'm not sure it's even fun anymore...

5: FINALLY: You have this weird "hobby computer" that has a variant of LPC on it as a "general purpose bus", but no GPIO already broken out. Hrrrm. LPC doesn't have any breadboard-friendly discrete bridge chips that will decode and break out some port lines for you, so I guess you're going to get to work surface-mount (or BGA) soldering an FPGA or CPLD onto a custom board to be able to interface to this bus connector, programming that device with a payload that has the bus/docoding logic, along with an addressable latch for the port, and break out some pins to buffer/voltage shift for your relay module. So... congratulations, we did the job, but the CPLDs and custom circuit boards and precision soldering just completely broke the skill curve compared to the all the other options, in a profoundly negative direction.

I think the point is made here: where is the need for with some *new* kind of "hobby bus" that requires nonexistent bridge chips to actually break it down and doesn't do anything you can't already do better with existing options? (And one of those options that's already better is, in fact, a brain-dead parallel 8-bit bus. It's easy to understand, it doesn't require any specialized chips to interface with it, and can be breadboard friendly.) If you want a modern modular hobby computer there's a huge ecosystem of SPI and i2c peripherals, including options for breaking down these busses into parallel GPIO pins for breadboarding, and you can drive these with nearly any modern microcontroller or SOC, there's no need to invent some other bus. And conversely, the microcontroller model of just slapping a cheap ARM core with GPIO ports in front of whatever you want to control basically negates the need for busses at all. Wifi/Bluetooth-equipped ESP32 microcontrollers with a decent amount of GPIO sell for less than $5; if you want a modern modular system all the pieces are there right now and you don't even need wires. The lack of a "modern bus" just does not seem like a serious problem.

This all seems like a weird soap box to get up on in a thread that's specifically about building a card for the S-100 bus. I mean, it kind of goes without saying that anyone reading this likely *to* specifically be interested in this old hardware? I mean, sure, we can argue all day about whether S-100 is a "good" bus or not (objectively, it's not), but it is certainly historically significant and there are people that want to keep S-100-based computers "alive" in a physical sense, and that's going to mean building things to fit the slots despite all the warts. I'm personally not a *huge* fan of "software defined cards" (while completely being aware that they can serve a legit purpose for some people) but I can certainly see why *someone* might want it.
 
Preserving and fooling around with ewaste shouldn't have a bound of "Ewwwww, I hate it, let's ignore it." that we shouldn't cross.

I never said it had to, but the reality is that the argument of "X is obsolescent, let's move on" applies to pretty much every interest/topic on here.

IMHO old technology isn't e-waste until there is no use for it and it ends up getting tossed it in a landfill. Anything broken beyond repair definitely falls in that category.
 
Just brainstorming, how about: A generic platform to support hobbyist endeavors. Easily reconfigurable. Supports both software and hardware experimentation.
CPU agnostic. Supports multiple busses with appropriate adapters. Lots of breadboard space.
Front panel, maybe even system driven flat panel with a simple o-scope display, etc.
The last thing I will say about this.
What I was suggesting was a system built on 3.3v serial interconnects
implemented with tiny, cheap microcontrollers to implement the bus
protocol. No 3v-5v level shifting necessary unless you are building a
interface to a 5v part or legacy bus adapter. Modern chips have a shortage of
I/O pins. Connect a bunch of little boards together to extend system
functionality and configureability. Make a system module's programming
model as sophisticated as you want.
Build bus state monitoring into the bus microcontrollers.
Eliminate the need for wide width logic analyzers and make all internal
card state visible and debuggable.
and...
Keep system software simple and understandable by one human
which is the heart of the retrocomputing experience.

<end of line>
 
What I was suggesting was a system built on 3.3v serial interconnects
implemented with tiny, cheap microcontrollers to implement the bus
protocol. No 3v-5v level shifting necessary unless you are building a
interface to a 5v part or legacy bus adapter. Modern chips have a shortage of
I/O pins. Connect a bunch of little boards together to extend system
functionality and configureability. Make a system module's programming
model as sophisticated as you want.
Build bus state monitoring into the bus microcontrollers.
Eliminate the need for wide width logic analyzers and make all internal
card state visible and debuggable.

If you need multiple nodes there are oodles of options for doing mesh networks with low pin count controllers; depending on scale and speed requirements you could use CAN bus, 1-wire, i2c, RS-485, wirelessly with WiFi, Bluetooth, RF24… etc. (RF24 is pretty neat; it can run at up to 2Mb and have a ~100 meter range, with pre-built modules costing about a dollar.)

*shrug* Anyway, if this is a thing someone wants it exists. Take for instance the “Agon Light”, which is an eZ80 sharing a board with an ESP32 and communicating over high speed serial. It’s programmed to act roughly like an oldskool hobby computer but it’s all networked communication on a serial link. It also has a header with GPIO and serial pins on it, so you can just tack on whatever tickles your fancy, including, presumably, an infinite number of other MCUs networked via the peering protocol of your choice.
 
I was experimenting with high-speed SPI on 6502 using a 6522. All it needs is an external shift register hooked up to port B (like a 75HC164), and the world is your oyster when it comes to SPI peripherals. There were some extremely powerful SPI -> I2C/UART/GPIO chips that I was looking at that would have been neat to hook up to it.

The last thing I will say about this.
What I was suggesting was a system built on 3.3v serial interconnects
implemented with tiny, cheap microcontrollers to implement the bus
protocol. No 3v-5v level shifting necessary unless you are building a
interface to a 5v part or legacy bus adapter. Modern chips have a shortage of
I/O pins. Connect a bunch of little boards together to extend system
functionality and configureability. Make a system module's programming
model as sophisticated as you want.
Build bus state monitoring into the bus microcontrollers.
Eliminate the need for wide width logic analyzers and make all internal
card state visible and debuggable.
and...
Keep system software simple and understandable by one human
which is the heart of the retrocomputing experience.

<end of line>
I like this idea a lot. It's something I've thought about a bit in the past but never devoted too much effort to. I'd really like to find a microcontroller with plenty of RAM that could be "bootstrapped" in a chain by a master microcontroller, akin to the way Transputers operated.
Maybe it'd be worth starting a thread to brainstorm this idea some more?
 
CAN bus has several flavors.

CAN v2.0 is oriented to lower speed data rates and has a fixed 8 byte packet size. The CAN bus controller handles the multidrop (with priority) access and error detection/retry for you. At $previous_job, we used it in medical devices and ran a higher level protocol on top of CAN v2.0 for managing larger data packet transfers between the SBC and interface MCUs that interacted with the device components.

CAN FD support 64 byte packets and flexible data rates. Then there's a CAN XL which, according to Wikipedia, bridges the gap between CAN FD and Ethernet. I've not personally used these last two, and you really need a chip that has the CAN controller in it to make it easier to use.
 
If you make a new series of cards based upon 3.3v logic, then they won't be S-100 IEEE696 compatible. So why go to the trouble of using a 100 pin connector? Surely you won't try to use the same timing signals on the same pins unless you wish to end up with the same issues that plague the original bus such as signals that were most useful for 8080 processors and even the upgraded to Z80 CPU's had to match. Match the timing of an 8080 CPU that few were using after the very early non-IEEE compatible designs. The people on the S100.com struggle with such issues with their 386/486 and other new boards.
 
@DeltaDon Why would anyone want to put a 386/486 in an S-100 system?

Surely it would be much easier to just go with an ISA backplane and use vintage/modern ISA cards?

I can understand the desire to make use of retro/vintage hardware where possible, but at some point it has to be reaching a significant degree of silly...
 
I can understand the desire to make use of retro/vintage hardware where possible, but at some point it has to be reaching a significant degree of silly...

Honestly I'd kind of argue that extending S100 to 16 bit with IEEE696 was kind of silly, simply because of what a hack it was and by the time it was formulated there were already better busses like MultiBus and VME around for the kind of "big iron micros" that S100 was already becoming confined to by the end of the 1970's.

Anyway, FWIW, there were companies stuffing 80286 and Motorola 68020 cards into the S100 bus for... reasons, through the 1980's, and I think there was at least one original-era 80386 card, so a homebrew 486 card isn't *that* far out of bounds compared to what they actually did in the day. (Ironically perhaps the 486 is actually better optimized for this than the 386, because it has built-in bus sizing support that lets you mix bus widths with less glue.) But yes, it's still a little hard to argue that this objectively made a lot of "sense". I think even for the companies making these things the biggest argument was simply inertia.

Two of the last companies still clinging to S100 by the mid-80s, Cromemco and CompuPro, had transitioned into making positively eye-watering-ly expensive "micro-mainframes" that would typically cost well into the five figure ballpark fully spec'ed out and be built of out an eclectictic collection of high-speed CPU cards mated to specialized I/O boards. For instance, Cromemco's last hurrah was selling the USAF a heap of CS-250 S100 machines with 16mhz 68020 CPUs for mission support and logistics handling, where they lasted into the mid-1990's. (More prosiacally, machines from Cromemco and CompuPro were pretty common in places like hospitals, warehouses, stock exchanges, etc, where you wanted to hook up a lot of terminals to a centralized database. Both companies sold I/O cards with heaps of serial/parallel ports and offered multiuser OS frameworks to facilitate the custom application development.) The thing is, though, it's not as if S100 was particularly well optimized for doing these things, it was just what these companies happened to be wedded to.

In practice these specialized machines would be built exclusively from cards from the one company, so the compatibility problems S100 was rife with generally wouldn't really be an issue. It's worth noting that in some cases late production machines from these companies would do things like omit the voltage regulators from the individual interface cards and instead supply centrally regulated power on the rails, because after the advent of switching power supplies that made *way* more sense. If you pull a card out of one of these and stick it in standard S100 chassis you'll let all the magic smoke out. Essentially these were proprietary systems, the fact that they use the S100 connector is almost incidental.
 
Last edited:
Anyway, FWIW, there were companies stuffing 80286 and Motorola 68020 cards into the S100 bus for... reasons, through the 1980's, and I think there was at least one original-era 80386 card, so a homebrew 486 card isn't *that* far out of bounds compared to what they actually did in the day. (Ironically perhaps the 486 is actually better optimized for this than the 386, because it has built-in bus sizing support that lets you mix bus widths with less glue.) But yes, it's still a little hard to argue that this objectively made a lot of "sense". I think even for the companies making this thing the biggest argument was simply inertia.
Indeed... it is not well known that a few companies were still making money selling S100 systems until around 1990 which is roughly when Cromemco and CompuPro stopped. Certainly there were much better platforms at that point in time, but S100 was the only thing these companies knew how to do. Both companies had to make some proprietary enhancements to the S100 bus to improve the data transfer rate between CPU and RAM. Nevertheless S100 systems sold in the final days of these companies were in some respects still competitive. Cromemco's high end 68020-based multiuser systems could run a Unisoft port of UNIX System V, and CompuPro's high end 80386-based systems were multi-tasking multi-user systems running Digital Research Concurrent DOS 386.
 
I have never used the S-100 bus so I am not familiar with its intricacies - but I get the impression that it is difficult to use (?). It's just a bus, so as long as I follow the rules and my timing is "fat" then I should be good to go, right?
I didn't know anything about the S-100 bus until I got a SOL-20 computer a few years back and started tinkering around with S-100 cards. I did a number of home projects where I had to figure out how to interface my own cards with the bus. It is not too difficult with the vintage logic IC's, in one project I managed a Light Pen interface by combining a home grown card with the vintage Matrox ALT-512 video card (one of the world's early graphics cards, I also have the ALT256) the Pen interface I made is in this article:


I did about 80% of it in hardware, because my software skills are only about 10% of my hardware ones.

Apple had a Light Pen card, but in the same way video killed the radio star, the Light Pen was killed by a Mouse.

Here is a much more simple project adding two extra Sol ROM modules to the sol but on the S-100 bus:

 
Last edited:
Indeed... it is not well known that a few companies were still making money selling S100 systems until around 1990 which is roughly when Cromemco and CompuPro stopped. Certainly there were much better platforms at that point in time, but S100 was the only thing these companies knew how to do. Both companies had to make some proprietary enhancements to the S100 bus to improve the data transfer rate between CPU and RAM. Nevertheless S100 systems sold in the final days of these companies were in some respects still competitive. Cromemco's high end 68020-based multiuser systems could run a Unisoft port of UNIX System V, and CompuPro's high end 80386-based systems were multi-tasking multi-user systems running Digital Research Concurrent DOS 386.
I fine the "post obsolescence" s100 systems to be some of the most interesting
 
I fine the "post obsolescence" s100 systems to be some of the most interesting

Here's a very specific genre I rather enjoy: S100 computers built to emulate TRS-80s..

If I ever get my NorthStar working to any degree I've been *very* tempted to try building a "TRS-80 board" for it using my homebrew video design and integrating TRS-IO for WiFi storage/RetroStore support. (The fun part would be trying to do this while retaining the original Z80 CPU and memory boards, but I think it's doable. The NorthStar disk controller would have to go, though.*) I'm sure it'd be utter sacralige to do that to a NorthStar, but I would honestly enjoy it more that way then as what a NorthStar was built to run.

(* FWIW, I do have both WD1771 and 1793 FDC chips lying around, so maaaaabye I could get the original northstar floppy drives to work by building a Model I or Model III compatible disk controller. I'd call that a stretch goal because the condition of the floppy drives in that thing make me pretty sure they're never playing the piano again.)
 
At least, one thing about the Northstar double density floppy disk controller , it has a logic design that is well documented & easy to understand (for me at least, because I like hardware) and it is easy to fault find and works well with soft media, if combined with Mike's VSG. I have repaired at least 4 of these N* boards now.

If you were ever like me and trying to set up some S-100 system from scratch, with a floppy drive, this is the kind of thing you want, where no firmware patches, hack, or anythng else is needed to run it. Then you can quickly go about running CP/M from the floppy.

One problem is; lets say you have a stack of S-100 cards, some S-100 computer, and you try to put all those together, get ready for trouble.

I found this out just this with vintage Matrox video cards and some incompatibilities with the bus in my SOL.

And if you are even remotely considering many S-100 boards, especially ones related to text or graphics, it pays to use SRAM rather than DRAM for main memory, because some cards hijack the native memory and don't work with DRAM, or the DRAM refesh circuitry corrupts the proceedings.

On top of that, things you expect should "work" like using three of PT's own 16kRA DRAM cards in a Sol-20 "should work" together, think again, they do not and malfunction occus, and they need modificaion. Now if a manuacturer of the whole computer and the S-100 cards that go with it, cannot get it right, what do you think happens when you hybridize it with other manufacturer cards ? The S-100 bus is best descibed as a real party.
 
I found this out just this with vintage Matrox video cards and some incompatibilities with the bus in my SOL.

Off the top of my head I recall that the SOL rather infamously broke rule #1 for the S100 bus by tying together the "In" and "Out" sides of the data bus and treating them as a "normal" bidirectional bus. I'm sure that was probably just the tip of the iceberg.
 
Back
Top