Repository navigation
Releases
Tab5 PC 1.6.0
Tab5 PC 1.6.0: faster DOS programs and disks, the FPU reported by the BIOS, a 486 with CPUID, and Wi-Fi that stays as you left it. See CHANGELOG.md for the full list and the README for how to use it.
Changes
- Faster DOS programs: the instructions DOS programs still ran in the slow interpreter are now translated: long string copies and searches (REP MOVS/STOS across pages, REP LODS, string compares and scans, backward copies), RCL/RCR, the BCD instructions, POP SS, LAR/LSL, 16-bit SHLD/SHRD. Text-mode video memory goes straight to the emulated VGA's memory. A DOS benchmark's score goes from 83 to about 184. Translated code is also ~20% smaller, so more of it fits the cache: a game's timed demo ~3% faster, Linux workloads 10-13%.
- Faster disks: a write command's sectors go to the card together (a DOS file copy takes half as long, Linux writes ~1.7x faster); sequential reads are read ahead on the other core (DOS ~6 MB/s, Linux ~3.8 MB/s); bus-master DMA for Linux kernels that use it (Sprig Linux 1.5.0: ~4.1 MB/s); CD images read as raw card sectors (4-6 MB/s, a disc change in 0.5 s); a Linux kernel loads in 0.22 s instead of 2.1 s.
- The BIOS reports the math coprocessor: programs that ask the BIOS before using the FPU now use it instead of doing floating point in software (a benchmark's FPU test: 6.5 -> 205 "MHz").
- The 486 has CPUID (
gen = 4): programs can set the EFLAGS ID bit, and CPUID names the maker GenuineIntel, as QEMU's Intel CPU models do. F2XM1 outside -1..+1 leaves its operand as Intel FPUs can. A system information program now reports an 80486DX with its coprocessor. - Wi-Fi stays as you left it, on or off, after a restart, a power-off or a crash.
- The clock: opening the Tab5's web page sets its clock and time zone from your browser's; while Wi-Fi is on, the Tab5 also checks its clock with pool.ntp.org.
- tiny386 updated: blinking text, the cursor's shape, the keyboard's scancode set 2; several of our fixes are now tiny386's own.
- Fixes: 40-column text shows all its columns; and others (see the changelog).
Firmware (one image, written at address 0x0, e.g. esptool --chip esp32p4 write-flash 0x0 tab5-pc-1.6.0-prev3.bin). Writing the image clears the saved settings: choose your Wi-Fi network again in the settings panel (and set your time zone again by opening the web page or with clock tz).
tab5-pc-1.6.0-prev3.bin: for the Tab5 (its ESP32-P4 is revision v1.x: esptool prints "revision v1.x"). Tested.
Licenses and source (the firmware contains third-party software, some of it under the LGPL):
tab5-pc-1.6.0-NOTICES.txt: the notices and license texts of everything in the firmware.tab5-pc-1.6.0-source.tar.gz: the corresponding source (this repository at v1.6.0, tiny386 and ESP-Hosted as patched, SeaBIOS, the BIOS images, the Arduino core as built);SOURCE.txtinside explains how to rebuild.SHA256SUMS
No SD card images are provided: the Tab5 downloads FreeDOS or Sprig Linux itself, or tools/make_sdcard.py prepares a card. See docs/DISTRIBUTION.md.
Tab5 PC 1.5.0
Tab5 PC 1.5.0: screenshots from a camera on the side panel, the Tab5's clock, and faster Linux programs. See CHANGELOG.md for the full list and the README for how to use it.
Changes
- Screenshots: a retro camera in a window on the right side panel (the right panel's four windows now line up with the left panel's keys). Tap it and the PC's picture is saved on the card in
screenshots/as a PNG, at the picture's own size (640 x 400 for text, 320 x 200 for a 256-colour game, 800 x 600 for Sprig Linux's console), named by the day and that day's count:2026-11-05_001.png. The camera's flash lights up, then its light shows green (saved) or red (not saved). It takes about 0.3 s, the PC running on. Serialshotdoes the same. - The Tab5's clock sets the time at the start: screenshots' names, file dates on the card, and the PC's own clock (in UTC), which had no date before. Over the serial console,
clockshows the time,clock YYYY-MM-DD HH:MM:SSsets it (UTC), andclock tz <POSIX TZ>sets your time zone for local dates, e.g.clock tz PST8PDT,M3.2.0,M11.1.0. - Faster Linux programs: the emulated CPU's translator finds the code of indirect jumps more often without a trip through its dispatcher. The lynx web browser lays out a large page ~4.5% sooner; DOS timings are unchanged.
- Serial
codec,spk restartandi2c, for the rare starts after which all sound crackles (see the changelog).
Firmware (one image, written at address 0x0, e.g. esptool --chip esp32p4 write-flash 0x0 tab5-pc-1.5.0-prev3.bin). Writing the image clears the saved settings: choose your Wi-Fi network again in the settings panel (and set your time zone again with clock tz).
tab5-pc-1.5.0-prev3.bin: for the Tab5 (its ESP32-P4 is revision v1.x: esptool prints "revision v1.x"). Tested.
Licenses and source (the firmware contains third-party software, some of it under the LGPL):
tab5-pc-1.5.0-NOTICES.txt: the notices and license texts of everything in the firmware.tab5-pc-1.5.0-source.tar.gz: the corresponding source (this repository at v1.5.0, tiny386 and ESP-Hosted as patched, SeaBIOS, the BIOS images, the Arduino core as built);SOURCE.txtinside explains how to rebuild.SHA256SUMS
No SD card images are provided: the Tab5 downloads FreeDOS or Sprig Linux itself, or tools/make_sdcard.py prepares a card. See docs/DISTRIBUTION.md.
Tab5 PC 1.4.1
Tab5 PC 1.4.1: PAUSE dims the PC's picture instead of the backlight. See CHANGELOG.md for the full list and the README for how to use it.
Changes
- PAUSE dims the PC's picture (to half its brightness) and holds it still: a text mode's cursor stops blinking. The side panels and the backlight stay at the brightness setting; until 1.4.0 the backlight went to a quarter of it, side panels included. The picture comes back in full when the PC goes on.
Firmware (one image, written at address 0x0, e.g. esptool --chip esp32p4 write-flash 0x0 tab5-pc-1.4.1-prev3.bin). Writing the image clears the saved settings: choose your Wi-Fi network again in the settings panel.
tab5-pc-1.4.1-prev3.bin: for the Tab5 (its ESP32-P4 is revision v1.x: esptool prints "revision v1.x"). Tested.
Licenses and source (the firmware contains third-party software, some of it under the LGPL):
tab5-pc-1.4.1-NOTICES.txt: the notices and license texts of everything in the firmware.tab5-pc-1.4.1-source.tar.gz: the corresponding source (this repository at v1.4.1, tiny386 and ESP-Hosted as patched, SeaBIOS, the BIOS images, the Arduino core as built);SOURCE.txtinside explains how to rebuild.SHA256SUMS
No SD card images are provided: the Tab5 downloads FreeDOS or Sprig Linux itself, or tools/make_sdcard.py prepares a card. See docs/DISTRIBUTION.md.
Tab5 PC 1.4.0
Tab5 PC 1.4.0: a CD-ROM tray on the side panel, and fixes. See CHANGELOG.md for the full list and the README for how to use it.
Changes
- CD-ROM tray on the right side panel, between the lights and the battery: it shows the disc's name; a tap opens a dialog with the
.isofiles at the card's root and "No disc", Insert / Eject. The disc changes while the PC runs (the PC is told the medium changed, as by a real drive) and stays in the drive across restarts. Every machine has a CD-ROM drive now, and FreeDOS installs keep their CD-ROM driver. Serialcd [<file>.iso | -]. - Fixes:
- The keyboard and mouse work after RESET: a mouse moved while Linux started after a RESET left it with no keyboard and no mouse ("i8042: No controller found"). A PC reset now resets the keyboard controller, keyboard and mouse, as a real board's reset does.
- A real-mode interrupt keeps the upper half of ESP, which DOS extenders' real-mode calls can rely on.
- The DMA controller's decrement mode transfers downwards, as the 8237 does.
- Serial
Sshows the loudest sample the PC played (peak); serialbeepplays a tone without the PC, to check the speaker.
Firmware (one image, written at address 0x0, e.g. esptool --chip esp32p4 write-flash 0x0 tab5-pc-1.4.0-prev3.bin). Writing the image clears the saved settings: choose your Wi-Fi network again in the settings panel.
tab5-pc-1.4.0-prev3.bin: for the Tab5 (its ESP32-P4 is revision v1.x: esptool prints "revision v1.x"). Tested.
Licenses and source (the firmware contains third-party software, some of it under the LGPL):
tab5-pc-1.4.0-NOTICES.txt: the notices and license texts of everything in the firmware.tab5-pc-1.4.0-source.tar.gz: the corresponding source (this repository at v1.4.0, tiny386 and ESP-Hosted as patched, SeaBIOS, the BIOS images, the Arduino core as built);SOURCE.txtinside explains how to rebuild.SHA256SUMS
No SD card images are provided: the Tab5 downloads FreeDOS or Sprig Linux itself, or tools/make_sdcard.py prepares a card. See docs/DISTRIBUTION.md.
Tab5 PC 1.3.0
Tab5 PC 1.3.0: side panels beside the PC's picture, ISO installs, a faster translator, and fixes. See CHANGELOG.md for the full list and the README for how to use it.
Changes
- Side panels, as on a PC's case: POWER (hold a second: the PC off; tap: on again), RESET (hold a second), PAUSE and SETUP on the left; the power and disk lights (dim, not dark, when off) and the battery on the right. The PC's picture is always 4:3; the settings panel's Side panels switch turns them off.
- The PC off is a state of its own: when its system powers it off, POWER turns it on again.
- ISO in the Machine frame, beside DOS and Linux: a new machine that starts from an installer CD's
.isoon the card, with an empty hard disk, no download or Wi-Fi needed. - Faster translator: a code cache sized from free memory (3-8 MB instead of 3 MB), dead translations brought back when the same code comes back, smaller code with paging, REP MOVS/STOS and 64-bit DIV translated. A graphical desktop's applications start 15-20% faster, a 3D game's timed demo runs ~5% faster, Linux's console prints faster.
- Text modes are drawn 8 dots wide (no stripes in shaded backgrounds);
vga_force_8dm = 0in a machine's ini brings the VGA's 9-dot cells back. - The installers download in 256 KB pieces: FreeDOS's 17 MB in about 40 s instead of 5.5 min.
- Fixes: FreeDOS's EDIT under JemmEx (the FreeDOS installer's default) no longer stops with "exception 06"; the card no longer seems to vanish under Wi-Fi traffic; the speaker no longer turns to noise with Wi-Fi on; no thin dark lines across pictures drawn from the bottom up; the Sound Blaster's DMA drops nothing; side-panel holds and the sound behave with the settings panel open.
Firmware (one image, written at address 0x0, e.g. esptool --chip esp32p4 write-flash 0x0 tab5-pc-1.3.0-prev3.bin). Writing the image clears the saved settings: choose your Wi-Fi network again in the settings panel.
tab5-pc-1.3.0-prev3.bin: for the Tab5 (its ESP32-P4 is revision v1.x: esptool prints "revision v1.x"). Tested.
Licenses and source (the firmware contains third-party software, some of it under the LGPL):
tab5-pc-1.3.0-NOTICES.txt: the notices and license texts of everything in the firmware.tab5-pc-1.3.0-source.tar.gz: the corresponding source (this repository at v1.3.0, tiny386 and ESP-Hosted as patched, SeaBIOS, the BIOS images, the Arduino core as built);SOURCE.txtinside explains how to rebuild.SHA256SUMS
No SD card images are provided: the Tab5 downloads FreeDOS or Sprig Linux itself, or tools/make_sdcard.py prepares a card. See docs/DISTRIBUTION.md.
Tab5 PC 1.2.1
Tab5 PC 1.2.1: on an empty card, the settings panel sets up the first machine from its Machine frame, like any other; README updates. See CHANGELOG.md for the full list and the README for how to use it.
Changes
- Empty card: the separate FreeDOS frame is gone; the Machine frame's Install DOS and Install Linux set up the first machine (its list reads "(none yet)").
- The empty card's offer to start the PC from an installer CD's
.isowent with that frame. The README describes the same set-up by hand, andtools/dosdisk.py newnow gives a disk the firmware's boot code, so a blank C: passes the boot on to the CD. A machine set up that way by 1.2.0 still finishes its install. - README: a screenshot of Sprig Linux starting, and of the empty card's Machine frame.
Firmware (one image, written at address 0x0, e.g. esptool --chip esp32p4 write-flash 0x0 tab5-pc-1.2.1-prev3.bin). Writing the image clears the saved settings: choose your Wi-Fi network again in the settings panel.
tab5-pc-1.2.1-prev3.bin: for the Tab5 (its ESP32-P4 is revision v1.x: esptool prints "revision v1.x"). Tested.
Licenses and source (the firmware contains third-party software, some of it under the LGPL):
tab5-pc-1.2.1-NOTICES.txt: the notices and license texts of everything in the firmware.tab5-pc-1.2.1-source.tar.gz: the corresponding source (this repository at v1.2.1, tiny386 and ESP-Hosted as patched, SeaBIOS, the BIOS images, the Arduino core as built);SOURCE.txtinside explains how to rebuild.SHA256SUMS
No SD card images are provided: the Tab5 downloads FreeDOS or Sprig Linux itself, or tools/make_sdcard.py prepares a card. See docs/DISTRIBUTION.md.
Tab5 PC 1.2.0
Tab5 PC 1.2.0: machines by name, with DOS and Linux installed from the settings panel, a faster fast interpreter, and fixes. See CHANGELOG.md for the full list and the README for how to use it.
Highlights
- Machines: the settings panel's new Machine frame lists the card's machines (
defaultis/tiny386.ini; a machine named N is/tiny386-N.iniwith its files in/N) and restarts into the one you choose. The choice stays through restarts. - Install DOS / Install Linux: give a name and the Tab5 makes a new machine: FreeDOS 1.4 (its own installer runs next), or the latest Sprig Linux release, with every file checked against its checksums. Installing Sprig Linux again under the same name updates its kernel and keeps your files. Installs run in an install mode with no PC running, so all the memory is free for the download.
- Faster: the fast interpreter (used with the translator off, and for what the translator leaves) is about 1.5 times as fast: its handlers in 16-bit, 32-bit and generic copies, cheaper memory checks, and pre-decoded blocks.
- Reliability: a program that goes wild no longer takes the Tab5 down: an exception that can't be delivered becomes a double fault, then a PC reset, as on a real board. AAM 0 raises a divide error; fixes in the fast interpreter.
Firmware (one image, written at address 0x0, e.g. esptool --chip esp32p4 write-flash 0x0 tab5-pc-1.2.0-prev3.bin). Writing the image clears the saved settings: choose your Wi-Fi network again in the settings panel.
tab5-pc-1.2.0-prev3.bin: for the Tab5 (its ESP32-P4 is revision v1.x: esptool prints "revision v1.x"). Tested.
Licenses and source (the firmware contains third-party software, some of it under the LGPL):
tab5-pc-1.2.0-NOTICES.txt: the notices and license texts of everything in the firmware.tab5-pc-1.2.0-source.tar.gz: the corresponding source (this repository at v1.2.0, tiny386 and ESP-Hosted as patched, SeaBIOS, the BIOS images, the Arduino core as built);SOURCE.txtinside explains how to rebuild.SHA256SUMS
No SD card images are provided: the Tab5 downloads FreeDOS or Sprig Linux itself, or tools/make_sdcard.py prepares a card. See docs/DISTRIBUTION.md.
Tab5 PC 1.1.0
Tab5 PC 1.1.0: the PC's network, a faster translator (a Linux guest too), VBE graphics modes up to 1024 x 768, a settings panel and web page in a DOS-era look, and fixes. See CHANGELOG.md for the full list and the README for how to use it.
Highlights
- The PC's network: its NE2000 card (port 300h, IRQ 9) reaches your Wi-Fi network through the Tab5 (DHCP, DNS, address translation). Ports 2222, 2323 and 8080 of the Tab5 lead to the PC's SSH, telnet and web server.
- Faster: more instructions translated, blocks linked across pages, and a 2D engine for a Linux guest's graphics console.
- Graphics: VBE modes up to 1024 x 768, drawn at their own size and scaled to the panel; the picture at 4:3 by default.
- Reliability: translated code made visible to instruction fetch properly (the rare stops in long runs of programs that redraw the whole screen did not happen again in long tests); FreeDOS's installer runs with the translator again (about 15 minutes); restarts no longer lose the SD card now and then.
- Look: the settings panel and the web page in a DOS-era style.
Firmware (one image, written at address 0x0, e.g. esptool --chip esp32p4 write-flash 0x0 tab5-pc-1.1.0-prev3.bin). Writing the image clears the saved settings: choose your Wi-Fi network again in the settings panel.
tab5-pc-1.1.0-prev3.bin: for the Tab5 (its ESP32-P4 is revision v1.x: esptool prints "revision v1.x"). Tested.
There is no image for ESP32-P4 revision v3.x this time: no Tab5 with that chip is out yet (CHIP=postv3 tools/build.sh still builds one).
Licenses and source (the firmware contains third-party software, some of it under the LGPL):
tab5-pc-1.1.0-NOTICES.txt: the notices and license texts of everything in the firmware.tab5-pc-1.1.0-source.tar.gz: the corresponding source (this repository at v1.1.0, tiny386 and ESP-Hosted as patched, SeaBIOS, the BIOS images, the Arduino core as built);SOURCE.txtinside explains how to rebuild.SHA256SUMS
No SD card images are provided: the Tab5 downloads FreeDOS itself, or tools/make_sdcard.py prepares a card. See docs/DISTRIBUTION.md.
Tab5 PC 1.0.0
The first release of Tab5 PC: a 386/486 DOS PC on the M5Stack Tab5. See the README for the first start, copying files over Wi-Fi and the settings.
Firmware (one image, written at address 0x0, e.g. esptool --chip esp32p4 write-flash 0x0 tab5-pc-1.0.0-prev3.bin):
tab5-pc-1.0.0-prev3.bin: for ESP32-P4 chips of revision v1.x (esptool prints "revision v1.x"). Tested.tab5-pc-1.0.0-postv3.bin: for revision v3.x. Built the same way, not yet tested on a device.
Licenses and source (the firmware contains third-party software, some of it under the LGPL):
tab5-pc-1.0.0-NOTICES.txt: the notices and license texts of everything in the firmware.tab5-pc-1.0.0-source.tar.gz: the corresponding source (this repository at v1.0.0, tiny386 and ESP-Hosted as patched, SeaBIOS, the BIOS images, the Arduino core as built);SOURCE.txtinside explains how to rebuild.SHA256SUMS
No SD card images are provided: the Tab5 downloads FreeDOS itself, or tools/make_sdcard.py prepares a card. See CHANGELOG.md and docs/DISTRIBUTION.md.