Variables are handled as strings, except when specified for mathematical functions.
If you need more than 256 variables or 255 files open at any given time, you'll either need to use memd/meml feature, or just put down the keyboard and find something else to do with your time.
Main output screen is handled like an LCD for a graphing calculator. If you're looking for fancy, 3D hardware accelerated graphics with a 4GB GPU, go play some World of Chatcraft or Prunescape, you freak. DSCRN is used to handle the "output" graphical LCD-type display (10x33)
Arguments are handled via TARG, TCMD, TC0-Tc5, which means that each argument has up to six optional parameters. Declared variables that are present in TARG are replaced with their appropriate memory addresses for each argument that requires them. Yes, that includes the disp command, mainly because I'm lazy, and you should be naming your variables something cryptic and unreadable.
There is no GOTO/IF...THEN command. If/Then type results explicitly execute a command. Compare two variables, if the operand returns true, execute module. This forces clean, modularized code right from the break, especially since this is a high level implementation of a low level interpreted scripting language. I do what I want.
Also, modulename can be replaced with a labelname/jmp, or single-use-resume commands.
Commands/Syntax
=======================
Address Space Format XX = 00-FF (must be hex)
****Reserved Declarations****
+--------------------------------------------------
"Time$" = Current Time$)
"Date$" = Current Date$)
"Command$" = Command$ Parameters)
"CC$" = CommCount - Current Instruction Count
"CCM$" = CommCountMax - Maximum Instruction Count
+--------------------------------------------------
'-----------------------
cls - clear screen
title []- set title bar to [message]
disp [] - display []
loadgr filename - load plain text graphic display (
rndfill - fills individual displays with randomzied r,g,b background, no additional arguments required
set x,y,r,g,b - sets back color at x,y; r,g,b must be 00-ff
setfill r,g,b - sets entire display to r,g,b
out x,y,[] - display [] starting at x,y
msgbox [message],[title] - display standard "OK" messagebox with "message", and title bar.
drwln X1,Y1,X2,Y2,0-200,0-6 - draw specific line vector on form (X1,Y1 - X2,Y2), line forbiddens 0-6
0 - Transparent
1 - Solid
3 - Dash
4 - Dot
5 - Dash-Dot-Dot
6 - Inside Solid
'drwln 200,200,300,300,0,1
clrln - 0-200 clear specific vector line
clrv - clear vector lines
clrimg - remove image from view
dspimg [filename], Top, Left, Width, Height (decimal)
lsnd [filename] - load and play sound from file
ssnd - stop playing sound
bind x,y,[modulename] - Binds virtual LCD display element x,y to specified module via double-click.
unbind x,y - unbind LCD display element x,y
'--------------------
'set, declare, and access variables
'if you don't declare a variable name, you'll need to use XX addresses, followed by notation
'--------------------
dvar XX,name - declare variable at XX memory address, assign name to address; X = 0-f
rvar XX - remove variablename pointer, reset all aspects
svar XX/variablename,$/comment,[]/00-FF - Save to variable aspect, value (00-FF in cases of ./byte)
dspvr XX/variablename, aspect - Display variable aspect
shwvr x,y,XX/variablename,aspect - Show variable aspect on screen at X,Y
'-------------------------
'math operations, and saving to variables (only implements numeric aspect)
'-------------------------
str XX/variablename - set variablename to saving variable
add XXXX - add value to target and save
sub XXXX - subtract value from target and save
mult XXXX - multiply value with target and save
div XXXX - divide by value and save
int - save integer value of focused variable to target
abs - save absolute value of focused variable to target
rnd XXXX - seed random value of XXXX to target and save
sin - sine of focused variable to target and save
cos - cosine of focused variable to target and save
tan - tangent of focused variable to target and save
'-------------------------
'string operations, and saving to variables (implements strings/variables)
'-------------------------
rpl string1/variablename1,string2/variablename2
mvs string/variablename - move string or variablename value to focused variable
ad$ string/variablename - add string/variablename to focused variable
mid$ string/variablename1,start,len - save substring section (start,len) of string/variablename
'-------------------------
'DOS-like Command Sequence
'Various flow control
'-------------------------
shl [dos commands]
run modulename
jmp labelname
.labelname; - create label for jmp labelname
mkdir dirname
rmdir dirname
del filename
copy sourcename,destinationname
'-------------------------
'File, I/O Control
' ---types---
' input
' output
' binary
'-------------------------
onkey XXX(decimal),modulename
iseof 02-FF,modulename
in$ XX/variablename,prompt
in# XX/variablename,prompt
fopen filename,02-FF,type
fclose 02-FF
fprint 02-FF,[]
fread 02-FF,XX/Variablename
fget 02-FF,XX/Variablename
fput 02-FF,XX/Variablename
'-------------------------
'memstate management
'-------------------------
clrsys - garbage collection/reset system variables and aspects
memd spacename - saves memory state to /memstate/spacename
meml spacename - loads memory state from /memstate/spacename
bsvn spacename - loads variable names from /memstate/spacename
bsvl spacename - loads variable values from /memstate/spacename
'-------------------------
'If/Then type arguments
'-------------------------
if=! aspect, XX/variablename1, XX/variablename2, modulename
':example
' if! $, First_Name_Guest1, First_Name_Guest2, MEET_NEW_PEOPLE
'The bad news is that you're gradually slipping into senility.
'-------------------------
'-------------------------
'Internet Controls
'-------------------------
ftpp host, port, username, password, localfilename, remotefilename
ftpg host, port, username, password, localfilename, remotefilename
ping servername, module
'-------------------------
'Crypto-Hashing (Files)
'-------------------------
md5 filename,xx/variablename
exit
COMMENTS
-