In 2021 I embarked on a personal project a long time in the making.
Having then 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 all of 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 in Appendices F through J - this is because I added full and working versions of the example BASIC programs which were incomplete in 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.
Main Body Text PDF | |
---|---|
Cover Graphic PDF |
Main Body Text PDF | |
---|---|
Cover Graphic PDF |
Main PDF |
---|
- Piii - misspelled "snd" corrected to "and".
- P104 - Erroneous £ sign replaced by correct $ sign.
- Appendix A - corrected an error where SPC and TAB tokens on page 375 were missing the opening parenthesis. Specifically: pressing T SHIFT-A is the shortcut for TAB( and not TAB; pressing S SHIFT-P is the shortcut for SPC( and not SPC.
- P287 - Corrected an error from original document: code example for LOAD was incorrect.
"LDA #FILENO ;SET LOGICAL FILE NUMBER"
- 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"
- 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"
- 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"...
- 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"
- 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.
- 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".
- Pxi - "STOCK FOL1O" corrected to "STOCK FOLIO"
- P235 - Erroneous asterisk removed from No. of cycles of (Indirect),Y in the AND table.
- P153 - BASIC program line 20 “POKE2030,13” corrected to “POKE2040,13”
- P153 - BASIC program line 50 “POKEV+31,1” corrected to “POKEV+21,1”
- P309 - "POKE55,1" corrected to "POKE55,L" and "POKE5110" corrected to "POKE51,0" and "POKE5510" corrected to "POKE55,0"
- P395 - "BUTTON B'LP" corrected to "BUTTON B"
- P380 - Spelling error "SWITH" corrected to "SWITCH"
- P127 - Multi-Color Bitmap Mode PEEK corrected to "53265"
- P101 - "or $DDOO HEX" corrected to "or $DD00 HEX"
- 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.
- 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.
- P157 - In figure 3-5 "Poke V-16,1" corrected to "POKE V+16,1"
- 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"
- P428 - "DARA" corrected to "DATA"
- 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."
- 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
- 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"
- Incorrect parenthesis on pages 245, 246 and 248 removed.
- Page 51 - on line 90 of the code corrected RN$ to AN$
- Appendix D - corrected an error where SPC and TAB tokens on page 131 were missing the opening parenthesis. Specifically: pressing T SHIFT-A is the shortcut for TAB( and not TAB; pressing S SHIFT-P is the shortcut for SPC( and not SPC.
- Page 43 - Erroneous space found in original document in "CRSR LEFT/ RIGHT key" removed
- Page 46 - "on more check" corrected to "one more check"
- Page 48 - Error in original document found: "an easier way to call upon" corrected to "an easier way is to call upon"
- Page 49 - Error in original document found: In the example for "PRINT 6*RND(1)," two impossible values are shown: "9.32527884" and "8.40850227". This code cannot produce an output greater than 6 therefor these values have been replaced with values which are possible: "1.32527884" and "2.40850227"
- Page 51 - line 65 of the program contained ": CN :", corrected to "; CN ;"
- Page 66 - Use of the word "changes" in the sentence "Lines 85 and 105 check (PEEK) to see if the ball is about to bounce into a block, and changes the ball's direction if so." is grammatically questionable. Amended to "Lines 85 and 105 check (PEEK) to see if the ball is about to bounce into a block, and change the ball's direction if so."
- Page 71 - "1 bytes" corrected to "1 byte"
- Page 73 - "X coordinates represents" corrected to "X coordinate represents"
- Page 73 - "Y coordinates represent" corrected to "Y coordinate represents"
- Page 75 - "never moved to right-hand edge" corrected to "never moved to the right-hand edge"
- Page 79 - "Sample Sound Effect To Try" corrected to "Sample Sound Effects To Try"
- Pages 80 to 90 - Removed all hyphens from references to "High-Frequency" and "Low-Frequency". There is inconsistent use of the hyphen in the original document associated with these words. Doing this ensures consistent use throughout.
- Pages 80-90 - All references to "Waveform" capitalisation have been changed to match the original document.
- Page 80 - Capitalisation of "high and low frequency", and "waveform control". corrected to match original document
- Page 80 - "Clear the Sound Chip." corrected to "First clear sound chip."
- Page 80 - commas removed from "a note rises to, and falls, from" to match original document
- Page 81 - missing parenthesis added to "can affect the timing."
- Page 81 - "Set volume at highest setting" corrected to "Sets volume at highest setting"
- Page 81 - "Sets Attack/Decay" corrected to "Sets Attack/Decay Sustain/Release level (each note)."
- Page 82 - "Loop back to reset CONTROL" corrected to "Loops back to reset CONTROL"
- Page 82 - "triangle" corrected to "triangular"
- Page 84 - "High Atack" in table header corrected to "High Attack"
- This is a major revision. The entire guide has been revised and repaginated to more closely match the original document. Incorrect Appendix order has been fixed. Index has been rebuilt to more closely match the original. Callouts have been added to example code throughout to reflect the same in the original and "tips" boxes are now bounded in blue.
- P25 - "123E+17" corrected to " 1.23E+17 "
- 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
- Page 78 - "NEXT TL" corrected to "NEXT X"
- Pages 41 & 42 - "CRSR/DOWN" changed to "CRSR DOWN" aligning style with "CRSR LEFT" which has no forward slash.
- 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"
- Page 73 - "11 POKE v+21,8" corrected to "11 POKE v+21,28"
- Page 149 - "KPRNMZ" corrected to "KPMMZ"
- Page 149 - "D,JWJM" corrected to "DJWJM"
- Added Revision Number to page ii
- Page 112 - "line 10 handles that" corrected to "Line 20 handles that"