Several years ago I was really getting heavily into Atari VCS programming—for teaching, for art, and for research on Racing the Beam. VCS programming is notoriously hard at first, but like anything once you get the hang of it, it feels natural.

What never felt natural, however, was the process of running command-line build tools and editing code in plain text editors. Obviously, we have things much, much easier today than the original Atari programmers did. We’ve been spoiled by sophisticated IDEs and debuggers. Despite my penchant for traditionalism, I was happy to use modern tools to make Atari games.

So, back in 2007 I made a toolkit for doing Atari VCS programming with Apple’s Xcode IDE. It had a project template, language definition for syntax coloring, and instructions for how to configure build settings to build-and-run in the Stella emulator. Pretty cool. I’ve been using it ever since.

That is, until a month ago when I upgraded to Xcode 4. It’s a complete rewrite of the IDE, and it totally broke my VCS development stuff. Apple had changed the template structure before, but I’d always been able to make adjustments to my package. This time, Apple hasn’t even yet published documentation on how to make project and language templates. Even though it does offer external build support, Xcode is now effectively purpose-built for Cocoa development only, which is a shame because it’s a pretty nice IDE.

So, I decided to abandon Xcode entirely (for VCS dev, anyway), and move to TextMate, an excellent customizable plain text editor. I was familiar with TextMate from earlier writing—Nick and I wrote all of Racing the Beam in markdown format in TextMate—but I hadn’t yet used it for development. Turns out it’s great!

I’ve packaged the TextMate bundle and VCS prerequisites in an installer, which you can download at the top of this page. Some of the features I baked in:

  • Syntax coloring for Atari VCS assembly files, including 6502 assembly instructions and Atari register names.

  • A Template for Atari VCS games, giving developers a simple framework to start from–including initialization, vertical sync/blank, a simple kernel, and overscan.
  • Build and Run support using the Stella emulator. The scripts will automatically find and run your builds in Stella for easier iterative development, no per-project configuration required.
  • Scripts and related tools for simple testing tasks, such as ROM size and running Stella with paddle controllers pre-selected, as well as symbol shortcuts to labels.

Even though it seems like a downgrade from an IDE, I’ve managed to automate even more of the setup and build process in TextMate than was feasible in Xcode, so now it’s even more streamlined than it was before.

Some may wonder why I’d spend time on such a strange task, so I’ll repeat what I said back in 2007 when I first released the Xcode tools: Learning to program the Atari is difficult, but learning the hardware and assembly is only part of that challenge. Another part of the problem is just getting code written, assembled, and running on an emulator. It may sound silly, but the more steps it takes to do this easily, the harder it is to motivate oneself to start. And for the more experienced programmer, it makes iterative development much easier.

published July 18, 2011


  1. Adam Vandenberg

    Minor bug report, I have TextMate installed in ~/Applications instead of /Applications, and the installer fails to find it.

  2. Ian Bogost

    Thanks for that Adam. I removed the requirement check, since it seemed sort of superfluous, and since the OS X package builder doesn’t make it easy to search in multiple places for an App prereq. Should work now.

  3. Olivier Villeneuve

    Hey there Ian,

    I can’t get this package to install under 10.7.1, using TextMate 1.5.10 (if this matters)

    During the “installation” procedure, the thing stops and gives me a generic “The installation failed. – The Installer encountered an error that caused the installation to fail. COntact the software manufacturer for assistance.” error message. However it seems to be half installed as I can select items in the “Assembly” bundle under TextMate, of course they do nothing.

    If you want or need more information hit me up, pretty sure it’s something with Lion… Hopefully you’ll fix it! 🙂

  4. Ian Bogost

    Olivier, it’s working for me on Lion, so it’s probably something simple. In any case I’ve been meaning to publish an update, so I’ll check into it and upload a new one.

  5. Olivier Villeneuve

    Great, then it must be on my side, I’ll look into it and provide details if I get it to work.

    Thanks for your feedback.

  6. Olivier Villeneuve

    Got it, the problem was that

    /Library/Application\ Support/TextMate

    didn’t exist. I created it and now everything works as it should!

  7. Ian Bogost

    Glad to hear that. I’ll post an updated build of the kit soon; it’s got some new features.

  8. Bo Brinkman

    The installer set the permissions on the ~/Library/Application\ Support/TextMate folder so that it was not readable by me (only by the “admin” account).

    As a result, I couldn’t see the “Assembly” option in the “New From Template” menu. Changing the permissions by hand fixed the problem.

  9. Mike

    Hey Ian – I am just starting to get into this (big fan of Atari and programming) I have heard a lot of good stuff about what you have done and have been so looking forward to starting to build my first 2600 program but when I went to install this package I just continued to get an install error. I’m not sure what to do at this point because there are not specific error message that will help. I’m using OS 10.7.5. Any help would be great –

  10. mik2

    Oh, I forgot, I am only running the 30 day trial of TextMate – could that be the problem? The only reason I would purchase TextMate is so I can learn to program for the Atari.

  11. Ian Bogost

    What’s the error?

  12. olivil

    I’m getting an error at installation with latest version of Textmate and 10.8.4, simply an “Installation Failed” at the end of package installation.