#zeropage

Felix Palmen :freebsd: :c64:zirias@bsd.cafe
2025-04-14

@jbqueru @gumnos @mms Well, it has a PC of course, which is technically an "address register" 😏 not a general-purpose one though.

Instructions are simple 8bit values (operation and mode combined to one opcode) and regarding which modes are available for which operation, I'd say you get quickly used to it. It's (partially) related to the purposes of the registers. None is really "general purpose", only A comes close, but yep, it can't do one thing X and Y can do: count.

#mos6502 coders use the "#zeropage" in a way you'd otherwise use additional registers, which makes a lot of sense. The clocks for RAM and CPU are the same, RAM accesses need few clock cycles, and for the zeropage even fewer. There you can have your "address registers", 16 bits stored in little-endian.

Felix Palmen 📯zirias@techhub.social
2024-05-01

@cobbpg @jos1264 Just look at the size of the JVM. If the benchmark is your typical #C64 hand-written assembly code, this certainly qualifies for "bloat" 😈

Regarding features, yes, #kickassembler has an insanely powerful macro language, actually more like a full-blown scripting language in disguise. That makes it quite popular among demo coders, for example.

What it lacks (at least for my "taste") is a linker. Defining your memory map in a "linker script" and then just filling segments (including e.g. #zeropage) in individual modules, leaving the hard stuff to the linker, is a whole new level compared to traditional toolchains more similar to what you had on the real machine.

I can easily use whatever language I like to precalculate my triangulated sprite flight paths or whatever ... but I can't replace a linker with external tools 😂

Client Info

Server: https://mastodon.social
Version: 2025.04
Repository: https://github.com/cyevgeniy/lmst