<?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/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Aquanight</id>
		<title>WikiTI - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wikiti.brandonw.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Aquanight"/>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Special:Contributions/Aquanight"/>
		<updated>2026-05-13T21:06:56Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.23.5</generator>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Talk:Z80_Instruction_Set</id>
		<title>Talk:Z80 Instruction Set</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Talk:Z80_Instruction_Set"/>
				<updated>2006-11-28T04:49:30Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We could probably just use one of the publically available instruction set lists to save the time and trouble of typing everything out again.&lt;br /&gt;
--Dan 00:28, 22 Dec 2005&lt;br /&gt;
&lt;br /&gt;
:Emacs.&lt;br /&gt;
:Anyway, what you've got so far is not particularly clear, and doesn't really present the important information.  I'm thinking of a series of tables something like this:&lt;br /&gt;
 &lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
! Oct !! Hex !! Instruction !! States !! Clock !! S !! Z !! X !! H !! Y !! P !! N !! C&lt;br /&gt;
|-&lt;br /&gt;
| 100 || 40 || ld b, b || OCF(4) || 4 || - || - || - || - || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| 101 || 41 || ld b, c || OCF(4) || 4 || - || - || - || - || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| 102 || 42 || ld b, d || OCF(4) || 4 || - || - || - || - || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| 103 || 43 || ld b, e || OCF(4) || 4 || - || - || - || - || - || - || - || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:A quick reference for people who actually know what they're doing.  For those who don't, these tables should of course be accompanied by detailed descriptions of what the various opcodes actually do.&lt;br /&gt;
:Any comments before I go and waste a few hours wikifying the rest of the Z80 instruction set?&lt;br /&gt;
::Perhaps we can be more intelligent about this and not do this by hand? At least have some source file and then we have a nice program we auto-generate the list from? I sure don't want you wasting hours wikifying the instruction set, no matter how good vi might be. ;-) --[[User:JasonM|JasonM]] 14:13, 30 Dec 2005 (PST)&lt;br /&gt;
:Please don't use parentheses for anything other than indirection!&lt;br /&gt;
:[[User:FloppusMaximus|FloppusMaximus]] 12:28, 23 Dec 2005 (PST)&lt;br /&gt;
::Is providing an octal representation actually useful for anything?&lt;br /&gt;
&lt;br /&gt;
:A binary representation would be more useful -- [[User:Jib|Jib]]&lt;br /&gt;
&lt;br /&gt;
::You're right, it could be.  Of course octal is useful -- just take a look at a complete table of the instructions; everything is grouped by eights and sixty-fours.  So I know that 1''r'' ''s'' = LD ''r'',''s'', or that 3''a''6 ''nnn'' = ALU(''a'') ''nnn'', or that 3''z''7 = RST 0''z''0, or less obviously that 3''c''0 = RET ''c''.  Much easier to remember than hexadecimal.  But that's just me.  I think you're right, binary would be better. [[User:FloppusMaximus|FloppusMaximus]] 15:53, 25 Dec 2005 (PST)&lt;br /&gt;
:::Can we just do both? I think I have enough screen real-estate. --[[User:JasonM|JasonM]] 14:13, 30 Dec 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
:Since I coded the Z80 core of PindurTI from scratch, I have some useful information at my disposal that I hunted down from various places on the web, especially regarding flags. A big table would be the most effective method in my opinion, I'll start building something on my user page. [[User:CoBB|CoBB]] 02:52, 25 Feb 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
Considering the length of the table, would it be a good idea to repeat the column headers every so often (so people don't have to scroll all the way back up to see what order the flags are in, for example - easy to get lost with such narrow columns)? -- [[User:Aquanight|Aquanight]] 20:49, 27 November 2006 (PST)&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:RAM:8039</id>
		<title>83:RAM:8039</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:RAM:8039"/>
				<updated>2006-03-12T22:12:16Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: Reverted edit of Lnhcdx, changed back to last version by AndyJ&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83:RAM:By_Address|8039 - OP Registers]] [[Category:83:RAM:By_Name|OP Registers]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' OP Registers&lt;br /&gt;
&lt;br /&gt;
'''Memory Address:''' 8039h&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 66 bytes&lt;br /&gt;
&lt;br /&gt;
In this RAM area the value of op1 to op6 is stored, each &amp;quot;register&amp;quot; getting 11 bytes.&lt;br /&gt;
&lt;br /&gt;
'''OP Equates:'''&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;OP1         EQU                 8039h&lt;br /&gt;
OP2         EQU                 8044h&lt;br /&gt;
OP3         EQU                 804Fh&lt;br /&gt;
OP4         EQU                 805Ah&lt;br /&gt;
OP5         EQU                 8065h&lt;br /&gt;
OP6         EQU                 8070h&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:RAM:8E29</id>
		<title>83:RAM:8E29</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:RAM:8E29"/>
				<updated>2006-02-10T23:32:19Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: Reverted edit of 69.253.230.157, changed back to last version by AndyJ&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83:RAM:By_Address|8E29 - plotSScreen]] [[Category:83:RAM:By_Name|plotSScreen]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' plotSScreen&lt;br /&gt;
&lt;br /&gt;
'''Memory Address:''' 8E29h&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 768 bytes.&lt;br /&gt;
&lt;br /&gt;
This area of memory stores the contents of the graph screen.&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=MediaWiki_talk:Mispeelings</id>
		<title>MediaWiki talk:Mispeelings</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=MediaWiki_talk:Mispeelings"/>
				<updated>2006-01-16T18:17:28Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Like this one! :P &amp;lt;nowiki&amp;gt;&amp;lt;/obligatory&amp;gt;&amp;lt;/nowiki&amp;gt; --[[User:Aquanight|Aquanight]] 10:17, 16 Jan 2006 (PST)&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:Ports:30</id>
		<title>83Plus:Ports:30</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:Ports:30"/>
				<updated>2005-07-22T14:32:08Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: Last I checked, the 83+SE had crystal timers too...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:Ports:By_Address|30 - Timer1 Speed]] [[Category:83Plus:Ports:By_Name|Timer1 Speed]]&lt;br /&gt;
{{SE-Only Port|10}}&lt;br /&gt;
{{wikify}}&lt;br /&gt;
&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Port Number:''' 30&lt;br /&gt;
&lt;br /&gt;
'''Function:''' Timer1 Speed&lt;br /&gt;
&lt;br /&gt;
                                                                                                                                                                                                                                                               &lt;br /&gt;
Frequencies for timers on SE.&lt;br /&gt;
&lt;br /&gt;
There seem to be some programmable timers on the 83P SE.  In fact, &lt;br /&gt;
there seem to be three of them.  The timers themselves are eight bit, &lt;br /&gt;
and with their setup ports, they run 3 ports each: from 30h to 38h.&lt;br /&gt;
The first port in each set of three is the speed/timer select port.&lt;br /&gt;
It determines which clock to use for the timer, and the frequency of&lt;br /&gt;
the timer.&lt;br /&gt;
The second port has only two bits for input.  If bit 0 is reset, the&lt;br /&gt;
timer will stop timing when it reaches zero (the timers are &lt;br /&gt;
count-down).  If bit 0 is set, it will just go on forever.  If bit 1 is&lt;br /&gt;
set, the calculator will crash when the counter expires (what this is&lt;br /&gt;
actually doing, I have no clue) ((This is probably generating an interrupt and was crashing because it was an old OS version that wasn't set up to handle it)).  If you've got it running on forever,&lt;br /&gt;
bit 2 will be set when the timer underflows.  You can check this flag&lt;br /&gt;
to see when the timer has gone through 256 cycles, and reset it by&lt;br /&gt;
outputting a value of 1 to the port again.&lt;br /&gt;
The third port is the actual timer.  On input, it just returns the&lt;br /&gt;
current value of the timer.  On output, it sets the value for the.&lt;br /&gt;
If you're just going on forever, the value doesn't matter much, but if&lt;br /&gt;
you want it to count down to zero and then stop (bit 0 of the second&lt;br /&gt;
port reset), you'll want to output the value to start from.  The&lt;br /&gt;
counter will not start automatically once you set the first two ports.&lt;br /&gt;
You must output a number to the third port for the timer to start.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On the speed port, 30h, 33h, or 36h, the top two bits determine what&lt;br /&gt;
clock to use for the timer.  00 = none, 01 = xtal, 10 = CPU clock&lt;br /&gt;
11 = ???? A combination of both xtal and CPU clock?&lt;br /&gt;
When using CPU clock, it'll be either 6 MHZ or 15 MHZ, depending on&lt;br /&gt;
what speed the CPU is currently running at.&lt;br /&gt;
&lt;br /&gt;
(Note: The particular program I used to test this was not very accurate&lt;br /&gt;
at very low frequencies, so the 10 HZ and 8 HZ are very rough.&lt;br /&gt;
Actually, everything is very rough, but those, more so.)&lt;br /&gt;
&lt;br /&gt;
xtal freqs - There are three significant bits, bits 3/4/5 don't seem&lt;br /&gt;
to do anything.&lt;br /&gt;
40h - 10882.56 HZ&lt;br /&gt;
41h - 990.72 HZ&lt;br /&gt;
42h - 97.28 HZ&lt;br /&gt;
43h - 10 HZ&lt;br /&gt;
44h - 32706.56 HZ (natural xtal frequency, close to 32.768 khz)&lt;br /&gt;
45h - 2042.88 HZ (close to 2048 HZ)&lt;br /&gt;
46h - 125.44 HZ (close to 128 HZ)&lt;br /&gt;
47h - 8 HZ&lt;br /&gt;
&lt;br /&gt;
So....It seems to go 10000 -&amp;gt; 1000 -&amp;gt; 100 -&amp;gt; 10.  Then 2^15 -&amp;gt; 2^11 -&amp;gt;&lt;br /&gt;
2^7 -&amp;gt; 2^3.  In practice it seems that everything seems to be a small&lt;br /&gt;
bit slower than it should be &amp;quot;ideally&amp;quot;, and I'm going to take the fact&lt;br /&gt;
that my 40h frequency is actually above 10K as a fluke, probably caused&lt;br /&gt;
by human error.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CPU clock freqs - These are a factor (of a power of two) of the main&lt;br /&gt;
CPU clock.&lt;br /&gt;
80h      - CPU&lt;br /&gt;
81h      - CPU/2&lt;br /&gt;
82h/83h  - CPU/4&lt;br /&gt;
84h-87h  - CPU/8&lt;br /&gt;
88h-8Fh  - CPU/16&lt;br /&gt;
90h-9Fh  - CPU/32&lt;br /&gt;
A0h-BFh  - CPU/64&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:Basic:If</id>
		<title>83Plus:Basic:If</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:Basic:If"/>
				<updated>2005-07-19T19:48:09Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:Basic:Conditionals|If(...Then(...Else)...End)]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Token Size:''' 1 byte&lt;br /&gt;
&lt;br /&gt;
'''Syntax:'''&lt;br /&gt;
 If ''condition''&lt;br /&gt;
 ''command''&lt;br /&gt;
&lt;br /&gt;
 If ''condition''&lt;br /&gt;
 Then&lt;br /&gt;
 ''commands''&lt;br /&gt;
 End&lt;br /&gt;
&lt;br /&gt;
 If ''condition''&lt;br /&gt;
 Then&lt;br /&gt;
 ''commands''&lt;br /&gt;
 Else&lt;br /&gt;
 ''commands-else''&lt;br /&gt;
 End&lt;br /&gt;
&lt;br /&gt;
In the first from, ''command'' is executed if and only ''condition'' evaluates to anything other than 0. In the second form and third form, ''commands'' is also executed if and only if ''condition'' is not zero. In the third form, if ''condition'' is zero, ''commands-else'' is executed.&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
Repeated use of a Goto statement within an If:Then statement will cause an increase in memory allocation, leading to program slowdowns and eventually a MEMORY error. For example, the following code will eventually cause an error:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;0-&amp;gt;X ;-&amp;gt; == STO operator&lt;br /&gt;
Lbl 0&lt;br /&gt;
If 1&lt;br /&gt;
Then&lt;br /&gt;
X+1-&amp;gt;X&lt;br /&gt;
Disp X&lt;br /&gt;
Goto 0&lt;br /&gt;
End&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you must use a Goto within an If:Then statement, it is possible to trick the 83+ into thinking the block ended by jumping to an otherwise unused label that uses an End statement followed by a jump to the proper label. For example, the above program could be rewritten like so:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;0-&amp;gt;X&lt;br /&gt;
Lbl 0&lt;br /&gt;
If 1&lt;br /&gt;
Then&lt;br /&gt;
X+1-&amp;gt;X&lt;br /&gt;
Disp X&lt;br /&gt;
Goto 2&lt;br /&gt;
End&lt;br /&gt;
Return&lt;br /&gt;
&lt;br /&gt;
Lbl 2&lt;br /&gt;
End&lt;br /&gt;
Goto 0&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would avoid the problem by causing the 83+ to terminate the If:Then block prior to jumping.&lt;br /&gt;
&lt;br /&gt;
Since TI-BASIC has no equivalent of what real BASIC calls Select Case, multiple Ifs must be used in cases where a variable needs to be checked against multiple values.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
A particular example is a keyloop.&lt;br /&gt;
Assuming a keycode was stored in K, a sequence of If statements would compare K to the corresponding integer key value.&lt;br /&gt;
&lt;br /&gt;
 If K=21&lt;br /&gt;
 Disp &amp;quot;2ND&amp;quot;&lt;br /&gt;
 If K=31&lt;br /&gt;
 Disp &amp;quot;ALPHA&amp;quot;&lt;br /&gt;
 If K=22&lt;br /&gt;
 Disp &amp;quot;MODE&amp;quot;&lt;br /&gt;
 If K=32&lt;br /&gt;
 Disp &amp;quot;X,T,''&amp;amp;theta;'',''n''&amp;quot; ;''&amp;amp;theta;'' == Alpha+0. To get the italic n, switch to Seq mode and press the X,T,''&amp;amp;theta;'',''n'' key or choose it from the Catalog.&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:Basic:If</id>
		<title>83Plus:Basic:If</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:Basic:If"/>
				<updated>2005-07-19T15:33:44Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:Basic:Conditionals|If]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Token Size:''' 1 byte&lt;br /&gt;
&lt;br /&gt;
'''Syntax:'''&lt;br /&gt;
 If ''condition''&lt;br /&gt;
 ''command''&lt;br /&gt;
&lt;br /&gt;
 If ''condition''&lt;br /&gt;
 Then&lt;br /&gt;
 ''commands''&lt;br /&gt;
 End&lt;br /&gt;
&lt;br /&gt;
If the specified condition evaluates to a real number equal to 0, ''command'' is skipped. If the condition evalutes to a real number not equal to 0, ''command'' is executed. ''command'' may be a single command, or it can be the command '''Then''', in which case all commands until a corresponding '''End''' token are part of ''command''.&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
Repeated use of a Goto statement within an If:Then statement will cause an increase in memory allocation, leading to program slowdowns and eventually a MEMORY error. For example, the following code will eventually cause an error:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;0-&amp;gt;X ;-&amp;gt; == STO operator&lt;br /&gt;
Lbl 0&lt;br /&gt;
If 1&lt;br /&gt;
Then&lt;br /&gt;
X+1-&amp;gt;X&lt;br /&gt;
Disp X&lt;br /&gt;
Goto 0&lt;br /&gt;
End&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you must use a Goto within an If:Then statement, it is possible to trick the 83+ into thinking the block ended by jumping to an otherwise unused label that uses an End statement followed by a jump to the proper label. For example, the above program could be rewritten like so:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;0-&amp;gt;X&lt;br /&gt;
Lbl 0&lt;br /&gt;
If 1&lt;br /&gt;
Then&lt;br /&gt;
X+1-&amp;gt;X&lt;br /&gt;
Disp X&lt;br /&gt;
Goto 2&lt;br /&gt;
End&lt;br /&gt;
Return&lt;br /&gt;
&lt;br /&gt;
Lbl 2&lt;br /&gt;
End&lt;br /&gt;
Goto 0&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would avoid the problem by causing the 83+ to terminate the If:Then block prior to jumping.&lt;br /&gt;
&lt;br /&gt;
Since TI-BASIC has no equivalent of what real BASIC calls Select Case, multiple Ifs must be used in cases where a variable needs to be checked against multiple values.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
A particular example is a keyloop.&lt;br /&gt;
Assuming a keycode was stored in K, a sequence of If statements would compare K to the corresponding integer key value.&lt;br /&gt;
&lt;br /&gt;
 If K=21&lt;br /&gt;
 Disp &amp;quot;2ND&amp;quot;&lt;br /&gt;
 If K=31&lt;br /&gt;
 Disp &amp;quot;ALPHA&amp;quot;&lt;br /&gt;
 If K=22&lt;br /&gt;
 Disp &amp;quot;MODE&amp;quot;&lt;br /&gt;
 If K=32&lt;br /&gt;
 Disp &amp;quot;X,T,''&amp;amp;theta;'',''n''&amp;quot; ;''&amp;amp;theta;'' == Alpha+0. To get the italic n, switch to Seq mode and press the X,T,''&amp;amp;theta;'',''n'' key.&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:Hooks:9B9C</id>
		<title>83Plus:Hooks:9B9C</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:Hooks:9B9C"/>
				<updated>2005-07-19T00:31:25Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: Fixed flag link.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:Hooks:By_Name|Font Hook]] [[Category:83Plus:Hooks:By_Address|9B9C - Font Hook]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Name:''' Font Hook&lt;br /&gt;
&lt;br /&gt;
'''Hook Pointer Block Address:''' [[83Plus:RAM:9B9C|9B9C]]&lt;br /&gt;
&lt;br /&gt;
'''Hook Enable BCALL:''' [[83Plus:BCALLs:4FE4|4FE4]]&lt;br /&gt;
&lt;br /&gt;
'''Hook Disable BCALL:''' [[83Plus:BCALLs:4FE7|4FE7]]&lt;br /&gt;
&lt;br /&gt;
'''Hook Call BCALL:''' [[83Plus:BCALLs:4003|4003]]&lt;br /&gt;
&lt;br /&gt;
'''Hook Active Flag:''' [[83Plus:Flags:35#Bit_5|5, (iy + 35h)]]&lt;br /&gt;
&lt;br /&gt;
This hook allows you to change the font bitmaps; for example, it is used for [http://www.detachedsolutions.com/omnicalc/ Omnicalc]'s custom fonts.&lt;br /&gt;
&lt;br /&gt;
== Using the Hook ==&lt;br /&gt;
This hook is called when a character is about to be displayed. A = 0 for small font, 1 for large font, 2 for small font width and 3 for something unknown. B contains the character. If you want to use the default characters (or rather, the bitmaps provided by the [[83Plus:Hooks:9BCC|localize hook]]), return with zero reset. If you do this, HL '''must''' be left intact. Otherwise, set HL pointing to the font data, which must be in RAM. If you want to, you can copy data to [[83Plus:RAM:8462|sFont_record]] and [[83Plus:RAM:845A|lFont_record]], and then point HL to this location. Of course, you can use any location you want.&lt;br /&gt;
&lt;br /&gt;
* In small font:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;(HL) = width of character&lt;br /&gt;
(HL+1) = first (accent) row, right aligned (the last pixel usually clear)&lt;br /&gt;
(HL+2) = second row&lt;br /&gt;
...&lt;br /&gt;
(HL+6) = sixth row&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 (HL+7) = seventh row (only displayed with bit [[83Plus:Flags:05#Bit_1|textEraseBelow, (iy+textFlags)]] set)&lt;br /&gt;
* In large font:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;(HL) = first row, right aligned&lt;br /&gt;
...&lt;br /&gt;
(HL+6) = seventh row&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See the example code for actual formatted data.&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
This hook is one of the four &amp;quot;official&amp;quot; hooks defined in ti83plus.inc.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
The following code displays the letter A in boldface:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;FontHook:&lt;br /&gt;
        .db 83h             ; Required for all hooks&lt;br /&gt;
        or a                ; is it small or large font?&lt;br /&gt;
        jr z,SmallFont&lt;br /&gt;
        ld a,b              ; what character is to be displayed?&lt;br /&gt;
        cp 'A'&lt;br /&gt;
        ret nz&lt;br /&gt;
        ld hl,BigA          ; get our replacement bitmap&lt;br /&gt;
        ld de,lFont_record&lt;br /&gt;
        ld bc,7             ; copy it into RAM&lt;br /&gt;
        ldir&lt;br /&gt;
        ld hl,lFont_record&lt;br /&gt;
        cp a&lt;br /&gt;
        ret&lt;br /&gt;
SmallFont:&lt;br /&gt;
        ld a,b              ; what character is to be displayed?&lt;br /&gt;
        cp 'A'&lt;br /&gt;
        ret nz&lt;br /&gt;
        ld hl,SmallA        ; get our replacement bitmap&lt;br /&gt;
        ld de,sFont_record&lt;br /&gt;
        ld bc,8             ; copy it into RAM&lt;br /&gt;
        ldir&lt;br /&gt;
        ld hl,sFont_record&lt;br /&gt;
        cp a&lt;br /&gt;
        ret&lt;br /&gt;
BigA:&lt;br /&gt;
        .db 00001110b&lt;br /&gt;
        .db 00010011b&lt;br /&gt;
        .db 00010011b&lt;br /&gt;
        .db 00011111b&lt;br /&gt;
        .db 00010011b&lt;br /&gt;
        .db 00010011b&lt;br /&gt;
        .db 00010011b&lt;br /&gt;
SmallA:&lt;br /&gt;
        .db 5&lt;br /&gt;
        .db 00000000b&lt;br /&gt;
        .db 00001100b&lt;br /&gt;
        .db 00010110b&lt;br /&gt;
        .db 00011110b&lt;br /&gt;
        .db 00010110b&lt;br /&gt;
        .db 00010110b&lt;br /&gt;
        .db 00000000b&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:Hooks:9BAC</id>
		<title>83Plus:Hooks:9BAC</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:Hooks:9BAC"/>
				<updated>2005-07-19T00:30:39Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: Fixed flag link.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:Hooks:By_Name|Parser Hook]] [[Category:83Plus:Hooks:By_Address|9BAC - Parser Hook]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Name:''' Parser Hook&lt;br /&gt;
&lt;br /&gt;
'''Hook Pointer Block Address:''' [[83Plus:RAM:9BAC|9BAC]]&lt;br /&gt;
&lt;br /&gt;
'''Hook Enable BCALL:''' [[83Plus:BCALLs:5026|5026]]&lt;br /&gt;
&lt;br /&gt;
'''Hook Disable BCALL:''' [[83Plus:BCALLs:5029|5029]]&lt;br /&gt;
&lt;br /&gt;
'''Hook Call BCALL:''' ''(none known)''&lt;br /&gt;
&lt;br /&gt;
'''Hook Active Flag:''' [[83Plus:Flags:36#Bit_1|1, (iy + 36h)]]&lt;br /&gt;
&lt;br /&gt;
This hook allows you to change the behavior of the TI-BASIC parser and functions.&lt;br /&gt;
&lt;br /&gt;
== Using the Hook ==&lt;br /&gt;
These different values, passed in A, determine what the hook should do.&lt;br /&gt;
* 0: The calculator is about to parse a variable.&lt;br /&gt;
** OP1 = name of variable to be parsed.&lt;br /&gt;
** Return Z if the variable should be parsed normally.&lt;br /&gt;
* 1-3: A BASIC function has been encountered.  The various types are described below.&lt;br /&gt;
** BC identifies the particular function within the class.  For many 1-byte tokens, B is the token itself; for many others, B is the OP-number given in ti83plus.inc (although some of these are incorrect.)&lt;br /&gt;
** Return Z to run the standard function. &lt;br /&gt;
&lt;br /&gt;
=== Class 1 Functions ===&lt;br /&gt;
&lt;br /&gt;
Class 1 tokens all take some positive number of arguments (zero arguments is a syntax error.)  These are separated by commas, or in the case of binary operators, by the operator itself. All of the arguments are evaluated before the function is.&lt;br /&gt;
&lt;br /&gt;
The arguments are placed on the FPS in &amp;quot;reverse&amp;quot; order.  That is to say, the earliest argument read is deepest in the stack. The final argument is in OP1.  The total number of arguments is passed in HL.&lt;br /&gt;
&lt;br /&gt;
Any of the following data types may be used (except where prohibited by syntax rules): Real, List, Matrix, Equation, String, Complex, Complex List.  Real numbers are stored on the stack as floating-point. Complex numbers are stored as two consecutive stack entries or in OP1 and OP2 (see the SDK documentation for Push/Pop OP1/3/5.)  Other data types are stored as variable names.&lt;br /&gt;
&lt;br /&gt;
A hook may do any of the following:&lt;br /&gt;
* Leave all arguments as is, and return Z.&lt;br /&gt;
* Modify arguments, or add or remove them while updating HL appropriately, and return Z.&lt;br /&gt;
* Remove all arguments from the FPS, place the result of your computation in OP1, and return NZ.&lt;br /&gt;
* Remove all arguments from the FPS, reset [[83Plus:Flags:07#Bit0|numOP1,(iy+ParsFlag2)]], and return NZ.  (This is generally preferable if you are not returning a useful value, as it will preserve Ans.)&lt;br /&gt;
&lt;br /&gt;
=== Class 2 Functions ===&lt;br /&gt;
&lt;br /&gt;
These include most &amp;quot;programming&amp;quot; commands.  No arguments are parsed.&lt;br /&gt;
&lt;br /&gt;
You may, if you are prepared to face the consequences, attempt to read the arguments yourself.  The undocumented B_CALL [[83Plus:BCALLs:4B73|IncFetch]] can be useful in doing so.&lt;br /&gt;
&lt;br /&gt;
If you return Z, the parser will run the function normally.  If you return NZ, the parser will continue execution from where you left off.&lt;br /&gt;
&lt;br /&gt;
=== Class 3 Functions ===&lt;br /&gt;
&lt;br /&gt;
If very little is known about class 2, less is known about class 3.  Tenatively, it looks like the class 2 functions that you would expect to be class 1 have class 3 secondary callbacks.&lt;br /&gt;
&lt;br /&gt;
It looks like the parameters are stored in OP1 and the FPS as in class 1 and the number of arguments is stored at [[83Plus:RAM:9661|9661]]. HL is the same as (OPS) and should saved.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Prevent running prgmEXEC ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ParserHook:&lt;br /&gt;
        .db 83h             ; Required for all hooks&lt;br /&gt;
        or a                ; Which condition?&lt;br /&gt;
        jr nz,ReturnZ&lt;br /&gt;
        ld hl,EXECStr       ; Check whether our string&lt;br /&gt;
        ld de,OP1+1         ; matches the name to be run.&lt;br /&gt;
        call CompStrs       ; Will return NZ if they don't match&lt;br /&gt;
        jr nz,ReturnZ&lt;br /&gt;
        or 1&lt;br /&gt;
        ret&lt;br /&gt;
ReturnZ:&lt;br /&gt;
        cp a&lt;br /&gt;
        ret&lt;br /&gt;
EXECStr:&lt;br /&gt;
        .db &amp;quot;EXEC&amp;quot;,0&lt;br /&gt;
&lt;br /&gt;
CompStrs:&lt;br /&gt;
        ld a,(de)&lt;br /&gt;
        cp (hl)&lt;br /&gt;
        ret nz&lt;br /&gt;
        inc de&lt;br /&gt;
        inc hl&lt;br /&gt;
        or a&lt;br /&gt;
        jr nz,CompStrs&lt;br /&gt;
        ret&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Random sin function ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ParserHook:&lt;br /&gt;
        .db 83h             ; Required for all hooks&lt;br /&gt;
        or a                ; Which condition?&lt;br /&gt;
        ret z&lt;br /&gt;
        push hl&lt;br /&gt;
        ld hl,0C2C2h        ; Is it the sin( token?&lt;br /&gt;
        sbc hl,bc&lt;br /&gt;
        pop hl&lt;br /&gt;
        jr nz,ReturnZ&lt;br /&gt;
        dec hl&lt;br /&gt;
        B_CALL _DeallocFPS  ; free unused parameters&lt;br /&gt;
        B_CALL _Random&lt;br /&gt;
        or 1                ; set NZ&lt;br /&gt;
        ret&lt;br /&gt;
ReturnZ:&lt;br /&gt;
        cp a&lt;br /&gt;
        ret&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Credits and Contributions ==&lt;br /&gt;
* '''Brandon Sterner:''' Analysis, and the Symbolic source code.&lt;br /&gt;
* '''Michael Vincent:''' The Omnicalc source code.&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4972</id>
		<title>83Plus:BCALLs:4972</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4972"/>
				<updated>2005-07-19T00:29:41Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: Fixed flag link.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:BCALLs:By_Name:Input|GetKey]] [[Category:83Plus:BCALLs:By_Name|GetKey]] [[Category:83Plus:BCALLs:By_Address|4972 - GetKey]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' GetKey&lt;br /&gt;
&lt;br /&gt;
'''BCALL Address:''' 4972h&lt;br /&gt;
&lt;br /&gt;
The standard key input routine.&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
* bit [[83Plus:Flags:24#Bit_3|lwrCaseActive, (iy+appLwrCaseFlag)]] set to enable lowercase entry&lt;br /&gt;
* bit [[83Plus:Flags:28#Bit_7|7, (iy+28h)]] set to disable the usual action of 2nd+Off&lt;br /&gt;
* [[83Plus:Flags:12|(iy+shiftFlags)]] contains shift settings&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
* A = keycode&lt;br /&gt;
* [[83Plus:RAM:8446|(keyExtend)]] = extended keycode&lt;br /&gt;
* bit [[83Plus:Flags:09#Bit_4|onInterrupt, (iy+onFlags)]] set (and A=0) if the On key was pressed&lt;br /&gt;
* [[83Plus:Flags:12|(iy+shiftFlags)]] contains shift settings&lt;br /&gt;
&lt;br /&gt;
=== Destroys ===&lt;br /&gt;
* DE, HL&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
This routine will wait for a key to be pressed and return it.  It will handle the 2nd and Alpha keys, and the values it returns reflect this distinction.&lt;br /&gt;
&lt;br /&gt;
It transparently handles the screen capture and remote control link commands, as well as (on OS 1.15 and higher) the TI-Keyboard.  Other silent link commands will cause it to exit from the current app so that data can be transferred.  It also handles 2nd+Off, 2nd+Up, and 2nd+Down in the expected ways.&lt;br /&gt;
&lt;br /&gt;
See also [[83Plus:BCALLs:500B|GetKeyRetOff]].&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; B_CALL GetKey&lt;br /&gt;
 cp kPi&lt;br /&gt;
 call z,Moo&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:RAM:9640</id>
		<title>83Plus:RAM:9640</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:RAM:9640"/>
				<updated>2005-07-19T00:21:57Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:RAM:By Address|9640 - seed1]][[Category:83Plus:RAM:By Name|seed1]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' seed1&lt;br /&gt;
&lt;br /&gt;
'''Memory Address:''' 9640h&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 9 bytes.&lt;br /&gt;
&lt;br /&gt;
This area of memory stores the first seed of the random number generator.&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
This memory area can be initialized by a call to to [[83Plus:BCALLs:4B7F|RandInit]]. It is also changed when the N-&amp;gt;rand syntax is used on the homescreen (or in BASIC programs).&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:RAM:9649</id>
		<title>83Plus:RAM:9649</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:RAM:9649"/>
				<updated>2005-07-19T00:14:59Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:RAM:By Address|9649 - seed2]][[Category:83Plus:RAM:By Name|seed2]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' seed2&lt;br /&gt;
&lt;br /&gt;
'''Memory Address:''' 9649h&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 9 bytes.&lt;br /&gt;
&lt;br /&gt;
This area of memory stores the second seed of the random number generator.&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
This memory area can be initialized by a call to to [[83Plus:BCALLs:4B7F|RandInit]]. It is also changed when the N-&amp;gt;rand syntax is used on the homescreen (or in BASIC programs).&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Talk:83Plus:Ports:05</id>
		<title>Talk:83Plus:Ports:05</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Talk:83Plus:Ports:05"/>
				<updated>2005-07-18T23:59:17Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I'm not sure how I feel about calling this &amp;quot;RAM Paging port&amp;quot;, because all of 05,06, and 07 can be used to page in RAM.  Personally I think that if we designate 0000-3FFF as bank0, 4000-7FFF as bank1, 8000-BFFF as bank2, and C000-FFFF as bank3 it will be the clearest.  Then we can say port 5 controls bank3, port 6 controls bank1, and port 7 controls bank2.  --[[User:Dan Englender|Dan Englender]] 09:46, 28 Mar 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
:Well, does it even make sense to assign a bank number to 0000h~3FFFh, since that's permanently set as ROM Page 0? Also another option would be to just call them by the address block they effect (or at least the first address)? Eg, bankC000, bank4000, bank8000? --[[User:Aquanight|Aquanight]] 15:47, 30 Mar 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
::I've heard them be called the 0000, 4000, 8000, and C000 banks before, so that would seem to be a good choice. I would go with this one...and at least these names can't result in any possible confusion at all. Simple and elegent. --[[User:JasonM|JasonM]] right now&lt;br /&gt;
&lt;br /&gt;
I don't see why not to assign a bacnk number to 0000-3FFF.  Just because the data in there isn't changing doesn't mean it's not useful to talk about it.  Memory is logically split into these four different segments, so it's useful to have names for all of them.  --[[User:Dan Englender|Dan Englender]] 08:32, 31 Mar 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Should it be pointed out somewhere that only when the port is 0 (RAM page 0 selected) that execution is forbidden above address C000h? --[[User:Aquanight|Aquanight]] 15:10, 2 May 2005 (PDT)&lt;br /&gt;
:Isn't all execution prevented on ram page 0 regardless of where it is? --[[User:AndyJ|AndyJ]] 15:13, 2 May 2005 (PDT)&lt;br /&gt;
::Yes, but for people that might be semi-new to assembly it might be a good idea to point out *somewhere* that the execution limit is tied to the RAM page, and not the logical memory. Putting it here would seem to make the most sense :) . That or maybe somewhere in 83Plus:OS or something? --[[User:Aquanight|Aquanight]] 23:08, 3 May 2005 (PDT)&lt;br /&gt;
:::Well, it's a hardware thing, not an OS thing, so no it doesn't go there. It would go here. :) Someone fix that sometime, it's way too late for me to. :P --[[User:AndyJ|AndyJ]] 23:09, 3 May 2005 (PDT)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Added info about TI-83 Plus. Didn't know exactly how to separate BE with higher models given how radically different the behaviour of the port is, so I did what seemed logical and marked the page as non-standard. Also, the table could be better. [[User:Sigma|Sigma]] 16:25, 18 Jul 2005 (PDT)&lt;br /&gt;
:I'll fix the table later, once I've brushed up on wikitables. Also, I agree with how you split it. --[[User:AndyJ|Andy Janata]] 16:35, 18 Jul 2005 (PDT)&lt;br /&gt;
::table == wikied. --[[User:Aquanight|Aquanight]] 16:59, 18 Jul 2005 (PDT)&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:Ports:05</id>
		<title>83Plus:Ports:05</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:Ports:05"/>
				<updated>2005-07-18T23:54:31Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: wikfiyed table...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:Ports:By_Address|05 - RAM Page (83+SE, 84+/SE) - Port 16 Configuration (83+)]] [[Category:83Plus:Ports:By_Name|RAM Page (83+SE, 84+/SE) - Port 16 Configuration (83+)]]&lt;br /&gt;
== Synopsis (TI-83 Plus S.E. and TI-84 Plus Family) ==&lt;br /&gt;
'''Port Number:''' 05h&lt;br /&gt;
&lt;br /&gt;
'''Function:''' RAM Paging Port&lt;br /&gt;
&lt;br /&gt;
This port can be used to control what RAM page is paged into the C000h-FFFFh memory bank. Note that it can only page RAM pages, not flash pages.&lt;br /&gt;
&lt;br /&gt;
=== Read Values ===&lt;br /&gt;
Returns the current RAM pages.&lt;br /&gt;
&lt;br /&gt;
=== Write Values ===&lt;br /&gt;
Sets the current RAM page, by giving a value in 00h-07h, inclusive. When you work with the other paging ports, RAM pages are given in 80h-87h, but this port does not need bit 7 to be set. You cannot set the upper four bits.&lt;br /&gt;
&lt;br /&gt;
== Synopsis (TI-83 Plus) ==&lt;br /&gt;
'''Port Number:''' 05h&lt;br /&gt;
&lt;br /&gt;
'''Function:''' [[83Plus:Ports:16|Port 16h]] Configuration Port&lt;br /&gt;
&lt;br /&gt;
This port configures which memory pages are locked or unlocked (i.e. whether or not the PC register is allowed to point within the page) by port 16h. Only bits 0..2 are considered, the rest have no effect.&lt;br /&gt;
&lt;br /&gt;
=== Read Values ===&lt;br /&gt;
Nothing of value.&lt;br /&gt;
&lt;br /&gt;
=== Write Values ===&lt;br /&gt;
Writing a set bit to 16h protects the page; writing a clear bit unprotects the page.&lt;br /&gt;
&lt;br /&gt;
{|align=&amp;quot;center&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; style=&amp;quot;text-align: center&amp;quot;&lt;br /&gt;
!colspan=3|Port 05h Bit&lt;br /&gt;
!colspan=8|Port 16h Bit&lt;br /&gt;
|-&lt;br /&gt;
!2!!1!!0!!7!!6!!5!!4!!3!!2!!1!!0&lt;br /&gt;
|-&lt;br /&gt;
|0||0||0||ROM 0F||ROM 0E||ROM 0D||ROM 0C||ROM 0B||ROM 0A||ROM 09||ROM 08&lt;br /&gt;
|-&lt;br /&gt;
|0||0||1||ROM 17||ROM 16||ROM 15||ROM 14||ROM 13||ROM 12||ROM 11||ROM 10&lt;br /&gt;
|-&lt;br /&gt;
|0||1||0||X||X||X||X||ROM 1B||ROM 1A||ROM 19||ROM 18&lt;br /&gt;
|-&lt;br /&gt;
|1||1||1||X||X||RAM 01||X||X||X||X||RAM 00&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
At least on my TI-84+, if you output a value with bit 3 set, reading from the port will return a value with bit 3 set. This would imply that you can use RAM pages 08h-0Fh, but these RAM pages do not exist--this bit is simply ignored (only bits 0-2 actually determine what RAM page is active.)&lt;br /&gt;
&lt;br /&gt;
== Credits and Contributions ==&lt;br /&gt;
* '''Michael Vincent:''' Initial documentation.&lt;br /&gt;
* '''Tijl Coosemans:''' Documenting TI-83 Plus functionality [http://www.kalimero.be/83phwinfo.txt here].&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:Ports:11</id>
		<title>83Plus:Ports:11</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:Ports:11"/>
				<updated>2005-06-10T15:06:51Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:Ports:By Address|11 - LCD Data]][[Category:83Plus:Ports:By Name|LCD Data]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Port Number:''' 11h&lt;br /&gt;
&lt;br /&gt;
'''Function:''' LCD Data Port&lt;br /&gt;
&lt;br /&gt;
This port transfers data to and from the LCD driver's internal RAM.&lt;br /&gt;
&lt;br /&gt;
=== Read Values ===&lt;br /&gt;
* The byte at the current location in RAM. Each bit corresponds to one pixel.&lt;br /&gt;
&lt;br /&gt;
NOTE: When the LCD is first turned on (eg, after a removing ALL batteries from the calculator including the backup one) or after the location pointer is changed via the command port, the contents of the LCD's output register will be invalid. Since the output register is only updated on a data read, an extra dummy read is required before you will be able read what is at the new location. This is not required when the location pointer is updated by the auto-increment/decrement.&lt;br /&gt;
&lt;br /&gt;
=== Write Values ===&lt;br /&gt;
* Sets the byte at the current RAM location. Each bit corresponds to one pixel.&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
In 6-bit transfer mode, only bits 0~5 have any significance.&lt;br /&gt;
&lt;br /&gt;
The RAM location affected can be changed through the [[83Plus:Ports:10|command port]]. The location will also automatically change according to the auto-increment or auto-decrement mode as set in the command port. As with sending commands, you must wait a full LCD Cycle (10 microseconds) between reads and writes.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; ;Cause all the pixels at the current location to be black.&lt;br /&gt;
 ld a, 0FFh&lt;br /&gt;
 out (11h), a&lt;br /&gt;
 push hl&lt;br /&gt;
 push de&lt;br /&gt;
 pop de&lt;br /&gt;
 pop hl&lt;br /&gt;
 nop&lt;br /&gt;
 ;And turn them back off.&lt;br /&gt;
 xor a&lt;br /&gt;
 out (11h), a&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[83Plus:Ports:10|Port 10]] - LCD command port&lt;br /&gt;
* [http://wikiti.denglend.net/stuff/t6a04.pdf LCD driver datasheet]&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:Flags:00</id>
		<title>83Plus:Flags:00</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:Flags:00"/>
				<updated>2005-05-31T00:17:48Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:Flags:By Address|00]][[Category:83Plus:Flags:By Name|kbdFlags, ioDelFlag, trigFlags, doneFlags]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Flag Byte:''' 00h&lt;br /&gt;
&lt;br /&gt;
'''Known Names:''' kbdFlags, ioDelFlag, trigFlags, doneFlags&lt;br /&gt;
&lt;br /&gt;
== Bit Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Bit 0 ===&lt;br /&gt;
'''Official Name:''' inDelete&lt;br /&gt;
&lt;br /&gt;
Set if in a delete screen.&lt;br /&gt;
&lt;br /&gt;
=== Bit 1 ===&lt;br /&gt;
''This bit does nothing.''&lt;br /&gt;
&lt;br /&gt;
=== Bit 2 ===&lt;br /&gt;
'''Official Name:''' trigDeg&lt;br /&gt;
&lt;br /&gt;
Set if Degree mode is selected for trig (sin, cos, tan) functions. Reset if Radian is selected.&lt;br /&gt;
&lt;br /&gt;
=== Bit 3 ===&lt;br /&gt;
'''Official Name:''' kbdSCR&lt;br /&gt;
&lt;br /&gt;
Set if a keypress has been scanned and ready for GetCSC to return.&lt;br /&gt;
&lt;br /&gt;
=== Bit 4 ===&lt;br /&gt;
'''Official Name:''' kbdKeyPress&lt;br /&gt;
&lt;br /&gt;
Set if a key has been pressed.&lt;br /&gt;
&lt;br /&gt;
=== Bit 5 ===&lt;br /&gt;
'''Official Name:''' donePrgm&lt;br /&gt;
&lt;br /&gt;
Set to display Done at program end. Reset otherwise.&lt;br /&gt;
&lt;br /&gt;
=== Bit 6 ===&lt;br /&gt;
''This bit does nothing.''&lt;br /&gt;
&lt;br /&gt;
=== Bit 7 ===&lt;br /&gt;
''This bit does nothing.''&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:RAM:843F</id>
		<title>83Plus:RAM:843F</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:RAM:843F"/>
				<updated>2005-05-30T23:58:49Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:RAM:By Address|843F - kbdScanCode]][[Category:83Plus:RAM:By Name|kbdScanCode]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' kbdScanCode&lt;br /&gt;
&lt;br /&gt;
'''Memory Address:''' 843Fh&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 1 byte.&lt;br /&gt;
&lt;br /&gt;
Stores the scan code of the key being pressed. This is set by [[83Plus:BCALLs:4015|KbdScan]] and read by [[83Plus:BCALLs:4018|GetCSC]]. It is only valid when the flag [[83Plus:Flags:00#Bit_3|kbdSCR,(iy+kbdFlags)]] is set.&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:Flags:0C</id>
		<title>83Plus:Flags:0C</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:Flags:0C"/>
				<updated>2005-05-30T23:53:40Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: Categories&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:Flags:By Address|0C]][[Category:83Plus:Flags:By Name|curFlags, fmtEditFlags]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Flag Byte:''' 0Ch&lt;br /&gt;
&lt;br /&gt;
'''Known Names:''' curFlags, fmtEditFlags&lt;br /&gt;
&lt;br /&gt;
== Bit Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Bit 0 ===&lt;br /&gt;
'''Official Name:''' fmtEdit&lt;br /&gt;
&lt;br /&gt;
Set to format number for editing.&lt;br /&gt;
&lt;br /&gt;
=== Bit 1 ===&lt;br /&gt;
''This bit does nothing.''&lt;br /&gt;
&lt;br /&gt;
=== Bit 2 ===&lt;br /&gt;
'''Official Name:''' curAble&lt;br /&gt;
&lt;br /&gt;
Set if the cursor is enabled.&lt;br /&gt;
&lt;br /&gt;
=== Bit 3 ===&lt;br /&gt;
'''Official Name:''' curOn&lt;br /&gt;
&lt;br /&gt;
Set if the cursor is in the &amp;quot;show&amp;quot; blink cycle. Reset if in the &amp;quot;hide&amp;quot; blink cycle.&lt;br /&gt;
&lt;br /&gt;
=== Bit 4 ===&lt;br /&gt;
'''Official Name:''' curLock&lt;br /&gt;
&lt;br /&gt;
Set if the cursor is to be locked off.&lt;br /&gt;
&lt;br /&gt;
=== Bit 5 ===&lt;br /&gt;
''This bit does nothing.''&lt;br /&gt;
&lt;br /&gt;
=== Bit 6 ===&lt;br /&gt;
''This bit does nothing.''&lt;br /&gt;
&lt;br /&gt;
=== Bit 7 ===&lt;br /&gt;
''This bit does nothing.''&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:Flags:0C</id>
		<title>83Plus:Flags:0C</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:Flags:0C"/>
				<updated>2005-05-30T23:53:09Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Synopsis ==&lt;br /&gt;
'''Flag Byte:''' 0Ch&lt;br /&gt;
&lt;br /&gt;
'''Known Names:''' curFlags, fmtEditFlags&lt;br /&gt;
&lt;br /&gt;
== Bit Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Bit 0 ===&lt;br /&gt;
'''Official Name:''' fmtEdit&lt;br /&gt;
&lt;br /&gt;
Set to format number for editing.&lt;br /&gt;
&lt;br /&gt;
=== Bit 1 ===&lt;br /&gt;
''This bit does nothing.''&lt;br /&gt;
&lt;br /&gt;
=== Bit 2 ===&lt;br /&gt;
'''Official Name:''' curAble&lt;br /&gt;
&lt;br /&gt;
Set if the cursor is enabled.&lt;br /&gt;
&lt;br /&gt;
=== Bit 3 ===&lt;br /&gt;
'''Official Name:''' curOn&lt;br /&gt;
&lt;br /&gt;
Set if the cursor is in the &amp;quot;show&amp;quot; blink cycle. Reset if in the &amp;quot;hide&amp;quot; blink cycle.&lt;br /&gt;
&lt;br /&gt;
=== Bit 4 ===&lt;br /&gt;
'''Official Name:''' curLock&lt;br /&gt;
&lt;br /&gt;
Set if the cursor is to be locked off.&lt;br /&gt;
&lt;br /&gt;
=== Bit 5 ===&lt;br /&gt;
''This bit does nothing.''&lt;br /&gt;
&lt;br /&gt;
=== Bit 6 ===&lt;br /&gt;
''This bit does nothing.''&lt;br /&gt;
&lt;br /&gt;
=== Bit 7 ===&lt;br /&gt;
''This bit does nothing.''&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:Flags:0D</id>
		<title>83Plus:Flags:0D</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:Flags:0D"/>
				<updated>2005-05-30T23:49:00Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Synopsis ==&lt;br /&gt;
'''Flag Byte:''' 0Dh&lt;br /&gt;
&lt;br /&gt;
'''Known Names:''' appFlags&lt;br /&gt;
&lt;br /&gt;
== Bit Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Bit 0 ===&lt;br /&gt;
'''Official Name:''' appWantIntrpt&lt;br /&gt;
&lt;br /&gt;
Set if the application wants ON key interrupts.&lt;br /&gt;
&lt;br /&gt;
=== Bit 1 ===&lt;br /&gt;
'''Official Name:''' appTextSave&lt;br /&gt;
&lt;br /&gt;
Set to have large font display routines write to textShadow as well.&lt;br /&gt;
&lt;br /&gt;
=== Bit 2 ===&lt;br /&gt;
'''Official Name:''' appAutoScroll&lt;br /&gt;
&lt;br /&gt;
Set to have large font display routines automatically scroll the screen.&lt;br /&gt;
&lt;br /&gt;
=== Bit 3 ===&lt;br /&gt;
'''Official Name:''' appMenus&lt;br /&gt;
&lt;br /&gt;
Set to enable processing menu keys in GetKey, Mon, etc.&lt;br /&gt;
&lt;br /&gt;
=== Bit 4 ===&lt;br /&gt;
'''Official Name:''' appLockMenus&lt;br /&gt;
&lt;br /&gt;
Set to ignore menu keys. Only checked if bit 3 is reset.&lt;br /&gt;
&lt;br /&gt;
=== Bit 5 ===&lt;br /&gt;
'''Official Name:''' appCurGraphic&lt;br /&gt;
&lt;br /&gt;
Set to enable graphic cursor.&lt;br /&gt;
&lt;br /&gt;
=== Bit 6 ===&lt;br /&gt;
'''Official Name:''' appCurWord&lt;br /&gt;
&lt;br /&gt;
Set to have the text cursor cover the entire token.&lt;br /&gt;
&lt;br /&gt;
=== Bit 7 ===&lt;br /&gt;
'''Official Name:''' appExit&lt;br /&gt;
&lt;br /&gt;
App handles [EXIT] key by itself (so says ti83plus.inc - I don't see an EXIT key on my TI-83+ though...).&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:Flags:12</id>
		<title>83Plus:Flags:12</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:Flags:12"/>
				<updated>2005-05-30T23:43:53Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: Formatting again :/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:Flags:By Address|12]][[Category:83Plus:Flags:By Name|shiftFlags, indicFlags]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Flag Byte:''' 12h&lt;br /&gt;
&lt;br /&gt;
'''Known Names:''' shiftFlags, indicFlags&lt;br /&gt;
&lt;br /&gt;
== Bit Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Bit 0 ===&lt;br /&gt;
'''Official Name:''' indicRun&lt;br /&gt;
&lt;br /&gt;
Set if the run indicator is on. Reset if not.&lt;br /&gt;
&lt;br /&gt;
=== Bit 1 ===&lt;br /&gt;
'''Official Name:''' indicInUse&lt;br /&gt;
&lt;br /&gt;
Set if the run indicator save area is in use; reset if not.&lt;br /&gt;
&lt;br /&gt;
=== Bit 2 ===&lt;br /&gt;
'''Official Name:''' indicOnly&lt;br /&gt;
&lt;br /&gt;
Set if the interrupt handler should only process the run indicator.&lt;br /&gt;
&lt;br /&gt;
=== Bit 3 ===&lt;br /&gt;
'''Official Name:''' shift2nd&lt;br /&gt;
&lt;br /&gt;
Set if the 2nd Function shift is active (2nd has been pressed). Reset otherwise.&lt;br /&gt;
&lt;br /&gt;
=== Bit 4 ===&lt;br /&gt;
'''Official Name:''' shiftAlpha&lt;br /&gt;
&lt;br /&gt;
Set if the Alpha shift is active (Alpha has been pressed). Reset otherwise.&lt;br /&gt;
&lt;br /&gt;
=== Bit 5 ===&lt;br /&gt;
'''Official Name:''' shiftLwrAlpha&lt;br /&gt;
&lt;br /&gt;
Set if the Alpha shift is in lowercase mode. Reset otherwise.&lt;br /&gt;
&lt;br /&gt;
=== Bit 6 ===&lt;br /&gt;
'''Official Name:''' shiftALock&lt;br /&gt;
&lt;br /&gt;
Set if the Alpha shift is locked (2nd+A-LOCK has benn pressed). Reset otherwise.&lt;br /&gt;
&lt;br /&gt;
=== Bit 7 ===&lt;br /&gt;
'''Official Name:''' shiftKeepAlph&lt;br /&gt;
&lt;br /&gt;
Set if Alpha shift should not be cancelled by the user. Reset otherwise.&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:Flags:12</id>
		<title>83Plus:Flags:12</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:Flags:12"/>
				<updated>2005-05-30T23:43:28Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: Grr... formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:Flags:By Address|12]][[Category:83Plus:Flags:By Name|shiftFlags, indicFlags]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Flag Byte:''' 12h&lt;br /&gt;
&lt;br /&gt;
'''Known Names:''' shiftFlags, indicFlags&lt;br /&gt;
&lt;br /&gt;
== Bit Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Bit 0 ===&lt;br /&gt;
'''Official Name:''' indicRun&lt;br /&gt;
&lt;br /&gt;
Set if the run indicator is on. Reset if not.&lt;br /&gt;
&lt;br /&gt;
=== Bit 1 ===&lt;br /&gt;
'''Official Name:''' indicInUse&lt;br /&gt;
&lt;br /&gt;
Set if the run indicator save area is in use; reset if not.&lt;br /&gt;
&lt;br /&gt;
=== Bit 2 ===&lt;br /&gt;
'''Official Name:''' indicOnly&lt;br /&gt;
&lt;br /&gt;
Set if the interrupt handler should only process the run indicator.&lt;br /&gt;
&lt;br /&gt;
=== Bit 3 ===&lt;br /&gt;
'''Official Name:''' shift2nd&lt;br /&gt;
&lt;br /&gt;
Set if the 2nd Function shift is active (2nd has been pressed). Reset otherwise.&lt;br /&gt;
&lt;br /&gt;
=== Bit 4 ===&lt;br /&gt;
'''Official Name:''' shiftAlpha&lt;br /&gt;
&lt;br /&gt;
Set if the Alpha shift is active (Alpha has been pressed). Reset otherwise.&lt;br /&gt;
&lt;br /&gt;
=== Bit 5 ===&lt;br /&gt;
'''Official Name:''' shiftLwrAlpha&lt;br /&gt;
&lt;br /&gt;
Set if the Alpha shift is in lowercase mode. Reset otherwise.&lt;br /&gt;
&lt;br /&gt;
=== Bit 6 ===&lt;br /&gt;
'''Official Name:''' shiftALock&lt;br /&gt;
&lt;br /&gt;
Set if the Alpha shift is locked (2nd+A-LOCK has benn pressed). Reset otherwise.&lt;br /&gt;
&lt;br /&gt;
=== Bit 7 ===&lt;br /&gt;
'''Official Name:''' shiftKeepAlph&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Set if Alpha shift should not be cancelled by the user. Reset otherwise.&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:Flags:12</id>
		<title>83Plus:Flags:12</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:Flags:12"/>
				<updated>2005-05-30T23:42:44Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:Flags:By Address|12]][[Category:83Plus:Flags:By Name|shiftFlags, indicFlags]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Flag Byte:''' 12h&lt;br /&gt;
&lt;br /&gt;
'''Known Names:''' shiftFlags, indicFlags&lt;br /&gt;
&lt;br /&gt;
== Bit Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Bit 0 ===&lt;br /&gt;
'''Official Name:''' indicRun&lt;br /&gt;
Set if the run indicator is on. Reset if not.&lt;br /&gt;
&lt;br /&gt;
=== Bit 1 ===&lt;br /&gt;
'''Official Name:''' indicInUse&lt;br /&gt;
Set if the run indicator save area is in use; reset if not.&lt;br /&gt;
&lt;br /&gt;
=== Bit 2 ===&lt;br /&gt;
'''Official Name:''' indicOnly&lt;br /&gt;
Set if the interrupt handler should only process the run indicator.&lt;br /&gt;
&lt;br /&gt;
=== Bit 3 ===&lt;br /&gt;
'''Official Name:''' shift2nd&lt;br /&gt;
Set if the 2nd Function shift is active (2nd has been pressed). Reset otherwise.&lt;br /&gt;
&lt;br /&gt;
=== Bit 4 ===&lt;br /&gt;
'''Official Name:''' shiftAlpha&lt;br /&gt;
Set if the Alpha shift is active (Alpha has been pressed). Reset otherwise.&lt;br /&gt;
&lt;br /&gt;
=== Bit 5 ===&lt;br /&gt;
'''Official Name:''' shiftLwrAlpha&lt;br /&gt;
Set if the Alpha shift is in lowercase mode. Reset otherwise.&lt;br /&gt;
&lt;br /&gt;
=== Bit 6 ===&lt;br /&gt;
'''Official Name:''' shiftALock&lt;br /&gt;
Set if the Alpha shift is locked (2nd+A-LOCK has benn pressed). Reset otherwise.&lt;br /&gt;
&lt;br /&gt;
=== Bit 7 ===&lt;br /&gt;
'''Official Name:''' shiftKeepAlph&lt;br /&gt;
Set if Alpha shift should not be cancelled by the user. Reset otherwise.&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:RAM:8477</id>
		<title>83Plus:RAM:8477</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:RAM:8477"/>
				<updated>2005-05-30T23:33:53Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:RAM:By Address|8477 - indicBusy]][[Category:83Plus:RAM:By Name|indicBusy]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' indicBusy&lt;br /&gt;
&lt;br /&gt;
'''Memory Address:''' 8477h&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 1 byte.&lt;br /&gt;
&lt;br /&gt;
This area stores the current bit pattern of the run indicator. Changing this changes the run indicator style. The interrupt handler bitrotates this every so often to create the rotating effect. Standard patterns include F0h (or E1h, C3h, 87h, 0Fh, 1Eh, 3Ch, or 78h) for the normal run indicator, or AAh (or 55h) for the &amp;quot;paused&amp;quot; indicator.&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:RAM:844A</id>
		<title>83Plus:RAM:844A</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:RAM:844A"/>
				<updated>2005-05-30T23:25:46Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:RAM:By Address|844A - curTime]][[Category:83Plus:RAM:By Name|curTime]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' curTime&lt;br /&gt;
&lt;br /&gt;
'''Memory Address:''' 844Ah&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 1 byte.&lt;br /&gt;
&lt;br /&gt;
Stores the current value of the timer for the cursor. This should probably never be changed directly unless you want to muck with the cursor blink timing.&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:RAM:96F6</id>
		<title>83Plus:RAM:96F6</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:RAM:96F6"/>
				<updated>2005-05-30T23:16:15Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:RAM:By Address|96F6 - editCursor]][[Category:83Plus:RAM:By Name|editCursor]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' editCursor&lt;br /&gt;
&lt;br /&gt;
'''Memory Address:''' 96F6h&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 2 bytes.&lt;br /&gt;
&lt;br /&gt;
Stores the address of where editing is taking place. As opposed to the visible cursor displayed on screen, this location stores the address of the token under the cursor.&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:RAM:8599</id>
		<title>83Plus:RAM:8599</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:RAM:8599"/>
				<updated>2005-05-30T23:13:10Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:RAM:By Address|8599 - cxPage]][[Category:83Plus:RAM:By Name|cxPage]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' cxPage&lt;br /&gt;
&lt;br /&gt;
'''Memory Address:''' 8599h&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 1 byte.&lt;br /&gt;
&lt;br /&gt;
Stores the page of the current application context. Combined with the vector offsets it determines the exact location of the vectors to be called by the system monitor.&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
This should never be changed directly. It is usually set by AppInit.&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:RAM:843F</id>
		<title>83Plus:RAM:843F</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:RAM:843F"/>
				<updated>2005-05-30T23:10:45Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:RAM:By Address|843F - kbdScanCode]][[Category:83Plus:RAM:By Name|kbdScanCode]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' kbdScanCode&lt;br /&gt;
&lt;br /&gt;
'''Memory Address:''' 843Fh&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 1 byte.&lt;br /&gt;
&lt;br /&gt;
Stores the scan code of the key being pressed. This is set by [[83Plus:BCALLs:4015|KbdScan]] and read by [[83Plus:BCALLs:4018|GetCSC]]. It is only valid when the flag kbdSCR,(iy+kbdFlags) is set.&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:RAM:843F</id>
		<title>83Plus:RAM:843F</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:RAM:843F"/>
				<updated>2005-05-30T23:10:32Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:RAM:By Address|843F - kbdScanCode]][[Category:83Plus:RAM:By Name|kbdScanCode]]&lt;br /&gt;
&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' kbdScanCode&lt;br /&gt;
&lt;br /&gt;
'''Memory Address:''' 843Fh&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 1 byte.&lt;br /&gt;
&lt;br /&gt;
Stores the scan code of the key being pressed. This is set by [[83Plus:BCALLs:4015|KbdScan]] and read by [[83Plus:BCALLs:4018|GetCSC]]. It is only valid when the flag kbdSCR,(iy+kbdFlags) is set.&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:401B</id>
		<title>83Plus:BCALLs:401B</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:401B"/>
				<updated>2005-05-30T23:04:06Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: curFlags offset (0C, not 12)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:BCALLs:By Name:Monitor|coorMon]] [[Category:83Plus:BCALLs:By Name:Utility|coorMon]] [[Category:83Plus:BCALLs:By Name|coorMon]] [[Category:83Plus:BCALLs:By Address|401B - coorMon]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' coorMon&lt;br /&gt;
&lt;br /&gt;
'''BCALL Address:''' 401B&lt;br /&gt;
&lt;br /&gt;
This routine is similar to [[83Plus:BCALLs:401E|Mon]] but calls additional routines during initialization.&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
* [[83Plus:Flags:28#Bit_0|appAllowContext, (IY + apiFlg)]] = 1 to allow Mon to pass context keys, like kYequ to the cxMain routine.&lt;br /&gt;
* [[83Plus:Flags:0C#Bit_4|curLock, (IY + curFlags)]] = 1 to lock the cursor off&lt;br /&gt;
* ??? more?&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
* none&lt;br /&gt;
&lt;br /&gt;
=== Registers Destroyed ===&lt;br /&gt;
* All&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
This routine does the equivalent of:&lt;br /&gt;
&lt;br /&gt;
 res g_style_active,(iy+sGrFlags) &lt;br /&gt;
 B_CALL [[83Plus:BCALLs:45BE|CursorOff]]&lt;br /&gt;
 B_CALL [[83Plus:BCALLs:4816|CoorDisp]]&lt;br /&gt;
 B_CALL [[83Plus:BCALLs:401E|Mon]]&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:RAM:858D</id>
		<title>83Plus:RAM:858D</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:RAM:858D"/>
				<updated>2005-05-30T22:59:44Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: categories&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:RAM:By Address|858D - cxMain]][[Category:83Plus:RAM:By Name|cxMain]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' cxMain&lt;br /&gt;
&lt;br /&gt;
'''Memory Address:''' 858Dh&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 2 bytes.&lt;br /&gt;
&lt;br /&gt;
This area of memory stores the address offset of a procedure to be called when a key is pressed while the [[83Plus:BCALLs:Mon|Mon]] BCALL is in control.&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
This is usually assigned by using the AppInit BCALL.&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:RAM:858D</id>
		<title>83Plus:RAM:858D</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:RAM:858D"/>
				<updated>2005-05-30T22:56:56Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Synopsis ==&lt;br /&gt;
'''Official Name:''' cxMain&lt;br /&gt;
&lt;br /&gt;
'''Memory Address:''' 858Dh&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 2 bytes.&lt;br /&gt;
&lt;br /&gt;
This area of memory stores the address offset of a procedure to be called when a key is pressed while the [[83Plus:BCALLs:Mon|Mon]] BCALL is in control.&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
This is usually assigned by using the AppInit BCALL.&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Talk:83Plus:BCALLs:51B8</id>
		<title>Talk:83Plus:BCALLs:51B8</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Talk:83Plus:BCALLs:51B8"/>
				<updated>2005-05-27T05:15:07Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;What's with the casing on this B_CALL? LRESID is the residuals, so not anything to do with resource ID's or something (which was how I read it when I saw that casing.) --[[User:JasonM|JasonM]] 20:13, 23 May 2005 (PDT)&lt;br /&gt;
:Cause I had no clue what the list was for our what the capitalization should be.  Feel free to change it as you see fit.  --[[User:Dan Englender|Dan Englender]] 20:33, 23 May 2005 (PDT)&lt;br /&gt;
&lt;br /&gt;
Someone should mention this bcall is pratically useless. A simple memory compare loop would do the job quite suitable. --[[User:Aquanight|Aquanight]] 22:15, 26 May 2005 (PDT)&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Talk:83Plus:Ports:05</id>
		<title>Talk:83Plus:Ports:05</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Talk:83Plus:Ports:05"/>
				<updated>2005-05-04T06:08:16Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: Forgot my siggy ;p&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I'm not sure how I feel about calling this &amp;quot;RAM Paging port&amp;quot;, because all of 05,06, and 07 can be used to page in RAM.  Personally I think that if we designate 0000-3FFF as bank0, 4000-7FFF as bank1, 8000-BFFF as bank2, and C000-FFFF as bank3 it will be the clearest.  Then we can say port 5 controls bank3, port 6 controls bank1, and port 7 controls bank2.  --[[User:Dan Englender|Dan Englender]] 09:46, 28 Mar 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
:Well, does it even make sense to assign a bank number to 0000h~3FFFh, since that's permanently set as ROM Page 0? Also another option would be to just call them by the address block they effect (or at least the first address)? Eg, bankC000, bank4000, bank8000? --[[User:Aquanight|Aquanight]] 15:47, 30 Mar 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
::I've heard them be called the 0000, 4000, 8000, and C000 banks before, so that would seem to be a good choice. I would go with this one...and at least these names can't result in any possible confusion at all. Simple and elegent. --[[User:JasonM|JasonM]] right now&lt;br /&gt;
&lt;br /&gt;
I don't see why not to assign a bacnk number to 0000-3FFF.  Just because the data in there isn't changing doesn't mean it's not useful to talk about it.  Memory is logically split into these four different segments, so it's useful to have names for all of them.  --[[User:Dan Englender|Dan Englender]] 08:32, 31 Mar 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Should it be pointed out somewhere that only when the port is 0 (RAM page 0 selected) that execution is forbidden above address C000h? --[[User:Aquanight|Aquanight]] 15:10, 2 May 2005 (PDT)&lt;br /&gt;
:Isn't all execution prevented on ram page 0 regardless of where it is? --[[User:AndyJ|AndyJ]] 15:13, 2 May 2005 (PDT)&lt;br /&gt;
::Yes, but for people that might be semi-new to assembly it might be a good idea to point out *somewhere* that the execution limit is tied to the RAM page, and not the logical memory. Putting it here would seem to make the most sense :) . That or maybe somewhere in 83Plus:OS or something? --[[User:Aquanight|Aquanight]] 23:08, 3 May 2005 (PDT)&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Talk:83Plus:Ports:05</id>
		<title>Talk:83Plus:Ports:05</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Talk:83Plus:Ports:05"/>
				<updated>2005-05-03T23:05:25Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I'm not sure how I feel about calling this &amp;quot;RAM Paging port&amp;quot;, because all of 05,06, and 07 can be used to page in RAM.  Personally I think that if we designate 0000-3FFF as bank0, 4000-7FFF as bank1, 8000-BFFF as bank2, and C000-FFFF as bank3 it will be the clearest.  Then we can say port 5 controls bank3, port 6 controls bank1, and port 7 controls bank2.  --[[User:Dan Englender|Dan Englender]] 09:46, 28 Mar 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
:Well, does it even make sense to assign a bank number to 0000h~3FFFh, since that's permanently set as ROM Page 0? Also another option would be to just call them by the address block they effect (or at least the first address)? Eg, bankC000, bank4000, bank8000? --[[User:Aquanight|Aquanight]] 15:47, 30 Mar 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
::I've heard them be called the 0000, 4000, 8000, and C000 banks before, so that would seem to be a good choice. I would go with this one...and at least these names can't result in any possible confusion at all. Simple and elegent. --[[User:JasonM|JasonM]] right now&lt;br /&gt;
&lt;br /&gt;
I don't see why not to assign a bacnk number to 0000-3FFF.  Just because the data in there isn't changing doesn't mean it's not useful to talk about it.  Memory is logically split into these four different segments, so it's useful to have names for all of them.  --[[User:Dan Englender|Dan Englender]] 08:32, 31 Mar 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Should it be pointed out somewhere that only when the port is 0 (RAM page 0 selected) that execution is forbidden above address C000h? --[[User:Aquanight|Aquanight]] 15:10, 2 May 2005 (PDT)&lt;br /&gt;
:Isn't all execution prevented on ram page 0 regardless of where it is? --[[User:AndyJ|AndyJ]] 15:13, 2 May 2005 (PDT)&lt;br /&gt;
::Yes, but for people that might be semi-new to assembly it might be a good idea to point out *somewhere* that the execution limit is tied to the RAM page, and not the logical memory. Putting it here would seem to make the most sense :) . That or maybe somewhere in 83Plus:OS or something?&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Talk:83Plus:Ports:05</id>
		<title>Talk:83Plus:Ports:05</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Talk:83Plus:Ports:05"/>
				<updated>2005-05-02T22:10:01Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I'm not sure how I feel about calling this &amp;quot;RAM Paging port&amp;quot;, because all of 05,06, and 07 can be used to page in RAM.  Personally I think that if we designate 0000-3FFF as bank0, 4000-7FFF as bank1, 8000-BFFF as bank2, and C000-FFFF as bank3 it will be the clearest.  Then we can say port 5 controls bank3, port 6 controls bank1, and port 7 controls bank2.  --[[User:Dan Englender|Dan Englender]] 09:46, 28 Mar 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
:Well, does it even make sense to assign a bank number to 0000h~3FFFh, since that's permanently set as ROM Page 0? Also another option would be to just call them by the address block they effect (or at least the first address)? Eg, bankC000, bank4000, bank8000? --[[User:Aquanight|Aquanight]] 15:47, 30 Mar 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
::I've heard them be called the 0000, 4000, 8000, and C000 banks before, so that would seem to be a good choice. I would go with this one...and at least these names can't result in any possible confusion at all. Simple and elegent. --[[User:JasonM|JasonM]] right now&lt;br /&gt;
&lt;br /&gt;
I don't see why not to assign a bacnk number to 0000-3FFF.  Just because the data in there isn't changing doesn't mean it's not useful to talk about it.  Memory is logically split into these four different segments, so it's useful to have names for all of them.  --[[User:Dan Englender|Dan Englender]] 08:32, 31 Mar 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Should it be pointed out somewhere that only when the port is 0 (RAM page 0 selected) that execution is forbidden above address C000h? --[[User:Aquanight|Aquanight]] 15:10, 2 May 2005 (PDT)&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Talk:Z80_Routines:Graphic:Fastcopy</id>
		<title>Talk:Z80 Routines:Graphic:Fastcopy</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Talk:Z80_Routines:Graphic:Fastcopy"/>
				<updated>2005-04-29T20:29:59Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The di is not '''that''' dispensible.  The display may be messed up if an interrupt that displays to the screen occurs during the fastcopy routine.  It's not the end of the world if this happens, but it's worth the extra byte to prevent it.  --[[User:Dan Englender|Dan Englender]] 07:11, 25 Apr 2005 (PDT)&lt;br /&gt;
&lt;br /&gt;
== Warnings? ==&lt;br /&gt;
&lt;br /&gt;
Also, what would we say about the new issues with the bad LCD drivers? Can we provide a fast routine that will support the bad drivers? --[[User:JasonM|JasonM]] 16:38, 25 Apr 2005 (PDT)&lt;br /&gt;
:I added a Safe Copy routine, since there isn't really a reliable timing to suggest.--[[User:Jim e|Jim e]] 11:00, 26 Apr 2005 (PDT)&lt;br /&gt;
::Is is still faster than the _grbufcpy BCALL ? [[User:Guillaumeh|Guillaumeh]] 12:35, 26 Apr 2005 (PDT)&lt;br /&gt;
:::Of course, it should only take slightly longer than fastcopy, but will always work.--[[User:Jim e|Jim e]] 14:51, 26 Apr 2005 (PDT)&lt;br /&gt;
::::I clarified what was going on with the messed LCDs a bit. Should we put something on the top of this page so programmers are alerted to this problem? --[[User:JasonM|JasonM]] 15:07, 26 Apr 2005 (PDT)&lt;br /&gt;
:::::We could make a template for it, saying something like &amp;quot;This code may not work properly on some calculators due to manufacturing differences.&amp;quot; --[[User:AndyJ|AndyJ]] 15:34, 26 Apr 2005 (PDT)&lt;br /&gt;
&lt;br /&gt;
MirageOS's fastcopy does not disable interrupts, while Ion's does.  Anyone trying to emulate MirageOS should know that, or else MirageOS programs that assume interrupts are enabled and halt (Yahtzee) may crash.--[[User:Dwedit|Dwedit]] 19:56, 26 Apr 2005 (PDT)&lt;br /&gt;
:True, but this isn't necessarily pertaining to MirageOS, or any shell for that matter.  A nostub program would need to disable interrupts or disable the busy indicator. A note should be made about why DI could dispensible, if a person disables the busy indicator.--[[User:Jim e|Jim e]] 20:16, 26 Apr 2005 (PDT)&lt;br /&gt;
::And when the cursor flash has been disabled.--[[User:Kalimero|Kalimero]] 03:22, 27 Apr 2005 (PDT)&lt;br /&gt;
:::Well the cursor should only flash if the edit buffer is open, and shouldn't be.--[[User:Jim e|Jim e]] 07:16, 27 Apr 2005 (PDT)&lt;br /&gt;
&lt;br /&gt;
::::What about grapher cursors?  They dont need edit buffers.--[[User:Woozle|Woozle]]&lt;br /&gt;
&lt;br /&gt;
:::::Well now that's just pushing towards a different topic. &amp;quot;When do you need to use fastcopy.&amp;quot; I guess something should be said about when you would need to fastcopy and when ti-os handles it for you.--[[User:Jim e|Jim e]] 14:05, 27 Apr 2005 (PDT)&lt;br /&gt;
&lt;br /&gt;
The main question regarding the interrupts is this: does the TI-OS touch  the LCD driver if you have disabled the run indicator any anything like flashing cursors? --[[User:JasonM|JasonM]] 16:30, 27 Apr 2005 (PDT)&lt;br /&gt;
&lt;br /&gt;
:We really shouldn't over complicate this. We know that there are certain instances where the DI isn't needed. That's when the interrupt won't use the lcd for anything but a status read. The most common case where an interrupt will affect the lcd driver is with the busy indicator.--[[User:Jim e|Jim e]] 17:42, 28 Apr 2005 (PDT)&lt;br /&gt;
&lt;br /&gt;
Why not just disable interrupts during fastcopy and turn them back on when returning to the program? (Or go even more tricky using ld a, i or similar.) --[[User:Aquanight|Aquanight]] 13:29, 29 Apr 2005 (PDT)&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Talk:83Plus:RAM:8447</id>
		<title>Talk:83Plus:RAM:8447</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Talk:83Plus:RAM:8447"/>
				<updated>2005-04-24T00:13:03Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Stuff:&lt;br /&gt;
* Always call Bh ''before'' you output.  There's no sense in waiting for the LCD to be ready to receive instructions when you are not yet ready to send them.&lt;br /&gt;
* Would it be worth adding pages for OS-independent direct calls in addition to B_CALLs?  There aren't very many of them.&lt;br /&gt;
** At some point we may even want to document OS-dependent addresses (such as offpage call points.)&lt;br /&gt;
[[User:FloppusMaximus|FloppusMaximus]] 14:47, 21 Apr 2005 (PDT)&lt;br /&gt;
&lt;br /&gt;
:AFAIK, 000Bh is not OS dependant (I think it's even documented in the 83psysroutines.pdf), so it should be ok to list it. --[[User:Aquanight|Aquanight]] 17:13, 23 Apr 2005 (PDT)&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:Ports:11</id>
		<title>83Plus:Ports:11</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:Ports:11"/>
				<updated>2005-04-21T18:30:10Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: Add bit about dummy reads.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:Ports:By Address|11 - LCD Data]][[Category:83Plus:Ports:By Name|LCD Data]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Port Number:''' 11h&lt;br /&gt;
&lt;br /&gt;
'''Function:''' LCD Data Port&lt;br /&gt;
&lt;br /&gt;
This port transfers data to and from the LCD driver's internal RAM.&lt;br /&gt;
&lt;br /&gt;
=== Read Values ===&lt;br /&gt;
* The byte at the current location in RAM. Each bit corresponds to one pixel.&lt;br /&gt;
&lt;br /&gt;
NOTE: When the LCD is first turned on (eg, after a removing ALL batteries from the calculator including the backup one) or after the location pointer is changed via the command port, the contents of the LCD's output register will be invalid. Since the output register is only updated on a data read, an extra dummy read is required before you will be able read what is at the new location. This is not required when the location pointer is updated by the auto-increment/decrement.&lt;br /&gt;
&lt;br /&gt;
=== Write Values ===&lt;br /&gt;
* Sets the byte at the current RAM location. Each bit corresponds to one pixel.&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
In 6-bit transfer mode, only bits 0~5 have any significance.&lt;br /&gt;
&lt;br /&gt;
THe RAM location affected can be changed through the [[83Plus:Ports:10|command port]]. The location will also automatically change according to the auto-increment or auto-decrement mode as set in the command port. As with sending commands, you must wait a full LCD Cycle (10 microseconds) between reads and writes.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; ;Cause all the pixels at the current location to be black.&lt;br /&gt;
 ld a, 0FFh&lt;br /&gt;
 out (11h), a&lt;br /&gt;
 push hl&lt;br /&gt;
 push de&lt;br /&gt;
 pop de&lt;br /&gt;
 pop hl&lt;br /&gt;
 nop&lt;br /&gt;
 ;And turn them back off.&lt;br /&gt;
 xor a&lt;br /&gt;
 out (11h), a&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[83Plus:Ports:10|Port 10]] - LCD command port&lt;br /&gt;
* [http://wikiti.denglend.net/stuff/t6a04.pdf LCD driver datasheet]&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:RAM:8447</id>
		<title>83Plus:RAM:8447</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:RAM:8447"/>
				<updated>2005-04-21T18:05:35Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: Formatting fun&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:RAM:By Address|8447 - contrast]][[Category:83Plus:RAM:By Name|contrast]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' contrast&lt;br /&gt;
&lt;br /&gt;
'''Memory Address:''' 8447h&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 1 byte.&lt;br /&gt;
&lt;br /&gt;
This area holds the system contrast value. When you press 2nd+Up or 2nd+Down while in a GetKey, GetKey automatically increases or decreases this value and updates the LCD's contrast. The accepted range of this value is 00h ~ 27h.&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
Changing this value does not &amp;quot;instantly&amp;quot; update the LCD contrast; you must manually update the LCD. To set the LCD contrast to match the calculator's, add D8h to the read value and output to [[83Plus:Ports:10|Port 10h]]:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; ld a, (contrast)&lt;br /&gt;
 add a, 0D8h&lt;br /&gt;
 out (10h), a&lt;br /&gt;
 CALL 000Bh ;Delay required time, or find some other way to waste/use 60 cycles.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This simple routine sets both the system contrast and the LCD contrast to whatever is in A (valid range is 00~27h, does nothing if out of range).&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; cp 28h&lt;br /&gt;
 ret nc ;NC means &amp;gt;= which is bad, so bail out.&lt;br /&gt;
 ld (contrast), a&lt;br /&gt;
 push af&lt;br /&gt;
 add a, 0D8h&lt;br /&gt;
 out (10h), a&lt;br /&gt;
 pop af&lt;br /&gt;
 ret&lt;br /&gt;
 ;Waste/Use ~45 cycles before accessing LCD directly.&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:RAM:8447</id>
		<title>83Plus:RAM:8447</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:RAM:8447"/>
				<updated>2005-04-21T18:05:07Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:RAM:By Address|8447 - contrast]][[Category:83Plus:RAM:By Name|contrast]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' contrast&lt;br /&gt;
&lt;br /&gt;
'''Memory Address:''' 8447h&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 1 byte.&lt;br /&gt;
&lt;br /&gt;
This area holds the system contrast value. When you press 2nd+Up or 2nd+Down while in a GetKey, GetKey automatically increases or decreases this value and updates the LCD's contrast. The accepted range of this value is 00h ~ 27h.&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
Changing this value does not &amp;quot;instantly&amp;quot; update the LCD contrast; you must manually update the LCD. To set the LCD contrast to match the calculator's, add D8h to the read value and output to [[83Plus:Ports:10|Port 10h]]:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; ld a, (contrast)&lt;br /&gt;
 add a, 0D8h&lt;br /&gt;
 out (10h), a&lt;br /&gt;
 CALL 000Bh ;Delay required time, or find some other way to waste/use 60 cycles.&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This simple routine sets both the system contrast and the LCD contrast to whatever is in A (valid range is 00~27h, does nothing if out of range).&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; cp 28h&lt;br /&gt;
 ret nc ;NC means &amp;gt;= which is bad, so bail out.&lt;br /&gt;
 ld (contrast), a&lt;br /&gt;
 push af&lt;br /&gt;
 add a, 0D8h&lt;br /&gt;
 out (10h), a&lt;br /&gt;
 pop af&lt;br /&gt;
 ret&lt;br /&gt;
 ;Waste/Use ~45 cycles before accessing LCD directly.&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:80BD</id>
		<title>83Plus:BCALLs:80BD</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:80BD"/>
				<updated>2005-04-12T22:44:02Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: Description/Inputs - make it sound less useless :P&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:BCALLs:By Name|XorA]][[Category:83Plus:BCALLs:By Name:Utterly Useless|XorA]][[Category:83Plus:BCALLs:By Address|80BD - XorA]][[Category:83Plus:BCALLs:By Name:Math|XorA]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' XorA&lt;br /&gt;
&lt;br /&gt;
'''BCALL Address:''' 80BD&lt;br /&gt;
&lt;br /&gt;
Calculates the exlusive OR (XOR) of the value in register A with itself and puts the result back in A.&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
* A = Number to be XOR'd with itself.&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
* A = 0&lt;br /&gt;
* Flags: Same as for the XOR A instruction.&lt;br /&gt;
&lt;br /&gt;
=== Destroys ===&lt;br /&gt;
* None.&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
This B_CALL is a complete waste of time.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
This B_CALL pretty much consists entirely of&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; xor a&lt;br /&gt;
 ret&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:80BD</id>
		<title>83Plus:BCALLs:80BD</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:80BD"/>
				<updated>2005-04-12T22:40:42Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:BCALLs:By Name|XorA]][[Category:83Plus:BCALLs:By Name:Utterly_Useless|XorA]][[Category:83Plus:BCALLs:By Address|80BD - XorA]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' XorA&lt;br /&gt;
&lt;br /&gt;
'''BCALL Address:''' 80BD&lt;br /&gt;
&lt;br /&gt;
Sets A to zero.&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
* None&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
* A = 0&lt;br /&gt;
* Flags: Same as for the XOR A instruction.&lt;br /&gt;
&lt;br /&gt;
=== Destroys ===&lt;br /&gt;
* None.&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
This B_CALL is a complete waste of time.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
This B_CALL pretty much consists entirely of&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; xor a&lt;br /&gt;
 ret&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:5008</id>
		<title>83Plus:BCALLs:5008</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:5008"/>
				<updated>2005-04-12T22:18:30Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: /* Synopsis */ Spelling people :P (of -&amp;gt; off)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:BCALLs:By Name:Other|PowerOff]] [[Category:83Plus:BCALLs:By Name|PowerOff]] [[Category:83Plus:BCALLs:By Address|5008 - PowerOff]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' PowerOff&lt;br /&gt;
&lt;br /&gt;
'''BCALL Address:''' 5008&lt;br /&gt;
&lt;br /&gt;
Turns off the calculator&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
=== Destroys ===&lt;br /&gt;
Unknown, please add.&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
This B_CALL turns off the calculator. I haven't researched anything regarding this B_CALL, thus if you find something out please add it.&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Talk:83Plus:Ports:10</id>
		<title>Talk:83Plus:Ports:10</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Talk:83Plus:Ports:10"/>
				<updated>2005-04-04T03:04:04Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I think it'd be nice if someone can find out what the missing command bytes do. :-) --[[User:Aquanight|Aquanight]] 20:04, 3 Apr 2005 (PDT)&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:Ports:11</id>
		<title>83Plus:Ports:11</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:Ports:11"/>
				<updated>2005-04-04T03:00:51Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:Ports:By Address|11 - LCD Data]][[Category:83Plus:Ports:By Name|LCD Data]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Port Number:''' 11h&lt;br /&gt;
&lt;br /&gt;
'''Function:''' LCD Data Port&lt;br /&gt;
&lt;br /&gt;
This port transfers data to and from the LCD driver's internal RAM.&lt;br /&gt;
&lt;br /&gt;
=== Read Values ===&lt;br /&gt;
* The byte at the current location in RAM. Each bit corresponds to one pixel.&lt;br /&gt;
&lt;br /&gt;
=== Write Values ===&lt;br /&gt;
* Sets the byte at the current RAM location. Each bit corresponds to one pixel.&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
In 6-bit transfer mode, only bits 0~5 have any significance.&lt;br /&gt;
&lt;br /&gt;
THe RAM location affected can be changed through the [[83Plus:Ports:10|command port]]. The location will also automatically change according to the auto-increment or auto-decrement mode as set in the command port. As with sending commands, you must wait a full LCD Cycle (10 microseconds) between reads and writes.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;;Cause all the pixels at the current location to be black.&lt;br /&gt;
 ld a, 0FFh&lt;br /&gt;
 out (11h), a&lt;br /&gt;
 push hl&lt;br /&gt;
 push de&lt;br /&gt;
 pop de&lt;br /&gt;
 pop hl&lt;br /&gt;
 nop&lt;br /&gt;
 ;And turn them back off.&lt;br /&gt;
 xor a&lt;br /&gt;
 out (11h), a&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:Ports:11</id>
		<title>83Plus:Ports:11</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:Ports:11"/>
				<updated>2005-04-04T03:00:24Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:Ports:By Address|11 - LCD Data]][[Category:83Plus:Ports:By Name|LCD Data]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Port Number:''' 11h&lt;br /&gt;
&lt;br /&gt;
'''Function:''' LCD Data Port&lt;br /&gt;
&lt;br /&gt;
This port transfers data to and from the LCD driver's internal RAM.&lt;br /&gt;
&lt;br /&gt;
=== Read Values ===&lt;br /&gt;
* The byte at the current location in RAM. Each bit corresponds to one pixel.&lt;br /&gt;
&lt;br /&gt;
=== Write Values ===&lt;br /&gt;
* Sets the byte at the current RAM location. Each bit corresponds to one pixel.&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
In 6-bit word mode only bits 0~5 have any significance.&lt;br /&gt;
&lt;br /&gt;
THe RAM location affected can be changed through the [[83Plus:Ports:10|command port]]. The location will also automatically change according to the auto-increment or auto-decrement mode as set in the command port. As with sending commands, you must wait a full LCD Cycle (10 microseconds) between reads and writes.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;;Cause all the pixels at the current location to be black.&lt;br /&gt;
 ld a, 0FFh&lt;br /&gt;
 out (11h), a&lt;br /&gt;
 push hl&lt;br /&gt;
 push de&lt;br /&gt;
 pop de&lt;br /&gt;
 pop hl&lt;br /&gt;
 nop&lt;br /&gt;
 ;And turn them back off.&lt;br /&gt;
 xor a&lt;br /&gt;
 out (11h), a&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:Ports:10</id>
		<title>83Plus:Ports:10</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:Ports:10"/>
				<updated>2005-04-04T02:54:46Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:Ports:By Address|10 - LCD Command/Status Port]][[Category:83Plus:Ports:By Name|LCD Command/Status Port]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Port Number:''' 10h&lt;br /&gt;
&lt;br /&gt;
'''Function:''' LCD Command and Status Port&lt;br /&gt;
&lt;br /&gt;
This port is used to check the status of and send commands to the TI-83+'s LCD Driver.&lt;br /&gt;
&lt;br /&gt;
=== Read Values ===&lt;br /&gt;
The state of the LCD can be determined by reading this port.&lt;br /&gt;
* Bit 0: Set if auto-increment mode (commands 05 and 07) is selected, reset if auto-decrement mode (commands 04 and 06) is selected.&lt;br /&gt;
* Bit 1: Set if auto-increment or auto-decrement will affect the current column, or reset if auto-increment/decrement will affect the current row.&lt;br /&gt;
* Bit 2, 3: Not used.&lt;br /&gt;
* Bit 4: Set if in reset state, reset if in operating state. (Whatever that means.)&lt;br /&gt;
* Bit 5: Set if the display is enabled. Reset if disabled. (Note: LCD is completely turned off via [[83Plus:Ports:03|Port 03h]].)&lt;br /&gt;
* Bit 6: Set if the LCD will transfer 8 bits at a time through [[83Plus:Ports:11|Port 11]]. Reset if the LCD will only trasfer 6 bits at a time.&lt;br /&gt;
* Bit 7: Set if the LCD is busy. Reset if a command can be accepted.&lt;br /&gt;
&lt;br /&gt;
=== Write Values ===&lt;br /&gt;
Writing this port sends a command to the LCD. Once you send a command, wait until bit 7 reads 0 before sending another. You need a minimum delay of 10 microseconds (60 cycles of whatever else on the 6MHz TI-83+, or ~150 on a TI-83+ Silver or any TI-84+ when running in [83Plus:Ports:20|fast mode]]).&lt;br /&gt;
&lt;br /&gt;
* 00 : Switch to 6-bit mode. ([[83Plus:Ports:11|Port 11]] transfers 6-bits at a time.)&lt;br /&gt;
* 01 : Switch to 8-bit mode. ([[83Plus:Ports:11|Port 11]] transfers 8-bits at a time.)&lt;br /&gt;
* 02 : Disable the screen. This blanks the screen and disconnects the LCD RAM from the physical screen, thus allowing you to use the LCD RAM as extra saferam. (But accessing it is so horribly slow that you should only do this if the usual saferam areas aren't enough and you don't need to display anything.)&lt;br /&gt;
* 03 : Enable the screen. This resumes displaying the LCD's RAM contents to the physical screen. (So any garbage you put into LCD RAM while it was off will show up, so B_CALL ClrLCDFull before this!)&lt;br /&gt;
* 04 : Set X auto-decrement mode. Every read or write operation from the data port will cause the LCD's internal pointer to move up one row.&lt;br /&gt;
* 05 : Set X auto-increment mode. Every read or write operation from the data port will cause the LCD's internal pointer to move down one row. The TI-83+ expects the LCD to be in this mode for most display routines.&lt;br /&gt;
* 06 : Set Y auto-decrement mode. Every read or write operation from the data port will cause the LCD's internal pointer to move left one column.&lt;br /&gt;
* 07 : Set Y auto-increment mode. Every read or write operation from the data port will cause the LCD's internal pointer to move right one column.&lt;br /&gt;
* [08~0B]: Set power supply enhancement. You'd be well advised to just leave this alone.&lt;br /&gt;
* [10~13]: Set power supply level. You'd be well advised to just leave this alone.&lt;br /&gt;
* [14~17]: Undefined.&lt;br /&gt;
* [18]: Cancel test mode (see Comments).&lt;br /&gt;
* [19~1B]: Undefined.&lt;br /&gt;
* [1C~1F]: Enter test mode (see Comments).&lt;br /&gt;
* [20~2E]: Set column when in 8-bit mode (command 01).&lt;br /&gt;
* [20~33]: Set column when in 6-bit mode (command 00).&lt;br /&gt;
* [34~3F]: Undefined.&lt;br /&gt;
* [40~7F]: &amp;quot;Z addressing&amp;quot; (It just changed what phyiscal row the top row of RAM is displayed on. The LCD will wrap the bottom of it's RAM to the top of the screen as needed.)&lt;br /&gt;
* [80~BF]: Set row.&lt;br /&gt;
* [C0~FF]: Set contrast. (C0 is lowest. Note that there is a [[83Plus:RAM:8447|System RAM area (contrast)]] for this which will need to be updated if you want 2nd+Up/2nd+Down to change the contast as expected (instead of causing a sudden jump...).)&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
As mentioned, a 10 microsecond delay is required after sending the command. TI provides a routine at 000B (use normal CALL, not BCALL) that will delay the required amount of time. In addition, this code sequence should also provide sufficent delay while also being non-destructive.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; push hl ;15&lt;br /&gt;
 push de ;30&lt;br /&gt;
 pop de ;44&lt;br /&gt;
 pop hl ;58&lt;br /&gt;
 nop ;62&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But I would advise you actually make use of these waste cycles somehow (process a buffer or something).&lt;br /&gt;
&lt;br /&gt;
'''Test mode'''&lt;br /&gt;
This is a very dangerous mode. The first test mode command (1C~1F) causes the screen to receive an unusually high amount of energy. The result is that the screen seems to go blank, save for a single blue(!) line. Each subsequent command adds more blue lines. After you've had your fill of blueness, exit test mode by sending a exit test mode command (18), which also sets the contrast to it's highest. Now why is it dangerous? Sure it looks cool to make a supposedly black and white LCD to display BLUE, but you are pumping so much energy through the LCD to get this effect that leaving it in this mode for too long can cause long-term damage. Ever left your monitor on for a day or two and forget to set a screen saver? Remember how when you turned it off a burnt image of your screen remained? Well that's what can happen if you leave test mode on for too long. Other possible side effects include &amp;quot;dead pixels&amp;quot; (pixels that stay off no matter what you do).&lt;br /&gt;
&lt;br /&gt;
So don't use text mode okay? Just pretend you didn't hear about it...&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Turn the LCD &amp;quot;off&amp;quot; and back &amp;quot;on&amp;quot;.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ld a, 02h&lt;br /&gt;
 out (10h), a&lt;br /&gt;
 push hl ;Or do something else that takes ~60 TStates.&lt;br /&gt;
 push de&lt;br /&gt;
 pop de&lt;br /&gt;
 pop hl&lt;br /&gt;
 nop&lt;br /&gt;
 inc a&lt;br /&gt;
 out (10h), a&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Talk:WikiTI_Home</id>
		<title>Talk:WikiTI Home</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Talk:WikiTI_Home"/>
				<updated>2005-04-02T06:46:51Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Discussion =&lt;br /&gt;
What do you think about this wiki?&lt;br /&gt;
&lt;br /&gt;
== More! ==&lt;br /&gt;
&lt;br /&gt;
I think it needs information on more calculators than just the Ti-83+ series, and general assembly information (like a good cathegorized tutorial overview for instance) wouldn't hurt either, I think :)&lt;br /&gt;
&lt;br /&gt;
Timendus&lt;br /&gt;
&lt;br /&gt;
== I hope we can do that soon ==&lt;br /&gt;
&lt;br /&gt;
Just, we don't want to waste time getting it all set up for that and have no one use it. If we see a lot of people milling around here, contributing, then by all means, we'll expand. But one thing we '''DON'T''' want to do is mirror 28 Days. We can link TO it, but we don't want it actually here.&lt;br /&gt;
&lt;br /&gt;
--[[User:AndyJ|AndyJ]] 06:50, 27 Mar 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
== Categories ==&lt;br /&gt;
&lt;br /&gt;
On many pages, there is now a sizable blank space at the top due to several lines of category links.  What, if anything, should we do about this? [[User:FloppusMaximus|FloppusMaximus]] 19:06, 29 Mar 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
== Move them? ==&lt;br /&gt;
&lt;br /&gt;
Move the Category links to the bottom should do it. :) That, or put them all on one line.&lt;br /&gt;
&lt;br /&gt;
--[[User:AndyJ|AndyJ]] 19:07, 29 Mar 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
:Yeah, that sounds like a good idea. :) [[User:FloppusMaximus|FloppusMaximus]] 20:18, 29 Mar 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
:: I think I officially qualify as a robot now.  You can tell I was getting tired towards the end, as I missed the minor-edit button a few times... sorry about that... [[User:FloppusMaximus|FloppusMaximus]] 21:28, 29 Mar 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
== Caching ==&lt;br /&gt;
&lt;br /&gt;
Is it just me, or are there some serious caching problems here?&lt;br /&gt;
[[User:FloppusMaximus|FloppusMaximus]] 21:32, 1 Apr 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
: In particular?  --[[User:Dan Englender|Dan Englender]] 21:42, 1 Apr 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
:: Ya, the wiki seems to have weird caching problems, especially since it appears the reload the page every time, even if it doesn't get changes. I don't know what's up. --[[User:AndyJ|AndyJ]] 22:35, 1 Apr 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
::: Considering the dynamic nature of a wiki (a page could be edited, at pretty much any time), I wouldn't mind not having it cached. (Though I would personally disable browser caching altogether if firefox would let me... :P ) --[[User:Aquanight|Aquanight]] 22:44, 1 Apr 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
:::: Er... I think I see what you mean... stuff is getting cached when it shouldn't be. (I could've sworn I told firefox to only use 0 KB (aka none) for cache and it's still caching ... argh.) --[[User:Aquanight|Aquanight]] 22:46, 1 Apr 2005 (PST)&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Talk:WikiTI_Home</id>
		<title>Talk:WikiTI Home</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Talk:WikiTI_Home"/>
				<updated>2005-04-02T06:44:47Z</updated>
		
		<summary type="html">&lt;p&gt;Aquanight: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Discussion =&lt;br /&gt;
What do you think about this wiki?&lt;br /&gt;
&lt;br /&gt;
== More! ==&lt;br /&gt;
&lt;br /&gt;
I think it needs information on more calculators than just the Ti-83+ series, and general assembly information (like a good cathegorized tutorial overview for instance) wouldn't hurt either, I think :)&lt;br /&gt;
&lt;br /&gt;
Timendus&lt;br /&gt;
&lt;br /&gt;
== I hope we can do that soon ==&lt;br /&gt;
&lt;br /&gt;
Just, we don't want to waste time getting it all set up for that and have no one use it. If we see a lot of people milling around here, contributing, then by all means, we'll expand. But one thing we '''DON'T''' want to do is mirror 28 Days. We can link TO it, but we don't want it actually here.&lt;br /&gt;
&lt;br /&gt;
--[[User:AndyJ|AndyJ]] 06:50, 27 Mar 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
== Categories ==&lt;br /&gt;
&lt;br /&gt;
On many pages, there is now a sizable blank space at the top due to several lines of category links.  What, if anything, should we do about this? [[User:FloppusMaximus|FloppusMaximus]] 19:06, 29 Mar 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
== Move them? ==&lt;br /&gt;
&lt;br /&gt;
Move the Category links to the bottom should do it. :) That, or put them all on one line.&lt;br /&gt;
&lt;br /&gt;
--[[User:AndyJ|AndyJ]] 19:07, 29 Mar 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
:Yeah, that sounds like a good idea. :) [[User:FloppusMaximus|FloppusMaximus]] 20:18, 29 Mar 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
:: I think I officially qualify as a robot now.  You can tell I was getting tired towards the end, as I missed the minor-edit button a few times... sorry about that... [[User:FloppusMaximus|FloppusMaximus]] 21:28, 29 Mar 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
== Caching ==&lt;br /&gt;
&lt;br /&gt;
Is it just me, or are there some serious caching problems here?&lt;br /&gt;
[[User:FloppusMaximus|FloppusMaximus]] 21:32, 1 Apr 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
: In particular?  --[[User:Dan Englender|Dan Englender]] 21:42, 1 Apr 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
:: Ya, the wiki seems to have weird caching problems, especially since it appears the reload the page every time, even if it doesn't get changes. I don't know what's up. --[[User:AndyJ|AndyJ]] 22:35, 1 Apr 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
::: Considering the dynamic nature of a wiki (a page could be edited, at pretty much any time), I wouldn't mind not having it cached. (Though I would personally disable browser caching altogether if firefox would let me... :P ) --[[User:Aquanight|Aquanight]] 22:44, 1 Apr 2005 (PST)&lt;/div&gt;</summary>
		<author><name>Aquanight</name></author>	</entry>

	</feed>