A complete Commodore 64, running inside Jet64.

Breadbox is a from-scratch C64 emulator built as a Jet64 cart. It emulates the 6510, VIC-II, SID, both CIAs, the keyboard, joysticks, disk drives and IEC bus. It supports PAL and NTSC, four mounted drives, save states, real ROM overrides, an optional cycle-exact VIC-II and a full 1541 driven by its own emulated 6502.

This browser edition is free, self-contained and fully usable. It is also a demonstration of the machine beneath it: Jet64 carts are ordinary C programs running against a small virtual computer, and that computer is capable of hosting another computer in full. Emulators inside emulators!


Start here

  1. At the C64 prompt, type LOAD"*",8 and press Enter.
  2. When loading finishes, type RUN and press Enter.

This opens the original public-domain Jet64 welcome disk: a small 6502 program with an on-screen guide to the emulator. Nothing else is required.

Windowed first, fullscreen second

The web player has two working modes. File import belongs to the windowed player; the Page Down control layer belongs to fullscreen. Prepare the machine in this order:

  1. Remain windowed and drag in every .d64 disk and owned ROM dump you intend to use.
  2. When the files have been added, press Ctrl/Cmd + Shift + F to enter fullscreen.
  3. In fullscreen, use the Page Down controls to mount disks, select drives and configure the emulator.

File importing works only while windowed. The Page Down controls work only in fullscreen. If you need another file later, leave fullscreen with Ctrl/Cmd + Shift + F, add it, then return to fullscreen.

The C64 keyboard

Normal typing goes to the C64. The default symbolic keymap is best for entering BASIC because it produces the character printed on your modern keyboard. Press End to switch to the positional keymap, which follows the physical C64 key positions and is often better for games.

  • Enter — RETURN
  • Backspace or Delete — DEL
  • Arrow keys — the C64 cursor keys
  • Esc — RUN/STOP
  • Home — HOME
  • Ctrl — CTRL
  • Alt/Option — Commodore key
  • Page Up — RESTORE

If your browser consumes a key, open the complete on-screen C64 keyboard with Page Down + K. Click keys to hold them, build any combination you need, then click PRESS. CLR releases the held keys; CLOSE or Page Down dismisses the keyboard.

Disks in the browser

While the emulator is windowed, drag every .d64 you need onto the running player. Then enter fullscreen and press Page Down + B to open the disk browser and mount them. Imported files are saved in this browser only. They are never uploaded.

The ADD DISKS… action uses the browser's file importer, which works only in windowed mode. The simplest web workflow is therefore to add your disks before fullscreen. To add another later, leave fullscreen, drag it onto the player, then return to fullscreen and reopen the disk browser.

  • Up/Down — choose a disk
  • Left/Right — choose drive 8, 9, 10 or 11
  • Home — return to the first item
  • Enter — mount the selected disk
  • Delete or Backspace — remove an imported disk; press Enter to confirm
  • Esc or Page Down — close the disk browser

For a two-disk game, mount side A in drive 8 and side B in drive 9. The software can then find the second disk without a manual swap. The default virtual drive is fast and convenient. With your own 1541.rom, the emulator can instead run a complete 1541 for fastloaders, custom disk code and protected media.

Page Down controls

These controls work in fullscreen mode. Hold Page Down while pressing the second key. These commands are kept outside the C64 keyboard matrix, so they never appear on the BASIC command line.

Media and machine

  • Page Down + B — open the disk browser at drive 8
  • Page Down + 8 — choose a disk for drive 8
  • Page Down + 9 — choose a disk for drive 9
  • Page Down + N — mount the next disk in drive 8
  • Page Down + R — restore the bundled welcome disk to drive 8
  • Page Down + O — ROM import request; on this web build, add ROMs by drag-and-drop while windowed before entering fullscreen
  • Page Down + K — open the on-screen C64 keyboard
  • Page Down + Up — RESTORE; a compact-keyboard alternative to Page Up

State and reset

  • Page Down + S — save the complete machine state
  • Page Down + L — load the saved state
  • Insert or Page Down + Backspace — soft reset
  • Shift + Insert or Page Down + Shift + Backspace — hard reset / power cycle

On a Mac, the key labelled Delete normally reports as Backspace, so the hard-reset chord is Page Down + Shift + Delete. A hard reset clears C64 RAM and re-reads any newly imported ROMs.

Emulation options

  • Page Down + D — fast virtual drive / full 1541; the full drive requires 1541.rom
  • Page Down + V — scanline / cycle-exact VIC-II
  • Page Down + P — Pepto / Colodore palette
  • Page Down + T — PAL / NTSC
  • Page Down + J — place the primary controller on joystick port 2 / port 1
  • Page Down + W — warp full-1541 loading while the drive motor is running
  • Page Down + I — show / hide the live input monitor

Using your own C64 ROMs

Why doesn't it look exactly like the C64 I remember? This legal browser build contains no copyrighted Commodore firmware. It ships with a complete MIT-licensed BASIC and clean-room OpenROMs replacements for the KERNAL and character generator, so it works immediately without redistributing Commodore's ROMs.

For the most authentic appearance and the broadest software compatibility, drag ROM dumps from a C64 you own onto the emulator while it is windowed. Add every ROM you need before entering fullscreen. Accepted filenames are:

  • basic.bin or basic.rom — 8 KiB
  • kernal.bin or kernal.rom — 8 KiB
  • chargen.bin, chargen.rom or characters.bin — 4 KiB
  • 1541.rom or 1541.bin — 16 KiB

When the files have been imported, enter fullscreen and perform a hard reset: Page Down + Shift + Backspace. The new ROMs remain private to your browser and persist there for later visits.

This emulator has broad software compatibility, all the game gifs featured on this page are captured directly from this machine.

Gamepad

The first controller uses C64 joystick port 2 by default. A second controller automatically uses the other port. Use Page Down + J when a game expects its main joystick in port 1.

  • D-pad or left stick — joystick
  • A or B — fire
  • Y — C64 F1
  • X — C64 F3
  • Left bumper — C64 F5
  • Right bumper — C64 F7

On the on-screen keyboard, the D-pad or left stick moves, A holds a key, Start presses the selected combination and B closes it.


Breadbox is not a recording or a simulation - it is the machine: processor, video, sound, interrupts, buses, disks and input, running live in a web page. It was made with Jet64 as both a useful emulator and a clear statement of what a Jet64 cart can be.


Licences. No Commodore firmware is included. This build bundles the MEGA65 OpenROMs images — KERNAL, character generator and a fallback BASIC — unmodified under the LGPL-3.0 (© Paul Gardner-Stephen; Roman Standzikowski), and Microsoft 6502 BASIC v1.1 under the MIT licence (© Microsoft). The full notices, the LGPL and the GNU GPL it extends, and the pinned upstream commits their corresponding source is obtained from, travel with the build in THIRD_PARTY_LICENSES.txt.

Published 14 hours ago
StatusIn development
PlatformsHTML5
Author73v3
AI DisclosureAI Assisted, Code

Leave a comment

Log in with itch.io to leave a comment.