What's new
What's new

My little (home) shop

standardparts

Diamond
Joined
Mar 26, 2019
Hehe, in my haste I forgot to route 2 signals in the schematic, so I'll have some bodge wires on this rev. I don't know if it's really worth spending another $45 to have a "perfect" board :)
Perry...like a few others have no idea what you got going....but it sure is impressive.
You gonna pick out a Fadal owner, or two, to do the 'beta testing'?
 

Perry Harrington

Titanium
Joined
Oct 7, 2006
Location
Klamath Falls, Oregon
I have published my reverse engineering schematics and other work here: https://github.com/drwonky/Fadal

That repository only included the reverse engineering, I realized the other day that at least 2 Fadal parts suppliers may seem unhappy that I'm digging this deep into reverse engineering. I get the same vibe I got 20 years ago about Ford EEC-IV tuning, everyone who had the information guarded it like a national secret, but in the last 20 years all of the information has escaped and you can learn everything you want.

These machines aren't getting any younger, so someone doing engineering to unlock the designs and create replacement parts means there is a way to extend their life. AFAICT, all of the parts being sold by vendors are refurbished original boards, so they are relying on the resilience of old technology. That said, Fadal seems to have heavily leveraged PAL (Programmed Array Logic) and PROM (Programmable Read Only Memory) chips in their 3rd revisions and later. The -1 CPU board has nothing bespoke, the -2 CPU board has at least 1 PAL and 2 PROMs to replace logic chips. The -4 CPU has PALs all over and the -4 video card has FPGAs (Field Programmable Gate Array) or CPLDs (Complex Programmable Logic Device) doing the heavy lifting.

A single 128KB board retails for $350, this board literally replaces 2 SKUs (1460-0 & 1460-1) and > $1000 worth of boards in a 1400-2 control. I can see why they may not want to share any information.

The cost of getting low quantity boards from Chinese board houses is absolutely mind blowing. 20 years ago I bought 3 prototype boards from a domestic board house that still exists today. It cost me a good chunk of money and took a while. I quoted these recent boards and they gave me a price of $524 for 3 boards! The off-shore board houses are literally 10x cheaper for prototypes. I'm astounded at the cost, but in reality the cost *should* go down over 20 years, since there is more competition and customer base (not just SMBs, but individuals).

I got out of electronics because the parts were expensive, boards were prohibitively expensive, and the software was garbage or had annoying price tags connected to doing anything useful. FOSS (Free and Open Source Software) has made it possible to do professional designs quickly with no out of pocket expense, and I'm not going to be held hostage when Company A buys Company E and makes it subscription only.

I used KiCAD to do the schematic capture and board layout, several board houses have bespoke plugins directly for quoting jobs.
  • PCBWay has seamless integration that 1-click sends you to their site and quotes the boards, ready for purchase
  • JLCPCB has a plugin that creates the production files in 1-click that you just drag-n-drop to their website, adding a couple more steps
  • Sierra Proto has a plugin that is buggy, slow, and not well integrated. Eventually I was able to get a quote for a price that was totally unreasonable.
Unfortunately it was experiences like that last one that pushed me away from electronic design, it was not economical or quick to test and iterate. ExpressPCB came a long and provided free schematic capture and layout software that was directly tied to their fab, and they would quote you boards based on a generic 2x3 deal, or you could get bespoke sizes for more.

OSHPark is a more recent community driven solution for cheapish and fastish protypes. Their boards are very high quality and at certain sizes it's economical. For a 5x10 board it is prohibitively expensive ($264), so I went the cheap route. You also don't get the benefit of ticking different boxes during ordering with OSHPark, like using untented vias, gold fingers, beveling, the list goes on. For an authentic 80's experience, lead tinned pads is the standard for the off-shore board houses.

To explain the test harness better, for those that don't immediately intuit what I'm doing: So you design a board, you pore over the details, you check and check again, but alas you are reverse engineering and not 100% certain what you are doing will work. Well, if you worked for the OEM then you'd just build your prototype and slap it into their board tester, it would safely apply power and exercise your board. If you did something wrong, it would have the safeties in place to avoid blowing up a real control.

I don't have a board tester, so either I test in a "live" CNC control, or I design and build my own board tester. Back when all this stuff was new, everything ran on 5 volts. Devices with 5 volt logic are kinda peculiar, they actually switch from low to high at around 2 volts, and from high to low at 0.8 volts. This means you need at least 2 volts to obtain a "logic high" state, and at most 0.8 volts to obtain a "logic low" state. As technology advanced they moved from "high voltage" processes to "low voltage" processes. The "nanometer" race that you might see with computer chips and cell phones directly drives this. The smaller the size of the transistor, the lower the voltage it runs at, the lower the voltage it runs at, the less power it takes. So by "shrinking" a design you get more power efficiency and lower voltage, basically "for free", but there are asterisks and caveats tied to that statement.

Today's hobby level stuff runs at 3.3 volts, which is lower than 5 volts. This means you need some way of interfacing from 3.3v to 5v safely. In one direction you output ~2.4v into a chip that needs 2v to switch, this is a neat hack that 3.3v logic has up its sleeve. But in the other direction you need to "tolerate" 5v logic. This means you need chips that can run at 3.3v but "tolerate" 5v input. In my tester board I'm using 74LVC245 logic chips, these are 3.3v chips that have 5v tolerant inputs, but will only output 3.3v. There are other variants of the '245 that allow you to have multiple voltage supplies, so in 1 direction it'll output from one voltage supply, and in the other direction it'll output from a different voltage supply. This is an easy way of doing low latency level shifting. I didn't use those chips, it's a 6 in 1, half a dozen of the other scenario.

So, I've got a Fadal board that runs at 5v, talking to 5v tolerant bus transceivers that can talk to the 3.3v microcontroller which runs the show. For the microcontroller that drives the board tester I gave myself 2 options: Raspberry Pi Pico and Parallax Propeller 2. I'm really kind of wasting the Propeller 2 here, but a second revision of the board could dispense with most of the logic chips if I designed it to only work with the Propeller 2. The Propeller 2 can directly interface with 5v logic if you have a series resistance to limit current, because each pin has a protection diode that shunts overvoltages to the power rail, thus it acts as a crowbar with the series resistance to accept 5v input.

While it's possible to dispense with most of the logic chips with a P2, the unfortunate truth is that in the "P2 Edge module" form factor, it's $71 and a Raspberry Pi Pico is $4. So even if I have to spend another $10 on logic chips, the Pico is the cheaper route. I wanted to tinker with the P2, so that's the real reason I added the socket to the board. I was part of the original alpha test group during the development of the P2, and I wrote some software for it back then. It went through a complete redesign after the "P2 Hot" design was deemed to consume too much power.

With my test harness board, I have all of the signals on the backplane broken out to header pins, and the vast majority of active signals are connected to the buffers. In theory I could probably talk to any board left of the Axis drive cage.

Last night I looked at some pictures of the 1400-4 board and Fadal did not connect to any pad on the backplane except 5v and ground. All of the communications goes over that little pin bus connector on the back of the card -- CPU, video, and control interface board. In fact, some of the signals on the CIB board go straight from the narrow connector to the backplane connector (address and data lines).

My guess is that Fadal wanted a 16bit data bus and instead of repurposing the S100 bus to 16bit (like later S100 standards), they just added a secondary bus and connector. The -4 CPU is a 12Mhz 286 processor (running at 10Mhz), and it's my understanding the -4 control can still only have "422k" of memory (but really it's 576KB). The -5 control is a 25Mhz 386sx processor (running at 24Mhz) and it can have up to 16MB of memory. This means the -4 control runs essentially an upgraded version of the software from the -1 through -3 CPU cards, but the -5 CPU runs a completely rewritten software that runs in "protected mode", which allows full access to 16MB of RAM on a 386sx (because that chip has 24 address lines, limiting to 16MB). The -1 and -2 control have an 8088-2 processor (rated for 8Mhz) running at 7.3728Mhz. EDIT: I found a picture of the 1400-3 CPU and it looks identical to a 1400-4, I'm assuming the "wasn't good" reputation is related to the software and not the hardware, since this was the first iteration of the 80286 processor card. Going from 8088 to 80286 is a big step and they are 2 very different processors.

The later CPU cards appear to do wacky things like put a piggyback PC based industrial computer on the board and run the Fadal software. I've been told these are problematic.
 
Last edited:

Perry Harrington

Titanium
Joined
Oct 7, 2006
Location
Klamath Falls, Oregon
Perry...like a few others have no idea what you got going....but it sure is impressive.
You gonna pick out a Fadal owner, or two, to do the 'beta testing'?
I assume that most Fadal machines in use today have -4 or -5 controls. If someone has a -1 or -2 control (I don't know anything about the -3 and have no pictures), this board would work. I don't know if I'm going to build any boards for outside use, but I got 5 coming, and if the first board works, then I could potentially build 4 more and disseminate them.
 

MotoX

Cast Iron
Joined
Nov 14, 2011
Location
Enid, Oklahoma
Thank you for elaborating on post 184. There seems to be way more to electronics design than i had imagined.

information like that can make the muddy waters a little clearer.
 

Perry Harrington

Titanium
Joined
Oct 7, 2006
Location
Klamath Falls, Oregon
After some debugging, I got the memory board working. I've still got some issues to sort out. Half of the segments tested fine, but the other half had errors. Since each segment uses the same address and data lines, I don't think it's related to those signals. I tested the RAM chip in my programmer/tester and it didn't turn up any errors. I have a hunch what the issue is. I have some high quality machined pin sockets arriving tomorrow, so I'll install one of those and test again. My initial errors were caused by a brain fart, but I was able to use some unused logic gates on the board to fix it, it was just some bodge wires on the prototype to get it working. The rev B of my test harness board should be arriving soon, I'll be able to set that up and do testing on the bench instead of at the control. Every time I want to test the memory board, it wipes the program memory and I have to go back through SETP and BL... :willy_nilly:

When the prototype board has the bugs worked out, it'll make a nice wall hanger. It has bodge wires and ad-hoc LEDs soldered to the edge of the board that were used for checking signals.
 

Perry Harrington

Titanium
Joined
Oct 7, 2006
Location
Klamath Falls, Oregon
It works!

I learned a lot, and it wasn't about what I thought would be the hard part (electronics). Turns out it's the dang edge connector that's hard to get right. This board works, but I had to do some barbarism to it. The first thing I did when I got the boards was update the PCB design to have a longer edge connector. I didn't anticipate the 30 degree edge bevel on the connector to be a problem.

I know what changes I need to make for rev B to be more reliable and remove potential for problems. And to those who see the extra bypass caps and think "NOOB!", they had nothing to do with the problem, I was just testing what additional bypass caps would do. Turns out most of the problems were just the interface of the edge connector.

20230606_193636.resized.jpg20230606_193647.resized.jpg
 
Last edited:

Perry Harrington

Titanium
Joined
Oct 7, 2006
Location
Klamath Falls, Oregon
I ordered the rev B boards last night. They have some significant layout changes (aside from the fixes for the bodge wires). I also ordered it in 2oz copper, which is ~2.8 thou vs 1.37 thou. There seemed to be some difference in the base board stock thickness and solder mask on the Fadal boards is thick. I'm hedging with the thicker copper to be more durable on the card edge, trying to be as reliable as possible.

You might notice the board is green between the card edge connector pads, that's because I didn't have a complete solder mask keepout, in the new boards I do. I also made the card edge longer than spec, to match the Fadal boards, at ~5/16".

I wanted to get a black solder mask, but the fab said black 2oz boards are unreliable because the black base is oily? From what I understand, black boards are a black substrate with a clear solder mask.
 

Perry Harrington

Titanium
Joined
Oct 7, 2006
Location
Klamath Falls, Oregon
Rev B works, but not without some troubleshooting, which has resolved the observed issue:
20230615_234611.resized.jpg

I was getting weird errors, but consistent errors. Not the ones like the edge connector, but weird data/addressing errors.

I surmised that my fix for the previous board must have introduced some propagation delay that was causing memory read/write errors at specific addresses.

The 1400-1 and 1400-2 controls run at ~close to 8Mhz, which has a cycle time of 125ns.

My addressing and direction logic must have added some propagation delay that put it outside the window of acceptable for the CPU. Essentially there are 4 gates in series to read and 6 gates in series to write. The propagation delay is somewhere around 15-20ns per gate, so to read the propagation could be 60-80ns and to write it was 90-110ns, very much on the edge I think.

Fadal used a PAL (Programmable Array Logic) for doing all of this on the 1460-1, and the PAL would be designed in such a way to ensure their propagation delay was within spec. They probably went this route for 2 reasons: cost and technology. At the time the control was designed LS logic was the norm, but today we have HC, HCT, AC, LVC, and more alphabet soup. The HC chips are CMOS instead of TTL logic, but are compatible in circuit with LS loads. They have some advantages that, while not much faster on the datasheet, in practice I think they are faster due to higher drive current and push-pull outputs. The higher drive currents can handle higher capacitive loads and harder drive usually means faster drive.

After replacing a 74LS14 with a 74HC14, the errors went away. I need to get out my logic analyzer and characterize what is going on so I can understand exactly where the issue is. Once I've done that, I can develop software that mimics the access patterns and cycles of the real control, and exercise the boards on the bench. But ultimately I may "solve" the issue by simply going to a faster series of logic chips that have lower propagation delays.

One thing I learned a long time ago: sometimes you're lucky and when you go and try to "do the right thing" it can backfire on you. I guess I shouldn't look a gift horse in the mouth if a 74HC14 works, but I want to make sure it's not borderline.

The 1460-0 memory board had a lot less propagation delay because addressing was done primarily with the 74LS138 and the bus read/write was done specifically with bespoke Intel chips and there was only 1 gate on the read/write line, so at most maybe 45ns of propagation delay. The Intel M8216 chips also run REALLY HOT when idle, it's a shocker how warm they get.
 
Last edited:

Perry Harrington

Titanium
Joined
Oct 7, 2006
Location
Klamath Falls, Oregon
The diagnostic board lives:
20230617_002845.resized.jpg

I designed a little daughter card that goes in the place of the memory chip and gives me das blinkenlights!

Blue is power good, the 3 green LEDs on the top are bank select, the red LEDs on the bottom are address lines, the unlit ones on the right are green data lines. The 3 unlit at the top are chip enable, output enable, and write enable.
 

Perry Harrington

Titanium
Joined
Oct 7, 2006
Location
Klamath Falls, Oregon
So I put the prototype memory board (with the 74LS14) on the test harness and used my Oscilloscope and signal generator to inspect the signals going to the enable lines of the bus drivers. The effective difference between the 74LS14 and 74HC14 was only 10ns, but I guess that was enough to make it work vs borderline. The factory 1460-0 board had about 14-23ns propagation delay in the direction control circuit, on my board it's 30ns enable and 40ns disable. The Intel 8216 driver chips have at typical enable time of 42ns and disable time of 16ns. The 74LS244 has a typical enable time of 15-20ns depending on whether the data is in or out of phase with the enable signal. The disable time is 10-15ns typical, so if you stack up the numbers you get:

Intel 8216 with 74LS14 inverter driving the input enable: 23ns+42ns=65ns enable, 14ns+16ns=30ns disable.
74LS244 with 74LS14 inverter driving input enable: 40ns+15ns=55ns enable, 40ns+10ns=50ns disable.
74LS244 with 74HC14 inverter driving input enable: 30ns+15ns=45ns enable, 40ns+10ns=50ns disable.

So my bus driver circuit is faster at enable and slower at disable, but the memory chip is faster than what Fadal used, 55ns vs 70ns, so I get an extra 15ns to play with.

It isn't necessarily the write cycle that's the problem, since the S100 bus is kinda weird in that there are discrete memory read and memory write signals. In this case the memory write signal is used to gate in/out on the data bus, and the memory read signal is used to gate the read/write signal. My guess is that the data was not in a "valid" state for long enough during the write cycle, clawing back an extra 10ns was enough to fix that.

If I replaced the 74LS08 with a 74ACT08 and the 74HC14 with a 74ACT14, then the propagation delays would probably drop to around 30ns enable and 30ns for disable. If I substituted 74ACT244 chips for the drivers, it would probably be around 22ns enable and 25ns disable.

At this point I'm satisfied with the 74HC14 being a dumb luck fluke. I might order some ACT chips for those 2, since it's literally a "for free" belt and suspenders solution.

I happen to have thousands of NOS chips from a defunct computer manufacturer of the 80s that are all LS series logic, a lifetime supply of vintage chips for my tinkering. :D
 

Perry Harrington

Titanium
Joined
Oct 7, 2006
Location
Klamath Falls, Oregon
I was going through my box of chips from the old computer manufacturer and I came across some 74ALS08 chips, which are "advanced low power schottky", otherwise known as "fast and power efficient". I was able to drive my enable/disable logic propagation down to 20ns for enable and 45ns for disable. That's 10ns less for enable and 5ns less for disable. I may come across some 74ALS14 chips!

The funny part is that I was (almost) sleeping right over these for over 30 years, my dad acquired the parts when I was 12!

I found some other gems in there too, like oddball PROMs (like what Fadal used), PALs, > 200 2764 EPROMs, a bunch of 2K SRAMs, some 64kx1 DRAMs, and oddly, some 8284 clock generators. The 8284 was designed for use with the 8086/8088 because it needed a 30% duty cycle, but MAD Computers never built anything with an 8086 or 8088, so I'm perplexed. The Fadal controls used an 8088-2 (8Mhz) with a 22 some mhz oscillator feeding the 8284, which divided it by 3 and produced a special 30% duty cycle clock for the processor.

It would seem that MAD was running into challenges that required some fast logic to solve, there are a handful of plain 74Fxx (Fairchild), a bunch of 74LSxx, and some 74ALSxx chips.

I'm pretty sure I've got all the parts to build an IBM PC from scratch:
  • 8237A DMA controller
  • 8254 clock/timer
  • 8284 clock generator
  • 8295A Interrupt controller
What's interesting about Fadal is how different the IBM PC is, even though they used the same processor. IBM designed in a lot of co-processors -- DMA, clock/timer, interrupt controller, etc. The Fadal is literally just a CPU, some ROM, some RAM, and not a lot else. Yes, the special sauce is in the axis controller boards, they are microcomputers all by themselves and they do the heavy lifting, while the CPU just orchestrates the whole show.

Yeah, I obsess over some things easily. Right now I'm under a lot of stress at work and this is my outlet!
 

Perry Harrington

Titanium
Joined
Oct 7, 2006
Location
Klamath Falls, Oregon
I have ordered enough parts to build 3 more of these boards, is there any interest here to beta test this board?

My plan would be to offer 3 boards for beta on a deposit basis, if there is a problem with the board and you send it back, I will refund the deposit. This way if you keep the board, you get a $1000+ value for much less, and I cover my costs. If they don't work in your machine, then you aren't out of pocket.

Obviously, you would be getting a "beta" quality board to test, I have a reasonable amount of confidence in my choice of components on the 3 beta boards, and my static testing leads me to believe these are a good solution.

If you are interested, send me a DM.
 

Philabuster

Diamond
Joined
Jul 12, 2006
Location
Tempe, AZ
I do not own a Fadal, but I think what you are doing is cool. Perhaps start a thread in the Fadal subforum as well about your beta memory board upgrade? That is you target audience and all.
 

Perry Harrington

Titanium
Joined
Oct 7, 2006
Location
Klamath Falls, Oregon
I posted a short blog entry about some reverse engineering work I did on the 1400-2 CPU card: https://apsoft.com/archives/fadal-archaeology-1400-2-cpu-card/

I'm noodling out some things about the 1400-4 and 1400-5 CPU cards.

See, the 1400-4 and 1400-5 have the same physical memory expansion connection, and they use the same 1610-1 program daughter card.

The 1460-2 memory board works on both the 1400-4 and 1400-5, but when examining the 4MB and larger 1460 cards, there is a large CPLD device on there. A 16MB memory expansion has 32 chips, so that's 32 chip enables for 512KB per chip.

I have a hunch that Fadal wasn't actually using Protected Mode, the extended operating mode that was introduced with the 286 and available in all later CPUs. That mode allows direct addressing of memory greater than 1MB in size, with a limit of 16MB for both the 286 and 386sx.

The -4 uses a 286 and caps out at the conventional 422K of storage. In reality there is 576KB of RAM, 384KB of EPROM, and 32KB of display memory, pretty packed. The -5 uses the 386sx, but if you have a 16MB memory expansion, where do you map the 192KB of main memory and 384KB of program memory? Do you just "throw away" 512KB of program storage (1 chip) and call it even?

What I think they did was come up with a bank switching mechanism that swaps in up to 384KB of memory at a time into the 1MB address space. I think that's why they had a CPLD on the memory board.

This was a common tactic back in the 8 bit microcomputer days, you could bank switch ROM and RAM into the processor's address space, giving you access to 64KB at any given time, but swapping out what portion of 64KB you're looking at.

Since they didn't appear to add any pins to the memory expansion connector, this is the only reasonable conclusion I can come to.

To swap in 128KB at a time, you'd need 7 additional selects. I think this could be reduced somewhat by assuming which banks are mapped to which physical address, but you end up with 42.6667 chunks of 384K. Perhaps it's really that simple, it would leave you with a "loss" of 256KB, but at 16MB that's not a lot.

Another interesting bit to note is that when you do a memory test, the control does checksums starting at address 0x86000, which would suggest that on-CPU program storage occupies the range 0x86000-0x8FFFF. That works out to 40,959 bytes, or 39.99KB of program storage, which is 423.99KB of total program storage for a 1400-4 and lower.

If you only have 42 chunks of 384KB that need to be swapped into address space on the CPU, then you can get away with 6 bits instead of 7.

I'm still considering possible ways they mapped chunks into address space. That CPLD has a lot of pins, you need at least 32 of them for the chip selects.
 

Perry Harrington

Titanium
Joined
Oct 7, 2006
Location
Klamath Falls, Oregon
Uh huh ... yep ... sure.... got it ...
Sorry, I realize that this is over some people's heads, but it's simultaneously a sounding board and a place where some future person can learn. I had a chat with Dan at ITS yesterday and learned a little more about their relationship with Fadal. He said they became an outside board tester around the 1400-4 time period. He said they would test boards in fixtures and do some functional board testing. He said if he finds any historical Fadal stuff, he'd send it my way.

The sad part about Fadal is that all of the principals are deceased now, AFAIK. Adrian was the brains behind the control and he passed on early, 1992. I get the sense there aren't a lot of people left to be historians.

Many of the Fadals out there are old enough to get a classic car plate in some states!

It's kinda interesting, HAAS famously got their start in the late 80's and their architecture shows it. They started with a clean sheet design based on the same processor as the Macintosh, very much a period type decision. To be honest, those processors were a lot easier to interface and didn't have the weird memory modes of the Intel processors that Fadal used. Fadal did have some of that advantage of being able to leverage the IBM computers when designing their control, I think that is proved out by the Fadal emulator: https://archive.org/details/FadalEmulator

The Fadal emulator actually contains a good portion of the real control software, but bits and pieces have been replaced by PC specific functionality.
 

CBlair

Diamond
Joined
Sep 23, 2002
Location
Lawrenceville GA USA
Someday someone will find what you have shared and say you have no idea how long I searched for this very thing. Thanks for sharing your passion, or your problem I dont know which yet. ha ha.

Charles
 








 
Top