;========================================================================================
;	VIC-20 KERNEL and BASIC ROM Variable Equates
;	(c) 1996 Richard A. Cini, Jr. All Rights Reserved.
;
;	Portions of this have been derived from a file in comp.sys.cbm dated 9/1/94.
;	File was restructured to be used as part of an <#INCLUDE> assembler directive.
;	Undefined symbols from the comp.sys.cbm doc were created; others cleaned-up.
;	Variable locations were cross-referenced against other sources for correctness.
;
;
;  Release History:
;  ================
;  1996/12/13	0.10	First release to CBMAPPS (sort of public beta)
;
;========================================================================================

;
;Public KERNEL API
; For indirected vectors, remember to use an indirect JSR to "call through" to function.
;
ACPTR  =$EF19		;Receive From Serial Bus
;BREAK  =$FED2		;Break vector handler
BREAK  =IBREAK
;CHKIN  =$F2C7		;Set Input Device
CHKIN  =ICHKIN
;CHKOUT =$F309		;Set Output Device
CHKOUT =ICHKOUT
;CHRIN  =$F20E		;Input a byte
CHRIN  =ICHRIN
;CHROUT =$F27A		;Output One Character
CHROUT =ICHROUT
CIOUT  =$EEE4		;Send Serial Deferred
;CLALL  =$F3EF		;Abort All Files
CLALL  =ICLALL
;CLOSE  =$F34A		;Close File
CLOSE  =ICLOSE
;CLRCHN =$F3F3		;Restore Default I/O
CLRCHN =ICLRCHN
;GETIN  =$F1F5		;Get a byte
GETIN  =IGETIN
IOBASE =$E500		;Return I/O Base Address
LISTN  =$EE17		;Send LISTEN Command on Serial Bus	
LOAD   =$F542		;Load RAM From Device (flows to ILINKL)
MEMBOT =$FE82		;Set / Read Bottom of Memory
MEMTOP =$FE73		;Set / Read Top of Memory
;OPEN   =$F40A		;Open File
OPEN   =IOPEN
PLOT   =$E50A
RDTIM  =$F760		;Read Real-Time Clock
READST =$FE57		;Get I/O Status Word
RESTOR =$FD52		;Restore Kernal Vectors (at $0314)
SAVE   =$F675		;Save RAM To Device (flows to ILINKS)
SCNKEY =$EB1E		;Scan keyboard
SCREEN =$E505
SECND  =$EEC0		;Send LISTEN Secondary Address
SETLFS =$FE50		;Set Logical File Parameters
SETMSG =$FE66		;Control OS Messages
SETNAM =$FE49		;Set Filename
SETTIM =$F767		;Set Real-Time Clock
SETTMO =$FE6F		;Set IEEE Timeout
;STOP   =$F770		;Check STOP Key
STOP   =ISTOP
TALK   =$EE14		;Send TALK Command on Serial Bus	
TKSA   =$EECE		;Send TALK Secondary Address
UDTIM  =$F734		;Increment Real-Time Clock
UNLSN  =$EF04		;Send UNLISTEN on Serial Bus
UNTLK  =$EEF6		;Send UNTALK on Serial Bus
;USER   =$FED2		;User vector
USER   =IUSER
VECTOR =$FD57		;Change Vectors For User
;
;
;Transfer Vectors
; Generally, these are not meant to be called by USER programs, except maybe IRQ, which
; can be called to chain interrupts.
NMI    =NMIXFR		; FFFA =>FEA9=>(0318)
RESET  =RSTXFR		; FFFC =>FD22
IRQ    =IRQXFR		; FFFE =>FF72=>(0314)/(0316)

;
;Indirected vectors
; These are the locations specified in the KERNEL ROM. I think that it is easier to call the function
; directly. KERNEL has the following, for example:
;
;BREAK	JMP($0316)
;
IBREAK  =$0316		;Break vector (FED2)
ICHKIN  =$031E		;Set Input Device
ICHKOUT =$0320		;Set Output Devic
ICHRIN  =$0324		;Input a byte
ICHROUT =$0326		;Output One Character
ICLALL  =$032C		;Abort All Files
ICLOSE  =$031C		;Close File
ICLRCHN =$0322		;Restore Default I/O
IGETIN  =$032A		;Get a byte
IIRQ    =$0314		;IRQ vector pointer (EABF)
ILINKL  =$0330		;Link to LOAD
ILINKS  =$0332		;Link to SAVE
INMI    =$0318		;Non-maskable interrupt vector pointer (FEAD)
IOPEN   =$031A		;Open File
ISTOP   =$0328		;Check STOP Key
IUSER   =$032E		;User vector (FED2)

;
;General ROM variable equates
;BASIC
BENTER =$c000		;Basic Restart Vectors
BPANIC =$C002		;Basic PANIC entry
BASSIG =$c004		;'cbmbasic'

STMDSP =$c00c		;BASIC Command Vectors
FUNDSP =$c052		;BASIC Function Vectors
OPTAB  =$c080		;BASIC Operator Vectors
RESLST =$c09e		;BASIC Command Keyword Table
MSCLST =$c129		;BASIC Misc. Keyword Table
OPLIST =$c140		;BASIC Operator Keyword Table
FUNLST =$c14d		;BASIC Function Keyword Table
ERRTAB =$c19e		;Error Message Table
ERRPTR =$c328		;Error Message Pointers
OKK    =$c364		;Misc. Messages
			;c364	;'<cr>ok<cr>'
			;c369	;'error'
		
UNUSE1 =$c389		;Unused byte
FNDFOR =$c38a		;Find FOR/GOSUB Entry on Stack
BLTU   =$c3b8		;Open Space in Memory
GETSTK =$c3fb		;Check Stack Depth
REASON =$c408		;Check Memory Overlap
OMERR  =$c435		;Output "?OUT OF MEMORY Error"
ERROR  =$c437		;Error Routine
ERRFIN =$c469		;Break Entry
READY  =$c474		;BASIC ready entry
MAIN   =$c480		;Input & Identify BASIC Line
MAIN1  =$c49c		;Get Line Number & Tokenise Text
INSLIN =$c4a2		;Insert BASIC Text
LNKPRG =$c533		;Rechain Lines
INLIN  =$c560		;Input Line Into Buffer
CRUNCH =$c579		;Tokenize Input Buffer
FNDLIN =$c613		;Search for Line Number
SCRTCH =$c642		;Perform [new]
CLEAR  =$c65e		;Perform [clr]
STXPT  =$c68e		;Reset TXTPTR
LIST   =$c69c		;Perform [list]
QPLOP  =$c717		;Handle LIST 
FOR    =$c742		;Perform [for]
NEWSTT =$c7ae		;BASIC Warm Start
CKEOL  =$c7c4		;Check End of Program
GONE   =$c7e1		;Prepare to execute statement
GONE3  =$c7ed		;Perform BASIC Keyword
RESTOR =$c81d		;Perform [restore]
STOP   =$c82c		;Perform [stop], [end], break
CONT   =$c857		;Perform [cont]
RUN    =$c871		;Perform [run]
GOSUB  =$c883		;Perform [gosub]
GOTO   =$c8a0		;Perform [goto]
RETURN =$c8d2		;Perform [return]
DATA   =$c8f8		;Perform [data]
DATAN  =$c906		;Search for Next Statement / Line
IF     =$c928		;Perform [if]
REM    =$c93b		;Perform [rem]
ONGOTO =$c94b		;Perform [on]
LINGET =$c96b		;Fetch linnum From BASIC
LET    =$c9a5		;Perform [let]
PUTINT =$c9c4		;Assign Integer
PTFLPT =$c9d6		;Assign Floating Point
PUTSTR =$c9d9		;Assign String
PUTTIM =$c9e3		;Assign TI$
GETSPT =$ca2c		;Add Digit to FAC#1
PRINTN =$ca80		;Perform [print#]
CMD    =$ca86		;Perform [cmd]
STRDON =$ca9a		;Print String From Memory
PRINT  =$caa0		;Perform [print]
VAROP  =$cab8		;Output Variable	
CRDO   =$cad7		;Output CR/LF	
COMPRT =$cae8		;Handle comma, TAB(, SPC(
STROUT =$cb1e		;Output String	
OUTSPC =$cb3b		;Output Format Character	
DOAGIN =$cb4d		;Handle Bad Data	
GET    =$cb7b		;Perform [get]	
INPUTN =$cba5		;Perform [input#]	
INPUT  =$cbbf		;Perform [input]	
BUFFUL =$cbea		;Read Input Buffer	
QINLIN =$cbf9		;Do Input Prompt	
READ   =$cc06		;Perform [read]	
RDGET  =$cc35		;General Purpose Read Routine	
EXINT  =$ccfc		;Input Error Messages
			;ccfc	'?EXTRA IGNORED<CR>'	
			;cd0c	'?REDO FROM START<CR>'	
		
NEXT   =$cd1e		;Perform [next]
DONEXT =$cd61		;Check Valid Loop
FRMNUM =$cd8a		;Confirm Result
FRMEVL =$cd9e		;Evaluate Expression in Text
EVAL   =$ce83		;Evaluate Single Term
PIVAL  =$cea8		;Constant - pi
QDOT   =$cead		;Continue Expression
PARCHK =$cef1		;Expression in Brackets
CHKCLS =$cef7		;Confirm Character
CHKPNC =$cef7		;test ')'
CHKPNO =$cefa		;test '('
CHKCOM =$cefd		;test comma
SNERR  =$cf08		;Output "?SYNTAX Error"
DOMIN  =$cf0d		;Set up NOT Function
RSVVAR =$cf14		;Identify Reserved Variable
ISVAR  =$cf28		;Search for Variable	
TISASC =$cf48		;Convert TI to ASCII String	
ISFUN  =$cfa7		;Identify Function Type	
STRFUN =$cfb1		;Evaluate String Function	
NUMFUN =$cfd1		;Evaluate Numeric Function	
OROP   =$cfe6		;Perform [or], [and]"	
DOREL  =$d016		;Perform <, =, >"	
NUMREL =$d01b		;Numeric Comparison	
STRREL =$d02e		;String Comparison	
DIM    =$d07e		;Perform [dim]	
PTRGET =$d08b		;Identify Variable	
ORDVAR =$d0e7		;Locate Ordinary Variable	
NOTFNS =$d11d		;Create New Variable	
NOTEVL =$d128		;Create Variable	
ARYGET =$d194		;Allocate Array Pointer Space	
N32768 =$d1a5		;Constant 32768 in Flpt	DATA
FACINX =$d1aa		;FAC#1 to Integer in (AC/YR)
INTIDX =$d1b2		;Evaluate Text for Integer
AYINT  =$d1bf		;FAC#1 to Positive Integer
ISARY  =$d1d1		;Get Array Parameters
FNDARY =$d218		;Find Array
BSERR  =$d245		;"?Bad subscript error"
FCERR  =$d248		;"?Illegal quantity error"
NOTFDD =$d261		;Create Array
INLPN2 =$d30e		;Locate Element in Array
UMULT  =$d34c		;Number of Bytes in Subscript
FRE    =$d37d		;Perform [fre]
GIVAYF =$d391		;Convert Integer in (AC/YR) to Flpt
POS    =$d39e		;Perform [pos]
ERRDIR =$d3a6		;Confirm Program Mode
GETFNM =$d3e1		;Check Syntax of FN
FNDOER =$d3f4		;Perform [fn]
STRD   =$d465		;Perform [str$]
STRLIT =$d487		;Setup String
PUTNW1 =$d4d5		;Save String Descriptor
GETSPA =$d4f4		;Allocate Space for String
GARBAG =$d526		;Garbage Collection
DVARS  =$d5bd		;Search for Next String
GRBPAS =$d606		;Collect a String
CAT    =$d63d		;Concatenate Two Strings
MOVINS =$d67a		;Store String in High RAM
FRESTR =$d6a3		;Perform String Housekeeping
FREFAC =$d6db		;Clean Descriptor Stack
CHRD   =$d6ec		;Perform [chr$]
LEFTD  =$d700		;Perform [left$]
RIGHTD =$d72c		;Perform [right$]
MIDD   =$d737		;Perform [mid$]
PREAM  =$d761		;Pull sTring Parameters
LEN    =$d77c		;Perform [len]
LEN1   =$d782		;Exit String Mode
ASC    =$d78b		;Perform [asc]
GTBYTC =$d79b		;Evaluate Text to 1 Byte in XR
VAL    =$d7ad		;Perform [val]
STRVAL =$d7b5		;Convert ASCII String to Flpt
GETNUM =$d7eb		;Get parameters for POKE/WAIT
GETADR =$d7f7		;Convert FAC#1 to Integer in LINNUM
PEEK   =$d80d		;Perform [peek]
POKE   =$d824		;Perform [poke]
WAIT   =$d82d		;Perform [wait]
FADDH  =$d849		;Add 0.5 to FAC#1
FSUB   =$d850		;Perform Subtraction
FADD5  =$d862		;Normalize Addition
FADD   =$d867		;Perform Addition
NEGFAC =$d947		;2's Complement FAC#1
OVERR  =$d97e		;"?OVERFLOW Error"
MULSHF =$d983		;Multiply by Zero Byte
FONE   =$d9bc		;Table of Flpt Constants
LOG    =$d9ea		;Perform [log]
FMULT  =$da28		;Perform Multiply
MULPLY =$da59		;Multiply by a Byte
CONUPK =$da8c		;Load FAC#2 From Memory
MULDIV =$dab7		;Test Both Accumulators
MLDVEX =$dad4		;Overflow / Underflow
MUL10  =$dae2		;Multiply FAC#1 by 10
TENC   =$daf9		;Constant 10 in Flpt
DIV10  =$dafe		;Divide FAC#1 by 10
FDIV   =$db07		;Divide FAC#2 by Flpt at (AC/YR)
FDIVT  =$db0f		;Divide FAC#2 by FAC#1
MOVFM  =$dba2		;Load FAC#1 From Memory
MOV2F  =$dbc7		;Store FAC#1 in Memory
MOVFA  =$dbfc		;Copy FAC#2 into FAC#1	
MOVAF  =$dc0c		;Copy FAC#1 into FAC#2	
ROUND  =$dc1b		;Round FAC#1	
SIGN   =$dc2b		;Check Sign of FAC#1	
SGN    =$dc39		;Perform [sgn]	
ABS    =$dc58		;Perform [abs]	
FCOMP  =$dc5b		;Compare FAC#1 With Memory	
QINT   =$dc9b		;Convert FAC#1 to Integer	
INT    =$dccc		;Perform [int]	
FIN    =$dcf3		;Convert ASCII String to a Number in FAC#1	
N0999  =$ddb3		;String Conversion Constants
INPRT  =$ddc2		;Output 'IN ' + Line Number	
FOUT   =$dddd		;Convert FAC#1 to ASCII String	
FOUTIM =$de68		;Convert TI to String	
FHALF  =$df11		;Table of Constants	
SQR    =$df71		;Perform [sqr]	
FPWRT  =$df7b		;Perform power ($)
NEGOP  =$dfb4		;Negate FAC#1
LOGEB2 =$dfbf		;Table of Constants
EXP    =$dfed		;Perform [exp]

;	
;Kernel ROM
; Code continues from Basic ROM
;	
POLYX  =$e040		;Series Evaluation
RMULC  =$e08a		;Constants for RND
RND    =$e094		;Perform [rnd]
BIOERR =$e0f6		;Handle I/O Error in BASIC
BCHOUT =$e109		;Output Character
BCHIN  =$e10f		;Input Character
BCKOUT =$e115		;Setup For Output
BCKIN  =$e11b		;Setup For Input
BGETIN =$e121		;Get One Character
SYS    =$e127		;Perform [sys]
SAVET  =$e153		;Perform [save]
VERFYT =$e162		;Perform [verify / load]
OPENT  =$e1bb		;Perform [open]
CLOSET =$e1c4		;Perform [close]
SLPARA =$e1d1		;Get Parameters For LOAD/SAVE
COMBYT =$e1fd		;Get Next One Byte Parameter
DEFLT  =$e203		;Check Default Parameters
CMMERR =$e20b		;Check For Comma
OCPARA =$e216		;Get Parameters For OPEN/CLOSE
COS    =$e261		;Perform [cos]
SIN    =$e268		;Perform [sin]
TAN    =$e2b1		;Perform [tan]
PI2    =$e2dd		Table of Trig Constants
			;e2dd	pi/2   1.570796327
			;e2e2	pi*2   6.28318531
			;e2e7	0.25
			;e2ec	#05(counter)
			;e2ed	-14.3813907
			;e2f2	42.0077971
			;e2f7	-76.7041703
			;e2fc	81.6052237
			;e301	-41.3417021
			;e306	6.28318531
		
ATN    =$e30b		;Perform [atn]
ATNCON =$e33b		;Table of ATN Constants
			;e33b	#0B(counter)
			;e3ec	-0.000684794
			;e341	0.004850942
			;e346	-0.161117018
			;e34b	0.034209638
			;e350	-0.054279133
			;e355	0.072457197
			;e35a	-0.089802395
			;e35f	0.110932413
			;e364	-0.142839808
			;e369	0.19999912
			;e36e	-0.333333316
			;e373	1
		
INIT   =$e378		;BASIC Cold Start
INITAT =$e387		;CHRGET For Zero-page
RNDSED =$e39f		;RND Seed For zero-page (0.811635157)
INITCZ =$e3a4		;Initialize BASIC RAM
INITMS =$e404		;Output Power-Up Message
WORDS  =$e429		;Power-up Message
			;e429	' BYTES FREE<CR>'
			;e436	'<CLR>**** CBM BASIC V2 ****<CR>'
		
BVTRS  =$e44f		;Table of BASIC Vectors (for 0300)
INITV  =$e45b		;Initialize Vectors
BASSFT =$e467		;BASIC Warm Restart [RUN/STOP-RESTORE]
UNKNO1 =$e475		;UNKNOWN
UNUSD2 =$e47c		;Unused Bytes For Future Patches
SOUT1  =$e4a0		;Serial Output 1
SOUT0  =$e4a9		;Serial Output 0
SDCLK  =$e4b2		;Get Serial Data And Clock In
SSADR  =$e4bc		;Get Secondary Address patch for Serial LOAD/VERIFY
SLDPCH =$e4c1		;Relocated Load patch for Serial LOAD/VERIFY
TPWPCH =$e4cf		;Tape Write patch for CLOSE
UNUSD3 =$e4da		;Unused	
SCREEN =$e505		;Return Screen Organization
PLOT   =$e50a		;Read / Set Cursor X/Y Position
CINT1  =$e518		;Initialize I/O
CLRSCN =$e55f		;Clear Screen
HOME   =$e581		;Home Cursor
SCNPTR =$e587		;Set Screen Pointers
IODEF1 =$e5b5		;Set I/O Defaults (Unused Entry)
IODEFL =$e5bb		;Set I/O Defaults
LP2    =$e5cf		;Get Character From Keyboard Buffer
INKEY  =$e5e5		;Input From Keyboard
INSCRN =$e64f		;Input From Screen or Keyboard
QUOTET =$e6b8		;Quotes Test
CMD4   =$e6c5		;Set Up Screen Print
CSRPLS =$e6ea		;Advance Cursor
CSRMIN =$e719		;Retreat Cursor
CSRUP  =$e72d		;Back on to Previous Line
OUTSCR =$e742		;Output to Screen
NOSHCH =$e756		;-unshifted characters-
SHCHRS =$e800		;-shifted characters-
NEWLIN =$e8c3		;Go to Next Line
CR     =$e8d8		;Output <CR>
CKLNMI =$e8e8		;Check Line Decrement
CKLNPL =$e8fa		;Check Line Increment
STCLRC =$e912		;Set Color Code
COLRTB =$e921		;Color Code Table
UNKNO2 =$e929		;Unknown
SCRLSC =$e975		;Scroll Screen
INSSPC =$e9ee		;Open a Space On The Screen
MOVELN =$ea56		;Move a Screen Line
COPYCL =$ea6e		;Syncronize Color Transfer
LINSTR =$ea7e		;Set Start of Line
CLRLIN =$ea8d		;Clear Screen Line
PRNSCR =$eaa1		;Print To Screen
SNCLRP =$eab2		;Syncronize Color Pointer
IRQENT =$eabf		;Main IRQ Entry Point
SCNKEY =$eb1e		;Scan Keyboard
PROCKY =$eb71		;Process Key Image
KDECOD =$ec46		;Pointers to Keyboard decoding tables	
KDECD1 =$ec5e		;Keyboard Decoding Table-Unshifted
KDECD2 =$ec9f		;Keyboard Decoding Table-Shifted
KDECD3 =$ece0		;Keyboard Decoding Table-Commodore	
GRTXTF =$ed21		;Graphics/Text Control
KDECD4 =$ed69		;Keyboard Decoding Table	
KDECD5 =$eda3		;Keyboard Decoding Table-Control
VICSUP =$ede4		;Video Chip Set Up Table	
RUNSHF =$edf4		;Shift-Run Equivalent	
LBSCAD =$edfd		;Low Byte Screen Line Addresses
OTDSBU =$ee49		;Send Data On Serial Bus	
FLGERR =$eeb4		;Flag Errors	
			;eeb4  STATUS #80 - DEVICE NOT PRESENT
			;eeb7	 STATUS #03 - WRITE TIMEOUT
CLRATN =$eec5		;Clear ATN
WTFCLK =$eed3		;Wait For Clock
SCLK1  =$ef84		;Serial Clock On
SCLK0  =$ef8d		;Serial Clock Off
DELAY  =$ef96		;Delay 1 ms
SSEND  =$efa3		;RS-232 Send
SSNDN  =$efee		;Send New RS-232 Byte
DSRERR =$f016		;'No DSR' Error	
CTSERR =$f019		;'No CTS' Error	
DISTIM =$f021		;Disable Timer	
BITCNT =$f027		;Compute Bit Count	
SERRX  =$f036		;RS-232 Receive	
RXSET  =$f05b		;Setup To Receive	
PROCSB =$f068		;Process RS-232 Byte	
SSUBBT =$f0bc		;Submit to RS-232	
SSENDB =$f0ed		;Send to RS-232 Buffer	
SERINP =$f116		;Input From RS-232	
SERGET =$f14f		;Get From RS-232	
SBIDLE =$f160		;Serial Bus Idle	
KIOMST =$f174		;Table of Kernal I/O Messages
			;f174	'<CR> I/O ERROR #'	
			;f1df	'OK<CR>'
DIRMSG =$f1e2		;Print Message if Direct
MSG    =$f1e6		;Print Message
GTTSCH =$f250		;Get From Tape / Serial / RS-232
FIND   =$f3cf		;Find File
FLATRB =$f3df		;Set File values
SENDSA =$f495		;Send Secondary Address
SEROPN =$f4c7		;Open RS-232
LOADLN =$f549		;-load-
SERLOA =$f55c		;Load File From Serial Bus
TAPLOA =$f5ca		;Load File From Tape
SRCHMS =$f647		;Print "SEARCHING"
FLNMMS =$f659		;Print Filename
LOADMS =$f66a		;Print "LOADING / VERIFYING"
SAVELN =$f685		;-save-
SERSAV =$f692		;Save to Serial Bus
TAPESV =$f6f1		;Save to Tape
SAVEMS =$f728		;Print "SAVING"
IOERMS =$f77e		;Output I/O Error Messages
			;f77e	'TOO MANY FILES'
			;f781	'FILE OPEN'
			;f784	'FILE NOT OPEN'
			;f787	'FILE NOT FOUND'
			;f78a	'DEVICE NOT PRESENT'
			;f78d	'NOT INPUT FILE'
			;f790	'NOT OUTPUT FILE'
			;f793	'MISSING FILENAME'
			;f796	'ILLEGAL DEVICE NUMBER'
LOCTPH =$f7af		;Find Any Tape Header
WRTPHD =$f7e7		;Write Tape Header
GETBFA =$f84d		;Get Buffer Address
SETBST =$f854		;Set Buffer Stat / End Pointers
LOCSPH =$f867		;Find Specific Tape Header
INCTPT =$f88a		;Bump Tape Pointer
PLAYMS =$f894		;"Print "PRESS PLAY ON TAPE"
TPSTAT =$f8ab		;Check Tape Status
RECDMS =$f8b7		;Print "PRESS RECORD..."
TPREAD =$f8c0		;Initiate Tape Read
TPWRIT =$f8e3		;Initiate Tape Write
TPCODE =$f8f4		;Common Tape Code
TPSTOP =$f94b		;Check Tape Stop
SETRDT =$f95d		;Set Read Timing
RDTPBT =$f98e		;Read Tape Bits
STORTC =$faad		;Store Tape Characters
RSTTPP =$fbd2		;Reset Tape Pointer
NCHAR  =$fbdb		;New Character Setup
TONE   =$fbea		;Send Tone to Tape
TWRDTA =$fc06		;Write Data to Tape
WRLEDR =$fc95		;Write Tape Leader
RESIRQ =$fccf		;Restore Normal IRQ
STOIRQ =$fcf6		;Set IRQ Vector
NOMOTR =$fd08		;Kill Tape Motor
CKWRPT =$fd11		;Check Read / Write Pointer
INCRDP =$fd1b		;Bump Read / Write Pointer
RSTXFR =$fd22		;Power-up RESET Entry
SCNROM =$fd3f		;Check For A000 ROM
ROMSG  =$fd4d		;Autostart ROM signature 'a0CBM'
KNLRSV =$fd6d		;Kernal reset vector table
RAMTAS =$FD8D		;Initialize System Constants
TPVECT =$fdf1		;IRQ vector table for tape I/O
IOINIT =$FDF9		;Initialize I/O
ENABTM =$fe39		;Enable Timer
NMIXFR =$fea9		;NMI Transfer Entry
WARMST =$fed2		;Warm Start Basic [BRK]
EOI    =$ff56		;Exit Interrupt
232TBL =$ff5b		;RS-232 Timing Table
IRQXFR =$ff72		;IRQ Transfer Entry

VIC-20 ROM Variable Equates	Page 1
12/13/96 8:54 AM



