Commodore‎ > ‎BASIC‎ > ‎Keywords‎ > ‎

RREG

Keyword Abbreviation Token (hex) Version(s) Classification
RREG R{Shift+R} FE 09 7.0 Command and Statement

 
Syntax  
RREG [ registerA ] [ , [ registerX ] [ , [ registerY ] [ , [ registerP ] ] ] ]
 
Parameters Type Legal Value(s) Default Value Note(s)
registerA numeric variable name
any non-reserved
 
registerX  numeric variable name 
any non-reserved 
   
registerY  numeric variable name 
any non-reserved 
 
registerP  numeric variable name  any non-reserved     
 
Returns Type Legal Value(s) Default Value Note(s)
registerA Unsigned byte
0 to 255
 
registerX  Unsigned byte  0 to 255   
registerY  Unsigned byte  0 to 255   
registerP  Unsigned byte  0 to 255     
 
 
Purpose  
Retrieve CPU registers after the last SYS command/statment.
 
 
Remarks  
This statement is interesting because it acts like a function!  Every other BASIC function takes a parameter enclosed in parentheses "(" and ")" and returns a single value.  With RREG, however, parentheses are forbidden and you may retrieve zero to four values.  The value(s) returned depend on the state of CPU after the most recent BOOT or SYS; on power-up, the "results" are defined as zero (i.e., the value(s) you get if no BOOT nor SYS was ever executed.)
 
Together with SYS, this may be used to calculate a value with a machine-language program in memory (either RAM or ROM).  In this sense, it is similar to USR.  However USR returns a single floating pointing number, while this can only return a byte(s).  Although BANK is important for SYS, it is not important for RREG.
 
Attempts to specify a reserved variable name as a parameter will generate SYNTAX ERROR.  Trying to use a string variable generates TYPE MISMATCH ERROR. 
 
It has no practical use except as a companion to SYS and (rarely) BOOT, which are very machine-specific; so effectively this statement is non-portable.  As such, there are no "real" examples.  However a few trivial ones are shown to demonstrate syntax.
 
Examples:
PRINT RREG(A)

?SYNTAX ERROR 
READY.
A = 1 : PRINT A
 1

READY.
RREG A

READY.
PRINT A
 0

READY.
RREG ,X,Y

READY.
RREG A,,Y

READY.
RREG

READY.
 
 
Compare With  
 
See Also  
BOOT, SYS
© H2Obsession, 2014
Comments