billw@hpcvra.cv.hp.com. (William C Wickes) (02/21/91)
HP 48 Insights
I. Principles and Programming
Many people have been asking me about the status of HP 48 Insights, the
long-promised revision of HP 28 Insights for the HP 48. Because of this
interest, I will take the liberty of posting a filthy commercial message
on this otherwise untainted newsgroup.
HP 48 Insights (Part I) is currently being printed, and should be available by
about March 15. It is "Part I" because I realized sometime after embarking on
the HP 28 Insights rewrite that I had better break it into two volumes if I a)
wanted to have books of reasonable spiral binding size, and b) wanted to have
something published by now. (Another part of this strategy was to extract all
of the HP 41-related material in HP 28 Insights into yet another book, HP
41/HP\|48 Transitions, which is already published.) As you may conclude from
looking at the table of contents below, Part I concentrates on the toolbox
aspects of the HP 48. Part II, which is likely to appear at the end of this
year, will cover the integrated systems, such as plotting, time, HP Solve,
etc.
Part I is 394 pages, and lists for $25.95. Many bookstores, and EduCalc, have
already ordered the book (and have been breathing down my neck for six
months). You can also order direct from the source (Larken Publications,
4517 NW Queens Ave, Corvallis OR 97330) by sending a check or m.o. in
$US for the above amount plus $1 for surface mail postage (if you can
wait 'till March 15 but no longer and want air mail, it's $2.50 for US,
$9 for Europe, or $12 elsewhere). Early orders will be filled as soon as
the books are available.
If you have a copy of HP 28 Insights, be aware that you will see a lot of
material repeated in HP 48 Insights--the new book is a revision of the
old in much the same way that the HP 48 is a revision of the HP 28. If
you have read Transitions, you might even see some material a third time.
Below is the table of contents (to third level headings) that should give
you a reasonable idea of the subject matter of Part I.
Bill Wickes
HP Corvallis
(Note: my books are written with HP's blessing and subject to their review,
but they are otherwise independent of HP. In short, complain to me, not
to them.)
CONTENTS
1. Introduction...................................... 1
1.1 The Evolution of the HP48.................. 2
1.2 About This Book............................ 5
1.3 Notation................................... 8
1.4 Terminology................................ 12
1.5 Easy to Use or Easy to Learn?.............. 13
2. Understanding RPN................................. 15
2.1 The Evaluation of Mathematical
Expressions................................ 16
2.2 Calculator RPN............................. 19
2.3 RPL RPN.................................... 21
3. Objects and Execution............................. 25
3.1 Operations................................. 25
3.2 Objects.................................... 27
3.2.1 Operations as Objects 29
3.3 Execution and Evaluation................... 30
3.3.1 When are Objects Executed? 31
3.4 Data Objects............................... 32
3.4.1 Real Numbers 33
3.4.2 Complex Numbers 34
3.4.3 Strings 36
3.4.4 Arrays 40
3.4.5 Lists 40
3.4.6 Binary Integers 40
3.4.7 Graphics Objects 42
3.4.8 Tagged Objects 42
3.4.9 Unit Objects 44
3.4.10 Directories 45
3.4.11 Libraries 45
3.4.12 Backup Objects 46
3.5 Procedure Objects.......................... 47
3.5.1 Program Objects 47
3.5.2 Algebraic Objects 47
3.5.3 Lists as Procedures 51
3.5.4 Commands and Functions 51
3.5.5 Function Execution 52
3.5.6 Symbolic Constants 56
3.6 Name Objects............................... 58
3.6.1 Global Names 59
3.6.2 Local Names 61
3.6.3 XLIB Names 61
3.7 Quoted Names............................... 62
3.8 Quotes in General.......................... 62
3.9 EVAL....................................... 64
3.10 System Objects............................. 64
3.10.1 SYSEVAL 64
4. The HP48 Stack.................................... 67
4.1 Clearing the Stack......................... 68
4.2 Rearranging the Stack...................... 69
4.2.1 Exchanging Two Arguments 69
4.2.2 Rolling the Stack 69
4.2.3 Copying Stack Objects 70
4.2.4 How Many Stack Objects? 71
4.3 Recovering Arguments....................... 72
4.4 Stack Manipulations and Local
Variables.................................. 73
4.5 The Interactive Stack...................... 74
4.6 Managing the Unlimited Stack............... 76
4.6.1 Stack Housekeeping 77
4.6.2 A Really Empty Stack 79
4.6.3 Disappearing Arguments 79
4.7 Design Insights............................ 81
5. Storing Objects................................... 83
5.1 Global Variables........................... 83
5.1.1 DEFINE 86
5.1.2 Deleting and Renaming a
Variable 86
5.1.3 Cancelling STO and PURGE 87
5.2 Directories................................ 88
5.2.1 Organizing User Memory 92
5.2.2 Directory Objects 93
5.2.3 Purging Multiple Variables and
Directories 96
5.3 Ports...................................... 96
5.3.1 Port Variables 97
5.3.2 Libraries 100
5.3.3 Plug-In Ports 105
5.3.4 Archiving Memory 106
5.4 Local Variables............................ 109
5.5 Name Resolution............................ 110
5.5.1 Command Line Entry 111
5.5.2 Executing Name Objects 112
5.5.3 Path Names 113
5.6 Named Objects vs. Registers and Files...... 115
5.7 Additional Global and Local Variable
Operations................................. 116
5.7.1 Recalling Values 116
5.7.2 Altering the Contents of
Variables 117
5.7.3 Cataloging and Finding
Variables 121
5.7.4 Moving A Variable 122
5.8 Calculator Resets.......................... 123
6. Methods........................................... 125
6.1 The Basic Interface........................ 125
6.2 Keyboard Mastery........................... 127
6.2.1 Keystroke Strategies 128
6.2.2 Navigating the Menus 129
6.2.3 ATTN 133
6.3 Hidden Operations.......................... 133
6.3.2 Shift Key Meanings 134
6.4 Object Entry............................... 139
6.4.1 Key Definitions and Entry
Modes 140
6.4.2 Controlling the Entry Mode 142
6.4.3 ENTER in Detail 143
6.5 Object Editing and Viewing................. 147
6.5.1 Viewing Objects 148
6.6 The Matrix Writer.......................... 149
6.6.1 Array Entry 151
6.6.2 Editing Cells 154
6.7 The EquationWriter......................... 156
6.7.1 The EquationWriter Display 158
6.7.2 Basic Expression Entry 160
6.7.3 Special Forms 165
6.7.4 Correcting Mistakes 168
6.7.5 Stack Access 169
6.7.6 Subexpression Operations 170
7. Customization..................................... 175
7.1 Modes and Flags............................ 175
7.1.1 Flag Commands 176
7.1.2 System Flag Assignments 178
7.2 Key Assignments............................ 180
7.2.1 Single Key Assignments 180
7.2.2 Multiple Key Assignments 182
7.2.3 Key assignments and memory 184
7.3 Custom Menus............................... 185
7.3.1 Built-in Menus 186
7.3.2 Custom Menu Object Types 186
7.3.3 Menu Key Labels and Shifted Menu
Key Actions 189
7.4 Vectored ENTER............................. 190
7.4.1 Examples 192
8. Problem Solving................................... 195
8.1 HP Solve................................... 196
8.2 Symbolic Manipulations..................... 197
8.3 Programs................................... 201
8.4 Summary.................................... 203
8.5 User-Defined Functions..................... 204
8.5.1 User-Defined Function
Structure 206
8.5.2 User-defined Functions as
Mathematical Functions 207
8.5.3 Defining Programs 210
8.5.4 Additional Examples: Geometric
Formulae 210
9. Programming....................................... 213
9.1 Program Basics............................. 214
9.1.1 The << >> Delimiters 214
9.1.2 The Program Body 215
9.1.3 Structured Programming 216
9.2 Program Structures......................... 219
9.3 Tests and Flags............................ 221
9.3.1 HP48 Test Commands 223
9.3.2 Equality 223
9.4 Conditional Branches....................... 225
9.4.1 Simple Branches: The IF
structure. 225
9.4.2 RPN Command Forms 227
9.4.3 The CASE Structure 228
9.5 Loops and Iteration........................ 230
9.5.1 Definite Loops 230
9.5.2 Indefinite Loops 235
9.6 Error Handling............................. 239
9.6.1 The ATTN Key 241
9.6.2 Custom Errors 241
9.6.3 Error Handling and Argument
Recovery 242
9.6.4 Exceptions 243
9.7 Local Variables............................ 245
9.7.1 Comparison of Local and Global
Variables and Names 248
9.8 Local Name Resolution...................... 249
9.8.1 Resolution Speed 253
10. Display Operations and Graphics................... 255
10.1 Controlling the Display.................... 256
10.1.1 Postponing the Standard
Display 257
10.2 Text Displays.............................. 258
10.3 Graphics Displays.......................... 260
10.3.1 Graphics Object Operations 260
10.3.2 Graphical Text 265
10.3.3 Displays on the Graph Screen 266
10.3.4 Logical Coordinates 269
10.3.5 Pixel Drawing 270
11. Arrays and Lists.................................. 277
11.1 Arrays..................................... 277
11.2 Arrays and Algebraic Objects............... 281
11.3 Vectors and Coordinate Systems............. 282
11.3.1 Coordinate Systems 284
11.3.2 Example: Coordinate
Transformations 288
11.4 Lists...................................... 289
11.4.1 List Operations 290
11.5 List Applications.......................... 293
11.5.1 Input Lists 294
11.5.2 Output Lists 296
11.5.3 Lists of Intermediate
Results 296
11.6 Composite Objects and Memory............... 299
11.7 Symbolic Arrays............................ 301
11.7.1 Utilities 301
11.7.2 Symbolic Array Arithmetic 305
11.7.3 Determinants and Characteristic
Equations 307
12. Program Development............................... 311
12.1 Program Editing............................ 311
12.1.1 Low Memory Editing
Strategies 312
12.2 Starting and Stopping...................... 313
12.2.1 ATTN, DOERR and KILL 315
12.2.2 Single-Stepping 316
12.3 Debugging.................................. 317
12.4 Program Optimization....................... 323
12.5 Memory Use................................. 326
12.5.1 Using BYTES 327
12.6 Obtaining Input............................ 329
12.6.1 Halting for Input 329
12.6.2 Protected Entry. 335
12.6.3 Using INPUT. 335
12.6.4 Keystroke Input 339
12.7 Displaying Output.......................... 344
12.7.1 Tagged Objects 345
12.8 Programs as Arguments...................... 346
12.9 Timing Execution........................... 349
12.9.1 Erratic Execution 351
12.10 Recursive Programming...................... 352
12.11 Additional Program Examples................ 354
12.11.1 Random Number Generators 354
12.11.2 Prime Numbers 359
12.11.3 Simultaneous Equations 361
12.11.4 Infinite Sums 364
Program Index.......................................... 371
Subject Index.......................................... 373
List of Programs:
ADDV Concatenate Vectors
AGXOR Animate with GXOR
APLY1 Apply Program to 1 Symbolic Array
APLY2 Apply Program to 2 Symbolic Arrays
APVIEW Animation with PVIEW
AREPL Animation with REPL
ASN41 ASN HP41-style
ASTO Animation with STO
BINCALC Binary Integer Calculator
BOUNCE Bouncing Ball Demo
BS? Bit Set?
CB Clear Bit
CEQN Characteristic Equation
CHARDISP Display HP48 Characters
CHKINPUT Prompt and Check Input
CI Cosine Integral
CINT Circle in a Triangle
COUNT4 Count in 4 Ranges
CROSSF CROSS Function
CSEG Circle segment function
DATENAME Create a Name from the Current Date
DELROW Delete a Matrix Row
DFACT Double Factorial
DIM Symbolic Array Dimensions
DIST Distance function
DOTF DOT Function
DRAWPIX DRAW using PIXON
FIB Fibonacci Series Generator
FIND Find a Variable
FRACALC Fraction Calculator
FRAME Frame the Graph Screen
GCD Greatest Common Divisor
GSAMP Graphics Samples
GSORT General-purpose Sort
INFSUM Compute an Infinite Sum
KEEP Keep n Objects
KEYHALT Halt if a Key is Pressed
KEYTIME Wait a Specific Time for a Key
LCM&GCD LCM and GCD
MINFSUM Compute an Infinite Sum (Monitor)
MINISTK Small-font Stack Display
MINL Minimum of a List
MINOR Minor of a Determinant
MNDROP DROP m through n
MNORM Modified Normal Distribution Generator
MOVE Move a Variable
MSGSHOW Show Messages
NORM Normal Distribution Generator
N->S Numeric to Symbolic
OLABEL Object Labeling Utility
POIS Poisson Generator
PPER Polygon perimeter function
PRIMES Find Prime Numbers
PROMPTCONT Prompt with CONT Display
PTINFSUM Infinite Sum from Previous Term
QU Quadratic Root Finder
RC->R Real/Complex to Real
RMINL Recursive Minimum of a List
->SA Stack to Symbolic Array
SA-> Symbolic Array to Stack
SADD Add Symbolic Arrays
SB Set Bit
SCOF (Unsigned) Symbolic Cofactor
SCONE Cone surface function
SDET Symbolic Determinant of a Matrix
SEC Secant function
SI Sine Integral
SIMEQ Simultaneous Equations
SKETCH Sketch Lines
SMINOR Minor of a Symbolic Matrix
SMS Scalar Multiply Symbolic Arrays
SMUL Multiply Symbolic Arrays
S->N Symbolic to Numeric
SORT Sort a List in Increasing Order
SSUB Subtract Symbolic Arrays
STAR Draw a Star
STRN Transpose Symbolic Array
SUBCOL Subtract Columns
SUM4 Sum 1/x^4
SUMTERM Compute an Infinite Sum from TERM
TIMED Timed Execution
TPIX Toggle a Pixel
VANGLE Angle Between Two Vectors
VCYL Cylinder volume function
VSUM Sum Vector Elements
XARCHIVE Extended Archive
XFORM Coordinate Transformation
XPTINFSUM Infinite Sum in x from Previous Term