First, Commander X16 Reference Manual. This is a Github repository with all of the documentation and reference material for the X16. It doesn't teach you how to write a program, it just tells you what all of the equipment is, what all of the features are, and all of the memory addresses you need.
Next, the X16 has several programming environments available for it, and they all work differently:
- BASIC
- Assembly
- C
- Prog8
If someone wants to play around with X16 programming, what language should be used to introduce them? Should one "book" cover multiple languages?
I wasn't around for these, but I know there were books like "101 BASIC programs for your computer". Would one of those be good teaching material for the X16? What kinds of programs should be included?
I've been a huge fan of "let's learn how this computer/game console works by writing a bunch of games for it" books for the past few years now, and the ones I've read usually use assembly language, but with the development happening on a modern PC. So, this is another language and another style of teaching.
Next, what kinds of X16-specific programming topics/skills would we want to touch on? Keyboard input, joystick input, music and sound, graphics, file access, etc. What kinds of computer science skills? Data structures, algorithms, code organization, good habits, etc.
Finally, who's the target? Are we targeting people who've never written a line of code in their lives? People who dabble with modern (at the time) programming languages like Python, C#, JS, etc? Experienced super-programmers who can write their own operating system kernel in their sleep?
I know there's talk that the 65c816 upgrade path and ROM/firmware updates complicate materials like this, but we need to be able to work around these issues and have these materials available in spite of them.
We can work around the 65c816 by teaching 65c816-safe 65c02, as far as assembly is concerned.
A book for BASIC is likely safe as long as each BASIC command keeps doing the same thing, we just might miss out on newer commands. A book for assembly language would depend on each Kernal function doing what it's supposed to be doing. A book for other languages would vary, likely just a "make sure your toolchain is up-to-date" deal.
There might be some way to unit-test each code snippet to make sure a Kernal update didn't break things, and when things do break, there should be a strategy for getting corrected information out there. I like how the X16 documentation is a Github repository, so that might be a good way to maintain learning materials as well.