Skip to the content
2 layers282.7 × 108.3 mmKeyboard, the printed circuit board in 3D

a 2022 replica of the classic TI/994a, using obtainable parts

Size
282.7 × 108.3 mm
Copper layers
2
Thickness
1.6 mm
Parts
63
Nets
34
Pads
314
Tracks, vias
390, 8
Pours
1
Routed
Yes
KiCad
KiCad 6 (file 20211014)
Created
24 Jun 2022
Updated
5 Oct 2024

Overview

Keyboard is an open-source printed circuit board by danwerner21, from the danwerner21/TI99_22 repository on GitHub. It is a 2-layer board of 282.7 × 108.3 mm with 63 parts on 34 nets, routed with 390 tracks and 8 vias.

It is built around the ATTINY13A-PU and 74LS125DC. Its parts include 48 switches, 3 resistors, 2 ICs, 2 diodes and 1 capacitor. It belongs with the keyboards and input boards and the AVR (ATmega, ATtiny) boards of this library.

Main components

2

README

README.md

Texas Instruments TI99/4A Clone(ish) Project

System

Note that this is not a fully tested project at this point. . . .

This is based Rob Krenicki's design that is based on the HackMac KiCAD schematics. I have made several changes to the original design including:

  • Placing 32K of 16bit wide fast ram on the board to fully populate the address space
  • Placing an EPROM on the main board that can be used as an on-board cartridge ROM
  • adding a header to allow a microcontroller to replace the GROM chips (hopefully this can be moved on-board soon)
  • replacing the video DRAM with SRAM
  • Updating the Keyboard header to support a soft caps lock switch on the keyboard PCB
  • designing a Cherry MX keyboard
  • adding headers for the GROM and expansion port to support riser cards for these ports

If there are any questions, I can be reached at vic2020Dan at gmail dot com.

ToDo

  • Cleanup/Documentation Possible Future Thoughts:

  • Redo the Board in an ATX form factor with PEB slots on board

  • Add Support for the Pico9918 on-board

  • Add Support for a Tang Nano FPGA TMS9918 replacement

  • Add Hex-bus port

  • Add a DIN 5-pin Composite video/Audio out.

  • Add built in speech synthesis

  • Clone Disk IO card

  • Relocate all the ports to the back of the motherboard

  • It has been suggested that we also have a console style version of the next revision as not everyone has a desire for a larger PE style machine

  • Also perhaps add some keys to the keyboard

DIP Switch Settings

The DIP switch on the main board allows one to configure which bank areas are populated with RAM.

RAM0 enables RAM to addresses >2000-3FFF (Lo Memory Expansion) RAM1 enables RAM to addresses >A000-BFFF (Hi Memory Expansion) RAM2 enables RAM to addresses >C000-DFFF (Hi Memory Expansion) RAM3 enables RAM to addresses >E000-FFFF (Hi Memory Expansion) RAM4 enables RAM to addresses >8000-83FF (Normal TI Scratch Pad RAM)

Note that I have never actually tested off-board 8 bit RAM, so this is new territory and might need some debugging 😊
also on-board RAM is 16 bit – so all of those external RAM sources will be slower.

Bugs

  • on rev 0.95 R36-40 are listed as 100K ohm, they are actually 100 ohm

  • on rev 0.95 the joystick and cassette connectors are mirrored and need to be mounted on the bottom side of the board to function

  • Both of these are corrected in 0.96

  • The reset button J1 should be attached to pin 5 of U1 not Pin 4

Bill of Materials

Console

QtyReference(s)Part
6C1, C9, C11, C58, C73, C750.001uF
1C222pF
3C3, C5, C5922uF
12C4, C7, C13, C14, C20, C54, C55, C62, C64, C68, C71, C740.1uF
1C61uF
7C8, C52, C63, C65, C66, C67, C720.01uF
1C10100uF
1C120.01uF
7C15, C16, C17, C19, C21, C22, C60100uF
30C18, C23, C24, C25, C26, C27, C28, C29, C30, C31, C32, C33, C34, C35, C36, C37, C38, C39, C40, C41, C42, C43, C44, C45, C46, C47, C48, C49, C50, C510.1uF
1C53100uF
1C5612pF
1C5756pF
1C61220uF
1C69220pF
1C700.022uF
2CR1, CR41N4148
2CR2, CR31N914B
1D1LED
1J1Connector PinHeader 2.54mm:PinHeader 1x02 P2.54mm Vertical
1J2Connector PinHeader 2.54mm:PinHeader 1x02 P2.54mm Vertical
1J3TerminalBlock RND:TerminalBlock RND 205-00278 1x04 P5.00mm Vertical
1J4Connector PinHeader 2.54mm:PinHeader 1x16 P2.54mm Vertical
2J5, J6Connector PinHeader 2.54mm:PinHeader 1x03 P2.54mm Vertical
1J7Connector PinHeader 2.54mm:PinHeader 1x03 P2.54mm Vertical
1J8Connector PinHeader 2.54mm:PinHeader 1x02 P2.54mm Vertical
1J9Connector PinHeader 2.54mm:PinHeader 1x02 P2.54mm Vertical
1J10Connector Dsub:DSUB-9 Female Horizontal P2.77x2.84mm EdgePinOffset4.94mm Housed MountingHolesOffset7.48mm
1J11Connector PinHeader 2.54mm:PinHeader 1x18 P2.54mm Vertical
1J12Connector PinHeader 2.54mm:PinHeader 2x22 P2.54mm Vertical
1J13WernerCustomLibrary:44 Pin Card Edge
1J14Library:CardEdge 34Pin 2.54mm Vertical
1J15Connector PinHeader 2.54mm:PinHeader 2x18 P2.54mm Vertical
1J16Connector PinSocket 2.54mm:PinSocket 1x03 P2.54mm Vertical
1J17Connector PinSocket 2.54mm:PinSocket 1x03 P2.54mm Vertical
1J18Connector Dsub:DSUB-9 Female Horizontal P2.77x2.84mm EdgePinOffset4.94mm Housed MountingHolesOffset7.48mm
1L10.33uH
2L4, L56.8uH
1L75.8uH
1L8INDUCTOR (Ferrite BEAD)
7L10, L11, L12, L13, L14, L15, L168.2uH
3Q1, Q3, Q4TIS92
1Q22N3904
1R1150k
7R2, R9, R11, R18, R34, R35, R461k
1R312k
1R447k
4R5, R6, R7, R822
5R10, R26, R45, R52, R534.7k
5R12, R13, R14, R15, R161K
3R17, R48, R502.2k
2R19, R30470
1R20270
1R211.5k x 9 SIP bussed
1R22361
3R23, R73, R755.6k
2R24, R2710
1R25150
1R28470k
1R290
2R31, R3375
1R32470
4R41, R42, R43, R4462
1R473.3k
9R36, R37, R38, R39, R40, R49, R51, R54, R56100
1R55330
1R5710k
1R586.8k
1R5939k
1R606.8k
4R61, R62, R67, R681K
1R63120k
1R642.7k
3R65, R66, R76220
1R6910K
1R709.1k
2R71, R7210k
1R745.6K
1R7715
2RN1, RN210K x 9 SIP Bussed
1SW1DIP switchx05
1SW2Pin Header 01x02 Male
1U1TMS9904 (note this needs to be a 9904 not 9904ANL. If the 9904ANL is used, Y1 needs to be substituted with 12Mhz, L1 needs to be substituted with 3.3uh and C2 needs to be substituted with 50pf)
1U2TMS9900
4U3, U15, U22, U2474LS04
2U4, U974LS32
2U5, U874LS138
1U674LS03
1U774LS08
3U10, U14, U1874LS00
2U11, U4174LS244
1U1274LS373
1U1374LS245
1U1674LS74
1U1774LS194
1U19LM2901
1U20LM7905 TO220
1U21LM2903
3U26, U27, U28TMC0430
3U29, U30, U37HM62256BLP
2U31, U3227C64
1U33SN76489
1U34TMS9918
3U35, U36, U3874LS574
1U39TMS9901
1U4074LS156
2U42, U4374LS367
1U4474LS379
1U4527C010
1U46RC4558
1U4774LS06
2U48, U49TIL119
1Y148.000 MHz Crystal
1Y210.7MHz Crystal

Keyboard

QtyReference(s)ValuePart
1C10.1uFCapacitor
1D1LEDLED
1D2LEDLED
1J1Pin Header 1x18 malePin Header 1x18 male
2R1, R2470 ohmResistor
1R31K ohmResistor
48SW1-SW48Mechanical SwitchCherry MX Switch (or compatible)
1U1ATtiny13A-PIC
1U274LS125IC
3Switch Stabilizer 2.25
1Switch Stabilizer 6.25
1Optional Alignment frame (will need modified)
Stabilizers (frame not used):https://www.amazon.com/Genuine-Cherry-PCB-Snap-Stabilizers/dp/B085T8QZJC
Stabilizers (Frame used)https://www.amazon.com/dp/B082X4V9VC
Frame:https://www.amazon.com/gp/product/B07MMB33WG

Cartridge Riser

QtyReference(s)PartType
1J1Pin Header 01x18 MalePin Header 01x18 Male
1J236 Pin Edge ConnectorCONN EDGE DUAL FMALE 36POS 0.100 spacing

IO Riser

QtyReference(s)PartType
1J1Pin Header 2x22 MalePin Header 2x22 Male

UNICORN BOARD

QtyReference(s)PartType
1J1Pin Header Socket 01x16 Female Right AnglePin Header Socket 01x16 Female Right Angle
4U1-U4Level Shifterhttps://www.amazon.com/KeeYees-Channels-Converter-Bi-Directional-Shifter/dp/B07LG646VS
1U5ESP32 Devkithttps://www.amazon.com/Development-Microcontroller-Integrated-Antenna-Amplifiers/dp/B09GK74F7N

License

The original project was licensed under the Creative Commons - Attribution - ShareAlike 3.0 License

Attribution

This board was derrived from works by, uses design elements from, or contains sofware writen by the following:

Parts

63
QtyValueFootprintReferences
6MountingHoleMountingHole:MountingHole_3.2mm_M3_PadH1, H2, H3, H4, H5, H6
2470ΩResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR1, R2
10Cherry_MX:CHERRY_PCB_100HSW19
10.1µFCapacitor_THT:C_Disc_D7.0mm_W2.5mm_P5.00mmC1
11Cherry_MX:CHERRY_PCB_100HSW43
11KΩResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR3
12Cherry_MX:CHERRY_PCB_100HSW44
13Cherry_MX:CHERRY_PCB_100HSW45
14Cherry_MX:CHERRY_PCB_100HSW46
15Cherry_MX:CHERRY_PCB_100HSW47
16Cherry_MX:CHERRY_PCB_100HSW23
17Cherry_MX:CHERRY_PCB_100HSW22
174LS125Package_DIP:DIP-14_W7.62mm_Socket_LongPadsU2
18Cherry_MX:CHERRY_PCB_100HSW21
19Cherry_MX:CHERRY_PCB_100HSW20
1ACherry_MX:CHERRY_PCB_100HSW30
1ATtiny13A-PPackage_DIP:DIP-8_W7.62mm_LongPadsU1
1AlphaLED_THT:LED_D3.0mmD1
1BCherry_MX:CHERRY_PCB_100HSW28
1CCherry_MX:CHERRY_PCB_100HSW26
1COLONCherry_MX:CHERRY_PCB_100HSW7
1COMMACherry_MX:CHERRY_PCB_100HSW3
1CTRLButton_Switch_Keyboard:SW_Cherry_MX_1.25u_PCBSW42
1ComputerConnector_PinHeader_2.54mm:PinHeader_1x18_P2.54mm_VerticalJ1
1DCherry_MX:CHERRY_PCB_100HSW32
1ECherry_MX:CHERRY_PCB_100HSW39
1ENTERCherry_MX:CHERRY_PCB_225HSW18
1EQUALSCherry_MX:CHERRY_PCB_100HSW6
1FCherry_MX:CHERRY_PCB_100HSW33
1FNCTButton_Switch_Keyboard:SW_Cherry_MX_1.25u_PCBSW48
1GCherry_MX:CHERRY_PCB_100HSW34
1HCherry_MX:CHERRY_PCB_100HSW11
1ICherry_MX:CHERRY_PCB_100HSW15
1JCherry_MX:CHERRY_PCB_100HSW10
1KCherry_MX:CHERRY_PCB_100HSW9
1LCherry_MX:CHERRY_PCB_100HSW8
1LOCKButton_Switch_Keyboard:SW_Cherry_MX_1.75u_PCBSW29
1MCherry_MX:CHERRY_PCB_100HSW4
1NCherry_MX:CHERRY_PCB_100HSW5
1OCherry_MX:CHERRY_PCB_100HSW14
1PCherry_MX:CHERRY_PCB_100HSW13
1PERIODCherry_MX:CHERRY_PCB_100HSW2
1PowerLED_THT:LED_D3.0mmD2
1QCherry_MX:CHERRY_PCB_100HSW37
1RCherry_MX:CHERRY_PCB_100HSW40
1SCherry_MX:CHERRY_PCB_100HSW31
1SHIFTCherry_MX:CHERRY_PCB_275HSW35
1SHIFTCherry_MX:CHERRY_PCB_225HSW36
1SLASHCherry_MX:CHERRY_PCB_100HSW1
1SPACECherry_MX:CHERRY_PCB_625HSW12
1TCherry_MX:CHERRY_PCB_100HSW41
1UCherry_MX:CHERRY_PCB_100HSW16
1VCherry_MX:CHERRY_PCB_100HSW27
1WCherry_MX:CHERRY_PCB_100HSW38
1XCherry_MX:CHERRY_PCB_100HSW25
1YCherry_MX:CHERRY_PCB_100HSW17
1ZCherry_MX:CHERRY_PCB_100HSW24

More from danwerner21/TI99_22

4
  • 2 layers350 × 224.3 mmConsole, the printed circuit board in 3D

    Console

    danwerner21/TI99_22

    a 2022 replica of the classic TI/994a, using obtainable parts

    251 parts50
  • 2 layers100 × 60 mmUnicorn, the printed circuit board in 3D

    Unicorn

    danwerner21/TI99_22

    a 2022 replica of the classic TI/994a, using obtainable parts

    10 parts50
  • 2 layers17.4 × 69.8 mmCartRiser, the printed circuit board in 3D

    CartRiser

    danwerner21/TI99_22

    a 2022 replica of the classic TI/994a, using obtainable parts

    4 parts50
  • 2 layers76.9 × 58.5 mmIO Riser, the printed circuit board in 3D

    IO Riser

    danwerner21/TI99_22

    a 2022 replica of the classic TI/994a, using obtainable parts

    4 parts50

Similar boards

  • 4 layers243.8 × 243.8 mmSbc 8088, the printed circuit board in 3D

    Sbc 8088

    miselin/M88

    The M88 Computer

    218 parts2CERN-OHL-P-2.0
  • 2 layers99.7 × 63.9 mmNES CN ROM-256-05, the printed circuit board in 3D

    NES CN ROM-256-05

    emeargt/nes-cnrom

    KiCad project for NES-CN-ROM-256-05 cartridge schematic and PCB

    17 parts31CC-BY-SA-4.0
  • 2 layers100 × 61.4 mmCart, the printed circuit board in 3D

    Cart

    digilogistist/The-Open-Source-USB-NES-Project

    USB-NES and NES-FASTGFX product engineering repository

    38 parts24CC0-1.0
  • 2 layers100 × 100 mmMotherboard, the printed circuit board in 3D

    Motherboard

    Terminus-IMRC/RPiCluster2

    Yet another Raspberry Pi cluster, version 2

    334 parts9
  • 2 layers22.9 × 30.7 mmOnewire led, the printed circuit board in 3D

    Onewire led

    kcuzner/onewire-leds

    An RGB LED driver on a modified one-wire bus

    11 parts4MIT
  • 6 layers100.1 × 112 mmPicones, the printed circuit board in 3D

    Picones

    WiiMake/picones

    In the last 40 years, technology has advanced to the point were what used to be done in hardware can now be done in software. This project uses an rp2350 to emulate a ROM chip on an NES Cartridge.

    59 parts1
  • 2 layers27.9 × 15.2 mmFF2 20241213 1510, the printed circuit board in 3D

    FF2 20241213 1510

    25mmHg/AlteFabrik191126

    Flimmerfeen2.0

    12 partsBSD-3-Clause
  • 2 layers140 × 60 mmA277d led tachometer, the printed circuit board in 3D

    A277d led tachometer

    bazsimarkus/a277d-led-tachometer

    An analog LED tachometer controlled by an East German A277D chip (clone of UAA180), featuring an integrated ATtiny13A-based digital ignition pulse generator for testing.

    61 parts

Questions

How big is the Keyboard PCB?

It measures 282.7 × 108.3 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Keyboard use?

63 parts, built around the ATTINY13A-PU and 74LS125DC. 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 Keyboard KiCad files?

From the danwerner21/TI99_22 repository on GitHub, at the commit this page was made from: the board is Keyboard/Keyboard.kicad_pcb and its schematic CartRiser/CartRiser/CartRiser.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Keyboard design in my own project?

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