ti 58

shown here is the 58c. a continuous memory version of the ti58. the 58c came out in 1979 after the original 58 (1977) and was more useful because the 58 lacked a way to store programs outside the unit, either on cards (like the ti59) or onto tape (like the casio fx-501p).

the 58 has 480 program steps (max) and 60 memories (max). program steps and memories are interchangeable.

it can accommodate a rom module that fits into the back of the machine. the module contains a library of programs and comes with a wallet of cards describing the functions of the A-E keys for each program when called up. use of the rom programs does not occupy program memory and can be called from user programs as subroutines.

the unit is powered by a rechargeable battery pack and comes with a mains adapter/charger.

the 58 has good precision. 10 digits plus 3 internal making it significantly better than the 57, but actually the same as the much older sr-50.

interesting is the way in which inv operates on almost any operation, so inv ln(x) is e^x, inv sum subtracts from memory, inv y^x is y^(1/x), inv x==t means x != t and so on. the inverse operations are not labelled on the keyboard and are taken as understood (inv sqrt(x) is not x^2 though, because it has its own key).

the programming model was quite advanced, labels, conditional branches, indirect addressing, flags, loops (dsz), subroutines (6 deep). keystrokes were merged except that inv costs 1 step (eg inv 2nd cos would be 2 steps).


example program

i ported over the prime number test program,  developed for the hp15c as comparison.

LblA CP CMs STO 01 x<>t 2 x<>t x==t = inv x>=t +/- sto 07 1 inv sum 07 Lbl+ rcl
07 x<>t rcl 07 / 2 = int sto 09 * 2 = inv x==t - 1 SUM 06 rcl 09 sto 07 gto+
Lbl- clr x<>t rcl 06 x==t +/- 1 inv sum 06 Lbl* 2 sum 08 rcl 08 x<>t 9 x==t = 4
x<>t inv x==t / 3 sto 08 Lbl/ x<>t rcl 01 x==t = x<>t sto 02 1 sto 03 rcl 07 sto
10 Lbly^x rcl 10 x<>t rcl 10 / 2 = int sto 09 * 2 = x==t CE SBR B LblCE clr x<>t
rcl 09 x==t 1/x sto 10 rcl 03 sto 09 rcl 02 sto 03 SBR B rcl 03 sto 02 rcl 09
sto 03 gto y^x Lbl1/x 1 x<>t rcl 03 x==t * x<>t rcl 01 - 1 = x==t * rcl 06 sto
10 Lbl clr clr x<>t rcl 10 x==t +/- rcl 03 sto 02 SBR B rcl 03 x<>t rcl 01 - 1 =
x==t * 1 inv sum 10 gto clr lbl= 1 R/S lbl+/- 0 R/S
LBL B rcl 02 * rcl 03 / rcl 01 = inv int * rcl 01 + .5 = int sto 03 inv sbr

its somewhat bigger, but the logic is the same. running this program shows the 58 is about half the effective speed of the hp15c. for example to verify the number 99,991 is prime takes this 58c, 6.5 minutes but the 15c does the same computation in 3.25 mins. both times, in fact, demonstrate the extreme slowness of programmable calculators. scicalc on the palm pilot runs similar (but improved) logic to this as part of its factor algorithm and verifies 99,991 is prime without any noticeable delay at all.