Post Reply 
TI-66 double speed mod
07-06-2022, 05:08 PM (This post was last modified: 07-06-2022 05:19 PM by Nigel (UK).)
Post: #1
TI-66 double speed mod
The TI-66 calculator is a nice machine to look at (see this thread for pictures and a discussion) but it is just so slow! After entering each program instruction there's a big pause while the calculator sorts itself out; even the simple counting program below only counts up to 46 in 10 seconds.

I couldn't find anything online about how to make it go faster so I decided to try myself. There is only one plausible component to play with - a 180k resistor near one corner that connects two processor pins.
  • Shorting this resistor leads to a non-functioning calculator.
  • Adding a 22k resistor in parallel with it gives a non-blank display, but nothing works.
  • Adding a 68k resistor in parallel (see picture) leads to a working calculator with a speed roughly two times faster than without the resistor. Yessss!
I decided to quit while I was ahead. Maybe 56k or even 47k might work, but it seems likely that any further speed-up would be small.

[Image: TI-66_smaller2.jpg?raw=1]

Running the program "+ 1 RST" for ten seconds gives 46 on the unmodified calculator compared with 89 on the speedy version.

The pauses when entering program code are noticeably less on the faster calculator, making it more pleasant to use.

Current consumption for both calculators is zero when off and \(25\,\mu\rm A\) when waiting for key input. When a program is running, current consumption rises to \(75\,\mu\rm A\) on the unmodified calculator and \(111\,\mu\rm A\) on the faster machine. This is less of a rise than I expected and the current draw remains tiny. I don't expect any noticeable effect on battery life.

Of course, if you have the printer that goes with this calculator I assume that the interface will no longer work. For most TI-66 owners this won't be a problem!

Enjoy.

Nigel (UK)
Find all posts by this user
Quote this message in a reply
07-06-2022, 07:51 PM (This post was last modified: 07-06-2022 07:54 PM by Steve Simpkin.)
Post: #2
RE: TI-66 double speed mod
Very cool Nigel! I wonder how much faster you could make this by adding an even smaller value resistor (between 22k and 68k).

For reference, I noted the following counting speeds (running for 10 seconds) of a couple of HPs I had handy.

I was using a program similar to the following and let it run for 10 seconds.
01 1
02 +
03 GTO 01

Results:
HP-25 (1977): Count = 52
HP-12C (1987): Count =56
HP 35s (2012): Count =243


The following post from Gene Wright shows counts of addition looping over a 60 second time period for many models. When possible he used a faster counting program than I did.
https://www.hpmuseum.org/cgi-sys/cgiwrap...?read=1002


Other calculator benchmarks:
https://www.hpmuseum.org/cgi-sys/cgiwrap...i?read=700
https://www.thimet.de/CalcCollection/Cal...mance.html
Visit this user's website Find all posts by this user
Quote this message in a reply
07-06-2022, 09:55 PM
Post: #3
RE: TI-66 double speed mod
(07-06-2022 07:51 PM)Steve Simpkin Wrote:  The following post from Gene Wright shows counts of addition looping over a 60 second time period for many models. When possible he used a faster counting program than I did.
https://www.hpmuseum.org/cgi-sys/cgiwrap...?read=1002


Other calculator benchmarks:
https://www.hpmuseum.org/cgi-sys/cgiwrap...i?read=700
https://www.thimet.de/CalcCollection/Cal...mance.html

Thanks for these links!

For the addition loop in the first link I get 420 loops in one minute, as opposed to 210 for the unmodified calculator.

I haven't tried the n-queens test in the second link as it would probably take almost an hour. However, running the alternative "simple test" the calculator manages 118 loops in one minute, as opposed to 57.

In the third test, the execution time of the program is 17s as opposed to 34.7s.

So in every case the modification has doubled the speed! Good to know.

One interesting fact - in the second link, an n-queens time is listed for "TI-66 Turbo x2.7"! This suggests that I can decrease the resistor further and speed things up by about a third. I may investigate this further tomorrow.

Nigel (UK)
Find all posts by this user
Quote this message in a reply
07-07-2022, 03:03 AM
Post: #4
RE: TI-66 double speed mod
Any tips on opening up the machine? I see only one screw on the back and I'm guessing that's for the battery.
Find all posts by this user
Quote this message in a reply
07-07-2022, 07:26 AM
Post: #5
RE: TI-66 double speed mod
No, the screw holds the case together. The battery cover can be prised open with a flat edge. Remove the batteries, then remove the screw. Then just gently prise the two halves of the case apart - they are held together with clips. If all you want to do is to change the resistor there’s no need to go any further.

Nigel (UK)
Find all posts by this user
Quote this message in a reply
07-07-2022, 08:30 AM
Post: #6
RE: TI-66 double speed mod
Thanks Nigel,

I took your advice and made the upgrade.
Only issue for me was I had a physically larger (1/2W) 68K resistor, so I wired it in and nestled it in some heat-shrink tubing next to the batteries. Works great!

The machine is now pleasant to use. The delay used to be annoying even in manual calculations.

It makes a nice handy desk calculator for me. I grew up (high-school) with a TI-59, so the programming paradigm is familiar and comfortable. And I don't have to take out my 59 and bang it around in daily use.

-J
Find all posts by this user
Quote this message in a reply
07-07-2022, 11:20 AM
Post: #7
RE: TI-66 double speed mod
(07-07-2022 08:30 AM)John Garza (3665) Wrote:  Thanks Nigel,

I took your advice and made the upgrade.
Only issue for me was I had a physically larger (1/2W) 68K resistor, so I wired it in and nestled it in some heat-shrink tubing next to the batteries. Works great!

The machine is now pleasant to use. The delay used to be annoying even in manual calculations.

It makes a nice handy desk calculator for me. I grew up (high-school) with a TI-59, so the programming paradigm is familiar and comfortable. And I don't have to take out my 59 and bang it around in daily use.

-J
I'm pleased to hear that the modification works on another machine without problems!

I've been trying smaller resistors this morning to see how much further the speed can increase. Changing the 68 k resistor to 47k produced only a small further increase in speed. However, a parallel combination with a value of 31.4 k doubled the speed again; a further decrease to 30.3 k and the machine would no longer turn on.

Based on this, you can safely try resistors smaller than the 68k I initially used. However, unless you take the time to tune things carefully you risk either not going far enough to make much of a difference, or going too far and stopping the machine from working altogether. It's probable that the exact threshold varies from calculator to calculator; it might also vary with battery voltage. Personally I'm happy with the factor of two speed increase that the 68k resistor gives. It makes a real difference to the feel of the calculator while leaving an adequate safety margin.

One last comment - no matter what value you try for the parallel resistor, it doesn't seem to damage the calculator in any way. If it doesn't work with one value of resistance, remove the resistor and everything is all right once more!

Nigel (UK)
Find all posts by this user
Quote this message in a reply
07-07-2022, 01:07 PM
Post: #8
RE: TI-66 double speed mod
Odd how EE and ME can follow the same paths. The resistor experimentation reminds me again of high school and advancing the timing of my Datsun 240Z sports car. Too far and it sputters and misses ignition. Back a bit and ZOOM! The Goldilocks syndrome - it has to be tuned just right - and then a touch more on the conservative side to allow for other variables (temp/humidity/air density/etc.) All fun stuff! And although I like the calculator, I'm not too worried about damaging it - a whopping $29 on ebay. IIRC, my 59 cost ten times that, back in 1978 no less.
Find all posts by this user
Quote this message in a reply
07-07-2022, 04:15 PM (This post was last modified: 07-07-2022 04:23 PM by pauln.)
Post: #9
RE: TI-66 double speed mod
(07-06-2022 05:08 PM)Nigel (UK) Wrote:  After entering each program instruction there's a big pause while the calculator sorts itself out.

I agree, this is extremely annoying. The reason is that, in LRN mode, the TI-66 auto-inserts instructions instead of overriding them like the TI-59. So all the instructions after that instruction need to be shifted.

Explicit insertion ("Ins" key) is an expensive operation for the TI-59 (unless the current step is towards the end) and it is painfully slow for the TI-57.

Looking at http://rskey.org/hp65, it seems that HP-65 auto-inserts too. It is remarkable that they were able to do it without being painfully slow. I wonder how they did it...
Find all posts by this user
Quote this message in a reply
07-07-2022, 08:46 PM
Post: #10
RE: TI-66 double speed mod
(07-07-2022 04:15 PM)pauln Wrote:  
(07-06-2022 05:08 PM)Nigel (UK) Wrote:  After entering each program instruction there's a big pause while the calculator sorts itself out.

I agree, this is extremely annoying. The reason is that, in LRN mode, the TI-66 auto-inserts instructions instead of overriding them like the TI-59. So all the instructions after that instruction need to be shifted.

Explicit insertion ("Ins" key) is an expensive operation for the TI-59 (unless the current step is towards the end) and it is painfully slow for the TI-57.

Looking at http://rskey.org/hp65, it seems that HP-65 auto-inserts too. It is remarkable that they were able to do it without being painfully slow. I wonder how they did it...

Does that mean that programming the calculator might lead to store errors if it goes too fast?
Find all posts by this user
Quote this message in a reply
07-07-2022, 09:07 PM
Post: #11
RE: TI-66 double speed mod
Yes, some instructions may not get registered.

I think that auto-insert is, from an usability point of view, the right way to go, but the calculator needs to be fast enough.

That's why I'm surprised that the first programmable handheld, the HP-65, was able to achieve that. In contrast, the HP-25 overrides but it was a much more affordable device.
Find all posts by this user
Quote this message in a reply
07-07-2022, 10:23 PM
Post: #12
RE: TI-66 double speed mod
(07-07-2022 04:15 PM)pauln Wrote:  Looking at http://rskey.org/hp65, it seems that HP-65 auto-inserts too. It is remarkable that they were able to do it without being painfully slow. I wonder how they did it...

It’s due to the way the program memory is implemented on the HP-65:

The program memory is designed to act like a carousel. The memory is implemented in a dynamic shift register. Program words, a pointer, and a beginning-of-memory marker circulate continuously in this register, a complete circulation taking approximately 3.5 milliseconds. The pointer always points to the next program word and can move freely within the memory. Thus program steps can be inserted into the program or deleted from it at any point, without re-keying the other steps. Addressing is symbolic rather than absolute, and label-searching hardware is built into the program storage circuit.

From: The "Personal Computer": A Fully Programmable Pocket Calculator
Find all posts by this user
Quote this message in a reply
07-07-2022, 11:11 PM (This post was last modified: 07-07-2022 11:12 PM by Steve Simpkin.)
Post: #13
RE: TI-66 double speed mod
By the time the HP-41C was created, they needed to do something more sophisticated for memory management during program editing.
From the HP-41C manual:
   
Visit this user's website Find all posts by this user
Quote this message in a reply
07-07-2022, 11:22 PM (This post was last modified: 07-07-2022 11:25 PM by pauln.)
Post: #14
RE: TI-66 double speed mod
(07-07-2022 10:23 PM)Didier Lachieze Wrote:  From: The "Personal Computer": A Fully Programmable Pocket Calculator

Thanks for the reference! At first glance, I'm not sure I completely understand but I will take a closer look.

Looking at the specs of the HP-65, it seems that one can go to a label but not to specific step (for the TI-59, you can go to either).

If this is true, then I can see that they implemented (in hardware) the program steps as a (circular) linked list instead of as an array.

Linked lists are notoriously fast for insertion/deletion. They are slow if one needs to access the nth element, but for the HP-65, one just needs a table that maps each of the (10?) labels to an address.

I wonder if the HP-65 has a way to go to step n (not necessarily at runtime) to inspect a particular step. For the TI-57, one can do that (not a runtime) with "GTO 2nd n".
Find all posts by this user
Quote this message in a reply
07-08-2022, 02:17 AM
Post: #15
RE: TI-66 double speed mod
One problem with the linked list approach is that it needs 7 extra bits for each one of the 100 registers of the HP-65 (to point to the next step).

I guess this is why there is no a BST key in the HP-65 (it would require 7 extra bits per register to point to the previous step).

By the way, no BST key seems a huge flaw, unless I'm missing something.
Find all posts by this user
Quote this message in a reply
07-08-2022, 07:13 AM
Post: #16
RE: TI-66 double speed mod
Not having a BST (backstep) is a huge flaw in the modern programming paradigm. Not so much of a flaw back then. We were just coming out of the slide-rule era. One rarely used a slide rule by itself. For almost all serious problems, it required a desk and paper and pencil. The slide-rule was not the totality of the solution as modern computers are. It was an assistant. So... when most HP-65s were put to the task, the former slide-rule user carefully laid out his program on paper first - maybe making some corrections/enhancements along the way. Then, it would be keyed into the machine from the handwritten source code. In that mode, BST had less of a significance. It was only missed during debugging - but adding a few labels helped. And the code was generally much cleaner anyway as it was 'hand groomed' before entry.

Not having line numbers is also a nuisance, but since you had the handwritten code in front of you, it was rarely a problem during program development. The only problem I remember was if you had sections of code that were similar; you could actually be in one section, when you thought you were in the other. I looked at that as an incentive to write a subroutine. Smile
Find all posts by this user
Quote this message in a reply
07-08-2022, 07:48 AM (This post was last modified: 07-08-2022 08:01 AM by Didier Lachieze.)
Post: #17
RE: TI-66 double speed mod
(07-08-2022 02:17 AM)pauln Wrote:  One problem with the linked list approach is that it needs 7 extra bits for each one of the 100 registers of the HP-65 (to point to the next step).

The program memory in the HP-65 is not a RAM (random access memory) where each element has his own address, it's just a long register containing all steps sequentially, so there is no address pointer and no individual register. You can view it as a window to a circulating ring of instructions. You view the current one, then the next one and so on but they don't have an address you can use to jump to it. Markers in this flow of instructions are inserted to identify beginning/end of memory, next step to execute/fill and return location from subroutine. All is controlled by hardware and the flow is only going forward to the next instruction.

More details from the May 1974 issue of the Hewlett-Packard Journal:

The memory itself contains no absolute addresses. Instead, it is a circulating shift register organized into six-bit words. One word is a marker that denotes the boundary between the beginning and the end of the memory. Another word is a pointer which denotes the last step executed in run mode, and the last step filled in program mode. As a program runs, this pointer is moved down through memory. Branching is accomplished by moving the pointer to the location of the destination label. User-defined function calls are implemented by leaving the main pointer at the call and activating a second pointer at the function location (see Fig. 3). When the return to the calling location occurs, the second pointer is deactivated and the first pointer reactivated.

   
Find all posts by this user
Quote this message in a reply
07-08-2022, 05:16 PM
Post: #18
RE: TI-66 double speed mod
(07-06-2022 09:55 PM)Nigel (UK) Wrote:  For the addition loop in the first link I get 420 loops in one minute, as opposed to 210 for the unmodified calculator.

Thank you very much! I had a TI-59 for a short while back in day. From memory I notice the TI-66 was much slower, quite unpleasant to use. I’ve replaced the original 180K resistor with a 47K one.

Now I get 518 loops in one minute (previously 248).

+
1
RST
Find all posts by this user
Quote this message in a reply
07-08-2022, 06:04 PM
Post: #19
RE: TI-66 double speed mod
(07-08-2022 07:13 AM)John Garza (3665) Wrote:  Not having a BST (backstep) is a huge flaw in the modern programming paradigm. Not so much of a flaw back then. We were just coming out of the slide-rule era. One rarely used a slide rule by itself. For almost all serious problems, it required a desk and paper and pencil. The slide-rule was not the totality of the solution as modern computers are. It was an assistant. So... when most HP-65s were put to the task, the former slide-rule user carefully laid out his program on paper first - maybe making some corrections/enhancements along the way. Then, it would be keyed into the machine from the handwritten source code. In that mode, BST had less of a significance. It was only missed during debugging - but adding a few labels helped. And the code was generally much cleaner anyway as it was 'hand groomed' before entry.

Not having line numbers is also a nuisance, but since you had the handwritten code in front of you, it was rarely a problem during program development. The only problem I remember was if you had sections of code that were similar; you could actually be in one section, when you thought you were in the other. I looked at that as an incentive to write a subroutine. Smile

Thanks for the perspective.

I wonder if the HP-65 is the only programmable calculator ever (at least handheld) with no line numbers (even the HP-55 had them).

About the HP-65 forcing the programmer to write correct code from the start, it makes sense and I've heard similar stories from people who had to use punched cards back in the day.
Find all posts by this user
Quote this message in a reply
07-08-2022, 06:55 PM
Post: #20
RE: TI-66 double speed mod
(07-08-2022 06:04 PM)pauln Wrote:  I wonder if the HP-65 is the only programmable calculator ever (at least handheld) with no line numbers (even the HP-55 had them).

But the 65 predates the 55 by one year.

Greetings,
    Massimo

-+×÷ ↔ left is right and right is wrong
Visit this user's website Find all posts by this user
Quote this message in a reply
Post Reply 




User(s) browsing this thread: 1 Guest(s)