<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Extending the Cartridge on Programming the Atari VCS in Assembly</title><link>https://cdeever.github.io/atari-vcs/docs/cartridge-hardware/</link><description>Recent content in Extending the Cartridge on Programming the Atari VCS in Assembly</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://cdeever.github.io/atari-vcs/docs/cartridge-hardware/index.xml" rel="self" type="application/rss+xml"/><item><title>Extra RAM</title><link>https://cdeever.github.io/atari-vcs/docs/cartridge-hardware/extra-ram/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cdeever.github.io/atari-vcs/docs/cartridge-hardware/extra-ram/</guid><description>&lt;h1 id="extra-ram"&gt;Extra RAM&lt;a class="anchor" href="#extra-ram"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;The console gives you &lt;strong&gt;128 bytes&lt;/strong&gt; of &lt;a href="https://cdeever.github.io/atari-vcs/docs/architecture/riot/"&gt;RAM&lt;/a&gt;, and that pool is shared with the &lt;a href="https://cdeever.github.io/atari-vcs/docs/6502-basics/stack-and-subroutines/"&gt;stack&lt;/a&gt;. It is brutally little — a few sprite positions, a score, some counters, and it&amp;rsquo;s gone. The way past it is the same as for &lt;a href="https://cdeever.github.io/atari-vcs/docs/cartridge-hardware/bankswitching/"&gt;ROM&lt;/a&gt;: put more memory &lt;em&gt;on the cartridge.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="cartridge-ram-and-the-two-port-trick"&gt;Cartridge RAM, and the two-port trick&lt;a class="anchor" href="#cartridge-ram-and-the-two-port-trick"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The best-known add-on is Atari&amp;rsquo;s &lt;strong&gt;&amp;ldquo;Superchip&amp;rdquo;&lt;/strong&gt; — 128 extra bytes (some carts more) of RAM riding on the cartridge, mapped into the bottom of the &lt;a href="https://cdeever.github.io/atari-vcs/docs/architecture/rom/"&gt;cart window&lt;/a&gt;. Atari shipped it in a run of mid-1980s titles — &lt;em&gt;Dig Dug&lt;/em&gt;, &lt;em&gt;Crystal Castles&lt;/em&gt;, &lt;em&gt;Off the Wall&lt;/em&gt;, &lt;em&gt;Secret Quest&lt;/em&gt; — most of which &lt;a href="https://cdeever.github.io/atari-vcs/docs/cartridge-hardware/bankswitching/"&gt;bankswitch&lt;/a&gt; as well. But cartridge RAM has a wrinkle the console RAM doesn&amp;rsquo;t: the cartridge connector has &lt;strong&gt;no clean read/write signal&lt;/strong&gt; the chip can use to tell a load from a store in time. So cartridge RAM is split across &lt;strong&gt;two address ranges — a write port and a read port:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>The DPC: A Coprocessor in the Cartridge</title><link>https://cdeever.github.io/atari-vcs/docs/cartridge-hardware/dpc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cdeever.github.io/atari-vcs/docs/cartridge-hardware/dpc/</guid><description>&lt;h1 id="the-dpc-a-coprocessor-in-the-cartridge"&gt;The DPC: A Coprocessor in the Cartridge&lt;a class="anchor" href="#the-dpc-a-coprocessor-in-the-cartridge"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://cdeever.github.io/atari-vcs/docs/cartridge-hardware/bankswitching/"&gt;Bankswitching&lt;/a&gt; adds ROM and the &lt;a href="https://cdeever.github.io/atari-vcs/docs/cartridge-hardware/extra-ram/"&gt;Superchip&lt;/a&gt; adds RAM, but both are still just &lt;em&gt;memory&lt;/em&gt; — passive storage the CPU does all the work against. &lt;em&gt;Pitfall II: Lost Caverns&lt;/em&gt; (1984) took the idea to its conclusion: &lt;strong&gt;David Crane&lt;/strong&gt; designed a custom chip, the &lt;strong&gt;DPC&lt;/strong&gt; — officially the &lt;em&gt;Display Processor Chip&lt;/em&gt;, though the initials are also his own (David Patrick Crane) — and built it into the cartridge. It was the first — and in the commercial 2600 era, essentially the only — game cartridge with a coprocessor of its own. The console did nothing new; the cart did the new thing.&lt;/p&gt;</description></item><item><title>ARM Cartridges</title><link>https://cdeever.github.io/atari-vcs/docs/cartridge-hardware/arm-cartridges/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cdeever.github.io/atari-vcs/docs/cartridge-hardware/arm-cartridges/</guid><description>&lt;h1 id="arm-cartridges"&gt;ARM Cartridges&lt;a class="anchor" href="#arm-cartridges"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;The &lt;a href="https://cdeever.github.io/atari-vcs/docs/cartridge-hardware/dpc/"&gt;DPC&lt;/a&gt; put one small custom chip on the cartridge and let it do a few jobs the 6507 couldn&amp;rsquo;t spare cycles for. Modern homebrew takes that exact idea and pushes it as far as it will go.&lt;/p&gt;
&lt;p&gt;Today&amp;rsquo;s &lt;strong&gt;Harmony&lt;/strong&gt; and &lt;strong&gt;Melody&lt;/strong&gt; cartridges, together with the &lt;strong&gt;DPC+&lt;/strong&gt; and &lt;strong&gt;CDF&lt;/strong&gt; programming models, take exactly the same idea to its conclusion. Hidden behind the cartridge edge connector is a modern &lt;strong&gt;ARM microcontroller&lt;/strong&gt; running at hundreds of megahertz. To the Atari, it still appears to be an ordinary ROM with a handful of special registers. Behind the scenes, however, the ARM is decompressing graphics, streaming music, copying data, calculating game logic, and emulating the original DPC hardware — all while &lt;strong&gt;the humble 1.19 MHz 6507 remains blissfully unaware.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Should You Extend at All?</title><link>https://cdeever.github.io/atari-vcs/docs/cartridge-hardware/should-you-extend/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cdeever.github.io/atari-vcs/docs/cartridge-hardware/should-you-extend/</guid><description>&lt;h1 id="should-you-extend-at-all"&gt;Should You Extend at All?&lt;a class="anchor" href="#should-you-extend-at-all"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;This chapter has watched a cartridge grow from a slab of read-only memory into a machine carrying &lt;a href="https://cdeever.github.io/atari-vcs/docs/cartridge-hardware/arm-cartridges/"&gt;its own ARM computer&lt;/a&gt;. Which leaves an honest question hanging over all of it: &lt;em&gt;just because you can put a supercomputer in the slot, should you?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The clearest way to think about it is to follow one game through three lives.&lt;/p&gt;
&lt;h2 id="three-pac-mans"&gt;Three Pac-Mans&lt;a class="anchor" href="#three-pac-mans"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;1982 — the original.&lt;/strong&gt; Atari handed &lt;em&gt;Pac-Man&lt;/em&gt; to &lt;strong&gt;Tod Frye&lt;/strong&gt; — a capable programmer who&amp;rsquo;d actually wanted &lt;em&gt;Defender&lt;/em&gt; and got Pac-Man by default — under enormous corporate pressure: ship the most-wanted arcade game of the year in time for the holidays, on the cheapest cartridge the company would pay for (a single 4 KB chip), against a deadline that left no room to refine it. The result became the best-selling game on the entire system &lt;em&gt;and&lt;/em&gt; a byword for &lt;em&gt;disappointment&lt;/em&gt; — the ghosts flickered relentlessly, the colors looked nothing like the arcade, the whole thing played like a rough sketch of the real game. Atari pressed something like twelve million copies — more carts than there were consoles to play them — and it turns up in nearly every story told about the 1983 crash. The lesson everyone drew at the time was simple, and wrong: &lt;em&gt;the 2600 just can&amp;rsquo;t do Pac-Man.&lt;/em&gt; The fault was never the programmer&amp;rsquo;s talent; it was the calendar and the boardroom — the very same pressure that, that same year, gave &lt;strong&gt;Howard Scott Warshaw&lt;/strong&gt; about five weeks to make &lt;em&gt;E.T.&lt;/em&gt; and turned the designer of the brilliant &lt;em&gt;Yars&amp;rsquo; Revenge&lt;/em&gt; into the other name blamed for the 1983 crash.&lt;/p&gt;</description></item></channel></rss>