Avoid informal usage of 'you', updated installation manual

This commit is contained in:
ceriel 1991-11-19 13:44:09 +00:00
parent 78ca80f4d5
commit 8f0ef636ab
13 changed files with 479 additions and 348 deletions

View file

@ -1,6 +1,6 @@
Some of these documents use a font called CW.
If you don't have that, you can change references to it with a sed-script
like
If this font is not available, reference to it can be changed with
a sed-script like
s/\.ft CW/.ft yourfont/
s/\\f(CW/\\fyourfont/g
s/^.fp\(.*\)CW$/.fp\1yourfont/

View file

@ -88,14 +88,14 @@ All punctuation must be included where shown.
GENERAL INFORMATION
.LP
The BASIC-EM compiler is designed for a UNIX based environment.
It accepts a text file with your BASIC program (suffix .b) and generates
It accepts a text file with a BASIC program (suffix .b) and generates
an executable file, called a.out.
.NH 2
LINE FORMAT
.LP
A BASIC program consists of a series of lines, starting with a
positive line number in the range 0 to 32767.
A line may consists of more then one physical line on your terminal, but must
A line may consists of more than one physical line on a terminal, but
is limited to 1024 characters.
Multiple BASIC statements may be placed on a single line, provided
they are separated by a colon (:).
@ -393,7 +393,7 @@ ERROR
ERROR <integer expression>
.PU
To simulate the occurrence of a BASIC error.
To define your own error code use a value not already in
To define a private error code a value must be used that is not already in
use by the BASIC runtime system.
The list of error messages currently in use can be found in appendix B.
.NH 2

View file

@ -374,12 +374,12 @@ It is undefined when the instruction has no operand.
.br
Although an exhaustive list could be given describing all the types
the following rule of thumb will suffice.
If you cannot imagine the operand of the instruction ever to be
If it is unimaginable for the operand of the instruction ever to be
something different from a plain integer, the type is integer,
otherwise it is string.
.br
.I Cg
makes all necessary conversions for you,
makes all necessary conversions,
like adding EM_BSIZE to positive arguments of instructions
dealing with locals,
prepending underlines to global names,
@ -776,8 +776,8 @@ Items are pushed in the order of appearance.
This means that the last item will be on the top of the
stack after the push.
So if the stack pattern contained two token expressions
and you want to push them back unchanged,
you have to specify as stack replacement
and they must be pushed back unchanged,
they have to be specified as stack replacement
.DS
%[2] %[1]
.DE
@ -878,7 +878,7 @@ and shows how to place erase() and setcc() calls.
"sxt %[a.even]" | { PAIRSIGNED, %[a.1], %[a.2] }| |
.DE
This coercion shows how to use the move and test calls.
At first you might think that the testcall is unnecessary,
At first one might think that the testcall is unnecessary,
since the move will have set the condition codes,
but the move may never have been executed
if the register already contained the value,
@ -1155,8 +1155,8 @@ from the string of size w_size and generate code to assemble global
data for that integer.
Only the sizes for which arithmetic is implemented need be
handled,
so if you didn't implement 200-byte integer division
you don't have to implement 200-byte integer global data.
so if 200-byte integer division is not implemented,
200-byte integer global data do not have to be implemented.
Here one must take care of word order in long integers.
.IP con_float()
This function must generate code to assemble a floating
@ -1170,7 +1170,8 @@ and room made for local variables for a total of f_nlocals bytes.
This function is called when a
.B mes
pseudo is seen that is not handled by the machine independent part.
Example below shows all you probably have to know about that.
The example below probably shows all the table writer ever has to know
about that.
.IP segname[]
This is not a function,
but an array of four strings.

View file

@ -558,7 +558,7 @@ Maybe some conversions will have to be made.
.IP 4)
In 'head_em': an application program returns control to the monitor by
jumping to address 0xFB52.
If this is not the right way on your system, change it.
This may have to be changed for different systems.
.IP 5)
In 'tail_em': the current version of the 8080 back-end has very limited I/O
capabilities, because it was tested on a system that

File diff suppressed because it is too large Load diff

View file

@ -465,7 +465,7 @@ This error occurs when a function procedure does not return properly
("falls" through).
.IP "illegal instruction"
.br
This error might occur when you use floating point operations on an
This error might occur when floating point operations are used on an
implementation that does not have floating point.
.PP
In addition,

View file

@ -229,8 +229,8 @@ Register variables
.PP
If the machine has more than enough registers to generate code with,
it is possible to reserve some of them for use as register variables.
If it has not, you can skip this section and ignore any references
to register variables in the rest of this document.
If it has not, this section may be skipped and any references
to register variables in the rest of this document may be ignored.
.PP
The front ends generate messages to the back ends telling them which
local variables could go into registers.
@ -253,8 +253,8 @@ A loop control variable.
A pointer variable.
Usually they are better candidates to put in registers.
.PP
If you use register variables in your table you must supply
more functions in mach.c.
If register variables are used,
more functions must be supplied in mach.c.
These functions are explained later.
.NH 1
Description of the machine table
@ -803,11 +803,10 @@ The type of the operand is dependent on the instruction,
sometimes it is integer,
sometimes it is address.
It is undefined when the instruction has no operand.
Watch out for instructions with type-letter w.
They can occur without an operand.
Check for this in your code rule with the defined() pseudo function.
Instructions with type-letter w can occur without an operand.
This can be checked in the code rule with the defined() pseudo function.
.br
If you cannot imagine the operand of the instruction ever to be
If it is unimaginable for the operand of the instruction ever to be
something different from a plain integer, the type is integer,
otherwise it is address.
.br
@ -816,7 +815,7 @@ are the instructions marked with the
type-letters c,f,l,n,o,s,r,w,z in the EM manual.
.br
.I Cg
makes all necessary conversions for you,
makes all necessary conversions,
like adding EM_BSIZE to positive arguments of instructions
dealing with locals,
prepending underlines to global names,
@ -851,7 +850,7 @@ This is the second allocated register.
The second subregister of the first allocated register.
.PP
All normal C operators apply to integers,
the + operator on addresses behaves as you would expect
the + operator on addresses behaves as one would expect
and the only operators allowed on register expressions
are == and != .
Furthermore there are some special `functions':
@ -1343,8 +1342,7 @@ generate the same string as is used for this label.
The code generator system could probably easily be changed
to make this work for assemblers that do not support this
type of label by generating unique labels itself.
Implementation of this is not contemplated at the moment,
bad luck if your assembler cannot do it.
Implementation of this is not contemplated at the moment.
.NH 3
Stack replacement
.PP
@ -1360,8 +1358,8 @@ Items are pushed in the order of appearance.
This means that the last item will be on the top of the
stack after the push.
So if the stack pattern contained two sets
and you want to push them back unchanged,
you have to specify as stack replacement
and they must be pushed back unchanged,
they have to be specified as stack replacement
.DS
yields %2 %1
.DE
@ -1549,10 +1547,9 @@ with REG REG
gen com %1
bic %1,%2 yields %2
.DE
Shows the way you have to twist the table,
if an
.I and -instruction
is not available on your machine.
Shows the way to handle the absence
of an
.I and -instruction.
.DS
.ta 7.5c
pat set $1==2
@ -1656,7 +1653,7 @@ This rule for
.B blm
already uses three registers of the same type.
.I Cgg
contains code to check all your rules
contains code to check all rules
to see if they can be applied from an empty fakestack.
It uses the marriage thesis from Hall,
a thesis from combinatorial mathematics,
@ -2202,8 +2199,8 @@ from the string of size w_size and generate code to assemble global
data for that integer.
Only the sizes for which arithmetic is implemented need be
handled,
so if you didn't implement 200-byte integer division
you don't have to implement 200-byte integer global data.
so if 200-byte integer division is not implemented,
200-byte integer global data don't have to be implemented.
Here one must take care of word order in long integers.
.IP -
con_float()
@ -2223,7 +2220,7 @@ mes(w_mesno)
This function is called when a
.B mes
pseudo is seen that is not handled by the machine independent part.
The example below shows all you probably have to know about that.
The example below shows all one probably have to know about that.
.IP -
segname[]
.br

View file

@ -634,7 +634,7 @@ eof(f) is true just before the call to get(f).
read error, trap 103, fatal:
.br
unlikely to happen. Probably caused by hardware problems
or by errors elsewhere in your program that destroyed
or by errors elsewhere in the program that destroyed
the file information maintained by the run time system.
.ti -5
truncated, trap 99, fatal:
@ -846,7 +846,7 @@ changed instead of many Pascal programs.
.PP
Another advantage is that these library modules may be written in a different
language, for instance C or the EM assembly language.
This is useful if you want to use some specific EM instructions not generated
This is useful for accessing some specific EM instructions not generated
by the Pascal compiler. Examples are the system call routines and some
floating point conversion routines.
Another motive could be the optimization of some time-critical program parts.
@ -914,8 +914,8 @@ by parameters, even the files input and output.
Access to a variable declared in a module is only possible
using the procedures and functions declared in that same module.
By giving the correct procedure/function heading followed by the
directive 'extern' you may use procedures and functions declared in
other units.
directive 'extern' procedures and functions declared in
other units may be used.
.sp
.ti -3
3.~\
@ -955,7 +955,7 @@ Three additional standard procedures are available:
.IS
.ti -8
halt:~~~a call of this procedure is equivalent to jumping to the
end of your program. It is always the last statement executed.
end of the program. It is always the last statement executed.
The exit status of the program may be supplied
as optional argument. If not, it will be zero.
.ti -8
@ -978,10 +978,10 @@ UNIX interfacing.
.sp
If the c-option is turned on, then some special features are available
to simplify an interface with the UNIX environment.
First of all, the compiler allows you to use a different type
First of all, the compiler allows for a different type
of string constants.
These string constants are delimited by double quotes ('"').
To put a double quote into these strings, you must repeat the double quote,
To put a double quote into these strings, the double quote must be repeated,
like the single quote in normal string constants.
These special string constants are terminated by a zero byte (chr(0)).
The type of these constants is a pointer to a packed array of characters,
@ -990,7 +990,7 @@ with lower bound 1 and unknown upper bound.
Secondly, the compiler predefines a new type identifier 'string' denoting
this just described string type.
.PP
The only thing you can do with these features is declaration of
These features are only useful for declaration of
constants and variables of type 'string'.
String objects may not be allocated on the heap and string pointers
may not be de-referenced.
@ -1062,7 +1062,7 @@ Ack-Pascal deviates from the standard proposal in the following ways:
.ti -3
1.~\
Standard procedures and functions are not allowed as parameters in Ack-Pascal.
You can obtain the same result with negligible loss of performance
The same result can be obtained with negligible loss of performance
by declaring some user routines like:
.EQ
function sine(x:real):real;
@ -1091,14 +1091,14 @@ at run time. Default +.
.sp
.ti -8
c~+/-~~~\
this option, if on, allows you to use C-type string constants
this option, if on, allows the use of C-type string constants
surrounded by double quotes.
Moreover, a new type identifier 'string' is predefined.
Default -.
.sp
.ti -8
d~+/-~~~\
this option, if on, allows you to use variables of type 'long'.
this option, if on, allows the use of variables of type 'long'.
Default -.
.sp
.ti -8
@ -1112,7 +1112,7 @@ The default value is wordsize-1.
l~+/-~~~\
if + then code is inserted to keep track of the source line number.
When this flag is switched on and off, an incorrect line number may appear
if the error occurs in a part of your program for which this flag is off.
if the error occurs in a part of the program for which this flag is off.
These same line numbers are used for the profile, flow and count options
of the EM interpreter em [5].
Default +.
@ -1125,7 +1125,7 @@ Default +.
.sp
.ti -8
s~+/-~~~\
if + then the compiler will hunt for places in your program
if + then the compiler will hunt for places in the program
where non-standard features are used, and for each place found
it will generate a warning. Default -.
.sp
@ -1168,8 +1168,8 @@ Of course, if debug is a variable nothing can be removed.
A disadvantage of Pascal, the lack of preinitialized data, can be
diminished by making use of the possibilities of the EM optimizer.
For instance, initializing an array of reserved words is sometimes
optimized into 3 EM instructions. To maximize this effect you must initialize
variables as much as possible in order of declaration and array entries
optimized into 3 EM instructions. To maximize this effect
variables must be initialized as much as possible in order of declaration and array entries
in order of decreasing index.
.CH "References"
.in +5

View file

@ -187,9 +187,9 @@ Not recommended unless the own package does not work on some bizarre
machine.
.IP -
COREDEBUG, prints large amounts of information about core management.
Better not define it unless you change the code and it stops working.
Not recommended unless the code is changed and it stops working.
.IP -
SEPID, if you define this you will get an extra procedure that will
SEPID, defining this will add an extra procedure that will
go through a lot of work to scrape the last bytes together if the
system won't provide more.
This is not a good idea if memory is scarce and code and data reside
@ -440,9 +440,9 @@ These are first replaced everywhere in the table by the correct
replacement after which the first three instructions of the
pattern are hashed and the pattern is linked into one of the
256 linked lists.
There is a define CHK_HASH in this module that you
can set if you do not trust the randomness of the hashing
function.
There is a define CHK_HASH in this module that
can be set if the randomness of the hashing
function is not trusted.
.PP
The attention now shifts to optimize().
This routine calls basicblock() for every piece of code between two labels.

View file

@ -7,17 +7,17 @@ Introduction
This is a short description of the newest feature in the
table driven code generator for the Amsterdam Compiler Kit.
It describes how to add register variables to an existing table.
This assumes you have the distribution of October 1983 or later.
It is not clear whether you should read this when starting with
This assumes a distribution of October 1983 or later.
It is not clear whether one should read this when starting with
a table for a new machine,
or whether you should wait till the table is well debugged already.
or waiting till the table is well debugged already.
.NH 1
Modifications to the table itself.
.NH 2
Register section
.PP
You can add just before the properties of the register one
of the following:
Just before the properties of the register one
of the following can be added:
.IP - 2
regvar
.IP -
@ -127,7 +127,5 @@ Afterthoughts.
At the time of this writing the tables for the PDP 11 and the M68000 and
the VAX are converted, in all cases the two byte wordsize versions.
No big problems have occurred, but experience has shown that it is
necessary to check your table carefully for all patterns with locals in them
because if you forget one code will be generated by that one coderule
to use the memoryslot the local is not in.
necessary to check the table carefully for all patterns with locals in them.
Code may be generated that uses the memoryslot the local is not in.

View file

@ -148,7 +148,7 @@ start: ldfps $7400
beq 1b
4
.PE
You have to dig into the kernel to fix it.
Some digging into the kernel is required to fix it.
The following patch will do:
.PS
/* original /usr/sys/sys/slp.c */
@ -265,14 +265,14 @@ The same file slp.c should be patched as follows:
.sp
Some system calls are changed from version 6 to version 7.
A library of system call entries, that make a version 6 UNIX look like
a version 7 system, is provided to enable you to run some
a version 7 system, is provided to run some
useful version 7 utilities, like 'tar', on UNIX-6.
The entry for 'stat' contained two bugs:
the 24-bit file size was incorrectly converted to 32 bits
(sign extension of bit 15)
and the uid/gid fields suffered from sign extension.
.sp
Transferring your files from version 6 to version 7 using 'tar'
Transferring files from version 6 to version 7 using 'tar'
will fail for all files for which
.sp
( (size & 0100000) != 0 )

View file

@ -214,7 +214,7 @@ initialized.
.TT 6.8.2.4-5
.TT 6.8.2.4-6
The ACK-Pascal compiler does not restrict the places from where
you may jump to a label by means of a goto-statement.
a jump to a label by means of a goto-statement is allowed.
.sp
.TT 6.8.3.9-5
.TT 6.8.3.9-6

View file

@ -11,8 +11,8 @@ This table was written to make it run, not to make it clever!
The effect is, that the table written for the intel 8080,
which was made very clever runs faster and requiers less space!!
So, for anyone to run programs on a z80 machine:
You could try to make the table as clever as the one for the i80,
or you could run the i80 table, for that can run on every z80 too.
n attempt could be made to make this table as clever as the one for the i80,
or the i80 table could be used, for that can run on every z80 too.
.NH
IMPLEMENTATION
.PP
@ -51,7 +51,7 @@ in the EM-library.
.IP 4)
In \fIhead_em\fP: an application program returns control to the monitor by
jumping to address 0x20.
If this is not the right way on your system, change it.
Thie may have to be changed on different systems.
For an CPM-machine for example this should be 0x5, to provide a warm boot.
.IP 5)
In \fItail_em\fP: the current version of the z80 back-end has very limited I/O