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

From WikiTI
Jump to: navigation, search
(Synopsis: Tried to clarify a little bit. ("control"))
(Comments: -- converted to table)
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
+
{|
        Group Mask ->  FE   FD   FB   F7   EF   DF   BF   7F
+
|
Key Bit (Mask)
+
! Group Bit
0 (FE)               | DOWN|ENTER| (-) |  .  |  0  |    |GRAPH|    |
+
| 0 || 1 || 2 || 3 || 4 || 5 || 6 || 7
1 (FD)               | LEFT|  +  |  3  |  2  |  1  | STO |TRACE|    |
+
|-
2 (FB)               |RIGHT|  -  |  6  |  5  |  4  | LN  |ZOOM |    |
+
|
3 (F7)               | UP  |  *  |  9  |  8  |  7  | LOG |WIND |    |
+
! Group Mask
4 (EF)               |    |  /  |  )  |  (  |  ,  | x^2 | Y=  |    |
+
| FE || FD || FB || F7 || EF || DF || BF || 7F
5 (DF)               |    |  ^  | TAN | COS | SIN |x^-1 | 2nd |    |
+
|-
6 (BF)               |    |CLEAR|VARS |PRGM |APPS |MATH |MODE |    |
+
! Key Bit !! (Mask)
7 (7F)               |    |    |    |STAT |X,T..|ALPHA| DEL |    |</nowiki>
+
|-
 +
! 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<sup>2</sup> || Y=  ||    ||
 +
|-
 +
! 5 !! (DF)
 +
|    ||  ^  || TAN || COS || SIN ||x<sup>-1</sup> || 2nd ||    ||
 +
|-
 +
! 6 !! (BF)
 +
|    ||CLEAR||VARS ||PRGM ||APPS ||MATH ||MODE ||    ||
 +
|-
 +
! 7 !! (7F)
 +
|    ||    ||    ||STAT ||X,T,&#952;,''n''||ALPHA|| DEL ||    ||
 +
|}
  
 
* '''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.

Revision as of 19:57, 27 March 2005

Synopsis

Port Number: 01h

Function: Keyboard Port

This port reads key presses from the 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) / ) ( , x2 Y=
5 (DF) ^ TAN COS SIN x-1 2nd
6 (BF) CLEAR VARS PRGM APPS MATH MODE
7 (7F) STAT X,T,θ,n 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