Classic Computer Magazine Archive COMPUTE! ISSUE 29 / OCTOBER 1982 / PAGE 150

COMMODORE 64 MEMORY MAP

Compiled by Jim Butterfield, Associate Editor

Special voice features (TEST, RING MOD, SYNC) are omitted from the above diagram.

 Hex	     Decimal		Description
0000		0		Chip directional register
0001		1		Chip I/O; 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, pointer, etc
0054-0056	84-86		Jump vector for functions
0057-0060	87-96		Misc numeric work area
0061		97		Accum#l : Exponent
0062-0065	98-101		Accum#l : Mantissa
0066		102		Accum#l : Sign
0067		103		Series evaluation constant pointer
0068		104		Accum#l hi-order (over flow)
0069-006E	105-110	Accum#2 : Exponent, etc.
006F		111		Sign comparison, Acc#l vs #2
0070		112		Accum#l lo-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 and RVS flags
0092		146		Timing constant for tape
0093		147		Load = 0, Verify = l
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		l = 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-00C2	193-194	I/O start address
00C3-00C4	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-00CA	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 Rev pntr
00F9-00FA	249-250	RS-232 Tx pntr
00FF-010A	256-266	Floating to ASCII work area
0100-103E	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
029E		670		RS232 output pointer
029F-02A0	671-672	IRQ save during tape I/O
02A1		673		CIA 2 (NMI) Interrupt Control
02A2		674		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-reg save
030E		782		SYS Y-reg save
030F		783		SYS status reg save
0310-0312	784-785	USR function jump (B248)
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 I/0 vector (F333)
0324-0325	804-805	INPUT vector (F157)
0326-0327	806-807	Output vector (F1CA)
0328-0329	808-809	Test-STOP vector (F6ED)
032A-032B	810-811	GET vector (F13E)
032C-032D	812-813	Abort I/o 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)
03C0-03FE	960-1022	(Sprite 15)
0400-07FF	1024-2047	Screen memory
0800-9FFF	2048-40959	Basic ROM memory
8000-9FFF	32758-40959	Alternate: Rom plug-in area
A000-BFFF	40960-49151	ROM : Basic
A000-BFFF	49060-59151	Alternate: RAM
C000-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
DC00-DC0F	56320-56335	Interface chip 1, IRQ (6526 CIA)
DD00-DD0F	56576-56591	Interface chip 2, NMI (6526 CIA)
D000-DFFF	53248-53294	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/O channels
FFCF - INPUT
FFD2 - PRINT
FFE1 - Test Stop Key
FFE4 - GET