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

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:Software:usb8x/Build</id>
		<title>83Plus:Software:usb8x/Build</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:Software:usb8x/Build"/>
				<updated>2010-01-17T21:39:32Z</updated>
		
		<summary type="html">&lt;p&gt;Typhox: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Building usb8x from source is (hopefully) an easy process.  You need [http://www.zilog.com/download/z8/devtools/ZDS368.exe ZDS] or a ZDS-compatible assembler.  Just open the usb8x.zws project file in ZDS and compile to produce a .hex file which you can sign with wappsign or your favorite signing tool.&lt;br /&gt;
&lt;br /&gt;
Compile time settings are listed in settings.inc.  They are:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;  cellspacing=&amp;quot;0&amp;quot; &lt;br /&gt;
!Setting Name !! Default !! Description&lt;br /&gt;
|-&lt;br /&gt;
|LOGGING_ON || 0 || If set to 1, logging support will be compiled.  Even if logging support is compiled, logs will not actually be kept unless [[../Asm_Interface/SetupLog|SetupLog]] is called.  Logging support, even if logging is not enabled, can significantly slow down high speed drivers like MSD, so logging support should be disabled except in debug versions.&lt;br /&gt;
|-&lt;br /&gt;
|ASSERT_ON || 0 || If set to 1, assertion support will be compiled.  Assertions are used throughout the usb8x code to make sure certain inputs and outputs are within reasonable bounds.  If they are not the assertion is triggered, debug information is displayed on the screen, and the calculator halts.  Assertions slightly slow down usb8x operation, so they should probably be disabled in release versions.&lt;br /&gt;
|-&lt;br /&gt;
|SAFETYINT_ON || 0 || If set to 1, a safety interrupt will be compiled and automatically loaded when the driver is started.  This interrupt checks memory for sane values using assertions.  Thus, if you enable the safety interrupt, you should also enable assertions.  The safety interrupt uses statVars, so it should be disabled in release versions to prevent conflicts with external software.&lt;br /&gt;
|-&lt;br /&gt;
|HUBCODE_ON || 0 || If set to 1, code for handling USB hubs will be compiled.  This code provides routines to set and clear hub features, and also causes AutoSetup to automatically bypass an attached hub and instead setup the first attached device.  The current code only works with some devices (doesn't work with HID devices) so it is disabled by default.&lt;br /&gt;
|-&lt;br /&gt;
|CACHE_ON || 1 || If set to 1, code for MSD caching is compiled.  Even if caching support is compiled, the cache will not be active unless the external program using the MSD driver specifically enables it.  Current cache code should be bug-free for reads, but may still have some bugs when writing.&lt;br /&gt;
|-&lt;br /&gt;
|VERNIER_ON / KBD_ON / MOUSE_ON / MSD_ON / SILVER_ON / PAD_ON || 1 || If set to 1, the cooresponding driver will be compiled.  The release version of usb8x includes all drivers.  If a driver is not compiled and an external program tries to access it, a FeatureDisabled error will be returned.&lt;br /&gt;
|-&lt;br /&gt;
|ALWAYSCANCELINT_ON || 0 || If set to 1, the usb8x interrupt will always tell the TIOS to ignore USB events, even if the event is something that usb8x does not handle.  &lt;br /&gt;
|-&lt;br /&gt;
|INTERRUPTMACRO_TYPE || 1 || If set to 0, usb8x will not disable or enable interrupts around sensitive routines.  If set to 1, usb8x will disable and enable interrupts with di/ei around sensitive routines.  If set to 2, usb8x will save the status of the interrupt before disabling it, and only re-enable interrupts if they were on to begin with.  Set to 1 by default because it seems to work the best.&lt;br /&gt;
|-&lt;br /&gt;
|LOGxxxxxx_ON || 1 || Each of the many log settings controls one particular log file type.  If a log setting is seto to 1, then the cooresponding log type will be included in the log file (assuming logging is compiled and enabled).  If set to 0, that log type will be ignored.  These settings are good if you're debugging one particular system and don't want the log file to be cluttered up with extraneous information.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Typhox</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:Software:USBTools</id>
		<title>83Plus:Software:USBTools</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:Software:USBTools"/>
				<updated>2010-01-17T20:16:15Z</updated>
		
		<summary type="html">&lt;p&gt;Typhox: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;USBTools is a companion application to [[83Plus:Software:usb8x|usb8x]].  It provides tools for developers as well as demos to test usb8x's drivers.  USBTools requires version 0.11 or higher of usb8x.&lt;br /&gt;
&lt;br /&gt;
The current version of USBTools is 0.01, and is available for [http://sourceforge.net/projects/usb8x Download] on the usb8x Sourceforge page.&lt;br /&gt;
&lt;br /&gt;
When you run USBTools, you will be greeted by the following menu screen:&lt;br /&gt;
 USB Tools       &lt;br /&gt;
 1) [[83Plus:Software:USBTools/Stuff|Stuff]]&lt;br /&gt;
 2) [[83Plus:Software:USBTools/Tools|Tools]]&lt;br /&gt;
 3) [[83Plus:Software:USBTools/Demos|Demos]]&lt;br /&gt;
 4) [[83Plus:Software:USBTools/About|About]]&lt;br /&gt;
 5) Quit&lt;br /&gt;
&lt;br /&gt;
[[Category:83Plus:Software|USBTools]]&lt;/div&gt;</summary>
		<author><name>Typhox</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:Software:usb8x/Asm_Interface/KBD</id>
		<title>83Plus:Software:usb8x/Asm Interface/KBD</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:Software:usb8x/Asm_Interface/KBD"/>
				<updated>2010-01-17T18:07:00Z</updated>
		
		<summary type="html">&lt;p&gt;Typhox: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The usb8x keyboard driver is compatible with any keyboard conforming to the USB HID keyboard standard.  However, it is not compatible with devices that have a keyboard connected to an internal hub (combination keyboard/mice, for example).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The keyboard driver is initialized via [[83Plus:Software:usb8x/Asm_Interface/KBD/KBDInit|KBDInit]].  This entry point initializes both the driver and the keyboard hardware, so you may want to check to see if a device is connected via [[83Plus:Software:usb8x/Asm_Interface/IsDeviceConnected|IsDeviceConnected]] first.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After initializing the keyboard, use [[83Plus:Software:usb8x/Asm_Interface/KBD/KBDGetKey|KBDGetKey]] to get keypress information.  The driver maintains a 6-key keyboard buffer, so be sure to check for new keypresses with KBDGetKey regularly so the buffer doesn't fill.&lt;br /&gt;
&lt;br /&gt;
== Entry Points ==&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/KBD/KBDCheckDirect|KBDCheckDirect]] || Check current keyboard matrix&lt;br /&gt;
|-&lt;br /&gt;
| [[83Plus:Software:usb8x/Asm_Interface/KBD/KBDInit|KBDInit]] || Initialize the keyboard driver and hardware&lt;br /&gt;
|-&lt;br /&gt;
| [[83Plus:Software:usb8x/Asm_Interface/KBD/KBDGetKey|KBDGetKey]] || Get key presses&lt;br /&gt;
|-&lt;br /&gt;
| [[83Plus:Software:usb8x/Asm_Interface/KBD/KBDGetMods|KBDGetMods]] || Get current modifier key status&lt;br /&gt;
|-&lt;br /&gt;
| [[83Plus:Software:usb8x/Asm_Interface/KBD/KBDVersion|KBDVersion]] || Get driver version and RAM requirements&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Typhox</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:Software:usb8x/Asm_Interface/KBD</id>
		<title>83Plus:Software:usb8x/Asm Interface/KBD</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:Software:usb8x/Asm_Interface/KBD"/>
				<updated>2010-01-17T18:06:09Z</updated>
		
		<summary type="html">&lt;p&gt;Typhox: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The usb8x keyboard driver is compatible with any keyboard conforming to the USB HID keyboard standard.  However, it is not compatible with devices that have a keyboard connected to an internal hub (combination keyboard/mice, for example).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The keyboard driver is initialized via [[83Plus:Software:usb8x/Asm_Interface/KBD/KBDInit|KBDInit]].  This entry point initializes both the driver and the keyboard hardware, so you may want to check to see if a device is connected via [[../IsDeviceConnected|IsDeviceConnected]] first.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After initializing the keyboard, use [[83Plus:Software:usb8x/Asm_Interface/KBD/KBDGetKey|KBDGetKey]] to get keypress information.  The driver maintains a 6-key keyboard buffer, so be sure to check for new keypresses with KBDGetKey regularly so the buffer doesn't fill.&lt;br /&gt;
&lt;br /&gt;
== Entry Points ==&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/KBD/KBDCheckDirect|KBDCheckDirect]] || Check current keyboard matrix&lt;br /&gt;
|-&lt;br /&gt;
| [[83Plus:Software:usb8x/Asm_Interface/KBD/KBDInit|KBDInit]] || Initialize the keyboard driver and hardware&lt;br /&gt;
|-&lt;br /&gt;
| [[83Plus:Software:usb8x/Asm_Interface/KBD/KBDGetKey|KBDGetKey]] || Get key presses&lt;br /&gt;
|-&lt;br /&gt;
| [[83Plus:Software:usb8x/Asm_Interface/KBD/KBDGetMods|KBDGetMods]] || Get current modifier key status&lt;br /&gt;
|-&lt;br /&gt;
| [[83Plus:Software:usb8x/Asm_Interface/KBD/KBDVersion|KBDVersion]] || Get driver version and RAM requirements&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Typhox</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=83Plus:Software:usb8x/Asm_Interface</id>
		<title>83Plus:Software:usb8x/Asm Interface</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=83Plus:Software:usb8x/Asm_Interface"/>
				<updated>2010-01-17T17:49:11Z</updated>
		
		<summary type="html">&lt;p&gt;Typhox: Link target was wrong&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Many usb8x functions can be used by other programs/applications through usb8x's assembly language U_CALL interface.  Macros are provded in usb8x.inc to simplify the process.  The macros require a 32-byte RAM buffer defined as USBDriverCall.  The U_CALL system must be initialized by the application as follows:&lt;br /&gt;
 U_CALL_INIT CallBackRoutine&lt;br /&gt;
Where CallBackRoutine is a subroutine that will be called when data arrives on the USB port.  Some internal drivers override the user supplied callback address, but you must still provide one.  If U_CALL_INIT returns carry, usb8x is not loaded on the calculator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After the U_CALL system has been initialized with U_CALL_INIT, use the U_CALL macro to call usb8x entry points.  The first entry point you should call is [[83Plus:Software:usb8x/Asm_Interface/DriverInit|DriverInit]] as most other entry points require the driver be initialized before use.  '''Be sure to call [[83Plus:Software:usb8x/Asm_Interface/HostKill|HostKill]] and [[83Plus:Software:usb8x/Asm_Interface/DriverKill|DriverKill]] before quitting your program.'''&lt;br /&gt;
&lt;br /&gt;
==Internal Drivers==&lt;br /&gt;
Several drivers are provided by usb8x to control specific devices.  If you are interested in using usb8x in a game or program (as opposed to writing a driver for a new device), the pages below document the entry points you are most likely interested in.&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|Mass Storage]] || Communicate with flash drives, hard drives, and other devices conforming to the USB MSD standard.&lt;br /&gt;
|-&lt;br /&gt;
|[[83Plus:Software:usb8x/Asm_Interface/Mouse|Mouse]] || Communicate with mice and other pointing devices conforming to the USB HID mouse standard.&lt;br /&gt;
|-&lt;br /&gt;
|[[83Plus:Software:usb8x/Asm_Interface/KBD|Keyboard]] || Communicate with keyboards comforming to the USB HID keyboard standard.&lt;br /&gt;
|-&lt;br /&gt;
|[[83Plus:Software:usb8x/Asm_Interface/Silver|SilverLink]] || Use the TI-Graphlink SilverLink to communicate with another calculator.&lt;br /&gt;
|-&lt;br /&gt;
|[[83Plus:Software:usb8x/Asm_Interface/Pad|GamePad]] || Communicate with compatible gamepad controllers.&lt;br /&gt;
|-&lt;br /&gt;
|[[83Plus:Software:usb8x/Asm_Interface/Vernier|Vernier]] || Communicate with [http://www.vernier.com/easy/easytemp.html EasyTemp] or other Vernier devices.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==High Level Entry Points==&lt;br /&gt;
The following entry points may be useful for any program using usb8x, whether it be using an internal driver or low level entry points to create a new driver.&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/DriverInit|DriverInit]] || Initialize the USB driver&lt;br /&gt;
|-&lt;br /&gt;
|[[83Plus:Software:usb8x/Asm_Interface/DriverKill|DriverKill]] || Uninitialize the USB driver&lt;br /&gt;
|-&lt;br /&gt;
|[[83Plus:Software:usb8x/Asm_Interface/GetErrorCode|GetErrorCode]] || Returns the current error and sub-error codes&lt;br /&gt;
|-&lt;br /&gt;
|[[83Plus:Software:usb8x/Asm_Interface/GetVersion|GetVersion]] || Returns the current driver version&lt;br /&gt;
|-&lt;br /&gt;
|[[83Plus:Software:usb8x/Asm_Interface/HostKill|HostKill]] || Uninitialize a USB device&lt;br /&gt;
|-&lt;br /&gt;
|[[83Plus:Software:usb8x/Asm_Interface/IsDeviceConnected|IsDeviceConnected]] || Tests if a device is connected to the USB port&lt;br /&gt;
|-&lt;br /&gt;
|[[83Plus:Software:usb8x/Asm_Interface/WaitTimerB|WaitTimerB]] || Precise delay&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Low Level Entry Points==&lt;br /&gt;
These are the entry points you're most likely interested in using if you want to create a device driver for a new device.&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/AutoSetup|AutoSetup]] || Automatically sets up USB device&lt;br /&gt;
|-&lt;br /&gt;
|[[83Plus:Software:usb8x/Asm_Interface/ConfigureDevice|ConfigureDevice]] || Chooses a device configuration&lt;br /&gt;
|-&lt;br /&gt;
|[[83Plus:Software:usb8x/Asm_Interface/FindDescriptor|FindDescriptor]] || Finds a specific descriptor in a list&lt;br /&gt;
|-&lt;br /&gt;
|[[83Plus:Software:usb8x/Asm_Interface/FindPipe|FindPipe]] || Finds a pipe matching characteristics&lt;br /&gt;
|-&lt;br /&gt;
|[[83Plus:Software:usb8x/Asm_Interface/GetClass|GetClass]] || Returns the class and subclass for the current device&lt;br /&gt;
|-&lt;br /&gt;
|[[83Plus:Software:usb8x/Asm_Interface/GetIDs|GetIDs]] || Returns product and vender IDs for current device&lt;br /&gt;
|-&lt;br /&gt;
|[[83Plus:Software:usb8x/Asm_Interface/HostInit|HostInit]] || Initialize a USB device&lt;br /&gt;
|-&lt;br /&gt;
|[[83Plus:Software:usb8x/Asm_Interface/InternalInfo|InternalInfo]] || Returns current internal usb8x settings&lt;br /&gt;
|-&lt;br /&gt;
|[[83Plus:Software:usb8x/Asm_Interface/LogCustom|LogCustom]] || Adds an entry to current log file&lt;br /&gt;
|-&lt;br /&gt;
|[[83Plus:Software:usb8x/Asm_Interface/PipeInfo|PipeInfo]] || Gets direction, type, and packet size for a pipe&lt;br /&gt;
|-&lt;br /&gt;
|[[83Plus:Software:usb8x/Asm_Interface/Pump|Pump]] || Should be called periodically when pump mode is on to poll USB port&lt;br /&gt;
|-&lt;br /&gt;
|[[83Plus:Software:usb8x/Asm_Interface/PumpOff|PumpOff]] || Turns off pump mode&lt;br /&gt;
|-&lt;br /&gt;
|[[83Plus:Software:usb8x/Asm_Interface/PumpOn|PumpOn]] || Turns on pump mode so that usb8x can be used with TIOS interrupt disabled&lt;br /&gt;
|-&lt;br /&gt;
|[[83Plus:Software:usb8x/Asm_Interface/ReadDescriptor|ReadDescriptor]] || Reads a descriptor from the device&lt;br /&gt;
|-&lt;br /&gt;
|[[83Plus:Software:usb8x/Asm_Interface/ReqData|ReqData]] || Request data from an incoming pipe&lt;br /&gt;
|-&lt;br /&gt;
|[[83Plus:Software:usb8x/Asm_Interface/SendControlData|SendControlData]] || Sends data to the control pipe&lt;br /&gt;
|-&lt;br /&gt;
|[[83Plus:Software:usb8x/Asm_Interface/SendControlDataOut|SendControlDataOut]] || Sends data to the control pipe with an out data stage&lt;br /&gt;
|-&lt;br /&gt;
|[[83Plus:Software:usb8x/Asm_Interface/SendData|SendData]] || Send data to the device&lt;br /&gt;
|-&lt;br /&gt;
|[[83Plus:Software:usb8x/Asm_Interface/SetCallBack|SetCallBack]] || Sets the current callback routine&lt;br /&gt;
|-&lt;br /&gt;
|[[83Plus:Software:usb8x/Asm_Interface/SetupInPipe|SetupInPipe]] || Sets up an incoming pipe&lt;br /&gt;
|-&lt;br /&gt;
|[[83Plus:Software:usb8x/Asm_Interface/SetupLog|SetupLog]] || Starts logger&lt;br /&gt;
|-&lt;br /&gt;
|[[83Plus:Software:usb8x/Asm_Interface/SetupOutPipe|SetupOutPipe]] || Sets up an outgoing pipe&lt;br /&gt;
|-&lt;br /&gt;
|[[83Plus:Software:usb8x/Asm_Interface/StopLog|StopLog]] || Stops logger&lt;br /&gt;
|-&lt;br /&gt;
|[[83Plus:Software:usb8x/Asm_Interface/WaitTimerB|WaitTimerB]] || Precise delay&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Typhox</name></author>	</entry>

	</feed>