Looking for a Qbasic for Windows or Linux? QB64 may now be it. The new version released today includes support for commands previous versions didn't have, such as DRAW, letting QB64 now compile the vast majority of Qbasic programs out there.
Instead of me telling you all about it, just download QB64 here and try it out for yourself:
Below is a summary Galleon has included with the download of all the changes found in this release:
Again, QBASIC compatibility has been improved.
New commands supported: DRAW, $INCLUDE, KEY OFF(does nothing), ENVIRON, LEN(of variables/types/arrays)
Many minor bugs/incompatibilities have been addressed.
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 cpu cycles to other applications
_LIMIT x 'limits the fps/rate of a program to x loops/frames/etc per second, relinquishing any spare cpu cycles to other applications
t=TIMER(0.001) 'returns TIMER value rounded to nearest 0.001 of a second (highest accuracy possible is to the nearest millisecond)
_DISPLAY (no parameters) 'This command manually updates the monitor using the data of the currently selected display page. The command also disables the autodisplay of display page data to the monitor (the default) if it is on.
_AUTODISPLAY (no parameters) 'This command enables autodisplay so the display page data will automatically be updated to the monitor.
x=_ERRORLINE 'Returns the source code line number that caused the most recent runtime error
Added support for QBASIC commands:
COMMON (when used in programs without multiple modules)
-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 defined types) in conventional memory
-SUBs/FUNCTIONs requiring variables in comventional-memory now supported
-Problems calling CALL ABSOLUTE addressed
-Severe memory leak which affected the IDE fixed
-Uses 50% less memory (RAM)
-Minimal CPU usage
-Many freeze/crash related problems addressed