
PocketTRS
apuder/PocketTRS
PocketTRS uses a modern microcontroller to emulate a TRS-80 personal computer. It can be connected to any compatible VGA monitor and PS/2 keyboard. PocketTRS has TRS-IO embedded for full FreHD support.

PocketTRS uses a modern microcontroller to emulate a TRS-80 personal computer. It can be connected to any compatible VGA monitor and PS/2 keyboard. PocketTRS has TRS-IO embedded for full FreHD support.
PocketTRS is an open-source printed circuit board by apuder, from the apuder/PocketTRS repository on GitHub. It is a 2-layer board of 87.6 × 73.9 mm with 45 parts on 60 nets, routed with 843 tracks and 114 vias.
It is built around the ESP32-WROVER-B, AMS1117-3.3 and MCP23S08T-E/ML, with the MMBT3904 and BSS138 among its other parts. Its parts include 13 resistors, 12 capacitors, 6 connectors, 5 ICs and 3 transistors. It belongs with the ESP32 boards of this library.
PocketTRS uses a modern microcontroller to emulate a TRS-80 personal computer. It can be connected to any compatible VGA monitor and PS/2 keyboard. PocketTRS has TRS-IO embedded for full FreHD support. PocketTRS offers the following features:
The heart of PocketTRS is an ESP32-based microcontroller. The firmware can be compiled using Espressif's ESP-IDF version 6.0. First install the ESP-IDF toolchain for your platform. Next clone the PocketTRS git repository and compile the firmware via:
git clone --recursive https://github.com/apuder/PocketTRS.git
cd PocketTRS
idf.py buildThe firmware can be flashed once the ESP as well as the necessary flashing circuitry is added to the PCB as explained in the next section.
This repository contains the complete KiCad and Gerber files for PocketTRS. The figure below shows the various connectors:
The BOM contains all required parts. Soldering surface mounted components can be tricky. It is suggested to build up the PCB in a particular order and test the board along each step. PocketTRS contains some test code that helps with the diagnostics. The test code can be activated at compile-time via idf.py menuconfig > Component config > PocketTRS > Run PocketTRS PCB tests. When the PCB tests are activated, diagnostics will be printed to the log that can be viewed via idf.py -p <port> monitor. The following steps refer to PocketTRS V2.3:
| Step | Components | Comments |
|---|---|---|
| 1 | J6, U4, C4, C5, C11 | Connect power via the Micro-USB adapter. Confirm 5V on J5, pin 5. Confirm 3.3V on U1, pin 2. Disconnect power. Note: for polarized caps the dot on the silkscreen indicates the positive terminal. |
| 2 | Q2, Q3, R12, R13, R14, R15, R16, C9, C10, J5, SW1, U1 | It should be possible to flash the ESP firmware via a FTDI adapter with these components. The log should print MCP4361 not found. |
| 3 | U5, C8 | Log should show MCP4361 found and MCP23S17 not found. Confirm 1V on pin 1, 2V on pin 2 and 3V on pin 3 of VGA adapter. |
| 4 | U2, U3, Q1, R10, R11, R17, C6, C7 | Log should show MCP23S17 found and MCP23S08 found. Measure the voltages of the odd pins of the 50-pin connector (except pin 45). The voltages should alternate between 0V and 5V every second. Permanent 0V indicates that a pin is not properly connected. A permanent 0.7V indicates that two neighboring pins are shorted. |
| 5 | J8, R18, R19, R20, R21 | Insert a formatted SD card into the SD card reader and press the 'PTRS RST' button after booting. The log should print SD card succefully mounted. |
| 6 | The rest | Solder the remaining components. First add the surface mounted components followed by the various connectors. |
Once the PocketTRS card is assembled, connect a VGA monitor, a PS/2 keyboard and optinally a speaker to the audio jack. Power up PocketTRS via the micro-USB connector. You should see the TRS-80 Cass? prompt on the monitor. After booting PocketTRS, the following hotkeys are available via the PS/2 keyboard:
Instead of a PS/2 keyboard, a Bluetooth keyboard (Bluetooth Low Energy) can be used. It is paired in the web interface (trs-io.local, Settings, Bluetooth Keyboard): put the keyboard in pairing mode, press Scan and then Pair next to the keyboard's name. From then on the keyboard connects by itself.
<F5> allows the configuration of various aspects of PocketTRS, including setting up Wifi credentials and TRS-IO. Once Wifi is setup, the printer interface can be accessed via trs-io.local/printer.
Use the configuration settings to activate TRS-IO. Alternatively it is possible to connect an external TRS-IO/FreHD card via the 50-pin expansion interface. In that case make sure that the internal TRS-IO is disabled.
For game sound, simply connect a speaker to the 3.5mm audio jack. It is also possible to load programs via the cassette interface (500 baud only). At the Cass? prompt hit 'L', connect PocketTRS audio jack to a laptop or smartphone, type CLOAD or SYSTEM in BASIC and play the 500 Baud audio file. You should see the blinking asterick in the top right corner.
The video below shows PocketTRS connected to a Talker/80 card:
The next video shows PocketTRS booting from an external FreHD. Note that PocketTRS integrates TRS-IO and therefore also is compatible with FreHD, but for the purpose of the demo, the internal TRS-IO is disabled:
The following video shows PocketTRS booting from a 12 MB Tandy Hard Disk 26-4152 via XROM. PocketTRS is configured to disable the internal TRS-IO and to use XROM:
| Qty | Value | Footprint | References |
|---|---|---|---|
| 6 | 100N | Capacitors_SMD:C_0805_HandSoldering | C3, C6, C7, C8, C9, C10 |
| 5 | 4K7 | Resistors_SMD:R_0805_HandSoldering | R6, R7, R12, R13, R16 |
| 3 | 10U | Capacitors_SMD:C_1206_HandSoldering | C1, C2, C11 |
| 2 | 100U | Capacitors_SMD:C_1206_HandSoldering | C4, C5 |
| 2 | 10K | Resistors_SMD:R_0805_HandSoldering | R10, R11 |
| 2 | 12K | Resistors_SMD:R_0805_HandSoldering | R14, R15 |
| 2 | 2K | Resistors_SMD:R_0805_HandSoldering | R4, R5 |
| 2 | MMBT3904 | TO_SOT_Packages_SMD:SOT-23 | Q2, Q3 |
| 1 | 150R | Resistors_SMD:R_0805_HandSoldering | R9 |
| 1 | 1U | Capacitors_SMD:C_1206_HandSoldering | C12 |
| 1 | 270R | Resistors_SMD:R_0805_HandSoldering | R8 |
| 1 | AMS1117-3.3 | TO_SOT_Packages_SMD:SOT-223-3_TabPin2 | U4 |
| 1 | AudioJack3 | PocketTRS_Connectors.pretty:Jack_3.5mm_CUI_SJ1-3535NG_Horizontal_CircularHoles | J2 |
| 1 | BSS138 | TO_SOT_Packages_SMD:SOT-23 | Q1 |
| 1 | DB15_Female_HighDensity | PocketTRS_Connectors.pretty:DB_15F-VGA | J4 |
| 1 | ESP32-WROVER-B | esp32-wrover.pretty:ESP32-WROVER | U1 |
| 1 | ESP_RESET | Buttons_Switches_THT:SW_PUSH_6mm | SW2 |
| 1 | MCP23S08T-E | Housings_SSOP:SSOP-20_5.3x7.2mm_Pitch0.65mm | U3 |
| 1 | MCP23S17_SP | Housings_SSOP:SSOP-28_5.3x10.2mm_Pitch0.65mm | U2 |
| 1 | MCP43x1 | Housings_SSOP:TSSOP-20_4.4x6.5mm_Pitch0.65mm | U5 |
| 1 | Mini-DIN-6 | PocketTRS_Connectors.pretty:minidin_6_ps2_pcb_mount | J3 |
| 1 | PTRS_RESET | Buttons_Switches_THT:SW_PUSH_6mm | SW1 |
| 1 | Programmer | Pin_Headers:Pin_Header_Straight_1x06_Pitch2.54mm | J5 |
| 1 | TRS-80 | Pin_Headers:Pin_Header_Straight_2x25_Pitch2.54mm | J1 |
| 1 | USB_B_Micro | PocketTRS_Connectors.pretty:USBmicro-B | J6 |
The 41 most common of 45 parts.

apuder/PocketTRS
PocketTRS uses a modern microcontroller to emulate a TRS-80 personal computer. It can be connected to any compatible VGA monitor and PS/2 keyboard. PocketTRS has TRS-IO embedded for full FreHD support.

apuder/PocketTRS
PocketTRS uses a modern microcontroller to emulate a TRS-80 personal computer. It can be connected to any compatible VGA monitor and PS/2 keyboard. PocketTRS has TRS-IO embedded for full FreHD support.

shaeberling/mini-trs
A small TRS-80 system that is self-contained and uses an embedded screen.

minsk-hackerspace/accessController
Control access to BIG DANGEROUS tools in hackerspace



mikes-techzone/upsy-desky
This repository contains the source files for the Upsy Desky, a device which lets you connect your standing desk to any home automation system.


PerMalmberg/IO-Card-G3
This is my custom I/O card, third generation. Main purpose is to serve as an alarm system.

It measures 87.6 × 73.9 mm and has 2 copper layers, 1.6 mm thick.
45 parts, built around the ESP32-WROVER-B, AMS1117-3.3, MCP23S08T-E/ML and MMBT3904. 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.
From the apuder/PocketTRS repository on GitHub, at the commit this page was made from: the board is kicad/v2.2/PocketTRS.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask apuder before reusing the design.