Initial revision
This commit is contained in:
parent
23a7e7b427
commit
7bac6eb164
3
lang/a68s/cpem/.distr
Normal file
3
lang/a68s/cpem/.distr
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
Makefile
|
||||||
|
READ_ME
|
||||||
|
cpem.p
|
39
lang/a68s/cpem/Makefile
Normal file
39
lang/a68s/cpem/Makefile
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
# $Header$
|
||||||
|
d=../../..
|
||||||
|
h=$d/h
|
||||||
|
|
||||||
|
# Use apc -m.... for cross-compilation.
|
||||||
|
APC=apc
|
||||||
|
# The call to acc has to produce an executable file
|
||||||
|
# Add an -m parameter if needed.
|
||||||
|
ACC=acc
|
||||||
|
|
||||||
|
HEAD=$h/em_spec.h $h/em_pseu.h $h/em_mnem.h $h/em_mes.h $h/pc_size.h
|
||||||
|
LDFLAG=-i
|
||||||
|
|
||||||
|
all: cpem
|
||||||
|
|
||||||
|
cpem.out: cpem.m
|
||||||
|
apc -mint --t -o cpem.out cpem.m
|
||||||
|
|
||||||
|
cpem: cpem.m
|
||||||
|
$(APC) $(LDFLAG) -o cpem cpem.m
|
||||||
|
|
||||||
|
# cpem.m is system dependent and may NOT be distributed
|
||||||
|
cpem.m: cpem.p $(HEAD)
|
||||||
|
-rm -f cpem.m
|
||||||
|
-if $(APC) -I$h -DCHL -O -c.m cpem.p ; then :; else \
|
||||||
|
$(ACC) -o move ../../pc/pem/move.c ; move ; rm -f move move.[oskm] ; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
clean:
|
||||||
|
-rm -f *.[os] *.old
|
||||||
|
|
||||||
|
pr:
|
||||||
|
@pr cpem.p
|
||||||
|
|
||||||
|
xref:
|
||||||
|
xref cpem.p^pr -h "XREF PEM.P"
|
||||||
|
|
||||||
|
opr:
|
||||||
|
make pr ^ opr
|
103
lang/a68s/cpem/READ_ME
Normal file
103
lang/a68s/cpem/READ_ME
Normal file
|
@ -0,0 +1,103 @@
|
||||||
|
this modset adds special facilities to the pascal compiler for
|
||||||
|
compiling the a68s compiler and run-time system. the facilities
|
||||||
|
added are sufficient for their purpose, but no checks for mis-use are
|
||||||
|
made, and anyone using them for other purposes does so at his own risk.
|
||||||
|
|
||||||
|
*******************************************
|
||||||
|
|
||||||
|
********************************************
|
||||||
|
|
||||||
|
these mods introduce the following built-in procedures and functions:
|
||||||
|
|
||||||
|
procedure setstktop(size, a, v: integer);
|
||||||
|
sets the word in (b5-1-a) (?) to the value v. size must be >0.
|
||||||
|
procedure enew(p: nilptr; size: integer);
|
||||||
|
as new, but exactly size words are obtained.
|
||||||
|
procedure edispose(p: nilptr; size: integer);
|
||||||
|
as dispose, but exactly size words are returned.
|
||||||
|
procedure moveleft(from, to: nilptr; size: integer);
|
||||||
|
moves a block of 'size' words starting at 'from' to 'to'.
|
||||||
|
copying starts at the leftmost word.
|
||||||
|
size must be a multiple of word size.
|
||||||
|
function getstktop(size, a: integer): integer;
|
||||||
|
returns the value held in (b5-1-a)(?). size must be >0.
|
||||||
|
function asptr(v: integer): nilptr;
|
||||||
|
returns the value of v as if it were a pointer. the function
|
||||||
|
asptr may be used in any context in a pascal program where nil
|
||||||
|
would be acceptable (in algol 68 terminology - in any strong
|
||||||
|
context). note that the language already provides the function
|
||||||
|
'ord' to perform the converse operation of 'asptr'.
|
||||||
|
function incptr(p: nilptr; v: integer): nilptr;
|
||||||
|
increments the pointer p by v, and returns the result.
|
||||||
|
|
||||||
|
*********************************************
|
||||||
|
|
||||||
|
The following additional compiler options are provided
|
||||||
|
|
||||||
|
e: all procedure names external (even inner ones) (-)
|
||||||
|
g: global declarations compiled (+)
|
||||||
|
when compiling segments of procedures:
|
||||||
|
g- implies that global declarations are merely repetitions
|
||||||
|
(which had better be correct!) of declarations in some
|
||||||
|
master segment.
|
||||||
|
when compiling main program:
|
||||||
|
g- implies that such a master segment is being compiled.
|
||||||
|
w: generate warnings as well as error messages (+)
|
||||||
|
|
||||||
|
all the above options are translated to lower case, thus are case
|
||||||
|
independent. This applies to options in the source file and to those
|
||||||
|
passed via C_EM_PC.
|
||||||
|
|
||||||
|
*********************************************
|
||||||
|
|
||||||
|
----------------------------
|
||||||
|
revision 2.10
|
||||||
|
date: 86/08/19 15:22:09; author: dw; state: Exp; lines added/del: 2/1
|
||||||
|
This lets 'getstktop' know about reals so it does not try to convert what
|
||||||
|
is already a real to a real and get it wrong.
|
||||||
|
----------------------------
|
||||||
|
revision 2.9
|
||||||
|
date: 86/08/13 12:03:49; author: dw; state: Exp; lines added/del: 3/2
|
||||||
|
more of 2.8, label now after goto descriptor
|
||||||
|
----------------------------
|
||||||
|
revision 2.8
|
||||||
|
date: 86/08/11 19:57:32; author: dw; state: Exp; lines added/del: 49/0
|
||||||
|
This makes labels that are jumped to non-locally have a global label
|
||||||
|
associated with them. The labels are of the form _xxxnnn where xxx is the
|
||||||
|
number of the label & nnn is the name of the routine.
|
||||||
|
----------------------------
|
||||||
|
revision 2.7
|
||||||
|
date: 86/07/17 19:42:29; author: dw; state: Exp; lines added/del: 2/1
|
||||||
|
This fixes getstktop. It now uses 'ads' rather than 'adu'. The changes have
|
||||||
|
been made in 'call'.
|
||||||
|
----------------------------
|
||||||
|
revision 2.6
|
||||||
|
date: 86/07/17 19:30:30; author: dw; state: Exp; lines added/del: 15/0
|
||||||
|
This causes all USER procedural identifiers ( <PRO> ) to be in upper case
|
||||||
|
Modifacation to 'argident'. (m_a_i_n) is left in lower case for 'ld'.
|
||||||
|
----------------------------
|
||||||
|
revision 2.5
|
||||||
|
date: 86/07/17 19:25:10; author: dw; state: Exp; lines added/del: 7/1
|
||||||
|
This forces the compiler to take note of where an EXTERN procedure is
|
||||||
|
declared and make it STATICALLY be there.
|
||||||
|
----------------------------
|
||||||
|
revision 2.4
|
||||||
|
date: 86/07/17 19:22:39; author: dw; state: Exp; lines added/del: 13/1
|
||||||
|
'r' option sets the effective upperbound as high as is possible
|
||||||
|
----------------------------
|
||||||
|
revision 2.3
|
||||||
|
date: 86/07/17 19:20:20; author: dw; state: Exp; lines added/del: 19/1
|
||||||
|
This implements incptr.
|
||||||
|
----------------------------
|
||||||
|
revision 2.2
|
||||||
|
date: 86/03/14 20:35:27; author: dw; state: Exp; lines added/del: 39/3
|
||||||
|
This should cure the problem of the compiler not allowing output to the
|
||||||
|
file OUTPUT from a seperatly compiled segment. It does this by always
|
||||||
|
setting up INPUT and OUTPUT.
|
||||||
|
----------------------------
|
||||||
|
revision 2.1
|
||||||
|
date: 86/03/03 21:53:06; author: dw; state: Exp; lines added/del: 278/26
|
||||||
|
This is the alternate form of the compiler as modified by CHL
|
||||||
|
It offers several extentions to the existing compiler needed to compile
|
||||||
|
the ALGOL68S compiler.
|
||||||
|
=============================================================================
|
3821
lang/a68s/cpem/cpem.p
Normal file
3821
lang/a68s/cpem/cpem.p
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue