<?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/index.php?action=history&amp;feed=atom&amp;title=84PCE%3AOS%3AC_Include_File</id>
		<title>84PCE:OS:C Include File - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://wikiti.brandonw.net/index.php?action=history&amp;feed=atom&amp;title=84PCE%3AOS%3AC_Include_File"/>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=84PCE:OS:C_Include_File&amp;action=history"/>
		<updated>2026-04-28T12:09:44Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.23.5</generator>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=84PCE:OS:C_Include_File&amp;diff=11389&amp;oldid=prev</id>
		<title>MateoConLechuga: Blanked the page</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=84PCE:OS:C_Include_File&amp;diff=11389&amp;oldid=prev"/>
				<updated>2017-05-06T00:22:12Z</updated>
		
		<summary type="html">&lt;p&gt;Blanked the page&lt;/p&gt;
&lt;a href=&quot;https://wikiti.brandonw.net/index.php?title=84PCE:OS:C_Include_File&amp;amp;diff=11389&amp;amp;oldid=11349&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>MateoConLechuga</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=84PCE:OS:C_Include_File&amp;diff=11349&amp;oldid=prev</id>
		<title>MateoConLechuga at 06:34, 25 October 2016</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=84PCE:OS:C_Include_File&amp;diff=11349&amp;oldid=prev"/>
				<updated>2016-10-25T06:34:13Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://wikiti.brandonw.net/index.php?title=84PCE:OS:C_Include_File&amp;amp;diff=11349&amp;amp;oldid=11336&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>MateoConLechuga</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=84PCE:OS:C_Include_File&amp;diff=11336&amp;oldid=prev</id>
		<title>MateoConLechuga at 22:55, 7 September 2016</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=84PCE:OS:C_Include_File&amp;diff=11336&amp;oldid=prev"/>
				<updated>2016-09-07T22:55:14Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://wikiti.brandonw.net/index.php?title=84PCE:OS:C_Include_File&amp;amp;diff=11336&amp;amp;oldid=11038&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>MateoConLechuga</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=84PCE:OS:C_Include_File&amp;diff=11038&amp;oldid=prev</id>
		<title>MateoConLechuga at 07:33, 6 March 2016</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=84PCE:OS:C_Include_File&amp;diff=11038&amp;oldid=prev"/>
				<updated>2016-03-06T07:33:57Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 07:33, 6 March 2016&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:84PCE:OS_Information]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= C Function Prototypes=&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= C Function Prototypes=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;// Parts from Matt &amp;quot;MateoConLechuga&amp;quot; Waltz and Jacob &amp;quot;jacobly&amp;quot; Young, in addtion to&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;// Parts from Matt &amp;quot;MateoConLechuga&amp;quot; Waltz and Jacob &amp;quot;jacobly&amp;quot; Young, in addtion to&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>MateoConLechuga</name></author>	</entry>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=84PCE:OS:C_Include_File&amp;diff=11037&amp;oldid=prev</id>
		<title>MateoConLechuga: Created page with &quot;= C Function Prototypes= &lt;pre&gt;// Parts from Matt &quot;MateoConLechuga&quot; Waltz and Jacob &quot;jacobly&quot; Young, in addtion to // contributors of http://wikiti.brandonw.net/index.php?title...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=84PCE:OS:C_Include_File&amp;diff=11037&amp;oldid=prev"/>
				<updated>2016-03-06T07:32:42Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;= C Function Prototypes= &amp;lt;pre&amp;gt;// Parts from Matt &amp;quot;MateoConLechuga&amp;quot; Waltz and Jacob &amp;quot;jacobly&amp;quot; Young, in addtion to // contributors of http://wikiti.brandonw.net/index.php?title...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= C Function Prototypes=&lt;br /&gt;
&amp;lt;pre&amp;gt;// Parts from Matt &amp;quot;MateoConLechuga&amp;quot; Waltz and Jacob &amp;quot;jacobly&amp;quot; Young, in addtion to&lt;br /&gt;
// contributors of http://wikiti.brandonw.net/index.php?title=84PCE:OS:Include_File&lt;br /&gt;
// Latest as of March. 5, 2016&lt;br /&gt;
&lt;br /&gt;
#ifndef TICE_H&lt;br /&gt;
#define TICE_H&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdbool.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdint.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/* Defines for MMIO memory areas */&lt;br /&gt;
&lt;br /&gt;
/* RTC defines */&lt;br /&gt;
/* There’s a whole slew of bootcode RTC functions, but a lot of them are kind of pointless when you could just use these defines from MMIO */&lt;br /&gt;
#define rtc_GetSeconds()        (*((uint8_t*)0xF30000))&lt;br /&gt;
#define rtc_GetMinutes()        (*((uint8_t*)0xF30004))&lt;br /&gt;
#define rtc_GetHours()          (*((uint8_t*)0xF30008))&lt;br /&gt;
#define rtc_GetDays()           (*((uint16_t*)0xF3000C))&lt;br /&gt;
#define rtc_GetControl()        (*((uint8_t*)0xF30020))&lt;br /&gt;
#define rtc_SetControl(c)       ((*((uint8_t*)0xF30020)) = (uint8_t)(c))&lt;br /&gt;
#define rtc_LoadSetTime()       ((*((uint8_t*)0xF30020)) = (*((uint8_t*)0xF30020))|64)&lt;br /&gt;
#define rtc_SetSeconds(s)       ((*((uint8_t*)0xF30024)) = (uint8_t)(s))&lt;br /&gt;
#define rtc_SetMinutes(m)       ((*((uint8_t*)0xF30028)) = (uint8_t)(m))&lt;br /&gt;
#define rtc_SetHours(h)         ((*((uint8_t*)0xF3002C)) = (uint8_t)(h))&lt;br /&gt;
#define rtc_SetDays(d)          ((*((uint16_t*)0xF3002C)) = (uint16_t)(d))&lt;br /&gt;
#define rtc_Time()              (*(volatile uint32_t*)0xF30044)&lt;br /&gt;
&lt;br /&gt;
/* LCD defines */&lt;br /&gt;
#define lcd_GetBacklightLevel()  (*((uint8_t*)0xF60024))&lt;br /&gt;
#define lcd_SetBacklightLevel(b) ((*((uint8_t*)0xF60024)) = (uint8_t)(b);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * OS varaible type definitions&lt;br /&gt;
 */&lt;br /&gt;
typedef struct { int8_t sign, exp; uint8_t mant[7]; } real_t;&lt;br /&gt;
typedef struct { real_t real, imag; } cplx_t;&lt;br /&gt;
typedef struct { uint16_t dim; real_t *items; } list_t;&lt;br /&gt;
typedef struct { uint16_t dim; cplx_t *items; } cplx_list_t;&lt;br /&gt;
typedef struct { uint8_t cols, rows; real_t *items; } matrix_t;&lt;br /&gt;
typedef struct { uint16_t size; uint8_t *data; } var_t;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Cleans up everything and gets ready to enter back to the OS&lt;br /&gt;
 * when you are ready to exit your program&lt;br /&gt;
 */&lt;br /&gt;
void pgrm_CleanUp(void);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * A faster implementation of memset&lt;br /&gt;
 */&lt;br /&gt;
void *memset_fast(void *ptr,int value,size_t num);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Returns the Bootcode version major&lt;br /&gt;
 */&lt;br /&gt;
uint8_t boot_GetBootVerMajor(void);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Returns the Bootcode version minor&lt;br /&gt;
 */&lt;br /&gt;
uint8_t boot_GetBootVerMinor(void);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Returns the Harware version&lt;br /&gt;
 */&lt;br /&gt;
uint8_t boot_GetHardwareVers(void);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Turns all of VRAM into 0xFF (white)&lt;br /&gt;
 */&lt;br /&gt;
void boot_ClearVRAM(void);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Checks if the [on] key was pressed&lt;br /&gt;
 */&lt;br /&gt;
bool boot_CheckOnPressed(void);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Returns extended keys as 16-bits&lt;br /&gt;
 */&lt;br /&gt;
int os_GetKey(void);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Performs an OS call to get the keypad scan code&lt;br /&gt;
 */&lt;br /&gt;
int os_GetCSC(void);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Disables the OS cursor&lt;br /&gt;
 */&lt;br /&gt;
void os_DisableCursor(void);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Enables the OS cursor&lt;br /&gt;
 */&lt;br /&gt;
void os_EnableCursor(void);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Set/Get the foreground color used to draw text on the graphscreen&lt;br /&gt;
 */&lt;br /&gt;
void os_SetDrawFGColor(int color);&lt;br /&gt;
int os_GetDrawFGColor(void);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Set/Get the backgroundground color used to draw text on the graphscreen&lt;br /&gt;
 * os_GetDrawBGColor is broken; use at your own risk&lt;br /&gt;
 */&lt;br /&gt;
void os_SetDrawBGColor(int color);&lt;br /&gt;
void os_GetDrawBGColor_BROKEN(int color);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Set/Get the cursor posistion used on the homescreen&lt;br /&gt;
 */&lt;br /&gt;
void os_SetCursorPos(uint8_t curRow, uint8_t curCol);&lt;br /&gt;
void os_GetCursorPos(unsigned int *curRow, unsigned int *curCol);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Selects/Gets the font to use when drawing on the graphscreen&lt;br /&gt;
 * 0: small font&lt;br /&gt;
 * 1: large monospace font&lt;br /&gt;
 */&lt;br /&gt;
void os_FontSelect(char id);&lt;br /&gt;
int os_FontGetID(void);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Returns the width of a string in the varaible-width format&lt;br /&gt;
 * Second function is used to get the height of the characters&lt;br /&gt;
 */&lt;br /&gt;
int os_FontGetWidth(const char *string);&lt;br /&gt;
int os_FontGetHeight(void);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Draws a text using the small font to the screen&lt;br /&gt;
 * Returns the end column&lt;br /&gt;
 */&lt;br /&gt;
int os_FontDrawText(const char *string, uint16_t col, uint8_t row);&lt;br /&gt;
int os_FontDrawTransText(const char *string, uint16_t col, uint8_t row);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Puts some text at the current homescreen cursor location&lt;br /&gt;
 * Returns 1 if string fits on screen, 0 otherwise&lt;br /&gt;
 */&lt;br /&gt;
int os_PutStrFull(const char *string);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Puts some text at the current homescreen cursor location&lt;br /&gt;
 * Returns 1 if string fits on line, 0 otherwise&lt;br /&gt;
 */&lt;br /&gt;
int os_PutStrLine(const char *string);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Set/Get a particular flag variable&lt;br /&gt;
 */&lt;br /&gt;
void os_SetFlagByte(int offset, uint8_t set);&lt;br /&gt;
uint8_t os_GetFlagByte(int offset);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Returns amount of free ram, free set to start of free ram&lt;br /&gt;
 */&lt;br /&gt;
size_t os_MemChk(void **free);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Throws an OS error&lt;br /&gt;
 */&lt;br /&gt;
void os_ThrowError(uint8_t error);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Returns a pointer to symtable of the OS&lt;br /&gt;
 */&lt;br /&gt;
void *os_GetSymTablePtr(void);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Creates an appvar; and returns a pointer to the structure &lt;br /&gt;
 * Returns NULL if creation failed for some reason, otherwise a pointer to the size bytes&lt;br /&gt;
 */&lt;br /&gt;
var_t *os_CreateAppVar(const char *name, uint16_t size);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Returns next entry or NULL if no more entries, pass os_GetSymTablePtr() as first entry&lt;br /&gt;
 */&lt;br /&gt;
void *os_NextSymEntry(void *entry, uint24_t *type, uint24_t *nameLength, char *name, void **data);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * If file exists, returns 1 and sets entry and data, otherwise returns 0.&lt;br /&gt;
 * entry and/or data can be NULL if you don't care&lt;br /&gt;
 */&lt;br /&gt;
int os_ChkFindSym(uint8_t type, const char *name, void **entry, void **data);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * type is set to the current varaible type in ANS, and a pointer to the data is returned&lt;br /&gt;
 * Returns NULL if Ans doesn't exist or type is NULL&lt;br /&gt;
 */&lt;br /&gt;
void *os_RclAns(uint8_t *type);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Copies a real_t type to another location&lt;br /&gt;
 * Returns dest&lt;br /&gt;
 */&lt;br /&gt;
real_t *os_RealCopy(real_t *dest, const real_t *src);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Urnary operations used to interact with the OS math functions&lt;br /&gt;
 * All return result&lt;br /&gt;
 */&lt;br /&gt;
real_t *os_RealAcosRad(real_t *result, const real_t *arg);&lt;br /&gt;
real_t *os_RealAsinRad(real_t *result, const real_t *arg);&lt;br /&gt;
real_t *os_RealAtanRad(real_t *result, const real_t *arg);&lt;br /&gt;
real_t *os_RealCosRad(real_t *result, const real_t *arg);&lt;br /&gt;
real_t *os_RealRadToDeg(real_t *result, const real_t *arg);&lt;br /&gt;
real_t *os_RealExp(real_t *result, const real_t *arg);&lt;br /&gt;
real_t *os_RealFloor(real_t *result, const real_t *arg);&lt;br /&gt;
real_t *os_RealFrac(real_t *result, const real_t *arg);&lt;br /&gt;
real_t *os_RealRoundInt(real_t *result, const real_t *arg);&lt;br /&gt;
real_t *os_RealLog(real_t *result, const real_t *arg);&lt;br /&gt;
real_t *os_RealNeg(real_t *result, const real_t *arg);&lt;br /&gt;
real_t *os_RealDegToRad(real_t *result, const real_t *arg);&lt;br /&gt;
real_t *os_RealInv(real_t *result, const real_t *arg);&lt;br /&gt;
real_t *os_RealSinRad(real_t *result, const real_t *arg);&lt;br /&gt;
real_t *os_RealSqrt(real_t *result, const real_t *arg);&lt;br /&gt;
real_t *os_RealTanRad(real_t *result, const real_t *arg);&lt;br /&gt;
real_t *os_RealInt(real_t *result, const real_t *arg);&lt;br /&gt;
cplx_t *os_CplxSquare(cplx_t *result, const cplx_t *arg);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Binary operations used to interact with the OS math functions&lt;br /&gt;
 * All return result&lt;br /&gt;
 */&lt;br /&gt;
real_t *os_RealAdd(real_t *result, const real_t *arg1, const real_t *arg2);&lt;br /&gt;
real_t *os_RealDiv(real_t *result, const real_t *arg1, const real_t *arg2);&lt;br /&gt;
real_t *os_RealGcd(real_t *result, const real_t *arg1, const real_t *arg2);&lt;br /&gt;
real_t *os_RealLcm(real_t *result, const real_t *arg1, const real_t *arg2);&lt;br /&gt;
real_t *os_RealMax(real_t *result, const real_t *arg1, const real_t *arg2);&lt;br /&gt;
real_t *os_RealMin(real_t *result, const real_t *arg1, const real_t *arg2);&lt;br /&gt;
real_t *os_RealMul(real_t *result, const real_t *arg1, const real_t *arg2);&lt;br /&gt;
real_t *os_RealNcr(real_t *result, const real_t *total, const real_t *num);&lt;br /&gt;
real_t *os_RealNpr(real_t *result, const real_t *total, const real_t *num);&lt;br /&gt;
real_t *os_RealPow(real_t *result, const real_t *base, const real_t *exp);&lt;br /&gt;
real_t *os_RealRandInt(real_t *result, const real_t *min, const real_t *max);&lt;br /&gt;
real_t *os_RealMod(real_t *result, const real_t *arg1, const real_t *arg2);&lt;br /&gt;
real_t *os_RealSub(real_t *result, const real_t *arg1, const real_t *arg2);&lt;br /&gt;
/**&lt;br /&gt;
 * digits must be in the range 0 - 9&lt;br /&gt;
 */&lt;br /&gt;
real_t *os_RealRound(real_t *result, const real_t *arg, char digits);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Returns -1, 0, or 1 depending on the comparison&lt;br /&gt;
 */&lt;br /&gt;
int os_RealCompare(const real_t *arg1, const real_t *arg2);&lt;br /&gt;
&lt;br /&gt;
/** os_RealToStr:&lt;br /&gt;
  *  This converts a ti-float to a ti-ascii string.&lt;br /&gt;
  *  result: zero terminated string copied to this address&lt;br /&gt;
  *  arg: real to convert&lt;br /&gt;
  * maxLength: &lt;br /&gt;
  *  &amp;lt;=0: use default max length (14)&lt;br /&gt;
  *  &amp;gt;0:  max length of result, minimum of 6&lt;br /&gt;
  * mode:&lt;br /&gt;
  *  0: Use current mode for everything (digits ignored)&lt;br /&gt;
  *  1: Normal mode&lt;br /&gt;
  *  2: Sci mode&lt;br /&gt;
  *  3: Eng mode&lt;br /&gt;
  *  &amp;gt;4: Use current Normal/Sci/Eng mode (digits still used)&lt;br /&gt;
  * digits:&lt;br /&gt;
  *  -1:  Float mode&lt;br /&gt;
  *  0-9: Fix # mode&lt;br /&gt;
  *  returns length of result&lt;br /&gt;
  */&lt;br /&gt;
int os_RealToStr(char *result, const real_t *arg, char maxLength, char mode, char digits);&lt;br /&gt;
&lt;br /&gt;
/** os_StrToReal:&lt;br /&gt;
  *  This converts a ti-ascii string to a ti-float.&lt;br /&gt;
  *  String format regexp: / *[-\032+]?[0-9]*(\.[0-9]*)?([eE\033][-\032+]?[0-9]*)?/&lt;br /&gt;
  *  result: resulting ti-float stored here, on exponent overflow this is +-9.9999999999999e99&lt;br /&gt;
  *  string: ti-ascii string to convert&lt;br /&gt;
  *  end: if non-null, pointer to end of parsed number is stored here&lt;br /&gt;
  *  returns result&lt;br /&gt;
  */&lt;br /&gt;
real_t *os_StrToReal(real_t *result, const char *string, char **end);&lt;br /&gt;
&lt;br /&gt;
/** &lt;br /&gt;
 * Basically a reimplemented form of printf that prints to some debugging device&lt;br /&gt;
 */&lt;br /&gt;
void boot_DebugPrintf(const char *string);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Turns off the calculator (probably not a good idea to use)&lt;br /&gt;
 */&lt;br /&gt;
void boot_TurnOff(void);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Inserts a new line at the current cursor posistion on the homescreen&lt;br /&gt;
 */&lt;br /&gt;
void boot_NewLine(void);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Prints the boot version at a really silly place on the homescreen&lt;br /&gt;
 */&lt;br /&gt;
void boot_PrintBootVersion(void);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Sets the calculator into 6MHz mode and 48MHz modes. Note that the ones&lt;br /&gt;
 * suffix with I perserve the interrupt vectors&lt;br /&gt;
 */&lt;br /&gt;
void boot_Set6MHzMode(void);&lt;br /&gt;
void boot_Set48MHzMode(void);&lt;br /&gt;
void boot_Set6MHzModeI(void);&lt;br /&gt;
void boot_Set48MHzModeI(void);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Returns the current battery status&lt;br /&gt;
 */&lt;br /&gt;
uint8_t boot_GetBatteryStatus(void);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Waits for just a bit&lt;br /&gt;
 * Someone should really look at this to see how long it actually is&lt;br /&gt;
 */&lt;br /&gt;
void boot_WaitShort(void);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Checks if the calculator is being powered via USB&lt;br /&gt;
 */&lt;br /&gt;
bool boot_USBPowered(void);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Checks if there is not a USB plug of A type in the USB port&lt;br /&gt;
 */&lt;br /&gt;
bool boot_NotPlugTypeA(void);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Set the time of the calculator&lt;br /&gt;
 */&lt;br /&gt;
void boot_SetTime(uint8_t seconds, uint8_t minutes, uint8_t hours);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * High 8 is unsigned offset, low 8 is bits to test&lt;br /&gt;
 * os_TestFlagBits will return a 0 or 1&lt;br /&gt;
 */&lt;br /&gt;
int os_TestFlagBits(uint16_t offset_pattern);&lt;br /&gt;
void os_SetFlagBits(int16_t offset_pattern);&lt;br /&gt;
void os_ResetFlagBits(int16_t offset_pattern);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Whole bunch of possibly useful timer functions&lt;br /&gt;
 */&lt;br /&gt;
void boot_SetTimersControlRegister(uint16_t value);&lt;br /&gt;
uint16_t boot_GetTimersControlRegister(void);&lt;br /&gt;
void boot_SetTimersInterruptStatus(uint16_t value);&lt;br /&gt;
uint16_t boot_GetTimersInterruptStatus(void);&lt;br /&gt;
void boot_SetTimersInterruptMask(uint16_t value);&lt;br /&gt;
uint16_t boot_GetTimersInterruptMask(void);&lt;br /&gt;
void boot_SetTimer1Counter(uint32_t count);&lt;br /&gt;
uint32_t boot_GetTimer1Counter(void);&lt;br /&gt;
void boot_SetTimer1ReloadValue(uint32_t value);&lt;br /&gt;
uint32_t boot_GetTimer1ReloadValue(void);&lt;br /&gt;
void boot_SetTimer1MatchValue1(uint32_t value);&lt;br /&gt;
uint32_t boot_GetTimer1MatchValue1(void);&lt;br /&gt;
void boot_SetTimer1MatchValue2(uint32_t value);&lt;br /&gt;
uint32_t boot_GetTimer1MatchValue2(void);&lt;br /&gt;
void boot_SetTimer2Counter(uint32_t count);&lt;br /&gt;
uint32_t boot_GetTimer2Counter(void);&lt;br /&gt;
void boot_SetTimer2ReloadValue(uint32_t value);&lt;br /&gt;
uint32_t boot_GetTimer2ReloadValue(void);&lt;br /&gt;
void boot_SetTimer2MatchValue1(uint32_t value);&lt;br /&gt;
uint32_t boot_GetTimer2MatchValue1(void);&lt;br /&gt;
void boot_SetTimer2MatchValue2(uint32_t value);&lt;br /&gt;
uint32_t boot_GetTimer2MatchValue2(void);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Things you shouldn't use unless you know what you are doing:&lt;br /&gt;
 */&lt;br /&gt;
void os_ForceCmdNoChar(void);&lt;br /&gt;
/* ============================================ */&lt;br /&gt;
&lt;br /&gt;
/* === OS and Bootcode Funtion Wrapper ======== */&lt;br /&gt;
#pragma asm &amp;quot;xref __saveIY&amp;quot;&lt;br /&gt;
#define _OS(FUNC) \&lt;br /&gt;
    do { \&lt;br /&gt;
      asm(&amp;quot;	LD	(__saveIY),IY&amp;quot;); \&lt;br /&gt;
      asm(&amp;quot;	LD	IY, 13631616&amp;quot;); \&lt;br /&gt;
      FUNC ; \&lt;br /&gt;
      asm(&amp;quot;	LD	IY,(__saveIY)&amp;quot;); \&lt;br /&gt;
    } while (0)&lt;br /&gt;
/* ============================================ */&lt;br /&gt;
&lt;br /&gt;
#endif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= C Function Locations and definitions =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;; C Functions present in the CE OS and Bootcode&lt;br /&gt;
&lt;br /&gt;
; === External Definitions ===================&lt;br /&gt;
    .assume ADL=1&lt;br /&gt;
    .def _boot_GetBootVerMajor&lt;br /&gt;
    .def _boot_GetHardwareVers&lt;br /&gt;
    .def _boot_GetBootVerMinor&lt;br /&gt;
    .def _boot_DebugPrintf&lt;br /&gt;
    .def _boot_ClearVRAM&lt;br /&gt;
    .def _boot_TurnOff&lt;br /&gt;
    .def _boot_NewLine&lt;br /&gt;
    .def _boot_PrintBootVersion&lt;br /&gt;
    .def _boot_Set6MHzMode&lt;br /&gt;
    .def _boot_Set48MHzMode&lt;br /&gt;
    .def _boot_Set6MHzModeI&lt;br /&gt;
    .def _boot_Set48MHzModeI&lt;br /&gt;
    .def _boot_GetBatteryStatus&lt;br /&gt;
    .def _boot_WaitShort&lt;br /&gt;
    .def _boot_DoNothing1, _boot_DoNothing2&lt;br /&gt;
    .def _boot_USBPowered&lt;br /&gt;
    .def _boot_NotPlugTypeA&lt;br /&gt;
    .def _boot_SetTimersControlRegister&lt;br /&gt;
    .def _boot_GetTimersControlRegister&lt;br /&gt;
    .def _boot_SetTimersInterruptStatus&lt;br /&gt;
    .def _boot_GetTimersInterruptStatus&lt;br /&gt;
    .def _boot_SetTimersInterruptMask&lt;br /&gt;
    .def _boot_GetTimersInterruptMask&lt;br /&gt;
    .def _boot_SetTimer1Counter&lt;br /&gt;
    .def _boot_GetTimer1Counter&lt;br /&gt;
    .def _boot_SetTimer1ReloadValue&lt;br /&gt;
    .def _boot_GetTimer1ReloadValue&lt;br /&gt;
    .def _boot_SetTimer1MatchValue1&lt;br /&gt;
    .def _boot_GetTimer1MatchValue1&lt;br /&gt;
    .def _boot_SetTimer1MatchValue2 &lt;br /&gt;
    .def _boot_GetTimer1MatchValue2&lt;br /&gt;
    .def _boot_SetTimer2Counter&lt;br /&gt;
    .def _boot_GetTimer2Counter&lt;br /&gt;
    .def _boot_SetTimer2ReloadValue&lt;br /&gt;
    .def _boot_GetTimer2ReloadValue&lt;br /&gt;
    .def _boot_SetTimer2MatchValue1&lt;br /&gt;
    .def _boot_GetTimer2MatchValue1&lt;br /&gt;
    .def _boot_SetTimer2MatchValue2 &lt;br /&gt;
    .def _boot_GetTimer2MatchValue2&lt;br /&gt;
    .def _boot_CheckOnPressed&lt;br /&gt;
    .def _boot_SetTime&lt;br /&gt;
    .def _os_ThrowError&lt;br /&gt;
    .def _os_RealCopy&lt;br /&gt;
    .def _os_RealAsinRad&lt;br /&gt;
    .def _os_RealAcosRad&lt;br /&gt;
    .def _os_RealAtanRad&lt;br /&gt;
    .def _os_RealAdd&lt;br /&gt;
    .def _os_CplxSquare&lt;br /&gt;
    .def _os_RealCompare&lt;br /&gt;
    .def _os_RealCosRad&lt;br /&gt;
    .def _os_RealRadToDeg&lt;br /&gt;
    .def _os_RealDiv&lt;br /&gt;
    .def _os_RealExp&lt;br /&gt;
    .def _os_RealFloor&lt;br /&gt;
    .def _os_RealToStr&lt;br /&gt;
    .def _os_RealFrac&lt;br /&gt;
    .def _os_RealGcd&lt;br /&gt;
    .def _os_RealRoundInt&lt;br /&gt;
    .def _os_RealLcm&lt;br /&gt;
    .def _os_RealLog&lt;br /&gt;
    .def _os_RealMax&lt;br /&gt;
    .def _os_RealMin&lt;br /&gt;
    .def _os_RealMul&lt;br /&gt;
    .def _os_RealNcr&lt;br /&gt;
    .def _os_RealNeg&lt;br /&gt;
    .def _os_RealNpr&lt;br /&gt;
    .def _os_RealPow&lt;br /&gt;
    .def _os_RealDegToRad&lt;br /&gt;
    .def _os_RealRandInt&lt;br /&gt;
    .def _os_RealInv&lt;br /&gt;
    .def _os_RealMod&lt;br /&gt;
    .def _os_RealRound&lt;br /&gt;
    .def _os_RealSinRad&lt;br /&gt;
    .def _os_RealSqrt&lt;br /&gt;
    .def _os_RealSub&lt;br /&gt;
    .def _os_RealTanRad&lt;br /&gt;
    .def _os_StrToReal&lt;br /&gt;
    .def _os_RealInt&lt;br /&gt;
    .def _os_SetFlagBits&lt;br /&gt;
    .def _os_ResetFlagBits&lt;br /&gt;
    .def _os_TestFlagBits&lt;br /&gt;
    .def _os_SetFlagByte&lt;br /&gt;
    .def _os_GetFlagByte&lt;br /&gt;
    .def _os_GetCursorPos&lt;br /&gt;
    .def _os_PutStrFull&lt;br /&gt;
    .def _os_PutStrLine&lt;br /&gt;
    .def _os_SetCursorPos&lt;br /&gt;
    .def _os_GetKey&lt;br /&gt;
    .def _os_GetCSC&lt;br /&gt;
    .def _os_DisableCursor&lt;br /&gt;
    .def _os_EnableCursor&lt;br /&gt;
    .def _os_FontDrawText&lt;br /&gt;
    .def _os_FontGetHeight&lt;br /&gt;
    .def _os_FontGetWidth&lt;br /&gt;
    .def _os_InitDrawing&lt;br /&gt;
    .def _os_SetDrawBGColor&lt;br /&gt;
    .def _os_SetDrawFGColor&lt;br /&gt;
    .def _os_FontSelect&lt;br /&gt;
    .def _os_GetDrawBGColor_BROKEN&lt;br /&gt;
    .def _os_GetDrawFGColor&lt;br /&gt;
    .def _os_FontGetID&lt;br /&gt;
    .def _os_ForceCmdNoChar&lt;br /&gt;
    .def _os_GetSymTablePtr&lt;br /&gt;
    .def _os_NextSymEntry&lt;br /&gt;
    .def _os_ChkFindSym&lt;br /&gt;
    .def _os_MemChk&lt;br /&gt;
    .def _os_FontDrawTransText&lt;br /&gt;
    .def _os_CreateAppVar&lt;br /&gt;
; ============================================&lt;br /&gt;
&lt;br /&gt;
; === Location Equates =======================&lt;br /&gt;
_boot_GetBootVerMajor           equ 000080h&lt;br /&gt;
_boot_GetHardwareVers           equ 000084h&lt;br /&gt;
_boot_GetBootVerMinor           equ 00008Ch&lt;br /&gt;
_boot_DebugPrintf               equ 0000B4h&lt;br /&gt;
_boot_ClearVRAM                 equ 000374h&lt;br /&gt;
_boot_TurnOff                   equ 000388h&lt;br /&gt;
_boot_NewLine                   equ 000390h&lt;br /&gt;
_boot_PrintBootVersion          equ 000394h&lt;br /&gt;
_boot_Set6MHzMode               equ 00039Ch&lt;br /&gt;
_boot_Set48MHzMode              equ 0003A0h&lt;br /&gt;
_boot_Set6MHzModeI              equ 0003A4h&lt;br /&gt;
_boot_Set48MHzModeI             equ 0003A8h&lt;br /&gt;
_boot_GetBatteryStatus          equ 0003B0h&lt;br /&gt;
_boot_WaitShort                 equ 0003B4h&lt;br /&gt;
_boot_DoNothing1                equ 0003D8h&lt;br /&gt;
_boot_DoNothing2                equ 0003DCh&lt;br /&gt;
_boot_USBPowered                equ 0003E4h&lt;br /&gt;
_boot_NotPlugTypeA              equ 0003E8h&lt;br /&gt;
_boot_SetTimersControlRegister  equ 000520h&lt;br /&gt;
_boot_GetTimersControlRegister  equ 000524h&lt;br /&gt;
_boot_SetTimersInterruptStatus  equ 000528h&lt;br /&gt;
_boot_GetTimersInterruptStatus  equ 00052Ch&lt;br /&gt;
_boot_SetTimersInterruptMask    equ 000530h&lt;br /&gt;
_boot_GetTimersInterruptMask    equ 000534h&lt;br /&gt;
_boot_SetTimer1Counter          equ 000538h&lt;br /&gt;
_boot_GetTimer1Counter          equ 00053Ch&lt;br /&gt;
_boot_SetTimer1ReloadValue      equ 000540h&lt;br /&gt;
_boot_GetTimer1ReloadValue      equ 000544h&lt;br /&gt;
_boot_SetTimer1MatchValue1      equ 000548h&lt;br /&gt;
_boot_GetTimer1MatchValue1      equ 00054Ch&lt;br /&gt;
_boot_SetTimer1MatchValue2      equ 000550h&lt;br /&gt;
_boot_GetTimer1MatchValue2      equ 000554h&lt;br /&gt;
_boot_SetTimer2Counter          equ 000558h&lt;br /&gt;
_boot_GetTimer2Counter          equ 00055Ch&lt;br /&gt;
_boot_SetTimer2ReloadValue      equ 000560h&lt;br /&gt;
_boot_GetTimer2ReloadValue      equ 000564h&lt;br /&gt;
_boot_SetTimer2MatchValue1      equ 000568h&lt;br /&gt;
_boot_GetTimer2MatchValue1      equ 00056Ch&lt;br /&gt;
_boot_SetTimer2MatchValue2      equ 000570h&lt;br /&gt;
_boot_GetTimer2MatchValue2      equ 000574h&lt;br /&gt;
_boot_CheckOnPressed            equ 00057Ch&lt;br /&gt;
_boot_SetTime                   equ 0005B4h&lt;br /&gt;
_os_ThrowError                  equ 021C80h&lt;br /&gt;
_os_RealCopy                    equ 021C84h&lt;br /&gt;
_os_RealAsinRad                 equ 021C88h&lt;br /&gt;
_os_RealAcosRad                 equ 021C8Ch&lt;br /&gt;
_os_RealAtanRad                 equ 021C90h&lt;br /&gt;
_os_RealAdd                     equ 021C94h&lt;br /&gt;
_os_CplxSquare                  equ 021C98h&lt;br /&gt;
_os_RealCompare                 equ 021C9Ch&lt;br /&gt;
_os_RealCosRad                  equ 021CA0h&lt;br /&gt;
_os_RealRadToDeg                equ 021CA4h&lt;br /&gt;
_os_RealDiv                     equ 021CA8h&lt;br /&gt;
_os_RealExp                     equ 021CACh&lt;br /&gt;
_os_RealFloor                   equ 021CB0h&lt;br /&gt;
_os_RealToStr                   equ 021CB4h&lt;br /&gt;
_os_RealFrac                    equ 021CB8h&lt;br /&gt;
_os_RealGcd                     equ 021CBCh&lt;br /&gt;
_os_RealRoundInt                equ 021CC0h&lt;br /&gt;
_os_RealLcm                     equ 021CC4h&lt;br /&gt;
_os_RealLog                     equ 021CC8h&lt;br /&gt;
_os_RealMax                     equ 021CCCh&lt;br /&gt;
_os_RealMin                     equ 021CD0h&lt;br /&gt;
_os_RealMul                     equ 021CD4h&lt;br /&gt;
_os_RealNcr                     equ 021CD8h&lt;br /&gt;
_os_RealNeg                     equ 021CDCh&lt;br /&gt;
_os_RealNpr                     equ 021CE0h&lt;br /&gt;
_os_RealPow                     equ 021CE4h&lt;br /&gt;
_os_RealDegToRad                equ 021CE8h&lt;br /&gt;
_os_RealRandInt                 equ 021CECh&lt;br /&gt;
_os_RealInv                     equ 021CF0h&lt;br /&gt;
_os_RealMod                     equ 021CF4h&lt;br /&gt;
_os_RealRound                   equ 021CF8h&lt;br /&gt;
_os_RealSinRad                  equ 021CFCh&lt;br /&gt;
_os_RealSqrt                    equ 021D00h&lt;br /&gt;
_os_RealSub                     equ 021D04h&lt;br /&gt;
_os_RealTanRad                  equ 021D08h&lt;br /&gt;
_os_StrToReal                   equ 021D0Ch&lt;br /&gt;
_os_RealInt                     equ 021D10h &lt;br /&gt;
_os_SetFlagBits                 equ 021D14h&lt;br /&gt;
_os_ResetFlagBits               equ 021D18h&lt;br /&gt;
_os_TestFlagBits                equ 021D1Ch&lt;br /&gt;
_os_SetFlagByte                 equ 021D20h&lt;br /&gt;
_os_GetFlagByte                 equ 021D24h&lt;br /&gt;
_os_GetCursorPos                equ 021D28h&lt;br /&gt;
_os_PutStrFull                  equ 021D2Ch&lt;br /&gt;
_os_PutStrLine                  equ 021D30h&lt;br /&gt;
_os_SetCursorPos                equ 021D34h&lt;br /&gt;
_os_GetKey                      equ 021D38h&lt;br /&gt;
_os_GetCSC                      equ 021D3Ch&lt;br /&gt;
_os_DisableCursor               equ 021DE4h&lt;br /&gt;
_os_EnableCursor                equ 021DE8h&lt;br /&gt;
_os_FontDrawText                equ 021E00h&lt;br /&gt;
_os_FontGetHeight               equ 021E14h&lt;br /&gt;
_os_FontGetWidth                equ 021E18h&lt;br /&gt;
_os_InitDrawing                 equ 021E1Ch&lt;br /&gt;
_os_SetDrawBGColor              equ 021E20h&lt;br /&gt;
_os_SetDrawFGColor              equ 021E24h&lt;br /&gt;
_os_FontSelect                  equ 021E28h&lt;br /&gt;
_os_GetDrawBGColor_BROKEN       equ 021EE4h ; doesn't work due to bug (needs to be ld hl.sis)&lt;br /&gt;
_os_GetDrawFGColor              equ 021EE8h&lt;br /&gt;
_os_FontGetID                   equ 021EECh&lt;br /&gt;
_os_ForceCmdNoChar              equ 021FA8h&lt;br /&gt;
_os_GetSymTablePtr              equ 021FB0h&lt;br /&gt;
_os_NextSymEntry                equ 021FB4h&lt;br /&gt;
_os_ChkFindSym                  equ 021FB8h&lt;br /&gt;
_os_MemChk                      equ 021FF0h&lt;br /&gt;
_os_FontDrawTransText           equ 022178h&lt;br /&gt;
_os_CreateAppVar                equ 022184h&lt;br /&gt;
; ============================================&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>MateoConLechuga</name></author>	</entry>

	</feed>