The C64 Motherlode - Everything you need to learn how to code on the C64
fairlight.to
fairlight.to
The best thing about this is that in learning how to code on the 64 you'll learn MOS 6502 assembly, which also enables you to get a head start on programming the Atari 8-bit computers and the consoles (2600 etc.) and the Apple I & II.
If you're looking for a weekend (or two) project, then you could do a lot worse than this.
So HN, what can you do with 64k of RAM and 1 Mhz CPU?
Fairlight - when dreams come true
These guys actually wrote their own linkers, assemblers, monitors, etc. when they were barely teenagers.
http://www.c64.com/scene_display_interview.php?interview=181
So I reverse engineer a C64 game by first decompiling the assembly code into vanilla C, without any definitions or names. Then I do things like make the emulator refuse to write to an address I'm curious about. Then I can see what the address does, and make a definition (a name!) for that address.
What you get in the end is C-like code with all your definitions making it readable as the original source code.
The only problem I'm having is a really robust flow-control system - JMPs can get hard to parse if they're crazy. But other than that, RightBack is a great decompiler. It's also written in Common Lisp.
A lot of really impressive C64 code is timing sensitive. The coder counts exact number of cycle a piece of code takes and attempts to, for example, synchronize it to the CRT rasterbeam, because the horizontal and vertical refresh frequency are known and because there is a VBL interrupt.
So for example you change the background color at just the right time as the rasterbeam renders the screen to get a rainbow. Similar stuff is done with quickly changing sprites so that you can get way above the, I don't know, 8 or so sprites that are supposed to be the max possible to do in hardware.
You would lose insight into this by converting the code to C.
Does anybody actually bother to even check out the site.
The only thing that works is the front page!
I fixed up the rest of the links (see my comment elsewhere on this page).
OK, fixing the links by typing the basenames into Google. I better see some HN C64 intros.
Emulator FAQ - works: http://www.fairlight.to/docs/faq.html
Beginners guide to emulators - broken, get VICE or Frodo and be done with it
C64 Memory Map - http://www.pulia.nu/doc/c64/Docs/Misc/C64/Misc/c64-memorymap...
C64 I/O map - http://www.pulia.nu/doc/c64/Docs/Misc/C64/Misc/c64-io.html
C64 RAM map - http://www.pulia.nu/doc/c64/Docs/Misc/C64/Misc/c64-ram.html
C64 ROM map - http://www.pulia.nu/doc/c64/Docs/Misc/C64/Misc/c64-rom.html
C64 Kernal ROM version description - you dont need this yet
C64 ROM disassembly - http://www.ffd2.com/fridge/docs/c64-diss.html
All about your 64 - http://www.the-dreams.de/aay.html
REU Programming - http://codebase64.org/doku.php?id=base:reu_programming
REU Registers - http://codebase64.org/doku.php?id=base:reu_registers
1541 ROM dissassembly - http://www.ffd2.com/fridge/docs/1541dis.html
C64 User's Guide - http://project64.c64.org/hw/c64usg10.zip
C64 Programer's Reference Guide - http://project64.c64.org/hw/c64prg10.zip
Mapping the C64 - http://www.oocities.com/white-flame/files/c64/mapthe64.zip
VIC docs - works: http://www.fairlight.to/docs/text/vic.txt
Formats - works: http://www.fairlight.to/docs/text/formats.zip
Tools - all links work:
Manuals for Omikron Turbo Assembler, etc: links work: http://www.fairlight.to/docs/text/xass33.html
Elysium's code examples - works: ftp://ftp.elysium.pl/gnu-generation/
C64 ML Tutorials - ftp://ftp.padua.org/pub/c64/Docs/ml-tutorial.zip