* removed "evalutation version" remark in the readme.txt

* new faq.htm and faq.txt
This commit is contained in:
Jonas Maebe 2000-07-10 12:38:00 +00:00
parent 8dcd4fc669
commit c46d0ad3d0
3 changed files with 703 additions and 791 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,115 +1,69 @@
Frequently Asked Questions
FreePascal FAQ
1. What is Free Pascal (FPC)?
As distributed with FPC 0.99.14
This FAQ might not be up to date. See [1]the FPC FAQ on internet for
updates.
This FAQ is in no way a substitute for the extensive documentation
that accompanies FPC.
1. [2]What is Free Pascal(FPC) ?
2. [3]Which versions exist, and which one should I use?
3. [4]Known bugs
4. [5]Free Pascal and GNU Pascal - a comparison
5. [6]Where can I get the compiler ?
6. [7]What are the considerations in porting
7. [8]I tried to compile my Delphi code with the Free Pascal
Compiler,
8. [9]I have to write a program for homework. Can you help?
9. [10]How can I build a unit?
10. [11]Will Free Pascal support TV (Turbo Vision) in the future?
11. [12]How can I compile the system unit ?
12. [13]I get an internal error 9999
13. [14]How does function overloading work?
14. [15]How can I call C functions ?
15. [16]When will Free Pascal use DJGPP 2.0 under DOS/Windows ?
16. [17]How can I use the graph unit with Free Pascal ?
17. [18]Integrated Assembler syntax
18. [19]How to access DOS memory / How to do graphics ?
19. [20]Free Pascal without a math coprocessor
20. [21]Accessing more than 4 megabytes
21. [22]Access I/O ports
22. [23]I'm using the Dos compiler under Windows 95
23. [24]I'm using OS/2
24. [25]INSTALL.EXE of Dos version 0.99.10 reports "Load error: no
DPMI"
25. [26]INSTALL.EXE of Dos version 0.99.10 does not run in Windows NT
26. [27]I want a new version NOW
27. [28]Where can I find a text mode IDE for Dos
28. [29]How do I configure the Dos IDE
29. [30]Why are the generated binaries so big?
30. [31]Unit system, syslinux or syswin32 not found errors
1. What is Free Pascal(FPC) ?
Originally named FPK-Pascal, the Free Pascal compiler is a 32 bit Originally named FPK-Pascal, the Free Pascal compiler is a 32 bit
Turbo Pascal compatible Pascal compiler for DOS, Linux, Win32, Turbo Pascal compatible Pascal compiler for DOS, Linux, Win32,
OS/2 and (based on an older version) the AmigaOS. More Operating OS/2 and (based on an older version) the AmigaOS. More operating
systems are in the works. systems are in the works.
The compiler is written in Pascal and is able to compile its own The compiler is written in Pascal and is able to compile its own
sources. The source files are included. sources. The source files are included.
Free Pascal requires a fast computer to run efficiently (386-25 Free Pascal is modest regarding its minimal system requirements
Mhz for the Intel version and ideally a 68020 processor for the (386-25 Mhz for the Intel version and ideally a 68020 processor
Motorola version). At least 2 megabytes of RAM is required. To for the Motorola version). At least 2 megabytes of RAM are
remake the compiler more than 16 is recommended. required. To remake the compiler more than 16MB is recommended.
Short history: Short history:
6/1993 project start + 6/1993: project start
10/1993 first little programs work + 10/1993: first little programs work
3/1995 the compiler compiles the own sources + 3/1995: the compiler compiles the own sources
3/1996 released to the internet + 3/1996: released to the internet
probably 2000 1.0 version + 7/2000: 1.0 version
2. Which versions exist, and which one should I use? 2. Which versions exist, and which one should I use?
Compilers with an even last number are release versions(e.g. Compilers with an even last number are release versions(e.g.
0.99.8, 0.99.10, 0.99.12 and 0.99.14) 0.99.8, 0.99.10, 0.99.12, 0.99.14 and 1.00)
Compilers and packages with an odd last number are development Compilers and packages with an odd last number are development
versions (e.g. 0.99.9, 0.99.11, 0.99.13 and 0.99.15). versions (e.g. 0.99.9, 0.99.11, 0.99.13, 0.99.15 and 1.0.9).
0.99.5 is an exception to this rule, since 0.99.5 IS a release (a 0.99.5 is an exception to this rule, since 0.99.5 IS a release (a
release prior to the introduction of this odd/even system) release prior to the introduction of this odd/even system)
Letters behind the version number (0.99.12b, 0.99.5d) indicate Letters behind the version number (0.99.12b, 0.99.5d) indicate
release versions with some bugs and problems in the original release versions with some bugs and problems in the original
release (respectively 0.99.12 and 0.99.5) fixed. release (respectively 0.99.12 and 0.99.5) fixed.
Normally you would want to use a release. Releases are considered Normally you would want to use a release. Releases are considered
stable, and easier to support. (the bugs, quirks and unintended stable, and easier to support (the bugs, quirks and unintended
"features" are wellknown after a period of time, and workarounds "features" are well known after a period of time, and workarounds
exist). exist).
Development snapshots which are generated daily reflect the Development snapshots (which are generated daily) reflect the
current status of the compiler. Development versions probably have current status of the compiler. Development versions probably have
new features and larger bugs fixed since the last release, but new features and larger bugs fixed since the last release, but
might have some temporary stability drawbacks, (btw which are might have some temporary stability drawbacks (which are usually
usually fixed quite soon) fixed by the next day)
Most support for development snapshots are basically the advise to Most support for development snapshots are basically the advise to
upgrading to newer snapshot in which the bugs are hopefully fixed. upgrade to newer snapshot in which the bugs are hopefully fixed.
Since version 0.99.8 the stability of the compiler steadily Since version 0.99.8 the stability of the compiler steadily
increased, and development snapshots are often quite useful for increased and development snapshots are often quite useful for
certain categories of users. Ask in the maillists if it is worth certain categories of users. Ask in the maillists if it is worth
the effort in your case. the trouble in your case if you're not sure.
The current release version is 0.99.14 for the OS/2,Linux,Windows The current release version is 1.00 for the OS/2, Linux, Windows
and Dos (Go32V2) targets, and Dos (Go32V2) targets and 0.99.5d for the 680x0 based systems
and 0.99.5d for the 680x0 based systems (mainly Amiga and Mac) (Amiga and Atari ST)
The current development snapshot version is 0.99.13 or 0.99.15. The current development snapshot version is 1.0.9.
3. Known bugs 3. Free Pascal and GNU Pascal - a comparison
Go to the [32]bugs page
4. Free Pascal and GNU Pascal - a comparison
aim: Aim:
Free Pascal tries to implement a Borland compatible Free Pascal tries to implement a Borland compatible
pascal compiler on as many platforms as possible. GNU pascal compiler on as many platforms as possible. GNU
Pascal tries to implement a portable pascal compiler Pascal tries to implement a portable pascal compiler
based on POSIX. based on POSIX.
Version: Version:
Currently, Free Pascal is at version 0.99.12 for the Currently, Free Pascal is at version 1.00 for the Intel
Intel version, and version 1.0 will be out soon, and version and version 0.99.5d for the Motorola/Intel
version 0.99.5d for the Motorola/Intel version. Version version. Version 0.99.5d differs from version 0.99.5 in
0.99.5d differs from version 0.99.5 in that all run time that all run time library fixes have been applied, as
library fixes have been applied, as well as all known well as all known code generation bugs. Version 1.00
code generation bugs. Version 0.99.12 differs from differs from version 0.99.5d in that all parser bugfixes
version 0.99.5c in that all parser bugfixes have also have also been applied and also a lot of Delphi 2 and
been applied and also a lot of Delphi 2 and Delphi 3 Delphi 3 extensions have been implemented. GNU Pascal is
extensions have been implemented. GNU Pascal is at at version 2.8.1 (but this numbering is not really an
version 2.7.2 (but this numbering is not really an
indication, it follows the GNU C numbering, since it is a indication, it follows the GNU C numbering, since it is a
derivation of it) derivation of it)
@ -122,32 +76,31 @@
Sources: Sources:
Free Pascal is entirely written in Pascal (about 4 Mb of Free Pascal is entirely written in Pascal (about 4 Mb of
source code), while GNU Pascal is written in C (it's an source code), while GNU Pascal is written in C (it's an
adaptation of the GNU C compiler : 2.8 Mb code + 8 MB of adaptation of the GNU C compiler: 2.8 Mb code + 8 MB of
GNU C code) GNU C code)
Language: Language:
Free Pascal supports the Borland Pascal dialect Borland, Free Pascal supports the Borland Pascal dialect Borland,
and implements the Delphi Object PAscal language. GNU and implements the Delphi Object Pascal language. GNU
Pascal supports ISO 7185, ISO 10206, (most of) Borland Pascal supports ISO 7185, ISO 10206, (most of) Borland
Pascal 7.0 Pascal 7.0
Extensions: Extensions:
Free Pascal implements function overloading, and operator Free Pascal implements function overloading and operator
overloading). GNU Pascal implements operator overloading. overloading. GNU Pascal implements operator overloading.
License: License:
Both compilers come under the GNU GPL. Both compilers come under the GNU GPL.
Author: Author:
Free Pascal was started by Florian Klaempfl, Germany Free Pascal was started by Florian Klaempfl, Germany
(klaempfl@haegar.cip.mw.tu-muenchen.de), GNU Pascal was (Florian.Klaempfl@gmx.de), GNU Pascal was started by
started by Jukka Virtanen, Finland, (jtv@hut.fi). Jukka Virtanen, Finland (jtv@hut.fi).
4. Where can I get the compiler ?
5. Where can I get the compiler ? Free Pascal is available for download from all [46]official
Free Pascal is available for download from all [33]official
mirrors mirrors
6. What are the considerations in porting code to other processors? 5. What are the considerations in porting code to other processors?
Because the compiler now supports processors other than the Intel, Because the compiler now supports processors other than the Intel,
it is important to take a few precautions so that your code will it is important to take a few precautions so that your code will
execute correctly on all processors. execute correctly on all processors.
@ -158,7 +111,7 @@
using packed on objects,classes and records may break this using packed on objects,classes and records may break this
requirement. If this is the case your code will simply crash requirement. If this is the case your code will simply crash
on the target processors. on the target processors.
+ Clean up at the end of your program, i.e close all files on + Clean up at the end of your program, i.e. close all files on
exit, as some operating systems don't like it when some files exit, as some operating systems don't like it when some files
are left opened. are left opened.
+ Try not to rely on the endian of the specific machines when + Try not to rely on the endian of the specific machines when
@ -172,18 +125,16 @@
+ Try limiting the size of parameters passed to subroutines to + Try limiting the size of parameters passed to subroutines to
32K, as this is the limit of some processors, use const or 32K, as this is the limit of some processors, use const or
var parameters instead. var parameters instead.
6. I tried to compile my Delphi code with the Free Pascal Compiler,
7. I tried to compile my Delphi code with the Free Pascal Compiler, but it seems that it doesn't recognize Delphi style OOP.
it seems that it doesn't recognize the OOP. The compiler supports the Delphi OOP. Make sure you use the -S2 or
The compiler supports the Delphi OOP. There may be some bugs, of -Sd switches (see the manuals for the meaning of these switches).
course, You should try the -S2, -Sd or -So switches (see the 7. I have to write a program for homework. Can you help?
manuals for the meaning of these switches)
8. I have to write a program for homework. Can you help?
No. Please, don't send us mail about homework, we are no teachers. No. Please, don't send us mail about homework, we are no teachers.
The Free Pascal development team tries to give good support for The Free Pascal development team tries to give good support for
the Free Pascal compiler and are trying to always reply to emails. the Free Pascal compiler and are trying to always reply to emails.
If we get emails like this, this becomes harder and harder. If we get emails like this, this becomes harder and harder.
9. How can I build a unit? 8. How can I build a unit?
It works like in Turbo Pascal. The first keyword in the file must It works like in Turbo Pascal. The first keyword in the file must
be UNIT (not case sensitive). The compiler will generate two be UNIT (not case sensitive). The compiler will generate two
files: XXX.PPU and XXX.O. The PPU file contains the interface files: XXX.PPU and XXX.O. The PPU file contains the interface
@ -191,13 +142,13 @@
object file, whose precise structure depends on the assembler you object file, whose precise structure depends on the assembler you
used). To use this unit in another unit or program, you must used). To use this unit in another unit or program, you must
include its name in the USES clause of your program. include its name in the USES clause of your program.
10. Will Free Pascal support TV (Turbo Vision) in the future? 9. Will Free Pascal support TV (Turbo Vision) in the future?
A Turbo Vision port, called Free Vision, has progressed nicely A Turbo Vision port, called Free Vision, has progressed nicely
lately. It's already very usable, we are even writing an IDE in lately. It's already very usable, we are even writing an IDE in
it. Due to copyrights problem the FreeVision source code is not it. Due to copyrights problem the FreeVision source code is not
available at the moment. You can download the IDE from the available at the moment. You can download the IDE from the
[34]development page. and get an idea of the look and feel though. [47]development page. and get an idea of the look and feel though.
11. How can I compile the system unit ? 10. How can I compile the system unit?
To recompile the system unit, it is recommended to have GNU make To recompile the system unit, it is recommended to have GNU make
installed. typing 'make' in the rtl source directory will then installed. typing 'make' in the rtl source directory will then
recompile all RTL units including the system unit. You may choose recompile all RTL units including the system unit. You may choose
@ -205,270 +156,274 @@
a 'make' there. a 'make' there.
It is possible to do all this manually, but you need more detailed It is possible to do all this manually, but you need more detailed
knowledge of the RTL tree structure for that. knowledge of the RTL tree structure for that.
12. I get an internal error 9999 11. I get an internal error 9999
The latest versions of the Free Pascal Compiler come with a Error The latest versions of the Free Pascal Compiler come with an error
Handling routine which catches the segmentation fault, and lets handling routine which catches the segmentation fault and lets the
the compiler exit gracefully. This is reported as an internal compiler to exit gracefully. This is reported as an internal error
error 9999. 9999. Please try to reproduce the error and send [48]us a bug
Please try to reproduce the error and send [35]us a bug report. report.
(For the curious, IE 9999 is not a specific bug. It is a safety (For the curious, IE 9999 is not a specific bug. It is a safety
measure which terminates if during compiling a certain condition measure which terminates if during compiling a certain condition
is not met, which can be caused by several bugs. So if you report is not met, which can be caused by several bugs. So if you report
the bug, and get IE 9999 later in a different piece or part of the bug, and get IE 9999 later in a different piece or part of
sourcecode, it could be a completely different bug) sourcecode, it could be a completely different bug.)
13. How does function overloading work? 12. How does function overloading work?
function overloading is implemented, like in C++: function overloading is implemented, like in C++:
procedure a(i : integer); procedure a(i : integer);
begin
begin end;
end; procedure a(s : string);
begin
procedure a(s : string); end;
begin
begin a('asdfdasf');
end; a(1234);
end.
begin
a('asdfdasf");
a(1234);
end.
You must be careful. If one of your overloaded functions is in the You must be careful. If one of your overloaded functions is in the
interface part of your unit, then all overloaded functions must be interface part of your unit, then all overloaded functions must be
in the interface part. If you leave one out, the compiler will in the interface part. If you leave one out, the compiler will
complain with a 'This overloaded function can't be local' message. complain with a 'This overloaded function can't be local' message.
Overloaded functions must differ in their parameters, it's not Overloaded functions must differ in their parameters, it's not
enough if their return types are different. enough if their return types are different.
14. How can I call C functions ? 13. How can I call C functions?
C calling convention is implemented as follows: The compiler C calling convention is implemented as follows: The compiler
pushes the parameters from right to left, but the procedure has to pushes the parameters from right to left, but the procedure has to
clear the stack. For calling the C function strcmp declare the clear the stack. For calling the C function strcmp declare the
following: following:
function strcmp(s1 : pchar;s2 : pchar) : integer;cdecl;external; function strcmp(s1 : pchar;s2 : pchar) : integer;cdecl;external;
Since 0.99.5, the older [C]; won't work! Since 0.99.5, the older [C]; won't work!
14. When will Free Pascal use DJGPP 2.0 under DOS/Windows?
15. When will Free Pascal use DJGPP 2.0 under DOS/Windows ?
As of version 0.99.0 Free Pascal uses DJGPP 2.0. DJGPP v1.2 As of version 0.99.0 Free Pascal uses DJGPP 2.0. DJGPP v1.2
support has been removed since version FPC 0.99.8. support has been removed since version FPC 0.99.8.
16. How can I use the graph unit with Free Pascal ? 15. How can I use the graph unit with Free Pascal?
Look at InitGraph. Since 0.99.12, the graph unit is available both for Dos and Linux.
17. Integrated Assembler syntax Under Dos, it only supported VESA modes though. Since version
0.99.14, a new more system independant graph unit is included
(although the only extra supported OS is Win32 and this is only
rudimentary support) which also supports standard VGA.
16. Integrated Assembler syntax
The default assembler syntax (AT&T style) is different from the The default assembler syntax (AT&T style) is different from the
one in Borland Pascal (Intel style). one in Borland Pascal (Intel style).
However, as of version 0.99.0, the compiler supports Intel style However, as of version 0.99.0, the compiler supports Intel style
assembly syntax. See the documentation for more info on how to use assembly syntax. See the documentation for more info on how to use
different assembler styles. different assembler styles.
A description of the AT&T syntax can be found in the DJGPP FAQ A description of the AT&T syntax can be found in the DJGPP FAQ
[36]http://www.delorie.com/djgpp/v2faq/faq102.html#Syntax or in [49]http://www.delorie.com/djgpp/v2faq/faq102.html#Syntax or in
Brennan's Guide to Inline Assembly Brennan's Guide to Inline Assembly
[37]http://www.rt66.com/~brennan/djgpp/djgpp_asm.html. The [50]http://www.rt66.com/%7Ebrennan/djgpp/djgpp asm.html. The
documentation also contains a chapter where the difference between documentation also contains a chapter where the difference between
the Intel and AT&T style assembly is explained. the Intel and AT&T style assembly is explained.
Or you can use the convertor program at Or you can use the convertor program at
http://rcs.urz.tu-dresden.de/ schoenfu/zip/asmtrans.zip. [51]http://rcs.urz.tu-dresden.de/schoenfu/zip/asmtrans.zip .
18. How to access DOS memory / How to do graphics ? 17. How can I access DOS memory / How can I do graphics programming?
You can do like in TP, via absolute or mem, for larger blocks use You can do like in TP, via absolute or mem[]. For larger memory
the dosmemput/dosmemget routines in unit Go32 blocks use the dosmemput/dosmemget routines in Go32 unit.
19. Free Pascal without a math coprocessor 18. How can I run Free Pascal without a math coprocessor?
On the Intel version the emulator is automatically loaded by the On the Intel version the emulator is automatically loaded by the
compiler, the file is bin\emu387. compiler if you add the following commands to your autoexec.bat:
SET GO32=EMU C:\PP\BIN\EMU387 SET 387=N
SET EMU386=C:\PP\BIN\GO32V2\WEMU387.DXE
20. Accessing more than 4 megabytes (don't forget to replace the C:\PP with the directory where you
By default Free Pascal allocates only 4 meg. If it just allocated installed FPC)
all it could get, people running windows would have problems as 19. How do I reserve more than 2 megabytes of RAM?
Windows would increase the swap file size to give the program more By default Free Pascal allocates only 2MB of RAM for your
memory on and on, until the swap file drive would be full. application. If it just allocated all it could get, people running
Windows would have problems as Windows would increase the swap
file size to give the program more memory on and on, until the
swap file drive would be full.
You can specify the size of the heap with -Chxxxx. The default You can specify the size of the heap with -Chxxxx. The default
value is -Ch4000000. Try -Ch10000000, provided you got enough swap value is -Ch4000000. Try -Ch10000000, provided you got enough swap
space. space.
However, the heap size doesn't really matter anymore, since the However, the heap size doesn't really matter anymore, since the
Heap is able to grow. That is, if you've used all available heap Heap is able to grow: if you've used all the available heap space,
space, the program will try to get more memory from the OS, thus the program will try to get more memory from the OS, so the heap
the heap is limited to the maximum amount of free memory provided is limited to the maximum amount of free memory provided by the
by the OS. OS.
21. Access I/O ports It is only handy if you know you will need at least a certain
If you're under DOS, you should use the outport* and inport* amount of memory. You can then specify this value using the -Ch
procedures of the go32 unit. parameter, so your program will allocate it at once on startup.
This is slightly faster than growing the heap a number of times.
20. How can I access I/O ports?
With versions before 0.99.10: if you're under DOS you can use the
outport* and inport* procedures of the go32 unit.
Since version 0.99.8, the Port array is supported like in TP, as Since version 0.99.8, the Port array is supported like in TP, as
long as you use the ports unit in your program. long as you use the ports unit in your program (not available
22. I'm using the Dos compiler under Windows 95 under Win32).
21. I'm using the Dos compiler under Windows 95
There is a problem with the Dos compiler and Win 95 on computers There is a problem with the Dos compiler and Win 95 on computers
with less than 16 MB. First set in the properties of the DOS box with less than 16 MB. First set in the properties of the DOS box
the DPMI memory size to max value. Now try to start a demo program the DPMI memory size to max value. Now try to start a demo program
in the DOS box, e.g. HELLO (starting takes some time). If this in the DOS box, e.g. HELLO (starting takes some time). If this
works you will be able to get the compiler to work by recompiling works you will be able to get the compiler to work by recompiling
it with a smaller heap size, perhaps 2 or 4 MB (option -Chxxxx). it with a smaller heap size, perhaps 2 or 4 MB (option -Chxxxx).
23. I'm using OS/2 22. I'm using OS/2
Problems have been reported that the Go32v2 compiler does not run Problems have been reported that the GO32v2 compiler does not run
on some OS/2 installations. You can use the native OS/2 compiler, on some OS/2 installations. You can use the native OS/2 compiler
or compile a GO32V1 compiler yourself. (strongly preferred solution) or maybe compile a GO32v1 compiler
24. INSTALL.EXE of Dos version 0.99.10 reports "Load error: no DPMI" yourself. However, the GO32v2 version should generally work under
OS/2 as well.
23. INSTALL.EXE of Dos version 0.99.10 reports "Load error: no DPMI"
The file cwsdpmi.exe is missing in the main directory of the zip The file cwsdpmi.exe is missing in the main directory of the zip
archive. The above message pops up of no other DPMI services are archive. The above message pops up if no other DPMI services are
available. Such services are for example available in a Dos window available. Such services are for example available in a Dos window
of Windows. You can either extract that file from basego32.zip or of Windows. You can either extract that file from basego32.zip or
download it from download it from
[38]http://www.brain.uni-freiburg.de/~klaus/cwsdpmi.exe. Put it [52]http://www.brain.uni-freiburg.de/%7Eklaus/cwsdpmi.exe. Put it
into the same directory as install.exe and run install again. into the same directory as install.exe and run install again.
25. INSTALL.EXE of Dos version 0.99.10 does not run in Windows NT 24. INSTALL.EXE of Dos version 0.99.10 does not run in Windows NT
This is an incompatibility of the mouse driver. Use this new This is an incompatibility of the mouse driver. Use this new
version of install.exe instead: version of install.exe instead:
[39]ftp://ftp.freepascal.org/pub/fpc/snapshot/install.exe [53]ftp://ftp.freepascal.org/pub/fpc/snapshot/install.exe
26. I want a new version NOW 25. I want a new version NOW
In the time between the release of new official versions, you can In the time between the release of new official versions, you can
have a look at and test developer versions. Be warned though: this have a look at and test developer versions (so-called
is work under progress, so in addition to old bugs fixed and new "snapshots"). Be warned though: this is work under progress, so in
features added, this may also contain new bugs. The snapshot is addition to old bugs fixed and new features added, this may also
generated automatically each night from the current source at that contain new bugs.
moment. Somethimes this may fail due to bigger changes not yet Snapshots are generated automatically each night from the current
fully implemented. If your version doesn't work, try again one or source at that moment. Sometimes this may fail due to bigger
two days later. Don't download the Go32V1 version for Dos, it's changes not yet fully implemented. If your version doesn't work,
not supported any more. try again one or two days later. You're advised not to download
The latest snapshot can be downloaded from the [40]development web the GO32v1 version for Dos, since it's not supported any more.
page. The latest snapshot can always be downloaded from the
[54]development web page.
To install a snapshot, extract the zip archive into the existing To install a snapshot, extract the zip archive into the existing
program directory of the last official version of fee pascal program directory of the last official version of Free Pascal
(after making a backup of the original of course). Or extract it (after making a backup of the original of course). You can also
into an empty directory, then move the files to the program extract it into an empty directory and then move the files to the
directory, overwriting existing files. Make sure that you extract program directory, overwriting existing files. Make sure that you
the ZIP archiv such that the included directory structure remains extract the ZIP archive such that the included directory structure
intact, for example if you use PKUNZIP, use "pkuzip -d" instead of remains intact. For example if you use PKUNZIP, use "pkunzip -d"
just "pkunzip". instead of just "pkunzip". Note that snpashots also contain a new
27. Where can I find a text mode IDE for Dos RTL which most likely can't be used with the previous release
version, so backup your old RTL as well.
26. Where can I find a text mode IDE?
The development of the IDE (integrated development environment) is The development of the IDE (integrated development environment) is
not yet finished. However a working test version of the IDE is not yet finished. However a working test version of the IDE is
available as snapshot. It requires the latest compiler snapshot be available as snapshot. It requires the latest compiler snapshot be
installed on top of the last official Dos version 0.99.12 for installed on top of the current official version for your
Go32V2. So if you have not already done it, first install the last particular platform (1.00 for GO32v2 or Win32). So if you have not
official version (file dos09912.zip or dos09912full.zip, you find already done that, first install the latest official version (e.g.
these in the [41]download section). Then get and extract the file dos100.zip or dos100full.zip, you find these in the
latest Dos snapshot for DOS-GO32V2 (snapshot.zip) into the [55]download section).
directory containing the last official version. Then do the same Then get and extract the latest snapshot for your platform (e.g.
with one of the IDE snapshots (the debugger does not work very snapshot.zip) into the directory containing the official version.
well yet, so start with the version "IDE with compiler"). For more Next, do the same with one of the IDE snapshots. For more details
details on where to find and how to install a snapshot, please see on where to find and how to install a snapshot, please see the
the previous FAQ item. For additional instructions for required previous FAQ item. For additional instructions for required IDE
IDE configuration please also read the next FAQ item. configuration please also read the next FAQ item.
28. How do I configure the Dos IDE 27. How do I configure the Dos IDE?
Once you have installed the IDE (see the previous FAQ item), it Once you have installed the IDE (see the previous FAQ item), it
requires two configuration changes before it can compile. This is requires two configuration changes before it can compile. This is
due to the fact that the IDE includes its own compiler, it does due to the fact that the IDE includes its own compiler; it does
not use ppc386.exe and thus it also does not use the configuration not use ppc386.exe and thus it also does not use the configuration
in the file ppc386.cfg. Thus if you try to compile, you get an in the file ppc386.cfg.
error message telling that it can not compile the system unit. To Start fp.exe, select Target from the Compile menu and then check
fix this start fp.exe, select from the menu Compile, then Target GO32v2. Next, choose Directories in the Otions menu and in the
then Go32V2. Next select the menu Options/Directories and in the
line "Unit directories" enter the path to your copy of the rtl line "Unit directories" enter the path to your copy of the rtl
directory, usually c:\pp\units\go32v2\rtl. If you have done directory, usually c:\pp\rtl\go32v2. If you have done everything
everything correct and it still doesn't work, you may have grabbed correct and it still doesn't work, you may have grabbed a snapshot
a snapshot that has a bug, in this case try again one or two days that has a bug; in this case try again one or two days later or
later. ask for help on one of the [56]mailing lists.
29. Why are the generated binaries so big? 28. Why are the generated binaries so big?
There are several reasons and remedies for this. There are several reasons and remedies for this:
1. If you are using 0.99.12: Due to some problems with the
1. If you are using 0.99.12: Due to some problems with the binary binary writer, 0.99.12 wasn't released with smartlinkable
writer, the 0.99.12 and fixes weren't released with smartlinking RTLs. Smartlinking causes only actually used procedures,
RTLs. Smartlinking causes only actually used procedures, functions functions and constants to be linked in.
and constants to be linked in. You can remedy this by using a development version and
You can remedy this by using a development version and creating a creating a smartlinking RTL. See the [57]make cycle faq or
smartlinking RTL. See the [42]make cycle faq or use a later use a later release if available (0.99.14 and later do
release if available. include a smartlinkable RTL). To turn on the generation of
2. Generating debug code (-g options) is enabled. Use the strip smartlinkable units, use the -Cx command line option when
utility (or stripw for the windows platform) to remove the compiling your units. To turn on the linking of previously
debuginformation. generated smarlinkable units, use the -XX (-XS in 0.99.12 and
The utility is supplied with the releases, except under Linux were earlier) command line option when compiling a program.
it is part of the GNU binutils package. 2. Normally, all symbol information is included in the resulting
3. Under Dos(Go32V2) and windows targets you can use UPX to pack the program (for easier debugging). You can remove this by using
.EXEs (just like e.g. pklite). The architecture of linux doesn't the -Xs command line option when compiling your program (it
allow binary packing. won't do anything when compiling units)
4. You can use LXLITE for packing EMX binaries, but you won't be able 3. You can use UPX to pack the .EXEs (just like e.g. pklite) for
to run them under DOS any more then. It might even not be possible Dos (GO32v2) and Windows targets. Look [58]here for more
to use them on lower OS/2 versions (like 2.x) depending on chosen info.
type of compression. 4. You can use LXLITE for packing EMX binaries, but you won't be
5. Turning on optimalisations, both for supplied packages able to run them under DOS (with extender) any more then. It
(RTL,API,FV,FCL) as for your own code, will also decrease might even not be possible to use them on lower OS/2 versions
code-size. (like 2.x) depending on chosen type of compression. LXLITE
can be found e.g. on [59]Hobbes, search for LXLITE.
Unit system, syslinux or syswin32 not found errors 5. Turn on optimalisations, both for supplied packages (RTL,
API, FV, FCL) and for your own code, this will also decrease
System (syslinux, syswin32 depending on platform) is Pascal's base the code size.
unit which is invisibly used in all programs. This unit defines 29. Unit system, syslinux, sysos2 or syswin32 not found errors
several standard procedures and structures, and must be found to be System (syslinux, sysos2 or syswin32, depending on platform) is
able to compile any pascal program by FPC. Pascal's base unit which is implicitely used in all programs. This
unit defines several standard procedures and structures, and must
The location of the system.ppu and syslinux.o files are determined by be found to be able to compile any pascal program by FPC.
the -Fu switch which can be specified commandline, but is usually in The location of the system.ppu and syslinux.o files are determined
the ppc386.cfg (Win32: ppc386w.cfg) configuration file. by the -Fu switch which can be specified commandline, but is
If the compiler can't find this unit there are three possible causes: usually in the ppc386.cfg (Win32: ppc386w.cfg) configuration file.
1. The ppc386.cfg isn't in the same path as the compiler (go32v2 and If the compiler can't find this unit there are three possible
win32), or in /etc/ppc386.cfg or as .ppc386.cfg in your causes:
homedirectory (Linux). 1. The ppc386.cfg isn't in the same path as the compiler
2. The ppc386.cfg doesn't contain the -Fu line, or a wrong one. See executable (go32v2, win32 and OS/2) or can't be found as
the [43]make cycle faq specially the chapters about the ppc386.cfg "/etc/ppc386.cfg" or ".ppc386.cfg" in your homedirectory
and the directory structure. (Linux).
3. The files ARE found but the wrong version or platform. Correct 2. The ppc386.cfg doesn't contain the -Fu line, or a wrong one.
ppc386.cfg to point to the right versions, or reinstall the right See the [60]make cycle faq, especially the chapters about the
versions. ppc386.cfg and the directory structure.
3. The files ARE found but the wrong version or platform.
A handy trick can be executing "ppc386 programname -vt", this shows Correct ppc386.cfg to point to the right versions or
where the compiler is currently looking for the system unit's files. reinstall the right versions (this can happen if you try to
You might want to pipe this through more(dos,windows) or less(Linux), use a [61]snapshot compiler while the -Fu statemnt in the
since it can generate more than one screen information: used ppc386.cfg still points to the RTL that came with the
Dos,Windows: official release compiler).
A handy trick can be executing "ppc386 programname -vt", this
shows where the compiler is currently looking for the system
unit's files. You might want to pipe this through more (Dos, OS/2,
Windows) or less (Linux), since it can generate more than one
screen information:
Dos, OS/2, Windows:
ppc386 programname -vt |more ppc386 programname -vt |more
Linux: Linux:
ppc386 programname -vt |less ppc386 programname -vt |less
References 30. Known bugs
Go to the [62]bugs page
1. http://www.freepascal.org/faq.html 31. How can I find where an error occurred using the addresses a
2. file://localhost/home/pfv/cvs/install/doc/faq.html#WhatIsFP crashed program prints?
3. file://localhost/home/pfv/cvs/install/doc/faq.html#versions 1. Starting with version 1.00, the easiest possibility is to
4. file://localhost/home/pfv/cvs/install/doc/faq.html#KnownBugs compile your program with -gl debugging option. This way unit
5. file://localhost/home/pfv/cvs/install/doc/faq.html#FPandGNUPascal LineInfo is automatically linked in, and the printout after a
6. file://localhost/home/pfv/cvs/install/doc/faq.html#WhereToGetFP program crash then contains source line numbers in addition
7. file://localhost/home/pfv/cvs/install/doc/faq.html#PortabilityTips to addresses.
8. file://localhost/home/pfv/cvs/install/doc/faq.html#OOP 2. For older versions, or more comprehensive checking, compile
9. file://localhost/home/pfv/cvs/install/doc/faq.html#HOMEWORK the program with debugging information (use the -g command
10. file://localhost/home/pfv/cvs/install/doc/faq.html#HowcanIbuildaunit line option)
11. file://localhost/home/pfv/cvs/install/doc/faq.html#TurboVision 3. Load the program in the debugger (gdb(w) for 0.99.12b and
12. file://localhost/home/pfv/cvs/install/doc/faq.html#CompileSystemUnit earlier, gdbpas(w) for 0.99.14 and later) using
13. file://localhost/home/pfv/cvs/install/doc/faq.html#Internalerror9999 gdb(pas)(w) --directory=<src dirs>; myprog.exe
14. file://localhost/home/pfv/cvs/install/doc/faq.html#Howdoesfunctionoverloadingwork Notes:
15. file://localhost/home/pfv/cvs/install/doc/faq.html#HowToCallCFuncuntions o Under Linux, don't add the ".exe" after myprog
16. file://localhost/home/pfv/cvs/install/doc/faq.html#DJGPP2support o "src dirs" is a list of directories containing the
17. file://localhost/home/pfv/cvs/install/doc/faq.html#HowToUseGraph source code files of myprog and the units it uses
18. file://localhost/home/pfv/cvs/install/doc/faq.html#IntegratedAssemblerSyntax seperated by semi-colons (";"). The current directory is
19. file://localhost/home/pfv/cvs/install/doc/faq.html#HowToAccessDosMemory automatically included.
20. file://localhost/home/pfv/cvs/install/doc/faq.html#FPwithoutfpu 4. Once inside the debugger, you can (optionally) set the
21. file://localhost/home/pfv/cvs/install/doc/faq.html#AccessingMoreThan4MB command line options that will be passed to your program
22. file://localhost/home/pfv/cvs/install/doc/faq.html#accessioports using the command "set args <;option1 option2 ...>"
23. file://localhost/home/pfv/cvs/install/doc/faq.html#ImusingWin95 5. To start the program, type "run" and press enter
24. file://localhost/home/pfv/cvs/install/doc/faq.html#ImusingOS2 6. After the program has crashed, the address of the instruction
25. file://localhost/home/pfv/cvs/install/doc/faq.html#dpmi where the crash occurred will be shown. The debugger will try
26. file://localhost/home/pfv/cvs/install/doc/faq.html#winnt to display the source code line corresponding with this
27. file://localhost/home/pfv/cvs/install/doc/faq.html#snapshot address. Note that this can be inside a procedure of the RTL,
28. file://localhost/home/pfv/cvs/install/doc/faq.html#ideinst so the source may not always be available and most likely the
29. file://localhost/home/pfv/cvs/install/doc/faq.html#ideconfig RTL wasn't compiled with debugging information.
30. file://localhost/home/pfv/cvs/install/doc/faq.html#binariesbig 7. If you then type "bt" (BackTrace), the addreses in the call
31. file://localhost/home/pfv/cvs/install/doc/faq.html#systemnotfound stack will be shown (the addresses of the procedures which
32. http://www.freepascal.org/bugs.html were called before the program got to the current address).
33. http://www.freepascal.org/download.html You can see which source code lines these present using the
34. http://www.freepascal.org/develop.html#snapshot command
35. http://www.freepascal.org/moreinfo.html info line *<address>
36. http://www.delorie.com/djgpp/v2faq/faq102.html#Syntax For example:
37. http://www.rt66.com/~brennan/djgpp/djgpp_asm.html info line *0x05bd8
38. http://www.brain.uni-freiburg.de/~klaus/cwsdpmi.exe
39. ftp://ftp.freepascal.org/pub/fpc/snapshot/install.exe
40. http://www.freepascal.org/develop.html#snapshot
41. http://www.freepascal.org/download.html
42. http://www.freepascal.org/makecyc.html
43. http://www.freepascal.org/makecyc.html

View File

@ -81,11 +81,9 @@ OS/2 and DOS (extender EMX):
**************************************************************************** ****************************************************************************
The current version is only an evaluation version. * Quick start
**************************************************************************** ****************************************************************************
Quick start
-----------
Download dos100.zip (version for DOS) or w32100.zip (version for Download dos100.zip (version for DOS) or w32100.zip (version for
Win9x/NT) or os2100.zip (EMX version - for OS/2 and DOS) and unzip it Win9x/NT) or os2100.zip (EMX version - for OS/2 and DOS) and unzip it
into a temporary directory. into a temporary directory.