Jump to content
IGNORED

Assembly...Learning to Program the Atari 8 bits


Recommended Posts

All,

Not sure how to start...

 

Basically I am a Software Developer/Engineer with about 20 years of Professional experience (7 years working for Microsoft). Have a BS in Computer Science (1998) and a MS in Science (Computer Science - 2010).

Languages I know proficiently are C/C++, Classic VB.NET, Pascal (been a while) and of course Java (mostly classroom setting) / and of course today.NET languages. Last few or so years been in the Web develop scene and even had a stint at Microsoft (1998 to 2004). One thing in my career and even in school I did not get a lot of experience with was Assembler. Heard things about it even seen "snippets" in code from friends/did a linker in college but that is close as I got.... but it Feels like something is missing or I need to learn this in my career/personal toolbox.

 

The Atari 8 bit (800 and then later the 800XL) was basically my first computer. Spent many the hours programming it in Basic (Antic magazines and books) and of course playing the games....nothing professional programming wise more of an end user.

 

So with this said I am setting out to learn Assembler on the Atari 8 bit (got more than a few)...I recently have began to read Mapping the Atari and Programming the 6502.....Would these be a decent way to start out or is there some better way....Suggestions?

 

Thanks

Chris

 

 

Link to comment
Share on other sites

If you do Java then you're familiar with Eclipse. Get the Wudsn plugin. You'll find it's probably much easier to develop on a PC than on the Atari itself.
I learned 6502 using Atari Roots. It was a good start but really just gets you to the basics. You'll also want to have on hand Mapping the Atari. Then you'll want to read books specific to the area you're interested getting better at, like some of the Comute books and like. I might be one of those people that had some difficultly using the highly praised De Re Atari.
You're C background is really going to help in this area. I actually went from BASIC to C and just didn't get it until I first learned Assembly and then C was clear as a bell.

Now, keep in mind that the 6502 ain't the Z80/8080, where today's CPU architecture started but the last time I looked at the instruction sets of today's CPU, I ran away and hid in a corner.

  • Like 2
Link to comment
Share on other sites

Is there a repository for Atari Assembly source code? Yes, I agree, it's helps understand how apps/games are designed as well as see other devs solve issues.

 

If it helps, I can offer my own homebrew Ratcatcher if people want to see a complete, working game. It's for the 5200, so it you can't build it for the 400/800 without some work, but it might provide some useful code examples.

 

I should stress that this was my first Atari 8-bit project, so the code is probably quite terrible.

  • Like 1
Link to comment
Share on other sites

 

If it helps, I can offer my own homebrew Ratcatcher if people want to see a complete, working game. It's for the 5200, so it you can't build it for the 400/800 without some work, but it might provide some useful code examples.

 

I should stress that this was my first Atari 8-bit project, so the code is probably quite terrible.

Oh, yea. That looks like a fun game and a great way to get a lot of ideas. I'll use it myself.

Edited by Justin Payne
Link to comment
Share on other sites

All,

Not sure how to start...

 

Basically I am a Software Developer/Engineer with about 20 years of Professional experience (7 years working for Microsoft). Have a BS in Computer Science (1998) and a MS in Science (Computer Science - 2010).

Languages I know proficiently are C/C++, Classic VB.NET, Pascal (been a while) and of course Java (mostly classroom setting) / and of course today.NET languages. Last few or so years been in the Web develop scene and even had a stint at Microsoft (1998 to 2004). One thing in my career and even in school I did not get a lot of experience with was Assembler. Heard things about it even seen "snippets" in code from friends/did a linker in college but that is close as I got.... but it Feels like something is missing or I need to learn this in my career/personal toolbox.

 

The Atari 8 bit (800 and then later the 800XL) was basically my first computer. Spent many the hours programming it in Basic (Antic magazines and books) and of course playing the games....nothing professional programming wise more of an end user.

 

So with this said I am setting out to learn Assembler on the Atari 8 bit (got more than a few)...I recently have began to read Mapping the Atari and Programming the 6502.....Would these be a decent way to start out or is there some better way....Suggestions?

 

Thanks

Chris

 

 

 

I think I learned with the same books back in the day. I recently saw an website with a 6502 simulator where you could try things out in real time.

 

You might find assembly a bit of a culture shock given the languages you're used to. :) It isn't hard to understand, just tedious. You often have to write subroutines for routine tasks that other languages do for you. Especially on an 8-bit Atari which doesn't have very many system calls or anything like a C-library

Link to comment
Share on other sites

All,

Thanks for the advice.

 

I saw on the sticky about the Eclipse IDE... I currently do not have it on my main home machine all this web and .Net Stuff has gotten me away from my C roots. Java was never an issue and is similar to C#.

 

Spent my first 7-8 years developing C/C++ Windows DLLs some very large and some not so much. Java was mostly graduate school but I did take a class of Java in my undergrad degree but that was when it was just first getting foot hold...One of my professor's actually was somehow involved in the development of Java...I have never developed anything Enterprise or Professionally in Java...My Grad degree was in Parallel development and simulation....Did that in mostly in C++/MPI/openMP

 

The last time I used Eclipse I used a Linux Distribution with it pre-installed...I also have another book I am reading right now about Android development and it suggests Eclipse as well.... so Eclipse sounds like something I need to start digging into.again...

 

I would like to see some examples of the source....I am fairly sure I am going to be quite a ways from understanding it fully but it will give me the lay of the land....A repository would be Excellent for learning especially if documented well.

 

I am aware that Assembly is very specific to the machinery...I do have somewhere an old 8088 Assembly book from Intel....I picked it up at a yard sale of course never read...Isn't the unique ness of the 8 bit machines (Commodore,Atari etc) basically the video and sound chips?

 

I am curious.... do most program on their PCs/Macs and then just transfer over to the Hardware or do they use emulators for testing first?

 

Thanks

Chris

Link to comment
Share on other sites

 

I think I learned with the same books back in the day. I recently saw an website with a 6502 simulator where you could try things out in real time.

 

You might find assembly a bit of a culture shock given the languages you're used to. :) It isn't hard to understand, just tedious. You often have to write subroutines for routine tasks that other languages do for you. Especially on an 8-bit Atari which doesn't have very many system calls or anything like a C-library

All,

I thought I saw/heard somewhere where C and Pascal was somehow available (ported maybe but still having issues with floating point) for the Atari 8 bit? ( I am actually unsure asking here?)

 

Yeah I am guessing this will be more tedious today than I am used to today but "scenery" change is always welcome...even if its just for learning....Been doing SQL and Web stuff and writing for basically interpreters (web browsers) not to mention "Managed Languages" (.Net of course and Java in College) it does become ho hum after a while. Still I really enjoy my job today as there are still complex problems to solve just different tools. Have not created a pointer or such in about 10 years... so getting back to the machine, albeit deeper, again should also be good.

 

I assume that the Assembly routines, like today's code (Function/Sub ), are re-used in a modular/procedural fashion. Copied and pasting of routines into new source files are also still possible.... basically procedural ...correct?

 

So its whats in your toolbox type of thing to basically solve a problem?

 

Thanks

Chris

Link to comment
Share on other sites

I am curious.... do most program on their PCs/Macs and then just transfer over to the Hardware or do they use emulators for testing first?

 

I do my work on my PC (Slackware Linux) using nothing fancy, just vim for text editing and the DASM assembler. I use the Atari++ emulator for most of my development, but I always make sure to test on real hardware using an Atarimax cartridge (once again, 5200 in my case).

 

Emulators aren't perfect, so at some point testing on real hardware is a must. I've had numerous occasions where code worked perfectly in the emulator only to fail on real hardware.

Link to comment
Share on other sites

eclipse is dead for android devt, you need android studio for this. nevertheless, WUDSN is so well documented and tutored that it is A MUST!!!

pirx,

Thanks for the tip....I will look into Android Studio....That goes to show me why not to buy a 2 year old book on Mobile Development. :)

 

I took a Android development 5 day course at a local community college about 3-4 years ago and we quite literally spent a full day installing Eclipse and configuring it. I know where I work they have been looking into Xamarin. Looking at the page I quickly found online about Android Studio I am going to take it for a test drive.

 

I really appreciate the guidance everyone.

 

Thanks,

Chris

Link to comment
Share on other sites

You can safely ignore the fact that WUDSN is written in Java as Eclipse plugin. No Java or whatever knowledge required. From the user's point of view it's simply a 6502 IDE with examples. And if you install the zero-installation version or the pure runtime as described in the tutorial, you'll not even see the word "Java" on the menu somewhere ;-)

 

Part of the distribution are the video tutorial with sources and of course all the examples that come with MADS etc.

https://www.youtube.com/playlist?list=PLmzSn5Wy9uF8nTsZBtdk1yHzFI5JXoUJT

  • Like 5
Link to comment
Share on other sites

Solomon_man. I would say for any old platform, you'd want to develop on a more powerful system. Even back in the day many companies developed on systems like PDP11's and then cross-compiled to 6502. Today, we also have cross-compiled but we also have emulators so you can develop and debug all on your PC/Mac and the drop it to the real thing when you need to.

 

I can't speak for Pascal but there are C compilers. They will have several limitations and I can't speak for how efficient the output is but you could always write most of the programs in that and save the Assembly for the stuff where you need the most speed.

Edited by Justin Payne
Link to comment
Share on other sites

Is there a repository for Atari Assembly source code? Yes, I agree, it's helps understand how apps/games are designed as well as see other devs solve issues.

 

Just to inspire people, I host and maintain such a repository for the Atari ST family of computers on github and bitbucket. It's not that difficult, just someone has to take a first step :).

  • Like 1
Link to comment
Share on other sites

as far as I can see the active development is done nowadays with these higher level languages:

CC65 - there are excellent resourcers and example source code available on this forum

Mad Pascal - really neat and compatible Pascal implementation with fixed point arithmetic should fractions be needed. Invofmative threads here with many examples.

Action! - a native language, also available as Effectus cross compiler.

 

CC65 and Action! have integer arithmetic only, but it is good - just change some unnecessary habits and code games / demos in integers. Floating point is a performance killer.

for assembler code examples you can look up Commodore community, e.g. http://codebase64.org/doku.php?id=base:6502_6510_maths

  • Like 1
Link to comment
Share on other sites

 

 

I would like to see some examples of the source....I am fairly sure I am going to be quite a ways from understanding it fully but it will give me the lay of the land....A repository would be Excellent for learning especially if documented well.

 

I am aware that Assembly is very specific to the machinery...I do have somewhere an old 8088 Assembly book from Intel....I picked it up at a yard sale of course never read...Isn't the unique ness of the 8 bit machines (Commodore,Atari etc) basically the video and sound chips?

 

 

The different CPUs have similar concepts in their assembly language, and instructions that are similarly named. But they are different enough you'll want to learn the 6502 specifically.

 

I also don't think you can learn much looking at assembly sources-- unless it's very well documented what it's doing. It's a bunch of statements that look like LDA, STA, MOV, JMP with little context for what its doing. Is it changing colors? printing a string? prompting for input? You won't know from the code alone without knowing the instruction set and memory map.

Link to comment
Share on other sites

All,

I thought I saw/heard somewhere where C and Pascal was somehow available (ported maybe but still having issues with floating point) for the Atari 8 bit? ( I am actually unsure asking here?)

 

Yeah I am guessing this will be more tedious today than I am used to today but "scenery" change is always welcome...even if its just for learning....Been doing SQL and Web stuff and writing for basically interpreters (web browsers) not to mention "Managed Languages" (.Net of course and Java in College) it does become ho hum after a while. Still I really enjoy my job today as there are still complex problems to solve just different tools. Have not created a pointer or such in about 10 years... so getting back to the machine, albeit deeper, again should also be good.

 

I assume that the Assembly routines, like today's code (Function/Sub ), are re-used in a modular/procedural fashion. Copied and pasting of routines into new source files are also still possible.... basically procedural ...correct?

 

So its whats in your toolbox type of thing to basically solve a problem?

 

Thanks

Chris

 

yes, you can reuse code. Macro assemblers let you insert blocks of code as macros. Also you can insert assembly into C code for better performance/compactness of certain functions.

Link to comment
Share on other sites

All,

Thanks for the responses...

 

Been slowly reading the two books I mentioned previously but with 5 kids and a full time job it slows you down a bit....

 

I am glad to see the other languages available and its been a rewarding experience "catching up" with my old hardware, listening to the Antic Pod Cast, and of course learning from all you folks...

 

So far nothing I have read in either book seems unfamiliar/new based on my academic past...not sure where this will lead me but I will continue moving forward and if I run into something I will give out a Shout.

 

Thanks again,

Chris

  • Like 1
Link to comment
Share on other sites

5 kids?!? No wonder you don't know Assembly Language. You're too busy assembling the Brady Bunch. ;-)

 

Well, if you get stuck there are a lot of people that will lend a hand so don't shy away from asking questions.

 

The Antic Podcast is great. Also, for someone interested in more technical content, I recommend The Player/Missile Podcast. It's currently on hiatus but Rob really covered a lot of technical info that I loved....and he also gave me my first shot into podcasting (show segments) as well as introduced me to someone which then turned into the XEGS Cart by Cart Podcast (shameless plug but totally fits the direction of the story so you can't fault me ;-) )

 

I really hope that you keep with this. This retro community, as well as other (I hope), are very appreciative of new content so were you have to try real hard to develop something that stands out in newer platforms, we're just happy you're helping out.

Edited by Justin Payne
  • Like 1
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...
 Share

  • Recently Browsing   0 members

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