Jump to content
IGNORED

Atari 8-bit programming books: Man, I miss(ed) the eighties.


Recommended Posts

I just discovered that page on Atarimania with all the 8-bit family programming books, and seeing all the covers fills me with the same sense of wonder that I get seeing all the old Atari game boxes. Man, half of the fun of these systems was your imagination and using it to fill in the gaps the technology had. And you could even put it to practical use by programming. I guess kids today have Raspberry Pi available for the same type of experience though.

 

I'm almost tempted to start reading and put out something for the 800 or XL, but I don't really like working with hardware constraints. Most of my experience is in C++ using SDL2 to handle all the really technical stuff. 90kb disks on a system with 48kb RAM sounds downright scary, even if it was good enough for Ultima IV.

  • Like 5
Link to comment
Share on other sites

Yes, the constraints are small, but so is the code. Don't worry, just grab an assembler, crack open the hardware manual and a book on 6502 programming and go to town. :)

 

A simple hello world program:

        ; Make background color cycle
 
start   LDX #$FF               ; Start with 255 in X register.
loop    STX $02C6              ; Store in color register
        DEX                    ; X=X-1
        BNE loop               ; if we aren't at 0 yet, loop back around and keep counting down.
        JMP start              ; otherwise, jump back to start.

One thing to note is the DEX/BNE combo there...when DEX decrements the register, it also sets the processor Z flag (zero). BNE tests Z to see if it is 0, if it isn't, the branch is taken because it's Not Equal.

 

-Thom

  • Like 1
Link to comment
Share on other sites

I did study Z80 assembly for a little bit once because I wanted to translate a Japan only GameBoy Color game to English, but nothing came of it other than gaining knowledge of fundamental assembly concepts. I know what registers and flags are, thankfully enough.

 

I probably am capable of doing something in assembly if I had the concentration required. I've been short of it lately, but I've noticed coffee helps for some reason.

Link to comment
Share on other sites

I just discovered that page on Atarimania with all the 8-bit family programming books, and seeing all the covers fills me with the same sense of wonder that I get seeing all the old Atari game boxes. Man, half of the fun of these systems was your imagination and using it to fill in the gaps the technology had. And you could even put it to practical use by programming. I guess kids today have Raspberry Pi available for the same type of experience though.

 

I'm almost tempted to start reading and put out something for the 800 or XL, but I don't really like working with hardware constraints. Most of my experience is in C++ using SDL2 to handle all the really technical stuff. 90kb disks on a system with 48kb RAM sounds downright scary, even if it was good enough for Ultima IV.

Thanks for that. Most of them were scanned by me. It's nice to hear when someone gets some enjoyment from them. Many of them are easy to find today but some of them are really rare. I'm still looking for about fifteen books to scan.

 

Allan

  • Like 10
Link to comment
Share on other sites

Actually have been reading up on my 800 programming the past few hours. Four different processors, three of which aren't found in any other computer line? What fresh madness is this?

 

I admit though, the challenge actually seems a bit enticing now.

Link to comment
Share on other sites

Just noticed that the Atari 800 didn't ship with a disk drive, it cost $600 extra. Ouch. Maybe the eighties weren't so fun after all.

 

I want a $600 Dragonbox Pyra in today's dollars and I'm having trouble acquiring it. Imagine paying that much just for the SD card slot. >_>

Link to comment
Share on other sites

Well...

 

You have the 6502, of course, which is the primary CPU.

 

But then you have ANTIC and GTIA, which are a pair. ANTIC takes a set of instructions known as a display list, which tell the computer how to construct the video screen. TL:DR you can mix different resolutions, and parts of display memory together on the same screen, and alter the display list on each vertical blank. You also get Display List interrupts which are very easy to use raster interrupts which can occur anywhere in a display list. Read this very carefully. Video memory isn't in one place..it can come from anywhere in visible memory (with some basic constraints due to the address counter it has.), and virtually all of the display is dynamic. You can redefine character sets, change color palette registers, etc..on the fly.

 

ANTIC takes the data comprising the playfield, and the players and missiles, and generates a stream of serial data to be interpreted by the GTIA, which provides the graphics modes themselves.

 

You then have POKEY, which is a simple sound chip, serial device and pots/keyboard reader (POKEY stands for POts/KEYs). The ANTIC is the bus master in the system, and takes cycles away from the CPU to handle the address generation and mapping of the video display and providing the serial data to GTIA. And POKEY can also fire off IRQs that you can trigger on based on the settings of the frequency registers.

 

You also have of course, the vertical blank interrupt that you can hook into.

 

-Thom

  • Like 3
Link to comment
Share on other sites

I'm wondering, and this might be a simple question, but how did Ultima IV take the player across four disks? Did it require a hard drive? Noticed the 800 didn't ship with one of those included, same as the disk drive. Man, the things we take for granted...

Link to comment
Share on other sites

Yes, the constraints are small, but so is the code. Don't worry, just grab an assembler, crack open the hardware manual and a book on 6502 programming and go to town. :)

 

A simple hello world program:

        ; Make background color cycle
 
start   LDX #$FF               ; Start with 255 in X register.
loop    STX $02C6              ; Store in color register
        DEX                    ; X=X-1
        BNE loop               ; if we aren't at 0 yet, loop back around and keep counting down.
        JMP start              ; otherwise, jump back to start.

One thing to note is the DEX/BNE combo there...when DEX decrements the register, it also sets the processor Z flag (zero). BNE tests Z to see if it is 0, if it isn't, the branch is taken because it's Not Equal.

 

-Thom

Funny thing is when I emulate that on my Kaby Lake i5 processor, full screen with 4k display, it looks almost like the integrated GPU is having hard time keeping up with the effect :) . I guess we aren't through with techinal limitations yet.

  • Like 1
Link to comment
Share on other sites

I'm wondering, and this might be a simple question, but how did Ultima IV take the player across four disks? Did it require a hard drive? Noticed the 800 didn't ship with one of those included, same as the disk drive. Man, the things we take for granted...

 

*chuckle*

 

None of the games for the Atari as-shipped used a hard drive. The game would simply ask for the next disk, and the user would swap out drive 1's disk.

 

-Thom

  • Like 3
Link to comment
Share on other sites

Just noticed that the Atari 800 didn't ship with a disk drive, it cost $600 extra. Ouch. Maybe the eighties weren't so fun after all.

 

I want a $600 Dragonbox Pyra in today's dollars and I'm having trouble acquiring it. Imagine paying that much just for the SD card slot. >_>

 

lol, you never had enough storage or enough RAM, and the storage was never fast enough back then.

 

If someone from the future had shown us something like a Raspberry Pi and told us it only cost them $35, our minds would have exploded!

Edited by zzip
  • Like 3
Link to comment
Share on other sites

I'm wondering, and this might be a simple question, but how did Ultima IV take the player across four disks? Did it require a hard drive? Noticed the 800 didn't ship with one of those included, same as the disk drive. Man, the things we take for granted...

 

No hard drive. It would be like when you enter a town: "Insert Town disk and press a key", same for dungeons, etc.

 

The disk flipping was pretty annoying in those games, but what choice did we have?

Link to comment
Share on other sites

Funny thing is when I emulate that on my Kaby Lake i5 processor, full screen with 4k display, it looks almost like the integrated GPU is having hard time keeping up with the effect :) . I guess we aren't through with techinal limitations yet.

 

That program as it is will only change the background colour once per frame and it won't be a gradual cycle, just a random colour from the palette each time.

 

The cheap/easiest way of getting the graduated colour cycling (full window) is:

 

start
 lda $14  ; low byte of RTCLOK
 sta $2c6 ; set as PF2 colour
 jmp start

 

Cheapest way to get a rainbow effect:

 

start
 lda $d40b ; VCOUNT from Antic
 sta $D01A ; set COLBAK
 sta $D018 ; set PF2
 jmp start
  • Like 3
Link to comment
Share on other sites

  • 2 weeks later...

Thanks for that. Most of them were scanned by me. It's nice to hear when someone gets some enjoyment from them. Many of them are easy to find today but some of them are really rare. I'm still looking for about fifteen books to scan.

 

Allan

Thank you for your work on these books :) Many found memories of going thru the Compute! series back in the day, typing in the apps and playing with the code. The scans are a fantastic resource to me as I get back to my roots.

Yogi

  • Like 3
Link to comment
Share on other sites

Read this very carefully. Video memory isn't in one place..it can come from anywhere in visible memory (with some basic constraints due to the address counter it has.), and virtually all of the display is dynamic. You can redefine character sets, change color palette registers, etc..on the fly.

The memory you use for the display doesn't even have to be contiguous. Part of the display can reside in low memory, another part of the display can reside in high memory. You can store as many display buffers as memory allows, and have ANTIC flip between them on a frame by frame basis.

90kb disks on a system with 48kb RAM sounds downright scary, even if it was good enough for Ultima IV.

 

 

 

lol, you never had enough storage or enough RAM, and the storage was never fast enough back then.

 

 

I remember upgrading my 800 to 48K, and thinking that was limitless.

Link to comment
Share on other sites

Some of us also have 65c802 and 816 processors. Some have 1M and 4M of RAM, I forget how much Rapidus has, but I think it's around 16M. Many of us have big hard drives now.

 

Some also have Bluetooth and WiFi.

 

Today's Atari computers aren't as limited as you think.

 

:)

  • Like 2
Link to comment
Share on other sites

I remember upgrading my 800 to 48K, and thinking that was limitless.

I remember first seeing King's Quest in Electronic Games magazine and seeing that it required 128K RAM. First game I saw that had > 64K requirement. Seemed mind blowing and the game must be on a another level to use such staggering amounts of memory :D

Link to comment
Share on other sites

Thanks for that. Most of them were scanned by me. It's nice to hear when someone gets some enjoyment from them. Many of them are easy to find today but some of them are really rare. I'm still looking for about fifteen books to scan.

 

Allan

 

Many thanks for these scans. I've just started to learn and relearn what I've forgotten over the years and these books are very handy. Much appreciated.

  • Like 1
Link to comment
Share on other sites

  • 3 weeks later...

In the old days.... We did not buy a new version of the same game every year like we do in the Madden franchise today. Micro League Baseball did it right. You bought the game, and then there was a data disk every year giving you the updated rosters and stats, at a fraction of the cost of the original game.

  • Like 1
Link to comment
Share on other sites

Thanks for that. Most of them were scanned by me. It's nice to hear when someone gets some enjoyment from them. Many of them are easy to find today but some of them are really rare.

 

Allan

You have no idea. I just discovered AtariMania about a week ago, and am going through DeRe Atari and Mapping The Atari.

 

If only I had access to something like that 3 decades ago ! At that time, the most complex technique I found documentation on, was DLI. All Atari registers at one place, with explanation - that just seemed impossible at that time.

 

Even if it was just ONE book - having something like DeRe Atari would make one so much more productive !

 

 

Either way, I extremely appreciate having access to all best books at one place. Thanks a ton !

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...