Commodore 64 Guides


I recently completed a personal project a long time in the making.

Having recently returned my Breadbin to perfect working order, I also wanted brand new copies of the C64 User’s Guide, and Programmer’s Reference Guide to complete the set.

I could have simply printed one of the scans of these guides from the internet but where is the fun in that? In truth, I have found all these scans somewhat disappointing - very often indistinct and not always complete. Instead, I did the only sensible option: I re-wrote them from scratch using my copies of the originals as source. I reconstructed every graphic (including front and back covers), every register map, every block diagram, every table and every paragraph to have a pristine final result. This took months. Literally.

Finally, after further weeks of proofing I had a couple of copies printed. Sadly (and this really annoyed me) the printing company limited spiral bound printing to 470 pages and the Reference Guide comes in at 504. I could have printed the User’s Guide spiral bound but as I wanted a matching set, hardback it was.

The PDF files I used for printing are below.

I want to extend my sincere thanks to the small army of amazing and eagle eyed people from all over the world who have sent both words of encouragement and who have reported errors. The ever improving condition of these guides is testament to your diligence and enthusiasm and I am very grateful to you.

IMPORTANT NOTES

  • The Programmer's Reference Guide I have rewritten is pretty much faithful, page for page, to the original. It does not contain the fold out Commodore 64 diagram at the rear of the original as that is beyond printing capabilities and the Quick Reference card is a separate PDF, which can be printed separately.
  • The User's Guide deviates slightly from the original page numbering - this is because I added a few elements such as an 8 pin A/V diagram missing from the original. If this bothers you, please don't download and use. Remember this was originally a personal project - for me alone. This leads nicely to styling:
  • I made some stylistic choices when I re-wrote the guides. I wanted to retain the look and feel of the originals but present them in a manner I liked. I've chosen fonts which are similar, but not identical, to the original. I've chosen certain line spacing and paragraph options which improve readability for me but which may not be to your taste. Again, I did what I thought looked good whilst still retaining all the information in basically the same place.
  • I may have missed something in my proof reading! It is entirely possible I have introduced inadvertent errors - please contact me if you find an error and I will make the correction (don't be offended if I do not reply directly - I get a lot of emails and it's not always possible to get back to everyone). Updates made to the guides are listed at the bottom of this page.
  • In both guides I have added PAL Oscillator Frequencies to the Musical Note Values appendix - the original English language guides only have NTSC values. My calculations for these PAL values differ from the PAL values printed in the German version of the User Guide. If someone wants to check my work, I have a simple C64 BASIC program which demonstrates exactly how I arrived at the PAL values in these guides, and contains all the calculations. I am happy for my logic to be checked and corrected.
Please check back periodically to ensure
you have the latest copy with errors fixed

Commodore 64 User's Guide
This version last updated 9th January 2023 (See Errata at bottom of page)

Main Body Text PDF
Cover Graphic PDF

Commodore 64 Programmer's Reference Guide 
This version last updated 16th December 2022 (See Errata at bottom of page)

Main Body Text PDF
Cover Graphic PDF

Quick Reference Card

Main PDF


PRINTING

ARE YOU SURE YOU WANT TO PRINT NOW?
CONSIDER WAITING
WHILE TYPOS AND ERRORS ARE REPORTED AND FIXED.

I used lulu.com to print my copies and was delighted with the results. Your mileage may vary and obviously I can't be responsible for them messing up. However, I've had a few books printed with them now and I've had no issues.

NB - different Print on Demand (POD) companies have different requirements and guidelines. I specifically designed these guidebooks to meet the guidelines outlined by lulu. If you choose to use another POD company you may well find these PDFs do not meet their criteria.

The process is reasonably straightforward if you have a lulu account: simply follow the instructions on the site to Start a Project and select "Print Book" from amongst the options:


Under "Select a Goal" select the option: "Print Your Book. Your book will be uploaded to your account and available only to you for purchasing copies in any quantity you desire."


Give your project a name and then press the "Design Your Project" button.


A new page will open.

Under "Interior File Upload" upload the PDF with the main body text.


This will take a few moments. When it is uploaded you will see some warnings:


Do not be alarmed. This is normal. I ignored these warnings and the final print I received was absolutely fine.

You then need to select the options for the book paper type, colour etc. This is important. I used:






It is imperative you select 80# Coated White paper or else the cover file provided will not work (the weight of the paper determines thickness of the spine and the cover has been designed specifically for these settings.)

Under "Design Your Cover" upload the cover graphic PDF.



And that pretty much concludes the process. You can then preview the book then step through the final options and confirm specifications to order it.




Simply repeat this process as required for different books.

ERRATA

As more people view these guides, errors will be found (and hopefully) reported. Below is a list of errors found and fixed so far.

Programmer's Reference Guide:

16th December 2022 - (Revision R221216-01 )
  • P4 - Added missing "the"
  • P9 - "to" corrected to "through" (original spelling "thru" considered nonstandard)
  • P9 - corrected incorrect capitalization of "In" to "in"
  • P9 - Added missing "equal"
  • P10 - "on" corrected to "an"
  • P11 - Added missing "used as"
  • P13 - "are" corrected to "is"
  • P14 - "A-32" corrected to "A=32"
  • P17 - aligned code comments for clarity
  • P17 - Added missing note
  • P18 - removed erroneous "/" from "prompt/question"
  • P20 - Added missing notes
  • P21 - "Expenses" corrected to "Expense"
  • P23 - "IFTI$" corrected to "IF TI$" to reflect original document spacing and clarity
  • P25 - "REMSTATEMENTS" corrected to "REM STATEMENTS"
  • P25 - Hyphens corrected
  • Italics corrected throughout CH1.
  • P64 - erroneous hyphen remove from "ON-"
  • P118 - Added missing notes
  • P119 - Added missing note
  • P139 - Added missing note
  • P142 - Added missing notes
  • P147 - Added missing notes
  • P153 - Added missing note
  • P159 - Added missing note
  • P160 - Added missing note
  • P161 - Added missing note
  • P163 - Added missing note
  • P165 - Added missing note
  • P167 - Added missing note
  • P181 - Added missing note
  • P341 - "us" corrected to "use"
  • P343 - incorrected spelling of "paddles" fixed
  • P343 - added "$" to "DC00" for consistency
  • P345 - on line 1220 "DY=0" corrected to "DY=1"
  • P347 - on line 1350 "ORA#80" corrected to "ORA#$80"
  • P347 - Added missing note
  • P349 - corrected incorrect spacing in "first-in/first- out"
  • P351 - "Transmitted" spelling error in Fig.6-2 corrected
  • P353 - "Data Set" corrected to "DataSette"
  • P354 - "multi- lines" corrected to "multi-lines"
  • P355 - corrected "Sin" and "Sout" (removed capitalization)
  • P355 - added missing closing parenthesis in Fig.6-3
  • P357 - "REBUF" corrected to "RIBUF"
  • P360 - "CIA #1" references corrected
  • P360 - Error to Pin "J" reference corrected (was incorrectly "I")
  • P361 - in formula example "*" corrected to "×"
  • P363 - "operations – input" corrected to "operation – 3 input"
  • P365 - "SERIAL ATN OUT: (SERIAL ATTENTION OUT)" corrected to "SERIAL ATN IN/OUT: (SERIAL ATTENTION IN/OUT)"
  • P365 - "pre-set" corrected to "preset"
  • P366-P367 - fixed paragraph error and numerous issues with Pin Description table formatting.
  • P368 - "fines" corrected to "lines"
  • P371 - Line 210: "OF" corrected to "OFF"

11th December 2022 - (Revision R221211-01 )
  • P290 - "X register" corrected to ".X register"
  • P290 - "Y register" corrected to ".Y register"
  • P293 - "A register" corrected to ".A register"
  • P296 - "can NOT" corrected to "canNOT"
  • P299 - "JSR SETNA" corrected to "JSR SETNAM"
  • P302 - "Send a secondary address to a device commanded to TALK" compressed to one line
  • P303 - "JSR TALKSA" corrected to "JSR TKSA"
  • P306 - "Illegal device memory" corrected to "Illegal device number"
  • P311 - "Jump Vector: Convert Floating-Integer" corrected to "Jump Vector: Convert Integer-Floating"
  • P311 - "Garbage call" corrected to "Garbage coll"
  • P312 - "highest" corrected to "Highest"
  • P313 - "FBUFT" corrected to "FBUFPT"
  • P313 - Decimal location for STATUS corrected to 144
  • P314 - "Byte Received" corrected to "Byte-Received"
  • P314 - Hex Address for LA corrected to "00B8"
  • P315 - Description for RVS corrected to "No Used"
  • P317 - Description for M51CTR corrected to "6551"
  • P317 - Description for M51CDR corrected to "6551"
  • P317 - Description for BITNUM: "BITS" corrected to "Bits"
  • P319 - Description for CINV: "Hardware Interrupt" corrected to "Hardware IRQ Interrupt"
  • P319 - "Vector" added to all descriptions where it had been omitted.
  • P319 - Decimal Location of ILOAD corrected to "816-817"
  • P325 - "Disable Oscillator 1" corrected to "Disable Oscillator 2"
  • P326 - "Disable Oscillator 1" corrected to "Disable Oscillator 3"
  • P327 - "54285" corrected to "54292"
  • P330 - Bit 6 Description: "Serial Port I/O Mode Output, 0 = Input" corrected to "Serial Port I/O Mode: 1 = Output, 0 = Input"
  • P333 - Bit 6 Description: "Serial Port I/O Mode Output, 0 = Input" corrected to "Serial Port I/O Mode: 1 = Output, 0 = Input"
  • P336 - "decision" corrected to "decisions"
  • P336 - "for us" corrected to "to us"
  • P336 - Second paragraph was missing 36 words. Now corrected.
  • P336 - "format information" corrected to "format the information"
  • P337 - "border color" corrected to "border colors"
  • P337 - "to talk one" corrected to "to talk to one"
  • P338 - "0 = Upper Graphics" corrected to "0 = Upper/Graphics"

2nd December 2022 - (Revision R221202-01 )
  • P216 - "fails" corrected to "falls"
  • P217 - "4x4096" corrected to "1x4096"
  • P226 - "instructions)" corrected to "instruction(s)"
  • P227 - "back- ward" corrected to "backward"
  • P228 - "Sub- Routine" corrected to "SubRoutine"
  • P228 - "Hi" corrected to "HI"
  • P246 - Addressing Mode for LDY: "Zero Page, Y" corrected to "Zero Page, X"
  • P260 - "which" corrected to "that"
  • P260 - corrected new paragraph starting "The lines in the 6510"...

24th October 2022 - (Revision R221024-01 )
  • P184 - "Programmers" corrected to "Programmer's"
  • P184 - "Well" corrected to "We'll"
  • P185 - REM statements added to Example Program 1
  • P185 - Paragraph format correction
  • P187 - "POKEL,10" corrected to "POKEL,0"
  • P203 - "LF=LQAND255" corrected to "LF=FQAND255"
  • P203 - "550 DATA 8583,12" corrected to "550 DATA 9634,4,8583,12"
  • P205 - "Set Sustain/Release for voice l" corrected to "Set Sustain/Release for voice 1"
  • P206 - "Set Attack/Decay for voice l" corrected to "Set Attack/Decay for voice 1"

2nd September 2022 - (Revision R220902-01 )
  • P32-34 - Numerous corrections made to errors throughout TABLE 2-1
  • P37 - "30 J = ASC(J$ +CHR$(0)" corrected to "30 J = ASC(J$ +CHR$(0))"
  • P41 - "30 FOR I = 1 TO 100" corrected to "30 FOR L = 1 TO 100" and "40 PRINT I" corrected to "40 PRINT L"
  • P53 - paragraph spacing corrected
  • P74 - "printed" corrected to "PRINTed"
  • P76 - Example 2 corrected to replicate original layout
  • P83 - "235 AA-SIN(1.5): PRINT AA" corrected to "235 AA = SIN(1.5): PRINT AA"
  • P86 - Some formatting fixes.

27th August 2022 - (Revision R220827-01 )
  • P114 - "NEXTJ, I" corrected to "NEXTJ, NEXTI"
  • P120 - "back-ground" corrected to "background"
  • P128 - "($0011)" corrected to "($D011)"
  • P128 - "($0016)" CORRECTED TO "($D016)"
  • P128 - Missing parenthesis added to "Color nybble (nybble = ½ byte = 4 bits"
  • P135 - "$0015" corrected to "$D015"
  • P136 - "POKE 53276, PEEK(53276) AND (255-↑SN)" corrected to "POKE 53276, PEEK(53276) AND (255-2↑SN)"
  • P139 - Paragraphing corrected.
  • P142 - "60 POKE V + 39,1" corrected to "60 POKE V + 39,1: POKE V + 23,1: POKE V + 29,1"
  • P156 - "20 FOR S = 832 TO 894: POKE S, 255: NEXT: POKE V, 24: POKE Y + 1, 100" corrected to "20 FOR S = 832 TO 894: POKE S, 255: NEXT: POKE V, 24: POKE V + 1, 100"
  • P165 - Missing comma added to line 100 of sample program.
  • P168 - "POKE 5" corrected to "POKE S"
  • p168 - Erroneous inverted comma removed.
  • P169 - Erroneous space removed
  • P170 - "(52)" corrected to "(S2)"
  • P173 - "451" corrected to "45?"
  • P181 - In line 60140 "Q" corrected to "•"
  • Changes made throughout CH3 to ensure consistent use of "multicolor" rather than occasional use of "multi-color" AND "multicolor".

3rd August 2022 - (Revision R220803-01 )
  • Pxi - "STOCK FOL1O" corrected to "STOCK FOLIO"
  • P235 - Erroneous asterisk removed from No. of cycles of (Indirect),Y in the AND table.

20th July 2022 - (Revision R220720-01 )
  • P153 - BASIC program line 20 “POKE2030,13” corrected to “POKE2040,13”
  • P153 - BASIC program line 50 “POKEV+31,1” corrected to “POKEV+21,1”

26th May 2022 - (Revision R220526-01 )
  • P309 - "POKE55,1" corrected to  "POKE55,L" and "POKE5110" corrected to "POKE51,0" and "POKE5510" corrected to "POKE55,0"

18th April 2022 - (Revision R220418-01 )
  • P395 - "BUTTON B'LP" corrected to "BUTTON B"

5th March 2022 - (Revision R220305-01 )
  • P380 - Spelling error "SWITH" corrected to "SWITCH"

21st February 2022 - (Revision R220221-01 )
  • P127 - Multi-Color Bitmap Mode PEEK corrected to "53265"

8th February 2022 - (Revision R220208-01 )
  • P101 - "or $DDOO HEX" corrected to "or $DD00 HEX"
3rd February 2022 - (Revision R220203-01 )
  • P235 to P253 - All references (ie. "Ref: x.x.x" numbers) checked and 13 incorrect references found and fixed. These now correctly reference the MCS6500 Microcomputer Family Programming Manual available here.
2nd February 2022 - (Revision R220202-01 )
  • P197 - Missing full stops added to "register. Decay" and "be. Release"
  • P235 - AND reference changed from 2.2.3.0 to the correct 2.2.4.1
  • P236 - BCS "Add 2 if branch occurs to next page" changed to "Add 2 if branch occurs to different page"
  • P237 - BEQ "Add 2 if branch occurs to next page" changed to "Add 2 if branch occurs to different page"
  • P417 - Spelling of "Occurs" corrected; spelling of "Borrow" corrected; spelling of "Accumulator" corrected; spelling of "Effective" corrected.

25th January 2022 - 21:23 hrs (Revision R220125-01)

  • P157 - In figure 3-5 "Poke V-16,1" corrected to "POKE V+16,1"

18th December 2021 - 16:19 hrs (Revision R211218-01)
  • P235 - ADC, Absolute X No. of bytes corrected to 3
  • P236 - BCS, "branch occurs to different page" corrected to "branch occurs to next page"
  • P237 - BEQ, "Ref 4.1.1.4" corrected to "Ref 4.1.1.5"
  • P238 - BNE, "Z=1" corrected to "Z=0"
  • P240 - CLV, "Clear Interrupt Disable Bit" corrected to "Clear Overflow Flag"
  • P241 - CPX, "Absolute CPX OPER,X" corrected to "Absolute CPX OPER"
  • P241 - CPY, "Absolute CPY OPER,X" corrected to "Absolute CPY OPER"
  • P244 - JSR, "Absolute JSR (Oper)" corrected to "Absolute JSR Oper"
  • P245 - LDX, "Add 1 if" corrected to "Add 1 when"
  • P246 - LDY, "Add 1 if" corrected to "Add 1 when"
  • P247 - ORA, "Add 1 if page boundary is crossed" corrected to "Add 1 on page crossing"
  • P248 - ROL, All OP CODES were incorrect. Now corrected
  • P249 - RTI, Number of cycles corrected from "1" to "6"
  • P250 - SBC, "Add 1 if" corrected to "Add 1 when"
  • P253 - TXS, "Ref: 7.12" corrected to "Ref 8.8"

11th December 2021 - 20:02 hrs (Revision R211211-01)

  • P428 - "DARA" corrected to "DATA"

7th December 2021 - 10:20 hrs (Revision R211207)

  • P264 - "This is the default BASIC memory map which provides BASIC 2.0 and 38K contiguous bytes of user RAM." corrected to "This map provides 60K bytes of RAM and I/O devices. The user must write his own I/O driver routines."

14th November 2021 - 20:37 hrs (Revision R211114)

  • Added  Revision Number to page ii
  • Page 242 - At DEC corrected "Y - 1 -> M" to "M - 1 -> M"
  • Page 252 - At STY corrected "X -> M" to "Y -> M"
  • Pages 239 to 240 Removed erroneous "Branch to" from operations


12th November 2021 - 11:23 hrs:

  • Page 278 - Missing parenthesis added to "(See READST"
  • Page 282 - Line spacing corrected between "LDA #15" and "JSR CLOSE"
  • Page 284 - "I/0" corrected to "I/O"
  • Page 284 - "SET DDR TO" corrected to "SET DDR TO 0"
  • Page 294 - "TXTTA B+1" corrected to "TXTTAB+1"
  • Page 294 - "<TXTTA" corrected to "<TXTTAB"
  • Page 302 - "$FFBA" corrected to "$FFB4"
  • Page 303 - Added missing .X to UDTIM Registers affected
  • Pages 274 to 306 - All A, X and Y registers now prefixed with period: ".A, .X, .Y"

11th November 2021 - 14:20 hrs:

  • Incorrect parenthesis on pages 245, 246 and 248 removed.

User's Guide

9th January 2023 - (Revision R230109-01):
  • P51 - "CHRS" corrected to "CHR$"
  • P63 - "55296 - X + (40*Y)" corrected to"55296 + X + (40*Y)"
  • P73 - "11 POKE v+21,28" corrected to "11 POKE V+21,28"
  • P74 - "25 V+23,12" corrected to "25 POKE V+23,12"
  • P102 - "NUMBR" corrected to "NUMBER"
  • Curly quotes “ replaced with straight quotes " throughout for consistency
30th November 2022 - (Revision R221130):
  • Page 78 - "NEXT TL" corrected to "NEXT X"
25th August 2022 - (Revision R220825):
  • Pages 41 & 42 - "CRSR/DOWN" changed to "CRSR DOWN" aligning style with "CRSR LEFT" which has no forward slash.
3rd February 2022 - (Revision R220203):
  • Pages 149 to 150 - Fixes to Jotto: Line 440 "IF T = L" corrected to "IF T>= 1"; Line 580 "RN" corrected to "M"; Line 680 "H+L" corrected to "H+1"
23rd January 2022 - 22:26hrs (Revision R220123):
  • Page 73 - "11 POKE v+21,8" corrected to "11 POKE v+21,28"
18th January 2022 - 18:29hrs (Revision R220118):
  • Page 149 - "KPRNMZ" corrected to "KPMMZ"
13th January 2022 - 20:54hrs (Revision R220113):
  • Page 149 - "D,JWJM" corrected to "DJWJM"

11th December 2021 - 03:30hrs (Revision R211211):
  • Added Revision Number to page ii
  • Page 112 - "line 10 handles that" corrected to "Line 20 handles that"








Popular Posts