You are on page 1of 13

QB64 COMPILER V0.954 ==================== V0.

954 Specific =============== -Implements the '_MEM' memory interface for safe, fast, raw memory access [http: //www.qb64.net/forum/index.php?topic=5967.msg61466#msg61466] -Patch applied for SHELL "consolecommand >somefile" in Win7 Professional (previo usly didn't work) V0.953 Specific =============== -New commands added: $CONSOLE _CONSOLE OFF _CONSOLE ON $SCREENHIDE $SCREENSHOW _SCREENHIDE _SCREENSHOW END return_code SYSTEM return_code return_code = SHELL("myprogram.exe") return_code = _SHELLHIDE("myprogram.exe") -A couple of bugs addressed V0.952 Specific =============== -First automated symultaneous multiplatform release of QB64 across Windows, Linu x & MacOSX -Some bugs addressed -Simple console usage added V0.951 Specific =============== -Implements a range of important bug/incompatibility fixes but no new functional ity (see the bugs/incompatibilities forum for details) V0.95 Specific ============== Primarily implements significant improvements to the IDE: -IDE is ~2x faster at checking programs -Recently opened files list -Bulk comment and uncomment -Saved code bookmarks for navigation -ASCII chart (and value of cursor's ASCII character shown) -Quick search field along with a list of things recently searched for -CONTROL+left/right arrow to move between words of text in code -Double click text in a single line text field to clear it -Copy (CTRL+C or CTRL+INS) and paste (CTRL+V or SHIFT+INS) into/from single line text fields -Mouse wheel scrolls lists (such as file lists in the open box) -Can press keyboard keys to jump through list items (before it just gave the fir st one or in some cases didn't work at all) -View/open/edit/save files with any extension, not just .BAS -Backwards searching (SHIFT+F3) -When a code error is reported in the IDE you can click on the 'ON LINE 1022' pa rt of the message (which is now highlighted) to jump to that location in your co de

-HOME key now toggles between the absolute left hand side (like before) on the f irst press and the first indented character of the line -Help system: -Linked to WIKI -Cached for speed but can be updated on request -F1 for help about a keyword (or symbol) the cursor is currently on in your co de -Navigation ribbon for moving forward and backwards between recently viewed he lp pages -Typing a word quickly finds links on help pages (useful on large index pages) -Fully keyboard and/or mouse browsable -F6 to transition between help window and code window V0.942 Specific =============== -DECLARE CUSTOMTYPE LIBRARY could not be used alongside regular SUBs/FUNCTIONs V0.941 Specific =============== -DECLARE CUSTOMTYPE LIBRARY (no arguments) patched (was trying to locate call in nonexistant library file) V0.94 Specific ============== -DECLARE LIBRARY significantly improved: -_OFFSET integer variable type implemented for the storage of pointers and offs ets which varies across systems/implementations and will grow in the future -DECLARE CUSTOMTYPE LIBRARY, allows you to override the required types and use the variable types you want, provided they are the same size -DECLARE STATIC LIBRARY, for specifying static linking over shared library link ing -Added DECLARE LIBRARY support to MacOSX & Linux including library versioning -SHELL _DONTWAIT and _SCREENIMAGE implemented in MacOSX & Linux -_FILEEXISTS and _DIREXISTS functions added to check for file & path existance -'Go to line', 'undo' & 'redo' added to IDE -Many bugs fixed, refer to bugs/incompatibilities forum -.'\internal\temp\recompile.bat/.sh/.command' batch/script file now autogenerate d on run to investigate C++ compilation issues when they arrise -Note: Windows version of QB64 now distributed with the full (not stripped down) version of the MinGW C++ compiler V0.936 Specific =============== -Implements the QB64 device interface which can handle joystick, keyboard and mo use input in a common way by referring to buttons, axes & wheels Example usage:[http://www.qb64.net/forum/index.php?topic=3585.msg36876#msg36876 ] -Implemented QBASIC's STICK, STRIG and ON STRIG functionality Example usage:[http://www.qb64.net/forum/index.php?topic=3585.msg37802#msg37802 ] -Fixed problem with _CONNECTIONADDRESS$ returning 'localhost' IP (external site this function relied on changed their procedure) Note: Several bugs/incompatibilities recently reported remain unaddressed by thi s update, but will be fixed in the next release. V0.935 Specific =============== -Improvements to _MAPTRIANGLE -Clipping bugs which caused program to crash fixed -_MAPTRIANGLE _SEAMLESS ... option added so common edges aren't drawn twice, af

fecting alpha dependent results -Limits (-16383 to 16383) on coordinate positions imposed, as this is a softwar e mapper for speed reasons it has some limitations -_SETALPHA fixed (was broken by syntax checking upgrade) V0.934 Specific =============== -Fixed the critical problem which made the IDE freeze/crash after a period of us age (Depending on the OS and RAM, the period could have been as short as a few minu tes!) -Improved support MacOSX (Note: V0.933 was a Mac only version released via a lin k in the bugs/incompatibilities forum) -New command added: _MAPTRIANGLE Calling syntax: _MAPTRIANGLE (10,10)-(10,20)-(20,20)[,sourceimage] TO (10,10)-(10,20)-(20,20)[, destimage] What does it do? It texture maps a triangular region from the source image onto the destination image. What's supported: -8bit, 32bit, _CLEARCOLOR and alpha Notes: A software mapper, but an extrememly fast one. Could easily be used to make an image rotator V0.932 Specific =============== This is an essential update which corrects problems added by V0.931 -Implements a totally revised set of rules governing name restrictions which off ers far greater QBASIC compatibility than V0.931 -Reports as yet unimplemented QBASIC commands as 'not implemented' when you try to use them -Bugs/Incompatibilities: -Indwelling $INCLUDE problem fixed -DELETE key after mouse click issue in IDE corrected -'Phantom errors' after correction of an invalid sub/function argument declarat ion in IDE fixed V0.931 Specific =============== -Implements robust syntax checking into all parts of the QB64 compiler: -Naming restrictions -Reserved name restrictions -Duplicate name restrictions -Checking for incorrect syntax -Checking all types match correctly for SUB/FUNCTION calls -and much more... -Minor bug-fixes/improvements V0.92x Updates ============== [0.927] New commands added: -_SNDRAW interface added [http://www.qb64.net/forum/index.php?topic=249 3.msg24885#msg24885] Multiplatform improvements: -Linux/MacOSX: Pop-up box on runtime errors -Linux/MacOSX: _CLIPBOARD$ uses OS's clipboard, very useful in QB64 IDE for cut/copy/paste operations -Linux: DELETE key now works correctly

-MacOSX: Apple(Command)+X/C/V/A also supported in IDE -MacOSX: CTRL+BREAK now works (CTRL+F15 on keyboards without a designat ed 'break' key) -(Linux too?)/MacOSX: TIMER now begins on the correct value, before it always started on the same value which also made RANDOMIZE TIMER do nothing! Bugs/Incompatibilities: -Severe memory leak related to GET/PUT fixed -Other minor bugs/incompatibilities have also been addressed [0.926] New commands added to QB64: QBASIC commands: KEY ON, KEY OFF, KEY LIST, ON KEY..., KEY(...) ON/OFF/STOP, KEY index, string$, etc PALETTE USING QB64 commands: _SCREENMOVE newwindowxposition,newwindowyposition _SCREENMOVE _MIDDLE 'center window on desktop mywindowxposition=_SCREENX 'set window's desktop position mywindowyposition=_SCREENY _MOUSEMOVE xoffset,yoffset 'moves the mouse cursor myosinfo$=_OS$ 'see [http://www.qb64.net/forum/index.php?topic=2495.0] Critical bugs fixed in: -PRINT USING -EOF -handling of NOT operator -passing multiple arrays to functions -KILL -READ Other minor problems addressed [0.925] Launch of QB64 for MacOSX: -MacOSX users must install Apple's 'Xcode' for C++ compilation before ru nning 'setup.command' (http://developer.apple.com/technologies/tools/xcode.html) -Users with 32-bit processors should copy qb64\common\libfreetype_altern atives\tiger_32bit\libfreetype.6.3.dylib over qb64\common\libfreetype.6.dylib if having difficulties -Created executable programs are portable between like OSX systems by co pying the executable file as well as the 'common' folder -To help launch executables without a console, a helper file called 'pro gramname_start.command' is created along with the executable [0.925] QB64 32-bit and 64-bit Linux versions have been joined by catering for m inor differences [0.925] Windows users should note that 0.925 was a Linux & MacOSX only release [0.924] Major bug fixes and ugrades to DECLARE LIBRARY including: -Returning STRING types (converts a NULL terminated char*) -Passing user defined TYPES (passes as a void*) -Specifying a file path in the library name -Error report when required DLL not present at runtime -Error report when declared function not present in DLL library at runti me -Direct passing of pointers between library functions (allows for passin g pointers with helper functions) -Many bugs in DECLARE LIBRARY fixed [0.924] 'SELECT CASE INKEY$' problem fixed [http://www.qb64.net/forum/index.php? PHPSESSID=ope93cs4q1imq0qp0cvhk07ft3&topic=1930.0] [0.923] DECLARE LIBRARY command added to allow for calling functions in external libraries (http://www.qb64.net/forum/index.php?topic=1712.0) [0.923] Various minor bugs/incompatibilities fixed [0.922] QB64 IDE can now use codepages, select them in the options->language... section.

Note: A .TTF font MUST be in use to see the results. [0.922] New command: _MAPUNICODE unicodevalue TO asciivalue 'Maps UNICODE codes to ASCII values for purposes such as simulating codepages [0.922] New command: unicodevalue=_MAPUNICODE(asciivalue) 'Returns the UNICODE c ode that the ascii value is currently mapped to [0.922] Linux version updated [0.922] Significant bugs/incompatibilities corrected, including: -corrections to the passing of UDT members by reference -fixed memory leak in _FREEIMAGE (as _FREEIMAGE is called internally by QB64 for SCREEN management, it also affected some programs not calling _FREEIMAG E) -corrected mismatch in dimension count of multidimensional arrays passed to functions -corrections to the implementation of the FIELD statement (for other bugs/incompatibilities addressed, refer to the forum) [0.921] Various bug fixes and patches applied to V0.92 V0.92 Specific ============== -Significant improvements to the QB64 input system have occurred primarily for m ultilingual and multiplatform reasons: i) The new _KEYHIT and _KEYDOWN functions can be used to monitor key press/re lease events/states. These also return UNICODE (UTF32) codes when UNICODE characters are entere d. [http://www.qb64.net/forum/index.php?topic=1368.msg12703#msg12703] ii) IME support added to facilitate entering Japanese, Chinese and Korean char acters. Note: The font CYBERBIT.TTF is free for non-commercial usage is now includ ed in QB64. It is only required to facilitate input via IME and not loaded unles s the user switches to an IME input system mode. QB64 also locates several fall-back fonts under circumstances when ' cyberbit' is not present, therefore it is unnecessary to distribute this font with your progra ms. iii) QB64 now maps the UNICODE input of characters which appear in the CP437 ex tended range(128-255) to their correct character. This means characters with umlauts and other international characters now appear correctly when using INKEY$ iv) QB64 emulates scancodes based on what a stock-standard 101-key keyboard mi ght return. Scancodes are language/platform specific, so this change means programs wh ich do use INP will work as expected on all platforms. -Support for the FIELD statement added. -Some bugs/incompatibilities addressed but others will be corrected over coming weeks via automatic updates. (See the bugs/incompatibilities forum for further information) V0.91 Updates ============= 22/8/2010: -The DATA folder (and its contents) are no longer required. You may delete them when/if you wish. -Various bugs & incompatibilites addressed [http://www.qb64.net/forum/index.php ?board=3.0] (of note: FREEFILE, FIX, INT, INPUT, INCLUDE) -Improved syntax checking -Removed blank pixel lines occurring between box drawing characters when using .TTF fonts

7/8/2010: -FILES command implemented V0.91 Specific ============== -Primarily implements the QB64 auto-updater. [http://www.qb64.net/forum/index.ph p?topic=1110.msg8195#msg8195] QB64 now checks for and applies updates to QB64 automatically or according the update options you specify in the IDE. V0.9 Specific ============= (Linux users must now run the batch/script file 'setup.sh' to build/setup/instal l QB64) -Primarily updates Linux pure 64-bit support -C++ components have been overhauled to be 64-bit compatible (affects all versio ns of QB64) -Further bugs/incompatibilities fixed (see forum for details) -Samples have been checked for Linux compatibility (eg. case sensitive filenames ) V0.88 Specific ============== -Primarily updates Linux support -Some bugs/incompatibilities fixed V0.874 Specific =============== Minor update: -LPRINT & LPOS implemented -'_PRINTIMAGE imagehandle&' command added to print an image on the printer (stre tching it to full paper size first) -OPEN(gw-basic style support) -KILL now supports wildcards -_SNDCOPY & _SNDPLAYCOPY fixed to inherit capabilities properly -SCREEN 10 support fixed -Autoformat bug in CASE IS = corrected V0.873 Specific =============== -_MOUSEMOVEMENTX & _MOUSEMOVEMENTY functions added (these hide mouse cursor in w indowed mode) -Improvements to handling of DATA: -faster compilation (at all stages) -able to handle larger amounts of DATA -1 critical bug related to autoformat removing content addressed [http://www.qb6 4.net/forum/index.php?PHPSESSID=1bhq9ol1gsqrd4s9ser0ko6jd6&topic=940.0] -Other problems fixed include: -detecting EOF CHR$(26) [http://www.qb64.net/forum/index.php?PHPSESSID=1bhq9ol1 gsqrd4s9ser0ko6jd6&topic=915.0] -DRAW E/G command incorrect vector error -maintaining same VIEW/WINDOW/screen settings as QB between pages -freeze when _FULLSCREEN called after _DISPLAY -& other minor problems V0.872 Specific =============== -QB64 compiler/ide source code released! (.bas file located in download in qb64\source\ folder) -Implemented REDIM _PRESERVE array-name(...) [http://www.qb64.net/forum/index.ph

p?topic=863.0] (QB64 uses _PRESERVE to dynamically scale itself and can now compile even large r programs) -New commands added to control/automate the desktop: [http://www.qb64.net/forum/ index.php?topic=849.0] i=_SCREENIMAGE 'creates a new image of the desktop (always a 32-bit image, don' t forget to free it later) _SCREENCLICK x,y 'simulates a left mouse click on your desktop at x,y _SCREENPRINT "hello" 'simulates typing on your keyboard -Multiple instances of QB64 can be run at the same time -If an exe file is in use, the QB64 IDE will build filename(2).exe, or filename( 3).exe etc. -Further improvements to file LOCKing & error system -Many bugs/incompatibilities fixed V0.871 Specific =============== Minor update to fix a locking problem. V0.87 Specific ============== Primarily changes the internal process used by QB64 to access files giving QB64 greater OS-specific control when available: -LOCK/UNLOCK implemented -More specific errors such as "Path not found" (instead of "File not found") occ ur, as in QBASIC Note: V0.87 contains few (if any) bug fixes since the previous release and imple menting the above was the only goal. In 2 weeks time V0.871 will be released and address any rec ently reported bugs or problems. V0.86 Specific ============== Primarily improves the QB64 IDE with: -CTRL+C/V/X alternatives for copy,paste,cut -User selectable font (any monospace TTF font), font size and window dimensions -Auto-spacing and capitalization complete with the only exceptions (which will b e addressed soon) being: CONST equations like CONST A=B+1 DATA statements Lines ending with a colon DECLARE statements (completely ignored by QB64) Line labels are kept in the same case as they are typed Other changes: -GCC compiler updated latest TDM version -Changes to generated C++ code makes C++ compiling large .BAS programs much fast er and results in a smaller .EXE file Some larger .BAS programs which previously froze/failed the C++ compilation pro cess now compile OK -ON TIMER interval corrected -_CLIPBOARD sub changed to avoid reported freeze/GPF on some systems -Many other reported (and unreported) bugs are fixed. (Some minor issues, such a s specific error codes and VAL oddities will be addressed soon) V0.851 Specific =============== -Programs now resolve their own directory regardless of how/where they are run f rom (caused many 'file not found' problems)

-ON TIMER (and related commands) added [http://www.qb64.net/forum/index.php?topi c=572.0] -CHAIN now preserves the screen state and manages path/directory issues [http:// www.qb64.net/forum/index.php?topic=517.0] -_MOUSEWHEEL function added [http://www.qb64.net/forum/index.php?topic=595.0] -_FULLSCREEN command (sub & function) added to control full screen mode [http:// www.qb64.net/forum/index.php?topic=581.0] -"OPTIONS" menu added to the IDE to control/disable auto-format and/or auto-inde nt -New options in the IDE "RUN" menu added (make .EXE only & start detached) -Auto-indent improved -Lots of great extra samples programs added to try -Many significant bugs/problems have been fixed V0.85 Specific ============== Major stages in the exciting transition to IDE autoformatting and autolayout are complete. Code will auto-indent. The spacing of some statements will be done by autolayout. The capitalization of some names will be maintained by autolayout. This release has no option to disable the above yet. Every effort has been made to make sure autolayout/autoformat do not damage your code. If you encounter a problem related to autolayout/autoformatting please report it immediately. * NOTE: The QB64 IDE now uses the Windows clipboard for copy/paste operations (t his is very useful) * CHAIN implemented (maintains COMMON data but doesn't maintain open files or th e screen state yet) * _CLIPBOARD$ string added to use/access the Windows clipboard PRINT _CLIPBOARD$ 'prints the contents of the clipboard _CLIPBOARD$="This is line 1"+CHR$(13)+CHR$(10)+"This is line 2" 'sets 2 lines of text in the clipboard * _EXIT function implemented to let a program know if the user has used the clos e button or CTRL+BREAK After the first time this function is called, the programmer can no longer man ually exit the program. _EXIT returns 0 - no exit request made 1 - exit via X box 2 - exit via CTRL+BREAK 3 - both CTRL+BREAK and the X box have been used since last call * Some sample programs (eg. samples\original\qb64\ripples.bas) stopped working ( across several releases) and the various causes have been fixed * Many reported (and unreported) bugs have been fixed V0.841b Specific ================ Implemented TCP/IP support. Refer to the following QB64 forum thread for details/documentation: http://www.qb64.net/forum/index.php?topic=397.0 Further TCP/IP documentation can be found on the QB64 Wiki: http://qb64.net/wiki/index.php?title=Keyword_Reference_-_By_usage#TCP.2FIP V0.841 Specific =============== Again, QBASIC compatibility has been improved. New commands supported: DRAW, $INCLUDE, KEY OFF(does nothing), ENVIRON, LEN(of v ariables/types/arrays)

Many minor bugs/incompatibilities have been addressed. V0.84 Specific ============== Stability & QBASIC compatibility have been significantly improved. Many problems not listed here have also been addressed. New commands specific to QB64: _ICON imagehandle 'changes the program's icon _TITLE string$ 'changes the text in the title bar _DELAY x 'waits for x seconds (accurate to nearest millisecond), relinquishing c pu cycles to other applications _LIMIT x 'limits the fps/rate of a program to x loops/frames/etc per second, rel inquishing any spare cpu cycles to other applications t=TIMER(0.001) 'returns TIMER value rounded to nearest 0.001 of a second (highes t accuracy possible is to the nearest millisecond) _DISPLAY (no parameters) 'This command manually updates the monitor using the da ta of the currently selected display page. The command also disables the autodis play of display page data to the monitor (the default) if it is on. _AUTODISPLAY (no parameters) 'This command enables autodisplay so the display pa ge data will automatically be updated to the monitor. x=_ERRORLINE 'Returns the source code line number that caused the most recent ru ntime error Added support for QBASIC commands: CALL INTERRUPT CLEAR COMMON (when used in programs without multiple modules) RUN Other improvements: -Severe memory leaks fixed -can PEEK timer bytes at &H46C-E (46c+46d*256+46e*65536) -division error fixed [(tx<2)/2.0 VS print (tx<2)/2] -INP(&H3C9) for palette reading -power-of [^] bug (related to order of operations) -Reading "" in DATA statements -Many fixes/improvements to referencing/allocating variables (including user def ined types) in conventional memory -SUBs/FUNCTIONs requiring variables in comventional-memory now supported -Problems calling CALL ABSOLUTE addressed IDE improvements: -Severe memory leak which affected the IDE fixed -Uses 50% less memory (RAM) -Minimal CPU usage -Many freeze/crash related problems addressed A repository of QBASIC programs which run without modifications has been started in the \qb64\samples\ folder. See \qb64\samples\info.txt for more details. V0.83 Specific ============== Primarily improves cross-platform support. 1) Windows 98/ME support restored (broken since late 2008!) 2) Linux support improved: -_INTEGER64 data type now supported (C++ compilation failed before) -READing numbers from DATA statements fixed -EOF() not being detected problem fixed -\ automatically changed to / in OPEN,BLOAD,KILL,CHDIR,etc.

(Many sample programs now run correctly as a result of these changes) 3) Many bug fixes to compiler & IDE; Of note: -Incorrect errors were reported when editing programs conatining user defined t ypes in the IDE -GET from file treats # as optional V0.82 Specific ============== Primarily implements: 1) PRINT USING [#] command 2) STATIC command (all usages) 3) Major bug fixes to the QB64 IDE 4) Major bug fixes and improvements to the QB64 compiler This is a Windows only release of V0.82, a Linux version will become available i n 1-2 weeks time. V0.81x Specific =============== V0.81x implements 2 major changes: 1) Provides an IDE remarkably similar (in look and interface) to the QBASIC IDE called qb64.exe notes: -qb64.exe can perform command line compilation (similar to previous versions of QB64) using the -c switch, for example: qb64 -c mycode.bas -many bugs/issues remain to be fixed, report them in the forum (gripes are ok to o!) -many more features are planned, at present the IDE is essentially a text editor that checks your code as you type it -code may have "OK" status but fail C++ compilation (on F5) due to the underlyin g QB64 compiler not checking code thouroughly enough -programs using the underscore (_) symbol for line don't work in the IDE yet -the IDE features an autosave feature which silently saves your code after every 10 changes, you will be automatically prompted to restore this upon restart if you didn't exit normally (via the file menu's "exit" command) -C++ compilation failure and some preprocessing errors are reported with incorre ct line numbers, which can be misleading 2) Linux support notes: -you must have downloaded the Linux version of QB64 from the qb64.net forums and followed necessary installation steps -64 bit Linux systems are not supported yet (it may be possible to edit ./intern al/c/makeline.txt to force compilation for a 32-bit system) -EOF() doesn't work correctly -Type _UNSIGNED INTEGER64 (only the unsigned version) cannot be used due to an i ncompatibility -check forward slashes and backslashes are correct for the Linux filesystem (QB6 4 will address this automatically in later versions) -check case of referenced filenames carefully (QB64 will address this automatica lly in later versions) -unhandled (ie. not handled by ON ERROR GOTO ...) errors when your code is runni ng currently result in immediate program termination without warning -lots of other compatibility problems exist and will be fixed in later versions, report them in the forum general notes about V0.81x: -compile.exe is not in V0.81x but will be provided alongside qb64.exe in subsequ ent versions

-temporarily removed support for SETTING the time/date V0.81 Specific ============== V0.81 primarily implements support for constants (refer to the CONST keyword) Handling of numbers written in the code has been improved to support all type sy mbol extensions (even the newer QB64 types), this also applies to &H..., &O... a nd the newly implemented binary prefix &B... (note that &B... only currently wor ks when used with numbers directly in your code, further support for &B... will be added later). This provides better compatibility with QBASIC's handling of nu mbers. Several bugs causing compilation to fail on valid code have been corrected, but always check that the program to be compiled doesn't include any as yet unimplem ented features listed later in this document. No new sample programs have been added in this release. V0.8 Specific ============= V0.8 primarily implements the QB64 2D prototype 1.0, a fully integrated 2D graph ics interface which encapsulates and extends upon QBASIC's standard graphics cap abilities. It incorporates .TGA .BMP .PNM .XPM .XCF .PCX .GIF .JPG .TIF .LBM .PN G graphics formats, .TTF (true type) fonts, 32-bit RGBA, alpha blended drawing, color-key'd palette indexed images, RGB to palette matching, stretching, flippin g, mirroring, and other functionality. Multiple graphics surfaces can be used of differing dimensions and formats simultaneously, and operations can be performe d any these surfaces interchangeably. The 2D prototype is fully implemented but still in the process of being document ed in detail. Please refer to the following webpage for the latest documentation : http://www.qb64.net/2d Feel free to enquire about the 2D prototype & its usage at: http://www.network54.com/Forum/585676/ No official example programs are available which demonstrate the 2D prototype ye t, however they will be released soon.

Thanks for trying QB64! The goal of QB64 is to create programs from BASIC source for Windows, Mac OSX an d Linux whilst being 100% compatible with Microsoft QBASIC/QB4.5 Make sure original .BAS files from QB4.5 are saved in text format not the compre ssed file format. Read \qb64\samples\info.txt for information about included .BAS example programs . UNIMPLEMENTED FEATURES ====================== The majority of QBASIC commands are implemented. Only the following are NOT IMPLEMENTED yet: -Some ON ... GOTO/GOSUB EVENTS (ON ERROR & ON TIMER are both implemented) -Devices (SCRN:,LPT...,KYBD:,CONS:) in an OPEN statement -CALL INTERRUPT (QB64 only supports INT 33h) -CALL ABSOLUTE (QB64 only has support for PUSH/POP/MOV/RET/INT 33h) -Port access ((QB64 only supports OUT &H3C8/&H3C9 and INP &H3DA/&H60) -Multimodular support -Other commands: TRON/TROFF, FILEATTR, IOCTL, IOCTL$, PEN, STICK, STRIG, SETMEM , FRE, KEY ON, PALETTE USING (note: PALETTE is implemented)

QB64 SPECIFIC FEATURES (FEATURES THAT QBASIC DOES NOT HAVE) =========================================================== INPUT Protection ---------------"Intelligently" restricts keyboard input. Avoids "redo from start" messages. Lim its screen space used by input for fixed length strings and numbers (eg. INTEGER cannot use more than 6 spaces) New Data Types -------------_BIT _UNSIGNED _BIT _BIT*4 _UNSIGNED _BIT*4 _BYTE _UNSIGNED _BYTE INTEGER _UNSIGNED INTEGER LONG _UNSIGNED LONG _INTEGER64 _UNSIGNED _INTEGER64 SINGLE DOUBLE _FLOAT STRING STRING*100

name` or name`1 name~` or name~`1 name`4 name~`4 name%% name~%% name% name~% name& name~& name&& name~&& name! name# name## name$ name$100

_DEFINE Command --------------Instead of having DEFBIT,DEFUBT,DEFBYT,DEFUBY etc. for all the new data types th ere is a simple command which can be used like DEFINT for new types (or old type s if you want to) as follows: _DEFINE A-C,Z AS DOUBLE 'the same as DEFDBL A-C,Z Larger Maximum RANDOM File Access Field Sizes --------------------------------------------For RANDOM access files, record lengths can now be greater than 32767 bytes. Var iable length string headers allow for larger strings whilst still being 100% QBA SIC compatible with smaller strings. BLOAD/BSAVE Limit ----------------Can save/load 65536 bytes, not just 65535. _MK$(variable-type,value) ------------------------Like MKI$/MKS$/etc., this converts numbers into a binary string. The advantage o f _MK$() is it allows conversion into the newer QB64 data types as apose to just the QBASIC types. Example usage: a$=_MK$(_UNSIGNED _INTEGER64,100) Note: _CV(variable-type,string) can also be used. _ROUND -----This can be used to round values to integers (CINT & CLNG imposed limitations on the output)

Graphics GET/PUT ---------------GET supports a new optional argument. If used the area to store can be partially /all off-screen and off-screen pixels are set to the value specified: GET (-10,-10)-(10,10),a,3 PUT format has been extended to PUT[{STEP}](?,?),?[,[{_CLIP}][{PSET|PRESET|AND|O R|XOR}][,?]] where _CLIP allows drawing partially/all off-screen and the final o ptional argument can specify a mask color to skip when drawing. Better Sound/Audio Support -------------------------Support for playing .MID, .WAV, .MP3 and many other formats. Commands include: _SNDPLAYFILE Simple command to play a sound file (with limited option s) _SNDOPEN Returns a handle to a sound file _SNDCLOSE Unloads a sound file (waits until after it has finished playing) _SNDPLAY Plays a sound _SNDSTOP Stops a playing (or paused) sound _SNDPLAYING Returns whether a sound is being played _SNDLOOP Like _SNDPLAY but sound is looped _SNDLIMIT Stops playing a sound after it has been playing for a se t number of seconds _SNDGETPOS Returns to current playing position in seconds _SNDCOPY Copies a sound (so two or more of the same sound can be played at once) _SNDPLAYCOPY Copies a sound, plays it and automatically closes the co py _SNDPAUSE Pauses a sound _SNDPAUSED Checks if a sound is paused _SNDLEN Returns the length of a sound in seconds _SNDVOL Sets the volume of a sound _SNDBAL Sets the balance/3D position of a sound _SNDSETPOS Changes the current/starting playing position of a sound in seconds For more information, read "AUDIO.TXT" in your "QB64" folder. Also check out "AUDIO.BAS" in the samples folder, you'll need some audio files t o test this with! Mouse Support ------------_MOUSESHOW _MOUSEHIDE _MOUSEINPUT se message and returns _MOUSEX _MOUSEY _MOUSEBUTTON(n)

Displays the mouse cursor (sub) Hides the mouse cursor (sub) MUST BE CALLED UNTIL IT RETURNS 0, it reads the next mou -1 if new information was available otherwise 0 (func) (func) (func) -1 if button n (a value of 1 or more) is down

Improved 2D Graphics Support ---------------------------Although not fully documented, these new 2D commands are fully implemented. Refer to http://www.qb64.net/2d for usage/details.