<?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=Dwedit</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=Dwedit"/>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Special:Contributions/Dwedit"/>
		<updated>2026-04-07T08:56:01Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.23.5</generator>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Talk:History_of_the_TI_Z80_community</id>
		<title>Talk:History of the TI Z80 community</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Talk:History_of_the_TI_Z80_community"/>
				<updated>2010-02-02T04:03:36Z</updated>
		
		<summary type="html">&lt;p&gt;Dwedit: /* This article is worthless without Bill Nagel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* I've added DS's history &amp;lt;offtopic love of DS&amp;gt;because I consider their products to be leaps and bounds above other programs/apps.  They documented A LOT of BCALLS, hooks, etc. when barely anyone knew about them.  They've revolutionized programming for the TI-83 Plus&amp;lt;/offtopic&amp;gt;. It is because of them that this wiki exists. [[User:Saibot84|Saibot84]] 09:16, 15 July 2006 (PDT)&lt;br /&gt;
&lt;br /&gt;
* This history goes farther back. I believe it all began with ti-files. Do we have any info on them? {{unsigned|Toksyuryel|17:23, 15 July 2006 (PDT)}}&lt;br /&gt;
&lt;br /&gt;
** Oops, sorry about that. Could've sworn I signed it o.O [[User:Toksyuryel|Toksyuryel]] 07:02, 19 July 2006 (PDT)&lt;br /&gt;
&lt;br /&gt;
I really don't think mentioning every single DS product is nessacry. the maybe well produced but They aren't alone in that. Some of them should be on the proof of concept page.  Anyway I think looking back at significant events woulds more helpful.--[[User:Jim e|Jim e]] 18:52, 15 July 2006 (PDT)&lt;br /&gt;
&lt;br /&gt;
I have to agree with Jim E here. This shouldn't be the history of Detached Solution. Something like &amp;quot;First Application Shell&amp;quot; would be possible, but the release of DAWG (even if it's a nice prog) is rather unimportant in the history of the community. --[[User:Kv83|kv83]] 23:39, 15 July 2006 (PDT)&lt;br /&gt;
&lt;br /&gt;
I've moved almost all DS-related stuff to [[Team:Detached Solutions]]. [[User:Guillaumeh|Guillaumeh]] 00:29, 16 July 2006 (PDT)&lt;br /&gt;
&lt;br /&gt;
== Needing more content ==&lt;br /&gt;
&lt;br /&gt;
What important events are we forgetting in this page? If any.&lt;br /&gt;
Or it should be somehow more complete?&lt;br /&gt;
It would be nice older members of the community complete this.&lt;br /&gt;
&lt;br /&gt;
Some events we could add:&lt;br /&gt;
* end of POTM and start of POTY, that means a major decrease in calc stuff. (easy to get date from ticalc)&lt;br /&gt;
* Change of calculators popularity, exactly the transition between the TI-85/86 to TI-8x family. (variable in regions, vague and discussable)&lt;br /&gt;
 [[User:Galandros|Galandros]] 22:00, 19 December 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== This article is worthless without Bill Nagel ==&lt;br /&gt;
&lt;br /&gt;
Bill Nagel used to be the god of the TI scene, having made ASHELL83, and other games. --[[User:Dwedit|Dwedit]] 04:03, 2 February 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Dwedit</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Talk:History_of_the_TI_Z80_community</id>
		<title>Talk:History of the TI Z80 community</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Talk:History_of_the_TI_Z80_community"/>
				<updated>2010-02-02T03:52:16Z</updated>
		
		<summary type="html">&lt;p&gt;Dwedit: /* This article is worthless without Bill Nagel */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* I've added DS's history &amp;lt;offtopic love of DS&amp;gt;because I consider their products to be leaps and bounds above other programs/apps.  They documented A LOT of BCALLS, hooks, etc. when barely anyone knew about them.  They've revolutionized programming for the TI-83 Plus&amp;lt;/offtopic&amp;gt;. It is because of them that this wiki exists. [[User:Saibot84|Saibot84]] 09:16, 15 July 2006 (PDT)&lt;br /&gt;
&lt;br /&gt;
* This history goes farther back. I believe it all began with ti-files. Do we have any info on them? {{unsigned|Toksyuryel|17:23, 15 July 2006 (PDT)}}&lt;br /&gt;
&lt;br /&gt;
** Oops, sorry about that. Could've sworn I signed it o.O [[User:Toksyuryel|Toksyuryel]] 07:02, 19 July 2006 (PDT)&lt;br /&gt;
&lt;br /&gt;
I really don't think mentioning every single DS product is nessacry. the maybe well produced but They aren't alone in that. Some of them should be on the proof of concept page.  Anyway I think looking back at significant events woulds more helpful.--[[User:Jim e|Jim e]] 18:52, 15 July 2006 (PDT)&lt;br /&gt;
&lt;br /&gt;
I have to agree with Jim E here. This shouldn't be the history of Detached Solution. Something like &amp;quot;First Application Shell&amp;quot; would be possible, but the release of DAWG (even if it's a nice prog) is rather unimportant in the history of the community. --[[User:Kv83|kv83]] 23:39, 15 July 2006 (PDT)&lt;br /&gt;
&lt;br /&gt;
I've moved almost all DS-related stuff to [[Team:Detached Solutions]]. [[User:Guillaumeh|Guillaumeh]] 00:29, 16 July 2006 (PDT)&lt;br /&gt;
&lt;br /&gt;
== Needing more content ==&lt;br /&gt;
&lt;br /&gt;
What important events are we forgetting in this page? If any.&lt;br /&gt;
Or it should be somehow more complete?&lt;br /&gt;
It would be nice older members of the community complete this.&lt;br /&gt;
&lt;br /&gt;
Some events we could add:&lt;br /&gt;
* end of POTM and start of POTY, that means a major decrease in calc stuff. (easy to get date from ticalc)&lt;br /&gt;
* Change of calculators popularity, exactly the transition between the TI-85/86 to TI-8x family. (variable in regions, vague and discussable)&lt;br /&gt;
 [[User:Galandros|Galandros]] 22:00, 19 December 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== This article is worthless without Bill Nagel ==&lt;br /&gt;
&lt;br /&gt;
Bill Nagel used to be the god of the TI scene, having made ASHELL83, and other games.&lt;/div&gt;</summary>
		<author><name>Dwedit</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:Ports:10</id>
		<title>83Plus:Ports:10</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:Ports:10"/>
				<updated>2008-10-05T07:03:29Z</updated>
		
		<summary type="html">&lt;p&gt;Dwedit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:Ports:By Address|10 - LCD Command/Status Port]][[Category:83Plus:Ports:By Name|LCD Command/Status Port]]&lt;br /&gt;
[[Category:83:Ports:By Address|10 - LCD Command/Status Port]][[Category:83:Ports:By Name|LCD Command/Status Port]]&lt;br /&gt;
[[Category:82:Ports:By Address|10 - LCD Command/Status Port]][[Category:82:Ports:By Name|LCD Command/Status Port]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Port Number:''' 10h&lt;br /&gt;
&lt;br /&gt;
'''Function:''' LCD Command and Status Port&lt;br /&gt;
&lt;br /&gt;
This port is used to check the status of and send commands to the TI-83+'s LCD Driver.&lt;br /&gt;
&lt;br /&gt;
'''Note: Official documentation for the LCD controller uses &amp;quot;X&amp;quot; to refer to rows and &amp;quot;Y&amp;quot; to refer to columns.'''&lt;br /&gt;
&lt;br /&gt;
=== Read Values ===&lt;br /&gt;
The state of the LCD can be determined by reading this port.&lt;br /&gt;
* Bit 0: Set if auto-increment mode (commands 05 and 07) is selected, reset if auto-decrement mode (commands 04 and 06) is selected.&lt;br /&gt;
* Bit 1: Set if auto-increment or auto-decrement will affect the current column, or reset if auto-increment/decrement will affect the current row.&lt;br /&gt;
* Bit 2, 3: Not used.&lt;br /&gt;
* Bit 4: Set if in reset state, reset if in operating state. (Whatever that means.)&lt;br /&gt;
* Bit 5: Set if the display is enabled. Reset if disabled. (Note: LCD is completely turned off via [[83Plus:Ports:03|Port 03h]].)&lt;br /&gt;
* Bit 6: Set if the LCD will transfer 8 bits at a time through [[83Plus:Ports:11|Port 11]]. Reset if the LCD will only trasfer 6 bits at a time.&lt;br /&gt;
* Bit 7: Set if the LCD is busy. Reset if a command can be accepted.&lt;br /&gt;
&lt;br /&gt;
=== Write Values ===&lt;br /&gt;
Writing this port sends a command to the LCD. Once you send a command, wait until bit 7 reads 0 before sending another. You need a minimum delay of 10 microseconds (60 cycles of whatever else on the 6MHz TI-83+, or ~150 on a TI-83+ Silver or any TI-84+ when running in [[83Plus:Ports:20|fast mode]]).&lt;br /&gt;
&lt;br /&gt;
* 00 : Switch to '''6-bit mode'''. ([[83Plus:Ports:11|Port 11]] transfers 6-bits at a time.)&lt;br /&gt;
* 01 : Switch to '''8-bit mode'''. ([[83Plus:Ports:11|Port 11]] transfers 8-bits at a time.)&lt;br /&gt;
* 02 : Disable the screen. This blanks the screen and disconnects the LCD RAM from the physical screen, thus allowing you to use the LCD RAM as extra saferam. (But accessing it is so horribly slow that you should only do this if the usual saferam areas aren't enough and you don't need to display anything.)&lt;br /&gt;
* 03 : Enable the screen. This resumes displaying the LCD's RAM contents to the physical screen. (So any garbage you put into LCD RAM while it was off will show up, so B_CALL ClrLCDFull before this!)&lt;br /&gt;
* 04 : Set X auto-decrement mode. Every read or write operation from the data port will cause the LCD's internal pointer to move '''up''' one row.&lt;br /&gt;
* 05 : Set X auto-increment mode. Every read or write operation from the data port will cause the LCD's internal pointer to move '''down''' one row. The TI-83+ expects the LCD to be in this mode for most display routines.&lt;br /&gt;
* 06 : Set Y auto-decrement mode. Every read or write operation from the data port will cause the LCD's internal pointer to move '''left''' one column.&lt;br /&gt;
* 07 : Set Y auto-increment mode. Every read or write operation from the data port will cause the LCD's internal pointer to move '''right''' one column.&lt;br /&gt;
* [08~0B]: Set power supply enhancement. You'd be well advised to just leave this alone.&lt;br /&gt;
* [10~13]: Set power supply level. You'd be well advised to just leave this alone.&lt;br /&gt;
* [14~17]: Undefined.&lt;br /&gt;
* [18]: Cancel test mode (see Comments).&lt;br /&gt;
* [19~1B]: Undefined.&lt;br /&gt;
* [1C~1F]: Enter test mode (see Comments).&lt;br /&gt;
* [20~3F]: '''Set column'''.  [20~2E] are valid columns in 8-bit mode, [20~33] are valid columns in 6-bit mode. [34~3F] values are also accepted, but do not correspond to a drawable area.&lt;br /&gt;
* [40~7F]: &amp;quot;Z addressing&amp;quot; (It just changed what phyiscal row the top row of RAM is displayed on. The LCD will wrap the bottom of it's RAM to the top of the screen as needed.)&lt;br /&gt;
* [80~BF]: '''Set row'''.&lt;br /&gt;
* [C0~FF]: '''Set contrast'''. (C0 is lowest. Note that there is a [[83Plus:RAM:8447|System RAM area (contrast)]] for this which will need to be updated if you want 2nd+Up/2nd+Down to change the contrast as expected (instead of causing a sudden jump...).)&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
===Necessary LCD communication delay===&lt;br /&gt;
As mentioned, a 10 microsecond delay is required after sending the command. TI provides a routine at 000B (use normal CALL, not BCALL) that will delay the required amount of time. (Because this was not originally an LCD delay routine, on OS's prior to 1.13, calling it destroys the zero flag.)&lt;br /&gt;
&lt;br /&gt;
On older calculators, this code sequence should also provide sufficient delay while also preserving the zero flag:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;amp;nbsp;push hl ;15&lt;br /&gt;
 push de ;30&lt;br /&gt;
 pop de ;44&lt;br /&gt;
 pop hl ;58&lt;br /&gt;
 nop ;62&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But I would advise you actually make use of these waste cycles somehow (process a buffer or something).&lt;br /&gt;
&lt;br /&gt;
On some newer calculators, a fixed delay can still be used in combination with slowing the CPU through port [[83Plus:Ports:20|20]] and/or adjusting ports [[83Plus:Ports:29|29]] and [[83Plus:Ports:2A|2A]].  However, a large number of calculators have been produced recently whose LCD drivers, for whatever reason, do not respond as quickly.  For this reason, except where the speed loss is absolutely unacceptable (such as for grayscale display) fixed delays should '''not''' be used.  Instead either use the routine at 000B, or poll this port or [[83Plus:Ports:02|port 2]] manually.&lt;br /&gt;
&lt;br /&gt;
===Unused screen area===&lt;br /&gt;
The LCD driver's video memory holds a display 120 pixels wide, even though the screen is only 96 pixels wide.  The 24 pixel wide offscreen area can still be read from and written to, and is not affected by soft power-off.&lt;br /&gt;
&lt;br /&gt;
===Test mode===&lt;br /&gt;
This is a very dangerous mode. The first test mode command (1C~1F) causes the screen to receive an unusually high amount of energy. The result is that the screen seems to go blank, save for a single blue(!) line on the TI 83, but on the TI 84's, the entire screen turns blue! Each subsequent command adds more blue lines. After you've had your fill of blueness, exit test mode by sending a exit test mode command (18), which also sets the contrast to it's highest. Now why is it dangerous? Sure it looks cool to make a supposedly black and white LCD to display BLUE, but you are pumping so much energy through the LCD to get this effect that leaving it in this mode for too long can cause long-term damage. Ever left your monitor on for a day or two and forget to set a screen saver? Remember how when you turned it off a burnt image of your screen remained? Well that's what can happen if you leave test mode on for too long. Other possible side effects include &amp;quot;dead pixels&amp;quot; (pixels that stay off no matter what you do).&lt;br /&gt;
&lt;br /&gt;
So don't use test mode okay? Just pretend you didn't hear about it...&lt;br /&gt;
&lt;br /&gt;
== Cursor movement and out-of-bounds behavior ==&lt;br /&gt;
It is possible to set the column number out of range, either by directly writing a column number out of bounds, or by switching to 6-bit mode, moving the column to a position outside of 8-bit mode's range, then switching back to 8-bit mode.&lt;br /&gt;
&lt;br /&gt;
If the column is out of range, no write is made to the display, but the column will continue to increment or decrement.&lt;br /&gt;
&lt;br /&gt;
===8-bit mode===&lt;br /&gt;
In 8-bit mode, the column will wrap from 14 to 0 when moving right, and wrap from 0 to 14 when moving left.  If the column&amp;gt;14, then there is no wrapping, the column will continue to increment or decrement within the full range of 0-31.  Exceeding column 31 returns to column 0.&lt;br /&gt;
&lt;br /&gt;
===6-bit-mode===&lt;br /&gt;
Same as 8-bit mode, but column wraps from 19 to 0 when moving right, and 0 to 19 when moving left.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Turn the LCD &amp;quot;off&amp;quot; and back &amp;quot;on&amp;quot;.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;amp;nbsp;ld a, 02h&lt;br /&gt;
 out (10h), a&lt;br /&gt;
 push hl ;Or do something else that takes ~60 TStates.&lt;br /&gt;
 push de&lt;br /&gt;
 pop de&lt;br /&gt;
 pop hl&lt;br /&gt;
 nop&lt;br /&gt;
 inc a&lt;br /&gt;
 out (10h), a&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Safely wait for the LCD to become available&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;lcd_busy_loop:&lt;br /&gt;
 in a,($10) ;we don't care about the value of A, but are interested in the &amp;quot;Negative&amp;quot; flag returned by bit 7&lt;br /&gt;
 jp m,lcd_busy_loop&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[83Plus:Ports:11|Port 11]] - LCD Data Port&lt;br /&gt;
* [http://wikiti.denglend.net/stuff/t6a04.pdf LCD driver datasheet]&lt;/div&gt;</summary>
		<author><name>Dwedit</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:Ports:11</id>
		<title>83:Ports:11</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:Ports:11"/>
				<updated>2007-05-26T16:36:58Z</updated>
		
		<summary type="html">&lt;p&gt;Dwedit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#redirect [[83Plus:Ports:11]]&lt;/div&gt;</summary>
		<author><name>Dwedit</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:Ports:10</id>
		<title>83:Ports:10</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:Ports:10"/>
				<updated>2007-05-26T16:36:52Z</updated>
		
		<summary type="html">&lt;p&gt;Dwedit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#redirect [[83Plus:Ports:10]]&lt;/div&gt;</summary>
		<author><name>Dwedit</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:Ports:11</id>
		<title>83:Ports:11</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:Ports:11"/>
				<updated>2007-05-26T16:36:44Z</updated>
		
		<summary type="html">&lt;p&gt;Dwedit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#redirect [[83plus:Ports:11]]&lt;/div&gt;</summary>
		<author><name>Dwedit</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:Ports:10</id>
		<title>83:Ports:10</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:Ports:10"/>
				<updated>2007-05-26T16:36:39Z</updated>
		
		<summary type="html">&lt;p&gt;Dwedit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#redirect [[83plus:Ports:10]]&lt;/div&gt;</summary>
		<author><name>Dwedit</name></author>	</entry>

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

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:Ports:10</id>
		<title>83Plus:Ports:10</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:Ports:10"/>
				<updated>2007-05-26T16:22:33Z</updated>
		
		<summary type="html">&lt;p&gt;Dwedit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:Ports:By Address|10 - LCD Command/Status Port]][[Category:83Plus:Ports:By Name|LCD Command/Status Port]]&lt;br /&gt;
[[Category:83:Ports:By Address|10 - LCD Command/Status Port]][[Category:83:Ports:By Name|LCD Command/Status Port]]&lt;br /&gt;
[[Category:82:Ports:By Address|10 - LCD Command/Status Port]][[Category:82:Ports:By Name|LCD Command/Status Port]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Port Number:''' 10h&lt;br /&gt;
&lt;br /&gt;
'''Function:''' LCD Command and Status Port&lt;br /&gt;
&lt;br /&gt;
This port is used to check the status of and send commands to the TI-83+'s LCD Driver.&lt;br /&gt;
&lt;br /&gt;
=== Read Values ===&lt;br /&gt;
The state of the LCD can be determined by reading this port.&lt;br /&gt;
* Bit 0: Set if auto-increment mode (commands 05 and 07) is selected, reset if auto-decrement mode (commands 04 and 06) is selected.&lt;br /&gt;
* Bit 1: Set if auto-increment or auto-decrement will affect the current column, or reset if auto-increment/decrement will affect the current row.&lt;br /&gt;
* Bit 2, 3: Not used.&lt;br /&gt;
* Bit 4: Set if in reset state, reset if in operating state. (Whatever that means.)&lt;br /&gt;
* Bit 5: Set if the display is enabled. Reset if disabled. (Note: LCD is completely turned off via [[83Plus:Ports:03|Port 03h]].)&lt;br /&gt;
* Bit 6: Set if the LCD will transfer 8 bits at a time through [[83Plus:Ports:11|Port 11]]. Reset if the LCD will only trasfer 6 bits at a time.&lt;br /&gt;
* Bit 7: Set if the LCD is busy. Reset if a command can be accepted.&lt;br /&gt;
&lt;br /&gt;
=== Write Values ===&lt;br /&gt;
Writing this port sends a command to the LCD. Once you send a command, wait until bit 7 reads 0 before sending another. You need a minimum delay of 10 microseconds (60 cycles of whatever else on the 6MHz TI-83+, or ~150 on a TI-83+ Silver or any TI-84+ when running in [[83Plus:Ports:20|fast mode]]).&lt;br /&gt;
&lt;br /&gt;
* 00 : Switch to 6-bit mode. ([[83Plus:Ports:11|Port 11]] transfers 6-bits at a time.)&lt;br /&gt;
* 01 : Switch to 8-bit mode. ([[83Plus:Ports:11|Port 11]] transfers 8-bits at a time.)&lt;br /&gt;
* 02 : Disable the screen. This blanks the screen and disconnects the LCD RAM from the physical screen, thus allowing you to use the LCD RAM as extra saferam. (But accessing it is so horribly slow that you should only do this if the usual saferam areas aren't enough and you don't need to display anything.)&lt;br /&gt;
* 03 : Enable the screen. This resumes displaying the LCD's RAM contents to the physical screen. (So any garbage you put into LCD RAM while it was off will show up, so B_CALL ClrLCDFull before this!)&lt;br /&gt;
* 04 : Set X auto-decrement mode. Every read or write operation from the data port will cause the LCD's internal pointer to move up one row.&lt;br /&gt;
* 05 : Set X auto-increment mode. Every read or write operation from the data port will cause the LCD's internal pointer to move down one row. The TI-83+ expects the LCD to be in this mode for most display routines.&lt;br /&gt;
* 06 : Set Y auto-decrement mode. Every read or write operation from the data port will cause the LCD's internal pointer to move left one column.&lt;br /&gt;
* 07 : Set Y auto-increment mode. Every read or write operation from the data port will cause the LCD's internal pointer to move right one column.&lt;br /&gt;
* [08~0B]: Set power supply enhancement. You'd be well advised to just leave this alone.&lt;br /&gt;
* [10~13]: Set power supply level. You'd be well advised to just leave this alone.&lt;br /&gt;
* [14~17]: Undefined.&lt;br /&gt;
* [18]: Cancel test mode (see Comments).&lt;br /&gt;
* [19~1B]: Undefined.&lt;br /&gt;
* [1C~1F]: Enter test mode (see Comments).&lt;br /&gt;
* [20~3F]: Set column.  [20~2E] are valid columns in 8-bit mode, [20~33] are valid columns in 6-bit mode. [34~3F] values are also accepted, but do not correspond to a drawable area.&lt;br /&gt;
* [40~7F]: &amp;quot;Z addressing&amp;quot; (It just changed what phyiscal row the top row of RAM is displayed on. The LCD will wrap the bottom of it's RAM to the top of the screen as needed.)&lt;br /&gt;
* [80~BF]: Set row.&lt;br /&gt;
* [C0~FF]: Set contrast. (C0 is lowest. Note that there is a [[83Plus:RAM:8447|System RAM area (contrast)]] for this which will need to be updated if you want 2nd+Up/2nd+Down to change the contrast as expected (instead of causing a sudden jump...).)&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
===Necessary LCD communication delay===&lt;br /&gt;
As mentioned, a 10 microsecond delay is required after sending the command. TI provides a routine at 000B (use normal CALL, not BCALL) that will delay the required amount of time. (Because this was not originally an LCD delay routine, on OS's prior to 1.13, calling it destroys the zero flag.)&lt;br /&gt;
&lt;br /&gt;
On older calculators, this code sequence should also provide sufficient delay while also preserving the zero flag:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; push hl ;15&lt;br /&gt;
 push de ;30&lt;br /&gt;
 pop de ;44&lt;br /&gt;
 pop hl ;58&lt;br /&gt;
 nop ;62&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But I would advise you actually make use of these waste cycles somehow (process a buffer or something).&lt;br /&gt;
&lt;br /&gt;
On some newer calculators, a fixed delay can still be used in combination with slowing the CPU through port [[83Plus:Ports:20|20]] and/or adjusting ports [[83Plus:Ports:29|29]] and [[83Plus:Ports:2A|2A]].  However, a large number of calculators have been produced recently whose LCD drivers, for whatever reason, do not respond as quickly.  For this reason, except where the speed loss is absolutely unacceptable (such as for grayscale display) fixed delays should '''not''' be used.  Instead either use the routine at 000B, or poll this port or [[83Plus:Ports:02|port 2]] manually.&lt;br /&gt;
&lt;br /&gt;
===Unused screen area===&lt;br /&gt;
The LCD driver's video memory holds a display 120 pixels wide, even though the screen is only 96 pixels wide.  The 24 pixel wide offscreen area can still be read from and written to, and is not affected by soft power-off.&lt;br /&gt;
&lt;br /&gt;
===Test mode===&lt;br /&gt;
This is a very dangerous mode. The first test mode command (1C~1F) causes the screen to receive an unusually high amount of energy. The result is that the screen seems to go blank, save for a single blue(!) line on the TI 83, but on the TI 84's, the entire screen turns blue! Each subsequent command adds more blue lines. After you've had your fill of blueness, exit test mode by sending a exit test mode command (18), which also sets the contrast to it's highest. Now why is it dangerous? Sure it looks cool to make a supposedly black and white LCD to display BLUE, but you are pumping so much energy through the LCD to get this effect that leaving it in this mode for too long can cause long-term damage. Ever left your monitor on for a day or two and forget to set a screen saver? Remember how when you turned it off a burnt image of your screen remained? Well that's what can happen if you leave test mode on for too long. Other possible side effects include &amp;quot;dead pixels&amp;quot; (pixels that stay off no matter what you do).&lt;br /&gt;
&lt;br /&gt;
So don't use test mode okay? Just pretend you didn't hear about it...&lt;br /&gt;
&lt;br /&gt;
== Cursor movement and out-of-bounds behavior ==&lt;br /&gt;
It is possible to set the column number out of range, either by directly writing a column number out of bounds, or by switching to 6-bit mode, moving the column to a position outside of 8-bit mode's range, then switching back to 8-bit mode.&lt;br /&gt;
&lt;br /&gt;
If the column is out of range, no write is made to the display, but the column will continue to increment or decrement.&lt;br /&gt;
&lt;br /&gt;
===8-bit mode===&lt;br /&gt;
In 8-bit mode, the column will wrap from 14 to 0 when moving right, and wrap from 0 to 14 when moving left.  If the column&amp;gt;14, then there is no wrapping, the column will continue to increment or decrement within the full range of 0-31.  Exceeding column 31 returns to column 0.&lt;br /&gt;
&lt;br /&gt;
===6-bit-mode===&lt;br /&gt;
Same as 8-bit mode, but column wraps from 19 to 0 when moving right, and 0 to 19 when moving left.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Turn the LCD &amp;quot;off&amp;quot; and back &amp;quot;on&amp;quot;.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ld a, 02h&lt;br /&gt;
 out (10h), a&lt;br /&gt;
 push hl ;Or do something else that takes ~60 TStates.&lt;br /&gt;
 push de&lt;br /&gt;
 pop de&lt;br /&gt;
 pop hl&lt;br /&gt;
 nop&lt;br /&gt;
 inc a&lt;br /&gt;
 out (10h), a&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[83Plus:Ports:11|Port 11]] - LCD Data Port&lt;br /&gt;
* [http://wikiti.denglend.net/stuff/t6a04.pdf LCD driver datasheet]&lt;/div&gt;</summary>
		<author><name>Dwedit</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Emulators:TI_Flash_Debugger</id>
		<title>Emulators:TI Flash Debugger</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Emulators:TI_Flash_Debugger"/>
				<updated>2007-05-26T05:51:47Z</updated>
		
		<summary type="html">&lt;p&gt;Dwedit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
[[Emulators:TI Flash Debugger|TI Flash Debugger]] is TI's very own application debugging program.  Unfortunately, it does not emulate the Z80 correctly.  It does not support the undocumented instructions, and does not correctly emulate the effects on flags from instructions.  This especially kills off the game &amp;quot;Dying Eyes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
It also only supports a single keyboard key at a time.&lt;br /&gt;
&lt;br /&gt;
The .clc files which come with the program are full ROM images after truncating them to 512kb.&lt;/div&gt;</summary>
		<author><name>Dwedit</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Category:Emulators</id>
		<title>Category:Emulators</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Category:Emulators"/>
				<updated>2007-05-26T05:47:52Z</updated>
		
		<summary type="html">&lt;p&gt;Dwedit: /* TI Emulators */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A software emulator allows computer programs to run on a platform (computer architecture and/or operating system) other than the one for which they were originally written. Unlike a simulation, which only attempts to reproduce a program's behavior, an emulation attempts to precisely model the state of the device being emulated.&lt;br /&gt;
&lt;br /&gt;
[http://www.wikipedia.org Source: wikipedia]&lt;br /&gt;
&lt;br /&gt;
==Advantages==&lt;br /&gt;
Why using an emulator instead of the ''real'' calculator? There are several reasons for this:&lt;br /&gt;
* When crashing, you can recover the emulator with the ease of one/two-clicks.&lt;br /&gt;
* Sending files is a matter of drag'n'droping the file.&lt;br /&gt;
* Test on different calcs.&lt;br /&gt;
* Access to powerfull debuging tools.&lt;br /&gt;
* Ability to take screenshots.&lt;br /&gt;
&lt;br /&gt;
==TI Emulators==&lt;br /&gt;
There are four major emulators available for the z80 series of calcs.&lt;br /&gt;
* [[Emulators:PindurTI|PindurTI]] (also known as PTI)&lt;br /&gt;
* [[Emulators:Virtual TI|Virtual TI]] (also known as VTI)&lt;br /&gt;
* [[Emulators:TilEm|TilEm]]&lt;br /&gt;
* [[Emulators:TI Flash Debugger|TI Flash Debugger]]&lt;br /&gt;
* Jim_e and Spencer's emulator : [http://www.revsoft.org/news/new-project-our-very-own-emulator/] [http://www.revsoft.org/phpBB2/viewtopic.php?t=608]&lt;br /&gt;
&lt;br /&gt;
[[Emulators:PindurTI|PindurTI]] is the latest addition to emulators and has the most accurate emulation of all emulators available. It is however only for Windows at the moment. Linux users can use [[Emulators:TilEm|TilEm]]. [[Emulators:Virtual TI|Virtual TI]] is the oldest and most used emulator at the moment. It has however a lot problems because of incorrect emulation.&lt;br /&gt;
&lt;br /&gt;
The major emulator for the m68k series is [[Emulators:TiEmu|TiEmu]], which supports all the 68k calcs.&lt;/div&gt;</summary>
		<author><name>Dwedit</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Emulators:Virtual_TI</id>
		<title>Emulators:Virtual TI</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Emulators:Virtual_TI"/>
				<updated>2007-05-26T04:33:01Z</updated>
		
		<summary type="html">&lt;p&gt;Dwedit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
[[Emulators:Virtual TI|Virtual TI]] is a popular TI-8x and TI-9x emulator programmed by Rusty Wagner.  It has many features, such as screenshots and the ability to link with a calculator over a serial cable.&lt;br /&gt;
&lt;br /&gt;
==Version 3.0==&lt;br /&gt;
Version 3.0 is highly limited.  It cannot receive files other than Flash applications, and does not emulate the undocumented instructions of the Z80.&lt;br /&gt;
&lt;br /&gt;
==Inaccuracies==&lt;br /&gt;
===LCD controller inaccuracies===&lt;br /&gt;
This applies to the TI-82/TI-83/TI-83+ series.&lt;br /&gt;
&lt;br /&gt;
Virtual fails to correctly perform 6-bit writes.  It keeps the two most significant bits and ORs them to the screen instead of dropping them.  The problem is especially noticeable on TI-83 ROM version 1.07, where the V character has a garbage pixel around it.&lt;br /&gt;
&lt;br /&gt;
Virtual TI does not correctly emulate the [[83Plus:Ports:10|LCD controller's]] behavior for going out of bounds.  Instead, if the column is ever out of the 0-11 (8-bit) or 0-19 (6-bit) range, the column number is considered invalid until a new column number is written.  You can't move the cursor back into valid range to the right or left through LCD writes.  However, no programs currently try to access columns which are off the visible screen, so this is not a major problem.&lt;br /&gt;
&lt;br /&gt;
Virtual TI does not emulate the extra 24 pixels of horizontal resolution offered by the LCD controller, which is not visible on the screen.  No known programs actually use that feature though.&lt;br /&gt;
==External Links==&lt;br /&gt;
* [[wikipedia:Virtual TI|Virtual TI]] on Wikipedia&lt;br /&gt;
* [http://www.ticalc.org/archives/files/fileinfo/84/8442.html Virtual TI 2.5] at Ticalc.org&lt;br /&gt;
* [http://www.ticalc.org/archives/files/fileinfo/261/26120.html Virtual TI 3.0 Alpha] (Limited features) at Ticalc.org&lt;/div&gt;</summary>
		<author><name>Dwedit</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Emulators:Virtual_TI</id>
		<title>Emulators:Virtual TI</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Emulators:Virtual_TI"/>
				<updated>2007-05-26T04:32:51Z</updated>
		
		<summary type="html">&lt;p&gt;Dwedit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Emulators:Virtual TI|Virtual TI]] is a popular TI-8x and TI-9x emulator programmed by Rusty Wagner.  It has many features, such as screenshots and the ability to link with a calculator over a serial cable.&lt;br /&gt;
&lt;br /&gt;
==Version 3.0==&lt;br /&gt;
Version 3.0 is highly limited.  It cannot receive files other than Flash applications, and does not emulate the undocumented instructions of the Z80.&lt;br /&gt;
&lt;br /&gt;
==Inaccuracies==&lt;br /&gt;
===LCD controller inaccuracies===&lt;br /&gt;
This applies to the TI-82/TI-83/TI-83+ series.&lt;br /&gt;
&lt;br /&gt;
Virtual fails to correctly perform 6-bit writes.  It keeps the two most significant bits and ORs them to the screen instead of dropping them.  The problem is especially noticeable on TI-83 ROM version 1.07, where the V character has a garbage pixel around it.&lt;br /&gt;
&lt;br /&gt;
Virtual TI does not correctly emulate the [[83Plus:Ports:10|LCD controller's]] behavior for going out of bounds.  Instead, if the column is ever out of the 0-11 (8-bit) or 0-19 (6-bit) range, the column number is considered invalid until a new column number is written.  You can't move the cursor back into valid range to the right or left through LCD writes.  However, no programs currently try to access columns which are off the visible screen, so this is not a major problem.&lt;br /&gt;
&lt;br /&gt;
Virtual TI does not emulate the extra 24 pixels of horizontal resolution offered by the LCD controller, which is not visible on the screen.  No known programs actually use that feature though.&lt;br /&gt;
==External Links==&lt;br /&gt;
* [[wikipedia:Virtual TI|Virtual TI]] on Wikipedia&lt;br /&gt;
* [http://www.ticalc.org/archives/files/fileinfo/84/8442.html Virtual TI 2.5] at Ticalc.org&lt;br /&gt;
* [http://www.ticalc.org/archives/files/fileinfo/261/26120.html Virtual TI 3.0 Alpha] (Limited features) at Ticalc.org&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;/div&gt;</summary>
		<author><name>Dwedit</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Emulators:Virtual_TI</id>
		<title>Emulators:Virtual TI</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Emulators:Virtual_TI"/>
				<updated>2007-05-26T04:24:42Z</updated>
		
		<summary type="html">&lt;p&gt;Dwedit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Emulators:Virtual TI|Virtual TI]] is a popular TI-8x and TI-9x emulator programmed by Rusty Wagner.  It has many features, such as screenshots and the ability to link with a calculator over a serial cable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Inaccuracies==&lt;br /&gt;
===LCD controller inaccuracies===&lt;br /&gt;
When emulating a TI-82, TI-83 or TI-83+, virtual TI does not correctly emulate the LCD controller's behavior for going out of bounds.  Instead, if the column is ever out of the 0-11 (8-bit) or 0-19 (6-bit) range, the column number is considered invalid until a new column number is written.  You can't move the cursor back into valid range to the right or left through LCD writes.&lt;br /&gt;
&lt;br /&gt;
Virtual TI also fails to correctly perform 6-bit writes, especially noticeable on TI-83 ROM version 1.07, where the V character has garbage around it.&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
* [[wikipedia:Virtual TI|Virtual TI]] on Wikipedia&lt;br /&gt;
* [http://www.ticalc.org/archives/files/fileinfo/84/8442.html Virtual TI 2.5] at Ticalc.org&lt;br /&gt;
* [http://www.ticalc.org/archives/files/fileinfo/261/26120.html Virtual TI 3.0 Alpha] (Limited features) at Ticalc.org&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;/div&gt;</summary>
		<author><name>Dwedit</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:Ports:10</id>
		<title>83Plus:Ports:10</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:Ports:10"/>
				<updated>2007-05-26T04:20:33Z</updated>
		
		<summary type="html">&lt;p&gt;Dwedit: Out of bounds behavior&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:Ports:By Address|10 - LCD Command/Status Port]][[Category:83Plus:Ports:By Name|LCD Command/Status Port]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Port Number:''' 10h&lt;br /&gt;
&lt;br /&gt;
'''Function:''' LCD Command and Status Port&lt;br /&gt;
&lt;br /&gt;
This port is used to check the status of and send commands to the TI-83+'s LCD Driver.&lt;br /&gt;
&lt;br /&gt;
=== Read Values ===&lt;br /&gt;
The state of the LCD can be determined by reading this port.&lt;br /&gt;
* Bit 0: Set if auto-increment mode (commands 05 and 07) is selected, reset if auto-decrement mode (commands 04 and 06) is selected.&lt;br /&gt;
* Bit 1: Set if auto-increment or auto-decrement will affect the current column, or reset if auto-increment/decrement will affect the current row.&lt;br /&gt;
* Bit 2, 3: Not used.&lt;br /&gt;
* Bit 4: Set if in reset state, reset if in operating state. (Whatever that means.)&lt;br /&gt;
* Bit 5: Set if the display is enabled. Reset if disabled. (Note: LCD is completely turned off via [[83Plus:Ports:03|Port 03h]].)&lt;br /&gt;
* Bit 6: Set if the LCD will transfer 8 bits at a time through [[83Plus:Ports:11|Port 11]]. Reset if the LCD will only trasfer 6 bits at a time.&lt;br /&gt;
* Bit 7: Set if the LCD is busy. Reset if a command can be accepted.&lt;br /&gt;
&lt;br /&gt;
=== Write Values ===&lt;br /&gt;
Writing this port sends a command to the LCD. Once you send a command, wait until bit 7 reads 0 before sending another. You need a minimum delay of 10 microseconds (60 cycles of whatever else on the 6MHz TI-83+, or ~150 on a TI-83+ Silver or any TI-84+ when running in [[83Plus:Ports:20|fast mode]]).&lt;br /&gt;
&lt;br /&gt;
* 00 : Switch to 6-bit mode. ([[83Plus:Ports:11|Port 11]] transfers 6-bits at a time.)&lt;br /&gt;
* 01 : Switch to 8-bit mode. ([[83Plus:Ports:11|Port 11]] transfers 8-bits at a time.)&lt;br /&gt;
* 02 : Disable the screen. This blanks the screen and disconnects the LCD RAM from the physical screen, thus allowing you to use the LCD RAM as extra saferam. (But accessing it is so horribly slow that you should only do this if the usual saferam areas aren't enough and you don't need to display anything.)&lt;br /&gt;
* 03 : Enable the screen. This resumes displaying the LCD's RAM contents to the physical screen. (So any garbage you put into LCD RAM while it was off will show up, so B_CALL ClrLCDFull before this!)&lt;br /&gt;
* 04 : Set X auto-decrement mode. Every read or write operation from the data port will cause the LCD's internal pointer to move up one row.&lt;br /&gt;
* 05 : Set X auto-increment mode. Every read or write operation from the data port will cause the LCD's internal pointer to move down one row. The TI-83+ expects the LCD to be in this mode for most display routines.&lt;br /&gt;
* 06 : Set Y auto-decrement mode. Every read or write operation from the data port will cause the LCD's internal pointer to move left one column.&lt;br /&gt;
* 07 : Set Y auto-increment mode. Every read or write operation from the data port will cause the LCD's internal pointer to move right one column.&lt;br /&gt;
* [08~0B]: Set power supply enhancement. You'd be well advised to just leave this alone.&lt;br /&gt;
* [10~13]: Set power supply level. You'd be well advised to just leave this alone.&lt;br /&gt;
* [14~17]: Undefined.&lt;br /&gt;
* [18]: Cancel test mode (see Comments).&lt;br /&gt;
* [19~1B]: Undefined.&lt;br /&gt;
* [1C~1F]: Enter test mode (see Comments).&lt;br /&gt;
* [20~3F]: Set column.  [20~2E] are valid columns in 8-bit mode, [20~33] are valid columns in 6-bit mode. [34~3F] values are also accepted, but do not correspond to a drawable area.&lt;br /&gt;
* [40~7F]: &amp;quot;Z addressing&amp;quot; (It just changed what phyiscal row the top row of RAM is displayed on. The LCD will wrap the bottom of it's RAM to the top of the screen as needed.)&lt;br /&gt;
* [80~BF]: Set row.&lt;br /&gt;
* [C0~FF]: Set contrast. (C0 is lowest. Note that there is a [[83Plus:RAM:8447|System RAM area (contrast)]] for this which will need to be updated if you want 2nd+Up/2nd+Down to change the contrast as expected (instead of causing a sudden jump...).)&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
===Necessary LCD communication delay===&lt;br /&gt;
As mentioned, a 10 microsecond delay is required after sending the command. TI provides a routine at 000B (use normal CALL, not BCALL) that will delay the required amount of time. (Because this was not originally an LCD delay routine, on OS's prior to 1.13, calling it destroys the zero flag.)&lt;br /&gt;
&lt;br /&gt;
On older calculators, this code sequence should also provide sufficient delay while also preserving the zero flag:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; push hl ;15&lt;br /&gt;
 push de ;30&lt;br /&gt;
 pop de ;44&lt;br /&gt;
 pop hl ;58&lt;br /&gt;
 nop ;62&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But I would advise you actually make use of these waste cycles somehow (process a buffer or something).&lt;br /&gt;
&lt;br /&gt;
On some newer calculators, a fixed delay can still be used in combination with slowing the CPU through port [[83Plus:Ports:20|20]] and/or adjusting ports [[83Plus:Ports:29|29]] and [[83Plus:Ports:2A|2A]].  However, a large number of calculators have been produced recently whose LCD drivers, for whatever reason, do not respond as quickly.  For this reason, except where the speed loss is absolutely unacceptable (such as for grayscale display) fixed delays should '''not''' be used.  Instead either use the routine at 000B, or poll this port or [[83Plus:Ports:02|port 2]] manually.&lt;br /&gt;
&lt;br /&gt;
===Unused screen area===&lt;br /&gt;
The LCD driver's video memory holds a display 120 pixels wide, even though the screen is only 96 pixels wide.  The 24 pixel wide offscreen area can still be read from and written to, and is not affected by soft power-off.&lt;br /&gt;
&lt;br /&gt;
===Test mode===&lt;br /&gt;
This is a very dangerous mode. The first test mode command (1C~1F) causes the screen to receive an unusually high amount of energy. The result is that the screen seems to go blank, save for a single blue(!) line on the TI 83, but on the TI 84's, the entire screen turns blue! Each subsequent command adds more blue lines. After you've had your fill of blueness, exit test mode by sending a exit test mode command (18), which also sets the contrast to it's highest. Now why is it dangerous? Sure it looks cool to make a supposedly black and white LCD to display BLUE, but you are pumping so much energy through the LCD to get this effect that leaving it in this mode for too long can cause long-term damage. Ever left your monitor on for a day or two and forget to set a screen saver? Remember how when you turned it off a burnt image of your screen remained? Well that's what can happen if you leave test mode on for too long. Other possible side effects include &amp;quot;dead pixels&amp;quot; (pixels that stay off no matter what you do).&lt;br /&gt;
&lt;br /&gt;
So don't use test mode okay? Just pretend you didn't hear about it...&lt;br /&gt;
&lt;br /&gt;
== Cursor movement and out-of-bounds behavior ==&lt;br /&gt;
It is possible to set the column number out of range, either by directly writing a column number out of bounds, or by switching to 6-bit mode, moving the column to a position outside of 8-bit mode's range, then switching back to 8-bit mode.&lt;br /&gt;
&lt;br /&gt;
If the column is out of range, no write is made to the display, but the column will continue to increment or decrement.&lt;br /&gt;
&lt;br /&gt;
===8-bit mode===&lt;br /&gt;
In 8-bit mode, the column will wrap from 14 to 0 when moving right, and wrap from 0 to 14 when moving left.  If the column&amp;gt;14, then there is no wrapping, the column will continue to increment or decrement within the full range of 0-31.  Exceeding column 31 returns to column 0.&lt;br /&gt;
&lt;br /&gt;
===6-bit-mode===&lt;br /&gt;
Same as 8-bit mode, but column wraps from 19 to 0 when moving right, and 0 to 19 when moving left.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Turn the LCD &amp;quot;off&amp;quot; and back &amp;quot;on&amp;quot;.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ld a, 02h&lt;br /&gt;
 out (10h), a&lt;br /&gt;
 push hl ;Or do something else that takes ~60 TStates.&lt;br /&gt;
 push de&lt;br /&gt;
 pop de&lt;br /&gt;
 pop hl&lt;br /&gt;
 nop&lt;br /&gt;
 inc a&lt;br /&gt;
 out (10h), a&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[83Plus:Ports:11|Port 11]] - LCD Data Port&lt;br /&gt;
* [http://wikiti.denglend.net/stuff/t6a04.pdf LCD driver datasheet]&lt;/div&gt;</summary>
		<author><name>Dwedit</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-27T02:56:31Z</updated>
		
		<summary type="html">&lt;p&gt;Dwedit: &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;/div&gt;</summary>
		<author><name>Dwedit</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Talk:83:Ports:03</id>
		<title>Talk:83:Ports:03</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Talk:83:Ports:03"/>
				<updated>2005-04-11T18:02:45Z</updated>
		
		<summary type="html">&lt;p&gt;Dwedit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;What's this stuff about timers doing on a TI83 page?--[[User:Dwedit|Dwedit]] 11:02, 11 Apr 2005 (PDT)&lt;/div&gt;</summary>
		<author><name>Dwedit</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Z80_Routines:Graphic:Bub_font</id>
		<title>Z80 Routines:Graphic:Bub font</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Z80_Routines:Graphic:Bub_font"/>
				<updated>2005-03-29T05:15:50Z</updated>
		
		<summary type="html">&lt;p&gt;Dwedit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Z80 Routines:Graphic|bub_font]]&lt;br /&gt;
[[Category:Z80 Routines|bub_font]]&lt;br /&gt;
&lt;br /&gt;
For a modified version which uses a 4x4 font, see [[Routines:Graphic:Bub4font]].&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
;Code by Dwedit.  Font based on TI's small font.&lt;br /&gt;
;This is a replacement for Vputs intended for the TI85, since the TI85&lt;br /&gt;
;does not have a textwrite flag.&lt;br /&gt;
;The font data is packed so that two characters are stored every 5 bytes.&lt;br /&gt;
;Feel free to replace largesprite with any other sprite routine&lt;br /&gt;
&lt;br /&gt;
Appvputs:&lt;br /&gt;
	ld a,(hl)&lt;br /&gt;
	inc hl&lt;br /&gt;
&lt;br /&gt;
	or a&lt;br /&gt;
	ret z&lt;br /&gt;
	push hl&lt;br /&gt;
		call appvputmap&lt;br /&gt;
	pop hl&lt;br /&gt;
	jr appvputs&lt;br /&gt;
&lt;br /&gt;
appvputmap:&lt;br /&gt;
	sub 32&lt;br /&gt;
	ld l,a&lt;br /&gt;
	srl l&lt;br /&gt;
	ld h,0&lt;br /&gt;
	ld e,l&lt;br /&gt;
	ld d,h&lt;br /&gt;
	add hl,hl&lt;br /&gt;
	add hl,hl&lt;br /&gt;
	add hl,de&lt;br /&gt;
	ld de,fontdata&lt;br /&gt;
	add hl,de&lt;br /&gt;
	ld de,bytes5&lt;br /&gt;
	ld b,5&lt;br /&gt;
	and 1&lt;br /&gt;
	jr z,unshiftedchar&lt;br /&gt;
shiftedcharloop:&lt;br /&gt;
	ld a,(hl)&lt;br /&gt;
	add a,a&lt;br /&gt;
&lt;br /&gt;
	add a,a&lt;br /&gt;
	add a,a&lt;br /&gt;
	add a,a&lt;br /&gt;
	ld (de),a&lt;br /&gt;
	inc hl&lt;br /&gt;
	inc de&lt;br /&gt;
	djnz shiftedcharloop&lt;br /&gt;
	jr fontskip&lt;br /&gt;
unShiftedChar:&lt;br /&gt;
	ld a,(hl)&lt;br /&gt;
	and %11110000&lt;br /&gt;
	ld (de),a&lt;br /&gt;
	inc hl&lt;br /&gt;
	inc de&lt;br /&gt;
	djnz unshiftedchar&lt;br /&gt;
fontskip:&lt;br /&gt;
	ld ix,bytes5&lt;br /&gt;
	ld hl,(pencol)&lt;br /&gt;
	ld a,l&lt;br /&gt;
	ld l,h&lt;br /&gt;
	inc l&lt;br /&gt;
	ld bc,$0501&lt;br /&gt;
	call ionlargesprite&lt;br /&gt;
	;advance&lt;br /&gt;
	ld hl,pencol&lt;br /&gt;
	ld a,(hl)&lt;br /&gt;
	add a,6&lt;br /&gt;
	ld (hl),a&lt;br /&gt;
	ld c,%00001000&lt;br /&gt;
findwidthloop:&lt;br /&gt;
	dec (hl)&lt;br /&gt;
	ld a,c&lt;br /&gt;
	add a,a&lt;br /&gt;
	ret z&lt;br /&gt;
	ld c,a&lt;br /&gt;
	ld de,bytes5&lt;br /&gt;
	ld b,5&lt;br /&gt;
findwidthloop2:&lt;br /&gt;
	ld a,(de)&lt;br /&gt;
	and c&lt;br /&gt;
	ret nz&lt;br /&gt;
	inc de&lt;br /&gt;
	djnz findwidthloop2&lt;br /&gt;
	jr findwidthloop&lt;br /&gt;
&lt;br /&gt;
;You can also equate bytes5 to any area where there are 5 bytes of destroyable ram, such as op1.	&lt;br /&gt;
bytes5:&lt;br /&gt;
	.db 0,0,0,0,0&lt;br /&gt;
	&lt;br /&gt;
Fontdata:&lt;br /&gt;
 .db %00001000&lt;br /&gt;
 .db %00001000&lt;br /&gt;
 .db %00001000&lt;br /&gt;
 .db %00000000&lt;br /&gt;
 .db %00001000&lt;br /&gt;
&lt;br /&gt;
 .db %10100101&lt;br /&gt;
 .db %10101111&lt;br /&gt;
 .db %10100101&lt;br /&gt;
 .db %00001111&lt;br /&gt;
 .db %00000101&lt;br /&gt;
&lt;br /&gt;
 .db %01111010&lt;br /&gt;
 .db %10100010&lt;br /&gt;
 .db %01110100&lt;br /&gt;
 .db %00101000&lt;br /&gt;
 .db %11111010&lt;br /&gt;
&lt;br /&gt;
 .db %01001000&lt;br /&gt;
 .db %10101000&lt;br /&gt;
 .db %01001000&lt;br /&gt;
 .db %10100000&lt;br /&gt;
 .db %01010000&lt;br /&gt;
&lt;br /&gt;
 .db %01001000&lt;br /&gt;
 .db %10000100&lt;br /&gt;
 .db %10000100&lt;br /&gt;
 .db %10000100&lt;br /&gt;
 .db %01001000&lt;br /&gt;
&lt;br /&gt;
 .db %10100000&lt;br /&gt;
 .db %01000100&lt;br /&gt;
 .db %11101110&lt;br /&gt;
 .db %01000100&lt;br /&gt;
 .db %10100000&lt;br /&gt;
&lt;br /&gt;
 .db %00000000&lt;br /&gt;
 .db %00000000&lt;br /&gt;
 .db %01001110&lt;br /&gt;
 .db %01000000&lt;br /&gt;
 .db %10000000&lt;br /&gt;
&lt;br /&gt;
 .db %00000010&lt;br /&gt;
 .db %00000010&lt;br /&gt;
 .db %00000100&lt;br /&gt;
 .db %00001000&lt;br /&gt;
 .db %10001000&lt;br /&gt;
&lt;br /&gt;
 .db %01000100&lt;br /&gt;
 .db %10101100&lt;br /&gt;
 .db %10100100&lt;br /&gt;
 .db %10100100&lt;br /&gt;
 .db %01001110&lt;br /&gt;
&lt;br /&gt;
 .db %11001100&lt;br /&gt;
 .db %00100010&lt;br /&gt;
 .db %01000100&lt;br /&gt;
 .db %10000010&lt;br /&gt;
 .db %11101100&lt;br /&gt;
&lt;br /&gt;
 .db %10001110&lt;br /&gt;
 .db %10101000&lt;br /&gt;
 .db %11101100&lt;br /&gt;
 .db %00100010&lt;br /&gt;
 .db %00101100&lt;br /&gt;
&lt;br /&gt;
 .db %01101110&lt;br /&gt;
 .db %10000010&lt;br /&gt;
 .db %11100100&lt;br /&gt;
 .db %10101000&lt;br /&gt;
 .db %11101000&lt;br /&gt;
&lt;br /&gt;
 .db %11101110&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %11101110&lt;br /&gt;
 .db %10100010&lt;br /&gt;
 .db %11101100&lt;br /&gt;
&lt;br /&gt;
 .db %00000000&lt;br /&gt;
 .db %10000100&lt;br /&gt;
 .db %00000000&lt;br /&gt;
 .db %10000100&lt;br /&gt;
 .db %00001000&lt;br /&gt;
&lt;br /&gt;
 .db %00100000&lt;br /&gt;
 .db %01001110&lt;br /&gt;
 .db %10000000&lt;br /&gt;
 .db %01001110&lt;br /&gt;
 .db %00100000&lt;br /&gt;
&lt;br /&gt;
 .db %10001100&lt;br /&gt;
 .db %01000010&lt;br /&gt;
 .db %00100100&lt;br /&gt;
 .db %01000000&lt;br /&gt;
 .db %10000100&lt;br /&gt;
&lt;br /&gt;
 .db %11100100&lt;br /&gt;
 .db %00011010&lt;br /&gt;
 .db %11011110&lt;br /&gt;
 .db %10111010&lt;br /&gt;
 .db %01111010&lt;br /&gt;
&lt;br /&gt;
 .db %11000110&lt;br /&gt;
 .db %10101000&lt;br /&gt;
 .db %11001000&lt;br /&gt;
 .db %10101000&lt;br /&gt;
 .db %11000110&lt;br /&gt;
&lt;br /&gt;
 .db %11001110&lt;br /&gt;
 .db %10101000&lt;br /&gt;
 .db %10101100&lt;br /&gt;
 .db %10101000&lt;br /&gt;
 .db %11001110&lt;br /&gt;
&lt;br /&gt;
 .db %11100110&lt;br /&gt;
 .db %10001000&lt;br /&gt;
 .db %11001010&lt;br /&gt;
 .db %10001010&lt;br /&gt;
 .db %10000110&lt;br /&gt;
&lt;br /&gt;
 .db %10101110&lt;br /&gt;
 .db %10100100&lt;br /&gt;
 .db %11100100&lt;br /&gt;
 .db %10100100&lt;br /&gt;
 .db %10101110&lt;br /&gt;
&lt;br /&gt;
 .db %00101010&lt;br /&gt;
 .db %00101010&lt;br /&gt;
 .db %00101100&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %11101010&lt;br /&gt;
&lt;br /&gt;
 .db %10001010&lt;br /&gt;
 .db %10001110&lt;br /&gt;
 .db %10001110&lt;br /&gt;
 .db %10001010&lt;br /&gt;
 .db %11101010&lt;br /&gt;
&lt;br /&gt;
 .db %11001110&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %10101110&lt;br /&gt;
&lt;br /&gt;
 .db %11001110&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %11001010&lt;br /&gt;
 .db %10001110&lt;br /&gt;
 .db %10000110&lt;br /&gt;
&lt;br /&gt;
 .db %11000110&lt;br /&gt;
 .db %10101000&lt;br /&gt;
 .db %11000100&lt;br /&gt;
 .db %10100010&lt;br /&gt;
 .db %10101100&lt;br /&gt;
&lt;br /&gt;
 .db %11101010&lt;br /&gt;
 .db %01001010&lt;br /&gt;
 .db %01001010&lt;br /&gt;
 .db %01001010&lt;br /&gt;
 .db %01001110&lt;br /&gt;
&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %01001110&lt;br /&gt;
 .db %01001010&lt;br /&gt;
&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %01000100&lt;br /&gt;
 .db %10100100&lt;br /&gt;
 .db %10100100&lt;br /&gt;
&lt;br /&gt;
 .db %11100100&lt;br /&gt;
 .db %00101010&lt;br /&gt;
 .db %01001110&lt;br /&gt;
 .db %10001010&lt;br /&gt;
 .db %11100100&lt;br /&gt;
&lt;br /&gt;
 .db %10001100&lt;br /&gt;
 .db %10000100&lt;br /&gt;
 .db %01000100&lt;br /&gt;
 .db %00100100&lt;br /&gt;
 .db %00101100&lt;br /&gt;
&lt;br /&gt;
 .db %01000000&lt;br /&gt;
 .db %10100000&lt;br /&gt;
 .db %00000000&lt;br /&gt;
 .db %00000000&lt;br /&gt;
 .db %00001110&lt;br /&gt;
&lt;br /&gt;
 .db %10000000&lt;br /&gt;
 .db %01000110&lt;br /&gt;
 .db %00001010&lt;br /&gt;
 .db %00001010&lt;br /&gt;
 .db %00000110&lt;br /&gt;
&lt;br /&gt;
 .db %10000000&lt;br /&gt;
 .db %11000110&lt;br /&gt;
 .db %10101000&lt;br /&gt;
 .db %10101000&lt;br /&gt;
 .db %11000110&lt;br /&gt;
&lt;br /&gt;
 .db %00100000&lt;br /&gt;
 .db %01100100&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %10101100&lt;br /&gt;
 .db %01100110&lt;br /&gt;
&lt;br /&gt;
 .db %01000110&lt;br /&gt;
 .db %10001010&lt;br /&gt;
 .db %11000110&lt;br /&gt;
 .db %10000010&lt;br /&gt;
 .db %10001100&lt;br /&gt;
&lt;br /&gt;
 .db %10001000&lt;br /&gt;
 .db %11000000&lt;br /&gt;
 .db %10101000&lt;br /&gt;
 .db %10101000&lt;br /&gt;
 .db %10101000&lt;br /&gt;
&lt;br /&gt;
 .db %00101000&lt;br /&gt;
 .db %00001000&lt;br /&gt;
 .db %00101010&lt;br /&gt;
 .db %10101100&lt;br /&gt;
 .db %01001010&lt;br /&gt;
&lt;br /&gt;
 .db %11000000&lt;br /&gt;
 .db %01001010&lt;br /&gt;
 .db %01001110&lt;br /&gt;
 .db %01001010&lt;br /&gt;
 .db %01001010&lt;br /&gt;
&lt;br /&gt;
 .db %00000000&lt;br /&gt;
 .db %11000100&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %10100100&lt;br /&gt;
&lt;br /&gt;
 .db %00000000&lt;br /&gt;
 .db %11000110&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %11000110&lt;br /&gt;
 .db %10000010&lt;br /&gt;
&lt;br /&gt;
 .db %00000000&lt;br /&gt;
 .db %10101100&lt;br /&gt;
 .db %11001000&lt;br /&gt;
 .db %10000100&lt;br /&gt;
 .db %10001100&lt;br /&gt;
&lt;br /&gt;
 .db %10000000&lt;br /&gt;
 .db %11001010&lt;br /&gt;
 .db %10001010&lt;br /&gt;
 .db %10001010&lt;br /&gt;
 .db %01001110&lt;br /&gt;
&lt;br /&gt;
 .db %00000000&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %01001110&lt;br /&gt;
 .db %01001010&lt;br /&gt;
&lt;br /&gt;
 .db %00000000&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %01001010&lt;br /&gt;
 .db %01000100&lt;br /&gt;
 .db %10101000&lt;br /&gt;
&lt;br /&gt;
 .db %00000110&lt;br /&gt;
 .db %11100100&lt;br /&gt;
 .db %00101000&lt;br /&gt;
 .db %01000100&lt;br /&gt;
 .db %11100110&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dwedit</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Z80_Routines:Graphic:Bub_font</id>
		<title>Z80 Routines:Graphic:Bub font</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Z80_Routines:Graphic:Bub_font"/>
				<updated>2005-03-29T05:14:48Z</updated>
		
		<summary type="html">&lt;p&gt;Dwedit: removed commented-out code&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Z80 Routines:Graphic|bub_font]]&lt;br /&gt;
[[Category:Z80 Routines|bub_font]]&lt;br /&gt;
&lt;br /&gt;
A modified version which contains a 4x4 font is available at [[Routines:Graphic:Bub4font]].&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
;Code by Dwedit.  Font based on TI's small font.&lt;br /&gt;
;This is a replacement for Vputs intended for the TI85, since the TI85&lt;br /&gt;
;does not have a textwrite flag.&lt;br /&gt;
;The font data is packed so that two characters are stored every 5 bytes.&lt;br /&gt;
;Feel free to replace largesprite with any other sprite routine&lt;br /&gt;
&lt;br /&gt;
Appvputs:&lt;br /&gt;
	ld a,(hl)&lt;br /&gt;
	inc hl&lt;br /&gt;
&lt;br /&gt;
	or a&lt;br /&gt;
	ret z&lt;br /&gt;
	push hl&lt;br /&gt;
		call appvputmap&lt;br /&gt;
	pop hl&lt;br /&gt;
	jr appvputs&lt;br /&gt;
&lt;br /&gt;
appvputmap:&lt;br /&gt;
	sub 32&lt;br /&gt;
	ld l,a&lt;br /&gt;
	srl l&lt;br /&gt;
	ld h,0&lt;br /&gt;
	ld e,l&lt;br /&gt;
	ld d,h&lt;br /&gt;
	add hl,hl&lt;br /&gt;
	add hl,hl&lt;br /&gt;
	add hl,de&lt;br /&gt;
	ld de,fontdata&lt;br /&gt;
	add hl,de&lt;br /&gt;
	ld de,bytes5&lt;br /&gt;
	ld b,5&lt;br /&gt;
	and 1&lt;br /&gt;
	jr z,unshiftedchar&lt;br /&gt;
shiftedcharloop:&lt;br /&gt;
	ld a,(hl)&lt;br /&gt;
	add a,a&lt;br /&gt;
&lt;br /&gt;
	add a,a&lt;br /&gt;
	add a,a&lt;br /&gt;
	add a,a&lt;br /&gt;
	ld (de),a&lt;br /&gt;
	inc hl&lt;br /&gt;
	inc de&lt;br /&gt;
	djnz shiftedcharloop&lt;br /&gt;
	jr fontskip&lt;br /&gt;
unShiftedChar:&lt;br /&gt;
	ld a,(hl)&lt;br /&gt;
	and %11110000&lt;br /&gt;
	ld (de),a&lt;br /&gt;
	inc hl&lt;br /&gt;
	inc de&lt;br /&gt;
	djnz unshiftedchar&lt;br /&gt;
fontskip:&lt;br /&gt;
	ld ix,bytes5&lt;br /&gt;
	ld hl,(pencol)&lt;br /&gt;
	ld a,l&lt;br /&gt;
	ld l,h&lt;br /&gt;
	inc l&lt;br /&gt;
	ld bc,$0501&lt;br /&gt;
	call ionlargesprite&lt;br /&gt;
	;advance&lt;br /&gt;
	ld hl,pencol&lt;br /&gt;
	ld a,(hl)&lt;br /&gt;
	add a,6&lt;br /&gt;
	ld (hl),a&lt;br /&gt;
	ld c,%00001000&lt;br /&gt;
findwidthloop:&lt;br /&gt;
	dec (hl)&lt;br /&gt;
	ld a,c&lt;br /&gt;
	add a,a&lt;br /&gt;
	ret z&lt;br /&gt;
	ld c,a&lt;br /&gt;
	ld de,bytes5&lt;br /&gt;
	ld b,5&lt;br /&gt;
findwidthloop2:&lt;br /&gt;
	ld a,(de)&lt;br /&gt;
	and c&lt;br /&gt;
	ret nz&lt;br /&gt;
	inc de&lt;br /&gt;
	djnz findwidthloop2&lt;br /&gt;
	jr findwidthloop&lt;br /&gt;
&lt;br /&gt;
;You can also equate bytes5 to any area where there are 5 bytes of destroyable ram, such as op1.	&lt;br /&gt;
bytes5:&lt;br /&gt;
	.db 0,0,0,0,0&lt;br /&gt;
	&lt;br /&gt;
Fontdata:&lt;br /&gt;
 .db %00001000&lt;br /&gt;
 .db %00001000&lt;br /&gt;
 .db %00001000&lt;br /&gt;
 .db %00000000&lt;br /&gt;
 .db %00001000&lt;br /&gt;
&lt;br /&gt;
 .db %10100101&lt;br /&gt;
 .db %10101111&lt;br /&gt;
 .db %10100101&lt;br /&gt;
 .db %00001111&lt;br /&gt;
 .db %00000101&lt;br /&gt;
&lt;br /&gt;
 .db %01111010&lt;br /&gt;
 .db %10100010&lt;br /&gt;
 .db %01110100&lt;br /&gt;
 .db %00101000&lt;br /&gt;
 .db %11111010&lt;br /&gt;
&lt;br /&gt;
 .db %01001000&lt;br /&gt;
 .db %10101000&lt;br /&gt;
 .db %01001000&lt;br /&gt;
 .db %10100000&lt;br /&gt;
 .db %01010000&lt;br /&gt;
&lt;br /&gt;
 .db %01001000&lt;br /&gt;
 .db %10000100&lt;br /&gt;
 .db %10000100&lt;br /&gt;
 .db %10000100&lt;br /&gt;
 .db %01001000&lt;br /&gt;
&lt;br /&gt;
 .db %10100000&lt;br /&gt;
 .db %01000100&lt;br /&gt;
 .db %11101110&lt;br /&gt;
 .db %01000100&lt;br /&gt;
 .db %10100000&lt;br /&gt;
&lt;br /&gt;
 .db %00000000&lt;br /&gt;
 .db %00000000&lt;br /&gt;
 .db %01001110&lt;br /&gt;
 .db %01000000&lt;br /&gt;
 .db %10000000&lt;br /&gt;
&lt;br /&gt;
 .db %00000010&lt;br /&gt;
 .db %00000010&lt;br /&gt;
 .db %00000100&lt;br /&gt;
 .db %00001000&lt;br /&gt;
 .db %10001000&lt;br /&gt;
&lt;br /&gt;
 .db %01000100&lt;br /&gt;
 .db %10101100&lt;br /&gt;
 .db %10100100&lt;br /&gt;
 .db %10100100&lt;br /&gt;
 .db %01001110&lt;br /&gt;
&lt;br /&gt;
 .db %11001100&lt;br /&gt;
 .db %00100010&lt;br /&gt;
 .db %01000100&lt;br /&gt;
 .db %10000010&lt;br /&gt;
 .db %11101100&lt;br /&gt;
&lt;br /&gt;
 .db %10001110&lt;br /&gt;
 .db %10101000&lt;br /&gt;
 .db %11101100&lt;br /&gt;
 .db %00100010&lt;br /&gt;
 .db %00101100&lt;br /&gt;
&lt;br /&gt;
 .db %01101110&lt;br /&gt;
 .db %10000010&lt;br /&gt;
 .db %11100100&lt;br /&gt;
 .db %10101000&lt;br /&gt;
 .db %11101000&lt;br /&gt;
&lt;br /&gt;
 .db %11101110&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %11101110&lt;br /&gt;
 .db %10100010&lt;br /&gt;
 .db %11101100&lt;br /&gt;
&lt;br /&gt;
 .db %00000000&lt;br /&gt;
 .db %10000100&lt;br /&gt;
 .db %00000000&lt;br /&gt;
 .db %10000100&lt;br /&gt;
 .db %00001000&lt;br /&gt;
&lt;br /&gt;
 .db %00100000&lt;br /&gt;
 .db %01001110&lt;br /&gt;
 .db %10000000&lt;br /&gt;
 .db %01001110&lt;br /&gt;
 .db %00100000&lt;br /&gt;
&lt;br /&gt;
 .db %10001100&lt;br /&gt;
 .db %01000010&lt;br /&gt;
 .db %00100100&lt;br /&gt;
 .db %01000000&lt;br /&gt;
 .db %10000100&lt;br /&gt;
&lt;br /&gt;
 .db %11100100&lt;br /&gt;
 .db %00011010&lt;br /&gt;
 .db %11011110&lt;br /&gt;
 .db %10111010&lt;br /&gt;
 .db %01111010&lt;br /&gt;
&lt;br /&gt;
 .db %11000110&lt;br /&gt;
 .db %10101000&lt;br /&gt;
 .db %11001000&lt;br /&gt;
 .db %10101000&lt;br /&gt;
 .db %11000110&lt;br /&gt;
&lt;br /&gt;
 .db %11001110&lt;br /&gt;
 .db %10101000&lt;br /&gt;
 .db %10101100&lt;br /&gt;
 .db %10101000&lt;br /&gt;
 .db %11001110&lt;br /&gt;
&lt;br /&gt;
 .db %11100110&lt;br /&gt;
 .db %10001000&lt;br /&gt;
 .db %11001010&lt;br /&gt;
 .db %10001010&lt;br /&gt;
 .db %10000110&lt;br /&gt;
&lt;br /&gt;
 .db %10101110&lt;br /&gt;
 .db %10100100&lt;br /&gt;
 .db %11100100&lt;br /&gt;
 .db %10100100&lt;br /&gt;
 .db %10101110&lt;br /&gt;
&lt;br /&gt;
 .db %00101010&lt;br /&gt;
 .db %00101010&lt;br /&gt;
 .db %00101100&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %11101010&lt;br /&gt;
&lt;br /&gt;
 .db %10001010&lt;br /&gt;
 .db %10001110&lt;br /&gt;
 .db %10001110&lt;br /&gt;
 .db %10001010&lt;br /&gt;
 .db %11101010&lt;br /&gt;
&lt;br /&gt;
 .db %11001110&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %10101110&lt;br /&gt;
&lt;br /&gt;
 .db %11001110&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %11001010&lt;br /&gt;
 .db %10001110&lt;br /&gt;
 .db %10000110&lt;br /&gt;
&lt;br /&gt;
 .db %11000110&lt;br /&gt;
 .db %10101000&lt;br /&gt;
 .db %11000100&lt;br /&gt;
 .db %10100010&lt;br /&gt;
 .db %10101100&lt;br /&gt;
&lt;br /&gt;
 .db %11101010&lt;br /&gt;
 .db %01001010&lt;br /&gt;
 .db %01001010&lt;br /&gt;
 .db %01001010&lt;br /&gt;
 .db %01001110&lt;br /&gt;
&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %01001110&lt;br /&gt;
 .db %01001010&lt;br /&gt;
&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %01000100&lt;br /&gt;
 .db %10100100&lt;br /&gt;
 .db %10100100&lt;br /&gt;
&lt;br /&gt;
 .db %11100100&lt;br /&gt;
 .db %00101010&lt;br /&gt;
 .db %01001110&lt;br /&gt;
 .db %10001010&lt;br /&gt;
 .db %11100100&lt;br /&gt;
&lt;br /&gt;
 .db %10001100&lt;br /&gt;
 .db %10000100&lt;br /&gt;
 .db %01000100&lt;br /&gt;
 .db %00100100&lt;br /&gt;
 .db %00101100&lt;br /&gt;
&lt;br /&gt;
 .db %01000000&lt;br /&gt;
 .db %10100000&lt;br /&gt;
 .db %00000000&lt;br /&gt;
 .db %00000000&lt;br /&gt;
 .db %00001110&lt;br /&gt;
&lt;br /&gt;
 .db %10000000&lt;br /&gt;
 .db %01000110&lt;br /&gt;
 .db %00001010&lt;br /&gt;
 .db %00001010&lt;br /&gt;
 .db %00000110&lt;br /&gt;
&lt;br /&gt;
 .db %10000000&lt;br /&gt;
 .db %11000110&lt;br /&gt;
 .db %10101000&lt;br /&gt;
 .db %10101000&lt;br /&gt;
 .db %11000110&lt;br /&gt;
&lt;br /&gt;
 .db %00100000&lt;br /&gt;
 .db %01100100&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %10101100&lt;br /&gt;
 .db %01100110&lt;br /&gt;
&lt;br /&gt;
 .db %01000110&lt;br /&gt;
 .db %10001010&lt;br /&gt;
 .db %11000110&lt;br /&gt;
 .db %10000010&lt;br /&gt;
 .db %10001100&lt;br /&gt;
&lt;br /&gt;
 .db %10001000&lt;br /&gt;
 .db %11000000&lt;br /&gt;
 .db %10101000&lt;br /&gt;
 .db %10101000&lt;br /&gt;
 .db %10101000&lt;br /&gt;
&lt;br /&gt;
 .db %00101000&lt;br /&gt;
 .db %00001000&lt;br /&gt;
 .db %00101010&lt;br /&gt;
 .db %10101100&lt;br /&gt;
 .db %01001010&lt;br /&gt;
&lt;br /&gt;
 .db %11000000&lt;br /&gt;
 .db %01001010&lt;br /&gt;
 .db %01001110&lt;br /&gt;
 .db %01001010&lt;br /&gt;
 .db %01001010&lt;br /&gt;
&lt;br /&gt;
 .db %00000000&lt;br /&gt;
 .db %11000100&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %10100100&lt;br /&gt;
&lt;br /&gt;
 .db %00000000&lt;br /&gt;
 .db %11000110&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %11000110&lt;br /&gt;
 .db %10000010&lt;br /&gt;
&lt;br /&gt;
 .db %00000000&lt;br /&gt;
 .db %10101100&lt;br /&gt;
 .db %11001000&lt;br /&gt;
 .db %10000100&lt;br /&gt;
 .db %10001100&lt;br /&gt;
&lt;br /&gt;
 .db %10000000&lt;br /&gt;
 .db %11001010&lt;br /&gt;
 .db %10001010&lt;br /&gt;
 .db %10001010&lt;br /&gt;
 .db %01001110&lt;br /&gt;
&lt;br /&gt;
 .db %00000000&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %01001110&lt;br /&gt;
 .db %01001010&lt;br /&gt;
&lt;br /&gt;
 .db %00000000&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %01001010&lt;br /&gt;
 .db %01000100&lt;br /&gt;
 .db %10101000&lt;br /&gt;
&lt;br /&gt;
 .db %00000110&lt;br /&gt;
 .db %11100100&lt;br /&gt;
 .db %00101000&lt;br /&gt;
 .db %01000100&lt;br /&gt;
 .db %11100110&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dwedit</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Z80_Routines:Graphic:Bub_font</id>
		<title>Z80 Routines:Graphic:Bub font</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Z80_Routines:Graphic:Bub_font"/>
				<updated>2005-03-29T05:12:34Z</updated>
		
		<summary type="html">&lt;p&gt;Dwedit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Z80 Routines:Graphic|bub_font]]&lt;br /&gt;
[[Category:Z80 Routines|bub_font]]&lt;br /&gt;
&lt;br /&gt;
A modified version which contains a 4x4 font is available at [[Routines:Graphic:Bub4font]].&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
;Code by Dwedit.  Font based on TI's small font.&lt;br /&gt;
;This is a replacement for Vputs intended for the TI85, since the TI85&lt;br /&gt;
;does not have a textwrite flag.&lt;br /&gt;
;The font data is packed so that two characters are stored every 5 bytes.&lt;br /&gt;
;Feel free to replace largesprite with any other sprite routine&lt;br /&gt;
&lt;br /&gt;
Appvputs:&lt;br /&gt;
	ld a,(hl)&lt;br /&gt;
	inc hl&lt;br /&gt;
&lt;br /&gt;
	or a&lt;br /&gt;
	ret z&lt;br /&gt;
	push hl&lt;br /&gt;
		call appvputmap&lt;br /&gt;
	pop hl&lt;br /&gt;
	jr appvputs&lt;br /&gt;
&lt;br /&gt;
appvputmap:&lt;br /&gt;
	sub 32&lt;br /&gt;
;	jr z,space&lt;br /&gt;
	ld l,a&lt;br /&gt;
	srl l&lt;br /&gt;
	ld h,0&lt;br /&gt;
	ld e,l&lt;br /&gt;
	ld d,h&lt;br /&gt;
	add hl,hl&lt;br /&gt;
	add hl,hl&lt;br /&gt;
	add hl,de&lt;br /&gt;
	ld de,fontdata&lt;br /&gt;
	add hl,de&lt;br /&gt;
	ld de,bytes5&lt;br /&gt;
	ld b,5&lt;br /&gt;
	and 1&lt;br /&gt;
	jr z,unshiftedchar&lt;br /&gt;
shiftedcharloop:&lt;br /&gt;
	ld a,(hl)&lt;br /&gt;
	add a,a&lt;br /&gt;
&lt;br /&gt;
	add a,a&lt;br /&gt;
	add a,a&lt;br /&gt;
	add a,a&lt;br /&gt;
	ld (de),a&lt;br /&gt;
	inc hl&lt;br /&gt;
	inc de&lt;br /&gt;
	djnz shiftedcharloop&lt;br /&gt;
	jr fontskip&lt;br /&gt;
unShiftedChar:&lt;br /&gt;
	ld a,(hl)&lt;br /&gt;
	and %11110000&lt;br /&gt;
	ld (de),a&lt;br /&gt;
	inc hl&lt;br /&gt;
	inc de&lt;br /&gt;
	djnz unshiftedchar&lt;br /&gt;
fontskip:&lt;br /&gt;
	ld ix,bytes5&lt;br /&gt;
	ld hl,(pencol)&lt;br /&gt;
	ld a,l&lt;br /&gt;
	ld l,h&lt;br /&gt;
	inc l&lt;br /&gt;
	ld bc,$0501&lt;br /&gt;
	call ionlargesprite&lt;br /&gt;
	;advance&lt;br /&gt;
	ld hl,pencol&lt;br /&gt;
	ld a,(hl)&lt;br /&gt;
	add a,6&lt;br /&gt;
	ld (hl),a&lt;br /&gt;
	ld c,%00001000&lt;br /&gt;
findwidthloop:&lt;br /&gt;
	dec (hl)&lt;br /&gt;
	ld a,c&lt;br /&gt;
	add a,a&lt;br /&gt;
	ret z&lt;br /&gt;
	ld c,a&lt;br /&gt;
	ld de,bytes5&lt;br /&gt;
	ld b,5&lt;br /&gt;
findwidthloop2:&lt;br /&gt;
	ld a,(de)&lt;br /&gt;
	and c&lt;br /&gt;
	ret nz&lt;br /&gt;
	inc de&lt;br /&gt;
	djnz findwidthloop2&lt;br /&gt;
	jr findwidthloop&lt;br /&gt;
		&lt;br /&gt;
;space:&lt;br /&gt;
;	ld hl,pencol&lt;br /&gt;
;	inc (hl)&lt;br /&gt;
;	ret&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
bytes5:&lt;br /&gt;
	.db 0,0,0,0,0&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
;2 wide: flst(),;]&lt;br /&gt;
;1 wide:  !'.:i&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fontdata:&lt;br /&gt;
 .db %00001000&lt;br /&gt;
 .db %00001000&lt;br /&gt;
 .db %00001000&lt;br /&gt;
 .db %00000000&lt;br /&gt;
 .db %00001000&lt;br /&gt;
&lt;br /&gt;
 .db %10100101&lt;br /&gt;
 .db %10101111&lt;br /&gt;
 .db %10100101&lt;br /&gt;
 .db %00001111&lt;br /&gt;
 .db %00000101&lt;br /&gt;
&lt;br /&gt;
 .db %01111010&lt;br /&gt;
 .db %10100010&lt;br /&gt;
 .db %01110100&lt;br /&gt;
 .db %00101000&lt;br /&gt;
 .db %11111010&lt;br /&gt;
&lt;br /&gt;
 .db %01001000&lt;br /&gt;
 .db %10101000&lt;br /&gt;
 .db %01001000&lt;br /&gt;
 .db %10100000&lt;br /&gt;
 .db %01010000&lt;br /&gt;
&lt;br /&gt;
 .db %01001000&lt;br /&gt;
 .db %10000100&lt;br /&gt;
 .db %10000100&lt;br /&gt;
 .db %10000100&lt;br /&gt;
 .db %01001000&lt;br /&gt;
&lt;br /&gt;
 .db %10100000&lt;br /&gt;
 .db %01000100&lt;br /&gt;
 .db %11101110&lt;br /&gt;
 .db %01000100&lt;br /&gt;
 .db %10100000&lt;br /&gt;
&lt;br /&gt;
 .db %00000000&lt;br /&gt;
 .db %00000000&lt;br /&gt;
 .db %01001110&lt;br /&gt;
 .db %01000000&lt;br /&gt;
 .db %10000000&lt;br /&gt;
&lt;br /&gt;
 .db %00000010&lt;br /&gt;
 .db %00000010&lt;br /&gt;
 .db %00000100&lt;br /&gt;
 .db %00001000&lt;br /&gt;
 .db %10001000&lt;br /&gt;
&lt;br /&gt;
 .db %01000100&lt;br /&gt;
 .db %10101100&lt;br /&gt;
 .db %10100100&lt;br /&gt;
 .db %10100100&lt;br /&gt;
 .db %01001110&lt;br /&gt;
&lt;br /&gt;
 .db %11001100&lt;br /&gt;
 .db %00100010&lt;br /&gt;
 .db %01000100&lt;br /&gt;
 .db %10000010&lt;br /&gt;
 .db %11101100&lt;br /&gt;
&lt;br /&gt;
 .db %10001110&lt;br /&gt;
 .db %10101000&lt;br /&gt;
 .db %11101100&lt;br /&gt;
 .db %00100010&lt;br /&gt;
 .db %00101100&lt;br /&gt;
&lt;br /&gt;
 .db %01101110&lt;br /&gt;
 .db %10000010&lt;br /&gt;
 .db %11100100&lt;br /&gt;
 .db %10101000&lt;br /&gt;
 .db %11101000&lt;br /&gt;
&lt;br /&gt;
 .db %11101110&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %11101110&lt;br /&gt;
 .db %10100010&lt;br /&gt;
 .db %11101100&lt;br /&gt;
&lt;br /&gt;
 .db %00000000&lt;br /&gt;
 .db %10000100&lt;br /&gt;
 .db %00000000&lt;br /&gt;
 .db %10000100&lt;br /&gt;
 .db %00001000&lt;br /&gt;
&lt;br /&gt;
 .db %00100000&lt;br /&gt;
 .db %01001110&lt;br /&gt;
 .db %10000000&lt;br /&gt;
 .db %01001110&lt;br /&gt;
 .db %00100000&lt;br /&gt;
&lt;br /&gt;
 .db %10001100&lt;br /&gt;
 .db %01000010&lt;br /&gt;
 .db %00100100&lt;br /&gt;
 .db %01000000&lt;br /&gt;
 .db %10000100&lt;br /&gt;
&lt;br /&gt;
 .db %11100100&lt;br /&gt;
 .db %00011010&lt;br /&gt;
 .db %11011110&lt;br /&gt;
 .db %10111010&lt;br /&gt;
 .db %01111010&lt;br /&gt;
&lt;br /&gt;
 .db %11000110&lt;br /&gt;
 .db %10101000&lt;br /&gt;
 .db %11001000&lt;br /&gt;
 .db %10101000&lt;br /&gt;
 .db %11000110&lt;br /&gt;
&lt;br /&gt;
 .db %11001110&lt;br /&gt;
 .db %10101000&lt;br /&gt;
 .db %10101100&lt;br /&gt;
 .db %10101000&lt;br /&gt;
 .db %11001110&lt;br /&gt;
&lt;br /&gt;
 .db %11100110&lt;br /&gt;
 .db %10001000&lt;br /&gt;
 .db %11001010&lt;br /&gt;
 .db %10001010&lt;br /&gt;
 .db %10000110&lt;br /&gt;
&lt;br /&gt;
 .db %10101110&lt;br /&gt;
 .db %10100100&lt;br /&gt;
 .db %11100100&lt;br /&gt;
 .db %10100100&lt;br /&gt;
 .db %10101110&lt;br /&gt;
&lt;br /&gt;
 .db %00101010&lt;br /&gt;
 .db %00101010&lt;br /&gt;
 .db %00101100&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %11101010&lt;br /&gt;
&lt;br /&gt;
 .db %10001010&lt;br /&gt;
 .db %10001110&lt;br /&gt;
 .db %10001110&lt;br /&gt;
 .db %10001010&lt;br /&gt;
 .db %11101010&lt;br /&gt;
&lt;br /&gt;
 .db %11001110&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %10101110&lt;br /&gt;
&lt;br /&gt;
 .db %11001110&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %11001010&lt;br /&gt;
 .db %10001110&lt;br /&gt;
 .db %10000110&lt;br /&gt;
&lt;br /&gt;
 .db %11000110&lt;br /&gt;
 .db %10101000&lt;br /&gt;
 .db %11000100&lt;br /&gt;
 .db %10100010&lt;br /&gt;
 .db %10101100&lt;br /&gt;
&lt;br /&gt;
 .db %11101010&lt;br /&gt;
 .db %01001010&lt;br /&gt;
 .db %01001010&lt;br /&gt;
 .db %01001010&lt;br /&gt;
 .db %01001110&lt;br /&gt;
&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %01001110&lt;br /&gt;
 .db %01001010&lt;br /&gt;
&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %01000100&lt;br /&gt;
 .db %10100100&lt;br /&gt;
 .db %10100100&lt;br /&gt;
&lt;br /&gt;
 .db %11100100&lt;br /&gt;
 .db %00101010&lt;br /&gt;
 .db %01001110&lt;br /&gt;
 .db %10001010&lt;br /&gt;
 .db %11100100&lt;br /&gt;
&lt;br /&gt;
 .db %10001100&lt;br /&gt;
 .db %10000100&lt;br /&gt;
 .db %01000100&lt;br /&gt;
 .db %00100100&lt;br /&gt;
 .db %00101100&lt;br /&gt;
&lt;br /&gt;
 .db %01000000&lt;br /&gt;
 .db %10100000&lt;br /&gt;
 .db %00000000&lt;br /&gt;
 .db %00000000&lt;br /&gt;
 .db %00001110&lt;br /&gt;
&lt;br /&gt;
 .db %10000000&lt;br /&gt;
 .db %01000110&lt;br /&gt;
 .db %00001010&lt;br /&gt;
 .db %00001010&lt;br /&gt;
 .db %00000110&lt;br /&gt;
&lt;br /&gt;
 .db %10000000&lt;br /&gt;
 .db %11000110&lt;br /&gt;
 .db %10101000&lt;br /&gt;
 .db %10101000&lt;br /&gt;
 .db %11000110&lt;br /&gt;
&lt;br /&gt;
 .db %00100000&lt;br /&gt;
 .db %01100100&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %10101100&lt;br /&gt;
 .db %01100110&lt;br /&gt;
&lt;br /&gt;
 .db %01000110&lt;br /&gt;
 .db %10001010&lt;br /&gt;
 .db %11000110&lt;br /&gt;
 .db %10000010&lt;br /&gt;
 .db %10001100&lt;br /&gt;
&lt;br /&gt;
 .db %10001000&lt;br /&gt;
 .db %11000000&lt;br /&gt;
 .db %10101000&lt;br /&gt;
 .db %10101000&lt;br /&gt;
 .db %10101000&lt;br /&gt;
&lt;br /&gt;
 .db %00101000&lt;br /&gt;
 .db %00001000&lt;br /&gt;
 .db %00101010&lt;br /&gt;
 .db %10101100&lt;br /&gt;
 .db %01001010&lt;br /&gt;
&lt;br /&gt;
 .db %11000000&lt;br /&gt;
 .db %01001010&lt;br /&gt;
 .db %01001110&lt;br /&gt;
 .db %01001010&lt;br /&gt;
 .db %01001010&lt;br /&gt;
&lt;br /&gt;
 .db %00000000&lt;br /&gt;
 .db %11000100&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %10100100&lt;br /&gt;
&lt;br /&gt;
 .db %00000000&lt;br /&gt;
 .db %11000110&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %11000110&lt;br /&gt;
 .db %10000010&lt;br /&gt;
&lt;br /&gt;
 .db %00000000&lt;br /&gt;
 .db %10101100&lt;br /&gt;
 .db %11001000&lt;br /&gt;
 .db %10000100&lt;br /&gt;
 .db %10001100&lt;br /&gt;
&lt;br /&gt;
 .db %10000000&lt;br /&gt;
 .db %11001010&lt;br /&gt;
 .db %10001010&lt;br /&gt;
 .db %10001010&lt;br /&gt;
 .db %01001110&lt;br /&gt;
&lt;br /&gt;
 .db %00000000&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %01001110&lt;br /&gt;
 .db %01001010&lt;br /&gt;
&lt;br /&gt;
 .db %00000000&lt;br /&gt;
 .db %10101010&lt;br /&gt;
 .db %01001010&lt;br /&gt;
 .db %01000100&lt;br /&gt;
 .db %10101000&lt;br /&gt;
&lt;br /&gt;
 .db %00000110&lt;br /&gt;
 .db %11100100&lt;br /&gt;
 .db %00101000&lt;br /&gt;
 .db %01000100&lt;br /&gt;
 .db %11100110&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dwedit</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Z80_Routines:Graphic:Bub4font</id>
		<title>Z80 Routines:Graphic:Bub4font</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Z80_Routines:Graphic:Bub4font"/>
				<updated>2005-03-29T05:03:43Z</updated>
		
		<summary type="html">&lt;p&gt;Dwedit: moved to base category as well&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Z80 Routines:Graphic|bub4font]]&lt;br /&gt;
[[Category:Z80 Routines|bub4font]]&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
; dwedit's bub_font routine modified with &lt;br /&gt;
; harper maddox's 4*4 galaxy font (expanded)&lt;br /&gt;
; by guillaume h.&lt;br /&gt;
; june 2004&lt;br /&gt;
&lt;br /&gt;
; displayable characters go from $20 (space) to $5A (Z)&lt;br /&gt;
; they include : capital letters, digits, and some punctuation&lt;br /&gt;
&lt;br /&gt;
;  !&amp;quot;#$%&amp;amp;'()*+,-./&lt;br /&gt;
; 0123456789:;&amp;lt;=&amp;gt;?&lt;br /&gt;
; @ABCDEFGHIJKLMNO&lt;br /&gt;
; PQRSTUVWXYZ&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; remarks :&lt;br /&gt;
;   $24 is &amp;quot;power 4&amp;quot; in ti's font, but a dollar sign in normal ascii&lt;br /&gt;
;      in this font, it's gonna be a block, because drawing a dollar sign&lt;br /&gt;
;      because drawing one in 4*4 is hard..&lt;br /&gt;
&lt;br /&gt;
; $5B is a space right now, it is a theta in ti's ascii and a '['&lt;br /&gt;
; in normal ascii&lt;br /&gt;
&lt;br /&gt;
FONT_HEIGHT equ 4&lt;br /&gt;
&lt;br /&gt;
appvputs&lt;br /&gt;
 ld a,(hl)&lt;br /&gt;
 inc hl&lt;br /&gt;
 or a&lt;br /&gt;
 ret z&lt;br /&gt;
 push hl&lt;br /&gt;
 call appvputmap&lt;br /&gt;
 pop hl&lt;br /&gt;
 jr appvputs&lt;br /&gt;
&lt;br /&gt;
appvputmap&lt;br /&gt;
 sub $20&lt;br /&gt;
 ld l,a&lt;br /&gt;
 srl l&lt;br /&gt;
 ld h,0&lt;br /&gt;
 add hl,hl&lt;br /&gt;
 add hl,hl  ; multiplication by 4 = FONT_HEIGHT&lt;br /&gt;
 ld de,fontdata&lt;br /&gt;
 add hl,de&lt;br /&gt;
 ld de,bytes4&lt;br /&gt;
 ld b,FONT_HEIGHT&lt;br /&gt;
 and 1&lt;br /&gt;
 jr z,unshiftedchar&lt;br /&gt;
shiftedcharloop:&lt;br /&gt;
 ld a,(hl)&lt;br /&gt;
 add a,a&lt;br /&gt;
 add a,a&lt;br /&gt;
 add a,a&lt;br /&gt;
 add a,a&lt;br /&gt;
 ld (de),a&lt;br /&gt;
 inc hl&lt;br /&gt;
 inc de&lt;br /&gt;
 djnz shiftedcharloop&lt;br /&gt;
 jr fontskip&lt;br /&gt;
unshiftedchar:&lt;br /&gt;
 ld a,(hl)&lt;br /&gt;
 and %11110000&lt;br /&gt;
 ld (de),a&lt;br /&gt;
 inc hl&lt;br /&gt;
 inc de&lt;br /&gt;
 djnz unshiftedchar&lt;br /&gt;
fontskip:&lt;br /&gt;
 ld ix,bytes4&lt;br /&gt;
 ld hl,(pencol)&lt;br /&gt;
 ld a,l&lt;br /&gt;
 ld l,h&lt;br /&gt;
 inc l&lt;br /&gt;
 ld bc,256*FONT_HEIGHT+1&lt;br /&gt;
 call largesprite&lt;br /&gt;
 ;advance&lt;br /&gt;
 ld hl,pencol&lt;br /&gt;
 ld a,(hl)&lt;br /&gt;
 add a,6&lt;br /&gt;
 ld (hl),a&lt;br /&gt;
 ld c,%00001000&lt;br /&gt;
findwidthloop:&lt;br /&gt;
 dec (hl)&lt;br /&gt;
 ld a,c&lt;br /&gt;
 add a,a&lt;br /&gt;
 ret z&lt;br /&gt;
 ld c,a&lt;br /&gt;
 ld de,bytes4&lt;br /&gt;
	ld b,FONT_HEIGHT&lt;br /&gt;
findwidthloop2:&lt;br /&gt;
	ld a,(de)&lt;br /&gt;
	and c&lt;br /&gt;
	ret nz&lt;br /&gt;
	inc de&lt;br /&gt;
	djnz findwidthloop2&lt;br /&gt;
	jr findwidthloop	&lt;br /&gt;
	&lt;br /&gt;
bytes4:&lt;br /&gt;
	db 0,0,0,0&lt;br /&gt;
&lt;br /&gt;
fontdata:&lt;br /&gt;
 db %00001000&lt;br /&gt;
 db %00001000 ; (space) !&lt;br /&gt;
 db %00000000&lt;br /&gt;
 db %00001000&lt;br /&gt;
&lt;br /&gt;
 db %10100101&lt;br /&gt;
 db %10101111 ; &amp;quot; #&lt;br /&gt;
 db %00000101&lt;br /&gt;
 db %00001111&lt;br /&gt;
&lt;br /&gt;
 db %11111010&lt;br /&gt;
 db %11110100 ; $ (block) %&lt;br /&gt;
 db %11111000&lt;br /&gt;
 db %11111010&lt;br /&gt;
&lt;br /&gt;
 db %01001000 ; &amp;amp; '&lt;br /&gt;
 db %11101000&lt;br /&gt;
 db %10100000&lt;br /&gt;
 db %01010000&lt;br /&gt;
&lt;br /&gt;
 db %01001000&lt;br /&gt;
 db %10000100 ; ( )&lt;br /&gt;
 db %10000100&lt;br /&gt;
 db %01001000&lt;br /&gt;
&lt;br /&gt;
 db %00000000 ; * +&lt;br /&gt;
 db %10100100&lt;br /&gt;
 db %01001110&lt;br /&gt;
 db %10100100&lt;br /&gt;
&lt;br /&gt;
 db %00000000&lt;br /&gt;
 db %00000000 ; , -&lt;br /&gt;
 db %01001110&lt;br /&gt;
 db %10000000&lt;br /&gt;
&lt;br /&gt;
 db %00000001 ; . /&lt;br /&gt;
 db %00000010&lt;br /&gt;
 db %00000100&lt;br /&gt;
 db %10001000&lt;br /&gt;
&lt;br /&gt;
 db %11101000 ;0  1&lt;br /&gt;
 db %10101000&lt;br /&gt;
 db %10101000&lt;br /&gt;
 db %11101000&lt;br /&gt;
&lt;br /&gt;
 db %11101110 ; 2 3&lt;br /&gt;
 db %00100110&lt;br /&gt;
 db %11000010&lt;br /&gt;
 db %11101110&lt;br /&gt;
&lt;br /&gt;
 db %10101110&lt;br /&gt;
 db %10101100 ; 4 5&lt;br /&gt;
 db %11100010&lt;br /&gt;
 db %00101110&lt;br /&gt;
&lt;br /&gt;
 db %10001110 ; 6 7&lt;br /&gt;
 db %11100010&lt;br /&gt;
 db %10100010&lt;br /&gt;
 db %11100010&lt;br /&gt;
&lt;br /&gt;
 db %11101110 ; 8 9&lt;br /&gt;
 db %11101010&lt;br /&gt;
 db %10101110&lt;br /&gt;
 db %11100010&lt;br /&gt;
&lt;br /&gt;
 db %00000100&lt;br /&gt;
 db %10000000 ; : ;&lt;br /&gt;
 db %00000100&lt;br /&gt;
 db %10001000&lt;br /&gt;
&lt;br /&gt;
 db %00000000&lt;br /&gt;
 db %01001110 ; &amp;lt; =&lt;br /&gt;
 db %10000000&lt;br /&gt;
 db %01001110&lt;br /&gt;
&lt;br /&gt;
 db %00001110&lt;br /&gt;
 db %10000010 ; &amp;gt; ?&lt;br /&gt;
 db %01000000&lt;br /&gt;
 db %10000100&lt;br /&gt;
&lt;br /&gt;
 db %01100100&lt;br /&gt;
 db %10101010&lt;br /&gt;
 db %11101110 ; @ A&lt;br /&gt;
 db %01101010&lt;br /&gt;
&lt;br /&gt;
 db %11101100&lt;br /&gt;
 db %11101000&lt;br /&gt;
 db %10101000 ; B C&lt;br /&gt;
 db %11101100&lt;br /&gt;
&lt;br /&gt;
 db %11001100&lt;br /&gt;
 db %10101100 ; D E&lt;br /&gt;
 db %10101000&lt;br /&gt;
 db %11001100&lt;br /&gt;
&lt;br /&gt;
 db %11001110 ; F G&lt;br /&gt;
 db %11001000&lt;br /&gt;
 db %10001010&lt;br /&gt;
 db %10001110&lt;br /&gt;
&lt;br /&gt;
 db %10101000&lt;br /&gt;
 db %10101000 ; H I&lt;br /&gt;
 db %11101000&lt;br /&gt;
 db %10101000&lt;br /&gt;
&lt;br /&gt;
 db %00101010&lt;br /&gt;
 db %00101010 ; J K&lt;br /&gt;
 db %10101100&lt;br /&gt;
 db %11101010&lt;br /&gt;
&lt;br /&gt;
 db %10001110&lt;br /&gt;
 db %10001110 ; L M&lt;br /&gt;
 db %10001010&lt;br /&gt;
 db %11001010&lt;br /&gt;
&lt;br /&gt;
 db %11001110&lt;br /&gt;
 db %10101010 ; N O&lt;br /&gt;
 db %10101010&lt;br /&gt;
 db %10101110&lt;br /&gt;
&lt;br /&gt;
 db %11101110 ; P Q&lt;br /&gt;
 db %10101010&lt;br /&gt;
 db %11101110&lt;br /&gt;
 db %10001110&lt;br /&gt;
&lt;br /&gt;
 db %11101100&lt;br /&gt;
 db %10101000 ; R S&lt;br /&gt;
 db %11000100&lt;br /&gt;
 db %10101100&lt;br /&gt;
&lt;br /&gt;
 db %11101010 ; T U&lt;br /&gt;
 db %01001010&lt;br /&gt;
 db %01001010&lt;br /&gt;
 db %01001110&lt;br /&gt;
&lt;br /&gt;
 db %10101010&lt;br /&gt;
 db %10101010 ; V W&lt;br /&gt;
 db %10101110&lt;br /&gt;
 db %01001110&lt;br /&gt;
&lt;br /&gt;
 db %10101010&lt;br /&gt;
 db %10101010&lt;br /&gt;
 db %01000100 ; X Y&lt;br /&gt;
 db %10100100&lt;br /&gt;
&lt;br /&gt;
 db %11000000&lt;br /&gt;
 db %01000000 ; Z&lt;br /&gt;
 db %10000000&lt;br /&gt;
 db %11000000&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dwedit</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Talk:Contributing</id>
		<title>Talk:Contributing</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Talk:Contributing"/>
				<updated>2005-03-28T21:28:30Z</updated>
		
		<summary type="html">&lt;p&gt;Dwedit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Should romcalls be put into only the most specific category, or should they appear in the parent category as well?--[[User:Dwedit|Dwedit]] 13:28, 28 Mar 2005 (PST)&lt;/div&gt;</summary>
		<author><name>Dwedit</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Talk:Contributing</id>
		<title>Talk:Contributing</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Talk:Contributing"/>
				<updated>2005-03-28T21:28:21Z</updated>
		
		<summary type="html">&lt;p&gt;Dwedit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Should romcalls be put into only the most specific category, or should they appear in the parent category as well?&lt;/div&gt;</summary>
		<author><name>Dwedit</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Template:Untested</id>
		<title>Template:Untested</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Template:Untested"/>
				<updated>2005-03-28T21:26:14Z</updated>
		
		<summary type="html">&lt;p&gt;Dwedit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''The following information is untested, unconfirmed, and may be inaccurate.''&lt;/div&gt;</summary>
		<author><name>Dwedit</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:ROMCalls:44B6</id>
		<title>83:ROMCalls:44B6</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:ROMCalls:44B6"/>
				<updated>2005-03-28T21:25:09Z</updated>
		
		<summary type="html">&lt;p&gt;Dwedit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{untested}}&lt;br /&gt;
[[Category:83:ROMCalls:By_Address:Variable|44B6 - DELVAR3D / delMemUpdate]]&lt;br /&gt;
[[Category:83:ROMCalls:By_Name:Variable|DELVAR3D / delMemUpdate]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' DELVAR3D  (is squish.inc considered official or what?)&lt;br /&gt;
&lt;br /&gt;
'''Unofficial Name:''' delMemUpdate&lt;br /&gt;
&lt;br /&gt;
'''Call Address:''' 44B6h&lt;br /&gt;
&lt;br /&gt;
Updates the VAT as if [[83:ROMCalls:44B2|delMem]] was called, but doesn't delete any memory.&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
* de = Data Location&lt;br /&gt;
* bc = Data Size&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
* Updates the VAT as if [[83:ROMCalls:44B2|delMem]] was called, but doesn't delete any memory.&lt;br /&gt;
* ???&lt;br /&gt;
&lt;br /&gt;
=== Registers Destroyed ===&lt;br /&gt;
* ???&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;/div&gt;</summary>
		<author><name>Dwedit</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:ROMCalls:44BE</id>
		<title>83:ROMCalls:44BE</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:ROMCalls:44BE"/>
				<updated>2005-03-28T21:24:26Z</updated>
		
		<summary type="html">&lt;p&gt;Dwedit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{untested}}&lt;br /&gt;
[[Category:83:ROMCalls:By_Address:Variable|44BE - DELVAR3DC / insMemUpdate]]&lt;br /&gt;
[[Category:83:ROMCalls:By_Name:Variable|DELVAR3DC / insMemUpdate]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' DELVAR3DC  (from squish.inc)&lt;br /&gt;
&lt;br /&gt;
'''Unofficial Name:''' insMemUpdate&lt;br /&gt;
&lt;br /&gt;
'''Call Address:''' 44BEh&lt;br /&gt;
&lt;br /&gt;
Updates the VAT as if [[83:ROMCalls:4432|insertMem]] was called, but doesn't insert any memory.&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
* de = Data Location - 1?&lt;br /&gt;
* bc = Data Size&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
* Updates the VAT as if [[83:ROMCalls:4432|insertMem]] was called, but doesn't insert any memory.&lt;br /&gt;
* ???&lt;br /&gt;
&lt;br /&gt;
=== Registers Destroyed ===&lt;br /&gt;
* ???&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;/div&gt;</summary>
		<author><name>Dwedit</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:ROMCalls:44B6</id>
		<title>83:ROMCalls:44B6</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:ROMCalls:44B6"/>
				<updated>2005-03-28T21:21:02Z</updated>
		
		<summary type="html">&lt;p&gt;Dwedit: /* Synopsis */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{untested}}&lt;br /&gt;
[[Category:83:ROMCalls:By_Address:Variable|44B6 - DELVAR3D / delMemUpdate]]&lt;br /&gt;
[[Category:83:ROMCalls:By_Name:Variable|DELVAR3D / delMemUpdate]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' DELVAR3D  (is squish.inc considered official or what?)&lt;br /&gt;
&lt;br /&gt;
'''Unofficial Name:''' delMemUpdate&lt;br /&gt;
&lt;br /&gt;
'''Call Address:''' 44B6h&lt;br /&gt;
&lt;br /&gt;
Updates the VAT as if delmem was called, but doesn't delete any memory.&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
* de = Data Location&lt;br /&gt;
* bc = Data Size&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
* Updates the VAT as if delmem was called&lt;br /&gt;
* ???&lt;br /&gt;
&lt;br /&gt;
=== Registers Destroyed ===&lt;br /&gt;
* ???&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;/div&gt;</summary>
		<author><name>Dwedit</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:ROMCalls:44B6</id>
		<title>83:ROMCalls:44B6</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:ROMCalls:44B6"/>
				<updated>2005-03-28T21:19:43Z</updated>
		
		<summary type="html">&lt;p&gt;Dwedit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{untested}}&lt;br /&gt;
[[Category:83:ROMCalls:By_Address:Variable|44B6 - DELVAR3D / delMemUpdate]]&lt;br /&gt;
[[Category:83:ROMCalls:By_Name:Variable|DELVAR3D / delMemUpdate]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' DELVAR3D  (is squish.inc considered official or what?)&lt;br /&gt;
'''Unofficial Name:''' delMemUpdate&lt;br /&gt;
&lt;br /&gt;
'''Call Address:''' 44B6h&lt;br /&gt;
&lt;br /&gt;
Updates the VAT as if delmem was called, but doesn't delete any memory.&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
* de = Data Location&lt;br /&gt;
* bc = Data Size&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
* Updates the VAT as if delmem was called&lt;br /&gt;
* ???&lt;br /&gt;
&lt;br /&gt;
=== Registers Destroyed ===&lt;br /&gt;
* ???&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;/div&gt;</summary>
		<author><name>Dwedit</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Template:Untested</id>
		<title>Template:Untested</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Template:Untested"/>
				<updated>2005-03-28T21:19:12Z</updated>
		
		<summary type="html">&lt;p&gt;Dwedit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''The following information is untested and may be inaccurate.''&lt;/div&gt;</summary>
		<author><name>Dwedit</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83:ROMCalls:52A1</id>
		<title>83:ROMCalls:52A1</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83:ROMCalls:52A1"/>
				<updated>2005-03-28T21:03:10Z</updated>
		
		<summary type="html">&lt;p&gt;Dwedit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83:ROMCalls:By_Address|52A1 - cleanUpASM]]&lt;br /&gt;
[[Category:83:ROMCalls:By_Name|cleanUpASM]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Unofficial Name:''' cleanUpASM&lt;br /&gt;
&lt;br /&gt;
'''Call Address:''' 52A1&lt;br /&gt;
&lt;br /&gt;
Deletes memory at 9327 equal to the size of the executing ASM program.&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
* ???&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
* Deletes memory at 9327 equal to the size of the executing ASM program.&lt;br /&gt;
&lt;br /&gt;
=== Registers Destroyed ===&lt;br /&gt;
* ???&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
After calling this, make sure the program does not need the code previously loaded at 9327.  A call to this would usually be placed into safe ram for use in a shell or program loader to eliminate the TIOS asm memory leak.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
call _cleanUpASM&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dwedit</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Talk:Z80_Routines:Graphic:Bub4font</id>
		<title>Talk:Z80 Routines:Graphic:Bub4font</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Talk:Z80_Routines:Graphic:Bub4font"/>
				<updated>2005-03-28T19:41:44Z</updated>
		
		<summary type="html">&lt;p&gt;Dwedit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We should have a blurb at the top of each routine page stating what calculators they work on.&lt;br /&gt;
&lt;br /&gt;
--[[User:AndyJ|AndyJ]] 07:43, 27 Mar 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
The call to LargeSprite can be replaced by any 8xX sprite routine of your choice, as long as you correctly set the input registers.  I just used it because LargeSprite was the only XOR sprite routine I included in the code at the time.--[[User:Dwedit|Dwedit]] 11:41, 28 Mar 2005 (PST)&lt;/div&gt;</summary>
		<author><name>Dwedit</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Category_talk:Z80_Routines</id>
		<title>Category talk:Z80 Routines</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Category_talk:Z80_Routines"/>
				<updated>2005-03-28T18:31:20Z</updated>
		
		<summary type="html">&lt;p&gt;Dwedit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Something's wrong with the redirect here, it's not showing the subcategories! --[[User:Dwedit|Dwedit]] 10:31, 28 Mar 2005 (PST)&lt;/div&gt;</summary>
		<author><name>Dwedit</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:RAM:965D</id>
		<title>83Plus:RAM:965D</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:RAM:965D"/>
				<updated>2005-03-28T18:27:38Z</updated>
		
		<summary type="html">&lt;p&gt;Dwedit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:RAM:By_Name|basic_pc]]&lt;br /&gt;
[[Category:83Plus:RAM:By_Address|965D - basic_pc]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' no official name, calling it basic_pc for now&lt;br /&gt;
&lt;br /&gt;
'''Memory Address:''' 965Dh&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 2 bytes.&lt;br /&gt;
&lt;br /&gt;
This is the address of the currently executing TI-Basic command.&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;/div&gt;</summary>
		<author><name>Dwedit</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:RAM:965F</id>
		<title>83Plus:RAM:965F</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:RAM:965F"/>
				<updated>2005-03-28T18:27:28Z</updated>
		
		<summary type="html">&lt;p&gt;Dwedit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:RAM:By_Name|basic_end]]&lt;br /&gt;
[[Category:83Plus:RAM:By_Address|965F - basic_end]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' no official name, calling it basic_end for now&lt;br /&gt;
&lt;br /&gt;
'''Memory Address:''' 965Fh&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 2 bytes.&lt;br /&gt;
&lt;br /&gt;
This is the end address of the currently executing TI-Basic program.  When basic_pc reaches or exceeds this value, the program returns.&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;/div&gt;</summary>
		<author><name>Dwedit</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:RAM:9652</id>
		<title>83Plus:RAM:9652</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:RAM:9652"/>
				<updated>2005-03-28T17:34:01Z</updated>
		
		<summary type="html">&lt;p&gt;Dwedit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Synopsis ==&lt;br /&gt;
'''Official Name:''' no official name, calling it basic_prog for now&lt;br /&gt;
&lt;br /&gt;
'''Memory Address:''' 9652h&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 9 bytes.&lt;br /&gt;
&lt;br /&gt;
This area of memory contains the program type byte followed by the name of the currently executing TI-Basic program.&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
&lt;br /&gt;
This can be used from within an ASM program to find out which program called it.  The TI-83 shell Venus uses this.&lt;/div&gt;</summary>
		<author><name>Dwedit</name></author>	</entry>

	</feed>