DOWNLOAD QB64 DEMO #5 NOW!by (no login)QB64 Demo #5 can be downloaded from two different locations. Both locations contain the same file, demo5.zip. http://www.mediafire.com/?amhdnyvmazk Tip: Wait for the moving blue bar on the middle-left of the web-page to turn into the download button. http://www.geocities.com/dqbsvga/demo5.zip Tip: Limited bandwidth, so if unavailable try first link or try again later. Simply extract demo5.zip and run compile.bat, no "installation" as such is required. The following text files are included in demo5.zip but are posted here as an easy reference. Enjoy, Galleon ------------------------------------------------------------------ readme.txt ------------------------------------------------------------------ QB64 COMPILER V0.5 DOCUMENTATION ================================ Thanks for trying QB64! The goal of QB64 is to create programs from BASIC source for Windows, Mac OSX and Linux whilst being 100% compatible with Microsoft QBASIC/QB4.5 At present, QB64 only compiles programs on/for Microsoft Windows. To compile a .BAS program simply run the program COMPILE.BAT. It will prompt you to enter the .BAS file's name. Make sure your .BAS file was saved in text format not the QB4.5 compressed file format. Due to the large volume of example .BAS files which Demo #5 can compile they have been put into a folder called "samples". Please read "samples.txt" for an explanation about each example. QB64 is still in development and many things still need to be implemented. However Demo #5 has significantly more implemented QB features than unimplemented. So you can understand the limitations of Demo #5 a list of UNIMPLEMENTED features is provided. EVERYTHING ELSE WORKS! Demo #5 Restrictions/Unimplemented Features 1. Cannot create formal subs or functions (So also cannot use DECLARE, BYVAL, ANY, CDECL, ALIAS, CALL, CALLS, DEF FN, SHARED, COMMON) 2. Cannot use user defined types 3. Cannot use ON ... EVENTS (however, ON ERROR GOTO and error handling is implemented) 4. Cannot use metacommand $INCLUDE 5. Cannot use CONST 6. Cannot use TRON/TROFF 7. Cannot use COM, SCRN, LPT, KYBD, CONS in an OPEN statement 8. Cannot call machine code (CALL ABSOLUTE, CALL INTERRUPT) 9. Port access is still very limited: OUT &H3C8 & &H3C9 work INP &H3DA & &H60 work 10. Cannot use the following DOS file commands: CHAIN, SHELL, FILES, KILL, NAME, FILEATTR, CHDIR, MKDIR, RMDIR, ENVIRON, ENVIRON$, RUN 11. The following commands are also unavailable: PRINT[#]USING, LPRINT, LPOS, DRAW, PLAY, CLEAR, FIELD, LOCK, UNLOCK, IOCTL, IOCTL$, PEN, STICK, STRING, SETMEM, FRE, FIELD Known issues: 1. Error handling is done incorrectly. (will be fixed in Demo #6) Example of problem: ON ERROR GOTO 10 PRINT SQR(-1) 'reports the error, but after resume still prints 0 END 10 RESUME NEXT 2. BIT-type variables/arrays are not fully implemented in certain subs/functions which are passed their offset. (will be fixed in Demo #6) 3. Variables and/or arrays sharing the same name sometimes cause problems. QB64 is designed to support multiple arrays and variables of different types sharing the same name, but in some rare cases this doesn't work yet. (will be fixed in Demo #6) 4. Certain functions which accept a floating point number always return a DOUBLE precision answer. (will be fixed in Demo #6) Example of problem: PRINT SIN(1.234!) 'prints a longer answer in QB64 than in QBASIC (Please report any other problems you encounter so they can be fixed for Demo #6) What features does QB64 have that QBASIC doesn't? ------------------------------------------------- INPUT statement uses input protection which stops the user from typing in invalid data before they can press ENTER. Try it with fixed length strings to limit how many characters a user can enter. No more "REDO FROM START" messages! ------------------------------------------------- DATA TYPES & THEIR USAGE: _BIT name` _UNSIGNED _BIT name~` _BIT*4 name`4 _UNSIGNED _BIT*4 name~`4 _BYTE name%% _UNSIGNED _BYTE name~%% INTEGER name% _UNSIGNED INTEGER name~% LONG name& _UNSIGNED LONG name~& _INTEGER64 name&& _UNSIGNED _INTEGER64 name~&& SINGLE name! DOUBLE name# _FLOAT name## STRING name$ STRING*100 name$100 ------------------------------------------------- Instead of having DEFBIT,DEFUBT,DEFBYT,DEFUBY etc. for all the new data types there is a simple command which can be used like DEFINT for new types (or old types if you want to) as follows... _DEFINE A-C,Z AS DOUBLE 'the same as DEFDBL A-C,Z ------------------------------------------------- For RANDOM access files, record lengths can be greater than 32767 bytes. Variable length string headers allow for larger strings whilst still being 100% QB compatible with smaller strings. ------------------------------------------------- BLOAD/BSAVE can save/load 65536 bytes, not just 65535 ------------------------------------------------- _ROUND can also be used to round values to integers (CINT & CLNG imposed limitations on the output) ------------------------------------------------- Graphics 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 eg. GET (-10,-10)-(10,10),a,3 Graphics PUT format has been extended to PUT[{STEP}](?,?),?[,[{_CLIP}][{PSET|PRESET|AND|OR|XOR}][,?]] where _CLIP allows drawing partially/all off-screen and the final optional argument can specify a mask color to skip when drawing. ------------------------------------------------------------------ samples.txt ------------------------------------------------------------------ The following sample .BAS programs can be found in the "samples" folder. Run compile.bat to test these examples: >COMPILE QB64 COMPILER V0.50 COMPILE (.BAS)>.\samples\xwing COMPILING C++ CODE INTO EXE... XWING.BAS COMPILED TO XWING.EXE SUCCESSFULLY! >XWING Notes: i) The *s are the rating of how "fun" I think the example is (out of 5) ii) Compilation of large .BAS files can take a while, be patient. This won't be the case in later demos (because compilation data won't need to be stored in temp files after the compiler can self compile). 3DBALLS.BAS *** Coded by: Antoni Gual Contributed by: Galleon Description: 3D balls Modifications: none AKLABETH.BAS ***** Coded by: Richard C Garriott Contributed by: Galleon Description: "Akalabeth: World of Doom" is the predecessor of the Ultima series of role playing games Modifications: i. CLEAR statement commented ii. "END"s instead of restarting to avoid problems associated with (i) ASCIPONG.BAS **** Coded by: Qbguy Contributed by: Qbguy Description: ASCII pong Modifications: none CUBEROT.BAS ** Coded by: Entropy, Antoni Gual Contributed by: Galleon Description: Rotating cube Modifications: none FLRMP.BAS ** Coded by: Antoni Gual Contributed by: Galleon Description: Floor mapper Modifications: none FOREST.BAS *** Coded by: Antoni Gual Contributed by: Galleon Description: A forest scene with rippling reflecting water Modifications: none GUJERO.BAS *** Coded by: Antoni Gual Contributed by: Galleon Description: A 3D spiral tunnel effect Modifications: i. ffix and its declaration commented KITE.BAS **** Coded by: Mennonite Contributed by: Mennonite Description: Displays a moving kite using ASCII graphics with the message QB64 Modifications: none LISSAJ.BAS ** Coded by: Antoni Gual Contributed by: Galleon Description: Draws lines of different wavelengths to create patterns Modifications: none MANDALA.BAS *** Coded by: Antoni Gual Contributed by: Galleon Description: Connects points around a circle to create patterns Modifications: none MANDELB.BAS ** Coded by: Antoni Gual Contributed by: Galleon Description: A mandelbrot fractal Modifications: i. ffix and its declaration commented MATRIX.BAS ** Coded by: Antoni Gual Contributed by: Galleon Description: Like the code as seen in the movie (too fast) Modifications: none MESSAGE.BAS **** Coded by: Qbguy Contributed by: Qbguy Description: A plays a musical secret code representing a line of text Modifications: none PATTERN.BAS * Coded by: Antoni Gual Contributed by: Galleon Description: Strange patterns appear out of seemingly random data Modifications: none RC-ENT6.BAS ***** Coded by: Antoni Gual Contributed by: Galleon Description: Raycaster with textured walls, sky & floor using INP(&H60) for input Modifications: i. SUB raytrace integrated into main module ii. ffix and its declaration commented iii. Wait for vertical retrace added REPLICAT.BAS *** Coded by: Qbguy Contributed by: Qbguy Description: A one line program which prints itself, character for character, to the screen Modifications: none ROT13.BAS *** Coded by: Mennonite Contributed by: Mennonite Description: Encrypts a line of text to make it harder to read Modifications: none ROTOZOOM.BAS ** Coded by: Antoni Gual Contributed by: Galleon Description: An pattern rotates while zooming in and out Modifications: none SINECUBE.BAS **** Coded by: Mennonite Contributed by: Mennonite Description: 3D cube made out of little cubes using a special formula Modifications: none SSAVER.BAS * Coded by: Qbguy Contributed by: Qbguy Description: A screensaver which draws randow colored circles Modifications: none STRFLD.BAS * Coded by: Antoni Gual Contributed by: Galleon Description: A starfield, like the old screen savers (too fast) Modifications: none TWIRL2.BAS *** Coded by: Antoni Gual Contributed by: Galleon Description: Like seeing 100 flavours of ice cream being mixed together... Modifications: none VORTEX.BAS * Coded by: Antoni Gual Contributed by: Galleon Description: A colorful black hole effect (too fast) Modifications: none WUMPUS.BAS ***** Coded by: Gregory Yob Contributed by: Qbguy Description: The well known BASIC game... "Hunt the Wumpus" Modifications: i. DEF FN statements recoded by Qbguy using a workaround XWING.BAS **** Coded by: Michael Know Wausau Wi Contributed by: Galleon Description: Destroy Tie Fighters, Darth Vader and the Death Star in an Xwing (note: Some SOUND effects aren't handled correctly by QB64 yet) Modifications: i. DEFINT relocated for QBASIC compatibility ii. Workaround used to replace PLAY "P..." used for timing iii. Workaround used to replace DRAW "..." statements iv. Workaround used to replace ON KEY(...) statements v. Keyboard controls F1 & F2 changed to SPACEBAR and ENTER |