A member of my hackerspace in Mesa ( www.heatsynclabs.org ) and I thought it would be cool to have the ability to code and run Atari 2600 games. We have a Commodore 64, a Commodore Vic 20, a IBM 386SX PC clone, and an Amiga 500 to work with. He let me know he had a cartridge known as a Starpath Supercharger. It was made to run special games recorded on tape (in audio form). It used a specific binary encoding method to load the game into it's built in RAM (2K x 3 chips). There's a compiler for DOS to make an Atari ROM out of an assembly file, and another DOS program to take an Atari ROM and make it into a WAV file that could then be loaded into the Supercharger cartridge with a soundcard. This made the PC seem like the easiest way to go. We want anyone to be able to code a game on a old computer and be able to run it on real hardware. This is what we came up with!
The proposed development path for this resource to our hackerspace is as follows:
1) Manual to learn how to program the Atari 2600 will be provided in paper form to flip through and try out.
2) IBM PC running DOS will be provided to produce a text file.
3) Text file (6502 source code) will be used to produce an Atari ROM using a compiler program.
4) Utility will be used to take Atari ROM and convert it to a WAV file for playback to the Supercharger cartridge.
5) Atari 2600 powered on, plugged into output of Soundcard of PC (Currently a SoundBlaster 16)
6) WAV playback utility used to send program to Supercharger cartridge.
DASM V2.12, a high level macro cross assembler for: -6502
-HD6303 (extension of 6803)
(C)Copyright 1987,1988 Matthew Dillon, All Rights Reserved
Publicly distributable for non-profit only. Must be distributed
Atari 2600 VCS
Atari 2600 VCS 4 Switch Video Computer System game console
Device consists of a long cartridge with a handle on the end, and an audio cassette cable. It adds 6 KB to the Atari 2600's 128 bytes of RAM (increasing it 49-fold to 6,272 bytes of RAM)
IBM PC Clone with soundcard
Will be used to type in code, compile code to a ROM file, convert ROM file to a WAV file for the Supercharger, and play the WAV file out to the Supercharger cart
To use our system at Heatsync Labs, or if you replicate this yourself, once everything is going, you'll want to:
1. Write your assembly code using your favorite text editor first. We'll be saving them as .ASM files to avoid confusion once multiple files of the same game exist.
2. Make sure that it and vcf.h is inside a scratch directory and that you have made a PATH variable over to wherever you installed the DASM executable.
3. A Full example of the command you should then run to compile your code:
DASM GAME.ASM -f3 -oGAME.BIN
4. Once you have made the binary and the compiler throws no errors, make your binary file into a PCM WAV file:
MWDOS -ts GAME.BIN GAME.WAV
5. Make sure the Supercharger is inserted into the ATARI, and the Audio cable is attached to the Speaker Out of the Soundcard. Have the TV on (Ours is set to analog Channel 2), then use the XTX-PLAY program to play your WAV file to the cartridge.
6. Your code should then load into the Supercharger, and you will get audio and visual feedback of it loading, and then it should run. If the "Rewind Tape" message comes back up, then there was an error.
Success! Everything that I figured could work together somehow has!
So it turns out that I was WRONG about how the MAKWAV program worked! It needs a special flag to make a Supercharger compatible audio file! WHOOPS! No wonder it stated that my resulting file was for a "Cuttle Cart" and that I got crazy things happening on my ATARI when loading the files made this way!
So where I was typing in
MWDOS game.bin game.wav
before, turns out that it needed to be
MWDOS -ts game.bin game.wav
As -t is type, s is Supercharger! IF ONLY I had bothered to read the help screen for MWDOS, I would have found this out right away instead of ending up with failed load after failed load! Lesson learned though, and since I focused on other things, I could come back to this with fresh eyes (and a helpful individual who simply asked if I had set the supercharger flag!)
We're now fully operational. No faults or silly things happening anymore. The path of tools is clear too.
1. Write code in MS-DOS Editor, save as .ASM file
2. Compile said .ASM file into binary .BIN using DASM using -f3 flag (and -ooutput.bin flag)
3. Use MWDOS to convert .BIN file into a PCM .WAV file using -ts flag
4. Use XTC-PLAY to play audio file inside dos to Supercharger cartrige
5. Watch your efforts load into the Supercharger memory and initialize
I have used Carlos Duarte do Nascimento (Chester)'s Atari 2600 "Hello World" demo as an example (loaded via USB floppy drive and the special SneakerNET™ protocol) as a reason not to write my own code just yet.
Thanks, Chester! I'm not sure this is how you envisioned it being put on a 2600 VCS, but there you have it!
Anyone who drops into our hackerspace now can if they want to code up an actual Atari 2600 game and not have to fuss with any distractions from modern computers, and have it run on real hardware. It could use a little bit of polish and automation, but it's rather quick! Changing one line of code to see what happens to a game is a really simple task, and I'd even say it's less fuss than dealing with a SD card cart.
So I was determined to forge ahead, despite issues I had with getting already compiled binaries to load up into the Supercharger. I wanted to make sure I could make roms/bins out of assembly code, and I managed to find a copy of combat that had been disassembled on my buddy's old 1997 web page, which mentions some of the very utilities I found through a different way, and also had a link I could use with Archive.org to grab the newest version of DOS based MKWAV and DASM I could find too. Also on that webpage was a file called vcs.h that sets up the instructions for the compiler. I did not know this yet, but I sure tried to compile stuff anyway! I did this all on a VM I decided to make while I was at home and away from the computer at my Hackerspace. My intention was to actually build up another computer with a coprocessor (or just use a 486dx), but the fact I found the right coprocessor meant I could be lazy and didn't have to!
This video was very long as it was real-time as I streamed it on twitch.
I was immediately greeted with the fact that dasm could not open vcs.h . After some quick googling I got this https://github.com/munsie/dasm/blob/master/machines/atari2600/vcs.h and everything worked as it should afterwards. Also there is some horrible audio coming off the VM from when the WAV file plays, so if you choose to view this video, and you have your speakers up loud, or use headphones, you do so at your own risk.
I found a publication online which would help me and others develop a program or game to run on the 2600, and it was called "Atari Programming for Newbies". It was available in PDF form, so I got a hold of it, and printed it out double sided, and put it in a 3" 3-ring binder with heavy weight plastic page protectors. We added a bit of flair to it with our vinyl cutter and printed a little ATARI logo for it while we were at it. The book mentions the STELLA PROGRAMMER'S GUIDE, so I also printed a copy of that and put it in a smaller 3-ring binder to have it as a reference.
I originally built the 386 computer that sits at my local hackerspace (Heatsync Labs) to run AT&T UNIX System V/386 R4 V2.1 which I brought to Defcon 24 for people to play with. As a result of me throwing hardware at the OS until it booted and was stable every part in there was picked to simply work with the archaic version of the operating system that was originally made to run on a rebadged Olivetti 386SX/16. I ended up with a motherboard with an AMD 386SX/33 onboard, 6MB of ram, a VGA graphics card, a REAL Novell NE2000 network card that I still lack the proper drivers to make UNIX networking function, a HDD/FDD serial combo card that didn't fight with me, and that was it! No soundcard, no frills, it was UNIX! Just last year at BSIDES LV 2018 I jokingly loaded MS-DOS 6.22 on it, and we ended up having a blast playing DOS games. I left it this way when I brought it back home. I then brought it to my hackerspace configured just like that. I picked up a new NiMH battery for the CMOS since while the leaky battery that was on there was plenty good for a few conferences, it would have been detrimental to the health of the computer, and no one but me would know how to input the hard drive parameters every time it needed to be rebooted, no auto-detection on this board!
The first order of business was getting one of my soundcards working on it, I decided on the SoundBlaster 16 as I would be more likely to find a good dos audio player that would work with it. Once that was going I started loading utilities on it. The first order of business was the Audio Player, I ended up with XTC-PLAY for DOS and it worked. No issues there. I then downloaded a program that I had to dig in the internet Archive for called "Make Wav", and the DOS version at that! It needed a sort of real mode dos runtime to go with it, and then it complained that it did not have a Math Coprocessor. I went through my collection of junk thinking I didn't have a 387 that fit the specific socket on the motherboard, and I was almost wrong! I found one, but it had been on a motherboard that had been for one reason or another left outside in the elements for years. I popped the chip out, a Cyrix 387 "Fastmath" 20 coprocessor, didn't think it would work, popped it in the motherboard and the Make WAV program no longer complained.
Mission accomplished. I tried converting a few basic games like Combat and Asteroids to WAV using the utility, however they would not load up on the ATARI when I played them back to the console, just a horrible racket of sound and scrolling screen glitches.
All hope though was not lost, because if I converted the ROM of a real Supercharger game to WAV, it would load as expected. Communist Mutants From Space depicted here. I was using one of my tools wrong, and I found out about that later, but while this was going on I was at a standstill until I figured out if the problem was with the program I was using, how I configured it, or that something to due with the bankswitching was causing this, and then I might need to physically modify the Supercharger hardware to get it to do what I want it to do. This turned out to be a false lead, and no hardware modification was necessary (yet anyway!)
Since I did a lousy job keeping logs as I was going, I will go over what has happened since the beginning of the idea.
About 2 years ago my friend Nick Bensema told me about a ATARI cartridge he owned called a "Supercharger" which was originally used to load some specially made games via audio cassette. The cartridge itself had a 1/8" mono jack and you would use it with any old tape player. He then demonstrated it's use by playing back MP3 files of games that were made using his smartphone. He said there were utilities to take an ATARI ROM file and convert it into a MP3 or WAV file that could then be used with the cartridge. This got me to thinking that this would make an excellent instant development system, and I could for our hackerspace provide a real Atari 2600 to use with it.
I had already had a 386 PC there (Running MS-DOS 6.22 at this time), and I figured that would be a really amazing unit to do development on, as there would be few distractions and you could really focus on what you were trying to accomplish. It also gave me another excuse for keeping my outdated hardware at the lab for more than just what I had on it already! I figured I would make it up as I went along as I collected utilities, hardware, parts, and cables to make it all happen.
Get yourself a DOS PC (or DOS VM) with good soundcard support (and a Math Coprocessor!)
For full retro effect, use a 386 or better (and it must have a math coprocessor either added or built in!)
I don't think the requirements are very high, just as long as you have some ram, something to store stuff on, a compatible soundcard and a way to move files around you should be good. The PC I used is:
CYRIX 387 FASTMATH-20
6MB 30-PIN SIMM RAM
110MB CONNER HARD DRIVE
Standard FDD/HDD Controller card (Not built in)
Paradise VGA graphics (or clone)
Creative Labs SoundBlaster 16 CT1740
MS-DOS V 6.22 w/ Supplemental Utilities installed.
1.44MB 3 1/2" Floppy Drive
1.2MB 5 1/4" Floppy Drive
USB 1.44MB Floppy Drive (To attach to newer computers and move files around!)
Get yourself a Starpath Supercharger, or another audio driven ram cart
Find yourself a dev cartridge (or make your own somehow) that you will use
Download all the utilities, get them to the computer
Find a way of transferring your files over to the computer, one way or another. If you want another text editor, any of them that can write plaintext will do.