mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-24 09:39:11 +02:00
* 1.0.2 (merged)
This commit is contained in:
parent
53197cc97f
commit
1cb73cf1e9
@ -4,7 +4,7 @@ Free Pascal for DEBIAN
|
||||
No changes were necessary to the source tree as checked out from
|
||||
CVS at cvs.freepascal.org by
|
||||
cvs -d :pserver:cvs@cvs.freepascal.org:/FPC/CVS -z3 co -r FIXES_1_0_0 fpc
|
||||
The Debian Build Directory was created by 'make debcopy FPC_VERSION=1.0.1'
|
||||
The Debian Build Directory was created by 'make debcopy FPC_VERSION=1.0.2'
|
||||
and then duplicated to .orig before 'dpkg-buildpackage -sa -rfakeroot' was
|
||||
run.
|
||||
|
||||
@ -18,9 +18,9 @@ As shipped, only the .pdf docs are built. You may want to make the HTML
|
||||
files with latex2html by yourself, and eventually adapt the doc-base file.
|
||||
|
||||
To create a new config file for fpc (/etc/ppc386.cfg) use the command:
|
||||
/usr/lib/fpc/1.0.1/samplecfg /usr/lib/fpc/1.0.1
|
||||
/usr/lib/fpc/1.0.2/samplecfg /usr/lib/fpc/1.0.2
|
||||
However, you should be aware, that said file /etc/ppc386.cfg is
|
||||
declared as a conffile since version 1.0.1.
|
||||
declared as a conffile since version 1.0.2.
|
||||
|
||||
Free Vision (fp-fv) had to be removed due to licesing issues.
|
||||
It will return into the distribution as soon as these issues are resolved.
|
||||
|
@ -1,3 +1,9 @@
|
||||
fpc (1.0.2-0) unstable; urgency=low
|
||||
|
||||
* New Upstream Release
|
||||
|
||||
-- Peter Vreman <peter@freepascal.org> Tue, 10 Oct 2000 12:00:00 +0200
|
||||
|
||||
fpc (1.0.1-0.20000811.1) unstable; urgency=low
|
||||
|
||||
* Built for `official' upload. CVS as of 2000/08/11 - NMU.
|
||||
|
@ -2,7 +2,7 @@ The package was originally put together by:
|
||||
Peter Vreman <peter@freepascal.org>
|
||||
|
||||
From sources obtained from:
|
||||
ftp://ftp.freepascal.org/pub/fpc/dist/linux/fpc-0.99.15.tar.gz
|
||||
ftp://ftp.freepascal.org/pub/fpc/dist/linux/fpc-1.0.2.tar.gz
|
||||
|
||||
The files and libraries are released under the terms of the GNU Library
|
||||
General Public License, which can be found in the file
|
||||
|
@ -1,6 +1,6 @@
|
||||
<HTML>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/REC-html40/loose.dtd">
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
||||
<META NAME="Author" CONTENT="Free Pascal Web Team">
|
||||
@ -9,24 +9,23 @@
|
||||
<TITLE>Free Pascal - FAQ</TITLE>
|
||||
</HEAD>
|
||||
<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000EE" VLINK="#551A8B" ALINK="#FF8080">
|
||||
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="100%">
|
||||
<OL>
|
||||
<!-- IDXSTART -->
|
||||
<LI><A HREF="#WhatIsFP">What is Free Pascal (FPC)?</A></LI>
|
||||
<LI><A HREF="#versions">Which versions exist, and which one should I use?</A></LI>
|
||||
<LI><A HREF="#FPandGNUPascal">Free Pascal and GNU Pascal - a comparison</A></LI>
|
||||
<LI><A HREF="#WhereToGetFP">Where can I get the compiler?</A></LI>
|
||||
<LI><A HREF="#WhereToGetFP">Where can I get the compiler ?</A></LI>
|
||||
<LI><A HREF="#PortabilityTips">What are the considerations in porting</A></LI>
|
||||
<LI><A HREF="#OOP">I tried to compile my Delphi code with the Free Pascal</A></LI>
|
||||
<LI><A HREF="#HOMEWORK">I have to write a program for homework. Can you help?</A></LI>
|
||||
<LI><A HREF="#HowcanIbuildaunit">How can I build a unit?</A></LI>
|
||||
<LI><A HREF="#TurboVision">Will Free Pascal support TV (Turbo Vision) in the future?</A></LI>
|
||||
<LI><A HREF="#CompileSystemUnit">How can I compile the system unit?</A></LI>
|
||||
<LI><A HREF="#Internalerror9999">I get an internal error 9999</A></LI>
|
||||
<LI><A HREF="#Internalerror9999">I get an internal error 9999 or 10?</A></LI>
|
||||
<LI><A HREF="#Howdoesfunctionoverloadingwork">How does function overloading work?</A></LI>
|
||||
<LI><A HREF="#HowToCallCFuncuntions">How can I call C functions?</A></LI>
|
||||
<LI><A HREF="#DJGPP2support">When will Free Pascal use DJGPP 2.0 under DOS/Windows?</A></LI>
|
||||
<LI><A HREF="#HowToUseGraph">How can I use the graph unit with Free Pascal?</A></LI>
|
||||
<LI><A HREF="#WrongColors">Why do I get wrong colors when using the graph unit?</A></LI>
|
||||
<LI><A HREF="#IntegratedAssemblerSyntax">Integrated Assembler syntax</A></LI>
|
||||
<LI><A HREF="#HowToAccessDosMemory">How can I access DOS memory / How can I do graphics programming?</A></LI>
|
||||
<LI><A HREF="#FPwithoutfpu">How can I run Free Pascal without a math coprocessor?</A></LI>
|
||||
@ -35,10 +34,10 @@
|
||||
<LI><A HREF="#ImusingWin95">I'm using the Dos compiler under Windows 95</A></LI>
|
||||
<LI><A HREF="#ImusingOS2">I'm using OS/2</A></LI>
|
||||
<LI><A HREF="#dpmi">INSTALL.EXE of Dos version 0.99.10 reports "Load error: no DPMI"</A></LI>
|
||||
<LI><A HREF="#winnt">INSTALL.EXE of Dos version 0.99.10 does not run in Windows NT</A></LI>
|
||||
<LI><A HREF="#instal10NT">INSTALL.EXE of version 1.0 for Dos returns an error (-2) in Windows NT 4.0</A></LI>
|
||||
<LI><A HREF="#snapshot">I want a new version NOW</A></LI>
|
||||
<LI><A HREF="#ideinst">Where can I find a text mode IDE?</A></LI>
|
||||
<LI><A HREF="#ideconfig">How do I configure the IDE?</A></LI>
|
||||
<LI><A HREF="#ideconfig">How do I configure the Dos IDE?</A></LI>
|
||||
<LI><A HREF="#binariesbig">Why are the generated binaries so big?</A></LI>
|
||||
<LI><A HREF="#systemnotfound">Unit system, syslinux, sysos2 or syswin32 not found errors</A></LI>
|
||||
<LI><A HREF="#KnownBugs">Known bugs</A></LI>
|
||||
@ -50,7 +49,8 @@
|
||||
<P>
|
||||
Originally named FPK-Pascal, the Free Pascal compiler is a 32 bit Turbo
|
||||
Pascal compatible Pascal compiler for DOS, Linux, Win32, OS/2 and (based on
|
||||
an older version) the AmigaOS. More operating systems are in the works.
|
||||
an older version) the AmigaOS. More operating systems (BeOS and FreeBSD/ELF are in
|
||||
advanced stages of development) are in the works.
|
||||
</P>
|
||||
<P>
|
||||
The compiler is written in Pascal and is able to compile its own sources.
|
||||
@ -62,6 +62,7 @@ the Intel version and ideally a 68020 processor for the Motorola
|
||||
version). At least 2 megabytes of RAM are required. To remake the compiler
|
||||
more than 16MB is recommended.
|
||||
</P>
|
||||
<p>
|
||||
Short history:
|
||||
<UL>
|
||||
<LI>6/1993: project start
|
||||
@ -69,42 +70,70 @@ Short history:
|
||||
<LI>3/1995: the compiler compiles the own sources
|
||||
<LI>3/1996: released to the internet
|
||||
<LI>7/2000: 1.0 version
|
||||
</UL><BR>
|
||||
</UL>
|
||||
</p>
|
||||
<LI><A NAME="versions"></A><H3>Which versions exist, and which one should I use?</H3>
|
||||
<p>
|
||||
FPC's version numbering changed a few times over the years. Versions before 0.99.5 are considered archaic.
|
||||
After the release of 0.99.5 a system in version numbering was introduced, and that system was changed slightly changed after the
|
||||
1.0 release.
|
||||
</p>
|
||||
<b>Versioning for versions 0.99.5 - 1.0</b>
|
||||
<P>
|
||||
Compilers with an <b>even</b> last number are <b>release</b> versions(e.g. 0.99.8, 0.99.10, 0.99.12, 0.99.14 and 1.00)<br>
|
||||
Compilers and packages with an <b>odd</b> last number are <b>development</b> versions (e.g. 0.99.9, 0.99.11, 0.99.13, 0.99.15 and 1.0.9).
|
||||
Compilers with an <b>even</b> last number are <b>release</b> versions(e.g. 0.99.8, 0.99.10, 0.99.12, 0.99.14 1.0.0)<br>
|
||||
Compilers and packages with an <b>odd</b> last number are <b>development</b> versions (e.g. 0.99.9, 0.99.11, 0.99.13, 0.99.15)
|
||||
</P>
|
||||
<P>
|
||||
0.99.5 is an exception to this rule, since <b>0.99.5 IS a release</b> (a release prior to the introduction of this odd/even system)
|
||||
0.99.5 is an exception to this rule, since <b>0.99.5 IS a release</b> (a release prior to the introduction of this odd/even system).
|
||||
</P>
|
||||
<P>
|
||||
Letters behind the version number (0.99.12b, 0.99.5d) indicate release versions with some bugs and problems in the original release (respectively 0.99.12 and 0.99.5) fixed.
|
||||
Letters behind the version number (0.99.12b, 0.99.5d) indicate release versions with some bugs and problems in the original release
|
||||
(respectively 0.99.12 and 0.99.5) fixed.
|
||||
</P>
|
||||
<p>
|
||||
<b>Versioning after 1.0</b>
|
||||
</p>
|
||||
<P>
|
||||
Together with the release of 1.0 the version numbering has been slightly changed,
|
||||
and a system in versioning resembling the Linux kernel's has been introduced.
|
||||
The main difference is that the difference between a release version is now in the
|
||||
second number (1.0.x vs 1.1.x) instead of the third number (0.99.14 vs 0.99.15), and
|
||||
the third number now becomes the patch level, replacing the postfixed letter in the old system.
|
||||
</p>
|
||||
<p>
|
||||
<ul>
|
||||
<li>Releases that only fix bugs in version 1.0 will be numbered 1.0.x</li>
|
||||
<li>New development (the so called snapshots) have version number 1.1.x. The meaning
|
||||
of the third version number x in the new development branch is not defined yet, it could be used for test releases or to signal major changes. </li>
|
||||
<li>Eventually the 1.1.x versions, when stabilized will be released as version 1.2. Fixes on the 1.2 release will be numbered 1.2.x</lI>
|
||||
<li>The new development after the 1.2 release will be numbered 1.3.x and so on</li>
|
||||
<li>When really big changes are implemented, the version will be updated in the major number. This could be case with
|
||||
e.g. a codegenerator rewrite with support for other processors</li>
|
||||
</ul>
|
||||
</P
|
||||
<P>
|
||||
Normally you would want to use a release. Releases are considered stable, and
|
||||
easier to support (the bugs, quirks and unintended "features" are well
|
||||
known after a period of time,
|
||||
and workarounds exist).
|
||||
known after a period of time, and workarounds exist).
|
||||
</P>
|
||||
<P>
|
||||
Development snapshots (which are generated daily) reflect the current status of the compiler.
|
||||
Development versions probably have new features and larger bugs fixed since the last release,
|
||||
but might have some temporary stability drawbacks (which are usually fixed by the
|
||||
next day)
|
||||
but might have some temporary stability drawbacks (which are usually fixed by the next day).
|
||||
</P>
|
||||
<P>
|
||||
Most support for development snapshots are basically the advise to
|
||||
upgrade to newer snapshot in which the bugs are hopefully fixed.
|
||||
Since version 0.99.8 the stability of the compiler steadily increased
|
||||
and development
|
||||
snapshots are often quite useful for certain categories of users. Ask in the maillists if it is worth the trouble in your case if you're not sure.
|
||||
and development snapshots are often quite useful for certain categories of users. Ask in the maillists if it
|
||||
is worth the trouble in your case if you're not sure.
|
||||
</P>
|
||||
<P>
|
||||
The current release version is 1.00 for the OS/2, Linux, Windows and Dos (Go32V2) targets and 0.99.5d for the 680x0 based systems (Amiga and Atari ST)
|
||||
</P>
|
||||
<P>
|
||||
The current development snapshot version is 1.0.9.
|
||||
<b>The current release version is 1.00</b> for the OS/2, Linux, Windows and Dos (Go32V2) targets and 0.99.5d for the 680x0 based systems (Amiga and Atari ST).
|
||||
The development versions (snapshots) are numbered 1.1.x at the moment</b>
|
||||
</p>
|
||||
<p>
|
||||
We advise all users to upgrade to the newest version for their target. (1.0 for intel processors, and 0.99.5d for Motorola)
|
||||
</P>
|
||||
<LI><A NAME="FPandGNUPascal"></A><H3>Free Pascal and GNU Pascal - a comparison</H3>
|
||||
<DL>
|
||||
@ -128,7 +157,7 @@ OS/2 and AmigaOS and is for the moment limited to the Intel and Motorola
|
||||
architectures. GNU Pascal runs basically on any system that can run GNU C.
|
||||
</DD>
|
||||
<DT><B>Sources:</B></DT>
|
||||
<DD>Free Pascal is entirely written in Pascal (about 4 Mb of source code),
|
||||
<DD>Free Pascal is entirely written in Pascal (about 6 Mb of 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 GNU C code)</DD>
|
||||
<DT><B>Language:</B></DT>
|
||||
@ -136,7 +165,7 @@ while GNU Pascal is written in C (it's an adaptation of the GNU C compiler:
|
||||
the Delphi Object Pascal language. GNU Pascal supports ISO 7185, ISO 10206,
|
||||
(most of) Borland Pascal 7.0</DD>
|
||||
<DT><B>Extensions:</B></DT>
|
||||
<DD>Free Pascal implements function overloading and operator overloading.
|
||||
<DD>Free Pascal implements method, function and operator overloading.
|
||||
GNU Pascal implements operator overloading.</DD>
|
||||
<DT><B>License:</B></DT>
|
||||
<DD>Both compilers come under the GNU GPL.</DD>
|
||||
@ -157,28 +186,30 @@ important to take a few precautions so that your code will execute
|
||||
correctly on all processors.
|
||||
</P>
|
||||
<UL>
|
||||
<LI>Limit your use of asm statements unless it is time critical code
|
||||
<LI>Limit your use of asm statements unless it is time critical code</LI>
|
||||
<LI>Don't use the packed directive unless you know exactly what you are
|
||||
doing. Most processors require alignment of data, and using packed on
|
||||
objects,classes and records may break this requirement. If this is the
|
||||
case your code will simply crash on the target processors.
|
||||
case your code will simply crash on the target processors.</LI>
|
||||
<LI>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 are left opened.
|
||||
as some operating systems don't like it when some files are left opened. </LI>
|
||||
<LI>Try not to rely on the endian of the specific machines when doing
|
||||
arithmetic operations. Furthermore, reading and writing of binary data
|
||||
to/from files will probably require byte swaps across different endian
|
||||
machines (swap is your friend in this case)
|
||||
machines (swap is your friend in this case). This is even more important
|
||||
if you write binary data to files. </LI>
|
||||
<LI>Try limiting your local variables in subroutines to 32K, as this
|
||||
is the limit of some processors, use dynamic allocation instead.
|
||||
is the limit of some processors, use dynamic allocation instead. </LI>
|
||||
<LI>Try limiting the size of parameters passed to subroutines to 32K,
|
||||
as this is the limit of some processors, use const or var parameters
|
||||
instead.
|
||||
instead. </LI>
|
||||
</UL><BR>
|
||||
<LI><A NAME="OOP"></A><H3>I tried to compile my Delphi code with the Free Pascal
|
||||
Compiler, but it seems that it doesn't recognize Delphi style OOP.</H3>
|
||||
<P>
|
||||
The compiler supports the Delphi OOP. Make sure you use
|
||||
the -S2 or -Sd switches (see the manuals for the meaning of these switches).
|
||||
For a list of Delphi incompabilities also check the manual.
|
||||
</P>
|
||||
<LI><A NAME="HOMEWORK"></A><H3>I have to write a program for homework. Can you help?</H3>
|
||||
<P>
|
||||
@ -215,7 +246,7 @@ and do a 'make' there.
|
||||
It is possible to do all this manually, but you need more detailed knowledge
|
||||
of the RTL tree structure for that.
|
||||
</P>
|
||||
<LI><A NAME="Internalerror9999"></A><H3>I get an internal error 9999</H3>
|
||||
<LI><A NAME="Internalerror9999"></A><H3>I get an internal error 9999 or 10?</H3>
|
||||
<P>
|
||||
The latest versions of the Free Pascal Compiler come with an error handling
|
||||
routine which catches the segmentation fault and lets the compiler to exit
|
||||
@ -228,7 +259,9 @@ a bug report.
|
||||
terminates if during compiling a certain condition 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 sourcecode, it could be a completely different
|
||||
bug.)
|
||||
bug. <b>IE 10</b> is something similar. It is a safety measure that is triggered
|
||||
when the estimated number of registers needed to evaluate an expression proves
|
||||
wrong. Just like IE 9999, two IE 10 problems are often independant of eachother.)
|
||||
</P>
|
||||
<LI><A NAME="Howdoesfunctionoverloadingwork"></A><H3>How does function overloading work?</H3>
|
||||
<P>
|
||||
@ -263,11 +296,6 @@ For calling the C function strcmp declare the following:
|
||||
function strcmp(s1 : pchar;s2 : pchar) : integer;cdecl;external;
|
||||
Since 0.99.5, the older [C]; won't work!
|
||||
</PRE>
|
||||
<LI><A NAME="DJGPP2support"></A><H3>When will Free Pascal use DJGPP 2.0 under DOS/Windows?</H3>
|
||||
<P>
|
||||
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.
|
||||
</P>
|
||||
<LI><A NAME="HowToUseGraph"></A><H3>How can I use the graph unit with Free Pascal?</H3>
|
||||
<P>
|
||||
Since 0.99.12, the graph unit is available both for Dos and Linux. Under Dos,
|
||||
@ -275,6 +303,37 @@ 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.
|
||||
</P>
|
||||
<P>
|
||||
Since version 1.0, we also have a completely platform independent way of selecting
|
||||
resolutions and bitdepths. You are strongly encouraged to use it, because other ways
|
||||
will probably fail on one or other platform. See the documentation of the graph unit
|
||||
for more information.
|
||||
<LI><A NAME="WrongColors"></A><H3>Why do I get wrong colors when using the graph unit?</H3>
|
||||
<P>
|
||||
If you use <TT>detect</TT> as graphdriver, you will end up with the highest supported
|
||||
bitdepth. Since the graph unit currently only supports up to 16 bits per pixel modes and
|
||||
since this bitdepth is supported by all graphics cards made in at least the last 5 years, you
|
||||
will most likely get a 16 bit mode.
|
||||
</P>
|
||||
<P>
|
||||
The main problem is that in 16 (and 15, 24, 32, ...) bit modes, the colors aren't set anymore
|
||||
using an index in a palette (the palettized way is called "indexed color"). In these modes, the
|
||||
color number itself determines what color you get on screen and you can't change this color. The
|
||||
color is encoded as follows (for most graphics cards on PC's at least):
|
||||
</P>
|
||||
<UL>
|
||||
<LI>15 bit color: lower 5 bits are blue intensity, next come 5 bits of green and then 5 bits of red. The
|
||||
highest bit of the word is ignored.
|
||||
<LI>16 bit color: lower 5 bits are blue intensite, next come *6* bits of green and then 5 bits of red.
|
||||
</UL>
|
||||
<P>
|
||||
This means that either you have to rewrite your program so it can work with this so-called "direct color"
|
||||
scheme, or that you have to use <TT>D8BIT</TT> as graphdriver and <TT>DetectMode</TT> as graphmode. This will ensure that
|
||||
you end up with a 256 (indexed) color mode. If there are no 256 color modes supported, then graphresult
|
||||
will contain the value <TT>GrNotDetected</TT> after you called InitGraph and you can retry with graphdriver <TT>D4BIT</TT>. Make sure you use
|
||||
the constant names (D8BIT, D4BIT, ...) and not their actual numeric values, because those values can
|
||||
change with the next release! That the very reason why such symbolic constants exist.
|
||||
</P>
|
||||
<LI><A NAME="IntegratedAssemblerSyntax"></A><H3>Integrated Assembler syntax</H3>
|
||||
<P>
|
||||
The default assembler syntax (AT&T style) is different from the
|
||||
@ -305,11 +364,13 @@ dosmemput/dosmemget routines in Go32 unit.
|
||||
On the Intel version the emulator is automatically loaded by the compiler
|
||||
if you add the following commands to your autoexec.bat:
|
||||
</P>
|
||||
<P>
|
||||
<PRE>
|
||||
SET 387=N
|
||||
SET EMU386=C:\PP\BIN\GO32V2\WEMU387.DXE
|
||||
</PRE>
|
||||
(don't forget to replace the <TT>C:\PP</TT> with the directory where you installed FPC)
|
||||
</P>
|
||||
<LI><A NAME="AccessingMoreThan4MB"></A><H3>How do I reserve more than 2 megabytes of RAM?</H3>
|
||||
<P>
|
||||
By default Free Pascal allocates only 2MB of RAM for your application. If it just allocated all
|
||||
@ -342,6 +403,10 @@ procedures of the go32 unit.
|
||||
Since version 0.99.8, the Port array is supported like in TP, as long as you
|
||||
use the ports unit in your program (not available under Win32).
|
||||
</P>
|
||||
<P>
|
||||
I/O port access is possible under Linux, but that requires root privileges. Check
|
||||
the manuals for the IOPerm, ReadPort and WritePort procedures. (Unit Linux)
|
||||
</P>
|
||||
<LI><A NAME="ImusingWin95"></A><H3>I'm using the Dos compiler under Windows 95</H3>
|
||||
<P>
|
||||
There is a problem with the Dos compiler and Win 95 on computers with less
|
||||
@ -368,12 +433,29 @@ You can either extract that file from basego32.zip or download it from
|
||||
http://www.brain.uni-freiburg.de/%7Eklaus/cwsdpmi.exe</a>.
|
||||
Put it into the same directory as install.exe and run install again.
|
||||
</p>
|
||||
<LI><A NAME="winnt"></A><H3>INSTALL.EXE of Dos version 0.99.10 does not run in Windows NT</H3>
|
||||
<LI><A NAME="instal10NT"></A><H3>INSTALL.EXE of version 1.0 for Dos returns an error (-2) in Windows NT 4.0</H3>
|
||||
<P>
|
||||
This is an incompatibility of the mouse driver.
|
||||
Use this new version of install.exe instead:
|
||||
<a href="ftp://ftp.freepascal.org/pub/fpc/snapshot/install.exe">
|
||||
ftp://ftp.freepascal.org/pub/fpc/snapshot/install.exe</a>
|
||||
This is caused by long file names in some of the .ZIPs of the dosversion. A new installer
|
||||
will be generated that ignores the packages with long file names in it. Currently it is still being tested.
|
||||
Alternatively, one could use the installer from the Win32 1.0 version under NT. This has the additional benefit
|
||||
that the archives with long filenames can be selected and installed too.
|
||||
</P>
|
||||
<P>
|
||||
The exact cause of this problem is that a NT 4.0 dosbox doesn't support long file names for dos programs.
|
||||
Windows 95,98 and 2000 don't exhibit this problem.
|
||||
</P>
|
||||
<P>
|
||||
<ul>
|
||||
<li>The current ZIPs on ftp have been updated with the new installer.</lI>
|
||||
<lI>Dosw32100.zip, has now default the win32 installer, and the go32v2
|
||||
installer packaged as installd.exe.
|
||||
<li>If you already downloaded one of the large Dos zips, repeated downloading
|
||||
is not necessary, just download a new installer:<ul>
|
||||
<li><a href="ftp://ftp.freepascal.org/pub/fpc/dist/dos-1.00/separate/install.exe">Plain dos installer. For dos without a 32-bit windows loaded or OS/2</a></lI>
|
||||
<li><a href="ftp://ftp.freepascal.org/pub/fpc/dist/win32-1.00/separate/install.exe">Win32 installer, for all win32 targets (win 95,98,NT en 2000) including their dosboxes</a></li>
|
||||
</ul></lI>
|
||||
<li>If you downloaded an OS/2 version, and experience problems, you can try to download the new dos installer</lI>
|
||||
</ul>
|
||||
</P>
|
||||
<LI><A NAME="snapshot"></A><H3>I want a new version NOW</H3>
|
||||
<P>
|
||||
@ -442,6 +524,7 @@ try again one or two days later or ask for help on one of the
|
||||
<p>
|
||||
There are several reasons and remedies for this:
|
||||
</p>
|
||||
<p>
|
||||
<ol>
|
||||
<li>
|
||||
<p>If you are using 0.99.12: Due to some problems with the binary writer, 0.99.12 wasn't
|
||||
@ -451,22 +534,23 @@ functions and constants to be linked in.</p>
|
||||
You can remedy this by using a development version and creating a smartlinking
|
||||
RTL. See the <a href="makecyc.html">make cycle faq</a> or use a later release if available (0.99.14 and later do include a smartlinkable RTL). To turn on the generation of smartlinkable units, use the -Cx command line option when compiling
|
||||
your units. To turn on the linking of previously generated smarlinkable units, use the -XX (-XS in 0.99.12 and earlier) command line option when compiling a program.
|
||||
</p>
|
||||
</p></li>
|
||||
<li>Normally, all symbol information is included in the resulting program (for
|
||||
easier debugging). You can remove this by using the -Xs command line
|
||||
option when compiling your program (it won't do anything when compiling
|
||||
units)
|
||||
units)</li>
|
||||
<lI>You can use UPX to pack the .EXEs (just like e.g. pklite) for Dos (GO32v2)
|
||||
and Windows targets. Look <A HREF="http://wildsau.idv.uni-linz.ac.at/mfx/upx.html">here</A> for
|
||||
more info.
|
||||
more info.</lI>
|
||||
<lI>You can use LXLITE for packing EMX binaries, but you won't be able to run
|
||||
them under DOS (with extender) any more then. It might even not be possible
|
||||
to use them on lower OS/2 versions (like 2.x) depending on chosen type
|
||||
of compression. LXLITE can be found e.g. on <A HREF="http://hobbes.nmsu.edu">Hobbes</A>, search
|
||||
for LXLITE.</li>
|
||||
for LXLITE.</li></li>
|
||||
<li>Turn on optimalisations, both for supplied packages (RTL, API, FV, FCL) and for
|
||||
your own code, this will also decrease the code size.
|
||||
</ol>
|
||||
</p>
|
||||
<LI><A NAME="systemnotfound"></A><H3>Unit system, syslinux, sysos2 or syswin32 not found errors</H3>
|
||||
<p>
|
||||
System (syslinux, sysos2 or syswin32, depending on platform) is Pascal's base unit which is implicitely used
|
||||
@ -476,7 +560,7 @@ be found to be able to compile any pascal program by FPC.
|
||||
<p>
|
||||
The location of the system.ppu and syslinux.o files are determined by the -Fu
|
||||
switch which can be specified commandline, but is usually in the ppc386.cfg
|
||||
(Win32: ppc386w.cfg) configuration file.
|
||||
configuration file.
|
||||
</p>
|
||||
<p>
|
||||
If the compiler can't find this unit there are three possible causes:
|
||||
@ -499,48 +583,51 @@ 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:
|
||||
</p>
|
||||
<P>
|
||||
<pre>
|
||||
Dos, OS/2, Windows:
|
||||
ppc386 programname -vt |more<br>
|
||||
Linux:
|
||||
ppc386 programname -vt |less<br>
|
||||
</pre>
|
||||
</P>
|
||||
<LI><A NAME="KnownBugs"></A><H3>Known bugs</H3>
|
||||
<P>
|
||||
Go to the <A HREF="bugs.html">bugs page</A>
|
||||
</P>
|
||||
<LI><A NAME="ErrorPos"></A><H3>How can I find where an error occurred using the addresses a crashed program prints?</H3>
|
||||
<OL>
|
||||
<LI>Starting with version 1.00, the easiest possibility is to compile
|
||||
<LI>Starting with version 1.00, the easiest possibility is to recompile
|
||||
your program with -gl debugging option. This way unit LineInfo is
|
||||
automatically linked in, and the printout after a program crash then
|
||||
contains source line numbers in addition to addresses.
|
||||
contains source line numbers in addition to addresses. To see RTL functions in the backtrace
|
||||
with their real name, you have to recompile the RTL with -gl too.</LI>
|
||||
<LI>For older versions, or more comprehensive checking, compile the program
|
||||
with debugging information (use the -g command line option)
|
||||
with debugging information (use the -g command line option)</LI>
|
||||
<LI>Load the program in the debugger (gdb(w) for 0.99.12b and earlier, gdbpas(w)
|
||||
for 0.99.14 and later) using
|
||||
<pre>gdb(pas)(w) --directory=<src dirs> myprog.exe</pre>
|
||||
Notes:
|
||||
<UL>
|
||||
<LI>Under Linux, don't add the ".exe" after myprog
|
||||
<LI>Under Linux, don't add the ".exe" after myprog</LI>
|
||||
<LI>"<TT>src dirs</TT>" is a list of directories containing the source code
|
||||
files of myprog and the units it uses seperated by semi-colons (";").
|
||||
The current directory is automatically included.
|
||||
The current directory is automatically included.</LI>
|
||||
</UL>
|
||||
<LI>Once inside the debugger, you can (optionally) set the command line options
|
||||
that will be passed to your program using the command "<TT>set args <option1
|
||||
option2 ...></TT>"
|
||||
<LI>To start the program, type "<TT>run</TT>" and press enter
|
||||
option2 ...></TT>"</LI>
|
||||
<LI>To start the program, type "<TT>run</TT>" and press enter</LI>
|
||||
<LI>After the program has crashed, the address of the instruction where the crash
|
||||
occurred will be shown.
|
||||
The debugger will try to display the source code line corresponding with this
|
||||
address. Note that this can be inside a procedure of the RTL, so the source
|
||||
may not always be available and most likely the RTL wasn't compiled with
|
||||
debugging information.
|
||||
debugging information.</LI>
|
||||
<LI>If you then type "<TT>bt</TT>" (BackTrace), the addreses in the call stack will
|
||||
be shown (the addresses of the procedures which were called before the program
|
||||
got to the current address). You can see which source code lines these present
|
||||
using the command <pre>info line *<address></pre>For example:<pre>info line *0x05bd8</pre>
|
||||
using the command <pre>info line *<address></pre>For example:<pre>info line *0x05bd8</pre> </LI>
|
||||
</OL>
|
||||
</ol>
|
||||
<BR></TD>
|
||||
|
@ -1,10 +1,46 @@
|
||||
Frequently Asked Questions
|
||||
|
||||
|
||||
1. [1]What is Free Pascal (FPC)?
|
||||
2. [2]Which versions exist, and which one should I use?
|
||||
3. [3]Free Pascal and GNU Pascal - a comparison
|
||||
4. [4]Where can I get the compiler ?
|
||||
5. [5]What are the considerations in porting
|
||||
6. [6]I tried to compile my Delphi code with the Free Pascal
|
||||
7. [7]I have to write a program for homework. Can you help?
|
||||
8. [8]How can I build a unit?
|
||||
9. [9]Will Free Pascal support TV (Turbo Vision) in the future?
|
||||
10. [10]How can I compile the system unit?
|
||||
11. [11]I get an internal error 9999 or 10?
|
||||
12. [12]How does function overloading work?
|
||||
13. [13]How can I call C functions?
|
||||
14. [14]How can I use the graph unit with Free Pascal?
|
||||
15. [15]Why do I get wrong colors when using the graph unit?
|
||||
16. [16]Integrated Assembler syntax
|
||||
17. [17]How can I access DOS memory / How can I do graphics
|
||||
programming?
|
||||
18. [18]How can I run Free Pascal without a math coprocessor?
|
||||
19. [19]How do I reserve more than 2 megabytes of RAM?
|
||||
20. [20]How can I access I/O ports?
|
||||
21. [21]I'm using the Dos compiler under Windows 95
|
||||
22. [22]I'm using OS/2
|
||||
23. [23]INSTALL.EXE of Dos version 0.99.10 reports "Load error: no
|
||||
DPMI"
|
||||
24. [24]INSTALL.EXE of version 1.0 for Dos returns an error (-2) in
|
||||
Windows NT 4.0
|
||||
25. [25]I want a new version NOW
|
||||
26. [26]Where can I find a text mode IDE?
|
||||
27. [27]How do I configure the Dos IDE?
|
||||
28. [28]Why are the generated binaries so big?
|
||||
29. [29]Unit system, syslinux, sysos2 or syswin32 not found errors
|
||||
30. [30]Known bugs
|
||||
31. [31]How can I find where an error occurred using the addresses a
|
||||
crashed program prints?
|
||||
|
||||
1. What is Free Pascal (FPC)?
|
||||
Originally named FPK-Pascal, the Free Pascal compiler is a 32 bit
|
||||
Turbo Pascal compatible Pascal compiler for DOS, Linux, Win32,
|
||||
OS/2 and (based on an older version) the AmigaOS. More operating
|
||||
systems are in the works.
|
||||
systems (BeOS and FreeBSD/ELF are in advanced stages of
|
||||
development) are in the works.
|
||||
The compiler is written in Pascal and is able to compile its own
|
||||
sources. The source files are included.
|
||||
Free Pascal is modest regarding its minimal system requirements
|
||||
@ -18,15 +54,42 @@
|
||||
+ 3/1996: released to the internet
|
||||
+ 7/2000: 1.0 version
|
||||
2. Which versions exist, and which one should I use?
|
||||
FPC's version numbering changed a few times over the years.
|
||||
Versions before 0.99.5 are considered archaic. After the release
|
||||
of 0.99.5 a system in version numbering was introduced, and that
|
||||
system was changed slightly changed after the 1.0 release.
|
||||
Versioning for versions 0.99.5 - 1.0
|
||||
Compilers with an even last number are release versions(e.g.
|
||||
0.99.8, 0.99.10, 0.99.12, 0.99.14 and 1.00)
|
||||
0.99.8, 0.99.10, 0.99.12, 0.99.14 1.0.0)
|
||||
Compilers and packages with an odd last number are development
|
||||
versions (e.g. 0.99.9, 0.99.11, 0.99.13, 0.99.15 and 1.0.9).
|
||||
versions (e.g. 0.99.9, 0.99.11, 0.99.13, 0.99.15)
|
||||
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
|
||||
release versions with some bugs and problems in the original
|
||||
release (respectively 0.99.12 and 0.99.5) fixed.
|
||||
Versioning after 1.0
|
||||
Together with the release of 1.0 the version numbering has been
|
||||
slightly changed, and a system in versioning resembling the Linux
|
||||
kernel's has been introduced. The main difference is that the
|
||||
difference between a release version is now in the second number
|
||||
(1.0.x vs 1.1.x) instead of the third number (0.99.14 vs 0.99.15),
|
||||
and the third number now becomes the patch level, replacing the
|
||||
postfixed letter in the old system.
|
||||
+ Releases that only fix bugs in version 1.0 will be numbered
|
||||
1.0.x
|
||||
+ New development (the so called snapshots) have version number
|
||||
1.1.x. The meaning of the third version number x in the new
|
||||
development branch is not defined yet, it could be used for
|
||||
test releases or to signal major changes.
|
||||
+ Eventually the 1.1.x versions, when stabilized will be
|
||||
released as version 1.2. Fixes on the 1.2 release will be
|
||||
numbered 1.2.x
|
||||
+ The new development after the 1.2 release will be numbered
|
||||
1.3.x and so on
|
||||
+ When really big changes are implemented, the version will be
|
||||
updated in the major number. This could be case with e.g. a
|
||||
codegenerator rewrite with support for other processors
|
||||
Normally you would want to use a release. Releases are considered
|
||||
stable, and easier to support (the bugs, quirks and unintended
|
||||
"features" are well known after a period of time, and workarounds
|
||||
@ -35,7 +98,7 @@
|
||||
current status of the compiler. Development versions probably have
|
||||
new features and larger bugs fixed since the last release, but
|
||||
might have some temporary stability drawbacks (which are usually
|
||||
fixed by the next day)
|
||||
fixed by the next day).
|
||||
Most support for development snapshots are basically the advise to
|
||||
upgrade to newer snapshot in which the bugs are hopefully fixed.
|
||||
Since version 0.99.8 the stability of the compiler steadily
|
||||
@ -44,8 +107,10 @@
|
||||
the trouble in your case if you're not sure.
|
||||
The current release version is 1.00 for the OS/2, Linux, Windows
|
||||
and Dos (Go32V2) targets and 0.99.5d for the 680x0 based systems
|
||||
(Amiga and Atari ST)
|
||||
The current development snapshot version is 1.0.9.
|
||||
(Amiga and Atari ST). The development versions (snapshots) are
|
||||
numbered 1.1.x at the moment
|
||||
We advise all users to upgrade to the newest version for their
|
||||
target. (1.0 for intel processors, and 0.99.5d for Motorola)
|
||||
3. Free Pascal and GNU Pascal - a comparison
|
||||
|
||||
Aim:
|
||||
@ -74,7 +139,7 @@
|
||||
Pascal runs basically on any system that can run GNU C.
|
||||
|
||||
Sources:
|
||||
Free Pascal is entirely written in Pascal (about 4 Mb of
|
||||
Free Pascal is entirely written in Pascal (about 6 Mb of
|
||||
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
|
||||
GNU C code)
|
||||
@ -86,7 +151,7 @@
|
||||
Pascal 7.0
|
||||
|
||||
Extensions:
|
||||
Free Pascal implements function overloading and operator
|
||||
Free Pascal implements method, function and operator
|
||||
overloading. GNU Pascal implements operator overloading.
|
||||
|
||||
License:
|
||||
@ -98,7 +163,7 @@
|
||||
Jukka Virtanen, Finland (jtv@hut.fi).
|
||||
|
||||
4. Where can I get the compiler ?
|
||||
Free Pascal is available for download from all [46]official
|
||||
Free Pascal is available for download from all [32]official
|
||||
mirrors
|
||||
5. What are the considerations in porting code to other processors?
|
||||
Because the compiler now supports processors other than the Intel,
|
||||
@ -118,7 +183,8 @@
|
||||
doing arithmetic operations. Furthermore, reading and writing
|
||||
of binary data to/from files will probably require byte swaps
|
||||
across different endian machines (swap is your friend in this
|
||||
case)
|
||||
case). This is even more important if you write binary data
|
||||
to files.
|
||||
+ Try limiting your local variables in subroutines to 32K, as
|
||||
this is the limit of some processors, use dynamic allocation
|
||||
instead.
|
||||
@ -129,6 +195,7 @@
|
||||
but it seems that it doesn't recognize Delphi style OOP.
|
||||
The compiler supports the Delphi OOP. Make sure you use the -S2 or
|
||||
-Sd switches (see the manuals for the meaning of these switches).
|
||||
For a list of Delphi incompabilities also check the manual.
|
||||
7. I have to write a program for homework. Can you help?
|
||||
No. Please, don't send us mail about homework, we are no teachers.
|
||||
The Free Pascal development team tries to give good support for
|
||||
@ -147,7 +214,7 @@
|
||||
lately. It's already very usable, we are even writing an IDE in
|
||||
it. Due to copyrights problem the FreeVision source code is not
|
||||
available at the moment. You can download the IDE from the
|
||||
[47]development page. and get an idea of the look and feel though.
|
||||
[33]development page. and get an idea of the look and feel though.
|
||||
10. How can I compile the system unit?
|
||||
To recompile the system unit, it is recommended to have GNU make
|
||||
installed. typing 'make' in the rtl source directory will then
|
||||
@ -156,17 +223,21 @@
|
||||
a 'make' there.
|
||||
It is possible to do all this manually, but you need more detailed
|
||||
knowledge of the RTL tree structure for that.
|
||||
11. I get an internal error 9999
|
||||
11. I get an internal error 9999 or 10?
|
||||
The latest versions of the Free Pascal Compiler come with an error
|
||||
handling routine which catches the segmentation fault and lets the
|
||||
compiler to exit gracefully. This is reported as an internal error
|
||||
9999. Please try to reproduce the error and send [48]us a bug
|
||||
9999. Please try to reproduce the error and send [34]us a bug
|
||||
report.
|
||||
(For the curious, IE 9999 is not a specific bug. It is a safety
|
||||
measure which terminates if during compiling a certain condition
|
||||
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
|
||||
sourcecode, it could be a completely different bug.)
|
||||
sourcecode, it could be a completely different bug. IE 10 is
|
||||
something similar. It is a safety measure that is triggered when
|
||||
the estimated number of registers needed to evaluate an expression
|
||||
proves wrong. Just like IE 9999, two IE 10 problems are often
|
||||
independant of eachother.)
|
||||
12. How does function overloading work?
|
||||
function overloading is implemented, like in C++:
|
||||
procedure a(i : integer);
|
||||
@ -192,15 +263,44 @@ end.
|
||||
following:
|
||||
function strcmp(s1 : pchar;s2 : pchar) : integer;cdecl;external;
|
||||
Since 0.99.5, the older [C]; won't work!
|
||||
14. 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
|
||||
support has been removed since version FPC 0.99.8.
|
||||
15. How can I use the graph unit with Free Pascal?
|
||||
14. How can I use the graph unit with Free Pascal?
|
||||
Since 0.99.12, the graph unit is available both for Dos and Linux.
|
||||
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.
|
||||
Since version 1.0, we also have a completely platform independent
|
||||
way of selecting resolutions and bitdepths. You are strongly
|
||||
encouraged to use it, because other ways will probably fail on one
|
||||
or other platform. See the documentation of the graph unit for
|
||||
more information.
|
||||
15. Why do I get wrong colors when using the graph unit?
|
||||
If you use detect as graphdriver, you will end up with the highest
|
||||
supported bitdepth. Since the graph unit currently only supports
|
||||
up to 16 bits per pixel modes and since this bitdepth is supported
|
||||
by all graphics cards made in at least the last 5 years, you will
|
||||
most likely get a 16 bit mode.
|
||||
The main problem is that in 16 (and 15, 24, 32, ...) bit modes,
|
||||
the colors aren't set anymore using an index in a palette (the
|
||||
palettized way is called "indexed color"). In these modes, the
|
||||
color number itself determines what color you get on screen and
|
||||
you can't change this color. The color is encoded as follows (for
|
||||
most graphics cards on PC's at least):
|
||||
+ 15 bit color: lower 5 bits are blue intensity, next come 5
|
||||
bits of green and then 5 bits of red. The highest bit of the
|
||||
word is ignored.
|
||||
+ 16 bit color: lower 5 bits are blue intensite, next come *6*
|
||||
bits of green and then 5 bits of red.
|
||||
This means that either you have to rewrite your program so it can
|
||||
work with this so-called "direct color" scheme, or that you have
|
||||
to use D8BIT as graphdriver and DetectMode as graphmode. This will
|
||||
ensure that you end up with a 256 (indexed) color mode. If there
|
||||
are no 256 color modes supported, then graphresult will contain
|
||||
the value GrNotDetected after you called InitGraph and you can
|
||||
retry with graphdriver D4BIT. Make sure you use the constant names
|
||||
(D8BIT, D4BIT, ...) and not their actual numeric values, because
|
||||
those values can change with the next release! That the very
|
||||
reason why such symbolic constants exist.
|
||||
16. Integrated Assembler syntax
|
||||
The default assembler syntax (AT&T style) is different from the
|
||||
one in Borland Pascal (Intel style).
|
||||
@ -208,13 +308,13 @@ Since 0.99.5, the older [C]; won't work!
|
||||
assembly syntax. See the documentation for more info on how to use
|
||||
different assembler styles.
|
||||
A description of the AT&T syntax can be found in the DJGPP FAQ
|
||||
[49]http://www.delorie.com/djgpp/v2faq/faq102.html#Syntax or in
|
||||
[35]http://www.delorie.com/djgpp/v2faq/faq102.html#Syntax or in
|
||||
Brennan's Guide to Inline Assembly
|
||||
[50]http://www.rt66.com/%7Ebrennan/djgpp/djgpp asm.html. The
|
||||
[36]http://www.rt66.com/%7Ebrennan/djgpp/djgpp asm.html. The
|
||||
documentation also contains a chapter where the difference between
|
||||
the Intel and AT&T style assembly is explained.
|
||||
Or you can use the convertor program at
|
||||
[51]http://rcs.urz.tu-dresden.de/schoenfu/zip/asmtrans.zip .
|
||||
[37]http://rcs.urz.tu-dresden.de/schoenfu/zip/asmtrans.zip .
|
||||
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 memory
|
||||
blocks use the dosmemput/dosmemget routines in Go32 unit.
|
||||
@ -249,6 +349,9 @@ SET EMU386=C:\PP\BIN\GO32V2\WEMU387.DXE
|
||||
Since version 0.99.8, the Port array is supported like in TP, as
|
||||
long as you use the ports unit in your program (not available
|
||||
under Win32).
|
||||
I/O port access is possible under Linux, but that requires root
|
||||
privileges. Check the manuals for the IOPerm, ReadPort and
|
||||
WritePort procedures. (Unit Linux)
|
||||
21. I'm using the Dos compiler under Windows 95
|
||||
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
|
||||
@ -268,12 +371,31 @@ SET EMU386=C:\PP\BIN\GO32V2\WEMU387.DXE
|
||||
available. Such services are for example available in a Dos window
|
||||
of Windows. You can either extract that file from basego32.zip or
|
||||
download it from
|
||||
[52]http://www.brain.uni-freiburg.de/%7Eklaus/cwsdpmi.exe. Put it
|
||||
[38]http://www.brain.uni-freiburg.de/%7Eklaus/cwsdpmi.exe. Put it
|
||||
into the same directory as install.exe and run install again.
|
||||
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
|
||||
version of install.exe instead:
|
||||
[53]ftp://ftp.freepascal.org/pub/fpc/snapshot/install.exe
|
||||
24. INSTALL.EXE of version 1.0 for Dos returns an error (-2) in
|
||||
Windows NT 4.0
|
||||
This is caused by long file names in some of the .ZIPs of the
|
||||
dosversion. A new installer will be generated that ignores the
|
||||
packages with long file names in it. Currently it is still being
|
||||
tested. Alternatively, one could use the installer from the Win32
|
||||
1.0 version under NT. This has the additional benefit that the
|
||||
archives with long filenames can be selected and installed too.
|
||||
The exact cause of this problem is that a NT 4.0 dosbox doesn't
|
||||
support long file names for dos programs. Windows 95,98 and 2000
|
||||
don't exhibit this problem.
|
||||
+ The current ZIPs on ftp have been updated with the new
|
||||
installer.
|
||||
+ Dosw32100.zip, has now default the win32 installer, and the
|
||||
go32v2 installer packaged as installd.exe.
|
||||
+ If you already downloaded one of the large Dos zips, repeated
|
||||
downloading is not necessary, just download a new installer:
|
||||
o [39]Plain dos installer. For dos without a 32-bit
|
||||
windows loaded or OS/2
|
||||
o [40]Win32 installer, for all win32 targets (win 95,98,NT
|
||||
en 2000) including their dosboxes
|
||||
+ If you downloaded an OS/2 version, and experience problems,
|
||||
you can try to download the new dos installer
|
||||
25. I want a new version NOW
|
||||
In the time between the release of new official versions, you can
|
||||
have a look at and test developer versions (so-called
|
||||
@ -286,7 +408,7 @@ SET EMU386=C:\PP\BIN\GO32V2\WEMU387.DXE
|
||||
try again one or two days later. You're advised not to download
|
||||
the GO32v1 version for Dos, since it's not supported any more.
|
||||
The latest snapshot can always be downloaded from the
|
||||
[54]development web page.
|
||||
[41]development web page.
|
||||
To install a snapshot, extract the zip archive into the existing
|
||||
program directory of the last official version of Free Pascal
|
||||
(after making a backup of the original of course). You can also
|
||||
@ -305,7 +427,7 @@ SET EMU386=C:\PP\BIN\GO32V2\WEMU387.DXE
|
||||
particular platform (1.00 for GO32v2 or Win32). So if you have not
|
||||
already done that, first install the latest official version (e.g.
|
||||
file dos100.zip or dos100full.zip, you find these in the
|
||||
[55]download section).
|
||||
[42]download section).
|
||||
Then get and extract the latest snapshot for your platform (e.g.
|
||||
snapshot.zip) into the directory containing the official version.
|
||||
Next, do the same with one of the IDE snapshots. For more details
|
||||
@ -324,7 +446,7 @@ SET EMU386=C:\PP\BIN\GO32V2\WEMU387.DXE
|
||||
directory, usually c:\pp\rtl\go32v2. If you have done everything
|
||||
correct and it still doesn't work, you may have grabbed a snapshot
|
||||
that has a bug; in this case try again one or two days later or
|
||||
ask for help on one of the [56]mailing lists.
|
||||
ask for help on one of the [43]mailing lists.
|
||||
28. Why are the generated binaries so big?
|
||||
There are several reasons and remedies for this:
|
||||
1. If you are using 0.99.12: Due to some problems with the
|
||||
@ -332,7 +454,7 @@ SET EMU386=C:\PP\BIN\GO32V2\WEMU387.DXE
|
||||
RTLs. Smartlinking causes only actually used procedures,
|
||||
functions and constants to be linked in.
|
||||
You can remedy this by using a development version and
|
||||
creating a smartlinking RTL. See the [57]make cycle faq or
|
||||
creating a smartlinking RTL. See the [44]make cycle faq or
|
||||
use a later release if available (0.99.14 and later do
|
||||
include a smartlinkable RTL). To turn on the generation of
|
||||
smartlinkable units, use the -Cx command line option when
|
||||
@ -344,13 +466,13 @@ SET EMU386=C:\PP\BIN\GO32V2\WEMU387.DXE
|
||||
the -Xs command line option when compiling your program (it
|
||||
won't do anything when compiling units)
|
||||
3. You can use UPX to pack the .EXEs (just like e.g. pklite) for
|
||||
Dos (GO32v2) and Windows targets. Look [58]here for more
|
||||
Dos (GO32v2) and Windows targets. Look [45]here for more
|
||||
info.
|
||||
4. You can use LXLITE for packing EMX binaries, but you won't be
|
||||
able to run them under DOS (with extender) any more then. It
|
||||
might even not be possible to use them on lower OS/2 versions
|
||||
(like 2.x) depending on chosen type of compression. LXLITE
|
||||
can be found e.g. on [59]Hobbes, search for LXLITE.
|
||||
can be found e.g. on [46]Hobbes, search for LXLITE.
|
||||
5. Turn on optimalisations, both for supplied packages (RTL,
|
||||
API, FV, FCL) and for your own code, this will also decrease
|
||||
the code size.
|
||||
@ -361,7 +483,7 @@ SET EMU386=C:\PP\BIN\GO32V2\WEMU387.DXE
|
||||
be found to be able to compile any pascal program by FPC.
|
||||
The location of the system.ppu and syslinux.o files are determined
|
||||
by the -Fu switch which can be specified commandline, but is
|
||||
usually in the ppc386.cfg (Win32: ppc386w.cfg) configuration file.
|
||||
usually in the ppc386.cfg configuration file.
|
||||
If the compiler can't find this unit there are three possible
|
||||
causes:
|
||||
1. The ppc386.cfg isn't in the same path as the compiler
|
||||
@ -369,12 +491,12 @@ SET EMU386=C:\PP\BIN\GO32V2\WEMU387.DXE
|
||||
"/etc/ppc386.cfg" or ".ppc386.cfg" in your homedirectory
|
||||
(Linux).
|
||||
2. The ppc386.cfg doesn't contain the -Fu line, or a wrong one.
|
||||
See the [60]make cycle faq, especially the chapters about the
|
||||
See the [47]make cycle faq, especially the chapters about the
|
||||
ppc386.cfg and the directory structure.
|
||||
3. The files ARE found but the wrong version or platform.
|
||||
Correct ppc386.cfg to point to the right versions or
|
||||
reinstall the right versions (this can happen if you try to
|
||||
use a [61]snapshot compiler while the -Fu statemnt in the
|
||||
use a [48]snapshot compiler while the -Fu statemnt in the
|
||||
used ppc386.cfg still points to the RTL that came with the
|
||||
official release compiler).
|
||||
A handy trick can be executing "ppc386 programname -vt", this
|
||||
@ -389,20 +511,22 @@ Linux:
|
||||
ppc386 programname -vt |less
|
||||
|
||||
30. Known bugs
|
||||
Go to the [62]bugs page
|
||||
Go to the [49]bugs page
|
||||
31. How can I find where an error occurred using the addresses a
|
||||
crashed program prints?
|
||||
1. Starting with version 1.00, the easiest possibility is to
|
||||
compile your program with -gl debugging option. This way unit
|
||||
LineInfo is automatically linked in, and the printout after a
|
||||
program crash then contains source line numbers in addition
|
||||
to addresses.
|
||||
recompile your program with -gl debugging option. This way
|
||||
unit LineInfo is automatically linked in, and the printout
|
||||
after a program crash then contains source line numbers in
|
||||
addition to addresses. To see RTL functions in the backtrace
|
||||
with their real name, you have to recompile the RTL with -gl
|
||||
too.
|
||||
2. For older versions, or more comprehensive checking, compile
|
||||
the program with debugging information (use the -g command
|
||||
line option)
|
||||
3. Load the program in the debugger (gdb(w) for 0.99.12b and
|
||||
earlier, gdbpas(w) for 0.99.14 and later) using
|
||||
gdb(pas)(w) --directory=<src dirs>; myprog.exe
|
||||
gdb(pas)(w) --directory=<src dirs> myprog.exe
|
||||
Notes:
|
||||
o Under Linux, don't add the ".exe" after myprog
|
||||
o "src dirs" is a list of directories containing the
|
||||
@ -411,7 +535,7 @@ gdb(pas)(w) --directory=<src dirs>; myprog.exe
|
||||
automatically included.
|
||||
4. Once inside the debugger, you can (optionally) set the
|
||||
command line options that will be passed to your program
|
||||
using the command "set args <;option1 option2 ...>"
|
||||
using the command "set args <option1 option2 ...>"
|
||||
5. To start the program, type "run" and press enter
|
||||
6. After the program has crashed, the address of the instruction
|
||||
where the crash occurred will be shown. The debugger will try
|
||||
@ -424,6 +548,58 @@ gdb(pas)(w) --directory=<src dirs>; myprog.exe
|
||||
were called before the program got to the current address).
|
||||
You can see which source code lines these present using the
|
||||
command
|
||||
info line *<address>
|
||||
info line *<address>
|
||||
For example:
|
||||
info line *0x05bd8
|
||||
|
||||
References
|
||||
|
||||
1. file://localhost/home/pfv/html/faq.htm#WhatIsFP
|
||||
2. file://localhost/home/pfv/html/faq.htm#versions
|
||||
3. file://localhost/home/pfv/html/faq.htm#FPandGNUPascal
|
||||
4. file://localhost/home/pfv/html/faq.htm#WhereToGetFP
|
||||
5. file://localhost/home/pfv/html/faq.htm#PortabilityTips
|
||||
6. file://localhost/home/pfv/html/faq.htm#OOP
|
||||
7. file://localhost/home/pfv/html/faq.htm#HOMEWORK
|
||||
8. file://localhost/home/pfv/html/faq.htm#HowcanIbuildaunit
|
||||
9. file://localhost/home/pfv/html/faq.htm#TurboVision
|
||||
10. file://localhost/home/pfv/html/faq.htm#CompileSystemUnit
|
||||
11. file://localhost/home/pfv/html/faq.htm#Internalerror9999
|
||||
12. file://localhost/home/pfv/html/faq.htm#Howdoesfunctionoverloadingwork
|
||||
13. file://localhost/home/pfv/html/faq.htm#HowToCallCFuncuntions
|
||||
14. file://localhost/home/pfv/html/faq.htm#HowToUseGraph
|
||||
15. file://localhost/home/pfv/html/faq.htm#WrongColors
|
||||
16. file://localhost/home/pfv/html/faq.htm#IntegratedAssemblerSyntax
|
||||
17. file://localhost/home/pfv/html/faq.htm#HowToAccessDosMemory
|
||||
18. file://localhost/home/pfv/html/faq.htm#FPwithoutfpu
|
||||
19. file://localhost/home/pfv/html/faq.htm#AccessingMoreThan4MB
|
||||
20. file://localhost/home/pfv/html/faq.htm#accessioports
|
||||
21. file://localhost/home/pfv/html/faq.htm#ImusingWin95
|
||||
22. file://localhost/home/pfv/html/faq.htm#ImusingOS2
|
||||
23. file://localhost/home/pfv/html/faq.htm#dpmi
|
||||
24. file://localhost/home/pfv/html/faq.htm#instal10NT
|
||||
25. file://localhost/home/pfv/html/faq.htm#snapshot
|
||||
26. file://localhost/home/pfv/html/faq.htm#ideinst
|
||||
27. file://localhost/home/pfv/html/faq.htm#ideconfig
|
||||
28. file://localhost/home/pfv/html/faq.htm#binariesbig
|
||||
29. file://localhost/home/pfv/html/faq.htm#systemnotfound
|
||||
30. file://localhost/home/pfv/html/faq.htm#KnownBugs
|
||||
31. file://localhost/home/pfv/html/faq.htm#ErrorPos
|
||||
32. file://localhost/home/pfv/html/download.html
|
||||
33. file://localhost/home/pfv/html/develop.html#snapshot
|
||||
34. file://localhost/home/pfv/html/bugs.html
|
||||
35. http://www.delorie.com/djgpp/v2faq/faq102.html#Syntax
|
||||
36. http://www.rt66.com/%7Ebrennan/djgpp/djgpp%A0asm.html
|
||||
37. http://rcs.urz.tu-dresden.de/schoenfu/zip/asmtrans.zip
|
||||
38. http://www.brain.uni-freiburg.de/%7Eklaus/cwsdpmi.exe
|
||||
39. ftp://ftp.freepascal.org/pub/fpc/dist/dos-1.00/separate/install.exe
|
||||
40. ftp://ftp.freepascal.org/pub/fpc/dist/win32-1.00/separate/install.exe
|
||||
41. file://localhost/home/pfv/html/develop.html#snapshot
|
||||
42. file://localhost/home/pfv/html/download.html
|
||||
43. file://localhost/home/pfv/html/maillist.html
|
||||
44. file://localhost/home/pfv/html/makecyc.html
|
||||
45. http://wildsau.idv.uni-linz.ac.at/mfx/upx.html
|
||||
46. http://hobbes.nmsu.edu/
|
||||
47. file://localhost/home/pfv/html/makecyc.html
|
||||
48. file://localhost/home/pfv/html/faq.htm#snapshot
|
||||
49. file://localhost/home/pfv/html/bugs.html
|
||||
|
@ -107,7 +107,7 @@ All standard packages contain a part that is specific for the target platform
|
||||
and a few files which are target independent. All files are also available
|
||||
as separate files to reduce file size if the default file is too big.
|
||||
|
||||
dos100.zip specific:
|
||||
dos102.zip specific:
|
||||
----------------------
|
||||
basego32.zip contains a DOS (Go32V2) compiler, runtime library and
|
||||
additional files
|
||||
@ -129,7 +129,7 @@ dos100.zip specific:
|
||||
UPX 1.01
|
||||
gdbgo32.zip contains the GNU Debugger 4.18 with pascal support for Go32V2
|
||||
|
||||
w32100.zip specific:
|
||||
w32102.zip specific:
|
||||
----------------------
|
||||
basew32.zip contains a Win32 compiler, runtime library and
|
||||
additional files
|
||||
@ -154,7 +154,7 @@ w32100.zip specific:
|
||||
UPX 1.01
|
||||
gdbw32.zip contains the GNU Debugger 4.18 with pascal support for Win32
|
||||
|
||||
os2100.zip specific:
|
||||
os2102.zip specific:
|
||||
----------------------
|
||||
baseemx.zip contains an EMX (OS/2 and DOS) compiler, runtime library and
|
||||
additional files
|
||||
@ -183,7 +183,7 @@ os2100.zip specific:
|
||||
gdbemx.zip contains the GNU Debugger 4.16 for EMX,
|
||||
PMGDB (Presentation Manager add-on for GDB) and GPROF 2.9.1
|
||||
|
||||
common files in dos100.zip, w32100.zip and os2100.zip:
|
||||
common files in dos102.zip, w32102.zip and os2102.zip:
|
||||
------------------------------------------------------------
|
||||
demo.zip contains some demo files
|
||||
doc-pdf.zip contains the documentation in PDF format
|
||||
@ -192,7 +192,7 @@ common files in dos100.zip, w32100.zip and os2100.zip:
|
||||
readme.txt this readme file
|
||||
whatsnew.txt what's been changed
|
||||
|
||||
Optional source package src100.zip:
|
||||
Optional source package src102.zip:
|
||||
-------------------------------------
|
||||
basesrc.zip contains the basic Makefiles needed for the source tree
|
||||
compsrc.zip contains the compiler sources
|
||||
|
@ -1,15 +1,15 @@
|
||||
Name: fpc-docs
|
||||
Version: 1.0.1
|
||||
Version: 1.0.2
|
||||
Release: 1
|
||||
Copyright: GPL
|
||||
Group: Development/Languages
|
||||
Source: fpc-docs-1.0.1-src.tar.gz
|
||||
Source: fpc-docs-1.0.2-src.tar.gz
|
||||
Summary: Free Pascal Compiler Documentation
|
||||
Packager: Peter Vreman (peter@freepascal.org)
|
||||
URL: http://www.freepascal.org/
|
||||
BuildRoot: /tmp/fpc-docs-build
|
||||
|
||||
%define fpcversion 1.0.1
|
||||
%define fpcversion 1.0.2
|
||||
%define fpcdir /usr/lib/fpc/%{fpcversion}
|
||||
%define docdir /usr/doc/fpc-%{fpcversion}
|
||||
|
||||
|
@ -1,17 +1,17 @@
|
||||
Name: fpc
|
||||
Version: 1.0.1
|
||||
Version: 1.0.2
|
||||
Release: 1
|
||||
ExclusiveArch: i386 i586 i686
|
||||
Copyright: GPL
|
||||
Group: Development/Languages
|
||||
Source: fpc-1.0.1-src.tar.gz
|
||||
Source: fpc-1.0.2-src.tar.gz
|
||||
Summary: Free Pascal Compiler
|
||||
Packager: Peter Vreman (peter@freepascal.org)
|
||||
URL: http://www.freepascal.org/
|
||||
BuildRoot: /tmp/fpc-build
|
||||
BuildRequires: fpc
|
||||
|
||||
%define fpcversion 1.0.1
|
||||
%define fpcversion 1.0.2
|
||||
%define fpcdir /usr/lib/fpc/%{fpcversion}
|
||||
%define docdir /usr/doc/fpc-%{fpcversion}
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
||||
#
|
||||
|
||||
# Release Version
|
||||
VERSION=1.00
|
||||
VERSION=1.0.2
|
||||
|
||||
# some useful functions
|
||||
# ask displays 1st parameter, and ask new value for variable, whose name is
|
||||
|
@ -5,7 +5,7 @@
|
||||
#
|
||||
|
||||
# Version
|
||||
VERSION=1.00
|
||||
VERSION=1.0.2
|
||||
RELEASE=ELF
|
||||
|
||||
unset FPCDIR
|
||||
@ -17,7 +17,7 @@ make linuxzip
|
||||
make sourcezip
|
||||
make docsrc
|
||||
make docs
|
||||
make demo
|
||||
make demozip
|
||||
|
||||
SOURCES=`/bin/ls *src.tar.gz`
|
||||
FILES=`/bin/ls *linux.tar.gz *exm.tar.gz`
|
||||
|
Loading…
Reference in New Issue
Block a user