321 lines
12 KiB
Plaintext
321 lines
12 KiB
Plaintext
|
|
||
|
|
||
|
Hi Richard... Here are a lot of infos on the compiler. You must
|
||
|
read the compiler help as well. Both files and the compiler shell
|
||
|
itself should keep Stephen Hill busy for a few days, time for me
|
||
|
to finish the APCmp.
|
||
|
|
||
|
In the help file, some titles may need to be re-centered, the
|
||
|
display needs to be checked: Jean-Baptiste did not spend too
|
||
|
much time on this as all the text need re-writing.
|
||
|
If you dont like the structure of the help file (the way the different
|
||
|
chapters are linked together) fell free to change it, but
|
||
|
please do not change the keywords.
|
||
|
|
||
|
In the help file, I have put remarks, preceeded by "***".
|
||
|
|
||
|
|
||
|
Cheers, Francois.
|
||
|
|
||
|
|
||
|
|
||
|
AMOSPro Compiler Documentation 26/04/93
|
||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
|
||
|
1- The installer.
|
||
|
-----------------
|
||
|
|
||
|
It will have the same look than the AMOSpro installer. I will ask
|
||
|
Jean Baptiste to start it as soon as possible.
|
||
|
|
||
|
Floppy users: we will have to ask the user to format an empty
|
||
|
disc, and call it AMOSPro_Extras:. The installer will copy
|
||
|
on this disc some programs from the AMOSPro_System disc:
|
||
|
Install.AMOS + Memory banks
|
||
|
Interpreter_Config.AMOS
|
||
|
Editor_Config.AMOS
|
||
|
|
||
|
This will leave enough space to install the compiler on the system
|
||
|
disc. It will automatically modify the menu options (Interpreter Config,
|
||
|
Editor Config) from the editor, so that the system remains fully
|
||
|
unchanged.
|
||
|
|
||
|
This installer will automatically add 2 new options to the user menu:
|
||
|
|
||
|
- "Compiler" call the compiler main screen
|
||
|
- "Compile!" compile the current program in a new window. This option
|
||
|
will not call the main shell, but a reduced version that will eat less
|
||
|
memory.
|
||
|
- "Set Compiler" call the main shell with a command line that will
|
||
|
make it directly boot into MAIN SETUP page.
|
||
|
When you quit this page, it will return to the editor.
|
||
|
|
||
|
|
||
|
|
||
|
2- The Compiler Shell
|
||
|
---------------------
|
||
|
|
||
|
Nothing to say here, as it is very obvious to use. You will get informations
|
||
|
on all the buttons by clicking on HELP and then clicking on the
|
||
|
buttons.
|
||
|
I have added information on the configuration files in the setup panels.
|
||
|
Still to do are the error messages.
|
||
|
|
||
|
In order to have the help, you must have at least 150 K of free memory.
|
||
|
You will be asked to insert the AMOSPro_Accessories: disc into any
|
||
|
drive to load AMOSPro_Help.AMOS
|
||
|
TIP: just load the AMOSPro_Help.AMOS program in the AMOS menu from the
|
||
|
editor if you want to speed up the help feature from the compiler:
|
||
|
the program will not need to be loaded any more, just the help
|
||
|
files.
|
||
|
If you select "Enable warm start" from the editor's QUIT OPTION, next
|
||
|
time you boot AMOSPro, you'll find the help accessorie pre-loaded
|
||
|
for you.
|
||
|
|
||
|
TIP: if HELP refuses to load when you call the compiler from the
|
||
|
USER menu, it will certainly work if you load the compiler in the
|
||
|
main window.
|
||
|
|
||
|
|
||
|
The buttons in the shell do not have the same meaning as for the original
|
||
|
AMOS Compiler Shell.
|
||
|
* Before: DISC / RAM selecting the way to compile the program, ie how
|
||
|
fast it would go.
|
||
|
* Now: APCmp is automatic, it decides alone of the best way to compile the
|
||
|
program depending on your system (see later).
|
||
|
The buttons now select where to take to program, and where to put it.
|
||
|
- Where it comes from:
|
||
|
+ Current window (only if the shell is an accessory)
|
||
|
+ Disc: opens a file selector
|
||
|
+ List: opens a list selector
|
||
|
- Where to put the object code:
|
||
|
+ Current window (only if the shell is an accessory)
|
||
|
+ Disc: opens a file selector
|
||
|
Make sure that old AMOS users understand this.
|
||
|
|
||
|
|
||
|
Compiling from current window to another editor window.
|
||
|
|
||
|
This option takes advantage of the AMOSPro accessories system, and
|
||
|
will make you gain a lot of time.
|
||
|
It asks for quite a lot of memory or space disc to hold the
|
||
|
temporary files, so you should have more than one meg to use it on a big
|
||
|
program.
|
||
|
How does it work?
|
||
|
|
||
|
- The source option "current" will only be available if the compiler
|
||
|
shell is called from the USER menu (you can select it now even if you
|
||
|
run the shell from the editor window, but this will be corrected later)
|
||
|
If selected, the source program is taken in the active editor window.
|
||
|
- The object option "current" here too be only available if the
|
||
|
compiler shell is an accessory.
|
||
|
If selected, the object program type can only be "AMOS".
|
||
|
How does it work:
|
||
|
- Select the options,
|
||
|
- Click on "Compile"
|
||
|
- The compiler grabs the current program, test it, report any errors.
|
||
|
If an error is found, you will have a requester:
|
||
|
Syntax error at line XXX
|
||
|
and have two choices:
|
||
|
(1) Back to AMOSPro Editor : you will be brought back to the faulty line
|
||
|
(2) Go on : back to the main Compiler_Shell panel.
|
||
|
... More on this when APCmp is over.
|
||
|
- The compiler then compiles the program onto the temporary files disc
|
||
|
(see later in this file), by default, the ramdisc.
|
||
|
- Then a new window is opened in the editor, and the temporary program
|
||
|
loaded into it.
|
||
|
- The temporary program is then erased from the temporary folder
|
||
|
- The newly created compiled program in the editor is then renamed to match
|
||
|
the source program pathname, and not any more the temporary pathname.
|
||
|
- The Compiler_Shell ends and brings you back to the editor, in the
|
||
|
newly compiled program, ready to be runned.
|
||
|
|
||
|
NOTE: if a window with the compiled program already exist, then the
|
||
|
compiler shell close this window before opening a the new one, preventing
|
||
|
you from having many windows with the same compiled program on the screen.
|
||
|
|
||
|
|
||
|
3- Compiling from direct mode.
|
||
|
------------------------------
|
||
|
The "COMPILE" instruction will still be available, of course, as in
|
||
|
the original AMOS Compiler:
|
||
|
|
||
|
Compile "command_line"
|
||
|
|
||
|
Improvment: if you specify an empty string (Compile ""), AMOSPro will
|
||
|
compile the CURRENT program, using the default command line in the
|
||
|
compiler configuration, and automatically save the program to disc using
|
||
|
its name, just near it.
|
||
|
|
||
|
Example, you are editing "Work:AMOS_Pro/My_Program.AMOS", go in direct
|
||
|
mode, type Compile "", the compiler will create the program:
|
||
|
Work:AMOS_Pro/My_Program
|
||
|
|
||
|
You should recommend this way of compiling for people who dont have a lot
|
||
|
of RAM: this way they save the space used by the compiler shell.
|
||
|
|
||
|
|
||
|
|
||
|
4- The compiler itself.
|
||
|
-----------------------
|
||
|
|
||
|
All the topics I dont talk about are un-changed since AMOS compiler.
|
||
|
|
||
|
|
||
|
1. The configuration
|
||
|
~~~~~~~~~~~~~~~~~~~~
|
||
|
The compiler configuration is now stored in the "S:" folder of the Amiga,
|
||
|
just near the AMOSPro_Interpreter_Config, and is called (surprisingly)
|
||
|
AMOSPro_Compiler_Config
|
||
|
This file is no more an ascii file, and cannot be edited with a
|
||
|
normal editor. The only way to modify it is to boot the Compiler_Shell.AMOS,
|
||
|
and select the configuration panels.
|
||
|
|
||
|
|
||
|
2. Memory management (command line option -d00)
|
||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
The -d option does not exist any more, as the compiler is now much smarter.
|
||
|
before compiling a program, it looks to the free memory, and decides
|
||
|
alone what are the best options to use.
|
||
|
Of course, it will prefer to do everything in ram if it is possible.
|
||
|
|
||
|
|
||
|
3. The buffers size
|
||
|
~~~~~~~~~~~~~~~~~~~
|
||
|
The compiler now evaluates the size of the internal buffers from the size
|
||
|
of the source to compile. So it will happily work well on small programs
|
||
|
and on biiiiig programs, over 80k : you do not have to choose another
|
||
|
configuration file as before.
|
||
|
|
||
|
|
||
|
4. Tokenising
|
||
|
~~~~~~~~~~~~~
|
||
|
The compiler is also smart on this: it finds out by itself about the
|
||
|
type of the source code.
|
||
|
When you call the compiler from the CLI (ex: APCmp MyProg.Asc)
|
||
|
the compiler look at the first 16 bytes of the source code. If if finds
|
||
|
the proper AMOSPro or AMOS headers, then it realise that the source
|
||
|
code is an AMOS program.
|
||
|
If not, then it loads the first 256 bytes of the source, and finds out
|
||
|
if the source code is an ascii file: it counts the number of good
|
||
|
ascii characters (>32, and cariage returns and tabs) out of the 256 bytes.
|
||
|
If the percentage of bad bytes exeed the one you expect for a normal
|
||
|
ascii file, then the compiler sees that it cannot compile the file, and you
|
||
|
will get the error message:
|
||
|
"Not an AMOS program"
|
||
|
|
||
|
If the file is a proper ASCII file, then the compiler loads the tokenisation
|
||
|
routines from the "Compiler.Lib" library, and starts the tokenisation
|
||
|
process.
|
||
|
|
||
|
Tokenising is ALWAYS done to the disc. The name of the file is computed
|
||
|
from the name of the source code by turning the ".asc" (or anything after
|
||
|
the latest dot) into ".AMOS". If no dot is found, the ".AMOS" is simply
|
||
|
added to the name.
|
||
|
This file is to be deleted after compilation, unless you specify the
|
||
|
"-f" option (see later)
|
||
|
This file is normally saved just beside the source files (ie using the
|
||
|
same pathname) unless you specify a temporary file pathname using the
|
||
|
"-?" option or change the string number 9 in the compiler system strings
|
||
|
setup (see help file)
|
||
|
For example, temporary file name is "Ram:", the tokenised program
|
||
|
pathname will be: "Ram:MyProg.AMOS"
|
||
|
|
||
|
Tokenising can bring some errors:
|
||
|
|
||
|
Line too long at line XXX
|
||
|
|
||
|
After the program is tokenised, then APCmp goes to TESTING.
|
||
|
|
||
|
* Option "-f", FORCE tokenisation.
|
||
|
This option can be very usefull: it turns the compiler into a
|
||
|
tokeniser only. Example:
|
||
|
|
||
|
APCmp MyProg.Asc -f
|
||
|
|
||
|
APCmp will tokenise MyProg.Asc into MyProg.AMOS, and quit. MyProg.AMOS
|
||
|
will be directly loadable into the AMOSPro Editor.
|
||
|
Such a tokenisation goes much faster than loading an ascii source
|
||
|
directly into the editor.
|
||
|
|
||
|
|
||
|
5. Testing
|
||
|
~~~~~~~~~~
|
||
|
If the program is not tested (saved before begin tested from the
|
||
|
AMOSpro editor, or just freshly tokenised by APCmp), then APCmp
|
||
|
will test it.
|
||
|
To do so, it will load the test routines from "Compiler.Lib", and
|
||
|
then load the .AMOS program into RAM. As a consequence, you must
|
||
|
have enough space to hold the entiere program all at once in ram
|
||
|
to compile a non-tested program.
|
||
|
Then the testing process takes place, and asks for the usual testing
|
||
|
time (same as under AMOSpro Editor)
|
||
|
If any error is detected, then APCmp loads the testing error messages
|
||
|
from the AMOSPro_Editor_Config (he can find the proper pathname to this
|
||
|
file by just lookin into AMOSPro_Interpreter_Config), and then extract
|
||
|
the correct message.
|
||
|
As a consequence, if a user customise his error messages under the
|
||
|
editor, they will ALSO be customised under the compiler.
|
||
|
|
||
|
Then the message is printed like this:
|
||
|
|
||
|
Syntax error at line XXX
|
||
|
|
||
|
and the compilation is aborted.
|
||
|
|
||
|
|
||
|
6. Compiling.
|
||
|
~~~~~~~~~~~~~
|
||
|
Nothing more to say on the compiling process. Some changes inside, but
|
||
|
externally, it just compiles!
|
||
|
|
||
|
|
||
|
7. The amos.library
|
||
|
~~~~~~~~~~~~~~~~~~~
|
||
|
If you have AMOSPro installed on your machine, then you must have
|
||
|
"amos.library" installed in your libs: folder.
|
||
|
The library contains al the core of the AMOS display: all the
|
||
|
screen routines, bob/sprite/amal/inputs are here.
|
||
|
|
||
|
The original AMOS compiler used to copy all these routines each
|
||
|
time into the object code, resulting in a object code minimum size
|
||
|
of 45K.
|
||
|
APCmp does not copy the amos.library into the compiled program (unless
|
||
|
you specify it with a command line option). The result is a much smaller
|
||
|
objet code.
|
||
|
Example, Print "Hello" is compiled in 4K (to be confirmed later)
|
||
|
The only obligation is to have the amos.library available when you start
|
||
|
compiled program. Make sure you copy the library when you create a bootable
|
||
|
disc.
|
||
|
|
||
|
You can force the copy of the library with the new compiler option : "-a"
|
||
|
|
||
|
"-a" will force APCmp to copy the amos.library in the program. The program
|
||
|
will then run even if the library is not present in the libs: folder.
|
||
|
This also ensures that you program will run whatever the version of the
|
||
|
amos.library is present in the libs: folder.
|
||
|
|
||
|
|
||
|
8. Creating a boot disc
|
||
|
~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
A big problem for many users. I'll have Jean Baptiste to program a small
|
||
|
utility that will:
|
||
|
- Ask for the name of the program to be put on a bootable disc
|
||
|
- Format a blank disc,
|
||
|
- Copy all the necessary files from the AMOSPro_System disc on this
|
||
|
disc,
|
||
|
- Save out a proper startup-sequence to have a bootable disc ready.
|
||
|
|
||
|
Just document this in the manual. No need to have any screen shot, as
|
||
|
the interface will be simple: just a dialog box, and then a file
|
||
|
selector.
|
||
|
|
||
|
|
||
|
Informations still to come:
|
||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
- New powerpacker.library access with the Compiler Extension new commands
|
||
|
- Exact list of the new command line options (I may add a few this week)
|
||
|
- The compiled code, technical infos
|
||
|
- List of the compiler error messages (many more than for the original
|
||
|
compiler)
|