Compiler Switches * Deflngint and Defulngint only available in the QB and deprecated dialects. * The various OPTION statements only available in the deprecated dialect except for Option Base and Option Explicit which are also available in the QB dialect. ABS * None ACCESS * None known. ACOS * New to FreeBASIC ADD * New to Freebasic ALIAS * In QB, Alias only worked with Declare. ALLOCATE * New to FreeBasic ALPHA * New to Freebasic ANY * Pointers and initializers did not exist in QB. APPEND * None AS * The Type (Alias) syntax was not supported in QB. ASC * The optional position argument is new to FreeBasic. * QB does not support the wide-character string version of ASC ASIN * New to FreeBASIC ASM * New to FreeBASIC ASSERT * New to FreeBasic ASSERTWARN * New to FreeBasic ATAN2 * New to FreeBASIC ATN * None BEEP * In QB, this was a single tone noise generated through the PC speaker. Now this might not be the case. BIN * New to FreeBasic BINARY * None BIT * New to FreeBasic BITRESET * New to FreeBasic. BITSET * New to FreeBasic. BLOAD * loads bitmaps (.bmp) to screen or buffer in addition to Bsave'd files BSAVE * can save BMP files * supports saving raw binary data larger than 64K * FB raw Bsave'd files cannot be loaded from QB (but files BSave'd from QB can be loaded from FB) BYREF * In -lang fb dialect, Byval is the default parameter passing convention. * In -lang qb and -lang deprecated dialect, Byref is the default parameter passing convention. * New to FreeBASIC BYTE * New to FreeBasic BYVAL * In -lang fb dialect, Byval is the default parameter passing convention for all built-in types except String; String and user-defined Types are passed Byref by default. * In -lang qb and -lang deprecated dialect, Byref is the default parameter passing convention. * QB only used Byval in declarations to non-Basic subroutines CALL * The use of Call is not allowed in the -lang fb option * -lang deprecated does not allow you to call functions that have not been previously declared. * The procedure must have already been declared. * Call in QB will make a copy of all parameters, so changes made to the arguments inside the called Sub will not be reflected in the variables in the caller. CALLOCATE * New to FreeBasic CASE * None CAST * New to FreeBASIC CBYTE * New to FreeBASIC CDBL * None CDECL * New to FreeBasic CHAIN * None CHDIR * In QB, the drive could not be specified. CHR * FB accepts multiple integer values as arguments, QB accepted only one. * FB evaluates the CHR function at compile time when used with constants or literals. * The Dollar "$" sign suffix was obligatory in QB, but is optional and deprecated in FB. CINT * The string argument was not allowed in QB CIRCLE * As the FB implementation obviously uses a different algorithm for ellipse/arc drawing than QB, the result may not be equal to QB for every pixel. * The F flag to draw filled circles/ellipses is new in FreeBASIC. * target new to FreeBASIC CLASS * Object-related features are supported only in the -lang fb option * New to FreeBASIC CLEAR New to FB The keyword CLEAR was used in QB to erase all variables, close all files, and optionally change the stack size. This use is not supported in FB. CLNG * The string argument was not allowed in QB * LONG is always 32 bit in QB CLNGINT * New to FreeBASIC CLOSE * None CLS * None COLOR * Direct color modes were not supported in QB. * There is no border argument. COMMAND * The Dollar "$" sign suffix was obligatory in QB, but is optional and deprecated in FB. * The numeric argument was not supported in QB. * QB converted the parameter list to uppercase before returning it, FB doesn't. * By default arguments containing wildcard characters are expanded (filename globbing) COMMON * The arrays will be always dynamic. * /blockname/ is not needed and must be removed because the order of declaration no longer matters, only the symbol names. CONDBROADCAST * Threading is not allowed in -lang qb * New to FreeBasic CONDCREATE * New to FreeBasic CONDDESTROY * New to FreeBasic CONDSIGNAL * Threading is not allowed in -lang qb * New to FreeBasic CONDWAIT * New to FreeBasic * * Threading is not allowed in -lang qb CONST * QB didn't support the AS DataType syntax CONSTRUCTOR * Object-related features are supported only in the -lang fb option * New to FreeBASIC CONTINUE * New to FreeBasic COS * None CPTR * New to FreeBasic CSHORT * New to FreeBASIC CSIGN * New to FreeBasic CSNG * None CSRLIN * None CUBYTE * New to FreeBASIC CUINT * New to FreeBASIC CULNG * New to FreeBASIC CULNGINT * New to FreeBASIC CUNSG * New to FreeBasic CURDIR * New to FreeBasic CUSHORT * New to FreeBASIC CUSTOM * New to FreeBASIC CVD * None CVI * In QB, Cvi expects a 2-byte-string, since a QB integer is only 16 bits. * In QB, an error occurs if the string passed is less than two bytes in length. * In QB, only the first two bytes of the string are used even if the string happens to be longer than two bytes. CVL * None. CVLONGINT * New to FreeBASIC CVS * None CVSHORT * In QBasic this function is called CVI DATA * -lang fb and -lang deprecated considers data items as constant expresions that are evaluated during compilation and its result stored in the program. * -lang qb considers data items as literals and stores then wihout change, as in QB. * Alphabetic string literals now must be enclosed within quotation marks. * Empty items were evaluated in QB to number 0 or to empty strings. In FB they give a compile error. A comma after the last item of a line of data makes an empty item (between the comma and the carry return) evaluated to 0 in QB. In FB that's an error. DATE * The QB DATE statement (to set the system date) is now called Setdate. DateAdd * Did not exist in QB. This function appeared in Visual Basic. DateDiff * Did not exist in QB. This function appeared in Visual Basic. DatePart * Did not exist in QB. This function appeared in Visual Basic. DATESERIAL * Did not exist in QB. This function appeared in PDS and VBDOS DATEVALUE * Did not exist in QB. This function appeared in PDS and VBDOS DAY * Did not exist in QB. This function appeared in PDS and VBDOS __DATE__ * New to FreeBasic __FB_ARGC__ * New to FreeBASIC __FB_ARGV__ * New to FreeBASIC __FB_BIGENDIAN__ * Did not exist in QB __FB_BUILD_DATE__ * Did not exist in QB __FB_DEBUG__ * New to FreeBASIC __FB_DOS__ * Did not exist in QB __FB_ERR__ * New to FreeBASIC __FB_LANG__ * New to FreeBASIC __FB_LINUX__ * Did not exist in QB __FB_MAIN__ * New to FreeBASIC __FB_MIN_VERSION__ * New to FreeBASIC __FB_MT__ * New to FreeBASIC __FB_OPTION_BYVAL__ * New to FreeBASIC __FB_OPTION_DYNAMIC__ * New to FreeBASIC __FB_OPTION_ESCAPE__ * New to FreeBASIC __FB_OPTION_EXPLICIT__ * New to FreeBASIC __FB_OPTION_PRIVATE__ * New to FreeBASIC __FB_OUT_DLL__ * New to FreeBASIC __FB_OUT_EXE__ * New to FreeBASIC __FB_OUT_LIB__ * New to FreeBASIC __FB_OUT_OBJ__ * New to FreeBASIC __FB_SIGNATURE__ * Did not exist in QB __FB_VER_MAJOR__ * New to FreeBASIC __FB_VER_MINOR__ * New to FreeBASIC __FB_VER_PATCH__ * New to FreeBASIC __FB_VERSION__ * Did not exist in QB __FB_WIN32__ * Did not exist in QB __FILE__ * Did not exist in QB __FILE_NQ__ * New to FreeBASIC __FUNCTION__ * Did not exist in QB __FUNCTION_NQ__ * Did not exist in QB __LINE__ * Did not exist in QB __PATH__ * New to FreeBASIC __TIME__ * New to Freebasic DEALLOCATE * New to FreeBasic DECLARE * In -lang fb dialect, Byval is the default parameter passing convention. * In the -lang qb and -lang deprecated dialects, Byref is the default parameter passing convention. * Type-level Sub/Function/Operator/Constructor/Destructor's are only allowed in -lang fb * In FreeBASIC, the parameter names are optional. DEFBYTE * Only available in the QB and deprecated dialects. * New to FreeBASIC DEFDBL * Only available in the QB and deprecated dialects. * None DEFINED * New to FreeBasic DEFINT * Only available in the QB and deprecated dialects. * None DEFLNG * Only available in the QB and deprecated dialects. * None DEFLNGINT * Only available in the deprecated dialect. * New to FreeBASIC DEFSHORT * Only available in the QB and deprecated dialects. * New to FreeBASIC * In QBasic, to make variables default to a 2 byte integer, DEFINT was used. DEFSNG * Only available in the QB and deprecated dialects. * None DEFSTR * Only available in the QB and deprecated dialects. * None DEFUBYTE * Only available in the QB and deprecated dialects. * New to FreeBASIC DEFUINT * Only available in the QB and deprecated dialects. * New to FreeBASIC DEFULNGINT * Only available in the deprecated dialect. * New to FreeBASIC DEFUSHORT * Only available in the QB and deprecated dialects. * New to FreeBASIC DESTRUCTOR * Object-related features are supported only in the -lang fb option * New to FreeBASIC DIM * In -lang qb the scope of the variables is a function or a module if defined with Dim Shared. * In -lang fb and -lang deprecated the block statements (For..Next, While..Wend, Do..Loop, Scope..End Scope) define local scopes, variables Dimmed within these blocks are not visible outside them. * In -lang fb, Option statements (e.g. Option Base, Option Dynamic), metacommands(e.g. $Static) and Def### statements (e.g. Defint) are not allowed. * Variable Initializers are new to FreeBASIC * The alternate syntax Dim As DataType symbolname, [...] is new to FreeBASIC * Multidimensional arrays are stored in row-major order in FB, they were stored in column-major order in QB by default. Row major order: values with the same last index are contiguous. Column-major order: values with the same first index are contiguous. * Dynamic arrays up to 2GB in size are possible in FB. In QB static arrays were limited to 64KB and to the DOS memory available (several 100 KB at best) if made dynamic and /AH was used. DIR * The attrib_mask and out_attrib parameters are new to FreeBASIC DO * None DO...LOOP * In -lang qb, variables declared inside a DO..LOOP block have a function-wide scope as in QB * In -lang fb or -lang deprecated, variables declared inside a FOR..NEXT block are visible only inside the block, and can't be accessed outside it. * None ... (Ellipsis) * New to FreeBASIC DOUBLE * None DRAW * QB used the special pointer keyword VARPTR$ with the Xp command. DRAW STRING * New to Freebasic DYLIBFREE * New to Freebasic DYLIBLOAD * New to Freebasic DYLIBSYMBOL * New to FreeBASIC ELSE * None ELSEIF * None ENCODING * QB had no support for Unicode END (Statement) * The END statement supports specifying a custom return value to be returned to the operating system. END (Block) * none END IF * None ENUM * New to FreeBASIC ENVIRON * The ENVIRON statement is now called Setenviron. EOF * In QB the comm port signaled an EOF when there were no chars waiting to be read. * In QB, for files opened in RANDOM or BINARY mode, EOF returned non-zero only after a read past the end of file has been attempted. In FreeBASIC, EOF returns true after the last item is read. ERASE * None ERFN * New to FreeBASIC ERL * FreeBASIC returns the source code line number and ignores the values of all explicit line numbers, where as QB returns the last encountered explicit line number, and will return zero (0) when explicit line numbers are not used. ERMN * New to FreeBASIC ERR * Error numbers are not the same as in QB. ERROR * Error numbers are not the same as in QB. EXEC * New to FreeBasic EXEPATH * New to FreeBasic EXIT * EXIT WHILE and EXIT SELECT are New to FreeBASIC EXP * None EXPORT * New to Freebasic EXTERN * New to FreeBASIC EXTERN...END EXTERN * Extern blocks are only allowed in the FB dialect. * New to FreeBASIC FIELD In -lang qb, the Field is always one, no padding is ever done, as in QB. FILEATTR * None for returntype = 1 * QBasic and 16-bit Visual Basic returned DOS file handle for returntype = 2 * returntype = 3 is new to FreeBASIC FILECOPY * New to FreeBasic. Existed in Visual Basic. FILEDATETIME * New to FreeBASIC FILEEXISTS * New to FreeBASIC FILELEN * New to FreeBasic. Existed in Visual Basic. FIX * None FLIP * New to FreeBASIC FORMAT * Does not exist in QB 4.5. This function appeared first in PDS 7.1 FOR...NEXT * In -lang qb, variables declared inside a FOR..NEXT loop have a function-wide scope as in QB * In -lang fb or -lang deprecated, variables declared inside a FOR..NEXT block are visible only inside the block, and can't be accessed outside it. * BYREF arguments cannot be used as counters. FRAC * New to FreeBASIC FRE * The "value" argument is not checked, Fre will always return the free physical memory available FREEFILE * None FUNCTION * In the -lang fb option the parameters are passed Byval by default. -lang qb and -lang deprecated keep the QB convention: parameters are Byref by default. * Parameters can be optional in FreeBASIC. * Return value can now be specified by a Return statement * Function overloading supported. * The return value can be ignored in the calling code. GET (File I/O) * GET can read full arrays as in VB or, alternatively, read a multiple of the data size into the memory. * GET can now be used as a function. GETJOYSTICK * New to FreeBasic GETKEY * New to FreeBasic GETMOUSE * New to FreeBasic GOSUB *From v0.17b Gosub may only be used when compiling with the -lang qb switch. * None (when using -lang qb switch) GOTO * HEX * In QBASIC, there was no way to specify the number of digits returned. * The Dollar "$" sign suffix was obligatory in QB, but is optional and deprecated in FB. HIBYTE * New to FreeBASIC HIWORD * New to FreeBASIC HOUR * Did not exist in QB. This function appeared in PDS and VBDOS IF...THEN * END IF must be used in single line IF's if a colon comes right after the THEN. That colon is unneeded so it's always possible to use the QB syntax. IIF * New to Freebasic IMAGECONVERTROW * New to FB IMAGECREATE * New to FB IMAGEDESTROY * New to FreeBASIC IMPORT * New to FreeBASIC #INCLIB * New to FreeBasic #INCLUDE * New to FreeBASIC INKEY * QBasic returned a Chr(0) as the first character for an extended key, but FreeBASIC returns Chr(255) as the first character. * The Dollar "$" sign suffix was obligatory in QB, but is optional and deprecated in FB. INPUT * If the user inputs the wrong number of values, or if it expects a number for a value and gets a string that is not a valid number, then QBASIC issues the message "Redo from start", and does not continue further until it receives a valid input. * If no prompt is given, QBASIC will prompt with "? ", while FreeBASIC will not give any prompt. INPUT (FILE MODE) * INPUT() * New to FreeBASIC INPUT # * None INSTR * QB returns start if search is a zero length string. * QB does not support Unicode. INT * None INTEGER * The INTEGER type was 16-bit wide in QB. Is * None ISDATE * New to FreeBASIC KILL * KILL can optionally be used as function in FB. LCASE * QB does not support Unicode. LEFT * QB does not support unicode LEN * Can be used with built-in types and user-defined types. LET * The use of LET to indicate an assignment statement is not allowed in -lang fb. * Overloading of operators is not allowed with -lang qb and -lang deprecated. * None with -lang qb LIB * New to FreeBASIC LINE (GRAPHICS) * QB LINE could not draw onto GET/PUT buffers. LINE INPUT * QBASIC only allowed literal strings for the prompt text. FreeBASIC allows any variable or constant string expression. LINE INPUT # * None LOBYTE * New to FreeBASIC LOC * !!WRITEME!! ? LOCAL * The LOCAL clause comes from PDS 7.1. QB 4.5 does not allow local error handling. LOCATE * The start and stop arguments have no effect in FreeBASIC. LOCK * None LOF * None LOG * None LONG * In QB, LONG is always 32-bit. LONGINT * New to FreeBASIC LOWORD * New to FreeBASIC LPOS * None LPRINT * None LSET *In QB, the syntax was Lset dst = src LTRIM * DOS does not support the wide-character version of Ltrim. * QB does not support specifying a trimset string or the ANY clause. FUNCTION (Member) * Supported only with -lang fb. SUB (Member) * Supported only with -lang fb. $DYNAMIC * Only available in the QB and deprecated dialects. * When used inside comments it must be the first token $INCLUDE * Not supported in -lang fb * None $STATIC * Only available in the QB and deprecated dialects. * When used inside comments it must be the first token MID (Function) * QB does not support Unicode. MID (STATEMENT) * None MINUTE * Did not exist in QB. This function appeared in PDS and VBDOS MKD * None MKDIR * None MKI * In QBasic Mki does what Mkshort does in FreeBASIC MKL * None MKLONGINT * New to FreeBASIC. MKS *None MKSHORT * In QBasic this function is called Mki. CONSTRUCTOR (Module) * New to FreeBASIC DESTRUCTOR (Module) * New to FreeBASIC MONTH * Did not exist in QB. This function appeared in PDS and VBDOS MONTHNAME * Did not exist in QB. This function appeared in Visual Basic. MULTIKEY * New to FreeBasic MUTEXCREATE * Threading is not allowed in -lang qb * This function is new to FreeBASIC MUTEXDESTROY * Threading is not allowed in -lang qb * This statement is new to FreeBASIC MUTEXLOCK * Threading is not allowed in -lang qb * New to FreeBASIC MUTEXUNLOCK * Threading is not allowed in -lang qb * This statement is new to FreeBASIC NAME * In QB, NAME required AS rather than a comma between the old and new names. NAMESPACE * Namespaces are not supported in the -lang qb option. * New to FreeBASIC NOW * Did not exist in QB. This function appeared in PDS and VBDOS OCT * In QBASIC, there was no way to specify the number of digits returned. * The Dollar "$" sign suffix was obligatory in QB, but is optional and deprecated in FB. OFFSETOF * New to FreeBasic. ON ERROR * ON ERROR is supported in -lang qb only. In -lang fb, statements can be used in function form to return an error code '' Compile with FB default (-lang fb) dialect If Open( "text" For Input As #1 ) <> 0 Then Print "Unable to open file" End If * QB has no LOCAL clause and requires the label to be in the main part of the module. ON...GOSUB * ON x GOSUB can be used only with the -lang qb option. * None ON...GOTO * None Operator + (Addition) * In the QB dialect, this operator cannot be overloaded. * None Operator AND (Conjunction) * In the QB dialect, this operator cannot be overloaded. * None Operator () (Array index) * None Operator Let (Assign) * In the QB dialect, this operator cannot be overloaded. * In the QB dialect, an assignment expression can be preceded by the Let keyword. * none Operator @ (Address of) * In the QB dialect, this operator cannot be overloaded. * New to FreeBasic Operator += (Add and Assign) * In the QB dialect, this operator cannot be overloaded. * New to FreeBASIC Operator AND= (Conjunction and Assign) * In the QB dialect, this operator cannot be overloaded. * New to FreeBASIC Operator &= (Concatenate and Assign) * In the QB dialect, this operator cannot be overloaded. * New to FreeBASIC Operator /= (Divide and Assign) * In the QB dialect, this operator cannot be overloaded. * New to FreeBASIC Operator EQV= (Equivalence and Assign) * In the QB dialect, this operator cannot be overloaded. * New to FreeBASIC Operator ^= (Exponentiate and Assign) * In the QB dialect, this operator cannot be overloaded. * New to FreeBASIC Operator IMP= (Implication and Assign) * In the QB dialect, this operator cannot be overloaded. * New to FreeBASIC Operator \= (Integer divide and Assign) * In the QB dialect, this operator cannot be overloaded. * New to FreeBASIC Operator Mod= (Modulus and Assign) * In the QB dialect, this operator cannot be overloaded. * New to FreeBASIC Operator *= (Multiply and Assign) * In the QB dialect, this operator cannot be overloaded. * New to FreeBASIC Operator OR= (Inclusive Disjunction and Assign) * In the QB dialect, this operator cannot be overloaded. * New to FreeBASIC Operator Shl= (Shift left and Assign) * In the QB dialect, this operator cannot be overloaded. * New to FreeBASIC Operator Shr= (Shift right and Assign) * In the QB dialect, this operator cannot be overloaded. * New to FreeBASIC Operator -= (Subtract and Assign) * In the QB dialect, this operator cannot be overloaded. * New to FreeBASIC Operator XOR= (Exclusive Disjunction and Assign) * In the QB dialect, this operator cannot be overloaded. * New to FreeBASIC Operator & (String concatenation with conversion) * New to FreeBASIC Operator Delete * Suported only in the -lang fb option * New to FreeBASIC Operator / (Divide) * In the QB dialect, this operator cannot be overloaded. * None OPEN * Using MS-DOS device names to open hardware devices is no more allowed, check the description section for the alternatives. * OPEN can now be used as a function. OPEN COM * In QB the syntax was OPEN "COMx:[baudrate] [,parity, [data_bits, [stop_bits, [extended_options]]]]" FOR INPUT|OUTPUT|RANDOM AS [#] n OPEN CONS * In QB the syntax was OPEN "CON:" FOR INPUT|OUTPUT AS [#] filenum OPEN ERR *New to FreeBASIC OPEN LPT * In QB the syntax was OPEN "LPT" or OPEN "PRN" OPEN PIPE * New to FreeBasic OPEN SCRN * QB used OPEN "SCRN:" ... Operator = (Equal) * In the QB dialect, this operator cannot be overloaded. * none Operator EQV (Equivalence) * In the QB dialect, this operator cannot be overloaded. * None OPERATOR * Supported only with -lang fb. Operator ^ (Exponentiate) * In the QB dialect, this operator cannot be overloaded. * None Operator For (iteration) * Supported only with -lang fb. Operator > (Greater than) * In the QB dialect, this operator cannot be overloaded. * none Operator >= (Greater than or Equal) * In the QB dialect, this operator cannot be overloaded. * none Operator Imp (Implication) * In the QB dialect, this operator cannot be overloaded. * None Operator \ (Integer divide) * In the QB dialect, this operator cannot be overloaded. * None Operator < (Less than) * In the QB dialect, this operator cannot be overloaded. * none Operator <= (Less than or Equal) * In the QB dialect, this operator cannot be overloaded. * none Operator . (Member access) * In the QB dialect, symbol names are allowed to contain periods (.). * None Operator Mod (Modulus) * In the QB dialect, this operator cannot be overloaded. * None Operator * (Multiply) * In the QB dialect, this operator cannot be overloaded. * None Operator - (Negate) * In the QB dialect, this operator cannot be overloaded. * None Operator New * Supported only with -lang fb. * New to FreeBASIC Operator Next (Iteration) * Supported only with -lang fb. Operator Not (Complement) * In the QB dialect, this operator cannot be overloaded. * None Operator <> (Not equal) * In the QB dialect, this operator cannot be overloaded. * none Operator OR (Inclusive Disjunction) * In the QB dialect, this operator cannot be overloaded. * None ## Preprocessor Concatenate * New to FreeBasic # Preprocessor stringize * New to FreeBasic Operator [] (Pointer index) * New to FreeBasic Operator -> (Pointer to member access) * New to FreeBASIC Operator Shl (Shift left) * In the QB dialect, this operator cannot be overloaded. * New to FreeBASIC Operator Shr (Shift right) * In the QB dialect, this operator cannot be overloaded. * New to FreeBASIC Operator Step (Iteration) * Supported only with -lang fb. Operator [] (String index) * New to FreeBasic Operator - (Subtract) * In the QB dialect, this operator cannot be overloaded. * None OPTION BASE * Only available in the QB and deprecated dialects. * None OPTION BYVAL * Only available in the deprecated dialect. * New to FreeBASIC OPTION DYNAMIC * Only available in the deprecated dialect. * New to FreeBASIC OPTION ESCAPE * Only available in the deprecated dialect. * New to FreeBASIC OPTION EXPLICIT * Only available in the QB and deprecated dialects. *New to FreeBASIC OPTION NOKEYWORD * Only available in the deprecated dialect. * New to FreeBASIC OPTION PRIVATE * Only available in the deprecated dialect. * New to FreeBASIC OPTION STATIC * Only available in the deprecated dialect. * New to FreeBASIC Operator * (Value of) * In the QB dialect, this operator cannot be overloaded. * New to FreeBasic Operator VARPTR (Variable pointer) * None Operator XOR (Exclusive Disjunction) * In the QB dialect, this operator cannot be overloaded. * None OUTPUT * OVERLOAD * New to FreeBasic PAINT * The QB version could not draw onto a Get/Put buffer. * QB's fill pattern was always 8-bits wide, and the height was the length of the string (up to 64). FB's fill pattern is 8 pixels wide, independent of the color depth, and the height is always 8. * The background color parameter supported by QB is not supported by the FB version. PALETTE * QB version did not support palette retrieval. PASCAL * New to FreeBasic PCOPY * Does not work in text mode, as it did in QB. FreeBASIC has a single page in text mode. PEEK * Only the byte form were supported in QB. * DEF SEG isn't needed anymore because the address space is 32-bit flat in FreeBASIC. PMAP * None POINT * None, in the VGA compatible SCREEN modes. In SVGA modes, it returns a RGB value POKE * Only the byte form were supported in QB. * DEF SEG isn't needed anymore because the address space is 32-bit flat in FreeBASIC. POS * None. #DEFINE * New to FreeBASIC #ELSE * New to Freebasic #ELSEIF * New to Freebasic #ENDIF * New to Freebasic #ERROR * Did not exist in QB #IF * New to FreeBasic #IFDEF * New to Freebasic #IFNDEF * New to Freebasic #LIBPATH * New to FreeBASIC #LINE * New to FreeBASIC #MACRO...#ENDMACRO * New to FreeBASIC #PRINT * New to FreeBASIC #UNDEF * New to Freebasic #PRAGMA * New to FreeBASIC PRESERVE * PRESERVE wasn't supported until PDS 7.1 PRESET * target new to FreeBASIC PRINT * None PRINT # * None PRINT USING * In QB a not-to-be-formatted expressionlist could be entered before the USING clause; PRINT # USING * In QB a not-to-be-formatted expressionlist could be entered before the Using clause; PRIVATE * New to FreeBASIC PSET * target new to FreeBASIC PTR * New to FreeBasic PUBLIC * New to FreeBASIC PUT (File I/O) * PUT can write full arrays as in VB or, alternatively, write a multiple of the data size from buffer's memory location. * PUT can now be used as a function. PUT (GRAPHICS) * The TRANS, ALPHA, ADD and CUSTOM methods are new to FreeBASIC. * In QB, the destination was always the screen. * QB throws a run-time error instead of clipping out of bounds images. * In QB, only arrays can be specified as source images. RANDOM * QB's String-contained runtime user defined types (UDT) are not implemented in FB. The keyword Field is used to specify the packing of the Type udt's. RANDOMIZE * Second parameter new to FreeBASIC. READ * -lang fb and -lang deprecated considers data items as constant expresions that are evaluated during compilation and its result stored in the program. * -lang qb considers data items as literals and stores then wihout change, as in QB. * Alphabetic string literals now MUST be enclosed within quotation marks * Empty constant expressions were evaluated in QB to number 0 or to empty strings. In FB they give a compile error. READ (File Access) * None known. READ WRITE (File Access) * None known. REALLOCATE * New to FreeBasic REDIM * Preserve is new to FreeBASIC. REM * Multiline comments new to FreeBASIC version 0.16 RESET * None RESTORE * None RESUME * ON ERROR is not supported in -lang fb. Statements can be used in its function form to return an error code If Open( "text" For Input As #1 ) <> 0 Then Print "Unable to open file" End If * Does not accept line numbers or labels * Must compile with -ex option RESUME NEXT * ON ERROR is not supported in -lang fb. Statements can be used in its function form to return an error code If Open( "text" For Input As #1 ) <> 0 Then Print "Unable to open file" End If * Must compile with -ex option RETURN * In -lang qb return can be used only to return from a Gosub * In -lang deprecated and -lang fb RETURN cann be used only to set the return value of a function and exit it. * None if using the -lang qb switch. RGB * New to FreeBasic RGBA * New to FreeBasic RIGHT * QB does not support Unicode. RMDIR * None RND * The algorithm used by default depends on the current lang mode. * With -lang fb, a 32 bit Mersenne Twister function with 32 bits granularity is used. * With -lang qb, a function giving the same output as QB's RND is used. The granularity is 24 bits. * With -lang deprecated the function in the C runtime available in the system is used. The function available in Win32 has a granularity of 15 bits, and 32 bits in Linux and DOS. * Randomize accepts an additional parameter allowing to select the algorithm used in RND. * If the optional argument is less than 0, it has the same meaning as passing an argument of 1. RSET * In QBasic the syntax was Rset dst = src RTRIM * DOS does not support the wide-character version of Rtrim. * QB does not support specifying a trimset string or the ANY clause. RUN * Run needs the full executable name, including extension (.exe) on platforms that have one (Win32, DOS). * Returning an error code is new to FreeBasic. SADD * None SCOPE...END SCOPE * SCOPE..END SCOPE blocks are not allowed with the -lang qb option. * New to FreeBASIC SCREENCONTROL * New to FreeBASIC SCREENCOPY * New to FreeBASIC. QB had Pcopy to do the same function. SCREENEVENT * New to FreeBASIC SCREENGLPROC * New to FreeBASIC SCREEN (GRAPHICS) * In QB the syntax was Screen mode,colormode,active_page,visible_page. Of those parameters FreeBASIC supports only mode and redefines the rest. The use of Screen ,,apage,vpage to swap screen pages is not allowed in FB. Screenset should be used instead. SCREENINFO * New to FreeBASIC SCREENLIST * New to FreeBASIC SCREENLOCK * New to FreeBASIC SCREENPTR * New to FreeBASIC SCREENRES * New to FreeBasic SCREENSET * New to FreeBASIC SCREENSYNC * New in FB. QBasic used WAIT &H3DA,8 for this purpose. SCREENUNLOCK * New to FreeBASIC SECOND * Did not exist in QB. This function appeared in PDS and VBDOS SEEK (Function) * None SEEK (Statement) * None SELECT CASE * SELECT CASE AS CONST did not exist in QB SETDATE * The DATE statement was used in QB and the syntax was "DATE = string" SETENVIRON * In QB, Setenviron was called Environ. SETMOUSE * New to FreeBasic SETTIME * The Time statement was used QB and the syntax was TIME = newtime. SGN * None SHARED * The Shared statement inside scope blocks -- functions, subs, if/thens, and loops -- is not supported. Use Dim|Redim|Common Shared in the main program instead. Or if you're inside a scope block and Redimming a variable or array previously set up with Shared, just do a Redim without Shared; it will work fine and won't ruin anything. SHELL * QB allowed SHELL on its own without a "command" argument which caused a default command shell to be started. Execution in the main program would suspend until exit from the command shell. SHORT * The name "short" is new to FreeBasic, however they are the same as integers in QB SIN * None SINGLE * None SIZEOF * New to FreeBasic. SLEEP * In QB, the delay is given in whole seconds only and does not support the kind parameter. SPACE * The Dollar "$" sign suffix was obligatory in QB, but is optional and deprecated in FB. SPC * None SQR * None STATIC * QuickBASIC allows variables and arrays to be declared using the Static keyword within procedures and DEF FN routines only. * Static forces local visibility of variables and arrays in QuickBASIC DEF FN routines. FreeBASIC supports neither DEF FN routines nor this usage of Static. * Using Static to specify static member procedures is new to FreeBASIC. STATIC (Member) * New to FreeBASIC STDCALL * New to FreeBasic STOP * STR * For -lang qb, Str will left pad a positive number with a space. * QB does not support the wide-character string version of Str. * The Dollar "$" sign suffix was obligatory in QB, but is optional and deprecated in FB. STRING * In QB the strings were limited to 32767 characters. STRING (Function) * The Dollar "$" sign suffix was obligatory in QB, but is optional and deprecated in FB. SUB * In the -lang fb option the parameters are passed Byval by default. -lang qb and -lang deprecated keep the QB convention: parameters are Byref by default. * Public and Private access specifiers are new to FreeBASIC * Constructor subroutines are new to FreeBASIC SWAP * None SYSTEM * None TAB * None. TAN * None THEN * None This * New to FreeBASIC THREADCREATE * Threading is not allowed in -lang qb * New to FreeBASIC THREADWAIT * Threading is not allowed in -lang qb * New to Freebasic TIME * The QB TIME statement (to set the system time) is now called Settime. TIMER * In QB TIMER returned the number of seconds from last midnight, and it's accuracy was 1/18 secs TIMESERIAL * Did not exist in QB. This function appeared in PDS and VBDOS TIMEVALUE * Did not exist in QB. This function appeared in PDS and VBDOS TO * none TRANS * New to Freebasic TRIM * New to FreeBasic. TYPE * Object-related features such as functions declared inside Type blocks are supported only with the -lang fb option since version 0.17b * The fields are aligned to 32bit doubleword boundaries if -lang fb or -lang deprecated is used. To force byte alignment use FIELD=1 * With the -lang qb option the fields are aligned to byte boundaries. * None, if the compiler switch -lang qb is used. Type (Alias) * New to FreeBASIC TYPEOF * New to FreeBasic. Temporary Types * New to FreeBASIC UBYTE * New to FreeBasic UCASE * QB does not support Unicode. UINTEGER * New to FreeBasic ULONG * New to FreeBASIC ULONGINT * New to FreeBASIC UNION * Object-related features as functions defined inside the UNION block are supported only in the -lang fb option * New to FreeBASIC UNLOCK * None UNSIGNED * New to FreeBasic UNTIL * None USHORT * New to FreeBasic USING (Namespaces) * QB had the Using keyword, but for other purposes. Namespaces did not exist in QB. VA_ARG * New to FreeBasic VA_FIRST * New to FreeBasic VAL * None VALINT * New to Freebasic VALLNG * New to FreeBASIC VALUINT * New to FreeBASIC VALULNG * New to FreeBASIC VA_NEXT * New to FreeBasic VAR * New to FreeBASIC 0.17 VIEW (GRAPHICS) * None VIEW PRINT * None. PRIVATE: (Access Control) * Suported only in the -lang fb option * New to FreeBASIC PROTECTED: (Access Control) * Suported only in the -lang fb option * New to FreeBASIC PUBLIC: (Access Control) * Suported only in the -lang fb option * New to FreeBASIC WBIN * New to FreeBASIC WCHR * New to Freebasic WEEKDAY * Did not exist in QB. This function appeared in PDS and VBDOS WEEKDAYNAME * Did not exist in QB. This function appeared in VBWin WEND * None WHEX * New to FreeBASIC. WHILE * None WHILE * In -lang qb, variables declared inside a WHILE..WEND block have a function-wide scope as in QB * In -lang fb or -lang deprecated, variables declared inside a WHILE..WEND block are visible only inside the block, and can't be accessed outside it. * None WIDTH * columns was limited to 40 or 80, while rows could be 25, 30, 43, 50 or 60, depending on the graphics hardware and screen mode being used. WINDOW * None WINDOWTITLE * New to FreeBASIC WINPUT() * QB does not support Unicode WITH * New to Freebasic WOCT * In QBASIC Unicode was not supported. WRITE * None WRITE (File Access) * None known. WRITE # * None WSPACE * New to FreeBASIC WSTR * New to FreeBASIC WSTRING * New to FreeBASIC WSTRING (Function) * QBasic does not support Unicode YEAR * Did not exist in QB. This function appeared in PDS and VBDOS ZSTRING * New to FreeBASIC Variable Initializers * Variable Initializers are new to FreeBASIC Labels * Line numbers with decimals is available only in -lang qb. * None if compiled with -lang qb Storage Classes * QuickBASIC allows static entities to be declared within procedures and DEF FN routines only.