Avoid informal usage of 'you', updated installation manual
This commit is contained in:
parent
78ca80f4d5
commit
8f0ef636ab
|
@ -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/
|
||||
|
|
|
@ -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
|
||||
|
|
17
doc/cg.doc
17
doc/cg.doc
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
671
doc/install.doc
671
doc/install.doc
File diff suppressed because it is too large
Load diff
|
@ -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,
|
||||
|
|
41
doc/ncg.doc
41
doc/ncg.doc
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
10
doc/peep.doc
10
doc/peep.doc
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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 )
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue