These maps, primarily the work of Jun Butterfield, all originally appeared in COMPUTE! Magazine. (See the copyright page for references.)
Map 1 . PET Original And Upgrade BASIC.
ORIG UPGR DESCRIPTION
C357 C355 ?OUT OF MEMORY
C359 C357 Send BASIC error message
C38B C389 Warm start, BASIC
C3AC C3AB Crunch & insert line
C430 C439 Fix chaining & READY
C433 C442 Fix chaining
C48D C495 Crunch tokens
C522 C52C Find line in BASIC
C553 C55D Do NEW
C56A C572 Do CLR
C59A C5A7 Reset BASIC to start
C6B5 C6C4 Continue BASIC execution
C863 C873 Get fixed-point number from BASIC
C9CE C9DE Send Return, LF if in screen mode
C9D2 C9E2 Send Return, Linefeed
CA27 CA1C Print string
CA2D CA22 Print precomputed string
CA49 CA45 Print character
CE11 CDF8 Check for comma
CE13 CDFA Check for specific character
CE1C CE03 'SYNTAX ERROR'
D079 D069 Bump Variable Address by 2
D0A7 D09A Float to Fixed conversion
D278 D26D Fixed to Float conversion
D679 D67B Get byte to X reg
D68D D68F Evaluate String
D6C4 D6C6 Get two parameters
D73C D773 Add (from memory)
D8FD D934 Multiply by memory location
D9B4 D9EE Multiply by ten
DA74 DAAE Unpack memory variable to Accum #1
DBIB DB55 Completion of Fixed to Float conversion
DC9F DCD9 Print fixed-point value
DCA9 DCE3 Print floating-point value
DCAF DCE9 Convert number to ASCII string
E3EA E3D8 Print a character
na E775 Output byte as 2 hex digits
na E7A7 Input 2 hex digits to A
na E7B6 Input 1 hex digit to A
F0B6 F0B6 Send 'talk' to IEEE
F0BA F0BA Send 'listen' to IEEE
F12C F128 Send Secondary Address
E7DE F156 Send canned message
F167 F16F Send character to IEEE
F17A F17F Send'untalk'
F17E F183 Send 'unlisten'
F187 F18C Input from IEEE
F2C8 F2A9 Close logical file
F2CD F2AE Close logical file in A
F32A F301 Check for Stop key
F33F F315 Send message if Direct mode
na F322 LOAD subroutine
F3DB F3E6 ?LOAD ERROR
F3E5 F3EF Print READY & reset BASIC to start
F3FF F40A Print SEARCHING ...
F411 F41D Print file name
F43F F447 Get LOAD/SAVE type parameters
F462 F466 Open IEEE channel for output
F495 F494 Find specific tape header block
F504 F4FD Get string
F52A F521 Open logical file from input parameters
F52D F524 Open logical file
F579 F56E ?FILE NOT FOUND, clear I!O
F57B F570 Send error message
F5AE F5A6 Find any tape header block
F64D F63C Get pointers for tape LOAD
F667 F656 Set tape buffer start address
F67D F66C Set cassette buffer pointers
F6E6 F6F0 Close IEEE channel
F78B F770 Set input device from logical file number
F7DC F7BC Set output device from LFN
F83B F812 PRESS PLAY..; wait
F87F F855 Read tape to buffer
F88A F85E Read tape
F8B9 F886 Write tape from buffer
F8C1 F883 Write tape, leader length in A
F913 F8E6 Wait for I/O complete or Stop key
FBDC FB76 Reset tape 1/O pointer
FD1B FC9B Set interrupt vector
FFC6 FFC6 Set input device
FFC9 FFC9 Set output device
FFCC FFCC Restore default I/0 devices
FFCF FFCF Input character
FFD2 FFD2 Output character
FFE4 FFE4 Get character
Map 2. Upgrade PET/CBM Map.
0000-0002 0-2 USR Jump instruction
0003 3 Search character
0004 4 Scan-between-quotes flag
0005 5 BASIC input buffer pointer; #subscripts
0006 6 Default DIM flag
0007 7 Type: FF=string, 00=numeric
0008 8 Type: 80=integer, 00=floating point
0009 9 DATA scan flag; LIST quote flag;
memory flag
000A 10 Subscript flag; FNx flag
000B 11 0=input; 64=get; 152=read
000C 12 ATN sign flag; comparison evaluation flag
000D 13 input flag; suppress output if negative
000E 14 current I/0 device for prompt-suppress
0011-0012 17-18 BASIC integer address (for SYS, GOTO, etc.)
0013 19 Temporary string descriptor stack pointer
0014-0015 20-21 Last temporary string vector
0016-001E 22-30 Stack of descriptors for temporary strings
001F-0020 31-32 Pointer for number transfer
0021-0022 33-34 Misc. number pointer
0023-0027 35-39 Product staging area for multiplication
0028-0029 40-41 Pointer: Start-of-BASIC memory
002A-002B 42-43 Pointer: End-of-BASIC, Start-of-Variables
002C-002D 44-45 Pointer: End-of-Variables, Start-of-Arrays
002E-002F 46-47 Pointer: End-of-Arrays
0030-0031 48-49 Pointer: Bottom-of-strings (moving down)
0032-0033 50-51 Utility string pointer
0034-0035 52-53 Pointer: Limit of BASIC Memory
0036-0037 54-55 Current BASIC line number
0038-0039 56-57 Previous BASIC line number
003A-003B 58-59 Pointer to BASIC statement (for CONT)
003C-003D 60-61 Line number, current DATA line
003E-003F 62-63 Pointer to current DATA item
0040-0041 64-65 Input vector
0042-0043 66-67 Current variable name
0044-0045 68-69 Current variable address
0046-0047 70-71 Variable pointer for FOR/NEXT
0048 72 Y save register; new-operator save
004A 74 Comparison symbol accumulator
00413-004C 75-76 Misc. numeric work area
004D-0050 77-80 Work area; garbage yardstick
0051-0053 81-83 Jump vector for functions
0054-0058 84-88 Misc. numeric storage area
0059-005D 89-93 Misc. numeric storage area
005E-0063 94-99 Accumulator#1:E,M,M,M,M,S
0064 100 Series evaluation constant pointer
0065 101 Accumulator hi-order propagation word
0066-00613 102-107 Accumulator #2
006C 108 Sign comparison, primary vs. secondary
006D 109 low-order rounding byte for Acc #1
006E-006F 110-111 Cassette buffer length/Series pointer
0070-0087 112-135 Subrtn: Get BASIC Char; 77,78 =pointer
0088-008C 136-140 RND storage and work area
008D-008F 141-143 Jiffy clock for TI and TI$
0090-0091 144-145 Hardware interrupt vector
0092-0093 146-147 Break interrupt vector
0094-0095 148-149 NMI interrupt vector
0096 150 Status word ST
0097 151 Which key depressed: 255 = no key
0098 152 Shift key: 1 if depressed
0099-009A 153-154 Correction clock
009B 155 Keyswitch PIA: STOP and RVS flags
009C 156 Timing constant buffer
009D 157 Load = 0, Verify =1
009E 158 #characters in keyboard buffer
009F 159 Screen reverse flag
00A0 160 IEEE-488 mode
00A1 161 End-of-line-for-input pointer
00A3-00A4 163-164 Cursor log (row, column)
00A5 165 PBD image for tape I/O
00A6 166 Key image
00A7 167 0=flashing cursor, else no cursor
00A8 168 Countdown for cursor timing
00A9 169 Character under cursor
00AA 170 Cursor blink flag
00AB 171 EOT bit received
00AC 172 Input from screen/input from keyboard
00AD 173 X save flag
00AE 174 How many open files
00AF 175 Input device, normally 0
00B0 176 Output CMD device, normally 3
00B1 177 Tape character parity
00B2 178 Byte received flag
00B4 180 Tape buffer character
00B5 181 Pointer in file name transfer
00B7 183 Serial bit count
00B9 185 Cycle counter
00BA 186 Countdown for tape write
00BB 187 Tape buffer #1 count
00BC 188 Tape buffer #2 count
00BD 189 Write leader count; Read pass 1/pass 2
00BE 190 Write new byte, Read error flag
00BF 191 Write start bit; Read bit seq error
00C0 192 Pass 1 error log pointer
00C1 193 Pass 2 error correction pointer
00C2 194 0=Scan; 1-15=Count; $40=Load; $80=End
00C3 195 Checksum
00C4-0005 196-197 Pointer to screen line
00C6 198 Position of cursor on above line
00C7-0008 199-200 Utility pointer: tape buffer, scrolling
00C9-000A 201-202 Tape end address/end of current program
00CB-000C 203-204 Tape timing constants
00CD 205 00=direct cursor, else programmed cursor
00CE 206 Timer 1 enabled for tape read; 00 =disabled
00CF 207 EOT signal received from tape
00D0 208 Read character error
00D1 209 # characters in file name
00D2 210 Current logical file number
00D3 211 Current secondary addrs, or R/VV command
00D4 212 Current device number
00D5 213 Line length (40 or 80) for screen
00D6-00D7 214-215 Start of tape buffer, address
00D8 216 Line where cursor lives
00B9 217 Last key input, buffer checksum; bit buffer
00DA-00DB 218-219 File name pointer
00DC 220 Number of keyboard INSERTs outstanding
00DD 221 Write shift word/Receive input character
00DE 222 # blocks remaining to write/read
00DF 223 Serial word buffer
00E0-00F8 224-248 Screen line table: hi order address & line wrap
00F9 249 Cassette #1 status switch
00FA 250 Cassette #2 status switch
00FB-00FC 251-252 Tape start address
0100-010A 256-266 Binary to ASCII conversion area
0100-013E 256-318 Tape read error log for correction
0100-01FF 256-511 Processor stack area
0200-0250 512-592 BASIC input buffer
0251-025A 593-602 Logical file number table
025B-0264 603-612 Device number table
0265-026E 613-622 Secondary address, or R/W cmd, table
026F-0278 623-632 Keyboard input buffer
027A-0339 634-825 Tape #1 buffer
033A-03F9 826-1017 Tape #2 buffer
03FA-03FB 1018-1019 Vector for Machine Language Monitor
0400-7FFF 1024-32767 Available RAM including expansion
8000-8FFF 32768-36863 Video RAM
9000-BFFF 36864-49151 Available ROM expansion area
0000-E0F8 49152-57592 Microsoft BASIC interpreter
E0F9-E7FF 57593-59391 Keyboard, Screen, Interrupt programs
E810-E813 59408-59411 PIA1- Keyboard 1/0
E820-E823 59424-59427 PIA2 - IEEE-488 1/0
E840-E84F 59456-59471 VIA - I/O and Timers
F000-FFFF 61440-65535 Reset, tape, diagnostic monitor
Map 3. PET/CBM 4.0 BASIC. Zero Page.
Hex Decimal Description
0000-0002 0-2 USR jump
0003 3 Search character
0004 4 Scan-between-quotes flag
0005 5 Input buffer pointer; 11 of subscripts
0006 6 Default DIM flag
0007 7 Type: FF=string, 00=numeric
0008 8 Type: 80=integer, 00=floating point
0009 9 Flag: DATA scan; LIST quote; memory
000A 10 Subscript flag; FNX flag
000B 11 0=INPUT; $40=GET; $98=READ
000C 12 ATN sign/Comparison Evaluation flag
000D-000F 13-15 Disk status DS$ descriptor
0010 16 Current I/0 device for prompt-suppress
0011-0012 17-18 Integer value (for SYS, GOTO etc)
0013-0015 19-21 Pointers for descriptor stack
0016-001E 22-30 Descriptor stack(temp strings)
001E-0022 31-34 Utility pointer area
0023-0027 35-39 Product area for multiplication
0028-0029 40-41 Pointer: Start-of-Basic
002A-002B 42-43 Pointer: Start-of-Variables
002C-002D 44-45 Pointer: Start-of-Arrays
002E-002F 46-47 Pointer: End-of-Arrays
0030-0031 48-49 Pointer: String-storage(moving down)
0032-0033 50-51 Utility string pointer
0034-0035 52-53 Pointer: Limit-of-memory
0036-0037 54-55 Current Basic line number
0038-0039 56-57 Previous Basic line number
003A-003B 58-59 Pointer: Basic statement for CONT
003C-003D 60-61 Current DATA line number
003E-003F 62-63 Current DATA address
0040-0041 64-65 Input vector
0042-0043 66-67 Current variable name
0044-0045 68-69 Current variable address
0046-0047 70-71 Variable pointer for FOR/NEXT
0048-0049 72-73 Y-save; op-save; Basic pointer save
004A 74 Comparison symbol accumulator
004B-0050 75-80 Misc work area, pointers, etc
0051-0053 81-83 Jump vector for functions
0054-005D 84-93 Misc numeric work area
005E 94 Accumlll: Exponent
005F-0062 95-98 Accumlll: Mantissa
0063 99 Accumlll: Sign
0064 100 Series evaluation constant pointer
0065 101 Accumlll hi-order (overflow)
0066-006B 102-107 Accumlll: Exponent, etc.
006C 108 Sign comparison, Acc#1 vs #2
006D 106 Accumlll to-order (rounding)
006E-006F 110-111 Cassette buff len/Series pointer
0070-0087 112-135 CHRGET subroutine; get Basic char
0077-0078 119-120 Basic pointer (within subrtn)
0088-008C 136-140 Random number seed.
008D-008F 141-143 Jiffy clock for TI and TI$
0090-0091 144-145 Hardware interrupt vector
0092-0093 146-147 BRK interrupt vector
0094-0095 148-149 NMI interrupt vector
0096 150 Status word ST
0097 151 Which key down; 255=no key
0098 152 Shift key: 1 if depressed
0099-009A 153-154 Correction clock
009B 155 Keyswitch PIA: STOP and RVS flags
009C 156 Timing constant for tape
009D 157 Load=0, Verify=1
009E 158 Number of characters in keybd buffer
009F 159 Screen reverse flag
00A0 160 IEEE output; 255=character pending
00A1 161 End-of-line-for-input pointer
00A3-00A4 163-164 Cursor log (row, column)
00A5 165 IEEE output buffer
00A6 166 Key image
00A7 167 0=flash cursor
00A8 168 Cursor timing countdown
00A9 169 Character under cursor
00AA 170 Cursor in blink phase
00AB 171 EOT received from tape
00AC 172 Input from screen/from keyboard
00AD 173 X save
00AE 174 How many open files
00AF 175 Input device, normally 0
00B0 176 Output CMD device, normally 3
00B1 177 Tape character parity
00B2 178 Byte received flag
00B3 179 Logical Address temporary save
00B4 180 Tape buffer character; MLM command
00B5 181 File name pointer; MLM flag, counter
00B7 183 Serial bit count
00B9 185 Cycle counter
00BA 186 Tape writer countdown
00BB-00BC 187-188 Tape buffer pointers, 111 and 112
00BD 189 Write leader count; read passl/2
00BE 190 Write new byte; read error flag
00BF 191 Write start bit; read bit seq error
00C0-0001 192-193 Error log pointers, passl/2
00C2 194 0=Scan/1-15=Count/$40=Load/$80=End
00C3 195 Write leader length; read checksum
00C4-0005 196-197 Pointer to screen line
00C6 198 Position of cursor on above line
00C7-00C8 199-200 Utility pointer: tape, scroll
00C9-00CA 201-202 Tape end addrs/End of current program
00CB-00CC 203-204 Tape timing constants
00CD 205 0=direct cursor, else programmed
00CE 206 Tape read timer 1 enabled
00CF 207 EOT received from tape
00D0 208 Read character error
00D1 209 11 characters in file name
00D2 210 Current file logical address
00D3 211 Current file secondary addrs
00D4 212 Current file device number
00D5 213 Right-hand window or line margin
00D6-00D7 214-215 Pointer: Start of tape buffer
00D8 216 Line where cursor lives
00D9 217 Last key/checksum/misc.
00DA-00DB 218-219 File name pointer
00DC 220 Number of INSERTs outstanding
00DD 221 Write shift word/read character in
00DE 222 Tape blocks remaining to write/read
00DF 223 Serial word buffer
00E0-00F8 224-248 (40-column) Screen line wrap table
00E0-00E1 224-225 (80-column) Top, bottom of window
00E2 226 (80-column) Left window margin
00E3 227 (80-column) Limit of keybd buffer
00E4 228 (80-column) Key repeat flag
00E5 229 (80-column) Repeat countdown
00E6 230 (80-column) New key marker
00E7 231 (80-column) Chime time
00E8 232 (80-column) HOME count
00E9-00EA 233-234 (80-column) Input vector
00EB-00EC 235-236 (80-column) Output vector
00F9-00FA 249-250 Cassette status, 111 and 112
00FB-00FC 251-252 MLM pointer/Tape start address
00FD-00FE 253-254 MLM, DOS pointer, misc.
0100-010A 256-266 STR$ work area, MLM work
0100-013E 256-318 Tape read error log
0100-0lFF 256-511 Processor stack
0200-0250 512-592 MLM work area; Input buffer
0251-025A 593-602 File logical address table
025B-0264 603-612 File device number table
0265-026E 613-622 File secondary adds table
026E-0278 623-632 Keyboard input buffer
027A-0339 634-825 Tape#1 input buffer
033A-03F9 826-1017 Tape#2 input buffer
033A 826 DOS character pointer
033B 827 DOS drive 1 flag
033C 828 DOS drive 2 flag
033D 829 DOS length/write flag
033E 830 DOS syntax flags
033F-0340 831-832 DOS disk ID
0341 833 DOS command string count
0342-0352 834-850 DOS file name buffer
0353-0380 851-896 DOS command string buffer
03EE-03F7 1006-1015 (80-column) Tab stop table
03FA-03FB 1018-1019 Monitor extension vector
03FC 1020 IEEE timeout defeat
0400-7FFF 1024-32767 Available RAM including expansion
8000-83FF 32768-33791 (40-column) Video RAM
8000-87FF 32768-34815 (80-column) Video RAM
9000-AFFF 36864-45055 Available ROM expansion area
B000-DFFF 45056-57343 Basic, DOS, Machine Lang Monitor
E000-E7FF 57344-59391 Screen, Keyboard, Interrupt programs
E810-E813 59408-59411 PIA 1 - Keyboard 1/0
E820-E823 59424-59427 PIA 2 - IEEE-488 1/0
E840-E84F 59456-59471 VIA - I/O and timers
E880-E881 59520-59521 (80-column) CRT Controller
F000-FFFF 61440-65535 Reset, I/O handlers, Tape routines
Map 4. PET/CBM 4.0 BASIC ROM Routines.
B066-B093 Action addresses for functions
B094-B0B1 Hierarchy and action addresses for operators
B0B2-B20C Table of Basic keywords
B20D-B321 Basic messages, mostly error messages
B322-B34F Search the stack for FOR or GOSUB activity
B350-B392 Open up space in memory
B393-B39F Test: stack too deep?
B3A0-B3CC Check available memory
B3CD Send canned error message, then:
B3FF-B41E Warm start; wait for Basic command
B41F-B4B5 Handle new Basic line input
B4B6-B4E1 Rebuild chaining of Basic lines
B4E2-B4FA Receive line from keyboard
B4FB-B5A2 Crunch keywords into Basic tokens
B5A3-B5D1 Search Basic for given line number
B5D2 Perform NEW, and;
B5EC-B621 Perform CLR
B622-B62F Reset Basic execution to start
B630-B6DD Perform LIST
B6DE-B784 Perform FOR
B785-B7B6 Execute Basic statement
B7B7-B7C5 Perform RESTORE
B7C6-B7ED Perform STOP or END
B7EE-B807 Perform CONT
B808-B812 Perform RUN
B813-B82F Perform GOSUB
B830-B85C Perform GOTO
B85D Perform RETURN, then:
B883-B890 Perform DATA: skip statement
B891 Scan for next Basic statement
B894-B8B2 Scan for next Basic line
B8B3 Perform IF, and perhaps:
B8C6-B8D5 Perform REM: skip line
B8D6-B8F5 Perform ON
B8F6-B92F Accept fixed-point number
B930-BA87 Perform LET
BA88-BARD Perform PRINT#
BA8E-BAA1 Perform CMD
BAA2-BB1C Perform PRINT
BB1D-BB39 Print string from memory
BB3A-BB4B Print single format character
BB4C-BB79 Handle bad input data
BB7A-BBA3 Perform GET
BBA4-BBBD Perform INPUT#
BBBE-BBF4 Perform INPUT
BBF5-BC01 Prompt and receive input
BC02-BCF6 Perform READ
BCF7-BD18 Canned Input error messages
BD19-BD71 Perform NEXT
BD72-BD97 Check type mismatch
BD98 Evaluate expression
BEE9 Evaluate expression within parentheses
BEEF Check parenthesis, comma
BF00-BF0B Syntax error exit
BF8C-C046 Variable name setup
C047-C085 Set up function references
C086-C0B5 Perform OR, AND
C0B6-C11D Perform comparisons
C11E-C12A Perform DIM
C12B-ClBF Search for variable
ClC0-C2C7 Create new variable
C2C8-C2D8 Setup array pointer
C2D9-C2DC 32768 in floating binary
C2DD-C2FB Evaluate integer expression
C2FC-C4A7 Find or make array
C4A8 Perform FRE, and:
C4BC-C4C8 Convert fixed-to-floating
C4C9-C4CE Perform POS
C4CF-C4DB Check not Direct
C4DC-C509 Perform DEF
C50A-C51C Check FNx syntax
C51D-C58D Evaluate FNx
C58E-C59D Perform STR$
C59E-C5AF Do string vector
C5B0-C61C Scan, set up string
C61D-C669 Allocate space for string
C66A-C74E Garbage collection
C74F-C78B Concatenate
C78C-C7B4 Store string
C7B5-C810 Discard unwanted string
C811-C821 Clean descriptor stack
C822-C835 Perform CHR$
C836-C861 Perform LEFT$
C862-C86C Perform RIGHT$
C86D-C896 Perform MID$
C897-C8B1 Pull string data
C8B2-C8B7 Perform LEN
C8B8-C8C0 Switch string to numeric
C8C1-C8D0 Perform ASC
C8D1-C8E2 Get byte parameter
C8E3-C920 Perform VAL
C921-C92C Get two parameters for POKE or WAIT
C92D-C942 Convert floating-to-fixed
C943-C959 Perform PEEK
C95A-C962 Perform POKE
C963-C97E Perform WAIT
C97F-C985 Add 0.5
C986 Perform subtraction
C998-CA7C Perform addition
CA7D-CAB3 Complement accum#1
CAB4-CAB8 Overflow exit
CAB9-CAF1 Multiply-a-byte
CAF2-CB1F Constants
CB20 Perform LOG
CB5E-CBC1 Perform multiplication
CBC2-CBEC Unpack memory into accumli2
CBED-CC09 Test & adjust accumulators
CC0A-CC17 Handle overflow and underflow
CC18-CC2E Multiply by 10
CC2F-CC33 10 in floating binary
CC34 Divide by 10
CC3D Perform divide-by
CC45-CCD7 Perform divide-into
CCD8-CCFC Unpack memory into accum#1
CCFD-CD31 Pack accum411 into memory
CD32-CD41 Move accum412 to #1
CD42-CD50 Move accum111 to #2
CD51-CD60 Round accum#1
CD61-CD6E Get accum#1 sign.
CD6F-CD8D Perform SGN
CD8E-CD90 Perform ABS
CD91-CDD0 Compare accum#1 to memory
CDDl-CE01 Floating-to-fixed
CE02-CE28 Perform INT
CE29-CEB3 Convert string to floating-point
CEB4-CEE8 Get new ASCII digit
CEE9-CEF8 Constants
CF78 Print IN, then:
CF7F-CF92 Print Basic line li
CF93-D0C6 Convert floating-point to ASCII
D0C7-D107 Constants
D108 Perform SQR
D112 Perform power function
D14B-D155 Perform negation
D156-D183 Constants
D184-D1D6 Perform EXP
D1D7-D220 Series evaluation
D221-D228 RND constants
D229-D281 Perform RND
D282 Perform COS
D289-D2D1 Perform SIN
D2D2-D2FD Perform TAN
D2FE-D32B Constants
D32C-D35B Perform ATN
D35C-D398 Constants
D399-D3B5 CHRGET sub for zero page
D3B6-D471 Basic cold start
D472-D716 Machine Language Monitor
D717-D7AB MLM subroutines
D7AC-D802 Perform RECORD
D803-D837 Disk parameter checks
D838-D872 Dummy disk control messages
D873-D919 Perform CATALOG or DIRECTORY
D91A-D92E Output
D92F-D941 Find spare secondary address
D942-D976 Perform DOPEN
D977-D990 Perform APPEND
D991-D9D1 Get disk status
D9D2-DA06 Perform HEADER
DA07-DA30 Perform DCLOSE
DA31-DA64 Set up disk record
DA65-DA7D Perform COLLECT
DA7E-DAA6 Perform BACKUP
DAA7-DAC6 Perform COPY
DAC7-DAD3 Perform CONCAT
DAD4-DB0C Insert command string values
DB0D-DB39 Perform DSAVE
DB3A-DB65 Perform DLOAD
DB66-DB98 Perform SCRATCH
DB99-DBgD Check Direct command
DB9E-DBD6 Query ARE YOU SURE?
DBD7-DBE0 Print BAD DISK
DBE1-DBF9 Clear DS$ and ST
DBFA-DC67 Assemble disk command string
DC68-DE29 Parse Basic DOS command
DE2C-DE48 Get Device number
DE49-DE86 Get file name
DE87-DEgC Get small variable parameter
** Entry points only for E000-E7FF **
E000 Register/screen initialization
E0A7 Input from keyboard
E116 Input from screen
E202 Output character
E442 Main Interrupt entry
E455 Interrupt: clock, cursor, keyboard
E600 Exit from Interrupt
** **
F000-F0D1 File messages
F0D2 Send 'Talk'
F0D5 Send 'Listen'
F0D7 Send IEEE command character
F109-F142 Send byte to IEEE
F143-F150 Send byte and clear ATN
F151-F16B Option: timeout or wait
F16C-F16F DEVICE NOT PRESENT
F170-F184 Timeout on read, clear control lines
F185-F192 Send canned file message
F193-F19D Send byte, clear control lines
F19E-FlAD Send normal (deferred) IEEE char
F1AE-F1BF Drop IEEE device
F1C0-F204 Input byte from IEEE
F205-F214 GET a byte
F215-F265 INPUT a byte
F266-F2A1 Output a byte
F2A2 Abort files
F2A6-F2C0 Restore default I/0 devices
F2C1-F2DC Find/setup file data
F2DD-F334 Perform CLOSE
F335-F342 Test STOP key
F343-F348 Action STOP key
F349-F350 Send message if Direct mode
F351-F355 Test if Direct mode
F356-F400 Program load subroutine
F401-F448 Perform LOAD
F449-F46C Print SEARCHING
F46D-F47C Print LOADING or VERIFYING
F47D-F4A4 Get Load/Save parameters
F4A5-F4D2 Send name to IEEE
F4D3-F4F5 Find specific tape header
F4F6-F50C Perform VERIFY
F50D-F55F Get Open/Close parameters
F560-F5E4 Perform OPEN
F5E5-F618 Find any tape header
F619-F67A Write tape header
F67B-F694 Get start/end addrs from header
F695-F6AA Set buffer address
F6AB-F6C2 Set buffer start & end addrs
F6C3-F6CB Perform SYS
F6CC-F6DC Set tape write start & end
F6DD-F767 Perform SAVE
F768-F7AE Update clock
F7AF-F7FD Connect input device
F7FE-F84A Connect output device
F84B-F856 Bump tape buffer pointer
F857-F879 Wait for PLAY
F87A-F88B Test cassette switch
F88C-F899 Wait for RECORD
F89A Initiate tape read
F8CB Initiate tape write
F8E0-F92A Common tape I/0
F92B-F934 Test I/0 complete
F935-F944 Test STOP key
F945-F975 Tape bit timing adjust
F976-FAgB Read tape bits
FA9C-FBBA Read tape characters
FBBB-FBC3 Reset tape read address
FBC4-FBC8 Flag error into ST
FBC9-FBD7 Reset counters for new byte
FBD8-FBF3 Write a bit to tape
FBF4-FC85 Tape write
FC86-FCBF Write tape leader
FCC0-FCDA Terminate tape; restore interrupt
FCDB-FCEA Set interrupt vector
FCEB-FCF8 Turn off tape motor
FCF9-FD0A Checksum calculation
FD0B-FD15 Advance load/save pointer
FD16-FD4B Power-on Reset
FD4C-FD5C Table of interrupt vectors
** Jump table: **
FF93-FF9E CONCAT,DOPEN,DCLOSE,RECORD
FF9F-FFAA HEADER,COLLECT,BACKUP,COPY
FFAB-FFB6 APPEND,DSAVE,DLOAD,CATALOG
FFB7-FFBC RENAME,SCRATCH
FFBD Get disk status
FFC0 OPEN
FFC3 CLOSE
FFC6 Set input device
FFC9 Set output device
FFCC Restore default I/0 devices
FFCF INPUT a byte
FFD2 Output a byte
FFD5 LOAD
FFD8 SAVE
FFDB VERIFY
FFDE SYS
FFE1 Test stop key
FFE4 GET byte
FFE7 Abort all files
FFEA Update clock
FFFA-FFFF Hard vectors: NMI, Reset, INT
Map 5. VIC Zero Page And BASIC ROMs.
Hex Decimal Description
0000-0002 0-2 USR jump
0003-0004 3-4 Float-Fixed vector
0005-0006 5-6 Fixed-Float vector
0007 7 Search character
0008 8 Scan-quotes flag
0009 9 TAB column save
000A 10 O=LOAD, 1=VERIFY
000B 11 Input buffer pointer/# subscrpt
000C 12 Default DIM flag
000D 13 Type: FF=string, 00=numeric
000E 14 Type: 80=integer, 00=floating point
000F 15 DATA scan/LIST quote/memry flag
0010 16 Subscript/FNx flag
0011 17 0=INPUT;$40=GET;$98=READ
0012 18 ATN sign/Comparison eval flag
0013 19 Current I/0 prompt flag
0014-0015 20-21 Integer value
0016 22 Pointer: temporary strg stack
0017-0018 23-24 Last temp string vector
0019-0021 25-33 Stack for temporary strings
0022-0025 34-37 Utility pointer area
0026-002A 38-42 Product area for multiplication
002B-002C 43-44 Pointer: Start-of-Basic
002D-002E 45-46 Pointer: Start-of-Variables
002F-0030 47-48 Pointer: Start-of-Arrays
0031-0032 49-50 Pointer: End-of-Arrays
0033-0034 51-52 Pointer: String-storage(moving down)
0035-0036 53-54 Utility string pointer
0037-0038 55-56 Pointer: Limit-of-memory
0039-003A 57-56 Current Basic line number
003B-003C 59-60 Previous Basic line number
003D-003E 61-62 Pointer: Basic statement for CONT
003F-0040 63-64 Current DATA line number
0041-0042 65-66 Current DATA address
0043-0044 67-68 Input vector
0045-0046 69-70 Current variable name
0047-0048 71-72 Current variable address
0049-004A 73-74 Variable pointer for FOR/NEXT
004B-004C 75-76 Y-save; op-save; Basic pointer save
004D 77 Comparison symbol accumulator
004E-0053 78-83 Misc work area, pointers, etc
0054-0056 84-86 Jump vector for functions
0057-0060 87-96 Misc numeric work area
0061 97 Accum41: Exponent
0062-0065 98-101 Accum#1: Mantissa
0066 102 Accum#1: Sign
0067 103 Series evaluation constant pointer
0068 104 Accum41 hi-order (overflow)
0069-006E 105-110 Accum#2: Exponent, etc.
006F 111 Sign comparison, Acc#1 vs #2
0070 112 Accum#i to-order (rounding)
0071-0072 113-114 Cassette buff len/Series pointer
0073-008A 115-138 CHRGET subroutine; get Basic char
007A-007B 122-123 Basic pointer (within subrtn)
008B-008F 139-143 RND seed value
0090 144 Status word ST
0091 145 Keyswitch PTA: STOP and RVS flags
0092 146 Timing constant for tape
0093 147 Load=O, Verify=1
0094 148 Serial output: deferred char flag
0095 149 Serial deferred character
0096 150 Tape EOT received
0097 151 Register save
0098 152 How many open files
0099 153 Input device, normally 0
009A 154 Output CMD device, normally 3
009B 155 Tape character parity
009C 156 Byte-received flag
009D 157 Direct=$80/RUN=0 output control
009E 158 Tp Pass 1 error log/char buffer
009F 159 Tp Pass 2 err log corrected
00A0-00A2 160-162 Jiffy Clock HML
00A3 163 Serial bit count/EOI flag
00A4 164 Cycle count
00A5 165 Countdown,tape write/bit count
00A6 166 Tape buffer pointer
00A7 167 Tp Wrt ldr count/Rd pass/inbit
00A8 168 Tp Wrt new byte/Rd error/inbit cnt
00A9 169 Wrt start bit/Rd bit err/stbit
00AA 170 Tp Scan;Cnt;Ld;End/byte assy
00AB 171 Wr lead length/Rd checksum/parity
00AC-00AD 172-173 Pointer: tape bufr, scrolling
00AE-00AF 174-175 Tape end adds/End of program
00B0-00B1 176-177 Tape timing constants
00B2-00B3 178-179 Pntr: start of tape buffer
00B4 180 1=Tp timer enabled; bit cnt
00B5 181 Tp EOT/RS232 next bit to send
00B6 182 Read character error/outbyte buf
00B7 183 # characters in file name
00B8 184 Current logical file
00B9 185 Current secndy address
00BA 186 Current device
00BB-00BC 167-188 Pointer to file name
00BD 189 Wr shift word/Rd input char
00BE 190 # blocks remaining to Wr/Rd
00BF 191 Serial word buffer
00C0 192 Tape motor interlock
00C1-0002 193-194 1/0 start adds
00C3-0004 195-196 Kernel setup pointer
00C5 197 Last key pressed
00C6 198 # chars in keybd buffer
00C7 199 Screen reverse flag
00C8 200 End-of-line for input pointer
00C9-000A 201-202 Input cursor log (row, column)
00CB 203 Which key: 64 if no key
00CC 204 0=flash cursor
00CD 205 Cursor timing countdown
00CE 206 Character under cursor
00CF 207 Cursor in blink phase
00D0 208 Input from screen/from keyboard
00D1-00D2 209-210 Pointer to screen line
00D3 211 Position of cursor on above line
00D4 212 0=direct cursor, else programmed
00D5 213 Current screen line length
00D6 214 Row where cursor lives
00D7 215 Last inkey/checks um/buffer
00D8 216 # of INSERTS outstanding
00D9-00F0 217-240 Screen line link table
00F1 241 Dummy screen link
00F2 242 Screen row marker
00F3-00F4 243-244 Screen color pointer
00F5-00F6 245-246 Keyboard pointer
00F7-00F8 247-248 RS-232 Rev pntr
00F9-00FA 249-250 RS-232 Tx pntr
00FF-010A 255-266 Floating to ASCII work area
FF8A-FFF5 65418-65525 Jump Table, Including:
FFC6 - Set Input channel
FFC9 - Set Output channel
FFCC -- Restore default I/O channels
FFCF - INPUT
FFD2 - PRINT
FFE1 - Test Stop key
FFE4 - GET
c000 ROM control vectors
c00c Keyword action vectors
c052 Function vectors
c080 Operator vectors
c09e Keywords
cl9e Error messages
c328 Error message vectors
c365 Miscellaneous messages
c38a Scan stack for FOR/GOSUB
c3b8 Move memory
c3fb Check stack depth
c408 Check memory space
c435 'OUT CF MEMORY'
c437 Error routine
c469 Break entry
c474 'READY.'
c480 Ready for Basic
c49c Handle new line
c533 Re-chain lines
c560 Receive input line
c579 Crunch tokens
c613 Find Basic line
c642 Perform [NEW]
c65e Perform [CLR]
c68e Back up text pointer
c69c Perform [LISTj
c742 Perform [FOR]
c7ed Execute statement
c81d Perform [RESTORE]
c82c Break
c82f Perform [STOP]
c831 Perform [END]
c857 Perform [CONT]
c871 Perform [RUN]
c883 Perform [GOSUB]
c8a0 Perform [GOTO]
c8d2 Perform [RETURN]
c8f8 Perform [DATA]
c906 Scan for next statement
c928 Perform [IF]
c93b Perform [REM]
c94b Perform [ON]
c96b Get fixed point number
c9a5 Perform [LET]
ca80 Perform [PRINT#]
ca86 Perform [CMD]
caa0 Perform [PRINT]
cble Print message from (y,a)
cb3b Print format character
cb4d Bad-input routines
cb7b Perform [GET]
cba5 Perform [INPUT#]
cbbf Perform [INPUT]
cbf9 Prompt & input
cc06 Perform [READ]
ccfc Input error messages
Idle Perform [NEXT]
cd78 Type-match check
cd9e Evaluate expression
cea8 Constant - PI
cef1 Evaluate within brackets
cef7 Check for ') '
ceff Check for comma
cf08 Syntax error
ef14 Check range
cf28 Search for variable
cfa7 Set up FN reference
cfe6 Perform [OR]
cfe9 Perform [AND]
d016 Compare
d081 Perform [DIM]
d08b Locate variable
d113 Check alphabetic
dlld Create variable
d194 Array pointer subroutine
dla5 Value 32768
dlb2 Float-fixed conversion
dldl Set up array
d245 'BAD SUBSCRIPT'
d248 'ILLEGAL QUANTITY'
d34c Compute array size
d37d Perform [FRE]
d391 Fixed-float conversion
d39e Perform [POS]
d3a6 Check direct
d3b3 Perform [DEF]
d3e1 Check FN syntax
d3f4 Perform [FN]
d465 Perform [STR$]
d475 Calculate string vector
d487 Set up string
d4f4 Make room for string
d526 Garbage collection
d5bd Check salvageability
d606 Collect string
d63d Concatenate
d67a Build string to memory
d6a3 Discard unwanted string
d6db Clean descriptor stack
d6ec Perform [CHR$]
d700 Perform [LEFT$]
d72c Perform [RIGHT$]
4737 Perform [MID$]
d761 Pull string parameters
d77c Perform [LEN]
4782 Exit string-mode
d78b Perform [ASC]
d79b Input byte parameter
d7ad Perform [VAL]
d7eb Get params for poke/wait
d7f7 Float-fixed
d80d Perform [PEEK]
d824 Perform [POKE]
d82d Perform [WAIT]
d849 Add 0.5
d850 Subtract-from
d853 Perform [SUBTRACT]
d86a Perform [ADD]
d947 Complement fac#1
d97e 'OVERFLOW'
d983 Multiply by zero byte
d9ea Perform [LOG]
da2b Perform [MULTIPLY]
da59 Multiply-a-bit
da8c Memory to FAC#2
dab7 Adjust FAC#1/#2
dad4 Unde rf low/overflow
dae2 Multiply by 10
daf9 +10 in floating pt
dafe Divide by 10
db12 Perform [DIVIDE]
dba2 Memory to fac#1
dbc7 FAC#1 to memory
dbfc FAC#2 to fac#1
dc0c FAC#1 to FAC#2
dclb Round FAC#1
dc2b Get sign
dc39 Perform [SGN]
dc58 Perform [ABS]
dc5b Compare FAC#1 to mem
dc9b Float-fixed
dccc Perform [ INT]
dcf3 String to fac
dd7e Get ascii digit
dddd Float to ascii
df16 Decimal constants
df3a TI constants
df71 Perform [SQR]
df7b Perform [POWER]
dfb4 Perform [NEGATIVE]
dfed Perform [EXP]
e040 Series evaluate 1
e056 Series evaluate 2
e094 Perform [RND]
e0f6 ?? Breakpoints ??
e127 Perform [ SYS ]
e153 Perform [SAVE]
e162 Perform [VERIFY]
e165 Perform [LOAD]
elbb Perform [OPEN]
elc4 Perform [CLOSE]
eldl Parameters for load/save
e203 Check default parameters
e20b Check for comma
e216 Parameters for open/close
e261 Perform [COS]
e268 Perform [SIN]
e2b1 Perform [TAN]
e30b Perform [ATN]
e378 Initialize
e387 CHRGET for zero page
e3a4 Initialize Basic
e429 Power-up message
e44f Vectors for $300
e45b Initialize vectors
e467 Warm restart
e476 Program patch area
e4a0 Serial output '1'
e4a9 Serial output 101
e4b2 Get serial input & clock
e4bc Program patch area
e500 Set 6522 addrs
e505 Set screen limits
e50a Track cursor location
e518 Initalize I/0
e54c Normalize screen
e55f Clear screen
e581 Home cursor
e587 Set screen pointers
e5bb Set I/o defaults
e5c3 Set vic chip defaults
e5cf Input from keyboard
e64f Input from screen
e6b8 Quote mark test
e6c5 Set up screen print
e6ea Advance cursor
e715 Retreat cursor
e72d Back into previous line
e742 Output to screen
e8c3 Go to next line
e8d8 Do 'RETURN'
e8e8 Check line decrement
e8fa Check line increment
e912 Set colour code
e921 Colour code table
e929 Code conversion
e975 Scroll screen
e9ee Open space on screen
ea56 Move screen line
ea6e Synch colour transfer
ea7e Set start-of-line
ea8d Clear screen line
eaal Print to screen
eaaa Store on screen
eab2 Synch colour to char
eabf Interrupt (IRQ)
eble Check keyboard
ec00 Set text mode
ec46 Keyboard vectors
ec5e Keyboard maps
ed21 Graphics/text control
ed30 Set graphics mode
ed5b Wrap up screen line
ed6a Shifted key matrix
eda3 Control key matrix
ede4 Vic chip defaults
edfd Screen line adds low
ee14 Send 'talk'
ee17 Send 'listen'
eelc Send control char
ee49 Send to serial bus
eeb7 Timeout on serial
eec0 Send listen SA
eec5 Clear ATN
eece Send talk SA
eee4 Send serial deferred
eef6 Send ' untal k'
ef04 Send 'unlisten'
ef19 Receive from serial bus
ef84 Clock line on
ef84 Clock line off
ef96 Delay 1 ms
efa3 RS232 send (NMI)
efee New RS232 byte send
f016 Error or quit
f027 Compute bit count
f036 RS232 receive (NMI)
f05b Setup to receive
f09d Receive parity error
f0a2 Receive overrun error
f0a5 Receive break error
f0a8 Receive frame error
f0b9 Bad device
f0bc File to RS232
f0ed Send to RS232 buffer
f116 Input from RS232 buffer
f14f Get from RS232 buffer
f160 Check serial bus idle
f174 Messages
fle2 Print if direct
flf5 Get..
f205 ..from RS232
f20e Input
f250 Get.. tape/serial/RS232
f27a Output..
f290 ..to tape
f2c7 Set input device
f309 Set output device
f34a Close
f3cf Find file
f3df Set file values
f3ef Abort all files
f3f3 Restore default I/0
f40a Do file opening
f495 Send SA
f4c7 Open RS232
f542 Load program
f647 'SEARCHING'
f659 Print file name
f66a 'LOADING/VERIFYING'
f675 Save program
f728 'SAVING'
f734 Bump clock
f760 Get time
f767 Set time
f770 Action stop key
f77e File Error Messages
f7af Find any tape header
f7e7 Write tape header
f84d Get buffer address
f854 Set buffer start,
end pointers
f867 Find specific header
f88a Bump tape pointer
f894 'PRESS PLAY .. '
f8ab Check cassette status
f8b7 'PRESS RECORD ..'
f8c0 Initiate tape read
f8e3 Initiate tape write
f8f4 Common tape read/write
f94b Check tape stop
f95d Set timing
f98e Read bits (IRQ)
faad Store characters
fbd2 Reset pointer
fbdb New tape character setup
fbea Toggle tape
fc06 Data write
fc0b Tape write (IRQ)
fc95 Leader write (IRQ)
fccf Restore vectors
fcf6 Set vector
fd08 Kill motor
fdll Check read/write pointer
fdlb Bump read/write pointer
fd22 Powerup entry
fd3f Check A-rom
fd52 Set kernal2
fd8d Initialize system constants
fdfl IRQ vectors
fdf9 Initialize I/0 regs
fe49 Save data name
fe50 Save file details
fe57 Get status
fe66 Flag ST
fe6f Set timeout
fe73 Read/set top of memory
fe82 Read/set bottom of memory
fe91 Test memory location
fea9 NMI interrupt entry
fed2 RESET/STOP warm start
fede NMI RS232 sequences
ff56 Restore & exit
ff5c RS232 timing table
ff72 Main IRQ entry
ff8a Jumbo jump table
fffa Hardware vectors
Map 6. Commodore 64 Memory Map.
64 Memory Map
Hex Decimal
Description
0000 0
Chip directional register
0001 1
Chip I/0; memory & tape control
0003-0004 3-4 Float-Fixed vector
0005-0006 5-6 Fixed-Float vector
0007 7
Search character
0008 8
Scan-quotes flag
0009 9
TAB column save
000A 10
0=LOAD, 1=VERIFY
000B 11
Input buffer pointer/# subscrpt
000C 12
Default DIM flag
000D 13
Type: FF=string, 00=numeric
000E 14
Type: 80=integer, 00=floating point
000F 15
DATA scan/LIST quote/memry flag
0010 16
Subscript/FNx flag
0011 17
0=INPUT;$40=GET;$98=READ
0012 18
ATN sign/Comparison eval flag
0013 19
Current I/O prompt flag
0014-0015 20-21 Integer value
0016 22
Pointer: temporary strg stack
0017-0018 23-24 Last temp string vector
0019-0021 25-33 Stack for temporary strings
0022-0025 34-37 Utility pointer area
0026-002A 38-42 Product area for multiplication
002B-002C 43-44 Pointer: Start-of-Basic
002D-002E 45-46 Pointer: Start-of-Variables
002F-0030 47-48 Pointer: Start-of-Arrays
0031-0032 49-50 Pointer: End-of-Arrays
0033-0034 51-52 Pointer: String-storage(moving
down)
0035-0036 53-54 Utility string pointer
0037-0038 55-56 Pointer: Limit-of-memory
0039-003A 57-58 Current Basic line number
003B-003C 59-60 Previous Basic line number
003D-003E 61-62 Pointer: Basic statement for CONT
003F-0040 63-64 Current DATA line number
0041-0042 65-66 Current DATA address
0043-0044 67-68 Input vector
0045-0046 69-70 Current variable name
0047-0048 71-72 Current variable address
0049-004A 73-74 Variable pointer for FOR/NEXT
004B-004C 75-76 Y-save; op-save; Basic pointer
save
004D 77
Comparison symbol accumulator
004E-0053 78-83 Misc work area, pointers, etc
0054-0056 84-86 Jump vector for functions
0057-0060 87-96 Misc numeric work area
0061 97
Accum#1: Exponent
0062-0065 98-101 Accum#1: Mantissa
0066 102
Accum#1: Sign
0067 103
Series evaluation constant pointer
0068 104
Accum#1 hi-order (overflow)
0069-006E 105-110 Accum#2: Exponent, etc.
006F 111
Sign comparison, Acc#1 vs #2
0070 112
Accum#1 to-order (rounding)
0071-0072 113-114 Cassette buff len/Series pointer
0073-008A 115-138 CHRGET subroutine; get Basic char
007A-007B 122-123 Basic pointer (within subrtn)
008B-008F 139-143 RND seed value
0090 144
Status word ST
0091 145
Keyswitch PIA: STOP arid RVS flags
0092 146
Timing constant for tape
0093 147
Load=O, Verify=1
0094 148
Serial output: deferred char flag
0095 149
Serial deferred character
0096 150
Tape EOT received
0097 151
Register save
0098 152
How many open files
0099 153
Input device, normally 0
009A 154
Output CMD device, normally 3
009B 155
Tape character parity
009C 156
Byte-received flag
009D 157
Direct=$80/RUN=0 output control
009E 158
Tp Pass 1 error log/char buffer
009F 159
Tp Pass 2 err log corrected
00A0-00A2 160-162 Jiffy Clock HML
00A3 163
Serial bit count/EOI flaq
00A4 164
Cycle count
00A5 165
Countdown,tape write/bit count
00A6 166
Tape buffer pointer
00A7 167
Tp Wrt ldr count/Rd pass/inbit
00A8 168
Tp Wrt new byte/Rd error/inbit cnt
00A9 169
Wrt start bit/Rd bit err/stbit
00AA 170
Tp Scan;Cnt;Ld;End/byte assy
00AB 171
Wr lead length/Rd checksum/parity
00AC-00AD 172-173 Pointer: tape bufr, scrolling
00AE-00AF 174-175 Tape end adds/End of program
00B0-00B1 176-177 Tape timing constants
00B2-00B3 178-179 Pntr: start of tape buffer
00B4 180
1=Tp timer enabled; bit count
00B5 181
Tp EOT/RS232 next bit to send
00B6 182
Read character error/outbyte buf
00B7 183
# characters in file name
00B8 184
Current logical file
00B9 185
Current secndy address
00BA 186
Current device
00BB-00BC 187-188 Pointer to file name
00BD 189
Wr shift word/Rd input char
00BE 190
# blocks remaining to Wr/Rd
00BF 191
Serial word buffer
00C0 192
Tape motor interlock
00C1-0002 193-194 I/O start address
00C3-0004 195-196 Kernel setup pointer
00C5 197
Last key pressed
00C6 198
# chars in keybd buffer
00C7 199
Screen reverse flag
00C8 200
End-of-line for input pointer
00C9-000A 201-202 Input cursor log (row, column)
00CB 203
Which key: 64 if no key
00CC 204
0=flash cursor
00CD 205
Cursor timing countdown
00CE 206
Character under cursor
00CF 207
Cursor in blink phase
00D0 208
Input from screen/from keyboard
00D1-00D2 209-210 Pointer to screen line
00D3 211
Position of cursor on above line
00D4 212
0=direct cursor, else programmed
00D5 213
Current screen line length
00D6 214
Row where curosr lives
00D7 215
Last inkey/checksum/buffer
00D8 216
# of INSERTS outstanding
00D9-00F2 217-242 Screen line link table
00F3-00F4 243-244 Screen color pointer
00F5-00F6 245-246 Keyboard pointer
00F7-00F8 247-248 RS-232 Rcv pntr
00F9-00FA 249-250 RS-232 Tx pntr
00FF-010A 255-266 Floating to ASCII work area
0100-013E 256-318 Tape error log
0100-01FF 256-511 Processor stack area
0200-0258 512-600 Basic input buffer
0259-0262 601-610 Logical file table
0263-026C 611-620 Device # table
026D-0276 621-630 Sec Adds table
0277-0280 631-640 Keybd buffer
0281-0282 641-642 Start of Basic Memory
0283-0284 643-644 Top of Basic Memory
0285 645
Serial bus timeout flag
0286 646
Current color code
0287 647
Color under cursor
0288 648
Screen memory page
0289 649
Max size of keybd buffer
028A 650
Repeat all keys
028B 651
Repeat speed counter
028C 652
Repeat delay counter
028D 653
Keyboard Shift/Control flag
028E 654
Last shift pattern
028F-0290 655-656 Keyboard table setup pointer
0291 657
Keyboard shift mode
0292 658
0=scroll enable
0293 659
RS-232 control reg
0294 660
RS-232 command reg
0295-0296 661-662 Bit timing
0297 663
RS-232 status
0298 664
# bits to send
0299-029A 665 RS-232 speed/code
029B 667
RS232 receive pointer
029C 668
RS232 input pointer
029D 669
RS232 transmit pointer
029F 670
RS232 output pointer
029F-02A0 671-672 IRQ save during tape I/0
02A1 673
CIA 2 (NMI) Interrupt Control
02A2 574
CIA 1 Timer A control log
02A3 675
CIA 1 Interrupt Log
02A4 676
CIA 1 Timer A enabled flag
02A5 677
Screen row marker
02C0-02FE 704-766 (Sprite 11)
0300-0301 768-769 Error message link
0302-0303 770-771 Basic warm start link
0304-0305 772-773 Crunch Basic tokens link
0306-0307 774-775 Print tokens link
0308-0309 776-777 Start new Basic code link
030A-030B 778-779 Get arithmetic element link
030C 780
SYS A-reg save
030D 781
SYS X-rea save
030E 782
SYS Y-reg save
030F 783
SYS status reg save
0310-0312 784-785 USR function jump
(8248)
0314-0315 788-789 Hardware interrupt vector (EA31)
0316-0317 790-791 Break interrupt vector
(FE66)
0318-0319 792-793 NMI interrupt vector
(FE47)
031A-031B 794-795 OPEN vector
(F34A)
031C-031D 796-797 CLOSE vector
(F291)
031E-031F 798-799 Set-input vector
(F20E)
0320-0321 800-801 Set-output vector
(F250)
0322-0323 802-803 Restore 1/0 vector
(F333)
0324-0325 804-805 INPUT vector
(F157)
0326-0327 806-807 Output vector
(F1CA)
0328-0329 808-809 Test-STOP vector
(FEED)
032A-032B 810-811 GET vector
(F13E)
032C-032D 812-813 Abort I/0 vector
(F32F)
032E-032F 814-815 Warm start vector
(FE66)
0330-0331 816-817 LOAD link
(F4A5)
0332-0333 818-819 SAVE link
(F5ED)
033C-03FB 828-1019 Cassette buffer
0340-037E 832-894 (Sprite 13)
0380-03BE 896--958 (Sprite 14)
0300-03FE 960-1022 (Sprite 15)
0400-07FF 1024-2047 Screen memory
0800-9FFF 2048-40959 Basic RAM memory
8000-9FFF 32768-40959 Alternate: ROM plug-in area
A000-BFFF 40960-49151 ROM: Basic
A000-BFFF 49060-49151 Alternate: RAM
0000-CFFF 49152-53247 RAM memory, including alternate
D000-D02E 53248-53294 Video Chip (6566)
D400-D41C 54272-54300 Sound Chip (6581 SID)
D800-DBFF 55296-56319 Color nybble memory
D000-DC0F 56320-56335 Interface chip 1, IRQ (6526 CIA)
DD00-DD0F 56576-56591 Interface chip 2, NMI (6526 CIA)
D000-DFFF 53248-57343 Alternate: Character set
E000-FFFF 57344-65535 ROM: Operating System
E000-FFFF 57344-65535 Alternate: RAM
FF81-FFF5 65409-65525 Jump Table, Including:
FFC6 - Set Input channel
FFC9 - Set Output channel
FFCC - Restore default I/0 channels
FFCF - INPUT
FFD2 - PRINT
FFE1 - Test Stop key
FFE4 - GET
Map 7. Atari Memory.
;
;PAGE ZERO RAM ASSIGNMENTS
;
0000 LINZBS = $0000
;LINBUG RAM (WILL BE REPLACED BY MONITOR RAM)
;
;THESE LOCATIONS ARE NOT CLEARED
0002 CASINI = $0002
;CASSETTE INIT LOCATION
0004 RAMLO = $0004
;RAM POINTER FOR MEMORY TEST
0006 TRAMSZ = $0006
;TEMPORARY REGISTER FOR RAM SIZE
0007 TSTDAT = $0007
;RAM TEST DATA REGISTER
;
;CLEARED ON COLD START ONLY
0008 WARMST = $0008
;WARM START FLAG
0009 BOOTQ = $0009
;SUCCESSFUL BOOT FLAG <WAS BOOT?>
000A DOSVEC = $000A
;DISK SOFTWARE START FLAG
000C DOSINI = $000C
;DISK SOFTWARE INIT ADDRESS
000E APPMHI = $000E
;APPLICATIONS MEMORY HI LIMIT
;
;CLEARED ON A COLD OR WARM START
0010 INTZBS = $0010
;INTERRUPT HANDLER
0010 POKMSK = $0010
;SYSTEM MASK FOR POKEY IRQ HANDLER
0011 BRKKEY = $0011
;BREAK KEY FLAG
0012 RTCLOCK = $0012 ;REAL
TIME CLOCK (IN 16 MSEC UNITS)
;
0015 BUFADR = $0015
;INDIRECT BUFFER ADDRESS REGISTER
;
0017 ICCOMT = $0017
;COMMAND FOR VECTOR
;
0018 DSKFMS = $0018
;DISK FILE MANAGER POINTER
;
001A DSKUTL = $001A
;DISK UTILITIES POINTER
001C PTIMOT = $001C
;PRINTER TIME OUT REGISTER
001D PBPNT = $0010
;PRINTER BUFFER POINTER
001E PBUFSZ = $001E
;PRINT BUFFER SIZE
001F PTEMP = $001F
;TEMPORARY REGISTER
;
0020 ZIOCB = $0020 ;ZERO
PAGE 1/0 CONTROL BLOCK
0010 IOCBSZ = 16
;NUMBER OF BYTES PER IOCB
0080 MAXIOC = 8'IOCBSZ
;LENGTH OF THE IOCS AREA
0020 IOCBAS = $0020
0020 ICHIDZ = $0020
;HANDLER INDEX NUMBER (FF == IOCB FREE)
0021 ICDNOZ = $0021
;DEVICE NUMBER (DRIVE NUMBER)
0022 ICCOMZ = 0022
;COMMAND CODE
0023 ICSTAZ = $0023
;STATUS OF LAST IOCB ACTION
0024 IC9ALZ = $0024
;BUFFER ADDRESS LOW BYTE
0025 ICBAHZ = $0025
;BUFFER ADDRESS HIGH BYTE
0026 ICPTLZ = $0026
;PUT BYTE ROUTINE ADDRESS - 1
0027 ICPTHZ = $0027
0028 ICBLLZ = $0028
;BUFFER LENGTH LOW BYTE
0029 ICBLHZ = $0029
002A ICAXIZ = $002A
;AUXILIARY INFORMATION FIRST BYTE
0028 ICAX2Z = $0028
002C ICSPRZ = $002C
;TWO SPARE BYTES (CIO LOCAL USE)
002E ICIONO = ICSPRZ+2
;ICOB NUMBER X 16
002F CIOCHR = ICSPRZ+3
;CHARACTER BYTE FOR CURRENT OPERATION
;
0030 STATUS = $0030
;INTERNAL STATUS STORAGE
0031 CHKSUM = $0031
;CHECKSUM (SINGLE BYTE SUM WITH CARRY)
0032 BUFRLO = $0032
;POINTER TO DATA BUFFER (LO BYTE)
0033 BUFRHI = $0033
;POINTER TO DATA BUFFER (HI BYTE)
0034 BFENLO = $0034
;NEXT BYTE PAST END OF DATA BUFFER (LO BYTE)
0035 BFENHI = $0035
;NEXT BYTE PAST END OF DATA BUFFER (HI BYTE)
0036 CRETRY = $0036
;NUMBER OF COMMAND FRAME RETRIES
0037 DRETRY = $0037
;NUMBER OF DEVICE RETRIES
0038 BUFRFL = $0038
;DATA BUFFER FULL FLAG
0039 RECVDN = $0039
;RECIEVE DONE FLAG
003A XMTDON = $003A
;TRANSMISSION DONE FLAG
0038 CHKSNT = $003B
;CHECKSUM SENT FLAG
003C NOCKSM = $003C
;NO CHECKSUM FOLLOWS DATA FLAG
;
;
003D BPTR = $003D
003E FTYPE = $003E
003F FEOF = $003F
0040 FREQ = $0040
0041 SOUNDR = $0041
;NOISY I/0 FLAG (ZERO IS QUIET)
0042 CRITIC = $0042
;DEFINES CRITICAL SECTION (CRITICAL IF NON-ZERO)
;
0043 FMSZPG = $0043
;TOTAL OF 7 BYTES FOR DISK FILE MANAGER ZERO PAGE
;
;
004A CKEY = $004A
;FLAG SET WHEN GAME START PRESSED
0048 CASSBT = $0048
;CASSETTE BOOT FLAG
004C DSTAT = $004C
;DISPLAY STATUS
;
004D ATRACT = $004D
;ATRACT FLAG
004E DRKMSK = $C04E
;DARK ATRACT FLAG
004E COLORH = $004F
;ATRACT COLOR SHIFTER (EOR'D WITH PLAYFIELD COLORS)
;
;LEDGE = 2
;LMARGN'S VALUE AT COLD START
;REDGE = 39 ;
0050 TMPf,HR = $0050
0051 HOLD1 = $0051
0052 LMARGN = $0052
;LEFT MARGIN (SET TO ONE AT POWER ON)
0053 RMARGN = $0053
;RIGHT MARGIN (SET TO ONE AT POWER ON)
0054 ROWCRS = $0054
;CURSOR COUNTERS
0055 COLCRS = $0055
0057 DINDEX = $0057
0058 SAVMSC = $0058
005A OLDROW = $005A
005B OLDCOL = $0058
005D OLDCHR = $005D
;DATA UNDER CURSOR
005E OLDADR = $005E
0060 NEWROW = $0060
;POINT DRAW GOES TO
0061 NEWCOL = $0061
0063 LOGCOL = $0063
;POINTS AT COLUMN IN LOGICAL LINE
0064 ADRESS = $0064
0066 MLTTMP = $0066
0068 SAVADR = $0068
006A RAMTOP = $006A
;RAM SIZE DEFINED BY POWER ON LOGIC
006B BUFCNT = $0068
;BUFFER COUNT
006C BUFSTR = $006C
;EDITOR GETCH POINTER
006E BITMSK = $006E
;BIT MASK
;LOTS OF RANDOM TEMPS
0078 SWPFLG = $0078
;NON-0 IF TXT AND REGULAR RAM IS SWAPPED
007C HOLDCH = $007C
;CH IS MOVED HERE IN KGETCH BEfore CNrL & SHIFT PROC
;
;
;
;80 - FF ARE FOR FP, USER, FMS AND DOS
;
;
;PAGE 1 -- STACK
;
;
;PAGE TWO RAM ASSIGNMENTS
;
0200 INTABS = $0200
;INTERRUPT RAM
0200 VDBLST = $0200
;DISPLAY LIST NMI VECTOR
0202 VPRCED = $0202
;PROCEED LINE IRQ VECTOR
0204 VINTER = $0204
;INTERRUPT LINE IRQ VECTOR
0206 VBREAK = $0206
;SOFTWARE BREAK (00) INSTRUCTION IRQ VECTOR
0208 VKEYBD = $0208
;POKEY KEYBOARD IRQ VECTOR
020A VSERIN = $020A
;POKEY SERIAL INPUT READY IRQ
020C VSEROR = $020C
:POKEY SERIAL OUTPUT READY IRQ
020E VSEROC = $020E
;POKEY SERIAL OUTPUT COMPLETE IRQ
0210 VTIMR1 = $0210
;POKEY TIMER 1 IRQ
0212 VTIMR2 = $0212
;POKEY TIMER 2 IRQ
0214 VTIMR4 = $0214
;POKEY TIMER 4 IRQ
0216 VIMIRQ = $0216
;IMMEDIATE IRQ VECTOR
0218 CDTMV1 = $0218
;COUNT DOWN TIMER 1
021A CDTMV2 = $021A
;COUNT DOWN TIMER 2
021C CDTMV3 = $021C
;COUNT DOWN TIMER 3
021E CDTMV4 = $021E
;COUNT DOWN TIMER 4
0220 CDTMV5 = $0220
;COUNT DOWN TIMER 5
0222 VVBLKI = $0222
;IMMEDIATE VERTICAL BLANK NMI VECTOR
0224 VVBLKD = $0224
;DEFERRED VERTICAL BLANK NMI VECTOR
0226 CDTMA1 = $0226
;COUNT DOWN TIMER 1 JSR ADDRESS
0228 CDTMA2 = $0228
;Court DOWN TIMER 2 JSR ADDRESS
022A CDTMF3 = $022A
;COUNT DOWN TIMER 3 FLAG
0228 SRTIMR = $0228
;SOFTWARE REPEAT TIMER
022C CDTMF4 = $022C
;COUNT DOWN TIMER 4 FLAG
022E CDTMF5 = $022E
;COUNT DOWN TIMER 5 FLAG
022E SDMCTL = $022F
;SAVE DMACTL REGISTER
0230 SDLSTL = $0230
;SAVE DISPLAY LIST LOW BYTE
0231 SDLSTH = $0231
;SAVE DISPLAY LIST HIGH BYTE
0232 SSKCTL = $0232
;SKCTL REGISTER RAM
;
0234 LPENH = $0234
;LIGHT PEN HORIZONTAL VALUE
0235 LPENV = $0235
;LIGHT PEN VERTICAL VALUE
026F GPRIOR = $26F
;Global priority cell
;
;
;POTENTIOMETERS
;
;
0270 PADDLO = $0270
0271 PADDL1 = $0271
0272 PADDL2 = $0272
0273 PADDL3 = $0273
0274 PADDL4 = $0274
0275 PADDL5 = $0275
0276 PADDLE = $0276
0277 PADDL7 = $0277
;
;
;JOYSTICKS
;
;
0278 STICK0 = $0278
0279 STICK1 = $0?79
027A STICK2 = $027A
027B STICK3 = $027B
;
;
;PADDLE TRIGGER
;
;
027C PTRIGO = $027f
027D PTRIGI = $027D
027E PTRIG2 = $027E
027E PTRIG3 = $027F
0280 PTRIG4 = $0280
0281 PTRIG5 = $0281
0282 PTRIG6 = $0282
0283 PTRIG7 = $0283
;
;
;JOYSTICK TRIGGER
;
;
0284 STRIGO = $0284
0285 STRIGI = $0285
0286 STRIG2 = $0286
0287 STRIG3 = $0287
;
;
;Many random OS variables, the following were
commented
;
;
0290 TXTROW = $0290
;Text rowers
0291 TXTCOL = $0291
;Text colcrs
0293 TINDEX = $0293
;Text index
0294 TXTMSC = $0294
;fools convert into new msc
0296 TXTOLD = $0296
;oldrow and oldcol for text (etc.)
02A2 ESCFLG = $02A2
;Escape flan
0282 LOGMAP = $0282
;Logical line start bit map
0286 INVFLAG = $0286 ;Inverse
video flag (toggled by Atari key)
0287 FILFIG = $0287
;Fill flag for draw
0288 SCRFLG = $02BB
;Set if scroll occures
028E SHFLOK = $02BE
;Shift lock
02BF BOTSCR = $02BF
;Bottom of screen: 24 Norm, 4 Split,
;
;
;COLORS
;
;
02C0 PCOLRO = $02C0
;PO COLOR
02C1 PCOLRI = $02CI
;P1 COLOR
02C2 PCOLR2 = $02C2
;P2 COLOR
02C3 PCOLR3 = $02C3
;P3 COLOR
02C4 COLORO = $02C4
;COLOR 0
0205 COLORI = $02C5
;COLOR 1
02C6 COLOR2 = $02C6
;COLOR 2
02C7 COLOR3 = $02C7
;COLOR 3
0208 COLOR4 = $02C8
;COLOR 4
;
;
;GLOBAL VARIABLES
;
;
02E4 RAMSIZ = $02E4
;RAM SIZE (HI BYTE ONLY)
02E5 MEMTOP = $02E5
;TOP OF AVAILABLE USER MEMORY
02E7 MEMLO = $02E7
BOFTOM OF AVAILABLE USER MEMORY
02EA DVSTAT = $02EA
;STATUS BUFFER
;
02F0 CRSINH = $02FO
;CURSOR INHIBIT (00 = CURSOR ON)
02F1 KEYDEL = $02F1
;Key delay
02F3 CHACT = $02F3
;CHACTL REGISTER RAM
02F4 CHBAS = $02F4
;CHBAS REGISTER RAM
02FD FILDAT = $02FD
;RIGHT FILL DATA (DRAW)
02FB ATACHR = $02FB ;Atascii character
02FC CH = $02FC
;global variable for keyboard
02FE DSPFLA = $02FE
;DISPLAY FLAG: DISPLAYS CNTLS IF NON ZERO;
02FF SSFLAG = $02FF
;Start/stop flag for paging (CNTL 1). Cleared by Brea
;
;Page three RAM assignments
;
;
;Device control blocks
;(SIO)
0300 DCB = $0300
;Device control block
0300 DDEVIC = $0300
;Peripheral Unit 1 bus I.D. number
0301 DUNIT = $0301
;Unit number
0302 DCOMNO = $0302
;Bus command
0303 DSTATS = $0303
;Command Type/status return
0304 DBUFLO = $0304
;Data buffe pointe low
0305 DBUFHI = $0305
0306 DTIMLO = $0306
;Device time out in 1 second units
0308 DBYTLO = $0308
;Number of bytes to be transvered low byte
0309 DBYTHI = $0309
030A DAUX1 = $030A
;Command Aux byte 1
030B DAUX2 = $030B
;
0340 IOCB = $0340
0340 ICHID = $0340
;Handler index number (FF = IOCB free)
0341 ICDNO = $0341
;Device number (drive number)
0342 ICCOM = $0342
;Command code
0343 ICSTA = $0343
;Status of last IOCB action
0344 ICBAL = $0344
;Buffer address low byte
0345 ICBAH = $0345
0346 ICPTL = $0346
;Put byte routine address - 1
0347 ICPTH = $0347
0348 ICBLL = $0348
;Buffer length low byte
0349 ICBLH = $0349
034A ICAX1 = $034A
;Auxiliary information first byte
0348 ICAX2 = $0348
034C ICSPR = $034C
;four spare bytes
;
03C0 PRNBUF = $03CO
;Printer buffer (40 bytes)
;(21 spare bytes)
;
;Page Four Ram Assignments
03FD CASBUF = $03FD
;Cassette Buffer (131 bytes)
0480 USAREA = $0480
; (0480 thru 05FF for the user)
(except for floating point...)
;
;FLOATING POINT ROM ROUTINES
;
;
;IF CARRY IS USED THEN CARRY CLEAR => NO
ERROR, CARRY SET => ERROR
;
D800 AFP = $D800
;ASCII -> FLOATING POINT (FP)
;INBUFF + CIX -> FRO, CIX, CARRY
D8E6 FASC = $DBE6
;FP -> ASCII FRO -> FOR,F00+1, CARRY
D9AA IFP = $D9AA
;INTEGER -> FP
;0-$FFFF (L.SB, MSB) IN FRO,FRO+1->FRO
D92D FPI = $D92D
;FP -> INTEGER FRO -> FRO,FRO+1, CARRY
DA60 FSUB = $DA60
;FRO <- FRO - FR1, CARRY
DA66 FADD = $DA66
;FRO <- FRO + FR1 CARRY
DADB FMUL = $DADS
;FRO <- FRO FR1 CARRY
DB28 FDIV = $DB28
;FRO <- FRO / FR1 CARRY
DD89 FLOOR = $DD89
;FLOATING LOAD REGO FRO <- (X,Y)
DD8D FLDOP = $DD8D
FRO <- (FLPTR)
DD98 FLDlR = $DD98
FR1 <- (X,Y)
DD9C FLDlP = $DD9C
FR1 <- (FLPTR)
DDA7 FSTOR = $DDA7
;FLOATING STORE REGO (X,Y) <- FRO
DDAB FSTOP = $DDAB
(FLTPTR)<- FRO
DDB6 FMOVE = $DDB6
;FR1 <- FRO
DD40 PLYEVL = $DD40
;FRO <- P(Z) = SUM(I = N TO 0) (A(I) *Z**I) CARRY
;INPUT: (X,Y) = A(N), A(N-1)
...A(0) -> PLYARG
;ACC = # OF COEFFICIENTS = DEGREE
+ 1
;FRO = Z
DDC0 EXP = $DDCO
;FRO <- E**FRO = EXP10(FRO * LOG10(E)) CARRY
DDCC EXP10 = $DDCC
;FRO <- 10**FRO CARRY
DECD LOG = $DECD
;FRO <- LN(FRO) = LOG10(FRO) / LOG10(E) CARRY
DED1 LOG10 = $DED1
;FRO <- LOG10(FRO) CARRY
;
;
;THE FOLLOWING ARE IN THE BASIC CARTRIDGE:
;
;
BD81 SIN = $BD81
;FRO <- SIN(FRO) DEGFLG=O => RADS, 6=>DEG. CARRY
BD73 COs = $BD73
;FRO <- COS(FRO) CARRY
BD43 ATAN = $B043
;FRO <- ATN(FRO) CARRY
BEB1 SQR = $BE61
;FRO <- SQUAREROOT(FRO) CARRY
;
;
;FLOATING POINT ROUTINES ZERO PAGE (NEEDED
ONLY IF F.P.
;ROUTINES ARE CALLED)
00D4 FRO = $00D4
;FP REGO
00E0 FR1 = $00E0
;FP REG1
00F2 CIX = $00F2
;CURRENT INPUT INDEX
00F3 INBUFF = $00F3
;POINTS TO USER'S LINE INPUT BUFFER
00FB RADFLG = $00FB
;0 = RADIANS, 6 = DEGREES
00FC FLTPTR = $00FC
;POINTS TO USERS FLOATING POINT NUMBER
;
;
;FLOATING POINT ROUTINES' NON-ZP RAM
;
;(057E to 05FF)
0580 LBUFF = $0580
;LINE BUFFER
05EO PLYARG = LBUFF+$60
;POLYNOMJLA ARGUMENTS
;
;
;
;
;
;
;
;COLLEEN MNEMONICS
;
;
;
D200 POKEY =
$D200 ;VBLANK ACTION: DESCRIPTION:
D200 POTO = POKEY+0
;POT0-->PADDL0 0-227 IN RAM CELL
D201 POT1 = POKEY+1
;POT1-->PADDL1 0-227 IN RAM CELL
D202 POT2 = POKEY+2
;POT2-->PADDL2 0-227 IN RAM CELL
D203 POT3 = POKEY+3
;POT3-->PADDL3 0-227 IN RAM CELL
D204 POT4 = POKEY+4
;POT4-->PADDL4 0-227 IN RAM CELL
D205 POT5 = POKEY+5
;POT5-->PADDL5 0--227 IN RAM CELL
D206 POT6 = POKEY+6
;POT6-->PADDL6 0-22_7 IN RAM CELL
D207 POT7 = POKEY+7
;POT7-->PADDL7 0-227 IN RAM CELL
D208 ALLPOT = POKEY+8
;???
D209 KBCODE = POKEY+9
D20A RANDOM = POKEY+10
D20B POTGO = POKEY+11
;Strobed
;n/a
D20D SERIN = POKEY+13
D20E IRQST = POKEY+14
D20F SKSTAT = POKEY+15
D200 AUDF1 = POKEY+O
D201 AUDC1 = POKEY+1
D202 AUDF2 = POKEY+2
D203 AUDC2 = POKEY+3
D204 AUDF3 = POKEY+4
D205 AUDC3 = POKEY+5
D206 AUDF4 = POKEY+6
D207 AUDC4 = POKEY+7
D208 AUDCT = POKEY+8
;NONE AUDCTL<--[SIO]
D209 STIMFR = POKEY+9
D20A SKRES = POKEY+10 ;NONE
SKRES<--[SIO]
D208 POTGO = POKEY+11
D20D SEROUT = POKEY+13
;NONE SEROUT<--[SIO]
D20E IRQEN = POKEY+14
;POKMSK-->IRQEN (AFFECTED BY OPEN S: OR E:)
D20F SKCTL = POKEY+15
;SSKCTL-->SKCTL SSKCTL<--[SIO]
;
D000 CTIA = $D000
D000 HPOSPO = CTIA+0
D001 HPOSPI = CTIA+1
D002 HPOSP2 = CTIA+2
D003 HPOSP3 = CTIA+3
D004 HPOSMO = CTIA+4
D005 HPOSMI = CTIA+5
D006 HPOSM2 = CTIA+6
D007 HPOSM3 = CTIA+7
D008 SIZEPO = CTIA+8
D009 SIZEP1 = CTIA+9
D00A SIZEP2 = CTIA+10
D008 SIZEP3 = CTIA+ll
D00C SIZEM = CTIA+12
D00D GRAFP0 = CTIA+13
D00E GRAFP1 = CTIA+14
D00F GRAFP2 = CTIA+15
D010 GRAFP3 = CTIA+16
D011 GRAFM = CTIA+17
D012 COLPMO = CTIA+18
;PCOLRO-->COLPMO WITH ATTRACT MODE
D013 COLPM1 = CTIA+19
;ETC.N
D014 CGLPM2 = CTIA+20
D015 COLPM3 = CTIA+21
D016 COLPF0 = CTIA+22
D017 COLPF1 = CTIA+23
D018 COLPF2 = CTIA+24
D019 COLPF3 = CTIA+25
D01A COLBK = CTIA+26
001B PRIOR = CTIA+27
D01C VDELAY = CTIA+28
D01D GRACTL = CTIA+29
D01E HITCLR = CTIA+30
D0IF CONSOL = CTIA+31
;$08-->CONSOL TURN OFF SPEAKER
;
D000 MOPF = CTIA+0
D002 M2PF = CTIA+2
D003 M3PF = CTIA+3
D004 POPF = CTIA+4
0005 PIPF = CTIA+5
D006 P2PF = CTIA+6
D007 P3PF = CTIA+7
D008 MOPL = CTIA+8
D009 MlPL = CTIA+9
D00A M2PL = CTIA+10
D008 M3PL = CTIA+11
D00C POPL = CTIA+12
D00D PlPL = CTIA+13
D00E P2PL = CTIA+14
D00F P3PL = CTIA+15
D010 TRIGO = CTIA+16
;TRIGO-->STRIGI
D011 TRIG1 = CTIA+17
;ETC.
D012 TRIG2 = CTIA+18
D013 TRIG3 = CTIA+19
D014 PAL = CTIA+20
;
D400 ANTIC = $D400
D400 DMACTL = ANTIC+0
;DMACTL<--SDMCTL ON OPEN S: OR E:
D401 CHARCTL = ANTIC+1
;CHACTL<--CHACT ON OPEN S: OR E:
D402 DLISTL = ANTIC+2
;DLISTL<--SDLSTL ON OPEN S: OR E:
D403 DLISTH = ANTIC+3
;DLISTH<--SDLSTH ON OPEN S: OR E:
D404 HSCROL = ANTIC+4
D405 VSCROL = ANTIC+5
D407 PMBASE = ANTIC+7
D409 CHBASE = ANTIC+9
;CHBASE<--CHBAS ON OPEN S: OR E:
D40A WSYNC = ANTIC+10
D40B VCOUNT = ANTIC+11
D40C PENH = ANTIC+12
D40D PENV = ANTIC+13
D40E NMIEN = ANTIC+14
;NMIEN<--40 POWER ON AND [SETVBV]
D40F NMIRES = ANTIC+15
;STROBED
D40F NMIST = ANTIC+15
E400 EDITRV = $E400 ;EDITOR
E410 SCREEV = $E410
;TELEVISION SCREEN
E420 KEYBDV = $E420 ;KEYBOARD
E430 PRINTV = $E430 ;PRINTER
E440 CASETV = $E440 ;CASSETTE
E459 SIOV = $E459
;serial input output routine
E45C SETVBV = $E45C
;set system timers routine
;With respect to SETVBV, the call sequence is
;X - MSB of vector/timer
;Y - LSB of vector/timer
;A - H of vector to hack
0001 SETMR1 = 1
;Timer 1
0002 S11MR2 = 2
; 2
0003 SCTMR3 = 3
; 3
0004 SETMR4 = 4
; 4
0005 SETMR5 = 5
; 5
0006 SETIMM = 6
;Immediate VBLANK
0007 SETDEF = 7
;Deffered VBLANK
E45F SYSVBV = $E45F
;SYSTEM VERTICAL BLANK CALCULATIONS
E462 XITVBL = SE462
;EXIT VERTICAL BLANK. CALCULATIONS
E466 SIOINV = $E465
;SERIAL INPUT OUTFUi INITIALIZATION
For Further Reference
Apple: What's Where In The Apple, William Luebbert, Micro Ink, Inc., 34
Chelmsford St., Chelmsford, MA 01824, 1981.
Atari: Mapping The Atari, Ian Chadwick, COMPUTE! Books, P.O. Box 5406,
Greensboro, NC 27403, 1983. (This covers the operating system and provides
lengthy cross-referenced explanations of Atari's memory addresses.)
Atari: The Atari BASIC Sourcebook, Bill Wilkinson, COMPUTE! Books, P.O.
Box 5406, Greensboro, NC 27403, 1983. (Complete commented source code of Atari
BASIC, with explanatory text.)
Return to Table of Contents | Previous Chapter | Next Chapter