Revision history for LangQB


Revision [21599]

Last edited on 2016-10-15 03:51:08 by fxm [Corrected definition of row-major order and column-major order for arrays]
Additions:
- The arrays are stored in row-major order in FB, they were stored in column-major order in QB by default. Row major order: data with consecutive last index are contiguous. Column-major order: data with consecutive first index are contiguous. For example, if you have ##DIM A(1 TO 6, 1 TO 8)##, in row-major order the elements are stored such that ##A(3,5)## is followed in memory by ##A(3,6)##; in column-major order ##A(3,5)## is followed in memory by ##A(4,5)##.
Deletions:
- The arrays are stored in row-major order in FB, they were stored in column-major order in QB by default. Row major order: data with the same last index are contiguous. Column-major order: data with the same first index are contiguous. For example, if you have ##DIM A(1 TO 3, 1 TO 8)##, in row-major order the elements are stored such that ##A(3,5)## is followed in memory by ##A(3,6)##; in column-major order ##A(3,5)## is followed in memory by ##A(4,5)##.


Revision [21279]

Edited on 2016-03-31 07:08:26 by fxm [Replaced 'LOC' with 'Loc' (not an acronym as EOF or LOF)]
Additions:
- ##EOF## can no longer be used to detect an empty comms buffer. Empty buffer should be tested comparing ##Loc## with ##0## in FB. Also, for files opened in ##RANDOM## or ##BINARY## mode, ##EOF## returns non-zero already after reading exactly the file size, see ##[[KeyPgEof|Eof]]##.
Deletions:
- ##EOF## can no longer be used to detect an empty comms buffer. Empty buffer should be tested comparing ##LOC## with ##0## in FB. Also, for files opened in ##RANDOM## or ##BINARY## mode, ##EOF## returns non-zero already after reading exactly the file size, see ##[[KeyPgEof|Eof]]##.


Revision [20617]

Edited on 2016-02-10 16:11:30 by DkLwikki [Update link format]
Additions:
- If a single line ##[[KeyPgIfthen|IF]]## has an (unnecessary) colon directly after the ##THEN##, it has to be terminated by an ##[[KeyPgEndif|END IF]]## in FB. If that unneeded colon is removed, FB will behave as QB.
- Graphics support was internally redesigned, see [[GfxLib|GfxLib overview]]
- With fixed length strings ""FreeBASIC"" gives the real length as ##[[KeyPgLen|LEN]]## plus one (null-char), even on ##[[KeyPgType|TYPE]]## fields.
- Programs don't stop anymore on runtime errors unless //[[CompilerOpte|-e]]// or //[[CompilerOptex|-ex]]// option is used in the command line. Using these options allow the use of QB style error handling (##ON ERROR##, ##RESUME##...).
- FB's ##[[KeyPgLocate|LOCATE]]## does not respect the fourth and fifth arguments for cursor shape.
- FB's ##[[KeyPgScreengraphics|SCREEN]]## does not allow switching the visible or the work-page. Use ##[[KeyPgScreenset|SCREENSET]]## instead.
- FB's ##[[KeyPgColor|COLOR]]## does not allow a third argument for border color.
- FB's ##[[KeyPgTimer|TIMER]]## returns the number of seconds since the computer started, while QB's ##TIMER## returns the number of seconds since midnight. (""Win32"" and Linux only: No more wrapping at midnight! :))
- ##EOF## can no longer be used to detect an empty comms buffer. Empty buffer should be tested comparing ##LOC## with ##0## in FB. Also, for files opened in ##RANDOM## or ##BINARY## mode, ##EOF## returns non-zero already after reading exactly the file size, see ##[[KeyPgEof|Eof]]##.
- Integer variables do not signal overflow errors in FB, even with the //[[CompilerOptex|-ex]]// option on. Any QB code relying in catching integer overflow errors will not work in FB.
- ##FIELD## statement (for record definition at runtime) has been left aside. The keyword ##FIELD## is used in FB to specify field alignment in ##[[KeyPgType|TYPE]]## variables.
- The use of parenthesis in the arguments passed to a function to emulate by-value passing is not permitted. The ##CALL## quirk resulting in all arguments being passed by value, no longer works. The proper ##[[KeyPgByval|BYVAL]]## and ##[[KeyPgByref|BYREF]]## keywords must be used.
- ##FILES## is not implemented. Instead, PDS 7.1-compatible ##[[KeyPgDir|DIR]]##[##$##] can be used.
- ##CALL ABSOLUTE## to run inline machine code is no longer supported. Instead you can use ##[[KeyPgAsm|ASM]]...END ASM## blocks to insert inline assembler commands. Or use the ##ASM ...## one line command.
Deletions:
- If a single line ##[[KeyPgIfthen IF]]## has an (unnecessary) colon directly after the ##THEN##, it has to be terminated by an ##[[KeyPgEndif END IF]]## in FB. If that unneeded colon is removed, FB will behave as QB.
- Graphics support was internally redesigned, see [[GfxLib GfxLib overview]]
- With fixed length strings ""FreeBASIC"" gives the real length as ##[[KeyPgLen LEN]]## plus one (null-char), even on ##[[KeyPgType TYPE]]## fields.
- Programs don't stop anymore on runtime errors unless //[[CompilerOpte -e]]// or //[[CompilerOptex -ex]]// option is used in the command line. Using these options allow the use of QB style error handling (##ON ERROR##, ##RESUME##...).
- FB's ##[[KeyPgLocate LOCATE]]## does not respect the fourth and fifth arguments for cursor shape.
- FB's ##[[KeyPgScreengraphics SCREEN]]## does not allow switching the visible or the work-page. Use ##[[KeyPgScreenset SCREENSET]]## instead.
- FB's ##[[KeyPgColor COLOR]]## does not allow a third argument for border color.
- FB's ##[[KeyPgTimer TIMER]]## returns the number of seconds since the computer started, while QB's ##TIMER## returns the number of seconds since midnight. (""Win32"" and Linux only: No more wrapping at midnight! :))
- ##EOF## can no longer be used to detect an empty comms buffer. Empty buffer should be tested comparing ##LOC## with ##0## in FB. Also, for files opened in ##RANDOM## or ##BINARY## mode, ##EOF## returns non-zero already after reading exactly the file size, see ##[[KeyPgEof Eof]]##.
- Integer variables do not signal overflow errors in FB, even with the //[[CompilerOptex -ex]]// option on. Any QB code relying in catching integer overflow errors will not work in FB.
- ##FIELD## statement (for record definition at runtime) has been left aside. The keyword ##FIELD## is used in FB to specify field alignment in ##[[KeyPgType TYPE]]## variables.
- The use of parenthesis in the arguments passed to a function to emulate by-value passing is not permitted. The ##CALL## quirk resulting in all arguments being passed by value, no longer works. The proper ##[[KeyPgByval BYVAL]]## and ##[[KeyPgByref BYREF]]## keywords must be used.
- ##FILES## is not implemented. Instead, PDS 7.1-compatible ##[[KeyPgDir DIR]]##[##$##] can be used.
- ##CALL ABSOLUTE## to run inline machine code is no longer supported. Instead you can use ##[[KeyPgAsm ASM]]...END ASM## blocks to insert inline assembler commands. Or use the ##ASM ...## one line command.


Revision [15846]

Edited on 2012-01-26 11:32:07 by CountingPine [Monotype code; 'PRINT ... ; USING' no longer disallowed; SCREEN link]
Additions:
- ##DEF SEG## is no longer necessary and will not work - any code which ##POKE##s to video memory this way will no longer function, however, for DOS it can be easily rewritten using DPMI features.
- ##CALL INTERRUPT## no longer functions, as it relies on 16-bit DOS. DOS interrupts can be called in the DOS32 version by using the DPMI library, but they might work slowly because of the 32bit-16bit-32bit mode changes the processor will have to perform.
- ##SHARED## can't be used inside a ##SUB## or ##FUNCTION## as it resulted in shared variables not defined in the main program. A proper ##DIM SHARED## in the main program must be used.
- ##COMMON## declarations do not depend on the order they are made, variables are matched by name and for that reason named COMMON is no longer supported. All COMMON arrays are variable-length arrays in FB.
- If a single line ##[[KeyPgIfthen IF]]## has an (unnecessary) colon directly after the ##THEN##, it has to be terminated by an ##[[KeyPgEndif END IF]]## in FB. If that unneeded colon is removed, FB will behave as QB.
- ##CLEAR## is no longer used to reset all variables and set the stack. Variables must be reset one by one, and stack size can be changed in the compiler command line. The keyword ##CLEAR## is used to do memory fills in FB.
- String ##DATA## items must be enclosed in quotes in FB, in QB this was optional
- All functions must have been declared, even with a ##CALL## in ""FreeBASIC"". With ##CALL## it was possible to invoke prototype-less functions in ""QuickBASIC"". (to be supported in future with -lang qb)
- Strings use a null (char ##0##) terminator to be compatible with C libraries and the Windows API, fixed-length strings can't contain ##chr$(0)## chars for now.
- When ##INKEY##[##$##] reads an extended key (Num Pad, Arrows...) it returns a two character string. In FB the first character is ##CHR##[##$##]##(255)##, while in QB this first char is ##CHR$(0)##.
- With fixed length strings ""FreeBASIC"" gives the real length as ##[[KeyPgLen LEN]]## plus one (null-char), even on ##[[KeyPgType TYPE]]## fields.
- In ""FreeBASIC"", unused characters of fixed-length strings are set to ##0##, regardless of what "-lang" compiler option is used. In QB, unused characters are set to ##32## (space, or " ", in ASCII).
- The arrays are stored in row-major order in FB, they were stored in column-major order in QB by default. Row major order: data with the same last index are contiguous. Column-major order: data with the same first index are contiguous. For example, if you have ##DIM A(1 TO 3, 1 TO 8)##, in row-major order the elements are stored such that ##A(3,5)## is followed in memory by ##A(3,6)##; in column-major order ##A(3,5)## is followed in memory by ##A(4,5)##.
- Programs don't stop anymore on runtime errors unless //[[CompilerOpte -e]]// or //[[CompilerOptex -ex]]// option is used in the command line. Using these options allow the use of QB style error handling (##ON ERROR##, ##RESUME##...).
- Octal numbers are written ##&o...##, whereas in QB they could be written as ##&o...## or ##&...##.
- In FB ##FOR## loops in subs/functions do not accept arguments received ##byref## as counters. A local variable must be used.
- FB's ##[[KeyPgLocate LOCATE]]## does not respect the fourth and fifth arguments for cursor shape.
- FB's ##[[KeyPgScreengraphics SCREEN]]## does not allow switching the visible or the work-page. Use ##[[KeyPgScreenset SCREENSET]]## instead.
- FB's ##[[KeyPgColor COLOR]]## does not allow a third argument for border color.
- FB's ##[[KeyPgTimer TIMER]]## returns the number of seconds since the computer started, while QB's ##TIMER## returns the number of seconds since midnight. (""Win32"" and Linux only: No more wrapping at midnight! :))
- In QB a ##chr$(13)## inside a string did a ##CR+LF## when ##PRINT##ed. In FB the ##CHR(13)## prints just at what it is, a ##CR##.
- ##EOF## can no longer be used to detect an empty comms buffer. Empty buffer should be tested comparing ##LOC## with ##0## in FB. Also, for files opened in ##RANDOM## or ##BINARY## mode, ##EOF## returns non-zero already after reading exactly the file size, see ##[[KeyPgEof Eof]]##.
- ##BSAVE## and ##BLOAD## can be used in FB only to save and retrieve screens or graphic buffers. They will work only if gfxlib is linked, this is, if a graphics screen mode is requested somewhere in the program. The console can't be saved with ##BSAVE## or retrieved with ##BLOAD##. The other use of ##BSAVE##-##BLOAD##, saving and loading full arrays, can be achieved easily with ##GET## and ##PUT##.
- ##FIELD## statement (for record definition at runtime) has been left aside. The keyword ##FIELD## is used in FB to specify field alignment in ##[[KeyPgType TYPE]]## variables.
- PC Speaker commands no longer function: Any references to ##SOUND## or ##PLAY## statements will result in an error message. There is a third party library available to emulate this functionality, but it's not included with ""FreeBASIC"".
- Fake event-driven programming (##ON KEY##, ##ON PEN##, ##ON STRIG##, ##ON TIMER##) no longer works. They could be emulated by a separate library.
- ##MKSMBF$## and all the ##""MKxMBF$""## commands supporting the pre-QB4.0 Microsoft proprietary floating point format (MBF) are not implemented.
- The use of parenthesis in the arguments passed to a function to emulate by-value passing is not permitted. The ##CALL## quirk resulting in all arguments being passed by value, no longer works. The proper ##[[KeyPgByval BYVAL]]## and ##[[KeyPgByref BYREF]]## keywords must be used.
- ##FILES## is not implemented. Instead, PDS 7.1-compatible ##[[KeyPgDir DIR]]##[##$##] can be used.
- ##IOCTL##, ##ERRDEV## and ##ERRDEV$##, low level functions to access hardware are not implemented as they were OS-dependent.
- ##CALL ABSOLUTE## to run inline machine code is no longer supported. Instead you can use ##[[KeyPgAsm ASM]]...END ASM## blocks to insert inline assembler commands. Or use the ##ASM ...## one line command.
Deletions:
- DEF SEG is no longer necessary and will not work - any code which POKEs to video memory this way will no longer function, however, for DOS it can be easily rewritten using DPMI features.
- CALL INTERRUPT no longer functions, as it relies on 16-bit DOS. DOS interrupts can be called in the DOS32 version by using the DPMI library, but they might work slowly because of the 32bit-16bit-32bit mode changes the processor will have to perform.
- SHARED can't be used inside a SUB or FUNCTION as it resulted in shared variables not defined in the main program. A proper DIM SHARED in the main program must be used.
- COMMON declarations do not depend on the order they are made, variables are matched by name and for that reason named COMMON is no longer supported. All COMMON arrays are variable-length arrays in FB.
- If a single line [[KeyPgIfthen IF]] has an (unnecessary) colon directly after the THEN, it has to be terminated by an [[KeyPgEndif END IF]] in FB. If that unneeded colon is removed, FB will behave as QB.
- CLEAR is no longer used to reset all variables and set the stack. Variables must be reset one by one, and stack size can be changed in the compiler command line. The keyword CLEAR is used to do memory fills in FB.
- String DATA items must be enclosed in quotes in FB, in QB this was optional
- All functions must have been declared, even with a CALL in ""FreeBASIC"". With CALL it was possible to invoke prototype-less functions in ""QuickBASIC"". (to be supported in future with -lang qb)
- Strings use a null (char 0) terminator to be compatible with C libraries and the Windows API, fixed-length strings can't contain chr$(0) chars for now.
- When INKEY[$] reads an extended key (Num Pad, Arrows...) it returns a two character string. In FB the first character is CHR[$](255), while in QB this first char is CHR$(0).
- With fixed length strings ""FreeBASIC"" gives the real length as [[KeyPgLen LEN]] plus one (null-char), even on [[KeyPgType TYPE]] fields.
- In ""FreeBASIC"", unused characters of fixed-length strings are set to 0, regardless of what "-lang" compiler option is used. In QB, unused characters are set to 32 (space, or " ", in ASCII).
- The arrays are stored in row-major order in FB, they were stored in column-major order in QB by default. Row major order: data with the same last index are contiguous. Column-major order: data wih the same first index are contiguous. For example, if you have DIM A(1 TO 3, 1 TO 8), in row-major order the elements are stored such that A(3,5) is followed in memory by A(3,6); in column-major order A(3,5) is followed in memory by A(4,5).
- Programs don't stop anymore on runtime errors unless //[[CompilerOpte -e]]// or //[[CompilerOptex -ex]]// option is used in the command line. Using these options allow the use of QB style error handling (ON ERROR, RESUME...).
- Octal numbers are written "&o...", whereas in QB they could be written as "&o..." or "&...".
- PRINT requires the USING clause, if used, to be the first argument. QB allowed PRINT to have not-to be-formatted arguments before USING.
- In FB FOR loops in subs/functions do not accept arguments received byref as counters. A local variable must be used.
- FB's [[KeyPgLocate LOCATE]] does not respect the fourth and fifth arguments for cursor shape.
- FB's [[KeyPgScreenCons SCREEN]] does not allow switching the visible or the work-page. Use [[KeyPgScreenset SCREENSET]] instead.
- FB's [[KeyPgColor COLOR]] does not allow a third argument for border color.
- FB's [[KeyPgTimer TIMER]] returns the number of seconds since the computer started, while QB's TIMER returns the number of seconds since midnight. (""Win32"" and Linux only: No more wrapping at midnight! :))
- In QB a chr$(13) inside a string did a CR+LF when PRINT'ed. In FB the CHR(13) prints just at what it is, a CR.
- EOF can no longer be used to detect an empty comms buffer. Empty buffer should be tested comparing LOC with 0 in FB. Also, for files opened in RANDOM or BINARY mode, EOF returns non-zero already after reading exactly the file size, see ##[[KeyPgEof Eof]]##.
- BSAVE and BLOAD can be used in FB only to save and retrieve screens or graphic buffers. They will work only if gfxlib is linked, this is, if a graphics screen mode is requested somewhere in the program. The console can't be saved with BSAVE or retrieved with BLOAD. The other use of BSAVE-BLOAD, saving and loading full arrays, can be achieved easily with GET and PUT.
- FIELD statement (for record definition at runtime) has been left aside. The keyword FIELD is used in FB to specify field alignment in [[KeyPgType TYPE]] variables.
- PC Speaker commands no longer function: Any references to SOUND or PLAY statements will result in an error message. There is a third party library available to emulate this functionality, but it's not included with ""FreeBASIC"".
- Fake event-driven programming (ON KEY, ON PEN, ON STRIG, ON TIMER) no longer works. They could be emulated by a separate library.
- MKSMBF$ and all the ""MKxMBF$"" commands supporting the pre-QB4.0 Microsoft proprietary floating point format (MBF) are not implemented.
- The use of parenthesis in the arguments passed to a function to emulate by-value passing is not permitted. The CALL quirk resulting in all arguments being passed by value, no longer works. The proper [[KeyPgByval BYVAL]] and [[KeyPgByref BYREF]] keywords must be used.
- FILES is not implemented. Instead, PDS 7.1-compatible [[KeyPgDir DIR]][$] can be used.
- IOCTL, ERRDEV and ERRDEV$, low level functions to access hardware are not implemented as they were OS-dependent.
- CALL ABSOLUTE to run inline machine code is no longer supported. Instead you can use [[KeyPgAsm ASM]]...END ASM blocks to insert inline assembler commands. Or use the ASM... one line command.


Revision [15041]

Edited on 2011-02-01 17:34:06 by CountingPine [Remove CamelCase links]
Additions:
Since version 0.17, ""FreeBASIC"" introduced a -lang command-line option, that is used to change the language compatibility mode. Use the -lang qb option when compiling to select the most QB compatible parser. All differences listed below assume that -lang qb was used.
- ""FreeBASIC"" is written for 32-bit operating systems and a 32 bit DOS extender, and cannot utilize code which depends on 16-bit DOS, 16 bit assembly or memory model (segment & offset, XMS/EMS, ...).
- All functions must have been declared, even with a CALL in ""FreeBASIC"". With CALL it was possible to invoke prototype-less functions in ""QuickBASIC"". (to be supported in future with -lang qb)
- In ""FreeBASIC"" all arrays must be explicitly declared. (Interpreted ""QuickBASIC"" arrays are automatically created with up to 10 indices.)
- With fixed length strings ""FreeBASIC"" gives the real length as [[KeyPgLen LEN]] plus one (null-char), even on [[KeyPgType TYPE]] fields.
- In ""FreeBASIC"", unused characters of fixed-length strings are set to 0, regardless of what "-lang" compiler option is used. In QB, unused characters are set to 32 (space, or " ", in ASCII).
- When a fixed-length string is declared, but still not initialized, all characters are set to 0, both in ""FreeBASIC"" and QB.
- FB's [[KeyPgTimer TIMER]] returns the number of seconds since the computer started, while QB's TIMER returns the number of seconds since midnight. (""Win32"" and Linux only: No more wrapping at midnight! :))
- PC Speaker commands no longer function: Any references to SOUND or PLAY statements will result in an error message. There is a third party library available to emulate this functionality, but it's not included with ""FreeBASIC"".
Deletions:
Since version 0.17, FreeBASIC introduced a -lang command-line option, that is used to change the language compatibility mode. Use the -lang qb option when compiling to select the most QB compatible parser. All differences listed below assume that -lang qb was used.
- FreeBASIC is written for 32-bit operating systems and a 32 bit DOS extender, and cannot utilize code which depends on 16-bit DOS, 16 bit assembly or memory model (segment & offset, XMS/EMS, ...).
- All functions must have been declared, even with a CALL in FreeBASIC. With CALL it was possible to invoke prototype-less functions in QuickBASIC. (to be supported in future with -lang qb)
- In FreeBASIC all arrays must be explicitly declared. (Interpreted QuickBASIC arrays are automatically created with up to 10 indices.)
- With fixed length strings FreeBASIC gives the real length as [[KeyPgLen LEN]] plus one (null-char), even on [[KeyPgType TYPE]] fields.
- In FreeBASIC, unused characters of fixed-length strings are set to 0, regardless of what "-lang" compiler option is used. In QB, unused characters are set to 32 (space, or " ", in ASCII).
- When a fixed-length string is declared, but still not initialized, all characters are set to 0, both in FreeBASIC and QB.
- FB's [[KeyPgTimer TIMER]] returns the number of seconds since the computer started, while QB's TIMER returns the number of seconds since midnight. (Win32 and Linux only: No more wrapping at midnight! :))
- PC Speaker commands no longer function: Any references to SOUND or PLAY statements will result in an error message. There is a third party library available to emulate this functionality, but it's not included with FreeBASIC.


Revision [15038]

Edited on 2011-01-30 03:07:50 by FxMwikki [Remove CamelCase links]
Additions:
- In FreeBASIC, unused characters of fixed-length strings are set to 0, regardless of what "-lang" compiler option is used. In QB, unused characters are set to 32 (space, or " ", in ASCII).
- When a fixed-length string is declared, but still not initialized, all characters are set to 0, both in FreeBASIC and QB.


Revision [14790]

Edited on 2010-08-21 01:25:36 by GaLeon [Changed run-time to runtime]
Additions:
- Programs don't stop anymore on runtime errors unless //[[CompilerOpte -e]]// or //[[CompilerOptex -ex]]// option is used in the command line. Using these options allow the use of QB style error handling (ON ERROR, RESUME...).
Deletions:
- Programs don't stop anymore on run-time errors unless //[[CompilerOpte -e]]// or //[[CompilerOptex -ex]]// option is used in the command line. Using these options allow the use of QB style error handling (ON ERROR, RESUME...).


Revision [14666]

Edited on 2010-06-19 04:23:18 by DkLwikki [Reverted previous change.]
Additions:
{{fbdoc item="back" value="DocToc|Table of Contents"}}
Deletions:
{{fbdoc item="back" value="FBWiki|Main Page"}}


Revision [14641]

Edited on 2010-06-15 11:33:29 by DkLwikki ["Back to Main" instead of "Back to TOC"]
Additions:
{{fbdoc item="back" value="FBWiki|Main Page"}}
Deletions:
{{fbdoc item="back" value="DocToc|Table of Contents"}}


Revision [14553]

Edited on 2010-01-08 22:19:52 by DoS386 [updated, outsourced stuff to "GfxLib" [2] oops]
Additions:
- CLEAR is no longer used to reset all variables and set the stack. Variables must be reset one by one, and stack size can be changed in the compiler command line. The keyword CLEAR is used to do memory fills in FB.
- String DATA items must be enclosed in quotes in FB, in QB this was optional
Deletions:
- String DATA items must be enclosed in quotes in FB, in QB this was optional


Revision [14551]

Edited on 2010-01-08 22:16:33 by DoS386 [updated, outsourced stuff to "GfxLib"]
Additions:
- Graphics support was internally redesigned, see [[GfxLib GfxLib overview]]
Deletions:
- Graphics support was internally redesigned. QB used VGA graphics modes, and wrote directly into the VGA RAM. Multiple pages were available as long as the card supported them. FB uses backbuffers, one per defined page, and copies them to the video RAM (VGA (DOS), VESA (DOS), DirectX (Win32), ...) in the background. Graphics commands do work as they used to in QB, but a few notable differences are present:
- The background screen updating eats a considerable amount of CPU performance.
- There is a thread (Win32 and Linux) or ISR (DOS, uses the PIT) active for this.
- Mixing FB's graphics support with low-level screen accesses (VGA) is absolutely prohibited, even in DOS, OTOH semi-low-level can be done using Screenptr and Screenlock, and is even portable. In DOS VGA and VESA are still available, but can't be mixed with FB's graphics support.
- CLEAR is no longer used to reset all variables and set the stack. Variables must be reset one by one, and stack size can be changed in the compiler command line. The keyword CLEAR is used to do memory fills in FB.


Revision [13278]

The oldest known version of this page was created on 2008-04-27 21:22:33 by DoS386 [updated, outsourced stuff to "GfxLib"]
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki



sf.net phatcode