Model: -28C General: Name: none Code-Name: Paladin Family: Clamshell? Logic: RPL Features: scientific, programmable, hyperbolics, complex, base w/arithmetic, matrix, vector, lists, solver (algebraic, program), symbolic math, plotting, graphics, etc., etc. Firsts: RPL, general units, graphing, complex numbers, symbolic math, symbolic integration, differentiation Introduction: Date: 1987-1-5 Price: $235 Discontinuation: Date: 1988-1 Price: $235 Production-Run: ? Display: Type: LCD, bit-mapped Size: 4 line x 23 chars, 32 x 137 pixels Number-Formats: sign, 12 mantissa, ., exp sign, 2 exp Annunciators: O a program is suspended ---^ shift key pressed a alphabetic keys active ((.)) busy battery battery low (2\pi) radians mode printer printer data being sent 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 # 1010 The sizes are guesses. Memory: Named-Registers: none Flags: 1-30 user flags 31 LAST enable 32 printer trace 33 auto CR 34 principal value 35 symbolic constants 36 numeric results 37-42 binary word size 43-44 base 0)decimal 1)binary 2)octal 3)hex 45 level 1 display is multiline 46 reserved 47 reserved 48 radix 0). 1), 49-50 display format 0)STD 1)SCI 2)FIX 3)ENG 51 beeper on 52 faster print 53-56 number of digits in display 57 underflow is error 58 overflow is error 59 infinite is error 60 trig mode 0)degrees 1)radians 61 there was negative underflow 62 there was positive underflow 63 there was overflow 64 there was infinite Register-Usage: EQ current equation PPAR plotting parameters {(xmin,ymin) (xmax,ymax) indepvar resolution (xaxis,yaxis)} 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 } Numbered-Registers: none Program-Steps: memory Program-Editing: replace or insert Program-Display: alpha User-RAM-Bytes: 1621 Total-RAM-Bytes: 2048 ROM-Bytes: 64K Machine-State: flags stack user memory modes: entry mode, lower case, LAST COMMAND, LAST UNDO, system timer Physical: Technology-Used: CMOS Processor: 1LK7 Saturn CPU (1 MHz), two 1LP4 ROMs (64KB each) and two 1LP2 Centipede chips containing the LCD driver/RAM/IO register/power supply sections Chip-Count: 5 (2 ROMs, CPU, 2 display) Power-Source: 3 alkaline N cells Continuous-Memory: yes Expansion-Ports: none I/O-Ports: I/R output, beeper Clock: auto power off Length: 6 1/2 in Width: open 7 1/2 in closed 3 5/8 in Height: open 1/2 in closed 5/8 in Weight: 226.8g Temperature-Range: Operating: 0 to 45 deg C Charging: none Storage: -20 to 65 deg C Keyboard: Switches: none Shift-Keys: maroon, maroon, above User-Defined-Keys: 6 menu keys Key-Arrangement:: ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ***** ** ** ** ** ** ** ** ** ** ** * *** *** *** *** ** ** ** ** ** ** * *** *** *** *** ** ** ** ** ** ** * *** *** *** *** ***** ** ** ** ** * *** *** *** *** Key-Labels-Base-Keyboard:: Left 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 \<< = LC \Ga Right [] [] [] [] [] [] maroon <^v> TRIG SOLV USER NEXT ENTER CHS EEX DROP <- ' 7 8 9 \:- STO 4 5 6 x EVAL 1 2 3 - ON 0 . = + (The ON key has a white lower label of ATTN.) Key-Labels-Maroon-Maroon-Above:: Left ARRAY BINARY COMPLX STRING LIST REAL STACK STORE [] ALGEBRA [] PRINT |---- PROGRAM -----| CTRL BRANCH TEST [] CATALOG UNITS \<= \>= \-> \GS \^o \Gm < > " } ] ) NEWLINE \>> \=/ ? \GaLOCK Right (top row labels are in white) INS DEL ^ V < > [] MODE LOGS STAT PLOT PREV EDIT VIEW^ VIEWv ROLL SWAP VISIT COMMAND UNDO LAST 1/x RCL PURGE \.S d/dx ^ ->NUM CONT % %CH \v/ 2 OFF CLEAR \pi CONVERT x Programmable-Operations:: ! 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 - subtraction -> create local variable ->ARRY create an array ->HMS convert to HH.MMSS ->LIST create a list ->NUM evaluate an object to a numeric value ->STR create a string 0-9, . enter digit 1/x reciprocal < comparison test = "equal" comparison test == "equality" comparison test > comparison test A ampere unit a are unit (100 m^2) ABORT abort program execution ABS absolute value ACOS arc cosine ACOSH hyperbolic arc cosine acre acre unit ALOG common antilogarithm AND logical / binary and Ao Angstrom unit arcmin arc minutes unit arcs arc seconds unit ARG compute polar angle of a coordinate ARRY-> separate array ASIN arc sine ASINH hyperbolic arc sine ASR arithmetic shift right ATAN arc tangent ATANH hyperbolic arc tangent atm atmosphere unit au astronomical unit AXES set axes intersections b barn unit B->R convert binary to real bar bar unit (pressure) bbl barrel unit BEEP sound a beep BIN select binary mode Bq Becquerel unit of activity Btu British Thermal Unit bu bushel unit C Couloumb unit C->R convert complex to real cal calorie unit cd Candela unit CEIL next larger integer CENTR identify center of plot display CF clear flag chain chain unit CHR convert integer to character CHS change sign Ci Curie unit CLEAR clears the stack CLLCD clear display CLMF clear the system message flag CLUSR clear all variables CL\GS clear statistics data CNRM compute column normal COLCT collect like terms COL\GS specifies dependant and independant statistics variables CON constant array CONJ compute complex conjugate CONVERT compute unit conversion CORR compute correlation coefficent COS cosine COSH hyperbolic cosine COV compute covariance CR print a carriage-right CROSS compute cross product ct carat unit cu cup unit d day unit d/dx compute derivative D->R convert degrees to radians DEC specify decimal mode DEG specify degrees mode DEPTH size of stack DET compute determinant DISP display object in line of display DO ... UNTIL ... END do loop DOT compute dot product DRAW draw plot DRAX draw axes DROP drop one object DROP2 drop two objects DROPN drop N objects DRW\GS draw a statistics scatter plot 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 erg erg unit ERRM last error message ERRN last error number eV electron volt unit EVAL evaluate object EXGET get a subexpression EXP natural exponentiation EXPAN expands algebraic EXPM natural exponentiation - 1 F Farad unit FACT factorial 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 FIX specify FIX display mode flam footlambert unit FLOOR next smaller integer FOR ... NEXT for loop FOR ... STEP for loop FORM change the form of an algebraic FP fractional part FS? is a flag set? FS?C is a flag set? then clear ft foot unit ftUS US foot unit 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 grad grads unit grain grains unit Gy Gray unit of radiation H Henry unit h hour unit HALT suspend execution HEX specify hexadecimal mode HMS+ hh.mmss addition HMS- hh.mmss subtraction HMS-> convert to hh.mmss hp horsepower unit Hz Hertz unit i symbolic constant 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 INDEP specify independent variable for plotting inH20 inches of water unit inHg inches of mercury unit INV reciprocal IP integer part ISOL isolate an equation variable J Joule unit KEY check for key press KILL abort all suspended programs kip kilopound of force unit knot knots unit kph kilometers per hour unit l liter unit lam lambert unit LAST return last arguments lb Avoirdupois pount unit lbf pound-force unit lbt troy pound unit LIST-> separate list lm lumen unit LN natural logarithm LNP1 natural logarithm + 1 LOG common logarithm LR compute linear regression lx lux unit lyr light-year unit m meter 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 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 mmHg millimeters of mercury unit MOD modulus mol mole unit mph miles per hour unit N Newton unit NEG negate an argument 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 OBGET extract object from an algebraic OBSUB substitutes object into an algebraic OCT specify octal mode OFF off ohm Ohm unit 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 P->R convert polar to rectangular Pa Pascal unit pc parsec unit pdl poundal unit of force ph phot unit of illuminance PICK fetch object PIXEL turn pixel on pk peck unit PMAX sets the upper-right plot coordinate PMIN sets the lower-left plot coordinate POS find position of object in another PR1 print level 1 object PREDV predict the dependant variable PRLCD print screen PRMD print and display modes PRST print stack PRSTC print stack compactly PRUSR print a list of variables in the current directory PRVAR print a variable psi pounts 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 qt quart unit QUAD solve a quadratic polynomial R roentgen unit r radian unit R->B convert real to binary R->C convert real to complex R->D convert radians to degrees R->P convert rectangular to polar RAD specify radians mode rad rad unit of absorbed dose RAND compute random number RCEQ recalls the current equation RCL recall value RCLF recall flags 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 rem rem unit REPEAT control structure component RES set the plot resolution 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 SCI specify scientific display mode SCL\GS autoscale the plot according to the statistics data SCONJ conjugate the contents of a variable SDEV compute standard deviation 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 slug slug unit SNEG negates the contents of a variable SQ square sr steradian unit SR shift right SRB shift right byte 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 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 STOF set system flags STO\GS store into \GSDAT STR-> separate string 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 THEN control structure component THEN ... END control structure components therm therm unit ton short ton unit tonUK UK ton unit torr torr unit TOT compute statistics sums TRN transpose tsp teaspoon unit TYPE returns type of an object u unified atomic mass 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 V volt unit VAR compute variances W Watt unit WAIT pause execution for time or key Wb Weber unit WHILE ... REPEAT ... END while statement x multiplication XOR logical or binary xor XPON return exponent x^2 square yd yard unit yr year unit y^x power [ ] identify array \.d differentiate \.S integrate \:- division \<< \>> identify program \<= comparison test \=/ comparison test \>= comparison test \Gm micron unit \GS+ add to statistics \GS- add to statistics \pi symbolic constant \v/x square root \^o degrees units \^oC degrees C units \^oF degrees F units \^oK degrees K units \^oR degrees R units ^ power { } identify list Non-Programmable-Operations:: *1 multiply by 1 +1-1 add and subtract 1 +CMD turn on command saving +LAST turn on last arguments saving +ML turn on multi-line display +UND turn on undo saving -() double negate and distribute ->() distribute prefix -CMD turn off command saving -LAST turn off last arguments saving -ML turn off multi-line display -UND turn off undo saving /1 divide by 1 1/() double invert and distribute < move left shift < move left all the way <- erase last character or object <--> commute arguments <-A associate left <-D distribute left <-M merge factors left <^v> toggle between cursor menu and last menu > move right shift > move right all the way A-> associate right AF add fractions ALGEBRA bring up menu ATTN abort execution; exit special environments; clear messages BRANCH bring up menu CATALOG start the command catalog application CMPLX bring up menu COLCT collect like terms COMMAND recover previous command line CONT continue CTRL bring up menu D-> distribute right DEL delete next item DEL-> delete item to the right shift DEL-> delete all items to the end of the line DINV double invert DNEG double negate E() replace power-of-power with power-product EDIT edit object in level 1 EXGET get a subexpression EXPAN expand a subexpression EXPR= return expression or equation values E^ replace power-of-product with power-of-power FETCH exits catalog or units environment with current item GO-> set matrix entry mode to left-to-right GOv set matrix entry mode to top-to-bottom GRAPH invokes scrolling mode INS switches between insert and replace editing shift INS delete all characters to the left of the cursor L() replace product-of-log with log-of-power L* replace log-of-power with product-of-log LABEL labels axes LAST toggle saving of last arguments LC toggle upper/lower case LEFT= evaluate left side of current equation LEVEL enter level number to stack LIST bring up menu LOGS bring up menu M-> merge factors right MODE bring up menu NEXT next screen or menu OFF off ON turn on ON + + adjust contrast ON + - adjust contrast ON + < continuous self-test ON + DEL cancels system halt or memory reset if pressed before ON is released ON + ENTER + <- go into deep sleep. due to a bug, this mode actually draws MORE current than ordinary off... ON + INS + > clear all memory ON + v start system test ON + ^ system halt: stops program execution, clears local variables, clears the stack PLOT bring up menu PREV previous screen or menu PRINT bring up menu QUIT exit special applications RDX. set radix to . RDX, set radix to , REAL bring up menu RT= evaluate the right side of the current equation SCAN advance automatically thorugh special application SOLV bring up menu SOLVR bring up SOLVE menu SST single step STACK bring up menu STAT bring up menu STOP stop advancing automatically thorugh special application STORE bring up menu STRING bring up menu TEST bring up menu TRAC toggle printer trace mode TRIG bring up menu UNDO recover previous stack UNITS start the units application USE displays usage USER bring up menu v move down shift v move down all the way VIEWv move display down one line VIEW^ move display up one line VISIT edits an object named in the command line [<-] move FORM cursor left [->] move FORM cursor right \Ga toggles alpha mode ^ move up shift ^ move up all the way ^1 raise to power 1 Menus:: ALGEBRA:COLCT EXPAN SIZE FORM OBSUB EXSUB TAYLR ISOL QUAD SHOW OBGET EXGET FORM: COLCT EXPAN LEVEL EXGET [<-] [->] <--> <-A A-> ->() <-D D-> <-M M-> DNEG -() DINV 1/() *1 /1 ^1 +1-1 L* L() E^ E() AF ARRAY: ->ARRY ARRY-> PUT GET PUTI GETI SIZE RDM TRN CON IDN RSD CROSS DOT DET ABS RNRM CNRM R->C C->R RE IM CONJ NEG BINARY: DEC HEX OCT BIN STWS RCWS RL RR RLB RRB R->B B->R SL SR SLB SRB ASR BRANCH: IF IFERR THEN ELSE END START FOR NEXT STEP IFT IFTE DO UNTI END WHIL REPEA END CATALOG:(catalog mode) NEXT PREV SCAN USE FETCH QUIT CMPLX: R->C C->R RE IM CONJ SIGN R->P P->R ABS NEG ARG CTRL: SST HALT ABORT KILL WAIT KEY BEEP CLLCD DISP CLMF ERRN ERRM LIST: ->LIST LIST-> PUT GET PUTI GETI SUB SIZE LOGS: LOG ALOG LN EXP LNP1 EXPM SINH ASINH COSH ACOSH TANH ATANH MODE: STD FIX SCI ENG DEG RAD +CMD -CMD +LAST -LAST +UND -UND +ML -ML RDX. RDX, PRMD PLOT: STEQ RCEQ PMIN PMAX INDEP DRAW PPAR RES AXES CENTR *W *H STO\GS RCL\GS COL\GS SCL\GS DRW\GS CLLCD DISP PIXEL DRAX CLMF PRLCD PRINT: PR1 PRST PRVAR PRLCD TRACE NORM PRSTC PRUSR PRMD CR REAL: NEG FACT RAND RDZ MAXR MINR ABS SIGN MANT XPON SOLVE: STEQ RCEQ SOLVR ISOL QUAD SHOW ROOT SOLVR: list of solver variables LEFT= RT= or EXPR= STACK: DUP OVER DUP2 DROP2 ROT LIST-> ROLLD PICK DUPN DROPN DEPTH ->LIST STAT: \GS+ \GS- N\GS CL\GS STO\GS RCL\GS TOT MEAN SDEV VAR MAX\GS MIN\GS COL\GS CORR COV LR PREDV UTPC UTPF UTPN UTPT STORE: STO+ STO- STO* STO/ SNEG SINV SCONJ STRING: ->STR STR-> CHR NUM POS DISP SUB SIZE TEST: SF CF FS? FC? FS?C FC?C AND OR XOR NOT SAME == STOF RCLF TYPE TRIG: SIN ASIN COS ACOS TAN ATAN P->R R->P R->C C->R ARG ->HMS HMS-> HMS+ HMS- D->R R->D UNITS: (units mode) NEXT PREV SCAN FETCH QUIT USER: ORDER CLUSR MEM user variables Bugs/ROM-Versions:: You can obtain the version number by #A SYSEVAL (the only supported SYSEVAL.) 1BB first version 1CC second version, late 1987 The batteries were somewhat loose in the compartment. This led to excess corrosion and Memory Losts. 1BB Bugs: - Turn a unit on and keep the ON key pressed for a moment. Now press SHIFT. There is a 50% chance that the unit will turn off. - Using the Solver with a program that does not return an object to the stack. Sometimes a system object will be placed there. - Trying to delete an empty row with shift INS while editing a command line can lead to strange results and possibly a Memory Lost. - Dividing a 64 bit number with its top bit set can give wrong answers. - Otherwise equal binary integers with different word sizes do not necessarily compare equal. Try: #1 DUP 50 STWS 'A' STO 'A ENTER == - If flags 57 or 58 are set the Solver might give an underflow or overflow error while working to a solution. - The Solver can also give incorrect Sign Reversal messages. - User-defined units that are multiples of degrees Farenheight or Celsius give incorrect results. - The unit "yr" has been defined as 365 days instead of the correct 365.242 days. As "lyr" is defined in terms of this unit, it, too is incorrect. - RND does not work correctly in FIX mode (try "0 FIX .7 RND": you get 0 instead of 1, unless you have flag 51 or 52 set!). If you don't want to set one of these flags, use ->STR STR-> to round the number. Actually, this demonstrates another problem. Do: 0 FIX MAXR ->NUM and you get 1.E500. Now, ->STR gives "1.E500" then STR-> gives Syntax Error. - String comparisons produce incorrect results if the strings do not differ in their initial letter: "AA" "AB" < gives 0. - EDIT and VISIT can give unexpected results if you attempt to EEX or CHS an already-existing number. Use "-" and "E" or delete and reenter the number. - Memory can be corrupted by incorrect usages of the derivative function. - Merging left with the divide sign can give incorrect results. - Rounding of numbers in complex and matrix operations is sometimes slightly different than that of the same pure real numbers. - When the origin is not on the screen, plot tick marks are relative to the screen instead of the origin. - The Out of Memory condition does not clear typeahead: you may unexpectedly delete variables or programs. - The Solver does not always clear all internal flags. Do: Memory Lost 0 1/X (gives "Infinite result" and sets flag) DROP \<< A DROP 1 \>> STEQ Solve for A without an initial guess. You will get a System Halt. - Non-real results can cause the Solver to store a system object as the variable's value. - Some special characters are not displayed on the menu line properly: character displays as & e | Z ~ \ \.x ` \:- _ proportionality o] (140 decimal) - (Not really a bug) Turning a string into a name, where the string refers to a name that already exists, will always hang due to inifinite evaluation recursion. Notes:: This machine brought the functionality : memory ratio to heights never before dreamed. HP28C: Hardware I/O basics document at: http://www.hpmuseum.org/cgi-sys/cgiwrap/hpmuseum/articles.cgi?read=313 As with the -45A, you can access an internal counter and turn it into a clock. Here is a set of programs to do this (written by Jake Schwartz and published in Datafile V6N4, June 1987): HEX 64 STWS \<< #123E SYSEVAL 8192 / \>> 'TIME' STO \<< HMS\-> 3600 * TIME B\->R - 'TD' STO \>> 'CS' STO \<< 4 FIX DO TIME B\->R TD + 3600 / 24 MOD \->HMS 1 DISP UNTIL KEY END DROP \>> 'CLOCK' STO Instructions: - Enter the current time in HH.MMSS format. - Press USER CS to set the clock. - Press USER CLOCK to show the time. It continues until you press a key.
Areas
General
Craig's Articles
Last modified Saturday, 2012-02-25T17:29:32-06:00.