--------------------------------------------------------------------------- Pascal Pro - free 32-bit pascal compiler http:\\www.cryogen.com\pascalpro email to: [email protected] --------------------------------------------------------------------------- 1. Introduction. 2. Installation. 3. Compiling programs. 3.1. Compiling programs under WDOSX platform. 3.2. Compiling programs under DOS32 platform. 4. Used tools. 4.1. Supported assemblers. 4.2. Supported linkers. 4.3. Other tools. 5. Configuring compiler for you own platform. 5.1. Configuring command lines. 5.2. Configuring generated assembler output. ------------------------------------------------------- 1. Introduction. My English is not good, so excuse me for some mistakes in this description. This file contains some information about Pascal Pro compiler. Pascal Pro is 32-bit free compile. You didn't need to pay for using that. But if you'ld like you can send me $5-$50. In this case you have to contact me and I'll say how you can do that. If you'll have some interesting ideas about Pascal Pro or you'll find some errors also contact me, please. ------------------------------------------------------- 2. Installation. This version contains 3 packed files. For installation you must have ZIP-unpacker, for example PKUNZIP. Unzip packages (with subdirectories) to a directory on your hard drive, for example C:\PPRO\. For more comfortable usage you can add Pascal Pro directory to your path search in autoexec.bat. ------------------------------------------------------- 3. Compiling programs. This version of Pascal Pro can produce programs for dos-protected mode using two dos-extenders WDOSX and DOS32. To specify target which you'ld to use with your programs you have to specify /Txxx parameter, where xxx is the target name. At first this target is default. But you can change default target by setting /T switch in the ppro.cfg file. 3.1. Compiling programs under WDOSX platform. For compiling program under WDOSX platform you have to call ppro with /TWDOSX parameter, for example ppro /TWDOSX hello.pas 3.2. Compiling programs under DOS32 platform. For compiling program under DOS32 platform you have to call ppro with /TDOS32 parameter, for example ppro /TDOS32 hello.pas ------------------------------------------------------- 4. Used tools. 4.1. Supported assemblers. 4.2. Supported linkers. 4.3. Other tools. ------------------------------------------------------- 5. Configuring compiler for you own platform. 5.1. Configuring command lines. 5.2. Configuring generated assembler output.
Pascal Pro - free 32-bit pascal compiler
--------------------------------------------------------------------------- Pascal Pro - free 32-bit pascal compiler
Resource links
0 Open
More issues
Open
I've been fascinated by Pascal compiler sources literally for decades (I started back around 1979). So when I found yours - among a few others - I was quite excited and I am quite impressed. I would like to ask a few questions.
- Was your intent to make the program "self-hosting," i.e. capable of compiling itself?
- The way you have {$IFDEF PPRO to insert () after procedure calls seems to imply that.
- I have seen other your code invoke procedures using naked procedure calls without the () at the end, and I was curious why.
- Free Pascal will allow () at the end of a procedure call, e.g,
- I think the procedure
tScanner.SkipComments
in filescanner.pas
. I felt the way you did that, implementing a means to both handle compiler directives and nested comments, was absolutely brilliant. - I am wondering why you only handle the newer { brace comment }, but not supporting the older (* block style *) comments; most compilers handle both, because people use both.
- If you want to handle the older style block comment, it does take a bit of work. You have three options: have the system internally convert (* to { (and ) to } before it is processed (probably way too much work); handle ( as two characters in the check routine; do a bit of finagling in the (second) where loop in that procedure.
- If you're interested in how I would implement this if you would consider using it, let me know; if not, fair enough.
- There is one thing in the code I am curious about. It's in
function ReadSwitchName
at line 419:
C := UpCase(NextChar);
while ((C >= 'A') and (C <= 'Z')) or (C = '_') do
begin
Str := Str + C;
C := NextChar{$IFDEF PPRO}(){$ENDIF};
end
- I presume switches are not case sensitive. Looking at the code above, it will capitalize the first letter and exits at the first character that's not an upper-case letter. Is it that switches are only one letter, or if more than one, anything after that that isn't in upper case is not part of the swirch? I would think {$ifdef should work same as {$IFDEF. If that was your intent, change
C := NextChar{$IFDEF PPRO}(){$ENDIF};
to
C := UpCase(NextChar{$IFDEF PPRO}(){$ENDIF});
- I have a couple of others to recommend that you might look at for ideas.
- First is Mad-Pascal https://github.com/tebe6502/Mad-Pascal that has a cross-compiler for the 6502 similar to yours in terms of functionality. it is a monolithic single application file that numbers over 45,000 lines of code (about 1MB for that file alone, not counting some include files it uses. I'm thinking that program might also be useful as a self-compiling application.
- My own app,https://github.com/electric-socket/xdpw , a fork of Vasily Tereskov's XDPascal for Wundows, which is self-hosting (it will compile itself) and even builds applications directly, producing an .EXE file. Since it generates an executable directly, you can see how it does it. I’ve made a few changes and some fixes, but I had to set it aside to work on a different program.
- Fact is, where your compiler is at is the direction I wanted to go with XDPascal, and having seen what you and MadPascal (and others) have done, I think I'm going to look into them and see if I can learn something.
Thank you for your attention. Paul
"Understanding of things by me is only made possible by people — who read my comments — like you."
Thank you. Paul Robinson [email protected] .
opened Jan 6, 2022 by electric-socket 1
RELEASE-1.0.0(Jan 31, 2022)
Initial Release.
Contents
Share this repo
Related Repos
129
1.1k
71
129
35
363
133
1.8k