BASIC Engine
The BASIC Engine is a very low-cost single-board home computer with advanced 2D color graphics and sound capabilities, roughly comparable to late-1980s or early-1990s computers and video game consoles. It can be built at home without special skills or tools and using readily available components for under 10 Euros in parts, or mass-produced for even less.
Hardware
- ESP12-E/F module with ESP8266 SoC and 4 MB flash memory
- VS23S010 video controller with 128k VRAM and composite video output in PAL or NTSC
- 5-bit PCM sound from I2S controller
- MicroSD card slot
- PS/2 and PS/2-compatible USB keyboard interface
- PlayStation controller port
- PCF8575 I/O extender with 16 GPIO pins
- I2C and SPI busses on I/O expansion connector
- power supplied via Micro-USB socket or pin header
- RCA connectors for video and audio
Software
This firmware contains a basic operating system and BASIC interpreter ("Engine BASIC") that allows the BASIC Engine to be used as a stand-alone computer programmable in the BASIC language. It provides easy access to the hardware’s capabilities as well as numerous other features.
Graphics and sound
- 256-color text and graphics at resolutions from 160x200 up to 460x224 (PAL: 508x240) pixels
- Software sprites (up to 32 sprites sized up to 32x32 pixels).
- Scrollable tiled background graphics engine with up to four layers.
- Wavetable synthesizer and
PLAYcommand that renders music in MML format. - Loading and saving of PCX image files to and from video memory.
- Various text fonts built-in, including an ATI 6x8 font (for up to 76 (PAL: 84) characters per line) and PETSCII.
- Direct manipulation of video memory and controller registers possible, permitting higher-color screen modes, custom resolutions and other video effects.
Special BASIC language features
- Structured programming constructs (
DO/LOOP,WHILE/WEND,IF/THEN/ELSE/ENDIFblocks). - Labels and named procedures with local variables.
- Numbers are double-precision floating point.
- String and numeric list types (particularly useful for game programming).
- Escape codes for
PRINT, similar to the control characters in Commodore BASIC. - Event handlers (sprite collision, end-of-music, errors, game controller input).
Development features
- "Screen editor" similar to Commodore BASIC, allowing direct manipulation of on-screen code and commands, while also permitting scrolling within the program in memory.
- Syntax highlighting and automatic indentation in
LISTcommand. - Loading of programs with or without line numbers.
Hardware support
- ESP8266 CPU core running at 160 MHz, ca. 63kB free memory for BASIC applications.
- Files can be stored on FAT32 file systems with long file names on MicroSD card as well as the internal flash memory.
- PlayStation controller support.
- Support for PS/2 and PS/2-compatible USB keyboards (US, Japanese and German layouts supported).
- Access to custom hardware add-ons via the 16-pin GPIO extender or I2C bus.
Network support
- Separate build that provides networking capabilities (cannot be used with tiled BG/sprites and wavetable synthesizer due to resource constraints; both builds can, however, be installed in flash at the same time)
Other features
- Z-code interpreter for playing interactive fiction games.
- ASCII text editor.
- Firmware update from SD card.
- Customizable color scheme, start-up screen mode and font..
- Switchable video luminance filter provides sharp high-contrast graphics on LCD screens when turned off and avoids color artifacts on old CRT screens when turned on.
- Automated test suite adapted from Bywater BASIC.
PCB Errata
Revision 2 of the PCB contains one error:
R6 value is given as "22R", should be "75R".
Revision 1 of the PCB contains two errors:
R6 value is given as "22R", should be "75R".
C3 and C4 values are given as "10p", should be "56p".
Firmware binaries
Binaries are available on Github in the firmware repository. They can be uploaded to the system via the serial port, using esptool:
esptool -cd ck -cb 921600 -cp /dev/ttyUSB0 -ca 0 -cf ttbasic-<version>.bin
If a version of Engine BASIC is already installed, the firmware can be updated from SD card using the command
FLASH "ttbasic-<version>.bin"
If you are interested in the latest features, you can also download nightly builds of the current Git master branch. The files called basicengine-firmware-default-... contain the default firmware (recommended), while the files called basicengine-firmware-net-... contain the network-enabled build.
Sound font
The sound font file 1mgm.sf2 must be copied to the SD card or the internal flash memory for wavetable synthesizer sound to work.
Expansion connector pinout

Schematics
Project page:
https://basicengine.org/
https://github.com/uli/basicengine-pcb
BASIC Engine
*PCBWay community is a sharing platform. We are not responsible for any design issues and parameter issues (board thickness, surface finish, etc.) you choose.
- Comments(0)
- Likes(3)
-
Alfredo Junix
Apr 30,2025
-
Francisco Meza
Feb 04,2024
-
astrodoggie
Jul 12,2023
- 0 USER VOTES
- YOUR VOTE 0.00 0.00
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
More by Alexiev
-
Afterburner - GAL chip programmer for Arduino
This is a GAL IC programmer software that allows to program GAL IC chips from various manfucaturers....
-
ATFBlast - ATF16V8, GAL16V8, ATF22V10 and GAL22V10 chips programmer
ATF16V8, GAL16V8, ATF22V10 and GAL22V10 chips programmer.This is custom PCB variant of ATFBlast proj...
-
ArduTrx Attenuator or Dummy load
IntroductionTo test the ArduTrx or transceivers in general a dummy load is a handy device (https://e...
-
ArduTrx Open Source Hamradio Transceiver for Arduino
The ArdTrx project consists of two parts: the ArduTrx shield and the software. Both parts can be use...
-
MonochromeVGA
MonochromeVGA is a product to enjoy the charm of those monochrome monitors of the time but in the cu...
-
NES64 Make Your Own Joystick
The NES64 is a replacement PCB for use in an existing controller for the Nintendo Entertainment Syst...
-
AY-3-8912 Emulator (AVR-AY)
AY-3-8912 Emulator (AVR-AY)used in many old computers as Amstrad CPC, Oric-1, Colour Genie, Elektor ...
-
4116 dram tester
project by : Muttley Black
-
Covox Speech Thing Sound Card SMD version
he Covox Speech Thing is an external audio device attached to the computer to output digital sound. ...
-
Covox Speech Thing Sound Card for Parallel Port LPT with resistor DAC - Short version
Covox Speech Thing Sound Card for Parallel Port LPT with resistor DAC - Short verionThe short versio...
-
Covox Speech Thing Sound Card for Parallel Port LPT with resistor DAC - Long version
Instead of using two types of resistors with 1/2 relation, I just used all the same types, but doub...
-
8bit ISA IBM XT, 286, 386, 486 Analog input card - Game control adapter
Recreation of IBM Analog input card 99.1 mm* 79.4 mmAn 8-bit ISA card with gameport. It avoids the...
-
Customizable crystal oscillators Half size - can style
Customizable crystal oscillators Full size - can style The ClockInACan is a small circuit board that...
-
Customizable crystal oscillators Full size - can style
The ClockInACan is a small circuit board that is the same size as the oscillator and duplicates the...
-
OCTOBAND – 8 Band PA+LPF Board For uSDX TriBand (An All Mode HF QRP Transceiver)
OCTOBAND – 8 Band PA+LPF Board For uSDX TriBand (An All Mode HF QRP Transceiver) - designed by BAR...
-
C64 Video Enhancement, Analog Only
C64 Video Enhancement, Analog OnlyThe analog circuit that was just meant as a simple replacement to ...
-
Raspberry Pi 360K floppy drive
Project by Scott BakerRaspbian is not a real-time OS, and the FDC is absolutely intolerant of bytes ...
-
APPLE II ProDOS ROM Drive
This is a peripheral card for the Apple ][ series computers that acts as a read-only solid state dis...
-
-
AEL-2011 Power Supply Module
332 0 1 -
AEL-2011 50W Power Amplifier
305 0 1 -
-
-
Custom Mechanical Keyboard
571 0 0 -
Tester for Touch Screen Digitizer without using microcontroller
237 2 2 -
Audio reactive glow LED wristband/bracelet with NFC / RFID-Tags
241 0 1 -
-
-







