Hi Metalfoot,
I saw this post the other day but at the time was so wrapped up in programming that it was hard to pull away. Okay, so you want to learn ML programming? First, that's great to hear. Second, while I agree with the suggestions about standards and design, I do have my own opinion as to the best route to
learn, and it may or may not be an opinion shared by the others. You can decide for yourself.
For starters, I also believe reading books is the way to go. I read Butterfiled's book in the beginning, but it barely scratched the surface, so it wouldn't be my first choice today. It can't end with books, however. This may sound surprising, but for me ML programming didn't get off the ground until I bought the Buddy assembler and read through the manual, working out how to print a string to the screen. I still remember doing that like 30 years ago! The first time you fire up an assembler (any assembler) can be a scary experience. All the assembly language knowledge in the world won't ever change that. But since it is the tool you will be using, you should become familiar with how it works. What assembler should you use? This decision falls under the "no standards in the C= community" statute, so my advice would be to find something that will make life easy for you; an assembler with "standard" syntax and a straight-forward approach to its use. This leaves out Merlin, cc65, Kick, ACME, the GEOS assembler, and most of the others. The guys that wrote those programs, while great at programming, should have put some (a lot) more thought into the end user, someone who isn't necessarily a great programmer. How foolish does it sound when someone says his assembler is aimed at the advanced programmer? Well, a quick trip down Logic Lane will remind you that by the time someone is "advanced" enough to use your program he might not want to try something altogether new and different. It's counter-productive. As far as the C64 is concerned, there are only so many great features an assembler can possess anyway, and most of them are over-rated. Try CBM prg Studio. Not only is it powerful, but you won't be all wrapped up in learning something cryptic and confusing on TOP of learning assembly language.
Today the Internet is a great place to learn. In the 80s we had to read magazines or tear other peoples' code apart. I still remember the joy of finding out how Centipede was made, or dis-assembling and (eventually) understanding what made Buddy tick. The C64 Kernal is excellent for study because it is been so widely analyzed. Looking at code via the ML monitor is still (in my opinion) the #1 most effective way to learn how things are done. Learning ML isn't a "wall" but is more like a wave. Learning will come in pieces little by little, step by step, and there
will be many of those "aha!" moments along the way. So expect it to take time. And this brings me to your first program. Please, oh
please!, don't listen to advice telling you to create a demo with sprites, sound, interrupts, and joystick as your first program. Just do yourself a favor and quit right now instead. In other words, start with something you will later consider very simple -- and go from there. I'm talking about short text-printing loops or something that loads a program into memory. Maybe a colorful one-screen tribute to yourself that asks for input to confirm how great you are.
We're almost done. Go to DLH -->
http://www.bombjack.org/commodore/ and comb the books. He has them all.
In order:
Compute's Programming the 64: The Definitive Guide (the #1 book ever)
Mapping the Commodore 64
Compute's Machine Language Routines for the Commodore 64/128
The Anatomy of the Commodore 64
What's Really Inside the Commodore 64
All Transactor and most Compute! or Compute! Gazette magazines, as well as some RUN
Compute's Toolkit: Kernal
Compute's Toolkit: BASIC
Peeks & Pokes for the Commodore 64
Trips and Tricks for the Commodre 64
There. This will get you started. As Shaun stated --> practice / As Prime stated --> be organized (and I will add methodical and consistent)
Stick with it and don't be afraid to ask when you need help with something. It's why all of us here are working so hard to make this website become a programmer's paradise. Make sure you read the books first
before asking a silly question, okay? Half the fun of learning is finding the information yourself. Speaking for myself, an email or PM is a sure way to get a good answer. If I don't know the answer, I absolutely know where to find it.
Good luck,
Bert