-
SBC7 v1.2.0
StableAll checks were successfulRelease / build-rpm (push) Successful in 13m21sRelease / build-deb (push) Successful in 14m8sRelease / build-android (push) Successful in 17m4sRelease / build-wasm (push) Successful in 3m48sRelease / release (push) Successful (Homebrew tap step soft-failed, release published)released this
2026-03-29 05:55:32 +00:00 | 119 commits to main since this releaseIf v1.0.0 was the release where SBC7 became a computer, v1.2.0 is the
one where it escaped from the simulator and started living on actual
silicon. The headline: SBC7 now runs on the MiSTer FPGA platform, on
real hardware, with real VGA output and a real keyboard. Along the way
it picked up two new programming languages, a debugger, a web
emulator, and several CPU bug fixes that turned out to matter quite a
lot once the gates were no longer imaginary.(Why no v1.1.0? Because the bugs we found on hardware were
load-bearing enough that we wanted them fixed before anyone else hit
them. Consider the intervening commits a dress rehearsal.)MiSTer FPGA Core
SBC7 runs on the DE10-Nano. Plug it in, pick it from the menu, and
you are looking at the monitor prompt on a real screen driven by real
flip-flops.- VGA output through the MiSTer HDMI scaler. The native 7-bit
color (2R+3G+2B) is expanded to 24-bit, so your television does not
need to know it is only getting 128 colors. - PS/2 keyboard input via a serial bridge. Typed characters,
Backspace, Delete, Enter, and Ctrl+letter all work as expected.
Extended scancodes are filtered to a whitelist so your GUI key does
not type a phantomq. - UART1 routed to the MiSTer serial port, so you can connect an
external terminal for a second channel. - H7X file loading from the OSD. Open the File menu, pick a
.H7Xfile, and typeGat the monitor prompt to run it. This is
how you load TinyBASIC, TinyLISP, and anything else that does not
fit in ROM. - OSD controls: Reset, Programmer's Switch, and Power Cycle (which
clears all RAM -- the FPGA equivalent of pulling the plug). - Joystick mapping: A = Programmer's Switch, Start = Reset,
Select = Power Cycle. For when you want to debug with a gamepad,
which is a sentence nobody expected to write. - Aspect ratio selectable in the OSD for the display purists.
New Programming Languages
SBC7 now ships with three high-level languages:
- TinyBASIC -- a line-numbered BASIC interpreter. PRINT, INPUT,
IF/THEN, GOTO, GOSUB, FOR/NEXT, and the rest of the 1975 starter
kit. If you learned to program on a microcomputer, this will feel
like coming home. - TinyLISP -- a Lisp interpreter with garbage collection, lambda,
define, cons/car/cdr, and arithmetic. Seven bits are enough for
anyone who wants to argue about parentheses. - Both join TinyFORTH, which shipped in v1.0.0 and remains as
stack-happy as ever.
CPU Bug Fixes
These were found the hard way: by running real programs on real
hardware and watching them do the wrong thing.- ST14 [addr] was broken. The DECODE2 condition
ir[1] == 0
excluded ST14 (opcode 0x1E), which meant the CPU skipped fetching
the address bytes and jumped straight to EXECUTE. The write went to
whatever garbage was left on the address bus, cheerfully corrupting
memory. Every program that stores a 14-bit value to an address --
which is to say every nontrivial program -- hit this. TinyBASIC,
TinyFORTH, and TinyLISP all failed on hardware until this was
found. It worked perfectly in the emulator, because of course it
did. - INC A / DEC A set the N flag from the wrong value. The negative
flag was being computed from the accumulator before the
increment or decrement, not after. Subtle, but it meant branches
after INC/DEC could go the wrong way. - Synchronous memory latency. A new MEM_WAIT state in the CPU FSM
gives synchronous RAM time to deliver its data before the CPU reads
the bus. Without it, back-to-back clock enables could read stale
values. A companion hold-off cycle in the clock divider guarantees
this cannot happen.
MiSTer OSD Control Fixes
- Programmer's Switch changed from level-sensitive to
edge-detect with a pulse counter. Previously it only worked on odd
clicks, because the T1 toggle would set on one press and clear on
the next. - Power Cycle changed from R2 (which triggers the MiSTer
framework's own RESET and raced with the RAM-clear FSM) to T2
(toggle only), so the core controls its own destiny. - Extended key filtering tightened to a whitelist of known
scancodes (Delete, Keypad Enter) instead of passing everything
through. Left GUI was arriving asq, which is only charming the
first time.
Emulator and Tooling
- dap7 -- a Debug Adapter Protocol server for VS Code.
Breakpoints, single-stepping, register and memory inspection, and a
live VGA display, all from the comfort of your editor. - Android emulator -- SBC7 in your pocket. The retrocomputing
community has wanted this since approximately never, but here it is. - WASM web emulator -- SBC7 in your browser, no install required.
Thesbc7.jsmodule is reusable for embedding in your own pages. - Web font generation from the built-in VGA character ROM, so the
SBC7 aesthetic can follow you onto the web. - fmt7 assembly formatter and lsp7 language server, plus a
VS Code extension bundling syntax highlighting and LSP
integration. (These shipped in the unpublished v1.0.1 cycle and are
now formally released.)
ROM and Assembly
- Named constants replace magic numbers across all assembly
sources. The code now reads like documentation instead of a hex
dump. - Monitor input buffer moved from I/O space to RAM, freeing I/O
addresses for hardware that actually needs them. - Console output documentation and a character set graphic added to
the docs.
Packaging and CI
- Cross-compilation replaces emulated ARM containers -- aarch64
builds are now fast instead of merely possible. - Unified versioning across all Cargo.toml files, package.json,
deb/rpm packages, and language version strings. One version number
to rule them all. - Homebrew tap support (
brew install bcox/sbc7/sbc7). - Proper runtime dependencies declared in deb and rpm packages.
- Forgejo release creation with automated MiSTer zip upload.
- CC0-1.0 license applied to the project.
Why 1.2.0?
Because the computer is no longer a simulation, the CPU had bugs that
only showed up on real hardware, we added two programming languages,
and incrementing the minor version once did not seem like nearly
enough.Downloads
-
Source code (ZIP)
2 downloads
-
Source code (TAR.GZ)
3 downloads
-
SBC7-1.2.0-debug.apk
2 downloads ·
2026-03-29 06:44:22 +00:00 · 6.7 MiB -
SBC7-1.2.0-release.apk
2 downloads ·
2026-03-29 06:44:23 +00:00 · 5.6 MiB -
SBC7-web-1.2.0.zip
2 downloads ·
2026-03-29 06:44:23 +00:00 · 36 KiB -
SBC7_20260328.zip
12 downloads ·
2026-03-29 02:04:57 +00:00 · 750 KiB -
sbc7-1.2.0-1.aarch64.rpm
2 downloads ·
2026-03-29 06:44:20 +00:00 · 10 MiB -
sbc7-1.2.0-1.x86_64.rpm
3 downloads ·
2026-03-29 06:44:21 +00:00 · 10 MiB -
sbc7-1.2.0-aarch64.tar.gz
2 downloads ·
2026-03-29 06:44:12 +00:00 · 14 MiB -
sbc7-1.2.0-x86_64.tar.gz
2 downloads ·
2026-03-29 06:44:13 +00:00 · 14 MiB -
sbc7-1.2.0.rb
3 downloads ·
2026-03-29 06:44:21 +00:00 · 657 B -
sbc7_1.2.0-1_amd64.deb
2 downloads ·
2026-03-29 06:44:17 +00:00 · 11 MiB -
sbc7_1.2.0-1_arm64.deb
2 downloads ·
2026-03-29 06:44:19 +00:00 · 11 MiB -
vscode-sbc7-1.2.0.vsix
3 downloads ·
2026-03-29 06:44:21 +00:00 · 492 KiB
- VGA output through the MiSTer HDMI scaler. The native 7-bit