|
 |
 |
Appendix
B
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.
Description
B000-B065 Action addresses for primary keywords
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 |
| |
|