Jump to content
IGNORED

New Dev Questions


Karl G

Recommended Posts

Since I was gifted an Atari 800, I figure I should try my hand at developing for it. I'm experienced at 6502 assembly (mostly on the Atari 2600), but I have no experience with the Atari 8-bit line. I have a few questions:

 

  • What assembler is recommended and/or the most popular for Atari 8-bit targets? I'm used to DASM, but I'm not limiting myself to that. My development computer is a Macbook for what it's worth.
  • What books/tutorials/other resources would you recommend for someone who knows 6502 assembly, but not Atari 8-bit programming specifically?
  • Are there any good "hello world" style code samples out there?

 

Thanks in advance for any information!

  • Like 2
Link to comment
Share on other sites

You might like perusing the VCS 2600 to 800 conversions, this can help you see what racing the beam looks like on the 8 bit, then check out the best homebrews and conversions. Most folks like using Altira and it's bells/whistles to check their code and see what lines up and doesn't (it's an excellent developers 800 xl xe systems emulator). Phaeron (Avery also has a manual/technical pdf that you must check out)

 

The mapping books et al are good to have and there are a plethora of tools for use on Windows/Linux/Mac and ways to run the in emulation/vm for stuff that is only on one OS or another.

 

Let the I like best because events begin :)

 

https://www.mads.atari8.info/mads_eng.html

https://www.wudsn.com/index.php/ide

https://virtualdub.org/altirra.html

Edited by _The Doctor__
  • Thanks 1
Link to comment
Share on other sites

Some useful stuff on my site.

Serious Computerist

You'll probably want to check on the Compute books there.

Serious Computerist: Resource - Compute

 

The Altirra Hardware Reference on my site it a little outdated. You can get the latest here: Altirra Hardware Reference (11/29/2022)

 

AtariWiki is a good site too.

 

Edited by MrFish
  • Like 1
  • Thanks 1
Link to comment
Share on other sites

1 hour ago, Karl G said:

Since I was gifted an Atari 800, I figure I should try my hand at developing for it. I'm experienced at 6502 assembly (mostly on the Atari 2600), but I have no experience with the Atari 8-bit line. I have a few questions:

 

  • What assembler is recommended and/or the most popular for Atari 8-bit targets? I'm used to DASM, but I'm not limiting myself to that. My development computer is a Macbook for what it's worth.
  • What books/tutorials/other resources would you recommend for someone who knows 6502 assembly, but not Atari 8-bit programming specifically?
  • Are there any good "hello world" style code samples out there?

 

Thanks in advance for any information!

I'm using MADS (I'm on a Windows machine - I don't know if any other targets are specified).  It's compatible with the above mentioned WUDSN plugin which is amazing.  However, I won't install JAVA on this new machine, and after being a Visual Studio user (full-time job for the past 15 years) I cannot stand the Eclipse IDE.  Fortunately, there's also some great plugins for VS Code (which is Mac / Linux compatible).  I use Altirra for emulator as it's by far the most comprehensive and accurate emulator for the 8-bits, and the debugger is insanely powerful.  No possible way could I be doing the VBXE coding I have without it.  Sorry most of this may not be suitable for you being on Mac.  If that can run Wine, you can run altirra just fine.

  • Thanks 1
Link to comment
Share on other sites

1 hour ago, Karl G said:

It does seem that a lot of the tools are Windows-only, and the targets assumed to be XL/XE machines.

XAsm works with MacOS, and is still under development.

  

1 hour ago, Karl G said:

What assembler would one use for the 2600 conversions above?

I think they're all using Mads.

 

 

 

  • Thanks 1
Link to comment
Share on other sites

Karl,

 

You might like my recent approach.  I just use DASM for both the 2600 and 8-bits, and I target everything to an Atari 400.  Since I was porting 2600 games, they were using DASM to begin with, so it was just easier.  I also do not get on with that MADS thing.

 

Take a look at my "Bowling" port.  I took the original 2600 game and made only the changes necessary to run it on 8-bit.  It's still "racing the beam" style, scanline-by-scanline.  I did this also with my "Fast Food" port, but did not release source code for that one (it's messy).

 

 

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

I'm also a mac user, I use on the mac VS code with Mads and the ATasm plugin+Atari800macx which is quick& lightweight. Since I wanted to program for the VBXE GF cart I use Parallels and there VScode+mads+ Altirra - which is an outstanding emulator (I couldn't get it nicely working with wine or other bottlers 🙂 )


For background info about the 800 machines I can recommend the Atariarchives : https://www.atariarchives.org/

 

A book which is really good in my opinion is 'Atari Graphics & Arcade Game Design' which shows you how the hardware works with PM, Scrolling, Display list etc.

 

  • Like 1
Link to comment
Share on other sites

7 hours ago, Karl G said:

I do have VS Code. What plugins should I look for?

This is how I am configured:

vscode.thumb.png.350fa8c9565e1f18be7eee235a4d56ab.png

 

I'm fully integrated with my GIT repo, and I can with one click assemble and launch emulator.  I find a HEX editor mandatory - I have it configured to open many types of files.

  • Like 1
Link to comment
Share on other sites

A couple more questions:

  • After reading, I think I understand how display lists work. Is there a "normal place" where these are usually stored in RAM?
  • Same question for video RAM: Where is this usually placed in RAM, assuming there's a common convention?
Link to comment
Share on other sites

The default display list is usually set up by the OS graphics commands. You can find the location pointer in $0230. When setting up your own, you can put it pretty much anywhere that is protected from overwrites. As far as I know there is no 'usual location'. In practice it is often in high memory next to display memory.
Same answer for video RAM, really, pointed to by $88. There are some restrictions about jumping certain boundaries in higher resolutions, which you take care of in the display list itself.

 

https://www.atariarchives.org/mapping/memorymap.php

Edited by danwinslow
  • Thanks 1
Link to comment
Share on other sites

Next new dev question...

 

I'm working on my display list now. It seemed to work fine when I had 96 entries of mode $D, but when I replace 8 of those with one entry for mode 7, I have garbage at the bottom of the screen where that line starts. Does this display list look valid?

 

display_list
    .byte $70, $70, $70, $4D, $00, $10
    .byte $0D, $0D, $0D, $0D, $0D, $0D, $0D, $0D
    .byte $0D, $0D, $0D, $0D, $0D, $0D, $0D, $0D
    .byte $0D, $0D, $0D, $0D, $0D, $0D, $0D, $0D
    .byte $0D, $0D, $0D, $0D, $0D, $0D, $0D, $0D
    .byte $0D, $0D, $0D, $0D, $0D, $0D, $0D, $0D
    .byte $0D, $0D, $0D, $0D, $0D, $0D, $0D, $0D
    .byte $0D, $0D, $0D, $0D, $0D, $0D, $0D, $0D
    .byte $0D, $0D, $0D, $0D, $0D, $0D, $0D, $0D
    .byte $0D, $0D, $0D, $0D, $0D, $0D, $0D, $0D
    .byte $0D, $0D, $0D, $0D, $0D, $0D, $0D, $0D
    .byte $0D, $0D, $0D, $0D, $0D, $0D, $0D
    .byte $07
    .byte $41, <display_list, >display_list

960574684_Screenshot2022-12-10at7_55_03PM.thumb.png.e158e09f49ba78e84a46e17627cdf8cb.png

Link to comment
Share on other sites

The display list looks okay to me. You can expect some symbols to show up on the last line since mode 7 is text and not graphics. I don't see any symbol in the ATASCII symbol chart that looks remotely similar to what's in your screenshot though. Have you played around with the character map?

 

I'd put some text in that part of the screen map and see what shows up. You might also consider another LMS for the mode 7 line and give it its own section of memory to make things easier unless you've already carefully calculated where in the screen map that particular line is.

Link to comment
Share on other sites

14 minutes ago, Kenshi said:

The display list looks okay to me. You can expect some symbols to show up on the last line since mode 7 is text and not graphics. I don't see any symbol in the ATASCII symbol chart that looks remotely similar to what's in your screenshot though. Have you played around with the character map?

No changes to the character map. If I write to ScreenMemory+$0DC0 then I can change what the garbage character looks like, but still nothing looking like an ATASCII character.

 

Here's a source file (DASM) that writes a single byte to the beginning of ScreenMemory as well as a byte to the first byte of where the mode 7 line should start.

 

800test.asm

Link to comment
Share on other sites

Okay, I downloaded it, changed a few things so it would assemble with ca65, and it's working okay in atari800. When ScreenMemory+$0DC0 is set to 0, it's blank, 1 is an exclamation mark, 2 is double quotes, and 3 is a number sign. I would say it's not anything in your code.

 

I have ca65 configured to compile it as an xex file though, not a cart. It also figures out where to put things in memory itself. I suspect when you compile it as a cartridge, it's overwriting the character map or something like that, but I haven't compiled any cartridges myself and don't know everything about it.

 

I may look into this some more, maybe see if I can get ca65 to compile it as a cartridge, but that's what I have so far.

  • Thanks 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...
  • Recently Browsing   0 members

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