hp48sx

Model:	48SX

General:
	Name:			Scientific Expandable
	HP-Code-Name:		Charlemagne
	Family:			Charlemagne
	Logic:			RPL
	Features:		scientific, programmable, clock, alarms
				date arithmetic, hyperbolics, complex
				base w/arithmetic, matrix, vector, lists,
				solver (algebraic, program), symbolic
				math, symbolic integration, differentiation,
				plotting, graphics, etc., etc.
	Firsts:			real units that work, bidirectional I/R,
				matrix editor, equation writer, kermit,
				3D complex, stack application, ->Q,
				serial port, overhead projector
				support (from HP)
	Introduction:
		Date:		1990-03-06
		Price:		$350
	Discontinuation:
		Date:		<2003-01-01
		Price:		?
	Production-Run:		?

Display:
	Type:			LCD, bit-mapped
	Size:			8 lines x 22 chars, 64 x 131 pixels
	Number-Formats:		sign, 12 mantissa, ., exp sign, 2 exp
				see data types
	Annunciators:		<\	left shift active
				/>	right shift active
				\Ga	alpha keyboard active
				((.))	alarm has gone off or low battery
				hourglass  busy
				/\
				 -->	transmitting data
				\/

				the following ones are in the message area:

				RAD	radians mode
				GRAD	grads mode
				R\<)Z	polar/cylindrical mode
				R\<)\<)	polar/spherical mode
				HALT	program has been halted
				1	user flag 1 set
				2	user flag 2 set
				3	user flag 3 set
				4	user flag 4 set
				5	user flag 5 set
				1USR	user keyboard active for one key
				USER	user keyboard mode
				ALG	alebraic-entry mode
				PRG	program entry mode

Data:
	User-Visible:
		Smallest:	1E-499
		Largest:	9.99999999999E499
		Signif.-Digits:	12
	Internal:
		Smallest:	1E-49999
		Largest:	9.99999999999999E49999
		Signif.-Digits:	15
	Data-Types-and-Sizes:
		type	object		size (bytes)	display as
		0	real number	10.5		1.2345
		1	complex number	18.5		(6.7,8.9)
							(6.7,\<)8.9)
		2	string		5 +length	"XYZ" or
							$C 5 hello	
		3	real array	7.5+8*elements	[ 9 8 7 ]
		4	complex array	7.5+16*elements	[ (1,2) (3,4) ]
		5	list		5+2.5*elements+	{ "FIN" Name }
					  element storage
		6	global name	5 + length	X
		7	local name	5 + length	j
		8	program		as list		\<< Z 4 * \>>
		9	algebraic	as list		'A=B-3'
		10	binary integer	10.5		# 1010b
			  1-64 bits			# 765o
							# 987d
							# FEDh
		11	graphics object	10 + data	Graphic 131 x 64
			  header 2.5			GROB 4 4 70607050
			  length 2.5
			  height 2.5
			  width  2.5
			  data <as required>
		12	tagged object	5+tag+object	area: 4.8
		(tags can be applied to any object)	:area: 2.3

		13	unit object	?		55 km/s^2
		14	XLIB name	?		XLIB 645 2
		15	directory	as list		DIR ... END
		16	library		?		Library 645: ...
		17	backup object	?		Backup HOMEDIR
		18	built-in function 2.5		COS
		19	built-in command  2.5		ROLL
		20	address		?		<28FCh>
		21	long real	?		Long Real
		22	long complex	?		Long Complex
		23	linked array	?		Linked Array
		24	character	?		Character
		25	code		?		Code
		26	library data	?		Library Data
		27	external	?		External

		The sizes are guesses.

Memory:
	Named-Registers:	none
	Flags:			64-1	user flags
				-1	principal solution only
				-2	symbolic constants
				-3	numeric results
				-5 to -10	binary word size
				-11	base 0)decimal 1)octal 2)binary 3)hex
				-15	coordinates 0)rectangular
					2)cylindrical 3)spherical
				-17	trig mode 0)degrees 1)radians 2)grads
				-19	vector/complex
				-20	underflow is error
				-21	overflow is error
				-22	infinite not an error
				-23	there was positive underflow
				-24	there was negative underflow
				-25	there was overflow
				-26	there was infinite
				-30	plot y and f(x)
				-31	disable curve filling
				-32	graphics cursor dark background
				-33	I/O to I/R
				-34	print to serial
				-35	I/O is binary format
				-36	receive overwrite variable
				-37	double-spaced print
				-38	supress line feed
				-39	supress Kermit messages
				-40	display clock
				-41	24 hour format
				-42	DD.MM.YY format
				-43	don't reschedule repeating alarms
				-44	save acknowledged alarms
				-45 to -48	set number of digits
				-49	display format 0)STD 1)SCI 2)FIX 3)ENG
				-51	fraction mark comma
				-52	multi-line object display
				-53	display () to mark precedence
				-55	save last arguments
				-56	beep off
				-57	alarm beep off
				-58	verbose messages off
				-59	fast catalog display
				-60	alpha key once to lock
				-61	user key once to lock
				-62	user mode active
				-63	vectored enter on
				-64	set by GETI and PUTI when indices wrap
				The default flags are represented by #1008d.
	Register-Usage:		ALRMDAT	current alarms
				CST	custom menu
				EQ	current equation
				IERR	uncertainty of integration
				IOPAR	I/O parameters {baud parity recv-pacing
					xmit-pacing checksum translate-code}
				PICT	the graphics display
				PPAR	plotting parameters {(xmin,ymin)
					(xmax,ymax) indepvar resolution
					(xaxis,yaxis) type dependvar}
				PRTPAR	printing parameters {delay "remap"
					linelen "lineterm"}
				der...	user-defined derivative
				n1,n2,...	integers created by ISOL
				s1,s2,...	signs created by ISOL and QUAD
				\GSDAT	current statistics data
				\GSPAR	statistics parameters {indepcol
					dependcol intercept slope model }
	Numbered-Registers:	none
	Program-Steps:		memory
	Program-Editing:	insert or replace
	Program-Display:	alpha
	User-RAM-Bytes:		32K
	Total-RAM-Bytes:	32K (288K max)
	ROM-Bytes:		256K
	Machine-State:		flags
				stack
				user memory
				libraries
	File-Types:		none

Physical:
	Technology-Used:	CMOS
	Processor:		Clarke (147 pin TAB), 2 MHz
	Chip-Count:		5 (1LT8 (Clarke) CPU, 2x SED1181
				(display column driver), 256K ROM,
				32K RAM)
	Power-Source:		3 AAA cells
	Continuous-Memory:	yes
	Expansion-Ports:	2
	I/O-Ports:		4-wire serial, I/R I/O, beeper
	Clock:			yes

	Length:			180mm
	Width:			81mm
	Height:			25mm
	Weight:			264g
	Temperature-Range:
		Operating:	0 to 45 deg C
		Charging:	-
		Storage:	-20 to 65 deg C

Keyboard:
	Switches:		none
	Shift-Keys:		left, orange, above left
				right, blue, above right
				alpha, white, right
	User-Defined-Keys:	6 menu keys, entire keyboard

Key-Arrangement::

** ** ** ** ** **
** ** ** ** ** **
** ** ** ** ** **
** ** ** ** ** **
***** ** ** ** **
* *** *** *** ***
* *** *** *** ***
* *** *** *** ***
* *** *** *** ***

Key-Labels-Base-Keyboard::

[]	[]	[]	[]	[]	[]
MTH	PRG	CST	VAR	^	NXT
'	STO	EVAL	<|	v	|>
				 x
SIN	COS	TAN	\v/x	y	1/x
ENTER	+/-	EEX	DEL	<-
\Ga	7	8	9	\:-
<\	4	5	6	x
/>	1	2	3	-
ON	0	.	SPC	+

(The ON key has a white lower label of ATTN.)

Key-Labels-Left-Orange-Above-Left::

[]	[]	[]	[]	[]	[]
[PRINT]	[I/O]	[MODES]	[MEMORY][LIBRARY] PREV
UP	DEF	->Q	GRAPH	REVIEW	SWAP
			 2	  x	 x
ASIN	ACOS	ATAN	x	10	e
EQUATION EDIT	2D	PURGE	DROP
USR	[SOLVE]	[PLOT]	[ALGEBRA] ( )
[]	[TIME]	[STAT]	[UNITS]	[ ]
		|-- LAST -|
[]	RAD	STACK	CMD	\<< \>>
CONT	=	,	\pi	{ }

Key-Labels-Right-Blue-Above-Right::

[]	[]	[]	[]	[]	[]
[]	[]	[]	[]	[]	[]
HOME	RCL	->NUM	[]	[]	[]
\.d	\.S	\GS	x\v/y	LOG	LN
MATRIX	VISIT	3D	[]	CLR
[]	[]	[]	[]	#
[]	[]	[]	[]	_
		|-- LAST --|
[]	POLAR	ARG	MENU	" "
OFF	->	<--|	\<)	: :

Key-Labels-Alpha-White-Right::

A	B	C	D	E	F
G	H	I	J	K	L
M	N	O	P	Q	R
S	T	U	V	W	X
[]	Y	Z	[]	[]
[]	[]	[]	[]	[]
[]	[]	[]	[]	[]
[]	[]	[]	[]	[]
[]	[]	[]	[]	[]

([] keys do the same as the base keyboard, but do not insert any extra
spaces.)

Key-Labels-Alpha-Left-Not-Shown::

a	b	c	d	e	f
g	h	i	j	k	l
m	n	o	p	q	r
s	t	u	v	w	x
&	y	z	!	?
LC	`	^	:	()
[]	$	L-	currency []
[]	==	<	\<=	\<< \>>
CONT	=	,	\pi	{}

(The three characters starting after LC are non-spacing diacritics
that compose with the character typed next.)

Key-Labels-Alpha-Right-Not-Shown::

\Ga	\Gb	\GD	\Gd	\Ge	\Gh
\Gg	\Gn	\Goo	|	\|^	\Gl
'	\Gm	\GW	\<-	\|v	\Gr
\Gs	\Gt	%	~	\Gw	\Gx-
@	+-	\GZ	upside!	upside?
INS	'	~	etc.	#
[]	c|	Y=	\^o	_
[]	\=/	>	\>=	""
OFF	\->	return	\<)	::

(The three characters starting after INS are non-spacing diacritics
that compose with the character typed next.)

Programmable-Operations::

!		factorial or gamma
" "		identify string
#		identify binary number
%		compute percent
%CH		compute percent change
%T		compute percent total
'		identify algebraic
( )		precedence; identify complex number
*H		adjust plot height
*W		adjust plot width
+		addition
+/-		change sign
-		subtraction
->		create local variable
->ARRY		create an array
->DATE		set the date
->GROB		create a grob
->HMS		convert to HH.MMSS
->LCD		put grob into LCD
->LIST		create a list
->NUM		evaluate an object to a numeric value
->Q		converts a number to a fractional equivalent
->Q\pi		converts a number to a fractional equivalent after factoring
		out \pi
->STR		create a string
->TAG		create a tagged object
->TIME		set the time
->UNIT		create a unit object
->V2		create a 2d vector
->V3		create a 3d vector
0-9, .		enter digit
1/x		reciprocal
10^x		common exponentiation
: :		identify tag
<		comparison test
=		"equal" comparison test
==		"equality" comparison test
>		comparison test

A		ampere unit
a		are unit (100 m^2)
ABS		absolute value
ACK		acknowledge displayed past due alarm
ACKA		acknowledge all past due alarms
ACOS		arc cosine
ACOSH		hyperbolic arc cosine
acre		acre unit
ALOG		common antilogarithm
AND		logical / binary and
Ao		Angstrom unit
APPLY		applies an operator to an expression
ARC		draw an arc
ARCHIVE		makes a backup copy of HOME
arcmin		arc minutes unit
arcs		arc seconds unit
ARG		compute polar angle of a coordinate
ARRAY->		separate array (28 compatability)
ASIN		arc sine
ASINH		hyperbolic arc sine
ASN		assign user key
ASR		arithmetic shift right
ATAN		arc tangent
ATANH		hyperbolic arc tangent
atm		atmosphere unit
ATTACH		attach a library to a directory
au		astronomical unit
AUTO		auto-scales Y axis
AXES		set axes intersections

b		barn unit
B->R		convert binary to real
BAR		select bar plot
bar		bar unit (pressure)
BARPLOT		draw a bar plot
BAUD		set baud
bbl		barrel unit
BEEP		sound a beep
BESTBIT		select best fit model
BIN		select binary mode
BINS		sort summation into bins
BLANK		blank grob
BOX		draw a box
Bq		Becquerel unit of activity
Btu		British Thermal Unit
bu		bushel unit
BUFLEN		returns the number of characters in the serial in buffer
BYTES		returns object size and checksum

C		Couloumb unit
c		speed of light constant
C->PX		convert user to pixel coordinates
C->R		convert complex to real
cal		calorie unit
CASE ... THEN ... END ... END	case statement
cd		Candela unit
CEIL		next larger integer
CENTR		identify center of plot display
CF		clear flag
chain		chain unit
CHR		convert integer to character
Ci		Curie unit
CKSM		specifies Kermit checksum
CLEAR		clears the stack
CLKADJ		adjust clock ticks
CLLCD		clear display
CLOSEIO		close serial port
CLUSR		clear all variables
CLVAR		clear all variables
CL\GS		clear statistics data
cm		centimeter unit
cm/s		centimeters/second unit
cm^2		square centimeters unit
cm^3		cubic centimeters unit
CNRM		compute column normal
COLCT		collect like terms
COL\GS		specifies dependant and independant statistics variables
COMB		combinations
CON		constant array
CONIC		selects conic polot
CONJ		compute complex conjugate
CONT		continue
CONVERT		compute unit conversion
CORR		compute correlation coefficent
COS		cosine
COSH		hyperbolic cosine
COV		compute covariance
CR		print a carriage-right
CRDIR		create directory
CROSS		compute cross product
CT		carat unit
cu		cup unit

d		day unit
D->R		convert degrees to radians
DATE		return the date
DATE+		add days to date
DDAYS		compute days between dates
DEC		specify decimal mode
DECR		decrements variable
DEFINE		create a user-defined function
DEG		specify degrees mode
DELALARM	remove an alarm
DELAY		specify printing delay
DELKEYS		delete key assignments
DEPND		specify dependant plot variable
DEPTH		size of stack
DET		compute determinant
DETACH		detach a library
DISP		display object in line of display
DO ... UNTIL ... END	do loop
DOERR		generate error
DOT		compute dot product
DRAW		draw plot
DRAX		draw axes
DROP		drop one object
DROP2		drop two objects
DROPN		drop N objects
DTAG		remove tags
DUP		duplicate object
DUP2		duplicate two objects
DUPN		duplicate N items
dyn		dyn unit

e		symbolic constant 'e'
EEX		enter exponent
ELSE		control structure component
END		control structure component
ENG		specify ENG mode
ENTER		enter
EQ->		separate equation
ERASE		erase PICT
erg		erg unit
ERR0		clear error
ERRM		last error message
ERRN		last error number
eV		electron volt unit
EVAL		evaluate object
EXP		natural exponentiation
EXPAN		expands algebraic
EXPM		natural exponentiation - 1
e^x		natural exponentiation

F		Farad unit
fath		fathom unit
fbm		board foot unit
fc		footcandle unit
FC?		is a flag clear?
FC?C		is a flag clear? and clear
Fdy		Faraday unit
fermi		Fermi unit
FINDALARM	find an alarm
FINISH		end Kermit server mode
FIX		specify FIX display mode
flam		footlambert unit
FLOOR		next smaller integer
FOR ... NEXT	for loop
FOR ... STEP	for loop
FP		fractional part
FREE		free merged memory
FREEZE		freeze part of display
FS?		is a flag set?
FS?C		is a flag set? then clear
ft		foot unit
ft*lbf		foot-pound unit
ft/s		feet per second unit
ftUS		US foot unit
ft^2		square feet unit
ft^3		cubic feet unit
FUNCTION	specify function plot

g		gram unit
ga		standard freefall acceleration constant
gal		US gallon unit
galC		Canadian gallon unit
galUK		UK gallon unit
GET		get an element from a list, vector, or matrix
GETI		get an element from a list, vector, or matrix and increment
gf		gram-force unit
GOR		graphics OR
GRAD		specify GRADS mode
grad		grads unit
grain		grains unit
GRAPH		enter the graphics environment
GXOR		graphics XOR
Gy		Gray unit of radiation

H		Henry unit
h		hour unit
ha		hectare unit
HALT		suspend execution
HEX		specify hexadecimal mode
HISTOGRAM	specify histogram plot
HISTPLOT	draw a histogram
HMS+		hh.mmss addition
HMS-		hh.mmss subtraction
HMS->		convert to hh.mmss
HOME		move to home directory
hp		horsepower unit
Hz		Hertz unit

IDN		identity matrix
IF ... THEN ... ELSE ... END	if-statement
IF ... THEN ... END		if-statement
IFERR ... THEN ... ELSE ... END	error trap
IFERR ... THEN ... END		error trap
IFT		stack-based if
IFTE		stack-based if, can be used in algebraics
IM		return imaginary part
in		inch unit
INCR		increment variable
INDEP		specify independent variable for plotting
inH20		inches of water unit
inHg		inches of mercury unit
INPUT		accept input
INV		reciprocal
in^2		square inches unit
IN^3		cubic inches unit
IP		integer part
ISOL		isolate an equation variable

J		Joule unit

K		Kelvin unit
kcal		kilocalorie unit
KERRM		return last Kermit error message
KEY		check for key press
kg		kilogram unit
KGET		get data using Kermit
KILL		abort all suspended programs
kip		kilopound of force unit
km		kilometers unit
km^2		square kilometers unit
knot		knots unit
kph		kilometers per hour unit

l		liter unit
LABEL		labels axes
lam		lambert unit
LAST		return last arguments
LASTARG		return last arguments
lb		Avoirdupois pount unit
lbf		pound-force unit
lbt		troy pound unit
LCD->		return LCD as a grob
LIBS		lists library objects
LINE		draw line
LINFIT		specify linear model
LIST->		separate list (28 compatability)
lm		lumen unit
LN		natural logarithm
LNP1		natural logarithm + 1
LOG		common logarithm
LOGFIT		specify logarithmic model
LR		compute linear regression
lx		lux unit
lyr		light-year unit

m		meter unit
m/s		meters per second unit
MANT		return mantissa
MAX		larger of two number
MAXR		largest real number
MAX\GS		largest statistics value
MEAN		compute mean
MEM		compute available memory
MENU		select a built-in menu
MERGE		merges RAM card into main memory
MeV		mega electron volt unit
mho		mho unit
mi		international mile unit
mil		mil unit
MIN		smaller of two numbers
min		minutes unit
MINR		smallest positive real number
MIN\GS		smallest statistics value
miUS		US mile unit
miUS^2		square US miles unit
mi^2		square miles unit
ml		milliliters unit
mm		millimeters unit
mmHg		millimeters of mercury unit
MOD		modulus
mol		mole unit
Mpc		mega parsec unit
MPH		miles per hour unit
M^2		square meter unit
M^3		cubic meter unit

N		Newton unit
NEG		negate an argument
NEWOBJ		create a new instance of an object
NEXT		control structure component
nmi		nautical mile unit
NOT		logical or binary not
NUM		convert character to a number
N\GS		number of entries in summation

OBJ->		separate object
OCT		specify octal mode
OFF		off
OLDPRT		maps printer output to HP 82249A character set
OPENIO		open serial port
OR		logical or binary or
ORDER		specify order of objects in a directory
OVER		select object
oz		ounce unit
ozfl		US fluid ounce unit
ozt		Troy ounce unit
ozUK		UK fluid ounce unit

P		Poise unit of viscosity
Pa		Pascal unit
PARAMETRIC	specify parametric plot
PARITY		sets parity
PATH		returns current path
pc		parsec unit
PDIM		changes the size of PICT
pdl		poundal unit of force
PERM		compute permutations
PGDIR		purge directory
ph		phot unit of illuminance
PICK		fetch object
PICT		specify screen for graphics
PIX?		is pixel set?
PIXOFF		turn pixel off
PIXON		turn pixel on
pk		peck unit
PKT		send a Kermit packet to a server
PMAX		sets the upper-right plot coordinate
PMIN		sets the lower-left plot coordinate
POLAR		specify polar plot
POS		find position of object in another
PR1		print level 1 object
PREDV		predict the dependant variable
PREDX		compute X given Y
PREDY		compute Y given X
PRLCD		print screen
PROMPT		display prompt and print program
PRST		print stack
PRSTC		print stack compactly
PRVAR		print a variable
psi		pounds per square inch unit
pt		pint unit
PURGE		deletes one or more variables
PUT		put an element to a list, vector, or matrix
PUTI		put an element to a list, vector, or matrix and incremnt
PVARS		return a lists of backup and library objects
PVIEW		display PICT at location
PWRFIT		specify power model
PX->C		convert pixel to user coordinates

qt		quart unit
QUAD		solve a quadratic polynomial
QUOTE		returns an argument unevaluated

R		roentgen unit
r		radian unit
R->B		convert real to binary
R->C		convert real to complex
R->D		convert radians to degrees
RAD		specify radians mode
rad		rad unit of absorbed dose
RAND		compute random number
RCEQ		recalls the current equation
RCL		recall value
RCLALARM	recall an alarm
RCLF		recall flags
RCLMENU		recall current menu
RCL\GS		recall the current statistics matrix
RCWS		recall binary word size
rd		rod unit
RDM		redimension a matrix
RDZ		set the random number seed
RE		return real part
RECN		receive file from remote Kermit, save in name
RECV		receive file from remote Kermit, save as file
rem		rem unit
REPEAT		control structure component
REPL		replace
RES		set the plot resolution
RESTORE		restore a backup object
RL		rotate left
RLB		rotate left byte
RND		round number
RNRM		compute row normal of a matrix (maximum of sums of absolute
		values of all elements of all rows)
ROLL		roll stack
ROLLD		roll stack down
ROOT		compute numerical root
ROT		move level 3 object to level 1
RR		rotate right
RRB		rotate right byte
RSD		compute residual to solution of system of linear equations

S		Siemens unit
s		second unit
SAME		comparison test
sb		Stilb unit of luminance
SBRK		send a break on the serial line
SCALE		specify x and y scale
SCATRPLOT	draw a scatter plot
SCI		specify scientific display mode
SCONJ		conjugate the contents of a variable
SDEV		compute standard deviation
SEND		send the object using Kermit
SERVER		go into Kermit server mode
SF		set flag
SHOW		resolve all name references
SIGN		return the sign of a number
SIN		sine
SINH		hyperbolic sine
SINV		invert the contents of a variable
SIZE		returns the dimensions of an object
SL		shift left
SLB		shift left byte
SLOPE		compute slope
slug		slug unit
SNEG		negates the contents of a variable
SQ		square
sr		steradian unit
SR		shift right
SRB		shift right byte
SRECV		reads data from serial port
St		Stoke unit of viscosity
st		stere unit of volume
START ... NEXT	loop with no index variable
START ... STEP	loop with no index variable, variable step
STD		specify standard display mode
STEP		control structure component
STEQ		store into EQ
STIME		sets serial timeout
STO		store into variable
STO*		store with multiplication into variable
STO+		store with addition into variable
STO-		store with subtraction into variable
STO/		store with division into variable
STOALARM	store an alarm
STOF		set system flags
STOKEYS		make user key assignments
STO\GS		store into \GSDAT
STR->		separate string (28 compatability)
STWS		sets binary wordsize
SUB		extracts portion of an object
Sv		Sievert unit of dose equivalent
SWAP		exchange two objects
SYSEVAL		evaluates object

T		Tesla unit
t		metric ton unit
TAN		tangent
TANH		hyperbolic tangent
TAYLR		compute Taylor series approximation
tbsp		tablespoon unit
TEXT		selects the stack display (as opposed to graphics)
THEN		control structure component
THEN ... END	control structure components
therm		therm unit
TICKS		return time in clock ticks
TIME		return the current time
TLINE		draw line toggling pixels
TMENU		display temporary menu
ton		short ton unit
tonUK		UK ton unit
torr		torr unit
TOT		compute statistics sums
TRANSIO		select character translation
TRN		transpose
TRUNC		truncates a number
TRUTH		specify truth plot
tsp		teaspoon unit
TSTR		convert date and time to string
TVARS		lists variables of type
TYPE		returns type of an object

u		unified atomic mass unit
UBASE		convert to SI base units
UFACT		factor compound unit
UNTIL		control structure component
UPDIR		move up one level in path
UTPC		upper-tail Chi-Square distribution
UTPF		upper-tail F-distribution
UTPN		upper-tail normal distrbution
UTPT		upper-tail t-distribution
UVAL		return numeric portion of a unit

V		volt unit
V->		separate a vector
VAR		compute variances
VARS		return list of variables
VTYPE		return variable's type

W		Watt unit
WAIT		pause execution for time or key
Wb		Weber unit
WHILE ... REPEAT ... END	while statement
WSLOG		return warm start log

x		multiplication
XCOL		specify independant variable
XMIT		sent serial data
XOR		logical or binary xor
XPON		return exponent
XRNG		specify x-axis plotting range
XROOT		xth root of y
x\v/y		xth root of y
x^2		square

YCOL		specify dependant variable
yd		yard unit
yd^2		square yard unit
yd^3		cubic yard unit
yr		year unit
YRNG		specify y-axis plotting range
y^x		power

[ ]		identify array
\.d		differentiate
\.S		integrate
\:-		division
\<)		identify polar or spherical coordinates
\<< \>>		identify program
\<=		comparison test
\=/		comparison test
\>=		comparison test
\Gm		micron unit
\GS		sum expression over range
\GS+		add to statistics
\GS-		add to statistics
\GSLINE		compute best-fit line
\GSX		compute sum of X data
\GSX*Y		compute sum of products of X and Y data
\GSX^2		compute sum of squares of X data
\GSY		compute sum of Y data
\GSY^W		compute sum of squares of Y data
\GW		ohms unit
\pi		symbolic constant
\v/x		square root
\^o		degrees units
\^oC		degrees C units
\^oF		degrees F units
\^oR		degrees R units
^		power
_		identify unit
{ }		identify list
|		where; substitute symbolics for names

Non-Programmable-Operations::

(())		parenthesize neighbors
(<-		expand subexpression left
/>(<-		repeat (<- until no change
*1		multiply by 1
+1-1		add and subtract 1
+COL		insert a column of zeros
+ROW		insert a row of zeros
,		separate numbers
-()		double negate and distribute
->()		distribute prefix
->)		expand subexpression right
/>->)		repeat (<- until no change
->DEF		expand trig and hyp functions into EXP and LN
->STK		put object onto stack
-COL		delete a matrix column
-ROW		delete a matrix row
/1		divide by 1
/>		right shift
1-VAR		makes entry the statistical matrix and displays menu page 2
1/()		double invert and distribute
12/24		toggle 12 and 24 hour display format
2-VAR		makes entry the statistical matrix and displays menu page 4 
2D		assemble or disassemble a 2d vector
3D		assemble or disassemble a 3d vector
<-		erase last character or object
<-->		commute arguments
<--|		enter newline
<-A		associate left
/><-A		repeat <-A until no change
<-D		distribute left
/><-D		repeat <-D until no change
<-DEL		delete item to the left
/><-DEL		delete all items to the end of the line
<-M		merge factors left
/><-M		repeat <-M until no change
<-SKIP		move left one item
<-T		move term left
/><-T		repeat T-> until no change
<-WID		decrease column width
<\		left shift
<|		left arrow
>DATE		set alarm date
>TIME		set alarm time

A->		associate right
/>A->		repeat A-> until no change
A/PM		specify AM/PM format in clock
A/PM		specify AM/PM format in alarm
ADJST		TIME sub-menu
AF		add fractions
ALGEBRA		bring up menu
ALRM		TIME sub-menu
ANGL		UNITS sub-menu
AREA		calculate area under plot
AREA		UNITS sub-menu
ARG		enable/disable LAST ARG
ASCII		specify ASCII/binary Kermit transfer
ATTN		abort execution; exit special environments; clear messages
AUTO		scale Y axis and draw plot
/>AXES		recall axes intersection

BASE		MTH sub-menu
BEEP		enable/disable beep
BOX		draw box
BRCH		PGM sub-menu

CAT		STAT sub-menu
CENT		redraw graph centered
/>CENT		recall center coordinates
CIRCL		draw circle
CLK		enable/disable clock display
CLR		clears screen or pict
CMD		enable/disable LAST CMD
CNCT		enable/disable curve filling
COLCT		collect like terms
COORD		displays cursor coordinates
CST		custom menu
CTRL		PGM sub-menu

D->		distribute right
/>D->		repeat D-> until no change
DAY		repeating alarm interval
DBUG		debugger
DEL		delete next item
DEL->		delete item to the right
/>DEL->		delete all items to the end of the line
/>DEPN		recall dependant variable
DINV		double invert
DNEG		double negate
DOT+		turn on pixel drawing
DOT-		turn off pixel drawing
DRAW		plot equation with axes
DRPN		drop items from stack
DSPL		PGM sub-menu
DUPN		duplicate items

E()		replace power-of-power with power-product
ECHO		copy items to stack
EDEQ		edit equation
EDIT		EDIT menu
EDIT\GS		copy statistics data to matrix writer
ELEC		UNITS sub-menu
ENRG		UNITS sub-menu
ENTRY		toggle algebraic and program entry modes
EQ+		add equation to EQ
/>EQ+		remove last entry from EQ
EQUATION	equation writer application
EXEC		set alarm execution action
/>EXEC		recall alarm execution action
EXECS		show alarm execution action
EXIT		exits environemnt
EXPR		highlights subexpression
EXPR=		return expression or equation values
EXTR		move cursor to extremum
E^		replace power-of-product with power-of-power

F'		plot first derivative
F(X)		display value of function
FAST		toggles display of equation names or names and values
FCN		PLOT sub-menu
FM,/FM.		set fraction mark
FORCE		UNITS sub-menu

GO->		set matrix entry mode to left-to-right
GOv		set matrix entry mode to top-to-bottom
GRAPH		invokes scrolling mode

HOUR		repeating alarm interval
HR+		adjust hours
HR-		adjust hours
HYP		MTH sub-menu

I/O		I/O menu
/>INDEP		recall independent variable
INS		switches between insert and replace editing
IR/W		infrared/wire selection
ISECT		move cursor to closest intersection

KEEP		clear stack levels above current
KEYS		remove graphics application menu labels

L()		replace product-of-log with log-of-power
L*		replace log-of-power with product-of-log
LABEL		labels axes
LAST ARG	retains stack and restores last arguments
LAST CMD	return last command line
LAST MENU	return last menu
LAST STACK	restore last stack
LENG		UNITS sub-menu
LEVEL		enter level number to stack
LIBRARY		bring up menu
LIGHT		UNITS sub-menu
LINE		draw line

M->		merge factors right
/>M->		repeat M-> until no change
M/D		toggles date display format
MASS		UNITS sub-menu
MATRX		MTH sub-menu
MATRIX		matrix writer application
MEMORY		bring up menu
MIN+		adjust minutes
MIN-		adjust minutes
MODES		bring up menu
MODL		STAT sub-menu
MTH		bring up menu

NEW		stores algebraic or matrix under new name
NEXT		display but doesn't execute next object
NONE		cancel alarm repeat
NXEQ		rotate list in EQ
NXT		next screen or menu

OBJ		PRG sub-menu
OFF		off
ON		turn on
ON + +		adjust contrast
ON + -		adjust contrast
ON + A + F	clear all memory
ON + B		cancels ON + selection
ON + C		bring calculator to known state without clearing memory
ON + D		interactive self-test, exit with ON + C

	<-	memory scanner (see below)
	A	display CPU speed
	B	press ENTER for display patterns
	C	check internal ROM
	D	check internal RAM
	DEL	summary of tests
	E	test keyboard
	ENTER	initialize test times
	F	partial keyboard test
	G	ESD test
	H	UART loop back test
	I	wired UART echo
	J	identify what's plugged in
	K	port RAM device test
	L	blank display
	M	sent time to I/R port
	N	receive time from I/R port
	O	wireless loop back test
	P	writeless UART echo test
	S	show test start time
	T	show test fail time
	U	looping test
	V	looping test
	W	looping test
	X	looping test
	Y	looping test
	Z	looping test

	debugger / memory scanner commands:

	+		move by + #1h nybbles
	+/-		go to address #F000Ah 
	-		move by - #1h nybbles
	.		transmit #10h nibbles to infrared and serial
	0-9,A-F		enter a digit into memory, move by + #1h nybbles
	1/X		go to address #F0A8Ch or #F1210h (display, see below)
	<-		refresh
	DEL		go to port 2 address #C0000h
	EEX		go to address #80000h (port 1?)
	ENTER		go to address #00100h (display controller?)
	EVAL		execute at address
	ON + C		exits
	SPC		transmit #1000h nybbles to serial (9600 baud)
	X		go to display RAM address
	x		move by + #100h nybbles
	Y		halt log address
	Z		go to port 1 address
	\:-		move by - #100h nybbles
	\|v		move by - #1000h nybbles
	\|^		move by + #1000h nybbles

	When you first enter scan mode, the address is #705D9h.
	Pressing EVAL at this address displays the version number.
	(See also notes.)
ON + E		continuous self-test, stop with ON + C
ON + MTH	print screen
ON + PRINT	graphics screen dump
ON + SPC	enters coma mode, which turns off all timers and saves power
ON + TIME	cancels next repeating alarm

PARTS		MTH sub-menu
/>PDIM		recall PICT size
PICK		copies object to level 1
PLOT		bring up menu
PLOTR		PLOT sub-menu
POLAR		switches rectangular and polar coordinates
PORT0		LIBRARY sub-menu
PORT1		LIBRARY sub-menu
PORT2		LIBRARY sub-menu
POWR		UNITS sub-menu
PRESS		UNITS sub-menu
PREV		previous screen or menu
/>PREV		first menu page
PRG		bring up menu
PRINT		bring up menu
PROB		MTH sub-menu
PTYPE		PLOT sub-menu
PURG		purges selected equation

RAD		switches radians and degrees mode
RAD		UNITS sub-menu
RCLKEYS		recall user key assignments
/>RES		recall spacing
RESET		reset plot parameters
REVIEW		brings up data in appropriate application
ROLL		roll object to level 1
ROLLD		roll object in level 1 to here
ROOT		move cursor to root
RPT		TIME sub-menu
RULES		equation writer sub-menu
R\<)Z		specify polar/cylindrical mode
R\<)\<)		specify polar/spherical mode

/>SCALE		recall scale
SEC		repeating alarm interval
SEC+		adjust seconds
SEC-		adjust seconds
SET		TIME sub-menu
SET		set alarm
SETUP		I/O sub-menu
SKIP->		move right over object
SLOPE		compute slope
SOLVE		bring up menu
SOLVR		bring up SOLVE menu
SPC		type a space
SPEED		UNITS sub-menu
SST		single step
SSTv		single step enter procedure
STAT		bring up menu
STK		PRG sub-menu
STK		enable/disable LAST STK
SYM		toggle symbolic/numeric results

T->		move term right
/>T->		repeat T-> until no change
TEMP		UNITS sub-menu
TEST		PRG sub-menu
TIME		bring up menu
TIME		UNITS sub-menu
TRG*		expand trig and hyp functions of sums and differences

UNITS		bring up menu
USR		user keyboard: press once and user keyboard is enabled
		for one key; press twice and user keyboard is locked
		on; third press clears user keyboard

v		move down
VAR		variable sub-menu
VEC		toggles vector and array modes
VECTR		MTH sub-menu
VIEW		views object in level 1
VISC		UNITS sub-menu
VISIT		edit object named by level 1 object
vMATCH		match and replace, beginning with top level expression
VOL		UNITS sub-menu

WEEK		repeating alarm interval
WID->		increase column width

X		select X axis zoom
XAUTO		select X axis zoom with auto scaling
/>XCOL		recall independant variable
/>XRNG		recall x axis display range
XY		select X and Y axis zoom
XYZ		select rectangular mode

Y		select Y axis zoom
/>YCOL		recall dependant variable
/>YRNG		recall Y axis display range

Z-BOX		zoom in to box
/>Z-BOX		zoom in to box, autoscaling Y
ZOOM		GRAPH sub-menu

\Ga		alpha keyboard: press once and alpha keyboard is enabled
		for one key; press twice and alpha keyboard is locked
		on; third press clears alpha keyboard
^		move up
^1		raise to power 1
^MATCH		match and replace, beginning with subexpressions
^STK		selects interactive stack
|>		right arrow

Menus::

ALGEBRA:COLCT	EXPA	ISOL	QUAD	SHOW	TAYLR
	^MAT	vMAT	|	APPLY	QUOT	->Q\pi
/>ALGEBRA:equation catalog
	PLOTR	SOLVR	EQ+	EDIT	->STK	VIEW
	ORDER	PURG	FAST

CST:	custom menu

EDIT:	<-SKIP	SKIP->	<-DEL	DEL->	INS	^STK

EQUATION:type <| to activate SELECTION menu
	SELECTION:RULES	EDIT	EXPR	SUB	REPL	EXIT
		RULES:	<-T	T->	DNEG	DINV	*1	^1
			/1	+1-1	COLCT
		these are not in proper order:
			(())	(<-	->)	<-->	<-M	M->
			<-A	A->	->()	<-D	D->	AF
			-()	1/()	L*	L()	E^	E()
			->DEF	TRG*	
			

GRAPH:	ZOOM	Z-BOX	CENT	COORD	LABEL	FCN
	ZOOM:	XAUTO	X	Y	XY		EXIT
	FCN:	ROOT	ISECT	SLOPE	AREA	EXTR	EXIT
		F(X)	F'	NXEQ

I/O:	SEND	RECV	SERVE	KGET	FINIS	SETUP
	RECN	PKT	KERR		OPENI	CLOSE
	XMIT	SRECV	STIME	SBRK	BUFLE
	SETUP:	IR/W	ASCII	BAUD	PARIT	CKSM	TRAN
/>I/O:	directly to server mode

LIBRARY:current libraries	PORT0	PORT1	PORT2

MATRIX:	EDIT	VEC	<-WID	WID->	GO->	GOv
	+ROW	-ROW	+COL	-COL	->STK	^STK

MEMORY:	MEM	BYTES	VARS	ORDER	PATH	CRDIR
	TVARS	PVARS	NEWO	LIBS	ATTAC	DETAC
	MERG	FREE	ARCHI	RESTO	PGDIR
/>MEMORY:STO+	STO-	STO*	STO/	INCR	DECR
	SINV	SNEG	SCON

MODES:	STD	FIX	SCI	ENG	SYM	BEEP
	STK	ARG	CMD	CNC	ML	CLK
	DEG	RAD	GRAD	XYZ	R\<)Z	R\<)\<)
	HEX	DEC	OCT	BIN	FM,
/>MODES:ASN	STOK	RCLK	DELK	MENU	CST
	TMEN	RCLM	STOF	RCLF	SF	CF
	FS?	FC?	FS?C	FC?C

MTH:	PARTS	PROB	HYP	MATR	VECTR	BASE
	PARTS:	ABS	SIGN	CONJ	ARG	RE	IM
		MIN	MAX	MOD	%	%CH	%T
		MANT	XPON	IP	FP	FLOOR	CEIL
		RND	TRUNC	MAXR	MINR
	PROB:	COMB	PERM	!	RAND	RDZ
		UTPC	UTPF	UTPN	UTPT
	HYP:	SINH	ASINH	COSH	ACOSH	TANH	ATANH
		EXPM	LNP1
	MATR:	CON	IDN	TRN	RDM	DET	RSD
		ABS	RNRM	CNRM
	VECTR:	XYZ	R\<)Z	R\<)\<)	CROSS	DOT	ABS
		V->	->V2	->V3	D->R	R->D
	BASE:	HEX	DEC	OCT	BIN	STWS	RCWS
		RL	RR	RLB	RRB	R->B	B->R
		SL	SR	SLB	SRB	ASR

PLOT:	PLOTR	PTYPE	NEW	EDEQ	STEQ	CAT
	PLOTR:	ERASE	DRAW	AUTO	XRNG	YRNG	INDEP
		DEPN	PTYPE	RES	CENT	SCALE	RESET
		AXES	DRAX	LABEL	*H	*W	PDIM
		/>INDEP:recall value
		/>DEPN:	recall value
		PTYPE:	FUNC	CONIC	POLAR	PARA	TRUTH	BAR
		/>RES:	recall value
		/>AXES:	recall value
		/>PDIM:	recall value
	PTYPE:	FUNC	CONIC	POLAR	PARA	TRUTH	BAR
	/>STEQ:	RCEQ
/>PLOT:	direct to PLOTR menu

PRG:	STK	OBJ	DSPL	CTRL	BRCH	TEST
	STK:	OVER	ROT	ROLL	ROLLD	PICK	DEPTH
		DUP	DUP2	DUPN	DROP2	DRPN
	OBJ:	OBJ->	EQ->	->ARR	->LIST	->STR	->TAG
		R->C	C->R	DTAG	->UNIT	TYPE	VTYPE
		SIZE	POS	REPL	SUB	NUM	CHR
		PUT	GET	PUTI	GETI
	DSPL:	PICT	PVIEW	LINE	TLINE	BOX	ARC
		PIXON	PIXOF	PIX?	PX->C	C->PX	SIZE
		->GRO	BLAN	GOR	GXOR	REPL	SUB
		->LCD	LCD->	CLLCD	DISP	FREEZ	TEXT
	CTRL:	DBUG	SST	SSTV	NEXT	HALT	KILL
		INPUT	PROM	DISP	MENU	WAIT	KEY
		DOERR	ERRN	ERRM	ERR0	BEEP	OFF
	BRCH:	IF	CASE	START	FOR	DO	WHILE
		THEN	END	NEXT	STEP	UNTIL	REPEA
		ELSE	IFERR	IFT	IFTE
		<\IF:	IF ... THEN ... END
		/>IF:IF ... THEN ... ELSE ... END
		<\CASE:	CASE ... THEN ... END ... END
		/>CASE:	THEN ... END
		<\START:START ... NEXT
		/>START:START ... STEP
		<\FOR:	FOR ... NEXT
		/>FOR:	FOR ... STEP
		<\DO:	DO ... UNTIL ... END
		<\WHILE:WHILE ... REPEAT ... END
		<\IFERR:IFERR ... THEN ... END
		/>IFERR:IFERR ... THEN ... ELSE ... END
	TEST:	AND	OR	XOR	NOT	SAME	TYPE
		==	\=/	<	>	\<=	\>=
		SF	CF	FS?	FC?	FS?C	FC?C

PRINT:	PR1	PRST	PRSTC	PRLCD	PRVAR	CR
	DELAY	OLDPR
/>PRINT:does a PR1

SOLVE:	SOLVR	ROOT	NEW	EDEQ	STEQ	CAT
	/>STEQ:	RCEQ
	SOLVR:	list of solver variables	LEFT=	RT= or EXPR=
/>SOLVE:direct to SOLVR menu
	name	does STO
	<\name	does solve for
	/>name	does RCL

STACK application menu:
	ECHO	VIEW	PICK	ROLL	ROLLD	->LIST
	DUPN	DRPN	KEEP	LEVEL

STAT:	\GS+	CL\GS	NEW	EDIT\GS	STO\GS	CAT
	TOT	MEAN	SDEV	MAX\GS	MIN\GS	BINS
	XCOL	YCOL	BARPL	HISTP	SCATR	\GSLINE
	LR	PREDX	PREDY	CORR	COV	MODL
	\GSX	\GSY	\GSX^2	\GSY^W	\GSX*Y	N\GS
	<\\GS+:	\GS-
	/>STO\GS:RCL\GS
	CAT:	1-VAR	PLOT	2-VAR	EDIT	->STK	VIEW
	MODL:	LIN	LOG	EXP	PWR	BEST
/>STAT:	direct to page 2 of STAT menu

TIME:	SET	ADJST	ALRM	ACK	ACKA	CAT
	DATE+	DDAYS	DATE	TIME	TSTR	TICKS
	->HMS	HMS->	HMS+	HMS-
	SET:	->DAT	->TIM	A/PM	12/24	M/D
	ADJST:	HR+	HR-	MIN+	MIN-	SEC+	SEC-
		CLKA
	ALRM:	>DATE	>TIME	A/PM	EXEC	RPT	SET
		STOAL	RCLAL	DELAL	FINDA
		RPT:	WEEK	DAY	HOUR	MIN	SEC	NONE
/>TIME:	direct to alarm catalog
	PURG		EXECS	EDIT	->STK	VIEW

UNITS:	LENG	AREA	VOL	TIME	SPEED	MASS
	FORCE	ENRG	POWR	PRESS	TEMP	ELEC
	ANGL	LIGHT	RAD	VISC
	LENG:	M	CM	MM	YD	FT	IN
		MPC	PC	LYR	AU	KM	MI
		NMI	MIUS	CHAIN	RD	FATH	FTUS
		MIL	\Gm	A	FERMI
	AREA:	M^2	CM^2	B	YD^2	FT^2	IN^2
		KM^2	HA	A	MI^2	MIUS^	ACRE
	VOL:	M^3	ST	CM^3	YD^3	FT^3	IN^3
		L	GALU	GALC	GAL	QT	PT
		ML	CU	OZFL	OZUK	TBSP	TSP
		BBL	BU	PK	FBM
	TIME:	YR	D	H	MIN	S	HZ
	SPEED:	M/S	CM/S	FT/S	KPH	MPH	KNOT
		C	GA
	MASS:	KG	G	LB	OZ	SLUG	LBT
		TON	TONU	T	OZT	CT	GRAIN
		U	MOL
	FORCE:	N	DYN	GF	KIP	LBF	PDL
	ENRG:	J	ERG	KCAL	CAL	BTU	FT*LB
		THER	MEV	EV
	POWR:	W	HP
	PRESS:	PA	ATM	BAR	PSI	TORR	MMH
		INHG	INH20
	TEMP:	\^oC	\^oF	K	\^oR
	ELEC:	V	A	C	\GW	F	W
		FDY	H	MHO	S	T	WB
	ANGL:	\^o	R	GRAD	ARCMI	ARCS	ST
	LIGHT:	FC	FLAM	LX	PH	SB	LM
		CD	LAM
	RAD:	GY	RAD	REM	SV	BQ	CI
		R
	VISC:	P	ST
	unit:	adds the unit to the current object (real number)
	<\unit:	convert to unit
	/>unit:	divide the current object by unit
/>UNITS:CONV	UBASE	UVAL	UFACT	->UNIT

VAR:	user variables
	name	does EVAL
	<\name	does STO
	/>name	does RCL

Bugs/ROM-Versions::

A	DEFINE rounds values according to the current display format.

ABCD	entry of complex in form (A,\<)B) returns 'B*COS(A)+i*SIN(B)'
	and not vice-versa.

A	Executing NXEQ from the graphics environment with flag -3 set
	may overwrite the current equation with a numeric value.

A	KGET will erase memory if you transfer a zero length file.

A	If flag -41 is set, the alarm catalog will show the incorrect
	ones-digit for minutes.

ABC	INV returns incorrect result with an 8x8 or larger matrix.

?ABCD	?Having the time displayed while doing a backup may invalidate
	the backup.

????	"Ubase"-ed units are represented as a seven-byte value, with each
	byte being the intgeral power (-128 to +127) of the
	corresponding SI unit.  Consequently, things get a little
	weird if you have computations that involve fractional units
	or units to powers outside the specified range.

	Try: 1 m 255 ^ UBASE

	This is not truly a bug.

?ABCD	The sequence:

		-33 SF -34 SF

	sends printing output to the I/R interface using an 8-bit
	format and not the 12-bit "redeye" format.  This is one of
	those holes where HP defines three of the four 2-bit
	combinations.

?ABCD	The sequence:

		STD 19 1/x e-12 - \->Q

	Produces a fraction that clearly has not been reduced to
	lowest terms.

?ABCD	PVIEW blows up if given pixel coordinates just to the top left
	of the grob ("{ #-1 #-1 }").

?ABCD	If the clock is running while a GROB is being displayed, the
	clock valuies are written into and erased from the GROB.

?ABCD	In the Matrix Writer, any cell containing an absolute value
	between 1E5 and 1E6 can't be copied to the stack.

	Explanatio (from flavio@cflav.sublink.org (Flavio Casetta)):

	When you press [->STK] a subroutine recalls the current matrix
	(or vector) along with the cursor coordinates.  Then a
	subroutine extracts the element from the matrix according with
	the actual dimension of the array.  If the element does not
	exist it returns a null string.  Then a subroutine checks for
	the presence of a null string.  And here is the pitfall!  The
	routine checking for the null string does not attempt to check
	in advance the object type lying on the stack. Numbers in the
	range 100000-999999 have the first five nibbles (3 of exponent
	and 2 of mantissa) matching the null string pattern. Try out
	with ->ASC !  Nevertheless the bug applies also to Complex
	numbers within the Real part in the same range.  In effect if
	you supply a number like 100000.111111, you will find that the
	[->STK] works because the last two digits of the mantissa are
	no longer zeros.  Thus the actual range of numbers is
	100000-999999 rounded to 10 decimal significant digits.

	In conclusion the bug is due to a call to a subroutine whose
	expected argument is a string and not a number.  The main
	routine is located at #63209h and always returns the original
	object plus a flag.  A TRUE means that the string is null, a
	FALSE means it is not null.  Notice that it is not a buggy
	routine.  Simply it should not be called unless you have a
	string on the stack.

	I don't see a possible workaround in the usual sense of the
	word, unless you enter all numbers with at least 11
	significant digits.  What it can be done is a patch routine in
	RAM consisting of a menu that fixes the problem. Please keep
	in mind that when the Matrix Writer is not running, you may
	corrupt the memory by calling any of these subroutines.

Supposedly, no version F ROM will ever be released for the 48.  This
is due to the "leak" via the release of the System RPL tools last
August.  (After each version is released, the internal tools all have
their version numbers incremented to prevent confusing any code that
they affect with released code.  Someone forgot to fix this before
releasing the tools.)  There will also never be a version G ROM.  This
is because they messed things up while tinkering.  There _may_ (as in,
"not impossible") be a version H ROM.

A version J ROM (no word on I) appears to have been released around
December 1992.  The only visible difference appears to be a factor of
two or so speedup in the Equation Writer.

Notes::

In the spring of 1991, HP offered a "trade in" program whereby all
48SX owners could trade their units in on one with Revision E ROMs.

The Owner's Manual was completely rewritten and published in early
1992.

This unit was left in production after the introduction of the 48GX
only because there was a bunch of software out there that didn't follow
the rules and wouldn't run on a GX.

Don't use PICT STO: this causes display "snow."  Instead, use
something like PICT { #0h #0h } ROT REPL.

These ASCII characters can't be typed from the keyboard: ; \ ^ `

The following and memory scanner information is from Alonzo Gariepy
(alonzo@microsoft.UUCP, posted to Comp.sys.handhelds on 6 March 1990):

	00000-0FFFF	ROM (and registers for the display controller,
			I/O, and timers)
	10000-6FFFF     ROM
	70000-7FFFF	User/Display RAM (overlaid on Font/Strings ROM)
	80000-BFFFF     128k for plug-in
	C0000-FFFFF     128k for plug-in
	F0000-FFFFF	User/Display RAM (when 70000-7FFFF is used for
			Font/Strings ROM)

The most interesting thing about scan mode is that the memory layout
is different than in normal operation.  The 32K of user/display RAM is
moved from 70000 to F0000 so that you can see the ROM that is normally
hidden underneath.  In normal operation, the address space at 70000 is
shared between this ROM and display RAM.  The hidden ROM is used for
code and data related to I/O, such as strings and font bitmaps, as
well as for diagnostic functions, such as the self tests and scan
mode.

The 48 was called the 1152 at least at some point during design
development.  At the March 1992 Drexel Conference, some of the mockups
were on display (courtsy of Dennis York from HP).  The mockups
consisted of a 41-ish case with a (fake) 3-line display, a 71-ish
case, a clamshell (18C-ish) case, and a case that looked a lot like a
48.  In addition was a mockup of a cassette drive.

Why can't there be more card slots in the 48SX?  (Other than case
tooling.)  The the address space is full.  Of the 512 KBytes (1
MNybble) of address space, 256 KBytes is used for the ROM and each
slot has 128 KBytes of address space dedicated to it.  (This is also
why the TDS 512 KByte cards must be bank-switched.)  Thus, the address
space is full already.  But wait!  What about the 32 KBytes of
built-in RAM?  It lives on top of the last 32 KBytes of ROM.  When
code is executed from here, the 48 must map the ROM in for reading
(writes go to the RAM, of course), copy the required code to RAM,
unmap the ROM, execute the code, and finally delete it from RAM.  All
of this entails a 20-30% performance hit.

Apparently, the HP48's toolmaker dictated that the shift keys had to
be located around the outside edge of the keyboard.  (I assume that it
has to do with where there is enough room for the extra traces.)

If you pull a 48 RAM card and hold it in your hand, it has about a 2
week lifetime.  If you put the same card (right away!) into the
storage case, the lifetime increases to about a year.  This is because
the storage case incorporates a conductive strip which keeps the leads
grounded.

For a while during production, 48 cases were being warped.  This was
due to a capacitor physically interfering with the case during
assembly.  The line was shut down for a week to find this problem.

After marketing complained to R&D about (not) making it easy to
internationalize the products, the 48 was designed to be fully
customizable.  Only one version (English) was released.

Some people think that you can reset a 48 by reversing the batteries:

			    >>> DON'T <<<

as you will tend to destroy your machine.

The product number (48) was chosend to be a combintion of 41 and 28.

----------------------------------------------------------------------
Article: 3937 of comp.sys.hp48
From: akcs.joehorn@hpcvbbs.cv.hp.com (Joseph K. Horn)
Date: Mon, 14 Sep 1992 06:40:02 GMT

For those suffering from failing HP48 LCD's, the following "official"
posting about it from HP's BBS sysop is the final word.  Due to its
importance, it was included on Goodies Disk #7, in the POSTINGS
subdirectory.  Hope it helps.  -jkh-

===============
(Feedbackto.hp)
  Item: 248
  Resp: 3 by sanker@hpcvbbs.cv.hp.com
Author: [Greg Sanker]
  Date: Tue Apr 07 1992 14:35 

I checked with the Hardware folks, and here is the scoop:

There was a specific problem that may or may not occur in a limited
production of units. The problem has been isolated to the LCD and
has been resolved with the vendor. The potentially defective LCD's
were installed in HP 48's with serial numbers ranging 3013AXXXXX thru
3044AXXXXX. Symptoms of the problem are a pronounced black spot in the
upper left hand corner of the display and/or dark/missing columns
3,5,7 and/or 9.

If a unit is failing for the above reasons, subject to
verification by the Corvallis Service Center, it will be covered as
part of the standard warranty, even if the standard warranty period
has expired.

Greg (SYSOP)
============
----------------------------------------------------------------------
From: akcs.joehorn@hpcvbbs.cv.hp.com (Joseph K. Horn)
Date: Fri, 23 Oct 1992 07:40:08 GMT
Message-ID: <2ae7a62d.1940.1comp.sys.hp48.1@hpcvbbs.cv.hp.com>

There is a little-known "parentheses anomaly" which can easily be
turned on and off like this:

P.A. ON:  Put '2^3' on the stack and then press and hold down the
down-arrow key and then QUICKLY (before the EquationWriter begins)
press the ON key, and release both.  You'll see it change to '2^(3)'.
All powers, square roots, and divisions will display with
function-style parentheses.

P.A. OFF: Just enter and then exit the EquationWriter.  A warmstart
also clears this strange mode, but that's a little drastic.

----------------------------------------------------------------------
From: akcs.joehorn@hpcvbbs.cv.hp.com (Joseph K. Horn)
Date: Thu, 4 Feb 1993 08:40:11 GMT
Subject: EquationWriter Bug Fixed in Rev J
Message-ID: <2b70ccfa.2935comp.sys.hp48@hpcvbbs.cv.hp.com>

              Rev A-E EquationWriter Bug & Rev J Bugfix
              -----------------------------------------
                         observed by Joe Horn

                         +------------------+
                         |  Rev E behavior  |
                         +------------------+

Clear flag -53 first (the Precedence Flag).

On a Rev E, put '((1+2)/(3+4))^5' on the stack and press down-arrow.
You'll see:
                           5
                    / 1+2 \
                    | --- |                         (A)
                    \ 3+4 /

which is as it should be.  But now press [orange-shift] [+]; see the
message "Implicit () off" momentarily; press [left-arrow] (not
backspace), then press the [EXIT] softkey.  The expression gets
mangled into this:

                      1+2
                  -----------                       (B)
                        (5)
                   (3+4)

which is not equal to expression (A) above!  Bug, yes?  Press [ON] to
abort the process.

Now set flag -53, then repeat the above procedure.  First you see:

                           5
                    / 1+2 \
                    | --- |                         (C)
                    \ 3+4 /

which is the same as (A) above; but continuing as before, you see:

                             (5)
                    /  1+2  \
                    | ----- |                       (D)
                    \ (3+4) /

which *is* equal to the original.  Thus the bug can be worked around
by keeping flag -53 set (not a pleasant solution).

                         +------------------+
                         |  Rev J behavior  |
                         +------------------+

Major difference: after pressing down-arrow, Rev J goes directly into
graphic mode, so you have to press ON and then EXIT to get into the
equation editor (which Rev E goes directly into).  But that's petty
cash compared to the following big change.

The same sequence of operations, first with flag -53 clear, then set,
exactly as detailed above, yields these four displays in a Rev J:

                             5
                    / (1+2) \
                    | ----- |                       (A')
                    \  3+4  /

(notice the extra parentheses?) and then:

                             5
                    / (1+2) \
                    | ----- |                       (B')
                    \ (3+4) /

which *is* equal to (A'); nothing at all like expression (B) above!
and then:

                             5
                    / (1+2) \
                    | ----- |                       (C')
                    \  3+4  /

which is the same as (A') above; and then:

                             5
                    / (1+2) \
                    | ----- |                       (D')
                    \ (3+4) /

which is also equal to (A').  No bug in Rev J.

SUMMARY: Rev A-E have a bug in the EquationWriter that can mangle
expressions if flag -53 is clear (the default) and if "Explicit
Parentheses" mode is toggled.  This bug has been fixed in Rev J.

Unfortunately (as you can see above) Rev E *always* puts parentheses
around polynomial numerators.  It is therefore impossible to use the
->GROB command on a Rev J to create a GROB that looks like expression
(A) above; the simplest that can be had is expression (A').

Another minor change, while I'm at it: Rev A-E don't change the menu
when you press REPL; Rev J automatically flips to the appropriate
RULES menu.

None of these changes are documented anyplace that I'm aware of.


Article: 9912 of comp.sys.hp48
From: akcs.joehorn@hpcvbbs.cv.hp.com (Joseph K. Horn)
Date: Wed, 9 Jun 1993 07:40:10 GMT
Subject: Re: WSLOG
Message-ID: <2c158e10.935.3comp.sys.hp48.1@hpcvbbs.cv.hp.com>
Path: news3.cis.umn.edu!umn.edu!news-feed-1.peachnet.edu!gatech!howland.reston.ans.net!wupost!sdd.hp.com!hp-cv!hp-pcd!hpcvra!rnews!hpcvbbs!akcs.joehorn
Newsgroups: comp.sys.hp48
References: <A14794@AC.maus.de> <MHEISKAN.93Jun2005755@delta.hut.fi>
Lines: 90

>>> There is a command for the HP48 I don't understand: It's WSLOG.

>> WSLOG is completely explained on page 97 of Jim Donnelly's "The HP
>> 48 Handbook", and on pages 415-416 of HP's "HP 48 Programmer's
>> Reference Manual". Unfortunately, both of these works are
>> copyrighted, with notices that their contents cannot be reproduced
>> or transmitted without permission.

> I'd suggest someone with either of the books would ask the damn
> permission. This is really getting to be a FAQ....................

Excellent suggestion.  So I called Jim Donnelly, and he kindly gave
his permission to duplicate the following page from his book.

======================================================================

                           SYSTEM HALT LOG

The command WSLOG returns four strings to the stack showing the cause,
date, and time of the four most recent system halt events.

The system halt log is not cleared when memory is erased, and may only
be cleared by placing the calculator in coma mode.

Example:  3-03/06/90 09:30:10

This string shows a type three system halt that occurred on the
morning of March 6, 1990.

+------+-----------------------------------+
| CODE | CONDITION                         |
+------+-----------------------------------+
|   0  | Coma exit                         |
|   1  | Low battery system save           |
|   2  | I/O timeout                       |
|   3  | Execute through address 0         |
|   4  | Corrupt system time               |
|   5  | Port change data                  |
|   7  | Corrupt RAM test word             |
|   8  | Hardware configuration difficulty |
|   9  | Corrupt alarm list                |
|   A  | Corrupt memory                    |
|   B  | Module pulled or card bounce      |
|   C  | Hardware reset                    |
|   D  | Software difficulty               |
|   E  | Corrupt configuration table       |
|   F  | Merged RAM card pulled            |
+------+-----------------------------------+

Note that some events will cause two events to be recorded, and some
system halt events will cause a coldstart.

[page 97 from Jim Donnelly's "The HP 48 Handbook", First Edition;
copyright 1990, all rights reserved; reprinted with permission.]
======================================================================

A few extra notes from Joe Horn:

(1) Jim Donnelly will be releasing real soon now a Second Edition of
    the book especially for the HP48G/GX, greatly expanded and
    containing lots more examples & goodies, including a whole chapter
    on System RPL programming!  If you plan on keeping your HP48S/SX
    and haven't gotten the First Edition yet, I strongly suggest that
    you do so posthaste before it's extinct.

(2) The format of the 4 dates in WSLOG's output is controlled by flag
    -42, the date format flag.  The 4 times, however, are always in
    24-hour format and are *not* affected by flag -41, the clock
    format flag.

(3) The WSLOG information resides at a fixed RAM address, and
    therefore makes an excellent chunk of scratch RAM for assembly
    language programmers, as has been done by several folks here on
    the net.

(4) Darryl Okahata's FAQ list includes a brief discussion of WSLOG as
    item #31.

(5) At the end of time (differs depending on your ROM revision; for
    rev A-E it's 23:59:59 on 31 December 2088; for rev J it's 31
    December 2090) a warmstart occurs, and *two* events get recorded,
    both with code 4 and date/time of zero.  The following second
    time-warps back one century.

(6) A code 2 warmstart (I/O timeout) does *not* refer to a Kermit
    retry timeout, but to a hardware IR failure only.

-Joseph K. Horn-   -Peripheral Vision, Ltd.-
akcs.joehorn@hpcvbbs.cv.hp.com
Disclaimer: I don't work for HP, EduCALC, or Armstrong Publishing.

Areas

General

Craig's Articles

 

 
 

I am Craig A. Finseth.

Back to Home.

Back to top.

Last modified Saturday, 2012-02-25T17:29:49-06:00.