Jump-less Dual-Kernal Switcher: Difference between revisions
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..." |
|||
| Line 18: | Line 18: | ||
== Design overview == | == Design overview == | ||
{| class="wikitable" style="width: | {| class="wikitable" style="width:70%; text-align:center;" | ||
! colspan="3" | Major functional blocks (SKS64 reference design) | ! colspan="3" | Major functional blocks (SKS64 reference design) | ||
|- | |- | ||
Revision as of 13:48, 24 April 2025
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
- 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 …).
- Flash the ATtiny13A with ``sks13.hex`` via ISP (AVR-ISP mkII, USBasp, etc.).
- Solder in sockets and logic ICs; fit 330 Ω LED-sense resistor if you wish to flash the front-panel LED.
- 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
- JiffyDOS Kernal Upgrade – the most common alternative ROM paired with this adapter
- C64 Saver – advisable PSU-protector when fitting any internal mod