.if SYSPAGE = ODD .pn pref C- .pn 1

Appendix C: TI-66 Tricks and Tips

This appendix describes one of the special features of the TI-66 that was used in this document. Also described is a way to increase the speed of the TI-66. Because this last subject is probably more interesting for most users than anything else, I will start with a description of it. Finally it contains a rather important note about the PC-200 printer.

Increasing the speed of the TI-66

Introduction

When you compare the speed of a TI-66 with that of the TI-59 [in Normal Mode] using this very simple program: .sk .ce 1 + 1 + 1 + ... (94 more times 1 +) ... 1 + 1 + 1 + RST

you will notice that the TI-59 will count to about 800 in one minute, but that the TI-66 only counts to about 346.

A method of increasing the speed of the TI-66

To solve the problem of the low execution speed, you need an soldering-iron, preferrably a very small one. [I used a 6 Volt, 6 Watt type] You also need a resistor of 47K&OMC., 1/16 Watt. [It could be possible that you need 56K&OMC., and it might even be possible to use 39K&OMC., but I haven't tested that value myself]

When you have found such a resistor, you can open your TI-66 and replace the 180K&OMC resistor, which can be found next to the CPU, the small square chip with legs on all four sides, with it. Having done so, you will find that your TI-66 will operate (using a 47K&OMC. resistor) about 2.15 times faster than it did before the modification, so that it now counts to about 740. .sk

ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ Performing the above modification is completely at your own  ³
³ risk. It is likely to void any warranty, so be very careful! ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

Short form addressing on the TI-66

By now you must have noticed that all of the TI-66 programs in this book use sequences of the form, .sk .ce GTO xx or X=T yy or DSZ 0n zz

with the xx, yy and zz placed directly after the (un-)conditional jump. The credits for the discovery of this possibility go to Dave Leising, who first mentioned in TI\PPC Notes V9N1P8-9. In an article on those pages Dave wrote the following: .sk :lq. ALTERNATE TI-66 ADDRESSING MODES

When a GTO or a SBR is encountered while running a TI-66 program the operating system looks at the immediately following location to determine the transfer address. If a non-numeric code is found the system assumes that label addressing is to be used. If the location contains a code of numeric significance, either the numeric mnemonics 0 through\9, or the absolute address mnemonics 00 through\99, then absolute addressing is assumed and the system looks for a sufficient number of numerically significant mnemonics to form an absolute address. In normal operation the LRN mode will assemble the instruction GTO\123 into three locations as GTO\01\23. But, by an appropriate key-in sequence, say GTO\A Del\1\2\3, the user can assemble a four step GTO which will also transfer the program to location\123.

If an insufficient number of numerically significant mnemonics to generate a full three digit address follow the GTO or SBR then some very interesting things begin to happen. In general, the program counter is first set to the address defined by the incomplete numeric value, the instruction immediately following the insufficient numeric mnemonics is executed, and the program control is transferred to the new location of the program counter. If the instruction following the insufficient numerics is a multipart instruction (STO, STF, GTO, etc.) the pending syntax is preserved and completed by the code at the destination address. This feature, which is not described in the manual for the TI-66, would seem to provide some powerful and versatile programming options. Rules for use and examples follow:

Rules:

  1. GTO MN X, where MN is the address mnemonic 00 through 09 and X is an instruction code, will go to MN and execute X.
  2. GTO MN X, where MN is the address mnemonic 10 through 99 and X is an instruction code, will go to MN but will not execute X.
  3. GTO M X, where M is the numeric mnemonic 0 through 9 and X is an instruction code, will go to M and execute X.
  4. GTO M N X, where M and N are numeric mnemonics 0 through 9 and X is an instruction code, will go to MN and execute X.
  5. GTO M N P X, where M, N and P are numeric mnemonics 0 through 9 and X is an instruction code, will go to MNP but not execute X.
  6. In cases where GTO (address) X yields the execution of X, and X is a multipart instruction, the pending syntax will be preserved through the transfer and will be completed by the code at the transfer address.
  7. In cases where GTO (address) yields the execution of X, and X is a user-defined keycode (A through E'), the subroutine X will be executed, but upon return control will be transferred to location (address)\+\1, not to the calling location\+\1.
  8. In cases where GTO (address) X yields the execution of X, sequences of the form .sk .ce (address) GTO (address) GTO

    will cause a machine crash if the code starts at (address).
    [Recovery from this situation is possible by turning the machine off. Robert AH Prins]

  9. In all cases where GTO (address) X yields execution of X, the execution of X takes place after the program counter is set to (address). It is as if instruction X is executed at the location (address) without it really being there or changing in any way the code located at (address).
  10. GTO can be replaced by SBR in the above rules. In the case of the crash syntax (rule 8 above), the crash will continue until six levels of subroutine are exceeded, then a halt upon error will occur.
:elq

Some examples of short form addressing

The examples below also come from Dave's article.

  1. a.\Write code starting at location 085: 1\\5\\R/S
    b.\Write code starting at location 100: LBL\\B\\4\\5\\GTO\\8\\5\\STO .in +3 .sk (Note: You can get the sequence GTO\\8\\5\\STO without any deletes due to the automatic insert function in LRN. You can simply press GTO\\STO\\BST\\8\\5) .in -3 .of 3 .sk c.\Go out of LRN and press B. The calculator will stop with 45 in the display. Press CLR and RCL 15 and again see 45 in the display, indicating that the sequence stored 45 in data register 15. .of
  2. a.\Write code starting at location 000: LBL\\A\\(sequence)\\RTN
    b.\Write code starting at location 085: R/S\\R/S\\R/S
    c.\Write code starting at location 100: LBL\\B\\GTO\\8\\5\\A .of 3 d.\Go out of LRN and press B. The sequence of subroutine A will be executed, and the return will be to the R/S at location 86 (85\+\1 per rule\7 above). The calculator will stop at location 087 after executing the R/S at location 086. .of .fo off
  3. a.\Write code starting at location 000: 00\\GTO\\00\\GTO, or 0\\\GTO\\0\\\GTO .fo on b.\Press RST and then R/S. The calculator will crash (rule 8).
  4. a.\Be sure there is no R/S code at location 045.
    b.\Write code starting at location 100: LBL\\C\\GTO\\4\\5\\R/S .of 3 c.\Go out of LRN and press C. A halt will occur with the program counter at location 046, as if the R/S at location 105 had been at location 045. .of

The above possibilities are caused by the fact that the TI-66 makes a clear distinction between function and address mnemonics. .cp 10

A PC-200 Anomaly

If you have a PC-200 printer for the TI-66, you cannot use it to print the results of EPF1, EPe1 and EPR2, due to the fact that the PC-200 can only print eight digits. This is not mentioned in the (Dutch) manual, but most users will discover it very quickly.