Qb64 is a good way to convert all of your old Q-basic programs into modern fast full-screen material.

    It converts them into C-language and compiles them into exe files. It works good, but I find it too tricky to use for new programs. Use C-language instead.

  Main site:                        http://qb64.net/


                                 KEYBOARD


INKEY$      A$ = INKEY$

INPUT ; " input a number " ; a (A$)

INPUT$      A$ = INPUT$(4)               (GETS 4 LETTERS)

SLEEP 2       ' sleeps 2 seconds or until key pressed

 


                                 ARRAYS  , VARIABLES and DATA


STRING$      INTEGER%   FLOAT  DOUBLEFLOAT#   SINGLEFLOAT!  LONGINTEGER&

DIM a AS INTEGER

DIM SHARED b AS INTEGER   ' global variable shared with subroutines


DIM Array(100) AS INTEGER    (same as)  DIM ARRAY%(100)

DIM ARRAY$(50)   'string array    ' 51 strings

DIM Array(12, 10)   ' 2 dimensional array

     A = Array(12,10)


                                LOOPS and LOGIC


DO

        .... do stuff

LOOP UNTIL  a>0


WHILE  A>0

        ..... do stuff

WEND


WHILE INKEY$ <> "" : WEND


IF a% > b% AND a% < 200 THEN PRINT "True"

IF (a% > b% AND b% > c%) AND (c% < d% AND d% < e%)  OR ( z%=q%) THEN

PRINT "True"

ELSE

PRINT "False"

END IF


NOT


FOR i = 10 TO 0 STEP -1

    PRINT i

NEXT  


                                 SUBROUTINES

n=10

CALL  dostuff (n)

PRINT n

END


SUB dostuff (n)   rem  "n" forced to Global

 n = n + 5

END SUB


                                          SCREEN AND GRAPHICS

 CIRCLE           CIRCLE (X,Y) , radius, color

CLS       clear screen    CLS 0  clear screen   CLS 1  clear graphics   CLS 2 clear text

COLOR      forground%,background%      'depends on graphics mode

DRAW        octagon$ =  "C12  R10 F10 D10 G10 L10 H10 U10 E10"   DRAW octagon$

GET

LINE (x,y)-(x2,y2)

PAINT (x,y)  fillcolor%, bordercolor%

PALETTE USING

PCOPY

PMAP

POINT       rgba = POINT (x,y)

PRESET (X,Y)   'sets point to background color

PSET (x,y),color      ' sets the color of a point

PUT

SCREEN 0         ' screen mode 0-3 7-13

STEP

VIEW

WINDOW (x,y)-(x2,y2)      ' custom size screen


_AUTODISPLAY

_CLIP

_COPYIMAGE

_COPYPALETTE

_DEST

_DISPLAY

_FULLSCREEN

_FREEIMAGE

_HEIGHT

_ICON

_LOADIMAGE

_PIXELSIZE

_PRINTSTRING

_PUTIMAGE

_SCREENIMAGE

_SOURCE

_WIDTH


                                                     MATH

 ABS (n)  returns positive value  

ATN (Radian angle)  arctangent  

CDBL (function) closest double rounding function 

CINT (function) closest integer rounding function 

CLNG (function) closest long integer rounding function 

COS (function) cosine of a radian angle 

CSNG (function) closest single rounding function 

EXP (function) returns the value of e to the power of the parameter used. 

FIX (function) rounds positive or negative values to integer values closer to 0 

INT (function) rounds to lower integer value 

LOG (function) natural logarithm of a specified numerical value. 

SIN (function) sine of a radian angle. 

SQR (function) square root of a positive number. 

TAN (function) returns the ratio of SINe to COSine or tangent value of an angle measured in radians. 


_ROUND (function) rounds to the closest EVEN INTEGER, LONG or _INTEGER64 numerical value. 

+ addition operation 

- subtraction or negation operation 

* multiplication operation 

/ decimal point division operation 

\ integer division operation 

^ exponential operation 

MOD integer remainder operation 


                                            FILES

Saving array data to a file:


 LB% = LBOUND(Array)

 bytes% = LEN(Array(LB%))

 filesize& = ((UBOUND(Array) - LB%) + 1) * bytes% 

 DEF SEG = VARSEG(Array(0))

  BSAVE filename$, VARPTR(Array(LB%)), filesize&  ' changeable index

 DEF SEG

 

OPEN file$ FOR OUTPUT AS #1    ' make new file or clear old one

CLOSE#1


OPEN file$ FOR BINARY AS #1

    PUT #1, , array()

CLOSE #1


OPEN "BINFILE.BIN" FOR BINARY AS #2

   GET #2, , array()

CLOSE #2


IF Exist%(file$) THEN 

                A = 1  ' files start at 1 

                OPEN file$ FOR INPUT AS #1

                     WHILE A<1000

                     GET #1, , value% : PRINT value%

   A=A+1

   WEND

                 CLOSE #1

END IF


 CLEAR   ' clear all variables and close all files





 

Make a free website with Yola