Skip to the content
2 layers65.5 × 58.4 mmSimpleInterface, the printed circuit board in 3D

A very simple X16 to microcontroller interface.

Size
65.5 × 58.4 mm
Copper layers
2
Thickness
1.6 mm
Parts
19
Nets
84
Pads
206
Tracks, vias
739, 96
Pours
1
Routed
Yes
KiCad
KiCad 6 (file 20211014)
Created
16 Mar 2022
Updated
16 Mar 2022

Overview

SimpleInterface is an open-source printed circuit board by jburks, from the jburks/X16-Simple-Intf repository on GitHub. It is a 2-layer board of 65.5 × 58.4 mm with 19 parts on 84 nets, routed with 739 tracks and 96 vias.

It is built around the 74ACT245M, 74ACT00 and 74ACT02M, with the 74ACT04D, 74ACT157PC and 74AHC273D among its other parts. Its parts include 6 capacitors, 6 ICs, 4 connectors, 1 resistor and 1 transistor. It belongs with the interfaces and adapters boards of this library.

Main components

7

README

README.md

X16-Simple-Intf

This is a proof of concept interface between the X16's 6502 bus and a modern microcontroller. This could be done much more simply with a CPLD, but in keeping with the "retro feel" of the X16, this was implement using all 74xx logic in a DIP package.

3D PCB Rendering

Note: The X16 card edge in the design may be mirrored. Until this can be validated, use at your own risk!

Host Software Operation

This interface contains two exposed memory addresses and three functional registers:

AddressNameDescription
0HOST_WRData byte from host to client, write only
0HOST_RDData byte from client, read only
1STATUSStatus flags for card and client, read only

As can be seen from above, address 0 is used for both the read and write registers. The card only looks at the A0 address line which results in the HOST_XX registers appearing at all even addresses within the selected IO region and the STATUS register at all odd addresses.

The flags of the STATUS register are

BitNameDescription
0CSTAT_0Client status 0. This value reflects the state of the STAT_0 input pin from the client. Interpretation of the meaning of this flag is implementation dependent.
1CSTAT_1Client status 1. This value reflects the state of the STAT_1 input pin from the client. Interpretation of the meaning of this flag is implementation dependent.
2-5UNUSEDUnused status bits. Will contain the same values as the HOST_RD register.
6BUSYClient busy status. This bit indicates that the client has not yet acknowledged the last byte transmitted from the host.
7ATTNAttention. Indicates that the client is trying to get the host's attention. If jumper J2 on the card is closed, the /IRQ line will be held low (asserted) while ATTN is asserted.

The position of the BUSY and ATTN flags is intended to allow the host software to determine their state via the BIT instruction.

Microcontroller Interface Operation

The design exposes a total of 21 IO signals to a microcontroller. The direction below is specified relative to the card. "I" (Input) indicates a signal from the microcontroller to the card and "O" (Output) indicates a signal from the card to the microcontroller.

The IO signals are

PinFunctionDirectionNotes
H_D0 - H_D7Host dataOThe last byte of data sent from the host. This byte is stored in a register and does not reflect the state of the 6502 data bus.
C_D0 - C_D7Client dataIA byte of data sent from the microcontroller to the host.This byte is not stored in a register and should be maintained by the microcontroller until it is no longer needed (as determined by the implementation).
ATTNClient attentionIShould be set high by the microcontroller to indicate that it wants the host's attention. The pin state should be maintained by the microcontroller until host attention is no longer needed.
BUSYHost attentionOIndicates that the host has written a byte to the HOST_WR register that the microcontroller has not acknowledged. The card is reporting to the host that the microcontroller is busy.
ACKAcknowledgeIA strobe on this pin by the microcontroller will clear the BUSY signal. This pin should not be held high, asserting it for ~10ns is sufficient.
STAT_0 - STAT_1Status 0/1IImplementation-dependent status signals. The state of these inputs can be read by the host in the CSTAT_0 and CSTAT_1 flags of the STATUS register.

Parts

19
QtyValueFootprintReferences
61uFCapacitor_THT:C_Disc_D4.3mm_W1.9mm_P5.00mmC1, C2, C3, C4, C5, C6
125KResistor_THT:R_Array_SIP5RN1
174ACT00Package_DIP:DIP-14_W7.62mmU2
174ACT02Package_DIP:DIP-14_W7.62mmU3
174ACT04Package_DIP:DIP-14_W7.62mmU1
174ACT157Package_DIP:DIP-16_W7.62mmU5
174ACT245Package_DIP:DIP-20_W7.62mmU6
174AHC273Package_DIP:DIP-20_W7.62mmU4
1BS170Package_TO_SOT_THT:TO-92_InlineQ1
1DNPResistor_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_HorizontalR1
1IO SelectConnector_PinHeader_2.54mm:PinHeader_2x05_P2.54mm_VerticalJ1
1IRQ EnableConnector_PinHeader_2.54mm:PinHeader_2x01_P2.54mm_VerticalJ2
1Microcontroller PortConnector_PinHeader_2.54mm:PinHeader_2x12_P2.54mm_VerticalJ3
1X16_Card_EdgeX16:X16_Card_EdgeP1

Similar boards

  • 2 layers160 × 100 mmScamp++, the printed circuit board in 3D

    Scamp++

    BenskiBoy/scamp-32

    32 bit version of jes's scamp-cpu

    132 parts
  • 2 layers25.4 × 68.6 mmBionic kl5c80a12, the printed circuit board in 3D

    Bionic kl5c80a12

    tgtakaoka/retro-bionic

    Modern platform to run retro CPUs

    10 parts6
  • 2 layers106.7 × 40.6 mmC128 CGA DAC, the printed circuit board in 3D

    C128 CGA DAC

    misterblack1/cga2rgb

    A board to convert digital RGB signals to analog RGB with easily available parts

    41 parts25
  • 4 layers170.1 × 170.1 mmOtterX, the printed circuit board in 3D

    OtterX

    RetroRemake/OtterX

    8-Bit computer compatible with Commander X16

    187 parts40CERN-OHL-W-2.0
  • 2 layers100 × 99.8 mm07 alu, the printed circuit board in 3D

    07 alu

    tmarhguy/tomato

    A functional 32-bit computer built from scratch in a dorm; implemented on FPGA, Kicad, browser simulation

    134 parts2
  • 2 layers84 × 89 mm14MHz Accelerator V2 2, the printed circuit board in 3D

    14MHz Accelerator V2 2

    Mathesar/14mhz-accelerator

    14MHz 68000 accelerator with 1MB fast ram for amiga 500

    42 parts78
  • 2 layers33.5 × 29.2 mmStepperature, the printed circuit board in 3D

    Stepperature

    rekursiv/stepperature

    Stepperature is a DIY, Open Hardware, Manual Pulse Generator (Quadrature) hand wheel interface for CNC, audio, or other projects.

    37 parts13
  • 2 layers100 × 100 mmMidiBox3, the printed circuit board in 3D

    MidiBox3

    Dethernal/Midibox3

    New features for DIN5 MIDI → Waweblaster interface board. Now with MT-32 stuff.

    127 parts5MIT

Questions

How big is the SimpleInterface PCB?

It measures 65.5 × 58.4 mm and has 2 copper layers, 1.6 mm thick.

What parts does the SimpleInterface use?

19 parts, built around the 74ACT245M, 74ACT00, 74ACT02M and 74ACT04D. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the SimpleInterface KiCad files?

From the jburks/X16-Simple-Intf repository on GitHub, at the commit this page was made from: the board is pcb/SimpleInterface.kicad_pcb and its schematic pcb/SimpleInterface.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the SimpleInterface design in my own project?

Its repository states no licence, so its author keeps all rights: ask jburks before reusing the design.