+Karl G Posted December 4, 2022 Share Posted December 4, 2022 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! 2 Quote Link to comment Share on other sites More sharing options...
_The Doctor__ Posted December 4, 2022 Share Posted December 4, 2022 (edited) 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 December 4, 2022 by _The Doctor__ 1 Quote Link to comment Share on other sites More sharing options...
+MrFish Posted December 4, 2022 Share Posted December 4, 2022 52 minutes ago, _The Doctor__ said: 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... Adventure (2600).xex Adventure (2600 Conversion).s Combat (2600).xex Combat (2600 Conversion).zip Cosmic Ark (2600).xex Cosmic Ark 1.1 (2600 Conversion).zip Midnight Magic (2600).xex Midnight Magic (2600 Conversion).s Raiders of the Lost Ark (2600).xex Raiders of the Lost Ark (2600 Conversion).s Seaquest (2600).xex Seaquest (2600 Conversion).s Stampede (2600).xex Stampede (2600 Conversion).s 1 2 Quote Link to comment Share on other sites More sharing options...
+MrFish Posted December 4, 2022 Share Posted December 4, 2022 (edited) 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 December 4, 2022 by MrFish 1 1 Quote Link to comment Share on other sites More sharing options...
+MrFish Posted December 4, 2022 Share Posted December 4, 2022 Here are some tutorials by @JAC! (of WUDSN IDE fame): Programming the Atari XL/XE (by Peter Dell) 1 1 Quote Link to comment Share on other sites More sharing options...
+Stephen Posted December 4, 2022 Share Posted December 4, 2022 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. 1 Quote Link to comment Share on other sites More sharing options...
+Karl G Posted December 4, 2022 Author Share Posted December 4, 2022 It does seem that a lot of the tools are Windows-only, and the targets assumed to be XL/XE machines. What assembler would one use for the 2600 conversions above? Quote Link to comment Share on other sites More sharing options...
+Karl G Posted December 4, 2022 Author Share Posted December 4, 2022 13 hours ago, Stephen said: Fortunately, there's also some great plugins for VS Code (which is Mac / Linux compatible). I do have VS Code. What plugins should I look for? Quote Link to comment Share on other sites More sharing options...
+MrFish Posted December 4, 2022 Share Posted December 4, 2022 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. 1 Quote Link to comment Share on other sites More sharing options...
+MrFish Posted December 4, 2022 Share Posted December 4, 2022 1 hour ago, Karl G said: I do have VS Code. What plugins should I look for? There are plugins for Mads and Atasm. 1 Quote Link to comment Share on other sites More sharing options...
dmsc Posted December 4, 2022 Share Posted December 4, 2022 Hi! 1 hour ago, Karl G said: I do have VS Code. What plugins should I look for? Fro the assembler, you should use mads, ca65 or xasm - all three work on macos. You then install the MADS extension: Have Fun! 1 Quote Link to comment Share on other sites More sharing options...
glurk Posted December 4, 2022 Share Posted December 4, 2022 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). 1 1 Quote Link to comment Share on other sites More sharing options...
Thelen Posted December 4, 2022 Share Posted December 4, 2022 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. 1 Quote Link to comment Share on other sites More sharing options...
TGB1718 Posted December 4, 2022 Share Posted December 4, 2022 4 hours ago, Karl G said: What assembler would one use for the 2600 conversions above? MADS does 2600, 7800 and 800 range 1 Quote Link to comment Share on other sites More sharing options...
+Stephen Posted December 5, 2022 Share Posted December 5, 2022 7 hours ago, Karl G said: I do have VS Code. What plugins should I look for? This is how I am configured: 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. 1 Quote Link to comment Share on other sites More sharing options...
VinsCool Posted December 5, 2022 Share Posted December 5, 2022 MADS Assembler Any suitable text editor Altirra Emulator (for debugging) Those were the main tools I've been using so far, and were invaluable to me for learning how to code on the Atari 8-bit 2 Quote Link to comment Share on other sites More sharing options...
+Karl G Posted December 6, 2022 Author Share Posted December 6, 2022 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? Quote Link to comment Share on other sites More sharing options...
danwinslow Posted December 6, 2022 Share Posted December 6, 2022 (edited) 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 December 6, 2022 by danwinslow 1 Quote Link to comment Share on other sites More sharing options...
kenames99 Posted December 7, 2022 Share Posted December 7, 2022 there is also atasm which is a mostly MAC65 compatible assembler. get it from https://github.com/CycoPH/atasm it compiles on everything I tried it on, even OS/2. Quote Link to comment Share on other sites More sharing options...
Kenshi Posted December 7, 2022 Share Posted December 7, 2022 I'll second ca65 for the assembler. It takes a little extra time to learn, especially the memory configuration files, but it's so powerful and versatile. And if you get tired of assembly, it comes with a C compiler as well. Quote Link to comment Share on other sites More sharing options...
Steril707 Posted December 7, 2022 Share Posted December 7, 2022 Using MADS on Mac OS. Works just fine. To be Altirra doesn#t run there, though. And WINE ceased to work with the advent of M1 processors. Quote Link to comment Share on other sites More sharing options...
+Karl G Posted December 11, 2022 Author Share Posted December 11, 2022 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 Quote Link to comment Share on other sites More sharing options...
Kenshi Posted December 11, 2022 Share Posted December 11, 2022 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. Quote Link to comment Share on other sites More sharing options...
+Karl G Posted December 11, 2022 Author Share Posted December 11, 2022 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 Quote Link to comment Share on other sites More sharing options...
Kenshi Posted December 11, 2022 Share Posted December 11, 2022 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. 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.