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ä
(Marko.Makela@HUT.FI)