commodore · c64
The SID Chip Is a Reservoir Computer
Reservoir computing says don’t train the dynamics, just train the readout. I used the SID’s analog filter as the dynamics and one ridge …
code · Getting Started
Sorting Algorithms Visualized on the Commodore 64
Visualizing sorting algorithms in real-time on the Commodore 64 using PETSCII characters. Three classic algorithms rendered as animated bar charts in …
history · programming
Dorothy Vaughan: Adapt or Become Obsolete
When IBM machines threatened to make her job obsolete, Dorothy Vaughan didn’t retreat—she learned FORTRAN and taught her entire team. Her story …
code · How-To
16-bit Unsigned AND on Commodore 64
Implementing 16-bit unsigned AND operations in Commodore BASIC using two’s complement to work around the signed integer limitation.
code · Getting Started
Dragon Curves
We draw some dragon curves with Logo on the Commodore 64 inspired by Jurassic Park
code · Commodore
The McNuggets Problem
Solving the classic McNuggets Problem in Commodore BASIC: what’s the largest number of nuggets you can’t buy with 6, 9, and 20 packs?
C64 · code
Back to the basics with BASIC (and Python): Binary Search
Why your algorithm choice matters: comparing linear search O(n) vs binary search O(log n) with implementations in Commodore BASIC and Python.
C64 · code
Machine Language: Count Faster on 6502
Optimizing a simple counting loop on the 6502, progressing from slow BASIC to increasingly faster assembly implementations. A practical guide to 6502 …
C64 · code
Visualize and verify the reverse engineered Commodore 64 SID LFSR
Building and verifying the Commodore 64 SID chip’s 23-bit LFSR in hardware on a breadboard and comparing the output against the actual SID chip.
C64 · code
A Gentle Introduction to LFSRs
An introduction to Linear Feedback Shift Registers: how they work, building one on a breadboard with shift registers and XOR gates, and implementing …
C64 · code
Quick Post: Printing binary numbers in Commodore BASIC 2.0
Commodore BASIC 2.0 A lot of fun with binary numbers can be had by printing them to the screen. This is a quick post to show how to do that with …
PET · code
10 Print on the TI-92
Implementing 10PRINT on the TI-92 calculator using TI-BASIC. Also covers Python versions on the Numworks and TI-nspire calculators.
C64 · code
A gentle introduction to two's complement
Understanding two’s complement: how computers represent negative numbers, why it simplifies hardware design, and how to work with signed …
C64 · code
N-Queens problem
Solving the classic N-Queens puzzle using backtracking. Covers both iterative and recursive approaches with implementations on the Commodore 64.
C64 · code
Rail Fence Cipher on Commoodore 64 and TI 99/4A
Implementing the Rail Fence Cipher on the Commodore 64 and TI 99/4A. A fun transposition cipher for secret messages with kids.
C64 · code
Building a software serial bridge
Modern and retro mix One of my favorite peices of retro clone hardware is Bob Corsham’s KIM-1 Clone. I’ve featured it many places like the …
C64 · code
Blinkenlights
Driving LEDs from the VIC-20 and KIM-1 USR ports. Binary counting in the real world with vintage hardware.
C64 · code
40 years on, this is still the best maze algorithm
Exploring the elegant maze generator from Compute! magazine (December 1981). A line-by-line breakdown of how this classic BASIC algorithm works.
C64 · code
Validating Pilish
Writing code to validate Pilish text—prose where word lengths match the digits of Pi. Implementations in Julia and Commodore BASIC.
C64 · code
My mostly retro writing platform contenders in National Novel Writing Month for 2022 NaNoWriMo
Evaluating vintage computers for NaNoWriMo 2022: VIC-20, Plus/4, Commodore 64, and PET. Word processing on 8-bit machines with SpeedScript and other …
Commodore · code
Adding very large integers in 8 Bit BASIC
Adding integers with hundreds of digits using string manipulation in Commodore BASIC. When your numbers are too big for Wolfram Alpha.
code · Commodore
MOS paper tape format
Understanding the MOS paper tape format used by the KIM-1 and other 6502 systems. Breaking down the hex format line by line with checksum …
C64 · code
A little more speed from the 6502
Optimizing 6502 memory transfers beyond the general-purpose approach. Testing on a 1MHz KIM-1 clone with precise timing measurements.
C64 · code
How fast can a 6502 transfer memory
Testing real-world memory transfer speeds on 6502 machines. Inspired by Apple M2 marketing, let’s see what Commodore hardware can actually do.
code · Commodore
Almost primes with TinyBASIC on the KIM-1 clone: PAL-1
Finding k-almost-primes using TinyBASIC on a KIM-1 clone. A look at the copyleft origins of TinyBASIC and Bill Gates’ infamous open letter.
code · Commodore
VIC’s Revenge, the drop-in replacement for the VIC-20 VIC chip Part 1: Introduction, design goals, and FAQs
Starting a year-long project to reverse engineer and create a drop-in FPGA replacement for the VIC-20’s 6560/6561 video chip.
C64 · code
64 Bit Addition and Products on Commodore: The Wheat and Chessboard problem
Implementing 64-bit arithmetic in 6502 assembly to solve the wheat and chessboard problem. Handling numbers too large for standard calculators on …
Commodore · How-To
Vicky-20 S Video Mod Results
Before and after comparison of S-Video mod results on the Vicky-20 PAL replica board. Dramatic improvement over composite output.
C64 · code
Yet another version of the 100 door problem; this time, let's extend Commodore BASIC to add PRINT @, shall we?
Extending Commodore BASIC with a PRINT AT command using machine language, then using it to visualize the 100 door problem.
code · Commodore
Fibonacci 1-10 on the KIM-1 (and clones)
Computing and displaying the first 10 Fibonacci numbers on a KIM-1’s hex display. Learning 6502 assembly the hard way with pencil and paper.
C64 · code
The terrible random number generation in the Commodore 64 (and 128)
Visualizing the poor randomness of RND() on the Commodore 64 and 128 compared to the PET and Plus/4. Clear patterns emerge when you plot the output.
Commodore · hardware
Getting green and amber screens from a MiniPET 40/80
Adding green and amber screen colors to the MiniPET 40/80 replica using a cheap monochrome VGA color adapter from Tindie.
C64 · code
Simple splitting the screen with two colors on the Commodore 64
A quick technique for splitting the Commodore 64 screen into two solid colors by manipulating VIC registers and screen memory.
C64 · code
Permutations of 1 to 9 in Python, BASIC, and 6502 Assembly
Generating all 362,880 permutations of 1-9 the hard way: understanding algorithms instead of relying on library functions. Implementations in Python, …
C64 · code
Can you do Advent of Code on 8-Bit Machines?
Attempting the annual Advent of Code challenge on vintage 8-bit computers. Completing about 60% of puzzles on Commodore hardware.
C64 · code
Quick Tower of Hanoi with Sound on the Commodore 64
Implementing Tower of Hanoi with SID sound on the Commodore 64, inspired by Numberphile’s Ayliean MacDonald video.
C64 · code
Dice frequency
Testing the Commodore 64’s random number generator by simulating dice rolls and comparing the frequency distribution to theoretical values.
Atari · code
A week of diving a little deeper into my Atari 800XL
A week exploring the Atari 800XL from a Commodore guy’s perspective. Comparing BASIC implementations and discovering the platform’s …
C64 · code
Calculating Pi via the Gregory-Leibniz series in BASIC on the Tandy Color Computer 2
Calculating Pi on a Tandy Color Computer 2 with basic (non-Extended) BASIC. Working around the missing exponent function.
C64 · code
Just for fun, the 100 door problem on several different systems
Solving the classic 100 door problem with visual output on multiple vintage systems: VIC-20, C64, PET, Atari, and Color Maximite.
C64 · code
Running Commodore 64 BASIC Programs on a PET
How to load and run Commodore 64 BASIC programs on a PET. Working around the PET’s lack of program relocation.
C64 · code
Making and breaking Ciphers on the Commodore 64, er VIC-20 - Lagged Fibonacci Sequence and a little Monte Carlo while embracing contraints
Generating pseudo-random numbers with the Lagged Fibonacci Sequence on the VIC-20. Building reusable BASIC subroutines for the cipher toolbox.
C64 · code
Running the 8 Bit Show and Tell VIC-20 Super Expander Programming Challenge on the Commodore 64
Porting Robin’s VIC-20 Super Expander programming challenge to the Commodore 64 using Super Expander 64 and Simon’s BASIC.
C64 · Commodore
The retro pinout project
Documenting oscilloscope readings from working vintage computer chips to help diagnose faulty machines. A collaborative troubleshooting resource.
C64 · code
Quick Post: Modulus in BASIC 2 without a cartridge
How to perform modulo operations in Commodore BASIC 2 without a cartridge. A one-line solution for VIC-20 and C64.
C64 · code
Making and breaking Ciphers on the Commodore 64 Part 12 - Pontifex - Solitaire from Cryptonomicon
Implementing Pontifex/Solitaire—the playing card cipher from Cryptonomicon designed by Bruce Schneier—on the Commodore 64.
C64 · code
Making and breaking Ciphers on the Commodore 64 Part 11 - One time pads on a Commodore 64, probably a bad idea
Generating one-time pads on a Commodore 64. Probably a bad idea for real security, but it looks cool.
C64 · code
Making and breaking Ciphers on the Commodore 64 Part 10 - Finding hash collisions with a type in game from 1984
Understanding hash collisions by finding them in a simple checksum from a 1984 type-in game. Demonstrating why weak hashes fail.
C64 · code
Making and Breaking Ciphers with Commodore 64 Part 9 - Finding Smallish Primes
Finding prime numbers on the Commodore 64 for cryptographic purposes. A practical introduction to primes and primality testing.
C64 · code
Quick Post: Slow text on the Commodore
How to display text character by character with delays in 6502 assembly using Turbo Macro Pro. A quick tip for a 12-year-old learning assembly.
C64 · Commodore
The Commodore 64 N.O.O.C.U.L.A.R. futbal project
Building a portable Commodore 64 development rig using a Pelican case, external monitor, and either TheC64 or Ultimate 64 for on-the-go retro …
C64 · code
Making and breaking Ciphers on the Commodore 64 Part 8 - RC4
Implementing the RC4 stream cipher on the Commodore 64, exploring the algorithm that powered WEP, WPA, and many other encryption protocols.
C64 · Commodore
Repairing a Commodore 128 and DIY Chris's RAM tester review
Repairing a Commodore 128 with bad RAM using DIY Chris’s RAM tester to diagnose and replace faulty 4164 memory chips.
C64 · code
Making and breaking Ciphers on the Commodore 64 Part 7 - Pseudo Random with Linear Congruential Generators
Exploring pseudo-random number generation on the Commodore 64 using Linear Congruential Generators, a key building block for cryptographic …
C64 · code
Making and Breaking Ciphers with a Commodore 64 - Part 6: XOR is Magical - Data recovery
Understanding the XOR operation and its magical properties for data recovery in cryptography and disk storage on the Commodore 64.
C64 · code
Finding the Prodigal Easter Egg inside the Easter Egg on a Commodore 64
A deep dive video exploring hidden Easter eggs within an Easter egg on a 35-year-old album discovered using a Commodore 64.
C64 · code
Quick post: Determining length in Commodore Assembly
A quick tutorial on determining string length in 6510 assembly language, comparing the approach to Python’s simple len() function.
C64 · code
Benchmarking Retro Computers (mostly Commodore) with marginal methods
Benchmarking BASIC execution speed across various retro computers using jiffy timing, comparing Commodore machines and other vintage systems.
C64 · Commodore
Jiffies in Assembly
How to use the Commodore 64’s jiffy clock for benchmarking in both BASIC and assembly language, measuring time in 1/60th second increments.
C64 · Commodore
Making and Breaking Ciphers with a Commodore 64 - Part 5: Wargames
Recreating the WarGames movie launch code sequence on the Commodore 64, implementing brute-force hash table searching in assembly.
code · Commodore
Calculating Pi via the Gregory-Leibniz series in BASIC on the VIC-20
Calculating Pi using the Gregory-Leibniz series in BASIC on the VIC-20 for Pi Day, demonstrating the inefficient but educational iterative approach.
C64 · code
Quick Post: Commodore 64 Simple Addition Efficiency
Comparing two assembly language approaches to counting to 16 million on the Commodore 64, demonstrating significant performance differences.
C64 · Commodore
c0pperdragon verdict
Comparing various video output improvements for vintage Commodore computers including RF modulator replacement, chroma resistor mod, and the …
C64 · Commodore
Making and Breaking Ciphers with a Commodore 64 - Part 4: The PIN Program from Terminator 2
Recreating the Terminator 2 ATM PIN cracker scene on the Commodore 64, using SID chip random numbers and 6502 assembly.
C64 · Commodore
Making and Breaking Ciphers with a Commodore 64 - Part 3: The Caesar Cipher
Building a Caesar cipher encoder and brute-force decoder on the Commodore 64, demonstrating how to crack simple substitution ciphers programmatically.
C64 · code
Making and Breaking Ciphers with Python, er Commodore- Part 2: The Shift Cipher
Implementing the shift cipher on the Commodore 64, encoding messages by rotating alphabet positions similar to a physical code wheel.
C64 · Commodore
Replacing an RF Modulator on a Commodore 64C
Replacing the RF modulator on a PAL Commodore 64C with an S-Video bypass board to dramatically improve video output quality.
C64 · Commodore
Making and Breaking Ciphers with Python, er, a Commodore- Part 1: The Reverse Cipher
Starting a series on implementing ciphers in Commodore assembly language, beginning with a simple string reversal as the first building block.
C64 · Commodore
Simple, 'unbreakable' encryption with a pencil
Implementing a one-time pad cipher by hand using dice-generated random numbers, inspired by the encryption methods in Cryptonomicon.
C64 · Commodore
Getting started with Native Commodore 64 Assembly
A beginner’s guide to learning 6502 assembly programming on the Commodore 64, including recommended tools, resources, and development …
C64 · Commodore
Friday fun: Games I'm playing in Jan 2021
Reviewing Soul Force and Outrage, two modern Commodore 64 games from Protovision being played on a PAL 64C.
C64 · retro
Did you do that on real hardware?
A defense of using modern conveniences like LCD monitors, SD2IEC devices, and flash cartridges with vintage computers, explaining the practical …
Commodore · C64
Merry Christmas
A Christmas greeting featuring a Commodore 64 holiday demo video.
C64 · Commodore
Why does there have to be a why?
Reflections on getting back into 8-bit computing after building Ben Eater’s breadboard 6502, and why learning vintage assembly language …