<?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=Kalimero</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=Kalimero"/>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Special:Contributions/Kalimero"/>
		<updated>2026-05-19T13:46:19Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.23.5</generator>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Category:83Plus:Ports:Unknown</id>
		<title>Category:83Plus:Ports:Unknown</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Category:83Plus:Ports:Unknown"/>
				<updated>2009-06-12T17:15:35Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: /* SE Calculator Ports Only */ port B/C control timeout?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:Ports:By_Address|Unknown Ports]]&lt;br /&gt;
&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
There are several ports that have not yet been totally solved. Here is a list of them and what information is available.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===83+ &amp;amp; SE Calculator Ports===&lt;br /&gt;
'''Port 04:''' Writing:&lt;br /&gt;
* Bit 3: always 0, doesn't seem to have any effect&lt;br /&gt;
* Bit 4: always 1, doesn't seem to have any effect, guessing leftover from 83 code&lt;br /&gt;
* Bit 5: always 1, guessing same as 83&lt;br /&gt;
* Bit 6: default 1, guessing same as 83&lt;br /&gt;
* Bit 7: Voltage level at which port 02 bit 0 flips, default 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===SE Calculator Ports Only===&lt;br /&gt;
'''Port 0B:'''&lt;br /&gt;
* Tied to the link assist on the SE calculators. Only written to in boot code where it receives B4. Possibly controls the timeout for receiving.&lt;br /&gt;
&lt;br /&gt;
'''Port 0C:'''&lt;br /&gt;
* Tied to the link assist on the SE calculators. Only written to in boot code where it receives B4. Possibly controls the timeout for sending.&lt;br /&gt;
&lt;br /&gt;
'''Port 0E:'''&lt;br /&gt;
* Tied with swapping bank $4000. Before swapping pages this port should contain 00, otherwise data read from those pages may not be accurate. &lt;br /&gt;
&lt;br /&gt;
'''Port 0F:'''&lt;br /&gt;
* Tied with swapping bank $8000. Before swapping pages this port should contain 00, otherwise data read from those pages may not be accurate.&lt;br /&gt;
&lt;br /&gt;
'''Port 21:'''&lt;br /&gt;
* Although used as a hardware detection, it's more likely to be ram execution protection. See the talk page for more info. [[Talk:83Plus:Ports:21|Talk Page Port 21]]&lt;br /&gt;
&lt;br /&gt;
'''Port 25:'''&lt;br /&gt;
* This port acts similarly to flash restriction port 22. Set to 16 by default. This is a [[:Category:83Plus:Ports:By_Address:Protected|protected port]].&lt;br /&gt;
&lt;br /&gt;
'''Port 26:'''&lt;br /&gt;
* This port acts similarly to flash restriction port 2223. Set to 32 by default. This is a [[:Category:83Plus:Ports:By_Address:Protected|protected port]].&lt;br /&gt;
&lt;br /&gt;
'''Port 2D:'''&lt;br /&gt;
* Only bits 0 and 1 can be altered, but no effect is apparent.&lt;br /&gt;
&lt;br /&gt;
'''USB Ports:'''&lt;br /&gt;
* All information concerning the USB ports will be handled [[83Plus:OS:84_Plus_USB_Information|here]].&lt;br /&gt;
&lt;br /&gt;
==Comments==&lt;br /&gt;
Other ports have unknown functions but are never written to, read from, or change in a significant way. Port 15 on the SE calculators has a value that does seem possible to change, but is not used directly. Other ports likely have no purpose at all.&lt;br /&gt;
&lt;br /&gt;
There is still quite bit unknown about the hardware, however the remainder is less significant to or can not be used by the average coder.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Credits and Contributions ==&lt;br /&gt;
* '''Tijl Coosemans'''&lt;br /&gt;
* '''Dan Englender'''&lt;br /&gt;
* '''James Montelongo'''&lt;br /&gt;
* '''Michael Vincent'''&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:Ports:16</id>
		<title>83Plus:Ports:16</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:Ports:16"/>
				<updated>2009-06-12T17:03:40Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: /* Credits and Contributions */ new url&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:Ports:By_Address:Protected|16 - Flash Sector Exclusion]] [[Category:83Plus:Ports:By_Address|16 - Flash Page Exclusion]] [[Category:83Plus:Ports:By_Name|Flash Page Exclusion]]&lt;br /&gt;
{{Protected Port}}&lt;br /&gt;
&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Port Number:''' 16h&lt;br /&gt;
&lt;br /&gt;
'''Function:''' Flash Sector/Page Exclusion&lt;br /&gt;
&lt;br /&gt;
This port controls which sectors or pages of Flash may contain executable code.&lt;br /&gt;
&lt;br /&gt;
=== Read Values ===&lt;br /&gt;
* Nothing useful (mirror of [[83Plus:Ports:14|port 14]], I think.)&lt;br /&gt;
&lt;br /&gt;
=== Write Values ===&lt;br /&gt;
* Each bit maps to a page, as determined by [[83Plus:Ports:05|port 5]].  Set a bit to disallow execution on that page.&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
The above only applies to the 83+ basic; the port's function on the SE and 84+ is not known.&lt;br /&gt;
&lt;br /&gt;
This port is protected, just as [[83Plus:Ports:14|port 14]] is; it is the only other protected port in the original hardware.  Note that as with most protected ports, Flash must be write-enabled for writing to have any effect.&lt;br /&gt;
&lt;br /&gt;
It is used, as are ports [[83Plus:Ports:22|22]] and [[83Plus:Ports:23|23]] on the SE, to prevent code in the archive from executing, thus theoretically limiting Flash execution privileges to FlashApps.&lt;br /&gt;
&lt;br /&gt;
=== An alternate version? ===&lt;br /&gt;
The 83+ boot code version 1.00 contains some additional code for handling this port somewhat differently.  Instead of controlling individual pages, each bit corresponds to a Flash ''sector:''&lt;br /&gt;
&lt;br /&gt;
* Bit 0: Set if execution is not allowed in sector SA2 (pages 08-0B.)&lt;br /&gt;
* Bit 1: Set if execution is not allowed in sector SA3 (pages 0C-0F.)&lt;br /&gt;
* Bit 2: Set if execution is not allowed in sector SA4 (pages 10-13.)&lt;br /&gt;
* Bit 3: Set if execution is not allowed in sector SA5 (pages 14-17.)&lt;br /&gt;
&lt;br /&gt;
'''It is not currently known whether any actual calculators use this method of protection.''' Hypothetically, such a calculator would be indicated by a low [[83Plus:Ports:02|port 2 bit 1]].  Since recent OS's use this bit as an LCD status -- and therefore, that bit being permanently low would freeze the calculator -- it seems unlikely that this method was ever used in real 83+'s.&lt;br /&gt;
&lt;br /&gt;
== Credits and Contributions ==&lt;br /&gt;
* '''Tijl Coosemans:''' Documentation [http://tijl.ulyssis.be/83phwinfo.txt here].&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[83Plus:Ports:05#Synopsis (TI-83 Plus)|Port 5]]&lt;br /&gt;
* [[83Plus:Ports:22|Port 22]]&lt;br /&gt;
* [[83Plus:Ports:23|Port 23]]&lt;/div&gt;</summary>
		<author><name>Kalimero</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>2009-06-12T16:51:23Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: /* Credits and Contributions */ change url&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:Ports:By_Address|05 - RAM Page(SE) - Port 16 Config/Link Assist(83+)]] [[Category:83Plus:Ports:By_Name|RAM Page(SE) - Port 16 Config/Link Assist(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 map RAM pages, not flash pages.&lt;br /&gt;
&lt;br /&gt;
=== Read Values ===&lt;br /&gt;
Returns the current RAM page.&lt;br /&gt;
&lt;br /&gt;
=== Write Values ===&lt;br /&gt;
Sets the current RAM page, by giving a value in 00h-07h, inclusive. &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/Link Assist Read&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. Also, this port is used to read the last byte the link assist received.&lt;br /&gt;
&lt;br /&gt;
=== Read Values ===&lt;br /&gt;
The last byte received by the link assist (see [[83Plus:Ports:00|port 0]] for more information).&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.  The value of port 05h affects which bits of port 16h are acted on.  An 'X' in the table indicates the bit is ignored.&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://tijl.ulyssis.be/83phwinfo.txt here].&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:OS:Memory_Mapping</id>
		<title>83:OS:Memory Mapping</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:OS:Memory_Mapping"/>
				<updated>2009-06-12T16:18:19Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83:OS Information|Memory Mapping]]&lt;br /&gt;
== Memory Mapping ==&lt;br /&gt;
Memory on the TI83 has been split up in 16Kb pages. The 256Kb of ROM has been split up in 16 such pages. The 32Kb of RAM have been split up in 2 pages.&lt;br /&gt;
&lt;br /&gt;
The following table describes how these pages are mapped to the 16 bit address space of the z80 depending on the value of various I/O ports.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table width=&amp;quot;100%&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; style=&amp;quot;border: 1px solid #AAA; text-align: center&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;10%&amp;quot;&amp;gt;[[83:Ports:04|Port 04]] bit 0&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;10%&amp;quot;&amp;gt;[[83:Ports:02|Port 02]] bit 6&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;10%&amp;quot;&amp;gt;[[83:Ports:02|Port 02]] bit 7&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;10%&amp;quot;&amp;gt;[[83:Ports:02|Port 02]] bit 3&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;15%&amp;quot; style=&amp;quot;border-left: 1px solid #AAA&amp;quot;&amp;gt;0x0000&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;15%&amp;quot;&amp;gt;0x4000&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;15%&amp;quot;&amp;gt;0x8000&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;15%&amp;quot;&amp;gt;0xC000&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;*&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA; border-left: 1px solid #AAA&amp;quot;&amp;gt;ROM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;SWAP&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;ROM0/8&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;RAM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;*&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-left: 1px solid #AAA&amp;quot;&amp;gt;ROM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;SWAP&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ROM1/9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;*&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-left: 1px solid #AAA&amp;quot;&amp;gt;ROM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;SWAP&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;''0''&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;''*''&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;''1''&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;''1''&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-left: 1px solid #AAA&amp;quot;&amp;gt;''ROM0''&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;''SWAP''&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;''RAM1''&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;''RAM0''&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA; border-left: 1px solid #AAA&amp;quot;&amp;gt;ROM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;ROM0/8&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;SWAP&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;ROM0/8&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-left: 1px solid #AAA&amp;quot;&amp;gt;ROM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ROM0/8&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;SWAP&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ROM1/9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-left: 1px solid #AAA&amp;quot;&amp;gt;ROM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ROM0/8&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;SWAP&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-left: 1px solid #AAA&amp;quot;&amp;gt;ROM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ROM0/8&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;SWAP&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA; border-left: 1px solid #AAA&amp;quot;&amp;gt;ROM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;RAM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;RAM1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;ROM0/8&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-left: 1px solid #AAA&amp;quot;&amp;gt;ROM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ROM1/9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-left: 1px solid #AAA&amp;quot;&amp;gt;ROM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-left: 1px solid #AAA&amp;quot;&amp;gt;ROM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*RAMx = RAM Page x&lt;br /&gt;
*ROMx = ROM Page x&lt;br /&gt;
*ROMx/y = ROM Page x or y depending on [[83:Ports:00|bit 4 of port 00]].&lt;br /&gt;
*SWAP = Page swappable through [[83:Ports:02|port 02 bits 0, 1, 2 and 6]] and [[83:Ports:00|port 00 bit 4]].&lt;br /&gt;
&lt;br /&gt;
The line in italics is the [[83:OS:Memory Layout|default mode]].&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Category:Z80_Routines</id>
		<title>Category:Z80 Routines</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Category:Z80_Routines"/>
				<updated>2007-06-24T18:48:13Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: link to official Z80 Bits site&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Calculator Documentation|General Z80 Calculator Routines]]&lt;br /&gt;
This Category contains routines that can be used on many Z80-based calculators. Please consult each example for which calculators they apply to.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
When you paste code, there is a simple step you can do to format the code properly. Start the first line of code with &amp;amp;lt;nowiki&amp;amp;gt;, and put a space in front of the &amp;amp;lt;. On the last line of your code, end it with &amp;amp;lt;/nowiki&amp;amp;gt;. This allows for code to be formatted like this (click edit on this page to see how it's done):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;cp 10&lt;br /&gt;
ccf&lt;br /&gt;
adc a, 30h&lt;br /&gt;
daa&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, there are a bunch of routines on the [http://www.detachedsolutions.com/forum/viewtopic.php?t=1154 DS forums] and at [http://baze.au.com/misc/z80bits.html Z80 Bits].&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:Ports:16</id>
		<title>83Plus:Ports:16</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:Ports:16"/>
				<updated>2007-01-27T23:05:26Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: /* Credits and Contributions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:Ports:By_Address:Protected|16 - Flash Sector Exclusion]] [[Category:83Plus:Ports:By_Address|16 - Flash Page Exclusion]] [[Category:83Plus:Ports:By_Name|Flash Page Exclusion]]&lt;br /&gt;
{{Protected Port}}&lt;br /&gt;
&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Port Number:''' 16h&lt;br /&gt;
&lt;br /&gt;
'''Function:''' Flash Sector/Page Exclusion&lt;br /&gt;
&lt;br /&gt;
This port controls which sectors or pages of Flash may contain executable code.&lt;br /&gt;
&lt;br /&gt;
=== Read Values ===&lt;br /&gt;
* Nothing useful (mirror of [[83Plus:Ports:14|port 14]], I think.)&lt;br /&gt;
&lt;br /&gt;
=== Write Values ===&lt;br /&gt;
* Each bit maps to a page, as determined by [[83Plus:Ports:05|port 5]].  Set a bit to disallow execution on that page.&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
The above only applies to the 83+ basic; the port's function on the SE and 84+ is not known.&lt;br /&gt;
&lt;br /&gt;
This port is protected, just as [[83Plus:Ports:14|port 14]] is; it is the only other protected port in the original hardware.  Note that as with most protected ports, Flash must be write-enabled for writing to have any effect.&lt;br /&gt;
&lt;br /&gt;
It is used, as are ports [[83Plus:Ports:22|22]] and [[83Plus:Ports:23|23]] on the SE, to prevent code in the archive from executing, thus theoretically limiting Flash execution privileges to FlashApps.&lt;br /&gt;
&lt;br /&gt;
=== An alternate version? ===&lt;br /&gt;
The 83+ boot code version 1.00 contains some additional code for handling this port somewhat differently.  Instead of controlling individual pages, each bit corresponds to a Flash ''sector:''&lt;br /&gt;
&lt;br /&gt;
* Bit 0: Set if execution is not allowed in sector SA2 (pages 08-0B.)&lt;br /&gt;
* Bit 1: Set if execution is not allowed in sector SA3 (pages 0C-0F.)&lt;br /&gt;
* Bit 2: Set if execution is not allowed in sector SA4 (pages 10-13.)&lt;br /&gt;
* Bit 3: Set if execution is not allowed in sector SA5 (pages 14-17.)&lt;br /&gt;
&lt;br /&gt;
'''It is not currently known whether any actual calculators use this method of protection.''' Hypothetically, such a calculator would be indicated by a low [[83Plus:Ports:02|port 2 bit 1]].  Since recent OS's use this bit as an LCD status -- and therefore, that bit being permanently low would freeze the calculator -- it seems unlikely that this method was ever used in real 83+'s.&lt;br /&gt;
&lt;br /&gt;
== Credits and Contributions ==&lt;br /&gt;
* '''Tijl Coosemans:''' Documentation [http://kalimero.be/83phwinfo.txt here].&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[83Plus:Ports:05#Synopsis (TI-83 Plus)|Port 5]]&lt;br /&gt;
* [[83Plus:Ports:22|Port 22]]&lt;br /&gt;
* [[83Plus:Ports:23|Port 23]]&lt;/div&gt;</summary>
		<author><name>Kalimero</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>2007-01-27T23:04:56Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: /* Credits and Contributions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:Ports:By_Address|05 - RAM Page(SE) - Port 16 Config/Link Assist(83+)]] [[Category:83Plus:Ports:By_Name|RAM Page(SE) - Port 16 Config/Link Assist(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 map RAM pages, not flash pages.&lt;br /&gt;
&lt;br /&gt;
=== Read Values ===&lt;br /&gt;
Returns the current RAM page.&lt;br /&gt;
&lt;br /&gt;
=== Write Values ===&lt;br /&gt;
Sets the current RAM page, by giving a value in 00h-07h, inclusive. &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/Link Assist Read&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. Also, this port is used to read the last byte the link assist received.&lt;br /&gt;
&lt;br /&gt;
=== Read Values ===&lt;br /&gt;
The last byte received by the link assist (see [[83Plus:Ports:00|port 0]] for more information).&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://kalimero.be/83phwinfo.txt here].&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Help_talk:Contents</id>
		<title>Help talk:Contents</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Help_talk:Contents"/>
				<updated>2005-10-19T12:28:21Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: /* Vandalism */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Discussion =&lt;br /&gt;
What do you think?&lt;br /&gt;
&lt;br /&gt;
== FAQ Started ==&lt;br /&gt;
Here is a little something that I wrote up.  Hopefully, it'll answer many of a newbie's questions.  If there are more, I guess you should ask in #WikiTI and hope that somebody answers and updates this FAQ.  [[User:Gambit|Gambit]] 17:02, 3 Apr 2005 (PDT)&lt;br /&gt;
&lt;br /&gt;
== Vandalism ==&lt;br /&gt;
Hooray!  Our first spam!  Much as I hate to say this, you might want to consider protecting this page -- it was presumably a target because most, if not all, MediaWiki sites will have a 'Help:Contents', so the robots know it's here. --[[User:FloppusMaximus|FloppusMaximus]] 13:30, 18 Oct 2005 (PDT)&lt;br /&gt;
:Mmmm, I drew the same conclusion so I did protect it. I did an RDNS on each of the IPs, and only one resolved ([17:27:44] * Dns resolved 196.7.0.160 to ge1-0.cc1.cpt1.alter.net). We should probably send a permalink to the vandalism to abuse@alter.net or somesuch, but it'd be best if it could have an @denglend.net return address -- Dan, you paying attention to anything anymore? [[User:AndyJ|Andy Janata]] 14:34, 18 Oct 2005 (PDT)&lt;br /&gt;
:Also, we could go the template route -- have, perhaps, {{[[Template:Help Contents|Help Contents]]}} as the sole content of this page, save for an HTML comment telling people where to go to edit it. [[User:AndyJ|Andy Janata]] 14:44, 18 Oct 2005 (PDT)&lt;br /&gt;
::Maybe you should only allow edits from users that are logged in. Or would that be too restrictive? --[[User:Kalimero|Kalimero]] 05:28, 19 Oct 2005 (PDT)&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Talk:83Plus:OS:ByROMPage</id>
		<title>Talk:83Plus:OS:ByROMPage</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Talk:83Plus:OS:ByROMPage"/>
				<updated>2005-09-10T15:11:17Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Does the 83- really have this? Shouldn't this be 83Plus:OS:blabla? --[[User:AndyJ|Andy Janata]] 06:31, 10 Sep 2005 (PDT)&lt;br /&gt;
:The 83 has 16 rom pages, so yes, this is probably something for the 83Plus section. There isn't any rom page on the 83 that starts with a 3-byte vector table either. --[[User:Kalimero|Kalimero]] 08:11, 10 Sep 2005 (PDT)&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Talk:83Plus:Flags:05</id>
		<title>Talk:83Plus:Flags:05</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Talk:83Plus:Flags:05"/>
				<updated>2005-08-02T20:05:59Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; In the case of PutMap, it changes the &amp;quot;gravity&amp;quot; of the pixels; displaying an inverted&lt;br /&gt;
 character darkens the pixels to the left of it, whereas displaying a normal character&lt;br /&gt;
 clears the pixels to the right.&lt;br /&gt;
&lt;br /&gt;
Could you explain that a bit better? I'm having trouble grasping what you mean by that. --[[User:AndyJ|Andy Janata]] 20:44, 1 Aug 2005 (PDT)&lt;br /&gt;
:I think he means the black vertical bar on the left of a character when you display it using inverse video and then overwrite it again using normal video. So when you use inverse video, the character background is shifted one pixel to the left compared to using normal video. If you'd display an inverted character and then display a normal character to the left of it a line of black pixels will be cleared. At least, that's what I think he meant to say. --[[User:Kalimero|Kalimero]] 13:05, 2 Aug 2005 (PDT)&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Talk:83Plus:Ports:02</id>
		<title>Talk:83Plus:Ports:02</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Talk:83Plus:Ports:02"/>
				<updated>2005-07-15T15:00:45Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I've been looking into alot of the hardware and it doesn't look like bit 1 of port 2 is the inverse of the bit 7 of port 10. It looks more like a delay whenever the hardware is used. I compared the values I would get when polled the 2 ports and port 10 gave me quite a bit jitter when it came to the timing. Port 2 on the other hand I got no jitter at all. In fact I wrote to new lcd copy routine, one using port 2 and the other using port 10. On ther 83+(and SE @6mhz) Port 2 version updated faster. On the SE at 15mhz, port 10 version updated faster, while port 2 version was slower than 6mhz test was.  Thats enough to clearly say the bits aren't the same, But are used for the same purpose. --[[User:Jim e|Jim e]] 23:39, 30 Apr 2005 (PDT)&lt;br /&gt;
&lt;br /&gt;
:That bit seems to report things other than the LCD status.  On the BE, it determines whether the boot code will write to port 5 before writing to port 16.  (I have no idea what this means.) [[User:FloppusMaximus|FloppusMaximus]] 12:30, 1 May 2005 (PDT)&lt;br /&gt;
&lt;br /&gt;
::I haven't done many tests yet, but I think this bit is always set on the BE. My idea is that on the BE it is some sort of hardware version. When set, the hardware supports per page execution locking (using port 5 and 16). If it isn't set (older calcs maybe, or the flash sim?), the hardware only supports per sector execution locking (port 16 only).&lt;br /&gt;
::Pages 08-17 can be locked. When per page locking is supported, I'm guessing each bit of port 16 corresponds to a page and bit 0 of port 5 can be used to choose between 08-0F and 10-17. That doesn't explain the other bits of port 5, but like I said, I'm just guessing here anyway. Per sector locking has already been explained on the wiki page. Has that been tested on a real calc? --[[User:Kalimero|Kalimero]] 08:00, 15 Jul 2005 (PDT)&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Z80_Routines:Graphic:Fastcopy</id>
		<title>Z80 Routines:Graphic:Fastcopy</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Z80_Routines:Graphic:Fastcopy"/>
				<updated>2005-07-06T12:42:52Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: /* Safe Copy */ Change &amp;quot;in (c)&amp;quot; to &amp;quot;in f,(c)&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Z80 Routines:Graphic|fastcopy]][[Category:Z80 Routines|fastcopy]]&lt;br /&gt;
'''Warning:''' The routines presented below will fail on some calculators due to manufacturing defects. Before using any of the routines below, read the safe copy section below.&lt;br /&gt;
&lt;br /&gt;
The '''Fastcopy''' routine is used to copy the content of the Graph Buffer to the screen. It concerns all TI-z80 calculators, except TI-85 and TI-86, that has a special RAM area directly mapped to the screen.&lt;br /&gt;
&lt;br /&gt;
Fastcopy is widely used, because the rom call _GrBufCpy waits too long between each output to the LCD driver. Using Fastcopy instead of _GrBufCpy increases significantly the speed of a program if it refreshes often the display (such as a lot of games). Most shells have this routine as built-in (ION, MirageOS, Venus ...).&lt;br /&gt;
&lt;br /&gt;
Here is Joe Wingbermuehle's version, which is the one used in ION.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
;-----&amp;gt; Copy the gbuf to the screen (fast)&lt;br /&gt;
;Input: nothing&lt;br /&gt;
;Output:graph buffer is copied to the screen&lt;br /&gt;
fastCopy:&lt;br /&gt;
 di&lt;br /&gt;
 ld a,$80&lt;br /&gt;
 out ($10),a&lt;br /&gt;
 ld hl,gbuf-12-(-(12*64)+1)&lt;br /&gt;
 ld a,$20&lt;br /&gt;
 ld c,a&lt;br /&gt;
 inc hl&lt;br /&gt;
 dec hl&lt;br /&gt;
fastCopyAgain:&lt;br /&gt;
 ld b,64&lt;br /&gt;
 inc c&lt;br /&gt;
 ld de,-(12*64)+1&lt;br /&gt;
 out ($10),a&lt;br /&gt;
 add hl,de&lt;br /&gt;
 ld de,10&lt;br /&gt;
fastCopyLoop:&lt;br /&gt;
 add hl,de&lt;br /&gt;
 inc hl&lt;br /&gt;
 inc hl&lt;br /&gt;
 inc de&lt;br /&gt;
 ld a,(hl)&lt;br /&gt;
 out ($11),a&lt;br /&gt;
 dec de&lt;br /&gt;
 djnz fastCopyLoop&lt;br /&gt;
 ld a,c&lt;br /&gt;
 cp $2B+1&lt;br /&gt;
 jr nz,fastCopyAgain&lt;br /&gt;
 ret&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Remarks and Improvements==&lt;br /&gt;
* Some instructions in Joe Wingbermuehle's Fastcopy are only there for having enough delay between two outputs to the LCD driver. One can modify Fastcopy to change these useless instructions into instructions that will clear the Graph Buffer at the same time:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
;-----&amp;gt; Copy the gbuf to the screen and clear graph buffer (fast)&lt;br /&gt;
;Input: nothing&lt;br /&gt;
;Output:graph buffer is copied to the screen and subsequently cleared&lt;br /&gt;
fastCopy:&lt;br /&gt;
 di&lt;br /&gt;
 ld a,$80&lt;br /&gt;
 out ($10),a&lt;br /&gt;
 ld hl,gbuf-12-(-(12*64)+1)&lt;br /&gt;
 ld a,$20&lt;br /&gt;
 ld c,a&lt;br /&gt;
 inc hl&lt;br /&gt;
 dec hl&lt;br /&gt;
fastCopyAgain:&lt;br /&gt;
 ld b,64&lt;br /&gt;
 inc c&lt;br /&gt;
 ld de,-(12*64)+1&lt;br /&gt;
 out ($10),a&lt;br /&gt;
 add hl,de&lt;br /&gt;
 ld de,11&lt;br /&gt;
fastCopyLoop:&lt;br /&gt;
 add hl,de&lt;br /&gt;
 inc hl&lt;br /&gt;
 inc de&lt;br /&gt;
 ld a,(hl)&lt;br /&gt;
 ld (hl),0    ; clears the graph buffer at the same time&lt;br /&gt;
 out ($11),a&lt;br /&gt;
 dec de&lt;br /&gt;
 djnz fastCopyLoop&lt;br /&gt;
 ld a,c&lt;br /&gt;
 cp $2B+1&lt;br /&gt;
 jr nz,fastCopyAgain&lt;br /&gt;
 ret&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''ld (hl),0''' takes 10 cycles, so we can do with one less '''inc hl''' (6 cycles) and thus load 11 into de instead of 10.&lt;br /&gt;
&lt;br /&gt;
==Safe Copy==&lt;br /&gt;
Many calculators recently manufactured by TI contained a buggy LCD driver, which had different (or varying) delays required to interface with it. Using the fast copy routines above with the LCDs will cause the LCD to display garbled information. However, we can do some additional hardware work to solve this problem, by waiting until we know the LCD is ready to accept a command:&lt;br /&gt;
&lt;br /&gt;
* Bit 1 of Port 2 tells us that the lcd can accept an instruction&lt;br /&gt;
* Bit 7 of Port 10 tells us that the lcd can accept an instruction&lt;br /&gt;
&lt;br /&gt;
The TI-OS and other apps generally use port 2 but being that bit 7 is sign bit we can use that as faster method of waiting.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
;-----&amp;gt; Copy the gbuf to the screen, guaranteed &lt;br /&gt;
;Input: nothing&lt;br /&gt;
;Output:graph buffer is copied to the screen, no matter the speed settings&lt;br /&gt;
;&lt;br /&gt;
;in f,(c) is an unofficial instruction.&lt;br /&gt;
;You may have to add it in order for the routine to work.&lt;br /&gt;
&lt;br /&gt;
 .addinstr IN	F,(C)	70ED	2	NOP	1&lt;br /&gt;
&lt;br /&gt;
SafeCopy:	&lt;br /&gt;
	di&lt;br /&gt;
	ld c,$10&lt;br /&gt;
	ld a,$80&lt;br /&gt;
setrow:&lt;br /&gt;
	in f,(c)&lt;br /&gt;
	jp m,setrow&lt;br /&gt;
	out ($10),a&lt;br /&gt;
	ld hl,gbuf&lt;br /&gt;
	ld de,12&lt;br /&gt;
	ld a,$20&lt;br /&gt;
col:&lt;br /&gt;
	in f,(c)&lt;br /&gt;
	jp m,col&lt;br /&gt;
	out ($10),a&lt;br /&gt;
	ex af,af'&lt;br /&gt;
	ld b,64&lt;br /&gt;
row:&lt;br /&gt;
	ld a,(hl)&lt;br /&gt;
rowwait:&lt;br /&gt;
	in f,(c)&lt;br /&gt;
	jp m,rowwait&lt;br /&gt;
	out ($11),a&lt;br /&gt;
	add hl,de&lt;br /&gt;
	djnz row&lt;br /&gt;
	ex af,af'&lt;br /&gt;
	dec h&lt;br /&gt;
	dec h&lt;br /&gt;
	dec h&lt;br /&gt;
	inc hl&lt;br /&gt;
	inc a&lt;br /&gt;
	cp $2c&lt;br /&gt;
	jp nz,col&lt;br /&gt;
	ret&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kalimero</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-05-12T08:49:15Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: &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;br /&gt;
&lt;br /&gt;
What about the T6K04 since there are small yet important differences it may by a good Idea to include info on it. Also any one have a link to the T6K04.pdf  --[[User:Jim e|Jim e]] 20:03, 11 May 2005 (PDT)&lt;br /&gt;
:Do a google search for t6k04 and look who comes up first :) --[[User:Kalimero|Kalimero]] 01:49, 12 May 2005 (PDT)&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:OS:Memory_Mapping</id>
		<title>83:OS:Memory Mapping</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:OS:Memory_Mapping"/>
				<updated>2005-04-29T10:34:28Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: fixed c/p error&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83:OS Information|Memory Mapping]]&lt;br /&gt;
== Memory Mapping ==&lt;br /&gt;
Memory on the TI83 has been split up in 16Kb pages. The 256Kb of ROM has been split up in 16 such pages. The 32Kb of RAM have been split up in 2 pages.&lt;br /&gt;
&lt;br /&gt;
The following table describes how these pages are mapped to the 16 bit address space of the z80 depending on the value of various I/O ports.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table width=&amp;quot;100%&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; style=&amp;quot;border: 1px solid #AAA; text-align: center&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;10%&amp;quot;&amp;gt;[[83:Ports:04|Port 04]] bit 0&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;10%&amp;quot;&amp;gt;[[83:Ports:02|Port 02]] bit 6&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;10%&amp;quot;&amp;gt;[[83:Ports:02|Port 02]] bit 7&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;10%&amp;quot;&amp;gt;[[83:Ports:02|Port 02]] bit 3&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;15%&amp;quot; style=&amp;quot;border-left: 1px solid #AAA&amp;quot;&amp;gt;0x0000&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;15%&amp;quot;&amp;gt;0x4000&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;15%&amp;quot;&amp;gt;0x8000&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;15%&amp;quot;&amp;gt;0xC000&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;*&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA; border-left: 1px solid #AAA&amp;quot;&amp;gt;ROM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;SWAP&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;ROM0/8&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;RAM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;*&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-left: 1px solid #AAA&amp;quot;&amp;gt;ROM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;SWAP&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ROM1/8&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;*&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-left: 1px solid #AAA&amp;quot;&amp;gt;ROM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;SWAP&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;''0''&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;''*''&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;''1''&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;''1''&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-left: 1px solid #AAA&amp;quot;&amp;gt;''ROM0''&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;''SWAP''&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;''RAM1''&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;''RAM0''&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA; border-left: 1px solid #AAA&amp;quot;&amp;gt;ROM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;ROM0/8&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;SWAP&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;ROM0/8&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-left: 1px solid #AAA&amp;quot;&amp;gt;ROM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ROM0/8&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;SWAP&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ROM1/9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-left: 1px solid #AAA&amp;quot;&amp;gt;ROM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ROM0/8&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;SWAP&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-left: 1px solid #AAA&amp;quot;&amp;gt;ROM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ROM0/8&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;SWAP&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA; border-left: 1px solid #AAA&amp;quot;&amp;gt;ROM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;RAM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;RAM1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;ROM0/8&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-left: 1px solid #AAA&amp;quot;&amp;gt;ROM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ROM1/9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-left: 1px solid #AAA&amp;quot;&amp;gt;ROM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-left: 1px solid #AAA&amp;quot;&amp;gt;ROM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*RAMx = RAM Page x&lt;br /&gt;
*ROMx = ROM Page x&lt;br /&gt;
*ROMx/y = ROM Page x or y depending on [[83:Ports:00|bit 4 of port 00]].&lt;br /&gt;
*SWAP = Page swappable through [[83:Ports:02|port 02 bits 0, 1, 2 and 6]] and [[83:Ports:00|port 00 bit 4]].&lt;br /&gt;
&lt;br /&gt;
The line in italics is the [[83:OS:Memory Layout|default mode]].&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:Ports:04</id>
		<title>83:Ports:04</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:Ports:04"/>
				<updated>2005-04-28T22:07:17Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: added documentation for bits 5-7&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83:Ports:By_Address|04 - Timer Interrupt Frequency / Memory Map / Battery Status]] [[Category:83:Ports:By_Name|Timer Interrupt Frequency / Memory Map / Battery Status]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Port Number:''' 04h&lt;br /&gt;
&lt;br /&gt;
'''Function:''' Timer Interrupt Frequency, Memory Map Control and Battery Status Checking&lt;br /&gt;
&lt;br /&gt;
This port controls the frequency of the hardware timer and the memory map mode. The higher bits of this port control at which voltage level [[83:Ports:14|bit 0 of port 14]] flips.&lt;br /&gt;
&lt;br /&gt;
=== Read Values ===&lt;br /&gt;
This is a mirror of the link port.&lt;br /&gt;
&lt;br /&gt;
=== Write Values ===&lt;br /&gt;
* Bit 0 controls the [[83:OS:Memory Mapping|memory mapping mode]]. The default value for this bit is 0.&lt;br /&gt;
* Bits 1 and 2 control the hardware timer frequency. Setting both 0 sets the timer to the fastest speed, and both 1 is the slowest speed. The default is with both bits 1.&lt;br /&gt;
* Bit 3: Unused? Always 0.&lt;br /&gt;
* Bit 4: Timer frequency multiplier; when this bit is set, all the times are multiplied by 90% (i. e. it's 11.1% faster) compared to when it's reset.&lt;br /&gt;
* Bit 5: Set this bit to keep the [[83:OS:Hardware Reset|reset circuit]] high even when [[83:Ports:14|bit 0 of port 14]] is 0. The default value for this bit is 0.&lt;br /&gt;
* Bits 6-7: These bits control the voltage level you want to compare the batteries with. After changing these bits you need a delay for [[83:Ports:14|port 14]] to adapt. A 100 clock cycles should be more than sufficient. The default value for these bits is 00.&lt;br /&gt;
** 00: [[83:Ports:14|Bit 0 of port 14]] will go low when voltage drops below ~3.2V and high again when over ~3.5V.&lt;br /&gt;
** 10: [[83:Ports:14|Bit 0 of port 14]] will go low when voltage drops below ~3.5V and high again when over ~3.8V.&lt;br /&gt;
** 01: [[83:Ports:14|Bit 0 of port 14]] will go low when voltage drops below ~3.8V and high again when over ~4.2V. This test is continuously used by the OS to safe power down when necessary.&lt;br /&gt;
** 11: [[83:Ports:14|Bit 0 of port 14]] will go low when voltage drops below ~4.2V and high again when over ~4.6V. This test is used when you turn the calculator on to display a low battery warning when necessary.&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
* The voltages given above are purely indicative and may be highly inaccurate. (until somebody confirms them)&lt;br /&gt;
* To calculate the resulting timer frequency you can use the following formula:&lt;br /&gt;
:freq = 1800 * ((out_value &amp;amp; 0x10) ? 1.0 : 0.9) / (3 + ((out_value &amp;amp; 0x06) &amp;lt;&amp;lt; 1))&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
This example shows how to test the batteries.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; ld a,36h   ;First we make sure the calculator doesn't reset&lt;br /&gt;
 out (4),a  ;when we change bits 6 and 7.&lt;br /&gt;
 ld a,76h   ;We'll check if batteries are below ~3.8V.&lt;br /&gt;
 out (4),a&lt;br /&gt;
 ld b,8     ;After changing bits 6 and 7 we need a delay.&lt;br /&gt;
 djnz $&lt;br /&gt;
 in a,(14h) ;Read the battery status&lt;br /&gt;
 ld c,a     ;and save it.&lt;br /&gt;
 ld a,36h   ;Set bits 6 and 7 back to default but keep bit 5&lt;br /&gt;
 out (4),a  ;set until after the delay.&lt;br /&gt;
 ld b,8     ;After changing bits 6 and 7 we need a delay.&lt;br /&gt;
 djnz $&lt;br /&gt;
 ld a,16h   ;Now it's safe to reset bit 5 too.&lt;br /&gt;
 out (4),a&lt;br /&gt;
 bit 0,c    ;Bit 0 is zero when batteries are lower than ~3.8V.&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:Ports:14</id>
		<title>83:Ports:14</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:Ports:14"/>
				<updated>2005-04-28T21:06:19Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: added comments&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83:Ports:By_Address|14 - Battery status]] [[Category:83:Ports:By_Name|Battery status]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Port Number:''' 14h&lt;br /&gt;
&lt;br /&gt;
'''Function:''' Battery status checking&lt;br /&gt;
&lt;br /&gt;
This is a read-only port indicating battery status. It also acts as a mirror of the link port on the rest of the bits.&lt;br /&gt;
&lt;br /&gt;
=== Read Values ===&lt;br /&gt;
* Bit 0: Reads 1 if batteries are high; 0 if they are low.&lt;br /&gt;
* Bits 1 to 7: Mirror of the [[83:Ports:00|link port]].&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
* The voltage level at which bit 0 flips depends on [[83:Ports:04|bits 6 and 7 of port 04]].&lt;br /&gt;
* Bit 0 is directly connected to the reset circuit. That means that without [[83:Ports:04|bit 5 of port 04]] set, the calculator will enter the [[83:OS:Hardware Reset|reset state]] when bit 0 goes low.&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:Ports:15</id>
		<title>83:Ports:15</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:Ports:15"/>
				<updated>2005-04-28T20:51:16Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: mirror of port 01&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83:Ports:By Address|15 - Unknown port]] [[Category:83:Ports:By Name|Unknown port]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Port Number:''' 15h&lt;br /&gt;
&lt;br /&gt;
'''Function:''' Unknown&lt;br /&gt;
&lt;br /&gt;
=== Read Values ===&lt;br /&gt;
* Bit 0: Always 0.&lt;br /&gt;
* Bit 1-7: Mirror of [[83:Ports:01]].&lt;br /&gt;
&lt;br /&gt;
=== Write Values ===&lt;br /&gt;
This port doesn't seem to do anything.&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:Ports:02</id>
		<title>83:Ports:02</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:Ports:02"/>
				<updated>2005-04-28T20:48:11Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: memory mapping&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83:Ports:By Address|02 - ROM/RAM Pager / Memory Map Control]] [[Category:83:Ports:By Name|ROM/RAM Pager / Memory Map Control]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Port Number:''' 02h&lt;br /&gt;
&lt;br /&gt;
'''Function:''' ROM and RAM Pager and Memory Map Control&lt;br /&gt;
&lt;br /&gt;
This port controls what page is swapped into the swappable memory range which depends on the current [[83:OS:Memory Mapping|mapping mode]].&lt;br /&gt;
&lt;br /&gt;
=== Read Values ===&lt;br /&gt;
Always the last value written.&lt;br /&gt;
&lt;br /&gt;
=== Write Values ===&lt;br /&gt;
* Bits 0 to 2: The lower 3 bits of the desired ROM page (bit 3 can be set through bit 4 of the [[83:Ports:00|link port]])&lt;br /&gt;
* Bit 3 controls the [[83:OS:Memory Mapping|memory mapping mode]]. The default value for this bit is 1.&lt;br /&gt;
* Bit 4: Unknown, harmless&lt;br /&gt;
* Bit 5: Unknown, harmless&lt;br /&gt;
* Bit 6: 0 - the specified ROM page is swapped in, 1 - the RAM page specified by bit 0 swapped in.&lt;br /&gt;
* Bit 7 controls the [[83:OS:Memory Mapping|memory mapping mode]]. The default value for this bit is 1.&lt;br /&gt;
&lt;br /&gt;
== Credits and Contributions ==&lt;br /&gt;
* created by CoBB&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:Ports:04</id>
		<title>83:Ports:04</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:Ports:04"/>
				<updated>2005-04-28T20:36:00Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: memory mapping&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83:Ports:By_Address|04 - Timer Interrupt Frequency / Memory Map]] [[Category:83:Ports:By_Name|Timer Interrupt Frequency / Memory Map]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Port Number:''' 04h&lt;br /&gt;
&lt;br /&gt;
'''Function:''' Timer Interrupt Frequency and Memory Map Control&lt;br /&gt;
&lt;br /&gt;
This port controls the frequency of the hardware timer and the memory map mode.&lt;br /&gt;
&lt;br /&gt;
=== Read Values ===&lt;br /&gt;
This is a mirror of the link port.&lt;br /&gt;
&lt;br /&gt;
=== Write Values ===&lt;br /&gt;
* Bit 0 controls the [[83:OS:Memory Mapping|memory mapping mode]]. The default value for this bit is 0.&lt;br /&gt;
* Bits 1 and 2 control the hardware timer frequency. Setting both 0 sets the timer to the fastest speed, and both 1 is the slowest speed. The default is with both bits 1.&lt;br /&gt;
* Bit 3: Unused? Always 0.&lt;br /&gt;
* Bit 4: Timer frequency multiplier; when this bit is set, all the times are multiplied by 90% (i. e. it's 11.1% faster) compared to when it's reset.&lt;br /&gt;
* Bit 5-7: Unknown, but definitely used.&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
To calculate the resulting timer frequency you can use the following formula:&lt;br /&gt;
&lt;br /&gt;
freq = 1800 * ((out_value &amp;amp; 0x10) ? 1.0 : 0.9) / (3 + ((out_value &amp;amp; 0x06) &amp;lt;&amp;lt; 1))&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:OS:Memory_Layout</id>
		<title>83:OS:Memory Layout</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:OS:Memory_Layout"/>
				<updated>2005-04-28T20:30:09Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: added short description&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83:OS Information|Memory Layout]]&lt;br /&gt;
== Memory Layout ==&lt;br /&gt;
The following table describes various parts of memory when in [[83:OS:Memory Mapping|normal mapping mode]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Address&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Description&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;0000-3FFF&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ROM Page 0&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;4000-7FFF&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Swappable ROM/RAM page using [[83:Ports:00]] and [[83:Ports:02]]. There are 16 ROM pages (00-0F) end two RAM pages (00-01)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;8000-9326&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;System RAM: Used by the OS to store various pointers, settings, buffers, etc.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[83:RAM:9327|userMem]]-([[83:RAM:9307|tempMem]]?)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;User Memory: This is where all variables are stored.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;([[83:RAM:9307|tempMem]]?)-([[83:RAM:9309|FPBase]])&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Temp Memory?: This is where the OS stores [[83:OS:Temporary_Variables|temporary variables]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;([[83:RAM:9309|FPBase]])-([[83:RAM:930B|FPS]])&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Floating Point Stack: A LIFO stack for [[83:RAM:8039|floating point registers]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;([[83:RAM:930B|FPS]])-([[83:RAM:930D|OPS]])&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Free RAM.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;([[83:RAM:930D|OPS]])-([[83:RAM:930F|OPBase]])&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Operator Stack: A LIFO stack used to parse expressions and to store return information when a TI-Basic program is called from another TI-Basic program.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;([[83:RAM:930F|OPBase]])-([[83:RAM:9317|pTemp]])&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Variable Allocation Table (VAT) for [[83:OS:Temporary_Variables|temporary variables]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;([[83:RAM:9317|pTemp]])-([[83:RAM:9319|progPtr]])&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Variable Allocation Table (VAT) for programs and lists with variable length names.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;([[83:RAM:9319|progPtr]])-[[83:RAM:FE6E|symTable]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Variable Allocation Table (VAT) for all variables with a fixed name: reals, lists, strings, ans, functions, matrices, window settings, etc.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;FE6F-FFFF&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Hardware Stack&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:OS:Memory_Mapping</id>
		<title>83:OS:Memory Mapping</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:OS:Memory_Mapping"/>
				<updated>2005-04-28T20:26:21Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83:OS Information|Memory Mapping]]&lt;br /&gt;
== Memory Mapping ==&lt;br /&gt;
Memory on the TI83 has been split up in 16Kb pages. The 256Kb of ROM has been split up in 16 such pages. The 32Kb of RAM have been split up in 2 pages.&lt;br /&gt;
&lt;br /&gt;
The following table describes how these pages are mapped to the 16 bit address space of the z80 depending on the value of various I/O ports.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table width=&amp;quot;100%&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; style=&amp;quot;border: 1px solid #AAA; text-align: center&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;10%&amp;quot;&amp;gt;[[83:Ports:04|Port 04]] bit 0&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;10%&amp;quot;&amp;gt;[[83:Ports:02|Port 02]] bit 6&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;10%&amp;quot;&amp;gt;[[83:Ports:02|Port 02]] bit 7&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;10%&amp;quot;&amp;gt;[[83:Ports:02|Port 02]] bit 3&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;15%&amp;quot; style=&amp;quot;border-left: 1px solid #AAA&amp;quot;&amp;gt;0x0000&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;15%&amp;quot;&amp;gt;0x4000&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;15%&amp;quot;&amp;gt;0x8000&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th width=&amp;quot;15%&amp;quot;&amp;gt;0xC000&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;*&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA; border-left: 1px solid #AAA&amp;quot;&amp;gt;ROM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;SWAP&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;ROM0/8&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;RAM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;*&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-left: 1px solid #AAA&amp;quot;&amp;gt;ROM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;SWAP&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ROM1/8&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;*&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-left: 1px solid #AAA&amp;quot;&amp;gt;ROM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;SWAP&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;''0''&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;''*''&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;''1''&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;''1''&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-left: 1px solid #AAA&amp;quot;&amp;gt;''ROM0''&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;''SWAP''&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;''RAM1''&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;''RAM0''&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA; border-left: 1px solid #AAA&amp;quot;&amp;gt;ROM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;ROM0/8&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;SWAP&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;ROM0/8&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-left: 1px solid #AAA&amp;quot;&amp;gt;ROM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ROM0/8&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;SWAP&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ROM1/9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-left: 1px solid #AAA&amp;quot;&amp;gt;ROM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ROM0/8&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;SWAP&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-left: 1px solid #AAA&amp;quot;&amp;gt;ROM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ROM0/8&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;SWAP&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA; border-left: 1px solid #AAA&amp;quot;&amp;gt;ROM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;RAM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;RAM1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-top: 1px solid #AAA&amp;quot;&amp;gt;ROM0/8&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-left: 1px solid #AAA&amp;quot;&amp;gt;ROM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ROM1/9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-left: 1px solid #AAA&amp;quot;&amp;gt;ROM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-left: 1px solid #AAA&amp;quot;&amp;gt;ROM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RAM1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*RAMx = RAM Page x&lt;br /&gt;
*ROMx = ROM Page x&lt;br /&gt;
*ROMx/y = ROM Page x or y depending on [[83:Ports:00|bit 4 of port 00]].&lt;br /&gt;
*SWAP = Page swappable through [[83:Ports:02|port 02 bits 0, 1, 2 and 6]] and [[83:Ports:00|port 00 bit 4]].&lt;br /&gt;
&lt;br /&gt;
The line in italics is the [[83:OS:Memory Layout|default mode]].&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:Ports:04</id>
		<title>83Plus:Ports:04</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:Ports:04"/>
				<updated>2005-04-27T13:43:30Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: fix links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:Ports:By_Address|04 - Memory Map / Interrupt]] [[Category:83Plus:Ports:By_Name|Memory Map / Interrupt]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Port Number:''' 04h&lt;br /&gt;
&lt;br /&gt;
'''Function:''' Interrupting Device Identification and Memory Map Control&lt;br /&gt;
&lt;br /&gt;
This port serves two purposes. When read it indicates the device that triggered an interrupt. When written it sets the memory map mode and hardware timer speed.&lt;br /&gt;
&lt;br /&gt;
=== Read Values ===&lt;br /&gt;
* Bits 0~2 and 4~7 are set according to which device triggered the running interrupt.&lt;br /&gt;
** Bit 0: Set if pressing the ON Key triggered the interrupt.&lt;br /&gt;
** Bit 1: Set if the first hardware timer triggered the interrupt.&lt;br /&gt;
** Bit 2: Set if the second hardware timer triggered the interrupt.&lt;br /&gt;
** Bit 4: Link activity generated an interrupt.&lt;br /&gt;
** '''83+SE / 84+ only:''' Bit 5: First crystal timer triggered an interrupt.&lt;br /&gt;
** '''83+SE / 84+ only:''' Bit 6: Second crystal timer triggered an interrupt.&lt;br /&gt;
** '''83+SE / 84+ only:''' Bit 7: Third crystal timer triggered an interrupt.&lt;br /&gt;
* Bit 3 is reset if the ON key is being pressed, set otherwise.&lt;br /&gt;
&lt;br /&gt;
=== Write Values ===&lt;br /&gt;
* Bit 0 reset to select memory map mode 0. In mode 0 the RAM and ROM is mapped to CPU memory as follows:&lt;br /&gt;
** Address 0000h ~ 3FFFh: ROM Page 0&lt;br /&gt;
** Address 4000h ~ 7FFFh: Memory Bank A (Page selected in [[83Plus:Ports:06|Port 06h]])&lt;br /&gt;
** Address 8000h ~ BFFFh: Memory Bank B (Page selected in [[83Plus:Ports:07|Port 07h]])&lt;br /&gt;
** '''83+ Basic''': Address C000h ~ FFFFh: RAM Page 0&lt;br /&gt;
** '''Everything else''': Address C000h ~ FFFFh: Page selected in [[83Plus:Ports:05|Port 05h]]&lt;br /&gt;
* Bit 0 set to select memory map mode 1. In mode 1 the RAM and ROM is mapped to CPU memory as follows:&lt;br /&gt;
** Address 0000h ~ 3FFFh: ROM Page 0&lt;br /&gt;
** Address 4000h ~ 7FFFh: RAM Page 0&lt;br /&gt;
** Address 8000h ~ BFFFh: Memory Bank A (Page selected in [[83Plus:Ports:06|Port 06h]])&lt;br /&gt;
** Address C000h ~ FFFFh: Memory Bank B (Page selected in [[83Plus:Ports:07|Port 07h]])&lt;br /&gt;
* Bits 1 and 2 control the hardware timer frequency. Setting both 0 sets the timer to the fastest speed, and both 1 is the slowest speed. The normal speed is with both bits 1.&lt;br /&gt;
{| width=&amp;quot;90%&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot; style=&amp;quot;text-align: center&amp;quot;&lt;br /&gt;
|+Frequency (Hz)&lt;br /&gt;
|-&lt;br /&gt;
!&amp;amp;nbsp;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|first timer&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|second timer&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|both enabled&lt;br /&gt;
|-&lt;br /&gt;
!value&lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|83+&lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|83+SE 84+(SE)&lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|83+&lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|83+SE 84+(SE)&lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|83+&lt;br /&gt;
!width=&amp;quot;15%&amp;quot;|83+SE 84+(SE)&lt;br /&gt;
|-&lt;br /&gt;
!00&lt;br /&gt;
|560||512||1120||1024||1680||1536&lt;br /&gt;
|-&lt;br /&gt;
!01&lt;br /&gt;
|248||227||497||455||746||682&lt;br /&gt;
|-&lt;br /&gt;
!10&lt;br /&gt;
|170||156||344||315||517||473&lt;br /&gt;
|-&lt;br /&gt;
!11&lt;br /&gt;
|118||108||236||216||353||323&lt;br /&gt;
|}&lt;br /&gt;
* Bits 4~6 should be 1 on the 83+ and 83+SE, and 0 on the 84+ and 84+SE.&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
The calculator uses mode 0 for normal operation. If you change the memory map mode be sure to change it back before returning control.&lt;br /&gt;
Also, do not switch from mode 0 to mode 1 inside the 4000h ~ 7FFFh range, as it will basically crash the calculator because RAM Page 0 will take over that section and RAM Page 0 cannot execute code.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
This example shows successful use of this port, switching to mode 1 and back. Mode 1 is the only way to execute code beyond address C000h on the 83+ Basic.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; in a, (7) ;Save current Bank B page because we'll trash it.&lt;br /&gt;
 push af&lt;br /&gt;
 ld a, 1Ch ;Put this page into 8000&lt;br /&gt;
 out (7), a&lt;br /&gt;
 jp $ + 4003h ;This will actually jump to the next statement, but in Bank B.&lt;br /&gt;
 ld a, 77h ;Select mode 1 and keep the timer speed at normal...&lt;br /&gt;
 out (4), a ;Now we're in mode 1.&lt;br /&gt;
 ;We're still at 8000h here but we are back in Bank A.&lt;br /&gt;
 ;Now to go back.&lt;br /&gt;
 ld a, 76h ;I could dec a for this example, but...&lt;br /&gt;
 out (4), a ;Back in mode 0 and bank B.&lt;br /&gt;
 jp $ - 3FFDh ;Jump back to bank A.&lt;br /&gt;
 pop af&lt;br /&gt;
 out (7), a ;Restore bank B.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Credits and Contributions ==&lt;br /&gt;
* '''Dan Englender''': Originally documented memory map modes [http://www.detachedsolutions.com/forum/viewtopic.php?p=21593#21593 here]&lt;br /&gt;
* '''Michael Vincent''': For his docs [http://www.michaelv.org/programs/calcs/ports/port4.html here], which helped me figure out the interrupt device bits.&lt;br /&gt;
* '''James Montelongo''': For his docs [http://www.geocities.com/jimm09876/calc/port4.html here] on the hardware timer.&lt;/div&gt;</summary>
		<author><name>Kalimero</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-27T10:22:00Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: &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;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Talk:83:ROMCalls:40CA</id>
		<title>Talk:83:ROMCalls:40CA</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Talk:83:ROMCalls:40CA"/>
				<updated>2005-04-16T10:31:12Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;gt;&amp;gt; This routine will throw an ErrDomain when OP1 is negative.&lt;br /&gt;
&lt;br /&gt;
Even if a+b''i'' or r''e''^theta''i'' mode is on?&lt;br /&gt;
&lt;br /&gt;
:Seeing as this is an official equate, I'd guess that it is indeed the equate for SqRoot and not CSqRoot.  With that said, adapting this routine simply to work with negative numbers (as opposed to actually implementing CSqRoot) is trivial. [[User:FloppusMaximus|FloppusMaximus]] 20:21, 15 Apr 2005 (PDT)&lt;br /&gt;
&lt;br /&gt;
::Yes, the first instruction in this routine is &amp;quot;call _ERRD_OP1NOTPOS&amp;quot;. As for CSqRoot, none of the complex versions of the FP routines are officially equated for the 83, but sure they must exist. --[[User:Kalimero|Kalimero]] 03:31, 16 Apr 2005 (PDT)&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:ROMCalls:40CA</id>
		<title>83:ROMCalls:40CA</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:ROMCalls:40CA"/>
				<updated>2005-04-14T20:00:26Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83:ROMCalls:By_Name:FP_Math|SqRoot]] [[Category:83:ROMCalls:By_Name|SqRoot]] [[Category:83:ROMCalls:By_Address|40CA - SqRoot]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' SqRoot&lt;br /&gt;
&lt;br /&gt;
'''Call Address:''' 40CA&lt;br /&gt;
&lt;br /&gt;
This routine calculates the square root of [[83:RAM:8039|OP1]].&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
* OP1 = floating point number&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
* OP1 = sqrt(OP1)&lt;br /&gt;
* OP2,OP3 destroyed&lt;br /&gt;
* AF,BC,DE,HL destroyed&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
This routine will throw an [[83:ROMCalls:4663|ErrDomain]] when [[83:RAM:8039|OP1]] is negative.&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:ROMCalls:40C6</id>
		<title>83:ROMCalls:40C6</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:ROMCalls:40C6"/>
				<updated>2005-04-14T19:49:15Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83:ROMCalls:By_Name:FP_Math|FPDiv]] [[Category:83:ROMCalls:By_Name|FPDiv]] [[Category:83:ROMCalls:By_Address|40C6 - FPDiv]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' FPDiv&lt;br /&gt;
&lt;br /&gt;
'''Call Address:''' 40C6&lt;br /&gt;
&lt;br /&gt;
This routine devides [[83:RAM:8039|OP1]] by [[83:RAM:8039|OP2]] and stores the result in [[83:RAM:8039|OP1]].&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
* OP1 = first operand&lt;br /&gt;
* OP2 = second operand&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
* OP1 = OP1 / OP2&lt;br /&gt;
* OP2,OP3 destroyed??&lt;br /&gt;
* AF,BC,DE,HL destroyed&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
If OP2 equals zero, this routine will throw an [[83:ROMCalls:465D|ErrDivBy0]].&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:ROMCalls:40C2</id>
		<title>83:ROMCalls:40C2</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:ROMCalls:40C2"/>
				<updated>2005-04-14T19:39:29Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83:ROMCalls:By_Name:FP_Math|FPRecip]] [[Category:83:ROMCalls:By_Name|FPRecip]] [[Category:83:ROMCalls:By_Address|40C2 - FPRecip]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' FPRecip&lt;br /&gt;
&lt;br /&gt;
'''Call Address:''' 40C2&lt;br /&gt;
&lt;br /&gt;
This routine calls [[83:ROMCalls:418E|OP1ToOP2]], [[83:ROMCalls:4232|OP1Set1]] and then runs through [[83:ROMCalls:40C6|FPDiv]] to calculate the reciprocal value of [[83:RAM:8039|OP1]].&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
* OP1 = floating point number&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
* OP1 = 1 / OP1&lt;br /&gt;
* OP2 = old OP1??&lt;br /&gt;
* AF,BC,DE,HL destroyed&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
If OP1 equals zero, this routine will result in an [[83:ROMCalls:465D|ErrDivBy0]] being thrown.&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:ROMCalls:40BE</id>
		<title>83:ROMCalls:40BE</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:ROMCalls:40BE"/>
				<updated>2005-04-14T19:14:17Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83:ROMCalls:By_Name:FP_Math|Frac]] [[Category:83:ROMCalls:By_Name|Frac]] [[Category:83:ROMCalls:By_Address|40BE - Frac]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' Frac&lt;br /&gt;
&lt;br /&gt;
'''Call Address:''' 40BE&lt;br /&gt;
&lt;br /&gt;
This routine returns the fractional part of [[83:RAM:8039|OP1]].&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
* OP1 = floating point number&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
* OP1 = frac(OP1)&lt;br /&gt;
* AF,C,HL destroyed&lt;br /&gt;
* B,DE preserved?&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:ROMCalls:40B2</id>
		<title>83:ROMCalls:40B2</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:ROMCalls:40B2"/>
				<updated>2005-04-14T17:01:12Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: fix link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83:ROMCalls:By_Name:FP_Math|InvOP1SC]] [[Category:83:ROMCalls:By_Name|InvOP1SC]] [[Category:83:ROMCalls:By_Address|40B2 - InvOP1SC]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' InvOP1SC&lt;br /&gt;
&lt;br /&gt;
'''Call Address:''' 40B2&lt;br /&gt;
&lt;br /&gt;
This routine calls [[83:ROMCalls:40BA|InvOP2S]] and runs through [[83:ROMCalls:40B6|InvOP1S]] inverting the sign of both [[83:RAM:8039|OP1]] and [[83:RAM:8039|OP2]].&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
* OP1 = floating point number&lt;br /&gt;
* OP2 = floating point number&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
* OP1 = -OP1&lt;br /&gt;
* OP2 = -OP2&lt;br /&gt;
* A = ([[83:RAM:8039|OP1]]) = OP1 sign byte&lt;br /&gt;
* F = nc, nz if OP1 is negative, z if positive&lt;br /&gt;
* BC,DE,HL preserved&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:ROMCalls:40B6</id>
		<title>83:ROMCalls:40B6</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:ROMCalls:40B6"/>
				<updated>2005-04-14T17:00:23Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83:ROMCalls:By_Name:FP_Math|InvOP1S]] [[Category:83:ROMCalls:By_Name|InvOP1S]] [[Category:83:ROMCalls:By_Address|40B6 - InvOP1S]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' InvOP1S&lt;br /&gt;
&lt;br /&gt;
'''Call Address:''' 40B6&lt;br /&gt;
&lt;br /&gt;
This routine inverts the sign of [[83:RAM:8039|OP1]].&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
* OP1 = floating point number&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
* OP1 = -OP1&lt;br /&gt;
* A = ([[83:RAM:8039|OP1]]) = OP1 sign byte&lt;br /&gt;
* F = nc, nz if OP1 is negative, z if positive&lt;br /&gt;
* BC,DE,HL preserved&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:ROMCalls:40BA</id>
		<title>83:ROMCalls:40BA</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:ROMCalls:40BA"/>
				<updated>2005-04-14T16:59:43Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: fix link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83:ROMCalls:By_Name:FP_Math|InvOP2S]] [[Category:83:ROMCalls:By_Name|InvOP2S]] [[Category:83:ROMCalls:By_Address|40BA - InvOP2S]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' InvOP2S&lt;br /&gt;
&lt;br /&gt;
'''Call Address:''' 40BA&lt;br /&gt;
&lt;br /&gt;
This routine inverts the sign of [[83:RAM:8039|OP2]].&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
* OP2 = floating point number&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
* OP2 = -OP2&lt;br /&gt;
* A = ([[83:RAM:8039|OP2]]) = OP2 sign byte&lt;br /&gt;
* F = nc, nz if OP2 is negative, z if positive&lt;br /&gt;
* BC,DE,HL preserved&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:ROMCalls:40BA</id>
		<title>83:ROMCalls:40BA</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:ROMCalls:40BA"/>
				<updated>2005-04-14T16:56:33Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83:ROMCalls:By_Name:FP_Math|InvOP2S]] [[Category:83:ROMCalls:By_Name|InvOP2S]] [[Category:83:ROMCalls:By_Address|40BA - InvOP2S]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' InvOP2S&lt;br /&gt;
&lt;br /&gt;
'''Call Address:''' 40BA&lt;br /&gt;
&lt;br /&gt;
This routine inverts the sign of [[83:RAM:8039|OP2]].&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
* OP2 = floating point number&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
* OP2 = -OP2&lt;br /&gt;
* A = ([[83:RAM:8039|OP2)&lt;br /&gt;
* F = nc, nz if OP2 is negative, z if positive&lt;br /&gt;
* BC,DE,HL preserved&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:ROMCalls:40B6</id>
		<title>83:ROMCalls:40B6</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:ROMCalls:40B6"/>
				<updated>2005-04-14T16:55:32Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83:ROMCalls:By_Name:FP_Math|InvOP1S]] [[Category:83:ROMCalls:By_Name|InvOP1S]] [[Category:83:ROMCalls:By_Address|40B6 - InvOP1S]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' InvOP1S&lt;br /&gt;
&lt;br /&gt;
'''Call Address:''' 40B6&lt;br /&gt;
&lt;br /&gt;
This routine inverts the sign of [[83:RAM:8039|OP1]].&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
* OP1 = floating point number&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
* OP1 = -OP1&lt;br /&gt;
* A = ([[83:RAM:8039|OP1)&lt;br /&gt;
* F = nc, nz if OP1 is negative, z if positive&lt;br /&gt;
* BC,DE,HL preserved&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:ROMCalls:40B2</id>
		<title>83:ROMCalls:40B2</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:ROMCalls:40B2"/>
				<updated>2005-04-14T16:53:09Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83:ROMCalls:By_Name:FP_Math|InvOP1SC]] [[Category:83:ROMCalls:By_Name|InvOP1SC]] [[Category:83:ROMCalls:By_Address|40B2 - InvOP1SC]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' InvOP1SC&lt;br /&gt;
&lt;br /&gt;
'''Call Address:''' 40B2&lt;br /&gt;
&lt;br /&gt;
This routine calls [[83:ROMCalls:40BA|InvOP2S]] and runs through [[83:ROMCalls:40B6|InvOP1S]] inverting the sign of both [[83:RAM:8039|OP1]] and [[83:RAM:8039|OP2]].&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
* OP1 = floating point number&lt;br /&gt;
* OP2 = floating point number&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
* OP1 = -OP1&lt;br /&gt;
* OP2 = -OP2&lt;br /&gt;
* A = ([[83:RAM:8039|OP1)&lt;br /&gt;
* F = nc, nz if OP1 is negative, z if positive&lt;br /&gt;
* BC,DE,HL preserved&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:ROMCalls:40AA</id>
		<title>83:ROMCalls:40AA</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:ROMCalls:40AA"/>
				<updated>2005-04-14T16:04:07Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83:ROMCalls:By_Name:FP_Math|FPMult]] [[Category:83:ROMCalls:By_Name|FPMult]] [[Category:83:ROMCalls:By_Address|40AA - FPMult]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' FPMult&lt;br /&gt;
&lt;br /&gt;
'''Call Address:''' 40AA&lt;br /&gt;
&lt;br /&gt;
This routine multiplies [[83:RAM:8039|OP1]] by [[83:RAM:8039|OP2]] and stores the result in [[83:RAM:8039|OP1]].&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
* OP1 = first operand&lt;br /&gt;
* OP2 = second operand&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
* OP1 = OP1 * OP2&lt;br /&gt;
* OP2 destroyed??&lt;br /&gt;
* AF,BC,DE,HL destroyed&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:ROMCalls:40A6</id>
		<title>83:ROMCalls:40A6</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:ROMCalls:40A6"/>
				<updated>2005-04-14T15:58:30Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83:ROMCalls:By_Name:FP_Math|FPSquare]] [[Category:83:ROMCalls:By_Name|FPSquare]] [[Category:83:ROMCalls:By_Address|40A6 - FPSquare]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' FPSquare&lt;br /&gt;
&lt;br /&gt;
'''Call Address:''' 40A6&lt;br /&gt;
&lt;br /&gt;
This routine calls [[83:ROMCalls:418E|OP1ToOP2]] and runs through [[83:ROMCalls:40AA|FPMult]].&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
* OP1 = floating point number&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
* OP1 = OP1 ^ 2&lt;br /&gt;
* OP2 destroyed&lt;br /&gt;
* AF,BC,DE,HL destroyed&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:ROMCalls:4082</id>
		<title>83:ROMCalls:4082</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:ROMCalls:4082"/>
				<updated>2005-04-14T15:56:49Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: added link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83:ROMCalls:By_Name:FP_Math|Times2]] [[Category:83:ROMCalls:By_Name|Times2]] [[Category:83:ROMCalls:By_Address|4082 - Times2]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' Times2&lt;br /&gt;
&lt;br /&gt;
'''Call Address:''' 4082&lt;br /&gt;
&lt;br /&gt;
This routine calls [[83:ROMCalls:418E|OP1ToOP2]] and jumps to [[83:ROMCalls:4092|FPAdd]].&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
* OP1 = floating point number&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
* OP1 = OP1 * 2&lt;br /&gt;
* OP2 destroyed&lt;br /&gt;
* AF,BC,DE,HL destroyed&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:ROMCalls:40A2</id>
		<title>83:ROMCalls:40A2</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:ROMCalls:40A2"/>
				<updated>2005-04-14T15:51:34Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83:ROMCalls:By_Name:FP_Math|TimesPt5]] [[Category:83:ROMCalls:By_Name|TimesPt5]] [[Category:83:ROMCalls:By_Address|40A2 - TimesPt5]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' TimesPt5&lt;br /&gt;
&lt;br /&gt;
'''Call Address:''' 40A2&lt;br /&gt;
&lt;br /&gt;
This routine loads 0.5 into [[83:RAM:8039|OP2]] and jumps to [[83:ROMCalls:40AA|FPMult]].&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
* OP1 = floating point number&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
* OP1 = OP1 * 0.5&lt;br /&gt;
* OP2 destroyed&lt;br /&gt;
* AF,BC,DE,HL destroyed&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:ROMCalls:409E</id>
		<title>83:ROMCalls:409E</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:ROMCalls:409E"/>
				<updated>2005-04-14T15:50:48Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: fix link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83:ROMCalls:By_Name:FP_Math|Cube]] [[Category:83:ROMCalls:By_Name|Cube]] [[Category:83:ROMCalls:By_Address|409E - Cube]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' Cube&lt;br /&gt;
&lt;br /&gt;
'''Call Address:''' 409E&lt;br /&gt;
&lt;br /&gt;
This routine calls [[83:ROMCalls:40A6|FPSquare]] and [[83:ROMCalls:40AA|FPMult]] to calculate the cube of [[83:RAM:8039|OP1]].&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
* OP1 = operand&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
* OP1 = OP1^3&lt;br /&gt;
* OP2 destroyed&lt;br /&gt;
* AF,BC,DE,HL destroyed&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:ROMCalls:409E</id>
		<title>83:ROMCalls:409E</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:ROMCalls:409E"/>
				<updated>2005-04-14T15:44:06Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83:ROMCalls:By_Name:FP_Math|Cube]] [[Category:83:ROMCalls:By_Name|Cube]] [[Category:83:ROMCalls:By_Address|409E - Cube]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' Cube&lt;br /&gt;
&lt;br /&gt;
'''Call Address:''' 409E&lt;br /&gt;
&lt;br /&gt;
This routine calls [[83:ROMCalls:40A6|FPSquare]] and [[83:ROMCalls:40A6|FPMult]] to calculate the cube of [[83:RAM:8039|OP1]].&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
* OP1 = operand&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
* OP1 = OP1^3&lt;br /&gt;
* OP2 destroyed&lt;br /&gt;
* AF,BC,DE,HL destroyed&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:ROMCalls:4092</id>
		<title>83:ROMCalls:4092</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:ROMCalls:4092"/>
				<updated>2005-04-14T15:25:29Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83:ROMCalls:By_Name:FP_Math|FPAdd]] [[Category:83:ROMCalls:By_Name|FPAdd]] [[Category:83:ROMCalls:By_Address|4092 - FPAdd]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' FPAdd&lt;br /&gt;
&lt;br /&gt;
'''Call Address:''' 4092&lt;br /&gt;
&lt;br /&gt;
This routine adds [[83:RAM:8039|OP1]] and [[83:RAM:8039|OP2]] together and stores the result in [[83:RAM:8039|OP1]].&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
* OP1 = first operand&lt;br /&gt;
* OP2 = second operand&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
* OP1 = OP1 + OP2&lt;br /&gt;
* OP2 destroyed&lt;br /&gt;
* AF,BC,DE,HL destroyed&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:ROMCalls:408E</id>
		<title>83:ROMCalls:408E</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:ROMCalls:408E"/>
				<updated>2005-04-14T15:22:18Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83:ROMCalls:By_Name:FP_Math|FPSub]] [[Category:83:ROMCalls:By_Name|FPSub]] [[Category:83:ROMCalls:By_Address|408E - FPSub]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' FPSub&lt;br /&gt;
&lt;br /&gt;
'''Call Address:''' 408E&lt;br /&gt;
&lt;br /&gt;
This routine negates [[83:RAM:8039|OP2]] and runs through [[83:ROMCalls:4092|FPAdd]].&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
* OP1 = first operand&lt;br /&gt;
* OP2 = second operand&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
* OP1 = OP1 - OP2&lt;br /&gt;
* OP2 destroyed&lt;br /&gt;
* AF,BC,DE,HL destroyed&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:ROMCalls:408A</id>
		<title>83:ROMCalls:408A</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:ROMCalls:408A"/>
				<updated>2005-04-14T15:17:19Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83:ROMCalls:By_Name:FP_Math|Minus1]] [[Category:83:ROMCalls:By_Name|Minus1]] [[Category:83:ROMCalls:By_Address|408A - Minus1]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' Minus1&lt;br /&gt;
&lt;br /&gt;
'''Call Address:''' 408A&lt;br /&gt;
&lt;br /&gt;
This routine calls [[83:ROMCalls:4252|OP2Set1]] and jumps to [[83:ROMCalls:408E|FPSub]].&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
* OP1 = floating point number&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
* OP1 = OP1 - 1&lt;br /&gt;
* OP2 destroyed&lt;br /&gt;
* AF,BC,DE,HL destroyed&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:ROMCalls:4086</id>
		<title>83:ROMCalls:4086</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:ROMCalls:4086"/>
				<updated>2005-04-14T15:10:50Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83:ROMCalls:By_Name:FP_Math|Plus1]] [[Category:83:ROMCalls:By_Name|Plus1]] [[Category:83:ROMCalls:By_Address|4086 - Plus1]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' Plus1&lt;br /&gt;
&lt;br /&gt;
'''Call Address:''' 4086&lt;br /&gt;
&lt;br /&gt;
This routine calls [[83:ROMCalls:4252|OP2Set1]] and jumps to [[83:ROMCalls:4092|FPAdd]].&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
* OP1 = floating point number&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
* OP1 = OP1 + 1&lt;br /&gt;
* OP2 destroyed&lt;br /&gt;
* AF,BC,DE,HL destroyed&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:ROMCalls:4082</id>
		<title>83:ROMCalls:4082</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:ROMCalls:4082"/>
				<updated>2005-04-14T15:06:48Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83:ROMCalls:By_Name:FP_Math|Times2]] [[Category:83:ROMCalls:By_Name|Times2]] [[Category:83:ROMCalls:By_Address|4082 - Times2]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' Times2&lt;br /&gt;
&lt;br /&gt;
'''Call Address:''' 4082&lt;br /&gt;
&lt;br /&gt;
This routine copies [[83:RAM:8039|OP1]] to [[83:RAM:8039|OP2]] and calls [[83:ROMCalls:4092|FPAdd]].&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
* OP1 = floating point number&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
* OP1 = OP1 * 2&lt;br /&gt;
* OP2 destroyed&lt;br /&gt;
* AF,BC,DE,HL destroyed&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:ROMCalls:4072</id>
		<title>83:ROMCalls:4072</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:ROMCalls:4072"/>
				<updated>2005-04-14T14:54:04Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83:ROMCalls:By_Name:FP_Math|AbsO1PAbsO2]] [[Category:83:ROMCalls:By_Name|AbsO1PAbsO2]] [[Category:83:ROMCalls:By_Address|4072 - AbsO1PAbsO2]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' AbsO1PAbsO2&lt;br /&gt;
&lt;br /&gt;
'''Call Address:''' 4072&lt;br /&gt;
&lt;br /&gt;
This routine adds the absolute value of [[83:RAM:8039|OP1]] and [[83:RAM:8039|OP2]] together and stores the result in [[83:RAM:8039|OP1]].&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
* OP1 = first floating point number&lt;br /&gt;
* OP2 = second floating point number&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
* OP1 = abs(OP1) + abs(OP2)&lt;br /&gt;
* OP2 destroyed?&lt;br /&gt;
* AF,BC,DE,HL destroyed&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:ROMCalls:4066</id>
		<title>83:ROMCalls:4066</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:ROMCalls:4066"/>
				<updated>2005-04-14T14:03:40Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83:ROMCalls:By Name:Other|LCDBusy]] [[Category:83:ROMCalls:By Name|LCDBusy]] [[Category:83:ROMCalls:By Address|4066 - LCDBusy]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' LCDBusy&lt;br /&gt;
&lt;br /&gt;
'''Call Address:''' 4066&lt;br /&gt;
&lt;br /&gt;
This routine creates a delay more than large enough to be used in between two LCD driver instructions.&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
None.&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
None, all registers preserved.&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:Flags:09</id>
		<title>83:Flags:09</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:Flags:09"/>
				<updated>2005-04-14T13:55:29Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83:Flags:By Address|09 - onFlags,statFlags]]&lt;br /&gt;
[[Category:83:Flags:By Name|onFlags]]&lt;br /&gt;
[[Category:83:Flags:By Name|statFlags]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Flag Byte:''' 09h&lt;br /&gt;
&lt;br /&gt;
'''Official Names:''' onFlags, statFlags&lt;br /&gt;
&lt;br /&gt;
== Bit Overview ==&lt;br /&gt;
&lt;br /&gt;
=== Bit 0 ===&lt;br /&gt;
Unknown.&lt;br /&gt;
&lt;br /&gt;
=== Bit 1 ===&lt;br /&gt;
Unknown.&lt;br /&gt;
&lt;br /&gt;
=== Bit 2 ===&lt;br /&gt;
'''Unofficial Name:''' onClrScrn&lt;br /&gt;
&lt;br /&gt;
Set this flag if you want to clear the screen when the calculator is turned on. The bit will then be reset.&lt;br /&gt;
The OS only sets this bit inside [[83:ROMCalls:4062|Initialize]].&lt;br /&gt;
&lt;br /&gt;
=== Bit 3 ===&lt;br /&gt;
'''Official Name:''' onRunning&lt;br /&gt;
&lt;br /&gt;
This bit indicates whether the calculator is currently running or not. It is used by the on-key interrupt handler. When the calculator is not running, the interrupt handler will turn the calculator on. When the calculator is running an on-key press will either turn the calculator off or set bit 4 of this flag byte depending on shift2nd,(iy+[[83:Flags:12|shiftFlags]]).&lt;br /&gt;
&lt;br /&gt;
=== Bit 4 ===&lt;br /&gt;
'''Official Name:''' onInterrupt&lt;br /&gt;
&lt;br /&gt;
Set when the on-key was pressed when the calculator is currently running and 2nd has not been pressed. See also bit 3.&lt;br /&gt;
You should reset this bit to indicate that the on-key press has been handled. If you return from an assembly program to the TIOS with this bit set, an ERR:BREAK will be generated.&lt;br /&gt;
&lt;br /&gt;
=== Bit 5 ===&lt;br /&gt;
Unknown.&lt;br /&gt;
&lt;br /&gt;
=== Bit 6 ===&lt;br /&gt;
'''Official Name:''' statsValid&lt;br /&gt;
&lt;br /&gt;
Set this bit to indicate that [[83:RAM:858F|statVars]] holds valid data. Reset this bit otherwise (e.g. when you use [[83:RAM:858F|statVars]] as a saferam area).&lt;br /&gt;
&lt;br /&gt;
=== Bit 7 ===&lt;br /&gt;
Unknown.&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:ROMCalls:4014</id>
		<title>83:ROMCalls:4014</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:ROMCalls:4014"/>
				<updated>2005-04-14T13:45:32Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83:ROMCalls:By Name:Utility|GetCSC]] [[Category:83:ROMCalls:By Name|GetCSC]] [[Category:83:ROMCalls:By Address|4014 - GetCSC]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' GetCSC&lt;br /&gt;
&lt;br /&gt;
'''Call Address:''' 4014&lt;br /&gt;
&lt;br /&gt;
This routine returns the Current Scan Code into register A.&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
* none&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
* A = ([[83:RAM:8000|kbdScanCode]])&lt;br /&gt;
* ([[83:RAM:8000|kbdScanCode]]) = 0&lt;br /&gt;
* kbdSCR,(iy+[[83:Flags:00|kbdFlags]]) reset&lt;br /&gt;
* HL = [[83:RAM:8000|kbdScanCode]]&lt;br /&gt;
* BC,DE,F preserved&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
This routine expects that either interrupts are enabled or [[83:ROMCalls:4010|KbdScan]] was called manually. Either of these routines will check the keyboard and load the appropriate scan code into [[83:RAM:8000|kbdScanCode]] and set the flag kbdSCR,(iy+[[83:Flags:00|kbdFlags]]).&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Talk:Flags_Template</id>
		<title>Talk:Flags Template</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Talk:Flags_Template"/>
				<updated>2005-04-14T13:34:04Z</updated>
		
		<summary type="html">&lt;p&gt;Kalimero: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Specifying multiple By_Name categories as the flags template does, doesn't seem to work. I would suggest to make the By_Address category the default just as with ports so flags are listed as &amp;quot;09 - onFlags,statFlags&amp;quot; or something. Maybe we should get rid of the By_Name category for flags altogether? --[[User:Kalimero|Kalimero]] 06:34, 14 Apr 2005 (PDT)&lt;/div&gt;</summary>
		<author><name>Kalimero</name></author>	</entry>

	</feed>