Herwig Siebenhofer
 / Home / C64
C 64

    Memory Map
    Float Map
    ROM Map
    Basic ROM
    Kernal ROM
    Char ROM
    CPU 6510
    VIC 6569
    SID 6581
    CIA 6526
    sonstige Ports

    Schematik 1
    Schematik 2

C 1541  Floppy

    Memory Map
    Rom Listing
    VIA 6522

C 1581  Floppy

    Memory Map
    Rom Listing
    CIA 8520
    WD 1772


    Mouse 1531
    Chip 74xx

C64   ROM Map

Basic ROM  von  A000 – BFFF
A000-A001  Restart Vectors
A00C-A00DBASIC Command Vectors
A052-A053BASIC Function Vectors
A080-A081BASIC Operator Vectors
A09E-A128BASIC Command Keyword Table
A129-A13FBASIC Misc. Keyword Table
A140-A14CBASIC Operator Keyword Table
A14D-A19DBASIC Function Keyword Table
A19E-A327Error Message Table
A328-A329Error Message Pointers
A364-A389Misc. Messages
A38AFind FOR/GOSUB Entry on Stack
A3B8Open Space in Memory
A3FBCheck Stack Depth
A408Check Memory Overlap
A435Output „OUT OF MEMORY” Error
A437Error Routine
A469Break Entry
A474Restart BASIC
A480Input & Identify BASIC Line
A49CGet Line Number & Tokenise Text
A4A2Insert BASIC Text
A533Rechain Lines
A560Input Line Into Buffer
A579Tokenise Input Buffer
A613Search for Line Number
A642Perform 'new'
A65EPerform 'clr'
A68EReset (TXTPTR)
A69CPerform 'list'
A717Handle LIST Character
A742Perform 'for'
A7AEBASIC Warm Start
A7C4Check End of Program
A7E1Prepare to execute statement
A7EDPerform BASIC Keyword
A81DPerform 'restore'
A82CPerform 'stop', 'end', 'break'
A857Perform 'cont'
A871Perform 'run'
A883Perform 'gosub'
A8A0Perform 'goto'
A8D2Perform 'return'
A8F8Perform 'data'
A906Search for Next Statement / Line
A928Perform 'if'
A93BPerform 'rem'
A94BPerform 'on'
A96BFetch linnum From BASIC
A9A5Perform 'let'
A9C4Assign Integer
A9D6Assign Floating Point
A9D9Assign String
A9E3Assign TI$
AA2CAdd Digit to FAC#1
AA80Perform 'print#'
AA86Perform 'cmd'
AA9APrint String From Memory
AAA0Perform 'print'
AAB8Output Variable
AAD7Output CR/LF
AAE8Handle comma, TAB(, SPC(
AB1EOutput String
AB3BOutput Format Character
AB4DHandle Bad Data
AB7BPerform 'get'
ABA5Perform 'input#'
ABBFPerform 'input'
ABEARead Input Buffer
ABF9Do Input Prompt
AC06Perform 'read'
AC35General Purpose Read Routine
ACFC-AD1DInput Error Messages
AD1EPerform 'next'
AD61Check Valid Loop
AD8AConfirm Result
AD9EEvaluate Expression in Text
AE83Evaluate Single Term
AEA8-AEAC  Constant PI
AEADContinue Expression
AEF1Expression in Brackets
AEF7Confirm Character
AEF7test ')'
AEFAtest '('
AEFDtest comma
AF08Output „SYNTAX Error”
AF0DSet up NOT Function
AF14Identify Reserved Variable
AF28Search for Variable
AF48Convert TI to ASCII String
AFA7Identify Function Type
AFB1Evaluate String Function
AFD1Evaluate Numeric Function
AFE6Perform 'or', 'and'
B016Perform <, =, >
B01BNumeric Comparison
B02EString Comparison
B07EPerform 'dim'
B08BIdentify Variable
B0E7Locate Ordinary Variable
B11DCreate New Variable
B128Create Variable
B194Allocate Array Pointer Space
B1A5-B1A9Constant -32768 in Flpt
B1AAFAC#1 to Integer in (AC/YR)
B1B2Evaluate Text for Integer
B1BFFAC#1 to Positive Integer
B1D1Get Array Parameters
B218Find Array
B261Create Array
B30ELocate Element in Array
B34CNumber of Bytes in Subscript
B37DPerform 'fre'
B391Convert Integer in (AC/YR) to Flpt
B39EPerform 'pos'
B3A6Confirm Program Mode
B3E1Check Syntax of FN
B3F4Perform 'fn'
B465Perform 'str$'
B487Set Up String
B4D5Save String Descriptor
B4F4Allocate Space for String
B526Garbage Collection
B5BDSearch for Next String
B606Collect a String
B63DConcatenate Two Strings
B67AStore String in High RAM
B6A3Perform String Housekeeping
B6DBClean Descriptor Stack
B6ECPerform 'chr$'
B700Perform 'left$'
B72CPerform 'right$'
B737Perform 'mid$'
B761Pull sTring Parameters
B77CPerform 'len'
B782Exit String Mode
B78BPerform 'asc'
B79BEvaluate Text to 1 Byte in XR
B7ADPerform 'val'
B7B5Convert ASCII String to Flpt
B7EBGet parameters for POKE/WAIT
B7F7Convert FAC#1 to Integer in LINNUM
B80DPerform 'peek'
B824Perform 'poke'
B82DPerform 'wait'
B849Add 0.5 to FAC#1
B850Perform Subtraction
B862Normalise Addition
B867Perform Addition
B9472's Complement FAC#1
B97EOutput „OVERFLOW Error”
B983Multiply by Zero Byte
B9BC-B9E9Table of Flpt Constants
B9EAPerform 'log'
BA28Perform Multiply
BA59Multiply by a Byte
BA8CLoad FAC#2 From Memory
BAB7Test Both Accumulators
BAD4Overflow / Underflow
BAE2Multiply FAC#1 by 10
BAF9-BAFDConstant 10 in Flpt
BAFEDivide FAC#1 by 10
BB07Divide FAC#2 by Flpt at (AC/YR)
BB0FDivide FAC#2 by FAC#1
BBA2Load FAC#1 From Memory
BBC7Store FAC#1 in Memory
BBFCCopy FAC#2 into FAC#1
BC0CCopy FAC#1 into FAC#2
BC1BRound FAC#1
BC2BCheck Sign of FAC#1
BC39Perform 'sgn'
BC58Perform 'abs'
BC5BCompare FAC#1 With Memory
BC9BConvert FAC#1 to Integer
BCCCPerform 'int'
BCF3Convert ASCII String to a Number in FAC#1
BDB3-BDC1String Conversion Constants
BDC2Output 'IN' and Line Number
BDDDConvert FAC#1 to ASCII String
BE68Convert TI to String
BF11-BF70Table of Constants
BF71Perform 'sqr'
BF7BPerform power ($)
BFB4Negate FAC#1
BFBF-BFECTable of Constants
BFEDPerform 'exp'
Kernal ROM  von  E000 – FFFF
E000EXP continued From BASIC ROM
E043Series Evaluation
E08D-E096Constants for RND
E097Perform 'rnd'
E0F9Handle I/O Error in BASIC
E10COutput Character
E112Input Character
E118Set Up For Output
E11ESet Up For Input
E124Get One Character
E12APerform 'sys'
E156Perform 'save'
E165Perform 'verify'/'load'
E1BEPerform 'open'
E1C7Perform 'close'
E1D4Get Parameters For LOAD/SAVE
E200Get Next One Byte Parameter
E206Check Default Parameters
E20ECheck For Comma
E219Get Parameters For OPEN/CLOSE
E264Perform 'cos'
E26BPerform 'sin'
E2B4Perform 'tan'
E2E0-E2E4Float: 1.570796327 (pi/2)
E2E5-E2E9Float: 6.28318531 (pi*2)
E2EA-E2EEFloat: 0.25
E2EF#05 (counter)
E2F0-E2F4Float: -14.3813907
E2F5-E2F9Float: 42.0077971
E2FA-E2FEFloat: -76.7041703
E2FF-E303Float: 81.6052237
E304-E308Float: -41.3417021
E309-E30DFloat: 6.28318531
E30EPerform 'atn'
E33E#0b (counter)
E3EF-E343Float: -0.000684793912
E344-E348Float: 0.00485094216
E349-E34DFloat: -0.0161117018
E34E-E352Float: 0.034209638
E353-E357Float: -0.0542791328
E358-E35CFloat: 0.0724571965
E35D-E361Float: -0.0898023954
E362-E366Float: 0.110932413
E367-E36BFloat: -0.142839808
E36C-E370Float: 0.19999912
E371-E375Float: -0.333333316
E376-E37AFloat: 1.00
E37BBASIC Warm Start [RunStop-Restore]
E394BASIC Cold Start
E3A2CHRGET For Zero-page
E3BA-E3BERND Seed For zero-page
E3BFInitialize BASIC RAM
E422Output Power-Up Message
E447-E452Table of BASIC Vectors (for 0300) WORD
E453Initialize Vectors
E45F-E4ACPower-Up Message
E4ADPatch for BASIC Call to CHKOUT
E4B7-E4D9Unused Bytes For Future Patches
E4DAReset Character Colour
E4E0Pause After Finding Tape File
E4EC-E4FFRS-232 Timing Table – PAL
E500Get I/O Address
E505Get Screen Size
E50Aplot Put / Get Row And Column
E518Initialize I/O
E544Clear Screen
E566Home Cursor
E56CSet Screen Pointers
E59ASet I/O Defaults (Unused Entry)
E5A0Set I/O Defaults
E5B4Get Character From Keyboard Buffer
E5CAInput From Keyboard
E632Input From Screen or Keyboard
E684Quotes Test
E691Set Up Screen Print
E6B6Advance Cursor
E6EDRetreat Cursor
E701Back on to Previous Line
E716Output to Screen
E72Aunshifted characters
E7D4shifted characters
E87CGo to Next Line
E8A1Check Line Decrement
E8B3Check Line Increment
E8CBSet Colour Code
E8DAColour Code Table
E8EAScroll Screen
E965Open A Space On The Screen
E9C8Move A Screen Line
E9E0Syncronise Colour Transfer
E9F0Set Start of Line
E9FFClear Screen Line
EA13Print To Screen
EA24Syncronise Colour Pointer
EA31Main IRQ Entry Point
EA87Scan Keyboard
EADDProcess Key Image
EB79-EB80Pointers to Keyboard decoding tables
EB81-EBC1Keyboard 1 – unshifted
EBC2-EC02Keyboard 2 – Shifted
EC03-EC43Keyboard 3 – Commodore
EC44Graphics/Text Control
EC78-ECB8Keyboard 4 – Control
ECB9-ECE6Video Chip Setup Table
ECE7Shift-Run Equivalent
ECF0-ED08Low Byte Screen Line Addresses
ED09Send TALK Command on Serial Bus
ED0Clistn Send LISTEN Command on Serial Bus
ED40Send Data On Serial Bus
EDADStatus #80 - device not present
EDB0Status #03 - write timeout
EDB9Send LISTEN Secondary Address
EDC7Send TALK Secondary Address
EDCCWait For Clock
EDDDSend Serial Deferred
EE13Receive From Serial Bus
EE85Serial Clock On
EE8ESerial Clock Off
EE97Serial Output 1
EEA0Serial Output 0
EEA9Get Serial Data And Clock In
EEB3Delay 1 ms
EEBBRS-232 Send
EF06Send New RS-232 Byte
EF2e'No DSR' / 'No CTS' Error
EF39Disable Timer
EF4ACompute Bit Count
EF59RS-232 Receive
EF7ESet Up To Receive
EF90Process RS-232 Byte
EFE1Submit to RS-232
F00DNo DSR (Data Set Ready) Error
F017Send to RS-232 Buffer
F04DInput From RS-232
F086Get From RS-232
F0A4Serial Bus Idle
F0BD-F12ATable of Kernal I/O Messages
F12BPrint Message if Direct
F12FPrint Message
F13EGet a byte
F157Input a byte
F199Get From Tape / Serial / RS-232
F1CAOutput One Character
F20ESet Input Device
F250Set Output Device
F291Close File
F30FFind File
F31FSet File values
F32FAbort All Files
F333Restore Default I/O
F34AOpen File
F3D5Send Secondary Address
F409Open RS-232
F49ELoad RAM
F4B8Load File From Serial Bus
F533File From Tape
F5C1Print Filename
F5FASave to Serial Bus
F659Save to Tape
F68FPrint "SAVING"
F69BBump Clock
F6DDGet Time
F6E4Set Time
F6EDCheck STOP Key
F6FBOutput 'too many files'
F6FEOutput 'file open'
F701Output 'file not open'
F704Output 'file not found'
F707Output 'device not present'
F70AOutput 'not input file'
F70DOutput 'not output file'
F710Output 'missing filename'
F713Output 'illegal device number'
F72DFind Any Tape Header
F76AWrite Tape Header
F7D0Get Buffer Address
F7D7Set Buffer Stat / End Pointers
F7EAFind Specific Tape Header
F80DBump Tape Pointer
F82ECheck Tape Status
F838Print "PRESS RECORD..."
F841Initiate Tape Read
F864Initiate Tape Write
F875Common Tape Code
F8D0Check Tape Stop
F8E2Set Read Timing
F92CRead Tape Bits
FA60Store Tape Characters
FB8eReset Tape Pointer
FB97New Character Setup
FBA6Send Tone to Tape
FBC8Write Data to Tape
FBCDIRQ Entry Point
FC57Write Tape Leader
FC93Restore Normal IRQ
FCB8Set IRQ Vector
FCCAKill Tape Motor
FCD1Check Read / Write Pointer
FCDBBump Read / Write Pointer
FCE2Power-Up RESET Entry
FD02Check For 8-ROM
FD128-ROM Mask '80CBM' DATA
FD15restor Restore Kernal Vectors (at 0314)
FD1AChange Vectors For User
FD30-FD4FKernal Reset Vectors WORD
FD50Initialise System Constants
FD9B-FDA2IRQ Vectors For Tape I/O WORD
FDA3Initialise I/O
FDDDEnable Timer
FDF9Set Filename
FE00Set Logical File Parameters
FE07Get I/O Status Word
FE18Control OS Messages
FE21Set IEEE Timeout
FE25Read / Set Top of Memory
FE34Read / Set Bottom of Memory
FE43Transfer Entry
FE66Warm Start Basic [BRK]
FEBCExit Interrupt
FEC2-FED5RS-232 Timing Table - NTSC
FF07NMI RS-232 Out
FF43Fake IRQ Entry
FF48IRQ Entry ff5b 65371 cint Initialize screen editor
FF80Kernal Version Number [03]
FF81JMP $FF5B   Init Editor & Video Chips
FF84JMP $FD23   Init I/O Devices, Ports & Timers
FF87JMP $FD50   Init Ram & Buffers
FF8AJMP $FD15   Restore Vectors
FF8DJMP $FD1A   Change Vectors For User
FF90JMP $FE18   Control OS Messages
FF93JMP $EDB9   Send SA After Listen
FF96JMP $EDC7   Send SA After Talk
FF99JMP $FE25   Set/Read System RAM Top
FF9CJMP $FE34   Set/Read System RAM Bottom
FF9FJMP $EA87   Scan Keyboard
FFA2JMP $FE21   Set Timeout In IEEE
FFA5JMP $EE13   Handshake Serial Byte In
FFA8JMP $eDDD   Handshake Serial Byte Out
FFAbJMP $EDEF   Command Serial Bus UNTALK
FFB1JMP $ED0C   Command Serial Bus LISTEN
FFB4JMP $ED09   Command Serial Bus TALK
FFB7JMP $FE07   Read I/O Status Word
FFBAJMP $FE00   Set Logical File Parameters
FFBDJMP $FDF9   Set Filename
FFC0JMP ($031A)   Open Vector [f34a]
FFC3JMP ($031C)   Close Vector [f291]
FFC6JMP ($031E)   Set Input [f20e]
FFC9JMP ($0320)   Set Output [f250]
FFCCJMP ($0322)   Restore I/O Vector [f333]
FFCFJMP ($0324)   Input Vector, chrin [f157]
FFD2JMP ($0326)   Output Vector, chrout [f1ca]
FFD5JMP $F49E   Load RAM From Device
FFD8JMP $F5DD   Save RAM To Device
FFDbJMP $F6E4   Set Real-Time Clock
FFDEJMP $F6DD   Read Real-Time Clock
FFE1JMP ($0328)   Test-Stop Vector [f6ed]
FFE4JMP ($032A)   Get From Keyboad [f13e]
FFE7JMP ($032C)   Close All Channels And Files [f32f]
FFEAJMP $F69B   Increment Real-Time Clock
FFEDJMP $E505   Return Screen Organization
FFF0JMP $E50A   Read / Set Cursor X/Y Position
FFF3JMP $E500   Return I/O Base Address