tice.h
#include <tice.h>
This header includes defines for OS memory and prototypes for OS routines.
API Documentation
Core CE define file.
- Authors
Matt “MateoConLechuga” Waltz
Jacob “jacobly” Young
Defines
-
randInt(min, max)
Returns a pseudo-random integer in the range of
min
tomax
(inclusive).
-
os_ClrHome()
Resets the OS homescreen; accounts for split screen.
-
os_ClrHomeFull()
Resets the OS homescreen fully; ignores split screen mode.
-
rtc_Enable(int)
Enables the Real-Time-Clock (RTC).
- Parameters
int – Interrupt mask to enable specific RTC interrupts.
-
rtc_Set(sec, min, hr, day)
Sets the Real-Time-Clock (RTC) with new values.
Note
The set values do not take effect until the next RTC second. Verify the values have been loaded by waiting for rtc_IsBusy() to be false. The RTC will also need to be enabled.
- Parameters
sec – Second value to load.
min – Minute value to load.
hr – Hour value to load.
day – Day value to load.
-
rtc_SetAlarm(sec, min, hr)
Sets the Real-Time-Clock (RTC) alarm with new values.
- Parameters
sec – Second alarm value.
min – Minute alarm value.
hr – Hour alarm value.
-
rtc_Disable()
Disables the Real-Time-Clock (RTC).
-
rtc_IsBusy()
Checks if the RTC is busy setting newly loaded values.
-
rtc_AckInterrupt(mask)
Acknowledges an RTC interrupt. This should be used to clear the condition that is causing the interrupt.
- Parameters
mask – RTC interrupt mask.
-
rtc_ChkInterrupt(mask)
Checks if a RTC interrupt condition has occurred.
- Parameters
mask – RTC interrupt mask.
-
rtc_Time()
Gets a combination of the RTC time; useful for seeding random numbers via srand().
-
rtc_Seconds
RTC seconds
-
rtc_Minutes
RTC minutes
-
rtc_Hours
RTC hours
-
rtc_Days
RTC days
-
rtc_AlarmSeconds
RTC alarm seconds
-
rtc_AlarmMinutes
RTC alarm minutes
-
rtc_AlarmHours
RTC alarm hours
-
timer_Enable(n, rate, int, dir)
Enables timer
n
with the specified settings. The CE has 3 different timers.Warning
Timer 3 is usually employed by USB. Use it at your own risk.
- Parameters
n – Timer to enable (range 1 - 3 inclusive).
rate – Rate in Hz the timer ticks at. Can be TIMER_32K or TIMER_CPU.
int – Throw an interrupt when the timer reaches 0. Can be TIMER_0INT or TIMER_NOINT.
dir – Direction in which to count. Can be TIMER_UP or TIMER_DOWN.
-
timer_Disable(n)
Disables a timer.
- Parameters
n – Timer to disable (range 1 - 3 inclusive).
-
timer_Get(n)
Gets the current count value of a timer.
- Attention
Do not use this function if the timer is configured with TIMER_CPU. Use the timer_GetSafe() function instead.
- Parameters
n – Timer to get count value of (range 1 - 3 inclusive).
-
timer_GetSafe(n, dir)
Safely gets the current count value of a timer. This should be used if the timer is ticking at >= 1MHz.
- Parameters
n – Timer to get count value of (range 1 - 3 inclusive).
dir – Direction the timer is counting.
-
timer_GetLow(n)
If the timer count value will never exceed (2^24)-1, this function can be used in place of both timer_Get and timer_GetSafe. It returns the low 24 bits value of the full 32 bit count value, and is atomic safe.
- Parameters
n – Timer to get count value of (range 1 - 3 inclusive).
-
timer_Set(n, value)
Sets the count value of a timer.
- Parameters
n – Timer to set count value of (range 1 - 3 inclusive).
value – Value to set timer count to.
-
timer_GetReload(n)
Gets the current reload value of a timer. The reload value is loaded into the timer count when the timer reaches zero.
- Parameters
n – Timer to get count reload value of (range 1 - 3 inclusive).
-
timer_SetReload(n, value)
Sets the reload value of a timer. The reload value is loaded into the timer count when the timer reaches zero.
- Parameters
n – Timer to set count reload value of (range 1 - 3 inclusive).
value – Value to set timer reload count to.
-
timer_GetMatch(n, m)
Gets the match
m
value of a timer. There are two match value comparators per timer.- Parameters
n – Timer to get match comparator value of (range 1 - 3 inclusive).
m – Match compartor index (range 1 - 2 inclusive, recommended to use TIMER_MATCH(1) or TIMER_MATCH(2)).
-
timer_SetMatch(n, m, value)
Sets the match
m
value of a timer. There are two match value comparators per timer.- Parameters
n – Timer to set match comparator value of (range 1 - 3 inclusive).
m – Match compartor index (range 1 - 2 inclusive recommended to use TIMER_MATCH(1) or TIMER_MATCH(2)).
value – Value to set match compartor to.
-
timer_AckInterrupt(n, mask)
Acknowledges a timer interrupt. This should be used to clear the condition that is causing the interrupt.
- Parameters
n – Timer to acknowledge interrupt of (range 1 - 3 inclusive).
mask – Interrupt mask, combination of TIMER_RELOADED, TIMER_MATCH(1), or TIMER_MATCH(2).
-
timer_ChkInterrupt(n, mask)
Checks if a timer interrupt condition has occurred.
- Parameters
n – Timer to check interrupt for (range 1 - 3 inclusive).
mask – Interrupt mask, combination of TIMER_RELOADED, TIMER_MATCH(1), or TIMER_MATCH(2).
-
matrix_element(matrix, row, col)
Gets an element from a matrix
- Parameters
matrix – Structure of matrix
row – Row in matrix
col – Column in matrix
- Returns
real_t containing element data
-
lcd_Ram
Base address of memory-mapped RAM for the LCD
-
lcd_Control
LCD Control register
-
lcd_Palette
LCD palette registers, 512 bytes
-
lcd_BacklightLevel
Current backlight level of the LCD. 0 is bright. 255 is dark.
-
os_SmallFont
TIOS small font.
See also
-
os_LargeFont
TIOS large font.
See also
-
os_TextShadow
Text buffer, 260 bytes.
-
os_AsmPrgmSize
Current size of executing program.
-
os_PenCol
Small font column location.
-
os_PenRow
Small font row location.
-
os_OP1
OP1 Variable
-
os_OP2
OP2 Variable
-
os_OP3
OP3 Variable
-
os_OP4
OP4 Variable
-
os_OP5
OP5 Variable
-
os_OP6
OP6 Variable
-
os_OP7
OP7 Variable
-
LCD_WIDTH
Width of LCD in pixels
-
LCD_HEIGHT
Height of LCD in pixels
-
LCD_SIZE
Total number of pixels in LCD
-
TIMER_32K
Use the 32K clock for timer
-
TIMER_CPU
Use the CPU clock rate for timer
-
TIMER_0INT
Enable an interrupt when 0 is reached for the timer
-
TIMER_NOINT
Disable interrupts for the timer
-
TIMER_UP
Timer counts up
-
TIMER_DOWN
Timer counts down
-
TIMER_MATCH(i)
Timer hit the match value. There are 2 match values per timer
-
TIMER_RELOADED
Timer was reloaded (Needs TIMER_0INT enabled)
-
RTC_LOAD_INT
RTC load operation complete
-
RTC_ALARM_INT
RTC alarm interrupt
-
RTC_DAY_INT
RTC interrupt on day change
-
RTC_HR_INT
RTC interrupt on hour change
-
RTC_MIN_INT
RTC interrupt on minute change
-
RTC_SEC_INT
RTC interrupt on second change
-
RTC_INT_MASK
RTC mask for all interrupts
Typedefs
-
typedef struct system_info system_info_t
-
typedef uint8_t sk_key_t
Scan code type.
Enums
-
enum os_colors_t
Colors used by the OS
Values:
-
enumerator OS_COLOR_BLUE = 10
-
enumerator OS_COLOR_RED
-
enumerator OS_COLOR_BLACK
-
enumerator OS_COLOR_MAGENTA
-
enumerator OS_COLOR_GREEN
-
enumerator OS_COLOR_ORANGE
-
enumerator OS_COLOR_BROWN
-
enumerator OS_COLOR_NAVY
-
enumerator OS_COLOR_LTBLUE
-
enumerator OS_COLOR_YELLOW
-
enumerator OS_COLOR_WHITE
-
enumerator OS_COLOR_LTGRAY
-
enumerator OS_COLOR_MEDGRAY
-
enumerator OS_COLOR_GRAY
-
enumerator OS_COLOR_DARKGRAY
-
enumerator OS_COLOR_BLUE = 10
Functions
-
void delay(uint16_t msec)
Delays for a number of milliseconds.
Note
Counts time spent while interrupted. Assumes a CPU clock speed of 48MHz.
- Parameters
msec – number of milliseconds
-
uint32_t random(void)
Returns a pseudo-random 32-bit integer.
- Returns
the random integer
-
void srandom(uint32_t seed)
Seeds the pseudo-random number generator used by random() and rand() with the value seed.
- Parameters
seed – the seed value
-
void boot_SetDate(uint8_t day, uint8_t month, uint16_t year)
Sets the calculator’s date
Performs checks to ensure date is within range
- Parameters
day – Day to set
month – Month to set
year – Year to set
-
void boot_GetDate(uint8_t *day, uint8_t *month, uint16_t *year)
Gets the calculator’s date
- Parameters
day – Pointer to variable to store day
month – Pointer to variable to store month
year – Pointer to variable to store year
-
void boot_SetTime(uint8_t seconds, uint8_t minutes, uint8_t hours)
Sets the calculator’s time
Performs checks to ensure time is within range
- Parameters
seconds – Seconds to set
minutes – Minutes to set
hours – Hours to set
-
void boot_GetTime(uint8_t *seconds, uint8_t *minutes, uint8_t *hours)
Gets the calculator’s time
- Parameters
seconds – Pointer to variable to store seconds
minutes – Pointer to variable to store minutes
hours – Pointer to variable to store hours
-
bool boot_IsAfterNoon(void)
Checks if past noon
- Returns
True if past noon
-
uint8_t boot_GetBootMajorVer(void)
- Returns
Bootcode version major
-
uint8_t boot_GetBootMinorVer(void)
- Returns
Bootcode version minor
-
uint8_t boot_GetHardwareVer(void)
- Returns
Hardware version
-
void boot_ClearVRAM(void)
Turns all of VRAM into 0xFF (white)
-
bool boot_CheckOnPressed(void)
Checks if the [on] key was pressed
- Returns
True is returned if [on] key was pressed
-
void boot_DebugPrintf(const char *string)
Basically a reimplemented form of printf that prints to some debugging device
- Parameters
string – String to send to debug device
-
void boot_TurnOff(void)
Turns off the calculator (probably not a good idea to use)
-
void boot_NewLine(void)
Inserts a new line at the current cursor posistion on the homescreen Does not scroll.
-
uint8_t boot_GetBatteryStatus(void)
- Returns
Current battery status
-
void boot_WaitShort(void)
Waits for ~10 ms
-
void os_NewLine(void)
Inserts a new line at the current cursor posistion on the homescreen. Does scroll.
-
void os_DisableCursor(void)
Disables the OS cursor
-
void os_EnableCursor(void)
Enables the OS cursor
-
void os_SetDrawFGColor(uint24_t color)
Sets the foreground color used to draw text on the graphscreen
- Parameters
color – 565 BGR color to set text foreground to
-
uint24_t os_GetDrawFGColor(void)
Gets the foreground color used to draw text on the graphscreen
- Returns
565 BGR color of text foreground
-
void os_SetDrawBGColor(uint24_t color)
Sets the background color used to draw text on the graphscreen
- Parameters
color – 565 BGR color to set text background to
-
uint24_t os_GetDrawBGColor(void)
Gets the background color used to draw text on the graphscreen
Warning
Only useable in OS 5.2 and above; use at your own risk
- Returns
565 BGR color of text nackground
-
void os_SetCursorPos(uint8_t curRow, uint8_t curCol)
Set the cursor posistion used on the homescreen
- Parameters
curRow – The row aligned offset
curCol – The column aligned offset
-
void os_GetCursorPos(unsigned int *curRow, unsigned int *curCol)
Gets the cursor posistion used on the homescreen
- Parameters
curRow – Pointer to store the row aligned offset
curCol – Pointer to store the column aligned offset
-
void os_FontSelect(font_t *font)
Selects the (monospace) font to use when drawing on the graphscreen
- Parameters
font –
font id/pointer to use os_SmallFont
os_LargeFont
-
font_t *os_FontGetID(void)
Gets the font to use when drawing on the graphscreen
- Returns
0: small font
1: large monospace font
-
uint24_t os_FontGetWidth(const char *string)
- Parameters
string – String to get pixel width of
- Returns
The width of a string in the variable-width format
-
uint24_t os_FontGetHeight(void)
- Returns
The height of the font characters
-
uint24_t os_FontDrawText(const char *string, uint16_t col, uint8_t row)
Draws text using the small font to the screen
- Parameters
string – String to draw
col – Column to start drawing at
row – Row to start drawing at
- Returns
The end column
-
uint24_t os_FontDrawTransText(const char *string, uint16_t col, uint8_t row)
Draws transparent text using the small font to the screen
- Parameters
string – String to draw
col – Column to start drawing at
row – Row to start drawing at
- Returns
The end column
-
uint24_t os_PutStrFull(const char *string)
Puts some text at the current homescreen cursor location
- Parameters
string – Test to put on homescreen
- Returns
1 if string fits on screen, 0 otherwise
-
uint24_t os_PutStrLine(const char *string)
Puts some text at the current homescreen cursor location
- Parameters
string – Test to put on homescreen
- Returns
1 if string fits on line, 0 otherwise
-
void os_SetFlagByte(int offset, uint8_t set)
Set a particular flag variable
- Parameters
offset – Offset to particular flag in list
set – Bitmask of flag to set
-
uint8_t os_GetFlagByte(int offset)
Get a particular flag variable
- Parameters
offset – Offset to particular flag in list
- Returns
Bitmask of flag
-
size_t os_MemChk(void **free)
Get amount of free ram in order to allocate extra ram
- Parameters
free – Set to start of free available ram
- Returns
Size of available ram
-
void os_ThrowError(uint8_t error)
Throws an OS error
- Parameters
error – Error code to throw
-
const system_info_t *os_GetSystemInfo(void)
Gets the system info
- Returns
A pointer to system_info_t
-
int os_PushErrorHandler(void)
This function can return twice (like setjmp). First return always happens with a return value of 0. Second return only happens if an error occurs before os_PopErrorHandler is called, with the errNo as the return value.
int errno = os_PushErrorHandler(); if (errno) { // handle error, but no longer under the protection of the error handler so do not call os_PopErrorHandler() } else { // run some code that may error os_PopErrorHandler(); }
See also
-
void os_PopErrorHandler(void)
Restores stack state after a call to os_PushErrorHandler. Must be called with stack in the same state as it was when os_PushErrorHandler returned with 0, and should not be called along the error path.
See also
-
void *os_GetSymTablePtr(void)
- Returns
A pointer to symtable of the OS
-
void *os_NextSymEntry(void *entry, uint24_t *type, uint24_t *nameLength, char *name, void **data)
- Returns
next entry or NULL if no more entries, pass os_GetSymTablePtr() as first entry
-
int os_DelSymEntry(void *entry)
Delete a var from RAM.
- Parameters
entry – An entry as returned from os_NextSymEntry().
- Returns
TIOS System Error Code or 0 on success.
-
var_t *os_CreateAppVar(const char *name, uint16_t size)
Creates an AppVar.
Note
Returns NULL if creation failed for some reason, otherwise a pointer to the size bytes
- Parameters
name – Name of the AppVar to create.
size – Size of AppVar to create
- Returns
A pointer to the AppVar data
-
var_t *os_GetAppVarData(const char *name, int *archived)
Gets a pointer to an AppVar’s data, which may be in archive.
Note
Returns NULL if the AppVar doesn’t exist, otherwise a pointer to the size bytes
- Parameters
name – Name of the AppVar to lookup.
archived – Set to 1 if the AppVar is archived, otherwise 0, may be NULL if you don’t need it.
- Returns
A pointer to the AppVar data
-
void os_DelAppVar(const char *name)
Deletes an AppVar from RAM.
- Parameters
name – Name of the AppVar to delete.
-
int os_ChkFindSym(uint8_t type, const char *name, void **entry, void **data)
Locates a symbol in the symtable
- Parameters
type – Type of symbol to find
name – Pointer to name of symbol to find
entry – Can be NULL if you don’t care
data – Can be NULL if you don’t care
- Returns
If file exists, returns 1 and sets entry and data, otherwise returns 0.
-
int os_GetVarSize(const char *name, size_t *size)
Gets the size of sized vars such as equations, string, programs, appvars, or the dimension of a list.
- Parameters
name – Name of the var to lookup.
size – Pointer to store size of variable.
- Returns
TIOS System Error Code or 0 on success.
-
int os_GetMatrixDims(const char *name, int *rows, int *cols)
Gets the dimensions of a matrix.
- Parameters
name – Name of the matrix to lookup.
rows – Pointer to store number of rows.
cols – Pointer to store number of columns.
- Returns
TIOS System Error Code or 0 on success.
-
int os_GetRealListElement(const char *name, int index, real_t *value)
Gets a real value from a real list or a complex list where the selected element has no imaginary component.
- Parameters
name – Name of the list.
index – Element index (1-based).
value – Set tto the value of the selected element.
- Returns
TIOS System Error Code or 0 on success.
-
int os_GetMatrixElement(const char *name, int row, int col, real_t *value)
Gets a real value from a matrix.
- Parameters
name – Name of the matrix.
row – Element row (1-based).
col – Element col (1-based).
value – Set to the value of the selected element.
- Returns
TIOS System Error Code or 0 on success.
-
int os_GetRealVar(const char *name, real_t *value)
Gets the real value of a real variable or a complex variable with no imaginary component.
- Parameters
name – Name of TIOS variable.
value – Set to the value of the variable.
- Returns
TIOS System Error Code or 0 on success.
-
int os_SetListDim(const char *name, int dim)
If list
name
doesn’t exist, create it withdim
elements, otherwise resize the list, with new elements being set to 0.- Parameters
name – Name of the list to resize.
dim – New list dimension.
- Returns
TIOS System Error Code or 0 on success.
-
int os_SetMatrixDims(const char *name, int rows, int cols)
If matrix
name
doesn’t exist, create it with dimensionsrows
andcols
, otherwise resize the matrix, with new elements being set to 0.- Parameters
name – Name of the matrix to resize.
rows – New row dimension.
cols – New col dimension.
- Returns
TIOS System Error Code or 0 on success.
-
int os_SetRealListElement(const char *name, int index, const real_t *value)
Sets a list element to a real value. If the list doesn’t exist, then index must be 1 and it creates a 1 element list.
- Parameters
name – Name of the list.
index – Element index (1-based).
value – The value to set to the selected element.
- Returns
TIOS System Error Code or 0 on success.
-
int os_SetMatrixElement(const char *name, int row, int col, const real_t *value)
Sets a matrix element to a real value.
- Parameters
name – Name of the matrix.
row – Element row (1-based).
col – Element col (1-based).
value – The value to set to the selected element.
- Returns
TIOS System Error Code or 0 on success.
-
int os_SetRealVar(const char *name, const real_t *value)
Sets a variable to a real value, creating it if it doesn’t exist.
- Parameters
name – Name of variable to lookup.
value – The value to set the variable to.
- Returns
TIOS System Error Code or 0 on success.
-
void *os_GetAnsData(uint8_t *type)
Gets the Ans variable
Note
Returns NULL if Ans doesn’t exist or type is NULL
- Parameters
type – This is set to the current variable type in ANS
- Returns
Pointer to the data
-
real_t os_RealRound(const real_t *arg, char digits)
Rounds a real_t
Note
digits must be in the range 0 - 9
- Parameters
arg – Real variable.
digits – Number of digits to round to.
-
int os_RealCompare(const real_t *arg1, const real_t *arg2)
Compares two real_t
- Parameters
arg1 – Real variable 1.
arg2 – Real variable 2.
- Returns
-1, 0, or 1 depending on the comparison
-
int24_t os_RealToInt24(const real_t *arg)
Converts a real_t to an integer
Note
Saturates on overflow
- Parameters
arg – Real variable.
-
real_t os_Int24ToReal(int24_t arg)
Converts an integer to a real_t
Note
Saturates on overflow
- Parameters
arg – Integer value.
-
float os_RealToFloat(const real_t *arg)
Converts a real_t to a float
Note
Saturates on overflow
- Parameters
arg – Real variable.
-
real_t os_FloatToReal(float arg)
Converts an float to a real_t
Note
Saturates on overflow
- Parameters
arg – Float value.
-
int os_RealToStr(char *result, const real_t *arg, int8_t maxLength, uint8_t mode, int8_t digits)
This converts a ti-float to a ti-ascii string.
- Parameters
result – Zero terminated string copied to this address
arg – Real to convert
maxLength –
<=0: use default max length (14)
>0: max length of result, minimum of 6
mode –
0: Use current mode for everything (digits ignored)
1: Normal mode
2: Sci mode
3: Eng mode
>4: Use current Normal/Sci/Eng mode (digits still used)digits –
-1: Float mode
0-9: Fix # mode
- Returns
Length of result
-
real_t os_StrToReal(const char *string, char **end)
This converts a ti-ascii string to a ti-float.
String format regexp: / *[-\032+]?[0-9]*(.[0-9]*)?([eE\033][-\032+]?[0-9]*)?/
- Parameters
string – TI-ascii string to convert
end – If non-null, pointer to end of parsed number is stored here
- Returns
resulting TI-float; on exponent overflow this is +-9.9999999999999e99
-
int os_TestFlagBits(uint16_t offset_pattern)
High 8 is unsigned offset, low 8 is bits to test
-
bool os_TestFlagBitsFast(uint16_t offset_pattern)
-
void os_SetFlagBits(int16_t offset_pattern)
-
void os_ResetFlagBits(int16_t offset_pattern)
-
void os_GetStringInput(char *string, char *buf, size_t bufsize)
Custom implementation input routine for use in conjunction with the TIOS. It is HIGHLY recommended you implement your own routine, this routine has some quirks. It is good enough for getting basic input however.
- Parameters
string – Input prompt string to be displayed to the user
buf – Storage location to store input string
bufsize – Available storage size for input string. -1 for null termination.
- Returns
None
-
uint16_t os_GetKey(void)
Gets a key from the OS
- Returns
Key code
- Returns
Extended key code in high byte
-
void os_DisableHomeTextBuffer(void)
Disable text buffering on the homescreen. C programs use this area by default for the BSS / Heap.
-
void os_EnableHomeTextBuffer(void)
Enables text buffering on the homescreen. C programs use this area by default for the BSS / Heap.
-
sk_key_t os_GetCSC(void)
Performs an OS call to get the keypad scan code
You can also use this function to get input from the user as a string like this:
Feel free to modify the string to suit your needs.const char *chars = "\0\0\0\0\0\0\0\0\0\0\"WRMH\0\0?[VQLG\0\0:ZUPKFC\0 YTOJEB\0\0XSNIDA\0\0\0\0\0\0\0\0"; uint8_t key, i = 0; char buffer[50]; while((key = os_GetCSC()) != sk_Enter) { if(chars[key]) { buffer[i++] = chars[key]; } }
- Returns
Key scan code
-
void os_MSDGetMaxLUN(uint8_t *value)
Perform an MSD GetMaxLUN request, either through the USB port or with an ARM coprocessor.
- Parameters
value – On input the wValue to use in the request (should be zero for usb?), on output the max logical unit number.
-
void os_MSDReset(uint8_t value)
Perform an MSD mass storage reset request, either through the USB port or with an ARM coprocessor.
- Parameters
value – Affects the wValue of the request, 1 for 0x55AA, 2 for 0xAA55, otherwise 0x0000 (for usb).
-
int8_t os_MSDInquiry(uint8_t lun, uint8_t *inquiry)
Performs an MSD inquiry, either through the USB port or with an ARM coprocessor.
- Parameters
lun – Logical unit number.
inquiry – Buffer where the response is stored.
- Returns
Error code, 0 for success, 5 for failed command, -5 for failed transfer.
-
void os_MSDTestUnitReady(uint8_t lun, uint8_t *status)
Performs an MSD test unit ready command, either through the USB port or with an ARM coprocessor.
- Parameters
lun – Logical unit number.
status – Returns the status of the command.
-
int8_t os_MSDReadCapacity(uint8_t lun, uint32_t data[2])
Performs an MSD read capacity command, either through the USB port or with an ARM coprocessor.
- Parameters
lun – Logical unit number.
data – Returns the returned logical block address and block byte length.
- Returns
Error code, 0 for success, 5 for failed command, -5 for failed transfer.
-
int8_t os_MSDRead(uint8_t lun, uint8_t blockCount, uint32_t lba, uint24_t blockSize, void *buffer)
Performs an MSD read command, either through the USB port or with an ARM coprocessor.
- Parameters
lun – Logical unit number.
blockCount – Number of blocks to read.
lba – Logical block address to start reading from.
blockSize – Block size, obtained from os_MSDReadCapacity().
buffer – Buffer to read data into, should be blockCount * blockSize bytes.
- Returns
Error code, 0 for success, 5 for failed command, -5 for failed transfer.
-
int8_t os_MSDWrite(uint8_t lun, uint8_t blockCount, uint32_t lba, uint24_t blockSize, void *buffer)
Performs an MSD write command, either through the USB port or with an ARM coprocessor.
- Parameters
lun – Logical unit number.
blockCount – Number of blocks to write.
lba – Logical block address to start writing to.
blockSize – Block size, obtained from os_MSDReadCapacity().
buffer – Buffer of data to write, should be blockCount * blockSize bytes.
- Returns
Error code, 0 for success, 5 for failed command, -5 for failed transfer.
-
int8_t os_USBGetRequestStatus(void)
Gets some status after a control request.
- Returns
Some status in the range [0, 3].
-
void os_ForceCmdNoChar(void)
Executes the assembly routine _ForceCmdNoChar
-
void os_MoveUp(void)
Routine to scroll homescreen up
-
void os_MoveDown(void)
Routine to scroll homescreen down
-
void os_HomeUp(void)
Routine to move row and column posistion to (0,0)
-
void os_RunIndicOn(void)
Routine to turn on the Run Indicator
-
void os_RunIndicOff(void)
Routine to turn off the Run Indicator
-
void os_DisableAPD(void)
Routine to turn off APD
-
void os_EnableAPD(void)
Routine to turn on APD
-
void os_ArcChk(void)
Routine checks the amount of free archive
-
void os_ClrLCDFull(void)
Routine to clear the homescreen lcd
-
void os_ClrLCD(void)
Routine to clear the homescreen lcd. Accounts for split screen
-
void os_DrawStatusBar(void)
Routine to redraw the status bar
-
void os_DelRes(void)
Invalidate and clear stat variables
-
void os_ClrTxtShd(void)
Invalidate and clear text shadow area
-
void boot_Set6MHzMode(void)
Runs the calulator at 6 MHz
-
void boot_Set48MHzMode(void)
Runs the calulator at 48 MHz
-
void boot_Set6MHzModeI(void)
Runs the calulator at 6 MHz (saves interrupt status)
-
void boot_Set48MHzModeI(void)
Runs the calulator at 48 MHz (saves interrupt status)
-
uint32_t atomic_load_32(volatile uint32_t *p)
“Atomically” loads from a volatile 32-bit value.
Remark
The hardware does not provide a mechanism to truly atomically load from a 32-bit value. This “atomic” load is implemented by non-atomically reading the value twice and retrying if the values read differ.
- Attention
If the maximum period between two value changes is 1us or less (assuming a CPU clock speed of 48MHz), then this function may never complete. For instance, the counter of a timer ticking at 1MHz or more should not be read using this function. In such a case of a purely increasing or decreasing value, atomic_load_increasing_32() or atomic_load_decreasing_32() may be appropriate instead.
- Parameters
p – pointer to 32-bit value
-
uint32_t atomic_load_increasing_32(volatile uint32_t *p)
“Atomically” loads from a volatile, increasing 32-bit value.
Remark
The hardware does not provide a mechanism to truly atomically load from a 32-bit value. This “atomic” load is implemented by temporarily disabling interrupts while non-atomically reading the value twice and then returning the lesser of the two values read.
- Attention
If the minimum period between two value changes is 5us or less and the value’s maximum rate of change over a 5us period exceeds 256 (assuming a CPU clock speed of 48MHz), then the value returned may be incorrect. Of relevant note may be the fact that a 48MHz counter does not exceed this limit.
- Parameters
p – pointer to 32-bit value
-
uint32_t atomic_load_decreasing_32(volatile uint32_t *p)
“Atomically” loads from a volatile, decreasing 32-bit value.
Remark
The hardware does not provide a mechanism to truly atomically load from a 32-bit value. This “atomic” load is implemented by temporarily disabling interrupts while non-atomically reading the value twice and then returning the greater of the two values read.
- Attention
If the minimum period between two value changes is 5us or less and the value’s maximum rate of change over a 5us period exceeds 256 (assuming a CPU clock speed of 48MHz), then the value returned may be incorrect. Of relevant note may be the fact that a 48MHz counter does not exceed this limit.
- Parameters
p – pointer to 32-bit value
-
struct real_t
- #include <>
Structure of real variable type.
-
struct cplx_t
- #include <>
Structure of complex variable type.
-
struct list_t
- #include <>
Structure of list variable type.
-
struct cplx_list_t
- #include <>
Structure of complex list variable type.
-
struct matrix_t
- #include <>
Structure of matrix variable type.
-
struct string_t
- #include <>
Structure of string variable type.
-
struct equ_t
- #include <>
Structure of equation variable type.
-
struct var_t
- #include <>
Structure of miscellaneous variable type.
-
struct font
- #include <>
Structure of font description.
See also
-
struct system_info
Public Members
-
size_t size
number of valid bytes after this field
-
uint8_t hardwareVersion
7 on CE
-
uint8_t hardwareType
0 on TI84+CE, 1 on TI83PCE
-
uint8_t hardwareType2
9 on TI84+CE, 12 on TI83PCE
-
uint8_t osMajorVersion
e.g. 5 on OS 5.4.0.0034
-
uint8_t osMinorVersion
e.g. 4 on OS 5.4.0.0034
-
uint8_t osRevisionVersion
e.g. 0 on OS 5.4.0.0034
-
unsigned osBuildVersion
e.g. 34 on OS 5.4.0.0034
-
uint8_t bootMajorVersion
e.g. 5 on boot 5.3.6.0017
-
uint8_t bootMinorVersion
e.g. 3 on boot 5.3.6.0017
-
uint8_t bootRevisionVersion
e.g. 6 on boot 5.3.6.0017
-
unsigned bootBuildVersion
e.g. 17 on boot 5.3.6.0017
-
uint8_t unknown[10]
400100f0000010300000 on CE
-
uint8_t calcid[8]
From certificate
-
char ti[2]
First part of device name, “TI”
-
uint16_t language
Localization language
-
size_t size