Were developers using monitors like e.g. "Supermon+64", "Merlin 64" or "Monitor$C000" and cartridges like "Final Cartridge", "Action Replay" (both of these were not available until the mid-80s or later, I think)?

Or games were written on more powerful computers (e.g. GEOS was), then compiled to 6502 machine language and transferred to C64?

  • 2
    Reopen the question - it was closed with comment "This question needs to be more focused.'. It focuses on a single thing - what tools/methods were used to write the assembler code for C64 in the past. I have update the text to make it more clear. – 10sys2064 Sep 7 '20 at 1:55
  • 2
    Not a duplicate as retrocomputing.stackexchange.com/questions/9006/… is about 8-bit computers in general and this one is about the C64 specifically. – snips-n-snails Sep 7 '20 at 18:17
  • @10sys2064 Are you sure that there is an essential difference between the c64 development and the development for the other 8-bit machines of the era? – peterh - Reinstate Monica Sep 9 '20 at 14:27
  • Btw, I played with the "binaries" of some big softwares a lot. My impression, many decades later, that ordinary people does not write asm code like they had. I looked like as if it had been compiled for a higher language (roughly like compiled C code, except that it had not so many stack operations). Today I think, at least some asm macro language was used, but I do not know, what. The orig version of the question suggests the same. Here is my reopen vote - I hope, I will see an answer making this question significantly different. – peterh - Reinstate Monica Sep 9 '20 at 14:30
  • Hey, what is this "10sys2064"? It looks like a basic chunk of an asm program on c64, making it startable by the "run" command. Oh, good old times... – peterh - Reinstate Monica Sep 9 '20 at 14:34

The HES MON 64 cartridge, by Terry Peterson, seems to have been available as early as 1982 (same year as the C64). This, according to the copyright notice on the manual. While it is referred to as a "ML Monitor", it really comprises all the basic utility software you'd need to create assembly language programs on a C64.

HES MON 64 can be used to assemble code using its built-in assembler. You don't get fancy features like macros and advanced symbol management, but you can write assembly without those. The less advanced your assembly routines are, the less you will miss such features.

Additionally, the cartridge has a disassembler and a whole wealth of debugging commands, including breakpoints. You could get quite far with just knowledge of assembly and having mastered the commands supported by this simple cartridge.

I am referencing this particular cartridge because it is the one utility cartridge that I remember being very widely used by C64 programmers. It may even be seen reasonably as the main precursor to the many ML monitors that came after, and worked very similarly. For example, by the 1985 release of the C128, Commodore put a roughly equivalent ML Monitor into the firmware of their new machine.

Since these utilities reside in ROM on the cartridge, they don't hijack any significant RAM from the C64. Pretty much the whole 64K is available for programming code & data.

What's radically different here from the normal edit, compile/assemble, run/debug cycle you are used to is that you aren't bothering with source code files. Rather, you use the assembler to "write" your code directly into the machine's memory as ML, wherever in memory it needs to reside. Same with data. Then, you use other commands in the ML Monitor to "save" that memory, raw to disk or tape, as your finished program.

When you need to resume work later, you load the raw program back into memory, and can use the Disassembler to inspect, edit, execute, and debug. It sounds primitive, but it actually flows pretty smoothly. Nothing is wasted in terms of the computer resources available, and the utilities are all so "lightweight" that the operations all happen reasonably fast.


I guess the answer is "all of the above, and more". I was just a kid with a C-64 in his bedroom at the time, but from my recollection:

  • Cross compilers / assemblers existed; they were sometimes mentioned in magazine articles, usually involving a minicomputer, in the late 80s also a PC. However, this was rare and expensive, and limited to big companies.

  • Most people would develop on the C-64 itself, usually using some sort of integrated editor / assembler / linker. There were quite a few; the ones I used came from magazines like Input 64 ("INPUT ASS") or 64'er.

  • There were also compilers for BASIC and other high-level languages. PASCAL and COMAL come to mind.

  • Most developers would also have a monitor programs like the ones you mention in a modified kernal or on a cartridge, but for debugging rather than coding. (Though I knew some people who could code simple assembly languages programs directly in hex).

  • 1
    A surprising number of games combined BASIC and machine code, since the portions of games that would be speed critical often aren't doing anything very complicated, and more complicated aspects often aren't speed critical. Writing a few small snippets of machine code with a monitor and then using a BASIC program to glue them all together can often be much easier than trying to write a monolithic program in assembly language. – supercat Sep 8 '20 at 15:48

Not the answer you're looking for? Browse other questions tagged or ask your own question.