Jump to content

Jump-less Dual-Kernal Switcher

From RetroTechCollection
Revision as of 13:47, 24 April 2025 by Josh (talk | contribs) (Created page with "{{Infobox hardware | name = Jump-less Dual-Kernal Switcher | image = 250px | caption = A switch-less SKS64 board installed inside an early ''Assy 250407'' C64 (EPROM not fitted) | developer = Community-developed (original concept & firmware by ''bwack''; later boards by PCBWay Open Source Project, Byte-Munchers, Retrowhiz et al.) | type = Internal, switch-less multi-KERNAL ROM adapter | first_r...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump-less Dual-Kernal Switcher
Caption A switch-less SKS64 board installed inside an early Assy 250407 C64 (EPROM not fitted)
Type Internal, switch-less multi-KERNAL ROM adapter
Designer Community-developed (original concept & firmware by bwack; later boards by PCBWay Open Source Project, Byte-Munchers, Retrowhiz et al.)
Manufacturer Unknown
First released 2018 (v0.9 proof-of-concept)
Latest revision SKS64 v1.1 / Switchless-27C010 PCB (2022)
Operating voltage +5 V DC (from C64 mainboard)
Layers / PCB
Compatibility Commodore 64 / 64C / SX-64 ‹long- & short-boards›
Features
Model No.

The Jump-less Dual-Kernal Switcher (often called the switch-less or jumper-less KERNAL board) is an open-hardware add-on that lets a Commodore 64 toggle between two —or up to sixteen—KERNAL ROM images without any external toggle-switch, jumper wire, or case mod. Selection is performed entirely from the keyboard or by a special reset-pulse sequence, leaving the computer’s case stock-looking and the user free from “which switch is which?” confusion.

Why replace / switch KERNALs?

  • Run a fast-loading DOS such as JiffyDOS while still retaining the stock Commodore KERNAL for compatibility.
  • Alternate between region ROMs (PAL vs NTSC) or diagnostic ROMs (Dead-Test, Diag64).
  • Test self-built or patched KERNALs without repeatedly desoldering chips.

Design overview

Major functional blocks (SKS64 reference design)
EPROM / Flash
27C256 (4 × 8 KB)
27C512 (8 × 8 KB)
27C010 (16 × 8 KB)
ATtiny13A μC
Decodes reset / RESTORE pulses,
latches two address bits to pick the bank
74xx logic
HCT08 & HCT02 gate ROM CS
and isolate the bus during bank switch
The board plugs into the KERNAL socket (U4 on long-boards, U4/U32 on 250469) and requires no cuts or flying leads.

The micro-controller runs at 9.6 MHz (internal RC) and samples ~60 Hz VSYNC from the VIC-II to time-out key-presses reliably over PAL & NTSC. Two GPIO lines drive A15/A16 of the EPROM through 10 k pull-ups, giving up to 4/8/16 selectable images depending on device size.

Switch-less selection methods

  • Short double-reset – press the C64 reset button twice within < 0.9 s.
  • Long RESTORE hold – hold the RESTORE key ≥ 1 s while tapping RUN/STOP.

The μC counts either event and advances an internal bank counter; the chosen bank number is flashed back on the C64 power LED (1-long, 2-long, …). A cold-reset is then issued.

Board variants

PCB / Project EPROM Max banks Notes
SKS64 v1.1 27C256/512/010 4-16 Most popular; plated-through-hole; Gerbers on GitHub. :contentReference[oaicite:4]{index=4} Bwack 27C256 adapter 27C256 4 Original proof-of-concept; SMD ATtiny13A; published 2018. :contentReference[oaicite:5]{index=5} Switchless-27C020 27C020 32 Experimental; needs extra 74HC139 for A17 gating. SaRuMan-64 KS 29F040 flash 64 Adds USB-ASP header for in-system reflashing.

All share the same firmware with a single compile-time constant (``#define BANKS``).

Compatibility

  • Long-boards: 326298, 250407, 250425, 250466 – direct plug-in.
  • Short-board 250469-(xx): requires /HIRAM jumper wired to A14 because the 16 KB ROM is mapped as a single chip; most switcher PCBs include a solder-bridge.
  • SX-64 & VIC-20 CR: electrically identical 2364 pinout, confirmed working with minor socket shims.

No effect on cartridges—the KERNAL is banked only after reset, so memory configuration is stable during normal operation.

Building & flashing

  1. Program the EPROM with your chosen images in contiguous 8 KB blocks. (Popular layout: C= KERNAL bank 0, JiffyDOS bank 1, Diagnostic bank 2, SpeedDOS bank 3 …).
  2. Flash the ATtiny13A with ``sks13.hex`` via ISP (AVR-ISP mkII, USBasp, etc.).
  3. Solder in sockets and logic ICs; fit 330 Ω LED-sense resistor if you wish to flash the front-panel LED.
  4. Plug the assembly into U4, minding orientation; no other wiring needed on long-boards.

Using the switcher

Action Key / button sequence Result
Next bank Double-tap reset Cycles 0 → 1 → 2…
Previous bank Hold RESTORE ≥1 s, then tap RUN/STOP Cycles backwards (firmware ≥1.1)
Identify bank Hold RESTORE ≥3 s LED blinks current bank count
Force cold-boot Hold RESTORE while power-on Bypasses autoboot carts

Advantages

  • No holes or toggles – perfect for collector-grade cases.
  • One-hand operation – useful when the rear panel is obstructed.
  • Multiple ROM sizes supported – simply fit a larger EPROM for more images.
  • Works in parallel with cartridge port DOS accelerators (e.g., Kung Fu Flash).

Limitations

  • Cannot change bank while code is executing; must reset.
  • Requires stable +5 V (excessive ripple may brown-out the ATtiny).
  • Firmware presently uses a fixed LED blink protocol—may clash with aftermarket LED dimmers.

See also