Axe Parser v1.1.2

Command List

System
Command Description Implemented?
_ Spaces are ignored in most situations. They mainly just help for code organization and readability. Yes
: The colon separates 2 statements in the same expression. Enter ends the expression, closing all unclosed parenthesis. Yes
. The period is a single line comment. Whatever follows will be ignored until the next newline. No
... Start or end of a multi-line comment ignoring everything in between. Must be the first characters on the line. No
...If CONST A conditional comment. Only starts a multi-line comment if the constant is zero. No
...!If CONST A conditional comment. Only starts a multi-line comment if the constant is non-zero. No
...Else If the previous conditional was a comment, the next comment block will not be a comment and vise-versa. No
DiagnosticOn Turns on the run indicator (marching ants). Program will display "done" after finishing. Legal syntax, but does nothing.
DiagnosticOff Turns off the run indicator. Program will not display "done" after finishing. Legal syntax, but does nothing.
Full Full speed mode is activated if supported, making it 2.5 times faster on newer calculators. Returns 0 if not supported. No
Normal Full speed mode is deactivated. No
Pause EXP Pause for the given amount of time. A one second pause is a value of roughly 1800 at normal speed or 4500 in full speed mode. Yes
getKey Returns the last key pressed or zero if no keys were pressed. Its just like the BASIC getkey, but with different codes. No
getKeyr Pauses until a key or key combination is pressed and returns the key code. These are different codes than the normal getkeys. No
getKey(KEY) Returns 1 if the key is held down this instant and 0 otherwise. Yes
getKey(0) Returns a non-zero number if any key is held down and 0 otherwise. Yes
Asm(HEX) Native assembly code written in hexadecimal is inserted at the current position. Never
prgmNAME The code from the external program is parsed as if it completely replaced this command in the main program. (Similar to the C++ "include") No
#Axiom(NAME) AsmComp() The Axiom assembly library becomes useable in the program. No quotes needed, just type the name of the appvar case sensitive. No -- may never be implemented
#Icon(HEX) identity() Tells the parser to replace the default icon with the new icon. The icon must be 64 hex characters long. No
#Realloc(PTR) Real() Moves the variable buffer to another location in ram. If the field is left blank, the default location is restored. No
Screen and Buffer
Command Description Implemented?
DispGraph
DispGraph(BUF)
Draws the main buffer, or specified buffer, to the screen. Yes
DispGraphClrDraw
DispGraphClrDraw(BUF)
Same as DispGraph:ClrDraw but much faster than doing them individually. No
DispGraphr
DispGraph(BUF1,BUF2)r
Draws the main and back buffer, or specified buffers, to the screen to create 3 color grayscale. Yes
DispGraphClrDrawr
DispGraphClrDraw(BUF1,BUF2)r
Same as DispGraphr:ClrDrawrr but much faster than doing them individually. No
DispGraphrr
DispGraph(BUF1,BUF2)r
Draws the main and back buffer, or specified buffers, to the screen to create 4 color grayscale. Yes
DispGraphClrDrawrr
DispGraphClrDraw(BUF1,BUF2)r
Same as DispGraphrr:ClrDrawrr but much faster than doing them individually. No
ClrHome Erases the screen and text shadow and moves the cursor to the upper left corner. No
ClrDraw
ClrDrawr
ClrDraw(BUF)
Erases the main buffer, back buffer, or specified buffer to white pixels. Yes
ClrDrawrr Erases both the front and back buffers. No
DrawInv
DrawInv r
DrawInv (BUF)
The colors on the main buffer, back buffer, or specified buffer are inverted. No
StoreGDB Takes a screenshot and saves it to the main buffer. No
StorePic Copies the main buffer to the back buffer. No
RecallPic Copies the back buffer to the main buffer. No
Horizontal +
Horizontal +r
Horizontal +(BUF)
The main buffer, back buffer, or specified buffer is shifted right by 1 pixel. White pixels are shifted in. No
Horizontal -
Horizontal -r
Horizontal -(BUF)
The main buffer, back buffer, or specified buffer is shifted left by 1 pixel. White pixels are shifted in. No
Vertical +
Vertical +r
Vertical +(BUF)
The main buffer, back buffer, or specified buffer is shifted down by 1 pixel. New pixels are not shifted in, that row remains the same. No
Vertical -
Vertical -r
Vertical -(BUF)
The main buffer, back buffer, or specified buffer is shifted up by 1 pixel. New pixels are not shifted in, that row remains the same. No
Shade() Returns the contrast value of the operating system before the program started. No
Shade(EXP) Sets the contrast. 0 is lightest, 63 is darkest. No
Control Blocks
Command Description Implemented?
If EXP:code1:End If EXP is true, code1 will be executed. Yes
If EXP:code1:Else:code2:End If EXP is true, then only code1 is executed. Otherwise, only code2 is executed. Yes
ElseIf EXP Can be used inside If blocks. If EXP is true, the block's code is executed and then skips to the end of the block. No
!If EXP:code1:End If EXP is false, code1 will be executed. No
!If EXP:code1:Else:code2:End If EXP is false, then only code1 is executed. Otherwise, only code2 is executed. No
Else!If EXP Can be used inside If blocks. If EXP is false, the block's code is executed and then skips to the end of the block. No
While EXP:code1:End The expression is checked first. If its true, code1 will be executed over and over until its false. Yes
Repeat EXP:code1:End The expression is checked first. If its false, code1 will be executed over and over until its true. Yes
For(EXP):code1:End Executes code1 exactly EXP times. Goto cannot be used inside this structure. Yes
For(VAR,EXP1,EXP2):code1:End The variable VAR is initialized with EXP1. If its greater than EXP2, the loop ends. Otherwise code1 is executed and VAR is incremented by 1. Yes
DS<(VAR,MAX):code1:End The variable VAR is decreased by 1. If its 0, code1 is executed and the variable resets back to MAX. Otherwise the code is skipped. No
EndIf EXP In loops, it will exit the loop if EXP is true. But it works just like a regular End otherwise. No
End!If EXP In loops, it will exit the loop if EXP is false. But it works just like a regular End otherwise. No
Labels and Subroutines
Command Description Implemented?
Lbl LBL Creates a label at the current position. Yes
Goto LBL Jumps to the label. Yes
Goto (EXP) Jumps to a label defined by an expression. No
sub(LBL,...) Loads 0 to 6 arguments to the r1 through r6 variables respectively. Then the subroutine is called. Most subroutines should end with a Return. No
sub(LBLr,...) Same as above except the argument variables it uses are saved before the subroutine is called and restored when it returns. No
LBL(...) Same as sub( but with a simpler-to-type format. Also takes 0 to 6 arguments. No
(EXP)(...) Same as above but with a subroutine defined by an expression. No
Return Returns from a subroutine. If not in a subroutine, the program will end. No
Returnr Emergency exits the program from within any number of nested calls. No
ReturnIf EXP Returns only if EXP is true. No
Return!If EXP Returns only if EXP is false. No
LLBL Returns the address of the label. Yes
λ(EXP) log() Creates a subroutine that computes an expression in terms of r1 through r6. Returns the address of that subroutine. No
Z-Test(EXP,LBL,...) Checks the expression. If its 0, it will jump to the first label, if its 1, it will jump to the second, etc. If out of range, it will skip the command. No
Basic Math
Command Description Implemented?
VAR Returns the variable. Uppercase A through Z, θ, and r1 through r6 are variables as well as custom named variables. Yes
VARr Returns only the first 8 bits of the variable. No
°VAR Returns the address of the variable in memory. Yes
EXPVAR Stores the expression into the variable. Yes
EXPVARr Stores the expression into the first 8 bits of the variable. No
'CHAR' The ASCII constant as an integer. No
-EXP Returns the negative of the expression. That's a negative sign, not a minus sign! Yes
EXP1+EXP2
EXP1-EXP2
EXP2 is added to or subtracted from EXP1. Yes
EXP++
EXP--
The variable or memory location is increased or decreased by 1. Memory locations need curly brackets. Yes
EXP1*EXP2
EXP1/EXP2
EXP1^EXP2
EXP1 is multiplied, divided, or the modulus of EXP2. Yes
EXP2 The expression is multiplied by itself. Yes
EXP1=EXP2
EXP1EXP2
EXP1<EXP2
EXP1>EXP2
EXP1EXP2
EXP1EXP2
Returns 1 if the statement is true or 0 if its false. This is an unsigned comparison. Yes
EXP1 or EXP2
EXP1 and EXP2
EXP1 xor EXP2
Returns the bitwise operation of the lower 8 bits of the expressions. For boolean logic, see the ? and ?? commands. No
abs(EXP) Returns the absolute value of the expression. No
√(EXP) Returns the square root of the expression. No
sin(EXP) Returns the sine of the expression. One Period is [0,256] and the value returned ranges from -127 to 127. No
cos(EXP) Returns the cosine of the expression. One Period is [0,256] and the value returned ranges from -127 to 127. No
tan-1(DX,DY) Returns the angle of a path that has moved DX to the right and DY up. One period is [0,256] and both DX and DY must be in the range [-512,512] No
e^(EXP) Returns 2 to the power of the expression (modular). No
ln(EXP) Returns the log base 2 of the expression, or 255 if undefined. No
min(EXP1,EXP2) Returns the minimum of the 2 expressions. No
max(EXP1,EXP2) Returns the maximum of the 2 expressions. No
rand Returns a random 16 bit number. Yes
COND?EXP If the condition is true, EXP is evaluated. Can be used as an and short circuit operator like && in C syntax. No
COND?EXP1,EXP2 If the condition is true, EXP1 is evaluated. Otherwise, EXP2 is evaluated. No
COND??EXP If the condition is false, EXP is evaluated. Can be used as an or short circuit operator like || in C syntax. No
COND??EXP1,EXP2 If the condition is false, EXP1 is evaluated. Otherwise, EXP2 is evaluated. No
Advanced Math
Command Description Implemented?
EHEX The hexadecimal number as an integer. That prefix is the scientific notation "E". No
πBIN The binary number as an integer. No
TTOKEN The 1 or 2 byte token as an integer. That prefix is the transpose symbol T. No
INT.DEC The non-integer decimal number as an 8.8 fixed point number. Maximum 3 decimal places allowed. No
EXP1<<EXP2
EXP1>>EXP2
EXP1≤≤EXP2
EXP1≥≥EXP2
Signed comparisons for numbers that aren't always positive. Returns 1 if the statement is true or 0 if its false. No
EXP1**EXP2 The signed multiplication is performed using the high byte as the integer part and the low byte as the decimal part returning a number in the same format. No
EXP1*^EXP2 Computes the high order 16 bits of an unsigned multiplication. No
EXP1//EXP2 Performs a division, but it works for negative numbers too. No
EXP1·EXP2
EXP1+EXP2
EXP1EXP2
Returns respectively the full 16 bit "and", "or", and "xor" of the two expressions. These are the plot style tokens. No
not(EXP) Returns the bitwise complement of the 8-bit number. No
not(EXP)r Returns the bitwise complement of the 16-bit number. No
EXP1eEXP2 Gets the EXP2-th bit of the 8-bit number in EXP1. Unlike assembly, the leftmost bit (high order) is bit 0 and the rightmost bit (low order) is bit 7. The bit checking is modular. That's the Euler's constant e. No
EXP1eeEXP2 Gets the EXP2-th bit of the 16-bit number in EXP1. Unlike assembly, the leftmost bit (high order) is bit 0 and the rightmost bit (low order) is bit 15. The bit checking is modular. That's the Euler's constant e. No
√(EXP)r Returns the square root of the 8.8 expression in 8.8 format. No
EXP-1 Finds the reciprocal of the 8.8 fixed point number. No
Drawing
Command Description Implemented?
Pxl-On(X,Y)
Pxl-On(X,Y)r
Pxl-On(X,Y,BUF)
The pixel at (X,Y) becomes black on the main buffer, back buffer, or specified buffer respectively. Yes
Pxl-Off(X,Y)
Pxl-Off(X,Y)r
Pxl-Off(X,Y,BUF)
The pixel at (X,Y) becomes white on the main buffer, back buffer, or specified buffer respectively. Yes
Pxl-Change(X,Y)
Pxl-Change(X,Y)r
Pxl-Change(X,Y,BUF)
The pixel at (X,Y) inverts color on the main buffer, back buffer, or specified buffer respectively. Yes
pxl-Test(X,Y)
pxl-Test(X,Y)r
pxl-Test(X,Y,BUF)
Returns 1 if pixel is black and 0 if pixel is white at (X,Y) on the main buffer, back buffer, or specified buffer respectively. Yes
Line(X1,Y1,X2,Y2)
Line(X1,Y1,X2,Y2)r
Line(X1,Y1,X2,Y2,BUF)
Draws a black line from point (X1,Y1) to (X2,Y2) on the main buffer, back buffer, or specified buffer respectively. Yes
Rect(X,Y,W,H)
Rect(X,Y,W,H)r
Rect(X,Y,W,H,BUF) ref()
Draws a filled rectangle with its upper left corner at (X,Y), a width of W, and a height H on the main buffer, back buffer, or specified buffer respectively. Yes
RectI(X,Y,W,H)
RectI(X,Y,W,H)r
RectI(X,Y,W,H,BUF) rref()
Inverts a filled rectangle with its upper left corner at (X,Y), a width of W, and a height H on the main buffer, back buffer, or specified buffer respectively. Yes
Circle(X,Y,R)
Circle(X,Y,R)r
Circle(X,Y,R,BUF)
Draws a circle with center (X,Y) and radius R on the main buffer, back buffer, or specified buffer respectively. Yes
Sprites
Command Description Implemented?
Pt-On(X,Y,PIC)
Pt-On(X,Y,PIC)r
Pt-On(X,Y,PIC,BUF)
The 8x8 sprite pointed to is drawn at (X,Y) to the main buffer, back buffer, or specified buffer respectively. Does not clear the area behind it. No
Pt-Off(X,Y,PIC)
Pt-Off(X,Y,PIC)r
Pt-Off(X,Y,PIC,BUF)
The 8x8 sprite pointed to is drawn at (X,Y) to the main buffer, back buffer, or specified buffer respectively, but clears the area behind it first. No
Pt-Change(X,Y,PIC)
Pt-Change(X,Y,PIC)r
Pt-Change(X,Y,PIC,BUF)
The 8x8 sprite pointed to inverts its pixels at (X,Y) to the main buffer, back buffer, or specified buffer respectively. Does not clear the area behind it. No
pt-Get(X,Y)
pt-Get(X,Y)r
pt-Get(X,Y,BUF) Plot2()
Returns a temporary pointer to a copy of the 8x8 sprite at (X,Y) on the main buffer, back buffer, or specified buffer respectively. No
pt-Get(X,Y,BUF,TEMP) Plot2() Copies the 8x8 sprite at (X,Y) on the specified buffer to 8 bytes starting at TEMP. Returns TEMP for convenience. No
Pt-Mask(X,Y,PIC) Plot1() The 8x8 grayscale sprite (2 layers) pointed to is drawn to both buffers at (X,Y). Areas clear on both layers are transparent and the other combinations are 3-level grayscale. No
Pt-Mask(X,Y,PIC)r
Pt-Mask(X,Y,PIC,BUF)r Plot1()
The 8x8 masked sprite (2 layers) pointed to is drawn to the main buffer or specified buffer at (X,Y). Areas clear on both layers are transparent and the other combinations are black, white, and invert. No
Bitmap(X,Y,BMP)
Bitmap(X,Y,BMP)r
Bitmap(X,Y,BMP,BUF)
Bitmap(X,Y,BMP,BUF,MODE) Tangent()
Draws a bitmap to (X,Y) on the main buffer, back buffer, or specified buffer respectively. The bitmap data should have in order: height (1 byte), then width (1 byte), then the rows of the image padded with zeros to the nearest byte. Mode 0 is "Pt-On" logic and Mode 1 is "Pt-Change" logic. Mode 0 is used if unspecified. No
rotC(PIC) ShadeNorm() A copy of the 8x8 sprite pointed to is rotated clockwise 90 degrees. Returns a pointer to that new rotated sprite. Cannot be used recursively. No
rotCC(PIC) Shade_t() A copy of the 8x8 sprite pointed to is rotated counter-clockwise 90 degrees. Returns a pointer to that new rotated sprite. Cannot be used recursively. No
flipV(PIC) ShadeX2() A copy of the 8x8 sprite pointed to is flipped vertically. Returns a pointer to that new flipped sprite. Cannot be used recursively. No
flipH(PIC) ShadeF() A copy of the 8x8 sprite pointed to is flipped horizontally. Returns a pointer to that new flipped sprite. No
Text
Command Description Implemented?
Disp PTR The string that is pointed to is displayed at the cursor position. The cursor moves with the string. If it reaches the end of the screen, it will loop around to the next line. Partially -- prints to the console
Disp EXP▶Dec The number is displayed as a decimal at the cursor position. The cursor is then advanced 5 spaces. No
Disp EXP▶Char ▶Frac The ASCII character is displayed at the cursor position. The cursor is advanced 1 space. A new line is added if it hits the edge. No
Disp EXP▶Tok ▶DMS The 1 or 2 byte token is displayed at the cursor position. The cursor is advanced. A new line is added if it hits the edge. No
Disp i The cursor moves to the next line down. This is the imaginary, not lowercase 'i'. No
Output(X) The cursor moves to the cursor position (X/256,X%256). No
Output(X,Y) The cursor moves to the cursor position (X,Y). No
Output(X,Y,... The cursor moves to the cursor position (X,Y) and whatever follows is displayed at that position. No
Text EXP The text pointed to is drawn at the current pen location. See Fix command for drawing details. No
Text EXP▶Dec The number is drawn as a decimal at the current pen location. See Fix command for drawing details. No
Text EXP▶Char ▶Frac The ASCII character is drawn at the current pen location. See Fix command for drawing details. No
Text PTR▶Tok ▶DMS The 1 or 2 byte token POINTED TO is drawn at the current pen location. Notice how this is different than Disp. See Fix command for drawing details. No
Text(X) The text pen moves to the position (X%256,X/256). No
Text(X,Y) The text pen moves to the position (X,Y). No
Text(X,Y,...) The text pen moves to the position (X,Y). Whatever comes next becomes the Text command. No
EXP▶Hex ▶Rect Converts the number to hexadecimal and returns the pointer to that string. No
Fix 0Small size font. Calculator should exit in this mode if changed!No
Fix 1Large size font.No
Fix 2Normal colored font. Calculator should exit in this mode if changed!No
Fix 3Inverted font.No
Fix 4Text is drawn directly to the screen. Calculator should exit in this mode if changed!No
Fix 5Text is drawn to the buffer.No
Fix 6Automatic scrolling on last line of display. Calculator should exit in this mode if changed!No
Fix 7No scrolling on last line of displayNo
Fix 8Lowercase alpha is turned off.No
Fix 9Lowercase alpha is turned on.No
Data and Storage
Command Description Implemented?
"STRING" Adds the string to program memory, but without the ending character. No
[HEX] Adds the hex to the program memory. No
[OSVAR] Absorbs the picture, appvar, program, or string from the calculator into the program. Only the source needs the var, not the executable. No
[PICVARr] Absorbs the tile map picture from the calculator into the program. 12 tiles across, moving down. Only the source needs the pic, not the executable. No
Data(CONST,...) ΔList() Adds the bytes to program memory. Numbers ending with r are added as 2 byte numbers. No
Buff(SIZE)
Buff(SIZE,CONST) det()
Creates a buffer that is size bytes large, filled with the byte constant, or with zero if unspecified. No
DATANAME Saves the data's pointer to the static variable. Also terminates current string if applicable. No
CONSTNAME Saves the constant's value to the static variable. No
CONST→→NAME Saves the constant's value to the static variable only if it hasn't already been defined. Ignored otherwise. No
NAME Returns a pointer to the start of the data. No
See below The list tokens point to "safe" areas of memory you are free to use. Yes -- all implemented.
L1 714 bytes (saveSScreen) Volatility: LOW (Can be increased to 768 bytes by using #Realloc) Yes
L2 531 bytes (statVars) Volatility: LOW (Do not use this area when custom interrupts are enabled, including Mirage OS) Yes
L3 768 bytes (appBackUpScreen) Volatility: MED (Saving to back-buffer will corrupt) Yes
L4 256 bytes (tempSwapArea) Volatility: MED (Corrupt after archiving/unarchiving anything) Yes
L5 128 bytes (textShadow) Volatility: MED ("Disp","Output", and "ClrHome" will corrupt) Yes
L6 768 bytes (plotSScreen) Volatility: HIGH (Any buffer drawing will corrupt) Yes
{EXP} Returns the single byte the expression points to. It will be in the range 0 to 255. Yes
{EXP}r Returns the 2 byte data the expression points to. Yes
{EXP}rr Returns the 2 byte data the expression points to but in reverse order. No
EXP1→{EXP2} The single byte of EXP1 is stored to where EXP2 points. Yes
EXP1→{EXP2}r The full 2 bytes of EXP1 are stored to where EXP2 points. Yes
EXP1→{EXP2}rr The full 2 bytes of EXP1 are stored to where EXP2 points but in reverse order. No
sign{EXP} int() Returns the single byte the expression points to. It will be in the range -128 to 127. No
nib{PTR} iPart() Returns the Nth nibble in RAM. Since there are twice as many nibbles as bytes, make sure pointers are multiplied by 2. No
nib{PTR}r iPart() Returns the Nth nibble in an Application. Since there are twice as many nibbles as bytes, make sure pointers are multiplied by 2. No
EXP→nib{PTR} iPart() Writes to the Nth nibble in RAM. Since there are twice as many nibbles as bytes, make sure pointers are multiplied by 2. No
Fill(PTR,SIZE) The byte already at PTR is copied to all the bytes after it until SIZE bytes have been filled with that value. Zero is not a valid Size. No
Fill(PTR,SIZE,BYTE) SIZE bytes of data starting at PTR are filled with a value. SIZE must be greater than 1. No
Copy(BUF) conj() Copies the 768 byte buffer to the main buffer. Same as Copy(BUF,L6,768) No
Copy(BUF1,BUF2) conj() Copies the 768 byte buffer BUF1 to BUF2. Same as Copy(BUF1,BUF2,768) No
Copy(PTR1,PTR2,SIZE) conj() SIZE bytes starting from PTR1 are copied to PTR2 onwards. Zero is not a valid Size. No
Copy(PTR1,PTR2,SIZE)r conj() SIZE bytes ending at PTR1 are copied to PTR2 moving backwards. Zero is not a valid Size. No
Exch(PTR1,PTR2,SIZE) expr() SIZE bytes starting from PTR1 are exchanged with SIZE bytes starting at PTR2. Zero is not a valid Size. No
External Variables
Command Description Implementation
Ans Returns the OS's Ans variable as an integer. This is unrelated to any Axe value. Throws an error if out of range. No, and possibly never.
EXP→Ans Stores the expression into the OS's Ans variable as an integer. This is unrelated to any Axe value. No, and possibly never.
GetCalc(PTR) Finds the object who's name is pointed to and returns a pointer to the start of its data, or zero if it was archived or not found. No
GetCalc(PTR,FILE) Attempts to create a file of the OS variable who's name is pointed to so it can be read from archive. Returns 0 if the variable was not found, and non-zero otherwise. No
GetCalc(PTR,SIZE) Creates an OS variable who's name is pointed to in RAM and makes it SIZE bytes large. Returns a pointer to the start of data, or zero if there was not enough RAM. Overwrites existing variable, even if it was in archive. No
UnArchive PTR Tries to unarchive the object who's name is pointed to. Returns 1 if it could unarchive and 0 otherwise. Gives a memory error if not enough RAM. No
Archive PTR Tries to archive the object who's name is pointed to. Returns 1 if it could archive and 0 otherwise. Gives a memory error if not enough Flash Memory. No
DelVar PTR Deletes the OS variable who's name is pointed to even if in archive. Nothing happens if the variable does not exist. No
input Prompts for an input string just like BASIC then returns a pointer to the string structure. Don't forget, its a string of tokens, not characters. No
float{PTR} fPart() Converts the float at the pointed address to an integer. Floats are 9 bytes large. No
EXP→float{PTR} fPart() Converts the expression into a float and then stores it at the pointed address. Floats are 9 bytes large. No
Interrupts
Command Description Implementation
FnInt(LBL,FREQ) Turns the subroutine into an interrupt and then turns interrupts on. The frequency can be (fastest) 0, 2, 4, or 6 (slowest). L2 is used for interrupt data so do not use L2 for storage when using interrupts. No
FnOn Turns on interrupts. No
FnOff Turns off interrupts. No
Stop Stops execution until the next interrupt occurs. Interrupts must be on or else the calculator will freeze. No
LnReg Returns the calculator to regular interrupt mode. MUST be called before exiting the program if using interrupts. No
Link Port
Command Description Implemented?
Port ClrTable Returns the status of the link port as a number 0-3. No
EXP→Port ClrTable Sets the link port to a given status with a number 0-3. Must exit program with status 0 if changed! No
Freq(WAVE,TIME) SinReg Sound is played out of the link port. Wave is inversely proportional to frequency and Time must be much greater than Wave to hear anything. No
Send(BYTE,TIME) Tries to send the byte across the linkport. It will keep trying until the other calculator receives the byte or time runs out. Returns 1 if the byte was sent successfully or 0 if it timed-out. Time is in the order of microseconds. No
Get Checks if the sender is trying to send anything. Returns the byte if it was received or -1 if nothing was sent. No waiting is done. No
Miscellaneous
Command Description Implemented?
Select(EXP1,EXP2) Returns the original value of EXP1, even if variables are modified in EXP2 No
length(PTR) Returns the number of bytes from the pointer to the next zero data element. No
inData(BYTE,PTR) inString() Searches for BYTE in the zero-terminated data. If found, it returns the position it was found in (starting at 1). If not found, 0 is returned. No
stdDev(PTR,N) Returns the pointer to the Nth string (starting from zero) from a list of zero-terminated strings. No
Equ▶String(STR1,STR2) Checks if 2 null-terminated strings are equal. Returns 0 if equal and non-zero otherwise. No
SortD(PTR,SIZE) Sorts up to 256 bytes of data from largest to smallest starting at the pointed address. No
cumSum(PTR,SIZE) Calculates the checksum of some data starting at the pointer for SIZE bytes. No
Features implemented
Any of these commands marked in gray will be ignored -- you can use them in your code, but they won't do anything.
Features not yet implemented