Virtual Tang Primer 25K

CSA-101 §11.7 + CSA-102 Weeks 1-4. 2D render of the Sipeed Tang Primer 25K + Dock, driven by the same 6502 emulator the §11.8 REPL uses. Bitstream-load animation; 8 GPIO LEDs; 8 input buttons; UART pane. CSA-101 catalog.

How to use this

Pick a demo bitstream from the dropdown (each one is a pre-assembled 6502 program targeting the board's memory-mapped IO). Click Load bitstream to play the load animation; click Run to start the emulator. The 8 LEDs across the top of the board reflect the byte at $D013; the UART console shows whatever the program writes to $D012; the 8 buttons across the bottom let you click input, which the program reads from $D014.

This is the no-hardware path for the CSA-101 Week 8 lab. The real Tang Primer 25K shows the same LED pattern from the same bitstream; the only difference is the synthesis toolchain runs locally for the physical board (per the Week 8 lab writeup) instead of being pre-canned on the academy's side. The board IO contract here matches the real board's pin map, so a program written for this surface runs unchanged on the physical board.

Board Tang Primer 25K + Dock (silkscreen + LEDs + buttons + UART jack + HDMI)

SIPEED TANG PRIMER 25K Gowin GW5A-LV25MG121NES + Dock carrier GOWIN GW5A-LV25MG121NES 23,040 LUT4 / 56 BRAM18 L0 L1 L2 L3 L4 L5 L6 L7 GPIO LEDs (bit 0..7) User buttons (B0..B7) B0 B1 B2 B3 B4 B5 B6 B7
LED port: $D013 low 8 bits drive L0..L7 (bit 0 = L0)
UART: $D012 write appends to console
Button port: $D014 read: bit set if pressed
Program origin: $0200

UART console writes to $D012 land here

_

CPU state A / X / Y / PC / cycles + LED byte

A$00
X$00
Y$00
PC$0200
cycles0
haltedno
LED byte ($D013):0b00000000

Buttons click to press; reads as 1 at $D014

Scope honesty. This round ships board-render + bitstream-load animation + 8-LED GPIO + UART + 8 input buttons. Forward-stretch (deferred per the chain brief): simplified-PPU output pane (256×240 + 4-color palette + 8-sprite overlay) + NES-cart-load animation + Web Audio PWM path. The bitstream loader currently runs one of 5 pre-assembled demo programs on the in-browser 6502 emulator; the integration seam for real .fs bitstream upload (Yosys + nextpnr + gowin_pack output) is the same drop-and-flash UX path, with a Verilog interpreter substituted for the pre-canned program loader. The VirtusLang Workbench (Tab 3) already ships Yosys + nextpnr + Gowin synthesis to a real .fs file in-browser; the seam here is the binding layer that runs the bitstream against this board's pin map.