Building an X68000 MIDI Interface on the Expansion Bus

The Sharp X68000 is an unusually capable platform for music, games and experimental hardware. Its expansion bus exposes enough of the machine’s internal signals to build a dedicated MIDI interface without permanently modifying the mainboard. A well-designed card can provide keyboard input, synthesiser control, sequencer timing and communication with modern studio equipment while keeping the original computer reversible and serviceable.

The practical challenge is less about making a connector fit and more about respecting the X68000’s bus behaviour, MIDI’s electrical standard and the realities of working with ageing Japanese hardware. A reliable design needs proper address decoding, controlled access to the 68000 bus, galvanic isolation on MIDI input and a software interface that applications can actually use.

Design route Hardware complexity Software effort Best use
Simple UART with decoded I/O Low Medium Basic MIDI transmit and receive
CPLD or FPGA bus interface Medium Medium to high Flexible registers and future expansion
Microcontroller bridge Medium Low to medium USB, MIDI routing and modern workflows
Fully discrete logic design High High Educational projects and period-style hardware
Nereid-style multifunction card High Medium to high MIDI combined with storage or networking

Start with the expansion bus

The X68000 expansion connector provides access to the 68000 processor bus, including address, data, control and timing signals. The exact connector arrangement and available signals depend on the model and the documentation being used, so the first stage should be confirming the pinout against several trustworthy references. Do not rely on a scanned diagram with unclear numbering, particularly when mirrored connector views are common.

A MIDI board normally appears to the computer as a small set of memory-mapped registers. The host writes a byte to a transmit register, reads received bytes from a receive register and checks a status register for flags such as data available or transmitter ready. An address decoder selects the card only inside an unused region of the X68000’s expansion address space. The decoder should also recognise the appropriate read and write strobes, rather than responding to address lines alone.

Bus timing deserves more attention than the register count. The 68000 expects a peripheral to participate correctly in the bus handshake, and a slow UART or microcontroller cannot simply hold the data bus whenever it likes. A CPLD can provide clean address decoding, data transceivers and acknowledge timing. A simpler interface can use a UART with suitable wait-state logic, but the design should be tested with an oscilloscope or logic analyser before connecting an expensive synthesiser.

Choose the MIDI engine

Classic MIDI runs at 31,250 bits per second with an asynchronous serial format. The common arrangement is eight data bits, no parity and one stop bit. That produces a byte roughly every 320 microseconds, which is slow by modern serial standards but fast enough to expose weaknesses in interrupt handling or buffering.

A dedicated UART is attractive because it handles start and stop bits consistently. A small microcontroller is another practical choice, especially if the board may later gain USB MIDI, DIN synchronisation or programmable routing. The microcontroller should not directly pretend to be a random memory device unless its bus interface has been designed for the X68000’s timing. A CPLD or latch-based front end can shield it from the host bus and offer a stable register interface.

The interface needs buffering in both directions. A receive FIFO prevents a burst of controller messages from being lost while the X68000 is busy drawing graphics or running a disk operation. A transmit queue avoids forcing software to wait on every byte. Status bits should clearly distinguish empty, full, overflow and transmitter-ready states, with an interrupt option if the chosen software environment can use it reliably.

For a first prototype, MIDI input, MIDI output and a readable status register are enough. Add MIDI Thru only after the basic paths work. Thru should be a hardware or carefully buffered copy of the input stream, not a software retransmission that introduces unpredictable delay.

Get the electrical layer right

The five-pin DIN connector is only the mechanical part of MIDI. Standard MIDI input uses a current loop and optical isolation so that two pieces of equipment do not create a harmful ground connection. The X68000 side of the input circuit should be isolated from the external MIDI cable with an appropriate optocoupler or a modern high-speed replacement selected for clean operation at 31.25 kbit/s.

MIDI output generally uses current-limiting resistors and the correct pin arrangement. The output driver must provide a proper loop current without tying the signal ground to the receiving instrument in an unsafe or non-standard way. Use the official MIDI electrical guidance as the reference, then verify the waveform and current with test equipment. A random 5-pin serial circuit may appear to work while causing unreliable operation with older Roland, Korg or Yamaha devices.

Keep the X68000 bus signals away from the DIN connectors and oscillator traces. Place decoupling capacitors close to every logic IC, give the board a sensible ground return and avoid long unbuffered runs on the processor bus. If a microcontroller runs at 3.3 volts while the X68000 logic is at 5 volts, use proper level translation rather than assuming the input thresholds will be forgiving.

Power deserves its own inspection. Many surviving X68000 units have tired capacitors, modified supplies or questionable replacement wiring. Before troubleshooting a new expansion card, check the machine’s rails under load; a useful project is this power supply tester, which can make PSU checks less speculative. Any work around Australian mains equipment should be performed with suitable isolation, fusing and test procedures, not casually on a powered bench.

Design the register and driver model

A compact register map keeps both hardware and software manageable. One register can hold received data, another can accept transmitted data, and a status register can expose flags and interrupt state. A control register may select interrupt enable, clear an overflow condition or reset the UART. Use byte-wide accesses unless there is a strong reason to support words, and define what happens to unused address bits.

The driver should document whether reading the receive register clears a flag, whether writing a full transmit FIFO blocks or reports an error, and how reset affects pending bytes. These details matter when software is written in C, assembler or an old X68000 development environment. A clear interface also makes it easier to create a small diagnostic program before attempting to support a full sequencer.

Interrupts can make performance smoother, but they add hardware and debugging work. A polling driver is suitable for early testing and many MIDI applications, provided it checks the receive path often enough. For a practical sequencer, an interrupt-driven ring buffer is preferable. The interrupt routine should do very little: move bytes into or out of a buffer, update flags and return.

Do not assume that an interface which works in a custom test program will automatically be recognised by commercial software. Some X68000 applications expect a particular device name, I/O address or existing MIDI adapter. A useful project can therefore have two layers: a documented native register interface for new software and, where legally and technically practical, compatibility with a known convention used by existing tools.

Build and test in stages

Start with a bus monitor or a simple register loopback before attaching any MIDI equipment. The X68000 should be able to write a test value, read it back and see predictable status changes. Probe chip-select, read, write and acknowledge signals while running short diagnostic code. This catches reversed connector orientation, incorrect address decoding and bus contention early.

The next stage is a UART loopback at the MIDI baud rate. Connect the transmit and receive paths locally through the interface circuitry, send every byte from 0x00 to 0xFF and check that the receive buffer reports no corruption. Then test running status, real-time messages and long streams of note data. MIDI real-time bytes can appear between ordinary messages, so software that assumes neat three-byte packets will eventually fail.

Use a known-good keyboard, sound module or USB MIDI interface for external testing. Test each DIN port separately and check that an unplugged input does not leave the receiver stuck in a false data state. Confirm that the output works with both vintage and modern equipment. A cheap USB MIDI adaptor can be useful for logging, but some low-cost devices are poor diagnostic references, so compare results with a second interface.

A logic analyser is particularly helpful for checking whether bytes leave at the correct rate and whether an interrupt arrives only when expected. An oscilloscope can reveal slow optocoupler edges, incorrect resistor values or ringing caused by poor layout. Record the test firmware, register map and board revision as part of the project; retro hardware becomes much easier to repair when its design history is preserved.

Make the board practical for Australian workshops

Sourcing a small run of boards in Australia is possible, although specialist parts may still arrive from Japan, Singapore or Europe. Jaycar can cover some connectors, resistors, enclosures and general workshop supplies, while RS Australia and element14 are better options for logic devices, optocouplers and regulated components. Compare shipping and minimum orders carefully because a handful of imported ICs can cost more to deliver than to buy.

The Australian second-hand market is useful for MIDI peripherals. Gumtree listings in Melbourne, Sydney and Brisbane often turn up older keyboards, rack modules and DIN cables, while eBay can supply less common Japanese accessories. Inspect every cable rather than trusting its description: MIDI wiring is standardised, but incorrectly assembled five-pin leads are still found in mixed audio lots.

A compact enclosure is preferable to leaving a prototype board exposed beside the computer. The X68000 is often used in home offices, spare rooms and crowded hobby benches, where a protruding card and loose DIN cable can be knocked easily. Use a secure bracket, strain relief and clearly labelled ports. If the board is sold or shared locally, include Australian power-safety warnings and avoid any design that requires users to open a live 240-volt supply.

Shipping between Perth, Adelaide and the eastern capitals can add several days, especially when a project depends on one custom PCB or an imported connector. Build a test fixture that can validate a board before it is posted. A short checklist covering bus detection, loopback, MIDI output and current draw saves far more time than diagnosing a fault after the card has travelled across the country.

Extend the interface without losing focus

Once the basic MIDI card is dependable, the expansion bus offers room for thoughtful additions. A second MIDI output, a programmable clock generator, a front-panel activity LED or a small configuration EEPROM can all be useful. USB MIDI is possible through a microcontroller, although it increases firmware complexity and may make the board less faithful to the original period.

MIDI timing should remain the priority. A sequencer can tolerate a modest amount of user-interface delay, but uneven inter-byte timing becomes audible when several channels are busy. Hardware buffering, a stable crystal oscillator and predictable interrupt service are more valuable than a long list of features. If the interface supports MIDI clock, measure its jitter rather than judging it only by ear.

Documentation is part of the hardware. Publish the bus assumptions, address map, connector wiring, firmware source and known compatibility limits. Include photographs of the assembled card and a revision history. The wider X68000 community benefits when another enthusiast can reproduce a design without guessing which signals were connected or which parts were substituted.

A carefully made expansion-bus MIDI interface can turn the X68000 into a practical component of a modern retro studio while preserving its original character. Prototype the bus logic, isolate the MIDI input, verify every timing assumption and test with real instruments before adding ambitious features. Share the schematics, firmware and test results through X68K.NET so future builders can repair, adapt and extend the design rather than starting from incomplete clues.

Nereid-X Expansion Board

A personally-produced LAN+USB+Memory expansion board for Sharp X68000 series computers. Multiple production runs were offered, including a final batch and a later revival reproduction run.

Power Supply Repair

X68 power supply repair and modification services were offered by the site owner, with documentation shared through diary entries spanning 2001–2006.

Server & Networking

Notes on FreeBSD administration, ISP changes, server migration, and networking topics. The site itself ran on FreeBSD with the hns diary system and Namazu search integration.

A two-ink risograph print in muted slate-blue and charcoal on off-white paper, showing a stylized desktop computer monitor beside a circuit board with soft geometric trace lines, conveying a calm retro-computing workshop atmosphere. A two-ink risograph print in deep purple and dark grey on cream stock, depicting a compact expansion card with connector ports and subtle Japanese technical annotations, evoking a hobbyist electronics bench. A two-ink risograph print in teal and charcoal on warm white paper, showing a server rack silhouette with soft network-line motifs and a small weather icon, suggesting a personal server room corner.

Get in touch

X68K.NET connects Sharp X68000 enthusiasts through community links and shared projects. Reach out with questions about the Nereid project or X68 resources.