***** *** * * **** ***** ***** *** * * * ** * * * * * * * * * * * * * * * * * **** * **** * * * * * * *** *** * * * * * * * * * * * * * ** * * * * * * **** ***** * * **** * ****** *** Volume 4 Number 3 48/39/38 March-May 1979 Newsletter of the SR-52 Users Club published at 9459 Taylorsville Road Dayton, OH 45424 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -A Keyboard SBR N in One Step (58/59)Ed Westenhaver (1095) has discovered another useful end-of-partition function (V3N6p5), noting that a program-executed SBR at the last step presents the user with the ability to specify continued execution at any defined label without manually having to key SBR. For example, with a 59 at turn-on, and the following sequence written in RAM: LA GTO 479... Lbl RCL... R/S... 479: SBR, pressing A causes a halt with flashing dis- play. If RCL is then pressed, the code following Lbl RCL is executed. Mechanizing this discovery in programs with many entry points can save a significant number of input keystrokes. Ed found an improved typewrites (V2N9p5) to be a good example. The program which follows is based on one Ed wrote, combining his key-character assignments with fas- ter processing. The space, and alphabet characters can be input at a rate of about one per second (compared with about one per 2 seconds for the TI LE and MU CROM routines), and require only a single keystroke per letter. The remaining 37 characters require the shift key (2nd) as a prefix, and can take as long as 2 seconds for input processing, depend- ing upon how far down in RAM their labels are. I've found that the plastic key-code overlay (factory supplied with each 58 or 59) makes a good overlay base on which adhesive paper strips can be mounted, and appropriately inscribed as follows: A=start/capital π, C=delete (backspace), D=next, E=space/II, 2nd=2nd, INV=A/Σ, lnx=B/delta, CE=C/x, CLR=D/x, x:t=E/x:t, x^{2}=F/^{2}, √=G/√, 1/x=H/up arrow, STO=I/,, RCL= J/!, SUM=K/*, y^{x}=L, EE=M/%, (=N/(, )=O/), ÷=P/÷, GTO=Z//, 7=/7, 8=/8, 9= /9, X=Q/x, SBR=Y/', 4=/4, 5=/5, 6=/6, -=R/-, RST=X/?, 1=/1, 2=/2, 3=/3, +=S/+, R/S=W/e, 0=/0, .=V/., ±=U/π, ==T/=, where for a=b/c, a is the stamped name of a key, b is the assigned first function and c the assig- ned second function. The B key is free to be used for either first or second function assignment to one or two frequently used characters, in which case B and/or B' could replace the currently assigned labels for those characters. Members may wish to modify this program to store assembled print- code for data recording, and are invited to try to speed up execution.TI-59/PC Program: Fast Typewriter Ed Westenhaver (1095)/EdUser Instructions:Press A to initialize; see number of character-posi- tions remaining (20) flashed. Input characters per overlay. Full lines are automatically printed; press D to initiate the printing of less than 20 characters. Press C to backspace, and press LRN LRN to clear the flashing error-state. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Program Listing:000: S*0 Op20 Dsz1 477 GTO 323LE0 RSTL INV13 RSTL lnx14 RSTL CE027: 15 RSTL CLR16 RSTL x:t17 RSTL x21 RST^{2}L √x22 RSTL 1/x23 054: RSTL STO24 RSTL RCL25 RSTL SUM26 RSTL y27 RST^{x}L EE30 RST 080:L (31 RSTL )32 RSTL ÷33 RSTL X34 RSTL -35 RSTL +36 RST 110:L =37 RSTL ±41 RSTL .42 RSTL R/S43 RSTL RST44 RSTL SBR137: 45 RSTL GTO46 RSTL Dsz1 RSTL Ifflg2 RSTL DMS3 RSTL π4 RST 161:L x≥t5 RSTL Σ+6 RSTL x7 RSTL x=t10 RSTL Nop11 RSTL Op187: RSTL Adv40 RSTL Prt53 RSTL List64 RSTL Stflg71 RSTL Grad210: 47 RSTL Lbl65 RSTL Rad20 RSTL Pause63 RSTL Deg50 RSTL Eng235: 61 RSTL Fix55 RSTL Int56 RSTL Abs72 RSTL CMs57 RSTL Exc73 262: RSTL Prd51 RSTL Cos52 RSTL Write54 RSTL Sin70 RSTL P/R62 287: RSTL Tan60 RSTL CLR'66 RSTL CP67 RSTL log75 RSTL INV'77 312: RSTL E'74 RSTL A'76 RSTL DOp0 R6 + R5 EE 2 INV EE+R4 EE 4 INV 342: EE + R3 EE 6 INV EE + R2 EE 8 = INV EE Op1 R11 + R10 EE 2 INV EE + 370: R9 EE 4 INV EE + R8 EE 6 INV EE + R7 EE 8 = INV EE Op 2 R16 + R15 398: EE 2 INV EE + R14 EE 4 INV EE + R13 EE 6 INV EE + R12 EE 8 = INV EE 424: Op2 R21 + R20 EE 2 INV EE + R19 EE 4 INV EE + R18 EE 6 INV EE + R17 452: EE 8 = INV EE Op4 Op5LACMs 2 S00 19 S1LCOp30 Op21 R1 SBRVectored Processing with Op 10(V1N3p5, V1N4p3, V2N8p1, V2N11p2, V3N2p3, and throughout the calendar printing articles: V3N5-V3N9)Past articles have discussed various methods by which the input datum is used either directly or following a transformation to "point" to one of several processing choices, in addition to its possible func- tion as a processing input. The primary advantage of such mechanizations is fast processing: time is not wasted conducting multiple comparisons. For example, consider a program designed to accept one of ten possible inputs in the 0-10 range, where for an input 1, processing is to begin at step 10, for 2 at step 20,... for 10 at step 100. One way to accom- plish this is to compare the input successively with 1,2,... 9 and to branch to the desired address when a match is found. But this approach is slow and code-consuming compared with a method which branches indir- ectly on ten times the input as a pointer. The first approach might look like:LAx:t 1 x=t 010... 9 x=t 090..., and the second like:LAS0 X 10 = S1 GTO*1... . Here, the input is vectored to the desired pro- cessing via a simple transformation (ten times the input). Other more complicated transformations have been discussed in earlier articles, involving carefully contrived arithmetic manipulations to eliminate, or at least minimize "collisions" (V2N8 andScientific AmericanApr 77 p63-80). For the special case where there are only 3 processing choices to be made, Jared Weinberger (221) and Bill Skillman (710) have been exploring a new approach using the 58/59 Op 10 function. From:LA(CE + Op10 S4 Op24 R*4 S04 0) GTO*4 by Jared which handles a 3-way branch on a negative, zero, or positive input through Reg 0, 1, and 2 as pointers, Bill has devised eleven related routines to cover all possible conditional relationships on both a single variable WRT zero, and 2 variables WRT each other:LA(CE + Op10 S4 Op24 R*4 S04 0) GTO*4 LB (CE + Op10 S4 R*4 S04 0) GTO*4LC(CE + Op10 ± S4 R*4 S04 0) GTO*4LD(CE + Op10 Abs S4 R*4 S04 0) GTO*4LE(CE - R3 + Op10 S4 Op24 R*4 S4 R3) GTO*4LA'(CE - R3 + Op10 S4 R*4 S4 R3) GTO*4LB'(CE - R3 + Op10 ± S4 R*4 S4 R3) GTO*4LC'(CE - R3 + Op10 Abs S4 R*4 S4 R3) GTO*4LD'(R5 - R3) 52-NOTES V4N3p2

Op10 S4 Op 24 R*4 S4 GTO*4LE'(R5-R3) Op 10 S4 R*4 GTO*4L+(R5-R3) Op10 ± S4 R*4 S4 GTO*4L=(R5-R3) Op10 Abs S4 R*4 S4 GTO*4. In all cases prestore 2-way branch addresses in Reg 0, 1, and 3-way branches in Reg 0, 1, and 2. It would appear that practical applications of this approach would be in cases where no suitable hash function can be found, and the T-register is needed for other purposes. Members are invited to make improvements and/or report their own practical applications. In another application of Op 10, Jared beats the TI 58/59 Manual's IV-96 check-service-charge program with:LAS0 fix2 X .1 A' A'LA'- 5 INV SUM 0 R0 X (Op10 + 1) ÷ 200 = rtn which is shorter, and faster for inputs greater than 14.Book Review: Countdown: Skydiver, Rocket and Satellite Motion on Programmable Calculatorsby Robert Eisberg and Wendell Hyde (dilithium Press Box 92 Forest Grove, OR 97116; 1979, 107pp $6.95) This new publication appears to be a sequel to Eisberg's earlier work: Applied Mathematical Physics With Pocket Programmable Calculators (V2N1p6), simplifying the sections on freefall, fall with friction, and central force motion, targeting the algorithms to the newer low-end PPCs: TI-57 and HP-33E. The reader is assumed to be new to both physics and programming and is led step by step in both areas to mechanize a few simple numer- ical solutions to some of the fundamental motion problems. The chosen applications, and variations on them should be both entertaining and educational to the physics/programming novice, and without burdening him with the formal definitions, the text announces at the end that the reader/user has solved nonlinear second order, and "... coupled, second order, differential equations. Congratulations."More on the MU CROM (V3N12p3-5)Bill Skillman (710) has examined and used the routines in this CROM, and offers the following comments: MU-04: Columns of figures can be printed without using MU-03. (I note also that with or without MU-03, restarting using old line num- bers required CMs to "erase" previous characters). MU-06: If data are prestored in Reg 1 to n by non-MU-06 means, Reg 0 needs to be initialized with n. MU-08: The max number of pseudos per real register may be exten- ded to 11 by creating the format statement incrementally (register arithmetic, or display summing (see V3N7p4)). MU-11: There is noticeable accuracy degradation for inputs less than ½. MU-14: For call by a user program, follow manual initialization; the suggested shortcut in incomplete. MU-15: A factor of x was omitted in the denominator of the f'(x) expression, x≠0. MU-17: Contrary to instructions, you can use = and CLR in SBR A' but you must preserve t (MU-17 uses T in an x≥t comparison at step 236) Two observations which Bill makes generalize to all CROMs (as noted by Fred Fish (V3N3p1)): 1) Check CROM listings for routines which only store inputs, and for user program calls, bypass those with 52-NOTES V4N3p3

appropriate user sequences of the form: STO nn, and 2) Check CROM code before and after calls to user routines (via Pgm 00 N) to see if it is safe to use CLR and/or =, since it is not always necessary to heed rel- ated caveats in the CROM manuals. The MU CROM is slowly becoming available (not yet showing up in Dayton), and as more members acquire it, I hope to get more discussion of this unusually good module.*** David W Johnston (5) -1979 ***I was saddened to learn via a note from Jim Doman (473) of Dave's death 2 April 1979. In his last letter to me in January, Dave reported that he was undergoing chemotherapy for cancer, and that he was "holding my own". Dave will be missed, especially by those members who have been active in the 56/57/58 Program Exchange which he ran so efficiently and modestly. I have been in touch with Dave's closest survivor, a cousin living in Massachusetts, and hope to obtain Dave's Program Exchange records. At such time as they become available, I'll pass them along to a volunteer, or lacking the latter will attempt to carry on the Pro- gram Exchange Service myself. Another PPC notable died in January: Jim Davidson, a major contri- butor of input to65-Notes/PPC Journal, and a participant in our Friendly Competition (V2N12p4). - - - - - - - - - - - -Zero as a Callable Label (58/59)Maurice Swinnen (779) passes along a discovery published inDisplay(V5N5+6S76), which reveals that zero can be used as an addressable label (V3N7p3). It turns out that a call to any of the ten user-defined keys (A-E') preceded by Ind, executes as a call to Label 0 (if defined). The user-defined label may (but need not) be defined. For example:LAseq1 rtnL0seq2 rtn called by pressing A, executes seq1, while Ind A (or Ind B,C,...E') does seq2. A call toLAseq1 Ind C seq3 rtnL0seq 2 rtn with A does seq1 seq2 seq2. Zero appears to be the only numeral which will work this way, and somehow Reg 0 gets into the act, since a print trace reveals its con- tents following execution of Ind n (n=A,B,...E') as if Reg 0 were being addressed indirectly.ROM Constants Update (V4N1p6)John has explored further and reports: "I have determined the accuracy of all 16 of them. Nine turned out to be good to all 16 places; the other seven are good to the number of places shown ( ): tan^{-1}.1 (14), tan^{-1}.01 (15), ln 10 (14), π (13), π/2 (14), π/4 (15), and 18/π (13). "The ROM constants for tan^{-1}.1, tan^{-1}.01, and π/4 end in zero, and appear to be simply a rounding to the number of digits given. The other four all end either 012 (ln 10, π), or 022 (π/2, 18/π), so these numbers could be some sort of code. (that the 14th digit on ln 10 (0) is good is probably a coincidence)."Corrections:V4N2p5 step 234 is Adv; V4N2p6 step 254 is ÷ (divide) and step 263 is 51."Membership Address Changes:396: 569 Broadway Ave Victoria BC V8Z 2G3Canada; 559: 4427 Rosada St Long Beach CA 90815 52-NOTES V4N3p4 (end)