Content deleted Content added
Citation bot (talk | contribs) Add: title. Changed bare reference to CS1/2. | Use this bot. Report bugs. | Suggested by BrownHairedGirl | Linked from User:BrownHairedGirl/Articles_with_bare_links | #UCB_webform_linked 2062/2189 |
m →top: HTTP to HTTPS for SourceForge |
||
(7 intermediate revisions by 2 users not shown) | |||
Line 1:
{{One source|date=March 2025}}
'''Keystroke programming''' describes a specific way of programming by which each keystroke on a device or application is recorded in some way and then played back so that the recorded key-presses can be repeated multiple times. Keystroke programming is most commonly but not exclusively found in [[programmable calculator]]
==
[[File:TI58c.jpg|thumb|The TI-58C]]
The Texas Instruments [[TI-59 / TI-58|TI-58
{| class="wikitable"
|----
! ||''x''1||''x''2||''x''3||''x''4||''x''5
Line 60 ⟶ 61:
You can see that the codes 85, 95 and 91 correspond to the positions of the keys labelled {{TI-5x/Keys/Yellow| + }}, {{TI-5x/Keys/Yellow| {{=}} }} and {{TI-5x/Keys/Brown|R/S}} on the grid above, but the code for the {{TI-5x/Keys/White| 2 }} is not 83 as you would expect from the grid position, but 02. This last code was chosen to be more easily understandable by a human trying to read the program. There is no row 0, so the codes 00 .. 09 are used to represent the keys {{TI-5x/Keys/White| 0 }} .. {{TI-5x/Keys/White| 9 }}.
=== Context-
These TI calculators allowed for addressing up to 100 data memory locations, numbered 00 to 99 (some models had a lower limit than this). A keystroke sequence like {{TI-5x/Keys/Brown|STO}} {{TI-5x/Keys/White| 4 }} {{TI-5x/Keys/White| 2 }} (store the currently-displayed number into memory 42) would be encoded as 42 42. In this case the first 42 is the key code for the {{TI-5x/Keys/Brown|STO}} key, but the second 42 is not a key code, but a memory register number. The calculator knows to interpret it as such because that's what has to follow the code for the {{TI-5x/Keys/Brown|STO}} key.
Line 70 ⟶ 71:
Most of the keys on the keypad can be used as symbolic labels. For example, sequences like {{TI-5x/Keys/Brown|GTO}} {{TI-5x/Keys/Brown|STO}} and {{TI-5x/Keys/Brown|GTO}} {{TI-5x/Keys/Brown|GTO}} are legitimate, provided that {{TI-5x/Keys/Brown|STO}} and {{TI-5x/Keys/Brown|GTO}} have in fact been defined as labels somewhere in the program.
=== Modifier
Most of the keys had multiple functions, depending on whether {{TI-5x/Keys/Brown|INV}} or {{TI-5x/Keys/Yellow|2nd}} had been pressed beforehand. {{TI-5x/Keys/Brown|INV}} invoked the "inverse" (whatever that meant) of the following function, and was recorded in a program as a separate keystroke (code 22), while {{TI-5x/Keys/Yellow|2nd}} invoked a completely different function which was written on the keypad faceplate just above the key. For example, pressing {{TI-5x/Keys/Yellow|2nd}} {{TI-5x/Keys/Brown|x<sup>2</sup>}} invoked the {{TI-5x/Keys/Alt|sin}} function, while {{TI-5x/Keys/Brown|INV}} {{TI-5x/Keys/Yellow|2nd}} {{TI-5x/Keys/Brown|x<sup>2</sup>}} (or {{TI-5x/Keys/Brown|INV}} {{TI-5x/Keys/Alt|sin}}) gave you the arcsine.
Line 76 ⟶ 77:
The code for this alternate function is derived from that of the original key function by adding 5 to the units digit (''without'' carry to the tens digit). Thus, the key codes corresponding to the position of the {{TI-5x/Keys/Yellow|2nd}} key itself (21 and 26) are never used as opcodes. Here is the table of the codes produced with the {{TI-5x/Keys/Yellow|2nd}} prefix:
{| class="wikitable"
|----
! ||''x''6||''x''7||''x''8||''x''9||''x''0
Line 109 ⟶ 110:
|}
=== Merged
The {{TI-5x/Keys/Alt|Ind}} key allows for indirection: wherever a reference to a memory register or a program ___location is allowed, this key can be used to fetch the actual value from a memory register. For example, the key sequence {{TI-5x/Keys/Brown|RCL}} {{TI-5x/Keys/Alt|Ind}} {{TI-5x/Keys/White| 1 }} {{TI-5x/Keys/White| 0 }} means to fetch the value in memory register 10, and use that value in turn as the number of a memory register whose contents are to be fetched as the current operand. However, in this case the {{TI-5x/Keys/Alt|Ind}} cannot be encoded as code 40, because the code sequence 43 40 would be interpreted as {{TI-5x/Keys/Brown|RCL}} {{TI-5x/Keys/White| 4 }} {{TI-5x/Keys/White| 0 }}, not {{TI-5x/Keys/Brown|RCL}} {{TI-5x/Keys/Alt|Ind}}.
Line 115 ⟶ 116:
But, because of the use of the 00 .. 09 codes for the {{TI-5x/Keys/White| 0 }} .. {{TI-5x/Keys/White| 9 }} keys, the codes 62-64, 72-74, 82-84 and 92 are available for other uses. So most of these are reallocated to represent ''op'' {{TI-5x/Keys/Alt|Ind}} sequences:
{| class="wikitable"
|----
! ||''x''2||''x''3||''x''4
|