0% found this document useful (0 votes)
127 views247 pages

What's Really Inside The C64

Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF or read online on Scribd
0% found this document useful (0 votes)
127 views247 pages

What's Really Inside The C64

Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF or read online on Scribd
You are on page 1/ 247
What’s really inside the Fourth Edition, September 1984 Copyright 1983 by DataCap. World rights reserved. ‘The reproduction of this book, in part or in whole, is strictly prohibited without prior written permission frou the publisher. Although this book has been prepared with great care, the publisher assumes no responsibility for any errors or omissions. No licence is granted by the equipment manufacturer under any patent or patent rights and the manufacturer reserves the right to change circuitry and software at any time without notice. Published by DataCap, 12 Trixhai, B-4545 Feneur, Belgium. Commodore 64 is a trademark of Commodore Business Machines. ISBN 2-87/28-002- INTRODUCTION ‘The purpose of this book is to provide a detailed listing of the ROM contents for the Commodore 64 microcomputer. For programmers working in assembler language, or those wanting a more complete understanding of BASIC, this should prove to be very useful. Since there are two ROM areas, AOO0-BFFF and E000-FFFF, which can be disabled separately, the listing is in two distinct parts, each with its own cross-reference listing. ‘The columns in the listing, from left to right, are: 1. address 2, object code 3. line number 4. label, 5. instruction mnemonic 6. operand 7. comments All labels have a four (two for zero page) hexadecimal character suffix representing the actual address? The single character prefixes have the following meanings: - Branch label = Jump label = Subroutine label Table (data) label = Word label = Zero page label ~ External label (address outside of zero page and current ROM area) MN EHOOS ' The mnemonics are standard MOS Technology. Operands may be symbolic, immediate hexadecimal (preceded by a dollars sign) or low/high order immediate (preceded by ). At the end of each of the tvo listings you will find a cross-reference. For each label, listed in alphabetical order, you will find the label value and each line number where’the label was used. u 0000 0001 0002 0003 0004 0007 0008 0009 0008 ooo ooo 000F 0010 oo1L 0012 0013, 0014 001s 0016 0017 0018 0019 0022 0023 0024 0025 0026 0027 0028 0029 0028 o02¢ 02D ooze, 002F 0030 0031 0032 0033 0034 0035 0036 0037 0038 0039 s 88 23 SBS 288 207 Z08 z09 208 0c z0D Z0E 20F z10 aut 22 z13 zh zis 216 zz 218 z19 222 223 224 225 226 227 228 229 228 22¢ 220 228, 22F 230 231 232 233 235 236 237 238 239 i bit bit bit bit bit bit bit bit Puede eee eee eee eee eee cBM-64-Part One $00 $0L 0 (output) 1 (output) 2 (output) 3 Coutput) 4 Gnput) 5 (output) 6 unused 7 unused $02 $03 304 307 308 $09 508 g0c 30D S0E SOF g10 gil $12 $13 $l4 gis $16 $l7 $18 319 $22 $23, 924 $25 $26 $27 $28 $29 $28 $2¢ $20 $2 $2F $30 $31 $32 $33 $34 $35 $36 $37 $38 $39 36510 data direction register 36510 I/O register O=RAM at $AQ00-SBFFF (BASIC area) O=RAM at $E000-SEFFF (Kernal area) Osaccess CRT shapes at $D000-SDFFF cassette write line cassette sense line cassette motor control jdummy address for offset ;fixed-float vector jhigh byte of same ;separator/terminator/work field }terminator/AND work field jcharacter position for TAB }length BASIC Line/AND-OR ewiteh/# DIM }reference/declaraction flag ;type: FFestring, 0O=numeric ;type: 80=integer, 00=floating point }DATA/eteing/error flag subscript/fn flag/integers: ‘Ominput, $40=get, $98-read 3<=> operator ;CMD file number ;integer value (work) phigh byte of same string descriptor stack index previous string descriptor stack index high byte of same Sbottoa of string descriptor stack jutility pointer area rrays flag product for multiplication jpointer to start of BASIC jhigh byte of same jpointer start of variables shigh byte of same jpointer to start of arrays jhigh byte of same jpointer to end of arrays phigh byte of same $pointer to start of string storage shigh byte of same jutility string pointer shigh byte of same jpointer to limit of memory phigh byte of same jeurrent BASIC line number 003A 0038 003 003D 003E 003F 0040 0041 0042 0043 0044 0045 0046 0047 0048, 0049, 0044 0048 00se 004d 0048, OO4F 0050 0051. 0053 0055 0056 0057 0058 0059 005a 00sB 005¢ 00sD 00SE 00sF 0060 0061. 0062 0064 0065 0066 0067 0068 0069 006A 0068 vec 006D 006z 006F 0070 0071. 0072 0074 0078 108 LL 112 113 114 115 116 257 258 259 258 25B 25 25D 25E 25F 260 261 262 263 264 265 266 267 268 269 Z6A 268 z6¢ 26D 268 26F 270 ZL 272 278 2B Cee eevee eee eee eee eee ey eee $34 $33 $3¢ 3D $3E $3F 340 341, $42 343 344 345 346 347 $48 349 Sha S43 s4c 34D 348 Sar $50 $51 $53 $55 $56 357 $58 $59 $5A $58 $5c 35D $5E 35F 360 $61 $62 $63, 364 965 366 $67 369 368 SOB 36¢ 36D S6E S6F 370 s71 372 87a $7B shigh byte of same sprevious BASIC line number jhigh byte of same spointer to BASIC statement for CONT shigh byte of same jeurrent DATA line number jhigh byte of sane jeurrent DATA address shigh byte of same jtemporary read pointer shigh byte of same jeurrent variable name jsecond byte of same jeurrent variable address jhigh byte of same svariable pointer for FOR/NEXT shigh byte of same jsave area scomparison symbol accumulator + work area accu # 1 - exponent jsaved sign of flp accu 3flp accu # 1 padding 3flp accu # 2 thru Z6E 3sign comparison accu #1 vs accu # 2 jwork pointer/guard bit joutput index jhigh byte of same jeurrent character address shigh byte of same 0054 0073, 0079 0080 0100 0101 0102 0103 0104 O1FE irr 0200 0300 0302 0304 0306 0308 030A 0310 0314 0316 0318 031A o31¢ O31E 0320 0322 0324 0326 0328 0324 032¢ 0328, 0330 0332 033¢ 033¢ 03FC 0400 O7E8 0800 18 19 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141, 142 143 144 145 146 147 148 150 151 152 153 154 155 136 1357 158 159 160 161 162 x0054 $54 3JMP vector for functions 3get next character 3get current character jeheck for numeric character bottom of stack ywork area for flp to string conversion jline number for line in input buffer jhigh byte of same }BASIC input buffer jOperating System vector table X0073 = $73 x0079 = $79 x0080 = $80 0100 = §0100 xO101 = $0101 x0102 = $0102 x0103 = $0103 XO104 = $0104 XOLFE = §O1FE XOLFF = 901FF 0200 = $0200 0300 = $0300 x0302 = $0302 0304 = $0304 ¥0306 = $0306 X0308 = $0308 X030A = $030A x0310 = $0310 wO314 = $0314 WO316 = $0316 WO318 = $0318 WO3LA = $0314 wo3ic = §031¢ WO3LE = §031E W0320 = $0320 WO322 = $0322 wO324 = $0324 W326 = $0326 WO328 =. $0328 WO32A = $032A wo32c = $032C WO32E = © §032E WO330 = $0330 WO332 = $0332 OR $33¢ -DS 192 -DS 4 -DS 1000 -DS 24 +DS $8800 jerror message link, etd value = 9E38B ;BASIC warm start vector, std = $As83 jerunch BASIC tokens, std = $A57C }priat tokens vector, std value = SA7LA jexecute stmt vector, std value = $A7E4 jget arithmetic element, std = SAES6 jUSR JMP vector, std value = $B248 31RQ vector, std value = §EA31 FBRK vector, std value = $FE66 NMI vector, std value = $FE47 JOPEN vector, std value = $734A JCLOSE vector, std value = $F291 jset dnput vector, std value = $F20E jset output vector, std value = $F250 jrestore 1/0 vector, std value = $7333 SINPUT vector, std value = $P157 JOUTPUT vector, std value = $F1CA jtest Stop Key vector, std value = $F6ED jGET vector, std value = $F13E jelose files and channels, std = $F32F junused vector, std value = $FES6 (BRK) ‘Load RAM vector, std value = $F4A5 jSave RAM vector, std value = $F5ED seassette buffer svideo RAM sprite pointers jstandard BASIC text area FEA #000 £043 2097 E10c ELIZ ELIS EE #124 E12A E156 E165 £168 ELBE B1¢7 E264 E268 E284 E30E E37B 386 394 FF9O FFB7 FFCC FEDB FFDE, FFEL FFE? FFFO 164 165 166 167 168 169 170 7. 172 173 174 175 176 77 178 179 180 181 182 183 185 186 187 188 189 190 191, 192 193 XOFEA E000 XE043 WEO97 Xe10¢ XELIZ XELIB XELLE E124 WEL2A WE156 WEL65 WE168 WELBE WELC7 WE264 WE26B WE2B4 WE30E WE37B XE386 WE394 XFF9O XFFB7 XPFCC XFFDB XFFDE XFFEL XPFE? XFFFO 99FEA $2000 $8043 $2097 SELOC $E112 ELIS SELIE $B1246 SE12A $E156 E165 $E168 SELBE SElC7 $8264 $E26B SE2B4 $E30E $E37B 98386 $E394 $FF90 $FFB7 SFFCC SFFDB SFFDE SFFEL SFE SFFFO dress to access function jump table jcontinuation of RND routine jcompute odd degrees for SIN and ATN iRND command joutput a character jinput a character sset output device jet input device sget a character from current device 3SYS command 3SAVE command VERIFY command sLOAD command 30PEN command 3CLOSE command 30S command 3SIN command 3TAN command 3ATN command jWarm Start entry sprint message READY 3RESET routine jeontrol kernal messages jread 1/0 status word irestore 1/0 devices to default jset real time clock sread real time clock scheck Stop key Close all channels and files jRead/Set XY cursor position

You might also like