<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Code Like It&apos;s 198x</title><description>Learn programming by building games on classic 8-bit and 16-bit systems. New units, tutorials, and articles about retro game development.</description><link>https://code198x.com/</link><language>en-gb</language><item><title>From the Metal: A pointer is just an address you stored somewhere</title><link>https://code198x.com/from-the-metal/pointers/</link><guid isPermaLink="true">https://code198x.com/from-the-metal/pointers/</guid><description>Pointers feel abstract until a 6502 strips them bare — two bytes holding an address, and one addressing mode that goes and reads it.</description><pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Unit 5: Give a useful clue — Meet BASIC (Spectrum)</title><link>https://code198x.com/systems/sinclair-zx-spectrum/basic/meet-basic/unit-05-give-a-useful-clue/</link><guid isPermaLink="true">https://code198x.com/systems/sinclair-zx-spectrum/basic/meet-basic/unit-05-give-a-useful-clue/</guid><description>Compare a guess with a known secret, then give a clue that helps someone choose again.</description><pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Unit 6: Keep guessing — Meet BASIC (Spectrum)</title><link>https://code198x.com/systems/sinclair-zx-spectrum/basic/meet-basic/unit-06-keep-guessing/</link><guid isPermaLink="true">https://code198x.com/systems/sinclair-zx-spectrum/basic/meet-basic/unit-06-keep-guessing/</guid><description>Ask again after a wrong guess, count attempts and reject numbers outside the rules.</description><pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Unit 7: Choose a new secret — Meet BASIC (Spectrum)</title><link>https://code198x.com/systems/sinclair-zx-spectrum/basic/meet-basic/unit-07-choose-a-new-secret/</link><guid isPermaLink="true">https://code198x.com/systems/sinclair-zx-spectrum/basic/meet-basic/unit-07-choose-a-new-secret/</guid><description>Turn a random fraction into a whole number, then test the range.</description><pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Unit 8: Feedback and another round — Meet BASIC (Spectrum)</title><link>https://code198x.com/systems/sinclair-zx-spectrum/basic/meet-basic/unit-08-feedback-and-another-round/</link><guid isPermaLink="true">https://code198x.com/systems/sinclair-zx-spectrum/basic/meet-basic/unit-08-feedback-and-another-round/</guid><description>Add readable colours, short sounds and a choice to play again.</description><pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Unit 9: Choose an answer — Meet BASIC (Spectrum)</title><link>https://code198x.com/systems/sinclair-zx-spectrum/basic/meet-basic/unit-09-choose-an-answer/</link><guid isPermaLink="true">https://code198x.com/systems/sinclair-zx-spectrum/basic/meet-basic/unit-09-choose-an-answer/</guid><description>Give Oracle Stone three responses and let chance choose between them.</description><pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Unit 10: Give the answer a rhythm — Meet BASIC (Spectrum)</title><link>https://code198x.com/systems/sinclair-zx-spectrum/basic/meet-basic/unit-10-give-the-answer-a-rhythm/</link><guid isPermaLink="true">https://code198x.com/systems/sinclair-zx-spectrum/basic/meet-basic/unit-10-give-the-answer-a-rhythm/</guid><description>Use pauses and a counted loop to make the answer arrive deliberately.</description><pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Unit 11: Write the repeated job once — Meet BASIC (Spectrum)</title><link>https://code198x.com/systems/sinclair-zx-spectrum/basic/meet-basic/unit-11-write-the-repeated-job-once/</link><guid isPermaLink="true">https://code198x.com/systems/sinclair-zx-spectrum/basic/meet-basic/unit-11-write-the-repeated-job-once/</guid><description>Replace a duplicated heading with a routine that returns to its caller.</description><pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Unit 12: Put it somewhere — Meet BASIC (Spectrum)</title><link>https://code198x.com/systems/sinclair-zx-spectrum/basic/meet-basic/unit-12-put-it-somewhere/</link><guid isPermaLink="true">https://code198x.com/systems/sinclair-zx-spectrum/basic/meet-basic/unit-12-put-it-somewhere/</guid><description>Place a marker using a row and column, then store its position.</description><pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Unit 13: Make it move — Meet BASIC (Spectrum)</title><link>https://code198x.com/systems/sinclair-zx-spectrum/basic/meet-basic/unit-13-make-it-move/</link><guid isPermaLink="true">https://code198x.com/systems/sinclair-zx-spectrum/basic/meet-basic/unit-13-make-it-move/</guid><description>Compare leaving a trail with erasing a marker as its position changes.</description><pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Unit 14: Let the player steer — Meet BASIC (Spectrum)</title><link>https://code198x.com/systems/sinclair-zx-spectrum/basic/meet-basic/unit-14-let-the-player-steer/</link><guid isPermaLink="true">https://code198x.com/systems/sinclair-zx-spectrum/basic/meet-basic/unit-14-let-the-player-steer/</guid><description>Read the keyboard without stopping for a typed answer and check movement boundaries.</description><pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Unit 15: One press, one step — Meet BASIC (Spectrum)</title><link>https://code198x.com/systems/sinclair-zx-spectrum/basic/meet-basic/unit-15-one-press-one-step/</link><guid isPermaLink="true">https://code198x.com/systems/sinclair-zx-spectrum/basic/meet-basic/unit-15-one-press-one-step/</guid><description>Wait for release, add a quit key and save the finished movement experiment.</description><pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: The Program Is Not What Runs — Unit 01 (foundations)</title><link>https://code198x.com/foundations/from-source-to-silicon/unit-01/</link><guid isPermaLink="true">https://code198x.com/foundations/from-source-to-silicon/unit-01/</guid><description>You write words. The processor only ever sees numbers. Something has to stand between them, and the interesting question is when it does its work.</description><pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: Translating As You Go — Unit 02 (foundations)</title><link>https://code198x.com/foundations/from-source-to-silicon/unit-02/</link><guid isPermaLink="true">https://code198x.com/foundations/from-source-to-silicon/unit-02/</guid><description>Read a line, work out what it means, do it. Then do all of that again the next time the same line comes round.</description><pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: Translating Once — Unit 03 (foundations)</title><link>https://code198x.com/foundations/from-source-to-silicon/unit-03/</link><guid isPermaLink="true">https://code198x.com/foundations/from-source-to-silicon/unit-03/</guid><description>Turn the whole program into numbers before it runs, then get out of the way. The thinnest translator that does this fits in eight lines, and you are about to write it.</description><pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Unit 4: What Speed Costs You — Unit 04 (foundations)</title><link>https://code198x.com/foundations/from-source-to-silicon/unit-04/</link><guid isPermaLink="true">https://code198x.com/foundations/from-source-to-silicon/unit-04/</guid><description>Going down to the metal buys speed and sells comfort. This is what you hand over, with nothing left off the bill.</description><pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Unit 5: Put It on the Clock — Unit 05 (foundations)</title><link>https://code198x.com/foundations/from-source-to-silicon/unit-05/</link><guid isPermaLink="true">https://code198x.com/foundations/from-source-to-silicon/unit-05/</guid><description>What speed buys you, and why the gap is a number you should measure for yourself rather than a claim you take from a page.</description><pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: The Same Table, Drawn — Unit 01 (foundations)</title><link>https://code198x.com/foundations/gates-and-the-adder/unit-01/</link><guid isPermaLink="true">https://code198x.com/foundations/gates-and-the-adder/unit-01/</guid><description>A gate is a truth table with wires. Set the inputs and the output follows, row by row.</description><pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: The Half Adder — Unit 02 (foundations)</title><link>https://code198x.com/foundations/gates-and-the-adder/unit-02/</link><guid isPermaLink="true">https://code198x.com/foundations/gates-and-the-adder/unit-02/</guid><description>Adding two bits needs two answers. One of them is XOR and the other is AND, which means you have already built it.</description><pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: The Full Adder and the Ripple — Unit 03 (foundations)</title><link>https://code198x.com/foundations/gates-and-the-adder/unit-03/</link><guid isPermaLink="true">https://code198x.com/foundations/gates-and-the-adder/unit-03/</guid><description>Give the adder a third input and chain the carries together, and you can add numbers of any size out of nothing but gates.</description><pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: True and False — Unit 01 (foundations)</title><link>https://code198x.com/foundations/truth-tables/unit-01/</link><guid isPermaLink="true">https://code198x.com/foundations/truth-tables/unit-01/</guid><description>A question has exactly two answers, so you can write down every case there is and stop guessing.</description><pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: Both, Either, Different — Unit 02 (foundations)</title><link>https://code198x.com/foundations/truth-tables/unit-02/</link><guid isPermaLink="true">https://code198x.com/foundations/truth-tables/unit-02/</guid><description>Two questions make four cases. AND, OR and XOR are three of the ways of answering them.</description><pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: Two Guards, One Guard — Unit 03 (foundations)</title><link>https://code198x.com/foundations/truth-tables/unit-03/</link><guid isPermaLink="true">https://code198x.com/foundations/truth-tables/unit-03/</guid><description>A truth table can prove that a tangled test and a plain one behave identically, which lets you swap one for the other.</description><pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: Make the Spectrum answer — Meet BASIC (Spectrum)</title><link>https://code198x.com/systems/sinclair-zx-spectrum/basic/meet-basic/unit-01-make-the-spectrum-answer/</link><guid isPermaLink="true">https://code198x.com/systems/sinclair-zx-spectrum/basic/meet-basic/unit-01-make-the-spectrum-answer/</guid><description>Enter a greeting, turn it into a program, and change what it says.</description><pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: Remember a name; keep the program — Meet BASIC (Spectrum)</title><link>https://code198x.com/systems/sinclair-zx-spectrum/basic/meet-basic/unit-02-remember-and-save/</link><guid isPermaLink="true">https://code198x.com/systems/sinclair-zx-spectrum/basic/meet-basic/unit-02-remember-and-save/</guid><description>Give a name a place in memory, use it in a greeting, and keep your work.</description><pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: Ask, then use the answer — Meet BASIC (Spectrum)</title><link>https://code198x.com/systems/sinclair-zx-spectrum/basic/meet-basic/unit-03-ask-and-use-the-answer/</link><guid isPermaLink="true">https://code198x.com/systems/sinclair-zx-spectrum/basic/meet-basic/unit-03-ask-and-use-the-answer/</guid><description>Let someone supply the words, then turn their answers into a sentence.</description><pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Unit 4: A story worth sharing — Meet BASIC (Spectrum)</title><link>https://code198x.com/systems/sinclair-zx-spectrum/basic/meet-basic/unit-04-a-story-worth-sharing/</link><guid isPermaLink="true">https://code198x.com/systems/sinclair-zx-spectrum/basic/meet-basic/unit-04-a-story-worth-sharing/</guid><description>Give the meeting a place and another event, then arrange and save the finished story.</description><pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate></item><item><title>What&apos;s New: Meet BASIC: from a greeting to your first story</title><link>https://code198x.com/updates/meet-basic-first-story/</link><guid isPermaLink="true">https://code198x.com/updates/meet-basic-first-story/</guid><description>Four new Spectrum BASIC lessons take you from your first instruction to a story you can change, save and share.</description><pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate></item><item><title>From the Metal: Why the bytes come out backwards</title><link>https://code198x.com/from-the-metal/endianness/</link><guid isPermaLink="true">https://code198x.com/from-the-metal/endianness/</guid><description>The 6502 stores the low byte first, the 68000 the high byte first. Watch both side by side and see where garbled hex dumps and htons() come from.</description><pubDate>Tue, 01 Sep 2026 00:00:00 GMT</pubDate></item><item><title>From the Metal: Why your structs have holes in them</title><link>https://code198x.com/from-the-metal/struct-alignment/</link><guid isPermaLink="true">https://code198x.com/from-the-metal/struct-alignment/</guid><description>On the 68000 a misaligned word read traps, it doesn&apos;t run slow. Struct padding is the silicon keeping every field on a legal even address.</description><pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate></item><item><title>From the Metal: Mario moves in fractions of a pixel</title><link>https://code198x.com/from-the-metal/fixed-point/</link><guid isPermaLink="true">https://code198x.com/from-the-metal/fixed-point/</guid><description>The NES has no floating point. Mario&apos;s momentum is 8.8 fixed-point — the same trick that keeps money in whole cents instead of a drifting float.</description><pubDate>Tue, 18 Aug 2026 00:00:00 GMT</pubDate></item><item><title>From the Metal: The register is the bitfield</title><link>https://code198x.com/from-the-metal/bitmasks-and-registers/</link><guid isPermaLink="true">https://code198x.com/from-the-metal/bitmasks-and-registers/</guid><description>On the ZX Spectrum one byte to port $FE drives the border, speaker and tape at once — so you mask bits to set them. Where chmod 755 and packed flags come from.</description><pubDate>Tue, 11 Aug 2026 00:00:00 GMT</pubDate></item><item><title>From the Metal: The fastest function is the one you already ran</title><link>https://code198x.com/from-the-metal/lookup-tables/</link><guid isPermaLink="true">https://code198x.com/from-the-metal/lookup-tables/</guid><description>On the 68000 a multiply costs up to seventy cycles and sine doesn&apos;t exist — so you precompute a table and read it forever. Memoisation, demoscene-style.</description><pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate></item><item><title>From the Metal: Racing the beam</title><link>https://code198x.com/from-the-metal/racing-the-beam/</link><guid isPermaLink="true">https://code198x.com/from-the-metal/racing-the-beam/</guid><description>The NES has no framebuffer: the beam paints one scanline at a time, so all video work happens in vblank — where VSync, tearing and double buffering come from.</description><pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate></item><item><title>From the Metal: &quot;Stack overflow&quot; is a real place</title><link>https://code198x.com/from-the-metal/the-stack/</link><guid isPermaLink="true">https://code198x.com/from-the-metal/the-stack/</guid><description>On the 68000 the stack is just the A7 register walking down through RAM — making stack frames, recursion&apos;s cost and &apos;stack overflow&apos; all literal.</description><pubDate>Tue, 21 Jul 2026 00:00:00 GMT</pubDate></item><item><title>From the Metal: Why everything is a power of two</title><link>https://code198x.com/from-the-metal/powers-of-two/</link><guid isPermaLink="true">https://code198x.com/from-the-metal/powers-of-two/</guid><description>The Z80 has no multiply instruction, so it lays bare why a power-of-two size makes modulo free — and why hash tables get rounded to 1,024.</description><pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate></item><item><title>From the Metal: When 255 + 1 = 0</title><link>https://code198x.com/from-the-metal/twos-complement/</link><guid isPermaLink="true">https://code198x.com/from-the-metal/twos-complement/</guid><description>On a 6502, 255 + 1 = 0 and $80 is both 128 and −128. The byte quirks that look like language bugs are two&apos;s complement out in the open.</description><pubDate>Tue, 07 Jul 2026 00:00:00 GMT</pubDate></item><item><title>What&apos;s New: Dash — a finishable NES game</title><link>https://code198x.com/updates/dash-complete/</link><guid isPermaLink="true">https://code198x.com/updates/dash-complete/</guid><description>The NES track&apos;s on-ramp: steer a runner, time a jump over the sweep, collect three coins to turn the level. Seventeen units from a blank screen to a cartridge, all driven off the NMI loop.</description><pubDate>Mon, 06 Jul 2026 00:00:00 GMT</pubDate></item><item><title>What&apos;s New: All four launch machines have a game you can finish</title><link>https://code198x.com/updates/four-finishable-games/</link><guid isPermaLink="true">https://code198x.com/updates/four-finishable-games/</guid><description>Spectrum, C64, Amiga and NES each now open with a complete game, built one technique at a time — a title screen, a win and a loss, the lot. Not a demo: a small game you can play to the end.</description><pubDate>Mon, 06 Jul 2026 00:00:00 GMT</pubDate></item><item><title>What&apos;s New: The shipped games learned to be lost</title><link>https://code198x.com/updates/stakes-pass/</link><guid isPermaLink="true">https://code198x.com/updates/stakes-pass/</guid><description>A pass over every finished game to make sure each has real stakes — a win you earn and a loss you can genuinely hit. Flock now shows both its endings, and a couple of latent bugs that quietly made games un-losable are closed.</description><pubDate>Sun, 05 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 9: The Keep&apos;s Gold — Shadowkeep (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/shadowkeep/unit-09/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/shadowkeep/unit-09/</guid><description>Three rooms you can wander, and nothing to do in them. Scatter gold through the keep, let the thief lift each coin as he steps on it, and make the last one matter: collect them all and the keep stands.</description><pubDate>Sat, 04 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 10: Something in the Dark — Shadowkeep (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/shadowkeep/unit-10/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/shadowkeep/unit-10/</guid><description>The keep has never had anyone in it but you. Give it a second figure — a Warden, drawn the same way as the thief, with its own private patch of screen to save and restore — and set it walking a slow, fixed route of its own.</description><pubDate>Sat, 04 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 11: Join the Sleepers — Shadowkeep (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/shadowkeep/unit-11/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/shadowkeep/unit-11/</guid><description>The Warden walks, but it cannot touch you. Give its touch a consequence — the one the keep has lacked since the first room — and the Place stops being a walk and becomes a game: step where it steps, and you join the sleepers.</description><pubDate>Sat, 04 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 12: A Warden for Every Room — Shadowkeep (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/shadowkeep/unit-12/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/shadowkeep/unit-12/</guid><description>One Warden in one room is a demo. Turn the Warden into data — a table with a line per room — so every room instantiates its own patrol on the coins&apos; ground, and the whole keep, at last, is a game.</description><pubDate>Sat, 04 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 13: Light and Shadow — Shadowkeep (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/shadowkeep/unit-13/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/shadowkeep/unit-13/</guid><description>The keep is a finished game — but lit like a warehouse, every cell the same cold blue. Hang a torch and let the dithering you met in Unit 2 become lighting: pick each floor cell&apos;s shade by its distance from the flame, so a pool of light fades into the dark.</description><pubDate>Sat, 04 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 14: Furnishings — Shadowkeep (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/shadowkeep/unit-14/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/shadowkeep/unit-14/</guid><description>A lit room is still a bare room. Add the things light falls on — a statue, banners, a scatter of rubble — as tiles in the palette. Bright ones you walk around, dim ones you walk over, and the keep starts to feel inhabited.</description><pubDate>Sat, 04 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 15: Mood through Constraint — Shadowkeep (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/shadowkeep/unit-15/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/shadowkeep/unit-15/</guid><description>The lighting engine is built; now compose with it. Give each room its own falloff — one byte — so the Hall reads as a broad lit chamber and the Vault as a near-black crypt lit only at the altar. Same two colours, same dither; restraint is the technique.</description><pubDate>Sat, 04 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 16: A Keep with Character — Shadowkeep (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/shadowkeep/unit-16/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/shadowkeep/unit-16/</guid><description>Compose the whole keep as one place. Let a room hold more than one torch — each floor cell lit by its nearest flame — and use that with per-room falloff to give every chamber its own character from one coherent toolset.</description><pubDate>Sat, 04 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 17: Footsteps and Doors — Shadowkeep (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/shadowkeep/unit-17/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/shadowkeep/unit-17/</guid><description>The keep&apos;s events already sound — coins chime, victory flourishes, capture tolls. What&apos;s missing is the sound of the place itself. From the same one-bit beeper, add a footfall under every step and a falling creak at every door: sound as place, not as feedback.</description><pubDate>Sat, 04 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 18: A Theme in One Voice — Shadowkeep (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/shadowkeep/unit-18/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/shadowkeep/unit-18/</guid><description>Write music on one bit. Turn the note-table into a tune the title loops while it waits — pitch/duration pairs driving the beep primitive — and compose a short, solemn theme in D minor. One voice, no harmony: the melody carries the whole mood alone, and the keypress is never swallowed.</description><pubDate>Sat, 04 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 19: Stand or Sleep — Shadowkeep (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/shadowkeep/unit-19/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/shadowkeep/unit-19/</guid><description>Everything is here — the game plays, sounds, lights and sings. This unit seals it: a hand-pixelled crown of stone over the title, and the course&apos;s own proof met head-on — a run to each ending, THE KEEP STANDS and THE KEEP SLEEPS, both reachable, both real. And the proof earns its keep: driven to the edge, it catches a tie that read a won game as a lost one — the same ordering bug that hid in Gloaming and The Long Night — and closes it.</description><pubDate>Sat, 04 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 5: Reading the Keys — Gloaming (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-05/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-05/</guid><description>Fill the loop&apos;s INPUT stage: select a keyboard half-row through port $FE, read it with IN A,(C), test the active-low bits — and the lamplighter glows the instant a direction key goes down.</description><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 6: One Step — Gloaming (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-06/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-06/</guid><description>The four keys become four directions: propose a target cell, clamp it to the map, then move — first without erasing (he smears), then with the naive erase (the floor pays). Honest movement, with its costs on show.</description><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 7: Taming the Key — Gloaming (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-07/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-07/</guid><description>Pay the WAY-TOO-FAST debt: a combined any-key scan, a countdown timer that gates the step, and a release re-arm — so a tap is one step, instantly, and a hold is a stride at a chosen pace.</description><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 8: Save and Restore — Gloaming (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-08/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-08/</guid><description>Repay the gouge: a nine-byte buffer remembers what the lamplighter stands on — eight bitmap rows and an attribute — and the move becomes a dance with a strict order: restore, step, save, draw.</description><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 9: Walls — Gloaming (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-09/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-09/</guid><description>The map gets opinions: two brick buildings arrive as rectangle data, walk on as paint you can ghost through — then wall_at bit-tests the target cell&apos;s attribute, and everything brick turns solid at once.</description><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 10: Edges — Gloaming (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-10/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-10/</guid><description>Retire the scaffold: prove the numeric clamp is dead code by moving its fence where you can see it, then delete it whole — the square&apos;s own walls are the boundary, and the movement core converges with the finished game, byte for byte.</description><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 11: The Lamps — Gloaming (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-11/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-11/</guid><description>The game&apos;s first real objects: an unlit lantern glyph, drawn once the direct way — then eight of them scattered from a data table, standing on walkable floor, and surviving the lamplighter&apos;s passage untouched.</description><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 12: Light It — Gloaming (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-12/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-12/</guid><description>Give crossing a lamp its consequence — the obvious way first, painting the screen, and the light won&apos;t stay. Then the real way: edit the lamp&apos;s nine bytes while the buffer holds them, and restore paints it back lit, permanently.</description><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 13: The Tally — Gloaming (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-13/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-13/</guid><description>Give the game a score you read at a glance: eight pip cells on the HUD ledge that&apos;s been waiting since Unit 2, one byte counting lit lamps, and a hook in the single line where cold becomes lit.</description><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 14: The Square Warms — Gloaming (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-14/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-14/</guid><description>Progress becomes atmosphere: the frame&apos;s colour stops being a constant and becomes a nine-entry ramp indexed by lit_count — dusk stone, warming mortar, a bright glow, and gold at eight — repainted at the same event that warms a pip.</description><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 15: The Night Is Held — Gloaming (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-15/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-15/</guid><description>The game learns to end: printing with the Spectrum&apos;s own ROM font — demonstrated on a claim nobody earned — then a game_state byte, a gated loop, and a win check that fires the frame the eighth lamp lights. THE NIGHT IS HELD.</description><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 16: The Draught — Gloaming (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-16/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-16/</guid><description>The dark gets its agent: a second cell sprite on the lamplighter&apos;s own engine, hunting him with one compare-and-step rule that reads as intent — ghosting through stone, tangling buffers on contact, and finally taught to stop at his side.</description><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 17: Lives, and the Fall of Night — Gloaming (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-17/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-17/</guid><description>Price the touch: three ember pips, a lose_life that respawns him through the same dance as any move — and the playtest lesson built wrong first: without the wisp&apos;s recoil, the night strip-mines every life in under a second.</description><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 18: A Small Sound — Gloaming (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-18/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-18/</guid><description>The beeper is one bit on one port, toggled by hand — and from it, three voices: a rising blip when a lamp catches, a fanfare for the night held, a settling sting for the fall. The machine clears its throat.</description><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 19: The Title — Gloaming (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-19/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-19/</guid><description>The game gets a front door: GLOAMING on a black void, PRESS SPACE, a dusk chime — built hardwired first, then done properly: the boot-time setup becomes init_game, and beginning becomes a thing the game can do, not just a thing that happens once.</description><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 20: Again — Gloaming (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-20/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-20/</guid><description>The last arrow: win or lose, SPACE returns you to a title that remembers your best night — what persists, what&apos;s reborn, and an input lock to make every transition deliberate. The state machine closes and the module converges on the shipped game — and then the winnability gate does its job: two bugs the proof found, a tie that steals a win and a wall that kills, closed for good.</description><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: The Dark Seeks the Light — The Long Night (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/the-long-night/unit-01/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/the-long-night/unit-01/</guid><description>The hunt generalises: a Manhattan scan over every lit lamp — and your own flame — replaces the single-target chase, and the wisp learns to take back what you lit, using your own saved-under trick against you.</description><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: It Carries Its Prize Home — The Long Night (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/the-long-night/unit-02/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/the-long-night/unit-02/</guid><description>Behaviour needs rhythm, not just rules: a one-byte mode flag gives the wisp a cycle — hunt, snuff, withdraw, rest — and every theft buys the lamplighter a window he can plan inside.</description><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: The Pools of Light — The Long Night (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/the-long-night/unit-03/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/the-long-night/unit-03/</guid><description>Claimed ground: every lit lamp warms the eight cells around it, rebuilt from lamp truth after every change — and the restore-both-movers discipline that keeps two sprites honest while the world recolours under them.</description><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 4: The Tendril — The Long Night (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/the-long-night/unit-04/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/the-long-night/unit-04/</guid><description>The night takes territory: every cell the wisp crosses turns to solid, impassable dark, held in a fixed-length ring buffer whose oldest claim always releases — no permanent walls, by construction — plus the two gap bugs the real build hit, and their fixes.</description><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 5: The Night Bears Grudges — The Long Night (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/the-long-night/unit-05/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/the-long-night/unit-05/</guid><description>The eraser problem: greedy-nearest camps your work, so the night learns to reclaim the ground it lost first — a lit-order queue replaces the Manhattan scan, and the sharpest design lesson in the module gets its name.</description><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 6: The Night Deepens — The Long Night (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/the-long-night/unit-06/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/the-long-night/unit-06/</guid><description>One dusk becomes a five-watch night: the run/watch state split, a win screen that deepens instead of ending, escalation as two data tables and a corner probe — and a small lie in the lives display, caught and fixed.</description><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 7: Dawn Breaks — The Long Night (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/the-long-night/unit-07/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/the-long-night/unit-07/</guid><description>A run needs an ending you can reach: the fifth watch held becomes the true win — a new state, the morning&apos;s own screen, and a blocking ceremony that sweeps the square gold row by row.</description><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 8: The Dusk Bells — The Long Night (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/the-long-night/unit-08/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/the-long-night/unit-08/</guid><description>The title&apos;s one-shot chime becomes a real tune — and a tune changes the input contract of every screen that returns to the title. Deaf rests, listening rests, a latched keypress, and the snuff finally finds its voice.</description><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 9: Your Longest Night — The Long Night (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/the-long-night/unit-09/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/the-long-night/unit-09/</guid><description>What deserves to survive changed: the best-lives row becomes the watches you survived — a replacement, not an addition, and the only unit whose diff removes working code from the game you inherited.</description><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 10: The Dawn Phrase — The Long Night (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/the-long-night/unit-10/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/the-long-night/unit-10/</guid><description>Motif discipline: the dawn gets its own voice — dusk&apos;s bell answered and reversed — auditioned by ear from three candidates in notation. Your build is the shipped game, byte for byte — and then the winnability gate does its work: a fifth-watch tie that denied the dawn, and a wall that killed through the wisp, both inherited from Gloaming&apos;s engine, both closed.</description><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: The Empty Square — Gloaming (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-01/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-01/</guid><description>Build the town square in three runnable steps — hold the border black, wipe the pixel canvas, wash in dark cobbles and frame them in blue walls — one attribute byte per cell, the screen itself the map.</description><pubDate>Thu, 02 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: The Cobbles and the Brick — Gloaming (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-02/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-02/</guid><description>Write the bitmap under the attributes — meet the Spectrum&apos;s famous screen layout, blit an 8-byte texture into every ground cell, then let the map itself decide where the brick goes.</description><pubDate>Thu, 02 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: The Lamplighter — Gloaming (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-03/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-03/</guid><description>Draw the game&apos;s first character — eight bytes of figure blitted like any texture, his position held as data, and his own attribute colour to lift him out of the dark.</description><pubDate>Thu, 02 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 4: The Heartbeat — Gloaming (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-04/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/gloaming/unit-04/</guid><description>Replace the idle spin with a frame-locked loop — IM 1, EI, and HALT beat once per 50 Hz frame — then build a one-line probe to watch the pulse, and take it out again.</description><pubDate>Thu, 02 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: Ten Fingers, Two Wires — Unit 01 (foundations)</title><link>https://code198x.com/foundations/counting-in-twos/unit-01/</link><guid isPermaLink="true">https://code198x.com/foundations/counting-in-twos/unit-01/</guid><description>Why we count in tens and the machine counts in twos, and how a row of switches spells an ordinary number.</description><pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: Four Bits at a Time — Unit 02 (foundations)</title><link>https://code198x.com/foundations/counting-in-twos/unit-02/</link><guid isPermaLink="true">https://code198x.com/foundations/counting-in-twos/unit-02/</guid><description>Hex gives each half of a byte a single symbol, so the writing still shows you the switches.</description><pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: Two Bytes Together — Unit 03 (foundations)</title><link>https://code198x.com/foundations/counting-in-twos/unit-03/</link><guid isPermaLink="true">https://code198x.com/foundations/counting-in-twos/unit-03/</guid><description>A byte stops at 255. Put two side by side and you can count to 65535, which is why that number is all over these machines.</description><pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 4: A Minus With No Minus Sign — Unit 04 (foundations)</title><link>https://code198x.com/foundations/counting-in-twos/unit-04/</link><guid isPermaLink="true">https://code198x.com/foundations/counting-in-twos/unit-04/</guid><description>How a row of switches stands for a negative number, and why that turns subtraction into ordinary addition.</description><pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: Switch by Switch — Unit 01 (foundations)</title><link>https://code198x.com/foundations/working-the-bits/unit-01/</link><guid isPermaLink="true">https://code198x.com/foundations/working-the-bits/unit-01/</guid><description>Four tools that work a byte one switch at a time, to keep some bits, force others on, and flip the ones you choose.</description><pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: Slide the Whole Row — Unit 02 (foundations)</title><link>https://code198x.com/foundations/working-the-bits/unit-02/</link><guid isPermaLink="true">https://code198x.com/foundations/working-the-bits/unit-02/</guid><description>Shifting slides every bit sideways at once, which is the machine&apos;s quickest way to multiply and divide by two.</description><pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: A Letter Is a Number — Unit 03 (foundations)</title><link>https://code198x.com/foundations/working-the-bits/unit-03/</link><guid isPermaLink="true">https://code198x.com/foundations/working-the-bits/unit-03/</guid><description>The machine holds nothing but numbers, so a letter is a number too. Which number is an agreement, and the agreement has a pattern in it.</description><pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 4: Numbers That Aren&apos;t Whole — Unit 04 (foundations)</title><link>https://code198x.com/foundations/working-the-bits/unit-04/</link><guid isPermaLink="true">https://code198x.com/foundations/working-the-bits/unit-04/</guid><description>A machine that counts in whole steps still has to carry half a pixel. The flexible answer is to let the point float, and it is never exact.</description><pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 5: Nailing the Point Down — Unit 05 (foundations)</title><link>https://code198x.com/foundations/working-the-bits/unit-05/</link><guid isPermaLink="true">https://code198x.com/foundations/working-the-bits/unit-05/</guid><description>Fix the point at an agreed scale and a fraction becomes an ordinary whole number, which the machine adds at full speed.</description><pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate></item><item><title>From the Metal: Why &quot;unroll your loops&quot; is real advice</title><link>https://code198x.com/from-the-metal/unroll-your-loops/</link><guid isPermaLink="true">https://code198x.com/from-the-metal/unroll-your-loops/</guid><description>On a 6502 the loop is not free — it&apos;s instructions that run every iteration. Count the cycles by hand and &apos;unroll your loops&apos; stops being folklore.</description><pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Field Notes: What You&apos;re Allowed to Call Things</title><link>https://code198x.com/field-notes/what-youre-allowed-to-call-things/</link><guid isPermaLink="true">https://code198x.com/field-notes/what-youre-allowed-to-call-things/</guid><description>Sinclair BASIC forbids a multi-letter string variable; the C64 treats &apos;speed&apos; and &apos;spell&apos; as the same variable. Neither naming rule is arbitrary — each is the interpreter&apos;s memory model, leaking through.</description><pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Field Notes: What Attribute Clash Actually Taught</title><link>https://code198x.com/field-notes/what-attribute-clash-actually-taught/</link><guid isPermaLink="true">https://code198x.com/field-notes/what-attribute-clash-actually-taught/</guid><description>The Spectrum&apos;s one-colour-per-8×8-cell limit is its signature look — and the Ultimate &apos;proof&apos; that you could do great sprites in a single cell is a myth. What the constraint really taught.</description><pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Field Notes: The Game That Couldn&apos;t Be Won</title><link>https://code198x.com/field-notes/the-game-that-couldnt-be-won/</link><guid isPermaLink="true">https://code198x.com/field-notes/the-game-that-couldnt-be-won/</guid><description>Sixteen verified curriculum units added up to an unwinnable game — a jump one pixel short of the pit. The oldest distinction in testing, sixteen pixels wide and four months old.</description><pubDate>Tue, 16 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Field Notes: Filming a Race Condition</title><link>https://code198x.com/field-notes/filming-a-race-condition/</link><guid isPermaLink="true">https://code198x.com/field-notes/filming-a-race-condition/</guid><description>The fixed Amiga build refused to show its own bug — because a race condition&apos;s real inputs are cycles, and everything that costs cycles is secretly an input.</description><pubDate>Sun, 14 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 17: The Curve — Starfield (C64)</title><link>https://code198x.com/commodore-64/assembly/starfield/unit-17/</link><guid isPermaLink="true">https://code198x.com/commodore-64/assembly/starfield/unit-17/</guid><description>Starfield works; nothing escalates. A wave counter, a speed table and a live fall speed put a difficulty curve in the game; a SID jingle gives the title a voice; and a dwell on both ends of the loop lets the endings land. Then the winnability gate does its work: the turret park — park under the lane, hold fire, never lose — is closed with a real LFSR spawn, full-field 9-bit enemies, and a hunt that leaves no square safe. And finally the game gets a curve worth playing: the swarm grows from three enemies to six over the waves, the hunt tightens late, and a four-digit score can hold a long game.</description><pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 13: The Duck — Flock (Amiga)</title><link>https://code198x.com/commodore-amiga/assembly/flock/unit-13/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/assembly/flock/unit-13/</guid><description>A second ferry paddles the other way — and dips under to feed on a cycle you can learn. The platform becomes the hazard, and the vanishing trick costs no new death code at all: no pixels, no evidence.</description><pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 14: The Cow — Flock (Amiga)</title><link>https://code198x.com/commodore-amiga/assembly/flock/unit-14/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/assembly/flock/unit-14/</guid><description>The farmyard&apos;s biggest resident takes the verge — half a pixel a frame of patient, unstoppable bulk. The mover learns fixed-point fractions, the last sprite pair fills up, and one forgotten invitation tells on itself.</description><pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 15: The Black Sheep — Flock (Amiga)</title><link>https://code198x.com/commodore-amiga/assembly/flock/unit-15/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/assembly/flock/unit-15/</guid><description>One sheep in eight is black — worth four crossings&apos; score, and quicker on her feet than you&apos;re used to. Randomness on a machine that has none, palette pokes into a live Copper list, and the game&apos;s best sound.</description><pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 16: The Nervous Sheep — Flock (Amiga)</title><link>https://code198x.com/commodore-amiga/assembly/flock/unit-16/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/assembly/flock/unit-16/</guid><description>Time pressure without a clock on the screen: stand still too long mid-crossing and she trembles, frets aloud, and finally bolts — three involuntary hops with the stick ignored. Pressure that only ever lands on the shepherd who stops.</description><pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 17: The Title — Flock (Amiga)</title><link>https://code198x.com/commodore-amiga/assembly/flock/unit-17/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/assembly/flock/unit-17/</guid><description>FLOCK over the farmyard, Baa Baa Black Sheep on Paula, press fire to begin — and underneath it the state machine every finished game runs on: title, play, won, lost, and back round for one more go.</description><pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 18: The Whole Flock Home — Flock (Amiga)</title><link>https://code198x.com/commodore-amiga/assembly/flock/unit-18/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/assembly/flock/unit-18/</guid><description>The finale: a level table that quickens the lanes, hurries the duck and frays her nerves; a shepherd&apos;s bonus for a clean flock; and a feel pass on the hop itself. Eighteen units, one finished game.</description><pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 17: The Last Yard — Dash (NES)</title><link>https://code198x.com/nintendo-entertainment-system/assembly/dash/unit-17/</link><guid isPermaLink="true">https://code198x.com/nintendo-entertainment-system/assembly/dash/unit-17/</guid><description>A win that means something: collect every coin and the level turns over — coins return, the obstacle quickens from a speed table, an L digit joins the HUD. A tiny pulse-channel sequencer gives the title a tune and both endings a voice. The game becomes a loop with a curve.</description><pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Field Notes: The Sheep That Slid Off the Hay Bale</title><link>https://code198x.com/field-notes/the-sheep-that-slid-off-the-hay-bale/</link><guid isPermaLink="true">https://code198x.com/field-notes/the-sheep-that-slid-off-the-hay-bale/</guid><description>A pixel-every-nine-frames drift in an Amiga game turns out to be a torn longword read of the beam position — and the forty-year-old confirm-read idiom that fixes it.</description><pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: The Farmyard — Flock (Amiga)</title><link>https://code198x.com/commodore-amiga/assembly/flock/unit-01/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/assembly/flock/unit-01/</guid><description>Compose the playfield: the Copper paints the farmyard&apos;s bands from above, and one bitplane plays fence, footbridge and lane markings — recoloured per band.</description><pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: The Sheep — Flock (Amiga)</title><link>https://code198x.com/commodore-amiga/assembly/flock/unit-02/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/assembly/flock/unit-02/</guid><description>The first hardware sprite: a white sheep standing in the field. Denise overlays her on the farmyard for free — sprite data is a list of words, her position is two more.</description><pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: Steering — Flock (Amiga)</title><link>https://code198x.com/commodore-amiga/assembly/flock/unit-03/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/assembly/flock/unit-03/</guid><description>The joystick arrives. Read the stick each frame, hop the sheep in 8-pixel steps, rewrite the sprite&apos;s POS/CTL — position is data, and now the player owns it.</description><pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 4: The Amble — Flock (Amiga)</title><link>https://code198x.com/commodore-amiga/assembly/flock/unit-04/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/assembly/flock/unit-04/</guid><description>Two pictures of the same sheep and a pointer that alternates between them on every hop. Animation is choosing which data the sprite channel fetches — nothing more.</description><pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 5: The Tractor — Flock (Amiga)</title><link>https://code198x.com/commodore-amiga/assembly/flock/unit-05/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/assembly/flock/unit-05/</guid><description>The first sprite nobody steers. A red tractor crosses the lane on a fixed, learnable loop — deterministic traffic is the skill this whole game is built on.</description><pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 6: Squashed — Flock (Amiga)</title><link>https://code198x.com/commodore-amiga/assembly/flock/unit-06/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/assembly/flock/unit-06/</guid><description>CLXDAT arrives — the hardware that watches every sprite and reports what touched what. Sheep meets tractor, the bit goes up, and Flock becomes a game.</description><pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 7: The Flock in Hand — Flock (Amiga)</title><link>https://code198x.com/commodore-amiga/assembly/flock/unit-07/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/assembly/flock/unit-07/</guid><description>The flock is finite: five sheep, shown as icons on a HUD strip at the foot of the screen. Each loss takes one. When the strip empties, the field empties too.</description><pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 8: Busy Lanes — Flock (Amiga)</title><link>https://code198x.com/commodore-amiga/assembly/flock/unit-08/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/assembly/flock/unit-08/</guid><description>The cart and the Land Rover join the tractor — three speeds, two directions, one data-driven mover, and a collision mask that watches every lane at once.</description><pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 9: The Fold — Flock (Amiga)</title><link>https://code198x.com/commodore-amiga/assembly/flock/unit-09/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/assembly/flock/unit-09/</guid><description>Somewhere to arrive: reach an empty pen and she&apos;s safe for good — a white resident in the fold, drawn on the scene&apos;s new second bitplane. Fill all five and the level is won.</description><pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 10: Keeping Score — Flock (Amiga)</title><link>https://code198x.com/commodore-amiga/assembly/flock/unit-10/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/assembly/flock/unit-10/</guid><description>The HUD strip&apos;s second job: +5 for surviving the road, +25 for a sheep safely home — one binary word, peeled into decimal digits with DIVU and stamped in a glyph font.</description><pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 11: A Soft Baa — Flock (Amiga)</title><link>https://code198x.com/commodore-amiga/assembly/flock/unit-11/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/assembly/flock/unit-11/</guid><description>Paula speaks: one looping square wave, and three farmyard sounds made of nothing but pitch, volume and time — a baa on the hop, a squelch for a loss, a rising bleat at the pen.</description><pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 12: The Stream — Flock (Amiga)</title><link>https://code198x.com/commodore-amiga/assembly/flock/unit-12/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/assembly/flock/unit-12/</guid><description>The rule flips: in the water, the only safe place is aboard a drifting hay bale — one collision latch carrying two laws, a forgiving landing, and a phantom vertical blank that nearly sank the ride.</description><pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 15: The Machine Speaks Back — Meet The Machine (C64)</title><link>https://code198x.com/commodore-64/assembly/meet-the-machine/unit-15/</link><guid isPermaLink="true">https://code198x.com/commodore-64/assembly/meet-the-machine/unit-15/</guid><description>Unit 8 taught the machine to hear you. This one teaches it to answer. The SID is the C64&apos;s three-voice synthesiser — set a voice&apos;s pitch, its envelope, and the volume, open the gate, and the chip holds the note on its own while your code does nothing.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: Type and Run — Meet Amos (Amiga)</title><link>https://code198x.com/commodore-amiga/amos/meet-amos/unit-01/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/amos/meet-amos/unit-01/</guid><description>Everything starts here: type a program into the AMOS editor, press one key, and watch it run. Before you can make anything, you need the loop of writing, running, and seeing the result — so let&apos;s make the Amiga say hello.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: Print and the Screen — Meet Amos (Amiga)</title><link>https://code198x.com/commodore-amiga/amos/meet-amos/unit-02/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/amos/meet-amos/unit-02/</guid><description>Your first program put one line of text near the top-left and left it at that. Now you take charge of the screen: clear it to a colour of your choosing, and place text exactly where you want it with Locate. Two small commands, and the whole screen becomes yours to arrange.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: Variables and Types — Meet Amos (Amiga)</title><link>https://code198x.com/commodore-amiga/amos/meet-amos/unit-03/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/amos/meet-amos/unit-03/</guid><description>So far every Print has shown text you typed straight into the program. Variables let the program hold a value under a name — a score, a player&apos;s name — and change it as it runs. You meet the two kinds AMOS cares about, the number and the string, and the small mark that tells them apart.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 4: If, Then, Else — Meet Amos (Amiga)</title><link>https://code198x.com/commodore-amiga/amos/meet-amos/unit-04/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/amos/meet-amos/unit-04/</guid><description>A program that does the same thing every time isn&apos;t much of a game. Decisions are what make it react: check a value, and do one thing when it&apos;s true, another when it isn&apos;t. You meet If, Else and End If, and the comparisons that drive them.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 5: Loops — Meet Amos (Amiga)</title><link>https://code198x.com/commodore-amiga/amos/meet-amos/unit-05/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/amos/meet-amos/unit-05/</guid><description>Computers are tireless at repeating things, and a loop is how you ask. Count from one number to another and run the same lines each time round, with a counter you can use as you go. One small block does the work of five Print lines — or five hundred.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 6: Procedures — Meet Amos (Amiga)</title><link>https://code198x.com/commodore-amiga/amos/meet-amos/unit-06/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/amos/meet-amos/unit-06/</guid><description>When you find yourself writing the same lines twice, give them a name instead. A procedure bundles a chunk of work under a label you choose, so you can run it whenever you need it by writing the name. It&apos;s how programs stay readable as they grow.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 7: Open a Screen — Meet Amos (Amiga)</title><link>https://code198x.com/commodore-amiga/amos/meet-amos/unit-07/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/amos/meet-amos/unit-07/</guid><description>Until now you&apos;ve printed onto the screen AMOS handed you. Now you make your own — choosing its size, how many colours it can show, and whether it&apos;s low or high resolution. One command, and you&apos;ve got a display built to your spec to draw on.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 8: Colour and the Palette — Meet Amos (Amiga)</title><link>https://code198x.com/commodore-amiga/amos/meet-amos/unit-08/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/amos/meet-amos/unit-08/</guid><description>Your screen shows 16 colours — but which 16? You choose them. Mix your own shades from red, green and blue, drop them into numbered slots, and pick which slot the text is drawn in. This is where the screen starts to look like yours.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 9: Drawing and Shapes — Meet Amos (Amiga)</title><link>https://code198x.com/commodore-amiga/amos/meet-amos/unit-09/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/amos/meet-amos/unit-09/</guid><description>Text is one thing; now you draw. Dots, lines, outlined boxes, filled bars and circles go straight onto the screen at the pixel coordinates you name, in the colours you mixed. This is the raw material every game&apos;s graphics are built from.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 10: Your First Bob — Meet Amos (Amiga)</title><link>https://code198x.com/commodore-amiga/amos/meet-amos/unit-10/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/amos/meet-amos/unit-10/</guid><description>Shapes you draw stay put. A bob is different: a graphic object you place by number, move with a single command, and reposition as often as you like. Make one, drop it on screen, and meet the thing every moving sprite in your game will be built from.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 11: The Frame Loop — Meet Amos (Amiga)</title><link>https://code198x.com/commodore-amiga/amos/meet-amos/unit-11/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/amos/meet-amos/unit-11/</guid><description>A game is a loop that runs fifty times a second: move things a little, wait for the screen to refresh, repeat. Put your bob inside one and nudge its position each time round, and it stops sitting still and starts to glide. This loop is the heartbeat under every game ever made.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 12: Reading the Player — Meet Amos (Amiga)</title><link>https://code198x.com/commodore-amiga/amos/meet-amos/unit-12/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/amos/meet-amos/unit-12/</guid><description>A bob that moves on its own is a demo. Read the joystick inside the frame loop and let the player decide which way it goes, and it becomes a game. Four little questions each frame — pushed left? right? up? down? — turn input into motion.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 13: AMAL: Movement That Runs Itself — Meet Amos (Amiga)</title><link>https://code198x.com/commodore-amiga/amos/meet-amos/unit-13/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/amos/meet-amos/unit-13/</guid><description>You&apos;ve moved a bob by hand, frame by frame. AMAL lets you describe a movement once and hand it to AMOS to run on its own — in the background, fifty times a second, while your program gets on with everything else. It&apos;s the Amiga&apos;s secret weapon for smooth motion.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 14: Bumping Into Things — Meet Amos (Amiga)</title><link>https://code198x.com/commodore-amiga/amos/meet-amos/unit-14/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/amos/meet-amos/unit-14/</guid><description>Catch, hit, pick up, crash — every one of those is two things touching. AMOS can tell you the moment one bob overlaps another with a single test. Drop it into your frame loop and your game gains consequences: the point where moving pictures turn into something you can win or lose.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 15: AMOS Makes a Sound — Meet Amos (Amiga)</title><link>https://code198x.com/commodore-amiga/amos/meet-amos/unit-15/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/amos/meet-amos/unit-15/</guid><description>A game you can&apos;t hear is half a game. AMOS comes with sound effects built in — an explosion, a laser, a bell — each a single word you drop in wherever something happens. Give your hits and pickups a noise, and the screen comes alive.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 16: Keeping Your Work — Meet Amos (Amiga)</title><link>https://code198x.com/commodore-amiga/amos/meet-amos/unit-16/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/amos/meet-amos/unit-16/</guid><description>Everything you type lives in the Amiga&apos;s memory — and memory forgets the moment you switch off. Saving writes your program to disk so it survives, ready to load and carry on tomorrow. It&apos;s the least glamorous habit in programming and the one that saves you the most heartache.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 17: The AMOS Way — Meet Amos (Amiga)</title><link>https://code198x.com/commodore-amiga/amos/meet-amos/unit-17/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/amos/meet-amos/unit-17/</guid><description>Look back at the whole primer in one short program, and at how much AMOS quietly did for you. A bob gliding under a title is a handful of lines here — and a small mountain of work on a bare machine. That gap is the whole point of AMOS, and where you go next.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 16: The Blitter Moves It — Meet The Machine (Amiga)</title><link>https://code198x.com/commodore-amiga/assembly/meet-the-machine/unit-16/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/assembly/meet-the-machine/unit-16/</guid><description>Everything so far has been the 68000 alone. The Blitter is a chip built for one job — shifting blocks of graphics through memory far faster than the CPU can. You point it at a source, a destination, and a size, and it moves the block while the CPU does something else.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 17: A Sprite of Your Own — Meet The Machine (Amiga)</title><link>https://code198x.com/commodore-amiga/assembly/meet-the-machine/unit-17/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/assembly/meet-the-machine/unit-17/</guid><description>A sprite is a small picture the hardware draws over the background, on its own, wherever you point it. No bitplane, no blitting — you hand the chips a shape and a position and they put it on the glass and keep it there. This is how you make a player.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 18: Paula Makes a Sound — Meet The Machine (Amiga)</title><link>https://code198x.com/commodore-amiga/assembly/meet-the-machine/unit-18/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/assembly/meet-the-machine/unit-18/</guid><description>The last custom chip is the one you hear. Paula plays sound by reading a sample — a list of numbers describing a waveform — straight out of memory. Hand her the sample, set how loud and how fast, switch on her DMA, and she plays it on her own, forever.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 19: The Machine Trusts You — Meet The Machine (Amiga)</title><link>https://code198x.com/commodore-amiga/assembly/meet-the-machine/unit-19/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/assembly/meet-the-machine/unit-19/</guid><description>The last unit, and the most important. There&apos;s no error message, no bounds check, no guard rail — the 68000 does exactly what you wrote, even when you&apos;re wrong. Learn to debug by observing, not by reading errors.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: Type, Compile, Run — Meet Blitz (Amiga)</title><link>https://code198x.com/commodore-amiga/blitz/meet-blitz/unit-01/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/blitz/meet-blitz/unit-01/</guid><description>Everything in Blitz starts with one loop: type a program, compile it, run it. That compile step is the whole point — Blitz turns your BASIC into a native Amiga program that runs at full speed. Let&apos;s go round the loop once and make the machine say hello.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: Amiga Mode and Blitz Mode — Meet Blitz (Amiga)</title><link>https://code198x.com/commodore-amiga/blitz/meet-blitz/unit-02/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/blitz/meet-blitz/unit-02/</guid><description>Blitz can run your program two ways. Amiga mode plays nicely with the operating system — windows, the mouse pointer, multitasking. Blitz mode switches all that off and hands your program the whole machine, for graphics that run flat out. Knowing which mode you&apos;re in is the key to everything fast.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: Variables and Blitz&apos;s Types — Meet Blitz (Amiga)</title><link>https://code198x.com/commodore-amiga/blitz/meet-blitz/unit-03/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/blitz/meet-blitz/unit-03/</guid><description>Most BASICs hide how a number is stored. Blitz doesn&apos;t — it lets you choose, because it&apos;s working close to the machine. A byte, a word, a long: each holds a different range, and picking the right one is part of writing fast, lean code. Here&apos;s the idea, and the surprise when a number doesn&apos;t fit.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 4: Decisions, Loops, and the Frame — Meet Blitz (Amiga)</title><link>https://code198x.com/commodore-amiga/blitz/meet-blitz/unit-04/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/blitz/meet-blitz/unit-04/</guid><description>The control flow every game runs on: repeat work with a loop, branch on a decision with If, and meet VWait — the command that paces a Blitz program to the screen&apos;s 50-times-a-second beat. The skeleton of every game loop, in compiled Blitz.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 5: Many Things at Once — Meet Blitz (Amiga)</title><link>https://code198x.com/commodore-amiga/blitz/meet-blitz/unit-05/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/blitz/meet-blitz/unit-05/</guid><description>Here&apos;s why the scene reached for Blitz. Put eighty objects in the frame loop, move every one of them each frame, and compiled Blitz draws the lot smoothly at full speed — the thing an interpreted BASIC can&apos;t keep up with. This is the headline trick of the whole language.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 6: Slices and the Display — Meet Blitz (Amiga)</title><link>https://code198x.com/commodore-amiga/blitz/meet-blitz/unit-06/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/blitz/meet-blitz/unit-06/</guid><description>A slice is Blitz&apos;s description of a region of the screen — how tall, how many colours, what resolution. The power is that you can have more than one, carving the display into independent bands. It&apos;s something the Amiga&apos;s normal screens make hard, and it&apos;s pure Blitz mode.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 7: Shapes — Meet Blitz (Amiga)</title><link>https://code198x.com/commodore-amiga/blitz/meet-blitz/unit-07/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/blitz/meet-blitz/unit-07/</guid><description>Boxes and circles are fine, but a game is made of pictures — and you don&apos;t want to redraw them line by line every time. A shape is a picture grabbed into memory once, ready to stamp down anywhere, as many times as you like. It&apos;s the building block every sprite and tile is made from.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 8: Blitting — Meet Blitz (Amiga)</title><link>https://code198x.com/commodore-amiga/blitz/meet-blitz/unit-08/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/blitz/meet-blitz/unit-08/</guid><description>Stamping a shape is one thing; moving it is another. To animate a shape you redraw it each frame in a new place — and erase where it was, or it smears. Meet the Blit family, the no-trail trick, and why a shape must stay on its bitmap.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 9: Reading the Joystick — Meet Blitz (Amiga)</title><link>https://code198x.com/commodore-amiga/blitz/meet-blitz/unit-09/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/blitz/meet-blitz/unit-09/</guid><description>A moving picture becomes a game the moment the player is steering it. Blitz reads the joystick with two plain functions that hand you a direction as a number — push right, get +1; push left, get -1; let go, get 0. Wire those numbers to a shape&apos;s position and the player is in control.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 10: Animating a Shape — Meet Blitz (Amiga)</title><link>https://code198x.com/commodore-amiga/blitz/meet-blitz/unit-10/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/blitz/meet-blitz/unit-10/</guid><description>A single shape that slides around is a token. Swap between several shapes as it moves and it comes alive — a walking figure, a spinning coin, a pulsing power-up. Animation is just showing a different frame every so often, and you already have every piece you need.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 11: Bumping Into Things — Meet Blitz (Amiga)</title><link>https://code198x.com/commodore-amiga/blitz/meet-blitz/unit-11/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/blitz/meet-blitz/unit-11/</guid><description>Objects that pass through each other aren&apos;t a game yet — a game needs consequence. Blitz answers the question &apos;are these two shapes touching?&apos; with a single function, ShapesHit, that returns true the instant they overlap. That one test is the seed of every hit, catch, pickup and crash there is.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 12: Smooth Scrolling — Meet Blitz (Amiga)</title><link>https://code198x.com/commodore-amiga/blitz/meet-blitz/unit-12/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/blitz/meet-blitz/unit-12/</guid><description>Every great Amiga game scrolls — a world wider than the screen, sliding past pixel by pixel. The trick isn&apos;t redrawing fast; it&apos;s drawing a bitmap bigger than the display and letting the hardware slide a window across it. Blitz hands you that window directly.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 13: Reaching the Hardware — Meet Blitz (Amiga)</title><link>https://code198x.com/commodore-amiga/blitz/meet-blitz/unit-13/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/blitz/meet-blitz/unit-13/</guid><description>AMOS keeps the machine at arm&apos;s length. Blitz hands you the chips. The Amiga&apos;s colours don&apos;t live in your picture — they live in registers, and you can rewrite them directly, every frame. Change the registers and the picture changes colour without a single pixel being redrawn. That&apos;s colour cycling, and it&apos;s your first real touch of the metal.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 14: Hardware Sprites — Meet Blitz (Amiga)</title><link>https://code198x.com/commodore-amiga/blitz/meet-blitz/unit-14/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/blitz/meet-blitz/unit-14/</guid><description>Every moving thing so far has been the blitter copying pixels into your picture — clear, redraw, repeat. The Amiga has another way: eight hardware sprites the chips overlay and move for you, floating above the bitmap without ever touching it. No Cls, no Blit. This is the chip feature AMOS hides most completely.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 15: The Blitz Way — Meet Blitz (Amiga)</title><link>https://code198x.com/commodore-amiga/blitz/meet-blitz/unit-15/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/blitz/meet-blitz/unit-15/</guid><description>Look back at the whole primer in one program — two dozen objects, all moving at once, every part of it built by your own hand. Where AMOS did the work for you, Blitz handed you the parts and the speed to use them. That&apos;s the Blitz way — one of two roads into Amiga game-making, and the one that shipped one of the biggest games the Amiga ever saw.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 17: The Machine Speaks Back — Meet The Machine (NES)</title><link>https://code198x.com/nintendo-entertainment-system/assembly/meet-the-machine/unit-17/</link><guid isPermaLink="true">https://code198x.com/nintendo-entertainment-system/assembly/meet-the-machine/unit-17/</guid><description>Unit 10 taught the machine to hear you. This one teaches it to answer. The NES has a sound chip — the APU — built into the same 2A03 as the CPU. Set up a pulse channel, switch it on, and it holds the note on its own while your code does nothing.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 15: The Machine Speaks Back — Meet The Machine (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/meet-the-machine/unit-15/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/meet-the-machine/unit-15/</guid><description>The 48K Spectrum has no sound chip. Sound is the CPU&apos;s own job: flip one bit of one port to push the speaker, wait, flip it back, wait — over and over. That square wave is the tone, and the CPU does nothing else while it plays. On this machine, you are the sound chip.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: Light and Bleep — Bleeper (C64)</title><link>https://code198x.com/commodore-64/basic/bleeper/unit-01/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/bleeper/unit-01/</guid><description>Bleeper&apos;s whole vocabulary is a panel that lights and sounds at once. Draw a colour block in screen memory, flash it white for a beat, and fire a SID note at the same moment. Colour and sound, locked together — the atom the whole game is built from.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: Four Panels, Four Notes — Bleeper (C64)</title><link>https://code198x.com/commodore-64/basic/bleeper/unit-02/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/bleeper/unit-02/</guid><description>One panel becomes four — red, cyan, green, yellow — each with its own pitch. The flash-and-tone code moves into a GOSUB routine you call by panel number, so the same six lines light any panel. That reusable routine is the engine of the whole game.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: A Sequence from an Array — Bleeper (C64)</title><link>https://code198x.com/commodore-64/basic/bleeper/unit-03/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/bleeper/unit-03/</guid><description>A game needs a sequence. Store a list of panels in an array, then walk it with a loop, flashing and bleeping each in turn. The sequence is data now, not code — the machine plays back whatever the array holds.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 4: One More Each Round — Bleeper (C64)</title><link>https://code198x.com/commodore-64/basic/bleeper/unit-04/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/bleeper/unit-04/</guid><description>A fixed sequence is a performance; a growing one is a game. Each round, add a random panel to the array and replay the whole thing from the start. The chain lengthens by one every time — the escalation at the heart of Simon.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 5: Your Turn — Bleeper (C64)</title><link>https://code198x.com/commodore-64/basic/bleeper/unit-05/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/bleeper/unit-05/</guid><description>Now the player plays. After the sequence, read their echo a key at a time with GET, light the panel they press, and check each one against the array. A right echo wins; a wrong press ends it with a harsh tone. This is the moment Bleeper becomes a game you can lose.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 6: How Far Can You Hold? — Bleeper (C64)</title><link>https://code198x.com/commodore-64/basic/bleeper/unit-06/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/bleeper/unit-06/</guid><description>Put it together: rounds that grow, an echo checked each round, a score that&apos;s just the length you held, and a key to play again. Number the panels so the player knows the keys. Your finished Bleeper — the SID, an array, and live input as one game.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: A Falling Dot — Dropzone (C64)</title><link>https://code198x.com/commodore-64/basic/dropzone/unit-01/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/dropzone/unit-01/</guid><description>Every lander game starts with something that falls. Hold an altitude in a variable, increase it each loop, and draw the lander at the row it points to — erase-move-draw, falling on its own whether you act or not. The continuous loop that drives every real-time game.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: Gravity Pulls — Dropzone (C64)</title><link>https://code198x.com/commodore-64/basic/dropzone/unit-02/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/dropzone/unit-02/</guid><description>A constant fall has no weight. Add velocity as its own variable and let gravity grow it every loop — the lander starts slow and speeds up, just like a real drop. This is the physics at the heart of the game: velocity that accumulates over time.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: Thrust Pushes Back — Dropzone (C64)</title><link>https://code198x.com/commodore-64/basic/dropzone/unit-03/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/dropzone/unit-03/</guid><description>Gravity has it all its own way — until now. Read a key inside the loop, and when it&apos;s pressed, shrink the velocity. Press to slow the fall; release and gravity takes over. Two forces on one variable: the game exists the moment you can fight back.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 4: The Landing Pad — Dropzone (C64)</title><link>https://code198x.com/commodore-64/basic/dropzone/unit-04/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/dropzone/unit-04/</guid><description>The lander needs somewhere to come down. Draw a ground line across the foot of the screen and a coloured pad in its middle — the one safe place to land, marked by colour, not a label. Now the descent has a target.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 5: Soft or Hard — Dropzone (C64)</title><link>https://code198x.com/commodore-64/basic/dropzone/unit-05/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/dropzone/unit-05/</guid><description>Reaching the pad isn&apos;t the same as landing on it. Check the speed at the moment of contact: slow enough is a soft landing, too fast is a crash. Now how you flew the last few rows is the whole game — and each ending gets its own screen.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 6: Fuel — The Squeeze — Dropzone (C64)</title><link>https://code198x.com/commodore-64/basic/dropzone/unit-06/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/dropzone/unit-06/</guid><description>Free thrust means braking all the way down. Add a fuel store that each burn spends, shown in the readout — and when it runs dry, the thruster dies and you coast on whatever speed you have. Finite fuel turns the descent into a negotiation. The finished Dropzone, and the end of Volume 1.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: Ask the Oracle — Oracle (C64)</title><link>https://code198x.com/commodore-64/basic/oracle/unit-01/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/oracle/unit-01/</guid><description>The Oracle&apos;s whole shape in four lines: the machine takes a question with INPUT, and gives an answer. For now the answer is always YES — but ask, then answer, is the ceremony everything else hangs on.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: The Oracle Chooses — Oracle (C64)</title><link>https://code198x.com/commodore-64/basic/oracle/unit-02/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/oracle/unit-02/</guid><description>Replace the one fixed answer with one of two, picked at random. RND rolls a number, ON…GOTO branches on it, and the player stops knowing which answer is coming — that gap is chance.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: A List of Answers — Oracle (C64)</title><link>https://code198x.com/commodore-64/basic/oracle/unit-03/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/oracle/unit-03/</guid><description>Two answers aren&apos;t enough. Store eight in a string array, then use RND as an index to reach in and pull one out — one PRINT line that can speak any of them.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 4: The Oracle Thinks — Oracle (C64)</title><link>https://code198x.com/commodore-64/basic/oracle/unit-04/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/oracle/unit-04/</guid><description>An answer that arrives instantly feels cheap. Add a thinking pause — a delay loop with a SID tone humming for its length — and the answer means more because you waited for it. That&apos;s suspense.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 5: Mood in Colour — Oracle (C64)</title><link>https://code198x.com/commodore-64/basic/oracle/unit-05/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/oracle/unit-05/</guid><description>The Oracle should look like it feels something. Give each answer a mood — yes, no, maybe — and shift the colour to match before it prints. The player reads the feeling before the words.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 6: Ask Again — Oracle (C64)</title><link>https://code198x.com/commodore-64/basic/oracle/unit-06/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/oracle/unit-06/</guid><description>Right now the Oracle answers once and stops. Close the loop — clear the screen and GOTO back to the question — and it becomes something you consult, not something you run. Your finished Oracle.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: The Flash — Reflex (C64)</title><link>https://code198x.com/commodore-64/basic/reflex/unit-01/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/reflex/unit-01/</guid><description>Reflex begins with a signal. Hold the screen black, wait a beat, then flash it white — the moment the player reacts to. One register does it, and a timing loop sets the wait.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: An Unknown Wait — Reflex (C64)</title><link>https://code198x.com/commodore-64/basic/reflex/unit-02/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/reflex/unit-02/</guid><description>A fixed beat can be learnt, and a reaction test you can predict is no test. Make the wait a different length every run with RND — now the flash always catches you off guard.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: Timing the Press — Reflex (C64)</title><link>https://code198x.com/commodore-64/basic/reflex/unit-03/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/reflex/unit-03/</guid><description>The flash catches you out — but how fast did you answer? Meet TI, the C64&apos;s built-in clock, ticking sixty times a second. Reset it at the flash, read it at the keypress, and you have a time.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 4: Catch It Instantly — Reflex (C64)</title><link>https://code198x.com/commodore-64/basic/reflex/unit-04/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/reflex/unit-04/</guid><description>INPUT makes the player press RETURN — two actions where a reaction test wants one. GET catches a single keypress the moment it lands, no RETURN at all. The timing finally feels honest.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 5: Jiffies and Seconds — Reflex (C64)</title><link>https://code198x.com/commodore-64/basic/reflex/unit-05/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/reflex/unit-05/</guid><description>Sixty-one jiffies is precise but means little to a human. Divide by 60 and you have seconds — the unit we think in. One line of arithmetic turns the clock&apos;s count into a time a person reads at a glance.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 6: How Fast Are You? — Reflex (C64)</title><link>https://code198x.com/commodore-64/basic/reflex/unit-06/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/reflex/unit-06/</guid><description>A time is a number; a verdict is a game. Read the jiffies and rate them — LIGHTNING, QUICK, OK, SLOW — then catch the player who jumps the gun before the flash. Your finished Reflex.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: Place the Rover — Rover (C64)</title><link>https://code198x.com/commodore-64/basic/rover/unit-01/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/rover/unit-01/</guid><description>Before the rover can move, it has to exist. Hold its position in two variables and draw it with two POKEs — a bright block in screen memory, its colour alongside. The whole game starts from this: the rover is just two numbers and two pokes.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: Drive It with the Stick — Rover (C64)</title><link>https://code198x.com/commodore-64/basic/rover/unit-02/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/rover/unit-02/</guid><description>Open a loop that reads the joystick on every pass, decode the direction, and move the rover — erase the old block, draw the new one. PEEK(56320), an AND to pick the bit, two POKEs. The first time the machine answers you in real time.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: Walls That Stop You — Rover (C64)</title><link>https://code198x.com/commodore-64/basic/rover/unit-03/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/rover/unit-03/</guid><description>An open screen lets the rover wander off the edge. Draw a maze of walls, then before each move, PEEK the cell the rover is about to enter — if it&apos;s a wall, cancel the step. The world pushes back, and a border wall keeps the rover in bounds for free.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 4: Pickups and Score — Rover (C64)</title><link>https://code198x.com/commodore-64/basic/rover/unit-04/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/rover/unit-04/</guid><description>Scatter pickups in a second colour, then teach the look-ahead PEEK a new trick: tell wall from pickup from empty by the character code it reads. Roll over a pickup, collect it, and the score climbs on a status row that never disturbs the maze.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 5: Clear the Board — Rover (C64)</title><link>https://code198x.com/commodore-64/basic/rover/unit-05/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/rover/unit-05/</guid><description>A game needs an ending. Count the pickups at the start, count them down as they&apos;re collected, and when the last one&apos;s gone, break the loop and show ALL CLEAR with the final score. The session gets a shape: enter, clear, done.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 6: Make It a Game — Rover (C64)</title><link>https://code198x.com/commodore-64/basic/rover/unit-06/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/rover/unit-06/</guid><description>Give Rover a front door. A title screen with the rover&apos;s name and a fire-to-start — read fire with (J AND 16) — turns the program into a game someone can pick up and play. Your finished Rover, ready to drive.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: Pick a Secret — Safe Cracker (C64)</title><link>https://code198x.com/commodore-64/basic/safe-cracker/unit-01/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/safe-cracker/unit-01/</guid><description>Every guessing game needs a secret. Make the machine choose a hidden code between 1 and 100 with RND, and print it just this once to prove it lands in range. The number you&apos;ll spend the rest of the game hunting starts here.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: Take a Guess — Safe Cracker (C64)</title><link>https://code198x.com/commodore-64/basic/safe-cracker/unit-02/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/safe-cracker/unit-02/</guid><description>Now hide the secret and let the player put a number against it. INPUT takes their guess, a single IF weighs it against the code — cracked, or not. The first real contest between player and machine.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: Higher or Lower — Safe Cracker (C64)</title><link>https://code198x.com/commodore-64/basic/safe-cracker/unit-03/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/safe-cracker/unit-03/</guid><description>A wrong guess should teach something. Add two comparisons — is the guess below the code, or above it? — and a miss becomes a direction. This is the clue that turns blind guessing into deduction.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 4: Loop Until Cracked — Safe Cracker (C64)</title><link>https://code198x.com/commodore-64/basic/safe-cracker/unit-04/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/safe-cracker/unit-04/</guid><description>One clue isn&apos;t enough — the player needs to keep guessing. Wrap the guess in a loop that runs until the safe opens. This is the loop-with-a-goal: not a FOR that counts to a number, but a loop that ends when something specific happens.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 5: Colour the Feedback — Safe Cracker (C64)</title><link>https://code198x.com/commodore-64/basic/safe-cracker/unit-05/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/safe-cracker/unit-05/</guid><description>Words are slow; colour is instant. Make the background warm red when the guess is too high and cool blue when it&apos;s too low, behind a safe drawn on screen. The player reads the safe&apos;s mood before they read a word — colour carrying meaning, not decoration.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 6: A Stake That Runs Out — Safe Cracker (C64)</title><link>https://code198x.com/commodore-64/basic/safe-cracker/unit-06/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/safe-cracker/unit-06/</guid><description>A game you can&apos;t lose isn&apos;t a game. Give the safe a fixed number of tries: count each guess, and when they run out before the crack, the safe locks. Now the loop ends two ways — win or lose — and the guess count is the clock. Your finished Safe Cracker.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: One Block on the Screen — Skyline (C64)</title><link>https://code198x.com/commodore-64/basic/skyline/unit-01/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/skyline/unit-01/</guid><description>Skyline starts with a single block, placed exactly where you send it. Clear the screen, work out the address with 1024 + R*40 + C, POKE the block, and POKE its colour into the matching cell at 55296.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: A Tower — Skyline (C64)</title><link>https://code198x.com/commodore-64/basic/skyline/unit-02/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/skyline/unit-02/</guid><description>One block is a brick; a loop is a building. A FOR loop counting up a fixed column POKEs a block at each row, turning one block into a tower of any height.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: A Row of Towers — Skyline (C64)</title><link>https://code198x.com/commodore-64/basic/skyline/unit-03/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/skyline/unit-03/</guid><description>Wrap the tower in a second loop. An outer FOR steps the column across the screen while the inner FOR raises a tower at each — nested loops turn one tower into a skyline.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 4: Lights in the Windows — Skyline (C64)</title><link>https://code198x.com/commodore-64/basic/skyline/unit-04/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/skyline/unit-04/</guid><description>Colour memory stops being a flat wash. As each tower goes up, some cells get a bright window colour against the tower&apos;s body — same coordinate, different byte — and the skyline comes alive.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 5: No Two Cities Alike — Skyline (C64)</title><link>https://code198x.com/commodore-64/basic/skyline/unit-05/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/skyline/unit-05/</guid><description>Bring in RND. Randomise each tower&apos;s height and light each window on a coin-flip, and the program produces more than you typed — run it twice, get two different skylines.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 6: Sunset — Skyline (C64)</title><link>https://code198x.com/commodore-64/basic/skyline/unit-06/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/skyline/unit-06/</guid><description>Two registers set the hour. POKE the background for the sky and the border for the frame, add a soft SID tone as each tower tops out, and the black screen becomes a city at dusk — your finished Skyline.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: A Die Roll — Tally (C64)</title><link>https://code198x.com/commodore-64/basic/tally/unit-01/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/tally/unit-01/</guid><description>Tally begins with a single die. You met RND in Oracle picking answers; here the same command rolls a 1 to 6. Roll it ten times in a loop and watch the faces fall — the raw material the whole game is built from.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: Two Dice, One Total — Tally (C64)</title><link>https://code198x.com/commodore-64/basic/tally/unit-02/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/tally/unit-02/</guid><description>One die is fair. Roll two and add them, and the total — 2 to 12 — is not. Sevens crowd the middle, twos and twelves are rare. The lopsidedness you&apos;ll spend the rest of the game explaining starts here.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: Counting the Totals — Tally (C64)</title><link>https://code198x.com/commodore-64/basic/tally/unit-03/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/tally/unit-03/</guid><description>Counting totals by eye doesn&apos;t scale. Meet the array — eleven counters in one named structure — and use the dice total itself as the index. One line tallies any roll, no chain of IFs. Twenty rolls in, the shape is still ragged.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 4: A Thousand Rolls — Tally (C64)</title><link>https://code198x.com/commodore-64/basic/tally/unit-04/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/tally/unit-04/</guid><description>Twenty rolls were too ragged to trust. Change one number — 20 to 1000 — and the bell stops hiding. The counts climb, 7 pulls ahead, the edges stay low, and a clear shape emerges from pure chance. That&apos;s the law of large numbers.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 5: The Bell in Bars — Tally (C64)</title><link>https://code198x.com/commodore-64/basic/tally/unit-05/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/tally/unit-05/</guid><description>A column of figures isn&apos;t a picture. Walk the array and POKE each count as a bar of solid blocks straight to the screen — scaled to fit, on black, labelled beneath. The bell you read in numbers becomes a bell you can see.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 6: You Set the Rolls — Tally (C64)</title><link>https://code198x.com/commodore-64/basic/tally/unit-06/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/tally/unit-06/</guid><description>Hand the run count to the player. One INPUT, one FOR loop driven by it, and the same chart — but now you can roll 10 and see a ragged guess, or 1000 and see a clean bell. Watching randomness become a picture is the whole design lesson. Your finished Tally.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: Assemble and Run — Meet The Machine (Amiga)</title><link>https://code198x.com/commodore-amiga/assembly/meet-the-machine/unit-01/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/assembly/meet-the-machine/unit-01/</guid><description>Write a little 68000 assembly, build it into a bootable floppy, run it on the Amiga, and watch the screen fill with red. Meet the build loop you&apos;ll use all course — and the harness a 16-bit machine needs before it shows a single colour.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: MOVE Is the Verb — Meet The Machine (Amiga)</title><link>https://code198x.com/commodore-amiga/assembly/meet-the-machine/unit-02/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/assembly/meet-the-machine/unit-02/</guid><description>Meet the 68000&apos;s workhorse. Where 8-bit machines had separate load and store, the 68000 has one instruction — MOVE — that carries a value from almost anywhere to almost anywhere. Use it to drive the colour from the CPU.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: Bytes, Words and Longs — Meet The Machine (Amiga)</title><link>https://code198x.com/commodore-amiga/assembly/meet-the-machine/unit-03/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/assembly/meet-the-machine/unit-03/</guid><description>The idea that makes the 68000 a 16/32-bit machine: a value can be a byte, a word, or a long — 8, 16 or 32 bits — and you choose the size on every move. Carry a colour out of a 32-bit long.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 4: A Register for Every Job — Meet The Machine (Amiga)</title><link>https://code198x.com/commodore-amiga/assembly/meet-the-machine/unit-04/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/assembly/meet-the-machine/unit-04/</guid><description>Meet the 68000&apos;s register file: eight data registers for values and maths, eight address registers for pointers — sixteen in all, far more elbow room than an 8-bit chip&apos;s two or three.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 5: A Vast Street of Memory — Meet The Machine (Amiga)</title><link>https://code198x.com/commodore-amiga/assembly/meet-the-machine/unit-05/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/assembly/meet-the-machine/unit-05/</guid><description>Meet the 68000&apos;s enormous address space — millions of numbered boxes, each holding a byte. Store a colour out in memory and read it back, the same round-trip you ran through registers, now through RAM.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 6: The Screen Is a Bitmap — Meet The Machine (Amiga)</title><link>https://code198x.com/commodore-amiga/assembly/meet-the-machine/unit-06/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/assembly/meet-the-machine/unit-06/</guid><description>The picture is a map of bits in memory. Each bit is one pixel — 1 lights it, 0 leaves it dark. Point the display at a stretch of Chip RAM, set some bits, and watch them become a block on the glass.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 7: Colour and the Copper — Meet The Machine (Amiga)</title><link>https://code198x.com/commodore-amiga/assembly/meet-the-machine/unit-07/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/assembly/meet-the-machine/unit-07/</guid><description>Open the box we&apos;ve leaned on since Unit 1. The Copper is a tiny co-processor that runs in step with the video beam, changing the hardware mid-screen — and with two instructions it paints a band of colours the CPU never touches.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 8: Test, Then Branch — Meet The Machine (Amiga)</title><link>https://code198x.com/commodore-amiga/assembly/meet-the-machine/unit-08/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/assembly/meet-the-machine/unit-08/</guid><description>A program that can&apos;t make a decision can&apos;t do much. The 68000 has no IF — instead you compare two values, which sets the flags, then branch on a flag. That pair, CMP and Bcc, is every IF you&apos;ll ever write.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 9: The Vertical Blank — Meet The Machine (Amiga)</title><link>https://code198x.com/commodore-amiga/assembly/meet-the-machine/unit-09/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/assembly/meet-the-machine/unit-09/</guid><description>Fifty times a second the video beam finishes the screen and returns to the top — the vertical blank. A game does one frame&apos;s work in that gap and waits for the next. Wait for the beam, do a little, repeat: that&apos;s the loop every game lives inside.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 10: Reading the Player — Meet The Machine (Amiga)</title><link>https://code198x.com/commodore-amiga/assembly/meet-the-machine/unit-10/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/assembly/meet-the-machine/unit-10/</guid><description>Input is just memory you read instead of write. The left mouse button lives in one bit of a chip register — and it reads backwards, 0 for held and 1 for up. Test that bit every frame and the screen answers to a human hand.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 11: Pointers and the Address Registers — Meet The Machine (Amiga)</title><link>https://code198x.com/commodore-amiga/assembly/meet-the-machine/unit-11/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/assembly/meet-the-machine/unit-11/</guid><description>An address register holds an address, not a number — and with brackets, (a0) means &quot;the box a0 points at&quot;. Add the + and reading also steps the pointer on. Walk a pointer along a table and you can process a list of anything.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 12: The Counted Loop — Meet The Machine (Amiga)</title><link>https://code198x.com/commodore-amiga/assembly/meet-the-machine/unit-12/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/assembly/meet-the-machine/unit-12/</guid><description>Doing a thing a hundred times shouldn&apos;t mean writing it a hundred times. DBRA is the 68000&apos;s count-and-loop instruction: it decrements a register and branches back until it runs past zero. One short loop replaces a wall of repeated lines.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 13: Call, Return, and the Stack — Meet The Machine (Amiga)</title><link>https://code198x.com/commodore-amiga/assembly/meet-the-machine/unit-13/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/assembly/meet-the-machine/unit-13/</guid><description>A subroutine is a job you write once and call from anywhere. BSR jumps to it and quietly remembers the way back on the stack; RTS reads that note and returns. Together they let code call code — the foundation every program is built on.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 14: Adding and Taking Away — Meet The Machine (Amiga)</title><link>https://code198x.com/commodore-amiga/assembly/meet-the-machine/unit-14/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/assembly/meet-the-machine/unit-14/</guid><description>Arithmetic is two instructions: ADD and SUB. They work on a size you choose, and they leave the flags set for a branch to read. Master the size suffix and the carry between sizes and you&apos;ve got the maths every program runs on.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 15: Working With Bits — Meet The Machine (Amiga)</title><link>https://code198x.com/commodore-amiga/assembly/meet-the-machine/unit-15/</link><guid isPermaLink="true">https://code198x.com/commodore-amiga/assembly/meet-the-machine/unit-15/</guid><description>Sometimes a value isn&apos;t a number — it&apos;s a row of independent switches. AND, OR and EOR work on those switches: OR turns bits on, AND clears the ones outside a mask, EOR flips them. This is how you pack flags and read hardware registers.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: Assemble and Run — Meet The Machine (NES)</title><link>https://code198x.com/nintendo-entertainment-system/assembly/meet-the-machine/unit-01/</link><guid isPermaLink="true">https://code198x.com/nintendo-entertainment-system/assembly/meet-the-machine/unit-01/</guid><description>Write a little assembly, turn it into a cartridge with two build tools, run it on the NES, and watch the screen fill with red. Meet the build loop you&apos;ll use all course — and the harness a console needs before it shows a single pixel.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: LDA Is Not LET — Meet The Machine (NES)</title><link>https://code198x.com/nintendo-entertainment-system/assembly/meet-the-machine/unit-02/</link><guid isPermaLink="true">https://code198x.com/nintendo-entertainment-system/assembly/meet-the-machine/unit-02/</guid><description>Meet the registers — the three physical 8-bit stores inside the 2A03. Send a value from A into X and back again, and watch the screen prove it made the trip. And learn why &apos;load&apos; comes in three flavours.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: Everything Is a Number — Meet The Machine (NES)</title><link>https://code198x.com/nintendo-entertainment-system/assembly/meet-the-machine/unit-03/</link><guid isPermaLink="true">https://code198x.com/nintendo-entertainment-system/assembly/meet-the-machine/unit-03/</guid><description>A byte has no type. Discover that 65, $41, the letter &apos;A&apos; and the bit-pattern %01000001 are one and the same byte — and meet hex, the way you&apos;ll read bytes from here on.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 4: A Street of Numbered Boxes — Meet The Machine (NES)</title><link>https://code198x.com/nintendo-entertainment-system/assembly/meet-the-machine/unit-04/</link><guid isPermaLink="true">https://code198x.com/nintendo-entertainment-system/assembly/meet-the-machine/unit-04/</guid><description>Meet memory — a street of numbered boxes, each holding a byte. Store a byte at an address and read it back, the same round-trip you used for registers. And learn why the NES&apos;s street is far shorter than you&apos;d guess.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 5: The Screen Is Behind a Window — Meet The Machine (NES)</title><link>https://code198x.com/nintendo-entertainment-system/assembly/meet-the-machine/unit-05/</link><guid isPermaLink="true">https://code198x.com/nintendo-entertainment-system/assembly/meet-the-machine/unit-05/</guid><description>The big one. The harness has been writing your colour through a little two-register window all along — and that same window reaches the screen itself. Aim it at the nametable, write a tile, turn the picture on, and a block appears.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 6: Colour Lives in a Palette — Meet The Machine (NES)</title><link>https://code198x.com/nintendo-entertainment-system/assembly/meet-the-machine/unit-06/</link><guid isPermaLink="true">https://code198x.com/nintendo-entertainment-system/assembly/meet-the-machine/unit-06/</guid><description>Open up the stage light. On the NES, a tile&apos;s colour isn&apos;t stored with the tile — it lives in a separate little table, and the tile only points at it. Change the palette and the same block changes colour, with no touch to the screen at all.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 7: Where the Shapes Come From — Meet The Machine (NES)</title><link>https://code198x.com/nintendo-entertainment-system/assembly/meet-the-machine/unit-07/</link><guid isPermaLink="true">https://code198x.com/nintendo-entertainment-system/assembly/meet-the-machine/unit-07/</guid><description>The last mystery in the harness. Tile 1 has been a &apos;solid block&apos; only because of sixteen bytes of CHR ROM — a tiny picture. Edit those bytes and the block becomes whatever you draw. Here, a heart.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 8: Test, Then Jump — Meet The Machine (NES)</title><link>https://code198x.com/nintendo-entertainment-system/assembly/meet-the-machine/unit-08/</link><guid isPermaLink="true">https://code198x.com/nintendo-entertainment-system/assembly/meet-the-machine/unit-08/</guid><description>There&apos;s no IF on the 6502. Learn how the machine makes decisions instead — compare a value, which sets a flag, then branch on that flag. Build your own IF, and write your first labels.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 9: The Machine Has a Heartbeat — Meet The Machine (NES)</title><link>https://code198x.com/nintendo-entertainment-system/assembly/meet-the-machine/unit-09/</link><guid isPermaLink="true">https://code198x.com/nintendo-entertainment-system/assembly/meet-the-machine/unit-09/</guid><description>A console runs in step with its screen. Sixty times a second the PPU finishes a frame and taps the CPU on the shoulder — the NMI. Turn that heartbeat on, do one small job each beat, and watch the screen change all by itself.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 10: The Joypad in Your Hand — Meet The Machine (NES)</title><link>https://code198x.com/nintendo-entertainment-system/assembly/meet-the-machine/unit-10/</link><guid isPermaLink="true">https://code198x.com/nintendo-entertainment-system/assembly/meet-the-machine/unit-10/</guid><description>Read the NES controller the honest way — strobe it, shift the buttons out one at a time, isolate the one you care about, and branch on it. Hold A and watch the screen react, every pass of the loop.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 11: A Finger on the Boxes — Meet The Machine (NES)</title><link>https://code198x.com/nintendo-entertainment-system/assembly/meet-the-machine/unit-11/</link><guid isPermaLink="true">https://code198x.com/nintendo-entertainment-system/assembly/meet-the-machine/unit-11/</guid><description>Stop baking the value into every instruction. Meet indexed addressing — X as a finger you rest on one entry of a table and slide along — the idea behind every lookup, message and animation a game does.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 12: The Counted Loop — Meet The Machine (NES)</title><link>https://code198x.com/nintendo-entertainment-system/assembly/meet-the-machine/unit-12/</link><guid isPermaLink="true">https://code198x.com/nintendo-entertainment-system/assembly/meet-the-machine/unit-12/</guid><description>Hand the repetition to the machine. Load a count, run the body, step on, and branch back until you&apos;ve done them all — and the PPU&apos;s auto-stepping port turns one short loop into a whole row across the screen.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 13: Call, Return, and a Stack You Can See — Meet The Machine (NES)</title><link>https://code198x.com/nintendo-entertainment-system/assembly/meet-the-machine/unit-13/</link><guid isPermaLink="true">https://code198x.com/nintendo-entertainment-system/assembly/meet-the-machine/unit-13/</guid><description>Package a job into a subroutine you can call from anywhere — and watch where the machine remembers its way back: the stack, sitting in plain memory you can read.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 14: Adding and Taking Away — Meet The Machine (NES)</title><link>https://code198x.com/nintendo-entertainment-system/assembly/meet-the-machine/unit-14/</link><guid isPermaLink="true">https://code198x.com/nintendo-entertainment-system/assembly/meet-the-machine/unit-14/</guid><description>The most ordinary thing of all, finally: maths. adc and sbc on a value — and the carry flag the 6502 makes you mind: clear it before you add, set it before you subtract.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 15: Working With Bits — Meet The Machine (NES)</title><link>https://code198x.com/nintendo-entertainment-system/assembly/meet-the-machine/unit-15/</link><guid isPermaLink="true">https://code198x.com/nintendo-entertainment-system/assembly/meet-the-machine/unit-15/</guid><description>Change one bit without disturbing the rest. Meet ora, and and eor — set, clear and flip individual bits — the everyday way to throw a single switch in a byte.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 16: Bigger Than a Byte — Meet The Machine (NES)</title><link>https://code198x.com/nintendo-entertainment-system/assembly/meet-the-machine/unit-16/</link><guid isPermaLink="true">https://code198x.com/nintendo-entertainment-system/assembly/meet-the-machine/unit-16/</guid><description>A byte stops at 255 — too small for an address. The 6502 has no 16-bit registers, so you hold a big number as two bytes and add it by hand, low byte first — and the carry flag becomes the bridge between them.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 18: The Machine Trusts You — Meet The Machine (NES)</title><link>https://code198x.com/nintendo-entertainment-system/assembly/meet-the-machine/unit-18/</link><guid isPermaLink="true">https://code198x.com/nintendo-entertainment-system/assembly/meet-the-machine/unit-18/</guid><description>The last unit, and the most important. There&apos;s no error message, no bounds check, no guard rail — the machine does exactly what you wrote, even when you&apos;re wrong. Learn to debug by observing, not by reading errors.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: You Type the Whole Word — Meet C64 BASIC (C64)</title><link>https://code198x.com/commodore-64/basic/meet-c64-basic/unit-01/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/meet-c64-basic/unit-01/</guid><description>Type your first line of Commodore BASIC, run it, and read what the C64 prints back. Meet the keyboard where you spell each word out — and the type-run loop you&apos;ll use all primer.</description><pubDate>Sun, 07 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: The Line Number Is an Address — Meet C64 BASIC (C64)</title><link>https://code198x.com/commodore-64/basic/meet-c64-basic/unit-02/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/meet-c64-basic/unit-02/</guid><description>Edit a program by its line numbers — replace a line by reusing its number, slip a new line into a gap, delete one, and LIST them in order. Then meet the C64&apos;s full-screen editor, where you change a line in place.</description><pubDate>Sun, 07 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: PRINT, and Its Punctuation — Meet C64 BASIC (C64)</title><link>https://code198x.com/commodore-64/basic/meet-c64-basic/unit-03/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/meet-c64-basic/unit-03/</guid><description>Give PRINT its punctuation — join with a semicolon, line things up in 10-column zones with a comma — then clear the screen the C64 way, with PRINT CHR$(147), and start the title card you&apos;ll grow all primer.</description><pubDate>Sun, 07 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 4: LET, and the First Two Letters — Meet C64 BASIC (C64)</title><link>https://code198x.com/commodore-64/basic/meet-c64-basic/unit-04/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/meet-c64-basic/unit-04/</guid><description>Give the program a memory: LET names a box that holds a value. Meet the C64&apos;s naming rules — strings end in $, and the surprise that only the first two letters of a name count, so CASH and CARD are the same box.</description><pubDate>Sun, 07 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 5: INPUT — the Program Listens — Meet C64 BASIC (C64)</title><link>https://code198x.com/commodore-64/basic/meet-c64-basic/unit-05/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/meet-c64-basic/unit-05/</guid><description>Let the person at the keyboard fill a variable. INPUT stops the program, prints a prompt and a ?, waits for what&apos;s typed, and stores it — text into a $ box, numbers into a plain one.</description><pubDate>Sun, 07 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 6: IF / THEN, the C64 Way — Meet C64 BASIC (C64)</title><link>https://code198x.com/commodore-64/basic/meet-c64-basic/unit-06/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/meet-c64-basic/unit-06/</guid><description>Let the program decide. IF tests a condition; THEN runs the rest of the line only when it holds. The C64 has no ELSE — so two-way choices are two IFs, one per outcome.</description><pubDate>Sun, 07 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 7: FOR / NEXT Counts For You — Meet C64 BASIC (C64)</title><link>https://code198x.com/commodore-64/basic/meet-c64-basic/unit-07/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/meet-c64-basic/unit-07/</guid><description>Repeat a thing a fixed number of times without retyping it. FOR sets a counter and its range; NEXT sends the loop round again; STEP changes how the counter moves — even backwards, for a countdown.</description><pubDate>Sun, 07 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 8: GOTO, GOSUB, and the Game Loop — Meet C64 BASIC (C64)</title><link>https://code198x.com/commodore-64/basic/meet-c64-basic/unit-08/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/meet-c64-basic/unit-08/</guid><description>Jump and repeat. GOTO sends the program to a line; the endless loop is its game-shaped form. GOSUB calls a named job and RETURN comes back. RND picks a secret, and the guessing loop ties it all together.</description><pubDate>Sun, 07 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 9: The Screen Is Memory — Meet C64 BASIC (C64)</title><link>https://code198x.com/commodore-64/basic/meet-c64-basic/unit-09/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/meet-c64-basic/unit-09/</guid><description>Meet the C64&apos;s defining trick: the screen is just memory. POKE a screen code into an address from 1024 onward and a character appears there — no PRINT, no cursor. An address formula puts it anywhere.</description><pubDate>Sun, 07 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 10: Colour Lives Somewhere Else — Meet C64 BASIC (C64)</title><link>https://code198x.com/commodore-64/basic/meet-c64-basic/unit-10/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/meet-c64-basic/unit-10/</guid><description>Every character cell has a second byte that nobody mentioned yet: its colour, stored in a separate block of memory at 55296. Set the border and background too, and the screen finally has the colours you choose.</description><pubDate>Sun, 07 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 11: The Machine Can Sing — Meet C64 BASIC (C64)</title><link>https://code198x.com/commodore-64/basic/meet-c64-basic/unit-11/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/meet-c64-basic/unit-11/</guid><description>C64 BASIC has no sound keyword at all — because sound here isn&apos;t a word, it&apos;s a chip. The SID lives in memory at 54272, and a handful of POKEs give it a note, a voice, and a sound that moves while your program runs.</description><pubDate>Sun, 07 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 12: Reading the Joystick — Meet C64 BASIC (C64)</title><link>https://code198x.com/commodore-64/basic/meet-c64-basic/unit-12/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/meet-c64-basic/unit-12/</guid><description>Input on the C64 is another PEEK. The joystick port is memory at 56320: read it and each direction is one bit, cleared when the stick is pushed. Decode the bits with AND, and a ball moves under your hand.</description><pubDate>Sun, 07 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 13: A Shape That Moves — Meet C64 BASIC (C64)</title><link>https://code198x.com/commodore-64/basic/meet-c64-basic/unit-13/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/meet-c64-basic/unit-13/</guid><description>Give a shape a life of its own. The animation loop is erase, move, draw, repeat — and a direction variable you flip at the edges makes a ball bounce. Meet the flicker that sends C64 game-writers to assembly.</description><pubDate>Sun, 07 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 14: Keeping Your Work — Meet C64 BASIC (C64)</title><link>https://code198x.com/commodore-64/basic/meet-c64-basic/unit-14/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/meet-c64-basic/unit-14/</guid><description>A program lives in RAM and vanishes when the power goes off. The disk drive keeps it: SAVE writes your program to disk, LOAD brings it back, and the directory shows what&apos;s there. The save-and-reload cycle every C64 session is built on.</description><pubDate>Sun, 07 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 15: When It&apos;s Wrong — Meet C64 BASIC (C64)</title><link>https://code198x.com/commodore-64/basic/meet-c64-basic/unit-15/</link><guid isPermaLink="true">https://code198x.com/commodore-64/basic/meet-c64-basic/unit-15/</guid><description>The C64&apos;s error messages are terse, but each one names the problem and points to the line. SYNTAX ERROR, UNDEF&apos;D STATEMENT, ILLEGAL QUANTITY — read them as directions, not scolding, and you can fix anything you write.</description><pubDate>Sun, 07 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: A Program Is Instructions — Unit 01 (foundations)</title><link>https://code198x.com/foundations/basics/unit-01/</link><guid isPermaLink="true">https://code198x.com/foundations/basics/unit-01/</guid><description>A program is a list of instructions. The computer does each one in turn, exactly as you wrote it.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: One Thing After Another — Unit 02 (foundations)</title><link>https://code198x.com/foundations/basics/unit-02/</link><guid isPermaLink="true">https://code198x.com/foundations/basics/unit-02/</guid><description>Give the computer several instructions and it does them in order. That order matters as much as the instructions do.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: Showing Your Work — Unit 03 (foundations)</title><link>https://code198x.com/foundations/basics/unit-03/</link><guid isPermaLink="true">https://code198x.com/foundations/basics/unit-03/</guid><description>Output is not only fixed words. A program can show a value it worked out, and join text and values together.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 4: A Place to Remember — Unit 04 (foundations)</title><link>https://code198x.com/foundations/basics/unit-04/</link><guid isPermaLink="true">https://code198x.com/foundations/basics/unit-04/</guid><description>A variable is a named box that holds a value, so a program can keep it, use it, and change it.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 5: Asking the Player — Unit 05 (foundations)</title><link>https://code198x.com/foundations/basics/unit-05/</link><guid isPermaLink="true">https://code198x.com/foundations/basics/unit-05/</guid><description>The program asks whoever is using it, and does something different depending on the answer.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: Making a Choice — Unit 01 (foundations)</title><link>https://code198x.com/foundations/decisions/unit-01/</link><guid isPermaLink="true">https://code198x.com/foundations/decisions/unit-01/</guid><description>A program that decides: test a value, and do something only if the test passes.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: One or the Other — Unit 02 (foundations)</title><link>https://code198x.com/foundations/decisions/unit-02/</link><guid isPermaLink="true">https://code198x.com/foundations/decisions/unit-02/</guid><description>Two paths from one question: do this, or else do that. And a chain of questions when there are more than two answers.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: A Yes You Can Keep — Unit 03 (foundations)</title><link>https://code198x.com/foundations/decisions/unit-03/</link><guid isPermaLink="true">https://code198x.com/foundations/decisions/unit-03/</guid><description>The answer to a question is a value. Put it in a box and the program can remember it, carry it about, and act on it later.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 4: Asking Two Things at Once — Unit 04 (foundations)</title><link>https://code198x.com/foundations/decisions/unit-04/</link><guid isPermaLink="true">https://code198x.com/foundations/decisions/unit-04/</guid><description>Join questions together with AND, OR and NOT, so one test can ask about more than one thing.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: Doing It Again — Unit 01 (foundations)</title><link>https://code198x.com/foundations/repeating/unit-01/</link><guid isPermaLink="true">https://code198x.com/foundations/repeating/unit-01/</guid><description>A loop repeats work without writing it out over and over, a set number of times, with a counter you can use as it goes.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: Until You Get It — Unit 02 (foundations)</title><link>https://code198x.com/foundations/repeating/unit-02/</link><guid isPermaLink="true">https://code198x.com/foundations/repeating/unit-02/</guid><description>The loop that runs until something happens, rather than a set number of times. It is the shape of every game.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: Checking Before You Start — Unit 03 (foundations)</title><link>https://code198x.com/foundations/repeating/unit-03/</link><guid isPermaLink="true">https://code198x.com/foundations/repeating/unit-03/</guid><description>A loop that asks its question first, so the work can happen no times at all.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: A Box That Holds Many — Unit 01 (foundations)</title><link>https://code198x.com/foundations/structure/unit-01/</link><guid isPermaLink="true">https://code198x.com/foundations/structure/unit-01/</guid><description>A list is one name holding a row of values, and a loop can walk along it.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: A Job With a Name — Unit 02 (foundations)</title><link>https://code198x.com/foundations/structure/unit-02/</link><guid isPermaLink="true">https://code198x.com/foundations/structure/unit-02/</guid><description>Give a piece of work a name, write it once, and call it whenever you need it.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: Telling a Job What to Work On — Unit 03 (foundations)</title><link>https://code198x.com/foundations/structure/unit-03/</link><guid isPermaLink="true">https://code198x.com/foundations/structure/unit-03/</guid><description>A job that takes a value and hands one back, so one job can do a whole family of things.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 4: When It&apos;s Wrong — Unit 04 (foundations)</title><link>https://code198x.com/foundations/structure/unit-04/</link><guid isPermaLink="true">https://code198x.com/foundations/structure/unit-04/</guid><description>The most useful skill there is: finding out why a program misbehaves by looking at what it did, not by guessing.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: Working It Out — Unit 01 (foundations)</title><link>https://code198x.com/foundations/working-it-out/unit-01/</link><guid isPermaLink="true">https://code198x.com/foundations/working-it-out/unit-01/</guid><description>The computer works a new value out from what you give it, following a fixed order you can steer with brackets.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: A Box That Grows From Itself — Unit 02 (foundations)</title><link>https://code198x.com/foundations/working-it-out/unit-02/</link><guid isPermaLink="true">https://code198x.com/foundations/working-it-out/unit-02/</guid><description>One line puts a box&apos;s own value back into it, larger. It is the counter behind every score, timer and life count.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: When It Doesn&apos;t Divide Evenly — Unit 03 (foundations)</title><link>https://code198x.com/foundations/working-it-out/unit-03/</link><guid isPermaLink="true">https://code198x.com/foundations/working-it-out/unit-03/</guid><description>Seven does not split into twos. What you do with the part left over is a question every program has to answer.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: The Keyboard Types Words — BASIC Reference (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/meet-basic/unit-01/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/meet-basic/unit-01/</guid><description>Type your first Sinclair BASIC line, run it, and read the report the Spectrum prints back. Meet the keyboard that types whole words from a single key — and the type-run loop you&apos;ll use all primer.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: The Line Number Is an Address — BASIC Reference (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/meet-basic/unit-02/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/meet-basic/unit-02/</guid><description>Edit a program by its line numbers — replace a line by reusing its number, slip a new line into a gap, delete one, and LIST them in order. The number is the line&apos;s address, and that is the whole of editing.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: PRINT, Properly — BASIC Reference (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/meet-basic/unit-03/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/meet-basic/unit-03/</guid><description>Give PRINT its punctuation — join text and numbers with a semicolon, line them up in columns with a comma, break a line with an apostrophe — then clear the screen with CLS and start the title card you&apos;ll grow all primer.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 4: LET, and What You May Name — BASIC Reference (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/meet-basic/unit-04/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/meet-basic/unit-04/</guid><description>Store a value in a named box with LET, use it, and change it — then meet the Spectrum&apos;s own rule: numeric names can be long, but a text variable must be a single letter plus a dollar sign. See name$ fail, and learn why.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 5: INPUT — the Program Listens — BASIC Reference (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/meet-basic/unit-05/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/meet-basic/unit-05/</guid><description>Make the program wait for the person at the keyboard. INPUT reads what they type into a variable — text into a single-letter dollar name, numbers into a numeric one — the first time the program responds to you, not just itself.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 6: IF / THEN, the Spectrum Way — BASIC Reference (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/meet-basic/unit-06/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/meet-basic/unit-06/</guid><description>Make the program decide. IF ... THEN acts only when a condition holds — and Sinclair BASIC has operators of its own: &lt;&gt; for not-equal, AND and OR that are logical not bitwise, and no ELSE, so you write a second IF.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 7: FOR / NEXT Counts For You — BASIC Reference (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/meet-basic/unit-07/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/meet-basic/unit-07/</guid><description>Repeat a block a set number of times without copying a single line. FOR ... NEXT counts from one number to another, hands you the count as a variable you can use, and counts backwards too with STEP.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 8: GO TO, GO SUB, and the Game Loop — BASIC Reference (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/meet-basic/unit-08/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/meet-basic/unit-08/</guid><description>Build the loop every game runs on — keep asking until the player wins — with GO TO. Package a job and call it from anywhere with GO SUB and RETURN. And let the computer pick a secret number with RND.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 9: The Screen Is a Grid — BASIC Reference (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/meet-basic/unit-09/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/meet-basic/unit-09/</guid><description>Place text anywhere with PRINT AT. The Spectrum&apos;s screen is a grid 32 columns wide and 24 rows tall, addressed from the top-left — so you can put a label in a corner, the centre, or wherever the layout needs it. The title card finds its spot.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 10: Colour, and Text in Many Colours — BASIC Reference (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/meet-basic/unit-10/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/meet-basic/unit-10/</guid><description>Turn a grey screen into a Spectrum screen. INK, PAPER and BORDER set the colours; BRIGHT and FLASH add punch; and a loop that changes INK per letter paints text in every colour at once. The title card gets its palette.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 11: The Machine Can Sing — BASIC Reference (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/meet-basic/unit-11/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/meet-basic/unit-11/</guid><description>Make a sound in one line. BEEP plays a note — you give it a length and a pitch — and a FOR loop turns a row of notes into a rising fanfare. The title card gets its voice.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 12: Drawing With Light — BASIC Reference (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/meet-basic/unit-12/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/meet-basic/unit-12/</guid><description>Draw shapes, not just text. PLOT lights a pixel, DRAW runs a line from it, CIRCLE draws a circle — on a finer grid than the character one, measured from the bottom-left. A frame goes round the title card.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 13: Making It Move — BASIC Reference (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/meet-basic/unit-13/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/meet-basic/unit-13/</guid><description>Bring the title card to life. Animation is draw, wait, erase, move, repeat — built from a loop, PRINT AT, and a pause, with nothing new to learn. And in the flicker of it, you&apos;ll see exactly why the Spectrum&apos;s legends wrote their games in assembly.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 14: Keeping Your Work — BASIC Reference (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/meet-basic/unit-14/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/meet-basic/unit-14/</guid><description>A program you can&apos;t keep isn&apos;t yours yet. SAVE stores your program so it survives the machine switching off; LOAD brings it back. On a real Spectrum that&apos;s tape; in an emulator it&apos;s a file — but the words are the same.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 15: When It&apos;s Wrong — BASIC Reference (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/meet-basic/unit-15/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/meet-basic/unit-15/</guid><description>The skill that separates getting it done from getting stuck. The Spectrum tells you how every program stopped — a code, a message, and the line. Read the report, read the state, and find out why; don&apos;t guess. The debugging mindset, as the primer&apos;s last lesson.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 8: The Machine Can Hear You — Meet The Machine (C64)</title><link>https://code198x.com/commodore-64/assembly/meet-the-machine/unit-08/</link><guid isPermaLink="true">https://code198x.com/commodore-64/assembly/meet-the-machine/unit-08/</guid><description>Read the joystick the honest way — read a port, isolate one bit, branch on it. Push the stick and watch the border react, every pass of the loop. The first time the machine answers to you.</description><pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 9: A Finger on the Boxes — Meet The Machine (C64)</title><link>https://code198x.com/commodore-64/assembly/meet-the-machine/unit-09/</link><guid isPermaLink="true">https://code198x.com/commodore-64/assembly/meet-the-machine/unit-09/</guid><description>Stop baking the address into every instruction. Meet indexed addressing — X as a finger you slide along the memory street, writing as it goes — the idea behind every loop that fills the screen.</description><pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 10: The Counted Loop — Meet The Machine (C64)</title><link>https://code198x.com/commodore-64/assembly/meet-the-machine/unit-10/</link><guid isPermaLink="true">https://code198x.com/commodore-64/assembly/meet-the-machine/unit-10/</guid><description>Hand the repetition to the machine. Load a count, run the body, step on, and branch back until you&apos;ve done them all — one loop fills a whole row where last unit you stepped by hand.</description><pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 11: Call, Return, and a Stack You Can See — Meet The Machine (C64)</title><link>https://code198x.com/commodore-64/assembly/meet-the-machine/unit-11/</link><guid isPermaLink="true">https://code198x.com/commodore-64/assembly/meet-the-machine/unit-11/</guid><description>Package a job into a subroutine you can call from anywhere — and watch where the machine remembers its way back: the stack, sitting in plain memory you can read.</description><pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 12: Adding and Taking Away — Meet The Machine (C64)</title><link>https://code198x.com/commodore-64/assembly/meet-the-machine/unit-12/</link><guid isPermaLink="true">https://code198x.com/commodore-64/assembly/meet-the-machine/unit-12/</guid><description>The most ordinary thing of all, finally: maths. adc and sbc on a value — and the carry flag the 6510 makes you mind: clear it before you add, set it before you subtract.</description><pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 13: Working With Bits — Meet The Machine (C64)</title><link>https://code198x.com/commodore-64/assembly/meet-the-machine/unit-13/</link><guid isPermaLink="true">https://code198x.com/commodore-64/assembly/meet-the-machine/unit-13/</guid><description>Change one bit without disturbing the rest. Meet ora, and and eor — set, clear and flip individual bits — the everyday way to throw a single switch in a byte.</description><pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 14: Bigger Than a Byte — Meet The Machine (C64)</title><link>https://code198x.com/commodore-64/assembly/meet-the-machine/unit-14/</link><guid isPermaLink="true">https://code198x.com/commodore-64/assembly/meet-the-machine/unit-14/</guid><description>A byte stops at 255 — too small for an address. The 6510 has no 16-bit registers, so you hold a big number as two bytes and add it by hand, low byte first — and the carry flag becomes the bridge between them.</description><pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 16: The Machine Trusts You — Meet The Machine (C64)</title><link>https://code198x.com/commodore-64/assembly/meet-the-machine/unit-16/</link><guid isPermaLink="true">https://code198x.com/commodore-64/assembly/meet-the-machine/unit-16/</guid><description>The last unit, and the most important. There&apos;s no error message, no bounds check, no guard rail — the machine does exactly what you wrote, even when you&apos;re wrong. Learn to debug by observing, not by reading errors.</description><pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: Assemble and Run — Meet The Machine (C64)</title><link>https://code198x.com/commodore-64/assembly/meet-the-machine/unit-01/</link><guid isPermaLink="true">https://code198x.com/commodore-64/assembly/meet-the-machine/unit-01/</guid><description>Write a few lines of assembly, turn them into a program with a build step, run it on the C64, and watch the border change colour. Meet the loop you&apos;ll use all course — and the idea that makes the C64 the C64.</description><pubDate>Wed, 03 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: LDA Is Not LET — Meet The Machine (C64)</title><link>https://code198x.com/commodore-64/assembly/meet-the-machine/unit-02/</link><guid isPermaLink="true">https://code198x.com/commodore-64/assembly/meet-the-machine/unit-02/</guid><description>Meet the registers — the three physical 8-bit stores inside the 6510. Send a value from A into X and back again, and watch the border prove it made the trip. And learn why &apos;load&apos; comes in three flavours.</description><pubDate>Wed, 03 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: Everything Is a Number — Meet The Machine (C64)</title><link>https://code198x.com/commodore-64/assembly/meet-the-machine/unit-03/</link><guid isPermaLink="true">https://code198x.com/commodore-64/assembly/meet-the-machine/unit-03/</guid><description>A byte has no type. Discover that 65, $41, the letter &apos;A&apos; and the bit-pattern %01000001 are one and the same byte — and meet hex, the way you&apos;ll read bytes from here on.</description><pubDate>Wed, 03 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 4: A Street of Numbered Boxes — Meet The Machine (C64)</title><link>https://code198x.com/commodore-64/assembly/meet-the-machine/unit-04/</link><guid isPermaLink="true">https://code198x.com/commodore-64/assembly/meet-the-machine/unit-04/</guid><description>Meet memory — one long street of numbered boxes, each holding a byte. Store a byte at an address and read it back, the same round-trip you used for registers, now through RAM.</description><pubDate>Wed, 03 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 5: The Screen Is Memory — Meet The Machine (C64)</title><link>https://code198x.com/commodore-64/assembly/meet-the-machine/unit-05/</link><guid isPermaLink="true">https://code198x.com/commodore-64/assembly/meet-the-machine/unit-05/</guid><description>The big one. Discover that the screen is just a stretch of the same memory street — poke a byte to $0400 and a character appears. No PRINT, no magic: a box on screen holds one character code, and the chip draws it.</description><pubDate>Wed, 03 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 6: Colour Is a Separate Map — Meet The Machine (C64)</title><link>https://code198x.com/commodore-64/assembly/meet-the-machine/unit-06/</link><guid isPermaLink="true">https://code198x.com/commodore-64/assembly/meet-the-machine/unit-06/</guid><description>Find out where colour lives — a second map at $D800, one byte per cell, completely apart from the characters. Colour a cell with a single byte, and meet the C64&apos;s own take on the attribute grid.</description><pubDate>Wed, 03 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 7: Test, Then Jump — Meet The Machine (C64)</title><link>https://code198x.com/commodore-64/assembly/meet-the-machine/unit-07/</link><guid isPermaLink="true">https://code198x.com/commodore-64/assembly/meet-the-machine/unit-07/</guid><description>There&apos;s no IF on the 6510. Learn how the machine makes decisions instead — compare a value, which sets a flag, then branch on that flag. Build your own IF, and write your first labels.</description><pubDate>Wed, 03 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: A Hooded Figure — Shadowkeep (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/shadowkeep/unit-01/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/shadowkeep/unit-01/</guid><description>Shadowkeep begins where The Long Night ended — the same engine, a new face. Design a hooded thief as eight bytes and stand him, alone, in the cold blue dark of the keep.</description><pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: The First Hall — Shadowkeep (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/shadowkeep/unit-02/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/shadowkeep/unit-02/</guid><description>The thief stood on flat blue. A keep is made of stone, and stone has shade. Meet dithering — mixing two colours in the bitmap to get the shades between them — and build the keep&apos;s first room: a dark slate floor inside lit stone walls.</description><pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: A Place to Move — Shadowkeep (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/shadowkeep/unit-03/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/shadowkeep/unit-03/</guid><description>Set the thief walking the hall. It&apos;s almost all Gloaming — keyboard, cell-step movement, save/restore, wall collision — with two keep-specific twists: the save buffer now carries dithered stone, and a wall is known by its light.</description><pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 4: The Keep&apos;s Hand — Shadowkeep (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/shadowkeep/unit-04/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/shadowkeep/unit-04/</guid><description>One bordered box was baked into the code. The keep needs many shapes, so we describe a room as data: a tile palette, and a room map you can read as a picture in the source. The reward — pillars, and a thief who walks between them.</description><pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 5: The Room Graph — Shadowkeep (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/shadowkeep/unit-05/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/shadowkeep/unit-05/</guid><description>One room is a picture; a keep is many pictures and a sense of which lies through each door. Build the room table — each room&apos;s map plus its four edge-links — and let the thief walk through a doorway into a second room.</description><pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 6: Through the Doorway — Shadowkeep (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/shadowkeep/unit-06/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/shadowkeep/unit-06/</guid><description>Unit 5&apos;s room travel was a teleport to the centre. Make it a step: leave by one edge and arrive at the opposite edge of the next room, at the same height, mid-stride — so the flick reads as walking through a doorway.</description><pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 7: The Hero Remembers — Shadowkeep (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/shadowkeep/unit-07/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/shadowkeep/unit-07/</guid><description>Each room is redrawn from its template every time you enter, so the keep forgets everything. Move the rooms into RAM, let the thief chalk his route as he goes, and watch the marks survive leaving and returning. The keep gains a memory.</description><pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 8: Three Rooms — Shadowkeep (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/shadowkeep/unit-08/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/shadowkeep/unit-08/</guid><description>The flick-screen engine is complete — graph, doorways, memory. Now build a keep with it: three connected rooms, each with its own character, doors lined up so the whole thing reads as one place to explore. No new code, all design.</description><pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: Assemble and Run — Meet The Machine (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/meet-the-machine/unit-01/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/meet-the-machine/unit-01/</guid><description>Write three lines of assembly, turn them into a program with a build step, run it on the Spectrum, and watch the border change colour. Meet the loop you&apos;ll use all course.</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: LD Is Not LET — Meet The Machine (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/meet-the-machine/unit-02/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/meet-the-machine/unit-02/</guid><description>Meet the registers — the handful of physical, 8-bit stores inside the CPU. Move a value from A into B and back again, and watch the border prove it made the trip.</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: Everything Is a Number — Meet The Machine (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/meet-the-machine/unit-03/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/meet-the-machine/unit-03/</guid><description>A byte has no type. Discover that 65, $41, the letter &apos;A&apos; and the bit-pattern %01000001 are one and the same byte — and meet hex, the way you&apos;ll read bytes from here on.</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 4: A Street of Numbered Boxes — Meet The Machine (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/meet-the-machine/unit-04/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/meet-the-machine/unit-04/</guid><description>Meet memory — one long street of numbered boxes, each holding a byte. Store a byte at an address and read it back, the same round-trip you used for registers, now through RAM.</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 5: The Screen Is Memory — Meet The Machine (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/meet-the-machine/unit-05/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/meet-the-machine/unit-05/</guid><description>The big one. Discover that the screen is just a stretch of the same memory street — poke a byte to $4000 and pixels light up. No PLOT, no magic: the bits in the byte are the dots on the glass.</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 6: Colour Is a Separate Map — Meet The Machine (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/meet-the-machine/unit-06/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/meet-the-machine/unit-06/</guid><description>Find out where colour lives — a second map at $5800, one packed byte per cell, completely apart from the pixels. Colour a whole cell with a single byte and never touch a pixel.</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 7: Test, Then Jump — Meet The Machine (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/meet-the-machine/unit-07/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/meet-the-machine/unit-07/</guid><description>There&apos;s no IF on the Z80. Learn how the machine makes decisions instead — compare a value, which sets a flag, then jump on that flag. Build your own IF, and write your first labels.</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 8: The Machine Can Hear You — Meet The Machine (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/meet-the-machine/unit-08/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/meet-the-machine/unit-08/</guid><description>Read the keyboard the hard, honest way — pick a half-row, read a port, test one bit. Hold a key and watch the border react, every frame. The first time the machine answers to you.</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 9: A Finger on the Boxes — Meet The Machine (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/meet-the-machine/unit-09/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/meet-the-machine/unit-09/</guid><description>Stop baking addresses into instructions. Meet the pointer — HL as a finger you move along the memory street, writing as it goes — the idea behind every loop that fills the screen.</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 10: Counting Toward Zero — Meet The Machine (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/meet-the-machine/unit-10/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/meet-the-machine/unit-10/</guid><description>Hand the repetition to the machine. Load a count into B, and DJNZ runs the body that many times — one loop fills a whole row where last unit you stepped by hand.</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 11: Call, Return, and a Stack You Can See — Meet The Machine (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/meet-the-machine/unit-11/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/meet-the-machine/unit-11/</guid><description>Package a job into a subroutine you can call from anywhere — and watch where the machine remembers its way back: the stack, sitting in plain memory you can read.</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 12: Adding and Taking Away — Meet The Machine (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/meet-the-machine/unit-12/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/meet-the-machine/unit-12/</guid><description>The most ordinary thing of all, finally: maths. inc, dec, add and sub on a value — and the carry flag, the machine&apos;s way of telling you a byte just overflowed.</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 13: Working With Bits — Meet The Machine (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/meet-the-machine/unit-13/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/meet-the-machine/unit-13/</guid><description>Change one bit without disturbing the rest. Meet and, or and xor — clear, set and flip individual bits — the everyday way to flip a single flag like an attribute&apos;s BRIGHT.</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 14: Bigger Than a Byte — Meet The Machine (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/meet-the-machine/unit-14/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/meet-the-machine/unit-14/</guid><description>A byte stops at 255 — too small for an address. See how registers pair up into 16-bit numbers, and use add hl, de to step a pointer by more than one, the way a game walks down a wall.</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 16: The Machine Trusts You — Meet The Machine (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/assembly/meet-the-machine/unit-16/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/assembly/meet-the-machine/unit-16/</guid><description>The last beat, and the most important. There&apos;s no error message, no bounds check, no guard rail — the machine does exactly what you wrote, even when you&apos;re wrong. Learn to debug by observing, not by reading errors.</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: The Warehouse — Crates (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/crates/unit-01/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/crates/unit-01/</guid><description>Lay a level out as DATA strings, parse them into a 2D array, and colour each cell — the array is the world, the screen only its picture.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: The Player — Crates (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/crates/unit-02/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/crates/unit-02/</guid><description>Move the instant a key is pressed — INKEY$ with a two-line debounce gives one step per press, no ENTER, the first real-time control in the course.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: Walls — Crates (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/crates/unit-03/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/crates/unit-03/</guid><description>Make walls solid with a single array lookup — the grid that draws the level also answers every collision question.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 4: Pushing — Crates (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/crates/unit-04/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/crates/unit-04/</guid><description>The one rule the whole game is built on — walk into a crate and it slides, but only if the cell beyond it is clear. A two-cell lookahead does it.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 5: Targets — Crates (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/crates/unit-05/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/crates/unit-05/</guid><description>A crate on a target is a fifth cell state with its own colour and behaviour — and the puzzle is won when no bare target is left.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 6: Crates — Crates (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/crates/unit-06/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/crates/unit-06/</guid><description>Turn one room into a game of three — DATA-driven levels selected with RESTORE, a restart key, a move count, and a play-again loop.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: The Code and a Guess — Locksmith (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/locksmith/unit-01/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/locksmith/unit-01/</guid><description>DIM hides a four-digit code, and a typed guess is validated and parsed into a second array — turning a string of digits into numbers the program can compare.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: Bulls — Locksmith (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/locksmith/unit-02/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/locksmith/unit-02/</guid><description>Count the bulls — digits that are right and in the right place — by walking the two arrays together and comparing position by position.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: Cows — Locksmith (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/locksmith/unit-03/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/locksmith/unit-03/</guid><description>The hard clue: a digit that is in the code but in the wrong place. Count it by tallying each digit in both arrays, summing the overlaps, and subtracting the bulls.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 4: Ten Guesses — Locksmith (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/locksmith/unit-04/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/locksmith/unit-04/</guid><description>Wrap the scoring in a ten-turn loop and keep every result on screen — a history log the player reads to deduce the code, with the win and the run-out built in.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 5: Win and Lose — Locksmith (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/locksmith/unit-05/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/locksmith/unit-05/</guid><description>Both endings get their own screen: a cracked-code celebration counting the guesses it took, and an out-of-guesses screen that finally reveals the answer.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 6: Locksmith — Locksmith (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/locksmith/unit-06/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/locksmith/unit-06/</guid><description>Peg clues instead of words, a title screen that explains bulls and cows, the secret finally hidden, and replay. Locksmith, complete.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: The Grid — Sonar (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/sonar/unit-01/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/sonar/unit-01/</guid><description>DIM with two indices makes an 8x8 grid, drawn with nested loops, and three targets are hidden on it — collision-checked so no two share a cell.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: Probing — Sonar (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/sonar/unit-02/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/sonar/unit-02/</guid><description>Read a row and a column, check them, and look up that cell in the grid — a hit marks the target with a star.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: Distance — Sonar (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/sonar/unit-03/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/sonar/unit-03/</guid><description>A miss should tell the player how close they came — sweep the whole grid, measure the gap to every target, and report the nearest with Manhattan distance.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 4: Warmer and Colder — Sonar (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/sonar/unit-04/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/sonar/unit-04/</guid><description>Store each miss&apos;s distance back into the grid and colour it on redraw — red when close, blue when far — so the board itself shows the trail of clues.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 5: Winning — Sonar (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/sonar/unit-05/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/sonar/unit-05/</guid><description>Count the hits, end the game on the third, and guard against probing a cell twice — plus a guess counter and a status line so the board reads as a game.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 6: Sonar — Sonar (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/sonar/unit-06/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/sonar/unit-06/</guid><description>Polish the playable game into the finished Sonar — a title screen, a drawn grid, a probe limit with a reveal, ratings, and a play-again loop.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: The Map — The Caverns (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/the-caverns/unit-01/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/the-caverns/unit-01/</guid><description>Four parallel arrays, loaded from a DATA table of twenty rooms, hold the cave as a graph — and the current room shows only which exits it has.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: Moving — The Caverns (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/the-caverns/unit-02/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/the-caverns/unit-02/</guid><description>Type a compass direction, look it up in the graph, and walk to the room it leads to — or be told there is no tunnel that way.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: The Draft — The Caverns (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/the-caverns/unit-03/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/the-caverns/unit-03/</guid><description>Hide a pit somewhere in the cave and sense it without seeing it — a reusable adjacency check turns the graph into a warning when danger is one room away.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 4: The Creature — The Caverns (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/the-caverns/unit-04/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/the-caverns/unit-04/</guid><description>A second hidden danger — one that smells when it is near and walks to a random adjacent room after every move you make.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 5: Treasure — The Caverns (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/the-caverns/unit-05/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/the-caverns/unit-05/</guid><description>Three treasures hidden in the cave, each announced by a faint glint when it is near — pick them all up to win, with a count loop over an array of locations.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 6: The Caverns — The Caverns (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/the-caverns/unit-06/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/the-caverns/unit-06/</guid><description>Dress the finished game — a title, coloured clues, sound for atmosphere, and a play-again loop — and hide the danger for good.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: The Board — Three In A Row (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/three-in-a-row/unit-01/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/three-in-a-row/unit-01/</guid><description>A nine-cell array is the board; an INT-divide turns each cell number into a row and column, and the grid is drawn with PLOT and DRAW.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: Your Move — Three In A Row (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/three-in-a-row/unit-02/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/three-in-a-row/unit-02/</guid><description>Pick a square, guard against taking one already filled, and draw a cross — the board carries three states in one array.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: Three in a Row — Three In A Row (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/three-in-a-row/unit-03/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/three-in-a-row/unit-03/</guid><description>The eight winning lines live in a DATA table; a reusable GO SUB scans them after each move to decide whether anyone has three in a row.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 4: The Opponent — Three In A Row (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/three-in-a-row/unit-04/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/three-in-a-row/unit-04/</guid><description>The computer reads the board and decides: take a winning move if it has one, block yours if you threaten one, otherwise play a random square.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 5: Strategy — Three In A Row (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/three-in-a-row/unit-05/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/three-in-a-row/unit-05/</guid><description>Replace the random fallback with positional sense — take the centre, then a corner, then an edge — and the computer plays well enough to force draws.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 6: Three in a Row — Three In A Row (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/three-in-a-row/unit-06/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/three-in-a-row/unit-06/</guid><description>Frame the finished game — a title screen, win/lose/draw endings, a running score across games, and a play-again loop.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: The Kingdom — Yearfall (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/yearfall/unit-01/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/yearfall/unit-01/</guid><description>Three numbers — population, grain, land — are the whole world, and they will persist and change across every year you rule.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: Feeding — Yearfall (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/yearfall/unit-02/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/yearfall/unit-02/</guid><description>Spend grain to feed your people — the first allocation under a constraint, and the starvation that follows underfeeding.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: Planting — Yearfall (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/yearfall/unit-03/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/yearfall/unit-03/</guid><description>Sow seed grain into acres and reap a harvest you cannot control — the second claim on your grain, and the tension that makes the game.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 4: The Years — Yearfall (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/yearfall/unit-04/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/yearfall/unit-04/</guid><description>Wrap the single turn in a ten-year loop where population grows and every choice compounds — the simulation that makes one decision matter five years later.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 5: Trading — Yearfall (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/yearfall/unit-05/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/yearfall/unit-05/</guid><description>Buy and sell land at a price that shifts each year — a third decision, with one INPUT and one sign handling both directions.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 6: Yearfall — Yearfall (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/yearfall/unit-06/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/yearfall/unit-06/</guid><description>Turn the bare simulation into a finished game — a year-end report, a population bar, colour and sound, a final rating, and replay.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: The Rules of the Round — Cipher (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/cipher/unit-02/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/cipher/unit-02/</guid><description>Turn the reveal into a game: lives that drop on a miss, a win when the word completes, and a tried-list so a repeated guess never costs you twice.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: The Board — Cipher (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/cipher/unit-03/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/cipher/unit-03/</guid><description>Lay the round out as a board: an inverse title bar, the word in colour with revealed letters standing out, a lives bar of stars, and the tried letters in their own row.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 4: A List of Words — Cipher (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/cipher/unit-04/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/cipher/unit-04/</guid><description>Move the word out of the program and into DATA — a whole list of them — then pick one at random with RESTORE and a counted READ. The game becomes data-driven.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 5: Rounds — Cipher (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/cipher/unit-05/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/cipher/unit-05/</guid><description>One word ends and the next begins: win and lose screens that reveal the answer, a wins-and-losses tally that survives between words, and a loop straight into the next round.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 6: Cipher — Cipher (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/cipher/unit-06/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/cipher/unit-06/</guid><description>A custom heart for each life and a title screen with the rules finish the game. Cipher, complete — and Volume 2 begun.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: The Hidden Word — Cipher (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/cipher/unit-01/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/cipher/unit-01/</guid><description>DATA holds a word, underscores hide it — the player guesses one letter at a time.</description><pubDate>Mon, 25 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: Rolling Dice — Dice Roller (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/dice-roller/unit-01/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/dice-roller/unit-01/</guid><description>A die is one expression you already know; a fistful of dice is that expression inside a FOR loop. Roll five at once and watch the numbers vary.</description><pubDate>Mon, 25 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: Counting the Faces — Dice Roller (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/dice-roller/unit-02/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/dice-roller/unit-02/</guid><description>Six counters and a chain of IFs turn a hundred rolls into a tally — the accumulation pattern at the heart of the simulation.</description><pubDate>Mon, 25 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: A Live Dashboard — Dice Roller (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/dice-roller/unit-03/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/dice-roller/unit-03/</guid><description>PRINT AT writes to a fixed spot, so the same six lines can be rewritten over and over — the totals climb in place while five hundred dice land.</description><pubDate>Mon, 25 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 4: Your Own Experiment — Dice Roller (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/dice-roller/unit-04/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/dice-roller/unit-04/</guid><description>INPUT puts the roll count in the player&apos;s hands, and a centred title makes it look built. Ten rolls or ten thousand — the choice is theirs.</description><pubDate>Mon, 25 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 5: The Bar Chart — Dice Roller (Spectrum)</title><link>https://code198x.com/sinclair-zx-spectrum/basic/dice-roller/unit-05/</link><guid isPermaLink="true">https://code198x.com/sinclair-zx-spectrum/basic/dice-roller/unit-05/</guid><description>One row of solid blocks per face turns six numbers into a shape you read at a glance — and a colour each makes the distribution unmistakable. Dice Roller, complete.</description><pubDate>Mon, 25 May 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: Screen Edges — Starfield (C64)</title><link>https://code198x.com/commodore-64/assembly/starfield/unit-03/</link><guid isPermaLink="true">https://code198x.com/commodore-64/assembly/starfield/unit-03/</guid><description>Push the ship to the right and it wraps off the screen. Add a ninth X bit and boundary clamping so it reaches the full width and stops cleanly at every edge.</description><pubDate>Fri, 06 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Unit 4: Fire Button Shoots — Starfield (C64)</title><link>https://code198x.com/commodore-64/assembly/starfield/unit-04/</link><guid isPermaLink="true">https://code198x.com/commodore-64/assembly/starfield/unit-04/</guid><description>Read the fire button and launch a bullet from the ship — then make the shot spawn correctly wherever the ship is, using the ninth X bit from the last unit.</description><pubDate>Fri, 06 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Unit 5: Laser Sound — Starfield (C64)</title><link>https://code198x.com/commodore-64/assembly/starfield/unit-05/</link><guid isPermaLink="true">https://code198x.com/commodore-64/assembly/starfield/unit-05/</guid><description>Configure a SID voice and gate it on each shot, so firing makes a sharp laser &apos;pew&apos; — your first taste of the C64&apos;s sound hardware.</description><pubDate>Fri, 06 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Unit 6: Enemy Appears — Starfield (C64)</title><link>https://code198x.com/commodore-64/assembly/starfield/unit-06/</link><guid isPermaLink="true">https://code198x.com/commodore-64/assembly/starfield/unit-06/</guid><description>Add a third sprite that moves on its own — a green enemy that drifts down the screen and keeps coming, respawning in a new column each time it leaves.</description><pubDate>Fri, 06 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Unit 7: Direct Hit — Starfield (C64)</title><link>https://code198x.com/commodore-64/assembly/starfield/unit-07/</link><guid isPermaLink="true">https://code198x.com/commodore-64/assembly/starfield/unit-07/</guid><description>Make the bullet and enemy notice each other — software collision by comparing coordinates on both axes, with the unsigned-distance trick and a ninth-bit guard.</description><pubDate>Fri, 06 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Unit 8: Explosion — Starfield (C64)</title><link>https://code198x.com/commodore-64/assembly/starfield/unit-08/</link><guid isPermaLink="true">https://code198x.com/commodore-64/assembly/starfield/unit-08/</guid><description>Sell the hit — flash the enemy white with a frame-counter freeze, then fire an explosion on the SID&apos;s second voice while the laser still rings.</description><pubDate>Fri, 06 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Unit 9: Scoring Points — Starfield (C64)</title><link>https://code198x.com/commodore-64/assembly/starfield/unit-09/</link><guid isPermaLink="true">https://code198x.com/commodore-64/assembly/starfield/unit-09/</guid><description>Write a score to screen RAM — character output and colour RAM for the readout, then BCD arithmetic and nybble extraction to count each hit.</description><pubDate>Fri, 06 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Unit 10: Enemy Waves — Starfield (C64)</title><link>https://code198x.com/commodore-64/assembly/starfield/unit-10/</link><guid isPermaLink="true">https://code198x.com/commodore-64/assembly/starfield/unit-10/</guid><description>Turn one enemy into a wave — parallel arrays and indexed addressing drive several enemies from a single loop, with the Y register and a spawn subroutine doing the repetitive work.</description><pubDate>Fri, 06 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Unit 11: Player Death — Starfield (C64)</title><link>https://code198x.com/commodore-64/assembly/starfield/unit-11/</link><guid isPermaLink="true">https://code198x.com/commodore-64/assembly/starfield/unit-11/</guid><description>Make the ship killable — detect enemy-on-ship collision, freeze the game with a game-over flag, and play a death tone on the SID&apos;s third and final voice.</description><pubDate>Fri, 06 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Unit 12: Game Over — Starfield (C64)</title><link>https://code198x.com/commodore-64/assembly/starfield/unit-12/</link><guid isPermaLink="true">https://code198x.com/commodore-64/assembly/starfield/unit-12/</guid><description>Tell the player it&apos;s over and let them try again — print GAME OVER into screen RAM with a text subroutine, then restart the whole game on a press of fire.</description><pubDate>Fri, 06 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Unit 13: Three Lives — Starfield (C64)</title><link>https://code198x.com/commodore-64/assembly/starfield/unit-13/</link><guid isPermaLink="true">https://code198x.com/commodore-64/assembly/starfield/unit-13/</guid><description>Soften the one-hit ending — give the player three lives, a counter that ticks down on each hit and respawns the ship, with game over held back until the last life is gone.</description><pubDate>Fri, 06 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Unit 14: Life Lost Flash — Starfield (C64)</title><link>https://code198x.com/commodore-64/assembly/starfield/unit-14/</link><guid isPermaLink="true">https://code198x.com/commodore-64/assembly/starfield/unit-14/</guid><description>Make losing a life fair — a border flash marks each hit and doubles as a short window of invulnerability, so a respawn can&apos;t die on the spot.</description><pubDate>Fri, 06 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Unit 15: Starfield — Starfield (C64)</title><link>https://code198x.com/commodore-64/assembly/starfield/unit-15/</link><guid isPermaLink="true">https://code198x.com/commodore-64/assembly/starfield/unit-15/</guid><description>Fill the empty space — draw a scrolling starfield straight into screen RAM with indirect indexed addressing, then split it into three depths moving at three speeds.</description><pubDate>Fri, 06 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Unit 16: Title Screen — Starfield (C64)</title><link>https://code198x.com/commodore-64/assembly/starfield/unit-16/</link><guid isPermaLink="true">https://code198x.com/commodore-64/assembly/starfield/unit-16/</guid><description>Turn the program into a finished game — a title screen and a three-state machine (title, playing, game over) that opens, plays, ends, and loops back to the start.</description><pubDate>Fri, 06 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: See Your Character — Dash (NES)</title><link>https://code198x.com/nintendo-entertainment-system/assembly/dash/unit-01/</link><guid isPermaLink="true">https://code198x.com/nintendo-entertainment-system/assembly/dash/unit-01/</guid><description>Build a complete NES cartridge from scratch — iNES header, PPU warmup, palette, and sprite data. A running figure appears on screen.</description><pubDate>Fri, 06 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: Controller Input — Dash (NES)</title><link>https://code198x.com/nintendo-entertainment-system/assembly/dash/unit-02/</link><guid isPermaLink="true">https://code198x.com/nintendo-entertainment-system/assembly/dash/unit-02/</guid><description>Read the NES controller with the strobe-and-serial protocol. AND masks test individual buttons, BEQ branches on the result. The figure walks left and right.</description><pubDate>Fri, 06 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Unit 3: Jump — Dash (NES)</title><link>https://code198x.com/nintendo-entertainment-system/assembly/dash/unit-03/</link><guid isPermaLink="true">https://code198x.com/nintendo-entertainment-system/assembly/dash/unit-03/</guid><description>The A button launches the player upward. Gravity pulls them back down. Signed velocity, two&apos;s complement arithmetic, and the core verb of every platformer.</description><pubDate>Fri, 06 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Unit 4: Obstacle — Dash (NES)</title><link>https://code198x.com/nintendo-entertainment-system/assembly/dash/unit-04/</link><guid isPermaLink="true">https://code198x.com/nintendo-entertainment-system/assembly/dash/unit-04/</guid><description>A diamond-shaped obstacle scrolls across the floor. SEC/SBC moves it left each frame. Bounding box collision detects the hit. Jump or get knocked back.</description><pubDate>Fri, 06 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Unit 5: Jump Sound — Dash (NES)</title><link>https://code198x.com/nintendo-entertainment-system/assembly/dash/unit-05/</link><guid isPermaLink="true">https://code198x.com/nintendo-entertainment-system/assembly/dash/unit-05/</guid><description>The APU&apos;s pulse channel gives the jump a voice. Four register writes set the duty cycle, volume, pitch, and sweep — a rising chirp that silences itself.</description><pubDate>Fri, 06 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Unit 6: Background Tiles — Dash (NES)</title><link>https://code198x.com/nintendo-entertainment-system/assembly/dash/unit-06/</link><guid isPermaLink="true">https://code198x.com/nintendo-entertainment-system/assembly/dash/unit-06/</guid><description>The nametable fills the screen with tiles from CHR-ROM. Write tile indices via $2006/$2007, set colours with the attribute table. The world becomes visible.</description><pubDate>Fri, 06 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Unit 7: Platform Collision — Dash (NES)</title><link>https://code198x.com/nintendo-entertainment-system/assembly/dash/unit-07/</link><guid isPermaLink="true">https://code198x.com/nintendo-entertainment-system/assembly/dash/unit-07/</guid><description>The game reads the level data to detect what tile is below the player&apos;s feet. A floating platform proves the system — platforms become real.</description><pubDate>Fri, 06 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Unit 8: Wall Collision — Dash (NES)</title><link>https://code198x.com/nintendo-entertainment-system/assembly/dash/unit-08/</link><guid isPermaLink="true">https://code198x.com/nintendo-entertainment-system/assembly/dash/unit-08/</guid><description>Horizontal tile checks prevent the player from walking through solid tiles. A wall on the ground proves the system — the player must jump over it.</description><pubDate>Fri, 06 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Unit 9: Collectible Items — Dash (NES)</title><link>https://code198x.com/nintendo-entertainment-system/assembly/dash/unit-09/</link><guid isPermaLink="true">https://code198x.com/nintendo-entertainment-system/assembly/dash/unit-09/</guid><description>Three coin sprites appear around the level. A subroutine checks whether the player overlaps each one — the first use of JSR and RTS.</description><pubDate>Fri, 06 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Unit 10: Score Display — Dash (NES)</title><link>https://code198x.com/nintendo-entertainment-system/assembly/dash/unit-10/</link><guid isPermaLink="true">https://code198x.com/nintendo-entertainment-system/assembly/dash/unit-10/</guid><description>Collecting a coin increments a score variable. The NMI handler writes the digit to the nametable every frame — the first VBlank update.</description><pubDate>Fri, 06 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Unit 11: Collect Sound — Dash (NES)</title><link>https://code198x.com/nintendo-entertainment-system/assembly/dash/unit-11/</link><guid isPermaLink="true">https://code198x.com/nintendo-entertainment-system/assembly/dash/unit-11/</guid><description>Collecting a coin plays a short, bright note on the APU triangle channel. Three register writes produce a sound that makes every pickup feel rewarding.</description><pubDate>Fri, 06 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Unit 12: Hazard Tiles — Dash (NES)</title><link>https://code198x.com/nintendo-entertainment-system/assembly/dash/unit-12/</link><guid isPermaLink="true">https://code198x.com/nintendo-entertainment-system/assembly/dash/unit-12/</guid><description>Spike tiles on the ground damage the player on contact. The tile collision code now distinguishes between tile types — not just solid or empty, but safe or dangerous.</description><pubDate>Fri, 06 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Unit 13: Three Lives — Dash (NES)</title><link>https://code198x.com/nintendo-entertainment-system/assembly/dash/unit-13/</link><guid isPermaLink="true">https://code198x.com/nintendo-entertainment-system/assembly/dash/unit-13/</guid><description>The player starts with three lives. Each spike hit or obstacle collision costs one. Run out and the game freezes. A shared damage subroutine keeps the logic clean.</description><pubDate>Fri, 06 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Unit 14: Game Over Screen — Dash (NES)</title><link>https://code198x.com/nintendo-entertainment-system/assembly/dash/unit-14/</link><guid isPermaLink="true">https://code198x.com/nintendo-entertainment-system/assembly/dash/unit-14/</guid><description>When all three lives are gone, GAME OVER appears on screen. Letter tiles in CHR-ROM spell the message. A one-shot flag ensures the NMI handler writes it exactly once.</description><pubDate>Fri, 06 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Unit 15: Title Screen + Restart — Dash (NES)</title><link>https://code198x.com/nintendo-entertainment-system/assembly/dash/unit-15/</link><guid isPermaLink="true">https://code198x.com/nintendo-entertainment-system/assembly/dash/unit-15/</guid><description>A state machine drives the game through three states: title, playing, and game over. Press Start to begin. Die and press Start to return to the title. The game is now a complete loop.</description><pubDate>Fri, 06 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Unit 16: Integration + Polish — Dash (NES)</title><link>https://code198x.com/nintendo-entertainment-system/assembly/dash/unit-16/</link><guid isPermaLink="true">https://code198x.com/nintendo-entertainment-system/assembly/dash/unit-16/</guid><description>A two-frame running animation brings the player to life. Sprites hide cleanly on game over. A boundary check prevents Y wrap-around. Phase 1 is complete.</description><pubDate>Fri, 06 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Unit 1: Ship on Screen — Starfield (C64)</title><link>https://code198x.com/commodore-64/assembly/starfield/unit-01/</link><guid isPermaLink="true">https://code198x.com/commodore-64/assembly/starfield/unit-01/</guid><description>Put a hardware sprite on screen with the VIC-II — the first piece of your first C64 game, built from a blank screen up.</description><pubDate>Thu, 05 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Unit 2: Joystick Movement — Starfield (C64)</title><link>https://code198x.com/commodore-64/assembly/starfield/unit-02/</link><guid isPermaLink="true">https://code198x.com/commodore-64/assembly/starfield/unit-02/</guid><description>Wrap the ship in a game loop and read the joystick through the CIA chip, so pushing the stick moves the ship — the moment the program becomes a game.</description><pubDate>Thu, 05 Feb 2026 00:00:00 GMT</pubDate></item></channel></rss>