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
PLAY
command 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
/ENDIF
blocks). - 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
LIST
command. - 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(2)
- 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...
-
-
-
kmMiniSchield MIDI I/O - IN/OUT/THROUGH MIDI extension for kmMidiMini
113 0 0 -
DIY Laser Power Meter with Arduino
163 0 2 -
-
-
Box & Bolt, 3D Printed Cardboard Crafting Tools
156 0 2 -
-
A DIY Soldering Station Perfect for Learning (Floppy Soldering Station 3.0)
563 0 2