Difference between revisions of "83Plus:Ports:01"

From WikiTI
Jump to: navigation, search
m (Comments: TI-83 note)
(Fixed table for 800x600)
Line 16: Line 16:
 
The key map is laid out as follows:
 
The key map is laid out as follows:
  
  <nowiki>             Group Bit ->    0    1    2    3    4    5    6    7
+
  <nowiki>         Group Bit ->    0    1    2    3    4    5    6    7
              Group Mask ->  FE    FD    FB    F7    EF    DF    BF    7F
+
        Group Mask ->  FE    FD    FB    F7    EF    DF    BF    7F
 
Key Bit (Mask)
 
Key Bit (Mask)
0 (FE)                   | DOWN|ENTER| (-) |  .  |  0  |    |GRAPH|    |
+
0 (FE)               | DOWN|ENTER| (-) |  .  |  0  |    |GRAPH|    |
1 (FD)                   | LEFT|  +  |  3  |  2  |  1  | STO |TRACE|    |
+
1 (FD)               | LEFT|  +  |  3  |  2  |  1  | STO |TRACE|    |
2 (FB)                   |RIGHT|  -  |  6  |  5  |  4  | LN  |ZOOM |    |
+
2 (FB)               |RIGHT|  -  |  6  |  5  |  4  | LN  |ZOOM |    |
3 (F7)                   | UP  |  *  |  9  |  8  |  7  | LOG |WIND |    |
+
3 (F7)               | UP  |  *  |  9  |  8  |  7  | LOG |WIND |    |
4 (EF)                   |    |  /  |  )  |  (  |  ,  | x^2 | Y=  |    |
+
4 (EF)               |    |  /  |  )  |  (  |  ,  | x^2 | Y=  |    |
5 (DF)                   |    |  ^  | TAN | COS | SIN |x^-1 | 2nd |    |
+
5 (DF)               |    |  ^  | TAN | COS | SIN |x^-1 | 2nd |    |
6 (BF)                   |    |CLEAR|VARS |PRGM |APPS |MATH |MODE |    |
+
6 (BF)               |    |CLEAR|VARS |PRGM |APPS |MATH |MODE |    |
7 (7F)                   |    |    |    |STAT |X,T..|ALPHA| DEL |    |</nowiki>
+
7 (7F)               |    |    |    |STAT |X,T..|ALPHA| DEL |    |</nowiki>
  
NOTE: Group FB Key FE is NEGATE, not to be confused with SUBTRACT.
+
* '''Note:''' Group FB Key FE is NEGATE, not to be confused with SUBTRACT.
NOTE: Group DF Key FE could be ON, but the ON key is tested elsewhere (a "special case" key - after all, it is the ON key).
+
* '''Note:''' Group DF Key FE could be ON, but the ON key is tested elsewhere (a "special case" key - after all, it is the ON key).
NOTE: Group EF Key BF (APPS) is called MATRIX on the TI-83.
+
* '''Note:''' Group EF Key BF (APPS) is called MATRIX on the TI-83.
  
 
== Example ==
 
== Example ==

Revision as of 10:52, 27 March 2005

Synopsis

Port Number: 01h

Function: Keyboard Port

This port controls the on-calc keypad. The keypad is divided into a series of groups.

Read Values

  • Bits are set according whether corresponding keys from selected groups are pressed. Groups are selected through writing to the port. A pressed key reads a 0 bit. An unpressed key reads a 1 bit. The port reads FF after a reset (write FF).

Write Values

  • $FF : Reset the keypad. This unselects all groups and resets the keypad state.
  • Anything else : Any 0 bit adds the corresponding group to the list of monitored groups. When a key in a monitored group is pressed, the corresponding key bit reads 1.

Comments

The key map is laid out as follows:

         Group Bit ->     0     1     2     3     4     5     6     7
         Group Mask ->   FE    FD    FB    F7    EF    DF    BF    7F
Key Bit (Mask)
0 (FE)               | DOWN|ENTER| (-) |  .  |  0  |     |GRAPH|     |
1 (FD)               | LEFT|  +  |  3  |  2  |  1  | STO |TRACE|     |
2 (FB)               |RIGHT|  -  |  6  |  5  |  4  | LN  |ZOOM |     |
3 (F7)               | UP  |  *  |  9  |  8  |  7  | LOG |WIND |     |
4 (EF)               |     |  /  |  )  |  (  |  ,  | x^2 | Y=  |     |
5 (DF)               |     |  ^  | TAN | COS | SIN |x^-1 | 2nd |     |
6 (BF)               |     |CLEAR|VARS |PRGM |APPS |MATH |MODE |     |
7 (7F)               |     |     |     |STAT |X,T..|ALPHA| DEL |     |
  • Note: Group FB Key FE is NEGATE, not to be confused with SUBTRACT.
  • Note: Group DF Key FE could be ON, but the ON key is tested elsewhere (a "special case" key - after all, it is the ON key).
  • Note: Group EF Key BF (APPS) is called MATRIX on the TI-83.

Example

ld a, 0FFh ;Reset the keypad.
out (1), a
ld a, 0FEh ;Select group 0.
out (1), a
in a, (1) ;Test for keys.
and 0FDh ;Test for Left Arrow key by making A 0 if left was pressed.
call z, LeftArrowPressed ;If 0 then left was pressed.
ld a, 0FFh ;Reset the keypad.
out (1), a