ICE Compiler Commands List v2.2

All the custom tokens and C functions are available by pressing [TRACE] in the program editor. Press the arrow keys to select one or switch menu's. Press [ENTER] to select the function or [CLEAR] to return.

System

Command Description
getKey Returns the key being pressed. See keycodes.png for the keycodes.
getKey(KEY) Returns 1 if the key KEY is pressed, 0 otherwise. This routine is much faster than getKey, and handles repeated keypresses as well. See keycodes.png for the keycodes.
Ans Returns Ans, the last answer that is stored in the calculator. An error is generated if Ans > 9999.
rand Returns a random number between 0 and 16777215.
randInt(EXP1,EXP2) Returns a random number between EXP1 and EXP2 inclusive.
Asm(HEX) Assembly code written in hexadecimal is inserted into the program.
AsmComp(PROGRAM)Preprocessor command Compiles the BASIC program PROGRAM. When it's done, ICE continues with compiling the previous program.
Pause Pauses the program until the user presses ENTER.
Pause EXP Pauses the program for EXP milliseconds.
prgmPROGRAM Executes the BASIC program PROGRAM. Any error will be ignored and it will return normally.
iPreprocessor command If the imaginary i (not the lowercase i) is the first token of a line, this line will be ignored during compiling.
SetBrightness(LEVEL) Sets the brightness of the screen. 0=high (light), 255=low (dark).
startTmr Returns the current timestamp of the 32KHz timer. This value can be used in checkTmr(.
checkTmr(TIMESTAMP) Subtracts TIMESTAMP from the current timestamp of the 32KHz timer.

Math

Command Description
VAR Returns the value of VAR. Multiple-letter variables are allowed up to 20 letters. Valid letters are A-θ.
°VAR Returns the address of VAR.
CONST Returns CONST.
EHEXPreprocessor command Returns the hexadecimal number HEX as an integer. The prefix is the scientific E.
πBINPreprocessor command Returns the binary number BIN as an integer.
-EXP Returns the negative of EXP. This is the negative sign, not the minus sign!
EXP1+EXP2 Adds EXP2 to EXP1.
EXP1-EXP2 Substracts EXP2 from EXP1.
EXP1*EXP2 Multiplies EXP1 with EXP2.
EXP1/EXP2 Divides EXP1 by EXP2.
EXP1=EXP2 Returns 1 if EXP1=EXP2, 0 otherwise.
EXP1EXP2 Returns 1 if EXP1EXP2, 0 otherwise.
EXP1>EXP2 Returns 1 if EXP1>EXP2, 0 otherwise.
EXP1EXP2 Returns 1 if EXP1EXP2, 0 otherwise.
EXP1EXP2 Returns 1 if EXP1EXP2, 0 otherwise.
EXP1<EXP2 Returns 1 if EXP1<EXP2, 0 otherwise.
EXP1 and EXP2 Returns 1 if EXP1 and EXP2 are both not equal to 0, 0 otherwise.
EXP1 or EXP2 Returns 1 if EXP1 or EXP2 is not equal to 0, 0 otherwise.
EXP1 xor EXP2 Returns 1 if one of EXP1 and EXP2 is not equal to 0, 0 otherwise.
EXP1·EXP2 Returns the bitwise and of EXP1 and EXP2. This is a plot style token.
EXP1EXP2 Returns the bitwise or of EXP1 and EXP2. This is a plot style token.
EXP1EXP2 Returns the bitwise xor of EXP1 and EXP2. This is a plot style token.
EXPVAR Stores EXP into VAR.
not(EXP) Returns the negation of EXP, so if EXP is nonzero, it returns 0, and 1 otherwise.
remainder(EXP1,EXP2) Returns the remainder of EXP1/EXP2.
min(EXP1,EXP2) Returns the minimum of EXP1 and EXP2.
max(EXP1,EXP2) Returns the maximum of EXP1 and EXP2.
mean(EXP1,EXP2) Returns the mean of EXP1 and EXP2.
sqrt(EXP) Returns the square root of EXP.
sin(EXP) Returns the sine root of EXP. One period is [0,255] and it returns a value in [-255,255].
cos(EXP) Returns the cosine root of EXP. One period is [0,255] and it returns a value in [-255,255].

Controls

Command Description
If EXP:code:End If EXP is true, code will be executed.
If EXP:code1:Else:code2:End If EXP is true, code1 will be executed, code2 otherwise
Repeat EXP:code:End Repeats executing code until EXP is true. code always executes at least once.
While EXP:code:End Executes code until EXP is false. EXP is checked first.
For(VAR,EXP1,EXP2):code:End VAR is initialized with EXP1. If VAR is greater than EXP2, the loop ends. Otherwise, code is executed and VAR is incremented.
For(VAR,EXP1,EXP2,EXP3):code:End VAR is initialized with EXP1. If VAR is greater than EXP2, the loop ends. Otherwise, code is executed and EXP3 is added to VAR. If EXP3 is a negative constant, it will loop until VAR is smaller than EXP1.

Labels

Command Description
Labels are limited to 20 characters.
Lbl LABELPreprocessor command Creates a label at the current position.
Goto LABEL Jumps to a label.
Call LABEL Calls a label. This label should have a Return, otherwise the program will very likely crash.
Return Returns. If you called a label before, and Return is in that label, the program will jump back to the main program. Otherwise, you program will end.
ReturnIf EXP Returns if EXP is true. If you called a label before, and ReturnIf is in that label, the program will jump back to the main program. Otherwise, you program will end.

Graphics

Command Name Description Returns
For all routines that uses coordinates, they are measured from the top left origin of the screen.
det(0) Begin Initializes the graphics library setup (8bpp, default palette, clear screen). -
det(1) End Closes the graphics setup. Restores the LCD to 16bpp prefered by the OS and clears the screen. -
det(2,COLOR) SetColor Sets the color index that drawing routines will use. This applies to lines, rectangles, circles, etc. Previous set color index.
det(3) SetDefaultPalette Sets up the default palette where H=L (xLIBC palette). -
det(4,"DATA",SIZE,OFFSET) SetPalette Sets entries in the palette. Each entry is 2 bytes, so SIZE should be the amount of entries you want to set times 2. -
det(5,COLOR) FillScreen Fills the screen with a given palette index. -
det(6,X,Y) SetPixel Sets a pixel to the global color index. This is measured from the top left origin of the screen. Pixels are only clipped within the screen boundaries. -
det(7,X,Y) GetPixel Gets a pixel's color index. This is measured from the top left origin of the screen. Pixels are only clipped within the screen boundaries. Pixel color index.
det(8) GetDraw Gets current draw location. 0 = screen, 1 = buffer. Current draw location.
det(9,BUFFER) SetDraw Forces all graphics routines draw location. 0 = draw at screen, 1 = draw at buffer. -
det(10) SwapDraw Swaps the roles of the screen and drawing buffers. Does not wait for the old screen buffer to finish being displayed. Instead, the next invocation of a graphx drawing function will block, waiting for this event. To block and wait explicitly, use Wait.
In practice, this function should be invoked immediately after finishing drawing a frame to the drawing buffer, and invocation of the first graphx drawing function for the next frame should be scheduled as late as possible relative to non-drawing logic. Non-drawing logic can execute during time when a drawing function may otherwise block.
-
det(11,BUFFER) Blit Copies the input buffer to the opposite buffer. No clipping is performed; as it is a copy not a draw. 0 = copy screen to buffer, 1 = copy buffer to screen. -
det(12,BUFFER,Y,LINES) BlitLines Copies lines from the input buffer to the opposite buffer. No clipping is performed; as it is a copy not a draw. 0 = copy screen to buffer, 1 = copy buffer to screen. -
det(13,BUFFER,X,Y,WIDTH,HEIGHT) BlitRectangle Copies a rectangle from the input buffer to the opposite buffer. No clipping is performed; as it is a copy not a draw. 0 = copy screen to buffer, 1 = copy buffer to screen. -
det(14,CHAR) PrintChar Outputs a character at the current cursor position. (Should be a number, you can find them here). -
det(15,EXP,CHARS) PrintInt Prints a signed integer at the current cursor position using CHARS characters. By default, no text clipping is performed (configurable with SetTextConfig). -
det(16,EXP,CHARS) PrintUInt Prints an unsigned integer at the current cursor position using CHARS characters. By default, no text clipping is performed (configurable with SetTextConfig). -
det(17,"STRING") PrintString Prints a string at the current cursor position. By default, no text clipping is performed (configurable with SetTextConfig). -
det(18,"STRING",X,Y) PrintStringXY Outputs a string at the supplied coordinates. Posistion is measured from top left origin of screen. By default, no text clipping is performed (configurable with SetTextConfig). -
det(19,X,Y) SetTextXY Sets the text cursor XY position. -
det(20,COLOR) SetTextBGColor Sets text background color. Default text background color index: 255. Previous text background color index.
det(21,COLOR) SetTextFGColor Sets text foreground color. Default text foreground color index: 0. Previous text foreground color index.
det(22,COLOR) SetTextTransparentColor Sets text transparency color. Default text transparency color index: 255. Previous text transparency color index.
det(23,"DATA") SetFontData Sets the font's character data. Format of font data is 8 bytes horizontally aligned. Pointer to previous font data
det(24,"DATA") SetFontSpacing Sets the font spacing. "DATA" can also be a pointer to the data. -
det(25,SPACE) SetMonospaceFont Sets monospaced font. To disable monospaced font, set to 0 -
det(26,"STRING") GetStringWidth Gets the pixel width of the given string. Takes into account monospacing flag. Width in pixels of string.
det(27,CHAR) GetCharWidth Gets the pixel width of the given character. Takes into account monospacing flag. Width in pixels of character.
det(28) GetTextX Returns the current text cursor X position. The current text cursor X position.
det(29) GetTextY Returns the current text cursor Y position. The current text cursor Y position.
det(30,X1,Y1,X2,Y2) Line Draws a line. -
det(31,X,Y,LENGTH) HorizLine Draws a horizontal line. Performs faster than using Line(. -
det(32,X,Y,LENGTH) VertLine Draws a vertical line. Performs faster than using Line(. -
det(33,X,Y,RADIUS) Circle Draws a circle outline. -
det(34,X,Y,RADIUS) FillCircle Draws a filled circle. -
det(35,X,Y,WIDTH,HEIGHT) Rectangle Draws a rectangle outline. -
det(36,X,Y,WIDTH,HEIGHT) FillRectangle Draws a filled rectangle. -
det(37,X1,Y1,X2,Y2) Line_NoClip Draws an unclipped line. -
det(38,X,Y,LENGTH) HorizLine_NoClip Draws an unclipped horizontal line. Performs faster than using Line(. -
det(39,X,Y,LENGTH) VertLine_NoClip Draws an unclipped vertical line. Performs faster than using Line(. -
det(40,X,Y,RADIUS) FillCircle_NoClip Draws an unclipped filled circle. -
det(41,X,Y,WIDTH,HEIGHT) Rectangle_NoClip Draws an unclipped rectangle outline. -
det(42,X,Y,WIDTH,HEIGHT) FillRectangle_NoClip Draws an unclipped filled rectangle. -
det(43,XMIN,YMIN,XMAX,YMAX) SetClipRegion Sets the clipping window. This window is used across all clipped routines. -
det(44,CLIP_REGION) GetClipRegion Clips a region to fit within the window. 0 = offscreen, 1 = onscreen. 0 if offscreen, 1 if onscreen.
det(45,PIXELS) ShiftDown Shifts the drawing window down. -
det(46,PIXELS) ShiftUp Shifts the drawing window up. -
det(47,PIXELS) ShiftLeft Shifts the drawing window left. -
det(48,PIXELS) ShiftRight Shifts the drawing window right. -
det(49,VAR,X_OFFSET,Y_OFFSET) Tilemap Draws a tilemap given an initialized tilemap structure. VAR should point to the tilemap structure, which you can get with DefineTilemap(. -
det(50,VAR,X_OFFSET,Y_OFFSET) Tilemap_NoClip Draws an unclipped tilemap given an initialized tilemap structure. VAR should point to the tilemap structure, which you can get with DefineTilemap(. -
det(51,VAR,X_OFFSET,Y_OFFSET) TransparentTilemap Draws a transparent tilemap given an initialized tilemap structure. VAR should point to the tilemap structure, which you can get with DefineTilemap(. -
det(52,VAR,X_OFFSET,Y_OFFSET) TransparentTilemap_NoClip Draws an unclipped transparent tilemap given an initialized tilemap structure. VAR should point to the tilemap structure, which you can get with DefineTilemap(. -
det(53,VAR,X_OFFSET,Y_OFFSET) TilePtr Gets a pointer to a particular tile given an initialized tilemap structure and pixel offsets. VAR should point to the tilemap structure, which you can get with DefineTilemap(. -
det(54,VAR,ROW,COL) TilePtrMapped Gets a pointer to a particular tile given an initialized tilemap structure and mapped offsets. VAR should point to the tilemap structure, which you can get with DefineTilemap(. -
For all sprite commands: PTR should be a pointer to the sprite data done with DefineSprite(. Check sprites.txt how to define sprites.
det(57,PTR,X,Y) Sprite Draws a sprite. -
det(58,PTR,X,Y) TransparentSprite Draws a transparent sprite. -
det(59,PTR,X,Y) Sprite_NoClip Draws an unclipped sprite. -
det(60,PTR,X,Y) TransparentSprite_NoClip Draws an unclipped transparent sprite. -
det(61,PTR,X,Y) GetSprite Grabs the background behind a sprite, and stores it to the memory pointed to by PTR. Note: you need to store the width and the height (both 1-byte values) to the memory first. -
det(62,PTR,X,Y,WSCALE,HSCALE) ScaledSprite_NoClip Scales an unclipped sprite. Scaling factors must be greater than or equal to 1, and an integer factor. -
det(63,PTR,X,Y,WSCALE,HSCALE) ScaledTransparentSprite_NoClip Scales an unclipped transparent sprite. Scaling factors must be greater than or equal to 1, and an integer factor. -
det(64,PTR_IN,PTR_OUT) FlipSpriteY Flips a sprite along the Y axis. Note: PTR_IN and PTR_OUT cannot be the same. PTR_OUT pointer.
det(65,PTR_IN,PTR_OUT) FlipSpriteX Flips a sprite along the X axis. Note: PTR_IN and PTR_OUT cannot be the same. PTR_OUT pointer.
det(66,PTR_IN,PTR_OUT) RotateSpriteC Rotates a sprite 90 degrees clockwise. Note: PTR_IN and PTR_OUT cannot be the same. PTR_OUT pointer.
det(67,PTR_IN,PTR_OUT) RotateSpriteCC Rotates a sprite 90 degrees counter clockwise. Note: PTR_IN and PTR_OUT cannot be the same. PTR_OUT pointer.
det(68,PTR_IN,PTR_OUT) RotateSpriteHalf Rotates a sprite 180 degrees. Note: PTR_IN and PTR_OUT cannot be the same. PTR_OUT pointer.
det(69,PTS,NUM_PTS) Polygon Draws a polygon outline with NUM_PTS points. PTS should point to a 3-byte list, with all the X- and Y-coordinates of the points, so {X1,Y1,X2,Y2,...} -
det(70,PTS,NUM_PTS) Polygon_NoClip Draws an unclipped polygon outline with NUM_PTS points. PTS should point to a 3-byte list, with all the X- and Y-coordinates of the points, so {X1,Y1,X2,Y2,...} -
det(71,X1,Y1,X2,Y2,X3,Y3) FillTriangle Draws a filled triangle. -
det(72,X1,Y1,X2,Y2,X3,Y3) FillTriangle_NoClip Draws an unclipped, filled triangle. -
det(74,XSCALE,YSCALE) SetTextScale Sets the scaling for text. Values in the range from 1-5 are preferred. -
det(75,COLOR) SetTransparentColor Sets the transparent index that drawing routines will use. This currently applies to transparent sprites, both scaled and unscaled. Previous transparent color index.
det(76) ZeroScreen Implements a faster version of gfx_FillScreen(0). -
det(77,CONFIG) SetTextConfig Sets the configuration for the text routines. 1 = clipping, 2 = no clipping. -
det(78,CHAR) GetSpriteChar Creates a temporary character sprite. This may be useful for performing rotations and other. Pointer to temp sprite.
det(79,COLOR,AMOUNT) Lighten Lightens a given 1555 color; useful for palette color conversions. AMOUNT is the amount to lighten by. Lightened color.
det(80,COLOR,AMOUNT) Darken Darkens a given 1555 color; useful for palette color conversions. AMOUNT is the amount to darken by. Darkened color.
det(81,HEIGHT) SetFontHeight Sets the height in pixels of each character. Previous height of font in pixels.
det(82,PTR_IN,PTR_OUT) ScaleSprite Resizes a sprite to new dimensions. PTR_OUT pointer.
det(83,X,Y,COLOR) FloodFill Fills an area with a color. This routine performs clipping to stay within the window, but you must ensure it starts in the window. -
det(84,PTR,X,Y) RLETSprite Draws a sprite with RLE transparency. -
det(85,PTR,X,Y) RLETSprite_NoClip Draws an unclipped sprite with RLE transparency. -
det(86,PTR_IN,PTR_OUT) ConvertFromRLETSprite Converts a sprite with RLE transpareny to a sprite with normal transparency. Width and height will be set in the converted sprite. The transparent color index in the converted sprite is controlled by SetTransparentColor. The output sprite must have been allocated with a large enough data field to hold the converted sprite data, which will be width * height bytes large. PTR_OUT pointer.
det(87,PTR_IN,PTR_OUT) ConvertToRLETSprite Converts a sprite with normal transpareny to a sprite with RLE transparency. Width and height will be set in the converted sprite. The transparent color index in the converted sprite is controlled by SetTransparentColor. The output sprite must have been allocated with a large enough data field to hold the converted sprite data. PTR_OUT pointer.
det(89,PTR_IN,PTR_OUT,ANGLE,SCALE) RotateScaleSprite Fixed Rotation with scaling factor for sprites. The output sprite is updated with the dimensions required for the implemented scaling factor. You must make sure that PTR_OUT has enough memory to store the needed output sprite. This can be found with the following formula: size = (max_scale / 64) * width * height + 2. A scale factor of 64 represents 100% scaling. This routine only accepts square input sprites. PTR_OUT pointer.
det(90,PTR,X,Y,ANGLE,SCALE) RotatedScaledTransparentSprite_NoClip Fixed Rotation with scaling fator for sprites. A scale factor of 64 represents 100% scaling. This routine only accepts square input sprites. The size of the sprite after scaling.
det(91,PTR,X,Y,ANGLE,SCALE) RotatedScaledSprite_NoClip Fixed Rotation with scaling fator for sprites without transparency. A scale factor of 64 represents 100% scaling. This routine only accepts square input sprites. The size of the sprite after scaling.
det(92,INDEX,"DATA") SetCharData Sets the font data for a specific character. If using the default font, INDEX range from 0-127, custom font can have indexes 0-255. "DATA" should be 0 if you want to get the current character data. Pointer to current character data if "DATA" is 0, otherwise a pointer to next character data.
det(93) Wait Waits for the screen buffer to finish being displayed after SwapDraw. In practice, this function should not need to be invoked by user code. It should be invoked by custom drawing functions (as late as reasonably possible) before writing to the drawing buffer. -

File I/O

Command Name Description
sum(0) CloseAll Closes all open slots. Call this before you use any variable functions!
sum(1,"NAME","MODE") Open Opens an appvar with name "NAME". Returns the slot number or 0 if failure. "MODE" options:
- "r" - Opens a file for reading. The file must exist. Keeps file in archive if in archive.
- "w" - Creates an empty file for writing. Overwrites file if already exists.
- "a" - Appends to a file. Writing operations, append data at the end of the file. The file is created if it does not exist.
- "r+" - Opens a file to update both reading and writing. The file must exist. Moves file from archive to RAM if in archive.
- "w+" - Creates an empty file for both reading and writing. Overwrites file if already exists.
- "a+" - Opens a file for reading and appending. Moves file from archive to RAM if in archive. Created if it does not exist.
sum(2,"NAME","MODE",TYPE) OpenVar Opens a variable with name "NAME" and type TYPE. See sum(1 for the "MODE" options. Returns the slot number or 0 if failure. TYPE options:
- 0 - Real
- 1 - Real list
- 2 - Matrix
- 3 - Equation
- 4 - String
- 5 - Program
- 6 - Protected program
- 12 - Complex
- 13 - Complex list
- 21 - Appvar
- 22 - Temp program
sum(3,SLOT) Close Frees an open slot.
sum(4,"DATA",SIZE,COUNT,SLOT) Write Writes "DATA" at the offset of the variable in slot SLOT. Exactly COUNT times SIZE bytes are written, and this function returns SIZE or 0 in an error occured. SIZE*COUNT is added to the variable offset.
sum(5,PTR,SIZE,COUNT,SLOT) Read Reads COUNT times SIZE bytes from the variable in slot SLOT and copies everything to PTR. If everything went right, this function returns SIZE or 0 if on failure. SIZE*COUNT is added to the variable offset.
sum(6,SLOT) GetChar Gets a char from the variable in slot SLOT and increments the offset.
sum(7,CHAR,SLOT) PutChar Writes a char to the variable in slot SLOT and increments the offset.
sum(8,"NAME") Delete Delets an appvar.
sum(9,"NAME",TYPE) DeleteVar Delets a variable with type TYPE. See sum(2 for the types.
sum(10,OFFSET,ORIGIN,SLOT) Seek Seeks the variable in slot SLOT to an offset. ORIGIN options:
- 0 - SEEK_SET - seek from beginning of file
- 1 - SEEK_CUR - seek from current offset in file
- 2 - SEEK_END - seek from end of file
sum(11,SIZE,SLOT) Resize Resizes the variable in slot SLOT.
sum(12,SLOT) IsArchived Returns 0 if the variable in slot SLOT is in RAM, and 1 if in archive.
sum(13,ARCHIVED,SLOT) SetArchiveStatus Sends the variable into either the archive or RAM if needed. ARCHIVED options:
- 0 - Send to RAM
- 1 - Send to archive
sum(14,SLOT) Tell Returns the offset in a slot.
sum(15,SLOT) Rewind Seeks to the start of the variable in slot SLOT.
sum(16,SLOT) GetSize Gets the size of the variable in slot SLOT.
sum(17,°READ_PTRLEN_TOKLEN_STR) GetTokenString Reads the token at READ_PTR and returns a pointer to the characters. Both variables LEN_TOK and LEN_STR gets overwritten with respectively the length of the token (1- or 2-byte token) and the length of the string (the amount of characters).
sum(18,SLOT) GetDataPtr Gets a pointer to the data located at the current position of the variable in slot SLOT.
sum(19,°POS,"DATA") Detect Finds the first appvar starting at POS which starts with the data "DATA". If you want to search for all appvars, you can replace "DATA" with 0. Returns the pointer to the filename. POS is updated each call, and should be 0 to start the search. Returns 0 if no more appvars found.
sum(20,°POS,"DATA",TYPE) DetectVar Finds the first variable with type TYPE starting at POS which starts with the data "DATA". If you want to search for all variables with type TYPE, you can replace "DATA" with 0. Returns the pointer to the filename. POS is updated each call, and should be 0 to start the search. Returns 0 if no more variables found. See sum(2 for the types.
sum(29,°POS,"DATA"TYPE) DetectAny Finds the first variable starting at POS which starts with the data "DATA". If you want to search for all variables, you can replace "DATA" with 0. Returns the pointer to the filename. POS is updated each call, and should be 0 to start the search. TYPE is updated each call with the found filetype. Returns 0 if no more variables found. See sum(2 for the types.
sum(30,SLOT) GetVATPtr Gets the VAT location of the variable in slot SLOT.
sum(31,PTR,SLOT) GetName Gets the variable name of the variable in slot SLOT and writes it to PTR.
sum(32,"OLD","NEW") Rename Renames the appvar "OLD" to "NEW". Returns 0 on success, 1 if the file already exists and 2 when any other error occurs. It is potentially hazardous to rename an open file. Be sure to close the open file before renaming!
sum(33,"OLD","NEW",TYPE,) RenameVar Renames the variable with type TYPE and name "OLD" to "NEW". Returns 0 on success, 1 if the file already exists and 2 when any other error occurs. It is potentially hazardous to rename an open file. Be sure to close the open file before renaming!

Memory

Command Description
DefineSprite(WIDTH,HEIGHT)Preprocessor command Allocates WIDTH*HEIGHT+2 bytes for an empty sprite. This is recommend for duplicating, rotating or enlarging sprites. Returns a pointer to the allocated memory.
DefineSprite(WIDTH,HEIGHT,"DATA")Preprocessor command Defines a sprite with data DATA, width WIDTH and height HEIGHT. Returns a pointer to the start of the sprite.
DefineTilemap(TILE_HEIGHT,TILE_WIDTH,DRAW_HEIGHT,DRAW_WIDTH,TYPE_WIDTH,TYPE_HEIGHT,TILEMAP_HEIGHT,TILEMAP_WIDTH,Y,X,VAR,"MAP_DATA")Preprocessor command Defines a tilemap. VAR should be a variable, which holds a pointer to the table with pointers to the sprites, which returns from LoadData(. See tilemaps.docx how to get the map data. Returns a pointer to the tilemap struct, which can be used in det(50. TYPE_HEIGHT, TYPE_WIDTH options:
- 0 - Not a power of 2
- 1 - Tile width/height of 2
- 2 - Tile width/height of 4
- 3 - Tile width/height of 8
- 4 - Tile width/height of 16
- 5 - Tile width/height of 32
- 6 - Tile width/height of 64
- 7 - Tile width/height of 128
Data(SIZE,CONST1,CONST2...)Preprocessor command Places constant data in program memory with each element size of SIZE bytes. Returns a pointer to the data.
CopyData(DEST,SIZE,CONST1,CONST2...) Places constant data in program memory with each element size of SIZE bytes and copies it to DEST. Returns a pointer to the end of the data in the program data.
Alloc(SIZE) Allocates SIZE bytes in safe RAM. An error will be displayed if you allocated too much memory. Returns a pointer to the memory.
Copy(DEST,SRC,SIZE) Copies SIZE bytes from SRC to DEST.
Copy(...,DEST,SRC,SIZE) Copies SIZE bytes from SRC to DEST backwards. The first argument can be anything you like.
LoadData("APPVAR",OFFSET,SIZE) Returns a pointer to the table with pointers to the tiles from the tilemap in appvar "APPVAR". This pointer should be used in DefineTilemap(. You can get these values from ConvPNG. See tilemaps.txt for more information.
Compare(PTR1,PTR2) Compares the string pointed to by PTR1 with the string pointed to by PTR2. Returns 0 if both strings (zero-terminated) are the same, -1 if the ASCII value of the first unmatched character is less than the second and 1 if the ASCII value of the first unmatched character is greater than the second.
L₁...L₆ Returns the pointer to one of the OS lists as an integer.
LIST(EXP) Same as {LIST+EXP} but easier to remember.
*{EXP} Returns the single byte EXP points to.
**{EXP} Returns the 2-byte value EXP points to.
{EXP} Returns the word EXP points to. ***{EXP} is valid syntax as well.
EXP1→*{EXP2} The single byte of EXP1 is stored where EXP2 points to.
EXP1→**{EXP2} The 2-byte value EXP1 is stored where EXP2 points to.
EXP1→{EXP2} The word EXP1 is stored where EXP2 points to. EXP1→***{EXP2} is valid syntax as well.

Strings

Command Description
"STRING" Adds a string to the program data and returns a pointer to it.
STRING_VAR Returns a pointer to STRING_VAR. The 10 BASIC tokens are available for string variables, Str0-Str9.
"STRING1"+"STRING2" Concatenates two strings. String variables are valid as well. Returns a pointer to the data.
"STRING"STRING_VAR Stores "STRING" into one of the 10 available string variables, Str0-Str9. Storing one string variable into another one is valid as well.
sub("STRING",OFFSET,SIZE) Copies SIZE bytes starting at offset OFFSET from "STRING" to a temporary location and returns a pointer to it. String variables are valid as well.
length("STRING") Returns the length of "STRING". String variables are valid as well.
inString("STR1","STR2") Finds the first occurence of "STR2" in "STR1". Returns a pointer to the substring if the substring is found, or 0 otherwise.

Text

Command Description
Disp EXP1,EXP2,... Displays either an expression or a string at the cursor position. i puts the cursor at the start of a new line.
Output(ROW,COLUMN) Puts the cursor at coordinates (ROW,COLUMN).
Output(ROW,COLUMN,EXP1) Displays either the outcome of an expression or a string at coordinates (ROW,COLUMN).
ClrHome Clears the homescreen full. It is recommend to call this function before using Disp. The cursor moves to the upper-left corner.
Input VAR Asks for a user input, and stores the value in VAR.
Input "STRING",VAR Asks for a user input while displaying "STRING", and stores the value in VAR.