Friday, July 10, 2020

Retro Review: TI-95 Procalc

Retro Review:  TI-95 Procalc 





This review covers the calculator itself, not any of the optional accessories which includes a thermal printer and cassette interface. 


Quick Facts:

Model:  TI-95 Procalc
Company:  Texas Instruments
Type:  Scientific, Keystroke Programmable
Years:  1985-1987
Display:  10 digits for numerical answers, 16 alpha-numeric display
Batteries:  4 AAAs
Logic:  Algebraic (AOS)
Original Price:  $200.00.  I paid $60 I bought it on eBay.

Memory:
Registers:  26 alpha registers, up to 900 numeric registers (three digit registers)
Programming Steps: up to 7,200 steps, default set at 1,000 steps.
Storage Memory:  up to 8,000 bytes, set to 5,200 bytes by default.

A separate 8K RAM can be added for an additional 8,000 bytes of memory.

The QWERTY Keyboard and Other Unique Features

One look at the keyboard and one may mistake the TI-95 Procalc as a BASIC Programming calculator.  However, the TI-95 Procalc is a keystroke programmable calculator.   We'll talk about the programming later.

The TI-95 Procalc is one of the first calculators to contain function keys, F1 through F5.

In addition to the standard functions including trigonometry, logarithms, roots, powers, factorials, hyperbolic functions, and statistics including linear regression:

The number menu [ NUM ] has functions including integer part (INT), fractional part (FRC), random numbers between 0 and 1 (R#), round the number displayed to fix number settings (RND), sign function (SGN), lowest common multiple (LCM), prime factors (PF), and absolute value (ABS).

The LCM soft key has two functions:

(LCM) :   lowest common multiple. 
 Example:  4 [ x~t ] 6 (LCM) returns LCM = 12.

(LCM) [ x~t ]: greatest common divisor.
Example:  25 [ x~t ] 40 (LCM) [ x~t ] returns 5   (GCD(25, 40) = 5)

(PF) returns the biggest prime factor of an integer.  To get additional prime factors, repeat the keystrokes [ x~t ] (PF).

Example:  28
28 [ NUM ] [ --> ] ( PF ) returns  f = 2
[ x~t ] ( PF ) returns f = 2
[ x~t ] ( PF ) returns f = 1  (When you reach f = 1, press [ x~t ] to get the last prime factor, 7)
28 = 2 * 2 * 7 = 2^2 * 7

The conversions menu [CONV] contain several types of conversions:

MET (Metric):
(F - C)  °F -> °C  (left to right),  [INV] (F - C) does °C -> °F  (right to left)
All of the conversions follow this pattern.
(G - L)  gallon and litre
(# - K)  pounds (#) and kilograms (kg)
(i - m)  inches (i) and millimetres (m)
(f - M)  feet and meters

DMS:  convert to D.MMSSS from degrees
INV DMS:  convert degrees to D.MMSSSS

ANG:  convert between Degrees (D), Radians (R), and Grads (G)

P-R:
r [ x~t ] θ [ P-R ] results:  y [ x~t ] x  (polar to rectangular)
x [ x~t ] y [ INV ] [P-R] results: θ [ x~t ] r   (rectangular to polar)

BAS:  (Bases)
DEC: convert to base 10 and set the TI-95 Procalc to Decimal Mode
HEX:  convert to base 16 and set the TI-95 Procalc to Hexadecimal Mode
OCT:  convert to base 8 and set the TI-95 Procalc to Octal Mode
2sC:  convert to 2's complement format
UNF:  convert to un-formatted display mode

Two things to note:
1.  Hexadecimal numbers A-F are accessed with the [ 2nd ] key.
2.  There are no conversions to binary integers

The FUNC key has three operations:

QAD:  Find the roots, real or complex, of the quadratic equation a*x^2 + b*x + c = 0

CUB:  Find the roots of the cubic equation a*x^3 + b*x^2 + c*x + d = 0

SYS:  This is not a solver for system of equations.  Instead, it allows the user to turn system protection on or off.  With system protection off, the user can edit specific bytes of memory.  The aim for unprotected system memory mode is to assist the user in assembly programming.

Fun Fact:  FIX 9 sets the TI-95 Procalc to floating mode.

One more fun fact:  The factorial functions accepts arguments of both integers and integers in the form of n + 1/2.   The latter can include negative numbers.  You will not see this in any other standard scientific calculator (outside the CAS-enabled factorials).

Help: But Not What You Expect

The HELP key does not give help on the specific functions.   Instead, the HELP key asks the user "SET NORMAL MODE?".  Yes resets the TI-95 to decimal mode, floating standard mode (removes Fix settings), degree mode, and sets memory partition to default (1000 program steps, 125 numeric registers, and 5200 bytes for files).  A No asks the user whether to reset any specific mode that is set to default.

Files, Files, and More Files

The FILES key is where you would store, load, and delete program and data files.  Files have three characters (fixed so the file "A   " has A followed by two spaces).  FILES is also where you access the 8K RAM or additional RAM cartridges.   It's pretty neat how the FILES system works once it is learned.

The ALPHA Register

Similar to the HP 41C and HP 42S, the TI-95 Procalc has a 16 character ALPHA register.  The ALPHA register is used to display results and prompt messages.  Numeric registers call be recalled into the ALPHA register.

Example:  11 is stored in register A.  ANSWER = is in the ALPHA register.  Pressing (COL) 16, moves the cursor to column 16.   (MRG) A places 11 at the 16th space justified right.

ALPHA register:   ANSWER =     11.

MRG = recalls the number from the display/last answer.

The ALPHA register can contain lower case letters and ASCII characters simular to the TI-58/59 family.

Keystroke Programming

The TI-95 Procalc has algebraic keystroke programming with labels, tests against numeric registers, increase and decrease by 1 (INCR and INV INCR, respectively) functions, define menus (DEF), the use of ALPHA register.

Unique is the YES/NO function.  Y/N creates a two function menu (F1: YES, F2: NO) and works like the rest of the test commands.

Y/N
(do if YES is pressed)
(skip to here if NO is pressed)

Labels are two characters which can contain both numbers and letters.  Go to and subroutines to labels are use the commands GTL and SBL.

The halt command, HLT, stops program execution.  While the break command, BRK temporarily stops the program execution to display the current result and sets F1 to GO.

Storage arithmetic is permitted.

Example program:  PRF which automates the prime factors of an integer.

TI-95 Procalc Program: Prime Factors


STO A
'NUMBER?' 
BRK
LBL 00
PF 
'FACTOR = '
COL 16 
MRG =
BRK
IF= A
GTL 01
x~t
GTL 00
LBL 01
x~t
'FINAL = '
COL 16
MRG =
HLT  

(50 steps)

Example: 158
'NUMBER?' 158 (GO)
'FACTOR=        2.'  (GO)
'FACTOR=        1.'  (GO)
'FINAL=        79.'

158 = 2 * 79

The TI-95 Procalc comes with a har dcase and a gray help card.

Verdict

I like this calculator, having a solid set of functions with adjustable programming space.   Having the 8K RAM card, which came with the calculator when I bought it, allows me store programs on the card without having to worry about storage space as much.

There are several things I have to get used to: the program steps scroll horizontally instead of vertically, and both the break (BRK) and halt (HLT) operate differently from the modern definition.  Thankfully both the operating and programming manuals are still available online through the Datamath website.

The price point is pretty high at $200.00, as the TI-95 Procalc was set as Texas Instruments' high end programmable keystroke programmable.

The Datamath page has an emulator:  http://www.datamath.org/Graphing/TI-95.htm

Eddie

Source:

Woerner, Joerg.  "Texas Instruments TI-95 PROCALC"  Datamath  http://www.datamath.org/Graphing/TI-95.htm  Last Edited December 5, 2001.  Accessed June 22, 2020.

All original content copyright, © 2011-2020.  Edward Shore.   Unauthorized use and/or unauthorized distribution for commercial purposes without express and written permission from the author is strictly prohibited.  This blog entry may be distributed for noncommercial purposes, provided that full credit is given to the author.

Sunday, July 5, 2020

Casio fx-991EX and fx-115ES Plus: Velocity Conversions

Casio fx-991EX and fx-115ES Plus: Velocity Conversions

The Casio fx-991EX Classwiz and Casio fx-115ES Plus calculators, among others, have 40 conversions in various areas. 

Keystrokes

Keystrokes: Casio fx-115ES Plus

[ SHIFT ] [ 8 ], enter the required two digit code

The conversions we'll be working with this blog entry:

ft → m, 03
m → ft, 04
yd → m, 05
m → yd, 06
mile → km, 07
km → mile, 08
km/hr → m/s, 19
m/s → km/hr, 20

Keystrokes:  Casio fx-991EX Classwiz

[ SHIFT ] [ 8 ].    The conversions will be grouped by category (length, area, volume, etc).

ft → m, 1, 3
m → ft, 1, 4
yd → m, 1,5
m → yd, 1,6
mile → km, 1, 7
km → mile, 1, 8
km/hr → m/s, ↓, 1, 1
m/s → km/hr, ↓, 1, 2

km/hr  (kilometers per hour) vs mph (miles per hour)

The calculators mentioned does not have a direct conversion between km/hr and mph.  However, because the time frame is the same (per hour), we can use the km/mile conversions (since 1 hour = 1 hour and no time conversion part is required, only the length).

Example 1:  150 km/hr to mph

150 km>mile returns 93.20567884

150 km/hr = 9320567884 mph

Example 2:  65 mph to km/hr

65 mile>km = 104.60736

65 mph = 104.60736 km/hr

More Examples

Example 3:  5.8 ft/s to m/s

Again, since the time portion is the same (second to second), we only have to worry about length.

5.8 ft>m returns 1.76784

5.8 ft/s = 1.76784 m/s

Example 4:  110 ft/s to km/hr

Now we are converting both length and time.   There are no direct time conversions on the calculators featured, so we have to use the manual conversion. 

Remember that 1 hr = 3600 s and 1 km = 1000 m. To convert from m to km, divide by 1000 and to convert from 1/s to 1/hr, multiply by 3600 (note: 1/s to 1/hr)

(110 ft>m) ÷ 1000 × 3600 returns 120.7008

110 ft/s = 120.7008 km/hr

Example 5:  40 m/s to km/hr

Here is another example where we both have to convert the length (m to km) and time component (1/s to 1/hr).   This is similar to the Example 3.  However, the Casio calculators featured on this blog has conversions between m/s and km/hr (velocity section).

40 m/s>kh/hr returns 144 km/hr

40 m/s = 144 km/hr

Example 6:  100 ft^2 to m^2

The calculators have two area conversions (acre/m^2).   However, we can use the same length conversion twice to make other areas.

100 ft>m ft>m returns 9.290304

100 ft^2 = 9.290304 m^2

Example 7:  1 mi to yd by using the conversions available

(1 mi>km × 1000) m>yd returned 1760

(1 km = 1000 m)

1 mi = 1760 yd

A Cautionary Tale

Example 8:  1 acre to ft^2

1 acre>m^2 m>ft m>ft returns 43559.99545

However, as defined, 1 acre = 43560 ft^2. 

Lesson:  use caution when chaining conversions, 100% accuracy isn't guaranteed.

Eddie

All original content copyright, © 2011-2020.  Edward Shore.   Unauthorized use and/or unauthorized distribution for commercial purposes without express and written permission from the author is strictly prohibited.  This blog entry may be distributed for noncommercial purposes, provided that full credit is given to the author

Friday, July 3, 2020

Casio fx-9750GIII: Sequence of Rotated Points

Casio fx-9750GIII: Sequence of Rotated Points

Introduction

The program ROTSEQ generates a 2 row matrix from the sequence:

[ [ x_n+1 ] [ y_n+1 ] ] = A * [ [ cos θ, -sin θ ] [ sin θ, cos θ ] ] * [ [ x_n ] [ y_n ] ]

The required inputs are:
You will set the angle mode to Degree, Radian, or Gradian
A = multiplier
θ = angle
x1 = initial x point
y1 = initial y point
N = number of steps

Casio fx-9750GIII Program ROTSEQ

This can be used on most if not every modern Casio Graphing calculator.

"EWS 2020-06-07"
Menu "ANGLE","DEGREE",1,"RADIAN",2,"GRADIAN",3
Lbl 1:Deg:Goto 4
Lbl 2:Rad:Goto 4
Lbl 3:Gra:Goto 4
Lbl 4
"F=A*MAT*[[X][Y]]"
"A"?->A
"θ"?->θ
"X1"?->X
"Y1"?->Y
"STEPS"?->N
[[X][Y]]->Mat A
Mat A->Mat B
For 1->I To N
[[cos θ,-sin θ][sin θ,cos θ]]*Mat A->Mat A
Augment(Mat B,Mat A)->Mat B
Next
"FINAL RESULTS:"◢
Mat B

Example

A = 0.5
θ = 10 grads  (Gradian mode)
x1 = 1
y1 = -1
N = 5  (5 steps)

I don't think I ever used gradian angle units on this blog before, so why not?

Results are shown and rounded to 2 decimal places

Mat B:

[ 1.00   1.14   1.26   1.34   1.40   1.41 ]
[ -1.00  -0.83  -0.64 -0.44  -0.22  0.00 ]

The next blog post will be on July 5 since tomorrow will be the 4th of July (Happy Birthday, United States). 

Eddie

All original content copyright, © 2011-2020.  Edward Shore.   Unauthorized use and/or unauthorized distribution for commercial purposes without express and written permission from the author is strictly prohibited.  This blog entry may be distributed for noncommercial purposes, provided that full credit is given to the author.

Sunday, June 28, 2020

Numworks Python Scripts: Basic Graphics

Numworks Python Scripts:  Basic Graphics

Script:  atari.py

Draws the basic-eight color palette of the classic 1977 Atari 2600.

Atari Palette Python Script
Atari Palette Python Script


from math import *
from kandinsky import *
# 2020-05-28 atari 2600 colors
# kandinsky module

fill_rect(0,0,320,240,color(245,245,245))

fill_rect(15,15,55,55,color(0,0,0))
fill_rect(85,15,55,55,color(255,0,0))
fill_rect(155,15,55,55,color(255,255,0))
fill_rect(15,85,55,55,color(255,0,255))
fill_rect(155,85,55,55,color(0,255,0))
fill_rect(15,155,55,55,color(0,255,255))
fill_rect(85,155,55,55,color(0,0,255))
fill_rect(155,155,55,55,color(255,255,255))

draw_string("8",107,107)


Script:  firstdigit.py

The tenths digit from n random numbers is extracted and a bar chart is generated based on the results.  I recommend a sample size of at least 20.

firstdigit script example (sample = 100)
A Sample of 100 data points



from math import *
from random import *
from matplotlib.pyplot import *

# set up lists
x=[0,1,2,3,4,5,6,7,8,9]
y=[0,0,0,0,0,0,0,0,0,0]

# user iput
print("EWS 2020-05-29")
print("Bar Chart: First Digit")
print("Recommended at least 20")
n=int(input("n? "))

# generate list
for i in range(n):
  s=int(random()*10)
  y[s]=y[s]+1

# bar plot
h=int(n/2)
d=-int(h/4)
axis([-0.5,9.5,d,h])
bar(x,y)

# turn axis off
axis("off")

# labels at the bottom
# results at top
m=max(y)
for i in range(10):
  text(i-0.25,d+1,str(i))
  text(i-0.25,m+2,str(y[i]))
  
show()

Script:  colorfulrings.py

The script cycles through a set of nine colors, four times.   The Kandinsky module is used to generate the flowery circles as well as cycle through the colors.  This module works with integer pixels.

Color rings script in progress
Color rings script in progress


from math import *
from kandinsky import *
from time import *

# color lists
r=[255,255,255,0,0,0,51,128,255]
g=[0,102,255,128,255,0,102,128,255]
b=[0,0,0,0,0,255,255,128,255]

# angles
a=list(range(128))
for i in range(128):
  a[i]=i/128*2*pi

# draw circles
for k in range(36):
  n=int(fmod(k,9))
  for j in range(50):
    for i in range(128):
      x=int(160+(20+j)*cos(a[i]))
      y=int(120+(20+j)*sin(a[i]))
      set_pixel(x,y,color(r[n],g[n],b[n]))
  sleep(0.1)

Script:  modulusplot.py

Generate a pixel plot of the equation (x^n + y^n) mod m

Modulus Plot example, n = 3.9, m = 15.6
Input Screen  (n = 3.9, m = 15.6)

Modulus Plot result, n = 3.9, m = 15.6
Modulus Plot result, n = 3.9, m = 15.6


from math import *
from kandinsky import *
print("EWS 2020-05-28")
print("x**n + y**n mod m")
n=float(input("power? "))
m=float(input("modulus? "))

for x in range(320):
  for y in range(240):
    t=fmod(pow(x,n)+pow(y,n),m)  
    c=floor(t/m*255)
    set_pixel(x+1,y+1,color(c,c,c))


Eddie

BLOG UPDATE:
The HP Prime:  Conversion to Binary and IEEE-754 Binary blog entry that was posted on June 27, 2020 may contain errors.  In this case, I have taken that entry back to draft status and my intention is to repost the entry as soon as I can.  Apologies for any inconvenience. 

All original content copyright, © 2011-2020.  Edward Shore.   Unauthorized use and/or unauthorized distribution for commercial purposes without express and written permission from the author is strictly prohibited.  This blog entry may be distributed for noncommercial purposes, provided that full credit is given to the author.

Sunday, June 21, 2020

TI-84 Plus CE: Bitwise Operations

TI-84 Plus CE:  Bitwise Operations

Introduction

The programs NOT, AND, OR, and XOR are presented for the TI-84 Plus CE for integer in decimal base.

NOT

For integers x > 0, the NOT function is defined as:

Σ( 2^n * ( floor(x/2^n) mod 2 + 1 ) mod 2 ) from n = 0 to floor(log(x)/log(2))

However, observing the NOT operation on scientific calculators, the not function can  be used for integers:

-(x + 1)

TI-84 Plus CE Program NOT

"2020-05-11 EWS"
Disp "NOT(X), X>0"
Prompt X
­(X+1)→N
Disp "NOT X = ",N

Examples:

NOT 192:  Returns -193

NOT -52:  Returns 51

AND

For positive integers x, y and for x ≥ y, the AND function is defined as:

Σ( 2^n * ( [ floor(x/2^n) mod 2 ] * [ floor(y/2^n) mod 2 ] ) from n = 0 to floor(log(x)/log(2))


TI-84 Plus CE Program AND

"2020-05-11 EWS"
Disp "X AND Y, X≥Y"
Prompt X,Y
0→T
For(N,0,X-fPart(X))
(X/2^N)-fPart(X/2^N)→A
2*fPart(A/2)→A
(Y/2^N)-fPart(Y/2^N)→B
2*fPart(B/2)→B
T+2^N*A*B→T
End
Disp T

Examples:

145 AND 37:  Returns 1

226 AND 125:  Returns 96

OR

For positive integers x, y and for x ≥ y, the OR function is defined as:

Σ( 2^n *
[ [ ( floor(x/2^n) mod 2) + ( floor(y/2^n) mod 2 ) + ( floor(x/2^n) mod 2 * floor(y/2^n) mod 2) ] mod 2 ] from n = 0 to floor(log(x)/log(2))

TI-84 Plus CE Program OR

"2020-05-11 EWS"
Disp "X OR Y, X≥Y"
Prompt X,Y
0→T
For(N,0,X-fPart(X))
(X/2^N)-fPart(X/2^N)→A
2*fPart(A/2)→A
(Y/2^N)-fPart(Y/2^N)→B
2*fPart(B/2)→B
T+2^N*2*fPart((A+B+A*B)/2)→T
End
Disp T

Examples:

145 OR 37:  Returns 181

226 OR 125:  Returns 255

XOR

For positive integers x, y and for x ≥ y, the XOR function is defined as:

Σ( 2^n * [ [ floor(x/2^n) + floor(y/2^n) ] mod 2 ]  from n = 0 to floor(log(x)/log(2))

TI-84 Plus CE Program XOR

"2020-05-11 EWS"
Disp "X XOR Y, X≥Y"
Prompt X,Y
0→T
For(N,0,X-fPart(X))
(X/2^N)-fPart(X/2^N)→A
2*fPart(A/2)→A
(Y/2^N)-fPart(Y/2^N)→B
2*fPart(B/2)→B
T+2^N*2*fPart((A+B)/2)→T
End
Disp T

Examples:

145 XOR 37:  Returns 180

226 XOR 125:  Returns 159

Eddie

Source:

“Bitwise Operation”  Wikipedia.  Page last edited May 10, 2020.  Accessed on May 11, 2020.
Link:  https://en.wikipedia.org/wiki/Bitwise_operation

Eddie

All original content copyright, © 2011-2020.  Edward Shore.   Unauthorized use and/or unauthorized distribution for commercial purposes without express and written permission from the author is strictly prohibited.  This blog entry may be distributed for noncommercial purposes, provided that full credit is given to the author.

Saturday, June 20, 2020

HP 41C: Decimal Bitwise Operations

HP 41C: Decimal Bitwise Operations

The document covers the following operations:

NOT:  for integers
AND:  for positive integers
OR:  for positive integers
XOR:  for positive integers
Simple conversions between Binary and Decimal bases (integers up to 1023)

No extra or additional modules required.  Should work for the Swiss Micros DM41 and any emulators.

Download the PDF here: https://drive.google.com/file/d/1g7fhB4ehH0CNMizKOGpZ7bJTcLfBIVUA/view?usp=sharing

Eddie

All original content copyright, © 2011-2020.  Edward Shore.   Unauthorized use and/or unauthorized distribution for commercial purposes without express and written permission from the author is strictly prohibited.  This blog entry may be distributed for noncommercial purposes, provided that full credit is given to the author.

Sunday, June 14, 2020

TI-84 Plus CE: Complex Recurring Sequences

TI-84 Plus CE:  Complex Recurring Sequences

The program CMPXSEQ generates a matrix table for the complex recurring series:

C = (P + B * Q) / (1 + A)

where:
P and Q are complex constants
A = z_0
B = z_1
C = z_2

Restated, this recursion series becomes:

z_2 = (P + z_1* Q) / (1 + z_0)

In its current operating system (5.4.0), the TI-84 Plus CE's recurring sequence graphing mode cannot accept complex numbers.   Therefore a program is required.  Furthermore, matrices on the TI-84 Plus CE do not handle complex numbers.   It is required to break the complex numbers into parts.   For completeness I added both the rectangular and the polar parts of complex numbers:  real part, imaginary part, radius, and angle (dependent on angle mode).

TI-84 Plus CE Program CMPXSEQ  (text)

"EWS 2020-04-28"
ClrHome
a+bi
Disp "C=(P+B*Q)/(1+A)","COMPLEX","C=Z(N), B=Z(N-1), A=Z(N-2)"
Prompt P,Q
Input "Z0?",A
Input "Z1?",B
Input "NO OF STEPS?",N
{5,N+1}→dim([E])
For(I,0,N)
(P+Q*B)/(1+A)→C
I→[E](1,I+1)
real(C)→[E](2,I+1)
imag(C)→[E](3,I+1)
abs(C)→[E](4,I+1)
angle(C)→[E](5,I+1)
B→A
C→B
End
[E]^T→[E]
Disp "RESULT = [E]","[REAL,IMAG,ABS,ANGLE]"


Results are stored in matrix E.  ^T is the transpose function. 

Examples

Tables generated using the LibreOffice Numbers desktop app and results verified with the TI-84 Plus CE. 

Example 1:
P = 1
Q = i
z_0 = A = 2i
z_1 = B = -2



Example 2:
P = -i
Q = 1
z_0 = A = 2i
z_1 = B = -2



Example 3:
P = 1-i
Q = 1+i
z_0 = A = 2i
z_1 = B = -2



Have a great Sunday and week,

Eddie

All original content copyright, © 2011-2020.  Edward Shore.   Unauthorized use and/or unauthorized distribution for commercial purposes without express and written permission from the author is strictly prohibited.  This blog entry may be distributed for noncommercial purposes, provided that full credit is given to the author.

Retro Review: TI-95 Procalc

Retro Review:  TI-95 Procalc  This review covers the calculator itself, not any of the optional accessories which includes a ...