Skip to main content

  | मौसम…

411 समाचार
Public archive edition · Attributed source reporting with original dates · AI drafts are excluded

411 REFERENCE · Wikibooks

TI 83 Plus Assembly/Input

Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.

Input There are three ways to receive input from an assembly program on your TI-83+. The first two are ROM calls, and the last one is directly interfacing with the calculator's keypad. The ROM calls These are two routines called with the b_call() macro. They are both good ways to receive input. GetKey This routine will wait for the user to press a key, and only when the user does, will it return to the main program. What is nice about this routine is that it processes [2nd] and [Alpha] key presses for you. Parameters: None Returns:Key value in the accumulator To see a list of the codes, click here Example: .include "ti83plus.inc" . . . waitForUser: bCall(_GetKey) ; [x]Or: rst $28 \ .dw $4972 ; [x]Or: bCall($4972) cp kEnter jr nz,waitForUser jr continue continue: . . . So, the example is a simple program that pauses execution until the user presses the [Enter] key. GetCSC This routine is like the GetKey routine, except for two things. The first is that, unlike the GetKey routine, it will not wait for the user to press a key. The second is that it uses a different set of key codes, which you can find here. Also, it does not process key combinations, but you can make your own parser for them. Parameters: None Returns:Key Code in accumulator if key was pressed, else 0 (In the accumulator). Example: .include "ti83plus.inc" . . . waitForUserCSC: bCall(_GetCSC) cp 0 jr z,waitForUserCSC jr nz,continue continue: . . . This example waits until ANY key is pressed. Direct Input Note:This is a more advanced method, because it deals directly with the keyboard driver. The keypad of the TI 83+ calculator is divided into Seven sections. These are: The arrow keys [ENTER], going vertically to [CLEAR] [(-)], going vertically to [VARS] [.], going vertically to [DEL] [0], going vertically to [MODE] [STO->], going vertically to [2ND] [Y=], going horizontally to [GRAPH] To read a value from the keys of a group, you must first turn the group on. This is done by writing to port 1 (01 hex.). Bit 0 - Group 1 Bit 1 - Group 2 Bit 2 - Group 3 And so on. To turn a group on, you set its designated bit to 0 (zero). Example: . . . waitForUserInputDirect: ; You cannot write an actual value to one of the ports. You must forward it through the (a) register. ; Use group '1' ld a,%11111101 out ($01),a ; Read in a value in a,($01) ; Test bit 0 (Enter) bit 0,a ; If true, goto continue jr z,continue ; Else jr waitForUserInputDirect continue: . . . It does the same thing as the previous two examples. Note that this method does not require any ROM calls, and is less readable. For a list of keycodes, go here.