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
Last modified Saturday, 2012-02-25T23:29:49-06:00.