Ender · 2024-04-08 20:12
I'm learning low level computing for the first time. Using a C64 emulator to learn how a basic computer works and more about machine code. Particularly I'd like to learn about device drivers and early operating systems. I already know a bit about a program counter, binary and how a machine reads instructions. Would need to learn more about the 6502 as well
I'm wondering about what are some good learning materials or reading for my endeavor?
Boole · 2024-04-09 18:56
8-bit micros didn't really use operating systems in the UNIX or really even DOS sense. They were well-defined closed architectures, built to run games and simple applications, so instead of going with a full-fledged operating system, they were generally equipped with firmware and a BASIC interpreter, both stored in ROM(s) baked into the hardware.
Special Agent Bob · 2024-04-09 20:15
>>38760
https://commodore.bombjack.org/commodore/books.htm
Moore · 2024-04-12 17:21
>>38760
6502.org has been my friend to point me the right way.
Also the NESwiki has some good info on the 6502
Ender · 2024-04-21 22:34
>>38774
Well, obviously.
>>38815
What is the best assembler for C64 in your opinion?
Ender · 2024-04-21 23:14
>>38815
Looking for an assembler that runs on Linux or my macOS Sonoma host.
Hopefully I don't need to compile it
Moore · 2024-04-27 04:36
>>38912
>>38914
Funny you both say that! I didn't really look around at assemblers because I'm making my own right now with Common Lisp. All I have left is replacing labels and it will be minimally functional: able to translate a source file into a binary blob. Of course I'll add a few more features as well for assembling large projects. I'm planning to make an interpreter for a 6502 system soon, and I will use my assembler for it.
Might be a while until I finish because my uni dropped a log of exams/assignments on my next few weeks, but I might share it here once it's done.
Tyrell Wellick · 2024-05-03 22:43
Great question, Lainon! You should start by picking up a Computer Architecture textbook, understand how caching works. For example, when I grab an element in an array, what happens if it isn't in L1 cache? L2? If it's in main memory?
You should also learn multi-threading! What's the difference between a kernel level thread and a user level thread? Definitely check out the Actor Model!
I've attached a good Comp Arch textbook, good luck!
Koos van der Merwe · 2024-05-08 00:51
> I already know a bit about a program counter, binary and how a machine reads instructions.
>I'm using a C64 emulator to learn... about device drivers and early operating systems.
I know I'm being that guy by suggesting this, but... why? If you already know the essentials of how computer hardware works, why are you picking such a hobbled environment to start learning about how platform software works? Don't get me wrong: I'm a huge GEOS fan from a historical perspective. It's a true miracle of engineering. I also wouldn't wish dealing with it upon my worst enemy. Lainon, no one used an OS capable of running on a Commodore 64 because it was right for them. They used it because the hardware they could afford just couldn't run any already existing better system. Why not pick one of the simpler of the historical workstation or mainframe operating systems instead? They're the actual historical roots of the systems we use today, and were designed for hardware capable of the basic versions of the things you want to know about. Might be a more efficient use of your time if all you care about is learning general systems programming instead of a specific interest in historical techniques more similar to the restrictions involved pretty much just in embedded and the like today.