Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-devel / 2002-03

Version 1.0.6 Prerelease is out !

18 messages · 7 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Michael Van Canneyt

Hello,

Finally it has happened:

The FPC team is pleased to announce the pre release of FPC Pascal v1.0.6, which is an updated and fixed version of the of the previous v1.0 release v1.0.4 which was released in early 2001. Many parts of v1.0.6 have been available for some time in the form of snapshots, which have been used and extensively tested. This pre release is being announced to a restricted set of potential users (FPC-devel & FPC-pascal), so that we can do some pre release testing, to identify and fix any last minute problems. It will form the actual release v1.0.6 in a few (2?) weeks, depending on the number of problems found.

The versions available are dos (go32v2), win32, linux, os2, freebsd, beos, sunos/Solaris, netbsd (beta). These are available from the freepascal ftp site:
ftp://ftp.freepascal.org/pub/fpc/dist

And in the appropriate sub folder (alphabetically):

BeOS: ftp://ftp.freepascal.org/pub/fpc/dist/beos-1.0.6 BSD: ftp://ftp.freepascal.org/pub/fpc/dist/freebsd-1.0.6 DOS: ftp://ftp.freepascal.org/pub/fpc/dist/dos-1.0.6 Linux: ftp://ftp.freepascal.org/pub/fpc/dist/linux-1.0.6 OS/2 ftp://ftp.freepascal.org/pub/fpc/dist/os2-1.0.6 SunOS: ftp://ftp.freepascal.org/pub/fpc/dist/sunos-1.0.6 Win32: ftp://ftp.freepascal.org/pub/fpc/dist/win32-1.0.6

These links are not yet published on the Web site, please use the above URLs.

Normally the distributions are packaged both as a single large zip and as separate smaller zips. They will also be available from the FPC mirrors. It may take an day or so for all of the mirrors to get the pre-release, so please be patient.

The FPC team would be really grateful if you'd try these - it is a chance to ensure that the v1.0.6 release is as good as possible - including (especially!) the installation procedures and documentation. Please report any problems (or unwanted 'features') to the FPC-devel mailing list as soon as possible, together with the operating system, FPC file name & date, description of the problem and a small fragment of the code that gives the problem if possible.

Here is a summary of the updates & major fixes since the v1.0.4 release: -----------------------------------------------------------------------

Compiler:
+ NetBSD, BeOS, QNX and Sunos/Solaris for i386 support
+ m68k code generator (beta quality)
* ppc386.cfg renamed to fpc.cfg
* fpu overflow fixed
* better typecast checking
* better checking if passing a constant to a variable argument
* procedure variable handling fixes
* procedure inlining fixes
* shared library has now initialization of the rtl
* failed execution of tools (assembler, linker) now give errors
* range checking now works correctly for cardinal and 64 bit operations
* fixed crashing on 386 processors
* fixed a lot of reported bugs

IDE:
+ regular expressions for find
+ disassembler window
* winXP/Win2000 fixes
* fixed a lot of reported bugs

RTL:
+ NetBSD, BeOS, QNX and Sunos/Solaris for i386 support
+ added PathDelim,DriveDelim,PathSep variables
+ keyboard, mouse and video units updates
* append() returns error if file doesn't exists
* winXP fixes for go32v2 mouse
* lot of updates to make the RTL easier to port
* bug fixes

FCL:
* small bug fixes

Docs:
+ compiler internals documentation (available through ftp site)
* programmer's reference update

Utils:
* h2pas updates

-----------------------------------------------------------------------

If all goes well, in 2 weeks the final release will be made, uploaded and anounced on several public places.

Enjoy !

The FPC team.

Reply by email

Klaus Hartnegg
to Michael Van Canneyt

downloaded fpc106.zip, unzipped it, ran install, accepted all defaults result: unpacked part of the files, then stopped with

Error (-2) while extracting. Disk
full?

Try again?
Yes No

At this time the partition still had approximately 500 Megabytes free space.

Next tried same in dos-window of win98,
there it worked.

Klaus

Reply by email

Klaus Hartnegg
to Michael Van Canneyt: Finally it has happened: The FPC team is pleased to announce the pre release of FPC…

Some observations in IDE (fp):

Incompatibility: Key-Combination Ctrl-N
Error-Message "this function is not yet implemented" (Borland Pascal inserts a new line)

Incompatibility: File/Open/"report.txt"
Error-Message "can't find report.txt"
(Borland Pascal starts a new file)

Error: Options/Compiler/Extended Syntax, Compile
Error-Message "Illegal Parameter -S/"

IDE crashes -> all changes (options and file editing) are lost (Borland Pascal saves all changes before compiling, but I may just not yet have stumbled accross the option to enable this)

here's the screen output of the crash:

Exiting due to signal SIGSEGV
FPC General Protection Fault at eip=000147C2
eax=002DB720 ebx=0058E0B4 ecx=00000000 edx=00000008 esi=90909090 edi=0058E0B4
ebp=0058DF94 esp=0058DF84 program=C:\PRG\FPC106\BIN\GO32V2\FP.EXE cs: sel=00A7 base=834F9000 limit=005AFFFF
ds: sel=00AF base=834F9000 limit=005AFFFF
es: sel=00AF base=834F9000 limit=005AFFFF
fs: sel=00CF base=00000000 limit=0010FFFF
gs: sel=00CF base=00000000 limit=0010FFFF
ss: sel=00AF base=834F9000 limit=005AFFFF

Call frame traceback EIPs:
0x000147C2
0x00080984
0x70657220
FPC double exception, exiting due to signal 000D
FPC General Protection Fault at eip=00156B8A
eax=676E6973 ebx=00000021 ecx=00000000 edx=000000CF esi=0034A28E edi=0058E2C0
ebp=0058DBA0 esp=0058DBA0 program=C:\PRG\FPC106\BIN\GO32V2\FP.EXE cs: sel=00A7 base=834F9000 limit=005AFFFF
ds: sel=00AF base=834F9000 limit=005AFFFF
es: sel=00AF base=834F9000 limit=005AFFFF
fs: sel=00CF base=00000000 limit=0010FFFF
gs: sel=00CF base=00000000 limit=0010FFFF
ss: sel=00AF base=834F9000 limit=005AFFFF

Call frame traceback EIPs:
0x00156B8A
0x0015BD51
0x00161FF2
0x00162420
0x00161E74
0x0016250D
0x002DB720
0x00080984
0x70657220
FPC triple exception, exiting !!!

Reply by email

Klaus Hartnegg
to Michael Van Canneyt: Finally it has happened: The FPC team is pleased to announce the pre release of FPC…

Some more dos106 problems (all in dos window of win98, because I could not install it in plain dos):

ide does not save position of window with contents of debug/output although auto save desktop is activated

this does not compile (incorrect error "duplicate identifier")
  var
    i : byte;
    {$IFDEF DEBUG}
    i : word;
    {$ENDIF}
  begin
    writeln ('hello, world!');
  end.

ide crashes about every second time I try to compile something, or more precise when I try to jump to the position of a syntax error when that's in another big file (unit),
here's another screen output that I could grab:
FPC double exception, exiting due to signal 000D
FPC General Protection Fault at eip=0015DCD2
eax=90909090 ebx=003F0000 ecx=00000000 edx=00000010 esi=003F939C edi=90909090
ebp=0058D834 esp=0058D810 program=C:\PRG\FPC106\BIN\GO32V2\FP.EXE cs: sel=00A7 base=83535000 limit=005AFFFF
ds: sel=00AF base=83535000 limit=005AFFFF
es: sel=00AF base=83535000 limit=005AFFFF
fs: sel=00CF base=00000000 limit=0010FFFF
gs: sel=00CF base=00000000 limit=0010FFFF
ss: sel=00AF base=83535000 limit=005AFFFF

sorry for the many bad news, but there's also a very good one: an extremely complex source compiled perfect after just a few tiny changes and produced the correct result, so the base must be extremely good, there's just a few things left to polish up a bit, then it's great,
but the many ide crashes are a nuisance, unfortunately I can not find a clearly reproducable situation.

Klaus

Reply by email

Jonas Maebe
to Klaus Hartnegg
Klaus Hartnegg wrote 9 lines
this does not compile (incorrect error "duplicate identifier") var i : byte; {$IFDEF DEBUG} i : word; {$ENDIF} begin writeln ('hello, world!'); end.

Are you sure you don't have the IDE setup for the debugging target? If you do that, apart from using the -gl and some other comand line switches, it defines the symbol "debug".

Jonas

Reply by email

Klaus Hartnegg
to Jonas Maebe
Jonas Maebe wrote 9 lines
> var > i : byte; > {$IFDEF DEBUG} > i : word; > {$ENDIF} Are you sure you don't have the IDE setup for the debugging target? If you do that, apart from using the -gl and some other comand line switches, it defines the symbol "debug".

Oh, indeed, options/mode is set to debug.
Must have been default setup, I probably didn't change that. Setting it to "normal" or "release" (what does this mean?) solves the problem.

Klaus

Reply by email

Jonas Maebe
to Klaus Hartnegg
Klaus Hartnegg wrote
Setting it to "normal" or "release" (what does this mean?)

Release turns on the optimizer and strips symbols, normal does nothing special (i.e. debugging info is off, but symbols are probably still included).

Jonas

Reply by email

Pierre Muller
you wrote
Some observations in IDE (fp):

Thanks for your reports:

Incompatibility: Key-Combination Ctrl-N Error-Message "this function is not yet implemented" (Borland Pascal inserts a new line)

The problem seems to be that the Ctrl-N
does not move the cursor, nor does it include
any auto-identation spaces...
So I am not really sure that I will implement this exactly like BP... so this is probably only for after 1.0.6 release, sorry.

Incompatibility: File/Open/"report.txt" Error-Message "can't find report.txt" (Borland Pascal starts a new file)

Behavior adapted to BP.

Error: Options/Compiler/Extended Syntax, Compile Error-Message "Illegal Parameter -S/"

Error corrected, I had to remove several options
that had no command line.

IDE crashes -> all changes (options and file editing) are lost (Borland Pascal saves all changes before compiling, but I may just not yet have stumbled accross the option to enable this)

I also tried to add some securities (some after the prerelease was packaged),
but this is not very easy
and does not yet work correctly...

Could I send you an updated binary with debug info so that you could test it more deeply?

I also tried to use the dos installer under Dos 7.0 (i.e. the Dos from Win95, but without
windows loaded) and I got no crash...)

Reply by email

Klaus Hartnegg
to Pierre Muller
Pierre Muller wrote
Could I send you an updated binary with debug info so that you could test it more deeply?

Ok, I grabbed the new install.exe and install.dat
and tried them with the other files of dos106.zip.

This version works now in my Dos 6.22, 1 Gigabyte partition, no abort with errorneous "disk full" message any more.

Klaus

Klaus Hartnegg, Uni Freiburg, AG Hirnforschung, Hansa-Strasse 9, 79104 Freiburg http://www.brain.uni-freiburg.de/~klaus/

Reply by email

Leif Ekblad
to Jonas Maebe: Release turns on the optimizer and strips symbols, normal does nothing special (i.e.…

Hi,

Is there any documentation on how to port FPC and FP to another OS? I've started by writing my own interface unit to RDOS syscalls. The next step would be to take the win32 version and remove all win32 references. With this done, I would like to build my own system unit. I have a couple of questions about this:

How does the compiler know where it should look for units? How do you add a new target type in FP?

BTW, both win32 and go32v2 targets work in RDOS, but I want a native version that can run without win32 emulation DLLs or dpmi reflects to V86 mode.

Who is responsible for GO32V2? There is a bug in it that accesses BIOS. If FPC should be a serious alternative for embedded systems, it should not assume there is a BIOS chip at F000!

Leif
www.rdos.net

Reply by email

Pierre Muller
to Leif Ekblad

At 10:47 22/04/2002 , vous avez écrit:

Show quoted text 6 lines
Hi, Is there any documentation on how to port FPC and FP to another OS? I've started by writing my own interface unit to RDOS syscalls. The next step would be to take the win32 version and remove all win32 references. With this done, I would like to build my own system unit. I have a couple of questions about this:

What is RDOS? Could you point us to some web references?

How does the compiler know where it should look for units?

See -Fu option.

How do you add a new target type in FP?

See systems.pas unit.

BTW, both win32 and go32v2 targets work in RDOS, but I want a native version that can run without win32 emulation DLLs or dpmi reflects to V86 mode.

That will require a new target indeed.

Who is responsible for GO32V2? There is a bug in it that accesses BIOS. If FPC should be a serious alternative for embedded systems, it should not assume there is a BIOS chip at F000!

Where does the go32v2 source have a reference to 0xf000 segment ? I can't find anything about this in the latest sources?

Reply by email

Leif Ekblad
to Pierre Muller

Pierre Muller:

What is RDOS? Could you point us to some web references?

www.rdos.net

It was originally developed to introduce multitasking to DOS, but currently I focus on embedded systems.

Where does the go32v2 source have a reference to 0xf000 segment ? I can't find anything about this in the latest sources?

I'm not sure if it's part of the latest source, as I downloaded the last stable release (1.0.4). In this version, FP (and all other GO32V2 apps) accesses 000FFFF3 at this location:

CS:EIP = 00BF:00001E1A
SS:ESP = 00C7:00554A18
GS = 00E7, base = 0
ECX = 000FFFF3

mov ax,gs:[ecx]

In my BIOS, this location contains F000.

I can download a more recent version and test with if you think it's removed after 1.0.4. I made the test in RDOS by mapping BIOS as kernel-only access, and got this error in the kernel-debugger.

Leif

Reply by email

Pierre Muller
to Leif Ekblad
Leif Ekblad wrote 20 lines
Pierre Muller: > What is RDOS? Could you point us to some web references? www.rdos.net It was originally developed to introduce multitasking to DOS, but currently I focus on embedded systems. > Where does the go32v2 source have a reference to 0xf000 segment ? > I can't find anything about this in the latest sources? I'm not sure if it's part of the latest source, as I downloaded the last stable release (1.0.4). In this version, FP (and all other GO32V2 apps) accesses 000FFFF3 at this location: CS:EIP = 00BF:00001E1A SS:ESP = 00C7:00554A18 GS = 00E7, base = 0 ECX = 000FFFF3 mov ax,gs:[ecx]

Free Pascal does not use register GS at all
in the assember that it generates,
it uses register FS for accessing real mode memory selector set to base 0 for accessing Dos memory
in the startup code (v2prt0.as).

I found no 'mov ax,gs:[ecx] instruction in its internal calls. Thus I clearly suspect that this is in the startup code of all DJGPP v2 programs.
Does this also happen with DJGPP executables,
like the following ones in the bin\go32v2 dir:
as.exe, ld.exe or make.exe?

If that is the case, then this comes from the startup code, which source you can get from DJGPP sources.
Or maybe its in the cwsdpmi.exe server,
unless RDOS does provide its own DPMI server.
However, looking into CWSDPMI sources,
I only found a
'mov ax, gs:[ecx-2]'
instruction....

Looking at Ralph Brown's interrupt list I found the following info:

MEM F000h:FFF0h - RESET JUMP
Size: 5 BYTEs

So the address FFFF3 of size 2 bytes represents the last two bytes of that stuff, but I don't know really what means.

Reply by email

Leif Ekblad
to Pierre Muller

Pierre Muller:

Free Pascal does not use register GS at all in the assember that it generates,

I don't think it's in the Free Pascal code, since if I remember it correctly, it switches to another code & data selector as soon as GO32V2 switches to FPC-code. I can find this out by setting an breakpoint in the startup-code of FPC though. This is in system.pp right?

Show quoted text 10 lines
it uses register FS for accessing real mode memory selector set to base 0 for accessing Dos memory in the startup code (v2prt0.as). I found no 'mov ax,gs:[ecx] instruction in its internal calls. Thus I clearly suspect that this is in the startup code of all DJGPP v2 programs. Does this also happen with DJGPP executables, like the following ones in the bin\go32v2 dir: as.exe, ld.exe or make.exe?

They behave differently. AS and LD faults on int 31 for some reason. MAKE encounters a page-fault.
Unfortunately, some dos-extenders go beyond what
RDOS supports.

If that is the case, then this comes from the startup code, which source you can get from DJGPP sources. Or maybe its in the cwsdpmi.exe server, unless RDOS does provide its own DPMI server.

It's not in cwsdpmi since RDOS has it's own DPMI server.

Show quoted text 5 lines
MEM F000h:FFF0h - RESET JUMP Size: 5 BYTEs So the address FFFF3 of size 2 bytes represents the last two bytes of that stuff, but I don't know really what means.

My guess is it's reading the BIOS segment for some reason. This would also only work if BIOS does a far jmp at the boot vector.

BTW, how would I go about to add RDOS target to systems.pas in the compiler? I pretty well know how to do it on my 1.0.4 release, but I don't like to do this for every release of FPC!

Leif

Reply by email

Marco van de Voort
to Leif Ekblad
Show quoted text 8 lines
> Free Pascal does not use register GS at all > in the assember that it generates, I don't think it's in the Free Pascal code, since if I remember it correctly, it switches to another code & data selector as soon as GO32V2 switches to FPC-code. I can find this out by setting an breakpoint in the startup-code of FPC though. This is in system.pp right?

No, there runs asm code belonging to the FPC project before that. See the rtl/platform/i386/ subdir.

Show quoted text 6 lines
> If that is the case, then this comes from the startup code, > which source you can get from DJGPP sources. > Or maybe its in the cwsdpmi.exe server, > unless RDOS does provide its own DPMI server. It's not in cwsdpmi since RDOS has it's own DPMI server.

If the IDE has it, but the others don't, it could also be in the implementation of the libraries that the IDE includes (libc/ncurses/libgdb)

Since the target is a processor vector, I'd expect libgdb to do that.

Reply by email

Pierre Muller
to Leif Ekblad: Pierre Muller: I don't think it's in the Free Pascal code, since if I remember it…

At 14:39 22/04/2002 , vous avez écrit:

Show quoted text 9 lines
Pierre Muller: > Free Pascal does not use register GS at all > in the assember that it generates, I don't think it's in the Free Pascal code, since if I remember it correctly, it switches to another code & data selector as soon as GO32V2 switches to FPC-code. I can find this out by setting an breakpoint in the startup-code of FPC though. This is in system.pp right?

You should use v2prt0.as code
start assembler label.

Show quoted text 12 lines
> it uses register FS for accessing real mode memory > selector set to base 0 for accessing Dos memory > in the startup code (v2prt0.as). > > I found no 'mov ax,gs:[ecx] instruction in its internal calls. > Thus I clearly suspect that this is in the startup code > of all DJGPP v2 programs. > Does this also happen with DJGPP executables, > like the following ones in the bin\go32v2 dir: > as.exe, ld.exe or make.exe? They behave differently. AS and LD faults on int 31

Some unsupported RDOS DPMI 0x31 functions?

for some reason. MAKE encounters a page-fault. Unfortunately, some dos-extenders go beyond what RDOS supports.

But these programs should use the same loader as we do for go32v2 binaries...

For make.exe,
isn't it a test to check if page protection is supported by the DPMI server?

Show quoted text 15 lines
> If that is the case, then this comes from the startup code, > which source you can get from DJGPP sources. > Or maybe its in the cwsdpmi.exe server, > unless RDOS does provide its own DPMI server. It's not in cwsdpmi since RDOS has it's own DPMI server. > MEM F000h:FFF0h - RESET JUMP > Size: 5 BYTEs > > So the address FFFF3 of size 2 bytes represents the last two bytes of > that stuff, but I don't know really what means. My guess is it's reading the BIOS segment for some reason. This would also only work if BIOS does a far jmp at the boot vector.

I couldn't find where this happens :(

BTW, how would I go about to add RDOS target to systems.pas in the compiler? I pretty well know how to do it on my 1.0.4 release, but I don't like to do this for every release of FPC!

The fact is that 1.0.6 is almost ready so its too late for that one, after you have the choice of either submit your patches against 1.0.6 or to start looking at the new 1.1 compiler version.
That version should allow easier adding of targets, but I mainly focused on fixing bugs in 1.0.X version and trying to enhance the text mode IDE.

BTW: do you know why the IDE don't work under RDOS, is this for both the go32v2 and the win32 versions?

Reply by email

Leif Ekblad
to Pierre Muller

Pierre Muller:

You should use v2prt0.as code start assembler label.

OK, thank you for that clarification. I just succeeded in building a sysrdos unit, and making a rtl with a copy of win32's rtl. However, there also where some locations in the shared rtl-files that used win32 :(. However, I think you did a pretty good job of separating OS code anyway. I also had to change some other modules (import.pp and export.pp) in the compiler to make it accept PE executables for RDOS target. That is not really related to Win32, although I've had much larger problems with this under other environments.

>They behave differently. AS and LD faults on int 31 Some unsupported RDOS DPMI 0x31 functions?

Worse than that. It protection-faults on the instruction itself. I currently have no idea why. Unsupported functions are signalled by a breakpoint in the kernel. Something gets messed-up somehow.

Show quoted text 8 lines
>for some reason. MAKE encounters a page-fault. >Unfortunately, some dos-extenders go beyond what >RDOS supports. But these programs should use the same loader as we do for go32v2 binaries... For make.exe, isn't it a test to check if page protection is supported by the DPMI server?

It could be. It looks like it's user code causing these problems. However, if it's user-code, why doesn't it first stop on the FFFF3 reference?

Show quoted text 6 lines
The fact is that 1.0.6 is almost ready so its too late for that one, after you have the choice of either submit your patches against 1.0.6 or to start looking at the new 1.1 compiler version. That version should allow easier adding of targets, but I mainly focused on fixing bugs in 1.0.X version and trying to enhance the text mode IDE.

OK, I'll do a complete port first. Then I'll need to adapt it to 1.0.6.

BTW: do you know why the IDE don't work under RDOS, is this for both the go32v2 and the win32 versions?

On my computer (Windows ME), only the go32v2 ide works. The win32 version doesn't support the mouse. The problem under RDOS was that it couldn't find the .cfg file I think.

Leif

Reply by email

Peter Vreman
to Leif Ekblad
OK, thank you for that clarification. I just succeeded in building a sysrdos unit, and making a rtl with a copy of

Please use the normal system.pp as System unit. The 1.1 development compiler expects that as name. The syswin32/syslinux are also renamed back to system.pp

Reply by email