<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Getting Started on Programming the Atari VCS in Assembly</title><link>https://cdeever.github.io/atari-vcs/docs/getting-started/</link><description>Recent content in Getting Started 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/getting-started/index.xml" rel="self" type="application/rss+xml"/><item><title>Toolchain: DASM &amp; Stella</title><link>https://cdeever.github.io/atari-vcs/docs/getting-started/toolchain/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cdeever.github.io/atari-vcs/docs/getting-started/toolchain/</guid><description>&lt;h1 id="toolchain-dasm--stella"&gt;Toolchain: DASM &amp;amp; Stella&lt;a class="anchor" href="#toolchain-dasm--stella"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Two tools cover the entire development loop for this book: &lt;strong&gt;DASM&lt;/strong&gt; assembles your &lt;code&gt;.asm&lt;/code&gt; source into a cartridge image, and &lt;strong&gt;Stella&lt;/strong&gt; runs that image as if it were a real console.&lt;/p&gt;
&lt;h2 id="installing"&gt;Installing&lt;a class="anchor" href="#installing"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;On macOS with Homebrew:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;brew install dasm
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;brew install --cask stella&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;DASM is the de-facto assembler for the VCS; Stella is the reference emulator and an excellent debugger.&lt;/p&gt;
&lt;h2 id="assembling-a-rom"&gt;Assembling a ROM&lt;a class="anchor" href="#assembling-a-rom"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The canonical build command (from the repository&amp;rsquo;s &lt;code&gt;xmas/Makefile&lt;/code&gt;) is:&lt;/p&gt;</description></item><item><title>Anatomy of a Minimal ROM</title><link>https://cdeever.github.io/atari-vcs/docs/getting-started/minimal-rom/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cdeever.github.io/atari-vcs/docs/getting-started/minimal-rom/</guid><description>&lt;h1 id="anatomy-of-a-minimal-rom"&gt;Anatomy of a Minimal ROM&lt;a class="anchor" href="#anatomy-of-a-minimal-rom"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Every program in this book shares the same skeleton. Understanding these few lines means understanding what a VCS ROM fundamentally &lt;em&gt;is&lt;/em&gt;.&lt;/p&gt;
&lt;h2 id="the-header"&gt;The header&lt;a class="anchor" href="#the-header"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-asm" data-lang="asm"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;processor&lt;/span&gt; &lt;span class="mi"&gt;6502&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;include&lt;/span&gt; &lt;span class="err"&gt;&amp;#34;&lt;/span&gt;&lt;span class="no"&gt;vcs.h&lt;/span&gt;&lt;span class="err"&gt;&amp;#34;&lt;/span&gt; &lt;span class="c1"&gt;; TIA / RIOT register names (COLUBK, PF0, WSYNC, ...)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;include&lt;/span&gt; &lt;span class="err"&gt;&amp;#34;&lt;/span&gt;&lt;span class="no"&gt;macro.h&lt;/span&gt;&lt;span class="err"&gt;&amp;#34;&lt;/span&gt; &lt;span class="err"&gt;;&lt;/span&gt; &lt;span class="no"&gt;helper&lt;/span&gt; &lt;span class="no"&gt;macros&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;e.g.&lt;/span&gt; &lt;span class="no"&gt;CLEAN_START&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;vcs.h&lt;/code&gt; gives readable names to the hardware registers so you can write &lt;code&gt;sta COLUBK&lt;/code&gt; instead of &lt;code&gt;sta $09&lt;/code&gt;. &lt;code&gt;macro.h&lt;/code&gt; provides convenience macros. In this repository both live in a shared top-level &lt;code&gt;include/&lt;/code&gt; directory that every game reaches via DASM&amp;rsquo;s &lt;a href="https://cdeever.github.io/atari-vcs/docs/getting-started/toolchain/"&gt;&lt;code&gt;-I../include&lt;/code&gt;&lt;/a&gt; flag — a single source of truth rather than a copy per game.&lt;/p&gt;</description></item></channel></rss>