Allows QB64-specific keywords to be called without the leading underscore.
Per user and per project; affects nothing globally.
Allows prefixed keywords to be used even when it's set.
Two new keywords added:
FUNCTION _INFLATE$ (text$)
FUNCTION _DEFLATE$ (text$)
Use of these commands can compress and decompress strings using the ZLIB library.
Move $COLOR commands so they process after the precompile commands (such as $LET), otherwise they may not be included/excluded properly when between $IF blocks.
Made statement $COLOR:0 or $COLOR:32 so color names could be used in
either screen 0 or 32-bit screens, as the user desired.
Made routines only callable once. Multiple references will result in
error messages being given now.
CONST has more options than what the internal math routine itself
handles; it doesn't need to toss an error message whenever those pop up;
just when it's an actual math style message. This fixes that.
An arrow to the left of the line where a variable was defined will be shown after compilation to indicate that variable hasn't been used throughout the program.
When USING follows another print in the same statement (such as PRINT
"123"; USING "###"; 456), it created a memory leak due to the temp
variable being created twice and only freed once. This patch corrects
that issue.
Fix to the precompiler so $IF/$LET work as expected. Adds ability to
see if a precompiler variable is DEFINED or UNDEFINED, to exclude
duplicate code in libraries and such.
Existing syntax:
colour~& = _RGB32(red, green, blue)
New possible uses:
- Instead of passing identical rgb values to achieve a shade of gray, pass only 1 parameter for all color components:
colour~& = _RGB32(51) 'same as _RGB32(51, 51, 51)
- _RGB32 can now take an optional alpha parameter, which makes _RGBA32 obsolete (although it still exists for retrocompatibility):
colour~& = _RGB32(255, 0, 255, 30) 'same as _RGBA32(255, 0, 255, 30)
- If you want a shade of gray and also to specify the alpha level, you can pass just two parameters:
colour~& = _RGB32(51, 30) 'same as _RGBA32(51, 51, 51, 30)
In summary:
- 1 parameter = red, green and blue simultaneously set.
- 2 parameters = red, green and blue simultaneously set plus alpha level.
- 3 parameters = red, green and blue as usual.
- 4 parameters = red, green and blue plus alpha level (same as _RGBA32).
_ECHO is more of a macro than a new statement, as it'll perform the following actions:
1- Save current _DEST;
2- Switch to _CONSOLE;
3- Print the passed string (only strings accepted);
4- Switch back to previous _DEST.
None of the PRINT features such as USING, numeric variables, retaining the cursor are implemented/planned for this statement.
Closes#29
By unchecking the new switch in the Options menu, the IDE won't warn and "red-light" every single mistake until you tell it to start compilation with F5.
Signed-off-by: FellippeHeitor <fellippeheitor@gmail.com>
- SUBs and FUNCTIONs names will be highlighted throughout the code.
- The same color assigned to metacommands is used for custom keywords.
- A custom dictionary can also be added to internal/config.txt.
- SUBs and FUNCTIONs in $INCLUDEd files also get highlighted, as long as there aren't any errors preventing compilation.
Signed-off-by: FellippeHeitor <fellippeheitor@gmail.com>
Upon attempting to load a binary file, the IDE will detect that the file type is a QuickBASIC 4.5 binary file and offer to convert it to plain text using qarnos's QB45BIN utility.
A line starting with a TAB character and an ELSE clause would be incorrectly regarded as having a syntax error when compiling via command line interface. This fixes that issue.
Change to mem.TYPE from LONG variable type to OFFSET. This prevents
4-bytes padding from throwing off values for mem.ELEMENTSIZE and
mem.IMAGE on 64-bit systems.
Patch should work on Mac, Linux, and Windows; both 32-bit and 64-bit
versions, giving the correct results for mem.ELEMENTSIZE and mem.IMAGE
from now on.