MAC/65 Assembler Editor and Atari 8-bit Machine Language Programming - Part 2

แชร์
ฝัง
  • เผยแพร่เมื่อ 18 ก.ย. 2024
  • The 2nd in a series of videos in programming in Assembly Language for the Atari 8-bit computers using the MAC/65 Assembler Editor cartridge.
    This video covers:
    1) A discussion of all the commands available in the MAC/65 Editor.
    2) A very brief discussion of some of the features of DDT
    3) How to write the "Hello World!" demo program in under 30 bytes of assembled machine code.
    Atari Books referenced in this video and where you can download them:
    MAC/65 and DDT Manual:
    www.atarimania...
    Mapping the Atari by Ian Chadwick:
    www.atarimania...
    Atari Roots by Mark Andrews:
    www.atarimania...
    Compute's Machine Language for Beginners by Richard Mansfield:
    www.atarimania...
    SAMS Programmer's Reference Guide for the Atari 400/800 Computers:
    www.atarimania...
    Your Atari Computer by Poole, McNiff, and Cook:
    www.atarimania...
    Tom Hudson's Machine Language Boot Camp Series Analog Magazine (starting in Issue 13):
    archive.org/de...

ความคิดเห็น • 27

  • @davidarlington1206
    @davidarlington1206  2 หลายเดือนก่อน +2

    As usual, because I am flying without a net, here are the errors I caught on rewatch:
    1) I still don't know what is wrong with my use of the ASM command early in the video with the parameters. I will find out and address next video.
    2) At 22:00 when I was fumbling around with trying to ENTER the unnumbered lines of code, it's because I forgot the ,M at the end which I had talked about just five minutes before.
    3) If you feel inclined when you get to the 32:00 mark to comment on my rather obvious (but common) error there, hang in a couple more minutes, I catch it myself.
    4) At 40:00 I say De Re Atari when I'm obviously holding MAPPING THE ATARI
    5) At 43:00 Not really an error but an omission where I forget to say MAC/65 can handle forward references to lines yet to be written because it is a 2-PASS COMPILER.
    Thanks for bearing with me!

    • @FelipeBalbi
      @FelipeBalbi หลายเดือนก่อน +1

      1) I think you only add a comma if you're skipping one argument or passing another one. What I mean by that is that "ASM ,#P:" is okay, but "ASM ,#P:," is not.

    • @davidarlington1206
      @davidarlington1206  หลายเดือนก่อน

      @@FelipeBalbi That's exactly right. That's where I messed up there. Thanks!

  • @lopez8140
    @lopez8140 2 หลายเดือนก่อน +1

    Thank you very much. I always wanted to understand the Atari 8bit assembler, but all the tutorials started with bits/bytes through which I never got to "Hello World". I hope you will continue 😊

  • @mickster150arcade
    @mickster150arcade 2 หลายเดือนก่อน +2

    Looking forward to where this tutorial leads to!!

  • @TheClassicsCoder
    @TheClassicsCoder หลายเดือนก่อน +1

    It was always on my bucket list to use the MAC/65 I have. This is a great jumpstart. Thank you so much!

    • @TheClassicsCoder
      @TheClassicsCoder หลายเดือนก่อน

      Also, super cool, you show assembler programming on the Atari itself and not cross-compile 👍

  • @FelipeBalbi
    @FelipeBalbi หลายเดือนก่อน +1

    Nice video! For things like the program name and such, I tend to use .TITLE instead. Depending on the size of the program , I may also use .PAGE to split the code into "sections". But, yeah, comments should be used in abundance 🙂

  • @nickfolino8228
    @nickfolino8228 หลายเดือนก่อน +1

    You can save a few bytes by decrementing Y instead of incrementing it. No need to use the compare or jump instructions:
    100 *=$5000
    110 .OPT OBJ
    120 STRING .SBYTE "Hello World!"
    130 START LDY #$0C
    140 LOOP LDA STRING-1,Y
    150 STA ($58),Y
    160 DEY
    180 BNE LOOP
    190 END RTS

    • @davidarlington1206
      @davidarlington1206  หลายเดือนก่อน

      @@nickfolino8228 Thanks, Nick. I'll note that in the next video. For this one, it allowed me to talk about the difference in addressing modes between JMP and the branch instructions which can look similar to beginners.

  • @AlexEvans1
    @AlexEvans1 หลายเดือนก่อน +1

    Some minor anal retentive things '/' is a (forward) slash, '\' is a backslash. Hex 'B' is 11, 'C' is 12, and finally calling '#' a hashtag is a neologism the term hashtag coming from calling '#' hash.

    • @davidarlington1206
      @davidarlington1206  หลายเดือนก่อน

      @@AlexEvans1 You'll see that as I go on, I catch most of these already especially the 11 and 12 B/C thing. I go back and forth on the # key thing LoL. What it was called contemporaneously back in the 80s or what are most people thinking today in 2024 when they see that symbol.

    • @y00t00b3r
      @y00t00b3r หลายเดือนก่อน +2

      octothorpe

    • @davidarlington1206
      @davidarlington1206  หลายเดือนก่อน +1

      ​@@y00t00b3rLOL. Perfect! Just don't expect to hear me say that in a video for the next hundred years or so! 😊

  • @og_dagr8hoodoo
    @og_dagr8hoodoo 9 วันที่ผ่านมา +1

    following along, and I am a noob with the atari. I notice you change the listing on the screen, for example the .byte to .sbyte then you seem to arrow to after edit, and hit some key and it makes the change, what is that magic key as just hitting return, give me the familiar What! Keep up the good work, this inspired me to resume what i tried back in '87

    • @og_dagr8hoodoo
      @og_dagr8hoodoo 9 วันที่ผ่านมา +1

      nevermind, I just realized you hit enter before going back down :)

    • @davidarlington1206
      @davidarlington1206  7 วันที่ผ่านมา +1

      @@og_dagr8hoodoo Ahhh! Sorry I missed this comment before this! Glad you figured it out. I know there's plenty of instances where I forget to hit Enter when I change a line. I'm glad I remembered on this one. A pretty big mistake happens in a later video because of me forgetting to hit Enter after changing something!

    • @og_dagr8hoodoo
      @og_dagr8hoodoo 7 วันที่ผ่านมา +1

      @@davidarlington1206 I hope some muscle memory will eventually develop for me ;) Having fun following along with you! Thanks!

  • @takingbytes1265
    @takingbytes1265 2 หลายเดือนก่อน +1

    I like using the SIO2PC when programing on Atari. Printing to my PC, using RespeQt, makes reading program listing a breeze. Maybe it's possible to do that with Fujinet I have never bothered to try.

    • @davidarlington1206
      @davidarlington1206  2 หลายเดือนก่อน

      @@takingbytes1265 Yes, the FujiNet has printer emulation. I dump my printer listings as PDFs to the PC for printing and the source code to upload to GitHub (which I haven't done yet for this video series) using the TNFS server capability of the FujiNet.

    • @mikeburkhart6707
      @mikeburkhart6707 หลายเดือนก่อน

      @@davidarlington1206 This is a relatively unheralded feature of fujinet; I use it all the time.

  • @AtariPamMaria
    @AtariPamMaria หลายเดือนก่อน +1

    Great video. I got it to assemble but I am having trouble running it in Spartados X. When I type 'RUN 500C', Spartados X thinks I am looking for a file and gives me an error 170.

    • @davidarlington1206
      @davidarlington1206  หลายเดือนก่อน

      @@AtariPamMaria I will try it later today with SpartaDos X and let you know if I can figure out what's up for you.

    • @AtariPamMaria
      @AtariPamMaria หลายเดือนก่อน +1

      @@davidarlington1206 Thanks.

    • @davidarlington1206
      @davidarlington1206  หลายเดือนก่อน +1

      @AtariPamMaria OK, I have a solution for SpartaDox X users. This will also work for regular SpartaDos. I will cover it in detail in the next video, but I don't want you to have to wait until that comes out!
      1. Go to the MAC/65 cart and LOAD #D2:HELLO.M65
      2. Add these two lines to the very end of the source listing (for both lines, make sure there are TWO spaces after the line Number)
      300 *=$02E0
      310 .WORD START
      3. Save it as a M65 file first.
      4. Do a regular ASM to make sure you have a clean compile.
      5. Then instead of doing a BSAVE, you will want to do this:
      ASM ,,#D2:HELLO.COM
      (For why we want to use ASM instead of BSAVE for this, see video 3.1)
      6. exit to DOS, clear the screen, and just type HELLO (That's it! No RUN HELLO or RUN 500C, just type HELLO)
      Let me know if that works for you. As I said, I will go over this in detail in the next video. You can use this method with any of the sample code programs from here on out.
      By the way, SpartaDos X moved the RUN command to the SpartaDos X ToolKit disk. I think you'll find the above method a lot easier than having to have the ToolKit disk handy!
      Dave

    • @AtariPamMaria
      @AtariPamMaria หลายเดือนก่อน +1

      @@davidarlington1206 Yes, that worked perfectly.

    • @AlexEvans1
      @AlexEvans1 หลายเดือนก่อน

      @@AtariPamMaria run is available on SpartaDOS X as an external command as well.