Wrap030-ATX First Code

This is a big step forward — Wrap030-ATX, my microATX form factor 68030-based homebrew computer, is running code from ROM. Externally, all it’s doing is blinking an LED, but that LED is software-controlled, with a sizable delay loop between blinks to make it something that is human-visible.

Getting to this point took quite a bit of work after the free run tests. Nearly all of the logic on this project is in CPLDs. Of note here is the primary bus controller, which handles access timing, bus cycle termination, and a settings register.

For the computer to run code, it has to be able to read from ROM. Reading from ROM requires the bus controller to decode the CPU address, assert the ROM’s Chip Enable (CE#) and Output Enable (OE#) signals, wait the appropriate length of time for the ROM to output stable data on the bus, and then assert the appropriate bus cycle termination signal for an 8-bit peripheral (DSACK0#).

image

Once I had the minimal functionality for ROM access cycles, I was able to repeat the free run test, but this time with only the to 8 bits of the data bus (D[31:24]) pulled low.

Once I confirmed the ROM access cycle logic was working, I added the bus controller register access cycle logic. The bus controller has a single settings register that will control the Debug LED, startup ROM overlay, and ATX soft power. The CPU will need to be able to write to this register, and reading from it is helpful as well.

The bus controller logic is fully synchronous and managed by a state machine, so all that was needed to add the settings register was a couple new states for the state machine — one for read and one for write.

Put all that together, and we have a computer that can run the most basic of programs, with just a single LED for output.

The next thing I need to get working is a serial port. Everything that comes after this point will be a lot easier if I can output helpful debugging messages over serial.

yodaprod:

image

1977

So I was curious —

$1.00 each in quantities of 1000 in 1977. That’s about $5.19 each in 2023.

A quick search on DigiKey, and today Red rectangular through-hole LEDs can be had for under $0.08 each in quantities of 1000.

That’s the equivalent of about $0.02 each in 1977.

legacydevice:

image
image

Sanyo MBC-1000

This was the first computer I spent any significant amount of time on. It’s a Z80 machine with 64kB of RAM running CP/M. We had the dual floppy expansion and a nice dot matrix printer to go with it. We had the full Star Office suite and a few other odds and ends but of course all I needed was BASIC.

The display controller was entirely text-based; it had no graphical capabilities. However the character set was loaded into RAM at startup, so it was fully configurable.

I would love to see what I could do with this machine now, given all that I’ve learned since. It would be fun to try to develop new hardware expansion cards for it, or write some new software in Z80 assembly.

Wrap030-ATX First Tests

The best place to start with assembling and testing a board like this is the power supply. If there’s a catastrophic error, like a direct short between supply rails, it’s best to find out before wasting other components. Thankfully on this project, I’m using a standard PC power supply so all I need is some basic filtering capacitors. Not much to screw up there except maybe some backwards electrolytics.

Next is generally reset and CPU clock. These are essential for getting the CPU up and running and should be confirmed operational before continuing. Here again I’m using stock modular components — a brownout reset signal generator and a can oscillator — so debugging was minimal.

Finally, the CPU should be tested with these signals to see if it will free run (tie the CPU data bus to a known value, usually something like 0b00000000, and watching to see if the address bus increments freely).

image
image

The CPU free run test is an important one. It confirms the most basic functions of the board and the CPU are functional. A board that can’t free run at this stage likely has some significant problem that must be solved before anything else will work.

Luckily, it passed this test!

I used the data bus transceiver sockets to attach test wires to, so I could tie all the data bus signals low. On the 68k architecture, $0000,0000 corresponds to the instruction ORI.b #0,D0 which is a 16-bit opcode ($0000) for an OR instruction followed by an immediate constant word ($0000). So for every 32-bit bus access, the CPU is fetching one complete instruction, incrementing the Program Counter by 4, then repeating. The result of the instruction is stored in the D0 register, so nothing is ever written to the bus.

This behaviour can be confirmed with a logic analyzer, but it’s easiest to visualize by connecting LEDs to some of the higher address bits and watching them count up in binary (which is what I did here).

image

On the 68030 there is a bit more to do than just grounding the data bus. In particular, the CPU’s asynchronous bus expects peripherals to report they are ready and have placed valid data on the bus by asserting the Data Strobe Acknowledge signals (DSACKn#). In normal operation, the system will delay asserting these signals to give the peripheral device enough time to do its job, signalling the CPU to insert wait states until the data is ready. For free run though, these signals can be tied low to signal to the CPU that the data it’s requesting (all 0s) is ready immediately (because the data bus is tied to ground).

Here is where a last-minute addition to my PCB layout really came in handy. I removed the solder mask on these small sections of important signal traces so I would have a clear place to probe these signals on the top of the board. This also gave me just enough room to solder some 30 gauge wire to the DSACKn# and address signals for running the free run test.

Now that I know the most basic functions of the board are working, I can move on to the next step — running first code. To run real code I’ll need ROM working, which will also require the bus controller CPLD to be minimally functional.

I am hoping to have this project at least running BASIC in time to exhibit it at VCF Southwest in Dallas at the end of June this year. I’ve got a lot of work still to do to reach that goal, but passing these first tests does give me hope that there are no huge show-stopping problems with my PCB (at least nothing that can’t be worked around with a bodge wire or two)

techav:

Introducing Wrap030-ATX

New Boards Day!

image
image
image

They’re here!

This is a project that has been a long time coming, and something I have wanted to do for a long time.

This is the largest, most complex PCB I have ever designed — a 9.6x9.6 inch (244x244mm) square, 4-layer, complete motherboard for my MC68030 homebrew computer project.

It is designed to support the Motorola MC68030 CPU, MC68882 FPU, two 72-pin SIMM sockets, 512kB ROM, two serial ports, one parallel port, PS/2 keyboard, 4-bpp VGA video, IDE hard drive, and three ISA expansion slots. A complete system all in a microATX form factor.

This builds on my previous work with the 68030, based heavily on my wire-wrap project and the boards that followed. It’s a project over four years in the making. I have made a few improvements on the old design, like 16550-compatible serial ports and an updated memory map to support much more RAM in a contiguous space.

Keeping with my existing system designs, I’ve combined most of the logic into a set of CPLDs. This makes things like PCB layout and logic debugging so much easier. Most of the remaining discrete logic on the board is 74'245 bus transceivers for driving memory and the ISA slots.

I’ve kept the name “wrap030” in honor of the project’s origin as a wire-wrapped prototype, despite the move to proper PCBs. It’s just what I’ve been calling the project in my own head (and design files) all this time, so at this point no other name would feel right.

image

I of course wasted no time starting to assemble one, but I did stop myself from getting too carried away with the soldering iron. I want to be methodical and test each section before moving on to the next.

I have already found one major error in my board layout — the footprint for the VGA connector is backwards. I may need to bodge together some kind of adapter.

So far I’ve confirmed the minimalist AT power supply section works with no major shorts on power supply rails, and the reset circuit is working as expected. Next step is to try a free run test with the CPU to ensure the system clock and CPU are working. Once that is confirmed working, I can start loading logic for accessing ROM. My goal is to have it at least running BASIC on a serial terminal by VCFSW in June.

I’ve forked my existing wrap030 repository on GitHub for this new Wrap030-ATX, since it does make some breaking changes that will require updates to logic and programs. New repo is here:

@avics1967 asked:

did you solder the smd caps yourself or was that part of the PCB service?

I used JLCPCB assembly service for the surface mount passive components on the back side of the board. I’m fine with SMD soldering, but I think 0402 is a bit beyond my abilities.

Introducing Wrap030-ATX

New Boards Day!

image
image
image

They’re here!

This is a project that has been a long time coming, and something I have wanted to do for a long time.

This is the largest, most complex PCB I have ever designed — a 9.6x9.6 inch (244x244mm) square, 4-layer, complete motherboard for my MC68030 homebrew computer project.

It is designed to support the Motorola MC68030 CPU, MC68882 FPU, two 72-pin SIMM sockets, 512kB ROM, two serial ports, one parallel port, PS/2 keyboard, 4-bpp VGA video, IDE hard drive, and three ISA expansion slots. A complete system all in a microATX form factor.

This builds on my previous work with the 68030, based heavily on my wire-wrap project and the boards that followed. It’s a project over four years in the making. I have made a few improvements on the old design, like 16550-compatible serial ports and an updated memory map to support much more RAM in a contiguous space.

Keeping with my existing system designs, I’ve combined most of the logic into a set of CPLDs. This makes things like PCB layout and logic debugging so much easier. Most of the remaining discrete logic on the board is 74'245 bus transceivers for driving memory and the ISA slots.

I’ve kept the name “wrap030” in honor of the project’s origin as a wire-wrapped prototype, despite the move to proper PCBs. It’s just what I’ve been calling the project in my own head (and design files) all this time, so at this point no other name would feel right.

image

I of course wasted no time starting to assemble one, but I did stop myself from getting too carried away with the soldering iron. I want to be methodical and test each section before moving on to the next.

I have already found one major error in my board layout — the footprint for the VGA connector is backwards. I may need to bodge together some kind of adapter.

So far I’ve confirmed the minimalist AT power supply section works with no major shorts on power supply rails, and the reset circuit is working as expected. Next step is to try a free run test with the CPU to ensure the system clock and CPU are working. Once that is confirmed working, I can start loading logic for accessing ROM. My goal is to have it at least running BASIC on a serial terminal by VCFSW in June.

I’ve forked my existing wrap030 repository on GitHub for this new Wrap030-ATX, since it does make some breaking changes that will require updates to logic and programs. New repo is here:

A little preview of something I’ve been working on the past couple weeks:

A rendering of a bunch of surface mount resistors on a printed circuit boardALT
Another rendering of still more surface mount resistors on a PCBALT
A screenshot of the JLCPCB PCB Assembly service order review webpage showing a rendering of a PCB with a lengthy Bill of Materials to the rightALT

A lot of firsts in this project — my first time using assembly service, the largest PCB I’ve ever ordered, the longest BOM, the most complex schematic … Basically, it is the culmination of many years of work all brought together.

But speaking of firsts …

Vintage Computer Festival Southwest badgeALT

My goal is to have this project at least partially functional and ready to show off at VCF Southwest in June. This will be my first VCF show, and it’s the first VCF Southwest show in over a decade. It’s shaping up to be a great show and I am excited to be a part of it. I’ve already reserved my exhibitor table.

stevebattle:

image
image

Double (2012) by Double Robotics, Sunnyvale, CA.
This “Wheelie Boy” is an iPad stand with two wheels, stabilised by gyroscopes and accelerometers in its base. You even have to bring your own iPad and download the Double app. You also need a second iOS device, like an iPhone to remotely control the Double, giving you two-way live streaming. The advantage of using the iPad is that, like a video call, the driver’s face appears atop the Double and they see what the Double sees. Double’s height can be adjusted from 47 inches up to 60 inches, providing for a comfortable eye level whether seated or standing. Using the remote control app, it can be driven round using its obstacle avoidance system to stop you bumping into walls or people. It runs for about 8 hours on a single charge. Jeremy Gilbert, director of strategic initiatives at the Washington Post tried out an early release, “The idea is we wanted to explore what it would be like to have an actual robotic reporter covering the conventions, We’ve done a couple of different things so far. On Monday, we went to the convention hall, circled the space, meeting delegates and were live streaming on Periscope.

I used to manage a small fleet of Double robots. They were fun to play with. You could drive them around with the arrow keys on a computer connected to it through the web app.

It was an interesting concept, but I never found them to be reliable enough. No problems when testing them by driving around the building; nothing but problems when we actually needed them for a remote guest.

commodorez:

Upcoming Vintage Computer Festivals

Do you like vintage computers, and want to interact with the community at large? Well, here are the upcoming events we know of for the United States in 2023:

Vintage Computer Festival East:
April 14, 15, & 16 - InfoAge Science Museum, Wall, NJ
https://vcfed.org/events/vintage-computer-festival-east/


Vintage Computer Festival Southwest:
June 23, 24, & 25 - Davidson Gundy Alumni Center at UT, Dallas, TX
https://www.vcfsw.org/
Note: this one is returning after about a decade, and is being organized by a new team of people.


Vintage Computer Festival West:
Tentatively, August 5 & 6 - Somewhere in Silicon Valley
Details pending formal announcement
https://vcfed.org/events/vintage-computer-festival-west/


Vintage Computer Festival Midwest:
September 9 & 10 - Elmhurst, IL
Details pending formal announcement
https://vcfmw.org/


Vintage Computer Festival Southeast in (usually in Atlanta, GA) has not had any announcement yet, official or otherwise.

I am helping with the planning efforts to bring VCFSW back to the DFW area. We’re putting together a great list of guest speakers and special exhibitions. It’ll be a fun show!

I plan on exhibiting some of my homebrew projects, and am working on putting together something special for the show.