Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


SlithyMatt last won the day on November 26

SlithyMatt had the most liked content!

Community Reputation

374 Excellent


Recent Profile Visitors

400 profile views
  1. There are very old books out there on 6502 programming. I picked up this one for free: It wasn't terribly useful compared to online resources, especially with its extremely small and messy printing on cheap pulp paper. I don't know if there are any modern trade-paperback books out there, unless it was something somebody self-published.
  2. Christmas 2020 Demo View File A sequel to my demo from Christmas 2019, but refactored to work with the R38 emulator and using new music and graphics. You can play it here, on your emulator, or just watch it on YouTube: Also available on GitHub: https://github.com/SlithyMatt/x16-xmas/releases/tag/2020.0 Submitter SlithyMatt Submitted 12/03/20 Category Demos  
  3. Version 2020


    A sequel to my demo from Christmas 2019, but refactored to work with the R38 emulator and using new music and graphics. You can play it here, on your emulator, or just watch it on YouTube: Also available on GitHub: https://github.com/SlithyMatt/x16-xmas/releases/tag/2020.0
  4. New video, now with music and sound effects: As you can see, the 2600 sound is not the greatest to work with, especially when it comes to music. Really makes one appreciate all the options on the X16.
  5. The original C64 programmer's guide will go a long way to help you understand how the Kernal works, and there are copies in many languages across the web, like here: http://www.classiccmp.org/cini/pdf/Commodore/C64 Programmer's Reference Guide.pdf The X16 programmer's guide on GitHub is pretty good at explaining what has been cut out from there and what has been added: https://github.com/commanderx16/x16-docs/blob/master/Commander X16 Programmer's Reference Guide.md There will be a complete user and programmer's guide that ships with the X16, but between these two docs and support from this forum, you should be all set.
  6. Traditional C programming puts loads of data on the stack, and you just can't do that with the X16, or any 6502-based system. If you declare non-static local variables in your functions, they will all be placed on the stack, along with arguments and return values. You should try to limit stack use to only return addresses and try not to go too deep with your function calls. Make your locals static, or move as much data as possible to global variables and structs. Then, you don't have to pass it around, it's always there. Not good, clean, modern programming, but this is not a modern platform.
  7. It's a saying, "everything but the kitchen sink". Just means that they threw everything into it that they could think of. Personally, the M65 does not speak to me like the X16 does. I have zero desire to own a new computer with a floppy drive, and even less to pay more for a cute toy computer than my serious daily driver personal laptop. If I want to play C64 games, there are emulators for that. If I want a cute toy computer, it's either going to be a Raspberry Pi, where I can run modern software and do things like have low-power servers or custom TV dongles, or the X16 where I can have a fun development target for assembly games and demos that won't break the bank. If the X16 was targeting a $1000 price point, I would not be interested at all, but I would still the admire the technical achievement, like I do for the M65.
  8. It depends. You can create an assembly program that runs entirely within Raspbian userspace, just like you would with C. But if you are looking to get all the way down to bare metal, you can do that, too, but the platform is not meant for that, so it will be an exercise in frustration more than anything, unless you were actually trying to create your own custom kernel. Either way, the experience of writing in ARM assembly for a complex (it's small but INVOLVED) system like the RPi will be a far cry from a simple system that's meant to be an assembly programming target like the X16 or any other 8-bit system.
  9. "Learning Computer Science" is a pretty broad goal and, short of getting an actual degree, is difficult to quantify. If you want to learn the basics of computer science, like why languages do what they do, there a lot of things to explore. A lot of great content on YouTube, actually, as good as any University lecture. Chances are, coming from web stack straight into 8-bit assembly, you'll be hopelessly lost. You may want to try gradually stepping down your level of abstraction. Build a console-based program with Python, then try to do the same thing with C. Learning the different languages and seeing how they deal with data should help you connect the dots. If you want to press further down the ladder of abstraction, then try assembly. Doing ARM assembly for a Raspberry Pi is not the best idea, as that is a platform designed to have many layers of abstraction between bare metal and userspace. The X16, however, is a perfect platform for learning assembly. It was designed to have you directly access everything, not depend on a big operating system and countless drivers and services.
  10. Remember, GitHub is free, and you can maintain private repos. Never depend on a single device to store your code and assets!
  11. To say the least! Recursion is not your friend with a limited stack. Another reason why Lisp is not the greatest fit for this platform. Kinda hits the other, Functional, side of "modern" Computer Science, striving to make everything an elegant function tree, which is not the way to go, either.
  12. Indeed there are! Passing structs by value is generally a bad-to-impossible idea on a 6502 system. The stack is (at most) 256 bytes, and each subroutine layer requires at least two bytes taken up to store the return address, plus you should expect A, X, Y and the status register to also be pushed to the stack for each call (that is the default behavior of C functions in cc65), so that's 6 bytes right there. We are conditioned through "modern" Computer Science studies to avoid global data, do proper OOP and encapsulate and compartmentalize. Going back to 8-bit, you gotta throw that stuff out the window.
  13. Try renaming the file to have a .PRG extension.
  • Create New...

Important Information

Please review our Terms of Use