
Let Chris Crawford teach you to program Atari's 8-bit computers [video] - msie
http://www.gamasutra.com/view/news/271277/Let_Chris_Crawford_teach_you_to_program_Ataris_8bit_computers.php
======
chipsy
Here is an example of a contemporary demo on the Atari 8-bits:

[https://www.youtube.com/watch?v=eY_YsoR11d8](https://www.youtube.com/watch?v=eY_YsoR11d8)

You might notice that some scenes show more colors onscreen than
contemporaries like the C64 - this is all because of the display list
interrupt techniques Crawford talks about, combined with clever overlaying of
the player/missile sprite system. (The weird term for these hardware sprites
is because it's built on the legacy of the 2600's system, which itself was
built around the needs of the pack-in games: two players, two projectiles, one
ball.)

The A8 series was limited in lifespan in the USA for a number of reasons: poor
documentation, platform fragmentation, and price competition. It shipped with
very little documentation on how it worked, leaving developers starved for
resources for several years(Chris Crawford himself contributed to the
unofficial bible, "De Re Atari"). There were the original 8k-upgradeable-
to-48k 400/800 models and the newer XL/XE models, which shipped with 64k
standard, and additionally, a change partway through the 400 and 800's life to
an upgraded graphics chip; although most old software would run on the new
machines, the C64 was more straightforward to target and to program, and it
led the way in price-cutting the home computer market, which gave it a huge
lead in market share. The later life of the A8 was entirely in European
markets.

In terms of what the two machines can do when pushed to the limit, though,
there's plenty of room for comparison.

~~~
StanislavPetrov
If you want to check out an amazing example of what was being done by some
Atari 8-bit programmers at the time, check out "Alternate Reality: The City",
a Datasoft game by Philip Price released in 1985. He used some really novel
techniques to create a game that was visually and musically impressive for the
time and architecture. Some of the techniques he employed (from an interview
on Atariage.com a couple years ago)

>1\. Knowledge of the names of registers was from magazine articles. I was
self-taught for the most part. On the tricks with the hardware, that was just
me thinking up what cool things I could do with the functionality of the
hardware. Cycle counting to determine the position of the television electron
beam, using a sliding window and emitting to the front and back of the current
visual screen, using interrupts to change the color registers on each scan-
line (combined with cycle counting and moving the player missiles to be at two
places at once on the scan line),the 3D stuff, security, encryption, texture
mapping, music driver, all self taught (no books).

------
klodolph
I would love it if someone could do something like this for modern GPUs,
complete with pipeline stalls as a costumed CPU waits to hear back from a
costumed GPU. It seems like there's an unreasonable amount of mystery around
how GPUs work, at least in popular understanding, compared to our knowledge of
arcane corners of obsolete computers.

~~~
jtokoph
Isn't there a lot of mystery because the GPU companies keep things very
secret? It's been my understanding that GPUs are very much black boxes.

~~~
TD-Linux
Most popular desktop GPUs have been pretty well reverse engineered (or
implemented from documentation) in Mesa, so you really can go and look at the
nitty gritty details, and write assembly language if you so like.

The VC4 is also a fun target, because in addition to being supported in mesa,
it is documented very well [1] and in a very popular product (the Raspberry
Pi).

[1]
[http://www.broadcom.com/docs/support/videocore/VideoCoreIV-A...](http://www.broadcom.com/docs/support/videocore/VideoCoreIV-
AG100-R.pdf)

~~~
corysama
Here's dump of public knowledge about various GPUs.

[http://renderingpipeline.com/graphics-literature/low-
level-g...](http://renderingpipeline.com/graphics-literature/low-level-gpu-
documentation/)

------
foft
If anyone wants to try out programming the a8 then here is a little info:

Best windows emulator: Altirra

Best cross platform emulators: Atari800 and Atari++

Or if you have an FPGA board (MIST,MCC216 etc) then you can try my core
available at [http://www.scrameta.net](http://www.scrameta.net)

Or you could buy a real 800XL!

~~~
spatulan
I'd recommend Altirra even if you're on Linux, it works well through WINE.

------
hal9000xp
I remember good old times when I used ZX Spectrum (actually it was 100%
compatible soviet-clone).

I dreamed to create a game. That's why I actually started programming.

I wanted to create animation.

When I started with Basic I noticed that Basic interpreter is way too slow to
update video memory (even for fraction of screen).

Then I discovered world of compiled languages with Pascal. It was much more
fun than Basic but still too slow to update video memory.

Then I moved to assembly language (actually I only had list of opcodes and I
had to put them in memory directly). It was much more fun than Pascal and
speed was great but still not enough for animation if you write straight-
forward implementation.

Then I discovered that if you put performance-critical code into lower-memory
addresses it runs much faster.

Unfortunately, I didn't finish my research because I had no access to internet
and books.

~~~
chrisdew
> Then I discovered that if you put performance-critical code into lower-
> memory addresses it runs much faster.

Do you mean higher memory addresses?

Code in the lower 16KB of RAM (addresses 16-32KB) has contended memory access
with the ULA, which causes the CPU to pause while the TV raster line is drawn.

Code in the upper 32K does not have this issue.

------
keithnz
I loved my Atari 800XL, and while I had a few computers before it, this is the
one I cut my teeth on learning how to program. Its hardware was really
interesting and forced you to be quite inventive to get the most out of it.

~~~
protomyth
I started with the Atari 400. It was quite fun to program, and I was a bit
disappointed when the school finally got Apple IIe and I couldn't figure out
why they were "better" than an Atari 800. They certainly weren't as fun to
program. I gotta admit that I do miss 6502 assembly.

------
DonHopkins
It looks like a cross between Klaus Nomi [1] and the Three Stooges [2]!

[1]
[http://40.media.tumblr.com/cfb98ae2e453a1402aaab4a676a4da16/...](http://40.media.tumblr.com/cfb98ae2e453a1402aaab4a676a4da16/tumblr_mibzom1vfw1qcn8iqo1_400.jpg)

[2]
[http://www.frieze.com/sites/default/files/Editorial/Bowie3.j...](http://www.frieze.com/sites/default/files/Editorial/Bowie3.jpg)

------
drudru11
Chris is awesome. He created the Game Developers Conference and an early
journal on game development. He encouraged collaboration and sharing in an
industry that was very secretive.

------
kefka
Well, lets see what I can do to help this effort....

Here is a link to an Atari 2600 emulator with every game. There's also a
loader to load in any game or rom. That would allow near-instantaneous game
and application creation via this tool

[http://ipfs.io/ipfs/QmacAqRVhJX9eS7YJX1vY3ifFKF9CduDqPEgaCUS...](http://ipfs.io/ipfs/QmacAqRVhJX9eS7YJX1vY3ifFKF9CduDqPEgaCUSa4x5xb)

It's also using something called IPFS, or Inter-Planetary File System. That
got a bit of press earlier on with the left-pad situation and package managers
regarding npmjs. Effectively, it's a worldwide GIT repo backed by a self-
certifying file system, a Bittorrent type transmission between nodes, and
Kadmelia and dHT for host detection.

(Edit: Really? I offer something that is relevant, at least orthogonally. And
yet, -1's. Cant the ones that downvote provide a reason, even if from a
throwaway account? And it's not even a controversial opinion...)

~~~
kabdib
The 2600 is _totally_ different from the 8-bit computers, just so folks know.
Programming an Atari 800 computer was a walk in the park compared to the
living hell on earth that was the 2600.

[I wrote a few Atari 800 game cartridges. I watched one of my cow-orkers
mentally deteriorate as he attempted to write a simple 2600 game over maybe
four months -- not kidding. He gave up and was a happier person for it].

~~~
tzs
At APh (the consulting firm that designed the Mattel Intellivision, wrote its
system software, and most of the early games for it) the biggest insult you
could give to a programmer was to tell them their Intellivision game looked
like an Atari game.

This was NOT a slam against the Atari programmers. It was a reference to the
graphics hardware limitations of the 2600, which made it ridiculously
difficult to do things that were easy on Intellivision.

Not that Intellivision was a walk on the park...the mode most games used for
the colors of things that were not sprites was demented, but at least the
hardware sprites and their collision detection, along with the system software
that automatically handled animating a sprite and moving it at a fixed
velocity, saved us from many nightmares that 2600 programmers had to endure.

The 2600 had sprites, but they had limitations. I don't recall with absolute
certainty what they were (when Mattel decided to do Atari games and some of
that work was contracted to APh, I was not involved--I was working on games
for what would have been the next generation Intellivision if the industry had
not collapsed and laid me off, so my 2600 details are mostly what I remember
Hal Finney and the others involved in the Atari games telling me), but my
recollection is that there were limits on how many sprites could occupy
overlapping vertical positions, and getting their horizontal position right
involved software timing, so you had to do things like make sure different
code paths took the same number of clock cycles. That is not fun.

~~~
mgkimsal
I'm finishing up this book -
[https://en.wikipedia.org/wiki/Racing_the_Beam](https://en.wikipedia.org/wiki/Racing_the_Beam)
\- which goes in to a lot more detail - really interesting reading :)

~~~
maffydub
If you enjoyed that, you might also enjoy It's Behind You
([http://bizzley.imbahost.com/](http://bizzley.imbahost.com/)). It talks about
porting R-Type (side-scrolling space shooter) to the ZX Spectrum... and
similar fun around squeezing down high-end (for the time) arcade games to run
on hardware that shouldn't really support it - a great read!

------
aphrax
Talking of Chris Crawford he has an interesting Patreon:
[https://www.patreon.com/ChrisCrawford](https://www.patreon.com/ChrisCrawford)

