Depending how much you know, this may or may not make much sense to you, back when I first recieved this, it did not make much sense to me, now it dose make more sense.
QBasic verse QB64 SCREENs
In QBasic the user has to define the output screen use through the SCREEN MODE command.
The graphical output screens that QBasic can access are 7,9,12 and 13. Screen 7,9,12 use 16 color
palettes and Screen 13 uses 256 color palette.
QB64 allows compatablty by using those same screen resolutions. However in QB64 there are
broadly 2 different ways to use those screens.
1] Method 1 .Uses the same screen mode commands as in QBasic.
2] Method 2 .Uses the _newscreen command. This command allows you to nominate the pixels wide by
pixels high with the color depth.
To use _newscreen and recreate a standard QBasic screen 12 we would do this
_newscreen (640,480,12)
to show this new screen we do this SCREEN _newscreen(640,480,12).
One of the limitations of QBasic with screens is that you are limited to one. In QB64 you
can have multiple screens but only one can show at a time. In QB64 you use "handles" to identify
a screen "page". Any screen can be made "visable" at any time and any other pages still exist but
are not "visable".
A quirk is that you can create a QB64 screen that half the size of the equivalent QBasic
screen. In QBasic Screen 12 is 640 pixels wide by 480 pixels high. To make a screen half this size
HalfScreen&= _newimage (320,240,12) (note the handle "HalfScreen&", the 12 indicates screen 12 palette)
To display this screen we do this
SCREEN HalfScreen&
Another QB64 feature is you can have multiple SCREEN 12 "pages" each one with a different
palette. By making a specific "page" visable we use its palette in dispalying that "page". Its not
possible to use 2 images from different "pages" that are "mixed" using 2 different palettes ,displayed
on a single "page" without reassigning (rebuild) the pages palette.
When you create a new image with the _newimage command the screen page is created with a
standard palette. If we created a new screen page by using the _loadimage command ,that page will
use the palette of the saved image. To copy the image to the other page and preserve the palette we
need to use the _copypalette command before the copy command. If we didnt we would see the loaded
image in a different palette.
When you use two pages we need to use 2 new commands to indicate which page we wish to work
with. Thats why we use _SOURCE and _DEST commands. The big disadvantage in QBasic of using only one
screen is that any drawing occurs in real time and we see the screen change before our eyes. If we
drew slowly enough we would see the new image unvail as its drawn. This is cured by using two screens,
one that is displayed and the other having its contents drawn on. At regular intevals we flip the 2
screens so the newer drawn page is shown. To achieve this we would need to tell QB64 which page we
wish the drawing to occur on with the _dest command.
Another advantage of QB64 is that we can display any image scaled up or down on the "fly".If
we create 2 pages and assign one to be shown, then anything copied from the non visable page can be
scaled onto the visable page. We copy by using put image.
_putimage (destination co-ordinates),SourecHandle&,DestinationHandle&,(source co-ordinates)
If we used the same (destination co-ordinates) as the (source co-ordinates) we see the same
image at the same size. If we halved the (destination co-ordinates) we would see a picture that is
only half the size of the image referenced by the (source co-ordinates).
This process is only complicated if you use two different screen sizes to begin with. The "size"
is described in "pixels" by the co-ordinates used. So this means that a number of pixels are read and
applied with (source co-ordinates) ,to an amount of "space" referenced by (destination co-ordinates).