Hi everyone!
This may be a long one... so hang on tight cuz' I don't have a TL;DR ? Although, if you just want to take a look my questions, you can check that at the end of the post.
I am looking to understand the first steps I (or, in any case, anyone) should take while starting to use the X16 and how to develop any kind of stuff for it. In fact, if things go as expected I am thinking of using this thread as a kind of log about my journey through the X16 developing world ?. This is in order to achieve a greater goal, an educational one, not just for me but for anyone that finds this interesting.
So, let's begin with a short(ish) introduction!
Main goal: From what I've seen on the videos Dave uploaded to his channel, I get that the computer should be "simple" enough for someone with some knowledge to understand what is going on at any moment without having to worry about other much more complicated concepts. Basically what I see about it is that it should let me build things that emulate how an OS works in real life or, even better, work like that. It may sound a little boring or even non-ambitious at all, but after getting there I will obviously set other goals in the future. Right now my main focus is on learning and building things that help me get to a more in-depth understanding.
My background: I am 30 years old and work focused mainly on Integration (REST APIs, SOAP, etc). Basically some of the products I worked with tend to have a kind of unique way of solving their deployment challenges, including being non-dependant to a JVM and run a direct communication with the OS to manage their processes and access memory. That means I usually take into account how things work inside the server I am using and what would be the way to extract the best behaviour out of it, what relates to the other thing I've done in my career: getting to understand how OS's work and, more important, learning about low-level coding. From my experience as a student (I'm still working on getting my degree), I think there are features anyone could take advange of with the X16. So, yeah, it should be mainly about software, and very little about hardware... well, just enough hardware in order to be able to do what I plan to do.
My experience with retro computers: Given my age you would think it's not great but it is something. Well... I have no experience at all. My dad had a 386 clone running DOS back when I was 5, but after that we jumped directly to pentiums and such. I did use plenty of DOS and Windows 3.1.
Skills I have and stuff I do know about and think will be useful:
C (And I think this is an important one)
Process management (Multithreading, planning, etc.)
File systems (NTFS, FAT32, EXT2)
Skills I do not have and stuff I do not know about and wish to learn:
6502 architecture
Assembly (I'm guessing this is a must)
Basic (I am reading about that at the moment)
cc65
Skills I do not have and stuff I do not know about but are not a priority:
GUI design
Graphics in general
What I do not care about (for the time being, at least):
Games: I know this may be a bummer to many of you and will stop reading after looking at this, but while I love retro games, I am not interesting in developing them.
In-depth knowledge of hardware: By this I mean soldering, boards, chips, etc. I do not have any skills for that and never will, so I better keep it real and learn about what each component does without caring about how they are built and wired in.
Building an entire OS: It is not my scope at the moment, and tbh I don't know if it will ever be. But dreaming is always allowed, right? lol.
Ok, enough of introduction. Let's pan out my current location on this "journey":
What resources have I checked? What was the outcome of that?
I checked the FAQ, Docs, and the "Getting Started" Wiki. I don't know if I am short of knowledge right now or if I need things layed out differently but while I got to run things on the emulator (programs of the software library and some small basic tests), I haven't been able to understand yet what should I do as a first "hello world" creation using something else apart from BASIC.
What have I done? What am I doing at the moment?
So, as I said before, I've been reading all the docs and tried some software from the library besides trying some basic examples on my own. Right now I am trying to learn a little bit about KERNAL and BASIC with the C64 user guide in addition to the X16 Programmer's reference in order to get a little more experience on how to operate the X16.
What's the primary objective right now?
To get something running that has been written on my own. Just a basic program asking for an input and returning something. But I don't know if I should change this, maybe you can help me with my questions.
Here are all the questions I have at the moment
Should I bother to learn BASIC or maybe should I get straigh into C? I am skipping assembly for now, but will tackle that in the future.
If the previous answer is C : How should I start? I've seen the cc65 webpage, but should I take something else into account? Is there a "hello world" example or something like that to get into terms with the compiler and such?
Is process management a too far-fetched concept with the 6502? I'm guessing that if C is usable, I could use concepts as threads, but I am hesitant about that being doable on that CPU.
DISCLAIMER: I haven't seen any posts like this one, or at least haven't found them. If you deem this is a "repost" please let me know and accept my apologies ?
Ok, I really hope you find this interesting.
Let the learning begin!