QB64

From Wikipedia, the free encyclopedia
QB64
Appeared in 2007 (2007)
Developer Galleon
Stable release 0.954 (April 20, 2012 (2012-04-20))
Influenced by QuickBASIC, QBASIC
OS Microsoft Windows, Linux, Mac OS X
License LGPL 2.1
Website http://www.qb64.net/

    QB64 (originally QB32[1]) is a self-hosting BASIC compiler for Microsoft Windows, Linux and Mac OS X, designed to be compatible with Microsoft QBasic and QuickBASIC. QB64 is a C++ emitter, which is integrated with a C++ compiler to provide compilation via C++ code and GCC optimization.[2]

    QB64 implements most QBasic statements, and can run many QBasic programs, including Microsoft's QBasic Gorillas and Nibbles games.[3] Furthermore, QB64 has been designed to contain an IDE resembling the QBASIC IDE. QB64 also extends the QBASIC programming language to include 64-bit data types, as well as better sound and graphics support. It can also emulate some DOS/x86 specific features such as INT 33h mouse access, and timers.

    History

    QB64 was originally compiled with QuickBASIC 4.5. After significant development, Galleon, the developer, became hindered by QuickBASIC's memory limitations and switched to Microsoft Basic PDS 7.1, which solved these problems for a short time. After version 0.63, QB64 was able to compile itself so the Conventional memory limitations no longer applied.

    Syntax

    QB64's syntax is designed to be completely backwards compatible with QuickBASIC. Line numbers are not required, and statements are terminated by newlines or by colons (:).

    An example Hello, World program is:

    PRINT "Hello, World!"
    

    An example of QB64's emulation of VGA memory for compatibility:

    CLS
    S$ = "Hello, World!"
    DEF SEG = &HB800 'sets the segment to video memory
    FOR J = 1 TO 15
      FOR I = 1 TO LEN(S$)
        POKE J * 160 + (I - 1) * 2, ASC(MID$(S$, I, 1))'character
        POKE J * 160 + (I - 1) * 2 + 1, (J + 128)
      NEXT
    NEXT
    

    Extensions to QBASIC

    QB64's extended commands begin with an underscore in order to avoid conflicts with any names that may be used in a QuickBASIC program. QB64 extends the QuickBASIC language in several ways. It adds the new data types including _BIT, _BYTE, _INTEGER64 and _FLOAT as well as unsigned data types. The new data types have suffixes just like the traditional BASIC data types. QB64 also includes an audio library which allows playing most common audio formats including MP3, Ogg Vorbis, and MIDI files as well as libraries allowing users to use higher resolution graphics than the 640×480 offered by QuickBASIC,[4] use different fonts, and plot images in BMP, PNG, and JPEG format. It also allows the use of 32-bit colors as opposed to the limited 256 (or 16, depending) colors originally offered. The programmer also does not have to specify which programming libraries to include since QB64 does it automatically. However, work is being done to make QB64 more intelligent as to which libraries to include since at the moment it includes all of them. The programmer has the option to include a library of their own through the $INCLUDE command just as QuickBASIC did.

    Libraries

    QB64 currently uses the SDL library for both graphics and text modes.

    QB64 can also use DLL libraries for Windows, C++ and SDL functions and statements with a DECLARE LIBRARY block. Users can also access C header files to run C functions.

    References

    1. Stephane Richard (2007-11-16). "In The News". PCOPY! Issue #50. Basic Programming. Archived from the original on 2009-12-21. Retrieved 2008-08-17. 
    2. E.K.Virtanen (2008-05-26). "Interview With Galleon". PCOPY! Issue #70. Basic Programming. Archived from the original on 2008-08-21. Retrieved 2008-07-14. 
    3. "QB64 Screenshots - QB64/QBASIC Gorillas in QB64". Retrieved 2010-07-27. 
    4. "QB Advisor: Screen Modes 11, 12, and 13". Microsoft Corporation. 1988. Retrieved 2008-07-25. 

    External links

    This article is issued from Wikipedia. The text is available under the Creative Commons Attribution/Share Alike; additional terms may apply for the media files.