Från commodore64.se - Datorernas folkvagn
Hoppa till: navigering, sök

Commodore 128 RAM Addresses

; Commodore 128 RAM Memory Map
; V1.2    1 Sep 1994
 C128 Memory Map
 This is as complete as possible compilation of two separate memory maps,
 and a few random sources which naturally do differ from each other.
 C128 RAM
All Banks
0000  I/O direction register
0001  I/O port, similar to C64
0002  Bank Number, Jump to SYS Address
0003-0004 SYS address, MLM register PC
0005-0009 SYS and MLM register save (SR, A, X, Y, SP)
000a  Scan-quotes flag
000b  TAB column save
000c  0 = LOAD, 1 = VERIFY
000d  Input buffer pointer / number of subscripts
000e  default DIM flag
000f  Type: FF = string, 00 = numeric
0010  Type: 80 = integer, 00 = floating point
0011  DATA scan / LIST quote / memory flag
0012  Subscript / FNxx flag
0013  0 = INPUT, $40 = GET, $98 = READ
0014  ATN sign / Comparison evaluation flag
0015  Current I/O prompt flag
0016-0017 Integer value
0018  Pointer: temporary string stack
0019-0023 Stack for temporary strings
0024-0027 Utility pointer area
0028-002c Product area for multiplication
002d-002e Pointer: Start-of-BASIC (bank 0)
002f-0030 Pointer: Start-of-variables (bank 1)
0031-0032 Pointer: Start-of-arrays
0033-0034 Pointer: End-of-arrays
0035-0036 Pointer string-storage (moving down)
0037-0038 Utility string pointer
0039-003a Pointer: Limit-of-memory (bank 1)
003b-003c Current BASIC line number
003d-003e Textpointer: BASIC work point (chrget)
003f-0040 Utility Pointer
0041-0042 Current DATA line number
0043-0044 Current DATA address
0045-0046 Input vector
0047-0048 Current variable name
0049-004a Current variable address
004b-004c Variable pointer for FOR/NEXT
004d-004e Y-save, op-save, BASIC pointer save
004f  Comparison symbol accumulator
0050-0055 Miscellaneous work area, pointers, and so on
0056-0058 Jump vector for functions
0059-0062 Miscellaneous numeric work area
0063  Accum #1 exponent
0064-0067 Accum #1 mantissa
0068  Accum #1 sign
0069  Series evaluation constant pointer
006a-006f Accum #2 exponent, and so on
0070  Sign comparison Acc #1 versus #2
0071  Accum #1 lo-order (rounding)
0072-0073 Cassette buffer len / Seris pointer
0074-0075 Auto line number increment
0076  Graphics flag: FF = Graphics allocated
0077  Color source number
0078-0079 Temporary counters
007a-007c DS$ descriptor
007d-007e BASIC pseudo-stack pointer
007f  Flag: 0 = direct mode
0080-0081 DOS, USING work flags
0082  Stack pointer save for errors
0083  Graphic color source
0084  Multicolor 1 (1)
0085  Multicolor 2 (2)
0086  Graphic foreground color (13)
0087-008a Graphic scale factors, X & Y
008b-008f Graphic work values
0090  Status word ST
0091  Keyswitch 1A: STOP and RVS flags
  7 STOP
  6 Q
  5 C=
  4 Space
  3 2
  2 CTRL
  1 <-
  0 1
0092  Timing constant for tape ($80)
0093  Work value, monitor, LOAD / SAVE
  0 = LOAD, 1 = VERIFY
0094  Serial output, deferred character flag
0095  Serial deferred character
0096  Cassette work value
0097  Register save
0098  How many open files
0099  Input device, normally 0
009a  Output CMD device, normally 3
009b-009c Tape parity, output-received flag
009d  I/O messages: 192 = all, 128 = commands, 64 = errors, 0 = nil
009e-009f Tape error pointers
00a0-00a2 Jiffy clock HML
00a3-00a4 Scratch registers. (don't use)
00a5-00a6 I/O work bytes (tape)
00a7-00ab RS-232C Receive, Misc Work Values
00a7  RS-232 Input Bit Storage, Cassette Short Count
00a8  RS-232 Bit Count In, Cassette Read Error
00a9  RS-232 Flag For Start Bit Check, Cassette Reading Zeroes
00aa  RS-232 Byte Buffer, Cassette Read Mode
00ab  RS-232 Parity Storage, Cassette Short Cnt
00ac-00ad Pointer for tape buffer and screen scrolling
00ae-00af Tape end address / End of program
00b0-00b1 Tape timing constants
00b2-00b3 Pointer: Start of tape buffer
00b4-00b6 RS-232 Send, Misc work values
00b4  RS-232 Bit Count
00b5  RS-232 Next Bit To Be Sent
00b6  RS-232 Byte Buffer
00b7  Number of characters in file name
00b8  Current logical file
00b9  Current secondary address
00ba  Current device
00bb-00bc Pointer to file name
00bd  RS-232 TRNS Parity Buffer
00be  Cassette Read Block Count
00bf  Serial Word Buffer
00c0  Cassette Manual/Cntrolled Switch (Updated during IRQ)
00c1-00c2 I/O Start Address
00c3-00c4 Cassette LOAD Temps (2 bytes)
00c5  Tape Read/Write Data
00c6-00c7 BANKS: I/O data, filename
00c8-00c9 RS-232 input buffer addresses  ($0c00)
00ca-00cb RS-232 output buffer addresses ($0d00)
00cc-00cd Keyboard decode pointer (bank 15) ($fa80)
00ce-00cf Print string work pointer
00d0  Number of characters in keyboard buffer
00d1  Number of programmed chars waiting
00d2  Programmed key character index
00d3  Key shift flag:
  0 No shift
  1 Shift
  2 C=
  4 Control
  8 Alt
 15 Caps Lock
00d4  Current key code: 88 = no key
00d5  Previous key code: 88 = no key
00d6  Input from screen / from keyboard
00d7  40 / 80 columns: 0 = 40 column screen
00d8  Graphics mode code
  000 0 Graphic 0
  001 1  1
  011 2  2
  101 3  3
  111 4  4
00d9  Character base: 0 = ROM, 4 = RAM
00da-00df Misc work area
00e0-00e1 Pointer to screen line / cursor
00e2-00e3 Color line pointer
00e4  Current screen bottom margin
00e5  Current screen top margin
00e6  Current screen left margin
00e7  Current screen right margin
00e8-00e9 Input cursor log (row, column)
00ea  End-of-line for input pointer
00eb  Row where cursor lives
00ec  Position of cursor on screen line
00ed  Maximum screen lines (24)
00ee  Maximum screen columns (39)
00ef  Current I/O character
00f0  Previous character printed
00f1  Character color
00f2  Temporary color save
00f3  Screen reverse flag
00f4  0 = direct cursor, else programmed
00f5  Number of INSERTs outstanding
00f6  255 = Auto Insert enabled
00f7  Text mode lockout (SHFT-C=): 0 = enabled, 128 = disabled
00f8  Scrolling: 0 = enabled, 128 = disabled
00f9  Bell (CTRL-G):  0= enable, 128 = disable
00fa-00fe Not used
00ff  Basic Scratch
0100-01ff Processor Stack Area
0100-013e Tape error log
0100-0124 DOS work area
0125-0138 PRINT / USING work area
0200-03ff Vectors, buffers, Kernal RAM
0200-02a1 BASIC input buffer
  512-673 BASIC & Monitor Input Buffer (161 bytes)
02a2-02ae 674-686 Kernal RAM: 
02a2-02ae Bank Peek Subroutine
02af-02bd Bank Poke Subroutine
02be-02cc Bank Compare Subroutine
02cd-02e2 JSR to Another Bank
02e3-02fb JMP to Another Bank
02fc-02fd Function Execute Hook [4c78]
0300-0301 Error Message Link [4D3F]
0302-0303 BASIC Warm Start Link [4DC6]
0304-0305 Crunch BASIC Tokens Link [430D]
0306-0307 Print Tokens Link [5151]
0308-0309 Start New BASIC Code Link [4AA2]
030a-030b Get Arithmetic Element Link [78DA]
030c-030d Crunch FE Hook [4321]
030e-030f List FE Hook [51CD]
0310-0311 Execute FE Hook [4BA9]
0312-0313 Unused
0314-0315 IRQ Vector [FA65]
0316-0317 Break Interrupt Vector [B003]
0318-0319 NMI Interrupt Vector [FA40]
031a-031b OPEN Vector [EFBD]
031c-031d CLOSE Vector [F188]
031e-031f Set Input Vector [F106]
0320-0321 Set Output Vector [F14C]
0322-0323 Restore I/O Vector [F226]
0324-0325 Input Vector [EF06]
0326-0327 Output Vector [EF79]
0328-0329 Test STOP Key [F66E]
032a-03ab GET Vector [EEEB]
032c-032d Abort I/O Vector [F222]
032e-032f Machine Lang Monitor Link [B006]
0330-0331 LOAD Link [F26C]
0332-0333 SAVE Link [F54E]
0334-0335 Print Control Code Link [C7B9]
0336-0337 Print High ASCII Code Link [C805]
0338-0339 Print ESC Sequence Link [C9C1]
033a-033b Keyscan Link [C5E1]
033c-033d Store Key [C6AD]
033e-033f Pointer to KBD Decoding Table: Unshifted [FA80 / FD29]
0340-0341 Pointer to KBD Decoding Table: Shifted   [FAD9 / FD82]
0342-0343 Pointer to KBD Decoding Table: Commodore [FB32 / FDDB]
0344-0345 Pointer to KBD Decoding Table: Control   [FB8B / FE34]  1)
0346-0347 Pointer to KBD Decoding Table: Alt       [FA80 / FD29]
0348-0349 Pointer to KBD Decoding Table: Ascii/DIN [FB4E / FD29]
   1) The value FE34 is used in German version, it doesn't change in others.
034a-0353 IRQ Keyboard Buffer (10 Bytes)  FF = No key
0354-035d Bitmap Of TAB Stops (10 Bytes)
035e-0361 Bitmap Of Line Wraps
0362-036b Logical File Number Table
036c-0375 Device Number Table
0376-037f Secondary Addresse Table
0380-039e CHRGET Subroutine
0386  CHRGOT Entry
039f-03aa Fetch From RAM Bank 0
03ab-03b6 Fetch From RAM Bank 1
03b7-03bf Index1 Indirect Fetch From RAM Bank 1
03c0-03c8 Index2 Indirect Fetch From RAM Bank 0
03c9-03d1 Txtptr Fetch From RAM Bank 0
03d2-03d4 Numeric Constant For BASIC
03d5  Current Bank For SYS, POKE, PEEK
03d6-03d9 INSTR Work Values
03da  Bank Pointer For String/Number CONVERT RTN
03db-03dd Sprite: Work bytes for SSHAPE
03df  FAC#1 Overflow
03e0-03e1 Sprite: Work bytes for SPRSAV
03e2  Graphic Foreground/ Background Color Nybbles
03e3  Graphic Foreground/ Multicolor 1 Color Nybbles
03f0-03f6 DMA Link Code
ff00  MMU Configuration Register
ff01  MMU LCR: Bank 0
ff02  MMU LCR: Bank 1
ff03  MMU LCR: Bank 14
ff04  MMU LCR: Bank 14 Over RAM 1
Page Four & Higher Declarations (Beginning Of Bankable RAM)
Bank 0
0400-07e7 VIC 40-Column Text Screen
07e8-07ff Sprite Identity Pointers For Text Mode
0800-09ff BASIC Pseudo Stack (gosub and loop addresses and commands)
0a0c  CIA 1 Interrupt Log
0a0d  CIA 1 Timer Enabled
0a0f-0a17 RS-232 Work Values
0a18  RS-232 Receive Pointer
0a19  RS-232 Input Pointer
0a1a  RS-232 Transmit Pointer
0a1b  RS-232 Send Pointer
0a1d-0a1f Sleep Countdown, FFFF = disable
0a20  Keyboard Buffer Size
0a21  Screen Freeze Flag
0a22  Key Repeat: 128 = all, 64 = none
0a23  Key Repeat Timing
0a24  Key Repeat Pause
0a25  Graphics / Text Toggle Latch
0a26  40-Col Cursor Mode
0a27-0a2a 40-Col Blink Values
0a2b  80-Col Cursor Mode
0a2c  40-Col Video $D018 Image
0a2d
0a2e-0a2f 80-Col Pages-Screen, Color
0a40-0a5a 40/80 Pointer Swap (to E0-FA)
0a60-0a6d 40/80 Data Swap (0354-0361)
0ac0  PAT Counter
0ac1-0ac4 ROM Physical Address Table
0b00-0bbf Cassette Buffer
0bc0-0bff
0c00-0dff RS-232 Input, Output Buffers
0e00-0fff System Sprites (56-63)
1000-1009 Programmed Key Lenghts
100a-10ff Programmed Key Definitions
1100-1130 DOS Command Staging Area
1131-116e Graphics Work Area
116f  Trace Mode: FF = on
1170-1173 Renumbering Pointers
1174-1177 Directory Work Pointers
1178-1197 Graphics Index
117a-117b Float-fixed Vector [849F]
117c-117d Fixed-float Vector [793C]
117e-11d5 Sprite Motion Tables (8 x 11 bytes)
11d6-11e5 Sprite X/Y Positions
11e6  Sprite X-High Positions
11e7-11e8 Sprite Bumb Masks (sprite - backgnd)
11e9-11ea Light Pen Values, X and Y
11eb  CHRGEN ROM Page, Text Mode [D8]
11ec  CHRGEN ROM Page, Graphics Mode [D0]
11ed  Secondary Address For RECORD
11ee-11ff Unused
1204-1207 PU Characters (,.$)
120b-120c TRAP Address, FFFF = none
1210-1211 End of Basic, Bank 0
1212-1213 Basic Program Limit [FF00]
1214-1217 DO Work Pointers
1218-121a USR Program Jump [7D28]
121b-121f RND Seed Value
1222  Sound Tempo
122f  Music Sequencer (Envelope)
1234-1237 Note Image
1239-123e Current Envelope Pattern
123f-1270 Envelope Tables
123f-1248 AD(SR) Pattern
1249-1252 (AD)SR Pattern
1253-125c Waveform Pattern
125d-1266 Pulse Width Lo Pattern
1267-1270 Pulse Width Hi Pattern
1271-1274 Note: xx, xx, volume
1275  Previous Volume Image
1276-1278 Collision IRQ Task Table
1279-127e Collision IRQ Address Tables
127f  Collision Mask
1280  Collision Work Value
12b1  PEN Work Value
12ff  ?
1300-17ff Unused
1800-1bff Reserved for Key Functions
1c00-fbff BASIC RAM Memory (Text)
1c00-1ff7 Video Color Matrix For Graphics Mode
1ff8-1fff Sprite Identity Pointers For Graphics Mode
2000-3fff Screen Memory For Graphics Mode
4000-fbff BASIC RAM Memory (with graphics enabled)
Bank 1
0400-fbff BASIC Variables, Arrays, And Strings
Bank 14
The same as Bank 15, except:
d000-dfff Character Generator ROM
Bank 15
4000-cfff BASIC ROM
d000-d030 VIC, 40 Col Video Chip 8564 (NTSC) or 8566 (PAL)
d400-d41c SID Sound Chip 6581
d500-d50b MMU, Memory Management Unit 8722
d600-d601 VDC, 80 Col Video Controller 8563
d800-d8e7 Color Nybbles For VIC Text Screen
dc00-dc0f CIA 1 (IRQ), 6526
dd00-dd0f CIA 2 (NMI), 6526
df00-df0a DMA Slot
e000-ffff KERNAL ROM
ff00-ff04 MMU
ff05-ffff Transfer, Jump Table
*****
502 COMMODORE 128
This chapter provides the memory maps for both C128 and C64 modes. A memory
map tells you exactly how memory is laid out internally in both RAM and ROM.
It tells you exactly what resides in each memory location. The memory map
directs you in finding address vectors for routines and entry points and provi-
des information about the general layout of the computer. The memory map is
probably the most vital programming tool.
Refer to the memory map whenever you need directions throughout the memory of 
your Commodore 128. Addresses listed with more than one address label are used
for more than one purpose. To BASIC, the variable has one purpose; to the Mac-
hine Language Monitor, it may have another.
The conventions used for the memory maps are as follows:
Column 1 Column 2 Column3  Column 4
MEMORY
ADDRESS  HEXADECIMAL DECIMAL
LABEL  ADDRESS  ADDRESS  DESCRIPTION
See Appendix K for the Z80 memory map for CP/M on the Commodore 128.
 C128 MEMORY MAP
MEMORY ADDRESS   ADDRESS
LABEL  HEX DEC DESCRIPTION
D6510  0000 0 6510 Data Direction Register
R6S10  0001 1 6510 Data Register
BANK  0002 2 Token 'SEARCH' looks for, or Bank #
PC_HI  0003 3 Address for BASIC SYS command or MONITOR and
   LONG CALL/JUMP Routines
PC_LO  0004 4 Address
S_REG  0005 5 STATUS REG Temp
A_REG  0006 6 .A REG Temp
X_REG  0007 7 .X REG Temp
Y_REG  0008 8 .Y REG Temp
STKPTR  0009 9 Stack Pointer Temp
 BASIC ZERO PAGE STORAGE
INTEGR  0009 9
CHARAC    Search Character
ENDCHR  000A 10 Flag: Scan For Quote at End Of String
TRMPOS  000B 11 Screen Column from Last Tab
VERCIC  000C 12 Flag: 0 = LOAD, 1 = VERIFY
COUNT  000D 13 Input Buf.ptr / # of Subscripts
DIMFLG  000E 14 Flag: Default Array Dimension
VALTYP  000F 15 DATA Type: $FF=String, $00 = Numeric
INTFLG  0010 16 DATA Type: $00=Float.Pt, $80 = Integer
GARBFL  0011 17 Flag: DATA Scan/ LIST Quote/ Garbage Collection
DORES
SUBFLG  0012 18 Flag: Subscript Ref. / User Func. Call
INPFLG  0013 19 Flag: $00=INPUT, $40=GET, $98 = READ
DOMASK  0014 20
TANSGN    Flag: TAN Sign / Comparison Result
CHANNL  0015 21
POKER  0016 22
LINNUM    Temp Integer Value
TEMPPT  0018 24 Pointer: Temp String Stack
LASTPT  0019 25 Last Temp String Address
TEMPST  001B 27 Stack For Temp Strings
INDEX  0024 36 Utility Pointer Area
INDEX1
INDEX2  0026 38
RESHO  0028 40 Floating Pt. Product of Multiply
RESMOH  0029 41
ADDEND  002A 42
RESMO
RESLO  002B 43
TXTTAB  002D 45 Pointer: Start Of BASIC Text
VARTAB  002F 47 Pointer: Start Of BASIC Variables
ARYTAB  0031 49 Pointer: Start Of BASIC Arrays
STREND  0033 51 Pointer: End Of BASIC Arrays + 1
FRETOP  0035 53 Pointer: Bottom of String Storage
FRESPC  0037 55 Utility String Pointer
MAX_MEM_1 0039 57 Top of String/Variable Bank (Bank 1)
CURLIN  003B 59 Current BASIC Line Number
TXTPTR  003D 61 Pointer to BASIC Text used by CHRGET,etc.
FORM  003F 63 Used by PRINT USING
FNDPNT    Pointer to Item Found By Search
DATLIN  0041 65 Current DATA Line Number
DATPTR  0043 67 Current DATA Item Address
INPPTR  0045 69 Vector: INPUT Routine
VARNAM  0047 71 Current BASIC Variable Name
FDECPT  0049 73
VARPNT    Pointer: Current BASIC Variable DATA
LSTPNT  004B 75
FORPNT    Pointer: Index Variable For FOR/NEXT
ANDMSK
EORMSK  004C 76
VARTXT  004D 77
OPPTR
OPMASK  004F 79
GRBPNT  0050 80
TEMPF3
DEFPNT
DSCPNT  0052 82
 0054 84
HELPER  0055 85 Flags 'HELP' or 'LIST'
JMPER  0056 86
 0057 87
OLDOV  0058 88
TEMPF1  0059 89
PTARG1    Multiply defined for INSTR
PTARG2  005B 91
STRl  005D 93
STR2  0060 96
POSITN  0063 99
MATCH  0064 100
ARYPNT  005A 90
HIGHDS
HIGHTR  005C 92
TEMPF2  005E 94
DECCNT  005F 95 Number of Digits after the Decimal Point
TENEXP  0060 96
T0    ML MONITOR Z.P. Storage in FAC
GRBTOP  0061 97
DPTFLG    Decimal Point Flag
LOWTR
EXPSGN  0062 98
FAC  0063 99
DSCTMP
LEFT_FLAG   Paint-Left Flag
FACEXP    FAC#1 Exponent
Tl    MONITOR Z.P. Storage in FAC
RIGHT_FLAG 0064 100 Paint-Right Flag
FACHO    FAC#1 Mantissa
FACMOH  0065 101
INDICE  0066 102
FACMO
T2    MONITOR Z.P. Storage in FAC
FACLO  0067 103
FACSGN  0068 104 FAC#1 Sign
DEGREE  0069 105
SGNFLG    Pointer: Series-Eval. Constant
ARGEXP  006A 106 FAC#2 Exponent
ARGHO  006B 107 FAC#2 Mantissa
ARGMOH  006C 108
INIT_AS_0   Just a count for INIT
ARGMO  006D 109
ARGLO  006E 110
ARGSGN  006F 111 FAC#2 Sign
STRNGI  0070 112
ARISGN    Sign Comparison Result: FAC#1 vs #2
FACOV  0071 113 FAC#1 Low-Order (Rounding)
STRNG2  0072 114
POLYPT
CURTOL
FBUFPT    Pointer: Cassette Buffer
AUTINC  0074 116 Inc. Val for AUTO (0 = Off)
MVDFLG  0076 118 Flag If 10K HIRES Allocated
Z_P_TEMP_1 0077 119 PRINT USING's Leading Zero Counter
   MOVSPR & Sprite Temporary
   MID$ Temporary
HULP  0078 120 Counter
KEYSIZ
SYNTMP  0079 121 Used as Temp For Indirect
DSDESC  007A 122 Descriptor for DS$
TXTPTR    MONITOR Z.P. Storage
TOS  007D 125 Top of Run Time Stack
RUNMOD  007F 127 Flags Run/Direct Mode
PARSTS  0080 128 DOS Parser Status Word
POINT    USING's Pointer to Dec.Pt
PARSTX  0081 129
OLDSTK  0082 130
 BASIC Z-P STORAGE FOR GRAPHIC COMMANDS
COLSEL  0083 131 Current COLOR Selected
MULTICOLOR 0084 132
MULTICOLOR_2 0085 133
FOREGROUND 0086 134
SCALE_X  0087 135 Scale Factor In X
SCALE_Y  0089 137 Scale Factor In Y
STOPNB  008B 139 Stoppaint if not Background/Not same color
GRAPNT  008C 140
VTEMPI  008E 142
VTEMP2  008F 143
 KERNAL/EDITOR STORAGE
STATUS  0090 144 I/O Operation Status Byte
STKEY  0091 145 STOP KEY Flag
SVXT  0092 146 Tape Temporary
VERCK  0093 147 LOAD or VERIFY Flag
C3P0  0094 148 Serial Buffered Char Flag
BSOUR  0095 149 Char Buffer For Serial
SYNO  0096 150 Cassette Sync #
XSAV  0097 151 Temp For BASIN
LDTND  0098 152 Index to Logical File
DFLTN  0099 153 Default Input Device #
DFLTO  009A 154 Default Output Device #
PRTY  009B 155 Cassette Parity
DPSW  009C 156 Cassette Dipole Switch
MSGFLG  009D 157 OS Message Flag
PTR1  009E 158 Cassette Error Pass1
T1    Temporary 1
PTR2  009F 159 Cassette Error Pass2
T2    Temporary 2
TIME  00A0 160 24 Hour Clock In 1/60th Seconds
R2D2  00A3 163 Serial Bus Usage
PCNTR    Cassette
BSOUR1  00A4 164 Temp used by Serial Routine
FIRT
COUNT  00A5 165 Temp used by Serial Routine
CNTDN    Cassette Sync Countdown
BUFPT  00A6 166 Cassette Buffer Pointer
INBIT  00A7 167 RS-232 RCVR Input Bit Storage
SHCNL    Cassette Short Count
BITCI  00A8 168 RS-232 RCVR Bit Count In
RER    Cassette Read Error
RINONE  00A9 169 RS-232 RCVR Flag For Start Bit Check
REZ    Cassette Reading Zeroes
RIDATA  00AA 170 RS-232 RCVR Byte Buffer
RDFLG    Cassette Read Mode
RIPRTY  00AB 171 RS-232 RCVR Parity Storage
SHCNH    Cassette Short Cnt
SAL  00AC 172 Pointer: Tape Buffer / Screen Scrolling
SAH  00AD 173
EAL  00AE 174 Tape End Addresses / End of Program
EAH  00AF 175
CMP0  00B0 176 Tape Timing Constants
TEMP  00B1 177
TAPE1  00B2 178 Address of Tape Buffer
BITTS  00B4 180 RS-232 TRNS Bit Count
SNSW1
NXTBIT  00B5 181 RS-232 TRNS Next Bit To Be Sent
DIFF
RODATA  00B6 182 RS-232 TRNS Byte Buffer
PRP
FNLEN  00B7 183 LENGTH Current File N Str
LA  00B8 184 Current File Logical Addr
SA  00B9 185 Current File 2nd Addr
FA  00BA 186 Current File Primary Addr
FNADR  00BB 187 Addr Current File Name Str
ROPRTY  00BD 189 RS-232 TRNS Parity Buffer
OCHAR
FSBLK  00BE 190 Cassette Read Block Count
DRIVE  00BF 191
MYCH    Serial Word Buffer
CAS1  00C0 192 Cassette Manual/Cntrled Switch (Updated during IRQ)
TRACK  00C1 193
STAL    I/O Start Address (LO)
SECTOR  00C2 194
STAH    I/O Start Address (HI)
MEMUSS  00C3 195 Cassette LOAD Temps (2 bytes)
DATA  00C5 197 Tape Read/Write Data
BA  00C6 198 Bank For Current LOAD/SAVE/VERIFY Operation
FNBANK  00C7 199 Bank Where Current FN is found (at 'FNADR')
RIBUF  00C8 200 RS-232 Input Buffer Pointer
ROBUF  00CA 202 RS-232 Output Buffer Pointer
 GLOBAL SCREEN EDITOR VARIABLES
KEYTAB  00CC 204 Keyscan Table Pointer
IMPARM  00CE 206 PRIMM Utility String Pointer
NDX  00D0 208 Index to Keyboard Queue
KYNDX  00D1 209 Pending Function Key Flag
KEYIDX  00D2 210 Index Into Pending Function Key String
SHFLAG  00D3 211 Keyscan Shift Key Status
SFDX  00D4 212 Keyscan Current Key Index
LSTX  00D5 213 Keyscan Last Key Index
CRSW  00D6 214 Input Flag 
MODE  00D7 215 40/80 Column Mode Flag
GRAPHM  00D8 216 Text/Graphic Mode Flag
CHAREN  00D9 217 RAM/ROM VIC Character Fetch Flag (Bit-2)
THE FOLLOWING LOCATIONS ARE SHARED BY SEVERAL EDITOR ROUTINES.
SEDSAL  00DA 218 Pointers For MOVLIN
BITMSK  00DA 218 Temporary For TAB & LINE WRAP Routines
SAVER  00DB 219 Another Temporary Place To Save A Reg.
SEDEAL  00DC 220
SEDT1  00DE 222 SAVPOS
SEDT2  00DF 223
KEYSIZ  00DA 218 Programmable Key Variables
KEYLEN  00DB 219
KEYNUM  00DC 220
KEYNXT  00DD 221
KEYBNK  00DE 222
KEYTMP  00DF 223
 LOCAL SCREEN EDITOR VARIABLES.
These are swapped out to $0a40 when screen (40/80) mode changes.
PNT  00E0 224 Pointer to Current Line (Text)
USER  00E2 226 Pointer to Current Line (Attribute)
SCBOT  00E4 228 Window Lower Limit
SCTOP  00E5 229 Window Upper Limit
SCLF  00E6 230 Window Left Margin
SCRT  00E7 231 Window Right Margin
LSXP  00E8 232 Current Input Column Start
LSTP  00E9 233 Current Input Line Start
INDX  00EA 234 Current Input Line End
TBLX  00EB 235 Current Cursor Line
PNTR  00EC 236 Current Cursor Column
LINES  00ED 237 Maximum Number of Screen Lines
COLUMNS  00EE 238 Maximum Number of Screen Columns
DATAX  00EF 239 Current Character to Print
LSTCHR  00F0 240 Previous Char Printed (For Test)
COLOR  00F1 241 Curr Attribute to Print (Default FGND Color)
TCOLOR  00F2 242 Saved Attrib to Print ('INSERT' & 'DELETE')
RVS  00F3 243 Reverse Mode Flag
QTSW  00F4 244 Quote Mode Flag
INSRT  00F5 245 Insert Mode Flag
INSFLG  00F6 246 Auto-Insert Mode Flag
LOCKS  00F7 247 Disables , S
SCROLL  00F8 248 Disables Screen Scroll, Line Linker
BEEPER  00F9 249 Disables G
FREKZP  00FA 250 Free Zero Page reserved for applications
   software ($FA-$FE)
LOFBUF  00FF 255
 BASIC/DOS INTERFACE VARS
BAD  0100 256 Tape Read Errors
FBUFFR    Area to build filename in (16 bytes)
XCNT  0110 272 DOS Loop Counter
DOSF1L  0111 273 DOS Filename 1 Len
DOSDS1  0112 274 DOS Disk Drive 1
DOSF2L  0113 275 DOS Filename 2 Len
DOSDS2  0114 276 DOS Disk Drive 2
DOSF2A  0115 277 DOS Filename 2 Addr
DOSOFL  0117 279 BLOAD/BSAVE Starting Address
DOSOFH  0119 281 .... and Ending Address
DOSLA  011B 283 DOS Logical Addr
DOSFA  011C 284 DOS Phys Addr
DOSSA  011D 285 DOS Sec. Addr
DOSRCL  011E 286 DOS Record Length
DOSBNK  011F 287
DOSDID  0120 288 DOS Disk ID
DIDCHK  0122 290 DOS DSK ID FLG SPACE Used by PRINT USING
BNR  0123 291 Pointer to Begin. NO.
ENR  0124 292 Pointer to End NO.
DOLR  0125 293 Dollar Flag
FLAG  0126 294 Comma Flag
SWE  0127 295 Counter
USGN  0128 296 Sign Exponent
UEXP  0129 297 Pointer to Exponent
VN  012A 298 # Of Digits Before Decimal Point
CHSN  012B 299 Justify Flag
VF  012C 300 # Of Pos Before Decimal Point (Field)
NF  012D 301 # Of Pos After Decimal Point (Field)
POSP  012E 302 +/- Flag (Field)
FESP  012F 303 Exponent Flag (Field)
ETOF  0130 304 Switch
CFORM  0131 305 Char Counter (Field)
SNO  0132 306 Sign No
BLFD  0133 307 Blank/Star Flag
BEGFD  0134 308 Pointer to Begin of Field
LFOR  0135 309 Length of Format
ENDFD  0136 310 Pointer to End Of Field
SYSTK  0137 311 System Stack ($0137-$01FF)
BUF  0200 512 Input Buffer: BASIC & MONITOR
FETCH  02A2 674 LDA(-),Y From Any Bank
FETCHVEC 02AA 682
STASH  02AF 687 STA(-),Y to Any Bank
STAVEC  02B9 697
CMPARE  02C8 702 CMP(-),Y to Any Bank
CMPVEC  02C8 712
JSRFAR  02CD 716 JSR XXXX to Any Bank & Return
JMPFAR  02E3 739 JMP XXXX to Any Bank
 VECTORS
ESC_FN_VEC 02FC 764 Vector For Additional Function Routines
K EC  02FE 766 Vector For Function Cart.
IERROR  0300  Users
 0302  (ERR IN .X)
ICRNCH  0304 772 Vector to Crunch
  774 Vector to List BASIC Text
  776 Vector to Gone (BASIC Char
  778 Vector to BASIC Token
  780 Vector to Escape-Token
 030E 782 LIST
IESCEX  0310 784 ... And Execute.
IIRO  0314 788 IRQ RAM Vector
IBRK  0316 790 BRK INSTR RAM Vector
INMI  0318 792 NMI Vector
IOPEN  031A 794 KERNAL OPEN Routine Vector
  796 KERNAL CLOSE Routine Vector
  798 KERNAL CHKIN Routine Vector
  800 KERNAL CHKOUT Routine
CLRCH  0322 Vector
VECTOR
IBASIN  0324 804 KERNAL CHRIN Routine Vector
IBSOUT  0326 806 KERNAL CHROUT Routine Vector
ISTOP  0328 808 KERNAL STOP Routine Vector
IGETIN  032A 810 KERNAL GETIN Routine Vector
ICLALL  032C 812 KERNAL CLALL Routine Vector
EXMON  032E 814 Monitor Command Vector
ILOAD  0330 816 KERNAL LOAD Routine Vector
ISAVE  0332 818 KERNAL SAVE Routine Vector
EDITOR INDIRECT VECTORS
CTLVEC  0334 820 Editor: PRINT 'CONTRL' Indirect
SHFVEC  0336 822 Editor: PRINT 'SHIFTD' Indirect
ESCVEC  0338 824 Editor: PRINT 'ESCAPE' Indirect
KEYVEC  033A 826 Editor: Keyscan Logic Indirect
KEYCHK  033C 828 Editor: Store Key Indirect
DECODE  033E 830 Vectors to Keyboard Matrix Decode Tables
KEYD  034A 842 IRQ Keyboard Buffer (10 Bytes)
TABMAP  0354 852 Bitmap Of TAB Stops (10 Bytes, $0354-D)
BITABL  035E 862 Bitmap Of Line Wraps
   TABMAP and BITABL get swapped to $0A60 when
   screen 40/80 mode is changed.
LAT  0362 866 Logical File Numbers
FAT  036C 876 Primary Device Numbers
SAT  0376 886 Secondary Addresses
CHRGET  0380 896
CHRGOT  0386 902
QNUM  0390 912
INDIRECT LOAD SUBROUTINE AREA
INDSUB_RAM0 039F 927 Shared ROM Fetch Sub
INDSUB_RAM1 03AB 939 Shared ROM Fetch Sub
INDIN1_RAM1 03B7 950 Index1 Indirect Fetch
INDIN2  03C0 959 Index2 Indirect Fetch
INDIXT  03C9 968 Txtptr
ZERO  03D2 977 Numeric Constant For BASIC
CURRENT_BANK 03D5 979 Context For SYS,POKE,PEEK From Bank Cmmd
TMPDES  03D6 980 Temp For INSTR
FIN_BANK 03DA 984 Bank Pointer For String/Number CONVERT RTN
SAVSIZ  03DB 985 Temp Work Locations for SSHAPE
BITS  03DF 989 FAC#1 OVERFLOW DIGIT
SPRTMP_1 03E0 990 Temp For SPRSAV
SPRTMP_2 03E1 991
FG_BG  03E2 992 Packed Foreground/ Background Color Nybbles
FG_MC1  03E3 993 Packed Foreground/ Multicolor 1 Color Nybbles
Page Four & Higher Declarations (Beginning Of Bankable RAM)
VICSCN  0400 1024 VIDEO MATRIX #1: VIC 40-Column Text Screen
   $0400-$07FF
 0800 2048 BASIC RUN-TIME STACK (512 BYTES)
   $0800-$09FF
ABSOLUTE KERNAL VARIABLES
SYSTEM_VECTOR 0A00 2560 Vector to Restart System (BASIC Warm)
DEJAVU  0A02 2562 KERNAL Warm/Cold Init'n Status Byte
PALNTS  0A03 2563 PAL/NTSC System Flag
INIT_STATUS 0A04 2564 Flags RESET vs. NMI Status for init'n rtns
MEMSTR  0A05 2565 Ptr to Bottom of Avail. Memory in System Bank
MEMSIZ  0A07 2567 Ptr to Top of Available Memory in System Bank
IRQTMP  0A09 2569 Tape Handler preserves IRQ Indirect here
CASTON  0AOB 2571 TOD Sense during tape operations
KIKA26  0AOC 2572 Tape Read Temporary
STUPID  0AOD 2573 Tape Read D1IRQ Indicator
TIMOUT  0AOE 2574 Fast Serial Timeout Flag
ENABL  0A0F 2575 RS-232 Enables
M51CTR  0A10 2576 RS-232 Control Register
MSICDR  0A11 2577 RS-232 Command Register
MSIAJB  0A12 2578 RS-232 User Baud Rate
RSSTAT  0A14 2580 RS-232 Status Register
BITNUM  0A15 2581 RS-232 Number of Bits To Send
BAUDOF  0A16 2582 RS-232 Baud Rate Full Bit Time (Created by OPEN)
RIDBE  0A18 2584 RS-232 Input Buffer Index to End
RIDBS  0A19 2585 RS-232 Input Buffer Index to Start
RODBS  0A1A 2586 RS-232 Output Buffer Index to Start
RODBE  0A1B 2587 RS-232 Output Buffer Index to End
SERIAL  0A1C 2588 Fast Serial Internal/External Flag
TIMER  0A1D 2589 Decrementing Jiffie Register
GLOBAL ABSOLUTE SCREEN EDITOR DECLARATIONS
XMAX  0A20 2592 Keyboard Queue Maximum Size
PAUSE  0A21 2593 CTRL-S Flag
RPTFLG  0A22 2594 Enable Key Repeats
KOUNT  0A23 2595 Delay Between Key Repeats
DELAY  0A24 2596 Delay Before a Key Starts Repeating
LSTSHF  0A25 2597 Delay Between Toggles
BLNON  0A26 2598 VIC Cursor Mode (Blinking, Solid)
BLNSW  0A27 2599 VIC Cursor Disable
BLNCT  0A28 2600 VIC Cursor Blink Counter
GDBLN  0A29 2601 VIC Cursor Character Before Blink
GDCOL  0A2A 2602 VIC Cursor Color Before Blink
CURMOD  0A2B 2603 VDC Cursor Mode (when enabled)
VMl  0A2C 2604 VIC Text Screen/Character Base Pointer
VM2  0A2D 2605 VIC Bit-Map Base Pointer
VM3  0A2E 2606 VDC Text Screen Base
VM4  0A2F 2607 VDC Attribute Base
LINTMP  0A30 2608 Temporary Pointer to Last Line For LOOP4
SAV80A  0A31 2609 Temporary For 80-Col Routines
SAV80B  0A32 2610 Temporary For 80-Col Routines
CURCOL  0A33 2611 VDC Cursor Color Before Blink
SPLIT  0A34 2612 VIC Split Screen Raster Value
FNADRX  0A35 2613 Save .X During Bank Operations
PALCNT  0A36 2614 Counter for PAL Systems (Jiffie adjustment)
SPEED  0A37 2615 Save System Speed During Tape and Serial Ops
SPRITES  0A38 2616 Save Sprite Enables During Tape and Serial Ops
BLANKING 0A39 2617 Save Blanking Status During Tape Ops
HOLD_OFF 0A3A 2618 Flag set by user to resrv full control of VIC
LDTBI_SA 0A3B 2619 Hi byte:SA Of VIC Scrn (Use W/VMI to move scrn)
CLR_EA_LO 0A3C 2620 8563 Block Fill
CLR_EA_HI 0A3D 2621 8563 Block Fill
 0A40 2624 $0A40-$0A7F Reserved Swap Area For Screen
   Variables When (40/80) Mode Changes
   MONITOR's domain
XCNT  0A80 2688 Compare Buffer (32 bytes)
HULP  0AA0 2720
FORMAT  0AAA 2730
LENGTH  0AAB 2731 ASM/DIS
MSAL  0AAC 2732 For Assembler
SXREG  0AAF 2735 1 Byte Temp used all over
SYREG  0AB0 2736 1 Byte Temp used all over
WRAP  0AB1 2737 1 Byte Temp for Assembler
XSAVE  0AB2 2738 Save .X here during Indirect Subroutine Calls
DIRECTION 0AB3 2739 Direction Indicator For 'TRANSFER'
COUNT  0AB4 2740 Parse Number Conversion
NUMBER  0AB5 2741 Parse Number Conversion
TEMPS  0AB7 2743 Parse Number Conversion
FUNCTION KEY ROM CARD TABLES
CURBNK  0AC0 2752 Current Function Key ROM Bank Being Polled
PAT  0AC1 2753 Physical Address Table (IDS OF LOGGED-IN CARDS)
DK_FLAG  0AC5 2757 Reserved For Foreign Screen Editors
 0AC6 2758 $0AC6-$0AFF Reserved For System
TBUFFR  0B00 2810 Cassette Buffer (192 BYTES)
   $0B00-$0BC0, This page also used as a buffer
   for the disk auto-boot.
RS232I  0C00 3072 RS-232 Input Buffer
RS2320  0D00 3328 RS-232 Output Buffer
 0E00 3584 Sprite Definition Area (Must be below $1000)
   $0E00-$0FFF, 512 Bytes
PKYBUF  1000 4096 Programmable Function Key Lengths Table For
   10 Keys (F1-F8, , HELP)
PKYDEF  100A 4106 Programmable Function Key Strings
DOS/VSP AREA
DOSSTR  1100 4352 DOS OUTPUT STR. BUF
   48 Bytes to Build DOS String
VWORK  1131 4401 Graphics Vars
XYPOS  1131 4401
XPOS  1131 4401 Current X Position
YPOS  1133 4403 Current Y Position
XDEST  1135 4405 X-Coordinate Destination
YDEST  1137 4407 Y-Coordinate Destination
XYABS  1139 4409 Line Drawing Variables
XABS  1139 4409
YABS  113B 4411
XYSGN  113D 4413
XSGN  113D 4413
YSGN  113F 4415
FCT  1141 4417
ERRVAL  1145 4421
LESSER  1147 4423
GREATR  1148 4424
ANGLE ROUTINE VARIABLES
ANGSGN  1149 4425 Sign Of Angle
SINVAL  114A 4426 Sine Of Value Of Angle
DOS/VSP AREA
COSVAL  114C 4428 Cosine of Value of Angle
ANGCNT  114E 4430 Temps For Angle Distance Routines
 BASIC GRAPHIC VARIABLES.
The following 24 bytes are multiply defined.
CIRCLE DRAWING VARIABLES
XCIRCL  1150 4432 CIRCLE Center, X Coordinate
YCIRCL  1152 4434 CIRCLE Center, Y Coordinate
XRADUS  1154 4436 X Radius
YRADUS  1156 4438 Y Radius
ROTANG  1158 4440 Rotation Angle
ANGBEG  115C 4444 Arc Angle Start
ANGEND  115E 4446 Arc Angle End
XRCOS  1160 4448 X Radius * COS(Rotation Angle)
YRSIN  1162 4450 Y Radius * SIN(Rotation Angle)
XRSIN  1164 4452 X Radius * SIN(Rotation Angle)
YRCOS  1166 4454 Y Radius * COS(Rotation Angle)
BASIC GENERAL USE PARAMETERS
XCENTR  1150 4432
YCENTR  1152 4434
XDIST1  1154 4436
YDIST1  1156 4438
XDIST2  1158 4440
YDIST2  115A 4442
DISEEND  115C 4444 Placeholder
COLCNT  115E 4446 Char's Col. Counter
ROWCNT  115F 4447
STRCNT  1160 4448
BOX-DRAWING VARIABLES
XCORDI  1150 4432 POINT I X-Coord.
YCORDl  1152 4434 POINT I Y-Coord.
BOXANG  1154 4436 Rotation Angle
XCOUNT  1156 4438
YCOUNT  1158 4440
BXLENG  115A 4442 Length of a side
XCORD2  115C 4444
YCORD2  115E 4446
SHAPE AND MOVE-SHAPE VARIABLES
KEYLEN  1151 4433
KEYNXT  1152 4434
STRSZ  1153 4435 String Len
GETTYP  1154 4436 Replace Shape Mode
STRPTR  1155 4437 String Pos'n Counter
OLDBYT  1156 4438 Old Bit Map byte
NEWBYT  1157 4439 New String or Bit Map Byte
 1158 4440 Placeholder
XSIZE  1159 4441 SHAPE Column Length
YSIZE  115B 4443 SHAPE Row Length
XSAVE  115D 4445 Temp For Column Length
STRADR  115F 4447 Save SHAPE String Descriptor
BITIDX  1161 4449 Bit Index Into Byte
BASIC GRAPHIC VARIABLES
CHRPAG  1168 4456 HIGH BYTE: ADDR OF CHARROM For 'CHAR' CMD.
BITCNT  1169 4457 Temp For GSHAPE
SCALEM  116A 4458 SCALE Mode Flag
WIDTH  116B 4459 Double Width Flag
FILFLG  116C 4460 Box Fill Flag
BITMSK  116D 4461 Temp For Bit Mask
NUMCNT  116E 4462
TRCFLG  116F 4463 Flags Trace Mode
RENUM_TMP_1 1170 4464 A Temp For Renumber
RENUM_TMP_2 1172 4466 A Temp For Renumber
T3  1174 4468
T4  1175 4469
VTEMP3  1177 4471 Graphic Temp Storage
VTEMP4  1178 4472
VTEMP5  1179 4473
ADRAY1  117A 4474 Ptr to routine: Convert Float -> Integer
ADRAY2  117C 4476 Ptr to routine: Convert Integer -> FLOAT
SPRITE_DATA 117E 4478 Sprite Speed/Direction Tables ($117E-D5)
VIC_SAVE 11D6 4566 Copy of VIC Reg's, Used to update chip during
   retrace (21 bytes, $11D6-EA)
UPPER_LOWER 11EB 4587 Pointer to Upper/Lower Char Set for CHAR
UPPER_GRAPHIC 11EC 4588 Ptr. to Upper/Graphic Char Set
DOSSA  11ED 4589 Temp storage for file SA during RECORD cmd
BASIC GENERAL NON-ZP STORAGE
OLDTXT  1220 4608 Previous BASIC Line
  4610 Pointer: BASIC Statement for CONTINUE
PRINT USING DECLARATIONS
PUCHRS  1204 4612
PUFILL  1204 4612 PRINT USING Fill Symbol
PUCOMA  1205 4613 PRINT USING Comma Symbol
PUDOT  1206 4614 PRINT USING D.P. Symbol
PUMONY  1207 4614 Print Using Monetary Symbol
ERRNUM  1208 4616 Used by Error Trapping Routine - Last Err No
ERRLIN  1209 4617 Line # of Last Error. $FFFF if No Error
TRAPNO  120B 4619 Line to go to on error - $FFFF if none set
TMPTRP  120D 4621 Hold Trap # of Tempor.
ERRTXT  120E 4622
TEXT_TOP 1210 4624 Top of Text Pointer
MAX_MEM_0 1212 4626 Highest Address Available to BASIC in RAM 0
TMPTXT  1214 4628 Used by DO-LOOP. Could be Mult. Assigned
TMPLIN  1216 4630
USRPOK  1218 4632
RNDX  121B 4635
CIRCLE_SEGMENT 1220 4640 Degrees Per CIRCLE 51:6MENT
DEJAVU  1221 4641 'Cold' or 'Warm' Reset Status
BASIC STORAGE FOR MUSIC VECTORS
TEMPO_RATE 1222 4642
VOICES  1223 4643
NTIME  1229 4649
OCTAVE  122B 4651
SHARP  122C 4652
PITCH  122D 4653
VOICE  122F 4655
WAVE0  1230 4656
DNOTE  1233 4659
FLTSAV  1234 4660
FLTFLG  1238 4664
NIBBLE  1239 4665
TONNUM  123A 4666
TONVAL  123B 4667
PARCNT  123E 4668
ATKTAB  123F 4669
SUSTAB  1249 4681
WAVTAB  1253 4691
PULSLW  125D 4701
PULSHI  1267 4711
FILTERS  1271 4721
INTERRUPT VECTORS
INT_TRIP_FLAG 1276 4726
INT_ADR_LO 1279 4729
INT_ADR_HI 127C 4732
INTVAL  127F 4735
COLTYP  1280 4736
BASIC SOUND COMMAND VARS
SOUND_VOICE 1281 4737
SOUND_TIME_LO 1282 4738
SOUND_TIME_HI 1285 4741
SOUND_MAX_LO 1288 4744
SOUND_MAX_HI 128B 4747
SOUND_MIN_LO 128E 4750
SOUND_MIN_HI 1291 4753
SOUND_DIRECTION 1294 4756
SOUND_STEP_LO 1297 4759
SOUND_STEP_HI 129A 4762
SOUND_FREQ_LO 129D 4765
SOUND_FREQ_HI 12A0 4768
TEMP_TIME_LO 12A3 4771
TEMP_TIME_HI 12A4 4772
TEMP_MAX_LO 12A5 4773
TEMP_MAX_HI 12A6 4774
TEMP_MIN_LO 12A7 4775
TEMP_MIN_HI 12A8 4776
TEMP_DIRECTION 12A9 4777
TEMP_STEP_LO 12AA 4778
TEMP_STEP_HI 12AB 4779
TEMP_FREQ_LO 12AC 4780
TEMP_FREQ_HI 12AD 4781
TEMP_PULSE_LO 12AE 4782
TEMP_PULSE_HI 12AF 4783
TEMP_WAVEFORM 12B0 4784
POT_TEMP_1 12B1 4785 Temporaries for 'POT' Function
POT_TEMP_2 12B2 4786
WINDOW_TEMP 12B3 4787
SAVRAM  12B7 4791 Used BY SPRDEF & SAVSPR
DEFMOD  12FA 4858 Used BY SPRDEF & SAVSPR
LINCNT  12FB 4859 Used BY SPRDEF & SAVSPR
SPRITE_NUMBER 12FC 4860 Used BY SPRDEF & SAVSPR
IRQ_WRAP_FLAG 12FD 4861 Used BY BASIC IRQ to BLOCK
   All BUT ONE IRQ CALL
 1300 4864 Application Program Area $1300-$1BFF
RAMBOT  1C00 7168 Start Of Basic Text $1C00-$EFFF
   (KERNAL sets MEMBOT here)
 1C00 7168 Video Matrix #2 (1KB of colors for
   Bitmap, if allocated) $1C00-$1FFF
 2000 8192 VIC BITMAP (8KB, if allocated)
   $2000-$3FFF
BEGINNING OF ROM OVER RAM
 4000 16384 C128 BASIC LO ROM
   Start of BASIC Text if Bit Map
   is allocated (RAM) $4000-$EFFF
 8000 32768 C128 BASIC Hl ROM (or Function ROM) $8000-$BFFF
BASIC JUMP TABLE
 BASIC ENTRY
JMP HARD_RESET 4000 16384 COLD ENTRY
JMP SOFT_RESET 4003 16387 WARM ENTRY
JMP BASIC_IRQ 4006 16390 IRQ ENTRY
 FORMAT CONVERSIONS
JMP AYINT AF00 44800 Convert F.P. to Integer
JMP GIVAYF AF03 44803 Convert Integer to F.P.
JMP FOUT AF06 44806 Convert F.P. to ASCII String
JMP VAL_l AF09 44809 Convert ASCII String to F.P.
JMP GETADR AF0C 44812 Convert F.P. to an Address
JMP FLOATC AF0F 44815 Convert Address to F.P.
 MATH FUNCTIONS
JMP FSUB AF12 44818 MEM - FACC
JMP FSUBT AF15 44821 ARG - FACC
JMP FADD AF18 44824 MEM + FACC
JMP FADDT AF1B 44827 ARG - FACC
JMP FMULT AF1E 44830 MEM * FACC
JMP FMULTT AF21 44833 ARG * FACC
JMP FDIV AF24 44836 MEM / FACC
JMP FDIVT AF27 44839 ARG / FACC
JMP LOG  AF2A 44842 Compute Natural LOG Of FACC
JMP INT  AF2D 44845 Perform BASIC INT On FACC
JMP SQR  AF30 44848 Compute Square Root OF FACC
JMP NEGOP AF33 44851 Negate FACC
JMP FPWR AF36 44854 Raise ARG to The Mem Power
JMP FPWRT AF39 44857 Raise ARG to The FACC Power
JMP EXP  AF3C 44860 Compute EXP Of FACC
JMP COS  AF3F 44863 Compute COS Of FACC
JMP SIN  AF42 44866 Compute SIN Of FACC
JMP TAN  AF45 44869 Compute TAN Of FACC
JMP ATN  AF48 44872 Compute ATN Of FACC
JMP ROUND AF4B 44875 Round FACC
JMP ABS  AF4E 44878 Absolute Value Of FACC
JMP SIGN AF51 44881 Test Sign Of FACC
JMP FCOMP AF54 44884 Compare FACC With Memory
JMP RND 0 AF57 44887 Generate Random F.P. Number
 MOVEMENT
JMP CONUPK AF5A 44890 Move RAM MEM to ARG
JMP ROMUPK AF5D 44893 Move ROM MEM to ARG
JMP MOVFRM AF60 44896 Move RAM MEM to FACC
JMP MOVFM AF63 44899 Move ROM MEM to FACC
JMP MOVMF AF66 44902 Move FACC to MEM
JMP MOVFA AF69 44905 Move ARG to FACC
JMP MOVAF AF6C 44908 Move FACC to ARG
 OTHER BASIC ROUTINES
JMP OPTAB AF6F 44911
JMP DRAWLN AF72 44914
MEMORY
ADDRESS  HEXADECIMAL DECIMAL
LABEL  ADDRESS ADDRESS DESCRIPTION
 OTHER BASIC ROUTINES
JMP GPLOT AF75 44917
JMP CIRSUB AF78 44920
JMP RUN  AF7B 44923
JMP RUNC AF7E 44926
JMP CLEAR AF81 44929
JMP NEW  AF84 44932
JMP LNKPRG AF87 44935
JMP CRUNCH AF8A 44938
JMP FNDLIN AF8D 44941
JMP NEWSTT AF90 44944
JMP EVAL AF93 44947
JMP FRMEVL AF96 44950
JMP RUN_A_PROGRAM
 AF99 44953
JMP SETEXC AF9C 44956
JMP LINGET AF9F 44959
JMP GARBA2 AFA2 44962
JMP EXECUTE_A_LINE
 AFA5 44965
 MONITOR ENTRY
JMP CALL B000 45056 MONITOR Call Entry
JMP BREAK B003 45059 MONITOR Break Entry
JMP MONCMD B006 45062 MONITOR Command Parser Entry
 C000 49152 KERNAL (or Function) ROM $C000-$FFFF
 EDITOR JUMP TABLE
JMP CINT C000 491S2 Initialize Editor & Screen
JMP DISPLY C003 49155 Display Charac in .A, Color
JMP LP2  C006 49158 Get Key From IRQ Buffer
JMP LOOP5 C009  Into A
JMP PRINT C00C 49164 Print Character In .A
JMP SCRORG C00F 49167 Get # of Scrn Rows, Cols Into X & Y
JMP SCNKEY C012 49170 Scan Keyboard Subroutine
JMP REPEAT C015 49173 Handle Repeat Key & Store Decoded Key
JMP PLOT C018 49176 Read Or Set CRSR Position In X, Y
JMP CURSOR C01B 49179 Move 8563 Cursor Subroutine
JMP ESCAPE C01E 49182 Execute ESC Function using chr in .A
JMP KEYSET C021 49185 Redefine A Programmable Func'n Key
JMP IRQ  C024 49188 IRQ Entry
JMP INIT80 C027 49191 Initialize 80-Column Character Set
JMP SWAPPER C02A 49194 Swap Editor Locals (in 40/80 change)
JMP WINDOW C02D 49197 Set Top-Left or Bot-Right of Window
 D000 53248 VIC Character ROM ($D000-$DFFF)
 VIC CHIP REGISTERS
VICREG0  D000 53248 Sprite 0, X-Location
VICREG1  D001 53249 Sprite 0, Y-Location
VICREG2  D002 53250 Sprite 1, X-Location
VICREG3  D003 53251 Sprite 1, Y-Location
VICREG4  D004 53252 Sprite 2, X-Location
VICREG5  D005 53253 Sprite 2, Y-Location
VICREG6  D006 53254 Sprite 3, X-Location
VICREG7  D007 53255 Sprite 3, Y-Location
VICREG8  D008 53256 Sprite 4, X-Location
VICREG9  D009 53257 Sprite 4, Y-Location
VICREG10 D00A 53258 Sprite 5, X-Location
VICREG11 D00B 53259 Sprite 5, Y-Location
VICREG12 D00C 53260 Sprite 6, X-Location
VICREG13 D00D 53261 Sprite 6, Y-Location
VICREG14 D00E 53262 Sprite 7, X-Location
VICREG15 D00F 53263 Sprite 7, Y-Location
VICREG16 D010 53264 M.S. Bit of X-Location for Sprites 0 - 7
THE COMMODORE 128 AND COMMODORE 64 MEMORY MAPS
 KERNAL JUMP TABLE
 New Entries For C128
JMP SPIN SPOUT FF47  65351 Set up Fast Serial Port for I/O
JMP CLOSE ALL FF4A  65354 Close All Logical Files for a device
JMP C64MODE FF4D  65357 Reconfigure System as a C64 (no return)
JMP DMA CALL FF50  65360 Initiate DMA Request to External RAM
    Expansion, Send command to DMA Device
JMP BOOT CALL FF53  65363 Boot Load Program From Disk
JMP PHOENIX FF56  65366 Call All Function Cards' Cold Start
    Routines, Initialize
JMP LKUPLA FF59  65369 Search Tables For Given LA
JMP LKUPSA FF5C  65372 Search Tables For Given SA
JMP SWAPPER FF5F  65375 Switch Between 40 and 80 Columns (Editor)
JMP DLCHR FF62  65378 Init 80-Col Character RAM (Editor)
JMP PFKEY FF65  65381 Program Function Key (Editor)
JMP SETBNK FF68  65384 SET Bank For I/O Operations
JMP GETCFG FF6B  65387 Lookup MMU Data For Given Bank
JMP JSRFAR FF6E  65390 JSR to Any Bank, RTS to Calling Bank
JMP JMPFAR FF71  65393 JMP to Any Bank
JMP INDFET FF74  65396 LDA (FETVEC),Y FROM Any Bank
JMP INDSTA FF77  65499 STA (STAVEC),Y to Any Bank
JMP INDCMP FF7A  65402 CMP (CMPVEC),Y to Any Bank
JMP PRIMM FF7D  65405 Print Immediate Utility
    (Always JSR to this routine)
 STANDARD KERNAL JUMP TABLE
 FF80  65408 Release Number Of KERNAL
JMP CINT FF81  65409 Init Editor & Display
JMP IOINIT FF84  65412 Init I/O Devices (ports, timers, etc.)
JMP RAMTAS FF87  6S415 Initialize RAM And Buffers For System
JMP RESTOR FF8A  65418 Restore Vectors to Initial System
JMP VECTOR FF8D  65421 Change Vectors For USER
JMP SETMSG FF90  65424 Control O.S. Message
JMP SECND FF93  65427 Send SA After LISTEN
JMP TKSA FF96  65430 Send SA After TALK
JMP MEMTOP FF99  65433 Set/Read Top Of System RAM
JMP MEMBOT FF9C  65436 Set/Read Bottom Of System RAM
JMP KEY  FF9F  65439 Scan Keyboard (Editor)
JMP SETTMO FFA2  65442 Set Timeout In IEEE (reserved)
JMP ACPTR FFA5  65445 Handshake Serial Byte In
JMP CIOUT FFA8  65448 Handshake Serial Byte Out
JMP UNTLK FFAB  65451 Send UNTALK Out Serial
JMP UNLSN FFAE  65454 Send UNLISTEN Out Serial
JMP LISTN FFB1  65457 Send LISTEN Out Serial
JMP TALK FFB4  65460 Send TALK Out Serial
JMP READSS FFB7  65463 Return I/O Status Byte
JMP SETLFS FFBA  65460 Set LA, FA, SA
JMP SETNAM FFBD  65469 Set Length And File Name Address
JMP (IOPEN) FFC0 OPEN 65472 OPEN Logical File
JMP (ICLOSE) FFC3 CLOSE 65475 CLOSE Logical File
JMP (ICHKIN) FFC6 CHKIN 65478 Set Channel In
JMP (ICKOUT) FFC9 CKOUT 65481 Set Channel Out
JMP (ICLRCH) FFCC CLRCH 65484 Restore Default I/O Channel
JMP (IBASIN) FFCF BASIN 65487 INPUT From Channel
JMP (IBSOUT) FFD2 BSOUT 65490 OUTPUT To Channel
JMP LOADSP FFD5  65493 LOAD From File
JMP SAVESP FFD8  65496 SAVE to File
JMP SETTIM FFDB  65599 Set Internal Clock
JMP RDTIM FFDE  65502 Read Internal Clock
JMP (ISTOP) FFE1 STOP 65505 Scan STOP Key
JMP (IGETIN) FFE4 GETIN 65508 Read Buffered Data
JMP (ICLALL) FFE7 CLALL 65511 Close All Files And Channels
JMP UDTIM FFEA CLOCK 65514 Increment Internal Clock
JMP SCRORG FFED  65517 Return Screen Window Size (Editor)
JMP PLOT FFF0  65520 Read/Set X,Y Cursor Coord (Editor)
JMP IOBASE FFF3  65523 Return I/O Base
SYSTEM  FFF8  65528 Operating System Vector (RAM1)
NMI  FFFA  65530 Processor NMI Vector
RESET  FFFC  65532 Processor RESET Vector
IRQ  FFFE  65534 Processor IRQ/BRK Vector
 KERNAL/EDITOR FLAGS AND SHADOW REGISTERS
The following symbols are used by the C128 Editor. Note that the Editor IRQ
VIC screen handler depends upon them. In most cases the contents of these
locations will be placed directly into the appropriate register and should be
used instead of the actual register. For example, to change the location of the
character set used by VIC, use VM1 ($0A2C) instead of VIC register 24 ($D018).
VM1 will be used by the editor to update VIC register 24.
ADDRESS NAME EXPLANATION
$00D8/GRAPHM See below. IF = $FF THEN EDITOR LEAVES VIC ALONE.
$00D9/CHAREN MASK For 8502 /CHAREN BIT.
$0A2C/VM1 VIC Text Mode Video Matrix & Character Base Pointer.
$0A2D/VM2 VIC Graphic Mode Video Matrix & Bit Map Pointer.
$0A2E/VM3 8563 TEXT DISPLAY BASE Address.
$0A2F/VM4 8S63 ATTRIBUTE BASE Address.
$0A34/SPLIT IN SPLIT SCREEN MODE, CONTAINS VALUE For MIDDLE RASTER IRQ.
$0A2B/CURMOD 8563 CURSQR Mode.
$0A21/PAUSE CONTROL S Flag (In effect = $13)
540 COMMODORE 128
EXPLANATION OF VARIOUS KERNAL/EDITOR FLAG BYTES, ETC.
ADDRESS SYMBOL   DESCRIPTION
 7 6 5 4 3 2 1 0
0000 D6510 - (IN) (OUT) (IN) (OUT) (OUT) (OUT) (OUT)
0001 R6510 - CAPKEY CASMTR CASSEN CASWRT CHAREN HIRAM LORAM
00F7 LOCKS CASE CTL S - - - - - -
00F8 SCROLL OFF LINKER
00D3 SHFLAG - - - ALT ALPHA CTRL  SHIFT
OA22 RPTFLG ALL NONE - - - - - -
OA26 BLNON ON BLNK - - - - - -
00F9 BEEPER ON - - - - - - -
00D8 GRAPHM MCM SPLIT BMM - - - - -
00D7 MODE 40/80 - - - - - - -
OA04 INIT_ CHRSET CINT - - - - - BASIC
STATUS

Notes on Kernal Symbols:

Init_Status. See also above. Lets system know what has been initialized and what hasn't. Set to $00 by a reset but untouched by NMI.

System_Vector. Where the Kernal goes when it has to go somewhere. It's set to BASIC cold at reset. BASIC itself sets it to BASIC warm after it has initialized. The monitor respects it too.

System. Vector in RAM1 at $FFF8. Set at power-up to C128MODE, user may redirect it to his code. Taken at reset always providing user with control (protection) from reset.


Marko Mäkelä

Banners

vintagegames.se Retrogaming community - Online since: 16-Mar-2005   The C64 Banner Exchange Missa inte Retrogathering