QuickBasic compiler clone | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1. Purpose
This is a DEVELOPMENT PROJECT. It is NOT A FINISHED PRODUCT.
Purpose is to provide tools for running QuickBASIC programs in Linux and other non-MS-DOS -environments. It currently seems like it will become a QuickBASIC to C++ translator. In fact, it already translates a large subset of QuickBASIC to C++. However, the resulting code is not maintainable, and the library which it requires, is not finished. But it is being developed, in hopes it will one day enable running complicated DOS-specific QuickBASIC programs such as this, under Linux. UPDATE 2008-01-27: First significant milestone: It actually compiles the BAS file linked above and runs it successfully (with only a few visual glitches)! Microsoft Nibbles also runs, with similar constraints. 1.1. Project status
1.2. Feature list
1.3. Features which are gained for free1.3.1. Memory allocation
In modern operating systems, the memory allocation is designed so
that the user doesn't have to care about it. We don't have to meddle
with EMS/XMS or any other kind of perverse system the hardware requires
for memory allocation. So if you want to say DIM area(1048576) AS INTEGER ,
it's fine!1.3.2. Hardware services
In *nix systems, all the devices have been designed so that you
can use them by just opening the appropriate file from /dev
directory. For example, if you wanted to record and play with your soundcard,
you could do OPEN "/dev/dsp" FOR BINARY AS #1 ,
and that's fine. You read there (record), you write there (play).Of course this won't work in Windows systems. Other examples could be floppy disks, frame buffer consoles etc. This isn't the whole truth. Some devices require you to do ioctls before you can do anything useful. This will be considered. 1.4. Extra features
There are no plans for extra features yet, but internationalizations
like UTF-8 support would be nice.
1.4.1. Multitasking
QuickBasic programs are usually designed to take 100% of the CPU time
all the time. This badly fits to multitasking environments we nowadays
have in modern operating systems. But history is history, and we have to support it. But we don't have to limit ourselves to it. Even if we couldn't detect and convert Ti#=TIMER:WHILE TIMER<Ti#+1:WEND
style loops to USLEEP 1000000 , we could support things
like USLEEP and FORK . Just maybe.See your favourite POSIX manual if you don't know what those functions mean.
The 2. Copying
qbc has been written by Joel Yliluoma, a.k.a.
Bisqwit, and is distributed under the terms of the General Public License (GPL). If you utilize qbc or parts of it for any purpose, the author wishes to hear of it (and possibly participate), but it is not mandatory for using this software. 2.1. Documentation
Extensive documentation of the design of this compiler
can be found in the source package in the doc/ directory.
3. Requirements
Requirements:
4. "I want to start programming"
Then learn programming. It's a slow journey which
requires patience and eagerness to learn new things.
If you want to start programming with BASIC, go and see DarkBasic. 5. DownloadingDownloading help
The most recent source code (bleeding edge) for qbc can also be downloaded by cloning the Git repository by:
Date (Y-md-Hi) acc Size Name 2014-0528-0021 r-- 206051 qbc-0.7.0.tar.bz2 2014-0528-0021 r-- 246113 qbc-0.7.0.tar.gz 2014-0514-1951 r-- 188907 qbc-0.6.0.tar.bz2 2014-0514-1951 r-- 233642 qbc-0.6.0.tar.gz 2008-0127-0252 r-- 180236 qbc-0.5.1.tar.bz2 2008-0127-0252 r-- 219353 qbc-0.5.1.tar.gz 2008-0127-0252 r-- 16528 patch-qbc-0.5.0-0.5.1.bz2 2008-0127-0252 r-- 17292 patch-qbc-0.5.0-0.5.1.gz 2008-0126-1830 r-- 176975 qbc-0.5.0.tar.bz2 2008-0126-1830 r-- 214984 qbc-0.5.0.tar.gz 2008-0126-1830 r-- 50002 patch-qbc-0.4.5-0.5.0.bz2 2008-0126-1830 r-- 54068 patch-qbc-0.4.5-0.5.0.gz 2008-0124-1305 r-- 145829 qbc-0.4.5.tar.bz2 2008-0124-1305 r-- 181985 qbc-0.4.5.tar.gz 2008-0124-1305 r-- 50256 patch-qbc-0.4.4-0.4.5.bz2 2008-0124-1305 r-- 60158 patch-qbc-0.4.4-0.4.5.gz 2008-0122-1535 r-- 136432 qbc-0.4.4.tar.bz2 2008-0122-1535 r-- 168426 qbc-0.4.4.tar.gz 2008-0122-1535 r-- 49836 patch-qbc-0.4.3-0.4.4.bz2 2008-0122-1535 r-- 57630 patch-qbc-0.4.3-0.4.4.gz 2007-0313-2326 r-- 100675 qbc-0.4.3.tar.bz2 2007-0313-2326 r-- 122547 qbc-0.4.3.tar.gz 2007-0313-2326 r-- 8308 patch-qbc-0.4.2-0.4.3.bz2 2007-0313-2326 r-- 8189 patch-qbc-0.4.2-0.4.3.gz 2007-0215-0015 r-- 98229 qbc-0.4.2.tar.bz2 2007-0215-0015 r-- 119154 qbc-0.4.2.tar.gz 2007-0215-0015 r-- 5892 patch-qbc-0.4.1-0.4.2.bz2 2007-0215-0015 r-- 5810 patch-qbc-0.4.1-0.4.2.gz 2007-0214-1811 r-- 97018 qbc-0.4.1.tar.bz2 2007-0214-1811 r-- 117838 qbc-0.4.1.tar.gz 2007-0214-1811 r-- 10046 patch-qbc-0.4.0-0.4.1.bz2 2007-0214-1811 r-- 10302 patch-qbc-0.4.0-0.4.1.gz 2007-0213-2243 r-- 95349 qbc-0.4.0.tar.bz2 2007-0213-2243 r-- 114740 qbc-0.4.0.tar.gz 2007-0213-2243 r-- 24540 patch-qbc-0.3.13-0.4.0.bz2 2007-0213-2243 r-- 30107 patch-qbc-0.3.13-0.4.0.gz 2007-0124-2227 r-- 93376 qbc-0.3.13.tar.bz2 2007-0124-2227 r-- 113308 qbc-0.3.13.tar.gz 2007-0124-2227 r-- 25878 patch-qbc-0.3.12-0.3.13.bz2 2007-0124-2227 r-- 31150 patch-qbc-0.3.12-0.3.13.gz 2007-0123-2346 r-- 11654 patch-qbc-0.3.11-0.3.13.bz2 2007-0123-2346 r-- 12760 patch-qbc-0.3.11-0.3.13.gz 2007-0123-2347 r-- 88083 qbc-0.3.12.tar.bz2 2007-0123-2347 r-- 105469 qbc-0.3.12.tar.gz 2007-0123-2347 r-- 12842 patch-qbc-0.3.11-0.3.12.bz2 2007-0123-2347 r-- 14097 patch-qbc-0.3.11-0.3.12.gz 2007-0122-2358 r-- 83448 qbc-0.3.11.tar.bz2 2007-0122-2358 r-- 99228 qbc-0.3.11.tar.gz 2007-0122-2358 r-- 5814 patch-qbc-0.3.10-0.3.11.bz2 2007-0122-2358 r-- 5804 patch-qbc-0.3.10-0.3.11.gz 2007-0122-1425 r-- 82262 qbc-0.3.10.tar.bz2 2007-0122-1425 r-- 97672 qbc-0.3.10.tar.gz 2007-0122-1425 r-- 12742 patch-qbc-0.3.9-0.3.10.bz2 2007-0122-1425 r-- 13655 patch-qbc-0.3.9-0.3.10.gz 2006-1116-2336 r-- 79141 qbc-0.3.9.tar.bz2 2006-1116-2336 r-- 93867 qbc-0.3.9.tar.gz 2006-1116-2336 r-- 19777 patch-qbc-0.3.8-0.3.9.bz2 2006-1116-2336 r-- 20562 patch-qbc-0.3.8-0.3.9.gz 2006-1112-0045 r-- 68248 qbc-0.3.8.tar.bz2 2006-1112-0045 r-- 78076 qbc-0.3.8.tar.gz 2006-1112-0045 r-- 10684 patch-qbc-0.3.7-0.3.8.bz2 2006-1112-0045 r-- 11632 patch-qbc-0.3.7-0.3.8.gz 2006-1102-1321 r-- 65768 qbc-0.3.7.tar.bz2 2006-1102-1321 r-- 75003 qbc-0.3.7.tar.gz 2006-1102-1321 r-- 4729 patch-qbc-0.3.6-0.3.7.bz2 2006-1102-1321 r-- 4785 patch-qbc-0.3.6-0.3.7.gz 2006-1031-2205 r-- 65246 qbc-0.3.6.tar.bz2 2006-1031-2205 r-- 74239 qbc-0.3.6.tar.gz 2006-1031-2205 r-- 4774 patch-qbc-0.3.5-0.3.6.bz2 2006-1031-2205 r-- 4801 patch-qbc-0.3.5-0.3.6.gz 2006-1029-0331 r-- 64179 qbc-0.3.5.tar.bz2 2006-1029-0331 r-- 72893 qbc-0.3.5.tar.gz 2006-1029-0331 r-- 8111 patch-qbc-0.3.4-0.3.5.bz2 2006-1029-0331 r-- 8331 patch-qbc-0.3.4-0.3.5.gz 2006-1026-2209 r-- 61709 qbc-0.3.4.tar.bz2 2006-1026-2209 r-- 69802 qbc-0.3.4.tar.gz 2006-1026-2209 r-- 6771 patch-qbc-0.3.3-0.3.4.bz2 2006-1026-2209 r-- 6915 patch-qbc-0.3.3-0.3.4.gz 2006-1025-2039 r-- 59739 qbc-0.3.3.tar.bz2 2006-1025-2039 r-- 67374 qbc-0.3.3.tar.gz 2006-1025-2039 r-- 16138 patch-qbc-0.3.2-0.3.3.bz2 2006-1025-2039 r-- 18473 patch-qbc-0.3.2-0.3.3.gz 2006-1025-1202 r-- 58077 qbc-0.3.2.tar.bz2 2006-1025-1202 r-- 64966 qbc-0.3.2.tar.gz 2006-1025-1202 r-- 3381 patch-qbc-0.3.1-0.3.2.bz2 2006-1025-1202 r-- 3332 patch-qbc-0.3.1-0.3.2.gz 2006-1024-1523 r-- 58146 qbc-0.3.1.tar.bz2 2006-1024-1523 r-- 65066 qbc-0.3.1.tar.gz 2006-1024-1523 r-- 33656 patch-qbc-0.3.0-0.3.1.bz2 2006-1024-1523 r-- 39143 patch-qbc-0.3.0-0.3.1.gz 2006-1023-1136 r-- 44153 qbc-0.3.0.tar.bz2 2006-1023-1136 r-- 47543 qbc-0.3.0.tar.gz 2006-1023-1136 r-- 36034 patch-qbc-0.2.3-0.3.0.bz2 2006-1023-1136 r-- 41007 patch-qbc-0.2.3-0.3.0.gz 2006-1013-1940 r-- 31036 qbc-0.2.3.tar.bz2 2006-1013-1940 r-- 31872 qbc-0.2.3.tar.gz 2006-1013-1940 r-- 13311 patch-qbc-0.2.2-0.2.3.bz2 2006-1013-1940 r-- 13474 patch-qbc-0.2.2-0.2.3.gz 2004-1009-1658 r-- 26275 qbc-0.2.2.tar.bz2 2004-1009-1658 r-- 48553 patch-qbc-0.2.1-0.2.2.bz2 2003-1117-0231 r-- 58372 qbc-0.2.1.tar.bz2 2003-1117-0231 r-- 65106 patch-qbc-0.2.0-0.2.1.bz2 2003-1117-0133 r-- 62101 qbc-0.2.0.tar.bz2 2003-1117-0133 r-- 70740 patch-qbc-0.1.1.8-0.2.0.bz2 2003-1117-0133 r-- 88751 patch-qbc-0.1.1-0.2.0.bz2 2003-0529-2359 r-- 57172 qbc-0.1.1.8.tar.bz2 2003-0529-2359 r-- 22912 patch-qbc-0.1.1.7-0.1.1.8.bz2 2003-0206-1940 r-- 55990 qbc-0.1.1.7.tar.bz2 2003-0206-1940 r-- 1839 patch-qbc-0.1.1.6-0.1.1.7.bz2 2003-0206-1843 r-- 55387 qbc-0.1.1.6.tar.bz2 2003-0206-1843 r-- 3186 patch-qbc-0.1.1.5-0.1.1.6.bz2 2002-1214-1444 r-- 55469 qbc-0.1.1.5.tar.bz2 2002-1214-1444 r-- 11430 patch-qbc-0.1.1.4-0.1.1.5.bz2 2002-1020-0957 r-- 55560 qbc-0.1.1.4.tar.bz2 2002-1020-0957 r-- 5868 patch-qbc-0.1.1.3-0.1.1.4.bz2 2002-0719-1342 r-- 53250 qbc-0.1.1.3.tar.bz2 2002-0719-1342 r-- 1643 patch-qbc-0.1.1.2-0.1.1.3.bz2 2002-0710-1903 r-- 53205 qbc-0.1.1.2.tar.bz2 2002-0710-1903 r-- 3804 patch-qbc-0.1.1.1-0.1.1.2.bz2 2002-0514-1455 r-- 52559 qbc-0.1.1.1.tar.bz2 2002-0514-1455 r-- 11007 patch-qbc-0.1.1-0.1.1.1.bz2 2002-0408-1131 r-- 43463 qbc-0.1.1.tar.bz2 2002-0408-1131 r-- 39554 patch-qbc-0.1.0-0.1.1.bz2 2002-0330-1411 r-- 6013 qbc-0.1.0.tar.bz2 2002-0330-1411 r-- 14721 patch-qbc-0.0.2-0.1.0.bz2 2002-0328-2138 r-- 16758 qbc-0.0.2.tar.bz2 2002-0328-2138 r-- 10421 patch-qbc-0.0.1-0.0.2.bz2 2000-0926-1207 r-- 11897 qbc-0.0.1.rar 2000-0926-1207 r-- 13472 qbc-0.0.1.tar.bz2 2000-0926-1207 r-- 21030 qbc-0.0.1.zip 2000-0926-1207 r-- 617 patch-qbc-0.0.0-0.0.1.bz2 2000-0926-1205 r-- 11636 qbc-0.0.0.rar 2000-0926-1205 r-- 13133 qbc-0.0.0.tar.bz2 2000-0926-1205 r-- 21008 qbc-0.0.0.zip← Back to the source directory index at Bisqwit's homepage | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||