<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://wikiti.brandonw.net/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wikiti.brandonw.net/index.php?action=history&amp;feed=atom&amp;title=86%3APorts%3A01</id>
		<title>86:Ports:01 - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://wikiti.brandonw.net/index.php?action=history&amp;feed=atom&amp;title=86%3APorts%3A01"/>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=86:Ports:01&amp;action=history"/>
		<updated>2026-04-05T21:06:37Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.23.5</generator>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=86:Ports:01&amp;diff=11831&amp;oldid=prev</id>
		<title>Zeroko: Based on 83Plus:Ports:01, changed key labels &amp; added battery level</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=86:Ports:01&amp;diff=11831&amp;oldid=prev"/>
				<updated>2021-09-20T19:47:19Z</updated>
		
		<summary type="html">&lt;p&gt;Based on 83Plus:Ports:01, changed key labels &amp;amp; added battery level&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Category:86:Ports:By_Address|01 - Keyboard]] [[Category:86:Ports:By_Name|Keyboard]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Port Number:''' 01h&lt;br /&gt;
&lt;br /&gt;
'''Function:''' Keyboard Port&lt;br /&gt;
&lt;br /&gt;
This port reads key presses from the keypad. The keypad is divided into a series of groups.&lt;br /&gt;
&lt;br /&gt;
See also [[83Plus:Ports:01|TI-83 Plus Port 01]], which is identical apart from the key labels &amp;amp; the lack of battery level detection.&lt;br /&gt;
&lt;br /&gt;
=== Read Values ===&lt;br /&gt;
* 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.&lt;br /&gt;
* Bit 0 will also read as 0 if groups 0-2 are all selected &amp;amp; the battery level is low.&lt;br /&gt;
&lt;br /&gt;
=== Write Values ===&lt;br /&gt;
* FFh : Reset the keypad. This unselects all groups and resets the keypad state.&lt;br /&gt;
* F8h : Check battery level. This also selects keypad groups 0-2 for monitoring.&lt;br /&gt;
* 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 0, otherwise it reads 1 (active-low).&lt;br /&gt;
&lt;br /&gt;
== Key Map ==&lt;br /&gt;
The key map is laid out as follows:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
! Group Bit&lt;br /&gt;
| 0 || 1 || 2 || 3 || 4 || 5 || 6 || 7&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
! Group Mask&lt;br /&gt;
| FE || FD || FB || F7 || EF || DF || BF || 7F&lt;br /&gt;
|-&lt;br /&gt;
! Key Bit !! (Mask)&lt;br /&gt;
|-&lt;br /&gt;
! 0 !! (FE)&lt;br /&gt;
| DOWN||ENTER|| (-)  ||  .  ||  0  ||     || F5  ||     ||&lt;br /&gt;
|-&lt;br /&gt;
! 1 !! (FD)&lt;br /&gt;
| LEFT||  +  ||  3   ||  2  ||  1  || STO || F4  ||     ||&lt;br /&gt;
|-&lt;br /&gt;
! 2 !! (FB)&lt;br /&gt;
|RIGHT||  -  ||  6   ||  5  ||  4  ||  ,  || F3  ||     ||&lt;br /&gt;
|-&lt;br /&gt;
! 3 !! (F7)&lt;br /&gt;
| UP  ||  *  ||  9   ||  8  ||  7  || x&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; || F2  ||     ||&lt;br /&gt;
|-&lt;br /&gt;
! 4 !! (EF)&lt;br /&gt;
|     ||  /  ||  )   ||  (  || EE  || LN  || F1  ||     ||&lt;br /&gt;
|-&lt;br /&gt;
! 5 !! (DF)&lt;br /&gt;
|     ||  ^  || TAN  || COS || SIN || LOG || 2nd ||     ||&lt;br /&gt;
|-&lt;br /&gt;
! 6 !! (BF)&lt;br /&gt;
|     ||CLEAR||CUSTOM||PRGM ||TABLE||GRAPH||EXIT ||     ||&lt;br /&gt;
|-&lt;br /&gt;
! 7 !! (7F)&lt;br /&gt;
|     ||     ||      || DEL ||x-VAR||ALPHA||MORE ||     ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* '''Note:''' Group FB Key FE is NEGATE, not to be confused with SUBTRACT.&lt;br /&gt;
* '''Note:''' Group DF Key FE would be ON, but the ON key is tested through [[86:Ports:03|Port 03]], bit 3.&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
* The OS delays about 1400 cycles (100 iterations of a tight DJNZ loop) when checking the battery level at startup, which is much longer than used to test if keys are pressed.&lt;br /&gt;
* Bit 0 will be 0 when testing the battery level if the warning message would appear. However, because it is still also wired to the keypad, holding any of DOWN, ENTER, or (-) when turning the calculator on will also cause the warning message to appear.&lt;/div&gt;</summary>
		<author><name>Zeroko</name></author>	</entry>

	</feed>