Jump to content

Jump-less Dual-Kernal Switcher

From RetroTechCollection
Switchless kernal switcher (SKS64)
Caption An SKS64 switchless kernal switcher
Type Internal ROM adapter and kernal switcher
Designer BWACK
Manufacturer Unknown
First released Unknown
Latest revision โ€”
Operating voltage โ€”
Layers / PCB โ€”
Compatibility Commodore 64, C64C, 1541, 1541C, 1541-II
Features โ€”
Model No. โ€”

A switchless kernal switcher plugs into the KERNAL ROM socket and lets the machine hold several kernal images at once, selected from the keyboard rather than from a toggle switch drilled through the case. The best-documented design is BWACK's SKS64.

Every figure below comes from the project's own README and change log.[1]

How you actually switch kernals

[edit | edit source]

There is no double-tap of the reset button and no RUN/STOP combination. The sequence is:[1]

  1. Hold RESTORE for several seconds, until the LED flashes.
  2. Release, then tap RESTORE repeatedly until the LED shows the colour of the kernal you want.
  3. Wait a couple of seconds. The machine resets itself into the selected kernal.

The selected bank is shown as a colour on an RGB LED fitted in place of the power LED โ€” not as a count of blinks.[1]

Reset and cold start

[edit | edit source]
RESTORE key timings
Hold RESTORE for Result
~2 seconds LED flashes; release and wait two seconds for a reset
~5 seconds EXROM reset โ€” a cold start
Several seconds, then tap Enter bank selection

The EXROM reset exists for a real problem: some machine-language programs change how the machine returns from a reset, and without control of EXROM the only way back to BASIC is to power the machine off. By pulling RESET and EXROM together the board can cold-start it.[1]

EXROM reset is only available if the ATtiny's own RESET pin has been disabled by programming the #RSTDISBL fuse โ€” and that can only be done with a high-voltage programmer such as a TL866, not with an ISP programmer. Decide this before you solder the microcontroller down.[1]

It switches the disk drive too

[edit | edit source]

This is the feature most descriptions miss. If an SKS64 is also fitted in the drive and set to 1541 mode, the reset pulse the board issues carries prepended serial data naming the bank number, so the drive switches to its upper bank when the computer switches to bank 1. Fit JiffyDOS in bank 1 on both and the computer and the drive change over together โ€” which is what you want, because a JiffyDOS kernal talking to a stock drive gains you nothing.[1]

ROM layout

[edit | edit source]

Images are placed in 8 K banks on the computer and 16 K banks on the 1541C/1541-II:[1]

What fits in which device
Machine 27C256 (32 K) W27C512 (64 K)
C64 long board 4 kernals 8 kernals
C64 short board BASIC + 3 kernals BASIC + 7 kernals
1541 CBM DOS + JiffyDOS in a 16 K image (27C128)
1541C / 1541-II KERNAL+CBMDOS and KERNAL+JiffyDOS in a 32 K image (27C256)

The short board loses a slot to BASIC. That is not a design compromise, it is the machine: on assembly 250469 the BASIC and KERNAL ROMs are combined into a single 23128 at U4, so the adapter has to carry BASIC in every image set.[2]

Two different boards

[edit | edit source]

There are two PCBs, and they are not interchangeable:[1]

  • "longboard" โ€” C64 long boards, and the 1541 / 1541 Late.
  • "shortboard" โ€” C64C short boards, and the 1541C / 1541-II.

BWACK's own warning is worth repeating: the internals of C64 and C64C cases, and of 1541 and 1541C cases, are often mixed up. Open the case and look at the board before ordering. A machine in a C64C case is not necessarily a short board.[1]

It does need wiring

[edit | edit source]

The board is not purely a plug-in. RESTORE, RESET and EXROM are brought to it by soldering 1 ร— 1 mm pin headers into motherboard vias. Wiring diagrams are published for assemblies 326298, 250407, 250425, 250466 and 250469.[1]

Microcontroller and programming

[edit | edit source]

The current design uses an ATtiny45/85; revision 1.20 (July 2019) replaced the earlier PIC12F629, moved the design from Eagle to KiCad and switched development to the Arduino IDE. The pinouts of the two microcontrollers are different โ€” do not mix them up.[1]

Programming is by ISP (USBasp, or an Arduino Uno as ISP) or by high-voltage programmer (TL866). After programming, the board must be put into setup mode as described in the project's user guide. Either the original power LED or a common-cathode RGB LED can be used.[1]

Revision history

[edit | edit source]
SKS64 revisions
Board Revision Change
Longboard 1.1 (2016-09-08) First schematic and board; #RESTORE and RED_LED swapped because GP3 is input only
Longboard 1.11 (2016-09-10) RGB LED header follows the RGB LED pinout (blueโ€“greenโ€“GNDโ€“red)
Longboard 1.12 (2016-09-18) Larger pads and holes; ground fill removed from the top layer; CERN OHL v1.2 applied
Longboard 1.13 (2016-09-28) IC2 moved to clear the C64 socket
Longboard 1.20 (2019-07-14) KiCad; PIC12F629 โ†’ ATtiny45/85; Arduino IDE
Longboard 1.21 (2019-07-23) 27C512 support, eight banks
Shortboard 1.0 (2019-07-18) Initial design
Shortboard 1.1 (2021-08-10) Jumpers for 1541C / 1541-II support

[1]

Credits

[edit | edit source]

The shortboard version is based on Sven Petersen's C64 Kernal Adaptor Switch for short boards; an older shortboard version lives in DiscoHR's repository; and the idea of reusing the original LED and cable assembly comes from tebl's repository.[1]

[edit | edit source]

References

[edit | edit source]
  1. โ†‘ 1.00 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.10 1.11 1.12 1.13 BWACK, C64 Switchless Multi Kernal 27C256 adapter (SKS64), https://github.com/bwack/C64-Switchless-Multi-Kernal-27C256-adapter . README and change log. Source for the designer, the CERN Open Hardware Licence v1.2, the supported machines, the RESTORE-key switching, reset and EXROM-reset sequences, the RGB-LED bank indication, the ROM bank layouts for long boards, short boards, the 1541 and the 1541C/1541-II, the two PCB variants, the ATtiny45/85 and its predecessor the PIC12F629, the programming routes, the via-wiring requirement for RESTORE, RESET and EXROM, the machines for which wiring diagrams are published, the acknowledgements, and the revision history.
  2. โ†‘ C64 Hardware Reference and Repair Guide (open_cerebrum), https://opencbm.org/doc/c64/hardware_reference_and_repair_guide/pcb/250469.html . Community reference. Component placement for assembly 250469: U4 is a 23128 holding both BASIC ($A000โ€“$BFFF) and KERNAL ($E000โ€“$FFFF).