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

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Emulators:PindurTI</id>
		<title>Emulators:PindurTI</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Emulators:PindurTI"/>
				<updated>2025-01-13T18:58:58Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: Add archive.org links for the exe and changelog.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Emulators]]&lt;br /&gt;
PindurTI (commonly referred to as PTI) is a relatively new member of the TI [[Emulators|emulator]] 'family', developed from scratch by Patai Gergely. Development has ceased, as the author has no sufficient time to continue, and the code base is not easily extended to implement calculator features that were not known at the start of the project. Users who need the emulation of newer models than the plain 83 should use [[:Emulators:Wabbitemu|WabbitEmu]] instead.&lt;br /&gt;
&lt;br /&gt;
This page contains the up-to-date documentation.&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
*Full support for 82 and 83. 83+ support isn't complete yet, but it's already the most accurate of all emulators.&lt;br /&gt;
*Raw virtual linking of any number of calculators.&lt;br /&gt;
*Built-in (animated) screenshotting ability.&lt;br /&gt;
*Debugger.&lt;br /&gt;
*Scripting for external tools (preliminary in the latest version), which is already used by [[LateNite]]&lt;br /&gt;
&lt;br /&gt;
If you have ideas you want to incorporate in the tool, you can submit your ideas at the [http://sgate.emt.bme.hu/patai/programs/pindurti/features/ PindurTI idea box]. Repetitions and trivialities are frowned upon.&lt;br /&gt;
&lt;br /&gt;
==Basics==&lt;br /&gt;
PindurTI requires no installation; it is a standalone executable you can put anywhere. It will only create a file called pti.conf in its working directory (which is by default the same as the one the executable is located in), so make sure this directory is not read-only for pindurti.exe.&lt;br /&gt;
&lt;br /&gt;
At the moment of writing PindurTI has no real graphical user interface (GUI) yet, only the absolute minimum required to use all the features. Here are the steps to get going:&lt;br /&gt;
&lt;br /&gt;
1. Start pindurti.exe. You will see any empty, fully cyan window. The four quarters of the window represent four slots where individual calculators can be run.&lt;br /&gt;
&lt;br /&gt;
2. Drag-and-drop a ROM image to one of the quarters, preferably the top left. The quarter chosen will turn grey for the most part, and four icons will appear above the grey area.&lt;br /&gt;
&lt;br /&gt;
3. Left click the grey part. This is the screen of the calculator, and the left click corresponds to the On key.&lt;br /&gt;
&lt;br /&gt;
4. You can drag and drop other ROM images to the other slots. You can switch between the slots by right clicking them. (Left clicking also activates the slot, but it also causes the On key to be pressed.)&lt;br /&gt;
&lt;br /&gt;
5. Files can be sent by dropping them to the appropriate slot. PTI uses silent linking, so the calculator must be on, somewhere in the TI-OS and ''not in receive mode'' in order for the transmission to succeed. You can also drop a group of files, they will be sent one after the other. Naturally, the file and the running ROM image must be for the same model, e.g. sending an 8xp file to a TI-82 won't work.&lt;br /&gt;
&lt;br /&gt;
'''Pressing calculator keys'''&lt;br /&gt;
&lt;br /&gt;
When interpreting key presses for the calculators, PTI always acts as if the layout was English, so if you use an alternative layout (e.g. AZERTY or Cyrillic), 'Q' still refers to the button next to the Tab key and so on.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
! PC key !! Calculator key&lt;br /&gt;
|-&lt;br /&gt;
| left mouse button || On&lt;br /&gt;
|-&lt;br /&gt;
| A..Z || the button that yields the corresponding letter if alpha is on, see below&lt;br /&gt;
|-&lt;br /&gt;
| Space || 0&lt;br /&gt;
|-&lt;br /&gt;
| arrows, 0..9, Enter, '.', ',', number pad +-/* || the corresponding calculator key&lt;br /&gt;
|-&lt;br /&gt;
| [ || (&lt;br /&gt;
|-&lt;br /&gt;
| ] || )&lt;br /&gt;
|-&lt;br /&gt;
| F1 || Y=&lt;br /&gt;
|-&lt;br /&gt;
| F2 || Window&lt;br /&gt;
|-&lt;br /&gt;
| F3 || Zoom&lt;br /&gt;
|-&lt;br /&gt;
| F4 || Trace&lt;br /&gt;
|-&lt;br /&gt;
| F5 || Graph&lt;br /&gt;
|-&lt;br /&gt;
| Escape || Mode&lt;br /&gt;
|-&lt;br /&gt;
| Left Shift || 2nd&lt;br /&gt;
|-&lt;br /&gt;
| Left Control || Alpha&lt;br /&gt;
|-&lt;br /&gt;
| Right Shift || Clear&lt;br /&gt;
|-&lt;br /&gt;
| - || (-) (between the decimal point and Enter)&lt;br /&gt;
|-&lt;br /&gt;
| = || X,T,&amp;amp;theta;,''n''&lt;br /&gt;
|-&lt;br /&gt;
| Page Up || Matrx (82/83) or Apps (83+)&lt;br /&gt;
|-&lt;br /&gt;
| Page Down || Prgm&lt;br /&gt;
|-&lt;br /&gt;
| Insert || Vars&lt;br /&gt;
|-&lt;br /&gt;
| Delete || Del&lt;br /&gt;
|-&lt;br /&gt;
| Home || Math&lt;br /&gt;
|-&lt;br /&gt;
| End || Stat&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Mapping of letter keys'''&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
| '''A''' || Math || '''B''' || Matrx || '''C''' || Prgm || &amp;amp;nbsp; || &amp;amp;nbsp; || &amp;amp;nbsp; || &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| '''D''' || x&amp;lt;sup&amp;gt;-1&amp;lt;/sup&amp;gt; || '''E''' || Sin || '''F''' || Cos || '''G''' || Tan || '''H''' || ^&lt;br /&gt;
|-&lt;br /&gt;
| '''I''' || x&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; || '''J''' || , || '''K''' || ( || '''L''' || ) || '''M''' || Ã·&lt;br /&gt;
|-&lt;br /&gt;
| '''N''' || Log || '''O''' || 7 || '''P''' || 8 || '''Q''' || 9 || '''R''' || Ã—&lt;br /&gt;
|-&lt;br /&gt;
| '''S''' || Ln || '''T''' || 4 || '''U''' || 5 || '''V''' || 6 || '''W''' || -&lt;br /&gt;
|-&lt;br /&gt;
| '''X''' || Stoâ†’ || '''Y''' || 1 || '''Z''' || 2 || &amp;amp;nbsp; || &amp;amp;nbsp; || &amp;amp;nbsp; || &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Other keys==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
! Key !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| Tab || Start crude (9 fps) screenshot/Stop current screenshot&lt;br /&gt;
|-&lt;br /&gt;
| Backspace || Start fine (25 fps) screenshot/Stop current screenshot&lt;br /&gt;
|-&lt;br /&gt;
| F9 || Reset calculator in active slot (simulates pulling batteries)&lt;br /&gt;
|-&lt;br /&gt;
| F10 || Open debugger&lt;br /&gt;
|-&lt;br /&gt;
| F11 || Enable/disable warp mode (fastest possible emulation) of active slot&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that only crude screenshots are displayed properly everywhere. Fine screenhots are only shown at full speed by Firefox.&lt;br /&gt;
&lt;br /&gt;
==Additional functions==&lt;br /&gt;
&lt;br /&gt;
The icons above each calculator screen can be used for the following purposes by left clicking, from left to right:&lt;br /&gt;
&lt;br /&gt;
1. Pause/unpause&lt;br /&gt;
&lt;br /&gt;
2. Enable/disable warp mode&lt;br /&gt;
&lt;br /&gt;
3. Plug into a link hub; plug in two calculators to open a communication line between them. Connecting more than two calculators is not supported by the TI-OS. However, the CALCnet 2.2 and CLAP linking libraries allow mass linking.&lt;br /&gt;
&lt;br /&gt;
4. Toggle inclusion in screenshotting. If no slot is selected, always the active one will be captured. This feature can be used to allow capturing a slot even if we activate another in the meantime (e.g. to save an animated cutscene while using another calculator) or to record multiplayer games.&lt;br /&gt;
&lt;br /&gt;
==Debugger==&lt;br /&gt;
&lt;br /&gt;
The debug window is composed of separate modules, which show the state of the calculator from a certain aspect. Note that the components are tuned to the top left slot by default, and you have to change the slots manually in the layout editor if you want to examine a different slot.&lt;br /&gt;
&lt;br /&gt;
You can display a context menu by right clicking anywhere in the debug window. The menu list first the global keys, then displays all the component specific bindings after a horizontal separator. The global keys will always have the same effect regardless of the module selected. These keys are the following:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
! Key !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| F7 || Execute one instruction (or skip to the next interrupt when halted)&lt;br /&gt;
|-&lt;br /&gt;
| F8 || Step over the next instruction; the same as F7, except that CALL, RST, DJNZ and repeat instructions (e.g. LDIR) are executed until either the program counter hits the subsequent instruction or 10000000 clock cycles elapse&lt;br /&gt;
|-&lt;br /&gt;
| F12 || Toggle the layout editor&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Layout editor===&lt;br /&gt;
&lt;br /&gt;
This feature is still under development. Most importantly, the modified layouts are not saved. The default layout is designed not to conceal anything if the window is maximised at a resolution of at least 1024x768. The keys are the following:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
! Key !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| Insert || Add a component module after the selected one; the type of the component can be picked from a list&lt;br /&gt;
|-&lt;br /&gt;
| Delete || Delete the subtree starting from the currently selected node&lt;br /&gt;
|-&lt;br /&gt;
| 0..3 || Set the slot of every node in the subtree starting from the selection to the number pressed (0 - top left, 1 - top right, 2 - bottom left, 3 - bottom right)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Modules===&lt;br /&gt;
&lt;br /&gt;
'''Disassembly'''&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
! Key !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| Up/down arrows, Page Up/Down || Navigate&lt;br /&gt;
|-&lt;br /&gt;
| F2 || Set/remove execution breakpoint at the cursor (it affects every byte of the instruction)&lt;br /&gt;
|-&lt;br /&gt;
| G || Go to a specific address (enter in hexadecimal; press Escape instead of Enter to cancel)&lt;br /&gt;
|-&lt;br /&gt;
| P, S, B, D, H, X, Y || Go to the address pointed by PC, SP, BC, DE, HL, IX, IY, respectively&lt;br /&gt;
|-&lt;br /&gt;
| R || Run from cursor, i.e. set PC to the address of the instruction under the cursor&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Important: when a breakpoint is set, it affects all the slots at the same time for the time being!&lt;br /&gt;
&lt;br /&gt;
'''Memory view'''&lt;br /&gt;
&lt;br /&gt;
This is a view of the 64K CPU address space. You can use the arrows and the page up/down keys to navigate. The G, P, S, B, D, H, X and Y keys have the same effect as on the disassembly pane.&lt;br /&gt;
&lt;br /&gt;
When you press Enter, you can edit the value currently under the cursor by simulating a memory write to that address, i.e. only RAM contents can be modified this way. The dialog accepts numbers in four bases, which can be denoted by prefixes: % - binary, @ - octal, # - decimal and $ - hexadecimal. If there is no prefix, the number is treated as hexadecimal. If you press Shift-Enter instead of just Enter after typing the number, the effect will be writing a little-endian word at the current address instead of a single byte.&lt;br /&gt;
&lt;br /&gt;
'''Registers'''&lt;br /&gt;
&lt;br /&gt;
The internal state of the Z80. Each value can be edited after left clicking; the values must be entered in hexadecimal. Editing can be concluded with Enter or by clicking elsewhere, and cancelled with Escape. Note that halt can have three values: 0 - normal operation, 1 - halt active, 2 - violating execution protection (if you attempt running any further, the calculator will be forced to reset).&lt;br /&gt;
&lt;br /&gt;
'''Variables'''&lt;br /&gt;
&lt;br /&gt;
A simple, read-only VAT viewer. Double clicking a variable sets the address of the memory view to the address of its data.&lt;br /&gt;
&lt;br /&gt;
'''LCD data'''&lt;br /&gt;
&lt;br /&gt;
Graphical display of the contents of LCD memory. Note that all the 120 columns are shown here, even though all calculators emulated can only display 96. However, the memory is still there. The current X and Y addresses are shown by a bluish colour on the byte that will be accessed through the data port.&lt;br /&gt;
&lt;br /&gt;
'''Link history'''&lt;br /&gt;
&lt;br /&gt;
Link activity graph that records changes on the link port of calculators plugged into the hub. Calculators not plugged in are shown inactive even if they do manipulate their link port.&lt;br /&gt;
&lt;br /&gt;
'''Key-value modules'''&lt;br /&gt;
&lt;br /&gt;
The following modules are in this category: LCD physics, LCD software, Information, Time, Interrupts, Memory, Keyboard, Link. All of these display a list of characteristics. The right hand sides can be edited where the cursor turns into a hand. Editing can either mean a single click (e.g. interrupt frequencies or keyboard state) or bring up a text box for numeric values, where Escape can be used to cancel as usual.&lt;br /&gt;
&lt;br /&gt;
==Scripting==&lt;br /&gt;
&lt;br /&gt;
It is possible to run the emulator in a non-interactive mode through a pipe (communicating through stdio), just invoke the executable with the -p switch and redirect the input and the output. Do not try to run it with the keyboard on the input or a terminal on the output, because it will hang.&lt;br /&gt;
&lt;br /&gt;
Each command sent must be on a separate line. All of them emit at least a line containing 'OK' as a response in case of success. Error conditions are signaled by outputs starting with 'Error:'.&lt;br /&gt;
&lt;br /&gt;
The commands are the following:&lt;br /&gt;
&lt;br /&gt;
*send-file &amp;lt;slot&amp;gt; &amp;lt;file&amp;gt; - send a file to the specified slot (the same as drag and drop); don't quote the filename, it's read from the first non-space after the slot number till the end of the line (the slot number must be between 0 and 15 or 0x0 and 0xf)&lt;br /&gt;
&lt;br /&gt;
*activate-slot &amp;lt;slot&amp;gt; - select the current slot&lt;br /&gt;
&lt;br /&gt;
*reset-calc - reset the calc in the current slot (you might need to run a few million cc's after this before pressing on)&lt;br /&gt;
&lt;br /&gt;
*run &amp;lt;cycles&amp;gt; - run for the specified number of cycles (it should be a number between 1 and 2000000000); when debugging is enabled and execution stops on a breakpoint, there will be a line starting with 'Info:' output before the usual 'OK'&lt;br /&gt;
&lt;br /&gt;
*step &amp;lt;n&amp;gt; - execute n instructions ignoring the breakpoints, n defaults to 1 when omitted; the firing of a possibly masked timer during a halt counts as one instruction&lt;br /&gt;
   &lt;br /&gt;
*draw-screen-bw - dump LCD memory â€” 96*64 bytes, 0 for white and 255 for black; the raw data is preceded by a line that always contains two characters: the first is '1' if the calculator is powered, '0' otherwise, and the second is '1' if the LCD is powered, '0' if it isn't (so the image should be displayed only if this line says '11')&lt;br /&gt;
&lt;br /&gt;
*draw-screen-gs - dump greyscale screen (only updated 25 times per calculator second) â€” 96*64 bytes preceded by the same two-character line, same format but using the full range of values&lt;br /&gt;
&lt;br /&gt;
*key-down &amp;lt;key&amp;gt; - press key (calc key, so the argument is a token like '2nd', 'mode' etc.)&lt;br /&gt;
&lt;br /&gt;
*key-up &amp;lt;key&amp;gt; - release key&lt;br /&gt;
&lt;br /&gt;
&amp;lt;key&amp;gt; must be one of the tokens below:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
| &amp;amp;nbsp; || 7 || 6 || 5 || 4 || 3 || 2 || 1 || 0&lt;br /&gt;
|-&lt;br /&gt;
| 0 || &amp;amp;nbsp; || &amp;amp;nbsp; || &amp;amp;nbsp; || &amp;amp;nbsp; || up || right || left || down&lt;br /&gt;
|-&lt;br /&gt;
| 1 || &amp;amp;nbsp; || clear || ^ || / || * || - || + || enter&lt;br /&gt;
|-&lt;br /&gt;
| 2 || &amp;amp;nbsp; || vars || tan || ) || 9 || 6 || 3 || (-)&lt;br /&gt;
|-&lt;br /&gt;
| 3 || stat || prgm || cos || ( || 8 || 5 || 2 || .&lt;br /&gt;
|-&lt;br /&gt;
| 4 || x || matrx || sin || , || 7 || 4 || 1 || 0&lt;br /&gt;
|-&lt;br /&gt;
| 5 || alpha || math || x^-1 || x^2 || log || ln || sto || &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| 6 || del || mode || 2nd || y= || window || zoom || trace || graph&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The on key is called 'on', surprisingly. You can also write 'apps' instead of 'matrx'.&lt;br /&gt;
&lt;br /&gt;
*dump-state &amp;lt;type&amp;gt; - obtain information about the internal state of the emulated hardware; &amp;lt;type&amp;gt; must be one of the following (without quotes): 'lcd physics', 'lcd software', 'model', 'time', 'interrupt', 'pager', 'keyboard', 'link', 'cpu', 'memory'. Except for the last two the format is the following after the initial 'OK': a line containing nothing but the number of subsequent lines, and a 'key: value' pair on each line. With 'cpu' it displays the registers with a 'reg=value' pair on each line, all in hex, while 'memory' is a dump of 65536 bytes as seen in the z80 address space with the current mapping mode&lt;br /&gt;
&lt;br /&gt;
*{set|remove}-breakpoint &amp;lt;type&amp;gt; &amp;lt;args&amp;gt; - add/remove a breakpoint; the arguments depend on the type given; the only type currently supported is 'code' (again, no quotes). It has only one argument: a number specifying the address. It can be base 10, 16 or 8 differentiated by the usual C prefixes. (Actually, this applies to any numeric argument in any command.) For the removal you can also specify -1 here, which removes all code breakpoints.&lt;br /&gt;
&lt;br /&gt;
There is currently no way to directly manipulate the state of the calculator.&lt;br /&gt;
&lt;br /&gt;
==External Resources==&lt;br /&gt;
[http://sgate.emt.bme.hu/patai/pindurti/pindurti.exe Latest build of PindurTI][https://web.archive.org/web/20140730220502/http://sgate.emt.bme.hu/patai/pindurti/pindurti.exe Archived link]&lt;br /&gt;
&lt;br /&gt;
[http://sgate.emt.bme.hu/patai/pindurti/changelog.txt Changelog][https://web.archive.org/web/20151019115428/http://sgate.emt.bme.hu/patai/pindurti/changelog.txt Archived link]&lt;br /&gt;
&lt;br /&gt;
[http://sgate.emt.bme.hu/patai/pindurti/features/ PindurTI Idea box] (not active any more)&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:Ports:02</id>
		<title>83Plus:Ports:02</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:Ports:02"/>
				<updated>2016-08-25T03:03:31Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:Ports:By Address|02 - Status Port/Interrupt Acknowledge]] [[Category:83Plus:Ports:By Name|Status Port/Interrupt Acknowledge]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Port Number:''' 02h&lt;br /&gt;
&lt;br /&gt;
'''Function:''' Calculator Status Information&lt;br /&gt;
&lt;br /&gt;
This port reports various status information, including battery strength, LCD driver status, and calculator type.&lt;br /&gt;
&lt;br /&gt;
=== Read Values ===&lt;br /&gt;
* Bit 0: Set if the batteries are good. Reset if the batteries are low. The calculator will refuse to Garbage Collect or receive a FLASH App or OS when the batteries are low. The voltage cutoff can be configured in [[83Plus:Ports:04|port 04]].&lt;br /&gt;
* '''83+SE / 84+(SE) only:''' Bit 1: At 15MHz this bit resets for a set delay after a command or data is sent to the LCD, otherwise this bit is always set. The amount of delay is controlled by [[83Plus:Ports:2F|port 2F]]. On the TI-73, this bit is always reset (this is how you distinguish between the 73 and 83+ series hardware).&lt;br /&gt;
* Bit 2: Set if Flash is currently unlocked.&lt;br /&gt;
* '''83+ only:''' Bits 3-5:&lt;br /&gt;
** Bit 3: Last value written to port 05 bit 0&lt;br /&gt;
** Bit 4: Last value written to port 05 bit 1&lt;br /&gt;
** Bit 5: Last value written to port 05 bit 2&lt;br /&gt;
* '''84+(SE) only:''' Bit 5: Set for TI-84+ and TI-84+ SE calculators. Reset for TI-83+ and TI-83+ SE calculators. More specifically, this indicates if the calculator is USB-capable or not.&lt;br /&gt;
* Bit 6: Indicates if Link Assist is available.&lt;br /&gt;
* Bit 7: Reset for a TI-83+ Basic and TI-73. Set for everything else.&lt;br /&gt;
&lt;br /&gt;
=== Write Values ===&lt;br /&gt;
==== TI-83+ (Non-SE) ====&lt;br /&gt;
No effect.&lt;br /&gt;
&lt;br /&gt;
==== TI-83+SE, TI-84+, TI-84+SE, TI-84+CSE ====&lt;br /&gt;
* Bit 0: Write a 0 to acknowledge the ON key interrupt; write 1 to leave the status of the ON key interrupt alone.&lt;br /&gt;
* Bit 1: ACK HW timer 1&lt;br /&gt;
* Bit 2: ACK HW timer 2&lt;br /&gt;
* Bit 3: Ignored&lt;br /&gt;
* Bit 4: ACK Linkport&lt;br /&gt;
* Bits 5-7: Ignored&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
See [[83Plus:Ports:21|Port 21h]] for how to distinguish the 84+ Basic from the 84+ SE.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
=== Battery checking ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; push af&lt;br /&gt;
 in a, (2)&lt;br /&gt;
 and 01h&lt;br /&gt;
 call nz, BatteriesGood&lt;br /&gt;
 call z, BatteriesLow&lt;br /&gt;
 pop af&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LCD Testing ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; push af&lt;br /&gt;
WaitLoop:&lt;br /&gt;
 in a, (2)&lt;br /&gt;
 and 02h&lt;br /&gt;
 jr z, WaitLoop&lt;br /&gt;
 ;Send a command, like 03 (LCD &amp;quot;On&amp;quot;).&lt;br /&gt;
 call LCDIsReady&lt;br /&gt;
 pop af&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Device checking ===&lt;br /&gt;
&lt;br /&gt;
''This example also uses [[83Plus:Ports:21|Port 21h]].''&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; in a, (2)&lt;br /&gt;
 rlca ;Roll bit 7 into carry.&lt;br /&gt;
 jp nc, Regular83Plus&lt;br /&gt;
 and 40h ;Test bit 5, now rotated into bit 6.&lt;br /&gt;
 jp z, Silver83Plus&lt;br /&gt;
 in a, (21h)&lt;br /&gt;
 and 03h&lt;br /&gt;
 jp z, Regular84Plus&lt;br /&gt;
 jp nz, Silver84Plus&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Credits and Contributions ==&lt;br /&gt;
* '''Michael Vincent''': Documentation of port 2 located [http://www.michaelv.org/programs/calcs/ports/port2.html here].&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Category:83Plus:Quirks</id>
		<title>Category:83Plus:Quirks</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Category:83Plus:Quirks"/>
				<updated>2015-04-08T16:44:02Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: Fix broken Omnimaga link and add an archive.org link in case the Omnimaga link breaks in the future.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Hardware Quirks ==&lt;br /&gt;
&lt;br /&gt;
The TI-83+ family of calculators has some interesting quirks in the hardware.&lt;br /&gt;
&lt;br /&gt;
*Later models of calculators are missing RAM pages&lt;br /&gt;
*Later models of calculators have a longer LCD delay&lt;br /&gt;
*If a LD A,I or LD A,R instruction is interrupted, then the P/V flag is reset, even if interrupts were enabled beforehand.&lt;br /&gt;
&lt;br /&gt;
== TIOS Quirks ==&lt;br /&gt;
*In TI-BASIC interpreter an If inside a For( loop without ending parentheses can cause an abnormal time wasten in interpretation.&lt;br /&gt;
*There are lots of bugs specially in old buggy versions as [https://www.omnimaga.org/other-calculator-discussion-and-news/ti-8384-os-glitches-compilation-thread-%28all-oses%29/ this topic] [https://web.archive.org/web/20111217084416/http://www.omnimaga.org/index.php?topic=1090.0 archive.org] describes.&lt;br /&gt;
*Equality tests (2nd-&amp;gt;TEST) will not work with complex numbers, despite what the manual says.&lt;br /&gt;
*TIOS sets the RAM Execution Limits so that if PC is greater than or equal to $C000, provided an even-numbered RAM page is swapped in the upper bank, the calculator will crash.  On a TI-83+ SE, TI-84+, and TI-84+ SE, this can be changed via ports [[83Plus:Ports:25|25]] and [[83Plus:Ports:26|26]].  On the TI-83+, this is controlled with ports [[83Plus:Ports:05|05]] and [[83Plus:Ports:16|16]].&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Talk:Z80_Optimization</id>
		<title>Talk:Z80 Optimization</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Talk:Z80_Optimization"/>
				<updated>2014-10-19T16:23:21Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: Undo revision 10318 by 63.141.244.251 (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;:Great topic, we have done!&lt;br /&gt;
:This is getting big. Maybe put Small tricks into another page or even do various categories. We need to discuss this when the topic is more complete... Nevermind, it is better to stay all together.&lt;br /&gt;
:@fullmetalcoder I will count my all others tricks later... Now I was more interested in sharing. (Done!)&lt;br /&gt;
:EDITED...&lt;br /&gt;
:[[User:Galandros|Galandros]] 14:32, 6 November 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Talk:Z80_Optimization</id>
		<title>Talk:Z80 Optimization</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Talk:Z80_Optimization"/>
				<updated>2014-10-19T16:23:03Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: Undo revision 10320 by 199.15.233.167 (talk) spam&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;:Great topic, we have done!&lt;br /&gt;
:This is getting big. Maybe put Small tricks into another page or even do various categories. We need to discuss this when the topic is more complete... Nevermind, it is better to stay all together.&lt;br /&gt;
:@fullmetalcoder I will count my all others tricks later... Now I was more interested in sharing. (Done!)&lt;br /&gt;
:EDITED...&lt;br /&gt;
:[[User:Galandros|Galandros]] 14:32, 6 November 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== gucci outlet  - Discover more about These Wonderful louboutin shoes&lt;br /&gt;
&lt;br /&gt;
 ==&lt;br /&gt;
&lt;br /&gt;
by wearing often materials some sort of a cushy Gucci Handbags|Hermes stockists uk|uk  Hermes|Hermes bridal Handbags uk|buy Hermes uk|cheap Hermes Handbags uk|Hermes Handbags outlet|Hermes outlet store|Hermes online uk|Hermes sale Handbags uk|Hermes uk Handbags|Hermes outlet online|Hermes cheap uk|Hermes boots uk|Hermes uk online|Hermes shoe sale co uk|Hermes Handbags sale uk|buy  Hermes Handbags uk|Hermes Handbags uk sale|Hermes discount uk|Hermes sales uk|discount Hermes Handbags uk|Hermes in uk|Hermes pumps uk|uk Hermes Handbags|buy Hermes online uk|genuine Hermes uk|Hermes wedges uk|discount Hermes Handbags uk|Hermes outlet Handbags|Hermes outlet online store|buy Hermes uk}. Possibly advertising game manufactured in . A person who websites buy award michael kors slingbacks  readily available rule out garments [URL=http://www.stylebagshop.com/hermes-outlet-hermes-jypsiere-official-1_22.html]jypsiere 34[/URL]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
so that you can&lt;br /&gt;
stay away from&lt;br /&gt;
you will get&lt;br /&gt;
[URL=http://www.stylebagshop.com/shopping-by-styles-louis-vuitton-siracusa-official-28_115.html]Louis Vuitton Siracusa[/URL]&lt;br /&gt;
&lt;br /&gt;
 Grab affordable Red Bottom Shoes from authorised Christian Louboutin Sale Store immediately with Speedily Shipping and delivery, Get Payment &amp;amp; Fantastic Support Services at&lt;br /&gt;
&lt;br /&gt;
label this game in the new jersey whilst by Hermes Handbags for men tend to be to pay a few wearing . This specific Hermess Handbags  plus more mens Hermes Handbags outfits low-priced goods along with time of year enjoy if get replaced [URL=http://www.stylebagshop.com/hermes-bearn-gusset-wallet-red-style-486.html]Hermes Bearn Gusset Wallet Red[/URL]&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Talk:83Plus:Ports:15</id>
		<title>Talk:83Plus:Ports:15</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Talk:83Plus:Ports:15"/>
				<updated>2014-05-07T03:36:50Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: remove me being dumb&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Talk:83Plus:Ports:15</id>
		<title>Talk:83Plus:Ports:15</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Talk:83Plus:Ports:15"/>
				<updated>2014-05-06T23:52:29Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: Add a speculative note about the ASIC naming&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;One thing I notice about the ASIC names. The name 84PLC/TA1 seems to imply 84Plus Color revision 1 but if they realized they needed more than 48k of ram for the color calcs and thus went back to the ASIC with more ram. This is pure speculation of course but the naming sure seems to imply that the PLC asic was intended for a new revision of the calc rather than just a minor revision else it likely would have been called the 84PLUSB/TA3. --[[User:TheStorm|TheStorm]] 23:52, 6 May 2014 (UTC)&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:OS:Variable_Versions</id>
		<title>83Plus:OS:Variable Versions</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:OS:Variable_Versions"/>
				<updated>2013-03-14T04:27:48Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: Credit Ben for the initial documentation sent to the TILP developers via email&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:OS_Information|Variable Versions]]&lt;br /&gt;
This page is to document the Version field in the TI-83 series calculators Variable header.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Version Bytes==&lt;br /&gt;
Just for reference, here are the currently defined compatiblity levels&lt;br /&gt;
for 83+/84+ programs and variables:&lt;br /&gt;
* 00h: TI-83/TI-83 Plus, all versions&lt;br /&gt;
* 01h: TI-83 Plus, all versions (tokens 'Archive' through 'GarbageCollect')&lt;br /&gt;
* 02h: TI-83 Plus v1.15 and above (tokens '~' through '%')&lt;br /&gt;
* 03h: TI-83 Plus v1.16 and above (tokens '...' through inverse '=')&lt;br /&gt;
* 04h: TI-84 Plus, all versions (tokens 'setDate(' through 'ExecLib')&lt;br /&gt;
* 05h: TI-84 Plus v2.30 and above (tokens 'invT(' through 'Manual-Fit')&lt;br /&gt;
* 06h: TI-84 Plus v2.53 and above (tokens 'ZQuadrant1' through 'FRAC')&lt;br /&gt;
* 0Ah: TI-84 Plus C SE v4.0 and above Not yet confirmed (see below)&lt;br /&gt;
&lt;br /&gt;
==Clock Tokens== &lt;br /&gt;
In addition, 20h is added if the program contains any clock-related&lt;br /&gt;
tokens. Presumably the intention was to allow some future 83+ OS to&lt;br /&gt;
support the new tokens that don't require an RTC, but this never&lt;br /&gt;
happened.&lt;br /&gt;
&lt;br /&gt;
==TI-84 Plus C SE==&lt;br /&gt;
Finally, compatibility level 0Ah is apparently used for Pic variables&lt;br /&gt;
on the TI-84 Plus C SE.  I don't know about the new tokens for 84+C programs,&lt;br /&gt;
but those will likely also be level 0Ah.&lt;br /&gt;
&lt;br /&gt;
==Credits and Contributions==&lt;br /&gt;
* '''Ben Moody''' For initial documentation.&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:OS:Variable_Versions</id>
		<title>83Plus:OS:Variable Versions</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:OS:Variable_Versions"/>
				<updated>2013-03-14T04:15:57Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: Document the Variable Version byte in the variable file header.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:OS_Information|Variable Versions]]&lt;br /&gt;
This page is to document the Version field in the TI-83 series calculators Variable header.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Version Bytes==&lt;br /&gt;
Just for reference, here are the currently defined compatiblity levels&lt;br /&gt;
for 83+/84+ programs and variables:&lt;br /&gt;
* 00h: TI-83/TI-83 Plus, all versions&lt;br /&gt;
* 01h: TI-83 Plus, all versions (tokens 'Archive' through 'GarbageCollect')&lt;br /&gt;
* 02h: TI-83 Plus v1.15 and above (tokens '~' through '%')&lt;br /&gt;
* 03h: TI-83 Plus v1.16 and above (tokens '...' through inverse '=')&lt;br /&gt;
* 04h: TI-84 Plus, all versions (tokens 'setDate(' through 'ExecLib')&lt;br /&gt;
* 05h: TI-84 Plus v2.30 and above (tokens 'invT(' through 'Manual-Fit')&lt;br /&gt;
* 06h: TI-84 Plus v2.53 and above (tokens 'ZQuadrant1' through 'FRAC')&lt;br /&gt;
* 0Ah: TI-84 Plus C SE v4.0 and above Not yet confirmed (see below)&lt;br /&gt;
&lt;br /&gt;
==Clock Tokens== &lt;br /&gt;
In addition, 20h is added if the program contains any clock-related&lt;br /&gt;
tokens. Presumably the intention was to allow some future 83+ OS to&lt;br /&gt;
support the new tokens that don't require an RTC, but this never&lt;br /&gt;
happened.&lt;br /&gt;
&lt;br /&gt;
==TI-84 Plus C SE==&lt;br /&gt;
Finally, compatibility level 0Ah is apparently used for Pic variables&lt;br /&gt;
on the TI-84 Plus C SE.  I don't know about the new tokens for 84+C programs,&lt;br /&gt;
but those will likely also be level 0Ah.&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Teams:Detached_Solutions</id>
		<title>Teams:Detached Solutions</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Teams:Detached_Solutions"/>
				<updated>2010-02-10T00:30:13Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: added the new release of EMU8x&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Teams|Detached Solutions]]&lt;br /&gt;
&lt;br /&gt;
* Website : [http://www.detachedsolutions.com http://www.detachedsolutions.com]&lt;br /&gt;
&lt;br /&gt;
==Members==&lt;br /&gt;
*Dan Englender&lt;br /&gt;
*Jason Kovacs&lt;br /&gt;
*Andrew Magness&lt;br /&gt;
*Scott Dial&lt;br /&gt;
*Brandon Sterner&lt;br /&gt;
*Michael Vincent&lt;br /&gt;
*Kirk Meyer&lt;br /&gt;
*Brandon Wilson&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
*[http://www.detachedsolutions.com/aboutus/ http://www.detachedsolutions.com/aboutus/]&lt;br /&gt;
&lt;br /&gt;
===2000===&lt;br /&gt;
:;May: 01: Detached Solutions Formed&lt;br /&gt;
:;July: 14: Detached Solutions IRC Channel Open&lt;br /&gt;
::25: MirageOS v1.0 Released&lt;br /&gt;
:;Nov: 07: MirageOS v1.1 Released&lt;br /&gt;
===2001===&lt;br /&gt;
:;Jan: 08: CalcSys v1.2 Released&lt;br /&gt;
:;May: 13: PuzzPack Version 2.0 Released&lt;br /&gt;
::25: Michael Vincent joins Detached Solutions Staff&lt;br /&gt;
:;Aug: 18: Virtual Calc v1.0 Released&lt;br /&gt;
::21: Calcsys v1.3 Released&lt;br /&gt;
:;Dec: 14: Symbolic v1.0 Released&lt;br /&gt;
===2002===&lt;br /&gt;
:;Apr:11: Omnicalc v1.0 Released&lt;br /&gt;
:;Aug: 11: Kirk Meyer joins Detached Solutions staff &lt;br /&gt;
:: 15: GraphÂ³ v1.0 Released&lt;br /&gt;
:: 27: Greg Dietsche joins Detached Solutions staff&lt;br /&gt;
:;Oct: 28: DAWG v1.0 Released&lt;br /&gt;
===2003===&lt;br /&gt;
:;Mar: 19: Krolypto v1.0 Released&lt;br /&gt;
:;June: 30: Krolypto v1.01 Released&lt;br /&gt;
:;Nov: 16: Krolypto 1.1 Update&lt;br /&gt;
===2004===&lt;br /&gt;
:;Feb: 22: Cabamap v1.0 Released&lt;br /&gt;
:;May: 12: MirageOS v1.2 Released&lt;br /&gt;
:;June: 01: OurWorld v1.0 Released&lt;br /&gt;
:;July: 31: Omnicalc v1.2 Released&lt;br /&gt;
:;Aug: 19: Krolypto Updated to v1.3&lt;br /&gt;
===2005===&lt;br /&gt;
:;Oct: 29: Emu8x Released&lt;br /&gt;
===2010===&lt;br /&gt;
:;Jan: 13: Emu8x Updated to v1.10&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Talk:83Plus:Software:usb8x/BASIC_Interface</id>
		<title>Talk:83Plus:Software:usb8x/BASIC Interface</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Talk:83Plus:Software:usb8x/BASIC_Interface"/>
				<updated>2009-03-03T00:25:19Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page doesn't seem to have any links...&lt;br /&gt;
&lt;br /&gt;
No, the links exist, they are just broken. --[[User:TheStorm|TheStorm]] 00:25, 3 March 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:Software:usb8x/Asm_Interface/MSD</id>
		<title>83Plus:Software:usb8x/Asm Interface/MSD</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:Software:usb8x/Asm_Interface/MSD"/>
				<updated>2009-02-18T03:02:17Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: fixing links broken during trasnfer/upgrade, may need more work IDK, they work now&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The mass storage driver works through a series of U_CALL entry points, much like the HID driver.&lt;br /&gt;
&lt;br /&gt;
It requires two RAM buffers, one for internal use and one for a sector buffer. File handles used for opened files (explained later) also require around 27 bytes. The size of all three of these buffers can be obtained through the [[83Plus:Software:usb8x/Asm_Interface/MSD/MSDVersion|MSDVersion]] U_CALL. The size of the internal buffer is typically 254 bytes and the sector buffer is 512 bytes.&lt;br /&gt;
&lt;br /&gt;
The entry point which requires these buffers is the [[83Plus:Software:usb8x/Asm_Interface/MSD/MSD_Initialize|MSD_Initialize]] U_CALL. Its memory can be dynamically allocated to appBackUpScreen (taking up practically all of it) with the code below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 U_CALL MSDVersion&lt;br /&gt;
 ld de,appBackUpScreen&lt;br /&gt;
 push de&lt;br /&gt;
 add hl,de&lt;br /&gt;
 ex de,hl&lt;br /&gt;
 pop hl&lt;br /&gt;
 U_CALL MSD_Initialize&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For file system operations, you will then make calls to [[83Plus:Software:usb8x/Asm_Interface/MSD/UFI_Initialize|UFI_Initialize]] and [[83Plus:Software:usb8x/Asm_Interface/MSD/FAT_Initialize|FAT_Initialize]]. All entry points will return with the carry flag set if there are problems, with more detailed information available via [[83Plus:Software:usb8x/Asm_Interface/MSD/GetErrorCode|GetErrorCode]].&lt;br /&gt;
&lt;br /&gt;
No knowledge of the intimate details of FAT16 are required. However, the &amp;quot;starting cluster&amp;quot; of a directory is used in several routines. This is a 16-bit number uniquely indentifying a directory. It is beneficial to use this number rather than an extremely long ASCIIZ directory path which wastes memory. It is easily obtained with [[/FAT_getStartingCluster|FAT_getStartingCluster]] by passing an ASCIIZ directory path to it.&lt;br /&gt;
&lt;br /&gt;
== Entry Points ==&lt;br /&gt;
&lt;br /&gt;
If all three of the initializing U_CALLs succeed, the other following entry points can then be called.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;  cellspacing=&amp;quot;0&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| [[83Plus:Software:usb8x/Asm_Interface/MSD/MSDVersion|MSDVersion]] || Gets mass storage driver version and memory requirements&lt;br /&gt;
|-&lt;br /&gt;
| [[83Plus:Software:usb8x/Asm_Interface/MSD/MSD_Initialize|MSD_Initialize]] || Initializes mass storage driver&lt;br /&gt;
|-&lt;br /&gt;
| [[83Plus:Software:usb8x/Asm_Interface/MSD/UFI_Initialize|UFI_Initialize]] || Initializes connected mass storage device for sector read/write operations&lt;br /&gt;
|-&lt;br /&gt;
| [[83Plus:Software:usb8x/Asm_Interface/MSD/UFI_getCapacity|UFI_getCapacity]] || Gets capacity of entire drive and sets up bytes-per-sector&lt;br /&gt;
|-&lt;br /&gt;
| [[83Plus:Software:usb8x/Asm_Interface/MSD/UFI_Read|UFI_Read]] || Reads sector at (MSDLBA) address into sector buffer&lt;br /&gt;
|-&lt;br /&gt;
| [[83Plus:Software:usb8x/Asm_Interface/MSD/UFI_Write|UFI_Write]] || Writes memory in sector buffer to (MSDLBA) address&lt;br /&gt;
|-&lt;br /&gt;
| [[83Plus:Software:usb8x/Asm_Interface/MSD/msdDetect|msdDetect]] || Detects and loads 83P/8XP levels based on detection string and specified directory&lt;br /&gt;
|-&lt;br /&gt;
| [[83Plus:Software:usb8x/Asm_Interface/MSD/FAT_Initialize|FAT_Initialize]] || Initializes connected mass storage device for FAT16 file system operations&lt;br /&gt;
|-&lt;br /&gt;
| [[83Plus:Software:usb8x/Asm_Interface/MSD/DOS_openFile|DOS_openFile]] || Opens a file and populates file handle with important information&lt;br /&gt;
|-&lt;br /&gt;
| [[83Plus:Software:usb8x/Asm_Interface/MSD/DOS_fileSeek|DOS_fileSeek]] || Sets seek pointer for file handle to specified offset&lt;br /&gt;
|-&lt;br /&gt;
| [[83Plus:Software:usb8x/Asm_Interface/MSD/DOS_fileRead|DOS_fileRead]] || Read bytes from a file&lt;br /&gt;
|-&lt;br /&gt;
| [[83Plus:Software:usb8x/Asm_Interface/MSD/DOS_fileWrite|DOS_fileWrite]] || Write bytes to a file and grows it if necessary&lt;br /&gt;
|-&lt;br /&gt;
| [[83Plus:Software:usb8x/Asm_Interface/MSD/DOS_updateAttributes|DOS_updateAttributes]] || Update &amp;quot;last modified&amp;quot; date/time and other attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[83Plus:Software:usb8x/Asm_Interface/MSD/DOS_createFile|DOS_createFile]] || Create new file in specified directory with size 0&lt;br /&gt;
|-&lt;br /&gt;
| [[83Plus:Software:usb8x/Asm_Interface/MSD/DOS_createDirectory|DOS_createDirectory]] || Create new subdirectory in specified directory&lt;br /&gt;
|-&lt;br /&gt;
| [[83Plus:Software:usb8x/Asm_Interface/MSD/DOS_renameFileEntry|DOS_renameFileEntry]] || Rename specified file or folder&lt;br /&gt;
|-&lt;br /&gt;
| [[83Plus:Software:usb8x/Asm_Interface/MSD/DOS_deleteFileEntry|DOS_deleteFileEntry]] || Delete file or folder (including contents)&lt;br /&gt;
|-&lt;br /&gt;
| [[83Plus:Software:usb8x/Asm_Interface/MSD/DOS_countFilesInDir|DOS_countFilesInDir]] || Get number of files/folders in specified directory&lt;br /&gt;
|-&lt;br /&gt;
| [[83Plus:Software:usb8x/Asm_Interface/MSD/DOS_getNextFile|DOS_getNextFile]] || Get first/next file in specified directory&lt;br /&gt;
|-&lt;br /&gt;
| [[83Plus:Software:usb8x/Asm_Interface/MSD/DOS_getFileSize|DOS_getFileSize]] || Get size of file&lt;br /&gt;
|-&lt;br /&gt;
| [[83Plus:Software:usb8x/Asm_Interface/MSD/DOS_getDirEntry|DOS_getDirEntry]] || Get directory entry for specified file/folder&lt;br /&gt;
|-&lt;br /&gt;
| [[83Plus:Software:usb8x/Asm_Interface/MSD/FAT_nameConvertTo11|FAT_nameConvertTo11]] || Convert name to 11-character format (ex. &amp;quot;&amp;lt;code&amp;gt;README  TXT&amp;lt;/code&amp;gt;&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| [[83Plus:Software:usb8x/Asm_Interface/MSD/FAT_nameConvertFrom11|FAT_nameConvertFrom11]] || Convert name to ASCIIZ format (ex. &amp;quot;readme.txt&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| [[83Plus:Software:usb8x/Asm_Interface/MSD/FAT_lookupPath|FAT_lookupPath]] || Find whether specified file/directory exists&lt;br /&gt;
|-&lt;br /&gt;
| [[83Plus:Software:usb8x/Asm_Interface/MSD/FAT_findFileInCluster|FAT_findFileInCluster]] || Get directory entry for a file in specified folder&lt;br /&gt;
|-&lt;br /&gt;
| [[83Plus:Software:usb8x/Asm_Interface/MSD/FAT_getStartingCluster|FAT_getStartingCluster]] || Get starting cluster of specified directory&lt;br /&gt;
|-&lt;br /&gt;
| [[83Plus:Software:usb8x/Asm_Interface/MSD/MSD_ImportVariable|MSD_ImportVariable]] || Imports 8x* file in specified directory as calculator variable in RAM/Flash&lt;br /&gt;
|-&lt;br /&gt;
| [[83Plus:Software:usb8x/Asm_Interface/MSD/MSD_ExportVariable|MSD_ExportVariable]] || Exports calculator variable in RAM/Flash as 8x* file in specified directory&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Other File Systems ==&lt;br /&gt;
&lt;br /&gt;
You can use the [[83Plus:Software:usb8x/Asm_Interface/MSD/MSD_Initialize|MSD_Initialize]], [[83Plus:Software:usb8x/Asm_Interface/MSD/UFI_getCapacity|UFI_getCapacity]], [[83Plus:Software:usb8x/Asm_Interface/MSD/UFI_Read|UFI_Read]], and [[83Plus:Software:usb8x/Asm_Interface/MSD/UFI_Write|UFI_Write]] entry points to create your own file system driver. For example, you could create a driver for ext2/3, FAT32, or any other file system imaginable.&lt;br /&gt;
&lt;br /&gt;
The low-level parts of the mass storage driver work by reading and writing sectors to the drive based on the current LBA address. This is located in (MSDLBA) in the mass storage driver's memory. To create your own file system driver, you will need to implement all of the details specific to that file system.&lt;br /&gt;
&lt;br /&gt;
The [[83Plus:Software:usb8x/Asm_Interface/MSD/MSD_Initialize|MSD_Initialize]] entry point is required for any communication with the drive. When this entry point succeeds, you would then call [[83Plus:Software:usb8x/Asm_Interface/MSD/UFI_getCapacity|UFI_getCapacity]] to set up (MSDBPS) in the driver memory. This is necessary for the [[83Plus:Software:usb8x/Asm_Interface/MSD/UFI_Read|UFI_Read]] and [[83Plus:Software:usb8x/Asm_Interface/MSD/UFI_Write|UFI_Write]] entry points to succeed.&lt;br /&gt;
&lt;br /&gt;
Once both entry points succeed, you are free to read and write as much as you like. The boot sector is located at LBA address 0x00000000. Most file systems require that you read this first to find out what to do next. Check out the mass storage driver in the usb8x source for more information.&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:Software:usb8x/Asm_Interface/MSD</id>
		<title>83Plus:Software:usb8x/Asm Interface/MSD</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:Software:usb8x/Asm_Interface/MSD"/>
				<updated>2009-02-18T02:59:07Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The mass storage driver works through a series of U_CALL entry points, much like the HID driver.&lt;br /&gt;
&lt;br /&gt;
It requires two RAM buffers, one for internal use and one for a sector buffer. File handles used for opened files (explained later) also require around 27 bytes. The size of all three of these buffers can be obtained through the [[83Plus:Software:usb8x/Asm_Interface/MSD/MSDVersion|MSDVersion]] U_CALL. The size of the internal buffer is typically 254 bytes and the sector buffer is 512 bytes.&lt;br /&gt;
&lt;br /&gt;
The entry point which requires these buffers is the [[83Plus:Software:usb8x/Asm_Interface/MSD/MSD_Initialize|MSD_Initialize]] U_CALL. Its memory can be dynamically allocated to appBackUpScreen (taking up practically all of it) with the code below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 U_CALL MSDVersion&lt;br /&gt;
 ld de,appBackUpScreen&lt;br /&gt;
 push de&lt;br /&gt;
 add hl,de&lt;br /&gt;
 ex de,hl&lt;br /&gt;
 pop hl&lt;br /&gt;
 U_CALL MSD_Initialize&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For file system operations, you will then make calls to [[83Plus:Software:usb8x/Asm_Interface/MSD/UFI_Initialize|UFI_Initialize]] and [[83Plus:Software:usb8x/Asm_Interface/MSD/FAT_Initialize|FAT_Initialize]]. All entry points will return with the carry flag set if there are problems, with more detailed information available via [[83Plus:Software:usb8x/Asm_Interface/MSD/GetErrorCode|GetErrorCode]].&lt;br /&gt;
&lt;br /&gt;
No knowledge of the intimate details of FAT16 are required. However, the &amp;quot;starting cluster&amp;quot; of a directory is used in several routines. This is a 16-bit number uniquely indentifying a directory. It is beneficial to use this number rather than an extremely long ASCIIZ directory path which wastes memory. It is easily obtained with [[/FAT_getStartingCluster|FAT_getStartingCluster]] by passing an ASCIIZ directory path to it.&lt;br /&gt;
&lt;br /&gt;
== Entry Points ==&lt;br /&gt;
&lt;br /&gt;
If all three of the initializing U_CALLs succeed, the other following entry points can then be called.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;  cellspacing=&amp;quot;0&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| [[/MSDVersion|MSDVersion]] || Gets mass storage driver version and memory requirements&lt;br /&gt;
|-&lt;br /&gt;
| [[/MSD_Initialize|MSD_Initialize]] || Initializes mass storage driver&lt;br /&gt;
|-&lt;br /&gt;
| [[/UFI_Initialize|UFI_Initialize]] || Initializes connected mass storage device for sector read/write operations&lt;br /&gt;
|-&lt;br /&gt;
| [[/UFI_getCapacity|UFI_getCapacity]] || Gets capacity of entire drive and sets up bytes-per-sector&lt;br /&gt;
|-&lt;br /&gt;
| [[/UFI_Read|UFI_Read]] || Reads sector at (MSDLBA) address into sector buffer&lt;br /&gt;
|-&lt;br /&gt;
| [[/UFI_Write|UFI_Write]] || Writes memory in sector buffer to (MSDLBA) address&lt;br /&gt;
|-&lt;br /&gt;
| [[/msdDetect|msdDetect]] || Detects and loads 83P/8XP levels based on detection string and specified directory&lt;br /&gt;
|-&lt;br /&gt;
| [[/FAT_Initialize|FAT_Initialize]] || Initializes connected mass storage device for FAT16 file system operations&lt;br /&gt;
|-&lt;br /&gt;
| [[/DOS_openFile|DOS_openFile]] || Opens a file and populates file handle with important information&lt;br /&gt;
|-&lt;br /&gt;
| [[/DOS_fileSeek|DOS_fileSeek]] || Sets seek pointer for file handle to specified offset&lt;br /&gt;
|-&lt;br /&gt;
| [[/DOS_fileRead|DOS_fileRead]] || Read bytes from a file&lt;br /&gt;
|-&lt;br /&gt;
| [[/DOS_fileWrite|DOS_fileWrite]] || Write bytes to a file and grows it if necessary&lt;br /&gt;
|-&lt;br /&gt;
| [[/DOS_updateAttributes|DOS_updateAttributes]] || Update &amp;quot;last modified&amp;quot; date/time and other attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[/DOS_createFile|DOS_createFile]] || Create new file in specified directory with size 0&lt;br /&gt;
|-&lt;br /&gt;
| [[/DOS_createDirectory|DOS_createDirectory]] || Create new subdirectory in specified directory&lt;br /&gt;
|-&lt;br /&gt;
| [[/DOS_renameFileEntry|DOS_renameFileEntry]] || Rename specified file or folder&lt;br /&gt;
|-&lt;br /&gt;
| [[/DOS_deleteFileEntry|DOS_deleteFileEntry]] || Delete file or folder (including contents)&lt;br /&gt;
|-&lt;br /&gt;
| [[/DOS_countFilesInDir|DOS_countFilesInDir]] || Get number of files/folders in specified directory&lt;br /&gt;
|-&lt;br /&gt;
| [[/DOS_getNextFile|DOS_getNextFile]] || Get first/next file in specified directory&lt;br /&gt;
|-&lt;br /&gt;
| [[/DOS_getFileSize|DOS_getFileSize]] || Get size of file&lt;br /&gt;
|-&lt;br /&gt;
| [[/DOS_getDirEntry|DOS_getDirEntry]] || Get directory entry for specified file/folder&lt;br /&gt;
|-&lt;br /&gt;
| [[/FAT_nameConvertTo11|FAT_nameConvertTo11]] || Convert name to 11-character format (ex. &amp;quot;&amp;lt;code&amp;gt;README  TXT&amp;lt;/code&amp;gt;&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| [[/FAT_nameConvertFrom11|FAT_nameConvertFrom11]] || Convert name to ASCIIZ format (ex. &amp;quot;readme.txt&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| [[/FAT_lookupPath|FAT_lookupPath]] || Find whether specified file/directory exists&lt;br /&gt;
|-&lt;br /&gt;
| [[/FAT_findFileInCluster|FAT_findFileInCluster]] || Get directory entry for a file in specified folder&lt;br /&gt;
|-&lt;br /&gt;
| [[/FAT_getStartingCluster|FAT_getStartingCluster]] || Get starting cluster of specified directory&lt;br /&gt;
|-&lt;br /&gt;
| [[/MSD_ImportVariable|MSD_ImportVariable]] || Imports 8x* file in specified directory as calculator variable in RAM/Flash&lt;br /&gt;
|-&lt;br /&gt;
| [[/MSD_ExportVariable|MSD_ExportVariable]] || Exports calculator variable in RAM/Flash as 8x* file in specified directory&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Other File Systems ==&lt;br /&gt;
&lt;br /&gt;
You can use the [[/MSD_Initialize|MSD_Initialize]], [[/UFI_getCapacity|UFI_getCapacity]], [[/UFI_Read|UFI_Read]], and [[/UFI_Write|UFI_Write]] entry points to create your own file system driver. For example, you could create a driver for ext2/3, FAT32, or any other file system imaginable.&lt;br /&gt;
&lt;br /&gt;
The low-level parts of the mass storage driver work by reading and writing sectors to the drive based on the current LBA address. This is located in (MSDLBA) in the mass storage driver's memory. To create your own file system driver, you will need to implement all of the details specific to that file system.&lt;br /&gt;
&lt;br /&gt;
The [[/MSD_Initialize|MSD_Initialize]] entry point is required for any communication with the drive. When this entry point succeeds, you would then call [[/UFI_getCapacity|UFI_getCapacity]] to set up (MSDBPS) in the driver memory. This is necessary for the [[/UFI_Read|UFI_Read]] and [[/UFI_Write|UFI_Write]] entry points to succeed.&lt;br /&gt;
&lt;br /&gt;
Once both entry points succeed, you are free to read and write as much as you like. The boot sector is located at LBA address 0x00000000. Most file systems require that you read this first to find out what to do next. Check out the mass storage driver in the usb8x source for more information.&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:Software:usb8x/Asm_Interface/MSD</id>
		<title>83Plus:Software:usb8x/Asm Interface/MSD</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:Software:usb8x/Asm_Interface/MSD"/>
				<updated>2009-02-18T02:58:17Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The mass storage driver works through a series of U_CALL entry points, much like the HID driver.&lt;br /&gt;
&lt;br /&gt;
It requires two RAM buffers, one for internal use and one for a sector buffer. File handles used for opened files (explained later) also require around 27 bytes. The size of all three of these buffers can be obtained through the [[../MSDVersion|MSDVersion]] U_CALL. The size of the internal buffer is typically 254 bytes and the sector buffer is 512 bytes.&lt;br /&gt;
&lt;br /&gt;
The entry point which requires these buffers is the [[../MSD_Initialize|MSD_Initialize]] U_CALL. Its memory can be dynamically allocated to appBackUpScreen (taking up practically all of it) with the code below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 U_CALL MSDVersion&lt;br /&gt;
 ld de,appBackUpScreen&lt;br /&gt;
 push de&lt;br /&gt;
 add hl,de&lt;br /&gt;
 ex de,hl&lt;br /&gt;
 pop hl&lt;br /&gt;
 U_CALL MSD_Initialize&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For file system operations, you will then make calls to [[/UFI_Initialize|UFI_Initialize]] and [[/FAT_Initialize|FAT_Initialize]]. All entry points will return with the carry flag set if there are problems, with more detailed information available via [[../GetErrorCode|GetErrorCode]].&lt;br /&gt;
&lt;br /&gt;
No knowledge of the intimate details of FAT16 are required. However, the &amp;quot;starting cluster&amp;quot; of a directory is used in several routines. This is a 16-bit number uniquely indentifying a directory. It is beneficial to use this number rather than an extremely long ASCIIZ directory path which wastes memory. It is easily obtained with [[/FAT_getStartingCluster|FAT_getStartingCluster]] by passing an ASCIIZ directory path to it.&lt;br /&gt;
&lt;br /&gt;
== Entry Points ==&lt;br /&gt;
&lt;br /&gt;
If all three of the initializing U_CALLs succeed, the other following entry points can then be called.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;  cellspacing=&amp;quot;0&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| [[/MSDVersion|MSDVersion]] || Gets mass storage driver version and memory requirements&lt;br /&gt;
|-&lt;br /&gt;
| [[/MSD_Initialize|MSD_Initialize]] || Initializes mass storage driver&lt;br /&gt;
|-&lt;br /&gt;
| [[/UFI_Initialize|UFI_Initialize]] || Initializes connected mass storage device for sector read/write operations&lt;br /&gt;
|-&lt;br /&gt;
| [[/UFI_getCapacity|UFI_getCapacity]] || Gets capacity of entire drive and sets up bytes-per-sector&lt;br /&gt;
|-&lt;br /&gt;
| [[/UFI_Read|UFI_Read]] || Reads sector at (MSDLBA) address into sector buffer&lt;br /&gt;
|-&lt;br /&gt;
| [[/UFI_Write|UFI_Write]] || Writes memory in sector buffer to (MSDLBA) address&lt;br /&gt;
|-&lt;br /&gt;
| [[/msdDetect|msdDetect]] || Detects and loads 83P/8XP levels based on detection string and specified directory&lt;br /&gt;
|-&lt;br /&gt;
| [[/FAT_Initialize|FAT_Initialize]] || Initializes connected mass storage device for FAT16 file system operations&lt;br /&gt;
|-&lt;br /&gt;
| [[/DOS_openFile|DOS_openFile]] || Opens a file and populates file handle with important information&lt;br /&gt;
|-&lt;br /&gt;
| [[/DOS_fileSeek|DOS_fileSeek]] || Sets seek pointer for file handle to specified offset&lt;br /&gt;
|-&lt;br /&gt;
| [[/DOS_fileRead|DOS_fileRead]] || Read bytes from a file&lt;br /&gt;
|-&lt;br /&gt;
| [[/DOS_fileWrite|DOS_fileWrite]] || Write bytes to a file and grows it if necessary&lt;br /&gt;
|-&lt;br /&gt;
| [[/DOS_updateAttributes|DOS_updateAttributes]] || Update &amp;quot;last modified&amp;quot; date/time and other attributes&lt;br /&gt;
|-&lt;br /&gt;
| [[/DOS_createFile|DOS_createFile]] || Create new file in specified directory with size 0&lt;br /&gt;
|-&lt;br /&gt;
| [[/DOS_createDirectory|DOS_createDirectory]] || Create new subdirectory in specified directory&lt;br /&gt;
|-&lt;br /&gt;
| [[/DOS_renameFileEntry|DOS_renameFileEntry]] || Rename specified file or folder&lt;br /&gt;
|-&lt;br /&gt;
| [[/DOS_deleteFileEntry|DOS_deleteFileEntry]] || Delete file or folder (including contents)&lt;br /&gt;
|-&lt;br /&gt;
| [[/DOS_countFilesInDir|DOS_countFilesInDir]] || Get number of files/folders in specified directory&lt;br /&gt;
|-&lt;br /&gt;
| [[/DOS_getNextFile|DOS_getNextFile]] || Get first/next file in specified directory&lt;br /&gt;
|-&lt;br /&gt;
| [[/DOS_getFileSize|DOS_getFileSize]] || Get size of file&lt;br /&gt;
|-&lt;br /&gt;
| [[/DOS_getDirEntry|DOS_getDirEntry]] || Get directory entry for specified file/folder&lt;br /&gt;
|-&lt;br /&gt;
| [[/FAT_nameConvertTo11|FAT_nameConvertTo11]] || Convert name to 11-character format (ex. &amp;quot;&amp;lt;code&amp;gt;README  TXT&amp;lt;/code&amp;gt;&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| [[/FAT_nameConvertFrom11|FAT_nameConvertFrom11]] || Convert name to ASCIIZ format (ex. &amp;quot;readme.txt&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| [[/FAT_lookupPath|FAT_lookupPath]] || Find whether specified file/directory exists&lt;br /&gt;
|-&lt;br /&gt;
| [[/FAT_findFileInCluster|FAT_findFileInCluster]] || Get directory entry for a file in specified folder&lt;br /&gt;
|-&lt;br /&gt;
| [[/FAT_getStartingCluster|FAT_getStartingCluster]] || Get starting cluster of specified directory&lt;br /&gt;
|-&lt;br /&gt;
| [[/MSD_ImportVariable|MSD_ImportVariable]] || Imports 8x* file in specified directory as calculator variable in RAM/Flash&lt;br /&gt;
|-&lt;br /&gt;
| [[/MSD_ExportVariable|MSD_ExportVariable]] || Exports calculator variable in RAM/Flash as 8x* file in specified directory&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Other File Systems ==&lt;br /&gt;
&lt;br /&gt;
You can use the [[/MSD_Initialize|MSD_Initialize]], [[/UFI_getCapacity|UFI_getCapacity]], [[/UFI_Read|UFI_Read]], and [[/UFI_Write|UFI_Write]] entry points to create your own file system driver. For example, you could create a driver for ext2/3, FAT32, or any other file system imaginable.&lt;br /&gt;
&lt;br /&gt;
The low-level parts of the mass storage driver work by reading and writing sectors to the drive based on the current LBA address. This is located in (MSDLBA) in the mass storage driver's memory. To create your own file system driver, you will need to implement all of the details specific to that file system.&lt;br /&gt;
&lt;br /&gt;
The [[/MSD_Initialize|MSD_Initialize]] entry point is required for any communication with the drive. When this entry point succeeds, you would then call [[/UFI_getCapacity|UFI_getCapacity]] to set up (MSDBPS) in the driver memory. This is necessary for the [[/UFI_Read|UFI_Read]] and [[/UFI_Write|UFI_Write]] entry points to succeed.&lt;br /&gt;
&lt;br /&gt;
Once both entry points succeed, you are free to read and write as much as you like. The boot sector is located at LBA address 0x00000000. Most file systems require that you read this first to find out what to do next. Check out the mass storage driver in the usb8x source for more information.&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Category_talk:83Plus:BCALLs:By_Name</id>
		<title>Category talk:83Plus:BCALLs:By Name</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Category_talk:83Plus:BCALLs:By_Name"/>
				<updated>2009-02-18T02:42:58Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Why are there 180 items in this category and 183 items in the &amp;quot;by address&amp;quot; category?&lt;br /&gt;
&lt;br /&gt;
:Hey, that's only 1.6 percent... not bad!  Because the letter Z ([[83Plus:BCALLs:4A65]], [[83Plus:BCALLs:4A68]], [[83Plus:BCALLs:802A]]) does not exist.  Administrators?  Are we missing anything else?  [[User:FloppusMaximus|FloppusMaximus]] 17:37, 7 Dec 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
::It only shows 200 ''items'' per page. This includes subcategories. Click the '''(next 200)''' link. [[User:AndyJ|Andy Janata]] 04:41, 8 Dec 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
:::That makes a lot of sense.  Clearly, we have failed to comprehend what &amp;quot;There are X articles in this category&amp;quot; means.&lt;br /&gt;
:::Hmm... seems it stops ignoring case when you start moving about (compare [http://wikiti.denglend.net/index.php?title=Category:83Plus:BCALLs:By_Name], [http://wikiti.denglend.net/index.php?title=Category:83Plus:BCALLs:By_Name&amp;amp;until=ZeroToCertificate].) [[User:FloppusMaximus|FloppusMaximus]] 06:25, 8 Dec 2005 (PST)&lt;br /&gt;
:::: Ah.  Well I changed the category limit to 400 because it was pissing me off --Dan&lt;br /&gt;
::::Probably because JMan only hacked the one part of the script. :) [[User:AndyJ|Andy Janata]] 04:46, 12 Dec 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Is there a list of romcalls that are not officially listed in ti83plus.inc?--[[User:Jim e|Jim e]] 13:36, 13 Feb 2006 (PST)&lt;br /&gt;
:Not that I know of, but that wouldn't be a bad idea for another category (or two -- documented and undocumented. I would say by name only to keep category counts down)... [[User:AndyJ|Andy Janata]] 13:44, 13 Feb 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
::I don't see that we need more categories.  What we've been doing -- distinguishing on the page itself between &amp;quot;Official&amp;quot; and &amp;quot;Unofficial&amp;quot; names -- should suffice for people who actually care about such things.  It might be worth adding a template, perhaps, to say &amp;quot;This routine is documented in the {SDK guide | System Routines Documentation | Silver Edition Addendum | AppGuru | Dan's Undocumented Page}&amp;quot; with an appropriate link.  (Speaking of which, [http://web.archive.org/web/*/http://education.ti.com/us/resources/developer/83/download/unsupported.html the last] seems to have been lost in the latest reorganization... Dan, could you put those PDFs back up somewhere?)  But anyway, it's worth noting that the official documentation is often misleading and occasionally wrong, so &amp;quot;official&amp;quot; does not necessarily imply &amp;quot;better.&amp;quot; [[User:FloppusMaximus|FloppusMaximus]] 14:34, 13 Feb 2006 (PST)&lt;br /&gt;
:::I actually don't have the docs in PDF format.  I wrote them in .doc format, and TI converted them to PDF.  Does anyone have the PDFs?  I don't have acrobat, so converting them may be annoying.  --Dan&lt;br /&gt;
::::I happened to find my wget-ed copy of the PDFs on TI's site ([[User:CalcKing|CalcKing]] might have a copy too) which I d/l after asking for your permission to 'copy them' to WikiTI (I began with [[83Plus:OS:Edit_Buffers]], but never finished the others -_-).  How should I send them to you? [[User:Gambit|Gambit]] 19:44, 17 Feb 2006 (PST)&lt;br /&gt;
:::::If you'd like to either upload them somewhere or email them to tideletedmywebpage@mail.denglend.net I'll upload the pdfs to the wiki. Thanks.  --Dan&lt;br /&gt;
::::::The PDFs are now available [http://wikiti.denglend.net/stuff/unsupage here].  It would be better if they were added to the wiki itself, but it's better than nothing for now. --[[User:Dan Englender|Dan Englender]] 12:58, 20 Feb 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
:There's a file I have called romcalls83.txt -- completely misnamed, as it primarily involves Flash, B_CALLs, and the 83+, and is an assembly include file, not plain text -- which has vaguely official-sounding names for a number of undocumented routines, and one-line descriptions for some of them.  It runs up through OS 1.13, though it is missing a lot near the end.  Its introduction states:&lt;br /&gt;
 ;i've compiled this list of romcalls from several different includes... sometimes trying to match up similarities between&lt;br /&gt;
 ;different calcs.  this is what i came up with... there are still romcalls not listed here which are new to the 83+.&lt;br /&gt;
 ;i could not test each romcall individually so the ones i have not tried yet are commented out and due to the fact these&lt;br /&gt;
 ;equates are only my best guess.  have fun!&lt;br /&gt;
:I honestly don't remember where or when I got it or who wrote it -- it certainly wasn't me, and Google doesn't know it.  Perhaps it was on the old TCPA site?  Anyway, if its author is still around and gives permission I'll be happy to distribute it, since it's useful information and seems to have vanished off the face of the earth.&lt;br /&gt;
:Apart from that... obviously you can see what B_CALL ''addresses'' aren't documented.  As far as I know no official names beyond ti83plus.inc (and of course, ti83asm.inc, squish.inc, and ti86*.inc) have ever been published by TI, though some people seem to know more than they're telling... [[User:FloppusMaximus|FloppusMaximus]] 14:16, 13 Feb 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
::Yeah, I believe vortx (a.k.a. Brandon Sterner) compiled that list.  In fact, it's hosted on the DS server - would it be OK if I posted a link to it? [[User:Gambit|Gambit]] 15:06, 13 Feb 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
This page needs to be fixed to show the names rather than address on the bcalls.--[[User:TheStorm|TheStorm]] 02:42, 18 February 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Category_talk:83Plus:BCALLs:By_Name</id>
		<title>Category talk:83Plus:BCALLs:By Name</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Category_talk:83Plus:BCALLs:By_Name"/>
				<updated>2009-02-18T02:42:38Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Why are there 180 items in this category and 183 items in the &amp;quot;by address&amp;quot; category?&lt;br /&gt;
&lt;br /&gt;
:Hey, that's only 1.6 percent... not bad!  Because the letter Z ([[83Plus:BCALLs:4A65]], [[83Plus:BCALLs:4A68]], [[83Plus:BCALLs:802A]]) does not exist.  Administrators?  Are we missing anything else?  [[User:FloppusMaximus|FloppusMaximus]] 17:37, 7 Dec 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
::It only shows 200 ''items'' per page. This includes subcategories. Click the '''(next 200)''' link. [[User:AndyJ|Andy Janata]] 04:41, 8 Dec 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
:::That makes a lot of sense.  Clearly, we have failed to comprehend what &amp;quot;There are X articles in this category&amp;quot; means.&lt;br /&gt;
:::Hmm... seems it stops ignoring case when you start moving about (compare [http://wikiti.denglend.net/index.php?title=Category:83Plus:BCALLs:By_Name], [http://wikiti.denglend.net/index.php?title=Category:83Plus:BCALLs:By_Name&amp;amp;until=ZeroToCertificate].) [[User:FloppusMaximus|FloppusMaximus]] 06:25, 8 Dec 2005 (PST)&lt;br /&gt;
:::: Ah.  Well I changed the category limit to 400 because it was pissing me off --Dan&lt;br /&gt;
::::Probably because JMan only hacked the one part of the script. :) [[User:AndyJ|Andy Janata]] 04:46, 12 Dec 2005 (PST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Is there a list of romcalls that are not officially listed in ti83plus.inc?--[[User:Jim e|Jim e]] 13:36, 13 Feb 2006 (PST)&lt;br /&gt;
:Not that I know of, but that wouldn't be a bad idea for another category (or two -- documented and undocumented. I would say by name only to keep category counts down)... [[User:AndyJ|Andy Janata]] 13:44, 13 Feb 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
::I don't see that we need more categories.  What we've been doing -- distinguishing on the page itself between &amp;quot;Official&amp;quot; and &amp;quot;Unofficial&amp;quot; names -- should suffice for people who actually care about such things.  It might be worth adding a template, perhaps, to say &amp;quot;This routine is documented in the {SDK guide | System Routines Documentation | Silver Edition Addendum | AppGuru | Dan's Undocumented Page}&amp;quot; with an appropriate link.  (Speaking of which, [http://web.archive.org/web/*/http://education.ti.com/us/resources/developer/83/download/unsupported.html the last] seems to have been lost in the latest reorganization... Dan, could you put those PDFs back up somewhere?)  But anyway, it's worth noting that the official documentation is often misleading and occasionally wrong, so &amp;quot;official&amp;quot; does not necessarily imply &amp;quot;better.&amp;quot; [[User:FloppusMaximus|FloppusMaximus]] 14:34, 13 Feb 2006 (PST)&lt;br /&gt;
:::I actually don't have the docs in PDF format.  I wrote them in .doc format, and TI converted them to PDF.  Does anyone have the PDFs?  I don't have acrobat, so converting them may be annoying.  --Dan&lt;br /&gt;
::::I happened to find my wget-ed copy of the PDFs on TI's site ([[User:CalcKing|CalcKing]] might have a copy too) which I d/l after asking for your permission to 'copy them' to WikiTI (I began with [[83Plus:OS:Edit_Buffers]], but never finished the others -_-).  How should I send them to you? [[User:Gambit|Gambit]] 19:44, 17 Feb 2006 (PST)&lt;br /&gt;
:::::If you'd like to either upload them somewhere or email them to tideletedmywebpage@mail.denglend.net I'll upload the pdfs to the wiki. Thanks.  --Dan&lt;br /&gt;
::::::The PDFs are now available [http://wikiti.denglend.net/stuff/unsupage here].  It would be better if they were added to the wiki itself, but it's better than nothing for now. --[[User:Dan Englender|Dan Englender]] 12:58, 20 Feb 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
:There's a file I have called romcalls83.txt -- completely misnamed, as it primarily involves Flash, B_CALLs, and the 83+, and is an assembly include file, not plain text -- which has vaguely official-sounding names for a number of undocumented routines, and one-line descriptions for some of them.  It runs up through OS 1.13, though it is missing a lot near the end.  Its introduction states:&lt;br /&gt;
 ;i've compiled this list of romcalls from several different includes... sometimes trying to match up similarities between&lt;br /&gt;
 ;different calcs.  this is what i came up with... there are still romcalls not listed here which are new to the 83+.&lt;br /&gt;
 ;i could not test each romcall individually so the ones i have not tried yet are commented out and due to the fact these&lt;br /&gt;
 ;equates are only my best guess.  have fun!&lt;br /&gt;
:I honestly don't remember where or when I got it or who wrote it -- it certainly wasn't me, and Google doesn't know it.  Perhaps it was on the old TCPA site?  Anyway, if its author is still around and gives permission I'll be happy to distribute it, since it's useful information and seems to have vanished off the face of the earth.&lt;br /&gt;
:Apart from that... obviously you can see what B_CALL ''addresses'' aren't documented.  As far as I know no official names beyond ti83plus.inc (and of course, ti83asm.inc, squish.inc, and ti86*.inc) have ever been published by TI, though some people seem to know more than they're telling... [[User:FloppusMaximus|FloppusMaximus]] 14:16, 13 Feb 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
::Yeah, I believe vortx (a.k.a. Brandon Sterner) compiled that list.  In fact, it's hosted on the DS server - would it be OK if I posted a link to it? [[User:Gambit|Gambit]] 15:06, 13 Feb 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
This page needs t be fixed to show the names rather than address on the bcalls.--[[User:TheStorm|TheStorm]] 02:42, 18 February 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:Software:usb8x</id>
		<title>83Plus:Software:usb8x</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:Software:usb8x"/>
				<updated>2009-02-18T02:39:48Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;usb8x is a free, open source application for the TI-84 Plus calculators.  It combines a low level driver to support  the calculator's USB port with a limited selection of device drivers.  It is designed with two goals in mind:  First, to allow programmers to create external applications/programs that use USB devices without any knowledge of the low-level workings of those devices or the USB port itself.  Second, to allow programmers to create additional drivers for other USB hardware not currently supported natively in usb8x.&lt;br /&gt;
&lt;br /&gt;
The current release version of usb8x is '''0.12'''.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===New Users===&lt;br /&gt;
* [http://sourceforge.net/project/showfiles.php?group_id=143628 Download]&lt;br /&gt;
* [[83Plus:Software:usb8x/Install|Installation Instructions]]&lt;br /&gt;
* [[83Plus:Software:usb8x/FAQ|Frequently Asked Questions]]&lt;br /&gt;
* [[83Plus:Software:usb8x/Supported_Devices|Supported Devices]]&lt;br /&gt;
* [[83Plus:Software:usb8x/Changelog|Version History]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Programmer Documentation===&lt;br /&gt;
* [[83Plus:Software:usb8x/Build|Build Instructions]]&lt;br /&gt;
* [[83Plus:Software:usb8x/Asm_Interface|Assembly language interface]]&lt;br /&gt;
* [[83Plus:Software:usb8x/BASIC_Interface|BASIC language interface]]&lt;br /&gt;
* [[83Plus:Software:usb8x/Sample_Code|Code Examples]]&lt;br /&gt;
* [[83Plus:Software:usb8x/Error_Codes|Error codes]]&lt;br /&gt;
&lt;br /&gt;
[[Category:83Plus:Software|usb8x]]&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Category:86:RAM</id>
		<title>Category:86:RAM</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Category:86:RAM"/>
				<updated>2009-01-31T03:52:42Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: New page: RAM Areas  Please read our page on Contributing before editing these pages!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:86|RAM Areas]]&lt;br /&gt;
&lt;br /&gt;
Please read our page on [[Contributing]] before editing these pages!&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Category:86:RAM:By_Address</id>
		<title>Category:86:RAM:By Address</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Category:86:RAM:By_Address"/>
				<updated>2009-01-31T03:52:20Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: New page: RAM Areas by Address  See also list of RAM areas by name.  Please read our page on Contributing before editing these pages!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:86:RAM|RAM Areas by Address]]&lt;br /&gt;
&lt;br /&gt;
See also [[:Category:86:RAM:By Name|list of RAM areas by name]].&lt;br /&gt;
&lt;br /&gt;
Please read our page on [[Contributing]] before editing these pages!&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Category:86:RAM:By_Name</id>
		<title>Category:86:RAM:By Name</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Category:86:RAM:By_Name"/>
				<updated>2009-01-31T03:51:59Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: New page: RAM Areas by Name  See also list of RAM areas by address.  Please read our page on Contributing before editing these pages!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:86:RAM|RAM Areas by Name]]&lt;br /&gt;
&lt;br /&gt;
See also [[:Category:86:RAM:By Address|list of RAM areas by address]].&lt;br /&gt;
&lt;br /&gt;
Please read our page on [[Contributing]] before editing these pages!&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Category:86:Ports:By_Name</id>
		<title>Category:86:Ports:By Name</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Category:86:Ports:By_Name"/>
				<updated>2009-01-31T03:50:58Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: New page: Ports by Name  See also list of ports by address/number.  Please read our page on Contributing before editing these pages!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:86:Ports|Ports by Name]]&lt;br /&gt;
&lt;br /&gt;
See also [[:Category:86:Ports:By Address|list of ports by address/number]].&lt;br /&gt;
&lt;br /&gt;
Please read our page on [[Contributing]] before editing these pages!&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Category:86:Ports</id>
		<title>Category:86:Ports</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Category:86:Ports"/>
				<updated>2009-01-31T03:50:28Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: New page: Ports  Please read our page on Contributing before editing these pages!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:86|Ports]]&lt;br /&gt;
&lt;br /&gt;
Please read our page on [[Contributing]] before editing these pages!&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Category:86:Ports:By_Address</id>
		<title>Category:86:Ports:By Address</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Category:86:Ports:By_Address"/>
				<updated>2009-01-31T03:50:07Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: New page: Ports by Address/Number  See also list of ports by name.  Please read our page on Contributing before editing these pages!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:86:Ports|Ports by Address/Number]]&lt;br /&gt;
&lt;br /&gt;
See also [[:Category:86:Ports:By Name|list of ports by name]].&lt;br /&gt;
&lt;br /&gt;
Please read our page on [[Contributing]] before editing these pages!&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Category:86:OS_Information</id>
		<title>Category:86:OS Information</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Category:86:OS_Information"/>
				<updated>2009-01-31T03:49:34Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: New page: OS Information This is the central location for generic documentation on the TI-86. Here you should cover things like the system monitor, using edit buffers, etc.  Please r...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:86|OS Information]]&lt;br /&gt;
This is the central location for generic documentation on the TI-86. Here you should cover things like the system monitor, using edit buffers, etc.&lt;br /&gt;
&lt;br /&gt;
Please read our page on [[Contributing]] before editing these pages!&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Category:86:Flags:By_Address</id>
		<title>Category:86:Flags:By Address</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Category:86:Flags:By_Address"/>
				<updated>2009-01-31T03:48:27Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: New page: System Flags by Address/Offset See also list of system flags by name.  Please read our page on Contributing before editing these pa...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:86:Flags|System Flags by Address/Offset]]&lt;br /&gt;
See also [[:Category:86:Flags:By Name|list of system flags by name]].&lt;br /&gt;
&lt;br /&gt;
Please read our page on [[Contributing]] before editing these pages!&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Category:86:Flags</id>
		<title>Category:86:Flags</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Category:86:Flags"/>
				<updated>2009-01-31T03:47:37Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: New page: System Flags Please read our page on Contributing before editing these pages!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83|System Flags]]&lt;br /&gt;
Please read our page on [[Contributing]] before editing these pages!&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Category:86:Flags:By_Name</id>
		<title>Category:86:Flags:By Name</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Category:86:Flags:By_Name"/>
				<updated>2009-01-31T03:47:14Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: New page: System Flags by Name See also list of system flags by address/offset.  Please read our page on Contributing before editing these...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:86:Flags|System Flags by Name]]&lt;br /&gt;
See also [[:Category:86:Flags:By Address|list of system flags by address/offset]].&lt;br /&gt;
&lt;br /&gt;
Please read our page on [[Contributing]] before editing these pages!&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Category:86:ROMCalls:By_Address</id>
		<title>Category:86:ROMCalls:By Address</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Category:86:ROMCalls:By_Address"/>
				<updated>2009-01-31T03:46:10Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: New page: System Calls by Address This is a list of all 86 System Calls, sorted by address.  See also list of system calls by name.  Please...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:86:ROMCalls|System Calls by Address]]&lt;br /&gt;
This is a list of all 86 System Calls, sorted by address.&lt;br /&gt;
&lt;br /&gt;
See also [[:Category:86:ROMCalls:By_Name|list of system calls by name]].&lt;br /&gt;
&lt;br /&gt;
Please read our page on [[Contributing]] before editing these pages!&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Category:86</id>
		<title>Category:86</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Category:86"/>
				<updated>2009-01-31T03:45:01Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: New page: TI-86 Documentation  This Category contains documentation specific to the TI-86.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Calculator Documentation|TI-86 Documentation]]&lt;br /&gt;
&lt;br /&gt;
This Category contains documentation specific to the TI-86.&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Category:86:ROMCalls</id>
		<title>Category:86:ROMCalls</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Category:86:ROMCalls"/>
				<updated>2009-01-31T03:44:10Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: New page: System Calls (ROMCalls) This is a list of documented and undocumented system calls on the TI-86.  Please read our page on Contributing before editing these pages!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:86|System Calls (ROMCalls)]]&lt;br /&gt;
This is a list of documented and undocumented system calls on the TI-86.&lt;br /&gt;
&lt;br /&gt;
Please read our page on [[Contributing]] before editing these pages!&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Category:86:ROMCalls:By_Name</id>
		<title>Category:86:ROMCalls:By Name</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Category:86:ROMCalls:By_Name"/>
				<updated>2009-01-31T03:43:08Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: New page: System Calls by Name This is a list of all 86 System Calls, sorted by name.  See also list of system calls by address.  Please...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:86:ROMCalls|System Calls by Name]]&lt;br /&gt;
This is a list of all 86 System Calls, sorted by name.&lt;br /&gt;
&lt;br /&gt;
See also [[:Category:86:ROMCalls:By_Address|list of system calls by address]].&lt;br /&gt;
&lt;br /&gt;
Please read our page on [[Contributing]] before editing these pages!&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Calculator_Documentation</id>
		<title>Calculator Documentation</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Calculator_Documentation"/>
				<updated>2009-01-31T03:42:15Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== TI-83 (Regular) ==&lt;br /&gt;
&lt;br /&gt;
* [[:Category:83:ROMCalls:By_Name|ROMCalls (System Entrypoints)]]&lt;br /&gt;
* [[:Category:83:Flags:By_Name|Flags]]&lt;br /&gt;
* [[:Category:83:OS_Information|General OS Documentation]]&lt;br /&gt;
* [[:Category:83:Ports:By_Address|Ports]]&lt;br /&gt;
* [[:Category:83:RAM:By_Name|RAM Areas]]&lt;br /&gt;
&lt;br /&gt;
== TI-83 Plus Family ==&lt;br /&gt;
&lt;br /&gt;
* [[:Category:83Plus:BCALLs:By_Name|B_CALLs (System Entrypoints)]]&lt;br /&gt;
* [[:Category:83Plus:Flags:By_Name|Flags]]&lt;br /&gt;
* [[:Category:83Plus:OS_Information|General OS Documentation]]&lt;br /&gt;
* [[:Category:83Plus:Hooks:By_Name|Hooks]]&lt;br /&gt;
* [[:Category:83Plus:Ports:By_Address|Ports]]&lt;br /&gt;
* [[:Category:83Plus:RAM:By_Name|RAM Areas]]&lt;br /&gt;
* [[:Category:83Plus:Software|Software Documentation]]&lt;br /&gt;
* [[:Category:83Plus:Basic|TI-83+ Basic]]&lt;br /&gt;
&lt;br /&gt;
== TI-86 ==&lt;br /&gt;
&lt;br /&gt;
* [[:Category:86:ROMCalls:By_Name|ROMCalls (System Entrypoints)]]&lt;br /&gt;
* [[:Category:86:Flags:By_Name|Flags]]&lt;br /&gt;
* [[:Category:86:OS_Information|General OS Documentation]]&lt;br /&gt;
* [[:Category:86:Ports:By_Address|Ports]]&lt;br /&gt;
* [[:Category:86:RAM:By_Name|RAM Areas]]&lt;br /&gt;
&lt;br /&gt;
== M68K Family ==&lt;br /&gt;
&lt;br /&gt;
* [[:Category:68k:Ports:By_Address|Ports]]&lt;br /&gt;
&lt;br /&gt;
== Z80 programming ==&lt;br /&gt;
* [[Meta-tutorial]]&lt;br /&gt;
* [[:Category:Z80_Routines|Z80 Routines]]&lt;br /&gt;
* [[Z80 Instruction Set]]&lt;br /&gt;
* [[Good programming practices]]&lt;br /&gt;
* [[Programming under Unix-like operating systems]]&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
* [[Notable programs]]&lt;br /&gt;
* [[:Category:Emulators|Emulators]]&lt;br /&gt;
* [[83Plus:OS:TIOS Alternatives|TIOS Alternatives]]&lt;br /&gt;
* [[Experiments]]&lt;br /&gt;
&lt;br /&gt;
== Linking ==&lt;br /&gt;
* [[Link cables]]&lt;br /&gt;
&lt;br /&gt;
== TI Community ==&lt;br /&gt;
&lt;br /&gt;
* [[Beginners|Beginners' manual]]&lt;br /&gt;
* [[History of the TI Z80 community]]&lt;br /&gt;
* [[:Category:Teams|Programming Teams]]&lt;br /&gt;
* [[TI websites]]&lt;br /&gt;
&lt;br /&gt;
== Contributing ==&lt;br /&gt;
&lt;br /&gt;
Please read our page on [[Contributing]] before you start contributing to WikiTI.&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:OS:Dialog_context</id>
		<title>83Plus:OS:Dialog context</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:OS:Dialog_context"/>
				<updated>2009-01-31T03:27:59Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:OS_Information|Dialog context]]&lt;br /&gt;
This Documentation is for use with the [[:Category:83Plus:BCALLs:By_Name:Dialog|Dialog BCALLS]].&lt;br /&gt;
&lt;br /&gt;
== General Info ==&lt;br /&gt;
To start this context, load a menu structure* to ramCode/[[83Plus:RAM:8000|appData]], BCALL [[83Plus:BCALLs:4C06|DialogInit]] and then BCALL [[83Plus:BCALLs:4C03|StartDialog]].&lt;br /&gt;
You choose whether the run indicator is displayed and whether contexts are allowed (appAllowContext,(iy+appFlags)).&lt;br /&gt;
It is imperative that (cxCurApp) be one of the allowed values (use 58h=kExtApps).&lt;br /&gt;
&lt;br /&gt;
If kSolveRoot (SOLVE EDITOR), kStatEd (list editor), or kInfStat (inferential statistic editor) are pressed, the entire screen is redrawn and then the parser callback is called with A=1.&lt;br /&gt;
&lt;br /&gt;
If [UP], [DOWN], or [ENTER] are pressed, any entered number is parsed*.&lt;br /&gt;
&lt;br /&gt;
If [2nd]+[QUIT] is pressed, whatever has been entered will be parsed* (no errors thrown nor anything displayed) to OP1, the previous context vectors are restored, SP is restored from (spSave), and the run indicator is turned off.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Parsing the number ==&lt;br /&gt;
ParseInp is called on the data entered, and OP1 is checked to make sure it is REAL (error thrown if not (and this may return to the edit)).&lt;br /&gt;
A=0 is passed to the parser callback. B (8006h) is the index into a prompt structure (probably bID = 3). It is expected to return a value in A. Return zero to display the current line (string and number).&lt;br /&gt;
It also copies the number in OP1 to the spot bNumIndex points to. If 0,(iy+2Eh) is set, the rest of the line is not erased (then NewLine).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Menu structure ==&lt;br /&gt;
Load as many of these structures, one after the other (zero-terminated), to ramCode/[[83Plus:RAM:8000|appData]] in the order you want it displayed.&lt;br /&gt;
Store the length-indexed strings in RAM as well (right after this structure, in ramCode/[[83Plus:RAM:8000|appData]]).&lt;br /&gt;
&lt;br /&gt;
bID can be from 1-6:&lt;br /&gt;
bID = 1: display string (cannot select).&lt;br /&gt;
bID = 2: display highlightable choices (as in the MODE context). A byte table at 8009h has to do  with what is selected here.&lt;br /&gt;
bID = 3: display prompt string and number.&lt;br /&gt;
bID = 4: display highlightable string.&lt;br /&gt;
bID = 5: display menu number (ex. &amp;quot;1:&amp;quot;) and prompt string.&lt;br /&gt;
bID = 6: hidden, skip displaying this entry.&lt;br /&gt;
&lt;br /&gt;
=== Prompt structure when bID = 1 ===&lt;br /&gt;
        DB bID             ;&lt;br /&gt;
        DB bNumChoices     ;probably always 1&lt;br /&gt;
        DB bUnknown        ;&lt;br /&gt;
        DW wStringOffset   ;offset from start of ramCode&lt;br /&gt;
&lt;br /&gt;
=== Prompt structure when bID = 2 ===&lt;br /&gt;
        DB bID             ;&lt;br /&gt;
        DB bNumChoices     ;&lt;br /&gt;
        DB bUnknown        ;I think this is the number of rows to skip for next item, or something&lt;br /&gt;
        DW wStringOffset   ;offset from start of ramCode                        /&lt;br /&gt;
        DB bColumn         ;column to display string (this is probably ignored) \ There are bNumChoices of these.&lt;br /&gt;
&lt;br /&gt;
=== Prompt structure when bID = 3 ===&lt;br /&gt;
        DB bID             ;&lt;br /&gt;
        DB bNumChoices     ;probably always 1&lt;br /&gt;
        DB bNumIndex       ;&lt;br /&gt;
        DW wStringOffset   ;offset from start of ramCode&lt;br /&gt;
&lt;br /&gt;
=== Prompt structure when bID = 4 ===&lt;br /&gt;
        DB bID             ;&lt;br /&gt;
        DB bNumChoices     ;probably always 1&lt;br /&gt;
        DB bUnknown        ;&lt;br /&gt;
        DW wStringOffset   ;offset from start of ramCode&lt;br /&gt;
&lt;br /&gt;
=== Prompt structure when bID = 5 ===&lt;br /&gt;
        DB bID             ;&lt;br /&gt;
        DB bNumEntries     ;probably always 1&lt;br /&gt;
        DB bMenuItemNum    ;1 for &amp;quot;1:&amp;quot;, 2 for &amp;quot;2:&amp;quot;, etc.&lt;br /&gt;
        DW wStringOffset   ;offset from start of ramCode&lt;br /&gt;
&lt;br /&gt;
=== Prompt structure when bID = 6 ===&lt;br /&gt;
        DB bID             ;&lt;br /&gt;
        DB bNumChoices     ;&lt;br /&gt;
        DB bUnknown        ;&lt;br /&gt;
        DW wStringOffset   ;offset from start of ramCode &amp;lt; There are bNumChoices of these.&lt;br /&gt;
&lt;br /&gt;
8038h: bNumIndex above is an offset into a list of floating-point numbers:&lt;br /&gt;
        DB 00h,80h,00h,00h,00h,00h,00h,00h,00h&lt;br /&gt;
== Examples ==&lt;br /&gt;
=== Example Code ===&lt;br /&gt;
 hookBackup              equ     appBackUpScreen&lt;br /&gt;
 .db 0BBh,6Dh&lt;br /&gt;
        ld hl,rawKeyHookPtr&lt;br /&gt;
        ld de,hookBackup&lt;br /&gt;
        ld bc,4&lt;br /&gt;
        ldir&lt;br /&gt;
        ld a,(flags+34h)&lt;br /&gt;
        ld (de),a&lt;br /&gt;
        ld a,(cxCurApp)&lt;br /&gt;
        push af&lt;br /&gt;
        ld a,58h&lt;br /&gt;
        ld (cxCurApp),a&lt;br /&gt;
        ld hl,structStart&lt;br /&gt;
        ld de,ramCode&lt;br /&gt;
        ld bc,structEnd-structStart&lt;br /&gt;
        ldir&lt;br /&gt;
        ld hl,dialogCallback&lt;br /&gt;
        in a,(6)&lt;br /&gt;
        bcall(_DialogInit)&lt;br /&gt;
        bcall(_runIndicOff)&lt;br /&gt;
        bcall(_StartDialog)&lt;br /&gt;
        bcall(_cursorOff)&lt;br /&gt;
        bcall(_clrLCDFull)&lt;br /&gt;
        res appCurWord,(iy+appFlags)&lt;br /&gt;
        bcall(_ClrTxtShd)&lt;br /&gt;
        ld hl,cmdShadow&lt;br /&gt;
        ld de,cmdShadow+1&lt;br /&gt;
        ld (hl),' '&lt;br /&gt;
        ld bc,127&lt;br /&gt;
        ldir&lt;br /&gt;
        pop af&lt;br /&gt;
        ld (cxCurApp),a&lt;br /&gt;
        ld hl,hookBackup&lt;br /&gt;
        ld de,rawKeyHookPtr&lt;br /&gt;
        ld bc,4&lt;br /&gt;
        ldir&lt;br /&gt;
        ld a,(hl)&lt;br /&gt;
        ld (flags+34h),a&lt;br /&gt;
        xor a&lt;br /&gt;
        bcall(_GetDialogNumOP1)&lt;br /&gt;
        ld hl,0&lt;br /&gt;
        ld (penCol),hl&lt;br /&gt;
        ld a,9&lt;br /&gt;
        bcall(_DispOP1a)&lt;br /&gt;
 dialogCallback:&lt;br /&gt;
        xor a&lt;br /&gt;
        ret&lt;br /&gt;
 structStart:&lt;br /&gt;
        ;put your dialog data here&lt;br /&gt;
 structEnd:&lt;br /&gt;
=== Example Table ===&lt;br /&gt;
 structStart:&lt;br /&gt;
        .db 1&lt;br /&gt;
        .db 1&lt;br /&gt;
        .db 1&lt;br /&gt;
        .dw sOptions-structStart&lt;br /&gt;
        .db 5&lt;br /&gt;
        .db 1&lt;br /&gt;
        .db 1&lt;br /&gt;
        .dw sItem1-structStart&lt;br /&gt;
        .db 5&lt;br /&gt;
        .db 1&lt;br /&gt;
        .db 2&lt;br /&gt;
        .dw sItem2-structStart&lt;br /&gt;
        .db 2&lt;br /&gt;
        .db 3&lt;br /&gt;
        .db 1&lt;br /&gt;
        .dw sSelect-structStart&lt;br /&gt;
        .dw sOpt1-structStart&lt;br /&gt;
        .dw sOpt2-structStart&lt;br /&gt;
        .db 3&lt;br /&gt;
        .db 1&lt;br /&gt;
        .db 0&lt;br /&gt;
        .dw sNum-structStart&lt;br /&gt;
        .db 4&lt;br /&gt;
        .db 1&lt;br /&gt;
        .db 1&lt;br /&gt;
        .dw sDone-structStart&lt;br /&gt;
        .db 0&lt;br /&gt;
 sOptions:&lt;br /&gt;
        .db 7,&amp;quot;OPTIONS&amp;quot;&lt;br /&gt;
 sItem1: .db 5,&amp;quot;Item1&amp;quot;&lt;br /&gt;
 sItem2: .db 5,&amp;quot;Item2&amp;quot;&lt;br /&gt;
 sSelect:&lt;br /&gt;
        .db 6,&amp;quot;Opts: &amp;quot;&lt;br /&gt;
 sOpt1:  .db 4,&amp;quot;Opt1&amp;quot;&lt;br /&gt;
 sOpt2:  .db 4,&amp;quot;Opt2&amp;quot;&lt;br /&gt;
 sNum:   .db 4,&amp;quot;Num=&amp;quot;&lt;br /&gt;
 sDone:  .db 4,&amp;quot;Done&amp;quot;&lt;br /&gt;
 structEnd:&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
* Thanks to BrandonW for finding out all this info on the dialog BCALLs and for the example code, though apparently Detached Solutions knew it all along.&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:OS:Dialog_context</id>
		<title>83Plus:OS:Dialog context</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:OS:Dialog_context"/>
				<updated>2009-01-31T03:27:47Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:OS_Information|Dialog context]]&lt;br /&gt;
This Documentation is for use with the [[:Category:83Plus:BCALLs:By_Name:Dialog|Dialog BCALLS]].&lt;br /&gt;
&lt;br /&gt;
== General Info ==&lt;br /&gt;
To start this context, load a menu structure* to ramCode/[[83Plus:RAM:8000|appData]], BCALL [[83Plus:BCALLs:4C06|DialogInit]] and then BCALL [[83Plus:BCALLs:4C03|StartDialog]].&lt;br /&gt;
You choose whether the run indicator is displayed and whether contexts are allowed (appAllowContext,(iy+appFlags)).&lt;br /&gt;
It is imperative that (cxCurApp) be one of the allowed value s (use 58h=kExtApps).&lt;br /&gt;
&lt;br /&gt;
If kSolveRoot (SOLVE EDITOR), kStatEd (list editor), or kInfStat (inferential statistic editor) are pressed, the entire screen is redrawn and then the parser callback is called with A=1.&lt;br /&gt;
&lt;br /&gt;
If [UP], [DOWN], or [ENTER] are pressed, any entered number is parsed*.&lt;br /&gt;
&lt;br /&gt;
If [2nd]+[QUIT] is pressed, whatever has been entered will be parsed* (no errors thrown nor anything displayed) to OP1, the previous context vectors are restored, SP is restored from (spSave), and the run indicator is turned off.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Parsing the number ==&lt;br /&gt;
ParseInp is called on the data entered, and OP1 is checked to make sure it is REAL (error thrown if not (and this may return to the edit)).&lt;br /&gt;
A=0 is passed to the parser callback. B (8006h) is the index into a prompt structure (probably bID = 3). It is expected to return a value in A. Return zero to display the current line (string and number).&lt;br /&gt;
It also copies the number in OP1 to the spot bNumIndex points to. If 0,(iy+2Eh) is set, the rest of the line is not erased (then NewLine).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Menu structure ==&lt;br /&gt;
Load as many of these structures, one after the other (zero-terminated), to ramCode/[[83Plus:RAM:8000|appData]] in the order you want it displayed.&lt;br /&gt;
Store the length-indexed strings in RAM as well (right after this structure, in ramCode/[[83Plus:RAM:8000|appData]]).&lt;br /&gt;
&lt;br /&gt;
bID can be from 1-6:&lt;br /&gt;
bID = 1: display string (cannot select).&lt;br /&gt;
bID = 2: display highlightable choices (as in the MODE context). A byte table at 8009h has to do  with what is selected here.&lt;br /&gt;
bID = 3: display prompt string and number.&lt;br /&gt;
bID = 4: display highlightable string.&lt;br /&gt;
bID = 5: display menu number (ex. &amp;quot;1:&amp;quot;) and prompt string.&lt;br /&gt;
bID = 6: hidden, skip displaying this entry.&lt;br /&gt;
&lt;br /&gt;
=== Prompt structure when bID = 1 ===&lt;br /&gt;
        DB bID             ;&lt;br /&gt;
        DB bNumChoices     ;probably always 1&lt;br /&gt;
        DB bUnknown        ;&lt;br /&gt;
        DW wStringOffset   ;offset from start of ramCode&lt;br /&gt;
&lt;br /&gt;
=== Prompt structure when bID = 2 ===&lt;br /&gt;
        DB bID             ;&lt;br /&gt;
        DB bNumChoices     ;&lt;br /&gt;
        DB bUnknown        ;I think this is the number of rows to skip for next item, or something&lt;br /&gt;
        DW wStringOffset   ;offset from start of ramCode                        /&lt;br /&gt;
        DB bColumn         ;column to display string (this is probably ignored) \ There are bNumChoices of these.&lt;br /&gt;
&lt;br /&gt;
=== Prompt structure when bID = 3 ===&lt;br /&gt;
        DB bID             ;&lt;br /&gt;
        DB bNumChoices     ;probably always 1&lt;br /&gt;
        DB bNumIndex       ;&lt;br /&gt;
        DW wStringOffset   ;offset from start of ramCode&lt;br /&gt;
&lt;br /&gt;
=== Prompt structure when bID = 4 ===&lt;br /&gt;
        DB bID             ;&lt;br /&gt;
        DB bNumChoices     ;probably always 1&lt;br /&gt;
        DB bUnknown        ;&lt;br /&gt;
        DW wStringOffset   ;offset from start of ramCode&lt;br /&gt;
&lt;br /&gt;
=== Prompt structure when bID = 5 ===&lt;br /&gt;
        DB bID             ;&lt;br /&gt;
        DB bNumEntries     ;probably always 1&lt;br /&gt;
        DB bMenuItemNum    ;1 for &amp;quot;1:&amp;quot;, 2 for &amp;quot;2:&amp;quot;, etc.&lt;br /&gt;
        DW wStringOffset   ;offset from start of ramCode&lt;br /&gt;
&lt;br /&gt;
=== Prompt structure when bID = 6 ===&lt;br /&gt;
        DB bID             ;&lt;br /&gt;
        DB bNumChoices     ;&lt;br /&gt;
        DB bUnknown        ;&lt;br /&gt;
        DW wStringOffset   ;offset from start of ramCode &amp;lt; There are bNumChoices of these.&lt;br /&gt;
&lt;br /&gt;
8038h: bNumIndex above is an offset into a list of floating-point numbers:&lt;br /&gt;
        DB 00h,80h,00h,00h,00h,00h,00h,00h,00h&lt;br /&gt;
== Examples ==&lt;br /&gt;
=== Example Code ===&lt;br /&gt;
 hookBackup              equ     appBackUpScreen&lt;br /&gt;
 .db 0BBh,6Dh&lt;br /&gt;
        ld hl,rawKeyHookPtr&lt;br /&gt;
        ld de,hookBackup&lt;br /&gt;
        ld bc,4&lt;br /&gt;
        ldir&lt;br /&gt;
        ld a,(flags+34h)&lt;br /&gt;
        ld (de),a&lt;br /&gt;
        ld a,(cxCurApp)&lt;br /&gt;
        push af&lt;br /&gt;
        ld a,58h&lt;br /&gt;
        ld (cxCurApp),a&lt;br /&gt;
        ld hl,structStart&lt;br /&gt;
        ld de,ramCode&lt;br /&gt;
        ld bc,structEnd-structStart&lt;br /&gt;
        ldir&lt;br /&gt;
        ld hl,dialogCallback&lt;br /&gt;
        in a,(6)&lt;br /&gt;
        bcall(_DialogInit)&lt;br /&gt;
        bcall(_runIndicOff)&lt;br /&gt;
        bcall(_StartDialog)&lt;br /&gt;
        bcall(_cursorOff)&lt;br /&gt;
        bcall(_clrLCDFull)&lt;br /&gt;
        res appCurWord,(iy+appFlags)&lt;br /&gt;
        bcall(_ClrTxtShd)&lt;br /&gt;
        ld hl,cmdShadow&lt;br /&gt;
        ld de,cmdShadow+1&lt;br /&gt;
        ld (hl),' '&lt;br /&gt;
        ld bc,127&lt;br /&gt;
        ldir&lt;br /&gt;
        pop af&lt;br /&gt;
        ld (cxCurApp),a&lt;br /&gt;
        ld hl,hookBackup&lt;br /&gt;
        ld de,rawKeyHookPtr&lt;br /&gt;
        ld bc,4&lt;br /&gt;
        ldir&lt;br /&gt;
        ld a,(hl)&lt;br /&gt;
        ld (flags+34h),a&lt;br /&gt;
        xor a&lt;br /&gt;
        bcall(_GetDialogNumOP1)&lt;br /&gt;
        ld hl,0&lt;br /&gt;
        ld (penCol),hl&lt;br /&gt;
        ld a,9&lt;br /&gt;
        bcall(_DispOP1a)&lt;br /&gt;
 dialogCallback:&lt;br /&gt;
        xor a&lt;br /&gt;
        ret&lt;br /&gt;
 structStart:&lt;br /&gt;
        ;put your dialog data here&lt;br /&gt;
 structEnd:&lt;br /&gt;
=== Example Table ===&lt;br /&gt;
 structStart:&lt;br /&gt;
        .db 1&lt;br /&gt;
        .db 1&lt;br /&gt;
        .db 1&lt;br /&gt;
        .dw sOptions-structStart&lt;br /&gt;
        .db 5&lt;br /&gt;
        .db 1&lt;br /&gt;
        .db 1&lt;br /&gt;
        .dw sItem1-structStart&lt;br /&gt;
        .db 5&lt;br /&gt;
        .db 1&lt;br /&gt;
        .db 2&lt;br /&gt;
        .dw sItem2-structStart&lt;br /&gt;
        .db 2&lt;br /&gt;
        .db 3&lt;br /&gt;
        .db 1&lt;br /&gt;
        .dw sSelect-structStart&lt;br /&gt;
        .dw sOpt1-structStart&lt;br /&gt;
        .dw sOpt2-structStart&lt;br /&gt;
        .db 3&lt;br /&gt;
        .db 1&lt;br /&gt;
        .db 0&lt;br /&gt;
        .dw sNum-structStart&lt;br /&gt;
        .db 4&lt;br /&gt;
        .db 1&lt;br /&gt;
        .db 1&lt;br /&gt;
        .dw sDone-structStart&lt;br /&gt;
        .db 0&lt;br /&gt;
 sOptions:&lt;br /&gt;
        .db 7,&amp;quot;OPTIONS&amp;quot;&lt;br /&gt;
 sItem1: .db 5,&amp;quot;Item1&amp;quot;&lt;br /&gt;
 sItem2: .db 5,&amp;quot;Item2&amp;quot;&lt;br /&gt;
 sSelect:&lt;br /&gt;
        .db 6,&amp;quot;Opts: &amp;quot;&lt;br /&gt;
 sOpt1:  .db 4,&amp;quot;Opt1&amp;quot;&lt;br /&gt;
 sOpt2:  .db 4,&amp;quot;Opt2&amp;quot;&lt;br /&gt;
 sNum:   .db 4,&amp;quot;Num=&amp;quot;&lt;br /&gt;
 sDone:  .db 4,&amp;quot;Done&amp;quot;&lt;br /&gt;
 structEnd:&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
* Thanks to BrandonW for finding out all this info on the dialog BCALLs and for the example code, though apparently Detached Solutions knew it all along.&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=User:TheStorm</id>
		<title>User:TheStorm</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=User:TheStorm"/>
				<updated>2008-04-17T22:20:01Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Yeah...um...hi&lt;br /&gt;
&lt;br /&gt;
I just add stuff other people find namely brandonw.&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=User:TheStorm</id>
		<title>User:TheStorm</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=User:TheStorm"/>
				<updated>2008-04-17T22:19:46Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Yeah...um...hi&lt;br /&gt;
I just add stuff other people find namely brandonw.&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4C1E</id>
		<title>83Plus:BCALLs:4C1E</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4C1E"/>
				<updated>2008-04-17T22:18:08Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: Typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:BCALLs:By_Name:Dialog|DialogStartGetKey]] [[Category:83Plus:BCALLs:By_Name|DialogStartGetKey]] [[Category:83Plus:BCALLs:By_Address|4C1E - DialogStartGetKey]]&lt;br /&gt;
{{missinfo|destroys}}&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' DialogStartGetKey&lt;br /&gt;
&lt;br /&gt;
'''BCALL Address:''' 4C1E&lt;br /&gt;
&lt;br /&gt;
Waits for a dialog keypress and then acts on it.&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
* HL: address of a table&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
* This doesn't return until you press [2nd]+[QUIT]&lt;br /&gt;
=== Destroys ===&lt;br /&gt;
* ''unknown''&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
*  This doesn't return until you press [2nd]+[QUIT]. You pass the address of a table in HL...if you pass a bID=3 table, it just returns. And the dialog has presumably already been displayed. It doesn't use the table for anything other than this, which is odd.&lt;br /&gt;
* Use with the other [[:Category:83Plus:BCALLs:By_Name:Dialog|Dialog BCALLs.]]&lt;br /&gt;
* [[83Plus:OS:Dialog_context|Info on how to use the Dialog BCALLs]] .&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:49F0</id>
		<title>83Plus:BCALLs:49F0</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:49F0"/>
				<updated>2008-04-16T22:41:42Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:BCALLs:By Name|CheckSplitFlag]] [[Category:83Plus:BCALLs:By Name:Display|CheckSplitFlag]] [[Category:83Plus:BCALLs:By Address|49F0 - CheckSplitFlag]]&lt;br /&gt;
&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' CheckSplitFlag&lt;br /&gt;
&lt;br /&gt;
'''BCALL Address:''' 49F0&lt;br /&gt;
&lt;br /&gt;
Checks if either horizontal or G-T split screen modes are active.&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
''None''&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
Z = 1 if no split screen mode is active&lt;br /&gt;
= 0 if a split screen mode is active&lt;br /&gt;
&lt;br /&gt;
=== Registers Destroyed ===&lt;br /&gt;
''none''&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
grfSplitOverride, (IY + sGrFlags) = 1 to ignore split mode settings&lt;br /&gt;
This flag is set to make system routines draw to the full screen even when in&lt;br /&gt;
a split screen mode.&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4FA8</id>
		<title>83Plus:BCALLs:4FA8</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4FA8"/>
				<updated>2008-04-16T22:37:15Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: Added bcall&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:BCALLs:By Name|Bit_VertSplit]] [[Category:83Plus:BCALLs:By Name:Display|Bit_VertSplit]] [[Category:83Plus:BCALLs:By Address|4FA8 - Bit_VertSplit]]&lt;br /&gt;
&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' Bit_VertSplit&lt;br /&gt;
&lt;br /&gt;
'''BCALL Address:''' 4FA8&lt;br /&gt;
&lt;br /&gt;
Tests if the TIâˆ’83 Plus is set to G-T (graph-table) display mode.&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
''None''&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
NZ = 1 if G-T mode is set&lt;br /&gt;
&lt;br /&gt;
=== Registers Destroyed ===&lt;br /&gt;
''none''&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
Applications may want to reset the 83+ to full screen mode if graphing&lt;br /&gt;
functionality is used. In G-T mode the screen is split vertically with 1/2 being&lt;br /&gt;
the graph screen and the other the table display.&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4549</id>
		<title>83Plus:BCALLs:4549</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4549"/>
				<updated>2008-04-16T22:34:21Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:BCALLs:By Name|ClrScrn]] [[Category:83Plus:BCALLs:By Name:Display|ClrScrn]] [[Category:83Plus:BCALLs:By Address|4549 - ClrScrn]]&lt;br /&gt;
&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' ClrScrn&lt;br /&gt;
&lt;br /&gt;
'''BCALL Address:''' 4549&lt;br /&gt;
&lt;br /&gt;
Clears the display. If textShadow is in use clears it also.&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
''None''&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
''None''&lt;br /&gt;
&lt;br /&gt;
=== Registers Destroyed ===&lt;br /&gt;
* DE,HL&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
appTextSave,(IY + appFlags) = 1 if the textShadow is to be cleared also&lt;br /&gt;
G-T and HORIZ split screen modes will affect how this routine maps the&lt;br /&gt;
coordinates specified. To avoid this turn off the split screen modes.&lt;br /&gt;
grfSplit, (IY + sGrFlags) = 1 if horizontal split mode set&lt;br /&gt;
vertSplit, (IY + sGrFlags) = 1 if graph-table split mode set&lt;br /&gt;
grfSplitOverride, (IY + sGrFlags) = 1 to ignore split modes&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4549</id>
		<title>83Plus:BCALLs:4549</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4549"/>
				<updated>2008-04-16T22:33:13Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: added bcall&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:BCALLs:By Name|ClrScrn]] [[Category:83Plus:BCALLs:By Name:Display|ClrScrn]] [[Category:83Plus:BCALLs:By Address|4549 - ClrScrn]]&lt;br /&gt;
&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' ClrScrnFull&lt;br /&gt;
&lt;br /&gt;
'''BCALL Address:''' 4549&lt;br /&gt;
&lt;br /&gt;
Clears the display. If textShadow is in use clears it also.&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
''None''&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
''None''&lt;br /&gt;
&lt;br /&gt;
=== Registers Destroyed ===&lt;br /&gt;
* DE,HL&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
appTextSave,(IY + appFlags) = 1 if the textShadow is to be cleared also&lt;br /&gt;
G-T and HORIZ split screen modes will affect how this routine maps the&lt;br /&gt;
coordinates specified. To avoid this turn off the split screen modes.&lt;br /&gt;
grfSplit, (IY + sGrFlags) = 1 if horizontal split mode set&lt;br /&gt;
vertSplit, (IY + sGrFlags) = 1 if graph-table split mode set&lt;br /&gt;
grfSplitOverride, (IY + sGrFlags) = 1 to ignore split modes&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:RAM:8000</id>
		<title>83Plus:RAM:8000</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:RAM:8000"/>
				<updated>2008-04-14T01:35:04Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:RAM:By_Name|appData]] [[Category:83Plus:RAM:By_Address|8000 - appData]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' appData&lt;br /&gt;
&lt;br /&gt;
'''Memory Address:''' 8000h&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 256 bytes.&lt;br /&gt;
&lt;br /&gt;
This area of memory functions as scratch memory for the boot code.&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
One popular use of this area is to store a public key for validation by [[83Plus:BCALLs:801B|RSAValidate]] or [[83Plus:BCALLs:80A2|Rabin]].&lt;br /&gt;
&lt;br /&gt;
It is generally free for programs to use.&lt;br /&gt;
&lt;br /&gt;
Sometimes referred to as rameCode.&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4C03</id>
		<title>83Plus:BCALLs:4C03</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4C03"/>
				<updated>2008-04-14T01:33:16Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:BCALLs:By_Name:Dialog|StartDialog]] [[Category:83Plus:BCALLs:By_Name|StartDialog]] [[Category:83Plus:BCALLs:By_Address|4C03 - StartDialog]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' StartDialog&lt;br /&gt;
&lt;br /&gt;
'''BCALL Address:''' 4C03&lt;br /&gt;
&lt;br /&gt;
Starts a dialog at [[83Plus:RAM:8000|appData]] created with [[83Plus:BCALLs:4C06|DialogInit]]&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
* [[83Plus:RAM:8000|appData]]: menu structure.&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
* Starts Dialog&lt;br /&gt;
=== Destroys ===&lt;br /&gt;
* ''unknown''&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
* Use [[83Plus:BCALLs:4C06|DialogInit]] to set up, &lt;br /&gt;
* Use with the other [[:Category:83Plus:BCALLs:By_Name:Dialog|Dialog BCALLs.]]&lt;br /&gt;
* Stores zero to (8033h), resets key override, draws dialog, and it starts waiting for a keypress.&lt;br /&gt;
* [[83Plus:OS:Dialog_context|Info on how to use the Dialog BCALLs]] .&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:OS:Dialog_context</id>
		<title>83Plus:OS:Dialog context</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:OS:Dialog_context"/>
				<updated>2008-04-14T01:28:27Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:OS_Information|Dialog context]]&lt;br /&gt;
This Documentation is for use with the [[:Category:83Plus:BCALLs:By_Name:Dialog|Dialog BCALLS]]&lt;br /&gt;
&lt;br /&gt;
== General Info ==&lt;br /&gt;
To start this context, load a menu structure* to ramCode/[[83Plus:RAM:8000|appData]], BCALL [[83Plus:BCALLs:4C06|DialogInit]] and then BCALL [[83Plus:BCALLs:4C03|StartDialog]].&lt;br /&gt;
You choose whether the run indicator is displayed and whether contexts are allowed (appAllowContext,(iy+appFlags)).&lt;br /&gt;
It is imperative that (cxCurApp) be one of the allowed values (use 58h=kExtApps).&lt;br /&gt;
&lt;br /&gt;
If kSolveRoot (SOLVE EDITOR), kStatEd (list editor), or kInfStat (inferential statistic editor) are pressed, the entire screen is redrawn and then the parser callback is called with A=1.&lt;br /&gt;
&lt;br /&gt;
If [UP], [DOWN], or [ENTER] are pressed, any entered number is parsed*.&lt;br /&gt;
&lt;br /&gt;
If [2nd]+[QUIT] is pressed, whatever has been entered will be parsed* (no errors thrown nor anything displayed) to OP1, the previous context vectors are restored, SP is restored from (spSave), and the run indicator is turned off.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Parsing the number ==&lt;br /&gt;
ParseInp is called on the data entered, and OP1 is checked to make sure it is REAL (error thrown if not (and this may return to the edit)).&lt;br /&gt;
A=0 is passed to the parser callback. B (8006h) is the index into a prompt structure (probably bID = 3). It is expected to return a value in A. Return zero to display the current line (string and number).&lt;br /&gt;
It also copies the number in OP1 to the spot bNumIndex points to. If 0,(iy+2Eh) is set, the rest of the line is not erased (then NewLine).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Menu structure ==&lt;br /&gt;
Load as many of these structures, one after the other (zero-terminated), to ramCode/[[83Plus:RAM:8000|appData]] in the order you want it displayed.&lt;br /&gt;
Store the length-indexed strings in RAM as well (right after this structure, in ramCode/[[83Plus:RAM:8000|appData]]).&lt;br /&gt;
&lt;br /&gt;
bID can be from 1-6:&lt;br /&gt;
bID = 1: display string (cannot select).&lt;br /&gt;
bID = 2: display highlightable choices (as in the MODE context). A byte table at 8009h has to do  with what is selected here.&lt;br /&gt;
bID = 3: display prompt string and number.&lt;br /&gt;
bID = 4: display highlightable string.&lt;br /&gt;
bID = 5: display menu number (ex. &amp;quot;1:&amp;quot;) and prompt string.&lt;br /&gt;
bID = 6: hidden, skip displaying this entry.&lt;br /&gt;
&lt;br /&gt;
=== Prompt structure when bID = 1 ===&lt;br /&gt;
        DB bID             ;&lt;br /&gt;
        DB bNumChoices     ;probably always 1&lt;br /&gt;
        DB bUnknown        ;&lt;br /&gt;
        DW wStringOffset   ;offset from start of ramCode&lt;br /&gt;
&lt;br /&gt;
=== Prompt structure when bID = 2 ===&lt;br /&gt;
        DB bID             ;&lt;br /&gt;
        DB bNumChoices     ;&lt;br /&gt;
        DB bUnknown        ;I think this is the number of rows to skip for next item, or something&lt;br /&gt;
        DW wStringOffset   ;offset from start of ramCode                        /&lt;br /&gt;
	DB bColumn         ;column to display string (this is probably ignored) \ There are bNumChoices of these.&lt;br /&gt;
&lt;br /&gt;
=== Prompt structure when bID = 3 ===&lt;br /&gt;
        DB bID             ;&lt;br /&gt;
        DB bNumChoices     ;probably always 1&lt;br /&gt;
        DB bNumIndex       ;&lt;br /&gt;
        DW wStringOffset   ;offset from start of ramCode&lt;br /&gt;
&lt;br /&gt;
=== Prompt structure when bID = 4 ===&lt;br /&gt;
        DB bID             ;&lt;br /&gt;
        DB bNumChoices     ;probably always 1&lt;br /&gt;
        DB bUnknown        ;&lt;br /&gt;
        DW wStringOffset   ;offset from start of ramCode&lt;br /&gt;
&lt;br /&gt;
=== Prompt structure when bID = 5 ===&lt;br /&gt;
	DB bID             ;&lt;br /&gt;
        DB bNumEntries     ;probably always 1&lt;br /&gt;
        DB bMenuItemNum    ;1 for &amp;quot;1:&amp;quot;, 2 for &amp;quot;2:&amp;quot;, etc.&lt;br /&gt;
        DW wStringOffset   ;offset from start of ramCode&lt;br /&gt;
&lt;br /&gt;
=== Prompt structure when bID = 6 ===&lt;br /&gt;
        DB bID             ;&lt;br /&gt;
        DB bNumChoices     ;&lt;br /&gt;
        DB bUnknown        ;&lt;br /&gt;
        DW wStringOffset   ;offset from start of ramCode &amp;lt; There are bNumChoices of these.&lt;br /&gt;
&lt;br /&gt;
8038h: bNumIndex above is an offset into a list of floating-point numbers:&lt;br /&gt;
        DB 00h,80h,00h,00h,00h,00h,00h,00h,00h&lt;br /&gt;
== Examples ==&lt;br /&gt;
=== Example Code ===&lt;br /&gt;
 hookBackup              equ     appBackUpScreen&lt;br /&gt;
 .db 0BBh,6Dh&lt;br /&gt;
        ld hl,rawKeyHookPtr&lt;br /&gt;
        ld de,hookBackup&lt;br /&gt;
        ld bc,4&lt;br /&gt;
        ldir&lt;br /&gt;
        ld a,(flags+34h)&lt;br /&gt;
        ld (de),a&lt;br /&gt;
        ld a,(cxCurApp)&lt;br /&gt;
        push af&lt;br /&gt;
        ld a,58h&lt;br /&gt;
        ld (cxCurApp),a&lt;br /&gt;
        ld hl,structStart&lt;br /&gt;
        ld de,ramCode&lt;br /&gt;
        ld bc,structEnd-structStart&lt;br /&gt;
        ldir&lt;br /&gt;
        ld hl,dialogCallback&lt;br /&gt;
        in a,(6)&lt;br /&gt;
        bcall(_DialogInit)&lt;br /&gt;
        bcall(_runIndicOff)&lt;br /&gt;
        bcall(_StartDialog)&lt;br /&gt;
        bcall(_cursorOff)&lt;br /&gt;
        bcall(_clrLCDFull)&lt;br /&gt;
        res appCurWord,(iy+appFlags)&lt;br /&gt;
        bcall(_ClrTxtShd)&lt;br /&gt;
        ld hl,cmdShadow&lt;br /&gt;
        ld de,cmdShadow+1&lt;br /&gt;
        ld (hl),' '&lt;br /&gt;
        ld bc,127&lt;br /&gt;
        ldir&lt;br /&gt;
        pop af&lt;br /&gt;
        ld (cxCurApp),a&lt;br /&gt;
        ld hl,hookBackup&lt;br /&gt;
        ld de,rawKeyHookPtr&lt;br /&gt;
        ld bc,4&lt;br /&gt;
        ldir&lt;br /&gt;
        ld a,(hl)&lt;br /&gt;
        ld (flags+34h),a&lt;br /&gt;
        xor a&lt;br /&gt;
        bcall(_GetDialogNumOP1)&lt;br /&gt;
        ld hl,0&lt;br /&gt;
        ld (penCol),hl&lt;br /&gt;
        ld a,9&lt;br /&gt;
        bcall(_DispOP1a)&lt;br /&gt;
 dialogCallback:&lt;br /&gt;
        xor a&lt;br /&gt;
        ret&lt;br /&gt;
 structStart:&lt;br /&gt;
        ;put your dialog data here&lt;br /&gt;
 structEnd:&lt;br /&gt;
=== Example Table ===&lt;br /&gt;
 structStart:&lt;br /&gt;
        .db 1&lt;br /&gt;
        .db 1&lt;br /&gt;
        .db 1&lt;br /&gt;
        .dw sOptions-structStart&lt;br /&gt;
        .db 5&lt;br /&gt;
        .db 1&lt;br /&gt;
        .db 1&lt;br /&gt;
        .dw sItem1-structStart&lt;br /&gt;
        .db 5&lt;br /&gt;
        .db 1&lt;br /&gt;
        .db 2&lt;br /&gt;
        .dw sItem2-structStart&lt;br /&gt;
        .db 2&lt;br /&gt;
        .db 3&lt;br /&gt;
        .db 1&lt;br /&gt;
        .dw sSelect-structStart&lt;br /&gt;
        .dw sOpt1-structStart&lt;br /&gt;
        .dw sOpt2-structStart&lt;br /&gt;
        .db 3&lt;br /&gt;
        .db 1&lt;br /&gt;
        .db 0&lt;br /&gt;
        .dw sNum-structStart&lt;br /&gt;
        .db 4&lt;br /&gt;
        .db 1&lt;br /&gt;
        .db 1&lt;br /&gt;
        .dw sDone-structStart&lt;br /&gt;
        .db 0&lt;br /&gt;
 sOptions:&lt;br /&gt;
        .db 7,&amp;quot;OPTIONS&amp;quot;&lt;br /&gt;
 sItem1: .db 5,&amp;quot;Item1&amp;quot;&lt;br /&gt;
 sItem2: .db 5,&amp;quot;Item2&amp;quot;&lt;br /&gt;
 sSelect:&lt;br /&gt;
        .db 6,&amp;quot;Opts: &amp;quot;&lt;br /&gt;
 sOpt1:  .db 4,&amp;quot;Opt1&amp;quot;&lt;br /&gt;
 sOpt2:  .db 4,&amp;quot;Opt2&amp;quot;&lt;br /&gt;
 sNum:   .db 4,&amp;quot;Num=&amp;quot;&lt;br /&gt;
 sDone:  .db 4,&amp;quot;Done&amp;quot;&lt;br /&gt;
 structEnd:&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
* Thanks to BrandonW for finding out all this info on the dialog BCALLs and the for the example code, though apparently Detached solutions knew it all along.&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4C06</id>
		<title>83Plus:BCALLs:4C06</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4C06"/>
				<updated>2008-04-13T02:56:58Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:BCALLs:By_Name:Dialog|DialogInit]] [[Category:83Plus:BCALLs:By_Name|DialogInit]] [[Category:83Plus:BCALLs:By_Address|4C06 - DialogInit]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' DialogInit&lt;br /&gt;
&lt;br /&gt;
'''BCALL Address:''' 4C06&lt;br /&gt;
&lt;br /&gt;
Initializes the dialog context at [[83Plus:RAM:8000|appData]].&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
* HL: is address of parser callback for any numbers entered.&lt;br /&gt;
* A: is page of parser callback for any numbers entered (must be non-zero).&lt;br /&gt;
* [[83Plus:RAM:8000|appData]]: menu structure.&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
* Initializes the dialog context.&lt;br /&gt;
=== Destroys ===&lt;br /&gt;
* ''unknown''&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
* Use [[83Plus:BCALLs:4C03|StartDialog]] to start Dialog&lt;br /&gt;
* Use with the other [[:Category:83Plus:BCALLs:By_Name:Dialog|Dialog BCALLs.]]&lt;br /&gt;
* [[83Plus:OS:Dialog_context|Info on how to use the Dialog BCALLs]] .&lt;br /&gt;
* [http://brandonw.net/calcstuff/ddemo.zip example program]&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:OS:Dialog_context</id>
		<title>83Plus:OS:Dialog context</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:OS:Dialog_context"/>
				<updated>2008-04-13T02:55:48Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: /* Example Table */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:OS_Information|Dialog context]]&lt;br /&gt;
This Documentation is for use with the [[:Category:83Plus:BCALLs:By_Name:Dialog|Dialog BCALLS]]&lt;br /&gt;
&lt;br /&gt;
== General Info ==&lt;br /&gt;
To start this context, load a menu structure* to ramCode, BCALL DialogInit and then BCALL StartDialog.&lt;br /&gt;
You choose whether the run indicator is displayed and whether contexts are allowed (appAllowContext,(iy+appFlags)).&lt;br /&gt;
It is imperative that (cxCurApp) be one of the allowed values (use 58h=kExtApps).&lt;br /&gt;
&lt;br /&gt;
If kSolveRoot (SOLVE EDITOR), kStatEd (list editor), or kInfStat (inferential statistic editor) are pressed, the entire screen is redrawn and then the parser callback is called with A=1.&lt;br /&gt;
&lt;br /&gt;
If [UP], [DOWN], or [ENTER] are pressed, any entered number is parsed*.&lt;br /&gt;
&lt;br /&gt;
If [2nd]+[QUIT] is pressed, whatever has been entered will be parsed* (no errors thrown nor anything displayed) to OP1, the previous context vectors are restored, SP is restored from (spSave), and the run indicator is turned off.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Parsing the number ==&lt;br /&gt;
ParseInp is called on the data entered, and OP1 is checked to make sure it is REAL (error thrown if not (and this may return to the edit)).&lt;br /&gt;
A=0 is passed to the parser callback. B (8006h) is the index into a prompt structure (probably bID = 3). It is expected to return a value in A. Return zero to display the current line (string and number).&lt;br /&gt;
It also copies the number in OP1 to the spot bNumIndex points to. If 0,(iy+2Eh) is set, the rest of the line is not erased (then NewLine).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Menu structure ==&lt;br /&gt;
Load as many of these structures, one after the other (zero-terminated), to ramCode in the order you want it displayed.&lt;br /&gt;
Store the length-indexed strings in RAM as well (right after this structure, in ramCode).&lt;br /&gt;
&lt;br /&gt;
bID can be from 1-6:&lt;br /&gt;
bID = 1: display string (cannot select).&lt;br /&gt;
bID = 2: display highlightable choices (as in the MODE context). A byte table at 8009h has to do  with what is selected here.&lt;br /&gt;
bID = 3: display prompt string and number.&lt;br /&gt;
bID = 4: display highlightable string.&lt;br /&gt;
bID = 5: display menu number (ex. &amp;quot;1:&amp;quot;) and prompt string.&lt;br /&gt;
bID = 6: hidden, skip displaying this entry.&lt;br /&gt;
&lt;br /&gt;
=== Prompt structure when bID = 1 ===&lt;br /&gt;
        DB bID             ;&lt;br /&gt;
        DB bNumChoices     ;probably always 1&lt;br /&gt;
        DB bUnknown        ;&lt;br /&gt;
        DW wStringOffset   ;offset from start of ramCode&lt;br /&gt;
&lt;br /&gt;
=== Prompt structure when bID = 2 ===&lt;br /&gt;
        DB bID             ;&lt;br /&gt;
        DB bNumChoices     ;&lt;br /&gt;
        DB bUnknown        ;I think this is the number of rows to skip for next item, or something&lt;br /&gt;
        DW wStringOffset   ;offset from start of ramCode                        /&lt;br /&gt;
	DB bColumn         ;column to display string (this is probably ignored) \ There are bNumChoices of these.&lt;br /&gt;
&lt;br /&gt;
=== Prompt structure when bID = 3 ===&lt;br /&gt;
        DB bID             ;&lt;br /&gt;
        DB bNumChoices     ;probably always 1&lt;br /&gt;
        DB bNumIndex       ;&lt;br /&gt;
        DW wStringOffset   ;offset from start of ramCode&lt;br /&gt;
&lt;br /&gt;
=== Prompt structure when bID = 4 ===&lt;br /&gt;
        DB bID             ;&lt;br /&gt;
        DB bNumChoices     ;probably always 1&lt;br /&gt;
        DB bUnknown        ;&lt;br /&gt;
        DW wStringOffset   ;offset from start of ramCode&lt;br /&gt;
&lt;br /&gt;
=== Prompt structure when bID = 5 ===&lt;br /&gt;
	DB bID             ;&lt;br /&gt;
        DB bNumEntries     ;probably always 1&lt;br /&gt;
        DB bMenuItemNum    ;1 for &amp;quot;1:&amp;quot;, 2 for &amp;quot;2:&amp;quot;, etc.&lt;br /&gt;
        DW wStringOffset   ;offset from start of ramCode&lt;br /&gt;
&lt;br /&gt;
=== Prompt structure when bID = 6 ===&lt;br /&gt;
        DB bID             ;&lt;br /&gt;
        DB bNumChoices     ;&lt;br /&gt;
        DB bUnknown        ;&lt;br /&gt;
        DW wStringOffset   ;offset from start of ramCode &amp;lt; There are bNumChoices of these.&lt;br /&gt;
&lt;br /&gt;
8038h: bNumIndex above is an offset into a list of floating-point numbers:&lt;br /&gt;
        DB 00h,80h,00h,00h,00h,00h,00h,00h,00h&lt;br /&gt;
== Examples ==&lt;br /&gt;
=== Example Code ===&lt;br /&gt;
 hookBackup              equ     appBackUpScreen&lt;br /&gt;
 .db 0BBh,6Dh&lt;br /&gt;
        ld hl,rawKeyHookPtr&lt;br /&gt;
        ld de,hookBackup&lt;br /&gt;
        ld bc,4&lt;br /&gt;
        ldir&lt;br /&gt;
        ld a,(flags+34h)&lt;br /&gt;
        ld (de),a&lt;br /&gt;
        ld a,(cxCurApp)&lt;br /&gt;
        push af&lt;br /&gt;
        ld a,58h&lt;br /&gt;
        ld (cxCurApp),a&lt;br /&gt;
        ld hl,structStart&lt;br /&gt;
        ld de,ramCode&lt;br /&gt;
        ld bc,structEnd-structStart&lt;br /&gt;
        ldir&lt;br /&gt;
        ld hl,dialogCallback&lt;br /&gt;
        in a,(6)&lt;br /&gt;
        bcall(_DialogInit)&lt;br /&gt;
        bcall(_runIndicOff)&lt;br /&gt;
        bcall(_StartDialog)&lt;br /&gt;
        bcall(_cursorOff)&lt;br /&gt;
        bcall(_clrLCDFull)&lt;br /&gt;
        res appCurWord,(iy+appFlags)&lt;br /&gt;
        bcall(_ClrTxtShd)&lt;br /&gt;
        ld hl,cmdShadow&lt;br /&gt;
        ld de,cmdShadow+1&lt;br /&gt;
        ld (hl),' '&lt;br /&gt;
        ld bc,127&lt;br /&gt;
        ldir&lt;br /&gt;
        pop af&lt;br /&gt;
        ld (cxCurApp),a&lt;br /&gt;
        ld hl,hookBackup&lt;br /&gt;
        ld de,rawKeyHookPtr&lt;br /&gt;
        ld bc,4&lt;br /&gt;
        ldir&lt;br /&gt;
        ld a,(hl)&lt;br /&gt;
        ld (flags+34h),a&lt;br /&gt;
        xor a&lt;br /&gt;
        bcall(_GetDialogNumOP1)&lt;br /&gt;
        ld hl,0&lt;br /&gt;
        ld (penCol),hl&lt;br /&gt;
        ld a,9&lt;br /&gt;
        bcall(_DispOP1a)&lt;br /&gt;
 dialogCallback:&lt;br /&gt;
        xor a&lt;br /&gt;
        ret&lt;br /&gt;
 structStart:&lt;br /&gt;
        ;put your dialog data here&lt;br /&gt;
 structEnd:&lt;br /&gt;
=== Example Table ===&lt;br /&gt;
 structStart:&lt;br /&gt;
        .db 1&lt;br /&gt;
        .db 1&lt;br /&gt;
        .db 1&lt;br /&gt;
        .dw sOptions-structStart&lt;br /&gt;
        .db 5&lt;br /&gt;
        .db 1&lt;br /&gt;
        .db 1&lt;br /&gt;
        .dw sItem1-structStart&lt;br /&gt;
        .db 5&lt;br /&gt;
        .db 1&lt;br /&gt;
        .db 2&lt;br /&gt;
        .dw sItem2-structStart&lt;br /&gt;
        .db 2&lt;br /&gt;
        .db 3&lt;br /&gt;
        .db 1&lt;br /&gt;
        .dw sSelect-structStart&lt;br /&gt;
        .dw sOpt1-structStart&lt;br /&gt;
        .dw sOpt2-structStart&lt;br /&gt;
        .db 3&lt;br /&gt;
        .db 1&lt;br /&gt;
        .db 0&lt;br /&gt;
        .dw sNum-structStart&lt;br /&gt;
        .db 4&lt;br /&gt;
        .db 1&lt;br /&gt;
        .db 1&lt;br /&gt;
        .dw sDone-structStart&lt;br /&gt;
        .db 0&lt;br /&gt;
 sOptions:&lt;br /&gt;
        .db 7,&amp;quot;OPTIONS&amp;quot;&lt;br /&gt;
 sItem1: .db 5,&amp;quot;Item1&amp;quot;&lt;br /&gt;
 sItem2: .db 5,&amp;quot;Item2&amp;quot;&lt;br /&gt;
 sSelect:&lt;br /&gt;
        .db 6,&amp;quot;Opts: &amp;quot;&lt;br /&gt;
 sOpt1:  .db 4,&amp;quot;Opt1&amp;quot;&lt;br /&gt;
 sOpt2:  .db 4,&amp;quot;Opt2&amp;quot;&lt;br /&gt;
 sNum:   .db 4,&amp;quot;Num=&amp;quot;&lt;br /&gt;
 sDone:  .db 4,&amp;quot;Done&amp;quot;&lt;br /&gt;
 structEnd:&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
* Thanks to BrandonW for finding out all this info on the dialog BCALLs and the for the example code, though apparently Detached solutions knew it all along.&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:OS:Dialog_context</id>
		<title>83Plus:OS:Dialog context</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:OS:Dialog_context"/>
				<updated>2008-04-13T02:54:21Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:OS_Information|Dialog context]]&lt;br /&gt;
This Documentation is for use with the [[:Category:83Plus:BCALLs:By_Name:Dialog|Dialog BCALLS]]&lt;br /&gt;
&lt;br /&gt;
== General Info ==&lt;br /&gt;
To start this context, load a menu structure* to ramCode, BCALL DialogInit and then BCALL StartDialog.&lt;br /&gt;
You choose whether the run indicator is displayed and whether contexts are allowed (appAllowContext,(iy+appFlags)).&lt;br /&gt;
It is imperative that (cxCurApp) be one of the allowed values (use 58h=kExtApps).&lt;br /&gt;
&lt;br /&gt;
If kSolveRoot (SOLVE EDITOR), kStatEd (list editor), or kInfStat (inferential statistic editor) are pressed, the entire screen is redrawn and then the parser callback is called with A=1.&lt;br /&gt;
&lt;br /&gt;
If [UP], [DOWN], or [ENTER] are pressed, any entered number is parsed*.&lt;br /&gt;
&lt;br /&gt;
If [2nd]+[QUIT] is pressed, whatever has been entered will be parsed* (no errors thrown nor anything displayed) to OP1, the previous context vectors are restored, SP is restored from (spSave), and the run indicator is turned off.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Parsing the number ==&lt;br /&gt;
ParseInp is called on the data entered, and OP1 is checked to make sure it is REAL (error thrown if not (and this may return to the edit)).&lt;br /&gt;
A=0 is passed to the parser callback. B (8006h) is the index into a prompt structure (probably bID = 3). It is expected to return a value in A. Return zero to display the current line (string and number).&lt;br /&gt;
It also copies the number in OP1 to the spot bNumIndex points to. If 0,(iy+2Eh) is set, the rest of the line is not erased (then NewLine).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Menu structure ==&lt;br /&gt;
Load as many of these structures, one after the other (zero-terminated), to ramCode in the order you want it displayed.&lt;br /&gt;
Store the length-indexed strings in RAM as well (right after this structure, in ramCode).&lt;br /&gt;
&lt;br /&gt;
bID can be from 1-6:&lt;br /&gt;
bID = 1: display string (cannot select).&lt;br /&gt;
bID = 2: display highlightable choices (as in the MODE context). A byte table at 8009h has to do  with what is selected here.&lt;br /&gt;
bID = 3: display prompt string and number.&lt;br /&gt;
bID = 4: display highlightable string.&lt;br /&gt;
bID = 5: display menu number (ex. &amp;quot;1:&amp;quot;) and prompt string.&lt;br /&gt;
bID = 6: hidden, skip displaying this entry.&lt;br /&gt;
&lt;br /&gt;
=== Prompt structure when bID = 1 ===&lt;br /&gt;
        DB bID             ;&lt;br /&gt;
        DB bNumChoices     ;probably always 1&lt;br /&gt;
        DB bUnknown        ;&lt;br /&gt;
        DW wStringOffset   ;offset from start of ramCode&lt;br /&gt;
&lt;br /&gt;
=== Prompt structure when bID = 2 ===&lt;br /&gt;
        DB bID             ;&lt;br /&gt;
        DB bNumChoices     ;&lt;br /&gt;
        DB bUnknown        ;I think this is the number of rows to skip for next item, or something&lt;br /&gt;
        DW wStringOffset   ;offset from start of ramCode                        /&lt;br /&gt;
	DB bColumn         ;column to display string (this is probably ignored) \ There are bNumChoices of these.&lt;br /&gt;
&lt;br /&gt;
=== Prompt structure when bID = 3 ===&lt;br /&gt;
        DB bID             ;&lt;br /&gt;
        DB bNumChoices     ;probably always 1&lt;br /&gt;
        DB bNumIndex       ;&lt;br /&gt;
        DW wStringOffset   ;offset from start of ramCode&lt;br /&gt;
&lt;br /&gt;
=== Prompt structure when bID = 4 ===&lt;br /&gt;
        DB bID             ;&lt;br /&gt;
        DB bNumChoices     ;probably always 1&lt;br /&gt;
        DB bUnknown        ;&lt;br /&gt;
        DW wStringOffset   ;offset from start of ramCode&lt;br /&gt;
&lt;br /&gt;
=== Prompt structure when bID = 5 ===&lt;br /&gt;
	DB bID             ;&lt;br /&gt;
        DB bNumEntries     ;probably always 1&lt;br /&gt;
        DB bMenuItemNum    ;1 for &amp;quot;1:&amp;quot;, 2 for &amp;quot;2:&amp;quot;, etc.&lt;br /&gt;
        DW wStringOffset   ;offset from start of ramCode&lt;br /&gt;
&lt;br /&gt;
=== Prompt structure when bID = 6 ===&lt;br /&gt;
        DB bID             ;&lt;br /&gt;
        DB bNumChoices     ;&lt;br /&gt;
        DB bUnknown        ;&lt;br /&gt;
        DW wStringOffset   ;offset from start of ramCode &amp;lt; There are bNumChoices of these.&lt;br /&gt;
&lt;br /&gt;
8038h: bNumIndex above is an offset into a list of floating-point numbers:&lt;br /&gt;
        DB 00h,80h,00h,00h,00h,00h,00h,00h,00h&lt;br /&gt;
== Examples ==&lt;br /&gt;
=== Example Code ===&lt;br /&gt;
 hookBackup              equ     appBackUpScreen&lt;br /&gt;
 .db 0BBh,6Dh&lt;br /&gt;
        ld hl,rawKeyHookPtr&lt;br /&gt;
        ld de,hookBackup&lt;br /&gt;
        ld bc,4&lt;br /&gt;
        ldir&lt;br /&gt;
        ld a,(flags+34h)&lt;br /&gt;
        ld (de),a&lt;br /&gt;
        ld a,(cxCurApp)&lt;br /&gt;
        push af&lt;br /&gt;
        ld a,58h&lt;br /&gt;
        ld (cxCurApp),a&lt;br /&gt;
        ld hl,structStart&lt;br /&gt;
        ld de,ramCode&lt;br /&gt;
        ld bc,structEnd-structStart&lt;br /&gt;
        ldir&lt;br /&gt;
        ld hl,dialogCallback&lt;br /&gt;
        in a,(6)&lt;br /&gt;
        bcall(_DialogInit)&lt;br /&gt;
        bcall(_runIndicOff)&lt;br /&gt;
        bcall(_StartDialog)&lt;br /&gt;
        bcall(_cursorOff)&lt;br /&gt;
        bcall(_clrLCDFull)&lt;br /&gt;
        res appCurWord,(iy+appFlags)&lt;br /&gt;
        bcall(_ClrTxtShd)&lt;br /&gt;
        ld hl,cmdShadow&lt;br /&gt;
        ld de,cmdShadow+1&lt;br /&gt;
        ld (hl),' '&lt;br /&gt;
        ld bc,127&lt;br /&gt;
        ldir&lt;br /&gt;
        pop af&lt;br /&gt;
        ld (cxCurApp),a&lt;br /&gt;
        ld hl,hookBackup&lt;br /&gt;
        ld de,rawKeyHookPtr&lt;br /&gt;
        ld bc,4&lt;br /&gt;
        ldir&lt;br /&gt;
        ld a,(hl)&lt;br /&gt;
        ld (flags+34h),a&lt;br /&gt;
        xor a&lt;br /&gt;
        bcall(_GetDialogNumOP1)&lt;br /&gt;
        ld hl,0&lt;br /&gt;
        ld (penCol),hl&lt;br /&gt;
        ld a,9&lt;br /&gt;
        bcall(_DispOP1a)&lt;br /&gt;
 dialogCallback:&lt;br /&gt;
        xor a&lt;br /&gt;
        ret&lt;br /&gt;
 structStart:&lt;br /&gt;
        ;put your dialog data here&lt;br /&gt;
 structEnd:&lt;br /&gt;
=== Example Table ===&lt;br /&gt;
 structStart:&lt;br /&gt;
        .db 1&lt;br /&gt;
        .db 1&lt;br /&gt;
        .db 1&lt;br /&gt;
        .dw sOptions-structStart&lt;br /&gt;
&lt;br /&gt;
        .db 5&lt;br /&gt;
        .db 1&lt;br /&gt;
        .db 1&lt;br /&gt;
        .dw sItem1-structStart&lt;br /&gt;
&lt;br /&gt;
        .db 5&lt;br /&gt;
        .db 1&lt;br /&gt;
        .db 2&lt;br /&gt;
        .dw sItem2-structStart&lt;br /&gt;
&lt;br /&gt;
        .db 2&lt;br /&gt;
        .db 3&lt;br /&gt;
        .db 1&lt;br /&gt;
        .dw sSelect-structStart&lt;br /&gt;
        .dw sOpt1-structStart&lt;br /&gt;
        .dw sOpt2-structStart&lt;br /&gt;
&lt;br /&gt;
        .db 3&lt;br /&gt;
        .db 1&lt;br /&gt;
        .db 0&lt;br /&gt;
        .dw sNum-structStart&lt;br /&gt;
&lt;br /&gt;
        .db 4&lt;br /&gt;
        .db 1&lt;br /&gt;
        .db 1&lt;br /&gt;
        .dw sDone-structStart&lt;br /&gt;
&lt;br /&gt;
        .db 0&lt;br /&gt;
 sOptions:&lt;br /&gt;
        .db 7,&amp;quot;OPTIONS&amp;quot;&lt;br /&gt;
 sItem1: .db 5,&amp;quot;Item1&amp;quot;&lt;br /&gt;
 sItem2: .db 5,&amp;quot;Item2&amp;quot;&lt;br /&gt;
 sSelect:&lt;br /&gt;
        .db 6,&amp;quot;Opts: &amp;quot;&lt;br /&gt;
 sOpt1:  .db 4,&amp;quot;Opt1&amp;quot;&lt;br /&gt;
 sOpt2:  .db 4,&amp;quot;Opt2&amp;quot;&lt;br /&gt;
 sNum:   .db 4,&amp;quot;Num=&amp;quot;&lt;br /&gt;
 sDone:  .db 4,&amp;quot;Done&amp;quot;&lt;br /&gt;
 structEnd:&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
* Thanks to BrandonW for finding out all this info on the dialog BCALLs and the for the example code, though apparently Detached solutions knew it all along.&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4FE1</id>
		<title>83Plus:BCALLs:4FE1</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4FE1"/>
				<updated>2008-04-13T02:46:56Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:BCALLs:By_Name:Dialog|ResDialogKeyOverride]] [[Category:83Plus:BCALLs:By_Name|ResDialogKeyOverride]] [[Category:83Plus:BCALLs:By_Address|4C18 - ResDialogKeyOverride]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' ResDialogKeyOverride&lt;br /&gt;
&lt;br /&gt;
'''BCALL Address:''' 4C18&lt;br /&gt;
&lt;br /&gt;
This is the key hook used by the dialog routines. It actually runs &amp;quot;add a,e.&amp;quot; *sigh*&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
* ''none''&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
* ''none''&lt;br /&gt;
&lt;br /&gt;
=== Destroys ===&lt;br /&gt;
* ''unknown''&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
* Use with the other [[:Category:83Plus:BCALLs:By_Name:Dialog|Dialog BCALLs.]]&lt;br /&gt;
* [[83Plus:OS:Dialog_context|Info on how to use the Dialog BCALLs]] .&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4C18</id>
		<title>83Plus:BCALLs:4C18</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4C18"/>
				<updated>2008-04-13T02:44:15Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:83Plus:BCALLs:By_Name:Dialog|ResDialogKeyOverride]] [[Category:83Plus:BCALLs:By_Name|ResDialogKeyOverride]] [[Category:83Plus:BCALLs:By_Address|4C18 - ResDialogKeyOverride]]&lt;br /&gt;
== Synopsis ==&lt;br /&gt;
'''Official Name:''' ResDialogKeyOverride&lt;br /&gt;
&lt;br /&gt;
'''BCALL Address:''' 4C18&lt;br /&gt;
&lt;br /&gt;
Disables the callback routine to handle keypresses.&lt;br /&gt;
&lt;br /&gt;
=== Inputs ===&lt;br /&gt;
* ''none''&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
* ''none''&lt;br /&gt;
=== Destroys ===&lt;br /&gt;
* ''unknown''&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
* Use with the other [[:Category:83Plus:BCALLs:By_Name:Dialog|Dialog BCALLs.]]&lt;br /&gt;
* [[83Plus:OS:Dialog_context|Info on how to use the Dialog BCALLs]] .&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4CD</id>
		<title>83Plus:BCALLs:4CD</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:BCALLs:4CD"/>
				<updated>2008-04-13T02:40:39Z</updated>
		
		<summary type="html">&lt;p&gt;TheStorm: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>TheStorm</name></author>	</entry>

	</feed>