<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Blog (English)</title><description>Z80 and Amstrad CPC programming.</description><link>https://djnz.iiivan.org/</link><language>en</language><item><title>Dots tunnel: a 256 × 256 screen and 400 dots</title><link>https://djnz.iiivan.org/en/dots-tunnel-5-ecran-256/</link><guid isPermaLink="true">https://djnz.iiivan.org/en/dots-tunnel-5-ecran-256/</guid><description>What if the CPC screen changed shape so that the address of a dot were quicker to compute? The dots tunnel moves to a square screen, then spends the time saved on more dots.</description><pubDate>Sat, 31 Oct 2026 00:00:00 GMT</pubDate><category>demo effects</category><category>dots tunnel</category><category>CPC</category><category>Z80</category></item><item><title>Dots tunnel: the stack, the registers and unrolling</title><link>https://djnz.iiivan.org/en/dots-tunnel-4-pile-registres/</link><guid isPermaLink="true">https://djnz.iiivan.org/en/dots-tunnel-4-pile-registres/</guid><description>Where do the NOPs of a dots tunnel dot go, instruction by instruction, and how many can the Z80 stack, its registers and unrolling remove without changing a single picture?</description><pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate><category>demo effects</category><category>dots tunnel</category><category>CPC</category><category>Z80</category></item><item><title>Dots tunnel: two screens, and clearing only the dots</title><link>https://djnz.iiivan.org/en/dots-tunnel-3-effacement/</link><guid isPermaLink="true">https://djnz.iiivan.org/en/dots-tunnel-3-effacement/</guid><description>The v1 of the dots tunnel clears 16 KB per picture for 256 lit bytes at most, and its picture flickers. Two versions in Z80 fix the flicker, then the clearing, and we measure what each one brings.</description><pubDate>Thu, 29 Oct 2026 00:00:00 GMT</pubDate><category>demo effects</category><category>dots tunnel</category><category>CPC</category><category>Z80</category></item><item><title>Dots tunnel: from the tables to a first Z80 tunnel</title><link>https://djnz.iiivan.org/en/dots-tunnel-2-cpc/</link><guid isPermaLink="true">https://djnz.iiivan.org/en/dots-tunnel-2-cpc/</guid><description>How the CPC stores its pixels in memory, the dots tunnel tables computed in Locomotive BASIC then by RASM, byte for byte, and a first, slow version of the tunnel in Z80, whose time we measure picture by picture.</description><pubDate>Wed, 28 Oct 2026 00:00:00 GMT</pubDate><category>demo effects</category><category>dots tunnel</category><category>CPC</category><category>Z80</category></item><item><title>Dots tunnel: the principle, explained in JavaScript</title><link>https://djnz.iiivan.org/en/dots-tunnel-1-principe/</link><guid isPermaLink="true">https://djnz.iiivan.org/en/dots-tunnel-1-principe/</guid><description>Building a dots tunnel one idea at a time, in JavaScript, on a simulated CPC screen: from the projection of a circle to the byte tables the Z80 expects.</description><pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate><category>demo effects</category><category>dots tunnel</category><category>CPC</category><category>Z80</category></item><item><title>TDD on the CPC: sorting pointers to strings</title><link>https://djnz.iiivan.org/en/tdd-cpc-string-sort/</link><guid isPermaLink="true">https://djnz.iiivan.org/en/tdd-cpc-string-sort/</guid><description>An insertion sort in Z80 on the Amstrad CPC, one test at a time, with z80-tdd: the pointers move, the strings stay where they are, strcmp compares, stability shows at last, and the budget depends on n and on the prefixes.</description><pubDate>Sun, 25 Oct 2026 12:00:00 GMT</pubDate><category>Z80</category><category>CPC</category><category>TDD</category><category>sorting</category></item><item><title>TDD on the CPC: strcmp, comparing two strings that end on bit 7</title><link>https://djnz.iiivan.org/en/tdd-cpc-strcmp/</link><guid isPermaLink="true">https://djnz.iiivan.org/en/tdd-cpc-strcmp/</guid><description>A string comparison in Z80 on the Amstrad CPC, one test at a time, with z80-tdd: strings in the firmware format, an answer in the flags like CP, the bit 7 trap, then a budget for each path.</description><pubDate>Sat, 24 Oct 2026 23:30:00 GMT</pubDate><category>Z80</category><category>CPC</category><category>TDD</category><category>sorting</category></item><item><title>TDD on the CPC: radix sort, two counting passes for 16-bit keys</title><link>https://djnz.iiivan.org/en/tdd-cpc-radix-sort/</link><guid isPermaLink="true">https://djnz.iiivan.org/en/tdd-cpc-radix-sort/</guid><description>Radix sort in Z80 on the Amstrad CPC, one test at a time, with z80-tdd: a stable counting sort that moves the keys, two passes made into one routine by a byte swap, then its budget in NOPs.</description><pubDate>Sat, 24 Oct 2026 23:00:00 GMT</pubDate><category>Z80</category><category>CPC</category><category>TDD</category><category>sorting</category></item><item><title>TDD on the CPC: counting sort, 256 counts and not one comparison</title><link>https://djnz.iiivan.org/en/tdd-cpc-counting-sort/</link><guid isPermaLink="true">https://djnz.iiivan.org/en/tdd-cpc-counting-sort/</guid><description>Counting sort in Z80 on the Amstrad CPC, one test at a time, with z80-tdd: a table of 256 counts, a scan that started in the wrong place, a table left clean, then the four sorts head to head.</description><pubDate>Sat, 24 Oct 2026 22:00:00 GMT</pubDate><category>Z80</category><category>CPC</category><category>TDD</category><category>sorting</category></item><item><title>TDD on the CPC: bubble sort, the flag or Knuth&apos;s bound</title><link>https://djnz.iiivan.org/en/tdd-cpc-bubble-sort/</link><guid isPermaLink="true">https://djnz.iiivan.org/en/tdd-cpc-bubble-sort/</guid><description>Bubble sort in Z80 on the Amstrad CPC, one test at a time, with z80-tdd: a budget test decides between the classic flag and Knuth&apos;s bound, then a match of the three sorts.</description><pubDate>Sat, 24 Oct 2026 20:00:00 GMT</pubDate><category>Z80</category><category>CPC</category><category>TDD</category><category>sorting</category></item><item><title>TDD on the CPC: insertion sort, four versions to the NOP</title><link>https://djnz.iiivan.org/en/tdd-cpc-insertion-sort/</link><guid isPermaLink="true">https://djnz.iiivan.org/en/tdd-cpc-insertion-sort/</guid><description>Insertion sort in Z80 on the Amstrad CPC, one test at a time, with z80-tdd: four ways to shift the bytes, measured to the NOP, then a match against selection sort.</description><pubDate>Sat, 24 Oct 2026 18:00:00 GMT</pubDate><category>Z80</category><category>CPC</category><category>TDD</category><category>sorting</category></item><item><title>TDD on the CPC: selection sort, and what it costs</title><link>https://djnz.iiivan.org/en/tdd-cpc-selection-sort/</link><guid isPermaLink="true">https://djnz.iiivan.org/en/tdd-cpc-selection-sort/</guid><description>Sorting an array in Z80 on the Amstrad CPC, one test at a time, with z80-tdd: from O(n²) complexity to an exact formula in NOPs.</description><pubDate>Sat, 24 Oct 2026 12:00:00 GMT</pubDate><category>Z80</category><category>CPC</category><category>TDD</category><category>sorting</category></item><item><title>TDD on the CPC: finding the smallest byte of an array</title><link>https://djnz.iiivan.org/en/tdd-cpc-find-min/</link><guid isPermaLink="true">https://djnz.iiivan.org/en/tdd-cpc-find-min/</guid><description>Writing the tests of a Z80 routine before the routine, on the Amstrad CPC: set the registers and the memory, call the routine, check the result, up to a NOP budget.</description><pubDate>Sat, 24 Oct 2026 00:00:00 GMT</pubDate><category>Z80</category><category>CPC</category><category>TDD</category></item></channel></rss>