Calendar printing |
Printing a year's calendar does not sound like
a big deal, but the friendly competition between the TI-59 and the HP-41C owners
produced masterpiece programs. The contest started in May 1978, when Jaren
Weinberger and Lou Cargile
wrote a TI-59 program able to print a calendar in 34 minutes. Panos
Galidas managed to cut that time to 5.5 minutes, but Roger Hill's HP-41C program, published in July-August 1980 issue
of PPC Journal, produced a calendar in 2 minutes 17 sec (to be honest,
HP-41C printout looked better). After many iterations, Palmer Hanson wrote
a fast mode calendar-printing program that seemed unbeatable - 1 minute 32
sec (read Palmer Hanson's story about those
programs). Yet, Roger Hill finally won the contents with 1 minute 14 sec HP-41C program.
Well, win some, lose some... |
Chess program |
One of those things everybody finds
impossible... until they happen. Writing a chess program on a 1 KB
computer like ZX-81 is a great challenge, but a chess program for a 1 KB
TI-59 using symbolic code (higher level language compared to assembler) is a true
masterpiece. The program 'Schach 2.1' was written by Michael Sperber and
published in TI PPC Notes v7n7/8p20-22. It followed all the rules of chess
and could even defeat an inexperienced chess player... if he lives long
enough to see all the moves (it usually took 3-6 hours per move). |
Fast mode |
It refers to the technique to disable the display refresh and make the
calculator run twice as fast... but with some restrictions, like not being
able to call subroutines. The way to enter fast mode (PGM 02
SBR 240) was discovered by Martin Neef (Zepra club) in May 1980, and more advanced method using
STF IND 7 INV at the end of program memory (or h12 code) was discovered in
1982 by Patrick Accosta. In the late TI-59 days, most of the programs were
designed to run in the fast mode. |
Firmware listing |
Besides solid-state ROMs, TI-59 had some internal symbolic
language software built in the calculator itself. These internal programs
implemented advanced statistical and other functions. Using OP 09 PGM 02
R/S R/S R/S OP 17 GTO 000 OP 17 R/S P/R LRN sequence, Stefen Seitz found a way to single step and
analyze that internal software.
Similar tricks were later used to synthesize hex codes. |
Hex codes |
TI-59 data and program storage were interchangeable - using
Op 17 instruction you could turn program steps into data registers or vice-versa, eight program steps per register. However, eight program steps
took two bits less then the data register, so it was possible to insert
'undefined' instruction codes at each step whose position is divisible by 8. By varying extra bits, programmers were able to execute internal instructions. Hex codes were discovered by Patrick
Acosta (TI PPC
Notes v6n9/10p14), and Dejan Ristanovic decoded some of the 'new' instructions
(TI PPC Notes v7n6p8). The discovery occurred in the late TI-59 days, so
most of the hex
code did not find practical use. |
HIR registers |
In addition to (up to) 100 data registers, TI-59 had eight
internal registers used for advanced arithmetic calculations (when you
evaluate 1+2*(3+4*(5+6)) expression, you have to store constants (1, 2, 3
& 4) somewhere in order to calculate 5+6), statistic functions and
printing. Using artificially synthesized instruction code 82 (mnemonic HIR,
Hierarchical Internal Register), it was possible to access internal
registers and use them as additional storage space. The first digit of the
code following HIR instruction defined the operation (0 for store, 1 for
recall, 3 for sum etc) while the other digit determined the
register (0-7). HIR 20 instruction used in the firmware was never
decoded, but was considered to be some kind of conditional return.
HIR registers were discovered by Heinrich Schnepf (see
52-Notes v2n9p1). |
Graphics mode |
The PC100C printer was a character-oriented device, so it was
not possible to plot high-resolution graphics. However, Michael Sperber,
Gerald Schlueter and Johann Berger discovered
that h25 (h stands for hex) code halted the printing operation, so only
the top
three pixels of the
characters got printed. By carefully choosing characters, programmers
were able to design fascinating output (for that time, anyway). Hi-res
printing was combined with the fast mode by Harald M. Otto (TI PPC Notes
v6n6/7p3), and Dejan Ristanovic wrote the Fast Mode Scribbler program (TI PPC Notes
v9n3p18-21) that enabled the user to design larger pictures made of multiple
tape strips. |
Jump during execution |
The TI-59 was not actually designed for arcade games - the
running program could not acquire any information from the keyboard, and the
only active key, R/S, suspended program execution. Martin Neef found a way to use
R/S not to halt the running program, but to start a ROM program instead
(see TI PPC Notes v5n7p11). Dejan Ristanovic found a way to use this
feature to control program execution (see TI PPC Notes v6n9/10p31) and wrote
'5/10 start' and 'TI-59 Super test' programs using this feature. |
Speedy Factor Finder |
Finding factors of the integer somehow
fascinated the TI-59 community. Many Speedy Factor Finder programs were written
since v5n7p6 of TI PPC Notes. Modulo 210 Speedy Factor Finder
in Fast mode was written by Patrick Acosta (v6n4-5p13), and Palmer
Hanson's final masterpiece, Modulo 30 Speedy Factor Finder, was published
in TI PPC Notes v8n5p19-23. |