
;	Commodore plus/4 and
;	Commodore 16 Memory Map
;
;	V1.1	9 Dec 1994
;

Label Hex Addr.   Decimal Loc.	Description

PDIR	$0000		0	7501 on-chip data-direction register
PORT	$0001		1	7501 on-chip 8-bit Input/Output register
SRCHTK	$0002		2	Token 'search' looks for (run-time stack)
ZPVEC1	$0003-0004	3-4	Temp (renumber)
ZPVEC2	$0005-0006	5-6	Temp (renumber)
CHARAC	$0007		7	Search character
ENDCHR	$0008		8	Flag: scan for quote at end of string
TRMPOS	$0009		9	Screen column from last TAB
VERCK	$000A		10	Flag: 0 = load 1 - verify
COUNT	$000B		11	Input buffer pointer / No. of subsctipts
DIMFLG	$000C		12	Flag: Default Array DIMension
VALTYP	$000D		13	Data type: $FF = string	$00 = numeric
INTFLG	$000E		14	Data type: $80 = integer, $00 = floating
DORES	$000F		15	Flag: DATA scan/LIST quote/garbage coll
SUBFLG	$0010		16	Flag: subscript ref / user function coll
INPFLG	$0011		17	Flag: $00 = INPUT, $43 = GET, $98 = READ
TANSGN	$0012		18	Flag TAN siqn / comparison result
CHANNL	$0013		19	Flag: INPUT prompt
LINNUM	$0014-0015	20-21	Temp: integer value
TEMPPT	$0016		22	Pointer: temporary string stack
LASTPT	$0317-0018	23-24	Last temp string address
TEMPST	$0019-0021	25-33	Stack for temporary strings
INDEX1	$0022-0023	34-35	Utility pointer area
INDEX2	$0024-0025	36-37	Utility pointer area
RESHO	$0026		38
RESMOH	$0027		39
RESMO	$0028		40
RESLO	$0029		41
	$002A		42
TXTTAB	$002B-002C	43-44	Pointer: start of BASIC text
VARTAB	$002D-002E	45-46	Pointer: start of BASIC variables
ARYTAB	$002E-0030	47-48	Pointer: start of BASIC arrays
STREND	$0031-0032	49-50	Pointer: end of BASIC arrays (+1)
FRFTOP	$0033-0034	51-52	Pointer: bottom of string storage
FRESPC	$0035-0036	53-54	Utility string pointer
MEMSIZ	$0037-0038	55-56	Pointer: highest address used by BASIC
CURLIN	$0039-003A	57-58	Current BASIC line number
TXTPTR	$003B-003C	59-60
FNDPNT	$003D-003F	61-62
DATLIN	$003F-0040	63-64	Current DATA line number
DATPTR	$0041-0042	65-66	Pointer: Current DATA item address
INPPTR	$0043-0044	67-68	Vector: INPUT routine
VARNAM	$0045-0046	69-70	Current BASIC variable name
VARPNT	$0047-0048	71-72	Pointer: Current BASIC variable data
FORPNT	$0049-004A	73-74	Pointer: Index variable for FOR/NEXT
OPPTR 	$0048-004C	75-76
OPMASK	$004D		77
DEFPNT	$004E-004F	78-79
DSCPNT	$0050-0051	80-81
	$0052		82
HELPER	$0053		83
JMPER	$0054		84
SIZE	$0055		85
OLDOV	$0056		86
TEMPF1	$0057		87
HIGHDS 	$0058-0059	88-89
HIGHTR 	$005A-005B	90-91
	$005C		92
LOWDS	$005D-005E	93-94
LoWTR	$005F		95
EXPSGN	$0060		96
FACEXP	$0061		97	Floating-point accumulator #1: exponent
FACHO	$0062		98	Floating accum. #1: mantissa
FACMOH	$0063		99
FACMO	$0064		100
FACLo	$0065		101
FACSGN 	$0066		102	Floating accum. #1: sign
SGNFLG 	$0067		103	Pointer: series evaluation constant
BITS	$0068		104	Floating accum. #1: overflow digit
ARGEXP 	$0069		105	Floating-point accumulator #2: exponent
ARGHO	$006A		106	Floating accum. #2: mantissa
ARGMOH	$006B		107
ARGMO	$006C		108
ARGLO	$006D		109
ARGSGN 	$006E		110	Floating accum. #2: sign
ARISGN 	$006F		111	Sign comparison result: accum. #1 vs #2
FACOV	$0070		112	Floating accum. #1. low-order (rounding)
FBUFPT 	$0071-0072	113	Pointer: cassette buffer
AUTINC 	$0073-0074	115-116	Increment value for auto (0 = off)
MVDFLG 	$0075		117	Flag if 10K hires allocated
KEYNUM 	$0076		118
KEYSIZ 	$0077		119
SYNTMP 	$0078		120	Used as temp Eor indirect loads
DSDESC 	$0079-0078	121-123	Descriptor for DSS
TOS	$007C-037D	124-125	Top of run time stack
TMPTON 	$007E-007F	126-127	Temps used by music (tone & volume)
VOICNO 	$0080		128
RUNMOD 	$0081		129
POINT	$0082		130
GRAPHM 	$0083		131	Current graphic mode
COLSEL	$0084		132	Current color selected
MC1	$0085		133	Multicolor 1
FG	$0086		134	Foreground color
SCXMAX	$0087		135	Maximum # of columns
SCYMAX 	$0088		136	Maximum # of rows
LTFLAG 	$0089		137	Paint-left flag
RTFLAG	$008A		138	Paint-Right flag
STOPNH	$008B		139	Stop paint if not BG (Not same Color)
GRAPNT	$008C-008D	140-141
VTEMP1	$008E		142
VTEMP2 	$008F		143

STATUS 	$0090		144	Kernal I/O status word: ST
STREY	$0091		145	Flag: STOP key / RVS key
SPVERR	$0092		146	Temp
VERFCK 	$0093		147	Flag:  0 = load,  1 = verify
C3PO	$0094		148	Plag: serial bus - output char buffered
BSOUR	$0095		149	Buffered character for serial bus
XSAV	$0096		150	Temp for basin
LDTND	$0097		151	# of open files / index to file table
DFLTN	$0098		152	Default input device (0)
DFLTO	$0099		153	Default output (CMD) device (3)
MSGFLG 	$009A		154	Flag:	$80 = direct mode  $00 = program
SAL	$009B		155	Tape pass 1 error log
SAH	$009C		156	Tape pass 2 error log
EAL	$009D		157
EAH	$009E		158
T1	$009F-00A0	159-160	Temp data area
T2	$00A1-00A2	161-162	Temp data area
TIME	$00A3-00A5	163-165	Real-time jiffy clock (approx) 1/60 sec
R2D2	$00A6		166	Serial bus usage (EOI on output)
TPBYTE	$00A7		167	Byte to be written/read on/off tape
BSOUR1	$00A8		168	Temp used by serial routine

FPVERR	$00A9		169
DCOUNT	$00AA		170
FNLEN	$00A8		171	Length of current file name
LA	$00AC		172	Current logical fiie number
SA	$00AD		173	Current seconda.y address
FA	$00AE		174	Current device number
FNADR	$00AF-00B0	175-176	Pointer: current file name
ERRSUM	$00B1		177
STAL 	$00B2		178	 I/O start address
STAH 	$00B3		179
MEMUSS	$00B4-00B5	180-181	Load ram base
TAPEBS	$00B6-00B7	182-183	Base pointer to cassette base
TMP2 	$00B8-00B9	184-185
WRBASE	$00BA-00BB	186-187	Pointer to data for tape writes
IMPARM	$00BC-00BD	188-189	Pointer to immediate string for primms
FETPTR	$00BE-00BF	190-191	Pointer to byte to be fetched in bank fetc
SEDSAL	$00C0-00C1	192-193	Temp for scrolling
RVS	$00C2		194	RVS field flag on
INDX 	$00C3		195
LSXP 	$00C4		196	X position at start
LSTP 	$00C5		197
SFDX 	$00C6		198	Flag: shift mode for print
CRSW 	$00C7		199	Flag: INPUT or GET from keyboard
PNT	$00C8-00C9	200-201	Pointer: current screen line address
PNTR 	$00CA		202	Cursor column on current line
QTSW 	$00CB		203	Flag: editor in quote mode, $00 = no
SEDT1	$00CC		204	Editor temp use
TBLX	$00CD		205	Current cursor physical line number
DATAX	$00CE		206	Temp data area
INSRT	$00CF		207	Flag: insert mode, >0 = # INSTs
	$00D0-$00D7	208-215	Area for use by speech software
	$00D8-00E8	216-232	Area for use by application software
CIRSEG	$00E9		233	Screen line link table / editor temps
USER	$00EA-00EB	234-235	Screen editor color IP
KEYTAB	$00EC-00ED	236-237	Key scan table indirect
TMPKEY	$00EE		238
NDX	$00EF		239	Index to keyboard queue
STPFLG	$00F0		240	Pause flag
TO	$00F1-00F2	241-242	Monitor ZP storage
CHRPTR	$00F3		243
BUFEND	$00F4		244
CHKSUM	$00F5		245	Temp for checksum calculation
LENGTH	$00F6		246
PASS	$00F7		247	Which pass we are doing str
TYPE	$00F8		248	Type of block
USE4DY	$00F9		249	(B.7 = 1)=> for wr, (B.6 = 1)=> for rd
XSTOP	$00FA		250	Save xreg for quick stopkey test
CURBNK	$00FB		251	Current bank configuration
XoN	$00FC		252	Char to send for a x-on (RS232)
XoFF	$00FD		253	Char to send for a x-off (RS232)
SEDT2	$00FE		254	Editor temporary use
LOFBUF	$00FF		255


FBUFFR	$0100-$010F	256-271
SAVEA	$0110		272	Temp Locations for
SAVEY	$0111		273	...  for Save and
SAVEX	$0112		274	...  Restore
COLKEY	$0113-0122	275-289	Color/luminance table in RAM
SYSSTK	$0124-01FF	291-511	System stack

BUF	$0200-0258	512-606	Basic/monitor input buffer
OLDLIN	$0259-025A	601-602	Basic storage
OLDTXT	$025B-025C	603-604	Basic storage

	$025D-02AC	605-684	BASIC/DOS INTERFACE AREA
XCNT 	$025D			DOS loop counter
PNBUFR	$025E-026D		Area for filename
DOSF1L	$026E			DOS filename 1 length

DOSDS1	$026F			DOS disk drive 1
DOSF1A	$0270-0271		DOS filename 1 addr
DOSF2L	$0272			DOS filename 2 length
DOSDS2	$0273			DOS disk drive 2
DOSF2A	$0274-0275		DOS filename 2 addr
DOSLA	$0276			DOS logical address
DOSEA	$0277			DOS phys addr
DOSSA	$0278			DOS secordary address
DOSDID	$0279-027A		DOS disk identifier
DIDCHK	$0278			DOS DID flag
DOSSTR	$027C			DOS output string buffer
DOSSPC	$027D-02AC		Area used to build DOS string


Graphics Variables

XPOS	$02AD-02AE	685-686	Current x position
YPOS	$02AE-02B0	687-688	Current y position
XDEST 	$02B1-02B2	689-690	X coordinate destination
YDEST 	$02B3-02B4	691-692	Y coordinate destination
XABS	$02B5-02B6	693-694
YABS	$02B7-0288	69S-696
XSGN	$02B9-02BA	697-69B
YSGN	$02BB-028C	699-700
FCT1	$02BD-02BE	701-702
FCT2	$02BF-02C0	703-704
ERRVAL	$02C1-02C2	705-706
LESSER	$02C3		707
GREATR	$02C4		708
ANGSGN	$02C5		709	Sign of angle
SINVAL	$02C6-02C7	710-711	Sine of value of angle
COSVAL	$02C8-02C9	712-713	Cosine of value of angle
ANGCNT	$02CA-02CB	714-715	Temps for angle distance routines


Start of multiply defined area #1

	$02CC		716	Placeholder
BNR	$02CD		717	Pointer to begin no.
ENR	$02CE		718	Pointer to end no.
DOLR	$02CF		719	Dollar flag
FLAG	$02DO		720	Comma flag
SWE	$02D1		721	Counter
USGN	$02D2		722	Sign exponent
UEXP	$02D3		723	Pointer to exponent
VN	$02D4		724	# of digits before decimal point
CHSN	$02D5		725	Justify flag
VF	$02D6		726	# of pos before decimal point (field)
NF	$02D7		727	# of pos after decimal point (field)
POSP	$02D8		728	+/- flag (field)
FESP	$02D9		729	Exponent flag (field)
ETOF	$02DA		730	Switch
CFORM	$02D8		731	Char counter (field)
SNO	$02DC		732	Sign no.
BLFD	$02DD		733	Blank/star flag
BEGFD	$02DE		734	Pointer to beginning of field
LFOR	$02DF		735	Length of format
ENDFD	$02E0		736	Pointer to end of field

XCENTR	$02CC-02CD	716-717
YCENTR	$02CE-02CF	718-719
XDIST1	$02D0-02D1	720-721
YDIST1	$02D2-02D3	722-723
XDIST2	$02D4-02D5	724-725
YDIST2	$02D6-02D7	726-727
	$02D8-02D0	728-729	Placeholder

COLCNT	$02DA		730	Characters column counter
ROWCNT	$02DB		731	Characters row counter
STRCNT	$02DC		732


Start of multiply defined area #2

XCORD1	$02CC-02CD	716-717
YCORD1	$02CE-02CF	718-719
BOXANG	$02D0-02D1	720-721	Rotation angle
XCOUNT	$02D2-02D3	722-723
YCOUNT	$02D4-02D5	724-725
BXLENG	$02D6-02D7	726-727	Length of a side
XCORD2	$02D8-02D9	728-729
YCORD2	$02DA-02DB	730-731

XCIRCL	$02CC-02CD	716-717	Circle center, x coordinate
YCIRCL  $02CE-02CF	718-719	Circle center, y coordinate
XRADUS	$02D0-02D1	720-721	X radius
YRADUS	$02D2-02D3	722-723	Y radius
ROTANG	$02D4-02D5	724-725	Rotation angle
ANGBEG	$02D8-02D9	728-729	Arc angle start
ANGEND	$02DA-02DB	730-731	Arc angle end
XRCOS	$02DC-02DD	732-733	X radius * cos (rotation angle)
YRSIN 	$02DE-02DF	734-735	Y radius * sin (rotation angle)
XRSIN 	$02E0-02E1	736-737	X radius * sin (rotation angle)
YRCOS	$02E2-02E3	738-739	Y radius * cos (rotation angle)


Start of multiply defined area #3

	$02CC		716	Placeholder
KEYLEN	$02CD		717
KEYNXT	$02CE		718
STRS2	$02CE		719	String length
GETTYP	$02D0		720	Replace string mode
STRPTR	$02D1		721	String position counter
OLDBYT	$02D2		722	Old bit map byte
NEWBYT	$02D3		723	New string or bit map byte
	$02D4		724	Placeholder
XSI2E	$02D5-02D6	725-726	Shape column length
YSIZE	$02D7-02D8	727-728	Shape row length
XSAVE	$02D9-02DA	729-730	Temp for column length
STRADR	$02D8-02DC	731-732	Save shape string descriptor
BITIDX	$02DD		733	Bit index into byte
SAYSIZ	$02DE-02E1	734-737 Temporary work locations

CHRPAG	$02E4		740	High byte addr of char ROM for char cmd
LITCNT	$02E5		741	Temp for gshape
SCALEM	$02E6		742	Scale mode flag
WIDTH	$02E7		743	Double width flag
FILFLG	$02E8		744	Box fill flag
BITMSK	$02E9		745	Temp for bit mask
NUMCNT	$02EA		746
TRCFLG	$02EB		747	Flags trace mode

T3	$02EC		748
T4	$02ED-02EE	749-750
VTEMP3	$02EF		751	Graphic temp storage
VTEMP4	$02F0		752
VTEMP5	$02F1		753

ADRAY1	$02E2-02F3	754-755	Ptr to routine: convert float to integer
ADRAY2	$02F4-02F5	756-757	Ptr to routine: convert integer to float

BNKVEC	$02FE-02FF	766-767 Vector for function cartridge users
IERROR	$0300-0301	768-769 Indirect Error (Output Error in .X)
IMAIN	$0302-0303	770-771 Indirect Main (System Direct Loop)
ICRNCH	$0304-0305	772-773 Indirect Crunch (Tokenization Routine)
IOPLOP	$0306-0307	774-775 Indirect List (Char List)
IGONE	$0308-0309	776-777 Indirect Gone (Character Dispatch)
IEVAL	$030A-0303	778-779 Indirect Eval (Symbol Evaluation)
IESCLK	$030C-030D	780-781 Escape token crunch
IESCPR	$030E-030F	782-783
IESCEX	$0310-0311	784-785
ITIME 	$0312-0313	786-787
CINV	$0314-0315	7B8-789	IRQ Ram Vector
CBINV	$0316-0317	790-791 BRK Instr RAM Vector
IOPEN 	$0318-0319	792-793	Indirects for Code
ICLOSE	$031A-031B	794-795
ICHKIN	$031C-031D	796-797
ICKOUT	$031E-031F	798-799
ICLRCH	$0320-0321	800-801
IBASIN	$0322-0323	802-803
IBSOUT	$0324-Q325	804-805
ISTOP 	$0326-0327	806-807
IGETIN	$0328-0329	808-809
ICLALL	$032A-032B	810-811
USRCMD	$032C-032D	812-813
ILOAD 	$032E-032E	814-815
ISAVE 	$0330-0331	816-817	Savesp

TAPBUF	$0333-03F2	819-1010	Cassette tape buffer
WRLEN	$03F3-03F4	1011-1012	Length of data to be written to tape
RDCNT 	$03F5-03F6	1013-1014	Length of data to be read from tape
INPQUE 	$03F7-0436	1015-1078	RS-232 input queue
ESTARL	$0437-0454	1079-1108
ESTAKH	$0455-0472	1109-1138

CHRGET	$0473-0478	1139-1144
CHRGOT	$04?9-0484	1145-1156
QNUM	$0485-0493	1157-1171

INDSUB	$0494-04A1	1172-1185	Shared ROM fetch sub
ZERO 	$04A2-04A4	1186-1188	Numeric constant for Basic

INDTXT	$04A5-04AF	1189-1199	Txtptr
INDIN1	$04B0-04BA	1200-1210	Index & Index1
INDIN2	$04BB-04C5	1211-1221	Index2
INDST1	$04C6-04D0	1222-1232	Strng1
INDLOW	$04D1-04DB	1233-1243	Lowtr
INDFMO	$04DC-04E6	1244-1254	Facmo

PUFILL	$04E7		1255		Print using fill symbol [space]
PUCOMA	$04E8		1256		Print using comma symbol [;]
PUDOT 	$04E9		1257		Print using D.P. symbol  [.]
PUMONY	$04EA		1258		Print using monetary symbol [$]

TMPDES	$04EB-04EE	1259-1262	Temp for instr
ERRNUM	$04EF		1263		Last error number
ERRLIN	$04F0-04F1	1264-1265	Line # of last error
TRAPNO	$04F2-04F3	1266-1267	Line to go on error
TMPTRP	$04F4		1268		Hold trap no. temporarily
ERRTXT	$04F5-04E6	1269-1270
OLDSTR	$04F7		1271

TMPTXT	$04F8-04F9	1272-1273
TMPLIN	$04FA-04F8	1274-1275

MTIMLO	$04FC-04FD	1276-1277	Table of pending jiffies (2's comp)
MTIMHI	$04FE-04FF	1278-1279
USRPOK	$0500-0502	1280-1282
KERNDX	$0503-0507	1283-1287
DEJAVU	$0508		1288		'cold' or 'warm' start status

LAT	$0509-0512	1289-1298	Logical file numbers
FAT	$0513-051C	1299-1308	Primary device numbers
SAT	$051D-0526	1309-1318	Secondary addresses

KEYD	$0527-0530	1319-1328	IRQ keyboard buffer
MEMSTR	$0531-0532	1329-1330	Start of memory [1000]

MSIZ	$0533-0534 	1331-1332	Top of memory [FD00]
TIMOUT	$0535		1333		IEEE timeout flag

FILEND	$0536		1334		File end reached = 1, 0 otherwise
CTALLY	$0537		1335		# of chars left in buffer (for R & W)
CBUFVA	$0538		1336		# of total valid chars in buffer (R)
TPTR	$0539		1337		Ptr to next char in buffer (for R & W)
FLTYPE	$053A		1338		Contains type of current cass file

COLOR	$053B		1339		Active attribute byte
FLASH	$053C		1340		Character flash flag
	$053D		1341		FREE
HIBASE	$053E		1342		OC Base location of screen (top) [0C]
XMAX 	$053F		1343
RPTFLG	$0540		1344		Key repeat flag
KOUUT	$0541		1345
DELAY	$0542		1346
SHFLAG	$0543		1347		Shift flag byte
LSTSHF	$0544		1348		Last shift pattern
KEYLOG	$0545-0546	1349-1350	Indirect for keyboard table setup
MODE 	$0547		1351		shift, C=
AUTODN	$0548		1352		Auto scroll down flag (0=on,0<>off)
LINTMP	$0549		1353
ROLFLG	$054A		1354

FORMAT	$054B		1355		Monitor non-zpage storage
MSAL 	$054C-054E	1356-1358
WRAP 	$054F		1359
TMPC 	$0550		1360
DIFF 	$0551		1361
PCH	$0552		1362
PCL	$0553		1363
FLGS 	$0554		1364
ACC	$0555		1365
XR	$0556		1366
YR	$0557		1367
SP	$0558		1368
INYL 	$0559		1369
INVH 	$055A		1370
CMPFLG	$055B		1371		Used by various monitor routines
BAD	$055C		1372

KYNDX	$055D		1373		Used for programmable keys
KEYIDX	$055E		1374
KEYBUF	$055F-0566	1375-1382	Table of P.F. lengths
PKY9UF	$0567-05E6	1383-1510	P.F. Key storage area

KDATA	$05E7		1511		Temp for data write to kennedy
RDYCMD	$05E8		1512		Select for kennedy read or write
KDYNUM	$05E9		1513		Kennedy's dev #
RDYPRS	$05EA		1514		Rennedy present = $ff, else = $00
KDYTYP	$05EB		1515		Temp for type of open for kennedy


SAVRAM	$05EC-06E8	1516-1771	1 page used by banking routines
PAT	$05EC-05EF	1516-1519	Physical Address Table
LNGJMP	$05F0-05F1	1520-1521	Long jump address
FETARG	$05F2		1522		Long jump accumulator
FETXRG	$05F3		1523		Long jump x register
FETSRG	$05F4		1524		Long jump status register

AREAS	$05F5-065D	1525-1629	RAM areas for banking

ASPECH	$065E-06EB	1630-1771	RAM area for speech

STKTOP	$06EC-07AF	1772-1967	BASIC run-time stack

WROUT	$07B0		1968		Byte to be written on tape
PARITY	$07B1		1969		Temp for parity calc

TT1	$07B2		1970		Temp for write-header
TT2	$07B3		1971		Temp for write-header
RDBITS	$07B5		1973		Local index for READBYTE routine
ERRSP	$07B6		1974		Pointer into the error stack
FPERRS	$07B7		1975		Number of first pass errors

DSAMP1	$07B8-07B9	1976-1977	Time constant
DSAMP2	$07BA-07BB	1978-1979	Time constant
ZCELL 	$07BC-07BD	1980-1981	Time constant

SRECOV	$07BE		1982		Stack marker for stopkey recover
DRECOV	$07BF		1983		Stack marker for dropkey recover
TRSAVE	$07C0-07C3	1984-1987	params passed to RDBLOK
RDETMP	$07C4		1988		Temp stat save for RDBLOK
LDRSCN	$07C5		1989		# consec shorts to find in leader
CDERRM	$07C6		1990		# Errors fatal in RD countdown
VSAVE 	$07C7		1991		Temp for Verify command
T1PIPE	$07C8-a7CB	1992-1995	Pipe temp for T1
ENEXT	$07CC		1996		Read error propagate


FOR RS-232

UOUTQ	$07CD		1997		User chracter to send
UOUTFG	$07CE		1998		0 = empty ; 1 = full
SOUT9	$07CF		1999		System character to send
SOUNFG	$07D0		2000		0 = empty ; 1 = full
INOFPT	$07D1		2001		Pntr to front of input queue
INQRPT	$07D2		2002		Pntr to rear of input queue
INQCNT	$07D3		2003		# of chars in input queue
ASTAT	$07D4		2004		Temp status for ACIA
AINTMP	$07D5		2005		Temp for input routine
ALSTOP	$07D6		2006		FLG for local pause
ARSTOP	$07D7		2007		FLG for remote pause
APRES 	$07D8		2008		FLG to indicate presence of ACIA

RLUDES	$07D9-07E4	2009-2020	Indirect routine downloaded
SCBOT	$07E5		2021		Screen bottom (0...24)
SCTOP	$07E6		2022		Screen top
SCLF	$07E7		2023		Screen left (0...39)
SCRT	$07E8		2024		Screen right
SCRDIS	$07E9		2025		Negative = scroll out
INSFLG	$07EA		2026		Insert mode: FF = on, 00 = off
LSTCHR	$07EB		2027
LOGSCR	$07EC		2028
TCOLOR	$07ED		2029
BITABL	$07EE-07F1	2030-2033

SAREG	$07F2		2034		Registers for SYS command
SXREG 	$07F3		2035
SYREG 	$07F4		2036
SPREG 	$07F5		2037

LSTX	$07F6		2038		Key scan index
STPDSB	$07F7		2039		Flag to disable CTRL-S pause
RAMROM	$07F8		2040		MSB for monitor fetches from ROM=0;RAM=1
COLSW 	$07F9		2041		MSB for color/lim table in RAM=0;ROM=1
FFRMSK	$07FA		2042		ROM mask for split screen
VMBMSK	$07FB		2043		VM base mask for split screen
LSEM	$07FC		2044		Motor lock semaphore for cassette
PALCNT	$07FD		2045		PAL tod


TEDATR	$0800-0BFF	2048-3071	TED attribute bytes
TEDSCN	$0C00-0FFF	3072-4095	TED character pointers
BASBGN	$1000-		4096-		Start of BASIC text area
BMLUM	$1800-1BFF	6144-7167	Luminance for bit map screen
BMCOLR	$1C00-1FFF	7168-8191	Color for bit map

        Commodore 16 and plus/4 Memory Configuration

$0000 System memory
$0800 Color memory (Text)
$0C00 Video matrix (Text)
$1000 Beginning of BASIC RAM (without graphics)
$1800 Luminance (Graphics)
$1C00 Colour table (Graphics)
$2000 Graphics screen data
$4000 Beginning of BASIC RAM (with graphics)
$8000 ROM BANK LOW (BASIC)
$C000 BASIC expansions
$D000 Character table
$D800 Operating system
$FC00 Routines for switching banks
$FD00 End of BASIC RAM, I/O area

According to the schematics diagram, $FD00-$FF3F contains the following,
regardless of the RAM/ROM banking configuration:

$FD00-FD0F: 6551 ACIA (for the RS232, only on the +4.  4 registers.)
$FD10-FD1F: 6529B (1 register, drives 8 I/O-lines on the +4 user port)
$FD30-FD3F: 6529B (1 register, keyboard scan. The other 8 lines come from TED)

$FF00: TED (registers shown below)
$FF40: ROM

0 Timer 1 low
1 Timer 1 high
2 Timer 2 low
3 Timer 2 high
4 Timer 3 low
5 Timer 3 high
6       Test    ECM     BMM     Blank   Rows	Y2      Y1      Y0
7       RVS off PAL     Freeze  MCM     Columns	X2      X1      X0
8 Keyboard Latch
9       IRQ     I-T3    -       I-T2    I-T1    I-LP    I-RAS   -
A       -       EI-T3   -       EI-T2   EI-T1   EI-LP   EI-RAS  RC8
B       RC7     RC6     RC5     RC4     RC3     RC2     RC1     RC0
C       -       -       -       -       -       -       C9      CUR8
D       CUR7    CUR6    CUR5    CUR4    CUR3    CUR2    CUR1    CUR0
E       SND1-7  SND1-6  SND1-5  SND1-4  SND1-3  SND1-2  SND1-1  SND1-0
F       SND2-7  SND2-6  SND2-5  SND2-4  SND2-3  SND2-2  SND2-1  SND2-0
10      -       -       -       -       -       -       SND2-9  SND2-8
11      SND-REL Noise   V2-SEL  V1-SEL  VOL3    VOL2    VOL1    VOL0
12      -       -       BMB2    BMB1    BMB0    R-Bank  S1-9    S1-8
13      CB5     CB4     CB3     CB2     CB1     CB0     SCLOCK  Status
14      VM4     VM3     VM2     VM1     VM0     -       -       -
15      -       LUM2    LUM1    LUM0    COLOR3  COLOR2  COLOR1  COLOR0
16      -       LUM2    LUM1    LUM0    COLOR3  COLOR2  COLOR1  COLOR0
17      -       LUM2    LUM1    LUM0    COLOR3  COLOR2  COLOR1  COLOR0
18      -       LUM2    LUM1    LUM0    COLOR3  COLOR2  COLOR1  COLOR0
19      -       LUM2    LUM1    LUM0    COLOR3  COLOR2  COLOR1  COLOR0
1A      -       -       -       -       -       -       BRE9    BRE8
1B      BRE7    BRE6    BRE5    BRE4    BRE3    BRE2    BRE1    BRE0
1C      -       -       -       -       -       -       -       VL8
1D      VL7     VL6     VL5     VL4     VL3     VL2     VL1     VL0
1E      H8      H7      H6      H5      H4      H3      H2      H1
1F      -       BL3     BL2     BL1     BL0     VSUB2   VSUB1   VSUB0

3E Write switches on ROM bank
3F Write switches on RAM bank

	$FF0E	65294	Voice #1 frequency, bits 0-7

	$FF0F	65295	Voice #2 frequency, bits 0-7

	$FF10	65296	Voice #2 frequency, bits 8 & 9
			(bit 0 is bit 8, bit 1 is bit 9)

	$FF11	65297	Bits 0-3 : Volume control
			Bit 4	: Voice #1 select
			Bit 5	: Voice #2 select
			Bit 6	: Voice #2 noise select
			Bit 7	: Sound reload

	$FF12	65298	Bit 0-1 : Voice #1 frequency, bits 8 & 9
			Bit 2	 : TED data fetch ROM/RAM select
			Bits 0-5 : Bit map base address

	$FF13	65299	Bit 0 :	Clock status
			Bit 1 :	Set single clock
			Bits 2-7 : Character data base address

	$FF14	65309	Bits 3-7 : Video matrix/color memory base address

	$FF15	65301	Background color register
			Bits 0-3 : Color
			Bits 4-6 : Luminance

	$FF16	65302	Color register #1
			Bits 0-3 : Color
			Bits 4-6 : Luminance

	$FF17	65303	Color register #2
			Bits 0-3 : Color
			Bits 4-6 : Luminance

	$FF18	65304	Color registes #3
			Bits 0-3 : Color
			Bits 4-6 : Luminance

	$FF19	65305	Color register #4
			Bits 0-3 : Color
			Bits 4-6 : Luminance

	$FF1A	65306	Bit map reload

	$FF1B	65307	Bit map reload

	$FF1C	65308	Bit 0 : Vertical line bit 8

	$FF1D	65309	Bits 0-7 : Vertical line bits 0-7

	$FF1E	65310	Horizontal position

	$FF1F	65311	Blink, vertical sub address

	$FF3E	65342	ROM select

	$FF3F	65343	RAM select



  BANKING JUMP TABLE

	$FCF1	64753	JMP to cartridge IRQ routine
	$FCF4	64756	JMP to PHOENIX routine
	$FCF7	64759	JMP to LONG FETCH routine
	$FCFA	64762	JMP to LONG JUMP routine
	$FCFD	64765	JMP to LONG IRQ routine


  UNOFFICIAL JUMP TABLE
	$FF49	  65353	JMP to define function key routine
	$FF4C	  65356	JMP to PRINT routine
	$FF4F	  65359	JMP to PRIMM routine
	$FF52	  65362	JMP to ENTRY routine
	$FF80	  65408	RELEASE # OF KERNAL (MSB: 0 = NTSC ; 1 = PAL)


  KERNAL JUMP TABLE

; NAME     ADDRESS	DESCRIPTION
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CINT	$FF81	65409	Initialize screen editor
IOINIT	$FF84	65412	Initialize I/O devices
RAMTAS	$FF87	65415	Ram test
RESTOR	$FF8A	65418	Restore vectors to initial values
VECTOR	$FF8D	65421	Change vectors for user
SETMSG	$FF90	65424	Control O.S. messages
SECND	$FF93	65427	Send SA after LISTEN
TKSA	$FF96	65430	Send SA after TALK
MEMTOP	$FF99	65433	Set/Read top of memory
MEMBOT	$FF9C	65436	Set/Read bottom of memory
SCNKEY	$FF9F	65439	Scan keyboard
SETTMO	$FFA2	65442	Set timeout in DMA disk
ACPTR	$FFA5	65445	Handshake serial bus or DMA disk byte in
CIoUT	$FFA8	65448	Handshake serial bus or DMA disk byte out
UNTLR	$FFAB	65451	Send UNTALK out serial bus or DMA disk
UNLSN	$FFAE	65454	Send UNLISTEN out serial bus or DMA disk
LISTN	$FFB1	65457	Send LISTEN out serial bus or DMA disk
TALK	$FFB4	65460	Send TALK out serial bus or DMA disk
READSS	$FFB7	65463	Return I/O STATUS byte
SETLFS	SEF8A	65466	Set LA, FA, SA
SETNAM	$FFBD	65469	Set length and FN address
OPEN 	$FFC0	65472	Open logical file
CLOSE	$FFC3	65475	Close logical file
CHKIN	$FFC6	65478	Open channel in
CHOUT	$FEC9	65481	open channel out
CLRCH	$FECC	65484	Close I/O channels
8ASIN	$FFCF	65487	Input from channel
BSOUT	$FFD2	65490	output to channel
LOADSP	$FFD5	65493	Load from file
SAYESP	$FFD8	65496	Save to file
SETTIM	$FFDB	65499	Set internal clock
RDTIM	$FFDE	65502	Read internal clock
STOP	$FFE1	6S50S	Scan STOP key
GETIN	$FFE4	65508	Get character from queue
CLALL	$FFE7	65511	Close all files
UDTIM	$FFEA	65514	Increment clock
SCRORG	$FFED	65517	Screen org.
PLOT 	$FFF0	65520	Read/Set X,Y coord of cursor
IOBASE	$FFF3	65523	Return location of start of I/O

