What is the ABN6502 r2?

The ABN6502 is my 6502 single-board computer. It drives a VGA monitor straight from video RAM through a character ROM and takes a PS/2 keyboard. The r2 firmware is a 32 KiB ROM with a memory monitor on F1.

This emulator runs that real firmware in a browser, so you can try the machine without the board.

Memory map and hardware

Things to try

  1. Type. Click the VGA screen and type. The stock ROM greets you with a WarGames line and has a reply ready.
  2. F1 memory monitor. Press F1. The first page starts at $0000 and is all zeroes, because reset clears RAM. Press Page Down once to start at $00D8 and see the live zero-page variables. Up/Down move 8 bytes, Page Up/Down move a screen, and Esc exits.
  3. F4 BASIC. Press F4 for the bundled Microsoft/OSI BASIC, accept its defaults with Enter twice, or use the new BASIC programs drawer to start it and send an editable example listing at a paced rate.
  4. Fullscreen. The Fullscreen button uses the browser Fullscreen API where it works, with an in-page fallback for iOS Safari. Because browsers keep Escape for leaving fullscreen, there's an on-screen Esc to ROM button.
  5. On a phone. Tap the VGA screen to open the phone keyboard. The key drawer has F1–F12, arrows, Page Up/Down, Home, Enter, Backspace and Esc, and arrow and Page keys repeat while held. In portrait fullscreen the ROM's text area is zoomed; Show full VGA shows the whole frame.
  6. Under the hood. Reset, pause and single-step, and watch the program counter and cycle count.
  7. Your own ROM. Load a 32 KiB ROM image from your computer. It's read with the browser File API and never uploaded. Reload the page to get the bundled ROM back.

Accuracy and limits

ROM provenance

The bundled main and character ROMs come from my local abn6502 build dated 2026-01-04 (SHA-256 bea5a8b7a49b486e957e258ca880146261d9389c228c9cea8cbe650b55a73720 and bf9b4069145162fce4604ac26cc730c93471d193bec13b0f2512b85c101e152b). The source is AndersBNielsen/abn6502 at revision 362d3be71346befc8ffa2cc800983913bc3cbf5f, but that build set WIDTH and WIDTH2 to 46 in defines_abn6502.s instead of the committed 40. So the main ROM isn't claimed to be byte-for-byte reproducible from the committed source without that change.

Run it yourself

Download the source ZIP from the page footer and serve the site/ folder with any static HTTP server, for example:

python3 -m http.server 8066 --directory site

Then open http://localhost:8066/. npm test checks a real-ROM boot and the keyboard path.

Licensing

Links