Home Page


BASIC Handbook

Basic2 Commands
Disk Drives
PEEK's and POKE's
RAM Memory Map
ROM Memory Map
Screen Display
Sprite
ASCII and CHR$ Codes

eMail
email5-commodorecheetah.co.uk

Note: You will need to replace the '-' with the @ symbol.
This is to minimize spam.

My BASIC Quick Reference Guide

ROM Memory Map

NOTE: To use :- SYS xxxxx
Data types in headers (for reassembler):

DATA - Misc data
TEXT - String terminated with 00
WORD - Vectors in LO/HI byte pairs
CHIP - I/O Area
EMPTY - ROM containing FF's or AA's

BASIC interpreter ROM ($A000 - $BFFF)
a000 40960    -        Restart Vectors WORD
a00c  40972    stmdsp   BASIC Command Vectors WORD
a052 41042    fundsp   BASIC Function Vectors WORD
a080 41088  optab    BASIC Operator Vectors  WORD
a09e 41118    reslst   BASIC Command Keyword Table  DATA
a129  41257    msclst   BASIC Misc. Keyword Table DATA
a140     41280    oplist   BASIC Operator Keyword Table DATA
a14d     41293    funlst   BASIC Function Keyword Table DATA
a19e     41374    errtab   Error Message Table DATA
a328     41768    errptr   Error Message Pointers WORD
a364     41828    okk      Misc. Messages TEXT
a38a     41866    fndfor   Find FOR/GOSUB Entry on Stack
a3b8     41912    bltu     Open Space in Memory
a3fb  41979    getstk   Check Stack Depth
a408  41992    reason   Check Memory Overlap
a435  42037    omerr    Output ?OUT OF MEMORY Error
a437  42039    error    Error Routine
a469  42089    errfin   Break Entry
a474  42100    ready    Restart BASIC
a480  42112    main     Input & Identify BASIC Line
a49c     42140    main1    Get Line Number & Tokenise Text
a4a2     42146    inslin   Insert BASIC Text
a533     42291    linkprg  Rechain Lines
a560     42336    inlin    Input Line Into Buffer
a579     42361    crunch   Tokenise Input Buffer
a613     42515    fndlin   Search for Line Number
a642     42562    scrtch  Perform [new]
a65e     42590    clear    Perform [clr]
a68e     42638    stxpt    Reset TXTPTR
a69c     42652   list     Perform [list]
a717 42775 qplop Handle LIST Character
a742  42818 for Perform [for]
a7ae 42926 newstt BASIC Warm Start
a7c4   42948 ckeol Check End of Program
a7e1 42977 gone Prepare to execute statement
a7ed 42989 gone3  Perform BASIC Keyword
a81d 43037 restor  Perform [restore]
a82c 43052 stop  Perform [stop], [end], break
a857 43095 cont  Perform [cont]
a871 43121 run  Perform [run]
a883  43139 gosub  Perform [gosub]
a8a0 43168 goto  Perform [goto]
a8d2 43218  return  Perform [return]
a8f8 43256  data   Perform [data]
a906 43270  datan  Search for Next Statement / Line
a928 43304  if  Perform [if]
a93b  43323  rem  Perform [rem]
a94b  43339 ongoto  Perform [on]
a96b 43371 linget   Fetch linnum From BASIC
a9a5 43429 let  Perform [let]
a9c4  43460 putint  Assign Integer
a9d6  43478 ptflpt  Assign Floating Point
a9d9  43481 putstr  Assign String
a9e3   43491 puttim  Assign TI$
aa2c  43564 getspt  Add Digit to FAC#1
aa80 43648 printn Perform [print]#
aa86 43654 cmd  Perform [cmd]
aa9a 43674 strdon Print String From Memory
aaa0 43680 print Perform [print]
aab8  43704 varop Output Variable
aad7   43735 crdo Output CR/LF
aae8  43752 comprt  Handle comma, TAB(, SPC(
ab1e 43806 strout Output String
ab3b 43835 outspc Output Format Character
ab4d  43853 doagin Handle Bad Data
ab7b 43899 get Perform [get]
aba5 43941 inputn Perform [input#]
abbf 43967 input Perform [input]
abea  44010 bufful Read Input Buffer
abf9 44025 qinlin Do Input Prompt
ac06 44038 read  Perform [read]
ac35 44085 rdget  General Purpose Read Routine
acfc 44284 exint Input Error Messages TEXT
ad1e 44318 next Perform [next]
ad61 44385 donext Check Valid Loop
ad8a 44426 frmnum Confirm Result
ad9e 44446 frmevl  Evaluate Expression in Text
ae83 44675 eval  Evaluate Single Term
aea8 44712  pival Constant - pi  DATA
aead 44717  qdot  Continue Expression
aef1 44785  parchk  Expression in Brackets
aef7 44791 chkcls Confirm Character
aef7 44791 -  -test ')'-
aefa 44794 - -test '('-
aefd 44797   -  -test comma-
af08 44808 synerr Output ?SYNTAX Error
af0d 44813  domin Set up NOT Function
af14  44820 rsvvar Identify Reserved Variable
af28 44840 isvar Search for Variable
af48 44872 tisasc  Convert TI to ASCII String
afa7 44967 isfun  Identify Function Type
afb1 44977  strfun Evaluate String Function
afd1 45009  numfun Evaluate Numeric Function
afe6 45030  orop  Perform [or], [and]
b016  45078 dorel Perform <, =, >
b01b 45083 numrel Numeric Comparison
b02e  45102  strrel String Comparison
b07e  45182 dim Perform [dim]
b08b 45195 ptrget Identify Variable
b0e7  45287  ordvar Locate Ordinary Variable
b11d  45341 notfns Create New Variable
b128 45352 notevl Create Variable
b194  45460 aryget Allocate Array Pointer Space
b1a5 45477  n32768 Constant 32768 in Flpt DATA
b1aa 45482 facinx FAC#1 to Integer in (AC/YR)
b1b2  45490 intidx Evaluate Text for Integer
b1bf  45503  ayint FAC#1 to Positive Integer
b1d1 45521 isary Get Array Parameters
b218 45592  fndary Find Array
b245 45637  bserr  ?BAD SUBSCRIPT/?ILLEGAL QUANTITY
b261 45665 notfdd Create Array
b30e  45838 inlpn2 Locate Element in Array
b34c 45900   umult Number of Bytes in Subscript
b37d  45949 fre Perform [fre]
b391 45969 givayf  Convert Integer in (AC/YR) to Flpt
b39e  45982 pos Perform [pos]
b3a6 45990  errdir Confirm Program Mode
b3e1 46049  getfnm Check Syntax of FN
b3f4  46068 fndoer Perform [fn]
b465 46181  strd  Perform [str$]
b487 46215 strlit Set Up String
b4d5 46293  putnw1 Save String Descriptor
b4f4  46324 getspa Allocate Space for String
b526 46374  garbag Garbage Collection
b5bd  46525 dvars Search for Next String
b606  46598 grbpas Collect a String
b63d 46653  cat Concatenate Two Strings
b67a  46714 movins Store String in High RAM
b6a3 46755 frestr  Perform String Housekeeping
b6db 46811 frefac Clean Descriptor Stack
b6ec  46828 chrd Perform [chr$]
b700 46848 leftd Perform [left$]
b72c 46892  rightd Perform [right$]
b737 46903 midd Perform [mid$]
b761 46945 pream Pull sTring Parameters
b77c 46972  len Perform [len]
b782 46978 len1 Exit String Mode
b78b 46987 asc Perform [asc]
b79b 47003 gtbytc Evaluate Text to 1 Byte in XR
b7ad 47021 val  Perform [val]
b7b5 47029 strval Convert ASCII String to Flpt
b7eb 47083 getnum Get parameters for POKE/WAIT
b7f7 47095  getadr Convert FAC#1 to Integer in LINNUM
b80d 47117 peek  Perform [peek]
b824 47140 poke  Perform [poke]
b82d 47149 wait  Perform [wait]
b849 47177  faddh  Add 0.5 to FAC#1
b850 47184 fsub Perform Subtraction
b862 47202 fadd5 Normalise Addition
b867 47207 fadd  Perform Addition
b947 47431 negfac 2's Complement FAC#1
b97e  47486  overr  Output ?OVERFLOW Error
b983  47491 mulshf  Multiply by Zero Byte
b9bc 47548 fone   Table of Flpt Constants  DATA
b9ea 47594  log Perform [log]
ba28  47656 fmult  Perform Multiply
ba59 47705 mulply Multiply by a Byte
ba8c 47756 conupk Load FAC#2 From Memory
bab7 47799 muldiv Test Both Accumulators
bad4  47828 mldvex  Overflow / Underflow
bae2 47842  mul10 Multiply FAC#1 by 10
baf9 47865  tenc  Constant 10 in Flpt  DATA
bafe 47870  div10  Divide FAC#1 by 10
bb07  47879  fdiv  Divide FAC#2 by Flpt at (AC/YR)
bb0f   47887 fdivt Divide FAC#2 by FAC#1
bba2 48034 movfm Load FAC#1 From Memory
bbc7  48071  mov2f Store FAC#1 in Memory
bbfc 48124 movfa Copy FAC#2 into FAC#1
bc0c  48140 movaf Copy FAC#1 into FAC#2
bc1b  48155 round Round FAC#1
bc2b 48171 sign Check Sign of FAC#1
bc39 48185 sgn  Perform [sgn]
bc58  48216 abs  Perform [abs]
bc5b 48219 fcomp Compare FAC#1 With Memory
bc9b  48283 qint   Convert FAC#1 to Integer
bccc  48332 int  Perform [int]
bcf3 48371  fin Convert ASCII String to a Number in FAC#1
bdb3 48563 n0999 String Conversion Constants    DATA
bdc2  48578  inprt  Output 'IN' and Line Number
bddd  48605  fout Convert FAC#1 to ASCII String
be68 48744 foutim Convert TI to String
bf11 48913 fhalf  Table of Constants  DATA
bf71 49009 sqr  Perform [sqr]
bf7b 49019 fpwrt  Perform power ($)
bfb4 49076 negop Negate FAC#1
bfbf 49087 logeb2  Table of Constants  DATA
bfed  49133 exp  Perform [exp]

 

C64 Kernal ROM
e000  57344 (exp continues) EXP continued From BASIC ROM
e043 57411 polyx Series Evaluation
e08d  57485 rmulc Constants for RND DATA
e097 57495 rnd  Perform [rnd]
e0f9 57593 bioerr Handle I/O Error in BASIC
e10c 57612 bchout Output Character
e112 57618 bchin Input Character
e118  57624 bckout  Set Up For Output
e11e   57630  bckin Set Up For Input
e124  57636  bgetin Get One Character
e12a 57642 sys Perform [sys]
e156 57686 savet Perform [save]
e165 57701 verfyt Perform [verify / load]
e1be 57790 opent Perform [open]
e1c7 57799 closet Perform [close]
e1d4 57812 slpara Get Parameters For LOAD/SAVE
e200 57856  combyt Get Next One Byte Parameter
e206 57862 deflt Check Default Parameters
e20e 57870 cmmerr Check For Comma
e219 57881 ocpara Get Parameters For OPEN/CLOSE
e264 57956 cos  Perform [cos]
e26b 57963 sin Perform [sin]
e2b4 58036 tan Perform [tan]
e2e0 58080 pi2 Table of Trig Constants DATA
;e2e0 1.570796327     pi/2
;e2e5 6.28318531      pi*2
;e2ea 0.25
;e2ef  #05     (counter)
;e2f0 -14.3813907
;e2f5 42.0077971
;e2fa -76.7041703
;e2ff 81.6052237
;e304 -41.3417021
;e309 6.28318531
e30e 58126 atn Perform [atn]
e33e  58174 atncon Table of ATN Constants DATA
;e33e #0b     (counter)
;e3ef  -0.000684793912
;e344 0.00485094216
;e349  -0.161117018
;e34e 0.034209638
;e353 -0.0542791328
;e358 0.0724571965
;e35d -0.0898023954
;e362 0.110932413
;e367 -0.142839808
;e36c 0.19999912
;e371 -0.333333316
;e376 1.00
e37b 58235 bassft BASIC Warm Start [RUNSTOP-RESTORE]
e394 58260  init BASIC Cold Start
e3a2 58274 initat CHRGET For Zero-page
e3ba 58298 rndsed RND Seed For zero-page DATA
;e3b2 0.811635157
e3bf  58303 initcz Initialize BASIC RAM
e422 58402 initms Output Power-Up Message
e447 58439 bvtrs Table of BASIC Vectors (for 0300) WORD
e453 58451 initv Initialize Vectors
e45f  58463 words Power-Up Message DATA
e4ad 58541 -  Patch for BASIC Call to CHKOUT
e4b7 58551 - Unused Bytes For Future Patches EMPTY
e4da 58586 - Reset Character Colour
e4e0 58592 - Pause After Finding Tape File
e4ec 58604 - RS-232 Timing Table -- PAL DATA
e500 58624 iobase Get I/O Address
e505 58629 screen Get Screen Size
e50a 58634 plot Put / Get Row And Column
e518  58648 cint1 Initialize I/O
e544  58692 - Clear Screen
e566 58726 - Home Cursor
e56c  58732 - Set Screen Pointers
e59a 58778 - Set I/O Defaults (Unused Entry)
e5a0 58784 - Set I/O Defaults
e5b4 58804 lp2 Get Character From Keyboard Buffer
e5ca 58826 -  Input From Keyboard
e632  58930 - Input From Screen or Keyboard
e684 59012 - Quotes Test
e691 59025 - Set Up Screen Print
e6b6 59062 - Advance Cursor
e6ed 59117 - Retreat Cursor
e701  59137 -  Back on to Previous Line
e716 59158 - Output to Screen
e72a 59178 - -unshifted characters-
e7d4 59348 - -shifted characters-
e87c 59516 - Go to Next Line
e891 59537 - Output 
e8a1 59553 - Check Line Decrement
e8b3 59571 - Check Line Increment
e8cb 59595 - Set Colour Code
e8da 59610 - Colour Code Table
e8ea 59626 - Scroll Screen
e965 59749 - Open A Space On The Screen
e9c8 59848 - Move A Screen Line
e9e0 59872 - Syncronise Colour Transfer
e9f0 59888  - Set Start of Line
e9ff  59903 -  Clear Screen Line
ea13 59923  -  Print To Screen
ea24  59940 -  Syncronise Colour Pointer
ea31 59953 -  Main IRQ Entry Point
ea87   60039 scnkey Scan Keyboard
eadd  60125 -  Process Key Image
eb79 60281 - Pointers to Keyboard decoding tables WORD
eb81 60289 - Keyboard 1 -- unshifted DATA
ebc2  60354 - Keyboard 2 -- Shifted DATA
ec03  60419 - Keyboard 3 -- Commodore DATA
ec44 60484 - Graphics/Text Control
ec78  60536 - Keyboard 4 -- Control DATA
ecb9 60601 - Video Chip Setup Table DATA
ece7 60647 - Shift-Run Equivalent
ecf0  60656 - Low Byte Screen Line Addresses DATA
ed09 60681 talk Send TALK Command on Serial Bus
ed0c 60684  listn Send LISTEN Command on Serial Bus
ed40 60736 - Send Data On Serial Bus
edad  60845 - Flag Errors
edad 60845 - Status #80 - device not present
edb0 60848 -  Status #03 - write timeout
edb9  60857 second Send LISTEN Secondary Address
edbe 60862 - Clear ATN
edc7 60871 tksa Send TALK Secondary Address
edcc  60876 -  Wait For Clock
eddd 60893 ciout Send Serial Deferred
edef 60911 untlk Send UNTALK / UNLISTEN
ee13 60947 acptr Receive From Serial Bus
ee85 61061 - Serial Clock On
ee8e 61070 -  Serial Clock Off
ee97 61079 - Serial Output 1
eea0 61088 - Serial Output 0
eea9  61097 - Get Serial Data And Clock In
eeb3 61107 - Delay 1 ms
eebb 61115 - RS-232 Send
ef06 61190 -  Send New RS-232 Byte
ef2e 61230 - No DSR' / 'No CTS' Error
ef39 61241 - Disable Timer
ef4a 61258 - Compute Bit Count
ef59 61273 - RS-232 Receive
ef7e 61310 - Set Up To Receive
ef90 61328 - Process RS-232 Byte
efe1 61409 - Submit to RS-232
f00d 61453 -  No DSR (Data Set Ready) Error
f017 61463 - Send to RS-232 Buffer
f04d 61517  - Input From RS-232
f086 61574 - Get From RS-232
f0a4 61604 - Serial Bus Idle
f0bd 61629 -  Table of Kernal I/O Messages  DATA
f12b 61739 - Print Message if Direct
f12f 61743 - Print Message
f13e 61758 getin Get a byte
f157 61783 chrin Input a byte
f199 61849 -  Get From Tape / Serial / RS-232
f1ca 61898 chrout Output One Character
f20e 61966 chkin Set Input Device
f250 62032 chkout Set Output Device
f291 62097 close Close File
f30f 62223 - Find File
f31f  62239 - Set File values
f32f 62255 clall Abort All Files
f333 62259 clrchn Restore Default I/O
f34a 62282 open Open File
f3d5 62421 -  Send Secondary Address
f409 62473 - Open RS-232
f49e 62622 load Load RAM
f4b8 62648 - Load File From Serial Bus
f533 62771 - Load File From Tape
f5af 62927 - Print "SEARCHING"
f5c1 62913 - Print Filename
f5d2 62930 - Print "LOADING / VERIFYING"
f5dd 62941 save Save RAM
f5fa 62970 - Save to Serial Bus
f659 63065 - Save to Tape
f68f 63119 - Print "SAVING"
f69b 63131 udtim Bump Clock
f6dd 63197 rdtim Get Time
f6e4 63204 settim Set Time
f6ed 63213 stop Check STOP Key
f6fb 63227 - Output I/O Error Messages
f6fb 63227 - 'too many files'
f6fe 63230 - 'file open'
f701 63233 -  'file not open'
f704 63236 - 'file not found'
f707 63239 - 'device not present'
f70a 63242 - 'not input file'
f70d 63245 - 'not output file'
f710 63248 - 'missing filename'
f713 63251 - 'illegal device number'
f72d 63277 - Find Any Tape Header
f76a 63338 - Write Tape Header
f7d0 63440 - Get Buffer Address
f7d7 63447 - Set Buffer Stat / End Pointers
f7ea 63466 - Find Specific Tape Header
f80d 63501 - Bump Tape Pointer
f817 63511 - Print "PRESS PLAY ON TAPE"
f82e 63534 - Check Tape Status
f838 63544 - Print "PRESS RECORD..."
f841 63553 - Initiate Tape Read
f864 63588 - Initiate Tape Write
f875 63605 - Common Tape Code
f8d0 63696 - Check Tape Stop
f8e2 63714 - Set Read Timing
f92c 63788 - Read Tape Bits
fa60 64096 - Store Tape Characters
fb8e 64398 - Reset Tape Pointer
fb97 64407 -  New Character Setup
fba6 64422 - Send Tone to Tape
fbc8 64456 - Write Data to Tape
fbcd 64461 - IRQ Entry Point
fc57 64599 - Write Tape Leader
fc93 64659 - Restore Normal IRQ
fcb8 64696 - Set IRQ Vector
fcca 64714 - Kill Tape Motor
fcd1 64721 - Check Read / Write Pointer
fcdb 64731 - Bump Read / Write Pointer
fce2 64738 - Power-Up RESET Entry
fd02 64770 - Check For 8-ROM
fd12 64786 - 8-ROM Mask '80CBM' DATA
fd15 64789 restor Restore Kernal Vectors (at 0314)
fd1a 64794 vector Change Vectors For User
fd30 64816 - Kernal Reset Vectors WORD
fd50 64848 ramtas Initialise System Constants
fd9b 64923 - IRQ Vectors For Tape I/O WORD
fda3 64931 ioinit Initialise I/O
fddd  64989 - Enable Timer
fdf9 65017 setnam Set Filename
fe00 65024 setlfs Set Logical File Parameters
fe07 65031 readst Get I/O Status Word
fe18 65048 setmsg Control OS Messages
fe21 65057 settmo Set IEEE Timeout
fe25 65061 memtop Read / Set Top of Memory
fe34 65076 membot Read / Set Bottom of Memory
fe43 65091 - NMI Transfer Entry
fe66 65126 - Warm Start Basic [BRK]
febc 65212 - Exit Interrupt
fec2 65218 - RS-232 Timing Table - NTSC DATA
fed6 65238 - NMI RS-232 In
ff07 65287 - NMI RS-232 Out
ff43 65347 - Fake IRQ Entry
ff48 65352 - IRQ Entry
ff5b 65371 cint Initialize screen editor
ff80 65408 - Kernal Version Number [03] DATA

 

C64 Kernal Jump Table
ff81 jmp $ff5b cint Init Editor & Video Chips
ff84  jmp $fd23 ioinit Init I/O Devices, Ports & Timers
ff87 jmp $fd50 ramtas Init Ram & Buffers
ff8a jmp $fd15 restor Restore Vectors
ff8d jmp $fd1a vector Change Vectors For User
ff90 jmp $fe18 setmsg Control OS Messages
ff93 jmp $edb9 secnd Send SA After Listen
ff96 jmp $edc7 tksa Send SA After Talk
ff99 jmp $fe25 memtop Set/Read System RAM Top
ff9c jmp $fe34 membot Set/Read System RAM Bottom
ff9f jmp $ea87 scnkey Scan Keyboard
ffa2 jmp $fe21 settmo Set Timeout In IEEE
ffa5 jmp $ee13  acptr Handshake Serial Byte In
ffa8 jmp $eddd ciout Handshake Serial Byte Out
ffab jmp $edef untalk Command Serial Bus UNTALK
ffae jmp $edfe unlsn Command Serial Bus UNLISTEN
ffb1 jmp $ed0c listn Command Serial Bus LISTEN
ffb4 jmp $ed09 talk Command Serial Bus TALK
ffb7 jmp $fe07 readss Read I/O Status Word
ffba jmp $fe00 setlfs Set Logical File Parameters
ffbd jmp $fdf9 setnam Set Filename
ffc0 jmp ($031a) (iopen) Open Vector [f34a]
ffc3 jmp ($031c) (iclose) Close Vector [f291]
ffc6 jmp ($031e) (ichkin) Set Input [f20e]
ffc9 jmp ($0320) (ichkout) Set Output [f250]
ffcc jmp ($0322) (iclrch) Restore I/O Vector [f333]
ffcf  jmp ($0324) (ichrin) Input Vector, chrin [f157]
ffd2 jmp ($0326) (ichrout) Output Vector, chrout [f1ca]
ffd5 jmp $f49e load Load RAM From Device
ffd8 jmp $f5dd save Save RAM To Device
ffdb jmp $f6e4 settim Set Real-Time Clock
ffde jmp $f6dd rdtim Read Real-Time Clock
ffe1 jmp ($0328) (istop) Test-Stop Vector [f6ed]
ffe4 jmp ($032a) (igetin) Get From Keyboad [f13e]
ffe7 jmp ($032c) (iclall) Close All Channels And Files [f32f]
ffea jmp $f69b udtim Increment Real-Time Clock
ffed jmp $e505 screen Return Screen Organization
fff0 jmp $e50a plot Read / Set Cursor X/Y Position
fff3 jmp $e500 iobase Return I/O Base Address
;fff6 Vectors
fff6    [5252]          -
fff8    [5942]          SYSTEM
 
;fffa   Transfer Vectors
fffa    [fe43]          NMI
fffc    [fce2]          RESET
fffe    [ff48]          IRQ

Original source material from Marko Mäkelä (Marko.Makela@HUT.FI)
Doc Version: V1.2 1 Sep 1994


Commodore Cheetah made by Allen Monks, started in the year 2000.