faq.txt 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474
  1. FreePascal FAQ
  2. As distributed with FPC 0.99.14
  3. This FAQ might not be up to date. See [1]the FPC FAQ on internet for
  4. updates.
  5. This FAQ is in no way a substitute for the extensive documentation
  6. that accompanies FPC.
  7. 1. [2]What is Free Pascal(FPC) ?
  8. 2. [3]Which versions exist, and which one should I use?
  9. 3. [4]Known bugs
  10. 4. [5]Free Pascal and GNU Pascal - a comparison
  11. 5. [6]Where can I get the compiler ?
  12. 6. [7]What are the considerations in porting
  13. 7. [8]I tried to compile my Delphi code with the Free Pascal
  14. Compiler,
  15. 8. [9]I have to write a program for homework. Can you help?
  16. 9. [10]How can I build a unit?
  17. 10. [11]Will Free Pascal support TV (Turbo Vision) in the future?
  18. 11. [12]How can I compile the system unit ?
  19. 12. [13]I get an internal error 9999
  20. 13. [14]How does function overloading work?
  21. 14. [15]How can I call C functions ?
  22. 15. [16]When will Free Pascal use DJGPP 2.0 under DOS/Windows ?
  23. 16. [17]How can I use the graph unit with Free Pascal ?
  24. 17. [18]Integrated Assembler syntax
  25. 18. [19]How to access DOS memory / How to do graphics ?
  26. 19. [20]Free Pascal without a math coprocessor
  27. 20. [21]Accessing more than 4 megabytes
  28. 21. [22]Access I/O ports
  29. 22. [23]I'm using the Dos compiler under Windows 95
  30. 23. [24]I'm using OS/2
  31. 24. [25]INSTALL.EXE of Dos version 0.99.10 reports "Load error: no
  32. DPMI"
  33. 25. [26]INSTALL.EXE of Dos version 0.99.10 does not run in Windows NT
  34. 26. [27]I want a new version NOW
  35. 27. [28]Where can I find a text mode IDE for Dos
  36. 28. [29]How do I configure the Dos IDE
  37. 29. [30]Why are the generated binaries so big?
  38. 30. [31]Unit system, syslinux or syswin32 not found errors
  39. 1. What is Free Pascal(FPC) ?
  40. Originally named FPK-Pascal, the Free Pascal compiler is a 32 bit
  41. Turbo Pascal compatible Pascal compiler for DOS, Linux, Win32,
  42. OS/2 and (based on an older version) the AmigaOS. More Operating
  43. systems are in the works.
  44. The compiler is written in Pascal and is able to compile its own
  45. sources. The source files are included.
  46. Free Pascal requires a fast computer to run efficiently (386-25
  47. Mhz for the Intel version and ideally a 68020 processor for the
  48. Motorola version). At least 2 megabytes of RAM is required. To
  49. remake the compiler more than 16 is recommended.
  50. Short history:
  51. 6/1993 project start
  52. 10/1993 first little programs work
  53. 3/1995 the compiler compiles the own sources
  54. 3/1996 released to the internet
  55. probably 2000 1.0 version
  56. 2. Which versions exist, and which one should I use?
  57. Compilers with an even last number are release versions(e.g.
  58. 0.99.8, 0.99.10, 0.99.12 and 0.99.14)
  59. Compilers and packages with an odd last number are development
  60. versions (e.g. 0.99.9, 0.99.11, 0.99.13 and 0.99.15).
  61. 0.99.5 is an exception to this rule, since 0.99.5 IS a release (a
  62. release prior to the introduction of this odd/even system)
  63. Letters behind the version number (0.99.12b, 0.99.5d) indicate
  64. release versions with some bugs and problems in the original
  65. release (respectively 0.99.12 and 0.99.5) fixed.
  66. Normally you would want to use a release. Releases are considered
  67. stable, and easier to support. (the bugs, quirks and unintended
  68. "features" are wellknown after a period of time, and workarounds
  69. exist).
  70. Development snapshots which are generated daily reflect the
  71. current status of the compiler. Development versions probably have
  72. new features and larger bugs fixed since the last release, but
  73. might have some temporary stability drawbacks, (btw which are
  74. usually fixed quite soon)
  75. Most support for development snapshots are basically the advise to
  76. upgrading to newer snapshot in which the bugs are hopefully fixed.
  77. Since version 0.99.8 the stability of the compiler steadily
  78. increased, and development snapshots are often quite useful for
  79. certain categories of users. Ask in the maillists if it is worth
  80. the effort in your case.
  81. The current release version is 0.99.14 for the OS/2,Linux,Windows
  82. and Dos (Go32V2) targets,
  83. and 0.99.5d for the 680x0 based systems (mainly Amiga and Mac)
  84. The current development snapshot version is 0.99.13 or 0.99.15.
  85. 3. Known bugs
  86. Go to the [32]bugs page
  87. 4. Free Pascal and GNU Pascal - a comparison
  88. aim:
  89. Free Pascal tries to implement a Borland compatible
  90. pascal compiler on as many platforms as possible. GNU
  91. Pascal tries to implement a portable pascal compiler
  92. based on POSIX.
  93. Version:
  94. Currently, Free Pascal is at version 0.99.12 for the
  95. Intel version, and version 1.0 will be out soon, and
  96. version 0.99.5d for the Motorola/Intel version. Version
  97. 0.99.5d differs from version 0.99.5 in that all run time
  98. library fixes have been applied, as well as all known
  99. code generation bugs. Version 0.99.12 differs from
  100. version 0.99.5c in that all parser bugfixes have also
  101. been applied and also a lot of Delphi 2 and Delphi 3
  102. extensions have been implemented. GNU Pascal is at
  103. version 2.7.2 (but this numbering is not really an
  104. indication, it follows the GNU C numbering, since it is a
  105. derivation of it)
  106. Operating systems:
  107. Free pascal runs on a limited number of systems : DOS,
  108. Win32, Linux, OS/2 and AmigaOS and is for the moment
  109. limited to the Intel and Motorola architectures. GNU
  110. Pascal runs basically on any system that can run GNU C.
  111. Sources:
  112. Free Pascal is entirely written in Pascal (about 4 Mb of
  113. source code), while GNU Pascal is written in C (it's an
  114. adaptation of the GNU C compiler : 2.8 Mb code + 8 MB of
  115. GNU C code)
  116. Language:
  117. Free Pascal supports the Borland Pascal dialect Borland,
  118. and implements the Delphi Object PAscal language. GNU
  119. Pascal supports ISO 7185, ISO 10206, (most of) Borland
  120. Pascal 7.0
  121. Extensions:
  122. Free Pascal implements function overloading, and operator
  123. overloading). GNU Pascal implements operator overloading.
  124. License:
  125. Both compilers come under the GNU GPL.
  126. Author:
  127. Free Pascal was started by Florian Klaempfl, Germany
  128. ([email protected]), GNU Pascal was
  129. started by Jukka Virtanen, Finland, ([email protected]).
  130. 5. Where can I get the compiler ?
  131. Free Pascal is available for download from all [33]official
  132. mirrors
  133. 6. What are the considerations in porting code to other processors?
  134. Because the compiler now supports processors other than the Intel,
  135. it is important to take a few precautions so that your code will
  136. execute correctly on all processors.
  137. + Limit your use of asm statements unless it is time critical
  138. code
  139. + Don't use the packed directive unless you know exactly what
  140. you are doing. Most processors require alignment of data, and
  141. using packed on objects,classes and records may break this
  142. requirement. If this is the case your code will simply crash
  143. on the target processors.
  144. + Clean up at the end of your program, i.e close all files on
  145. exit, as some operating systems don't like it when some files
  146. are left opened.
  147. + Try not to rely on the endian of the specific machines when
  148. doing arithmetic operations. Furthermore, reading and writing
  149. of binary data to/from files will probably require byte swaps
  150. across different endian machines (swap is your friend in this
  151. case)
  152. + Try limiting your local variables in subroutines to 32K, as
  153. this is the limit of some processors, use dynamic allocation
  154. instead.
  155. + Try limiting the size of parameters passed to subroutines to
  156. 32K, as this is the limit of some processors, use const or
  157. var parameters instead.
  158. 7. I tried to compile my Delphi code with the Free Pascal Compiler,
  159. it seems that it doesn't recognize the OOP.
  160. The compiler supports the Delphi OOP. There may be some bugs, of
  161. course, You should try the -S2, -Sd or -So switches (see the
  162. manuals for the meaning of these switches)
  163. 8. I have to write a program for homework. Can you help?
  164. No. Please, don't send us mail about homework, we are no teachers.
  165. The Free Pascal development team tries to give good support for
  166. the Free Pascal compiler and are trying to always reply to emails.
  167. If we get emails like this, this becomes harder and harder.
  168. 9. How can I build a unit?
  169. It works like in Turbo Pascal. The first keyword in the file must
  170. be UNIT (not case sensitive). The compiler will generate two
  171. files: XXX.PPU and XXX.O. The PPU file contains the interface
  172. information for the compiler and the O-file the machine code (an
  173. object file, whose precise structure depends on the assembler you
  174. used). To use this unit in another unit or program, you must
  175. include its name in the USES clause of your program.
  176. 10. Will Free Pascal support TV (Turbo Vision) in the future?
  177. A Turbo Vision port, called Free Vision, has progressed nicely
  178. lately. It's already very usable, we are even writing an IDE in
  179. it. Due to copyrights problem the FreeVision source code is not
  180. available at the moment. You can download the IDE from the
  181. [34]development page. and get an idea of the look and feel though.
  182. 11. How can I compile the system unit ?
  183. To recompile the system unit, it is recommended to have GNU make
  184. installed. typing 'make' in the rtl source directory will then
  185. recompile all RTL units including the system unit. You may choose
  186. to descend into the directory of your OS (e.g. rtl/go32v2) and do
  187. a 'make' there.
  188. It is possible to do all this manually, but you need more detailed
  189. knowledge of the RTL tree structure for that.
  190. 12. I get an internal error 9999
  191. The latest versions of the Free Pascal Compiler come with a Error
  192. Handling routine which catches the segmentation fault, and lets
  193. the compiler exit gracefully. This is reported as an internal
  194. error 9999.
  195. Please try to reproduce the error and send [35]us a bug report.
  196. (For the curious, IE 9999 is not a specific bug. It is a safety
  197. measure which terminates if during compiling a certain condition
  198. is not met, which can be caused by several bugs. So if you report
  199. the bug, and get IE 9999 later in a different piece or part of
  200. sourcecode, it could be a completely different bug)
  201. 13. How does function overloading work?
  202. function overloading is implemented, like in C++:
  203. procedure a(i : integer);
  204. begin
  205. end;
  206. procedure a(s : string);
  207. begin
  208. end;
  209. begin
  210. a('asdfdasf");
  211. a(1234);
  212. end.
  213. You must be careful. If one of your overloaded functions is in the
  214. interface part of your unit, then all overloaded functions must be
  215. in the interface part. If you leave one out, the compiler will
  216. complain with a 'This overloaded function can't be local' message.
  217. Overloaded functions must differ in their parameters, it's not
  218. enough if their return types are different.
  219. 14. How can I call C functions ?
  220. C calling convention is implemented as follows: The compiler
  221. pushes the parameters from right to left, but the procedure has to
  222. clear the stack. For calling the C function strcmp declare the
  223. following:
  224. function strcmp(s1 : pchar;s2 : pchar) : integer;cdecl;external;
  225. Since 0.99.5, the older [C]; won't work!
  226. 15. When will Free Pascal use DJGPP 2.0 under DOS/Windows ?
  227. As of version 0.99.0 Free Pascal uses DJGPP 2.0. DJGPP v1.2
  228. support has been removed since version FPC 0.99.8.
  229. 16. How can I use the graph unit with Free Pascal ?
  230. Look at InitGraph.
  231. 17. Integrated Assembler syntax
  232. The default assembler syntax (AT&T style) is different from the
  233. one in Borland Pascal (Intel style).
  234. However, as of version 0.99.0, the compiler supports Intel style
  235. assembly syntax. See the documentation for more info on how to use
  236. different assembler styles.
  237. A description of the AT&T syntax can be found in the DJGPP FAQ
  238. [36]http://www.delorie.com/djgpp/v2faq/faq102.html#Syntax or in
  239. Brennan's Guide to Inline Assembly
  240. [37]http://www.rt66.com/~brennan/djgpp/djgpp_asm.html. The
  241. documentation also contains a chapter where the difference between
  242. the Intel and AT&T style assembly is explained.
  243. Or you can use the convertor program at
  244. http://rcs.urz.tu-dresden.de/ schoenfu/zip/asmtrans.zip.
  245. 18. How to access DOS memory / How to do graphics ?
  246. You can do like in TP, via absolute or mem, for larger blocks use
  247. the dosmemput/dosmemget routines in unit Go32
  248. 19. Free Pascal without a math coprocessor
  249. On the Intel version the emulator is automatically loaded by the
  250. compiler, the file is bin\emu387.
  251. SET GO32=EMU C:\PP\BIN\EMU387
  252. 20. Accessing more than 4 megabytes
  253. By default Free Pascal allocates only 4 meg. If it just allocated
  254. all it could get, people running windows would have problems as
  255. Windows would increase the swap file size to give the program more
  256. memory on and on, until the swap file drive would be full.
  257. You can specify the size of the heap with -Chxxxx. The default
  258. value is -Ch4000000. Try -Ch10000000, provided you got enough swap
  259. space.
  260. However, the heap size doesn't really matter anymore, since the
  261. Heap is able to grow. That is, if you've used all available heap
  262. space, the program will try to get more memory from the OS, thus
  263. the heap is limited to the maximum amount of free memory provided
  264. by the OS.
  265. 21. Access I/O ports
  266. If you're under DOS, you should use the outport* and inport*
  267. procedures of the go32 unit.
  268. Since version 0.99.8, the Port array is supported like in TP, as
  269. long as you use the ports unit in your program.
  270. 22. I'm using the Dos compiler under Windows 95
  271. There is a problem with the Dos compiler and Win 95 on computers
  272. with less than 16 MB. First set in the properties of the DOS box
  273. the DPMI memory size to max value. Now try to start a demo program
  274. in the DOS box, e.g. HELLO (starting takes some time). If this
  275. works you will be able to get the compiler to work by recompiling
  276. it with a smaller heap size, perhaps 2 or 4 MB (option -Chxxxx).
  277. 23. I'm using OS/2
  278. Problems have been reported that the Go32v2 compiler does not run
  279. on some OS/2 installations. You can use the native OS/2 compiler,
  280. or compile a GO32V1 compiler yourself.
  281. 24. INSTALL.EXE of Dos version 0.99.10 reports "Load error: no DPMI"
  282. The file cwsdpmi.exe is missing in the main directory of the zip
  283. archive. The above message pops up of no other DPMI services are
  284. available. Such services are for example available in a Dos window
  285. of Windows. You can either extract that file from basego32.zip or
  286. download it from
  287. [38]http://www.brain.uni-freiburg.de/~klaus/cwsdpmi.exe. Put it
  288. into the same directory as install.exe and run install again.
  289. 25. INSTALL.EXE of Dos version 0.99.10 does not run in Windows NT
  290. This is an incompatibility of the mouse driver. Use this new
  291. version of install.exe instead:
  292. [39]ftp://ftp.freepascal.org/pub/fpc/snapshot/install.exe
  293. 26. I want a new version NOW
  294. In the time between the release of new official versions, you can
  295. have a look at and test developer versions. Be warned though: this
  296. is work under progress, so in addition to old bugs fixed and new
  297. features added, this may also contain new bugs. The snapshot is
  298. generated automatically each night from the current source at that
  299. moment. Somethimes this may fail due to bigger changes not yet
  300. fully implemented. If your version doesn't work, try again one or
  301. two days later. Don't download the Go32V1 version for Dos, it's
  302. not supported any more.
  303. The latest snapshot can be downloaded from the [40]development web
  304. page.
  305. To install a snapshot, extract the zip archive into the existing
  306. program directory of the last official version of fee pascal
  307. (after making a backup of the original of course). Or extract it
  308. into an empty directory, then move the files to the program
  309. directory, overwriting existing files. Make sure that you extract
  310. the ZIP archiv such that the included directory structure remains
  311. intact, for example if you use PKUNZIP, use "pkuzip -d" instead of
  312. just "pkunzip".
  313. 27. Where can I find a text mode IDE for Dos
  314. The development of the IDE (integrated development environment) is
  315. not yet finished. However a working test version of the IDE is
  316. available as snapshot. It requires the latest compiler snapshot be
  317. installed on top of the last official Dos version 0.99.12 for
  318. Go32V2. So if you have not already done it, first install the last
  319. official version (file dos09912.zip or dos09912full.zip, you find
  320. these in the [41]download section). Then get and extract the
  321. latest Dos snapshot for DOS-GO32V2 (snapshot.zip) into the
  322. directory containing the last official version. Then do the same
  323. with one of the IDE snapshots (the debugger does not work very
  324. well yet, so start with the version "IDE with compiler"). For more
  325. details on where to find and how to install a snapshot, please see
  326. the previous FAQ item. For additional instructions for required
  327. IDE configuration please also read the next FAQ item.
  328. 28. How do I configure the Dos IDE
  329. Once you have installed the IDE (see the previous FAQ item), it
  330. requires two configuration changes before it can compile. This is
  331. due to the fact that the IDE includes its own compiler, it does
  332. not use ppc386.exe and thus it also does not use the configuration
  333. in the file ppc386.cfg. Thus if you try to compile, you get an
  334. error message telling that it can not compile the system unit. To
  335. fix this start fp.exe, select from the menu Compile, then Target
  336. then Go32V2. Next select the menu Options/Directories and in the
  337. line "Unit directories" enter the path to your copy of the rtl
  338. directory, usually c:\pp\units\go32v2\rtl. If you have done
  339. everything correct and it still doesn't work, you may have grabbed
  340. a snapshot that has a bug, in this case try again one or two days
  341. later.
  342. 29. Why are the generated binaries so big?
  343. There are several reasons and remedies for this.
  344. 1. If you are using 0.99.12: Due to some problems with the binary
  345. writer, the 0.99.12 and fixes weren't released with smartlinking
  346. RTLs. Smartlinking causes only actually used procedures, functions
  347. and constants to be linked in.
  348. You can remedy this by using a development version and creating a
  349. smartlinking RTL. See the [42]make cycle faq or use a later
  350. release if available.
  351. 2. Generating debug code (-g options) is enabled. Use the strip
  352. utility (or stripw for the windows platform) to remove the
  353. debuginformation.
  354. The utility is supplied with the releases, except under Linux were
  355. it is part of the GNU binutils package.
  356. 3. Under Dos(Go32V2) and windows targets you can use UPX to pack the
  357. .EXEs (just like e.g. pklite). The architecture of linux doesn't
  358. allow binary packing.
  359. 4. You can use LXLITE for packing EMX binaries, but you won't be able
  360. to run them under DOS any more then. It might even not be possible
  361. to use them on lower OS/2 versions (like 2.x) depending on chosen
  362. type of compression.
  363. 5. Turning on optimalisations, both for supplied packages
  364. (RTL,API,FV,FCL) as for your own code, will also decrease
  365. code-size.
  366. Unit system, syslinux or syswin32 not found errors
  367. System (syslinux, syswin32 depending on platform) is Pascal's base
  368. unit which is invisibly used in all programs. This unit defines
  369. several standard procedures and structures, and must be found to be
  370. able to compile any pascal program by FPC.
  371. The location of the system.ppu and syslinux.o files are determined by
  372. the -Fu switch which can be specified commandline, but is usually in
  373. the ppc386.cfg (Win32: ppc386w.cfg) configuration file.
  374. If the compiler can't find this unit there are three possible causes:
  375. 1. The ppc386.cfg isn't in the same path as the compiler (go32v2 and
  376. win32), or in /etc/ppc386.cfg or as .ppc386.cfg in your
  377. homedirectory (Linux).
  378. 2. The ppc386.cfg doesn't contain the -Fu line, or a wrong one. See
  379. the [43]make cycle faq specially the chapters about the ppc386.cfg
  380. and the directory structure.
  381. 3. The files ARE found but the wrong version or platform. Correct
  382. ppc386.cfg to point to the right versions, or reinstall the right
  383. versions.
  384. A handy trick can be executing "ppc386 programname -vt", this shows
  385. where the compiler is currently looking for the system unit's files.
  386. You might want to pipe this through more(dos,windows) or less(Linux),
  387. since it can generate more than one screen information:
  388. Dos,Windows:
  389. ppc386 programname -vt |more
  390. Linux:
  391. ppc386 programname -vt |less
  392. References
  393. 1. http://www.freepascal.org/faq.html
  394. 2. file://localhost/home/pfv/cvs/install/doc/faq.html#WhatIsFP
  395. 3. file://localhost/home/pfv/cvs/install/doc/faq.html#versions
  396. 4. file://localhost/home/pfv/cvs/install/doc/faq.html#KnownBugs
  397. 5. file://localhost/home/pfv/cvs/install/doc/faq.html#FPandGNUPascal
  398. 6. file://localhost/home/pfv/cvs/install/doc/faq.html#WhereToGetFP
  399. 7. file://localhost/home/pfv/cvs/install/doc/faq.html#PortabilityTips
  400. 8. file://localhost/home/pfv/cvs/install/doc/faq.html#OOP
  401. 9. file://localhost/home/pfv/cvs/install/doc/faq.html#HOMEWORK
  402. 10. file://localhost/home/pfv/cvs/install/doc/faq.html#HowcanIbuildaunit
  403. 11. file://localhost/home/pfv/cvs/install/doc/faq.html#TurboVision
  404. 12. file://localhost/home/pfv/cvs/install/doc/faq.html#CompileSystemUnit
  405. 13. file://localhost/home/pfv/cvs/install/doc/faq.html#Internalerror9999
  406. 14. file://localhost/home/pfv/cvs/install/doc/faq.html#Howdoesfunctionoverloadingwork
  407. 15. file://localhost/home/pfv/cvs/install/doc/faq.html#HowToCallCFuncuntions
  408. 16. file://localhost/home/pfv/cvs/install/doc/faq.html#DJGPP2support
  409. 17. file://localhost/home/pfv/cvs/install/doc/faq.html#HowToUseGraph
  410. 18. file://localhost/home/pfv/cvs/install/doc/faq.html#IntegratedAssemblerSyntax
  411. 19. file://localhost/home/pfv/cvs/install/doc/faq.html#HowToAccessDosMemory
  412. 20. file://localhost/home/pfv/cvs/install/doc/faq.html#FPwithoutfpu
  413. 21. file://localhost/home/pfv/cvs/install/doc/faq.html#AccessingMoreThan4MB
  414. 22. file://localhost/home/pfv/cvs/install/doc/faq.html#accessioports
  415. 23. file://localhost/home/pfv/cvs/install/doc/faq.html#ImusingWin95
  416. 24. file://localhost/home/pfv/cvs/install/doc/faq.html#ImusingOS2
  417. 25. file://localhost/home/pfv/cvs/install/doc/faq.html#dpmi
  418. 26. file://localhost/home/pfv/cvs/install/doc/faq.html#winnt
  419. 27. file://localhost/home/pfv/cvs/install/doc/faq.html#snapshot
  420. 28. file://localhost/home/pfv/cvs/install/doc/faq.html#ideinst
  421. 29. file://localhost/home/pfv/cvs/install/doc/faq.html#ideconfig
  422. 30. file://localhost/home/pfv/cvs/install/doc/faq.html#binariesbig
  423. 31. file://localhost/home/pfv/cvs/install/doc/faq.html#systemnotfound
  424. 32. http://www.freepascal.org/bugs.html
  425. 33. http://www.freepascal.org/download.html
  426. 34. http://www.freepascal.org/develop.html#snapshot
  427. 35. http://www.freepascal.org/moreinfo.html
  428. 36. http://www.delorie.com/djgpp/v2faq/faq102.html#Syntax
  429. 37. http://www.rt66.com/~brennan/djgpp/djgpp_asm.html
  430. 38. http://www.brain.uni-freiburg.de/~klaus/cwsdpmi.exe
  431. 39. ftp://ftp.freepascal.org/pub/fpc/snapshot/install.exe
  432. 40. http://www.freepascal.org/develop.html#snapshot
  433. 41. http://www.freepascal.org/download.html
  434. 42. http://www.freepascal.org/makecyc.html
  435. 43. http://www.freepascal.org/makecyc.html