System information
Documentation
"Commodore 128 Programmer's Reference Guide" This is an invaluable book if you want to learn how to
program in assembly on the C128.
"Mapping the Commodore 128" This is an invaluable reference book if you want to program in assembly on
the C128. It describes what every routine in the ROM does and what every memory location in the RAM used
by the operating system is used for.
Memory maps for Commodore 128(and some other Commodore related documentation)(not as detailed as in
"Mapping the Commodore 128")
Here you can find a commented ROM disassembly. ]
"The Transactor magazine" This publication contains several interesting C128 articles by the Commodore guru
Jim Butterfield and other people.
The C128 Basic Interpreter
"Commodore 128 Bedienungshandbuch" This book was included with Commodore 128 computers sold in
Germany. It is very different and much more detailed than "Commodore 128 System Guide" so read this book
instead if you understand German. The book is pretty basic and does not give any insight in assembly
programming on the Commodore 128 but it is good to read to learn the fundamentals of the Commodore 128.
"Commodore 128 System Guide" This book was included when you bought a new Commodore 128 computer.
It is pretty basic and does not give any insight in assembly programming on the Commodore 128 but it is
good to read to learn the fundamentals of the Commodore 128.
Commodore 128 Alive! contains information about the C128, C128 programs and a C128 discussion forum
Assemblers
A really good assembler for the Commodore 128 is Power Assembler (Buddy).
Power Assembler (Buddy) version 8.2 for the C128
Power Assembler (Buddy) version 8.2 for the C64
Documentation for Power Assembler (Buddy) version 8.2 for the C128 and the C64 (includes a brief tutorial
to be run on the C64/C128)
Power Assembler (Buddy) version 10 for the C128 and the C64 The main differences compared to version 8.2
are that version 10 supports macros and having two 40-column windows in EBUD when the 80-column screen
is used.
Documentation for Power Assembler (Buddy) version 10 for the C128 and the C64
Programs I have implemented for the Commodore 128 Power Assembler version 8.2 source code is included
for assembly language programs.
Note that you must load with DLOAD"BUD". Using LOAD"BUD",8 does not work. If you know why, please tell me!
Bug in Power Assembler version 8.2 for the C128 (I have not tested whether it exists in version 10): When I
assembled using the .BAS pseudo-op, I wanted some data (defined using .BYT) after the end of the assembly
source code to be put at a specific address ($2000) that was after the assembly source code. It should be
possible to do this using .ORG or * =... before the .BYT statements. However, when I did this, the data was put
at address $1FFE instead of $2000 in memory (an offset of 2 bytes). I managed to solve this by defining that the
data should be put at $2002 instead. When looking at the symbol table generated at the assembly, it looked like
the data had indeed been put at $2002 as defined but when looking at the generated data in the C128 machine
code monitor it could be seen that the data had in reality been put at $2000 as intended.
Double-Ass (another assembler for the C128 including brief documentation, this one I have not tried myself
but it seems less powerful than Power Assembler)
Memory management
Both the Commodore 64 and the Commodore 128 have a 16-bit address bus and can therefore address 64 kB of
memory at the same time. For both of the computers, ROM memory can be placed at the same memory locations
as RAM memory. When this is done, a write operation to a memory location writes to the RAM while a read
memory reads from the ROM. It is then said that the RAM lies under the ROM and this is sometimes also referred
to as "hidden" RAM. If a ROM is switched out, both read and write operations operate on the underlying RAM.