>>>>>>>>>>>>>>>>>>>>>>>>> hp41
============================================================
Model:	-41C

General:
	Name:			Handheld Computer
	Code-Name:		Coconut
	Family:			Coconut
	Logic:			RPN
	Features:		scientific, programmable
	Firsts:			Coconut, alpha, ports, user keyboard
	Introduction:
		Date:		1979-07-01
		Price:		$295
	Discontinuation:
		Date:		1985-01-01
		Price:		$195
	Production-Run:		1.5 million (all types)

Display:
	Type:			LCD, 17 segments
				 --
				|\/|
				 -- .
				|/\|.
				 -- ,
	Size:			1 line x 12 chars
	Number-Formats:		sign, 10 mantissa
				sign, 8 mantissa, ., exp sign, 2 exp
	Annunciators:		BAT	low battery
				USER	user mode active
				GRAD	grads mode
				RAD	radians mode
				SHIFT	shift key pressed
				0	flag 0 set
				1	flag 1 set
				2	flag 2 set
				3	flag 3 set
				4	flag 4 set
				PGRM	program mode
				ALPHA	alpha keyboard active

Data:
	User-Visible:
		Smallest:	1E-99
		Largest:	9.999999999E99
		Signif.-Digits:	10
	Internal:
		Smallest:	1E-99
		Largest:	9.999999999E99
		Signif.-Digits:	10
	Data-Types-and-Sizes:	real, 7 bytes, high nybble of 0 or 9
				alpha, 7 bytes (6 chars), high nybble of 1

Memory:
	Named-Registers:	X, Y, Z, T, Last x, Alpha (24 chars), 00-99
	Flags:			56, of which 0-31 are user and 32-55 are
				system (and can only be affected indirectly)
				0-4	show annunciator when set
				11	auto execution
				12	print double wide
				13	print lower case
				14	card reader allow overwrite
				15	HPIL printer: 0)manual 1)normal
					2)trace 3)trace w/stack print
				17	record incomplete
				18	IL interrupt enable
				21	printer enabled
				22	numeric input available
				23	alpha input available
				24	ignore range errors
				25	ignore any errors & clear
				26	audio output is ignored
				27	user mode is active
				28	radix mark: 0). 1),
				29	digit groupings shown: 0)no 1)yes
				30	catalog set
				31	date mode: 0)M.DY 1)D.MY

				32	IL man I/O mode
				33	can control IL
				34	prevent IL auto address
				35	disable auto start
				36	number of digits, 0-15
				40	display format: 0)sci 1)eng 2)fix
					3)fix/eng mode)
				42	angle mode: 0)deg 1)rad 2)grad 3)rad
				44	continuous on
				45	system data entry
				46	partial key sequence
				47	shift key pressed
				48	alpha keyboard active
				49	low battery
				50	set when a message is displayed
				51	single step mode
				52	program mode
				53	IL I/O request
				54	set during pause
				55	printer exists
	Register-Usage:		(status registers)
				0	T
				1	Z
				2	Y
				3	X
				4	L
				5	M,[	alpha, chars 7-1
				6	N,\	alpha, chars 14-8
				7	O,]	alpha, chars 21-15
				8	P,^	scratch; alpha, chars 24-22
				9	Q,_	scratch
				10	|-,t	unshifted key assignments;
						 scratch
				11	a	return stack, levels 6-3b
				12	b	return stack, levels 3a-1; pc
				13	c	statistics ptr; scratch;
						169; R00 pointer; .END. ptr
				14	d	flags
				15	e	shifted key assignments;
						scratch, program line number

				(default assignment; can be changed)
				R11	\GSx
				R12	\GSx^2
				R13	\GSy
				R14	\GSy^2
				R15	\GSxy
				R16	\GSn
	Numbered-Registers:	64
	Program-Steps:		000-999
	Program-Editing:	insert
	Program-Display:	alpha
	User-RAM-Bytes:		560
	Total-RAM-Bytes:	maximum is 16 status registers, 64
				built-in registers, 4 64-register memory
				modules or 2,352 bytes; in addition,
				there can be extended memory totalling
				127 + 2 * 238 registers or 4,221 bytes;
				total memory can thus be 6,573 bytes
	ROM-Bytes:		12K (10-bit words)
	Machine-State:		status regs
				stack lift enable
				memory
	File-Types:		data, text, program (see LIF)

Physical:
	Technology-Used:	?
	Processor:		Nut
	Chip-Count:		CPU, 1-3 ROMs, RAM(s), display driver,
				power supply, timer (-CX only)
		old -C and -CVs use 3, 40 Kbit ROMs
		newer -C and -CVs use 1, 120 Kbit ROM
		-CX uses 2, 120 Kbit ROMs

		early -Cs use 5 RAMs, each with 16 registers
		newer units use one 16 register RAM, and N 64 register RAMs
	Power-Source:		4 1.5V N cells
	Continuous-Memory:	yes
	Expansion-Ports:	4
	I/O-Ports:		beeper (HP-IL, card reader, printer, etc.
				available for expansion ports)
	Clock:			no

	Length:			14.27 cm
	Width:			7.86 cm
	Height:			3.33 cm
	Weight:			205 g
	Temperature-Range:
		Operating:	0 to 45 deg C
		Charging:	-
		Storage:	-20 to 65 deg C

Keyboard:
	Switches:		ON	\ each side of a single,
				USER	/ dual rocker wipe
				PRGM	\ each side of a single,
				ALPHA	/ dual rocker wipe
	Shift-Keys:		gold, gold, above
				alpha, white, below on face
	User-Defined-Keys:	all

Key-Arrangement::

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

Key-Labels-Base-Keyboard::

\GS+	1/x	\v/x	LOG	LN
x<>y	Rv	SIN	COS	TAN
[]	XEQ	STO	RCL	SST
ENTER^	CHS	EEX	<-
-	7	8	9
+	4	5	6
x	1	2	3
\:-	0	.	R/S

Key-Labels-gold-gold-above::

	 x	 2	  x	 x
\GS-	y	x	10	e
		   -1	   -1	   -1
CL\GS	%	SIN	COS	TAN
[]	ASN	LBL	GTO	BST
CATALOG	ISG	RTN	CLx/A
x=y?	SF	CF	FS?
x\<=y?	BEEP	P->R	R->P
x>y?	FIX	SCI	ENG
x=0?	\pi	LASTx	VIEW

Key-Labels-Alpha-White-Below-On-Face::

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	=	?
:	SPACE	,	[]

Key-Labels-Alpha-Shifted-Not-Shown::

a	b	c	d	e
\GS	%	\=/	<	>
[]	|-	ASTO	ARCL	BST
\^|	\<)	$	CLA
-	7	8	9
+	4	5	6
*	1	2	3
/	0	.	AVIEW

Programmable-Operations::

%		percent
%CH		percent change
+		addition
-		subtraction
0-9, .		enter digit or decimal point
1/X		inverse
10^X		common exponent
ABS		absolute value
ACOS		arc cosine
ADV		paper advance
AOFF		alpha keyboard off
AON		alpha keyboard off
ASHF		alpha shift
ASIN		arc sin
ASTO %%%	alpha store
ATAN		arc tangenet
AVIEW		alpha view
BEEP		beep
CF 00-29	clear flag
CHS		change sign
CLA		clear alpha
CLD		clear display
CLRG		clear registers
CLST		clear stack
CLX		clear x
CL\GS		clear summation registers
COS		cosine
D-R		convert degrees to radians
DEC		convert octal to decimal
DEG		set degrees mode
DSE %%%		decrement and skip if equal
EEX		enter exponent
END		end program
ENG 0-9		engineering notation
ENTER^		enter
E^X		natural exponent
E^X-1		natural exponent - 1
FACT		factorial
FC? 00-55	is flag clear
FC?C 00-29	is flag clear and clear
FIX 0-9		fixed notation
FRC		fractional part
FS? 00-55	is flag set
FS?C 00-29	is flag set and clear
GRAD		set grads mode
GTO label	goto
HMS		convert decimal hours to H.MS
HMS+		add two times in H.MS notation
HMS-		subtract two times in H.MS notation
HR		convert H.MS to decimal hours
INT		integer part
ISG %%%		increment and skip if greater
LASTX		recall last x
LBL label	label
LN		natural logarithm
LN1+X		natural logarithm + 1
LOG		common logarithm
MEAN		compute average
MOD		modulus
OCT		convert decimal to octal
OFF		turn off
P-R		convert polar to rectangular
PI		constant pi
PROMPT		display a prompt
PSE		pause
R-D		convert radians to degrees
R-P		convert rectangular to polar
R/S		run / stop
RAD		set radians mode
RCL %%%		recall
RDN		roll down
RND		round
RTN		return
R^		roll up
SCI 0-9		scientific notation
SDEV		standard deviation
SF 00-29	set flag
SIGN		sign of number
SIN		sine
SQRT		square root
ST+ %%%		storage arithmetic
ST- %%%		storage arithmetic
STO %%%		store
STOP		stop
STx %%%		storage arithmetic
ST\:- %%%	storage arithmetic
TAN		tangent
TONE 0-9	tone
VIEW %%%	view
x		multiplication
X<0?		comparison test
X<> %%%		swap X and register
X<>Y		swap
X0?		comparison test
X>Y?		comparison test
XEQ label	subroutine call
XROM ###,###	xrom call
X\<=0?		comparison test
X\<=Y?		comparison test
X\=/0?		comparison test
X\=/Y?		comparison test
X^2		square
Y^X		exponentiation
\:-		division
\GS+		summation plus
\GS-		summation minus
\GSREG 00-99	set summation register
\GSREG?		what is summation register pointer
|-		append

%%% is a register designator; it can be 00-99,X,Y,Z,T,L.  It can also
have a leading . (displays as IND) which designates indirection.

Non-Programmable-Operations::

<-		clear digit or entry
ALPHA		toggle alpha mode
ASN		assign user key
BST		back step
CAT 1-3		catalogs: 1) user programs, 2) external functions,
		3) built-in functions
CLP label	clear program
COPY label	copy program
DEL 000-999	delete N program line lines
GTO . 000-999	go to line number
GTO . EEX 000-999 go to line number
GTO . label	go to label
ON		turn on or off
ON + <-		clear all memory
PACK		pack memory
PRGM		toggle program mode
SIZE 000-999	set curtain
SST		single step
USER		toggle user mode

Menus::

none

Bugs/ROM-Versions::

#1: Early machines did not save X into L when \GS+ and \GS- were done.

#2: Early machines allowed RCL IND nn and STO IND nn when nn was
outside the memory range.

#3: Early machines allowed SF,CF,FS?C, and FC?C IND nn with nn any
number (but not a stack register) 0 to 55.

#4: Early models compute the SIN of small angles incorrectly.

#5: CLP would only clear 1089 program lines.

#6: -67A/-97A prorams that contain combinations of number entry, EEX,
and CHS do not translate correctly.  Example:

	EEX	CHS	7	CHS	5

translates to

	E-7-5

instead of

	1E-7	-5

#7: The second nybble of the seventh byte of Alpha is copies along
with the first six bytes during an ASTO.

#8: Early machines do not decompile programs if they are turned off
during PRGM mode.

#9: Executing CAT 1 while in PRGM mode, then interrupting it with R/S
causes step labelling oddities.

#10: If flag 25 is set and MEAN or SDEV causes an overflow, some flags
can be altered.

#11 (CW1): If a program at the end of CAT 1 is replaced or deleted, a
return to that program will return into the new program or off-program
memory.

#12: On early models, the function LN(1+X) gives wrong answers for
values of X between -.9990234374 and -1.00.

#13: On early models, the operation (.1)^-43 gives an answer of
9.999999999E42 instead of 1E43.

ROM Versions:

	version	date codes	comments
	DDE	1926-1940	all bugs
	FDE	1936-1952	#3 removed
	FEE	1951-2034	#1,#2,#4 removed
	GFF	2035-84??	#5,#7,#8 removed, first -41CV version
	HFF	84??-present	current -41CV version
	NFL	2329-present	current -41CX version

Notes::

Probably the most popular HP handheld ever made.  Huge amounts have
been written about this machine.  An excellent detailed reference is
"Extend Your HP-41" by Wlodek (W.A.C.) Mier-Jedrzejowicz, Synthetix:
Berkeley, California, 1985..

price changes:

	1981-01-01	$250
	1982-11-01	$195

Jeremy Smith's price list also lists:

-41CC introduced 1981-01-15 at $495, discontinued 1981-06-01.
-41CS introduced 1981-01-15 at $840, discontinued 1981-06-01.

I expect that these are packages that include accessories.

Battery current:

	mode	typical	worst

	run	10 mA	15 mA
	standby	1 mA	1 mA
	sleep	10 uA	30 uA

============================================================
Model:	-41CV, differences from -41C

General:
	Code-Name:		Silverbird
	Firsts:			none
	Introduction:
		Date:		1980-12-15
		Price:		$325
	Discontinuation:
		Date:		1990-11
		Price:		$175
	Production-Run:		?

Memory:
	User-RAM-Bytes:		2,352

Notes::

Same as a -41C but with four memory modules already built in.  The "V"
stands for 5 times as much memory.

price changes:

	1982-11-01	$275
	1984-08-01	$225
	1986-02-01	$175

============================================================
Model:	-41CX, differences from -41C

General:
	Code-Name:		Honeynut
	Firsts:			none
	Introduction:
		Date:		1983-10-1
		Price:		$325
	Discontinuation:
		Date:		1990-11
		Price:		$249
	Production-Run:		?

Memory:
	User-RAM-Bytes:		3,241
	ROM-Bytes:		24K (10-bit words)

Physical:
	Clock:			time of day, stopwatch, alarms

Programmable-Operations::

%		percent
%CH		percent change
+		addition
-		subtraction
0-9, .		enter digit or decimal point
1/X		inverse
10^X		common exponent
ABS		absolute value
ACOS		arc cosine
ADATE		date to alpha
ADV		paper advance
ALENG		length of alpha
ALMCAT		alarm catalog
ALMNOW		activate oldest alarm
ANUM		number in alpha to x
AOFF		alpha keyboard off
AON		alpha keyboard off
APPCHR		append char to record
APPREC		append record to file
ARCL %%%	recall alpha
ARCLREC		append record to alpha
AROT		rotate alpha
ASHF		alpha shift
ASIN		arc sin
ASROOM		bytes available in file
ASTO %%%	alpha store
ATAN		arc tangenet
ATIME		time to alpha
ATIME24		time in 24 hour clock to alpha
ATOX		left byte of alpha to x
AVIEW		alpha view
BEEP		beep
CF 00-29	clear flag
CHS		change sign
CLA		clear alpha
CLALMA		clear alarm in alpha
CLALMX		clear alarm in x
CLD		clear display
CLFL		clear file
CLK12		12 hour clock mode
CLK24		24 hour clock mode
CLKEYS		clear keys
CLKT		display time
CLKTD		display time and date
CLOCK		display running clock
CLRALMS		clear alarms
CLRG		clear registers
CLRGX		clear registers according to x
CLST		clear stack
CLX		clear x
CL\GS		clear summation registers
CORRECT		correct the time
COS		cosine
CRFLAS		create text file
CRFLD		create data file
D-R		convert degrees to radians
DATE		return the current date
DATE+		add the number of days in X to date in Y
DDAYS		compute the number of days between two dates
DEC		convert octal to decimal
DEG		set degrees mode
DELCHR		delete char from record
DELREC		delete record from file
DMY		set D.MY mode
DOW		figure the day of the week for a date (0=Sunday)
DSE %%%		decrement and skip if equal
ED		invoke editor
EEX		enter exponent
EMDIR		extended memory directory
EMDIRX		extended memory directory of Xth file
EMROOM		room in extended memory
END		end program
ENG 0-9		engineering notation
ENTER^		enter
E^X		natural exponent
E^X-1		natural exponent - 1
FACT		factorial
FC? 00-55	is flag clear
FC?C 00-29	is flag clear and clear
FIX 0-9		fixed notation
FLSIZE		return file size
FRC		fractional part
FS? 00-55	is flag set
FS?C 00-29	is flag set and clear
GETAS		get file
GETKEY		get a key
GETKEYX		get a key timed
GETP		get program
GETR		get registers
GETREC		get record
GETRX		get a registers according to X
GETSUB		get a subroutine
GETX		get a register
GRAD		set grads mode
GTO label	goto
HMS		convert decimal hours to H.MS
HMS+		add two times in H.MS notation
HMS-		subtract two times in H.MS notation
HR		convert H.MS to decimal hours
INSCHR		insert a char into a record
INSREC		insert a record into a file
INT		integer part
ISG %%%		increment and skip if greater
LASTX		recall last x
LBL label	label
LN		natural logarithm
LN1+X		natural logarithm + 1
LOG		common logarithm
MDY		set M.DY mode
MEAN		compute average
MOD		modulus
OCT		convert decimal to octal
OFF		turn off
P-R		convert polar to rectangular
PASN		programmable key assingment
PCLPS		programmable clear program
PI		constant pi
POSA		find position in alpha
POSFL		find position in file
PROMPT		display a prompt
PSE		pause
PSIZE		program size
PURFL		purge file
R-D		convert radians to degrees
R-P		convert rectangular to polar
R/S		run / stop
RAD		set radians mode
RCL %%%		recall
RCLAF		recall clock accuracy
RCLALM		recall alarm
RCLFLAG		recall flags
RCLPT		recall file pointer
RCLPTA		recall file pointer according to alpha
RCLSW		recall stopwatch
RDN		roll down
REGMOVE		move register block
REGSWAP		swap register block
RESZFL		change file size
RND		round
RTN		return
RUNSW		run stopwatch
R^		roll up
SAVEAS		save text file
SAVEP		save program
SAVER		save registers
SAVERX		save registers according to x
SAVEX		save a register
SCI 0-9		scientific notation
SDEV		standard deviation
SEEKPT		see a file
SEEPTA		see a file according to alpha
SETAF		set clock accuracy factor
SETDATE		set date
SETIME		set time
SETSW		set stopwatch
SF 00-29	set flag
SIGN		sign of number
SIN		sine
SIZE?		what is curtain
SQRT		square root
ST+ %%%		storage arithmetic
ST- %%%		storage arithmetic
STO %%%		store
STOFLAG		store flags
STOP		stop
STOPSW		stop the stopwatch
STx %%%		storage arithmetic
ST\:- %%%	storage arithmetic
SW		invoke the stopwatch
SWPT		set stopwatch register pointer
T+X		adjust clock
TAN		tangent
TIME		return the current time
TONE 0-9	tone
VIEW %%%	view
x		multiplication
X<0?		comparison test
X<> %%%		swap X and register
X<>F		swap X and flags
X<>Y		swap
X0?		comparison test
X>NN?		comparison test
X>Y?		comparison test
XEQ label	subroutine call
XROM ###,###	xrom call
XTOA		x to left byte of alpha
XYZALM		set specified alarm
X\<=0?		comparison test
X\<=NN?		comparison test
X\<=Y?		comparison test
X\=/0?		comparison test
X\=/NN?		comparison test
X\=/Y?		comparison test
X\>=NN?		comparison test
X^2		square
Y^X		exponentiation
\:-		division
\GS+		summation plus
\GS-		summation minus
\GSREG 00-99	set summation register
\GSREG?		what is summation register pointer
|-		append

Non-Programmable-Operations::

CAT 1-6		catalogs: 1) user programs, 2) external functions,
		3) built-in functions, 4) EMDIR, 5) ALMCAT, 6) user keyboard

Notes::

Same as a -41C but with four memory modules, a Time Module, an
Extended Functions / Extended Memory Module, and assorted
miscellaneous functions built in.

"Halfnut" is the code name for a  redesigned version of the -41C
internals. Externally and functionally it is identical to the other
machines. It was so called because the processor board was only half
the size of the original design.

price changes:

	1986-02-01	$249

============================================================
Model:	-41opt1, differences from -41C

General:
	Code-Name:		Blanknut
	Firsts:			none
	Introduction:
		Date:		1981-3-24
		Price:		$325
	Discontinuation:
		Date:		?
		Price:		?
	Production-Run:		?

Notes::

HP-41 Opt 001: This is the same machine as a -41C, but with few of the
keys labelled.