Ok folks, I updated my first attempt at a FAQ a bit, and did some very crude Texification, so a html version exists too, which I sent to Peter for the homepages at agnes.dida.physik.uni-essen.de
Let me know if you find any errors or sections that need clarification.
JanJaap
This is Info file FAQ, produced by Makeinfo-1.64 from the input fil faq.texi
aq.texi. fo file FAQ, produced by Makeinfo-1.64 from the input file OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & Revision 0.2 of 24 October 199
Revision 0.2 of 24 October 1996 Makeinfo-1.64 from the input file OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & Author: J.J. van der Heijden <j.j.vanderheijden@student.utwente.nl
Author: J.J. van der Heijden j.j.vanderheijden@student.utwente.nl OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & What is GNU Pascal ******************
****************** der Heijden j.j.vanderheijden@student.utwente.nl OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & The purpose of the GNU Pascal project is to produce a Pascal compile (called GNU Pascal or GPC) whic
called GNU Pascal or GPC) which project is to produce a Pascal compiler OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & * combines the clarity of Pascal with powerful tools suitable fo real-life programming
real-life programming, Pascal with powerful tools suitable for ler OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & * supports both the Pascal standard and the Extended Pascal standar as defined by ISO, ANSI and IEEE. (ISO 7185:1990, ISO/IE 10206:1991, ANSI/IEEE 770X3.160-1989
10206:1991, ANSI/IEEE 770X3.160-1989) 7185:1990, ISO/IEC standard
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & * supports other Pascal standards (UCSD Pascal, Borland Pascal Pascal-SC) in so far as this serves the goal of clarity an usability
usability, in so far as this serves the goal of clarity and , dard
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & * may be distributed under GNU license condition
* may be distributed under GNU license conditions clarity and , dard
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & * can generate code and run on any computer for which the GNU compiler can generate code and run
compiler can generate code and run. puter for which the GNU C dard
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & Pascal was originally designed for teaching. GNU Pascal provides smooth way to proceed to challenging programming tasks without learnin a completely different language
completely different language. ing programming tasks without learning
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & What is the current version of GNU Pascal =========================================
========================================= mming tasks without learning
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & The last official release is GPC 1.1, based on GCC version 2.6.3 GPC version 1.2, based on GCC 2.7.2 is currently in beta testing
PC version 1.2, based on GCC 2.7.2 is currently in beta testing. 3. ng
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & Where is the GNU Pascal FTP site? WWW =====================================
===================================== currently in beta testing. 3. ng
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & The master FTP site for GNU Pascal is kampi.hu.fi GNU Pascal relate files can be found in
iles can be found in: for GNU Pascal is kampi.hu.fi GNU Pascal related
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & ftp://ftp.kampi.hut.fi/jtv/gnu-pascal
ftp://ftp.kampi.hut.fi/jtv/gnu-pascal/ pi.hu.fi GNU Pascal related
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & This site is mirrored on
This site is mirrored on: tv/gnu-pascal/ pi.hu.fi GNU Pascal related
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & ftp://sunsite.doc.ic.ac.uk/gnu/pascal
ftp://sunsite.doc.ic.ac.uk/gnu/pascal/ pi.hu.fi GNU Pascal related
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & The latest developer releases can be downloaded from
The latest developer releases can be downloaded from: Pascal related
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & ftp://agnes.dida.physik.uni-essen.de
ftp://agnes.dida.physik.uni-essen.de/ nloaded from: Pascal related
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & Also, we have a homepage on the web
Also, we have a homepage on the web: e/ nloaded from: Pascal related
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & http://agnes.dida.physik.uni-essen.de/~gnu-pascal
http://agnes.dida.physik.uni-essen.de/~gnu-pascal/
Pascal related
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & Is it compatible with Turbo Pascal (R) =======================================
======================================= e/~gnu-pascal/
Pascal related
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & GPC is currently *not* a drop-in replacement for Borland's Turb Pascal (R). It supports a number, but not all of the Borlan extensions to the Pascal language. There is no replacement for most o the Borland runtime library functions. GNU Pascal is part of the GN project, so portability is one of its primary goals. For this reason non-portable features of Borland Pascal will probably not be include into GNU Pascal. More information can be found in the section "Borlan Pascal" of the GPC manual
ascal" of the GPC manual. mation can be found in the section "Borland
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & Installation related question *****************************
***************************** on can be found in the section "Borland
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & This section discusses some common problems with the installation o GNU Pascal
NU Pascal. ion discusses some common problems with the installation of
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & Which platforms are supported by GNU Pascal ===========================================
=========================================== s with the installation of
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & GPC uses the GCC backend, so it should run on any system that i supported by GNU CC. This includes a large variety of Unix systems MS-DOS, OS/2 and Win32. A full list of platforms supported by GCC ca be found in the file "INSTALL" of the GCC distribution. Not all o these have actually been tested, but the gpc-1.2 pre-release is know t run on these platforms
un on these platforms: tested, but the gpc-1.2 pre-release is know to
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & i486-linux (Linux 2.x, ELF i486-linuxaou i486-linuxoldl i486-freebsd2. i386-cygwin32 (Windows95/Windows NT i386-djgppv2 (MS-DOS i386-emx (OS/2, MS-DOS mips-sgi-irix5.
mips-sgi-irix5.3 (OS/2, MS-DOS) ows NT) -release is know to
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p &
Ok people - send us your success stories, with canonical machin
name! <<
ame! <<< people - send us your success stories, with canonical machine
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & Which components do I need to compile Pascal source code ========================================================
======================================================== nical machine
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & A complete Pascal compiler system should at least have
A complete Pascal compiler system should at least have: ical machine
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & * The actual compiler, GPC
* The actual compiler, GPC. ystem should at least have: ical machine
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & * Assembler, linker, librarian and friends
* Assembler, linker, librarian and friends. least have: ical machine
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & * A C library
* A C library. nker, librarian and friends. least have: ical machine
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & * A debugger, if you want to debug your programs
* A debugger, if you want to debug your programs. have: ical machine
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & You don't need a C compiler to compile your Pascal programs, but yo do need it to build the GNU Pascal compiler itself. GNU Pascal versio 1.1 is based on GCC 2.6.3, GPC v1.2 is based on GCC v2.7.2 Any attemp to build GPC with the wrong version of GCC is bound to fail
o build GPC with the wrong version of GCC is bound to fail. y attempt
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & For most people, the GNU binutils and GNU debugger (gdb) are a goo choice, although some may prefer to use vendor specific tools
hoice, although some may prefer to use vendor specific tools. a good
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & Help! linking gpc1 fails: _emit_string_move undefined (and more ===============================================================
=============================================================== good
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & If linking `gpc1' bombs out with an error message that looks lik this
his: linking `gpc1' bombs out with an error message that looks like d
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & ld: Undefined symbo _emit_string_mov _emit_string_pa _maybe_find_function_dat _dbxout_set_type_statu _version_fla *** Error code make: Fatal error: Command failed for target `gpc1
make: Fatal error: Command failed for target `gpc1' ks like d
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & you probably suffer from a VPATH make problem. A few GPC sourc files have counterparts with identical name in the GCC sourc directory. When you have built GCC in the GCC source directory and yo are not using a recent version of GNU make this problem may occur There are three solutions
here are three solutions: ion of GNU make this problem may occur. you
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & * Get a recent version of GNU make. Version 3.74 or better is know to work
to work. ent version of GNU make. Version 3.74 or better is known
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & * Build GCC in a seperate directory instead of using the GCC sourc directory
directory. n a seperate directory instead of using the GCC source
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & * Manually delete these files from the GCC object directory
* Manually delete these files from the GCC object directory: source
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & `stor-layout.o dbxout.o expr.o fold-const.o optabs.o convert.o `function.o setop.o toplev.o
`function.o setop.o toplev.o' fold-const.o optabs.o convert.o' e
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & then resume `make'
then resume `make'. toplev.o' fold-const.o optabs.o convert.o' e
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & When I build libgpc.a, rts-rt0.c says: SIGXCPU undefined (and more ==================================================================
==================================================================
e
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & Compilation of the runtime system may fail in rts-rt0.c with message simular to this
essage simular to this: time system may fail in rts-rt0.c with a =
e
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & rts-rt0.c: `SIGXCPU' undeclared (first use this function or rts-rt0.c: storage size of `sv' isn't know rts-rt0.c: storage size of `osv' isn't know
rts-rt0.c: storage size of `osv' isn't known is function) a =
e
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & If this happens to you, you have to edit the rts/rts-config.h fil and comment out the last line to
nd comment out the last line to: e to edit the rts/rts-config.h file
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & /* #undef HAVE_SIGSYS *
/* #undef HAVE_SIGSYS */ to: e to edit the rts/rts-config.h file
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & This will be fixed in a future release
This will be fixed in a future release. the rts/rts-config.h file
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & I'm using unix, and all my Pascal programs have linking problems ================================================================
================================================================ ile
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & A number of unix configurations use their system's linker instead o GNU ld. Usually, GPC and GCC need a program called `collect2' befor calling the system's `ld'. `collect2' is installed by GCC, and if yo only install GPC, it will not find collect2, and use the system linke directly, which will result in various linker errors. The solution i to copy `collect2' by hand from the GCC directory to the location wher `gpc1' lives
gpc1' lives. ct2' by hand from the GCC directory to the location where
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & I do I debug my Pascal programs ===============================
=============================== he GCC directory to the location where
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & To debug your programs, (a) GNU Pascal must be able to generat executables with debug info for your platform, and (b) you must have debugger which understands this
ebugger which understands this. our platform, and (b) you must have a
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & * If `gpc -g -o hello hello.p' says: "gpc: -g not supported for thi platform", then GPC is unable to generate debug info. Usually installing GAS instead of your system's assembler can overcom this. When you configure the GCC used for GPC, specif "-with-gnu-as", and possibly "-with-gnu-ld" and/or "-with-stabs" More information can be found in "INSTALL" file in the GNU C source directory
source directory. an be found in "INSTALL" file in the GNU CC s".
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & * Your system's debugger may not understand the debug info generate by GNU tools. In this case, installing GDB may help
by GNU tools. In this case, installing GDB may help. nfo generated
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & The bottom line: if you can debug GCC compiled programs, you shoul be able to do this with GPC too
e able to do this with GPC too. bug GCC compiled programs, you should
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & The GNU debugger (GDB) currently does not have a "Pascal" mode, s it is unable to display certain Pascal structures etc. When debugging please note that the Initial Letter In Each Identifier Is In Upper Cas And The Rest Are In Lower Case. If you want to display variable 'foo in the debugger, type `show Foo' or `display Foo' instead
n the debugger, type `show Foo' or `display Foo' instead. able 'foo' e
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & Can you recommend an IDE ========================
======================== w Foo' or `display Foo' instead. able 'foo' e
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & Users of Borland Pascal may wonder if there's a replacement for th IDE (Integrated Development Environment). Here's a few suggestions
DE (Integrated Development Environment). Here's a few suggestions: he
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & * *(X)Emacs*. Some people think it's the answer to the question o Life, the Universe and Everything, others decide it's uGNUsable Available from your friendly GNU mirror
Available from your friendly GNU mirror. decide it's uGNUsable.
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & * *XWPE* is an immitation of the Borland IDE, so users of Borlan Pascal may find it a good alternative
Pascal may find it a good alternative. IDE, so users of Borland
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & Although GDB is an excellent debugger, it's user interface is no very attractive. Refer to the comp.windows.x FAQ: "Where can I get a X-based debugger?" at
-based debugger?" at: to the comp.windows.x FAQ: "Where can I get an
OF Z tY 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & http://www.cis.ohio-state.edu/hypertext/faq/usenet/x-faq/part6/faq-doc-2.htm
http://www.cis.ohio-state.edu/hypertext/faq/usenet/x-faq/part6/faq-doc-2.htm... 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & Some useful frontends include: XXGDB, tGDB and XWPE. see
Some useful frontends include: XXGDB, tGDB and XWPE. see: /part6/faq-doc-2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & http://www.ee.ryerson.ca:8080/~elf/xapps/Q-IV.htm
http://www.ee.ryerson.ca:8080/~elf/xapps/Q-IV.html see: /part6/faq-doc-2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & Very nice, but resource consuming is the Motif based DDD
Very nice, but resource consuming is the Motif based DDD: /part6/faq-doc-2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & http://sol.ibr.cs.tu-bs.de/softech/ddd
http://sol.ibr.cs.tu-bs.de/softech/ddd/ otif based DDD: /part6/faq-doc-2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & Do we have a binary for you ===========================
=========================== de/softech/ddd/ otif based DDD: /part6/faq-doc-2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & Currently, we have binaries for these platforms
Currently, we have binaries for these platforms: sed DDD: /part6/faq-doc-2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & i486-linux (ELF i486-linuxaou i486-linuxoldl djgpp V2 (msdos emx 0.9B (OS/2, msdos cygwin32 beta16 (Windows95, Windows NT mips-sgi-irix5.
mips-sgi-irix5.3 (Windows95, Windows NT) ms: sed DDD: /part6/faq-doc-2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & New binaries may have been added after the release of this FAQ
New binaries may have been added after the release of this FAQ. /faq-doc-2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & GNU Pascal and your system librarie ***********************************
*********************************** fter the release of this FAQ. /faq-doc-2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & This section discusses common problems people have when they try t access their system's libraries
ccess their system's libraries. problems people have when they try to -doc-2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & How do I use <insert_your_function_here> from the C library ===========================================================
=========================================================== ey try to -doc-2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & GNU Pascal can use every function of your C library, but it may b up to you to write declaration of an external function, before you ca use it. Consider the function `sleep'. man(3) sleep reveals
se it. Consider the function `sleep'. man(3) sleep reveals: you can -doc-2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & -------------------------------------------------------- NAM sleep - Sleep for the specified number of second
SYNOPSI #include <unistd.h
unsigned int sleep(unsigned int seconds) --------------------------------------------------------
--------------------------------------------------------- you can -doc-2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & This small demo program shows how to use `sleep' in a Pascal program
This small demo program shows how to use `sleep' in a Pascal program: oc-2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & -------------------------------------------------------- program SleepDemo
typ word = __unsigned__ integer
function sleep(seconds: word): word; C
va result : word
begi result := sleep(10) end --------------------------------------------------------
--------------------------------------------------------- program: oc-2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & What's this confusion about Pascal and C style strings ======================================================
====================================================== ------ program: oc-2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & It is important not to confuse Pascal and C string types
It is important not to confuse Pascal and C string types. - program: oc-2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & * The Pascal string schema, as defined in section 6.4.3.3.3 of th ISO-10206:1990 Extended Pascal standard, is a record
ISO-10206:1990 Extended Pascal standard, is a record: 3.3 of the m: oc-2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & type string = recor Capacity : integer length : integer string : packed array [ 1..Capacity ] of char end
end; ing : packed array [ 1..Capacity ] of char; -2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & 'string' is not 'string(256)', unlike Turbo Pascal. The capacict must be declared
must be declared: ing(256)', unlike Turbo Pascal. The capacicty ar; -2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & typ MyString = string(256)
MyString = string(256); unlike Turbo Pascal. The capacicty ar; -2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & before it can be used, i.e.
before it can be used, i.e.: ; unlike Turbo Pascal. The capacicty ar; -2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & function MyFunction: MyString
function MyFunction: MyString; Turbo Pascal. The capacicty ar; -2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & * A C string ( "char *" ) is an array of char, terminated with NULL char
NULL char. ( "char *" ) is an array of char, terminated with a ty ar; -2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & C library functions require C, not Pascal style string arguments Consider this code snippet to convert Pascal style strings to C styl and vice versa
nd vice versa: de snippet to convert Pascal style strings to C style
ar; -2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & -------------------------------------------------------- typ word = __unsigned__ integer TString = string(256); { Pascal string schema CString = __cstring__; { C style string
{ Convert a "C" string to a "Pascal" string function StrPas(Src: CString): TString va S : TString begi S := '' if (Src <> NIL then while ( (Src^ <> chr(0)) AND (length(S) < S.capacity)) d begi S := S + Src^ inc(Word(Src)) end StrPas := S end
{ Convert a "Pascal" string to a "C" string function StrPCopy(Dest: CString; Src: String): CString va c: integer p : CString begi p := Dest for c:=1 to length(Src) d begi p^ := Src[c] inc(word(p)) end p^ := chr(0) StrPCopy := Dest end --------------------------------------------------------
--------------------------------------------------------- y)) do
ar; -2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & Then this small example will print the PATH
Then this small example will print the PATH: -------------- y)) do
ar; -2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & -------------------------------------------------------- Program EnvDemo
{ include the above StrPas() and StrPCopy() snippet here
{ C library function prototype: char *getenv(const char *name); function GetEnv(name : CString): CString; C
va pName: CString
begi getmem(pName, 256)
pName := StrPCopy(pName, 'PATH') writeln('Your PATH is: ', StrPas(GetEnv(pName)))
freemem(pName, 256) end --------------------------------------------------------
--------------------------------------------------------- ame); } ar; -2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & And this is how you access the 'system()' call in you C library
And this is how you access the 'system()' call in you C library: } ar; -2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & -------------------------------------------------------- program SysCall
{ include the above StrPas() and StrPCopy() snippet here
function system(name : CString): integer; C
va pName: CString result : integer
begi getmem(pName, 256)
pName := StrPCopy(pName, 'ls -l') result := system(pName) writeln('system() call returned : ', result)
freemem(pName, 256) end --------------------------------------------------------
---------------------------------------------------------
ry: } ar; -2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & There may be other ways to do the same thing; you could declare type PChar instead of CString
ype PChar instead of CString: o the same thing; you could declare a } ar; -2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & type PChar = ^char
type PChar = ^char; ring: o the same thing; you could declare a } ar; -2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & and replace all references to `CString' with `PChar'. Do NOT pass "C" style string as a var-argument if the C prototype says "const cha *" or you will get a coredump
" or you will get a coredump. ent if the C prototype says "const char ar; -2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & You are right if you think this stuff belongs in a library, to b distributed with GPC. Have patience, or start coding
istributed with GPC. Have patience, or start coding! library, to be r ar; -2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & Are GNU Pascal objects compatible with GNU C++ classes =======================================================
======================================================= rary, to be r ar; -2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & No. (This may change in a future version
No. (This may change in a future version) =========== rary, to be r ar; -2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & Where are the Turbo Pascal (R) replacement units ================================================
================================================ ====== rary, to be r ar; -2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & They don't exist (yet). Most of their fuctionality can easily b implemented, some things are very x86/msdos dependant and would b meaningless on any other platform
eaningless on any other platform. 86/msdos dependant and would be
r ar; -2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & How do I build/use a shared library ===================================
=================================== /msdos dependant and would be
r ar; -2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & (topic under construction
(topic under construction) ====== /msdos dependant and would be
r ar; -2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & GNU Pascal on the djgpp (MS-DOS) platfor ****************************************
**************************************** s dependant and would be
r ar; -2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & This chapter discusses some potential problems with GNU Pascal o MS-DOS, using djgpp
S-DOS, using djgpp. sses some potential problems with GNU Pascal on r ar; -2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & If you need more informatio ===========================
=========================== e potential problems with GNU Pascal on r ar; -2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & GPC/djgpp is a djgpp V2 application, and most of the djgp documentation applies for GPC too. A great source of information is th djgpp FAQ
jgpp FAQ: on applies for GPC too. A great source of information is the r; -2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & http://www.delorie.com/djgpp/v2faq/faq202b.zi
http://www.delorie.com/djgpp/v2faq/faq202b.zip information is the r; -2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & Another place to look for DJGPP documentation is the DJGPP Knowledg Base, at this URL
ase, at this URL: look for DJGPP documentation is the DJGPP Knowledge r; -2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & http://www.delorie.com/djgpp/doc/kb
http://www.delorie.com/djgpp/doc/kb/ tation is the DJGPP Knowledge r; -2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & What do I download ==================
================== rie.com/djgpp/doc/kb/ tation is the DJGPP Knowledge r; -2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & As discussed in section 2.2, other than GPC itself, you need a assembler, linker and friends, a C library and possibly a debugger
From your local djgpp mirror, you can get these as
rom your local djgpp mirror, you can get these as: bly a debugger. dge r; -2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & v2/djdev200.zip (C library v2gnu/bnu252b.zip (assembler, .... v2gnu/gdb412b.zip (debugger
v2gnu/gdb412b.zip (debugger) ....) as: bly a debugger. dge r; -2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & The rest is up to you; 'make' (v2gnu/mak372b.zip) can be useful RHIDE (an IDE with Borland-look) is nice, but still under development Future releases of RHIDE may have better GPC support
uture releases of RHIDE may have better GPC support. der development.
r; -2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & How do I install the compiler =============================
============================= ve better GPC support. der development.
r; -2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & If you don't have djgpp installed on your harddisk, create directory for GNU pascal ("c:\gpc"), and unzip the archives. Make sur you preserve the directory structure (use "pkunzip -d"). Now, add th directory where gpc.exe lives ("c:\gpc\bin") to your path and set th DJGPP environment variable to point to your djgpp.env file
JGPP environment variable to point to your djgpp.env file: d set the
r; -2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & set DJGPP=c:\gpc\djgpp.en
set DJGPP=c:\gpc\djgpp.env int to your djgpp.env file: d set the
r; -2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & Then, add this to your djgpp.env file
Then, add this to your djgpp.env file: r djgpp.env file: d set the
r; -2.html 'J& pY L& < 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & -------------------------------------------------------- [gpc-cpp C_INCLUDE_PATH=%/>;C_INCLUDE_PATH%%DJDIR%/lang/pascal;%DJDIR%/include;%DJDIR%/contrib/grx20/includ
[gpc COMPILER_PATH=%/>;COMPILER_PATH%%DJDIR%/bi LIBRARY_PATH=%/>;LIBRARY_PATH%%DJDIR%/lib;%DJDIR%/contrib/grx20/li --------------------------------------------------------
--------------------------------------------------------- grx20/lib e;%DJDIR%/contrib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & The binary distribution should come with a `djgpp.env' which i already modified, so you may not have to do this
lready modified, so you may not have to do this. pp.env' which is 0/lib e;%DJDIR%/contrib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & Specific information for low-memory conditions and more can be foun in the djgpp FAQ and documentation
n the djgpp FAQ and documentation. ry conditions and more can be found
e;%DJDIR%/contrib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & GPC says: no DPM ================
================ nd documentation. ry conditions and more can be found
e;%DJDIR%/contrib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & You don't have a DPMI server installed, and DJGPP v2 requires it t run. You can either use one of the commercial DPMI servers (e.g., ru `gpc' in a DOS box under Windows) or download and install CWSDPM (`csdpmi3b.zip') which is a free DPMI server written for DJGPP
`csdpmi3b.zip') which is a free DPMI server written for DJGPP. I run
e;%DJDIR%/contrib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & I cannot read the info pages ============================
============================ ee DPMI server written for DJGPP. I run
e;%DJDIR%/contrib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & To read the info pages, you need the `info' program from txi360b.zip At least for some of the pre-releases of gpc-1.2, the gpc.info file i invalid: it refers to the "gpc.i*" sections as "gpc.info-*". This can b fixed by loading gpc.inf in an editor and replacing "gpc.info-*" wit "gpc.i*
gpc.i*" loading gpc.inf in an editor and replacing "gpc.info-*" with be e;%DJDIR%/contrib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & I have troubles with assembly cod =================================
================================= or and replacing "gpc.info-*" with be e;%DJDIR%/contrib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & The GNU Assembler (`as.exe'), or `gas', called by GCC accepts "AT&T syntax which is different from "Intel" syntax. Differences ar discussed in section 17.1 of the djgpp FAQ
iscussed in section 17.1 of the djgpp FAQ. x. Differences are s "AT&T"
e;%DJDIR%/contrib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & A guide is available which was written by Brennan Mr. Wacko Underwoo brennan@mack.rt66.com and describes how to use inline assembl programming with DJGPP, at this URL
rogramming with DJGPP, at this URL: how to use inline assembly derwood e;%DJDIR%/contrib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & http://www.rt66.com/~brennan/djgpp/djgpp_asm.htm
http://www.rt66.com/~brennan/djgpp/djgpp_asm.html assembly derwood e;%DJDIR%/contrib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & Section 17.3 of the djgpp FAQ discusses some methods to conver "Intel" syntax to "AT&T"
Intel" syntax to "AT&T". pp FAQ discusses some methods to convert rwood e;%DJDIR%/contrib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & Tell me how to do DPMI, BIOS and other DOS related things =========================================================
========================================================= convert rwood e;%DJDIR%/contrib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & DPMI, BIOS and other functions are no different than other syste functions. Refer to section 3.1 how to access your system's C-library This small example shows how to use DPMI, copying some structures an function prototypes of <dpmi.h>
unction prototypes of <dpmi.h>: se DPMI, copying some structures and
d e;%DJDIR%/contrib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & -------------------------------------------------------- program dpmitest
{$X+
typ word = __unsigned__ integer short = __short__ integer byte = __byte__ integer
typ PDpmiVersionRet = ^TDpmiVersionRet TDpmiVersionRet = recor major : byte minor : byte flags : short cpu : byte master_pic : byte slave_pic : byte end
typ PDpmiFreeMemInfo = ^TDpmiFreeMemInfo TDpmiFreeMemInfo = recor largest_available_free_block_in_bytes : word maximum_unlocked_page_allocation_in_pages : word maximum_locked_page_allocation_in_pages : word linear_address_space_size_in_pages : word total_number_of_unlocked_pages : word total_number_of_free_pages : word total_number_of_physical_pages : word free_linear_address_space_in_pages : word size_of_paging_file_partition_in_pages : word reserved1 : byte reserved2 : byte reserved3 : byte end
function DpmiGetVersion(ret: PDpmiVersionRet): integer asmname '__dpmi_get_version' function DpmiGetFreeMemoryInformation(info: PDpmiFreeMemInfo): integer asmname '__dpmi_get_free_memory_information'
va version: TDpmiVersionRet meminfo: TDpmiFreeMemInfo
begi DpmiGetVersion(@version) writeln('CPU type : ', version.cpu, '86') writeln('DPMI major : ', version.major) writeln('DPMI minor : ', version.minor)
DpmiGetFreeMemoryInformation(@meminfo) writeln('Free DPMI memory : ', meminfo.total_number_of_free_pages, ' pages.') end --------------------------------------------------------
--------------------------------------------------------- ree_pages, ' pages.'); trib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & I'm accessing an "array[1..4000000] of byte" and I got an exception ===================================================================
=================================================================== ges, ' pages.'); trib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & Per default, the maximum stack size of a djgpp application is 256K If you need more, you have to adjust it with the stubedit program, i.e.
f you need more, you have to adjust it with the stubedit program, i.e.: ' pages.'); trib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & stubedit your_app.exe minstack=5000
stubedit your_app.exe minstack=5000K th the stubedit program, i.e.: ' pages.'); trib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & Still, it might be a good idea to use pointers for this kind o structures, and allocate the memory at runtime
tructures, and allocate the memory at runtime. s for this kind of i.e.: ' pages.'); trib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & Getting Hel ***********
*********** nd allocate the memory at runtime. s for this kind of i.e.: ' pages.'); trib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & This section discusses ways to get help with GNU Pascal. Please rea the documentation (info files, readme's) that come with GPC, plus othe docs that might help (the djgpp FAQ if you use djgpp etc.) before yo send email to the maintainers or mailing list
end email to the maintainers or mailing list. djgpp etc.) before you r
' pages.'); trib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & Help! the compiler crashed ==========================
========================== s or mailing list. djgpp etc.) before you r
' pages.'); trib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & If the compiler crashes, you have discovered a bug. A reliabl compiler never crashes. To help the maintainers fix this bug, it i important that you send us a problem report
mportant that you send us a problem report. rs fix this bug, it is u r
' pages.'); trib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & I think I found a bug - now what ================================
================================ em report. rs fix this bug, it is u r
' pages.'); trib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & Bugs are best reported to the GPC mailinglist, gpc@hut.fi. Tha way, they always reach the maintainers. Try to give as much informatio as possible, plus a short code snippet that triggers the compiler bug If you're on unix, you can find out where the compiler crashed if yo enable coredumps, then load the compiler (gpc1) plus the core file i the debugger ("gdb /your_path_here/gpc1 core"), then type `backtrace to get a stacktrace. Include this stacktrace in your bug report
o get a stacktrace. Include this stacktrace in your bug report. ace'
' pages.'); trib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & Which newsgroup(s) are suited for GPC related problems ======================================================
====================================================== report. ace'
' pages.'); trib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & There are several Pascal related newsgroups, but none is dedicate just to GNU Pascal. This one may be useful
ust to GNU Pascal. This one may be useful: ps, but none is dedicated
' pages.'); trib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & comp.lang.pascal.misc Pascal in general and ungrouped Pascals
comp.lang.pascal.misc Pascal in general and ungrouped Pascals. pages.'); trib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & Pascal syntax related questions may be appropriate in
Pascal syntax related questions may be appropriate in: ngrouped Pascals. pages.'); trib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & comp.lang.pascal.ansi-iso Pascal according to ANSI and ISO standards comp.lang.pascal.borland Borland Pascal questions
comp.lang.pascal.borland Borland Pascal questions. nd ISO standards. es.'); trib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & How to post to the mailing lis ==============================
============================== Borland Pascal questions. nd ISO standards. es.'); trib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & You can send a message to the GPC mailing list by sending email t the list address gpc@hut.fi as if it were a person
he list address gpc@hut.fi as if it were a person. ending email to andards. es.'); trib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & How to become a subscriber to the mailing lis =============================================
============================================= erson. ending email to andards. es.'); trib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & You can join the mailing list by sending a message t gpc-request@hut.fi (NOT gpc@hut.fi !) with your request to be adde to the list. Maintenance is done by hand, so some delay is possible
o the list. Maintenance is done by hand, so some delay is possible. ed dards. es.'); trib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & How to unsubscribe from the mailing lis =======================================
======================================= so some delay is possible. ed dards. es.'); trib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & To leave the mailing list, send a message to gpc-request@hut.fi
To leave the mailing list, send a message to gpc-request@hut.fi. d dards. es.'); trib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & Miscellaneou ************
************ e mailing list, send a message to gpc-request@hut.fi. d dards. es.'); trib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & I want to contribute; where do I start ======================================
====================================== sage to gpc-request@hut.fi. d dards. es.'); trib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & A list of jobs which should be done for GNU-Pascal can be found i the section "How to contribute of the Texinfo deocumentation. In case where somebody is already working on a topic, the name of that perso is written behind the job's description
s written behind the job's description. pic, the name of that person s dards. es.'); trib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & This does not mean that you shouldn't do that but just that yo should get in contact with that person if you would like to contribut to that field
o that field. ontact with that person if you would like to contribute
dards. es.'); trib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & About this FAQ ==============
============== ntact with that person if you would like to contribute
dards. es.'); trib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & Maintainer: J.J. van der Heijde <j.j.vanderheijden@student.utwente.nl
j.j.vanderheijden@student.utwente.nl> if you would like to contribute
dards. es.'); trib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & This is the first incarnation of the GNU Pascal FAQ list. Comment about, suggestions for, or corrections to this FAQ list are welcome
bout, suggestions for, or corrections to this FAQ list are welcome.
dards. es.'); trib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & Please make sure to include in your mail the version number of th document to which your comments apply (you can find the version at th beginning of this FAQ list)
eginning of this FAQ list). ts apply (you can find the version at the
dards. es.'); trib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & Much of the info in this FAQ list was taken from the gpc mailin list traffic, so you may have (unbeknownst to you) contributed to thi list
ist. raffic, so you may have (unbeknownst to you) contributed to this
dards. es.'); trib/grx20/include 'J& pYd' : 'J&J& > 'J& (J& 3 ' :8 *J& (J&J& WriteString &4 : 'J& pY ' :8 'J& p p p p p p p p p p p p p p p p p p p p & --- "Nothing shocks me, I'm a scientist", Indiana Jones