==== imp/makep3_gen.txt ====
offer p3gens
parm nocheck
edit perq3gen02s,p3gens
a/%incl/d1i<itrimp_hostcodes>
a'd1i<ercs01:ebits_ecodes5>
a'd1i<tripcnsts>
a'd1i<itrimp_tform2s>
a'd1i<ercs01:ebits_especs2>
e
imp p3gens,.null
offer p3gens,ercs01
==== imp/opt04s.txt ====
!
! 25Sep90 Correction to base adjust array in ctop which was wrong
!
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
! Opnd2 is either a 32 bit const with the size (ACC) as value or
! the ptr or arrayhead as normal operand.
!
! VMY X1 is now dim<<28!maxdim<<24!array name(where known)
! Opnd2 is either a 32 bit const with DV offset into const area or
! the arrayhead as a standard operand
!
! AINDX X1 is ELSIZE<<20 !spare
==== imp/makep3_p1.txt ====
edit poneb01s,p3p1s
i<itrimp_perq3poneas>
ta/%inc/
d1i<itrimp_hostcodes>
a'
d1i<itrimp_tform2s>
m/%constlonglongreal/
(a/r'/a16d/'/i/'/)154
e
imp p3p1s,.null
offer p3p1s,ercs01
==== imp/makep3_p2.txt ====
edit timp02s,p3p2s
i<itrimp_perq3ptwoas>
ta/%inc/
d1i<itrimp_hostcodes>
a'
d1i<tripcnsts>
a'
d1i<itrimp_tform2s>
e
imp p3p2s,.null
offer p3p2s,ercs01
==== imp/makep3_opt.txt ====
edit opt03s,p3pos
i<itrimp_perq3optas>
ta/%inc/
d1i<itrimp_hostcodes>
a'
d1i<itrimp_tform2s>
a'
d1i<tripcnsts>
e
imp p3pos,.null
offer p3pos,ercs01
==== imp/make88k_gen5.txt ====
parm nocheck
edit drsgen05s,dgens
a/%incl/d1i<itrimp_hostcodes>
a'd1i<ercs01:ebits_ecodes28>
a'd1i<tripcnsts>
a'd1i<itrimp_tform2s>
a'd1i<ercs01:ebits_especs5>
ta/host=/r6i/DRS/
e
imp dgens,.null
transfer dgens,castle(ercc07,pete)impdir/sources/d386p4s10.i,file
==== imp/make88k_p1.txt ====
edit poneb02s,m88p102s
i<itrimp_m88kponeas>
ta/%inc/
d1i<itrimp_hostcodes>
a'
d1i<itrimp_tform2s>
m/%constlonglongreal/
ta/host=/i/PERQ3
/d
1e
imp m88p102s,m88p1y
permit m88p102s
==== imp/make88k_p2.txt ====
edit timp06s,m88p206s
i<itrimp_m88kptwoas>
ta/%inc/
d1i<itrimp_hostcodes>
a'
d1i<tripcnsts>
a'
d1i<itrimp_tform2s>
ta/host=/i/PERQ3
/d1
e
imp m88p206s,y
permit m88p206s
==== imp/make88k_p3.txt ====
edit opt04s,m88p305s
i<itrimp_M88Koptas>
ta/%inc/
d1i<itrimp_hostcodes>
a'
d1i<itrimp_tform2s>
a'
d1i<tripcnsts>
e
imp m88p305s,.null
permit m88p305s
==== imp/make88k_p4.txt ====
parm nocheck
edit m88kp405s,m88p419s
a/%incl/d1i<itrimp_hostcodes>
a'd1i<ercs01:ebits_ecodes28>
a'd1i<tripcnsts>
a'd1i<itrimp_tform2s>
ta/host=/r6i/Perq3/
e
imp m88p419s,.null
permit m88p419s
==== imp/makeoptimp.txt ====
parm opt,maxdict,nolist
imp ercc07:itrimp_ibmponeas+ercc07:poneb02s,ip1ox,l0
imp ercc07:itrimp_ibmptwoas+timp03s,ip23ox,l1
imp ercc07:itrimp_ibmoptas+opt03s,iopt3ox,l2
imp cserv01s,cserv01ox,l4
imp ibmgen05s,igen5ox,l5
parm map
LINK
IP1oX
IP23oX
IOPT3oX
IGEN5oX
CSERV01oX
.END
P0Y
MODIFY P0Y
SATISFY REFS
.ALL
SATISFY DATA
.ALL
SUPPRESS
==== ercc04_emas-a ====
ftp> ls
200 PORT Command OK (129.215.16.14 129.75 (33099))
150 Data connection opened
-rw------- 41776 ercc08_ercc04 archive 8192 Sep 30 1991 bob
-rw------- 10608 ercc08_ercc04 archive 16384 Jun 23 1988 e3b
-rw------- 37396 ercc08_ercc04 archive 143360 Dec 1 1990 editl
-rw------- 10204 ercc08_ercc04 archive 86016 Jun 16 1988 edwin7
-rw------- 7216 ercc08_ercc04 archive 344064 Jun 16 1988 edwins2900
-rw------- 34988 ercc08_ercc04 archive 77824 Aug 25 1990 emas3specs
-r-------- 16552 ercc08_ercc04 archive 77824 Jun 23 1988 emas3specs[1]
drwx------ 17908 ercc08_ercc04 ercc08_ercc04 10 Aug 25 1990 ercc63
-rw------- 34360 ercc08_ercc04 archive 61440 Aug 25 1990 fonts
-rw------- 32608 ercc08_ercc04 archive 8192 Aug 25 1990 heaps
drwx------ 46128 ercc08_ercc04 ercc08_ercc04 1 Sep 30 1991 imptoc
drwx------ 41876 ercc08_ercc04 ercc08_ercc04 49 Jul 1 1992 kanji
-rw------- 37500 ercc08_ercc04 archive 8192 Dec 1 1990 lexicon
-rw------- 53180 ercc08_ercc04 archive 385024 Jul 1 1992 mail6l
-rw------- 52764 ercc08_ercc04 archive 368640 Jul 1 1992 mail7l
-rw------- 6092 ercc08_ercc04 archive 45056 May 19 1988 mail85
-rw------- 5988 ercc08_ercc04 archive 335872 May 19 1988 mail86
-rw------- 6196 ercc08_ercc04 archive 958464 May 19 1988 mail87
==== ercc04_emas-2900 ====
ftp> ls
200 PORT Command OK (129.215.16.14 129.155 (33179))
150 Data connection opened
-rw------- 12532 ercc08_ercc04 archive 36864 May 16 1983 a
-rw------- 29968 ercc08_ercc04 archive 20480 Jan 20 1981 acr5
-rw------- 29240 ercc08_ercc04 archive 8192 Feb 18 1981 acrs
-rw------- 25280 ercc08_ercc04 archive 315392 Jul 27 1981 agss
-r-------- 23296 ercc08_ercc04 archive 315392 Sep 3 1981 agss[2]
-r-------- 22028 ercc08_ercc04 archive 315392 Jan 6 1982 agss[1]
-rw------- 25908 ercc08_ercc04 archive 49152 Jul 1 1981 allsorts
-rw------- 26016 ercc08_ercc04 archive 135168 Jun 29 1981 allviewlogs
-r-------- 24756 ercc08_ercc04 archive 167936 Aug 10 1981 allviewlogs[1]
-rw------- 28716 ercc08_ercc04 archive 8192 Mar 23 1981 autofile
-rw------- 5516 ercc08_ercc04 archive 249856 Mar 1 1985 b01conn
-rw------- 5408 ercc08_ercc04 archive 315392 Mar 1 1985 b02direct
-rw------- 5304 ercc08_ercc04 archive 81920 Mar 1 1985 b07ss
-rw------- 37196 ercc08_ercc04 archive 12288 Jun 3 1980 bad
-rw------- 16628 ercc08_ercc04 archive 24576 Oct 13 1982 bads
-rw------- 16524 ercc08_ercc04 archive 24576 Oct 13 1982 bady
-rw------- 32336 ercc08_ercc04 archive 12288 Oct 28 1980 bits
-rw------- 24652 ercc08_ercc04 archive 28672 Aug 10 1981 bobpd
==== ecmi01/robot52.txt ====
.pg 5.2 A practical example: CONSIGHT-1
The CONSIGHT-1 [6] system was developed by General Motors as a vision system
to permit some of their robots to cope with 2.5-D parts arriving at the
robot's work cell on a conveyor belt, at random intervals and in random
orientations. The essential ingredients are a linear array camera looking down
onto the conveyor belt, viewing a slice across the belt, and two light
projectors each projecting a plane of light. The two planes of light and the
viewing plane of the camera all intersect at the surface of the belt, in a
line across the belt. The side view of the arrangement therefore looks like
this: .sp 16 .br Normally, when there is nothing on the belt, the camera sees
the line of light caused by the two projectors. When an object approaches,
just before it reaches the 'viewing line', it obstructs one of the planes of
light but not both, so that the camera still sees a line of light straight
across the belt. When the object is crossing the 'viewing line', it prevents
both of the planes of light from reaching the surface of the belt, and so the
camera only sees part of a line of light across the belt. The dark portion of
the line is the width of the object there:
.nf
==== ecmi01/robot53.txt ====
.pg 5.3 2-D grey level vision: the GM chip spotter
Silhouette vision, while simple, is not very useful. It requires reasonable
lighting, and the interior of the image of objects offers no information.
Grey level images, in which each pixel's value is a grey level typically in
the range 0-15 or 0-255 rather than merely 0 or 1, carry vastly more
information. Methods of processing such images are described in [5]; they are
correspondingly more sophisticated than those for silhouettes. This section
describes one practical application, the General Motors 'chip spotter'. It has
various idiosyncratic features, but then most practical vision systems do!
.ti 4
This particular vision system was devised for the task of automatically
inspecting integrated circuit chips mounted on a heat sink. The inspection has
two purposes - the first is to detect chips with certain mechanical
manufacturing faults so that they can be rejected rapidly, the second is to
find the orientation of the chip on the heat sink so that automatic test
equipment can be correctly lowered onto it. The chip and heat sink forms
part of the high energy ignition system on all General Motors cars.
.nf
==== ecmi01/robot54.txt ====
.pg 5.4 3-D visual processing
Three dimensional perception would clearly be very useful to a robot - for
instance, it would then be possible for it to tell whether parts were properly
aligned with each other before trying to fit them together. There are
essentially two ways of acquiring the range information on which to base 3-D
vision. The first is by measuring the time of flight of some kind of wave,
sound or light or radar, from a known transmitting point reflected to a known
receiving point. Various problems make this unsuitable for robotics,
unfortunately:
.nf
a) if the transmitted wave spreads it is hard to be sure where the reflection
is coming from; if it does not spread then it is necessary to scan the
transmitted wave over the scene, and this takes time to do
b) sound travels at around 330 m/s in air. Awaiting the refelction from a n o
object only 1.5m away wastes around 0.01 secs, so that the time needed to
build an adequate image is uneconomically large
c) light and other elctromagnetic radiation travels at nearly 300,000,000 m/s
in air. It would therefore be necessary to be able to measure a time
difference of only 0.00000001 secs in order to be able to detect the re
reflection, and considerably smaller times in order to be able to calculate
the range with any accuracy. While this might be technologically feasible,
==== ecmi01/ecmu05_check.txt ====
check:-
recorded(Sentence,verb(Person,Number,Tense,
==== ecmi01/oldai2_findall.txt ====
findall(X,P,L) :-
asserta(found([])),
call(P),
rec(X),
fail.
findall(X,P,L) :-
retract(found(L)),!.
rec(X) :-
retract(found(L)),!,
append(L,[X],L1),
asserta(found(L1)).
append([],X,X).
append([X|L1],L2,[X|L3]) :- append(L1,L2,L3).
==== ecmi01/oldai2_queens.txt ====
/* NON-ATTACKING QUEENS.
Peter Ross 24 Nov 81.
This generates solutions to the problem of placing N queens on an NxN
board so that none attacks any other. To use, call queens(N) and it
will print out a board with queens represented by 'Q'.
Note: no solutions for N=2,3.
speed of solution drops rapidly as you increase N - N=8 may
cause you a ten-minute wait!
Meta-level ideas: represent a position of a queen as p(r,c) meaning
a queen in row r, column c. Then a solution will be represented
as N of these with no r occuring twice (queens can't be on the
same row) and no c occuring twice (queens can't be on the same
column). THEREFORE we can order the solution, say by taking the
rows in descending order (i.e. from N to 1). The c's will just
be some permutation of 1 to N. So, tasks are (taking, say, N=4):
a) form the rows set [4,3,2,1]
b) form a permutation of it, e.g. [3,1,4,2]
c) construct a position from this, viz.
[p(4,3),p(3,1),p(2,4),p(1,2)]
==== ecmi01/queens.txt ====
/* NON-ATTACKING QUEENS.
Peter Ross 24 Nov 81.
This generates solutions to the problem of placing N queens on an NxN
board so that none attacks any other. To use, call queens(N) and it
will print out a board with queens represented by 'Q'.
Note: no solutions for N=2,3.
speed of solution drops rapidly as you increase N - N=8 may
cause you a ten-minute wait!
Meta-level ideas: represent a position of a queen as p(r,c) meaning
a queen in row r, column c. Then a solution will be represented
as N of these with no r occuring twice (queens can't be on the
same row) and no c occuring twice (queens can't be on the same
column). THEREFORE we can order the solution, say by taking the
rows in descending order (i.e. from N to 1). The c's will just
be some permutation of 1 to N. So, tasks are (taking, say, N=4):
a) form the rows set [4,3,2,1]
b) form a permutation of it, e.g. [3,1,4,2]
c) construct a position from this, viz.
[p(4,3),p(3,1),p(2,4),p(1,2)]
==== ecmi01/ff_main.txt ====
% File: ECMI01.FF_MAIN
% Author: Peter Hammond, IC, 1982. Rewritten by Peter Ross
% Updated: 30 Nov 1983
% Purpose: FAULFINDER's top level
% Top level, after using ffload/1 from 'load' to set up a database, is
% find_fault/0.
find_fault :-
initialise,
prompt(Old, '..? '),
writef('The system will ask you some questions about your problem.\l'),
explain_replies,
nl, nl,
top_fault(Name),
find_out(Name, State, [find_fault]),
describe(Name, State).
find_fault :-
\+ top_fault(_),
writef('You haven''t read in a specific description file, sunshine.\l'),
writef('Use ffload(File) to read one (e.g. ecmi01.ff_gasheater).\l').
==== ecmi01/lisp.txt ====
%begin
%EXTERNALROUTINESPEC PROMPT(%STRING(15) S)
!*-%EXTERNALROUTINE LISP INTP(%INTEGER SPACE, INITMODE)
%const %integer initmode = 1
!
! ***** READ ROUTINES *****
!
%INTEGERFNSPEC RATOM
%INTEGERFNSPEC READ SEXP(%STRING(15) PMPT)
!
! ***** PRINT ROUTINES *****
!
%ROUTINESPEC PRINT CHARS(%STRING(72) PHRASE)
%STRING(15)%FNSPEC NUMBER(%INTEGER I)
%STRING(72)%FNSPEC PNAME(%INTEGER INDEX)
%ROUTINESPEC PRINT(%INTEGER INDEX)
!
! ***** LISP ROUTINES *****
!
%INTEGERFNSPEC PUSH(%INTEGER INDEX)
%INTEGERFNSPEC CONS(%INTEGER CAR, CDR)
==== ecmi01/newsys.txt ====
UNIX on the VAX-11/750
----------------------
The new UNIX system has some significant differences from the old one. Your best
course would be to look at (a) this document (b) the online documentation for
the commands 'man', 'more', 'apropos' and 'whatis' in that order. The list below
shows which commands are new or changed; a few new commands aren't mentioned,
either because they are too esoteric or because they are useless without extra
hardware (such as networking). A '+' in the left-hand column indicates that the
command is NEW.
The information below is the best that was available before the software
is available on our VAX - so don't treat it as definitive.
The control characters should be as before, viz. control-Z for end-of-file,
control-C to interrupt. The character for stopping a job (something which
didn't exist on the old UNIX) is control-X, not control-Z as the documentation
will tell you. The documentation about the whole system, when it arrives, will
actually be correct apart from the business of control-key functions - these
will be changed to what we are more accustomed to (i.e. as above).
==== ecmi01/rselong.txt ====
RESEARCH INTO THE CONSTRUCTION AND APPLICATION OF INTELLIGENT KNOWLEDGE
BASED SYSTEMS THAT AID COMPUTER USERS
Dr. Peter Ross,
Department of Artificial Intelligence,
University of Edinburgh.
INTRODUCTION
Intelligent knowledge-based (IKB) systems, sometimes referred to as 'expert
systems', are computer programs or sets of programs which contain explicit
knowledge concerning some particular area of human expertise, organised in
such a way that they can function as an expert consultant in that area. Some
existing examples are MECHO (which solves problems in mechanics - [Bundy79]),
MYCIN (which diagnoses bacterial infections - [Shortliffe76]), MOLGEN (which
designs molecular genetic experiments - [Stefik81]) and EL (which analyses
analogue electric circuits [Stallman77]). They contain the factual knowledge
of their subject as sets of rules - for example, one of MYCIN's rules is
If (a) the infection is primary-bacteremia, and
(b) the site of the culture is one of the sterile sites, and
==== ecmi01/random.txt ====
/* Simple random number generator.
Good for numbers in some range less than 100,000 long.
Called thus:
random(X, Lower, Upper)
where Lower and Upper must be instantiated to integers,
and X must be uninstantiated. Instantiates X to an integer
in the range Lower ... Upper-1.
Cobbled up by Peter Ross, 3 May 1983
*/
seed(27134, 9213, 17773).
getrand(X) :- seed(A,B,C),
A1 is (A*171) mod 30269,
B1 is (B*170) mod 30307,
C1 is (C*172) mod 30323,
retract(seed(A,B,C)),
asserta(seed(A1,B1,C1)),
X is (7*A + 11*B + 13*C) mod 100000.
random(X,Lower,Upper) :- (nonvar(X); var(Lower); var(Upper); Upper =< Lower),
==== ecmi01/findall.txt ====
findall(X,P,L) :-
asserta(found([])),
call(P),
rec(X),
fail.
findall(X,P,L) :-
retract(found(L)),!.
rec(X) :-
retract(found(L)),!,
append(L,[X],L1),
asserta(found(L1)).
append([],X,X).
append([X|L1],L2,[X|L3]) :- append(L1,L2,L3).
==== ecmi01/diff.txt ====
:- op(700,xfx,:).
:- op(200,xfy,@).
go :- write('Want instructions? Type y or n and press return...'), nl,
prompt(Old,'y/n? '),
get(C), skip(10),
tellall(C),
prompt(Yn,'diff: '),
dv.
tellall(C) :- (C=89;C=121),
emas(ty,'ecmi01.ai2_diffnotes').
tellall(C).
dv :- repeat, read(T), (T=stop; derive(T), fail).
derive(T:X) :- T : X, !.
X : [U] :- X : U.
X : [U|V] :- d(X,U,W), simplify(W,Z), Z : [V].
X : Y :- d(X,Y,W), simplify(W,Z), nl, output(Z), nl, nl.
==== ecmi01/oldai2_grtrans.txt ====
expr(Z,S0,S) :- term(Z,S0,S).
expr(Z,S0,S) :- term(X,S0,S1),c(S1,43,S2),expr(Y,S2,S),Z is X+Y.
expr(Z,S0,S) :- term(X,S0,S1),c(S1,45,S2),expr(Y,S2,S),Z is X-Y.
term(Z,S0,S) :- number(Z,S0,S).
term(Z,S0,S) :-
number(X,S0,S1),c(S1,42,S2),
write('s2 '),write(S2),nl,
write('s '),write(S),nl,
term(Y,S2,S),
write('y '),write(Y),nl,
write('x '),write(X),nl,
integer(X),integer(Y),
Z is X*Y.
term(Z,S0,S) :- number(X,S0,S1),c(S1,47,S2),term(Y,S2,S),Z is X/Y.
number(X,S0,S) :- c(S0,C,S),48=<C,C=<57,X is C-48.
number(X,S0,S) :- c(S0,43,S1),number(X,S1,S).
number(X,S0,S) :- c(S0,45,S1),number(Y,S1,S),X is -Y.
==== ecmi01/oldai2_stuart.txt ====
/* this file defines various facts about the House of Stuart. */
/* The various fact declarations in it should be read thus: */
/* father(person1,person2). means person1 is father of person2. */
/* mother( " , " ). " " " mother " " . */
/* and so on.
Note that 'ggparent' stands for "great-grand-parent". */
father(robert_II,robert_III).
father(robert_III,james_I).
father(james_I,james_II).
mother(joan_beaufort,james_II).
father(james_II,james_III).
father(james_II,alexander_duke_of_albany).
father(james_II,mary).
/* the next two relationships are for historical */
/* convenience. It saves having to clutter things */
/* up with lord_james_hamilton's children ... */
/* Note prolog DOESN'T know what 'ggfather' means. */
ggfather(lord_james_hamilton,matthew_earl_of_lennox).
ggmother(mary,matthew_earl_of_lennox).
==== ecmi01/ai2_scons.txt ====
/* This file defines three useful predicates:
retractall(X) which retracts all clauses beginning with
X, e.g. retractall(fry(_)) will retract
the clause fry(fish) and the clause
fry(X) :- (fishy(X);vegatable(X)).
scons(File) which consults the file File, but doesn't
print extra information on your terminal
(scons = Silent CONSult)
srecons(File) which does the same but reconsults
(srecons = Silent RECONSult)
*/
retractall(X) :- retract(X), fail.
retractall(X) :- retract((X:-Y)), fail.
retractall(_). % this succeeds when the other two have failed
% because nothing is left to retract.
scons(File) :-
seeing(Input),
see(File),
repeat,
==== ecmi01/stuart.txt ====
/* this file defines various facts about the House of Stuart. */
/* The various fact declarations in it should be read thus: */
/* father(person1,person2). means person1 is father of person2. */
/* mother( " , " ). " " " mother " " . */
/* and so on.
Note that 'ggparent' stands for "great-grand-parent". */
father(robert_II,robert_III).
father(robert_III,james_I).
father(james_I,james_II).
mother(joan_beaufort,james_II).
father(james_II,james_III).
father(james_II,alexander_duke_of_albany).
father(james_II,mary).
/* the next two relationships are for historical */
/* convenience. It saves having to clutter things */
/* up with lord_james_hamilton's children ... */
/* Note prolog DOESN'T know what 'ggfather' means. */
ggfather(lord_james_hamilton,matthew_earl_of_lennox).
ggmother(mary,matthew_earl_of_lennox).
==== ecmi01/ai2_setstuff.txt ====
/* This file defines various handy relationships involving sets.
Here 'set' actually means 'list', but it sounds better ... */
/* member(H,List). Is H one of the elements of List? */
member(H,[H|_]). /* yes, if its the first member! */
member(H,[_|T]) :- member(H,T). /* yes, if its in the tail. N.B. */
/* T will be a list. Note that you */
/* fail if you get to asking for */
/* member(H,[]) , since this doesnt */
/* match either clause's head */
/* intersect(A,B,I). I is the intersection of A and B */
intersect([H|T],B,[H|U]) :-
member(H,B), /* if the answer's got H in it, then */
intersect(T,B,U). /* it must be in B */
intersect([_|T],B,U) :-
intersect(T,B,U). /* If first clause failed, we can */
/* ignore the head of first list */
intersect(_,_,[]). /* If the second also failed, the */
/* intersection is empty. */
==== ecmi01/oldai2_family.txt ====
/* definition of some family relationships */
parent(X,Y) :- mother(X,Y). /* X is the parent of Y if ... */
parent(X,Y) :- father(X,Y). /* Or if ... */
gparent(X,Y) :- /* X is grandparent of Y if */
parent(X,A), /* X is parent of (someone) A, */
parent(A,Y). /* and A is parent of Y. */
ggparent(X,Y) :- /* X is the great-grandparent of Y if */
gparent(X,A), /* X is the grandparent of (someone) A */
parent(A,Y). /* and A is the parent of Y. */
/* N.B. alternative: "X is parent of A */
/* and A is gparent of Y". It's the */
/* same thing here - why? If you went */
/* on to define 'gggparent' for use in */
/* the "stuart" database, the choice */
/* WOULD matter. Why? look at the file */
/* "ai2_stuart" ... */
==== ecmi01/family.txt ====
/* definition of some family relationships */
parent(X,Y) :- mother(X,Y). /* X is the parent of Y if ... */
parent(X,Y) :- father(X,Y). /* Or if ... */
gparent(X,Y) :- /* X is grandparent of Y if */
parent(X,A), /* X is parent of (someone) A, */
parent(A,Y). /* and A is parent of Y. */
ggparent(X,Y) :- /* X is the great-grandparent of Y if */
gparent(X,A), /* X is the grandparent of (someone) A */
parent(A,Y). /* and A is the parent of Y. */
/* N.B. alternative: "X is parent of A */
/* and A is gparent of Y". It's the */
/* same thing here - why? If you went */
/* on to define 'gggparent' for use in */
/* the "stuart" database, the choice */
/* WOULD matter. Why? look at the file */
/* "ai2_stuart" ... */
==== ecmi01/scunit.txt ====
(*$L #5:SCUNIT.LST.TEXT*)
(*$S+*)
UNIT SCUNIT;
(*Copyright 1980 Kenneth L. Bowles, All rights reserved. Permission is
hereby granted to use this material for any non-commercial purpose*)
(*This version includes specific constants for Terak 8510A*)
INTERFACE
TYPE
SCCHSET = SET OF CHAR;
SCKEYCOMMAND = (BACKSPACEKEY,ETXKEY,ESCKEY,DELKEY,UPKEY,DOWNKEY,
LEFTKEY,RIGHTKEY,NOTLEGAL);
VAR
SCCH:CHAR;
PROCEDURE SCINITIALIZE;
PROCEDURE SCLEFT;
PROCEDURE SCRIGHT;
PROCEDURE SCUP;
PROCEDURE SCDOWN;
==== ecmi01/liza.txt ====
/* Simple ELIZA
-- a natural language misunderstander --
Alan Bundy 15-Nov-79, Richard O'Keefe 17-Feb-81
Peter Ross 5-Nov-81
*/
:-(['ecmi25.util_readin']). % load read_in + necessary support.
/* The top level: call liza (so named 'cos it's a mini-version of ELIZA)
to get going.
The predicate read_in reads in sentences, currently ending with a
full stop, exclamation mark or question mark. Thus
read_in(X)
will read in
hello there.
as
X = [hello,there,.]
NOTE: use lower-case letters at the front of words, this is a simple
beast!
*/
==== ecmi01/ai2_readin.txt ====
/* Read in a sentence.
Clearly, when reading in text character by character (using get0),
it is essential NEVER to backtrack over a get0 goal, otherwise you'd
have lost the character it read in. Thus, when you get a character,
you must make sure it gets used. If it can't get used in one context
(e.g. when constructing a word, and you reach a space) it must be
passed back to predicates that can use it.
Thus, for example, readword has three arguments below: the first is
a character, potentially the first of a word but perhaps a bit of
interword filling (space or tab), the second is uninstantiated at
first but will be a word eventually, the third is uninstantiated but
will finally be instantiated to the character that followed the word
- i.e. the character that told readword it had reached the end of a
word.
Similarly, restsent (which is "higher-level" than readword) has three
arguments: the first is the word just read, the second is the
character following that word (which has to be handed forward for the
reasons explained above) and the third is a variable that will be
instantiated by restsent to a list consisting of the rest of the
sentence. The first argument is necessary in order that restsent can
==== ecmi01/ecmu19_tillities.txt ====
/* UTILITIES */
/* """"""""" */
printstring([]):-!.
printstring([H|T]):-put(H),printstring(T).
read_in([W|Ws]):-get0(C),readword(C,W,C1),restsent(W,C1,Ws).
restsent(W,_,[]):-lastword(W),!.
restsent(W,C,[W1|Ws]):-readword(C,W1,C1),restsent(W1,C1,Ws).
readword(C,W,C1):-singlec(C),!,name(W,[C]),get0(C1).
readword(C,W,C2):-in_word(C,NewC),!,get0(C1),restword(C1,Cs,C2),name(W,[NewC|Cs]).
readword(C,W,C2):-get0(C1),readword(C1,W,C2).
restword(C,[NewC|Cs],C2):-in_word(C,NewC),!,get0(C1),restword(C1,Cs,C2).
restword(C,[],C).
==== ecmi01/ks299_doc.txt ====
PRACTICAL EXERCISE: A SIMPLE EXPERT SYSTEM SHELL, WRITTEN IN PROLOG
Peter Ross
1. INTRODUCTION
This describes how to use a simple expert system shell, and gives a number
of exercises based on it. The shell is modelled loosely on Teknowledge's
KS-300 (and so is called ks299, since it's not quite the full shilling).
The shell can be found in
UNIX: /u4/peter/prolog/ks299/int
EMAS: ECMI01.KS299_INT
Neither version needs any external utilities. A sample knowledge base can
be found in
UNIX: /u4/peter/prolog/ks299/wine
EMAS: ECMI01.KS299_WINE
==== ecmi01/grtrans.txt ====
expr(Z,S0,S) :- term(Z,S0,S).
expr(Z,S0,S) :- term(X,S0,S1),c(S1,43,S2),expr(Y,S2,S),Z is X+Y.
expr(Z,S0,S) :- term(X,S0,S1),c(S1,45,S2),expr(Y,S2,S),Z is X-Y.
term(Z,S0,S) :- number(Z,S0,S).
term(Z,S0,S) :-
number(X,S0,S1),c(S1,42,S2),
write('s2 '),write(S2),nl,
write('s '),write(S),nl,
term(Y,S2,S),
write('y '),write(Y),nl,
write('x '),write(X),nl,
integer(X),integer(Y),
Z is X*Y.
term(Z,S0,S) :- number(X,S0,S1),c(S1,47,S2),term(Y,S2,S),Z is X/Y.
number(X,S0,S) :- c(S0,C,S),48=<C,C=<57,X is C-48.
number(X,S0,S) :- c(S0,43,S1),number(X,S1,S).
number(X,S0,S) :- c(S0,45,S1),number(Y,S1,S),X is -Y.
==== ecmi01/useful.txt ====
/* call the editor */
em(File) :-
(retract(emfile(X));true),
assert(emfile(File)),
emas(em,File).
rem(File) :-
em(File),
reconsult(File).
em :- emfile(File),
emas(em,File).
rem :- emfile(File),
emas(em,File),
reconsult(File).
==== ecmi01/oldai2_simplify.txt ====
/* SIMPLIFY.
The aim of the predicate simplify is to reshuffle expressions which
are sums of unknowns (represented by Prolog atoms) and integers so
that all the unknowns are at the start and the sum of all the
integers is at the end, e.g.
x+3+y+4+z gets reshuffled to x+y+z+7
This is (a) useful in mathematical manipulations by computer
and (b) an illustration of a useful technique called
"difference pairs".
To summarise the idea: a structure such as +(a,+(b,c)) could be
drawn as
+
/ \
a +
/ \
b c
The idea is that when constructing such things you can represent
intermediate stages as the "difference" of
+
==== ecmi01/ai2_news.txt ====
Differences between PROLOG version 4 and versions 3 and 2
---------------------------------------------------------
There is a new version (version 4) as from 10 February 82 with the following
bugs fixed:
1) The bugs with name and =.. have been fixed.
2) The arithmetic bugs involving negative numbers have been fixed.
3) The debugging has been improved slightly. It is now possible to trace past
cuts. Cuts are, in fact, now invisible to the tracing - like a few other
evaluable predicates. Also the system no longer traces various obscure parts
of the top level that used to appear before.
4) prompt(_,_) will not crash anymore if given a long atom. The atom can be any
length, but note that the prompt actually used will be a truncated version
of this if it too long. This seems to be an EMAS limitation. The current max
length is 15.
5) The system now restores its event and interrupt handlers properly after
returning from programs called through emas(_) or emas(_,_). This, for one
thing, allows various editors other than the standard one to be used from
within PROLOG (they used to mess things up so that you couldn't interrupt
properly after using them).
6) The interrupt handling system has been improved somewhat, so that there
should be very few of the "funny crashes". One way to make them happen
==== ecmi01/eec.txt ====
%
% This file contains some facts about countries of the EEC, expressed in Prolog.
% (N.B. there are many other ways of expressing these facts in Prolog - follow
% the lectures!).
%
% The file is accessible to you as ECMI01.AI2_EEC and you can "read it in"
% when you are talking to the Prolog interpreter, by the Prolog command
% ['ecmi01.ai2_eec'].
% - the square brackets, single quotes and the final full stop all being
% necessary.
% Written by Peter Ross, 11 October 1982
area(belgium,11781).
currency(belgium,franc).
population(belgium,9855).
exports(belgium,['manufactured goods',coal,steel,textiles]).
capital(belgium,brussels).
roads(belgium,11277).
natday(belgium,july,21).
==== ecmi01/ecmu05_project.txt ====
/* the morphology charts */
/* Group 1 nouns */
ending(n1,"a",noun(nom,sing,_,_,_,_)).
ending(n1,"am",noun(acc,sing,_,_,_,_)).
ending(n1,"ae",noun(gen,sing,_,_,_,_)).
ending(n1,"ae",noun(dat,sing,_,_,_,_)).
ending(n1,"a",noun(abl,sing,_,_,_,_)).
ending(n1,"ae",noun(nom,plural,_,_,_,_)).
ending(n1,"as",noun(acc,plural,_,_,_,_)).
ending(n1,"arum",noun(gen,plural,_,_,_,_)).
ending(n1,"is",noun(dat,plural,_,_,_,_)).
ending(n1,"is",noun(abl,plural,_,_,_,_)).
/* Group 2 nouns */
/* type a... */
ending(n2a,"us",noun(nom,sing,_,_,_,_)).
==== ecmi01/ks299_wine.txt ====
% File: /u4/peter/prolog/ks299/wine
% Author: Peter Ross
% Updated: 6 Sep 84
% Purpose: a simple knowledge base for the KS299 expert system shell
'What is the overall taste (delicate/average/strong)'
finds tastiness of meal.
'Is there a sauce (yes/no)'
finds has_sauce.
'What sort of sauce (spicy/creamy/tomatoey/other)'
finds sauce of meal.
'What body do you prefer (light/medium/full)'
finds preferred_body of wine.
'What colour do you prefer (red/white)'
finds preferred_colour of wine.
'What sweetness do you prefer (dry/medium/sweet)'
==== ecmi01/ai2_recurse.txt ====
/* Some examples of recursion.
*
* member(X,List) succeeds if X is a member of List
* append(L1,L2,Ans) succeeds if Ans is the concatenation of
* L1 and L2
* get_n(L,Ans,N) succeeds if Ans is the list containing the
* first N elements of L
*/
member(X,[X|L]).
member(X,[_|L]) :- member(X,L).
append([X|L3],L4,[X|Ans1]) :- append(L3,L4,Ans1).
append([],L,L).
get_n([],[],_).
get_n([X|L1],[X|Ans1],N) :-
N>0,
N1 is N-1,
get_n(L1,Ans1,N1).
get_n(_,[],0).
==== ecmi01/rserefs.txt ====
REFERENCES
[Bundy79] A.Bundy, L.Byrd, G.Luger, C.Mellish and M.Palmer, Solving
mechanics problems using meta-level inference, in Expert
Systems in the Micro-electronic Age, ed. D.Michie, Edinburgh
University Press, 1979
[Hayes-Roth82] eds. F.Hayes-Roth, D.Waterman and D.B.Lenat, Building Expert
Systems, to be published in 1982
[Shortliffe76] E.H.Shortliffe, Computer-based medical consultations: MYCIN,
New York: American Elsevier, 1976
[Stallman77] R.M.Stallman and G.J.Sussman, Forward reasoning and
dependency-directed backtracking in a system for computer-
aided circuit analysis, Artificial Intelligence, 9, pp. 135-
196, 1977
[Stefik81] M.J.Stefik, Planning with constraints, Artificial Intelligence,
==== ecmi01/ai2_ineq.txt ====
/* definition of equality/inequality */
eq(X,X).
ineq(X,X) :- !, fail.
ineq(X,Y).
==== ecmi01/unixgive.txt ====
/* UNIX support routines for file transfer
Support routines for microcomputer file transfer between
UNIX and UCSD (TTY program)
Ann Macintosh August 1980
Give file protocol
* is the escape character
*B indicates beginning of file
*E indicates end of file
*C indicates a '*' char within the file
** indicates abnormal termination */
#include <stdio.h>
#include <sgtty.h>
#include <signal.h>
#define GTTY TIOCGETA
#define STTY TIOCSETA
==== ecmi01/ccall.txt ====
I've talked to Geoff Millard briefly about C on EMAS in the future.
We'll be very interested in using a C compiler to port some AI stuff
onto EMAS 3, for teaching. He said you would be interested in a list of
the library routines and standard macros that C-Prolog uses, because
the question of what library routines to provide is still open. Here
they are -
abort execl fopen index printf signal strlen
access exit fork isatty putc sizeof strncpy
atan2 fclose fprintf link putchar sprintf times
chdir feof getc longjmp sbrk sscanf unlink
clearerr fflush getchar perror setbuf strcmp wait
close fileno getenv pow setjmp strcpy
sbrk is used to get space; there's a special storage allocator defined
in the source, so malloc/calloc are not used.
When there is a C compiler ready for some people to try to break, I'd
be happy to have a go!
Peter Ross ext 2557,
central
==== ecmi01/ff_gasheater.txt ====
% File: /usr/lib/prolog/teach/faultfinder/gasheater
% Author: Peter Hammond + Peter Ross
% Updated: 30 Nov 1983
% Purpose: FAULTFINDER: a specific example.
% ====================
% = =
% = Gas Water Heater =
% = =
% ====================
top_fault = ghnwp.
% ******************
% * General faults *
% ******************
ghnwp: name = '<gas heater not working properly>'
& type = general
& preconditions = none
==== ecmi01/ai2_recurse2.txt ====
/* generate integers */
is_int(0).
is_int(X) :-
is_int(Y),
X is Y+1.
/* generate pairs with sum X */
pair(X,X,0).
pair(X,N1,N2) :-
X>0,
X1 is X-1,
pair(X1,N1,N3),
N2 is N3+1.
/* generate Pythagorean triples */
pythag(X,Y,Z) :-
is_int(A),
pair(A,Y,Z), % get a pair of numbers Y and Z
Z>0,
==== ecmi01/anadex.txt ====
(*$S+*)
PROGRAM ANADEXPIC;
(*$I-*)
CONST
TXTMD = 29; (* TEXT/NORMAL MODE *)
GRFMD = 28; (* GRAPHICS MODE *)
CTRL = 3; (* CONTROL CHARACTER *)
NUL = 0; (* NUL TO CLEAR SCREEN *)
BELL = 7; (* TELL WHEN PIC DRAWN *)
LF = 10; (* LINE FEED *)
VT = 11; (* VERTICAL TAB *)
FF = 12; (* FORM FEED *)
CR = 13; (* CARRAGE RETURN *)
SP = 32; (* SPACE *)
TYPE
LINE = PACKED ARRAY [0..319] OF BOOLEAN; (* FOR SWOPPING ARRAY *)
BLOCK = PACKED ARRAY [0..239,0..319] OF BOOLEAN; (* PICTURE FORMAT *)
FOUR = 1..4;
PICFORMAT = RECORD CASE FOUR OF
==== ecmi01/startup.txt ====
SETMODE VIDEO=ON,LOWER
==== ecmi01/oldai2_setstuff.txt ====
/* This file defines various handy relationships involving sets.
Here 'set' actually means 'list', but it sounds better ... */
/* member(H,List). Is H one of the elements of List? */
member(H,[H|_]). /* yes, if its the first member! */
member(H,[_|T]) :- member(H,T). /* yes, if its in the tail. N.B. */
/* T will be a list. Note that you */
/* fail if you get to asking for */
/* member(H,[]) , since this doesnt */
/* match either clause's head */
/* intersect(A,B,I). I is the intersection of A and B */
intersect([H|T],B,[H|U]) :-
member(H,B), /* if the answer's got H in it, then */
intersect(T,B,U). /* it must be in B */
intersect([_|T],B,U) :-
intersect(T,B,U). /* If first clause failed, we can */
/* ignore the head of first list */
intersect(_,_,[]). /* If the second also failed, the */
/* intersection is empty. */
==== ecmi01/oldai2_recurse.txt ====
/* Some examples of recursion.
*
* member(X,List) succeeds if X is a member of List
* append(L1,L2,Ans) succeeds if Ans is the concatenation of
* L1 and L2
* get_n(L,Ans,N) succeeds if Ans is the list containing the
* first N elements of L
*/
member(X,[X|L]).
member(X,[_|L]) :- member(X,L).
append([X|L3],L4,[X|Ans1]) :- append(L3,L4,Ans1).
append([],L,L).
get_n([],[],_).
get_n([X|L1],[X|Ans1],N) :-
N>0,
N1 is N-1,
get_n(L1,Ans1,N1).
get_n(_,[],0).
==== ecmi01/commreadin.txt ====
read_in([W|Ws]) :- get0(C),
readword(C,W,C1),
restsent(W,C1,Ws).
/* Given a word and the character after it, read in the rest
of the sentence */
restsent(W,10,[]) :- !.
restsent(W,_,[]) :- lastword(W), !.
restsent(W,C,[W1|Ws]) :- readword(C,W1,C1),
restsent(W1,C1,Ws).
/* Read in a single word, given an initial character (C),
and remembering what character came after the word */
readword(C,W,C1) :- single_char(C,W), !,
get0(C1).
readword(C,W,C2) :- in_word(C,NewC), !,
get0(C1),
restword(C1,Cs,C2),
name(W,[NewC|Cs]).
readword(C,W,C2) :- get0(C1),
==== ecmi01/oldai2_grulex.txt ====
/* Example of definite clause grammar, as given on the class handout */
expr(Z) --> term(Z).
expr(Z) --> term(X),"+",expr(Y),{Z is X+Y}.
expr(Z) --> term(X),"-",expr(Y),{Z is X-Y}.
term(Z) --> number(Z).
term(Z) --> number(X),"*",term(Y),{Z is X*Y}.
term(Z) --> number(X),"/",term(Y),{Z is X/Y}.
number(X) --> [C],{48=<C,C=<57,X is C-48}.
number(C) --> "+",number(C).
number(C) --> "-",number(X),{C is -X}.
==== ecmi01/pics_pica1.txt ====
0 255 0 255 2 2
174 175 174 174 176 173 177 173 175 175 174 173 175 174 174 174
174 175 175 173 173 172 171 174 175 174 176 174 174 173 174 173
173 174 174 176 174 173 175 173 173 174 172 173 176 173 175 172
171 171 173 172 171 171 170 169 169 172 171 169 169 168 167 168
168 165 166 163 163 164 161 163 161 160 161 160 158 159 157 158
158 155 156 156 153 153 154 152 151 151 150 151 147 146 148 146
146 146 143 145 144 143 144 142 140 139 139 139 141 139 137 137
134 133 134 132 134 132 132 132 131 130 130 131 129 128 130 129
176 176 173 174 176 176 177 176 176 175 175 174 174 172 176 175
175 174 174 173 174 174 175 175 175 174 176 174 173 174 174 175
175 174 176 175 174 176 176 173 176 174 173 171 173 172 174 171
173 173 173 174 172 172 173 172 172 170 171 169 168 168 169 168
167 167 164 165 164 164 163 163 162 162 161 158 160 159 158 157
157 156 156 155 153 154 151 150 148 149 148 149 150 146 146 145
147 144 145 143 142 140 141 141 139 139 139 138 137 137 138 138
136 136 134 134 133 133 131 132 130 129 130 129 128 128 128 129
175 176 175 176 175 176 176 176 177 177 175 176 175 175 176 177
175 175 175 173 175 174 176 174 176 175 174 173 176 177 176 175
175 174 176 177 175 176 176 176 176 175 175 174 172 173 172 172
173 173 172 174 173 171 172 173 171 170 171 170 168 169 167 169
==== ecmi01/grulex.txt ====
/* Example of definite clause grammar, as given on the class handout */
expr(Z) --> term(Z).
expr(Z) --> term(X),"+",expr(Y),{Z is X+Y}.
expr(Z) --> term(X),"-",expr(Y),{Z is X-Y}.
term(Z) --> number(Z).
term(Z) --> number(X),"*",term(Y),{Z is X*Y}.
term(Z) --> number(X),"/",term(Y),{Z is X/Y}.
number(X) --> [C],{48=<C,C=<57,X is C-48}.
number(C) --> "+",number(C).
number(C) --> "-",number(X),{C is -X}.
==== ecmi01/ff_explain.txt ====
% File: ECMI01.FF_EXPLAIN
% Author: Peter Hammond, IC, 1982. Rewritten by Peter Ross
% Updated: 30 Nov 1983
% Purpose: the explanation subsystem for FAULTFINDER
% The only export is read_ans/2. The first arg is a variable, the
% second is a history list containing the (explainable) goals that
% led to the calling of read_ans/2. The goals in the list have arity
% one less than in reality, because the History argument is omitted.
read_ans(Ans, History) :-
read_poss_ans(Ans1),
check_for_query(Ans1, Ans, History).
check_for_query(A, A, _) :-
A \== why.
check_for_query(why, A, History) :-
trace_query(History),
check_again_for_query(A).
check_again_for_query(A) :-
==== ecmi01/ff_ff.txt ====
% File: ECMI01.FF_FF
% Author: Peter Hammond, IC, 1982. Rewritten by Peter Ross
% Updated: 30 Nov 1983
% Purpose: a very simple 'expert system'
% FAULTFINDER: a general fault finding system. See below for a brief account.
%
% The rewrite was for various reasons:
% - the original was in Waterloo Prolog
% - EMAS Prolog does not offer 'ancestor(_)' or any fast-moving
% kludge of it in Prolog
% - the i/o needed tidying.
%
% Desirable improvements:
% - probabilistic reasoning
% - a better interface for questioning the user
% - a mechanism for 'how' questions
% - a 'help' mechanism
% These commands load the system. To load a specific fault description
% file, use ffload/1 giving a filename or a list of filenames.
==== ecmi01/recurse.txt ====
/* Some examples of recursion.
*
* member(X,List) succeeds if X is a member of List
* append(L1,L2,Ans) succeeds if Ans is the concatenation of
* L1 and L2
* get_n(L,Ans,N) succeeds if Ans is the list containing the
* first N elements of L
*/
member(X,[X|L]).
member(X,[_|L]) :- member(X,L).
append([X|L3],L4,[X|Ans1]) :- append(L3,L4,Ans1).
append([],L,L).
get_n([],[],_).
get_n([X|L1],[X|Ans1],N) :-
N>0,
N1 is N-1,
get_n(L1,Ans1,N1).
get_n(_,[],0).
==== ecmi01/ff_load.txt ====
% File: ECMI01.FF_LOAD
% Author: Peter Hammond, IC, 1982. Rewritten by Peter Ross
% Updated: 30 Nov 1983
% Purpose: code for loading a fault database for FAULTFINDER
% This is a simple loading loop for FAULTFINDER fault description files
% Top level for loading is ffload/1.
% The arg can be a file name or a list of them. Items from the file are
% recorded in the internal database, under the terse form of fault name
% as the key. There is a check that, for each fault, only one instance
% of each property appears.
ffload([File|Files]) :-
!,
ffload(File),
ffload(Files).
ffload([]).
ffload(File) :-
seeing(Old),
see(File),
repeat,
==== ecmi01/pica1.txt ====
0 255 0 255 2 2
174 175 174 174 176 173 177 173 175 175 174 173 175 174 174 174
174 175 175 173 173 172 171 174 175 174 176 174 174 173 174 173
173 174 174 176 174 173 175 173 173 174 172 173 176 173 175 172
171 171 173 172 171 171 170 169 169 172 171 169 169 168 167 168
168 165 166 163 163 164 161 163 161 160 161 160 158 159 157 158
158 155 156 156 153 153 154 152 151 151 150 151 147 146 148 146
146 146 143 145 144 143 144 142 140 139 139 139 141 139 137 137
134 133 134 132 134 132 132 132 131 130 130 131 129 128 130 129
176 176 173 174 176 176 177 176 176 175 175 174 174 172 176 175
175 174 174 173 174 174 175 175 175 174 176 174 173 174 174 175
175 174 176 175 174 176 176 173 176 174 173 171 173 172 174 171
173 173 173 174 172 172 173 172 172 170 171 169 168 168 169 168
167 167 164 165 164 164 163 163 162 162 161 158 160 159 158 157
157 156 156 155 153 154 151 150 148 149 148 149 150 146 146 145
147 144 145 143 142 140 141 141 139 139 139 138 137 137 138 138
136 136 134 134 133 133 131 132 130 129 130 129 128 128 128 129
175 176 175 176 175 176 176 176 177 177 175 176 175 175 176 177
175 175 175 173 175 174 176 174 176 175 174 173 176 177 176 175
175 174 176 177 175 176 176 176 176 175 175 174 172 173 172 172
173 173 172 174 173 171 172 173 171 170 171 170 168 169 167 169
==== ecmi01/partfiles.txt ====
pdfile(X) :- exists(X),!,
(curpdfile(Y),retract(curpdfile(Y));true),assert(curpdfile(X)).
pdfile(X) :- write('The file '),write(X),write(' is not available to you'),nl.
typd(X) :- curpdfile(Y), name(Y,L),
name(X,L1), append(L,[95|L1],L2),
name(Z,L2), emas(ty,Z).
anpd :- curpdfile(X),!,emas(analyse,X).
anpd :- write('No file specified - use pdfile(X).'),nl.
anpd(X) :- curpdfile(Y), name(Y,L), name(X,L1),
append(L,[95|L1],L2), name(Z,L2),
emas(analyse,Z).
append([],L,L).
append([X|L1],L2,[X|L3]) :- append(L1,L2,L3).
==== ecmi01/ai2_diffnotes.txt ====
This program differentiates given expressions with respect to specified
unknowns. Expressions can be formed using brackets, the operators
+ - * / and @ (meaning 'to the power of')
and the functions
sin() cos() tan() log() exp().
Unknowns are represented by Prolog atoms. The input should be given in
the form
expression : unknown.
or
expression : [unknown,unknown,...].
for multiple differentiation. For example,
sin(x@2+1):x.
x@4 + a*x@3 + b*x@2 + c*c + d : [x,x].
x@y :[x,y,y].
are all acceptable. Don't forget the final dot!
To stop, type stop.
...............................................
==== ecmi01/rt2pas.txt ====
(*$I-*)
PROGRAM RT2PAS;
CONST
EMPTY = 512;
PERM = 1024;
TENTATIVE = 256;
ENDMARK = 2048;
TYPE
DATEWRD = PACKED RECORD
YEAR: 0..31; (*YEAR-72*)
DAY: 0..31; (*ALLOCATE*)
MONTH: 0..31; (*5 BITS EA*)
JUNK: 0..1 (*INTEGER FILL*)
END;
CHARS = PACKED ARRAY [0..2] OF CHAR;
FILENTRY = RECORD
STATUSWORD: INTEGER;
FIRST: INTEGER;
SECOND: INTEGER;
EXTENSION: INTEGER;
==== ecmi01/oldai2_maze.txt ====
/* Maze.
Peter Ross, 12-Nov-81.
The database in this file describes a maze. All the cells are
labelled with a letter and number, e.g. e2, f12 etc, except for
the two called in and home. The predicate door(X,Y) means that
there is a (two way) door between cells X and Y. The predicate
move(X,Y) expresses the fact that the doors are two-way - it
means you can move from cell X to cell Y in one move.
Tasks:
(1) show you CAN get from in to home.
(2) find the shortest route
(3) show you CAN'T get from in to home if the doors are
only one way!
NOTE: don't bother trying to draw the maze - (a) it has an
idiosyncratic cell labelling scheme, and (b) it isn't
two-dimensional!
*/
==== ecmi01/diffnotes.txt ====
This program differentiates given expressions with respect to specified
unknowns. Expressions can be formed using brackets, the operators
+ - * / and @ (meaning 'to the power of')
and the functions
sin() cos() tan() log() exp().
Unknowns are represented by Prolog atoms. The input should be given in
the form
expression : unknown.
or
expression : [unknown,unknown,...].
for multiple differentiation. For example,
sin(x@2+1):x.
x@4 + a*x@3 + b*x@2 + c*c + d : [x,x].
x@y :[x,y,y].
are all acceptable. Don't forget the final dot!
To stop, type stop.
...............................................
==== ecmi01/exp.txt ====
exp(X,0,1).
exp(X,Y,Z) :- even(Y), R is Y/2, P is X*X, exp(P,R,Z).
exp(X,Y,Z) :- T is Y-1, exp(X,T,Z1), Z is Z1*X.
even(R) :- 0 is R mod 2.
==== ecmi01/robot5.txt ====
.pg 5. ROBOTIC VISION
A robot whose only sensory capabilities are touch and force is still almost
totally isolated from the real world. This would be so even if touch and
force sensing could be as good as their human counterpart; to imagine the
sensory information available to one of today's robots, think of being blind
and deaf
and wearing woolen mittens in sub-zero temperatures which have numbed your
fingers and frozen the mittens stiff. You can still 'feel' objects in your
grasp, but only by a sense of muscle resistance, and you can only sense the
grossest characteristics of shape.
Being blind and deaf you can only become aware of new objects by actually
touching them, and only memory will allow you to keep track of 'known'
objects.
.ti 4
This analogy helps to explain why providing a robot with a visual sense
is such a desirable goal, even though the technology of visual processing is
still fairly rudimentary. At present it is possible for a robot vision
system to find and identify objects provided that it has an adequate
description of the object and that the lighting conditions are well
controlled so that the object can be seen as a clear silhouette. Finding
and identifying objects when they overlap (the 'bin picking' problem) or
==== ecmi01/oldai2_recurse2.txt ====
/* generate integers */
is_int(0).
is_int(X) :-
is_int(Y),
X is Y+1.
/* generate pairs with sum X */
pair(X,X,0).
pair(X,N1,N2) :-
X>0,
X1 is X-1,
pair(X1,N1,N3),
N2 is N3+1.
/* generate Pythagorean triples */
pythag(X,Y,Z) :-
is_int(A),
pair(A,Y,Z), % get a pair of numbers Y and Z
Z>0,
==== ecmi01/missio.txt ====
% Missionaries and Cannibals: teaching example
% Peter Ross, May 1983
%
% To start it:
% ?- search(state(3,3,0,0,left), state(3,3,0,0,left), Ans).
% or
% ?- try(Ans).
% Oddity: trace it, and 'check(_,_)' never appears in the trace.
:- op(700,yfx,&).
search(state(0,0,_,_,right), Answer, Answer).
search(state(Ml,Cl,Mr,Cr,left), PastMoves, Answer) :-
try(M,C,given(Ml,Cl)),
NewMl is Ml-M, NewCl is Cl-C,
NewMr is Mr+M, NewCr is Cr+C,
NewState = state(NewMl,NewCl,NewMr,NewCr,right),
check(NewState,PastMoves),
search(NewState, PastMoves & NewState, Answer).
==== ecmi01/oldai2_readin.txt ====
/* Read in a sentence.
Clearly, when reading in text character by character (using get0),
it is essential NEVER to backtrack over a get0 goal, otherwise you'd
have lost the character it read in. Thus, when you get a character,
you must make sure it gets used. If it can't get used in one context
(e.g. when constructing a word, and you reach a space) it must be
passed back to predicates that can use it.
Thus, for example, readword has three arguments below: the first is
a character, potentially the first of a word but perhaps a bit of
interword filling (space or tab), the second is uninstantiated at
first but will be a word eventually, the third is uninstantiated but
will finally be instantiated to the character that followed the word
- i.e. the character that told readword it had reached the end of a
word.
Similarly, restsent (which is "higher-level" than readword) has three
arguments: the first is the word just read, the second is the
character following that word (which has to be handed forward for the
reasons explained above) and the third is a variable that will be
instantiated by restsent to a list consisting of the rest of the
sentence. The first argument is necessary in order that restsent can
==== ecmi01/scons.txt ====
/* This file defines three useful predicates:
retractall(X) which retracts all clauses beginning with
X, e.g. retractall(fry(_)) will retract
the clause fry(fish) and the clause
fry(X) :- (fishy(X);vegatable(X)).
scons(File) which consults the file File, but doesn't
print extra information on your terminal
(scons = Silent CONSult)
srecons(File) which does the same but reconsults
(srecons = Silent RECONSult)
*/
retractall(X) :- retract(X), fail.
retractall(X) :- retract((X:-Y)), fail.
retractall(_). % this succeeds when the other two have failed
% because nothing is left to retract.
scons(File) :-
seeing(Input),
see(File),
repeat,
==== ecmi01/readin.txt ====
read_in([W|Ws]) :- get0(C),
readword(C,W,C1),
restsent(W,C1,Ws).
/* Given a word and the character after it, read in the rest
of the sentence */
restsent(W,10,[]) :- !.
restsent(W,_,[]) :- lastword(W), !.
restsent(W,C,[W1|Ws]) :- readword(C,W1,C1),
restsent(W1,C1,Ws).
/* Read in a single word, given an initial character (C),
and remembering what character came after the word */
readword(C,W,C1) :- single_char(C,W), !,
get0(C1).
readword(C,W,C2) :- in_word(C,NewC), !,
get0(C1),
restword(C1,Cs,C2),
name(W,[NewC|Cs]).
readword(C,W,C2) :- get0(C1),
==== ecmi01/ai2_diff.txt ====
:- op(700,xfx,:).
:- op(200,xfy,@).
go :- write('Want instructions? Type y or n and press return...'), nl,
prompt(Old,'y/n? '),
get(C), skip(10),
tellall(C),
prompt(Yn,'diff: '),
dv.
tellall(C) :- (C=89;C=121),
emas(ty,'ecmi01.ai2_diffnotes').
tellall(C).
dv :- repeat, read(T), (T=stop; derive(T), fail).
derive(T:X) :- T : X, !.
X : [U] :- X : U.
X : [U|V] :- d(X,U,W), simplify(W,Z), Z : [V].
X : Y :- d(X,Y,W), simplify(W,Z), nl, output(Z), nl, nl.
==== ecmi01/setup.txt ====
OPTION(FSTARTFILE=ECMI25.INIT)
OPTION(REMOVEDIR=PLULIB.PACKDIR)
OPTION(SEARCHDIR=ECMI25.PROLOG#DIR)
OPTION(SEARCHDIR=ECMI25.COMMANDS)
DELIVER(PETER_ROSS_FORREST_HILL)
OPTION(NOBRACKETS,NOECHO,ARRAYDIAG=0)
SETMODE VIDEO=ON,LOWER
==== ecmi01/readindoc.txt ====
The predicate 'read_in(L)' in ECMI01.COMMREADIN reads in sentences typed by
the user and returns the words as elements of the list L. The end of a
sentence is marked either by the <return> key or by the backslash symbol -
but note that EMAS won't pass your typing on to Prolog until you type <return>,
so if you have a backslash in a line, it'll appear to be two sentences to
this version of 'read_in(L)'. The following characters are recognised as
one-character words:
! " # $ % & ' ( ) * + , - . : ; < = > ? @ [ \ ] ^ ` { | } ~
The character '_' is taken to be a normal character that can appear within
words.
You can copy the file and modify it to suit your needs. The single-character
words are defined by a call to 'in_set(L)' whose argument is a list of lists,
or numbers. Each number is an ASCII character code for what is to be taken as
a valid single-character word; each list contains two numbers, representing a
character range.
Peter Ross, 7 December 1982
==== ecmi01/ai2_liza.txt ====
/* Simple ELIZA
-- a natural language misunderstander --
Alan Bundy 15-Nov-79, Richard O'Keefe 17-Feb-81
Peter Ross 5-Nov-81
*/
:-(['ecmi25.util_readin']). % load read_in + necessary support.
/* The top level: call liza (so named 'cos it's a mini-version of ELIZA)
to get going.
The predicate read_in reads in sentences, currently ending with a
full stop, exclamation mark or question mark. Thus
read_in(X)
will read in
hello there.
as
X = [hello,there,.]
NOTE: use lower-case letters at the front of words, this is a simple
beast!
*/
==== ecmi01/maze.txt ====
/* Maze.
Peter Ross, 12-Nov-81.
The database in this file describes a maze. All the cells are
labelled with a letter and number, e.g. e2, f12 etc, except for
the two called in and home. The predicate door(X,Y) means that
there is a (two way) door between cells X and Y. The predicate
move(X,Y) expresses the fact that the doors are two-way - it
means you can move from cell X to cell Y in one move.
Tasks:
(1) show you CAN get from in to home.
(2) find the shortest route
(3) show you CAN'T get from in to home if the doors are
only one way!
NOTE: don't bother trying to draw the maze - (a) it has an
idiosyncratic cell labelling scheme, and (b) it isn't
two-dimensional!
*/
==== ecmi01/simplify.txt ====
/* SIMPLIFY.
The aim of the predicate simplify is to reshuffle expressions which
are sums of unknowns (represented by Prolog atoms) and integers so
that all the unknowns are at the start and the sum of all the
integers is at the end, e.g.
x+3+y+4+z gets reshuffled to x+y+z+7
This is (a) useful in mathematical manipulations by computer
and (b) an illustration of a useful technique called
"difference pairs".
To summarise the idea: a structure such as +(a,+(b,c)) could be
drawn as
+
/ \
a +
/ \
b c
The idea is that when constructing such things you can represent
intermediate stages as the "difference" of
+
==== ecmi01/oldai2_news.txt ====
Differences between PROLOG version 4 and versions 3 and 2
---------------------------------------------------------
There is a new version (version 4) as from 10 February 82 with the following
bugs fixed:
1) The bugs with name and =.. have been fixed.
2) The arithmetic bugs involving negative numbers have been fixed.
3) The debugging has been improved slightly. It is now possible to trace past
cuts. Cuts are, in fact, now invisible to the tracing - like a few other
evaluable predicates. Also the system no longer traces various obscure parts
of the top level that used to appear before.
4) prompt(_,_) will not crash anymore if given a long atom. The atom can be any
length, but note that the prompt actually used will be a truncated version
of this if it too long. This seems to be an EMAS limitation. The current max
length is 15.
5) The system now restores its event and interrupt handlers properly after
returning from programs called through emas(_) or emas(_,_). This, for one
thing, allows various editors other than the standard one to be used from
within PROLOG (they used to mess things up so that you couldn't interrupt
properly after using them).
6) The interrupt handling system has been improved somewhat, so that there
should be very few of the "funny crashes". One way to make them happen
==== ecmi01/warplan.txt ====
:- op(700,xfy,&).
:- op(650,yfx,=>).
% generation and output of a plan
plans(C,T) :- not(consistent(C,true)),!, nl,
write('*** impossible ***'),nl.
plans(C,T) :- plan(C,true,T,T1), nl, output(T1), nl.
output(Xs=>X) :- !, output1(Xs), write(X), write('.'), nl.
output1(Xs=>X) :- !, output1(Xs), write(X), write(' ;'), nl.
output1(X) :- write(X), write(' ;'), nl.
% top level of main recursive loop
plan(X&C,P,T,T2) :- !, solve(X,P,T,P1,T1), plan(C,P1,T1,T2).
plan(X,P,T,T1) :- solve(X,P,T,P1,T1).
% to solve a goal
==== ecmi01/anadextra.txt ====
(* These procedures are for use with 'TIGERSNAP' to be run on the TERAK. *)
PROCEDURE DRAWLINE(VAR RANGE:INTEGER; VAR S:PICFORMAT;
ROW, X0, Y0, DX, DY, PEN:INTEGER);
EXTERNAL;
PROCEDURE FRAME;
VAR I:INTEGER;
BEGIN
FILLCHAR(SCREEN.C[0],9600,NUL); (* CLEARS THE ARRAY AND *)
UNITWRITE(3,SCREEN.C[0],56); (* DRAWS A TERAK SCREEN *)
DRAWLINE(I,SCREEN,20,0,0,319,0,1); (* SIZED FRAME *)
DRAWLINE(I,SCREEN,20,319,0,0,239,1);
DRAWLINE(I,SCREEN,20,319,239,-319,0,1);
DRAWLINE(I,SCREEN,20,0,239,0,-239,1);
UNITWRITE(3,SCREEN.C[0],7);
END;
PROCEDURE SAVEPIC; (* A NUL PROCEDURE BECAUSE *)
BEGIN (* THE FRAME IS DRAWN *)
==== ecmi01/tut.txt ====
DEPARTMENT OF ARTIFICIAL INTELLIGENCE
Prolog exercises - for week beginning 6 Dec 1982
1. The normal method of getting a program into the interpreter, and modifying
it, is fairly cumbersome for beginners. Devise a better method. You could
restrict yourself to clauses such as
fred eats haggis
ian hates chips
and other such clauses of the form "Object Relation Object". Your program
should give you a prompt and allow you to add facts (use built-in predicate
'assertz(Term)') and ask questions - say of the form
is it true that fred eats haggis
Points to remember:
(a) in ECMI25.UTIL_READIN there is a program for 'read_in(List)' such that
the goal 'read_in(L)' will give a prompt and wait for you to type. If
you type
fred eats haggis
then L will be instantiated to the list [fred,eats,haggis].
Experiment with it a bit to get the feel of it.
==== ecmi01/oldai2_ineq.txt ====
/* definition of equality/inequality */
eq(X,X).
ineq(X,X) :- !, fail.
ineq(X,Y).
==== ecmi01/ff_utils.txt ====
% File: ECMI01.FF_UTILS
% Author: Peter hammond, IC, 1982. Rewritten by Peter Ross
% Updated: 30 Nov 1983
% Purpose: utilities used in other FAULTFINDER modules
:- op(50, xfy, and).
:- op(60, xfy, or).
:- op(70, xfy, if).
:- op(950, xfy, & ).
:- op(960, xfy, :). % 950 > ','
once(X) :- X, !.
member(A, [A|_]).
member(A, [_|Rest]) :- member(A, Rest).
memberchk(A, [A|_]) :- !.
memberchk(A, [_|Rest]) :- memberchk(A, Rest).
read_poss_ans(Answer) :-
get(NonBlankChar),
==== ecmi01/blocks.txt ====
given(start,on(e,floor)).
given(start,on(c,e)).
given(start,clear(c)).
given(start,on(a,floor)).
given(start,clear(a)).
given(start,on(d,floor)).
given(start,on(b,d)).
given(start,clear(b)).
given(state1,on(x,floor)).
given(state1,on(y,floor)).
given(state1,clear(x)).
given(state1,clear(y)).
given(state2,on(p,floor)).
given(state2,on(q,floor)).
given(state2,on(r,p)).
given(state2,clear(q)).
given(state2,clear(r)).
add(on(U,W), move(U,V,W)).
==== ecmi01/ai2_queens.txt ====
/* NON-ATTACKING QUEENS.
Peter Ross 24 Nov 81.
This generates solutions to the problem of placing N queens on an NxN
board so that none attacks any other. To use, call queens(N) and it
will print out a board with queens represented by 'Q'.
Note: no solutions for N=2,3.
speed of solution drops rapidly as you increase N - N=8 may
cause you a ten-minute wait!
Meta-level ideas: represent a position of a queen as p(r,c) meaning
a queen in row r, column c. Then a solution will be represented
as N of these with no r occuring twice (queens can't be on the
same row) and no c occuring twice (queens can't be on the same
column). THEREFORE we can order the solution, say by taking the
rows in descending order (i.e. from N to 1). The c's will just
be some permutation of 1 to N. So, tasks are (taking, say, N=4):
a) form the rows set [4,3,2,1]
b) form a permutation of it, e.g. [3,1,4,2]
c) construct a position from this, viz.
[p(4,3),p(3,1),p(2,4),p(1,2)]
==== ecmi01/ecmu19_thelot.txt ====
Introduction.
For some time I have been aware that areas of Artificial Intelligence develop
rapidly to become the centre of attention, more so than in many other academic
disciplines. But in any subject which is undergoing change, one must be sure
neither to be carried along unprotestingly, nor to reject out-of-hand any
unexpected changes of, say, methodology or the sphere of study. Such major
revisions in the domain and purpose of a subject happen from time to time, and
when they do, it is for all interested parties to explore and constructively
criticise the developments.
In Linguistics in the mid 1950's there was a major change with the
introduction of transformational generative grammar, which, modified several
times, has dominated theoretical syntax for over 20 years, though the future of
transformational grammar (not generative grammar, of which it is a type) is
currently under some question.
As in theory "a generative grammar is a mathematically precise specification
of the grammatical structure of the sentences that it generates" (p126,Lyons),
it should be easy enough to computerise: indeed, if serious problems were to
occur in implementation, this would point to a need for modifications. This
==== ecmi01/oldai2_diffnotes.txt ====
This program differentiates given expressions with respect to specified
unknowns. Expressions can be formed using brackets, the operators
+ - * / and @ (meaning 'to the power of')
and the functions
sin() cos() tan() log() exp().
Unknowns are represented by Prolog atoms. The input should be given in
the form
expression : unknown.
or
expression : [unknown,unknown,...].
for multiple differentiation. For example,
sin(x@2+1):x.
x@4 + a*x@3 + b*x@2 + c*c + d : [x,x].
x@y :[x,y,y].
are all acceptable. Don't forget the final dot!
To stop, type stop.
...............................................
==== ecmi01/news.txt ====
Differences between PROLOG version 4 and versions 3 and 2
---------------------------------------------------------
There is a new version (version 4) as from 10 February 82 with the following
bugs fixed:
1) The bugs with name and =.. have been fixed.
2) The arithmetic bugs involving negative numbers have been fixed.
3) The debugging has been improved slightly. It is now possible to trace past
cuts. Cuts are, in fact, now invisible to the tracing - like a few other
evaluable predicates. Also the system no longer traces various obscure parts
of the top level that used to appear before.
4) prompt(_,_) will not crash anymore if given a long atom. The atom can be any
length, but note that the prompt actually used will be a truncated version
of this if it too long. This seems to be an EMAS limitation. The current max
length is 15.
5) The system now restores its event and interrupt handlers properly after
returning from programs called through emas(_) or emas(_,_). This, for one
thing, allows various editors other than the standard one to be used from
within PROLOG (they used to mess things up so that you couldn't interrupt
properly after using them).
6) The interrupt handling system has been improved somewhat, so that there
should be very few of the "funny crashes". One way to make them happen
==== ecmi01/ai2_stuart.txt ====
/* this file defines various facts about the House of Stuart. */
/* The various fact declarations in it should be read thus: */
/* father(person1,person2). means person1 is father of person2. */
/* mother( " , " ). " " " mother " " . */
/* and so on.
Note that 'ggparent' stands for "great-grand-parent". */
father(robert_II,robert_III).
father(robert_III,james_I).
father(james_I,james_II).
mother(joan_beaufort,james_II).
father(james_II,james_III).
father(james_II,alexander_duke_of_albany).
father(james_II,mary).
/* the next two relationships are for historical */
/* convenience. It saves having to clutter things */
/* up with lord_james_hamilton's children ... */
/* Note prolog DOESN'T know what 'ggfather' means. */
ggfather(lord_james_hamilton,matthew_earl_of_lennox).
ggmother(mary,matthew_earl_of_lennox).
==== ecmi01/ladybug.txt ====
/* LADYBUG is a 'Buggy'-type program for the Linear Algebra Domain */
instructions :- nl,
write('Welcome to LADYBUG. The format if very simple.'),
nl,
write('type "show." to find the status of the tracer.'),
nl,
write('Turn it off for now. Next type "protocol." and'),
nl,
write('choose a number from 1 to 6 (0 for standard protocol)'),
nl,
write('Then just type "begin." once for each equation'),
nl,
write('you"d like LADYBUG to solve. Enjoy...').
begin :- nl,
write('Please enter an equation (q to quit)'),nl,
read(Eqn),
==== ecmi01/ecmu19_transbit.txt ====
/* Transformational Grammar Programme */
/* """""""""""""""""""""""""""""""""" */
/* ..........James Scobbie.......... */
/* ~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~ */
/* artificial intelligence department */
/* """""""""""""""""""""""""""""""""" */
:-op(500,yfx,[#]).
go:-banner,choose(Namelist),!,s(Deep,_,_),show(Deep),
do(Deep,Namelist,Surface).
banner:-line(0),nl,
printstring("Do you want to test the ordering of the current"),nl,
printstring("package (option 1) or to change some aspects of"),nl,
printstring("the rule set for testing? (option 2).Choose the"),nl,
printstring("option you require by typing 1 or 2 followed by"),nl,
==== ecmi01/ai2_family.txt ====
/* definition of some family relationships */
parent(X,Y) :- mother(X,Y). /* X is the parent of Y if ... */
parent(X,Y) :- father(X,Y). /* Or if ... */
gparent(X,Y) :- /* X is grandparent of Y if */
parent(X,A), /* X is parent of (someone) A, */
parent(A,Y). /* and A is parent of Y. */
ggparent(X,Y) :- /* X is the great-grandparent of Y if */
gparent(X,A), /* X is the grandparent of (someone) A */
parent(A,Y). /* and A is the parent of Y. */
/* N.B. alternative: "X is parent of A */
/* and A is gparent of Y". It's the */
/* same thing here - why? If you went */
/* on to define 'gggparent' for use in */
/* the "stuart" database, the choice */
/* WOULD matter. Why? look at the file */
/* "ai2_stuart" ... */
==== ecmi01/ans.txt ====
DEPARTMENT OF ARTIFICIAL INTELLIGENCE
Answers to Prolog exercises (#3)
1. flatten([],[]).
flatten([[]|T], Tflat) :- flatten(T, Tflat).
flatten([H|T], [H|Tflat]) :- atomic(H), !, flatten(T, Tflat).
flatten([H|T], L) :- flatten(H, Hflat),
flatten(T, Tflat),
append(Hflat, Tflat, L).
This uses 'append'. The second clause is there to remove empty lists (which
are atomic). The cut is there in case of backtracking to the top level
'flatten' goal.
2. reverse([H|T], Rev) :- reverse(T, Trev), append(Trev, [H], Rev).
This also uses 'append'. The version below is worth studying, even though
it looks opaque at first; it is an example of a very generally useful
technique.
==== ecmi01/setstuff.txt ====
/* This file defines various handy relationships involving sets.
Here 'set' actually means 'list', but it sounds better ... */
/* member(H,List). Is H one of the elements of List? */
member(H,[H|_]). /* yes, if its the first member! */
member(H,[_|T]) :- member(H,T). /* yes, if its in the tail. N.B. */
/* T will be a list. Note that you */
/* fail if you get to asking for */
/* member(H,[]) , since this doesnt */
/* match either clause's head */
/* intersect(A,B,I). I is the intersection of A and B */
intersect([H|T],B,[H|U]) :-
member(H,B), /* if the answer's got H in it, then */
intersect(T,B,U). /* it must be in B */
intersect([_|T],B,U) :-
intersect(T,B,U). /* If first clause failed, we can */
/* ignore the head of first list */
intersect(_,_,[]). /* If the second also failed, the */
/* intersection is empty. */
==== ecmi01/rselong2.txt ====
RESEARCH INTO THE CONSTRUCTION AND APPLICATION OF INTELLIGENT KNOWLEDGE
BASED SYSTEMS THAT AID COMPUTER USERS
Dr. Peter Ross,
Department of Artificial Intelligence,
University of Edinburgh.
INTRODUCTION
Intelligent knowledge-based (IKB) systems, sometimes referred to as 'expert
systems', are computer programs or sets of programs which contain explicit
knowledge concerning some particular area of human expertise, organised in
such a way that they can function as an expert consultant in that area. Some
existing examples are MECHO (which solves problems in mechanics - [Bundy79]),
MYCIN (which diagnoses bacterial infections and recommends treatments -
[Shortliffe76]), MOLGEN (which designs molecular genetic experiments -
[Stefik81]) and EL (which analyses analogue electric circuits [Stallman77]).
They contain the factual knowledge of their subject as sets of rules - for
example, one of MYCIN's rules is
If (a) the infection is primary-bacteremia, and
==== ecmi01/unixtake.txt ====
/* UNIX support routines for file transfer
Support routines for microcomputer file transfer between
UNIX and UCSD (TTY program )
Ann Macintosh August 1980 */
#include <stdio.h>
#include <sgtty.h>
#include <signal.h>
#define END '?'
#define DLE 16
#define XON 17
#define GTTY TIOCGETA
#define STTY TIOCSETA
#define MAXNAME 40
#define TRUE 1
#define FALSE 0
==== ecmi01/ineq.txt ====
/* definition of equality/inequality */
eq(X,X).
ineq(X,X) :- !, fail.
ineq(X,Y).
==== ecmi01/rt1pas.txt ====
(*$S+*)
(*$I-*)
PROGRAM RT2PAS;
CONST
EMPTY = 512;
PERM = 1024;
TENTATIVE = 256;
ENDMARK = 2048;
TYPE
DATEWRD = PACKED RECORD
YEAR: 0..31; (*YEAR-72*)
DAY: 0..31; (*ALLOCATE*)
MONTH: 0..31; (*5 BITS EA*)
JUNK: 0..1 (*INTEGER FILL*)
END;
CHARS = PACKED ARRAY [0..2] OF CHAR;
FILENTRY = RECORD
STATUSWORD: INTEGER;
FIRST: INTEGER;
SECOND: INTEGER;
==== ecmi01/pgc.txt ====
DEPARTMENT OF ARTIFICIAL INTELLIGENCE
Running The Post-graduate Course
The course starts with the winter term. So, the event queue for the organiser
starts before then:
---- Summer: by early August
Get together a brief course description and a general reading list,
to be sent out to new PGs.
---- Summer: by Sept. 15, say.
Organise the time table. Check that the lecturers will be available
at the desired times, and that they know it. Send them time tables.
Dig out information about rooms - for shared courses contact the other
course organisers. The first lecture is a welcome by the head of the
department.
==== ecmi01/oldlbug.txt ====
/* LADYBUG is a 'Buggy'-type program for the Linear Algebra Domain */
begin :- nl,
write('Please enter an equation (q to quit)'),nl,
read(Eqn),
protocol(M),
solve(M,Eqn).
/* PROTOCOL 0: no malrule -- correct algebraic manipulation */
solve(0,Lhs=Rhs) :-
present('solving ',Lhs,Rhs),
!,
cattract(Lhs,Rhs,Lhs2,Rhs2),
iattract(Lhs2,Rhs2,Lhs3,Rhs3),
consolidate(Lhs3,Sum_coeffs),
present(lhs_consolidate,Sum_coeffs*x,Rhs3),
consolidate(Rhs3,Sum_integers),
==== ecmi01/prenglish.txt ====
:- op(300,xf,?).
begin:- asserta(definition(X,X)),
asserta(definition((P;Q),[P, or, Q])),
asserta(definition((P:-Q), [P, if, Q])),
asserta(definition((P,Q), [P, and, Q])),
prompt(Old, 'Prolog: '), repeat,nl,nl,read(T), (T=stop; process(T), fail).
process(T-D) :- !, asserta(definition(T,D)).
process([T1|T2]?) :- retrovert(T,[T1|T2]), !, nl, write(T).
process(T) :- translate(T,D), nl, output(D), !.
process(_) :- nl, write('*** untranslatable ***'), nl.
retrovert(T,D) :- definition(T1,D), !, T1 =.. [N|L],
retrovert_args(Args,L), T =.. [N|Args].
retrovert_args([A|Args],[L|Ls]) :- retrovert(A,L),
retrovert_args(Args, Ls).
retrovert_args([], []).
translate(X,X) :- var(X), !.
==== ecmi01/exmsc.txt ====
-----------------
Please distribute
-----------------
EXPERT SYSTEMS: the exam 1984
There are three questions on each of the M.Sc. exams (at least, the AI ones).
Answer two; you'll only get credit for the first two you answer (which is not
necessarily the same as the first two you try!). Some (perhaps most) of the
questions will come in several parts connected by some theme; do the bits you
can, obviously. If you find yourself at sea, try to put down what you do know
that you think relevant; you get marks for what you put down, if its relevant!
Revision: the blue/white Xerox paper ("The Organization of Expert Systems:
A Prescriptive Tutorial" by M.Stefik &c), lecture handouts and
your own notes. If you want reassurance or further reading, then
look at the expensive book ("Building Expert Systems", Hayes-Roth
&c) and/or "Expert Systems in the Micro-electronic Age", Michie &c.
Try AL/X and OPS5 just to get a taste of the practice, they make the
course a little less academic - not obligatory, though.
==== ecmi01/init.txt ====
setmode video=on,lower,width=80,tabs=9:17:25:33:41:49:79
setmode flow=on
==== ecmi01/oldai2_minidb.txt ====
% File: ECMI01.MINIDB
% Updated: 15 October 84 11:10
% Author: Peter Ross
% Purpose: a mini database system, needing improvement in every way
% Level: introductory.
% This is extremely feeble. Learning exercise: improve it.
%
% It uses the following built-in predicates:
% assert(Term) - to add to the database
% retract(Term) - to remove from the database
% read(Term) - to read data (in the form of a term) or
% replies (also in the form of a term) from
% the user.
% abolish(Term,Arity) - to flush out the database
% bagof(X, Term, List) - to collect up all the Xs fitting the Term
%
% NOTES: (1) all database items are held as terms of the form dbitem(Item).
% (2) all your input must be valid Prolog terms.
% (3) the program is atypical, because backtracking NEVER happens in it.
% It can bomb out, if you attempt to query an empty database.
==== ecmi01/ks299_int.txt ====
% File: /u4/peter/prolog/ks299/int
% Author: Original by Steven Hardy. Reworked by Peter Ross.
% Updated: 6 Sep 84 by Peter Ross
% Purpose: a simple rule interpreter in the style of KS-300
% Original code courtesy of Teknowledge Inc. - so don't make use of it
% without acknowledging them.
% The rule base is made up of assertions of the form
% RULE: if PREMISE then CONCLUSION.
% where RULE is an atom,
% PREMISE is a simple proposition of the form
% THING = VALUE
% or THING is known
% or THING is unknown
% or is a combination of simple propositions
% built up using "and" and "or", where "or"
% binds tighter than "and",
% CONCLUSION is a simple conclusion of the form
% THING = VALUE
% or THING = VALUE cf CONFIDENCE
==== ecmi01/oldai2_scons.txt ====
/* This file defines three useful predicates:
retractall(X) which retracts all clauses beginning with
X, e.g. retractall(fry(_)) will retract
the clause fry(fish) and the clause
fry(X) :- (fishy(X);vegatable(X)).
scons(File) which consults the file File, but doesn't
print extra information on your terminal
(scons = Silent CONSult)
srecons(File) which does the same but reconsults
(srecons = Silent RECONSult)
*/
retractall(X) :- retract(X), fail.
retractall(X) :- retract((X:-Y)), fail.
retractall(_). % this succeeds when the other two have failed
% because nothing is left to retract.
scons(File) :-
seeing(Input),
see(File),
repeat,
==== ecmi01/charlist.txt ====
charlist([],[]).
charlist([X],Y) :- atomic(X),name(X,Y).
charlist([F,','|Rest],L) :-
name(F,L1), charlist(Rest,L2),
append(L1,[44|L2],L), !.
charlist([F|R],L) :-
name(F,L1), charlist(R,L2),
append(L1,[32|L2],L).
append([],L,L).
append([X|Y],L1,[X|L]) :-
append(Y,L1,L).
==== ecmi01/ff_rules.txt ====
% File: /usr/lib/prolog/teach/faultfiner/rules
% Author: Peter hammond, IC, 1982. Rewritten by Peter Ross
% Updated: 30 Nov 1983
% Purpose: the guts of FAULTFINDER.
% The only export is check_rule/3. This finds the final state
% of a fault by working recursively through the causes, and their
% causes...
check_rule(general, Fault, History) :-
check_causes_of(Fault, History).
check_rule(specific, Fault, History) :-
suggest_action_for(Fault),
check_again_for(Fault, History).
check_rule(separable, Fault, History) :-
suggest_action_for(Fault),
test_action_for(Fault, Ans, History),
pursue_causes_of(Fault, Ans, History).
% ***********************
% * Machinery for rules *
==== ecmi01/recurse2.txt ====
/* generate integers */
is_int(0).
is_int(X) :-
is_int(Y),
X is Y+1.
/* generate pairs with sum X */
pair(X,X,0).
pair(X,N1,N2) :-
X>0,
X1 is X-1,
pair(X1,N1,N3),
N2 is N3+1.
/* generate Pythagorean triples */
pythag(X,Y,Z) :-
is_int(A),
pair(A,Y,Z), % get a pair of numbers Y and Z
Z>0,
==== ecmi01/ai2_simplify.txt ====
/* SIMPLIFY.
The aim of the predicate simplify is to reshuffle expressions which
are sums of unknowns (represented by Prolog atoms) and integers so
that all the unknowns are at the start and the sum of all the
integers is at the end, e.g.
x+3+y+4+z gets reshuffled to x+y+z+7
This is (a) useful in mathematical manipulations by computer
and (b) an illustration of a useful technique called
"difference pairs".
To summarise the idea: a structure such as +(a,+(b,c)) could be
drawn as
+
/ \
a +
/ \
b c
The idea is that when constructing such things you can represent
intermediate stages as the "difference" of
+
==== ecmi01/ai2_findall.txt ====
findall(X,P,L) :-
asserta(found([])),
call(P),
rec(X),
fail.
findall(X,P,L) :-
retract(found(L)),!.
rec(X) :-
retract(found(L)),!,
append(L,[X],L1),
asserta(found(L1)).
append([],X,X).
append([X|L1],L2,[X|L3]) :- append(L1,L2,L3).
==== ecmi01/ff_readme.txt ====
This partitioned file contains the source of a very simple expert system called
FAULTFINDER, and a sample database for it to work on. A brief description
of the idea, though not of the program itself (which is pretty much common
sense), can be found in the file 'FF'. FAULTFINDER is really a general system,
and you need to create specific fault hierarchy descriptios for it to work on.
There is an example in ECMI01.FF_GASHEATER. Look at 'FF' to find out more.
The files in the partitioned file ECMI01.FF are
README this file
EXPLAIN the explanation sub-system
FF the file to read in to get everything else read in
It also has a terse description of the system.
GASHEATER the specific example (a gas water heater)
LOAD the routines to load a file such as 'GASHEATER'
MAIN the top level of FAULTFINDER
RULES the guts of FAULTFINDER
UTILS some utilities used in 'explain', 'main' and 'rules'
To get started, use 'util' so that member/2 and memberchk/2 are available:
==== ecmi01/oldai2_visiting.txt ====
% File: ECMI01.AI2_VISITING
% Author: Peter Ross
% Purpose: a simple database example
%
% This contains a baby database:
% visiting(A,B) meaning A is currently visiting B
% at(A,Place) meaning A is at Place
% phone(Place, Number) meaning the phone at Place is Number
% There is a predicate 'ring' which finds out which number to ring
% to get hold of a particular person, or vice-versa.
% ---- phone numbers -----
phone(place_a, 667-5770).
phone(place_b, 339-5390).
phone(place_c, 229-8901).
phone(place_d, 229-6031).
phone(place_e, 667-1011-2551).
% ---- some 'at' details ----
==== ecmi01/oldai2_diff.txt ====
:- op(700,xfx,:).
:- op(200,xfy,@).
go :- write('Want instructions? Type y or n and press return...'), nl,
prompt(Old,'y/n? '),
get(C), skip(10),
tellall(C),
prompt(Yn,'diff: '),
dv.
tellall(C) :- (C=89;C=121),
emas(ty,'ecmi01.ai2_diffnotes').
tellall(C).
dv :- repeat, read(T), (T=stop; derive(T), fail).
derive(T:X) :- T : X, !.
X : [U] :- X : U.
X : [U|V] :- d(X,U,W), simplify(W,Z), Z : [V].
X : Y :- d(X,Y,W), simplify(W,Z), nl, output(Z), nl, nl.
==== ecmi01/ai2_grulex.txt ====
/* Example of definite clause grammar, as given on the class handout */
expr(Z) --> term(Z).
expr(Z) --> term(X),"+",expr(Y),{Z is X+Y}.
expr(Z) --> term(X),"-",expr(Y),{Z is X-Y}.
term(Z) --> number(Z).
term(Z) --> number(X),"*",term(Y),{Z is X*Y}.
term(Z) --> number(X),"/",term(Y),{Z is X/Y}.
number(X) --> [C],{48=<C,C=<57,X is C-48}.
number(C) --> "+",number(C).
number(C) --> "-",number(X),{C is -X}.
==== ecmi01/oldai2_liza.txt ====
/* Simple ELIZA
-- a natural language misunderstander --
Alan Bundy 15-Nov-79, Richard O'Keefe 17-Feb-81
Peter Ross 5-Nov-81
*/
:-(['ecmi25.util_readin']). % load read_in + necessary support.
/* The top level: call liza (so named 'cos it's a mini-version of ELIZA)
to get going.
The predicate read_in reads in sentences, currently ending with a
full stop, exclamation mark or question mark. Thus
read_in(X)
will read in
hello there.
as
X = [hello,there,.]
NOTE: use lower-case letters at the front of words, this is a simple
beast!
*/
==== ecmi01/ai2_maze.txt ====
/* Maze.
Peter Ross, 12-Nov-81.
The database in this file describes a maze. All the cells are
labelled with a letter and number, e.g. e2, f12 etc, except for
the two called in and home. The predicate door(X,Y) means that
there is a (two way) door between cells X and Y. The predicate
move(X,Y) expresses the fact that the doors are two-way - it
means you can move from cell X to cell Y in one move.
Tasks:
(1) show you CAN get from in to home.
(2) find the shortest route
(3) show you CAN'T get from in to home if the doors are
only one way!
NOTE: don't bother trying to draw the maze - (a) it has an
idiosyncratic cell labelling scheme, and (b) it isn't
two-dimensional!
*/
==== ecmi01/ai2_grtrans.txt ====
expr(Z,S0,S) :- term(Z,S0,S).
expr(Z,S0,S) :- term(X,S0,S1),c(S1,43,S2),expr(Y,S2,S),Z is X+Y.
expr(Z,S0,S) :- term(X,S0,S1),c(S1,45,S2),expr(Y,S2,S),Z is X-Y.
term(Z,S0,S) :- number(Z,S0,S).
term(Z,S0,S) :-
number(X,S0,S1),c(S1,42,S2),
write('s2 '),write(S2),nl,
write('s '),write(S),nl,
term(Y,S2,S),
write('y '),write(Y),nl,
write('x '),write(X),nl,
integer(X),integer(Y),
Z is X*Y.
term(Z,S0,S) :- number(X,S0,S1),c(S1,47,S2),term(Y,S2,S),Z is X/Y.
number(X,S0,S) :- c(S0,C,S),48=<C,C=<57,X is C-48.
number(X,S0,S) :- c(S0,43,S1),number(X,S1,S).
number(X,S0,S) :- c(S0,45,S1),number(Y,S1,S),X is -Y.
==== ecmi01/tprover.txt ====
:- op(700,xfy,eqv).
:- op(650,xfy,imp).
:- op(600,xfy,or).
:- op(550,xfy,and).
:- op(500,fy,not).
false(f) :- !.
false(not t) :- !.
false(P eqv Q) :- false((P imp Q) and (Q imp P)).
false(P imp Q) :- false(Q or not P).
false(P or Q) :- false(P), false(Q).
false(P and Q) :- (false(P) ; false(Q)).
false(not not P) :- false(P).
false(not(P eqv Q)) :- false(not(P imp Q) or not(Q imp P)).
false(not(P imp Q)) :- false(not(Q or not P)).
false(not(P or Q)) :- false(not P and not Q).
false(not(P and Q)) :- false(not P or not Q).
theorem(T) :- (false(T), write('false'),!;write('true')),nl.
==== ecmi01/robot51.txt ====
.pg 5.1 2-D silhouette vision
This section describes how various sorts of information can be extracted from
a simple silhouette image, i.e. an image consisting essentially of a
rectangular array of values each either 0 (representing a point not part of
the image of some object) or 1 (representing a point that is part of some
object). Consider, for example, this image of the letter 'T':
.nf
.sp 1
00000000000000000000000000
00000011111111111100000000
00000011111111111100000000
00000000001111000000000000
00000000001111000000000000
00000000001111000000000000
00000000001111000000000000
00000000001111000000000000
00000000000000000000000000
.sp 1
.fi
It conveniently fits the frame of the image and is aligned nicely with the
sides, which shows that it is an artificial example. The 234 values that make
==== ecmi02/winst_arch1prb.txt ====
/*arch1.prb
Winston arch domain
Alan Bundy 5.12.80
use with winston
version with functions */
/* description trees */
tree(shapetree,1,shape(prism(wedge,block),pyramid)).
tree(touchtree,2,touchrel(separate,touch(marries,abuts))).
default(touchtree,separate). % default predicate
tree(orienttree,1,orientation(lying,standing)).
tree(directiontree,2,direction(leftof,rightof)).
tree(supporttree,2,undef(supports,unsupports)).
==== ecmi02/nl_xnl.txt ====
xnl
atn
atnold
eliza
elizanew
parse
qa
.END
==== ecmi02/nl_eliza.txt ====
/*eliza*/
/*natural language conversational program
Alan Bundy 15.11.79*/
/*variable marker*/
:- op(500,fx,[?]).
/*top level*/
eliza :- read_in(Input), eliza(Input).
eliza([bye,.]) :- !.
eliza(Input) :- sr_pair(S,R),
match(Input,S,off,Subst),
replace(R,Subst,Output),
print_list(Output), eliza.
/*associative one way matcher*/
match([],[],off,[]).
==== ecmi02/nl_parse.txt ====
/*parse*/
/*acceptor and parser for sentences from ATN
Alan Bundy 29.11.79
use with readin*/
/*Acceptor Top Level*/
accept :- read_in(Text), accept(Text).
accept(Text) :- accept_part(Text,sentence,start,[]).
/*Accept part of a sentence*/
accept_part(Text,ATN,finish,Text) :- !.
accept_part([Word|Rest],ATN,start,Rest) :-
arc(ATN,start,finish,Word,t).
accept_part(Text,ATN,Node,Rest) :-
arc(ATN,Node,Next,SubATN,nt),
accept_part(Text,SubATN,start,Text1),
accept_part(Text1,ATN,Next,Rest).
==== ecmi02/teach_randomold.txt ====
/*random*/
/*Random number generator
Alan Bundy 22.11.79*/
/*Get random Num in Range*/
random(Range,Num) :-
seed(Seed), random(Range,Seed,Num).
/*Get Num ffrom Seed first time*/
random(Range,Seed,Num) :- Num is (Seed mod Range) + 1.
/*Grow Num on subsequent occasions*/
random(Range,Seed,Num) :-
NewSeed is 125*Seed + 1,
random(Range,NewSeed,Num).
/*random number seed*/
seed(13).
/*Choose random element of list*/
random_pick(List,El) :-
==== ecmi02/plan_expon.txt ====
/*----- Synthesis of an exponentiation routine -----*/
:-op(700,xfx,=/=).
X after test(X,U) :- X after_test U.
w:loop(U,V,W) after loop(U,V,W).
R:X1*X2 after mult(R,R1,R2,X1,X2).
R:X1-X2 after subtc(R,R1,X2,X1) :- const(X2).
R:X1/X2 after divc(R,R1,X2,X1) :- const(X2).
zero(X) after_test zero(R,X).
even(X) after_test even(R,X).
test(X,U) needs C :- U needs C.
if(_,_,C,_) needs C.
==== ecmi02/math_divide.txt ====
/* DIVIDE.
Test example for SEMANT and MODEL
Clauses and Model for not divides example (see notes p124)
Alan Bundy 22.6.81 */
/* Clauses */
clause(right, [not_div(X*Z,Y)], [not_div(X,Y)], input). % Input clauses
clause(left, [not_div(Z*X,Y)], [not_div(X,Y)], input).
clause(thirty, [equal(30,2*3*5)], [], input).
clause(hypothesis, [not_div(5,a)], [], input).
clause(conclusion, [], [not_div(30,a)], topclause). % Top clause
==== ecmi02/evans_evans.txt ====
/*evans*/
/*Evan's Geometric Analogy Program - Rational Reconstruction*/
/*Alan Bundy 26.10.79*/
/*top level program*/
evans(FigA,FigB,FigC,AnsList,Ans) :-
find_rule(FigA,FigB,Rule), rule_is(Rule),
apply_rule(Rule,FigC,AnsObjs,AnsRels,Sims),
ans_desc(AnsObjs,AnsRels,Sims),
select_result(FigC,AnsList,AnsObjs,AnsRels,Sims,Ans),
ans_is(Ans).
/*find rule given figures*/
find_rule(FigA,FigB,Rule) :-
relations(FigA,Source), relations(FigB,Target),
objects(FigA,Alist), objects(FigB,Blist),
similarities(FigA,FigB,Triples),
select_set(Triples,Matches),
takeaway1(Alist,Matches,Removals),
==== ecmi02/math_semant.txt ====
/* SEMANT.
A Depth First Theorem Prover
with vetting by use of interpretations and
incorporating input restriction.
Use with MODEL
DIVIDE contains test example
Alan Bundy 22.6.81 */
/* Top Goal */
go :-
clause(Goal,_,_,topclause), % Find the top clause
semantic(Goal). % and away you go
/* Depth first theorem prover */
semantic(Old) :-
successor(Old,New), % Find a successor to the current clause
==== ecmi02/nl_atnold.txt ====
/*atn*/
/*generation of random sentences from an ATN
Alan Bundy 19.11.79
use with eliza (for print_list)*/
/*Top Level*/
generate :- generate(sentence,start,Sentence), print_list(Sentence), fail.
generate(ATN,finish,[]).
generate(ATN,Node,[Word|Rest]) :-
arc(ATN,Node,NewNode,Word,t),
generate(ATN,NewNode,Rest).
generate(ATN,Node,Sent) :-
arc(ATN,Node,NewNode,SubATN,nt),
generate(SubATN,start,SubBit),
generate(ATN,NewNode,Rest),
append(SubBit,Rest,Sent).
==== ecmi02/winst_archprb.txt ====
/*arch.prb
Winston arch domain
Alan Bundy 5.12.80
use with winston */
/* space of description trees */
space(arch,[shapetree,touchtree,orienttree,directiontree,supporttree]).
/* description tree */
tree(shapetree,1,shape(prism(wedge,block),pyramid)).
tree(touchtree,2,touchrel(separate,touch(marries,abuts))).
default(touchtree,separate). % default predicate
tree(orienttree,1,orientation(lying,standing)).
tree(directiontree,2,direction(leftof,rightof)).
tree(supporttree,2,undef(supports,unsupports)).
==== ecmi02/emas4#mung.txt ====
%% NEXT FILE %%
nextfl
,dska:emas4.ccl
,nextfl
,dska:infer.[400,405,teach]
,nextfl
,dska:mandc.[400,405,teach]
,nextfl
,dska:random.[400,405,teach]
,nextfl
,dska:random.old[400,405,teach]
,nextfl
,dska:read.[400,405,teach]
,nextfl
,dska:readin.[400,405,teach]
,nextfl
,dska:figure.[400,405,teach,evans]
,nextfl
==== ecmi02/math_skolem.txt ====
/* SKOLEM.
Skolem Normal Form Procedure
(FORMUL contains test examples)
Alan Bundy 17.3.79 */
/*operator declarations*/
:- op(400,xfy,;). % Disjunction
:- op(300,xfy,<->). % Double Implication
:-op(400,xfy,->). % Implication
/*skolem normal form*/
skolem(Sentence,NormalForm) :- !, % Normal calling pattern
skolem(Sentence,NormalForm,[],0). % assume no free vars and being asserted
==== ecmi02/winst_xwinst.txt ====
xwinst
archprb
arch1prb
blockprb
isolprb
pairprb
winst
.END
==== ecmi02/teach_mandc.txt ====
/*mandc
Missionaries and Cannibals program
Alan Bundy 6.11.79*/
/*top level*/
mandc :- gofrom([3,3,1],[0,0,0],[]).
gofrom([0,0,0],Right,OldLefts) :- writef('which is goal state\n \n',[]).
gofrom(Left,Right,OldLefts) :-
legal(Left), legal(Right),
not(member(Left,OldLefts)),
applymove(Left,Right,[ML,CL,BL],[MR,CR,BR]),
writef('\nThe left bank now contains %t missionaries and %t cannibals \n',[ML,CL]),
writef('The right bank now contains %t missionaries and %t cannibals \n',[MR,CR]),
gofrom([ML,CL,BL],[MR,CR,BR],[Left|OldLefts]).
gofrom(_,_,_) :- writef('Backing up one move \n',[]), fail.
/*decide which way to move*/
==== ecmi02/winst_pairprb.txt ====
/*pair.prb It is difficult for the untrained fisher
Winston arch domain to follow examples of this complexity so
Alan Bundy 5.12.80 here is a simple concept: two wedges.
use with winston */
/* space of description trees */
space(pair, % each concept must have a space; is this **right**?
[shapetree,touchtree,orienttree]).
/* description tree */
tree(shapetree,1,shape(wedge,block)).
tree(touchtree,2,touchrel(separate,touch)).
tree(orienttree,1,orientation(lying,standing)).
% Examples
==== ecmi02/plan_wplanc.txt ====
/* WARPLAN-C CONDITIONAL PLAN GENERATOR */
plans:-plan_from(start,_).
plan_from(T0,A):-
want C,
consistent(C,A),
plan(C,void,T0,P,T,A,[]),
other_cases(T,P,A,exit).
plan(X1&X2,P0,T0,P,T,A,G):-!,
plan(X1,P0,T0,P1,T1,A,G),
plan(X2,P1,T1,P,T,A,G).
plan(X,P0,T0,P,T0,A,G):-
(always X,P=P0; holds(X,T0),setadd(X,P0,P)).
plan(X,_,_,_,_,A,_):-minimality_violation(X,A),!,fail.
plan(X,_,T0,_,_,_,G):-recorded(loopcheck,Type,_),
(Type=weak,mkground(X,0,_);Type=strong),
listel(X:T0,G),!,fail.
plan(X,P0,T0,P,T,A,G):-
==== ecmi02/math_rewrit.txt ====
/* REWRIT.
Simple depth first search rewrite rule system
see Artificial Mathematicians p 104.
Use with UTIL
Alan Bundy 10.7.81 */
/* Find Normal Form of Expression */
normalize(Expression, NormalForm) :- % To put an expression in normal form:
rewrite(Expression, Rewriting), % Rewrite it once
normalize(Rewriting, NormalForm). % and recurse
normalize(Expression, Expression) :- % The expression is in normal form
not rewrite(Expression, _). % if it cannot be rewritten
/* Rewrite Rule of Inference */
==== ecmi02/teach_random.txt ====
/*random*/
/*Random number generator
Alan Bundy 22.11.79*/
/*Get Num from Seed and update seed*/
random(Range,Num) :-
seed(Seed),
Num is (Seed mod Range) + 1,
retract(seed(Seed)),
NewSeed is 125*Seed+1,
assert(seed(NewSeed)).
/*random number seed*/
seed(13).
/*Choose random element of list*/
random_pick(List,El) :-
length(List,L), random(L,N), nth(N,List,El).
/*find nth element of a list*/
==== ecmi02/math_breadt.txt ====
/* BREADTH.
A Breadth First Search Theorem Prover.
EQUAL contains test example.
Alan Bundy 16.6.81 */
/* Top Goal */
go :- breadth(0).
/* Breadth First Search Strategy */
breadth(N) :-
N1 is N+1, % Calculate new depth
repeat(resolve(input,N,N1)), % Form all resolvants at that depth
repeat(resolve(N,input,N1)),
breadth(N1). % and recurse
==== ecmi02/math_formul.txt ====
/* FORMUL.
Test Formulae for SKOLEM program
Alan Bundy 23.6.81 */
test1(Ans) :-
skolem( all(a, all(b, all(c, some(x, a*xf2 + b*x + c = 0)))), Ans).
test2(Ans) :-
skolem( all(m, some(delta, all(x, (abs(x)=<delta) -> (1/x)>m))), Ans).
==== ecmi02/plan_xplan.txt ====
xplan
expon
wplanc
wpo
.END
==== ecmi02/evans_figure.txt ====
/*figures*/
/*test descriptions for evans program*/
/*Alan Bundy 26.10.79*/
problem1(Ans) :- evans(figa,figb,figc,[fig1,fig2,fig3,fig4,fig5],Ans).
problem2(Ans) :- evans(figa,figb,figc,[fig1,fig2,fig3,fig4a,fig5],Ans).
problem3(Ans) :- evans(figa,figb,figc,[fig1,fig2,fig3,fig5],Ans).
objects(figa,[tri1,tri2]).
relations(figa,[[inside,tri1,tri2]]).
objects(figb,[tri3]).
relations(figb,[]).
similarities(figa,figb,[[tri2,tri3,direct], [tri1,tri3,[scale,2]]]).
objects(figc,[square,circle]).
relations(figc,[[inside,square,circle]]).
==== ecmi02/plan_wpo.txt ====
:-op(950,xfx,[after,needs,affects,after_test,if]).
:-op(950,fx,[always,never,initially,want]).
:-op(900,xfy,&).
:-op(700,xfx,:).
:-op(600,fx,\).
==== ecmi02/math_unify.txt ====
/* UNIFY.
Unification procedure for first order logic (with occurs check)
See p80 of Artificial Mathematicians.
Alan Bundy 10.7.81 */
/* Top Level */
unify(Exp1, Exp2, Subst) :- % To unify two expressions
unify(Exp1, Exp2, true, Subst). % Start with empty substitution
/* Unify with output and input substitutions */
unify(Exp, Exp, Subst, Subst). % If expressions are identical, succeedd
unify(Exp1, Exp2, OldSubst, AnsSubst) :- % otherwise
disagree(Exp1,Exp2,T1,T2), % find first disagreement pair
make_pair(T1,T2,Pair), % make a substitution out of them, if pos
==== ecmi02/math_boyer.txt ====
/* BOYER.
Leon Sterling
Updated: 24 July 81
A simple Boyer-Moore theorem prover as in
Chap. 11 The Productive Use of Failure
in 'Artificial Mathematicians'.
The code written here is a simplified version of the algorithm
described in a paper of J Moore
'Computational Logic: Structure Sharing and Proof of Program Properties',
Xerox report CSL 75-2, which appeared also as Dept. of Computational Logic
memo no. 68, and the second part of Moore's Ph.D. thesis.
This is a simplified version of the theorem-prover described in the book
'A Computational Logic' by Boyer and Moore.
Variable and procedure names have been chosen to be the same
as much as possible, and the mini-projects will be aided by the description
in the paper.
==== ecmi02/nl_qa.txt ====
/*qa*/
/*Question Answering system based on Eliza
Alan Bundy 16.11.79
use with readin, eliza and infer*/
/*top level*/
qa :- read_in(Input), qa(Input).
qa([bye,.]) :- !.
qa(Input) :-
translate(Input,Desc,Type), answer(Type,Desc), qa.
/*translation*/
translate(Input,Desc,Type) :-
sm_triple(S,D,Type), match(Input,S,off,Subst),
replace1(Subst,D,Desc).
/*replace variables by phrases in description*/
replace1(Subst,Word,Word) :- (atomic(Word); var(Word)), !.
==== ecmi02/winst_isolprb.txt ====
/* isol.prb
Definition of Isolation space and examples for Winston Program
Alan Bundy 18.2.81 */
/* Predicate Trees */
tree(occurtree,2,occur_rel(freeof,contains(singleocc,multocc))).
default(occurtree,freeof).
tree(simtree,2,sim_rel(different(unrelated,inverse),ident)).
default(simtree,unrelated).
/* Examples and near Misses */
specimen(isol1, [singleocc(x,expr_at([1,2],before)),
freeof(x,expr_at([1,1],before)),
freeof(x,expr_at([2],before)),
ident(expr_at([1,1],before),expr_at([2,1],after)),
ident(expr_at([1,2],before),expr_at([1],after)),
ident(expr_at([2],before),expr_at([2,2],after)),
==== ecmi02/math_simple.txt ====
/* SIMPLE.
Using PROLOG as a theorem prover:
An equality axioms example.
Try goal 'equal(y,x).'.
Alan Bundy 16.6.81 */
equal(x,y). % The Hypothesis
equal(X,X). % The Reflexive Axiom
equal(U,W) :- equal(U,V), equal(W,V). % The Twisted Transitivity Axiom
/* MINI-PROJECTS
1. Try goal ?- equal(y,x).
2. Experiment by switching the order of the above axioms and trying
==== ecmi02/math_xmath.txt ====
xmath
boyer
breadt
divide
equal
formul
heuris
model
rewrit
semant
simple
skolem
unify
.END
==== ecmi02/math_heuris.txt ====
/* HEURIS.
A Heurisitic Search Theorem Prover.
EQUAL contains test example.
Alan Bundy 19.6.81 */
/* Top Goal */
go :-
clause(Goal,_,_,topclause),
heuristic([Goal]).
/* Heuristic Search Strategy */
heuristic(Fringe) :-
pick_best(Fringe,Current,Rest), % Pick the clause with best score
findall(Clause,successor(Current,Clause),NewClauses), % findall its successors
append(Rest,NewClauses,NewFringe), % Put them on fringe
==== ecmi02/teach_read.txt ====
/*read file term by term*/
foo :- see(mandc), repeat, read(T), write(T), nl,
T=(:-end), seen.
==== ecmi02/nl_elizanew.txt ====
/* Simple ELIZA
-- a natural language misunderstander --
Alan Bundy 15-Nov-79, Richard O'Keefe 17-Feb-81
*/
:- [readin]. % load read_in(-) adn its support.
:- public eliza/0. :- mode eliza.
eliza :-
read_in(Input),
mandatory_substitutions(Input, Clean),
Clean \== [bye,.],
rule(Given, Yield),
match(Given, Clean),
reply(Yield), nl, !,
eliza.
eliza :-
write('I hope I have helped you.'), nl.
:- mode mandatory_substitutions(+, -), idiom(+, -).
==== ecmi02/teach_infer.txt ====
/*infer*/
/*LOGO type inference package
Alan Bundy 16.11.79*/
/*infer fact by backwards inference*/
infer(Goal) :- infer(Goal,now).
infer(Goal,Sit) :- fact(Goal,Sit).
infer(Goal,Sit) :-
backward_rule(Ant,Goal), infer(Ant,Sit).
infer(Goal1&Goal2,Sit) :-
infer(Goal1,Sit), infer(Goal2,Sit).
/*assert fact and trigger forwards inference*/
assert_fact(Fact) :- assert_fact(Fact,now).
assert_fact(Fact,Sit) :-
assert(fact(Fact,Sit)),
==== ecmi02/math_model.txt ====
/* MODEL.
How to evaluate a clause in an interpretation
(provided it is variable free!!)
use with SEMANT
DIVIDE contains test examples
Alan Bundy 22.6.81 */
/* Vet the clause in any interpretations */
vet(Clause) :-
not satisfiable(Clause). % Clause has no model
/* Clause is satisfiable in some Interpretation */
satisfiable(Clause) :-
interpretation(Interp), % If there is an interpretation
model(Interp,Clause), % in which Clause is true
==== ecmi02/winst_winst.txt ====
/*winst
Rational Reconstruction of Winston Learning Program
Alan Bundy 1.12.80
Version for functions */
/* Top Level Program - learn new concept */
/* ------------------------------------- */
/*First time only accept an example */
winston(Concept) :- !,
writef('Please give me an example of a %t \n', [Concept]),
read(Ex), nl,
make_rec(Concept,Ex,EObjs,ERec),
maplist(gensym1(plato),EObjs,CObjs),
make_subst(EObjs,CObjs,Subst),
subst(Subst,ERec,CRec),
maplist(add_ups,CRec,CDefn),
assert(definition(Concept,CObjs,CDefn)),
winston1(Concept).
/* Is grey area in definition eliminated? */
==== ecmi02/nl_atn.txt ====
/*atn*/
/*generation of random sentences from an ATN
Alan Bundy 19.11.79
use with random*/
/*Top Level*/
generate :- generate(sentence,start),
writef('\n\n',[]),
generate.
generate(ATN,finish).
generate(ATN,Node) :-
arc(ATN,Node,Choices),
random_pick(Choices,[NewNode,Label,Type]),
gen(Type,Label,ATN,NewNode).
gen(atn,SubATN,ATN,NewNode) :-
generate(SubATN,start),
==== ecmi02/teach_xteach.txt ====
xteach
infer
mandc
read
readin
random
randomold
.END
==== ecmi02/evans_xevans.txt ====
xevans
evans
figure
.END
==== ecmi02/winst_blockprb.txt ====
/*block.prb
Winston block domain - simple test example
Alan Bundy 6.12.80
use with winston */
/* space of description tree(s) */
space(block,[shapetree]).
/* description tree(s) */
tree(shapetree,1,shape(prism(wedge,block),pyramid)).
/* Example and near miss */
specimen(block1,[block(a)]).
specimen(wedge1,[wedge(b)]).
==== ecmi02/teach_readin.txt ====
/* Read a sentence */
:- mode initread(-).
:- mode readrest(+,-).
:- mode word(-,?,?).
:- mode words(-,?,?).
:- mode alphanum(+,-).
:- mode alphanums(-,?,?).
:- mode digits(-,?,?).
:- mode digit(+).
:- mode lc(+,-).
:- module(readin,[read_in(1)]).
/* Read sentence */
read_in(P):-initread(L),words(P,L,[]),!.
initread([K1,K2|U]):-get(K1),get0(K2),readrest(K2,U).
readrest(46,[]):-!.
==== ecmi02/math_equal.txt ====
/* EQUAL.
Test example for BREADT and HEURIS.
Symmetry can be inferred from reflexivity and twisted transitivity
(notes p62).
Alan Bundy 22.6.81 */
clause(hypothesis, [equal(x,y)], [], input ). % Input clauses
clause(reflexive, [equal(X,X)], [], input ).
clause(twisted, [equal(U,W)], [equal(U,V), equal(W,V)], input ).
clause(goal, [], [equal(y,x)], topclause). % Top clause
==== ecmi04/scrnlpl.txt ====
% File : nlproj.pl
% Author : Alan Bundy ?
% Written: ?
% Updated: 24 January 1985
% Purpose: a simple RTN grammar sentence generator for AI1 project
% Taken from file rtn.pl:-
/* generation of random sentences from an rtn */
/* use with random and drinks */
/*top level*/
go :- generate(sentence,start), /* generate a sentence from start */
nl,nl. /* and print 2 new lines */
generate(RTN,finish). /* if at finish then do nothing */
generate(RTN,Node):- /* to generate RTN from node */
arc(RTN,Node,Arcs), /* find all arcs leaving node */
random_pick(Arcs,[NewNode,Label,Type]), /* pick one at random*/
==== ecmi04/trpai1.txt ====
recall
zm-.Emas Prolog version 4.zm-.Command:.f<red>e
mail compose
ecmi52
student log
@red
y
q
destroy red
.endjob
==== ecmi04/trpai2.txt ====
%external %routine ai1prolog (%string (255) s)
%external %routine %spec obeyjob (%string (255) s)
%external %routine %spec prolog (%string (255) s)
prolog (s)
obeyjob ("ecmi04.trpai1")
%end
%end %of %file
==== ecmi04/winston_winst.txt ====
(Message 1)
From: HELEN HPS (on ERCC DEC-10) <Pain@EDXA>
Date: Wednesday, 16-Jan-85 14:04:30-GMT
To: ecmi08@2972,Pain@EDXA
Via: uk.ac.edinburgh.edxa ; (to uk.ac.edinburgh.emas) 16 Jan 85 14:05:26 gmt
Msg ID: <132001-454-212@EDXA>
--------
/* winst
Consulting all focussing files
Alan Bundy 8.7.82 */
?- [
conn, /* operator declarations */
focus, /* top level stuff */
makerc, /* make records from specimens */
classi, /* classify as exs, non-exs or grey */
learn /* and apply focussing */
].
==== ecmi04/appen1pgp.txt ====
;[1y[6{
[2;4x
[5y [1y217
[5y[1y[3;1xAPPENDIX A
EDITING COMMANDS, STORIES AND NOTES ON THE CHILDREN
[5y [1y[2;4xThis appendix contains:
[48{
==== ecmi04/chap6pgp.txt ====
;[1y[6{
[2;4x
[5y [1y131
[5y[1y[3;1xCHAPTER 7
[5y [1yDETAIL OF THE EDITCOST AND PHONCODE PROGRAMS
[5y [1y[2;4x7.1. Introduction
[48{
==== ecmi04/random.txt ====
/* Random number generator */
random_pick(List,El):- /* to pick random element from a list*/
length(List,L),
random(L,N),
nth(N,List,El).
random(Range,Num):- /* to choose random number in range */
seed(Seed), /* get seed from database */
Num is (Seed mod Range) + 1, /* fit seed into range */
retract(seed(Seed)), /* delete old value of seed */
NewSeed is (125*Seed+1) mod 4093, /* calculate new value*/
assert(seed(NewSeed)). /* and assert it into database */
seed(13). /* random number seed database entry */
/* to get the nth element of list */
nth(1,[Hd|T],Hd):- !. /* if n is i then return first element*/
nth(N,[Hd|T],El):- /* otherwise*/
==== ecmi04/exer_print.txt ====
/* Practical example - 28th February 1984 - Helen Pain */
/* AI1 */
/* Consult the file 'ecmi04.printexs' */
/* this file contains some examples of input and output
using read and write */
/* type go to start */
go:-
write('remember to terminate your input with a full stop'),nl,
nl,nl,
process_atom, nl,
process_atom, nl,
process_atom, nl,nl,
process_list, nl,nl,
process_string, nl,nl,
process_clause, nl,nl.
==== ecmi04/winston_conn.txt ====
(Message 2)
From: HELEN HPS (on ERCC DEC-10) <Pain@EDXA>
Date: Wednesday, 16-Jan-85 14:04:47-GMT
To: ecmi08@2972,Pain@EDXA
Via: uk.ac.edinburgh.edxa ; (to uk.ac.edinburgh.emas) 16 Jan 85 14:06:00 gmt
Msg ID: <132001-454-275@EDXA>
--------
/* CONN.
Operator Declarations for Logical Connectives
Alan Bundy 27.8.82 */
:- op(980,xfy,['->','<->']). /* implication and equivalence */
:- op(850,xfy,v). /* disjunction */
:- op(710,fy,~). /* negation */
--------
==== ecmi04/family.txt ====
mother(mary,tom).
mother(mary,jane).
mother(mary,fred).
father(tom,jim).
father(tom,sue).
father(fred,cecil).
female(mary).
female(jane).
male(tom).
male(jim).
female(sue).
male(cecil).
male(fred).
parent(Parent,Child):-
father(Parent,Child).
parent(Parent,Child):-
mother(Parent,Child).
son(Son,Person):-
parent(Person,Son),
==== ecmi04/winston_arch3prb.txt ====
(Message 5)
From: HELEN HPS (on ERCC DEC-10) <Pain@EDXA>
Date: Wednesday, 16-Jan-85 14:05:54-GMT
To: ecmi08@2972,Pain@EDXA
Via: uk.ac.edinburgh.edxa ; (to uk.ac.edinburgh.emas) 16 Jan 85 14:09:59 gmt
Msg ID: <132001-454-610@EDXA>
--------
/* arch2.prb
Winston arch domain
Alan Bundy 5.12.80
use with winston */
/* space of description trees */
space(arch,[shapetree,touchtree,orienttree,directiontree,supporttree]).
/* description tree */
tree(shapetree,1,shape(prism(wedge,block),pyramid)).
==== ecmi04/trp1.txt ====
recall
zm-.Emas Prolog.zm-.Command:myprolog.f<red>e
mail compose
ECMI04
student log
@red
y
q
destroy red
.endjob
==== ecmi04/trp2.txt ====
%external %routine myprolog (%string (255) s)
%external %routine %spec obeyjob (%string (255) s)
%external %routine %spec prolog (%string (255) s)
prolog (s)
obeyjob ("ecmi04.trp1")
%end
%end %of %file
==== ecmi04/useful.txt ====
append([],L,L).
append([H|L1],L2,[H|L3]):-
append(L1,L2,L3).
member(H,[H|_]).
member(H,[_|T]):-
member(H,T).
rev(L,Revl):-
rev(L,[],Revl).
rev([],L,L).
rev([H|L1],L2,M):-
rev(L1,[H|L2],M).
nexto(X,Y,[X,Y|_]).
nexto(X,Y,[_|Z]):-
nexto(X,Y,Z).
==== ecmi04/exsent.txt ====
29th January 1985 Helen Pain
Exercise for week 4, term 2: sentence generator.
(also basis for Natural Language AI1 project)
Log on to EMAS. Get into PROLOG. Consult the following files:
['ecmi04.rtn'].
['ecmi04.random'].
['ecmi04.drinks'].
Copy them to your own area before you run prolog.
The file 'rtn' contains a sentence generator to be used with an rtn
grammar representation.
The grammar itself is stored in the file 'drinks'.
The file 'random' contains a number of 'utilities' - other generally
useful predicates.
==== ecmi04/exer_greet.txt ====
greet([]).
greet([X|Y]):-
greet(X),
greet(Y).
greet(X):-
write('Hello'),
tab(1),
write(X),
nl.
prstring([]).
prstring([X|Y]):-
put(X),
prstring(Y).
greetstr(X):-
write('Hello'),
tab(1),
prstring(X),
==== ecmi04/ai1_drinks.txt ====
/* Example rtn */
/* sentence rtn */
arc(sentence,start,[[a,nounphrase,rtn]]).
arc(sentence,a,[[b,verb,rtn]]).
arc(sentence,b,[[c,nounphrase,rtn]]).
arc(sentence,c,[[finish,stop_mark,rtn]]).
/* nounphrase rtn */
arc(nounphrase,start,[[finish,proper_noun,rtn],[a,determiner,rtn]]).
arc(nounphrase,a,[[finish,noun,rtn],[a,adjective,rtn]]).
/* verb rtn */
arc(verb,start,[[finish,is,word],[finish,drinks,word],[finish,buys,word],
[finish,refuses,word],[finish,has,word],[finish,consumes,word]]).
/* determiner rtn */
arc(determiner,start,[[finish,a,word],[finish,an,word],[finish,the,word]]).
/* noun rtn */
arc(noun,start,[[finish,vicar,word],[finish,policeman,word],[finish,drinks,word]
==== ecmi04/getstart.txt ====
SETMODE LOWER
SETMODE FLOW=ON
==== ecmi04/acknowfnl.txt ====
@part(ackn, root "thesis.mss")
@style(spacing 1)
@pageheading(immediate)
@begin(Titlepage)
@begin(titlebox)
@majorheading(A Computer Tool for Use by Children with
Learning Difficulties in Spelling)
@majorheading(Helen Pain)
@end(titlebox)
@begin(researchcredit)
@heading(Ph.D.)
@heading(University of Edinburgh)
@heading(1985)
@end(researchcredit)
@end(titlepage)
@prefacesection(Abstract)
==== ecmi04/projs85_quip.txt ====
% File : QUIP
% Author : Dave Plummer
% Written: 23 January 1985
% Updated: 24 January 1985
% Purpose: simple resolution theorem prover for AI1 project
% The code in this file implements QUIP (QUIck Prover), a resolution
% theorem prover, in PROLOG. For those unfamiliar with theorem
% proving a quick explanation is given below, for more detail see
% "The Computational Modelling of Mathematical Reasoning" by Alan Bundy.
%
% QUIP proves theorems in a subset of propositional calculus. In this
% calculus, propositions are represented by proposition letters, eg
% a, b, f etc; Each letter may be thought of as abbreviating an
% assertion about the world which is either true or false eg:
%
% "AI is the most interesting subject taught at Edinburgh University",
% "Theorem proving is the most interesting area of AI",
% "PASCAL is the best programming language in existence"
%
==== ecmi04/ai1_colourmap.txt ====
% File: ECMI01.AI2_COLOURMAP
% Author: Leon Sterling
% Updated: 17 November 83
% Purpose: simple depth first search of a set of possibilities
% Needs: UTIL for member/2
% The top level is test/0.
%
% This procedure colours a map so that no two adjoining countries have
% the same colour. It is a famous theorem in mathematics, recently
% proved, that four colours are enough. It is illustrated with the
% map of Europe.
% The program works by taking each country in turn and trying to put
% it on the map. It checks the country's neighbours to see which of
% the colours can still be used. It stops when all the countries have
% been coloured. With 4 colours and 10 countries there are at most
% 1,048,576 combinations to try!
% assign_colours(CountriesToDo, MapSoFar, Answer) is intended to have
% as its first argument a list of the countries not yet dealt with, and
% as its second argument a list of the countries coloured so far, together
% with their colours, in the form [ ..., Country=Colour, ...]. The third
==== ecmi04/tpproject.txt ====
(Message 83)
From: HELEN HPS (on ERCC DEC-10) <Pain@EDXA>
Date: Wednesday, 30-Jan-85 22:59:37-GMT
To: ecmi04@2972,Pain@EDXA
Via: uk.ac.edinburgh.edxa ; (to uk.ac.edinburgh.emas) 30 Jan 85 23:01:21 gmt
Msg ID: <132017-752-421@EDXA>
--------
AI1 PROLOG PROJECTS: QUIP - A RESOLUTION THEOREM PROVER
AI1 PROLOG PROJECTS: QUIP - A RESOLUTION THEOREM PROVER
AI1 PROLOG PROJECTS: QUIP - A RESOLUTION THEOREM PROVER
Dave Plummer
30 January 1985
Quip is a resolution theorem prover written in PROLOG. In this
project you are asked to investigate and understand the code, and to
==== ecmi04/appen3pgp.txt ====
;[1y[6{
[2;4x
[5y [1y246
[5y[1y[3;1xAPPENDIX C
[5y[1yCORPUS OF ERRORS - BOTH STUDIES
[5y [1y[2;2xSTUDY 1 - ERRORS
GQ
shipwright shipright heard herd
design desin scraping sraping
==== ecmi04/ai1_sentence.txt ====
% File: ECMI01.AI2_SENTENCE
% Author: Peter Ross and others
% Purpose: a simple-minded way of reading in a sentence
% Needs: UTIL for memberchk/2.
% Top-level goal is sentence/1. When it has succeeded the variable
% will be instantiated to a list of atoms representing the words
% typed in - e.g. if you type "who are you?" then sentence/1 will
% instantiate its argument to the list [who, are, you, ?].
%
% Procedures which read things in character by character are slightly
% more tricky than many others to design, because it is important not
% to backtrack over a get/1 goal. If that happens, the character it had
% previously read will be lost.
%
% In the program below, words/2 has an ASCII code as first argument. The
% second argument will be instantiated to the list of atoms corresponding
% to the typed sentence, starting with the given character. The first two
% words/2 clauses therefore define how the end of the sentence is defined.
==== ecmi04/chap2bpgp.txt ====
;[1y[6{
[2;4x
[5y [1y47
[5y[1y[3;1xCHAPTER 3
[5y[1yREVIEW OF THE COMPUTING LITERATURE
[5y [1y[2;4x3.1. Introduction
[48{
==== ecmi04/debug.txt ====
/* DEBUG : an experimental debugger.
Dave Bowen
Updated: 19 January 1984
This is an experimental Prolog debugger. I would be most interested in
comments as to whether any features of it are found to be more useful or less
useful than those in the existing debugger. Currently it only allows user
interaction at the CALL port of a procedure.
The predicates offered are
debug/1 invokes the debugger on a specified goal
tracing/0 (cf trace/0) switches trace mode on (the default)
notracing/0 (cf notrace/0) switches trace mode off
spying/1 (cf spy/1) sets a spypoint
nospying/1 (cf nospy/1) removes a spypoint
spying/0 (cf debugging/0) lists current spypoints
Note that spying/1 and nospying/1 take the same variety of forms of argument
==== ecmi04/allwinston.txt ====
>>>>ARCH3PRB<<<<
(Message 5)
From: HELEN HPS (on ERCC DEC-10) <Pain@EDXA>
Date: Wednesday, 16-Jan-85 14:05:54-GMT
To: ecmi08@2972,Pain@EDXA
Via: uk.ac.edinburgh.edxa ; (to uk.ac.edinburgh.emas) 16 Jan 85 14:09:59 gmt
Msg ID: <132001-454-610@EDXA>
--------
/* arch2.prb
Winston arch domain
Alan Bundy 5.12.80
use with winston */
/* space of description trees */
space(arch,[shapetree,touchtree,orienttree,directiontree,supporttree]).
/* description tree */
==== ecmi04/toemas.txt ====
March 1984 Helen Pain
AI1 NOTES ON USING EMAS
Quick [this note assumes lower case and nobrackets options]
Reference
1. LOGGING ON
LOGGING First find yourself a terminal, switch it on, and press the
ON space bar a few times. You should get a prompt for the host
machine that you want - type 2972
Host: GESQ Host: 2972
then press then return button (I'll refer to this as <cr>).
The return button <cr> is pressed at the end of every command
line.
You will then be prompted for your user number and password:
==== ecmi04/liz.txt ====
/* Very Simple ELIZA - LIZ
-- a natural language misunderstander --
Alan Bundy 15-Nov-79, Richard O'Keefe 17-Feb-81
Peter Ross 5-Nov-81, Helen Pain 26-2-85
*/
/* The top level: call liz (so named 'cos it's a mini-version of ELIZA)
to get going.
?- liz.
The predicate "read" reads in sentences, input as a list.
It will read in
input: [are,you,a,computer].
NOTE: use lower-case letters at the front of words, this is a simple
beast!
*/
liz :-
write('input:'), nl,
read(Input),
nl,
==== ecmi04/winston_focus.txt ====
(Message 9)
From: HELEN HPS (on ERCC DEC-10) <Pain@EDXA>
Date: Wednesday, 16-Jan-85 15:55:01-GMT
To: ecmi08@2972,Pain@EDXA
Via: uk.ac.edinburgh.edxa ; (to uk.ac.edinburgh.emas) 16 Jan 85 15:56:27 gmt
Msg ID: <132001-523-442@EDXA>
--------
/* focus1
Rational Reconstruction of Winston Learning Program
Alan Bundy 1.12.80
Version for functions
More Efficient Version 25.6.82 */
/* Top Level Program - learn new concept */
/* ------------------------------------- */
/*First time only accept an example */
focus(Concept) :-
abolish(definition,3),
==== ecmi04/rtn.txt ====
/* generation of random sentences from an rtn */
/* use with random and drinks */
/*top level*/
go :- generate(sentence,start), /* generate a sentence from start */
nl,nl. /* and print 2 new lines */
generate(RTN,finish). /* if at finish then do nothing */
generate(RTN,Node):- /* to generate RTN from node */
arc(RTN,Node,Arcs), /* find all arcs leaving node */
random_pick(Arcs,[NewNode,Label,Type]), /* pick one at random*/
traverse(Label,Type), /* traverse it */
generate(RTN,NewNode). /* and carry on from the other end */
traverse(Word,word):- /* to traverse a word arc */
write(Word), tab(1). /* write word and a space */
traverse(SubRTN,rtn) :- /*to traverse an rtn arc */
generate(SubRTN,start). /* generate subrtn from start */
==== ecmi04/winston_classi.txt ====
(Message 8)
From: HELEN HPS (on ERCC DEC-10) <Pain@EDXA>
Date: Wednesday, 16-Jan-85 14:08:28-GMT
To: ecmi08@2972,Pain@EDXA
Via: uk.ac.edinburgh.edxa ; (to uk.ac.edinburgh.emas) 16 Jan 85 14:16:43 gmt
Msg ID: <132001-455-533@EDXA>
--------
/* classify1
Classify as example, non-example or grey
Alan Bundy 7.7.82 */
classify(CObjs,VObjs,CDefn,VRec,ExDiff,yes) :-
make_diff(CObjs,VObjs,CDefn,VRec,ExDiff,yes), !.
classify(CObjs,VObjs,CDefn,VRec,BestDiff,grey) :-
bagof(Diff, make_diff(CObjs,VObjs,CDefn,VRec,Diff,grey), Diffs),
Diffs \== [], !,
best(Diffs,BestDiff).
==== ecmi04/exer_useful.txt ====
Exercise - 6th March 1984 Helen Pain
AI1 Practical
Give the command myprolog.
Consult the file "ecmi04.useful".
List it. Try and work out what the predicates are supposed to do.
Try typing the following goals:
append([a,b],[b,c,d],X).
member(a,[c,a,b,b,a,g,e]).
rev(X,[a,p,p,l,e]).
nexto(a,Y,[c,a,t]).
replace(a,e,[b,a,n,a,n,a],A).
==== ecmi04/visiting.txt ====
% Author: Peter Ross
% Purpose: a simple database example
%
% This contains a baby database:
% visiting(A,B) meaning A is currently visiting B
% at(A,Place) meaning A is at Place
% phone(Place, Number) meaning the phone at Place is Number
% There is a predicate 'ring' which finds out which number to ring
% to get hold of a particular person, or vice-versa.
% ---- phone numbers -----
phone(place_a, 667-5770).
phone(place_b, 339-5390).
phone(place_c, 229-8901).
phone(place_d, 229-6031).
phone(place_e, 667-1011-2551).
% ---- some 'at' details ----
at(bundy, place_a).
==== ecmi04/projs85_tpproj.txt ====
(Message 83)
From: HELEN HPS (on ERCC DEC-10) <Pain@EDXA>
Date: Wednesday, 30-Jan-85 22:59:37-GMT
To: ecmi04@2972,Pain@EDXA
Via: uk.ac.edinburgh.edxa ; (to uk.ac.edinburgh.emas) 30 Jan 85 23:01:21 gmt
Msg ID: <132017-752-421@EDXA>
--------
AI1 PROLOG PROJECTS: QUIP - A RESOLUTION THEOREM PROVER
AI1 PROLOG PROJECTS: QUIP - A RESOLUTION THEOREM PROVER
AI1 PROLOG PROJECTS: QUIP - A RESOLUTION THEOREM PROVER
Dave Plummer
30 January 1985
Quip is a resolution theorem prover written in PROLOG. In this
project you are asked to investigate and understand the code, and to
==== ecmi04/winston_learn.txt ====
(Message 4)
From: HELEN HPS (on ERCC DEC-10) <Pain@EDXA>
Date: Wednesday, 16-Jan-85 14:05:36-GMT
To: ecmi08@2972,Pain@EDXA
Via: uk.ac.edinburgh.edxa ; (to uk.ac.edinburgh.emas) 16 Jan 85 14:08:35 gmt
Msg ID: <132001-454-523@EDXA>
--------
/* learn1
Adjust definition appropriately
Alan Bundy 7.7.82 */
/* if new example found */
learn1(Concept,Diff,yes,grey) :- !,
writef('This is a new sort of %t. \n', [Concept]),
maplist(lub,Diff,New),
retract(definition(Concept,CObjs,Old)),
assert(definition(Concept,CObjs,New)).
==== ecmi04/prover.txt ====
(Message 6)
From: HELEN HPS (on ERCC DEC-10) <Pain@EDXA>
Date: Wednesday, 16-Jan-85 14:06:21-GMT
To: ecmi08@2972,Pain@EDXA
Via: uk.ac.edinburgh.edxa ; (to uk.ac.edinburgh.emas) 16 Jan 85 14:11:55 gmt
Msg ID: <132001-454-734@EDXA>
--------
/* HEURISTIC SEARCH THEOREM PROVER */
go :- heuristic([pair(1,goal)]).
/* Top Level Stuff */
heuristic(Agenda) :-
member(pair(0,Empty),Agenda).
heuristic( [pair(Score,Current) | Rest] ) :-
setof1(Clause,successor(Current,Clause),NewClauses),
add_to_agenda(NewClauses,Rest,NewAgenda),
==== ecmi04/refspgp.txt ====
;[1y[6{
[2;4x
[48{
[6{ [5y [1y[3;1xA Computer Tool for Use by Children with
[48{
==== ecmi04/ai2_suphandout.txt ====
(Message 6)
From: HELEN HPS (on ERCC DEC-10) <Pain@EDXA>
Date: Wednesday, 28-Nov-84 14:43:49-GMT
To: ecmi04@2972,Pain@EDXA
Via: uk.ac.edinburgh.edxa ; (to uk.ac.edinburgh.emas) 28 Nov 84 14:45:12 gmt
Msg ID: <131720-472-200@EDXA>
--------
AI2 - PROJECTS
AI2 - PROJECTS
AI2 - PROJECTS
Helen Pain
26 November 1984
Each AI2 student must complete a project. A project usually
consists of a program exploring and/or illustrating some area of the
==== ecmi04/ai1_babyeliza.txt ====
% File: ECMI01.AI2_BABYELIZA
% Author: Peter Ross
% Purpose: the beginnings of an 'Eliza'-like program
% Needs: UTIL for member/2 and append/3
% ECMI01.AI2_SENTENCE for sentence/1
% Top level is go/0.
go :-
sentence(Input),
process(Input).
process(Input) :-
(member(bye, Input) ; member(goodbye, Input)),
!,
write('I enjoyed our little chat.'),
nl.
process(Input) :-
pair(InputPattern,OutputPattern),
match(InputPattern, Input),
flatten(OutputPattern, Output),
==== ecmi04/scrthemss.txt ====
@style(references STDalphabetic,spacing 1,linewidth 70)
@make(article)
@device(lpt)
@modify(figure,above 2,below 2)
@modify(subheading, below 0)
@set(page=1)
@define(romanize,use enumerate,numbered <(@i)>)
@define(alphabetize,use enumerate,numbered <(@a)>)
@modify(FootnoteCounter, within page, numbered <@*>, referenced <@*>)
@heading(AI1 Prolog Projects: QUIP - a resolution theorem prover)
@>Dave Plummer@*
@>@value(Date)@*
Quip is a resolution theorem prover written in PROLOG. In this project
you are asked to investigate and understand the code, and to make some
extensions to the program. Look at the file:
@verbatim( 'ecmi04.quip')
At the front of the file is some information about what the program
does and how it is used.
==== ecmi04/projs85_nlproj.txt ====
(Message 85)
From: HELEN HPS (on ERCC DEC-10) <Pain@EDXA>
Date: Wednesday, 30-Jan-85 22:59:54-GMT
To: ecmi04@2972,Pain@EDXA
Via: uk.ac.edinburgh.edxa ; (to uk.ac.edinburgh.emas) 30 Jan 85 23:01:57 gmt
Msg ID: <132017-752-505@EDXA>
--------
AI1 PROLOG PROJECTS - NATURAL LANGUAGE PROJECT
AI1 PROLOG PROJECTS - NATURAL LANGUAGE PROJECT
AI1 PROLOG PROJECTS - NATURAL LANGUAGE PROJECT
Helen Pain
30 January 1985
This project is based on a program that generates sentences from an
recursive transition network (RTN). The RTN representation of the
==== ecmi04/strips.txt ====
% File: /u3/pec/project/strips
% Author: Peter Clark
% Date: 1 May 1985
% Purpose: STRIPS revised 16 May 1985 for EMAS
:- op(80 ,xfy,'<>').
:- op(90 ,xfy,and).
:- op(100,xfy,[':',then,add]).
:- op(100, fy,[want,if,delete]).
watch :- retract(nowatching), assert(watching).
nowatch :- retract(watching), assert(nowatching).
nowatching.
% go/0 : the top level. Enter the initial and desired world states, format as
% follows....
% eg. initial a final a
% b b
% c d d
% ------- ---
% Format is [floor,c,b,a,floor,d]. [floor,d,b,a].
==== ecmi04/ai1_atn.txt ====
/* generation of random sentences from an rtn */
/* use with random and drinks */
/*top level*/
go :- generate(sentence,start), /* generate a sentence from start */
nl,nl. /* and print 2 new lines */
generate(RTN,finish). /* if at finish then do nothing */
generate(RTN,Node):- /* to generate RTN from node */
arc(RTN,Node,Arcs), /* find all arcs leaving node */
random_pick(Arcs,[NewNode,Label,Type]), /* pick one at random*/
traverse(Label,Type), /* traverse it */
generate(RTN,NewNode). /* and carry on from the other end */
traverse(Word,word):- /* to traverse a word arc */
write(Word), tab(1). /* write word and a space */
traverse(SubRTN,rtn) :- /*to traverse an rtn arc */
generate(SubRTN,start). /* generate subrtn from start */
==== ecmi04/winston_makerc.txt ====
(Message 3)
From: HELEN HPS (on ERCC DEC-10) <Pain@EDXA>
Date: Wednesday, 16-Jan-85 14:05:05-GMT
To: ecmi08@2972,Pain@EDXA
Via: uk.ac.edinburgh.edxa ; (to uk.ac.edinburgh.emas) 16 Jan 85 14:07:08 gmt
Msg ID: <132001-454-365@EDXA>
--------
/* make_rec
Make records from list of relations
Alan Bundy 7.7.82 */
make_rec(Concept,Example,VObjs,VRec,Pairs) :- !,
specimen(Example,ERelns),
gen_list(ERelns,VRelns,Pairs),
maplist(second,Pairs,VObjs),
maplist(convert,VRelns,VRec).
/* Take list of terms and apply gen_term to each member */
==== ecmi04/mandc.txt ====
% File : MANDC
% Author : Paul
% Updated: 30 April 1985
% Purpose: Missionaries and Cannibals by Lawrence Byrd
gofrom([0,0,0],[3,3,1],Oldlefts).
gofrom(Left,Right,Oldlefts):-
legal(Left),
legal(Right),
not looping(Left,Oldlefts),
applymove(Left,Right,Newleft,Newright),
append([Left],Oldlefts,Newoldlefts),
gofrom(Newleft,Newright,Newoldlefts).
applymove(Left,Right,Newleft,Newright):-
boathere(Left),
moveload(Left,Right,Newleft,Newright).
==== ecmi04/ai2_liza.txt ====
/* Simple ELIZA
-- a natural language misunderstander --
Alan Bundy 15-Nov-79, Richard O'Keefe 17-Feb-81
Peter Ross 5-Nov-81
*/
:-(['ecmi25.util_readin']). % load read_in + necessary support.
/* The top level: call liza (so named 'cos it's a mini-version of ELIZA)
to get going.
The predicate read_in reads in sentences, currently ending with a
full stop, exclamation mark or question mark. Thus
read_in(X)
will read in
hello there.
as
X = [hello,there,.]
NOTE: use lower-case letters at the front of words, this is a simple
beast!
*/
==== ecmi04/famtree.txt ====
mother(mary,tom).
mother(mary,jane).
mother(mary,fred).
father(tom,jim).
father(tom,sue).
father(fred,cecil).
female(mary).
female(jane).
male(tom).
male(jim).
female(sue).
male(cecil).
male(fred).
parent(Parent,Child):-
father(Parent,Child).
parent(Parent,Child):-
mother(Parent,Child).
son(Son,Person):-
parent(Person,Son),
==== ecmi04/projs85_drinks.txt ====
/* Example rtn */
/* sentence rtn */
arc(sentence,start,[[a,nounphrase,rtn]]).
arc(sentence,a,[[b,verb,rtn]]).
arc(sentence,b,[[c,nounphrase,rtn]]).
arc(sentence,c,[[finish,stop_mark,rtn]]).
/* nounphrase rtn */
arc(nounphrase,start,[[finish,proper_noun,rtn],[a,determiner,rtn]]).
arc(nounphrase,a,[[finish,noun,rtn],[a,adjective,rtn]]).
/* verb rtn */
arc(verb,start,[[finish,is,word],[finish,drinks,word],[finish,buys,word],
[finish,refuses,word],[finish,has,word],[finish,consumes,word]]).
/* determiner rtn */
arc(determiner,start,[[finish,a,word],[finish,an,word],[finish,the,word]]).
/* noun rtn */
arc(noun,start,[[finish,vicar,word],[finish,policeman,word],[finish,drinks,word]
==== ecmi04/ai1_random.txt ====
/* Random number generator */
random_pick(List,El):- /* to pick random element from a list*/
length(List,L),
random(L,N),
nth(N,List,El).
random(Range,Num):- /* to choose random number in range */
seed(Seed), /* get seed from database */
Num is (Seed mod Range) + 1, /* fit seed into range */
retract(seed(Seed)), /* delete old value of seed */
NewSeed is (125*Seed+1) mod 4093, /* calculate new value*/
assert(seed(NewSeed)). /* and assert it into database */
seed(13). /* random number seed database entry */
/* to get the nth element of list */
nth(1,[Hd|T],Hd):- !. /* if n is i then return first element*/
nth(N,[Hd|T],El):- /* otherwise*/
==== ecmi04/emnotes.txt ====
Helen Pain February 1984.
AI1 notes
Notes on using the editor EM
1. Loading a file/Saving a file.
Say you have a file called fred that you want to edit. To load fred
into the editor em from emas command level you type:
Command:em fred
The word Editor will then be printed and the number of lines in the
files fred (if the file exists). If you do not actually have a file
called fred one will be created.
How do you save the file when you have finished editing? If you are
editing fred and you type w after the > prompt:
>w
==== ecmi04/charts.txt ====
(Message 7)
From: HELEN HPS (on ERCC DEC-10) <Pain@EDXA>
Date: Wednesday, 16-Jan-85 14:07:26-GMT
To: ecmi08@2972,Pain@EDXA
Via: uk.ac.edinburgh.edxa ; (to uk.ac.edinburgh.emas) 16 Jan 85 14:14:30 gmt
Msg ID: <132001-455-241@EDXA>
--------
/* GENERAL-PURPOSE ACTIVE CHART PARSER */
/* Independent of grammatical formalism used, although the formalism */
/* will have to have some general resemblance to a phrase-structure */
/* grammar for a chart to work at all. The phrase-structure grammar */
/* terms "rule", "LHS", "RHS" have been used here for simplicity, */
/* but they should be interpreted fairly abstractly. */
/* All the external interfaces are in terms of 3 data-types: */
/* surface words */
/* syntactic categories */
/* edge-labels */
==== ecmi04/ai2_ex1.txt ====
Exercise - 12th November 1984 Helen Pain
AI2 Practical
Consult the file "ecmi04.useful".
List it. Work out what the predicates are supposed to do.
Try typing the following goals:
append([a,b],[b,c,d],X).
member(a,[c,a,b,b,a,g,e]).
rev(X,[a,p,p,l,e]).
nexto(a,Y,[c,a,t]).
replace(a,e,[b,a,n,a,n,a],A).
==== ecmi04/mystdaref.txt ====
(Message 15)
Subject: scribe info
From: Helen Pain <helen@uk.ac.ed.aiva>
Date: Tue, 19 Nov 85 22:29:09 GMT
To: ecmi04@uk.ac.ed.emas
Via: uk.ac.edinburgh.aiva ; (to uk.ac.edinburgh.emas) 19 Nov 85 22:30:10 gmt
Msg ID: <sent 19 Nov 85 22:29:09 GMT via AIVA>
@Comment[ Copyright (C) 1979, 1980 UNILOGIC, Ltd. ]
@marker(References,MYSTDalphabetic)
@Comment{
Bibliography format definition for standard open-format alphabetic
references.
}
@Style(Citations=5, StringMax=2000, CitationType=Parentheses,
Citationseparator=";")
@Define(L1,LeftMargin 15,Indent -15,Above 1,Break,Fill)
==== ecmi04/geninfo.txt ====
Folder M#INBOX, messages '1,5,6,8,9,10'
1 (1313) 01 Feb J.Wexler @ RCO Student processes
5 (580) 03 Feb J.Wexler @ RCO Student prolog journals
6 (172) 07 Feb L.Byrd files
8 (537) 15 Feb ADVICE @ RCO Re: file descriptors
9 (538) 16 Feb To: ADVICE @ RCO Re: file descriptors
10 (57) 16 Feb To: advice file size
________________________________________________________________________
(Message 1)
Subject: Student processes
From: J.Wexler @ RCO 01 Feb 84 10:30:08 gmt
To: H.Pain
Msg ID: <01 Feb 84 10:30:08 gmt 020610@2972>
If you ACCEPT ERCC19.GJNY and INSERT GJNY, you will find you can use the
command GETJNL. It takes one parameter which is the username of one of
==== ecmi04/winston_infer.txt ====
(Message 10)
From: HELEN HPS (on ERCC DEC-10) <Pain@EDXA>
Date: Wednesday, 16-Jan-85 15:55:21-GMT
To: ecmi08@2972,Pain@EDXA
Via: uk.ac.edinburgh.edxa ; (to uk.ac.edinburgh.emas) 16 Jan 85 15:58:01 gmt
Msg ID: <132001-523-536@EDXA>
--------
/* infer
Inference package for focus program
Alan Bundy 7.7.82 */
infer(Concept) :- /* to forward infer from current defn */
rule(Rule), /* find a rule */
eval(Concept,Rule,Conc), /* evaluate rule in current defn */
simp(Conc,New), /* simplify conclusion */
insert(Concept,New), /* insert new conclusion in defn */
infer_mess(New), /* announce inference */
fail. /* force backtracking */
==== ecmi04/projmss.txt ====
(Message 161)
From: HELEN HPS (on ERCC DEC-10) <Pain@EDXA>
Date: Wednesday, 28-Nov-84 14:43:49-GMT
To: ecmi04@2972,Pain@EDXA
Via: uk.ac.edinburgh.edxa ; (to uk.ac.edinburgh.emas) 28 Nov 84 14:45:12 gmt
Msg ID: <131720-472-200@EDXA>
--------
AI2 - PROJECTS
AI2 - PROJECTS
AI2 - PROJECTS
Helen Pain
26 November 1984
Each AI2 student must complete a project. A project usually
consists of a program exploring and/or illustrating some area of the
==== ecmi04/alterer.txt ====
/* A simple sentence alterer.
Helen Pain (from Clocksin and Mellish) 26.2.85
To use the program, first consult this file and then
type:
?- alter([i,write,a,sentence],X).
Another sentence will be output, with a number of the
words in the input sentence changed.
*/
alter([],[]).
alter([H|T],[X|Y]):-
change(H,X),
alter(T,Y).
change(we,you).
change(are,[are,not]).
change(french,german).
change(do,no).
change(you,we).
change([are,not],are).
==== ecmi04/wine.txt ====
% File: /u4/peter/prolog/ks299/wine
% Author: Peter Ross
% Updated: 6 Sep 84
% Purpose: a simple knowledge base for the KS299 expert system shell
'What is the overall taste (delicate/average/strong)'
finds tastiness of meal.
'Is there a sauce (yes/no)'
finds has_sauce.
'What sort of sauce (spicy/creamy/tomatoey/other)'
finds sauce of meal.
'What body do you prefer (light/medium/full)'
finds preferred_body of wine.
'What colour do you prefer (red/white)'
finds preferred_colour of wine.
'What sweetness do you prefer (dry/medium/sweet)'
==== ecmi04/appen2pgp.txt ====
;[1y[6{
[2;4x
[5y [1y240
[5y[1y[3;1xAPPENDIX B
[5y[1yPHONCODE GRAMMAR AND EXAMPLES
[5y [1y[2;4xIn this appendix the following are presented:
[5y [1y(a) the grapheme-phoneme grammar used by the phoncode program;
[5y [1y(b) a sample of dictionary words, phonetically coded;
==== ecmi04/drinks.txt ====
/* Example rtn */
/* sentence rtn */
arc(sentence,start,[[a,nounphrase,rtn]]).
arc(sentence,a,[[b,verb,rtn]]).
arc(sentence,b,[[c,nounphrase,rtn]]).
arc(sentence,c,[[finish,stop_mark,rtn]]).
/* nounphrase rtn */
arc(nounphrase,start,[[finish,proper_noun,rtn],[a,determiner,rtn]]).
arc(nounphrase,a,[[finish,noun,rtn],[a,adjective,rtn]]).
/* verb rtn */
arc(verb,start,[[finish,is,word],[finish,drinks,word],[finish,buys,word],
[finish,refuses,word],[finish,has,word],[finish,consumes,word]]).
/* determiner rtn */
arc(determiner,start,[[finish,a,word],[finish,an,word],[finish,the,word]]).
/* noun rtn */
arc(noun,start,[[finish,vicar,word],[finish,policeman,word],[finish,drinks,word]
==== ecmi04/chapn6fnl.txt ====
@part(assum,root"thesis.mss")
@chapter(Testing assumptions about the use of the program).
@label(assumptions)
@section(Introduction)
@label(ass-intro)
In chapter @ref(design) a number of assumptions were made about the way
in which the program described would be used. These assumptions
were tested in two studies, described in this chapter.
Children from the Reading Unit took part in these studies.
There were three main purposes of the first study:
@begin(enumerate)
to test whether children with spelling disabilities
would be both able and willing to use a simple text editor to
write stories;
to examine the ways in which the text editor was used by the children,
and to consider ways it might be extended;
to provide samples of the children's errors, made in free
==== ecmi04/allks299.txt ====
>>>>DOC<<<<
PRACTICAL EXERCISE: A SIMPLE EXPERT SYSTEM SHELL, WRITTEN IN PROLOG
Peter Ross
1. INTRODUCTION
This describes how to use a simple expert system shell, and gives a number
of exercises based on it. The shell is modelled loosely on Teknowledge's
KS-300 (and so is called ks299, since it's not quite the full shilling).
The shell can be found in
UNIX: /u4/peter/prolog/ks299/int
EMAS: ECMI01.KS299_INT
Neither version needs any external utilities. A sample knowledge base can
be found in
UNIX: /u4/peter/prolog/ks299/wine
EMAS: ECMI01.KS299_WINE
==== ecmi04/chap1fnl.txt ====
@part(intro,root "thesis.mss")
@chapter(Introduction)
@set(page=1)
@pageheading(center <@value[page]>,immediate)
@label(background)
@section(Children with learning difficulties in spelling: population
and problem)
@label(pop-problem)
This thesis is concerned with children who, despite being intelligent,
fail to learn how to spell.
Characteristically, they have spelling ages (as measured by standardized tests)
which are two years or more behind their chronological ages.
They are often not able to spell even common words correctly.
In addition, they may have particular difficulty in specific areas:
in perceiving patterns in words; in identifying rhymes; and in the sequencing
==== ecmi04/quip.txt ====
% File : QUIP
% Author : Dave Plummer
% Written: 23 January 1985
% Updated: 24 January 1985
% Purpose: simple resolution theorem prover for AI1 project
% The code in this file implements QUIP (QUIck Prover), a resolution
% theorem prover, in PROLOG. For those unfamiliar with theorem
% proving a quick explanation is given below, for more detail see
% "The Computational Modelling of Mathematical Reasoning" by Alan Bundy.
%
% QUIP proves theorems in a subset of propositional calculus. In this
% calculus, propositions are represented by proposition letters, eg
% a, b, f etc; Each letter may be thought of as abbreviating an
% assertion about the world which is either true or false eg:
%
% "AI is the most interesting subject taught at Edinburgh University",
% "Theorem proving is the most interesting area of AI",
% "PASCAL is the best programming language in existence"
%
==== ecmi04/exuseful.txt ====
Exercise - 12th February 1985 Helen Pain
AI1 Practical
Give the command ai1prolog or p.
Consult the file 'ecmi04.useful'.
List it. Try and work out what the predicates are supposed to do.
Try typing the following goals:
append([a,b],[b,c,d],X).
member(a,[c,a,b,b,a,g,e]).
rev(X,[a,p,p,l,e]).
nexto(a,Y,[c,a,t]).
replace(a,e,[b,a,n,a,n,a],A).
==== ecmi04/ex2tree.txt ====
AI1 Prolog exercise 2 20.11.84
Check that you have a copy of emnotes (notes on the editor em).
Switch the terminal on; call host (2972); log on.
Look at your files - make sure you still have a copy of the file
called 'family'. Copy it from me if you haven't (ecmi04.famtree).
Run prolog - use ai1prolog or p
Command: ai1prolog
Consult the file 'family'
?- [family].
Try matching a few goals to remind yourself how it works.
?- parent(Who,cecil).
?- daughter(tom,D).
==== ecmi04/ex2useful.txt ====
Exercise for week 7 - AI1.
Continuation of 'useful' list processing predicates.
length
------
Try
?- length(X,[a,sa,d,f,g,h,j]).
?- length(X,[a,[b,c],d,e]).
nexto
-----
Try
?- nexto(a,Y,[c,a,t]).
?- nexto(Y,a,[c,a,t]).
?- nexto(X,Y,[c,a,t]).
==== ecmi04/ai1_project.txt ====
AI1 Projects
__________
Log on to EMAS. Get into PROLOG. Consult the following files:
ecmi04.atn
ecmi04.random
ecmi04.drinks
[ you may copy them to your own area before you run prolog if you wish]
In response to the prompt ?- type go.
Try this several times and explore the sentences generated.
List the program.
Trace the program and step through it:
?- trace,go.
==== ecmi04/ks299.txt ====
% File: /u4/peter/prolog/ks299/int
% Author: Original by Steven Hardy. Reworked by Peter Ross.
% Updated: 6 Sep 84 by Peter Ross
% Purpose: a simple rule interpreter in the style of KS-300
% Original code courtesy of Teknowledge Inc. - so don't make use of it
% without acknowledging them.
% The rule base is made up of assertions of the form
% RULE: if PREMISE then CONCLUSION.
% where RULE is an atom,
% PREMISE is a simple proposition of the form
% THING = VALUE
% or THING is known
% or THING is unknown
% or is a combination of simple propositions
% built up using "and" and "or", where "or"
% binds tighter than "and",
% CONCLUSION is a simple conclusion of the form
% THING = VALUE
% or THING = VALUE cf CONFIDENCE
==== ecmi04/chap4pgp.txt ====
;[1y[6{
[2;4x
[5y [1y91
[5y[1y[3;1xCHAPTER 5
[5y[1yDESIGN AND USE OF A COMPUTER PROGRAM
[48{
[6{
TO INCORPORATE THE EDITCOST AND PHONCODE CORRECTORS
==== ecmi04/scrthepl.txt ====
% File : QUIP
% Author : Dave Plummer
% Written: 23 January 1985
% Updated: 24 January 1985
% Purpose: simple resolution theorem prover for AI1 project
% The code in this file implements QUIP (QUIck Prover), a resolution
% theorem prover, in PROLOG. For those unfamiliar with theorem
% proving a quick explanation is given below, for more detail see
% "The Computational Modelling of Mathematical Reasoning" by Alan Bundy.
%
% QUIP proves theorems in a subset of propositional calculus. In this
% calculus, propositions are represented by proposition letters, eg
% a, b, f etc; Each letter may be thought of as abbreviating an
% assertion about the world which is either true or false eg:
%
% "AI is the most interesting subject taught at Edinburgh University",
% "Theorem proving is the most interesting area of AI",
% "PASCAL is the best programming language in existence"
%
==== ecmi04/chapn8fnl.txt ====
@part(discuss,root "thesis.mss")
@chapter(Performance)
@label(perform)
@section(Introduction)
@label(perform-intro)
In this chapter the performance of the editcost and
phoncode programs, in correcting the errors made by the children,
is assessed.
If the programs are able to provide correction of the errors,
then this provides evidence that:
@begin(alphabetize)
there are regularities in the children's errors;
information relating to these regularities can be used
by the programs to reconstruct the correction from the error.
@end(alphabetize)
==== ecmi04/ex3visit.txt ====
AI1 TUTORIAL AND PRACTICAL EXERCISE 27 th November 1984
Helen Pain
LOG ON AND RUN AI1PROLOG OR P
CONSULT THE FILE ECMI04.VISITING
?- ['ecmi04.visiting"].
GET A LISTING OF IT
?- listing.
READ THE LISTING AND WORK OUT WHAT THE FILE DOES.
WRITE QUESTIONS TO GET THE ANSWERS TO THE FOLLOWING;
1. the phone number at place_a
==== ecmi04/projs85_random.txt ====
/* Random number generator */
random_pick(List,El):- /* to pick random element from a list*/
length(List,L),
random(L,N),
nth(N,List,El).
random(Range,Num):- /* to choose random number in range */
seed(Seed), /* get seed from database */
Num is (Seed mod Range) + 1, /* fit seed into range */
retract(seed(Seed)), /* delete old value of seed */
NewSeed is (125*Seed+1) mod 4093, /* calculate new value*/
assert(seed(NewSeed)). /* and assert it into database */
seed(13). /* random number seed database entry */
/* to get the nth element of list */
nth(1,[Hd|T],Hd):- !. /* if n is i then return first element*/
nth(N,[Hd|T],El):- /* otherwise*/
==== ecmi04/nlproject.txt ====
(Message 85)
From: HELEN HPS (on ERCC DEC-10) <Pain@EDXA>
Date: Wednesday, 30-Jan-85 22:59:54-GMT
To: ecmi04@2972,Pain@EDXA
Via: uk.ac.edinburgh.edxa ; (to uk.ac.edinburgh.emas) 30 Jan 85 23:01:57 gmt
Msg ID: <132017-752-505@EDXA>
--------
AI1 PROLOG PROJECTS - NATURAL LANGUAGE PROJECT
AI1 PROLOG PROJECTS - NATURAL LANGUAGE PROJECT
AI1 PROLOG PROJECTS - NATURAL LANGUAGE PROJECT
Helen Pain
30 January 1985
This project is based on a program that generates sentences from an
recursive transition network (RTN). The RTN representation of the
==== ecmi04/projs85_rtn.txt ====
/* generation of random sentences from an rtn */
/* use with random and drinks */
/*top level*/
go :- generate(sentence,start), /* generate a sentence from start */
nl,nl. /* and print 2 new lines */
generate(RTN,finish). /* if at finish then do nothing */
generate(RTN,Node):- /* to generate RTN from node */
arc(RTN,Node,Arcs), /* find all arcs leaving node */
random_pick(Arcs,[NewNode,Label,Type]), /* pick one at random*/
traverse(Label,Type), /* traverse it */
generate(RTN,NewNode). /* and carry on from the other end */
traverse(Word,word):- /* to traverse a word arc */
write(Word), tab(1). /* write word and a space */
traverse(SubRTN,rtn) :- /*to traverse an rtn arc */
generate(SubRTN,start). /* generate subrtn from start */
==== ecmi04/scrnlmss.txt ====
@style(references STDalphabetic,spacing 1,linewidth 70)
@make(article)
@device(LASER)
@modify(figure,above 2,below 2)
@modify(subheading, below 0)
@set(page=1)
@define(romanize,use enumerate,numbered <(@i)>)
@define(alphabetize,use enumerate,numbered <(@a)>)
@modify(FootnoteCounter, within page, numbered <@*>, referenced <@*>)
@heading(AI1 Prolog Projects - Natural Language Project)
@>Helen Pain@*
@>@value(Date)@*
This project is based on a program that generates sentences from
an recursive transition network (RTN).
The RTN representation of the grammar consists
of a number of states and connecting arcs.
The arcs are labelled by other RTN's (non-terminals) or by words (terminals).
The RTN may be traversed and a sentence generated in the process
==== ecmi04/ai1_visiting.txt ====
% Author: Peter Ross
% Purpose: a simple database example
%
% This contains a baby database:
% visiting(A,B) meaning A is currently visiting B
% at(A,Place) meaning A is at Place
% phone(Place, Number) meaning the phone at Place is Number
% There is a predicate 'ring' which finds out which number to ring
% to get hold of a particular person, or vice-versa.
% ---- phone numbers -----
phone(place_a, 667-5770).
phone(place_b, 339-5390).
phone(place_c, 229-8901).
phone(place_d, 229-6031).
phone(place_e, 667-1011-2551).
% ---- some 'at' details ----
at(bundy, place_a).
==== ecmi04/gp300mss.txt ====
@style(references MYSTDAlphabetic,leftmargin 1.5inch,
topmargin .75inch, spacing 1.5, bottommargin 1.5inch,singlesided,
hyphenation on,widestblank 2, font gothic)
@make(thesis)
@device(gp300)
@modify(verbatim,facecode t)
@modify(HD1A, font titlefont0)
@modify(figure,above 2,below 2)
@define(romanize,use enumerate,numbered <(@i) >, referenced <(@i)>)
@define(alphabetize,use enumerate,numbered <(@a) >, referenced <(@a)>)
@modify(equation, leftmargin +1, rightmargin +0)
@modify(EquationCounter, numbered <(@i)>, referenced <(@i)>)
@modify(FootnoteCounter, within chapter)
@use(Bibliography = Thesis.Bib)
@include(acknow.mss)
@include(chap1.mss)
@include(chap2.mss)
@include(chap2b.mss)
@include(chap3.mss)
@include(chap4.mss)
@include(chap5.mss)
==== ecmi04/util.txt ====
em(File) :-
emas(em,File),
reconsult(File).
list(Predicate) :-
current_predicate(Predicate,Template),
clause(Template,Body),
nl,
list1((Template :- Body)),
fail.
list(_) :- !.
list1((Template :- true)) :-
!,
numbervars(Template,1,_),
print(Template),write('.'),nl.
list1((Template :- Body)) :-
==== ecmi05/elgnames.txt ====
0.9
'EMPTY' ''
'SPACE' ' '
'NL' '
'
'TAB' ' '
'TRUE' 'TRUE'
'FALSE' 'FALSE'
'QUOTE' '"'
'DOTS' ':'
'('
')'
','
'NIL'
'UNDEF'
'THEN'
'ELSE'
'END'
'DELETE'
'UNDO'
'UNDOS'
==== ecmi05/c_evalp.txt ====
/************************************************************************
* *
* C Prolog evalp.c *
* ======== ------- *
* *
* By Fernando Pereira, July 1982. *
* EdCAAD, Dept. of Architecture, University of Edinburgh. *
* *
* Based on the Prolog system written in IMP by Luis Damas for ICL 2900 *
* computers, with some contributions by Lawrence Byrd. Stricter types *
* and several extensions by Richard O'Keefe, also BACKWARDS support. *
* *
* Copyright (C) 1982 Fernando Pereira, Luis Damas and Lawrence Byrd. *
* Copyright (C) 1984 F.Pereira, L.Damas, L.Byrd and R.A.O'Keefe. *
* *
************************************************************************/
/*----------------------------------------------------------------------+
| |
| Evaluable Predicates |
| |
==== ecmi05/pop2v11s.txt ====
%CONTROL X'FFFFFFF2'
%EXTERNALROUTINE POP2(%STRING(63)POPPARM);
%EXTERNALINTEGERFNSPEC EVENT(%INTEGER I)
!POP2 INTERPRETER FOR EMAS
%CONSTSTRING(25) IDENTIFICATION="EMAS POP2: V1.1 08/01/78"
!
%SYSTEMROUTINESPEC OUTFILE(%STRING(15) S %INTEGER L,M,P %C
%INTEGERNAME C,F)
%EXTERNALSTRINGFNSPEC SSFMESSAGE
%EXTERNALROUTINESPEC DEFINE(%STRING(63) S)
%EXTERNALINTEGERFNSPEC EXIST(%STRING(15)S)
%EXTERNALROUTINESPEC CLEAR(%STRING(63) S)
%EXTERNALLONGREALFNSPEC CPUTIME
%EXTERNALROUTINESPEC PROMPT(%STRING(17) S)
%EXTERNALINTEGERFNSPEC TEST INT(%INTEGER C %STRING(15) S)
%EXTERNALROUTINESPEC E(%STRING(63) S)
!
! REPRESENTATION OF POP2 VALUES:-
! ...000 : INTEGER (TRUE VALUE * 8)
! ...100 : REAL (TRUE FP VALUE WITH LS BITS FORCED)
! ....10 : COMPOUND (BYTE ADDRESS OF FIRST WORD MINUS TWO)
==== ecmi05/z5doc.txt ====
=UDK=``+0Titan12iso-P
`+120025A-P
`+2Kosmos10-P
`+3Kosmos10B-P
`+4Kosmos12B-P
`+5Kosmos14-P
`+6kosmos10i-P
`+7cmr11-P
`+8cmi11-P
`+9SymbolC10-P
`m700,0,0,0,495
`d`t70
`i0
`rd200r
`rr1005r`41. INTRODUCTION.
`rd180r
`rr400r`2There`rr27rseem`rr27rto`rr27rbe`rr27rtwo`rr27rmain`rr27rconcerns`rr27rand`rr27rgoals`rr27rbehind`rr27rthe`rr27rwork`rr27ron`rr26rnatural
language`rr27rusing`rr27rcomputers,`rr27rconverging`rr27rat`rr27rmany`rr27rpoints.`rr45rOne`rr27rgoal,`rr27rthat`rr27rof`rr27rmore
natural`rr20rcommunication`rr20rwith`rr19rcomputers,`rr19rhas`rr19rits`rr19rroots`rr19rin`rr19rthe`rr19rconcern`rr19rfor`rr19rapplication
of the fruits of computational research,`rr19ramplified`rr19rby`rr19rthe`rr19rrecent`rr19rrace`rr19rto`rr19rbuild`rr19ra`rr19rnew
generation`rr29rof`rr29rcomputers,`rr29rin`rr29rorder`rr29rto`rr28rmake`rr28rthem`rr28reven`rr28rmore`rr28ruser-oriented`rr28rand
more useful for our purposes.`rr37rThe other`rr19rgoal`rr19ris`rr19rtheoretical`rr19rinvestigation`rr19rof`rr19rhuman
language,`rr25rand`rr25rsome`rr25rresearchers`rr25rhope`rr25rthat`rr25rthe`rr25rcomputer`rr24rmight`rr24rbe`rr24ra`rr24rvery`rr24ruseful
==== ecmi05/parser.txt ====
% File: parser
% Author: Peter Ross
% Updated: 6 June 1985
% Purpose: simple general purpose active chart parser
% This is a (very) simple general purpose chart parser.
% There is separate user documentation in parser.doc.
% There are three important data structures to know about:
% Edge:
% edge(Category, Found, Needs, StartVertex, EndVertex)
% Category is the category as on the LHS of a rule.
% Found is what has already been accounted for, of the
% RHS of that rule. At the start it is just []. It
% is ordered so that the most recently found item is
% first. To help analyse the chart after the parseing,
% the items are of the form
% Category = VertexNumber
% showing the vertex number where that found category
% started.
% Needs is what has not yet been accounted for, of the
==== ecmi05/xlisp_xlsetfc.txt ====
/* xlsetf - set field function */
#include "xlisp.h"
/* external variables */
extern NODE *s_car,*s_cdr,*s_get,*s_svalue,*s_splist;
extern NODE *xlstack;
/* xsetf - built-in function 'setf' */
NODE *xsetf(args)
NODE *args;
{
NODE *oldstk,arg,place,value;
/* create a new stack frame */
oldstk = xlsave(&arg,&place,&value,NULL);
/* initialize */
arg.n_ptr = args;
/* handle each pair of arguments */
==== ecmi05/tdoc.txt ====
=UDK=``+0Titan12iso-P
`+120025A-P
`+2Kosmos10-P
`+3Kosmos10B-P
`+4Kosmos12B-P
`+5Kosmos14-P
`+6kosmos10i-P
`+7cmr11-P
`+8cmi11-P
`+9SymbolC10-P
`m700,0,0,0,495
`d`t70
`i0
`rd750r
`rr430r`b`5PREMINARIES TO PARSING INFLECTIONAL LANGUAGES:
`rr825rSOME ANALYSES OF POLISH
`rd210r
`rr1065r`p`4Jan Bujnowski
`rd1080r
`rr940r`2This is a modified version of
`rr830ra project submitted in partial fulfilment
`rr650rof the requirements of the degree of M.A. with Honours
`rr825rin Linguistics with Artificial Intelligence.
`rd200r
`rr840r`3Department of Artificial Intelligence,
==== ecmi05/xlisp_factlsp.txt ====
(defun factorial (n)
(cond ((= n 1) 1)
(t (* n (factorial (- n 1))))))
==== ecmi05/t.txt ====
$a device=x2700
$a pageno=0
$a sup='\'
$a bold='~'
$a just=1
$B12
$5
$L1m
~PREMINARIES TO PARSING INFLECTIONAL LANGUAGES:~
$L1M
~SOME ANALYSES OF POLISH~
$4
$b3
$l1m
Jan Bujnowski
$2
$b18
$L1m
This is a modified version of
$L1m
a project submitted in partial fulfilment
==== ecmi05/h_pl.txt ====
/************************************************************************
* *
* C Prolog pl.h *
* ======== ---- *
* *
* By Fernando Pereira, July 1982. *
* EdCAAD, Dept. of Architecture, University of Edinburgh. *
* *
* Based on the Prolog system written in IMP by Luis Damas for ICL *
* 2900 computers, with some contributions by Lawrence Byrd. *
* *
* Copyright (C) 1982 Fernando Pereira, Luis Damas and Lawrence Byrd. *
* Beautified, made type-correct, and given additional registers in *
* 1983 by Richard O'Keefe, DAI Edinburgh. Made to work on GEC-63s *
* and other BACKWARDS machines in 1984 by the same. *
* *
************************************************************************/
#include <stdio.h>
#define TRUE 1
==== ecmi05/c_compare.txt ====
/************************************************************************
* *
* C Prolog compare.c *
* ======== --------- *
* *
* By Fernando Pereira, July 1982. *
* EdCAAD, Dept. of Architecture, University of Edinburgh. *
* *
* Based on the Prolog system written in IMP by Luis Damas for ICL 2900 *
* computers, with some contributions by Lawrence Byrd. Stricter types *
* and several extensions by Richard O'Keefe, also BACKWARDS support. *
* *
* Copyright (C) 1982 Fernando Pereira, Luis Damas and Lawrence Byrd. *
* Copyright (C) 1984 R.A.O'Keefe. *
* *
************************************************************************/
/*----------------------------------------------------------------------+
| |
| compare() always compares X->v1ofcf and X->v2ofcf. It calls comp() |
| which actually compares the terms. Comparison starts with a quick |
==== ecmi05/xlisp_xldmemc.txt ====
/* xldmem - xlisp dynamic memory management routines */
#include "xlisp.h"
/* useful definitions */
#define ALLOCSIZE (sizeof(struct segment) + (anodes-1) * sizeof(NODE))
/* external variables */
extern NODE *oblist,*keylist;
extern NODE *xlstack;
extern NODE *xlenv,*xlnewenv;
extern long total;
extern int anodes,nnodes,nsegs,nfree,gccalls;
extern struct segment *segs;
extern NODE *fnodes;
/* external procedures */
extern char *malloc();
extern char *calloc();
/* newnode - allocate a new node */
==== ecmi05/xlisp_xlcontc.txt ====
/* xlcont - xlisp control built-in functions */
#include "xlisp.h"
/* external variables */
extern NODE *xlstack,*xlenv,*xlnewenv,*xlvalue;
extern NODE *s_unbound;
extern NODE *s_evalhook,*s_applyhook;
extern NODE *true;
/* external routines */
extern NODE *xlxeval();
/* forward declarations */
FORWARD NODE *let();
FORWARD NODE *prog();
FORWARD NODE *progx();
FORWARD NODE *doloop();
/* xcond - built-in function 'cond' */
NODE *xcond(args)
==== ecmi05/xlisp_xlbfunc.txt ====
/* xlbfun.c - xlisp basic builtin functions */
#include "xlisp.h"
/* external variables */
extern NODE *xlstack;
extern NODE *s_lambda,*s_macro;
extern NODE *s_comma,*s_comat;
extern NODE *s_unbound;
extern char gsprefix[];
extern int gsnumber;
/* forward declarations */
FORWARD NODE *bquote1();
FORWARD NODE *defun();
FORWARD NODE *makesymbol();
/* xeval - the builtin function 'eval' */
NODE *xeval(args)
NODE *args;
{
==== ecmi05/c_parms.txt ====
/************************************************************************
* *
* C Prolog parms.c *
* ======== ------- *
* *
* By Fernando Pereira, July 1982. *
* EdCAAD, Dept. of Architecture, University of Edinburgh. *
* *
* Based on the Prolog system written in IMP by Luis Damas for ICL 2900 *
* computers, with some contributions by Lawrence Byrd. Stricter types *
* and several extensions by Richard O'Keefe, also BACKWARDS support. *
* *
* Copyright (C) 1982 Fernando Pereira, Luis Damas and Lawrence Byrd. *
* Copyright (C) 1984 R.A.O'Keefe. *
* *
************************************************************************/
#include "pl.h"
/* Declaration and properties of work areas */
==== ecmi05/elogosdv.txt ====
%BEGIN
!
! CHANNEL USAGE
! ST01 - DUMPFILE AND DRIBBLE AT GOODBYE
! ST02 - ELGNAM
! SM04 - OWNFILE
! SM05 - LOGERRS
! SM06 - LOGOSTK
! SM07 - LOGOMON
! SM08 - BFILE
! SM09 - LOGMASTR
! SM10 - LOGOTEMP
! SM11 - LOGODRIB
! SM12 - NEW LOGON IN EDITMASTER
! ST13 - SHOWFILE?
!
!*****************************************
! GRAPHICS LINKAGE
!*****************************************
!
%EXTERNALINTEGERFNSPEC CONV (%INTEGER X)
==== ecmi05/xlisp_xlmathc.txt ====
/* xlmath - xlisp builtin arithmetic functions */
#include "xlisp.h"
/* external variables */
extern NODE *xlstack;
extern NODE *true;
/* forward declarations */
FORWARD NODE *unary();
FORWARD NODE *binary();
FORWARD NODE *predicate();
FORWARD NODE *compare();
/* xadd - builtin function for addition */
NODE *xadd(args)
NODE *args;
{
return (binary(args,'+'));
}
==== ecmi05/xlisp_readme.txt ====
XLISP
This PD file contains the C sourse of David Betz' XLISP v1.4.
It is free, copyable for non-profit use provided you preserve
the details of authorship.
The manual is terse, a reference manual. For a tutorial introduction,
use Winston's LISP, 2nd edition, for Addison-Wesley. Most of the LISP
described in that book is in XLISP.
XLISP v1.4 is essentially a small core set of Common LISP. The object
oriented features of XLISP are NOT part of Common LISP, however.
In the PD file, C soure files are called <something>C and the single
header file is called XLISPH. The manual is in MANUAL.
You will probably need to edit the C source a little. It expects the
header file to be called xlisp.h at present, and it expects LISP files
to be called <something>.lsp. In this PD file, the demo and startup files
are called <something>LSP.
==== ecmi05/lognam30.txt ====
0.9
'EMPTY' ''
'SPACE' ' '
'NL' '
'
'TAB' ' '
'TRUE' 'TRUE'
'FALSE' 'FALSE'
'QUOTE' ''''
'DOTS' ':'
'<'
'>'
'('
')'
'*'
'+'
','
'-'
'/'
'='
'['
==== ecmi05/xlisp_xlinitc.txt ====
/* xlinit.c - xlisp initialization module */
#include "xlisp.h"
/* external variables */
extern NODE *true;
extern NODE *s_quote,*s_function,*s_bquote,*s_comma,*s_comat;
extern NODE *s_lambda,*s_macro;
extern NODE *s_stdin,*s_stdout;
extern NODE *s_evalhook,*s_applyhook;
extern NODE *s_tracenable,*s_tlimit,*s_breakenable;
extern NODE *s_continue,*s_quit;
extern NODE *s_car,*s_cdr,*s_get,*s_svalue,*s_splist,*s_eql;
extern NODE *k_test,*k_tnot,*k_optional,*k_rest,*k_aux;
extern NODE *a_subr,*a_fsubr;
extern NODE *a_list,*a_sym,*a_int,*a_str,*a_obj,*a_fptr;
extern struct fdef ftab[];
/* xlinit - xlisp initialization routine */
xlinit()
{
==== ecmi05/xlisp_xlsubrc.txt ====
/* xlsubr - xlisp builtin function support routines */
#include "xlisp.h"
/* external variables */
extern NODE *k_test,*k_tnot,*s_eql;
extern NODE *xlstack;
/* xlsubr - define a builtin function */
xlsubr(sname,type,subr)
char *sname; int type; NODE *(*subr)();
{
NODE *sym;
/* enter the symbol */
sym = xlsenter(sname);
/* initialize the value */
sym->n_symvalue = newnode(type);
sym->n_symvalue->n_subr = subr;
}
==== ecmi05/h_arith.txt ====
/************************************************************************
* *
* C Prolog arith.h *
* ======== ------- *
* *
* By Fernando Pereira, July 1982. *
* EdCAAD, Dept. of Architecture, University of Edinburgh. *
* *
* Based on the Prolog system written in IMP by Luis Damas for ICL 2900 *
* computers, with some contributions by Lawrence Byrd. Stricter types *
* and several extensions by Richard O'Keefe, also BACKWARDS support. *
* *
* Copyright (C) 1982 Fernando Pereira, Luis Damas and Lawrence Byrd. *
* Copyright (C) 1984 F.Pereira, L.Damas, L.Byrd and R.A.O'Keefe. *
* *
************************************************************************/
/* Internal code for the Nullary operators: */
#define TIME 1
#define HEAP 2
==== ecmi05/lognam72.txt ====
0.9
'EMPTY' ''
'SPACE' ' '
'NL' '
'
'TAB' ' '
'TRUE' 'TRUE'
'FALSE' 'FALSE'
'QUOTE' ''''
'DOTS' ':'
'('
')'
','
'NIL'
'UNDEF'
'THEN'
'ELSE'
'END'
'DELETE'
'UNDO'
'UNDOS'
==== ecmi05/music.txt ====
THIS IS LOGO MUSIC PSEUDO FILE.
IT IS PERMITTED WRITE UNSHARED TO ALL, AND CONNECTION OF THIS
FILE REPERESENTS ALLOCATION OF MUSIC.
==== ecmi05/lognam90.txt ====
0.9
'EMPTY' ''
'SPACE' ' '
'NL' '
'
'TAB' ' '
'TRUE' 'TRUE'
'FALSE' 'FALSE'
'QUOTE' ''''
'DOTS' ':'
'('
')'
','
'NIL'
'UNDEF'
'THEN'
'ELSE'
'END'
'DELETE'
'UNDO'
'UNDOS'
==== ecmi05/lognam96.txt ====
0.9
'EMPTY' ''
'SPACE' ' '
'NL' '
'
'TAB' ' '
'TRUE' 'TRUE'
'FALSE' 'FALSE'
'QUOTE' ''''
'DOTS' ':'
'('
')'
','
'NIL'
'UNDEF'
'THEN'
'ELSE'
'END'
'DELETE'
'UNDO'
'UNDOS'
==== ecmi05/lognam97.txt ====
0.9
'EMPTY' ''
'SPACE' ' '
'NL' '
'
'TAB' ' '
'TRUE' 'TRUE'
'FALSE' 'FALSE'
'QUOTE' ''''
'DOTS' ':'
'('
')'
','
'NIL'
'UNDEF'
'THEN'
'ELSE'
'END'
'DELETE'
'UNDO'
'UNDOS'
==== ecmi05/lognam98.txt ====
0.9
'EMPTY' ''
'SPACE' ' '
'NL' '
'
'TAB' ' '
'TRUE' 'TRUE'
'FALSE' 'FALSE'
'QUOTE' ''''
'DOTS' ':'
'('
')'
','
'NIL'
'UNDEF'
'THEN'
'ELSE'
'END'
'DELETE'
'UNDO'
'UNDOS'
==== ecmi05/lognam99.txt ====
0.9
'EMPTY' ''
'SPACE' ' '
'NL' '
'
'TAB' ' '
'TRUE' 'TRUE'
'FALSE' 'FALSE'
'QUOTE' ''''
'DOTS' ':'
'('
')'
','
'NIL'
'UNDEF'
'THEN'
'ELSE'
'END'
'DELETE'
'UNDO'
'UNDOS'
==== ecmi05/c_space.txt ====
/************************************************************************
* *
* C Prolog space.c *
* ======== ------- *
* *
* By Fernando Pereira, July 1982. *
* EdCAAD, Dept. of Architecture, University of Edinburgh. *
* *
* Based on the Prolog system written in IMP by Luis Damas for ICL 2900 *
* computers, with some contributions by Lawrence Byrd. Stricter types *
* and several extensions by Richard O'Keefe, also BACKWARDS support. *
* *
* Copyright (C) 1982 Fernando Pereira, Luis Damas and Lawrence Byrd. *
* Copyright (C) 1984 F.Pereira, L.Damas, L.Byrd and R.A.O'Keefe. *
* This module is based on published work by Weinberg? Weisberg? *
* *
************************************************************************/
#include "pl.h"
#ifdef ERRCHECK
==== ecmi05/tdr.txt ====
PREMINARIES TO PARSING INFLECTIONAL LANGUAGES:
PREMINARIES TO PARSING INFLECTIONAL LANGUAGES:
SOME ANALYSES OF POLISH
SOME ANALYSES OF POLISH
Jan Bujnowski
==== ecmi05/ai2tr90.txt ====
%BEGIN
!
!
!*********************************************************************
!
! MORE COMMENTS AND SWITCH SYSFUN(232) - SYSFUN(280) TIDIED UP
!
!*********************************************************************
!
! CHANNEL USAGE
! ST02 - LOGNAM
! SM04 - LOGOFILE
! SM06 - LOGOSTK
! SM07 - LOGOMON
! SM08 - BFILE
! SM10 - JUNK FILE
!
!*****************************************
! GRAPHICS LINKAGE
!*****************************************
!
==== ecmi05/oldnames.txt ====
0.9
'EMPTY' ''
'SPACE' ' '
'NL' '
'
'TAB' ' '
'TRUE' 'TRUE'
'FALSE' 'FALSE'
'QUOTE' ''''
'DOTS' ':'
'<'
'>'
'('
')'
'*'
'+'
','
'-'
'/'
'='
'['
==== ecmi05/initfile.txt ====
ttyinit
setmode lower
==== ecmi05/sample.txt ====
% File: sample3
% Author: Peter Ross nicked it from GDR
% Updated: 3 June 1985
% ============ SAMPLE GRAMMAR ============
initial_category(trial,s).
strategy(trial,S) :-
prompt(_,'Strategy (td/bu): '),
read(S),
member(S,[td,bu]),
!.
strategy(trial,S) :-
write('Answer td. or bu. please'), nl,
strategy(trial,S).
policy(trial,P) :-
prompt(_,'Policy (bf/df): '),
read(P),
member(P,[bf,df]),
!.
policy(trial,P) :-
==== ecmi05/meccano.txt ====
THIS IS LOGO MECCANO PSEUDO FILE.
IT IS PERMITTED WRITE UNSHARED TO ALL, AND CONNECTION OF THIS
FILE REPRESENTS ALLOCATION OF MECCANO.
==== ecmi05/c_auxfn.txt ====
/************************************************************************
* *
* C Prolog auxfn.c *
* ======== ------- *
* *
* By Fernando Pereira, July 1982. *
* EdCAAD, Dept. of Architecture, University of Edinburgh. *
* *
* Based on the Prolog system written in IMP by Luis Damas for ICL 2900 *
* computers, with some contributions by Lawrence Byrd. Stricter types *
* and several extensions by Richard O'Keefe, also BACKWARDS support. *
* *
* Copyright (C) 1982 Fernando Pereira, Luis Damas and Lawrence Byrd. *
* Copyright (C) 1984 F.Pereira, L.Damas, L.Byrd and R.A.O'Keefe. *
* *
************************************************************************/
#include "pl.h"
#ifdef COUNTING
static Sint funcspace;
static int funccount, atomcount;
==== ecmi05/c_unify.txt ====
/************************************************************************
* *
* C Prolog unify.c *
* ======== ------- *
* *
* By Fernando Pereira, July 1982. *
* EdCAAD, Dept. of Architecture, University of Edinburgh. *
* *
* Based on the Prolog system written in IMP by Luis Damas for ICL 2900 *
* computers, with some contributions by Lawrence Byrd. Stricter types *
* and several extensions by Richard O'Keefe, also BACKWARDS support. *
* *
* Copyright (C) 1982 Fernando Pereira, Luis Damas and Lawrence Byrd. *
* Copyright (C) 1984 F.Pereira, L.Damas, L.Byrd and R.A.O'Keefe. *
* *
************************************************************************/
#include "pl.h"
/* Unify term ta (with global frame ga and local frame V)
with term tb (with global frame gb and local frame X)
==== ecmi05/logos.txt ====
%EXTERNALROUTINE LOGO(%STRING(255) GASH)
%EXTERNALROUTINESPEC RUN(%STRING(63) S)
RUN('ECMI05.AI2LOGOY')
%END
%ENDOFFILE
==== ecmi05/xlisp_xlfioc.txt ====
/* xlfio.c - xlisp file i/o */
#include "xlisp.h"
#include "ctype.h"
/* external variables */
extern NODE *s_stdin,*s_stdout;
extern NODE *xlstack;
extern int xlfsize;
extern char buf[];
/* external routines */
extern FILE *fopen();
/* forward declarations */
FORWARD NODE *printit();
FORWARD NODE *flatsize();
FORWARD NODE *explode();
FORWARD NODE *implode();
FORWARD NODE *openit();
FORWARD NODE *getfile();
==== ecmi05/xlisp_xllistc.txt ====
/* xllist - xlisp built-in list functions */
#include "xlisp.h"
#ifdef MEGAMAX
overlay "overflow"
#endif
/* external variables */
extern NODE *xlstack;
extern NODE *s_unbound;
extern NODE *true;
/* external routines */
extern int eq(),eql(),equal();
/* forward declarations */
FORWARD NODE *cxr();
FORWARD NODE *nth(),*assoc();
FORWARD NODE *subst(),*sublis(),*map();
FORWARD NODE *cequal();
==== ecmi05/xlisp_prologlsp.txt ====
;; The following is a tiny Prolog interpreter in MacLisp
;; written by Ken Kahn and modified for XLISP by David Betz.
;; It was inspired by other tiny Lisp-based Prologs of
;; Par Emanuelson and Martin Nilsson.
;; There are no side-effects anywhere in the implementation.
;; Though it is VERY slow of course.
(defun prolog (database &aux goal)
(do () ((not (progn (princ "Query?") (setq goal (read)))))
(prove (list (rename-variables goal '(0)))
'((bottom-of-environment))
database
1)))
;; prove - proves the conjunction of the list-of-goals
;; in the current environment
(defun prove (list-of-goals environment database level)
(cond ((null list-of-goals) ;; succeeded since there are no goals
(print-bindings environment environment)
==== ecmi05/c_dbase.txt ====
/************************************************************************
* *
* C Prolog dbase.c *
* ======== ------- *
* *
* By Fernando Pereira, July 1982. *
* EdCAAD, Dept. of Architecture, University of Edinburgh. *
* *
* Based on the Prolog system written in IMP by Luis Damas for ICL 2900 *
* computers, with some contributions by Lawrence Byrd. Stricter types *
* and several extensions by Richard O'Keefe, also BACKWARDS support. *
* *
* Copyright (C) 1982 Fernando Pereira, Luis Damas and Lawrence Byrd. *
* Copyright (C) 1984 F.Pereira, L.Damas, L.Byrd and R.A.O'Keefe. *
* *
************************************************************************/
#include "pl.h"
/* Variable table */
==== ecmi05/elogos30.txt ====
%BEGIN
!
! CHANNEL USAGE
! ST01 - DUMPFILE AND DRIBBLE AT GOODBYE
! ST02 - ELGNAM
! SM04 - OWNFILE
! SM05 - LOGERRS
! SM06 - LOGOSTK
! SM07 - LOGOMON
! SM08 - BFILE
! SM09 - LOGMASTR
! SM10 - LOGOTEMP
! SM11 - LOGODRIB
! SM12 - NEW LOGON IN EDITMASTER
! ST13 - SHOWFILE?
!
!*****************************************
! GRAPHICS LINKAGE
!*****************************************
!
%EXTERNALINTEGERFNSPEC CONV (%INTEGER X)
==== ecmi05/oldlogs.txt ====
%EXTERNALROUTINE OLDLOGO
%EXTERNALROUTINESPEC RUN(%STRING(63) S)
RUN('ECMI05.OLDLOGOY')
%END
%ENDOFFILE
==== ecmi05/xlisp_xlioc.txt ====
/* xlio - xlisp i/o routines */
#include "xlisp.h"
/* external variables */
extern int xlplevel;
extern int xlfsize;
extern NODE *xlstack;
extern NODE *s_stdin;
extern int xldebug;
extern int prompt;
/* xlgetc - get a character from a file or stream */
int xlgetc(fptr)
NODE *fptr;
{
NODE *lptr,*cptr;
FILE *fp;
int ch;
/* check for input from nil */
==== ecmi05/readme.txt ====
All the files are owned by ECMI05:
- the PD file C contains all the C source
- the PD file H contains all the header files
referred to in #include directives, apart from
'standard' ones like "stdio" which I assume are
somehow provided by the EMAS C support.
- the PD file PL conatins all the Prolog files
that need to be read at boot time in order to
create a runnable system. After reading in all these
files ONCE, the system state is saved, and it is
this saved state which the world at large should
use thereafter.
NOTE WELL: I have not made ANY modifications to the UNIX version source that
might tailor it to EMAS, since I know nothing of the EMAS C
compiler. In particular, you may have to change all the
#include ......
lines in the C source files.
If you want a (UNIX) cross reference listing, let me know. I am:
ECMI01@emas
peter@edai
Peter Ross, central area extension 2557
==== ecmi05/makelogs.txt ====
%EXTERNALROUTINE MAKELOGO
%SYSTEMINTEGERMAPSPEC COMREG(%INTEGER N)
%EXTERNALROUTINESPEC DEFINE(%STRING (63) S)
%EXTERNALROUTINESPEC PERMITFILE(%STRING (63) S)
%EXTERNALROUTINESPEC NEWSMFILE(%STRING (63) S)
%EXTERNALROUTINESPEC CHERISH(%STRING (63) S)
%EXTERNALINTEGERFNSPEC SMADDR(%INTEGER C,%INTEGERNAME L)
%INTEGER LEN,EUNAD,I
%SHORTINTEGERNAME A
%BYTEINTEGERARRAY EUNBYTE(1:7)
%STRING(6) %NAME EMASUSER
EUNAD=COMREG(16)
EUNBYTE(1)=6
%CYCLE I=2,1,7
EUNBYTE(I)=BYTEINTEGER(EUNAD+I-2)
%REPEAT
EMASUSER==STRING(ADDR(EUNBYTE(1)))
DEFINE('SM04,LOGOFILE');NEWSMFILE('LOGOFILE,4096')
A==SHORTINTEGER(SMADDR(4,LEN))
A=0
%PRINTTEXT ' LOGOFILE NOW EXISTS, LENGTH IS '
==== ecmi05/ai2log72.txt ====
%BEGIN
!
! CHANNEL USAGE
! ST02 - LOGNAM
! SM04 - LOGOFILE
! SM06 - LOGOSTK
! SM07 - LOGOMON
! SM08 - BFILE
! SM10 - JUNK FILE
!
!*****************************************
! GRAPHICS LINKAGE
!*****************************************
!
%EXTERNALINTEGERFNSPEC CONV (%INTEGER X)
%EXTERNALROUTINESPEC VECORPOINT (%INTEGER I,J,K,L)
%EXTERNALROUTINESPEC PAUSE
%EXTERNALROUTINESPEC LOAD42 (%STRING(63) FILE)
%EXTERNALROUTINESPEC SET42 (%INTEGER NM)
%EXTERNALROUTINESPEC CLEAR 42
%EXTERNALROUTINESPEC CH3 (%INTEGER CHAR)
==== ecmi05/xlisp_xlglobc.txt ====
/* xlglobals - xlisp global variables */
#include "xlisp.h"
/* symbols */
NODE *true = NIL;
NODE *s_quote = NIL, *s_function = NIL;
NODE *s_bquote = NIL, *s_comma = NIL, *s_comat = NIL;
NODE *s_evalhook = NIL, *s_applyhook = NIL;
NODE *s_lambda = NIL, *s_macro = NIL;
NODE *s_stdin = NIL, *s_stdout = NIL;
NODE *s_tracenable = NIL, *s_tlimit = NIL, *s_breakenable = NIL;
NODE *s_continue = NIL, *s_quit = NIL;
NODE *s_car = NIL, *s_cdr = NIL;
NODE *s_get = NIL, *s_svalue = NIL, *s_splist = NIL;
NODE *s_eql = NIL, *k_test = NIL, *k_tnot = NIL;
NODE *k_optional = NIL, *k_rest = NIL, *k_aux = NIL;
NODE *a_subr = NIL, *a_fsubr = NIL;
NODE *a_list = NIL, *a_sym = NIL, *a_int = NIL;
NODE *a_str = NIL, *a_obj = NIL, *a_fptr = NIL;
NODE *oblist = NIL, *keylist = NIL, *s_unbound = NIL;
==== ecmi05/ai2log96.txt ====
%BEGIN
!
!
!*********************************************************************
!
! MORE COMMENTS AND SWITCH SYSFUN(232) - SYSFUN(280) TIDIED UP
!
!*********************************************************************
!
! CHANNEL USAGE
! ST01 - DUMPFILE
! ST02 - LOGNAM
! ST03 - LOGOTEMP
! SM04 - LOGOFILE
! SM06 - LOGOSTK
! SM07 - LOGOMON
! SM08 - BFILE
! SM10 - JUNK FILE
!
!*****************************************
! GRAPHICS LINKAGE
==== ecmi05/ai2log97.txt ====
! UPDATED 23/10/80
%BEGIN
!
!
!*********************************************************************
!
! MORE COMMENTS AND SWITCH SYSFUN(232) - SYSFUN(280) TIDIED UP
!
!*********************************************************************
!
! CHANNEL USAGE
! ST01 - DUMPFILE
! ST02 - LOGNAM
! ST03 - LOGOTEMP
! SM04 - LOGOFILE
! SM06 - LOGOSTK
! SM07 - LOGOMON
! SM08 - BFILE
! SM10 - JUNK FILE
!
!*****************************************
==== ecmi05/ai2log98.txt ====
! UPDATED 10/11/80 - ALL FILES MADE TEMPORARY
%BEGIN
!
!
!*********************************************************************
!
! MORE COMMENTS AND SWITCH SYSFUN(232) - SYSFUN(280) TIDIED UP
!
!*********************************************************************
!
! CHANNEL USAGE
! ST01 - T#DUMP
! ST02 - LOGNAM
! ST03 - T#TEMP
! SM04 - LOGOFILE
! SM06 - T#LOGOSTK
! SM07 - LOGOMON
! SM08 - BFILE
! SM10 - JUNK FILE
!
!*****************************************
==== ecmi05/ai2log99.txt ====
! UPDATED 19/12/80
%BEGIN
!
!
!*********************************************************************
!
! MORE COMMENTS AND SWITCH SYSFUN(232) - SYSFUN(280) TIDIED UP
!
!*********************************************************************
!
! CHANNEL USAGE
! ST01 - T#DUMP
! ST02 - LOGNAM
! ST03 - T#TEMP
! SM04 - LOGOFILE
! SM06 - T#LOGOSTK
! SM07 - LOGOMON
! SM08 - BFILE
! SM10 - JUNK FILE
!
!*****************************************
==== ecmi05/c_arith.txt ====
/************************************************************************
* *
* C Prolog arith.c *
* ======== ------- *
* *
* By Fernando Pereira, July 1982. *
* EdCAAD, Dept. of Architecture, University of Edinburgh. *
* *
* Based on the Prolog system written in IMP by Luis Damas for ICL 2900 *
* computers, with some contributions by Lawrence Byrd. Stricter types *
* and several extensions by Richard O'Keefe, also BACKWARDS support. *
* *
* Copyright (C) 1982 Fernando Pereira, Luis Damas and Lawrence Byrd. *
* Copyright (C) 1984 F.Pereira, L.Damas, L.Byrd and R.A.O'Keefe. *
* *
************************************************************************/
/* Evaluate arithmetic expressions */
#include "pl.h"
#include "arith.h"
==== ecmi05/plottera.txt ====
THIS IS LOGO PLOTTERA PSEUDO FILE.
IT IS PERMITTED WRITE UNSHARED TO ALL, AND CONNECTION OF THIS
FILE REPRESENTS ALLOCATION OF PLOTTERA.
==== ecmi05/plotterb.txt ====
THIS IS LOGO PLOTTERB PSEUDO FILE.
IT IS PERMITTED WRITE UNSHARED TO ALL, AND CONNECTION OF THIS
FILE REPRESENTS ALLOCATION OF PLOTTERB.
==== ecmi05/c_sysbits.txt ====
/************************************************************************
* *
* C Prolog sysbits.c *
* ======== --------- *
* *
* By Fernando Pereira, July 1982. *
* EdCAAD, Dept. of Architecture, University of Edinburgh. *
* *
* Based on the Prolog system written in IMP by Luis Damas for ICL 2900 *
* computers, with some contributions by Lawrence Byrd. Stricter types *
* and several extensions by Richard O'Keefe, also BACKWARDS support. *
* *
* Copyright (C) 1982 Fernando Pereira, Luis Damas and Lawrence Byrd. *
* Copyright (C) 1984 F.Pereira, L.Damas, L.Byrd and R.A.O'Keefe. *
* *
************************************************************************/
/*----------------------------------------------------------------------+
| |
| This is the UNIX/PaNiX/Xenix/VMS interface module. Stdio |
| routines are called all over the place, and there is an unavoidable |
==== ecmi05/devtr96.txt ====
%BEGIN
!
!
!*********************************************************************
!
! MORE COMMENTS AND SWITCH SYSFUN(232) - SYSFUN(280) TIDIED UP
!
!*********************************************************************
!
! CHANNEL USAGE
! ST01 - DUMPFILE
! ST02 - LOGNAM
! ST03 - LOGOTEMP
! SM04 - LOGOFILE
! SM06 - LOGOSTK
! SM07 - LOGOMON
! SM08 - BFILE
! SM10 - JUNK FILE
!
!*****************************************
! GRAPHICS LINKAGE
==== ecmi05/xlisp_xlevalc.txt ====
/* xleval - xlisp evaluator */
#include "xlisp.h"
/* external variables */
extern NODE *xlstack,*xlenv,*xlnewenv;
extern NODE *s_lambda,*s_macro;
extern NODE *k_optional,*k_rest,*k_aux;
extern NODE *s_evalhook,*s_applyhook;
extern NODE *s_unbound;
extern NODE *s_stdout;
/* forward declarations */
FORWARD NODE *xlxeval();
FORWARD NODE *evalhook();
FORWARD NODE *evform();
FORWARD NODE *evsym();
FORWARD NODE *evfun();
/* xleval - evaluate an xlisp expression (checking for *evalhook*) */
NODE *xleval(expr)
==== ecmi05/xlisp_xlsymc.txt ====
/* xlsym - symbol handling routines */
#include "xlisp.h"
/* external variables */
extern NODE *oblist,*keylist;
extern NODE *s_unbound;
extern NODE *xlstack;
/* forward declarations */
FORWARD NODE *symenter();
FORWARD NODE *xlmakesym();
FORWARD NODE *findprop();
/* xlenter - enter a symbol into the oblist or keylist */
NODE *xlenter(name,type)
char *name;
{
return (symenter(name,type,(*name == ':' ? keylist : oblist)));
}
==== ecmi05/devtr98.txt ====
! UPDATED 10/11/80 - ALL FILES MADE TEMPORARY
%BEGIN
!
!
!*********************************************************************
!
! MORE COMMENTS AND SWITCH SYSFUN(232) - SYSFUN(280) TIDIED UP
!
!*********************************************************************
!
! CHANNEL USAGE
! ST01 - T#DUMP
! ST02 - LOGNAM
! ST03 - T#TEMP
! SM04 - LOGOFILE
! SM06 - T#LOGOSTK
! SM07 - LOGOMON
! SM08 - BFILE
! SM10 - JUNK FILE
!
!*****************************************
==== ecmi05/devtr99.txt ====
! UPDATED 2/12/80 - BUG IN ABBREV
%BEGIN
!
!
!*********************************************************************
!
! MORE COMMENTS AND SWITCH SYSFUN(232) - SYSFUN(280) TIDIED UP
!
!*********************************************************************
!
! CHANNEL USAGE
! ST01 - T#DUMP
! ST02 - LOGNAM
! ST03 - T#TEMP
! SM04 - LOGOFILE
! SM06 - T#LOGOSTK
! SM07 - LOGOMON
! SM08 - BFILE
! SM10 - JUNK FILE
!
!*****************************************
==== ecmi05/xlisp_tracelsp.txt ====
(setq *tracelist* nil)
(defun evalhookfcn (expr &aux val)
(if (and (consp expr) (member (car expr) *tracelist*))
(progn (princ ">>> ") (print expr)
(setq val (evalhook expr evalhookfcn nil))
(princ "<<< ") (print val))
(evalhook expr evalhookfcn nil)))
(defun trace (fun)
(if (not (member fun *tracelist*))
(progn (setq *tracelist* (cons fun *tracelist*))
(setq *evalhook* evalhookfcn)))
*tracelist*)
(defun untrace (fun)
(if (null (setq *tracelist* (delete fun *tracelist*)))
(setq *evalhook* nil))
*tracelist*)
==== ecmi05/ai2log910.txt ====
! UPDATED 06/02/81 - DOLOGO REMOVED
%BEGIN
!
!
!*********************************************************************
!
! MORE COMMENTS AND SWITCH SYSFUN(232) - SYSFUN(280) TIDIED UP
!
!*********************************************************************
!
! CHANNEL USAGE
! ST01 - T#DUMP
! ST02 - LOGNAM
! ST03 - T#TEMP
! SM04 - LOGOFILE
! SM06 - T#LOGOSTK
! SM07 - LOGOMON
! SM08 - BFILE
! SM10 - JUNK FILE
!
!*****************************************
==== ecmi05/xlisp_xljumpc.txt ====
/* xljump - execution context routines */
#include "xlisp.h"
/* external variables */
extern CONTEXT *xlcontext;
extern NODE *xlvalue;
extern NODE *xlstack,*xlenv,*xlnewenv;
extern int xltrace,xldebug;
/* xlbegin - beginning of an execution context */
xlbegin(cptr,flags,expr)
CONTEXT *cptr; int flags; NODE *expr;
{
cptr->c_flags = flags;
cptr->c_expr = expr;
cptr->c_xlstack = xlstack;
cptr->c_xlenv = xlenv;
cptr->c_xlnewenv = xlnewenv;
cptr->c_xltrace = xltrace;
cptr->c_xlcontext = xlcontext;
==== ecmi05/xlisp_makefile.txt ====
SRC1= xlobj.c xllist.c xlcont.c xlbfun.c
SRC2= xldmem.c xleval.c xlfio.c xlftab.c xlglob.c xlio.c xlisp.c xljump.c \
xlmath.c xlprin.c xlread.c xlinit.c
SRC3= xlsetf.c xlstr.c xlsubr.c xlsym.c xlsys.c xlbind.c xldbug.c
SRCS= $(SRC1) $(SRC2) $(SRC3) xlisp.h
OBJS= xlbfun.o xlbind.o xlcont.o xldbug.o xldmem.o xleval.o xlfio.o \
xlftab.o xlglob.o xlinit.o xlio.o xlisp.o xljump.o xllist.o xlmath.o \
xlobj.o xlprin.o xlread.o xlsetf.o xlstr.o xlsubr.o xlsym.o xlsys.o
MISC= Makefile fact.lsp init.lsp object.lsp prolog.lsp trace.lsp \
xlstub.c.NOTUSED
CFLAGS= -O
xlisp: $(OBJS)
cc -o xlisp $(CFLAGS) $(OBJS)
$(OBJS): xlisp.h
rcs: $(SRCS)
rcs -l $?
==== ecmi05/tape.txt ====
THIS IS LOGO TAPE PSEUDO FILE.
IT IS PERMITTED WRITE UNSHARED TO ALL, AND CONNECTION OF THIS
FILE REPRESENTS ALLOCATION OF TAPE.
==== ecmi05/xlisp_objectlsp.txt ====
; This is an example using the object-oriented programming support in
; XLISP. The example involves defining a class of objects representing
; dictionaries. Each instance of this class will be a dictionary in
; which names and values can be stored. There will also be a facility
; for finding the values associated with names after they have been
; stored.
; Create the 'Dictionary' class.
(setq Dictionary (Class 'new))
; Establish the instance variables for the new class.
; The variable 'entries' will point to an association list representing the
; entries in the dictionary instance.
(Dictionary 'ivars '(entries))
; Setup the method for the 'isnew' initialization message.
; This message will be send whenever a new instance of the 'Dictionary'
; class is created. Its purpose is to allow the new instance to be
; initialized before any other messages are sent to it. It sets the value
==== ecmi05/xlisp_xlsysc.txt ====
/* xlsys.c - xlisp builtin system functions */
#include "xlisp.h"
/* external variables */
extern NODE *xlstack;
extern int anodes;
/* external symbols */
extern NODE *a_subr,*a_fsubr;
extern NODE *a_list,*a_sym,*a_int,*a_str,*a_obj,*a_fptr;
extern NODE *true;
/* xload - direct input from a file */
NODE *xload(args)
NODE *args;
{
NODE *oldstk,fname,*val;
int vflag,pflag;
/* create a new stack frame */
==== ecmi05/h_evalp.txt ====
/************************************************************************
* *
* C Prolog evalp.h *
* ======== ------- *
* *
* By Fernando Pereira, July 1982. *
* EdCAAD, Dept. of Architecture, University of Edinburgh. *
* *
* Based on the Prolog system written in IMP by Luis Damas for ICL 2900 *
* computers, with some contributions by Lawrence Byrd. Stricter types *
* and several extensions by Richard O'Keefe, also BACKWARDS support. *
* *
* Copyright (C) 1982 Fernando Pereira, Luis Damas and Lawrence Byrd. *
* Copyright (C) 1984 F.Pereira, L.Damas, L.Byrd and R.A.O'Keefe. *
* *
************************************************************************/
/*----------------------------------------------------------------------+
| |
| These are the internal codes for the evaluable predicates. They |
| connect the definitions in the bootstrap file(s) to the big case |
==== ecmi05/z5dr.txt ====
1. INTRODUCTION.
There seem to be two main concerns and goals behind the work on natural
language using computers, converging at many points. One goal, that of more
natural communication with computers, has its roots in the concern for application
of the fruits of computational research, amplified by the recent race to build a new
generation of computers, in order to make them even more user-oriented and
more useful for our purposes. The other goal is theoretical investigation of human
language, and some researchers hope that the computer might be a very useful
tool in this task; this hope is expressed by Winograd (1983: 13) thus
'The computer shares with the human mind the abiblity to manipulate
symbols and carry out complex processes that include making decisions on
the basis of stored knowledge. Unlike the human mind, the computer
==== ecmi05/xlisp_xlispc.txt ====
/* xlisp - an experimental version of lisp that supports object-oriented
programming */
#include "xlisp.h"
/* define the banner line string */
#define BANNER "XLISP version 1.4 - 14-FEB-1985, by David Betz"
/* external variables */
extern NODE *s_stdin,*s_stdout;
extern NODE *s_evalhook,*s_applyhook;
extern NODE *true;
/* main - the main routine */
main()
/*
main(argc,argv)
int argc; char *argv[];
*/
{
NODE expr;
==== ecmi05/xlisp_xlisph.txt ====
/* xlisp - a small subset of lisp */
/* system specific definitions */
#define UNIX
#ifdef AZTEC
#include "stdio.h"
#include "setjmp.h"
#else
#include <stdio.h>
#include <setjmp.h>
#include <ctype.h>
#endif
/* NNODES number of nodes to allocate in each request */
/* TDEPTH trace stack depth */
/* FORWARD type of a forward declaration (usually "") */
/* LOCAL type of a local function (usually "static") */
/* for the Computer Innovations compiler */
#ifdef CI
==== ecmi05/c_rewrite.txt ====
/************************************************************************
* *
* C Prolog rewrite.c *
* ======== --------- *
* *
* By Fernando Pereira, July 1982. *
* EdCAAD, Dept. of Architecture, University of Edinburgh. *
* *
* Based on the Prolog system written in IMP by Luis Damas for ICL 2900 *
* computers, with some contributions by Lawrence Byrd. Stricter types *
* and several extensions by Richard O'Keefe, also BACKWARDS support. *
* *
* Copyright (C) 1982 Fernando Pereira, Luis Damas and Lawrence Byrd. *
* Copyright (C) 1984 F.Pereira, L.Damas, L.Byrd and R.A.O'Keefe. *
* *
************************************************************************/
#include "pl.h"
#define PREFIX 0
#define INFIX 1
==== ecmi05/ai2logs.txt ====
%EXTERNALROUTINE AI2LOGO
%EXTERNALROUTINESPEC RUN(%STRING(63) S)
RUN('ECMI05.AI2LOGOY')
%END
%ENDOFFILE
==== ecmi05/xlisp_manual.txt ====
XLISP: An Experimental Object Oriented Language
Version 1.4
January 1, 1985
by
David Betz
114 Davenport Ave.
Manchester, NH 03103
(603) 625-4691 (home)
==== ecmi05/xlisp_xlobjc.txt ====
/* xlobj - xlisp object functions */
#include "xlisp.h"
#ifdef MEGAMAX
overlay "overflow"
#endif
/* external variables */
extern NODE *xlstack;
extern NODE *xlenv,*xlnewenv;
extern NODE *s_stdout;
extern NODE *self;
extern NODE *class;
extern NODE *object;
extern NODE *new;
extern NODE *isnew;
extern NODE *msgcls;
extern NODE *msgclass;
extern int varcnt;
==== ecmi05/xlisp_xlreadc.txt ====
/* xlread - xlisp expression input routine */
#include "xlisp.h"
#include "ctype.h"
/* external variables */
extern NODE *s_stdout,*true;
extern NODE *s_quote,*s_function,*s_bquote,*s_comma,*s_comat;
extern NODE *xlstack;
extern int xlplevel;
/* external routines */
extern FILE *fopen();
/* forward declarations */
FORWARD NODE *plist();
FORWARD NODE *pstring();
FORWARD NODE *pquote();
FORWARD NODE *pname();
/* xlload - load a file of xlisp expressions */
==== ecmi05/readmetoo.txt ====
This directory contains
the C source code for C-Prolog (*.c and *.h files)
a makefile
a startup script used by the makefile
a directory bmark
containing some benchmark files
the main Edinburgh benchmark files are NOT here
a directory pl
containing the parts of the Prolog system
which are defined in Prolog
some other junk
To make a new Prolog system,
check the makefile to see that the FinalVn is right.
if the C part of the system has changed,
"make prolog"
if the Prolog part of the system has changed,
or if the format of a saved state has changed,
"make startup"
==== ecmi05/xlisp_xlprinc.txt ====
/* xlprint - xlisp print routine */
#include "xlisp.h"
/* external variables */
extern NODE *xlstack;
extern char buf[];
/* xlprint - print an xlisp value */
xlprint(fptr,vptr,flag)
NODE *fptr,*vptr; int flag;
{
NODE *nptr,*next;
/* print nil */
if (vptr == NIL) {
putstr(fptr,"nil");
return;
}
/* check value type */
==== ecmi05/turtle.txt ====
THIS IS LOGO TURTLE PSEUDO FILE.
IT IS PERMITTED WRITE UNSHARED TO ALL, AND CONNECTION OF THIS
FILE REPRESENTS ALLOCATION OF TURTLE.
==== ecmi05/initlogs.txt ====
%EXTERNALROUTINE INITLOGO
%SYSTEMINTEGERMAPSPEC COMREG(%INTEGER N)
%EXTERNALROUTINESPEC DEFINE(%STRING (63) S)
%EXTERNALROUTINESPEC PERMITFILE(%STRING (63) S)
%EXTERNALROUTINESPEC NEWSMFILE(%STRING (63) S)
%EXTERNALROUTINESPEC CHERISH(%STRING (63) S)
%EXTERNALINTEGERFNSPEC SMADDR(%INTEGER C,%INTEGERNAME L)
%INTEGER LEN,EUNAD,I
%BYTEINTEGERNAME A
%BYTEINTEGERARRAY EUNBYTE(1:7)
%STRING(6) %NAME EMASUSER
EUNAD=COMREG(16)
EUNBYTE(1)=6
%CYCLE I=2,1,7
EUNBYTE(I)=BYTEINTEGER(EUNAD+I-2)
%REPEAT
EMASUSER==STRING(ADDR(EUNBYTE(1)))
DEFINE('SM04,LOGODIR');NEWSMFILE('LOGODIR,4096')
A==BYTEINTEGER(SMADDR(4,LEN))
A=0
%PRINTTEXT ' LOGODIR NOW EXISTS, LENGTH IS '
==== ecmi05/lingos30.txt ====
%BEGIN
!
! CHANNEL USAGE
! ST01 - DUMPFILE AND DRIBBLE AT GOODBYE
! ST02 - ELGNAM
! SM04 - OWNFILE
! SM05 - LOGERRS
! SM06 - LOGOSTK
! SM07 - LOGOMON
! SM08 - BFILE
! SM09 - LOGMASTR
! SM10 - LOGOTEMP
! SM11 - LOGODRIB
! SM12 - NEW LOGON IN EDITMASTER
! ST13 - SHOWFILE?
!
!*****************************************
! GRAPHICS LINKAGE
!*****************************************
!
%EXTERNALINTEGERFNSPEC CONV (%INTEGER X)
==== ecmi05/xlisp_xlbindc.txt ====
/* xlbind - xlisp symbol binding routines */
#include "xlisp.h"
/* external variables */
extern NODE *xlenv,*xlnewenv;
/* xlsbind - bind a value to a symbol sequentially */
xlsbind(sym,val)
NODE *sym,*val;
{
NODE *ptr;
/* create a new environment list entry */
ptr = newnode(LIST);
rplacd(ptr,xlenv);
xlenv = ptr;
/* create a new variable binding */
rplaca(ptr,newnode(LIST));
rplaca(car(ptr),sym);
==== ecmi05/books.txt ====
book(et,sfipubs).
book(son_of_et,sfipubs).
book(i_was_a_teenage_robot,sfipubs).
book(et_rides_again,sfipubs).
book(biggles_and_wendy,virago).
book(freda_the_fire_engine,virago).
book(i_claudius,penguin).
book(history_of_the_western_world,penguin).
book(dictionary_of_computing,penguin).
book(ttl_cookbook,sams).
book(cmos_cookbook,sams).
stocks(james_thin,sfipubs).
stocks(james_thin,virago).
stocks(james_thin,penguin).
stocks(menzies,sfipubs).
stocks(better_books,penguin).
stocks(better_books,virago).
stocks(bauermeister,penguin).
stocks(bauermeister,sams).
stocks(edinbooks,sfipubs).
==== ecmi05/xlisp_xldbugc.txt ====
/* xldebug - xlisp debugging support */
#include "xlisp.h"
/* external variables */
extern long total;
extern int xldebug;
extern int xltrace;
extern NODE *s_unbound;
extern NODE *s_stdin,*s_stdout;
extern NODE *s_tracenable,*s_tlimit,*s_breakenable;
extern NODE *s_continue,*s_quit;
extern NODE *xlstack;
extern NODE *true;
extern NODE **trace_stack;
/* external routines */
extern char *malloc();
/* forward declarations */
FORWARD NODE *stacktop();
==== ecmi05/xlisp_xlftabc.txt ====
/* xlftab.c - xlisp function table */
#include "xlisp.h"
/* external functions */
extern NODE
*xeval(),*xapply(),*xfuncall(),*xquote(),*xbquote(),
*xset(),*xsetq(),*xsetf(),*xdefun(),*xdefmacro(),
*xgensym(),*xmakesymbol(),*xintern(),
*xsymname(),*xsymvalue(),*xsymplist(),*xget(),*xremprop(),
*xcar(),*xcaar(),*xcadr(),*xcdr(),*xcdar(),*xcddr(),
*xcons(),*xlist(),*xappend(),*xreverse(),*xlast(),*xnth(),*xnthcdr(),
*xmember(),*xassoc(),*xsubst(),*xsublis(),*xremove(),*xlength(),
*xmapc(),*xmapcar(),*xmapl(),*xmaplist(),
*xrplca(),*xrplcd(),*xnconc(),*xdelete(),
*xatom(),*xsymbolp(),*xnumberp(),*xboundp(),*xnull(),*xlistp(),*xconsp(),
*xeq(),*xeql(),*xequal(),
*xcond(),*xand(),*xor(),*xlet(),*xletstar(),*xif(),
*xprog(),*xprogstar(),*xprog1(),*xprog2(),*xprogn(),*xgo(),*xreturn(),
*xcatch(),*xthrow(),
*xerror(),*xcerror(),*xbreak(),*xerrset(),*xbaktrace(),*xevalhook(),
==== ecmi05/oldlogos.txt ====
%BEGIN
%EXTERNALROUTINESPEC DISCONNECT(%STRING(63) S)
%EXTERNALROUTINESPEC CLOSESM(%INTEGER CH)
%SYSTEMINTEGERMAPSPEC COMREG(%INTEGER N)
%SYSTEMROUTINESPEC FINFO(%STRING(15) S,%INTEGER LEV,%C
%RECORDNAME R, %INTEGERNAME FLAG)
%EXTERNALSTRINGFNSPEC DATE
%EXTERNALROUTINESPEC LIST(%STRING(63) S)
%EXTERNALSTRINGFNSPEC TIME
%EXTERNALLONGREALFNSPEC CPUTIME
%EXTERNALINTEGERFNSPEC SMADDR(%INTEGER CHANN,%INTEGERNAME LENGTH)
%EXTERNALROUTINESPEC DEFINE(%STRING (65) S)
%EXTERNALROUTINESPEC PERMIT FILE(%STRING (65) S)
%EXTERNALROUTINESPEC NEWSMFILE(%STRING (63) S)
%EXTERNALROUTINESPEC CHERISH(%STRING (63) S)
%EXTERNALROUTINESPEC PROMPT(%STRING(15) M)
%EXTERNALROUTINESPEC DESTROY(%STRING(65) S)
%EXTERNALROUTINESPEC CLOSESTREAM(%INTEGER CH)
%EXTERNALREALFNSPEC RANDOM (%INTEGERNAME I,%INTEGER J)
%EXTERNALINTEGERFNSPEC TESTINT(%INTEGER C,%STRING(15) INT)
==== ecmi05/lognam910.txt ====
0.9
'EMPTY' ''
'SPACE' ' '
'NL' '
'
'TAB' ' '
'TRUE' 'TRUE'
'FALSE' 'FALSE'
'QUOTE' ''''
'DOTS' ':'
'('
')'
','
'NIL'
'UNDEF'
'THEN'
'ELSE'
'END'
'DELETE'
'UNDO'
'UNDOS'
==== ecmi05/c_main.txt ====
/************************************************************************
* *
* C Prolog main.c *
* ======== ------ *
* *
* By Fernando Pereira, July 1982. *
* EdCAAD, Dept. of Architecture, University of Edinburgh. *
* *
* Based on the Prolog system written in IMP by Luis Damas for ICL 2900 *
* computers, with some contributions by Lawrence Byrd. Stricter types *
* and several extensions by Richard O'Keefe, also BACKWARDS support. *
* *
* Copyright (C) 1982 Fernando Pereira, Luis Damas and Lawrence Byrd. *
* Copyright (C) 1984 F.Pereira, L.Damas, L.Byrd and R.A.O'Keefe. *
* *
************************************************************************/
#include "pl.h"
#include "evalp.h"
#include "arith.h"
#include <setjmp.h>
==== ecmi05/newlogs.txt ====
%EXTERNALROUTINE NEWLOGO(%STRING(0) S)
%EXTERNALROUTINESPEC RUN(%STRING(63) S)
RUN('ECMI05.NEWLOGOY')
%END
%ENDOFFILE
==== ecmi05/devtr910.txt ====
! UPDATED 06/02/81 - DOLOGO REMOVED
%BEGIN
!
!
!*********************************************************************
!
! MORE COMMENTS AND SWITCH SYSFUN(232) - SYSFUN(280) TIDIED UP
!
!*********************************************************************
!
! CHANNEL USAGE
! ST01 - T#DUMP
! ST02 - LOGNAM
! ST03 - T#TEMP
! SM04 - LOGOFILE
! SM06 - T#LOGOSTK
! SM07 - LOGOMON
! SM08 - BFILE
! SM10 - JUNK FILE
!
!*****************************************
==== ecmi05/prelogos.txt ====
%EXTERNALROUTINE PRELOGO
%SYSTEMINTEGERMAPSPEC COMREG(%INTEGER N)
%EXTERNALROUTINESPEC DEFINE(%STRING (63) S)
%EXTERNALROUTINESPEC PERMITFILE(%STRING(63) S)
%EXTERNALROUTINESPEC NEWSMFILE(%STRING (63) S)
%EXTERNALROUTINESPEC CHERISH(%STRING (63) S)
%EXTERNALINTEGERFNSPEC SMADDR(%INTEGER C,%INTEGERNAME L)
%INTEGER LEN,EUNAD,I
%BYTEINTEGERNAME A
%BYTEINTEGERARRAY EUNBYTE(1:7)
%STRING(6) %NAME EMASUSER
EUNAD=COMREG(16)
EUNBYTE(1)=6
%CYCLE I=2,1,7
EUNBYTE(I)=BYTEINTEGER(EUNAD+I-2)
%REPEAT
EMASUSER==STRING(ADDR(EUNBYTE(1)))
DEFINE('SM04,LOGOINIT');NEWSMFILE('LOGOINIT,4096')
A==BYTEINTEGER(SMADDR(4,LEN))
A=0
%PRINTTEXT ' LOGOINIT NOW EXISTS, LENGTH IS '
==== ecmi05/xlisp_xlstrc.txt ====
/* xlstr - xlisp string builtin functions */
#include "xlisp.h"
/* external variables */
extern NODE *xlstack;
/* external procedures */
extern char *strcat();
/* xstrlen - length of a string */
NODE *xstrlen(args)
NODE *args;
{
NODE *val;
int total;
/* initialize */
total = 0;
/* loop over args and total */
==== ecmi05/parserdoc.txt ====
% File: parser.doc
% Author: Peter Ross
% Updated: 7 June 1985
This describes how to use the (very) simple chart parser written in Prolog
in the file 'parser'.
The program expects data in the form of Prolog clauses:
[1] rule(Tag, Category, ExpansionList).
The 'Tag' argument is just anbitrary Prolog term used to group
together a set of rule/3 and lexical/3 clauses. The parser needs
to be told this tag in order to know which set of these clauses
to use as data. Since it is arbitrary, you could use a compound
term to allow you to selectively include rules, at no extra cost.
The 'Category' argument identifies a syntactic category, e.g.
noun or sentence.
The 'ExpansionList' is a list giving one possible expansion of that
category into sub-categories.
[2] lexical(Tag, Word, CategoryList).
==== ecmi05/xlisp_initlsp.txt ====
; get some more memory
(expand 1)
; some fake definitions for Common Lisp pseudo compatiblity
(setq symbol-function symbol-value)
(setq fboundp boundp)
(setq first car)
(setq second cadr)
(setq rest cdr)
; some more cxr functions
(defun caddr (x) (car (cddr x)))
(defun cadddr (x) (cadr (cddr x)))
; (when test code...) - execute code when test is true
(defmacro when (test &rest code)
`(cond (,test ,@code)))
; (unless test code...) - execute code unless test is true
(defmacro unless (test &rest code)
`(cond ((not ,test) ,@code)))
==== ecsc01/utilss_compars.txt ====
%constinteger max base commands=12
%conststring(255)%array base commands(1:max base commands)=%C
"alias","remove","monitor","stop","quit","launch","broadcast","tell",
"autoattack","surrender","dump","resources"
!"B","C","D","E","F","G","H","I","J","K","AL","LI","RE","ST"
%recordformat com form (%string(80)comstr,%byteinteger base,type)
%constinteger max possible commands=20
%ownrecord(com form)%array commands(1:max possible commands)
%owninteger max commands=0
%routine sort(%record(com form)%arrayname r,%integer lo,hi)
!%routine sort(%stringarrayname r,%integer lo,hi)
%integer i,j,k,l,n
%record(com form)x
!%string(255)x
l=lo-1
n=hi
!%while n<hi-l %cycle
! n=2*n
!%repeat
! <=> 1<<((32- shz{shift while not zero}(hi-l-1))&31)
==== ecsc01/utilss_findprivs.txt ====
%externalroutine findpriv(%string(255)u)
%string(6)user
%integer flag,fsys,priv,i
%externalintegerfnspec dfsys(%string(6)user,%integername fsys)
%externalintegerfnspec dsfi (%string(6)user,%integer fsys,type,set,adr)
user<-u
%if length(user)#6 %then flag=8 %and ->out
fsys=-1
flag=dfsys(user,fsys)
->out %unless flag=0
flag=dsfi(user,fsys,38,0,addr(priv))
->out %unless flag=0
write(priv,1)
newline
%for i=0,1,32 %cycle
%if (priv>>i)&1=1 %then write(i,3)
%repeat
out:
%if flag#0 %start
printstring("Flag=")
write(flag,1)
==== ecsc01/utilss_retrieves.txt ====
%externalroutine retrieve(%string(255)s)
%externalintegerfnspec dretrieve(%string(6)t,%integer c)
%systemroutinespec cast out (%string(255)%name s)
%systemintegerfnspec pstoi(%string(255)s)
%string(255)p1,p2
%string(6)t
%integer c,flag
cast out (s)
%unless s->p1.(",").p2 %start
printstring("Bad param")
newline
%return
%finish
t<-p1
c=pstoi(p2)
flag=dretrieve(t,c)
printstring("RETRIEVE ".p1.",".p2." GIVES:")
write(flag,1)
%end
%endoffile
==== ecsc01/utilss_gsqs.txt ====
%externalroutine gsq(%string(255)s)
%externalroutinespec tcpusers(%string(255)s)
tcpusers("GESQ");tcpusers("GSQ2");
%end
%endoffile
==== ecsc01/utilss_iprocs.txt ====
%begin
%externalintegerfnspec DPROCS(%integername max,%integer adr)
%routine idprocs
%integer j,max,adr,l,k
%byteintegerarray plist(0:32*256)
%stringname user
l=0
max=256
adr=addr(plist(0))
j=dprocs(max,adr)
%returnif j#0
%cycle k=0,1,max-1
user==string(addr(plist(32*k)))
%unless user="" %start
write(k,3)
space
printstring(user)
l=l+1
l=0 %and newline %if l=6
%finish
%repeat
==== ecsc01/utilss_finds.txt ====
%record %format rf(%integer conad, filetype, datastart, dataend)
%system %routine %spec connect(%string (31) file, %integer mode, hole, prot,
%record (rf) %name r, %integer %name flag)
%external %integer %function %spec exist(%string (31) file)
%system %integer %function %spec currentll
%system %long %integer %function %spec load ep(%string (31) entry,
%integer %name type, flag, %integer loadlevel)
%system %routine %spec unload2(%integer loadlevel, flag)
%external %integer %function %spec uinfi(%integer ep)
%external %routine %spec define(%string (255) s)
%external %routine %spec clear(%string (255) s)
%external %routine %spec closestream(%integer str)
%system %routine %spec ssmessa(%integer fail, %string (63) fname)
%system %routine %spec find entry(%string (31) entry, %integer type, dad,
%string %name file, %integer %name dr0, dr1, flag)
%system %routine %spec load(%string (31) entry, %integer type,
%integer %name flag)
%system %routine %spec setpar(%string (255) s)
%system %string %function %spec spar(%integer i)
%system %integer %function %spec parmap
==== ecsc01/sup_samplectopt.txt ====
!
! This file contains the const integers to control compile time options
! in EMAS2900
! it is intended to be concatenated onto the front of sourcefiles
! before compilation
%CONSTINTEGER YES=1
%CONSTINTEGER NO=0
%CONSTINTEGER SSERIES=NO; ! NO = "P" series, YES = "S" series
%CONSTINTEGER MULTIOCP=YES; ! YES to include semaphoring
%CONSTINTEGER RECONFIGURE=YES; ! allow OCP/SAC/SMAC reconfiguration
%CONSTINTEGER SFCFITTED=NO; ! NO for disc only sites
%CONSTINTEGER CPFITTED=NO; ! card punch fitted
%CONSTINTEGER CSU FITTED=YES; ! switch unit
%CONSTINTEGER DAP FITTED=YES; ! array processor available
%CONSTINTEGER SNOOZING=YES; ! YES allows suspend in store
! advantageous with large stores
%CONSTINTEGER PRODUCTION=NO; ! YES for continuing after
! software errors(most of which
! are due to hardware!)
%CONSTINTEGER MONLEVEL=7; ! 0= no monitoring
==== ecsc01/utilss_bellss.txt ====
%externalroutine bells(%string(255)dummy)
%integer i
%cycle i=1,1,20
printch (7)
spaces(4)
%repeat
%end
%endoffile
==== ecsc01/utilss_testsm.txt ====
program testsm(output);
const out='Pascal test maps OK';
magic = 402653440;
fname=' 23,t# ';
type str19=packed array [1..19]of char;
ptr19=^str19;
ftype=packed array [1..711]of char;
fptr=^ftype;
var len:integer;
mapper:fptr;
smfile:ptr19;
procedure define(i:integer;stref:ptr19);extern;
procedure opensm(chan,mode:integer;var mapper:fptr;var len:integer);extern;
procedure closesm(chan:integer);extern;
begin
new(smfile);
smfile^:=fname;
smfile^[1]:=chr(5);
define(magic,smfile);
opensm(23,1,mapper,len);
writeln(len:5,' bytes of data accessed');
==== ecsc01/utilss_clnewusrs.txt ====
%externalroutine clnewusers(%string(255)par)
%externalroutinespec newusers(%string(255)s)
%externalroutinespec clearscreen(%string(255)s)
clearscreen("")
newline
newusers(par)
%end
%endoffile
==== ecsc01/utilss_notel.txt ====
Source: .IN Compiled: 18/04/83 19.55.07
Object: T#O
Parms set: DEFAULTS
ERCC. Imp80 Compiler Release 1 Version 12 Nov 82
1023 3069
1 %systemroutinespec to journal (%integer from,len)
2 %externalroutine note (%string(255)s)
3 s="
4" **** ".s."
5" "
6 tojournal(addr(s)+1,length(s))
7 %end
8 %endoffile
8 LINES ANALYSED IN 64 MSECS - SIZE= 214
==== ecsc01/utilss_heaps.txt ====
%constant %integer true=1,false=0,wordshift=2
%own %integer base=0,heap size=65535<<wordshift,
moning=true,first hole=0,flag=0,
first call=true
%record %format holef(%half %integer size,next)
%record %format crf(%integer conad,type,start,end)
%own %record (crf) connect report
%own %record (holef) %name prev,curr,succ
%constant %string (11) heap file="T#IHEAP"
%own %string (11) temp file=""
%system %routine %spec outfile(%string (31) file, %integer length,hole,prot,
%integer %name conad,flag)
%external %integer %function %spec exist(%string (31) file)
%system %routine %spec destroy(%string (31) file, %integer %name flag)
%system %routine %spec connect(%string (31) file, %integer mode,hole,prot,
%record (crf) %name report, %integer %name flag)
%system %routine %spec disconnect(%string (31) file, %integer %name flag)
%system %routine %spec newgen(%string (31) old,new, %integer %name flag)
%system %routine %spec rename(%string (31) old,new, %integer %name flag)
%system %routine %spec fill(%integer length,start,filler)
%external %integer %function %spec outpos
==== ecsc01/utilss_where.txt ====
%externalstring(63)%fnspec uinfs(%integer ep)
%systemstring(255)%fnspec itos(%integer i)
%systemstring(8)%fnspec htos(%integer i,places)
%externalroutine where(%string(255)dummy)
%string(63)terms
terms=uinfs(14)
%string(6) tcp
%string(8) hexC
%byteinteger C,N,T
N=charno(terms,1);T=charno(terms,2);C=charno(terms,3);
TCP=substring(terms,4,9)
hexC=htos(C,2)
printstring("You are on Console ".itos(c)." (X'".hexC."') on TCP ".TCP)
printstring(" network address N".itos(N)."T".itos(T))
newlines(2)
%end
%endoffile
==== ecsc01/utilss_pal.txt ====
%source off
{!TITLE Palindrome Finding Program }
{ }
{ This program is designed for interactive terminal use. It takes a number}
{as input, reverses the digits, adds the two numbers together and tests the }
{result to see if it is a palindrome. This process can be repeated until either}
{a palindrome is found or the capacity of the array holding the number is r }
{reached. }
{ Further documentation is contained withing the program. }
{ Due to the interactive nature of the program no input or output streams }
{should be defined. }
{ }
{ }
program pal(inp,output);
const
progname = 'PALINDROME PROGRAM VERSION 18 ';
sp = ' ';
maxlength = 100;
namelength = 30;
==== ecsc01/locsys_locfile.txt ====
2Room 10 ,Appleton Tower Basement_________________
2Appleton Tower Basement__________________________
Appleton Tower Basement__________________________
Appleton Tower Basement__________________________
Appleton Tower Level 4___________________________
2Appleton Tower Level 4___________________________
Appleton Tower Level 4___________________________
Appleton Tower Level 4___________________________
Appleton Tower Level 4___________________________
2George Square____________________________________
Appleton Tower Basement__________________________
2Forrest Hill Unix Line___________________________
Appleton Tower Level 4___________________________
2Appleton Tower Basement__________________________
Appleton Tower Basement__________________________
2Appleton Tower Basement__________________________
2Appleton Tower Basement__________________________
2Appleton Tower Basement__________________________
Appleton Tower Basement__________________________
2Appleton Tower Basement__________________________
Appleton Tower Level 4___________________________
==== ecsc01/t#utilss0_xrefs.txt ====
%EXTERNALROUTINE CROSSREF(%STRING(63)INPUT)
%CONSTINTEGER JOBNAMLEN=6,MAXDISP=15,MAXGLOB=255,MAXHASH=4095, %C
MAXLINE=511,NAMLEN=8,OUTLINE=132,PAGESIZE=4096
%CONSTSTRING(23)VERSION="2.02 07/08/78 (MDB)"
%OWNSTRING(35)HEADER="* VARIABLE CROSS REFERENCE OF FILE "
%OWNSTRING(35)BLANK=""
%OWNSTRING(87)ASTK="*******************************************"
%INTEGER DATASTART,DEND,LENIN,M,MAXNAMES,MAXSTRINGS,MAXUSES
%STRING(31)DATETIME,MEMNAME,NAML,OUTPUT,VNAME
%EXTERNALROUTINESPEC DEFINE(%STRING(63)S)
%EXTERNALINTEGERFNSPEC SMADDR(%INTEGER N,%INTEGERNAME L)
%EXTERNALROUTINESPEC PROMPT(%STRING(15)S)
%EXTERNALSTRINGFNSPEC DATE
%EXTERNALSTRINGFNSPEC TIME
!*
%STRINGFN ITOSTR(%INTEGER I,M)
%STRING(1)SIGN
%STRING(63)S
M=0%IF M<0
%IF I<0%THEN SIGN="-"%AND I=IMOD(I)%ELSE SIGN=" "
S=""
==== ecsc01/total0303x.txt ====
Œ
Œ
! **** **** Never attempt to compile any of the subsystem without **** ****
! **** **** the PARMS NOCHECK and STACK. **** ****
!
!
! %CONST declarations for conditional compilation:
! NEWLOADER - SEPRTN must have the same value
! MACHINE - SEPRTN " " " " "
! STUDENTSS - LOADER " " " " "
! PDFNFC
! PIPER
! NEWCONNECT.
!
!
! To be attended to:
! Change OPTION to call a %SYSTEM %ROUTINE SETOPT (% STRING (255) PARMS,
! %STRING (?) OPTION FILE NAME, %INTEGER %NAME FLAG)
! so that student supervisors' utilities can use it.
! Why doesn't DISCONNECT(.ALL) do T# files? Probably not relevant with
! the new CONNECT mechanism, but with the old mechanism I suppose it's
==== ecsc01/utilss_awaits.txt ====
%externalstringfnspec vdus(%integer i)
%externalroutinespec printchs(%string(255)s)
%recordformat parmf(%integer dest,srce,p1,p2,p3,p4,p5,p6)
%dynamicroutinespec dpoff(%record(parmf)%name p)
%dynamicintegerfnspec ddelay(%integer secs)
%externalroutine await(%string(255) s)
%record(parmf) p
%integer i
printchs(vdus(1))
newlines(5)
printstring(" This terminal is still in use - please do not try to use it")
newlines(5)
i=ddelay(2)
p=0
dpoff(p)
%end; ! AWAIT
%endoffile
==== ecsc01/t#utilss0_preface.txt ====
!TITLE UTILITIES FOR USE ON EMAS
==== ecsc01/t#utilss0_uinffs.txt ====
program uinffs(output);
const uinfstart=2359296;
type
uinff=packed record
user:packed array[0..6]of char;
jobdocfile:packed array[0..31]of char;
mark,fsys,procno,isuff,reason,batchid,
sessiclim,scidensad,scidens,startcnsl,aiostat,sctdate,sync1dest,sync2dest,
asyncdest,aacctrec,aicrevs:integer;
jobname:packed array[0..15]of char;
basefile:packed array[0..31]of char;
previc,
itaddr0,itaddr1,itaddr2,itaddr3,itaddr4,streamid,dident,scarcity,
preemptat:integer;
spoolrfile:packed array[0..11]of char;
funds,sesslen,priority,decks,drives,partclose:integer;
tmodes:packed array[1..20]of char{DUMMY FILLER!!!};
pslot:integer;
itaddr:packed array[0..63]of char;
fclosing:packed array[0..3]of char;
clofes,
==== ecsc01/pi7hs.txt ====
%external %routine initialise %alias "S#INITIALISE"
! Note: this version of PRINTINIT7 assumes that the printer is a Philips
! GP300 dot matrix printer or a Xerox 2700 laser printer.
! Various permission checks (terminal, process used etc.) have been
! removed. If required in the future, the original listing of
! PRINTINIT7A should be examined and the relevant code used.
%constant %integer save max=7
%record %format crrf(%integer conad, filetype, datastart, dataend)
%record %format fhf(%integer end, start, size, type, fhole, dt, sp1, sp2)
%record %format infof(%integer vsn, state, %string (7) ident, user, %string (15) dest, srce,
output, %string (31) name, delivery, %string (63) message, %integer dtrec, dtst, dtopst,
dtdel, start, length, time, (%integer oplim %or %integer cc), %integer size,
(%integer prior %or %integer pc), %integer aftdt, ahead, %byte %integer forms,
mode, copies, order, rerun, decks, drives, fails) {256 bytes}
%record (infof) %name info
%record (infof) %array %name saveinfo
%record %format profrecf(%integer cc, pbar, %string (6) %array bar(0:save max),
%integer pfile, %record (infof) %array saveinfo(0:save max), %integer gcc,
%string (8) gdate, %integer pc, gpc)
==== ecsc01/t#utilss0_findprivs.txt ====
%externalroutine findpriv(%string(255)u)
%string(6)user
%integer flag,fsys,priv,i
%externalintegerfnspec dfsys(%string(6)user,%integername fsys)
%externalintegerfnspec dsfi (%string(6)user,%integer fsys,type,set,adr)
user<-u
%if length(user)#6 %then flag=8 %and ->out
fsys=-1
flag=dfsys(user,fsys)
->out %unless flag=0
flag=dsfi(user,fsys,38,0,addr(priv))
->out %unless flag=0
write(priv,1)
newline
%for i=0,1,32 %cycle
%if (priv>>i)&1=1 %then write(i,3)
%repeat
out:
%if flag#0 %start
printstring("Flag=")
write(flag,1)
==== ecsc01/t#utilss0_memos.txt ====
%external %routine %spec writeprofile(%string(11) key, %name info,
%integer %name version, flag)
%external %routine %spec readprofile(%string(11) key, %name info,
%integer %name version, flag)
%system %routine %spec setpar(%string(255) s)
%system %string(255) %fn %spec spar(%integer i)
%system %integer %fn %spec parmap
%system %integer %fn %spec pstoi(%string(255) s)
%system %string(255) %fn %spec substring(%string %name s, %integer i, j)
%external %routine %spec prompt(%string(255) s)
%external %integer %fn %spec uinfi(%integer i)
%external %string(255) %fn %spec ucstring(%string(255) s)
%system %string %fn %spec itos(%integer i)
%const %integer secsin24hrs = 86400; ! SECS IN DAY
%const %integer days70 = 25567; ! DAYS FROM JAN1 1900 TO JAN1 1970
%const %long %integer secs70 = x'0000000083AA7E80'; ! SECS DITTO
%const %string(1) snl = "
"
%const %integer maxmemos=10
%record %format proff(%integer %array after(1:maxmemos),
%string(255) %array text(1:maxmemos))
==== ecsc01/t#utilss0_retrieves.txt ====
%externalroutine retrieve(%string(255)s)
%externalintegerfnspec dretrieve(%string(6)t,%integer c)
%systemroutinespec cast out (%string(255)%name s)
%systemintegerfnspec pstoi(%string(255)s)
%string(255)p1,p2
%string(6)t
%integer c,flag
cast out (s)
%unless s->p1.(",").p2 %start
printstring("Bad param")
newline
%return
%finish
t<-p1
c=pstoi(p2)
flag=dretrieve(t,c)
printstring("RETRIEVE ".p1.",".p2." GIVES:")
write(flag,1)
%end
%endoffile
==== ecsc01/sup_comms56s.txt ====
! R.D.EAGER CONTAINS CODE FOR OUTPUT ACCOUNTS IN COMM CONTROL,
! LP ADAPTOR AND CP ADAPTOR
! VERSION OF 13/06/80
! DEC 79: INCLUDE AN OPER ADAPTOR
! HAVE ONLY ONE SERVICE NUMBER, X'37'
! OTHER POSSIBLE CHANGES
! MAKE INITIALISATION CALL OF CC INITIALISE ADAPTORS AS WELL
! MAKE IT POSSIBLE TO DEALLOCATE/ALLOCATE ALL DEVICES
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20A ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,WASKLOKCORRECT,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,DQADDR, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0, %C
%INTEGER ITINT,CONTYPEA,GPCCONFA,FPCCONFA,SFCCONFA, %C
BLKADDR,DPTADDR,SMACS,TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,SP0,SP1, %C
==== ecsc01/t#utilss0_allsourcess.txt ====
%constant %integer ssobjfiletype= 1
%constant %integer ssdirfiletype= 2
%constant %integer sscharfiletype= 3
%constant %integer ssdatafiletype= 4
%constant %integer sscorruptobjfiletype=5
%constant %integer sspdfiletype= 6
%constant %integer ssoptfiletype= 9
%constant %integer usingworkfile=0
%record %format connect report format(%integer connect address, file type,
data start, data end)
%record %format contf(%integer dataend, datastart, psize, filetype, sum,
datetime, spare1, spare2, mark, null1, ugla, astk, ustk, null2, itwidth,
ldelim, rdelim, journal, searchdircount, arraydiag, initworksize, spare,
itinsize, itoutsize, nobl, istk, %long %integer initparms,
%integer dataecho, terminal, i23, i24, i25, i26, i27, i28, i29, i30, i31,
i32, %string (31) fstartfile, bstartfile, preloadfile, moddir, cfaults,
s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18, s19, s20,
s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31, s32,
%string (31) %array searchdir(1:16))
%record %format arf(%string (31) name, %integer type)
%system %routine %spec setpar(%string (255) s)
==== ecsc01/t#utilss0_clnewusrs.txt ====
%externalroutine clnewusers(%string(255)par)
%externalroutinespec newusers(%string(255)s)
%externalroutinespec clearscreen(%string(255)s)
clearscreen("")
newline
newusers(par)
%end
%endoffile
==== ecsc01/t#utilss0_penvs.txt ====
program uinf(output);
const
userad=2359296;{str6}
fsysad=2359343;{int}
basefilead=2359420;{str31}
scarcityad=2359484;{int}
preemptad=2359488;{int}
fundsad=2359504;{int}
termad=2359564;{str63}
secstocdad=-2134900564;{int}
secsfrmnad=-2134900568;{int}
datead=-2134900673;{int}
timead=-2134900661;{int}
usersad=-2134900648;{int}
ocptypead=-2134900736;{int}
tojdayad=-2134900680;{int}
suplvnad=-2134900684;{int}
rationad=-2134900604;{int}
type
str6=packed array[0..6]of char;
str31=packed array[0..31]of char;
==== ecsc01/sup_com37s.txt ====
!
!* Communications record format - extant from CHOPSUPE 22A onwards *
!*
%RECORDFORMAT COMF(%INTEGER OCPTYPE,SLIPL,SBLKS,SEPGS,NDISCS,DLVNADDR, %C
(%INTEGER GPCTABSIZE,GPCA %OR %INTEGER DCUTABSIZE,DCUA), %C
%INTEGER SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,TOJDAY,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,SERVAAD, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0,%INTEGER ITINT,CONTYPEA, %C
(%INTEGER GPCCONFA %OR %INTEGER DCUCONFA), %C
%INTEGER FPCCONFA,SFCCONFA,BLKADDR,RATION, %C
(%INTEGER SMACS %OR %INTEGER SCUS), %C
%INTEGER TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,FEPS, %C
MAXCBT,PERFORMAD,SP1,SP2,SP3,SP4,SP5,SP6, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
HBIT,SLAVEOFF,INHSSR,SDR1,SDR2,SDR3, %C
SDR4,SESR,HOFFBIT,BLOCKZBIT,BLKSHIFT,BLKSIZE,END)
==== ecsc01/utilss_allsourcess.txt ====
%constant %integer ssobjfiletype= 1
%constant %integer ssdirfiletype= 2
%constant %integer sscharfiletype= 3
%constant %integer ssdatafiletype= 4
%constant %integer sscorruptobjfiletype=5
%constant %integer sspdfiletype= 6
%constant %integer ssoptfiletype= 9
%constant %integer usingworkfile=0
%record %format connect report format(%integer connect address, file type,
data start, data end)
%record %format contf(%integer dataend, datastart, psize, filetype, sum,
datetime, spare1, spare2, mark, null1, ugla, astk, ustk, null2, itwidth,
ldelim, rdelim, journal, searchdircount, arraydiag, initworksize, spare,
itinsize, itoutsize, nobl, istk, %long %integer initparms,
%integer dataecho, terminal, i23, i24, i25, i26, i27, i28, i29, i30, i31,
i32, %string (31) fstartfile, bstartfile, preloadfile, moddir, cfaults,
s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18, s19, s20,
s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31, s32,
%string (31) %array searchdir(1:16))
%record %format arf(%string (31) name, %integer type)
%system %routine %spec setpar(%string (255) s)
==== ecsc01/t#utilss0_pass.txt ====
%constlonginteger password=987325576
%systemroutinespec phex(%integer i)
%externalstring(255)%fnspec interrupt
%externalroutinespec prompt(%string(255)p)
%externalroutinespec setmode(%string(255)s)
%integerfn encrypt(%longinteger n)
%longlongreal lr
%integer i
%constlonglongreal const=131719.0478125
%for i=1,1,6 %cycle
lr=n
lr=lr*const
n=longinteger(addr(lr)+4);!middle 64 bits
%repeat
%result=integer(addr(n))
%end
%externalroutine privilege(%string(255)s)
%longinteger n
n=0
setmode("echo=off")
==== ecsc01/utilss_iprocs2.txt ====
%begin
%recordformat comf(%integerarray i1(1:25),%byteintegerarray b1(1:8),
%integerarray i2(1:9),%longinteger l1,
%integerarray i3(1:9),%integer MAXPROCS,
%integerarray i4(1:4),%integer PROCAAD)
%constrecord(comf)%name com=X'80000000'+48<<18
%integerfn VAL(%integer adr,len,rw,psr)
%integer inseg0,beyondseg0,seg0,seg0ad,dr0
seg0=adr>>18
%result=0 %unless 0<len<=32<<18
%if psr=0 %start
*LSS_(%LNB+1)
*ST_PSR
%finish
%if seg0#(adr+len-1)>>18 %start
seg0ad=seg0<<18
inseg0=X'400000'-(adr-seg0ad)
beyondseg0=len-inseg0
%result=VAL(adr,inseg0,rw,psr)&VAL(adr+inseg0,beyondseg0,rw,psr)
%finish
dr0=x'18000000'!len
==== ecsc01/t#utilss0_pasmons.txt ====
%external %routine pasmon
%system %routine %spec ndiag(%integer pc, lnb, fault, inf)
%integer pc, lnb
printstring("PASCAL MONITOR ENTERED: THE PROGRAM HAS NOT CRASHED")
newline
*lss_(%lnb +2)
*st_pc
*stln_lnb
ndiag(pc, lnb, 0, 0)
newline
printstring("PASCAL MONITOR COMPLETED: RETURN TO PROGRAM")
newline
%end
%end %of %file
==== ecsc01/utilss_fnoks.txt ====
program test_f_name(input,output);
type string31=packed array[1..31]of char;
var filename:string31;
function fnok(s:string31;write_to:boolean):boolean;
var i,dot,sub:integer;fail,ftype:packed array[0..4]of boolean;done:boolean;
function my_file(s:string31):boolean;
const
userad=2359296;{str6}
type
str6=packed array[0..6]of char;
cheat=record
dummyi:integer;
case boolean of
true:(addr:integer);
false:(ptr:^str6)
end;
var peeker:cheat;me,owner:str6;i:integer;
begin
peeker.addr:=userad;
==== ecsc01/utilss_uinffs.txt ====
program uinffs(output);
const uinfstart=2359296;
type
uinff=packed record
user:packed array[0..6]of char;
jobdocfile:packed array[0..31]of char;
mark,fsys,procno,isuff,reason,batchid,
sessiclim,scidensad,scidens,startcnsl,aiostat,sctdate,sync1dest,sync2dest,
asyncdest,aacctrec,aicrevs:integer;
jobname:packed array[0..15]of char;
basefile:packed array[0..31]of char;
previc,
itaddr0,itaddr1,itaddr2,itaddr3,itaddr4,streamid,dident,scarcity,
preemptat:integer;
spoolrfile:packed array[0..11]of char;
funds,sesslen,priority,decks,drives,partclose:integer;
tmodes:packed array[1..20]of char{DUMMY FILLER!!!};
pslot:integer;
itaddr:packed array[0..63]of char;
fclosing:packed array[0..3]of char;
clofes,
==== ecsc01/utilss_hasps.txt ====
%external %routine %spec set return code(%integer flag)
%external %integer %function %spec return code
%external %routine %spec detach(%string (255) s)
%external %routine %spec detachjob(%string (255) s)
%external %routine %spec prompt(%string (255) s)
%external %routine %spec destroy(%string (255) s)
%external %integer %function %spec exist(%string (255) s)
%systemroutinespec move(%integer len,from,to)
%system %routine %spec ssmessa(%integer flag, %string (63) fname)
%system %routine %spec outfile(%string (31) file, %integer size, hole, prot, %c
%integer %name conad, flag)
%routine makefile(%string (255) ownfile)
%integer flag, conad, i, j
%on %event 9 %start
->out
%finish
destroy(ownfile) %if exist(ownfile) # 0
outfile(ownfile, 4096, 0, X'40000000' {temp file}, conad, flag)
%if flag # 0 %then ssmessa(flag, ownfile) %and ->err
printstring("Enter contents of job file. Finish by typing Ctrl-Y")
==== ecsc01/t#utilss0_iodemos1.txt ====
program iodemo(inp,output,infile,outfile);
type
string15=packed array[1..15]of char;
ptr31 =^string31;
string31=packed array[0..31]of char;
var
infile,outfile,inp:text;
procedure pprompt(s:string15);extern;
procedure define(k:integer;p:ptr31);extern;
procedure define_files;
var filename:string31;length:integer;first_try,ok:boolean;
function get_name(prompt:string15;var l:integer;var name:string31):boolean;
var ok:boolean;temp:integer;
begin
if first_try then begin pprompt(prompt);reset(inp);first_try:=false;end
else begin pprompt(prompt);while inp^=' ' do get(inp);end;
for l:=0 to 31 do name[l]:=' ';
l:=1;
while (inp^<>' ') and not(eoln(inp)) and (l<29) do begin
==== ecsc01/t#utilss0_iodemos2.txt ====
program iodemo(inp,output,infile,outfile);
type
string15=packed array[1..15]of char;
ptr63 =^string63;
string63=packed array[0..63]of char;
string31=packed array[1..31]of char;
var
infile,outfile,inp:text;
procedure pprompt(s:string15);extern;
procedure pdefine(k:integer;p:ptr63);extern;
procedure define_files;
var filename:string31;length:integer;first_try,ok:boolean;
function get_name(prompt:string15;var l:integer;var name:string31):boolean;
var ok:boolean;temp:integer;
begin
if first_try then begin pprompt(prompt);reset(inp);first_try:=false;end
else begin pprompt(prompt);while inp^=' ' do get(inp);end;
for l:=1 to 31 do name[l]:=' ';
l:=1;
==== ecsc01/t#utilss0_iodemos3.txt ====
program iodemo(inp,output,infile,outfile);
type
string15=packed array[1..15]of char;
ptr63 =^string63;
string63=packed array[0..63]of char;
string31=packed array[1..31]of char;
var
infile,outfile,inp:text;
procedure pprompt(s:string15);extern;
procedure pdefine(k:integer;p:ptr63);extern;
procedure define_files;
var filename:string31;length:integer;first_try,ok:boolean;
function get_name(prompt:string15;
var l:integer;
var name:string31;
write_to:boolean):boolean;
var ok:boolean;temp:integer;
function fnok(s:string31;write_to:boolean):boolean;
==== ecsc01/utilss_clrscreens.txt ====
%externalstringfnspec vdus(%integer i)
%externalroutinespec printchs(%string(255)s)
%externalroutine clearscreen(%string(255)s)
printchs(vdus(1))
%end
%endoffile
==== ecsc01/utilss_usnames.txt ====
%systemstring(31)%fnspec username(%string(6)u,%integer i)
%externalroutine name(%string(255) s)
%string(6)u
%if s = "" %thenreturn
u<-s
s=username(u,1)
%if s#"?" %then printstring(u." <==> ".s) %else printstring("Not known")
newline
%end
%endoffile
==== ecsc01/utilss_user.txt ====
program processes(output);
const uinfstart=2359296;ausers=-2134900645;
type
uinff=packed array[0..6] of char;
uinf_p_t=record
dummyp:integer;
case boolean of
true:(paddr:integer);
false:(pval:^uinff)
end;
int_p_t=record
dummyi:integer;
case boolean of
true:(iaddr:integer);
false:(ival:^integer)
end;
var
i:integer;
int_ptr:int_p_t;
uinf_ptr:uinf_p_t;
user:uinff;
==== ecsc01/utilss_proc1.txt ====
program processes(input,output);
const procaad=-2134900528;maxprocs=-2134900736;
type
procf=packed record
user:packed array[0..6] of char;
incar,category,wsn,rung,active:char;
actwo,lstat,lamtx,stack,status:integer
end;
plist_t=packed array [0..256] of procf;
proc_p_t=record
dummyp:integer;
case boolean of
true:(paddr:integer);
false:(pval:^procf)
end;
integer_p_t=record
dummyi:integer;
case boolean of
true:(iaddr:integer);
false:(ival:^integer)
end;
==== ecsc01/t#ut0.txt ====
>>>>ALLSOURCESS<<<<
%constant %integer ssobjfiletype= 1
%constant %integer ssdirfiletype= 2
%constant %integer sscharfiletype= 3
%constant %integer ssdatafiletype= 4
%constant %integer sscorruptobjfiletype=5
%constant %integer sspdfiletype= 6
%constant %integer ssoptfiletype= 9
%constant %integer usingworkfile=0
%record %format connect report format(%integer connect address, file type,
data start, data end)
%record %format contf(%integer dataend, datastart, psize, filetype, sum,
datetime, spare1, spare2, mark, null1, ugla, astk, ustk, null2, itwidth,
ldelim, rdelim, journal, searchdircount, arraydiag, initworksize, spare,
itinsize, itoutsize, nobl, istk, %long %integer initparms,
%integer dataecho, terminal, i23, i24, i25, i26, i27, i28, i29, i30, i31,
i32, %string (31) fstartfile, bstartfile, preloadfile, moddir, cfaults,
s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18, s19, s20,
s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31, s32,
%string (31) %array searchdir(1:16))
%record %format arf(%string (31) name, %integer type)
==== ecsc01/t#utilss0_gsqs.txt ====
%externalroutine gsq(%string(255)s)
%externalroutinespec tcpusers(%string(255)s)
tcpusers("GESQ");tcpusers("GSQ2");
%end
%endoffile
==== ecsc01/locsys_helpinfo.txt ====
!TITLE Location System Help Info
!< Current Version Of Location System 27/09/83
!< Descriptions Of Commands
!< The Command Addname
This command is used to construct a name list in your ss#profile file,
this name list being used in conjunction with the FIND command (see below)
The name list contains a user number and string associated with each
entry , these data elements being entered in the following way.
Command:ADDNAME ECTU74,"G.Wallace
Number Of Names Inserted = 1
!>
!< The Command Removename
This command is the opposite of ADDNAME and simply removes a user from
==== ecsc01/t#utilss0_pal.txt ====
%source off
{!TITLE Palindrome Finding Program }
{ }
{ This program is designed for interactive terminal use. It takes a number}
{as input, reverses the digits, adds the two numbers together and tests the }
{result to see if it is a palindrome. This process can be repeated until either}
{a palindrome is found or the capacity of the array holding the number is r }
{reached. }
{ Further documentation is contained withing the program. }
{ Due to the interactive nature of the program no input or output streams }
{should be defined. }
{ }
{ }
program pal(inp,output);
const
progname = 'PALINDROME PROGRAM VERSION 18 ';
sp = ' ';
maxlength = 100;
namelength = 30;
==== ecsc01/t#utilss0_copy3s.txt ====
%constant %integer true=0,false=1
%constant %integer testing=false
%if testing = true %start
%routine %spec monitor(%string (255) s)
%finish
%system %string %function %spec failuremessage(%integer flag)
%system %string (31) %function %spec itos(%integer i)
%own %string (11) save owner,save file
%own %integer already connected=0
%constant %string (6) %name me=9<<18
%system %routine %spec outfile(%string (31) file, %integer size,hole,prot,
%integer %name conad,flag)
%system %routine %spec move(%integer len,from,to)
%system %routine %spec destroy(%string (31) file, %integer %name flag)
%system %string (31) %function %spec nexttemp
%system %routine %spec setpar(%string (255) par)
%system %integer %function %spec parmap
%system %string (31) %function %spec spar(%integer which)
%system %integer %function %spec allowconnect(%string (6) who,
%string (11) what)
%system %routine %spec zcopy2(%string (255) par, %integer silent,
==== ecsc01/sup_makechkd.txt ====
PARM NOCHECK,NOLIST,STACK
IMP80 CTOPT+SUP29CSRCE_SUP29CS,SUPZZ,,.OUT
IMP80 CTOPT+SUP29CSRCE_COM37S,COMZZ,,.OUT
IMP80 CTOPT+SUP29CSRCE_PRINT10S,PRINTZZ,,.OUT
IMP80 CTOPT+SUP29CSRCE_OPER38S,OPERZZ,,.OUT
IMP80 CTOPT+SUP29CSRCE_ENTER17S,ENTERZZ,,.OUT
PARM OPT,STACK,NOLIST
IMP80 CTOPT+SUP29CSRCE_GPC40S,GDCZZ,,.OUT
IMP80 SUP29CSRCE_NDIAG07S,NDIAGZZ,,.OUT
IMP80 CTOPT+SUP29CSRCE_COMMS56S,COMMSZZ,,.OUT
IMP80 CTOPT+SUP29CSRCE_FAST44S,FASTZZ,,.OUT
IMP80 CTOPT+SUP29CSRCE_TAPE80S,TAPEZZ,,.OUT
PARM MAP
LINK
SUPZZ
COMZZ
PRINTZZ
OPERZZ
ENTERZZ
GDCZZ
NDIAGZZ
==== ecsc01/utilss_anals.txt ====
%constant %integer ssdatafiletype= 4
%constant %integer ssobjfiletype= 1
%constant %integer sscorruptobjfiletype=5
%constant %integer ssdirfiletype= 2
%constant %integer sscharfiletype= 3
%constant %integer sspdfiletype= 6
%constant %integer ssoptfiletype= 9
%record %format arf(%string (31) name, %integer type)
%record %format pdhf(%integer dataend, datastart, size, filetype, sum,
datetime, adir, count)
%record %format rf(%integer conad, filetype, datastart, dataend)
%record %format dhf(%integer dataend, datastart, size, filetype, sum,
datetime, pstart, spare)
%record %format lnf(%byte %integer type, %string (6) name, %integer rest,
point, dr1)
%record %format frf(%integer conad, filetype, datastart, datend, size, rup,
eep, mode, users, arch, %string (6) tran, %string (8) date, time,
%integer count, spare1, spare2)
%record %format hf(%integer dataend, datastart, filesize, filetype, sum,
datetime, format, records)
%record %format dahf(%integer dataend, datastart, size, filetype, date, time,
==== ecsc01/t#utilss0_getaddr.txt ====
%begin
%recordformat comf %c
(%integerarray i1(1:25),%byteintegerarray b1(1:8),%integerarray i2(1:9),
%longinteger l1,%integerarray i3(1:9),%integer MAXPROCS,
%integerarray i4(1:4),%integer PROCAAD)
%constrecord(comf)%name com=X'80000000'+48<<18
printstring("Addresses of communications record")
newline
printstring("Record starts at ");write(addr(com_i1(1)),10);newline
printstring("Maxprocs is at ");write(addr(com_maxprocs),10);newline
printstring("Procaad is at ");write(addr(com_procaad),10);newline
%endofprogram
==== ecsc01/locsys_newsys.txt ====
! Constant Filenames
%CONSTANT %STRING (20) database = "ECMU24.locfile"
%CONSTANT %STRING (20) update = "ECMU23.upusers"
%CONSTANT %STRING (20) helpfile = "ECMU23.helpfile"
! Stuff Needed For Connect
%RECORD %FORMAT recfor(%INTEGER conad,filetype,datastart,dataend)
%SYSTEM %ROUTINE %SPEC connect(%STRING (31) filename, %INTEGER access,
maxbytes,prot, %RECORD (recfor) %NAME r, %INTEGER %NAME flag)
%SYSTEM %ROUTINE %SPEC disconnect(%STRING (31) filename, %INTEGER %NAME flag)
! Common External Reference Points
%EXTERNAL %ROUTINE %SPEC writeprofile(%STRING (11) key, %NAME blah,
%INTEGER %NAME version,flag)
%EXTERNAL %STRING (255) %FUNCTION %SPEC uinfs(%INTEGER i)
%EXTERNAL %INTEGER %FUNCTION %SPEC uinfi(%INTEGER i)
%EXTERNAL %ROUTINE %SPEC readprofile(%STRING (11) key, %NAME info,
%INTEGER %NAME v,f)
==== ecsc01/utilss_interrupts.txt ====
!TITLE Interrupts, %EVENTs and fault trapping.
!<Interrupts
Subsystem cannot control or handle interrupts on its own, and has to
exploit the facilities offered by Director for the purpose.
!< PRIME CONTINGENCY
One of the tools provided is the
%EXTERNAL %INTEGER %FN PRIME CONTINGENCY (%ROUTINE TRAP)
in Director. This need only be called once, to nominate the routine TRAP
to Director. The %SPEC of TRAP must be
%ROUTINE %SPEC TRAP (%INTEGER CLASS, SUBCLASS).
If an interrupt subsequently occurs which is relevant to the process
(and subject to some conditions which will appear later), Director
will suspend the process and force it to enter TRAP, supplying the
two %INTEGER parameters CLASS and SUBCLASS to indicate what sort of
interrupt has occurred. TRAP will normally be some routine which is
declared as part of the subsystem, and in the standard subsystem it is
the routine DIRTRAP, declared in module BASE. The corresponding call of
PRIME CONTINGENCY is almost the first instruction executed in the
%SYSTEM %ROUTINE CONTROL declared in module CONT.
!>
==== ecsc01/utilss_preface.txt ====
!TITLE UTILITIES FOR USE ON EMAS
==== ecsc01/t#utilss0_userss.txt ====
%EXTERNALROUTINE MYUSERS(%STRING(255)S)
%externalroutinespec printchs(%string(255)s)
%externalstring(31)%fnspec vdus(%integer i)
!%externalintegerfnspec fecount(%integername a, b)
%EXTERNALINTEGERFNSPEC DPROCEDURE(%INTEGER ACT, ADR)
%RECORDFORMAT RF1(%INTEGER N, A)
%RECORD(RF1) R1
%RECORDFORMAT PF(%STRING(6)USER, %STRING(15)TCP, %BYTEINTEGER A, INVOC, B, N, F,
%INTEGER LOGS, %BYTEINTEGER site, reason, cons1, cons2, %c
%INTEGER ID, PROC, G, H, Z)
%RECORD(PF)%ARRAY P(1:256)
%record (pf) %name pp
%INTEGER J, feusers,tcpusers, i, k, f, l, max
%integerarray fe(0:4)
%ownintegerarray index(0:255)
%string (24) t,u
%string(12)%array nam(1:50)
%ownintegerarray nuf(1:50)
%ownintegerarray nus(1:50)
==== ecsc01/sup_gdc02s.txt ====
!*
!* GPC/DCU driver
!*
%CONSTSTRING(26) VSN=".GDC02 - 4th May 1983"
%OWNINTEGER IVSN=M'GDC2'
!*
%RECORDFORMAT PARMF(%INTEGER DEST,SRCE,(%INTEGER P1,P2,P3,P4,P5,P6 %OR %C
%STRING(23)TEXT))
!*
!*
!* Communications record format - extant from CHOPSUPE 22A onwards *
!*
%RECORDFORMAT COMF(%INTEGER OCPTYPE,SLIPL,SBLKS,SEPGS,NDISCS,DLVNADDR, %C
(%INTEGER GPCTABSIZE,GPCA %OR %INTEGER DCUTABSIZE,DCUA), %C
%INTEGER SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,TOJDAY,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,SERVAAD, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0,%INTEGER ITINT,CONTYPEA, %C
(%INTEGER GPCCONFA %OR %INTEGER DCUCONFA), %C
%INTEGER FPCCONFA,SFCCONFA,BLKADDR,RATION, %C
==== ecsc01/utilss_copy3s.txt ====
%constant %integer true=0,false=1
%constant %integer testing=false
%if testing = true %start
%routine %spec monitor(%string (255) s)
%finish
%system %string %function %spec failuremessage(%integer flag)
%system %string (31) %function %spec itos(%integer i)
%own %string (11) save owner,save file
%own %integer already connected=0
%constant %string (6) %name me=9<<18
%system %routine %spec outfile(%string (31) file, %integer size,hole,prot,
%integer %name conad,flag)
%system %routine %spec move(%integer len,from,to)
%system %routine %spec destroy(%string (31) file, %integer %name flag)
%system %string (31) %function %spec nexttemp
%system %routine %spec setpar(%string (255) par)
%system %integer %function %spec parmap
%system %string (31) %function %spec spar(%integer which)
%system %integer %function %spec allowconnect(%string (6) who,
%string (11) what)
%system %routine %spec zcopy2(%string (255) par, %integer silent,
==== ecsc01/sup_ndiag07s.txt ====
!*_ DATED 11 NOV 76 1
! ALTERATIONS BY K.YARWOOD ...
! PRINT FL AND NEXT SYMBOL LINES COMMENTED OUT
! PRINTTEXT'S TURNED TO PRINTSTRING'S
! ADDITION FOR LONGINTEGER IN RT PRINT VAR
! HEX EQUIVALENTS FOR INTS,LONGINTS ETC PRINTED
! INF PRINTED IN HEX IN RT ERRMESS
%EXTERNALSTRINGFNSPEC STRHEX(%INTEGER I)
%EXTERNALSTRING(8)%FNSPEC STRINT(%INTEGER I)
%CONSTINTEGER STACKBASE=X'80100000'; ! START OF RESIDENT STACK
! %SYSTEMROUTINESPEC SIGNAL(%INTEGER I, J, K, %INTEGERNAME F)
%ROUTINESPEC PRINTMESS(%INTEGER N)
! %SYSTEMROUTINESPEC TIDY EXIT
!*
%ROUTINESPEC INDIAG(%INTEGER OLDLNB, L, PC, %INTEGERNAME NEWLNB)
! %ROUTINESPEC FDIAG(%INTEGER OLDLNB,PC,%INTEGERNAME NEWLNB)
%ROUTINESPEC ERMESS(%INTEGER N, INF)
! %ROUTINESPEC ICL9CELABELS
==== ecsc01/t#utilss0_snoops.txt ====
%conststring(1) snl="
"
%externalroutinespec files(%string(255)s)
%systemstring(31)%fnspec itos(%integer i)
%externalroutine snoop(%string(255)group)
%integer no
%string(2)nos
%if length(group)=6 %then files(group.".") %andreturn
%if length(group)<4 %then printstring("Invalid group".snl) %andreturn
%if length(group)=5 %start
%for no=0,1,9 %cycle
nos=itos(no)
printstring("Command:files ".group.nos.".");newline
files(group.nos.".")
%repeat
%finishelsestart
%for no=0,1,99 %cycle
nos=itos(no);nos="0".nos %if no<10
printstring("Command:files ".group.nos.".");newline
files(group.nos.".")
%repeat
==== ecsc01/cobhelp.txt ====
COBOL
Invokes the VAX-11 COBOL compiler to compile a COBOL source program.
See the VAX-11 COBOL User's Guide for additional information.
This optional software product is available under separate license.
Format:
COBOL file-spec[,...]
COBOL can also be used to:
o Invoke the VAX-11 COBOL-74 compiler (COBOL/C74)
Additional information available:
Other_compiler
/C74
==== ecsc01/sspd_source.txt ====
! The first parameter of the command SS is the particular function
! to be executed. Each one is described in full below.
!
!<General
! If you reply to the 'Function: ' prompt with 'HELP', you will be
! directed to this file
!>
%CONTROL 0
%RECORDFORMAT OF(%STRING(11)NAME, %INTEGER SP12, NKB, %C
%BYTEINTEGER ARCH, CODES, CCT, OWNP, %C
EEP, USE, CODES2, SSBYTE, FLAGS, POOL, DAYNO, SP31)
%RECORDFORMAT AF(%STRING(11)NAME, %INTEGER NKB, %STRING(8)DATE, %C
%STRING(6)TAPE, %INTEGER CHAP, COUNT)
%RECORDFORMAT %C
DFINF(%INTEGER NKB, RUP, EEP, APF, USE, ARCH, FS, SEG, CCT, CDS, %C
%BYTEINTEGER SP, DAY, POL, CD2, %C
%INTEGER SS, %C
%STRING(6)OFF)
!
!
!
==== ecsc01/utilss_pronames.txt ====
%externalroutine proname(%string(255)user)
%record(%integer no,%string(6)%array user(1:25),%string(31)%array alias(1:25)) data
%integer vsn,flag,i
%externalroutinespec readprofile(%string(11)key,%name data,%integername vsn,flag)
vsn=0
readprofile("GWW",data,vsn,flag)
printstring("Flag=");write(flag,1);printstring(" Vsn=");write(vsn,1);newline
printstring("No=");write(data_no,1);newline
%for i=1,1,data_no %cycle
printstring(data_user(i));spaces(5);printstring(data_alias(i));newline
%repeat
%end
%endoffile
==== ecsc01/locsys_tcpusers.txt ====
%externalroutine tcpusers(%string(255) s)
%constant %integer maxtcps=39
%constant %string(15) %array tcpname(1:maxtcps)="TCPA","TCPC","TCPD","TCPM","JCMB",
"G.SQ.","EULIB","SOCS","ATB-1","ATB-2","ATB-3","CS-AT1","CS-AT2","ENGIN","CHEM",
"POLLCK","XGATE","TCPS","GEOG","PSSE","SIAE","FCNRS","BUSH","IGS","HFRO",
"SCRI-I","SCRI-P","FOREST","ERSKIN","WS-COA","GTCP1","GTCP2","GTCP3","GTCP4",
"GTCP5","STCP","STCL-2","null","TEMP"
%integer i,j
%recordformat rf1(%integer n,a)
%recordformat pf(%string(6)user,%string(15)tcp,%byteinteger a,invoc,b,n,f,
%integer logs,%byteinteger c,d,e,r,%integer id,proc,g,h,z)
%record(rf1) r1
%record(pf)%array p(1:256)
%externalroutinespec prompt(%string(255) s)
%externalintegerfnspec dprocedure(%integer a,b)
%systemstringfnspec username(%string(6) user,%integer flag)
%on %event 4 %start
==== ecsc01/utilss_newsnoops.txt ====
%external %routine new snoop(%string (255) s)
%record %format finff(%string (11) fname, %integer sp12, kbytes,
%byte %integer arch, codes, cct, ownp, eep, use, codes2, ssbyte,
flags, pool, dayno, sp31)
%external %integer %function %spec dfsys(%string (6) user,
%integer %name fsys)
%external %integer %function %spec dsfi(%string (6) user, %integer fsys,
type, set, addr)
%external %integer %function %spec dfilenames(%string (6) user,
%record (finff) %array %name inf, %integer %name fileno, maxrec,
nfiles, %integer fsys, type)
%external %string (15) %function %spec interrupt
%system %string (255) %function %spec itos(%integer i)
%system %routine %spec phex(%integer i)
%own %integer found=0
%string (255) %function itos2(%integer i)
%string (255) s
s = itos(i)
==== ecsc01/sup_tape80s.txt ====
!***********************************************************************
!
! 2900 TAPE HANDLER
!
!***********************************************************************
!
%IF SSERIES=NO %START
!..........PSERIES..........PSERIES..........PSERIES..........PSERIES
!
%CONSTINTEGER TOP LBE=36
! { CH FN
%CONSTINTEGERARRAY LBES(0:TOP LBE)= %C
X'00000200', { 1 RF
X'40001200', { 2 RR
X'00000200', { 3 RF
X'44C01200',X'86800D10',X'00006200', { 4 RR,AS,RFEC
X'40001200', { 5 RR
X'04C00200',X'86800D10',X'40007200', { 6 RF,AS,RREC
X'04C00200',X'04805200',X'86800D10',X'00006200', { 7 RF,SR,AS,RFEC
X'44C01200',X'04804200',X'86800D10',X'40007200', { 8 RR,SF,AS,RREC
X'00000200', { 9 RF
==== ecsc01/utilss_xrefs.txt ====
%EXTERNALROUTINE CROSSREF(%STRING(63)INPUT)
%CONSTINTEGER JOBNAMLEN=6,MAXDISP=15,MAXGLOB=255,MAXHASH=4095, %C
MAXLINE=511,NAMLEN=8,OUTLINE=132,PAGESIZE=4096
%CONSTSTRING(23)VERSION="2.02 07/08/78 (MDB)"
%OWNSTRING(35)HEADER="* VARIABLE CROSS REFERENCE OF FILE "
%OWNSTRING(35)BLANK=""
%OWNSTRING(87)ASTK="*******************************************"
%INTEGER DATASTART,DEND,LENIN,M,MAXNAMES,MAXSTRINGS,MAXUSES
%STRING(31)DATETIME,MEMNAME,NAML,OUTPUT,VNAME
%EXTERNALROUTINESPEC DEFINE(%STRING(63)S)
%EXTERNALINTEGERFNSPEC SMADDR(%INTEGER N,%INTEGERNAME L)
%EXTERNALROUTINESPEC PROMPT(%STRING(15)S)
%EXTERNALSTRINGFNSPEC DATE
%EXTERNALSTRINGFNSPEC TIME
!*
%STRINGFN ITOSTR(%INTEGER I,M)
%STRING(1)SIGN
%STRING(63)S
M=0%IF M<0
%IF I<0%THEN SIGN="-"%AND I=IMOD(I)%ELSE SIGN=" "
S=""
==== ecsc01/utilss_counters.txt ====
%begin
!%externalroutine t(%string(255)dummy)
%externalintegerfnspec ddelay(%integer i)
%longintegerarray store(1:10)
%longinteger now ,then
%integer counter,flag
%longintegerfn tim(%integer val)
*RRTC_1
*USH_(%LNB+5)
*STUH_%TOS
*USH_1
*USH_-1
*EXIT_-64
%end
%for counter=1,1,10 %cycle
store(counter)=tim(-19)
flag=ddelay(30)
%repeat
then=store(1)
%for counter=1,1,10 %cycle
now=store(counter)
==== ecsc01/t#utilss0_finds.txt ====
%record %format rf(%integer conad, filetype, datastart, dataend)
%system %routine %spec connect(%string (31) file, %integer mode, hole, prot,
%record (rf) %name r, %integer %name flag)
%external %integer %function %spec exist(%string (31) file)
%system %integer %function %spec currentll
%system %long %integer %function %spec load ep(%string (31) entry,
%integer %name type, flag, %integer loadlevel)
%system %routine %spec unload2(%integer loadlevel, flag)
%external %integer %function %spec uinfi(%integer ep)
%external %routine %spec define(%string (255) s)
%external %routine %spec clear(%string (255) s)
%external %routine %spec closestream(%integer str)
%system %routine %spec ssmessa(%integer fail, %string (63) fname)
%system %routine %spec find entry(%string (31) entry, %integer type, dad,
%string %name file, %integer %name dr0, dr1, flag)
%system %routine %spec load(%string (31) entry, %integer type,
%integer %name flag)
%system %routine %spec setpar(%string (255) s)
%system %string %function %spec spar(%integer i)
%system %integer %function %spec parmap
==== ecsc01/utilss_pasmons.txt ====
%external %routine pasmon
%system %routine %spec ndiag(%integer pc, lnb, fault, inf)
%integer pc, lnb
printstring("PASCAL MONITOR ENTERED: THE PROGRAM HAS NOT CRASHED")
newline
*lss_(%lnb +2)
*st_pc
*stln_lnb
ndiag(pc, lnb, 0, 0)
newline
printstring("PASCAL MONITOR COMPLETED: RETURN TO PROGRAM")
newline
%end
%end %of %file
==== ecsc01/t#utilss0_notel.txt ====
Source: .IN Compiled: 18/04/83 19.55.07
Object: T#O
Parms set: DEFAULTS
ERCC. Imp80 Compiler Release 1 Version 12 Nov 82
1023 3069
1 %systemroutinespec to journal (%integer from,len)
2 %externalroutine note (%string(255)s)
3 s="
4" **** ".s."
5" "
6 tojournal(addr(s)+1,length(s))
7 %end
8 %endoffile
8 LINES ANALYSED IN 64 MSECS - SIZE= 214
==== ecsc01/t#utilss0_heaps.txt ====
%constant %integer true=1,false=0,wordshift=2
%own %integer base=0,heap size=65535<<wordshift,
moning=true,first hole=0,flag=0,
first call=true
%record %format holef(%half %integer size,next)
%record %format crf(%integer conad,type,start,end)
%own %record (crf) connect report
%own %record (holef) %name prev,curr,succ
%constant %string (11) heap file="T#IHEAP"
%own %string (11) temp file=""
%system %routine %spec outfile(%string (31) file, %integer length,hole,prot,
%integer %name conad,flag)
%external %integer %function %spec exist(%string (31) file)
%system %routine %spec destroy(%string (31) file, %integer %name flag)
%system %routine %spec connect(%string (31) file, %integer mode,hole,prot,
%record (crf) %name report, %integer %name flag)
%system %routine %spec disconnect(%string (31) file, %integer %name flag)
%system %routine %spec newgen(%string (31) old,new, %integer %name flag)
%system %routine %spec rename(%string (31) old,new, %integer %name flag)
%system %routine %spec fill(%integer length,start,filler)
%external %integer %function %spec outpos
==== ecsc01/t#utilss0_where.txt ====
%externalstring(63)%fnspec uinfs(%integer ep)
%systemstring(255)%fnspec itos(%integer i)
%systemstring(8)%fnspec htos(%integer i,places)
%externalroutine where(%string(255)dummy)
%string(63)terms
terms=uinfs(14)
%string(6) tcp
%string(8) hexC
%byteinteger C,N,T
N=charno(terms,1);T=charno(terms,2);C=charno(terms,3);
TCP=substring(terms,4,9)
hexC=htos(C,2)
printstring("You are on Console ".itos(c)." (X'".hexC."') on TCP ".TCP)
printstring(" network address N".itos(N)."T".itos(T))
newlines(2)
%end
%endoffile
==== ecsc01/sup_fast44s.txt ====
!*
!* Communications record format - extant from CHOPSUPE 22B onwards *
!*
%RECORDFORMAT COMF(%INTEGER OCPTYPE,SLIPL,SBLKS,SEPGS,NDISCS,DLVNADDR, %C
(%INTEGER GPCTABSIZE,GPCA %OR %INTEGER DCUTABSIZE,DCUA), %C
%INTEGER SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,TOJDAY,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,SERVAAD, %C
%BYTEINTEGER NSACS,RESV1, %C
(%BYTEINTEGER SACPORT1,SACPORT0 %OR %BYTEINTEGER %C
OCP1 SCU PORT,OCP0 SCU PORT), %BYTEINTEGER %C
NOCPS,SYSTYPE,OCPPORT1,OCPPORT0,%INTEGER ITINT,CONTYPEA, %C
(%INTEGER GPCCONFA %OR %INTEGER DCUCONFA), %C
%INTEGER FPCCONFA,SFCCONFA,BLKADDR,RATION, %C
(%INTEGER SMACS %OR %INTEGER SCUS), %C
%INTEGER TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,FEPS, %C
MAXCBT,PERFORMAD,%BYTEINTEGER DAPNO,DAPBLKS,DAPUSER,DAPSTATE, %C
%INTEGER DAP1,SP1,SP2,SP3,SP4, %C
==== ecsc01/sspd_preface.txt ====
==== ecsc01/utilss_userss.txt ====
%EXTERNALROUTINE MYUSERS(%STRING(255)S)
%externalroutinespec printchs(%string(255)s)
%externalstring(31)%fnspec vdus(%integer i)
!%externalintegerfnspec fecount(%integername a, b)
%EXTERNALINTEGERFNSPEC DPROCEDURE(%INTEGER ACT, ADR)
%RECORDFORMAT RF1(%INTEGER N, A)
%RECORD(RF1) R1
%RECORDFORMAT PF(%STRING(6)USER, %STRING(15)TCP, %BYTEINTEGER A, INVOC, B, N, F,
%INTEGER LOGS, %BYTEINTEGER site, reason, cons1, cons2, %c
%INTEGER ID, PROC, G, H, Z)
%RECORD(PF)%ARRAY P(1:256)
%record (pf) %name pp
%INTEGER J, feusers,tcpusers, i, k, f, l, max
%integerarray fe(0:4)
%ownintegerarray index(0:255)
%string (24) t,u
%string(12)%array nam(1:50)
%ownintegerarray nuf(1:50)
%ownintegerarray nus(1:50)
==== ecsc01/locsys_profs.txt ====
%record %format profile f(%string(11) key, %integer version, offset, length)
%record %format ssprofile f(%integer end, start, size, filetype, checksum,
datetime, format, sp0, marker, max profiles,
no profiles, sp1, %record(profile f)%array %c
profile(1:500)); ! 500 will never be approached.
! Structure of profile file: It starts with the format of ssprofile f
! above. The first 8 words are standard Subsystem header. Thereafter:
! marker: to check against overwriting or other corruption.
! max profiles: the maximum number of profiles which this file can currently hold.
! no profiles: the actual number of profiles held.
! profile: a record array (1:max profiles), each element containing the
! following:
! key: the keyword (the only access to profile data)
! version: the version number of the profile format.
! offset: the offset of the start of the profile data.
! length: the length of the profile data, as seen by the
! user. The profile scheme adds a marker word
! and rounds up to word align the data.
==== ecsc01/utilss_memos.txt ====
%external %routine %spec writeprofile(%string(11) key, %name info,
%integer %name version, flag)
%external %routine %spec readprofile(%string(11) key, %name info,
%integer %name version, flag)
%system %routine %spec setpar(%string(255) s)
%system %string(255) %fn %spec spar(%integer i)
%system %integer %fn %spec parmap
%system %integer %fn %spec pstoi(%string(255) s)
%system %string(255) %fn %spec substring(%string %name s, %integer i, j)
%external %routine %spec prompt(%string(255) s)
%external %integer %fn %spec uinfi(%integer i)
%external %string(255) %fn %spec ucstring(%string(255) s)
%system %string %fn %spec itos(%integer i)
%const %integer secsin24hrs = 86400; ! SECS IN DAY
%const %integer days70 = 25567; ! DAYS FROM JAN1 1900 TO JAN1 1970
%const %long %integer secs70 = x'0000000083AA7E80'; ! SECS DITTO
%const %string(1) snl = "
"
%const %integer maxmemos=10
%record %format proff(%integer %array after(1:maxmemos),
%string(255) %array text(1:maxmemos))
==== ecsc01/utilss_clss.txt ====
%externalroutinespec printchs(%string(255)s)
%externalstringfnspec vdus(%integer ep)
%externalroutine cls(%string(255)s)
%if s#"" %then printchs(vdus(0))
printchs(vdus(1))
%end
%endoffile
==== ecsc01/utilss_snoops.txt ====
%conststring(1) snl="
"
%externalroutinespec files(%string(255)s)
%systemstring(31)%fnspec itos(%integer i)
%externalroutine snoop(%string(255)group)
%integer no
%string(2)nos
%if length(group)=6 %then files(group.".") %andreturn
%if length(group)<4 %then printstring("Invalid group".snl) %andreturn
%if length(group)=5 %start
%for no=0,1,9 %cycle
nos=itos(no)
printstring("Command:files ".group.nos.".");newline
files(group.nos.".")
%repeat
%finishelsestart
%for no=0,1,99 %cycle
nos=itos(no);nos="0".nos %if no<10
printstring("Command:files ".group.nos.".");newline
files(group.nos.".")
%repeat
==== ecsc01/t#utilss0_user.txt ====
program processes(output);
const uinfstart=2359296;ausers=-2134900645;
type
uinff=packed array[0..6] of char;
uinf_p_t=record
dummyp:integer;
case boolean of
true:(paddr:integer);
false:(pval:^uinff)
end;
int_p_t=record
dummyi:integer;
case boolean of
true:(iaddr:integer);
false:(ival:^integer)
end;
var
i:integer;
int_ptr:int_p_t;
uinf_ptr:uinf_p_t;
user:uinff;
==== ecsc01/utilss_penvs.txt ====
program uinf(output);
const
userad=2359296;{str6}
fsysad=2359343;{int}
basefilead=2359420;{str31}
scarcityad=2359484;{int}
preemptad=2359488;{int}
fundsad=2359504;{int}
termad=2359564;{str63}
secstocdad=-2134900564;{int}
secsfrmnad=-2134900568;{int}
datead=-2134900673;{int}
timead=-2134900661;{int}
usersad=-2134900648;{int}
ocptypead=-2134900736;{int}
tojdayad=-2134900680;{int}
suplvnad=-2134900684;{int}
rationad=-2134900604;{int}
type
str6=packed array[0..6]of char;
str31=packed array[0..31]of char;
==== ecsc01/utilss_fnok.txt ====
program testfile(input,output);
type
string31 = packed array [1..31] of char;
var
filename : string31;
flag : boolean;
procedure readstring(var inp:text;var s:string31; var flag:boolean);
var
i : integer;
procedure skipspaces(var inp:text);
begin
while (inp^=' ') and not (eoln(inp)or eof(inp)) do
get(inp);
end;
begin
==== ecsc01/t#utilss0_newsnoops.txt ====
%external %routine new snoop(%string (255) s)
%record %format finff(%string (11) fname, %integer sp12, kbytes,
%byte %integer arch, codes, cct, ownp, eep, use, codes2, ssbyte,
flags, pool, dayno, sp31)
%external %integer %function %spec dfsys(%string (6) user,
%integer %name fsys)
%external %integer %function %spec dsfi(%string (6) user, %integer fsys,
type, set, addr)
%external %integer %function %spec dfilenames(%string (6) user,
%record (finff) %array %name inf, %integer %name fileno, maxrec,
nfiles, %integer fsys, type)
%external %string (15) %function %spec interrupt
%system %string (255) %function %spec itos(%integer i)
%system %routine %spec phex(%integer i)
%own %integer found=0
%string (255) %function itos2(%integer i)
%string (255) s
s = itos(i)
==== ecsc01/sup_print10s.txt ====
%RECORDFORMAT PARMF(%INTEGER DEST, SRCE, P1, P2, P3, P4, P5, P6)
%EXTRINSICLONGINTEGER KMON
%ROUTINESPEC PRHEX(%INTEGER H)
%ROUTINESPEC PRINTER(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC PON(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC GDC(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC OPMESS(%STRING (23) MESS)
%SYSTEMROUTINESPEC ITOE(%INTEGER A, L)
%IF MULTIOCP=YES %THEN %START
%EXTERNALROUTINESPEC SEMALOOP(%INTEGERNAME SEMA,%INTEGER PARM)
%ROUTINESPEC RESERVE LOG
%ROUTINESPEC RELEASE LOG
%ROUTINESPEC AWAIT LOG ROUTE
%FINISH
!------------------------------------------------------------------------
!*
!* Communications record format - extant from CHOPSUPE 22A onwards *
!*
%RECORDFORMAT COMF(%INTEGER OCPTYPE,SLIPL,SBLKS,SEPGS,NDISCS,DLVNADDR, %C
(%INTEGER GPCTABSIZE,GPCA %OR %INTEGER DCUTABSIZE,DCUA), %C
%INTEGER SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
==== ecsc01/t#utilss0_compars.txt ====
%constinteger max base commands=12
%conststring(255)%array base commands(1:max base commands)=%C
"alias","remove","monitor","stop","quit","launch","broadcast","tell",
"autoattack","surrender","dump","resources"
!"B","C","D","E","F","G","H","I","J","K","AL","LI","RE","ST"
%recordformat com form (%string(80)comstr,%byteinteger base,type)
%constinteger max possible commands=20
%ownrecord(com form)%array commands(1:max possible commands)
%owninteger max commands=0
%routine sort(%record(com form)%arrayname r,%integer lo,hi)
!%routine sort(%stringarrayname r,%integer lo,hi)
%integer i,j,k,l,n
%record(com form)x
!%string(255)x
l=lo-1
n=hi
!%while n<hi-l %cycle
! n=2*n
!%repeat
! <=> 1<<((32- shz{shift while not zero}(hi-l-1))&31)
==== ecsc01/sup_oper38s.txt ====
!*
!* OPER37 - 2nd April 1982 *
!*
!* Communications record format - extant from CHOPSUPE 22A onwards *
!*
%RECORDFORMAT COMF(%INTEGER OCPTYPE,SLIPL,SBLKS,SEPGS,NDISCS,DLVNADDR, %C
(%INTEGER GPCTABSIZE,GPCA %OR %INTEGER DCUTABSIZE,DCUA), %C
%INTEGER SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,TOJDAY,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,SERVAAD, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0,%INTEGER ITINT,CONTYPEA, %C
(%INTEGER GPCCONFA %OR %INTEGER DCUCONFA), %C
%INTEGER FPCCONFA,SFCCONFA,BLKADDR,RATION, %C
(%INTEGER SMACS %OR %INTEGER SCUS), %C
%INTEGER TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,FEPS, %C
MAXCBT,PERFORMAD,SP1,SP2,SP3,SP4,SP5,SP6, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
==== ecsc01/utilss_getaddr.txt ====
%begin
%recordformat comf %c
(%integerarray i1(1:25),%byteintegerarray b1(1:8),%integerarray i2(1:9),
%longinteger l1,%integerarray i3(1:9),%integer MAXPROCS,
%integerarray i4(1:4),%integer PROCAAD)
%constrecord(comf)%name com=X'80000000'+48<<18
printstring("Addresses of communications record")
newline
printstring("Record starts at ");write(addr(com_i1(1)),10);newline
printstring("Maxprocs is at ");write(addr(com_maxprocs),10);newline
printstring("Procaad is at ");write(addr(com_procaad),10);newline
%endofprogram
==== ecsc01/locsys_broonsinfo.txt ====
STATUS:
This provides the user with the current state of another users process
, that is to say , how long it has been since the user has executed a command.
The routine uses DPROCS to obtain information about the user.
In the record used by DPROCS there is a field status which AND'd with 16 gives
result true if and only if the user is active.
If this turns out to be false the field active gives an integer which can be
translated into a message to show how long the process has be left dormant.
This message works on the lines that the more sleepy the message the longer
it has been left
RENEW:
This command enables the user to allocate a new location to a particular
TCP's buffer.
The TCP's name is read in along with the console number (decimal) and
the new location message. To update the location the starting address of the
database file is obtained using CONNECT and the correct location is changed
by calculating the correct offset in the file.
In addition to the location being changed a record of what user changed
what location and what TCP+console he/she was on a the time. This is done
in order to check up on invalid locations.
==== ecsc01/t#utilss0_clrscreens.txt ====
%externalstringfnspec vdus(%integer i)
%externalroutinespec printchs(%string(255)s)
%externalroutine clearscreen(%string(255)s)
printchs(vdus(1))
%end
%endoffile
==== ecsc01/sup_enter17s.txt ====
%RECORDFORMAT PARMF(%INTEGER DEST, SRCE, P1, P2, P3, P4, P5, P6)
%RECORDFORMAT SERVAF(%INTEGER P, C)
%EXTERNALINTEGERSPEC INPTR
%EXTERNALINTEGERSPEC OUTPTR
%CONSTINTEGER MASK=X'80FC3FFF'
%EXTERNALINTEGERFNSPEC HANDKEYS
%EXTERNALROUTINESPEC HOOT(%INTEGER NUM)
%EXTERNALROUTINESPEC GDC(%RECORD(PARMF)%NAME P)
%IF SSERIES=NO %START
%EXTERNALINTEGERFNSPEC GPC INIT(%INTEGER CA,PT,MODE)
%FINISH
%EXTERNALINTEGERFNSPEC SAFE IS READ(%INTEGER ISAD,%INTEGERNAME VAL)
%EXTERNALROUTINESPEC GET PSTB(%INTEGERNAME P0, P1)
%EXTERNALROUTINESPEC SUP29
%EXTERNALROUTINESPEC SUPPOFF(%RECORD(SERVAF)%NAME SERV, %C
%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC DISC(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC PDISC(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC SLAVESONOFF(%INTEGER J)
%EXTERNALROUTINESPEC PKMONREC(%STRING(20)TEXT,%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC WAIT(%INTEGER MILLISECS)
==== ecsc01/vol_vlink20.txt ====
LINK
SSLD05Z
VOLS20Z
.END
V20Z
SPFIX V20Z,V20R,V20D
PERMIT V20R,,ER
==== ecsc01/t#utilss0_fnoks.txt ====
program test_f_name(input,output);
type string31=packed array[1..31]of char;
var filename:string31;
function fnok(s:string31;write_to:boolean):boolean;
var i,dot,sub:integer;fail,ftype:packed array[0..4]of boolean;done:boolean;
function my_file(s:string31):boolean;
const
userad=2359296;{str6}
type
str6=packed array[0..6]of char;
cheat=record
dummyi:integer;
case boolean of
true:(addr:integer);
false:(ptr:^str6)
end;
var peeker:cheat;me,owner:str6;i:integer;
begin
peeker.addr:=userad;
==== ecsc01/t#utilss0_hasps.txt ====
%external %routine %spec set return code(%integer flag)
%external %integer %function %spec return code
%external %routine %spec detach(%string (255) s)
%external %routine %spec detachjob(%string (255) s)
%external %routine %spec prompt(%string (255) s)
%external %routine %spec destroy(%string (255) s)
%external %integer %function %spec exist(%string (255) s)
%systemroutinespec move(%integer len,from,to)
%system %routine %spec ssmessa(%integer flag, %string (63) fname)
%system %routine %spec outfile(%string (31) file, %integer size, hole, prot, %c
%integer %name conad, flag)
%routine makefile(%string (255) ownfile)
%integer flag, conad, i, j
%on %event 9 %start
->out
%finish
destroy(ownfile) %if exist(ownfile) # 0
outfile(ownfile, 4096, 0, X'40000000' {temp file}, conad, flag)
%if flag # 0 %then ssmessa(flag, ownfile) %and ->err
printstring("Enter contents of job file. Finish by typing Ctrl-Y")
==== ecsc01/vol_source.txt ====
!********************************************************************
!* *
!* *
!* * * * * * * * * * * * * * * * * *
!* * V O L U M E S E X E C U T I V E * *
!* * * * * * * * * * * * * * * * * *
!* *
!* *
!********************************************************************
!*
%CONSTSTRING(3) VERSION="20R"
!* 23-JAN-84:
!* 'NEW RESTORE REQUEST' TO RESOLVE ARCH ALIAS AMBIGUITY.
!* 'BACKUP ONLY' TO DO BACKUP WITH NO SECURE, OVERRIDING EXPLICIT/IMPLICIT
!* EXPLICIT 'SECURE' COMMAND
!*
! %CONSTSTRING(3) VERSION="20Q"
!* 26-OCT-83:
!* SYSTEM EPAGES=X500 FOR SECURE OF NEW SYSTEM DISCS
==== ecsc01/locsys_llr.txt ====
! Constant Filename
%CONSTANT %STRING (20) update = "ECTU74.upusers"
%recordformat rf(%integer conad,filetype,datastart,dataend)
%systemroutinespec connect(%string(31) filename,%integer access,maxbytes,prot,
%record(rf) %name r,%integername flag)
%systemroutinespec disconnect(%string(31) filename,%integername flag)
! Start of routine llr to list all users who have used renew
%externalroutine llr(%string(255) nowt)
%byteintegerarrayformat raformat(0:50)
%byteintegerarrayname contents
%integer i,j,flag,startaddr
%record(rf) r
connect(update,10,0,0,r,flag) { Connect up relevant file}
startaddr=r_conad+r_datastart
%for i=0,1,49 %cycle
contents==array(startaddr+i*51,RAFORMAT)
==== ecsc01/t#utilss0_proc1.txt ====
program processes(input,output);
const procaad=-2134900528;maxprocs=-2134900736;
type
procf=packed record
user:packed array[0..6] of char;
incar,category,wsn,rung,active:char;
actwo,lstat,lamtx,stack,status:integer
end;
plist_t=packed array [0..256] of procf;
proc_p_t=record
dummyp:integer;
case boolean of
true:(paddr:integer);
false:(pval:^procf)
end;
integer_p_t=record
dummyi:integer;
case boolean of
true:(iaddr:integer);
false:(ival:^integer)
end;
==== ecsc01/t#utilss0_interrupts.txt ====
!TITLE Interrupts, %EVENTs and fault trapping.
!<Interrupts
Subsystem cannot control or handle interrupts on its own, and has to
exploit the facilities offered by Director for the purpose.
!< PRIME CONTINGENCY
One of the tools provided is the
%EXTERNAL %INTEGER %FN PRIME CONTINGENCY (%ROUTINE TRAP)
in Director. This need only be called once, to nominate the routine TRAP
to Director. The %SPEC of TRAP must be
%ROUTINE %SPEC TRAP (%INTEGER CLASS, SUBCLASS).
If an interrupt subsequently occurs which is relevant to the process
(and subject to some conditions which will appear later), Director
will suspend the process and force it to enter TRAP, supplying the
two %INTEGER parameters CLASS and SUBCLASS to indicate what sort of
interrupt has occurred. TRAP will normally be some routine which is
declared as part of the subsystem, and in the standard subsystem it is
the routine DIRTRAP, declared in module BASE. The corresponding call of
PRIME CONTINGENCY is almost the first instruction executed in the
%SYSTEM %ROUTINE CONTROL declared in module CONT.
!>
==== ecsc01/t#utilss0_pronames.txt ====
%externalroutine proname(%string(255)user)
%record(%integer no,%string(6)%array user(1:25),%string(31)%array alias(1:25)) data
%integer vsn,flag,i
%externalroutinespec readprofile(%string(11)key,%name data,%integername vsn,flag)
vsn=0
readprofile("GWW",data,vsn,flag)
printstring("Flag=");write(flag,1);printstring(" Vsn=");write(vsn,1);newline
printstring("No=");write(data_no,1);newline
%for i=1,1,data_no %cycle
printstring(data_user(i));spaces(5);printstring(data_alias(i));newline
%repeat
%end
%endoffile
==== ecsc01/utilss_pass.txt ====
%constlonginteger password=987325576
%systemroutinespec phex(%integer i)
%externalstring(255)%fnspec interrupt
%externalroutinespec prompt(%string(255)p)
%externalroutinespec setmode(%string(255)s)
%integerfn encrypt(%longinteger n)
%longlongreal lr
%integer i
%constlonglongreal const=131719.0478125
%for i=1,1,6 %cycle
lr=n
lr=lr*const
n=longinteger(addr(lr)+4);!middle 64 bits
%repeat
%result=integer(addr(n))
%end
%externalroutine privilege(%string(255)s)
%longinteger n
n=0
setmode("echo=off")
==== ecsc01/t#utilss0_iprocs2.txt ====
%begin
%recordformat comf(%integerarray i1(1:25),%byteintegerarray b1(1:8),
%integerarray i2(1:9),%longinteger l1,
%integerarray i3(1:9),%integer MAXPROCS,
%integerarray i4(1:4),%integer PROCAAD)
%constrecord(comf)%name com=X'80000000'+48<<18
%integerfn VAL(%integer adr,len,rw,psr)
%integer inseg0,beyondseg0,seg0,seg0ad,dr0
seg0=adr>>18
%result=0 %unless 0<len<=32<<18
%if psr=0 %start
*LSS_(%LNB+1)
*ST_PSR
%finish
%if seg0#(adr+len-1)>>18 %start
seg0ad=seg0<<18
inseg0=X'400000'-(adr-seg0ad)
beyondseg0=len-inseg0
%result=VAL(adr,inseg0,rw,psr)&VAL(adr+inseg0,beyondseg0,rw,psr)
%finish
dr0=x'18000000'!len
==== ecsc01/t#utilss0_iprocs.txt ====
%begin
%externalintegerfnspec DPROCS(%integername max,%integer adr)
%routine idprocs
%integer j,max,adr,l,k
%byteintegerarray plist(0:32*256)
%stringname user
l=0
max=256
adr=addr(plist(0))
j=dprocs(max,adr)
%returnif j#0
%cycle k=0,1,max-1
user==string(addr(plist(32*k)))
%unless user="" %start
write(k,3)
space
printstring(user)
l=l+1
l=0 %and newline %if l=6
%finish
%repeat
==== ecsc01/t#utilss0_bellss.txt ====
%externalroutine bells(%string(255)dummy)
%integer i
%cycle i=1,1,20
printch (7)
spaces(4)
%repeat
%end
%endoffile
==== ecsc01/t#utilss0_testsm.txt ====
program testsm(output);
const out='Pascal test maps OK';
magic = 402653440;
fname=' 23,t# ';
type str19=packed array [1..19]of char;
ptr19=^str19;
ftype=packed array [1..711]of char;
fptr=^ftype;
var len:integer;
mapper:fptr;
smfile:ptr19;
procedure define(i:integer;stref:ptr19);extern;
procedure opensm(chan,mode:integer;var mapper:fptr;var len:integer);extern;
procedure closesm(chan:integer);extern;
begin
new(smfile);
smfile^:=fname;
smfile^[1]:=chr(5);
define(magic,smfile);
opensm(23,1,mapper,len);
writeln(len:5,' bytes of data accessed');
==== ecsc01/utilss_iodemos1.txt ====
program iodemo(inp,output,infile,outfile);
type
string15=packed array[1..15]of char;
ptr31 =^string31;
string31=packed array[0..31]of char;
var
infile,outfile,inp:text;
procedure pprompt(s:string15);extern;
procedure define(k:integer;p:ptr31);extern;
procedure define_files;
var filename:string31;length:integer;first_try,ok:boolean;
function get_name(prompt:string15;var l:integer;var name:string31):boolean;
var ok:boolean;temp:integer;
begin
if first_try then begin pprompt(prompt);reset(inp);first_try:=false;end
else begin pprompt(prompt);while inp^=' ' do get(inp);end;
for l:=0 to 31 do name[l]:=' ';
l:=1;
while (inp^<>' ') and not(eoln(inp)) and (l<29) do begin
==== ecsc01/utilss_iodemos2.txt ====
program iodemo(inp,output,infile,outfile);
type
string15=packed array[1..15]of char;
ptr63 =^string63;
string63=packed array[0..63]of char;
string31=packed array[1..31]of char;
var
infile,outfile,inp:text;
procedure pprompt(s:string15);extern;
procedure pdefine(k:integer;p:ptr63);extern;
procedure define_files;
var filename:string31;length:integer;first_try,ok:boolean;
function get_name(prompt:string15;var l:integer;var name:string31):boolean;
var ok:boolean;temp:integer;
begin
if first_try then begin pprompt(prompt);reset(inp);first_try:=false;end
else begin pprompt(prompt);while inp^=' ' do get(inp);end;
for l:=1 to 31 do name[l]:=' ';
l:=1;
==== ecsc01/utilss_iodemos3.txt ====
program iodemo(inp,output,infile,outfile);
type
string15=packed array[1..15]of char;
ptr63 =^string63;
string63=packed array[0..63]of char;
string31=packed array[1..31]of char;
var
infile,outfile,inp:text;
procedure pprompt(s:string15);extern;
procedure pdefine(k:integer;p:ptr63);extern;
procedure define_files;
var filename:string31;length:integer;first_try,ok:boolean;
function get_name(prompt:string15;
var l:integer;
var name:string31;
write_to:boolean):boolean;
var ok:boolean;temp:integer;
function fnok(s:string31;write_to:boolean):boolean;
==== ecsc01/sup_sup29cs.txt ====
!
! To make S series supervisor requires:-
! 1) Change SSERIES=NO to SSERIES=YES in ctoptions file
!
!
! THESE CONST INTEGERS DEFINE SIZES AND LAYOUT OF IMPORTANT TABLES
! THEY HAVE TO BE HERE TO BE GLOBAL TO ALL ROUTINES INCLUDING IO ONES
!
%CONSTINTEGER LSTLEN=192; ! LOCAL SEGMENT TABLE LENGTH
%CONSTINTEGER CBTLEN=299; ! LENGTH OF CBT TABLE
%CONSTLONGINTEGER LCACR=1; ! ACR OF LOCAL CONTROLLER
%CONSTINTEGER DIRCSEG=10; ! SEG NO OF DIRECTOR COMMS SEG
%CONSTINTEGER DIRCSEGOFFSET=0; ! FOR ALIGNMENT IF NEEDED
%CONSTINTEGER DIRCSEGAD=DIRCSEG<<18; ! VIRTUAL ADDRESS OF DIR COM SEG
%CONSTINTEGER DIRCSEGL=8*CBTLEN+255+2*LSTLEN; ! SIZE OF SAME
! MADE UP OF 2049 FOR CBT
! 2*LSTLEN FOR SST
! 48+64 FOR 2 BITS OF SYTEMCALL TABLE
! 32+48 FOR DIROUTP&SIGOUT
%CONSTINTEGER LSTACKLEN=3; ! LOCAL CONT. STACK ELEN
==== ecsc01/t#utilss0_anals.txt ====
%constant %integer ssdatafiletype= 4
%constant %integer ssobjfiletype= 1
%constant %integer sscorruptobjfiletype=5
%constant %integer ssdirfiletype= 2
%constant %integer sscharfiletype= 3
%constant %integer sspdfiletype= 6
%constant %integer ssoptfiletype= 9
%record %format arf(%string (31) name, %integer type)
%record %format pdhf(%integer dataend, datastart, size, filetype, sum,
datetime, adir, count)
%record %format rf(%integer conad, filetype, datastart, dataend)
%record %format dhf(%integer dataend, datastart, size, filetype, sum,
datetime, pstart, spare)
%record %format lnf(%byte %integer type, %string (6) name, %integer rest,
point, dr1)
%record %format frf(%integer conad, filetype, datastart, datend, size, rup,
eep, mode, users, arch, %string (6) tran, %string (8) date, time,
%integer count, spare1, spare2)
%record %format hf(%integer dataend, datastart, filesize, filetype, sum,
datetime, format, records)
%record %format dahf(%integer dataend, datastart, size, filetype, date, time,
==== ecsc01/t#utilss0_counters.txt ====
%begin
!%externalroutine t(%string(255)dummy)
%externalintegerfnspec ddelay(%integer i)
%longintegerarray store(1:10)
%longinteger now ,then
%integer counter,flag
%longintegerfn tim(%integer val)
*RRTC_1
*USH_(%LNB+5)
*STUH_%TOS
*USH_1
*USH_-1
*EXIT_-64
%end
%for counter=1,1,10 %cycle
store(counter)=tim(-19)
flag=ddelay(30)
%repeat
then=store(1)
%for counter=1,1,10 %cycle
now=store(counter)
==== ecsc01/locsys_tcpanal.txt ====
%externalroutine tcpanal(%string(255) s)
%constant %integer maxtcps=27
%constant %string(15) %array tcpname(1:maxtcps)="TCPA","TCPC","TCPD","TCPM","JCMB",
"G.SQ.","EULIB","SOCS","ATB-1","ATB-2","ATB-3","CS-AT1","CS-AT2","ENGIN","CHEM",
"POLLCK","XGATE","TCPS","GEOG","PSSE",
"X25","SCRI-I","SCRI-P","FOREST","ERSKIN","WS-COA","null"
%integer i,tcpusercount,j
%recordformat rf1(%integer n,a)
%recordformat pf(%string(6)user,%string(15)tcp,%byteinteger a,invoc,b,n,f,
%integer logs,%byteinteger c,d,e,r,%integer id,proc,g,h,z)
%record(rf1) r1
%record(pf)%array p(1:256)
%externalroutinespec prompt(%string(255) s)
%externalintegerfnspec dprocedure(%integer a,b)
%on %event 4 %start
printstring("You Are Supposed To Type The Number Associated With The Tcp!")
newline
==== ecsc01/testpi7.txt ====
%external %routine testinit
! Note: Version of PRINTINIT7 for transfer of HP Laser Jet files to
! APM Filestore (Appleton Tower) Spooler.
! Only commands "PRINT", "QUEUE", "STOP", "QUIT", "EXIT" available
! under program operation. No permission checks other than on
! global process running program. No accounting/profile kept.
%record %format crrf(%integer conad, filetype, datastart, dataend)
%record (crrf) crname
%record %format fhf(%integer end, start, size, type, fhole, dt, sp1, sp2)
%record %format infof(%integer vsn, state, %string (7) ident, user,
%string (15) dest, srce, output, %string (31) name, delivery,
%string (63) message, %integer dtrec, dtst, dtopst, dtdel, start,
length, time, (%integer oplim %or %integer cc), %integer size,
(%integer prior %or %integer pc), %integer aftdt, ahead,
%byte %integer forms, mode, copies, order, rerun, decks, drives, fails)
{256 bytes}
%record (infof) %name info
%record %format pe(%integer dest, srce, p1, p2, p3, p4, p5, p6)
%record %format reqf(%integer dest, srce, flag, %string (6) user, file,
==== ecsc01/tfile.txt ====
asdlsadjlksjdksladjal;kdjskl;dj
skdl;sakdl; dsad;lskdl;sd
l;k
;ksdl;k
dflkdl;sfgkdl; ewrieowqrioperiepor
==== ecsc01/t#utilss0_clss.txt ====
%externalroutinespec printchs(%string(255)s)
%externalstringfnspec vdus(%integer ep)
%externalroutine cls(%string(255)s)
%if s#"" %then printchs(vdus(0))
printchs(vdus(1))
%end
%endoffile
==== ecsc01/sup_gpc40s.txt ====
%CONSTSTRING (25) VSN="GPC40 15th Mar 1982"
!************************************************GPC GPC GPC
!*
!* EMAS 2900 SUPERVISOR NOTE
!* No: 5
!* Date: 21/05/80
!* Author: A.Gibbons
!*
!*
!* %EXTERNAL ROUTINE GPC(%RECORD(PARMF)%NAME P)
!*
!* 1. CONVENTIONS
!* The record spec for the parameter is
!* %RECORDFORMAT PARMF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6)
!* where
!* DEST is considered as two half words DSNO and DACT. DSNO
!* must be GPC's DSNO
!* DACT is set according to the function required.
!*
!* SRCE is considered as two halfwords SSNO and SACT.
==== ecsc01/t#utilss0_usnames.txt ====
%systemstring(31)%fnspec username(%string(6)u,%integer i)
%externalroutine name(%string(255) s)
%string(6)u
%if s = "" %thenreturn
u<-s
s=username(u,1)
%if s#"?" %then printstring(u." <==> ".s) %else printstring("Not known")
newline
%end
%endoffile
==== ecsc01/t#utilss0_fnok.txt ====
program testfile(input,output);
type
string31 = packed array [1..31] of char;
var
filename : string31;
flag : boolean;
procedure readstring(var inp:text;var s:string31; var flag:boolean);
var
i : integer;
procedure skipspaces(var inp:text);
begin
while (inp^=' ') and not (eoln(inp)or eof(inp)) do
get(inp);
end;
begin
==== ecsc01/t#utilss0_awaits.txt ====
%externalstringfnspec vdus(%integer i)
%externalroutinespec printchs(%string(255)s)
%recordformat parmf(%integer dest,srce,p1,p2,p3,p4,p5,p6)
%dynamicroutinespec dpoff(%record(parmf)%name p)
%dynamicintegerfnspec ddelay(%integer secs)
%externalroutine await(%string(255) s)
%record(parmf) p
%integer i
printchs(vdus(1))
newlines(5)
printstring(" This terminal is still in use - please do not try to use it")
newlines(5)
i=ddelay(2)
p=0
dpoff(p)
%end; ! AWAIT
%endoffile
==== ecsc01/sup_mindiags.txt ====
%EXTERNALSTRINGFNSPEC STRHEX(%INTEGER I)
%SYSTEMROUTINE NDIAG(%INTEGER PCOUNT, LNB, FAULT, INF)
!***********************************************************************
!*_______'MASTER DIAGNOSTIC ROUTINE'. DISCOVERS THE LANGUAGE OF THE *
!*_______FAILED ROUTINE FROM WORD 4 OF THE GLA AND CALLS APPROPRIATE *
!*_______DIAGNOSTIC ROUTINE. THIS IS REPEATED TILL ALL DIAGNOSTICS *
!*_______GIVEN. *
!*_______PCOUNT = PCOUNTER AT FAILURE *
!*_______LNB = LOCAL NAME BASE AT FAILURE *
!*_______FAULT = FAILURE (0=%MONITOR REQUESTED) *
!*_______INF =ANY FURTHER INFORMATION *
!***********************************************************************
PRINTSTRING("
MINIMUM NDIAGS ENTERED
FAULT NO ="); WRITE(FAULT,2)
PRINTSTRING("
PC=X".STRHEX(PCOUNT)."
LNB=X".STRHEX(LNB)."
")
%IF FAULT>0 %THEN %STOP
%END
==== ecsc04/pcompats.txt ====
!********************************************************************
%routinespec pstack(%string(31) name,%integer bits,words,
%integername controlx,controly,pushcony,popcony,phi1x,phi2x,phi3x,phi4x,
%integer pushyref,popyref)
%routinespec pplacepads(%string(31) chipname,cellname,%integer portsref,n)
!*********************************************************************
%externalroutinespec stack(%string(31) name,%integer bits,words,
%integername controlx,controly,pushcony,popcony,phi1x,phi2x,phi3x,phi4x,
%integerarrayname pushy,popy)
%recordformat connf(%integer type,side,c,w,%string(4) layer)
%externalroutinespec placepads(%string(31) chipname,cellname, %c
%record(connf)%arrayname ports,%integer n)
!---------------------------------------------------------------------
%externalroutine pstack(%string(31) name,%integer bits,words,
%integername controlx,controly,pushcony,popcony,phi1x,phi2x,phi3x,phi4x,
%integer pushyref,popyref)
%integerarray pushy,popy(1:bits)
%integer i
stack(name,bits,words,controlx,controly,pushcony,popcony,
phi1x,phi2x,phi3x,phi4x,pushy,popy)
%for i=1,1,bits %cycle
==== ecsc04/sup24l.txt ====
LINK
ECSC04.SUP24
ERCC07.COM23Z
ERCC07.FAST21Z
ECSC17.OPER16Z
ERCS04.DPRINT25Z
ERCS04.TAPE61Z
ERCC35.GPC16Y
ERCC07.NDIAG06Z
ERCC20.COMMS33Z
.END
SUP24Z
SUPFIX SUP24Z,SUP24T
==== ecsc04/gpms.txt ====
%BEGIN
%INTEGER E0,F0,H0,R
%OWNINTEGER A,W,W1,H,P,F,C=0,S=39,E=33,Q=1,MARKER=X'FFFFC000'
%SWITCH MCM(1:6)
%OWNSHORTINTEGERARRAY ST(0:1000)=%C
-1,4,'D','E','F',-1,
0,4,'V','A','L',-2,
6,7,'U','P','D','A','T','E',-3,
12,4,'B','I','N',-4,
21,4,'D','E','C',-5,
27,4,'B','A','R',-6,
0(962)
%ROUTINESPEC MONITOR(%INTEGER N)
%ROUTINE LOAD
%IF H=0 %THEN PRINT SYMBOL(A) %ELSE ST(S)=A %AND S=S+1
%END
%ROUTINE NEXTCH
%IF C=0 %THEN READ SYMBOL(A) %ELSE A=ST(C) %AND C=C+1
%END
%ROUTINE FIND(%INTEGER X)
==== ecsc04/laycom.txt ====
%EXTERNALROUTINE LAY(%STRING (63) S)
%EXTERNALROUTINESPEC DEFINE(%STRING(63) S)
%EXTERNALROUTINESPEC RUN(%STRING (63) S)
%STRING (63) S1,S2,S3
%IF S->S1.('/').S2 %THEN %START
DEFINE('ST01,'.S1)
%IF S2->S1.(',').S3 %THEN %START
DEFINE('ST03,'.S3)
%FINISH %ELSE S1=S2 %AND DEFINE('ST03,.NULL')
DEFINE('ST02,'.S1) ;! DOCUMENT
%FINISH %ELSE %MONITORSTOP
RUN('MYLAYY')
%END
%ENDOFFILE
==== ecsc04/ocgsignals.txt ====
BE41 #25LS2519 QUAD FF/10
DC33 #25LS2539 DUAL DEMUX/20
CE41 #25LS2569 UPDOWN CTR/20
CG17 #25LS2569 UPDOWN CTR/20
CG27 #25LS2569 UPDOWN CTR/20
DA41 #25LS2569 UPDOWN CTR/20
AA01 #2907 BUS TRANS/20
AC01 #2907 BUS TRANS/20
AE01 #2907 BUS TRANS/20
AG01 #2907 BUS TRANS/20
AC19 #29701 RAM/16
AE19 #29701 RAM/16
CA25 #29701 RAM/16
CA33 #29701 RAM/16
CC33 #29701 RAM/16
==== ecsc04/ilaps_pads.txt ====
%include "ilap_inc"
!
%routine draw output pad area
%integer i
layer(metal)
box(0,88,96,96) ; box(0,0,96,8) ; box(24,24,72,72)
box(82,67,86,73) ; box(72,68,82,72) ; box(82,45,86,51)
box(72,46,82,50) ; box(82,23,86,29) ; box(72,24,82,28)
box(67,13,73,17) ; box(68,17,72,24) ; box(45,13,51,17)
box(46,17,50,24) ; box(23,13,29,17) ; box(24,17,28,24)
box(10,23,14,29) ; box(14,24,24,28) ; box(10,45,14,51)
box(14,46,24,50) ; box(10,67,14,73) ; box(14,68,24,72)
layer(contact)
box(i,89,i+4,91) %and box(i,93,i+4,95) %for i=34,8,58
box(i,3,i+4,5) %for i=6,10,86
box(83,68,85,72) ; box(83,46,85,50) ; box(83,24,85,28)
box(68,14,72,16) ; box(46,14,50,16) ; box(24,14,28,16)
box(11,24,13,28) ; box(11,46,13,50) ; box(11,68,13,72)
layer(diffusion)
box(70,26,96,96) ; box(0,0,96,26)
box(0,26,26,96) ; box(26,70,70,96)
==== ecsc04/spiceobey.txt ====
DEFINE 5,SPICE2
DEFINE 6,.LP
DEFINE 7,SPICEJ
SPICE
==== ecsc04/xtalkbbc.txt ====
BBC Micrcomputer X-talk User Guide
Release Version 1.0 1st Nov 1984
Keith Mitchell
ERCC Real Time Support Group
Contents
1) Introduction 2
==== ecsc04/Emas-a/oproute.txt ====
%externalroutine route(%realarray(1)%name ax,bx,%integer n,%real awid, %c
bwid,twid,tsep,ay,%realname by,%integer v)
%externalrealfnspec sin(%real x)
%externalrealfnspec cos(%real x)
%routinespec genpolys(%integer i,%realarray(1)%name ax,bx, %c
%realarray(3)%name apx,apy,bpx,bpy,%integerarray(2)%name apv,bpv, %c
%integerarray(1)%name apn,bpn,%real atw,btw)
%routinespec getsep(%integer i,%realarray(3)%name apx,apy,bpx,bpy,%c
%integerarray(2)%name apv,bpv,%integerarray(1)%name apn,bpn)
%realarray px,py(0:n-1,1:v),apx,apy,bpx,bpy(1:n,0:n-1,1:v+1)
%integerarray apn,bpn,sign(1:n),apv,bpv(1:n,0:n-1)
%real atw,btw,maxsep,d,r,s,t
%constreal pi=3.14159265
%integer i,j,k,l,m
atw=(awid-twid)/2
btw=(bwid-twid)/2
d=twid+tsep
! generate polygon vertex positions
r=cos(pi/(4*v))
%for i=1,1,v %cycle
s=d*cos((2*i-1)*pi/(4*v))/r
==== ecsc04/Emas-a/start.txt ====
alias files,f
alias destroy,delete
alias vecce,v
==== ecsc04/iwcsa.txt ====
!!!!!!!!!!!!!!!!!!!!!!!!! ELEMENT DEFINITIONS !!!!!!!!!!!!!!!!!!!!!!!!!!
%ELEMENTDEF CTR(%INPUT C1,C2,R,S,%INPUTARRAY A(0:3),%OUTPUTARRAY Y(0:3))
%ELEMENTDEF SWITCH(%INPUTARRAY A(0:7),%OUTPUTARRAY Y(0:7))
%ELEMENTDEF INV(%INPUT A,%OUTPUT Y)
%ELEMENTDEF NAND2(%INPUT A,B,%OUTPUT Y)
%ELEMENTDEF NAND2OC(%INPUT A,B,%OUTPUT Y)
%ELEMENTDEF AND2(%INPUT A,B,%OUTPUT Y)
%ELEMENTDEF BUFF(%INPUT A,%OUTPUT Y)
%ELEMENTDEF NOR5(%INPUT A,B,C,D,E,%OUTPUT Y)
%ELEMENTDEF NAND8(%INPUTARRAY A(0:7),%OUTPUT Y)
%ELEMENTDEF MMVBR(%INPUT A1,A2,B,T9,T10,T11,%OUTPUT Q,QB)
%ELEMENTDEF DFF(%INPUT C,D,P,CL,%OUTPUT Q,QB)
%ELEMENTDEF MULT2(%INPUT S0,S1,A,B,%OUTPUT Y)
%ELEMENTDEF MULTB2(%INPUT S0,S1,A,B,%OUTPUT Y)
%ELEMENTDEF RAM8(%INPUT D,RW,CE1,CE2,CE3,%ARRAY A(0:7),%OUTPUT Y)
%ELEMENTDEF RAM10(%INPUT D,RW,CE,%ARRAY A(0:9),%OUTPUT Y)
%ELEMENTDEF COMP(%INPUT A,%OUTPUT Y)
==== ecsc04/xtalkibm.txt ====
IBM PC X-talk.
Version 1.01 A. Howitt Sept. 1984.
Introduction :
The IBM PC X-talk program is a communications package using asynchronous
protocols to provide a utility for transferring files to and from the
Edinburgh Multi-Access System (EMAS) via a Terminal Control Processor
(TCP). The program was written originally for the Sirius computer by
Robin E. Day of Business Studies and hence the user interface is
similar on both machines.
In order to run the program DOS Version 2.00 operating system must be
used with the extended screen and keyboard control device driver. This
can be accomplished by placing the command :
==== ecsc04/balls.txt ====
%EXTERNALROUTINE BALL(%STRING(63) FILE)
%EXTERNALROUTINESPEC DEFINE(%STRING(63) S)
%ROUTINESPEC PRINT FORM(%STRING(63) S)
%ROUTINESPEC QSORT(%INTEGER A,B)
%ROUTINESPEC BWRITE(%INTEGER N,M)
%BYTEINTEGERARRAY FORM(1:80)
%CONSTINTEGER VCOL=54,MAXCOL=60,MAXVOTES=22
%INTEGERARRAY VOTE(10:MAXCOL)
%INTEGERARRAY TOT,RANK,ORDER(1:8,10:MAXCOL)
%INTEGERARRAY FORMS(1:8)
%INTEGERARRAY HASH(0:511)
%BYTEINTEGERARRAY FAC(0:511)
%INTEGER COL,TIT1,C1,C2,C3,C4,DEPT,F,H,I,J,K,U,V
%CONSTINTEGERARRAY TOTC(1:10)=4,4,4,1,4,2,3,1,4,5
%CONSTSTRING(3)%ARRAY TIT(10:MAXCOL)="L1 ","L2 ","L3 ","L4 ","L5 ",
"L6 ","L7 ","S1 ","S2 ","S3 ","S4 ","S5 ","S6 ","S7 ","E1 ","E2 ",
"E3 ","E4 ","E5 ","E6 ","E7 ","E8 ","E9 ","E10","C1 ","C2 ","C3 ",
"C4 ","C5 ","H1 ","H2 ","H3 ","H4 ","O1 ","O2 ","O3 ","O4 ","O5 ",
"O6 ","O7 ","O8 ","I1 ","I2 ","I3 ","I4 ","D1 "(2),"D2 "(2),"D3 "(2)
%CONSTSTRING(21)%ARRAY ABREV(10:MAXCOL)="ADA","ALGOL 68","APL","LISP",
"UCSD PASCAL","POP-2","PROLOG","BASIC","BCPL","COBOL","LOGO",
==== ecsc04/iwcs.txt ====
!!!!!!!!!!!!!!!!!!!!!!!!! ELEMENT DEFINITIONS !!!!!!!!!!!!!!!!!!!!!!!!!!
%ELEMENTDEF CTR(%INPUT C1,C2,R,S,%INPUTARRAY A(0:3),%OUTPUTARRAY Y(0:3))
%ELEMENTDEF SWITCH(%INPUTARRAY A(0:7),%OUTPUTARRAY Y(0:7))
%ELEMENTDEF INV(%INPUT A,%OUTPUT Y)
%ELEMENTDEF NAND2(%INPUT A,B,%OUTPUT Y)
%ELEMENTDEF NAND2OC(%INPUT A,B,%OUTPUT Y)
%ELEMENTDEF AND2(%INPUT A,B,%OUTPUT Y)
%ELEMENTDEF BUFF(%INPUT A,%OUTPUT Y)
%ELEMENTDEF NOR5(%INPUT A,B,C,D,E,%OUTPUT Y)
%ELEMENTDEF NAND8(%INPUTARRAY A(0:7),%OUTPUT Y)
%ELEMENTDEF MMVBR(%INPUT A1,A2,B,T9,T10,T11,%OUTPUT Q,QB)
%ELEMENTDEF DFF(%INPUT C,D,P,CL,%OUTPUT Q,QB)
%ELEMENTDEF MULT24(%INPUT S0,S1,%ARRAY A,B(0:3),%OUTPUTARRAY Y(0:3))
%ELEMENTDEF MULTB24(%INPUT S0,S1,%ARRAY A,B(0:3),%OUTPUTARRAY Y(0:3))
%ELEMENTDEF RAM8(%INPUT D,RW,CE1,CE2,CE3,%ARRAY A(0:7),%OUTPUT Y)
%ELEMENTDEF RAM10(%INPUT D,RW,CE,%ARRAY A(0:9),%OUTPUT Y)
%ELEMENTDEF COMP(%INPUT A,%OUTPUT Y)
==== ecsc04/as88.txt ====
(CIF 2.0);
(as88.CIF produced by Imp LAP V2.0 on 29-MAY-1981 at 16:11:16);
(Lambda = 300 hundredths of a micron);
DS 100 300 10; 9 gb;
L NM;
B 40 40 0 0;
L ND;
B 40 40 0 0;
L NC;
B 20 20 0 0;
DF;
DS 101 300 10; 9 rb;
L NM;
B 40 40 0 0;
L NP;
B 40 40 0 0;
L NC;
B 20 20 0 0;
DF;
==== ecsc04/iops.txt ====
0
BALR
BCTR
BFCR
NHR
CLHR
OHR
XHR
LHR
CHR
AHR
SHR
MHR
DHR
ACHR
SCHR
0(16)
BTBS
==== ecsc04/facs.txt ====
9EUAB
9YCNW
4EOPD
0
0
6YIAW
0
4EQMD
4EORE
0
0
0
0
0
4EOLZ
0
0
0
0
0
0
==== ecsc04/ilapincs.txt ====
!*********************************************************************
%constant %string (2) blue ="M", metal ="M", nm="M"
%constant %string (2) green ="D", diffusion="D", nd="D"
%constant %string (2) red ="P", poly ="P", np="P"
%constant %string (2) implant ="I", ni="I"
%constant %string (2) glass ="G", ng="G"
%constant %string (2) contact ="C", nc="C"
%constant %string (2) buried ="B", nb="B"
%constant %integer true = 0, false = 1
%external %routine %spec first cell number (%integer num)
%external %routine %spec set lambda (%integer l)
%external %routine %spec buried contacts
%external %routine %spec butting contacts
%external %string (2) %fn %spec contacts
%external %integer %map %spec ILAP control
%constant %integer no warnings = 1
%constant %integer monitor endsym = 2
%constant %integer give times = 4
%constant %integer merge cif = 8
==== ecsc04/m68ops.txt ====
CLIS 0 46
CREF 0 47
GEN 0 48
LOAD 0 49
LLEN 0 50
MC 0 51
MD 0 52
MEM 0 53
MEX 0 54
OBJ 0 55
REL 0 56
SEQ 0 57
SYM 0 58
UNA 0 59
LIST 0 60
ANY 0 61
COMM 0 16
BSZ 0 39
END 0 17
ENDC 0 18
ENDM 0 19
==== ecsc04/sup23wl.txt ====
PARM MAP
LINK
ECSC04.SUP23W
ECSC04.SEMA02Z
ERCC07.COM20Z
ERCC07.FAST17Z
ECSC17.OPER15Y
ERCS04.DPRINT24Z
ERCS04.TAPE58Z
ERCC35.GPC9Y
ERCC07.NDIAG06Z
ERCC20.COMMS29Z
.END
SUP23WZ
SUPFIX SUP23WZ,SUP23WT
==== ecsc04/sup23ws.txt ====
%LONGINTEGERFNSPEC RTDR(%INTEGERFN A)
%INTEGERFNSPEC REQUEST INPUT(%INTEGER OUTPUT POSN,TRIGGER POSN)
%INTEGERFNSPEC REQUEST OUTPUT(%INTEGER OUTPUT POSN,TRIGGER POSN)
%EXTERNALROUTINE SUP29
!-----------------------------------------------------------------------
%OWNSTRING(3) SUPID="23G"
!-----------------------------------------------------------------------
! STORE CONFIGURATION & EPAGE SIZE DECLARATIONS
! AMENDED 24/02/78 "SMACS","TRANS" & "KMON" INCLUDED
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 18D ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,KLOKCORRECT,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,PROCMON,DQADDR, %C
SACPORT,OCPPORT,ITINT,CONTYPEA,GPCCONFA,FPCCONFA,SFCCONFA, %C
BLKADDR,DPTADDR,SMACS,TRANS,%LONGINTEGER KMON, %C
%INTEGER SPDRQ,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,%INTEGERARRAY SP(0:13), %INTEGER %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
==== ecsc04/stackincs.txt ====
!*******************************************************************************
%routinespec stack(%string(31) name,%integer bits,words,%integername controlx,
controly,pushcony,popcony,phi1x,phi2x,phi3x,phi4x,%integerarrayname pushy,popy)
!*******************************************************************************
! Declarations for using ILAP included.
%constant %string (2) blue ="M", metal ="M", nm="M"
%constant %string (2) green ="D", diffusion="D", nd="D"
%constant %string (2) red ="P", poly ="P", np="P"
%constant %string (2) implant ="I", ni="I"
%constant %string (2) glass ="G", ng="G"
%constant %string (2) contact ="C", nc="C"
%constant %string (2) buried ="B", nb="B"
%constant %integer true = 0, false = 1
%external %integer %map %spec buried contacts
%external %routine %spec end symbol
%external %routine %spec symbol (%string (31) name)
%external %routine %spec box %alias "ILAPBOX" (%integer xl, yl, xu, yu)
%external %routine %spec polygon %alias "ILAPPOLYGON" (%real x, y)
==== ecsc04/sup24ns.txt ====
!
! TO MAKE S SERIES SUPERVISOR REQUIRES:-
! 1) UNCOMMENT S SERIES INTERUPT SEQUENCE AFTER IST4I: AND DISCARD
! P SERIES INTERUUPT CODE
! 2) REPLACE COMF BY S SERIES COM IN ERCC08.COMSF
! 3) CHANGE ALL CALL OF GPC TO DCU
! 4) UNCOMMENT ALL LINES STARTED BY !PSERIES
!
%INTEGERFNSPEC REQUEST INPUT(%INTEGER OUTPUT POSN,TRIGGER POSN)
%INTEGERFNSPEC REQUEST OUTPUT(%INTEGER OUTPUT POSN,TRIGGER POSN)
%INTEGERFNSPEC CHANGE CONTEXT
%LONGINTEGERFNSPEC RTDR(%INTEGERFN A)
%EXTERNALROUTINE SUP29
!-----------------------------------------------------------------------
%OWNSTRING(3) SUPID="24N"
!-----------------------------------------------------------------------
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 18D ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
==== ecsc04/qput12.txt ====
!
! Contact Alan Anderson ,ERCC before modifying this code
!
!
! Dec 6 Vsn 12 - Corrections for IMP on Perq
!
!Sept 8 Vsn 11 - Handles Imp data entries and references.!
!
!August 31 Vsn 10
! - Uses in store work file if big memory.
! - Ensures old object files taken care of.
!
!August 20 Vsn 9
! Lasttype becomes an own - P71
! Diagnostic records are moved out of qcodes into
! the unswopped area at the back of the file.
! For Fortran on Perq only, not IMP.
! Comment out decode sections. redtapelen->0.
!
!june 24 - Vsn 7 better error messages
!june 24 watch for adjacency and repitition in data statements
==== ecsc04/message.txt ====
==== ecsc04/perqimports.txt ====
!*
%CONSTINTEGER MODCOUNT=53
!*
%CONSTSTRING(15)%ARRAY MODULES(0:MODCOUNT) = %C
"F77INIT","F77DCTL","F77DIAG","F77IDIAG","F77FDIAG",
"F77RMESS","F77IO","F77FMT","F77INTRIN","F77AUX",
"F77MAP","F77CMESS","F77COMP","F77ANAL","F77ALLOC",
"F77GEN","F77CODE","F77QPUT","IMPSUP","F77QCODE",
"F77IOA","F77IOB","F77IOC","F77IOD","F77IOE",
"F77IOF","F77FILE","F77COPS","F77SUP","EXTHELP",
"F77REAL",
"ILAP4","CONTACT","PLA","XPLA","STACK","ROUTE","PAD",
"ANNOTATE","UTIL","DRC","PLACE","STABLE","PCOMPAT",
"IMPIOCP","IMPIOCPI","IMPREALFN",
"TRANSF","CPARSE","CIFSYS","CIFVIEW","PERQPIC","EDWIN","FIRST2"
!*
%CONSTINTEGER RCOUNT=394
!*
%CONSTSTRING(19)%ARRAY RNAMES(0:RCOUNT) = %C
"F77IOA","F77IOB","F77IOC","F77IOD","F77IOE","F77IOF",
"INITMAIN","INITGLA","f77IOCP","F77STOP","f77WRITE",
==== ecsc04/lay.txt ====
%BEGIN; !DOCUMENT LAYOUT PROGRAM
!SYMBOLIC CONSTANTS
%OWNINTEGER HALF=1
%OWNINTEGER LINEEXP=0
%OWNINTEGER EXPIND=0
%OWNINTEGER EXPBIT=1024
%OWNINTEGER EXPSH=0
%OWNINTEGER LINESUB=0
%OWNINTEGER SUBIND=0
%OWNINTEGER SUBBIT=2048
%OWNINTEGER SUBSHB=0
%OWNINTEGER SUBSHE=0
! PARA HACER LO DE LAS FIGURAS
%OWNINTEGER FIGURA=0
%OWNINTEGER SIN=1; !SOURCE INPUT STREAM
%OWNINTEGER ERR=0, DOC=2, SOUT=3; !OUTPUT STREAMS
%OWNINTEGER LBOUND=200; !LINE BUFF BOUND
%OWNINTEGER ABOUND=200; !ATOM BUFF BOUND
%OWNINTEGER SBOUND=200; !SOURCE LINE BUFF BOUND
%OWNINTEGER VBOUND=25; !VECTOR (EG TAB) BOUND
%OWNINTEGER ESCBIT=256, UNDBIT=128, CASEBIT=32
==== ecsc04/ilap4incs.txt ====
!******************************************************************************
!******************************************************************************
! specs in same order as in perqimports file
%integer %map %spec buried contacts { FALSE => pla & stacks with no buried contacts
%integer %map %spec ILAP control { This allows the control over ILAP
%routine %spec warn %alias "ILAPWARNING" (%string(255) s)
%routine %spec die %alias "ILAPDISASTER" (%string (255) s)
%routine %spec update mbb %alias "ILAPUPDATEMBB" (%integer xl, yl, xu, yu)
%routine %spec dump comment (%string (255) s)
%routine %spec symbol (%string (31) name)
%routine %spec external symbol spec (%string (31) name, %integer num, xl, yl, xu, yu)
%routine %spec symbol spec (%string (31) name, %integer xl, yl, xu, yu)
%routine %spec end symbol
%routine %spec ax (%integer u)
%routine %spec ay (%integer v)
%routine %spec axy (%real x, y)
%routine %spec dx (%integer u)
%routine %spec dy (%integer v)
%routine %spec dxy (%real dx, dy)
%routine %spec wirex (%integer x, y, l)
%routine %spec wirey (%integer x, y, l)
==== ecsc04/rom11s.txt ====
HRCSR=176510 ; HOST DEVICE NOS
HRBUF=176512
HXCSR=176514
HXBUF=176516
TRCSR=177560 ; TERMINAL DEVICE NOS
TRBUF=177562
TXCSR=177564
TXBUF=177566
MOV PC,SP ; SET UP SP TO BE BEFORE CODE
SUB #2,SP
CLR @#HRCSR ; CLEAR DEVICE CSR'S
CLR @#HXCSR
CLR @#TRCSR
CLR @#TXCSR
TR:TSTB @#TRCSR ; CHAR READY FROM TERMINAL ?
BPL HR
HX:TSTB @#HXCSR ; HOST TRANSMITTER READY ?
BPL HX
MOVB @#TRBUF,@#HXBUF ; TRANSMIT TERMINAL CHAR TO HOST
HR:TSTB @#HRCSR ; CHAR READY FROM HOST ?
==== ecsc04/pads.txt ====
!*******************************************************************************
! specs inserted in same order as in perqimports file
%routinespec padvdd
%routinespec padgnd
%routinespec padin(%integername padinx)
%routinespec padout(%integername padoutx)
%routinespec padclout(%integername padcloutx,padcloutclx)
%routinespec padinout(%integername padinoutinx,padinoutoutx,padinoutenx)
!*******************************************************************************
%constant %string (2) blue ="M", metal ="M", nm="M"
%constant %string (2) green ="D", diffusion="D", nd="D"
%constant %string (2) red ="P", poly ="P", np="P"
%constant %string (2) implant ="I", ni="I"
%constant %string (2) glass ="G", ng="G"
%constant %string (2) contact ="C", nc="C"
%constant %string (2) buried ="B", nb="B"
%constant %integer true = 0, false = 1
%external %string (2) %fn %spec contacts
%external %routine %spec end symbol
==== ecsc04/ilap4s.txt ====
!******************************************************************************
!******************************************************************************
! specs in same order as in perqimports file
%routine %spec buried contacts { pla & stacks with no burried contacts
%routine %spec butting contacts
%string (2) %fn %spec contacts
%integer %map %spec ILAP control { This allows the control over ILAP
%routine %spec warn %alias "ILAPWARNING" (%string(255) s)
%routine %spec die %alias "ILAPDISASTER" (%string (255) s)
%routine %spec update mbb %alias "ILAPUPDATEMBB" (%integer xl, yl, xu, yu)
%routine %spec dump comment (%string (255) s)
%routine %spec symbol (%string (31) name)
%routine %spec external symbol spec (%string (31) name, %integer num, xl, yl, xu, yu)
%routine %spec symbol spec (%string (31) name, %integer xl, yl, xu, yu)
%routine %spec end symbol
%routine %spec ax (%integer u)
%routine %spec ay (%integer v)
%routine %spec axy (%real x, y)
%routine %spec dx (%integer u)
%routine %spec dy (%integer v)
%routine %spec dxy (%real dx, dy)
==== ecsc04/pinrst.txt ====
AA01 #2907 BUS REC/DRVR
AA0101 GND
AA0103 DTB0 H
AA0102$ RD0 H
AA0107 DTB1 H
AA0106 BDAL1 L
AA0105 NC
AA0104 BDAL0 L
AA0109 DRTB L
AA0108$ RD1 H
AA0110 GND
==== ecsc04/macros.txt ====
$DEF,-,<$DEC,$BAR,-,$BIN,#1;,$BIN,#2;;;>;
$DEF,HANOI,<$#1,#1,#2,#3,$DEF,#1,<$HANOI,$-,#1,1;,#2,$-,$-,6,#2;,#3;;
#2 #3$HANOI,$-,#1,1;,$-,$-,6,#2;,#3;,#3;>;$DEF,0,< >;;>;
]
==== ecsc04/sema01s.txt ====
%RECORDFORMAT PARMF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6)
%EXTERNALROUTINESPEC PTREC(%RECORDNAME P)
%EXTRINSICLONGINTEGER KMON
%EXTERNALSTRING(15)%FNSPEC STRINT(%INTEGER N)
%EXTERNALSTRING(15)%FNSPEC HTOS(%INTEGER N,M)
%EXTERNALROUTINESPEC OPMESS(%STRING(63) S)
%EXTERNALROUTINESPEC MONITOR(%STRING(63) S)
%EXTERNALROUTINESPEC PON(%RECORDNAME P)
!-----------------------------------------------------------------------
%EXTERNALROUTINE SEMAPHORE(%RECORDNAME P)
%RECORDSPEC P(PARMF)
%OWNBYTEINTEGERARRAY HASH(0:31)=0(32)
! ARRAY DIMENSIONS ASSUME ONLY 'MAXPROCS' SEMAPHORES IN USE AT ONCE
%OWNINTEGERARRAY CELL(1:64)=0(64) ; ! (1:MAXPROCS)
%OWNBYTEINTEGERARRAY LINK(1:64)=2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,
17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,
40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,
63,64,1
%OWNINTEGER ASL=64
%INTEGERFNSPEC NEWCELL(%INTEGER S)
%INTEGERFNSPEC RETURN CELL(%INTEGER I)
==== ecsc04/stacks.txt ====
!*******************************************************************************
%routinespec stack(%string(31) name,%integer bits,words,%integername controlx,
controly,pushcony,popcony,phi1x,phi2x,phi3x,phi4x,%integerarrayname pushy,popy)
!*******************************************************************************
! Declarations for using ILAP included.
%constant %string (2) blue ="M", metal ="M", nm="M"
%constant %string (2) green ="D", diffusion="D", nd="D"
%constant %string (2) red ="P", poly ="P", np="P"
%constant %string (2) implant ="I", ni="I"
%constant %string (2) glass ="G", ng="G"
%constant %string (2) contact ="C", nc="C"
%constant %string (2) buried ="B", nb="B"
%constant %integer true = 0, false = 1
%external %string (2) %fn %spec contacts
%external %routine %spec end symbol
%external %routine %spec symbol (%string (31) name)
%external %routine %spec box %alias "ILAPBOX" (%integer xl, yl, xu, yu)
%external %routine %spec polygon %alias "ILAPPOLYGON" (%real x, y)
==== ecsc04/spls.txt ====
%EXTERNALROUTINE SPL
%ROUTINESPEC READ LINE
%INTEGERFNSPEC COMPARE(%INTEGER PSP)
%ROUTINESPEC SS
%ROUTINESPEC OUT(%INTEGER N)
%CONSTINTEGERARRAY PS(-1000:-906)= %C
M'SS',-993,'X',-977,'=',-969,10,-987,'-','>',-957,-930,10,
-983,-957,':',-1000,-981,'!',-978,'E',10,0,M'INDX',-972,'(',
-969,')',-970,-957,0,M'EXPR',-965,-964,-946,0,M'OPD',-960,'X',
-977,-958,-957,0,'N',-953,M'DIG',-952,0,M'RDIG',-948,M'DIG',
-952,-947,0,M'REXP',-942,-940,-964,-941,0,M'OP',-937,'+',-935,
'-',-933,'*',-931,'/',0,M'IF',-923,'I','F',-964,-921,-964,
-922,0,M'COMP',-918,'=',-916,'#',-913,'>','=',-911,'>',-908,
'<','=',-906,'<',0
%INTEGERARRAY A,PN,T(1:100)
%INTEGERARRAY CT,BTLAB,BTAD(0:100) ;! CONSTANT & BRANCH TABLES
%INTEGER I,J,TP,AP,CA,CTP,BTP
CA=0
CT(0)=0 ;! HOLE FOR 'X' BASE
CTP=1
==== ecsc04/temp.txt ====
0
0.0
0000.0
0001
1.0
34.3
+4735.3
-6.7
----2.5
(27)
-+-(-((+(0102.3))))
==== ecsc04/sema02s.txt ====
%RECORDFORMAT PARMF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6)
%EXTERNALROUTINESPEC PTREC(%RECORDNAME P)
%EXTRINSICLONGINTEGER KMON
%EXTERNALSTRING(15)%FNSPEC STRINT(%INTEGER N)
%EXTERNALSTRING(15)%FNSPEC HTOS(%INTEGER N,M)
%EXTERNALROUTINESPEC OPMESS(%STRING(63) S)
%EXTERNALROUTINESPEC MONITOR(%STRING(63) S)
%EXTERNALROUTINESPEC PON(%RECORDNAME P)
!-----------------------------------------------------------------------
%EXTERNALROUTINE SEMAPHORE(%RECORDNAME P)
%RECORDSPEC P(PARMF)
%OWNBYTEINTEGERARRAY HASH(0:31)=0(32)
! ARRAY DIMENSIONS ASSUME ONLY 'MAXPROCS' SEMAPHORES IN USE AT ONCE
%OWNINTEGERARRAY CELL(1:128)=0(128) ; ! (1:MAXPROCS)
%OWNBYTEINTEGERARRAY LINK(1:128)=2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,
17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,
40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,
63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,
85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,
105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,
121,122,123,124,125,126,127,128,1
==== ecsc04/cgwwpps.txt ====
1991 WIRES
A& : 0 0 0 0 0 0 1 2 2 2 2 2 1 2 0 2 2 2 1 2 2 2 2 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1
B& : 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 2 2 1 2 2 2 2 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 2 1 1 1 1 1 1
C& : 0 0 0 0 0 0 1 0 0 0 2 0 2 0 2 0 0 2 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 1 1 0 2 1 1
D& : 0 0 0 0 0 0 1 0 0 0 2 0 2 0 2 0 0 2 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 1 1 0 2 1 1
E& : 0 0 0 0 0 0 1 0 0 0 2 0 2 0 2 0 0 2 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 1 1 0 2 1 1
F& : 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 2 0 0 1 1 1 1 1 2 0 0 0 0 0 0 0 0
AA : 2 1 1 1 2 1 1 1 1 0 1 2 2 2 2 1 2 1 2 1 1 1 1 1 1 1 1 1 2 2 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
AB : 1 1 1 1 1 2 1 1 1 1 1 2 2 2 2 2 2 1 1 2 1 2 1 1 1 1 1 2 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
AC : 2 2 1 1 2 1 1 1 2 0 2 2 2 2 2 1 2 1 2 1 1 2 2 2 2 1 1 1 1 2 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
AD : 1 2 1 2 1 2 1 1 1 2 1 2 2 2 2 1 2 2 1 2 2 2 2 2 2 2 1 2 1 1 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
==== ecsc04/a68s.txt ====
%EXTERNALROUTINE A68(%STRING(63) SRCE)
%STRING(15) OBJ,LIST
%EXTERNALROUTINESPEC DEFINE(%STRING(63) S)
%CONSTINTEGER IHASH=59
%CONSTBYTEINTEGERARRAY HILINK(0: 58)= %C
2, 0, 5, 8, 10, 11, 12, 15, 0, 17, 21, 23, 26, 30, 32, 36,
0, 38, 41, 0, 42, 46, 50, 52, 53, 55, 57, 58, 0, 0, 60, 0,
62, 66, 69, 73, 76, 0, 77, 0, 79, 82, 85, 88, 0, 0, 0, 91,
92, 93, 95, 97, 100, 0, 102, 107, 110, 111, 113
%CONSTSTRING(4)%ARRAY INSTR(1:113)= %C
"PULB","BVS","BHI","SBA","DECA","DECB","CLRA","BLE","DES",
"CLRB","ANDA","ANDB","NOP","TAB","ORG","DEX","BITA","TPA","BSR",
"TSTA","BITB","TSTB","FDB","SEV","INS","INCA","PSHA","JMP","INCB",
"STS","LSRA","PSHB","LSRB","BPL","WAI","NEG","INX","BLS","STX",
"TST","BLT","COM","NEGA","TAP","CLC","BEQ","TSX","TBA","SBCA",
"NEGB","BMI","SBCB","ROL","RORA","ADCA","RORB","ADCB","CLI","LDS",
"ROR","SUBA","LDAA","LSR","ORAA","SUBB","LDAB","BCC","ASRA","ORAB",
"ASRB","END","BNE","LDX","CBA","CLR","BRA","TXS","DAA","CLV",
"BGE","EQU","ADDA","COMA","ADDB","RTI","BVC","ASL","COMB","CPX",
"ROLA","DEC","ROLB","ASR","BCS","CMPA","SWI","CMPB","SEC","RTS",
==== ecsc04/snoopys.txt ====
%EXTERNALROUTINE SNOOPY(%STRING(63) FILE)
%INTEGER I,J,K
%ROUTINESPEC ROWOUT(%INTEGERARRAYNAME L)
%OWNINTEGERARRAY L1(32:95)=X'00',X'18',X'36',X'14',X'3E',X'71',X'18',
X'18',X'0C',X'18',X'00',X'00',X'00',X'00',X'00',X'01',X'3E',X'0C',
X'3E',X'7F',X'60',X'7F',X'3E',X'7F',X'3E',X'3E',X'00',X'00',X'04',
X'00',X'20',X'3C',X'3E',X'08',X'7E',X'3E',X'7E',X'7F',
X'7F',X'3E',X'63',X'1E',X'07',X'63',X'60',X'41',X'43',X'3E',X'7E',
X'3E',X'7E',X'3E',X'3F',X'63',X'63',X'63',X'41',X'42',X'7F',
X'3C',X'00',X'3C',X'08',X'00'
%OWNINTEGERARRAY L2(32:95)=X'00',X'18',X'36',X'14',X'49',X'52',X'24',
X'18',X'18',X'0C',X'22',X'08',X'00',X'00',X'00',X'02',X'63',X'1C',
X'43',X'06',X'60',X'60',X'63',X'03',X'63',X'63',X'00',X'18',X'08',
X'00',X'10',X'66',X'41',X'14',X'63',X'63',X'63',X'60',
X'60',X'63',X'63',X'0C',X'03',X'66',X'60',X'63',X'63',X'63',X'63',
X'63',X'63',X'63',X'0C',X'63',X'63',X'63',X'63',X'42',X'02',
X'30',X'00',X'0C',X'1C',X'00'
%OWNINTEGERARRAY L3(32:95)=X'00',X'18',X'36',X'7F',X'48',X'74',X'18',
X'18',X'18',X'0C',X'14',X'08',X'00',X'00',X'00',X'04',X'63',X'0C',
X'06',X'0C',X'6C',X'60',X'60',X'06',X'63',X'63',X'18',X'18',X'10',
==== ecsc04/a68t.txt ====
JOE STAA FRED
FRED EQU $123
ORG 234
HARRY EQU FRED+*
EQU 999
ALEX EQU SID
ORG WHO
* COMMENT
STAB FRED WHAT WHAT WHAT ?
ZYX
BRA FRED
BEQ *+99
CLRA
TAB
ADDA JOE
STAA FRED
ADDB JOE,X
PETE EQU $ABCD
ADDA PETE
FCB 300
==== ecsc04/stables.txt ====
!***************************************************************************
%routinespec stable(%string(255) filespec,%integer diags)
%routinespec table(%string(255) filespec)
%routinespec table with diags(%string(255) filespec)
!***************************************************************************
!--------------------------------------------------------------------------!
! sTABLE: Routine to Convert Boolean Equations to TRUTH Table !
! !
! This routine is called by two ILAP utilities : TABLE as ILAP routine, !
! TABLE as a program. The program version gives more feedback to the user, !
! while the external routine only gives feedback on a fatal error. !
! !
! George A. McCaskill 20th August 1982 !
!--------------------------------------------------------------------------!
!%include "$ilap:.inc"
%constinteger true=0,false=1
!%include "plautils.inc"
%externalroutinespec fault %alias "ILAPDISASTER" (%string(255) s)
!*******************************************************************************
! specs for external routines in file IMPIOCPI
%externalroutinespec openinput(%integer stream,%string(100) filename)
==== ecsc04/rufc.txt ====
O
DD
D D
O OO
D O D
D O DD
OO D OOOO
D 9 D OO O
MMM D 9 OOOOO O
MMMMM MMM D OOOO
MM MM MOO D OO O
MM MM M OO D OOO O
MM MMM M OO D OOO OO
MM MMM OO D OOOOO
MMMMMMM OO D
MMMMMMMMM OO D
MMM D OO D
MM D OO D
==== ecsc04/csd083ds.txt ====
%EXTERNALREALFN DISTANCE(%STRING(8) NAM1,%INTEGER ROW1,COL1,PIN1,NOP1,%C
%REAL X1,Y1,%STRING(8) NAM2,%INTEGER ROW2,COL2,PIN2,NOP2,%REAL X2,Y2)
%RESULT=SQRT((X1-X2)**2+(Y1-Y2)**2)
%END
%EXTERNALROUTINE POSITION(%STRING(8) NAM,%INTEGER ROW,COL,PIN,NOP, %C
%REALNAME X,Y)
%CONSTREALARRAY CX(1:7)=0.6,1.5,2.4,3.3,4.2,5.1,6.0
%CONSTREALARRAY CY(1:8)=4.8,4.2,3.6,3.0,2.5,1.6,1.0,0.4
%IF NAM="C" %THEN %START
%IF PIN<=NOP//2 %THEN %START
X=CX(COL)+PIN/10
Y=CY(ROW)
%FINISH %ELSE %START
X=CX(COL)+(NOP-PIN+1)/10
%IF NOP>=24 %THEN Y=CY(ROW)-0.6 %ELSE Y=CY(ROW)-0.3
%FINISH
%RETURN
%FINISH
%IF NAM="A1" %THEN X=0 %AND Y=5.0-ROW/8 %AND %RETURN
%IF NAM="B1" %THEN X=0 %AND Y=2.25-ROW/8 %AND %RETURN
==== ecsc04/figs.txt ====
$A NLS=1
$A TAB=0,3,6,9,12,15,18,21,24,27,30
$B0
%SEMAPHORE MANAGERSEM
$B0
%CYCLING %SEMAPHORE MUTEX1, MUTEX3,R,W
$B2
%BEGIN %PROCESS
$B0
%CAPABILITY .PROCESS
$B0
%CYCLING %SEMAPHORE THE STATUS
$B0
%CYCLE
$B0
$A INDENT=2
READER ENTRY
$B0
%CYCLE
$A INDENT=3
.PROCESS = NEXT PROCESS( .PROCESS .LIST)
==== ecsc04/max86.txt ====
%ELEMENTDEF I8086(%INPUT RESET,READY,CLK,NMI,MX,TEST,XGND,GT0,GT1,INTR,&
%INOUTARRAY AD(0:15),%OUTPUT BHE,%OUTPUTARRAY S(0:2))
%ELEMENTDEF I8284(%INPUT RES,AEN1,AEN2,RDY1,RDY2,CSYNC,FC, &
%OUTPUT READY,CLK,PCLK,OSC,RESET,%INOUT X1,X2)
%ELEMENTDEF I8288(%INPUT CLK,AEN,CEN,IOB,%INPUTARRAY S(0:2), &
%OUTPUT ALE,DEN,DTR,AIOWC,IORC,AMWC,MRDC,INTA)
%ELEMENTDEF I8259(%INPUT CS,RD,WR,INTA,A0,%INPUTARRAY IR(0:7), &
%OUTPUT INT,EN,%INOUTARRAY D(0:7))
%ELEMENTDEF I8282(%INPUT STB,OE,%INPUTARRAY DI(0:7), &
%OUTPUTARRAY DO(0:7))
%ELEMENTDEF I8286(%INPUT T,OE,%INOUTARRAY A,B(0:7))
%ELEMENTDEF I2616(%INPUT CE,OE,VPP,%INPUTARRAY A(0:10), &
%OUTPUTARRAY O(0:7))
%ELEMENTDEF I2142(%INPUT CS1,CS2,WE,OD,%INPUTARRAY A(0:9), &
%INOUTARRAY IO(1:4))
%ELEMENTDEF I8205(%INPUT E1,E2,E3,A0,A1,A2,%OUTPUTARRAY O(0:7))
%ELEMENTDEF I8251(%INPUT CLK,RESET,CD,WR,RD,CS,TXC,RXC,CTS,RXD, &
%INPUTARRAY D(0:7),%OUTPUT TXD)
%ELEMENTDEF LDRIV(%INPUT A,B,C,D,VP12,VM12,%OUTPUT Y)
%ELEMENTDEF LREC(%INPUT EIA,MILP,MILM,HYST,STR,%OUTPUT Y)
==== ecsc04/skimps.txt ====
%BEGIN
%ROUTINESPEC READ SYM(%INTEGERNAME I)
%ROUTINESPEC READ PS
%ROUTINESPEC READ LINE
%INTEGERFNSPEC COMPARE(%INTEGER PSP)
%ROUTINESPEC SS
%ROUTINESPEC FAULT(%INTEGER A,B,C,D)
%ROUTINESPEC OUT(%INTEGER I)
%INTEGERFNSPEC CHNEXT
%INTEGERFNSPEC NEWCELL
%INTEGERFNSPEC RETURN CELL(%INTEGER I)
%ROUTINESPEC PRINT NAME(%INTEGER I)
%ROUTINESPEC PRINT LABEL(%INTEGER I)
%ROUTINESPEC SHOW TAGS
%INTEGER I,J,AP,APP,TP,ASL,BTN,CTN,CHP,FAULTS,NL,LEVEL,CA,COMP,SCF,PARS
%INTEGERARRAY PS(-1000:-620) ;! REDUCED PHRASE STRUCTURE
%INTEGERARRAY CHL,TAGL(0:255)
%INTEGERARRAY TAG,LINK(1:1000) ;! TAGS LISTS
%INTEGERARRAY A,PN,NP(1:200) ;! ANALYSIS RECORD
%INTEGERARRAY T(1:300) ;! SOURCE TEXT
==== ecsc04/max86ww.txt ====
%ELEMENTDEF I8086(%INPUT RESET,READY,CLK,NMI,MX,TEST,XGND,GT0,GT1,INTR,&
%INOUTARRAY AD(0:15),%OUTPUT GND,BHE,%OUTPUTARRAY S(0:2))
%ELEMENTDEF I8284(%INPUT RES,AEN1,AEN2,RDY1,RDY2,CSYNC,FC, &
%OUTPUT GND,READY,CLK,PCLK,OSC,RESET,%INOUT X1,X2)
%ELEMENTDEF I8288(%INPUT CLK,AEN,CEN,IOB,%INPUTARRAY S(0:2), &
%OUTPUT GND,ALE,DEN,DTR,AIOWC,IORC,AMWC,MRDC,INTA)
%ELEMENTDEF I8259(%INPUT CS,RD,WR,INTA,A0,%INPUTARRAY IR(0:7), &
%OUTPUT GND,INT,EN,%INOUTARRAY D(0:7))
%ELEMENTDEF I8282(%INPUT STB,OE,%INPUTARRAY DI(0:7), &
%OUTPUT GND,%OUTPUTARRAY DO(0:7))
%ELEMENTDEF I8286(%INPUT T,OE,%INOUTARRAY A,B(0:7))
%ELEMENTDEF I2616(%INPUT CE,OE,VPP,%INPUTARRAY A(0:10), &
%OUTPUT VCC,%OUTPUTARRAY O(0:7))
%ELEMENTDEF I2142(%INPUT CS1,CS2,WE,OD,%INPUTARRAY A(0:9), &
%INOUTARRAY IO(1:4))
%ELEMENTDEF I8205(%INPUT E1,E2,E3,A0,A1,A2,%OUTPUT GND, &
%OUTPUTARRAY O(0:7))
%ELEMENTDEF I8251(%INPUT CLK,RESET,CD,WR,RD,CS,TXC,RXC,CTS,RXD, &
%INPUTARRAY D(0:7),%OUTPUT GND,TXD)
%ELEMENTDEF LDRIV(%INPUT A,B,C,D,VP12,VM12,%OUTPUT Y)
==== ecsc04/ptests.txt ====
program test(input,output);
imports r123 from r123;
var i:long;
begin
r1(1234);
i:=999 ; r2(i) ; writeln(i) ;
r3('hi there!')
end.
==== ecsc04/three.txt ====
$A MARK=1
$A PAGENO=102
$A LEFT=0; LINE=69; PAGE=57
$A TOP=4; BOTTOM=9
$A NLS=2
$A TAB=1,7,13,19,25
$B5
$L1 CM
CHAPTER 3
$B5
$L1 CM
A FUNCTIONAL CAPABILITY SYSTEM.
$N
$L1 C
3.0.- INTRODUCTION.
$P3
@THE KERNEL ATTEMPTS TO PROVIDE A SYSTEM WIDE PROTECTION AND NAMING
MECHANISM BY OFFERING OPERATIONS TO CREATE CAPABILITIES FOR EXTENDED
TYPES OF OBJECTS. @HOWEVER, A COMMON PROPERTY OF CAPABILITY SYSTEMS
IS THE RELATIVE INDEPENDENCY OF THE DEFINITION OF A TYPE WITH RESPECT
==== ecsc04/four.txt ====
$A MARK=1
$A PAGENO=144
$A LEFT=0; LINE=69; PAGE=57
$A TOP=4; BOTTOM=9
$A NLS=2
$A TAB=1,7,13,19,25
$B5
$L1 CM
CHAPTER 4
$B5
$L1 CM
PROTECTED INTER-PROCESS SYNCHRONISATION.
$N
$L1 C
4.0- INTRODUCTION.
$P3
@THE COMMUNICATION BETWEEN PROCESSES CAN TAKE PLACE VIA THE
INTERCHANGE OF MESSAGES DEPOSITED WITHIN SHARED OPERAND OBJECTS. @THE
SYNCHRONISATION ACTIVITIES REQUIRED TO EFFECT THE COMMUNICATIONS CAN
==== ecsc04/drcs.txt ====
!*********************************************************************
! spec for routine in this file DRC
%routinespec check(%string(31) s,%byteintegerarrayname data, %c
%shortintegerarrayname tranids,%integer xmax,ymax,xorigin,yorigin)
!*********************************************************************
%constant %string (2) blue ="M", metal ="M", nm="M"
%constant %string (2) green ="D", diffusion="D", nd="D"
%constant %string (2) red ="P", poly ="P", np="P"
%constant %string (2) implant ="I", ni="I"
%constant %string (2) glass ="G", ng="G"
%constant %string (2) contact ="C", nc="C"
%constant %string (2) buried ="B", nb="B"
%constant %integer true = 0, false = 1
%external %routine %spec first cell number (%integer num)
%external %routine %spec set lambda (%integer l)
%external %string (2) %fn %spec contacts
%external %integer %map %spec ILAP control
%constant %integer no warnings = 1
%constant %integer monitor endsym = 2
==== ecsc04/routeincs.txt ====
!*******************************************************************************1
%recordformat port(%integer x,w)
%integerfnspec route(%string(31) name,%record(port)%arrayname a,b,
%integer n,%string(4) lay,%integer twid,tsep,sepn)
%routinespec croute(%string(31) name,%record(port)%arrayname a,b,
%integer n,ya,xb,%string(4) lay,%integer twid,tsep)
!*******************************************************************************
%constant %string (2) blue ="M", metal ="M", nm="M"
%constant %string (2) green ="D", diffusion="D", nd="D"
%constant %string (2) red ="P", poly ="P", np="P"
%constant %string (2) implant ="I", ni="I"
%constant %string (2) glass ="G", ng="G"
%constant %string (2) contact ="C", nc="C"
%constant %string (2) buried ="B", nb="B"
%constant %integer true = 0, false = 1
%external %integer %map %spec buried contacts
%external %routine %spec end symbol
%external %routine %spec symbol (%string (31) name)
%external %routine %spec box %alias "ILAPBOX" (%integer xl, yl, xu, yu)
==== ecsc04/iskimpps.txt ====
B<NAME>=1
B<CNST>=2
B<ASSI>=3
B<ASSR>=4
B<ASSX>=5
P<SS>= <UI><SEP>,
'%IF'<SC><COND>'%THEN'<UI><UIS><ELSE><SEP>,
<CNST>':'<SS>,
'%FINISH'<ELSE><SEP>,
'%INTEGER'<ARR><SEP>,
<RT><SPEC><NAME><FPP><SEP>,
'%END'<SEP>,
'%BEGIN'<SEP>,
'%ENDOFPROGRAM'<SEP>,
'*'<ASSI><FORM><SEP>,
'*'<+-\><CNST><BASE><SEP>,
'**'<CNST><SEP>,
<SEP>;
==== ecsc04/padincs.txt ====
!*******************************************************************************
! specs inserted in same order as in perqimports file
%routinespec padvdd
%routinespec padgnd
%routinespec padin(%integername padinx)
%routinespec padout(%integername padoutx)
%routinespec padclout(%integername padcloutx,padcloutclx)
%routinespec padinout(%integername padinoutinx,padinoutoutx,padinoutenx)
!*******************************************************************************
%constant %string (2) blue ="M", metal ="M", nm="M"
%constant %string (2) green ="D", diffusion="D", nd="D"
%constant %string (2) red ="P", poly ="P", np="P"
%constant %string (2) implant ="I", ni="I"
%constant %string (2) glass ="G", ng="G"
%constant %string (2) contact ="C", nc="C"
%constant %string (2) buried ="B", nb="B"
%constant %integer true = 0, false = 1
%external %integer %map %spec buried contacts
%external %routine %spec end symbol
==== ecsc04/annotincs.txt ====
!*******************************************************************************
%routine %spec crest (%integer xsize, ysize)
%routine %spec text %alias "ILAPTEXT" (%string (31) name,
%string (255) text, %integer xsize, ysize)
!*******************************************************************************
! Declarations for using ILAP included.
%constant %string (2) blue ="M", metal ="M", nm="M"
%constant %string (2) green ="D", diffusion="D", nd="D"
%constant %string (2) red ="P", poly ="P", np="P"
%constant %string (2) implant ="I", ni="I"
%constant %string (2) glass ="G", ng="G"
%constant %string (2) contact ="C", nc="C"
%constant %string (2) buried ="B", nb="B"
%constant %integer true = 0, false = 1
%external %routine %spec first cell number (%integer num)
%external %routine %spec set lambda (%integer l)
%external %integer %map %spec buried contacts
%external %integer %map %spec ILAP control
==== ecsc04/splstemp.txt ====
%EXTERNALROUTINE SPL
%ROUTINESPEC READ LINE
%INTEGERFNSPEC COMPARE(%INTEGER PSP)
%ROUTINESPEC SS
%ROUTINESPEC OUT(%INTEGER N)
%CONSTINTEGERARRAY PS(-1000:-906)= %C
M'SS',-993,'X',-977,'=',-969,10,-987,'-','>',-957,-930,10,
-983,-957,':',-1000,-981,'!',-978,'E',10,0,M'INDX',-972,'(',
-969,')',-970,-957,0,M'EXPR',-965,-964,-946,0,M'OPD',-960,'X',
-977,-958,-957,0,'N',-953,M'DIG',-952,0,M'RDIG',-948,M'DIG',
-952,-947,0,M'REXP',-942,-940,-964,-941,0,M'OP',-937,'+',-935,
'-',-933,'*',-931,'/',0,M'IF',-923,'I','F',-964,-921,-964,
-922,0,M'COMP',-918,'=',-916,'#',-913,'>','=',-911,'>',-908,
'<','=',-906,'<',0
%INTEGERARRAY A,PN,T(1:100)
%INTEGERARRAY CT,BTLAB,BTAD(0:100) ;! CONSTANT & BRANCH TABLES
%INTEGER I,J,TP,AP,CA,CTP,BTP
CA=0
CT(0)=0 ;! HOLE FOR 'X' BASE
CTP=1
==== ecsc04/figs.html ====
<html><head></head><body><pre>
<em>semaphore</em> managersem
<em>cycling</em> <em>semaphore</em> mutex1, mutex3,r,w
<em>begin</em> <em>process</em>
<em>capability</em> PROCESS
<em>cycling</em> <em>semaphore</em> the status
<em>cycle</em>
reader entry
<em>cycle</em>
PROCESS = next process( PROCESS LIST)
<em>if</em> PROCESS # NULL <em>then</em> <em>start</em>
<em></em>p (the status)
<em>if</em> PROCESS_STATUS = 'ready' <em>then</em> <em>start</em>
PROCESS_STATUS = 'running'
<em>finish</em> <em>else</em> <em>start</em>
PROCESS = DUMMY
<em>finish</em>
==== ecsc04/plaincs.txt ====
!*******************************************************************************
%routine %spec pla (%string (31) name,%integer ins,outs,feeds,prods,
%integerarrayname and,or,%integername phi1y,phi2y, %integerarrayname inx,outx)
!*******************************************************************************
%constant %string (2) blue ="M", metal ="M", nm="M"
%constant %string (2) green ="D", diffusion="D", nd="D"
%constant %string (2) red ="P", poly ="P", np="P"
%constant %string (2) implant ="I", ni="I"
%constant %string (2) glass ="G", ng="G"
%constant %string (2) contact ="C", nc="C"
%constant %string (2) buried ="B", nb="B"
%constant %integer true = 0, false = 1
%external %integer %map %spec buried contacts
%external %routine %spec end symbol
%external %routine %spec symbol (%string (31) name)
%external %routine %spec box %alias "ILAPBOX" (%integer xl, yl, xu, yu)
%external %routine %spec polygon %alias "ILAPPOLYGON" (%real x, y)
%external %routine %spec wirex (%integer x, y, l)
%external %routine %spec wirey (%integer x, y, l)
==== ecsc04/ilaps_ilap4.txt ====
%const %string (31) VERSION = "Imp LAP Version 4.1 17-Sep-82"
!******************************************************************************
!******************************************************************************
!*** ***
!*** This is ILAP ***
!*** or ***
!*** Imp LAP ***
!*** ***
!******************************************************************************
!******************************************************************************
!
!
! INTRODUCTION:
!
! ILAP is a series of external Imp77 procedures which allow the
! creation of syntactically correct CIF2.0 representations of integrated
! circuit layouts. By embedding a graphics capability into a high level
! language, the use of control structures and parameterised symbols is
! made available to the designer.
!
!
==== ecsc04/dcapdoc.txt ====
$A INVERT=0; JUST=1; UNDSH='|'; PAGENO=1; UND='~'; CAPSH='|'; CAPSHO='|'
$A MARK=2
$L5UM
DCAP : David's Circuit Assignment Program
$P
DCAP provides a method of description of circuits, the assignment of
functional elements to integrated circuit chips and their layout on
circuit boards. It creates data structures corresponding to the
descriptions in a file which can then be used for further processing.
At the present state of development of the system, this
consists of producing a wire-wrap schedule for the circuit but
it is also intended that it should be used for other stages in the
design and construction process such as printed circuit board design,
production of circuit schematics by plotter etc.
$P
Rather than use a description of the circuit in terms of functional
==== ecsc04/dcapas.txt ====
%EXTERNALROUTINE DCAPA(%STRING(63) PAR)
%ROUTINESPEC READ LINE
%INTEGERFNSPEC COMPARE(%INTEGER PSP)
%ROUTINESPEC SS
%ROUTINESPEC FILL(%SHORTINTEGERARRAYNAME D,%INTEGER FROM,TO,VAL)
%SHORTINTEGERARRAYFORMAT SF(0:32759)
%SHORTINTEGERARRAYNAME S,ED,AD,BD,CD
%SHORTINTEGERNAME SP,EDP,ADP,BDP
%SHORTINTEGERARRAY A,NP(1:1004)
%BYTEINTEGERARRAY T(1:1000)
%SHORTINTEGERARRAY IV(0:72) ;! ALLOWS 8 NESTING LEVELS
%SHORTINTEGER IVP
%INTEGER AP,TP,I,J,DEF,FIRSTINFO,FAULTS,ELNUM,DUMMY,DCAPFAD
%OWNINTEGER LASTLINK=11
%EXTERNALROUTINESPEC DEFINE(%STRING(63) S)
%SYSTEMROUTINESPEC OUTFILE(%STRING(15) S,%INTEGER LENGTH,MAX,PROT, %C
%INTEGERNAME CONAD,FLAG)
%STRING(63) P,Q,R,TAPE
%OWNSHORTINTEGERARRAY PS(-1000:-518)= %C
-997,-933,-522,-993,-678,-811,-522,-988, 1, 58,-852,-522,
==== ecsc04/impiospecs.txt ====
!*******************************************************************************
! specs for external routines in file IMPIOCPI
%externalroutinespec openinput(%integer stream,%string(100) filename)
%externalintegerfnspec instream
%externalstring(100)%fnspec infilename(%integer stream)
%externalroutinespec closeinput(%integer stream)
%externalroutinespec openoutput(%integer stream,%string(100) filename)
%externalintegerfnspec outstream
%externalstring(100)%fnspec outfilename(%integer stream)
%externalroutinespec closeoutput(%integer stream)
!*******************************************************************************
==== ecsc04/ilaps_route.txt ====
%include "ilap_inc"
%externalintegerfn route(%string(31) name,%record(port)%arrayname a,b,
%integer n,%string(4) lay,%integer twid,tsep,sepn)
%externalstring(63)%fnspec itos(%integer n,p)
%external %routine %spec die %alias "ILAPDISASTER" (%string (255) mess)
%routine %spec fault (%string (255) mess)
%integerarray ap(1:n,1:n)
%integerarray apl(1:n)
%integer i,j,k,l,p,q,x,sep,tws,sx
%for p=1,1,n %cycle
%if a(p)_w<twid %then fault("A port ".itos(p,0)." too narrow")
%if b(p)_w<twid %then fault("B port ".itos(p,0)." too narrow")
%repeat
%for p=1,1,n-1 %cycle
%if a(p)_x+a(p)_w+tsep>a(p+1)_x %then fault("A ports ".itos(p,0). %c
" and ".itos(p+1,0)." too close")
%if b(p)_x+b(p)_w+tsep>b(p+1)_x %then fault("B ports ".itos(p,0). %c
" and ".itos(p+1,0)." too close")
%repeat
tws=twid+tsep
==== ecsc04/hashs.txt ====
%EXTERNALROUTINE HASH(%STRING(63) S)
%EXTERNALROUTINESPEC DEFINE(%STRING(63) S)
%STRING(4)%ARRAY INSTR(1:171)
%BYTEINTEGERARRAY ITYPE(1:171)
%BYTEINTEGERARRAY ICODE(1:171)
%BYTEINTEGERARRAY ILINK(1:171)
%CONSTINTEGER HASHSIZE=63
%BYTEINTEGERARRAY HILINK(0:HASHSIZE)
%INTEGER I,J,K,L,TYPE,CODE
%STRING(15) T,U
%CONSTSTRING(1)%ARRAY H(0:15)="0","1","2","3","4","5","6","7",
"8","9","A","B","C","D","E","F"
S->T.(",").U
DEFINE("STREAM01,".T)
SELECT INPUT(1)
DEFINE("STREAM02,".U)
%CYCLE I=0,1,HASHSIZE
HILINK(I)=0
%REPEAT
%CYCLE L=1,1,171
==== ecsc04/pins.txt ====
AA01 #2907 BUS REC/DRVR
AA0101 GND
AA0103 DTB0 H
AA0102$ RD0 H
AA0107 DTB1 H
AA0106 BDAL1 L
AA0105 NC
AA0104 BDAL0 L
AA0109 DRTB L
AA0108$ RD1 H
AA0110 GND
==== ecsc04/ilaptests.txt ====
%include "ilapincs"
%begin
initialise("ilaptest")
symbol("sym1")
etpx("pd",1,2,3)
endsymbol
drcon
symbol("sym2")
dtdy("pu",4,5,6)
endsymbol
%endofprogram
==== ecsc04/routes.txt ====
!*******************************************************************************1
%recordformat port(%integer x,w)
%integerfnspec route(%string(31) name,%record(port)%arrayname a,b,
%integer n,%string(4) lay,%integer twid,tsep,sepn)
%routinespec croute(%string(31) name,%record(port)%arrayname a,b,
%integer n,ya,xb,%string(4) lay,%integer twid,tsep)
!*******************************************************************************
%constant %string (2) blue ="M", metal ="M", nm="M"
%constant %string (2) green ="D", diffusion="D", nd="D"
%constant %string (2) red ="P", poly ="P", np="P"
%constant %string (2) implant ="I", ni="I"
%constant %string (2) glass ="G", ng="G"
%constant %string (2) contact ="C", nc="C"
%constant %string (2) buried ="B", nb="B"
%constant %integer true = 0, false = 1
%external %string (2) %fn %spec contacts
%external %routine %spec end symbol
%external %routine %spec symbol (%string (31) name)
%external %routine %spec box %alias "ILAPBOX" (%integer xl, yl, xu, yu)
==== ecsc04/xtalk.txt ====
Pascal Compiler IV.13 c6t-4 2/ 5/85 Page 1
1 0 0:d 1 { $L WORK:TTY.A.LIST.TEXT}
2 0 0:d 1 {$S+} {SWAPPING MODE FOR MORE SYMBOL TABLE SPACE}
3 0 0:d 1
4 2 1:d 1 PROGRAM TTY;
5 2 1:d 1
6 2 1:d 1 {PROGRAM TO ALLOW MICRO TO ACT AS A TERMINAL TO A REMOTE}
7 2 1:d 1 {AND TO TRANSFER FILES BETWEEN THE MICRO AND THE REMOTE }
8 2 1:d 1
9 2 1:d 1 Uses
10 2 1:d 1 {-----------------------------------------------------------------------------}
11 2 1:d 1 {TTY.UNIT.G - unit include file for general - 1-Feb-83 }
12 2 1:d 1 {-----------------------------------------------------------------------------}
13 2 1:d 1
14 2 1:d 1 {$U *system.library } ScreenOps
15 2 1:d 1
16 2 1:d 1 {-----------------------------------------------------------------------------}
==== ecsc04/pr123s.txt ====
module r123;
exports
procedure r1(i:integer);
procedure r2(var i:integer);
procedure r3(s:string[31]);
private
procedure r1(i:integer);
begin ; end.
procedure r2(var i:integer);
begin ; end.
procedure r3(s:string);
begin ; end.
==== ecsc04/splits.txt ====
%EXTERNALROUTINE SPLIT (%STRING(63) CMD)
!
!
!***************************************************
!* SIMPLE PRECEDENCE LANGUAGE INTERACTIVE TESTER *
!* S P L I T *
!* *
!* NIGEL A CONLIFFE JUNE 1974 *
!* OCTOBER 1975 *
!***************************************************
!
!
!
%CONSTSTRING (40) TITLE='S P L I T : V1 R4'
!
%RECORDFORMAT F1 (%STRING(20) NAME,%BYTEINTEGER TYPE)
%RECORDARRAY SYMTAB (-100:-1) (F1) ;! SYMBOL TABLE
;! TYPE=0 FOR NON TERMINAL
;! TYPE=1 FOR TERMINAL
;! TYPE=2 FOR DISTINGUISHED SYMBOL
%INTEGERARRAY PS(1:1000) ;! PHRASE STRUCTURE
==== ecsc04/annotates.txt ====
!*******************************************************************************
%routine %spec crest (%integer xsize, ysize)
%routine %spec text %alias "ILAPTEXT" (%string (31) name,
%string (255) text, %integer xsize, ysize)
%routine %spec TEXT LAYER (%string (7) LAYER)
!*******************************************************************************
! Declarations for using ILAP included.
%constant %string (2) blue ="M", metal ="M", nm="M"
%constant %string (2) green ="D", diffusion="D", nd="D"
%constant %string (2) red ="P", poly ="P", np="P"
%constant %string (2) implant ="I", ni="I"
%constant %string (2) glass ="G", ng="G"
%constant %string (2) contact ="C", nc="C"
%constant %string (2) buried ="B", nb="B"
%constant %integer true = 0, false = 1
%external %routine %spec first cell number (%integer num)
%external %routine %spec set lambda (%integer l)
%external %string (2) %fn %spec contacts
==== ecsc04/xplas.txt ====
!***********************************************************************
! specs for externalroutines in this file
%routine %spec tpla ( %string (31) symbol name, %string (127) file,
%integer %name phi1y, phi2y, %integer %array %name inx, outx )
%routine %spec epla ( %string(31) symbol name, %string(127) file,
%integer %name phi1y, phi2y, %integer %array %name inx, outx )
%routine %spec rom ( %string(31) symbol name, %string(127) file,
%integer %name phi1y, phi2y, %integer %array %name inx, outx )
!***********************************************************************
%external %routine %spec fault %alias "ILAPDISASTER" (%string (255) mess)
%externalroutinespec prompt(%string(63) s)
!*******************************************************************************
! specs for external routines in file IMPIOCPI
%externalroutinespec openinput(%integer stream,%string(100) filename)
%externalintegerfnspec instream
%externalstring(100)%fnspec infilename(%integer stream)
%externalroutinespec closeinput(%integer stream)
%externalroutinespec openoutput(%integer stream,%string(100) filename)
%externalintegerfnspec outstream
%externalstring(100)%fnspec outfilename(%integer stream)
%externalroutinespec closeoutput(%integer stream)
==== ecsc04/ilaps_contacts.txt ====
! The ILAP contact symbols
%include "ilap_inc"
! There now follows some tables which define the symbols -
! The max length of each contact symbol is -
%const %integer sym len = 4
%const %integer subc start = 1
%const %integer dm start = subc start + sym len * 5
%const %integer pm start = dm start + sym len * 5
%const %integer pdms start = pm start + sym len * 5
%const %integer pdmn start = pdms start + sym len * 5
%const %integer pdmw start = pdmn start + sym len * 5
%const %integer pdme start = pdmw start + sym len * 5
%const %integer pdbns start = pdme start + sym len * 5
%const %integer pdbew start = pdbns start + sym len * 5
%const %integer pdcn start = pdbew start + sym len * 5
%const %integer pdcs start = pdcn start + sym len * 5
%const %integer pdce start = pdcs start + sym len * 5
%const %integer pdcw start = pdce start + sym len * 5
==== ecsc04/skimpais.txt ====
%CONTROL 0
%BEGIN
%INTEGERARRAY RMN,REG(0:15)
%INTEGERARRAY IMN(1:31)
%INTEGERARRAY LMN,LAD(1:20)
%INTEGERARRAY R(1:4000)
%INTEGERARRAY S(0:16383)
%INTEGER LP,RP,SP,I,J,K,L,M,N,F,MR,TR,ST,CT
%ROUTINESPEC READMN(%INTEGERNAME MN,NEXT)
%ROUTINESPEC FAULT(%INTEGER I,J,K,L)
%ROUTINESPEC OUT(%INTEGER I)
%ROUTINESPEC DUMP
%SWITCH INS(1:31)
%SWITCH IOR(0:10)
%EXTERNALROUTINESPEC DEFINE(%STRING(63) S)
RMN(0)=M'BR0' ; RMN(1)=M'BR1' ; RMN(2)=M'BR2'
RMN(3)=M'BR3' ; RMN(4)=M'BR4' ; RMN(5)=M'BR5'
RMN(6)=M'BR6' ; RMN(7)=M'BR7' ; RMN(8)=M'BR8'
RMN(9)=M'BR9' ; RMN(10)=M'BR10'; RMN(11)=M'BR11'
RMN(12)=M'BR12'; RMN(13)=M'WK' ; RMN(14)=M'STP'
==== ecsc04/spice1.txt ====
.TITLE INVERTER + PASS TRANSISTOR + LOAD
MPD 4 3 0 2 MEHN L=6U W=12U
MPU 1 4 4 2 MDEP L=24U W=6U
MPA 4 5 6 2 MEHN L=6U W=36U
R1 6 7 2.5K
C1 7 0 0.9P
VDD 1 0 5
VBULK 2 0 -3
VIN 3 0 0
VPASS 5 0 PWL(0N 0V 5N 5V)
.TRAN 1N 100N
.PRINT TRAN V(4) V(5) V(6) V(7)
.PLOT TRAN V(4) V(5) V(6) V(7)
.MODEL MEHN NMOS (LEVEL=2 TOX=7E-8 NSUB=3.5E14
+NSS=-1.882E11 XJ=0.75U LD=0.8 NGATE=1E23 GAMMA=0.43
+NFS=1E11 UO=825 UCRIT=6E4 UEXP=0.25 UTRA=0.5
+CBD=12.33E-5 CBS=12.33E-5 JS=2E-5)
.MODEL MDEP NMOS (LEVEL=2 TOX=7E-8 NSUB=3.5E14
+NSS=7.72E11 NGATE=1E23 XJ=0.75U LD=0.8
+UO=825 CBD=12.33E-5 CBS=12.33E-5 JS=2E-5)
.END
==== ecsc04/spice2.txt ====
.TITLE INVERTER + PASS TRANSISTOR + LOAD
MPD 4 3 0 2 MEHN L=6U W=48U
MPU 1 4 4 2 MDEP L=6U W=6U
MPA 4 5 6 2 MEHN L=6U W=36U
R1 6 7 1.25K
C1 7 0 0.45P
R2 7 8 1.25K
C2 8 0 0.45P
VDD 1 0 5
VBULK 2 0 -3
VIN 3 0 0
VPASS 5 0 PWL(0N 0V 5N 5V)
.TRAN 5N 500N
.PRINT TRAN V(5) V(8)
.PLOT TRAN V(5) V(8)
.MODEL MEHN NMOS (LEVEL=2 TOX=7E-8 NSUB=3.5E14
+NSS=-1.882E11 XJ=0.75U LD=0.8 NGATE=1E23 GAMMA=0.43
+NFS=1E11 UO=825 UCRIT=6E4 UEXP=0.25 UTRA=0.5
+CBD=12.33E-5 CBS=12.33E-5 JS=2E-5)
.MODEL MDEP NMOS (LEVEL=2 TOX=7E-8 NSUB=3.5E14
+NSS=7.72E11 NGATE=1E23 XJ=0.75U LD=0.8
==== ecsc04/skimpas.txt ====
%EXTERNALINTEGERARRAY A(1:255)
! INITIALISATION FOR I/O ROUTINES
%EXTERNALBYTEINTEGERARRAY NAMED(1:1024)=10,'R','E','A','D','S','Y','M',
'B','O','L',10,'N','E','X','T','S','Y','M','B','O','L',10,'S','K',
'I','P','S','Y','M','B','O','L',11,'P','R','I','N','T','S','Y','M',
'B','O','L',5,'S','P','A','C','E',6,'S','P','A','C','E','S',7,'N',
'E','W','L','I','N','E',8,'N','E','W','L','I','N','E','S',7,'N','E',
'W','P','A','G','E',4,'R','E','A','D',5,'W','R','I','T','E',0(930)
%EXTERNALINTEGERARRAY NAMEDLINK(0:255)=0,76,0(12),89,0(54),84,0(118),
52,0(11),1,12,23,34,0(4),67,0(23),46,0(5),59,0(17)
%EXTERNALINTEGERARRAY TAGLINK(0:255)=0,13,0(12),16,0(54),14,0(118),8,
0(11),1,3,4,5,0(4),11,0(23),7,0(5),10,0(17)
%EXTERNALINTEGERARRAY TAG(1:512)=X'40100001',X'01010002',X'41000002',
X'40000003',X'40100004',X'01010002',X'40000005',X'40100006',
X'01010002',X'40000007',X'40100008',X'01010002',X'40000009',
X'4010000A',X'11010002',X'4020000B',X'01010002',X'01010003',0(494)
%EXTERNALINTEGERARRAY LINK(1:512)=2,0,0,0,6,0,0,9,0,0,12,0,0,
15,0,17,18,0,0(494)
%EXTERNALINTEGER NAMEDP=95
%EXTERNALINTEGER TAGASL=19
==== ecsc04/spice3.txt ====
.TITLE INVERTER + PASS TRANSISTOR + LOAD
MPD 4 3 0 2 MEHN L=6U W=12U
MPU 1 4 4 2 MDEP L=24U W=6U
MPA 4 5 6 2 MEHN L=6U W=36U
R1 6 7 1.25K
C1 7 0 0.45P
R2 7 8 1.25K
C2 8 0 0.45P
VDD 1 0 5
VBULK 2 0 -3
VIN 3 0 PWL(0N 0V 225N 0V 230N 4V)
VPASS 5 0 PWL(0N 0V 5N 5V 195N 5V 200N 0V 245N 0V 250N 5V)
.TRAN 5N 500N
.PRINT TRAN V(5) V(8)
.PLOT TRAN V(5) V(8)
.MODEL MEHN NMOS (LEVEL=2 TOX=7E-8 NSUB=3.5E14
+NSS=-1.882E11 XJ=0.75U LD=0.8 NGATE=1E23 GAMMA=0.43
+NFS=1E11 UO=825 UCRIT=6E4 UEXP=0.25 UTRA=0.5
+CBD=12.33E-5 CBS=12.33E-5 JS=2E-5)
.MODEL MDEP NMOS (LEVEL=2 TOX=7E-8 NSUB=3.5E14
+NSS=7.72E11 NGATE=1E23 XJ=0.75U LD=0.8
==== ecsc04/hanoi#cif.txt ====
(CIF 2.0);
(Produced by Imp LAP V1.11 on 22-DEC-1980 at 15:06:51);
(FAB nMOS, Lambda = 300 hundredths of a micron);
DS 100 300 10; 9 gb;
L NM;
B 40 40 0 0;
L ND;
B 40 40 0 0;
L NC;
B 20 20 0 0;
DF;
DS 101 300 10; 9 rb;
L NM;
B 40 40 0 0;
L NP;
B 40 40 0 0;
L NC;
B 20 20 0 0;
DF;
==== ecsc04/skimpbs.txt ====
%EXTRINSICINTEGERARRAY A(1:255)
%EXTRINSICINTEGERARRAY TAGLINK(0:255)
%EXTRINSICINTEGERARRAY TAG(1:512)
%EXTRINSICINTEGERARRAY LINK(1:512)
!-----------------------------------------------------------------------
%EXTERNALROUTINESPEC EXPR(%INTEGER EXPRP)
%EXTERNALINTEGERFNSPEC COND(%INTEGER CONDP,TLABEL,FLABEL)
%EXTERNALSTRING(255)%FNSPEC STRINT(%INTEGER N,P)
%EXTERNALINTEGERFNSPEC GETWORK
%EXTERNALROUTINESPEC RETURNWORK(%INTEGER WORK)
%EXTERNALROUTINESPEC CLEARWORK
%EXTERNALINTEGERFNSPEC NEWTAG
%EXTERNALROUTINESPEC PUSHTAG(%INTEGER IDENT,FORM,TYPE,DIM,LEVEL,RAD)
%EXTERNALROUTINESPEC POPTAGS
%EXTERNALINTEGERFNSPEC GETLABEL(%INTEGER CONSTP)
%EXTERNALROUTINESPEC FILLLABEL(%INTEGER LABEL)
%EXTERNALINTEGERFNSPEC FILLBRANCH(%INTEGER LABEL)
%EXTERNALROUTINESPEC POPLABELS
%EXTERNALINTEGERFNSPEC NEXTPLABEL
%EXTERNALROUTINESPEC DUMP(%STRING(7) OPN,REG,BASE,%INTEGER DISP)
==== ecsc04/pg7879.txt ====
==== ecsc04/two.txt ====
$A MARK=1
$A PAGENO=42
$A LEFT=0; LINE=69; PAGE=57
$A TOP=4; BOTTOM=9
$A NLS=2
$A TAB=1,7,13,19,25
$B5
$L1 CM
CHAPTER 2.
$B5
$L1 CM
OVERVIEW OF CAPABILITY BASED PROTECTION.
$N
2.0.- .INTRODUCTION.
$P2
@IN THE PRESENT WORK WE ARE CONCERNED WITH PROTECTION MECHANISMS
WITH SPECIAL EMPHASIS ON THE PROVISION OF A SUITABLE SKELETON FOR THE
SUPPORT OF USER AVAILABLE SYNCHRONISING PRIMITIVES.
$P
==== ecsc04/iotests.txt ====
!*******************************************************************************
! specs for external routines in file IMPIOCPI
%externalroutinespec openinput(%integer stream,%string(100) filename)
%externalintegerfnspec instream
%externalstring(100)%fnspec infilename(%integer stream)
%externalroutinespec closeinput(%integer stream)
%externalroutinespec openoutput(%integer stream,%string(100) filename)
%externalintegerfnspec outstream
%externalstring(100)%fnspec outfilename(%integer stream)
%externalroutinespec closeoutput(%integer stream)
!*******************************************************************************
%begin
%integer i
openoutput(1,"out1")
select output(1)
%cycle
read symbol(i)
print symbol(i)
%repeat %until i='*'
close output(1)
open input(2,"in2")
==== ecsc04/imcs.txt ====
* 05-039 R05 (+ JJ MODS)
* MODEL 70 MICRO-PROGRAM
* NOV 2, 1971
*
INITAL DC 0 TRAP
L RAL,L(INTENT) POWER UP
*
*
*PHASE 1 ENTRY POINT, INDEXED RS
AMODRS A MDR,MDR FORM EFFECTIVE OPERAND
D PC+CLR GO TO PHASE 2
*
*
*PHASE 1 ENTRY POINT, UNINDEXED RX
NMODRX L MAR,MDR 'A' TO MAR
D PC+MR+CLR FETCH OP, GO TO PHASE 2
*
*
*PHASE 1 ENTRY POINT, INDEXED RX
AMODRX A MAR,MDR 'A+(X2)' TO MAR
==== ecsc04/skimpcs.txt ====
%EXTRINSICINTEGERARRAY A(1:255)
%EXTRINSICINTEGER CONDOPT
!-----------------------------------------------------------------------
%EXTERNALROUTINESPEC EXPR(%INTEGER EXPRP)
%EXTERNALROUTINESPEC DUMP(%STRING(7) OPN,REG,BASE,%INTEGER DISP)
%EXTERNALROUTINESPEC FILLLABEL(%INTEGER LABEL)
%EXTERNALINTEGERFNSPEC FILLBRANCH(%INTEGER LABEL)
%EXTERNALINTEGERFNSPEC NEXTPLABEL
%EXTERNALROUTINESPEC FAULT(%STRING(63) MESS)
!-----------------------------------------------------------------------
%EXTERNALINTEGER CONDFLAG=0
!-----------------------------------------------------------------------
%EXTERNALINTEGERFN COND(%INTEGER CONDP,TLABEL,FLABEL)
%ROUTINESPEC PROCESSCOND(%INTEGER CONDP)
%ROUTINESPEC TEST(%INTEGER LTESTP)
%ROUTINESPEC CONDREST(%INTEGER CONDRESTP)
%ROUTINESPEC STORE(%INTEGER TESTP,LEVEL,ANDOR)
%ROUTINESPEC SHOW(%STRING(7) AN,%INTEGERARRAYNAME A,%INTEGER P)
%CONSTSTRING(3)%ARRAY TRUE(1:6)="BZ","BNZ","BNG","BL","BNL","BG"
%CONSTSTRING(3)%ARRAY FALSE(1:6)="BNZ","BZ","BG","BNL","BL","BNG"
==== ecsc04/cs3os2.txt ====
Computer Science 3
Operating Systems Exercise 2
Task : To simulate and monitor the behaviour of a single process using
the EMAS scheduling strategies. The time-slice reference string
of a typical process is given in file ECSC04.MOND100. A category
table might be:
1 2 3 4 5 6 7 8 9
pages 24 24 24 48 48 48 72 72 72
time-slices 10 20 40 10 20 40 10 20 40
priority 1 2 3 2 3 4 3 4 5
more pages 4 5 6 7 8 9 7 8 9
less pages 1 2 3 1 2 3 4 5 6
more time 2 3 3 5 6 6 8 9 9
less time 1 1 2 4 4 5 7 7 8
Output monitoring information during the course of the simulation
==== ecsc04/skimpds.txt ====
%EXTRINSICINTEGERARRAY A(1:255)
%EXTRINSICBYTEINTEGERARRAY NAMED(1:1024)
%EXTRINSICINTEGERARRAY NAMEDLINK(0:255)
%EXTRINSICINTEGERARRAY TAGLINK(0:255)
%EXTRINSICINTEGERARRAY TAG(1:512)
%EXTRINSICINTEGERARRAY LINK(1:512)
%EXTRINSICINTEGERARRAY NEXTRAD(0:15)
%EXTRINSICSTRING(4)%ARRAY DISPLAY(0:15)
%EXTRINSICINTEGER TAGASL,LEVEL,TAGSOPT,NEXTCAD,NAMEDP
!-----------------------------------------------------------------------
%EXTERNALROUTINESPEC EXPR(%INTEGER EXPRP)
!-----------------------------------------------------------------------
%OWNINTEGERARRAY WORKLIST(0:15)=0(16)
%OWNINTEGERARRAY NAMELIST(0:15)=0(16)
%OWNINTEGERARRAY BRANCHLIST(0:15)=0(16)
%OWNINTEGERARRAY STARTLIST(0:15)=0(16)
%OWNINTEGERARRAY COT(0:127)
%OWNINTEGER COTP,FAULTS,PARAMS
!-----------------------------------------------------------------------
%EXTERNALSTRING(255)%FN STRINT(%INTEGER N,P)
==== ecsc04/dcapps.txt ====
P<SS> = <LI><SEP>,
<ELAS><DEF><SEP>,
<NAME>':'<NIS><SEP>,
'%CHIPDEF'<NAME>'('<CFP><RCFP>')='<CT><RCT><SEP>,
'%BOARDDEF'<NAME>'('<BFP><RBFP>')<-%ASSEMBLY('<NAME>')'<SEP>,
'%END'<%DEF><SEP>,
<TEXT><SEP>;
P<LI> = <TLST>'->'<TLST>,
'%FOR'<NAME>'='<EXPR>','<EXPR>','<EXPR>'%DO['<LIN><RLIN>']',
<NAME>'('<EXPL>','<EXPL>')<-%CHIP('<NAME>')<-'<ELT><RELT>,
<NAME>'('<EXPL>')<-'<NAME><INDX>,
'!'<TEXT>;
P<TLST> = <NIS><RNIS>,'%N','%GND','%VCC';
P<INDX> = '('<EXPR>')',;
P<SNAM> = '.'<NAME><INDX>,;
P<NIS> = <NAME><INDX><SNAM>;
P<RNIS> = ','<NIS><RNIS>,;
P<ELT> = <NAME><INDX><ENAM>,'%N';
P<ENAM> = '.'<NAME><INDX><ENAM>,;
P<RELT> = ','<ELT><RELT>,;
==== ecsc04/skimpes.txt ====
%EXTRINSICINTEGERARRAY A(1:255)
%EXTRINSICINTEGERARRAY TAGLINK(0:255)
%EXTRINSICINTEGERARRAY TAG(1:512)
%EXTRINSICSTRING(4)%ARRAY DISPLAY(0:15)
%EXTRINSICINTEGER LEVEL,CONDFLAG,EXPROPT
!-----------------------------------------------------------------------
%EXTERNALSTRING(255)%FNSPEC STRINT(%INTEGER N,P)
%EXTERNALSTRING(8)%FNSPEC STRHEX(%INTEGER N)
%EXTERNALROUTINESPEC FAULT(%STRING(63) S)
%EXTERNALSTRING(255)%FNSPEC NAME(%INTEGER IDENT)
%EXTERNALROUTINESPEC DUMP(%STRING(7) OPN,REG,BASE,%INTEGER DISP)
%EXTERNALINTEGERFNSPEC GETWORK
%EXTERNALROUTINESPEC RETURNWORK(%INTEGER WORK)
%EXTERNALROUTINESPEC PROC(%INTEGER AP)
%EXTERNALROUTINESPEC ARRAY(%INTEGER AP)
%EXTERNALINTEGERFNSPEC GETCOTI(%INTEGER CONST)
!-----------------------------------------------------------------------
%EXTERNALROUTINE EXPR(%INTEGER EXPRP)
%INTEGERFNSPEC TOTREE(%INTEGER EXPRP)
%ROUTINESPEC EVALUATE(%INTEGER NODEP)
==== ecsc04/csd083s.txt ====
%EXTERNALREALFN DISTANCE(%STRING(8) NAM1,%INTEGER ROW1,COL1,PIN1,NOP1,%C
%REAL X1,Y1,%STRING(8) NAM2,%INTEGER ROW2,COL2,PIN2,NOP2,%REAL X2,Y2)
%RESULT=SQRT((X1-X2)**2+(Y1-Y2)**2)
%END
%EXTERNALROUTINE POSITION(%STRING(8) NAM,%INTEGER ROW,COL,PIN,NOP, %C
%REALNAME X,Y)
%CONSTREALARRAY CY(1:7)=-0.6,-1.5,-2.4,-3.3,-4.2,-5.1,-6.0
%CONSTREALARRAY CX(1:8)=4.8,4.2,3.6,3.0,2.5,1.6,1.0,0.4
%IF NAM="C" %THEN %START
%IF PIN<=NOP//2 %THEN %START
Y=CY(COL)-PIN/10
X=CX(ROW)
%FINISH %ELSE %START
Y=CY(COL)-(NOP-PIN+1)/10
%IF NOP>=24 %THEN X=CX(ROW)-0.6 %ELSE X=CX(ROW)-0.3
%FINISH
%RETURN
%FINISH
%IF NAM="A1" %THEN Y=0 %AND X=5.0-ROW/8 %AND %RETURN
%IF NAM="B1" %THEN Y=0 %AND X=2.25-ROW/8 %AND %RETURN
==== ecsc04/wires.txt ====
BE41 #25LS2519
......
DC33 #25LS2539
......
CG17 #25LS2569
CG27 #25LS2569
DA41 #25LS2569
......
AA01 #2907 BUS REC/DRVR
AC01 #2907 BUS REC/DRVR
AE01 #2907 BUS REC/DRVR
==== ecsc04/cgpins.txt ====
A&07 GND
A&08 GND
A&09 GND
A&10 GND
A&11 GND
A&12 GND
A&13 GND
A&14 GND
A&16 GND
A&17 GND
A&18 GND
A&19 GND
A&20 GND
A&21 GND
A&22 GND
A&23 GND
A&30 BDAL15 L
A&31 BDAL14 L
A&32 BDAL13 L
A&33 BDAL12 L
==== ecsc04/ilaps_pla.txt ====
%include "ilap_inc"
%external %routine pla (%string (31) name,%integer ins,outs,feeds,prods,
%integerarrayname and,or,%integername phi1y,phi2y, %integerarrayname inx,outx)
%integer infs,outfs ;! ins & outs plus feeds
%routinespec define plain
%integer plainmaxy,plainphi1y,plainvddy,plaingndy, plax, play
%routinespec define plaout
%integer plaoutmaxy,plaoutphi2y,plaoutvddy,plaoutgndy
%routinespec define pdp (%string(11)%name name,%integer n)
%routinespec define pup (%string(11)%name name,%integer l)
%integer plapupmaxy
%integer plainxb,plainyb ;! bases of input buffers
%integer plaoutxb,plaoutyb ;! bases of output buffers
%integer andpdpyb ;! y-base of and-plane poly/diff/poly lines
%integer orpdpxb ;! x-base of or-plane poly/diff/poly lines
%integer orpupyb ;! y-base of or-plane pull-up pairs
%integer eprods,eoutfs ;! prods and outfs evened up
%string(11) andpdp,orpdp ;! for poly/diff/poly symbol names
%string(11) andpup,orpup ;! for pullup+metal symbol names
%constinteger extragnd=8
%externalstring(11)%fnspec itos(%integer n,m)
==== ecsc04/contactincs.txt ====
!******************************************************************************
! specs in same order as in perqimports file
%routine %spec subc (%integer x, y)
%routine %spec dm (%integer x,y)
%routine %spec pm (%integer x,y)
%routine %spec pdms (%integer x, y)
%routine %spec pdmn (%integer x, y)
%routine %spec pdmw (%integer x, y)
%routine %spec pdme (%integer x, y)
%routine %spec pdbns (%integer x, y)
%routine %spec pdbew (%integer x, y)
%routine %spec pdcn (%integer x, y)
%routine %spec pdcs (%integer x, y)
%routine %spec pdce (%integer x, y)
%routine %spec pdcw (%integer x, y)
%routine %spec pdbn (%integer x, y)
%routine %spec pdbs (%integer x, y)
%routine %spec pdbe (%integer x, y)
%routine %spec pdbw (%integer x, y)
!******************************************************************************
%constant %string (2) blue ="M", metal ="M", nm="M"
==== ecsc04/ilaps_inc.txt ====
! Declarations for using ILAP included.
%end %of %list
%constant %string (2) blue ="M", metal ="M", nm="M"
%constant %string (2) green ="D", diffusion="D", nd="D"
%constant %string (2) red ="P", poly ="P", np="P"
%constant %string (2) implant ="I", ni="I"
%constant %string (2) glass ="G", ng="G"
%constant %string (2) contact ="C", nc="C"
%constant %string (2) buried ="B", nb="B"
%constant %integer true = 0, false = 1
%external %routine %spec first cell number (%integer num)
%external %routine %spec set lambda (%real lambda)
%external %integer %map %spec buried contacts
%external %integer %map %spec ILAP control
%constant %integer no warnings = 1
%constant %integer monitor endsym = 2
%constant %integer give times = 4
%constant %integer merge cif = 8
==== ecsc04/results.txt ====
USER BALLOT RESULTS
=================== Votes Cast ( Rank in Column
Medicine Science Social Others ERCC Under- Staff & Overall
& Vet Med Science grads PGs
L1 : ADA : 11 (27) 127 (11) 18 (19) 33 (17) 81 (1) 55 (3) 215 (12) 270 (7)
L2 : ALGOL 68 : 17 (20) 28 (34) 6 (33) 4 (40) 17 (29) 5 (28) 67 (37) 72 (36)
L3 : APL : 11 (28) 21 (38) 5 (34) 13 (35) 14 (31) 3 (34) 61 (38) 64 (38)
L4 : LISP : 1 (40) 32 (33) 6 (32) 1 (43) 2 (44) 13 (18) 29 (39) 42 (39)
L5 : UCSD PASCAL : 35 (6) 134 (9) 31 (9) 59 (7) 35 (14) 36 (8) 258 (6) 294 (6)
L6 : POP-2 : 0 (44) 5 (43) 0 (41) 7 (37) 6 (39) 2 (37) 16 (42) 18 (42)
L7 : PROLOG : 0 (45) 15 (40) 0 (45) 3 (41) 4 (41) 5 (29) 17 (41) 22 (40)
S1 : BASIC : 25 (10) 63 (23) 17 (21) 37 (13) 9 (36) 12 (21) 139 (23) 151 (23)
S2 : BCPL : 2 (36) 4 (44) 0 (40) 2 (42) 4 (42) 2 (35) 10 (44) 12 (43)
S3 : COBOL : 2 (38) 28 (35) 3 (36) 28 (20) 25 (21) 17 (15) 69 (35) 86 (34)
S4 : LOGO : 1 (43) 6 (42) 0 (43) 0 (44) 0 (45) 4 (33) 3 (45) 7 (45)
S5 : PASCAL : 17 (18) 96 (18) 39 (7) 36 (14) 22 (23) 37 (5) 173 (20) 210 (16)
S6 : SIMULA : 2 (39) 7 (41) 0 (44) 0 (45) 11 (34) 1 (40) 19 (40) 20 (41)
==== ecsc04/arrays.txt ====
%end%of%list
%const%byte%array tbox (0:63)=
223, 139, 219, 138, 209, 128, 208, 128,
1, 139, 1, 139, 0, 128, 0, 128,
1, 0, 0, 0, 0, 0, 0, 0,
1, 139, 1, 139, 0, 128, 0, 128,
1, 0, 1, 0, 209, 128, 209, 128,
0, 0, 0, 0, 0, 128, 0, 128,
1, 0, 1, 0, 209, 128, 209, 128,
1, 139, 1, 139, 209, 251, 209, 251
%const%short%array fbox (0:8191)=
-11809, -32629, 0, 0, 0, 0, 0, 0,
-12031, -32768, 0, 0, 0, 0, 0, 0,
1, -32629, 0, 0, 0, 0, 0, 0,
0, -32768, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
==== ecsc04/serc.txt ====
$A just=1;invert=0;dcpi=12;und='~';undsh='~';cap='~';capsh='~';line=84
$a left=6;page=63
$L1uM
Proposal for a Research Grant
$l9m
"Investigations into an Environment for the
Design of Very Large Scale Integrated Circuits"
D. J. Rees
December 1981
$L1U
Introduction
$P
Integrated circuit fabrication technology now allows very large scale designs to
be manufactured. This is the so-called VLSI technology that has provided a
quantitative leap in complexity from LSI. Integrated circuits have recently been
announced that contain many tens of thousands of transistors and the next decade
==== ecsc04/impiocps.txt ====
module impiocp;
exports
imports stream from stream;
procedure ioinit;
procedure openin(s:integer;var filename:pathname);
function instrm:integer;
procedure closein(s:integer);
procedure openout(s:integer;var filename:pathname);
function outstrm:integer;
procedure closeout(s:integer);
function iocpp(ep,n,x:integer):integer;
exception streamerror(s:integer);
exception openerror(s:integer);
exception closeerror(s:integer);
exception eoferror(s:integer);
exception iocperror(ep:integer);
private
const
maxstreams=3;
==== ecsc04/plas.txt ====
!*******************************************************************************
%routine %spec pla (%string (31) name,%integer ins,outs,feeds,prods,
%integerarrayname and,or,%integername phi1y,phi2y, %integerarrayname inx,outx)
!*******************************************************************************
%constant %string (2) blue ="M", metal ="M", nm="M"
%constant %string (2) green ="D", diffusion="D", nd="D"
%constant %string (2) red ="P", poly ="P", np="P"
%constant %string (2) implant ="I", ni="I"
%constant %string (2) glass ="G", ng="G"
%constant %string (2) contact ="C", nc="C"
%constant %string (2) buried ="B", nb="B"
%constant %integer true = 0, false = 1
%external %string (2) %fn %spec contacts
%external %routine %spec end symbol
%external %routine %spec symbol (%string (31) name)
%external %routine %spec box %alias "ILAPBOX" (%integer xl, yl, xu, yu)
%external %routine %spec polygon %alias "ILAPPOLYGON" (%real x, y)
%external %routine %spec wirex (%integer x, y, l)
%external %routine %spec wirey (%integer x, y, l)
==== ecsc04/ilaps_noca.txt ====
%external %routine analyse circuit (%integer a, b, c)
select output (0)
print string ("No Circuit analysis available at present")
newline
%stop
%end
%end %of %file
==== ecsc04/one.txt ====
$A MARK=1
$A PAGENO=12
$A LEFT=0; LINE=69; PAGE=57
$A TOP=4; BOTTOM=9
$A NLS=2
$A TAB=1,7,13,19,25
$A TAB=4,7,10,13,16,19
$B5
$L1 CM
CHAPTER 1
$B5
$L1 CM
THE SYNCHRONISATION PROBLEM.
$N
$L1 C
1.0.- INTRODUCTION.
$P3
@THE PURPOSE OF THIS CHAPTER IS TO ANALIZE THE INTRICACIES ARISING
IN THE DESIGN AND IMPLEMENTATION OF FREELY AVAILABLE @INTER-PROCESS
==== ecsc04/qlformats.txt ====
!* l2fm - code offset became rt 25/mar/82
!------------------------------------------------
! PERQ OBJECT RECORD FORMATS
!----------------------------------------------
! RED TAPE AT START OF CODE SEGMENT
%RECORDFORMAT CHFM (%HALFINTEGER DICT,RTS,LDATA,MAP)
%RECORD(CHFM) %NAME CH
! LDATA LISTHEADS
%HALFINTEGERARRAYFORMAT LDATAFM(0:10)
%HALFINTEGERARRAYNAME LDATA
! PROCEDURE ENTRY POINT
%RECORDFORMAT L1FM (%HALFINTEGER LINK,PROPS,RTNO,DIAGDISP,%STRING(31) NAME)
==== ecsc04/app.txt ====
$L1 CM
APPENDIX 1
$B5
$L1 C
A HIGHLY CONCURRENT SHEDULING ALGORITHM.
$P3
@AS MENTIONED IN SECTION 4.2, THE STATUS MARK OF A PROCESS IS
INTERPRETED AS:
$A INDENT=2
.PROCESS$_STATUS = 1 MEANS 'READY'
$B0
.PROCESS$_STATUS = 0 MEANS 'RUNNING'
$A INDENT=0
@FURTHER VALUES OF THE STATUS MARK AND THEIR INTERPRETATION ARE GIVEN
IN THE SEQUEL.
$P
@IN THE FOLLOWING, WE EMPLOY THE NOTATION:
$A INDENT=2
.ITS S,LABEL $C+3 [S=S-1 ; %IF S<0 %THEN -> LABEL]
$B0
==== ecsc04/asst11g.txt ====
%EXTERNALROUTINE ASS11(%STRING (63)FILES)
%DYNAMICINTEGERFNSPEC TIME40(%INTEGER IN)
%DYNAMICINTEGERFNSPEC TIME03(%INTEGER IN)
%EXTERNALINTEGERFNSPEC SMADDR(%INTEGER CHAN, %INTEGERNAME LENGTH)
%EXTERNALROUTINESPEC DEFINE(%STRING (63)S)
%DYNAMICSTRING (8) %FN %SPEC DATE
%EXTERNALROUTINESPEC DUMP BIN(%HALFINTEGERARRAYNAME CODE, %C
%INTEGER START, FINISH, %STRINGNAME T, %INTEGERNAME FLAG)
!!
%INTEGERFNSPEC BREAK UP(%BYTEINTEGERARRAYNAME LNE)
%ROUTINESPEC OCTAL(%INTEGER N)
%ROUTINESPEC CODE
%INTEGERFNSPEC AN OPND(%INTEGER TYPE, %STRING (80)OPND)
%ROUTINESPEC SET DEF(%INTEGER DEF, OPN)
%ROUTINESPEC USER DEF(%STRINGNAME OPND)
%ROUTINESPEC LIST LINE(%INTEGER LEN)
%INTEGERFNSPEC TEST REG(%STRING (80)REG)
%INTEGERFNSPEC VALUE(%STRINGNAME OPND)
==== ecsc04/pmons.txt ====
%EXTERNALROUTINE PMONENABLE(%STRING(63) S)
%EXTERNALINTEGERFNSPEC DMONENABLE(%STRING(11) FILE,%INTEGER KB)
%STRING(11) FILE
%INTEGER KB
S->FILE.(",").S
KB=0
%UNTIL S="" %THEN KB=10*KB+CHARNO(S,1)-'0' %AND %C
S->(FROMSTRING(S,1,1)).S
WRITE(DMONENABLE(FILE,KB),1)
%END
!-----------------------------------------------------------------------
%EXTERNALROUTINE PMONDISABLE(%STRING(255) S)
%EXTERNALROUTINESPEC DMONDISABLE
DMONDISABLE
%END
!-----------------------------------------------------------------------
%EXTERNALROUTINE PMONON(%STRING(255) S)
%EXTERNALROUTINESPEC DMONON
DMONON
%END
==== ecsc04/start.txt ====
SETMODE V=ON
==== ecsc04/places.txt ====
!******************************************************************
! spec for external routine in this file
%recordformat connf(%integer type,side,c,w,%string(4) layer)
%routine %spec place pads ( %string(31) chipname ,cellname,
%record(connf)%array %name ports, %integer n )
!******************************************************************
!-----------------------------------------------------------------!
! !
! PLACE PADS: an ILAP routine to distribute pads around a design. !
! !
! George A. McCaskill 26th August 1982 !
! "" Revised: 10th September 1982 !
! "" Revisited: 22nd September 1982 !
!-----------------------------------------------------------------!
!*********************************************************************
%constant %string (2) blue ="M", metal ="M", nm="M"
%constant %string (2) green ="D", diffusion="D", nd="D"
%constant %string (2) red ="P", poly ="P", np="P"
%constant %string (2) implant ="I", ni="I"
%constant %string (2) glass ="G", ng="G"
==== ecsc04/ilapcomp.txt ====
perqimp ilap4s,ilap4,ilap4l
perqimp contacts,contact,contactl
perqimp plas,pla,plal
perqimp stacks,stack,stackl
perqimp routes,route,routel
perqimp pads,pad,padl
perqimp annotates,annotate,annotatel
perqimp utils,util,utill
perqimp impiocpis,impiocpi,impiocpil
perqimp imprealfns,imprealfn,imprealfnl
perqimp drcs,drc,drcl
perqimp places,place,placel
perqimp stables,stable,stablel
perqimp pcompats,pcompat,pcompatl
perqimp xplas,xpla,xplal
==== ecsc04/bib.txt ====
$A JUST=0
$A NLS=1; SGAP=1
$A PAGENO=0; TAB=1,10; INDENT=2
$L1 CM
BIBLIOGRAPHY.
$B5
$C-9 [@BE74] @BELPAIRE , .G. @WILMOTTE , .J. .P.
$B0
.'A SEMANTIC APPROACH TO THE THEORY OF PARALLEL PROCESSES.',
@PROC. @INTERNATIONAL @COMPUTING @SYMP., 1973, @DAVOS, @NORTH
@HOLLAND @PUB. @CO., @JAN. 1974.
$B1 $C-9 [@BE74] @BELPAIRE , .G. @WILMOTTE , .J. .P.
$B0
'@AN IMPLEMENTATION OF THE @D-OPERATIONS.', @SEMINAIRE .IRIA,
STRUCTURE ET PROGRAMMATION DES CALCULATEURS, 1974, PP.
13-17.
$B1
$C-9 [@BL67] @BLACKNEY , .G. .R. @CUDNEY , .L. .F. @EICKHOLM , .C. .R.
$B0
' .IBM 9020 MULTIPROCESSOR SYSTEM.', .IBM @SYSTEMS @JOURNAL,
==== ecsc04/skimpps.txt ====
B<NAME>=1
B<CNST>=2
P<SS>= <UI><SEP>,
'%IF'<SC><COND>'%THEN'<UI><ELSE><SEP>,
<CNST>':'<SS>,
'%FINISH'<ELSE><SEP>,
'%INTEGER'<ARR><SEP>,
<RT><SPEC><NAME><FPP><SEP>,
'%END'<SEP>,
'%BEGIN'<SEP>,
'%ENDOFPROGRAM'<SEP>,
<SEP>;
P<UI>= <NAME><APP><ASS>,
'->'<CNST>,
'%START',
'%RETURN',
'%RESULT='<+-\><OPD><EXPR>,
==== ecsc04/nocas.txt ====
%external %routine analyse circuit (%integer a, b, c)
select output (0)
print string ("No Circuit analysis available at present")
newline
%stop
%end
%end %of %file
==== ecsc04/m68decs.txt ====
%CONSTBYTEINTEGERARRAY HASHLINK(0: 58)= %C
2, 0, 5, 8, 10, 11, 12, 15, 0, 17, 21, 23, 26, 30, 32, 36,
0, 38, 41, 0, 42, 46, 50, 52, 53, 55, 57, 58, 0, 0, 60, 0,
62, 66, 69, 73, 76, 0, 77, 0, 79, 82, 85, 88, 0, 0, 0, 91,
92, 93, 95, 97, 100, 0, 102, 107, 110, 111, 113
%CONSTSTRING(4)%ARRAY INSTR(1:113)= %C
"PULB","BVS","BHI","SBA","DECA","DECB","CLRA","BLE","DES",
"CLRB","ANDA","ANDB","NOP","TAB","ORG","DEX","BITA","TPA","BSR",
"TSTA","BITB","TSTB","FDB","SEV","INS","INCA","PSHA","JMP","INCB",
"STS","LSRA","PSHB","LSRB","BPL","WAI","NEG","INX","BLS","STX",
"TST","BLT","COM","NEGA","TAP","CLC","BEQ","TSX","TBA","SBCA",
"NEGB","BMI","SBCB","ROL","RORA","ADCA","RORB","ADCB","CLI","LDS",
"ROR","SUBA","LDAA","LSR","ORAA","SUBB","LDAB","BCC","ASRA","ORAB",
"ASRB","END","BNE","LDX","CBA","CLR","BRA","TXS","DAA","CLV",
"BGE","EQU","ADDA","COMA","ADDB","RTI","BVC","ASL","COMB","CPX",
"ROLA","DEC","ROLB","ASR","BCS","CMPA","SWI","CMPB","SEC","RTS",
"JSR","EORA","FCB","EORB","FCC","INC","ABA","STAA","ASLA","BGT",
"STAB","ASLB","SEI","PULA"
%CONSTBYTEINTEGERARRAY ICODE(1:113)= %C
X'33',X'29',X'22',X'10',X'4A',X'5A',X'4F',X'2F',X'34',
X'5F',X'84',X'C4',X'01',X'16',X'00',X'09',X'85',X'07',X'8D',
==== ecsc04/sup23al.txt ====
LINK
ECSC04.SUP23A
ECSC04.SEMA02Z
ERCC07.COM18Z
ERCC07.FAST13Z
ERCC07.PPROF01Y
ERCC07.OPER14Z
ERCS04.DPRINT21Z
ERCS04.TAPE58Z
ERCC35.GPC6Y
ERCC07.NDIAG06Z
ERCC20.COMMS24Z
.END
SUP23AZ
SUPFIX SUP23AZ,SUP23AT
==== ecsc04/cgplaces.txt ====
A&07 #CONNECTOR/16
A&0701 GND
A&0702 GND
A&0703 GND
A&0704 GND
A&0705 GND
A&0706 GND
A&0707 GND
A&0708 GND
A&0709 BDAL8 L
A&0710 BDAL9 L
A&0711 BDAL10 L
A&0712 BDAL11 L
A&0713 BDAL12 L
A&0714 BDAL13 L
A&0715 BDAL14 L
A&0716 BDAL15 L
A&16 #CONNECTOR/16
A&1601 GND
==== ecsc04/sup23as.txt ====
%EXTERNALROUTINE SUP29
!-----------------------------------------------------------------------
%OWNSTRING(3) SUPID="23A"
!-----------------------------------------------------------------------
! STORE CONFIGURATION & EPAGE SIZE DECLARATIONS
! AMENDED 24/02/78 "SMACS","TRANS" & "KMON" INCLUDED
! COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 18A ONWARDS
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,KLOKCORRECT,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,PROCMON,DQADDR, %C
SACPORT,OCPPORT,ITINT,CONTYPEA,GPCCONFA,FPCCONFA,SFCCONFA, %C
BLKADDR,DPTADDR,SMACS,TRANS,%LONGINTEGER KMON, %C
%INTEGER SPDRQ,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC, %C
%INTEGERARRAY SP(0:15), %INTEGER %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
HBIT,SLAVEOFF,INHSSR,SDR1,SDR2,SDR3, %C
SDR4,SESR,S1,S2,S3,S4,END)
%RECORDNAME COM(COMF)
==== ecsc04/cgposns.txt ====
ADR MAP TO DTB L/ 3
BA38 13.2 1.2
AE20 14.7 3.0
AC20 15.3 3.0
ADS1/ 3
AA22 15.9 2.8
AC19 15.3 3.1
AE19 14.7 3.1
ADS2/ 3
AF20 14.4 3.0
AD20 15.0 3.0
AA25 15.9 2.5
ADS3/ 3
AB26 15.6 2.4
AD21 15.0 2.9
AF21 14.4 2.9
ADS4/ 3
==== ecsc04/ocgplaces.txt ====
A&07 #CONNECTOR/16
A&0701 GND
A&0702 GND
A&0703 GND
A&0704 GND
A&0705 GND
A&0706 GND
A&0707 GND
A&0708 GND
A&0709 BDAL8 L
A&0710 BDAL9 L
A&0711 BDAL10 L
A&0712 BDAL11 L
A&0713 BDAL12 L
A&0714 BDAL13 L
A&0715 BDAL14 L
A&0716 BDAL15 L
A&16 #CONNECTOR/16
A&1601 GND
==== ecsc04/ilaps_annotate.txt ====
! ILAP routines for annotation
! System specifics (for 4 lines)
%const %string (1) SNL = "
"
%external %string (63) %fn %spec ITOS (%integer N, P)
%external %integer %fn %spec OUT STREAM
%include "ilap_inc"
%external %routine %spec warn %alias "ILAPWARNING" (%string(225) ST)
%external %routine %spec update bb %alias "ILAPUPDATEMBB" (%integer xl, yb, xr, yt)
%const %integer no drc = 7
%external %routine crest (%integer bwidth, bheight)
%const %integer swidth = 34
%const %integer sheight = 43
%const %integer cy = 24 {extent of crest in -ve y direction}
%integer widthscale, heightscale, s, a, b
%integer x, y {origin of crest in box)
%integer i, old control
==== ecsc04/proms.txt ====
288 PROM SPECIFICATION
AD DO
E D C B A 8 7 6 5 4 3 2 1
(14)(13)(12)(11)(10) (9) (7) (6) (5) (4) (3) (2) (1)
0 0 0 0 0
0 0 0 0 1
0 0 0 1 0
0 0 0 1 1
0 0 1 0 0
0 0 1 0 1
==== ecsc04/load11s.txt ====
%EXTERNALROUTINE LOAD(%STRING(63) S)
%INTEGER CHS,I,J,K,L
%ROUTINE PB(%INTEGER B)
CHS=CHS+B
PRINTCH(B&15+'A')
PRINTCH(B>>4&15+'A')
%END
%ROUTINE PW(%INTEGER W)
PB(W&255)
PB(W>>8&255)
%END
PRINTCH(1)
CHS=0
PW(LENGTH(S))
READ(I) ;! LOAD ADDRESS
PW(I)
READ(I) ;! START ADDRESS
PW(I)
%CYCLE I=1,1,LENGTH(S)
PB(CHARNO(S,I))
==== ecsc04/mtest.txt ====
DESTROY MON1,MOND1
PMONENABLE MON1,64
PMONON
EDIT TESTS
D*I/
%BEGIN
%ROUTINE HANOI(%INTEGER N,I,J)
%IF N>0 %THEN %START
HANOI(N-1,I,6-I-J)
WRITE(I,1)
PRINT STRING(" ??")
WRITE(J,1)
HANOI(N-1,6-I-J,J)
%FINISH
%END
HANOI(4,1,2
%ENDOFPROGRAM
/
T
M/??/R2I/->/
==== ecsc04/imcforms.txt ====
%EXTERNALROUTINE FORMAT(%STRING(63) PAR)
%EXTERNALROUTINESPEC DEFINE(%STRING(63) S)
%STRING(63) S1,S2
%INTEGER I,J
%UNLESS PAR->S1.(',').S2 %THEN S1=PAR %AND S2=''
%IF S1='' %THEN S1='.TT'
%IF S2='' %THEN S2='SS#IMCS'
DEFINE('STREAM01,'.S1)
SELECT INPUT(1)
DEFINE('STREAM02,'.S2)
SELECT OUTPUT(2)
%CYCLE
READ CH(I)
%IF I=25 %THEN %STOP
%IF I#NL %THEN %START
PRINT SYMBOL(I)
%IF I=' ' %OR 'A'<=I<='Z' %THEN %START
J=0
%IF I#' ' %THEN %START
READ SYMBOL(I) %AND PRINT SYMBOL(I) %AND J=J+1 %UNTIL I=' ' %OR I=NL
==== ecsc04/rcc2007s.txt ====
!
! ERCC DOUBLE HEIGHT BOARD 2000/00/07
! %BOARDDEF RCC2007(%CHIPARRAY IC16(1:7/'ABCDXFG',1:8), &
! %CHIPARRAY IC40(5:5/'E',1:5), &
! %EDGEARRAY A1,A2,B1,B2(1:18/'ABCDEFHJKLMNPRSTUV')
!
%EXTERNALREALFN DISTANCE(%STRING(8) NAM1,%INTEGER COL1,ROW1,PIN1, %C
NOP1,%REAL X1,Y1,%STRING(8) NAM2,%INTEGER COL2,ROW2,PIN2,NOP2, %C
%REAL X2,Y2)
%RESULT=SQRT((X1-X2)**2+(Y1-Y2)**2)
%END
%EXTERNALROUTINE POSITION(%STRING(8) NAM,%INTEGER COL,ROW,PIN,NOP, %C
%REALNAME X,Y)
%CONSTREALARRAY IC16Y(1:7)=-1.1,-2.0,-3.1,-4.0,1,-5.1,-6.1
%CONSTREALARRAY ABCDX(1:8)=4.75,4.15,3.55,2.95,2.35,1.75,1.15,0.55
%CONSTREALARRAY EFX(1:4)=4.15,3.25,2.35,1.45
%CONSTREALARRAY ABY(1:18)=-0.25,0,-0.25,0,-0.25,0,-0.25,0,-0.25,0,-0.25,
0,-0.25,0,-0.25,0,-0.25,0
%CONSTREALARRAY ABX(1:18)=2.25,2.0(2),1.75(2),1.5(2),1.25(2),1.0(2),
0.75(2),0.5(2),0.25(2),0
==== ecsc04/mond100.txt ====
8269E1027R8255E8448R8456W8455W8303R14592R2048R769R523E576R1028R4152R8263E11264W8264E8299R8257E8304R8462R
8261E1028W8303R8462R8450R8304R8299R
8261E1028W8303R8463R8450R8304R8464R
8261E1028W8303R8464R8304R8450R8299R
8261E1028W8303R8465R8304R8450R
8261E1028W8303R8466R8304R8450R8299R
8261E1028R8304R8303R8467R8450R8468R8299R
8261E8303R8469R1028R8304R8450R
8261E1028R8304R8303R8470R8450R8299R
8261E1028W8303R8471R8304R8450R8299R8472R
8261E1028W8303R8472R8450R8304R
8261E1028R8304R8303R8473R8450R
8261E1028R8474R8450R8304R8303R
8261E1028R8304R8303R8475R8450R8476R8299R8268E1027R8455W8254E
8254E8449R1027W8208E8205E1028R8457R8299R8301R2048R769R543E544E523E576R575R4152R773R525E
573E1028R525E768R773R576R4152R544E523E8204E1027W8254E8449R8456R8299E2048R543E
544E576R1028R768R525E573E773R4152R1027W523E8204E8448R8254E8303R8208E8458R9728R8330R8299E
8299E1028R1027R8254E8303R8449R8205E8458R9728R8330R
8254E1027R8299E1028W8303R8449R8205E8458R9728R8330R8209E
8206E1028R8449R8330R8457R8303R8208E8254E1027R8299E
==== ecsc04/rcc2008s.txt ====
!
! ERCC QUAD HEIGHT BOARD 2000/00/08
! %BOARDDEF RCC2008(%CHIPARRAY IC16(1:7/'ABCDXFG',1:16), &
! %CHIPARRAY IC40(5:5/'E',1:11), &
! %EDGEARRAY A1,A2,B1,B2,C1,C2,D1,D2(1:18/'ABCDEFHJKLMNPRSTUV')
!
%EXTERNALREALFN DISTANCE(%STRING(8) NAM1,%INTEGER COL1,ROW1,PIN1, %C
NOP1,%REAL X1,Y1,%STRING(8) NAM2,%INTEGER COL2,ROW2,PIN2,NOP2, %C
%REAL X2,Y2)
%RESULT=SQRT((X1-X2)**2+(Y1-Y2)**2)
%END
%EXTERNALROUTINE POSITION(%STRING(8) NAM,%INTEGER COL,ROW,PIN,NOP, %C
%REALNAME X,Y)
%CONSTREALARRAY IC16Y(1:7)=-1.1,-2.0,-3.1,-4.0,1,-5.1,-6.1
%CONSTREALARRAY ABCDX(1:16)=10.025,9.425,8.825,8.225,7.625,7.025,
6.425,5.825,4.725,4.125,3.525,2.925,2.325,1.725,1.125,0.525
%CONSTREALARRAY EFX(1:8)=9.425,8.525,7.625,6.725,4.125,3.225,2.325,1.425
%CONSTREALARRAY ABY(1:18)=-0.25,0,-0.25,0,-0.25,0,-0.25,0,-0.25,0,-0.25,
0,-0.25,0,-0.25,0,-0.25,0
%CONSTREALARRAY ABX(1:18)=2.25,2.0(2),1.75(2),1.5(2),1.25(2),1.0(2),
==== ecsc04/idistas.txt ====
%EXTERNALREALFN DISTANCE(%STRING(8) NAM1,%INTEGER R1,C1,P1,PINS1, %C
%REAL X1,Y1,%STRING(8) NAM2,%INTEGER R2,C2,P2,PINS2,%REAL X2,Y2)
%INTEGER W
%IF NAM1=NAM2='C' %AND C1=C2 %THEN %START
%IF P1<=8 %AND P2<=8 %THEN %START
%IF R1=R2 %THEN %RESULT=!P1-P2!*0.1
%IF P1+P2<=9 %THEN %RESULT=(P1+P2)*0.1+0.4+!R1-R2!*1.1
%RESULT=2.2-(P1+P2)*0.1+!R1-R2!*1.1
%FINISH
%IF P1>8 %AND P2>8 %THEN %START
%IF R1=R2 %THEN %RESULT=!P1-P2!*0.1
%IF P1+P2<=25 %THEN %RESULT=(P1+P2)*0.1-1.2+!R1-R2!*1.1
%RESULT=3.8-(P1+P2)*0.1+!R1-R2!*1.1
%FINISH
%IF P2<P1 %THEN %START
W=P1
P1=P2
P2=W
W=R1
R1=R2
R2=W
==== ecsc04/cv79s.txt ====
<personal information redacted>
$
Curriculum Vitae
David James Rees
Department of Computer Science
Career : 1963-65 : Research student, Computer Unit, University of
Edinburgh.
1965-66 : Assistant Lecturer, Computer Unit, University of
Edinburgh.
1966- : Lecturer, Department of Computer Science, University
of Edinburgh.
1966-70 : Team Leader, Edinburgh Multi-Access Project.
1972-73 : Assistant Professor, Department of Computer Sciences,
University of Wisconsin, USA.
==== ecsc04/cgsignals.txt ====
BE33 #1K PULLUPS/16
BA41 #25LS2519 QUAD FF/20
DA33 #25LS2539 DUAL DEMUX/20
CA41 #25LS2569 UPDOWN CTR/20
CC41 #25LS2569 UPDOWN CTR/20
CE41 #25LS2569 UPDOWN CTR/20
CG27 #25LS2569 UPDOWN CTR/20
AA01 #2907 BUS TRANS/20
AC01 #2907 BUS TRANS/20
AE01 #2907 BUS TRANS/20
AG01 #2907 BUS TRANS/20
AC19 #29701 RAM/16
AE19 #29701 RAM/16
CA09 #29701 RAM/16
CC09 #29701 RAM/16
==== ecsc04/zero.txt ====
$B5
$L1 CM
CHAPTER 0
$B5
$L1 CM
INTRODUCTION.
$N
$P
@THE HARDWARE OF A COMPUTER SYSTEM MUST BE CAPABLE OF ACCESSING AND
TRANSFORMING THE TOTALITY OF INFORMATION STORED IN ALL OF THE
SYSTEM'S PHYSICAL DEVICES. @THIS IS THE BASIC PROPERTY WHICH GIVES
COMPUTERS THEIR ENORMOUS FLEXIBILITY. @HOWEVER, THIS UNBOUNDED
FREEDOM HAS TO BE RESTRAINED IF IT IS DESIRED TO SUPPORT THE SHARING
OF THE INFORMATION BY VARIOUS USERS. @THE APPARATUS THAT LIMIT
THIS FREEDOM ARE KNOWN AS PROTECTION MECHANISMS.
$P
@THE ORIGINAL MOTIVATION OF PROTECTION MECHANISMS WAS TO DEFEND THE
OPERATING SYSTEM FROM HARMFUL INTERFERENCE BY INCORRECT OR MALICIOUS
USER PROGRAMS. @PRIVILEGED/USER MODES ARE SUFFICIENT TO ACHIEVE THIS
SIMPLE FORM OF PROTECTION. @THE ADDRESS SPACE OF A PROGRAM EXECUTED
==== ecsc04/ilaps_ilaputil.txt ====
! Some machine specific utilities for ILAP
%external %integer %fn %spec out stream
! A monitoring routine for ILAP, which uses system dependent timings -
%external %routine ILAP monitor (%string (255) S)
%integer I
I = out stream
select output (0)
print string ("Monitor: CPU =?")
! print (deltacpu/1000,1,2)
! print string ("s PF =")
! write (delta page,2)
space; space
print string (s)
newline
%end
%external %byte %integer %fn default technology
%result = 'N'
==== ecsc04/cgs.txt ====
!-----------------------------------------------------------------------
%EXTERNALROUTINE SORTPL(%STRING(63) S)
%EXTERNALROUTINESPEC DEFINE(%STRING(63) S)
%ROUTINESPEC SQS(%INTEGER FROM,TO)
%RECORDFORMAT PSF(%STRING(7) P,%STRING(23) S)
%RECORDARRAY PS(1:3000)(PSF)
%STRING(31) IN,OUT,T,U
%INTEGER I,PSN
S->IN.(",").OUT
DEFINE("STREAM01,".IN)
SELECT INPUT(1)
%CYCLE I=1,1,3000
READ ITEM(T) %UNTIL "A"<=T<="Z"
->SORT %IF T="Z" ;! END MARKER
READ ITEM(U) %AND T=T.U %UNTIL NEXT ITEM=" "
PS(I)_P=T
READ ITEM(T) %UNTIL T#" "
READ ITEM(U) %AND T=T.U %UNTIL NEXT ITEM="
"
PS(I)_S=T
==== ecsc04/iskimps.txt ====
%EXTERNALROUTINE ISKIMP(%STRING(63) S)
%ROUTINESPEC READ LINE
%INTEGERFNSPEC COMPARE(%INTEGER PSP)
%ROUTINESPEC SS
%ROUTINESPEC FAULT(%STRING(63) S)
%INTEGERFNSPEC CHNEXT
%INTEGERFNSPEC NEWCELL
%INTEGERFNSPEC RETURN CELL(%INTEGER I)
%ROUTINESPEC PRINT NAME(%INTEGER I)
%ROUTINESPEC PHEX(%INTEGER I,J)
%INTEGER I,J,AP,APP,TP,ASL,BTN,CHP,FAULTS,NL,LEVEL,CA,COMP,SCF,PARS
%INTEGER LOPR,ASSOPP,LSTPP
%OWNSHORTINTEGERARRAY PS(-1000:-573)=%C
-997,-910,-855,-984, 201, 198,-775,-761, 212, 200, 197, 206,
-910,-863,-872,-855,-980, 2, 58,-1000,-971, 198, 201, 206,
201, 211, 200,-872,-855,-961, 201, 206, 212, 197, 199, 197,
210,-717,-855,-955,-673,-654, 1,-647,-855,-950, 197, 206,
196,-855,-943, 194, 197, 199, 201, 206,-855,-929, 197, 206,
196, 207, 198, 208, 210, 207, 199, 210, 193, 205,-855,-924,
42, 3,-599,-855,-918, 42,-841, 2,-578,-855,-913, 42,
==== ecsc04/imprealfns.txt ====
!***************************************************************************
! specs for fns in this file IMPREALFN
%realfnspec isqrt(%real x)
%realfnspec itan(%real x)
%realfnspec icos(%real x)
%realfnspec isin(%real x)
%realfnspec iarctan(%real x,y)
%realfnspec iarccos(%real x)
%realfnspec iarcsin(%real x)
!***************************************************************************
%external %real %fn isqrt (%real x)
%externalrealfnspec f77sqrt(%realname x,%integername dum)
%integer d
d=0
%result=f77sqrt(x,d)
%end
%external %real %fn itan (%real x)
%externalrealfnspec f77tan(%realname x,%integername dum)
%integer d
==== ecsc04/splps.txt ====
P<SS>='X'<INDX>'='<EXPR>'
','->'<N><IF>'
',<N>':'<SS>,'!','E
';
P<INDX>='('<EXPR>')',<N>;
P<EXPR>=<OPD><REXP>;
P<OPD>='X'<INDX>,<N>;
P<N>=<DIG><RDIG>;
P<RDIG>=<DIG><RDIG>,;
P<REXP>=<OP><OPD>,;
P<OP>='+','-','*','/';
P<IF>='IF'<OPD><COMP><OPD>,;
P<COMP>='=','#','>=','>','<=','<';
E
==== ecsc04/sup22wl.txt ====
LINK
ECSC04.SUP22W
ECSC04.SEMA01Z
ERCC07.COM16Z
ERCC07.FAST11Z
ERCC07.PPROF01Y
ECSC17.OPER13Z
ERCS04.DPRINT19Z
ERCS04.TAPE58Z
ERCC35.GPC6Y
ERCC07.NDIAG05Z
ERCC20.COMMS24Z
.END
SUP22WZ
SUPFIX SUP22WZ,SUP22WT
==== ecsc04/imcasss.txt ====
%EXTERNALROUTINE ASSEMBLE(%STRING(63) PAR)
%ROUTINESPEC RLINE
%INTEGERFNSPEC COMPARE(%INTEGER PSP)
%ROUTINESPEC SS1
%ROUTINESPEC SS2
%ROUTINESPEC FAULT(%STRING(63) MESS)
%ROUTINESPEC PHEX(%INTEGER VAL)
%ROUTINESPEC PLINE
%ROUTINESPEC QSORT(%INTEGER A,B)
%STRING(63)%FNSPEC STRSP(%INTEGER N)
%SHORTINTEGERARRAY A(1:100)
%BYTEINTEGERARRAY T(1:100)
%RECORDFORMAT SYMFORM(%STRING(6) CH,%BYTEINTEGER FLAG,%SHORTINTEGER VAL)
%RECORDARRAY SYM(0:511)(SYMFORM)
%SHORTINTEGERARRAYFORMAT RAMF(0:2047)
%SHORTINTEGERARRAYNAME RAM
%SHORTINTEGERARRAYFORMAT DRAMF(0:255)
%SHORTINTEGERARRAYNAME DRAM
%INTEGER AP,TP,TPMAX,I,J,SYMP,FAULTS,RAMADDR,FLAG
%SHORTINTEGER CA
==== ecsc04/sup22ws.txt ====
%EXTERNALROUTINE SUP29
!-----------------------------------------------------------------------
%OWNSTRING(3) SUPID="22F"
!-----------------------------------------------------------------------
! STORE CONFIGURATION & EPAGE SIZE DECLARATIONS
! AMENDED 24/02/78 "SMACS","TRANS" & "KMON" INCLUDED
! COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 13A ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,SECSFMN,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,NPROCS,PROCMON,DQADDR, %C
SACPORT,OCPPORT,ITINT,CONTYPEA,GPCCONFA,FPCCONFA,SFCCONFA, %C
BLKADDR,DPTADDR,SMACS,TRANS,%LONGINTEGER KMON, %C
%INTEGER SP1,SP2,SP3,SP4,SP5,SP6,SP7,SP8,SP9, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
HBIT,SLAVEOFF,SPISAS1,SPISAS2,SPISAS3,SPISAS4,END)
%RECORDNAME COM(COMF)
COM==RECORD(X'80000000'+48<<18)
%CONSTINTEGER VIRTAD=X'81000000'
%CONSTINTEGER MAXPROCS=64
==== ecsc04/imcps.txt ====
B<NAME>=1
B<CNST>=2
B<SPS> =3
P<SS1> =<SPS><IN1>,
<NAME><SPS><LIN1>;
P<SS2> =<SPS><IN2><SEP>,
<NAME><SPS><LIN2><SEP>;
P<SS3> =<NAME><PRIV><SEP>,
'0'<REP><SEP>;
P<IN1> =<MOP1>,'ORG'<SPS><VAL><SEP>,'END';
P<LIN1>=<MOP1>,'EQU'<SPS><VAL><SEP>;
P<MOP1>='D ','C ','T ','B ','L ',<I>' ','DC ';
P<IN2>=<MOP2>,'ORG'<SPS><VAL>,'END';
P<LIN2>=<MOP2>,'EQU'<SPS><VAL>;
P<MOP2>='D'<SPS><DF><DFS>,
'C'<SPS><CF><CFS>,
'T'<SPS><TF><TFS>,
'B'<SPS><COND>','<VAL>,
'L'<SPS><RL>,
<I><SPS><ID>','<RI>,
==== ecsc04/dcapdoc.html ====
<HTML><HEAD></HEAD><BODY><PRE>
<HR>
<EM>DCAP : David's Circuit Assignment Program</EM>
DCAP provides a method of description of circuits, the assignment of
functional elements to integrated circuit chips and their layout on
circuit boards. It creates data structures corresponding to the
descriptions in a file which can then be used for further processing.
At the present state of development of the system, this consists of
producing a wire-wrap schedule for the circuit but it is also intended
that it should be used for other stages in the design and construction
process such as printed circuit board design, production of circuit
schematics by plotter etc.
Rather than use a description of the circuit in terms of functional
relationships between signals, DCAP works in terms of functional
==== ecsc04/sup22l.txt ====
LINK
ECSC04.SUP22
ECSC04.SEMA01Z
ERCC07.COM16Z
ERCC07.FAST11Z
ERCC07.PPROF01Y
ECSC17.OPER13Z
ERCS04.DPRINT19Z
ERCS04.TAPE58Z
ERCC35.GPC6Y
ERCC07.NDIAG05Z
ERCC20.COMMS24Z
.END
SUP22Z
SUPFIX SUP22Z,SUP22T
==== ecsc04/memo.txt ====
Alterations to Ilap4s :
remove output extension #cif
cif stream = 1 instead of 3
insert "impiospecs" instead of existing ones
add ".cif" if necessary
max boxes = 1000 instead of 2000
all %halfs to %shorts
%fn extend only for EMAS [ omit first line ]
prefix "ilap4incs" with all %specs in right order
fix Version string
remove %routinespecs dump comment to c width since already spec-ed
date & time to timestamp
lambda & setlambda in 100ths of a micron - all inc files specs updated
SET DEFAULT GOES OUT
outfilename goes out
change default widths sheet
Alterations to utils :
date & time to timestamp
no set default any longer
no outfilename
==== ecsc04/sup22s.txt ====
%EXTERNALROUTINE SUP29
!-----------------------------------------------------------------------
%OWNSTRING(3) SUPID="22F"
!-----------------------------------------------------------------------
! STORE CONFIGURATION & EPAGE SIZE DECLARATIONS
! AMENDED 24/02/78 "SMACS","TRANS" & "KMON" INCLUDED
! COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 13A ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,SECSFMN,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,NPROCS,PROCMON,DQADDR, %C
SACPORT,OCPPORT,ITINT,CONTYPEA,GPCCONFA,FPCCONFA,SFCCONFA, %C
BLKADDR,DPTADDR,SMACS,TRANS,%LONGINTEGER KMON, %C
%INTEGER SP1,SP2,SP3,SP4,SP5,SP6,SP7,SP8,SP9, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
HBIT,SLAVEOFF,SPISAS1,SPISAS2,SPISAS3,SPISAS4,END)
%RECORDNAME COM(COMF)
COM==RECORD(X'80000000'+48<<18)
%CONSTINTEGER VIRTAD=X'81000000'
%CONSTINTEGER MAXPROCS=64
==== ecsc04/utils.txt ====
!***********************************************************************
! specs in same order as in perqimports file
%routine %spec ILAP monitor (%string (255) S)
%byte %integer %fn %spec default technology
%string (63) %fn %spec itos (%integer n, p)
%routine %spec write (%integer n, p)
%string(127)%fn %spec rtos(%real num,%integer pl,dp)
%routine %spec print(%real num,%integer pl,dp)
%integerfn %spec stoi(%string(63) s)
%integer %fn %spec REM (%integer A, B)
%routine %spec prompt(%string(63) s)
%string (15) %fn %spec timestamp
%real %fn %spec frac pt (%real r)
%routine %spec read (%integer addr, type)
%string (255) %fn %spec sub string (%string (255) st, %integer a, b)
%integerfnspec getvm(%integername size,adr)
%integerfnspec freevm(%integername size,adr)
!***********************************************************************
%externalintegerfnspec outstream
%externalroutinespec dateandtime(%integer timeref)
%externalroutinespec newseg(%shortintegername seg,%shortinteger fsize,finc,fmax)
==== ecsc04/ilaps_stack.txt ====
%include "ilap_inc"
%externalroutine stack(%string(31) name,%integer bits,words,
%integername controlx,controly,pushcony,popcony,
phi1x,phi2x,phi3x,phi4x,%integerarrayname pushy,popy)
%routinespec stackcellcon(%integer offset)
%routinespec controlcon
%routinespec positioncell(%string(13) cell,ground,
%integer cellypitch,cellxpitch,gndypitch,
%integer %name xcur,ycur)
%integer stackcellxpitch,stackcellypitch,conypitch,stackcellgndypitch
%integer i,j,curx,cury,stackcellpushy,stackcellpopy,controlypitch
%integer stackcellaxpitch, stackx, stacky
%if symbol exists("stackcell")=true %then ->gen
symbol("stackcell")
%if Buried contacts = true %start
layer(poly)
box(15,4,17,8) ; box(41,21,43,25)
pdbw(16,3) ; pdbe(42,26)
%finish %else %start
pdms(15,5) ; pdmn(43,24)
%finish
==== ecsc04/cgwws.txt ====
BOTTOM WRAPS
9.5 INCH LENGTHS, WIRE BIN 21
1 FH35 -> CF28
9.0 INCH LENGTHS, WIRE BIN 20
2 FH03 -> CG10
8.5 INCH LENGTHS, WIRE BIN 17
3 DE34 -> AG02
4 DA45 -> AB32
5 DA47 -> AB33
6 FF03 -> CG11
8.0 INCH LENGTHS, WIRE BIN 16
7 FD03 -> CG12
8 FH43 -> DA26
9 FB35 -> CE21
10 FD19 -> CG20
==== ecsc04/sup23l.txt ====
LINK
ECSC04.SUP23W
ECSC04.SEMA02Z
ERCC07.COM20Z
ERCC07.FAST16Z
ERCC07.OPER14Z
ERCS04.DPRINT24Z
ERCS04.TAPE58Z
ERCC35.GPC9Y
ERCC07.NDIAG06Z
ERCC20.COMMS29Z
.END
SUP23Z
SUPFIX SUP23Z,SUP23T
==== ecsc04/contacts.txt ====
!******************************************************************************
! specs in same order as in perqimports file
%routine %spec subc (%integer x, y)
%routine %spec dm (%integer x,y)
%routine %spec pm (%integer x,y)
%routine %spec pdms (%integer x, y)
%routine %spec pdmn (%integer x, y)
%routine %spec pdmw (%integer x, y)
%routine %spec pdme (%integer x, y)
%routine %spec pdbns (%integer x, y)
%routine %spec pdbew (%integer x, y)
%routine %spec pdcn (%integer x, y)
%routine %spec pdcs (%integer x, y)
%routine %spec pdce (%integer x, y)
%routine %spec pdcw (%integer x, y)
%routine %spec pdbn (%integer x, y)
%routine %spec pdbs (%integer x, y)
%routine %spec pdbe (%integer x, y)
%routine %spec pdbw (%integer x, y)
!******************************************************************************
%constant %string (2) blue ="M", metal ="M", nm="M"
==== ecsc04/sup23s.txt ====
%LONGINTEGERFNSPEC RTDR(%INTEGERFN A)
%INTEGERFNSPEC REQUEST INPUT(%INTEGER OUTPUT POSN,TRIGGER POSN)
%INTEGERFNSPEC REQUEST OUTPUT(%INTEGER OUTPUT POSN,TRIGGER POSN)
%EXTERNALROUTINE SUP29
!-----------------------------------------------------------------------
%OWNSTRING(3) SUPID="23F"
!-----------------------------------------------------------------------
! STORE CONFIGURATION & EPAGE SIZE DECLARATIONS
! AMENDED 24/02/78 "SMACS","TRANS" & "KMON" INCLUDED
! COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 18A ONWARDS
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,KLOKCORRECT,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,PROCMON,DQADDR, %C
SACPORT,OCPPORT,ITINT,CONTYPEA,GPCCONFA,FPCCONFA,SFCCONFA, %C
BLKADDR,DPTADDR,SMACS,TRANS,%LONGINTEGER KMON, %C
%INTEGER SPDRQ,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC, %C
%INTEGERARRAY SP(0:15), %INTEGER %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
==== ecsc04/impiocpis.txt ====
!*******************************************************************************
! specs for external routines in this file IMPIOCPI
%routinespec openinput(%integer stream,%string(100) filename)
%integerfnspec instream
%string(100)%fnspec infilename(%integer stream)
%routinespec closeinput(%integer stream)
%routinespec openoutput(%integer stream,%string(100) filename)
%integerfnspec outstream
%string(100)%fnspec outfilename(%integer stream)
%routinespec closeoutput(%integer stream)
%routinespec stop
%shortintegerfnspec iocp(%shortinteger ep,n,x)
!*******************************************************************************
! specs for Pascal routines in IMPIOCP
%externalroutinespec ioinit
%externalroutinespec openin(%shortinteger s,%string(100) filename)
%externalshortintegerfnspec instrm
%externalroutinespec infile(%shortinteger s,%integer fileref)
%externalroutinespec closein(%shortinteger s)
%externalroutinespec openout(%shortinteger s,%string(100) filename)
%externalshortintegerfnspec outstrm
==== ecsc41/ada_sortdemo.txt ====
-- Simple demonstration of the generic sorting package.
WITH TEXT_IO ; USE TEXT_IO ; -- make standard text I/O available
WITH gensort ; -- make generic sorting package available
PROCEDURE sortdemo IS
-- Global Types :
TYPE intvec IS ARRAY ( INTEGER RANGE <> ) OF INTEGER ;
-- Generic Package Instantiations :
PACKAGE intsort IS NEW gensort ( INTEGER, intvec, ">" ) ;
PACKAGE intio IS NEW INTEGER_IO ( INTEGER ) ;
USE intsort, intio ;
-- Global Variables :
test_array : intvec ( 1..10 ) ; -- array to be sorted
==== ecsc41/ada_robpack.txt ====
WITH text_io ; USE text_io ; -- make text input/output available
-- robot_handler => Package definition for simple robot simulation.
PACKAGE robot_handler IS
-- Package Type Definitions :
TYPE axis_name IS ( x_axis, y_axis, z_axis ) ;
SUBTYPE move_range IS INTEGER RANGE -1000..1000 ;
TYPE param_array IS ARRAY ( axis_name ) OF move_range ;
-- Package Task Types :
-- robot_controller => Task to simulate control of a robot.
TASK TYPE robot_controller IS
-- Entry points :
ENTRY open ;
ENTRY single_axis_move ( axis : axis_name ;
distance : move_range ) ;
ENTRY compound_move ( axis_deltas : param_array ) ;
==== ecsc41/ada_treedemo2.txt ====
-- Simple demonstration of the generic tree handling package.
WITH TEXT_IO ; USE TEXT_IO ; -- make standard text I/O available
WITH tree_handler ; -- make generic tree handling package available
PROCEDURE treedemo2 IS
-- Global Types :
SUBTYPE ubyte IS INTEGER RANGE 0..255 ;
TYPE sub_rec IS RECORD
one : ubyte ;
two : ubyte ;
three : ubyte ;
END RECORD ;
TYPE rec_test IS RECORD
main : ubyte ;
sub : sub_rec ;
END RECORD ;
==== ecsc41/ada_setdemo.txt ====
-- Demostration program for generic set handling package.
WITH text_io ; USE text_io ; -- make text I/O package available
WITH set_handler ; -- make generic set handling package available
PROCEDURE setdemo IS
-- Global Types :
TYPE colour IS ( violet, blue, white, green, yellow, orange, red ) ;
-- Generic Package Instantiation :
PACKAGE colset IS NEW set_handler ( colour ) ;
USE colset ;
-- Global Variables :
colour_set : set := full_set ; -- full set of colours
colour_choice : set ;
leftovers : set ;
==== ecsc41/ada_idpack.txt ====
-- Package to demonstrate Private Types.
WITH TEXT_IO ; USE TEXT_IO ; -- make text I/O available
PACKAGE id_handler IS
-- Package Types :
TYPE id_number IS PRIVATE ;
-- Package Functions :
-- new_id => Genarate an id_number.
FUNCTION new_id RETURN id_number ;
-- Package Procedures :
-- put => Output an id_number to the terminal.
PROCEDURE put ( id : id_number ) ;
PRIVATE -- hidden part
==== ecsc41/ada_sortdemo2.txt ====
-- Demonstration of the generic sorting package.
WITH TEXT_IO ; USE TEXT_IO ; -- make standard text I/O available
WITH text_handler ; USE text_handler ; -- varying length strings
WITH gensort ; -- make generic sorting package available
PROCEDURE sortdemo2 IS
-- Global Types :
TYPE sp IS ( W, O, B, A, F, G, K, M, R, N, S ) ; -- spectral types
SUBTYPE st IS CHARACTER RANGE '0'..'9' ; -- spectral sub-types
TYPE lc IS ( I, II, III, IV, V ) ; -- luminosity class
TYPE spectral_class IS RECORD
sp_type : sp ;
sp_sub : st ;
luminosity : lc ;
extras : text ;
END RECORD ;
==== ecsc41/ada_treedemo.txt ====
-- Demonstrates the generic tree handling package
WITH TEXT_IO ; USE TEXT_IO ; -- make standard text I/O available
WITH text_handler ; USE text_handler ; -- for varying length strings
WITH tree_handler ; -- make generic tree handling package available
PROCEDURE treedemo IS
-- Global Types :
TYPE sp IS ( W, O, B, A, F, G, K, M, R, N, S ) ; -- spectral types
SUBTYPE st IS CHARACTER RANGE '0'..'9' ; -- spectral sub-types
TYPE lc IS ( I, II, III, IV, V ) ; -- luminosity class
TYPE spectral_class IS RECORD
sp_type : sp ;
sp_sub : st ;
luminosity : lc ;
extras : text ;
END RECORD ;
==== ecsc41/ada_double.txt ====
-- Simple Ada program which doubles a given integer
WITH text_io ; USE text_io ; -- Maks standard text I/O available
PROCEDURE double IS -- program specification
-- Generic Package Instantiations :
PACKAGE int_io IS NEW integer_io ( integer ) ; USE int_io ;
-- Global Variables :
value : INTEGER ; -- value to be doubled
double : INTEGER ; -- result
BEGIN -- double
PUT ( "Value to be doubled ? " ) ; -- prompt user
GET ( value ) ; -- read number
double := value * 2 ; -- multiply by two
PUT ( value ) ; -- print value given by user
==== ecsc41/ada_robdemo2.txt ====
WITH TEXT_IO ; USE TEXT_IO ; -- setup standard text I/O package
WITH robot_handler ; USE robot_handler ; -- setup robot package
PROCEDURE robdemo2 IS -- demonstrates use of robot simulation package
-- Type Definitions :
TYPE command IS ( x_move, y_move, z_move, compound, quit ) ;
TYPE conv_com IS ARRAY ( x_move..z_move ) OF axis_name ;
-- Generic Package Instantiations :
PACKAGE com_io IS NEW ENUMERATION_IO ( command ) ;
PACKAGE mr_io IS NEW INTEGER_IO ( move_range ) ;
PACKAGE an_IO IS NEW ENUMERATION_IO ( axis_name ) ;
USE com_io, mr_io, an_io ;
-- Global Constants :
axis_for : CONSTANT conv_com := ( x_axis, y_axis, z_axis ) ;
==== ecsc41/ada_utilpack.txt ====
-- General Utility Package
PACKAGE utils IS
-- Package Functions :
-- ch_is_upper => Is character an upper case letter ?
FUNCTION ch_is_upper ( c : CHARACTER ) RETURN BOOLEAN ;
-- ch_is_lower => Is character a lower case letter ?
FUNCTION ch_is_lower ( c : CHARACTER ) RETURN BOOLEAN ;
-- upper_case => Return upper case equivalent of a character.
FUNCTION upper_case ( c : CHARACTER ) RETURN CHARACTER ;
-- lower_case => Return lower case equivalent of a character.
FUNCTION lower_case ( c : CHARACTER ) RETURN CHARACTER ;
-- upper_case => Return upper case equivalent of a string.
FUNCTION upper_case ( s : STRING ) RETURN STRING ;
==== ecsc41/ada_robdemo.txt ====
-- Demonstrate use of robot handler package
WITH robot_handler ; USE robot_handler ;
PROCEDURE robdemo IS
-- Local Variables :
r2d2 : robot_controller ; -- robot controller task
c3po : robot_controller ; -- another robot controller task
BEGIN -- robdemo
-- setup robot system
robot_system.open ;
-- setup robot controller task
r2d2.open ;
-- move in y-axis direction
r2d2.single_axis_move ( y_axis, -5 ) ;
==== ecsc41/ada_iddemo.txt ====
-- Demonstrates use of Package containing a private type.
WITH text_io, id_handler ; USE text_io, id_handler ;
PROCEDURE iddemo IS
-- Local Variables :
person_id : id_number ;
animal_id : id_number ;
BEGIN -- iddemo
-- allocate values to person_id & animal_id
person_id := new_id ;
animal_id := new_id ;
-- list ids
PUT ( "Person Id No. is " ) ; put ( person_id ) ; NEW_LINE ;
PUT ( "Animal Id No. is " ) ; put ( animal_id ) ; NEW_LINE ;
-- try to explicitly set id number components
==== ecsc41/ada_sortpack.txt ====
-- Generic sorting package.
GENERIC
TYPE elem IS PRIVATE ; -- generic object
TYPE vector IS ARRAY ( INTEGER RANGE <> ) OF elem ;
WITH FUNCTION ">" ( left, right : elem ) RETURN BOOLEAN ;
PACKAGE gensort IS
-- swap => swap two values of the generic type
PROCEDURE swap ( first, second : IN OUT elem ) ;
-- quicksort => Sorts an array of generic objects ( quicksort )
PROCEDURE quicksort ( v : IN OUT vector ) ;
END gensort ; ------------------------------------------------------
-- gensort => Body of generic sorting package.
PACKAGE BODY gensort IS
==== ecsc41/ada_setpack.txt ====
-- Generic set handling package.
GENERIC
TYPE elem IS ( <> ) ; -- discrete generic type
PACKAGE set_handler IS
-- Package Types :
TYPE set IS PRIVATE ; -- private type
TYPE elem_list IS ARRAY ( NATURAL RANGE <> ) OF elem ;
-- Package Constants :
empty_set : CONSTANT set ; -- deferred constants
full_set : CONSTANT set ;
-- Package Functions :
==== ecsc41/ada_textpack.txt ====
-- Text handling package for use with strings of up to length 255.
WITH TEXT_IO ; USE TEXT_IO ; -- make standard text I/O available
WITH utils ; USE utils ; -- make utilities available
-- text_handler => Text handling package definition.
PACKAGE text_handler IS
-- Package Types :
SUBTYPE ubyte IS INTEGER RANGE 0..255 ;
TYPE text ( len : ubyte := 0 ) IS RECORD
value : string ( 1..len ) ;
END RECORD ;
-- Package Procedures :
-- set => Set text object to value of given string.
PROCEDURE set ( x : OUT text ; y : STRING ) ;
==== ecsc41/ada_treepack.txt ====
-- Generic tree handling package.
WITH text_io ; USE text_io ; -- make standard I/O available
GENERIC
TYPE elem IS PRIVATE ;
WITH FUNCTION ">" ( x, y : elem ) RETURN BOOLEAN ;
WITH PROCEDURE put ( x : elem ) ;
PACKAGE tree_handler IS
-- Package Types :
TYPE node ; -- full spec given later
TYPE tree IS ACCESS node ; -- pointer type to node records
TYPE node IS RECORD -- now give node record definition
value : elem ;
left : tree ;
==== ecslib/emas-2900/toals_view_users1.txt ====
17/12/80 15.54.20 ERCLIB ERCLIB.LIBCONTENTS
17/12/80 16.08.46 ERCLIB NLC
17/12/80 16.59.38 ERCC04 PD13S
17/12/80 17.03.50 ERCC04 PD12S
17/12/80 17.07.53 EBFR12 ERCLIB.LIBCONTENTS
17/12/80 19.07.12 ECZU09 PD4
17/12/80 19.18.22 ECZU09 ERCLIB.LV_VIEWS
17/12/80 19.18.43 ECZU09 PD4
17/12/80 19.21.26 ECZU09 PD3
17/12/80 19.21.52 ECZU09 PD2
17/12/80 19.22.13 ECZU09 PD1
17/12/80 19.22.52 ECZU09 PDI
17/12/80 19.23.43 ECZU09 PDG
17/12/80 19.24.16 ECZU09 PDG
17/12/80 19.41.53 ECSLIB GT
17/12/80 19.49.30 ECSLIB ENCU73.TOAL
17/12/80 20.00.38 ECSLIB GT
17/12/80 20.04.33 ECSLIB GT
17/12/80 20.08.13 ECYU40 ERCLIB.VIEW
17/12/80 20.09.39 ECSLIB GT
17/12/80 20.28.20 ECZU85 KNTLIB.BASICPD
==== ecslib/emas-2900/toals_view_users2.txt ====
22/12/80 16.13.31 EXODUS ERCC04.WINE
22/12/80 16.41.43 ERCC08 ERCLIB.LV_VIEWS
22/12/80 19.43.29 ECSLIB GT
22/12/80 19.50.39 ECSLIB ERCLIB.VIEW
19/12/80 11.36.46 ECYU83 ECSLIB.PICS
19/12/80 11.38.03 ECYU83 PICS
19/12/80 11.42.03 ECYU83 ECZU36.BASIC_BASIC
19/12/80 11.43.58 ECYU83 ECSLIB.GT
19/12/80 11.45.07 ECYU83 ASSORT
19/12/80 11.45.34 ECYU83 DIRECTORY
19/12/80 11.46.49 ECYU83 ECZU36.BASIC_SUMA
19/12/80 11.47.31 ECYU83 DIRECTORY
19/12/80 11.51.21 ECZU36 ECSLIB.GT
19/12/80 11.52.26 ERCLIB T#L
19/12/80 11.58.31 ECYU83 ECSLIB.GT
19/12/80 11.59.05 ECZU36 ECSLIB.GT
19/12/80 12.02.10 ERCLIB T#L
19/12/80 12.06.22 ECYU83 ASSORT
19/12/80 12.11.41 ECYU83 DIRECTORY
19/12/80 12.13.01 ECYU83 DIRECTORY
19/12/80 12.14.50 ECYU83 ERCLIB.LIBCONTENTS
==== ecslib/emas-2900/toals_view_users3.txt ====
07/01/81 10.32.18 EMCT02 EMCT06.IMPVDOC
07/01/81 10.50.37 EMCT06 IMPVDOX
07/01/81 10.50.39 EMCT06 IMPVDOC
07/01/81 10.58.10 ECZU85 GU
07/01/81 11.10.47 ECSC20 O
07/01/81 11.10.55 ECSC20 0
07/01/81 11.10.59 ECSC20 ERCLIB.LV_VIEWS
07/01/81 11.26.06 ERCLIB T#L
07/01/81 11.27.01 ERCLIB ERCLIB.LIBCONTENTS
07/01/81 11.54.04 ERSY01 ERCLIB.LIBCONTENTS
07/01/81 11.56.14 ECSC20 ERCLIB.LV_VIEWS
07/01/81 12.06.08 ERCC04 PD13S
07/01/81 12.12.06 ERCC04 ZZ
07/01/81 12.19.58 ERCC04 VTEST
07/01/81 13.48.25 ERCC04 VTEST
07/01/81 13.49.47 ERCC04 VTEST
07/01/81 14.41.54 ECSC20 VIEWS
07/01/81 14.43.32 ECSC20 ERCC04.LIB
07/01/81 14.45.21 ERCC04 ERCLIB.VIEW
07/01/81 14.48.30 ERCC04 ERCLIB.VIEW
07/01/81 14.52.35 ERCC04 VTEST
==== ecslib/emas-2900/toals_view_users4.txt ====
14/01/81 16.31.21 ERCC04 PD13S
14/01/81 16.32.26 ECYU83 CONS
14/01/81 16.47.32 ECYU83 DIR
14/01/81 16.47.59 ECYU83 ERCLIB.LIBCONTENTS
14/01/81 16.54.29 ECYU20 JUNK
14/01/81 16.54.48 ECYU20 USERS
14/01/81 16.55.11 ECYU20 PROG
14/01/81 17.06.37 ECYU83 WERT
14/01/81 17.06.47 ECYU20 PROG
14/01/81 17.09.56 ECSC29 ERCLIB.LIBCONTENTS
14/01/81 17.17.04 ECYU83 CON
14/01/81 17.19.12 ECXU87 ERCLIB.LIBCONTENTS
14/01/81 17.23.59 ERCLIB ERCLIB.LIBCONTENTS
14/01/81 17.28.09 ECXU54 PAS
14/01/81 17.29.14 ECYU20 PROG
14/01/81 17.30.42 ECXU54 CONLIB
14/01/81 17.31.19 ECXU54 CHAR
14/01/81 17.32.06 ECXU54 COMMANDS
14/01/81 17.33.08 ECXU54 DIR
14/01/81 17.33.36 CONLIB ERCLIB.LIBCONTENTS
14/01/81 17.34.53 ECXU54 DIR
==== ecslib/emas-2900/toals_view_users5.txt ====
08/05/81 17.26.32 ERCC63 SUBSYS.VIEW
08/05/81 17.27.16 EMCT02 ERCC27.MAILHELP
08/05/81 17.29.11 EMCT02 ERCC27.MAILHELP
08/05/81 17.31.59 ECSC20 SUBSYS.VIEW
08/05/81 17.31.59 ECSC20 SCREED
08/05/81 17.33.18 ECSC20 KNTLIB.SCREEDDOC
08/05/81 17.38.13 ECSC04 SUBSYS.VIEW
08/05/81 17.38.13 ECSC04 ERCLIB.LIBCONTENTS
08/05/81 17.41.13 EBFU54 ERCC27.MAILHELP
08/05/81 17.44.03 ECSC20 SUBSYS.VIEW
08/05/81 17.44.03 ECSC20 SCREED
08/05/81 17.44.30 ECSC20 KNTLIB.SCREEDDOC
08/05/81 17.48.55 EMCT02 ERCC27.MAILHELP
08/05/81 17.54.22 ECSC20 SUBSYS.VIEW
08/05/81 17.54.22 ECSC20 SCREED
08/05/81 17.54.34 ECSC20 SUBSYS.VIEW
08/05/81 17.54.34 ECSC20 SCREED
08/05/81 17.55.06 ECSC20 SUBSYS.VIEW
08/05/81 17.55.06 ECSC20 SCREED
08/05/81 17.55.16 ECSC20 KNTLIB.SCREEDDOC
08/05/81 17.55.21 ECYU20 ERCC27.MAILHELP
==== ecslib/emas-2900/edwin_txstack.txt ====
{ EDWIN Transformation stack routines added } %end %of %list
%constant %integer TRANSFORM STACK DEPTH = 100
%record %format TRANS FM (%real %array A (0:8))
%external %routine %spec UNITY TRANSFORM %alias "EDWIN_UNITY_TX" (%record (TRANSFM) %name T)
%external %routine %spec TRANSLATE TRANSFORM %alias "EDWIN_TRANSLATE_TX" (%real X, Y, %record (TRANSFM) %name T)
%external %routine %spec MIRROR X TRANSFORM %alias "EDWIN_MIRROR_X_TX" (%record (TRANSFM) %name T)
%external %routine %spec MIRROR Y TRANSFORM %alias "EDWIN_MIRROR_Y_TX" (%record (TRANSFM) %name T)
%external %routine %spec ROT DV TRANSFORM %alias "EDWIN_ROT_DV_TX" (%real A, B, %record (TRANSFM) %name T)
%external %routine %spec ROT ANG TRANSFORM %alias "EDWIN_ROT_ANG_TX" (%real ANGL, %record (TRANSFM) %name T)
%external %routine %spec COMPOSE TRANSFORM %alias "EDWIN_COMPOSE_TX" (%record (TRANSFM) %name TA, TB, TC)
%external %routine %spec SCALE TRANSFORM %alias "EDWIN_SCALE_TX" (%real XS, YS, %record (TRANSFM) %name T)
%external %routine %spec POP TRANSFORM %alias "EDWIN_POP_TX"
%external %routine %spec PUSH TRANSFORM %alias "EDWIN_PUSH_TX" (%record (TRANSFM) %name T)
%external %routine %spec INIT TRANSFORM %alias "EDWIN_INIT_TX"
%external %routine %spec PRINT TRANSFORM %alias "EDWIN_PRINT_TX" (%record (TRANSFM) %name T)
%external %routine %spec SET TRANSFORM %alias "EDWIN_SET_TX" (%record (TRANSFM) %name T)
%external %routine %spec GET TRANSFORM %alias "EDWIN_GET_TX" (%record (TRANSFM) %name TX)
==== ecslib/emas-2900/toals_view_users6.txt ====
22/05/81 14.12.17 ECUU36 SUBSYS.VIEW
22/05/81 14.12.17 ECUU36 ECSC20
22/05/81 14.12.56 ECUU36 ERCI34.CDOSUSERS
22/05/81 14.13.38 ECUU36 SUBSYS.VIEW
22/05/81 14.19.18 ECYU20 SUBSYS.VIEW
22/05/81 14.19.18 ECYU20 PROG
22/05/81 14.21.21 ECUU36 KNTLIB.SCREEDDOC
22/05/81 14.22.26 ECXU22 SUBSYS.VIEW
22/05/81 14.22.35 ECXU22 P8
22/05/81 14.26.13 ECUU36 SUBSYS.VIEW
22/05/81 14.26.19 ECUU36 ECSC20
22/05/81 14.35.03 ECSC06 SUBSYS.VIEW
22/05/81 14.35.03 ECSC06 ECSC19.STV
22/05/81 14.43.23 ERCC08 SUBSYS.VIEW
22/05/81 14.43.37 ERCC08 ERCC09.REPORTS
22/05/81 14.44.42 ERCC08 SUBSYS.VIEW
22/05/81 14.44.42 ERCC08 SUBSYS.VIEW
22/05/81 14.48.10 ERCI33 SUBSYS.VIEW
22/05/81 14.48.12 ERCI33 SSUREPORT
22/05/81 14.49.21 ERCI23 SUBSYS.VIEW
22/05/81 14.49.21 ERCI23 ERCLIB.LIBCONTENTS
==== ecslib/emas-2900/toals_view_users7.txt ====
03/07/81 23.25.23 ECSLIB ERCC27.MAILHELP
16/06/81 08.56.22 ECYU40 SUBSYS.VIEW
16/06/81 08.56.22 ECYU40 ERCC27.MAILHELP
16/06/81 09.00.16 ECYU40 SUBSYS.VIEW
16/06/81 09.00.16 ECYU40 ERCC63.PDSCREED
16/06/81 09.30.26 ERUA13 SUBSYS.VIEW
16/06/81 09.30.26 ERUA13 ERCI34.INFORMATION
16/06/81 09.31.25 ERUA13 ERUA14.INFORMATION
16/06/81 09.46.52 ERCM03 SUBSYS.VIEW
16/06/81 09.46.52 ERCM03 ERCC19.ADVISOR
16/06/81 09.55.40 ERCC04 SUBSYS.VIEW
16/06/81 09.55.42 ERCC04 DIRECTOR
16/06/81 10.12.44 ERCC04 SUBSYS.VIEW
16/06/81 10.12.44 ERCC04 LIBS
16/06/81 10.18.24 ERCM09 SUBSYS.VIEW
16/06/81 10.18.26 ERCM09 ERCLIB.LIBCONTENTS
16/06/81 10.21.39 ERCC04 SUBSYS.VIEW
16/06/81 10.21.39 ERCC04 LIBS2
16/06/81 10.27.52 ECZU09 SUBSYS.VIEW
16/06/81 10.27.52 ECZU09 T#LIST
16/06/81 10.32.12 ECZU09 SUBSYS.VIEW
==== ecslib/emas-2900/toals_view_users8.txt ====
20/07/81 20.44.17 ECSC03 ERCC27.MAILHELP
16/06/81 08.56.22 ECYU40 SUBSYS.VIEW
16/06/81 08.56.22 ECYU40 ERCC27.MAILHELP
16/06/81 09.00.16 ECYU40 SUBSYS.VIEW
16/06/81 09.00.16 ECYU40 ERCC63.PDSCREED
16/06/81 09.30.26 ERUA13 SUBSYS.VIEW
16/06/81 09.30.26 ERUA13 ERCI34.INFORMATION
16/06/81 09.31.25 ERUA13 ERUA14.INFORMATION
16/06/81 09.46.52 ERCM03 SUBSYS.VIEW
16/06/81 09.46.52 ERCM03 ERCC19.ADVISOR
16/06/81 09.55.40 ERCC04 SUBSYS.VIEW
16/06/81 09.55.42 ERCC04 DIRECTOR
16/06/81 10.12.44 ERCC04 SUBSYS.VIEW
16/06/81 10.12.44 ERCC04 LIBS
16/06/81 10.18.24 ERCM09 SUBSYS.VIEW
16/06/81 10.18.26 ERCM09 ERCLIB.LIBCONTENTS
16/06/81 10.21.39 ERCC04 SUBSYS.VIEW
16/06/81 10.21.39 ERCC04 LIBS2
16/06/81 10.27.52 ECZU09 SUBSYS.VIEW
16/06/81 10.27.52 ECZU09 T#LIST
16/06/81 10.32.12 ECZU09 SUBSYS.VIEW
==== ecslib/emas-2900/sints.txt ====
%ENDOFLIST
%CONSTSHORTINTEGERARRAY MAIN(1 : 359) = %C
1, 7, 13, 18, 22, 25, 29, 33, 37, 40, 47, 51,
54, 59, 62, 65, 68, 72, 76, 80, 84, 90, 94, 98,
103, 108, 113, 118, 122, 127, 135, 139, 0, 141, 144, 145,
152, 0, 157, 159, 161, 163, 0, 165, 167, 168, 169, 174,
0, 178, 181, 182, 186, 187, 188, 189, 0, 199, 202, 0,
205, 206, 207, 209, 0, 211, 213, 0, 215, 218, 0, 220,
226, 230, 233, 235, 238, 241, 243, 245, 247, 249, 0, 251,
253, 254, 256, 257, 259, 261, 263, 0, 265, 267, 268, 269,
272, 274, 275, 277, 279, 281, 0, 283, 285, 0, 287, 289,
0, 291, 294, 298, 301, 303, 304, 305, 306, 308, 309, 311,
312, 0, 316, 320, 321, 324, 325, 331, 0, 333, 338, 339,
341, 343, 347, 0, 351, 353, 355, 356, 357, 359, 361, 363,
365, 367, 369, 371, 373, 375, 377, 379, 0, 381, 382, 383,
0, 389, 396, 402, 403, 409, 410, 416, 417, 419, 422, 0,
424, 426, 0, 428, 435, 439, 0, 442, 444, 445, 447, 449,
451, 453, 455, 457, 459, 0, 461, 464, 0, 466, 469, 472,
476, 479, 481, 483, 485, 487, 490, 493, 495, 498, 501, 504,
506, 508, 511, 514, 517, 521, 523, 525, 529, 534, 536, 538,
==== ecslib/emas-2900/edwin_shapes.txt ====
{ EDWIN Geometric utility routines added } %end %of %list
! Set up routines
%external %routine %spec SET WIRE MODE %alias "EDWIN_SET_WIRE_MODE" (%integer MODE)
%external %routine %spec SET COLOUR MAP %alias "EDWIN_SET_COLOUR_MAP" (%integer ADR, RED, BLUE, GREEN)
! Constants for wire modes
%constant %integer FLAT ENDS = 0
%constant %integer ROUND ENDS = 1
%constant %integer EXTENDED ENDS = 2
! Drawing routines
%external %routine %spec ARC %alias "EDWIN_ARC" (%integer OX, OY, RAD, START ANG, END AND)
%external %routine %spec SECTOR %alias "EDWIN_SECTOR" (%integer OX, OY, RAD, START ANG, END AND)
%external %routine %spec CIRCLE %alias "EDWIN_CIRCLE" (%integer RAD)
%external %routine %spec RECTANGLE %alias "EDWIN_RECTANGLE" (%integer XL, YL, XU, YU)
%external %routine %spec BOX %alias "EDWIN_BOX" (%integer L, W, %record (POINTFM) %name C, D)
%external %routine %spec WIRE %alias "EDWIN_WIRE" (%integer W, NP, %record (POINTFM) %array %name P)
%external %routine %spec POLYGON %alias "EDWIN_POLYGON" (%integer NP, %record (POINTFM) %array %name P)
%list;%end %of %file
==== ecslib/emas-2900/pics_mary.txt ====
PPPPPP EEEEEE A CCCCCC EEEEEE OOOOOO N N
P P E A A C E O O NN N
PPPPPP EEE A A C EEE O O N N N
P E AAAAAAA C E O O N N N
P EEEEEE A A CCCCCC EEEEEE OOOOOO N NN
EEEEEE A RRRRRR TTTTTTT H H
E A A R R T H H
EEE A A RRRRRR T HHHHHH
E AAAAAAA R R T H H
EEEEEE A A R R T H H
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMHH H HIIIIIHHHHMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMHI888888888888888IIMMMMMMMMMMMMMMMMMMMMMMM
==== ecslib/emas-2900/oldgeneraly_toprinter.txt ====
TOPRINTRONIX <file name> / <device or file>
This program was written by Mark Taunton to allow files produced by
programs such as LAYOUT to be sent to Printronix printers, with the
underlining converted to the format which the printer requires.
The input file must be a text file, and the output can either be a file
which may be sent to the required printer later by the command LIST,
or the name of a printer.
eg. TOPRINTRONIX FILE/NEWFILE
or TOPRINTRONIX FILE/.LP41
The following commands are also provided which provide default output
device names.
TOLP41 <file> TOLP15 <file> TOLP78 <file>
==== ecslib/emas-2900/lpd_layupls.txt ====
$A TAB=5,10,15,30
$L1UM
@CHANGES TO .EMAS .LAYOUT
$A INDENT=1
$B$I0
1.
@NEW PARAMETER .INVO (OUTPUT CASE INVERT) DISTINCT FROM
.INVERT, WHICH NOW APPLIES ONLY TO INPUT. @THIS PERMITS
PROPER TREATMENT OF THE SITUATION WHERE DIFFERENT CASE
CONVENTIONS ARE REQUIRED IN THE INPUT AND UPDATED OUTPUT.
@THE DEFAULT SETTINGS ASSUME UPPER-CASE LETTERS PLUS CASE
MARKERS, WITH THE LETTERS SIGNIFYING LOWER-CASE UNLESS
GOVERNED BY A MARKER. @NORMAL UPPER AND LOWER-CASE REPRESENTATION
IS ACHIEVED BY .$$A$ CAP=0;$ CAPSH=0;$ INVERT=0 (FOR INPUT)
AND .$$A$ CAPO=0;$ CAPSHO=0;$ INVO=0 (FOR OUTPUT).
$B$I0
2.
$T1
$$@L0 IS INTERPRETED AS INTRODUCING AN INDEFINITE NUMBER OF EXPLICIT
LINES.
@THE EFFECT EXTENDS TO THE NEXT DIRECTIVE.
==== ecslib/emas-2900/deptfile.txt ====
$$
IMP77$
*IMP77LIB$
*IMP77AY$
IMP77PD$
RUN77S$
ROUTINES TO RUN IMP77 PROGRAMS
AND COMPILE THEM. NOTE IMP77 COMPILER ITSELF
IS NOT RELEASED TO CSDEPT YET.
$
P.ROBERTSON ECSC17
$
$$
EDWIN$
*EDWINLIB$
*TVIEW,*EDWINTY,*CALCOMP$
EDWINPD$
*TEKPAC,EDWINT,TVIEWSF,CALCOMPS$
Graphics package for any graphics terminal.
$
Gordon Hughes, ECSC01
==== ecslib/emas-2900/edwin_pspecs.txt ====
{ EDWIN procedure specs in PASCAL format.}
{ procedures for initialisation and termination}
procedure initialisefor (devicetype : integer); extern;
procedure terminateedwin; extern;
{ Output primitives}
procedure moveabs (x,y : integer); extern;
procedure moverel (dx,dy : integer); extern;
procedure lineabs (x,y : integer); extern;
procedure linerel (dx,dy : integer); extern;
procedure markerabs (n,x,y : integer); extern;
procedure markerrel (n,dx,dy : integer); extern;
procedure character (sym : char); extern;
{ Control}
procedure newframe; extern;
procedure update; extern;
procedure storeon (stream : integer); extern;
procedure storeoff; extern;
procedure viewon (stream : integer); extern;
==== ecslib/emas-2900/lpd_ldocls.txt ====
$A MARK=2
$A PAGENO=1; JUST=1
$A TAB=12,20,28
$L1CUM
LAYOUT: DOCUMENT PRODUCTION PROGRAM
$P2 @THE BASIC FUNCTION OF .LAYOUT IS TO PRODUCE AN APPROPRIATELY PAGED AND
FORMATTED DOCUMENT FROM A SOURCE FILE IN WHICH THE REQUIRED LAYOUT IS
INDICATED BY %DIRECTIVES INTERSPERSED WITH THE TEXT; IN GENERAL, THE
SPACING AND LINE-STRUCTURE OF THE SOURCE ARE NOT SIGNIFICANT. @A
SECONDARY FUNCTION IS TO OUTPUT AN UPDATED SOURCE FILE SIMILAR TO THE
ORIGINAL EXCEPT THAT THE LINE-STRUCTURE FOLLOWS THAT OF THE FORMATTED
DOCUMENT (SUBJECT TO LIMITATIONS OF LINE LENGTH).
$P @IN ADDITION THE PROGRAM OPTIONALLY PROVIDES FOR THE APPLICATION OF
SHIFT CONVENTIONS TO THE SOURCE (AND UPDATED SOURCE) TO PERMIT THE
REPRESENTATION OF UPPER AND LOWER CASE LETTERS AND UNDERLINED CHARACTERS
WITHIN A RESTRICTED CHARACTER SET. @CODE CONVERSION IS UNDERSTOOD TO BE
CARRIED OUT OUTSIDE THE LAYOUT PROGRAM PROPER, WHICH USES A CHARACTER
SET IN WHICH BOTH UPPER AND LOWER CASE LETTERS AND UNDERLINED CHARACTERS
ARE REPRESENTED BY SINGLE CODES. @THIS CHARACTER SET IS FULL .ASCII
==== ecslib/emas-2900/generals_newuserss.txt ====
!TITLE Source of NEWUSERS
!<
%external %integer %fn %spec OUTPOS
%external %integer %fn %spec UINFI (%integer I)
%external %string (255) %fn %spec UINFS (%integer I)
%const %integer SYS PROCS = 5; ! Number of system processes
%const %integer OCP TYPE = 10
%const %integer TERMINAL WIDTH = 15
%system %routine %spec FOR ALL USERS (%routine USE)
%system %string (255) %fn %spec USERNAME (%string(255) USER, %integer MACHINE)
%system %integer %fn STOI (%string (255) S)
%integer SYM
%if LENGTH(S)>0 %start
%result = - STOI (SUB STRING (S, 2, LENGTH(S))) %if CHARNO(S,1)='-' %and LENGTH(S)>1
SYM = CHARNO(S,LENGTH(S))-'0'
LENGTH(S) = LENGTH(S)-1
%result = 10*STOI(S)+SYM
%finish
%result = 0
==== ecslib/emas-2900/pics_calender_december.txt ====
XXXXXXXXXXXXX
XXXX XXXX
X XXX
XX XXX
XX XX
XX XX
XX XX
XX XX
XX XX
XX XX
XX XXXX XX
XXXXXXXXXX XX X X XXX X XX
RRRR XXX X XX X X X X X
RRRRRRRRR XXXXX XXXXXX XX XX X X X X
RRRRRRRRRRRR XXX X X X X
RRRRRRRRRRRRRRR XXX X X X
X RRRRRRRRRRRRRR XXX X XX XX
==== ecslib/emas-2900/lisp_release70.txt ====
IMP LISPSPDF_LISPRUNS70,LISPRUNY
INSERT LISPRUNY
PERMIT LISPRUNY,,R
IMP LISPSPDF_LISPV08S70,LISPV08Y
INSERT LISPV08Y
PERMIT LISPV08Y,,R
COPY LISPSPDF_INITLSP8,INITLISP
PERMIT INITLISP,,R
==== ecslib/emas-2900/edwin_device.txt ====
{ EDWIN internal procedures for device driver support } %end %of %list
! EMAS specifics -
%dynamic %integer %fn %spec REM %alias "IMP_REM" (%integer A, B)
%dynamic %string (255) %fn %spec ItoS %alias "IMP_I_TO_S" (%integer I, P)
%dynamic %string (255) %fn %spec RtoS %alias "IMP_R_TO_S" (%long %real R, %integer A, B)
%dynamic %routine %spec Open Output %alias "IMP_OPEN_OUTPUT" (%integer N, %string (255) S)
%dynamic %routine %spec Close Output %alias "IMP_CLOSE_OUTPUT"
%dynamic %routine %spec OPER MESSAGE %alias "EDWIN_OPER_MESSAGE" (%string (255) S)
%dynamic %routine %spec OPER INTERACT %alias "EDWIN_OPER_INTERACT" (%string (255) S)
%external %integer %spec VIEWING %alias "EDWIN___VIEWING"
%dynamic %routine %spec TEK INPUT %alias "EDWIN___TEK_INPUT" (%integer %name State, X, Y, %integer INVOKE CURSOR)
%record %format DEV DATA FM (%integer DEV NO { logical device number },
%string (31) NAME { Text name for the device },
%integer TYPE { Model number of the device },
%integer ARF { Aspect Rationing Factor as a percentage },
%integer DVX, DVY { Default Viewport X and Y },
%integer MVX, MVY { Maximum Viewport X and Y },
==== ecslib/emas-2900/pics_asterix.txt ====
+
+
+
+
+
==== ecslib/emas-2900/graph16s.txt ====
%EXTERNALROUTINE FLO(%STRING (63) S)
%STRING (63) INFILE, OUTFILE
%EXTERNALROUTINESPEC DEFINE(%STRING (63) S)
!
! FRONT PANEL USEAGE INFO.
!
%SHORTINTEGERARRAY PINS(0:63,1:38)
!
! PIN PARAMS. TO DRAWING ROUTINES
!
%INTEGERARRAY PICT(1 : 11)
%INTEGERARRAY POSITION(16 : 63)
%INTEGERARRAY LINK, DATA(1 : 1024)
%INTEGER STARTS, ASL, WIRES
%CONSTSTRING (1) SNL = '
'
!
! PIN USEAGE TEXT
!
%CONSTSTRING (11) %ARRAY TXT(-64 : 15) = %C
'START','FFCOMP','FFSET0','FFSET1','FFRDDATA','FFDATA',
==== ecslib/emas-2900/vlsiuse_nmos8.txt ====
IDENT *
ND 3 1 0 18
NP 4 2 0 15
NM 2 4 0 18
NI 6 8 0 5
NB 7 7 0 2
NC 1 0 0 10
NG 8 12 0 1
NT 1 15 0 1
NV 5 15 0 3
ZZZ
==== ecslib/emas-2900/generals_prints.txt ====
! TOPRINTRONIX Mark Tauntons program to send files to line printers.
%external %routine %spec open output (%integer st, %string (255) file)
%external %routine %spec open input (%integer st, %string (255) file)
%external %routine %spec close input
%external %routine %spec close output
%const %integer max lines = 10
%const %integer CR = 13
%external %routine TOPRINTRONIX (%string (255) PARM)
%string(255) out, rline, sline, line, spaces
%integer term, outf, c, maxr, maxs, ms, mr, p
%own %byte space = ' '
%routine READLINE (%string(*) %name line, %integername term)
%integer s
line = ""
%cycle
read ch (s)
term = s %and %return %if s = NL %or s = CR
==== ecslib/emas-2900/coms_release.txt ====
! Program to update a member of a commected PD file.
! Form : RELEASE CHIMPY,GENERALY
! or RELEASE ECSC10.CY,GENERALY_CHIMPY
%const %integer TRUE = 1, FALSE = 0
%external %routine %spec COPY (%string (255) PARM)
%external %routine %spec NEWGEN (%string (255) PARM)
%external %routine %spec VIEW (%string (255) PARM)
%external %routine RELEASE (%string (255) FILE)
%byte VIEWING
%string (255) NF,SF,PD
%unless FILE -> SF.(",").PD %start
Print string ("RELEASE fails - format is RELEASE ECSC10.CHIMPY,GENERALY!")
newline
%stop
%finish
VIEWING = FALSE
VIEWING = TRUE %if PD -> PD.("!")
%unless PD -> PD.("_").NF %start
==== ecslib/emas-2900/intexts.txt ====
!
!**************************************************
!* *
!* VARIOUS EXTERNAL ROUTINES FOR IMPI *
!* *
!***************************************************
!
%TRUSTEDPROGRAM
%EXTERNALINTEGER MON REP = 0; ! REPETITION COUNTER FOR RESUMES
%EXTERNALBYTEINTEGER MONLOCK
%EXTRINSICINTEGER MONFRAME, MONINFO, BRKR9AD
%OWNSHORTINTEGER TRAP BLOCK, TRAP LINE
!
%EXTERNALROUTINE EXTINIT
*MVI_4(13),X'55'; ! FLAG FOR MDIAG
%END
%EXTERNALROUTINE HEX(%INTEGER N)
%SHORTROUTINE
==== ecslib/emas-2900/pics_calender_september.txt ====
XXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
X X X XXXXXXXXXXXXXXXXXXXXXXXXXXXX
X X XXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXX X X X XXXXXXXXXXXXXXXXX
XX XXXXXXXXXXXXXXXX
XX XXXXXXXXXXXXXXXXXXXX
X XXXXXXXXXXXXXX
X XXXXXXXXX XXXXXXXXXXXXXXXXX XXXXXX
XX X XXXXXXXXXXXXXXXXXXXXXXXXXX
X XXXXXXXXXXXXXXXXXXXXXXXXXXX
XX XXXXXXXXXXXXXXXXXXXXXXXXXX
==== ecslib/emas-2900/pics_nell.txt ====
The Ballad Of Eskimo Nell
When a man grows old and his balls grow cold
And the end of his knob turns blue
When it's bent in the middle like a one-stringed fiddle
He can tell you a yarn or two
So find me a seat and stand me a drink
And I'll tell you a tale as well
Of Dead-eyed Dick and Mexican Pete
And the gentle Eskimo Nell
Now when Dead-eyed Dick and Mexican Pete
Go forth in search of fun
It's usually Dick that wields the prick
And Mexican Pete the gun
And when Dead-eyed Dick and Mexican Pete
Are sore depressed and sad
'Tis usually the cunt that bears the brunt
But the shooting ain't so bad
==== ecslib/emas-2900/edwin_inc.txt ====
{ NB: Specs for Version 4 of EDWIN : See ECSLIB.EDWIN_SPECS for latest info }
{ EDWIN routine specs added } %end %of %list
! Routines for initialisation and termination
%external %routine %spec INITIALISE FOR (%integer DEVICE TYPE)
%external %routine %spec TERMINATE EDWIN
! Output primitives
%external %routine %spec MOVE ABS (%integer X,Y)
%external %routine %spec MOVE REL (%integer DX,DY)
%external %routine %spec LINE ABS (%integer X,Y)
%external %routine %spec LINE REL (%integer DX,DY)
%external %routine %spec MARKER ABS (%integer N,X,Y)
%external %routine %spec MARKER REL (%integer N,DX,DY)
%external %routine %spec CHARACTER (%integer SYM)
%external %routine %spec TEXT (%string (255) ST)
%external %routine %spec TEXT COLOUR ESCAPE %alias "EDWIN_TEXT_COL_ESC" (%integer CH)
%external %routine %spec TEXT FONT ESCAPE %alias "EDWIN_TEXT_FONT_ESC" (%integer CH)
! Control
%external %routine %spec NEW FRAME
==== ecslib/emas-2900/vlsiuse_roller.txt ====
LAYERS P+D+M+C
==== ecslib/emas-2900/basicpd_bintrs.txt ====
%BEGIN
!
! DDDD EEEEEE BBBB BBBB II EEEEEE
! DD DD EE BB BB BB BB II EE
! DD DD EE BB BB BB BB II EE
! DD DD EEEEEE BBBB BBBB II EEEEEE
! DD DD EE BB BB BB BB II EE
! DD DD EE BB BB BB BB II EE
! DDDD EEEEEE BBBB BBBB II EEEEEE
!
! De EdinBurgh Basic IntErpreter
! _ _ _ _ _ _
!***************************************************************
!***************************************************************
!** **
!** WILLIAM ALAN PATERSON **
!** **
!** COMPUTER SCIENCE 4 1974/75 **
!** **
!***************************************************************
!***************************************************************
==== ecslib/emas-2900/gamespd_destruct.txt ====
%EXTERNALROUTINE DESTRUCT
%INTEGERARRAY AIR(-3:74,-3:21),MSX(1:2),MSY(1:2),U(1:3),V(1:3)
%INTEGER PLX,PLY,HITS,X,Y
%STRING(40) SEQ
%ROUTINE INSTRUCT
%ROUTINE P(%STRING(72) SEQ)
PRINTSTRING(SEQ.SNL)
%END
P(" In this game there are two missiles, a plane and an air-base.")
P("You control the plane and the missiles are controlled by the")
P("computer. The object is to destroy the missiles before they")
P("destroy the air-base. They will be diverted from doing this and")
P("will attack you if you come too close. The game is at an end")
P("when either the base is blown up, or you have blown up both")
P("missiles. You may destroy your own base if you wish.")
P(" To move your plane give instuctions like this: ")
P(" W2S3 or W5N6 or E4S2 N")
P(" W=west, E=east, N=north, S=south. W E")
P(" You may move a maximum of 8 east or west S")
P("but only 6 north or south. The procedure is the same for")
P("firing at the missiles. the count being taken from where")
==== ecslib/emas-2900/lisp_lispv06s.txt ====
%EXTERNALROUTINESPEC PROMPT(%STRING(15) S)
%EXTERNALROUTINESPEC CLOSE STREAM(%INTEGER N)
%EXTERNALROUTINESPEC DEFINE(%STRING(63) S)
%EXTERNALROUTINE LISP INTP(%INTEGER SPACE, INITMODE)
!
! ***** READ ROUTINES *****
!
%INTEGERFNSPEC RATOM
%INTEGERFNSPEC READ SEXP(%STRING(15) PMPT)
!
! ***** PRINT ROUTINES *****
!
%ROUTINESPEC PRINT CHARS(%STRING(72) PHRASE)
%STRING(15)%FNSPEC NUMBER(%INTEGER I)
%STRING(72)%FNSPEC PNAME(%INTEGER INDEX)
%ROUTINESPEC PRINT(%INTEGER INDEX)
!
! ***** LISP ROUTINES *****
!
%INTEGERFNSPEC PUSH(%INTEGER INDEX)
%INTEGERFNSPEC CONS(%INTEGER CAR, CDR)
==== ecslib/emas-2900/lpd_layout15.txt ====
%BEGIN; !DOCUMENT LAYOUT PROGRAM
!SYMBOLIC CONSTANTS
%OWNINTEGER SIN=1; !SOURCE INPUT STREAM
%OWNINTEGER ERR=0, DOC=1, SOUT=2; !OUTPUT STREAMS
%OWNINTEGER LBOUND=200; !LINE BUFF BOUND
%OWNINTEGER ABOUND=200; !ATOM BUFF BOUND
%OWNINTEGER SBOUND=200; !SOURCE LINE BUFF BOUND
%OWNINTEGER VBOUND=25; !VECTOR (EG TAB) BOUND
%OWNINTEGER ESCBIT=256, UNDBIT=128, CASEBIT=32
%OWNINTEGER CHARMASK=255, BASICMASK=127, LETMASK=95
%OWNINTEGER SENTSP=544; !512+' '
!LAYOUT PARAMETERS
%OWNINTEGER TOP=2, BOTTOM=4, LEFT=0, PAGE=60, LINE=72
%OWNINTEGER SLINE=80, NLS=1, SGAP=2, PGAP=3
%OWNINTEGER INDENT=0, SECTNO=0, PAGENO=0, START=1
%OWNINTEGER ESCAPE='$', CAP='@', UND='_', CAPSH='.', UNDSH='%'
%OWNINTEGER CAPO='@', UNDO='_', CAPSHO='.', UNDSHO='%'
%OWNINTEGER INVERT=32, ASCII=1, JUST=0, MARK=0
%OWNINTEGERARRAY TAB(0:25) = 1,9,17,25,33,41,49,57,65,73,81,
89,97,105,113,121,129,137,145,153,161,169,177,185,193,201
%OWNINTEGERARRAY TEMPA(0:25) = 1,9,17,25,33,41,49,57,65,73,81,
==== ecslib/emas-2900/oldgeneraly_clean.txt ====
!TITLE CLEAN
!< General information
The command CLEAN can be used to inspect a users files, and perform
a variety of file management operations on them. It can be used with
both forground and archived files, and also members of partitioned
files. A number of options are provided to select which files are
to be 'cleaned'.
The command has the form : CLEAN mask,options
MASK specifies which files names are to be cleaned -
eg. CLEAN SS#*
CLEAN *TEST
CLEAN PDFILE_MEM*
CLEAN ECSLIB.CIF*
CLEAN T*S
==== ecslib/emas-2900/pdp16pd_arthmans.txt ====
$A MARK=2;UNDSH='@';UND=0;NLS=2
$A CAP=0;CAPO=0;CAPSH=0;CAPSHO=0;INVERT=0;INVO=0
$A TOP=4;BOTTOM=8;UNDSHO='@';SLINE=72
$A LEFT=10;LINE=62;PAGE=52;JUST=1
$A TAB=6,11,16,21,31,41,26
$B10
$L1MU
USERS GUIDE TO A PDP_16 DESIGN AID
$B4
$L1UM
COMPUTER SCIENCE IV
$B
$L1MU
GROUP PROJECT 1974
$B
$L5M
A. ANDERSON
M.A.C. CURRIE
L.F. MARSHALL
P.S. ROBERTSON
==== ecslib/emas-2900/generals_pdlists.txt ====
!TITLE Source of S#PD LIST
!<
%CONST %INTEGER SS pd file type = 6
%CONST %INTEGER SS opt file type = 9
!( S# pd list
%SYSTEM %ROUTINE pd list(%INTEGER start address, types wanted)
! Prints the names of the members of the partitioned file
! connected at address 'start address' and their sub-members in turn.
! Prints out the file-type for each member if 'types wanted' # 0
!)
%ROUTINE lower case(%STRING(255) Text)
%INTEGER each
%IF LENGTH(Text)>1 %START
%CYCLE each = 2,1,LENGTH(Text)
CHARNO(Text,each) = CHARNO(Text,each)!!32 %C
%IF 'A'<=CHARNO(Text,each)<='Z'
==== ecslib/emas-2900/lisp_lispv07s.txt ====
%EXTERNALROUTINESPEC PROMPT(%STRING(15) S)
%EXTERNALROUTINESPEC CLOSE STREAM(%INTEGER N)
%EXTERNALROUTINESPEC DEFINE(%STRING(63) S)
%EXTERNALROUTINE LISP INTP(%INTEGER SPACE, INITMODE)
!
! ***** READ ROUTINES *****
!
%INTEGERFNSPEC RATOM
%INTEGERFNSPEC READ SEXP(%STRING(15) PMPT)
!
! ***** PRINT ROUTINES *****
!
%ROUTINESPEC PRINT CHARS(%STRING(72) PHRASE)
%STRING(15)%FNSPEC NUMBER(%INTEGER I)
%STRING(72)%FNSPEC PNAME(%INTEGER INDEX)
%ROUTINESPEC PRINT(%INTEGER INDEX)
!
! ***** LISP ROUTINES *****
!
%INTEGERFNSPEC PUSH(%INTEGER INDEX)
%INTEGERFNSPEC CONS(%INTEGER CAR, CDR)
==== ecslib/emas-2900/generals_build_userbuild.txt ====
%conststring(1)snl="
"
%externalstring(63)%fnspec itos(%integer i,j)
%begin
!
!
%externalroutinespec open input(%integer st,%string(255)s)
%externalroutinespec open output(%integer st,%string(255)s)
open input(1,"T#USERLIST")
open output(2,"T#USERTEXT")
select input(1)
select output(2)
!
!
%routine read sequence(%string(*)%name s,%integer t)
skip symbol %while next symbol=' '
S=""
S=S.next item %and skipsymbol %until next symbol=t
skipsymbol
==== ecslib/emas-2900/toals_view_getusers.txt ====
%BEGIN
%INTEGER START,FIN
%INTEGER I
SELECTOUTPUT(1)
READ(START)
I = START+X'28'
FIN=START+X'2000'-2
%CYCLE
%WHILE I<FIN %CYCLE
%EXIT %IF BYTEINTEGER(I)='/'
I=I+1
%REPEAT
%EXIT %IF I>=FIN
I=I-3
PRINTSTRING(STRING(I));NEWLINE
I=I+BYTEINTEGER(I)
%REPEAT
%ENDOFPROGRAM
==== ecslib/emas-2900/vlsiuse_fiber.txt ====
LAYERS I+B+G
==== ecslib/emas-2900/generals_pdanals.txt ====
!TITLE Source of PD ANAL
!<
%SYSTEM %STRING %FN %SPEC FAILURE MESSAGE(%INTEGER FAULT)
%EXTERNAL %ROUTINE %SPEC DEFINE(%STRING(255) NUMBER NAME)
%EXTERNAL %ROUTINE %SPEC CLEAR(%STRING(255) NUMBER)
%SYSTEM %INTEGER %FN %SPEC pdaddr(%STRING(255) pdfile)
%SYSTEM %ROUTINE %SPEC pd list(%INTEGER CONNECT ADDRESS, %C
TYPES FLAG)
!(PD ANAL
! PDANAL PDFILE, * / OUTPUT
!
! PDFILE MAY BE TOP LEVEL FILE, OR A MEMBER OF ANOTHER PDFILE
! TO ANY DEPTH.
!
! OUTPUT MAY BE A FILE, OR ONE OF ".OUT" OR ".TT"
! - ".OUT" MEANS THE CURRENTLY SELECTED OUTPUT STREAM,
! - ".TT" MEANS THE INTERACTIVE TERMINAL.
!
! * MEANS EXTRA DATA IS WANTED (FILE-TYPES OF MEMBERS)
==== ecslib/emas-2900/vlsiuse_ra4.txt ====
SIZE 19 28
==== ecslib/emas-2900/pics_santa.txt ====
O
DD
D D
O OO
D O D
D O DD
OO D OOOO
D 9 D OO O
MMM D 9 OOOOO O
MMMMM MMM D OOOO
MM MM MOO D OO O
MM MM M OO D OOO O
MM MMM M OO D OOO OO
MM MMM OO D OOOOO
MMMMMMM OO D
MMMMMMMMM OO D
MMM D OO D
MM D OO D
==== ecslib/emas-2900/coms_back.txt ====
OPTION ITWIDTH=132
==== ecslib/emas-2900/lisp_lispv08s.txt ====
%EXTERNALROUTINESPEC PROMPT(%STRING(15) S)
%EXTERNALROUTINESPEC CLOSE STREAM(%INTEGER N)
%EXTERNALROUTINESPEC DEFINE(%STRING(63) S)
%EXTERNALROUTINE LISP INTP(%INTEGER SPACE, INITMODE)
!
! ***** READ ROUTINES *****
!
%INTEGERFNSPEC RATOM
%INTEGERFNSPEC READ SEXP(%STRING(15) PMPT)
!
! ***** PRINT ROUTINES *****
!
%ROUTINESPEC PRINT CHARS(%STRING(72) PHRASE)
%STRING(15)%FNSPEC NUMBER(%INTEGER I)
%STRING(72)%FNSPEC PNAME(%INTEGER INDEX)
%ROUTINESPEC PRINT(%INTEGER INDEX)
!
! ***** LISP ROUTINES *****
!
%INTEGERFNSPEC PUSH(%INTEGER INDEX)
%INTEGERFNSPEC CONS(%INTEGER CAR, CDR)
==== ecslib/emas-2900/pics_calender_april.txt ====
###### #####
########## ##########
############ #############
############## ###############
############### ################
############### ################
############### ################
########## ############
####### ########
##### #####
### ########
###### ##########
######### ############
############ #############
############# ##############
############### ## #### ############
############ ############# ##########
######### ############# ######
###### ##############
==== ecslib/emas-2900/iperm.txt ====
%constinteger nl=10
%integermapspec integer(%integer a)
%realmapspec real(%integer a)
%string(*)%mapspec string(%integer a)
%record(*)%mapspec record(%integer a)
%bytemapspec byteinteger(%integer a)
%shortmapspec shortinteger(%integer a)
%halfmapspec halfinteger(%integer a)
%longintegermapspec longinteger(%integer a)
%longrealmapspec longreal(%integer a)
%longrealmapspec longlongreal(%integer a)
%bytemapspec length(%string(*)%name s)
%bytemapspec charno(%string(*)%name s,%integer n)
%integerfnspec addr(%name n)
%string(1)%fnspec tostring(%integer k)
%string(1)%fnspec nextitem
%integerfnspec nextch
%integerfnspec nextsymbol
%routinespec readch(%name n)
%routinespec readsymbol(%name n)
%routinespec readitem(%string(*)%name s)
==== ecslib/emas-2900/oldgeneraly_ecceview_preface.txt ====
!TITLE ECCE FOR VIDEOS
E C C E F O R V I D E O S
This version of ECCE combines the capabilities of a conventional
context editor with many of the features of a screen editor. It is
supported by the Department of Computer Science and comments are
welcomed.
First-time users on EMAS should view the important points in the
section on IMPLEMENTATIONS. Users who do not already have the Computer
Science library in their search list should give the once-only command
OPTION(SEARCHDIR=ECSLIB.GENERAL). The command name is VECCE.
Hamish Dewar April 1983
==== ecslib/emas-2900/generals_widelists.txt ====
!TITLE Source of WIDELIST
!<
%external %integer %fn %spec UINFI (%integer PARM) { 15 = terminal width }
%SYSTEM %ROUTINE %SPEC FILL(%INTEGER LENGTH,START,CHARACTER)
%SYSTEM %ROUTINE %SPEC IOCP(%INTEGER EPNO,PARM)
%SYSTEM %ROUTINE %SPEC P SYSMES(%INTEGER ROOT,ERROR)
%SYSTEM %STRING(15) %FN %SPEC ITOS(%INTEGER I)
%SYSTEM %INTEGER %FN %SPEC PSTOI(%STRING(15) S)
%EXTERNAL %INTEGER %FN %SPEC RETURN CODE
%EXTERNAL %ROUTINE %SPEC CLEAR(%STRING(255) STREAM)
%EXTERNAL %ROUTINE %SPEC DEFINE(%STRING(255) STREAMS)
%EXTERNAL %ROUTINE %SPEC DESTROY(%STRING(255) FILE)
%SYSTEM %ROUTINE %SPEC SET F NAME(%STRING(255) S)
%EXTERNAL %ROUTINE %SPEC SS F OFF
%EXTERNAL %ROUTINE %SPEC SS F ON
%EXTERNAL %ROUTINE %SPEC NEW SMFILE(%STRING(255) FILE AND SIZE)
%EXTERNAL %INTEGER %FN %SPEC SM ADDR(%INTEGER CHANNEL, %INTEGER %NAME LENGTH)
%SYSTEM %INTEGER %FN %SPEC PD ADDR(%STRING(255) FILE)
%EXTERNAL %ROUTINE %SPEC PROMPT(%STRING(15) TEXT)
==== ecslib/emas-2900/gamespd_hang.txt ====
%END %OF %LIST; ! The list of Key words.
%CONSTSTRING(15)%ARRAY WORDS(0:2233)="CABLE","BACON","ACIDS","AGAIN",
"BANAL","CACTI","CANAL","BALLS","BEGIN","BATCH","BASIC","BANKS",
"DANCE","ABOVE","BEING","EAGLE","CALLS","CHECK","BLACK","ABOUT",
"CARDS","CHEAT","BEGUN","AMBER","DEATH","CASES","BELLS","ALARM",
"ACTOR","BLANK","AFTER","BELOW","FACTS","CHILD","CELLO","CELLS",
"DATES","ALGOL","FAILS","CLEAR","FAITH","EATEN","FALSE","BOARD",
"BLIND","DEMON","DIGIT","BLOCK","CLASS","EDITS","DATUM","CLIMB",
"BREAK","EARTH","COCOA","BRAND","CODES","CITED","CLAWS","ALLOW",
"EIGHT","BOATS","IDEAS","COBOL","HANDS","BRAIN","CLOCK","FARMS",
"ENDED","DEPTH","BIRTH","COALS","AMONG","ARMED","HEALS","HEART",
"HAIRS","BRICK","CITES","HATED","COAST","FAULT","ASIAN","GIANT",
"DISCS","BONES","ELBOW","FIFTH","HATES","CONIC","APRIL","BRING",
"COMES","JEANS","FINDS","CLUBS","DISKS","BOOKS","HELLO","CONES",
"DOING","FIFTY","HAPPY","CRIME","ARRAY","APPLY","FILMS","LEADS",
"BUILD","HELPS","BULGE","FLOCK","FIRES","ERECT","IMAGE","GLASS",
"LAKES","LEGAL","LAMBS","FREED","BOXES","GOALS","MAIDS","COULD",
"DRINK","CYBER","LEAVE","LEARN","MAKES","FREES","HILLS","LARGE",
"DRIVE","INDIA","BROWN","GIVEN","GREEK","FIRST","GREAT","COUNT",
"GREEN","OCEAN","MARCH","GOING","GIVES","ENTER","FORCE","LAUGH",
"FORGE","AUNTS","GIRLS","GRAVE","MATCH","PEACE","NAMED","FLOUR",
==== ecslib/emas-2900/oldgeneraly_compare.txt ====
COMPARE input1,input2/output
Compares two text files, and lists the differences between
them on a line by line basis. This is useful when editing
from one file to another, if you forget later which file
had the up to date information.
The /output is optional and defaults to the terminal.
The input files may be sub-sub-... members of a pdfile.
==== ecslib/emas-2900/iskimppd_iskimps.txt ====
%EXTERNALROUTINE ISKIMP(%STRING(63) S)
%ROUTINESPEC READ LINE
%INTEGERFNSPEC COMPARE(%INTEGER PSP)
%ROUTINESPEC SS
%ROUTINESPEC FAULT(%STRING(63) S)
%INTEGERFNSPEC CHNEXT
%INTEGERFNSPEC NEWCELL
%INTEGERFNSPEC RETURN CELL(%INTEGER I)
%ROUTINESPEC PRINT NAME(%INTEGER I)
%ROUTINESPEC PHEX(%INTEGER I,J)
%INTEGER I,J,AP,APP,TP,ASL,BTN,CHP,FAULTS,NL,LEVEL,CA,COMP,SCF,PARS
%INTEGER LOPR,ASSOPP,LSTPP
%OWNSHORTINTEGERARRAY PS(-1000:-573)=%C
-997,-910,-855,-984, 201, 198,-775,-761, 212, 200, 197, 206,
-910,-863,-872,-855,-980, 2, 58,-1000,-971, 198, 201, 206,
201, 211, 200,-872,-855,-961, 201, 206, 212, 197, 199, 197,
210,-717,-855,-955,-673,-654, 1,-647,-855,-950, 197, 206,
196,-855,-943, 194, 197, 199, 201, 206,-855,-929, 197, 206,
196, 207, 198, 208, 210, 207, 199, 210, 193, 205,-855,-924,
42, 3,-599,-855,-918, 42,-841, 2,-578,-855,-913, 42,
==== ecslib/emas-2900/fundsjob.txt ====
whichemas
funds
donatefunds 5.00,ecsc17
documents
#connect edwin
#connect iperm
==== ecslib/emas-2900/edwin_specs.txt ====
{ EDWIN routine specs added } %end %of %list
! Routines for initialisation and termination
%external %routine %spec INITIALISE FOR %alias "EDWIN_INIT" (%integer DEVICE TYPE)
%external %routine %spec TERMINATE EDWIN %alias "EDWIN_TERM"
! Output primitives
%external %routine %spec MOVE ABS %alias "EDWIN_MOVE_ABS" (%integer X, Y)
%external %routine %spec MOVE REL %alias "EDWIN_MOVE_REL" (%integer DX, DY)
%external %routine %spec LINE ABS %alias "EDWIN_LINE_ABS" (%integer X, Y)
%external %routine %spec LINE REL %alias "EDWIN_LINE_REL" (%integer DX, DY)
%external %routine %spec MARKER ABS %alias "EDWIN_MARK_ABS" (%integer N, X, Y)
%external %routine %spec MARKER REL %alias "EDWIN_MARK_REL" (%integer N, DX, DY)
%external %routine %spec CHARACTER %alias "EDWIN_CHAR" (%integer SYM)
! Text output
%external %routine %spec TEXT %alias "EDWIN_TEXT" (%string (255) ST)
%external %routine %spec TEXT COLOUR ESCAPE %alias "EDWIN_TEXT_COL_ESC" (%integer CH)
%external %routine %spec TEXT FONT ESCAPE %alias "EDWIN_TEXT_FONT_ESC" (%integer CH)
! Control
==== ecslib/emas-2900/gamespd_drafts.txt ====
%EXTERNALROUTINE DRAUGHTS(%STRING(12) S)
%EXTERNALROUTINESPEC CPULIMIT (%STRING(255) S)
%EXTERNALROUTINESPEC PROMPT(%STRING(15) S)
%OWNINTEGER MOB WT = 6
%CONSTINTEGER TRUE =1, FALSE = 0
%OWNINTEGER BACK WT = 4
%OWNINTEGER CENT WT = 4
%OWNINTEGER ADV1 WT = 450
%OWNINTEGER ADV2 WT = 50
%OWNINTEGER CRAMP WT = 6
%OWNINTEGER MON = 'Q'
%OWNINTEGER A WIN = 0
%OWNINTEGER SEARCH LIMIT = 3
%OWNINTEGER CROWN = 1800
%OWNINTEGERARRAY BACK1(1:5) = 77, 75, 73, 71, 64
%OWNINTEGERARRAY BACK2(1:5) = 0, 2, 4, 6, 13
%OWNINTEGERARRAY CENTSQ(0:7) = 51, 53, 42, 44, 33, 35, 24, 26
%OWNINTEGERARRAY MOVE(0:7) = 9, 18, 11, 22, -9,-18,-11,-22
%OWNINTEGERARRAY PLAYER1(-1:26) = 'W', 1,
77, 75, 73, 71, 64, 66, 62, 60, 57, 55, 53, 51,
==== ecslib/emas-2900/edwin_icodes.txt ====
{ EDWIN Internal Code Deffinitions } %end %of %list
! Device Driver commands
%constant %integer dev initialise = 0
%constant %integer dev terminate = 1
%constant %integer dev update = 2
%constant %integer dev newframe = 3
%constant %integer dev move = 4
%constant %integer dev line = 5
%constant %integer dev char = 6
%constant %integer dev attribute = 7
%constant %integer dev low wb = 8
%constant %integer dev high wb = 9
%constant %integer dev code 10 = 10
%constant %integer dev code 11 = 11
%constant %integer dev low box = 12
%constant %integer dev high box = 13
%constant %integer dev circle = 14
%constant %integer dev code 15 = 15
%constant %integer MAX COM = 15 { device commands from 0 to MAX COM }
==== ecslib/emas-2900/lpd_jlaydoc.txt ====
EDINBURGH REGIONAL COMPUTING CENTRE September 1977
_____________________________________
LAYOUT: A DOCUMENT FORMATTING PROGRAM
LAYOUT is a document formatting program, written in IMP. Its input is a
character file consisting for the most part of the text of the document to be
produced. This source file is read once by LAYOUT and the output document file
is produced as it is read. Optionally, LAYOUT can also produce an updated
source file, the purpose of which is described later.
The source file is treated as a sequence of 'text atoms' separated by
delimiters, a delimiter being any number of spaces or newlines or both. A text
atom thus corresponds to a normal word, possibly followed by punctuation. The
program reads the text atoms and places them one by one, separated by ______
single
spaces, in a line buffer until the next text atom would exceed the line length
==== ecslib/emas-2900/edwin_reinsert.txt ====
newdirectory t#edwindir,400,4000
option activedir=t#edwindir
insert EDWIN_DDBBCY
insert EDWIN_DDCALRCOY
insert EDWIN_DDCATSY
insert EDWIN_DDCHASY
insert EDWIN_DDGIGIY
insert EDWIN_DDGP300Y
insert EDWIN_DDHPPLOTY
insert EDWIN_DDERCCHPY
insert EDWIN_DDHPTERMY
insert EDWIN_DDP300Y
insert EDWIN_DDSIGMAY
insert EDWIN_DDTEKY
insert EDWIN_DDWESTWY
insert EDWIN_DDX5AY
insert EDWIN_EDCONFIGY
insert EDWIN_EDWIN5Y
insert EDWIN_edtransy
insert edwin_fintery
insert edwin_pintery
==== ecslib/emas-2900/lisp_lispv08s70.txt ====
%EXTERNALROUTINESPEC PROMPT(%STRING(15) S)
%EXTERNALROUTINESPEC CLOSE STREAM(%INTEGER N)
%EXTERNALROUTINESPEC DEFINE(%STRING(63) S)
%EXTERNALROUTINE LISP INTP(%INTEGER SPACE, INITMODE)
!
! ***** READ ROUTINES *****
!
%INTEGERFNSPEC RATOM
%INTEGERFNSPEC READ SEXP(%STRING(15) PMPT)
!
! ***** PRINT ROUTINES *****
!
%ROUTINESPEC PRINT CHARS(%STRING(72) PHRASE)
%STRING(15)%FNSPEC NUMBER(%INTEGER I)
%STRING(72)%FNSPEC PNAME(%INTEGER INDEX)
%ROUTINESPEC PRINT(%INTEGER INDEX)
!
! ***** LISP ROUTINES *****
!
%INTEGERFNSPEC PUSH(%INTEGER INDEX)
%INTEGERFNSPEC CONS(%INTEGER CAR, CDR)
==== ecslib/emas-2900/include_pam.txt ====
%endoflist; !PAM interface
%recordformat paminfo(%byte GROUPSEP,KEYFLAG, %short allflags,
%record(paminfo)%name params)
%external%record(paminfo)%mapspec PAM
%constinteger PAM NEWGROUP=1, PAM NODEFAULT=2, PAM MAJOR=4, PAM KEEPCASE=8,
PAM INFILE=16, PAM OUTFILE=32
%external%routinespec DEFINE PARAM %alias "PAM_DEFSTRING" %c
(%string(255) text, %string(*)%name variable, %integer flags)
%external%routinespec DEFINE INT PARAM %alias "PAM_DEFINT" %c
(%string(255) text, %integername variable, %integer flags)
%external%routinespec DEFINE ENUM PARAM %alias "PAM_DEFENUM" %c
(%string(255) text, %bytename variable, %integer flags)
%external%routinespec DEFINE BOOLEAN PARAMS %alias "PAM_DEFBOOL" %c
(%string(255) text, %integername variable, %integer flags)
%external%routinespec PROCESS PARAMETERS %alias "PAM_PROCESS"(%string(255) parm)
%list;%endoffile
==== ecslib/emas-2900/edwin_pshapes.txt ====
{ EDWIN procedure specs for Pascal Geometric Utilities }
procedure SetWireMode (mode : integer); Extern;
procedure SetColourMap (adr, red, blue, green : integer); Extern;
procedure Circle (rad : integer); Extern;
procedure Rectangle (xl, yl, xu, yu : integer); Extern;
procedure Box (L, W : integer; var C, D : pointfm); Extern;
procedure Wire (W, NE : integer; var parray : pointa); Extern;
procedure Polygon (NE : integer; var parray : pointa); Extern;
==== ecslib/emas-2900/generals_deletes.txt ====
! A DELETE command for EMAS
! Gordon Hughes, September 1982
! The file fitting code from J. Wexler
%const %integer SSPDFILETYPE = 6
%record %format ARF (%string (31) NAME, %integer TYPE %or %string (11) SNAME, %integer SP12, KBYTES,
%byte %integer ARCH, CODES, CCT, OWNP, EEP, USE, CODES2, SSBYTE, FLAGS, SP29, SP30, SP31)
%record %format PDHF (%integer DATAEND, DATASTART, SIZE, FILETYPE, SUM, DATETIME, ADIR, COUNT)
%record %format RF (%integer CONAD, FILETYPE, DATASTART, DATAEND)
%record %format AFRECF (%string (11) NAME, %integer KBYTES, %string (8) DATE, %string (6) TAPE, %INTEGER CHAPTER, FLAGS)
%system %routine %spec PRINTMESS (%integer M)
%system %integer %fn %spec STOREMATCH (%integer L, A1, A2)
%system %routine %spec MOVE (%integer LENGTH, FROM, TO)
%external %integer %fn %spec DFILENAMES (%string (6) USER,
%record (AFRECF) %array %name INF, %integer %name FILENUM, MAXREC, NFILES, %integer FSYS, TYPE)
%external %integer %fn %spec DDESTROY (%string (6) USER, %string (11) FILE,
%string (8) DATE, %integer FSYS, TYPE)
%system %routine %spec SETWORK (%integer %name AD, FLAG)
%system %integer %map %spec COMREG (%integer I)
%system %routine %spec CONNECT (%string (31) FILE, %integer MODE, HOLE, PROT, %record (RF) %name R, %INTEGER %NAME FLAG)
%external %integer %fn %spec UINFI (%integer I)
==== ecslib/emas-2900/lpd_hlaydcls.html ====
<html><head></head><body><pre>
<hr>
<em>layout: document production program</em>
The basic function of LAYOUT is to produce an appropriately paged
and formatted document from a source file in which the required layout
is indicated by <em>directives</em> interspersed with the text; in general, the
spacing and line-structure of the source are not significant. A
secondary function is to output an updated source file similar to the
original except that the line-structure follows that of the formatted
document (subject to limitations of line length).
In addition the program optionally provides for the application of
shift conventions to the source (and updated source) to permit the
representation of upper and lower case letters and underlined characters
within a restricted character set. Code conversion is understood to be
carried out outside the layout program proper, which uses a character
set in which both upper and lower case letters and underlined characters
are represented by single codes. This character set is full ASCII
==== ecslib/emas-2900/gt_view_users1.txt ====
17/12/80 15.54.20 ERCLIB ERCLIB.LIBCONTENTS
17/12/80 16.08.46 ERCLIB NLC
17/12/80 16.59.38 ERCC04 PD13S
17/12/80 17.03.50 ERCC04 PD12S
17/12/80 17.07.53 EBFR12 ERCLIB.LIBCONTENTS
17/12/80 19.07.12 ECZU09 PD4
17/12/80 19.18.22 ECZU09 ERCLIB.LV_VIEWS
17/12/80 19.18.43 ECZU09 PD4
17/12/80 19.21.26 ECZU09 PD3
17/12/80 19.21.52 ECZU09 PD2
17/12/80 19.22.13 ECZU09 PD1
17/12/80 19.22.52 ECZU09 PDI
17/12/80 19.23.43 ECZU09 PDG
17/12/80 19.24.16 ECZU09 PDG
17/12/80 19.41.53 ECSLIB GT
17/12/80 19.49.30 ECSLIB ENCU73.TOAL
17/12/80 20.00.38 ECSLIB GT
17/12/80 20.04.33 ECSLIB GT
17/12/80 20.08.13 ECYU40 ERCLIB.VIEW
17/12/80 20.09.39 ECSLIB GT
17/12/80 20.28.20 ECZU85 KNTLIB.BASICPD
==== ecslib/emas-2900/gt_view_users2.txt ====
22/12/80 16.13.31 EXODUS ERCC04.WINE
22/12/80 16.41.43 ERCC08 ERCLIB.LV_VIEWS
22/12/80 19.43.29 ECSLIB GT
22/12/80 19.50.39 ECSLIB ERCLIB.VIEW
19/12/80 11.36.46 ECYU83 ECSLIB.PICS
19/12/80 11.38.03 ECYU83 PICS
19/12/80 11.42.03 ECYU83 ECZU36.BASIC_BASIC
19/12/80 11.43.58 ECYU83 ECSLIB.GT
19/12/80 11.45.07 ECYU83 ASSORT
19/12/80 11.45.34 ECYU83 DIRECTORY
19/12/80 11.46.49 ECYU83 ECZU36.BASIC_SUMA
19/12/80 11.47.31 ECYU83 DIRECTORY
19/12/80 11.51.21 ECZU36 ECSLIB.GT
19/12/80 11.52.26 ERCLIB T#L
19/12/80 11.58.31 ECYU83 ECSLIB.GT
19/12/80 11.59.05 ECZU36 ECSLIB.GT
19/12/80 12.02.10 ERCLIB T#L
19/12/80 12.06.22 ECYU83 ASSORT
19/12/80 12.11.41 ECYU83 DIRECTORY
19/12/80 12.13.01 ECYU83 DIRECTORY
19/12/80 12.14.50 ECYU83 ERCLIB.LIBCONTENTS
==== ecslib/emas-2900/gt_view_users3.txt ====
07/01/81 10.32.18 EMCT02 EMCT06.IMPVDOC
07/01/81 10.50.37 EMCT06 IMPVDOX
07/01/81 10.50.39 EMCT06 IMPVDOC
07/01/81 10.58.10 ECZU85 GU
07/01/81 11.10.47 ECSC20 O
07/01/81 11.10.55 ECSC20 0
07/01/81 11.10.59 ECSC20 ERCLIB.LV_VIEWS
07/01/81 11.26.06 ERCLIB T#L
07/01/81 11.27.01 ERCLIB ERCLIB.LIBCONTENTS
07/01/81 11.54.04 ERSY01 ERCLIB.LIBCONTENTS
07/01/81 11.56.14 ECSC20 ERCLIB.LV_VIEWS
07/01/81 12.06.08 ERCC04 PD13S
07/01/81 12.12.06 ERCC04 ZZ
07/01/81 12.19.58 ERCC04 VTEST
07/01/81 13.48.25 ERCC04 VTEST
07/01/81 13.49.47 ERCC04 VTEST
07/01/81 14.41.54 ECSC20 VIEWS
07/01/81 14.43.32 ECSC20 ERCC04.LIB
07/01/81 14.45.21 ERCC04 ERCLIB.VIEW
07/01/81 14.48.30 ERCC04 ERCLIB.VIEW
07/01/81 14.52.35 ERCC04 VTEST
==== ecslib/emas-2900/gt_view_users4.txt ====
14/01/81 16.31.21 ERCC04 PD13S
14/01/81 16.32.26 ECYU83 CONS
14/01/81 16.47.32 ECYU83 DIR
14/01/81 16.47.59 ECYU83 ERCLIB.LIBCONTENTS
14/01/81 16.54.29 ECYU20 JUNK
14/01/81 16.54.48 ECYU20 USERS
14/01/81 16.55.11 ECYU20 PROG
14/01/81 17.06.37 ECYU83 WERT
14/01/81 17.06.47 ECYU20 PROG
14/01/81 17.09.56 ECSC29 ERCLIB.LIBCONTENTS
14/01/81 17.17.04 ECYU83 CON
14/01/81 17.19.12 ECXU87 ERCLIB.LIBCONTENTS
14/01/81 17.23.59 ERCLIB ERCLIB.LIBCONTENTS
14/01/81 17.28.09 ECXU54 PAS
14/01/81 17.29.14 ECYU20 PROG
14/01/81 17.30.42 ECXU54 CONLIB
14/01/81 17.31.19 ECXU54 CHAR
14/01/81 17.32.06 ECXU54 COMMANDS
14/01/81 17.33.08 ECXU54 DIR
14/01/81 17.33.36 CONLIB ERCLIB.LIBCONTENTS
14/01/81 17.34.53 ECXU54 DIR
==== ecslib/emas-2900/gt_view_users5.txt ====
08/05/81 17.26.32 ERCC63 SUBSYS.VIEW
08/05/81 17.27.16 EMCT02 ERCC27.MAILHELP
08/05/81 17.29.11 EMCT02 ERCC27.MAILHELP
08/05/81 17.31.59 ECSC20 SUBSYS.VIEW
08/05/81 17.31.59 ECSC20 SCREED
08/05/81 17.33.18 ECSC20 KNTLIB.SCREEDDOC
08/05/81 17.38.13 ECSC04 SUBSYS.VIEW
08/05/81 17.38.13 ECSC04 ERCLIB.LIBCONTENTS
08/05/81 17.41.13 EBFU54 ERCC27.MAILHELP
08/05/81 17.44.03 ECSC20 SUBSYS.VIEW
08/05/81 17.44.03 ECSC20 SCREED
08/05/81 17.44.30 ECSC20 KNTLIB.SCREEDDOC
08/05/81 17.48.55 EMCT02 ERCC27.MAILHELP
08/05/81 17.54.22 ECSC20 SUBSYS.VIEW
08/05/81 17.54.22 ECSC20 SCREED
08/05/81 17.54.34 ECSC20 SUBSYS.VIEW
08/05/81 17.54.34 ECSC20 SCREED
08/05/81 17.55.06 ECSC20 SUBSYS.VIEW
08/05/81 17.55.06 ECSC20 SCREED
08/05/81 17.55.16 ECSC20 KNTLIB.SCREEDDOC
08/05/81 17.55.21 ECYU20 ERCC27.MAILHELP
==== ecslib/emas-2900/gt_view_users6.txt ====
22/05/81 14.12.17 ECUU36 SUBSYS.VIEW
22/05/81 14.12.17 ECUU36 ECSC20
22/05/81 14.12.56 ECUU36 ERCI34.CDOSUSERS
22/05/81 14.13.38 ECUU36 SUBSYS.VIEW
22/05/81 14.19.18 ECYU20 SUBSYS.VIEW
22/05/81 14.19.18 ECYU20 PROG
22/05/81 14.21.21 ECUU36 KNTLIB.SCREEDDOC
22/05/81 14.22.26 ECXU22 SUBSYS.VIEW
22/05/81 14.22.35 ECXU22 P8
22/05/81 14.26.13 ECUU36 SUBSYS.VIEW
22/05/81 14.26.19 ECUU36 ECSC20
22/05/81 14.35.03 ECSC06 SUBSYS.VIEW
22/05/81 14.35.03 ECSC06 ECSC19.STV
22/05/81 14.43.23 ERCC08 SUBSYS.VIEW
22/05/81 14.43.37 ERCC08 ERCC09.REPORTS
22/05/81 14.44.42 ERCC08 SUBSYS.VIEW
22/05/81 14.44.42 ERCC08 SUBSYS.VIEW
22/05/81 14.48.10 ERCI33 SUBSYS.VIEW
22/05/81 14.48.12 ERCI33 SSUREPORT
22/05/81 14.49.21 ERCI23 SUBSYS.VIEW
22/05/81 14.49.21 ERCI23 ERCLIB.LIBCONTENTS
==== ecslib/emas-2900/gt_view_users7.txt ====
03/07/81 23.25.23 ECSLIB ERCC27.MAILHELP
16/06/81 08.56.22 ECYU40 SUBSYS.VIEW
16/06/81 08.56.22 ECYU40 ERCC27.MAILHELP
16/06/81 09.00.16 ECYU40 SUBSYS.VIEW
16/06/81 09.00.16 ECYU40 ERCC63.PDSCREED
16/06/81 09.30.26 ERUA13 SUBSYS.VIEW
16/06/81 09.30.26 ERUA13 ERCI34.INFORMATION
16/06/81 09.31.25 ERUA13 ERUA14.INFORMATION
16/06/81 09.46.52 ERCM03 SUBSYS.VIEW
16/06/81 09.46.52 ERCM03 ERCC19.ADVISOR
16/06/81 09.55.40 ERCC04 SUBSYS.VIEW
16/06/81 09.55.42 ERCC04 DIRECTOR
16/06/81 10.12.44 ERCC04 SUBSYS.VIEW
16/06/81 10.12.44 ERCC04 LIBS
16/06/81 10.18.24 ERCM09 SUBSYS.VIEW
16/06/81 10.18.26 ERCM09 ERCLIB.LIBCONTENTS
16/06/81 10.21.39 ERCC04 SUBSYS.VIEW
16/06/81 10.21.39 ERCC04 LIBS2
16/06/81 10.27.52 ECZU09 SUBSYS.VIEW
16/06/81 10.27.52 ECZU09 T#LIST
16/06/81 10.32.12 ECZU09 SUBSYS.VIEW
==== ecslib/emas-2900/gt_view_users8.txt ====
20/07/81 20.44.17 ECSC03 ERCC27.MAILHELP
16/06/81 08.56.22 ECYU40 SUBSYS.VIEW
16/06/81 08.56.22 ECYU40 ERCC27.MAILHELP
16/06/81 09.00.16 ECYU40 SUBSYS.VIEW
16/06/81 09.00.16 ECYU40 ERCC63.PDSCREED
16/06/81 09.30.26 ERUA13 SUBSYS.VIEW
16/06/81 09.30.26 ERUA13 ERCI34.INFORMATION
16/06/81 09.31.25 ERUA13 ERUA14.INFORMATION
16/06/81 09.46.52 ERCM03 SUBSYS.VIEW
16/06/81 09.46.52 ERCM03 ERCC19.ADVISOR
16/06/81 09.55.40 ERCC04 SUBSYS.VIEW
16/06/81 09.55.42 ERCC04 DIRECTOR
16/06/81 10.12.44 ERCC04 SUBSYS.VIEW
16/06/81 10.12.44 ERCC04 LIBS
16/06/81 10.18.24 ERCM09 SUBSYS.VIEW
16/06/81 10.18.26 ERCM09 ERCLIB.LIBCONTENTS
16/06/81 10.21.39 ERCC04 SUBSYS.VIEW
16/06/81 10.21.39 ERCC04 LIBS2
16/06/81 10.27.52 ECZU09 SUBSYS.VIEW
16/06/81 10.27.52 ECZU09 T#LIST
16/06/81 10.32.12 ECZU09 SUBSYS.VIEW
==== ecslib/emas-2900/coms_edwin.txt ====
newdirectory t#edwindir,500,2000
option activedir=t#edwindir
insert conlib.edwin_imp77liby
insert conlib.edwin_missingy
insert conlib.edwin_c963y
insert conlib.edwin_catsy
insert conlib.edwin_chasy
insert conlib.edwin_down11y
insert conlib.edwin_forrtsy
insert conlib.edwin_hp2648y
insert conlib.edwin_obj
insert conlib.edwin_hqchary
insert conlib.edwin_p300y
insert conlib.edwin_hpploty
insert conlib.edwin_shapesy
insert conlib.edwin_t4000Y
insert conlib.edwin_transfy
insert conlib.edwin_pdfdecy
insert conlib.edwin_viewpdfy
insert conlib.edwin_viewrcoy
insert conlib.edwin_imp77liby
==== ecslib/emas-2900/generals_assigns.txt ====
! Procedures to emulate the VMS Logical name system on the EMAS profile system.
! J. Gordon Hughes, April 1983
%external %routine %spec READ PROFILE (%string (11) KEY, %name INFO,
%integer %name VERSION, FLAG)
%external %routine %spec WRITE PROFILE (%string (11) KEY, %name INFO,
%integer %name VERSION, FLAG)
%external %routine %spec PROMPT (%string (63) TEXT)
%external %string (255) %fn TRANSLATE %alias "IMP_TRANSLATE" (%string (255) S)
%integer VSN, FLAG
%string (255) TX
LENGTH(S)=11 %if LENGTH(S)>11
READ PROFILE (S, TX, VSN, FLAG)
%result = S %if VSN=0
%result = TX
%end
%external %integer %function SET LOGICAL %alias "IMP_SET_LOGICAL" ( %c
%string(63) Lognam, Eqlnam )
%integer VSN, FLAG
==== ecslib/emas-2900/vlsiuse_gp15.txt ====
device 7220
ident nb 5
ident ni 6
==== ecslib/emas-2900/pics_redbaron.txt ====
00000
00 000000
00 00 0
000 000000 00 0
0000 000000000 00 0
00000 00000000000 0 00 000000000
00 00 000000000000 0 00 000 000
00 00 0000000000000 000 00 00
00 00 000000000000000 000 00 0
00 00 000000000000000 000 00 0
00 0 00000000000000 00000 00 0
00 0 00000000000000 00 000 000 0
00 0 0000000000000 0 000000000 0
0 0 000000000000 0 0
0 0 0000000000 0 0 00000
0 0 00000000 0 00 000 00
00 0 000000 0 000 0 0
0 0 000 0000 0 000 0
00 0 00 0 0000 000000 0
00 00 00 0 000 00000 0
0 00000000 0 000 0000000
==== ecslib/emas-2900/pics_venus.txt ====
.............................................................................................................................
.............................................................................................................................
................................******.......................................................................................
................. **. ..:....::****....................................................................................
............... .:***. .********..................................................................................
............. .:***: """""""****................................................................................
............ "":: ..:*****...............................................................................
........... :: ::**********..............................................................................
.......... .".:* .::***********.............................................................................
......... .:****:::::::""******.............................................................................
....... .:***: .*::::::::"""***............................................................................
...... ....... ..:: .::::..::.::""***..........................................................................
...... . ... ... .::::..:::.::::***.........................................................................
...... . ......" .::::.::::::*::***........................................................................
...... . ... ." .::.::****.*:****........................................................................
.... . ..: .:::::*****.::***........................................................................
.... . ..: .**.".***:*.:..**........................................................................
.... ... :. ...:.. .**."***:::*::****.......................................................................
..... . ..: .:"::**:. ..***:::".::.::***.......................................................................
...... .... : ."".:.*:**: .***""".:::::***........................................................................
...... .: ::".::"*" .:**::::*:*::**.........................................................................
==== ecslib/emas-2900/vlsiuse_gp23.txt ====
device 963
==== ecslib/emas-2900/include_maths.txt ====
! Additional Imp Maths Constants
%const %real DtoR = 57.2958
%const %real e = 2.7182818285
==== ecslib/emas-2900/edwin_consts.txt ====
{ EDWIN constant definitions } %end %of %list
! Colours
%constant %byte Video Black = 0, Video White = 1
%constant %byte Blank = 0
%constant %byte Black = 1
%constant %byte Blue = 2
%constant %byte Green = 3
%constant %byte Red = 4
%constant %byte Purple = 5
%constant %byte Yellow = 6
%constant %byte Lime = 7
%constant %byte Brown = 8
%constant %byte Turquoise = 9
! Colour Modes
%constant %byte Replace Mode = 0
%constant %byte And Mode = 1
%constant %byte Or Mode = 2
%constant %byte Xor Mode = 3
%constant %byte Invert Mode = 4
==== ecslib/emas-2900/dcappd_dcapas.txt ====
%EXTERNALROUTINE DCAPA(%STRING(63) PAR)
%ROUTINESPEC READ LINE
%INTEGERFNSPEC COMPARE(%INTEGER PSP)
%ROUTINESPEC SS
%ROUTINESPEC FILL(%SHORTINTEGERARRAYNAME D,%INTEGER FROM,TO,VAL)
%SHORTINTEGERARRAYFORMAT SF(0:32759)
%SHORTINTEGERARRAYNAME S,ED,AD,BD,CD
%SHORTINTEGERNAME SP,EDP,ADP,BDP
%SHORTINTEGERARRAY A,NP(1:1004)
%BYTEINTEGERARRAY T(1:1000)
%SHORTINTEGERARRAY IV(0:72) ;! ALLOWS 8 NESTING LEVELS
%SHORTINTEGER IVP
%INTEGER AP,TP,I,J,DEF,FIRSTINFO,FAULTS,ELNUM,DUMMY,DCAPFAD
%OWNINTEGER LASTLINK=11
%EXTERNALROUTINESPEC DEFINE(%STRING(63) S)
%SYSTEMROUTINESPEC OUTFILE(%STRING(15) S,%INTEGER LENGTH,MAX,PROT, %C
%INTEGERNAME CONAD,FLAG)
%STRING(63) P,Q,R,TAPE
%OWNSHORTINTEGERARRAY PS(-1000:-518)= %C
-997,-933,-522,-993,-678,-811,-522,-988, 1, 58,-852,-522,
==== ecslib/emas-2900/vlsiuse_state.txt ====
version
device ?
layers ?
level ?
window ?
rotate ?
scale ?
setlam ?
==== ecslib/emas-2900/vlsiuse_cmos.txt ====
IDENT *
CA 3 1 0 2
CP 4 2 0 7
CM 2 4 0 8
CW 4 8 1 1
CS 3 7 1 3
CC 1 0 0 6
CV 1 15 0 3
CG 1 12 0 1
CD 3 1 3 7
CN 3 7 4 1
CT 1 15 0 1
ZZZ
==== ecslib/emas-2900/ispecs.txt ====
%ENDOFLIST
%REALSLONG
!
%EXTERNALROUTINESPEC READ SEQUENCE(%STRINGNAME S,%STRING(1)T)
%EXTERNALSTRINGFNSPEC TIDIED(%STRING(255)S)
%EXTERNALSTRINGFNSPEC ITOS(%INTEGER N,DP)
%EXTERNALINTEGERFNSPEC STOI(%STRING(31)S)
%EXTERNALSTRINGFNSPEC SP (%INTEGER N)
%EXTERNALSTRINGFNSPEC NEXT ITEM
%EXTERNALSTRINGFNSPEC NEXT SIG ITEM
%EXTERNALSTRINGFNSPEC SEM
!
%EXTERNALINTEGERFNSPEC NEXT SYMBOL
%EXTERNALINTEGERFNSPEC NEXT SIG SYMBOL
%EXTERNALINTEGERFNSPEC EM
!
%EXTERNALREALFNSPEC CPU TIME
%EXTERNALSTRINGFNSPEC TIME
%EXTERNALSTRINGFNSPEC DATE
%EXTERNALROUTINESPEC SKIP ITEM
%EXTERNALREALFNSPEC RANDOM REAL
==== ecslib/emas-2900/gamespd_wumpus.txt ====
%EXTERNALROUTINE WUMPUS (%STRING(255) PARMZZZ)
%EXTERNALROUTINESPEC PROMPT(%STRING(15)S)
%EXTERNALSTRINGFNSPEC TIME
%INTEGERFNSPEC FNR(%INTEGER I)
%INTEGERARRAY R(1:20,1:3),BOG(1:20)
%ROUTINE DRAIN
SKIP SYMBOL %WHILE NEXT SYMBOL#NL ; SKIP SYMBOL
%END
%INTEGERFN GETANS
%INTEGER SYM
SKIP SYMBOL %WHILE 'N'#NEXTSYMBOL&95#'Y'
SYM=NEXTSYMBOL&95 ; DRAIN ; %RESULT=SYM
%END
%ROUTINE GET REQUEST(%INTEGERNAME SYM)
%CYCLE
SYM=NEXTCH
%IF '0'<=SYM<='9' %THENEXIT
%IF SYM='s' %OR SYM='S' %THENEXIT
SKIPSYMBOL
%REPEAT
%IF SYM='s' %THEN SYM='S'
==== ecslib/emas-2900/pdp16pd_reduces.txt ====
!!! ****** ******* ****** ** ** ***** ******* *****
!!! ** ** ** ** ** ** ** ** ** ** ** **
!!! ** ** ** ** ** ** ** ** ** **
!!! ****** ***** ** ** ** ** ** ***** *****
!!! ** ** ** ** ** ** ** ** ** **
!!! ** ** ** ** ** ** ** ** ** ** ** **
!!! ** ** ******* ****** ***** ***** ******* *****
!
! NEW PHRASE STRUCTURE REDUCTION PROGRAM
!
%CONTROL 0
%EXTERNALROUTINESPEC SET STREAMS(%STRING (63) S)
%CONSTINTEGER DATA IN = 1
%CONSTINTEGER DATA OUT = 2
%CONSTINTEGER ERROR OUT = 3
%EXTERNALROUTINE REDUCE(%STRING (63) FILES)
%STRING (63) INPUT, OUTPUT, REPORT
%OWNBYTEINTEGERARRAY BIPD(3 : 15)
==== ecslib/emas-2900/lisp_lispruns70.txt ====
%EXTERNALROUTINESPEC CLEAR(%STRING(63) S)
%EXTERNALROUTINESPEC DEFINE(%STRING(63) S)
%EXTERNALROUTINESPEC NEWSMFILE(%STRING(63) S)
%EXTERNALINTEGERFNSPEC SMADDR(%INTEGER CHAN, %INTEGERNAME LENGTH)
%EXTERNALROUTINESPEC CLOSE STREAM(%INTEGER NO)
%EXTERNALROUTINESPEC CLOSE SM(%INTEGER NO)
%EXTERNALROUTINESPEC LISPINTP(%INTEGER FILEADDR, INITMODE)
%EXTERNALROUTINE HELP LISP
PRINT STRING("
HANDOUT IN PREPERATION - TYPE 'LISP' TO TRY LISP
")
%END
!
%EXTERNALROUTINE LISP(%STRING(63) PARM)
%INTEGER FILEADDR, INITMODE, LENGTH
DEFINE("STREAM02,.OUT")
DEFINE("STREAM03,.OUT")
PRINT STRING("
E.C.S.D. LISP SYSTEM RELEASE 2 VERSION 1
==== ecslib/emas-2900/pics_calender_november.txt ====
XXXX
X XX
X *** X XXXXX
X ***** X XXX XX
XXXX ******* XXX XXXX XX
XX X ****** XXXXXXXX XX XXX
XX X **** X X** X
X XX XX X X***X
X //XXXX X XXXX
X // X XX
X // X XXXXXXXXXXXXXXXXXX/
X XXX// X X
X X X X X
X X X X X
X X X X X XX
X X X X XXX XX
X XXX X X X X X X
==== ecslib/emas-2900/edwin_doc.txt ====
THE
E D W I N
==== ecslib/emas-2900/oldgeneraly_assignment.txt ====
The facilities described below implement the VMS logical name system using
the EMAS profile scheme. On EMAS the logical names are only significant for
the first 11 characters (cf.127 on VMS). All the strings are converted to
upper case before they are stored or translated.
!< ASSIGN
ASSIGN <text>,<log-name>
This assigns the string <text> to the logical name <log-name>.
If the parameters are omitted then they are prompted for.
The message 'Previous logical name assignment replaced' is given if the
logical name was defined before it was re-set.
eg. ASSIGN TTYPE=11,VISUAL200
!>
!< DEASSIGN
DEASSIGN <log-name>
==== ecslib/emas-2900/pdp16pd_womble.txt ====
!** ** ** ***** * * ****** ** *******
!** ** ** ** ** ** ** ** ** ** **
!** ** ** ** ** *** *** ** ** ** **
!** ** ** ** ** ** * ** ****** ** *****
!** ** * ** ** ** ** ** ** ** ** **
!** *** *** ** ** ** ** ** ** ** **
!** * * ***** ** ** ****** ******* *******
!**
!*****************************************************************
!*****************************************************************
!** **
==== ecslib/emas-2900/newsims.txt ====
%CONSTSHORTINTEGERARRAY SMAIN(1: 141) = %C
1, 0, 4, 8, 12, 15, 19, 25, 30, 35, 39, 43,
47, 50, 54, 58, 63, 69, 74, 79, 84, 88, 92, 96,
100, 104, 108, 112, 115, 116, 120, 0, 122, 125, 0, 128,
131, 0, 135, 137, 0, 139, 141, 0, 143, 147, 0, 149,
154, 0, 156, 0, 159, 164, 0, 166, 169, 0, 171, 174,
177, 180, 183, 186, 0, 189, 194, 0, 196, 198, 0, 200,
202, 0, 204, 207, 210, 0, 213, 215, 0, 217, 221, 222,
225, 226, 230, 0, 232, 238, 242, 0, 245, 249, 253, 260,
0, 262, 0, 265, 268, 0, 270, 273, 276, 279, 0, 282,
286, 289, 292, 295, 298, 0, 300, 305, 0, 307, 310, 313,
0, 316, 322, 0, 324, 0, 330, 335, 0, 337, 340, 343,
346, 349, 352, 355, 0, 358, 360, 363, 0
%CONSTSHORTINTEGERARRAY SSUB(2: 365) = %C
==== ecslib/emas-2900/include_util.txt ====
! Useful pre-definitions for portable Imp programs
%external %routine %spec Prompt (%string (63) STR)
%external %string (15) %fn %spec Date
%external %string (15) %fn %spec Time
%dynamic %string (255) %fn %spec ItoS %alias "IMP_I_TO_S" (%integer I, P)
%dynamic %string (255) %fn %spec RtoS %alias "IMP_R_TO_S" (%long %real R,
%integer A, B)
%dynamic %integer %fn %spec StoI %alias "IMP_S_TO_I" (%string (255) S)
%dynamic %integer %fn %spec REM %alias "IMP_REM" (%integer A, B)
%dynamic %routine %spec DOING %alias "IMP_DOING" (%string (255) S)
! Lattice Imp stream handling facilities
%dynamic %routine %spec Open Input %alias "IMP_OPEN_INPUT" (%integer S,
%string (255) ST)
%dynamic %routine %spec Close Input %alias "IMP_CLOSE_INPUT"
%dynamic %routine %spec Reset Input %alias "IMP_RESET_INPUT"
%dynamic %integer %fn %spec Input Stream %alias "IMP_INPUT_STREAM"
%dynamic %string (255) %fn %spec Input Name %alias "IMP_INPUT_NAME"
==== ecslib/emas-2900/pics_calender_october.txt ====
***
******
* *
* *
* * *****
* * * *
* * * * ****
* ** * * ** * *
* OO * ++ * ** *
* * ++ * ** *
* ++ *** ******
* ++ ********* *
* ++ * *
** *** ++******* ******* *
XXXXXXXXXXX**++++********++XXXXXXX* **XXXXXXX*******XXXXXXXXXXXXXXXX
X ++++++ ** X
==== ecslib/emas-2900/instrdef.txt ====
! NMEMONIC CODE SIZE GROUP NO OF OPS OP GROUP
STC 063 1 0 0 0
CMC 073 1 0 0 0
INR 004 1 1 1 1 ! REG
DCR 005 1 1 1 1 ! REG
CMA 057 1 0 0 0
DAA 047 1 0 0 0
NOP 000 1 0 0 0
MOV 100 1 5 2 6 ! DST-SRC
STAX 002 1 1 1 5 ! SHORT REG PAIR
LDAX 012 1 1 1 5 ! SHORT REG PAIR
ADD 200 1 2 1 1 ! REG
ADC 210 1 2 1 1 ! REG
SUB 220 1 2 1 1 !REG
SBB 230 1 2 1 1 ! REG
ANA 240 1 2 1 1 ! REG
XRA 250 1 2 1 1 ! REG
ORA 260 1 2 1 1 ! REG
CMP 270 1 2 1 1 ! REG
RLC 007 1 0 0 0
RRC 017 1 0 0 0
==== ecslib/emas-2900/lisp_release.txt ====
IMP LISPSPDF_LISPRUNS,LISPRUNY
PERMIT LISPRUNY,,RS
IMP LISPSPDF_LISPV09S,LISPV09Y
PERMIT LISPV08Y,,RS
COPY LISPSPDF_INITLSP8,INITLISP
PERMIT INITLISP,,RS
==== ecslib/emas-2900/pics_calender_february.txt ====
##########
#### ####
### ##
### ##
## ###### ##
# ## #
# # #
# # ## # #
# ## ## ## ## #
# $## ## #
# # ## #
# # #### # #
# # OO # OO # ##
# # # # # #
# # ### #
# #
# ###
==== ecslib/emas-2900/pics_calender_january.txt ====
********
**** ***
** *
** *** *
************** * * *
*** * * *
** ** ** *
* ** ** *
* ** ** ****** *
* ****** ******** *
* ******** ********** *
* ****** ************ *
* ************* *
* * ************* *
* * * * ************* *
* * * * * ************** *
** * *** ** * * ************** *
****** *********** ** ************** *
*** * * * *** ************* *
==== ecslib/emas-2900/include_lognames.txt ====
%external %integer %function %spec SET LOGICAL %alias "IMP_SET_LOGICAL" ( %c
%string (63) Lognam, Eqlnam )
%external %string (255) %function %spec Translate %alias "IMP_TRANSLATE" ( %c
%string (255) S )
==== ecslib/emas-2900/generals_whichemas.txt ====
! Program to inform you which EMAS it is running on, (2900 range).
%EXTERNAL %ROUTINE WHICHEMAS (%STRING(255) PARM)
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,TOJDAY,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,DQADDR, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0, %C
%INTEGER ITINT,CONTYPEA,GPCCONFA,FPCCONFA,SFCCONFA, %C
BLKADDR,RATION,SMACS,TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,SP0,SP1, %C
SP2,SP3,SP4,SP5,SP6,SP7,SP8, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
HBIT,SLAVEOFF,INHSSR,SDR1,SDR2,SDR3, %C
SDR4,SESR,HOFFBIT,S2,S3,S4,END)
%CONSTSTRING (4) %ARRAY OCPTYPE(1 : 6) = "2950","2960","2970",
"2988","2972","2976"
%RECORD (COMF) %NAME R
==== ecslib/emas-2900/gamespd_briggs.txt ====
%CONTROL 0
%DYNAMICROUTINESPEC CLEAR(%STRING(255)K)
%DYNAMICROUTINESPEC DEFINE(%STRING(255)K)
%EXTERNAL %ROUTINE %SPEC DESTROY (%STRING(255) PARM)
%EXTERNALROUTINESPEC PROMPT(%STRING(15)S)
%ROUTINE SELECT (%STRING(255)K)
%STRING(255) S
%RETURNIF SEL= 1
SEL = 1
PRINTSTRING("Parameters ? - LP'S only.
")%ANDSTOPUNLESS K->(".LP").S
DEFINE("39,".K)
SELECTOUTPUT(39)
%END
%ROUTINE STARCOMM
PRINTSTRING('The possible commands are designated by the
following numbers and code words.
==== ecslib/emas-2900/lisp_lispman1.txt ====
$A TAB=4,8,12,16,20,24,28,50,66; INDENT=8
$B3 $L1ICU
DRAFT
$B20 $L1CM
THE E.C.S.D LISP MANUAL
$B29 $L3I
.N. .H. @SHELNESS
@DECEMBER, 1976
$N
$A INDENT=0; JUST=1; PAGENO=1
$L1CU
1.0 INTRODUCTION
$P2 @THIS MANUAL IS A BRIEF INTRODUCTION TO THE @EDINBURGH @COMPUTER @SCIENCE
@DEPARTMENT .(ECSD) .LISP .SYSTEM RUNNING ON .EMAS. @IT IS NOT INTENDED AS AN
INTRODUCTION TO .LISP. @THERE ARE A NUMBER OF REFERENCES LISTED IN THE
BIBLIOGRAPHY THAT WILL FULFILL THAT FUNCTION.
$P1 .ECSD .LISP WAS IMPLEMENTED BY THE AUTHOR FOR UNDERGRADUATE STUDENT
USE, AND ITS STRUCTURE REFLECTS THIS FACT. @IT IS A RELATIVELY 'PURE'
IMPLEMENTATION IN WHICH FUNCTIONS ARE DEFINED OVER MORE LIMITED DOMAINS
THAN IS OFTEN THE CASE, AND IN WHICH EXTENSIVE ERROR CHECKING ENFORCES
==== ecslib/emas-2900/gamespd_mastmind.txt ====
%EXTERNALROUTINE MASTMIND (%STRING (255) PSTZ)
%EXTERNAL %ROUTINE %SPEC PROMPT (%STRING(255) ST)
%EXTERNAL %LONG %REAL %FN %SPEC CPUTIME
%EXTERNAL %LONG %REAL %FN %SPEC RANDOM REAL
%CONST %STRING (1) SNL="
"
%RECORDFORMAT RFM1 (%INTEGERARRAY SET(1:4), %INTEGER PTR)
%RECORDFORMAT RFM2 (%INTEGERARRAY HOLE(1:4) ,%INTEGER BL,WH)
%RECORDARRAY ROW (1:10) (RFM2)
%RECORDARRAY BASE (1:1296) (RFM1)
%OWNINTEGER PERSONSCORE,COMPSCORE,FIRSTP,LASTP,POSS,FAULTY
%OWNINTEGER SRN,NF1,NF2,MATCH,CRITICAL,GWBW
!
! ********** ___ ROUTINE SECTION ___ **********
!
! ***** THE ROUTINE MARK IS ONE OF THE MAIN GAME PLAYING
! FEATURES OF MASTERMIND,GIVING THE VITAL INFORMATION TO
! THE CODEBREAKER ABOUT THE COMPARISON BETWEEN THE TRIAL
! CODE AND THE HIDDEN CODE. MARKED AS FOLLOWS---
! 1 BLACK -- 1 NUMBER IN CORRECT HOLE.
! 1 WHITE -- 1 NUMBER IN WRONG HOLE. *****
==== ecslib/emas-2900/pdp16pd_pdpdumps.txt ====
!!! ****** ****** ****** ****** ** ** * * ****** *****
!!! ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
!!! ** ** ** ** ** ** ** ** ** ** *** *** ** ** **
!!! ****** ** ** ****** ** ** ** ** ** * ** ****** *****
!!! ** ** ** ** ** ** ** ** ** ** ** **
!!! ** ** ** ** ** ** ** ** ** ** ** ** **
!!! ** ****** ** ****** ***** ** ** ** *****
%CONTROL 0
%OWNSTRING (15) OUTPUT = '.TT'
%OWNSTRING (15) SOURCE = 'SS#ARTH'
%CONSTSTRING (6) %ARRAY OPCODES(0 : 15) = %C
'NOP ', 'EVOKE ', 'BUS ', 'COND ',
'MERGE ', 'RTCALL', 'RETURN', 'JUMP ',
'STOP ', 'BRANCH', 'T-LINE', 'BREAK', ' CONT',' CMRGE','+FLAG ',
'UNDEF '
%CONSTINTEGER NMAX = 100
%RECORDFORMAT EXTERNFM(%BYTEINTEGER FROM, FBITS, TO, TOBITS)
%CONSTINTEGER EXTLNG = 100
%RECORDFORMAT CODEFM(%BYTEINTEGER CODE, NAME, OPRN, MODULE, %C
==== ecslib/emas-2900/vlsiuse_x5a.txt ====
device 5555
ident c 0
ident i 6
==== ecslib/emas-2900/edwin_newdir.txt ====
newdirectory t#edwindir,500,2000
option activedir=t#edwindir
insert edwin_missingy
insert edwin_c963y
insert edwin_catsy
insert edwin_chasy
insert edwin_forrtsy
insert edwin_hp2648y
insert edwin_obj
insert edwin_hqchary
insert edwin_p300y
insert edwin_hpploty
insert edwin_shapesy
insert edwin_t4000Y
insert edwin_viewrcoy
insert conlib.edwin_viewpdfy
insert ecslib.generaly_imp77liby
insert erclib.graphicsy_rcoplot12y
insert erclib.graphicsy_matplot11y
insert erclib.graphicsy_extras12y
insert erclib.graphicsy_rcoctal12y
==== ecslib/emas-2900/lisp_lispruns.txt ====
%EXTERNALROUTINESPEC CLEAR(%STRING(63) S)
%EXTERNALROUTINESPEC DEFINE(%STRING(63) S)
%EXTERNALROUTINESPEC NEWSMFILE(%STRING(63) S)
%EXTERNALINTEGERFNSPEC SMADDR(%INTEGER CHAN, %INTEGERNAME LENGTH)
%EXTERNALROUTINESPEC CLOSE STREAM(%INTEGER NO)
%EXTERNALROUTINESPEC CLOSE SM(%INTEGER NO)
%EXTERNALROUTINESPEC LISPINTP(%INTEGER FILEADDR, INITMODE)
%EXTERNALROUTINE HELP LISP
PRINT STRING('
HANDOUT IN PREPERATION - TYPE ''LISP'' TO TRY LISP
')
%END
!
%EXTERNALROUTINE LISP(%STRING(63) PARM)
%INTEGER FILEADDR, INITMODE, LENGTH
DEFINE('STREAM02,.TT')
DEFINE('STREAM03,.TT')
PRINT STRING('
E.C.S.D. LISP SYSTEM RELEASE 2 VERSION 1
==== ecslib/emas-2900/edwin_pconsts.txt ====
{ EDWIN constant definitions }
{ Colours }
VideoBlack = 0;
VideoWhite = 1;
Blank = 0;
Black = 1;
Blue = 2;
Green = 3;
Red = 4;
Purple = 5;
Yellow = 6;
Lime = 7;
Brown = 8;
Turquoise = 9;
{ Colour Modes }
ReplaceMode = 0;
AndMode = 1;
OrMode = 2;
InvertMode = 3;
==== ecslib/emas-2900/fromjgh.txt ====
copy ecsc17.EDWIN_DDBBCY,ECSLIB.ED_DDBBCY
copy ecsc17.EDWIN_DDCALRCOY,ECSLIB.ED_DDCALRCOY
copy ecsc17.EDWIN_DDCATSY,ECSLIB.ED_DDCATSY
copy ecsc17.EDWIN_DDCHASY,ECSLIB.ED_DDCHASY
copy ecsc17.EDWIN_DDGIGIY,ECSLIB.ED_DDGIGIY
copy ecsc17.EDWIN_DDGP300Y,ECSLIB.ED_DDGP300Y
copy ecsc17.EDWIN_DDHPPLOTY,ECSLIB.ED_DDHPPLOTY
copy ecsc17.EDWIN_DDERCCHPY,ECSLIB.ED_DDERCCHPY
copy ecsc17.EDWIN_DDHPTERMY,ECSLIB.ED_DDHPTERMY
copy ecsc17.EDWIN_DDP300Y,ECSLIB.ED_DDP300Y
copy ecsc17.EDWIN_DDSIGMAY,ECSLIB.ED_DDSIGMAY
copy ecsc17.EDWIN_DDTEKY,ECSLIB.ED_DDTEKY
copy ecsc17.EDWIN_DDWESTWY,ECSLIB.ED_DDWESTWY
copy ecsc17.EDWIN_DDX5AY,ECSLIB.ED_DDX5AY
copy ecsc17.EDWIN_EDCONFIGY,ECSLIB.ED_EDCONFIGY
copy ecsc17.edwin_edwin5y,ecslib.ed_edwin5y
copy ecsc17.edwin_fintery,ecslib.ed_fintery
copy ecsc17.edwin_pintery,ecslib.ed_pintery
copy ecsc17.edwin_pshapesy,ecslib.ed_pshapesy
==== ecslib/emas-2900/pics_calender_horse.txt ====
********
**** ***
** *
** *** *
************** * * *
*** * * *
** ** ** *
* ** ** *
* ** ** ****** *
* ****** ******** *
* ******** ********** *
* ****** ************ *
* ************* *
* * ************* *
* * * * ************* *
* * * * * ************** *
** * *** ** * * ************** *
****** *********** ** ************** *
*** * * * *** ************* *
==== ecslib/emas-2900/vlsiuse_tek.txt ====
device 4012
==== ecslib/emas-2900/lisp_initlsp6.txt ====
NIL
QUOTE 2 0
LABEL 0 0
LAMBDA 0 0
APVAL 0 0
SUBR 0 0
FSUBR 0 0
EXPR 0 0
FEXPR 0 0
STOP 0 0
EVAL 0 0
CAR 6 1
CDR 6 2
CAAR 6 3
CADR 6 4
CDAR 6 5
CDDR 6 6
CONS 6 7
LIST 6 8
==== ecslib/emas-2900/lisp_initlsp7.txt ====
NIL
QUOTE 2 0
LABEL 0 0
LAMBDA 0 0
APVAL 0 0
SUBR 0 0
FSUBR 0 0
EXPR 0 0
FEXPR 0 0
STOP 0 0
EVAL 0 0
FUNCTION 2 0
CAR 6 1
CDR 6 2
CAAR 6 3
CADR 6 4
CDAR 6 5
CDDR 6 6
CONS 6 7
==== ecslib/emas-2900/lisp_initlsp8.txt ====
NIL
QUOTE
LABEL
LAMBDA
APVAL
SUBR
FSUBR
EXPR
FEXPR
STOP
EVAL
END/ OF/ PEEK
QUOTE 0 FSUBR
FUNCTION 0 FSUBR
CAR 1 SUBR
CDR 2 SUBR
CAAR 3 SUBR
CADR 4 SUBR
CDAR 5 SUBR
CDDR 6 SUBR
==== ecslib/emas-2900/lisp_initlsp9.txt ====
NIL
QUOTE
LABEL
LAMBDA
APVAL
SUBR
FSUBR
EXPR
FEXPR
STOP
EVAL
END/ OF/ PEEK
QUOTE 0 FSUBR
FUNCTION 0 FSUBR
CAR 1 SUBR
CDR 2 SUBR
CAAR 3 SUBR
CADR 4 SUBR
CDAR 5 SUBR
CDDR 6 SUBR
==== ecslib/emas-2900/oldgeneraly_newusers.txt ====
NEWUSERS usermask,form,mode
This lists the current EMAS users. The names that are given are
derived from the Mailer program, and 'guesses' are made for those that
are not known.
USERMASK can be any 6 characters of mask, only users matched with the mask
are listed. For example a mask of "E??U??" will only list the
Edinburgh student users. Trailing '?'s may be omitted.
The default mask is all users.
FORM this can be N (normal, (default)) or B (brief) or V (very brief),
which selects how much information is given.
MODE can be any combination of the letters F, B and S for Fore ground,
Batch and System users, respectivly. The default is F.
eg. NEWUSERS or NEWUSERS ,,FBS or NEWUSERS ,B or NEWUSERS ER????
==== ecslib/emas-2900/edwin_ptypes.txt ====
{ TYPE definitions for using EDWIN from Pascal }
pointfm = record
x, y : integer
end;
transfm = array [0..8] of real;
==== ecslib/emas-2900/generals_userutils.txt ====
!TITLE Source of S#FOR ALL USERS
!<
%RECORDFORMAT comf(%INTEGER ocptype,ipldev,sblks,sepgs,ndiscs, %C
ddtaddr,gpctabsize,gpca,sfctabsize,sfca,sfck,dirsite, %C
dcodeda,suplvn,wasklokcorrect,date0,date1,date2, %C
time0,time1,time2,epagesize,users,cattad,dqaddr, %C
sacport,ocpport,itint,contypea,gpcconfa,fpcconfa,sfcconfa,%C
blkaddr,dptaddr,smacs,trans, %C
%LONGINTEGER kmon, %C
%INTEGER ditaddr,smacpos,supvsn,pstva,secsfrmn,secstocd,%C
sync1dest,sync2dest,asyncdest,maxprocs,inspersec,elaphead,%C
commsreca,storeaad,procaad,sfcctad,drumtad,sp0,sp1,sp2,sp3,%C
sp4,sp5,sp6,sp7,sp8,sp9,%C
lstl,lstb,pstl,pstb,hkeys,hoot,sim,clkx,clky,clkz, %C
hbit,slaveoff,inhssr,sdr1,sdr2,sdr3, %C
sdr4,sesr,hoffbit,s2,s3,s4,end)
%RECORDFORMAT procf(%STRING(6) user, %C
%BYTEINTEGER incar,category,wsn,runq,active,%C
%INTEGER actwo,lstad,lamtx,stack,status)
==== ecslib/emas-2900/enter.txt ====
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! !
! HOUSEKEEPING ROUTINES FOR CSDEPT !
! !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
%OWNSTRING (1) SNL='
'
%EXTERNALROUTINESPEC NEWPDFILE (%STRING (63) S)
%EXTERNALROUTINESPEC CLOSE STREAM (%INTEGER I)
%EXTERNALROUTINESPEC COPYFILE (%STRING (63) S)
%EXTERNALROUTINESPEC DESTROY (%STRING (63) S)
%EXTERNALROUTINESPEC PERMITFILE (%STRING (63) S)
%EXTERNALROUTINESPEC PERMITLIB (%STRING (63) S)
%EXTERNALROUTINESPEC PROMPT (%STRING (15) S)
%EXTERNALROUTINESPEC CHERISH (%STRING (63) S)
%EXTERNALROUTINESPEC USERLIB (%STRING(63) S)
%EXTERNALROUTINESPEC INSERTFILE (%STRING (63) S)
%EXTERNALROUTINESPEC ARCHIVE (%STRING (63) S)
%EXTERNALINTEGERFNSPEC SSFAIL
%EXTERNALROUTINESPEC SSFOFF
==== ecslib/emas-2900/gamespd_poker.txt ====
%EXTERNALROUTINE DICE
%RECORDFORMAT Q(%INTEGER CARD,TIMES)
%RECORDARRAY YOURHAND,MYHAND(0:5)(Q)
%CONSTSTRING(5)%ARRAY HOLD(0:5)="Ace","King","Queen",
"Jack","10","9"
%CONSTSTRING(2)%ARRAY HOL (0:5)="A","K","Q","J","10","9"
%OWNINTEGER FSA=3
%CONSTSTRING(3) ME="I", YOU="you"
%INTEGER YOURLOT,MYLOT,YOURCARD,MYCARD,PLAY
%STRING(120) SEQ
YOURLOT=1
%ROUTINE CHEAT
%INTEGER I
%CYCLE I=1,1,5
PRINTSTRING(SP(20)."*** CHEAT ***".SNL)
%REPEAT
%END
%ROUTINE WAIT
PROMPT("Ok? :")
READSEQUENCE(SEQ,SNL)
%END
==== ecslib/emas-2900/lpd_hlaydcls.txt ====
$A MARK=2
$A PAGENO=1; JUST=1
$A TAB=12,20,28
$L1CUM
LAYOUT: DOCUMENT PRODUCTION PROGRAM
$P2 @THE BASIC FUNCTION OF .LAYOUT IS TO PRODUCE AN APPROPRIATELY PAGED AND
FORMATTED DOCUMENT FROM A SOURCE FILE IN WHICH THE REQUIRED LAYOUT IS
INDICATED BY %DIRECTIVES INTERSPERSED WITH THE TEXT; IN GENERAL, THE
SPACING AND LINE-STRUCTURE OF THE SOURCE ARE NOT SIGNIFICANT. @A
SECONDARY FUNCTION IS TO OUTPUT AN UPDATED SOURCE FILE SIMILAR TO THE
ORIGINAL EXCEPT THAT THE LINE-STRUCTURE FOLLOWS THAT OF THE FORMATTED
DOCUMENT (SUBJECT TO LIMITATIONS OF LINE LENGTH).
$P @IN ADDITION THE PROGRAM OPTIONALLY PROVIDES FOR THE APPLICATION OF
SHIFT CONVENTIONS TO THE SOURCE (AND UPDATED SOURCE) TO PERMIT THE
REPRESENTATION OF UPPER AND LOWER CASE LETTERS AND UNDERLINED CHARACTERS
WITHIN A RESTRICTED CHARACTER SET. @CODE CONVERSION IS UNDERSTOOD TO BE
CARRIED OUT OUTSIDE THE LAYOUT PROGRAM PROPER, WHICH USES A CHARACTER
SET IN WHICH BOTH UPPER AND LOWER CASE LETTERS AND UNDERLINED CHARACTERS
ARE REPRESENTED BY SINGLE CODES. @THIS CHARACTER SET IS FULL .ASCII
==== ecslib/emas-2900/pics_abraham.txt ====
The Story of Abraham (A folk-tale).
===================================
(Anonymous)
"Speaking of prostitutes,"said Abraham,"how is the Queen?"
The King,taking this as an insult,banished Abraham to the desert for
forty years.
Whilst wandering through one particularly nice part,all the while
considering his good fortune to be sent somewhere where umbrellas were
unnecessary,he chanced upon a very small girl with very short legs
and very low morals.
"Canst thou fuck,Abraham?"quoth she.
"Like a duck can swim!"replied Abraham,and set about it with a will.
Some (9) months later he again happened to be in that very same part
of the desert where the weather was so kind,and,as fortune would have
==== ecslib/emas-2900/newcont.txt ====
$A MARK=2
$A TAB=20,38,54
.%PROGRAM$ NAME $T1
.%LIBRARY$/PROGRAM $T2
.%ORIGINATOR $C52
.%DOCUMENTATION$ SOURCE $B
.ARTHUR $T1
.CSDEPT.PDP16LIB $T2
@P.@S.@ROBERTSON $T3
@DEPARTMENTAL @REPORT $B
@COMPATIBLE @CONTEXT$T1
.CSDEPT.EDLIB$T2
@H.@DEWAR$T3
@DEPARTMENTAL @REPORT $B
@EDITOR $B
@INTERDATA $T1
.CSDEPT.ISKMPLIB $T2
@D.@J.@REES $T3
@D.@J.@REES $B0
.SKIMP $B
.IMP @INTERPRETER $T1
==== ecslib/emas-2900/gamespd_backgdoc.txt ====
==== ecslib/emas-2900/pics_brigitte.txt ====
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
==== ecslib/emas-2900/intsyss.txt ====
!
!*******************************************************************
!* *
!* SYSTEM ROUTINES FOR IMP INTERPRETER VERSION 8 *
!* *
!*******************************************************************
!
!
%TRUSTEDPROGRAM
%RECORDFORMAT AGFM(%INTEGER EP, %STRING (17) NAME, %C
%INTEGER P1, P2, %INTEGERNAME FLAG)
%EXTERNALINTEGER INTSIZE = 16; ! DEFAULT OF 16 PAGES
%EXTERNALBYTEINTEGER INIMPI = 0
%EXTERNALINTEGER INTGLA = 0
%OWNSTRING (6) INT OWNER = 'CONLIB'
%EXTERNALSTRING (8) OBJECT = 'IMPIOBJ'
%EXTRINSICBYTEINTEGER INSTREAM, COMPMODE, IOFLAG, MDACTIVE
%SYSTEMINTEGERFNSPEC COMREG(%INTEGER N);! TO GIVE ADDRESSES
%EXTERNALINTEGER REG9 = -1
%OWNINTEGER DIAGPT, OUTSTREAM, SYSOUT, INTPERM
==== ecslib/emas-2900/generals_vaxs.txt ====
! FTP Utilities for using VAX/VMS from EMAS.
! Must be compiled PARM FREE with the IMP80 compiler
%const %string (1) SNL = "
"
%systemroutinespec OUTFILE(%string(31) NAME,
%integer LEN, MAX, PROT, %integername CONAD, FLAG)
%record %format RF (%integer CONAD, FILETYPE, DATA START, DATA END)
%system %routine %spec CONNECT (%string(31) S,
%integer ACCESS, MAXBYTES, PROT, %record(rf)%name R, %integername FLAG)
%system %string (255) %fn %spec FAILURE MESSAGE (%integer FLAG)
%system %routine %spec PSYSMES (%integer ROOT, FLAG)
%external %routine %spec LIST (%string (255) PARM)
%external %routine %spec TRANSFER (%string (255) PARM)
%external %routine %spec PROMPT (%string(63) PSTR)
%external %routine %spec SETMODE (%string(255) MODES)
%external %routine %spec DEFINE (%string(255) PARM)
%external %routine %spec CLEAR (%string (255) ALL)
%external %routine %spec ASSIGN (%string (255) PARM)
%external %string (255) %fn %spec TRANSLATE (%string (255) STR)
%external %string (255) %fn %spec UINFS (%integer I)
==== ecslib/emas-2900/gamespd_fantasy.txt ====
!program to run FANTASY
%external %routine %spec run (%string (255) file)
%externalroutine fantasy (%string (255) rubarb)
run ("ECSLIB.GAMEPD_FANTASY")
%end
%endoffile
==== ecslib/emas-2900/generals_pdaddrs.txt ====
!TITLE Source of S#PDADDR
!<
%RECORD %FORMAT connect fm(%INTEGER start address, %C
type, %C
relative start, %C
relative finish)
!)
%SYSTEM %ROUTINE %SPEC CONNECT(%STRING(31) file, %C
%INTEGER mode, %C
hole, %C
protection, %C
%RECORD (connect fm) %NAME info, %C
%INTEGER %NAME flag)
%RECORD %FORMAT header fm(%INTEGER relative finish, %C
relative start, %C
size, %C
type, %C
sum, date time, %C
directory start, %C
count)
==== ecslib/emas-2900/vlsiuse_slides.txt ====
size 19 25 1 1
speed 10
==== ecslib/emas-2900/gamespd_backgs.txt ====
%EXTERNALROUTINE BACKGAMMOM (%STRING(255) ST)
%OWNINTEGER BBOFF,WBOFF,DICE1,DICE2,BARFL,BRDVAL,BSTVAL,COMPVAL
%OWNINTEGER M1,M2,M3,M4,V1,V2,V3,V4,V5,V6,V7,V8,V9,V10,I,J,K,RUNNING
%OWNINTEGER NOMOV,BARPT1,BARPT2,PT1,PT2,L,M,N,TEMP,BSTMOV1,BSTMOV2
%OWNINTEGER BSTPT1,BSTPT2,W1,W2,W3,W4,W5,W6,W7,W8,W9,W10
%OWNINTEGER SECOND,BV1,BV2,BV3,BV4,BV5,BV6,BV7,BV8,BV9,BV10
%CONSTINTEGERARRAY ODDS(1:12)=35,38,44,47,47,53,18,21,15,12,6,9
%RECORDFORMAT F(%INTEGER WS,BS)
%OWNRECORDARRAY BOARD(0:25)(F)
%OWNINTEGER G,H,PT3,PT4,DICE3,DICE4,BSTPT3,BSTPT4,BARPT3,BARPT4
%INTEGERFN HOMEB
%INTEGER NO,I
NO=BBOFF
%CYCLE I=1,1,6
NO=NO+BOARD(I)_BS
%REPEAT
%IF NO=15 %THENRESULT = 1 %ELSERESULT = 0
%END
%ROUTINE DOBLACK
%INTEGER PT,NO,M,D1,D2,D3,D4,TOT
==== ecslib/emas-2900/edwin_geo.txt ====
{ NB: Specs for Version 4 of EDWIN : See ECSLIB.EDWIN_SHAPES for latest info }
{ EDWIN Geometric utility routines added } %end %of %list
%external %routine %spec SHADE SHAPES %alias "EDWIN_SHADE_SHAPES" (%integer ON or OFF)
%external %routine %spec SET ARC POINTS %alias "EDWIN_SET_ARC_POINTS" (%integer I)
%external %routine %spec CIRCLE %alias "EDWIN_CIRCLE" (%integer RAD)
%external %routine %spec RECTANGLE %alias "EDWIN_RECTANGLE" (%integer XL, YL, XU, YU)
%external %routine %spec BOX %alias "EDWIN_BOX" (%integer L, W, %record (POINTFM) %name C, D)
%external %routine %spec WIRE %alias "EDWIN_WIRE" (%integer W, N, %record (POINTFM) %array %name P)
%external %routine %spec POLYGON %alias "EDWIN_POLYGON" (%integer NUM E, %record (POINTFM) %array %name AP)
%list
%end %of %file
==== ecslib/emas-2900/pdp16pd_simps.txt ====
B[CONSTANT]=3
B[NAME]=4
B[NAMELIST]=5
B[SEPERATOR]=8
L<PADDING> = 0
L<THERE> = 1
L<MISSING> = 0
D[OLD NAME]=[NAME=1]
D[OLD NAME LIST] = [NAMELIST=1]
P(STAT)
(SS) [SEPERATOR];
P(SS)
'%CONTINUE' <1> (REPEAT COUNT'):
':' <1> (REPEAT COUNT'):
'%GO' <3>:
'%TRACE' <4>(ON/OFF):
==== ecslib/emas-2900/gamespd_oxos.txt ====
! OXOS (Now in IMP80, with graph mode fixed JGH 4.82)
%EXTERNAL %ROUTINE %SPEC TERMINATE
%EXTERNAL %ROUTINE %SPEC PROMPT(%STRING(19) S)
%SYSTEM %ROUTINE %SPEC CONSOLE(%INTEGER EP, %INTEGER %NAME AD, LEN)
%EXTERNAL %STRING(8) %FN %SPEC TIME
!
%ROUTINE OXO GUTS(%ROUTINE CLEAR LINE, %routine MOVE (%integer X, Y))
!
%INTEGER I, SEED, AD, MODE
%INTEGER %ARRAY SQ(1:9)
%OWN %INTEGER WCT, DCT
%CONST %INTEGER X = 1, O = 4
%CONST %STRING(5) %ARRAY HT(1:2) = "TAILS", "HEADS"
!
%STRING(8) TEMP; TEMP = TIME
SEED = (CHARNO(TEMP,7)*10+CHARNO(TEMP,8))&1023
!
%INTEGER %FN RANDOM(%INTEGER MAX)
%INTEGER I
SEED = (741*SEED+216)&1023
==== ecslib/emas-2900/lpd_hlaydoc.txt ====
___________________________________
LAYOUT: DOCUMENT PRODUCTION PROGRAM
The basic function of LAYOUT is to produce an appropriately paged and
formatted document from a source file in which the required layout is
indicated by __________
directives interspersed with the text; in general, the
spacing and line-structure of the source are not significant. A
secondary function is to output an updated source file similar to the
original except that the line-structure follows that of the formatted
document (subject to limitations of line length).
In addition the program optionally provides for the application of
shift conventions to the source (and updated source) to permit the
representation of upper and lower case letters and underlined characters
within a restricted character set. Code conversion is understood to be
carried out outside the layout program proper, which uses a character
set in which both upper and lower case letters and underlined characters
are represented by single codes. This character set is full ASCII
extended to 8 bits, with the eighth bit signifying underlining, and it
==== ecslib/emas-2900/lpd_pls.txt ====
!****************** VERSION DATED 27/9/77 ****************************
!*
!* * $VM$BN NOW WORKS IN ALL CASES - N BLANK LINES NOW SENT TO
!* OUTPUT FILE AFTER PAGE TURN CAUSED BY $V.
!* * 'READ ATOM OR DIRECTIVE' REWRITTEN. ESC GIVEN PRIORITY.
!* SYMBOL PARAMETERS CANNOT BE LETTERS.
!* CAP, CAPSH, UND, UNDSH CAN NOW BE COMBINED IN ANY ORDER, ALTHOUGH
!* CAPSH IS STILL ONLY RECOGNISED IF THE FIRST SYMBOL READ OF THE
!* ATOM.
!* * THE UPDATED SOURCE IS NOT GENERATED IF NO FILE HAS BEEN GIVEN
!* FOR IT.
%EXTERNAL %INTEGER %FN %SPEC EXIST(%STRING (63) S)
!*
!*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!*
!* ROUTINE REQUIRED TO DECODE AND SET STREAMS FOR EMAS.
!*
%EXTERNAL %ROUTINE %SPEC DEFINE(%STRING (63) S)
%EXTERNAL %ROUTINE %SPEC SETMARGINS(%INTEGER J,K,L)
%ROUTINE %SPEC PROCESSDOCUMENT
==== ecslib/emas-2900/pics_lifeis.txt ====
WWW WWW WWWWWWWW WWWWWWWW WWW WWWWWWW WWWWWWWW WWW WWW WWW WWW
WWW WWW WWWWWWWW WWWWWWWW WWW WWWWWWWW WWWWWWWW WWW WWW WWW WWW
WWW WWW WWW WWW WWW WWW WWW WWW WWW WWW WWW
WWW WWW WWW WWW WWW WWWW WWW WWW WWW WWW WWW
WWW WWW WWWWWW WWWWWW WWW WWWWWWWW WWWWWW WWW WWW WWW WWW
WWW WWW WWWWWW WWWWWW WWW WWW WWWWWW WWW WWW WWW WWW
WWW WWW WWW WWW WWW WWW WWW WWW WWW WWW WWW
WWWWWWWWW WWW WWW WWWWWWWW WWW WWWWWWWW WWW WWWWWWWW WWWWWWWW WWWWWWWW
WWWWWWWWW WWW WWW WWWWWWWW WWW WWWWWWW WWW WWWWWW WWWWWWWW WWWWWWWW
WWWWWW WWWWWWWW WWWWWWWW WWW WWW WWWWWW WWWWWWWW
WWWWWWWW WWWWWWWW WWWWWWWWW WWW WWW WWWWWWW WWWWWWWW
WWW WWW WWW WWW WWW WWW WWW WWW WWW WWW
==== ecslib/emas-2900/pics_horse.txt ====
WW* W* *WWW*
WWWA WW* WWMMMWW VWW VWA W
WWWA W WW* WW WWW .WW. W* .
WWW* WW .W. W .WWA . VWW. WW W
.. . WWWW WW .W WWA WW....* WW. WW W
/XX
.AX> WWWW WW W.. W WWWVXXXX* WWW W W
TBBBB
--...*XX>. WWWWW W.W .WW WWWVXXXXX.WWW/WW VA
/ BB TBBBB*
...--.*BBBWWW* WWWW WW .W WWWVXXXXX*WWWWWWW WW
/ XXX TBBBBBX
./*XXXXX X XXWW XXXXXXXDWWWWW WVWA
BBBBBB BB BBBBBBBW
.XXXXXXXX WWWWWBW* WWBW.WWBBWWBBBBBBBBBAWWWWWW WWWW
/BBBBBBBB X X XX <XXXXXXXXL
ABBBBBBBB> . ..WWBW+ WBW.WBBWWW<BBBBBBBBBBAWWWW WWWWW
+XXXXXXXX X X XX XXXXXXXXXXL
.BBBBBBBBB>///./...WBW.WWBWBBBWWW<BBBBBBBB B.WWWWWWW W W
/XXXXXXXXX X X XXX XXXXXXXX X
.BBBBBBBBBB BBBBB/...BWB.WBWBBWWWW<BBBBBBBB BAWWWWWWWW W
XXXXXXXXXX XXXXX X X X XX XXXXXXXX XL
. /ABBBBBBBBBB BBBBBBAV/.BWL//BWBBBBWVBBBBBBBB BB.WWWWWW W W
+XXXXXXXXXX XXXXXX X X X XXXX TXXXXXXXX XX
./// <XBBBBBBBBB BBBBBBBV/.BWW//BBWBBWVBBBBBBBBA BBWWWWWWWWW W WA
XXXXXXXXX XXXXXXX X XX XX XXXXXXXXL XX
./ // <XBBBBBBBB VBBB BBA//BWBWBBWBB//WWLBBBBBBBB BBWWWWWWWWWW W
XXXXXXXX XXX XX X X .. XX MXXXXXXXX XX
// <XBBBBBBB A/L+++BBBX/BBB//BBBB//WBWWLBBBBBBB BBWWWWWWWWWW WA
XXXXXXX P X XXX XXX .XXX X VXXXXXXX XX
/- <BBBBBBV A.BBBBBBBBV/BBB/BBBB/WWBBWWWVBBBBBBBBBWWWWWWWWWWWWWW VW
XXXXXXT P/XXXXXXXX XXX .XXX XX LXXXXXXXXX
. .- .<BBBBBV A.BBBBBBBBB//BB//BWBWWWBBBBWWW VBBBBBBBWWWW WW WWWWW WW
XXXXXT P/XXXXXXXXX XX X X XXXX TXXXXXXX
. .// VTBBBBTXBBBBBBBBBBBBXBB/XBXBBWWBBBBBWWW XBBBBBB/WWWWWWWWWWWWWWW
XXXXX XXXXXXXXXXXX X/ / XX XXXXX XXXXX/
. // +WBBBBVBBBBBBBBBBBBBBBBX/BXWBBBBBBBBBWWWWW XBBBX///WWWWWWWWWWWW ./
XXXX XXXXXXXXXXXXXXX / XXXXXXXXX XXX
==== ecslib/emas-2900/edwin_chars.txt ====
! Program to plot the EDWIN character sets
%include "conlib.edwin_inc"
%external %routine %spec PROMPT (%string (63) STR)
%external %string (63) %fn %spec ITOS (%integer N, P)
%begin
%own %integer init = 0
%const %integer split = 32
%integer alphabet, char, set, y
%on 14 %start
! Event 14,6 is signaled if you choose an alphabet that doesn't exist.
alphabet = alphabet + 1
%finish
%if init=0 %start
prompt ("Device: ")
read (set)
initialise for (set)
viewport (0, 85*400, 0, 60*400) %if default device = 7580
viewport (0, 40*400, 0, 28*400) %if default device = 7221 %or default device = 7220
window (0, 7200, 0, 4000)
==== ecslib/emas-2900/gamespd_starwars.txt ====
%EXTERNALROUTINE STARWARS
%EXTERNALROUTINESPEC PROMPT(%STRING (15) S)
%EXTERNALREALFNSPEC RANDOMREAL
%EXTERNALREALFNSPEC CPUTIME
%INTEGER CH, F, S, Z, FUEL, GF, GD, SFLAG
%REAL X, Y, H, T, C, G, A, V, SS, PROB, DAMAGE, Q, K, DA, DT, DC
%ROUTINE TEXT
%PRINTTEXT"
THIS PROGRAM SIMULATES THE FINAL ATTACK ON THE DEATHSTAR BY REBEL
X-WING FIGHTERS.
YOU ARE THE PILOT OF ONE OF THESE FIGHTERS, AND MUST FLY YOUR CRAFT
DOWN A NARROW CHANNEL IN THE DEATHSTAR, AND ATTEMPT TO HIT A"
%PRINTTEXT"
VULNERABLE POINT WHICH HAS BEEN LOCATED ON THE STOLEN PLANS.
YOUR CRAFT'S TARGETING COMPUTER WILL DO ALL OF THE ACTUAL AIMING -
ALL YOU HAVE TO DO IS TO FLY AS CLOSE TO THE CENTRE OF THE CHANNEL,
AND AS LOW AS POSSIBLE."
%PRINTTEXT"
==== ecslib/emas-2900/coms_fore.txt ====
TTYINIT
==== ecslib/emas-2900/edwin_types.txt ====
{ TYPE definitions for using EDWIN from Imp }
%record %format Point Fm (%integer X, Y)
%end %of %file
==== ecslib/emas-2900/oldgeneraly_whois.txt ====
WHOIS name
This command searches the MAIL programs list of users, and gives a table
of any which match the name provided. The following examples give an
idea of how it can be used :
WHOIS HUGHES
WHOIS ECSC*@2972
WHOIS *@VAX
==== ecslib/emas-2900/pics_susie.txt ====
SSSS U U SSSS II EEEEEE
S U U S II E
SSSS U U SSSS II EEEE
S U U S II E
SSSS UUUU SSSS II EEEEEE
$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$
==== ecslib/emas-2900/pascal#zur_file2.txt ====
UTILTY:TOEMAS
LIST.ALL
READTAPE
DECODE
FILE.A
FILE.B
FILE.C
FILE.D
FILE.E
FILE.F
FILE.G
FILE.H
FILE.I
READTAPE
DECODE
.END
==== ecslib/emas-2900/pascal#zur_file3.txt ====
%begin {Input P-Code Pascal from tape. ADC}
%const %integer max = 2*13
%const %integer %array blocks(1:max) =
-(1<<16+351), (1<<16+6),
-(20<<16+3840), (3<<16+6),
-(78<<16+3840), (1<<16+486),
(1<<16+6), -(62<<16+3840),
(1<<16+3794), (1<<16+6),
-(74<<16+3840), (1<<16+2121),
(1<<16+6), -(1<<16+351),
(1<<16+6), -(20<<16+3840),
(3<<16+6), -(78<<16+3840),
(1<<16+486), (1<<16+6),
-(62<<16+3840), (1<<16+3794),
(1<<16+6), -(74<<16+3840),
(1<<16+2121), (1<<16+6)
%external %routine %spec Claim Tape
%external %routine %spec Release tape
%external %routine %spec Read tape(%integer Buffer address, size)
%external %routine %spec Writetape(%integer Buffer address, size)
==== ecslib/emas-2900/pascal#zur_file4.txt ====
%begin
{Character set conversion for P-Code Pascal tape. ADC}
%const %byte %array Map(0:63) =
{0} 0 {NULL},
{1} 'A','B','C','D','E','F','G','H','I','J','K','L',
'M','N','O','P','Q','R','S','T','U','V','W','X',
'Y','Z',
{27} '0','1','2','3','4','5','6','7','8','9',
{37} '+','-','*','/','(',')','$','=',' ',',','.','''',
'[',']',':',0(4),'^',0,'<','>',0(3),';',
0(*)
%integer Sym, Stopping
%const %integer Input ended = 9
%string(255) Line
%integer %function Get sym
%own %short %integer Count = 0, k
%integer Sym = 0, j
%for j = 1, 1, 6 %cycle {Read a six-bit character}
Read symbol(k) %if Count&7 = 0
==== ecslib/emas-2900/pascal#zur_file5.txt ====
(*ASSEMBLER AND INTERPRETER OF PASCAL CODE*)
(*K. JENSEN, N. WIRTH, CH. JACOBI, ETH MAY 76*)
PROGRAM PCODE(INPUT,OUTPUT,PRD,PRR);
(* NOTE FOR THE IMPLEMENTATION.
===========================
THIS INTERPRETER IS WRITTEN FOR THE CASE WHERE ALL THE FUNDAMENTAL
TYPES TAKE ONE STORAGE UNIT.
IN AN IMPLEMENTATION ALL THE HANDLING OF THE SP POINTER HAS TO TAKE
INTO ACCOUNT THE FACT TAHT THE TYPES MAY HAVE A LENGTH DIFFERENT FROM
ONE. SO IN PUSH AND POP OPERATIONS THE IMPLEMENTOR HAS TO INCREASE
AND DECREASE THE SP NOT BY 1 BUT BY A NUMBER DEPENDING ON THE TYPE
CONCERNED.
WHERE THE NUMBER OF UNITS OF STORAGE IS USED EXPLICITELY,
THIS VALUE MUST NOT BE CORRECTED, BECAUSE
THE COMPILER HAS COMPUTED IT TAKING INTO ACCOUNT THE LENGTHS OF THE
TYPES INVOLVED.
THE SAME HOLDS FOR THE HANDLING OF THE NP POINTER (WHICH MUST NOT BE
CORRECTED) *)
==== ecslib/emas-2900/generals_uinfis.txt ====
!TITLE UINFI interface procedures
!! The following procedures call
%EXTERNAL %INTEGER %FN %SPEC UINFI(%INTEGER Function)
!< S# SS own fsys
! File system number
!%SYSTEM %INTEGER %FN %SPEC SS own fsys
!>
%SYSTEM %INTEGER %FN SS own fsys
%RESULT = UINFI(1)
%END
!< S# SS reason
! foreground = 1
! batch = 2
! obeyfile = 3
!%SYSTEM %INTEGER %FN %SPEC SS reason
!>
%SYSTEM %INTEGER %FN SS reason
%RESULT = UINFI(2)
==== ecslib/emas-2900/pascal#zur_file6.txt ====
(*$C+,T-,D-,L-*)
(**********************************************
* *
* *
* PORTABLE PASCAL COMPILER *
* ************************ *
* *
* PASCAL P4 *
* *
* *
* AUTHORS: *
* URS AMMANN *
* KESAV NORI *
* CHRISTIAN JACOBI *
* *
* ADDRESS: *
* *
* INSTITUT FUER INFORMATIK *
* EIDG. TECHNISCHE HOCHSCHULE *
* CH-8096 ZUERICH *
==== ecslib/emas-2900/pascal#zur_file7.txt ====
L 3
ENT 1
ENT 2
LDOI
LDCI
GRTI
FJP
LCA' ****
I 10
LDCI
LDCI
LDA 1
CSP
LDCI
STRI 0
LDCI
STRI 0
LDCI
STRI 0
I 20
LDOI
==== ecslib/emas-2900/pascal#zur_file8.txt ====
(*$C+,T+,L+*)
(**********************************************
* *
* *
* PORTABLE PASCAL COMPILER *
* ************************ *
* *
* PASCAL P3 *
* *
* *
* AUTHORS: *
* URS AMMANN *
* KESAV NORI *
* CHRISTIAN JACOBI *
* *
* ADDRESS: *
* *
* INSTITUT FUER INFORMATIK *
* EIDG. TECHNISCHE HOCHSCHULE *
* CH-8096 ZUERICH *
==== ecslib/emas-2900/pics_calender_may.txt ====
-XXXXXX-
XXXX XX
XXXXX X XX
XX XX X XX
XX XXX X XX
XX *- XXX X XX
XX /**** XXXX X
XXX -** X
XXX X
XX X
XXX / X
XXX (/ X X
XXX X -XX X
XXXX X XXXXXXXXX X
XXXX X XXXXXXXX XXX
X XXX XX XX XXXXXXXXXXXX
XXXX X XX
XXXXX XX XX
XXXXX X XX XX
XXXXXX X XX XXX
==== ecslib/emas-2900/pascal#zur_file9.txt ====
****************************************************************
****************************************************************
****************************************************************
****************************************************************
****************************************************************
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+-*/()$= ,
S2)W=
==== ecslib/emas-2900/pascal#zur_file10.txt ====
(*ASSEMBLER AND INTERPRETER OF PASCAL CODE*)
(*K. JENSEN, N. WIRTH, CH. JACOBI, ETH MAY 76*)
PROGRAM PCODE(INPUT,OUTPUT,PRD,PRR);
(* NOTE FOR THE IMPLEMENTATION.
===========================
THIS INTERPRETER IS WRITTEN FOR THE CASE WHERE ALL THE FUNDAMENTAL
TYPES TAKE ONE STORAGE UNIT.
IN AN IMPLEMENTATION ALL THE HANDLING OF THE SP POINTER HAS TO TAKE
INTO ACCOUNT THE FACT TAHT THE TYPES MAY HAVE A LENGTH DIFFERENT FROM
ONE. SO IN PUSH AND POP OPERATIONS THE IMPLEMENTOR HAS TO INCREASE
AND DECREASE THE SP NOT BY 1 BUT BY A NUMBER DEPENDING ON THE TYPE
CONCERNED.
WHERE THE NUMBER OF UNITS OF STORAGE IS USED EXPLICITELY,
THIS VALUE MUST NOT BE CORRECTED, BECAUSE
THE COMPILER HAS COMPUTED IT TAKING INTO ACCOUNT THE LENGTHS OF THE
TYPES INVOLVED.
THE SAME HOLDS FOR THE HANDLING OF THE NP POINTER (WHICH MUST NOT BE
CORRECTED) *)
==== ecslib/emas-2900/pascal#zur_file11.txt ====
(*$C+,T-,D-,L-*)
(**********************************************
* *
* *
* PORTABLE PASCAL COMPILER *
* ************************ *
* *
* PASCAL P4 *
* *
* *
* AUTHORS: *
* URS AMMANN *
* KESAV NORI *
* CHRISTIAN JACOBI *
* *
* ADDRESS: *
* *
* INSTITUT FUER INFORMATIK *
* EIDG. TECHNISCHE HOCHSCHULE *
* CH-8096 ZUERICH *
==== ecslib/emas-2900/pascal#zur_file12.txt ====
L 3
ENT 1
ENT 2
LDOI
LDCI
GRTI
FJP
LCA' ****
I 10
LDCI
LDCI
LDA 1
CSP
LDCI
STRI 0
LDCI
STRI 0
LDCI
STRI 0
I 20
LDOI
==== ecslib/emas-2900/pascal#zur_file13.txt ====
(*$C+,T+,L+*)
(**********************************************
* *
* *
* PORTABLE PASCAL COMPILER *
* ************************ *
* *
* PASCAL P3 *
* *
* *
* AUTHORS: *
* URS AMMANN *
* KESAV NORI *
* CHRISTIAN JACOBI *
* *
* ADDRESS: *
* *
* INSTITUT FUER INFORMATIK *
* EIDG. TECHNISCHE HOCHSCHULE *
* CH-8096 ZUERICH *
==== ecslib/emas-2900/pascal#zur_file14.txt ====
%begin {Input P-Code Pascal from tape. ADC}
%const %integer max = 2*13
%const %integer %array blocks(1:max) =
-(1<<16+351), (1<<16+6),
-(20<<16+3840), (3<<16+6),
-(78<<16+3840), (1<<16+486),
(1<<16+6), -(62<<16+3840),
(1<<16+3794), (1<<16+6),
-(74<<16+3840), (1<<16+2121),
(1<<16+6), -(1<<16+351),
(1<<16+6), -(20<<16+3840),
(3<<16+6), -(78<<16+3840),
(1<<16+486), (1<<16+6),
-(62<<16+3840), (1<<16+3794),
(1<<16+6), -(74<<16+3840),
(1<<16+2121), (1<<16+6)
%external %routine %spec Claim Tape
%external %routine %spec Release tape
%external %routine %spec Read tape(%integer Buffer address, size)
%external %routine %spec Writetape(%integer Buffer address, size)
==== ecslib/emas-2900/pascal#zur_file15.txt ====
%begin
{Character set conversion for P-Code Pascal tape. ADC}
%const %byte %array Map(0:63) =
{0} 0 {NULL},
{1} 'A','B','C','D','E','F','G','H','I','J','K','L',
'M','N','O','P','Q','R','S','T','U','V','W','X',
'Y','Z',
{27} '0','1','2','3','4','5','6','7','8','9',
{37} '+','-','*','/','(',')','$','=',' ',',','.','''',
'[',']',':',0(4),'^',0,'<','>',0(3),';',
0(*)
%integer Sym, Stopping
%const %integer Input ended = 9
%string(255) Line
%integer %function Get sym
%own %short %integer Count = 0, k
%integer Sym = 0, j
%for j = 1, 1, 6 %cycle {Read a six-bit character}
Read symbol(k) %if Count&7 = 0
==== ecslib/emas-2900/pascal#zur_file16.txt ====
==== ecslib/emas-2900/lisp_lispv09s70.txt ====
%EXTERNALROUTINESPEC PROMPT(%STRING(15) S)
%EXTERNALROUTINESPEC CLOSE STREAM(%INTEGER N)
%EXTERNALROUTINESPEC DEFINE(%STRING(63) S)
%EXTERNALROUTINE LISP INTP(%INTEGER SPACE, INITMODE)
!
! ***** READ ROUTINES *****
!
%INTEGERFNSPEC RATOM
%INTEGERFNSPEC READ SEXP(%STRING(15) PMPT)
!
! ***** PRINT ROUTINES *****
!
%ROUTINESPEC PRINT CHARS(%STRING(72) PHRASE)
%STRING(15)%FNSPEC NUMBER(%INTEGER I)
%STRING(72)%FNSPEC PNAME(%INTEGER INDEX)
%ROUTINESPEC PRINT(%INTEGER INDEX)
!
! ***** LISP ROUTINES *****
!
%INTEGERFNSPEC PUSH(%INTEGER INDEX)
%INTEGERFNSPEC CONS(%INTEGER CAR, CDR)
==== ecslib/emas-2900/pics_calender_march.txt ====
LLLLLL
LLLLLLLLLLLLLL
LLLLLLLLLLLLLLLLL
LLLLLLLLLLLLLLLLL
LLL LLLLLLLLLLLLLL
LLLL LL LLLLL
LLLLLL LLL LLLLLL
LLLLLL LLL LLLLLLLL
LLLLLLL LLL LLLLLL LLLLLL
LLLLLLLLLLL LLLLLLLLLLLLLLLL LLLLLLLLLLLLL
LLLLLLLLLLL LL LLLLLLLLLL LLLL
LLL LLLLLLLL LL LL LL
LLL LLLLLLLL LL LL LL
LLLL LLLLLL LL LL LLLLLLLLL LL
LLL LLLLLL LLL LLLLLLLLLLLL LL
LLLLLLLLLLLLLLLLLLLLLLLLL LL LLLLLLLLLLLLL LL
LLLLLLLLLLLLLLLLLLLLLLLLL LL LL
LLLLLLLLLLLLLLLLLLLLLLLLL LL LL LL
==== ecslib/emas-2900/vlsiuse_cmos8.txt ====
IDENT *
CA 3 1 0 2
CP 4 2 0 7
CM 2 4 0 8
CW 6 8 0 1
CS 7 7 0 3
CC 1 0 0 6
CV 5 15 0 3
CG 8 12 0 1
CD 5 1 0 8
CN 7 7 0 1
CT 1 15 0 1
ZZZ
==== ecslib/emas-2900/gt_view_getusers.txt ====
%BEGIN
%INTEGER START,FIN
%INTEGER I
SELECTOUTPUT(1)
READ(START)
I = START+X'28'
FIN=START+X'2000'-2
%CYCLE
%WHILE I<FIN %CYCLE
%EXIT %IF BYTEINTEGER(I)='/'
I=I+1
%REPEAT
%EXIT %IF I>=FIN
I=I-3
PRINTSTRING(STRING(I));NEWLINE
I=I+BYTEINTEGER(I)
%REPEAT
%ENDOFPROGRAM
==== ecslib/emas-2900/arthur.txt ====
PDP16S,NEWSIMS,PDPDUMPS,WOMBLES,SIMPS,REDUCES,GRAPH16S,ARTHPS
%CONSTSHORTINTEGERARRAY MAIN(1: 172) = %C
1, 0, 4, 9, 15, 19, 23, 28, 33, 37, 43, 48,
53, 58, 63, 67, 71, 82, 86, 90, 94, 97, 105, 109,
113, 114, 116, 0, 118, 122, 0, 124, 127, 0, 131, 134,
135, 138, 0, 141, 144, 147, 150, 153, 156, 0, 162, 162,
167, 171, 0, 174, 178, 182, 189, 0, 191, 196, 0, 199,
203, 207, 210, 0, 213, 216, 219, 0, 222, 225, 228, 231,
0, 235, 238, 241, 244, 247, 0, 250, 253, 0, 256, 259,
262, 0, 265, 0, 268, 272, 0, 274, 277, 280, 283, 286,
0, 292, 296, 299, 302, 305, 308, 0, 310, 315, 0, 317,
320, 323, 0, 326, 330, 334, 0, 338, 341, 0, 343, 346,
0, 349, 355, 0, 357, 0, 362, 365, 368, 0, 370, 376,
0, 378, 0, 382, 390, 398, 402, 0, 406, 409, 412, 0,
417, 420, 0, 422, 427, 0, 429, 0, 432, 437, 0, 439,
442, 0, 444, 450, 0, 452, 457, 0, 459, 462, 465, 468,
471, 474, 477, 0
==== ecslib/emas-2900/include_ascii.txt ====
%end %of %list
%const %integer NUL = 0, SOH = 1, STX = 2, ETX = 3
%const %integer EOT = 4, ENQ = 5, ACK = 6, BEL = 7
%const %integer BS = 8, HT = 9, LF = 10, VT = 11
%const %integer FF = 12, CR = 13, SO = 14, SI = 15
%const %integer DLE = 16, DC1 = 17, DC2 = 18, DC3 = 19
%const %integer DC4 = 20, NAK = 21, SYN = 22, ETB = 23
%const %integer CAN = 24, EM = 25, SUB = 26, ESC = 27
%const %integer FS = 28, GS = 29, RS = 30, US = 31
%const %integer DEL = 127
%const %integer TAB = HT
%list
==== ecslib/emas-2900/pdp16pd_arthps.txt ====
*
* PHRASE STRUCTURE DEFINITOIN OF ARTHUR
*
* DEFINE BUILT-IN PHRASES
*
B[CONSTANT]=3
B[NAME]=4
B[NAMELIST]=5
B[SPDEFN']=6
B[TEXT]=7
B[SEPERATOR]=8
B[CONSTANT LIST]=9
*
* DEFINE NAMED LITERAL VALUES
*
L<PADDING> = 0
L<THERE> = 1
L<MISSING> = 0
==== ecslib/emas-2900/oldgeneraly_ecceview_a.txt ====
!TITLE INTRODUCTION TO TEXT EDITING
ECCE is a text editor. Under the control of commands entered from a
terminal keyboard, it carries out modifications to a body of text held
in a computer file. This text file may be, for example, a source
program in some high-level language, or tables of results generated by a
statistical package, or data intended as input to a user's program; it
may simply be material which is held in the computer filing system
solely for the purposes of editing and listing. The differences between
these kinds of text files are not in any way significant to the
operation of the Editor. What ECCE cannot do is edit files which are
not composed of lines of text, such as executable code files.
!<Text files
A text file consists of a number of lines, each line containing a
number of characters. The characters making up a line are either
printing characters or space characters. There is no need when typing
in lines on a computer terminal, any more than on a conventional
typewriter, to 'space' after the last printing character on a line, in
order to pad lines out to a particular fixed length; RETURN suffices to
==== ecslib/emas-2900/oldgeneraly_ecceview_b.txt ====
!TITLE ADVICE FOR BEGINNERS
To begin with, the Editor will seem a clumsy tool, particularly for
those with limited typing experience. Changes which could be marked up
on a document in no time take an age to translate into sequences of
editing commands to achieve the desired effect. Fluency comes with
practice, although editing remains a fiddling business, and mistakes are
inevitable. Happily most mistakes are easily recovered from, and in the
exceptional case where an edit goes disastrously wrong (for example
unintentionally scrambling half the file), the editing session can
always be abandoned without losing the original file, so that only the
editing time is wasted.
With experience, it becomes quite straightforward, and habitual, to
edit a file 'sight unseen'. However, for initial learning, it is
sensible to use as test data a file with known contents.
!PAGE
The following procedure is a possible learning programme:
(a) Beg or borrow a copy of some text file for experimentation.
A suitable length is 30 to 100 lines of text.
==== ecslib/emas-2900/oldgeneraly_ecceview_c.txt ====
!TITLE CALLING THE EDITOR
These examples assume that the EMAS option NOBRACKETS is
selected.
(a) To edit an existing file called "CURTEXT" so that the new file
created will also be called "CURTEXT":
VECCE CURTEXT
This is the standard updating procedure.
(b) To edit an existing file called "OLDTEXT" in such a way as to
create a new file called "NEWTEXT":
VECCE OLDTEXT/NEWTEXT
(c) To create a new file called "PROG34" from scratch:
VECCE .N/PROG34
The ".N" stands for a null file, so that technically this is a
special case of (b) above starting with an empty old file. The
first editing command when creating a new file would normally be
"G*" (see Get below)
!PAGE
(d) To inspect an existing file called "RESULTS" without altering it:
==== ecslib/emas-2900/oldgeneraly_ecceview_d.txt ====
!TITLE COMMAND FORMATS
When the Editor is called, it positions its file pointer at the start
of the first line in the file to be edited and presents the initial
display. At the outset, it is in command mode and expects command input
to be typed on the command line. The response may take one of three
forms:
typing a command line followed by RETURN
typing a Special command followed by RETURN
pressing a control key (including plain RETURN)
A command line consists of one or more editing commands, optionally
separated by spaces. A command line is terminated by RETURN and errors
noticed while typing it may be cancelled by means of the DEL key.
!<Special commands
Special commands are distinguished by starting with the prefix "%"
(percent-sign) followed by a letter. They are used to select options
and set modes which modify the effect of subsequent editing commands.
The most essential Special command is the Close command "%C" which is
==== ecslib/emas-2900/oldgeneraly_ecceview_e.txt ====
!TITLE INDIVIDUAL EDITING COMMANDS
!<Move (forward one line) M
The Move command causes the file pointer to be moved from its current
position to the start of the following line.
Attaching a repetition number to a Move command provides a means
of moving forward a fixed number of lines. For example, the
command "M99" issued at the start of the file, causes the pointer
to be moved to the start of the hundredth line in the file.
The command fails if the file pointer is at the very end of the file,
that is, beyond the last line of text.
It is legitimate to Move from the last line in the file to the
end-of-file position, but then further Moves will fail.
!>
!<Move back (one line) M-
This command causes the file pointer to be moved from its current
position to the start of the previous line.
The command fails if the current line is the first line in the file,
==== ecslib/emas-2900/oldgeneraly_ecceview_f.txt ====
!TITLE OPTIONS
This section describes the various options which may be selected to
control or qualify the operation of the Editor. The initial parameters
in the list marked with an asterisk can be specified only in the command
line when the Editor is called (see CALLING THE EDITOR); that is, once
established, they cannot be changed. The others may be freely altered
at any time, by means of the Environment command "%E"(below).
!<Pre-definition file *PRE
This Option is provided to make it possible to specify a file of
editing commands which are to be obeyed at the outset of the editing
session. Its main use is to permit frequently used definitions to be
recovered from a file, but the file may contain any editing commands
and may in fact comprise a complete edit ending with the Close command
("%C"). Values for this parameter must be valid file-names. Although
PRE may be specified at the outset only, the %G command (Get editing
commands from file) is available at any time.
Examples: -PRE=WPPREDEF -PRE=ECUU99.PROJ_DEF1
!>
==== ecslib/emas-2900/oldgeneraly_ecceview_g.txt ====
!TITLE SPECIAL COMMANDS
The most important Special command is the Close command "%C" which is
the normal method of closing off the edit and making permanent the
changes to the file. If for any reason it is desired to ABANDON the
edit without giving effect to the changes, the Abandon command "%A"
should be used instead. The variant "%Ci" is used to invoke IMP syntax
checking before finally closing the file.
See also the section on MACROS for the Special commands "%Q" (Query key
definition) and "%K" (define Key).
!<modify Environment %E
The Environment command "%E" switches the Editor into a mode in
which the various options described above may be modified. It cycles
through the list of modifiable options displaying the current value and
permitting an alternative value to be specifed. The RETURN key is used
to move on to the next in the list and colon is used to return to
editing. For a numeric option, a number must be typed to specify a new
value; for a yes/no option any response other than RETURN or colon is
sufficient to alter the setting.
==== ecslib/emas-2900/oldgeneraly_ecceview_h.txt ====
!TITLE MACROS
The upper-case letters 'A' to 'W' and the punctuation symbols have a
fixed significance to ECCE. All the lower-case letters, and the
upper-case letters 'X' to 'Z', are available for definition as macros,
that is as abbreviations for sequences of characters. So also are the
control keys.
!<Command and text macros
The printing keys mentioned have a significance as macros only
within commands, since in data-entry mode or within text strings they
stand for themselves. Any of them may be used in a position where a
command letter is expected and may stand for any sequence or partial
sequence of commands.
The letters 'X' to 'Z' and 'x' to 'z' have two additional
properties: first, they may be used in a position where a text
parameter is required; and, second, they may be defined to stand for a
text sequence appearing in the file being edited, or the secondary
input file, using the Define Macro ("^") command.
==== ecslib/emas-2900/oldgeneraly_ecceview_i.txt ====
!TITLE PROGRAMMED COMMANDS
This section describes facilities for constructing more powerful
commands from simple commands. So far, the only form of compound
command structure introduced has been the facility to type more than one
command in a single command line, with the consequential capability of
repeating the complete sequence by subsequently typing a repetition
number instead of another command.
!<Caution
The structuring facilities described in the following paragraphs can
be used to carry out some quite complicated operations, but commands
making heavy use of them tend to become rather difficult to understand.
It is not sensible to try to devise a programmed command of any
significant complexity while working at the terminal. Contemplation in
tranquillity is required. Some users note in a log-book those which
they have found useful in the past.
!>
!<Command sequences
==== ecslib/emas-2900/oldgeneraly_ecceview_j.txt ====
!TITLE IMPLEMENTATIONS
One of the objectives of the design of ECCE is that it should not be
system-dependent, but should be implementable on a range of machines.
This video version as described in earlier sections is implemented
uniformly on EMAS 2900, VAX/VMS and the Computer Science Department's
Advanced Personal Machine. The syntax checking capability is a
by-product of work on the programming environment for the APM.
The detail of some features, for example those involving naming of
files, is inevitably bound up with a particular operating system. The
performance of the editor as seen by the user is also affected by the
system, and, more especially, the mode of connection.
!<Mode of connection
The most important factor affecting editor performance is the mode of
connection of the user's terminal. In general, the more direct the
connection, the better the performance will be. ECCE has a number of
options which make it possible to exercise some control over the
frequency of interaction and the volume of data transferred.
==== ecslib/emas-2900/pics_pooh.txt ====
XXXX
XX XX
XXXX XX XX
XXX XX XX XX
XX XX XXXX XX XX
XX XX XXXX XX
XX XX XXX XX
XX XX XXX XX
XX XXX XX
XX XXX
XX XX
XX XX
XXXX XX
XX XX
XX XX
XX X XX
XX XXX XX
==== ecslib/emas-2900/lpd_jlaydcls.txt ====
$A ESCAPE='@';INVERT=0;PAGE=60
@A TAB=4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72
@A CAPO=0;CAPSHO=0;MARK=2
@A CAP=0;CAPSH=0
@A PAGENO=1;BOTTOM=3; LINE=80
@C21 EDINBURGH REGIONAL COMPUTING CENTRE@C67 September 1977
@B3 @L1CMU
layout: a document formatting program
@P2
LAYOUT is a document formatting program, written in IMP. Its
input is a character file consisting for the most part of the
text of the document to be produced. This source file is read once by
LAYOUT and the output document file is produced as it is read. Optionally,
LAYOUT can also produce an updated source file, the purpose of which is
described later.
@P1The source file is treated as a sequence of 'text atoms' separated by
delimiters, a delimiter being any number of spaces or newlines or both.
A text atom thus corresponds to a normal word,
possibly followed by punctuation. The program reads the text atoms and
places them one by one, separated by %single spaces, in a line buffer
until the next text atom would exceed the line length defined by the
==== ecslib/emas-2900/basicpd_bass.txt ====
%EXTERNALSTRING(15) IFILE,OFILE
%EXTERNALROUTINESPEC RUN(%STRING(63) S)
%EXTERNALROUTINESPEC DEFINE(%STRING(63) S)
%EXTERNALROUTINESPEC LIST(%STRING(63) S)
%EXTERNALINTEGER STREAM
%EXTERNALROUTINESPEC SET MARGINS(%INTEGER A,B,C)
%EXTERNALROUTINE BASIC(%STRING(63) IF)
OFILE='.TT' %UNLESS IF->IF.('/').OFILE
%IF IF='' %OR IF='.TT' %START
IF='.TT' ; STREAM=0
%FINISHELSE STREAM=1
IFILE = IF %UNLESS OFILE->OFILE.(',').IFILE
OFILE='.TT' %IF OFILE=''
%IF IF#'.TT' %AND ( OFILE=IF %OR OFILE=IFILE) %START
PRINTSTRING('INVALID PARAMETERS')
NEWLINE ; %STOP
%FINISH
DEFINE('ST01,'.IF)
DEFINE('ST02,'.OFILE)
DEFINE('ST03,'.IFILE)
SELECTOUTPUT(2)
==== ecslib/emas-2900/lpd_qls.txt ====
!*
!* * $VM$BN NOW WORKS IN ALL CASES - N BLANK LINES NOW SENT TO
!* OUTPUT FILE AFTER PAGE TURN CAUSED BY $V.
!* * 'READ ATOM OR DIRECTIVE' REWRITTEN WITH SWITCH. ESC SYMBOL IS
!* ALWAYS GIVEN PRIORITY ON INPUT. E.G. _$% WOULD NOW PRODUCE AN
!* UNDERLINED PERCENT.
!* CAP, CAPSH, UND, UNDSH CAN NOW BE COMBINED IN ANY ORDER, ALTHOUGH
!* CAPSH IS STILL ONLY RECOGNISED IF THE FIRST SYMBOL READ OF THE
!* ATOM.
!* * THE UPDATED SOURCE IS NOT GENERATED IF NO FILE HAS BEEN GIVEN
!* FOR IT.
%EXTERNAL %INTEGER %FN %SPEC EXIST(%STRING (63) S)
!*
!*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!*
!* ROUTINE REQUIRED TO DECODE AND SET STREAMS FOR EMAS.
!*
%EXTERNAL %ROUTINE %SPEC DEFINE(%STRING (63) S)
%EXTERNAL %ROUTINE %SPEC SETMARGINS(%INTEGER J,K,L)
%ROUTINE %SPEC PROCESSDOCUMENT
==== ecslib/emas-2900/gamefpd_fullgame.txt ====
%CONTROL 0
%ROUTINE CHECKSTUDENT
%BYTEINTEGER I
;!%MCODE
I=0
*XC_80(16,11),80(11); ! CLEAR BUFFER
*MVI_81(11),160
*MVI_95(11),7
*LD_0,80(11)
*LD_2,88(11)
*SVC_254
*STD_4,80(11)
*MVC_I(1),81(11)
*NI_I,1
PRINTSTRING("No access to Student users
")%ANDSTOPIF I#0
%END
%DYNAMICROUTINESPEC CLEAR(%STRING(63)K)
%DYNAMICROUTINESPEC DEFINE(%STRING(63)K)
%EXTERNALROUTINESPEC PROMPT(%STRING(15)S)
==== ecslib/emas-2900/generals_whoiss.txt ====
! Source of WHOIS
%external %routine WHOIS (%string (255) S)
%external %routine %spec MAIL (%string (255) S)
%external %routine %spec DEFINE (%string (255) S)
DEFINE ("75,.NULL")
SELECTINPUT (75)
MAIL ("DIR,".S)
%end
%end %of %file
==== ecslib/emas-2900/gt_view_preface.txt ====
To analyse Tony Gibbons 'Trojan Horse' file,
type..
#CONNECT ERCC04.VIEWLOG
#DEC <Number given above>
DEFINE 1,USERLIST
RUN ANALYSE
==== ecslib/emas-2900/generals_build_obey1.txt ====
mail
dir */m#userlist
stop
e m#userlist
k3
m0m-k
m-0
f/ EDEE /k;0
m-0
f/vax /k;0
m-0
f/ Dlist /k3;0
m-0
f/ EDXA /k;0
m-0
v/empty/\m,k;0
m-0
f/ BUSH /l6i/;/m;0
m-0
f/ EMAS /l6i/;/m;0
m-0
==== ecslib/emas-2900/generals_build_obey2.txt ====
copy m#userlist,t#userlist
copy2 ecslib.generals_build_userbuild,t#builds
imp80 t#builds,t#buildy
run t#buildy
copy2 ecslib.generals_usnames,t#users
v t#users
f/!*start/m
%s=t#usertext
^
m0
$
%c
imp80 t#users,t#usery
delete t#users,t#builds,t#buildy,t#userlist,t#usertext
==== ecslib/emas-2900/vlsiuse_a1.txt ====
SIZE 80 56
==== ecslib/emas-2900/vlsiuse_a2.txt ====
SIZE 56 40
==== ecslib/emas-2900/pdp16pd_mynewsam.txt ====
!** * * * * * ** ******* ** ** ***** * * *
!** ** ** * * ** ** ** ** ** ** ** * * ** **
!** *** *** ** ** *** ** ** ** ** ** * * *** ***
!** ** * ** **** ** * ** ***** ** ** ***** ** ** ** * **
!** ** ** ** ** *** ** ** * ** ** ******* ** **
!** ** ** ** ** ** ** *** *** ** ** ** ** ** **
!** ** ** ** ** ** ******* * * ***** ** ** ** **
%ENDOFLIST
%CONTROL X'8000'
%CONSTSHORTINTEGERARRAY SMAIN(1: 150) = %C
1, 0, 4, 8, 12, 15, 19, 25, 30, 35, 39, 43,
47, 50, 54, 58, 63, 69, 74, 79, 84, 88, 92, 96,
100, 104, 108, 112, 116, 121, 125, 128, 129, 133, 0, 135,
138, 0, 141, 144, 0, 148, 150, 0, 152, 154, 0, 156,
160, 0, 162, 167, 0, 169, 0, 172, 177, 0, 179, 182,
0, 184, 187, 190, 193, 196, 199, 0, 202, 207, 0, 209,
211, 0, 213, 215, 0, 217, 220, 223, 0, 226, 228, 0,
230, 234, 235, 238, 239, 243, 0, 245, 251, 255, 0, 258,
262, 266, 273, 0, 275, 0, 278, 281, 0, 283, 286, 289,
==== ecslib/emas-2900/include_imppredef.txt ====
! Please change the above line to include "ECSLIB.INCLUDE_UTIL" <<<<<<<<<<<<<<<<
! Useful pre-definitions for portable Imp programs
%external %string (15) %fn %spec Date
%external %string (15) %fn %spec Time
%dynamic %string (255) %fn %spec ItoS %alias "IMP_I_TO_S" (%integer I, P)
%dynamic %string (255) %fn %spec RtoS %alias "IMP_R_TO_S" (%long %real R,
%integer A, B)
%dynamic %integer %fn %spec StoI %alias "IMP_S_TO_I" (%string (255) S)
%dynamic %integer %fn %spec REM %alias "IMP_REM" (%integer A, B)
%external %routine %spec Prompt (%string (63) STR)
! Lattice Imp stream handling facilities
%dynamic %routine %spec Open Input %alias "IMP_OPEN_INPUT" (%integer S,
%string (255) ST)
%dynamic %routine %spec Close Input %alias "IMP_CLOSE_INPUT"
%dynamic %routine %spec Reset Input %alias "IMP_RESET_INPUT"
%dynamic %integer %fn %spec Input Stream %alias "IMP_INPUT_STREAM"
%dynamic %string (255) %fn %spec Input Name %alias "IMP_INPUT_NAME"
==== ecslib/emas-2900/vlsiuse_a3.txt ====
SIZE 40 28
==== ecslib/emas-2900/vlsiuse_a4.txt ====
SIZE 28 20
==== ecslib/emas-2900/vlsiuse_nmos.txt ====
IDENT *
ND 3 1 0 18
NP 4 2 0 15
NM 2 4 0 18
NI 4 8 1 5
NB 1 7 1 5
NC 1 0 0 10
NG 1 12 0 1
NT 1 15 0 1
NV 1 15 0 3
ZZZ
==== ecslib/emas-2900/generals_cleans.txt ====
! A CLEAN command for EMAS
! Gordon Hughes, September 1982
! The file fitting code from J. Wexler
%const %integer SSPDFILETYPE = 6
%record %format ARF (%string (31) NAME, %integer TYPE %or %string (11) SNAME, %integer SP12, KBYTES,
%byte %integer ARCH, CODES, CCT, OWNP, EEP, USE, CODES2, SSBYTE, FLAGS, SP29, SP30, SP31)
%record %format PDHF (%integer DATAEND, DATASTART, SIZE, FILETYPE, SUM, DATETIME, ADIR, COUNT)
%record %format RF (%integer CONAD, FILETYPE, DATASTART, DATAEND)
%record %format AFRECF (%string (11) NAME, %integer KBYTES, %string (8) DATE, %string (6) TAPE, %INTEGER CHAPTER, FLAGS)
%system %routine %spec PRINTMESS (%integer M)
%system %integer %fn %spec STOREMATCH (%integer L, A1, A2)
%system %routine %spec MOVE (%integer LENGTH, FROM, TO)
%external %integer %fn %spec DFILENAMES (%string (6) USER,
%record (AFRECF) %array %name INF, %integer %name FILENUM, MAXREC, NFILES, %integer FSYS, TYPE)
%external %integer %fn %spec DDESTROY (%string (6) USER, %string (11) FILE,
%string (8) DATE, %integer FSYS, TYPE)
%system %routine %spec SETWORK (%integer %name AD, FLAG)
%system %integer %map %spec COMREG (%integer I)
%system %routine %spec CONNECT (%string (31) FILE, %integer MODE, HOLE, PROT, %record (RF) %name R, %INTEGER %NAME FLAG)
%external %integer %fn %spec UINFI (%integer I)
==== ecslib/emas-2900/include_connect.txt ====
%external %routine %spec Connect File %alias "IMP_CONNECT_FILE" %c
(%string(255) File, %integer Writeable,
%integer %name Start Addr, Bytes Mapped)
%external %routine %spec Disconnect File %alias "IMP_DISCONNECT_FILE" %c
( %integer File Base Addr )
{values for Writeable}
%const %integer Read Only = 0, {section not writeable}
Read Write = 1, {section writeable, file affected}
Read Write Temp = 2 {changes do not affect file}
%end %of %file
==== ecslib/emas-2900/toals_view_preface.txt ====
To analyse Tony Gibbons 'Trojan Horse' file,
type..
#CONNECT ERCC04.VIEWLOG
#DEC <Number given above>
DEFINE 1,USERLIST
RUN ANALYSE
==== ecslib/emas-2900/generals_usnames.txt ====
!TITLE Source of S#USERNAME
!<
%systemstring(255)%fn username(%string(255) User,%integer Machine)
!*START*!
!*END*!
%string (255) line
%integer Lower,Upper,test
length(line)=6
Lower = 1; Upper = max Users
%while Lower<Upper %cycle
Test = (Upper + Lower)//2
%if User<Users(Test) %then %start
Upper=Test
%finishelsestart
Lower=Test+1
%finish
%repeat
==== ecslib/emas-2900/pics_jerry.txt ====
MMMMMMMM
==== ecslib/emas-2900/pdp16pd_arthur.txt ====
!** * ****** ****** ** ** ** ** ******
!** * * ** ** ** ** ** ** ** ** **
!** * * ** ** ** ** ** ** ** ** **
!** ** ** ****** ** ******* ** ** ******
!** ******* ** ** ** ** ** ** ** ** **
!** ** ** ** ** ** ** ** ** ** ** **
!** ** ** ** ** ** ** ** ***** ** **
!**
!***************** FULLY WORKING VERSION **********************
%ENDOFLIST
%CONTROL 0
%CONTROL 0
%ENDOFLIST
%CONSTSHORTINTEGERARRAY MAIN(1: 174) = %C
1, 0, 4, 9, 16, 20, 24, 31, 36, 40, 46, 51,
56, 61, 66, 70, 74, 85, 89, 93, 97, 100, 108, 112,
116, 117, 119, 0, 121, 125, 0, 127, 130, 0, 134, 137,
138, 141, 0, 144, 147, 150, 153, 156, 159, 0, 165, 165,
==== ecslib/emas-2900/generals_uinfss.txt ====
!TITLE UINFS interface procedures
! The following procedures call
%EXTERNAL %STRING(255) %FN %SPEC UINFS(%INTEGER Function)
!< S# owner
!%SYSTEM %STRING(6) %FN %SPEC owner
!>
%SYSTEM %STRING(6) %FN owner
%RESULT = UINFS(1)
%END
!< S# delivery
!%SYSTEM %STRING(255) %FN %SPEC delivery
!>
%SYSTEM %STRING(255) %FN delivery
%RESULT = UINFS(2)
%END
!< S# start time
!%SYSTEM %STRING(8) %FN %SPEC start time
==== ecslib/emas-2900/vlsiuse_felt.txt ====
LAYERS I+B+G
==== ecslib/emas-2900/fundsparam.txt ====
AFTER=19/08/85 08.00.00
.END
==== ecslib/emas-2900/pdp16pd_graph16s.txt ====
!!! ******* ** *****
!!! ** ** ** **
!!! ** ** ** **
!!! ***** ** ** **
!!! ** ** ** **
!!! ** ** ** **
!!! ** ******* *****
%CONTROL 0
%EXTERNALROUTINE FLO(%STRING (63) S)
%STRING (63) INFILE, OUTFILE
==== ecslib/emas-2900/pdp16pd_appendix.txt ====
$A UNDO=0;UND=0;LEFT=10
$A MARK=2;INVERT=0;CAP=0;CAPSH=0;CAPSHO=0;CAPO=0
$A ESCAPE='@';UNDSHO=0;UNDSH=0;PAGENO=82;PAGE=57;TOP=2;BOTTOM=5
@L0
*
* APPENDIX 1
*
*
* PHRASE STRUCTURE DEFINITION OF ARTHUR
*
* BUILT-IN PHRASES ARE ENCLOSED IN SQUARE BRACKETS
*
*
*
* THE FIRST PHRASE IS THE DEFAULT ENTRY POINT
*
P(STAT)
(SS) [SEPERATOR];
==== ecslib/emas-2900/pics_calender_august.txt ====
X X XXXXXXXXX
XXXXX OO
XXXX X OO
XX X // OO
XXXX // OO
XX // OO
LL OO
LLL OO
LLL L **** **** OO
LLL L ***** ***** O
LLL L ***** ***** OO
LLLLLL ***** ***** OOOOO
LLL LL **** **** OOO
LLLL LL OO
LLLLLLL OO
LLLLLL OOO
LLLLLLL OOO
==== ecslib/emas-2900/pics_calender_july.txt ====
XXXXXXXXXX
XXXXXXXXXXXXXX
XXXX XXX
XXXX XXX
XX XXX
XXX XX
XXX XX
XXX XX
XXX XXX
XX XX XXX XXXXXXXXXXX
XX XXXXX XXXX XXXXX XXXX
XX XX XXX
X XX
X XX
XX OX7
X XX
XX X XX XX
X XX XXXX XX
==== ecslib/emas-2900/generals_compares.txt ====
!TITLE Source of COMPARE
!<
%SYSTEMINTEGERFNSPEC pd addr(%STRING(255) FILE)
%SYSTEMINTEGERMAPSPEC COMREG(%INTEGER I)
%EXTERNALINTEGERFN SSFAIL
%RESULT=COMREG(24)
%END
%EXTERNALROUTINESPEC DEFINE(%STRING(255) STREAMS)
%EXTERNALROUTINESPEC SSFOFF
%SYSTEMSTRINGFNSPEC FAILURE MESSAGE(%INTEGER I)
%EXTERNALROUTINE COMPARE(%STRING(255)STREAMS); !COMPARE FILES A LA hd
%STRING(63)IN1,IN2,OUT
%CONSTINTEGER MAX=16, LINEMAX=128
%CONSTINTEGER NONE=0
%INTEGER ASTREAM,BSTREAM
%OWNINTEGER SKIP=1; !TO IGNORE BLANK LINES
%OWNINTEGER ABASE=0, BBASE=0, ACOUNT=0, BCOUNT=0
%INTEGER ANUM,BNUM,INSTREAM,END OF FILE,IN1END,IN2END
%INTEGERARRAY AA,BB(1:MAX*LINEMAX)
==== ecslib/emas-2900/lpd_hlayouts.txt ====
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! ROUTINE REQUIRED TO DECODE AND SET STREAMS FOR EMAS.
!
%EXTERNALROUTINESPEC DEFINE (%STRING (63) S)
%EXTERNALROUTINESPEC SET MARGINS (%INTEGER J,K,L)
%ROUTINESPEC PROCESS DOCUMENT
%EXTERNALROUTINE LAYOUT (%STRING (63) S)
%EXTERNALINTEGERFNSPEC SSFAIL
%STRING (63) INFILE,OUTFILE,TIDYFILE
%UNLESS S->INFILE.('/').OUTFILE %THENSTART
SELECT OUTPUT (0)
PRINTSTRING ('FAULTY PARAMETERS') ; NEWLINE
%RETURN
%FINISH
%UNLESS OUTFILE->OUTFILE.(',').TIDYFILE %THEN TIDYFILE='.NULL'
!
! IF NO FILE NAME IS GIVEN FOR THE UPDATED SOURCE
! TAKE THE NULL FILE AS THE DEFAULT.
!
==== ecslib/emas-2900/generals_hasps.txt ====
! HASP for EMAS
%external %routine %spec DETACH (%string (255) STR)
%external %routine %spec DOCUMENTS (%string (255) PARAM)
%include "ECSC17.IMP77SPECS"
%external %routine HASP (%string (255) PARM)
%integer NC
%routine READ COMMANDS
%on 9 %start
%return
%finish
%cycle
READ SYMBOL (NC)
PRINT SYMBOL (NC)
%repeat
%end
PARM = ",29" %if PARM=""
PROMPT ("Hasp: ")
OPEN OUTPUT (13, "T#HASP")
SELECT INPUT (0)
SELECT OUTPUT (13)
==== ecslib/emas-2900/pics_calender_june.txt ====
$$$$$$$$$$$$$$$$$$$$$
$$$ $$$
$$ $$
$$ $$$$$$$$$$ $$
$ $ $
$ $ $
$$ $ $$ $$ $
$ $
$ $
$ $$$ $$$$ $$ $
$ $$$ $ $$$ $
$ $
$ $$$$$$ $$
$$$ $ $$
$ $ $ $$
$ $$$ $ $$
$ $$$ $ $$$
$$$ $ $$ $
$ $$$$$$$$$$$$$$$ $
==== ecslib/emas-2900/oldgeneraly_hasp.txt ====
HASP options
This command allows a user to type in a batch job at the terminal, and it is
then entered on the batch queue, and will normally execute in parallel with
the users foreground work. The default CPU limit is 29 seconds, so that the
job will run on the batch queue with the fastest turn a round. The following
example show how the HASP command can be used. The output from the batch job
is sent to the default line printer.
!< Basic example
Command: HASP
Hasp: IMP80 FILE1,FILE1Y
Hasp: IMP80 FILE2,FILE2Y
Hasp: RUN TEST
Hasp: ^Y { end of input }
Batch job T#HASP entered on BATCH queue with cpu limit 29 sec.
!>
!< Increased CPU time
Command: HASP ,1200
==== ecslib/emas-2900/whichemas.txt ====
! Program to inform you which EMAS it is running on, (2900 range).
%EXTERNAL %ROUTINE WHICHEMAS (%STRING(255) PARM)
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,TOJDAY,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,DQADDR, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0, %C
%INTEGER ITINT,CONTYPEA,GPCCONFA,FPCCONFA,SFCCONFA, %C
BLKADDR,RATION,SMACS,TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,SP0,SP1, %C
SP2,SP3,SP4,SP5,SP6,SP7,SP8, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
HBIT,SLAVEOFF,INHSSR,SDR1,SDR2,SDR3, %C
SDR4,SESR,HOFFBIT,S2,S3,S4,END)
%CONSTSTRING (4) %ARRAY OCPTYPE(1 : 6) = "2950","2960","2970",
"2980","2972","2976"
%RECORDNAME R(COMF)
==== ecslib/emas-2900/basicpd_bhelpi.txt ====
E.C.S.D. BASIC Interpreter Version 1D.
To run the program type BASIC. The highest level in the interpreter
is the edit phase (The prompt is ':'). Any BASIC line can be typed (in
any order) at this point. Also valid are the commands RUN,LIST,SAVE,DUMP
,NODUMP,RESEQUENCE, & STOP
Should the running BASIC program require data via an INPUT statement
the prompt is '?'.
It is possible to interrupt the running program by hitting 'ESC'
and typing 'EXIT'.
By typing 'BASIC(<file>)', BASIC statements will be read from
<file> and control returned to the console when <file> has been
exhausted. Commands, as above, are not accepted.
Differences from 'standard' BASIC are as follows.
A) Redimensioning in MAT instructions is not yet implemented
==== ecslib/emas-2900/contents.txt ====
____________ _______________ __________ ____________________
PROGRAM NAME LIBRARY/PROGRAM ORIGINATOR DOCUMENTATION SOURCE
ARTHUR CSDEPT.PDP16LIB P.S.Robertson Departmental Report
Compatible Context CSDEPT.EDLIB H.Dewar Departmental Report
Editor
Interdata CSDEPT.ISKMPLIB D.J.Rees D.J.Rees
SKIMP
IMP Interpreter CSDEPT.IMPILIB P.S.Robertson CSDEPT.IMPIDOC
LAYOUT CSDEPT.LAYOLIB H.Dewar Departmental Report
BASIC CSDEPT.BASICLIB W.A.Paterson BHELP [1]
SOAP CSDEPT.IMPILIB P.S.Robertson CSDEPT.SOAPDOC
==== ecslib/emas-2900/edwin_pas.txt ====
{ NB: Specs for Version 4 of EDWIN : See ECSLIB.EDWIN_PSPECS for latest info }
{ EDWIN procedure specs in PASCAL format.}
{ Routines for initialisation and termination}
procedure initialise_for ( devicetype : integer); extern;
procedure terminate_edwin; extern;
{ Output primitives}
procedure move_abs ( x, y : integer); extern;
procedure move_rel ( dx, dy : integer); extern;
procedure line_abs ( x, y : integer); extern;
procedure line_rel ( dx, dy : integer); extern;
procedure marker_abs ( n, x, y : integer); extern;
procedure marker_rel ( n, dx, dy : integer); extern;
procedure character ( sym : char); extern;
{ Control}
procedure newframe; extern;
procedure update; extern;
procedure store_on ( stream : integer); extern;
procedure store_off; extern;
==== ecslib/emas-2900/vlsiuse_cifview.txt ====
!<ANALYSE
ANALYSE <cif file>
These commands are used to read a CIF description into the internal
data structure in preparation for drawing. A syntax check is performed
on the CIF as it is read in. If an error is detected then the cell
containing the error is marked and only the Bounding Box for this cell
will be drawn if an attempt is made to draw the cell. There are three
types of error, namely WARNINGS (given for the users information):
? Line 234 Cell FRED contains no geometry
FAULTS (which allow only the bounding box of a cell to be drawn):
* Line 545 Point only contains one digit
and DISASTERS (the ones which never happen?):
# Line 999 Internal data structure corrupt - please seek assistance
The number typed is the line number of the source text where the
==== ecslib/emas-a/unixforall.txt ====
The GNU Manifesto
Copyright (C) 1985 Richard M. Stallman
(Copying permission notice at the end.)
What's GNU? Gnu's Not Unix!
GNU, which stands for Gnu's Not Unix, is the name for the complete
Unix-compatible software system which I am writing so that I can give it
away free to everyone who can use it. Several other volunteers are helping
me. Contributions of time, money, programs and equipment are greatly
needed.
So far we have a portable C and Pascal compiler which compiles for Vax and
68000 (though needing much rewriting), an Emacs-like text editor with Lisp
for writing editor commands, a yacc-compatible parser generator, a linker,
and around 35 utilities. A shell (command interpreter) is nearly
completed. When the kernel and a debugger are written, it will be possible
to distribute a GNU system suitable for program development. After this we
will add a text formatter, an Empire game, a spreadsheet, and hundreds of
other things, plus on-line documentation. We hope to supply, eventually,
==== ecslib/emas-a/commands/createcon/helpfile.txt ====
!TITLE CREATECON
!TOPIC CREATECON
!<CREATECON
!ADDKEY CONTROL,UNDERGRADUATE,STUDENT
Command:CREATECON SpecFile,SourceName[,ObjName,NewSpecFile]
This command writes an IMP program that can be used to control a student
subsystem.
The command has been provided to help course supervisors make use of the
mechanisms available to control their student system environment. Using these
mechanisms the supervisor can control the commands and files accessable by the
student, as well as providing an initialisation routine.
In most cases the supervisor will not have to do any programming at all, he
need simply call this command. However, where more complex control is required
the program written by the command CREATECON can be used as a base for a more
complex system.
!<The IMP program
!PAGE
==== ecslib/emas-a/commands/createcon/alert.txt ====
RJG 17-FEB-87
NEWCRCON is a version of CREATECON which produces a control file which allows
student processes to connect to other student object files.
NEWCRCON is used in exactly the same way as is CREATECON. It is useful to
include the EXPORT command in the specfile in ECSC97.
==== ecslib/emas-a/commands/createcon/ncc.txt ====
%externalroutine NEWCRCON %alias "C#NEWCRCON"
!*******************************************************************************
!
! Undergraduate Control Program Writer
! ------------------------------------
! This program is designed to help student course supervisors write the
! controlling routines for their student subsystem. It can be used to write
! all the control software that is needed in the simplest case or it can be
! used as a basis for more complicated routines if necessary.
! The program is written in the form of a command to make its use as simple
! and as quick as possible.
! Since it is written using PAM ,full online help ( should ) be available.
!
! Note that it will be neccessary to change the 'HelpFile' constant if the
! program is renamed or moved to another file area.
!
! ( Paul Clenahan August 1986 )
!
!*******************************************************************************
!AMENDMENTS
==== ecslib/emas-a/commands/createcon/createcon1.txt ====
%externalroutine CREATECON %alias "C#CREATECON"
!*******************************************************************************
!
! Undergraduate Control Program Writer
! ------------------------------------
! This program is designed to help student course supervisors write the
! controlling routines for their student subsystem. It can be used to write
! all the control software that is needed in the simplest case or it can be
! used as a basis for more complicated routines if necessary.
! The program is written in the form of a command to make its use as simple
! and as quick as possible.
! Since it is written using PAM ,full online help ( should ) be available.
!
! Note that it will be neccessary to change the 'HelpFile' constant if the
! program is renamed or moved to another file area.
!
! ( Paul Clenahan August 1986 )
!
!*******************************************************************************
==== ecslib/emas-a/commands/createcon/createcon2.txt ====
%externalroutine CREATECON %alias "C#CREATECON"
!*******************************************************************************
!
! Undergraduate Control Program Writer
! ------------------------------------
! This program is designed to help student course supervisors write the
! controlling routines for their student subsystem. It can be used to write
! all the control software that is needed in the simplest case or it can be
! used as a basis for more complicated routines if necessary.
! The program is written in the form of a command to make its use as simple
! and as quick as possible.
! Since it is written using PAM ,full online help ( should ) be available.
!
! Note that it will be neccessary to change the 'HelpFile' constant if the
! program is renamed or moved to another file area.
!
! ( Paul Clenahan August 1986 )
!
!*******************************************************************************
!AMENDMENTS
==== ecslib/emas-a/commands/createcon/newcrcon.txt ====
%externalroutine NEWCRCON %alias "C#NEWCRCON"
!*******************************************************************************
!
! Undergraduate Control Program Writer
! ------------------------------------
! This program is designed to help student course supervisors write the
! controlling routines for their student subsystem. It can be used to write
! all the control software that is needed in the simplest case or it can be
! used as a basis for more complicated routines if necessary.
! The program is written in the form of a command to make its use as simple
! and as quick as possible.
! Since it is written using PAM ,full online help ( should ) be available.
!
! Note that it will be neccessary to change the 'HelpFile' constant if the
! program is renamed or moved to another file area.
!
! ( Paul Clenahan August 1986 )
!
!*******************************************************************************
!AMENDMENTS
==== ecslib/emas-a/commands/createcon/createcon.txt ====
%externalroutine CREATECON %alias "C#CREATECON"
!*******************************************************************************
!
! Undergraduate Control Program Writer
! ------------------------------------
! This program is designed to help student course supervisors write the
! controlling routines for their student subsystem. It can be used to write
! all the control software that is needed in the simplest case or it can be
! used as a basis for more complicated routines if necessary.
! The program is written in the form of a command to make its use as simple
! and as quick as possible.
! Since it is written using PAM ,full online help ( should ) be available.
!
! Note that it will be neccessary to change the 'HelpFile' constant if the
! program is renamed or moved to another file area.
!
! ( Paul Clenahan August 1986 )
!
!*******************************************************************************
!AMENDMENTS
==== ecslib/emas-a/impis-unpacked/sints.txt ====
%ENDOFLIST
%CONSTSHORTINTEGERARRAY MAIN(1 : 359) = %C
1, 7, 13, 18, 22, 25, 29, 33, 37, 40, 47, 51,
54, 59, 62, 65, 68, 72, 76, 80, 84, 90, 94, 98,
103, 108, 113, 118, 122, 127, 135, 139, 0, 141, 144, 145,
152, 0, 157, 159, 161, 163, 0, 165, 167, 168, 169, 174,
0, 178, 181, 182, 186, 187, 188, 189, 0, 199, 202, 0,
205, 206, 207, 209, 0, 211, 213, 0, 215, 218, 0, 220,
226, 230, 233, 235, 238, 241, 243, 245, 247, 249, 0, 251,
253, 254, 256, 257, 259, 261, 263, 0, 265, 267, 268, 269,
272, 274, 275, 277, 279, 281, 0, 283, 285, 0, 287, 289,
0, 291, 294, 298, 301, 303, 304, 305, 306, 308, 309, 311,
312, 0, 316, 320, 321, 324, 325, 331, 0, 333, 338, 339,
341, 343, 347, 0, 351, 353, 355, 356, 357, 359, 361, 363,
365, 367, 369, 371, 373, 375, 377, 379, 0, 381, 382, 383,
0, 389, 396, 402, 403, 409, 410, 416, 417, 419, 422, 0,
424, 426, 0, 428, 435, 439, 0, 442, 444, 445, 447, 449,
451, 453, 455, 457, 459, 0, 461, 464, 0, 466, 469, 472,
476, 479, 481, 483, 485, 487, 490, 493, 495, 498, 501, 504,
==== ecslib/emas-a/impis-unpacked/newintps.txt ====
* PHRASE STRUCTURE DEFINITION FOR IMP INTERPRETER
B[S] = 15
B[NAME] = 14
B[C LIST] = 12
B[FAIL] = 11
B[C TEXT] = 10
B[STRING] = 9
B[NAMELIST] = 8
B[MARK] = 7
B[HOLE] = 6
B[CONSTANT] = 5
B[NUMBER] = 4
B[MC] = 2
B[INTEGER] = 3
P(SS)
[HOLE](UI)[MARK](R SS1)[S]:
==== ecslib/emas-a/impis-unpacked/utilits.txt ====
%EXTERNALROUTINESPEC PROTECT(%STRING (63) S)
%EXTERNALROUTINESPEC CHERISH(%STRING (63) S)
%EXTERNALROUTINESPEC DEFINE(%STRING (63) S)
%EXTERNALROUTINE FAULTS(%STRING (63) FILE)
%ROUTINE READ LINE(%STRINGNAME L)
%INTEGER S
L = ''
READCH(S)
%IF S = 25 %START
PRINTCH(7); NEWLINE
*LM_4,15,16(8)
*BCR_15,15
%FINISH
%CYCLE
L = L.TOSTRING(S)
%RETURN %IF S = NL
==== ecslib/emas-a/impis-unpacked/intexts.txt ====
!
!**************************************************
!* *
!* VARIOUS EXTERNAL ROUTINES FOR IMPI *
!* *
!***************************************************
!
%TRUSTEDPROGRAM
%EXTERNALINTEGER MON REP = 0; ! REPETITION COUNTER FOR RESUMES
%EXTERNALBYTEINTEGER MONLOCK
%EXTRINSICINTEGER MONFRAME, MONINFO, BRKR9AD
%OWNSHORTINTEGER TRAP BLOCK, TRAP LINE
!
%EXTERNALROUTINE EXTINIT
*MVI_4(13),X'55'; ! FLAG FOR MDIAG
%END
%EXTERNALROUTINE HEX(%INTEGER N)
==== ecslib/emas-a/impis-unpacked/soapdoc.txt ====
_________________
SOAP USER'S GUIDE
==== ecslib/emas-a/impis-unpacked/soaps.txt ====
%CONSTSHORTINTEGERARRAY MAIN(1 : 217) = %C
1, 5, 14, 20, 26, 38, 43, 48, 54, 61, 68, 74,
79, 82, 84, 89, 96, 102, 108, 115, 122, 126, 0, 129,
133, 137, 142, 145, 152, 156, 161, 164, 168, 0, 171, 0,
178, 184, 185, 189, 190, 193, 196, 199, 0, 202, 205, 206,
208, 0, 211, 213, 215, 216, 219, 222, 225, 0, 228, 231,
236, 241, 244, 249, 0, 253, 259, 260, 264, 266, 267, 270,
271, 274, 277, 279, 280, 283, 286, 289, 292, 295, 298, 302,
305, 308, 311, 314, 317, 320, 324, 328, 332, 336, 340, 344,
348, 352, 355, 358, 0, 361, 363, 365, 373, 0, 381, 0,
385, 392, 393, 396, 397, 400, 403, 405, 406, 410, 0, 413,
418, 425, 432, 0, 435, 437, 0, 440, 445, 446, 450, 453,
456, 0, 459, 462, 463, 0, 469, 472, 473, 475, 0, 477,
489, 499, 506, 0, 509, 511, 512, 517, 0, 520, 0, 530,
534, 535, 538, 539, 0, 543, 546, 547, 0, 558, 565, 566,
571, 572, 576, 579, 0, 585, 587, 588, 591, 0, 594, 597,
0, 600, 602, 603, 608, 609, 614, 615, 618, 0, 620, 622,
623, 627, 628, 631, 634, 637, 0, 640, 646, 0, 651, 656,
657, 660, 661, 665, 0, 667, 0, 670, 674, 675, 678, 681,
==== ecslib/emas-a/impis-unpacked/intsyss.txt ====
!
!*******************************************************************
!* *
!* SYSTEM ROUTINES FOR IMP INTERPRETER VERSION 8 *
!* *
!*******************************************************************
!
!
%TRUSTEDPROGRAM
%RECORDFORMAT AGFM(%INTEGER EP, %STRING (17) NAME, %C
%INTEGER P1, P2, %INTEGERNAME FLAG)
%EXTERNALINTEGER INTSIZE = 16; ! DEFAULT OF 16 PAGES
%EXTERNALBYTEINTEGER INIMPI = 0
%EXTERNALINTEGER INTGLA = 0
%OWNSTRING (6) INT OWNER = 'CONLIB'
%EXTERNALSTRING (8) OBJECT = 'IMPIOBJ'
%EXTRINSICBYTEINTEGER INSTREAM, COMPMODE, IOFLAG, MDACTIVE
%SYSTEMINTEGERFNSPEC COMREG(%INTEGER N);! TO GIVE ADDRESSES
%EXTERNALINTEGER REG9 = -1
==== ecslib/emas-a/impis-unpacked/intperms.txt ====
*
*
**********************************************************************
* *
* *
* PERM FOR IMP INTERPRETER VERSION 8 *
* *
* *
**********************************************************************
*
*
*
* PERM CONVENTIONS
* GPR 0 : 3 ARE ALWAYS AVAILABLE FOR WORK REGISTERS
* ALL OTHERS MUST BE SAVED AND RESTORED
*
* ALL PERM ROUTINES ARE ENTERED BY '*BAL_15,PERM00'
* EXCEPT WHERE OTHERWISE STATED
*
==== ecslib/emas-a/impis-unpacked/neweds.txt ====
%CONTROL 0
%EXTERNALROUTINESPEC RIM(%INTEGER CNSL, %STRING (15) MES)
%EXTERNALINTEGERFNSPEC TESTINT(%INTEGER C %STRING(15) S)
%EXTERNALROUTINE EDINNER(%INTEGER INTOP,INSIZE,SINTOP,SINSIZE,TOP %C
%INTEGERNAME SIZE)
%SHORTROUTINE
%OWNINTEGER MON; !MONITOR INDIC
%OWNINTEGER PRINT1, PRINT2; !PRINT INDICS
%OWNINTEGER STOP = -5000; !LOOP STOP (CONST)
%INTEGER I, J, FP0, FP1, SYM
%BYTEINTEGER K
%OWNINTEGER PFLIP; !PROMPT FLIP-FLOP
%OWNSTRING (2) PROM = '>'; !COMMAND PROMPT
%OWNINTEGER CMAX; !COMMAND CELL MAX
%INTEGER CI; !COMMAND INDEX
%INTEGER TI; !TEXT INDEX
%INTEGER CODE; !COMMAND CODE
%INTEGER LIM; !SEARCH LIM
%INTEGER CODELIM; !LIM/CODE
%INTEGER TEXT; !TEXT STRING POINTER
%INTEGER NUM; !REPETITION NUMBER
==== ecslib/emas-a/impis-unpacked/pdiags.txt ====
!
!******************************************
!* *
!* MODIFIED MDIAG TO CO-OPERATE WITH *
!* THE IMP INTERPRETER (FLAG = 5) *
!* *
!******************************************
!
%DYNAMICROUTINESPEC DEFINE(%STRING(63) S)
%SYSTEMINTEGERFNSPEC I8DIAG(%INTEGER EP, EXTRA)
%OWNINTEGER MON HEX ADDR, BRIEF ADDR
%OWNINTEGER DTLAST = 0
%SYSTEMINTEGERMAPSPEC COMREG(%INTEGER N)
%ROUTINE SIGNAL(%INTEGER J,K,L,%INTEGERNAME FLAG)
%RECORDFORMAT AGFM(%INTEGER EP,%STRING(17) S,%INTEGER P1,P2,%C
%INTEGERNAME FLAG)
%SYSTEMROUTINESPEC AGENCY(%INTEGER P1,%RECORDNAME P)
%RECORD P(AGFM)
==== ecslib/emas-a/impis-unpacked/intdoc.txt ====
= =
_____________________________
IMP8 INTERPRETER USER'S GUIDE
The IMP8 INTERPRETER is an interactive IMP compiler with editing
facilities, which runs under the EDINBURGH MULTI-ACCESS SYSTEM
on the ICL 4/75.
IMP statements are read in from the console, compiled, executed
immediately, and then discarded. Compound statements and
==== ecslib/emas-a/impis-unpacked/vagrens.txt ====
%CONTROL 0
!
!VAGRANCY AIDS FOR USERS MK.1
!J.C.A. 17:05:74
!
%EXTERNALROUTINE VAGRANCY(%STRING(63) S)
!
!TAKES A FILE OF TRACE INFO FROM BUGGED COMPILER OR INTERPRETER
!GIVES SUMMARY OF RESULTS IN FILE
!GIVES PAGE TURNS & CPU USED IN EACH CALL OF A ROUTINE
!PLUS RATIOS OF PAGEFAULTS V CPU TIME
!
%EXTERNALROUTINESPEC DEFINE(%STRING(63) S)
%EXTERNALROUTINESPEC SET MARGINS(%INTEGER STREAM,LHM,RHM)
!
%RECORDFORMAT HOLDE(%INTEGER CPU,PTURN,%SHORTINTEGER ENTRY,EXIT)
%INTEGER FILE,DATAPTR,ENDPTR,F
%INTEGER RTWAS,CPUIS,CPUWAS,PTURNIS,PTURNWAS
==== ecslib/emas-a/neweds.txt ====
%CONTROL 0
%EXTERNALROUTINESPEC RIM(%INTEGER CNSL, %STRING (15) MES)
%EXTERNALINTEGERFNSPEC TESTINT(%INTEGER C %STRING(15) S)
%EXTERNALROUTINE EDINNER(%INTEGER INTOP,INSIZE,SINTOP,SINSIZE,TOP %C
%INTEGERNAME SIZE)
%SHORTROUTINE
%OWNINTEGER MON; !MONITOR INDIC
%OWNINTEGER PRINT1, PRINT2; !PRINT INDICS
%OWNINTEGER STOP = -5000; !LOOP STOP (CONST)
%INTEGER I, J, FP0, FP1, SYM
%BYTEINTEGER K
%OWNINTEGER PFLIP; !PROMPT FLIP-FLOP
%OWNSTRING (2) PROM = '>'; !COMMAND PROMPT
%OWNINTEGER CMAX; !COMMAND CELL MAX
%INTEGER CI; !COMMAND INDEX
%INTEGER TI; !TEXT INDEX
%INTEGER CODE; !COMMAND CODE
%INTEGER LIM; !SEARCH LIM
%INTEGER CODELIM; !LIM/CODE
%INTEGER TEXT; !TEXT STRING POINTER
%INTEGER NUM; !REPETITION NUMBER
==== ecslib/emas-a/impis.txt ====
NEWEDS,SINTS,INTPERMS,INTSYSS,PDIAGS,SOAPS,UTILITS,INTEXTS,VAGRENS,NEWINTPS,SOA
PDOC,INTDOC
%CONTROL 0
%EXTERNALROUTINESPEC RIM(%INTEGER CNSL, %STRING (15) MES)
%EXTERNALINTEGERFNSPEC TESTINT(%INTEGER C %STRING(15) S)
%EXTERNALROUTINE EDINNER(%INTEGER INTOP,INSIZE,SINTOP,SINSIZE,TOP %C
%INTEGERNAME SIZE)
%SHORTROUTINE
%OWNINTEGER MON; !MONITOR INDIC
%OWNINTEGER PRINT1, PRINT2; !PRINT INDICS
%OWNINTEGER STOP = -5000; !LOOP STOP (CONST)
%INTEGER I, J, FP0, FP1, SYM
%BYTEINTEGER K
%OWNINTEGER PFLIP; !PROMPT FLIP-FLOP
%OWNSTRING (2) PROM = '>'; !COMMAND PROMPT
%OWNINTEGER CMAX; !COMMAND CELL MAX
%INTEGER CI; !COMMAND INDEX
%INTEGER TI; !TEXT INDEX
==== ecslib/emas-a/impidoc.txt ====
_____________________________
IMP8 INTERPRETER USER'S GUIDE
The IMP8 INTERPRETER is an interactive IMP compiler with editing
facilities, which runs under the EDINBURGH MULTI-ACCESS SYSTEM
on the ICL 4/75.
IMP statements are read in from the console, compiled, executed
immediately, and then discarded. Compound statements and
complete procedures are saved pending later execution.
_______________________
CALLING THE INTERPRETER
==== ercc07/xgen25s.txt ====
!* modified 16/07/86
!*
%ownstring(31) Versiontext="Fortran77 Compiler Version 0.1"
%owninteger Report=0
%owninteger Decode
%owninteger Language
!*
%constinteger IMP = 1
%constinteger FORTRAN = 2
%constinteger CCOMP = 11
%constinteger PASCAL = 14
!*
!***********************************************************************
!* Exports *
!***********************************************************************
!*
%routinespec Einitialise(%integer Lang, Avertext, Astackca,
Aglaca, Options)
%routinespec Eterminate(%integer adareasizes)
%routinespec Ecommon(%integer area, %stringname Name)
%routinespec Eendcommon(%integer area, Length)
==== ercc07/icom3s.txt ====
%INCLUDE "ercc07:ibmsup_comf370"
!
%INCLUDE "ercc07:ibmsup_page0f"
!
%RECORDFORMAT PARMF(%INTEGER DEST,SRCE,(%INTEGER P1,P2,P3,P4,P5,P6 %ORSTRING (23) TEXT))
!
%CONSTINTEGER SLEN=63; ! string length in RT calls
%EXTERNALROUTINESPEC DISPLAY TEXT(%INTEGER V,L,P, %STRING (41) TEXT)
%EXTERNALROUTINESPEC DPON(%RECORD (PARMF) %NAME P, %INTEGER DELAY)
%EXTERNALINTEGERFNSPEC STOI(%STRINGNAME S)
%EXTERNALROUTINESPEC PKMONREC(%STRING (23) S, %RECORD (PARMF) %NAME P)
%EXTERNALROUTINESPEC PON(%RECORD (PARMF) %NAME P)
%EXTERNALROUTINESPEC MONITOR(%STRING (SLEN) S)
%EXTERNALROUTINESPEC OPMESS(%STRING (SLEN) S)
%EXTERNALROUTINESPEC OPMESS3(%STRING (SLEN) S)
%EXTERNALROUTINESPEC INHIBIT(%INTEGER SERVICE)
%EXTERNALROUTINESPEC UNINHIBIT(%INTEGER SERVICE)
%EXTERNALROUTINESPEC DUMPTABLE(%INTEGER T,A,L)
%EXTERNALINTEGERFNSPEC RTV(%INTEGER RAD)
%EXTERNALSTRINGFNSPEC STRHEX(%INTEGER N)
%EXTERNALSTRINGFNSPEC HTOS(%INTEGER N,P)
==== ercc07/ienter3s.txt ====
!
! Chenge for enter3
! 1) Changes to storef for larger AMTs
!
%include "ercc07:ibmsup_comf370"
%include "ercc07:ibmsup_page0f"
!
%recordformat parmf(%integer dest,srce,p1,p2,p3,p4,p5,p6)
!
%routine sos; ! flash 'SOS' on system console lights
%longinteger loop ext psw,wait ext psw,sos timer
%constlonginteger sec=x'00000000f4240000'; ! 1 second
%constlonginteger hsec=sec>>1; ! half second
%constlonginteger qsec=sec>>2
%constlonginteger wpsw=psw0!x'0106000000000000'
%integer i,count
sos timer=-1
*sckc_sos timer; ! maximum
*basr_15,0; *using_15
*la_0,<loopint>; *st_0,i; *la_0,<waitint>; *st_0,count; *drop_15
loop ext psw=psw0!i
==== ercc07/gldgen02s.txt ====
!
! Recent Changes
! **************
!
! 23 JUne 87 Unecessary top bits maked out in recordelad. These
! caused no trouble till NP1 which has 32 bit addressing
! Also check removed on convert longinteger to integer
! 8 May 87 Change so RT Params are double word aligned
! 20Apr 87 Changes so that array heads (Long integers) are double word aligned
! Feb 87 Substantial changes to support 64 bit integers
!
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
==== ercc07/idev11s.txt ====
!09-09-85..statistics gathering for auscom
!05-09-85..use tio in case mag tape off-line..sh
%include "ercc07:ibmsup_comf370"
%include "ercc07:ibmsup_page0f"
%include "ercc07:ibmsup_dtform1s"
%include "ercc07:IBMSUP_xaioform"
%record %format PARMF(%integer DEST,SRCE,(%integer P1,P2,P3,P4,P5,
P6 %or %string (23) TEXT))
%record %format PARMXF(%integer DEST,SRCE,P1,P2,P3,P4,P5,P6,LINK)
%if VA MODE=YES %start
%const %record (PARMXF) %array %name PARM=PARM0AD
%finish %else %start
!* %externalintegerspec parmad
%own %record (PARMXF) %array %name PARM
!* %ownrecord(parmxf)%arrayformat parmaf(0:128)
%finish
!
%external %integer %fn %spec REALISE(%integer VAD)
%external %integer %fn %spec HSCH(%integer SLOTADDR)
%external %integer %fn %spec TSCH(%integer SLOTADDR, %record (IRBF) %name IRB)
%external %integer %fn %spec SSCH(%integer SLOTADDR,CCWA,KEY)
==== ercc07/ibmgen02s.txt ====
%INCLUDE "ERCC07:ITRIMP_HOSTCODES"
%CONSTINTEGER HOST=IBMXA
%CONSTINTEGER TARGET=AMDAHL
%CONSTINTEGER FOURKTDISP=0
%INCLUDE "ERCC10:OPOUTS"
!
%CONSTINTEGER LGR=X'58',AND=X'54',ICP=X'59'; ! VARIANT MNEMONICS
%IF TARGET=IBM %THEN %START
%OWNINTEGER BALCODE=BAL
%FINISH %ELSE %START
%OWNINTEGER BALCODE=BAS
%FINISH
%CONSTINTEGER MARGIN=512; ! MARGIN FOR ADRESSABILITY
%CONSTINTEGER MAXREG=19; ! FOR DECLARING REGISTER ETC
%CONSTINTEGER CODER=12
%CONSTINTEGER WSPR =11
%CONSTINTEGER GLAREG =13
%CONSTINTEGER LINKREG=15; ! REGISTER FOR RETURN ADDRESS
%CONSTINTEGER EPREG=14; ! REGISTER HOLDING RT ENTRYPOINT
%CONSTINTEGER CTABLEREG=14; ! REGISTER HOLDING CONSTANT TABLE
%CONSTINTEGER GR0=X'000F0000'; ! ANY GR FROM 0-15
==== ercc07/xgen26s.txt ====
!* modified 16/07/86
!*
%owninteger Report=0
%owninteger Decode
%owninteger Language
!*
%constinteger IMP = 1
%constinteger FORTRAN = 2
%constinteger CCOMP = 11
%constinteger PASCAL = 14
!*
!***********************************************************************
!* Exports *
!***********************************************************************
!*
%routinespec Einitialise(%integer Lang, Avertext, Astackca,
Aglaca, Options)
%routinespec Eterminate(%integer adareasizes)
%routinespec Ecommon(%integer area, %stringname Name)
%routinespec Eendcommon(%integer area, Length)
%routinespec Elinestart(%integer lineno)
==== ercc07/pdriver01s.txt ====
{****************************************************************************}
{ }
{ System dependent routines. }
{ }
{****************************************************************************}
%EXTERNAL %ROUTINE %SPEC Define %ALIAS "S#DEFINE"(%INTEGER channel,
%STRING (255) File, %INTEGER %NAME Afd,Flag)
%EXTERNAL %INTEGER %MAP %SPEC ComReg %ALIAS "S#COMREGMAP"(%INTEGER N)
%EXTERNAL %ROUTINE %SPEC ICLpascalcompiler
%ROUTINE %SPEC InitialiseCompiler
%EXTERNAL %ROUTINE %SPEC EMAS3(%STRING (255) %NAME Command,Param,
%INTEGER %NAME Flag)
%EXTERNAL %ROUTINE %SPEC EMAS3ClaimChannel(%INTEGER %NAME Chan)
%EXTERNAL %STRING (15) %FN %SPEC ItoS %ALIAS "S#ITOS"(%INTEGER N)
%EXTERNAL %ROUTINE %SPEC Eproc(%STRING %NAME Name, %INTEGER Prop,Numpars,
Paramsize,Astacklen, %INTEGER %NAME Id)
%EXTERNAL %ROUTINE %SPEC Eentry(%INTEGER Index,Numpars,ParamSize,LocalSize,
DiagDisp, %STRING %NAME Name)
%EXTERNAL %INTEGER %FN %SPEC Exname(%INTEGER Type, %STRING %NAME Xref)
%EXTERNAL %ROUTINE %SPEC Edataentry(%INTEGER Area,Offset,Length,
==== ercc07/makep3_gen.txt ====
offer p3gens
parm nocheck
edit perq3gen02s,p3gens
a/%incl/d1i<itrimp_hostcodes>
a'd1i<ercs01:ebits_ecodes5>
a'd1i<tripcnsts>
a'd1i<itrimp_tform2s>
a'd1i<ercs01:ebits_especs2>
e
imp p3gens,.null
offer p3gens,ercs01
==== ercc07/icom4s.txt ====
%INCLUDE "ercc07:ibmsup_comf370"
!
%INCLUDE "ercc07:ibmsup_page0f"
!
%RECORDFORMAT PARMF((%INTEGER DEST,SRCE %ORSHORT DSNO,DACT,SSNO,SACT),(%INTEGER P1,P2,P3,P4,
P5,P6 %ORSTRING (23) TEXT))
!
%CONSTINTEGER SLEN=63; ! string length in RT calls
%EXTERNALROUTINESPEC DISPLAY TEXT(%INTEGER V,L,P, %STRING (41) TEXT)
%EXTERNALROUTINESPEC DPON(%RECORD (PARMF) %NAME P, %INTEGER DELAY)
%EXTERNALINTEGERFNSPEC STOI(%STRINGNAME S)
%EXTERNALROUTINESPEC PKMONREC(%STRING (23) S, %RECORD (PARMF) %NAME P)
%EXTERNALROUTINESPEC PON(%RECORD (PARMF) %NAME P)
%EXTERNALROUTINESPEC MONITOR(%STRING (SLEN) S)
%EXTERNALROUTINESPEC OPMESS(%STRING (SLEN) S)
%EXTERNALROUTINESPEC OPMESS3(%STRING (SLEN) S)
%EXTERNALROUTINESPEC INHIBIT(%INTEGER SERVICE)
%EXTERNALROUTINESPEC UNINHIBIT(%INTEGER SERVICE)
%EXTERNALROUTINESPEC DUMPTABLE(%INTEGER T,A,L)
%EXTERNALINTEGERFNSPEC RTV(%INTEGER RAD)
%EXTERNALSTRINGFNSPEC STRHEX(%INTEGER N)
==== ercc07/pnxgen05s.txt ====
%INCLUDE "ERCC07:iTRIMP_HOSTCODES"
%CONSTINTEGER HOST=AMDAHL
%CONSTINTEGER TARGET=PNX
%INCLUDE "ERCS04:PNX_CCODES"
%INCLUDE "ERCC07:TRIPCNSTS"
%INCLUDE "ERCC07:ITRIMP_TFORM2S"
%CONSTINTEGER ESTK=0,BR0=1,BR1=2,BR2=3,BR3=4,FR0=5,FR1=6,FR2=7,FR3=8,
BRN=BR0<<16!BR3,FRN=FR0<<16!FR3
%RECORDFORMAT REGF(%INTEGER CL,(%INTEGER USE %ORHALF SECUSE,PRIMUSE), %INTEGER INF1,INF2,AT,
LINK)
%OWNINTEGER CABUF,GLACABUF,GLABEL,FPPTR,FPHEAD
%OWNINTEGERNAME CA,GLACA,PPCURR
%OWNINTEGERARRAYNAME CTABLE,TAGS
!%OWNBYTEINTEGERARRAYNAME CODE
%OWNRECORD (LISTF) %ARRAYNAME ASLIST
%EXTRINSICINTEGERARRAY CAS(0:12)
%EXTRINSICRECORD (WORKAF) WORKA
%EXTRINSICRECORD (PARMF) PARM
%CONSTINTEGER MAXREG=8
%OWNRECORD (REGF) %ARRAY REGS(0:MAXREG)
%EXTERNALROUTINESPEC FLAGAND FOLD(%RECORD (TRIPF) %ARRAYNAME T)
==== ercc07/pdfiletogps.txt ====
!*
!* Record and array formats
!*
%RECORDFORMAT HF(%INTEGER DATAEND,DATASTART,FILESIZE,FILETYPE,SUM,DATETIME,FORMAT,RECORDS)
%RECORDFORMAT PDF(%INTEGER START, %STRING (11) NAME, %INTEGER HOLE,S5,S6,S7)
%RECORDFORMAT PDHF(%INTEGER DATAEND,DATASTART,SIZE,FILETYPE,SUM,DATETIME,ADIR,COUNT)
%RECORDFORMAT RF(%INTEGER CONAD,FILETYPE,DATASTART,DATAEND)
%OWNRECORD (PDF) %ARRAYFORMAT DIRAF(0:4095)
%EXTERNALROUTINESPEC EMAS3 INTEGER(%STRINGNAME VECTOR, %INTEGERNAME VALUE)
%EXTERNALROUTINESPEC EMAS3 STRING(%STRINGNAME VECTOR,VALUE)
%EXTERNALROUTINESPEC SET RETURN CODE %ALIAS "S#SETRETURNCODE"(%INTEGER N)
%RECORDFORMAT CHDRFORM(%INTEGER CONAD,FILETYPE,DATASTART,DATAEND)
%EXTERNALROUTINESPEC COPY %ALIAS "s#copy"(%STRING (255) F,T, %INTEGERNAME FLAG)
%EXTERNALROUTINESPEC DISCONNECT %alias "S#DISCONNECT" (%STRING (255) FILE, %INTEGERNAME FLAG)
%RECORDFORMAT OINFF(%STRING (11) NAME, %INTEGER SP12,NKB, %BYTEINTEGER ARCH,CODES,CCT,OWNP,
EEP,USE,CODES2,SSBYTE,FLAGS,PHEAD,DAYNO,GROUP)
!
{ if PHEAD is non zero, this record has been permitted }
{ to one or more users }
{ if GROUP is non zero, this record refers to a group }
%EXTERNALINTEGERFNSPEC DFILENAMES(%STRINGNAME GROUP, %INTEGERNAME FILENO,MAXREC,NFILES,FSYS,
==== ercc07/gldgen03s.txt ====
!
! Recent Changes
! **************
!
! 23 JUne 87 Unecessary top bits maked out in recordelad. These
! caused no trouble till NP1 which has 32 bit addressing
! Also check removed on convert longinteger to integer
! 8 May 87 Change so RT Params are double word aligned
! 20Apr 87 Changes so that array heads (Long integers) are double word aligned
! Feb 87 Substantial changes to support 64 bit integers
!
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
==== ercc07/idev12s.txt ====
!09-09-85..statistics gathering for auscom
!05-09-85..use tio in case mag tape off-line..sh
%include "ercc07:ibmsup_comf370"
%include "ercc07:ibmsup_page0f"
%include "ercc07:ibmsup_dtform1s"
%include "ercc07:IBMSUP_xaioform"
%record %format PARMF(%integer DEST,SRCE,(%integer P1,P2,P3,P4,P5,
P6 %or %string (23) TEXT))
%record %format PARMXF(%integer DEST,SRCE,P1,P2,P3,P4,P5,P6,LINK)
%if VA MODE=YES %start
%const %record (PARMXF) %array %name PARM=PARM0AD
%finish %else %start
!* %externalintegerspec parmad
%own %record (PARMXF) %array %name PARM
!* %ownrecord(parmxf)%arrayformat parmaf(0:128)
%finish
!
%external %integer %fn %spec REALISE(%integer VAD)
%external %integer %fn %spec HSCH(%integer SLOTADDR)
%external %integer %fn %spec TSCH(%integer SLOTADDR, %record (IRBF) %name IRB)
%external %integer %fn %spec SSCH(%integer SLOTADDR,CCWA,KEY)
==== ercc07/algtests_at24a.txt ====
'BEGIN'
'INTEGER' 'ARRAY'
A(/1 : 9/);
'INTEGER'
I,
S;
'PROCEDURE' DUMMY(A);
'VALUE'
A;
'ARRAY'
A;
SUM(A);
'PROCEDURE' SUM(A);
'ARRAY'
A;
'FOR' I := 1 'STEP' 1 'UNTIL' 9 'DO'
'BEGIN'
S := S + A(/I/);
A(/I/):= 0
'END';
S := 0;
==== ercc07/ibmgen03s.txt ====
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
! Opnd2 is either a 32 bit const with the size (ACC) as value or
! the ptr or arrayhead as normal operand.
!
! VMY X1 is now dim<<28!maxdim<<24!array name(where known)
! Opnd2 is either a 32 bit const with DV offset into const area or
! the arrayhead as a standard operand
!
! AINDX X1 is ELSIZE<<20 !spare
! Opnd2 is arrayhead as standard operand
! NOTE:- The Operands have been swopped for consistency with norm.
==== ercc07/xgen27s.txt ====
!* modified 16/07/86
!*
%owninteger Report=0
%owninteger Decode
%owninteger Language
!*
%constinteger IMP = 1
%constinteger FORTRAN = 2
%constinteger CCOMP = 11
%constinteger PASCAL = 14
!*
!***********************************************************************
!* Exports *
!***********************************************************************
!*
%routinespec Einitialise(%integer Lang, Avertext, Astackca,
Aglaca, Options)
%routinespec Eterminate(%integer adareasizes)
%routinespec Ecommon(%integer area, %stringname Name)
%routinespec Eendcommon(%integer area, Length)
%routinespec Elinestart(%integer lineno)
==== ercc07/fbench1s.txt ====
PROGRAM teste
c floating point, double precision arithmetic test
C MAIN PROGRAM - EVALUATES INTEGRAL TO AN ACCURACY OF 8D
C INCREASING THE NUMBER OF STRIPS UNTIL REQUIRED
C ACCURACY IS REACHED
C (A) USING TRAPEZOIDAL RULE
C (B) USING SIMPSON'S RULE
C
implicit double precision (a-h,o-z)
character*18 type
C (A)
C
type='Trapezoidal Rule '
A=1.0
B=2.2
C
N=2
ICOUNT=0
WRITE(unit=6,fmt=103)type
10 W=(B-A)/N
ICOUNT=ICOUNT+1
==== ercc07/pdriver02s.txt ====
{****************************************************************************}
{ }
{ System dependent routines. }
{ }
{****************************************************************************}
!%EXTERNAL %ROUTINE %SPEC Define %ALIAS "S#DEFINE"(%INTEGER channel,
%STRING (255) File, %INTEGER %NAME Afd,Flag)
%EXTERNAL %INTEGER %MAP %SPEC ComReg %ALIAS "S#COMREGMAP"(%INTEGER N)
%EXTERNAL %ROUTINE %SPEC ICLpascalcompiler
%ROUTINE %SPEC InitialiseCompiler
%EXTERNAL %ROUTINE %SPEC EMAS3(%STRING (255) %NAME Command,Param,
%INTEGER %NAME Flag)
%EXTERNAL %ROUTINE %SPEC EMAS3ClaimChannel(%INTEGER %NAME Chan)
%EXTERNAL %STRING (15) %FN %SPEC ItoS %ALIAS "S#ITOS"(%INTEGER N)
%EXTERNAL %ROUTINE %SPEC Eproc(%STRING %NAME Name, %INTEGER Prop,Numpars,
Paramsize,Astacklen, %INTEGER %NAME Id)
%EXTERNAL %ROUTINE %SPEC Eentry(%INTEGER Index,Numpars,ParamSize,LocalSize,
DiagDisp, %STRING %NAME Name)
%EXTERNAL %INTEGER %FN %SPEC Exname(%INTEGER Type, %STRING %NAME Xref)
%EXTERNAL %ROUTINE %SPEC Edataentry(%INTEGER Area,Offset,Length,
==== ercc07/icom5s.txt ====
%INCLUDE "ercc07:ibmsup_comf370"
!
%INCLUDE "ercc07:ibmsup_page0f"
!
%RECORDFORMAT PARMF((%INTEGER DEST,SRCE %ORSHORT DSNO,DACT,SSNO,SACT),(%INTEGER P1,P2,P3,P4,
P5,P6 %ORSTRING (23) TEXT))
!
%CONSTINTEGER SLEN=63; ! string length in RT calls
%EXTERNALROUTINESPEC DISPLAY TEXT(%INTEGER V,L,P, %STRING (41) TEXT)
%EXTERNALROUTINESPEC DPON(%RECORD (PARMF) %NAME P, %INTEGER DELAY)
%EXTERNALINTEGERFNSPEC STOI(%STRINGNAME S)
%EXTERNALROUTINESPEC PKMONREC(%STRING (23) S, %RECORD (PARMF) %NAME P)
%EXTERNALROUTINESPEC PON(%RECORD (PARMF) %NAME P)
%EXTERNALROUTINESPEC MONITOR(%STRING (SLEN) S)
%EXTERNALROUTINESPEC OPMESS(%STRING (SLEN) S)
%EXTERNALROUTINESPEC OPMESS3(%STRING (SLEN) S)
%EXTERNALROUTINESPEC INHIBIT(%INTEGER SERVICE)
%EXTERNALROUTINESPEC UNINHIBIT(%INTEGER SERVICE)
%EXTERNALROUTINESPEC DUMPTABLE(%INTEGER T,A,L)
%EXTERNALINTEGERFNSPEC REALISE(%INTEGER VIRTAD)
%EXTERNALINTEGERFNSPEC RTV(%INTEGER RAD)
==== ercc07/drslink3.txt ====
LINK
ERCC07:dP1Y
ERCC07:DP22Y
ERCC07:DOPT3Y
ERCC07:DGEN3Y
ERCC07:CSERV01x
ercs01:EBITS_etrput1y
.END
P0Y
MODIFY P0Y
SATISFY REFS
.ALL
SATISFY DATA
.ALL
SUPPRESS
.ALL
RETAIN
eGENERATEOBJECT,ICL9CEZDRSIMP
SUPPRESS DATA
.ALL
CLOSE
==== ercc07/drslink4.txt ====
LINK
ERCC07:dP1Y
ERCC07:DP22Y
ERCC07:DOPT3Y
ERCC07:DGEN4Y
ERCC07:CSERV01x
ercs01:EBITS_etrput1y
.END
P0Y
MODIFY P0Y
SATISFY REFS
.ALL
SATISFY DATA
.ALL
SUPPRESS
.ALL
RETAIN
eGENERATEOBJECT,ICL9CEZDRSIMP
SUPPRESS DATA
.ALL
CLOSE
==== ercc07/pnxgen06s.txt ====
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
! Opnd2 is either a 32 bit const with the size (ACC) as value or
! the ptr or arrayhead as normal operand.
!
! VMY X1 is now dim<<28!maxdim<<24!array name(where known)
! Opnd2 is either a 32 bit const with DV offset into const area or
! the arrayhead as a standard operand
!
! AINDX X1 is ELSIZE<<20 !spare
! Opnd2 is arrayhead as standard operand
! NOTE:- The Operands have been swopped for consistency with norm.
!
==== ercc07/drslink5.txt ====
LINK
ERCC07:dP1Y
ERCC07:DP23Y
ERCC07:DOPT3Y
ERCC07:DGEN5Y
ERCC07:CSERV01x
ercs01:EBITS_etrput2y
.END
P0Y
MODIFY P0Y
SATISFY REFS
.ALL
SATISFY DATA
.ALL
SUPPRESS
.ALL
RETAIN
eGENERATEOBJECT,ICL9CEZDRSIMP
SUPPRESS DATA
.ALL
CLOSE
==== ercc07/docs_lpool.txt ====
Notes on a Visit to Liverpool University Computing Service
Present: Ian Stimpson LUCS
P.Stephens EUCS
J.Livingstone EUCS
Liverpool Computing Service is small in terms of people (17 Academics) and
has standardised on IBM Hardware and Software. It also operates 3 VMS machines
as departmental resource. No departments operate their own MUMs as a matter of
computing policy. There is at present no Unix on the campus but LUCS expect to
operate a Unix service for engineers before next academic year.
The main service is VM/CMS on a 32 Mbyte 6Mip 3081 which supports 200+
users. Interactive response is said to be good but shortage of CPU is noticeable.
Terminals, and also almost all micros on the campus, are IBM PC clones bought by
LUCS. These emulate Ibm 3270 full screen terminals which reduce the mainframe
demand for operations like editing.
LUCS also operate separate IBM machines for the Library using the
specialist IBM software package xxxxxx-yyyyyy and for the Data processing
==== ercc07/gldgen04s.txt ====
!
! Recent Changes
! **************
!
! 23 JUne 87 Unecessary top bits maked out in recordelad. These
! caused no trouble till NP1 which has 32 bit addressing
! Also check removed on convert longinteger to integer
! 8 May 87 Change so RT Params are double word aligned
! 20Apr 87 Changes so that array heads (Long integers) are double word aligned
! Feb 87 Substantial changes to support 64 bit integers
!
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
==== ercc07/idev13s.txt ====
!09-09-85..statistics gathering for auscom
!05-09-85..use tio in case mag tape off-line..sh
%include "ercc07:ibmsup_comf370"
%include "ercc07:ibmsup_page0f"
%include "ercc07:ibmsup_dtform1s"
%include "ercc07:IBMSUP_xaioform"
%record %format PARMF(%integer DEST,SRCE,(%integer P1,P2,P3,P4,P5,
P6 %or %string (23) TEXT))
%record %format PARMXF(%integer DEST,SRCE,P1,P2,P3,P4,P5,P6,LINK)
%if VA MODE=YES %start
%const %record (PARMXF) %array %name PARM=PARM0AD
%finish %else %start
!* %externalintegerspec parmad
%own %record (PARMXF) %array %name PARM
!* %ownrecord(parmxf)%arrayformat parmaf(0:128)
%finish
!
%external %integer %fn %spec REALISE(%integer VAD)
%external %integer %fn %spec HSCH(%integer SLOTADDR)
%external %integer %fn %spec TSCH(%integer SLOTADDR, %record (IRBF) %name IRB)
%external %integer %fn %spec SSCH(%integer SLOTADDR,CCWA,KEY)
==== ercc07/ibmgen04s.txt ====
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
! Opnd2 is either a 32 bit const with the size (ACC) as value or
! the ptr or arrayhead as normal operand.
!
! VMY X1 is now dim<<28!maxdim<<24!array name(where known)
! Opnd2 is either a 32 bit const with DV offset into const area or
! the arrayhead as a standard operand
!
! AINDX X1 is ELSIZE<<20 !spare
! Opnd2 is arrayhead as standard operand
! NOTE:- The Operands have been swopped for consistency with norm.
==== ercc07/pdriver03s.txt ====
{****************************************************************************}
{ }
{ System dependent routines. }
{ }
{****************************************************************************}
%EXTERNAL %ROUTINE %SPEC Define %ALIAS "S#DEFINE"(%INTEGER channel,
%STRING (255) File, %INTEGER %NAME Afd,Flag)
%EXTERNAL %INTEGER %MAP %SPEC ComReg %ALIAS "S#COMREGMAP"(%INTEGER N)
%EXTERNAL %ROUTINE %SPEC ICLpascalcompiler
%ROUTINE %SPEC InitialiseCompiler
%EXTERNAL %ROUTINE %SPEC EMAS3ClaimChannel(%INTEGER %NAME Chan)
%EXTERNAL %STRING (15) %FN %SPEC ItoS %ALIAS "S#ITOS"(%INTEGER N)
%EXTERNAL %ROUTINE %SPEC Eproc(%STRING %NAME Name, %INTEGER Prop,Numpars,
Paramsize,Astacklen, %INTEGER %NAME Id)
%EXTERNAL %ROUTINE %SPEC Eentry(%INTEGER Index,Numpars,ParamSize,LocalSize,
DiagDisp, %STRING %NAME Name)
%EXTERNAL %INTEGER %FN %SPEC Exname(%INTEGER Type, %STRING %NAME Xref)
%EXTERNAL %ROUTINE %SPEC Edataentry(%INTEGER Area,Offset,Length,
%STRING %NAME Name)
%EXTERNAL %ROUTINE %SPEC Edataref(%INTEGER Area,Offset,Length,
==== ercc07/timp01s.txt ====
%CONSTSTRING(9) LADATE="31 Jan 85"; ! LAST ALTERED
%CONSTINTEGER NO OF SNS=66
%CONSTINTEGER LRLPT=X'62'
%UNLESS HOST=PERQ %OR HOST=DRS %OR HOST=ACCENT %THEN %START
%CONSTINTEGER PTSHIFT=16,FLAGSHIFT=0
%FINISH %ELSE %START
%CONSTINTEGER PTSHIFT=0,FLAGSHIFT=16
%FINISH
!
%CONSTINTEGER MAXLEVELS=31,CONCOP=13
!
%INCLUDE "ERCC07:TRIPCNSTS"
%INCLUDE "ERCC07:TFORM1S"
%CONSTINTEGER SNPT=X'1006'; ! SPECIALNAME PTYPE
%CONSTINTEGER UNASSPAT=X'80808080'
%CONSTINTEGER LABUSEDBIT=X'01000000'
%CONSTINTEGER LABSETBIT=X'02000000'
%CONSTINTEGER MAXDICT=X'100'; ! PARM MAXDICT BIT
!
%INTEGER I, K, DUMMYFORMAT, P1SIZE, STARSIZE, ASL, ARSIZE, OLDLINE,
NEXTP, SNUM, RLEVEL, NMAX, PLABEL, LEVEL, PROFAAD, LAST INST,
==== ercc07/icom6s.txt ====
%INCLUDE "ercc07:ibmsup_comf370"
!
%INCLUDE "ercc07:ibmsup_page0f"
!
%RECORDFORMAT PARMF((%INTEGER DEST,SRCE %ORSHORT DSNO,DACT,SSNO,SACT),(%INTEGER P1,P2,P3,P4,
P5,P6 %ORSTRING (23) TEXT))
!
%CONSTINTEGER SLEN=63; ! string length in RT calls
%EXTERNALROUTINESPEC DISPLAY TEXT(%INTEGER V,L,P, %STRING (41) TEXT)
%EXTERNALROUTINESPEC DPON(%RECORD (PARMF) %NAME P, %INTEGER DELAY)
%EXTERNALINTEGERFNSPEC STOI(%STRINGNAME S)
%EXTERNALROUTINESPEC PKMONREC(%STRING (23) S, %RECORD (PARMF) %NAME P)
%EXTERNALROUTINESPEC PON(%RECORD (PARMF) %NAME P)
%EXTERNALROUTINESPEC MONITOR(%STRING (SLEN) S)
%EXTERNALROUTINESPEC OPMESS(%STRING (SLEN) S)
%EXTERNALROUTINESPEC OPMESS3(%STRING (SLEN) S)
%EXTERNALROUTINESPEC INHIBIT(%INTEGER SERVICE)
%EXTERNALROUTINESPEC UNINHIBIT(%INTEGER SERVICE)
%EXTERNALROUTINESPEC DUMPTABLE(%INTEGER T,A,L)
%EXTERNALINTEGERFNSPEC REALISE(%INTEGER VIRTAD)
%EXTERNALINTEGERFNSPEC RTV(%INTEGER RAD)
==== ercc07/ibmgen05s.txt ====
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
! Opnd2 is either a 32 bit const with the size (ACC) as value or
! the ptr or arrayhead as normal operand.
!
! VMY X1 is now dim<<28!maxdim<<24!array name(where known)
! Opnd2 is either a 32 bit const with DV offset into const area or
! the arrayhead as a standard operand
!
! AINDX X1 is ELSIZE<<20 !spare
! Opnd2 is arrayhead as standard operand
! NOTE:- The Operands have been swopped for consistency with norm.
!
==== ercc07/pdriver04s.txt ====
{****************************************************************************}
{ }
{ System dependent routines. }
{ }
{****************************************************************************}
%externalstring(255)%fnspec uinfs %alias "S#UINFS"(%integer n)
%EXTERNAL %ROUTINE %SPEC Define %ALIAS "S#DEFINE"(%INTEGER channel,
%STRING (255) File, %INTEGER %NAME Afd,Flag)
%externalintegerfnspec IOCP %alias "S#IOCP"(%integer ep,adr)
%EXTERNAL %INTEGER %MAP %SPEC ComReg %ALIAS "S#COMREGMAP"(%INTEGER N)
%EXTERNAL %ROUTINE %SPEC ICLpascalcompiler
%ROUTINE %SPEC InitialiseCompiler
%EXTERNAL %ROUTINE %SPEC EMAS3ClaimChannel(%INTEGER %NAME Chan)
%EXTERNAL %STRING (15) %FN %SPEC ItoS %ALIAS "S#ITOS"(%INTEGER N)
%EXTERNAL %ROUTINE %SPEC Eproc(%STRING %NAME Name, %INTEGER Prop,Numpars,
Paramsize,Astacklen, %INTEGER %NAME Id)
%EXTERNAL %ROUTINE %SPEC Eentry(%INTEGER Index,Numpars,ParamSize,LocalSize,
DiagDisp, %STRING %NAME Name)
%EXTERNAL %INTEGER %FN %SPEC Exname(%INTEGER Type, %STRING %NAME Xref)
%EXTERNAL %ROUTINE %SPEC Edataentry(%INTEGER Area,Offset,Length,
==== ercc07/timp02s.txt ====
!
! Recent Source CHanges
!**********************
!
! 8May87 Chenges in FPlist so that RT Parameters are aligned according
! the rules of array Rnding
!
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations%c
like
! passing Labels this still applies, this adhocery has caused problems with%c
arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
! Opnd2 is either a 32 bit const with the size (ACC) as value or
! the ptr or arrayhead as normal operand.
==== ercc07/gbits_gcode67s.txt ====
! 20/11/87 - TRVE only if in Vector loop gcode67i3
! - Replace SUI by ADI
! 10/aug/87 - Plant gla ad for diagnostics if imp gcode67i2
!
! 06/Aug/87 - Fix Check conflict to watch for byte access gcode67i
! Make profiling conditional on IMP.
! gcode67
! 25/04/87 - revise Gop Bit
! gcode66
! 18/04/87 - update Gop Bit for Concept
! gcode65
! 17/04/87 - reduce PLT min space to 16
! gcode64
! 16/04/87 - version change to allign with ggen
! gcode61
! 14/04/87 - upgrade for C
! 01/04/87 - add Gop Bit
! 17/03/87 - Alter V release reg pair Alan Ft.L. gcode60
!
! gcode59
! 28/02/87 - incorporate integer*8 changes (ex gcode36u)
==== ercc07/idev15s.txt ====
!09-09-85..statistics gathering for auscom
!05-09-85..use tio in case mag tape off-line..sh
%include "ercc07:ibmsup_comf370"
%include "ercc07:ibmsup_page0f"
%include "ercc07:ibmsup_dtform1s"
%include "ercc07:IBMSUP_xaioform"
%record %format PARMF(%integer DEST,SRCE,(%integer P1,P2,P3,P4,P5,
P6 %or %string (23) TEXT))
%record %format PARMXF(%integer DEST,SRCE,P1,P2,P3,P4,P5,P6,LINK)
%if VA MODE=YES %start
%const %record (PARMXF) %array %name PARM=PARM0AD
%finish %else %start
!* %externalintegerspec parmad
%own %record (PARMXF) %array %name PARM
!* %ownrecord(parmxf)%arrayformat parmaf(0:128)
%finish
!
%external %integer %fn %spec REALISE(%integer VAD)
%external %integer %fn %spec HSCH(%integer SLOTADDR)
%external %integer %fn %spec TSCH(%integer SLOTADDR, %record (IRBF) %name IRB)
%external %integer %fn %spec SSCH(%integer SLOTADDR,CCWA,KEY)
==== ercc07/ebits_ecodes1.txt ====
!
!************************************************************************
!* *
!* G.E.Millard *
!* ECODES1 26/09/85 *
!* *
!************************************************************************
!
{00} %constinteger HALT = 0
!
!--------------------------------------- 32-bit (Etos) ----------------
!
{01} %constinteger IADD = 1 { (Etos-1) + (Etos) => (Etos) }
{02} %constinteger ISUB = 2 { (Etos-1) - (Etos) => (Etos) }
{03} %constinteger IMULT = 3 { (Etos-1) * (Etos) => (Etos) }
{04} %constinteger IDIV = 4 { (Etos-1) / (Etos) => (Etos) }
{05} %constinteger INEG = 5 { - (Etos) => (Etos) }
{06} %constinteger IABS = 6 { abs( (Etos) ) => (Etos) }
{07} %constinteger IREM = 7 { remainder from }
{ (Etos-1) / (Etos)=> (Etos) }
!
==== ercc07/pdriver05s.txt ====
{****************************************************************************}
{ }
{ System dependent routines. }
{ }
{****************************************************************************}
%externalstring(255)%fnspec uinfs %alias "S#UINFS"(%integer n)
%EXTERNAL %ROUTINE %SPEC Define %ALIAS "S#DEFINE"(%INTEGER channel,
%STRING (255) File, %INTEGER %NAME Afd,Flag)
%externalintegerfnspec IOCP %alias "S#IOCP"(%integer ep,adr)
%EXTERNAL %INTEGER %MAP %SPEC ComReg %ALIAS "S#COMREGMAP"(%INTEGER N)
%EXTERNAL %ROUTINE %SPEC ICLpascalcompiler
%ROUTINE %SPEC InitialiseCompiler
%EXTERNAL %ROUTINE %SPEC EMAS3ClaimChannel(%INTEGER %NAME Chan)
%EXTERNAL %ROUTINE %SPEC Eproc(%STRING %NAME Name, %INTEGER Prop,Numpars,
Paramsize,Astacklen, %INTEGER %NAME Id)
%EXTERNAL %ROUTINE %SPEC Eentry(%INTEGER Index,Numpars,ParamSize,LocalSize,
DiagDisp, %STRING %NAME Name)
%EXTERNAL %INTEGER %FN %SPEC Exname(%INTEGER Type, %STRING %NAME Xref)
%EXTERNAL %ROUTINE %SPEC Edataentry(%INTEGER Area,Offset,Length,
%STRING %NAME Name)
==== ercc07/ebits_ecodes2.txt ====
!
!************************************************************************
!* *
!* G.E.Millard *
!* ECODES2 06/01/86 *
!* *
!************************************************************************
!
{00} %constinteger HALT = 0
!
!--------------------------------------- generic int operations -------
!
{01} %constinteger IADD = 1 { (Etos-1) + (Etos) => (Etos) }
{02} %constinteger ISUB = 2 { (Etos-1) - (Etos) => (Etos) }
{03} %constinteger IMULT = 3 { (Etos-1) * (Etos) => (Etos) }
{04} %constinteger IDIV = 4 { (Etos-1) / (Etos) => (Etos) }
{05} %constinteger INEG = 5 { - (Etos) => (Etos) }
{06} %constinteger IABS = 6 { abs( (Etos) ) => (Etos) }
{07} %constinteger IREM = 7 { remainder from }
{ (Etos-1) / (Etos)=> (Etos) }
!
==== ercc07/timp03s.txt ====
!
! Recent Source Changes
!**********************
!
! DEc88 Version 3 produced
! Changes to note included procedures for Gould and others
! Also change to allow LINT &LINTPT to compile when lonlongs are treated as longs
!
! 8May87 Changes in FPlist so that RT Parameters are aligned according
! the rules of array Rnding
!
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations%c
like
! passing Labels this still applies, this adhocery has caused problems with%c
arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
==== ercc07/icom8s.txt ====
%INCLUDE "ercc07:ibmsup_comf370"
!
%INCLUDE "ercc07:ibmsup_page0f"
!
%RECORDFORMAT PARMF((%INTEGER DEST,SRCE %ORSHORT DSNO,DACT,SSNO,SACT),(%INTEGER P1,P2,P3,P4,
P5,P6 %ORSTRING (23) TEXT))
!
%CONSTINTEGER SLEN=63; ! string length in RT calls
%EXTERNALROUTINESPEC DISPLAY TEXT(%INTEGER V,L,P, %STRING (41) TEXT)
%EXTERNALROUTINESPEC DPON(%RECORD (PARMF) %NAME P, %INTEGER DELAY)
%EXTERNALINTEGERFNSPEC STOI(%STRINGNAME S)
%EXTERNALROUTINESPEC PKMONREC(%STRING (23) S, %RECORD (PARMF) %NAME P)
%EXTERNALROUTINESPEC PON(%RECORD (PARMF) %NAME P)
%EXTERNALROUTINESPEC MONITOR(%STRING (SLEN) S)
%EXTERNALROUTINESPEC OPMESS(%STRING (SLEN) S)
%EXTERNALROUTINESPEC OPMESS3(%STRING (SLEN) S)
%EXTERNALROUTINESPEC INHIBIT(%INTEGER SERVICE)
%EXTERNALROUTINESPEC UNINHIBIT(%INTEGER SERVICE)
%EXTERNALROUTINESPEC DUMPTABLE(%INTEGER T,A,L)
%EXTERNALINTEGERFNSPEC REALISE(%INTEGER VIRTAD)
%EXTERNALINTEGERFNSPEC RTV(%INTEGER RAD)
==== ercc07/ebits_ecodes3.txt ====
!
!************************************************************************
!* *
!* G.E.Millard *
!* ECODES3 31/03/86 *
!* *
!************************************************************************
!
{00} %constinteger HALT = 0
!
!--------------------------------------- generic int operations -------
!
{01} %constinteger IADD = 1 { (Etos-1) + (Etos) => (Etos) }
{02} %constinteger ISUB = 2 { (Etos-1) - (Etos) => (Etos) }
{03} %constinteger IMULT = 3 { (Etos-1) * (Etos) => (Etos) }
{04} %constinteger IDIV = 4 { (Etos-1) / (Etos) => (Etos) }
{05} %constinteger INEG = 5 { - (Etos) => (Etos) }
{06} %constinteger IABS = 6 { abs( (Etos) ) => (Etos) }
{07} %constinteger IREM = 7 { remainder from }
{ (Etos-1) / (Etos)=> (Etos) }
!
==== ercc07/usysgen00s.txt ====
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
! Opnd2 is either a 32 bit const with the size (ACC) as value or
! the ptr or arrayhead as normal operand.
!
! VMY X1 is now dim<<28!maxdim<<24!array name(where known)
! Opnd2 is either a 32 bit const with DV offset into const area or
! the arrayhead as a standard operand
!
! AINDX X1 is ELSIZE<<20 !spare
! Opnd2 is arrayhead as standard operand
! NOTE:- The Operands have been swopped for consistency with norm.
!
==== ercc07/ebits_ecodes4.txt ====
!
!************************************************************************
!* *
!* G.E.Millard *
!* ECODES4 22/04/86 *
!* *
!************************************************************************
!
{00} %constinteger HALT = 0
!
!--------------------------------------- generic int operations -------
!
{01} %constinteger IADD = 1 { (Etos-1) + (Etos) => (Etos) }
{02} %constinteger ISUB = 2 { (Etos-1) - (Etos) => (Etos) }
{03} %constinteger IMULT = 3 { (Etos-1) * (Etos) => (Etos) }
{04} %constinteger IDIV = 4 { (Etos-1) / (Etos) => (Etos) }
{05} %constinteger INEG = 5 { - (Etos) => (Etos) }
{06} %constinteger IABS = 6 { abs( (Etos) ) => (Etos) }
{07} %constinteger IREM = 7 { remainder from }
{ (Etos-1) / (Etos)=> (Etos) }
!
==== ercc07/ebits_ecodes5.txt ====
!
!************************************************************************
!* *
!* G.E.Millard *
!* ECODES5 25/04/86 *
!* *
!************************************************************************
!
{00} %constinteger HALT = 0
!
!--------------------------------------- generic int operations -------
!
{01} %constinteger IADD = 1 { (Etos-1) + (Etos) => (Etos) }
{02} %constinteger ISUB = 2 { (Etos-1) - (Etos) => (Etos) }
{03} %constinteger IMULT = 3 { (Etos-1) * (Etos) => (Etos) }
{04} %constinteger IDIV = 4 { (Etos-1) / (Etos) => (Etos) }
{05} %constinteger INEG = 5 { - (Etos) => (Etos) }
{06} %constinteger IABS = 6 { abs( (Etos) ) => (Etos) }
{07} %constinteger IREM = 7 { remainder from }
{ (Etos-1) / (Etos)=> (Etos) }
!
==== ercc07/trimp_accponeas.txt ====
%INCLUDE "ERCC07.TRIMP_HOSTCODES"
%CONSTINTEGER HOST=EMAS
%CONSTINTEGER TARGET=ACCENT
! PRODUCED BY OLDPS FROM TRIMP_PERQPS01 ON 06/09/83
%CONSTBYTEINTEGERARRAY CLETT(0: 436)= 1,
40, 1, 41, 1, 42, 1, 44, 2, 201, 198, 6, 213, 206, 204,
197, 211, 211, 5, 215, 200, 201, 204, 197, 5, 213, 206, 212, 201,
204, 3, 198, 207, 210, 1, 61, 5, 193, 204, 201, 193, 211, 7,
201, 206, 212, 197, 199, 197, 210, 4, 210, 197, 193, 204, 4, 204,
207, 206, 199, 4, 194, 217, 212, 197, 6, 211, 212, 210, 201, 206,
199, 4, 200, 193, 204, 198, 5, 211, 200, 207, 210, 212, 6, 210,
197, 195, 207, 210, 196, 7, 210, 207, 213, 212, 201, 206, 197, 2,
198, 206, 3, 205, 193, 208, 8, 198, 213, 206, 195, 212, 201, 207,
206, 4, 206, 193, 205, 197, 9, 193, 210, 210, 193, 217, 206, 193,
205, 197, 9, 207, 198, 208, 210, 207, 199, 210, 193, 205, 6, 207,
198, 198, 201, 204, 197, 6, 207, 198, 204, 201, 211, 212, 6, 198,
207, 210, 205, 193, 212, 3, 206, 207, 212, 3, 193, 206, 196, 2,
207, 210, 1, 58, 4, 211, 208, 197, 195, 5, 193, 210, 210, 193,
217, 3, 207, 215, 206, 8, 197, 216, 212, 197, 210, 206, 193, 204,
9, 197, 216, 212, 210, 201, 206, 211, 201, 195, 8, 195, 207, 206,
211, 212, 193, 206, 212, 5, 195, 207, 206, 211, 212, 5, 197, 214,
==== ercc07/ebits_ecodes6.txt ====
!
!************************************************************************
!* *
!* G.E.Millard *
!* ECODES6 29/05/86 *
!* *
!************************************************************************
!
{00} %constinteger HALT = 0
!
!--------------------------------------- generic int operations -------
!
{01} %constinteger IADD = 1 { (Etos-1) + (Etos) => (Etos) }
{02} %constinteger ISUB = 2 { (Etos-1) - (Etos) => (Etos) }
{03} %constinteger IMULT = 3 { (Etos-1) * (Etos) => (Etos) }
{04} %constinteger IDIV = 4 { (Etos-1) / (Etos) => (Etos) }
{05} %constinteger INEG = 5 { - (Etos) => (Etos) }
{06} %constinteger IABS = 6 { abs( (Etos) ) => (Etos) }
{07} %constinteger IREM = 7 { remainder from }
{ (Etos-1) / (Etos)=> (Etos) }
!
==== ercc07/ibmsup_comf370.txt ====
!
%include "Ercc07:ibmsup_comformat"
!
%if VA MODE=YES %start
%constrecord (COMF) %name COM=COM SEG<<SSHIFT
%finishelsestart
%ownrecord (COMF) %name COM
%finish
%endoffile
==== ercc07/idev16s.txt ====
!09-09-85..statistics gathering for auscom
!05-09-85..use tio in case mag tape off-line..sh
%include "ercc07:ibmsup_comf370"
%include "ercc07:ibmsup_page0f"
%include "ercc07:ibmsup_dtform1s"
%include "ercc07:IBMSUP_xaioform"
%record %format PARMF(%integer DEST,SRCE,(%integer P1,P2,P3,P4,P5,
P6 %or %string (23) TEXT))
%record %format PARMXF(%integer DEST,SRCE,P1,P2,P3,P4,P5,P6,LINK)
%if VA MODE=YES %start
%const %record (PARMXF) %array %name PARM=PARM0AD
%finish %else %start
!* %externalintegerspec parmad
%own %record (PARMXF) %array %name PARM
!* %ownrecord(parmxf)%arrayformat parmaf(0:128)
%finish
!
%external %integer %fn %spec REALISE(%integer VAD)
%external %integer %fn %spec HSCH(%integer SLOTADDR)
%external %integer %fn %spec TSCH(%integer SLOTADDR, %record (IRBF) %name IRB)
%external %integer %fn %spec SSCH(%integer SLOTADDR,CCWA,KEY)
==== ercc07/ebits_ecodes8.txt ====
!
!************************************************************************
!* *
!* G.E.Millard *
!* ECODES8 26/06/86 *
!* *
!************************************************************************
!
{00} %constinteger HALT = 0
!
!--------------------------------------- generic int operations -------
!
{01} %constinteger IADD = 1 { (Etos-1) + (Etos) => (Etos) }
{02} %constinteger ISUB = 2 { (Etos-1) - (Etos) => (Etos) }
{03} %constinteger IMULT = 3 { (Etos-1) * (Etos) => (Etos) }
{04} %constinteger IDIV = 4 { (Etos-1) / (Etos) => (Etos) }
{05} %constinteger INEG = 5 { - (Etos) => (Etos) }
{06} %constinteger IABS = 6 { abs( (Etos) ) => (Etos) }
{07} %constinteger IREM = 7 { remainder from }
{ (Etos-1) / (Etos)=> (Etos) }
!
==== ercc07/ebits_ecodes9.txt ====
!
!************************************************************************
!* *
!* G.E.Millard *
!* ECODES8 26/06/86 *
!* *
!************************************************************************
!
{00} %constinteger HALT = 0
!
!--------------------------------------- generic int operations -------
!
{01} %constinteger IADD = 1 { (Etos-1) + (Etos) => (Etos) }
{02} %constinteger ISUB = 2 { (Etos-1) - (Etos) => (Etos) }
{03} %constinteger IMULT = 3 { (Etos-1) * (Etos) => (Etos) }
{04} %constinteger IDIV = 4 { (Etos-1) / (Etos) => (Etos) }
{05} %constinteger INEG = 5 { - (Etos) => (Etos) }
{06} %constinteger IABS = 6 { abs( (Etos) ) => (Etos) }
{07} %constinteger IREM = 7 { remainder from }
{ (Etos-1) / (Etos)=> (Etos) }
!
==== ercc07/xgen30s.txt ====
!* modified 16/07/86
!*
%constinteger increports=1
%owninteger Report=0
%owninteger Decode
%owninteger Language
!*
%constinteger IMP = 1
%constinteger FORTRAN = 2
%constinteger CCOMP = 11
%constinteger PASCAL = 14
!*
!***********************************************************************
!* Exports *
!***********************************************************************
!*
%routinespec Einitialise(%integer Lang, Avertext, Astackca,
Aglaca, Options)
%routinespec Eterminate(%integer adareasizes)
%routinespec Ecommon(%integer area, %stringname Name)
%routinespec Eendcommon(%integer area, Length)
==== ercc07/trimp_pnxoptas.txt ====
%INCLUDE "ERCC07.TRIMP_HOSTCODES"
%CONSTINTEGER HOST=EMAS
%CONSTINTEGER TARGET=PNX
==== ercc07/pdriver06s.txt ====
{****************************************************************************}
{ }
{ System dependent routines. }
{ }
{****************************************************************************}
%externalstring(255)%fnspec uinfs %alias "S#UINFS"(%integer n)
%EXTERNAL %ROUTINE %SPEC Define %ALIAS "S#DEFINE"(%INTEGER channel,
%STRING (255) File, %INTEGER %NAME Afd,Flag)
%externalintegerfnspec IOCP %alias "S#IOCP"(%integer ep,adr)
%EXTERNAL %INTEGER %MAP %SPEC ComReg %ALIAS "S#COMREGMAP"(%INTEGER N)
%EXTERNAL %ROUTINE %SPEC ICLpascalcompiler
%ROUTINE %SPEC InitialiseCompiler
%EXTERNAL %ROUTINE %SPEC EMAS3ClaimChannel(%INTEGER %NAME Chan)
%EXTERNAL %ROUTINE %SPEC Eproc(%STRING %NAME Name, %INTEGER Prop,Numpars,
Paramsize,Astacklen, %INTEGER %NAME Id)
%EXTERNAL %ROUTINE %SPEC Eentry(%INTEGER Index,Numpars,ParamSize,LocalSize,
DiagDisp, %STRING %NAME Name)
%EXTERNAL %INTEGER %FN %SPEC Exname(%INTEGER Type, %STRING %NAME Xref)
%EXTERNAL %ROUTINE %SPEC Edataentry(%INTEGER Area,Offset,Length,
%STRING %NAME Name)
==== ercc07/timp04s.txt ====
!
! Recent Source Changes
!**********************
!
! DEc88 Version 3 produced
! Changes to note included procedures for Gould and others
! Also change to allow LINT &LINTPT to compile when lonlongs are treated as longs
!
! 8May87 Changes in FPlist so that RT Parameters are aligned according
! the rules of array Rnding
!
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations%c
like
! passing Labels this still applies, this adhocery has caused problems with%c
arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
==== ercc07/icom9s.txt ====
%INCLUDE "ercc07:ibmsup_comf370"
!
%INCLUDE "ercc07:ibmsup_page0f"
!
%RECORDFORMAT PARMF((%INTEGER DEST,SRCE %ORSHORT DSNO,DACT,SSNO,SACT),(%INTEGER P1,P2,P3,P4,
P5,P6 %ORSTRING (23) TEXT))
!
%CONSTINTEGER SLEN=63; ! string length in RT calls
%EXTERNALROUTINESPEC DISPLAY TEXT(%INTEGER V,L,P, %STRING (41) TEXT)
%EXTERNALROUTINESPEC DPON(%RECORD (PARMF) %NAME P, %INTEGER DELAY)
%EXTERNALINTEGERFNSPEC STOI(%STRINGNAME S)
%EXTERNALROUTINESPEC PKMONREC(%STRING (23) S, %RECORD (PARMF) %NAME P)
%EXTERNALROUTINESPEC PON(%RECORD (PARMF) %NAME P)
%EXTERNALROUTINESPEC MONITOR(%STRING (SLEN) S)
%EXTERNALROUTINESPEC OPMESS(%STRING (SLEN) S)
%EXTERNALROUTINESPEC OPMESS3(%STRING (SLEN) S)
%EXTERNALROUTINESPEC INHIBIT(%INTEGER SERVICE)
%EXTERNALROUTINESPEC UNINHIBIT(%INTEGER SERVICE)
%EXTERNALROUTINESPEC DUMPTABLE(%INTEGER T,A,L)
%EXTERNALINTEGERFNSPEC REALISE(%INTEGER VIRTAD)
%EXTERNALINTEGERFNSPEC RTV(%INTEGER RAD)
==== ercc07/linkv7.txt ====
parm map
link ,separeas
ercc07:isupv710y
ercc07:ifastv75y
ercc07:idevv712y
ercc07:ioperv73y
ercc07:icomv76y
ercc08:iprintv72y
ercc15:itape.Y6
ercc27:icomms.y9
ercc08:ienterv72y
ercc07:indiagv72y
.end
isupz
isupfix isupz,isupt,isupl
disconnect isupt
parm nocheck
==== ercc07/idev17s.txt ====
! 17-05-88 Semaphoring added for dual nass PDS
!09-09-85..statistics gathering for auscom
!05-09-85..use tio in case mag tape off-line..sh
%INCLUDE "ercc07:ibmsup_comf370"
%INCLUDE "ercc07:ibmsup_page0f"
%INCLUDE "ercc07:ibmsup_dtform2s"
%INCLUDE "ercc07:IBMSUP_xaioform"
%RECORD %FORMAT PARMF(%INTEGER DEST,SRCE,(%INTEGER P1,P2,P3,P4,P5,P6 %OR %STRING (23) TEXT))
%RECORD %FORMAT PARMXF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6,LINK)
%IF VA MODE=YES %START
%CONST %RECORD (PARMXF) %ARRAY %NAME PARM=PARM0AD
%FINISH %ELSE %START
!* %EXTERNALINTEGERSPEC parmad
%OWN %RECORD (PARMXF) %ARRAY %NAME PARM
!* %OWNRECORD(parmxf)%ARRAYFORMAT parmaf(0:128)
%FINISH
!
%EXTERNAL %INTEGER %FN %SPEC REALISE(%INTEGER VAD)
%EXTERNAL %INTEGER %FN %SPEC HSCH(%INTEGER SLOTADDR)
%EXTERNAL %INTEGER %FN %SPEC TSCH(%INTEGER SLOTADDR, %RECORD (IRBF) %NAME IRB)
%EXTERNAL %INTEGER %FN %SPEC SSCH(%INTEGER SLOTADDR,CCWA,KEY)
==== ercc07/xgen31s.txt ====
!* modified 16/07/86
!*
%constinteger increports=1
%owninteger Report=0
%owninteger Decode
%owninteger Language
!*
%constinteger IMP = 1
%constinteger FORTRAN = 2
%constinteger CCOMP = 11
%constinteger PASCAL = 14
!*
!***********************************************************************
!* Exports *
!***********************************************************************
!*
%routinespec Einitialise(%integer Lang, Avertext, Astackca,
Aglaca, Options)
%routinespec Eterminate(%integer adareasizes)
%routinespec Ecommon(%integer area, %stringname Name)
%routinespec Eendcommon(%integer area, Length)
==== ercc07/portenv03_exps.txt ====
%include "itrimp_hostcodes"
!
%CONSTINTEGER TARGET=M88K
!%EXTERNALROUTINESPEC IOCP %ALIAS "s#iocp"(%INTEGER EP,N)
!
! crude versions of the fortran exponentiation functions used by imp
!
%EXTERNALINTEGERFN POWII %ALIAS "F_POWII" %C
(%%INTEGER ARG, %INTEGER NARG)
!
! CALCULATES ARG**NARG
!
%integer XX,YY
%INTEGER N
%IF NARG<0 %THEN %signal %event 5,5
%IF NARG=0 %then %result=1
%IF ARG=0 %START
%RESULT= 0
==== ercc07/pdriver07s.txt ====
{****************************************************************************}
{ }
{ System dependent routines. }
{ }
{****************************************************************************}
%externalstring(255)%fnspec uinfs %alias "S#UINFS"(%integer n)
%EXTERNAL %ROUTINE %SPEC Define %ALIAS "S#DEFINE"(%INTEGER channel,
%STRING (255) File, %INTEGER %NAME Afd,Flag)
%externalintegerfnspec IOCP %alias "S#IOCP"(%integer ep,adr)
%EXTERNAL %INTEGER %MAP %SPEC ComReg %ALIAS "S#COMREGMAP"(%INTEGER N)
%EXTERNAL %ROUTINE %SPEC ICLpascalcompiler
%ROUTINE %SPEC InitialiseCompiler
%EXTERNAL %ROUTINE %SPEC EMAS3ClaimChannel(%INTEGER %NAME Chan)
%EXTERNAL %ROUTINE %SPEC Eproc(%STRING %NAME Name, %INTEGER Prop,Numpars,
Paramsize,Astacklen, %INTEGER %NAME Id)
%EXTERNAL %ROUTINE %SPEC Eentry(%INTEGER Index,Numpars,ParamSize,LocalSize,
DiagDisp, %STRING %NAME Name)
%EXTERNAL %INTEGER %FN %SPEC Exname(%INTEGER Type, %STRING %NAME Xref)
%EXTERNAL %ROUTINE %SPEC Edataentry(%INTEGER Area,Offset,Length,
%STRING %NAME Name)
==== ercc07/timp05s.txt ====
!
! Recent Source Changes
!**********************
!
! Oct 89 Version 5
! Chnages (mostly in CRCALL) to pass record values via work area & pointer
! for risc chips. Controlled by const integer in steering file
!
! DEc88 Version 3 produced
! Changes to note included procedures for Gould and others
! Also change to allow LINT &LINTPT to compile when lonlongs are treated as longs
!
! 8May87 Changes in FPlist so that RT Parameters are aligned according
! the rules of array Rnding
!
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations%c
like
==== ercc07/ebits_especs1.txt ====
!* modified 19/08/85
!*
%externalroutinespec Egenerate Object(%stringname Name)
%externalroutinespec Einitialise(%integer Lang, Avertext, Astackca,
Aglaca, Options)
%externalroutinespec Eterminate(%integer adareasizes)
%externalroutinespec Ecommon(%integer area, %stringname Name)
%externalroutinespec Eendcommon(%integer area, Length)
%externalroutinespec Elinestart(%integer lineno)
%externalroutinespec Elinedecode
%externalroutinespec Emonon
%externalroutinespec Emonoff
%externalroutinespec Efaulty
%externalintegerfnspec Estkmarker
%externalroutinespec Esetmarker(%integer Markerid, New Value)
%externalintegerfnspec Eswapmode
!*
%externalroutinespec Estklit(%integer Val)
%externalroutinespec Estkconst(%integer Len, Ad)
%externalroutinespec Estkdir(%integer Area, Offset, Adid, Bytes)
%externalroutinespec Estkind(%integer Area, Offset, Adid, Bytes)
==== ercc07/ebits_especs2.txt ====
!* modified 19/08/85
!*
%externalroutinespec Egenerate Object(%stringname Name)
%externalroutinespec Einitialise(%integer Lang, Avertext, Astackca,
Aglaca, Options)
%externalroutinespec Eterminate(%integer adareasizes)
%externalroutinespec Ecommon(%integer area, %stringname Name)
%externalroutinespec Eendcommon(%integer area, Length)
%externalroutinespec Elinestart(%integer lineno)
%externalroutinespec Elinedecode
%externalroutinespec Emonon
%externalroutinespec Emonoff
%externalroutinespec Efaulty
%externalintegerfnspec Estkmarker
%externalroutinespec Esetmarker(%integer Markerid, New Value)
%externalintegerfnspec Eswapmode
!*
%externalroutinespec Estklit(%integer Val)
%externalroutinespec Estkconst(%integer Len, Ad)
%externalroutinespec Estkrconst(%integer Len,Ad)
%externalroutinespec Estkdir(%integer Area, Offset, Adid, Bytes)
==== ercc07/idev18s.txt ====
! 17-05-88 Semaphoring added for dual nass PDS
!09-09-85..statistics gathering for auscom
!05-09-85..use tio in case mag tape off-line..sh
%INCLUDE "ercc07:ibmsup_comf370"
%INCLUDE "ercc07:ibmsup_page0f"
%INCLUDE "ercc07:ibmsup_dtform2s"
%INCLUDE "ercc07:IBMSUP_xaioform"
%RECORD %FORMAT PARMF(%INTEGER DEST,SRCE,(%INTEGER P1,P2,P3,P4,P5,P6 %OR %STRING (23) TEXT))
%RECORD %FORMAT PARMXF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6,LINK)
%IF VA MODE=YES %START
%CONST %RECORD (PARMXF) %ARRAY %NAME PARM=PARM0AD
%FINISH %ELSE %START
!* %EXTERNALINTEGERSPEC parmad
%OWN %RECORD (PARMXF) %ARRAY %NAME PARM
!* %OWNRECORD(parmxf)%ARRAYFORMAT parmaf(0:128)
%FINISH
!
%EXTERNAL %INTEGER %FN %SPEC REALISE(%INTEGER VAD)
%EXTERNAL %INTEGER %FN %SPEC HSCH(%INTEGER SLOTADDR)
%EXTERNAL %INTEGER %FN %SPEC TSCH(%INTEGER SLOTADDR, %RECORD (IRBF) %NAME IRB)
%EXTERNAL %INTEGER %FN %SPEC SSCH(%INTEGER SLOTADDR,CCWA,KEY)
==== ercc07/vaxcom_newilink.txt ====
$ link 'p1',imp_sup/lib,sys$input/opt
sys$share:vaxcrtl.exe/share
==== ercc07/ebits_especs5.txt ====
%externalroutinespec Einitialise (%integer Lang,Aver,Astackca,Aglaca,options)
%externalroutinespec Eterminate (%integer adareasizes)
%externalroutinespec Ecommon (%integer area,%stringname Name)
%externalroutinespec Eendcommon (%integer area,Length)
%externalroutinespec Elinestart (%integer lineno)
%externalroutinespec Elinedecode
%externalintegerfnspec Estkmarker
%externalroutinespec Esetmarker (%integer Markerid,New Value)
%externalintegerfnspec Eswapmode
%externalroutinespec Emonon
%externalroutinespec Emonoff
%externalroutinespec Efaulty
%externalroutinespec Estklit (%integer Val)
%externalroutinespec Estkconst (%integer Len,Ad)
%externalroutinespec Estkrconst (%integer Len,Ad)
%externalroutinespec Estkdir (%integer Area,Offset,Adid,Bytes)
%externalroutinespec Estkind (%integer Area,Offset,Adid,Bytes)
%externalroutinespec Estkglobal (%integer Level,Offset,Adid,Bytes)
%externalroutinespec Estkglobalind (%integer Level,Offset,Adid,Bytes)
%externalroutinespec Estkgind (%integer Level,Offset,Adid,Bytes)
%externalroutinespec Estkpar (%integer Level,Offset,Adid,Bytes)
==== ercc07/xgen32s.txt ====
! changes for xgen32s
! 1) Rearrange initialisation so that Exnamesva initialised before
! Pascal specific initialisation calls Exname
! 2) Insert three missing pusings
! 3) Minor correction to Epromote to keep register uses OK
!*
%constinteger increports=1
%owninteger Report=0
%owninteger Decode
%owninteger Language
!*
%constinteger IMP = 1
%constinteger FORTRAN = 2
%constinteger CCOMP = 11
%constinteger PASCAL = 14
!*
!***********************************************************************
!* Exports *
!***********************************************************************
!*
%routinespec Einitialise(%integer Lang, Avertext, Astackca,
==== ercc07/timp06s.txt ====
!
! Recent Source Changes
!**********************
!
! Dec 89 Version 6
! Changes so that functions in parameters are prefetched so there are no
! recursive calls which tend to be inefficient on RISC machines
!
! Also move rounding of own variables back from pass4 to pass2 so
! that the global rules are used.
! Also more careful rounding of tempoaries and ON space
!
! Oct 89 Version 5
! Changes (mostly in CRCALL) to pass record values via work area & pointer
! for risc chips. Controlled by const integer in steering file
!
! DEc88 Version 3 produced
! Changes to note included procedures for Gould and others
! Also change to allow LINT &LINTPT to compile when lonlongs are treated as longs
!
! 8May87 Changes in FPlist so that RT Parameters are aligned according
==== ercc07/idev19s.txt ====
! 17-05-88 Semaphoring added for dual nass PDS
!09-09-85..statistics gathering for auscom
!05-09-85..use tio in case mag tape off-line..sh
%INCLUDE "ercc07:ibmsup_comf370"
%INCLUDE "ercc07:ibmsup_page0f"
%INCLUDE "ercc07:ibmsup_dtform2s"
%INCLUDE "ercc07:IBMSUP_xaioform"
%RECORD %FORMAT PARMF(%INTEGER DEST,SRCE,(%INTEGER P1,P2,P3,P4,P5,P6 %OR %STRING (23) TEXT))
%RECORD %FORMAT PARMXF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6,LINK)
%IF VA MODE=YES %START
%CONST %RECORD (PARMXF) %ARRAY %NAME PARM=PARM0AD
%FINISH %ELSE %START
!* %EXTERNALINTEGERSPEC parmad
%OWN %RECORD (PARMXF) %ARRAY %NAME PARM
!* %OWNRECORD(parmxf)%ARRAYFORMAT parmaf(0:128)
%FINISH
!
%EXTERNAL %INTEGER %FN %SPEC REALISE(%INTEGER VAD)
%EXTERNAL %INTEGER %FN %SPEC HSCH(%INTEGER SLOTADDR)
%EXTERNAL %INTEGER %FN %SPEC TSCH(%INTEGER SLOTADDR, %RECORD (IRBF) %NAME IRB)
%EXTERNAL %INTEGER %FN %SPEC SSCH(%INTEGER SLOTADDR,CCWA,KEY)
==== ercc07/trimp_oldps.txt ====
%EXTERNALROUTINE OLDPS(%STRING(63) S)
%EXTERNALSTRINGFNSPEC DATE
%INTEGER I, J, K, SS, NBIP
%STRING(31) ST49,ST50,ST51
%STRING(127)HEADER
%EXTERNALROUTINESPEC DEFINE(%STRING(63)S)
%INTEGERARRAY CLETT(0:1000), SYMBOL(1300:3000), CC(0:300)
%INTEGER CNEXT, DNEXT, CNUM, DNUM, ALT, DEF, ASL, NIDFLAG
%INTEGERARRAY KK, PUSE, DWORD(1001:1200), DLETT(0:1000), CWORD(1:200)
%ROUTINESPEC READ STRING(%INTEGER TERMINATOR)
%ROUTINESPEC RECORD(%INTEGERARRAYNAME WORD, LETT, %C
%INTEGERNAME NUM, NEXT)
%ROUTINESPEC LOOK UP(%INTEGERARRAYNAME WORD, LETT, %C
%INTEGER FIRST, LAST, INSERT)
%ROUTINESPEC PDDICT
%ROUTINESPEC PRINT STR(%INTEGERARRAYNAME CC, %INTEGER PTR)
%ROUTINESPEC PCDICT
%UNLESS S->ST49.(",").ST50.(",").ST51 %THEN %C
PRINTSTRING("PARAMS?????") %AND NEWLINE %AND %RETURN
DEFINE("ST49,".ST49)
==== ercc07/xgen33s.txt ====
! changes for xgen32s
! 1) Rearrange initialisation so that Exnamesva initialised before
! Pascal specific initialisation calls Exname
! 2) Insert three missing pusings
! 3) Minor correction to Epromote to keep register uses OK
!*
%constinteger increports=1
%owninteger Report=0
%owninteger Decode
%owninteger Language
!*
%constinteger IMP = 1
%constinteger FORTRAN = 2
%constinteger CCOMP = 11
%constinteger PASCAL = 14
!*
!***********************************************************************
!* Exports *
!***********************************************************************
!*
%routinespec Einitialise(%integer Lang, Avertext, Astackca,
==== ercc07/stuenv01s.txt ====
%EXTERNALINTEGERMAPSPEC COMREG %ALIAS "S#COMREGMAP"(%INTEGER N)
%CONSTLONGREAL LOG10A=2.3025850929940456840179914546843642076011
%CONSTLONGREAL PI=3.141592653589793238462643
%CONSTLONGREAL R1= 1.2595802263029547@ 1{R'41C98867F42983DF'}
%CONSTLONGREAL R2=-8.6186317517509520@ 1{R'C2562FB2813C6014'}
%CONSTLONGREAL R3=-1.2766919133361079@ 0{R'C1146D547FED8A3D'}
%CONSTLONGREAL R4=-8.3921038065840512@ -2{R'C0157BD961F06C89'}
%CONSTLONGREAL S1= 2.7096164294378656@ 1{R'421B189E39236635'}
%CONSTLONGREAL S2= 6.5581320451487386@ 0{R'4168EE1BDE0C3700'}
%CONSTLONGREAL S3= 2.1441643116703661@ 0{R'41224E7F3CBDFE41'}
%CONSTLONGREAL S4= 1.2676256708212610@ 0{R'41144831DAFBF542'}
%CONSTLONGREAL RT3= 1.7320508075688772@ 0{R'411BB67AE8584CAA'}
%CONSTLONGREAL PIBY6= 5.2359877559829887@ -1{R'40860A91C16B9B2C'}
%CONSTLONGREAL PIBY2M1= 5.7079632679489661@ -1{R'40921FB54442D184'}
%CONSTLONGREAL RT3M1=7.3205080756887728@ -1{R'40BB67AE8584CAA7'}
%CONSTLONGREAL TANPIBY12= 2.6794919243112271@ -1{R'404498517A7B3559'}
%CONSTLONGREAL PIBY4= 7.8539816339744816@ -1{R'40C90FDAA22168C2'}
%CONSTLONGREAL A1= 7.5000000000000000@ -1{R'40C0000000000000'}
%CONSTLONGREAL A2= 3.5398163397448309@ -2{R'3F90FDAA22168C23'}
%CONSTLONGREAL SQRTHALF= 7.0710678118654753@ -1{R'40B504F333F9DE65'}
%CONSTLONGREAL DEFALLT=SQRTHALF
==== ercc07/docs_enotes.txt ====
Current ambiguities in the Ecode machine
While going through the Ecode generator for Amdahl it has become obvious
that varying interpretations are possible for some Ecode operations and that
these interpretaions conflict. These notes are intended to clarify the more
important areas.
1) Locations and addresses.
Ecode operations are normally between items in store (locations). The
locations are notified by stacking them as area and offset or otherwise.
The address of a location can be obtatined by eop(Eaddress) or by stacking
the address of a location(Estkaddr). An address once stacked has the status
of a litval ie it does not have an address itself nor is it possible to
store into an address. To convert an address into a location use
Erefer(0,size).
2) Storing results.
The operations ESTORE and EDUPSTORE are provided for storing arithmetic
==== ercc07/makeusys_opt.txt ====
edit opt03s,Upos
i<itrimp_Usysoptas>
ta/%inc/
d1i<itrimp_hostcodes>
a'
d1i<itrimp_tform2s>
a'
d1i<tripcnsts>
e
imp Upos,.null
offer Upos,zepz01
==== ercc07/consources.txt ====
%recordformat Emashf(%integer dataend,datastart,filesize,filetype,s1,s2,s3,ofm)
%recordformat fidf(%integer dev,%short ino0,ino1,ino2,mode,%integer nlink,
uid,%short gid,%integer charad,filesize,atime,mtime,ctime,
%byte rfm,rat,%integer mrs)
%owninteger srcelink
%externalintegerfnspec Fstat(%integer filedes,bufad)
%externalintegerfnspec Open(%integer adname,mode,prot)
%externalintegerfnspec read(%integer id,bytead,bytesize)
%externalintegerfnspec Malloc(%integer Bytesize)
%externalroutinespec Free(%integer bytead)
%externalroutinespec Cstring(%string(*)%name Impstring,%integer adcstr)
%externalstring(255)%fnspec Impstring(%integer acstring)
%externalroutine filenames(%integer asrce,aobj,alist)
!***********************************************************************
!* The command source name is a cstring at asrce *
!* Generate in Imp the source,object&listing file names *
!* Tell put via pset source and put back in the cstrings *
!***********************************************************************
%string(255) base,srce,obj,list,gen
%externalroutinespec Psetfiles(%string(*)%name srce,obj)
srce=Impstring(Asrce)
==== ercc07/idev20s.txt ====
! 17-05-88 Semaphoring added for dual nass PDS
!09-09-85..statistics gathering for auscom
!05-09-85..use tio in case mag tape off-line..sh
%INCLUDE "ercc07:ibmsup_comf370"
%INCLUDE "ercc07:ibmsup_page0f"
%INCLUDE "ercc07:ibmsup_dtform2s"
%INCLUDE "ercc07:IBMSUP_xaioform"
%RECORD %FORMAT PARMF(%INTEGER DEST,SRCE,(%INTEGER P1,P2,P3,P4,P5,P6 %OR %STRING (23) TEXT))
%RECORD %FORMAT PARMXF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6,LINK)
%IF VA MODE=YES %START
%CONST %RECORD (PARMXF) %ARRAY %NAME PARM=PARM0AD
%FINISH %ELSE %START
!* %EXTERNALINTEGERSPEC parmad
%OWN %RECORD (PARMXF) %ARRAY %NAME PARM
!* %OWNRECORD(parmxf)%ARRAYFORMAT parmaf(0:128)
%FINISH
!
%EXTERNAL %INTEGER %FN %SPEC REALISE(%INTEGER VAD)
%EXTERNAL %INTEGER %FN %SPEC HSCH(%INTEGER SLOTADDR)
%EXTERNAL %INTEGER %FN %SPEC TSCH(%INTEGER SLOTADDR, %RECORD (IRBF) %NAME IRB)
%EXTERNAL %INTEGER %FN %SPEC SSCH(%INTEGER SLOTADDR,CCWA,KEY)
==== ercc07/xgen27as.txt ====
!* modified 16/07/86
!*
%owninteger Report=0
%owninteger Decode
%owninteger Language
!*
%constinteger IMP = 1
%constinteger FORTRAN = 2
%constinteger CCOMP = 11
%constinteger PASCAL = 14
!*
!***********************************************************************
!* Exports *
!***********************************************************************
!*
%routinespec Einitialise(%integer Lang, Avertext, Astackca,
Aglaca, Options)
%routinespec Eterminate(%integer adareasizes)
%routinespec Ecommon(%integer area, %stringname Name)
%routinespec Eendcommon(%integer area, Length)
%routinespec Elinestart(%integer lineno)
==== ercc07/xgen35s.txt ====
!
! Changes for XGEN34s
! 1) Introduction of UMULT and UMULTST (previously omitted
! 2) Introduction of CONVERT UU and greater care over conversion for C
!
! changes for xgen32s
! 1) Rearrange initialisation so that Exnamesva initialised before
! Pascal specific initialisation calls Exname
! 2) Insert three missing pusings
! 3) Minor correction to Epromote to keep register uses OK
!*
%constinteger increports=1
%owninteger Report=0
%owninteger Decode
%owninteger Language
!*
%constinteger IMP = 1
%constinteger FORTRAN = 2
%constinteger CCOMP = 11
%constinteger PASCAL = 14
!*
==== ercc07/ibmconvert_sibmload.txt ====
%RECORDFORMAT NAMEF(%C
%STRING(8) NAME,
%INTEGER ID,
ADDR, {-1=NOT KNOWN,OTHERWISE ABSOLUTE ADRS}
{OF NAME}
CHAIN, {0 NO OUTSTANDING RELOCATIONS OTHERWISE}
{PTR TO HEAD OF CHAIN OF RELOCATIONS}
LNTH, {OF AREA FOR SD, HOME SD NO FOR AN LD}
OFFSET, { OFFSET OF LD WITHIN HOME SD}
%BYTE TYPE, {STANDARD TYPES SD,LD ETC}
COMMON)
!
!
!
%RECORDFORMAT RR(%INTEGER CONAD,FTYPE,DSTART,DEND)
%SYSTEMINTEGERFNSPEC PSTOI(%STRING(63)S)
%EXTERNALSTRING(8)%FNSPEC IBM NAME(%STRING(1) PREFIX,%STRINGNAME NAME)
%EXTERNALROUTINESPEC PROMPT(%STRING(15) S)
%EXTERNALROUTINESPEC DEFINE(%STRING(255)PARM)
%SYSTEMROUTINESPEC OUTFILE(%STRING(31)FILE,%INTEGER SIZE,HOLE,PROT,
%INTEGERNAME CONAD,FLAG)
==== ercc07/idev21s.txt ====
! Changes for idev21
! 1) attempt to make recoverying FEPs easier
! 2) Clear subchannel on deallocation
! 3) Revised timeout handling with no sense
! 4) Discard of ints with halt or clear fn bit set (Did not happen nonXA)
! 5) Icorporation of deferred CC into PSEUDOTERM
!
!! 17-05-88 Semaphoring added for dual nass PDS
!09-09-85..statistics gathering for auscom
!05-09-85..use tio in case mag tape off-line..sh
%INCLUDE "ercc07:ibmsup_comf370"
%INCLUDE "ercc07:ibmsup_page0f"
%INCLUDE "ercc07:ibmsup_dtform2s"
%INCLUDE "ercc07:IBMSUP_xaioform"
%RECORD %FORMAT PARMF(%INTEGER DEST,SRCE,(%INTEGER P1,P2,P3,P4,P5,P6 %OR %STRING (23) TEXT))
%RECORD %FORMAT PARMXF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6,LINK)
%IF VA MODE=YES %START
%CONST %RECORD (PARMXF) %ARRAY %NAME PARM=PARM0AD
%FINISH %ELSE %START
!* %EXTERNALINTEGERSPEC parmad
%OWN %RECORD (PARMXF) %ARRAY %NAME PARM
==== ercc07/xgen27bs.txt ====
!* modified 16/07/86
!*
%owninteger Report=0
%owninteger Decode
%owninteger Language
!*
%constinteger IMP = 1
%constinteger FORTRAN = 2
%constinteger CCOMP = 11
%constinteger PASCAL = 14
!*
!***********************************************************************
!* Exports *
!***********************************************************************
!*
%routinespec Einitialise(%integer Lang, Avertext, Astackca,
Aglaca, Options)
%routinespec Eterminate(%integer adareasizes)
%routinespec Ecommon(%integer area, %stringname Name)
%routinespec Eendcommon(%integer area, Length)
%routinespec Elinestart(%integer lineno)
==== ercc07/opt01s.txt ====
%INCLUDE "ERCC07:TFORM1S"
%INCLUDE "ERCC07:TRIPCNSTS"
%EXTRINSICRECORD (WORKAF) WORKA
%EXTRINSICRECORD (PARMF) PARM
%EXTERNALROUTINESPEC IMPABORT
%IF HOST#TARGET %START
%EXTERNALROUTINESPEC REFORMATC(%RECORD(RD)%NAME OPND)
%FINISH
%EXTERNALROUTINESPEC MOVE BYTES(%INTEGER L,FB,FO,TB,TO)
%EXTERNALROUTINESPEC FAULT(%INTEGER N,DATA,IDENT)
%EXTERNALROUTINESPEC PRINT TRIPS(%RECORD (TRIPF) %ARRAYNAME TRIPLES)
%CONSTBYTEINTEGERARRAY BYTES(0:7)=0(3),1,2,4,8,16;
%CONSTBYTEINTEGERARRAY WORDS(0:7)=0(3),1,1,1,2,4;
%EXTERNALROUTINE CTOP(%INTEGERNAME FLAG,MASK, %INTEGER XTRA,
%RECORD (RD) %NAME OPND1,OPND2)
!***********************************************************************
!* AN OPERATION HAS BEEN FOUND WHERE BOTH OPERANDS ARE *
!* CONSTANTS OR KNOWN AT COMPILE TIME. THIS ROUTINE INTERPRETS *
!* THE OPERATION *
!* ON EXIT FLAG=0 IF INTERPRETED. REFRAINS FROM INTERPRETING *
!* X=1/0 FOR EXAMPLE. CODE IS PLANTED FOR THESE FUNNIES *
==== ercc07/algtests_at10.txt ====
'BEGIN'
'PROCEDURE' P( ST, A ); 'STRING' ST, A;
;
P( <;'COMMENT'> )VALID:( <;> );
'COMMENT' COULD FAIL TOO FEW PARAMETERS;
'END'
==== ercc07/algtests_at11.txt ====
'BEGIN'
'REAL' X )INVALID PARAMETER LIKE COMMENTS:(Y;
X := Y := 0.0
'END'
==== ercc07/algtests_at12.txt ====
'BEGIN'
'PROCEDURE' Q( ST ) INVALID PARAMETER LIKE COMMENTS ( A );
'STRING' ST; 'REAL' A; ;
Q( <AZ> ) ALSO IN THE CALL( 1.0 )
'END'
==== ercc07/algtests_at13.txt ====
'BEGIN'
LABELSCANNOTPRECEEDCOMMENTS: 'COMMENT' SHOULD FAIL;
'GOTO' LABELSCANNOTPRECEEDCOMMENTS
'END'
==== ercc07/trimp_pnxptwoas.txt ====
%EXTERNALROUTINE ICL9CEZPNXIMP
%CONSTINTEGER RELEASE=4
%INCLUDE "ERCC07.TRIMP_HOSTCODES"
%CONSTINTEGER HOST=EMAS
%CONSTINTEGER TARGET=PNX
%CONSTINTEGER STANDARDPT=X'51'
%CONSTINTEGER MINAPT=X'51'; ! MINIMUM PTYPE FOR WHICH ARITHMETIC
! OPERATORS ARE AVAILABLE
%CONSTINTEGER MINAPREC=MINAPT>>4
%CONSTHALFINTEGERARRAY TYPEFLAG(0:12)=0,
X'51'{%INTEGER},
X'52'{%REAL},
X'8009'{%LONG SOMETHING},
X'4031'{%BYTE},
X'35'{%STRING},
X'4041'{%HALF},
X'6051'{%SHORT->%INTEGER+WARNING},
X'33'{%RECORD},
0,
X'1051'{%LONG INTEGER FAULT},
X'62'{%LONG REAL},
==== ercc07/algtests_at14.txt ====
'BEGIN'
'PROCEDURE' Q( ST )INVALID PARAMETER 'COMMENT' :( A );
'STRING' ST; 'REAL' A; ;
Q( <STR> ) AZ09:( 1.0 )
'END'
==== ercc07/algtests_at15.txt ====
'BEGIN'
'PROCEDURE' Q( ST1 )P:( ST2 ); 'COMMENT' ;
'STRING' ST1, ST2; ;
Q( <;'COMMENT' ) AZ: (>;> )INVALID:( <ST2> )
'END'
==== ercc07/gbits_gcodes5.txt ====
!*************************************************************************
!* *
!* Mnemonics for Gould code generator Version 5 18/04/87 *
!* *
!*************************************************************************
!*
%if Cpu = Concept %thenstart
!*
!*************************************************************************
!* *
!* Concept *
!* *
!*************************************************************************
!*
%constinteger L = 1 { RX }
%constinteger LM = 2 { RX }
%constinteger LN = 3 { RX }
%constinteger ST = 4 { RX }
%constinteger STM = 5 { RX }
%constinteger ZM = 6 { RX }
%constinteger ADM = 7 { RX }
==== ercc07/algtests_at16.txt ====
'BEGIN'
'COMMENT' STRING TESTS;
'PROCEDURE' P(ST);
'STRING'
ST;
;
P( <*STRING 'STRING' <NESTED<<>>> 'BEGIN' 'END';> );
P( < ,
> )
'END'
==== ercc07/idev22s.txt ====
! Changes for idev21
! 1) attempt to make recoverying FEPs easier
! 2) Clear subchannel on deallocation
! 3) Revised timeout handling with no sense
! 4) Discard of ints with halt or clear fn bit set (Did not happen nonXA)
! 5) Icorporation of deferred CC into PSEUDOTERM
!
!! 17-05-88 Semaphoring added for dual nass PDS
!09-09-85..statistics gathering for auscom
!05-09-85..use tio in case mag tape off-line..sh
%INCLUDE "ercc07:ibmsup_comf370"
%INCLUDE "ercc07:ibmsup_page0f"
%INCLUDE "ercc07:ibmsup_dtform2s"
%INCLUDE "ercc07:IBMSUP_xaioform"
%RECORD %FORMAT PARMF(%INTEGER DEST,SRCE,(%INTEGER P1,P2,P3,P4,P5,P6 %OR %STRING (23) TEXT))
%RECORD %FORMAT PARMXF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6,LINK)
%IF VA MODE=YES %START
%CONST %RECORD (PARMXF) %ARRAY %NAME PARM=PARM0AD
%FINISH %ELSE %START
!* %EXTERNALINTEGERSPEC parmad
%OWN %RECORD (PARMXF) %ARRAY %NAME PARM
==== ercc07/xgen27cs.txt ====
!* modified 16/07/86
!*
%owninteger Report=0
%owninteger Decode
%owninteger Language
!*
%constinteger IMP = 1
%constinteger FORTRAN = 2
%constinteger CCOMP = 11
%constinteger PASCAL = 14
!*
!***********************************************************************
!* Exports *
!***********************************************************************
!*
%routinespec Einitialise(%integer Lang, Avertext, Astackca,
Aglaca, Options)
%routinespec Eterminate(%integer adareasizes)
%routinespec Ecommon(%integer area, %stringname Name)
%routinespec Eendcommon(%integer area, Length)
%routinespec Elinestart(%integer lineno)
==== ercc07/algtests_at17.txt ====
'BEGIN'
'REAL'
REAL,
INTEGER,
BEGIN,
END;
REAL := 0.0
'END'
==== ercc07/opt02s.txt ====
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
! Opnd2 is either a 32 bit const with the size (ACC) as value or
! the ptr or arrayhead as normal operand.
!
! VMY X1 is now dim<<28!maxdim<<24!array name(where known)
! Opnd2 is either a 32 bit const with DV offset into const area or
! the arrayhead as a standard operand
!
! AINDX X1 is ELSIZE<<20 !spare
! Opnd2 is arrayhead as standard operand
! NOTE:- The Operands have been swopped for consistency with norm.
!
==== ercc07/algtests_at18.txt ====
'BEGIN'
'REAL'
A,
AB,
ABC,
ABCD,
ABCDE,
ABCDEF,
ABCDEFG,
ABCDEFGH,
ABCDEFGHI,
ABCDEFGHIJ,
ABCDEFGHIJK,
ABCDEFGHIJKL,
ABCDEFGHIJKLM,
ABCDEFGHIJKLMN,
ABCDEFGHIJKLNMO,
ABCDEFGHIJKLNMOP,
ABCDEFGHIJKLMNOPQ,
ABCDEFGHIJKLNMOPQR,
ABCDEFGHIJKLMNOPQRS,
==== ercc07/gbits_gcodes8.txt ====
!*************************************************************************
!* *
!* Mnemonics for Gould code generator Version 7 06/03/88 *
!* *
!*************************************************************************
!*
!*
!*************************************************************************
!* *
!* NP1 *
!* *
!*************************************************************************
!*
%constinteger L = 1 { RX }
%constinteger LBS = 2 { RX }
%constinteger LN = 3 { RX }
%constinteger ST = 4 { RX }
%constinteger ZM = 6 { RX }
%constinteger ADM = 7 { RX }
%constinteger ARM = 8 { RX }
%constinteger SUM = 9 { RX }
==== ercc07/algtests_at19.txt ====
'BEGIN'
'ARRAY'
A(/1 : 3/),
B(/1 : 3, 1 : 3/);
'REAL' 'PROCEDURE' SUM(DIM, A);
'VALUE'
DIM;
'INTEGER'
DIM;
'ARRAY'
A;
SUM :=
'IF' DIM = 1 'THEN'
A(/1/)+ A(/2/)+ A(/3/)
'ELSE'
SUM2(A);
'REAL' 'PROCEDURE' SUM2(A);
'ARRAY'
A;
SUM2 := A(/1, 1/)+ A(/1, 2/)+ A(/1, 3/)+ A(/2, 1/)+ A(/2, 2/)+
A(/2, 3/)+ A(/3, 1/)+ A(/3, 2/)+ A(/3, 3/);
==== ercc07/emaslink2.txt ====
LINK
EP1Y
EP22Y
EOPT2Y
EGEN2Y
CSERV01Y
.END
P0Y
MODIFY P0Y
SATISFY REFS
.ALL
SATISFY DATA
.ALL
SUPPRESS
.ALL
RETAIN
ICL9CEZIOPT
SUPPRESS DATA
.ALL
CLOSE
NEWGEN P0Y,IOPT02Y
==== ercc07/algtests_at20.txt ====
'BEGIN'
'INTEGER''ARRAY'
A(/1 : 3/),
B(/1 : 3, 1 : 3/);
'PROCEDURE' SUM(DIM, A);
'VALUE'
DIM;
'INTEGER'
DIM;
'INTEGER''ARRAY'
A;
SUM :=
'IF' DIM = 1 'THEN'
A(/1/)+ A(/2/)+ A(/3/)
'ELSE'
SUM2(A);
'PROCEDURE' SUM2(A);
'INTEGER''ARRAY'
A;
SUM2 := A(/1, 1/)+ A(/1, 2/)+ A(/1, 3/)+ A(/2, 1/)+ A(/2, 2/)+
A(/2, 3/)+ A(/3, 1/)+ A(/3, 2/)+ A(/3, 3/);
==== ercc07/algtests_at21.txt ====
'BEGIN'
'ARRAY'
A(/1 : 3/),
B(/1 : 3, 1 : 3/);
'REAL' 'PROCEDURE' SUM(DIM, A);
'VALUE'
DIM;
'INTEGER'
DIM;
'ARRAY'
A;
SUM :=
'IF' DIM = 1 'THEN'
(A(/1/)+ A(/2/)+ A(/3/))
'ELSE'
(A(/1, 1/)+ A(/1, 2/)+ A(/1, 3/)+ A(/2, 1/)+ A(/2, 2/)
+ A(/2, 3/)+ A(/3, 1/)+ A(/3, 2/)+ A(/3, 3/));
'INTEGER'
I,
J;
'FOR' I := 1,
==== ercc07/trimp_ibmoptas.txt ====
%INCLUDE "ERCC07.TRIMP_HOSTCODES"
%CONSTINTEGER HOST=EMAS
%CONSTINTEGER TARGET=IBMXA
==== ercc07/algtests_at22.txt ====
'BEGIN'
'PROCEDURE' RECURSIVE(LEVEL, L);
'VALUE'
LEVEL;
'INTEGER'
LEVEL;
'LABEL'
L;
'BEGIN'
'IF' LEVEL # 0 'THEN'
RECURSIVE(LEVEL - 1, EXIT)
'ELSE'
'GOTO' L;
EXIT :;
OUTREAL(99,LEVEL)
'END';
RECURSIVE(10, EXIT);
EXIT :;
'END'
==== ercc07/makedrs_p1.txt ====
offer dp1s
edit poneb02s,dp1s
i<itrimp_drsponeas>
ta/%inc/
d1i<itrimp_hostcodes>
a'
d1i<itrimp_tform2s>
m/%constlonglongreal/
ta/host=/r6i/DRS/
e
imp dp1s,.null
transfer dp1s,castle(ercc07,pete)impdir/sources/d386p1s10.i,file
==== ercc07/algtests_at23.txt ====
'BEGIN'
'INTEGER'
I;
'BOOLEAN'
B;
'PROCEDURE' LABELBYVALUE(L);
'VALUE'
L;
'LABEL'
L;
;
'PROCEDURE' LABELBYNAME(L);
'LABEL'
L;
'BEGIN'
I := 1;
'IF' B 'THEN'
'GOTO' L
'END';
'SWITCH' S :=
L1,
==== ercc07/makedrs_p2.txt ====
edit timp04s,dp2s
i<itrimp_drsptwoas>
ta/%inc/
d1i<itrimp_hostcodes>
a'
d1i<tripcnsts>
a'
d1i<itrimp_tform2s>
ta/host=/r6i/DRS/
e
parm nocheck,nolist
imp dp2s,.null
transfer dp2s,castle(ercc07,pete)impdir/sources/d386p2s11.i,file
==== ercc07/algtests_at24.txt ====
'BEGIN'
'ARRAY'
A(/1 : 9/);
'INTEGER'
I,
S;
'PROCEDURE' DUMMY(A);
'VALUE'
A;
'ARRAY'
A;
SUM(A);
'PROCEDURE' SUM(A);
'ARRAY'
A;
'FOR' I := 1 'STEP' 1 'UNTIL' 9 'DO'
'BEGIN'
S := S + A(/I/);
A(/I/):= 0
'END';
S := 0;
==== ercc07/algtests_at25.txt ====
'BEGIN'
'REAL'
X,
Y;
'INTEGER'
I;
'FOR' X := &6,
&+6,
&-6,
.6,
6,
6.6,
.6&6,
.6&+6,
.6&-6,
6&6,
6&+6,
6&-6,
6.6&6,
6.6&+6,
6.6&-6 'DO'
==== ercc07/vaxcom_ilinkd.txt ====
$ link/debug 'p1',i,penv,fortout,vndiag,sys$input/opt
sys$share:vaxcrtl.exe/share
==== ercc07/algtests_at26.txt ====
'BEGIN'
'PROCEDURE' P(L);
'INTEGER'
L;
L : 'BEGIN'
'REAL'
A;
'GOTO' L;
L :;
'GOTO' LL
'END';
P(1);
LL :;
'END'
==== ercc07/xgen27ds.txt ====
!* modified 16/07/86
!*
%owninteger Report=0
%owninteger Decode
%owninteger Language
!*
%constinteger IMP = 1
%constinteger FORTRAN = 2
%constinteger CCOMP = 11
%constinteger PASCAL = 14
!*
!***********************************************************************
!* Exports *
!***********************************************************************
!*
%routinespec Einitialise(%integer Lang, Avertext, Astackca,
Aglaca, Options)
%routinespec Eterminate(%integer adareasizes)
%routinespec Ecommon(%integer area, %stringname Name)
%routinespec Eendcommon(%integer area, Length)
%routinespec Elinestart(%integer lineno)
==== ercc07/algtests_at27.txt ====
'BEGIN'
'INTEGER'
S;
'PROCEDURE' P(F, G);
'PROCEDURE'
F,
G;
'BEGIN'
'INTEGER'
X;
'PROCEDURE' R;
'BEGIN'
OUTREAL(99, S);
OUTREAL(99, X)
'END';
S := S + 1;
X := S;
'IF' S = 1 'THEN'
P(F, R)
'ELSE'
F(G, R)
==== ercc07/opt03s.txt ====
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
! Opnd2 is either a 32 bit const with the size (ACC) as value or
! the ptr or arrayhead as normal operand.
!
! VMY X1 is now dim<<28!maxdim<<24!array name(where known)
! Opnd2 is either a 32 bit const with DV offset into const area or
! the arrayhead as a standard operand
!
! AINDX X1 is ELSIZE<<20 !spare
! Opnd2 is arrayhead as standard operand
! NOTE:- The Operands have been swopped for consistency with norm.
!
==== ercc07/algtests_at28.txt ====
'BEGIN'
'INTEGER'
N1,
N2;
'PROCEDURE' DUMMY;
;
'PROCEDURE' P(X, L);
'VALUE'
X;
'INTEGER'
X;
'PROCEDURE'
L;
'BEGIN'
'PROCEDURE' GOTOL1;
'GOTO' L1;
'IF' X = N1 'THEN'
P(X - 1, GOTOL1)
'ELSE'
'IF' X = N2 'THEN'
L
==== ercc07/trimp_drslink.txt ====
LINK
ERCC07.P1Y
ERCC07.DP2Y
ERCC07.DOPTY
ERCC07.DGENY
ERCC07.CSERV01Y
ERCS02.DRS_EPUTY
.END
P0Y
MODIFY P0Y
SATISFY REFS
.ALL
SATISFY DATA
.ALL
SUPPRESS
.ALL
RETAIN
PGENERATEDRSOBJECT,ICL9CEZDRSIMP
SUPPRESS DATA
.ALL
CLOSE
==== ercc07/algtests_at29.txt ====
'BEGIN'
'INTEGER'
S;
'PROCEDURE' P(F, G);
'PROCEDURE'
F,
G;'COMMENT'(X,Y):'PROCEDURE' X,Y;
'BEGIN'
'INTEGER'
X;
'PROCEDURE' R(F, G);
'PROCEDURE' F, G;'COMMENT'(X,Y):'PROCEDURE' X,Y;
'BEGIN'
OUTREAL(99, S);
OUTREAL(99, X)
'END';
S := S + 1;
X := S;
'IF' S = 1 'THEN'
P(F, R)
'ELSE'
==== ercc07/algtests_at30.txt ====
'BEGIN'
'INTEGER'
N1,
N2;
'PROCEDURE' P(X, L);
'VALUE'
X;
'INTEGER'
X;
'LABEL'
L;
'BEGIN'
'IF' X = N1 'THEN'
P(X - 1, L1)
'ELSE' 'IF' X = N2 'THEN'
'GOTO' L
'ELSE'
P(X - 1, L);
L1 :;
OUTREAL(99, X)
'END' P;
==== ercc07/algtests_at31.txt ====
'BEGIN'
'INTEGER'
I,
J;
I := J := 0;
I :=
'IF' I = 0 'THEN'
'IF' J = 0 'THEN'
1
'ELSE'
2
'ELSE'
3;
'IF' I = 1 'THEN'
'IF' J = 0 'THEN'
J := 2
'ELSE'
J := 3
'ELSE'
J := 4;
OUTREAL(99, I);
==== ercc07/algtests_at32.txt ====
'BEGIN'
'INTEGER'
I;
'REAL'
X;
'PROCEDURE' ASS(X, I);
'REAL'
X;
'INTEGER'
I;
'IF' I < 0 'THEN'
X := I + 3
'ELSE'
I := 2.0 * X;
ASS(X, - 1);
I := 2;
ASS(X, I);
ASS(I, I);
ASS(I, X);
OUTREAL(99, I);
OUTREAL(99, X)
==== ercc07/algtests_at33.txt ====
'BEGIN'
'PROCEDURE' A0;
'BEGIN'
'PROCEDURE' A1;
'BEGIN'
'PROCEDURE' A2;
'BEGIN'
'PROCEDURE' A3;
'BEGIN'
'PROCEDURE' A4;
'BEGIN'
'PROCEDURE' A5;
'BEGIN'
'END';
;
'END';
;'END';
;'END';
;'END';
;'END';
;'END'
==== ercc07/makepas.txt ====
edit ercs12:psource.main5s,totals
m/main program/m0
i<ercs12:psource.options8s>
i<ercs12:psource.source6s>
i<ercs12:psource.diags6s>
i<ercs12:psource.lexical4s>
i<ercs12:psource.syntax1s>
i<ercs12:psource.semantics8s>
i<ercs12:psource.analyser11s>
i<ercs12:psource.generator4s>
i<ercs12:psource.datareps9s>
i<ercs12:psource.storage15s>
i<ercs12:psource.objvalue10s>
i<ercs12:psource.blocks18s>
i<ercs12:psource.varref10s>
i<ercs12:psource.expeval11s>
i<ercs12:psource.codeutil23s>
i<ercs12:psource.assgncode6s>
i<ercs12:psource.withstmts2s>
i<ercs12:psource.stdprocs9s>
i<ercs12:psource.ctlstruc10s>
==== ercc07/powers.txt ====
%constinteger powerll=-78
! from ibm assembler which claims to evaluate exactly and round to 128 bits
%CONSTLONGLONGREALARRAY POWERS (-78:75)= %C
{Ten to the -78} R'001DA48CE468E7C772026520247D3556' ,
{Ten to the -77} R'011286D80EC190DC73617F3416CE4156' ,
{Ten to the -76} R'01B94470938FA89B73CEF808E40E8D5B' ,
{Ten to the -75} R'0273CAC65C39C96174615B058E891859' ,
{Ten to the -74} R'03485EBBF9A41DDC75DCD8E37915AF38' ,
{Ten to the -73} R'042D3B357C0692AA760A078E2BAD8D83' ,
{Ten to the -72} R'051C45016D841BAA774644B8DB4C7872' ,
{Ten to the -71} R'0611AB20E472914A786BEAF3890FCB47' ,
{Ten to the -70} R'06B0AF48EC79ACE878372D835A9DF0C7' ,
{Ten to the -69} R'076E6D8D93CC0C1179227C7218A2B67C' ,
{Ten to the -68} R'084504787C5F878A7AB58DC74F65B20E' ,
{Ten to the -67} R'092B22CB4DBBB4B67BB1789C919F8F49' ,
{Ten to the -66} R'0A1AF5BF109550F27C2EEB61DB03B98D' ,
{Ten to the -65} R'0B10D9976A5D52977D5D531D28E253F8' ,
{Ten to the -64} R'0BA87FEA27A539E97DA53F2398D747B3' ,
{Ten to the -63} R'0C694FF258C744327E0747763F868CD0' ,
{Ten to the -62} R'0D41D1F7777C8A9F7F448CA9E7B41802' ,
{Ten to the -61} R'0E29233AAAADD6A3008AD7EA30D08F01' ,
==== ercc07/algtests_at34.txt ====
'BEGIN' 'REAL' A;
'BEGIN' 'REAL' A;
'BEGIN' 'REAL' A;
'BEGIN' 'REAL' A;
'BEGIN' 'REAL' A;
'BEGIN' 'REAL' A;
'BEGIN' 'REAL' A;
'BEGIN' 'REAL' A;
'BEGIN' 'REAL' A;
'BEGIN' 'REAL' A;
'BEGIN' 'REAL' A;
'BEGIN' 'REAL' A;
'BEGIN' 'REAL' A;
'BEGIN' 'REAL' A;
'BEGIN' 'REAL' A;
'END'
'END'
'END'
'END'
'END'
'END'
==== ercc07/vaxput1s.txt ====
!*****************************
!* *
!* Vax VMS PUT INTERFACE *
!* *
!*****************************
!
! Put interface for VAX VMS copyright P.D.Stephens
!
! The problem of a put for VMS is dominated by two problems
! 1) The horrendous object module format which must be tholed
! 2) The jumps which can be short or long PC relative or absolute
! with the horrid proviso that even the long jump may not reach
! and absolute jumps are unconditional. Thus put has to
! be prepared to change jumps to jumps around a long jump.
!
! Outline of a solution
! Code and data is recieved in fragments and built up in areas as images
! The areas are as defined by EMAS and apart from code built up as images
! in space obtained by malloc or eqivalent. The areas start small and are
! expanded if required.
==== ercc07/algtests_at35.txt ====
'BEGIN'
'REAL'
A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12,
A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24,
A25, A26, A27, A28, A29, A30, A31, A32, A33, A34, A35, A36,
A37, A38, A39, A40, A41, A42, A43, A44, A45, A46, A47,
A48, A49, A50, A51, A52, A53, A54, A55, A56, A57, A58,
A59, A60, A61, A62, A63, A64, A65, A66, A67, A68, A69,
A70, A71, A72, A73, A74, A75, A76, A77, A78, A79, A80,
A81, A82, A83, A84, A85, A86, A87, A88, A89, A90, A91,
A92, A93, A94, A95, A96, A97, A98, A99, A100, A101,
A102, A103, A104, A105, A106, A107, A108, A109, A110,
A111, A112, A113, A114, A115, A116, A117, A118, A119,
A120, A121, A122, A123, A124, A125, A126, A127, A128,
A129, A130, A131, A132, A133, A134, A135, A136, A137,
A138, A139, A140, A141, A142, A143, A144, A145, A146,
A147, A148, A149, A150, A151, A152, A153, A154, A155,
A156, A157, A158, A159, A160, A161, A162, A163, A164,
A165, A166, A167, A168, A169, A170, A171, A172, A173,
A174, A175, A176, A177, A178, A179, A180, A181, A182,
A183, A184, A185, A186, A187, A188, A189, A190, A191,
==== ercc07/algtests_at36.txt ====
SIN: COS:
'BEGIN'
'REAL' SIN;
SIN := 0.0
'END'
==== ercc07/trimp_ibmptwoas.txt ====
%EXTERNALROUTINE ICL9CEZIBMIMP
%CONSTINTEGER RELEASE=4
%INCLUDE "ERCC07.TRIMP_HOSTCODES"
%CONSTINTEGER HOST=EMAS
%CONSTINTEGER TARGET=IBMXA
%CONSTINTEGER STANDARDPT=X'51'
%CONSTINTEGER MINAPT=X'51'; ! MINIMUM PTYPE FOR WHICH ARITHMETIC
! OPERATORS ARE AVAILABLE
%CONSTINTEGER MINAPREC=MINAPT>>4
%CONSTHALFINTEGERARRAY TYPEFLAG(0:12)=0,
X'51'{%INTEGER},
X'52'{%REAL},
X'8009'{%LONG SOMETHING},
X'4031'{%BYTE},
X'35'{%STRING},
X'6051'{%HALF->%INTEGER+WARNING},
X'4041'{%SHORT->%SHORTINTEGER},
X'33'{%RECORD},
0,
X'61'{%LONG INTEGER},
X'62'{%LONG REAL},
==== ercc07/docs_mar83.txt ====
EMAS System
===========
The main changes to the software have concerned DAP scheduling; however, a
new Director which supports multiple file indexes per user has been put into
service. This is currently inaccessible until a subsystem which accesses these
features is available. A distressing amount of skilled time has disappeared in
investigating curious faults in the service. Many symptoms have been tracked to
OCP3 executing conditional branches incorrectly about 1 time in 10**9. However,
with the reduced level of engineering cover and fewer OCP specialists around too
much effort here has fallen on software people.
The discussions at Bush83 were encouraging, particularly the near support
for an advanced user interface; a collection of bad features in the present
system has been compiled together with a large number of possible ideas and
improvements. Contacts with UKC have proved helpful but producing a coherent
design from the very large kit of parts is difficult. Enough material for
several subsystems is available and many good ideas will perforce have to be
rejected.
Further rounds of discussions have taken place with ICL about their future
==== ercc07/make386_opt.txt ====
offer d386pos
edit opt03s,d386pos
i<itrimp_drsoptas>
ta/%inc/
d1i<itrimp_hostcodes>
a'
d1i<itrimp_tform2s>
a'
d1i<tripcnsts>
e
imp d386pos,.null
offer d386pos,zepz06
==== ercc07/xgen27es.txt ====
!* modified 16/07/86
!*
%owninteger Report=0
%owninteger Decode
%owninteger Language
!*
%constinteger IMP = 1
%constinteger FORTRAN = 2
%constinteger CCOMP = 11
%constinteger PASCAL = 14
!*
!***********************************************************************
!* Exports *
!***********************************************************************
!*
%routinespec Einitialise(%integer Lang, Avertext, Astackca,
Aglaca, Options)
%routinespec Eterminate(%integer adareasizes)
%routinespec Ecommon(%integer area, %stringname Name)
%routinespec Eendcommon(%integer area, Length)
%routinespec Elinestart(%integer lineno)
==== ercc07/algtests_at37.txt ====
'BEGIN'
'INTEGER'
A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11;
'INTEGER'
SUM;
SUM := 0;
'FOR' A0 := 1,2 'DO' 'BEGIN' SUM := SUM + 1;
'FOR' A1 := 1,2 'DO' 'BEGIN' SUM := SUM + 1;
'FOR' A2 := 1,2 'DO' 'BEGIN' SUM := SUM + 1;
'FOR' A3 := 1,2 'DO' 'BEGIN' SUM := SUM + 1;
'FOR' A4 := 1,2 'DO' 'BEGIN' SUM := SUM + 1;
'FOR' A5 := 1,2 'DO' 'BEGIN' SUM := SUM + 1;
'FOR' A6 := 1,2 'DO' 'BEGIN' SUM := SUM + 1;
'FOR' A7 := 1,2 'DO' 'BEGIN' SUM := SUM + 1;
'FOR' A8 := 1,2 'DO' 'BEGIN' SUM := SUM + 1;
'FOR' A9 := 1,2 'DO' 'BEGIN' SUM := SUM + 1;
'FOR' A10 := 1,2 'DO' 'BEGIN' SUM := SUM + 1;
'FOR' A11 := 1,2 'DO' 'BEGIN' SUM := SUM + 1;
'END'
'END'
'END'
==== ercc07/opt04s.txt ====
!
! 25Sep90 Correction to base adjust array in ctop which was wrong
!
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
! Opnd2 is either a 32 bit const with the size (ACC) as value or
! the ptr or arrayhead as normal operand.
!
! VMY X1 is now dim<<28!maxdim<<24!array name(where known)
! Opnd2 is either a 32 bit const with DV offset into const area or
! the arrayhead as a standard operand
!
! AINDX X1 is ELSIZE<<20 !spare
==== ercc07/algtests_at38.txt ====
'BEGIN'
'INTEGER'
I,
J,
SUM;
I := 1;
J := 2;
SUM := 0;
'IF' I > J 'THEN''BEGIN'
'END' 'ELSE' 'BEGIN' SUM := SUM + 1;
'IF' I > J 'THEN''BEGIN'
'END' 'ELSE' 'BEGIN' SUM := SUM + 1;
'IF' I > J 'THEN''BEGIN'
'END' 'ELSE' 'BEGIN' SUM := SUM + 1;
'IF' I > J 'THEN''BEGIN'
'END' 'ELSE' 'BEGIN' SUM := SUM + 1;
'IF' I > J 'THEN''BEGIN'
'END' 'ELSE' 'BEGIN' SUM := SUM + 1;
'IF' I > J 'THEN''BEGIN'
'END' 'ELSE' 'BEGIN' SUM := SUM + 1;
'IF' I > J 'THEN''BEGIN'
==== ercc07/algtests_at39.txt ====
'BEGIN'
'INTEGER'
I,
J,
SUM;
I := 1;
J := 2;
SUM := 1 + ('IF' I > J 'THEN'0 'ELSE' ('IF' I > J 'THEN'0 'ELSE'
('IF' I > J 'THEN'0 'ELSE' ('IF' I > J 'THEN'0 'ELSE' ('IF' I
> J 'THEN'0 'ELSE' ('IF' I > J 'THEN'0 'ELSE' ('IF' I > J
'THEN'0 'ELSE' ('IF' I > J 'THEN'0 'ELSE' ('IF' I > J 'THEN'
0 'ELSE' 1)))))))));
OUTREAL(99, SUM);
'END'
==== ercc07/algtests_at40.txt ====
'BEGIN'
'SWITCH' SS :=
A0, A1, A2, A3, A4, A5, A6, A7, A8, A9,
A10, A11, A12, A13, A14, A15, A16, A17, A18, A19,
A20, A21, A22, A23, A24, A25, A26, A27, A28, A29,
A30, A31, A32, A33, A34, A35, A36, A37, A38, A39,
A40, A41, A42, A43, A44, A45, A46, A47, A48, A49,
A50, A51, A52, A53, A54, A55, A56, A57, A58, A59,
A60, A61, A62, A63, A64, A65, A66, A67, A68, A69,
A70, A71, A72, A73, A74, A75, A76, A77, A78, A79,
A80, A81, A82, A83, A84, A85, A86, A87, A88, A89,
A90, A91, A92, A93, A94, A95, A96, A97, A98, A99,
A100, A101, A102, A103, A104, A105, A106, A107, A108, A109,
A110, A111, A112, A113, A114, A115, A116, A117, A118, A119,
A120, A121, A122, A123, A124, A125, A126, A127, A128, A129,
A130, A131, A132, A133, A134, A135, A136, A137, A138, A139,
A140, A141, A142, A143, A144, A145, A146, A147, A148, A149,
A150, A151, A152, A153, A154, A155, A156, A157, A158, A159,
A160, A161, A162, A163, A164, A165, A166, A167, A168, A169,
A170, A171, A172, A173, A174, A175, A176, A177, A178, A179,
A180, A181, A182, A183, A184, A185, A186, A187, A188, A189,
==== ercc07/pdriver14s.txt ====
{****************************************************************************}
{ }
{ System dependent routines. }
{ }
{****************************************************************************}
%externalstring(255)%fnspec uinfs %alias "S#UINFS"(%integer n)
%EXTERNAL %ROUTINE %SPEC Define %ALIAS "S#DEFINE"(%INTEGER channel,
%STRING (255) File, %INTEGER %NAME Afd,Flag)
%externalintegerfnspec IOCP %alias "S#IOCP"(%integer ep,adr)
%EXTERNAL %INTEGER %MAP %SPEC ComReg %ALIAS "S#COMREGMAP"(%INTEGER N)
%EXTERNAL %ROUTINE %SPEC ICLpascalcompiler
%ROUTINE %SPEC InitialiseCompiler
%EXTERNAL %ROUTINE %SPEC EMAS3ClaimChannel(%INTEGER %NAME Chan)
%EXTERNAL %ROUTINE %SPEC Eproc(%STRING %NAME Name, %INTEGER Prop,Numpars,
Paramsize,Astacklen, %INTEGER %NAME Id)
%EXTERNAL %ROUTINE %SPEC Eentry(%INTEGER Index,Numpars,ParamSize,LocalSize,
DiagDisp, %STRING %NAME Name)
%EXTERNAL %INTEGER %FN %SPEC Exname(%INTEGER Type, %STRING %NAME Xref)
%EXTERNAL %ROUTINE %SPEC Edataentry(%INTEGER Area,Offset,Length,
%STRING %NAME Name)
==== ercc07/algtests_at41.txt ====
'BEGIN'
'INTEGER' 'PROCEDURE' P(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9,
A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20,
A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31,
A32, A33, A34, A35, A36, A37, A38, A39, A40, A41, A42,
A43, A44, A45, A46, A47, A48, A49, A50, A51, A52, A53,
A54, A55, A56, A57, A58, A59);
'VALUE'
A0, A1, A2, A3, A4, A5, A6, A7, A8, A9,
A10, A11, A12, A13, A14, A15, A16, A17, A18, A19,
A20, A21, A22, A23, A24, A25, A26, A27, A28, A29,
A30, A31, A32, A33, A34, A35, A36, A37, A38, A39,
A40, A41, A42, A43, A44, A45, A46, A47, A48, A49,
A50, A51, A52, A53, A54, A55, A56, A57, A58, A59;
'INTEGER'
A0, A1, A2, A3, A4, A5, A6, A7, A8, A9,
A10, A11, A12, A13, A14, A15, A16, A17, A18, A19,
A20, A21, A22, A23, A24, A25, A26, A27, A28, A29,
A30, A31, A32, A33, A34, A35, A36, A37, A38, A39,
A40, A41, A42, A43, A44, A45, A46, A47, A48, A49,
A50, A51, A52, A53, A54, A55, A56, A57, A58, A59;
==== ercc07/docs_emasprot.txt ====
@h(Protection in EMAS 2900)
[This document is in the form of an addendum to Reference 1.]
2900 Architecture provides a variety of methods to enable an operating system
to maintain its own integrity.
a) @b(Privilege). A bit in the PSW is required to execute
privileged instructions.
b) @b(Activate). A privileged instruction to start executing
a less trusted program at a lower ACR level and on a new
stack.
c) @b(Out). An instruction exactly comparable to the IBM @b(SVC).
Enables an untrusted program to return to Supervisor in a
controlled and secure way.
d) @b(ACR levels). Four bits in the @b(PSW) define the @b("Access)
@b(Control") status of the running program. All store accesses
==== ercc07/algtests_at42.txt ====
'BEGIN'
'ARRAY'
A(/1 : 2, 1 : 2, 1 : 2, 1 : 2, 1 : 2, 1 : 2, 1 : 2, 1 :
2, 1 : 2, 1 : 2, 1 : 2, 1 : 2/);
A(/1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1/):= 1.0;
OUTREAL(99, A(/1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1/));
'END'
==== ercc07/algtests_at43.txt ====
'BEGIN'
'REAL'
A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14;
'REAL'
SUM;
A0 := 1.0; A1 := 1.0; A2 := 1.0;
A3 := 1.0; A4 := 1.0; A5 := 1.0;
A6 := 1.0; A7 := 1.0; A8 := 1.0;
A9 := 1.0; A10 := 1.0; A11 := 1.0;
A12 := 1.0; A13 := 1.0; A14 := 1.0;
SUM := A0 + (A1 + (A2 + (A3 + (A4 + (A5 + (A6 + (A7 + (A8 + (A9
+ (A10 + (A11 + (A12 + (A13 + (A14))))))))))))));
OUTREAL(99, SUM);
'END'
==== ercc07/algtests_at44.txt ====
'BEGIN'
'REAL'
A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14;
'REAL'
SUM;
A0 := 1.0; A1 := 1.0; A2 := 1.0;
A3 := 1.0; A4 := 1.0; A5 := 1.0;
A6 := 1.0; A7 := 1.0; A8 := 1.0;
A9 := 1.0; A10 := 1.0; A11 := 1.0;
A12 := 1.0; A13 := 1.0; A14 := 1.0;
SUM := 2.0 * A0 + .5 * (2.0 * A1 + .5 * (2.0 * A2 + .5 * (2.0
* A3 + .5 * (2.0 * A4 + .5 * (2.0 * A5 + .5 * (2.0 * A6
+ .5 * (2.0 * A7 + .5 * (2.0 * A8 + .5 * (2.0 * A9 + .5
* (2.0 * A10 + .5 * (2.0 * A11 + .5 * (2.0 * A12 + .5 *
(2.0 * A13 + .5 * (A14))))))))))))));
OUTREAL(99, SUM);
'END'
==== ercc07/vaxput2s.txt ====
!*****************************
!* *
!* Vax VMS PUT INTERFACE *
!* *
!*****************************
!
! Put interface for VAX VMS copyright P.D.Stephens
!
! The problem of a put for VMS is dominated by two problems
! 1) The horrendous object module format which must be tholed
! 2) The jumps which can be short or long PC relative or absolute
! with the horrid proviso that even the long jump may not reach
! and absolute jumps are unconditional. Thus put has to
! be prepared to change jumps to jumps around a long jump.
!
! Outline of a solution
! Code and data is recieved in fragments and built up in areas as images
! The areas are as defined by EMAS and apart from code built up as images
! in space obtained by malloc or eqivalent. The areas start small and are
! expanded if required.
==== ercc07/algtests_at45.txt ====
'BEGIN'
'REAL'
X;
X := 8.4;
OUTREAL(99,
SQRT(SQRT(SQRT(SQRT(SQRT(SQRT(SQRT(SQRT(SQRT(X^9)))))))))
);
'END'
==== ercc07/algtests_at46.txt ====
'BEGIN'
'INTEGER'
I,
J;
I := 1;
J := 2;
L1 :;
'GOTO'
'IF' I > J 'THEN'L1
'ELSE' 'IF' I > J 'THEN'L1
'ELSE' 'IF' I > J 'THEN'L1
'ELSE' 'IF' I > J 'THEN'L1
'ELSE' 'IF' I > J 'THEN'L1
'ELSE' 'IF' I > J 'THEN'
L1
'ELSE'
L2;
L2 :;
'END'
==== ercc07/algtests_at47.txt ====
'BEGIN'
A0 :; A1 :; A2 :; A3 :; A4 :; A5 :;
'END'
==== ercc07/algtests_at48.txt ====
'BEGIN'
'INTEGER'
SUM;
SUM := 0;
'BEGIN' SUM := SUM + 1;
'BEGIN' SUM := SUM + 1;
'BEGIN' SUM := SUM + 1;
'BEGIN' SUM := SUM + 1;
'BEGIN' SUM := SUM + 1;
'BEGIN' SUM := SUM + 1;
'BEGIN' SUM := SUM + 1;
'BEGIN' SUM := SUM + 1;
'BEGIN' SUM := SUM + 1;
'BEGIN' SUM := SUM + 1;
'BEGIN' SUM := SUM + 1;
'BEGIN' SUM := SUM + 1;
'BEGIN' SUM := SUM + 1;
'BEGIN' SUM := SUM + 1;
'BEGIN' SUM := SUM + 1;
'BEGIN' SUM := SUM + 1;
'BEGIN' SUM := SUM + 1;
==== ercc07/algtests_at49.txt ====
'BEGIN'
'REAL'
A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14;
A0 := A1 := A2 := A3 := A4 := A5 := A6 := A7 := A8 :=
A9 := A10 := A11 := A12 := A13 := A14 := 1.0;
OUTREAL(99, A0 + A1 + A2 + A3 + A4 + A5 + A6 + A7 + A8 + A9 + A10
+ A11 + A12 + A13 + A14);
'END'
==== ercc07/docs_divfac.txt ====
Divinity Faculty
Current computing in divinity is text orientated and heavily influenced by
the need to have English Hebrew and Greek in the same document or even ion the
same page. This requires highly specialized word processing which is mainly
performed on IBM PCs.
a) Computing in Research
In addition to word processing there is considerable
concordance, searching and statistical analysis performed on ancient texts. Some of
these are held on EMAS others on the IBYCUS micro with local CD rom. There is
also continuing use of electronic mail for co-operation both in the UK
and world wide.
b) Computer in teaching
There is a trial project to assist students learning Greek Grammar by a question
and answer technique that has been devised locally. Students also have access
to a version of the Greek New Testament where every word has been grammatically
==== ercc07/algtests_at50.txt ====
'BEGIN'
'INTEGER'
I,
SUM;
SUM := 0;
'FOR' I := 1, I + 1, I + 1, I + 1, I + 1, I + 1,
I + 1, I + 1, I + 1, I + 1, I + 1, I + 1,
I + 1, I + 1, I + 1, I + 1, I + 1, I + 1,
I + 1, I + 1, I + 1, I + 1, I + 1, I + 1,
I + 1, I + 1, I + 1, I + 1, I + 1, I + 1,
I + 1, I + 1, I + 1, I + 1, I + 1, I + 1,
I + 1, I + 1, I + 1, I + 1, I + 1, I + 1,
I + 1, I + 1, I + 1, I + 1, I + 1, I + 1,
I + 1, I + 1, I + 1, I + 1, I + 1, I + 1,
I + 1, I + 1, I + 1, I + 1, I + 1, I + 1 'DO'
SUM := SUM + I;
OUTREAL(99, SUM);
'END'
==== ercc07/docs_may85.txt ====
Central Systems Group
Although the impression seems to be around that the sole raison d'etre of
CSG is to write ever more sophisticated operating systems, it is the other
activities that absorbed most effort this term.
1) The Filestore is receiving substantial software effort in preparation
for direct attachment to the CPSE. This involves a change of communication
protocols from NSI to X25.
2) The 2976 has had a spate of crashes due primarily to faults in the DAPs
when acting as store. DAP store appears to go incommunicado after certain
hardware faults unlike normal store. To live through such faults the
Supervisor has been altered to ensure all vital pages are kept out of DAP
store and EMAS now runs through DAP multibit failures.
3) The 2988 is about to move to Kings Buildings and share peripherals with
the 2976. The changes needed to device driving and archiving strategies to
accommodate shared peripherals are being evaluated.
==== ercc07/pdriver15s.txt ====
{****************************************************************************}
{ }
{ System dependent routines. }
{ }
{****************************************************************************}
%externalstring(255)%fnspec uinfs %alias "S#UINFS"(%integer n)
%EXTERNAL %ROUTINE %SPEC Define %ALIAS "S#DEFINE"(%INTEGER channel,
%STRING (255) File, %INTEGER %NAME Afd,Flag)
%externalintegerfnspec IOCP %alias "S#IOCP"(%integer ep,adr)
%EXTERNAL %INTEGER %MAP %SPEC ComReg %ALIAS "S#COMREGMAP"(%INTEGER N)
%EXTERNAL %ROUTINE %SPEC ICLpascalcompiler
%ROUTINE %SPEC InitialiseCompiler
%EXTERNAL %ROUTINE %SPEC EMAS3ClaimChannel(%INTEGER %NAME Chan)
%EXTERNAL %ROUTINE %SPEC Eproc %alias "E#PROC" (%STRING %NAME Name, %INTEGER Prop,Numpars,
Paramsize,Astacklen, %INTEGER %NAME Id)
%EXTERNAL %ROUTINE %SPEC Eentry%alias "E#ENTRY" (%INTEGER Index,Numpars,ParamSize,LocalSize,
DiagDisp, %STRING %NAME Name)
%EXTERNAL %INTEGER %FN %SPEC Exname %alias "E#XNAME" (%INTEGER Type, %STRING %NAME Xref)
%EXTERNAL %ROUTINE %SPEC Edataentry %alias "E#DATAENTRY" (%INTEGER Area,Offset,Length,
%STRING %NAME Name)
==== ercc07/algtests_at51.txt ====
'BEGIN'
'ARRAY'
A0(/1 : 10/), A1(/1 : 10/), A2(/1 : 10/), A3(/1 : 10/),
A4(/1 : 10/), A5(/1 : 10/), A6(/1 : 10/), A7(/1 : 10/),
A8(/1 : 10/), A9(/1 : 10/), A10(/1 : 10/), A11(/1 : 10/),
A12(/1 : 10/), A13(/1 : 10/), A14(/1 : 10/), A15(/1 : 10/),
A16(/1 : 10/), A17(/1 : 10/), A18(/1 : 10/), A19(/1 : 10/),
A20(/1 : 10/), A21(/1 : 10/), A22(/1 : 10/), A23(/1 : 10/),
A24(/1 : 10/), A25(/1 : 10/), A26(/1 : 10/), A27(/1 : 10/),
A28(/1 : 10/), A29(/1 : 10/), A30(/1 : 10/), A31(/1 : 10/),
A32(/1 : 10/), A33(/1 : 10/), A34(/1 : 10/), A35(/1 : 10/),
A36(/1 : 10/), A37(/1 : 10/), A38(/1 : 10/), A39(/1 : 10/),
A40(/1 : 10/), A41(/1 : 10/), A42(/1 : 10/), A43(/1 : 10/),
A44(/1 : 10/), A45(/1 : 10/), A46(/1 : 10/), A47(/1 : 10/),
A48(/1 : 10/), A49(/1 : 10/), A50(/1 : 10/), A51(/1 : 10/),
A52(/1 : 10/), A53(/1 : 10/), A54(/1 : 10/), A55(/1 : 10/),
A56(/1 : 10/), A57(/1 : 10/), A58(/1 : 10/), A59(/1 : 10/);
A0(/1/):= 1.0; A1(/1/):= 1.0; A2(/1/):= 1.0; A3(/1/):= 1.0;
A4(/1/):= 1.0; A5(/1/):= 1.0; A6(/1/):= 1.0; A7(/1/):= 1.0;
A8(/1/):= 1.0; A9(/1/):= 1.0; A10(/1/):= 1.0; A11(/1/):= 1.0;
A12(/1/):= 1.0; A13(/1/):= 1.0; A14(/1/):= 1.0; A15(/1/):= 1.0;
==== ercc07/algtests_at52.txt ====
'BEGIN'
'INTEGER' 'PROCEDURE' IABS(I);
'VALUE'
I;
'INTEGER'
I;
IABS :=
'IF' I < 0 'THEN'
- I
'ELSE'
I;
'INTEGER'
I,
J,
K;
I := J := K := 1;
'BEGIN'
'ARRAY'
A(/('IF' IABS(J * K 'DIV' I) > 3 * I - K 'THEN'- 60 'ELSE' 1) :
('IF' IABS(J * K 'DIV' I) > 3 * I - K 'THEN'- 60 'ELSE' 1)
* 3.0 - 1.6 + 10.2/),
==== ercc07/algtests_at53.txt ====
'BEGIN'
'INTEGER'
I,
J;
'FOR' I := - 2,
- 1,
1,
2 'DO'
'FOR' J := - 2 'STEP' 1 'UNTIL' 2 'DO'
'IF' J 'DIV' I # SIGN(J / I) * ENTIER(ABS(J / I))
'THEN'
'BEGIN'
OUTREAL(99, J);
OUTREAL(99, I);
OUTREAL(99, J 'DIV' I)
'END';
'END'
==== ercc07/algtests_at54.txt ====
'BEGIN'
'INTEGER' 'PROCEDURE' TSIGN(X);
'VALUE'
X;
'REAL'
X;
TSIGN :=
'IF' X > 0 'THEN'
1
'ELSE' 'IF' X < 0 'THEN'
- 1
'ELSE'
0;
'INTEGER' 'PROCEDURE' TENTIER(X);
'VALUE'
X;
'REAL'
X;
TENTIER := X - .5;
'REAL' 'PROCEDURE' TABS(X);
'VALUE'
==== ercc07/vaxput3s.txt ====
!*****************************
!* *
!* Vax VMS PUT INTERFACE *
!* *
!*****************************
!
! Put interface for VAX VMS copyright P.D.Stephens
!
! The problem of a put for VMS is dominated by two problems
! 1) The horrendous object module format which must be tholed
! 2) The jumps which can be short or long PC relative or absolute
! with the horrid proviso that even the long jump may not reach
! and absolute jumps are unconditional. Thus put has to
! be prepared to change jumps to jumps around a long jump.
!
! Outline of a solution
! Code and data is recieved in fragments and built up in areas as images
! The areas are as defined by EMAS and apart from code built up as images
! in space obtained by malloc or eqivalent. The areas start small and are
! expanded if required.
==== ercc07/algtests_at55.txt ====
'BEGIN'
'INTEGER' 'ARRAY'
EQ(/1 : 9/);
'INTEGER'
I;
'REAL'
X,
Y;
'PROCEDURE' PRINT EQ;
'FOR' I := 1 'STEP' 1 'UNTIL' 9 'DO'
OUTREAL(99, EQ(/I/));
'PROCEDURE' TEST(A, B, C);
'VALUE'
A,
B,
C;
'REAL'
A,
B,
C;
'BEGIN'
==== ercc07/ebits_especs4h.txt ====
%externalroutine Einitialise %alias"E#INITIALISE"(%integer Lang,Aver,Astackca,Aglaca,options)
%externalroutine Eterminate %alias"E#TERMINATE"(%integer adareasizes)
%externalroutine Ecommon %alias"E#COMMON"(%integer area,%stringname Name)
%externalroutine Eendcommon %alias"E#ENDCOMMON"(%integer area,Length)
%externalroutine Elinestart %alias"E#LINESTART"(%integer lineno)
%externalroutine Elinedecode %alias"E#LINEDECODE"
%externalintegerfn Estkmarker %alias"E#STKMARKER"
%externalroutine Esetmarker %alias"E#SETMARKER"(%integer Markerid,New Value)
%externalintegerfn Eswapmode %alias"E#SWAPMODE"
%externalroutine Emonon %alias"E#MOMON"
%externalroutine Emonoff %alias"E#MONOFF"
%externalroutine Efaulty %alias"E#FAULTY"
%externalroutine Estklit %alias"E#STKLIT"(%integer Val)
%externalroutine Estkconst %alias"E#STKCONST"(%integer Len,Ad)
%externalroutine Estkrconst %alias"E#STKRCONST"(%integer Len,Ad)
%externalroutine Estkdir %alias"E#STKDIR"(%integer Area,Offset,Adid,Bytes)
%externalroutine Estkind %alias"E#STKIND"(%integer Area,Offset,Adid,Bytes)
%externalroutine Estkglobal %alias"E#STKGLOBAL"(%integer Level,Offset,Adid,Bytes)
%externalroutine Estkglobalind %alias"E#STKGLOBALIND"(%integer Level,Offset,Adid,Bytes)
%externalroutine Estkgind %alias"E#STKIND"(%integer Level,Offset,Adid,Bytes)
%externalroutine Estkpar %alias"E#STKPAR"(%integer Level,Offset,Adid,Bytes)
==== ercc07/docs_stratbit.txt ====
@make[report]
@majorheading[Developments in Computing Technology]
The following section indicates the assumptions made by the University in
drawing up this document. It is of course subject to the normal hazards
of forcasting changes in technology.
@subheading[a) Processor & Storage]
It is expected that chip advances will reduce the cost of processing power
and main store over the period. Work stations are expected to get much
cheaper; entry level micros will stay about current prices but have
improvements in cpu speed and storage. The distinction between personal
micro and work stations will disappear.
Mainframe machines will also become cheaper under threat from both the
100 Mip personal machine and highly parallel machines like the computing
surface. Main frames will have vector processors almost as a matter of
course although proper exploration of these will involve the use of very
complex (and expensive) compilers.
@subheading[b) Backing Store]
Rotating Discs and industry standard magnetic tapes seem likely to
dominate backing storage for some years to come. Packing densities will
increase providing for some reductions in cost per megabyte stored. As
==== ercc07/algtests_at56.txt ====
'BEGIN'
'INTEGER'
I,
J,
CASE;
'REAL'
X,
Y;
'PROCEDURE' REQUAL(A, B);
'VALUE'
A,
B;
'REAL'
A,
B;
'IF' A # B 'THEN'
'BEGIN'
OUTREAL(99, A);
OUTREAL(99, B);
OUTREAL(99, CASE)
'END'
==== ercc07/algtests_at57.txt ====
'BEGIN'
'INTEGER'
I;
'REAL'
X;
I := 0;
X := 0.0;
OUTREAL(99, X^I)
'END'
==== ercc07/algtests_at58.txt ====
'BEGIN'
'INTEGER'
I;
I := 0;
OUTREAL(99, I^I)
'END'
==== ercc07/algtests_at59.txt ====
'BEGIN'
'REAL'
X;
X := - 1.0;
OUTREAL(99, 0.0^X)
'END'
==== ercc07/algtests_at60.txt ====
'BEGIN'
'REAL'
X;
X := - 1.0;
OUTREAL(99, 0^X)
'END'
==== ercc07/ebits_enames1.txt ====
!* enames1 02/11/85
!*
%conststring(9)%array Eopname(0:255) = %c
{00} "HALT","IADD","ISUB","IMULT", "IDIV" ,"INEG" ,"IABS" ,"IREM" ,
{08} "IAND","IOR" ,"INOT","IXOR" , "ISHLL","ISHRL","ISHLA","ISHRA",
{10} "IGT" ,"ILT" ,"IEQ" ,"INE" , "IGE" ,"ILE" ,"" ,"" ,
{18} "JIGT","JILT","JIEQ","JINE" , "JIGE" ,"JILE" ,"JINTGZ","JINTLZ",
{20} "JINTZ","JINTNZ","JINTGEZ","JINTLEZ", "ITWB" ,"","JUMP","",
{28} "" ,"SFA" ,"RETURN" ,"ASF" , "IPUSH" ,"IPOP" ,"EXCH" ,"DUPL",
{30} "DISCARD","" ,"" ,"INDEX1", "INDEX2","INDEX4","INDEX8","INDEX",
{38} "MVB" ,"CHK" ,"TMASK" ,"" , "" ,"" ,"CPBGT" ,"CPBLT",
{40} "CPBEQ" ,"CPBNE","CPBGE","CPBLE" , "","","","",
{48} "","","","", "","","","",
{50} "","","","", "","","","",
{58} "","","","", "","","","",
{60} "","","","", "","","","",
{68} "","","","", "","","","",
{70} "" ,"RADD" ,"RSUB" ,"RMULT","RDIV" ,"RNEG" ,"RABS","" ,
{78} "","","","", "","","","",
{80} "","","","", "","","","",
{88} "CVTII","CVTIR","CVTRR","TNCRI", "RNDRI","","","",
==== ercc07/pdriver16s.txt ====
{****************************************************************************}
{ }
{ System dependent routines. }
{ }
{****************************************************************************}
%externalstring(255)%fnspec uinfs %alias "S#UINFS"(%integer n)
%EXTERNAL %ROUTINE %SPEC Define %ALIAS "S#DEFINE"(%INTEGER channel,
%STRING (255) File, %INTEGER %NAME Afd,Flag)
%externalintegerfnspec IOCP %alias "S#IOCP"(%integer ep,adr)
%EXTERNAL %INTEGER %MAP %SPEC ComReg %ALIAS "S#COMREGMAP"(%INTEGER N)
%EXTERNAL %ROUTINE %SPEC ICLpascalcompiler
%ROUTINE %SPEC InitialiseCompiler
%EXTERNAL %ROUTINE %SPEC EMAS3ClaimChannel(%INTEGER %NAME Chan)
%EXTERNAL %ROUTINE %SPEC Eproc %alias "E#PROC" (%STRING %NAME Name, %INTEGER Prop,Numpars,
Paramsize,Astacklen, %INTEGER %NAME Id)
%EXTERNAL %ROUTINE %SPEC Eentry%alias "E#ENTRY" (%INTEGER Index,Numpars,ParamSize,LocalSize,
DiagDisp, %STRING %NAME Name)
%EXTERNAL %INTEGER %FN %SPEC Exname %alias "E#XNAME" (%INTEGER Type, %STRING %NAME Xref)
%EXTERNAL %ROUTINE %SPEC Edataentry %alias "E#DATAENTRY" (%INTEGER Area,Offset,Length,
%STRING %NAME Name)
==== ercc07/algtests_at61.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
I;
'REAL'
X;
X := 3.2;
I := - 2;
OUTREAL(99, I^X)
'END'
==== ercc07/ebits_enames2.txt ====
!***********************************************************************
!* *
!* ebits_enames2 13/01/86 *
!* *
!***********************************************************************
!*
%conststring(9)%array Eopname(0:255) = %c
{00} "HALT","IADD","ISUB","IMULT", "IDIV" ,"INEG" ,"IABS" ,"IREM" ,
{08} "IAND","IOR" ,"INOT","IXOR" , "ISHLL","ISHRL","ISHLA","ISHRA",
{10} "IGT" ,"ILT" ,"IEQ" ,"INE" , "IGE" ,"ILE" ,"BNOT" ,"" ,
{18} "JIGT","JILT","JIEQ","JINE" , "JIGE" ,"JILE" ,"JINTGZ","JINTLZ",
{20} "JINTZ","JINTNZ","JINTGEZ","JINTLEZ", "ITWB" ,"","JUMP","",
{28} "" ,"SFA" ,"RETURN" ,"ASF" , "IPUSH" ,"IPOP" ,"EXCH" ,"DUPL",
{30} "DISCARD","" ,"" ,"INDEX1", "INDEX2","INDEX4","INDEX8","INDEX",
{38} "MVB" ,"CHK" ,"TMASK" ,"" , "" ,"" ,"CPBGT" ,"CPBLT",
{40} "CPBEQ" ,"CPBNE","CPBGE","CPBLE" , "","","","",
{48} "","","","", "","","","",
{50} "UADD","USUB","UGT","ULT", "UEQ","UNE","UGE","ULE",
{58} "JUGT","JULT","JUEQ","JUNE", "JUGE","JULE","JUGTZ","JULTZ",
{60} "JUEQZ","JUNEZ","JUGEZ","JULEZ", "UCVTII","IADDST","ISUBST","IMULTST",
{68} "IDIVST","INEGST","","", "IANDST","IORST","INOTST","IXORST",
==== ercc07/algtests_at62.txt ====
'BEGIN'
'COMMENT' LIBRARY 99;
'INTEGER'
I,
J;
I := 0;
J := - 2;
OUTREAL(99, I^J)
'END'
==== ercc07/ebits_enames3.txt ====
!***********************************************************************
!* *
!* ebits_enames2 13/01/86 *
!* *
!***********************************************************************
!*
%conststring(9)%array Eopname(0:255) = %c
{00} "HALT","IADD","ISUB","IMULT", "IDIV" ,"INEG" ,"IABS" ,"IREM" ,
{08} "IAND","IOR" ,"INOT","IXOR" , "ISHLL","ISHRL","ISHLA","ISHRA",
{10} "IGT" ,"ILT" ,"IEQ" ,"INE" , "IGE" ,"ILE" ,"BNOT" ,"" ,
{18} "JIGT","JILT","JIEQ","JINE" , "JIGE" ,"JILE" ,"JINTGZ","JINTLZ",
{20} "JINTZ","JINTNZ","JINTGEZ","JINTLEZ", "ITWB" ,"","JUMP","",
{28} "" ,"SFA" ,"RETURN" ,"ASF" , "IPUSH" ,"IPOP" ,"EXCH" ,"DUPL",
{30} "DISCARD","" ,"" ,"INDEX1", "INDEX2","INDEX4","INDEX8","INDEX",
{38} "MVB" ,"CHK" ,"TMASK" ,"" , "" ,"" ,"CPBGT" ,"CPBLT",
{40} "CPBEQ" ,"CPBNE","CPBGE","CPBLE" , "","","","",
{48} "","","","", "","","","",
{50} "UADD","USUB","UGT","ULT", "UEQ","UNE","UGE","ULE",
{58} "JUGT","JULT","JUEQ","JUNE", "JUGE","JULE","JUGTZ","JULTZ",
{60} "JUEQZ","JUNEZ","JUGEZ","JULEZ", "UCVTII","IADDST","ISUBST","IMULTST",
{68} "IDIVST","INEGST","","", "IANDST","IORST","INOTST","IXORST",
==== ercc07/algtests_at63.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
I;
'REAL'
X;
X := 0.0;
I := - 2;
OUTREAL(99, X^I)
'END'
==== ercc07/ebits_enames4.txt ====
!***********************************************************************
!* *
!* ebits_enames4 03/04/86 *
!* *
!***********************************************************************
!*
%conststring(9)%array Eopname(0:255) = %c
{00} "HALT","IADD","ISUB","IMULT", "IDIV" ,"INEG" ,"IABS" ,"IREM" ,
{08} "IAND","IOR" ,"INOT","IXOR" , "ISHLL","ISHRL","ISHLA","ISHRA",
{10} "IGT" ,"ILT" ,"IEQ" ,"INE" , "IGE" ,"ILE" ,"BNOT" ,"" ,
{18} "JIGT","JILT","JIEQ","JINE" , "JIGE" ,"JILE" ,"JINTGZ","JINTLZ",
{20} "JINTZ","JINTNZ","JINTGEZ","JINTLEZ", "ITWB" ,"","JUMP","",
{28} "" ,"SFA" ,"RETURN" ,"ASF" , "IPUSH" ,"IPOP" ,"EXCH" ,"DUPL",
{30} "DISCARD","" ,"" ,"INDEX1", "INDEX2","INDEX4","INDEX8","INDEX",
{38} "MVB" ,"CHK" ,"TMASK" ,"" , "" ,"" ,"CPBGT" ,"CPBLT",
{40} "CPBEQ" ,"CPBNE","CPBGE","CPBLE" , "","","","",
{48} "","","","", "","","","",
{50} "UADD","USUB","UGT","ULT", "UEQ","UNE","UGE","ULE",
{58} "JUGT","JULT","JUEQ","JUNE", "JUGE","JULE","JUGTZ","JULTZ",
{60} "JUEQZ","JUNEZ","JUGEZ","JULEZ", "UCVTII","IADDST","ISUBST","IMULTST",
{68} "IDIVST","INEGST","","", "IANDST","IORST","INOTST","IXORST",
==== ercc07/algtests_at64.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER''PROCEDURE' P(B);
'VALUE'
B;
'BOOLEAN'
B;
P := ('IF' B 'THEN' 1 'ELSE' 3.3) 'DIV' 6;
OUTREAL(99, P('TRUE'));
OUTREAL(99, P('FALSE'))
'END'
==== ercc07/ebits_enames5.txt ====
!***********************************************************************
!* *
!* ebits_enames4 03/04/86 *
!* *
!***********************************************************************
!*
%conststring(9)%array Eopname(0:255) = %c
{00} "HALT","IADD","ISUB","IMULT", "IDIV" ,"INEG" ,"IABS" ,"IREM" ,
{08} "IAND","IOR" ,"INOT","IXOR" , "ISHLL","ISHRL","ISHLA","ISHRA",
{10} "IGT" ,"ILT" ,"IEQ" ,"INE" , "IGE" ,"ILE" ,"BNOT" ,"" ,
{18} "JIGT","JILT","JIEQ","JINE" , "JIGE" ,"JILE" ,"JINTGZ","JINTLZ",
{20} "JINTZ","JINTNZ","JINTGEZ","JINTLEZ", "ITWB" ,"","JUMP","",
{28} "" ,"SFA" ,"RETURN" ,"ASF" , "IPUSH" ,"IPOP" ,"EXCH" ,"DUPL",
{30} "DISCARD","" ,"" ,"INDEX1", "INDEX2","INDEX4","INDEX8","INDEX",
{38} "MVB" ,"CHK" ,"TMASK" ,"" , "" ,"" ,"CPBGT" ,"CPBLT",
{40} "CPBEQ" ,"CPBNE","CPBGE","CPBLE" , "","","","",
{48} "","","","", "","","","",
{50} "UADD","USUB","UGT","ULT", "UEQ","UNE","UGE","ULE",
{58} "JUGT","JULT","JUEQ","JUNE", "JUGE","JULE","JUGTZ","JULTZ",
{60} "JUEQZ","JUNEZ","JUGEZ","JULEZ", "UCVTII","IADDST","ISUBST","IMULTST",
{68} "IDIVST","INEGST","","", "IANDST","IORST","INOTST","IXORST",
==== ercc07/algtests_at65.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
I,
J;
I := 2;
J := 3;
OUTREAL(99, I^J 'DIV' J)
'END'
==== ercc07/ebits_enames6.txt ====
!***********************************************************************
!* *
!* ebits_enames4 03/04/86 *
!* *
!***********************************************************************
!*
%conststring(9)%array Eopname(0:255) = %c
{00} "HALT","IADD","ISUB","IMULT", "IDIV" ,"INEG" ,"IABS" ,"IREM" ,
{08} "IAND","IOR" ,"INOT","IXOR" , "ISHLL","ISHRL","ISHLA","ISHRA",
{10} "IGT" ,"ILT" ,"IEQ" ,"INE" , "IGE" ,"ILE" ,"BNOT" ,"" ,
{18} "JIGT","JILT","JIEQ","JINE" , "JIGE" ,"JILE" ,"JINTGZ","JINTLZ",
{20} "JINTZ","JINTNZ","JINTGEZ","JINTLEZ", "ITWB" ,"","JUMP","",
{28} "" ,"SFA" ,"RETURN" ,"ASF" , "IPUSH" ,"IPOP" ,"EXCH" ,"DUPL",
{30} "DISCARD","" ,"" ,"INDEX1", "INDEX2","INDEX4","INDEX8","INDEX",
{38} "MVB" ,"CHK" ,"TMASK" ,"" , "" ,"" ,"CPBGT" ,"CPBLT",
{40} "CPBEQ" ,"CPBNE","CPBGE","CPBLE" , "","","","",
{48} "","","","", "","","","",
{50} "UADD","USUB","UGT","ULT", "UEQ","UNE","UGE","ULE",
{58} "JUGT","JULT","JUEQ","JUNE", "JUGE","JULE","JUGTZ","JULTZ",
{60} "JUEQZ","JUNEZ","JUGEZ","JULEZ", "UCVTII","IADDST","ISUBST","IMULTST",
{68} "IDIVST","INEGST","","", "IANDST","IORST","INOTST","IXORST",
==== ercc07/gbits_gldiocp6s.txt ====
!Modified 22/Sept/86 - treat selectoutput(-1) as null device for IMP.
!Modified 25/June/86 use own rather than local arrays
!Modified 28/May/86 for GOULD (AK)
!***********************************************************************
!* IMP written routines supporting COMPILE TIME. *
!***********************************************************************
%CONSTINTEGER EMAS=10
%CONSTINTEGER PERQ=11
%CONSTINTEGER PNX=12
%CONSTINTEGER IBM=13
%CONSTINTEGER GOULD=14
%constinteger WhiteChapel = 19
%constinteger Perq3 = 20
%constinteger target = GOULD
%constinteger host = GOULD
%externalSTRING(15) %FN ITOS(%INTEGER K)
%INTEGER REM,NUM,NF
%STRING(15) STR
==== ercc07/algtests_at66.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
I,
J,
K,
CASE;
'PROCEDURE' EQUAL(I, J);
'VALUE'
I,
J;
'INTEGER'
I,
J;
'IF' I # J 'THEN'
'BEGIN'
OUTREAL(99, CASE);
OUTREAL(99, I);
OUTREAL(99, J)
'END'
==== ercc07/ifast3s.txt ====
%INCLUDE "ercc07:ibmsup_comf370"
%INCLUDE "ercc07:ibmsup_page0f"
%RECORDFORMAT PARMF(%INTEGER DEST,SRCE,(%INTEGER P1,P2,P3,P4,P5,P6 %ORSTRING (23) TEXT))
%CONSTINTEGER PCELLSIZE=36,MARGIN=48
%RECORDFORMAT PDOPEF(%INTEGER CURRMAX,MAXMAX,FIRST UNALLOC,LAST UNALLOC,NEXTPAGE,S1,S2,S3,S4)
%RECORDFORMAT PARMXF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6,LINK)
%CONSTRECORD (PARMXF) %ARRAYNAME PARM=PARM0AD
%CONSTRECORD (PDOPEF) %NAME PARMDOPE=PARM0AD
%RECORDFORMAT STOREF(%SHORTINTEGER FLAGS,USERS,LINK,BLINK,FLINK)
%CONSTRECORD (STOREF) %ARRAYNAME STORE=STORE0AD
!
%EXTERNALLONGINTEGER SEMATIME=0
%OWNINTEGER PARMASL=0
%EXTERNALINTEGER MAINQSEMA=-1
%EXTERNALINTEGERSPEC STORESEMA
%OWNINTEGERARRAY GET NEW PAGE(0:14); ! parms for call of new epage
!
%CONSTINTEGER LOCSN1=LOCSN0+MAXPROCS
%RECORDFORMAT SERVF(%INTEGER P,L)
! L is link in circular chain of
! services which constitute a queue
==== ercc07/algtests_at67.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
I,
J;
I := 3;
J := - 2;
OUTREAL(99, (81 * I^J) 'DIV' 2);
'END'
==== ercc07/algtests_at68.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
I;
'SWITCH' S :=
S1,
S2,
S3,
S4;
'FOR' I := 1 'STEP' 1 'UNTIL' 4 'DO'
'BEGIN'
'GOTO' S[I];
S1 :;
'IF' I # 1 'THEN'
OUTREAL(99, I)
'ELSE'
'GOTO' EXIT;
S2 :;
'IF' I # 2 'THEN'
OUTREAL(99, I)
==== ercc07/ctoptn2.txt ====
!
! Compile time options for EMAS/370
!
%constinteger YES=1,NO=0,AMDAHL=2
%constinteger XA=YES; ! yes for 370/XA
%constinteger VA MODE=YES; ! yes for Supervisor, no for Chopsupe
%constinteger MULTI OCP=NO; ! yes to include semaphoring
%constinteger CRFITTED=NO; ! card reader
%constinteger CPFITTED=NO; ! card punch
%constinteger SNOOZING=YES; ! allow suspend in store
%constinteger PRODUCTION=NO; ! yes for continuing after S/W errors
%constinteger MONLEVEL=x'3F'; ! 0 = no monitoring
! 2**0 = video updating
! 2**1 = KMONning
! 2**2 = sup timing measurements
! 2**3 = a-c for cross calls
! 2**4 = strobing
! 2**5 = cat table transitions
! 2**8 = event harvesting
%constinteger P4PERCENT=11; ! max % of free store for large jobs
%constinteger MAXPROCS=256; ! max concurrent procs (64,128 or 256)
==== ercc07/algtests_at69.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
I;
'SWITCH' S :=
S1,
S2,
S3,
S4;
'FOR' I := 1,
2,
3 'DO'
'BEGIN'
'GOTO' S[I];
S1 :;
'IF' I # 1 'THEN'
OUTREAL(99, I)
'ELSE'
S2 : 'IF' I # 2 'THEN'
OUTREAL(99, I)
==== ercc07/ctoptn3.txt ====
!
! Compile time options for EMAS/370
!
%constinteger YES=1,NO=0,AMDAHL=2
%constinteger XA=YES; ! yes for 370/XA
%constinteger VA MODE=YES; ! yes for Supervisor, no for Chopsupe
%constinteger MULTI OCP=NO; ! yes to include semaphoring
%constinteger CRFITTED=NO; ! card reader
%constinteger CPFITTED=NO; ! card punch
%constinteger SNOOZING=YES; ! allow suspend in store
%constinteger PRODUCTION=NO; ! yes for continuing after S/W errors
%constinteger MONLEVEL=x'3F'; ! 0 = no monitoring
! 2**0 = video updating
! 2**1 = KMONning
! 2**2 = sup timing measurements
! 2**3 = a-c for cross calls
! 2**4 = strobing
! 2**5 = cat table transitions
! 2**8 = event harvesting
%constinteger P4PERCENT=19; ! max % of free store for large jobs
%constinteger MAXPROCS=256; ! max concurrent procs (64,128 or 256)
==== ercc07/algtests_at70.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
I;
'SWITCH' S :=
S1,
S2,
S3;
I := 1;
'GOTO' S[I];
'FOR' I := 1,
2,
3 'DO'
'BEGIN'
S1 :;
OUTREAL(99, 10);
S2 :;
OUTREAL(99, 20);
OUTREAL(99, I)
'END';
==== ercc07/pdriver17s.txt ====
{****************************************************************************}
{ }
{ System dependent routines. }
{ }
{****************************************************************************}
%externalstring(255)%fnspec uinfs %alias "S#UINFS"(%integer n)
%EXTERNAL %ROUTINE %SPEC Define %ALIAS "S#DEFINE"(%INTEGER channel,
%STRING (255) File, %INTEGER %NAME Afd,Flag)
%externalintegerfnspec IOCP %alias "S#IOCP"(%integer ep,adr)
%EXTERNAL %INTEGER %MAP %SPEC ComReg %ALIAS "S#COMREGMAP"(%INTEGER N)
%EXTERNAL %ROUTINE %SPEC ICLpascalcompiler
%ROUTINE %SPEC InitialiseCompiler
%EXTERNAL %ROUTINE %SPEC EMAS3ClaimChannel(%INTEGER %NAME Chan)
%EXTERNAL %ROUTINE %SPEC Eproc %alias "E#PROC" (%STRING %NAME Name, %INTEGER Prop,Numpars,
Paramsize,Astacklen, %INTEGER %NAME Id)
%EXTERNAL %ROUTINE %SPEC Eentry%alias "E#ENTRY" (%INTEGER Index,Numpars,ParamSize,LocalSize,
DiagDisp, %STRING %NAME Name)
%EXTERNAL %INTEGER %FN %SPEC Exname %alias "E#XNAME" (%INTEGER Type, %STRING %NAME Xref)
%EXTERNAL %ROUTINE %SPEC Edataentry %alias "E#DATAENTRY" (%INTEGER Area,Offset,Length,
%STRING %NAME Name)
==== ercc07/algtests_at71.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
I,
CASE;
'BOOLEAN'
B;
'REAL'
X;
'INTEGER''PROCEDURE' P(K, Q);
'VALUE'
K;
'INTEGER'
K;
'INTEGER''PROCEDURE'
Q;
'COMMENT' (X1) : 'VALUE' X1 : 'REAL' X1 ;
P :=
'IF' K = 1 'THEN'
Q(I)
==== ercc07/algtests_at72.txt ====
'BEGIN'
'COMMENT' LIBRARY 3;
'INTEGER'
I,
CASE;
'BOOLEAN'
B;
'REAL'
X;
'INTEGER''PROCEDURE' P(K, Q);
'VALUE'
K;
'INTEGER'
K;
'INTEGER''PROCEDURE'
Q;
'COMMENT' (X1) : 'VALUE' X1 : 'INTEGER'X1 ;
P :=
'IF' K = 1 'THEN'
Q(I)
==== ercc07/algtests_at73.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
I,
J,
K,
K1;
'REAL'
T1,
T2;
'INTEGER''PROCEDURE' ACKERMANN(M, N);
'VALUE'
M,
N;
'INTEGER'
M,
N;
ACKERMANN :=
'IF' M = 0 'THEN'
N + 1
==== ercc07/eccepas.txt ====
{*****************************************************************************}
{** **}
{** Title: Edinburgh Editor Ecce for Dec Rainbow PC 100 **}
{** Author: H.Whitfield **}
{** Date: 4 October 1984 **}
{** Copyright (c) H.Whitfield 1984 **}
{** **}
{*****************************************************************************}
PROGRAM Ecce( input, output, InFile, OutFile );
LABEL
999; { stop }
CONST
cmax = 121;
stop = -5000;
inv = -5001;
==== ercc07/algtests_at74.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
N;
N := 3;
'BEGIN'
'ARRAY'
A[1 : 'IF' N = 3 'THEN' 3 'ELSE' - 100];
'INTEGER'
N;
N := 2;
OUTREAL(99, N);
'END';
OUTREAL(99, N)
'END'
==== ercc07/algtests_at75.txt ====
'BEGIN'
'COMMENT' LIBRARY 9;
'INTEGER''ARRAY'
EQ[1 : 3];
'INTEGER'
I;
'REAL'
X,
Y;
'PROCEDURE' INC(A, B);
'VALUE'
A,
B;
'REAL'
A,
B;
'IF' A < B 'THEN'
EQ[1] := EQ[1] + 1
'ELSE' 'IF' A = B 'THEN'
EQ[2] := EQ[2] + 1
==== ercc07/algtests_at76.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'REAL'
X,
Y;
'INTEGER'
I,
J;
'ARRAY'
A[1 : 10];
X := Y := 1.0;
I := J := 0;
'BEGIN'
'SWITCH' A := A1,A2,A3;
'PROCEDURE' P;
'BEGIN'
X := 20;
I := X + Y;
Q(A[3], I + J)
'END';
==== ercc07/ifast4s.txt ====
%INCLUDE "ercc07:ibmsup_comf370"
%INCLUDE "ercc07:ibmsup_page0f"
%INCLUDE "ercc07:ibmsup_dtform1s"
%INCLUDE "ercc07:ibmsup_xaioform"
%RECORDFORMAT PARMF(%INTEGER DEST,SRCE,(%INTEGER P1,P2,P3,P4,P5,P6 %ORSTRING (23) TEXT))
%CONSTINTEGER PCELLSIZE=36,MARGIN=48
%RECORDFORMAT PDOPEF(%INTEGER CURRMAX,MAXMAX,FIRST UNALLOC,LAST UNALLOC,NEXTPAGE,S1,S2,S3,S4)
%RECORDFORMAT PARMXF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6,LINK)
%CONSTRECORD (PARMXF) %ARRAYNAME PARM=PARM0AD
%CONSTRECORD (PDOPEF) %NAME PARMDOPE=PARM0AD
%RECORDFORMAT STOREF(%SHORTINTEGER FLAGS,USERS,LINK,BLINK,FLINK)
%CONSTRECORD (STOREF) %ARRAYNAME STORE=STORE0AD
!
%EXTERNALLONGINTEGER SEMATIME=0
%OWNINTEGER PARMASL=0
%EXTERNALINTEGER MAINQSEMA=-1
%EXTERNALINTEGERSPEC STORESEMA
%OWNINTEGERARRAY GET NEW PAGE(0:14); ! parms for call of new epage
!
%CONSTINTEGER LOCSN1=LOCSN0+MAXPROCS
%RECORDFORMAT SERVF(%INTEGER P,L)
==== ercc07/algtests_at77.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
SUM;
'PROCEDURE' P1(S, R, I, B, RA, IA);
'STRING'
S;
'REAL'
R;
'INTEGER'
I;
'BOOLEAN'
B;
'REAL' 'ARRAY'
RA;
'INTEGER''ARRAY'
IA;
SUM := SUM + R + I + ('IF' B 'THEN' 1 'ELSE' 0) + RA[1] +
IA[1];
'PROCEDURE' P2(BA, L, SW, PR, RPR, IPR, BPR);
==== ercc07/algtests_at78.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
SUM;
'PROCEDURE' P1(S, R, I, B, RA, IA);
'STRING'
S;
'REAL'
R;
'INTEGER'
I;
'BOOLEAN'
B;
'REAL' 'ARRAY'
RA;
'INTEGER''ARRAY'
IA;
SUM := SUM + R + I + ('IF' B 'THEN' 1 'ELSE' 0) + RA[1] +
IA[1];
'PROCEDURE' P2(BA, L, SW, PR, RPR, IPR, BPR);
==== ercc07/ibmconvert_sibmdriver.txt ====
%RECORDFORMAT RR(%INTEGER CONAD,FTYPE,DSTART,DEND)
%SYSTEMROUTINESPEC DISCONNECT(%STRING(31)FILE,%INTEGERNAME FLAG)
%SYSTEMROUTINESPEC DESTROY(%STRING(31)FILE,%INTEGERNAME FLAG)
%SYSTEMROUTINESPEC SETWORK(%INTEGERNAME AD,LEN)
%SYSTEMROUTINESPEC CHANGEFILESIZE(%STRING(31)FILE,%INTEGER SIZE,%INTEGERNAME FLAG)
%SYSTEMROUTINESPEC NEWGEN(%STRING(31) FILE1,FILE2,%INTEGERNAME FLAG)
%EXTERNALROUTINESPEC DEFINE(%STRING(255)PARM)
%SYSTEMROUTINESPEC PSYSMES(%INTEGER ROOT,FLAG)
%SYSTEMROUTINESPEC SETPAR(%STRING(255)PARM)
%SYSTEMSTRINGFNSPEC SPAR(%INTEGER N)
%SYSTEMROUTINESPEC CONNECT(%STRING(31)FILE,%INTEGER MODE,HOLE,PROT,
%RECORD(RR)%NAME FINFO,%INTEGERNAME FLAG)
%SYSTEMROUTINESPEC OUTFILE(%STRING(31)FILE,%INTEGER SIZE,HOLE,PROT,
%INTEGERNAME CONAD,FLAG)
%SYSTEMROUTINESPEC MOVE(%INTEGER LNTH,FROMAD,TOAD)
%EXTERNALROUTINESPEC CONVTOIBM(%INTEGER ICONAD,OCONAD, %INTEGERNAME FLAG)
!
!
%EXTERNALROUTINE TOIBMOBJ(%STRING(255) PARM)
%STRING(31) INFILE,OUTF,LIST,WOUTF
%RECORD(RR) FINFO
==== ercc07/algtests_at79.txt ====
'BEGIN'
'INTEGER'
I;
'REAL'
R;
'BOOLEAN'
B;
'ARRAY'
A1[1 : I + B],
A2[2 : 4, 5 : 7];
'SWITCH' S :=
'IF' R * P0 < 0 'THEN' L 'ELSE' L2;
'PROCEDURE' P0;
R := I 'DIV' R;
'PROCEDURE' P1(F);
'REAL'
F;
B := I + R;
L :;
B := I > S;
==== ercc07/trimp_perqlink.txt ====
LINK
ERCC07.PP1Y
ERCC07.PP2Y
ERCC07.POPTY
ERCC07.PGENY
ERCC07.CSERV01Y
ERCS04.QFILES_QCODE4Y
ERCS04.QFILES_QPUT15Y
.END
P0Y
MODIFY P0Y
SATISFY REFS
.ALL
SATISFY DATA
.ALL
RENAME
ICL9CEZPERQIMP,S#PERQIMP
.END
SUPPRESS
.ALL
RETAIN
==== ercc07/algtests_at80.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
I;
'INTEGER''ARRAY'
A[1 : 10];
I := 1;
'FOR' A[I] := 1,
2,
3,
4,
5,
6,
7,
8,
9,
10 'DO'
I := I + 1;
'FOR' I := 1 'STEP' 1 'UNTIL' 10 'DO'
'IF' A[I] # I 'THEN'
==== ercc07/algtests_at81.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'ARRAY'
V,
A,
C[1 : 1];
'INTEGER'
K;
'INTEGER''PROCEDURE' I;
'BEGIN'
I := 1;
K := K + 1
'END';
K := 0;
A[I] := 1;
C[I] := 3;
'FOR' V[I] := A[I] 'STEP' A[I] 'UNTIL' C[I] 'DO'
;
OUTREAL(99, K)
'END'
==== ercc07/algtests_at82.txt ====
'BEGIN'
'COMMENT' LIBRARY5;
'INTEGER''PROCEDURE' NONE;
NONE := 1;
NONE;
SIN(1.0);
ABS(3);
LN(.2);
EXP(4);
ENTIER(NONE);
SIGN(SQRT(8));
OUTREAL(99, NONE)
'END'
==== ercc07/algtests_at83.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
NN;
'SWITCH' A :=
B[1],
B[2];
'SWITCH' B :=
A[G],
A[2];
'INTEGER''PROCEDURE' F(N, S);
'VALUE'
N;
'INTEGER'
N;
'SWITCH'
S;
'BEGIN'
NN := N;
'GOTO' S[1];
==== ercc07/algtests_at84.txt ====
'BEGIN'
'COMMENT' LIBRARY 3;
'INTEGER'I,CL,N,REP;
'ARRAY' R,A,B[1:30],C[1:10];
'REAL' J,ROOT,X;
'INTEGER''PROCEDURE' EVEN(X);
'VALUE' X;
'INTEGER'X;
EVEN:='IF' X'DIV'2*2 = X 'THEN' 1 'ELSE' -1;
'PROCEDURE' GAMM(R,A,B,C);
'ARRAY' R,A,B,C;
'BEGIN' 'INTEGER'REP,I,CL;
'REAL' J,ROOT,X;
REP:=100*N;
OUTREAL(99,CPUTIME);
'FOR' CL:= 1 'STEP' 1 'UNTIL' REP 'DO'
;
OUTREAL(99,CPUTIME);
REP:=N;
OUTREAL(99,CPUTIME);
==== ercc07/algtests_at85.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'REAL'
X,
Y;
'PROCEDURE' DUM;
;
'REAL' 'PROCEDURE' A;
A := X + ('IF' B 'THEN' 1 'ELSE' 0);
'BOOLEAN'
B;
S2 :;
B := (('TRUE'));
G :;
'BEGIN'
'INTEGER'
I;
X := - 3;
'IF' 'NOT' B 'THEN'
'GOTO' S2;
==== ercc07/wwclink1.txt ====
LINK
ERCC07:wP1Y
ERCC07:wP22Y
ERCC07:wOPT2Y
ERCC07:wGEN1Y
ERCC07:CSERV01x
ercs01:EBITS_etrput1y
.END
P0Y
MODIFY P0Y
SATISFY REFS
.ALL
SATISFY DATA
.ALL
SUPPRESS
.ALL
RETAIN
eGENERATEOBJECT,ICL9CEZWWCIMP
SUPPRESS DATA
.ALL
CLOSE
==== ercc07/algtests_at86.txt ====
'BEGIN'
PROG :
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'N,I;
'PROCEDURE' Q;
'BEGIN'
'ARRAY'
A,
D[1 : 1, 1 : N],
E[0 : 0];
'PROCEDURE' P(X, L);
'LABEL'
L;
'INTEGER''PROCEDURE'
X;
'COMMENT' (F1,G1): 'VALUE' F1: 'REAL' F1,G1;
B : 'FOR' I := 1 'STEP' 1 'UNTIL' N,
I + 1 'DO'
C : 'GOTO'
'IF' X(A[1, 1] + I, 0) = 0 'THEN'
==== ercc07/wwclink2.txt ====
parm nocheck
imp80 ercc07:Itrimp_wwcponeas+ercc07:poneb01s,wp1y,l1
imp80 ercc07:Itrimp_wwcptwoas+ercc07:timp02s,wp22y,l2
imp80 ercc07:Itrimp_wwcoptas+ercc07:opt02s,wopt2y,lo
imp80 ercc07:wwcgen01s,wgen1y,l3
LINK
ERCC07:wP1Y
ERCC07:wP22Y
ERCC07:wOPT2Y
ERCC07:wGEN2Y
ERCC07:CSERV01x
ercs01:EBITS_etrput1y
.END
P0Y
MODIFY P0Y
SATISFY REFS
.ALL
SATISFY DATA
.ALL
SUPPRESS
.ALL
==== ercc07/ifast5s.txt ====
%INCLUDE "ercc07:ibmsup_comf370"
%INCLUDE "ercc07:ibmsup_page0f"
%INCLUDE "ercc07:ibmsup_dtform1s"
%INCLUDE "ercc07:ibmsup_xaioform"
%RECORDFORMAT PARMF(%INTEGER DEST,SRCE,(%INTEGER P1,P2,P3,P4,P5,P6 %ORSTRING (23) TEXT))
%CONSTINTEGER PCELLSIZE=36,MARGIN=48
%RECORDFORMAT PDOPEF(%INTEGER CURRMAX,MAXMAX,FIRST UNALLOC,LAST UNALLOC,NEXTPAGE,S1,S2,S3,S4)
%RECORDFORMAT PARMXF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6,LINK)
%CONSTRECORD (PARMXF) %ARRAYNAME PARM=PARM0AD
%CONSTRECORD (PDOPEF) %NAME PARMDOPE=PARM0AD
%RECORDFORMAT STOREF(%SHORTINTEGER FLAGS,USERS,LINK,BLINK,FLINK)
%CONSTRECORD (STOREF) %ARRAYNAME STORE=STORE0AD
!
%EXTERNALLONGINTEGER SEMATIME=0
%OWNINTEGER PARMASL=0
%EXTERNALINTEGER MAINQSEMA=-1
%EXTERNALINTEGERSPEC STORESEMA
%OWNINTEGERARRAY GET NEW PAGE(0:14); ! parms for call of new epage
!
%CONSTINTEGER LOCSN1=LOCSN0+MAXPROCS
%RECORDFORMAT SERVF(%INTEGER P,L)
==== ercc07/algtests_at87.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
I;
'REAL'
X;
I := 1;
'FOR' X := .1 'STEP' X 'UNTIL' 1.0&6 'DO'
I := I + 1;
OUTREAL(99, I)
'END'
==== ercc07/algtests_at88.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
A;
'INTEGER''PROCEDURE' F(X, Y);
'VALUE'
X,
Y;
'INTEGER'
X,
Y;
A := F := X + 1;
'INTEGER''PROCEDURE' G(X);
'INTEGER'
X;
X := G := A + 2;
A := 0;
OUTREAL(99, A + F(A, G(A)) / G(A))
'END'
==== ercc07/algtests_at89.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'REAL'
I,
J;
'ARRAY'
A[1 : 2, 1 : 3];
'REAL' 'PROCEDURE' GPS(I, N, Z, V);
'REAL'
I,
N,
Z,
V;
'BEGIN'
'FOR' I := 1 'STEP' 1 'UNTIL' N 'DO'
Z := V;
GPS := 1
'END';
OUTREAL(99, GPS(J, 3.0, I, GPS(I, 2.0, A[I, J], I + J)));
'FOR' I := 1 'STEP' 1 'UNTIL' 2 'DO'
==== ercc07/algtests_at90.txt ====
'BEGIN'
'COMMENT' LIBRARY5;
'REAL'
R;
'BOOLEAN'
B;
'INTEGER''PROCEDURE' F(X);
'REAL'
X;
F := 0;
'INTEGER'
I,
N,
S;
'INTEGER''PROCEDURE' G(Y);
'BOOLEAN'
Y;
G :=
'IF' Y 'THEN'
2
==== ercc07/algtests_at91.txt ====
'BEGIN'
'COMMENT' ET COMMENT;
'COMMENT' LIBRARY 1;
'REAL'
C;
'ARRAY'
D[ - 0 : + 1, 0&0 : 1.0];
'INTEGER''PROCEDURE' R(C);
'REAL'
C;
R :=
'IF' 'TRUE' 'THEN'
C
'ELSE'
R(0);
D[0, 0] := C := C := 1;
'COMMENT' PROGRAM MODIFIED TO AVOID USE BEFORE DECLARATION;
'BEGIN'
'INTEGER''ARRAY'
H,
==== ercc07/algtests_at92.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
N;
'INTEGER''PROCEDURE' P(Q, R);
'INTEGER''PROCEDURE' Q;
'COMMENT' (R):'INTEGER''PROCEDURE' R;
'INTEGER''PROCEDURE' R;
'BEGIN'
'INTEGER'
B;
B := 3 * Q(R);
P := B
'END';
'INTEGER''PROCEDURE' A(F);
'INTEGER''PROCEDURE'
F;
A := 2 * F;
'INTEGER''PROCEDURE' B;
'BEGIN'
==== ercc07/algtests_at93.txt ====
'BEGIN'
'COMMENT' LIBRARY 3;
'REAL' 'PROCEDURE' A(K, X1, X2, X3, X4, X5);
'VALUE'
K;
'INTEGER'
K;
'REAL'
X1,
X2,
X3,
X4,
X5;
'BEGIN'
'REAL' 'PROCEDURE' B;
'BEGIN'
K := K - 1;
B := A := A(K, B, X1, X2, X3, X4)
'END';
'IF' K <= 0 'THEN'
==== ercc07/asss[1].txt ====
%externalroutine icl9cezassemble
%EXTERNALINTEGERMAPSPEC COMREG %ALIAS "S#COMREGMAP"(%INTEGER N)
%EXTERNALROUTINESPEC IPUT %ALIAS "S#IPUT"(%INTEGER TYPE,LENGTH,LA,IA)
%ROUTINESPEC ASSEMBLE(%BYTEINTEGERARRAYNAME S, %INTEGERNAME L,F)
%INTEGER DUMMY,FLAG,FILE ADDR,FILE PTR,FILE END,L,LL
%BYTEINTEGERARRAY OPCODE(0:32*1024)
%OWNINTEGERARRAY FDI(0:5)=0,24,32,0,0,0
L=32000
%ownstring(63) hdr=" EMAS ASSEMBLER RELEASE 2 VERSION 23Sep85"
NEWLINES(2); SPACES(15)
PRINTSTRING(hdr)
NEWLINES(4)
FILE ADDR=COMREG(46)
%IF FILE ADDR#0 %THENSTART
FILE PTR=FILE ADDR+INTEGER(FILE ADDR+4)
FILE END=FILE ADDR+INTEGER(FILE ADDR)
%FINISH
ASSEMBLE(OPCODE,L,FLAG)
NEWLINES(2)
PRINTSYMBOL('*')
%IF FLAG=0 %THEN PRINTSTRING("ASSEMBLY SUCCESSFUL") %ELSESTART
==== ercc07/algtests_at94.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
J,
K,
S;
'INTEGER''PROCEDURE' F(N);
'VALUE'
N;
'INTEGER'
N;
'BEGIN'
'INTEGER'
I,
L;
'FOR' I := N,
S 'DIV' 2 'WHILE' S < 16 'OR' S = 28 'DO'
'BEGIN'
S := S + I + N;
L := I
==== ercc07/algtests_at95.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'REAL' 'PROCEDURE' G(X);
'REAL'
X;
G := X + 1;
'REAL' 'PROCEDURE' A(H);
'REAL' 'PROCEDURE'
H;
'COMMENT' (H1): 'REAL' H1;
'BEGIN'
'REAL' 'PROCEDURE' LOC(X);
'REAL'
X;
LOC := H(G(X));
A := LOC(0);
'END' A;
'REAL' 'PROCEDURE' B(F, H);
'REAL' 'PROCEDURE'
F;
==== ercc07/algtests_at96.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'PROCEDURE' P(F);
'REAL' 'PROCEDURE'
F;
'COMMENT' (F1):'LABEL' F1;
F((M));
B1 :;
'BEGIN'
'REAL' 'PROCEDURE' Q(L);
'LABEL'
L;
'BEGIN'
'GOTO' L;
Q := 0;
OUTREAL(99, 1)
'END';
B2 :;
'BEGIN'
'REAL'
==== ercc07/trimp_pnxlink4.txt ====
LINK
ERCC07.P1Y
ERCC07.XP2Y
ERCC07.XOPTY
ERCC07.XGEN4Y
ERCS04.NEWPNX_PUTY
ERCS04.NEWPNX_HEAPY
ERCS04.NEWPNX_PNXIMPY
.END
P0Y
MODIFY P0Y
SATISFY REFS
.ALL
SATISFY DATA
.ALL
SUPPRESS
.ALL
RETAIN
PNXIMP,ICL9CEZPNXIMP
SUPPRESS DATA
.ALL
==== ercc07/machineoper.txt ====
!
! E MACHINE OPERAND FORMS
! -----------------------
!
! Simple Forms
! ------------
!
! Litval
! corresponding address none (but see note A)
!
! The operand is a literal
!
! Regval& Fregval (also Regaddr & Regvar)
! corresponding address forms:- none (but see note A)
!
! The operand is in a Register - the form Regaddr
! is used when the operand is known to be an
! address but for code generation there is no
! difference. Care must be taken with Regvar
! not to overwrite it except at assignment
!
==== ercc07/algtests_at97.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
X,
N,
K;
'REAL' 'PROCEDURE' SIGMA(I, K, L, T);
'VALUE'
L;
'INTEGER'
I,
K,
L;
'REAL'
T;
'BEGIN'
'REAL'
X;
X := 0;
'FOR' I := K 'STEP' 1 'UNTIL' L 'DO'
==== ercc07/portenv03_maths.txt ====
%include "itrimp_hostcodes"
%CONSTINTEGER TARGET=M88K
!%EXTERNALROUTINESPEC IOCP %ALIAS "s_iocp"(%INTEGER EP,N)
%CONSTLONGREAL LOG10A=2.3025850929940456840179914546843642076011
%CONSTLONGREAL PI=3.141592653589793238462643
%CONSTLONGREAL R1= 1.2595802263029547@ 1{R'41C98867F42983DF'}
%CONSTLONGREAL R2=-8.6186317517509520@ 1{R'C2562FB2813C6014'}
%CONSTLONGREAL R3=-1.2766919133361079@ 0{R'C1146D547FED8A3D'}
%CONSTLONGREAL R4=-8.3921038065840512@ -2{R'C0157BD961F06C89'}
%CONSTLONGREAL S1= 2.7096164294378656@ 1{R'421B189E39236635'}
%CONSTLONGREAL S2= 6.5581320451487386@ 0{R'4168EE1BDE0C3700'}
%CONSTLONGREAL S3= 2.1441643116703661@ 0{R'41224E7F3CBDFE41'}
%CONSTLONGREAL S4= 1.2676256708212610@ 0{R'41144831DAFBF542'}
%CONSTLONGREAL RT3= 1.7320508075688772@ 0{R'411BB67AE8584CAA'}
%CONSTLONGREAL PIBY6= 5.2359877559829887@ -1{R'40860A91C16B9B2C'}
%CONSTLONGREAL PIBY2M1= 5.7079632679489661@ -1{R'40921FB54442D184'}
%CONSTLONGREAL RT3M1=7.3205080756887728@ -1{R'40BB67AE8584CAA7'}
%CONSTLONGREAL TANPIBY12= 2.6794919243112271@ -1{R'404498517A7B3559'}
%CONSTLONGREAL PIBY4= 7.8539816339744816@ -1{R'40C90FDAA22168C2'}
%CONSTLONGREAL A1= 7.5000000000000000@ -1{R'40C0000000000000'}
%CONSTLONGREAL A2= 3.5398163397448309@ -2{R'3F90FDAA22168C23'}
==== ercc07/trimp_pnxlink5.txt ====
LINK
ERCC07.XP1Y
ERCC07.XP2Y
ERCC07.XOPTY
ERCC07.XGEN5Y
ERCC07.CSERV01Y
ERCS04.PNX_PUTY
ERCS04.PNX_HEAPY
ERCS04.PNX_PNXIMPY
.END
P0Y
MODIFY P0Y
SATISFY REFS
.ALL
SATISFY DATA
.ALL
SUPPRESS
.ALL
RETAIN
PNXIMP,ICL9CEZPNXIMP
SUPPRESS DATA
==== ercc07/algtests_at98.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'REAL' 'PROCEDURE' R(A);
'REAL'
A;
'BEGIN'
'INTEGER''PROCEDURE' P(B, C);
'INTEGER'
B,
C;
P := B + C;
R := P(A + 1, A)
'END' R;
'REAL'
X;
'BEGIN'
'REAL'
Y;
Y := 4;
X := R(R(Y + 1))
==== ercc07/algtests_at99.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'COMMENT' THIS PROGRAM HAS BEEN MODIFIED TO AVOID USE BEFORE DECLARATION
AND ALSO TO REMOVE THE TYPE CHANGES ON ARRAYS TO VALUE;
'INTEGER''ARRAY'
A[16384 : 16385, - 16383 : - 16382];
'INTEGER'
S;
'ARRAY'
B[1 : 2, 0 : 2];
'PROCEDURE' P(A, B, C, D);
'VALUE'
B,
C;
'REAL'
A,
B;
'ARRAY'
C,
D;
==== ercc07/pnxlink6.txt ====
LINK ,map
ERCC07:XP1Y
ERCC07:XP22Y
ERCC07:XOPTY
ERCC07:XGEN6Y
ERCC07:CSERV01x
ERCS04:PNX_PUTY
ERCS04:PNX_HEAPY
ercs04:pnx_ccodey
.END
P0Y
MODIFY P0Y
SATISFY REFS
.ALL
SATISFY DATA
.ALL
SUPPRESS
.ALL
RETAIN
pnxgenerateobject,ICL9CEZPNXIMP
SUPPRESS DATA
==== ercc07/gbits_gput8s.txt ====
!************************************************************
!*** YOU MUST SET 'SYSTEM' and 'FORMAT' VARIABLE BELOW ******
!************************************************************
! 23/june/87 Fix Relafm initial bound gput8
!
! 15/june/87 Tidy up for release. MPX version no gput7
!
! 3 /june/87 Corrections mainly for sect numbers in symbols. gput6
!
! 21/may/87 Correction for FAR. Lose extra byte in dict. gput4u
!
! 6/5/87 Move section symbols to end and get rid of gput4
! empty sections.
! 30/4/87 Check out BSD. gput3
!
! 13/4/87 Fix bad order of .text and .nbtext . gput2
! And make relocs relative to section.
!
! Amalgamate NP, MPX, C and UTX versions into new root gput1
! With COFF changes added.
! 2/mar/87
==== ercc07/trimp_emaslink.txt ====
LINK
EP1Y
EP2Y
EOPTY
EGENY
CSERV01Y
.END
P0Y
MODIFY P0Y
SATISFY REFS
.ALL
SATISFY DATA
.ALL
SUPPRESS
.ALL
RETAIN
ICL9CEZIOPT
SUPPRESS DATA
.ALL
CLOSE
NEWGEN P0Y,IOPT01Y
==== ercc07/ifast7s.txt ====
%INCLUDE "ercc07:ibmsup_comf370"
%INCLUDE "ercc07:ibmsup_page0f"
%INCLUDE "ercc07:ibmsup_dtform1s"
%INCLUDE "ercc07:ibmsup_xaioform"
%RECORDFORMAT PARMF(%INTEGER DEST,SRCE,(%INTEGER P1,P2,P3,P4,P5,P6 %ORSTRING (23) TEXT))
%CONSTINTEGER PCELLSIZE=36,MARGIN=48
%RECORDFORMAT PDOPEF(%INTEGER CURRMAX,MAXMAX,FIRST UNALLOC,LAST UNALLOC,NEXTPAGE,S1,S2,S3,S4)
%RECORDFORMAT PARMXF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6,LINK)
%CONSTRECORD (PARMXF) %ARRAYNAME PARM=PARM0AD
%CONSTRECORD (PDOPEF) %NAME PARMDOPE=PARM0AD
%RECORDFORMAT STOREF(%SHORTINTEGER FLAGS,USERS,LINK,BLINK,FLINK)
%CONSTRECORD (STOREF) %ARRAYNAME STORE=STORE0AD
!
%EXTERNALLONGINTEGER SEMATIME=0
%OWNINTEGER PARMASL=0
%EXTERNALINTEGER MAINQSEMA=-1
%EXTERNALINTEGERSPEC STORESEMA
%OWNINTEGERARRAY GET NEW PAGE(0:14); ! parms for call of new epage
!
%CONSTINTEGER LOCSN1=LOCSN0+MAXPROCS
%RECORDFORMAT SERVF(%INTEGER P,L)
==== ercc07/makedrs_gen4.txt ====
offer dgens
parm nocheck
edit drsgen04s,dgens
a/%incl/d1i<itrimp_hostcodes>
a'd1i<ercs01:ebits_ecodes8>
a'd1i<tripcnsts>
a'd1i<itrimp_tform2s>
a'd1i<ercs01:ebits_especs2>
e
imp dgens,.null
offer dgens,zepz06
==== ercc07/editinc1s.txt ====
/*
EDIT
Copyright (C) A.Gibbons University of Edinburgh MCMXC
*/
#define msdos 1
#define castle 2
#define metsun 4
#define hp9000 8
#define cssun 16
#define TARGET castle
#if (TARGET == msdos)
#include <graph.h>
#include <stdlib.h>
#include <process.h>
==== ercc07/makedrs_gen5.txt ====
parm nocheck
edit drsgen05s,dgens
a/%incl/d1i<itrimp_hostcodes>
a'd1i<ercs01:ebits_ecodes28>
a'd1i<tripcnsts>
a'd1i<itrimp_tform2s>
a'd1i<ercs01:ebits_especs5>
ta/host=/r6i/DRS/
e
imp dgens,.null
transfer dgens,castle(ercc07,pete)impdir/sources/d386p4s10.i,file
==== ercc07/perq3link.txt ====
LINK
ERCC07:p3p1Y
ERCC07:p3p22Y
ERCC07:p3oPT3Y
ERCC07:P3GEN2Y
ERCC07:CSERV01x
ercs01:EBITS_etrput1y
.END
P0Y
MODIFY P0Y
SATISFY REFS
.ALL
SATISFY DATA
.ALL
SUPPRESS
.ALL
RETAIN
ICL9CEZperq3IMP
SUPPRESS DATA
.ALL
CLOSE
==== ercc07/makedrs_gen6.txt ====
parm nocheck
edit drsgen06s,dgens
a/%incl/d1i<itrimp_hostcodes>
a'd1i<ercs01:ebits_ecodes28>
a'd1i<tripcnsts>
a'd1i<itrimp_tform2s>
a'd1i<ercs01:ebits_especs5>
ta/host=/r6i/DRS/
e
imp dgens,.null
transfer dgens,epcfta(pds,peathag)d386p4s11.i,file
==== ercc07/pdsputs.txt ====
{*********************}
{* EMAS 370 *}
{* PUT INTERFACE *}
{* April 22 1985 *}
{*********************}
%CONSTSTRING (31) PUTVERSION= "PUT: version 13th November 1985"
{ These are the low level code and object generation routines which are common}
{ to our XA compilers in the EMAS 370 environment. }
{April 22nd - Began move to new object file format. Incorporated LPUT functions}
{ April 18th - added Fortran features: Switch Val and Entry }
{ Tracing control }
%CONSTINTEGER ON= 1, OFF = 2
%CONSTINTEGERNAME PTURNSA=x'003008d4'
%CONSTSTRING (5) %ARRAY CHEADINGS(0:15)="pinit","pterm","pjump","plabl",
==== ercc07/eamdgen00s.txt ====
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
! Opnd2 is either a 32 bit const with the size (ACC) as value or
! the ptr or arrayhead as normal operand.
!
! VMY X1 is now dim<<28!maxdim<<24!array name(where known)
! Opnd2 is either a 32 bit const with DV offset into const area or
! the arrayhead as a standard operand
!
! AINDX X1 is ELSIZE<<20 !spare
! Opnd2 is arrayhead as standard operand
! NOTE:- The Operands have been swopped for consistency with norm.
!
==== ercc07/ifast8s.txt ====
%INCLUDE "ercc07:ibmsup_comf370"
%INCLUDE "ercc07:ibmsup_page0f"
%INCLUDE "ercc07:ibmsup_dtform1s"
%INCLUDE "ercc07:ibmsup_xaioform"
%RECORDFORMAT PARMF(%INTEGER DEST,SRCE,(%INTEGER P1,P2,P3,P4,P5,P6 %ORSTRING (23) TEXT))
%CONSTINTEGER PCELLSIZE=36,MARGIN=48
%RECORDFORMAT PDOPEF(%INTEGER CURRMAX,MAXMAX,FIRST UNALLOC,LAST UNALLOC,NEXTPAGE,S1,S2,S3,S4)
%RECORDFORMAT PARMXF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6,LINK)
%CONSTRECORD (PARMXF) %ARRAYNAME PARM=PARM0AD
%CONSTRECORD (PDOPEF) %NAME PARMDOPE=PARM0AD
%RECORDFORMAT STOREF(%SHORTINTEGER FLAGS,USERS,LINK,BLINK,FLINK)
%CONSTRECORD (STOREF) %ARRAYNAME STORE=STORE0AD
!
%EXTERNALLONGINTEGER SEMATIME=0
%OWNINTEGER PARMASL=0
%EXTERNALINTEGER MAINQSEMA=-1
%EXTERNALINTEGERSPEC STORESEMA
%OWNINTEGERARRAY GET NEW PAGE(0:14); ! parms for call of new epage
!
%CONSTINTEGER LOCSN1=LOCSN0+MAXPROCS
%RECORDFORMAT SERVF(%INTEGER P,L)
==== ercc07/trimp_pnxponeas.txt ====
%INCLUDE "ERCC07.TRIMP_HOSTCODES"
%CONSTINTEGER HOST=EMAS
%CONSTINTEGER TARGET=PNX
! PRODUCED BY OLDPS FROM TRIMP_PNXPS01 ON 06/09/83
%CONSTBYTEINTEGERARRAY CLETT(0: 436)= 1,
40, 1, 41, 1, 42, 1, 44, 2, 201, 198, 6, 213, 206, 204,
197, 211, 211, 5, 215, 200, 201, 204, 197, 5, 213, 206, 212, 201,
204, 3, 198, 207, 210, 1, 61, 5, 193, 204, 201, 193, 211, 7,
201, 206, 212, 197, 199, 197, 210, 4, 210, 197, 193, 204, 4, 204,
207, 206, 199, 4, 194, 217, 212, 197, 6, 211, 212, 210, 201, 206,
199, 4, 200, 193, 204, 198, 5, 211, 200, 207, 210, 212, 6, 210,
197, 195, 207, 210, 196, 7, 210, 207, 213, 212, 201, 206, 197, 2,
198, 206, 3, 205, 193, 208, 8, 198, 213, 206, 195, 212, 201, 207,
206, 4, 206, 193, 205, 197, 9, 193, 210, 210, 193, 217, 206, 193,
205, 197, 9, 207, 198, 208, 210, 207, 199, 210, 193, 205, 6, 207,
198, 198, 201, 204, 197, 6, 207, 198, 204, 201, 211, 212, 6, 198,
207, 210, 205, 193, 212, 3, 206, 207, 212, 3, 193, 206, 196, 2,
207, 210, 1, 58, 4, 211, 208, 197, 195, 5, 193, 210, 210, 193,
217, 3, 207, 215, 206, 8, 197, 216, 212, 197, 210, 206, 193, 204,
9, 197, 216, 212, 210, 201, 206, 211, 201, 195, 8, 195, 207, 206,
211, 212, 193, 206, 212, 5, 195, 207, 206, 211, 212, 5, 197, 214,
==== ercc07/trimp_ibmlink.txt ====
LINK
IP1Y
IP2Y
IOPTY
IGENY
CSERV01Y
ERCC10.IBMRECODEY
ERCS12.IPUT_IPUT01Y
.END
P0Y
MODIFY P0Y
SATISFY REFS
.ALL
SATISFY DATA
.ALL
SUPPRESS
.ALL
RETAIN
ICL9CEZIBMIMP
SUPPRESS DATA
.ALL
==== ercc07/puts.txt ====
{*********************}
{* XA EMAS3 *}
{* PUT INTERFACE *}
{* Sept 26 1984 *}
{*********************}
{ These are those low level code and object generation routines which are common}
{ to our XA compilers in the EMAS3 environment. }
{ Tracing control }
%constinteger On= 1, Off = 2
%constinteger Tracing= Off { Controls conditional compilation }
{ Trace all significant calls on interface if: }
{ comreg(26)&1#0 (Major calls) or }
{ ComReg(26)&2#0 (Code planting calls) }
==== ercc07/ibmsup_xaioform.txt ====
!
! orbf is format for an operation request block
! irbf is format for interrupt response block
! schibf is the format for a subchannel inf block used by MSCH
!
%recordformat orbf(%integer ip,keytags,cpaddr)
%recordformat irbf(%integer keycntr,csw1,csw2,xstatusw,%integerarray ecws(0:11))
%recordformat schibf(%integer ip,%short flags,devno,%byte lpm,pnom,lpum,pim,
%short mbi,%byte pom,pam,chipd0,chipd1,chipd2,chipd3,chipd4,chipd5,
chipd6,chipd7,%integer zword,keycntrl,csw1,csw2,md0,md1,md2)
!
! end of file xaioform
!
==== ercc07/pprof01s.txt ====
%externalROUTINE PPROFILE %alias "S#PPROFILE"(%INTEGER tabad)
%INTEGER LINES,V,I,J,MAX,MAXMAX
LINES=integer(tabad)
MAX=0
%CYCLE I=1,1,LINES
%IF INTEGER(tabad+4*I)>MAX %THEN MAX=INTEGER(tabad+4*I)
%REPEAT
MAXMAX=MAX
MAX=1+MAX//40; ! TWO&AHALF PER CENT
%CYCLE I=1,1,LINES
V=INTEGER(tabad+4*I)
%IF V>=MAX %THEN %START
WRITE(I,4)
J=I
J=J+1 %WHILE INTEGER(tabad+4*J+4)=V
%IF J#I %THEN PRINTSTRING("->") %AND WRITE(J,4) %C
%ELSE SPACES(7)
I=J
WRITE(V,6)
%IF V=MAXMAX %THEN PRINTSTRING(" ***")
==== ercc07/bootgen1s.txt ====
!
! Copyright P.D.Stephens 1988
! This is a modified Ecode generator with chenges so that it is available
! for rapid implementation of a complete compiler system. The aim is to be able
! to bring up EMAS compilers fast on another system if there is a big bang
! change in the near future. Also this version is intended to be "Definitive"
! ie to define what some of the more specialised operations have to do.
! To this aid extended commentary has been added.
!
! The following changes have been made from a standard generator
!
! 1) All eops go via one routine(EOP). The Ef77op, Epasop etc are dummies
!
! 2) As many specialized operations as possible are re-implemted in terms
! of simplier Ecode operations. This makes the generator highly recursive
!
! 3) Address and refer are implemented as far as possible via state
! transitions not by planting code
!
! 4) A routine Trapjump (QV) has been introduced to tidy up error exits
==== ercc07/trimp_perqps01.txt ====
43
D(NAME)
D(ICONST)
D(CONST)
D(DUMMYSTART)
D(N)
D(S)
D(TEXT)
D(BIGHOLE)
D(N255)
D(HOLE)
D(MARK)
D(READLINE?)
D(TEXTTEXT)
D(DUMMYAPP)
D(DOWN)
D(UP)
D(LISTON)
D(LISTOFF)
D(COLON)
D(NOTECONST)
==== ercc07/gbits_gldauxst2s.txt ====
! 06/01/89 - Combined aux stack support for IMP and Pascal
! The old routine iauxst is included for back compatability
! but will eventually be dropped
!
%constinteger trace=0
%constinteger auxsize=x'20000'
!*
!
! dont disturb the order of the next 3 lines assumed by IMp compiler
!
%externalinteger auxcur %alias "p_aux"
%owninteger auxtop
%owninteger auxbase=0
!*
%externalintegerfnspec malloc(%integer size)
!*
%externalroutine Initaux (%integer auxsize { in Kilobytes})
%integer amount
%if auxbase#0 %then %return; ! already initialised
%if Auxsize < 16 %then Auxsize=16
Amount = auxsize<<10
==== ercc07/vaxsup_setsigsc.txt ====
#include <signal.h>
#define DELLCCOMPILER
extern onsignal();
f_setsigs ()
{
/* Set traps to take interrupts to IMP diagnostics */
if ((int)signal(SIGFPE, SIG_IGN) != SIG_IGN) signal(SIGFPE, onsignal);
if ((int)signal(SIGILL, SIG_IGN) != SIG_IGN) signal(SIGILL, onsignal);
if ((int)signal(SIGEMT, SIG_IGN) != SIG_IGN) signal(SIGEMT, onsignal);
if ((int)signal(SIGSEGV, SIG_IGN) != SIG_IGN) signal(SIGSEGV, onsignal);
if ((int)signal(SIGIOT, SIG_IGN) != SIG_IGN) signal(SIGIOT, onsignal);
if ((int)signal(SIGQUIT, SIG_IGN) != SIG_IGN) signal(SIGQUIT, onsignal);
if ((int)signal(SIGBUS, SIG_IGN) != SIG_IGN) signal(SIGBUS, onsignal);
}
==== ercc07/ifast9s.txt ====
%INCLUDE "ercc07:ibmsup_comf370"
%INCLUDE "ercc07:ibmsup_page0f"
%INCLUDE "ercc07:ibmsup_dtform1s"
%INCLUDE "ercc07:ibmsup_xaioform"
%RECORDFORMAT PARMF(%INTEGER DEST,SRCE,(%INTEGER P1,P2,P3,P4,P5,P6 %ORSTRING (23) TEXT))
%CONSTINTEGER PCELLSIZE=36,MARGIN=48
%RECORDFORMAT PDOPEF(%INTEGER CURRMAX,MAXMAX,FIRST UNALLOC,LAST UNALLOC,NEXTPAGE,S1,S2,S3,S4)
%RECORDFORMAT PARMXF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6,LINK)
%CONSTRECORD (PARMXF) %ARRAYNAME PARM=PARM0AD
%CONSTRECORD (PDOPEF) %NAME PARMDOPE=PARM0AD
%RECORDFORMAT STOREF(%SHORTINTEGER FLAGS,USERS,LINK,BLINK,FLINK)
%CONSTRECORD (STOREF) %ARRAYNAME STORE=STORE0AD
!
%EXTERNALLONGINTEGER SEMATIME=0
%OWNINTEGER PARMASL=0
%EXTERNALINTEGER MAINQSEMA=-1
%EXTERNALINTEGERSPEC STORESEMA
%OWNINTEGERARRAY GET NEW PAGE(0:14); ! parms for call of new epage
!
%CONSTINTEGER LOCSN1=LOCSN0+MAXPROCS
%RECORDFORMAT SERVF(%INTEGER P,L)
==== ercc07/vaxsup_imp81cld.txt ====
MODULE imp80_table
DEFINE VERB IMP80
QUALIFIER LIST, NEGATABLE
QUALIFIER DIAG, NEGATABLE
QUALIFIER CHECK, NEGATABLE
QUALIFIER ARRAY, NEGATABLE
QUALIFIER TRACE, NEGATABLE
QUALIFIER OPT, NONNEGATABLE
QUALIFIER LINE, NEGATABLE
QUALIFIER MAP, NONNEGATABLE
QUALIFIER CODE, NEGATABLE
QUALIFIER PARMZ, NEGATABLE
QUALIFIER PARMY, NEGATABLE
QUALIFIER PARMX, NEGATABLE
DISALLOW OPT AND (CHECK OR ARRAY OR DIAG)
IMAGE "U1:[ERCC07]IMP80"
PARAMETER P1,PROMPT="Source file",LABEL=SOURCEFILE,VALUE(REQUIRED,TYPE=$FILE)
==== ercc07/putspecs.txt ====
{* IBM XA Code Planting routinespecs *}
{******** Monitoring *********}
{ Parm CODE will cause a line by line decode of instructions }
{ Monitoring of all non-code planting is turned on by PMonOn or bit 1 of }
{ COMREG(26). Monitoring of code planting is turned on by bit 2 of COMREG(26) }
{ COMREG(26)=128 causes decoding of each instruction as planted }
{ COMREG(26)=256 causes decoding of the whole code area after fixups }
{* The following routinespecs have been provided initially, corresponding to the *}
{* formats given in the "Principles of Operation". *}
%externalroutinespec PIX RR %alias "S#PIXRR" (%integer Op, R1, R2)
{ Plant RR format instruction }
%externalroutinespec PIX RRE %alias "S#PIXRRE"(%integer Op, R1, R2)
{ Plant RRE format instruction }
%externalroutinespec PIX RX %alias "S#PIXRX" (%integer Op, R1, X2, B2, D2)
{ Plant RX format instruction }
==== ercc07/ibmsup_config370.txt ====
!
! 4341 configuration
!
%constinteger cf entry size=32
%constinteger cfentries=8
%constintegerarray config file(0:cfentries*(cf entry size//4)-1)= %c
cfentries*cf entry size,1,1,6,x'282',1,500,0,
3,m'FD00',x'193',0,3,0,0,0,
mt<<16!x'ff',10,512,0,0,x'281',m'M60',x'00ff0000',
mt<<16!x'ff',10,512,0,0,x'282',m'M60',x'00000100',
op<<16!x'ff',10,512+oper screen size,0,0,x'9',m'OP0',0,
lp<<16!x'ff',60,2048,0,0,x'e',m'LP0',0,
cr<<16!x'ff',300,512,0,0,x'c',m'CR0',0,
cp<<16!x'ff',300,512,0,0,x'd',m'CP0',0
!
==== ercc07/makeimp.txt ====
parm nocheck,maxdict
imp ercc07:itrimp_ibmponeas+ercc07:poneb02s,ip12y,l0
imp ercc07:itrimp_ibmptwoas+timp03s,ip23y,l1
imp ercc07:itrimp_ibmoptas+opt03s,iopt3y,l2
imp ibmgen05s,igen5y,l5
==== ercc07/drsgen03s.txt ====
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
! Opnd2 is either a 32 bit const with the size (ACC) as value or
! the ptr or arrayhead as normal operand.
!
! VMY X1 is now dim<<28!maxdim<<24!array name(where known)
! Opnd2 is either a 32 bit const with DV offset into const area or
! the arrayhead as a standard operand
!
! AINDX X1 is ELSIZE<<20 !spare
! Opnd2 is arrayhead as standard operand
! NOTE:- The Operands have been swopped for consistency with norm.
!
==== ercc07/makep3_p1.txt ====
edit poneb01s,p3p1s
i<itrimp_perq3poneas>
ta/%inc/
d1i<itrimp_hostcodes>
a'
d1i<itrimp_tform2s>
m/%constlonglongreal/
(a/r'/a16d/'/i/'/)154
e
imp p3p1s,.null
offer p3p1s,ercs01
==== ercc07/makep3_p2.txt ====
edit timp02s,p3p2s
i<itrimp_perq3ptwoas>
ta/%inc/
d1i<itrimp_hostcodes>
a'
d1i<tripcnsts>
a'
d1i<itrimp_tform2s>
e
imp p3p2s,.null
offer p3p2s,ercs01
==== ercc07/perfs.txt ====
%CONSTINTEGER MAXPROCS=256
%CONSTINTEGER YES=1,NO=0
%CONSTINTEGER VAMODE=YES
%CONSTINTEGER COM SEG=31
%CONSTINTEGER LOCSN0=64
%CONSTINTEGER PAGESIZE=4096
%CONSTINTEGER SSHIFT=20
%INCLUDE "ercc07:ibmsup_comf370"
!-----------------------------------------------------------------------
%CONSTINTEGER EPAGESPERSEC=600; !EPAGES THRU one DISC CONTROLLER PER SECOND
!----------------------------------------------------------------------
%EXtERNALSTRINGFUNCTIONSPEC ITOS %alias "S#ITOS" (%INTEGER N)
%EXTERNALROUTINESPEC MOVE %ALIAS "S#MOVE"(%INTEGER NLENGTH,NFROM,NTO)
%EXTERNALROUTINESPEC PROMPT %alias "S#PROMPT"(%STRING (255) S)
==== ercc07/pdiags1.txt ====
!*
!*
!***********************************************************************
!***********************************************************************
!* *
!* P A S C A L P O S T M O R T E M D I A G N O S T I C S *
!* *
!***********************************************************************
!***********************************************************************
!*
!*
!* History
!* -------
!*
!* Version 1 for PERQ2.
!*
%CONST %INTEGER PERQ2= 0;
%CONST %INTEGER PERQ3= 1;
%CONST %INTEGER AMDAHL= 2;
%CONST %INTEGER GOULD= 3;
%CONST %INTEGER HOST= AMDAHL
==== ercc07/trimp_ibmponeas.txt ====
%INCLUDE "ERCC07.TRIMP_HOSTCODES"
%CONSTINTEGER HOST=EMAS
%CONSTINTEGER TARGET=IBMXA
! PRODUCED BY OLDPS FROM TRIMP_IBMPS01 ON 12/04/84
%CONSTBYTEINTEGERARRAY CLETT(0: 440)= 1,
40, 1, 41, 1, 42, 1, 44, 2, 201, 198, 6, 213, 206, 204,
197, 211, 211, 5, 215, 200, 201, 204, 197, 5, 213, 206, 212, 201,
204, 3, 198, 207, 210, 1, 61, 5, 193, 204, 201, 193, 211, 7,
201, 206, 212, 197, 199, 197, 210, 4, 210, 197, 193, 204, 4, 204,
207, 206, 199, 4, 194, 217, 212, 197, 6, 211, 212, 210, 201, 206,
199, 4, 200, 193, 204, 198, 5, 211, 200, 207, 210, 212, 6, 210,
197, 195, 207, 210, 196, 7, 210, 207, 213, 212, 201, 206, 197, 2,
198, 206, 3, 205, 193, 208, 8, 198, 213, 206, 195, 212, 201, 207,
206, 4, 206, 193, 205, 197, 9, 193, 210, 210, 193, 217, 206, 193,
205, 197, 9, 207, 198, 208, 210, 207, 199, 210, 193, 205, 6, 207,
198, 198, 201, 204, 197, 6, 207, 198, 204, 201, 211, 212, 6, 198,
207, 210, 205, 193, 212, 3, 206, 207, 212, 3, 193, 206, 196, 2,
207, 210, 1, 58, 4, 211, 208, 197, 195, 5, 193, 210, 210, 193,
217, 3, 207, 215, 206, 8, 197, 216, 212, 197, 210, 206, 193, 204,
9, 197, 216, 212, 210, 201, 206, 211, 201, 195, 8, 195, 207, 206,
211, 212, 193, 206, 212, 5, 195, 207, 206, 211, 212, 5, 197, 214,
==== ercc07/makep3_opt.txt ====
edit opt03s,p3pos
i<itrimp_perq3optas>
ta/%inc/
d1i<itrimp_hostcodes>
a'
d1i<itrimp_tform2s>
a'
d1i<tripcnsts>
e
imp p3pos,.null
offer p3pos,ercs01
==== ercc07/sldxas.txt ====
TITLE 'EMAS 370/XA self loading dump'
*
* R.D. Eager University of Kent MCMLXXXVI
* P.D.Stephens University of Edinburgh upgraded to format 1 ccws
* This module is loaded at real x1008 runs in page 1
*
SLD START
*
DC X'0DC0' * BASR 12,0 set up base register
USING *,12
*
L 1,184(0) * get IPL subsystem ID
*
LA 2,8 * make upper half of EC mode PSW
SLL 2,16 * generates X80000
LA 3,IOINT * address of I/O interrupt handler
STM 2,3,120(0) * set up I/O interrupt vector
OI 124(0),X'80' * Set 31 bit mode
LA 3,PEINT * address of program interrupt handler
STM 2,3,104(0) * set up program interrupt vector
OI 108(0),X'80' * Set 31 bit mode
==== ercc07/drsgen04s.txt ====
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
! Opnd2 is either a 32 bit const with the size (ACC) as value or
! the ptr or arrayhead as normal operand.
!
! VMY X1 is now dim<<28!maxdim<<24!array name(where known)
! Opnd2 is either a 32 bit const with DV offset into const area or
! the arrayhead as a standard operand
!
! AINDX X1 is ELSIZE<<20 !spare
! Opnd2 is arrayhead as standard operand
! NOTE:- The Operands have been swopped for consistency with norm.
!
==== ercc07/drsimpcmds.txt ====
%externalintegermapspec Comreg%alias "S#COMREGMAP"(%integer N)
%externalroutinespec compile%alias "S#COMPILE"(%string(255) s, %string(31) entry,
%integername flag)
%externalstringfnspec failuremessage %alias"s#failuremessage" (%integer n)
%externalroutine orionimp %alias "C#ORIONIMP"
%integer flag
%string(255) s
s=""
compile(s,"ICL(CEZORIONIMP",flag)
printstring(failuremessage(flag)) %and %stop %unless flag=0
%end
%externalroutine DRSIMP %alias "C#DRSIMP"
%integer flag
%string(32) File
compile(file,"ICL9CEZDRSIMP",flag)
printstring( failuremessage(flag)) %and %stop %unless flag=0
%return %unless comreg(24)=0 %or comreg(24)=8
%end
%externalroutine UIMP %alias "C#UIMP"
%string(32)file
%integer flag
==== ercc07/trimp_emasps01.txt ====
43
D(NAME)
D(ICONST)
D(CONST)
D(DUMMYSTART)
D(N)
D(S)
D(TEXT)
D(BIGHOLE)
D(N255)
D(HOLE)
D(MARK)
D(READLINE?)
D(TEXTTEXT)
D(DUMMYAPP)
D(DOWN)
D(UP)
D(LISTON)
D(LISTOFF)
D(COLON)
D(NOTECONST)
==== ercc07/drsgen05s.txt ====
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
! Opnd2 is either a 32 bit const with the size (ACC) as value or
! the ptr or arrayhead as normal operand.
!
! VMY X1 is now dim<<28!maxdim<<24!array name(where known)
! Opnd2 is either a 32 bit const with DV offset into const area or
! the arrayhead as a standard operand
!
! AINDX X1 is ELSIZE<<20 !spare
! Opnd2 is arrayhead as standard operand
! NOTE:- The Operands have been swopped for consistency with norm.
!
==== ercc07/docs_edit.txt ====
New Features in EMAS Editor
---------------------------
A new version of the EMAS Editor (invoked by the Command EDIT) will be
introduced in October or when the 2988 hardware problems currently affecting
editors have been resolved. The most important of the new features is that the
Editor will save any editing when the process is closed down during an edit
session. The output will be written into a file E#EHA where it can be inspected
and copied to the required destination. Editing will no longer be lost for
communications breaks or user inactivity. The feature cannot guarantee to save
editing over system failures. Obviously at least one OCP, one disc controller
and the relevant file system disc must be operational before editing can be
saved. A report is left in the RECALL file whenever editing has been saved.
Other commands changed are:
A,M (etc) All text searching commands are now based on case independent text
matching. Thus "M/Fred/" will move to "FRED" or "fred" as well as
"Fred". The previous mode of case dependent matching can be restored
==== ercc07/makegld_p1.txt ====
offer gldp1s
parm nocheck,nolist
edit poneb02s,gldp1s
i<itrimp_gldponeas>
ta/%inc/
d1i<itrimp_hostcodes>
a'
d1i<itrimp_tform2s>
e
imp gldp1s,.null
offer gldp1s,ercs01
==== ercc07/docs_vectorp.txt ====
In spite of the progress made recently with parallel machines and the
variety of applications which have been adapted for parallel techniques, there
remain a variety of numerically intensive applications requiring a fast single
processor. A vector processor is just such a fast single stream machine with
additional hardware to accelerate repeated similar calculations as might be
applied to arrays of data. The University is fortunate in having a Gould NP1
machine on loan for a joint communications project and this is providing
valuable experience in this area. It is possible that the loan will be come
permanent if the University can raise fund to cover the maintenance.
The magnitude of acceleration provided by a Vector processor is limited; a
factor of four or five seems to be the limit and the average increase in
performance of a lengthy and varied calculation is typically two to two and half
times. However Vector processors have one priceless advantage in that
reprogramming is not normally needed. The minor rearrangement of the (normally
Fortran) source is within the capabilities of current optimizing compiler
technology and the enhanced performance can usually be gained simply by
recompilation. Further accessible enhancement will come when certain scientific
subroutines like the NAG Library are available in vector form. For this reason
Vector processors are likely to have a permanent place in research orientated
computing
==== ercc07/makegld_p2.txt ====
parm nocheck,nolist
edit timp06s,gldp2s
i<itrimp_gldptwoas>
ta/%inc/
d1i<itrimp_hostcodes>
a'
d1i<tripcnsts>
a'
d1i<itrimp_tform2s>
e
imp gldp2s,.null
transfer gldp2s,epcpnb(pds,peathag)p2v12.i,file
==== ercc07/ibmsup_lcform2s.txt ====
%constinteger LSTLEN=256; ! LOCAL SEGMENT TABLE LENGTH
%constinteger CBTLEN=299; ! LENGTH OF CBT TABLE
%constinteger CONTEXTL=192; ! LENGTH OF AN IBM CONTEXT
%constinteger LCONTN=5; ! NO OF LOCAL CONTEXTS
!
! CONTEXTF A SORT OF SSN+1
%recordformat CONTEXTF((%integer psw0,psw1 %or %longinteger PSW),
{8}%integerarray GR(0:15),
{72}FR(0:7),{104}CONTROLR(0:15),{168}%longinteger CPUTIMER,
%integer ASYNI,SUSP,%short PECODE,ILC,%integer spare)
! PARMF FOR PARAMETER PASSING(32 BYTES
%recordformat PARMF((%integer DEST,SRCE %OR %short DSNO,DACT,SSNO,SACT),
(%integer P1,P2,P3,P4,P5,P6 %OR %integerarray P(1:6) %OR %C
%string(6)USER,%byte INCAR,%string(15)INTMESS))
!
! SIGOUTPF FOR PASSING SIGNALS(48 BYTES)
%recordformat SIGOUTPF(%integer DEST,SRCE,P1,P2,P3,P4,P5,P6,TYPE,SSN,SSNAD,SUSP)
!
! CBT THE CLAIMED BLOCK FORMAT
%recordformat CBTF(%integer DA,%short AMTX,%byte LNGTH,TAGS)
! CBT FLAGS DEFINED AS FOLLOWS
==== ercc07/drsgen06s.txt ====
! 26Sep90 Chnages for Unix shared code for unix 5.4 and later
!
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
! Opnd2 is either a 32 bit const with the size (ACC) as value or
! the ptr or arrayhead as normal operand.
!
! VMY X1 is now dim<<28!maxdim<<24!array name(where known)
! Opnd2 is either a 32 bit const with DV offset into const area or
! the arrayhead as a standard operand
!
! AINDX X1 is ELSIZE<<20 !spare
! Opnd2 is arrayhead as standard operand
==== ercc07/makevns_p1.txt ====
edit poneb01s,vp1s
i<itrimp_vnsponeas>
ta/%inc/
d1i<itrimp_hostcodes>
a'
d1i<itrimp_tform2s>
m/%constlonglongreal/
e
imp vp1s,.null
offer vp1s,eepz06
==== ercc07/trimp_ibmps01.txt ====
43
D(NAME)
D(ICONST)
D(CONST)
D(DUMMYSTART)
D(N)
D(S)
D(TEXT)
D(BIGHOLE)
D(N255)
D(HOLE)
D(MARK)
D(READLINE?)
D(TEXTTEXT)
D(DUMMYAPP)
D(DOWN)
D(UP)
D(LISTON)
D(LISTOFF)
D(COLON)
D(NOTECONST)
==== ercc07/makevns_p2.txt ====
edit timp02s,vp2s
i<itrimp_vnsptwoas>
ta/%inc/
d1i<itrimp_hostcodes>
a'
d1i<tripcnsts>
a'
d1i<itrimp_tform2s>
e
imp vp2s,.null
offer vp2s,eepz06
==== ercc07/emas-2900/perqtrimp_blurb.txt ====
This comprises all the Perq (pos) components of triple imp together
with the latest versions of pass1 &pass2. It will not make a working
compiler since one or two more facilities are needed in Perqgen
to keep up with the latest additions to tripleimp. It does from the basis
of a further implementation should Pos every be reurrected.
PDS 12/09/83
==== ercc07/emas-2900/sup26csrce_makeopt.txt ====
PARM FREE,OPT,STACK,NOLIST
IMP CTOPT+SUP26CSRCE_SUP26CS,SUPZZ,,.OUT
IMP CTOPT+SUP26CSRCE_COM29S,COMZZ,,.OUT
IMP CTOPT+SUP26CSRCE_PRINT04S,PRINTZZ,,.OUT
IMP SUP26CSRCE_OPER31S,OPERZZ,,.OUT
IMP SUP26CSRCE_ENTER04S,ENTERZZ,,.OUT
IMP SUP26CSRCE_GPC28S,GPCZZ,,.OUT
IMP SUP26CSRCE_NDIAG06S,NDIAGZZ,,.OUT
IMP CTOPT+SUP26CSRCE_COMMS42S,COMMSZZ,,.OUT
IMP CTOPT+SUP26CSRCE_FAST27S,FASTZZ,,.OUT
IMP SUP26CSRCE_TAPE65S,TAPEZZ,,.OUT
PARM MAP
LINK
SUPZZ
COMZZ
PRINTZZ
OPERZZ
ENTERZZ
GPCZZ
NDIAGZZ
COMMSZZ
==== ercc07/emas-2900/pnxgen04s.txt ====
%INCLUDE "ERCS04.PNX_CCODES"
%INCLUDE "ERCC07.TRIPCNSTS"
%INCLUDE "ERCC07.TRIMP_TFORM1S"
%CONSTINTEGER ESTK=0,BR0=1,BR1=2,BR2=3,BR3=4,FR0=5,FR1=6,FR2=7,FR3=8,
BRN=BR0<<16!BR3,FRN=FR0<<16!FR3
%RECORDFORMAT REGF(%INTEGER CL,(%INTEGER USE %OR %HALF SECUSE,PRIMUSE),
%INTEGER INF1,INF2,AT,LINK)
%OWNINTEGER CABUF,GLACABUF,GLABEL,FPPTR,FPHEAD
%OWNINTEGERNAME CA,GLACA,PPCURR
%OWNINTEGERARRAYNAME CTABLE,TAGS
!%OWNBYTEINTEGERARRAYNAME CODE
%OWNRECORD(LISTF)%ARRAYNAME ASLIST
%EXTRINSICINTEGERARRAY CAS(0:12)
%EXTRINSICRECORD(WORKAF)WORKA
%EXTRINSICRECORD(PARMF) PARM
%CONSTINTEGER MAXREG=8
%OWNRECORD(REGF)%ARRAY REGS(0:MAXREG)
%EXTERNALROUTINESPEC FLAGAND FOLD(%RECORD(TRIPF)%ARRAYNAME T)
%SYSTEMINTEGERMAPSPEC COMREG(%INTEGER N)
%EXTERNALROUTINESPEC FAULT(%INTEGER I,J,K)
%INCLUDE "ERCS04.PNX_PUTSPECS"
==== ercc07/emas-2900/dectalk.txt ====
Introduction
Edinburgh University has run its computing service on essentially the same
software since 1970. This has been achieved by Porting an entire Operating
System twice. The three machines used as Hosts had little in common except for
byte addressing and virtual address support. The User community have had an
exceptionally smooth transition between incompatable hardware which arrived with
very different suppliers systems.
It would be nice to report that these 15 years of stabiltity in a fast
changeing world was the result of immense far sightedness on the part of the
team who constructed the orignal EMAS system during 1967-70. However it would
also be quite incorrect to do so.
This talk, like Gaul, is divided into three parts. Firstly I will describe
what actually happened. Then I will describe some design feature of EMAS which
led to it being transported twice and finally I will present some of the
advantages and disadvantages of running on Portable software.
History.
==== ercc07/emas-2900/sup28asrce_samplectopt.txt ====
!
! THIS FILE CONTAINS THE CONST INTEGERS TO CONTROL COMPILE TIME OPTIONS
! IN EMAS2900
! IT IS INTENDED TO BE CONCATENATED ONTO THE FRONT OF SOURCEFILES
! BEFORE COMPILATION
%CONSTINTEGER YES=1
%CONSTINTEGER NO=0
%CONSTINTEGER SSERIES=NO; ! NO=PSERIES, YES=SSERIES
%CONSTINTEGER RECONFIGURE=YES; ! NO TO EXCLUDE DYNAMIC CONFIGURATION
%CONSTINTEGER MULTIOCP=YES; ! YES TO INCLUDE SEMAPHORING
%CONSTINTEGER SFCFITTED=NO; ! NO FOR DISC ONLY SITES
%CONSTINTEGER CPFITTED=NO; ! CARD PUNCH FITTED
%CONSTINTEGER CSU FITTED=NO; ! SWITCH UNIT
%CONSTINTEGER SNOOZING=YES; ! YES ALLOWS SUSPEND IN STORE
! ADVANTAGEOUS WITH LARGE STORES
%CONSTINTEGER PRODUCTION=NO; ! YES FOR CONTINUING AFTER
! SOFTWARE ERRORS(MOST OF WHICH
! ARE DUE TO HARDWARE!)
%CONSTINTEGER MONLEVEL=7; ! 0=NO MONITORING
! 2**0 SET=VIDEO UPDATING
==== ercc07/emas-2900/ibmgen02s.txt ====
%INCLUDE "ERCC07.TRIMP_HOSTCODES"
%CONSTINTEGER HOST=EMAS
%CONSTINTEGER TARGET=AMDAHL
%CONSTINTEGER FOURKTDISP=0
%INCLUDE "ERCC10.OPOUTS"
!
%CONSTINTEGER LGR=X'58',AND=X'54',ICP=X'59'; ! VARIANT MNEMONICS
%IF TARGET=IBM %THEN %START
%OWNINTEGER BALCODE=BAL
%FINISH %ELSE %START
%OWNINTEGER BALCODE=BAS
%FINISH
%CONSTINTEGER MARGIN=512; ! MARGIN FOR ADRESSABILITY
%CONSTINTEGER MAXREG=19; ! FOR DECLARING REGISTER ETC
%CONSTINTEGER CODER=12
%CONSTINTEGER WSPR =11
%CONSTINTEGER GLAREG =13
%CONSTINTEGER LINKREG=15; ! REGISTER FOR RETURN ADDRESS
%CONSTINTEGER EPREG=14; ! REGISTER HOLDING RT ENTRYPOINT
%CONSTINTEGER CTABLEREG=14; ! REGISTER HOLDING CONSTANT TABLE
%CONSTINTEGER GR0=X'000F0000'; ! ANY GR FROM 0-15
==== ercc07/emas-2900/sup26esrce_releasen.txt ====
SUPERVISOR RELEASE NOTICE VSN 26E
_________________________________
This Supervisor incorporates the following changes:-
1) Has code to single up duals by abandonding 1 OCP.
2) Has revised scheduling with 5 priority queues.
This enables batch throughput to be improved
by discriminating against cpu-bound terminal jobs.
3) Has improved COMMS(45) which supports the "FEPUP n"
command for recovering a crashed FEP.
==== ercc07/emas-2900/sup25jsrce_makechkd.txt ====
PARM PARMX,STACK,NOCHECK,NOLIST
IMP SUP25JSRCE_SUP25JS,SUP25ZZ,,.OUT
IMP SUP25JSRCE_COM24S,COM24ZZ,,.OUT
IMP SUP25JSRCE_PRINT01S,PRINT01ZZ,,.OUT
IMP SUP25JSRCE_GPC22S,GPC22ZZ,,.OUT
IMP SUP25JSRCE_COMMS38S,COMMS38ZZ,,.OUT
PARM PARMX,OPT,STACK,NOLIST
IMP SUP25JSRCE_NDIAG06S,NDIAG06ZZ,,.OUT
IMP SUP25JSRCE_FAST24S,FAST24ZZ,,.OUT
IMP SUP25JSRCE_TAPE63S,TAPE63ZZ,,.OUT
PARM MAP
LINK
SUP25ZZ
COM24ZZ
PRINT01ZZ
GPC22ZZ
NDIAG06ZZ
COMMS38ZZ
FAST24ZZ
TAPE63ZZ
.END
==== ercc07/emas-2900/pnxgen05s.txt ====
%INCLUDE "ERCC07.TRIMP_HOSTCODES"
%CONSTINTEGER HOST=EMAS
%CONSTINTEGER TARGET=PNX
%INCLUDE "ERCS04.PNX_CCODES"
%INCLUDE "ERCC07.TRIPCNSTS"
%INCLUDE "ERCC07.TRIMP_TFORM1S"
%CONSTINTEGER ESTK=0,BR0=1,BR1=2,BR2=3,BR3=4,FR0=5,FR1=6,FR2=7,FR3=8,
BRN=BR0<<16!BR3,FRN=FR0<<16!FR3
%RECORDFORMAT REGF(%INTEGER CL,(%INTEGER USE %OR %HALF SECUSE,PRIMUSE),
%INTEGER INF1,INF2,AT,LINK)
%OWNINTEGER CABUF,GLACABUF,GLABEL,FPPTR,FPHEAD
%OWNINTEGERNAME CA,GLACA,PPCURR
%OWNINTEGERARRAYNAME CTABLE,TAGS
!%OWNBYTEINTEGERARRAYNAME CODE
%OWNRECORD(LISTF)%ARRAYNAME ASLIST
%EXTRINSICINTEGERARRAY CAS(0:12)
%EXTRINSICRECORD(WORKAF)WORKA
%EXTRINSICRECORD(PARMF) PARM
%CONSTINTEGER MAXREG=8
%OWNRECORD(REGF)%ARRAY REGS(0:MAXREG)
%EXTERNALROUTINESPEC FLAGAND FOLD(%RECORD(TRIPF)%ARRAYNAME T)
==== ercc07/emas-2900/wichtests_wt1.txt ====
'BEGIN'
'REAL' X;
'INTEGER' I;
I := 10000000000000000000000000;
X := 1.0&999
'END'
==== ercc07/emas-2900/sup26fsrce_sup26fs.txt ====
!
! TO MAKE S SERIES SUPERVISOR REQUIRES:-
! 1) CHANGE SSERIES=NO TO SSERIES=YES IN CTOPTIONS FILE
! 2) REPLACE COMF BY S SERIES COM IN ERCC08.COMSF
!
!
! THESE CONST INTEGERS DEFINE SIZES AND LAYOUT OF IMPORTANT TABLES
! THEY HAVE TO BE HERE TO BE GLOBAL TO ALL ROUTINES INCLUDING IO ONES
!
%CONSTINTEGER LSTLEN=192; ! LOCAL SEGMENT TABLE LENGTH
%CONSTLONGINTEGER LCACR=1; ! ACR OF LOCAL CONTROLLER
%CONSTINTEGER DIRCSEG=10; ! SEG NO OF DIRECTOR COMMS SEG
%CONSTINTEGER DIRCSEGOFFSET=0; ! FOR ALIGNMENT IF NEEDED
%CONSTINTEGER DIRCSEGAD=DIRCSEG<<18; ! VIRTUAL ADDRESS OF DIR COM SEG
%CONSTINTEGER DIRCSEGL=2048+255+LSTLEN; ! SIZE OF SMAE
! MADE UP OF 2049 FOR CBT
! LSTLEN FOR SST
! 48+64 FOR 2 BITS OF SYTEMCALL TABLE
! 32+48 FOR DIROUTP&SIGOUT
%CONSTINTEGER LSTACKLEN=3; ! LOCAL CONT. STACK ELEN
==== ercc07/emas-2900/wichtests_wt2.txt ====
'BEGIN'
'REAL' AUTOCORRELATIONCOEFFICIENTNUMBER1;
AUTOCORRELATIONCOEFFICIENTNUMBER1 := 0.0;
'BEGIN'
'REAL' AUTOCORRELATIONCOEFFICIENTNUMBER2;
AUTOCORRELATIONCOEFFICIENTNUMBER2 := 1.0;
OUTREAL(99, AUTOCORRELATIONCOEFFICIENTNUMBER1 +
AUTOCORRELATIONCOEFFICIENTNUMBER2 )
'END'
'END'
==== ercc07/emas-2900/wichtests_pete1.txt ====
'BEGIN' 'INTEGER'I,J; 'REAL' X;
J:=15;
'FOR' I:=-10 'STEP' 1 'UNTIL' 10 'DO' 'BEGIN'
X:=9.987654321*10**I;
PRINT(X,0,10); PRINT(X*10**15,0,10);
PRINT(X*10**1,0,10);
NEWLINE
'END';
'END';
==== ercc07/emas-2900/wichtests_wt3.txt ====
L1:
'BEGIN'
'IF' 1 = 2 'THEN'
'GOTO' L1
'END'
==== ercc07/emas-2900/ibmgen03s.txt ====
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
! Opnd2 is either a 32 bit const with the size (ACC) as value or
! the ptr or arrayhead as normal operand.
!
! VMY X1 is now dim<<28!maxdim<<24!array name(where known)
! Opnd2 is either a 32 bit const with DV offset into const area or
! the arrayhead as a standard operand
!
! AINDX X1 is ELSIZE<<20 !spare
! Opnd2 is arrayhead as standard operand
! NOTE:- The Operands have been swopped for consistency with norm.
==== ercc07/emas-2900/wichtests_pete2.txt ====
'COMMENT' CHECK THAT FAULTY ASSIGNMENT TO PROCEDURE NAME IS DETECTED;
'BEGIN'
'INTEGER'C;
'INTEGER''PROCEDURE' CHSP(U); 'INTEGER'U;
'BEGIN' 'INTEGER'X;
'IF' U<CODE({A}) 'THEN' X:=0 'ELSE' X:=1;
CHSP(U):=X
'END';
C:=0;
CHSP(C)
'END';
==== ercc07/emas-2900/perq_xspecs.txt ====
%EXTERNALROUTINESPEC RECODE(%INTEGER S,F,AD)
%EXTERNALROUTINESPEC CODEOUT
%EXTERNALROUTINESPEC PTLATE(%INTEGER WORD)
%EXTERNALROUTINESPEC PWORD(%INTEGER WORD)
%EXTERNALROUTINESPEC PB1(%INTEGER OPCODE)
%EXTERNALROUTINESPEC PB2(%INTEGER OPCODE,BYTE)
%EXTERNALROUTINESPEC PB3(%INTEGER OPCODE,BYTE1,BYTE2)
%EXTERNALROUTINESPEC PB4(%INTEGER OPCODE,B1,B3,B3)
%EXTERNALROUTINESPEC PBW(%INTEGER OPCODE,WORD)
%EXTERNALROUTINESPEC PB2W(%INTEGER OPCODE,BYTE1,WORD)
%EXTERNALROUTINESPEC PERM
%EXTERNALROUTINESPEC CAB
%EXTERNALROUTINESPEC CNOP(%INTEGER I, J)
%EXTERNALROUTINESPEC PGLA(%INTEGER BDRY, L, INF ADR)
%EXTERNALROUTINESPEC PLUG(%INTEGER AREA, AT, VALUE, BYTES)
%EXTERNALROUTINESPEC GXREF(%STRING(31) NAME,%INTEGER MODE,XTRA,AT)
%EXTERNALROUTINESPEC CXREF(%STRING(255) NAME,
%INTEGER MODE,AT,%INTEGERNAME AT)
%EXTERNALROUTINESPEC PINITCALL(%STRING(31) S)
%EXTERNALROUTINESPEC CSTOP
%EXTERNALROUTINESPEC CIOCP(%INTEGER N)
==== ercc07/emas-2900/wichtests_wt4.txt ====
SIN: COS:
'BEGIN'
'REAL' SIN;
SIN := 0.0
'END'
==== ercc07/emas-2900/wichtests_pete3.txt ====
'PROGRAM'PETE;
'BEGIN'
'PROCEDURE'JIM(L,S,ST); 'VALUE'L; 'LABEL'L; 'SWITCH'S;
'STRING'ST; 'ALGOL';
'PROCEDURE'FRED; 'EXTERNAL';
'PROCEDURE'GILES; 'FORTRAN';
'OWN''REAL'X; 'INTEGER'I,J,K; 'BOOLEAN'B1,B2; 'ARRAY'A[1:10];
'FOR'I:=1 'STEP'1 'UNTIL'10,I+1 'WHILE'B1'AND''TRUE''DO'
'IF'K 'GT'J 'OR'K 'GE'J 'THEN''GOTO'END 'ELSE''GO''TO'END;
B1:= I 'EQ'J 'IMPL'K 'NE'J 'EQUIV''FALSE';
B2:='NOT'K 'LE'K 'OR'K 'LT'J;
'CODEON';
'CODEOFF';
I:=(J'DIV'K)'POWER'I;
'COMMENT'ALL KEYWORDS USED;
END:'END'TEST PROG
//OPTIONS()
==== ercc07/emas-2900/wichtests_wt5.txt ====
L1:
'IF' 1 = 2 'THEN'
'GOTO' L1
==== ercc07/emas-2900/wichtests_pete4.txt ====
'COMMENT' CHECK ON NONTERMINATING FOR LOOPS IN OPT MODE;
'BEGIN' 'INTEGER'I
;'FOR' I:= 1 'STEP' 1 'UNTIL' 3 'DO' PRINT(I,3,0);
NEWLINE;
'FOR' I:= 1 'STEP' 2 'UNTIL' 5 'DO' PRINT (I,3,0);
NEWLINE;
PRINT(I,3,0)
'END'
==== ercc07/emas-2900/wichtests_wt6.txt ====
'BEGIN'
'INTEGER' X, Y, Z;
X := Y := Z := 1.0;
'IF' X < Y < Z 'THEN'
'END'
==== ercc07/emas-2900/wichtests_pete5.txt ====
'BEGIN''INTEGER'I;
'INTEGER''PROCEDURE' TCODE(S); 'STRING' S;
TCODE:=CODE(S);
PRINT(TCODE({A}),3,3)
'END'
==== ercc07/emas-2900/wichtests_wt7.txt ====
'BEGIN'
'BOOLEAN'
ASSIGN;
'PROCEDURE' P(X);
'REAL'
X;
'BEGIN'
OUTREAL(99, X);
'IF' ASSIGN 'THEN'
X := 3.14;
'END';
'REAL'
X,
Y;
ASSIGN := 'FALSE';
P(1.0);
X := Y := 2.0;
P(X + Y);
ASSIGN := 'TRUE';
P(X);
P(1.0);
==== ercc07/emas-2900/wichtests_pete6.txt ====
'COMMENT' CHECK ERROR ON DELN GIVES RIGHT LINE NO;
'BEGIN'
'INTEGER'I;
'INTEGER'J;
'INTEGER'K;
'CODEON';
'BEGIN' 'INTEGER' 'ARRAY' A[I:10]
'END';
'CODEOFF';
'END'
==== ercc07/emas-2900/wichtests_wt8.txt ====
'BEGIN'
'REAL' X, Y;
X := Y := 0.0;
'REAL' Z;
'END'
==== ercc07/emas-2900/wichtests_pete7.txt ====
'BEGIN' 'INTEGER' I;
'INTEGER' 'ARRAY' A,B(/1:10/);
'ARRAY' C,D(/1:10/);
'PROCEDURE' TEST(P,Q,R,S); 'VALUE' P,Q,R,S; 'ARRAY' R,S;
'INTEGER' 'ARRAY' P,Q; 'BEGIN' 'INTEGER' I;
'FOR' I:=1'STEP'1'UNTIL' 10 'DO' 'BEGIN'
'IF' I#P(/I/)'OR' I#Q(/I/)'OR' I#R(/I/)'OR' I#S(/I/) 'THEN' 'BEGIN'
PRINT(I,2,0); PRINT(P(/I/),2,0); PRINT(Q(/I/),2,0);
PRINT(R(/I/),2,1); PRINT(S(/I/),2,1); NEWLINE
'END';
P(/I/):=Q(/I/):=0; R(/I/):=S(/I/):=0
'END' FOR;
PRINTSTRING(<ARRAY _ PASSED>)
'END' TEST;
'FOR' I:=1 'STEP' 1 'UNTIL' 10 'DO' 'BEGIN'
A(/I/):=B(/I/):=I; C(/I/):=D(/I/):=I
'END';
TEST(A,C,D,B);
'FOR' I:=1 'STEP' 1 'UNTIL' 10 'DO' 'BEGIN'
'IF' A(/I/)#I 'OR' B(/I/)#I 'OR' C(/I/)#I 'OR' D(/I/)#I 'THEN' 'BEGIN'
PRINTSTRING(<ERROR>); PRINT(I,2,0)
==== ercc07/emas-2900/timp00s.txt ====
%CONSTSTRING(9) LADATE="28 NOV 83"; ! LAST ALTERED
%CONSTINTEGER NO OF SNS=65
%CONSTINTEGER LRLPT=X'62'
%UNLESS HOST=PERQ %OR HOST=ACCENT %THEN %START
%CONSTINTEGER PTSHIFT=16,FLAGSHIFT=0
%FINISH %ELSE %START
%CONSTINTEGER PTSHIFT=0,FLAGSHIFT=16
%FINISH
!
%CONSTINTEGER MAXLEVELS=31,CONCOP=13
!
%INCLUDE "ERCC07.TRIPCNSTS"
%INCLUDE "ERCC07.TRIMP_TFORM1S"
%CONSTINTEGER SNPT=X'1006'; ! SPECIALNAME PTYPE
%CONSTINTEGER UNASSPAT=X'80808080'
%CONSTINTEGER LABUSEDBIT=X'01000000'
%CONSTINTEGER LABSETBIT=X'02000000'
%CONSTINTEGER MAXDICT=X'100'; ! PARM MAXDICT BIT
!
%INTEGER I, K, DUMMYFORMAT, P1SIZE, STARSIZE, ASL, ARSIZE, OLDLINE,
NEXTP, SNUM, RLEVEL, NMAX, PLABEL, LEVEL, PROFAAD, LAST INST,
==== ercc07/emas-2900/drslink2.txt ====
LINK
ERCC07.P1Y
ERCC07.DP22Y
ERCC07.DOPT2Y
ERCC07.DGEN2Y
ERCC07.CSERV01Y
ERCS02.DRS_EPUTY
.END
P0Y
MODIFY P0Y
SATISFY REFS
.ALL
SATISFY DATA
.ALL
SUPPRESS
.ALL
RETAIN
PGENERATEDRSOBJECT,ICL9CEZDRSIMP
SUPPRESS DATA
.ALL
CLOSE
==== ercc07/emas-2900/wichtests_wt9.txt ====
'BEGIN'
'COMMENT' A SYNTAX PASS IS REQUIRED TO REMOVE COMMENTS;
'PROCEDURE' P( ST );'COMMENT' ST IS A STRING;'COMMENT';
'STRING' ST; ;'COMMENT' DUMMY BODY;
P( <;'COMMENT'<;>> );
'BEGIN'
'PROCEDURE' Q( A ) PARAMETER COMMENT :( B );
'REAL' A, B; ;'COMMENT' DUMMY AGAIN;
Q( 1.0, 2.5 ); 'COMMENT' IS THE SAME AS;
Q( 1.0) WITH PARAMETER COMMENT:( 2.5 );
'END' COMMENT CAN INCLUDE MOST BASIC SYMBOLS 'FOR'
'WHILE' 'THEN''IF' 'DO' := 'BEGIN'( WHICH ARE NOT MATCHED;
'END'
==== ercc07/emas-2900/wichtests_pete8.txt ====
'BEGIN'
'INTEGER' 'PROCEDURE' F;
F:=1;
'INTEGER' I,J;
I:=F;
F:=27;
'END'
==== ercc07/emas-2900/wichtests_pete9.txt ====
'BEGIN' 'INTEGER' I,J;
J:=10;
'IF' J>1 'THEN' 'BEGIN'
LABEL:;
I:=J; J:=J+1; 'GOTO' OUT;
'END';
I:=I+1;
OUT:
PRINT(I,3,3);
'END';
==== ercc07/emas-2900/timp01s.txt ====
%MAINEP ICL9CEZPERQIMP
%TRUSTEDPROGRAM
%BEGIN
%CONSTINTEGER RELEASE=4
%CONSTINTEGER YES=1,NO=0
%CONSTINTEGER ON PERQ=NO
%CONSTSTRING(9) LADATE="9 Sep 82"; ! LAST ALTERED
%INTEGER I, J, K
%CONSTINTEGER NO OF SNS=63
%CONSTINTEGER LRLPT=X'62'
!
%CONSTBYTEINTEGERARRAY BYTES(0:7)=0(3),1,2,4,8,16;
%CONSTBYTEINTEGERARRAY WORDS(0:7)=0(3),1,1,2,4,8;
%CONSTINTEGER MAXLEVELS=31,CONCOP=13
!
%INCLUDE "ERCC07.PERQ_OPCODES"
%INCLUDE "ERCC07.TRIPCNSTS"
%INCLUDE "ERCC07.PERQ_FORMAT3S"
%CONSTINTEGER SNPT=X'1006'; ! SPECIALNAME PTYPE
%CONSTINTEGER UNASSPAT=X'80808080'
%CONSTINTEGER LABUSEDBIT=X'01000000'
==== ercc07/emas-2900/imptests_testcomp.txt ====
PARM
IMP IMPTESTS_CT0,.NULL,.OUT
IMP IMPTESTS_CT1,.NULL,.OUT
IMP IMPTESTS_CT2,.NULL,.OUT
IMP IMPTESTS_CT3,.NULL,.OUT
IMP IMPTESTS_CT4,.NULL,.OUT
IMP IMPTESTS_CT5,.NULL,.OUT
IMP IMPTESTS_RT0,IY,.OUT
RUN IY
IMP IMPTESTS_RT1,IY,.OUT
RUN IY
IMP IMPTESTS_RT2,IY,.OUT
RUN IY
IMP IMPTESTS_RT3,IY,.OUT
RUN IY
IMP IMPTESTS_RT4,IY,.OUT
RUN IY
IMP IMPTESTS_RT5,IY,.OUT
RUN IY
==== ercc07/emas-2900/sup26isrce_oper33s.txt ====
! %CONSTSTRING(15)VSN = "OPER33 3/4/81"; ! ****************************************
%IF (MONLEVEL >> 1) & 1 = YES %START
%EXTRINSICLONGINTEGER KMON
%OWNINTEGER OPMON; ! COPY OF KMON BIT
%CONSTINTEGER KMONNING = YES
%FINISH %ELSE %START
%CONSTINTEGER KMONNING = NO
%FINISH
!
%IF MONLEVEL & 1 = YES %START
%CONSTINTEGER VIDEO UPDATING = YES
%OWNINTEGER OPER FACILITIES
%FINISH %ELSE %START
%CONSTINTEGER VIDEO UPDATING = NO
%FINISH
!
!
!
%EXTERNALROUTINESPEC DUMPTABLE(%INTEGER X,A,S)
%EXTERNALROUTINESPEC PON(%RECORDNAME P)
%EXTERNALROUTINESPEC PKMONREC(%STRING(20)TXT,%RECORDNAME P)
==== ercc07/emas-2900/sup26csrce_sup26cs.txt ====
!
! TO MAKE S SERIES SUPERVISOR REQUIRES:-
! 1) CHANGE SSERIES=NO TO SSERIES=YES IN CTOPTIONS FILE
! 2) REPLACE COMF BY S SERIES COM IN ERCC08.COMSF
!
!
! THESE CONST INTEGERS DEFINE SIZES AND LAYOUT OF IMPORTANT TABLES
! THEY HAVE TO BE HERE TO BE GLOBAL TO ALL ROUTINES INCLUDING IO ONES
!
%CONSTINTEGER LSTLEN=192; ! LOCAL SEGMENT TABLE LENGTH
%CONSTLONGINTEGER LCACR=1; ! ACR OF LOCAL CONTROLLER
%CONSTINTEGER DIRCSEG=10; ! SEG NO OF DIRECTOR COMMS SEG
%CONSTINTEGER DIRCSEGOFFSET=0; ! FOR ALIGNMENT IF NEEDED
%CONSTINTEGER DIRCSEGAD=DIRCSEG<<18; ! VIRTUAL ADDRESS OF DIR COM SEG
%CONSTINTEGER DIRCSEGL=2048+255+LSTLEN; ! SIZE OF SMAE
! MADE UP OF 2049 FOR CBT
! LSTLEN FOR SST
! 48+64 FOR 2 BITS OF SYTEMCALL TABLE
! 32+48 FOR DIROUTP&SIGOUT
%CONSTINTEGER LSTACKLEN=3; ! LOCAL CONT. STACK ELEN
==== ercc07/emas-2900/sup26csrce_com29s.txt ====
!
!
! VERSION OF 18/01/80
!
!
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20A ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,WASKLOKCORRECT,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,DQADDR, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0, %C
%INTEGER ITINT,CONTYPEA,GPCCONFA,FPCCONFA,SFCCONFA, %C
BLKADDR,DPTADDR,SMACS,TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,SP0,SP1, %C
SP2,SP3,SP4,SP5,SP6,SP7,SP8, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
HBIT,SLAVEOFF,INHSSR,SDR1,SDR2,SDR3, %C
SDR4,SESR,HOFFBIT,S2,S3,S4,END)
==== ercc07/emas-2900/sup26fsrce_print05s.txt ====
%EXTRINSICLONGINTEGER KMON
%ROUTINESPEC PRHEX(%INTEGER H)
%ROUTINESPEC PRINTER(%RECORDNAME P)
%EXTERNALROUTINESPEC PON(%RECORDNAME P)
%EXTERNALROUTINESPEC OPMESS(%STRING (23) MESS)
%SYSTEMROUTINESPEC ITOE(%INTEGER A, L)
%IF MULTIOCP=YES %THEN %START
%EXTERNALROUTINESPEC SEMALOOP(%INTEGERNAME SEMA)
%ROUTINESPEC RESERVE LOG
%ROUTINESPEC RELEASE LOG
%ROUTINESPEC AWAIT LOG ROUTE
%FINISH
%RECORDFORMAT PARMF(%INTEGER DEST, SRCE, P1, P2, P3, P4, P5, %C
P6)
!------------------------------------------------------------------------
%RECORDFORMAT ENTFORM(%INTEGER SER, PTSM, PROPADDR, %C
TICKS SINCE, CAA, GRCB AD, LBA, ALA, STATE, RESP0, %C
RESP1, SENSE1, SENSE2, SENSE3, SENSE4, REPSNO, BASE, %C
ID, DLVN, MNEMONIC, ENTSIZE, PAW, USAW0, URCB AD, %C
SENSDAT AD, LOGMASK, TRTAB AD, UA SIZE, UA AD, %C
==== ercc07/emas-2900/timp02s.txt ====
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
! Opnd2 is either a 32 bit const with the size (ACC) as value or
! the ptr or arrayhead as normal operand.
!
! VMY X1 is now dim<<28!maxdim<<24!array name(where known)
! Opnd2 is either a 32 bit const with DV offset into const area or
! the arrayhead as a standard operand
!
! AINDX X1 is ELSIZE<<20 !spare
! Opnd2 is arrayhead as standard operand
! NOTE:- The Operands have been swopped for consistency with norm.
==== ercc07/emas-2900/ibm_link.txt ====
PARM MAP
LINK
IBMY
CSUPY
.END
IBM01Y
MODIFY IBM01Y,,.LP
SATISFY REFS
.ALL
SATISFY DATA
.ALL
SUPPRESS
.ALL
RETAIN
ICL9CEZIBMIMP
SUPPRESS DATA
.ALL
CLOSE
==== ercc07/emas-2900/perqtrimp_perqlink.txt ====
LINK
P1Y
P2Y
POPTY
PGENY
.END
P0Y
MODIFY P0Y
SATISFY REFS
.ALL
SATISFY DATA
.ALL
RENAME
ICL9CEZPERQIMP,S#PERQIMP
.END
SUPPRESS
.ALL
RETAIN
S#PERQIMP
SUPPRESS DATA
.ALL
==== ercc07/emas-2900/sup26gsrce_documentn.txt ====
This partitioned file contains all the source required to make up a
version 26G Supervisor, plus the version of the IMP compiler and FIX
utility used at Edinburgh to do so. This compiler is necessary as some
advanced language features are required which are not available in the
service compiler.
Note that the OPTION NOBRACKETS must be in force in the process being
used for the method described to work.
Two "OBEY" subfiles are available: MAKECHKD and MAKEOPT. They each
construct a test Supervisor which is left in file SUP26xT, where x is
'C' or 'O' respectively.
Making a Supervisor thus consists of the following:
a) INSERT the IMP compiler and FIX utility into the current directory
(and then log off and log on again if IMP was previously used in
==== ercc07/emas-2900/sup26esrce_mindiags.txt ====
%EXTERNALSTRINGFNSPEC STRHEX(%INTEGER I)
%SYSTEMROUTINE NDIAG(%INTEGER PCOUNT, LNB, FAULT, INF)
!***********************************************************************
!*_______'MASTER DIAGNOSTIC ROUTINE'. DISCOVERS THE LANGUAGE OF THE *
!*_______FAILED ROUTINE FROM WORD 4 OF THE GLA AND CALLS APPROPRIATE *
!*_______DIAGNOSTIC ROUTINE. THIS IS REPEATED TILL ALL DIAGNOSTICS *
!*_______GIVEN. *
!*_______PCOUNT = PCOUNTER AT FAILURE *
!*_______LNB = LOCAL NAME BASE AT FAILURE *
!*_______FAULT = FAILURE (0=%MONITOR REQUESTED) *
!*_______INF =ANY FURTHER INFORMATION *
!***********************************************************************
PRINTSTRING("
MINIMUM NDIAGS ENTERED
FAULT NO ="); WRITE(FAULT,2)
PRINTSTRING("
PC=X".STRHEX(PCOUNT)."
LNB=X".STRHEX(LNB)."
")
%END
%ENDOFFILE
==== ercc07/emas-2900/sup26fsrce_enter06s.txt ====
%EXTRINSICINTEGER INPTR
%EXTRINSICINTEGER OUTPTR
%CONSTINTEGER MASK=X'80FC3FFF'
%EXTERNALINTEGERFNSPEC HANDKEYS
%EXTERNALROUTINESPEC HOOT(%INTEGER NUM)
%EXTERNALROUTINESPEC GET PSTB(%INTEGERNAME P0, P1)
%EXTERNALROUTINESPEC SUP29
%EXTERNALROUTINESPEC GPC(%RECORDNAME P)
%EXTERNALROUTINESPEC SLAVESONOFF(%INTEGER J)
%EXTERNALROUTINESPEC PKMONREC(%STRING(20)TEXT,%RECORDNAME P)
%SYSTEMROUTINESPEC MOVE(%INTEGER L, FROMAD, TOAD)
%RECORDFORMAT PARMF(%INTEGER DEST, SRCE, P1, P2, P3, P4, P5, %C
P6)
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20A ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,WASKLOKCORRECT,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,DQADDR, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0, %C
==== ercc07/emas-2900/imptests_rt0.txt ====
%BEGIN
%OWNBYTEINTEGER CHAR=NL
%OWNBYTEINTEGERARRAY XCHAR(1:10)=NL(10)
WRITE(CHAR,5)
WRITE(XCHAR(5),5)
NEWLINE
%ENDOFPROGRAM
==== ercc07/emas-2900/sup26fsrce_gpc33s.txt ====
%CONSTSTRING(25) VSN = "GPC33 3RD NOV 80"; ! ************************************************GPC GPC GPC
!
! EMAS 2900 SUPERVISOR NOTE
! No: 5
! Date: 21/05/80
! Author: A.Gibbons
!
!
! %EXTERNAL ROUTINE GPC(%RECORDNAME P)
!
! 1. CONVENTIONS
! The record spec for the parameter is
! %RECORDFORMAT PARMF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6)
! where
! DEST is considered as two half words DSNO and DACT. DSNO
! must be GPC's DSNO
! DACT is set according to the function required.
!
! SRCE is considered as two halfwords SSNO and SACT.
! SSNO is SNO of ORIGINATOR and SACT is DACT for
! the reply.
==== ercc07/emas-2900/imptests_rt1.txt ====
%BEGIN
%RECORDFORMAT F(%INTEGER I,J,K,%INTEGERARRAY A(1:5))
%RECORD R(F)
%INTEGERARRAYNAME B
%INTEGER I
%CYCLE I=1,1,5
R_A(I)=I
%REPEAT
R_K=255
B==R_A
%CYCLE I=1,1,5
WRITE(B(I),5)
%REPEAT
%ENDOFPROGRAM
==== ercc07/emas-2900/imptests_rt2.txt ====
%BEGIN
%INTEGER I
I=0
%CYCLE
WRITE(I,2)
I=I+1
%REPEAT %UNTIL I=4
%ENDOFPROGRAM
==== ercc07/emas-2900/nrsrce_sfast02s.txt ====
%EXTERNALSTRING (15) %FNSPEC STRINT(%INTEGER N)
%EXTERNALSTRING (8) %FNSPEC STRHEX(%INTEGER N)
%EXTERNALSTRING(8) %FNSPEC HTOS(%INTEGER VALUE,PLACES)
%EXTERNALROUTINESPEC PTREC(%RECORDNAME P)
%EXTERNALROUTINESPEC OPMESS(%STRING (63) S)
%EXTERNALROUTINESPEC MONITOR(%STRING (63) S)
%EXTERNALROUTINESPEC DUMP TABLE(%INTEGER T, A, L)
%ROUTINESPEC ELAPSED INT(%RECORDNAME P)
%SYSTEMROUTINESPEC ETOI(%INTEGER A, L)
%ROUTINESPEC PDISC(%RECORDNAME P)
%EXTERNALINTEGERFNSPEC HANDKEYS
%EXTERNALROUTINESPEC DCU(%RECORDNAME P)
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 18D ONWARDS *
! Alterations from above-mentioned record format, for the S-series, are
! as follows:
! GPCTABSIZE -> DCUTABSIZE
! GPCA -> DCUA
! SMACS -> SCUS
! GPCCONFA -> DCUCONFA
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,DCUTABSIZE,DCUA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
==== ercc07/emas-2900/imptests_rt3.txt ====
%BEGIN
%INTEGER SYM
%STRING(255)S
S="ABCDE"
%WHILE S#"" %CYCLE
SYM=CHARNO(S,1)
S->(TOSTRING(SYM)).S
PRINTSYMBOL(SYM)
%REPEAT
NEWLINE
%ENDOFPROGRAM
==== ercc07/emas-2900/sup27fsrce_samplectopt.txt ====
!
! THIS FILE CONTAINS THE CONST INTEGERS TO CONTROL COMPILE TIME OPTIONS
! IN EMAS2900
! IT IS INTENDED TO BE CONCATENATED ONTO THE FRONT OF SOURCEFILES
! BEFORE COMPILATION
%CONSTINTEGER YES=1
%CONSTINTEGER NO=0
%CONSTINTEGER SSERIES=NO; ! NO=PSERIES, YES=SSERIES
%CONSTINTEGER MULTIOCP=YES; ! YES TO INCLUDE SEMAPHORING
%CONSTINTEGER SFCFITTED=NO; ! NO FOR DISC ONLY SITES
%CONSTINTEGER CPFITTED=NO; ! CARD PUNCH FITTED
%CONSTINTEGER CSU FITTED=NO; ! SWITCH UNIT
%CONSTINTEGER SNOOZING=YES; ! YES ALLOWS SUSPEND IN STORE
! ADVANTAGEOUS WITH LARGE STORES
%CONSTINTEGER PRODUCTION=NO; ! YES FOR CONTINUING AFTER
! SOFTWARE ERRORS(MOST OF WHICH
! ARE DUE TO HARDWARE!)
%CONSTINTEGER MONLEVEL=7; ! 0=NO MONITORING
! 2**0 SET=VIDEO UPDATING
! 2**1 SET=KMONNING
==== ercc07/emas-2900/sup27bsrce_tape72s.txt ====
! THIS IS IMP80 VERSION OF VERSION 72
!
!**************************************************
!* *
!* TAPE HANDLER FOR 2900 *
!* *
!**************************************************
!!
!***********************************************************************
!* VERSION 72
!* 05-MAY-81:
!* HAIRY PON TO RESET 'RETRY PREAMBLE' WHICH ALLOWS/INHIBITS
!* READ RETRY WHEN NO PREAMBLE DETECTED.
!* MAINLY INTENDED FOR READING DUMP TAPES WITH SUCH.
!* 04-MAY-81:
!* FIX IN LOAD AND LOAD MESSAGE FOR FAULTY DSN.
!* REWINDS AND COMES UP AS LOADED NO LABEL.
!* 01-MAY-81:
!* FIX IN TERMINATE TO CONTINUE RETRIES IF NO PREAMBLE ON LABEL READ
!*
==== ercc07/emas-2900/sup26isrce_makechkd.txt ====
PARM FREE,STACK,NOCHECK,NOLIST
IMP CTOPT+SUP26ISRCE_SUP26IS,SUPZZ,,.OUT
IMP CTOPT+SUP26ISRCE_COM32S,COMZZ,,.OUT
IMP CTOPT+SUP26ISRCE_PRINT05S,PRINTZZ,,.OUT
IMP CTOPT+SUP26ISRCE_OPER33S,OPERZZ,,.OUT
IMP CTOPT+SUP26ISRCE_ENTER09S,ENTERZZ,,.OUT
IMP CTOPT+SUP26ISRCE_GPC36S,GPCZZ,,.OUT
PARM FREE,OPT,STACK,NOLIST
IMP SUP26ISRCE_NDIAG07S,NDIAGZZ,,.OUT
IMP CTOPT+SUP26ISRCE_COMMS48S,COMMSZZ,,.OUT
IMP CTOPT+SUP26ISRCE_FAST33S,FASTZZ,,.OUT
IMP CTOPT+SUP26ISRCE_TAPE70S,TAPEZZ,,.OUT
PARM MAP
LINK
SUPZZ
COMZZ
PRINTZZ
OPERZZ
ENTERZZ
GPCZZ
NDIAGZZ
==== ercc07/emas-2900/imptests_rt4.txt ====
%BEGIN
%ROUTINE FRED(%INTEGER FIRST,STEP,LAST)
%INTEGER I
%CYCLE I=FIRST,STEP,LAST
%REPEAT
%END
FRED(X'9000',16,X'A000')
%ENDOFPROGRAM
==== ercc07/emas-2900/sup26esrce_comms46s.txt ====
! VERSION OF 13/06/80
! DEC 79: INCLUDE AN OPER ADAPTOR
! HAVE ONLY ONE SERVICE NUMBER, X'37'
! OTHER POSSIBLE CHANGES
! MAKE INITIALISATION CALL OF CC INITIALISE ADAPTORS AS WELL
! MAKE IT POSSIBLE TO DEALLOCATE/ALLOCATE ALL DEVICES
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20A ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,WASKLOKCORRECT,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,DQADDR, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0, %C
%INTEGER ITINT,CONTYPEA,GPCCONFA,FPCCONFA,SFCCONFA, %C
BLKADDR,DPTADDR,SMACS,TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,SP0,SP1, %C
SP2,SP3,SP4,SP5,SP6,SP7,SP8, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
==== ercc07/emas-2900/imptests_rt5.txt ====
%BEGIN
%LONGINTEGER L
%SWITCH SW(0:5)
L=3
->SW(L)
SW(0):SW(1):SW(2):SW(4):SW(5):
PRINTSTRING("WRONG PLACE"); %STOP
SW(3):
PRINTSTRING("GOT HERE OK
")
%ENDOFPROGRAM
==== ercc07/emas-2900/read1900s.txt ====
%SYSTEMLONGREALFN READ1900
!***********************************************************************
!* THIS ROUTINE IS THE 1900 IMPLICITLY SPECIFIED ROUTINE *
!* *
!* THE METHOD USED IS SIMPLE REPEATED MULTIPLICATION USING LONG *
!* REAL VARIABLES. SOME ROUNDING ERRORS ARE INTRODUCED WHICH *
!* COULD BE AVOIDED BY USING PACKED DECIMAL INSTNS WITH NECESSARY*
!* SCALING. *
!***********************************************************************
%INTEGERFNSPEC NEXT
%INTEGERFNSPEC CHECK EXP
%LONGREALFNSPEC GET(%INTEGER LEVEL)
%INTEGER CURSYM
%RESULT=GET(1)
%LONGREALFN GET(%INTEGER LEVEL)
%INTEGER TYPE, IVALUE, FLAG
! FLAG= 0FOR'-',1 FOR '+'
%LONGREAL RWORK, SCALE
FLAG=1; TYPE=0
START:CURSYM=NEXT; ! CARE NOT TO READ TERMINATOR
! NOW IGNORE LEADING SPACES
==== ercc07/emas-2900/imptests_rt6.txt ====
%BEGIN
%CONST%STRING(15)%ARRAY S(1:3)="ONE ","TWO ","THREE "
%INTEGER I
PRINTSTRING(S(3))
%CYCLE I=1,1,3
PRINTSTRING(S(I))
%REPEAT
%ENDOFPROGRAM
==== ercc07/emas-2900/imptests_rt7.txt ====
%BEGIN
%RECORDFORMAT F(%INTEGER I,J,K,L)
%OWNRECORDARRAY A(-1:1)(F)
%RECORDARRAY B(-1:1)(F)
%RECORD R(F)
%INTEGER I
R=0
%CYCLE I=-1,1,1
A(I)=R
B(I)=R
%REPEAT
PRINTSTRING("WORKED OK")
%ENDOFPROGRAM
==== ercc07/emas-2900/imptests_rt8.txt ====
%BEGIN
%CONSTSTRING(3)%ARRAY CHECK(1:3)="ABC","DEF","GHI";
%INTEGER I
%STRING(3)%ARRAYFORMAT SF(1:3)
%STRINGARRAYNAME SAN
%RECORDFORMAT F(%INTEGER I,J,%STRING(3)%ARRAY S(1:3), %C
%STRINGARRAYNAME SN)
%RECORDNAME R(F)
%OWNINTEGERARRAY A(0:8)=1,2,X'03414243',X'03444546',X'03474849',0(4)
%ROUTINE CHECK VALUE(%INTEGER I,%STRING(31)S)
%IF S#CHECK(I) %THEN PRINTSTRING("
BUG IN STRING VALUE") %AND %MONITOR
%END
%ROUTINE CHECKNAME(%INTEGER I,%STRINGNAME S)
%IF S#CHECK(I) %THEN PRINTSTRING("
BUG IN STRING NAMES") %AND %MONITOR
%END
R==RECORD(ADDR(A(0)))
SAN==ARRAY(ADDR(A(2)),SF)
R_SN==R_S
==== ercc07/emas-2900/imptests_rt9.txt ====
%BEGIN
%INTEGER I,J
%CONSTSTRING(15)FAILED="***BUG FOUND"
%ROUTINESPEC INTERCHANGE(%RECORDARRAYNAME A,%INTEGER I,J)
%RECORDFORMAT F(%INTEGER I,J)
%RECORDARRAY A(0:3)(F)
%RECORDARRAY B(1:4)(F)
%CYCLE I=0,1,3
A(I)_I=I
B(I+1)_I=I+1
%REPEAT
INTERCHANGE(A,1,3)
PRINTSTRING(FAILED) %UNLESS A(1)_I=3 %AND A(3)_I=1
INTERCHANGE(B,1,3)
PRINTSTRING(FAILED) %UNLESS B(1)_I=3 %AND B(3)_I=1
%ROUTINE INTERCHANGE(%RECORDARRAYNAME R,%INTEGER P,Q)
%RECORDSPEC R(F)
%RECORD TEMP(F)
TEMP=R(P)
R(P)=R(Q)
R(Q)=TEMP
==== ercc07/emas-2900/pimp01s.txt ====
%MAINEP ICL9CEZPERQIMP
%TRUSTEDPROGRAM
%BEGIN
%CONSTINTEGER RELEASE=1
%CONSTINTEGER YES=1,NO=0
%CONSTINTEGER ON PERQ=NO
%CONSTSTRING(9) LADATE="01 Apr 82"; ! LAST ALTERED
%INTEGER I, J, K
%CONSTINTEGER NO OF SNS=63
%CONSTINTEGER LRLPT=X'52'
!
! FIXED GLA CURRENTLY USED AS FOLLOWS
! 0-7 FREE(WAS 2900 ENTRY DESCRIPTOR)
! 8-11 ADDRESS OF UNSHARED SYMBOL TABLES
! 12-15 ADDRESS OF SHARED SYMBOL TABLES
! 16-19 LANGUAGE & COMPILER DATA
! 20-23 RESERVED (BUT IN MAIN PROGS IS FILLED WITH STACKPTR@ENTRY)
! 24-27 ADDRESS OF CONSTANT TABL
! 28-31 ADDRESS OF A WORD CONTAINING STACKTOP 0FOR NO CHECKS
! 32-39 FREE
! 40-55 DEFINES THE ENTRY POINT OF MDIAGS
==== ercc07/emas-2900/wichtests_pre75.txt ====
'BEGIN'
'INTEGER'I;
'FOR' I:= 2 'STEP' 1 'UNTIL' 100 'DO'
OUTREAL(15,1/(I*I-1));
'END';
==== ercc07/emas-2900/alqtests.txt ====
//JOB (ERCC07.ALTESTS,P.STEPHENS_ALGOL,T=240,L=5000)
//ALGOL
'BEGIN'
'REAL'
X,
Y,
Z;
X := 6.0;
5.0;
Y := - 2.931;
Z := 4^.2;
'END'
//RUN
//ALGOL
'BEGIN'
'INTEGER'
I.J;
I := 2;
J := 3;
'IF' I * J > I + J 'THEN'
==== ercc07/emas-2900/kentclokset_make.txt ====
MAPLELIST CLOK1L
MAPLE CLOK_CLOK1S,OMF=Z.CLOKOMF
COMF CLOKOMF,CLOK1Y
DESTROY CLOKOMF
==== ercc07/emas-2900/itrimp_ibmlink.txt ====
ILINK
IP1X
IP2X
IOPTX
IGEN2X
CSERV01X
PUTX
.END
P0Y
IMODIFY P0Y
SATISFY REFS
.ALL
SATISFY DATA
.ALL
SUPPRESS
.ALL
RETAIN
ICL9CEZIBMIMP,PGENERATEOBJECT
SUPPRESS DATA
.ALL
CLOSE
==== ercc07/emas-2900/sup28asrce_enter14s.txt ====
%RECORDFORMAT PARMF(%INTEGER DEST, SRCE, P1, P2, P3, P4, P5, P6)
%RECORDFORMAT SERVAF(%INTEGER P, C)
%EXTERNALINTEGERSPEC INPTR
%EXTERNALINTEGERSPEC OUTPTR
%CONSTINTEGER MASK=X'80FC3FFF'
%EXTERNALINTEGERFNSPEC HANDKEYS
%EXTERNALROUTINESPEC HOOT(%INTEGER NUM)
%IF SSERIES=YES %START
%EXTERNALROUTINESPEC DCU(%RECORD(PARMF)%NAME P)
%FINISH %ELSE %START
%EXTERNALROUTINESPEC GPC(%RECORD(PARMF)%NAME P)
%EXTERNALINTEGERFNSPEC GPC INIT(%INTEGER CA,PT,MODE)
%FINISH
%EXTERNALINTEGERFNSPEC SAFE IS READ(%INTEGER ISAD,%INTEGERNAME VAL)
%EXTERNALROUTINESPEC GET PSTB(%INTEGERNAME P0, P1)
%EXTERNALROUTINESPEC SUP29
%EXTERNALROUTINESPEC SUPPOFF(%RECORD(SERVAF)%NAME SERV, %C
%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC DISC(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC PDISC(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC SLAVESONOFF(%INTEGER J)
==== ercc07/emas-2900/nproc19s.txt ====
!**FILE LAST CHANGED ON 05/12/77 AT 16.49.27
!**DELSTART
%SYSTEMINTEGERMAPSPEC COMREG(%INTEGER I)
%EXTRINSICINTEGER SSDEBUG
%SYSTEMROUTINESPEC CONSOLE(%INTEGER EP,R1,R2,%INTEGERNAME R3)
%EXTERNALROUTINESPEC PROMPT(%STRING(15)S)
%SYSTEMROUTINESPEC MDIAG(%INTEGER PCOUNT,FAULT,INF)
%SYSTEMROUTINESPEC CONNECT(%STRING (15) S, %C
%INTEGER ACCESS, MAXBYTES, PROTECTION, %RECORDNAME R, %C
%INTEGERNAME FLAG)
%SYSTEMROUTINESPEC PSYSMES(%INTEGER ROOT, FLAG)
%SYSTEMROUTINESPEC SET OUTPUT(%STRING (15) FILE, %C
%INTEGERNAME ADDR, FLAG)
%SYSTEMROUTINESPEC FINDFD(%STRING (8) DD, %INTEGERNAME I)
%SYSTEMROUTINESPEC DIRCALL(%INTEGER EP, %STRING (17) S, %C
%INTEGER P1, P2, %INTEGERNAME FLAG)
%SYSTEMROUTINESPEC SETLIB(%INTEGER EP, %STRING (15) S, %C
%INTEGER AD, %INTEGERNAME FLAG)
%SYSTEMINTEGERFNSPEC SPAR(%INTEGER N, %STRINGNAME S)
%SYSTEMROUTINESPEC SETPAR(%STRING (63) S)
%SYSTEMROUTINESPEC SVC(%RECORDNAME P)
==== ercc07/emas-2900/sup28dsrce_ndiag07s.txt ====
!*_ DATED 11 NOV 76 1
! ALTERATIONS BY K.YARWOOD ...
! PRINT FL AND NEXT SYMBOL LINES COMMENTED OUT
! PRINTTEXT'S TURNED TO PRINTSTRING'S
! ADDITION FOR LONGINTEGER IN RT PRINT VAR
! HEX EQUIVALENTS FOR INTS,LONGINTS ETC PRINTED
! INF PRINTED IN HEX IN RT ERRMESS
%EXTERNALSTRINGFNSPEC STRHEX(%INTEGER I)
%EXTERNALSTRING(8)%FNSPEC STRINT(%INTEGER I)
%CONSTINTEGER STACKBASE=X'80100000'; ! START OF RESIDENT STACK
! %SYSTEMROUTINESPEC SIGNAL(%INTEGER I, J, K, %INTEGERNAME F)
%ROUTINESPEC PRINTMESS(%INTEGER N)
! %SYSTEMROUTINESPEC TIDY EXIT
!*
%ROUTINESPEC INDIAG(%INTEGER OLDLNB, L, PC, %INTEGERNAME NEWLNB)
! %ROUTINESPEC FDIAG(%INTEGER OLDLNB,PC,%INTEGERNAME NEWLNB)
%ROUTINESPEC ERMESS(%INTEGER N, INF)
! %ROUTINESPEC ICL9CELABELS
==== ercc07/emas-2900/sup27bsrce_makeopt.txt ====
PARM FREE,OPT,STACK,NOLIST
IMP80 CTOPT+SUP27BSRCE_SUP27BS,SUPZZ,,.OUT
IMP80 CTOPT+SUP27BSRCE_COM33S,COMZZ,,.OUT
IMP80 CTOPT+SUP27BSRCE_PRINT06S,PRINTZZ,,.OUT
IMP80 CTOPT+SUP27BSRCE_OPER34S,OPERZZ,,.OUT
IMP80 CTOPT+SUP27BSRCE_ENTER10S,ENTERZZ,,.OUT
IMP80 CTOPT+SUP27BSRCE_GPC37S,GPCZZ,,.OUT
IMP80 SUP27BSRCE_MINDIAGS,MINDIAGZZ,,.OUT
IMP80 CTOPT+SUP27BSRCE_COMMS49S,COMMSZZ,,.OUT
IMP80 CTOPT+SUP27BSRCE_FAST35S,FASTZZ,,.OUT
IMP80 CTOPT+SUP27BSRCE_TAPE72S,TAPEZZ,,.OUT
PARM MAP
LINK
SUPZZ
COMZZ
PRINTZZ
OPERZZ
ENTERZZ
GPCZZ
MINDIAGZZ
COMMSZZ
==== ercc07/emas-2900/sup27isrce_releasen.txt ====
Supervisor 27I Release Notice
This Supervisor has the following changes
1) Introduction of in process page monitoring
via OUT_20 and suitable director features
2) Direct calls on COMMS CONTROL for Request output
3) Minor corrections elsewhere.
P. Stephens 21/12/81
==== ercc07/emas-2900/inctime.txt ====
%CONSTINTEGER SECSIN24HRS=86400; ! SECS IN DAY
%CONSTINTEGER DAYS70=25567; ! DAYS FROM JAN1 1900 TO JAN1 1970
%CONSTLONGINTEGER SECS70=X'0000000083AA7E80';! SECS DITTOM
%ROUTINE KDATE(%INTEGERNAME D,M,Y,%INTEGER K)
!***********************************************************************
!* K IS DAYS SINCE 1ST JAN 1900 *
!* RETURNS D, M, Y 2 DIGIT Y ONLY *
!***********************************************************************
! %INTEGER W
! K=K+693902; ! DAYS SINCE CEASARS BDAY
! W=4*K-1
! Y=W//146097
! K=W-146097*Y
! D=K//4
! K=(4*D+3)//1461;
! D=4*D+3-1461*K
! D=(D+4)//4
! M=(5*D-3)//153
! D=5*D-3-153*M
! D=(D+5)//5
! Y=K
==== ercc07/emas-2900/impalgs_oldps.txt ====
%EXTERNALROUTINE OLDPS(%STRING(63) S)
%EXTERNALSTRINGFNSPEC DATE
%INTEGER I, J, K, SS, NBIP
%STRING(31) ST49,ST50,ST51
%EXTERNALROUTINESPEC DEFINE(%STRING(63)S)
%INTEGERARRAY CLETT(0:1000), SYMBOL(1300:3000), CC(0:300)
%INTEGER CNEXT, DNEXT, CNUM, DNUM, ALT, DEF, ASL, NIDFLAG
%INTEGERARRAY KK, PUSE, DWORD(1001:1200), DLETT(0:1000), CWORD(1:200)
%ROUTINESPEC READ STRING(%INTEGER TERMINATOR)
%ROUTINESPEC RECORD(%INTEGERARRAYNAME WORD, LETT, %C
%INTEGERNAME NUM, NEXT)
%ROUTINESPEC LOOK UP(%INTEGERARRAYNAME WORD, LETT, %C
%INTEGER FIRST, LAST, INSERT)
%ROUTINESPEC PDDICT
%ROUTINESPEC PRINT STR(%INTEGERARRAYNAME CC, %INTEGER PTR)
%ROUTINESPEC PCDICT
%UNLESS S->ST49.(",").ST50.(",").ST51 %THEN %C
PRINTSTRING("PARAMS?????") %AND NEWLINE %AND %RETURN
DEFINE("ST49,".ST49)
DEFINE("ST50,".ST50)
==== ercc07/emas-2900/impalgs_psprog2s.txt ====
%EXTERNALROUTINE PSPROG2(%STRING(63) S)
%EXTERNALSTRINGFNSPEC DATE
%INTEGER I, J, K, SS, NBIP
%STRING(15) ST49,ST50,ST51
%EXTERNALROUTINESPEC DEFINE(%STRING(63)S)
%INTEGERARRAY SYMBOL(1300:3000), CC(0:300)
%INTEGER CNEXT, DNEXT, CNUM, DNUM, ALT, DEF, ASL, NIDFLAG
%INTEGERARRAY KK, DWORD(1001:1200), DLETT(0:1000)
%ROUTINESPEC READ STRING(%INTEGER TERMINATOR)
%ROUTINESPEC RECORD(%INTEGERARRAYNAME WORD, LETT, %C
%INTEGERNAME NUM, NEXT)
%ROUTINESPEC LOOK UP(%INTEGERARRAYNAME WORD, LETT, %C
%INTEGER FIRST, LAST, INSERT)
%ROUTINESPEC PDDICT
%ROUTINESPEC PRINT STR(%INTEGERARRAYNAME CC, %INTEGER PTR)
%UNLESS S->ST49.(",").ST50.(",").ST51 %THEN %C
PRINTSTRING("PARAMS?????") %AND NEWLINE %AND %RETURN
DEFINE('ST49,'.ST49)
DEFINE('ST50,'.ST50)
DEFINE('ST51,'.ST51)
==== ercc07/emas-2900/pimp02s.txt ====
%MAINEP ICL9CEZPERQIMP
%TRUSTEDPROGRAM
%BEGIN
%CONSTINTEGER RELEASE=1
%CONSTINTEGER YES=1,NO=0
%CONSTINTEGER ON PERQ=NO
%CONSTSTRING(9) LADATE="8 Mar 82"; ! LAST ALTERED
%INTEGER I, J, K
%CONSTINTEGER NO OF SNS=63
%CONSTINTEGER LRLPT=X'52'
!
! FIXED GLA CURRENTLY USED AS FOLLOWS
! 0-7 FREE(WAS 2900 ENTRY DESCRIPTOR)
! 8-11 ADDRESS OF UNSHARED SYMBOL TABLES
! 12-15 ADDRESS OF SHARED SYMBOL TABLES
! 16-19 LANGUAGE & COMPILER DATA
! 20-23 RESERVED (BUT IN MAIN PROGS IS FILLED WITH STACKPTR@ENTRY)
! 24-27 ADDRESS OF CONSTANT TABL
! 28-31 ADDRESS OF A WORD CONTAINING STACKTOP 0FOR NO CHECKS
! 32-39 FREE
! 40-55 DEFINES THE ENTRY POINT OF MDIAGS
==== ercc07/emas-2900/irout30s.txt ====
!17/11/80 - IROUT29S - CAPACITY EXCEEDED CHECKING ADDED TO READSTRING
!COPIED FROM ERCS08.B44SCE_IROUT27A ON 26.10.78
!LRANDOM ADDED 24.1.80
!UNUSED SPECS AND UNUSED ROUTINE FILL REMOVED 10/8/79
!SOME MATHS ROUTINE FAULT NOS ALTERED 19/12/78
!IEXPTEN RENAMED AS EXPTEN
!ILOGTEN RENAMED AS LOGTEN
!ICOT RENAMED AS COT
!IHYPSIN RENAMED AS HYPSIN
!IHYPCOS RENAMED AS HYPCOS
!IHYPTAN RENAMED AS HYPTAN
!THE FOLLOWING ROUTINES HAVE BEEN REMOVED:
!DA AND SQ ROUTINES,FROMSTRING,CLOSESTREAM,IFDBINARY
!RFDBINARY,CPUTIME,TIME,DATE,SETMARGINS
!SPECS ADDED FOR CPUTIME, TIME , AND DATE
!* MODIFIED 10/08/78 AGK (ADDED MLIBERR ROUTINE)
!* MODIFIED 20/02/78 ERROR MESSAGE VALUES
!* MODIFIED 29/09/78 LCG TO REMOVE MLIBERR
!* MODIFIED 17/2/77 LAB (APPENDED SQ & DA FILE ROUTINES AND
! DATE AND TIME ROUTINES FOR IMP AND FORTE)
!* MODIFIED 16/12/76 GEM (RANDOM)
==== ercc07/emas-2900/sup27csrce_makechkd.txt ====
PARM FREE,NOCHECK,NOLIST,STACK
IMP80 CTOPT+SUP27CSRCE_SUP27CS,SUPZZ,,.OUT
IMP80 CTOPT+SUP27CSRCE_COM33S,COMZZ,,.OUT
IMP80 CTOPT+SUP27CSRCE_PRINT07S,PRINTZZ,,.OUT
IMP80 CTOPT+SUP27CSRCE_OPER34S,OPERZZ,,.OUT
IMP80 CTOPT+SUP27CSRCE_ENTER11S,ENTERZZ,,.OUT
PARM FREE,OPT,STACK,NOLIST
IMP80 CTOPT+SUP27CSRCE_GPC37S,GPCZZ,,.OUT
IMP80 SUP27CSRCE_NDIAG07S,NDIAGZZ,,.OUT
IMP80 CTOPT+SUP27CSRCE_COMMS49S,COMMSZZ,,.OUT
IMP80 CTOPT+SUP27CSRCE_FAST36S,FASTZZ,,.OUT
IMP80 CTOPT+SUP27CSRCE_TAPE72S,TAPEZZ,,.OUT
PARM MAP
LINK
SUPZZ
COMZZ
PRINTZZ
OPERZZ
ENTERZZ
GPCZZ
NDIAGZZ
==== ercc07/emas-2900/sup27bsrce_fast35s.txt ====
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20J ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DLVNADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,TOJDAY,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,DQADDR, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0, %C
%INTEGER ITINT,CONTYPEA,GPCCONFA,FPCCONFA,SFCCONFA, %C
BLKADDR,RATION,SMACS,TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,SP0,SP1, %C
SP2,SP3,SP4,SP5,SP6,SP7,SP8, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
HBIT,SLAVEOFF,INHSSR,SDR1,SDR2,SDR3, %C
SDR4,SESR,HOFFBIT,S2,S3,S4,END)
!-----------------------------------------------------------------------
! PON & POFF ETC. DECLARATIONS
%RECORDFORMAT PARMF(%INTEGER DEST, SRCE, P1, P2, P3, P4, P5, %C
P6)
%CONSTLONGINTEGER NONSLAVED=X'2000000000000000'
==== ercc07/emas-2900/sup26gsrce_com31s.txt ====
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20J ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,TOJDAY,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,DQADDR, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0, %C
%INTEGER ITINT,CONTYPEA,GPCCONFA,FPCCONFA,SFCCONFA, %C
BLKADDR,RATION,SMACS,TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,FEPS,SP1, %C
SP2,SP3,SP4,SP5,SP6,SP7,SP8, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
HBIT,SLAVEOFF,INHSSR,SDR1,SDR2,SDR3, %C
SDR4,SESR,HOFFBIT,S2,S3,S4,END)
! MISC. ROUTINE SPECS
%EXTERNALROUTINESPEC PKMONREC(%STRING(20)TEXT,%RECORDNAME P)
%EXTERNALSTRING(8)%FNSPEC STRHEX(%INTEGER N)
%RECORDFORMAT PARMF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6)
%EXTERNALROUTINESPEC OPMESS2(%INTEGER OP,%STRING(63)TXT)
==== ercc07/emas-2900/ibm_ps01.txt ====
43
D(NAME)
D(ICONST)
D(CONST)
D(CHXTYPE)
D(N)
D(S)
D(TEXT)
D(BIGHOLE)
D(N255)
D(HOLE)
D(MARK)
D(READLINE?)
D(TEXTTEXT)
D(DUMMYAPP)
D(DOWN)
D(UP)
D(LISTON)
D(LISTOFF)
D(COLON)
D(NOTECONST)
==== ercc07/emas-2900/ibm_ps02.txt ====
43
D(NAME)
D(ICONST)
D(CONST)
D(CHXTYPE)
D(N)
D(S)
D(TEXT)
D(BIGHOLE)
D(N255)
D(HOLE)
D(MARK)
D(READLINE?)
D(TEXTTEXT)
D(DUMMYAPP)
D(DOWN)
D(UP)
D(LISTON)
D(LISTOFF)
D(COLON)
D(NOTECONST)
==== ercc07/emas-2900/dxrtest.txt ====
%BEGIN
%LONGLONGREAL A,B,R1,R2
%INTEGERFNSPEC DXR(%LONGLONGREALNAME TOP,%LONGLONGREAL BTM)
%INTEGER I
A=7; A=A/3
B=15
B=B/7
R1=A/B
R2=A
I=DXR(R2,B)
WRITE(I,1)
PRINTFL(R1,15)
PRINTFL(R2,15)
PRINTFL(R1-R2,5)
%INTEGERFN DXR(%LONGLONGREALNAME TOP,%LONGLONGREAL BOTTOM)
%LONGREAL X
%LONGLONGREAL APPROX,CORRN
X=BOTTOM
APPROX=1.0/X
CORRN=2.0-APPROX*BOTTOM
PRINTFL(CORRN-1,5)
==== ercc07/emas-2900/perqtrimp_perqps01.txt ====
43
D(NAME)
D(ICONST)
D(CONST)
D(DUMMYSTART)
D(N)
D(S)
D(TEXT)
D(BIGHOLE)
D(N255)
D(HOLE)
D(MARK)
D(READLINE?)
D(TEXTTEXT)
D(DUMMYAPP)
D(DOWN)
D(UP)
D(LISTON)
D(LISTOFF)
D(COLON)
D(NOTECONST)
==== ercc07/emas-2900/irout31s.txt ====
! 03/06/82 IROUT31S HAS ERFN & ERFC REIMPLEMENTED USING ICL METHOD
!02/06/82 CONVERTED TO IMP90 BY PDS
!17/11/80 - IROUT29S - CAPACITY EXCEEDED CHECKING ADDED TO READSTRING
!COPIED FROM ERCS08.B44SCE_IROUT27A ON 26.10.78
!LRANDOM ADDED 24.1.80
!UNUSED SPECS AND UNUSED ROUTINE FILL REMOVED 10/8/79
!SOME MATHS ROUTINE FAULT NOS ALTERED 19/12/78
!IEXPTEN RENAMED AS EXPTEN
!ILOGTEN RENAMED AS LOGTEN
!ICOT RENAMED AS COT
!IHYPSIN RENAMED AS HYPSIN
!IHYPCOS RENAMED AS HYPCOS
!IHYPTAN RENAMED AS HYPTAN
!THE FOLLOWING ROUTINES HAVE BEEN REMOVED:
!DA AND SQ ROUTINES,FROMSTRING,CLOSESTREAM,IFDBINARY
!RFDBINARY,CPUTIME,TIME,DATE,SETMARGINS
!SPECS ADDED FOR CPUTIME, TIME , AND DATE
!* MODIFIED 10/08/78 AGK (ADDED MLIBERR ROUTINE)
!* MODIFIED 20/02/78 ERROR MESSAGE VALUES
!* MODIFIED 29/09/78 LCG TO REMOVE MLIBERR
!* MODIFIED 17/2/77 LAB (APPENDED SQ & DA FILE ROUTINES AND
==== ercc07/emas-2900/sup25jsrce_ndiag06s.txt ====
!*_ DATED 11 NOV 76 1
! ALTERATIONS BY K.YARWOOD ...
! PRINT FL AND NEXT SYMBOL LINES COMMENTED OUT
! PRINTTEXT'S TURNED TO PRINTSTRING'S
! ADDITION FOR LONGINTEGER IN RT PRINT VAR
! HEX EQUIVALENTS FOR INTS,LONGINTS ETC PRINTED
! INF PRINTED IN HEX IN RT ERRMESS
%EXTERNALSTRINGFNSPEC STRHEX(%INTEGER I)
%EXTERNALSTRING(8)%FNSPEC STRINT(%INTEGER I)
%CONSTINTEGER STACKBASE=X'80100000'; ! START OF RESIDENT STACK
! %SYSTEMROUTINESPEC SIGNAL(%INTEGER I, J, K, %INTEGERNAME F)
%ROUTINESPEC PRINTMESS(%INTEGER N)
! %SYSTEMROUTINESPEC TIDY EXIT
!*
%ROUTINESPEC INDIAG(%INTEGER OLDLNB, L, PC, %INTEGERNAME NEWLNB)
! %ROUTINESPEC FDIAG(%INTEGER OLDLNB,PC,%INTEGERNAME NEWLNB)
%ROUTINESPEC ERMESS(%INTEGER N, INF)
! %ROUTINESPEC ICL9CELABELS
==== ercc07/emas-2900/sup26fsrce_oper33s.txt ====
! %CONSTSTRING(15)VSN = "OPER33 08/09/80"; ! ****************************************
%IF (MONLEVEL >> 1) & 1 = YES %START
%EXTRINSICLONGINTEGER KMON
%OWNINTEGER OPMON; ! COPY OF KMON BIT
%CONSTINTEGER KMONNING = YES
%FINISH %ELSE %START
%CONSTINTEGER KMONNING = NO
%FINISH
!
%IF MONLEVEL & 1 = YES %START
%CONSTINTEGER VIDEO UPDATING = YES
%OWNINTEGER OPER FACILITIES
%FINISH %ELSE %START
%CONSTINTEGER VIDEO UPDATING = NO
%FINISH
!
!
!
!%EXTERNALROUTINESPEC DUMPTABLE(%INTEGER X,A,S)
%EXTERNALROUTINESPEC PON(%RECORDNAME P)
%EXTERNALROUTINESPEC PKMONREC(%STRING(20)TXT,%RECORDNAME P)
==== ercc07/emas-2900/sup28dsrce_makeopt.txt ====
PARM OPT,STACK,NOLIST
IMP80 CTOPT+SUP28DSRCE_SUP28DS,SUPZZ,,.OUT
IMP80 CTOPT+SUP28DSRCE_COM36S,COMZZ,,.OUT
IMP80 CTOPT+SUP28DSRCE_PRINT09S,PRINTZZ,,.OUT
IMP80 CTOPT+SUP28DSRCE_OPER37S,OPERZZ,,.OUT
IMP80 CTOPT+SUP28DSRCE_ENTER15S,ENTERZZ,,.OUT
IMP80 CTOPT+SUP28DSRCE_GPC40S,GDCZZ,,.OUT
IMP80 SUP28DSRCE_MINDIAGS,MINDIAGZZ,,.OUT
IMP80 CTOPT+SUP28DSRCE_COMMS54S,COMMSZZ,,.OUT
IMP80 CTOPT+SUP28DSRCE_FAST42S,FASTZZ,,.OUT
IMP80 CTOPT+SUP28DSRCE_TAPE75S,TAPEZZ,,.OUT
PARM MAP
LINK
SUPZZ
COMZZ
PRINTZZ
OPERZZ
ENTERZZ
GDCZZ
MINDIAGZZ
COMMSZZ
==== ercc07/emas-2900/sup27bsrce_samplectopt.txt ====
!
! THIS FILE CONTAINS THE CONST INTEGERS TO CONTROL COMPILE TIME OPTIONS
! IN EMAS2900
! IT IS INTENDED TO BE CONCATENATED ONTO THE FRONT OF SOURCEFILES
! BEFORE COMPILATION
%CONSTINTEGER YES=1
%CONSTINTEGER NO=0
%CONSTINTEGER SSERIES=NO; ! NO=PSERIES, YES=SSERIES
%CONSTINTEGER MULTIOCP=YES; ! YES TO INCLUDE SEMAPHORING
%CONSTINTEGER SFCFITTED=NO; ! NO FOR DISC ONLY SITES
%CONSTINTEGER CPFITTED=NO; ! CARD PUNCH FITTED
%CONSTINTEGER SNOOZING=YES; ! YES ALLOWS SUSPEND IN STORE
! ADVANTAGEOUS WITH LARGE STORES
%CONSTINTEGER MONLEVEL=31; ! 0=NO MONITORING
! 2**0 SET=VIDEO UPDATING
! 2**1 SET=KMONNING
! 2**2 SET=SUP TIMING MEASUREMENTS
! 2**3 SET=CAT TABLE TRANSITIONS
! 2**4 SET= STROBING
! 2**8 SET=EVENT HARVESTING
==== ercc07/emas-2900/sup26esrce_documentn.txt ====
This partitioned file contains all the source required to make up a
version 26E Supervisor, plus the version of the IMP compiler and FIX
utility used at Edinburgh to do so. This compiler is necessary as some
advanced language features are required which are not available in the
service compiler.
Note that the OPTION NOBRACKETS must be in force in the process being
used for the method described to work.
Two "OBEY" subfiles are available: MAKECHKD and MAKEOPT. They each
construct a test Supervisor which is left in file SUP26xT, where x is
'C' or 'O' respectively.
Making a Supervisor thus consists of the following:
a) INSERT the IMP compiler and FIX utility into the current directory
(and then log off and log on again if IMP was previously used in
==== ercc07/emas-2900/impalgs_algolps6.txt ====
43
D(NAME)
D(ICONST)
D(CONST)
D(ONAME)
D(COMTEXT))
D(S)
D(ENDTEXT)
D(TEXTTEXT)
D(NAMELIST)
D(HOLE)
D(MARK)
D(ONAMELIST)
D(UPSTCNT)
D(LETTERSTRING)
D(DOWN)
D(UP)
D(SCALARTYPE)
D(NOTENAME)
D(TYPE=A)
D(TYPE=B)
==== ercc07/emas-2900/impalgs_algolps7.txt ====
45
D(NAME)
D(ICONST)
D(CONST)
D(ONAME)
D(COMTEXT))
D(S)
D(ENDTEXT)
D(TEXTTEXT)
D(NAMELIST)
D(HOLE)
D(MARK)
D(ONAMELIST)
D(UPSTCNT)
D(LETTERSTRING)
D(DOWN)
D(UP)
D(SCALARTYPE)
D(NOTENAME)
D(TYPE=A)
D(TYPE=B)
==== ercc07/emas-2900/sup27isrce_documentn.txt ====
This partitioned file contains all the source required to make up
an EMAS2900 Supervisor, plus the version of the IMP80 compiler and FIX
utility used at Edinburgh to do so. This compiler is necessary as some
advanced language features are required which are not available in the
service compiler.
Note that the OPTION NOBRACKETS must be in force in the process being
used for the method described to work.
Two "OBEY" subfiles are available: MAKECHKD and MAKEOPT. They each
construct a test Supervisor which is left in file SUP27xT, where x is
'C' or 'O' respectively.
Making a Supervisor thus consists of the following:
a) INSERT the IMP80 compiler and FIX utility into the current directory
(and then log off and log on again if IMP80 was previously used in
==== ercc07/emas-2900/impalgs_algolps8.txt ====
45
D(NAME)
D(ICONST)
D(CONST)
D(ONAME)
D(COMTEXT))
D(S)
D(ENDTEXT)
D(TEXTTEXT)
D(NAMELIST)
D(HOLE)
D(MARK)
D(ONAMELIST)
D(NOTELINE)
D(LETTERSTRING)
D(DOWN)
D(UP)
D(SCALARTYPE)
D(NOTENAME)
D(TYPE=A)
D(TYPE=B)
==== ercc07/emas-2900/soap80s.txt ====
!***********************************************************************
!* *
!* SOAP80 - IMP indenter. *
!* Created by E.N.Gregory. *
!* All syntax directed sections rewritten by P.D.S *
!* Using IMP80 syntax version 02. *
!* *
!***********************************************************************
%EXTERNALROUTINESPEC PROMPT(%STRING(31) S)
!***********************************************************************
!* *
!* Record formats. *
!* *
!***********************************************************************
%RECORDFORMAT FHDR(%INTEGER DATAEND,DATASTART,FILESIZE,FILETYPE)
%RECORDFORMAT CHDR(%INTEGER CONAD,FILETYPE,DATASTART,DATAEND)
%CONSTINTEGER MAXOPT = 13,NUMOPT = 3
%RECORDFORMAT PFORMAT((%BYTEINTEGER LINE,ICONTIN,POSCOM,MOVECOM,UCKEY,SEPKEY,
==== ercc07/emas-2900/impalgs_algolps9.txt ====
45
D(NAME)
D(ICONST)
D(CONST)
D(ONAME)
D(COMTEXT))
D(S)
D(ENDTEXT)
D(TEXTTEXT)
D(NAMELIST)
D(HOLE)
D(MARK)
D(ONAMELIST)
D(NOTELINE)
D(LETTERSTRING)
D(DOWN)
D(UP)
D(SCALARTYPE)
D(NOTENAME)
D(TYPE=A)
D(TYPE=B)
==== ercc07/emas-2900/pimp04s.txt ====
%TRUSTEDPROGRAM
%EXTERNALROUTINE ICL9CEZPERQIMP
%CONSTINTEGER RELEASE=4
%CONSTINTEGER YES=1,NO=0
%CONSTINTEGER ON PERQ=NO
%CONSTINTEGER BYTEADDRSHFT=1*ON PERQ
%CONSTSTRING(9) LADATE="15 Nov 82"; ! LAST ALTERED
%INTEGER I, J, K
%CONSTINTEGER NO OF SNS=63
%CONSTINTEGER LRLPT=X'62'
!
%CONSTBYTEINTEGERARRAY BYTES(0:7)=0(3),1,2,4,8,16;
%CONSTBYTEINTEGERARRAY WORDS(0:7)=0(3),1,1,2,4,8;
%CONSTINTEGER MAXLEVELS=31,CONCOP=13
!
%INCLUDE "ERCC07.PERQ_OPCODES"
%INCLUDE "ERCC07.PERQ_FORMAT3S"
%CONSTINTEGER SNPT=X'1006'; ! SPECIALNAME PTYPE
%CONSTINTEGER UNASSPAT=X'80808080'
%OWNSTRING(8)MDEP="S#NDIAG"
!
==== ercc07/emas-2900/irout32s.txt ====
! 03/06/82 IROUT31S HAS ERFN & ERFC REIMPLEMENTED USING ICL METHOD
!02/06/82 CONVERTED TO IMP90 BY PDS
!17/11/80 - IROUT29S - CAPACITY EXCEEDED CHECKING ADDED TO READSTRING
!COPIED FROM ERCS08.B44SCE_IROUT27A ON 26.10.78
!LRANDOM ADDED 24.1.80
!UNUSED SPECS AND UNUSED ROUTINE FILL REMOVED 10/8/79
!SOME MATHS ROUTINE FAULT NOS ALTERED 19/12/78
!IEXPTEN RENAMED AS EXPTEN
!ILOGTEN RENAMED AS LOGTEN
!ICOT RENAMED AS COT
!IHYPSIN RENAMED AS HYPSIN
!IHYPCOS RENAMED AS HYPCOS
!IHYPTAN RENAMED AS HYPTAN
!THE FOLLOWING ROUTINES HAVE BEEN REMOVED:
!DA AND SQ ROUTINES,FROMSTRING,CLOSESTREAM,IFDBINARY
!RFDBINARY,CPUTIME,TIME,DATE,SETMARGINS
!SPECS ADDED FOR CPUTIME, TIME , AND DATE
!* MODIFIED 10/08/78 AGK (ADDED MLIBERR ROUTINE)
!* MODIFIED 20/02/78 ERROR MESSAGE VALUES
!* MODIFIED 29/09/78 LCG TO REMOVE MLIBERR
!* MODIFIED 17/2/77 LAB (APPENDED SQ & DA FILE ROUTINES AND
==== ercc07/emas-2900/sup28dsrce_tape75s.txt ====
!***********************************************************************
!
! 2900 TAPE HANDLER
!
!***********************************************************************
!
%IF SSERIES=NO %START
!..........PSERIES..........PSERIES..........PSERIES..........PSERIES
!
%CONSTINTEGER TOP LBE=36
! { CH FN
%CONSTINTEGERARRAY LBES(0:TOP LBE)= %C
X'00000200', { 1 RF
X'40001200', { 2 RR
X'00000200', { 3 RF
X'44C01200',X'86800D10',X'00006200', { 4 RR,AS,RFEC
X'40001200', { 5 RR
X'04C00200',X'86800D10',X'40007200', { 6 RF,AS,RREC
X'04C00200',X'04805200',X'86800D10',X'00006200', { 7 RF,SR,AS,RFEC
X'44C01200',X'04804200',X'86800D10',X'40007200', { 8 RR,SF,AS,RREC
X'00000200', { 9 RF
==== ercc07/emas-2900/link29h.txt ====
PARM MAP
LINK
ercc07.sup29my
ercc08.COMZZ
ercc08.PRINTZZ
ercc08.OPERZZ
ercc08.ENTERZZ
ercc08.GDCZZ
ercc08.NDIAGZZ
ercc08.COMMSZZ
ercc08.FASTZZ
ercc08.TAPEZZ
.END
SUP29Z
SUPFIX SUP29Z,SUP29CT
PERMIT SUP29CT
==== ercc07/emas-2900/ibmconvert_sibmload.txt ====
%RECORDFORMAT NAMEF(%C
%STRING(8) NAME,
%INTEGER ID,
ADDR, {-1=NOT KNOWN,OTHERWISE ABSOLUTE ADRS}
{OF NAME}
CHAIN, {0 NO OUTSTANDING RELOCATIONS OTHERWISE}
{PTR TO HEAD OF CHAIN OF RELOCATIONS}
LNTH, {OF AREA FOR SD, HOME SD NO FOR AN LD}
OFFSET, { OFFSET OF LD WITHIN HOME SD}
%BYTE TYPE, {STANDARD TYPES SD,LD ETC}
COMMON)
!
!
!
%RECORDFORMAT RR(%INTEGER CONAD,FTYPE,DSTART,DEND)
%SYSTEMINTEGERFNSPEC PSTOI(%STRING(63)S)
%EXTERNALSTRING(8)%FNSPEC IBM NAME(%STRING(1) PREFIX,%STRINGNAME NAME)
%EXTERNALROUTINESPEC PROMPT(%STRING(15) S)
%EXTERNALROUTINESPEC DEFINE(%STRING(255)PARM)
%SYSTEMROUTINESPEC OUTFILE(%STRING(31)FILE,%INTEGER SIZE,HOLE,PROT,
%INTEGERNAME CONAD,FLAG)
==== ercc07/emas-2900/link29i.txt ====
PARM MAP
LINK
ercc07.sup29my
ercc08.COMZZ
ercc08.PRINTZZ
ercc08.OPERZZ
ercc08.ENTERZZ
ercc08.GDCZZ
ercc08.NDIAGZZ
ercc08.COMMSZZ
ercc08.FASTZZ
ercc08.TAPEZZ
.END
SUP29Z
SUPFIX SUP29Z,SUP29CT
PERMIT SUP29CT
==== ercc07/emas-2900/opt01s.txt ====
%INCLUDE "ERCC07.TRIMP_TFORM1S"
%INCLUDE "ERCC07.TRIPCNSTS"
%EXTRINSICRECORD (WORKAF) WORKA
%EXTRINSICRECORD (PARMF) PARM
%EXTERNALROUTINESPEC IMPABORT
%IF HOST#TARGET %START
%EXTERNALROUTINESPEC REFORMATC(%RECORD(RD)%NAME OPND)
%FINISH
%EXTERNALROUTINESPEC MOVE BYTES(%INTEGER L,FB,FO,TB,TO)
%EXTERNALROUTINESPEC FAULT(%INTEGER N,DATA,IDENT)
%EXTERNALROUTINESPEC PRINT TRIPS(%RECORD (TRIPF) %ARRAYNAME TRIPLES)
%CONSTBYTEINTEGERARRAY WORDS(0:7)=0(3),1,1,1,2,4;
%EXTERNALROUTINE CTOP(%INTEGERNAME FLAG,MASK, %INTEGER XTRA,
%RECORD (RD) %NAME OPND1,OPND2)
!***********************************************************************
!* AN OPERATION HAS BEEN FOUND WHERE BOTH OPERANDS ARE *
!* CONSTANTS OR KNOWN AT COMPILE TIME. THIS ROUTINE INTERPRETS *
!* THE OPERATION *
!* ON EXIT FLAG=0 IF INTERPRETED. REFRAINS FROM INTERPRETING *
!* X=1/0 FOR EXAMPLE. CODE IS PLANTED FOR THESE FUNNIES *
!***********************************************************************
==== ercc07/emas-2900/sup27isrce_mindiags.txt ====
%EXTERNALSTRINGFNSPEC STRHEX(%INTEGER I)
%SYSTEMROUTINE NDIAG(%INTEGER PCOUNT, LNB, FAULT, INF)
!***********************************************************************
!*_______'MASTER DIAGNOSTIC ROUTINE'. DISCOVERS THE LANGUAGE OF THE *
!*_______FAILED ROUTINE FROM WORD 4 OF THE GLA AND CALLS APPROPRIATE *
!*_______DIAGNOSTIC ROUTINE. THIS IS REPEATED TILL ALL DIAGNOSTICS *
!*_______GIVEN. *
!*_______PCOUNT = PCOUNTER AT FAILURE *
!*_______LNB = LOCAL NAME BASE AT FAILURE *
!*_______FAULT = FAILURE (0=%MONITOR REQUESTED) *
!*_______INF =ANY FURTHER INFORMATION *
!***********************************************************************
PRINTSTRING("
MINIMUM NDIAGS ENTERED
FAULT NO ="); WRITE(FAULT,2)
PRINTSTRING("
PC=X".STRHEX(PCOUNT)."
LNB=X".STRHEX(LNB)."
")
%IF FAULT>0 %THEN %STOP
%END
==== ercc07/emas-2900/itrimp_hostcodes.txt ====
%CONSTINTEGER YES=1,NO=0
!
! THESE CODE ARE ARBITARY BUT THE TOP DECIMAL DIGIT GIVES THE NO OF BYTES
! IN THE UNIT OF ADDRESSABILITY. BYTE ADDRESSES HOSTS BEING 1N AND
! 16 BIT WORD ADDRESSED HOSTS BEING 2N ETC
%CONSTINTEGER EMAS=10
%CONSTINTEGER IBM=11
%CONSTINTEGER IBMXA=12
%CONSTINTEGER DRS=13
%CONSTINTEGER AMDAHL=14
%CONSTINTEGER PERQ=20
%CONSTINTEGER PNX=21
%CONSTINTEGER ACCENT=22
! ACCENT DIFFERS FROM PERQ ONLY IN
! ASSEMBLES SEQUENCES&SYNTAX
! AND GENERATOR
%CONSTINTEGER LINTAVAIL=1<<IBM!1<<IBMXA!1<<EMAS
%CONSTINTEGER LLREALAVAIL=1<<IBM!1<<IBMXA!1<<EMAS
==== ercc07/emas-2900/tlink1.txt ====
LINK
TIMP01Y
TSUP01Y
P1Y
TOPT01Y
.END
P0Y
MODIFY P0Y
SATISFY REFS
.ALL
SATISFY DATA
.ALL
RENAME
ICL9CEZPERQIMP,S#PERQIMP
.END
SUPPRESS
.ALL
RETAIN
S#PERQIMP
SUPPRESS DATA
.ALL
==== ercc07/emas-2900/sup25jsrce_print01s.txt ====
?%EXTRINSICLONGINTEGER KMON
%EXTERNALINTEGERFNSPEC HANDKEYS
%EXTERNALROUTINESPEC WAIT(%INTEGER MSECS)
%EXTERNALROUTINESPEC SUP29
%ROUTINESPEC PRHEX(%INTEGER H)
%ROUTINESPEC PRINTER(%RECORDNAME P)
%EXTERNALROUTINESPEC GPC(%RECORDNAME P)
%EXTERNALROUTINESPEC PON(%RECORDNAME P)
%EXTERNALROUTINESPEC SLAVESONOFF(%INTEGER J)
%EXTERNALROUTINESPEC OPMESS(%STRING (23) MESS)
%RECORDFORMAT PARMF(%INTEGER DEST, SRCE, P1, P2, P3, P4, P5, P6)
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 18D ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,KLOKCORRECT,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,PROCMON,DQADDR, %C
SACPORT,OCPPORT,ITINT,CONTYPEA,GPCCONFA,FPCCONFA,SFCCONFA, %C
BLKADDR,DPTADDR,SMACS,TRANS,%LONGINTEGER KMON, %C
%INTEGER SPDRQ,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
==== ercc07/emas-2900/vzkgrt0s.txt ====
!
! SPECIAL SERVICE ROUTINES FOR ALGOL(J) PDS 14.07.77
!
%SYSTEMINTEGERFN JREADOINT(%LONGREAL C0)
!***********************************************************************
!* CHOP C0 DOWN TO 32 BITS (SHORT REAL) AND RETURN AS INTEGER *
!***********************************************************************
*LSS_C0; *EXIT_-64
%END
%SYSTEMLONGREALFN JINTDOREA(%INTEGER C0)
!***********************************************************************
!* C0 IS REALLY A SHORT REAL: EXPAND TO 64 BITS AND RETURN *
!***********************************************************************
*LSS_0; *LUH_C0; *EXIT_-64
%END
%SYSTEMINTEGERFN JSPOJILIP(%INTEGER IL,IP)
!***********************************************************************
!* PACK IL & IP INTO LEFT & RIGHT 16 BITS OF A 32 BIT INTEGER *
!***********************************************************************
*LSS_IP; *AND_X'FFFF'
*SLSS_IL; *USH_16
==== ercc07/emas-2900/perqcode1s.txt ====
!
! OPCODES AND CONSTINTEGER FOR PERQ IMP
! P REFS ARE TO PERQ Q-CODE MANAUAL
!
%CONSTINTEGER LDC0=0; ! P21 LOAD WORD CONSTANTS 0-15
%CONSTINTEGER LDCN=22; ! P21 LOAD CONSTANT NIL
%CONSTINTEGER LDCMO=16; ! P21 LOAD CONSTANT -1
%CONSTINTEGER LDCB=17; ! P21 LOAD CONSTANT (SIGNED)BYTE
%CONSTINTEGER LDCW=18; ! P21 LOAD CONSTANT (SIGNED)WORD
%CONSTINTEGER LDLDB=80; ! ADDITION LOAD LOCAL DOUBLE -BYTE OFFSET
%CONSTINTEGER LDLDW=81; ! ADDITION LOAD LOCAL DOUBLE -WORD OFFSET
%CONSTINTEGER LDODB=82; ! ADDITION LOAD LOCAL DOUBLE -BYTE OFFSET
%CONSTINTEGER LDODW=83; ! ADDITION LOAD LOCAL DOUBLE -WORD OFFSET
%CONSTINTEGER STLDB=84; ! ADDITION STORE LOCAL DOUBLE -BYTE OFFSET
%CONSTINTEGER STLDW=85; ! ADDITION STORE LOCAL DOUBLE -WORD OFFSET
%CONSTINTEGER STODB=86; ! ADDITION STORE LOCAL DOUBLE -BYTE OFFSET
%CONSTINTEGER STODW=87; ! ADDITION STORE LOCAL DOUBLE -WORD OFFSET
%CONSTINTEGER LDL0=109; ! P22 LOAD LOCAL WORD(0-15)
%CONSTINTEGER LDLB=107; ! P22 LOAD LOCAL UNSIGNED BYTE OFFSET
%CONSTINTEGER LDLW=108; ! P22 LOAD LOCAL WORD OFFSET
==== ercc07/emas-2900/sup26gsrce_tape69s.txt ====
!
!**************************************************
!* *
!* TAPE HANDLER FOR 2900 *
!* *
!**************************************************
!!
!! EXTERNAL ROUTINE REFERENCES
!!
%EXTERNALSTRINGFNSPEC HTOS(%INTEGER VALUE, PLACES)
%EXTERNALROUTINESPEC OPMESS(%STRING (23) S)
%EXTERNALROUTINESPEC PON(%RECORDNAME P)
%SYSTEMROUTINESPEC ETOI(%INTEGER A, L)
%SYSTEMROUTINESPEC MOVE(%INTEGER L, FROMAD, TOAD)
%EXTERNALROUTINESPEC PRHEX(%INTEGER N)
%EXTERNALROUTINESPEC DUMP TABLE(%INTEGER TABNO, START, L)
%EXTRINSICLONGINTEGER PARMDES
%EXTERNALINTEGERFNSPEC NEWPPCELL
%EXTERNALROUTINESPEC RETURNPPCELL(%INTEGER CELL)
%IF MULTIOCP=YES %START
==== ercc07/emas-2900/sup26csrce_oper31s.txt ====
%CONSTSTRING(15)VSN = "OPER31 22/04/80"
!
!
%CONSTINTEGER YES = 1
%CONSTINTEGER NO = 0
%CONSTINTEGER MONLEVEL = 1
!
%IF MONLEVEL & 1 > 0 %START
%EXTRINSICLONGINTEGER KMON
%OWNINTEGER OPER FACILITIES
%OWNINTEGER OPMON; ! COPY OF KMON BIT
%FINISH
!
!
!
!
%EXTERNALROUTINESPEC DUMPTABLE(%INTEGER X,A,S)
%EXTERNALROUTINESPEC PON(%RECORDNAME P)
%EXTERNALROUTINESPEC PTREC(%RECORDNAME P)
%EXTERNALROUTINESPEC PARSE COM(%INTEGER SRCE,%STRINGNAME S)
%EXTERNALROUTINESPEC RETURN PP CELL(%INTEGER CELL)
==== ercc07/emas-2900/opt02s.txt ====
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
! Opnd2 is either a 32 bit const with the size (ACC) as value or
! the ptr or arrayhead as normal operand.
!
! VMY X1 is now dim<<28!maxdim<<24!array name(where known)
! Opnd2 is either a 32 bit const with DV offset into const area or
! the arrayhead as a standard operand
!
! AINDX X1 is ELSIZE<<20 !spare
! Opnd2 is arrayhead as standard operand
! NOTE:- The Operands have been swopped for consistency with norm.
==== ercc07/emas-2900/sup27csrce_gpc37s.txt ====
%CONSTSTRING (25) VSN="GPC37 29TH JUNE 81"
!************************************************GPC GPC GPC
!*
!* EMAS 2900 SUPERVISOR NOTE
!* No: 5
!* Date: 21/05/80
!* Author: A.Gibbons
!*
!*
!* %EXTERNAL ROUTINE GPC(%RECORD(PARMF)%NAME P)
!*
!* 1. CONVENTIONS
!* The record spec for the parameter is
!* %RECORDFORMAT PARMF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6)
!* where
!* DEST is considered as two half words DSNO and DACT. DSNO
!* must be GPC's DSNO
!* DACT is set according to the function required.
!*
!* SRCE is considered as two halfwords SSNO and SACT.
==== ercc07/emas-2900/sup26isrce_samplectopt.txt ====
!
! THIS FILE CONTAINS THE CONST INTEGERS TO CONTROL COMPILE TIME OPTIONS
! IN EMAS2900
! IT IS INTENDED TO BE CONCATENATED ONTO THE FRONT OF SOURCEFILES
! BEFORE COMPILATION
%CONSTINTEGER YES=1
%CONSTINTEGER NO=0
%CONSTINTEGER SSERIES=NO; ! NO=PSERIES, YES=SSERIES
%CONSTINTEGER MULTIOCP=YES; ! YES TO INCLUDE SEMAPHORING
%CONSTINTEGER SFCFITTED=NO; ! NO FOR DISC ONLY SITES
%CONSTINTEGER CPFITTED=NO; ! CARD PUNCH FITTED
%CONSTINTEGER SNOOZING=YES; ! YES ALLOWS SUSPEND IN STORE
! ADVANTAGEOUS WITH LARGE STORES
%CONSTINTEGER MONLEVEL=31; ! 0=NO MONITORING
! 2**0 SET=VIDEO UPDATING
! 2**1 SET=KMONNING
! 2**2 SET=SUP TIMING MEASUREMENTS
! 2**3 SET=CAT TABLE TRANSITIONS
! 2**4 SET= STROBING
! 2**8 SET=EVENT HARVESTING
==== ercc07/emas-2900/opt03s.txt ====
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
! Opnd2 is either a 32 bit const with the size (ACC) as value or
! the ptr or arrayhead as normal operand.
!
! VMY X1 is now dim<<28!maxdim<<24!array name(where known)
! Opnd2 is either a 32 bit const with DV offset into const area or
! the arrayhead as a standard operand
!
! AINDX X1 is ELSIZE<<20 !spare
! Opnd2 is arrayhead as standard operand
! NOTE:- The Operands have been swopped for consistency with norm.
!
==== ercc07/emas-2900/impalgs_writes.txt ====
%SYSTEMROUTINE WRITE(%INTEGER VALUE,PLACES)
%SYSTEMROUTINESPEC IOCP(%INTEGER A,B)
%STRING(16)S
%INTEGER D0,D1,D2,D3,L
PLACES=PLACES&15
*LSS_VALUE; *CDEC_0
*LD_S; *INCA_1; *STD_%TOS
*CPB_%B; ! SET CC=0
*SUPK_%L=15,0,32; ! UNPACK & SPACE FILL
*STD_D2; *JCC_8,<WASZERO>
*LD_%TOS; *STD_D0; ! FOR SIGN INSERTION
*LD_%TOS
*MVL_%L=15,63,0; ! FORCE ISO ZONE CODES
%IF VALUE<0 %THEN BYTEINTEGER(D1)='-'
L=D3-D1
OUT: %IF PLACES>=L %THEN L=PLACES+1
D3=D3-L-1
BYTEINTEGER(D3)=L
IOCP(15,D3)
%RETURN
WASZERO:
==== ercc07/emas-2900/impalgs_pprof01s.txt ====
%SYSTEMROUTINE PPROFILE(%INTEGER A,B)
%INTEGER LINES,V,I,J,MAX,MAXMAX
LINES=A&X'FFFF'-1
MAX=0
%CYCLE I=1,1,LINES
%IF INTEGER(B+4*I)>MAX %THEN MAX=INTEGER(B+4*I)
%REPEAT
MAXMAX=MAX
MAX=1+MAX//40; ! TWO&AHALF PER CENT
%CYCLE I=1,1,LINES
V=INTEGER(B+4*I)
%IF V>=MAX %THEN %START
WRITE(I,4)
J=I
%WHILE INTEGER(B+4*J+4)=V %THEN J=J+1
%IF J#I %THEN PRINTSTRING("->") %AND WRITE(J,4) %C
%ELSE SPACES(7)
I=J
WRITE(V,6)
%IF V=MAXMAX %THEN PRINTSTRING(" ***")
==== ercc07/emas-2900/sup28asrce_tape73s.txt ====
!**************************************************
!* *
!* TAPE HANDLER FOR 2900 *
!* *
!**************************************************
!!
!***********************************************************************
!* VERSION 73:
!* PRIVATE CHAINS REDONE - P_P3=VADD RCB, P5,P6=STB FOR RCB AREA.
!* ALSO ALL ATTENTIONS FOR PRIVATE CHAINS GO STRAIGHT TO USER
!* WITHOUT ANY ACTION HERE.
!* VERSION 72
!* 05-MAY-81:
!* HAIRY PON TO RESET 'RETRY PREAMBLE' WHICH ALLOWS/INHIBITS
!* READ RETRY WHEN NO PREAMBLE DETECTED.
!* MAINLY INTENDED FOR READING DUMP TAPES WITH SUCH.
!* 04-MAY-81:
!* FIX IN LOAD AND LOAD MESSAGE FOR FAULTY DSN.
!* REWINDS AND COMES UP AS LOADED NO LABEL.
!* 01-MAY-81:
==== ercc07/emas-2900/sup26gsrce_fast30s.txt ====
%EXTERNALSTRING (15) %FNSPEC STRINT(%INTEGER N)
%EXTERNALSTRING (8) %FNSPEC STRHEX(%INTEGER N)
%EXTERNALSTRING(8) %FNSPEC HTOS(%INTEGER VALUE,PLACES)
%EXTERNALROUTINESPEC PKMONREC(%STRING(20)TEXT,%RECORDNAME P)
%EXTERNALROUTINESPEC OPMESS(%STRING (63) S)
%ROUTINESPEC MONITOR(%STRING (63) S)
%EXTERNALROUTINESPEC DUMP TABLE(%INTEGER T, A, L)
%ROUTINESPEC ELAPSED INT(%RECORDNAME P)
%SYSTEMROUTINESPEC MOVE(%INTEGER L,F,T)
%SYSTEMROUTINESPEC ETOI(%INTEGER A, L)
%ROUTINESPEC PDISC(%RECORDNAME P)
%EXTERNALROUTINESPEC HOOT(%INTEGER NHOOTS)
%EXTERNALROUTINESPEC WAIT(%INTEGER MSECS)
%EXTERNALINTEGERFNSPEC HANDKEYS
%EXTERNALINTEGERFNSPEC REALISE(%INTEGER PUBVIRTADDR)
%EXTERNALROUTINESPEC SLAVESONOFF(%INTEGER ONOFF)
%IF MULTIOCP=YES %THEN %START
%EXTERNALROUTINESPEC RESERVE LOG
%EXTERNALROUTINESPEC RELEASE LOG
%FINISH
==== ercc07/emas-2900/lcs.txt ====
%list
%routine LOCAL CONTROL
! CLAIMED BLOCK TABLES
%record (CBTF) %name CBT
! CONSOLE IO & ACCOUNTS RECORDS
%integername SEMAHELD; ! DIRECTOR HOLDING SEMA WORD
! ACTIVE SEGMENT TABLES
%constinteger MAXAS=31
%integerarray AS(0:7,0:MAXAS)
%byteintegerarray ASEG(0:MAXAS)
%integerarray ASPTVAD(0:MAXAS)
%integerarray OLDASWIPS(0:MAXRESIDENCES)
%constinteger TOPBIT=X'80000000'
!-----------------------------------------------------------------------
! LOCAL SEGMENT INFORMATION
%byteintegerarray TST(0:LSTLEN-1); ! TERTIARY SEGMENT TABLE POINT TO AS
%constinteger SMALL SEQUENTIAL=8; !USED TO DECIDE TO RECAP OR NOT
%integerfnspec DXR(%longlongrealname T, %longlongreal B)
%integerfnspec CHECK RES(%integer WRITE,LEN,AD)
%integerfnspec CHECKDA(%integer DA)
%routinespec PAGEOUT(%integer VSSEG,VSEPAGE, %record (CBTF) %name CBT)
==== ercc07/emas-2900/sup26csrce_documentn.txt ====
This partitioned file contains all the source required to make up a
version 26C Supervisor, plus the version of the IMP compiler and FIX
utility used at Edinburgh to do so. This compiler is necessary as some
advanced language features are required which are not available in the
service compiler.
Note that the OPTION NOBRACKETS must be in force in the process being
used for the method described to work.
Two "OBEY" subfiles are available: MAKECHKD and MAKEOPT. They each
construct a test Supervisor which is left in file SUP26xT, where x is
'C' or 'O' respectively.
Making a Supervisor thus consists of the following:
a) INSERT the IMP compiler and FIX utility into the current directory
(and then log off and log on again if IMP was previously used in
==== ercc07/emas-2900/docs_mar83.txt ====
EMAS System
===========
The main changes to the software have concerned DAP scheduling; however, a
new Director which supports multiple file indexes per user has been put into
service. This is currently inaccessible until a subsystem which accesses these
features is available. A distressing amount of skilled time has disappeared in
investigating curious faults in the service. Many symptoms have been tracked to
OCP3 executing conditional branches incorrectly about 1 time in 10**9. However,
with the reduced level of engineering cover and fewer OCP specialists around too
much effort here has fallen on software people.
The discussions at Bush83 were encouraging, particularly the near support
for an advanced user interface; a collection of bad features in the present
system has been compiled together with a large number of possible ideas and
improvements. Contacts with UKC have proved helpful but producing a coherent
design from the very large kit of parts is difficult. Enough material for
several subsystems is available and many good ideas will perforce have to be
rejected.
Further rounds of discussions have taken place with ICL about their future
==== ercc07/emas-2900/sup26isrce_ndiag07s.txt ====
!*_ DATED 11 NOV 76 1
! ALTERATIONS BY K.YARWOOD ...
! PRINT FL AND NEXT SYMBOL LINES COMMENTED OUT
! PRINTTEXT'S TURNED TO PRINTSTRING'S
! ADDITION FOR LONGINTEGER IN RT PRINT VAR
! HEX EQUIVALENTS FOR INTS,LONGINTS ETC PRINTED
! INF PRINTED IN HEX IN RT ERRMESS
%EXTERNALSTRINGFNSPEC STRHEX(%INTEGER I)
%EXTERNALSTRING(8)%FNSPEC STRINT(%INTEGER I)
%CONSTINTEGER STACKBASE=X'80100000'; ! START OF RESIDENT STACK
! %SYSTEMROUTINESPEC SIGNAL(%INTEGER I, J, K, %INTEGERNAME F)
%ROUTINESPEC PRINTMESS(%INTEGER N)
! %SYSTEMROUTINESPEC TIDY EXIT
!*
%ROUTINESPEC INDIAG(%INTEGER OLDLNB, L, PC, %INTEGERNAME NEWLNB)
! %ROUTINESPEC FDIAG(%INTEGER OLDLNB,PC,%INTEGERNAME NEWLNB)
%ROUTINESPEC ERMESS(%INTEGER N, INF)
! %ROUTINESPEC ICL9CELABELS
==== ercc07/emas-2900/sup26gsrce_samplectopt.txt ====
!
! THIS FILE CONTAINS THE CONST INTEGERS TO CONTROL COMPILE TIME OPTIONS
! IN EMAS2900
! IT IS INTENDED TO BE CONCATENATED ONTO THE FRONT OF SOURCEFILES
! BEFORE COMPILATION
%CONSTINTEGER YES=1
%CONSTINTEGER NO=0
%CONSTINTEGER SSERIES=NO; ! NO=PSERIES, YES=SSERIES
%CONSTINTEGER MULTIOCP=YES; ! YES TO INCLUDE SEMAPHORING
%CONSTINTEGER SFCFITTED=NO; ! NO FOR DISC ONLY SITES
%CONSTINTEGER CPFITTED=NO; ! CARD PUNCH FITTED
%CONSTINTEGER SNOOZING=YES; ! YES ALLOWS SUSPEND IN STORE
! ADVANTAGEOUS WITH LARGE STORES
%CONSTINTEGER MONLEVEL=31; ! 0=NO MONITORING
! 2**0 SET=VIDEO UPDATING
! 2**1 SET=KMONNING
! 2**2 SET=SUP TIMING MEASUREMENTS
! 2**3 SET=CAT TABLE TRANSITIONS
! 2**4 SET= STROBING
! 2**8 SET=EVENT HARVESTING
==== ercc07/emas-2900/sup28asrce_makeopt.txt ====
PARM FREE,OPT,STACK,NOLIST
IMP80 CTOPT+SUP28ASRCE_SUP28AS,SUPZZ,,.OUT
IMP80 CTOPT+SUP28ASRCE_COM35S,COMZZ,,.OUT
IMP80 CTOPT+SUP28ASRCE_PRINT08S,PRINTZZ,,.OUT
IMP80 CTOPT+SUP28ASRCE_OPER36S,OPERZZ,,.OUT
IMP80 CTOPT+SUP28ASRCE_ENTER14S,ENTERZZ,,.OUT
IMP80 CTOPT+SUP28ASRCE_GPC39S,GPCZZ,,.OUT
IMP80 SUP28ASRCE_MINDIAGS,MINDIAGZZ,,.OUT
IMP80 CTOPT+SUP28ASRCE_COMMS53S,COMMSZZ,,.OUT
IMP80 CTOPT+SUP28ASRCE_FAST41S,FASTZZ,,.OUT
IMP80 CTOPT+SUP28ASRCE_TAPE73S,TAPEZZ,,.OUT
PARM MAP
LINK
SUPZZ
COMZZ
PRINTZZ
OPERZZ
ENTERZZ
GPCZZ
MINDIAGZZ
COMMSZZ
==== ercc07/emas-2900/sup26csrce_releasen.txt ====
SUPERVISOR RELEASE NOTICE VSN 26C
_________________________________
This Supervisor incorporates the following changes:-
1) Allows "Snoozing" if incorporated at compile time.
This feature allows processes to be suspended in store
for short periods. It is designed for very large stores.
2) Improved FAST(27) with transfer aborting. This eases
pressure on the Disc channels by not starting writeouts
on pages which have been recaptured by the time the disc
is on cylinder.
3) Incorporates the new OPER(31). See separte documentation.
==== ercc07/emas-2900/docs_emasprot.txt ====
@h(Protection in EMAS 2900)
[This document is in the form of an addendum to Reference 1.]
2900 Architecture provides a variety of methods to enable an operating system
to maintain its own integrity.
a) @b(Privilege). A bit in the PSW is required to execute
privileged instructions.
b) @b(Activate). A privileged instruction to start executing
a less trusted program at a lower ACR level and on a new
stack.
c) @b(Out). An instruction exactly comparable to the IBM @b(SVC).
Enables an untrusted program to return to Supervisor in a
controlled and secure way.
d) @b(ACR levels). Four bits in the @b(PSW) define the @b("Access)
@b(Control") status of the running program. All store accesses
==== ercc07/emas-2900/impalgs_impmess2.txt ====
1 "%REPEAT is not required"
2 "Label & has already been set in this block"
4 "& is not a Switch name at current textual level"
5 "Switch name & in expression or assignment"
6 "Switch label &(#) set a second time"
7 "Name & has already been declared"
8 "Routine or fn & has more parameters than specified"
9 "Parameter # of & differs in type from specification"
10 "Routine or fn & has fewer parameters than specified"
11 "Label & referenced at line # has not been set"
12 "%CYCLE at line # has two control clauses"
13 "%REPEAT for %CYCLE at line # is missing"
14 "%END is not required"
15 "# %ENDs are missing"
16 "Name & has not been declared"
17 "Name & does not require parameters or subscripts"
18 "# too few parameters provided for &"
19 "# too many parameters provided for &"
20 "# too few subscripts provided for array &"
21 "# too many subscripts provided for array &"
==== ercc07/emas-2900/docs_may85.txt ====
Central Systems Group
Although the impression seems to be around that the sole raison d'etre of
CSG is to write ever more sophisticated operating systems, it is the other
activities that absorbed most effort this term.
1) The Filestore is receiving substantial software effort in preparation
for direct attachment to the CPSE. This involves a change of communication
protocols from NSI to X25.
2) The 2976 has had a spate of crashes due primarily to faults in the DAPs
when acting as store. DAP store appears to go incommunicado after certain
hardware faults unlike normal store. To live through such faults the
Supervisor has been altered to ensure all vital pages are kept out of DAP
store and EMAS now runs through DAP multibit failures.
3) The 2988 is about to move to Kings Buildings and share peripherals with
the 2976. The changes needed to device driving and archiving strategies to
accommodate shared peripherals are being evaluated.
==== ercc07/emas-2900/sup26csrce_comms42s.txt ====
! VERSION OF 04/12/79
! DEC 79: INCLUDE AN OPER ADAPTOR
! HAVE ONLY ONE SERVICE NUMBER, X'37'
! OTHER POSSIBLE CHANGES
! MAKE INITIALISATION CALL OF CC INITIALISE ADAPTORS AS WELL
! MAKE IT POSSIBLE TO DEALLOCATE/ALLOCATE ALL DEVICES
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20A ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,WASKLOKCORRECT,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,DQADDR, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0, %C
%INTEGER ITINT,CONTYPEA,GPCCONFA,FPCCONFA,SFCCONFA, %C
BLKADDR,DPTADDR,SMACS,TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,SP0,SP1, %C
SP2,SP3,SP4,SP5,SP6,SP7,SP8, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
==== ercc07/emas-2900/sup26esrce_samplectopt.txt ====
!
! THIS FILE CONTAINS THE CONST INTEGERS TO CONTROL COMPILE TIME OPTIONS
! IN EMAS2900
! IT IS INTENDED TO BE CONCATENATED ONTO THE FRONT OF SOURCEFILES
! BEFORE COMPILATION
%CONSTINTEGER YES=1
%CONSTINTEGER NO=0
%CONSTINTEGER SSERIES=NO; ! NO=PSERIES, YES=SSERIES
%CONSTINTEGER MULTIOCP=NO; ! YES TO INCLUDE SEMAPHORING
%CONSTINTEGER SFCFITTED=YES; ! NO FOR DISC ONLY SITES
%CONSTINTEGER CPFITTED=YES; ! CARD PUNCH FITTED
%CONSTINTEGER SNOOZING=NO; ! YES ALLOWS SUSPEND IN STORE
! ADVANTAGEOUS WITH LARGE STORES
%CONSTINTEGER MONLEVEL=7; ! 0=NO MONITORING
! 2**0 SET=VIDEO UPDATING
! 2**1 SET=KMONNING
! 2**2 SET=SUP TIMING MEASUREMENTS
! 2**3 SET=CAT TABLE TRANSITIONS
! 2**4 SET= STROBING
! 2**8 SET=EVENT HARVESTING
==== ercc07/emas-2900/ifast2s.txt ====
%include "ercc08.comf370"
%include "ercc08.page0f"
%recordformat PARMF(%integer DEST,SRCE,(%integer P1,P2,P3,P4,P5,
P6 %orstring (23) TEXT))
%constinteger PCELLSIZE=36,MARGIN=48
%recordformat PDOPEF(%integer CURRMAX,MAXMAX,FIRST UNALLOC,LAST UNALLOC,
NEXTPAGE,S1,S2,S3,S4)
%recordformat PARMXF(%integer DEST,SRCE,P1,P2,P3,P4,P5,P6,LINK)
%constrecord (PARMXF) %arrayname PARM=PARM0AD
%constrecord (PDOPEF) %name PARMDOPE=PARM0AD
%recordformat STOREF(%shortinteger FLAGS,USERS,LINK,BLINK,FLINK)
%constrecord (STOREF) %arrayname STORE=STORE0AD
!
%externallonginteger SEMATIME=0
%owninteger PARMASL=0
%externalinteger MAINQSEMA=-1
%externalintegerspec STORESEMA
%ownintegerarray GET NEW PAGE(0:14); ! parms for call of new epage
!
%constinteger LOCSN1=LOCSN0+MAXPROCS
%recordformat SERVF(%integer P,L)
==== ercc07/emas-2900/sup27csrce_ndiag07s.txt ====
!*_ DATED 11 NOV 76 1
! ALTERATIONS BY K.YARWOOD ...
! PRINT FL AND NEXT SYMBOL LINES COMMENTED OUT
! PRINTTEXT'S TURNED TO PRINTSTRING'S
! ADDITION FOR LONGINTEGER IN RT PRINT VAR
! HEX EQUIVALENTS FOR INTS,LONGINTS ETC PRINTED
! INF PRINTED IN HEX IN RT ERRMESS
%EXTERNALSTRINGFNSPEC STRHEX(%INTEGER I)
%EXTERNALSTRING(8)%FNSPEC STRINT(%INTEGER I)
%CONSTINTEGER STACKBASE=X'80100000'; ! START OF RESIDENT STACK
! %SYSTEMROUTINESPEC SIGNAL(%INTEGER I, J, K, %INTEGERNAME F)
%ROUTINESPEC PRINTMESS(%INTEGER N)
! %SYSTEMROUTINESPEC TIDY EXIT
!*
%ROUTINESPEC INDIAG(%INTEGER OLDLNB, L, PC, %INTEGERNAME NEWLNB)
! %ROUTINESPEC FDIAG(%INTEGER OLDLNB,PC,%INTEGERNAME NEWLNB)
%ROUTINESPEC ERMESS(%INTEGER N, INF)
! %ROUTINESPEC ICL9CELABELS
==== ercc07/emas-2900/cs4_intro.txt ====
@make[report]
@device[x2700]
@majorheading[compiler construction]
@heading[Peter Stephens]
@section[Description]
The aim of this course is to confront the problems encountered in producing a
production quality compiler; it also introduces students to the quite different
problems of programming in a team. Students, working in groups of 3 or 4, are
expected to produce an ALGOL 60 compiler on the EMAS Amdahl Service. Groups
will be provided with a syntax, run time support package, an object file
generation suite and 120 test programs. They will also receive a brief guided
tour of the compiler debugging aids on EMAS. They will have to grapple with
the "excruciating problems" of stack control and parameter passing in ALGOL.
@section[Organisation]
The course will consist of 12 lecturers interspersed with 6 tutorials all given
by Peter Stephens. There will also be weekly brainstorming sessions at 8.30 a.m.
for the benefit of groups with problems.
Subjects covered will include -
@begin[itemize]
The EMAS compiler environment and standards.
==== ercc07/emas-2900/macros.txt ====
%LISTCOMMENTS
%MACROLISTON
%PHRASE(CLAB):'%IF' (SC)(RESTOFCOND)'%THEN' (NAME) '%ELSE' %C
(CLAB),(NAME);
%PHRASE(LPL): (NAME)(APP) '=' (LPL),%NULL;
%PHRASE(OPTC):(CONST),%NULL;
%PHRASE(TEXTSEP):(OPTC)'C'(OPTC)'S',(OPTC)'C',(OPTC)'S';
%PHRASE(RTEXT): (TEXTSEP)(CONST)(RTEXT),%NULL;
%%FRONTMACRO: 'WRITETEXT('A(CONST) B(RTEXT) ')' S(S)
%LOCAL X(TEXTSEP)
%LOCAL Y(OPTC)
%LOCAL Z(OPTC)
%LOCAL COUNT(CONST)
L0) :PRINT STRING($A$)
->END %IF B->%NULL
B->X.A.B
->L1 %IF X->Y.'C'
->L2 %IF X->Z.'S'
X->Y.'C'.Z.'S'
->Z1 %IF Y->%NULL
Y->COUNT
==== ercc07/emas-2900/sup28dsrce_print09s.txt ====
%RECORDFORMAT PARMF(%INTEGER DEST, SRCE, P1, P2, P3, P4, P5, P6)
%EXTRINSICLONGINTEGER KMON
%ROUTINESPEC PRHEX(%INTEGER H)
%ROUTINESPEC PRINTER(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC PON(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC GDC(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC OPMESS(%STRING (23) MESS)
%SYSTEMROUTINESPEC ITOE(%INTEGER A, L)
%IF MULTIOCP=YES %THEN %START
%EXTERNALROUTINESPEC SEMALOOP(%INTEGERNAME SEMA)
%ROUTINESPEC RESERVE LOG
%ROUTINESPEC RELEASE LOG
%ROUTINESPEC AWAIT LOG ROUTE
%FINISH
!------------------------------------------------------------------------
!*
!* Communications record format - extant from CHOPSUPE 22A onwards *
!*
%RECORDFORMAT COMF(%INTEGER OCPTYPE,SLIPL,SBLKS,SEPGS,NDISCS,DLVNADDR, %C
(%INTEGER GPCTABSIZE,GPCA %OR %INTEGER DCUTABSIZE,DCUA), %C
%INTEGER SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
==== ercc07/emas-2900/sup26hsrce_releasen.txt ====
SUPERVISOR RELEASE NOTICE VSN 26H
_________________________________
This Supervisor incorporates the following changes:-
1) Has a better FAST(32) that permits disc switching
between controllers and also dumps slaves on sytem
error for p4 processors.
2) Has code for advisory sequential connects.
to share the logfile.
3) Improved GPC(36) with proper semaphoring for duals.
4) Incorporates TAPE(69) with minor corrections.
5) Prevents SPOOLR&VOLUMS from abusing their privileged
access to time on the fly category changes
==== ercc07/emas-2900/wichtests_wt10.txt ====
'BEGIN'
'PROCEDURE' P( ST, A ); 'STRING' ST, A;
;
P( <;'COMMENT'> )VALID:( <;> );
'COMMENT' COULD FAIL TOO FEW PARAMETERS;
'END'
==== ercc07/emas-2900/wichtests_wt11.txt ====
'BEGIN'
'REAL' X )INVALID PARAMETER LIKE COMMENTS:(Y;
X := Y := 0.0
'END'
==== ercc07/emas-2900/wichtests_wt12.txt ====
'BEGIN'
'PROCEDURE' Q( ST ) INVALID PARAMETER LIKE COMMENTS ( A );
'STRING' ST; 'REAL' A; ;
Q( <AZ> ) ALSO IN THE CALL( 1.0 )
'END'
==== ercc07/emas-2900/arout33s.txt ====
!***********************************************************************
!* NOTE WELL *
!* AFTER COMPILING THIS FILE THE FOLLOWING ALIASES MUST BE ADDED *
!* S#PRINT1900=ICL9CEPRINT1900 & S#READ1900=ICL9CEREAD1900 *
!***********************************************************************
!* MODIFIED 28.4.80 TO ALLOW FOR EBCDIC STRINGS
!* MODIFIED 10.3.80 TO REMOVE SQ AND DA
!* MODIFIED 6.3.80 BY LCG WITH PDS'S READ1900 AND WRITETEXT ROUTINES
!* MODIFIED 03/05/79 MLIBERR INSERTED
!* MODIFIED 16/04/79 LENGTH CHANGED
!* MODIFIED 17/01/79 NEW VERSION OF WRITETEXT
!* MODIFIED 20/02/78 ERROR MESSAGE VALUES
!* MODIFIED 8/11/77 READ1900 IGNORES MULTIPLE SP & NL AFTER EXP CHAR
!* MODIFIED 13/01/77 SET MARGINS
!* MODIFIED 03/12/76 NEW VERSIONS OF READ1900,WRITETEXT
!******** MODIFIED 02:07:76 15.15 LCG (ALGLRTS,MATHFNS CONCATONATED
! ,COMPLEX ROUTINES
! & DUPLICATES FOR FORTRAN)
%SYSTEMROUTINESPEC SSERR(%INTEGER I)
%SYSTEMINTEGERFNSPEC IOCP(%INTEGER A,B)
%SYSTEMINTEGERMAPSPEC COMREG(%INTEGER N)
==== ercc07/emas-2900/wichtests_wt13.txt ====
'BEGIN'
LABELSCANNOTPRECEEDCOMMENTS: 'COMMENT' SHOULD FAIL;
'GOTO' LABELSCANNOTPRECEEDCOMMENTS
'END'
==== ercc07/emas-2900/wichtests_wt14.txt ====
'BEGIN'
'PROCEDURE' Q( ST )INVALID PARAMETER 'COMMENT' :( A );
'STRING' ST; 'REAL' A; ;
Q( <STR> ) AZ09:( 1.0 )
'END'
==== ercc07/emas-2900/wichtests_wt15.txt ====
'BEGIN'
'PROCEDURE' Q( ST1 )P:( ST2 ); 'COMMENT' ;
'STRING' ST1, ST2; ;
Q( <;'COMMENT' ) AZ: (>;> )INVALID:( <ST2> )
'END'
==== ercc07/emas-2900/sup26gsrce_makeopt.txt ====
PARM FREE,OPT,STACK,NOLIST
IMP CTOPT+SUP26GSRCE_SUP26GS,SUPZZ,,.OUT
IMP CTOPT+SUP26GSRCE_COM31S,COMZZ,,.OUT
IMP CTOPT+SUP26GSRCE_PRINT05S,PRINTZZ,,.OUT
IMP CTOPT+SUP26GSRCE_OPER33S,OPERZZ,,.OUT
IMP SUP26GSRCE_ENTER07S,ENTERZZ,,.OUT
IMP CTOPT+SUP26GSRCE_GPC34S,GPCZZ,,.OUT
IMP SUP26GSRCE_MINDIAGS,MINDIAGZZ,,.OUT
IMP CTOPT+SUP26GSRCE_COMMS46S,COMMSZZ,,.OUT
IMP CTOPT+SUP26GSRCE_FAST30S,FASTZZ,,.OUT
IMP CTOPT+SUP26GSRCE_TAPE69S,TAPEZZ,,.OUT
PARM MAP
LINK
SUPZZ
COMZZ
PRINTZZ
OPERZZ
ENTERZZ
GPCZZ
MINDIAGZZ
COMMSZZ
==== ercc07/emas-2900/wichtests_wt16.txt ====
'BEGIN'
'COMMENT' STRING TESTS;
'PROCEDURE' P(ST);
'STRING'
ST;
;
P( <*STRING 'STRING' <NESTED<<>>> 'BEGIN' 'END';> );
P( < ,
> )
'END'
==== ercc07/emas-2900/sup26csrce_samplectopt.txt ====
!
! THIS FILE CONTAINS THE CONST INTEGERS TO CONTROL COMPILE TIME OPTIONS
! IN EMAS2900
! IT IS INTENDED TO BE CONCATENATED ONTO THE FRONT OF SOURCEFILES
! BEFORE COMPILATION
%CONSTINTEGER YES=1
%CONSTINTEGER NO=0
%CONSTINTEGER SSERIES=NO; ! NO=PSERIES, YES=SSERIES
%CONSTINTEGER MULTIOCP=NO; ! YES TO INCLUDE SEMAPHORING
%CONSTINTEGER SFCFITTED=YES; ! NO FOR DISC ONLY SITES
%CONSTINTEGER CPFITTED=YES; ! CARD PUNCH FITTED
%CONSTINTEGER SNOOZING=NO; ! YES ALLOWS SUSPEND IN STORE
! ADVANTAGEOUS WITH LARGE STORES
%CONSTINTEGER MONLEVEL=7; ! 0=NO MONITORING
! 2**0 SET=VIDEO UPDATING
! 2**1 SET=KMONNING
! 2**2 SET=SUP TIMING MEASUREMENTS
! 2**3 SET=CAT TABLE TRANSITIONS
! 2**4 SET= STROBING
! 2**8 SET=EVENT HARVESTING
==== ercc07/emas-2900/wichtests_wt17.txt ====
'BEGIN'
'REAL'
REAL,
INTEGER,
BEGIN,
END;
REAL := 0.0
'END'
==== ercc07/emas-2900/sup28dsrce_fast42s.txt ====
!*
!* Communications record format - extant from CHOPSUPE 22A onwards *
!*
%RECORDFORMAT COMF(%INTEGER OCPTYPE,SLIPL,SBLKS,SEPGS,NDISCS,DLVNADDR, %C
(%INTEGER GPCTABSIZE,GPCA %OR %INTEGER DCUTABSIZE,DCUA), %C
%INTEGER SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,TOJDAY,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,SERVAAD, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0,%INTEGER ITINT,CONTYPEA, %C
(%INTEGER GPCCONFA %OR %INTEGER DCUCONFA), %C
%INTEGER FPCCONFA,SFCCONFA,BLKADDR,RATION, %C
(%INTEGER SMACS %OR %INTEGER SCUS), %C
%INTEGER TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,FEPS, %C
MAXCBT,PERFORMAD,SP1,SP2,SP3,SP4,SP5,SP6, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
HBIT,SLAVEOFF,INHSSR,SDR1,SDR2,SDR3, %C
SDR4,SESR,HOFFBIT,BLOCKZBIT,BLKSHIFT,BLKSIZE,END)
==== ercc07/emas-2900/wichtests_wt18.txt ====
'BEGIN'
'REAL'
A,
AB,
ABC,
ABCD,
ABCDE,
ABCDEF,
ABCDEFG,
ABCDEFGH,
ABCDEFGHI,
ABCDEFGHIJ,
ABCDEFGHIJK,
ABCDEFGHIJKL,
ABCDEFGHIJKLM,
ABCDEFGHIJKLMN,
ABCDEFGHIJKLNMO,
ABCDEFGHIJKLNMOP,
ABCDEFGHIJKLMNOPQ,
ABCDEFGHIJKLNMOPQR,
ABCDEFGHIJKLMNOPQRS,
==== ercc07/emas-2900/wichtests_wt19.txt ====
'BEGIN'
'ARRAY'
A(/1 : 3/),
B(/1 : 3, 1 : 3/);
'REAL' 'PROCEDURE' SUM(DIM, A);
'VALUE'
DIM;
'INTEGER'
DIM;
'ARRAY'
A;
SUM :=
'IF' DIM = 1 'THEN'
A(/1/)+ A(/2/)+ A(/3/)
'ELSE'
SUM2(A);
'REAL' 'PROCEDURE' SUM2(A);
'ARRAY'
A;
SUM2 := A(/1, 1/)+ A(/1, 2/)+ A(/1, 3/)+ A(/2, 1/)+ A(/2, 2/)+
A(/2, 3/)+ A(/3, 1/)+ A(/3, 2/)+ A(/3, 3/);
==== ercc07/emas-2900/algolps5.txt ====
43
D(NAME)
D(ICONST)
D(CONST)
D(ONAME)
D(COMTEXT))
D(S)
D(ENDTEXT)
D(TEXTTEXT)
D(NAMELIST)
D(HOLE)
D(MARK)
D(ONAMELIST)
D(UPSTCNT)
D(LETTERSTRING)
D(DOWN)
D(UP)
D(SCALARTYPE)
D(NOTENAME)
D(TYPE=A)
D(TYPE=B)
==== ercc07/emas-2900/wichtests_wt20.txt ====
'BEGIN'
'ARRAY'
A(/1 : 3/),
B(/1 : 3, 1 : 3/);
'REAL' 'PROCEDURE' SUM(DIM, A);
'VALUE'
DIM;
'INTEGER'
DIM;
'ARRAY'
A;
SUM :=
'IF' DIM = 1 'THEN'
A(/1/)+ A(/2/)+ A(/3/)
'ELSE'
SUM2(A);
'REAL' 'PROCEDURE' SUM2(A);
'ARRAY'
A;
SUM2 := A(/1, 1/)+ A(/1, 2/)+ A(/1, 3/)+ A(/2, 1/)+ A(/2, 2/)+
A(/2, 3/)+ A(/3, 1/)+ A(/3, 2/)+ A(/3, 3/);
==== ercc07/emas-2900/wichtests_wt21.txt ====
'BEGIN'
'ARRAY'
A(/1 : 3/),
B(/1 : 3, 1 : 3/);
'REAL' 'PROCEDURE' SUM(DIM, A);
'VALUE'
DIM;
'INTEGER'
DIM;
'ARRAY'
A;
SUM :=
'IF' DIM = 1 'THEN'
(A(/1/)+ A(/2/)+ A(/3/))
'ELSE'
(A(/1, 1/)+ A(/1, 2/)+ A(/1, 3/)+ A(/2, 1/)+ A(/2, 2/)
+ A(/2, 3/)+ A(/3, 1/)+ A(/3, 2/)+ A(/3, 3/));
'INTEGER'
I,
J;
'FOR' I := 1,
==== ercc07/emas-2900/ibmconvert_sibmdriver.txt ====
%RECORDFORMAT RR(%INTEGER CONAD,FTYPE,DSTART,DEND)
%SYSTEMROUTINESPEC DISCONNECT(%STRING(31)FILE,%INTEGERNAME FLAG)
%SYSTEMROUTINESPEC DESTROY(%STRING(31)FILE,%INTEGERNAME FLAG)
%SYSTEMROUTINESPEC SETWORK(%INTEGERNAME AD,LEN)
%SYSTEMROUTINESPEC CHANGEFILESIZE(%STRING(31)FILE,%INTEGER SIZE,%INTEGERNAME FLAG)
%SYSTEMROUTINESPEC NEWGEN(%STRING(31) FILE1,FILE2,%INTEGERNAME FLAG)
%EXTERNALROUTINESPEC DEFINE(%STRING(255)PARM)
%SYSTEMROUTINESPEC PSYSMES(%INTEGER ROOT,FLAG)
%SYSTEMROUTINESPEC SETPAR(%STRING(255)PARM)
%SYSTEMSTRINGFNSPEC SPAR(%INTEGER N)
%SYSTEMROUTINESPEC CONNECT(%STRING(31)FILE,%INTEGER MODE,HOLE,PROT,
%RECORD(RR)%NAME FINFO,%INTEGERNAME FLAG)
%SYSTEMROUTINESPEC OUTFILE(%STRING(31)FILE,%INTEGER SIZE,HOLE,PROT,
%INTEGERNAME CONAD,FLAG)
%SYSTEMROUTINESPEC MOVE(%INTEGER LNTH,FROMAD,TOAD)
%EXTERNALROUTINESPEC CONVTOIBM(%INTEGER ICONAD,OCONAD, %INTEGERNAME FLAG)
!
!
%EXTERNALROUTINE TOIBMOBJ(%STRING(255) PARM)
%STRING(31) INFILE,OUTF,LIST,WOUTF
%RECORD(RR) FINFO
==== ercc07/emas-2900/wichtests_wt22.txt ====
'BEGIN'
'PROCEDURE' RECURSIVE(LEVEL, L);
'VALUE'
LEVEL;
'INTEGER'
LEVEL;
'LABEL'
L;
'BEGIN'
'IF' LEVEL # 0 'THEN'
RECURSIVE(LEVEL - 1, EXIT)
'ELSE'
'GOTO' L;
EXIT :;
OUTREAL(99,LEVEL)
'END';
RECURSIVE(10, EXIT);
EXIT :;
'END'
==== ercc07/emas-2900/algolps9.txt ====
45
D(NAME)
D(ICONST)
D(CONST)
D(ONAME)
D(COMTEXT))
D(S)
D(ENDTEXT)
D(TEXTTEXT)
D(NAMELIST)
D(HOLE)
D(MARK)
D(ONAMELIST)
D(NOTELINE)
D(LETTERSTRING)
D(DOWN)
D(UP)
D(SCALARTYPE)
D(NOTENAME)
D(TYPE=A)
D(TYPE=B)
==== ercc07/emas-2900/arout34s.txt ====
!***********************************************************************
!* NOTE WELL *
!* AFTER COMPILING THIS FILE THE FOLLOWING ALIASES MUST BE ADDED *
!* S#PRINT1900=ICL9CEPRINT1900 & S#READ1900=ICL9CEREAD1900 *
!***********************************************************************
!* MODIFIED 28.4.80 TO ALLOW FOR EBCDIC STRINGS
!* MODIFIED 10.3.80 TO REMOVE SQ AND DA
!* MODIFIED 6.3.80 BY LCG WITH PDS'S READ1900 AND WRITETEXT ROUTINES
!* MODIFIED 03/05/79 MLIBERR INSERTED
!* MODIFIED 16/04/79 LENGTH CHANGED
!* MODIFIED 17/01/79 NEW VERSION OF WRITETEXT
!* MODIFIED 20/02/78 ERROR MESSAGE VALUES
!* MODIFIED 8/11/77 READ1900 IGNORES MULTIPLE SP & NL AFTER EXP CHAR
!* MODIFIED 13/01/77 SET MARGINS
!* MODIFIED 03/12/76 NEW VERSIONS OF READ1900,WRITETEXT
!******** MODIFIED 02:07:76 15.15 LCG (ALGLRTS,MATHFNS CONCATONATED
! ,COMPLEX ROUTINES
! & DUPLICATES FOR FORTRAN)
%SYSTEMROUTINESPEC SSERR(%INTEGER I)
%SYSTEMINTEGERFNSPEC IOCP(%INTEGER A,B)
%SYSTEMINTEGERMAPSPEC COMREG(%INTEGER N)
==== ercc07/emas-2900/wichtests_wt23.txt ====
'BEGIN'
'INTEGER'
I;
'BOOLEAN'
B;
'PROCEDURE' LABELBYVALUE(L);
'VALUE'
L;
'LABEL'
L;
;
'PROCEDURE' LABELBYNAME(L);
'LABEL'
L;
'BEGIN'
I := 1;
'IF' B 'THEN'
'GOTO' L
'END';
'SWITCH' S :=
L1,
==== ercc07/emas-2900/disc17s.txt ====
%OWNLONGINTEGER VSN=X'4449534320563137'; ! M'DISC V17'
! DRIVING FPC2S WRITTEN BY PDS OCT 76
!
%RECORDFORMAT PARMF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6)
%RECORDFORMAT DDTFORM(%INTEGER SER,PTS,PROPADDR,STICK, %C
CCA,RQA,LBA,ALA,STATE,IW1,IW2,SENSE1,SENSE2,SENSE3,SENSE4,%C
REPSNO,BASE,ID,DLVN,MNEMONIC,%STRING(6)LAB,%BYTEINTEGER MECH)
!
%RECORDFORMAT PROPFORM(%INTEGER TRACKS,CYLS,PPERTRK,BLKSIZE,TOTPAGES,%C
RQBLKSIZE,LBLKSIZE,ALISTSIZE,KEYLEN,SECTINDX)
!
%RECORDFORMAT CCAFORM(%INTEGER MARK,PAW,PIW1,PIW2,CSAW1,CSAW2,%C
CRESP1,CRESP2,%LONGLONGREALARRAY STRMS(0:15))
!
%RECORDFORMAT RQBFORM(%INTEGER LSEGPROP,LSEGADDR,LBPROP,LBADDR,ALPROP,%C
ALADDR,W6,W7,W8)
!
%RECORDFORMAT LABFORM(%BYTEINTEGERARRAY VOL(0:5),%BYTEINTEGER S1,%C
S2,S3,S4,ACCESS,%BYTEINTEGERARRAY RES(1:20),%BYTEINTEGER C1,C2,%C
AC1,AC2,TPC1,TPC2,BF1,BF2,%BYTEINTEGERARRAY POINTER(0:3), %C
==== ercc07/emas-2900/tsup01s.txt ====
%INCLUDE "ERCC07.PERQ_OPCODES"
%INCLUDE "ERCC07.TRIPCNSTS"
%INCLUDE "ERCC07.PERQ_FORMAT3S"
%OWNINTEGER CABUF,GLACABUF
%OWNINTEGERNAME CA,GLACA,PPCURR,GLACURR
%OWNBYTEINTEGERARRAYNAME CODE,GLABUF
%EXTRINSICRECORD(CODEPF) CODEP
%EXTRINSICRECORD(WORKAF)WORKA
%EXTRINSICRECORD(PARMF) PARM
%SYSTEMINTEGERMAPSPEC COMREG(%INTEGER N)
%DYNAMICROUTINESPEC QCODE(%INTEGER A,B,C,MODE)
%DYNAMICROUTINESPEC QPUT(%INTEGER A,B,C,D)
%ROUTINESPEC FAULT(%INTEGER I,J,K)
%ROUTINESPEC CNOP(%INTEGER I,J)
%ROUTINESPEC POP(%INTEGERNAME A,B,C,D)
%ROUTINESPEC PRHEX(%INTEGER VALUE,PLACES)
%CONSTINTEGER CODEBNDRY=X'1FF'; ! INSTRUCTIONS MUST NOT
! CROSS THIS IN ACCENT MODE
%CONSTINTEGER YES=1,NO=0
%CONSTINTEGER ON PERQ=NO
%CONSTBYTEINTEGERARRAY BYTES(0:7)=0(3),1,2,4,8,16;
==== ercc07/emas-2900/wichtests_wt24.txt ====
'BEGIN'
'INTEGER' 'ARRAY'
A(/1 : 9/);
'INTEGER'
I,
S;
'PROCEDURE' DUMMY(A);
'VALUE'
A;
'ARRAY'
A;
SUM(A);
'PROCEDURE' SUM(A);
'ARRAY'
A;
'FOR' I := 1 'STEP' 1 'UNTIL' 9 'DO'
'BEGIN'
S := S + A(/I/);
A(/I/):= 0
'END';
S := 0;
==== ercc07/emas-2900/sup26csrce_mindiags.txt ====
%EXTERNALSTRINGFNSPEC STRHEX(%INTEGER I)
%SYSTEMROUTINE NDIAG(%INTEGER PCOUNT, LNB, FAULT, INF)
!***********************************************************************
!*_______'MASTER DIAGNOSTIC ROUTINE'. DISCOVERS THE LANGUAGE OF THE *
!*_______FAILED ROUTINE FROM WORD 4 OF THE GLA AND CALLS APPROPRIATE *
!*_______DIAGNOSTIC ROUTINE. THIS IS REPEATED TILL ALL DIAGNOSTICS *
!*_______GIVEN. *
!*_______PCOUNT = PCOUNTER AT FAILURE *
!*_______LNB = LOCAL NAME BASE AT FAILURE *
!*_______FAULT = FAILURE (0=%MONITOR REQUESTED) *
!*_______INF =ANY FURTHER INFORMATION *
!***********************************************************************
PRINTSTRING("
MINIMUM NDIAGS ENTERED
FAULT NO ="); WRITE(FAULT,2)
PRINTSTRING("
PC=X".STRHEX(PCOUNT)."
LNB=X".STRHEX(LNB)."
")
%END
%ENDOFFILE
==== ercc07/emas-2900/sup28asrce_com35s.txt ====
!
!* Communications record format - extant from CHOPSUPE 22A onwards *
!*
%RECORDFORMAT COMF(%INTEGER OCPTYPE,SLIPL,SBLKS,SEPGS,NDISCS,DLVNADDR, %C
(%INTEGER GPCTABSIZE,GPCA %OR %INTEGER DCUTABSIZE,DCUA), %C
%INTEGER SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,TOJDAY,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,SERVAAD, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0,%INTEGER ITINT,CONTYPEA, %C
(%INTEGER GPCCONFA %OR %INTEGER DCUCONFA), %C
%INTEGER FPCCONFA,SFCCONFA,BLKADDR,RATION, %C
(%INTEGER SMACS %OR %INTEGER SCUS), %C
%INTEGER TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,FEPS, %C
MAXCBT,PERFORMAD,SP1,SP2,SP3,SP4,SP5,SP6, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
HBIT,SLAVEOFF,INHSSR,SDR1,SDR2,SDR3, %C
SDR4,SESR,HOFFBIT,BLOCKZBIT,BLKSHIFT,BLKSIZE,END)
==== ercc07/emas-2900/wichtests_wt25.txt ====
'BEGIN'
'REAL'
X,
Y;
'INTEGER'
I;
'FOR' X := &6,
&+6,
&-6,
.6,
6,
6.6,
.6&6,
.6&+6,
.6&-6,
6&6,
6&+6,
6&-6,
6.6&6,
6.6&+6,
6.6&-6 'DO'
==== ercc07/emas-2900/wichtests_pete10.txt ====
'COMMENT' CHECK LINE NUMBER OF SYNTAX FAULT;
'BEGIN' 'REAL' X,Y;
X:=0;
'BEGIN'
L1:;
X:=X+1;
'IF' Y<20.0 'GOTO' L1;
'END';
'END';
==== ercc07/emas-2900/wichtests_wt26.txt ====
'BEGIN'
'PROCEDURE' P(L);
'INTEGER'
L;
L : 'BEGIN'
'REAL'
A;
'GOTO' L;
L :;
'GOTO' LL
'END';
P(1);
LL :;
'END'
==== ercc07/emas-2900/wichtests_wt27.txt ====
'BEGIN'
'INTEGER'
S;
'PROCEDURE' P(F, G);
'PROCEDURE'
F,
G;
'BEGIN'
'INTEGER'
X;
'PROCEDURE' R;
'BEGIN'
OUTREAL(99, S);
OUTREAL(99, X)
'END';
S := S + 1;
X := S;
'IF' S = 1 'THEN'
P(F, R)
'ELSE'
F(G, R)
==== ercc07/emas-2900/wichtests_wt28.txt ====
'BEGIN'
'INTEGER'
N1,
N2;
'PROCEDURE' DUMMY;
;
'PROCEDURE' P(X, L);
'VALUE'
X;
'INTEGER'
X;
'PROCEDURE'
L;
'BEGIN'
'PROCEDURE' GOTOL1;
'GOTO' L1;
'IF' X = N1 'THEN'
P(X - 1, GOTOL1)
'ELSE'
'IF' X = N2 'THEN'
L
==== ercc07/emas-2900/nrsrce_sdprint02s.txt ====
%EXTERNALINTEGERFNSPEC HANDKEYS
%EXTERNALROUTINESPEC WAIT(%INTEGER MSECS)
%EXTERNALROUTINESPEC SUP29
%ROUTINESPEC PRHEX(%INTEGER H)
%ROUTINESPEC PRINTER(%RECORDNAME P)
%EXTERNALROUTINESPEC DCU(%RECORDNAME P)
%EXTERNALROUTINESPEC PON(%RECORDNAME P)
%EXTERNALROUTINESPEC SLAVESONOFF(%INTEGER J)
%EXTERNALROUTINESPEC OPMESS(%STRING (23) MESS)
%RECORDFORMAT PARMF(%INTEGER DEST, SRCE, P1, P2, P3, P4, P5, %C
P6)
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 18D ONWARDS *
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 18D ONWARDS *
! Alterations from above-mentioned record format, for the S-series, are
! as follows:
! GPCTABSIZE -> DCUTABSIZE
! GPCA -> DCUA
! SMACS -> SCUS
! GPCCONFA -> DCUCONFA
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
==== ercc07/emas-2900/wichtests_wt29.txt ====
'BEGIN'
'INTEGER'
S;
'PROCEDURE' P(F, G);
'PROCEDURE'
F,
G;'COMMENT'(X,Y):'PROCEDURE' X,Y;
'BEGIN'
'INTEGER'
X;
'PROCEDURE' R(F, G);
'PROCEDURE' F, G;'COMMENT'(X,Y):'PROCEDURE' X,Y;
'BEGIN'
OUTREAL(99, S);
OUTREAL(99, X)
'END';
S := S + 1;
X := S;
'IF' S = 1 'THEN'
P(F, R)
'ELSE'
==== ercc07/emas-2900/sup27isrce_tape73s.txt ====
!**************************************************
!* *
!* TAPE HANDLER FOR 2900 *
!* *
!**************************************************
!!
!***********************************************************************
!* VERSION 73:
!* PRIVATE CHAINS REDONE - P_P3=VADD RCB, P5,P6=STB FOR RCB AREA.
!* ALSO ALL ATTENTIONS FOR PRIVATE CHAINS GO STRAIGHT TO USER
!* WITHOUT ANY ACTION HERE.
!* VERSION 72
!* 05-MAY-81:
!* HAIRY PON TO RESET 'RETRY PREAMBLE' WHICH ALLOWS/INHIBITS
!* READ RETRY WHEN NO PREAMBLE DETECTED.
!* MAINLY INTENDED FOR READING DUMP TAPES WITH SUCH.
!* 04-MAY-81:
!* FIX IN LOAD AND LOAD MESSAGE FOR FAULTY DSN.
!* REWINDS AND COMES UP AS LOADED NO LABEL.
!* 01-MAY-81:
==== ercc07/emas-2900/sup27bsrce_releasen.txt ====
Supervisor 27B Relase Notice
This Supervisor has the following changes
1) Uses store list constructed by CHOPSUPE(and thus requires a
version of 21 Series CHOPSUPES to load it)
2) Changes to SCHEDULE to use individual timeouts
on snoozing processes. This involves changes to
process list formay also.
3) Additions to allow dynamic reconfiguration
of dual processor systems. This involves changes
to Supervisor FAST & GPC. These changes are omitted
if the Options file has MULTIOCP=NO.
P. Stephens 03/06/81
==== ercc07/emas-2900/wichtests_wt30.txt ====
'BEGIN'
'INTEGER'
N1,
N2;
'PROCEDURE' P(X, L);
'VALUE'
X;
'INTEGER'
X;
'LABEL'
L;
'BEGIN'
'IF' X = N1 'THEN'
P(X - 1, L1)
'ELSE' 'IF' X = N2 'THEN'
'GOTO' L
'ELSE'
P(X - 1, L);
L1 :;
OUTREAL(99, X)
'END' P;
==== ercc07/emas-2900/wichtests_wt31.txt ====
'BEGIN'
'INTEGER'
I,
J;
I := J := 0;
I :=
'IF' I = 0 'THEN'
'IF' J = 0 'THEN'
1
'ELSE'
2
'ELSE'
3;
'IF' I = 1 'THEN'
'IF' J = 0 'THEN'
J := 2
'ELSE'
J := 3
'ELSE'
J := 4;
OUTREAL(99, I);
==== ercc07/emas-2900/wichtests_wt32.txt ====
'BEGIN'
'INTEGER'
I;
'REAL'
X;
'PROCEDURE' ASS(X, I);
'REAL'
X;
'INTEGER'
I;
'IF' I < 0 'THEN'
X := I + 3
'ELSE'
I := 2.0 * X;
ASS(X, - 1);
I := 2;
ASS(X, I);
ASS(I, I);
ASS(I, X);
OUTREAL(99, I);
OUTREAL(99, X)
==== ercc07/emas-2900/sup27isrce_comms52s.txt ====
! R.D.EAGER CONTAINS CODE FOR OUTPUT ACCOUNTS IN COMM CONTROL,
! LP ADAPTOR AND CP ADAPTOR
! VERSION OF 13/06/80
! DEC 79: INCLUDE AN OPER ADAPTOR
! HAVE ONLY ONE SERVICE NUMBER, X'37'
! OTHER POSSIBLE CHANGES
! MAKE INITIALISATION CALL OF CC INITIALISE ADAPTORS AS WELL
! MAKE IT POSSIBLE TO DEALLOCATE/ALLOCATE ALL DEVICES
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20A ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,WASKLOKCORRECT,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,DQADDR, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0, %C
%INTEGER ITINT,CONTYPEA,GPCCONFA,FPCCONFA,SFCCONFA, %C
BLKADDR,DPTADDR,SMACS,TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,SP0,SP1, %C
==== ercc07/emas-2900/wichtests_wt33.txt ====
'BEGIN'
'PROCEDURE' A0;
'BEGIN'
'PROCEDURE' A1;
'BEGIN'
'PROCEDURE' A2;
'BEGIN'
'PROCEDURE' A3;
'BEGIN'
'PROCEDURE' A4;
'BEGIN'
'PROCEDURE' A5;
'BEGIN'
'END';
;
'END';
;'END';
;'END';
;'END';
;'END';
;'END'
==== ercc07/emas-2900/wichtests_wt34.txt ====
'BEGIN' 'REAL' A;
'BEGIN' 'REAL' A;
'BEGIN' 'REAL' A;
'BEGIN' 'REAL' A;
'BEGIN' 'REAL' A;
'BEGIN' 'REAL' A;
'BEGIN' 'REAL' A;
'BEGIN' 'REAL' A;
'BEGIN' 'REAL' A;
'BEGIN' 'REAL' A;
'BEGIN' 'REAL' A;
'BEGIN' 'REAL' A;
'BEGIN' 'REAL' A;
'BEGIN' 'REAL' A;
'BEGIN' 'REAL' A;
'END'
'END'
'END'
'END'
'END'
'END'
==== ercc07/emas-2900/sup27isrce_makeopt.txt ====
PARM FREE,OPT,STACK,NOLIST
IMP80 CTOPT+SUP27ISRCE_SUP27IS,SUPZZ,,.OUT
IMP80 CTOPT+SUP27ISRCE_COM34S,COMZZ,,.OUT
IMP80 CTOPT+SUP27ISRCE_PRINT07S,PRINTZZ,,.OUT
IMP80 CTOPT+SUP27ISRCE_OPER35S,OPERZZ,,.OUT
IMP80 CTOPT+SUP27ISRCE_ENTER13S,ENTERZZ,,.OUT
IMP80 CTOPT+SUP27ISRCE_GPC39S,GPCZZ,,.OUT
IMP80 SUP27ISRCE_MINDIAGS,MINDIAGZZ,,.OUT
IMP80 CTOPT+SUP27ISRCE_COMMS52S,COMMSZZ,,.OUT
IMP80 CTOPT+SUP27ISRCE_FAST40S,FASTZZ,,.OUT
IMP80 CTOPT+SUP27ISRCE_TAPE73S,TAPEZZ,,.OUT
PARM MAP
LINK
SUPZZ
COMZZ
PRINTZZ
OPERZZ
ENTERZZ
GPCZZ
MINDIAGZZ
COMMSZZ
==== ercc07/emas-2900/sup26gsrce_makechkd.txt ====
PARM FREE,STACK,NOCHECK,NOLIST
IMP CTOPT+SUP26GSRCE_SUP26GS,SUPZZ,,.OUT
IMP CTOPT+SUP26GSRCE_COM31S,COMZZ,,.OUT
IMP CTOPT+SUP26GSRCE_PRINT05S,PRINTZZ,,.OUT
IMP CTOPT+SUP26GSRCE_OPER33S,OPERZZ,,.OUT
IMP SUP26GSRCE_ENTER07S,ENTERZZ,,.OUT
IMP CTOPT+SUP26GSRCE_GPC34S,GPCZZ,,.OUT
PARM FREE,OPT,STACK,NOLIST
IMP SUP26GSRCE_NDIAG07S,NDIAGZZ,,.OUT
IMP CTOPT+SUP26GSRCE_COMMS46S,COMMSZZ,,.OUT
IMP CTOPT+SUP26GSRCE_FAST30S,FASTZZ,,.OUT
IMP CTOPT+SUP26GSRCE_TAPE69S,TAPEZZ,,.OUT
PARM MAP
LINK
SUPZZ
COMZZ
PRINTZZ
OPERZZ
ENTERZZ
GPCZZ
NDIAGZZ
==== ercc07/emas-2900/wichtests_wt35.txt ====
'BEGIN'
'REAL'
A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12,
A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, A23, A24,
A25, A26, A27, A28, A29, A30, A31, A32, A33, A34, A35, A36,
A37, A38, A39, A40, A41, A42, A43, A44, A45, A46, A47,
A48, A49, A50, A51, A52, A53, A54, A55, A56, A57, A58,
A59, A60, A61, A62, A63, A64, A65, A66, A67, A68, A69,
A70, A71, A72, A73, A74, A75, A76, A77, A78, A79, A80,
A81, A82, A83, A84, A85, A86, A87, A88, A89, A90, A91,
A92, A93, A94, A95, A96, A97, A98, A99, A100, A101,
A102, A103, A104, A105, A106, A107, A108, A109, A110,
A111, A112, A113, A114, A115, A116, A117, A118, A119,
A120, A121, A122, A123, A124, A125, A126, A127, A128,
A129, A130, A131, A132, A133, A134, A135, A136, A137,
A138, A139, A140, A141, A142, A143, A144, A145, A146,
A147, A148, A149, A150, A151, A152, A153, A154, A155,
A156, A157, A158, A159, A160, A161, A162, A163, A164,
A165, A166, A167, A168, A169, A170, A171, A172, A173,
A174, A175, A176, A177, A178, A179, A180, A181, A182,
A183, A184, A185, A186, A187, A188, A189, A190, A191,
==== ercc07/emas-2900/wichtests_wt36.txt ====
'BEGIN'
'ARRAY'
A0, A1, A2, A3, A4, A5, A6, A7, A8, A9,
A10, A11, A12, A13, A14, A15, A16, A17, A18, A19,
A20, A21, A22, A23, A24, A25, A26, A27, A28, A29,
A30, A31, A32, A33, A34, A35, A36, A37, A38, A39,
A40, A41, A42, A43, A44, A45, A46, A47, A48, A49,
A50, A51, A52, A53, A54, A55, A56, A57, A58, A59(/1 : 10/);
A0(/1/):= 1.0; A1(/1/):= 1.0; A2(/1/):= 1.0; A3(/1/):= 1.0;
A4(/1/):= 1.0; A5(/1/):= 1.0; A6(/1/):= 1.0; A7(/1/):= 1.0;
A8(/1/):= 1.0; A9(/1/):= 1.0; A10(/1/):= 1.0; A11(/1/):= 1.0;
A12(/1/):= 1.0; A13(/1/):= 1.0; A14(/1/):= 1.0; A15(/1/):= 1.0;
A16(/1/):= 1.0; A17(/1/):= 1.0; A18(/1/):= 1.0; A19(/1/):= 1.0;
A20(/1/):= 1.0; A21(/1/):= 1.0; A22(/1/):= 1.0; A23(/1/):= 1.0;
A24(/1/):= 1.0; A25(/1/):= 1.0; A26(/1/):= 1.0; A27(/1/):= 1.0;
A28(/1/):= 1.0; A29(/1/):= 1.0; A30(/1/):= 1.0; A31(/1/):= 1.0;
A32(/1/):= 1.0; A33(/1/):= 1.0; A34(/1/):= 1.0; A35(/1/):= 1.0;
A36(/1/):= 1.0; A37(/1/):= 1.0; A38(/1/):= 1.0; A39(/1/):= 1.0;
A40(/1/):= 1.0; A41(/1/):= 1.0; A42(/1/):= 1.0; A43(/1/):= 1.0;
A44(/1/):= 1.0; A45(/1/):= 1.0; A46(/1/):= 1.0; A47(/1/):= 1.0;
A48(/1/):= 1.0; A49(/1/):= 1.0; A50(/1/):= 1.0; A51(/1/):= 1.0;
==== ercc07/emas-2900/impalgs_rphexs.txt ====
%CONSTBYTEINTEGERARRAY CHEX(0:15)=%C
'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F';
%EXTERNALROUTINE RPHEX(%LONGREAL X)
%INTEGER I,J
%ROUTINESPEC HEX(%INTEGER VAL)
I=INTEGER(ADDR(X))
J=INTEGER(ADDR(X)+4)
HEX(I); HEX(J)
%ROUTINE HEX(%INTEGER VAL)
%INTEGER I
SPACE
%CYCLE I=28,-4,0
PRINT SYMBOL(CHEX(VAL>>I&15))
%REPEAT
%END
%END
%ENDOFFILE
==== ercc07/emas-2900/wichtests_wt37.txt ====
'BEGIN'
'INTEGER'
A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11;
'INTEGER'
SUM;
SUM := 0;
'FOR' A0 := 1,2 'DO' 'BEGIN' SUM := SUM + 1;
'FOR' A1 := 1,2 'DO' 'BEGIN' SUM := SUM + 1;
'FOR' A2 := 1,2 'DO' 'BEGIN' SUM := SUM + 1;
'FOR' A3 := 1,2 'DO' 'BEGIN' SUM := SUM + 1;
'FOR' A4 := 1,2 'DO' 'BEGIN' SUM := SUM + 1;
'FOR' A5 := 1,2 'DO' 'BEGIN' SUM := SUM + 1;
'FOR' A6 := 1,2 'DO' 'BEGIN' SUM := SUM + 1;
'FOR' A7 := 1,2 'DO' 'BEGIN' SUM := SUM + 1;
'FOR' A8 := 1,2 'DO' 'BEGIN' SUM := SUM + 1;
'FOR' A9 := 1,2 'DO' 'BEGIN' SUM := SUM + 1;
'FOR' A10 := 1,2 'DO' 'BEGIN' SUM := SUM + 1;
'FOR' A11 := 1,2 'DO' 'BEGIN' SUM := SUM + 1;
'END'
'END'
'END'
==== ercc07/emas-2900/wichtests_wt38.txt ====
'BEGIN'
'INTEGER'
I,
J,
SUM;
I := 1;
J := 2;
SUM := 0;
'IF' I > J 'THEN''BEGIN'
'END' 'ELSE' 'BEGIN' SUM := SUM + 1;
'IF' I > J 'THEN''BEGIN'
'END' 'ELSE' 'BEGIN' SUM := SUM + 1;
'IF' I > J 'THEN''BEGIN'
'END' 'ELSE' 'BEGIN' SUM := SUM + 1;
'IF' I > J 'THEN''BEGIN'
'END' 'ELSE' 'BEGIN' SUM := SUM + 1;
'IF' I > J 'THEN''BEGIN'
'END' 'ELSE' 'BEGIN' SUM := SUM + 1;
'IF' I > J 'THEN''BEGIN'
'END' 'ELSE' 'BEGIN' SUM := SUM + 1;
'IF' I > J 'THEN''BEGIN'
==== ercc07/emas-2900/wichtests_wt39.txt ====
'BEGIN'
'INTEGER'
I,
J,
SUM;
I := 1;
J := 2;
SUM := 1 + ('IF' I > J 'THEN'0 'ELSE' ('IF' I > J 'THEN'0 'ELSE'
('IF' I > J 'THEN'0 'ELSE' ('IF' I > J 'THEN'0 'ELSE' ('IF' I
> J 'THEN'0 'ELSE' ('IF' I > J 'THEN'0 'ELSE' ('IF' I > J
'THEN'0 'ELSE' ('IF' I > J 'THEN'0 'ELSE' ('IF' I > J 'THEN'
0 'ELSE' 1)))))))));
OUTREAL(99, SUM);
'END'
==== ercc07/emas-2900/sup26isrce_print05s.txt ====
%EXTRINSICLONGINTEGER KMON
%ROUTINESPEC PRHEX(%INTEGER H)
%ROUTINESPEC PRINTER(%RECORDNAME P)
%EXTERNALROUTINESPEC PON(%RECORDNAME P)
%EXTERNALROUTINESPEC OPMESS(%STRING (23) MESS)
%SYSTEMROUTINESPEC ITOE(%INTEGER A, L)
%IF MULTIOCP=YES %THEN %START
%EXTERNALROUTINESPEC SEMALOOP(%INTEGERNAME SEMA)
%ROUTINESPEC RESERVE LOG
%ROUTINESPEC RELEASE LOG
%ROUTINESPEC AWAIT LOG ROUTE
%FINISH
%RECORDFORMAT PARMF(%INTEGER DEST, SRCE, P1, P2, P3, P4, P5, %C
P6)
!------------------------------------------------------------------------
%RECORDFORMAT ENTFORM(%INTEGER SER, PTSM, PROPADDR, %C
TICKS SINCE, CAA, GRCB AD, LBA, ALA, STATE, RESP0, %C
RESP1, SENSE1, SENSE2, SENSE3, SENSE4, REPSNO, BASE, %C
ID, DLVN, MNEMONIC, ENTSIZE, PAW, USAW0, URCB AD, %C
SENSDAT AD, LOGMASK, TRTAB AD, UA SIZE, UA AD, %C
==== ercc07/emas-2900/ibmsup_activems.txt ====
%routine ACTIVE MEM(%record (PARMF) %name P)
!***********************************************************************
!* CONTROLS THE ALLOCATION OF ACTIVE MEMORY *
!* ACTIVITY 0 INITIALISE *
!* ACTIVITY 1 GET AMT FOR SPECIFIED DISC ADDRESSS *
!* ACTIVITY 2 RETURN AMT FOR DITTO *
!* ACTIVITY 3 COMPLETE RETURN OF AMT AFTER TRANSFER COMPLETED *
!* ACTIVITY 4 ORGANISE TIMEOUT OF ACTIVE MEM *
!* ACTIVITY 5 CHECK IF DISC ADDRESS IS STILL ACTIVE *
!***********************************************************************
%routinespec COLLECT DD GARBAGE
%routinespec APPENDAMTA(%integer NEWSPACE,REALAD)
%routinespec APPENDAMTDD(%integer NEWSPACE,REALAD)
%routinespec DDASLALLOC(%integer FROM,TO)
%routinespec DEALLOCAMT
%routinespec DEALLOCDD(%integer DDX,LEN)
%integer HASH,DDX,GARB,AMTX,SRCE,ID,DA,LEN,MASK,REALAD,FREEMAX,I,J,K,CN
%integer DACT,LIM
%if MONLEVEL&12=12 %thenstart
%integer IT,IC
%finish
==== ercc07/emas-2900/wichtests_wt40.txt ====
'BEGIN'
'SWITCH' SS :=
A0, A1, A2, A3, A4, A5, A6, A7, A8, A9,
A10, A11, A12, A13, A14, A15, A16, A17, A18, A19,
A20, A21, A22, A23, A24, A25, A26, A27, A28, A29,
A30, A31, A32, A33, A34, A35, A36, A37, A38, A39,
A40, A41, A42, A43, A44, A45, A46, A47, A48, A49,
A50, A51, A52, A53, A54, A55, A56, A57, A58, A59,
A60, A61, A62, A63, A64, A65, A66, A67, A68, A69,
A70, A71, A72, A73, A74, A75, A76, A77, A78, A79,
A80, A81, A82, A83, A84, A85, A86, A87, A88, A89,
A90, A91, A92, A93, A94, A95, A96, A97, A98, A99,
A100, A101, A102, A103, A104, A105, A106, A107, A108, A109,
A110, A111, A112, A113, A114, A115, A116, A117, A118, A119,
A120, A121, A122, A123, A124, A125, A126, A127, A128, A129,
A130, A131, A132, A133, A134, A135, A136, A137, A138, A139,
A140, A141, A142, A143, A144, A145, A146, A147, A148, A149,
A150, A151, A152, A153, A154, A155, A156, A157, A158, A159,
A160, A161, A162, A163, A164, A165, A166, A167, A168, A169,
A170, A171, A172, A173, A174, A175, A176, A177, A178, A179,
A180, A181, A182, A183, A184, A185, A186, A187, A188, A189,
==== ercc07/emas-2900/wichtests_wt41.txt ====
'BEGIN'
'INTEGER' 'PROCEDURE' P(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9,
A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20,
A21, A22, A23, A24, A25, A26, A27, A28, A29, A30, A31,
A32, A33, A34, A35, A36, A37, A38, A39, A40, A41, A42,
A43, A44, A45, A46, A47, A48, A49, A50, A51, A52, A53,
A54, A55, A56, A57, A58, A59);
'VALUE'
A0, A1, A2, A3, A4, A5, A6, A7, A8, A9,
A10, A11, A12, A13, A14, A15, A16, A17, A18, A19,
A20, A21, A22, A23, A24, A25, A26, A27, A28, A29,
A30, A31, A32, A33, A34, A35, A36, A37, A38, A39,
A40, A41, A42, A43, A44, A45, A46, A47, A48, A49,
A50, A51, A52, A53, A54, A55, A56, A57, A58, A59;
'INTEGER'
A0, A1, A2, A3, A4, A5, A6, A7, A8, A9,
A10, A11, A12, A13, A14, A15, A16, A17, A18, A19,
A20, A21, A22, A23, A24, A25, A26, A27, A28, A29,
A30, A31, A32, A33, A34, A35, A36, A37, A38, A39,
A40, A41, A42, A43, A44, A45, A46, A47, A48, A49,
A50, A51, A52, A53, A54, A55, A56, A57, A58, A59;
==== ercc07/emas-2900/wichtests_wt42.txt ====
'BEGIN'
'ARRAY'
A(/1 : 2, 1 : 2, 1 : 2, 1 : 2, 1 : 2, 1 : 2, 1 : 2, 1 :
2, 1 : 2, 1 : 2, 1 : 2, 1 : 2/);
A(/1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1/):= 1.0;
OUTREAL(99, A(/1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1/));
'END'
==== ercc07/emas-2900/wichtests_wt43.txt ====
'BEGIN'
'REAL'
A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14;
'REAL'
SUM;
A0 := 1.0; A1 := 1.0; A2 := 1.0;
A3 := 1.0; A4 := 1.0; A5 := 1.0;
A6 := 1.0; A7 := 1.0; A8 := 1.0;
A9 := 1.0; A10 := 1.0; A11 := 1.0;
A12 := 1.0; A13 := 1.0; A14 := 1.0;
SUM := A0 + (A1 + (A2 + (A3 + (A4 + (A5 + (A6 + (A7 + (A8 + (A9
+ (A10 + (A11 + (A12 + (A13 + (A14))))))))))))));
OUTREAL(99, SUM);
'END'
==== ercc07/emas-2900/wichtests_wt44.txt ====
'BEGIN'
'REAL'
A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14;
'REAL'
SUM;
A0 := 1.0; A1 := 1.0; A2 := 1.0;
A3 := 1.0; A4 := 1.0; A5 := 1.0;
A6 := 1.0; A7 := 1.0; A8 := 1.0;
A9 := 1.0; A10 := 1.0; A11 := 1.0;
A12 := 1.0; A13 := 1.0; A14 := 1.0;
SUM := 2.0 * A0 + .5 * (2.0 * A1 + .5 * (2.0 * A2 + .5 * (2.0
* A3 + .5 * (2.0 * A4 + .5 * (2.0 * A5 + .5 * (2.0 * A6
+ .5 * (2.0 * A7 + .5 * (2.0 * A8 + .5 * (2.0 * A9 + .5
* (2.0 * A10 + .5 * (2.0 * A11 + .5 * (2.0 * A12 + .5 *
(2.0 * A13 + .5 * (A14))))))))))))));
OUTREAL(99, SUM);
'END'
==== ercc07/emas-2900/wichtests_wt45.txt ====
'BEGIN'
'REAL'
X;
X := 8.4;
OUTREAL(99,
SQRT(SQRT(SQRT(SQRT(SQRT(SQRT(SQRT(SQRT(SQRT(X^9)))))))))
);
'END'
==== ercc07/emas-2900/sup27bsrce_sup27bs.txt ====
!
! TO MAKE S SERIES SUPERVISOR REQUIRES:-
! 1) CHANGE SSERIES=NO TO SSERIES=YES IN CTOPTIONS FILE
! 2) REPLACE COMF BY S SERIES COM IN ERCC08.COMSF
!
!
! THESE CONST INTEGERS DEFINE SIZES AND LAYOUT OF IMPORTANT TABLES
! THEY HAVE TO BE HERE TO BE GLOBAL TO ALL ROUTINES INCLUDING IO ONES
!
%CONSTINTEGER LSTLEN=192; ! LOCAL SEGMENT TABLE LENGTH
%CONSTINTEGER CBTLEN=299; ! LENGTH OF CBT TABLE
%CONSTLONGINTEGER LCACR=1; ! ACR OF LOCAL CONTROLLER
%CONSTINTEGER DIRCSEG=10; ! SEG NO OF DIRECTOR COMMS SEG
%CONSTINTEGER DIRCSEGOFFSET=0; ! FOR ALIGNMENT IF NEEDED
%CONSTINTEGER DIRCSEGAD=DIRCSEG<<18; ! VIRTUAL ADDRESS OF DIR COM SEG
%CONSTINTEGER DIRCSEGL=8*CBTLEN+255+2*LSTLEN; ! SIZE OF SAME
! MADE UP OF 2049 FOR CBT
! 2*LSTLEN FOR SST
! 48+64 FOR 2 BITS OF SYTEMCALL TABLE
! 32+48 FOR DIROUTP&SIGOUT
==== ercc07/emas-2900/wichtests_wt46.txt ====
'BEGIN'
'INTEGER'
I,
J;
I := 1;
J := 2;
L1 :;
'GOTO'
'IF' I > J 'THEN'L1
'ELSE' 'IF' I > J 'THEN'L1
'ELSE' 'IF' I > J 'THEN'L1
'ELSE' 'IF' I > J 'THEN'L1
'ELSE' 'IF' I > J 'THEN'L1
'ELSE' 'IF' I > J 'THEN'
L1
'ELSE'
L2;
L2 :;
'END'
==== ercc07/emas-2900/wichtests_wt47.txt ====
'BEGIN'
A0 :; A1 :; A2 :; A3 :; A4 :; A5 :;
'END'
==== ercc07/emas-2900/sup26hsrce_mindiags.txt ====
%EXTERNALSTRINGFNSPEC STRHEX(%INTEGER I)
%SYSTEMROUTINE NDIAG(%INTEGER PCOUNT, LNB, FAULT, INF)
!***********************************************************************
!*_______'MASTER DIAGNOSTIC ROUTINE'. DISCOVERS THE LANGUAGE OF THE *
!*_______FAILED ROUTINE FROM WORD 4 OF THE GLA AND CALLS APPROPRIATE *
!*_______DIAGNOSTIC ROUTINE. THIS IS REPEATED TILL ALL DIAGNOSTICS *
!*_______GIVEN. *
!*_______PCOUNT = PCOUNTER AT FAILURE *
!*_______LNB = LOCAL NAME BASE AT FAILURE *
!*_______FAULT = FAILURE (0=%MONITOR REQUESTED) *
!*_______INF =ANY FURTHER INFORMATION *
!***********************************************************************
PRINTSTRING("
MINIMUM NDIAGS ENTERED
FAULT NO ="); WRITE(FAULT,2)
PRINTSTRING("
PC=X".STRHEX(PCOUNT)."
LNB=X".STRHEX(LNB)."
")
%END
%ENDOFFILE
==== ercc07/emas-2900/wichtests_wt48.txt ====
'BEGIN'
'INTEGER'
SUM;
SUM := 0;
'BEGIN' SUM := SUM + 1;
'BEGIN' SUM := SUM + 1;
'BEGIN' SUM := SUM + 1;
'BEGIN' SUM := SUM + 1;
'BEGIN' SUM := SUM + 1;
'BEGIN' SUM := SUM + 1;
'BEGIN' SUM := SUM + 1;
'BEGIN' SUM := SUM + 1;
'BEGIN' SUM := SUM + 1;
'BEGIN' SUM := SUM + 1;
'BEGIN' SUM := SUM + 1;
'BEGIN' SUM := SUM + 1;
'BEGIN' SUM := SUM + 1;
'BEGIN' SUM := SUM + 1;
'BEGIN' SUM := SUM + 1;
'BEGIN' SUM := SUM + 1;
'BEGIN' SUM := SUM + 1;
==== ercc07/emas-2900/wichtests_wt49.txt ====
'BEGIN'
'REAL'
A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14;
A0 := A1 := A2 := A3 := A4 := A5 := A6 := A7 := A8 :=
A9 := A10 := A11 := A12 := A13 := A14 := 1.0;
OUTREAL(99, A0 + A1 + A2 + A3 + A4 + A5 + A6 + A7 + A8 + A9 + A10
+ A11 + A12 + A13 + A14);
'END'
==== ercc07/emas-2900/ibm_newimpl.txt ====
PARM NOCHECK
IMP80 IBM_IMP01S,IBMY,.LP,.OUT
OBEY IBM_LINK
PARM CODE
IBMIMP IT0,.NULL,.LP
==== ercc07/emas-2900/wichtests_wt50.txt ====
'BEGIN'
'INTEGER'
I,
SUM;
SUM := 0;
'FOR' I := 1, I + 1, I + 1, I + 1, I + 1, I + 1,
I + 1, I + 1, I + 1, I + 1, I + 1, I + 1,
I + 1, I + 1, I + 1, I + 1, I + 1, I + 1,
I + 1, I + 1, I + 1, I + 1, I + 1, I + 1,
I + 1, I + 1, I + 1, I + 1, I + 1, I + 1,
I + 1, I + 1, I + 1, I + 1, I + 1, I + 1,
I + 1, I + 1, I + 1, I + 1, I + 1, I + 1,
I + 1, I + 1, I + 1, I + 1, I + 1, I + 1,
I + 1, I + 1, I + 1, I + 1, I + 1, I + 1,
I + 1, I + 1, I + 1, I + 1, I + 1, I + 1 'DO'
SUM := SUM + I;
OUTREAL(99, SUM);
'END'
==== ercc07/emas-2900/wichtests_wt51.txt ====
'BEGIN'
'ARRAY'
A0(/1 : 10/), A1(/1 : 10/), A2(/1 : 10/), A3(/1 : 10/),
A4(/1 : 10/), A5(/1 : 10/), A6(/1 : 10/), A7(/1 : 10/),
A8(/1 : 10/), A9(/1 : 10/), A10(/1 : 10/), A11(/1 : 10/),
A12(/1 : 10/), A13(/1 : 10/), A14(/1 : 10/), A15(/1 : 10/),
A16(/1 : 10/), A17(/1 : 10/), A18(/1 : 10/), A19(/1 : 10/),
A20(/1 : 10/), A21(/1 : 10/), A22(/1 : 10/), A23(/1 : 10/),
A24(/1 : 10/), A25(/1 : 10/), A26(/1 : 10/), A27(/1 : 10/),
A28(/1 : 10/), A29(/1 : 10/), A30(/1 : 10/), A31(/1 : 10/),
A32(/1 : 10/), A33(/1 : 10/), A34(/1 : 10/), A35(/1 : 10/),
A36(/1 : 10/), A37(/1 : 10/), A38(/1 : 10/), A39(/1 : 10/),
A40(/1 : 10/), A41(/1 : 10/), A42(/1 : 10/), A43(/1 : 10/),
A44(/1 : 10/), A45(/1 : 10/), A46(/1 : 10/), A47(/1 : 10/),
A48(/1 : 10/), A49(/1 : 10/), A50(/1 : 10/), A51(/1 : 10/),
A52(/1 : 10/), A53(/1 : 10/), A54(/1 : 10/), A55(/1 : 10/),
A56(/1 : 10/), A57(/1 : 10/), A58(/1 : 10/), A59(/1 : 10/);
A0(/1/):= 1.0; A1(/1/):= 1.0; A2(/1/):= 1.0; A3(/1/):= 1.0;
A4(/1/):= 1.0; A5(/1/):= 1.0; A6(/1/):= 1.0; A7(/1/):= 1.0;
A8(/1/):= 1.0; A9(/1/):= 1.0; A10(/1/):= 1.0; A11(/1/):= 1.0;
A12(/1/):= 1.0; A13(/1/):= 1.0; A14(/1/):= 1.0; A15(/1/):= 1.0;
==== ercc07/emas-2900/sup28dsrce_gpc40s.txt ====
%CONSTSTRING (25) VSN="GPC40 15th Mar 1982"
!************************************************GPC GPC GPC
!*
!* EMAS 2900 SUPERVISOR NOTE
!* No: 5
!* Date: 21/05/80
!* Author: A.Gibbons
!*
!*
!* %EXTERNAL ROUTINE GPC(%RECORD(PARMF)%NAME P)
!*
!* 1. CONVENTIONS
!* The record spec for the parameter is
!* %RECORDFORMAT PARMF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6)
!* where
!* DEST is considered as two half words DSNO and DACT. DSNO
!* must be GPC's DSNO
!* DACT is set according to the function required.
!*
!* SRCE is considered as two halfwords SSNO and SACT.
==== ercc07/emas-2900/wichtests_wt52.txt ====
'BEGIN'
'INTEGER' 'PROCEDURE' IABS(I);
'VALUE'
I;
'INTEGER'
I;
IABS :=
'IF' I < 0 'THEN'
- I
'ELSE'
I;
'INTEGER'
I,
J,
K;
I := J := K := 1;
'BEGIN'
'ARRAY'
A(/('IF' IABS(J * K 'DIV' I) > 3 * I - K 'THEN'- 60 'ELSE' 1) :
('IF' IABS(J * K 'DIV' I) > 3 * I - K 'THEN'- 60 'ELSE' 1)
* 3.0 - 1.6 + 10.2/),
==== ercc07/emas-2900/wichtests_wt53.txt ====
'BEGIN'
'INTEGER'
I,
J;
'FOR' I := - 2,
- 1,
1,
2 'DO'
'FOR' J := - 2 'STEP' 1 'UNTIL' 2 'DO'
'IF' J 'DIV' I # SIGN(J / I) * ENTIER(ABS(J / I))
'THEN'
'BEGIN'
OUTREAL(99, J);
OUTREAL(99, I);
OUTREAL(99, J 'DIV' I)
'END';
'END'
==== ercc07/emas-2900/ibm_newimp.txt ====
PARM NOCHECK,NOLIST
IMP80 IBM_IMP01S,IBMY,,.OUT
OBEY IBM_LINK
INSERT IBM01Y
==== ercc07/emas-2900/wichtests_wt54.txt ====
'BEGIN'
'INTEGER' 'PROCEDURE' TSIGN(X);
'VALUE'
X;
'REAL'
X;
TSIGN :=
'IF' X > 0 'THEN'
1
'ELSE' 'IF' X < 0 'THEN'
- 1
'ELSE'
0;
'INTEGER' 'PROCEDURE' TENTIER(X);
'VALUE'
X;
'REAL'
X;
TENTIER := X - .5;
'REAL' 'PROCEDURE' TABS(X);
'VALUE'
==== ercc07/emas-2900/wichtests_wt55.txt ====
'BEGIN'
'INTEGER' 'ARRAY'
EQ(/1 : 9/);
'INTEGER'
I;
'REAL'
X,
Y;
'PROCEDURE' PRINT EQ;
'FOR' I := 1 'STEP' 1 'UNTIL' 9 'DO'
OUTREAL(99, EQ(/I/));
'PROCEDURE' TEST(A, B, C);
'VALUE'
A,
B,
C;
'REAL'
A,
B,
C;
'BEGIN'
==== ercc07/emas-2900/wichtests_wt56.txt ====
'BEGIN'
'INTEGER'
I,
J,
CASE;
'REAL'
X,
Y;
'PROCEDURE' REQUAL(A, B);
'VALUE'
A,
B;
'REAL'
A,
B;
'IF' A # B 'THEN'
'BEGIN'
OUTREAL(99, A);
OUTREAL(99, B);
OUTREAL(99, CASE)
'END'
==== ercc07/emas-2900/perq_newimp.txt ====
PARM NOCHECK,NOLIST
IMP80 PERQ_IMP01S,PERQY,,.OUT
IMP80 PERQ_PASSONE,PASSONEY,,.OUT
OBEY PERQ_LINK
==== ercc07/emas-2900/wichtests_wt57.txt ====
'BEGIN'
'INTEGER'
I;
'REAL'
X;
I := 0;
X := 0.0;
OUTREAL(99, X^I)
'END'
==== ercc07/emas-2900/drsgen01s.txt ====
%INCLUDE "ERCC07.TRIMP_HOSTCODES"
%CONSTINTEGER HOST=EMAS
%CONSTINTEGER TARGET=PNX
%INCLUDE "ERCS02.DRS_ECODES"
%INCLUDE "ERCC07.TRIPCNSTS"
%INCLUDE "ERCC07.TRIMP_TFORM1S"
%CONSTINTEGER ESTK=0,FR0=1,FR1=2,FR2=3,FR3=4,FRN=FR0<<16!FR3
%RECORDFORMAT REGF(%INTEGER CL,(%INTEGER USE %OR %HALF SECUSE,PRIMUSE),
%INTEGER INF1,INF2,AT,LINK)
%OWNINTEGER CABUF,GLACABUF,GLABEL,FPPTR,FPHEAD
%OWNINTEGERNAME CA,GLACA,PPCURR
%OWNINTEGERARRAYNAME CTABLE,TAGS
!%OWNBYTEINTEGERARRAYNAME CODE
%OWNRECORD(LISTF)%ARRAYNAME ASLIST
%EXTRINSICINTEGERARRAY CAS(0:12)
%EXTRINSICRECORD(WORKAF)WORKA
%EXTRINSICRECORD(PARMF) PARM
%CONSTINTEGER MAXREG=4
%OWNRECORD(REGF)%ARRAY REGS(0:MAXREG)
%EXTERNALROUTINESPEC FLAGAND FOLD(%RECORD(TRIPF)%ARRAYNAME T)
%SYSTEMINTEGERMAPSPEC COMREG(%INTEGER N)
==== ercc07/emas-2900/wichtests_wt58.txt ====
'BEGIN'
'INTEGER'
I;
I := 0;
OUTREAL(99, I^I)
'END'
==== ercc07/emas-2900/wichtests_wt59.txt ====
'BEGIN'
'REAL'
X;
X := - 1.0;
OUTREAL(99, 0.0^X)
'END'
==== ercc07/emas-2900/imp80tests_testcomp.txt ====
LIST IMP80TESTS_BLURB
PARM
IMP80 IMP80TESTS_CT0,.NULL,.OUT
IMP80 IMP80TESTS_CT1,.NULL,.OUT
IMP80 IMP80TESTS_CT2,.NULL,.OUT
IMP80 IMP80TESTS_CT3,.NULL,.OUT
IMP80 IMP80TESTS_CT4,.NULL,.OUT
IMP80 IMP80TESTS_CT5,.NULL,.OUT
IMP80 IMP80TESTS_CT6,.NULL,.OUT
IMP80 IMP80TESTS_CT7,.NULL,.OUT
IMP80 IMP80TESTS_CT8,.NULL,.OUT
IMP80 IMP80TESTS_CT9,.NULL,.OUT
IMP80 IMP80TESTS_CT10,.NULL,.OUT
IMP80 IMP80TESTS_CT11,.NULL,.OUT
IMP80TESTS_CT12,.NULL,.OUT
IMP80 IMP80TESTS_CT13,.NULL,.OUT
IMP80 IMP80TESTS_RT0,IY,.OUT
RUN IY
IMP80 IMP80TESTS_RT1,IY,.OUT
RUN IY
IMP80 IMP80TESTS_RT2,IY,.OUT
==== ercc07/emas-2900/wichtests_wt60.txt ====
'BEGIN'
'REAL'
X;
X := - 1.0;
OUTREAL(99, 0^X)
'END'
==== ercc07/emas-2900/sup28asrce_fast41s.txt ====
!*
!* Communications record format - extant from CHOPSUPE 22A onwards *
!*
%RECORDFORMAT COMF(%INTEGER OCPTYPE,SLIPL,SBLKS,SEPGS,NDISCS,DLVNADDR, %C
(%INTEGER GPCTABSIZE,GPCA %OR %INTEGER DCUTABSIZE,DCUA), %C
%INTEGER SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,TOJDAY,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,SERVAAD, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0,%INTEGER ITINT,CONTYPEA, %C
(%INTEGER GPCCONFA %OR %INTEGER DCUCONFA), %C
%INTEGER FPCCONFA,SFCCONFA,BLKADDR,RATION, %C
(%INTEGER SMACS %OR %INTEGER SCUS), %C
%INTEGER TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,FEPS, %C
MAXCBT,PERFORMAD,SP1,SP2,SP3,SP4,SP5,SP6, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
HBIT,SLAVEOFF,INHSSR,SDR1,SDR2,SDR3, %C
SDR4,SESR,HOFFBIT,BLOCKZBIT,BLKSHIFT,BLKSIZE,END)
==== ercc07/emas-2900/wichtests_wt61.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
I;
'REAL'
X;
X := 3.2;
I := - 2;
OUTREAL(99, I^X)
'END'
==== ercc07/emas-2900/wichtests_wt62.txt ====
'BEGIN'
'COMMENT' LIBRARY 99;
'INTEGER'
I,
J;
I := 0;
J := - 2;
OUTREAL(99, I^J)
'END'
==== ercc07/emas-2900/sup27bsrce_oper34s.txt ====
! %CONSTSTRING(15)VSN = "OPER34 29/5/81"; ! ****************************************
%IF (MONLEVEL >> 1) & 1 = YES %START
%EXTRINSICLONGINTEGER KMON
%OWNINTEGER OPMON; ! COPY OF KMON BIT
%CONSTINTEGER KMONNING = YES
%FINISH %ELSE %START
%CONSTINTEGER KMONNING = NO
%FINISH
!
%IF MONLEVEL & 1 = YES %START
%CONSTINTEGER VIDEO UPDATING = YES
%OWNINTEGER OPER FACILITIES
%FINISH %ELSE %START
%CONSTINTEGER VIDEO UPDATING = NO
%FINISH
!
!
!
%RECORDFORMAT PF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6)
%RECORDFORMAT MP F(%INTEGER DEST,SRCE,%STRING(23)TXT)
!*
==== ercc07/emas-2900/wichtests_wt63.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
I;
'REAL'
X;
X := 0.0;
I := - 2;
OUTREAL(99, X^I)
'END'
==== ercc07/emas-2900/isup2s.txt ====
!
%include "ercc07.ibmsup_page0"
!
! These const integers define sizes and layout of important tables
! they have to be here to be global to all routines including I/O ones
!
%constlonginteger DISAWAIT=PSW0!X'2000000000000'
%constlonginteger ALLOW INTS=x'0306000000000000'
%constlonginteger ONE SECOND=x'00000000F4240000'
!
%ownlonginteger PSW,WPSW,L
!
%include "ercc07.ibmsup_lcform1s"
!
%externalintegerfnspec REQUEST INPUT(%integer OUTPUT POSN,TRIGGER POSN)
%externalintegerfnspec REQUEST OUTPUT(%integer OUTPUT POSN,TRIGGER POSN)
%externalintegerfnspec CHANGE CONTEXT
%externalroutine SUP01
!-----------------------------------------------------------------------
%ownstring (3) SUPID="01A"
!---------------------
==== ercc07/emas-2900/wichtests_wt64.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER''PROCEDURE' P(B);
'VALUE'
B;
'BOOLEAN'
B;
P := ('IF' B 'THEN' 1 'ELSE' 3.3) 'DIV' 6;
OUTREAL(99, P('TRUE'));
OUTREAL(99, P('FALSE'))
'END'
==== ercc07/emas-2900/wichtests_wt65.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
I,
J;
I := 2;
J := 3;
OUTREAL(99, I^J 'DIV' J)
'END'
==== ercc07/emas-2900/wichtests_wt66.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
I,
J,
K,
CASE;
'PROCEDURE' EQUAL(I, J);
'VALUE'
I,
J;
'INTEGER'
I,
J;
'IF' I # J 'THEN'
'BEGIN'
OUTREAL(99, CASE);
OUTREAL(99, I);
OUTREAL(99, J)
'END'
'ELSE'
==== ercc07/emas-2900/wichtests_wt67.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
I,
J;
I := 3;
J := - 2;
OUTREAL(99, (81 * I^J) 'DIV' 2);
'END'
==== ercc07/emas-2900/drsgen02s.txt ====
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
! Opnd2 is either a 32 bit const with the size (ACC) as value or
! the ptr or arrayhead as normal operand.
!
! VMY X1 is now dim<<28!maxdim<<24!array name(where known)
! Opnd2 is either a 32 bit const with DV offset into const area or
! the arrayhead as a standard operand
!
! AINDX X1 is ELSIZE<<20 !spare
! Opnd2 is arrayhead as standard operand
! NOTE:- The Operands have been swopped for consistency with norm.
!
==== ercc07/emas-2900/wichtests_wt68.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
I;
'SWITCH' S :=
S1,
S2,
S3,
S4;
'FOR' I := 1 'STEP' 1 'UNTIL' 4 'DO'
'BEGIN'
'GOTO' S[I];
S1 :;
'IF' I # 1 'THEN'
OUTREAL(99, I)
'ELSE'
'GOTO' EXIT;
S2 :;
'IF' I # 2 'THEN'
OUTREAL(99, I)
'ELSE'
==== ercc07/emas-2900/wichtests_wt69.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
I;
'SWITCH' S :=
S1,
S2,
S3,
S4;
'FOR' I := 1,
2,
3 'DO'
'BEGIN'
'GOTO' S[I];
S1 :;
'IF' I # 1 'THEN'
OUTREAL(99, I)
'ELSE'
S2 : 'IF' I # 2 'THEN'
OUTREAL(99, I)
'END';
==== ercc07/emas-2900/wichtests_wt70.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
I;
'SWITCH' S :=
S1,
S2,
S3;
I := 1;
'GOTO' S[I];
'FOR' I := 1,
2,
3 'DO'
'BEGIN'
S1 :;
OUTREAL(99, 10);
S2 :;
OUTREAL(99, 20);
OUTREAL(99, I)
'END';
S3 :;
==== ercc07/emas-2900/sup27bsrce_mindiags.txt ====
%EXTERNALSTRINGFNSPEC STRHEX(%INTEGER I)
%SYSTEMROUTINE NDIAG(%INTEGER PCOUNT, LNB, FAULT, INF)
!***********************************************************************
!*_______'MASTER DIAGNOSTIC ROUTINE'. DISCOVERS THE LANGUAGE OF THE *
!*_______FAILED ROUTINE FROM WORD 4 OF THE GLA AND CALLS APPROPRIATE *
!*_______DIAGNOSTIC ROUTINE. THIS IS REPEATED TILL ALL DIAGNOSTICS *
!*_______GIVEN. *
!*_______PCOUNT = PCOUNTER AT FAILURE *
!*_______LNB = LOCAL NAME BASE AT FAILURE *
!*_______FAULT = FAILURE (0=%MONITOR REQUESTED) *
!*_______INF =ANY FURTHER INFORMATION *
!***********************************************************************
PRINTSTRING("
MINIMUM NDIAGS ENTERED
FAULT NO ="); WRITE(FAULT,2)
PRINTSTRING("
PC=X".STRHEX(PCOUNT)."
LNB=X".STRHEX(LNB)."
")
%END
%ENDOFFILE
==== ercc07/emas-2900/wichtests_wt71.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
I,
CASE;
'BOOLEAN'
B;
'REAL'
X;
'INTEGER''PROCEDURE' P(K, Q);
'VALUE'
K;
'INTEGER'
K;
'INTEGER''PROCEDURE'
Q;
'COMMENT' (X1) : 'VALUE' X1 : 'REAL' X1 ;
P :=
'IF' K = 1 'THEN'
Q(I)
'ELSE' 'IF' K = 2 'THEN'
==== ercc07/emas-2900/impalgs_cputimes.txt ====
%EXTERNALINTEGERFNSPEC DCPUTIME
%EXTERNALLONGREALFN REALCPUTIME
%RESULT=DCPUTIME/1000
%END
%ENDOFFILE
==== ercc07/emas-2900/wichtests_wt72.txt ====
'BEGIN'
'COMMENT' LIBRARY 3;
'INTEGER'
I,
CASE;
'BOOLEAN'
B;
'REAL'
X;
'INTEGER''PROCEDURE' P(K, Q);
'VALUE'
K;
'INTEGER'
K;
'INTEGER''PROCEDURE'
Q;
'COMMENT' (X1) : 'VALUE' X1 : 'INTEGER'X1 ;
P :=
'IF' K = 1 'THEN'
Q(I)
'ELSE' 'IF' K = 2 'THEN'
==== ercc07/emas-2900/wichtests_wt73.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
I,
J,
K,
K1;
'REAL'
T1,
T2;
'INTEGER''PROCEDURE' ACKERMANN(M, N);
'VALUE'
M,
N;
'INTEGER'
M,
N;
ACKERMANN :=
'IF' M = 0 'THEN'
N + 1
'ELSE' 'IF' N = 0 'THEN'
==== ercc07/emas-2900/ibm_imp01s.txt ====
%MAINEP ICL9CEZIBMIMP
%TRUSTEDPROGRAM
%BEGIN
%CONSTINTEGER RELEASE=1
%CONSTINTEGER YES=1,NO=0
%CONSTINTEGER USE IMP=NO
%CONSTINTEGER VMEB=NO
%CONSTSTRING(9) LADATE="30 Nov 81"; ! LAST ALTERED
%INTEGER I, J, K
! PRODUCED BY OLDPS FROM IBM_PS02 ON 06/01/82
%CONSTBYTEINTEGERARRAY CLETT(0: 454)= 1,
40, 1, 41, 1, 42, 1, 44, 2, 201, 198, 6, 213, 206, 204,
197, 211, 211, 5, 215, 200, 201, 204, 197, 5, 213, 206, 212, 201,
204, 3, 198, 207, 210, 1, 61, 5, 193, 204, 201, 193, 211, 7,
201, 206, 212, 197, 199, 197, 210, 4, 210, 197, 193, 204, 4, 204,
207, 206, 199, 4, 194, 217, 212, 197, 6, 211, 212, 210, 201, 206,
199, 5, 211, 200, 207, 210, 212, 6, 210, 197, 195, 207, 210, 196,
7, 210, 207, 213, 212, 201, 206, 197, 2, 198, 206, 3, 205, 193,
208, 8, 198, 213, 206, 195, 212, 201, 207, 206, 4, 206, 193, 205,
197, 9, 193, 210, 210, 193, 217, 206, 193, 205, 197, 9, 207, 198,
208, 210, 207, 199, 210, 193, 205, 6, 207, 198, 198, 201, 204, 197,
==== ercc07/emas-2900/isup3s.txt ====
!
%include "ercc07:ibmsup_page0"
!
! These const integers define sizes and layout of important tables
! they have to be here to be global to all routines including I/O ones
!
%constlonginteger DISAWAIT=PSW0!X'2000000000000'
%constlonginteger ALLOW INTS=x'0306000000000000'
%constlonginteger ONE SECOND=x'00000000F4240000'
!
%ownlonginteger PSW,WPSW,L
!
%include "ercc07:ibmsup_lcform2s"
!
%externalintegerfnspec REQUEST INPUT(%integer OUTPUT POSN,TRIGGER POSN)
%externalintegerfnspec REQUEST OUTPUT(%integer OUTPUT POSN,TRIGGER POSN)
%externalintegerfnspec CHANGE CONTEXT
%externalroutine SUP01
!-----------------------------------------------------------------------
%ownstring (3) SUPID="01A"
!---------------------
==== ercc07/emas-2900/wichtests_wt74.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
N;
N := 3;
'BEGIN'
'ARRAY'
A[1 : 'IF' N = 3 'THEN' 3 'ELSE' - 100];
'INTEGER'
N;
N := 2;
OUTREAL(99, N);
'END';
OUTREAL(99, N)
'END'
==== ercc07/emas-2900/newpackdts.txt ====
!***********************************************************************
!* *
!* THESE FUNCTIONS ALL USE A PACKED FORMAT OF DATE AND TIME OF ONE OF *
!* THE FOLLOWING FORMS.BITS ARE NUMBERED FROM 31 (MOST SIGNIFICANT) TO *
!* 0 (LEAST SIGNIFICANT) *
!* OLD FORMAT *
!* BITS USE *
!* 31 ZERO FOR OLD FORMAT *
!* 30-26 YEAR-70 (VALID FOR 1970-2033) *
!* 25-22 MONTH *
!* 21-17 DAY *
!* 16-12 HOUR *
!* 11- 6 MINUTE *
!* 5- 0 SECOND *
!* *
!* NEW FORMAT *
!* BIT31 1 FOR NEW FORMAT *
!* ALL OTHER BITS HOLD DT AS SECS SINCE 0000HRS ON 1/1/70 *
!* CALCULATED AS PER CACM COLLECTER ALGORITHMS NO 199Z *
!* NB TO KEEP LEAP YEARS CORRECT ONE MUST USE THIS ALGORITH FROM *
!* 1ST JAN 1900 AND THEN CORRECT. THIS INVOLVES 64BIT ARITHMETIC *
==== ercc07/emas-2900/wichtests_wt75.txt ====
'BEGIN'
'COMMENT' LIBRARY 9;
'INTEGER''ARRAY'
EQ[1 : 3];
'INTEGER'
I;
'REAL'
X,
Y;
'PROCEDURE' INC(A, B);
'VALUE'
A,
B;
'REAL'
A,
B;
'IF' A < B 'THEN'
EQ[1] := EQ[1] + 1
'ELSE' 'IF' A = B 'THEN'
EQ[2] := EQ[2] + 1
'ELSE'
==== ercc07/emas-2900/sup26esrce_gpc33s.txt ====
%CONSTSTRING(25) VSN = "GPC33 10TH SEP 80"; ! ************************************************GPC GPC GPC
!
! EMAS 2900 SUPERVISOR NOTE
! No: 5
! Date: 21/05/80
! Author: A.Gibbons
!
!
! %EXTERNAL ROUTINE GPC(%RECORDNAME P)
!
! 1. CONVENTIONS
! The record spec for the parameter is
! %RECORDFORMAT PARMF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6)
! where
! DEST is considered as two half words DSNO and DACT. DSNO
! must be GPC's DSNO
! DACT is set according to the function required.
!
! SRCE is considered as two halfwords SSNO and SACT.
! SSNO is SNO of ORIGINATOR and SACT is DACT for
! the reply.
==== ercc07/emas-2900/sup28asrce_releasen.txt ====
Supervisor 28A Release Notice
This Supervisor has the following changes
==== ercc07/emas-2900/wichtests_wt76.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'REAL'
X,
Y;
'INTEGER'
I,
J;
'ARRAY'
A[1 : 10];
X := Y := 1.0;
I := J := 0;
'BEGIN'
'SWITCH' A := A1,A2,A3;
'PROCEDURE' P;
'BEGIN'
X := 20;
I := X + Y;
Q(A[3], I + J)
'END';
'PROCEDURE' Q(L, K);
==== ercc07/emas-2900/perq_imp01s.txt ====
%MAINEP ICL9CEZPERQIMP
%TRUSTEDPROGRAM
%BEGIN
%CONSTINTEGER RELEASE=1
%CONSTINTEGER YES=1,NO=0
%CONSTINTEGER ON PERQ=NO
%CONSTSTRING(9) LADATE="3 Dec 81"; ! LAST ALTERED
%INTEGER I, J, K
%CONSTINTEGER NO OF SNS=63
%CONSTINTEGER LRLPT=X'52'
!
! FIXED GLA CURRENTLY USED AS FOLLOWS
! 0-7 FREE(WAS 2900 ENTRY DESCRIPTOR)
! 8-11 ADDRESS OF UNSHARED SYMBOL TABLES
! 12-15 ADDRESS OF SHARED SYMBOL TABLES
! 16-19 LANGUAGE & COMPILER DATA
! 20-23 RESERVED (BUT IN MAIN PROGS IS FILLED WITH STACKPTR@ENTRY)
! 24-27 ADDRESS OF CONSTANT TABL
! 28-31 ADDRESS OF A WORD CONTAINING STACKTOP 0FOR NO CHECKS
! 32-39 FREE
! 40-55 DEFINES THE ENTRY POINT OF MDIAGS
==== ercc07/emas-2900/wichtests_wt77.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
SUM;
'PROCEDURE' P1(S, R, I, B, RA, IA);
'STRING'
S;
'REAL'
R;
'INTEGER'
I;
'BOOLEAN'
B;
'REAL' 'ARRAY'
RA;
'INTEGER''ARRAY'
IA;
SUM := SUM + R + I + ('IF' B 'THEN' 1 'ELSE' 0) + RA[1] +
IA[1];
'PROCEDURE' P2(BA, L, SW, PR, RPR, IPR, BPR);
'BOOLEAN' 'ARRAY'
==== ercc07/emas-2900/drsgen03s.txt ====
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
! Opnd2 is either a 32 bit const with the size (ACC) as value or
! the ptr or arrayhead as normal operand.
!
! VMY X1 is now dim<<28!maxdim<<24!array name(where known)
! Opnd2 is either a 32 bit const with DV offset into const area or
! the arrayhead as a standard operand
!
! AINDX X1 is ELSIZE<<20 !spare
! Opnd2 is arrayhead as standard operand
! NOTE:- The Operands have been swopped for consistency with norm.
!
==== ercc07/emas-2900/wichtests_wt78.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
SUM;
'PROCEDURE' P1(S, R, I, B, RA, IA);
'STRING'
S;
'REAL'
R;
'INTEGER'
I;
'BOOLEAN'
B;
'REAL' 'ARRAY'
RA;
'INTEGER''ARRAY'
IA;
SUM := SUM + R + I + ('IF' B 'THEN' 1 'ELSE' 0) + RA[1] +
IA[1];
'PROCEDURE' P2(BA, L, SW, PR, RPR, IPR, BPR);
'BOOLEAN' 'ARRAY'
==== ercc07/emas-2900/pnxponeas.txt ====
%CONSTINTEGER YES=1,NO=0
%CONSTINTEGER EMAS=10
%CONSTINTEGER PERQ=11
%CONSTINTEGER PUNIX=12
%CONSTINTEGER HOST=EMAS
%CONSTINTEGER TARGET=PERQ
%CONSTINTEGER LINTAVAIL=1<<EMAS
%CONSTINTEGER LLREALAVAIL=1<<EMAS
! PRODUCED BY OLDPS FROM TRIMP_PNXPS01 ON 06/09/83
%CONSTBYTEINTEGERARRAY CLETT(0: 436)= 1,
40, 1, 41, 1, 42, 1, 44, 2, 201, 198, 6, 213, 206, 204,
197, 211, 211, 5, 215, 200, 201, 204, 197, 5, 213, 206, 212, 201,
204, 3, 198, 207, 210, 1, 61, 5, 193, 204, 201, 193, 211, 7,
201, 206, 212, 197, 199, 197, 210, 4, 210, 197, 193, 204, 4, 204,
207, 206, 199, 4, 194, 217, 212, 197, 6, 211, 212, 210, 201, 206,
199, 4, 200, 193, 204, 198, 5, 211, 200, 207, 210, 212, 6, 210,
197, 195, 207, 210, 196, 7, 210, 207, 213, 212, 201, 206, 197, 2,
198, 206, 3, 205, 193, 208, 8, 198, 213, 206, 195, 212, 201, 207,
206, 4, 206, 193, 205, 197, 9, 193, 210, 210, 193, 217, 206, 193,
205, 197, 9, 207, 198, 208, 210, 207, 199, 210, 193, 205, 6, 207,
198, 198, 201, 204, 197, 6, 207, 198, 204, 201, 211, 212, 6, 198,
==== ercc07/emas-2900/wichtests_wt79.txt ====
'BEGIN'
'INTEGER'
I;
'REAL'
R;
'BOOLEAN'
B;
'ARRAY'
A1[1 : I + B],
A2[2 : 4, 5 : 7];
'SWITCH' S :=
'IF' R * P0 < 0 'THEN' L 'ELSE' L2;
'PROCEDURE' P0;
R := I 'DIV' R;
'PROCEDURE' P1(F);
'REAL'
F;
B := I + R;
L :;
B := I > S;
B := B 'OR' P0;
==== ercc07/emas-2900/sup26hsrce_comms48s.txt ====
! VERSION OF 13/06/80
! DEC 79: INCLUDE AN OPER ADAPTOR
! HAVE ONLY ONE SERVICE NUMBER, X'37'
! OTHER POSSIBLE CHANGES
! MAKE INITIALISATION CALL OF CC INITIALISE ADAPTORS AS WELL
! MAKE IT POSSIBLE TO DEALLOCATE/ALLOCATE ALL DEVICES
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20A ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,WASKLOKCORRECT,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,DQADDR, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0, %C
%INTEGER ITINT,CONTYPEA,GPCCONFA,FPCCONFA,SFCCONFA, %C
BLKADDR,DPTADDR,SMACS,TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,SP0,SP1, %C
SP2,SP3,SP4,SP5,SP6,SP7,SP8, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
==== ercc07/emas-2900/perq_newimpl.txt ====
PARM NOCHECK
IMP80 PERQ_PASSONES,PASSONEY,.LP,.OUT
IMP80 PERQ_IMP01S,PERQY,.LP,.OUT
IMP80 PERQ_CSUPS,PERQCSUPY,.LP,.OUT
OBEY PERQ_LINK
==== ercc07/emas-2900/sup25jsrce_documentn.txt ====
This partitioned file contains all the source required to make up a
version 25I Supervisor, plus the version of the IMP compiler used at
Edinburgh to do so. This compiler is necessary as some advanced
compiler features are required which are not available in the service
compiler.
Note that the OPTION NOBRACKETS must be in force in the process being
used for the method described to work.
Three "OBEY" subfiles are available: MAKECHKD, MAKEOPT and MAKERACER.
They each construct a test Supervisor which is left in file SUP25xT,
where x is 'C', 'O' or 'R' respectively.
The fixing utility is in CONLIB.GENERAL, which must be in the user's
"SEARCHDIR" list. A COPY IS INCLUDED IN THIS FILE IN CASE OF PROBLEMS.
Making a Supervisor thus consists of the following:
==== ercc07/emas-2900/impmess2.txt ====
1 "%REPEAT is not required"
2 "Label & has already been set in this block"
4 "& is not a Switch name at current textual level"
5 "Switch name & in expression or assignment"
6 "Switch label &(#) set a second time"
7 "Name & has already been declared"
8 "Routine or fn & has more parameters than specified"
9 "Parameter # of & differs in type from specification"
10 "Routine or fn & has fewer parameters than specified"
11 "Label & referenced at line # has not been set"
12 "%CYCLE at line # has two control clauses"
13 "%REPEAT for %CYCLE at line # is missing"
14 "%END is not required"
15 "# %ENDs are missing"
16 "Name & has not been declared"
17 "Name & does not require parameters or subscripts"
18 "# too few parameters provided for &"
19 "# too many parameters provided for &"
20 "# too few subscripts provided for array &"
21 "# too many subscripts provided for array &"
==== ercc07/emas-2900/sup28dsrce_enter15s.txt ====
%RECORDFORMAT PARMF(%INTEGER DEST, SRCE, P1, P2, P3, P4, P5, P6)
%RECORDFORMAT SERVAF(%INTEGER P, C)
%EXTERNALINTEGERSPEC INPTR
%EXTERNALINTEGERSPEC OUTPTR
%CONSTINTEGER MASK=X'80FC3FFF'
%EXTERNALINTEGERFNSPEC HANDKEYS
%EXTERNALROUTINESPEC HOOT(%INTEGER NUM)
%EXTERNALROUTINESPEC GDC(%RECORD(PARMF)%NAME P)
%IF SSERIES=NO %START
%EXTERNALINTEGERFNSPEC GPC INIT(%INTEGER CA,PT,MODE)
%FINISH
%EXTERNALINTEGERFNSPEC SAFE IS READ(%INTEGER ISAD,%INTEGERNAME VAL)
%EXTERNALROUTINESPEC GET PSTB(%INTEGERNAME P0, P1)
%EXTERNALROUTINESPEC SUP29
%EXTERNALROUTINESPEC SUPPOFF(%RECORD(SERVAF)%NAME SERV, %C
%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC DISC(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC PDISC(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC SLAVESONOFF(%INTEGER J)
%EXTERNALROUTINESPEC PKMONREC(%STRING(20)TEXT,%RECORD(PARMF)%NAME P)
!*
==== ercc07/emas-2900/wichtests_wt80.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
I;
'INTEGER''ARRAY'
A[1 : 10];
I := 1;
'FOR' A[I] := 1,
2,
3,
4,
5,
6,
7,
8,
9,
10 'DO'
I := I + 1;
'FOR' I := 1 'STEP' 1 'UNTIL' 10 'DO'
'IF' A[I] # I 'THEN'
OUTREAL(99, I);
==== ercc07/emas-2900/sup27fsrce_makechkd.txt ====
PARM FREE,NOCHECK,NOLIST,STACK
IMP80 CTOPT+SUP27FSRCE_SUP27FS,SUPZZ,,.OUT
IMP80 CTOPT+SUP27FSRCE_COM33S,COMZZ,,.OUT
IMP80 CTOPT+SUP27FSRCE_PRINT07S,PRINTZZ,,.OUT
IMP80 CTOPT+SUP27FSRCE_OPER35S,OPERZZ,,.OUT
IMP80 CTOPT+SUP27FSRCE_ENTER12S,ENTERZZ,,.OUT
PARM FREE,OPT,STACK,NOLIST
IMP80 CTOPT+SUP27FSRCE_GPC38S,GPCZZ,,.OUT
IMP80 SUP27FSRCE_NDIAG07S,NDIAGZZ,,.OUT
IMP80 CTOPT+SUP27FSRCE_COMMS49S,COMMSZZ,,.OUT
IMP80 CTOPT+SUP27FSRCE_FAST38S,FASTZZ,,.OUT
IMP80 CTOPT+SUP27FSRCE_TAPE73S,TAPEZZ,,.OUT
PARM MAP
LINK
SUPZZ
COMZZ
PRINTZZ
OPERZZ
ENTERZZ
GPCZZ
NDIAGZZ
==== ercc07/emas-2900/wichtests_wt81.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'ARRAY'
V,
A,
C[1 : 1];
'INTEGER'
K;
'INTEGER''PROCEDURE' I;
'BEGIN'
I := 1;
K := K + 1
'END';
K := 0;
A[I] := 1;
C[I] := 3;
'FOR' V[I] := A[I] 'STEP' A[I] 'UNTIL' C[I] 'DO'
;
OUTREAL(99, K)
'END'
==== ercc07/emas-2900/sup27csrce_documentn.txt ====
This partitioned file contains all the source required to make up
an EMAS2900 Supervisor, plus the version of the IMP80 compiler and FIX
utility used at Edinburgh to do so. This compiler is necessary as some
advanced language features are required which are not available in the
service compiler.
Note that the OPTION NOBRACKETS must be in force in the process being
used for the method described to work.
Two "OBEY" subfiles are available: MAKECHKD and MAKEOPT. They each
construct a test Supervisor which is left in file SUP27xT, where x is
'C' or 'O' respectively.
Making a Supervisor thus consists of the following:
a) INSERT the IMP80 compiler and FIX utility into the current directory
(and then log off and log on again if IMP80 was previously used in
==== ercc07/emas-2900/sup27csrce_print07s.txt ====
%RECORDFORMAT PARMF(%INTEGER DEST, SRCE, P1, P2, P3, P4, P5, P6)
%EXTRINSICLONGINTEGER KMON
%ROUTINESPEC PRHEX(%INTEGER H)
%ROUTINESPEC PRINTER(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC PON(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC GPC(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC OPMESS(%STRING (23) MESS)
%SYSTEMROUTINESPEC ITOE(%INTEGER A, L)
%IF MULTIOCP=YES %THEN %START
%EXTERNALROUTINESPEC SEMALOOP(%INTEGERNAME SEMA)
%ROUTINESPEC RESERVE LOG
%ROUTINESPEC RELEASE LOG
%ROUTINESPEC AWAIT LOG ROUTE
%FINISH
!------------------------------------------------------------------------
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20L ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DLVNADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,TOJDAY,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,SERVAAD, %C
==== ercc07/emas-2900/wichtests_wt82.txt ====
'BEGIN'
'COMMENT' LIBRARY5;
'INTEGER''PROCEDURE' NONE;
NONE := 1;
NONE;
SIN(1.0);
ABS(3);
LN(.2);
EXP(4);
ENTIER(NONE);
SIGN(SQRT(8));
OUTREAL(99, NONE)
'END'
==== ercc07/emas-2900/sup27fsrce_tape73s.txt ====
!**************************************************
!* *
!* TAPE HANDLER FOR 2900 *
!* *
!**************************************************
!!
!***********************************************************************
!* VERSION 73:
!* PRIVATE CHAINS REDONE - P_P3=VADD RCB, P5,P6=STB FOR RCB AREA.
!* ALSO ALL ATTENTIONS FOR PRIVATE CHAINS GO STRAIGHT TO USER
!* WITHOUT ANY ACTION HERE.
!* VERSION 72
!* 05-MAY-81:
!* HAIRY PON TO RESET 'RETRY PREAMBLE' WHICH ALLOWS/INHIBITS
!* READ RETRY WHEN NO PREAMBLE DETECTED.
!* MAINLY INTENDED FOR READING DUMP TAPES WITH SUCH.
!* 04-MAY-81:
!* FIX IN LOAD AND LOAD MESSAGE FOR FAULTY DSN.
!* REWINDS AND COMES UP AS LOADED NO LABEL.
!* 01-MAY-81:
==== ercc07/emas-2900/wichtests_wt83.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
NN;
'SWITCH' A :=
B[1],
B[2];
'SWITCH' B :=
A[G],
A[2];
'INTEGER''PROCEDURE' F(N, S);
'VALUE'
N;
'INTEGER'
N;
'SWITCH'
S;
'BEGIN'
NN := N;
'GOTO' S[1];
F := NN
==== ercc07/emas-2900/sup26isrce_enter09s.txt ====
%EXTRINSICINTEGER INPTR
%EXTRINSICINTEGER OUTPTR
%CONSTINTEGER MASK=X'80FC3FFF'
%EXTERNALINTEGERFNSPEC HANDKEYS
%EXTERNALROUTINESPEC HOOT(%INTEGER NUM)
%EXTERNALINTEGERFNSPEC GPC INIT(%INTEGER CA,PT,MODE)
%EXTERNALINTEGERFNSPEC SAFE IS READ(%INTEGER ISAD,%INTEGERNAME VAL)
%EXTERNALROUTINESPEC GET PSTB(%INTEGERNAME P0, P1)
%EXTERNALROUTINESPEC SUP29
%EXTERNALROUTINESPEC SUPPOFF(%RECORDNAME SERV,P)
%EXTERNALROUTINESPEC DISC(%RECORDNAME P)
%EXTERNALROUTINESPEC PDISC(%RECORDNAME P)
%EXTERNALROUTINESPEC GPC(%RECORDNAME P)
%EXTERNALROUTINESPEC SLAVESONOFF(%INTEGER J)
%EXTERNALROUTINESPEC PKMONREC(%STRING(20)TEXT,%RECORDNAME P)
%SYSTEMROUTINESPEC MOVE(%INTEGER L, FROMAD, TOAD)
%RECORDFORMAT PARMF(%INTEGER DEST, SRCE, P1, P2, P3, P4, P5, %C
P6)
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20L ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
==== ercc07/emas-2900/ndiag07s.txt ====
!*_ DATED 11 NOV 76 1
! ALTERATIONS BY K.YARWOOD ...
! PRINT FL AND NEXT SYMBOL LINES COMMENTED OUT
! PRINTTEXT'S TURNED TO PRINTSTRING'S
! ADDITION FOR LONGINTEGER IN RT PRINT VAR
! HEX EQUIVALENTS FOR INTS,LONGINTS ETC PRINTED
! INF PRINTED IN HEX IN RT ERRMESS
%EXTERNALSTRINGFNSPEC STRHEX(%INTEGER I)
%EXTERNALSTRING(8)%FNSPEC STRINT(%INTEGER I)
%CONSTINTEGER STACKBASE=X'80100000'; ! START OF RESIDENT STACK
! %SYSTEMROUTINESPEC SIGNAL(%INTEGER I, J, K, %INTEGERNAME F)
%ROUTINESPEC PRINTMESS(%INTEGER N)
! %SYSTEMROUTINESPEC TIDY EXIT
!*
%ROUTINESPEC INDIAG(%INTEGER OLDLNB, L, PC, %INTEGERNAME NEWLNB)
! %ROUTINESPEC FDIAG(%INTEGER OLDLNB,PC,%INTEGERNAME NEWLNB)
%ROUTINESPEC ERMESS(%INTEGER N, INF)
! %ROUTINESPEC ICL9CELABELS
==== ercc07/emas-2900/isup4s.txt ====
%include "ercc08:ctoptv7"
!
%include "ercc07:ibmsup_page0"
!
! These const integers define sizes and layout of important tables
! they have to be here to be global to all routines including I/O ones
!
%constlonginteger DISAWAIT=PSW0!X'2000000000000'
%constlonginteger ALLOW INTS=x'0306000000000000'
%constlonginteger ONE SECOND=x'00000000F4240000'
!
%ownlonginteger PSW,WPSW,L
!
%include "ercc07:ibmsup_lcform3s"
!
%externalintegerfnspec REQUEST INPUT(%integer OUTPUT POSN,TRIGGER POSN)
%externalintegerfnspec REQUEST OUTPUT(%integer OUTPUT POSN,TRIGGER POSN)
%externalintegerfnspec CHANGE CONTEXT
%externalroutine SUP01
!-----------------------------------------------------------------------
%ownstring (3) SUPID="01A"
==== ercc07/emas-2900/wichtests_wt84.txt ====
'BEGIN'
'COMMENT' LIBRARY 3;
'INTEGER'I,CL,N,REP;
'ARRAY' R,A,B[1:30],C[1:10];
'REAL' J,ROOT,X;
'INTEGER''PROCEDURE' EVEN(X);
'VALUE' X;
'INTEGER'X;
EVEN:='IF' X'DIV'2*2 = X 'THEN' 1 'ELSE' -1;
'PROCEDURE' GAMM(R,A,B,C);
'ARRAY' R,A,B,C;
'BEGIN' 'INTEGER'REP,I,CL;
'REAL' J,ROOT,X;
REP:=100*N;
OUTREAL(99,CPUTIME);
'FOR' CL:= 1 'STEP' 1 'UNTIL' REP 'DO'
;
OUTREAL(99,CPUTIME);
REP:=N;
OUTREAL(99,CPUTIME);
'FOR' CL:=1 'STEP' 1 'UNTIL' REP 'DO'
==== ercc07/emas-2900/wichtests_wt85.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'REAL'
X,
Y;
'PROCEDURE' DUM;
;
'REAL' 'PROCEDURE' A;
A := X + ('IF' B 'THEN' 1 'ELSE' 0);
'BOOLEAN'
B;
S2 :;
B := (('TRUE'));
G :;
'BEGIN'
'INTEGER'
I;
X := - 3;
'IF' 'NOT' B 'THEN'
'GOTO' S2;
I := 1;
==== ercc07/emas-2900/wichtests_wt86.txt ====
'BEGIN'
PROG :
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'N,I;
'PROCEDURE' Q;
'BEGIN'
'ARRAY'
A,
D[1 : 1, 1 : N],
E[0 : 0];
'PROCEDURE' P(X, L);
'LABEL'
L;
'INTEGER''PROCEDURE'
X;
'COMMENT' (F1,G1): 'VALUE' F1: 'REAL' F1,G1;
B : 'FOR' I := 1 'STEP' 1 'UNTIL' N,
I + 1 'DO'
C : 'GOTO'
'IF' X(A[1, 1] + I, 0) = 0 'THEN'
==== ercc07/emas-2900/wichtests_wt87.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
I;
'REAL'
X;
I := 1;
'FOR' X := .1 'STEP' X 'UNTIL' 1.0&6 'DO'
I := I + 1;
OUTREAL(99, I)
'END'
==== ercc07/emas-2900/wichtests_wt88.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
A;
'INTEGER''PROCEDURE' F(X, Y);
'VALUE'
X,
Y;
'INTEGER'
X,
Y;
A := F := X + 1;
'INTEGER''PROCEDURE' G(X);
'INTEGER'
X;
X := G := A + 2;
A := 0;
OUTREAL(99, A + F(A, G(A)) / G(A))
'END'
==== ercc07/emas-2900/sup27fsrce_makeopt.txt ====
PARM FREE,OPT,STACK,NOLIST
IMP80 CTOPT+SUP27FSRCE_SUP27FS,SUPZZ,,.OUT
IMP80 CTOPT+SUP27FSRCE_COM33S,COMZZ,,.OUT
IMP80 CTOPT+SUP27FSRCE_PRINT07S,PRINTZZ,,.OUT
IMP80 CTOPT+SUP27FSRCE_OPER35S,OPERZZ,,.OUT
IMP80 CTOPT+SUP27FSRCE_ENTER12S,ENTERZZ,,.OUT
IMP80 CTOPT+SUP27FSRCE_GPC38S,GPCZZ,,.OUT
IMP80 SUP27FSRCE_MINDIAGS,MINDIAGZZ,,.OUT
IMP80 CTOPT+SUP27FSRCE_COMMS49S,COMMSZZ,,.OUT
IMP80 CTOPT+SUP27FSRCE_FAST38S,FASTZZ,,.OUT
IMP80 CTOPT+SUP27FSRCE_TAPE73S,TAPEZZ,,.OUT
PARM MAP
LINK
SUPZZ
COMZZ
PRINTZZ
OPERZZ
ENTERZZ
GPCZZ
MINDIAGZZ
COMMSZZ
==== ercc07/emas-2900/wichtests_wt89.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'REAL'
I,
J;
'ARRAY'
A[1 : 2, 1 : 3];
'REAL' 'PROCEDURE' GPS(I, N, Z, V);
'REAL'
I,
N,
Z,
V;
'BEGIN'
'FOR' I := 1 'STEP' 1 'UNTIL' N 'DO'
Z := V;
GPS := 1
'END';
OUTREAL(99, GPS(J, 3.0, I, GPS(I, 2.0, A[I, J], I + J)));
'FOR' I := 1 'STEP' 1 'UNTIL' 2 'DO'
'FOR' J := 1 'STEP' 1 'UNTIL' 3 'DO'
==== ercc07/emas-2900/wichtests_wt90.txt ====
'BEGIN'
'COMMENT' LIBRARY5;
'REAL'
R;
'BOOLEAN'
B;
'INTEGER''PROCEDURE' F(X);
'REAL'
X;
F := 0;
'INTEGER'
I,
N,
S;
'INTEGER''PROCEDURE' G(Y);
'BOOLEAN'
Y;
G :=
'IF' Y 'THEN'
2
'ELSE'
==== ercc07/emas-2900/wichtests_wt91.txt ====
'BEGIN'
'COMMENT' ET COMMENT;
'COMMENT' LIBRARY 1;
'REAL'
C;
'ARRAY'
D[ - 0 : + 1, 0&0 : 1.0];
'INTEGER''PROCEDURE' R(C);
'REAL'
C;
R :=
'IF' 'TRUE' 'THEN'
C
'ELSE'
R(0);
D[0, 0] := C := C := 1;
'COMMENT' PROGRAM MODIFIED TO AVOID USE BEFORE DECLARATION;
'BEGIN'
'INTEGER''ARRAY'
H,
A[1 : C+D[0,1-(R(+1))]],
==== ercc07/emas-2900/wichtests_wt92.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
N;
'INTEGER''PROCEDURE' P(Q, R);
'INTEGER''PROCEDURE' Q;
'COMMENT' (R):'INTEGER''PROCEDURE' R;
'INTEGER''PROCEDURE' R;
'BEGIN'
'INTEGER'
B;
B := 3 * Q(R);
P := B
'END';
'INTEGER''PROCEDURE' A(F);
'INTEGER''PROCEDURE'
F;
A := 2 * F;
'INTEGER''PROCEDURE' B;
'BEGIN'
N := N - 1;
==== ercc07/emas-2900/nrsrce_sdisc02s.txt ====
%OWNLONGINTEGER VSN=X'5344495343205631'; ! M'SDISC V1'
! DRIVING DISCS VIA DCU WRITTEN BY PDS JAN 79
!
%RECORDFORMAT PARMF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6)
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 18D ONWARDS *
! Alterations from above-mentioned record format, for the S-series, are
! as follows:
! GPCTABSIZE -> DCUTABSIZE
! GPCA -> DCUA
! SMACS -> SCUS
! GPCCONFA -> DCUCONFA
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,DCUTABSIZE,DCUA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,KLOKCORRECT,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,PROCMON,DQADDR, %C
SACPORT,OCPPORT,ITINT,CONTYPEA,DCUCONFA,FPCCONFA,SFCCONFA, %C
BLKADDR,DPTADDR,SCUS,TRANS,%LONGINTEGER KMON, %C
%INTEGER SPDRQ,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,SP0,SP1,SP2,SP3, %C
==== ercc07/emas-2900/drsimpcmds.txt ====
%externalintegermapspec Comreg%alias "S#COMREG"(%integer N)
%externalroutinespec compile%alias "S#COMPILE"(%string(255) s, %string(31) entry,
%integername flag)
%externalstringfnspec failuremessage %alias"s#failuremessage" (%integer n)
%externalroutine orionimp %alias "ORIONIMP"
%integer flag
%string(255) s
s=""
compile(s,"ICL(CEZORIONIMP",flag)
printstring(failuremessage(flag)) %and %stop %unless flag=0
%end
%externalroutine DRSIMP %alias "DRSIMP"
%integer flag
%string(32) File
compile(file,"ICL9CEZDRSIMP",flag)
printstring( failuremessage(flag)) %and %stop %unless flag=0
%return %unless comreg(24)=0 %or comreg(24)=8
%end
%externalroutine PERQ3IMP%alias "PERQ3IMP"
%integer flag
%string(32) File
==== ercc07/emas-2900/wichtests_wt93.txt ====
'BEGIN'
'COMMENT' LIBRARY 3;
'REAL' 'PROCEDURE' A(K, X1, X2, X3, X4, X5);
'VALUE'
K;
'INTEGER'
K;
'REAL'
X1,
X2,
X3,
X4,
X5;
'BEGIN'
'REAL' 'PROCEDURE' B;
'BEGIN'
K := K - 1;
B := A := A(K, B, X1, X2, X3, X4)
'END';
'IF' K <= 0 'THEN'
A := X4 + X5
==== ercc07/emas-2900/sup26gsrce_sup26gs.txt ====
!
! TO MAKE S SERIES SUPERVISOR REQUIRES:-
! 1) CHANGE SSERIES=NO TO SSERIES=YES IN CTOPTIONS FILE
! 2) REPLACE COMF BY S SERIES COM IN ERCC08.COMSF
!
!
! THESE CONST INTEGERS DEFINE SIZES AND LAYOUT OF IMPORTANT TABLES
! THEY HAVE TO BE HERE TO BE GLOBAL TO ALL ROUTINES INCLUDING IO ONES
!
%CONSTINTEGER LSTLEN=192; ! LOCAL SEGMENT TABLE LENGTH
%CONSTLONGINTEGER LCACR=1; ! ACR OF LOCAL CONTROLLER
%CONSTINTEGER DIRCSEG=10; ! SEG NO OF DIRECTOR COMMS SEG
%CONSTINTEGER DIRCSEGOFFSET=0; ! FOR ALIGNMENT IF NEEDED
%CONSTINTEGER DIRCSEGAD=DIRCSEG<<18; ! VIRTUAL ADDRESS OF DIR COM SEG
%CONSTINTEGER DIRCSEGL=2048+255+LSTLEN; ! SIZE OF SMAE
! MADE UP OF 2049 FOR CBT
! LSTLEN FOR SST
! 48+64 FOR 2 BITS OF SYTEMCALL TABLE
! 32+48 FOR DIROUTP&SIGOUT
%CONSTINTEGER LSTACKLEN=3; ! LOCAL CONT. STACK ELEN
==== ercc07/emas-2900/fast41t.txt ====
!*
!* Communications record format - extant from CHOPSUPE 22A onwards *
!*
%RECORDFORMAT COMF(%INTEGER OCPTYPE,SLIPL,SBLKS,SEPGS,NDISCS,DLVNADDR, %C
(%INTEGER GPCTABSIZE,GPCA %OR %INTEGER DCUTABSIZE,DCUA), %C
%INTEGER SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,TOJDAY,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,SERVAAD, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0,%INTEGER ITINT,CONTYPEA, %C
(%INTEGER GPCCONFA %OR %INTEGER DCUCONFA), %C
%INTEGER FPCCONFA,SFCCONFA,BLKADDR,RATION, %C
(%INTEGER SMACS %OR %INTEGER SCUS), %C
%INTEGER TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,FEPS, %C
MAXCBT,PERFORMAD,SP1,SP2,SP3,SP4,SP5,SP6, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
HBIT,SLAVEOFF,INHSSR,SDR1,SDR2,SDR3, %C
SDR4,SESR,HOFFBIT,BLOCKZBIT,BLKSHIFT,BLKSIZE,END)
==== ercc07/emas-2900/wichtests_wt94.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
J,
K,
S;
'INTEGER''PROCEDURE' F(N);
'VALUE'
N;
'INTEGER'
N;
'BEGIN'
'INTEGER'
I,
L;
'FOR' I := N,
S 'DIV' 2 'WHILE' S < 16 'OR' S = 28 'DO'
'BEGIN'
S := S + I + N;
L := I
'END';
==== ercc07/emas-2900/impalgs_algolps6ma.txt ====
43
D(NAME)
D(ICONST)
D(CONST)
D(ONAME)
D(COMTEXT))
D(S)
D(ENDTEXT)
D(TEXTTEXT)
D(NAMELIST)
D(HOLE)
D(MARK)
D(ONAMELIST)
D(UPSTCNT)
D(LETTERSTRING)
D(DOWN)
D(UP)
D(SCALARTYPE)
D(NOTENAME)
D(TYPE=A)
D(TYPE=B)
==== ercc07/emas-2900/wichtests_wt95.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'REAL' 'PROCEDURE' G(X);
'REAL'
X;
G := X + 1;
'REAL' 'PROCEDURE' A(H);
'REAL' 'PROCEDURE'
H;
'COMMENT' (H1): 'REAL' H1;
'BEGIN'
'REAL' 'PROCEDURE' LOC(X);
'REAL'
X;
LOC := H(G(X));
A := LOC(0);
'END' A;
'REAL' 'PROCEDURE' B(F, H);
'REAL' 'PROCEDURE'
F;
'COMMENT' (F1): 'REAL' F1;
==== ercc07/emas-2900/wichtests_wt96.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'PROCEDURE' P(F);
'REAL' 'PROCEDURE'
F;
'COMMENT' (F1):'LABEL' F1;
F((M));
B1 :;
'BEGIN'
'REAL' 'PROCEDURE' Q(L);
'LABEL'
L;
'BEGIN'
'GOTO' L;
Q := 0;
OUTREAL(99, 1)
'END';
B2 :;
'BEGIN'
'REAL'
I;
==== ercc07/emas-2900/ibmsup_lcform1s.txt ====
%constinteger LSTLEN=256; ! LOCAL SEGMENT TABLE LENGTH
%constinteger CBTLEN=299; ! LENGTH OF CBT TABLE
%constinteger CONTEXTL=176; ! LENGTH OF AN IBM CONTEXT
%constinteger LCONTN=5; ! NO OF LOCAL CONTEXTS
!
! CONTEXTF A SORT OF SSN+1
%recordformat CONTEXTF(%longinteger PSW,{8}%integerarray GR(0:15),
{72}FR(0:7),{104}CONTROLR(0:15),{168}%longinteger CPUTIMER)
! PARMF FOR PARAMETER PASSING(32 BYTES
%recordformat PARMF((%integer DEST,SRCE %OR %short DSNO,DACT,SSNO,SACT),
(%integer P1,P2,P3,P4,P5,P6 %OR %integerarray P(1:6) %OR %C
%string(6)USER,%byte INCAR,%string(15)INTMESS))
!
! SIGOUTPF FOR PASSING SIGNALS(48 BYTES)
%recordformat SIGOUTPF(%integer DEST,SRCE,P1,P2,P3,P4,P5,P6,TYPE,SSN,SSNAD,SUSP)
!
! CBT THE CLAIMED BLOCK FORMAT
%recordformat CBTF(%integer DA,%short AMTX,%byte LNGTH,TAGS)
! CBT FLAGS DEFINED AS FOLLOWS
%constinteger NEW BLK=X'80'; ! BLOCK HAS BEEN JUST CREATED
%constinteger READONLY=X'40'; ! USERS REQUEST PROTECTION AGAINST WRITES
==== ercc07/emas-2900/wichtests_wt97.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
X,
N,
K;
'REAL' 'PROCEDURE' SIGMA(I, K, L, T);
'VALUE'
L;
'INTEGER'
I,
K,
L;
'REAL'
T;
'BEGIN'
'REAL'
X;
X := 0;
'FOR' I := K 'STEP' 1 'UNTIL' L 'DO'
X := T + X;
==== ercc07/emas-2900/wichtests_wt98.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'REAL' 'PROCEDURE' R(A);
'REAL'
A;
'BEGIN'
'INTEGER''PROCEDURE' P(B, C);
'INTEGER'
B,
C;
P := B + C;
R := P(A + 1, A)
'END' R;
'REAL'
X;
'BEGIN'
'REAL'
Y;
Y := 4;
X := R(R(Y + 1))
'END';
==== ercc07/emas-2900/wichtests_wt99.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'COMMENT' THIS PROGRAM HAS BEEN MODIFIED TO AVOID USE BEFORE DECLARATION
AND ALSO TO REMOVE THE TYPE CHANGES ON ARRAYS TO VALUE;
'INTEGER''ARRAY'
A[16384 : 16385, - 16383 : - 16382];
'INTEGER'
S;
'ARRAY'
B[1 : 2, 0 : 2];
'PROCEDURE' P(A, B, C, D);
'VALUE'
B,
C;
'REAL'
A,
B;
'ARRAY'
C,
D;
'BEGIN'
==== ercc07/emas-2900/docs_edit.txt ====
New Features in EMAS Editor
---------------------------
A new version of the EMAS Editor (invoked by the Command EDIT) will be
introduced in October or when the 2988 hardware problems currently affecting
editors have been resolved. The most important of the new features is that the
Editor will save any editing when the process is closed down during an edit
session. The output will be written into a file E#EHA where it can be inspected
and copied to the required destination. Editing will no longer be lost for
communications breaks or user inactivity. The feature cannot guarantee to save
editing over system failures. Obviously at least one OCP, one disc controller
and the relevant file system disc must be operational before editing can be
saved. A report is left in the RECALL file whenever editing has been saved.
Other commands changed are:
A,M (etc) All text searching commands are now based on case independent text
matching. Thus "M/Fred/" will move to "FRED" or "fred" as well as
"Fred". The previous mode of case dependent matching can be restored
==== ercc07/emas-2900/fast42t.txt ====
!*
!* Communications record format - extant from CHOPSUPE 22A onwards *
!*
%RECORDFORMAT COMF(%INTEGER OCPTYPE,SLIPL,SBLKS,SEPGS,NDISCS,DLVNADDR, %C
(%INTEGER GPCTABSIZE,GPCA %OR %INTEGER DCUTABSIZE,DCUA), %C
%INTEGER SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,TOJDAY,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,SERVAAD, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0,%INTEGER ITINT,CONTYPEA, %C
(%INTEGER GPCCONFA %OR %INTEGER DCUCONFA), %C
%INTEGER FPCCONFA,SFCCONFA,BLKADDR,RATION, %C
(%INTEGER SMACS %OR %INTEGER SCUS), %C
%INTEGER TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,FEPS, %C
MAXCBT,PERFORMAD,SP1,SP2,SP3,SP4,SP5,SP6, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
HBIT,SLAVEOFF,INHSSR,SDR1,SDR2,SDR3, %C
SDR4,SESR,HOFFBIT,BLOCKZBIT,BLKSHIFT,BLKSIZE,END)
==== ercc07/emas-2900/akqtests.txt ====
//JOB (ERCC07,P.STEPHENS,T=240,L=8000)
//ALGOL
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
I;
'REAL'
X;
X := 3.2;
I := - 2;
OUTREAL(99, I^X)
'END'
//RUN
//ALGOL
'BEGIN'
'COMMENT' LIBRARY 99;
'INTEGER'
I,
J;
I := 0;
J := - 2;
==== ercc07/emas-2900/sup26fsrce_com31s.txt ====
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20J ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,TOJDAY,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,DQADDR, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0, %C
%INTEGER ITINT,CONTYPEA,GPCCONFA,FPCCONFA,SFCCONFA, %C
BLKADDR,RATION,SMACS,TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,FEPS,SP1, %C
SP2,SP3,SP4,SP5,SP6,SP7,SP8, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
HBIT,SLAVEOFF,INHSSR,SDR1,SDR2,SDR3, %C
SDR4,SESR,HOFFBIT,S2,S3,S4,END)
! MISC. ROUTINE SPECS
%EXTERNALROUTINESPEC PKMONREC(%STRING(20)TEXT,%RECORDNAME P)
%EXTERNALSTRING(8)%FNSPEC STRHEX(%INTEGER N)
%RECORDFORMAT PARMF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6)
%EXTERNALROUTINESPEC OPMESS2(%INTEGER OP,%STRING(63)TXT)
==== ercc07/emas-2900/sup27isrce_fast40s.txt ====
!* Communications record format - extant from CHOPSUPE 21D onwards *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,SLIPL,SBLKS,SEPGS,NDISCS,DLVNADDR, %C
(%INTEGER GPCTABSIZE,GPCA %OR %INTEGER DCUTABSIZE,DCUA), %C
%INTEGER SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,TOJDAY,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,SERVAAD, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0,%INTEGER ITINT,CONTYPEA, %C
(%INTEGER GPCCONFA %OR %INTEGER DCUCONFA), %C
%INTEGER FPCCONFA,SFCCONFA,BLKADDR,RATION, %C
(%INTEGER SMACS %OR %INTEGER SCUS), %C
%INTEGER TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,FEPS, %C
MAXCBT,PERFORMAD,SP1,SP2,SP3,SP4,SP5,SP6, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
HBIT,SLAVEOFF,INHSSR,SDR1,SDR2,SDR3, %C
SDR4,SESR,HOFFBIT,BLOCKZBIT,BLKSHIFT,BLKSIZE,END)
!-----------------------------------------------------------------------
! PON & POFF ETC. DECLARATIONS
==== ercc07/emas-2900/ibmsup_lcform2s.txt ====
%constinteger LSTLEN=256; ! LOCAL SEGMENT TABLE LENGTH
%constinteger CBTLEN=299; ! LENGTH OF CBT TABLE
%constinteger CONTEXTL=176; ! LENGTH OF AN IBM CONTEXT
%constinteger LCONTN=5; ! NO OF LOCAL CONTEXTS
!
! CONTEXTF A SORT OF SSN+1
%recordformat CONTEXTF(%longinteger PSW,{8}%integerarray GR(0:15),
{72}FR(0:7),{104}CONTROLR(0:15),{168}%longinteger CPUTIMER,
%integer ASYNI,SUSP,%short PECODE,ILC,%integer spare)
! PARMF FOR PARAMETER PASSING(32 BYTES
%recordformat PARMF((%integer DEST,SRCE %OR %short DSNO,DACT,SSNO,SACT),
(%integer P1,P2,P3,P4,P5,P6 %OR %integerarray P(1:6) %OR %C
%string(6)USER,%byte INCAR,%string(15)INTMESS))
!
! SIGOUTPF FOR PASSING SIGNALS(48 BYTES)
%recordformat SIGOUTPF(%integer DEST,SRCE,P1,P2,P3,P4,P5,P6,TYPE,SSN,SSNAD,SUSP)
!
! CBT THE CLAIMED BLOCK FORMAT
%recordformat CBTF(%integer DA,%short AMTX,%byte LNGTH,TAGS)
! CBT FLAGS DEFINED AS FOLLOWS
%constinteger NEW BLK=X'80'; ! BLOCK HAS BEEN JUST CREATED
==== ercc07/emas-2900/sup26is.txt ====
!
! TO MAKE S SERIES SUPERVISOR REQUIRES:-
! 1) CHANGE SSERIES=NO TO SSERIES=YES IN CTOPTIONS FILE
! 2) REPLACE COMF BY S SERIES COM IN ERCC08.COMSF
!
!
! THESE CONST INTEGERS DEFINE SIZES AND LAYOUT OF IMPORTANT TABLES
! THEY HAVE TO BE HERE TO BE GLOBAL TO ALL ROUTINES INCLUDING IO ONES
!
%CONSTINTEGER LSTLEN=192; ! LOCAL SEGMENT TABLE LENGTH
%CONSTINTEGER CBTLEN=255; ! LENGTH OF CBT TABLE
%CONSTLONGINTEGER LCACR=1; ! ACR OF LOCAL CONTROLLER
%CONSTINTEGER DIRCSEG=10; ! SEG NO OF DIRECTOR COMMS SEG
%CONSTINTEGER DIRCSEGOFFSET=0; ! FOR ALIGNMENT IF NEEDED
%CONSTINTEGER DIRCSEGAD=DIRCSEG<<18; ! VIRTUAL ADDRESS OF DIR COM SEG
%CONSTINTEGER DIRCSEGL=8*CBTLEN+255+LSTLEN; ! SIZE OF SAME
! MADE UP OF 2049 FOR CBT
! LSTLEN FOR SST
! 48+64 FOR 2 BITS OF SYTEMCALL TABLE
! 32+48 FOR DIROUTP&SIGOUT
==== ercc07/emas-2900/ibmlink2.txt ====
LINK
IP1Y
IP2Y
IOPTY
IGEN2Y
CSERV01Y
ERCS12.IPUT_IPUTOPTY
ERCC10.IBMRECODEY
ERCS12.XAOPT_OPTPUTY
.END
P0Y
MODIFY P0Y
SATISFY REFS
.ALL
SATISFY DATA
.ALL
SUPPRESS
.ALL
RETAIN
ICL9CEZIBMIMP,PGENERATEOBJECT
SUPPRESS DATA
==== ercc07/emas-2900/ibmlink3.txt ====
LINK
IP1Y
IP22Y
IOPT2Y
IGEN3Y
CSERV01Y
ERCS12.IPUT_IPUTOPTY
ERCC10.IBMRECODEY
ERCS12.XAOPT2_OPTPUTY
.END
P0Y
MODIFY P0Y
SATISFY REFS
.ALL
SATISFY DATA
.ALL
SUPPRESS
.ALL
RETAIN
ICL9CEZIBMIMP,PGENERATEOBJECT
SUPPRESS DATA
==== ercc07/emas-2900/sup27bsrce_comms49s.txt ====
! VERSION OF 13/06/80
! DEC 79: INCLUDE AN OPER ADAPTOR
! HAVE ONLY ONE SERVICE NUMBER, X'37'
! OTHER POSSIBLE CHANGES
! MAKE INITIALISATION CALL OF CC INITIALISE ADAPTORS AS WELL
! MAKE IT POSSIBLE TO DEALLOCATE/ALLOCATE ALL DEVICES
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20A ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,WASKLOKCORRECT,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,DQADDR, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0, %C
%INTEGER ITINT,CONTYPEA,GPCCONFA,FPCCONFA,SFCCONFA, %C
BLKADDR,DPTADDR,SMACS,TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,SP0,SP1, %C
SP2,SP3,SP4,SP5,SP6,SP7,SP8, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
==== ercc07/emas-2900/sup28dsrce_oper37s.txt ====
!*
!* OPER37 - 2nd April 1982 *
!*
!* Communications record format - extant from CHOPSUPE 22A onwards *
!*
%RECORDFORMAT COMF(%INTEGER OCPTYPE,SLIPL,SBLKS,SEPGS,NDISCS,DLVNADDR, %C
(%INTEGER GPCTABSIZE,GPCA %OR %INTEGER DCUTABSIZE,DCUA), %C
%INTEGER SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,TOJDAY,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,SERVAAD, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0,%INTEGER ITINT,CONTYPEA, %C
(%INTEGER GPCCONFA %OR %INTEGER DCUCONFA), %C
%INTEGER FPCCONFA,SFCCONFA,BLKADDR,RATION, %C
(%INTEGER SMACS %OR %INTEGER SCUS), %C
%INTEGER TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,FEPS, %C
MAXCBT,PERFORMAD,SP1,SP2,SP3,SP4,SP5,SP6, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
==== ercc07/emas-2900/alib14s.txt ====
!* MODIFIED 07/06/79
!*
!*
%EXTERNALINTEGER ICL9CEFAC=4
!*
!*
%INTEGERFNSPEC IOCP(%INTEGER I,J)
%ROUTINESPEC SIGNAL(%INTEGER EP,P1,P2,%INTEGERNAME F)
!*
%EXTERNALROUTINESPEC ICL9CENVINIT(%INTEGER I,J,%ROUTINE TIDY PROC)
%EXTERNALROUTINESPEC ICL9CEDIAGOUT(%INTEGER AD,LEN)
%SYSTEMROUTINESPEC SGNL(%INTEGER EP,P1,P2,%INTEGERNAME F)
%SYSTEMINTEGERFNSPEC STRMIO(%INTEGER EP,STREAM,%INTEGERNAME AFD)
%SYSTEMINTEGERMAPSPEC COMREG(%INTEGER N)
%SYSTEMROUTINESPEC SSERR(%INTEGER I)
!*
%OWNINTEGER INFD
%OWNINTEGER INREQFD
%OWNINTEGER OUTFD
%OWNINTEGER OUTREQFD
!*
==== ercc07/emas-2900/impalgs_aprints.txt ====
!NEW ASSEMBLER WRITE ROUTINE ADDED RRM 29.3.78
!**DELSTART
%SYSTEMINTEGERFNSPEC IOCP(%INTEGER EP,PARM)
!**DELEND
%LONGINTEGERFNSPEC LINT(%LONGLONGREAL X)
!*
!*
%SYSTEMROUTINE READ(%INTEGER TYPEBND,ADR)
!***********************************************************************
!* THIS ROUTINE IS THE IMP IMPLICITLY SPECIFIED ROUTINE WITH A *
!* %NAME PARAMETER. TYPEBND AND ADR ARE A 64 BIT DESCRIPTOR *
!* TO THE ACTUAL PARAMETER. THE BND FIELD HAS THE TYPE CODE INIT *
!* (=1 FOR INTEGER =2 FOR REAL). *
!* *
!* THE METHOD USED IS SIMPLE REPEATED MULTIPLICATION USING LONG *
!* REAL VARIABLES. SOME ROUNDING ERRORS ARE INTRODUCED WHICH *
!* COULD BE AVOIDED BY USING PACKED DECIMAL INSTNS WITH NECESSARY*
!* SCALING. *
!***********************************************************************
%INTEGER TYPE,PREC,FLAG,CURSYM; ! FLAG= 0FOR'-',1 FOR '+'
%INTEGER IVALUE,TVALUE,PARTYPE
==== ercc07/emas-2900/sup28asrce_mindiags.txt ====
%EXTERNALSTRINGFNSPEC STRHEX(%INTEGER I)
%SYSTEMROUTINE NDIAG(%INTEGER PCOUNT, LNB, FAULT, INF)
!***********************************************************************
!*_______'MASTER DIAGNOSTIC ROUTINE'. DISCOVERS THE LANGUAGE OF THE *
!*_______FAILED ROUTINE FROM WORD 4 OF THE GLA AND CALLS APPROPRIATE *
!*_______DIAGNOSTIC ROUTINE. THIS IS REPEATED TILL ALL DIAGNOSTICS *
!*_______GIVEN. *
!*_______PCOUNT = PCOUNTER AT FAILURE *
!*_______LNB = LOCAL NAME BASE AT FAILURE *
!*_______FAULT = FAILURE (0=%MONITOR REQUESTED) *
!*_______INF =ANY FURTHER INFORMATION *
!***********************************************************************
PRINTSTRING("
MINIMUM NDIAGS ENTERED
FAULT NO ="); WRITE(FAULT,2)
PRINTSTRING("
PC=X".STRHEX(PCOUNT)."
LNB=X".STRHEX(LNB)."
")
%IF FAULT>0 %THEN %STOP
%END
==== ercc07/emas-2900/perqtrimp_poneb01s.txt ====
!
%CONST %BYTE %INTEGER %ARRAY I TO E TAB(0 : 127) = %C
X'40',X'40',X'40',X'40',X'40',X'40',X'40',X'40',
X'40',X'40',X'15',X'40',X'0C',X'40',X'40',X'40',
X'40',X'40',X'40',X'40',X'40',X'40',X'40',X'40',
X'40',X'40',X'40',X'40',X'40',X'40',X'40',X'40',
X'40',X'4F',X'7F',X'7B',X'5B',X'6C',X'50',X'7D',
X'4D',X'5D',X'5C',X'4E',X'6B',X'60',X'4B',X'61',
X'F0',X'F1',X'F2',X'F3',X'F4',X'F5',X'F6',X'F7',
X'F8',X'F9',X'7A',X'5E',X'4C',X'7E',X'6E',X'6F',
X'7C',X'C1',X'C2',X'C3',X'C4',X'C5',X'C6',X'C7',
X'C8',X'C9',X'D1',X'D2',X'D3',X'D4',X'D5',X'D6',
X'D7',X'D8',X'D9',X'E2',X'E3',X'E4',X'E5',X'E6',
X'E7',X'E8',X'E9',X'4A',X'5F',X'5A',X'6A',X'6D',
X'7C',X'81',X'82',X'83',X'84',X'85',X'86',X'87',
X'88',X'89',X'91',X'92',X'93',X'94',X'95',X'96',
X'97',X'98',X'99',X'A2',X'A3',X'A4',X'A5',X'A6',
X'A7',X'A8',X'A9',X'C0',X'40',X'D0',X'40',X'40'
%CONSTBYTEINTEGERARRAY ONE CASE(0 : 127) = %C
0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,
16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,
==== ercc07/emas-2900/perqtrimp_perqgen01s.txt ====
%INCLUDE "ERCC07.PERQ_OPCODES"
%INCLUDE "ERCC07.TRIPCNSTS"
%INCLUDE "ERCC07.TRIMP_TFORM1S"
%RECORDFORMAT RTDICTF(%HALFINTEGER PS,RPS,LTS,ENTRY,EXIT,
LL,W7,W8,DIAGS,W10,%INTEGER W1112)
%OWNINTEGER CABUF,GLACABUF
%OWNINTEGERNAME CA,GLACA,PPCURR,GLACURR
%OWNBYTEINTEGERARRAYNAME CODE,GLABUF
%EXTRINSICRECORD(CODEPF) CODEP
%EXTRINSICRECORD(WORKAF)WORKA
%EXTRINSICRECORD(PARMF) PARM
%EXTERNALROUTINESPEC FLAGAND FOLD(%RECORD(TRIPF)%ARRAYNAME T)
%SYSTEMINTEGERMAPSPEC COMREG(%INTEGER N)
%DYNAMICROUTINESPEC QCODE(%INTEGER A,B,C,MODE)
%DYNAMICROUTINESPEC QPUT(%INTEGER A,B,C,D)
%EXTERNALROUTINESPEC FAULT(%INTEGER I,J,K)
%ROUTINESPEC CNOP(%INTEGER I,J)
%ROUTINESPEC POP(%INTEGERNAME A,B,C,D)
%ROUTINESPEC PRHEX(%INTEGER VALUE,PLACES)
%CONSTINTEGER CODEBNDRY=X'1FF'; ! INSTRUCTIONS MUST NOT
! CROSS THIS IN ACCENT MODE
==== ercc07/emas-2900/sup26isrce_gpc36s.txt ====
%CONSTSTRING(25) VSN = "GPC36 4TH FEB 81"; ! ************************************************GPC GPC GPC
!
! EMAS 2900 SUPERVISOR NOTE
! No: 5
! Date: 21/05/80
! Author: A.Gibbons
!
!
! %EXTERNAL ROUTINE GPC(%RECORDNAME P)
!
! 1. CONVENTIONS
! The record spec for the parameter is
! %RECORDFORMAT PARMF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6)
! where
! DEST is considered as two half words DSNO and DACT. DSNO
! must be GPC's DSNO
! DACT is set according to the function required.
!
! SRCE is considered as two halfwords SSNO and SACT.
! SSNO is SNO of ORIGINATOR and SACT is DACT for
! the reply.
==== ercc07/emas-2900/sup26gsrce_ndiag07s.txt ====
!*_ DATED 11 NOV 76 1
! ALTERATIONS BY K.YARWOOD ...
! PRINT FL AND NEXT SYMBOL LINES COMMENTED OUT
! PRINTTEXT'S TURNED TO PRINTSTRING'S
! ADDITION FOR LONGINTEGER IN RT PRINT VAR
! HEX EQUIVALENTS FOR INTS,LONGINTS ETC PRINTED
! INF PRINTED IN HEX IN RT ERRMESS
%EXTERNALSTRINGFNSPEC STRHEX(%INTEGER I)
%EXTERNALSTRING(8)%FNSPEC STRINT(%INTEGER I)
%CONSTINTEGER STACKBASE=X'80100000'; ! START OF RESIDENT STACK
! %SYSTEMROUTINESPEC SIGNAL(%INTEGER I, J, K, %INTEGERNAME F)
%ROUTINESPEC PRINTMESS(%INTEGER N)
! %SYSTEMROUTINESPEC TIDY EXIT
!*
%ROUTINESPEC INDIAG(%INTEGER OLDLNB, L, PC, %INTEGERNAME NEWLNB)
! %ROUTINESPEC FDIAG(%INTEGER OLDLNB,PC,%INTEGERNAME NEWLNB)
%ROUTINESPEC ERMESS(%INTEGER N, INF)
! %ROUTINESPEC ICL9CELABELS
==== ercc07/emas-2900/sup27csrce_tape72s.txt ====
! THIS IS IMP80 VERSION OF VERSION 72
!
!**************************************************
!* *
!* TAPE HANDLER FOR 2900 *
!* *
!**************************************************
!!
!***********************************************************************
!* VERSION 72
!* 05-MAY-81:
!* HAIRY PON TO RESET 'RETRY PREAMBLE' WHICH ALLOWS/INHIBITS
!* READ RETRY WHEN NO PREAMBLE DETECTED.
!* MAINLY INTENDED FOR READING DUMP TAPES WITH SUCH.
!* 04-MAY-81:
!* FIX IN LOAD AND LOAD MESSAGE FOR FAULTY DSN.
!* REWINDS AND COMES UP AS LOADED NO LABEL.
!* 01-MAY-81:
!* FIX IN TERMINATE TO CONTINUE RETRIES IF NO PREAMBLE ON LABEL READ
!*
==== ercc07/emas-2900/nrsrce_com29s.txt ====
!
!
! VERSION OF 18/01/80
!
!
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20A ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,WASKLOKCORRECT,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,DQADDR, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0, %C
%INTEGER ITINT,CONTYPEA,GPCCONFA,FPCCONFA,SFCCONFA, %C
BLKADDR,DPTADDR,SMACS,TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,SP0,SP1, %C
SP2,SP3,SP4,SP5,SP6,SP7,SP8, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
HBIT,SLAVEOFF,INHSSR,SDR1,SDR2,SDR3, %C
SDR4,SESR,HOFFBIT,S2,S3,S4,END)
==== ercc07/emas-2900/perqtrimp_timp01s.txt ====
%CONSTSTRING(9) LADATE="4 JAN 83"; ! LAST ALTERED
%CONSTINTEGER NO OF SNS=65
%CONSTINTEGER LRLPT=X'62'
%IF HOST#PERQ %THEN %START
%CONSTINTEGER PTSHIFT=16,FLAGSHIFT=0
%FINISH %ELSE %START
%CONSTINTEGER PTSHIFT=0,FLAGSHIFT=16
%FINISH
!
%CONSTINTEGER MAXLEVELS=31,CONCOP=13
!
%INCLUDE "ERCC07.TRIPCNSTS"
%INCLUDE "ERCC07.TRIMP_TFORM1S"
%CONSTINTEGER SNPT=X'1006'; ! SPECIALNAME PTYPE
%CONSTINTEGER UNASSPAT=X'80808080'
%CONSTINTEGER LABUSEDBIT=X'01000000'
%CONSTINTEGER LABSETBIT=X'02000000'
!
%INTEGER I, K, DUMMYFORMAT, P1SIZE, STARSIZE, ASL, ARSIZE, OLDLINE,
NEXTP, SNUM, RLEVEL, NMAX, PLABEL, LEVEL, PROFAAD, LAST INST,
LINE, BFFLAG, RBASE, N, EXITLAB, CONTLAB, Q, R, FNAME, STMTS,
==== ercc07/emas-2900/sup27fsrce_fast38s.txt ====
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20J ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DLVNADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,TOJDAY,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,DQADDR, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0, %C
%INTEGER ITINT,CONTYPEA,GPCCONFA,FPCCONFA,SFCCONFA, %C
BLKADDR,RATION,SMACS,TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,SP0,SP1, %C
SP2,SP3,SP4,SP5,SP6,SP7,SP8, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
HBIT,SLAVEOFF,INHSSR,SDR1,SDR2,SDR3, %C
SDR4,SESR,HOFFBIT,S2,S3,S4,END)
!-----------------------------------------------------------------------
! PON & POFF ETC. DECLARATIONS
%RECORDFORMAT PARMF(%INTEGER DEST, SRCE, P1, P2, P3, P4, P5, %C
P6)
%CONSTLONGINTEGER NONSLAVED=X'2000000000000000'
==== ercc07/emas-2900/perqtrimp_perqopt01s.txt ====
%INCLUDE "ERCC07.TFORM1S"
%INCLUDE "ERCC07.TRIPCNSTS"
%EXTRINSICRECORD(WORKAF) WORKA
%EXTRINSICRECORD(PARMF) PARM
%CONSTINTEGER YES=1
%CONSTINTEGER NO=0
%EXTERNALROUTINESPEC ABORT
%EXTERNALROUTINESPEC FAULT(%INTEGER N,DATA,IDENT)
%EXTERNALROUTINESPEC PRINT TRIPS(%RECORD(TRIPF) %ARRAYNAME TRIPLES)
%CONSTBYTEINTEGERARRAY WORDS(0:7)=0(3),1,1,2,4,8;
%ROUTINE EXTRACT(%RECORD(RD) %NAME OPND, %INTEGERNAME VAL,
%LONGREALNAME RVAL, %STRINGNAME STRVAL)
!***********************************************************************
!* EXTRACTS A CONTANT OPERAND RETURNING REAL &INT VALUES *
!***********************************************************************
%INTEGER TYPE,PREC,I,AD
TYPE=OPND_PTYPE; PREC=TYPE>>4
TYPE=TYPE&15
%IF TYPE=5 %START
LENGTH(STRVAL)=WORKA_A(OPND_D)
==== ercc07/emas-2900/sup27csrce_enter11s.txt ====
%RECORDFORMAT PARMF(%INTEGER DEST, SRCE, P1, P2, P3, P4, P5, P6)
%RECORDFORMAT SERVAF(%INTEGER P, C)
%EXTRINSICINTEGER INPTR
%EXTRINSICINTEGER OUTPTR
%CONSTINTEGER MASK=X'80FC3FFF'
%EXTERNALINTEGERFNSPEC HANDKEYS
%EXTERNALROUTINESPEC HOOT(%INTEGER NUM)
%EXTERNALINTEGERFNSPEC GPC INIT(%INTEGER CA,PT,MODE)
%EXTERNALINTEGERFNSPEC SAFE IS READ(%INTEGER ISAD,%INTEGERNAME VAL)
%EXTERNALROUTINESPEC GET PSTB(%INTEGERNAME P0, P1)
%EXTERNALROUTINESPEC SUP29
%EXTERNALROUTINESPEC SUPPOFF(%RECORD(SERVAF)%NAME SERV, %C
%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC DISC(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC PDISC(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC GPC(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC SLAVESONOFF(%INTEGER J)
%EXTERNALROUTINESPEC PKMONREC(%STRING(20)TEXT,%RECORD(PARMF)%NAME P)
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20L ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DLVNADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
==== ercc07/emas-2900/docs_pubs.txt ====
P.D.Stephens Selected Publications
"The IMP Language and Compiler", Computer Journal Vol 18,
pp127-130(1975).
(with N.Shelness and H.Whitfield) "EMAS Scheduling and Allocation
Procedures in the resident Supervisor", Presented at I.R.I.A.
Colloque International sur les Aspects Theoriques et Practiques des
Systems d'Expoitation April 74. Chosen as one of the six best
computing papers presented in France during 1974 and reprinted in
Revue Francais d'Automatique, Informatique et Recherche
Operationelle Vol B2, pp29-45(1975).
"ALGOL(E) Language", International Computers Ltd. Technical
Publication No 6855. (1976).
(Editor and co-author) "EMAS2900 Concepts", ERCC (1980).
"The EMAS2900 Operating System", I.U.C.C. Bulletin Vol 2 No 2,
pp85-89 (1980).
==== ercc07/emas-2900/sup27csrce_makeopt.txt ====
PARM FREE,OPT,STACK,NOLIST
IMP80 CTOPT+SUP27CSRCE_SUP27CS,SUPZZ,,.OUT
IMP80 CTOPT+SUP27CSRCE_COM33S,COMZZ,,.OUT
IMP80 CTOPT+SUP27CSRCE_PRINT07S,PRINTZZ,,.OUT
IMP80 CTOPT+SUP27CSRCE_OPER34S,OPERZZ,,.OUT
IMP80 CTOPT+SUP27CSRCE_ENTER11S,ENTERZZ,,.OUT
IMP80 CTOPT+SUP27CSRCE_GPC37S,GPCZZ,,.OUT
IMP80 SUP27CSRCE_MINDIAGS,MINDIAGZZ,,.OUT
IMP80 CTOPT+SUP27CSRCE_COMMS49S,COMMSZZ,,.OUT
IMP80 CTOPT+SUP27CSRCE_FAST36S,FASTZZ,,.OUT
IMP80 CTOPT+SUP27CSRCE_TAPE72S,TAPEZZ,,.OUT
PARM MAP
LINK
SUPZZ
COMZZ
PRINTZZ
OPERZZ
ENTERZZ
GPCZZ
MINDIAGZZ
COMMSZZ
==== ercc07/emas-2900/sup27bsrce_gpc37s.txt ====
%CONSTSTRING (25) VSN="GPC37 26TH MAY 81"
!************************************************GPC GPC GPC
!*
!* EMAS 2900 SUPERVISOR NOTE
!* No: 5
!* Date: 21/05/80
!* Author: A.Gibbons
!*
!*
!* %EXTERNAL ROUTINE GPC(%RECORD(PARMF)%NAME P)
!*
!* 1. CONVENTIONS
!* The record spec for the parameter is
!* %RECORDFORMAT PARMF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6)
!* where
!* DEST is considered as two half words DSNO and DACT. DSNO
!* must be GPC's DSNO
!* DACT is set according to the function required.
!*
!* SRCE is considered as two halfwords SSNO and SACT.
==== ercc07/emas-2900/sup26fsrce_releasen.txt ====
SUPERVISOR RELEASE NOTICE VSN 26fF
_________________________________
This Supervisor incorporates the following changes:-
1) Has minor changes to debug faults in dualling only
SUPERVISOR RELEASE NOTICE VSN 26E
_________________________________
==== ercc07/emas-2900/imp80tests_ct0.txt ====
%BEGIN
%CONSTINTEGER MULTIOCP=0
%INTEGER SEMA
%CONTROL X'1FFFFFFF'
%IF MULTIOCP=0 %THEN SEMA=-1
%CONTROL X'0FFFFFFF'
%ENDOFPROGRAM
==== ercc07/emas-2900/imp80tests_ct1.txt ====
%BEGIN
%INTEGER I,J
%CONSTINTEGER YES=X'80000000'
%CONSTINTEGER SFCFITTED=YES
%CONTROL X'1FFFFFFF'
%IF SFCFITTED=YES %THEN I=I+1 %ELSE %START
J=J**4
I=I+J
%FINISH
%CONTROL X'0FFFFFFF'
%ENDOFPROGRAM
==== ercc07/emas-2900/imp80tests_ct2.txt ====
%BEGIN
S=S." " %WHILE LENGTH(S)<20
%ENDOFPROGRAM
==== ercc07/emas-2900/s4algps.txt ====
37
D(NAME)
D(ICONST)
D(CONST)
D(ONAME)
D(COMTEXT))
D(S)
D(ENDTEXT)
D(TEXTTEXT)
D(NAMELIST)
D(HOLE)
D(MARK)
D(ONAMELIST)
D(UPSTCNT)
D(LETTERSTRING)
D(DOWN)
D(UP)
D(SCALARTYPE)
D(NOTENAME)
D(TYPE=A)
D(TYPE=B)
==== ercc07/emas-2900/imp80tests_ct3.txt ====
%BEGIN
%CONSTINTEGER A
%INTEGER B
%BYTEINTEGERARRAYFORMAT AF(0:X'08000000')
B=A_GARBAGE
%ENDOFPROGRAM
==== ercc07/emas-2900/imp80tests_ct4.txt ====
%EXTERNALROUTINE QUEUES(%STRING(255) S)
%SYSTEMSTRINGFNSPEC SPAR(%INTEGER N)
%CONSTINTEGER STRLEN=256
%STRING(STRLEN)COM
%SYSTEMROUTINESPEC SETPAR(%STRING(225)S)
SETPAR(S)
COM<-SPAR(1)
MESS=COM." ".SPAR(2)
%UNLESS SPAR(2)="" %THEN MESS=MESS.",".SPAR(2)
%END
%ENDOFFILE
==== ercc07/emas-2900/ibmconvert_sibmdump.txt ====
!
!
!
%RECORDFORMAT RR(%INTEGER CONAD,FTYPE,DSTART,DEND)
%EXTERNALROUTINESPEC DEFINE(%STRING(255)PARM)
%SYSTEMROUTINESPEC PSYSMES(%INTEGER ROOT,FLAG)
%SYSTEMROUTINESPEC SETPAR(%STRING(255)PARM)
%SYSTEMSTRINGFNSPEC SPAR(%INTEGER N)
%SYSTEMROUTINESPEC CONNECT(%STRING(31)FILE,%INTEGER MODE,HOLE,PROT,
%RECORD(RR)%NAME FINFO,%INTEGERNAME FLAG)
%SYSTEMROUTINESPEC ETOI(%INTEGER ADR,LNTH)
%SYSTEMROUTINESPEC MOVE(%INTEGER LNTH,FROMAD,TOAD)
!
! OUT HEX
!
%ROUTINE OUTHEX(%INTEGER VAL,WIDTH)
%CONSTBYTEARRAY HX(0:15)='0','1','2','3','4','5','6','7',
'8','9','A','B','C','D','E','F'
%INTEGER I
%FOR I=WIDTH-4,-4,0 %CYCLE
PRINTSYMBOL(HX((VAL>>I)&15))
==== ercc07/emas-2900/imp80tests_ct5.txt ====
%BEGIN
! CHECKS MISPLACED ON EVENTS ARE FAULTED
%INTEGER I
%ROUTINE A
%IF I=1 %START
PRINTSTRING("HELLO")
%FINISH %ELSE %START
%ONEVENT 9 %START
PRINTSTRING("GOODBYE")
%FINISH
%FINISH
%END
I=1
A
%ENDOFPROGRAM
==== ercc07/emas-2900/sup28asrce_oper36s.txt ====
!*
!* OPER36 - 26th March 1982 *
!*
!* Communications record format - extant from CHOPSUPE 22A onwards *
!*
%RECORDFORMAT COMF(%INTEGER OCPTYPE,SLIPL,SBLKS,SEPGS,NDISCS,DLVNADDR, %C
(%INTEGER GPCTABSIZE,GPCA %OR %INTEGER DCUTABSIZE,DCUA), %C
%INTEGER SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,TOJDAY,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,SERVAAD, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0,%INTEGER ITINT,CONTYPEA, %C
(%INTEGER GPCCONFA %OR %INTEGER DCUCONFA), %C
%INTEGER FPCCONFA,SFCCONFA,BLKADDR,RATION, %C
(%INTEGER SMACS %OR %INTEGER SCUS), %C
%INTEGER TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,FEPS, %C
MAXCBT,PERFORMAD,SP1,SP2,SP3,SP4,SP5,SP6, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
==== ercc07/emas-2900/imp80tests_ct6.txt ====
%BEGIN
%RECORDFORMAT F(%INTEGER I,J,K)
%OWNRECORD(F) R=277
WRITE(R_J,10)
%ENDOFPROGRAM
==== ercc07/emas-2900/edit31s.txt ====
! [ START OF EDIT TEXT -
!
!
! **** **** Attend to this: **** ****
! You cannot use any piece of text which starts with X'00' in this
! editor: and if you put it in a file, you get trouble when you try
! M<file>M' or (M<file>)2.
!
!
! **** **** Private copy of IOCP console package: **** ****
! **** **** The same code should appear in ECCE. **** ****
! **** **** It is important to keep this code up **** ****
! **** **** to date. **** ****
!
!
%SYSTEMROUTINESPEC CHANGEFILESIZE( %STRING(31)FILE, %INTEGER NEWSIZE,
%INTEGERNAME FLAG)
%SYSTEMROUTINESPEC UCTRANSLATE( %INTEGER ADDR,L)
%CONSTSTRING(1)SNL="
"
%ROUTINE MOVE( %INTEGER LENGTH,FROM,TO)
==== ercc07/emas-2900/impalgs_ermessprgs.txt ====
%EXTERNALROUTINESPEC DEFINE(%STRING(63)S)
%EXTERNALROUTINE COMPRESSEM(%STRING(63)S)
!***********************************************************************
!* COMPRESSES A FILE OF ERROR MESSAGE INTO TWO CONSTARRAYS AND *
!* GENERATES A ROUTINE TO REGURGITATE THEM IN ENGLISH *
!***********************************************************************
%INTEGER CPSTRM,INSTRM,LPSTRM
%BYTEINTEGERARRAY WORD(0:1000)
%INTEGERARRAY LETT(0:256)
%INTEGER I, J, K, N, NUM, NEXT, NMAX
%STRING(31) FILE1, FILE2, FILE3
%STRING(71)TEMP
%%STRING(71)%FNSPEC MESS(%INTEGER N)
%ROUTINESPEC LIT(%INTEGERNAME P)
%ROUTINESPEC CARDS OUT
%UNLESS S->FILE1.(",").FILE2.(",").FILE3 %THEN %C
PRINTSTRING("PARAMS??") %AND %RETURN
DEFINE("ST49,".FILE1)
INSTRM=49
SELECT INPUT(INSTRM)
DEFINE("ST50,".FILE2)
==== ercc07/emas-2900/sup27csrce_com33s.txt ====
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20J ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,TOJDAY,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,DQADDR, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0, %C
%INTEGER ITINT,CONTYPEA,GPCCONFA,FPCCONFA,SFCCONFA, %C
BLKADDR,RATION,SMACS,TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,FEPS,SP1, %C
SP2,SP3,SP4,SP5,SP6,SP7,SP8, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
HBIT,SLAVEOFF,INHSSR,SDR1,SDR2,SDR3, %C
SDR4,SESR,HOFFBIT,S2,S3,S4,END)
%RECORDFORMAT PARMF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6)
! MISC. ROUTINE SPECS
%EXTERNALROUTINESPEC PKMONREC(%STRING(20)TEXT,%RECORD(PARMF)%NAME P)
%EXTERNALSTRING(8)%FNSPEC STRHEX(%INTEGER N)
%EXTERNALROUTINESPEC OPMESS3(%STRING(63)TXT)
==== ercc07/emas-2900/imp80tests_ct7.txt ====
%BEGIN
%INTEGER I
%RECORDFORMAT F(%BYTE A,B,C,D)
%RECORD(F) R
I=RECORD(1)
RECORD(1)=1
RECORD(3)
I=R_C+R
I=R+R_B
%ENDOFPROGRAM
==== ercc07/emas-2900/imp80tests_ct8.txt ====
%BEGIN
!***********************************************************************
!* HAS SIX UNUSUAL TYPE CHECKING FAULTS *
!***********************************************************************
%INTEGER I,J,K
%STRING(1)S
%REALMAPSPEC FRED(%INTEGER X)
READ SYMBOL(FRED(1))
READSYMBOL(S)
READITEM(I)
K=FRED(0)
%REALMAP FRED(%INTEGER X)
%RESULT==J
%END
%FOR I=FRED(1),1,10 %CYCLE; %REPEAT
%ENDOFPROGRAM
==== ercc07/emas-2900/imp8002s.txt ====
%MAINEP ICL9CEZIMP80
%TRUSTEDPROGRAM
%BEGIN
%CONSTINTEGER RELEASE=1
%CONSTINTEGER YES=1,NO=0
%CONSTINTEGER USE IMP=NO
%CONSTINTEGER VMEB=NO
%CONSTSTRING(9) LADATE="15 Dec 81"; ! LAST ALTERED
%INTEGER I, J, K
! PRODUCED BY OLDPS FROM IMP80PS01 ON 02/07/81
%CONSTBYTEINTEGERARRAY CLETT(0: 481)= 1,
43, 1, 45, 1, 40, 1, 41, 1, 42, 1, 44, 2, 201, 198,
6, 213, 206, 204, 197, 211, 211, 5, 215, 200, 201, 204, 197, 5,
213, 206, 212, 201, 204, 3, 198, 207, 210, 1, 61, 5, 193, 204,
201, 193, 211, 7, 201, 206, 212, 197, 199, 197, 210, 4, 210, 197,
193, 204, 8, 204, 207, 206, 199, 210, 197, 193, 204, 4, 204, 207,
206, 199, 4, 194, 217, 212, 197, 6, 211, 212, 210, 201, 206, 199,
4, 200, 193, 204, 198, 6, 210, 197, 195, 207, 210, 196, 7, 210,
207, 213, 212, 201, 206, 197, 2, 198, 206, 3, 205, 193, 208, 8,
198, 213, 206, 195, 212, 201, 207, 206, 4, 206, 193, 205, 197, 9,
193, 210, 210, 193, 217, 206, 193, 205, 197, 9, 207, 198, 208, 210,
==== ercc07/emas-2900/imp80tests_ct9.txt ====
%BEGIN
%EXTERNALINTEGER FRED
%EXTERNALINTEGERSPEC JIM
%EXTRINSICINTEGERNAME BLOGGS
%EXTERNALINTEGERARRAYFORMATSPEC WRONG(1:10)
%EXTERNALINTEGERARRAYSPEC RIGHT(1:10)
%CONSTINTEGERSPEC RUBBISH=21
%EXTERNALINTEGERNAME KNOT
%ENDOFPROGRAM
==== ercc07/emas-2900/sup26gsrce_oper33s.txt ====
! %CONSTSTRING(15)VSN = "OPER33 08/09/80"; ! ****************************************
%IF (MONLEVEL >> 1) & 1 = YES %START
%EXTRINSICLONGINTEGER KMON
%OWNINTEGER OPMON; ! COPY OF KMON BIT
%CONSTINTEGER KMONNING = YES
%FINISH %ELSE %START
%CONSTINTEGER KMONNING = NO
%FINISH
!
%IF MONLEVEL & 1 = YES %START
%CONSTINTEGER VIDEO UPDATING = YES
%OWNINTEGER OPER FACILITIES
%FINISH %ELSE %START
%CONSTINTEGER VIDEO UPDATING = NO
%FINISH
!
!
!
!%EXTERNALROUTINESPEC DUMPTABLE(%INTEGER X,A,S)
%EXTERNALROUTINESPEC PON(%RECORDNAME P)
%EXTERNALROUTINESPEC PKMONREC(%STRING(20)TXT,%RECORDNAME P)
==== ercc07/emas-2900/itrimp_cserv01s.txt ====
%INCLUDE "ERCC07.TRIMP_HOSTCODES"
%CONSTINTEGER HOST=AMDAHL
%INCLUDE "ERCC07.TRIMP_TFORM1S"
%OWNINTEGERNAME ASL
%OWNRECORD(LISTF)%ARRAYNAME ASLIST
%EXTRINSICRECORD(WORKAF)WORKA
%EXTRINSICRECORD(PARMF)PARM
%EXTERNALROUTINE MOVE BYTES(%INTEGER LENGTH,FBASE,FOFF,TOBASE,TOOFF)
!************************************************************************
!* A MOVE BYTES ROUTINE THAT WILL WORK ON WORD&BYTE ADDRESS M-CS *
!***********************************************************************
%INTEGER I
AGN:
%RETURN %IF LENGTH<=0
%IF HOST=EMAS %START; ! EMAS BYTE ADDRESSES
I=X'18000000'+LENGTH
*LDA_TOBASE; *INCA_TOOFF; *LDTB_I
*LSS_FBASE; *IAD_FOFF; *LUH_I
*MV_%L=%DR
%FINISH
%IF HOST=PERQ %START; ! WORD ADDRESS+BYTE OFFSET
==== ercc07/emas-2900/sup27csrce_fast36s.txt ====
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20J ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DLVNADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,TOJDAY,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,DQADDR, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0, %C
%INTEGER ITINT,CONTYPEA,GPCCONFA,FPCCONFA,SFCCONFA, %C
BLKADDR,RATION,SMACS,TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,SP0,SP1, %C
SP2,SP3,SP4,SP5,SP6,SP7,SP8, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
HBIT,SLAVEOFF,INHSSR,SDR1,SDR2,SDR3, %C
SDR4,SESR,HOFFBIT,S2,S3,S4,END)
!-----------------------------------------------------------------------
! PON & POFF ETC. DECLARATIONS
%RECORDFORMAT PARMF(%INTEGER DEST, SRCE, P1, P2, P3, P4, P5, %C
P6)
%CONSTLONGINTEGER NONSLAVED=X'2000000000000000'
==== ercc07/emas-2900/docs_wilkesnote.txt ====
Protection is related to system structure and can not not be
discussed sensibly out of context. I propose to to use IBM OS360 and
EMAS2900 for examples as I am not sufficiently familiar with VMS.
Early uni-programming operating systems had user and supervisor
co-resident in separate worlds protected by base and limit registers.
This simple approach worked well although it was difficult to locate
user parameters to operating system calls without adddress computation.
IBM elected to put parameters in code after the SVC, an insanitary
method that has cost them dear. These techniques were extended to multi
tasking and then further distorted to handle virtual memory (with the
operating system remaining in real addresses). The price of the IBM
technique of passing parameters to the system increased sharply. The
code was impure and could not be shared; also code pages were made dirty
by writing in the parameters and had to be paged out. Further the
supervisor had to cope with page boundaries within and between
parameters.
Now that systems have become larger and more complex it is
deirable to use virtual addressing within the operating system and the
simple model fails to cope. The IBM-XA manual has pages of description
==== ercc07/emas-2900/edit32s.txt ====
!
%SYSTEMROUTINESPEC CHANGEFILESIZE(%STRING(31) FILE, %INTEGER NEWSIZE,
%INTEGERNAME FLAG)
%SYSTEMROUTINESPEC UCTRANSLATE(%INTEGER ADDR,L)
%CONSTSTRING(1) SNL = "
"
%ROUTINE MOVE(%INTEGER LENGTH,FROM,TO)
*LB_LENGTH
*JAT_14,<L99>
*LDTB_X'18000000'
*LDB_ %B
*LDA_FROM
*CYD_0
*LDA_TO
*MV_ %L= %DR
L99:%END; !OF MOVE
%EXTERNALROUTINESPEC PROMPT(%STRING(15) S)
%EXTERNALSTRINGFNSPEC INTERRUPT
%SYSTEMROUTINESPEC TOJOURNAL(%INTEGER FROM,LEN)
%RECORDFORMAT FRF(%INTEGER CONAD,FILETYPE,DATASTART,DATEND,SIZE,RUP,EEP,MODE,
USERS,ARCH, %STRING(6) TRAN, %STRING(8) DATE,TIME, %INTEGER COUNT,SPARE1,
==== ercc07/emas-2900/sup27fsrce_ndiag07s.txt ====
!*_ DATED 11 NOV 76 1
! ALTERATIONS BY K.YARWOOD ...
! PRINT FL AND NEXT SYMBOL LINES COMMENTED OUT
! PRINTTEXT'S TURNED TO PRINTSTRING'S
! ADDITION FOR LONGINTEGER IN RT PRINT VAR
! HEX EQUIVALENTS FOR INTS,LONGINTS ETC PRINTED
! INF PRINTED IN HEX IN RT ERRMESS
%EXTERNALSTRINGFNSPEC STRHEX(%INTEGER I)
%EXTERNALSTRING(8)%FNSPEC STRINT(%INTEGER I)
%CONSTINTEGER STACKBASE=X'80100000'; ! START OF RESIDENT STACK
! %SYSTEMROUTINESPEC SIGNAL(%INTEGER I, J, K, %INTEGERNAME F)
%ROUTINESPEC PRINTMESS(%INTEGER N)
! %SYSTEMROUTINESPEC TIDY EXIT
!*
%ROUTINESPEC INDIAG(%INTEGER OLDLNB, L, PC, %INTEGERNAME NEWLNB)
! %ROUTINESPEC FDIAG(%INTEGER OLDLNB,PC,%INTEGERNAME NEWLNB)
%ROUTINESPEC ERMESS(%INTEGER N, INF)
! %ROUTINESPEC ICL9CELABELS
==== ercc07/emas-2900/imp8003s.txt ====
%MAINEP ICL9CEZIMP80
%TRUSTEDPROGRAM
%BEGIN
%CONSTINTEGER RELEASE=1
%CONSTINTEGER YES=1,NO=0
%CONSTINTEGER USE IMP=NO
%CONSTINTEGER VMEB=NO
%CONSTSTRING(10) LADATE="28 June 82"; ! LAST ALTERED
%INTEGER I, J, K
! PRODUCED BY OLDPS FROM IMP80PS03 ON 23/06/82
%CONSTBYTEINTEGERARRAY CLETT(0: 442)= 1,
43, 1, 45, 1, 40, 1, 41, 1, 42, 1, 44, 2, 201, 198,
6, 213, 206, 204, 197, 211, 211, 5, 215, 200, 201, 204, 197, 5,
213, 206, 212, 201, 204, 3, 198, 207, 210, 1, 61, 5, 193, 204,
201, 193, 211, 7, 201, 206, 212, 197, 199, 197, 210, 4, 210, 197,
193, 204, 4, 204, 207, 206, 199, 4, 194, 217, 212, 197, 6, 211,
212, 210, 201, 206, 199, 4, 200, 193, 204, 198, 6, 210, 197, 195,
207, 210, 196, 7, 210, 207, 213, 212, 201, 206, 197, 2, 198, 206,
3, 205, 193, 208, 8, 198, 213, 206, 195, 212, 201, 207, 206, 4,
206, 193, 205, 197, 5, 193, 210, 210, 193, 217, 9, 207, 198, 208,
210, 207, 199, 210, 193, 205, 6, 207, 198, 198, 201, 204, 197, 6,
==== ercc07/emas-2900/perqtrimp_makeperqp1.txt ====
PARM NOCHECK
IMP80 TRIMP_PERQPONEAS+TRIMP_PONEB01S,P1Y,L,.OUT
==== ercc07/emas-2900/nrsrce_ndiag06s.txt ====
!*_ DATED 11 NOV 76 1
! ALTERATIONS BY K.YARWOOD ...
! PRINT FL AND NEXT SYMBOL LINES COMMENTED OUT
! PRINTTEXT'S TURNED TO PRINTSTRING'S
! ADDITION FOR LONGINTEGER IN RT PRINT VAR
! HEX EQUIVALENTS FOR INTS,LONGINTS ETC PRINTED
! INF PRINTED IN HEX IN RT ERRMESS
%EXTERNALSTRINGFNSPEC STRHEX(%INTEGER I)
%EXTERNALSTRING(8)%FNSPEC STRINT(%INTEGER I)
%CONSTINTEGER STACKBASE=X'80100000'; ! START OF RESIDENT STACK
! %SYSTEMROUTINESPEC SIGNAL(%INTEGER I, J, K, %INTEGERNAME F)
%ROUTINESPEC PRINTMESS(%INTEGER N)
! %SYSTEMROUTINESPEC TIDY EXIT
!*
%ROUTINESPEC INDIAG(%INTEGER OLDLNB, L, PC, %INTEGERNAME NEWLNB)
! %ROUTINESPEC FDIAG(%INTEGER OLDLNB,PC,%INTEGERNAME NEWLNB)
%ROUTINESPEC ERMESS(%INTEGER N, INF)
! %ROUTINESPEC ICL9CELABELS
==== ercc07/emas-2900/sup27fsrce_gpc38s.txt ====
%CONSTSTRING (25) VSN="GPC38 28th Sept 81"
!************************************************GPC GPC GPC
!*
!* EMAS 2900 SUPERVISOR NOTE
!* No: 5
!* Date: 21/05/80
!* Author: A.Gibbons
!*
!*
!* %EXTERNAL ROUTINE GPC(%RECORD(PARMF)%NAME P)
!*
!* 1. CONVENTIONS
!* The record spec for the parameter is
!* %RECORDFORMAT PARMF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6)
!* where
!* DEST is considered as two half words DSNO and DACT. DSNO
!* must be GPC's DSNO
!* DACT is set according to the function required.
!*
!* SRCE is considered as two halfwords SSNO and SACT.
==== ercc07/emas-2900/magipls.txt ====
*
* THIS PROGRAM READS DOWN A TAPE SUPERVISOR. IT OPERATES IN P3 IDLING
* IN P2 WHEN IN THE WAIT STATE
*
START X'40000'
HEADER DC A(ENDFIL-HEADER)
DC A(PROGRAM-HEADER)
DC A(GLAP-HEADER)
DC A(LINKDA-HEADER)
PROGRAM BALR 7,0
USING *,7
*
* ENTER HERE IN P3 UNINTERUUPTABLE. SET UP SCRATCHPAD AND MASKS
*
LSP 0(16,0),AREA CLEAR P4 REGISTERS
LSP 64(16,0),AREA CLEAR P2 REGISTERS
LSP 96(16,0),AREA CLEAR P1 REGISTERS
LSP 14(1,0),AIDLE SET P4 P-COUNTER
LSP 13(1,0),SUPISR P4ISR
L 1,SUPISR P1ISR
==== ercc07/emas-2900/edit33s.txt ====
!
%SYSTEMROUTINESPEC CHANGEFILESIZE(%STRING(31) FILE, %INTEGER NEWSIZE,
%INTEGERNAME FLAG)
%SYSTEMROUTINESPEC UCTRANSLATE(%INTEGER ADDR,L)
%CONSTSTRING(1) SNL = "
"
%ROUTINE MOVE(%INTEGER LENGTH,FROM,TO)
*LB_LENGTH
*JAT_14,<L99>
*LDTB_X'18000000'
*LDB_ %B
*LDA_FROM
*CYD_0
*LDA_TO
*MV_ %L= %DR
L99:%END; !OF MOVE
%EXTERNALROUTINESPEC PROMPT(%STRING(15) S)
%EXTERNALSTRINGFNSPEC INTERRUPT
%SYSTEMROUTINESPEC TOJOURNAL(%INTEGER FROM,LEN)
%RECORDFORMAT FRF(%INTEGER CONAD,FILETYPE,DATASTART,DATEND,SIZE,RUP,EEP,MODE,
USERS,ARCH, %STRING(6) TRAN, %STRING(8) DATE,TIME, %INTEGER COUNT,SPARE1,
==== ercc07/emas-2900/sup26esrce_makechkd.txt ====
PARM FREE,STACK,NOCHECK,NOLIST
IMP CTOPT+SUP26ESRCE_SUP26ES,SUPZZ,,.OUT
IMP CTOPT+SUP26ESRCE_COM30S,COMZZ,,.OUT
IMP CTOPT+SUP26ESRCE_PRINT05S,PRINTZZ,,.OUT
IMP CTOPT+SUP26ESRCE_OPER33S,OPERZZ,,.OUT
IMP SUP26ESRCE_ENTER05S,ENTERZZ,,.OUT
IMP CTOPT+SUP26ESRCE_GPC33S,GPCZZ,,.OUT
IMP SUP26ESRCE_NDIAG07S,NDIAGZZ,,.OUT
IMP CTOPT+SUP26ESRCE_COMMS46S,COMMSZZ,,.OUT
PARM FREE,OPT,STACK,NOLIST
IMP CTOPT+SUP26ESRCE_FAST28S,FASTZZ,,.OUT
IMP SUP26ESRCE_TAPE67S,TAPEZZ,,.OUT
PARM MAP
LINK
SUPZZ
COMZZ
PRINTZZ
OPERZZ
ENTERZZ
GPCZZ
NDIAGZZ
==== ercc07/emas-2900/imp8004s.txt ====
%MAINEP ICL9CEZIMP80
%TRUSTEDPROGRAM
%BEGIN
%CONSTINTEGER RELEASE=1
%CONSTINTEGER YES=1,NO=0
%CONSTINTEGER USE IMP=NO
%CONSTINTEGER VMEB=NO
%CONSTSTRING(10) LADATE="29 Mar 83"; ! LAST ALTERED
%INTEGER I, J, K
! PRODUCED BY OLDPS FROM IMPALGS_IMP80PS04 ON 19/01/83
%CONSTBYTEINTEGERARRAY CLETT(0: 434)= 1,
43, 1, 45, 1, 40, 1, 41, 1, 42, 1, 44, 2, 201, 198,
6, 213, 206, 204, 197, 211, 211, 5, 215, 200, 201, 204, 197, 5,
213, 206, 212, 201, 204, 3, 198, 207, 210, 1, 61, 5, 193, 204,
201, 193, 211, 7, 201, 206, 212, 197, 199, 197, 210, 4, 210, 197,
193, 204, 4, 204, 207, 206, 199, 4, 194, 217, 212, 197, 6, 211,
212, 210, 201, 206, 199, 4, 200, 193, 204, 198, 6, 210, 197, 195,
207, 210, 196, 7, 210, 207, 213, 212, 201, 206, 197, 2, 198, 206,
3, 205, 193, 208, 8, 198, 213, 206, 195, 212, 201, 207, 206, 4,
206, 193, 205, 197, 5, 193, 210, 210, 193, 217, 9, 207, 198, 208,
210, 207, 199, 210, 193, 205, 6, 207, 198, 198, 201, 204, 197, 6,
==== ercc07/emas-2900/nrsrce_soapopt.txt ====
\SB,EM,\IL,LO,IM=6,\TB,\SE,CL=2,\CR,*
==== ercc07/emas-2900/palgcons.txt ====
%BEGIN
%EXTERNAL %ROUTINE %SPEC ISOCARD(%BYTE %INTEGER %ARRAY %NAME A)
%EXTERNAL %ROUTINE %SPEC CLOSESTREAM(%INTEGER CH)
%INTEGER BF,BR,BI,E,S,K,ELSE,P,L,SWCT,NP,CH
%STRING (70) BL
%STRING (255) R,OUT,FR,TL,EX1,EX2,EX3,EX4,EX5,EX6
%INTEGER %ARRAY EC(1:50),SWSCOPE(1:2,1:20)
%BYTE %INTEGER %ARRAY IN(0:255)
%STRING (20) %ARRAY PARM(1:20,1:3),LIST(1:20),SW(0:30,1:20)
%OWN %STRING (10) %ARRAY OLD(1:16) = '[',']','''POWER''','''/''',
'LN(','ENTIER(','''NE''','''LE''','''GE''',':=','=',
'''LT''','''GT''','''GOTO''','''(''',''')'''
%OWN %STRING (10) %ARRAY NEW(1:16) = '(',')','**','//','LOG(',
'INTPT(',' ~= ',' <= ',' >= ',' = ',' = ',
' < ',' > ','-> ',' '' ',' '' '
%OWN %STRING (10) %ARRAY END(1:3) = '%REPEAT','%FINISH','%END'
%STRING %FN %SPEC ALIGN(%INTEGER LEV)
%STRING %FN %SPEC TIDY(%STRING %NAME R, %INTEGER SP)
%STRING %FN %SPEC PROCEDURE(%STRING %NAME F)
%STRING %FN %SPEC ARRAY(%STRING %NAME F)
==== ercc07/emas-2900/sup26gsrce_print05s.txt ====
%EXTRINSICLONGINTEGER KMON
%ROUTINESPEC PRHEX(%INTEGER H)
%ROUTINESPEC PRINTER(%RECORDNAME P)
%EXTERNALROUTINESPEC PON(%RECORDNAME P)
%EXTERNALROUTINESPEC OPMESS(%STRING (23) MESS)
%SYSTEMROUTINESPEC ITOE(%INTEGER A, L)
%IF MULTIOCP=YES %THEN %START
%EXTERNALROUTINESPEC SEMALOOP(%INTEGERNAME SEMA)
%ROUTINESPEC RESERVE LOG
%ROUTINESPEC RELEASE LOG
%ROUTINESPEC AWAIT LOG ROUTE
%FINISH
%RECORDFORMAT PARMF(%INTEGER DEST, SRCE, P1, P2, P3, P4, P5, %C
P6)
!------------------------------------------------------------------------
%RECORDFORMAT ENTFORM(%INTEGER SER, PTSM, PROPADDR, %C
TICKS SINCE, CAA, GRCB AD, LBA, ALA, STATE, RESP0, %C
RESP1, SENSE1, SENSE2, SENSE3, SENSE4, REPSNO, BASE, %C
ID, DLVN, MNEMONIC, ENTSIZE, PAW, USAW0, URCB AD, %C
SENSDAT AD, LOGMASK, TRTAB AD, UA SIZE, UA AD, %C
==== ercc07/emas-2900/edit34s.txt ====
!
%SYSTEMROUTINESPEC CHANGEFILESIZE(%STRING(31) FILE, %INTEGER NEWSIZE,
%INTEGERNAME FLAG)
%SYSTEMROUTINESPEC UCTRANSLATE(%INTEGER ADDR,L)
%CONSTSTRING(1) SNL = "
"
%ROUTINE MOVE(%INTEGER LENGTH,FROM,TO)
*LB_LENGTH
*JAT_14,<L99>
*LDTB_X'18000000'
*LDB_ %B
*LDA_FROM
*CYD_0
*LDA_TO
*MV_ %L= %DR
L99:%END; !OF MOVE
%EXTERNALROUTINESPEC PROMPT(%STRING(15) S)
%EXTERNALSTRINGFNSPEC INTERRUPT
%SYSTEMROUTINESPEC TOJOURNAL(%INTEGER FROM,LEN)
%RECORDFORMAT FRF(%INTEGER CONAD,FILETYPE,DATASTART,DATEND,SIZE,RUP,EEP,MODE,
USERS,ARCH, %STRING(6) TRAN, %STRING(8) DATE,TIME, %INTEGER COUNT,SPARE1,
==== ercc07/emas-2900/ibmconvert_sibmname.txt ====
%EXTERNALROUTINESPEC UCTRAN(%STRINGNAME STR)
!
! IBM NAME
!
%CONSTSTRING(1) NULL="",HASH="#",AT="@",CODE="^"
%EXTERNALSTRING(8)%FN IBM NAME(%STRING(1) PREFIX,%STRING(31)%NAME NAME)
!
! RETURNS IBM VERSION OF NAME TRUNCATED IF NECESSARY WITH SUPPLIED
! PREFIX.
%INTEGER LNME,CH
%STRING(31) NME
NME = NAME
UCTRAN(NME);! FORCE TO UPPER CASE
LNME = LENGTH(NME)
%IF LNME<8 %THEN NME = NME." "
%IF PREFIX=HASH %START
{FIRST CHAR. ON LOWER CASE}
CH = CHARNO(NME,1)
%IF CH=' ' %THEN CH='#' %ELSE CH=CH+'a'-'A'
NME = TOSTRING(CH).SUBSTRING(NME,2,8)
%FINISH
==== ercc07/emas-2900/sup26fsrce_mindiags.txt ====
%EXTERNALSTRINGFNSPEC STRHEX(%INTEGER I)
%SYSTEMROUTINE NDIAG(%INTEGER PCOUNT, LNB, FAULT, INF)
!***********************************************************************
!*_______'MASTER DIAGNOSTIC ROUTINE'. DISCOVERS THE LANGUAGE OF THE *
!*_______FAILED ROUTINE FROM WORD 4 OF THE GLA AND CALLS APPROPRIATE *
!*_______DIAGNOSTIC ROUTINE. THIS IS REPEATED TILL ALL DIAGNOSTICS *
!*_______GIVEN. *
!*_______PCOUNT = PCOUNTER AT FAILURE *
!*_______LNB = LOCAL NAME BASE AT FAILURE *
!*_______FAULT = FAILURE (0=%MONITOR REQUESTED) *
!*_______INF =ANY FURTHER INFORMATION *
!***********************************************************************
PRINTSTRING("
MINIMUM NDIAGS ENTERED
FAULT NO ="); WRITE(FAULT,2)
PRINTSTRING("
PC=X".STRHEX(PCOUNT)."
LNB=X".STRHEX(LNB)."
")
%END
%ENDOFFILE
==== ercc07/emas-2900/sup28dsrce_samplectopt.txt ====
!
! THIS FILE CONTAINS THE CONST INTEGERS TO CONTROL COMPILE TIME OPTIONS
! IN EMAS2900
! IT IS INTENDED TO BE CONCATENATED ONTO THE FRONT OF SOURCEFILES
! BEFORE COMPILATION
%CONSTINTEGER YES=1
%CONSTINTEGER NO=0
%CONSTINTEGER SSERIES=NO; ! NO=PSERIES, YES=SSERIES
%CONSTINTEGER RECONFIGURE=YES; ! NO TO EXCLUDE DYNAMIC CONFIGURATION
%CONSTINTEGER MULTIOCP=YES; ! YES TO INCLUDE SEMAPHORING
%CONSTINTEGER SFCFITTED=NO; ! NO FOR DISC ONLY SITES
%CONSTINTEGER CPFITTED=NO; ! CARD PUNCH FITTED
%CONSTINTEGER CSU FITTED=NO; ! SWITCH UNIT
%CONSTINTEGER DAP FITTED=YES; ! ARRAY PROCESSOR AVAILABLE
%CONSTINTEGER SNOOZING=YES; ! YES ALLOWS SUSPEND IN STORE
! ADVANTAGEOUS WITH LARGE STORES
%CONSTINTEGER PRODUCTION=NO; ! YES FOR CONTINUING AFTER
! SOFTWARE ERRORS(MOST OF WHICH
! ARE DUE TO HARDWARE!)
%CONSTINTEGER MONLEVEL=7; ! 0=NO MONITORING
==== ercc07/emas-2900/sup26isrce_oldcomms.txt ====
! VERSION OF 13/06/80
! DEC 79: INCLUDE AN OPER ADAPTOR
! HAVE ONLY ONE SERVICE NUMBER, X'37'
! OTHER POSSIBLE CHANGES
! MAKE INITIALISATION CALL OF CC INITIALISE ADAPTORS AS WELL
! MAKE IT POSSIBLE TO DEALLOCATE/ALLOCATE ALL DEVICES
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20A ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,WASKLOKCORRECT,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,DQADDR, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0, %C
%INTEGER ITINT,CONTYPEA,GPCCONFA,FPCCONFA,SFCCONFA, %C
BLKADDR,DPTADDR,SMACS,TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,SP0,SP1, %C
SP2,SP3,SP4,SP5,SP6,SP7,SP8, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
==== ercc07/emas-2900/sup26hsrce_tape69s.txt ====
!
!**************************************************
!* *
!* TAPE HANDLER FOR 2900 *
!* *
!**************************************************
!!
!! EXTERNAL ROUTINE REFERENCES
!!
%EXTERNALSTRINGFNSPEC HTOS(%INTEGER VALUE, PLACES)
%EXTERNALROUTINESPEC OPMESS(%STRING (23) S)
%EXTERNALROUTINESPEC PON(%RECORDNAME P)
%SYSTEMROUTINESPEC ETOI(%INTEGER A, L)
%SYSTEMROUTINESPEC MOVE(%INTEGER L, FROMAD, TOAD)
%EXTERNALROUTINESPEC PRHEX(%INTEGER N)
%EXTERNALROUTINESPEC DUMP TABLE(%INTEGER TABNO, START, L)
%EXTRINSICLONGINTEGER PARMDES
%EXTERNALINTEGERFNSPEC NEWPPCELL
%EXTERNALROUTINESPEC RETURNPPCELL(%INTEGER CELL)
%IF MULTIOCP=YES %START
==== ercc07/emas-2900/sup28dsrce_sup28ds.txt ====
!
! To make S series supervisor requires:-
! 1) Change SSERIES=NO to SSERIES=YES in ctoptions file
!
!
! THESE CONST INTEGERS DEFINE SIZES AND LAYOUT OF IMPORTANT TABLES
! THEY HAVE TO BE HERE TO BE GLOBAL TO ALL ROUTINES INCLUDING IO ONES
!
%CONSTINTEGER LSTLEN=192; ! LOCAL SEGMENT TABLE LENGTH
%CONSTINTEGER CBTLEN=299; ! LENGTH OF CBT TABLE
%CONSTLONGINTEGER LCACR=1; ! ACR OF LOCAL CONTROLLER
%CONSTINTEGER DIRCSEG=10; ! SEG NO OF DIRECTOR COMMS SEG
%CONSTINTEGER DIRCSEGOFFSET=0; ! FOR ALIGNMENT IF NEEDED
%CONSTINTEGER DIRCSEGAD=DIRCSEG<<18; ! VIRTUAL ADDRESS OF DIR COM SEG
%CONSTINTEGER DIRCSEGL=8*CBTLEN+255+2*LSTLEN; ! SIZE OF SAME
! MADE UP OF 2049 FOR CBT
! 2*LSTLEN FOR SST
! 48+64 FOR 2 BITS OF SYTEMCALL TABLE
! 32+48 FOR DIROUTP&SIGOUT
%CONSTINTEGER LSTACKLEN=3; ! LOCAL CONT. STACK ELEN
==== ercc07/emas-2900/edit35s.txt ====
%CONSTINTEGER EMAS=10,IBMXA=12
%CONSTINTEGER HOST=IBMXA
%CONSTSTRING(1) SNL = "
"
%RECORDFORMAT FRF(%INTEGER CONAD,FILETYPE,DATASTART,DATEND,SIZE,RUP,EEP,MODE,
USERS,ARCH, %STRING(6) TRAN, %STRING(8) DATE,TIME, %INTEGER COUNT,SPARE1,
SPARE2)
%RECORDFORMAT RF(%INTEGER CONAD,FILETYPE,DATASTART,DATAEND)
!
%IF HOST=IBMXA %START
%CONSTSTRING(1)USEP=":"
!
%EXTERNALROUTINESPEC CHANGEFILESIZE%ALIAS"S#CHANGEFILESIZE"( %c
%STRINGname FILE, %INTEGERname NEWSIZE, FLAG)
%EXTERNALROUTINESPEC UCTRANSLATE %ALIAS "S#UCTRANSold"(%INTEGER ADDR,L)
%EXTERNALSTRING(255)%FNSPEC UCSTRING(%STRING(255)S)
%EXTERNALROUTINESPEC MOVE%ALIAS "S#MOVE"(%INTEGER LENGTH,FROM,TO)
%EXTERNALROUTINESPEC PROMPT(%STRING(15) S)
%EXTERNALSTRINGFNSPEC INTERRUPT
%EXTERNALROUTINESPEC TOJOURNAL %ALIAS "S#TOJOURNAL"(%INTEGER FROM,LEN)
%EXTERNALROUTINESPEC FINFO %ALIAS "S#FINFO"(%STRING(255) FILE, %INTEGER MODE,
==== ercc07/emas-2900/ibm_sys4impps.txt ====
25
D(NAME)
D(ICONST)
D(CONST)
D(CONSTLIST)
D(N)
D(S)
D(TEXT)
D(TEXTTEXT)
D(NAMELIST)
D(HOLE)
D(MARK)
D(UCRR)
D(UCRX)
D(UCRS)
D(UCSI)
D(UCSHIFT)
D(UCSS)
D(UCPD)
D(UCSPEC)
D(UCINM)
==== ercc07/emas-2900/sup27isrce_oper35s.txt ====
!*
!* OPER35 - 7th December 1981 *
!*
%CONSTINTEGER SDIAGS=NO; ! YES for cyclic CC trace
%IF (MONLEVEL >> 1) & 1 = YES %START
%EXTRINSICLONGINTEGER KMON
%OWNINTEGER OPMON; ! COPY OF KMON BIT
%CONSTINTEGER KMONNING = YES
%FINISH %ELSE %START
%CONSTINTEGER KMONNING = NO
%FINISH
!
%IF MONLEVEL & 1 = YES %START
%CONSTINTEGER VIDEO UPDATING = YES
%OWNINTEGER OPER FACILITIES
%FINISH %ELSE %START
%CONSTINTEGER VIDEO UPDATING = NO
%FINISH
!
!
!
==== ercc07/emas-2900/sup26fsrce_comms46s.txt ====
! VERSION OF 13/06/80
! DEC 79: INCLUDE AN OPER ADAPTOR
! HAVE ONLY ONE SERVICE NUMBER, X'37'
! OTHER POSSIBLE CHANGES
! MAKE INITIALISATION CALL OF CC INITIALISE ADAPTORS AS WELL
! MAKE IT POSSIBLE TO DEALLOCATE/ALLOCATE ALL DEVICES
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20A ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,WASKLOKCORRECT,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,DQADDR, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0, %C
%INTEGER ITINT,CONTYPEA,GPCCONFA,FPCCONFA,SFCCONFA, %C
BLKADDR,DPTADDR,SMACS,TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,SP0,SP1, %C
SP2,SP3,SP4,SP5,SP6,SP7,SP8, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
==== ercc07/emas-2900/perq_link.txt ====
LINK
PERQYY
PERQCSUPY
PASSONEY
.END
PY
MODIFY PY
SATISFY REFS
.ALL
SATISFY DATA
.ALL
RENAME
ICL9CEZPERQIMP,S#PERQIMP
.END
SUPPRESS
.ALL
RETAIN
S#PERQIMP
SUPPRESS DATA
.ALL
CLOSE
==== ercc07/emas-2900/sqrt.txt ====
%SYSTEMREALFN SQRT(%REAL ARG)
%INTEGER I,J
%REAL Y,OLD
%REALARRAY A(0:15)
! %IF ARG<0.0 %THEN MLIBERR(50) %AND ARG=-ARG
%IF ARG<0.0 %THEN PRINTSTRING("SQRT ARG NEG
") %AND %RESULT=-1
%IF ARG=0 %THEN %RESULT=0.0
%CYCLE I=0,1,15
Y=ARG/2**I
%IF Y<1 %THEN ->OUT
%REPEAT
OUT: %IF Y>1 %THEN I=17 %AND Y=Y/4 %ELSE I=I+1 %AND Y=Y/2
%IF Y>0.34375 %THEN A(0)=Y/2 +0.4368 %ELSE A(0)=Y/2+0.381
%CYCLE J=0,1,14
OLD=A(J)
A(J+1)=(OLD+Y/OLD)/2
%IF MOD(A(J+1)-OLD)<0.000000000000005 %THEN %EXIT
%REPEAT
%RESULT=A(J+1)*2**(I/2)
%END
==== ercc07/emas-2900/wichtests_otest.txt ====
PARM OPT,FREE,QUOTES
ALGOL WICHTESTS_WT1,Y,.OUT
ALGOL WICHTESTS_WT2,Y,.OUT
RUN Y
ALGOL WICHTESTS_WT3,Y,.OUT
ALGOL WICHTESTS_WT4,Y,.OUT
ALGOL WICHTESTS_WT5,Y,.OUT
ALGOL WICHTESTS_WT6,Y,.OUT
ALGOL WICHTESTS_WT7,Y,.OUT
RUN Y
ALGOL WICHTESTS_WT8,Y,.OUT
ALGOL WICHTESTS_WT9,Y,.OUT
RUN Y
ALGOL WICHTESTS_WT10,Y,.OUT
RUN Y
ALGOL WICHTESTS_WT11,Y,.OUT
ALGOL WICHTESTS_WT12,Y,.OUT
ALGOL WICHTESTS_WT13,Y,.OUT
ALGOL WICHTESTS_WT14,Y,.OUT
ALGOL WICHTESTS_WT15,Y,.OUT
ALGOL WICHTESTS_WT16,Y,.OUT
==== ercc07/emas-2900/sup26gsrce_enter07s.txt ====
%EXTRINSICINTEGER INPTR
%EXTRINSICINTEGER OUTPTR
%CONSTINTEGER MASK=X'80FC3FFF'
%EXTERNALINTEGERFNSPEC HANDKEYS
%EXTERNALROUTINESPEC HOOT(%INTEGER NUM)
%EXTERNALROUTINESPEC GET PSTB(%INTEGERNAME P0, P1)
%EXTERNALROUTINESPEC SUP29
%EXTERNALROUTINESPEC SUPPOFF(%RECORDNAME SERV,P)
%EXTERNALROUTINESPEC DISC(%RECORDNAME P)
%EXTERNALROUTINESPEC PDISC(%RECORDNAME P)
%EXTERNALROUTINESPEC GPC(%RECORDNAME P)
%EXTERNALROUTINESPEC SLAVESONOFF(%INTEGER J)
%EXTERNALROUTINESPEC PKMONREC(%STRING(20)TEXT,%RECORDNAME P)
%SYSTEMROUTINESPEC MOVE(%INTEGER L, FROMAD, TOAD)
%RECORDFORMAT PARMF(%INTEGER DEST, SRCE, P1, P2, P3, P4, P5, %C
P6)
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20L ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DLVNADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,TOJDAY,DATE0,DATE1,DATE2, %C
==== ercc07/emas-2900/perq_csups.txt ====
%INCLUDE "ERCC07.PERQ_OPCODES"
%EXTRINSICBYTEINTEGERARRAY CODE(0:268)
%EXTRINSICBYTEINTEGERARRAY GLABUF(0:268)
%EXTRINSICINTEGER CA,CABUF,GLACA,GLACABUF
%EXTRINSICINTEGER PPCURR
%INCLUDE "ERCC07.PERQ_FORMATS"
%EXTRINSICRECORD(WORKAF)WORKA
%EXTRINSICRECORD(PARMF) PARM
%DYNAMICROUTINESPEC QCODE(%INTEGER A,B,C,MODE)
%DYNAMICROUTINESPEC QPUT(%INTEGER A,B,C,D)
%ROUTINESPEC FAULT(%INTEGER I,J,K)
!
!***********************************************************************
!* IMP CODE PLANTING ROUTINES *
!* CODE AND GLAP ARE PUT INTO THE BUFFERS 'CODE,GLABUF(0:268)' *
!* BY A NUMBER OF TRIVIAL ROUTINES.QPUT IS CALLED TO ADD THE *
!* BUFFER TO THE OUTPUT FILE. THE BUFFERS ARE BASICALLY 0:255 *
!* WITH A 12-BYTE MARGIN TO MINIMISE THE NUMBER OF TESTS FOR *
!* THE BUFFER FULL CONDITION *
!* *
!* PPCURR(GLACURR) IS THE BUFFER POINTER *
==== ercc07/emas-2900/perq_jumps.txt ====
%INTEGERFN ENTER LAB(%INTEGER LAB,FLAGS)
!***********************************************************************
!* ENTER A NEW LABEL ON THE LABEL LIST FOR THE CURRENT LEVEL *
!* 2**0 OF FLAGS = 1 CONDITIONAL ENTRY *
!* 2**1 OF FLAGS = 1 UPDATE ENVIRONMENT *
!* 2**2 OF FLAGS = 1 REPLACE ENV =0 MERGE ENV *
!* THE LABEL LIST *
!* S1 = USE BITS<<8 ! LABEL ADDR *
!* S2 = UNFILLED JUMPS LIST *
!* S3 = LAB NO - RESET TO FFFF WHEN USED FOR INTERNAL LABELS *
!* RESULT = 1 LABEL ENTERED *
!* RESULT = 0 CONDITIONAL LABEL NOT REQUIRED *
!***********************************************************************
%INTEGER CELL,AT,JUMPHEAD,DIS,BBASE,OLDCELL,WORK
%RECORD(LISTF)%NAME LCELL
%INTEGERNAME LHEAD
CELL=LABEL(LEVEL); OLDCELL=0
%WHILE CELL>0 %CYCLE
LCELL==ASLIST(CELL)
%EXIT %IF LCELL_S3=LAB
==== ercc07/emas-2900/sup28asrce_comms53s.txt ====
! R.D.EAGER CONTAINS CODE FOR OUTPUT ACCOUNTS IN COMM CONTROL,
! LP ADAPTOR AND CP ADAPTOR
! VERSION OF 13/06/80
! DEC 79: INCLUDE AN OPER ADAPTOR
! HAVE ONLY ONE SERVICE NUMBER, X'37'
! OTHER POSSIBLE CHANGES
! MAKE INITIALISATION CALL OF CC INITIALISE ADAPTORS AS WELL
! MAKE IT POSSIBLE TO DEALLOCATE/ALLOCATE ALL DEVICES
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20A ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,WASKLOKCORRECT,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,DQADDR, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0, %C
%INTEGER ITINT,CONTYPEA,GPCCONFA,FPCCONFA,SFCCONFA, %C
BLKADDR,DPTADDR,SMACS,TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,SP0,SP1, %C
==== ercc07/emas-2900/perq_newp2.txt ====
PARM NOCHECK,NOLIST
IMP80 PERQ_IMP01S,PERQY,,.OUT
OBEY PERQ_LINK
==== ercc07/emas-2900/impalgs_alermess.txt ====
2 'LABEL' 'INVALID OR' 'SET' 'TWICE';
4 'SWITCH' 'NAME' 'NOT' 'SET';
5 'LABEL' 'NAME' 'IN' 'EXPRSSN';
7 'NAME' 'SET' 'TWICE';
8 'INVALID' 'NAME' 'IN' 'VALUE LIST';
9 'INVALID' 'PARAMETER' 'SPECIFICATION' ;
10 'PARAMETER' 'INCORRECTLY' 'SPECIFIED';
11 'LABEL' 'NOT' 'SET';
12 'LABEL' 'NOT' 'ACCESSIBLE';
14 'TOO' 'MANY' 'ENDS';
15 'MISSING' 'ENDS';
16 'NAME' 'NOT' 'SET';
17 'NOT' 'PROCEDURE' 'NAME';
18 'WRONG' 'NO' 'OF' 'SUBSCRIPTS';
19 'WRONG' 'NO' 'OF' 'PARAMETERS';
20 'PARAMETRIC' 'ARRAY' 'WRONG' 'DIMENSION';
21 'PARAMETRIC' 'PROCEDURE' 'NOT' 'VALID';
22 'ACTUAL' 'PARAMETER' 'NOT' 'PERMITTED';
23 'PROCEDURE' 'NAME' 'IN' 'EXPRSSN';
24 'VARIABLE' 'IN' 'BOOLEAN' 'EXPRSSN';
25 'FOR' 'VARIABLE' 'INCORRECT'
==== ercc07/emas-2900/ibmsup_page0.txt ====
!
! The first 512 bytes of page 0 are hardware defined. (See Princs of Op)
! EMAS defines some addition locations for convenience
!
! X200 (512) Soft crash psw Set by G-C.
! X208 (520) System Program error psw.
! Set by G-C as the New PE psw and
! copied to here by L-C when its sets
! the User PE psw to 104.
! X210 (528) The local cpu timer PSW. Set
! by L-C and used by G-C when clock interrupt
! is due to cpu timer exceeded.
! X218 (536) Local controller initial activate
! PSW. Set by G-C
! X220 (544) Local Contoller exit PSW. Set by G-C
! for fast return.
! X228 (552) (Copy of) Restart PSW set ny ENTER
! X230 (560) Top of store marker for dump program
! X238-X27f (568-639) unused
! X280-X2bf (640-703) G-C context(16 regs) actaully only
==== ercc07/emas-2900/ctopt72.txt ====
!
! This file contains the const integers to control compile time options
! in EMAS2900
! it is intended to be concatenated onto the front of sourcefiles
! before compilation
%CONSTINTEGER YES=1
%CONSTINTEGER NO=0
%CONSTINTEGER SSERIES=NO; ! NO = "P" series, YES = "S" series
%CONSTINTEGER MULTIOCP=YES; ! YES to include semaphoring
%CONSTINTEGER RECONFIGURE=YES; ! allow OCP/SAC/SMAC reconfiguration
%CONSTINTEGER SFCFITTED=NO; ! NO for disc only sites
%CONSTINTEGER CPFITTED=NO; ! card punch fitted
%CONSTINTEGER CSU FITTED=YES; ! switch unit
%CONSTINTEGER DAP FITTED=YES; ! array processor available
%CONSTINTEGER SNOOZING=YES; ! YES allows suspend in store
! advantageous with large stores
%CONSTINTEGER PRODUCTION=NO; ! YES for continuing after
! software errors(most of which
! are due to hardware!)
%CONSTINTEGER MONLEVEL=7; ! 0= no monitoring
==== ercc07/emas-2900/sup28asrce_sup28as.txt ====
!
! To make S series supervisor requires:-
! 1) Change SSERIES=NO to SSERIES=YES in ctoptions file
!
!
! THESE CONST INTEGERS DEFINE SIZES AND LAYOUT OF IMPORTANT TABLES
! THEY HAVE TO BE HERE TO BE GLOBAL TO ALL ROUTINES INCLUDING IO ONES
!
%CONSTINTEGER LSTLEN=192; ! LOCAL SEGMENT TABLE LENGTH
%CONSTINTEGER CBTLEN=299; ! LENGTH OF CBT TABLE
%CONSTLONGINTEGER LCACR=1; ! ACR OF LOCAL CONTROLLER
%CONSTINTEGER DIRCSEG=10; ! SEG NO OF DIRECTOR COMMS SEG
%CONSTINTEGER DIRCSEGOFFSET=0; ! FOR ALIGNMENT IF NEEDED
%CONSTINTEGER DIRCSEGAD=DIRCSEG<<18; ! VIRTUAL ADDRESS OF DIR COM SEG
%CONSTINTEGER DIRCSEGL=8*CBTLEN+255+2*LSTLEN; ! SIZE OF SAME
! MADE UP OF 2049 FOR CBT
! 2*LSTLEN FOR SST
! 48+64 FOR 2 BITS OF SYTEMCALL TABLE
! 32+48 FOR DIROUTP&SIGOUT
%CONSTINTEGER LSTACKLEN=3; ! LOCAL CONT. STACK ELEN
==== ercc07/emas-2900/tform1s.txt ====
!
! RECORDFORMAT FOR ALL THE OPTION AND FLAG VARAIBLES
!
%RECORDFORMAT PARMF(%INTEGER BITS1,BITS2,TTOPUT,
%BYTEINTEGER LET,DYNAMIC,LINE,TRACE,ARR,DBUG,CHK,DIAG,OPT,FREE,
LIST,CPRMODE,COMPILER,SMAP,Y,PROF,INHCODE,DCOMP,FAULTY,X)
%RECORDFORMAT LISTF((%HALFINTEGER PTYPE,(%HALF UIOJ %OR %BYTE XB,FLAG),
%HALF SNDISP,ACC,SLINK,KFORM %OR %INTEGER S1,S2,S3),%INTEGER LINK)
%RECORDFORMAT LEVELF(%INTEGER RBASE, DIAGINF, RAL, FLAG, L, M, NMDECS, ONWORD, ONINF,
LABEL, JROUND, UNATT FORMATS, PSIZE, ENTRYAD,
NAMES,%HALFINTEGER SNMAX,SN,RESSIZE,SPARE,%INTEGERARRAY AVL WSP(0:4))
%RECORDFORMAT WORKAF(%INTEGER NNAMES,CCSIZE,DSIZE,ASL MAX,ASL CUR BTM,
CONST PTR,CONST BTM,SP0,WKFILEAD,WKFILEK,FILE ADDR,RELEASE,
AASL0,CONST LIMIT,RTCOUNT,ARTOP,AMAINEP,DICTBASE,SP2,
%INTEGERNAME LINE,%STRING(9)LADATE,
%BYTEINTEGERARRAYNAME CC,A,LETT,
%INTEGERARRAYNAME WORD,TAGS,CTABLE,
%RECORD(LEVELF)%ARRAYNAME LEVELINF,
%INTEGERARRAY PLABS,PLINK(0:31))
%RECORDFORMAT RTDICTF(%HALFINTEGER PS,RPS,LTS,ENTRY,EXIT,
LL,W7,W8,DIAGS,W10,%INTEGER W1112)
==== ercc07/emas-2900/imp80tests_blurb.txt ====
IMP80TESTS is a file of test programs with an obeyfile "TESTCOMP"
to execute them. Subfiles "CT??" are compile time tests whereas
subfile "RT??" should compile and execute with checks and opt.
Exact functions of each test are:-
CT0 : Tests simple conditional compilation
CT1 :Tests more complex conditional compilation
CT2 :Tests faulting of undeclared string
CT3 :Tests faulting of excessive constant bounds in array
CT4 :Tests further faults in string declarations and FNs
CT5 :Tests faulting of misplaced %ON statement
CT6 :Tests faulting of invalid %OWNRECORD initialising
CT7 :Tests error messages after invalid use of map RECORD
CT8 :Has four unusual type inconsistencies
CT9 :Has 4 errors in external&entrinsic declarations
CT10 : Checks that danging %elses are faulted.
CT11: CHECKS ON RECORDFORMATSPECS.
CT12: Checks that foreign assemblers are ignored when conditionally compiled
CT13: Check a great variety of pathological continuations. Should compile.
RT0 :Checks %OWN initialising with const NL. Should print 10 twice.
==== ercc07/emas-2900/ibmsup_pts.txt ====
%routine PAGETURN(%record (PARMF) %name P)
!***********************************************************************
!* FOR ALL ACTS : P_P1=AMTX<<16!EPX *
!* ACTIVITY 1 : "PAGE IN" REQUEST FROM LOCAL CONTROLLER *
!* : P_P2=RETURNABLE IDENTIFIER *
!* : P_P3 THE KEY REQUIRED (NOT SET FOR SHRD PAGES) *
!* ACTIVITY 2 : "PAGE OUT" REQUEST FROM LOCAL CONTROLLER *
!* : P_P2=FLAGS (BEING THE BOTTOM 4 BITS OF STOREFLAG*
!* ACTIVITY 3 : REPLY FROM "EPAGE" WITH EPAGE P_P2=STOREX *
!* ACTIVITY 4 : ZERO "NEW" DISC EPAGE *
!* ACTIVITY 5 : REPLY FROM DISC/WRITE *
!* ACTIVITY 6 : (WAS REPLY) FROM DRUM/READ ON FAILURE ONLY *
!* ACTIVITY 7 : (WAS REPLY FROM DRUM/WRITE) *
!* ACTIVITY 8 : REPLY FROM ZERO DISC EPAGE *
!* *
!* STORE FLAGS SIGNIFY AS FOLLOWS : *
!* BIT 15: PAGE HAS HAD A SINGLE BIT ERROR *
!* BIT 7 : DISC TRANSFER IN PROGRESS(1)/NOT IN PROGRESS(0) *
!* BIT 6 : DISC INPUT(0)/OUTPUT(1) *
!* BIT 5 : NOT USED *
!* BIT 4 : NOT USED *
==== ercc07/emas-2900/dpinit.txt ====
[6;2x[1y
[6{
==== ercc07/emas-2900/sup26esrce_tape67s.txt ====
!
! THIS FILE CONTAINS THE CONST INTEGERS TO CONTROL COMPILE TIME OPTIONS
! IN EMAS2900
! IT IS INTENDED TO BE CONCATENATED ONTO THE FRONT OF SOURCEFILES
! BEFORE COMPILATION
%CONSTINTEGER YES=1
%CONSTINTEGER NO=0
%CONSTINTEGER SSERIES=NO; ! NO=PSERIES, YES=SSERIES
%CONSTINTEGER MULTIOCP=NO; ! YES TO INCLUDE SEMAPHORING
%CONSTINTEGER SFCFITTED=YES; ! NO FOR DISC ONLY SITES
%CONSTINTEGER CPFITTED=YES; ! CARD PUNCH FITTED
%CONSTINTEGER SNOOZING=NO; ! YES ALLOWS SUSPEND IN STORE
! ADVANTAGEOUS WITH LARGE STORES
%CONSTINTEGER MONLEVEL=7; ! 0=NO MONITORING
! 2**0 SET=VIDEO UPDATING
! 2**1 SET=KMONNING
! 2**2 SET=SUP TIMING MEASUREMENTS
! 2**3 SET=CAT TABLE TRANSITIONS
! 2**4 SET= STROBING
! 2**8 SET=EVENT HARVESTING
==== ercc07/emas-2900/sup25jsrce_comms38s.txt ====
!*
!*
!*
!* TO MAKE A P SERIES COMMS CONTROLLER.
!* 1) ENABLE ALL LINES COMMENTED !*P.
!* 2) LEAVE ALL REFERENCES TO GPC.
!*
!*
!*
!*
!* TO MAKE AN S SERIES COMMS CONTROLLER.
!* 1) ENABLE ALL LINES COMMENTED !*S.
!* 2) CHANGE ALL OCCURENCES OF GPC TO DCU.
!*
!*
!*
!* TO COMPILE IN THE STATEMENTS STARTING WITH "?" COMPILE THE FILE
!* PRODUCED WITH THE PARM OPTION "PARMX".
!*
!*
==== ercc07/emas-2900/sup26hsrce_fast32s.txt ====
%EXTERNALSTRING (15) %FNSPEC STRINT(%INTEGER N)
%EXTERNALSTRING (8) %FNSPEC STRHEX(%INTEGER N)
%EXTERNALSTRING(8) %FNSPEC HTOS(%INTEGER VALUE,PLACES)
%EXTERNALROUTINESPEC PKMONREC(%STRING(20)TEXT,%RECORDNAME P)
%EXTERNALROUTINESPEC OPMESS(%STRING (63) S)
%ROUTINESPEC MONITOR(%STRING (63) S)
%EXTERNALROUTINESPEC DUMP TABLE(%INTEGER T, A, L)
%ROUTINESPEC ELAPSED INT(%RECORDNAME P)
%SYSTEMROUTINESPEC MOVE(%INTEGER L,F,T)
%SYSTEMROUTINESPEC ETOI(%INTEGER A, L)
%ROUTINESPEC PDISC(%RECORDNAME P)
%EXTERNALROUTINESPEC HOOT(%INTEGER NHOOTS)
%EXTERNALROUTINESPEC WAIT(%INTEGER MSECS)
%EXTERNALINTEGERFNSPEC HANDKEYS
%EXTERNALINTEGERFNSPEC REALISE(%INTEGER PUBVIRTADDR)
%EXTERNALROUTINESPEC SLAVESONOFF(%INTEGER ONOFF)
%IF MULTIOCP=YES %THEN %START
%EXTERNALROUTINESPEC RESERVE LOG
%EXTERNALROUTINESPEC RELEASE LOG
%FINISH
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20J ONWARDS *
==== ercc07/emas-2900/algolbm_alg2.txt ====
//JOB(ERCC07,STEPHENS,T=200,L=10000)
//OPTIONS(QUOTES,OPT)
//ALGOL
'COMMENT'
***************
* *
* ALGG002 *
* *
***************
;
'BEGIN' 'INTEGER' I,J,K,NEQS,NVBS;
'REAL' SUM;
'COMMENT' INPUT/OUTPUT PROCEDURES;
'COMMENT' END OF INPUT/OUTPUT PROCEDURES;
'PROCEDURE' INVERT(N,A,B);
'VALUE' N;
'INTEGER' N;
'ARRAY' A,B;
'BEGIN' 'COMMENT' INVERTS MATRIX A, N BY N, AND PUTS
==== ercc07/emas-2900/pete2.txt ====
%external %string %fn %spec fromstr(%string (255) s, %integer i, j)
%external %routine loadtest
%integer j
%string (25) test
%string (127) s, a, b, bb
%if s->a.(fromstr(test, 1, j)).b %and a="" %start
%finish
%end
%endoffile
==== ercc07/emas-2900/algolbm_alg3.txt ====
//JOB(ERCC07,STEPHENS,T=200,L=10000)
//OPTIONS(QUOTES,OPT)
//ALGOL
'COMMENT'
***************
* *
* ALGG003 *
* *
***************
;
'BEGIN'
'INTEGER' DV1,DIN,DV2,MT1,I,J,NAT;
'REAL' PI,ANGLE,A;
'ARRAY' CELL[1:6],NN,MM[1:3,1:3],TITLE[1:200],
INDEX[1:20];
'BOOLEAN' 'ARRAY' KEY[1:20];
'COMMENT' INPUT/OUTPUT PROCEDURES;
'REAL''PROCEDURE' READ;
'EXTERNAL'READ1900;
==== ercc07/emas-2900/sup26hsrce_documentn.txt ====
This partitioned file contains all the source required to make up a
version 26H Supervisor, plus the version of the IMP compiler and FIX
utility used at Edinburgh to do so. This compiler is necessary as some
advanced language features are required which are not available in the
service compiler.
Note that the OPTION NOBRACKETS must be in force in the process being
used for the method described to work.
Two "OBEY" subfiles are available: MAKECHKD and MAKEOPT. They each
construct a test Supervisor which is left in file SUP26xT, where x is
'C' or 'O' respectively.
Making a Supervisor thus consists of the following:
a) INSERT the IMP compiler and FIX utility into the current directory
(and then log off and log on again if IMP was previously used in
==== ercc07/emas-2900/algolbm_alg5.txt ====
//JOB(ERCC07,STEPHENS,T=200,L=10000)
//OPTIONS(QUOTES,OPT)
//ALGOL
'COMMENT'
***************
* *
* ALGG005 *
* *
***************
;
'BEGIN' 'COMMENT' PROGRAM FOR MASS AND ABUNDANCE
DATA OF POLYISOTOPIC IONS;
'COMMENT' INPUT/OUTPUT PROCEDURES;
'PROCEDURE' CRDTXT;
'BEGIN' 'INTEGER' I,J;
TRY AGAIN:
INSYMBOL(98,'('*')',I);
'IF' I=1 'THEN'
'BEGIN'
==== ercc07/emas-2900/sup28asrce_documentn.txt ====
This partitioned file contains all the source required to make up
an EMAS2900 Supervisor, plus the version of the IMP80 compiler and FIX
utility used at Edinburgh to do so. This compiler is necessary as some
advanced language features are required which are not available in the
service compiler.
Note that the OPTION NOBRACKETS must be in force in the process being
used for the method described to work.
Two "OBEY" subfiles are available: MAKECHKD and MAKEOPT. They each
construct a test Supervisor which is left in file SUP28xT, where x is
'C' or 'O' respectively.
Making a Supervisor thus consists of the following:
a) INSERT the IMP80 compiler and FIX utility into the current directory
(and then log off and log on again if IMP80 was previously used in
==== ercc07/emas-2900/sup26esrce_fast28s.txt ====
%EXTERNALSTRING (15) %FNSPEC STRINT(%INTEGER N)
%EXTERNALSTRING (8) %FNSPEC STRHEX(%INTEGER N)
%EXTERNALSTRING(8) %FNSPEC HTOS(%INTEGER VALUE,PLACES)
%EXTERNALROUTINESPEC PKMONREC(%STRING(20)TEXT,%RECORDNAME P)
%EXTERNALROUTINESPEC OPMESS(%STRING (63) S)
%EXTERNALROUTINESPEC MONITOR(%STRING (63) S)
%EXTERNALROUTINESPEC DUMP TABLE(%INTEGER T, A, L)
%ROUTINESPEC ELAPSED INT(%RECORDNAME P)
%SYSTEMROUTINESPEC MOVE(%INTEGER L,F,T)
%SYSTEMROUTINESPEC ETOI(%INTEGER A, L)
%ROUTINESPEC PDISC(%RECORDNAME P)
%EXTERNALROUTINESPEC HOOT(%INTEGER NHOOTS)
%EXTERNALROUTINESPEC WAIT(%INTEGER MSECS)
%EXTERNALINTEGERFNSPEC HANDKEYS
%EXTERNALINTEGERFNSPEC REALISE(%INTEGER PUBVIRTADDR)
%EXTERNALROUTINESPEC SLAVESONOFF(%INTEGER ONOFF)
%IF MULTIOCP=YES %THEN %START
%EXTERNALROUTINESPEC RESERVE LOG
%EXTERNALROUTINESPEC RELEASE LOG
%FINISH
==== ercc07/emas-2900/cbit.txt ====
%recordformat cattabf(%byteinteger priority,eplim,rtlim,morep,moret, %c
lessp,sp0,susp,rqts1,rqts2,strobei,sp2)
%constinteger maxcat=27
%ownbyteintegerarray catdata(0:12*maxcat+11)= %c
{ PR,EP,RT, OP,OT,LK, C,SUSP, Q1,Q2 STR,# }
{START}
1, 0, 0, 0, 0, 0,'F', 0, 1,1, 0,0, { DUMMY}
1,90, 8, 8, 7, 0,'E', 6, 1,1, 0,1, {START EXEC}
1,90, 8, 18,17, 0,'F',15, 1,1, 0,2, {START INTERACTIVE}
1,90, 8, 26,25, 0,'B',24, 1,1, 0,3, {START BACKGROUND}
{EXECS}
1,50, 4, 6, 5, 0,'E', 4, 1,1, 0,4,
2,50,48, 7, 5, 0,'E', 4, 1,2, 8,5,
1,100, 4, 8, 7, 4,'E', 6, 1,1, 0,6,
2,100,48, 9, 7, 5,'E', 6, 1,2, 8,7,
2,150,4, 8, 9, 6,'E', 8, 1,1, 0,8,
2,150,48, 9, 9, 7,'E', 8, 1,2, 8,9,
{FGRND}
1,32, 4, 12,11, 0,'F',10, 1,1, 0,10,
==== ercc07/emas-2900/nrsrce_enter04s.txt ====
%EXTRINSICINTEGER INPTR
%EXTRINSICINTEGER OUTPTR
%CONSTINTEGER MASK=X'80FC3FFF'
%EXTERNALINTEGERFNSPEC HANDKEYS
%EXTERNALROUTINESPEC HOOT(%INTEGER NUM)
%EXTERNALROUTINESPEC GET PSTB(%INTEGERNAME P0, P1)
%EXTERNALROUTINESPEC SUP29
%EXTERNALROUTINESPEC GPC(%RECORDNAME P)
%EXTERNALROUTINESPEC SLAVESONOFF(%INTEGER J)
%EXTERNALROUTINESPEC PTREC(%RECORDNAME P)
%SYSTEMROUTINESPEC MOVE(%INTEGER L, FROMAD, TOAD)
%RECORDFORMAT PARMF(%INTEGER DEST, SRCE, P1, P2, P3, P4, P5, %C
P6)
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20A ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,WASKLOKCORRECT,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,DQADDR, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0, %C
==== ercc07/emas-2900/oldlcs.txt ====
%list
%routine LOCAL CONTROL
! CLAIMED BLOCK TABLES
%record (CBTF) %name CBT
! CONSOLE IO & ACCOUNTS RECORDS
%integername SEMAHELD; ! DIRECTOR HOLDING SEMA WORD
! ACTIVE SEGMENT TABLES
%constinteger MAXAS=31
%integerarray AS(0:7,0:MAXAS)
%byteintegerarray ASEG(0:MAXAS)
%integerarray ASPTVAD(0:MAXAS)
%integerarray OLDASWIPS(0:MAXRESIDENCES)
%constinteger TOPBIT=X'80000000'
!-----------------------------------------------------------------------
! LOCAL SEGMENT INFORMATION
%byteintegerarray TST(0:LSTLEN-1); ! TERTIARY SEGMENT TABLE POINT TO AS
%constinteger SMALL SEQUENTIAL=8; !USED TO DECIDE TO RECAP OR NOT
%integerfnspec DXR(%longlongrealname T, %longlongreal B)
%integerfnspec CHECK RES(%integer WRITE,LEN,AD)
%integerfnspec CHECKDA(%integer DA)
%routinespec PAGEOUT(%integer VSSEG,VSEPAGE, %record (CBTF) %name CBT)
==== ercc07/emas-2900/sup28dsrce_com36s.txt ====
!
!* Communications record format - extant from CHOPSUPE 22A onwards *
!*
%RECORDFORMAT COMF(%INTEGER OCPTYPE,SLIPL,SBLKS,SEPGS,NDISCS,DLVNADDR, %C
(%INTEGER GPCTABSIZE,GPCA %OR %INTEGER DCUTABSIZE,DCUA), %C
%INTEGER SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,TOJDAY,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,SERVAAD, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0,%INTEGER ITINT,CONTYPEA, %C
(%INTEGER GPCCONFA %OR %INTEGER DCUCONFA), %C
%INTEGER FPCCONFA,SFCCONFA,BLKADDR,RATION, %C
(%INTEGER SMACS %OR %INTEGER SCUS), %C
%INTEGER TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,FEPS, %C
MAXCBT,PERFORMAD,SP1,SP2,SP3,SP4,SP5,SP6, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
HBIT,SLAVEOFF,INHSSR,SDR1,SDR2,SDR3, %C
SDR4,SESR,HOFFBIT,BLOCKZBIT,BLKSHIFT,BLKSIZE,END)
==== ercc07/emas-2900/enter13s.txt ====
%RECORDFORMAT PARMF(%INTEGER DEST, SRCE, P1, P2, P3, P4, P5, P6)
%RECORDFORMAT SERVAF(%INTEGER P, C)
%EXTRINSICINTEGER INPTR
%EXTRINSICINTEGER OUTPTR
%CONSTINTEGER MASK=X'80FC3FFF'
%EXTERNALINTEGERFNSPEC HANDKEYS
%EXTERNALROUTINESPEC HOOT(%INTEGER NUM)
%EXTERNALINTEGERFNSPEC GPC INIT(%INTEGER CA,PT,MODE)
%EXTERNALINTEGERFNSPEC SAFE IS READ(%INTEGER ISAD,%INTEGERNAME VAL)
%EXTERNALROUTINESPEC GET PSTB(%INTEGERNAME P0, P1)
%EXTERNALROUTINESPEC SUP29
%EXTERNALROUTINESPEC SUPPOFF(%RECORD(SERVAF)%NAME SERV, %C
%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC DISC(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC PDISC(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC GPC(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC SLAVESONOFF(%INTEGER J)
%EXTERNALROUTINESPEC PKMONREC(%STRING(20)TEXT,%RECORD(PARMF)%NAME P)
!* Communications record format - extant from CHOPSUPE 21D onwards *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,SLIPL,SBLKS,SEPGS,NDISCS,DLVNADDR, %C
(%INTEGER GPCTABSIZE,GPCA %OR %INTEGER DCUTABSIZE,DCUA), %C
==== ercc07/emas-2900/perq_newp2l.txt ====
PARM NOCHECK
IMP80 PERQ_IMP01S,PERQY,.LP,.OUT
OBEY PERQ_LINK
PARM
PERQIMP ERCS06.QINDIAG,.NULL,.LP
==== ercc07/emas-2900/sup28dsrce_releasen.txt ====
Supervisor 28D Release Notice
This Supervisor has the following changes
1) Correction to clear code to stop files being reconnected
before all the clears have been completed and to prevent
clears overwriting valid data.
2) Incorporation of conditional "DAP" code
==== ercc07/emas-2900/ibmconvert_sgenobj.txt ====
%RECORDFORMAT ESD DICTF( %C
%RECORD(ESD DICTF)%NAME NEXT, {POINTS TO NEXT DICT. ENTRY}
%STRING(31)%NAME NAME, {POINTS TO FULL NAME IN INPUT FILE}
%STRING(8) IBMNAME, {HOLDS IBM NAME}
%INTEGER OFFSET, {WITHIN COALESCED AREA OR AREA 6}
ESDOFFSET, {WITHIN GENERATED SD}
LNTH, {LENGTH OF ASSOC. OBJECT}
TXT, {ADDRESS OF FIRST TXT RECORD OF SD}
ESDID, {GIVES ID OF CSECT FOR LD}
{OR ESD ID FOR SD OR ER OR CM}
{FOR PROC ER }
{+0 IS ENTRY PT}
{+1 IS HEAD CODE}
{+2 IS HEAD GLA}
%BYTE ESDTYPE, {ESD ENTRY TYPE}
OWNTYPE, {OWN TYPE PROC/DATA/COMMON}
MAIN) {#0 => MAIN ENTRY PT}
%CONSTBYTEINTEGER SD=0,LD=1,ER=2,CM=5;
%CONSTBYTEINTEGER PROC=0,DATA=1,COMMON=2;
%CONSTSTRING(1) NULL="",HASH="#",AT="@",CODE="^"
!
==== ercc07/emas-2900/sup27isrce_sup27is.txt ====
!
! TO MAKE S SERIES SUPERVISOR REQUIRES:-
! 1) CHANGE SSERIES=NO TO SSERIES=YES IN CTOPTIONS FILE
! 2) REPLACE COMF BY S SERIES COM IN ERCC08.COMSF
!
!
! THESE CONST INTEGERS DEFINE SIZES AND LAYOUT OF IMPORTANT TABLES
! THEY HAVE TO BE HERE TO BE GLOBAL TO ALL ROUTINES INCLUDING IO ONES
!
%CONSTINTEGER LSTLEN=192; ! LOCAL SEGMENT TABLE LENGTH
%CONSTINTEGER CBTLEN=299; ! LENGTH OF CBT TABLE
%CONSTLONGINTEGER LCACR=1; ! ACR OF LOCAL CONTROLLER
%CONSTINTEGER DIRCSEG=10; ! SEG NO OF DIRECTOR COMMS SEG
%CONSTINTEGER DIRCSEGOFFSET=0; ! FOR ALIGNMENT IF NEEDED
%CONSTINTEGER DIRCSEGAD=DIRCSEG<<18; ! VIRTUAL ADDRESS OF DIR COM SEG
%CONSTINTEGER DIRCSEGL=8*CBTLEN+255+2*LSTLEN; ! SIZE OF SAME
! MADE UP OF 2049 FOR CBT
! 2*LSTLEN FOR SST
! 48+64 FOR 2 BITS OF SYTEMCALL TABLE
! 32+48 FOR DIROUTP&SIGOUT
==== ercc07/emas-2900/sup27isrce_samplectopt.txt ====
!
! THIS FILE CONTAINS THE CONST INTEGERS TO CONTROL COMPILE TIME OPTIONS
! IN EMAS2900
! IT IS INTENDED TO BE CONCATENATED ONTO THE FRONT OF SOURCEFILES
! BEFORE COMPILATION
%CONSTINTEGER YES=1
%CONSTINTEGER NO=0
%CONSTINTEGER SSERIES=NO; ! NO=PSERIES, YES=SSERIES
%CONSTINTEGER RECONFIGURE=YES; ! NO TO EXCLUDE DYNAMIC CONFIGURATION
%CONSTINTEGER MULTIOCP=YES; ! YES TO INCLUDE SEMAPHORING
%CONSTINTEGER SFCFITTED=NO; ! NO FOR DISC ONLY SITES
%CONSTINTEGER CPFITTED=NO; ! CARD PUNCH FITTED
%CONSTINTEGER CSU FITTED=NO; ! SWITCH UNIT
%CONSTINTEGER SNOOZING=YES; ! YES ALLOWS SUSPEND IN STORE
! ADVANTAGEOUS WITH LARGE STORES
%CONSTINTEGER PRODUCTION=NO; ! YES FOR CONTINUING AFTER
! SOFTWARE ERRORS(MOST OF WHICH
! ARE DUE TO HARDWARE!)
%CONSTINTEGER MONLEVEL=7; ! 0=NO MONITORING
! 2**0 SET=VIDEO UPDATING
==== ercc07/emas-2900/perq_ps01.txt ====
43
D(NAME)
D(ICONST)
D(CONST)
D(CHXTYPE)
D(N)
D(S)
D(TEXT)
D(BIGHOLE)
D(N255)
D(HOLE)
D(MARK)
D(READLINE?)
D(TEXTTEXT)
D(DUMMYAPP)
D(DOWN)
D(UP)
D(LISTON)
D(LISTOFF)
D(COLON)
D(NOTECONST)
==== ercc07/emas-2900/sup27isrce_makechkd.txt ====
PARM FREE,NOCHECK,NOLIST,STACK
IMP80 CTOPT+SUP27ISRCE_SUP27IS,SUPZZ,,.OUT
IMP80 CTOPT+SUP27ISRCE_COM34S,COMZZ,,.OUT
IMP80 CTOPT+SUP27ISRCE_PRINT07S,PRINTZZ,,.OUT
IMP80 CTOPT+SUP27ISRCE_OPER35S,OPERZZ,,.OUT
IMP80 CTOPT+SUP27ISRCE_ENTER13S,ENTERZZ,,.OUT
PARM FREE,OPT,STACK,NOLIST
IMP80 CTOPT+SUP27ISRCE_GPC39S,GPCZZ,,.OUT
IMP80 SUP27ISRCE_NDIAG07S,NDIAGZZ,,.OUT
IMP80 CTOPT+SUP27ISRCE_COMMS52S,COMMSZZ,,.OUT
IMP80 CTOPT+SUP27ISRCE_FAST40S,FASTZZ,,.OUT
IMP80 CTOPT+SUP27ISRCE_TAPE73S,TAPEZZ,,.OUT
PARM MAP
LINK
SUPZZ
COMZZ
PRINTZZ
OPERZZ
ENTERZZ
GPCZZ
NDIAGZZ
==== ercc07/emas-2900/sup27fsrce_print07s.txt ====
%RECORDFORMAT PARMF(%INTEGER DEST, SRCE, P1, P2, P3, P4, P5, P6)
%EXTRINSICLONGINTEGER KMON
%ROUTINESPEC PRHEX(%INTEGER H)
%ROUTINESPEC PRINTER(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC PON(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC GPC(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC OPMESS(%STRING (23) MESS)
%SYSTEMROUTINESPEC ITOE(%INTEGER A, L)
%IF MULTIOCP=YES %THEN %START
%EXTERNALROUTINESPEC SEMALOOP(%INTEGERNAME SEMA)
%ROUTINESPEC RESERVE LOG
%ROUTINESPEC RELEASE LOG
%ROUTINESPEC AWAIT LOG ROUTE
%FINISH
!------------------------------------------------------------------------
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20L ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DLVNADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,TOJDAY,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,SERVAAD, %C
==== ercc07/emas-2900/sup26hsrce_makeopt.txt ====
PARM FREE,OPT,STACK,NOLIST
IMP CTOPT+SUP26HSRCE_SUP26HS,SUPZZ,,.OUT
IMP CTOPT+SUP26HSRCE_COM32S,COMZZ,,.OUT
IMP CTOPT+SUP26HSRCE_PRINT05S,PRINTZZ,,.OUT
IMP CTOPT+SUP26HSRCE_OPER33S,OPERZZ,,.OUT
IMP CTOPT+SUP26HSRCE_ENTER09S,ENTERZZ,,.OUT
IMP CTOPT+SUP26HSRCE_GPC36S,GPCZZ,,.OUT
IMP SUP26HSRCE_MINDIAGS,MINDIAGZZ,,.OUT
IMP CTOPT+SUP26HSRCE_COMMS48S,COMMSZZ,,.OUT
IMP CTOPT+SUP26HSRCE_FAST32S,FASTZZ,,.OUT
IMP CTOPT+SUP26HSRCE_TAPE69S,TAPEZZ,,.OUT
PARM MAP
LINK
SUPZZ
COMZZ
PRINTZZ
OPERZZ
ENTERZZ
GPCZZ
MINDIAGZZ
COMMSZZ
==== ercc07/emas-2900/perq_oldps.txt ====
%EXTERNALROUTINE OLDPS(%STRING(63) S)
%EXTERNALSTRINGFNSPEC DATE
%INTEGER I, J, K, SS, NBIP
%STRING(31) ST49,ST50,ST51
%STRING(127)HEADER
%EXTERNALROUTINESPEC DEFINE(%STRING(63)S)
%INTEGERARRAY CLETT(0:1000), SYMBOL(1300:3000), CC(0:300)
%INTEGER CNEXT, DNEXT, CNUM, DNUM, ALT, DEF, ASL, NIDFLAG
%INTEGERARRAY KK, PUSE, DWORD(1001:1200), DLETT(0:1000), CWORD(1:200)
%ROUTINESPEC READ STRING(%INTEGER TERMINATOR)
%ROUTINESPEC RECORD(%INTEGERARRAYNAME WORD, LETT, %C
%INTEGERNAME NUM, NEXT)
%ROUTINESPEC LOOK UP(%INTEGERARRAYNAME WORD, LETT, %C
%INTEGER FIRST, LAST, INSERT)
%ROUTINESPEC PDDICT
%ROUTINESPEC PRINT STR(%INTEGERARRAYNAME CC, %INTEGER PTR)
%ROUTINESPEC PCDICT
%UNLESS S->ST49.(",").ST50.(",").ST51 %THEN %C
PRINTSTRING("PARAMS?????") %AND NEWLINE %AND %RETURN
DEFINE("ST49,".ST49)
==== ercc07/emas-2900/sup27fsrce_oper35s.txt ====
!*
!* OPER35 - 1st October 1981 *
!*
%CONSTINTEGER SDIAGS=NO; ! YES for cyclic CC trace
%IF (MONLEVEL >> 1) & 1 = YES %START
%EXTRINSICLONGINTEGER KMON
%OWNINTEGER OPMON; ! COPY OF KMON BIT
%CONSTINTEGER KMONNING = YES
%FINISH %ELSE %START
%CONSTINTEGER KMONNING = NO
%FINISH
!
%IF MONLEVEL & 1 = YES %START
%CONSTINTEGER VIDEO UPDATING = YES
%OWNINTEGER OPER FACILITIES
%FINISH %ELSE %START
%CONSTINTEGER VIDEO UPDATING = NO
%FINISH
!
!
!
==== ercc07/emas-2900/perq_opcodes.txt ====
!
! OPCODES AND CONSTINTEGER FOR PERQ IMP
! P REFS ARE TO PERQ Q-CODE MANAUAL
!
%CONSTINTEGER LDC0=0; ! P21 LOAD WORD CONSTANTS 0-15
%CONSTINTEGER LDCN=22; ! P21 LOAD CONSTANT NIL
%CONSTINTEGER LDCMO=16; ! P21 LOAD CONSTANT -1
%CONSTINTEGER LDCB=17; ! P21 LOAD CONSTANT (SIGNED)BYTE
%CONSTINTEGER LDCW=18; ! P21 LOAD CONSTANT (SIGNED)WORD
%CONSTINTEGER LDL0=109; ! P22 LOAD LOCAL WORD(0-15)
%CONSTINTEGER LDLB=107; ! P22 LOAD LOCAL UNSIGNED BYTE OFFSET
%CONSTINTEGER LDLW=108; ! P22 LOAD LOCAL WORD OFFSET
%CONSTINTEGER LLAB=125; ! P22 LOAD LOCAL ADDRESS UBYTE OFFSET
%CONSTINTEGER LLAW=126; ! P22 LOAD LOCAL ADDRESS WORD OFFSET
%CONSTINTEGER STL0=129; ! P22 STORE LOCAL WORD (0-7 ONLY!)
%CONSTINTEGER STLB=127; ! P22 STORE LOCAL WORD UBYTE OFFSET
%CONSTINTEGER STLW=128; ! P22 STORE LOCAL WORD WORD OFFSET
%CONSTINTEGER LDO0=139; ! P23 SHORT LOAD OWN WORD
%CONSTINTEGER LDOB=137; ! P23 LOAD OWN WORD UBYTE OFFSET
%CONSTINTEGER LDOW=138; ! P23 LOAD OWN WORD WORD OFFSET
==== ercc07/emas-2900/perqtrimp_makeperq.txt ====
PARM NOCHECK
IMP80 TRIMP_PERQPONEAS+TRIMP_PONEB01S,P1Y,L1,.OUT
IMP80 TRIMP_PERQPTWOAS+TIMP01S,P2Y,L2,.OUT
IMP80 TRIMP_PERQOPT01S,POPTY,L3,.OUT
IMP80 TRIMP_PERQGEN01S,PGENY,L4,.OUT
LIST L1+L2+L3+L4,.LP
DESTROY L1,L2,L3,L4
LINK
P1Y
P2Y
POPTY
PGENY
.END
P0Y
MODIFY P0Y
SATISFY REFS
.ALL
SATISFY DATA
.ALL
RENAME
==== ercc07/emas-2900/ibm_iperm97s.txt ====
* TITLE 'IMP PERM FOR SIM2 P.STEPHENS'
* FOR RELEASE 8 BACK COMPATIBLE TO RELEASE 7
* UPDATED TO SEND DIAGNOSTIC OUTPUT TO STREAM 89
* UPDATED TO CALL S#STOP RATHER THAN RETURNING ON REGISTER 9
IMP START
CODE EQU 12
WSP EQU 11
GLA EQU 13
RA EQU 15
DC A(PEND-IMP)
DC A(BASE-IMP)
DC A(PERMGLA-IMP)
DC A(PLOADATA-IMP)
USING BASE,CODE
USING WKSTART,WSP
USING USERGLA,GLA
BASE B CPLRERR
P1 BC 15,RSS
P2 BC 15,NS0
P3 BC 15,PS0
P4 BC 15,W0
==== ercc07/emas-2900/sup28bs.txt ====
!
! To make S series supervisor requires:-
! 1) Change SSERIES=NO to SSERIES=YES in ctoptions file
!
!
! THESE CONST INTEGERS DEFINE SIZES AND LAYOUT OF IMPORTANT TABLES
! THEY HAVE TO BE HERE TO BE GLOBAL TO ALL ROUTINES INCLUDING IO ONES
!
%CONSTINTEGER LSTLEN=192; ! LOCAL SEGMENT TABLE LENGTH
%CONSTINTEGER CBTLEN=299; ! LENGTH OF CBT TABLE
%CONSTLONGINTEGER LCACR=1; ! ACR OF LOCAL CONTROLLER
%CONSTINTEGER DIRCSEG=10; ! SEG NO OF DIRECTOR COMMS SEG
%CONSTINTEGER DIRCSEGOFFSET=0; ! FOR ALIGNMENT IF NEEDED
%CONSTINTEGER DIRCSEGAD=DIRCSEG<<18; ! VIRTUAL ADDRESS OF DIR COM SEG
%CONSTINTEGER DIRCSEGL=8*CBTLEN+255+2*LSTLEN; ! SIZE OF SAME
! MADE UP OF 2049 FOR CBT
! 2*LSTLEN FOR SST
! 48+64 FOR 2 BITS OF SYTEMCALL TABLE
! 32+48 FOR DIROUTP&SIGOUT
%CONSTINTEGER LSTACKLEN=3; ! LOCAL CONT. STACK ELEN
==== ercc07/emas-2900/poneb01s.txt ====
!
%CONST %BYTE %INTEGER %ARRAY I TO E TAB(0 : 127) = %C
X'40',X'40',X'40',X'40',X'40',X'40',X'40',X'40',
X'40',X'40',X'15',X'40',X'0C',X'40',X'40',X'40',
X'40',X'40',X'40',X'40',X'40',X'40',X'40',X'40',
X'40',X'40',X'40',X'40',X'40',X'40',X'40',X'40',
X'40',X'4F',X'7F',X'7B',X'5B',X'6C',X'50',X'7D',
X'4D',X'5D',X'5C',X'4E',X'6B',X'60',X'4B',X'61',
X'F0',X'F1',X'F2',X'F3',X'F4',X'F5',X'F6',X'F7',
X'F8',X'F9',X'7A',X'5E',X'4C',X'7E',X'6E',X'6F',
X'7C',X'C1',X'C2',X'C3',X'C4',X'C5',X'C6',X'C7',
X'C8',X'C9',X'D1',X'D2',X'D3',X'D4',X'D5',X'D6',
X'D7',X'D8',X'D9',X'E2',X'E3',X'E4',X'E5',X'E6',
X'E7',X'E8',X'E9',X'4A',X'5F',X'5A',X'6A',X'6D',
X'7C',X'81',X'82',X'83',X'84',X'85',X'86',X'87',
X'88',X'89',X'91',X'92',X'93',X'94',X'95',X'96',
X'97',X'98',X'99',X'A2',X'A3',X'A4',X'A5',X'A6',
X'A7',X'A8',X'A9',X'C0',X'40',X'D0',X'40',X'40'
%CONSTBYTEINTEGERARRAY ONE CASE(0 : 255) = %C
0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,
16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,
==== ercc07/emas-2900/sup26esrce_ndiag07s.txt ====
!*_ DATED 11 NOV 76 1
! ALTERATIONS BY K.YARWOOD ...
! PRINT FL AND NEXT SYMBOL LINES COMMENTED OUT
! PRINTTEXT'S TURNED TO PRINTSTRING'S
! ADDITION FOR LONGINTEGER IN RT PRINT VAR
! HEX EQUIVALENTS FOR INTS,LONGINTS ETC PRINTED
! INF PRINTED IN HEX IN RT ERRMESS
%EXTERNALSTRINGFNSPEC STRHEX(%INTEGER I)
%EXTERNALSTRING(8)%FNSPEC STRINT(%INTEGER I)
%CONSTINTEGER STACKBASE=X'80100000'; ! START OF RESIDENT STACK
! %SYSTEMROUTINESPEC SIGNAL(%INTEGER I, J, K, %INTEGERNAME F)
%ROUTINESPEC PRINTMESS(%INTEGER N)
! %SYSTEMROUTINESPEC TIDY EXIT
!*
%ROUTINESPEC INDIAG(%INTEGER OLDLNB, L, PC, %INTEGERNAME NEWLNB)
! %ROUTINESPEC FDIAG(%INTEGER OLDLNB,PC,%INTEGERNAME NEWLNB)
%ROUTINESPEC ERMESS(%INTEGER N, INF)
! %ROUTINESPEC ICL9CELABELS
==== ercc07/emas-2900/nrsrce_fast25s.txt ====
%EXTERNALSTRING (15) %FNSPEC STRINT(%INTEGER N)
%EXTERNALSTRING (8) %FNSPEC STRHEX(%INTEGER N)
%EXTERNALSTRING(8) %FNSPEC HTOS(%INTEGER VALUE,PLACES)
%EXTERNALROUTINESPEC PTREC(%RECORDNAME P)
%EXTERNALROUTINESPEC OPMESS(%STRING (63) S)
%EXTERNALROUTINESPEC MONITOR(%STRING (63) S)
%EXTERNALROUTINESPEC DUMP TABLE(%INTEGER T, A, L)
%ROUTINESPEC ELAPSED INT(%RECORDNAME P)
%SYSTEMROUTINESPEC MOVE(%INTEGER L,F,T)
%SYSTEMROUTINESPEC ETOI(%INTEGER A, L)
%ROUTINESPEC PDISC(%RECORDNAME P)
%EXTERNALROUTINESPEC HOOT(%INTEGER NHOOTS)
%EXTERNALROUTINESPEC WAIT(%INTEGER MSECS)
%EXTERNALINTEGERFNSPEC HANDKEYS
%EXTERNALINTEGERFNSPEC REALISE(%INTEGER PUBVIRTADDR)
%EXTERNALROUTINESPEC SLAVESONOFF(%INTEGER ONOFF)
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20A ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,WASKLOKCORRECT,DATE0,DATE1,DATE2, %C
==== ercc07/emas-2900/sup27fsrce_sup27fs.txt ====
!
! TO MAKE S SERIES SUPERVISOR REQUIRES:-
! 1) CHANGE SSERIES=NO TO SSERIES=YES IN CTOPTIONS FILE
! 2) REPLACE COMF BY S SERIES COM IN ERCC08.COMSF
!
!
! THESE CONST INTEGERS DEFINE SIZES AND LAYOUT OF IMPORTANT TABLES
! THEY HAVE TO BE HERE TO BE GLOBAL TO ALL ROUTINES INCLUDING IO ONES
!
%CONSTINTEGER LSTLEN=192; ! LOCAL SEGMENT TABLE LENGTH
%CONSTINTEGER CBTLEN=299; ! LENGTH OF CBT TABLE
%CONSTLONGINTEGER LCACR=1; ! ACR OF LOCAL CONTROLLER
%CONSTINTEGER DIRCSEG=10; ! SEG NO OF DIRECTOR COMMS SEG
%CONSTINTEGER DIRCSEGOFFSET=0; ! FOR ALIGNMENT IF NEEDED
%CONSTINTEGER DIRCSEGAD=DIRCSEG<<18; ! VIRTUAL ADDRESS OF DIR COM SEG
%CONSTINTEGER DIRCSEGL=8*CBTLEN+255+2*LSTLEN; ! SIZE OF SAME
! MADE UP OF 2049 FOR CBT
! 2*LSTLEN FOR SST
! 48+64 FOR 2 BITS OF SYTEMCALL TABLE
! 32+48 FOR DIROUTP&SIGOUT
==== ercc07/emas-2900/perqtrimp_portenv01s.txt ====
%CONSTINTEGER EMAS=10
%CONSTINTEGER PERQ=11
%CONSTINTEGER PNX=12
%CONSTINTEGER IBM=13
%CONSTINTEGER TARGET=PNX
%EXTERNALROUTINESPEC IOCP %ALIAS "S#IOCP"(%INTEGER EP,N)
%CONSTLONGREAL LOG10A=2.3025850929940456840179914546843642076011
%CONSTLONGREAL PI=3.141592653589793238462643
%CONSTLONGREAL R1= 1.2595802263029547@ 1{R'41C98867F42983DF'}
%CONSTLONGREAL R2=-8.6186317517509520@ 1{R'C2562FB2813C6014'}
%CONSTLONGREAL R3=-1.2766919133361079@ 0{R'C1146D547FED8A3D'}
%CONSTLONGREAL R4=-8.3921038065840512@ -2{R'C0157BD961F06C89'}
%CONSTLONGREAL S1= 2.7096164294378656@ 1{R'421B189E39236635'}
%CONSTLONGREAL S2= 6.5581320451487386@ 0{R'4168EE1BDE0C3700'}
%CONSTLONGREAL S3= 2.1441643116703661@ 0{R'41224E7F3CBDFE41'}
%CONSTLONGREAL S4= 1.2676256708212610@ 0{R'41144831DAFBF542'}
%CONSTLONGREAL RT3= 1.7320508075688772@ 0{R'411BB67AE8584CAA'}
%CONSTLONGREAL PIBY6= 5.2359877559829887@ -1{R'40860A91C16B9B2C'}
%CONSTLONGREAL PIBY2M1= 5.7079632679489661@ -1{R'40921FB54442D184'}
%CONSTLONGREAL RT3M1=7.3205080756887728@ -1{R'40BB67AE8584CAA7'}
%CONSTLONGREAL TANPIBY12= 2.6794919243112271@ -1{R'404498517A7B3559'}
==== ercc07/emas-2900/sup25jsrce_makeracer.txt ====
PARM NOTRACE,OPT,STACK,NOLIST
IMP SUP25ISRCE_SUP25IS,SUP25ZZ,,.OUT
IMP SUP25ISRCE_COM24S,COM24ZZ,,.OUT
IMP SUP25ISRCE_PRINT01S,PRINT01ZZ,,.OUT
IMP SUP25ISRCE_GPC22S,GPC22ZZ,,.OUT
IMP SUP25ISRCE_MINDIAGS,MINDIAGZZ,,.OUT
IMP SUP25ISRCE_COMMS38S,COMMS38ZZ,,.OUT
IMP SUP25ISRCE_FAST24S,FAST24ZZ,,.OUT
IMP SUP25ISRCE_TAPE61S,TAPE61ZZ,,.OUT
PARM MAP
LINK
SUP25ZZ
COM24ZZ
PRINT01ZZ
GPC22ZZ
MINDIAGZZ
COMMS38ZZ
FAST24ZZ
TAPE61ZZ
.END
SUP25Z
==== ercc07/emas-2900/ieaxpdxr.txt ====
R; T=0.01/0.01 12:21:14
type ieaxpdxr module p(hex
RECORD 1 LENGTH= 80
00020000 00020000 00020488 00020488 40190E68 00000000 00000000 00000123 4C000004 00000000
00000080 00000000 00000000 00000000 00000000 E9000000 00000000 00000000 00000000 00000000
RECORD 2 LENGTH= 1160
47F0F00E 08C9C5C1 E7D7C4E7 D90090EC D00C0580 58710008 50D07004 41207000 502D0008 92007048
D2077049 70485861 00005856 00084155 00004B50 81A49180 60084780 804291C0 60084740 80464B50
81A247F0 80464A50 81A29544 50004770 80CE1B22 D200704C 5001940F 704C4320 704C5841 00041222
47808074 89200002 58224000 41220000 1B334335 00028830 00041233 47808090 89300002 58334000
41330000 1A32D201 704C5002 940F704C 4A30704C 1B224325 00018820 00048920 00021222 478080CC
58224000 4220704C D200704F 300196FF 704ED600 3001704C 1853D501 500081A6 4770817E 95005002
47708176 1B224325 00038C20 00044590 816C1823 8820001C 4590816C 922D704A D200704B 50034326
00088920 00044220 704841D0 70004120 70485020 70504120 70605020 70544120 81485020 70585821
000C91FF 20004780 813A9201 70494110 705058F0 81AC05EF 47F08182 95FF7063 4780817E 58F07060
440F8158 47F0817E 920C6007 920D6007 920F6007 920F6007 12220789 492081A4 07894120 00064026
000641F0 00FF91FF 704E4780 8190D200 5001704F 58D07004 58ED000C 980CD014 92FFD00C 07FE0002
0004B22D 00000000 000201C8 00000000 47F0F00E 08C9C5C1 E7D2C4E7 D90090EC D00C58C1 00045821
00005802 00005000 D0001B88 04804380 D0016000 C0006020 C0086040 C0106060 C0189200 C0564170
==== ercc07/emas-2900/impalgs_indiags.txt ====
! NOTE NEW VERSION OF THIS GLOBAL ARRY
!
%CONSTSTRING(10)%ARRAY LT(0:7)=" !???! "," IMP "," FORTRAN ",
" IMPS "," ASMBLR "," ALGOL(E) ",
" OPTCODE "," PASCAL "
!*
! LAYOUT OF DIAGNOSIC TABLES
!****** ** ********* ******
! THE BOUND FIELD OF PLT DESCRIPTOR STORED AT (LNB+3 & LNB+4) IF
! USED TO CONTAIN A DISPLACEMENT RELATIVE TO THE START OF SST OF THE
! DIAGNOSTIC TABLES FOR THE BLOCK OR ROUTINE BEING EXECUTED.
! A ZERO BOUND MEANS NO DIAGNOSTIC REQUESTED.(NB THIS MAY MEAN A DUMMY
! FIRST WORD IN THE SST).
! THE ABSOLUTE ADDRESS OF THE SST FOR THE CURRENT CODE SEGMENT WILL
! ALWAYS BE FOUND IN THE STANDARD 10 WORDS OF THE GLA/PLT
! FORM OF THE TABLES:-
==== ercc07/emas-2900/wichtests_wt100.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'I,
'ARRAY' A[ 1 : 1 ];
I := A[1] := 1;
OUTREAL(99, I + A[1])
'END'
==== ercc07/emas-2900/jiocp01s.txt ====
%CONSTBYTEINTEGERARRAY OTRTAB(0:127)=%C
26(9),9,10,26,12,13,26(11),25,26,26(5),
32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,
48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,
64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,
80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,
96,97,98,99,100,101,102,103,104,105,106,107,108,109,
110,111,112,113,114,115,116,117,118,119,
120,121,122,123,124,125,126,26;
%CONSTBYTEINTEGERARRAY ITRTAB(0:127)=%C
X'80'(10),10,X'80'(14),25,26,X'80'(5),
32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,
48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,
64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,
80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,
96,97,98,99,100,101,102,103,104,105,106,107,108,109,
110,111,112,113,114,115,116,117,118,119,
120,121,122,123,124,125,126,X'80';
%CONSTBYTEINTEGERARRAY ITOS4E(0 : 127) = %C
X'40',X'40',X'40',X'40', X'40',X'40',X'40',X'40',
X'40',X'40',X'15',X'40', X'0C',X'0D',X'40',X'40',
==== ercc07/emas-2900/wichtests_wt101.txt ====
'BEGIN'
'INTEGER'
X,
Y;
X := + 2Y := - 3;
'IF' X < - Y 'THEN'
'END'
==== ercc07/emas-2900/sup26esrce_com30s.txt ====
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20J ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,TOJDAY,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,DQADDR, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0, %C
%INTEGER ITINT,CONTYPEA,GPCCONFA,FPCCONFA,SFCCONFA, %C
BLKADDR,RATION,SMACS,TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,FEPS,SP1, %C
SP2,SP3,SP4,SP5,SP6,SP7,SP8, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
HBIT,SLAVEOFF,INHSSR,SDR1,SDR2,SDR3, %C
SDR4,SESR,HOFFBIT,S2,S3,S4,END)
! MISC. ROUTINE SPECS
%EXTERNALROUTINESPEC PKMONREC(%STRING(20)TEXT,%RECORDNAME P)
%EXTERNALSTRING(8)%FNSPEC STRHEX(%INTEGER N)
%RECORDFORMAT PARMF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6)
%EXTERNALROUTINESPEC OPMESS2(%INTEGER OP,%STRING(63)TXT)
==== ercc07/emas-2900/sup28ds.txt ====
!
! To make S series supervisor requires:-
! 1) Change SSERIES=NO to SSERIES=YES in ctoptions file
!
!
! THESE CONST INTEGERS DEFINE SIZES AND LAYOUT OF IMPORTANT TABLES
! THEY HAVE TO BE HERE TO BE GLOBAL TO ALL ROUTINES INCLUDING IO ONES
!
%CONSTINTEGER LSTLEN=192; ! LOCAL SEGMENT TABLE LENGTH
%CONSTINTEGER CBTLEN=299; ! LENGTH OF CBT TABLE
%CONSTLONGINTEGER LCACR=1; ! ACR OF LOCAL CONTROLLER
%CONSTINTEGER DIRCSEG=10; ! SEG NO OF DIRECTOR COMMS SEG
%CONSTINTEGER DIRCSEGOFFSET=0; ! FOR ALIGNMENT IF NEEDED
%CONSTINTEGER DIRCSEGAD=DIRCSEG<<18; ! VIRTUAL ADDRESS OF DIR COM SEG
%CONSTINTEGER DIRCSEGL=8*CBTLEN+255+2*LSTLEN; ! SIZE OF SAME
! MADE UP OF 2049 FOR CBT
! 2*LSTLEN FOR SST
! 48+64 FOR 2 BITS OF SYTEMCALL TABLE
! 32+48 FOR DIROUTP&SIGOUT
%CONSTINTEGER LSTACKLEN=3; ! LOCAL CONT. STACK ELEN
==== ercc07/emas-2900/wichtests_wt102.txt ====
'BEGIN'
'INTEGER'
X,
Y;
X :=;
'END'
==== ercc07/emas-2900/wichtests_wt103.txt ====
'BEGIN'
'INTEGER'
X,
Y;
X := + 3 := Y
'END'
==== ercc07/emas-2900/wichtests_wt104.txt ====
'BEGIN'
'REAL'
W,
V;
'REAL'
X,
Y,
Z;
X := + 6.0;
Y := - 2.931;
Z := 4^.2;
W := 10, 000;
'END'
==== ercc07/emas-2900/sup28dsrce_mindiags.txt ====
%EXTERNALSTRINGFNSPEC STRHEX(%INTEGER I)
%SYSTEMROUTINE NDIAG(%INTEGER PCOUNT, LNB, FAULT, INF)
!***********************************************************************
!*_______'MASTER DIAGNOSTIC ROUTINE'. DISCOVERS THE LANGUAGE OF THE *
!*_______FAILED ROUTINE FROM WORD 4 OF THE GLA AND CALLS APPROPRIATE *
!*_______DIAGNOSTIC ROUTINE. THIS IS REPEATED TILL ALL DIAGNOSTICS *
!*_______GIVEN. *
!*_______PCOUNT = PCOUNTER AT FAILURE *
!*_______LNB = LOCAL NAME BASE AT FAILURE *
!*_______FAULT = FAILURE (0=%MONITOR REQUESTED) *
!*_______INF =ANY FURTHER INFORMATION *
!***********************************************************************
PRINTSTRING("
MINIMUM NDIAGS ENTERED
FAULT NO ="); WRITE(FAULT,2)
PRINTSTRING("
PC=X".STRHEX(PCOUNT)."
LNB=X".STRHEX(LNB)."
")
%IF FAULT>0 %THEN %STOP
%END
==== ercc07/emas-2900/sup26fsrce_documentn.txt ====
This partitioned file contains all the source required to make up a
version 26F Supervisor, plus the version of the IMP compiler and FIX
utility used at Edinburgh to do so. This compiler is necessary as some
advanced language features are required which are not available in the
service compiler.
Note that the OPTION NOBRACKETS must be in force in the process being
used for the method described to work.
Two "OBEY" subfiles are available: MAKECHKD and MAKEOPT. They each
construct a test Supervisor which is left in file SUP26xT, where x is
'C' or 'O' respectively.
Making a Supervisor thus consists of the following:
a) INSERT the IMP compiler and FIX utility into the current directory
(and then log off and log on again if IMP was previously used in
==== ercc07/emas-2900/wichtests_wt105.txt ====
'BEGIN'
'REAL'
V;
V := 3.5&( - 3);
'END'
==== ercc07/emas-2900/passopts.txt ====
%INCLUDE "ERCC07.PERQ_FORMATS"
%EXTRINSICRECORD(WORKAF) WORKA
%EXTRINSICRECORD(PARMF) PARM
%CONSTINTEGER YES=1
%CONSTINTEGER NO=0
%EXTERNALROUTINESPEC ABORT
%EXTERNALROUTINESPEC FAULT(%INTEGER N,DATA,IDENT)
%EXTERNALROUTINESPEC PRINT TRIPS(%RECORD(TRIPF)%ARRAYNAME TRIPLES)
%ROUTINE EXTRACT(%RECORD(RD)%NAME OPND,%INTEGERNAME VAL, %C
%LONGREALNAME RVAL)
!***********************************************************************
!* EXTRACTS A CONTANT OPERAND RETURNING REAL &INT VALUES *
!***********************************************************************
%INTEGER TYPE,PREC,I,AD
TYPE=OPND_PTYPE; PREC=TYPE>>4
TYPE=TYPE&15
%IF TYPE=1 %THEN %START
VAL=OPND_D
RVAL=VAL
%FINISH %ELSE %START
==== ercc07/emas-2900/wichtests_wt106.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
N;
'REAL'
R;
N := 2;
R := 2.5&N;
OUTREAL(99, R);
'END'
==== ercc07/emas-2900/wichtests_wt107.txt ====
'BEGIN'
'REAL'
X,
Y,
Z;
Y := 2.0;
X := 2.5;
Z := 5Y * (2 + X);
'END'
==== ercc07/emas-2900/wichtests_wt108.txt ====
'BEGIN'
'REAL'
Y1,
Y2;
Y1 := Y2 := 1;
REPEAT :;
'IF' Y1 > 0 'THEN'
'GOTO' STOP'GOTO' REPEAT;
STOP :;
'END'
==== ercc07/emas-2900/nrsrce_fast27s.txt ====
%EXTERNALSTRING (15) %FNSPEC STRINT(%INTEGER N)
%EXTERNALSTRING (8) %FNSPEC STRHEX(%INTEGER N)
%EXTERNALSTRING(8) %FNSPEC HTOS(%INTEGER VALUE,PLACES)
%EXTERNALROUTINESPEC PTREC(%RECORDNAME P)
%EXTERNALROUTINESPEC OPMESS(%STRING (63) S)
%EXTERNALROUTINESPEC MONITOR(%STRING (63) S)
%EXTERNALROUTINESPEC DUMP TABLE(%INTEGER T, A, L)
%ROUTINESPEC ELAPSED INT(%RECORDNAME P)
%SYSTEMROUTINESPEC MOVE(%INTEGER L,F,T)
%SYSTEMROUTINESPEC ETOI(%INTEGER A, L)
%ROUTINESPEC PDISC(%RECORDNAME P)
%EXTERNALROUTINESPEC HOOT(%INTEGER NHOOTS)
%EXTERNALROUTINESPEC WAIT(%INTEGER MSECS)
%EXTERNALINTEGERFNSPEC HANDKEYS
%EXTERNALINTEGERFNSPEC REALISE(%INTEGER PUBVIRTADDR)
%EXTERNALROUTINESPEC SLAVESONOFF(%INTEGER ONOFF)
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20A ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,WASKLOKCORRECT,DATE0,DATE1,DATE2, %C
==== ercc07/emas-2900/impalgs_imperrmess.txt ====
1 'REPEAT' 'TOO' 'MANY';
2 'LABEL' 'INVALID OR' 'SET' 'TWICE';
3 'SPEC' 'OUT' 'OF' 'CONTEXT';
4 'SWITCH' 'NAME' 'NOT' 'SET';
5 'SWITCH' 'LABEL' 'ERROR';
6 'SWITCH' 'LABEL' 'SET' 'TWICE';
7 'NAME' 'SET' 'TWICE';
8 'FORMAL' 'PARAMETERS' 'NOT' 'AS SPEC';
9 'FORMAL' 'PARAMETERS' 'NOT' 'AS SPEC';
10 'FORMAL' 'PARAMETERS' 'NOT' 'AS SPEC';
11 'LABEL' 'NOT' 'SET';
12 'GENERAL' 'NAME' 'IN' 'EXPRSSN'
13 'REPEAT' 'MISSING';
14 'TOO' 'MANY' 'ENDS';
15 'MISSING' 'ENDS';
16 'NAME' 'NOT' 'SET';
17 'NOT' 'ROUTINE' 'NAME';
19 'WRONG' 'NO' 'OF' 'PARAMETERS';
20 'SWITCH' 'NAME' 'IN' 'EXPRSSN';
21 'ROUTINE' 'NOT' 'SPECIFIED';
22 'ACTUAL' 'PARAMETERS' 'NOT' 'AS SPEC';
==== ercc07/emas-2900/wichtests_wt109.txt ====
'BEGIN'
'REAL'
X,
Y,
Z;
X := 6.0;
5.0;
Y := - 2.931;
Z := 4^.2;
'END'
==== ercc07/emas-2900/perqtrimp_perqptwoas.txt ====
%EXTERNALROUTINE ICL9CEZPERQIMP
%CONSTINTEGER RELEASE=4
%CONSTINTEGER YES=1,NO=0
%CONSTINTEGER EMAS=10
%CONSTINTEGER PERQ=11
%CONSTINTEGER PNX=12
%CONSTINTEGER HOST=EMAS
%CONSTINTEGER TARGET=PERQ
%CONSTINTEGER STANDARDPT=X'41'
%CONSTINTEGER MINAPT=X'41'; ! MINIMUM PTYPE FOR WHICH ARITHMETIC
! OPERATORS ARE AVAILABLE
%CONSTINTEGER MINAPREC=MINAPT>>4
%CONSTHALFINTEGERARRAY TYPEFLAG(0:12)=0,
X'51'{%INTEGER},
X'52'{%REAL},
X'8009'{%LONG SOMETHING},
X'4031'{%BYTE},
X'35'{%STRING},
X'6051'{%HALF->%INTEGER+WARNING},
X'4041'{%SHORT},
X'33'{%RECORD},
==== ercc07/emas-2900/wichtests_wt110.txt ====
'BEGIN'
'INTEGER'
I.J;
I := 2;
J := 3;
'IF' I * J > I + J 'THEN'
'END'
==== ercc07/emas-2900/lexicon.txt ====
abolishing adverse agonies Al=al al authorship cautionary Centrist
co-temporaneous=contemporaneous committees commitments
committments=commitments comprehended congratulation Cookson DAP DAPs
DEC director doubtless Emas=EMAS enrich ERCC et excepted Fortran grasp
gratefully health ICL IDMS ill-informed immensely IMP IPL manifestly
manning megabytes mends mud Multics non-numerical OCP offsite one-off
organisation outwith Pascal pre-delivery realised realising redeployment
regrettable remorselessly REP Scottish semaphoring shop shouted Sir
staff Stephens sucked tale teams termly timescales tops unbelievable
VAXs verbal VME VMS
==== ercc07/emas-2900/wichtests_wt111.txt ====
'BEGIN'
'REAL'
A,
X;
X := - 10.0;
A := ('IF' X < 0 'THEN' X - 1 'ELSE' 'IF' X > 1 'THEN' X + 1 'ELSE'
X;
'END'
==== ercc07/emas-2900/wichtests_wt112.txt ====
'BEGIN'
'REAL'
X;
Y;
Z;
X := + 6.0;
Y := - 2.931;
Z := 4^.2;
'END'
==== ercc07/emas-2900/sup27csrce_sup27cs.txt ====
!
! TO MAKE S SERIES SUPERVISOR REQUIRES:-
! 1) CHANGE SSERIES=NO TO SSERIES=YES IN CTOPTIONS FILE
! 2) REPLACE COMF BY S SERIES COM IN ERCC08.COMSF
!
!
! THESE CONST INTEGERS DEFINE SIZES AND LAYOUT OF IMPORTANT TABLES
! THEY HAVE TO BE HERE TO BE GLOBAL TO ALL ROUTINES INCLUDING IO ONES
!
%CONSTINTEGER LSTLEN=192; ! LOCAL SEGMENT TABLE LENGTH
%CONSTINTEGER CBTLEN=299; ! LENGTH OF CBT TABLE
%CONSTLONGINTEGER LCACR=1; ! ACR OF LOCAL CONTROLLER
%CONSTINTEGER DIRCSEG=10; ! SEG NO OF DIRECTOR COMMS SEG
%CONSTINTEGER DIRCSEGOFFSET=0; ! FOR ALIGNMENT IF NEEDED
%CONSTINTEGER DIRCSEGAD=DIRCSEG<<18; ! VIRTUAL ADDRESS OF DIR COM SEG
%CONSTINTEGER DIRCSEGL=8*CBTLEN+255+2*LSTLEN; ! SIZE OF SAME
! MADE UP OF 2049 FOR CBT
! 2*LSTLEN FOR SST
! 48+64 FOR 2 BITS OF SYTEMCALL TABLE
! 32+48 FOR DIROUTP&SIGOUT
==== ercc07/emas-2900/wichtests_wt113.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'REAL'
A,
X;
X := 0.8;
A := ('IF' X >= 0 'AND' X <= 1 'THEN' X * X - 3 * X + 4 'ELSE'
0);
OUTREAL(A);
'END'
==== ercc07/emas-2900/wichtests_wt114.txt ====
'BEGIN'
'INTEGER' J,K;
'ARRAY' A(/0:3/);
K := 2;
'FOR' J := 1 'STEP' 1 'UNTIL' K
'BEGIN'
I := 0;
'END';
'END'
==== ercc07/emas-2900/wichtests_wt115.txt ====
'BEGIN'
'INTEGER'
I,
J;
'REAL' 'ARRAY'
CAT(1 : 15);
'END'
==== ercc07/emas-2900/imp80tests_rt0.txt ====
%BEGIN
%OWNBYTEINTEGER CHAR=NL
%OWNBYTEINTEGERARRAY XCHAR(1:10)=NL(*)
WRITE(CHAR,5)
WRITE(XCHAR(5),5)
NEWLINE
%ENDOFPROGRAM
==== ercc07/emas-2900/wichtests_wt116.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'COMMENT' USE OF A PROCEDURE;
'REAL'
A,
B,
;
'PROCEDURE' EXAMPLE(X, Y)RESULT : (R);
'VALUE'
X,
Y;
'REAL'
X,
Y,
R;
'BEGIN'
X := X + Y;
R := X^2 + Y^2
'END';
A := 1;
B := 2;
==== ercc07/emas-2900/imp80tests_rt1.txt ====
%BEGIN
%RECORDFORMAT F(%INTEGER I,J,K,%INTEGERARRAY A(1:5))
%RECORD(F) R
%INTEGERARRAYNAME B
%INTEGER I
R_I='I'
R_J='J'
%CYCLE I=1,1,5
R_A(I)=I
%REPEAT
R_K=255
B==R_A
%CYCLE I=1,1,5
WRITE(B(I),5)
%REPEAT
%ENDOFPROGRAM
==== ercc07/emas-2900/wichtests_wt117.txt ====
'BEGIN'
'SWITCH' PATH :=
P1,
P2;
'INTEGER'
N,
I;
I := 0;
LABEL 1 :;
I := I + 1;
'IF' I = 2 'THEN'
'GOTO' STOP;
N := 0;
'GOTO'
'IF' P > 0 'THEN'
PATH(N)
'ELSE'
LABEL 1;
P1 := P - 1;
P2 := P - 1;
STOP :;
==== ercc07/emas-2900/imp80tests_rt2.txt ====
%BEGIN
%INTEGER I
I=0
%CYCLE
WRITE(I,2)
I=I+1
%REPEAT %UNTIL I=4
%ENDOFPROGRAM
==== ercc07/emas-2900/wichtests_wt118.txt ====
'BEGIN'
'INTEGER'
I;
'REAL'
X;
'ARRAY'
A(/0, 3/);
I := 1;
'FOR' X := 1.0,
2.0,
3.0 'DO'
'BEGIN'
A(/I/):= X;
I := I + 1
'END';
'END'
==== ercc07/emas-2900/imp80tests_rt3.txt ====
%BEGIN
%INTEGER SYM
%STRING(255)S
S="ABCDE"
%WHILE S#"" %CYCLE
SYM=CHARNO(S,1)
S->(TOSTRING(SYM)).S
PRINTSYMBOL(SYM)
%REPEAT
NEWLINE
%ENDOFPROGRAM
==== ercc07/emas-2900/sup25jsrce_tape63s.txt ====
!**************************************************
!* *
!* TAPE HANDLER FOR 2900 *
!* *
!**************************************************
!!
!! EXTERNAL ROUTINE REFERENCES
!!
%EXTERNALSTRINGFNSPEC HTOS(%INTEGER VALUE, PLACES)
%EXTERNALROUTINESPEC OPMESS(%STRING (23) S)
%EXTERNALROUTINESPEC PON(%RECORDNAME P)
%SYSTEMROUTINESPEC ETOI(%INTEGER A, L)
%SYSTEMROUTINESPEC MOVE(%INTEGER L, FROMAD, TOAD)
%EXTERNALROUTINESPEC PTREC(%RECORDNAME P)
%EXTERNALROUTINESPEC PRHEX(%INTEGER N)
%EXTERNALROUTINESPEC GPC(%RECORDNAME P)
%EXTERNALROUTINESPEC DUMP TABLE(%INTEGER TABNO, START, L)
%EXTRINSICLONGINTEGER PARMDES
%EXTERNALINTEGERFNSPEC NEWPPCELL
%EXTERNALROUTINESPEC RETURNPPCELL (%INTEGER CELL)
==== ercc07/emas-2900/wichtests_wt119.txt ====
'BEGIN'
'INTEGER'
K;
K := 0;
'IF' K = 0'GOTO' FINISH 'ELSE'
K := K + 1;
FINISH :;
'END'
==== ercc07/emas-2900/imp80tests_rt4.txt ====
%BEGIN
%INTEGER COUNT
%ROUTINE FRED(%INTEGER FIRST,STEP,LAST)
%INTEGER I
%CYCLE I=FIRST,STEP,LAST
COUNT=COUNT+1
%REPEAT
%END
COUNT=0
FRED(X'9000',16,X'A000')
%IF COUNT=257 %THEN PRINTSTRING("TEST OK") %C
%ELSE PRINTSTRING("WRONG") %AND %MONITOR
%ENDOFPROGRAM
==== ercc07/emas-2900/sup27csrce_samplectopt.txt ====
!
! THIS FILE CONTAINS THE CONST INTEGERS TO CONTROL COMPILE TIME OPTIONS
! IN EMAS2900
! IT IS INTENDED TO BE CONCATENATED ONTO THE FRONT OF SOURCEFILES
! BEFORE COMPILATION
%CONSTINTEGER YES=1
%CONSTINTEGER NO=0
%CONSTINTEGER SSERIES=NO; ! NO=PSERIES, YES=SSERIES
%CONSTINTEGER MULTIOCP=YES; ! YES TO INCLUDE SEMAPHORING
%CONSTINTEGER SFCFITTED=NO; ! NO FOR DISC ONLY SITES
%CONSTINTEGER CPFITTED=NO; ! CARD PUNCH FITTED
%CONSTINTEGER SNOOZING=YES; ! YES ALLOWS SUSPEND IN STORE
! ADVANTAGEOUS WITH LARGE STORES
%CONSTINTEGER PRODUCTION=NO; ! YES FOR CONTINUING AFTER
! SOFTWARE ERRORS(MOST OF WHICH
! ARE DUE TO HARDWARE!)
%CONSTINTEGER MONLEVEL=31; ! 0=NO MONITORING
! 2**0 SET=VIDEO UPDATING
! 2**1 SET=KMONNING
! 2**2 SET=SUP TIMING MEASUREMENTS
==== ercc07/emas-2900/imp80tests_rt5.txt ====
%BEGIN
%LONGINTEGER L
%SWITCH SW(0:5)
L=3
->SW(L)
SW(*):
PRINTSTRING("WRONG PLACE"); %STOP
SW(3):
PRINTSTRING("GOT HERE OK
")
%STOP
%ENDOFPROGRAM
==== ercc07/emas-2900/sup27csrce_oper34s.txt ====
! %CONSTSTRING(15)VSN = "OPER34 24/7/81"; ! ****************************************
%IF (MONLEVEL >> 1) & 1 = YES %START
%EXTRINSICLONGINTEGER KMON
%OWNINTEGER OPMON; ! COPY OF KMON BIT
%CONSTINTEGER KMONNING = YES
%FINISH %ELSE %START
%CONSTINTEGER KMONNING = NO
%FINISH
!
%IF MONLEVEL & 1 = YES %START
%CONSTINTEGER VIDEO UPDATING = YES
%OWNINTEGER OPER FACILITIES
%FINISH %ELSE %START
%CONSTINTEGER VIDEO UPDATING = NO
%FINISH
!
!
!
%RECORDFORMAT PF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6)
%RECORDFORMAT MP F(%INTEGER DEST,SRCE,%STRING(23)TXT)
!*
==== ercc07/emas-2900/wichtests_wt120.txt ====
'BEGIN'
'REAL'
X'INTEGER' I;
'ARRAY'
A(/0 : 3/);
I := 0;
'FOR' X := 1.23,
2.34,
3.45 'DO'
'BEGIN'
A(/I/):= X;
I := I + 1
'END';
'END'
==== ercc07/emas-2900/imp80tests_rt6.txt ====
%BEGIN
%CONST%STRING(15)%ARRAY S(1:3)="ONE ","TWO ","THREE "
%INTEGER I
PRINTSTRING(S(3))
%CYCLE I=1,1,3
PRINTSTRING(S(I))
%REPEAT
%ENDOFPROGRAM
==== ercc07/emas-2900/wichtests_wt121.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'INTEGER'
I,
P;
I := 0;
'FOR' P := 1 'STEP' 1 'UNTIL' 4 'DO'
'BEGIN'
'OWN' 'INTEGER'
I;
'IF' P = 1 'THEN'
I := 3
'ELSE'
I := 2 * I;
'BEGIN'
'INTEGER'
J,
I;
J := 4;
I := 0
'END';
==== ercc07/emas-2900/imp80tests_rt7.txt ====
%BEGIN
%RECORDFORMAT F(%INTEGER I,J,K,L)
%OWNRECORD(F)%ARRAY A(-1:1)
%RECORD(F)%ARRAY B(-1:1)
%RECORD(F) R
%INTEGER I
R=0
%CYCLE I=-1,1,1
A(I)=R
B(I)=R
%REPEAT
PRINTSTRING("WORKED OK")
%ENDOFPROGRAM
==== ercc07/emas-2900/wichtests_wt122.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'INTEGER'
I,
P;
I := 0;
'FOR' P := 1 'STEP' 1 'UNTIL' 4 'DO'
'BEGIN'
'OWN' 'INTEGER'
I;
'IF' P = 1 'THEN'
I := 3
'ELSE'
I := 2 * I;
'BEGIN'
'OWN' 'INTEGER'
J,
I;
I := 0;
'IF' I = 0 'THEN'
J := 4
==== ercc07/emas-2900/imp80tests_rt8.txt ====
%BEGIN
%CONSTINTEGER STRLEN=3
%CONSTSTRING(STRLEN)%ARRAY CHECK(1:3)="ABC","DEF","GHI";
%INTEGER I
%STRING(STRLEN)%ARRAYFORMAT SF(1:3)
%STRINGARRAYNAME SAN
%RECORDFORMAT F(%INTEGER I,J,%STRING(3)%ARRAY S(1:3), %C
%STRINGARRAYNAME SN)
%RECORD(F)%NAME R
%OWNBYTEINTEGERARRAY A(0:35)=0,0,0,1,0,0,0,2,
X'03',X'41',X'42',X'43',X'03',X'44',X'45',X'46',X'03',X'47',
X'48',X'49',0(16)
%ROUTINE CHECK VALUE(%INTEGER I,%STRING(31)S)
%IF S#CHECK(I) %THEN PRINTSTRING("
BUG IN STRING VALUE") %AND %MONITOR
%END
%ROUTINE CHECKNAME(%INTEGER I,%STRING(*)%NAME S)
%IF S#CHECK(I) %THEN PRINTSTRING("
BUG IN STRING NAMES") %AND %MONITOR
%END
==== ercc07/emas-2900/wichtests_wt123.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'INTEGER'
I,
P;
I := 0;
'FOR' P := 1 'STEP' 1 'UNTIL' 4 'DO'
'BEGIN'
'OWN' 'INTEGER'
I;
'IF' P = 1 'THEN'
I := 3
'ELSE'
I := 2 * I;
'BEGIN'
'OWN' 'INTEGER'
J,
I;
'IF' I = 0 'THEN'
J := 4
'ELSE'
==== ercc07/emas-2900/imp80tests_rt9.txt ====
%BEGIN
%INTEGER I,J
%CONSTSTRING(15)FAILED="***BUG FOUND"
%RECORDFORMAT F(%INTEGER I,J)
%ROUTINESPEC INTERCHANGE(%RECORD(F)%ARRAYNAME A,%INTEGER I,J)
%RECORD(F)%ARRAY A(0:3)
%RECORD(F)%ARRAY B(1:4)
%CYCLE I=0,1,3
A(I)_I=I
B(I+1)_I=I+1
%REPEAT
INTERCHANGE(A,1,3)
PRINTSTRING(FAILED) %UNLESS A(1)_I=3 %AND A(3)_I=1
INTERCHANGE(B,1,3)
PRINTSTRING(FAILED) %UNLESS B(1)_I=3 %AND B(3)_I=1
%ROUTINE INTERCHANGE(%RECORD(F)%ARRAYNAME R,%INTEGER P,Q)
%RECORD(F) TEMP
TEMP=R(P)
R(P)=R(Q)
R(Q)=TEMP
%END
==== ercc07/emas-2900/wichtests_wt124.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'REAL'
X;
X := 1.;
OUTREAL(99, X);
'END'
==== ercc07/emas-2900/sup25jsrce_fast24s.txt ====
%EXTERNALSTRING (15) %FNSPEC STRINT(%INTEGER N)
%EXTERNALSTRING (8) %FNSPEC STRHEX(%INTEGER N)
%EXTERNALSTRING(8) %FNSPEC HTOS(%INTEGER VALUE,PLACES)
%EXTERNALROUTINESPEC PTREC(%RECORDNAME P)
%EXTERNALROUTINESPEC OPMESS(%STRING (63) S)
%EXTERNALROUTINESPEC MONITOR(%STRING (63) S)
%EXTERNALROUTINESPEC DUMP TABLE(%INTEGER T, A, L)
%ROUTINESPEC ELAPSED INT(%RECORDNAME P)
%SYSTEMROUTINESPEC ETOI(%INTEGER A, L)
%ROUTINESPEC PDISC(%RECORDNAME P)
%EXTERNALROUTINESPEC HOOT(%INTEGER NHOOTS)
%EXTERNALROUTINESPEC WAIT(%INTEGER MSECS)
%EXTERNALINTEGERFNSPEC HANDKEYS
%EXTERNALINTEGERFNSPEC REALISE(%INTEGER PUBVIRTADDR)
%EXTERNALROUTINESPEC SLAVESONOFF(%INTEGER ONOFF)
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20A ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,WASKLOKCORRECT,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,DQADDR, %C
==== ercc07/emas-2900/ajqtests.txt ====
//JOB (:ERCC07.AJTESTS,P.STEPHENS_ALGOL,T=240,L=6000)
//ALGOL
'BEGIN'
'REAL' X;
'INTEGER' I;
I := 10000000000000000000000000;
X := 1.0&999
'END'
//RUN
//ALGOL
'BEGIN'
'REAL' AUTOCORRELATIONCOEFFICIENTNUMBER1;
AUTOCORRELATIONCOEFFICIENTNUMBER1 := 0.0;
'BEGIN'
'REAL' AUTOCORRELATIONCOEFFICIENTNUMBER2;
AUTOCORRELATIONCOEFFICIENTNUMBER2 := 1.0;
OUTREAL(99, AUTOCORRELATIONCOEFFICIENTNUMBER1 +
AUTOCORRELATIONCOEFFICIENTNUMBER2 )
'END'
'END'
//RUN
==== ercc07/emas-2900/wichtests_wt125.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'REAL'
X;
X := 1.&;
OUTREAL(99, X);
'END'
==== ercc07/emas-2900/wichtests_wt126.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'REAL'
X;
X := &+;OUTREAL(99, X);
'END'
==== ercc07/emas-2900/sup26esrce_makeopt.txt ====
PARM FREE,OPT,STACK,NOLIST
IMP CTOPT+SUP26ESRCE_SUP26ES,SUPZZ,,.OUT
IMP CTOPT+SUP26ESRCE_COM30S,COMZZ,,.OUT
IMP CTOPT+SUP26ESRCE_PRINT05S,PRINTZZ,,.OUT
IMP CTOPT+SUP26ESRCE_OPER33S,OPERZZ,,.OUT
IMP SUP26ESRCE_ENTER05S,ENTERZZ,,.OUT
IMP CTOPT+SUP26ESRCE_GPC33S,GPCZZ,,.OUT
IMP SUP26ESRCE_NDIAG07S,NDIAGZZ,,.OUT
IMP CTOPT+SUP26ESRCE_COMMS46S,COMMSZZ,,.OUT
IMP CTOPT+SUP26ESRCE_FAST28S,FASTZZ,,.OUT
IMP SUP26ESRCE_TAPE67S,TAPEZZ,,.OUT
PARM MAP
LINK
SUPZZ
COMZZ
PRINTZZ
OPERZZ
ENTERZZ
GPCZZ
NDIAGZZ
COMMSZZ
==== ercc07/emas-2900/wichtests_wt127.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'REAL'
X;
X := &;
OUTREAL(99, X);
'END'
==== ercc07/emas-2900/wichtests_wt128.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'REAL'
X;
X := .;
OUTREAL(99, X);
'END'
==== ercc07/emas-2900/wichtests_wt129.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'REAL'
X;
X := &-1000;
OUTREAL(99, X);
'END'
==== ercc07/emas-2900/sup26hsrce_gpc36s.txt ====
%CONSTSTRING(25) VSN = "GPC36 4TH FEB 81"; ! ************************************************GPC GPC GPC
!
! EMAS 2900 SUPERVISOR NOTE
! No: 5
! Date: 21/05/80
! Author: A.Gibbons
!
!
! %EXTERNAL ROUTINE GPC(%RECORDNAME P)
!
! 1. CONVENTIONS
! The record spec for the parameter is
! %RECORDFORMAT PARMF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6)
! where
! DEST is considered as two half words DSNO and DACT. DSNO
! must be GPC's DSNO
! DACT is set according to the function required.
!
! SRCE is considered as two halfwords SSNO and SACT.
! SSNO is SNO of ORIGINATOR and SACT is DACT for
! the reply.
==== ercc07/emas-2900/wichtests_wt130.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'INTEGER'
I;
'PROCEDURE' P;
'BEGIN'
'INTEGER'
J;
'PROCEDURE' Q;
'IF' I > 10 'THEN'
'GOTO' L;
J := I := I + 1;
Q;
OUTREAL(99, J);
P;
L :;
OUTREAL(99, J);
'END';
I := 1;
P;
'END'
==== ercc07/emas-2900/wichtests_wt131.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'REAL' 'ARRAY'
JJ(/1 : 8/);
'PROCEDURE' P(X);
'VALUE'
X;
'INTEGER'
X;
;
'PROCEDURE' DEVIATION;
'BEGIN'
'REAL'
X,
Y;
P(JJ)
'END';
DEVIATION;
'END'
==== ercc07/emas-2900/sup25jsrce_gpc22s.txt ====
%CONSTSTRING(15) VSN="12 SEP 79 1"
!
! SERVICE NUMBERS FOR SLOW DEVICE ROUTINES
! DEV-
! DEC HEX TYPE
! 48 30 GPC
! 49 31 5 TAPE
! 50 32 8 OPER FOR CTS/CLOCK SCREEN UPDTE, PON X32 1 2/0
! 51 33 6 PRINTER ADAPTOR
! 52 34 4 SPARE (FORMERLY CARDR)
! 53 35 15 SPARE (FORMERLY LINK)
! 54 36 6 PRINTER
! 55 37 (COMMS CONTROLLER)
! 56 38 (COMMS CONTROLEER)
! 57 39 14 MK1 FE ADAPTOR
!
%CONSTBYTEINTEGERARRAY ALLOWCALL(1:15)= %C
0, 0, 0, 0, 49, 54, 0, 50, 0, 0, 0, 0, 0, 57, 53
%CONSTINTEGER MT=5, LP=6, OP=8
%CONSTINTEGER REAL0 SEG=X'2040'; ! PUBLIC 64(DEC) MAPPED TO REAL 0
%CONSTINTEGER ENDLIST=255
==== ercc07/emas-2900/sup25jsrce_mindiags.txt ====
%EXTERNALSTRINGFNSPEC STRHEX(%INTEGER I)
%SYSTEMROUTINE NDIAG(%INTEGER PCOUNT, LNB, FAULT, INF)
!***********************************************************************
!*_______'MASTER DIAGNOSTIC ROUTINE'. DISCOVERS THE LANGUAGE OF THE *
!*_______FAILED ROUTINE FROM WORD 4 OF THE GLA AND CALLS APPROPRIATE *
!*_______DIAGNOSTIC ROUTINE. THIS IS REPEATED TILL ALL DIAGNOSTICS *
!*_______GIVEN. *
!*_______PCOUNT = PCOUNTER AT FAILURE *
!*_______LNB = LOCAL NAME BASE AT FAILURE *
!*_______FAULT = FAILURE (0=%MONITOR REQUESTED) *
!*_______INF =ANY FURTHER INFORMATION *
!***********************************************************************
PRINTSTRING("
MINIMUM NDIAGS ENTERED
FAULT NO ="); WRITE(FAULT,2)
PRINTSTRING("
PC=X".STRHEX(PCOUNT)."
LNB=X".STRHEX(LNB)."
")
%END
%ENDOFFILE
==== ercc07/emas-2900/wichtests_wt132.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'INTEGER'
I,
J,
CASE;
'PROCEDURE' CHECKB(BOOL, ANSWER);
'VALUE'
ANSWER;
'BOOLEAN'
BOOL;
'INTEGER'
ANSWER;
'BEGIN'
'BOOLEAN'
B;
'PROCEDURE' FAIL;
'BEGIN'
OUTREAL(99, I);
OUTREAL(99, J);
OUTREAL(99, CASE)
==== ercc07/emas-2900/impalgs_rtermess.txt ====
1 'INTEGER' 'OVERFLOW';
2 'REAL' 'OVERFLOW';
3 'ILLEGAL' 'CYCLE';
4 'NOT' 'ENOUGH' 'STORE'
5 'SQRT' 'NEGATIVE';
6 'LOG' 'NEGATIVE';
7 'SWITCH' 'LABEL' 'NOT' 'SET'
9 'INPUT' 'ENDED';
10 'NON' 'INTEGER' 'QUOTIENT'
11 'NO' 'RESULT'
12 'TIME' 'EXCEEDED'
13 'TERMINATION' 'REQUESTED'
14 'SYMBOL' 'IN' 'DATA';
15 'PARAM' 'NOT' 'DESTINATION'
16 'REAL' 'NO' 'IN' 'DATA'
17 'DIVIDE' 'ERROR'
18 'SUB' 'CHAR' 'IN' 'DATA'
19 'GRAPH' 'FAULT'
20 'STREAM' 'NOT' 'DEFINED'
21 'ILLEGAL' 'EXPONENTIATION';
22 'TRIG' 'FN' 'INACCURATE';
==== ercc07/emas-2900/wichtests_wt133.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'INTEGER'
I;
'INTEGER' 'ARRAY'
C(/1 : 3/);
'FOR' I := 1,
2,
3 'DO'
C(/I/):= I + 1;
'FOR' I := 1,
2,
3 'DO'
'IF' C(/C(/C(/C(/C(/C(/I/)- 1/)- 1/)- 1/)- 1/)- 1/)# I + 1
'THEN'
OUTREAL(99, I);
OUTREAL(99, 0)
'END'
==== ercc07/emas-2900/impalgs_imp80ps01.txt ====
38
D(NAME)
D(ICONST)
D(CONST)
D(CHXTYPE)
D(N)
D(S)
D(TEXT)
D(BIGHOLE)
D(N255)
D(HOLE)
D(MARK)
D(READLINE?)
D(TEXTTEXT)
D(DUMMYAPP)
D(DOWN)
D(UP)
D(LISTON)
D(LISTOFF)
D(COLON)
D(NOTECONST)
==== ercc07/emas-2900/wichtests_wt134.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'INTEGER'
I,
J,
K;
'BOOLEAN'
P,
T;
'PROCEDURE' FAIL;
'BEGIN'
OUTREAL(99, I);
OUTREAL(99, J)
'END';
T := 'TRUE';
'FOR' I := - 1,
0,
1 'DO'
'FOR' J := - 1,
0,
1 'DO'
==== ercc07/emas-2900/sup27fsrce_enter12s.txt ====
%RECORDFORMAT PARMF(%INTEGER DEST, SRCE, P1, P2, P3, P4, P5, P6)
%RECORDFORMAT SERVAF(%INTEGER P, C)
%EXTRINSICINTEGER INPTR
%EXTRINSICINTEGER OUTPTR
%CONSTINTEGER MASK=X'80FC3FFF'
%EXTERNALINTEGERFNSPEC HANDKEYS
%EXTERNALROUTINESPEC HOOT(%INTEGER NUM)
%EXTERNALINTEGERFNSPEC GPC INIT(%INTEGER CA,PT,MODE)
%EXTERNALINTEGERFNSPEC SAFE IS READ(%INTEGER ISAD,%INTEGERNAME VAL)
%EXTERNALROUTINESPEC GET PSTB(%INTEGERNAME P0, P1)
%EXTERNALROUTINESPEC SUP29
%EXTERNALROUTINESPEC SUPPOFF(%RECORD(SERVAF)%NAME SERV, %C
%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC DISC(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC PDISC(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC GPC(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC SLAVESONOFF(%INTEGER J)
%EXTERNALROUTINESPEC PKMONREC(%STRING(20)TEXT,%RECORD(PARMF)%NAME P)
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20L ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DLVNADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
==== ercc07/emas-2900/muperms.txt ====
TITLE 'IMP PERM FOR SIM2 P.STEPHENS'
* FOR RELEASE 8 BACK COMPATIBLE TO RELEASE 7
IMP START
CODE EQU 12
WSP EQU 11
GLA EQU 13
RA EQU 15
DC A(PEND-IMP)
DC A(BASE-IMP)
DC A(PERMGLA-IMP)
DC A(PLOADATA-IMP)
USING BASE,CODE
USING WKSTART,WSP
USING USERGLA,GLA
BASE B CPLRERR
P1 BC 15,RSS
P2 BC 15,NS0
P3 BC 15,PS0
P4 BC 15,W0
P5 BC 15,PSTRO
P6 BC 15,STOP1
==== ercc07/emas-2900/impalgs_imp80ps02.txt ====
38
D(NAME)
D(ICONST)
D(CONST)
D(CHXTYPE)
D(N)
D(S)
D(TEXT)
D(BIGHOLE)
D(N255)
D(HOLE)
D(MARK)
D(READLINE?)
D(TEXTTEXT)
D(DUMMYAPP)
D(DOWN)
D(UP)
D(LISTON)
D(LISTOFF)
D(COLON)
D(NOTECONST)
==== ercc07/emas-2900/wichtests_wt135.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'REAL'
X,
Y,
Z,
U;
'INTEGER'
I,
CASE;
'PROCEDURE' COMPARE(U, V);
'VALUE'
U,
V;
'REAL'
U,
V;
'BEGIN'
CASE := CASE + 1;
'IF' U # V 'THEN'
'BEGIN'
==== ercc07/emas-2900/wichtests_wt136.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'REAL'
X;
X := + + 1.0;
X := - - X;
OUTREAL(99, + - X)
'END'
==== ercc07/emas-2900/sup26isrce_releasen.txt ====
Supervisor 26i Relase Notice
This Supervisor has the following changes
1) Implements "advisory sequential" files
2) Changes to SCHEDULE to allow L_C stacks to snooze
even when store too full for snoozing also to penalise
P4 processes which are very CPU bound
3) Minor corrections to OPER,TAPE&FAST
SUPERVISOR RELEASE NOTICE VSN 26H
_________________________________
This Supervisor incorporates the following changes:-
1) Has a better FAST(32) that permits disc switching
==== ercc07/emas-2900/wichtests_wt137.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'BOOLEAN'
B;
B := 'NOT' 'TRUE';
B := 'NOT' ( 'NOT' B);
B := 'NOT' 'NOT' B;
OUTREAL(99, 'IF' B 'THEN' 0 'ELSE' 1)
'END'
==== ercc07/emas-2900/wichtests_wt138.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'REAL'
X;
'INTEGER'
I;
'PROCEDURE' NOTFUNCTION(Y);
'VALUE'
Y;
'REAL'
Y;
'BEGIN'
I := I + 1;
X := Y
'END';
X := 1.0;
I := 0;
X := 3 * NOTFUNCTION(4.0);
OUTREAL(99, X + NOTFUNCTION(X) + I)
'END'
==== ercc07/emas-2900/sup26isrce_com32s.txt ====
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20J ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,TOJDAY,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,DQADDR, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0, %C
%INTEGER ITINT,CONTYPEA,GPCCONFA,FPCCONFA,SFCCONFA, %C
BLKADDR,RATION,SMACS,TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,FEPS,SP1, %C
SP2,SP3,SP4,SP5,SP6,SP7,SP8, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
HBIT,SLAVEOFF,INHSSR,SDR1,SDR2,SDR3, %C
SDR4,SESR,HOFFBIT,S2,S3,S4,END)
! MISC. ROUTINE SPECS
%EXTERNALROUTINESPEC PKMONREC(%STRING(20)TEXT,%RECORDNAME P)
%EXTERNALSTRING(8)%FNSPEC STRHEX(%INTEGER N)
%RECORDFORMAT PARMF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6)
%EXTERNALROUTINESPEC OPMESS2(%INTEGER OP,%STRING(63)TXT)
==== ercc07/emas-2900/wichtests_wt139.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'REAL'
X,
Y;
'REAL' 'PROCEDURE' P(Z);
'VALUE'
Z;
'REAL'
Z;
'BEGIN'
X := Z + Y
'END';
'REAL' 'PROCEDURE' Q(Z);
'VALUE'
Z;
'REAL'
Z;
'IF' 'FALSE' 'THEN'
Q := Z + X + Y;
X := Y := 1.0;
==== ercc07/emas-2900/wichtests_wt140.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'REAL'
X,
Y;
'PROCEDURE' P(A, B, C);
'VALUE'
A,
B,
C;
'REAL'
A,
B,
C;
'BEGIN'
X := A + B * C;
Y := X + A
'END';
P(1.0,, 3);
OUTREAL(99, X)
'END'
==== ercc07/emas-2900/wichtests_wt141.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'INTEGER' 'PROCEDURE' FACT(N);
'VALUE'
N;
'INTEGER'
N;
FACT :=
'IF' N > 1 'THEN'
N * FACT(N - 1)
'ELSE'
1;
FACT := 1;
OUTREAL(99, FACT(5))
'END'
==== ercc07/emas-2900/sup26csrce_makechkd.txt ====
PARM FREE,STACK,NOCHECK,NOLIST
IMP CTOPT+SUP26CSRCE_SUP26CS,SUPZZ,,.OUT
IMP CTOPT+SUP26CSRCE_COM29S,COMZZ,,.OUT
IMP CTOPT+SUP26CSRCE_PRINT04S,PRINTZZ,,.OUT
IMP SUP26CSRCE_OPER31S,OPERZZ,,.OUT
IMP SUP26CSRCE_ENTER04S,ENTERZZ,,.OUT
IMP SUP26CSRCE_GPC28S,GPCZZ,,.OUT
IMP SUP26CSRCE_NDIAG06S,NDIAGZZ,,.OUT
IMP CTOPT+SUP26CSRCE_COMMS42S,COMMSZZ,,.OUT
PARM FREE,OPT,STACK,NOLIST
IMP CTOPT+SUP26CSRCE_FAST27S,FASTZZ,,.OUT
IMP SUP26CSRCE_TAPE65S,TAPEZZ,,.OUT
PARM MAP
LINK
SUPZZ
COMZZ
PRINTZZ
OPERZZ
ENTERZZ
GPCZZ
NDIAGZZ
==== ercc07/emas-2900/wichtests_wt142.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'REAL'
Y;
'PROCEDURE' P(X, X);
'VALUE'
X;
'REAL'
X;
X := X^2 + 8.6;
P(Y, 2.0);
OUTREAL(99, Y)
'END'
==== ercc07/emas-2900/wichtests_wt143.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'REAL'
X;
'PROCEDURE' P(Y);
'VALUE'
X;
'REAL'
Y;
Y := X;
X := 3.4;
P(10.0);
OUTREAL(99, X)
'END'
==== ercc07/emas-2900/wichtests_wt144.txt ====
'BEGIN'
'COMMENT' 'LIBRARY'5;
'REAL' PR;
'INTEGER' PI;
'BOOLEAN' PB;
PI := 1;
PR := 0.0&0;
PB :=
'IF' 'NOT' PI > 0 'AND' PI >= 1 'OR' PI < 0 'IMPL' PR <= 0
'EQUIV' PI # 0 'THEN'
'TRUE'
'ELSE'
'TRUE';
'IF' PB 'THEN'
PR := - 1 * PI^3 'DIV' 2 +
ENTIER(SIGN(SQRT(ABS(ARCTAN(LN(EXP(COS(SIN(1)))))
)))) - (PR / ('IF' PR = 0.0 'THEN' 3 'ELSE' 3));
'BEGIN'
'SWITCH' PSW := ENTRY, EXIT;
'OWN' 'REAL' 'ARRAY' PRA(/0 : 1/);
'INTEGER' 'ARRAY' PIA(/2 : 3/);
==== ercc07/emas-2900/imp80tests_ct10.txt ====
%BEGIN
%INTEGER I,X
%IF I=1 %THEN X=1 %ELSE %START
X=2
%FINISH %ELSE X=3
%ENDOFPROGRAM
==== ercc07/emas-2900/wichtests_wt145.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'REAL'
X;
'PROCEDURE' P(A, B);
'VALUE'
(A, B);
'REAL'
(A, B);
X := A + B;
P(3, 4);
OUTREAL(99, X)
'END'
==== ercc07/emas-2900/imp80tests_ct11.txt ====
%BEGIN
%RECORDFORMATSPEC F2
%RECORDFORMAT F1(%INTEGER I,%RECORD(F2)%NAME R)
%RECORDFORMAT F2(%INTEGER J,%RECORD(F1)%NAME R)
%RECORD(F2) RR
%ENDOFPROGRAM
==== ercc07/emas-2900/wichtests_wt146.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'REAL'
X;
'INTEGER'
I;
X := 3.84;
'FOR' I := 1 'STEP' 1 'UNTIL' 200 'DO'
'BEGIN'
'IF' - 1 / X # - (1 / X) 'THEN'
OUTREAL(99, I);
X := X * 1.01;
'END';
OUTREAL(99, 0);
'END'
==== ercc07/emas-2900/sup26esrce_print05s.txt ====
%EXTRINSICLONGINTEGER KMON
%ROUTINESPEC PRHEX(%INTEGER H)
%ROUTINESPEC PRINTER(%RECORDNAME P)
%EXTERNALROUTINESPEC PON(%RECORDNAME P)
%EXTERNALROUTINESPEC OPMESS(%STRING (23) MESS)
%SYSTEMROUTINESPEC ITOE(%INTEGER A, L)
%IF MULTIOCP=YES %THEN %START
%EXTERNALROUTINESPEC SEMALOOP(%INTEGERNAME SEMA)
%ROUTINESPEC RESERVE LOG
%ROUTINESPEC RELEASE LOG
%ROUTINESPEC AWAIT LOG ROUTE
%FINISH
%RECORDFORMAT PARMF(%INTEGER DEST, SRCE, P1, P2, P3, P4, P5, %C
P6)
!------------------------------------------------------------------------
%RECORDFORMAT ENTFORM(%INTEGER SER, PTSM, PROPADDR, %C
TICKS SINCE, CAA, GRCB AD, LBA, ALA, STATE, RESP0, %C
RESP1, SENSE1, SENSE2, SENSE3, SENSE4, REPSNO, BASE, %C
ID, DLVN, MNEMONIC, ENTSIZE, PAW, USAW0, URCB AD, %C
SENSDAT AD, LOGMASK, TRTAB AD, UA SIZE, UA AD, %C
==== ercc07/emas-2900/imp80tests_ct12.txt ====
%BEGIN
! CHECKS THAT CONDITIONAL COMPILATION IGNORES OTHER ASSEMBLERS
%INTEGER I
%CONSTINTEGER OCP=2900
%IF OCP=2900 %THEN %START
*LSS_(%LNB+5); *ST_I
%FINISH %ELSE %START
*LR_1,15; *ST_1,0(4,2)
%FINISH
%ENDOFPROGRAM
==== ercc07/emas-2900/wichtests_wt147.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'ARRAY'
A(/1.2/);
A(/1/):= 1.0;
OUTREAL(99, A(/1/))
'END'
==== ercc07/emas-2900/imp80tests_ct13.txt ====
%begin
! This program tests various combinations of %c, comma and curly bracketed
! comments to ensure that the statement continuation rules are followed,
! and that the compiler does not differentiate unexpectedly between %c and
! comma.
%integerfn f(%integer x, y)
%result = 0
%end
%integer a, b, c
! Test 1
a = %c
{......}
b
a = f(b,
{......}
c)
! Test 2
==== ercc07/emas-2900/wichtests_wt148.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'INTEGER'
I,
J,
K;
I := J := K := 1;
'IF' I = J 'THEN'
LA : 'IF' J # K 'THEN'
OUTREAL(99, 1)
'ELSE'
OUTREAL(99, 2);
OUTREAL(99, 3)
'END'
==== ercc07/emas-2900/wichtests_wt149.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'ARRAY'
A(/1 : 2.3 : 4/);
A(/1/):= 1.0;
OUTREAL(99, A(/1/))
'END'
==== ercc07/emas-2900/cs4_ln1.txt ====
CS4:COMP_ln1
Organising a programming project that involves more than one person
proves to be a unexpectedly tough problem. There is some agreement on
the reasons for this:-
1) Programming is almost entirely a matter of detail and all
details must be correct. A broad overview, normally an important
part of management, is rarely much use to anyone.
2) Programmer productivity is extaordinarily variable compared
(say) to productivity in a chain of Fish and Chip shops. A high
flyer with flair can contribute 10 times as much as a plodder.
3) Interfaces apparently specified to the satisfaction of everyone
concerned can prove to have large loopholes. Consequently when
==== ercc07/emas-2900/wichtests_wt150.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'REAL'
X,
Y;
'INTEGER'
CASE;
'PROCEDURE' CHECK(B);
'VALUE'
B;
'BOOLEAN'
B;
'IF' B 'THEN'
CASE := CASE + 1
'ELSE'
'BEGIN'
OUTREAL(99, X);
OUTREAL(99, Y);
OUTREAL(99, CASE)
'END';
CASE := 0;
==== ercc07/emas-2900/sup26esrce_enter05s.txt ====
%EXTRINSICINTEGER INPTR
%EXTRINSICINTEGER OUTPTR
%CONSTINTEGER MASK=X'80FC3FFF'
%EXTERNALINTEGERFNSPEC HANDKEYS
%EXTERNALROUTINESPEC HOOT(%INTEGER NUM)
%EXTERNALROUTINESPEC GET PSTB(%INTEGERNAME P0, P1)
%EXTERNALROUTINESPEC SUP29
%EXTERNALROUTINESPEC GPC(%RECORDNAME P)
%EXTERNALROUTINESPEC SLAVESONOFF(%INTEGER J)
%EXTERNALROUTINESPEC PKMONREC(%STRING(20)TEXT,%RECORDNAME P)
%SYSTEMROUTINESPEC MOVE(%INTEGER L, FROMAD, TOAD)
%RECORDFORMAT PARMF(%INTEGER DEST, SRCE, P1, P2, P3, P4, P5, %C
P6)
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20A ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,WASKLOKCORRECT,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,DQADDR, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0, %C
==== ercc07/emas-2900/cs4_ln2.txt ====
CS4:COMP_LN2
Algol for compiler writers
==========================
Algol is the base from which IMP and Pascal were derived. Much of the
language should be familiar to you, especially when written in the IMP notation
with percent sign to designate the keywords. The complete definition is
contained in the modified report and this must be studied. A less daunting but
less complete view can be obtained by reading the ERCC Algol Maunual. This
lecture will highlight some of the areas that are different from IMP or Pascal
including the three which cause greatest difficulty to compiler writers.
The basic elements of the language are very similar to IMP and are
described in sections 1 & 2 of the Report. Note that upper and lower case
letters are distinct in identifiers and that the syntax of real constants is
==== ercc07/emas-2900/wichtests_wt151.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'BOOLEAN'
A,
B,
C;
'INTEGER'
I,
J;
A := B := C := 'TRUE';
I := J := 1;
A := I = J;
B := I # J;
C := A := B;
C := A = B;
C = A = B;
OUTREAL(99, 'IF' A 'THEN' 0 'ELSE' 'IF' B 'THEN' 2 'ELSE' 3);
'END'
==== ercc07/emas-2900/cs4_ln3.txt ====
CS4:COMP LN3
A COMPILER WRITERS VIEW OF THE IBM 370
The IBM 370 is a byte-addressed general register machine which is a minor
improvement of the IBM 360 series designed in the late 1950's. The order code is
mostly orthogonal and consistent but the addressing still reflects the 1950's
view that 64Kb was a large main store.
Operations are provided on:
bytes or characters 8 bit unsigned
halfwords 16 bit signed
words 32 bit signed
==== ercc07/emas-2900/wichtests_wt152.txt ====
'BEGIN'
'COMMENT' 'LIBRARY'5;
'REAL' 'PROCEDURE' P(Q);
'REAL' 'PROCEDURE'
Q; 'COMMENT'(X): 'VALUE' X: 'REAL' X;
P := ABS(Q( - 6.4));
OUTREAL(99, P(ABS))
'END'
==== ercc07/emas-2900/cs4_ln4.txt ====
CS4:COMP LN4
COMPILER WRITING AIDS IN EMAS
These fall into three categories:-
1) Low level debugging aids needed when compilers
are faulty.
2) The Compile and Put routines.
3) Simulation of test programs.
Low Level Aids
==== ercc07/emas-2900/wichtests_wt153.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'REAL'
X;
X := 0;
X := (X + 1.1) / 3.3;
X := (X + 2.2) / 6.6;
X := (X + 3.3) / 9.9;
X := (X + 4.4) / 13.2;
X := (X + 5.5) / 16.5;
X := (X + 6.6) / 19.8;
X := (X + 7.7) / 23.1;
X := (X + 8.8) / 26.4;
X := (X + 9.9) / 29.7;
X := (X + 11.0) / 33.0;
X := (X + 12.1) / 36.3;
X := (X + 13.2) / 39.6;
X := (X + 14.3) / 42.9;
X := (X + 15.4) / 46.2;
X := (X + 16.5) / 49.5;
X := (X + 17.6) / 52.8;
==== ercc07/emas-2900/dumpsrce.txt ====
START
* THIS PROGRAM WRITES ALL CORE TO A DUMP TAPE. THE TAPE CONSISTS
* OF LABEL,TAPEMARK,24 BYTE IPL BLOCK,MORE CWWS,PROGRAM THEN DATA BLOCKS
START DS 0D
DC A(BOTTOM-START)
DC A(IPL-START)
DC A(PROGRAM-START)
DC A(LDATA-START)
BLOCKS EQU 254 NO OF COREPAGES-2
* THIS IS THE FIRST 24 BYTE IPL BLOCK
IPL DS 0D
DC F'4096'
DC F'0' P-COUNTER AND ISR
CCW 5,24,X'40',44 READ CHAINED COMMANDS
CCW 5,4096,X'70',0 SKIP PROGRAM BLOCK
* THIS IS THE SECOND BLOCK
CCW 3,0,X'40',4096 WRITE FIRST BLOSC
CCW 3,4096,X'40',4096 WRITE SECOND BLOCK
CCW 2,4096,X'70',0 SKIP BACK 1 BLOCK
CCW 2,4096,X'70',0 SKIP BACK ANOTHER BLOCK
CCW 2,LPL+4095,X'20',LPL BACKWARDS READ PROGRAM BLK
==== ercc07/emas-2900/cs4_ln5.txt ====
Lecture 5 was based on the EMAS compiler standards document which served
as the lecture notes.
==== ercc07/emas-2900/wichtests_wt154.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'PROCEDURE' P(ST1, ST2);
'STRING'
ST1,
ST2;
;
P( < 1.1>, < 3.3> );
P( < 2.2>, < 6.6> );
P( < 3.3>, < 9.9> );
P( < 4.4>, < 13.2> );
P( < 5.5>, < 16.5> );
P( < 6.6>, < 19.8> );
P( < 7.7>, < 23.1> );
P( < 8.8>, < 26.4> );
P( < 9.9>, < 29.7> );
P( < 11.0>, < 33.0> );
P( < 12.1>, < 36.3> );
P( < 13.2>, < 39.6> );
P( < 14.3>, < 42.9> );
P( < 15.4>, < 46.2> );
==== ercc07/emas-2900/cs4_ln6.txt ====
CS4:COMP LN6
USEFUL SUPPORT ROUTINES
You will need a selection of support routines and it is best if these are
in a set of external routines linked with the rest of your compiler. It will
help your schedule if you draft these routines over the Xmas vacation.
Message Routines
----------------
You will need at least two message routines to output a warning and an
error message. The text of error messages is often kept in a sophisticated
packet format although a simple %const %string %array will suffice at a pinch.
Your warning and error routines will need to substitute actual names or
other test into the stored messages - probably using marker characters. ie. if
there is a "#" in a message the second parameter is a number to be substituted.
==== ercc07/emas-2900/wichtests_wt155.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'INTEGER'
I;
'PROCEDURE' P(A, B);
'VALUE'
A;
'VALUE'
B;
'INTEGER'
A,
B;
I := A + B;
P(3, 4);
OUTREAL(99, I);
'END'
==== ercc07/emas-2900/cs4_ln7.txt ====
CS4:COMP LN7
THE LEXICAL ANALYSER
The lexical analyser is that part of the compiler which reads in the
original source text and arranges it in a form for the parser. It can be an
almost nonexistent entity - just handing over the symbols as read; it can be
very complex and do much of the work of the parser - identifying keywords and
building a dictionary of the names.
There are a number of reasons for having a separate lexical analyser:-
1. Handling characters is expensive - very expensive on some
architectures. A separate scanner enables one to concentrate on
doing the text handling efficiently.
==== ercc07/emas-2900/wichtests_wt156.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'INTEGER'
I;
'PROCEDURE' P(A, B);
'INTEGER'
A;
'INTEGER'
B;
I := A + B;
P(3, 4);
OUTREAL(99, I);
'END'
==== ercc07/emas-2900/sup27isrce_ndiag07s.txt ====
!*_ DATED 11 NOV 76 1
! ALTERATIONS BY K.YARWOOD ...
! PRINT FL AND NEXT SYMBOL LINES COMMENTED OUT
! PRINTTEXT'S TURNED TO PRINTSTRING'S
! ADDITION FOR LONGINTEGER IN RT PRINT VAR
! HEX EQUIVALENTS FOR INTS,LONGINTS ETC PRINTED
! INF PRINTED IN HEX IN RT ERRMESS
%EXTERNALSTRINGFNSPEC STRHEX(%INTEGER I)
%EXTERNALSTRING(8)%FNSPEC STRINT(%INTEGER I)
%CONSTINTEGER STACKBASE=X'80100000'; ! START OF RESIDENT STACK
! %SYSTEMROUTINESPEC SIGNAL(%INTEGER I, J, K, %INTEGERNAME F)
%ROUTINESPEC PRINTMESS(%INTEGER N)
! %SYSTEMROUTINESPEC TIDY EXIT
!*
%ROUTINESPEC INDIAG(%INTEGER OLDLNB, L, PC, %INTEGERNAME NEWLNB)
! %ROUTINESPEC FDIAG(%INTEGER OLDLNB,PC,%INTEGERNAME NEWLNB)
%ROUTINESPEC ERMESS(%INTEGER N, INF)
! %ROUTINESPEC ICL9CELABELS
==== ercc07/emas-2900/cs4_ln8.txt ====
CS4:COMP_LN8
BUILDING A PARSER
The aim of a parser is to construct a much more flexible and accessible
form of the source program that the original text, or even the token stream
output by the lexical analyser. It does this with the aid of a grammar
describing the language; as a side effect of parsing syntax errors are detected.
Parsers come in two main types called "top-down" and "bottom-up". Bottom-up
parsers compare the lexical tokens, often in pairs, with the grammar detecting
all valid occurrences or juxtapositions of these symbols. As more symbols are
drawn in the number of valid alternatives is reduced until only one is left.
Top-down parsers try all the alternatives of the grammar in succession
trying to match them with the statement; if the end of the statement is reached
then a valid construct has been found. Top-down parsers are claimed to be slower
than bottom-up parsers because they may go some way down wrong paths before
discovering an impasse. On the other hand they are simpler to write and work
==== ercc07/emas-2900/wichtests_wt157.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'BOOLEAN' B;
'REAL' X;
'INTEGER' 'ARRAY' A(/ + 1 : .6&2/);
'INTEGER' I, N;
B := 'FALSE';
N := &+2 * .6;
X := 0;
'COMMENT' ;
'BEGIN'
'COMMENT' ;
'OWN' 'REAL' 'ARRAY' C0(/0 : 1/);
'PROCEDURE' P(A, B, C);
'VALUE' A;
'INTEGER' A;
'STRING' B;
'BOOLEAN' 'ARRAY' C;
'BEGIN'
'BEGIN'
C(/(1)/):= 'TRUE' 'OR' .8 > C0(/'IF' 'TRUE' 'THEN' 0 'ELSE'
==== ercc07/emas-2900/docs_standards.txt ====
@h[Compiler Standards for EMAS(3)]
@b[1. @u[Introduction]]
Unlike 2900 series, IBM 370-XA provides no facilities or assistance for
executing stack-based procedures. To provide cross language calling and
advanced facilities like dynamic loading a carefully thought-out set of
conventions must be followed. The conventions proposed here follow those of
EMAS(1) with slight changes to permit array slicing and cross memory (i.e.
inward) calls.
@b[2. @u[Register Conventions]]
When any EMAS(3) program is executing, GR11 is used as the stack top and it
is kept 8-byte-aligned (for efficient fetching). The stack may be multi-segment
- segment boundaries have no significance (unlike 2900). GR12 points to the head
of the shareable (pure) part of the program and is used to provide
addressibility. Program sharing requires that code executes correctly at
==== ercc07/emas-2900/wichtests_wt158.txt ====
'BEGIN'
'BEGIN'
'REAL' A;
'GOTO' L;
L: 'WHILE'
'END'
'END'
==== ercc07/emas-2900/wichtests_wt159.txt ====
'BEGIN'
'PROCEDURE' P(A);
'VALUE' A: ;
P(1)
'END'
==== ercc07/emas-2900/sup27csrce_releasen.txt ====
Supervisor 27C Release Notice
This Supervisor has the following changes
1 Substantial changes to Supervisor & Schedule to allow
the dynamic removal of SMACS,SACS & OCPS from a working
System. Also more support for dynamically closing file
Systems without a full closdown.
2) Minor corrections elsewhere.
Supervisor 27B Relase Notice
This Supervisor has the following changes
1) Uses store list constructed by CHOPSUPE(and thus requires a
version of 21 Series CHOPSUPES to load it)
2) Changes to SCHEDULE to use individual timeouts
==== ercc07/emas-2900/ibmconvert_doc.txt ====
IBM OBJECT MODULE UTILITIES
1 USING THE UTILITIES
1.1 CONVERTING A FILE
1.2 INVOKING THE CONVERTER ROUTINE
1.3 DUMPING AN OBJECT MODULE
1.4 LOADING THE MODULES
2 OVERVIEW OF CONVERTER ACTIONS
2.1 COALESCING AREAS
2.2 ESD DICTIONARY
2.3 GENERATION OF AREAS
2.4 INITIALISATION DATA
2.5 RELOCATION PROCESSING
2.6 END CARD
3 BUILDING THE UTILITIES
==== ercc07/emas-2900/sup26hsrce_sup26hs.txt ====
!
! TO MAKE S SERIES SUPERVISOR REQUIRES:-
! 1) CHANGE SSERIES=NO TO SSERIES=YES IN CTOPTIONS FILE
! 2) REPLACE COMF BY S SERIES COM IN ERCC08.COMSF
!
!
! THESE CONST INTEGERS DEFINE SIZES AND LAYOUT OF IMPORTANT TABLES
! THEY HAVE TO BE HERE TO BE GLOBAL TO ALL ROUTINES INCLUDING IO ONES
!
%CONSTINTEGER LSTLEN=192; ! LOCAL SEGMENT TABLE LENGTH
%CONSTLONGINTEGER LCACR=1; ! ACR OF LOCAL CONTROLLER
%CONSTINTEGER DIRCSEG=10; ! SEG NO OF DIRECTOR COMMS SEG
%CONSTINTEGER DIRCSEGOFFSET=0; ! FOR ALIGNMENT IF NEEDED
%CONSTINTEGER DIRCSEGAD=DIRCSEG<<18; ! VIRTUAL ADDRESS OF DIR COM SEG
%CONSTINTEGER DIRCSEGL=2048+255+LSTLEN; ! SIZE OF SMAE
! MADE UP OF 2049 FOR CBT
! LSTLEN FOR SST
! 48+64 FOR 2 BITS OF SYTEMCALL TABLE
! 32+48 FOR DIROUTP&SIGOUT
%CONSTINTEGER LSTACKLEN=3; ! LOCAL CONT. STACK ELEN
==== ercc07/emas-2900/wichtests_wt160.txt ====
'BEGIN'
'PROCEDURE' P(A);
'REAL' A: ;
P(1.0)
'END'
==== ercc07/emas-2900/wichtests_wt161.txt ====
'BEGIN'
'PROCEDURE' P(A ; ;
P(1)
'END'
==== ercc07/emas-2900/wichtests_wt162.txt ====
'BEGIN'
'ARRAY' A(/(0:3/);
'END'
==== ercc07/emas-2900/wichtests_wt163.txt ====
'BEGIN'
'IF' ('TRUE' 'OR' ('TRUE') 'THEN'
'END'
==== ercc07/emas-2900/wichtests_ebcdicctest.txt ====
PARM EBCDIC,FREE,QUOTES
ALGOL WICHTESTS_WT1,Y,.OUT
ALGOL WICHTESTS_WT2,Y,.OUT
RUN Y
ALGOL WICHTESTS_WT3,Y,.OUT
ALGOL WICHTESTS_WT4,Y,.OUT
ALGOL WICHTESTS_WT5,Y,.OUT
ALGOL WICHTESTS_WT6,Y,.OUT
ALGOL WICHTESTS_WT7,Y,.OUT
RUN Y
ALGOL WICHTESTS_WT8,Y,.OUT
ALGOL WICHTESTS_WT9,Y,.OUT
RUN Y
ALGOL WICHTESTS_WT10,Y,.OUT
RUN Y
ALGOL WICHTESTS_WT11,Y,.OUT
ALGOL WICHTESTS_WT12,Y,.OUT
ALGOL WICHTESTS_WT13,Y,.OUT
ALGOL WICHTESTS_WT14,Y,.OUT
ALGOL WICHTESTS_WT15,Y,.OUT
ALGOL WICHTESTS_WT16,Y,.OUT
==== ercc07/emas-2900/wichtests_wt164.txt ====
'BEGIN'
L: 'GOTO' (L/)
'END'
==== ercc07/emas-2900/sup27bsrce_com33s.txt ====
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20J ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,TOJDAY,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,DQADDR, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0, %C
%INTEGER ITINT,CONTYPEA,GPCCONFA,FPCCONFA,SFCCONFA, %C
BLKADDR,RATION,SMACS,TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,FEPS,SP1, %C
SP2,SP3,SP4,SP5,SP6,SP7,SP8, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
HBIT,SLAVEOFF,INHSSR,SDR1,SDR2,SDR3, %C
SDR4,SESR,HOFFBIT,S2,S3,S4,END)
%RECORDFORMAT PARMF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6)
! MISC. ROUTINE SPECS
%EXTERNALROUTINESPEC PKMONREC(%STRING(20)TEXT,%RECORD(PARMF)%NAME P)
%EXTERNALSTRING(8)%FNSPEC STRHEX(%INTEGER N)
%EXTERNALROUTINESPEC OPMESS3(%STRING(63)TXT)
==== ercc07/emas-2900/sup26hsrce_makechkd.txt ====
PARM FREE,STACK,NOCHECK,NOLIST
IMP CTOPT+SUP26HSRCE_SUP26HS,SUPZZ,,.OUT
IMP CTOPT+SUP26HSRCE_COM32S,COMZZ,,.OUT
IMP CTOPT+SUP26HSRCE_PRINT05S,PRINTZZ,,.OUT
IMP CTOPT+SUP26HSRCE_OPER33S,OPERZZ,,.OUT
IMP CTOPT+SUP26HSRCE_ENTER09S,ENTERZZ,,.OUT
IMP CTOPT+SUP26HSRCE_GPC36S,GPCZZ,,.OUT
PARM FREE,OPT,STACK,NOLIST
IMP SUP26HSRCE_NDIAG07S,NDIAGZZ,,.OUT
IMP CTOPT+SUP26HSRCE_COMMS48S,COMMSZZ,,.OUT
IMP CTOPT+SUP26HSRCE_FAST32S,FASTZZ,,.OUT
IMP CTOPT+SUP26HSRCE_TAPE69S,TAPEZZ,,.OUT
PARM MAP
LINK
SUPZZ
COMZZ
PRINTZZ
OPERZZ
ENTERZZ
GPCZZ
NDIAGZZ
==== ercc07/emas-2900/wichtests_wt165.txt ====
'BEGIN'
'INTEGER' I;
'FOR' 1:=I 'DO';
'END'
==== ercc07/emas-2900/impalgs_timetest.txt ====
%BEGIN
%REAL X, Y, Z;
%COMMENT %LIBRARY A6, A30;
%COMMENT A6, A30 ARE THE STANDARD
FUNCTIONS AND INPUT/OUTPUT ROUTINES;
%REALPROCEDURE CPUTIME; %EXTERNAL REALCPUTIME;
%INTEGER I, N, K, L, M, CASE;
%INTEGERARRAY E1[1 : 1], E2[1 : 1,
1 : 1], E3[1 : 1, 1 : 1, 1 : 1];
%PROCEDURE P0;
;
%PROCEDURE P1(X);
%VALUE X;
%REAL X;
;
==== ercc07/emas-2900/wichtests_wt166.txt ====
'BEGIN'
'PROCEDURE' 1;;
L;
'END'
==== ercc07/emas-2900/wichtests_ctest.txt ====
PARM FREE,QUOTES
ALGOL WICHTESTS_WT1,Y,.OUT
ALGOL WICHTESTS_WT2,Y,.OUT
RUN Y
ALGOL WICHTESTS_WT3,Y,.OUT
ALGOL WICHTESTS_WT4,Y,.OUT
ALGOL WICHTESTS_WT5,Y,.OUT
ALGOL WICHTESTS_WT6,Y,.OUT
ALGOL WICHTESTS_WT7,Y,.OUT
RUN Y
ALGOL WICHTESTS_WT8,Y,.OUT
ALGOL WICHTESTS_WT9,Y,.OUT
RUN Y
ALGOL WICHTESTS_WT10,Y,.OUT
RUN Y
ALGOL WICHTESTS_WT11,Y,.OUT
ALGOL WICHTESTS_WT12,Y,.OUT
ALGOL WICHTESTS_WT13,Y,.OUT
ALGOL WICHTESTS_WT14,Y,.OUT
ALGOL WICHTESTS_WT15,Y,.OUT
ALGOL WICHTESTS_WT16,Y,.OUT
==== ercc07/emas-2900/wichtests_wt167.txt ====
'BEGIN'
'PROCEDURE' P();;
'END'
==== ercc07/emas-2900/ibm_rcode.txt ====
%ROUTINE NCODE(%INTEGER START, FINISH, CA)
%SWITCH SW(0 : 3)
%INTEGER D1, D2, D3, D4, H1, H2, H3, LENGTH, K, M, X, Y, Z, PTR
%INTEGER B0, B1, OPC
%CONSTINTEGER BLANKS = M' '
%CONSTBYTEINTEGERARRAY HEX(0:15)=48,49,50,51,52,53,54,55,56,57,
65,66,67,68,69,70;
%CONSTINTEGERARRAY C(0 : 127) = %C
M' ',M' ',M' ',M' ',M'SPM ',
M'BALR',M'BCTR',M'BCR ',M'SSK ',M'ISK ',M'SVC ',M' ',M' ',
M' ',M' ',M' ',M'LPR ',M'LNR ',M'LTR ',M'LCR ',
M'NR ',M'CLR ',M'OR ',M'XR ',M'LR ',M'CR ',M'AR ',M'SR ',
M'MR ',
M'DR ',M'ALR ',M'SLR ',M'LPDR',M'LNDR',M'LTDR',M'LCDR',M'HDR ',
M' ',M' ',M' ',M'LDR ',M'CDR ',M'ADR ',M'SDR ',M'MDR ',
M'DDR ',M'AWR ',M'SWR ',M'LPER',M'LNER',M'LTER',
M'LCER',M'HER ',M' ',M' ',M' ',M'LER ',M'CER ',M'AER ',
M'SER ',M'MER ',M'DER ',M'AUR ',M'SUR ',
M'STH ',M'LA ',M'STC ',M'IC ',M'EX ',M'BAL ',M'BCT ',M'B ',
M'LH ',M'CH ',M'AH ',M'SH ',M'MH ',M' ',M'CVD ',M'CVB ',
M'ST ',M' ',M' ',M' ',M'N ',M'CL ',M'O ',M'X ',
==== ercc07/emas-2900/wichtests_wt168.txt ====
'BEGIN'
'SWITCH' 0:=L;
L: 'GOTO' O(/1/)
'END'
==== ercc07/emas-2900/wichtests_wt169.txt ====
'BEGIN'
'ARRAY' A(/'IF' 'TRUE' 'THEN' 1 : 10/);
'END'
==== ercc07/emas-2900/wichtests_wt170.txt ====
L,'BEGIN'
'REAL' A;
'END'
==== ercc07/emas-2900/algolbm_calg40.txt ====
//JOB(ERCC07,STEPHENS,T=200,L=10000)
//OPTIONS(QUOTES,OPT)
//ALGOL
'COMMENT'
***************
* *
* ALGG040 *
* *
***************
;
'BEGIN'
'COMMENT' MEP00;
'BEGIN' 'COMMENT' A0,A6,A12;
'INTEGER' N,M;
REPEAT:N:=READ;
'IF' N=0 'THEN' 'GOTO' FINISH;
M:=READ;
'BEGIN' 'INTEGER' I,J,K,SA,SB,SC,SD;
'REAL' KA,KB,RMS,MEAN;
==== ercc07/emas-2900/wichtests_wt171.txt ====
'BEGIN'
'SWITCH' S:=L;
L: 'GOTO' S(/1)
'END'
==== ercc07/emas-2900/algptoqs.txt ====
EDIT(PERCENT,QUOTES)
(R/%INTEGER/I/'INTEGER'/)*
T(R/%REAL/I/'REAL'/)*
T(R/%BOOLEAN/I/'BOOLEAN'/)*
T(R/%STRING/I/'STRING'/)*
T(R/%LABEL/I/'LABEL'/)*
T(R/%SWITCH/I/'SWITCH'/)*
T(R/%PROCEDURE/I/'PROCEDURE'/)*
T(R/%OWN/I/'OWN'/)*
T(R/%COMMENT/I/'COMMENT'/)*
T(R/%VALUE/I/'VALUE'/)*
T(R/%ARRAY/I/'ARRAY'/)*
T(R/%DIV/I/'DIV'/)*
T(R/%OR/I/'OR'/)*
T(R/%AND/I/'AND'/)*
T(R/%IMPL/I/'IMPL'/)*
T(R/%EQUIV/I/'EQUIV'/)*
T(R/%NOT/I/'NOT'/)*
W
(R/%IF/I/'IF'/)*
==== ercc07/emas-2900/wichtests_wt172.txt ====
'BEGIN'
'ARRAY' A(/1:10/);
A(/1) := 1
'END'
==== ercc07/emas-2900/sup26hsrce_samplectopt.txt ====
!
! THIS FILE CONTAINS THE CONST INTEGERS TO CONTROL COMPILE TIME OPTIONS
! IN EMAS2900
! IT IS INTENDED TO BE CONCATENATED ONTO THE FRONT OF SOURCEFILES
! BEFORE COMPILATION
%CONSTINTEGER YES=1
%CONSTINTEGER NO=0
%CONSTINTEGER SSERIES=NO; ! NO=PSERIES, YES=SSERIES
%CONSTINTEGER MULTIOCP=YES; ! YES TO INCLUDE SEMAPHORING
%CONSTINTEGER SFCFITTED=NO; ! NO FOR DISC ONLY SITES
%CONSTINTEGER CPFITTED=NO; ! CARD PUNCH FITTED
%CONSTINTEGER SNOOZING=YES; ! YES ALLOWS SUSPEND IN STORE
! ADVANTAGEOUS WITH LARGE STORES
%CONSTINTEGER MONLEVEL=31; ! 0=NO MONITORING
! 2**0 SET=VIDEO UPDATING
! 2**1 SET=KMONNING
! 2**2 SET=SUP TIMING MEASUREMENTS
! 2**3 SET=CAT TABLE TRANSITIONS
! 2**4 SET= STROBING
! 2**8 SET=EVENT HARVESTING
==== ercc07/emas-2900/ibmsup_strrts.txt ====
%EXTERNALROUTINESPEC ETOI %ALIAS "S#ETOI"(%INTEGER AD,L)
%EXTERNALROUTINESPEC ITOE %ALIAS "S#ITOE" (%INTEGER AD,L)
%EXTERNALSTRING(255)%FN EXTRACT VALUE(%STRING(*)%NAME REF,%INTEGERNAME FLAG)
!***********************************************************************
!* RETURNS THE VALUE OF REF ALTERING STRING FORMATS TO IMP *
!***********************************************************************
%INTEGER I,J,K,SP,AD
%SHORTINTEGER L,F
%SWITCH SW(0:5)
%STRING(255)RES
*LM_0,1,REF
*ST_1,AD
*STH_0,L
*SRL_0,16
*STH_0,F
FLAG=0
%IF F<5 %THEN ->SW(F)
SW(1): ! IMP LONGSTRING
FLAG=1
INV: %RESULT="INVALID M-L STRING FOR EXTRACT VALUE"
==== ercc07/emas-2900/wichtests_wt173.txt ====
'BEGIN'
'ARRAY' A(/1:10/);
A(/1/)= 1
'END'
==== ercc07/emas-2900/vaxsim2.txt ====
!###########################################
!# S-assembler for VAX SIMULA system #
!# Peter S. Robertson #
!# Rob Pooley #
!# Mar. 1982 #
!###########################################
! ***** G E N E R A L S T R U C T U R E *****
! .-------------. .-------------.
! | | | |
! | |--directives->| |
! S-code--->| S-assembler | | S-generator |----object file---->
! | |----object--->| |
! | | | |
! `-------------' `-------------'
! ^
==== ercc07/emas-2900/algolbm_calg43.txt ====
//JOB(ERCC07,STEPHENS,T=200,L=10000)
//OPTIONS(QUOTES,OPT)
//ALGOL
'COMMENT'
***************
* *
* ALGG043 *
* *
***************
;
'BEGIN''COMMENT' PROGRAM ON H & O GRADE SURVEYS, IN ALGOL 1900,
MODIFIED TO I.B.M. CARD PUNCHES;
'COMMENT' INPUT/OUTPUT PROCEDURES;
'COMMENT' END OF INPUT/OUTPUT PROCEDURES;
'PROCEDURE' CRDTXT;
'BEGIN' 'INTEGER' I,J;
TRY AGAIN : INSYMBOL(98,'('*')',I);
'IF' I = 1 'THEN'
'BEGIN'
==== ercc07/emas-2900/wichtests_wt174.txt ====
'BEGIN'
'INTEGER' A;
'FOR' A=1 'DO'
'END'
==== ercc07/emas-2900/algolbm_calg44.txt ====
//JOB(ERCC07,STEPHENS,T=200,L=10000)
//OPTIONS(QUOTES,OPT)
//ALGOL
'COMMENT'
***************
* *
* ALGG044 *
* *
***************
;
'BEGIN'
'INTEGER' DV1,DIN,DV2,MT1,I,J,NAT;
'REAL' PI,ANGLE,A;
'ARRAY' CELL[1:6],NN,MM[1:3,1:3],TITLE[1:200],
INDEX[1:20];
'BOOLEAN' 'ARRAY' KEY[1:20];
'COMMENT' INPUT/OUTPUT PROCEDURES;
'REAL' 'PROCEDURE' READ;
'EXTERNAL'READ1900;
==== ercc07/emas-2900/wichtests_wt175.txt ====
'BEGIN'
'SWITCH' S=L1,L2;
L1:L2:
'END'
==== ercc07/emas-2900/algolbm_calg45.txt ====
//JOB(ERCC07,STEPHENS,T=200,L=10000)
//OPTIONS(QUOTES,OPT)
//ALGOL
'COMMENT'
***************
* *
* ALGG045 *
* *
***************
;
'BEGIN'
'COMMENT' G4628T;
'INTEGER' COUNT;
'BEGIN' 'INTEGER' I,J,K,M,N,MIN,L,FLOWH,F,X;
COUNT:=0;
M:=READ;N:=READ;
'BEGIN' 'INTEGER' 'ARRAY' ZERO,BOOL,U[1:N-1,1:M-1],C,WGHT[1:N,1:M],
COL[1:N,1:2],ROW[1:2,1:M];
'BOOLEAN' 'ARRAY' NLROW[1:N-1],NLCOL[1:M-1];'BOOLEAN' MLAB;
WRITETEXT('(''('C')'COST'('S')'MATRIX'('S')'IS')');
==== ercc07/emas-2900/wichtests_wt176.txt ====
'BEGIN'
'OWN' 'ARRAY'(/1:10/);
'END'
==== ercc07/emas-2900/algolbm_calg46.txt ====
//JOB(ERCC07,STEPHENS,T=200,L=10000)
//OPTIONS(QUOTES,OPT)
//ALGOL
'COMMENT'
***************
* *
* ALGG046 *
* *
***************
;
'BEGIN'
'COMMENT'
!***GBI1****BENGBME***************************
;
'BEGIN' 'COMMENT' INTERPOLATION OF LOAD CAPACITY USING CARPET;
'COMMENT' A0,A6; 'ARRAY' SHAPE[1:7],TAPER[1:13];
'REAL' HI,BOL,I,J,TOLERANCE; 'ARRAY' PZ[1:7,1:13];
'PROCEDURE' LOCATE(VECTOR,L,U,VALUE,I,TOLERANCE,UP,ESCAPE);
'VALUE' L,U,VALUE,TOLERANCE,UP;
'REAL' VECTOR,VALUE,TOLERANCE; 'INTEGER' L,U,I;
'BOOLEAN' UP; 'LABEL' ESCAPE;
==== ercc07/emas-2900/wichtests_wt177.txt ====
'BEGIN'
'INTEGER' I;
'FOR' I:= 1 'STEP' 1 'DO'
'END'
==== ercc07/emas-2900/sup26isrce_mindiags.txt ====
%EXTERNALSTRINGFNSPEC STRHEX(%INTEGER I)
%SYSTEMROUTINE NDIAG(%INTEGER PCOUNT, LNB, FAULT, INF)
!***********************************************************************
!*_______'MASTER DIAGNOSTIC ROUTINE'. DISCOVERS THE LANGUAGE OF THE *
!*_______FAILED ROUTINE FROM WORD 4 OF THE GLA AND CALLS APPROPRIATE *
!*_______DIAGNOSTIC ROUTINE. THIS IS REPEATED TILL ALL DIAGNOSTICS *
!*_______GIVEN. *
!*_______PCOUNT = PCOUNTER AT FAILURE *
!*_______LNB = LOCAL NAME BASE AT FAILURE *
!*_______FAULT = FAILURE (0=%MONITOR REQUESTED) *
!*_______INF =ANY FURTHER INFORMATION *
!***********************************************************************
PRINTSTRING("
MINIMUM NDIAGS ENTERED
FAULT NO ="); WRITE(FAULT,2)
PRINTSTRING("
PC=X".STRHEX(PCOUNT)."
LNB=X".STRHEX(LNB)."
")
%END
%ENDOFFILE
==== ercc07/emas-2900/wichtests_wt178.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'INTEGER'
I;
'INTEGER' 'PROCEDURE' C;
'BEGIN'
'FOR' C := 1 'STEP' 1 'UNTIL' 3 'DO'
'BEGIN'
I := I + 1;
'IF' I < 10 'THEN'
C := C + 1
'END'
'END';
I := 0;
OUTREAL(99, C)
'END'
==== ercc07/emas-2900/wichtests_wt179.txt ====
LABELWITHOUTCOLON
'BEGIN'
'END'
==== ercc07/emas-2900/algolbm_calg49.txt ====
//JOB(ERCC07,STEPHENS,T=200,L=10000)
//OPTIONS(QUOTES,OPT)
//ALGOL
'COMMENT'
***************
* *
* ALGG049 *
* *
***************
;
'BEGIN'
'BEGIN'
'COMMENT' WJW1;
'COMMENT' A0,A6;
'INTEGER' Y,I,J,E,COUNT;
'REAL' A,B,C,BETAD,G,R,S,M,N,O,P,Q,GA,MA;
'INTEGER' 'ARRAY' H,K,L[1:6];
'REAL' 'ARRAY' D[1:6],SEP[0:10];
GA:=READ;
MA:=READ;
E:=READ;
==== ercc07/emas-2900/kentclokset_clok1s.txt ====
CLOK MODULE 0001
SUBTITLE 8
*
* Stand-alone program to set the real time clock
* from the handkeys
*
* Runs in real address mode
*
* Copyright (C) R.D. Eager University of Kent MCMLXXXI
*
CHAPTER
SUBTITLE 1
* Image store addresses for 2960
&HANDKEYS EQU X'6006' * Hand keys (switches)
&CLKX EQU X'600C' * Clock X register
&CLKY EQU X'600D' * Clock Y register
&CLKZ EQU X'600E' * Clock Z register
SUBR CLOCK
SUBTITLE 7
*
* Bootstrap response area
==== ercc07/emas-2900/wichtests_wt180.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'INTEGER'
I,
J,
K,
M;
'INTEGER' 'PROCEDURE' GPPS(I, N, V, Z);
'INTEGER'
I,
N,
V,
Z;
'BEGIN'
'FOR' I := 1 'STEP' 1 'UNTIL' N 'DO'
V := Z;
GPPS := 1
'END';
'FOR' M := 1 'STEP' 1 'UNTIL' 25 'DO'
'BEGIN'
I := GPPS(I, M + 1, K, 'IF' I = 1 'THEN' 1 'ELSE' K +
==== ercc07/emas-2900/sup27fsrce_com33s.txt ====
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20J ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,TOJDAY,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,DQADDR, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0, %C
%INTEGER ITINT,CONTYPEA,GPCCONFA,FPCCONFA,SFCCONFA, %C
BLKADDR,RATION,SMACS,TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,FEPS,SP1, %C
SP2,SP3,SP4,SP5,SP6,SP7,SP8, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
HBIT,SLAVEOFF,INHSSR,SDR1,SDR2,SDR3, %C
SDR4,SESR,HOFFBIT,S2,S3,S4,END)
%RECORDFORMAT PARMF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6)
! MISC. ROUTINE SPECS
%EXTERNALROUTINESPEC PKMONREC(%STRING(20)TEXT,%RECORD(PARMF)%NAME P)
%EXTERNALSTRING(8)%FNSPEC STRHEX(%INTEGER N)
%EXTERNALROUTINESPEC OPMESS3(%STRING(63)TXT)
==== ercc07/emas-2900/algolbm_calg50.txt ====
//JOB(ERCC07,STEPHENS,T=200,L=10000)
//OPTIONS(QUOTES,OPT)
//ALGOL
'COMMENT'
***************
* *
* ALGG050 *
* *
***************
;
'BEGIN'
'BEGIN' 'COMMENT' TEST PROGRAM MK.2;
'COMMENT' JFMP2 ;
'COMMENT' A0,A6;
'REAL' XLIM,YLIM,TLIM,GAPX,GAPY,H;
XLIM:=READ; YLIM:=READ; TLIM:=READ;
GAPX:=READ; GAPY:=READ; H:=READ;
'BEGIN'
'REAL' X,Y,T,K,W,G,B,C,INTA,INC,DTL;
==== ercc07/emas-2900/algolbm_calg52.txt ====
//JOB(ERCC07,STEPHENS,T=200,L=10000)
//OPTIONS(QUOTES,OPT)
//ALGOL
'COMMENT'
***************
* *
* ALGG052 *
* *
***************
;
'BEGIN'
'BEGIN' 'COMMENT' A0,A6; 'REAL' CHI,MU,NU,S,DX,ZETAE,ZETA,
A,B,LCHI,SCHI,UCHI,LMU,SMU,UMU,THETAIG,PHI,LAMDA,ETA;
'INTEGER' M,X,I,J,CHOICE;
'REAL' 'PROCEDURE' EM(Y,L); 'VALUE' Y,L; 'REAL' Y; 'INTEGER' L;
'BEGIN' 'REAL' S, Q; 'INTEGER' R;
'IF' L = 0 'THEN' S:=1 'ELSE' 'BEGIN' S:=1; Q:=1;
'FOR' R:=1 'STEP' 1'UNTIL' L 'DO' 'BEGIN' Q:=Q*Y/R; S:=S+Q 'END';
EM:=S 'END'; 'END' OF PROCEDURE EM;
'INTEGER' 'PROCEDURE' FA(X); 'VALUE' X; 'INTEGER' X; 'BEGIN'
'INTEGER' I,P; 'IF' X = 0 'THEN' P:=1'ELSE' 'BEGIN' P:=1;
==== ercc07/emas-2900/sup26esrce_sup26es.txt ====
!
! TO MAKE S SERIES SUPERVISOR REQUIRES:-
! 1) CHANGE SSERIES=NO TO SSERIES=YES IN CTOPTIONS FILE
! 2) REPLACE COMF BY S SERIES COM IN ERCC08.COMSF
!
!
! THESE CONST INTEGERS DEFINE SIZES AND LAYOUT OF IMPORTANT TABLES
! THEY HAVE TO BE HERE TO BE GLOBAL TO ALL ROUTINES INCLUDING IO ONES
!
%CONSTINTEGER LSTLEN=192; ! LOCAL SEGMENT TABLE LENGTH
%CONSTLONGINTEGER LCACR=1; ! ACR OF LOCAL CONTROLLER
%CONSTINTEGER DIRCSEG=10; ! SEG NO OF DIRECTOR COMMS SEG
%CONSTINTEGER DIRCSEGOFFSET=0; ! FOR ALIGNMENT IF NEEDED
%CONSTINTEGER DIRCSEGAD=DIRCSEG<<18; ! VIRTUAL ADDRESS OF DIR COM SEG
%CONSTINTEGER DIRCSEGL=2048+255+LSTLEN; ! SIZE OF SMAE
! MADE UP OF 2049 FOR CBT
! LSTLEN FOR SST
! 48+64 FOR 2 BITS OF SYTEMCALL TABLE
! 32+48 FOR DIROUTP&SIGOUT
%CONSTINTEGER LSTACKLEN=3; ! LOCAL CONT. STACK ELEN
==== ercc07/emas-2900/imp80tests_rt10.txt ====
%BEGIN
%RECORDFORMAT F1(%INTEGER I,J,K,L)
%RECORDFORMAT F2(%INTEGER P,%RECORD(F1)%ARRAY A(0:8))
%RECORD(F2) R,RP
%RECORD(F2)%NAME RR
%RECORD(F1)%NAME RN
%INTEGER I,J,K,L
RR==RP
I=ADDR(R_A(0))
RN==R_A(0)
J=ADDR(R_A(0)_K)
K=ADDR(RR_A(0))
L=ADDR(RR_A(0)_K)
RN==RR_A(0)
%IF I+8=J %AND ADDR(R)+4=I %AND K+8=L %C
%AND ADDR(RR)+4=K=ADDR(RN) %THEN PRINTSTRING("
BYTE ADDRESS ANSWERS OK
") %AND %STOP
%IF I+4=J %AND ADDR(R)+2=I %AND K+4=L %C
%AND ADDR(RR)+2=K=ADDR(RN) %THEN PRINTSTRING("
WORD ADDRESS ANSWERS OK
==== ercc07/emas-2900/sup27bsrce_makechkd.txt ====
PARM FREE,NOCHECK,NOLIST,STACK
IMP80 CTOPT+SUP27BSRCE_SUP27BS,SUPZZ,,.OUT
IMP80 CTOPT+SUP27BSRCE_COM33S,COMZZ,,.OUT
IMP80 CTOPT+SUP27BSRCE_PRINT06S,PRINTZZ,,.OUT
IMP80 CTOPT+SUP27BSRCE_OPER34S,OPERZZ,,.OUT
IMP80 CTOPT+SUP27BSRCE_ENTER10S,ENTERZZ,,.OUT
PARM FREE,OPT,STACK,NOLIST
IMP80 CTOPT+SUP27BSRCE_GPC37S,GPCZZ,,.OUT
IMP80 SUP27BSRCE_NDIAG07S,NDIAGZZ,,.OUT
IMP80 CTOPT+SUP27BSRCE_COMMS49S,COMMSZZ,,.OUT
IMP80 CTOPT+SUP27BSRCE_FAST35S,FASTZZ,,.OUT
IMP80 CTOPT+SUP27BSRCE_TAPE72S,TAPEZZ,,.OUT
PARM MAP
LINK
SUPZZ
COMZZ
PRINTZZ
OPERZZ
ENTERZZ
GPCZZ
NDIAGZZ
==== ercc07/emas-2900/imp80tests_rt11.txt ====
%BEGIN
!***********************************************************************
!* SHOULD RUN WITHOUT OPUT. LOOPS ON SOME COMPILERS DUE TO *
!* MISSING LABELS GIVING JUMPS WITH ZERO OFFSET *
!***********************************************************************
%INTEGER I,K,L
%CONSTINTEGER J=0
I=4000; L=10
%IF I>4095 %AND J#0 %THEN I=I+1
%IF I>4095 %AND J#0 %THEN I=I+1 %ELSE I=I-1
%IF I>4095 %AND J#0 %THEN %START; %FINISH
%IF I>4095 %AND J#0 %THEN %START
I=I+1
%FINISH %ELSE I=I-1
%IF (I>4095 %AND J#0 ) %AND L=1 %THEN I=I+1
%IF (I>4095 %AND J#0) %OR L=1 %THEN I=I+1
%UNLESS I>4095 %AND J#0 %THEN I=I+1
%UNLESS I>4095 %AND J#0 %THEN I=I+1 %ELSE I=I-1
%UNLESS I>4095 %AND J#0 %THEN %START; %FINISH
%UNLESS I>4095 %AND J#0 %THEN %START
I=I+1
==== ercc07/emas-2900/impalgs_makeal50.txt ====
EDIT NRALG06S,ALGOL50S
(M.!*DELSTART.D.!*DELEND.D1)999
TR.RELEASE .I.VERSION 50.D.PDS.
A.DATED .D1
TM.FROM2.P1D1M.FN FROM2.P1D.%END.D1
T(R.FROM2.I.ASLIST.A.).I._S2.P1)99
TM.FROM3.P1D1M.FN FROM3.P1D.%END.D1
T(R.FROM3.I.ASLIST.A.).I._S3.P1)999
TM.FROM1(.P1D1M.FN FROM1.P1D.%END.D1
T(R.FROM1(.I.ASLIST(.A.).I._S1.P1)999
TM.REPLACE1(.P1D1M.INE REPLACE1(.P1D.%END.D1
T(R.REPLACE1(.I.ASLIST(.R.,.I.)_S1=(.P1)999
TM.REPLACE2(.P1D1M.INE REPLACE2(.P1D.%END.D1
T(R.REPLACE2(.I.ASLIST(.R.,.I.)_S2=(.P1)999
TM.REPLACE3(.P1D1M.INE REPLACE3(.P1D.%END.D1
T(R.REPLACE3(.I.ASLIST(.R.,.I.)_S3=(.P1)999
T(A.!QIN.I.;.)999
T(A.!QOUT.R1)999
E
PARM OPT,NOLIST
IMP ALGOL50S,ALGOL50X,.LP,.OUT
==== ercc07/emas-2900/imp80tests_rt12.txt ====
%BEGIN
!***********************************************************************
!* TESTS CLEARING RECORDARRAY FOR OVERWRITING OFF END *
!***********************************************************************
%INTEGER I
%RECORDFORMAT F(%STRING(15)NAME,%INTEGER I,J,K,%LONGREAL X,Y, %C
%LONGREALARRAY A(0:20))
%RECORD(F)%ARRAY ONE(1:100)
%RECORD(F)%ARRAY TWO(1:2)
TWO(1)_NAME="PETE"
%CYCLE I=1,1,100
ONE(I)=0
%REPEAT
%IF TWO(1)_NAME#"PETE" %THEN PRINTSTRING("***ERROR***")
%ENDOFPROGRAM
==== ercc07/emas-2900/rexhexs.txt ====
%EXTERNALROUTINE RXHEX(%STRING(255) S)
%LONGINTEGER L
%INTEGER I,J
%CONSTBYTEINTEGERARRAY CLASS(0:127)=255(48),
0,1,2,3,4,5,6,7,8,9,255(7),
10,11,12,13,14,15,255(*)
->ERROR %UNLESS LENGTH(S)=16
L=0
%FOR I=1,1,16 %CYCLE
J=CLASS(CHARNO(S,I))
->ERROR %IF J=255
L=L!(LENGTHENI(J)<<(64-4*I))
%REPEAT
PRINTFL(LONGREAL(ADDR(L)),16)
PRINTSTRING("{R'".S."'}")
PRINTSYMBOL(NL)
%RETURN
ERROR:
PRINTSTRING("???")
%END
%ENDOFFILE
==== ercc07/emas-2900/impalgs_makeal51.txt ====
EDIT NRALG06S,ALGOL51S
(M.!*DELSTART.D.!*DELEND.D1)999
TR.RELEASE .I.VERSION 51.D.PDS.
A.DATED .D1
TM.FROM2.P1D1M.FN FROM2.P1D.%END.D1
T(R.FROM2.I.ASLIST.A.).I._S2.P1)99
TM.FROM3.P1D1M.FN FROM3.P1D.%END.D1
T(R.FROM3.I.ASLIST.A.).I._S3.P1)999
TM.FROM1(.P1D1M.FN FROM1.P1D.%END.D1
T(R.FROM1(.I.ASLIST(.A.).I._S1.P1)999
TM.REPLACE1(.P1D1M.INE REPLACE1(.P1D.%END.D1
T(R.REPLACE1(.I.ASLIST(.R.,.I.)_S1=(.P1)999
TM.REPLACE2(.P1D1M.INE REPLACE2(.P1D.%END.D1
T(R.REPLACE2(.I.ASLIST(.R.,.I.)_S2=(.P1)999
TM.REPLACE3(.P1D1M.INE REPLACE3(.P1D.%END.D1
T(R.REPLACE3(.I.ASLIST(.R.,.I.)_S3=(.P1)999
T(A.!QIN.I.;.)999
T(A.!QOUT.R1)999
E
PARM OPT,NOLIST
IMP ALGOL51S,ALGOL51X,.LP,.OUT
==== ercc07/emas-2900/imp80tests_rt13.txt ====
%BEGIN
!***********************************************************************
!* TESTS ASSIGNING TO STRING ARRAYS WHEN PASSED BY NAME *
!***********************************************************************
%STRING(11)%ARRAY A(0:15,0:15)
%ROUTINE FRED(%STRINGARRAYNAME WA)
%STRING(15)W
%INTEGER WP
WP=1
W=WA(WP,WP)
%IF W="?" %THEN WA(WP,WP)="ABCD"
%END
A(1,1)="?"
FRED(A)
PRINTSTRING(A(1,1))
%ENDOFPROGRAM
==== ercc07/emas-2900/imp80tests_rt14.txt ====
%BEGIN
!***********************************************************************
!* A TEST TO CHECK THE LINE NUMBER OF A FAILURE AT RUN TIME *
!***********************************************************************
%INTEGERARRAY A(0:4)
%INTEGER I
I=10
%IF 1<0 %THEN %START
!
!
%STOP
%FINISH %ELSE A(I)=A(I)+1
!
%ENDOFPROGRAM
==== ercc07/emas-2900/sup26fsrce_samplectopt.txt ====
!
! THIS FILE CONTAINS THE CONST INTEGERS TO CONTROL COMPILE TIME OPTIONS
! IN EMAS2900
! IT IS INTENDED TO BE CONCATENATED ONTO THE FRONT OF SOURCEFILES
! BEFORE COMPILATION
%CONSTINTEGER YES=1
%CONSTINTEGER NO=0
%CONSTINTEGER SSERIES=NO; ! NO=PSERIES, YES=SSERIES
%CONSTINTEGER MULTIOCP=NO; ! YES TO INCLUDE SEMAPHORING
%CONSTINTEGER SFCFITTED=YES; ! NO FOR DISC ONLY SITES
%CONSTINTEGER CPFITTED=YES; ! CARD PUNCH FITTED
%CONSTINTEGER SNOOZING=NO; ! YES ALLOWS SUSPEND IN STORE
! ADVANTAGEOUS WITH LARGE STORES
%CONSTINTEGER MONLEVEL=7; ! 0=NO MONITORING
! 2**0 SET=VIDEO UPDATING
! 2**1 SET=KMONNING
! 2**2 SET=SUP TIMING MEASUREMENTS
! 2**3 SET=CAT TABLE TRANSITIONS
! 2**4 SET= STROBING
! 2**8 SET=EVENT HARVESTING
==== ercc07/emas-2900/imp80tests_rt15.txt ====
%BEGIN
!***********************************************************************
!* TESTS SOME VERY NOTTED CONDITIONS FOR CONSISTENCY. NO OPUT IF OK *
!***********************************************************************
%INTEGER I,J,K
%ROUTINESPEC A
%ROUTINESPEC B
%ROUTINESPEC C
K=0
%CYCLE I=-1,1,1
%CYCLE J=0,1,3
%IFNOTNOTNOTNOT I=1 %THEN A %ELSE B
%IFNOT (%NOT I=1) %THEN A %ELSE B
%IF I=1 %THEN A %ELSE B
C
%IFNOT I=1 %THEN A %ELSE B
%UNLESS I=1 %THEN A %ELSE B
C
%IF I=1 %AND J#2 %THEN A %ELSE B
%IF I=1 %ANDNOT J=2 %THEN A %ELSE B
==== ercc07/emas-2900/imp80tests_rt16.txt ====
%BEGIN
%INTEGER I
%RECORDFORMAT F(%BYTEINTEGER B1,(%BYTEINTEGER B2,B3,B4,B5,B6,B7,B8 %C
%OR %STRING(6)S) %OR %INTEGER I1,I2 %OR %LONGREAL L1)
%RECORD(F) R
WRITE(ADDR(R_B1),9); NEWLINE
WRITE(ADDR(R_I1),9); NEWLINE
WRITE(ADDR(R_L1),9); NEWLINE
WRITE(ADDR(R_B8),9)
%ENDOFPROGRAM
==== ercc07/emas-2900/imp80tests_rt17.txt ====
%BEGIN
%RECORDFORMAT F(%INTEGER I,J,%RECORD(F)%NAME LINK)
%INTEGER LB,UB
LB=0; UB=255
%RECORD(F)%ARRAY A(LB:UB)
%RECORD(F)%NAME RN
%INTEGER I,J
%CYCLE I=0,1,X'FE'
A(I)_LINK==A(I+1)
%REPEAT
A(x'ff')_LINK==RECORD(0)
J=0; I=0
RN==A(0)
%WHILE RN_LINK\==RECORD(0) %CYCLE
J=J+1
RN==RN_LINK
%REPEAT
%IF J#255 %THEN PRINTSTRING("WRONG TOTAL") %AND WRITE(J,5)
%ENDOFPROGRAM
==== ercc07/emas-2900/kntptanal.txt ====
!***********************************************************************
!*
!* PAGETURN monitoring analysis program
!*
!* Copyright (C) R.D. Eager University of Kent MCMLXXXI
!*
!***********************************************************************
!
!
!***********************************************************************
!*
!* Constants
!*
!***********************************************************************
!
%CONSTINTEGER MAXEPAGE = 120*64-1; ! Maximum number of epages in VM
%CONSTBYTEINTEGERARRAY HEX(0:15) = %C
'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'
!
!
!***********************************************************************
==== ercc07/emas-2900/com35s.txt ====
!
!* Communications record format - extant from CHOPSUPE 22A onwards *
!*
%RECORDFORMAT COMF(%INTEGER OCPTYPE,SLIPL,SBLKS,SEPGS,NDISCS,DLVNADDR, %C
(%INTEGER GPCTABSIZE,GPCA %OR %INTEGER DCUTABSIZE,DCUA), %C
%INTEGER SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,TOJDAY,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,SERVAAD, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0,%INTEGER ITINT,CONTYPEA, %C
(%INTEGER GPCCONFA %OR %INTEGER DCUCONFA), %C
%INTEGER FPCCONFA,SFCCONFA,BLKADDR,RATION, %C
(%INTEGER SMACS %OR %INTEGER SCUS), %C
%INTEGER TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,FEPS, %C
MAXCBT,PERFORMAD,SP1,SP2,SP3,SP4,SP5,SP6, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
HBIT,SLAVEOFF,INHSSR,SDR1,SDR2,SDR3, %C
SDR4,SESR,HOFFBIT,BLOCKZBIT,BLKSHIFT,BLKSIZE,END)
==== ercc07/emas-2900/imp80tests_rt18.txt ====
%BEGIN
%STRING(30)BATTLE
%STRING(5)T
BATTLE="HASTINGS1066"
%UNLESS BATTLE->("10") %THEN PRINTSTRING("NEW RESLN NOT OK")
%UNLESS BATTLE->("ST").("6").T %AND T="6" %THEN %C
PRINTSTRING("DOUBLE RESLN NOT OK")
%ENDOFPROGRAM
==== ercc07/emas-2900/imp80tests_rt19.txt ====
%BEGIN
%STRING(31)%ARRAY NAMES(0:99)
%ROUTINESPEC STRINGSORT(%STRINGARRAYNAME X,%INTEGER F,T)
%INTEGER I,N
READ(N)
READSTRING(NAMES(I)) %FOR I=1,1,N
STRINGSORT(NAMES,1,N)
PRINTSTRING(NAMES(I).TOSTRING(NL)) %FOR I=1,1,N
%ROUTINE STRINGSORT(%STRINGARRAYNAME X,%INTEGER FROM,TO)
%INTEGER L,U
%STRING(255)D
%RETURN %IF FROM>=TO; ! NOTHING (LEFT) TO SORT
L=FROM; U=TO
D=X(U); ! THE PARTITION BOUND
%CYCLE
L=L+1 %WHILE L<U %AND D>X(L)
%EXIT %IF L>=U
X(U)=X(L);
U=U-1 %WHILE L<U %AND X(U)>D
X(L)=X(U)
==== ercc07/emas-2900/docs_wplangsup.txt ====
Memo to:Dr. G.E.Thomas
Report of the Working Party on Languages.
I draw your attention to my Memo 0f 30.11.81 and I attach a copy. The lack
of expertise I commented on then has resulted in a report based on serious
misunderstandings of some of the technical issues.
Comments on section B
______________________
There is general lack of distinction between the benefits of language
design, the benefits of International Standards and the benefits of User
expertise. A nebulous cloak of the value of "integration" and "support" is cast
lightly over this whole area. The benefits Imp is alleged to gain from
"integration" with EMAS is almost entirely a myth. Similarly efforts devoted
to providing better "integration" of Pascal and Fortran will be largely wasted
unless the International Standards are abandoned.
==== ercc07/emas-2900/imp80tests_rt20.txt ====
%BEGIN
! TESTS PASSING RECORD BY VALUE. NO OUTPUT IF OK
%RECORDFORMAT F(%INTEGER I,J,K,%RECORD(F)%NAME LINK)
%ROUTINESPEC FRED(%INTEGER I,%RECORD(F)R)
%RECORD(F) P,Q
P_I=10; P_J=11
Q=P
FRED(1,Q)
P=0; Q=0;
FRED(2,0)
%ROUTINE FRED(%INTEGER DUMMY,%RECORD(F)R)
%IF R_I#P_I %AND R_J#P_J %THEN %MONITOR
R_I=33; R_J=1
%IF P_I#Q_I %AND P_J#Q_J %THEN %MONITOR
%END
%ENDOFPROGRAM
==== ercc07/emas-2900/imp80tests_rt21.txt ====
%BEGIN
! CHECKS THAT ASSIGNMENT OF STRINGS OF FIXED LENGTH WITH
! L>128 DO NOT LOES CHARARCTERS
%STRING(255)%ARRAY L(0:1)
L(1)="
0123456789012345678901234567890123456789012345678901234567890
0123456789012345678901234567890123456789012345678901234567890
0123456789012345678901234567890123456789012345678901234567890
"
PRINTSTRING("L1=".L(1)."
")
%ENDOFPROGRAM
==== ercc07/emas-2900/impalgs_makeal60.txt ====
EDIT NRALG08S,ALGOL60S
(M.!*DELSTART.D.!*DELEND.D1)999
TR.RELEASE .I.VERSION 60.D.PDS.
A.DATED .D1
TR.VMEB=NO.I.VMEB=YES.
TM.FROM2.P1D1M.FN FROM2.P1D.%END.D1
T(R.FROM2.I.ASLIST.A.).I._S2.P1)99
TM.FROM3.P1D1M.FN FROM3.P1D.%END.D1
T(R.FROM3.I.ASLIST.A.).I._S3.P1)999
TM.FROM1(.P1D1M.FN FROM1.P1D.%END.D1
T(R.FROM1(.I.ASLIST(.A.).I._S1.P1)999
TM.REPLACE1(.P1D1M.INE REPLACE1(.P1D.%END.D1
T(R.REPLACE1(.I.ASLIST(.R.,.I.)_S1=(.P1)999
TM.REPLACE2(.P1D1M.INE REPLACE2(.P1D.%END.D1
T(R.REPLACE2(.I.ASLIST(.R.,.I.)_S2=(.P1)999
TM.REPLACE3(.P1D1M.INE REPLACE3(.P1D.%END.D1
T(R.REPLACE3(.I.ASLIST(.R.,.I.)_S3=(.P1)999
E
PARM OPT,NOLIST
IMP ALGOL60S,ALGOL60X,.LP,.OUT
PERMIT ALGOL60S
==== ercc07/emas-2900/imp80tests_rt22.txt ====
%begin
%string(10) s,t
%constintegername fred = x'244444' {This should fail in SM IMP}
{Changing = to == would make it fail in EMAS IMP}
%externalinteger jjfred=7
%ownintegerarray opcode(0:20) = {opcode values; the next line is blank - N.B.}
16_5800, 16_4800, 16_5000, 16_4000,
{ L LH ST STH}
16_5A00, 16_5B00, 16_5C00, 16_5D00,
{ A S M D}
16_1A00, 16_1B00, 16_1C00, 16_1D00,
{ AR SR MR DR}
-1(*) {all the rest}
%string(9)%name sref
%integer i,j,k
%ownintegerarray twod(1:2,1:3) = 1,2,3,4,5,6
%real d
i=10; j = 3; k=1
! This is a comment; this is part of it
i{this is an embedded comment; I hope it { works} = j\\k
==== ercc07/emas-2900/imp80tests_rt23.txt ====
%BEGIN
%INTEGER I
%INTEGERNAME P,Q
%STRING(10)S
%STRINGNAME X,Y
%ROUTINESPEC TEST(%INTEGERNAME T1,%STRINGNAME T2)
I=10; S="MESS"
P==I; Q==P
X==S
Y==STRING(0)
%UNLESS Q=10 %AND Q==I %AND P==Q %THEN %C
PRINTSTRING("BUG1 FOUND")
TEST(P,X)
TEST(Q,X)
%ROUTINE TEST(%INTEGERNAME T1,%STRINGNAME T2)
%UNLESS T1==I %AND T2==S %THEN %C
PRINTSTRING("BUG2 FOUND")
%END
%ENDOFPROGRAM
==== ercc07/emas-2900/imp80tests_rt24.txt ====
%BEGIN
%ROUTINE TEST(%ROUTINE PARAM(%INTEGER I))
PARAM(10)
%END
%ROUTINE A
%INTEGER P,Q,R
P='P'; Q='Q'; R='R'
%ROUTINE B(%INTEGER A)
%UNLESS P='P' %AND Q='Q' %AND R='R' %THEN PRINTSTRING("FAILED")
WRITE(A,5)
%END
TEST(B)
%END
A
%ENDOFPROGRAM
==== ercc07/emas-2900/sup27csrce_mindiags.txt ====
%EXTERNALSTRINGFNSPEC STRHEX(%INTEGER I)
%SYSTEMROUTINE NDIAG(%INTEGER PCOUNT, LNB, FAULT, INF)
!***********************************************************************
!*_______'MASTER DIAGNOSTIC ROUTINE'. DISCOVERS THE LANGUAGE OF THE *
!*_______FAILED ROUTINE FROM WORD 4 OF THE GLA AND CALLS APPROPRIATE *
!*_______DIAGNOSTIC ROUTINE. THIS IS REPEATED TILL ALL DIAGNOSTICS *
!*_______GIVEN. *
!*_______PCOUNT = PCOUNTER AT FAILURE *
!*_______LNB = LOCAL NAME BASE AT FAILURE *
!*_______FAULT = FAILURE (0=%MONITOR REQUESTED) *
!*_______INF =ANY FURTHER INFORMATION *
!***********************************************************************
PRINTSTRING("
MINIMUM NDIAGS ENTERED
FAULT NO ="); WRITE(FAULT,2)
PRINTSTRING("
PC=X".STRHEX(PCOUNT)."
LNB=X".STRHEX(LNB)."
")
%IF FAULT>0 %THEN %STOP
%END
==== ercc07/emas-2900/imp80tests_rt25.txt ====
%BEGIN
%CONSTINTEGER NMAX=20
%ROUTINESPEC TEST MATRIX(%LONGREALARRAYNAME A, %INTEGER N)
%ROUTINESPEC HOUSEHOLDER(%LONGREALARRAYNAME A,W, %INTEGER N,K)
%INTEGER I
%LONGREALARRAY A(1:NMAX,1:NMAX)
%LONGREALARRAY W(1:NMAX)
TEST MATRIX(A,NMAX)
PRINTSTRING("
TEST MATRIX EIGENVALUES
")
HOUSEHOLDER(A,W,NMAX,1)
%CYCLE I=1,1,NMAX
PRINT FL(W(I),8)
NEWLINE
%REPEAT
%STOP
%ROUTINE TEST MATRIX(%LONGREALARRAYNAME A, %INTEGER N)
%INTEGER I,J
%LONGREAL T,C,D,F
==== ercc07/emas-2900/imp80tests_rt26.txt ====
%BEGIN
%EXTERNALROUTINESPEC DEFINE(%STRING(255)S)
%OWNINTEGER INSTREAM=3
%INTEGER SYM
%ROUTINE READSYM
%ON %EVENT 9 %START
%IF INSTREAM=1 %START
SYM='*'
%RETURN
%FINISH
INSTREAM=INSTREAM-1
SELECT INPUT(INSTREAM)
%FINISH
READ SYMBOL(SYM)
%END
DEFINE("ST1,IMP80TESTS_BLURB")
DEFINE("ST2,.NULL")
DEFINE("ST3,.NULL")
SELECT INPUT (INSTREAM)
%CYCLE
==== ercc07/emas-2900/imp80tests_rt27.txt ====
%BEGIN
%INTEGER I,L1,L2,L3
%STRING(12)S
%RECORDFORMAT F(%STRING(8) SS1,%STRINGNAME SN)
%RECORD(F)R
%STRING(4) SN,SNN
I=ADDR(SN)
S="TESTTESTTEST"
SN<-S
L1=LENGTH(STRING(I))
R_SS1<-S
R_SN==SNN
R_SN<-S
L2=LENGTH(R_SS1)
L3=LENGTH(SNN)
%IF L1=4 %AND L2=8 %AND L3=4 %AND SN=SNN="TEST" %AND %C
R_SS1="TESTTEST" %THEN PRINTSTRING("TEST OK") %C
%ELSE PRINTSTRING("WRONG ANSWERS") %AND %MONITOR
%ENDOFPROGRAM
==== ercc07/emas-2900/perqgen01s.txt ====
%INCLUDE "ERCC07.TRIMP_HOSTCODES"
%CONSTINTEGER HOST=EMAS
%CONSTINTEGER TARGET=PERQ
%INCLUDE "ERCC07.PERQCODE1S"
%INCLUDE "ERCC07.TRIPCNSTS"
%INCLUDE "ERCC07.TRIMP_TFORM1S"
%IF HOST=PERQ %OR HOST=ACCENT %OR HOST=IBM %OR HOST=IBMXA %START
%RECORDFORMAT RTDICTF(%SHORTINTEGER PS,RPS,LTS,ENTRY,EXIT,
LL,W7,W8,DIAGS,W10,%INTEGER W1112)
%FINISH %ELSE %START
%RECORDFORMAT RTDICTF(%HALFINTEGER PS,RPS,LTS,ENTRY,EXIT,
LL,W7,W8,DIAGS,W10,%INTEGER W1112)
%FINISH
%OWNINTEGER CABUF,GLACABUF
%OWNINTEGERNAME CA,GLACA
%OWNINTEGER PPCURR,GLACURR
%OWNBYTEINTEGERARRAY CODE(0:268)
%OWNBYTEINTEGERARRAY GLABUF(0:268)
%OWNINTEGERARRAYNAME CTABLE,TAGS
%OWNRECORD(LISTF)%ARRAYNAME ASLIST
%EXTRINSICRECORD(WORKAF)WORKA
==== ercc07/emas-2900/imp80tests_rt28.txt ====
%begin
%routine Tabulate (%longrealfn func(%longreal x),%longreal from,to,
%integer steps)
! func(x) is the dummy formal function
%real value,inc
%integer i
!
inc=(to-from)/steps
!
value=from
%for i=1,1,steps %cycle
print(value,4,2) ; print(func(value),10,4) ; newline
value=value+inc
%repeat
%end ;! of routine tabulate
!
! now call with some functions....
printstring("
x sine(x)
")
==== ercc07/emas-2900/imp80tests_rt29.txt ====
%BEGIN
%INTEGER I,J,K
%CYCLE I=1,1,16
K=2
K=K****I
%CYCLE J=0,1,4
%IF K<<J#K*2****J %THEN PRINTSTRING("<< ERROR")
%IF K>>J#K//(2****J) %THEN PRINTSTRING(">> ERROR")
%REPEAT
%REPEAT
%ENDOFPROGRAM
==== ercc07/emas-2900/sup28dsrce_comms54s.txt ====
! R.D.EAGER CONTAINS CODE FOR OUTPUT ACCOUNTS IN COMM CONTROL,
! LP ADAPTOR AND CP ADAPTOR
! VERSION OF 13/06/80
! DEC 79: INCLUDE AN OPER ADAPTOR
! HAVE ONLY ONE SERVICE NUMBER, X'37'
! OTHER POSSIBLE CHANGES
! MAKE INITIALISATION CALL OF CC INITIALISE ADAPTORS AS WELL
! MAKE IT POSSIBLE TO DEALLOCATE/ALLOCATE ALL DEVICES
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20A ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,WASKLOKCORRECT,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,DQADDR, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0, %C
%INTEGER ITINT,CONTYPEA,GPCCONFA,FPCCONFA,SFCCONFA, %C
BLKADDR,DPTADDR,SMACS,TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,SP0,SP1, %C
==== ercc07/emas-2900/topt01s.txt ====
%INCLUDE "ERCC07.PERQ_FORMAT3S"
%EXTRINSICRECORD(WORKAF) WORKA
%EXTRINSICRECORD(PARMF) PARM
%CONSTINTEGER YES=1
%CONSTINTEGER NO=0
%EXTERNALROUTINESPEC ABORT
%EXTERNALROUTINESPEC FAULT(%INTEGER N,DATA,IDENT)
%EXTERNALROUTINESPEC PRINT TRIPS(%RECORD(TRIPF)%ARRAYNAME TRIPLES)
%CONSTBYTEINTEGERARRAY WORDS(0:7)=0(3),1,1,2,4,8;
%ROUTINE EXTRACT(%RECORD(RD)%NAME OPND,%INTEGERNAME VAL, %C
%LONGREALNAME RVAL,%STRINGNAME STRVAL)
!***********************************************************************
!* EXTRACTS A CONTANT OPERAND RETURNING REAL &INT VALUES *
!***********************************************************************
%INTEGER TYPE,PREC,I,AD
TYPE=OPND_PTYPE; PREC=TYPE>>4
TYPE=TYPE&15
%IF TYPE=5 %START
%FOR I=0,1,OPND_XTRA %CYCLE
BYTEINTEGER(ADDR(STRVAL)+I)=WORKA_A(OPND_D+I)
==== ercc07/emas-2900/nrsrce_sform03s.txt ====
! DRIVING EDSS VIA A DCU WRITTEN BY PDS DEC 78
!
%RECORDFORMAT PARMF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6)
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 18D ONWARDS *
! Alterations from above-mentioned record format, for the S-series, are
! as follows:
! GPCTABSIZE -> DCUTABSIZE
! GPCA -> DCUA
! SMACS -> SCUS
! GPCCONFA -> DCUCONFA
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,DCUTABSIZE,DCUA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,KLOKCORRECT,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,PROCMON,DQADDR, %C
SACPORT,OCPPORT,ITINT,CONTYPEA,DCUCONFA,FPCCONFA,SFCCONFA, %C
BLKADDR,DPTADDR,SCUS,TRANS,%LONGINTEGER KMON, %C
%INTEGER SPDRQ,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,%INTEGERARRAY SP(0:13), %INTEGER %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
HBIT,SLAVEOFF,INHSSR,SDR1,SDR2,SDR3, %C
==== ercc07/emas-2900/imp80tests_rt30.txt ====
%BEGIN
%OWNINTEGER LABELNO=0
%CONSTINTEGER MAXLABELS=10
%OWNSTRING(15)%ARRAY LBLNAME(0:MAXLABELS)
%OWNSTRING(255)%ARRAY LBL(0:MAXLABELS)
%STRINGMAP LABEL(%STRING(15) L)
%INTEGER I
%IF LABELNO>0 %THENSTART
%FOR I=1,1,LABELNO %CYCLE
%RESULT==LBL(I) %IF LBLNAME(I)=L
%REPEAT
%FINISH
! INSERT NEW LABEL-NAME.
LABELNO=LABELNO+1
%IF LABELNO>MAXLABELS %THENSTART
PRINT STRING(L." MAKES TOO MANY LABELS."); NEWLINE
%FOR I=1,1,MAXLABELS %CYCLE
PRINT STRING(LBLNAME(I))
NEWLINE
%REPEAT
==== ercc07/emas-2900/sup27fsrce_documentn.txt ====
This partitioned file contains all the source required to make up
an EMAS2900 Supervisor, plus the version of the IMP80 compiler and FIX
utility used at Edinburgh to do so. This compiler is necessary as some
advanced language features are required which are not available in the
service compiler.
Note that the OPTION NOBRACKETS must be in force in the process being
used for the method described to work.
Two "OBEY" subfiles are available: MAKECHKD and MAKEOPT. They each
construct a test Supervisor which is left in file SUP27xT, where x is
'C' or 'O' respectively.
Making a Supervisor thus consists of the following:
a) INSERT the IMP80 compiler and FIX utility into the current directory
(and then log off and log on again if IMP80 was previously used in
==== ercc07/emas-2900/imp80tests_rt31.txt ====
%BEGIN
%STRING(30)S,T,U
%ROUTINESPEC CHECK(%STRING(30) P,Q,R)
S=""; T=S
PRINTSTRING("BUG0") %UNLESS T=""
CHECK(S,T,"")
S="ABCD"; T=S
CHECK(S,T,"ABCD")
%UNLESS "MAST"<="MEST"<="MOST" %THEN PRINTSTRING("BUG1")
S="MAST"; T="MEST"; U="MOST"
%UNLESS S<=T<=U %THEN PRINTSTRING("BUG2")
%ROUTINE CHECK(%STRING(30) P,Q,R)
PRINTSTRING("CHECK FAILS") %UNLESS %C
P=S %AND Q=R %AND P=Q=R
%END
%ENDOFPROGRAM
==== ercc07/emas-2900/sup26csrce_gpc28s.txt ====
%CONSTINTEGER NO = 0
%CONSTINTEGER YES = 1
%CONSTINTEGER MULTIOCP = NO
!----------------------------------------------------------------------------------------------------
!
!
%CONSTSTRING(15) VSN = "GPC28 29 APR 80"
!
!
! %EXTERNAL ROUTINE GPC(%RECORDNAME P)
!
! 1. CONVENTIONS
! THE RECORD SPEC FOR THE PARAMETER IS
! %RECORDFORMAT PARMF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6)
! WHERE
! DEST IS CONSIDERED AS TWO HALF WORDS DSNO AND DACT. DSNO
! MUST BE GPC'S DSNO (PICKED UP DURING INITIALISATION)
! DACT IS SET ACCORDING TO THE FUNCTION REQUIRED.
!
! SRCE IS CONSIDERED AS TWO HALFWORDS SSNO AND SACT.
! SSNO IS SNO OF ORIGINATOR AND SACT IS DACT FOR
==== ercc07/emas-2900/sup27isrce_gpc39s.txt ====
%CONSTSTRING (25) VSN="GPC39 18th Nov 1981"
!************************************************GPC GPC GPC
!*
!* EMAS 2900 SUPERVISOR NOTE
!* No: 5
!* Date: 21/05/80
!* Author: A.Gibbons
!*
!*
!* %EXTERNAL ROUTINE GPC(%RECORD(PARMF)%NAME P)
!*
!* 1. CONVENTIONS
!* The record spec for the parameter is
!* %RECORDFORMAT PARMF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6)
!* where
!* DEST is considered as two half words DSNO and DACT. DSNO
!* must be GPC's DSNO
!* DACT is set according to the function required.
!*
!* SRCE is considered as two halfwords SSNO and SACT.
==== ercc07/emas-2900/sup26isrce_comms48s.txt ====
! VERSION OF 13/06/80
! DEC 79: INCLUDE AN OPER ADAPTOR
! HAVE ONLY ONE SERVICE NUMBER, X'37'
! OTHER POSSIBLE CHANGES
! MAKE INITIALISATION CALL OF CC INITIALISE ADAPTORS AS WELL
! MAKE IT POSSIBLE TO DEALLOCATE/ALLOCATE ALL DEVICES
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20A ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,WASKLOKCORRECT,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,DQADDR, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0, %C
%INTEGER ITINT,CONTYPEA,GPCCONFA,FPCCONFA,SFCCONFA, %C
BLKADDR,DPTADDR,SMACS,TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,SP0,SP1, %C
SP2,SP3,SP4,SP5,SP6,SP7,SP8, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
==== ercc07/emas-2900/imp80tests_rt32.txt ====
%BEGIN
%RECORDFORMAT LEVELF(%INTEGER I,J,K)
%RECORDFORMAT WORKAF(%INTEGER NNAMES,CCSIZE,DSIZE,ASL MAX,ASL CUR BTM,
CONST PTR,CONST BTM,DICTBASE,WKFILEAD,WKFILEK,FILE ADDR,RELEASE,
AASL0,CONST LIMIT,RTCOUNT,ARTOP,SP1,SP2,SP3,
%INTEGERNAME LINE,%STRING(9)LADATE,
%BYTEINTEGERARRAYNAME CC,A,
%INTEGERARRAYNAME WORD,TAGS,CTABLE,
%RECORD(LEVELF)%ARRAYNAME LEVELINF,
%INTEGERARRAY PLABS,PLINK(0:31))
%OWNRECORD(WORKAF)%name WORKA
%record(workaf) work
%BYTEINTEGERARRAY A(0:100)
%INTEGER I
%BYTEINTEGERARRAYNAME B,C
WORK=0
worka==work
B==ARRAY(ADDR(A(0)),A)
WORKA_CC==B
C==WORKA_CC
%CYCLE I=0,1,9
==== ercc07/emas-2900/imp80tests_rt33.txt ====
! SIMPLE TEST OF BYTE POINTER VARIABLES AFTER PERQ
%BEGIN
%BYTEINTEGERARRAY a(1:10)
%BYTEINTEGERNAME ap
%INTEGER i
%ROUTINE or(%BYTEINTEGERNAME x)
x=x!64
%END
a(i)=i %FOR i=1,1,10
or(a(i)) %FOR i=1,1,10
%FOR i=1,1,10 %CYCLE
ap==a(i)
ap=ap!128
write(a(i),4) %UNLESS a(i)=i!x'c0'
%REPEAT
%ENDOFPROGRAM
==== ercc07/emas-2900/imp80tests_rt34.txt ====
%BEGIN
%STRING(5) %ARRAY a(1:10)
%STRING(5) %NAME ap
%INTEGER i
%ROUTINE conc(%STRING(5) %NAME x)
x=x."a"
%END
a(i)=tostring(i+'0') %FOR i=1,1,10
conc(a(i)) %FOR i=1,1,10
%FOR i=1,1,10 %CYCLE
ap==a(i)
ap=ap."b"
printstring(a(i)) %UNLESS a(i)=tostring(i+'0')."ab"
%REPEAT
%ENDOFPROGRAM
==== ercc07/emas-2900/imp80tests_rt35.txt ====
%BEGIN
%OWNINTEGER LABELNO=0
%CONSTINTEGER MAXLABELS=10
%RECORDFORMAT F(%BYTE B,%STRING(255)LAB)
%OWNSTRING(15)%ARRAY LBLNAME(0:MAXLABELS)
%OWNRECORD(F)%ARRAY LBL(0:MAXLABELS)
%RECORD(F)%MAP LABEL(%STRING(15) L)
%INTEGER I
%IF LABELNO>0 %THENSTART
%FOR I=1,1,LABELNO %CYCLE
%RESULT==LBL(I) %IF LBLNAME(I)=L
%REPEAT
%FINISH
! INSERT NEW LABEL-NAME.
LABELNO=LABELNO+1
%IF LABELNO>MAXLABELS %THENSTART
PRINT STRING(L." MAKES TOO MANY LABELS."); NEWLINE
%FOR I=1,1,MAXLABELS %CYCLE
PRINT STRING(LBLNAME(I))
NEWLINE
==== ercc07/emas-2900/imp80tests_rt36.txt ====
%BEGIN
%INTEGER I
%INTEGERFN FACT(%INTEGER N)
%IF N<=1 %THENRESULT=1
%RESULT=N*FACT(N-1)
%END
%ROUTINE COMPARE(%INTEGER I,J)
%UNLESS I=J %START
PRINTSTRING("ERROR")
WRITE(I,5); WRITE(J,5)
NEWLINE
%FINISH
%END
COMPARE(FACT(I),I*FACT(I-1)) %FOR I=2,1,10
%ENDOFPROGRAM
==== ercc07/emas-2900/impalgs_nrimpps5.txt ====
33
D(NAME)
D(ICONST)
D(CONST)
D(ONAME)
D(N)
D(S)
D(TEXT)
D(BIGHOLE)
D(N255)
D(HOLE)
D(MARK)
D(READLINE?)
D(CHKIMPS)
D(DUMMYAPP)
D(DOWN)
D(UP)
D(LISTON)
D(LISTOFF)
D(COLON)
D(NOTECONST)
==== ercc07/emas-2900/perqtrimp_perqponeas.txt ====
%CONSTINTEGER YES=1,NO=0
%CONSTINTEGER EMAS=10
%CONSTINTEGER PERQ=11
%CONSTINTEGER PUNIX=12
%CONSTINTEGER HOST=EMAS
%CONSTINTEGER TARGET=PERQ
%CONSTINTEGER LINTAVAIL=1<<EMAS
%CONSTINTEGER LLREALAVAIL=1<<EMAS
! PRODUCED BY OLDPS FROM TRIMP_PERQPS01 ON 06/09/83
%CONSTBYTEINTEGERARRAY CLETT(0: 436)= 1,
40, 1, 41, 1, 42, 1, 44, 2, 201, 198, 6, 213, 206, 204,
197, 211, 211, 5, 215, 200, 201, 204, 197, 5, 213, 206, 212, 201,
204, 3, 198, 207, 210, 1, 61, 5, 193, 204, 201, 193, 211, 7,
201, 206, 212, 197, 199, 197, 210, 4, 210, 197, 193, 204, 4, 204,
207, 206, 199, 4, 194, 217, 212, 197, 6, 211, 212, 210, 201, 206,
199, 4, 200, 193, 204, 198, 5, 211, 200, 207, 210, 212, 6, 210,
197, 195, 207, 210, 196, 7, 210, 207, 213, 212, 201, 206, 197, 2,
198, 206, 3, 205, 193, 208, 8, 198, 213, 206, 195, 212, 201, 207,
206, 4, 206, 193, 205, 197, 9, 193, 210, 210, 193, 217, 206, 193,
205, 197, 9, 207, 198, 208, 210, 207, 199, 210, 193, 205, 6, 207,
198, 198, 201, 204, 197, 6, 207, 198, 204, 201, 211, 212, 6, 198,
==== ercc07/emas-2900/imp80tests_rt37.txt ====
%BEGIN
%LONGINTEGER L,M,N
! TEST OF LINT & LINTPT
%LONGLONGREAL X
%INTEGER I,J
L=X'FEDCBA98FEDCBA98'
%FOR J=0,1,1 %CYCLE
%FOR I=0,1,30 %CYCLE
N=(-1)****J*(L>>I)
X=N
M=LINTPT(X)
%UNLESS N=M %START
%MONITOR
WRITE(I,1)
WRITE(N-M,5)
NEWLINE
%STOP
%FINISH
M=LINT(X)
==== ercc07/emas-2900/impalgs_nrimpps6.txt ====
33
D(NAME)
D(ICONST)
D(CONST)
D(ONAME)
D(N)
D(S)
D(TEXT)
D(BIGHOLE)
D(N255)
D(HOLE)
D(MARK)
D(READLINE?)
D(CHKIMPS)
D(DUMMYAPP)
D(DOWN)
D(UP)
D(LISTON)
D(LISTOFF)
D(COLON)
D(NOTECONST)
==== ercc07/emas-2900/imp80tests_rt38.txt ====
%BEGIN
%INTEGER I,J,K
I=3; J=4; K=5
%INTEGERARRAY A(0:3,2:4,1:5)
%INTEGERARRAY B(0:I,2:J,1:K)
%FOR I=0,1,3 %CYCLE
%FOR J=2,1,4 %CYCLE
%FOR K=1,1,5 %CYCLE
A(I,J,K)=M'A'<<24!I<<16!J<<8!K
B(I,J,K)=M'B'<<24!I<<16!J<<8!K
%REPEAT
%REPEAT
%REPEAT
%FOR I=0,1,3 %CYCLE
%FOR J=2,1,4 %CYCLE
%FOR K=1,1,5 %CYCLE
%IF A(I,J,K)&X'FFFFFF'#B(I,J,K)&X'FFFFFF' %START
PRINTSTRING("ERROR")
%MONITOR
%STOP
%FINISH
==== ercc07/emas-2900/impalgs_nrimpps7.txt ====
35
D(NAME)
D(ICONST)
D(CONST)
D(ONAME)
D(N)
D(S)
D(TEXT)
D(BIGHOLE)
D(N255)
D(HOLE)
D(MARK)
D(READLINE?)
D(CHKIMPS)
D(DUMMYAPP)
D(DOWN)
D(UP)
D(LISTON)
D(LISTOFF)
D(COLON)
D(NOTECONST)
==== ercc07/emas-2900/imp80tests_rt39.txt ====
%BEGIN
%BYTEINTEGER B
%HALFINTEGER H
%INTEGER I
%REAL X
%LONGREAL Y
%STRING(31) STR
%ROUTINE ONE(%BYTEINTEGER B,%HALFINTEGER H,%INTEGER I,
%REAL X,%LONGREAL Y,%STRING(31)STR)
%MONITOR %AND %STOP %UNLESS B=1 %AND H=2 %AND I=3 %C
%AND X=4 %AND Y=5 %AND STR="STR"
%END
%ROUTINE TWO(%BYTEINTEGERNAME B,%HALFINTEGERNAME H,%INTEGERNAME I,
%REALNAME X,%LONGREALNAME Y,%STRINGNAME STR)
%MONITOR %AND %STOP %UNLESS B=1 %AND H=2 %AND I=3 %C
%AND X=4 %AND Y=5 %AND STR="STR"
%END
B=1; H=2; I=3; X=4; Y=5; STR="STR"
ONE(1,2,3,4,5,"STR")
ONE(B,H,I,X,Y,STR)
TWO(B,H,I,X,Y,STR)
==== ercc07/emas-2900/impalgs_nrimpps8.txt ====
38
D(NAME)
D(ICONST)
D(CONST)
D(ONAME)
D(N)
D(S)
D(TEXT)
D(BIGHOLE)
D(N255)
D(HOLE)
D(MARK)
D(READLINE?)
D(CHKIMPS)
D(DUMMYAPP)
D(DOWN)
D(UP)
D(LISTON)
D(LISTOFF)
D(COLON)
D(NOTECONST)
==== ercc07/emas-2900/nrsrce_trantabs.txt ====
!
! MASTER RESIDENT TRANSLATE TABLES FOR EMAS2900
!
%CONSTBYTEINTEGERARRAY ITOETAB(0 : 255) = %C
X'00',X'01',X'02',X'03', X'37',X'2D',X'2E',X'2F',
X'16',X'05',X'25',X'0B', X'0C',X'0D',X'0E',X'0F',
X'10',X'11',X'12',X'13', X'3C',X'3D',X'32',X'26',
X'18',X'19',X'3F',X'27', X'1C',X'1D',X'1E',X'1F',
X'40',X'4F',X'7F',X'7B', X'5B',X'6C',X'50',X'7D',
X'4D',X'5D',X'5C',X'4E', X'6B',X'60',X'4B',X'61',
X'F0',X'F1',X'F2',X'F3', X'F4',X'F5',X'F6',X'F7',
X'F8',X'F9',X'7A',X'5E', X'4C',X'7E',X'6E',X'6F',
X'7C',X'C1',X'C2',X'C3', X'C4',X'C5',X'C6',X'C7',
X'C8',X'C9',X'D1',X'D2', X'D3',X'D4',X'D5',X'D6',
X'D7',X'D8',X'D9',X'E2', X'E3',X'E4',X'E5',X'E6',
X'E7',X'E8',X'E9',X'4A', X'E0',X'5A',X'5F',X'6D',
X'79',X'81',X'82',X'83', X'84',X'85',X'86',X'87',
X'88',X'89',X'91',X'92', X'93',X'94',X'95',X'96',
X'97',X'98',X'99',X'A2', X'A3',X'A4',X'A5',X'A6',
X'A7',X'A8',X'A9',X'C0', X'6A',X'D0',X'A1',X'07',
X'20',X'21',X'22',X'23', X'24',X'15',X'06',X'17',
==== ercc07/emas-2900/impalgs_nrimpps9.txt ====
38
D(NAME)
D(ICONST)
D(CONST)
D(CHXTYPE)
D(N)
D(S)
D(TEXT)
D(BIGHOLE)
D(N255)
D(HOLE)
D(MARK)
D(READLINE?)
D(CHKIMPS)
D(DUMMYAPP)
D(DOWN)
D(UP)
D(LISTON)
D(LISTOFF)
D(COLON)
D(NOTECONST)
==== ercc07/emas-2900/cserv01s.txt ====
%INCLUDE "ERCC07.TRIMP_HOSTCODES"
%CONSTINTEGER HOST=EMAS
%INCLUDE "ERCC07.trimp_TFORM2S"
%OWNINTEGERNAME ASL
%OWNRECORD(LISTF)%ARRAYNAME ASLIST
%EXTRINSICRECORD(WORKAF)WORKA
%EXTRINSICRECORD(PARMF)PARM
%EXTERNALROUTINE MOVE BYTES(%INTEGER LENGTH,FBASE,FOFF,TOBASE,TOOFF)
!************************************************************************
!* A MOVE BYTES ROUTINE THAT WILL WORK ON WORD&BYTE ADDRESS M-CS *
!***********************************************************************
%INTEGER I
AGN:
%RETURN %IF LENGTH<=0
%IF HOST=EMAS %START; ! EMAS BYTE ADDRESSES
I=X'18000000'+LENGTH
*LDA_TOBASE; *INCA_TOOFF; *LDTB_I
*LSS_FBASE; *IAD_FOFF; *LUH_I
*MV_%L=%DR
%FINISH %else %IF HOST=PERQ %START; ! WORD ADDRESS+BYTE OFFSET
FBASE=FBASE+FOFF>>1
==== ercc07/emas-2900/imp80tests_rt40.txt ====
%BEGIN
%STRING(255)%FN PRINTNAME(%INTEGER N)
%INTEGER V, K
%STRING(255)S
S="???"
%RESULT=S
%END
%STRINGFN MESSAGE(%INTEGER N)
!***********************************************************************
!* OUTPUTS AN ERROR MESSAGE STORED IN A COMPRESSED FORMAT *
!* 1 %REPEAT is not required *
!* 2 Label & has already been set in this block *
!* 4 & is not a Switch name at current textual level *
!* 5 Switch name & in expression or assignment *
!* 6 Switch label &(#) set a second time *
!* 7 Name & has already been declared *
!* 8 Routine or fn & has more parameters than specified *
!* 9 Parameter # of & differs in type from specification *
!* 10 Routine or fn & has fewer parameters than specified *
!* 11 Label & referenced at line # has not been set *
==== ercc07/emas-2900/sup26hsrce_oper33s.txt ====
! %CONSTSTRING(15)VSN = "OPER33 08/09/80"; ! ****************************************
%IF (MONLEVEL >> 1) & 1 = YES %START
%EXTRINSICLONGINTEGER KMON
%OWNINTEGER OPMON; ! COPY OF KMON BIT
%CONSTINTEGER KMONNING = YES
%FINISH %ELSE %START
%CONSTINTEGER KMONNING = NO
%FINISH
!
%IF MONLEVEL & 1 = YES %START
%CONSTINTEGER VIDEO UPDATING = YES
%OWNINTEGER OPER FACILITIES
%FINISH %ELSE %START
%CONSTINTEGER VIDEO UPDATING = NO
%FINISH
!
!
!
!%EXTERNALROUTINESPEC DUMPTABLE(%INTEGER X,A,S)
%EXTERNALROUTINESPEC PON(%RECORDNAME P)
%EXTERNALROUTINESPEC PKMONREC(%STRING(20)TXT,%RECORDNAME P)
==== ercc07/emas-2900/wichtests_wt86a.txt ====
'begin'
PROG :
'begin'
'comment' LIBRARY 1;
'integer'N,I;
'procedure' Q;
'begin'
'array'
A,
D[1 : 1, 1 : N],
E[0 : 0];
'procedure' P(X, L);
'label'
L;
'integer''procedure'
X;
'comment' (F1,G1): 'value' F1: 'real' F1,G1;
B : 'for' I := 1 'step' 1 'until' N,
I + 1 'do'
C : 'goto'
'if' X(A[1, 1] + I, 0) = 0 'then'
==== ercc07/emas-2900/sup26csrce_gpc29s.txt ====
%CONSTINTEGER NO = 0
%CONSTINTEGER YES = 1
%CONSTINTEGER MULTIOCP = NO
!----------------------------------------------------------------------------------------------------
!
!
%CONSTSTRING(15) VSN = "GPC29 01 MAY 80"
!
!
! %EXTERNAL ROUTINE GPC(%RECORDNAME P)
!
! 1. CONVENTIONS
! THE RECORD SPEC FOR THE PARAMETER IS
! %RECORDFORMAT PARMF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6)
! WHERE
! DEST IS CONSIDERED AS TWO HALF WORDS DSNO AND DACT. DSNO
! MUST BE GPC'S DSNO (PICKED UP DURING INITIALISATION)
! DACT IS SET ACCORDING TO THE FUNCTION REQUIRED.
!
! SRCE IS CONSIDERED AS TWO HALFWORDS SSNO AND SACT.
! SSNO IS SNO OF ORIGINATOR AND SACT IS DACT FOR
==== ercc07/emas-2900/sup26csrce_ndiag06s.txt ====
!*_ DATED 11 NOV 76 1
! ALTERATIONS BY K.YARWOOD ...
! PRINT FL AND NEXT SYMBOL LINES COMMENTED OUT
! PRINTTEXT'S TURNED TO PRINTSTRING'S
! ADDITION FOR LONGINTEGER IN RT PRINT VAR
! HEX EQUIVALENTS FOR INTS,LONGINTS ETC PRINTED
! INF PRINTED IN HEX IN RT ERRMESS
%EXTERNALSTRINGFNSPEC STRHEX(%INTEGER I)
%EXTERNALSTRING(8)%FNSPEC STRINT(%INTEGER I)
%CONSTINTEGER STACKBASE=X'80100000'; ! START OF RESIDENT STACK
! %SYSTEMROUTINESPEC SIGNAL(%INTEGER I, J, K, %INTEGERNAME F)
%ROUTINESPEC PRINTMESS(%INTEGER N)
! %SYSTEMROUTINESPEC TIDY EXIT
!*
%ROUTINESPEC INDIAG(%INTEGER OLDLNB, L, PC, %INTEGERNAME NEWLNB)
! %ROUTINESPEC FDIAG(%INTEGER OLDLNB,PC,%INTEGERNAME NEWLNB)
%ROUTINESPEC ERMESS(%INTEGER N, INF)
! %ROUTINESPEC ICL9CELABELS
==== ercc07/emas-2900/rtermess.txt ====
1 'INTEGER' 'OVERFLOW';
2 'REAL' 'OVERFLOW';
3 'ILLEGAL' 'CYCLE';
4 'NOT' 'ENOUGH' 'STORE'
5 'SQRT' 'NEGATIVE';
6 'LOG' 'NEGATIVE';
7 'SWITCH' 'LABEL' 'NOT' 'SET'
9 'INPUT' 'ENDED';
10 'NON' 'INTEGER' 'QUOTIENT'
11 'NO' 'RESULT'
12 'TIME' 'EXCEEDED'
13 'TERMINATION' 'REQUESTED'
14 'SYMBOL' 'IN' 'DATA';
15 'PARAM' 'NOT' 'DESTINATION'
16 'REAL' 'NO' 'IN' 'DATA'
17 'DIVIDE' 'ERROR'
18 'SUB' 'CHAR' 'IN' 'DATA'
19 'GRAPH' 'FAULT'
20 'STREAM' 'NOT' 'DEFINED'
21 'ILLEGAL' 'EXPONENTIATION';
22 'TRIG' 'FN' 'INACCURATE';
==== ercc07/emas-2900/ibmconvert_sconvibm.txt ====
%CONSTINTEGER DEBUG=0
!
!
!
%RECORDFORMAT OBJFILE( %C
%INTEGER LNTH, {LENGTH OF FILE}
CODESTRT, {START OF CODE FROM START FILE}
PHYSSIZE, {PHYSICAL START OF FILE}
FILETYPE, {FILE TYPE 1}
SUMCHK, {SUM CHECK (OPTIONAL)}
DATETIME, {OF LAST WRITE TO FILE}
LOADDATA, {OFFSET FROM START OF FILE}
FILEMAP) {OFFSET FROM START OF FILE}
!
!
%RECORDFORMAT AREAF( %C
%INTEGER START, {OFFSET OF START OF THE AREA}
LNTH, {LENGTH OF THE AREA}
PROP) {PROP. TO BE ASSOCIATED WITH THE AREA}
%RECORDFORMAT MAPF(%C
%INTEGER NO AREAS,
==== ercc07/emas-2900/nrsrce_makessup.txt ====
EDIT SUP24CS,SSUP24S
M/COMF(/D/END)/D1I<ERCC08.COMSF>
(A/!SSERIES/I/;/P1)*
T(A/!PSERIES;/R-1P1)*
T(R/GPC(/I/DCU(/P1)*
TA/MAXPROCS=/R3I/32/
E
PARM PARMX,STACK,NOCHECK
IMP SSUP24S,SSUP24,,.OUT
==== ercc07/emas-2900/sup25jsrce_sup25js.txt ====
!
! TO MAKE S SERIES SUPERVISOR REQUIRES:-
! 1) UNCOMMENT S SERIES INTERUPT SEQUENCE AFTER IST4I: AND DISCARD
! P SERIES INTERUUPT CODE
! 2) REPLACE COMF BY S SERIES COM IN ERCC08.COMSF
! 3) CHANGE ALL CALL OF GPC TO DCU
! 4) UNCOMMENT ALL LINES STARTED BY !PSERIES
!
!
! THESE CONST INTEGERS DEFINE SIZES AND LAYOUT OF IMPORTANT TABLES
! THEY HAVE TO BE HERE TO BE GLOBAL TO ALL ROUTINES INCLUDING IO ONES
!
%CONSTINTEGER LSTLEN=192; ! LOCAL SEGMENT TABLE LENGTH
%CONSTLONGINTEGER LCACR=1; ! ACR OF LOCAL CONTROLLER
%CONSTINTEGER DIRCSEG=10; ! SEG NO OF DIRECTOR COMMS SEG
%CONSTINTEGER DIRCSEGOFFSET=0; ! FOR ALIGNMENT IF NEEDED
%CONSTINTEGER DIRCSEGAD=DIRCSEG<<18; ! VIRTUAL ADDRESS OF DIR COM SEG
%CONSTINTEGER DIRCSEGL=2048+255+LSTLEN; ! SIZE OF SMAE
! MADE UP OF 2049 FOR CBT
! LSTLEN FOR SST
==== ercc07/emas-2900/nralg06s.txt ====
!
! ALGOL 1.5 DATED NOV 76
! 1) CONTAINS CORRECTION TO GIVE ERROR MESSAGE FOR THE
! %FOR..%DO %BEGIN...%END %ELSE %BEGIN CONSTRUCT WHICH IS INVALID
! 2) CHOPS RATHER THAN FAULTING LONG STRING CONSTANTS
! 3) CHECKS FOR BEGINS IN SYNTACTICALLY INCORRECT STATEMENTS TO
! REDUCE THE ERRONEOUS FAULT MESSAGES WHEN LEVELS MISMATCH
! 4) CONTAINS THE BINARY IO ROUTINE NAMES
! 5) STORES PLT DESCRIPTOR CORRECTLY IN EXTERNAL PROCEDURES
!
! ALGOL 1.6 DATED 1ST DEC 76
! 1) CONTAINS CORRECTION TO READ1900 (MISTYPED AS INTEGERPROC)
! 2) CONTAINS CORRECT SPACE ALLOCATION SO THAT STORED VALUE
! OF STACKFRONT IN PROCEDURES IS NOT CORRUPTED
! 3) USES SYTEMROUTINE STOP TO STOP
! 4) AVOIDS TRYING TO ADD ACC INTO B
!
! ALGOL 1.7 DATED 1ST JAN 77
! 1) HAS INCREASED SPACE IN EXPOP FOR TEMPORARY STACKED OPERANDS
! 2) REMOVES ABORT IN GOTOLAB FOR SWITCHES WITH NO LOCAL LABELS
! 3) AVOIDS STACK TWIST IF B&ACC CLAIMED THEN A MULTI DIMENSION
==== ercc07/emas-2900/sup25jsrce_makeopt.txt ====
PARM PARMX,OPT,STACK,NOLIST
IMP SUP25ISRCE_SUP25IS,SUP25ZZ,,.OUT
IMP SUP25ISRCE_COM24S,COM24ZZ,,.OUT
IMP SUP25ISRCE_PRINT01S,PRINT01ZZ,,.OUT
IMP SUP25ISRCE_GPC22S,GPC22ZZ,,.OUT
IMP SUP25ISRCE_NDIAG06S,NDIAG06ZZ,,.OUT
IMP SUP25ISRCE_COMMS38S,COMMS38ZZ,,.OUT
IMP SUP25ISRCE_FAST24S,FAST24ZZ,,.OUT
IMP SUP25ISRCE_TAPE63S,TAPE63ZZ,,.OUT
PARM MAP
LINK
SUP25ZZ
COM24ZZ
PRINT01ZZ
GPC22ZZ
NDIAG06ZZ
COMMS38ZZ
FAST24ZZ
TAPE63ZZ
.END
SUP25Z
==== ercc07/emas-2900/sup28asrce_makechkd.txt ====
PARM FREE,NOCHECK,NOLIST,STACK
IMP80 CTOPT+SUP28ASRCE_SUP28AS,SUPZZ,,.OUT
IMP80 CTOPT+SUP28ASRCE_COM35S,COMZZ,,.OUT
IMP80 CTOPT+SUP28ASRCE_PRINT08S,PRINTZZ,,.OUT
IMP80 CTOPT+SUP28ASRCE_OPER36S,OPERZZ,,.OUT
IMP80 CTOPT+SUP28ASRCE_ENTER14S,ENTERZZ,,.OUT
PARM FREE,OPT,STACK,NOLIST
IMP80 CTOPT+SUP28ASRCE_GPC39S,GPCZZ,,.OUT
IMP80 SUP28ASRCE_NDIAG07S,NDIAGZZ,,.OUT
IMP80 CTOPT+SUP28ASRCE_COMMS53S,COMMSZZ,,.OUT
IMP80 CTOPT+SUP28ASRCE_FAST41S,FASTZZ,,.OUT
IMP80 CTOPT+SUP28ASRCE_TAPE73S,TAPEZZ,,.OUT
PARM MAP
LINK
SUPZZ
COMZZ
PRINTZZ
OPERZZ
ENTERZZ
GPCZZ
NDIAGZZ
==== ercc07/emas-2900/sup27isrce_print07s.txt ====
%RECORDFORMAT PARMF(%INTEGER DEST, SRCE, P1, P2, P3, P4, P5, P6)
%EXTRINSICLONGINTEGER KMON
%ROUTINESPEC PRHEX(%INTEGER H)
%ROUTINESPEC PRINTER(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC PON(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC GPC(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC OPMESS(%STRING (23) MESS)
%SYSTEMROUTINESPEC ITOE(%INTEGER A, L)
%IF MULTIOCP=YES %THEN %START
%EXTERNALROUTINESPEC SEMALOOP(%INTEGERNAME SEMA)
%ROUTINESPEC RESERVE LOG
%ROUTINESPEC RELEASE LOG
%ROUTINESPEC AWAIT LOG ROUTE
%FINISH
!------------------------------------------------------------------------
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20L ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DLVNADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,TOJDAY,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,SERVAAD, %C
==== ercc07/emas-2900/ibm_csups.txt ====
!
! IBM VERSION OF THE OPCODES
!
%CONSTINTEGER FOURKTDISP=16
%CONSTINTEGER LGR=X'58',ST=X'50',LM=X'98',STM=X'90',MVC=X'D2',CLC=X'D5',
LR=X'18',BCR=7,BAL=X'45',BC=X'47',CR=X'19',COMP=X'59',LA=X'41', %C
IC=X'43',STC=X'42',STH=X'40',STE=X'70',STD=X'60', %C
BCTR=6,BALR=X'05',MVI=X'92',SPM=4,SRL=X'88',SLL=X'89',LH=X'48',
SRDA=X'8E',SLDA=X'8F',BCT=X'46',EX=X'44',CLI=X'95'
%CONSTINTEGER LE=X'78',LD=X'68',LDR=X'28',LER=X'38',LCDR=X'23', %C
LPDR=X'20',ADR=X'2A',SDR=X'2B',MDR=X'2C',DDR=X'2D',CDR=X'29',
AD=X'6A',SD=X'6B',MD=X'6C',DD=X'6D',LTDR=X'22',AW=X'6E'
! INTEGER ARIRTHEMETIC FOLLOW
!
%CONSTINTEGER AR=X'1A',SR=X'1B',MR=X'1C',LTR=X'12',LPR=X'10', %C
LCR=X'13',XR=X'17',NR=X'14',OR=X'16',DR=X'1D',MH=X'4C',
AH=X'4A',SH=X'4B'
%CONSTINTEGER ADD=X'5A',SUB=X'5B',MULT=X'5C',DIV=X'5D',AND=X'54',
OI=X'96'
!
%CONSTINTEGER SHUFFLEDECS=B'1011110'; ! WHICH ALTS OF DEC ARE REORDERED
==== ercc07/emas-2900/tripcnsts.txt ====
!
! FIRST THE OPERAND FLAG CONSTANTS
!
%CONSTINTEGER SCONST=0; ! CONST UPTO 64 BITS
%CONSTINTEGER LCONST=1; ! CONST LONGER THAN SCONST
%CONSTINTEGER DNAME=2; ! NAME BY DICTIONARY NO
%CONSTINTEGER ADDRNAME=5; ! ADDRESS AS NAME
%CONSTINTEGER LOCALIR=7; ! BASE DISP REF IN CURRENT STACK FRAME
%CONSTINTEGER REFTRIP=8; ! REFERENCE TO A TRIPLE
!
! NOW THE DEFINITIONS OF ONE OPERAND TRIPLES <128
!
%CONSTINTEGER RTHD=1; ! ROUTINE-BLOCK HEADING
%CONSTINTEGER RDSPY=2; ! ROUTINE ENTRY SET DISPLAY
%CONSTINTEGER RDAREA=3; ! ROUTINE LEAVE DIAGNOSTIC SPACE
%CONSTINTEGER RDPTR=4; ! SET DIAGNOSTIC POINTER
%CONSTINTEGER RTBAD=5; ! ROUTINE-FN BAD EXIT
%CONSTINTEGER RTXIT=6; ! "%RETURN"
%CONSTINTEGER XSTOP=7; ! EXECUTE "%STO"
%CONSTINTEGER NOTL=10; ! LOGICAL NOT
%CONSTINTEGER LNEG=11; ! LOGICAL NEGATE
==== ercc07/emas-2900/nralg07s.txt ====
!
! ALGOL 1.5 DATED NOV 76
! 1) CONTAINS CORRECTION TO GIVE ERROR MESSAGE FOR THE
! %FOR..%DO %BEGIN...%END %ELSE %BEGIN CONSTRUCT WHICH IS INVALID
! 2) CHOPS RATHER THAN FAULTING LONG STRING CONSTANTS
! 3) CHECKS FOR BEGINS IN SYNTACTICALLY INCORRECT STATEMENTS TO
! REDUCE THE ERRONEOUS FAULT MESSAGES WHEN LEVELS MISMATCH
! 4) CONTAINS THE BINARY IO ROUTINE NAMES
! 5) STORES PLT DESCRIPTOR CORRECTLY IN EXTERNAL PROCEDURES
!
! ALGOL 1.6 DATED 1ST DEC 76
! 1) CONTAINS CORRECTION TO READ1900 (MISTYPED AS INTEGERPROC)
! 2) CONTAINS CORRECT SPACE ALLOCATION SO THAT STORED VALUE
! OF STACKFRONT IN PROCEDURES IS NOT CORRUPTED
! 3) USES SYTEMROUTINE STOP TO STOP
! 4) AVOIDS TRYING TO ADD ACC INTO B
!
! ALGOL 1.7 DATED 1ST JAN 77
! 1) HAS INCREASED SPACE IN EXPOP FOR TEMPORARY STACKED OPERANDS
! 2) REMOVES ABORT IN GOTOLAB FOR SWITCHES WITH NO LOCAL LABELS
! 3) AVOIDS STACK TWIST IF B&ACC CLAIMED THEN A MULTI DIMENSION
==== ercc07/emas-2900/sup27csrce_comms49s.txt ====
! VERSION OF 13/06/80
! DEC 79: INCLUDE AN OPER ADAPTOR
! HAVE ONLY ONE SERVICE NUMBER, X'37'
! OTHER POSSIBLE CHANGES
! MAKE INITIALISATION CALL OF CC INITIALISE ADAPTORS AS WELL
! MAKE IT POSSIBLE TO DEALLOCATE/ALLOCATE ALL DEVICES
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20A ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,WASKLOKCORRECT,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,DQADDR, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0, %C
%INTEGER ITINT,CONTYPEA,GPCCONFA,FPCCONFA,SFCCONFA, %C
BLKADDR,DPTADDR,SMACS,TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,SP0,SP1, %C
SP2,SP3,SP4,SP5,SP6,SP7,SP8, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
==== ercc07/emas-2900/sup29gs.txt ====
!
! To make S series supervisor requires:-
! 1) Change SSERIES=NO to SSERIES=YES in ctoptions file
!
!
! THESE CONST INTEGERS DEFINE SIZES AND LAYOUT OF IMPORTANT TABLES
! THEY HAVE TO BE HERE TO BE GLOBAL TO ALL ROUTINES INCLUDING IO ONES
!
%CONSTINTEGER LSTLEN=192; ! LOCAL SEGMENT TABLE LENGTH
%CONSTINTEGER CBTLEN=299; ! LENGTH OF CBT TABLE
%CONSTLONGINTEGER LCACR=1; ! ACR OF LOCAL CONTROLLER
%CONSTINTEGER DIRCSEG=10; ! SEG NO OF DIRECTOR COMMS SEG
%CONSTINTEGER DIRCSEGOFFSET=0; ! FOR ALIGNMENT IF NEEDED
%CONSTINTEGER DIRCSEGAD=DIRCSEG<<18; ! VIRTUAL ADDRESS OF DIR COM SEG
%CONSTINTEGER DIRCSEGL=8*CBTLEN+255+2*LSTLEN; ! SIZE OF SAME
! MADE UP OF 2049 FOR CBT
! 2*LSTLEN FOR SST
! 48+64 FOR 2 BITS OF SYTEMCALL TABLE
! 32+48 FOR DIROUTP&SIGOUT
%CONSTINTEGER LSTACKLEN=3; ! LOCAL CONT. STACK ELEN
==== ercc07/emas-2900/jalg01s.txt ====
!
! JALGOL RELEASE 1 DATED JAN 78
! 1) BOOTSTRAPPED FROM ALGOL(E) RELEASE 3.0 [INCLDG CHANGES 1-6].
! JALGOL RELEASE 1.1 DATED AUG78
! 1) HAS CHANGE TO ALLOW @ AS ALT TO & IN CONSTANTS
! 2) HAS CHANGE TO TRAP OVERFLOW IN CONST
! 3) HAS CHANGE IN CANAME FOR REAL SUBSCRIPTS
! 4) HAS CHANGE TO DECLARE SWITCH FOR 2960 WHICH DOES NOT JUMP
! TO CODE DESCRIPTORS. MAY BE REPPED BACK IF 2960 MODIFIED
! 5) HAS CHANGE IN GOTOLAB FOR COMPLEX SWITCHES IN PROG SANS ARRAYS
! 6) REMOVES FAULT 202 FROM CUI AS THIS CAN HAPPEN
! 7) HAS CHANGE TO PROTECT AGAINST DUPLICATE PROC BODIES
!
!QIN %MAINEP ICL9CEZALGOL;
%TRUSTEDPROGRAM
%BEGIN
%INTEGER I, J, K
! PRODUCED FROM JALGPS01 BY PSPROG2S ON 30/12/77
%CONSTINTEGERARRAY SYMBOL(1300: 2270)= 1305,
1305, 1001, 1018, 1305, 1313, 1311, 44, 1001, 1018, 999,
1313, 1000, 1323, 1317, 1001, 1355, 1319, 1003, 1323, 40,
==== ercc07/emas-2900/algolbm_alg13.txt ====
//JOB(ERCC07,STEPHENS,T=200,L=10000)
//OPTIONS(QUOTES,OPT)
//ALGOL
'COMMENT'
***************
* *
* ALGG013 *
* *
***************
;
'BEGIN'
'PROCEDURE'CPUTIM(T);
'REAL' T;
T:=CPUTIME;
'INTEGER' I,J,K,L;
'REAL'T;
CPUTIM(T);
I:=-100; J:=0; K:=100;
'FOR'L:=1'STEP'1'UNTIL'1000'DO'
'BEGIN'
'GOTO' L200;
==== ercc07/emas-2900/algolbm_alg14.txt ====
//JOB(ERCC07,STEPHENS,T=200,L=10000)
//OPTIONS(QUOTES,OPT)
//ALGOL
'COMMENT'
***************
* *
* ALGG014 *
* *
***************
;
'BEGIN''COMMENT'AN IBM ALGOL PROGRAM ON PARTITION;
'PROCEDURE' CPUTIM(T);
'REAL' T;
T:=CPUTIME;
'INTEGER''ARRAY' P[1:100];
'PROCEDURE' A(M,N,I);
'VALUE' M,N,I;
'INTEGER' M,N,I;
'BEGIN' 'INTEGER' Z,K;
'FOR'Z:=1'STEP'1'UNTIL'M'DO'
'BEGIN'
==== ercc07/emas-2900/perq_formats.txt ====
!
! RECORDFORMAT FOR ALL THE OPTION AND FLAG VARAIBLES
!
%RECORDFORMAT PARMF(%INTEGER BITS1,BITS2,TTOPUT,
%BYTEINTEGER LET,DYNAMIC,LINE,TRACE,ARR,DBUG,CHK,DIAG,OPT,FREE,
LIST,CPRMODE,COMPILER,SMAP,Y,PROF,INHCODE,DCOMP,FAULTY,X)
%RECORDFORMAT LISTF(%INTEGER S1,S2,S3,LINK)
%RECORDFORMAT WORKAF(%INTEGER NNAMES,CCSIZE,DSIZE,ASL MAX,ASL CUR BTM,
CONST PTR,CONST BTM,DICTBASE,WKFILEAD,WKFILEK,FILE ADDR,RELEASE,
AASL0,SP0,SP1,SP2,
%INTEGERNAME LINE,%STRING(9)LADATE,
%BYTEINTEGERARRAYNAME CC,A,
%INTEGERARRAYNAME WORD,TAGS,PLABS,PLINK,CTABLE)
%RECORDFORMAT RTDICTF(%HALFINTEGER PS,RPS,LTS,ENTRY,EXIT,
LL,W7,W8,DIAGS,W10,%INTEGER W1112)
%RECORDFORMAT RD((%INTEGER S1 %OR %BYTE UPTYPE,PTYPE,XB,FLAG),
%INTEGER D,XTRA)
%RECORDFORMAT TRIPF(%BYTE OPERN,OPTYPE,CNT,DPTH,
%HALFINTEGER FLAGS,PUSE,FLINK,BLINK,%INTEGER X1,
%RECORD(RD) OPND1,OPND2)
==== ercc07/emas-2900/algolbm_alg15.txt ====
//JOB(ERCC07,STEPHENS,T=200,L=10000)
//OPTIONS(QUOTES,OPT)
//ALGOL
'COMMENT'
***************
* *
* ALGG015 *
* *
***************
;
'BEGIN'
'PROCEDURE' CPUTIM(T);
'REAL' T;
T:=CPUTIME;
'INTEGER' I,J,K,M,N;
'REAL' T;
'INTEGER''ARRAY' A[1:2000];
CPUTIM(T);
N:=2000;
'FOR'I:=1'STEP'1'UNTIL'N'DO'
A[I]:=I;
==== ercc07/emas-2900/algolbm_alg16.txt ====
//JOB(ERCC07,STEPHENS,T=200,L=10000)
//OPTIONS(QUOTES,OPT)
//ALGOL
'COMMENT'
***************
* *
* ALGG016 *
* *
***************
;
'BEGIN''COMMENT' FORSYTHE'S LEAST SQUARE FIT;
'PROCEDURE' FORS(M,SMIN,B,R,Q,C,YY,W,X,Y,N);
'VALUE' M,N;
'INTEGER' M,N;
'REAL' SMIN;
'ARRAY' B,R,Q,C,YY,W,X,Y;
'BEGIN'
'INTEGER' I,J,K;
'REAL' S,T,E1,E2,F1,E3,F3,E4,G;
'FOR'I:=1'STEP'1'UNTIL'N'DO'
==== ercc07/emas-2900/algolbm_alg18.txt ====
//JOB(ERCC07,STEPHENS,T=200,L=10000)
//OPTIONS(QUOTES,OPT)
//ALGOL
'COMMENT'
***************
* *
* ALGG018 *
* *
***************
;
'BEGIN''COMMENT' THE TRANSPORTATION PROBLEM;
'PROCEDURE' CPUTIM(T);
'REAL'T;
T:=CPUTIME;
'PROCEDURE' S1(K,N,M2,A,U,DEL);
'VALUE' K,N,M2;
'INTEGER' K,N,M2;
'ARRAY' A,U,DEL;
'BEGIN'
'INTEGER' I,J;
==== ercc07/emas-2900/algolbm_alg19.txt ====
//JOB(ERCC07,STEPHENS,T=200,L=10000)
//OPTIONS(QUOTES,OPT)
//ALGOL
'COMMENT'
***************
* *
* ALGG019 *
* *
***************
;
'BEGIN'
'REAL''PROCEDURE' READ; 'EXTERNAL'READ1900;
'BEGIN' 'REAL' A,B,C; 'INTEGER' I,J,K;
'BOOLEAN' BOOL;
'FOR' I := 1 'STEP' 1 'UNTIL' 82 'DO' 'BEGIN'
J := NEXTCH; PRINTCH(J);J := READCH; PRINTCH(J);
'END';
'FOR' I := 1 'STEP' 1 'UNTIL' 81 'DO' SKIPCH;
PRINTCH(48); SPACES(10);NEWLINES(1);NEWLINES(10);PRINTCH(49);
NEWPAGE;
SELECT OUTPUT(3);
==== ercc07/emas-2900/algolbm_calg2.txt ====
//JOB(ERCC07,STEPHENS,T=200,L=10000)
//OPTIONS(QUOTES,OPT)
//ALGOL
'COMMENT'
***************
* *
* ALGG002 *
* *
***************
;
'BEGIN' 'INTEGER' I,J,K,NEQS,NVBS;
'REAL' SUM;
'COMMENT' INPUT/OUTPUT PROCEDURES;
'COMMENT' END OF INPUT/OUTPUT PROCEDURES;
'PROCEDURE' INVERT(N,A,B);
'VALUE' N;
'INTEGER' N;
'ARRAY' A,B;
'BEGIN' 'COMMENT' INVERTS MATRIX A, N BY N, AND PUTS
==== ercc07/emas-2900/algolbm_calg3.txt ====
//JOB(ERCC07,STEPHENS,T=200,L=10000)
//OPTIONS(QUOTES,OPT)
//ALGOL
'COMMENT'
***************
* *
* ALGG003 *
* *
***************
;
'BEGIN'
'INTEGER' DV1,DIN,DV2,MT1,I,J,NAT;
'REAL' PI,ANGLE,A;
'ARRAY' CELL[1:6],NN,MM[1:3,1:3],TITLE[1:200],
INDEX[1:20];
'BOOLEAN' 'ARRAY' KEY[1:20];
'COMMENT' INPUT/OUTPUT PROCEDURES;
'REAL''PROCEDURE' READ;
'EXTERNAL'READ1900;
==== ercc07/emas-2900/nralg08s.txt ====
!
! ALGOL 1.5 DATED NOV 76
! 1) CONTAINS CORRECTION TO GIVE ERROR MESSAGE FOR THE
! %FOR..%DO %BEGIN...%END %ELSE %BEGIN CONSTRUCT WHICH IS INVALID
! 2) CHOPS RATHER THAN FAULTING LONG STRING CONSTANTS
! 3) CHECKS FOR BEGINS IN SYNTACTICALLY INCORRECT STATEMENTS TO
! REDUCE THE ERRONEOUS FAULT MESSAGES WHEN LEVELS MISMATCH
! 4) CONTAINS THE BINARY IO ROUTINE NAMES
! 5) STORES PLT DESCRIPTOR CORRECTLY IN EXTERNAL PROCEDURES
!
! ALGOL 1.6 DATED 1ST DEC 76
! 1) CONTAINS CORRECTION TO READ1900 (MISTYPED AS INTEGERPROC)
! 2) CONTAINS CORRECT SPACE ALLOCATION SO THAT STORED VALUE
! OF STACKFRONT IN PROCEDURES IS NOT CORRUPTED
! 3) USES SYTEMROUTINE STOP TO STOP
! 4) AVOIDS TRYING TO ADD ACC INTO B
!
! ALGOL 1.7 DATED 1ST JAN 77
! 1) HAS INCREASED SPACE IN EXPOP FOR TEMPORARY STACKED OPERANDS
! 2) REMOVES ABORT IN GOTOLAB FOR SWITCHES WITH NO LOCAL LABELS
! 3) AVOIDS STACK TWIST IF B&ACC CLAIMED THEN A MULTI DIMENSION
==== ercc07/emas-2900/sup29hs.txt ====
!
! To make S series supervisor requires:-
! 1) Change SSERIES=NO to SSERIES=YES in ctoptions file
!
!
! THESE CONST INTEGERS DEFINE SIZES AND LAYOUT OF IMPORTANT TABLES
! THEY HAVE TO BE HERE TO BE GLOBAL TO ALL ROUTINES INCLUDING IO ONES
!
%CONSTINTEGER LSTLEN=192; ! LOCAL SEGMENT TABLE LENGTH
%CONSTINTEGER CBTLEN=299; ! LENGTH OF CBT TABLE
%CONSTLONGINTEGER LCACR=1; ! ACR OF LOCAL CONTROLLER
%CONSTINTEGER DIRCSEG=10; ! SEG NO OF DIRECTOR COMMS SEG
%CONSTINTEGER DIRCSEGOFFSET=0; ! FOR ALIGNMENT IF NEEDED
%CONSTINTEGER DIRCSEGAD=DIRCSEG<<18; ! VIRTUAL ADDRESS OF DIR COM SEG
%CONSTINTEGER DIRCSEGL=8*CBTLEN+255+2*LSTLEN; ! SIZE OF SAME
! MADE UP OF 2049 FOR CBT
! 2*LSTLEN FOR SST
! 48+64 FOR 2 BITS OF SYTEMCALL TABLE
! 32+48 FOR DIROUTP&SIGOUT
%CONSTINTEGER LSTACKLEN=3; ! LOCAL CONT. STACK ELEN
==== ercc07/emas-2900/ibmsup_storerts.txt ====
%integerfn QUICK EPAGE(%integer ZEROED,KEY)
!***********************************************************************
!* CAN BE CALLED BY ANYONE HOLDING STORESEMA TO GET THE NEXT FREE *
!* NEXT FREE EPAGE. GIVES THE STORE INDEX OR -1 *
!***********************************************************************
%record (STOREF) %name ST
%integer I,STAD,STOREX,RA
%if FREE EPAGES=0 %thenresult=-1
STOREX=FSTASL
ST==STORE(STOREX)
FSTASL=STORE(FSTASL)_FLINK
STORE(FSTASL)_BLINK=0
ST_USERS=1
%if ST_FLAGS=1 %thenstart; ! RECAPTURABLE FLAG
I=ST_LINK
AMTDD(I)=AMTDD(I)!STXMASK
ST_FLAGS=0
%finish
RA=STOREX*PAGESIZE
%if ZEROED=0 %thenstart; ! CLEAR TO ZERO
%if XA=YES %thenstart
==== ercc07/emas-2900/sup26hsrce_ndiag07s.txt ====
!*_ DATED 11 NOV 76 1
! ALTERATIONS BY K.YARWOOD ...
! PRINT FL AND NEXT SYMBOL LINES COMMENTED OUT
! PRINTTEXT'S TURNED TO PRINTSTRING'S
! ADDITION FOR LONGINTEGER IN RT PRINT VAR
! HEX EQUIVALENTS FOR INTS,LONGINTS ETC PRINTED
! INF PRINTED IN HEX IN RT ERRMESS
%EXTERNALSTRINGFNSPEC STRHEX(%INTEGER I)
%EXTERNALSTRING(8)%FNSPEC STRINT(%INTEGER I)
%CONSTINTEGER STACKBASE=X'80100000'; ! START OF RESIDENT STACK
! %SYSTEMROUTINESPEC SIGNAL(%INTEGER I, J, K, %INTEGERNAME F)
%ROUTINESPEC PRINTMESS(%INTEGER N)
! %SYSTEMROUTINESPEC TIDY EXIT
!*
%ROUTINESPEC INDIAG(%INTEGER OLDLNB, L, PC, %INTEGERNAME NEWLNB)
! %ROUTINESPEC FDIAG(%INTEGER OLDLNB,PC,%INTEGERNAME NEWLNB)
%ROUTINESPEC ERMESS(%INTEGER N, INF)
! %ROUTINESPEC ICL9CELABELS
==== ercc07/emas-2900/algolbm_calg5.txt ====
//JOB(ERCC07,STEPHENS,T=200,L=10000)
//OPTIONS(QUOTES,OPT)
//ALGOL
'COMMENT'
***************
* *
* ALGG005 *
* *
***************
;
'BEGIN' 'COMMENT' PROGRAM FOR MASS AND ABUNDANCE
DATA OF POLYISOTOPIC IONS;
'COMMENT' INPUT/OUTPUT PROCEDURES;
'PROCEDURE' CRDTXT;
'BEGIN' 'INTEGER' I,J;
TRY AGAIN:
INSYMBOL(98,'('*')',I);
'IF' I=1 'THEN'
'BEGIN'
==== ercc07/emas-2900/houses.txt ====
%BEGIN
%CONSTINTEGER MSIZE=4
%ROUTINESPEC TEST MATRIX(%LONGREALARRAYNAME A, %INTEGER N)
%ROUTINESPEC HOUSEHOLDER(%LONGREALARRAYNAME A, W, %C
%INTEGER N, K)
%INTEGER I
%LONGREALARRAY A(1:MSIZE,1:MSIZE)
%LONGREALARRAY W(1:MSIZE)
TEST MATRIX(A,MSIZE)
PRINTSTRING("
TEST MATRIX EIGENVALUES
")
HOUSEHOLDER(A,W,MSIZE,1)
%CYCLE I=1,1,MSIZE
PRINT FL(W(I),8)
NEWLINE
%REPEAT
%STOP
%LONGREALFN SQRT(%LONGREAL ARG)
%INTEGER I,J
==== ercc07/emas-2900/docs_sep82.txt ====
EMAS Team termly Report
-----------------------
The summer has been a time of intense activity for the EMAS group as two
major pieces of hardware had to be commissioned. Both involved substantial
software changes and both projects were completed within the hoped for
timescales - timescales that had been agreed before it was realised that the
two events would become co-temporaneous! The team deserves the congratulation
of the rest of the ERCC for a notable and successful effort and it is
regrettable that hardware problems, particularly with the 2988, have prevented
the Users from realising the scale and success of these efforts.
The DAP arrived in April with the usual sub minimum of documentation. An
elegant solution was devised for incorporating it into EMAS fully compatible
with the EMAS philosophy. Each DAP user is allocated the whole of a virtual DAP
which is connected into his address space like a virtual file. A virtual DAP,
which may be less than but not more than the size of the actual DAP, then
behaves exactly like a mapped file with the additional (and alarming!) property
that its contents change unpredictably with time. Multidap-programming is
==== ercc07/emas-2900/impalgs_soapopt.txt ====
\SB,EM,\IL,LO,IM=6,\TB,\SE,CL=2,\CR,*
==== ercc07/emas-2900/nralg09s.txt ====
!
! ALGOL 1.5 DATED NOV 76
! 1) CONTAINS CORRECTION TO GIVE ERROR MESSAGE FOR THE
! %FOR..%DO %BEGIN...%END %ELSE %BEGIN CONSTRUCT WHICH IS INVALID
! 2) CHOPS RATHER THAN FAULTING LONG STRING CONSTANTS
! 3) CHECKS FOR BEGINS IN SYNTACTICALLY INCORRECT STATEMENTS TO
! REDUCE THE ERRONEOUS FAULT MESSAGES WHEN LEVELS MISMATCH
! 4) CONTAINS THE BINARY IO ROUTINE NAMES
! 5) STORES PLT DESCRIPTOR CORRECTLY IN EXTERNAL PROCEDURES
!
! ALGOL 1.6 DATED 1ST DEC 76
! 1) CONTAINS CORRECTION TO READ1900 (MISTYPED AS INTEGERPROC)
! 2) CONTAINS CORRECT SPACE ALLOCATION SO THAT STORED VALUE
! OF STACKFRONT IN PROCEDURES IS NOT CORRUPTED
! 3) USES SYTEMROUTINE STOP TO STOP
! 4) AVOIDS TRYING TO ADD ACC INTO B
!
! ALGOL 1.7 DATED 1ST JAN 77
! 1) HAS INCREASED SPACE IN EXPOP FOR TEMPORARY STACKED OPERANDS
! 2) REMOVES ABORT IN GOTOLAB FOR SWITCHES WITH NO LOCAL LABELS
! 3) AVOIDS STACK TWIST IF B&ACC CLAIMED THEN A MULTI DIMENSION
==== ercc07/emas-2900/sup29is.txt ====
!
! To make S series supervisor requires:-
! 1) Change SSERIES=NO to SSERIES=YES in ctoptions file
!
!
! THESE CONST INTEGERS DEFINE SIZES AND LAYOUT OF IMPORTANT TABLES
! THEY HAVE TO BE HERE TO BE GLOBAL TO ALL ROUTINES INCLUDING IO ONES
!
%CONSTINTEGER LSTLEN=192; ! LOCAL SEGMENT TABLE LENGTH
%CONSTINTEGER CBTLEN=299; ! LENGTH OF CBT TABLE
%CONSTLONGINTEGER LCACR=1; ! ACR OF LOCAL CONTROLLER
%CONSTINTEGER DIRCSEG=10; ! SEG NO OF DIRECTOR COMMS SEG
%CONSTINTEGER DIRCSEGOFFSET=0; ! FOR ALIGNMENT IF NEEDED
%CONSTINTEGER DIRCSEGAD=DIRCSEG<<18; ! VIRTUAL ADDRESS OF DIR COM SEG
%CONSTINTEGER DIRCSEGL=8*CBTLEN+255+2*LSTLEN; ! SIZE OF SAME
! MADE UP OF 2049 FOR CBT
! 2*LSTLEN FOR SST
! 48+64 FOR 2 BITS OF SYTEMCALL TABLE
! 32+48 FOR DIROUTP&SIGOUT
%CONSTINTEGER LSTACKLEN=3; ! LOCAL CONT. STACK ELEN
==== ercc07/emas-2900/ibmsup_seguse.txt ====
!
! This is the latest information on the use of Segments for EMAS3.
! Segments 0-63 correspond roughly to Public in EMAS2
! Segments 64-255 are the equivalent to Local in Emas2
! Segments 241-255 vanish from the Segment table when User is running
! but re-appear when Director is entered.
!
! Seg 0 address page 0 and used for
! the zero page (page 1) and
! writing to real addresses (page 2)
! Seg 1 segment table segment
! Seg 2 Supervisor stack
! Seg 3 Alternate Local Controller Stack for Amdahl
! which uses 24 bit virtual addresses in Priv instrns
! Seg 4 Supervisor code
! Segs 5-7 free (for testing on 24 bit machines
! these contain overflow portions of code)
! Seg 8 Supervisor Gla
! Segs 9-11 Free
! Segs 12-15 Reserved for SSP
==== ercc07/emas-2900/perqtrimp_compress.txt ====
%EXTERNALROUTINESPEC DEFINE(%STRING(63)S)
%EXTERNALROUTINE COMPRESS(%STRING(63)S)
!***********************************************************************
!* COMPRESSES A FILE OF ERROR MESSAGE INTO TWO CONSTARRAYS AND *
!* GENERATES A ROUTINE TO REGURGITATE THEM IN ENGLISH *
!***********************************************************************
%INTEGER CPSTRM,INSTRM,LPSTRM
%INTEGERARRAY WORD(0:2000)
%INTEGERARRAY LETT(0:1000)
%INTEGER I, J, K, N, NUM, NEXT, NMAX, NUMMAX
%STRING(31) FILE1, FILE2, FILE3
%STRING(71)TEMP,INPUT,WK1,WK2
%%STRING(71)%FNSPEC MESS(%INTEGER N)
%ROUTINESPEC LIT(%INTEGERNAME P,%STRINGNAME TXT1)
%ROUTINESPEC CARDS OUT
%CONSTBYTEINTEGERARRAY INTT(0:127)= 63(32),63(3),61,63,60, %C
27,30,31,32,63(3),
28,59,29,63(17),
1,2,3,4,5,6,7,8,9,10,11,12,
13,14,15,16,17,18,19,20,
==== ercc07/emas-2900/nrimp07s.txt ====
!QIN; %MAINEP ICL9CEZIMP
%TRUSTEDPROGRAM
%BEGIN
%INTEGER I, J, K
! PRODUCED BY OLDPS FROM NRIMPPS3 ON 06/04/78
%CONSTBYTEINTEGERARRAY CLETT(0: 478)= 1,
40, 1, 41, 1, 44, 2, 201, 198, 6, 213, 206, 204, 197, 211,
211, 5, 215, 200, 201, 204, 197, 5, 213, 206, 212, 201, 204, 4,
210, 197, 193, 204, 7, 201, 206, 212, 197, 199, 197, 210, 8, 204,
207, 206, 199, 210, 197, 193, 204, 4, 204, 207, 206, 199, 11, 194,
217, 212, 197, 201, 206, 212, 197, 199, 197, 210, 6, 211, 212, 210,
201, 206, 199, 11, 200, 193, 204, 198, 201, 206, 212, 197, 199, 197,
210, 7, 210, 207, 213, 212, 201, 206, 197, 2, 198, 206, 3, 205,
193, 208, 6, 210, 197, 195, 207, 210, 196, 4, 206, 193, 205, 197,
5, 193, 210, 210, 193, 217, 9, 193, 210, 210, 193, 217, 206, 193,
205, 197, 9, 207, 198, 208, 210, 207, 199, 210, 193, 205, 6, 207,
198, 198, 201, 204, 197, 6, 207, 198, 204, 201, 211, 212, 6, 198,
207, 210, 205, 193, 212, 4, 211, 208, 197, 195, 3, 193, 206, 196,
2, 207, 210, 1, 58, 6, 206, 207, 210, 205, 193, 204, 3, 207,
215, 206, 8, 197, 216, 212, 197, 210, 206, 193, 204, 9, 197, 216,
212, 210, 201, 206, 211, 201, 195, 5, 195, 207, 206, 211, 212, 1,
==== ercc07/emas-2900/sup26isrce_tape70s.txt ====
!
!**************************************************
!* *
!* TAPE HANDLER FOR 2900 *
!* *
!**************************************************
!!
!! EXTERNAL ROUTINE REFERENCES
!!
%EXTERNALSTRINGFNSPEC HTOS(%INTEGER VALUE, PLACES)
%EXTERNALROUTINESPEC OPMESS(%STRING (23) S)
%EXTERNALROUTINESPEC PON(%RECORDNAME P)
%SYSTEMROUTINESPEC ETOI(%INTEGER A, L)
%SYSTEMROUTINESPEC MOVE(%INTEGER L, FROMAD, TOAD)
%EXTERNALROUTINESPEC PRHEX(%INTEGER N)
%EXTERNALROUTINESPEC DUMP TABLE(%INTEGER TABNO, START, L)
%EXTRINSICLONGINTEGER PARMDES
%EXTERNALINTEGERFNSPEC NEWPPCELL
%EXTERNALROUTINESPEC RETURNPPCELL(%INTEGER CELL)
%IF MULTIOCP=YES %START
==== ercc07/emas-2900/sup26esrce_oper33s.txt ====
! %CONSTSTRING(15)VSN = "OPER33 08/09/80"; ! ****************************************
%IF (MONLEVEL >> 1) & 1 = YES %START
%EXTRINSICLONGINTEGER KMON
%OWNINTEGER OPMON; ! COPY OF KMON BIT
%CONSTINTEGER KMONNING = YES
%FINISH %ELSE %START
%CONSTINTEGER KMONNING = NO
%FINISH
!
%IF MONLEVEL & 1 = YES %START
%CONSTINTEGER VIDEO UPDATING = YES
%OWNINTEGER OPER FACILITIES
%FINISH %ELSE %START
%CONSTINTEGER VIDEO UPDATING = NO
%FINISH
!
!
!
!%EXTERNALROUTINESPEC DUMPTABLE(%INTEGER X,A,S)
%EXTERNALROUTINESPEC PON(%RECORDNAME P)
%EXTERNALROUTINESPEC PKMONREC(%STRING(20)TXT,%RECORDNAME P)
==== ercc07/emas-2900/algolbm_alg40.txt ====
//JOB(ERCC07,STEPHENS,T=200,L=10000)
//OPTIONS(QUOTES,OPT)
//ALGOL
'COMMENT'
***************
* *
* ALGG040 *
* *
***************
;
'BEGIN'
'COMMENT' MEP00;
'BEGIN' 'COMMENT' A0,A6,A12;
'INTEGER' N,M;
REPEAT:N:=READ;
'IF' N=0 'THEN' 'GOTO' FINISH;
M:=READ;
'BEGIN' 'INTEGER' I,J,K,SA,SB,SC,SD;
'REAL' KA,KB,RMS,MEAN;
==== ercc07/emas-2900/algolbm_alg42.txt ====
//JOB(ERCC07,STEPHENS,T=200,L=10000)
//OPTIONS(QUOTES,OPT)
//ALGOL
'COMMENT'
***************
* *
* ALGG042 *
* *
***************
;
'BEGIN'
'COMMENT'
!***FY31****BENDDME************************
;
'BEGIN'
'COMMENT' A6,A30;
'REAL' E1,E2,E3,Q1,Q2,Q3,T1,T2,T3,QQ,TT,D,ANS,R,AT,BT,CT;
'INTEGER' X,U,V,P,S,I,J;
'ARRAY' T[1:10],Q[1:18],E[1:10,1:18],A[1:3],B[1:3],C[1:3],ET
[1:3,1:3];
==== ercc07/emas-2900/algolbm_alg43.txt ====
//JOB(ERCC07,STEPHENS,T=200,L=10000)
//OPTIONS(QUOTES,OPT)
//ALGOL
'COMMENT'
***************
* *
* ALGG043 *
* *
***************
;
'BEGIN''COMMENT' PROGRAM ON H & O GRADE SURVEYS, IN ALGOL 1900,
MODIFIED TO I.B.M. CARD PUNCHES;
'COMMENT' INPUT/OUTPUT PROCEDURES;
'COMMENT' END OF INPUT/OUTPUT PROCEDURES;
'PROCEDURE' CRDTXT;
'BEGIN' 'INTEGER' I,J;
TRY AGAIN : INSYMBOL(98,'('*')',I);
'IF' I = 1 'THEN'
'BEGIN'
==== ercc07/emas-2900/bit.txt ====
%ROUTINE CSTREXP(%INTEGER MODE)
!***********************************************************************
!* PLANT IN-LINE CODE FOR CONCATENATION. A WORK AREA IN THE *
!* CURRENT STACK FRAME IS USUALLY REQUIRED. *
!* ON ENTRY:- *
!* MODE=0 NORMAL. WK AREA NOT USED FOR ONE OPERAND EXPSSNS *
!* MODE=1 STRING MUST GO TO WORK AREA *
!* 2**5 BIT OF MODE SET IF FULL VIRTUAL ADDRESS REQUIRED *
!* 2**4 BIT OF MODE IS SET IF WK-AREA NOT TO BE FREED ON EXIT *
!* ON EXIT:- *
!* VALUE#0 %IF RESULT IN A WORK AREA(CCOND MUST KNOW) *
!***********************************************************************
%INTEGER PP,WKAREA,DOTS,ERR,KEEPWA,FNAM,I,ENDFLAG
%RECORD(RD) OPND1,OPND2,OPND3
%INTEGERFNSPEC STROP(%RECORD(RD) %NAME OPND)
KEEPWA=MODE&16; MODE=MODE&15
PP=P; STRINGL=0; FNAM=0; WKAREA=0
P=P+3; ! LENGTH OF CONSTANT PART
ERR=72; ->ERROR %UNLESS A(P)=4
P=P+1
DOTS=0; ! NO OPERATORS YET
==== ercc07/emas-2900/algolbm_alg44.txt ====
//JOB(ERCC07,STEPHENS,T=200,L=10000)
//OPTIONS(QUOTES,OPT)
//ALGOL
'COMMENT'
***************
* *
* ALGG044 *
* *
***************
;
'BEGIN'
'INTEGER' DV1,DIN,DV2,MT1,I,J,NAT;
'REAL' PI,ANGLE,A;
'ARRAY' CELL[1:6],NN,MM[1:3,1:3],TITLE[1:200],
INDEX[1:20];
'BOOLEAN' 'ARRAY' KEY[1:20];
'COMMENT' INPUT/OUTPUT PROCEDURES;
'REAL' 'PROCEDURE' READ;
'EXTERNAL'READ1900;
==== ercc07/emas-2900/sup27bsrce_ndiag07s.txt ====
!*_ DATED 11 NOV 76 1
! ALTERATIONS BY K.YARWOOD ...
! PRINT FL AND NEXT SYMBOL LINES COMMENTED OUT
! PRINTTEXT'S TURNED TO PRINTSTRING'S
! ADDITION FOR LONGINTEGER IN RT PRINT VAR
! HEX EQUIVALENTS FOR INTS,LONGINTS ETC PRINTED
! INF PRINTED IN HEX IN RT ERRMESS
%EXTERNALSTRINGFNSPEC STRHEX(%INTEGER I)
%EXTERNALSTRING(8)%FNSPEC STRINT(%INTEGER I)
%CONSTINTEGER STACKBASE=X'80100000'; ! START OF RESIDENT STACK
! %SYSTEMROUTINESPEC SIGNAL(%INTEGER I, J, K, %INTEGERNAME F)
%ROUTINESPEC PRINTMESS(%INTEGER N)
! %SYSTEMROUTINESPEC TIDY EXIT
!*
%ROUTINESPEC INDIAG(%INTEGER OLDLNB, L, PC, %INTEGERNAME NEWLNB)
! %ROUTINESPEC FDIAG(%INTEGER OLDLNB,PC,%INTEGERNAME NEWLNB)
%ROUTINESPEC ERMESS(%INTEGER N, INF)
! %ROUTINESPEC ICL9CELABELS
==== ercc07/emas-2900/ndiag40s.txt ====
! EXTENDED FOR ALGOLE(60) WITH EBCDIC STRING
!INCORPORATES CODE FOR NEW FORTRAN DIAGNOSTICS
!INCLUDES ICL MATHS ROUTINE ERROR ROUTINE
!INCLUDES CORRECTION FOR FAULT AT THE END OF ONCOND. R.M.1/12/77
!REFS TO WRITE JS VAR COMMENTED OUT
!IMP AND ALGOL SECTION REPLACED 13.4.78
%CONSTSTRING (10) %ARRAY LT(0 : 9) = %C
" !???! "," IMP "," FORTRAN ",
" IMPS "," ASMBLR "," ALGOL(E) ",
" OPTCODE "," PASCAL "," SIMULA "," BCPL "
%OWNINTEGER ACTIVE=0; ! CHECKS FOR LOOPS
!*
!*
!**DELSTART
%CONSTBYTEINTEGERARRAY HEX(0 : 15) = %C
'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'
%CONSTINTEGER SEGSHIFT=18
%EXTRINSICINTEGERARRAY SSCOMREG(0:60)
%EXTRINSICINTEGER SSARRAYDIAG; !DETERMINES NO OF ELEMENTS TO BE PRINTED
%SYSTEMROUTINESPEC FIO1(%INTEGER ADPARM)
%SYSTEMROUTINESPEC ETOI(%INTEGER AD,L)
==== ercc07/emas-2900/drslink.txt ====
LINK
ERCC07.P1Y
ERCC07.DP2Y
ERCC07.DOPTY
ERCC07.DGENY
ERCC07.CSERV01Y
ERCS02.DRS_EPUTY
.END
P0Y
MODIFY P0Y
SATISFY REFS
.ALL
SATISFY DATA
.ALL
SUPPRESS
.ALL
RETAIN
PGENERATEDRSOBJECT,ICL9CEZDRSIMP
SUPPRESS DATA
.ALL
CLOSE
==== ercc07/emas-2900/algolbm_alg45.txt ====
//JOB(ERCC07,STEPHENS,T=200,L=10000)
//OPTIONS(QUOTES,OPT)
//ALGOL
'COMMENT'
***************
* *
* ALGG045 *
* *
***************
;
'BEGIN'
'COMMENT' G4628T;
'INTEGER' COUNT;
'BEGIN' 'INTEGER' I,J,K,M,N,MIN,L,FLOWH,F,X;
COUNT:=0;
M:=READ;N:=READ;
'BEGIN' 'INTEGER' 'ARRAY' ZERO,BOOL,U[1:N-1,1:M-1],C,WGHT[1:N,1:M],
COL[1:N,1:2],ROW[1:2,1:M];
'BOOLEAN' 'ARRAY' NLROW[1:N-1],NLCOL[1:M-1];'BOOLEAN' MLAB;
WRITETEXT('(''('C')'COST'('S')'MATRIX'('S')'IS')');
==== ercc07/emas-2900/nrimp08s.txt ====
! BUG CLEARANCE RECORD
! *** ********* ******
! 1) TOSTRING PREVENTED FROM RETURNING SPURIOUS STRING WK AREA
! 2) REMOVE FAULT 29 WHEN ASSIGNING TO CONSTANT NAMES
! 3) RESTRICT EBCDIC STRINGS TO " ONLY AND ALLOW NULL
! 4) CORRECT FAULT IN STRETCHING REALS AT COMPILE TIME
! 5) CORRECTS SUBROUTINE P18 FOR CASE OF MAPPED STRING
! WHOSE LENGTH IS EXACTLY 255
! 6) DISTINGUISHES DYNAMICROUTINE SPECS FROM EXTERNALS
! 7) ROUNDS STACK FRAMES UP TO 8 BYTE BOUNDARY
! 8) MINOR CHANGES TO DOPEVECTOR FOR UNSET CONSTINTEGER BOUNDS
! 9) CHANGES TO CONST LENGTHEN & SHORTEN FOR REAL ARRAY
! INITIALISATION WITH WRONG PRECISION CONSTS
! 10)CORRECTION TO IMOD WHEN WORKING IN B REGISTER
! 11)CORRECTIONS(2) TO DECLARE ARRAY ON AUX STACK TO COVER
! NEGATIVE CONSTANT BOUNDS & 3 DIMENSIONS
! 12)ADDITION OF A SET LINE BEFORE DECLARING RECORDARRAYS
! 13)ADDITION TO S(12) IN CNAME FOR PASSING ARRAYNAMES OUT OF
! RECORDNAMES
! 14)CORRECTION TO EVENTINF FOR WHEN ACC CLAIMED
! 15)CORRECTION TO BIP(1026) FOR \ & \\
==== ercc07/emas-2900/algolbm_alg46.txt ====
//JOB(ERCC07,STEPHENS,T=200,L=10000)
//OPTIONS(QUOTES,OPT)
//ALGOL
'COMMENT'
***************
* *
* ALGG046 *
* *
***************
;
'BEGIN'
'COMMENT'
!***GBI1****BENGBME***************************
;
'BEGIN' 'COMMENT' INTERPOLATION OF LOAD CAPACITY USING CARPET;
'COMMENT' A0,A6; 'ARRAY' SHAPE[1:7],TAPER[1:13];
'REAL' HI,BOL,I,J,TOLERANCE; 'ARRAY' PZ[1:7,1:13];
'PROCEDURE' LOCATE(VECTOR,L,U,VALUE,I,TOLERANCE,UP,ESCAPE);
'VALUE' L,U,VALUE,TOLERANCE,UP;
'REAL' VECTOR,VALUE,TOLERANCE; 'INTEGER' L,U,I;
'BOOLEAN' UP; 'LABEL' ESCAPE;
==== ercc07/emas-2900/algolbm_alg47.txt ====
//JOB(ERCC07,STEPHENS,T=200,L=10000)
//OPTIONS(QUOTES,OPT)
//ALGOL
'COMMENT'
***************
* *
* ALGG047 *
* *
***************
;
'BEGIN'
'BEGIN'
'COMMENT' A PROGRAM TO FIND THE STARTING VALUE OF HMIN;
'COMMENT' A30;
'REAL' A,B,BE,BO,C,CR,D,DU,EL,EM,EN,EX,ESS, FN,FN2,FN3,HO,
H1,H2,OMEGA,P1,P2,RT,RU1,RU2,S,VE,VEL,WY,X,DIF,BIF,INT;
'INTEGER' I,J,N;
'ARRAY' HMIN[1:20];
'REAL' 'PROCEDURE' SIMP(P,Q,PX,N);
'VALUE' P,Q,N;
'REAL' P,Q;
==== ercc07/emas-2900/sup26csrce_print04s.txt ====
%EXTRINSICLONGINTEGER KMON
%EXTERNALROUTINESPEC SEMALOOP(%INTEGERNAME SEMA)
%ROUTINESPEC PRHEX(%INTEGER H)
%ROUTINESPEC PRINTER(%RECORDNAME P)
%EXTERNALROUTINESPEC PON(%RECORDNAME P)
%EXTERNALROUTINESPEC OPMESS(%STRING (23) MESS)
%SYSTEMROUTINESPEC ITOE(%INTEGER A, L)
%RECORDFORMAT PARMF(%INTEGER DEST, SRCE, P1, P2, P3, P4, P5, %C
P6)
!------------------------------------------------------------------------
%RECORDFORMAT ENTFORM(%INTEGER SER, PTSM, PROPADDR, %C
TICKS SINCE, CAA, GRCB AD, LBA, ALA, STATE, RESP0, %C
RESP1, SENSE1, SENSE2, SENSE3, SENSE4, REPSNO, BASE, %C
ID, DLVN, MNEMONIC, ENTSIZE, PAW, USAW0, URCB AD, %C
SENSDAT AD, LOGMASK, TRTAB AD, UA SIZE, UA AD, %C
TIMEOUT, PROPS0, PROPS1)
!------------------------------------------------------------------------
! MASTER RESIDENT TRANSLATE TABLES FOR EMAS2900
%SYSTEMROUTINE MOVE(%INTEGER LENGTH, FROM, TO)
*LB_LENGTH; *JAT_14,<L99>
==== ercc07/emas-2900/sup26gsrce_releasen.txt ====
SUPERVISOR RELEASE NOTICE VSN 26fF
_________________________________
This Supervisor incorporates the following changes:-
1) Has minor changes to debug faults in dualling only
SUPERVISOR RELEASE NOTICE VSN 26E
_________________________________
==== ercc07/emas-2900/algolbm_alg48.txt ====
//JOB(ERCC07,STEPHENS,T=200,L=10000)
//OPTIONS(QUOTES,OPT)
//ALGOL
'COMMENT'
***************
* *
* ALGG048 *
* *
***************
;
'BEGIN'
'BEGIN'
'COMMENT' THIS PROGRAMME ENABLES ONE TO EXPRESS THE FREQUENCY
RESPONSE OF A DYNAMIC SYSTEM AS A RATIO OF TWO
FREQUENCY DEPENDENT POLYNOMIALS;
'COMMENT' A0,A6,A12,A30,B3037;
'INTEGER' I,J,X,Y,Z,K,H,F1,F2;
'REAL' PIC,SUM1,SUM2,SUM3,SUM4;
X:=READ;Y:=READ;Z:=READ;
==== ercc07/emas-2900/algolbm_alg49.txt ====
//JOB(ERCC07,STEPHENS,T=200,L=10000)
//OPTIONS(QUOTES,OPT)
//ALGOL
'COMMENT'
***************
* *
* ALGG049 *
* *
***************
;
'BEGIN'
'BEGIN'
'COMMENT' WJW1;
'COMMENT' A0,A6;
'INTEGER' Y,I,J,E,COUNT;
'REAL' A,B,C,BETAD,G,R,S,M,N,O,P,Q,GA,MA;
'INTEGER' 'ARRAY' H,K,L[1:6];
'REAL' 'ARRAY' D[1:6],SEP[0:10];
GA:=READ;
MA:=READ;
E:=READ;
==== ercc07/emas-2900/itrimp_ibmptwoas.txt ====
%EXTERNALROUTINE ICL9CEZIBMIMP
%CONSTINTEGER RELEASE=4
%INCLUDE "ERCC07.TRIMP_HOSTCODES"
%CONSTINTEGER HOST=IBMXA
%CONSTINTEGER TARGET=IBMXA
%CONSTINTEGER STANDARDPT=X'51'
%CONSTINTEGER MINAPT=X'51'; ! MINIMUM PTYPE FOR WHICH ARITHMETIC
! OPERATORS ARE AVAILABLE
%CONSTINTEGER MINAPREC=MINAPT>>4
%CONSTHALFINTEGERARRAY TYPEFLAG(0:12)=0,
X'51'{%INTEGER},
X'52'{%REAL},
X'8009'{%LONG SOMETHING},
X'4031'{%BYTE},
X'35'{%STRING},
X'6051'{%HALF->%INTEGER+WARNING},
X'4041'{%SHORT->%SHORTINTEGER},
X'33'{%RECORD},
0,
X'61'{%LONG INTEGER},
X'62'{%LONG REAL},
==== ercc07/emas-2900/algolbm_alg50.txt ====
//JOB(ERCC07,STEPHENS,T=200,L=10000)
//OPTIONS(QUOTES,OPT)
//ALGOL
'COMMENT'
***************
* *
* ALGG050 *
* *
***************
;
'BEGIN'
'BEGIN' 'COMMENT' TEST PROGRAM MK.2;
'COMMENT' JFMP2 ;
'COMMENT' A0,A6;
'REAL' XLIM,YLIM,TLIM,GAPX,GAPY,H;
XLIM:=READ; YLIM:=READ; TLIM:=READ;
GAPX:=READ; GAPY:=READ; H:=READ;
'BEGIN'
'REAL' X,Y,T,K,W,G,B,C,INTA,INC,DTL;
==== ercc07/emas-2900/sup26csrce_enter04s.txt ====
%EXTRINSICINTEGER INPTR
%EXTRINSICINTEGER OUTPTR
%CONSTINTEGER MASK=X'80FC3FFF'
%EXTERNALINTEGERFNSPEC HANDKEYS
%EXTERNALROUTINESPEC HOOT(%INTEGER NUM)
%EXTERNALROUTINESPEC GET PSTB(%INTEGERNAME P0, P1)
%EXTERNALROUTINESPEC SUP29
%EXTERNALROUTINESPEC GPC(%RECORDNAME P)
%EXTERNALROUTINESPEC SLAVESONOFF(%INTEGER J)
%EXTERNALROUTINESPEC PTREC(%RECORDNAME P)
%SYSTEMROUTINESPEC MOVE(%INTEGER L, FROMAD, TOAD)
%RECORDFORMAT PARMF(%INTEGER DEST, SRCE, P1, P2, P3, P4, P5, %C
P6)
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20A ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,WASKLOKCORRECT,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,DQADDR, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0, %C
==== ercc07/emas-2900/algolbm_alg52.txt ====
//JOB(ERCC07,STEPHENS,T=200,L=10000)
//OPTIONS(QUOTES,OPT)
//ALGOL
'COMMENT'
***************
* *
* ALGG052 *
* *
***************
;
'BEGIN'
'BEGIN' 'COMMENT' A0,A6; 'REAL' CHI,MU,NU,S,DX,ZETAE,ZETA,
A,B,LCHI,SCHI,UCHI,LMU,SMU,UMU,THETAIG,PHI,LAMDA,ETA;
'INTEGER' M,X,I,J,CHOICE;
'REAL' 'PROCEDURE' EM(Y,L); 'VALUE' Y,L; 'REAL' Y; 'INTEGER' L;
'BEGIN' 'REAL' S, Q; 'INTEGER' R;
'IF' L = 0 'THEN' S:=1 'ELSE' 'BEGIN' S:=1; Q:=1;
'FOR' R:=1 'STEP' 1'UNTIL' L 'DO' 'BEGIN' Q:=Q*Y/R; S:=S+Q 'END';
EM:=S 'END'; 'END' OF PROCEDURE EM;
'INTEGER' 'PROCEDURE' FA(X); 'VALUE' X; 'INTEGER' X; 'BEGIN'
'INTEGER' I,P; 'IF' X = 0 'THEN' P:=1'ELSE' 'BEGIN' P:=1;
==== ercc07/emas-2900/algolbm_alg54.txt ====
//JOB(ERCC07,STEPHENS,T=200,L=10000)
//OPTIONS(QUOTES,OPT)
//ALGOL
'COMMENT'
***************
* *
* ALGG054 *
* *
***************
;
'BEGIN'
'COMMENT'
!***BG4621B***BEN4ASUE****
;
'BEGIN' 'INTEGER' I,J,M,N,I2,J2,I1,J1,P,H,H1,H2,X1,B,C1,R,D,E,ALPHA,BE
TA,
GAMMA,A,SIGMA,NETA,Q,S,T,TOR,VV,W,PI;
I1:=0;J1:=0;
H1:=1; 'COMMENT' FIX UP;
==== ercc07/emas-2900/algolbm_alg55.txt ====
//JOB(ERCC07,STEPHENS,T=200,L=10000)
//OPTIONS(QUOTES,OPT)
//ALGOL
'COMMENT'
***************
* *
* ALGG055 *
* *
***************
;
'BEGIN'
'COMMENT' YC02 ;
'COMMENT' ANALYSIS OF VARIANCE TABLE FOR MG,NA,K,P.;
'COMMENT' A0,A6,A14;
'INTEGER' SETS,N,R,C,X,Y,I,J,Z;
'REAL' K,GM,TB1,TB2,TB3,TB4,T1,T2,T3;
'REAL' 'ARRAY' DATA[1:7,1:11], AV[1:17,1:6],AGN[1:3,1:7],
ALS[1:3,1:3], NG[1:3,1:4],GLSN[1:3,1:7],SN[1:5,1:7]
;
'COMMENT' SET TO ZERO;
SETS:=N:=I:=J:=0;
==== ercc07/emas-2900/nrimp09s.txt ====
!QIN; %MAINEP ICL9CEZIMP
%TRUSTEDPROGRAM
%BEGIN
%CONSTINTEGER RELEASE=9
%CONSTSTRING(8) LADATE="05May81"; ! LAST ALTERED
%INTEGER I, J, K
! PRODUCED BY OLDPS FROM NRIMPPS7 ON 06/03/80
%CONSTBYTEINTEGERARRAY CLETT(0: 487)= 1,
43, 1, 45, 1, 40, 1, 41, 1, 44, 2, 201, 198, 6, 213,
206, 204, 197, 211, 211, 5, 215, 200, 201, 204, 197, 5, 213, 206,
212, 201, 204, 4, 210, 197, 193, 204, 7, 201, 206, 212, 197, 199,
197, 210, 8, 204, 207, 206, 199, 210, 197, 193, 204, 4, 204, 207,
206, 199, 11, 194, 217, 212, 197, 201, 206, 212, 197, 199, 197, 210,
6, 211, 212, 210, 201, 206, 199, 11, 200, 193, 204, 198, 201, 206,
212, 197, 199, 197, 210, 7, 210, 207, 213, 212, 201, 206, 197, 2,
198, 206, 3, 205, 193, 208, 6, 210, 197, 195, 207, 210, 196, 4,
206, 193, 205, 197, 5, 193, 210, 210, 193, 217, 9, 193, 210, 210,
193, 217, 206, 193, 205, 197, 9, 207, 198, 208, 210, 207, 199, 210,
193, 205, 6, 207, 198, 198, 201, 204, 197, 6, 207, 198, 204, 201,
211, 212, 6, 198, 207, 210, 205, 193, 212, 4, 211, 208, 197, 195,
3, 193, 206, 196, 2, 207, 210, 1, 58, 6, 206, 207, 210, 205,
==== ercc07/emas-2900/nrsrce_acrtests.txt ====
%BEGIN
%INTEGER ACR,ADR,I,J
READ(ACR)
ACR=ACR<<20
READ(ADR)
ADR=(ADR!X'2000')<<18
!
*LDTB_X'18000010'
*LDA_ADR
*VAL_ACR
*CPSR_I
PRINTSTRING("VALIDATE CC=")
WRITE(I>>2&3,3)
NEWLINE
%ENDOFPROGRAM
==== ercc07/emas-2900/imptests_rt10.txt ====
%BEGIN
%RECORDFORMAT F1(%INTEGER I,J,K,L)
%RECORDFORMAT F2(%INTEGER P,%RECORDARRAY A(0:8)(F1))
%RECORD R,RP(F2)
%RECORDNAME RR(F2)
%RECORDNAME RN(F1)
%INTEGER I,J,K,L
RR==RP
%CONTROL X'1FFFFFFF'
I=ADDR(R_A(0))
RN==R_A(0)
J=ADDR(R_A(0)_K)
K=ADDR(RR_A(0))
L=ADDR(RR_A(0)_K)
RN==RR_A(0)
%CONTROL X'0FFFFFFF'
%UNLESS I+8=J %AND ADDR(R)+4=I %AND K+8=L %C
%AND ADDR(RR)+4=K=ADDR(RN) %THEN PRINTSTRING("
WRONG ANSWERS
")
%ENDOFPROGRAM
==== ercc07/emas-2900/imptests_rt11.txt ====
%BEGIN
!***********************************************************************
!* SHOULD RUN WITHOUT OPUT. LOOPS ON SOME COMPILERS DUE TO *
!* MISSING LABELS GIVING JUMPS WITH ZERO OFFSET *
!***********************************************************************
%INTEGER I,K,L
%CONSTINTEGER J=0
I=4000; L=10
%IF I>4095 %AND J#0 %THEN I=I+1
%IF I>4095 %AND J#0 %THEN I=I+1 %ELSE I=I-1
%IF I>4095 %AND J#0 %THEN %START; %FINISH
%IF I>4095 %AND J#0 %THEN %START
I=I+1
%FINISH %ELSE I=I-1
%IF (I>4095 %AND J#0 ) %AND L=1 %THEN I=I+1
%IF (I>4095 %AND J#0) %OR L=1 %THEN I=I+1
%UNLESS I>4095 %AND J#0 %THEN I=I+1
%UNLESS I>4095 %AND J#0 %THEN I=I+1 %ELSE I=I-1
%UNLESS I>4095 %AND J#0 %THEN %START; %FINISH
%UNLESS I>4095 %AND J#0 %THEN %START
I=I+1
==== ercc07/emas-2900/imptests_rt12.txt ====
%BEGIN
!***********************************************************************
!* TESTS CLEARING RECORDARRAY FOR OVERWRITING OFF END *
!***********************************************************************
%INTEGER I
%RECORDFORMAT F(%STRING(15)NAME,%INTEGER I,J,K,%LONGLONGREAL X, %C
%LONGREALARRAY A(0:200))
%RECORDARRAY ONE(1:100)(F)
%RECORDARRAY TWO(1:2)(F)
TWO(1)_NAME="PETE"
%CYCLE I=1,1,100
ONE(I)=0
%REPEAT
%IF TWO(1)_NAME#"PETE" %THEN PRINTSTRING("***ERROR***")
%ENDOFPROGRAM
==== ercc07/emas-2900/imptests_rt13.txt ====
%BEGIN
!***********************************************************************
!* TESTS ASSIGNING TO STRING ARRAYS WHEN PASSED BY NAME *
!***********************************************************************
%STRING(11)%ARRAY A(0:15,0:15)
%ROUTINE FRED(%STRINGARRAYNAME WA)
%STRING(15)W
%INTEGER WP
WP=1
W=WA(WP,WP)
%IF W="?" %THEN WA(WP,WP)="ABCD"
%END
A(1,1)="?"
FRED(A)
PRINTSTRING(A(1,1))
%ENDOFPROGRAM
==== ercc07/emas-2900/vtests.txt ====
'BEGIN''COMMENT' MODUL PRO TESTOVANI I/O OPERACI KOMP. ALGOLE 2900
MODUL : HJS U9900A MALA
ENTRYNAME : EALG
DAT.VYDANI: UNOR 78
AUTOR : MENSIK ;
'INTEGER'J,I,IN,OUT,MT,D,FI,FR,ZN,FS ;
'REAL'R ;
'BOOLEAN' B ;
'PROCEDURE' TISKARR(K,A,B,C);
'VALUE'K; 'INTEGER'K; 'INTEGER''ARRAY'A; 'ARRAY'B;
'BOOLEAN''ARRAY'C; 00921000
'BEGIN' WRITETEXT(OUT,'('%%IWRITEARRAY,WRITEARRAY,BWRITEARRAY_:%
')');
IWRITEARRAY(OUT,FI,K,A,'('IRA')'); NEWLINE(OUT,2);
WRITEARRAY (OUT,FI,K,B,'('RRA')'); NEWLINE(OUT,2);
BWRITEARRAY(OUT,0,K,C,'('BRA')'); NEWLINE(OUT,2)
'END';
'PROCEDURE' TISKARR2(K,A,B,C);
'VALUE'K; 'INTEGER'K; 'INTEGER''ARRAY'A; 'ARRAY'B;
'BOOLEAN''ARRAY'C; 00921000
==== ercc07/emas-2900/imptests_rt14.txt ====
%BEGIN
!***********************************************************************
!* A TEST TO CHECK THE LINE NUMBER OF A FAILURE AT RUN TIME *
!***********************************************************************
%INTEGERARRAY A(0:4)
%INTEGER I
I=10
%IF 1<0 %THEN %START
!
!
%STOP
%FINISH %ELSE A(I)=A(I)+1
!
%ENDOFPROGRAM
==== ercc07/emas-2900/sup26gsrce_gpc34s.txt ====
%CONSTSTRING(25) VSN = "GPC34 17TH NOV 80"; ! ************************************************GPC GPC GPC
!
! EMAS 2900 SUPERVISOR NOTE
! No: 5
! Date: 21/05/80
! Author: A.Gibbons
!
!
! %EXTERNAL ROUTINE GPC(%RECORDNAME P)
!
! 1. CONVENTIONS
! The record spec for the parameter is
! %RECORDFORMAT PARMF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6)
! where
! DEST is considered as two half words DSNO and DACT. DSNO
! must be GPC's DSNO
! DACT is set according to the function required.
!
! SRCE is considered as two halfwords SSNO and SACT.
! SSNO is SNO of ORIGINATOR and SACT is DACT for
! the reply.
==== ercc07/emas-2900/sup26fsrce_tape68s.txt ====
!**************************************************
!* *
!* TAPE HANDLER FOR 2900 *
!* *
!**************************************************
!!
!! EXTERNAL ROUTINE REFERENCES
!!
%EXTERNALSTRINGFNSPEC HTOS(%INTEGER VALUE, PLACES)
%EXTERNALROUTINESPEC OPMESS(%STRING (23) S)
%EXTERNALROUTINESPEC PON(%RECORDNAME P)
%SYSTEMROUTINESPEC ETOI(%INTEGER A, L)
%SYSTEMROUTINESPEC MOVE(%INTEGER L, FROMAD, TOAD)
%EXTERNALROUTINESPEC PRHEX(%INTEGER N)
%EXTERNALROUTINESPEC DUMP TABLE(%INTEGER TABNO, START, L)
%EXTRINSICLONGINTEGER PARMDES
%EXTERNALINTEGERFNSPEC NEWPPCELL
%EXTERNALROUTINESPEC RETURNPPCELL(%INTEGER CELL)
%IF MULTIOCP=YES %START
%EXTERNALROUTINESPEC RESERVELOG
==== ercc07/emas-2900/imptests_rt15.txt ====
%BEGIN
!***********************************************************************
!* TESTS SOME VERY NOTTED CONDITIONS FOR CONSISTENCY. NO OPUT IF OK *
!***********************************************************************
%INTEGER I,J,K
%ROUTINESPEC A
%ROUTINESPEC B
%ROUTINESPEC C
K=0
%CYCLE I=-1,1,1
%CYCLE J=0,1,3
%IF %NOT %NOT %NOT %NOT I=1 %THEN A %ELSE B
%IF %NOT (%NOT I=1) %THEN A %ELSE B
%IF I=1 %THEN A %ELSE B
C
%IF %NOT I=1 %THEN A %ELSE B
%UNLESS I=1 %THEN A %ELSE B
C
%IF I=1 %AND J#2 %THEN A %ELSE B
%IF I=1 %AND %NOT J=2 %THEN A %ELSE B
==== ercc07/emas-2900/sup26isrce_fast33s.txt ====
%EXTERNALSTRING (15) %FNSPEC STRINT(%INTEGER N)
%EXTERNALSTRING (8) %FNSPEC STRHEX(%INTEGER N)
%EXTERNALSTRING(8) %FNSPEC HTOS(%INTEGER VALUE,PLACES)
%EXTERNALROUTINESPEC PKMONREC(%STRING(20)TEXT,%RECORDNAME P)
%EXTERNALROUTINESPEC OPMESS(%STRING (63) S)
%ROUTINESPEC MONITOR(%STRING (63) S)
%EXTERNALROUTINESPEC DUMP TABLE(%INTEGER T, A, L)
%ROUTINESPEC ELAPSED INT(%RECORDNAME P)
%SYSTEMROUTINESPEC MOVE(%INTEGER L,F,T)
%SYSTEMROUTINESPEC ETOI(%INTEGER A, L)
%ROUTINESPEC PDISC(%RECORDNAME P)
%EXTERNALROUTINESPEC HOOT(%INTEGER NHOOTS)
%EXTERNALROUTINESPEC WAIT(%INTEGER MSECS)
%EXTERNALINTEGERFNSPEC HANDKEYS
%EXTERNALINTEGERFNSPEC REALISE(%INTEGER PUBVIRTADDR)
%EXTERNALROUTINESPEC SLAVESONOFF(%INTEGER ONOFF)
%IF MULTIOCP=YES %THEN %START
%EXTERNALROUTINESPEC RESERVE LOG
%EXTERNALROUTINESPEC RELEASE LOG
%FINISH
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20J ONWARDS *
==== ercc07/emas-2900/sup26fsrce_fast29s.txt ====
%EXTERNALSTRING (15) %FNSPEC STRINT(%INTEGER N)
%EXTERNALSTRING (8) %FNSPEC STRHEX(%INTEGER N)
%EXTERNALSTRING(8) %FNSPEC HTOS(%INTEGER VALUE,PLACES)
%EXTERNALROUTINESPEC PKMONREC(%STRING(20)TEXT,%RECORDNAME P)
%EXTERNALROUTINESPEC OPMESS(%STRING (63) S)
%ROUTINESPEC MONITOR(%STRING (63) S)
%EXTERNALROUTINESPEC DUMP TABLE(%INTEGER T, A, L)
%ROUTINESPEC ELAPSED INT(%RECORDNAME P)
%SYSTEMROUTINESPEC MOVE(%INTEGER L,F,T)
%SYSTEMROUTINESPEC ETOI(%INTEGER A, L)
%ROUTINESPEC PDISC(%RECORDNAME P)
%EXTERNALROUTINESPEC HOOT(%INTEGER NHOOTS)
%EXTERNALROUTINESPEC WAIT(%INTEGER MSECS)
%EXTERNALINTEGERFNSPEC HANDKEYS
%EXTERNALINTEGERFNSPEC REALISE(%INTEGER PUBVIRTADDR)
%EXTERNALROUTINESPEC SLAVESONOFF(%INTEGER ONOFF)
%IF MULTIOCP=YES %THEN %START
%EXTERNALROUTINESPEC RESERVE LOG
%EXTERNALROUTINESPEC RELEASE LOG
%FINISH
==== ercc07/emas-2900/perqtrimp_tform1s.txt ====
!
! RECORDFORMAT FOR ALL THE OPTION AND FLAG VARAIBLES
!
%RECORDFORMAT PARMF(%INTEGER BITS1,BITS2,TTOPUT,
%BYTEINTEGER LET,DYNAMIC,LINE,TRACE,ARR,DBUG,CHK,DIAG,OPT,FREE,
LIST,CPRMODE,COMPILER,SMAP,Y,PROF,INHCODE,DCOMP,FAULTY,X,STACK,S1,S2,S3)
%RECORDFORMAT LISTF((%HALFINTEGER PTYPE,(%HALF UIOJ %OR %BYTE XB,FLAG),
%HALF SNDISP,ACC,SLINK,KFORM %OR %INTEGER S1,S2,S3),%INTEGER LINK)
%RECORDFORMAT LEVELF(%INTEGER RBASE, DIAGINF, RAL, FLAG, L, M, NMDECS, ONWORD, ONINF,
LABEL, JROUND, UNATT FORMATS, PSIZE, ENTRYAD, DISPLAY, AUXSBASE,
NAMES,%HALFINTEGER SNMAX,SN,RESSIZE,SET,%INTEGERARRAY AVL WSP(0:4))
%RECORDFORMAT WORKAF(%INTEGER NNAMES,CCSIZE,DSIZE,ASL MAX,ASL CUR BTM,
CONST PTR,CONST BTM,SP0,WKFILEAD,WKFILEK,FILE ADDR,RELEASE,
AASL0,CONST LIMIT,RTCOUNT,ARTOP,AMAINEP,DICTBASE,SP2,
%INTEGERNAME LINE,%STRING(9)LADATE,
%BYTEINTEGERARRAYNAME CC,A,LETT,
%INTEGERARRAYNAME WORD,TAGS,CTABLE,
%RECORD(LEVELF)%ARRAYNAME LEVELINF,
%INTEGERARRAY PLABS,PLINK(0:31))
%RECORDFORMAT RD((%INTEGER S1 %OR %HALF PTYPE,%BYTE XB,FLAG),
==== ercc07/emas-2900/nrimp10s.txt ====
%MAINEP ICL9CEZIMP
%TRUSTEDPROGRAM
%BEGIN
%CONSTINTEGER RELEASE=10
%CONSTINTEGER YES=1,NO=0
%CONSTINTEGER USE IMP=NO
%CONSTINTEGER VMEB=NO
%CONSTSTRING(9) LADATE="6 May 81"; ! LAST ALTERED
%INTEGER I, J, K
! PRODUCED BY OLDPS FROM NRIMPPS8 ON 16/12/80
%CONSTBYTEINTEGERARRAY CLETT(0: 500)= 1,
43, 1, 45, 1, 40, 1, 41, 1, 44, 2, 201, 198, 6, 213,
206, 204, 197, 211, 211, 5, 215, 200, 201, 204, 197, 5, 213, 206,
212, 201, 204, 3, 198, 207, 210, 1, 61, 4, 210, 197, 193, 204,
7, 201, 206, 212, 197, 199, 197, 210, 8, 204, 207, 206, 199, 210,
197, 193, 204, 4, 204, 207, 206, 199, 11, 194, 217, 212, 197, 201,
206, 212, 197, 199, 197, 210, 6, 211, 212, 210, 201, 206, 199, 11,
200, 193, 204, 198, 201, 206, 212, 197, 199, 197, 210, 7, 210, 207,
213, 212, 201, 206, 197, 2, 198, 206, 3, 205, 193, 208, 8, 198,
213, 206, 195, 212, 201, 207, 206, 6, 210, 197, 195, 207, 210, 196,
4, 206, 193, 205, 197, 5, 193, 210, 210, 193, 217, 9, 193, 210,
==== ercc07/emas-2900/sup26isrce_makeopt.txt ====
PARM FREE,OPT,STACK,NOLIST
IMP CTOPT+SUP26ISRCE_SUP26IS,SUPZZ,,.OUT
IMP CTOPT+SUP26ISRCE_COM32S,COMZZ,,.OUT
IMP CTOPT+SUP26ISRCE_PRINT05S,PRINTZZ,,.OUT
IMP CTOPT+SUP26ISRCE_OPER33S,OPERZZ,,.OUT
IMP CTOPT+SUP26ISRCE_ENTER09S,ENTERZZ,,.OUT
IMP CTOPT+SUP26ISRCE_GPC36S,GPCZZ,,.OUT
IMP SUP26ISRCE_MINDIAGS,MINDIAGZZ,,.OUT
IMP CTOPT+SUP26ISRCE_COMMS48S,COMMSZZ,,.OUT
IMP CTOPT+SUP26ISRCE_FAST33S,FASTZZ,,.OUT
IMP CTOPT+SUP26ISRCE_TAPE70S,TAPEZZ,,.OUT
PARM MAP
LINK
SUPZZ
COMZZ
PRINTZZ
OPERZZ
ENTERZZ
GPCZZ
MINDIAGZZ
COMMSZZ
==== ercc07/emas-2900/sup26fsrce_makechkd.txt ====
PARM FREE,STACK,NOCHECK,NOLIST
IMP CTOPT+SUP26FSRCE_SUP26FS,SUPZZ,,.OUT
IMP CTOPT+SUP26FSRCE_COM31S,COMZZ,,.OUT
IMP CTOPT+SUP26FSRCE_PRINT05S,PRINTZZ,,.OUT
IMP CTOPT+SUP26FSRCE_OPER33S,OPERZZ,,.OUT
IMP SUP26FSRCE_ENTER06S,ENTERZZ,,.OUT
IMP CTOPT+SUP26FSRCE_GPC33S,GPCZZ,,.OUT
PARM FREE,OPT,STACK,NOLIST
IMP SUP26FSRCE_NDIAG07S,NDIAGZZ,,.OUT
IMP CTOPT+SUP26FSRCE_COMMS46S,COMMSZZ,,.OUT
IMP CTOPT+SUP26FSRCE_FAST29S,FASTZZ,,.OUT
IMP CTOPT+SUP26FSRCE_TAPE68S,TAPEZZ,,.OUT
PARM MAP
LINK
SUPZZ
COMZZ
PRINTZZ
OPERZZ
ENTERZZ
GPCZZ
NDIAGZZ
==== ercc07/emas-2900/nrimpps9.txt ====
38
D(NAME)
D(ICONST)
D(CONST)
D(CHXTYPE)
D(N)
D(S)
D(TEXT)
D(BIGHOLE)
D(N255)
D(HOLE)
D(MARK)
D(READLINE?)
D(TEXTTEXT)
D(DUMMYAPP)
D(DOWN)
D(UP)
D(LISTON)
D(LISTOFF)
D(COLON)
D(NOTECONST)
==== ercc07/emas-2900/sup27bsrce_documentn.txt ====
This partitioned file contains all the source required to make up a
version 27B Supervisor, plus the version of the IMP80 compiler and FIX
utility used at Edinburgh to do so. This compiler is necessary as some
advanced language features are required which are not available in the
service compiler.
Note that the OPTION NOBRACKETS must be in force in the process being
used for the method described to work.
Two "OBEY" subfiles are available: MAKECHKD and MAKEOPT. They each
construct a test Supervisor which is left in file SUP26xT, where x is
'C' or 'O' respectively.
Making a Supervisor thus consists of the following:
a) INSERT the IMP80 compiler and FIX utility into the current directory
(and then log off and log on again if IMP80 was previously used in
==== ercc07/emas-2900/emasgen01s.txt ====
!
! THE PRINCIPAL OPCODES ARE HERE DEFINED AS THEIR MNEMONICS(AMENDED)
!
%CONSTINTEGER LB=X'7A',SLB=X'52',STB=X'5A',ADB=X'20',CPB=X'26', %C
MYB=X'2A',SBB=X'22',CPIB=X'2E',OUT=X'3C',CPSR=X'34'
%CONSTINTEGER LD=X'78',LDA=X'72',INCA=X'14',STD=X'58',LDB=X'76', %C
LDTB=X'74',LDRL=X'70',CYD=X'12',MODD=X'16',SLD=X'50'
%CONSTINTEGER STLN=X'5C',ASF=X'6E',ST=X'48',RALN=X'6C',LXN=X'7E',%C
LLN=X'7C',LSS=X'62',SLSS=X'42',MPSR=X'32',STSF=X'5E',%C
LUH=X'6A',STUH=X'4A',LSD=X'64',SLSD=X'44',PRCL=X'18', %C
LSQ=X'66',SLSQ=X'46',STXN=X'4C',LCT=X'30',STCT=X'36'
%CONSTINTEGER JUNC=X'1A',JLK=X'1C',CALL=X'1E',EXIT=X'38',JCC=2, %C
JAT=4,JAF=6,DEBJ=X'24'
%CONSTINTEGER IAD=X'E0',ICP=X'E6',USH=X'C8',ISB=X'E2',IRSB=X'E4',%C
OR=X'8C',UCP=X'C6',IMY=X'EA',IMDV=X'AE',AND=X'8A', %C
ISH=X'E8',IMYD=X'EC',IDV=X'AA',IRDV=X'AC',NEQ=X'8E'
%CONSTINTEGER RAD=X'F0',RSB=X'F2',RRSB=X'F4',FLT=X'A8',RRDV=X'BC', %C
RSC=X'F8',FIX=X'B8',RDV=X'BA',RDDV=X'BE',RMYD=X'FC', %C
RMY=X'FA',RCP=X'F0'
!
%CONSTINTEGER MVL=X'B0',MV=X'B2',SWEQ=X'A0',SWNE=X'A2',CPS=X'A4'
==== ercc07/emas-2900/sup27isrce_enter13s.txt ====
%RECORDFORMAT PARMF(%INTEGER DEST, SRCE, P1, P2, P3, P4, P5, P6)
%RECORDFORMAT SERVAF(%INTEGER P, C)
%EXTRINSICINTEGER INPTR
%EXTRINSICINTEGER OUTPTR
%CONSTINTEGER MASK=X'80FC3FFF'
%EXTERNALINTEGERFNSPEC HANDKEYS
%EXTERNALROUTINESPEC HOOT(%INTEGER NUM)
%EXTERNALINTEGERFNSPEC GPC INIT(%INTEGER CA,PT,MODE)
%EXTERNALINTEGERFNSPEC SAFE IS READ(%INTEGER ISAD,%INTEGERNAME VAL)
%EXTERNALROUTINESPEC GET PSTB(%INTEGERNAME P0, P1)
%EXTERNALROUTINESPEC SUP29
%EXTERNALROUTINESPEC SUPPOFF(%RECORD(SERVAF)%NAME SERV, %C
%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC DISC(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC PDISC(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC GPC(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC SLAVESONOFF(%INTEGER J)
%EXTERNALROUTINESPEC PKMONREC(%STRING(20)TEXT,%RECORD(PARMF)%NAME P)
!* Communications record format - extant from CHOPSUPE 21D onwards *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,SLIPL,SBLKS,SEPGS,NDISCS,DLVNADDR, %C
(%INTEGER GPCTABSIZE,GPCA %OR %INTEGER DCUTABSIZE,DCUA), %C
==== ercc07/emas-2900/docs_e3prot.txt ====
Protection in EMAS3
___________________
Apart from a single write protect bit in the segment tables all
protection on IBM architecture is provided by keys on the store. Each
store page has associated a 4 bit key (0-15) an each program has a
similar key in its PSW. Writes to store are only permitted if the key in
the PSW matches the key on the store or if the key in the pSW is 0. One
extra bit associated with the page is available to extend key protection
to read accesses.
EMAS3 has the system in segments 0-63 as there is no public address
space. Careful use of the keys is needed to allow sharing and give
reasonable protection to the system. The scheme may cause some
inconvenience to Director and Comms controller since these may have to
alter their PSW before writing to certain pages. Fortunately there is a
suitable privileged instruction to do this!
My plan is thus:-
==== ercc07/emas-2900/sup26hsrce_print05s.txt ====
%EXTRINSICLONGINTEGER KMON
%ROUTINESPEC PRHEX(%INTEGER H)
%ROUTINESPEC PRINTER(%RECORDNAME P)
%EXTERNALROUTINESPEC PON(%RECORDNAME P)
%EXTERNALROUTINESPEC OPMESS(%STRING (23) MESS)
%SYSTEMROUTINESPEC ITOE(%INTEGER A, L)
%IF MULTIOCP=YES %THEN %START
%EXTERNALROUTINESPEC SEMALOOP(%INTEGERNAME SEMA)
%ROUTINESPEC RESERVE LOG
%ROUTINESPEC RELEASE LOG
%ROUTINESPEC AWAIT LOG ROUTE
%FINISH
%RECORDFORMAT PARMF(%INTEGER DEST, SRCE, P1, P2, P3, P4, P5, %C
P6)
!------------------------------------------------------------------------
%RECORDFORMAT ENTFORM(%INTEGER SER, PTSM, PROPADDR, %C
TICKS SINCE, CAA, GRCB AD, LBA, ALA, STATE, RESP0, %C
RESP1, SENSE1, SENSE2, SENSE3, SENSE4, REPSNO, BASE, %C
ID, DLVN, MNEMONIC, ENTSIZE, PAW, USAW0, URCB AD, %C
SENSDAT AD, LOGMASK, TRTAB AD, UA SIZE, UA AD, %C
==== ercc07/emas-2900/imp918s.txt ====
%BEGIN
%TRUSTEDPROGRAM
%INTEGER I,J,K
!*DELSTART
%CONSTBYTEINTEGERARRAY OPC(0:120)=0,
8,9,X'10',X'11',X'12',
X'13',X'20',X'21',X'22',X'23',
X'30',X'31',X'32',X'33',X'24',
X'34',0,X'45',X'46',X'47',
X'54',X'55',X'56',X'57',X'58',X'59',X'5A',X'5B',X'5C',
X'5D',X'5E',X'5F',X'68',X'69',X'6A',
X'6B',X'6C',X'6D',X'6E',X'6F',
X'78',X'79',X'7A',X'7B',X'7C',
X'7D',X'7E',X'7F',0,X'70',
X'60',X'50',X'4E',X'4F',X'4C',
X'4B',X'4A',X'49',X'48',X'44',
X'43',X'42',X'41',X'40',0,
X'90',X'98',X'86',X'87',0,
X'91',X'92',X'94',X'95',X'96',
X'97',X'9C',X'9E',X'9D',X'9F',
==== ercc07/emas-2900/itrimp_ibmoptas.txt ====
%INCLUDE "ERCC07.TRIMP_HOSTCODES"
%CONSTINTEGER HOST=IBMXA
%CONSTINTEGER TARGET=IBMXA
==== ercc07/emas-2900/perq_compress.txt ====
%EXTERNALROUTINESPEC DEFINE(%STRING(63)S)
%EXTERNALROUTINE COMPRESS(%STRING(63)S)
!***********************************************************************
!* COMPRESSES A FILE OF ERROR MESSAGE INTO TWO CONSTARRAYS AND *
!* GENERATES A ROUTINE TO REGURGITATE THEM IN ENGLISH *
!***********************************************************************
%INTEGER CPSTRM,INSTRM,LPSTRM
%INTEGERARRAY WORD(0:2000)
%INTEGERARRAY LETT(0:1000)
%INTEGER I, J, K, N, NUM, NEXT, NMAX, NUMMAX
%STRING(31) FILE1, FILE2, FILE3
%STRING(71)TEMP,INPUT,WK1,WK2
%%STRING(71)%FNSPEC MESS(%INTEGER N)
%ROUTINESPEC LIT(%INTEGERNAME P,%STRINGNAME TXT1)
%ROUTINESPEC CARDS OUT
%CONSTBYTEINTEGERARRAY INTT(0:127)= 63(32),63(3),61,63,60, %C
27,30,31,32,63(3),
28,59,29,63(17),
1,2,3,4,5,6,7,8,9,10,11,12,
13,14,15,16,17,18,19,20,
==== ercc07/emas-2900/docs_vaxaa.txt ====
Vax Architectural Assessment
============================
a) Virtual Memory
The Vax provides a 32 bit virtual memory of which half is reserved for the
system - this is very comparable to 2900 with two 31 bit virtual memory -
public and local. Here however the similarity ends; while 2900 provides 8192
segments of 256 pages the Vax provides only 2**21 pages. The segmented scheme
provides several advantages in that the protection mechanism is more
economically administered via segments than pages and it is less wasteful to
find space for a separate page table for each actual segment in use than to keep
one large contiguous one. Vax does allow the page tables themselves to be paged
which neatly avoids the store management problem at the non trivial cost of
further virtual store interrupts. The Vax scheme does result in some pressure on
the "spare" bits in the page table (ie those not required for the base address
of the page). The protection information is compressed into four bits per page
as against the 2900 which allows 10 bits per segment. As a result of this there
is not a "used" bit in the Vax page tables which makes it very difficult for the
operating system to discover which pages a program is using. This must be
regarded as a serious defect which will be particularly noticeable at the very
==== ercc07/emas-2900/impalgs_compress.txt ====
%EXTERNALROUTINESPEC DEFINE(%STRING(63)S)
%EXTERNALROUTINE COMPRESS(%STRING(63)S)
!***********************************************************************
!* COMPRESSES A FILE OF ERROR MESSAGE INTO TWO CONSTARRAYS AND *
!* GENERATES A ROUTINE TO REGURGITATE THEM IN ENGLISH *
!***********************************************************************
%INTEGER CPSTRM,INSTRM,LPSTRM
%INTEGERARRAY WORD(0:2000)
%INTEGERARRAY LETT(0:1000)
%INTEGER I, J, K, N, NUM, NEXT, NMAX, NUMMAX
%STRING(31) FILE1, FILE2, FILE3
%STRING(71)TEMP,INPUT,WK1,WK2
%%STRING(71)%FNSPEC MESS(%INTEGER N)
%ROUTINESPEC LIT(%INTEGERNAME P,%STRINGNAME TXT1)
%ROUTINESPEC CARDS OUT
%CONSTBYTEINTEGERARRAY INTT(0:127)= 63(32),63(3),61,63,60, %C
27,30,31,32,63(3),
28,59,29,63(17),
1,2,3,4,5,6,7,8,9,10,11,12,
13,14,15,16,17,18,19,20,
==== ercc07/emas-2900/sup26csrce_tape65s.txt ====
!**************************************************
!* *
!* TAPE HANDLER FOR 2900 *
!* *
!**************************************************
!!
!! EXTERNAL ROUTINE REFERENCES
!!
%EXTERNALSTRINGFNSPEC HTOS(%INTEGER VALUE, PLACES)
%EXTERNALROUTINESPEC OPMESS(%STRING (23) S)
%EXTERNALROUTINESPEC PON(%RECORDNAME P)
%SYSTEMROUTINESPEC ETOI(%INTEGER A, L)
%SYSTEMROUTINESPEC MOVE(%INTEGER L, FROMAD, TOAD)
%EXTERNALROUTINESPEC PTREC(%RECORDNAME P)
%EXTERNALROUTINESPEC PRHEX(%INTEGER N)
%EXTERNALROUTINESPEC DUMP TABLE(%INTEGER TABNO, START, L)
%EXTRINSICLONGINTEGER PARMDES
%EXTERNALINTEGERFNSPEC NEWPPCELL
%EXTERNALROUTINESPEC RETURNPPCELL(%INTEGER CELL)
!!
==== ercc07/emas-2900/sup26gsrce_mindiags.txt ====
%EXTERNALSTRINGFNSPEC STRHEX(%INTEGER I)
%SYSTEMROUTINE NDIAG(%INTEGER PCOUNT, LNB, FAULT, INF)
!***********************************************************************
!*_______'MASTER DIAGNOSTIC ROUTINE'. DISCOVERS THE LANGUAGE OF THE *
!*_______FAILED ROUTINE FROM WORD 4 OF THE GLA AND CALLS APPROPRIATE *
!*_______DIAGNOSTIC ROUTINE. THIS IS REPEATED TILL ALL DIAGNOSTICS *
!*_______GIVEN. *
!*_______PCOUNT = PCOUNTER AT FAILURE *
!*_______LNB = LOCAL NAME BASE AT FAILURE *
!*_______FAULT = FAILURE (0=%MONITOR REQUESTED) *
!*_______INF =ANY FURTHER INFORMATION *
!***********************************************************************
PRINTSTRING("
MINIMUM NDIAGS ENTERED
FAULT NO ="); WRITE(FAULT,2)
PRINTSTRING("
PC=X".STRHEX(PCOUNT)."
LNB=X".STRHEX(LNB)."
")
%END
%ENDOFFILE
==== ercc07/emas-2900/sup28asrce_ndiag07s.txt ====
!*_ DATED 11 NOV 76 1
! ALTERATIONS BY K.YARWOOD ...
! PRINT FL AND NEXT SYMBOL LINES COMMENTED OUT
! PRINTTEXT'S TURNED TO PRINTSTRING'S
! ADDITION FOR LONGINTEGER IN RT PRINT VAR
! HEX EQUIVALENTS FOR INTS,LONGINTS ETC PRINTED
! INF PRINTED IN HEX IN RT ERRMESS
%EXTERNALSTRINGFNSPEC STRHEX(%INTEGER I)
%EXTERNALSTRING(8)%FNSPEC STRINT(%INTEGER I)
%CONSTINTEGER STACKBASE=X'80100000'; ! START OF RESIDENT STACK
! %SYSTEMROUTINESPEC SIGNAL(%INTEGER I, J, K, %INTEGERNAME F)
%ROUTINESPEC PRINTMESS(%INTEGER N)
! %SYSTEMROUTINESPEC TIDY EXIT
!*
%ROUTINESPEC INDIAG(%INTEGER OLDLNB, L, PC, %INTEGERNAME NEWLNB)
! %ROUTINESPEC FDIAG(%INTEGER OLDLNB,PC,%INTEGERNAME NEWLNB)
%ROUTINESPEC ERMESS(%INTEGER N, INF)
! %ROUTINESPEC ICL9CELABELS
==== ercc07/emas-2900/sup26hsrce_com32s.txt ====
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20J ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,TOJDAY,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,DQADDR, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0, %C
%INTEGER ITINT,CONTYPEA,GPCCONFA,FPCCONFA,SFCCONFA, %C
BLKADDR,RATION,SMACS,TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,FEPS,SP1, %C
SP2,SP3,SP4,SP5,SP6,SP7,SP8, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
HBIT,SLAVEOFF,INHSSR,SDR1,SDR2,SDR3, %C
SDR4,SESR,HOFFBIT,S2,S3,S4,END)
! MISC. ROUTINE SPECS
%EXTERNALROUTINESPEC PKMONREC(%STRING(20)TEXT,%RECORDNAME P)
%EXTERNALSTRING(8)%FNSPEC STRHEX(%INTEGER N)
%RECORDFORMAT PARMF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6)
%EXTERNALROUTINESPEC OPMESS2(%INTEGER OP,%STRING(63)TXT)
==== ercc07/emas-2900/sup27fsrce_releasen.txt ====
Supervisor 27F Release Notice
This Supervisor has the following changes
1) Changes to Schedule to allow a smoother change
between snoozing and non snoozing as the load increase
past the point where snoozing helps performance.
2) Change to layout of timing information to allow inspection
online from utility ercc20.perfy
3) Change to local contoller to deduce sequential access to
segments in some circumstances.
4) Minor corrections elsewhere.
P. Stephens 21/10/81
==== ercc07/emas-2900/vztests.txt ====
'BEGIN''COMMENT' MODUL PRO TESTOVANI I/O OPERACI KOMP. ALGOLE 2900 00100000
MODUL : HJS U9900A MALA 00200000
ENTRYNAME : EALG 00300000
DAT.VYDANI: UNOR 78 00400000
AUTOR : MENSIK ; 00500000
00600000
'INTEGER'J,I,IN,OUT,MT,D,FI,FR,ZN,FS ; 00700000
'REAL'R ; 00800000
'BOOLEAN' B ; 00900000
'PROCEDURE' TISKARR(K,A,B,C); 00910000
'VALUE'K; 'INTEGER'K; 'INTEGER''ARRAY'A; 'ARRAY'B; 00920000
'BOOLEAN''ARRAY'C; 00921000
'BEGIN' WRITETEXT(OUT,'('%%IWRITEARRAY,WRITEARRAY,BWRITEARRAY_:% 00930000
')'); 00940000
IWRITEARRAY(OUT,FI,K,A,'('IRA')'); NEWLINE(OUT,2); 00950000
WRITEARRAY (OUT,FI,K,B,'('RRA')'); NEWLINE(OUT,2); 00960000
BWRITEARRAY(OUT,'('0')',K,C,'('BRA')'); NEWLINE(OUT,2) 00970000
'END'; 00980000
01000000
IN:=60; OUT:=30; MT:=100; D:=120; SET(MT, 6); SET(D,2); 01100000
FI:=FORMAT('('2S-N2D;')'); FR:=FORMAT('('2S-D.4D@+ND ')'); 01200000
==== ercc07/emas-2900/ibm_impmess.txt ====
1 "%REPEAT is not required"
2 "Label & has already been set in this block"
4 "& is not a Switch name at current textual level"
5 "Switch name & in expression or assignment"
6 "Switch label &(#) set a second time"
7 "Name & has already been declared"
8 "Routine or fn & has more parameters than specified"
9 "Parameter # of & differs in type from specification"
10 "Routine or fn & has fewer parameters than specified"
11 "Label & referenced at line # has not been set"
12 "%CYCLE at line # has two control clauses"
13 "%REPEAT for %CYCLE at line # is missing"
14 "%END is not required"
15 "# %ENDs are missing"
16 "Name & has not been declared"
17 "Name & does not require parameters or subscripts"
18 "# too few parameters provided for &"
19 "# too many parameters provided for &"
20 "# too few subscripts provided for array &"
21 "# too many subscripts provided for array &"
==== ercc07/emas-2900/imptests_ct0.txt ====
%BEGIN
%CONSTINTEGER MULTIOCP=0
%INTEGER SEMA
%CONTROL X'1FFFFFFF'
%IF MULTIOCP=0 %THEN SEMA=-1
%CONTROL X'0FFFFFFF'
%ENDOFPROGRAM
==== ercc07/emas-2900/imptests_ct1.txt ====
%BEGIN
%INTEGER I,J
%CONSTINTEGER YES=1
%CONSTINTEGER SFCFITTED=YES
%CONTROL X'1FFFFFFF'
%IF SFCFITTED=YES %THEN I=I+1 %ELSE %START
J=J**4
I=I+J
%FINISH
%CONTROL X'0FFFFFFF'
%ENDOFPROGRAM
==== ercc07/emas-2900/imptests_ct2.txt ====
%BEGIN
S=S." " %WHILE LENGTH(S)<20
%ENDOFPROGRAM
==== ercc07/emas-2900/imptests_ct3.txt ====
%BEGIN
%CONSTINTEGER A
%INTEGER B
B=A_GARBAGE
%ENDOFPROGRAM
==== ercc07/emas-2900/sbmark.txt ====
'BEGIN'
'REAL' X1, X2, X3, X4, X,Y,Z,T,T1,T2;
'ARRAY' E1[1:4];
'INTEGER' I,J,K,L,N1,N2,N3,N4,N5,N6,N7,N8,N9,N10,N11;
'PROCEDURE' PA(E);
'ARRAY' E;
'BEGIN'
'INTEGER' J;
J := 0;
LAB:
E[1] := (E[1] + E[2] + E[3] - E[4]) * T;
E[2] := (E[1] + E[2] - E[3] + E[4]) * T;
E[3] := (E[1] - E[2] + E[3] + E[4]) * T;
E[4] := (-E[1] + E[2] + E[3] + E[4])/T2;
J := J + 1;
'IF' J < 6 'THEN'
'GOTO' LAB;
'END' PROCEDURE PA;
'PROCEDURE' P0;
'BEGIN'
E1[J] := E1[K];
==== ercc07/emas-2900/sup26gsrce_comms46s.txt ====
! VERSION OF 13/06/80
! DEC 79: INCLUDE AN OPER ADAPTOR
! HAVE ONLY ONE SERVICE NUMBER, X'37'
! OTHER POSSIBLE CHANGES
! MAKE INITIALISATION CALL OF CC INITIALISE ADAPTORS AS WELL
! MAKE IT POSSIBLE TO DEALLOCATE/ALLOCATE ALL DEVICES
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20A ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,WASKLOKCORRECT,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,DQADDR, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0, %C
%INTEGER ITINT,CONTYPEA,GPCCONFA,FPCCONFA,SFCCONFA, %C
BLKADDR,DPTADDR,SMACS,TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,SP0,SP1, %C
SP2,SP3,SP4,SP5,SP6,SP7,SP8, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
==== ercc07/emas-2900/imptests_ct4.txt ====
%EXTERNALROUTINE QUEUES(%STRING(255) S)
%SYSTEMSTRINGFNSPEC SPAR(%INTEGER N)
%STRING(50)COM
%SYSTEMROUTINESPEC SETPAR(%STRING(225)S)
SETPAR(S)
COM<-SPAR(1)
MESS=COM." ".SPAR(2)
%UNLESS SPAR(2)="" %THEN MESS=MESS.",".SPAR(2)
%END
%ENDOFFILE
==== ercc07/emas-2900/imptests_ct5.txt ====
%BEGIN
! CHECKS MISPLACED ON EVENTS ARE FAULTED
%INTEGER I
%ROUTINE A
%IF I=1 %START
PRINTSTRING("HELLO")
%FINISH %ELSE %START
%ONEVENT 9 %START
PRINTSTRING("GOODBYE")
%FINISH
%FINISH
%END
I=1
A
%ENDOFPROGRAM
==== ercc07/emas-2900/csup04s.txt ====
%INCLUDE "ERCC07.PERQ_OPCODES"
%INCLUDE "ERCC07.PERQ_FORMAT3S"
%OWNINTEGER CABUF,GLACABUF
%OWNINTEGERNAME CA,GLACA,PPCURR,GLACURR
%OWNBYTEINTEGERARRAYNAME CODE,GLABUF
%EXTRINSICRECORD(CODEPF) CODEP
%EXTRINSICRECORD(WORKAF)WORKA
%EXTRINSICRECORD(PARMF) PARM
%SYSTEMINTEGERMAPSPEC COMREG(%INTEGER N)
%DYNAMICROUTINESPEC QCODE(%INTEGER A,B,C,MODE)
%DYNAMICROUTINESPEC QPUT(%INTEGER A,B,C,D)
%ROUTINESPEC FAULT(%INTEGER I,J,K)
%ROUTINESPEC CNOP(%INTEGER I,J)
%ROUTINESPEC POP(%INTEGERNAME A,B,C,D)
%ROUTINESPEC PRHEX(%INTEGER VALUE,PLACES)
%CONSTINTEGER CODEBNDRY=X'1FF'; ! INSTRUCTIONS MUST NOT
! CROSS THIS IN ACCENT MODE
%CONSTINTEGER DAREA=6; ! AREA FOR DIAG TABLES
!
! FIXED GLA CURRENTLY USED AS FOLLOWS
! 0-7 FREE(WAS 2900 ENTRY DESCRIPTOR)
==== ercc07/emas-2900/sup26csrce_fast27s.txt ====
%EXTERNALSTRING (15) %FNSPEC STRINT(%INTEGER N)
%EXTERNALSTRING (8) %FNSPEC STRHEX(%INTEGER N)
%EXTERNALSTRING(8) %FNSPEC HTOS(%INTEGER VALUE,PLACES)
%EXTERNALROUTINESPEC PTREC(%RECORDNAME P)
%EXTERNALROUTINESPEC OPMESS(%STRING (63) S)
%EXTERNALROUTINESPEC MONITOR(%STRING (63) S)
%EXTERNALROUTINESPEC DUMP TABLE(%INTEGER T, A, L)
%ROUTINESPEC ELAPSED INT(%RECORDNAME P)
%SYSTEMROUTINESPEC MOVE(%INTEGER L,F,T)
%SYSTEMROUTINESPEC ETOI(%INTEGER A, L)
%ROUTINESPEC PDISC(%RECORDNAME P)
%EXTERNALROUTINESPEC HOOT(%INTEGER NHOOTS)
%EXTERNALROUTINESPEC WAIT(%INTEGER MSECS)
%EXTERNALINTEGERFNSPEC HANDKEYS
%EXTERNALINTEGERFNSPEC REALISE(%INTEGER PUBVIRTADDR)
%EXTERNALROUTINESPEC SLAVESONOFF(%INTEGER ONOFF)
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20A ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,WASKLOKCORRECT,DATE0,DATE1,DATE2, %C
==== ercc07/emas-2900/perqtrimp_oldps.txt ====
%EXTERNALROUTINE OLDPS(%STRING(63) S)
%EXTERNALSTRINGFNSPEC DATE
%INTEGER I, J, K, SS, NBIP
%STRING(31) ST49,ST50,ST51
%STRING(127)HEADER
%EXTERNALROUTINESPEC DEFINE(%STRING(63)S)
%INTEGERARRAY CLETT(0:1000), SYMBOL(1300:3000), CC(0:300)
%INTEGER CNEXT, DNEXT, CNUM, DNUM, ALT, DEF, ASL, NIDFLAG
%INTEGERARRAY KK, PUSE, DWORD(1001:1200), DLETT(0:1000), CWORD(1:200)
%ROUTINESPEC READ STRING(%INTEGER TERMINATOR)
%ROUTINESPEC RECORD(%INTEGERARRAYNAME WORD, LETT, %C
%INTEGERNAME NUM, NEXT)
%ROUTINESPEC LOOK UP(%INTEGERARRAYNAME WORD, LETT, %C
%INTEGER FIRST, LAST, INSERT)
%ROUTINESPEC PDDICT
%ROUTINESPEC PRINT STR(%INTEGERARRAYNAME CC, %INTEGER PTR)
%ROUTINESPEC PCDICT
%UNLESS S->ST49.(",").ST50.(",").ST51 %THEN %C
PRINTSTRING("PARAMS?????") %AND NEWLINE %AND %RETURN
DEFINE("ST49,".ST49)
==== ercc07/emas-2900/minperms.txt ====
TITLE 'IMP PERM FOR SIM2 P.STEPHENS'
* FOR RELEASE 8 BACK COMPATIBLE TO RELEASE 7
IMP START
CODE EQU 12
WSP EQU 11
GLA EQU 13
RA EQU 15
DC A(PEND-IMP)
DC A(BASE-IMP)
DC A(PERMGLA-IMP)
DC A(PLOADATA-IMP)
USING BASE,CODE
USING WKSTART,WSP
USING USERGLA,GLA
BASE B CPLRERR
P1 BC 15,RSS
P2 BC 15,NS0
P3 BC 15,PS0
P4 BC 15,W0
P5 BC 15,PSTRO
P6 BC 15,STOP1
==== ercc07/emas-2900/sup27bsrce_print06s.txt ====
%RECORDFORMAT PARMF(%INTEGER DEST, SRCE, P1, P2, P3, P4, P5, P6)
%EXTRINSICLONGINTEGER KMON
%ROUTINESPEC PRHEX(%INTEGER H)
%ROUTINESPEC PRINTER(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC PON(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC GPC(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC OPMESS(%STRING (23) MESS)
%SYSTEMROUTINESPEC ITOE(%INTEGER A, L)
%IF MULTIOCP=YES %THEN %START
%EXTERNALROUTINESPEC SEMALOOP(%INTEGERNAME SEMA)
%ROUTINESPEC RESERVE LOG
%ROUTINESPEC RELEASE LOG
%ROUTINESPEC AWAIT LOG ROUTE
%FINISH
!------------------------------------------------------------------------
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20L ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DLVNADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,TOJDAY,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,SERVAAD, %C
==== ercc07/emas-2900/perqtrimp_impmess.txt ====
1 "%REPEAT is not required"
2 "Label & has already been set in this block"
4 "& is not a Switch name at current textual level"
5 "Switch name & in expression or assignment"
6 "Switch label &(#) set a second time"
7 "Name & has already been declared"
8 "Routine or fn & has more parameters than specified"
9 "Parameter # of & differs in type from specification"
10 "Routine or fn & has fewer parameters than specified"
11 "Label & referenced at line # has not been set"
12 "%CYCLE at line # has two control clauses"
13 "%REPEAT for %CYCLE at line # is missing"
14 "%END is not required"
15 "# %ENDs are missing"
16 "Name & has not been declared"
17 "Name & does not require parameters or subscripts"
18 "# too few parameters provided for &"
19 "# too many parameters provided for &"
20 "# too few subscripts provided for array &"
21 "# too many subscripts provided for array &"
==== ercc07/emas-2900/portenv01s.txt ====
%CONSTINTEGER EMAS=10
%CONSTINTEGER PERQ=11
%CONSTINTEGER PNX=12
%CONSTINTEGER IBM=13
%CONSTINTEGER TARGET=PNX
%EXTERNALROUTINESPEC IOCP %ALIAS "S#IOCP"(%INTEGER EP,N)
%CONSTLONGREAL LOG10A=2.3025850929940456840179914546843642076011
%CONSTLONGREAL PI=3.141592653589793238462643
%CONSTLONGREAL R1= 1.2595802263029547@ 1{R'41C98867F42983DF'}
%CONSTLONGREAL R2=-8.6186317517509520@ 1{R'C2562FB2813C6014'}
%CONSTLONGREAL R3=-1.2766919133361079@ 0{R'C1146D547FED8A3D'}
%CONSTLONGREAL R4=-8.3921038065840512@ -2{R'C0157BD961F06C89'}
%CONSTLONGREAL S1= 2.7096164294378656@ 1{R'421B189E39236635'}
%CONSTLONGREAL S2= 6.5581320451487386@ 0{R'4168EE1BDE0C3700'}
%CONSTLONGREAL S3= 2.1441643116703661@ 0{R'41224E7F3CBDFE41'}
%CONSTLONGREAL S4= 1.2676256708212610@ 0{R'41144831DAFBF542'}
%CONSTLONGREAL RT3= 1.7320508075688772@ 0{R'411BB67AE8584CAA'}
%CONSTLONGREAL PIBY6= 5.2359877559829887@ -1{R'40860A91C16B9B2C'}
%CONSTLONGREAL PIBY2M1= 5.7079632679489661@ -1{R'40921FB54442D184'}
%CONSTLONGREAL RT3M1=7.3205080756887728@ -1{R'40BB67AE8584CAA7'}
%CONSTLONGREAL TANPIBY12= 2.6794919243112271@ -1{R'404498517A7B3559'}
==== ercc07/emas-2900/sup26hsrce_enter09s.txt ====
%EXTRINSICINTEGER INPTR
%EXTRINSICINTEGER OUTPTR
%CONSTINTEGER MASK=X'80FC3FFF'
%EXTERNALINTEGERFNSPEC HANDKEYS
%EXTERNALROUTINESPEC HOOT(%INTEGER NUM)
%EXTERNALINTEGERFNSPEC GPC INIT(%INTEGER CA,PT,MODE)
%EXTERNALINTEGERFNSPEC SAFE IS READ(%INTEGER ISAD,%INTEGERNAME VAL)
%EXTERNALROUTINESPEC GET PSTB(%INTEGERNAME P0, P1)
%EXTERNALROUTINESPEC SUP29
%EXTERNALROUTINESPEC SUPPOFF(%RECORDNAME SERV,P)
%EXTERNALROUTINESPEC DISC(%RECORDNAME P)
%EXTERNALROUTINESPEC PDISC(%RECORDNAME P)
%EXTERNALROUTINESPEC GPC(%RECORDNAME P)
%EXTERNALROUTINESPEC SLAVESONOFF(%INTEGER J)
%EXTERNALROUTINESPEC PKMONREC(%STRING(20)TEXT,%RECORDNAME P)
%SYSTEMROUTINESPEC MOVE(%INTEGER L, FROMAD, TOAD)
%RECORDFORMAT PARMF(%INTEGER DEST, SRCE, P1, P2, P3, P4, P5, %C
P6)
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20L ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
==== ercc07/emas-2900/perq_impmess.txt ====
1 "%REPEAT is not required"
2 "Label & has already been set in this block"
4 "& is not a Switch name at current textual level"
5 "Switch name & in expression or assignment"
6 "Switch label &(#) set a second time"
7 "Name & has already been declared"
8 "Routine or fn & has more parameters than specified"
9 "Parameter # of & differs in type from specification"
10 "Routine or fn & has fewer parameters than specified"
11 "Label & referenced at line # has not been set"
12 "%CYCLE at line # has two control clauses"
13 "%REPEAT for %CYCLE at line # is missing"
14 "%END is not required"
15 "# %ENDs are missing"
16 "Name & has not been declared"
17 "Name & does not require parameters or subscripts"
18 "# too few parameters provided for &"
19 "# too many parameters provided for &"
20 "# too few subscripts provided for array &"
21 "# too many subscripts provided for array &"
==== ercc07/emas-2900/imp80tests_testiopt.txt ====
LIST IMP80TESTS_BLURB
PARM
IOPT IMP80TESTS_CT0,.NULL,.OUT
IOPT IMP80TESTS_CT1,.NULL,.OUT
IOPT IMP80TESTS_CT2,.NULL,.OUT
IOPT IMP80TESTS_CT3,.NULL,.OUT
IOPT IMP80TESTS_CT4,.NULL,.OUT
IOPT IMP80TESTS_CT5,.NULL,.OUT
IOPT IMP80TESTS_CT6,.NULL,.OUT
IOPT IMP80TESTS_CT7,.NULL,.OUT
IOPT IMP80TESTS_CT8,.NULL,.OUT
IOPT IMP80TESTS_CT9,.NULL,.OUT
IOPT IMP80TESTS_CT10,.NULL,.OUT
IOPT IMP80TESTS_CT11,.NULL,.OUT
IMP80TESTS_CT12,.NULL,.OUT
IOPT IMP80TESTS_CT13,.NULL,.OUT
IOPT IMP80TESTS_RT0,IY,.OUT
RUN IY
IOPT IMP80TESTS_RT1,IY,.OUT
RUN IY
IOPT IMP80TESTS_RT2,IY,.OUT
==== ercc07/emas-2900/sup28dsrce_documentn.txt ====
This partitioned file contains all the source required to make up
an EMAS2900 Supervisor, plus the version of the IMP80 compiler and FIX
utility used at Edinburgh to do so. This compiler is necessary as some
advanced language features are required which are not available in the
service compiler.
Note that the OPTION NOBRACKETS must be in force in the process being
used for the method described to work.
Two "OBEY" subfiles are available: MAKECHKD and MAKEOPT. They each
construct a test Supervisor which is left in file SUP28xT, where x is
'C' or 'O' respectively.
Making a Supervisor thus consists of the following:
a) INSERT the IMP80 compiler and FIX utility into the current directory
(and then log off and log on again if IMP80 was previously used in
==== ercc07/emas-2900/sup26fsrce_makeopt.txt ====
PARM FREE,OPT,STACK,NOLIST
IMP CTOPT+SUP26FSRCE_SUP26FS,SUPZZ,,.OUT
IMP CTOPT+SUP26FSRCE_COM31S,COMZZ,,.OUT
IMP CTOPT+SUP26FSRCE_PRINT05S,PRINTZZ,,.OUT
IMP CTOPT+SUP26FSRCE_OPER33S,OPERZZ,,.OUT
IMP SUP26FSRCE_ENTER06S,ENTERZZ,,.OUT
IMP CTOPT+SUP26FSRCE_GPC33S,GPCZZ,,.OUT
IMP SUP26FSRCE_NDIAG07S,NDIAGZZ,,.OUT
IMP CTOPT+SUP26FSRCE_COMMS46S,COMMSZZ,,.OUT
IMP CTOPT+SUP26FSRCE_FAST29S,FASTZZ,,.OUT
IMP CTOPT+SUP26FSRCE_TAPE68S,TAPEZZ,,.OUT
PARM MAP
LINK
SUPZZ
COMZZ
PRINTZZ
OPERZZ
ENTERZZ
GPCZZ
NDIAGZZ
COMMSZZ
==== ercc07/emas-2900/nrsrce_sfcmp941.txt ====
%ENDOFLIST; %CONSTINTEGERARRAY UPA(0:X'200')=%C
X'3006E841',X'0C829041',X'00018782',X'00032C22',
X'00014003',X'00031874',X'22601141',X'0001D041',X'86803951',
X'86858041',X'22601141',X'A0103941',X'00029041',X'0001004C',
X'86803901',X'0881E841',X'A0136841',X'0F00E8C1',X'22605041',
X'0002DF62',X'00051844',X'00000044',X'0000F4A3',X'00028042',
X'8004F462',X'80801157',X'2260417A',X'86803941',X'30003906',
X'00008841',X'0000907E',X'A00B3840',X'0000A879',X'0000115E',
X'0810E87B',X'0000A876',X'00010079',X'0002E876',X'0000A873',
X'0000A872',X'0002780B',X'0001D07D',X'00050873',X'0000F072',
X'0000F871',X'0000A86C',X'0000A86B',X'0000A86A',X'50003941',
X'0002C041',X'00001940',X'00031846',X'A0705815',X'0000EA7D',
X'00028003',X'00031F42',X'000284E7',X'000004E7',X'0DE00034',
X'2260212C',X'0C81C833',X'0001D82F',X'0001B823',X'81040041',
X'0E024041',X'00012041',X'000209C1',X'84040041',X'0001E9E8',
X'00000040',X'0001B045',X'0001E045',X'000251C5',X'0001F9C6',
X'000201C6',X'86803961',X'64103960',X'8406D041',X'6390395E',
X'8400395D',X'84003941',X'00032AC1',X'0002F84A',X'8400393A',
X'000000C1',X'80000041',X'00000402',X'0000F83E',X'2260111A',
X'0DE00041',X'00008042',X'0000E87C',X'0000F056',X'00000482',
X'00000071',X'0002C041',X'00000040',X'0001D045',X'0000116F',
==== ercc07/emas-2900/sup27fsrce_mindiags.txt ====
%EXTERNALSTRINGFNSPEC STRHEX(%INTEGER I)
%SYSTEMROUTINE NDIAG(%INTEGER PCOUNT, LNB, FAULT, INF)
!***********************************************************************
!*_______'MASTER DIAGNOSTIC ROUTINE'. DISCOVERS THE LANGUAGE OF THE *
!*_______FAILED ROUTINE FROM WORD 4 OF THE GLA AND CALLS APPROPRIATE *
!*_______DIAGNOSTIC ROUTINE. THIS IS REPEATED TILL ALL DIAGNOSTICS *
!*_______GIVEN. *
!*_______PCOUNT = PCOUNTER AT FAILURE *
!*_______LNB = LOCAL NAME BASE AT FAILURE *
!*_______FAULT = FAILURE (0=%MONITOR REQUESTED) *
!*_______INF =ANY FURTHER INFORMATION *
!***********************************************************************
PRINTSTRING("
MINIMUM NDIAGS ENTERED
FAULT NO ="); WRITE(FAULT,2)
PRINTSTRING("
PC=X".STRHEX(PCOUNT)."
LNB=X".STRHEX(LNB)."
")
%IF FAULT>0 %THEN %STOP
%END
==== ercc07/emas-2900/impalgs_outreals.txt ====
%SYSTEMROUTINE OUTREAL(%INTEGER STRM,%LONGREAL VAL)
PRINTFL(VAL,10)
NEWLINE
%END
%ENDOFFILE
==== ercc07/emas-2900/asss.txt ====
%TRUSTEDPROGRAM
%BEGIN
%SYSTEMINTEGERMAPSPEC COMREG(%INTEGER N)
%SYSTEMROUTINESPEC LPUT(%INTEGER TYPE,LENGTH,LA,IA)
%ROUTINESPEC ASSEMBLE(%BYTEINTEGERARRAYNAME S,%INTEGERNAME L,F)
%INTEGER DUMMY,FLAG,FILE ADDR,FILE PTR,FILE END,L
%BYTEINTEGERARRAY OPCODE(0:32*1024)
%OWNINTEGERARRAY FDI(0:5)=0,24,32,0,0,0
L=32000
NEWLINES(2); SPACES(15)
PRINTSTRING(' EMAS ASSEMBLER RELEASE 2 VERSION 1')
NEWLINES(4)
FILE ADDR=COMREG(46)
%IF FILE ADDR#0 %THEN %START
FILE PTR=FILE ADDR+INTEGER(FILE ADDR+4)
FILE END=FILE ADDR+INTEGER(FILE ADDR)
%FINISH
ASSEMBLE(OPCODE,L,FLAG)
NEWLINES(2)
PRINTSYMBOL('*')
%IF FLAG=0 %THEN PRINTSTRING('ASSEMBLY SUCCESSFUL') %C
==== ercc07/emas-2900/imp80ps01.txt ====
38
D(NAME)
D(ICONST)
D(CONST)
D(CHXTYPE)
D(N)
D(S)
D(TEXT)
D(BIGHOLE)
D(N255)
D(HOLE)
D(MARK)
D(READLINE?)
D(TEXTTEXT)
D(DUMMYAPP)
D(DOWN)
D(UP)
D(LISTON)
D(LISTOFF)
D(COLON)
D(NOTECONST)
==== ercc07/emas-2900/imp80ps02.txt ====
38
D(NAME)
D(ICONST)
D(CONST)
D(CHXTYPE)
D(N)
D(S)
D(TEXT)
D(BIGHOLE)
D(N255)
D(HOLE)
D(MARK)
D(READLINE?)
D(TEXTTEXT)
D(DUMMYAPP)
D(DOWN)
D(UP)
D(LISTON)
D(LISTOFF)
D(COLON)
D(NOTECONST)
==== ercc07/emas-2900/imp80ps03.txt ====
38
D(NAME)
D(ICONST)
D(CONST)
D(CHXTYPE)
D(N)
D(S)
D(TEXT)
D(BIGHOLE)
D(N255)
D(HOLE)
D(MARK)
D(READLINE?)
D(TEXTTEXT)
D(DUMMYAPP)
D(DOWN)
D(UP)
D(LISTON)
D(LISTOFF)
D(COLON)
D(NOTECONST)
==== ercc07/emas-2900/compbmarks.txt ====
'BEGIN'
'INTEGER' L1,L2,JN,NN,I,J,K;
'REAL' RH,PI,ONE3,SUM,W,SUMT,D,EPS,SUM2,D1,D2,D3,AB;
'ARRAY' U1,U2,U3,CCC[1:10,1:10],QQ[1:20];
'INTEGER''ARRAY'JA,JB,JC[1:10],IALP[1:10,1:10];
'BOOLEAN' TEST,YES,NO;
'REAL''PROCEDURE' SCRUFF(A);
'VALUE' A;
'REAL' A;
SCRUFF:=SQRT(ABS(A/PI*RH));
'PROCEDURE' HH(A,B,C);
'ARRAY' A,B,C;
'BEGIN'
'INTEGER' L,M,N;
'FOR' L:=1 'STEP' 1 'UNTIL' 10 'DO'
'FOR' M:=1 'STEP' 1 'UNTIL' 10 'DO'
'BEGIN'
SUMT:=0;
'FOR' N:=1 'STEP' 1 'UNTIL' 10 'DO'
SUMT:=SUMT + A[L,N]*B[N,M];
C[L,M]:=SUMT;
==== ercc07/emas-2900/petebits.txt ====
%SYSTEM %INTEGER %FN SIZE OF (%NAME X)
! Needed for 'straight' code:
! %CONST %BYTE %INTEGER %ARRAY BYTES (0:7) = 1(4),2,4,8,16
%INTEGER I
*LSS_(%LNB+5)
*ST_I
%IF I&X'C2000000'#0 %THEN %RESULT = I&X'00FFFFFF'
! 'Straight' code:
! I = (I>>27) & 7
! %RESULT = BYTES (I)
! 'Bit-twiddling' equivalent:
%RESULT = ((X'000000F0'<<((I>>27) & 7))>>11) + 1
%END
%SYSTEM %STRING (255) %FN SUBSTRING (%STRING %NAME S, %INTEGER I, J)
%STRING (255) HOLDS
%IF I<1 %OR I>J+1 %OR J>LENGTH(S) %THEN %SIGNAL %EVENT 5,7
! For strict compatibility with IMP 77, we should also %SIGNAL if
! I = LENGTH(S) + 1.
J = J - I + 1
LENGTH (HOLDS) = J
MOVE (J, ADDR(S)+I, ADDR(HOLDS)+1)
==== ercc07/emas-2900/nrsrce_mindiags.txt ====
%EXTERNALSTRINGFNSPEC STRHEX(%INTEGER I)
%SYSTEMROUTINE NDIAG(%INTEGER PCOUNT, LNB, FAULT, INF)
!***********************************************************************
!*_______'MASTER DIAGNOSTIC ROUTINE'. DISCOVERS THE LANGUAGE OF THE *
!*_______FAILED ROUTINE FROM WORD 4 OF THE GLA AND CALLS APPROPRIATE *
!*_______DIAGNOSTIC ROUTINE. THIS IS REPEATED TILL ALL DIAGNOSTICS *
!*_______GIVEN. *
!*_______PCOUNT = PCOUNTER AT FAILURE *
!*_______LNB = LOCAL NAME BASE AT FAILURE *
!*_______FAULT = FAILURE (0=%MONITOR REQUESTED) *
!*_______INF =ANY FURTHER INFORMATION *
!***********************************************************************
PRINTSTRING("
MINIMUM NDIAGS ENTERED
FAULT NO ="); WRITE(FAULT,2)
PRINTSTRING("
PC=X".STRHEX(PCOUNT)."
LNB=X".STRHEX(LNB)."
")
%END
%ENDOFFILE
==== ercc07/emas-2900/itrimp_ibmponeas.txt ====
%INCLUDE "ERCC07.TRIMP_HOSTCODES"
%CONSTINTEGER HOST=IBMXA
%CONSTINTEGER TARGET=IBMXA
! PRODUCED BY OLDPS FROM TRIMP_IBMPS01 ON 12/04/84
%CONSTBYTEINTEGERARRAY CLETT(0: 440)= 1,
40, 1, 41, 1, 42, 1, 44, 2, 201, 198, 6, 213, 206, 204,
197, 211, 211, 5, 215, 200, 201, 204, 197, 5, 213, 206, 212, 201,
204, 3, 198, 207, 210, 1, 61, 5, 193, 204, 201, 193, 211, 7,
201, 206, 212, 197, 199, 197, 210, 4, 210, 197, 193, 204, 4, 204,
207, 206, 199, 4, 194, 217, 212, 197, 6, 211, 212, 210, 201, 206,
199, 4, 200, 193, 204, 198, 5, 211, 200, 207, 210, 212, 6, 210,
197, 195, 207, 210, 196, 7, 210, 207, 213, 212, 201, 206, 197, 2,
198, 206, 3, 205, 193, 208, 8, 198, 213, 206, 195, 212, 201, 207,
206, 4, 206, 193, 205, 197, 9, 193, 210, 210, 193, 217, 206, 193,
205, 197, 9, 207, 198, 208, 210, 207, 199, 210, 193, 205, 6, 207,
198, 198, 201, 204, 197, 6, 207, 198, 204, 201, 211, 212, 6, 198,
207, 210, 205, 193, 212, 3, 206, 207, 212, 3, 193, 206, 196, 2,
207, 210, 1, 58, 4, 211, 208, 197, 195, 5, 193, 210, 210, 193,
217, 3, 207, 215, 206, 8, 197, 216, 212, 197, 210, 206, 193, 204,
9, 197, 216, 212, 210, 201, 206, 211, 201, 195, 8, 195, 207, 206,
211, 212, 193, 206, 212, 5, 195, 207, 206, 211, 212, 5, 197, 214,
==== ercc07/emas-2900/sup25jsrce_com24s.txt ====
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 19A ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,WASKLOKCORRECT,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,DQADDR, %C
SACPORT,OCPPORT,ITINT,CONTYPEA,GPCCONFA,FPCCONFA,SFCCONFA, %C
BLKADDR,DPTADDR,SMACS,TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,SP0,SP1,SP2,SP3, %C
SP4,SP5,SP6,SP7,SP8,SP9, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
HBIT,SLAVEOFF,INHSSR,SDR1,SDR2,SDR3, %C
SDR4,SESR,HOFFBIT,S2,S3,S4,END)
! MISC. ROUTINE SPECS
%EXTERNALROUTINESPEC PTREC(%RECORDNAME P)
%EXTERNALSTRING(8)%FNSPEC STRHEX(%INTEGER N)
%RECORDFORMAT PARMF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6)
%EXTERNALROUTINESPEC PON(%RECORDNAME P)
%EXTERNALROUTINESPEC INHIBIT(%INTEGER N)
%EXTERNALROUTINESPEC UNINHIBIT(%INTEGER N)
==== ercc07/emas-2900/pnxgen01s.txt ====
%INCLUDE "ERCS04.OLDPNX_CCODES"
%INCLUDE "ERCC07.TRIPCNSTS"
%INCLUDE "ERCC07.TRIMP_TFORM1S"
%CONSTINTEGER ESTK=0,BR0=1,BR1=2,BR2=3,BR3=4,FR0=5,FR1=6,FR2=7,FR3=8,
BRN=BR0<<16!BR3,FRN=FR0<<16!FR3
%RECORDFORMAT REGF(%INTEGER CL,(%INTEGER USE %OR %HALF SECUSE,PRIMUSE),
%INTEGER INF1,INF2,AT,LINK)
%OWNINTEGER CABUF,GLACABUF,GLABEL,FPPTR,FPHEAD
%OWNINTEGERNAME CA,GLACA,PPCURR
%OWNINTEGERARRAYNAME CTABLE,TAGS
%OWNBYTEINTEGERARRAYNAME CODE
%OWNINTEGERNAME ASL
%OWNRECORD(LISTF)%ARRAYNAME ASLIST
%EXTRINSICRECORD(CODEPF) CODEP
%EXTRINSICRECORD(WORKAF)WORKA
%EXTRINSICRECORD(PARMF) PARM
%CONSTINTEGER MAXREG=8
%OWNRECORD(REGF)%ARRAY REGS(0:MAXREG)
%EXTERNALROUTINESPEC FLAGAND FOLD(%RECORD(TRIPF)%ARRAYNAME T)
%SYSTEMINTEGERMAPSPEC COMREG(%INTEGER N)
%DYNAMICROUTINESPEC CCODE(%INTEGER A,B,C,MODE)
==== ercc07/emas-2900/perq_passones.txt ====
! PRODUCED BY OLDPS FROM PERQ_PS01 ON 22/02/82
%CONSTBYTEINTEGERARRAY CLETT(0: 444)= 1,
40, 1, 41, 1, 42, 1, 44, 2, 201, 198, 6, 213, 206, 204,
197, 211, 211, 5, 215, 200, 201, 204, 197, 5, 213, 206, 212, 201,
204, 3, 198, 207, 210, 1, 61, 5, 193, 204, 201, 193, 211, 7,
201, 206, 212, 197, 199, 197, 210, 4, 210, 197, 193, 204, 4, 204,
207, 206, 199, 4, 194, 217, 212, 197, 6, 211, 212, 210, 201, 206,
199, 4, 200, 193, 204, 198, 5, 211, 200, 207, 210, 212, 6, 210,
197, 195, 207, 210, 196, 7, 210, 207, 213, 212, 201, 206, 197, 2,
198, 206, 3, 205, 193, 208, 8, 198, 213, 206, 195, 212, 201, 207,
206, 4, 206, 193, 205, 197, 9, 193, 210, 210, 193, 217, 206, 193,
205, 197, 9, 207, 198, 208, 210, 207, 199, 210, 193, 205, 6, 207,
198, 198, 201, 204, 197, 6, 207, 198, 204, 201, 211, 212, 6, 198,
207, 210, 205, 193, 212, 3, 206, 207, 212, 3, 193, 206, 196, 2,
207, 210, 1, 58, 4, 211, 208, 197, 195, 5, 193, 210, 210, 193,
217, 3, 207, 215, 206, 8, 197, 216, 212, 197, 210, 206, 193, 204,
9, 197, 216, 212, 210, 201, 206, 211, 201, 195, 8, 195, 207, 206,
211, 212, 193, 206, 212, 5, 195, 207, 206, 211, 212, 5, 197, 214,
197, 206, 212, 5, 211, 212, 193, 210, 212, 9, 212, 200, 197, 206,
211, 212, 193, 210, 212, 4, 212, 200, 197, 206, 9, 197, 204, 211,
197, 211, 212, 193, 210, 212, 4, 197, 204, 211, 197, 1, 95, 6,
==== ercc07/emas-2900/sup27isrce_com34s.txt ====
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20J ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,TOJDAY,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,DQADDR, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0, %C
%INTEGER ITINT,CONTYPEA,GPCCONFA,FPCCONFA,SFCCONFA, %C
BLKADDR,RATION,SMACS,TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,FEPS,SP1, %C
SP2,SP3,SP4,SP5,SP6,SP7,SP8, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
HBIT,SLAVEOFF,INHSSR,SDR1,SDR2,SDR3, %C
SDR4,SESR,HOFFBIT,S2,S3,S4,END)
%RECORDFORMAT PARMF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6)
! MISC. ROUTINE SPECS
%EXTERNALROUTINESPEC PKMONREC(%STRING(20)TEXT,%RECORD(PARMF)%NAME P)
%EXTERNALSTRING(8)%FNSPEC STRHEX(%INTEGER N)
%EXTERNALROUTINESPEC OPMESS3(%STRING(63)TXT)
==== ercc07/emas-2900/algol60s.txt ====
!
! ALGOL 1.5 DATED NOV 76
! 1) CONTAINS CORRECTION TO GIVE ERROR MESSAGE FOR THE
! %FOR..%DO %BEGIN...%END %ELSE %BEGIN CONSTRUCT WHICH IS INVALID
! 2) CHOPS RATHER THAN FAULTING LONG STRING CONSTANTS
! 3) CHECKS FOR BEGINS IN SYNTACTICALLY INCORRECT STATEMENTS TO
! REDUCE THE ERRONEOUS FAULT MESSAGES WHEN LEVELS MISMATCH
! 4) CONTAINS THE BINARY IO ROUTINE NAMES
! 5) STORES PLT DESCRIPTOR CORRECTLY IN EXTERNAL PROCEDURES
!
! ALGOL 1.6 DATED 1ST DEC 76
! 1) CONTAINS CORRECTION TO READ1900 (MISTYPED AS INTEGERPROC)
! 2) CONTAINS CORRECT SPACE ALLOCATION SO THAT STORED VALUE
! OF STACKFRONT IN PROCEDURES IS NOT CORRUPTED
! 3) USES SYTEMROUTINE STOP TO STOP
! 4) AVOIDS TRYING TO ADD ACC INTO B
!
! ALGOL 1.7 DATED 1ST JAN 77
! 1) HAS INCREASED SPACE IN EXPOP FOR TEMPORARY STACKED OPERANDS
! 2) REMOVES ABORT IN GOTOLAB FOR SWITCHES WITH NO LOCAL LABELS
! 3) AVOIDS STACK TWIST IF B&ACC CLAIMED THEN A MULTI DIMENSION
==== ercc07/emas-2900/sup26fsrce_ndiag07s.txt ====
!*_ DATED 11 NOV 76 1
! ALTERATIONS BY K.YARWOOD ...
! PRINT FL AND NEXT SYMBOL LINES COMMENTED OUT
! PRINTTEXT'S TURNED TO PRINTSTRING'S
! ADDITION FOR LONGINTEGER IN RT PRINT VAR
! HEX EQUIVALENTS FOR INTS,LONGINTS ETC PRINTED
! INF PRINTED IN HEX IN RT ERRMESS
%EXTERNALSTRINGFNSPEC STRHEX(%INTEGER I)
%EXTERNALSTRING(8)%FNSPEC STRINT(%INTEGER I)
%CONSTINTEGER STACKBASE=X'80100000'; ! START OF RESIDENT STACK
! %SYSTEMROUTINESPEC SIGNAL(%INTEGER I, J, K, %INTEGERNAME F)
%ROUTINESPEC PRINTMESS(%INTEGER N)
! %SYSTEMROUTINESPEC TIDY EXIT
!*
%ROUTINESPEC INDIAG(%INTEGER OLDLNB, L, PC, %INTEGERNAME NEWLNB)
! %ROUTINESPEC FDIAG(%INTEGER OLDLNB,PC,%INTEGERNAME NEWLNB)
%ROUTINESPEC ERMESS(%INTEGER N, INF)
! %ROUTINESPEC ICL9CELABELS
==== ercc07/emas-2900/pnxgen02s.txt ====
%INCLUDE "ERCS04.PNX_CCODES"
%INCLUDE "ERCC07.TRIPCNSTS"
%INCLUDE "ERCC07.TRIMP_TFORM1S"
%CONSTINTEGER ESTK=0,BR0=1,BR1=2,BR2=3,BR3=4,FR0=5,FR1=6,FR2=7,FR3=8,
BRN=BR0<<16!BR3,FRN=FR0<<16!FR3
%RECORDFORMAT REGF(%INTEGER CL,(%INTEGER USE %OR %HALF SECUSE,PRIMUSE),
%INTEGER INF1,INF2,AT,LINK)
%OWNINTEGER CABUF,GLACABUF,GLABEL,FPPTR,FPHEAD
%OWNINTEGERNAME CA,GLACA,PPCURR
%OWNINTEGERARRAYNAME CTABLE,TAGS
%OWNBYTEINTEGERARRAYNAME CODE
%OWNINTEGERNAME ASL
%OWNRECORD(LISTF)%ARRAYNAME ASLIST
%EXTRINSICRECORD(CODEPF) CODEP
%EXTRINSICRECORD(WORKAF)WORKA
%EXTRINSICRECORD(PARMF) PARM
%CONSTINTEGER MAXREG=8
%OWNRECORD(REGF)%ARRAY REGS(0:MAXREG)
%EXTERNALROUTINESPEC FLAGAND FOLD(%RECORD(TRIPF)%ARRAYNAME T)
%SYSTEMINTEGERMAPSPEC COMREG(%INTEGER N)
%DYNAMICROUTINESPEC CCODE(%INTEGER A,B,C,MODE)
==== ercc07/emas-2900/sup27bsrce_enter10s.txt ====
%RECORDFORMAT PARMF(%INTEGER DEST, SRCE, P1, P2, P3, P4, P5, P6)
%RECORDFORMAT SERVAF(%INTEGER P, C)
%EXTRINSICINTEGER INPTR
%EXTRINSICINTEGER OUTPTR
%CONSTINTEGER MASK=X'80FC3FFF'
%EXTERNALINTEGERFNSPEC HANDKEYS
%EXTERNALROUTINESPEC HOOT(%INTEGER NUM)
%EXTERNALINTEGERFNSPEC GPC INIT(%INTEGER CA,PT,MODE)
%EXTERNALINTEGERFNSPEC SAFE IS READ(%INTEGER ISAD,%INTEGERNAME VAL)
%EXTERNALROUTINESPEC GET PSTB(%INTEGERNAME P0, P1)
%EXTERNALROUTINESPEC SUP29
%EXTERNALROUTINESPEC SUPPOFF(%RECORD(SERVAF)%NAME SERV, %C
%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC DISC(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC PDISC(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC GPC(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC SLAVESONOFF(%INTEGER J)
%EXTERNALROUTINESPEC PKMONREC(%STRING(20)TEXT,%RECORD(PARMF)%NAME P)
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20L ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DLVNADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
==== ercc07/emas-2900/sup28dsrce_makechkd.txt ====
PARM NOCHECK,NOLIST,STACK
IMP80 CTOPT+SUP28DSRCE_SUP28DS,SUPZZ,,.OUT
IMP80 CTOPT+SUP28DSRCE_COM36S,COMZZ,,.OUT
IMP80 CTOPT+SUP28DSRCE_PRINT09S,PRINTZZ,,.OUT
IMP80 CTOPT+SUP28DSRCE_OPER37S,OPERZZ,,.OUT
IMP80 CTOPT+SUP28DSRCE_ENTER15S,ENTERZZ,,.OUT
PARM OPT,STACK,NOLIST
IMP80 CTOPT+SUP28DSRCE_GPC40S,GDCZZ,,.OUT
IMP80 SUP28DSRCE_NDIAG07S,NDIAGZZ,,.OUT
IMP80 CTOPT+SUP28DSRCE_COMMS54S,COMMSZZ,,.OUT
IMP80 CTOPT+SUP28DSRCE_FAST42S,FASTZZ,,.OUT
IMP80 CTOPT+SUP28DSRCE_TAPE75S,TAPEZZ,,.OUT
PARM MAP
LINK
SUPZZ
COMZZ
PRINTZZ
OPERZZ
ENTERZZ
GDCZZ
NDIAGZZ
==== ercc07/emas-2900/ibmgen00s.txt ====
%INCLUDE "ERCC07.TRIMP_HOSTCODES"
%CONSTINTEGER HOST=EMAS
%CONSTINTEGER TARGET=EMAS
%CONSTINTEGER FOURKTDISP=0
%INCLUDE "ERCC10.OPOUTS"
!
%CONSTINTEGER LGR=X'58',AND=X'54',ICP=X'59'; ! VARIANT MNEMONICS
%CONSTINTEGER MARGIN=512; ! MARGIN FOR ADRESSABILITY
%CONSTINTEGER MAXREG=19; ! FOR DECLARING REGISTER ETC
%CONSTINTEGER CODER=12
%CONSTINTEGER WSPR =11
%CONSTINTEGER GLA =13
%CONSTINTEGER LINKREG=15; ! REGISTER FOR RETURN ADDRESS
%CONSTINTEGER EPREG=14; ! REGISTER HOLDING RT ENTRYPOINT
%CONSTINTEGER CTABLEREG=14; ! REGISTER HOLDING CONSTANT TABLE
%CONSTINTEGER GR0=X'0000000F'; ! ANY GR FROM 0-15
%CONSTINTEGER GR1=X'0001000F'; ! ANY GR BAR GR0
%CONSTINTEGER FR0=X'00100013'; ! ANY FR
%CONSTINTEGER GRSAFE=X'00040009'; ! ANY GR SAFE AGAINT RT CALL
%CONSTINTEGER GRPAIR=X'01000008'
%CONSTINTEGER FRPAIR=X'01100012'
==== ercc07/emas-2900/sup26isrce_sup26is.txt ====
!
! TO MAKE S SERIES SUPERVISOR REQUIRES:-
! 1) CHANGE SSERIES=NO TO SSERIES=YES IN CTOPTIONS FILE
! 2) REPLACE COMF BY S SERIES COM IN ERCC08.COMSF
!
!
! THESE CONST INTEGERS DEFINE SIZES AND LAYOUT OF IMPORTANT TABLES
! THEY HAVE TO BE HERE TO BE GLOBAL TO ALL ROUTINES INCLUDING IO ONES
!
%CONSTINTEGER LSTLEN=192; ! LOCAL SEGMENT TABLE LENGTH
%CONSTINTEGER CBTLEN=255; ! LENGTH OF CBT TABLE
%CONSTLONGINTEGER LCACR=1; ! ACR OF LOCAL CONTROLLER
%CONSTINTEGER DIRCSEG=10; ! SEG NO OF DIRECTOR COMMS SEG
%CONSTINTEGER DIRCSEGOFFSET=0; ! FOR ALIGNMENT IF NEEDED
%CONSTINTEGER DIRCSEGAD=DIRCSEG<<18; ! VIRTUAL ADDRESS OF DIR COM SEG
%CONSTINTEGER DIRCSEGL=8*CBTLEN+255+LSTLEN; ! SIZE OF SAME
! MADE UP OF 2049 FOR CBT
! LSTLEN FOR SST
! 48+64 FOR 2 BITS OF SYTEMCALL TABLE
! 32+48 FOR DIROUTP&SIGOUT
==== ercc07/emas-2900/sup27fsrce_comms49s.txt ====
! VERSION OF 13/06/80
! DEC 79: INCLUDE AN OPER ADAPTOR
! HAVE ONLY ONE SERVICE NUMBER, X'37'
! OTHER POSSIBLE CHANGES
! MAKE INITIALISATION CALL OF CC INITIALISE ADAPTORS AS WELL
! MAKE IT POSSIBLE TO DEALLOCATE/ALLOCATE ALL DEVICES
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20A ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DDTADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,WASKLOKCORRECT,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,DQADDR, %C
%BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, %C
NOCPS,RESV2,OCPPORT1,OCPPORT0, %C
%INTEGER ITINT,CONTYPEA,GPCCONFA,FPCCONFA,SFCCONFA, %C
BLKADDR,DPTADDR,SMACS,TRANS,%LONGINTEGER KMON, %C
%INTEGER DITADDR,SMACPOS,SUPVSN,PSTVA,SECSFRMN,SECSTOCD, %C
SYNC1DEST,SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD, %C
COMMSRECA,STOREAAD,PROCAAD,SFCCTAD,DRUMTAD,TSLICE,SP0,SP1, %C
SP2,SP3,SP4,SP5,SP6,SP7,SP8, %C
LSTL,LSTB,PSTL,PSTB,HKEYS,HOOT,SIM,CLKX,CLKY,CLKZ, %C
==== ercc07/emas-2900/pnxgen03s.txt ====
%INCLUDE "ERCS04.NEWPNX_CCODES"
%INCLUDE "ERCC07.TRIPCNSTS"
%INCLUDE "ERCC07.TRIMP_TFORM1S"
%CONSTINTEGER ESTK=0,BR0=1,BR1=2,BR2=3,BR3=4,FR0=5,FR1=6,FR2=7,FR3=8,
BRN=BR0<<16!BR3,FRN=FR0<<16!FR3
%RECORDFORMAT REGF(%INTEGER CL,(%INTEGER USE %OR %HALF SECUSE,PRIMUSE),
%INTEGER INF1,INF2,AT,LINK)
%OWNINTEGER CABUF,GLACABUF,GLABEL,FPPTR,FPHEAD
%OWNINTEGERNAME CA,GLACA,PPCURR
%OWNINTEGERARRAYNAME CTABLE,TAGS
%OWNBYTEINTEGERARRAYNAME CODE
%OWNINTEGERNAME ASL
%OWNRECORD(LISTF)%ARRAYNAME ASLIST
%EXTRINSICRECORD(CODEPF) CODEP
%EXTRINSICRECORD(WORKAF)WORKA
%EXTRINSICRECORD(PARMF) PARM
%CONSTINTEGER MAXREG=8
%OWNRECORD(REGF)%ARRAY REGS(0:MAXREG)
%EXTERNALROUTINESPEC FLAGAND FOLD(%RECORD(TRIPF)%ARRAYNAME T)
%SYSTEMINTEGERMAPSPEC COMREG(%INTEGER N)
%DYNAMICROUTINESPEC CCODE(%INTEGER A,B,C,MODE)
==== ercc07/emas-2900/sup26isrce_documentn.txt ====
This partitioned file contains all the source required to make up a
version 26I Supervisor, plus the version of the IMP compiler and FIX
utility used at Edinburgh to do so. This compiler is necessary as some
advanced language features are required which are not available in the
service compiler.
Note that the OPTION NOBRACKETS must be in force in the process being
used for the method described to work.
Two "OBEY" subfiles are available: MAKECHKD and MAKEOPT. They each
construct a test Supervisor which is left in file SUP26xT, where x is
'C' or 'O' respectively.
Making a Supervisor thus consists of the following:
a) INSERT the IMP compiler and FIX utility into the current directory
(and then log off and log on again if IMP was previously used in
==== ercc07/emas-2900/sup28asrce_gpc39s.txt ====
%CONSTSTRING (25) VSN="GPC39 2nd Feb 1982"
!************************************************GPC GPC GPC
!*
!* EMAS 2900 SUPERVISOR NOTE
!* No: 5
!* Date: 21/05/80
!* Author: A.Gibbons
!*
!*
!* %EXTERNAL ROUTINE GPC(%RECORD(PARMF)%NAME P)
!*
!* 1. CONVENTIONS
!* The record spec for the parameter is
!* %RECORDFORMAT PARMF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6)
!* where
!* DEST is considered as two half words DSNO and DACT. DSNO
!* must be GPC's DSNO
!* DACT is set according to the function required.
!*
!* SRCE is considered as two halfwords SSNO and SACT.
==== ercc07/emas-2900/ibmgen01s.txt ====
%INCLUDE "ERCC07.TRIMP_HOSTCODES"
%CONSTINTEGER HOST=EMAS
%CONSTINTEGER TARGET=IBM
%CONSTINTEGER FOURKTDISP=0
%INCLUDE "ERCC10.OPOUTS"
!
%CONSTINTEGER LGR=X'58',AND=X'54',ICP=X'59'; ! VARIANT MNEMONICS
%IF TARGET=IBM %THEN %START
%CONSTINTEGER BALCODE=BAL
%FINISH %ELSE %START
%CONSTINTEGER BALCODE=BAS
%FINISH
%CONSTINTEGER MARGIN=512; ! MARGIN FOR ADRESSABILITY
%CONSTINTEGER MAXREG=19; ! FOR DECLARING REGISTER ETC
%CONSTINTEGER CODER=12
%CONSTINTEGER WSPR =11
%CONSTINTEGER GLA =13
%CONSTINTEGER LINKREG=15; ! REGISTER FOR RETURN ADDRESS
%CONSTINTEGER EPREG=14; ! REGISTER HOLDING RT ENTRYPOINT
%CONSTINTEGER CTABLEREG=14; ! REGISTER HOLDING CONSTANT TABLE
%CONSTINTEGER GR0=X'000F0000'; ! ANY GR FROM 0-15
==== ercc07/emas-2900/sup28asrce_print08s.txt ====
%RECORDFORMAT PARMF(%INTEGER DEST, SRCE, P1, P2, P3, P4, P5, P6)
%EXTRINSICLONGINTEGER KMON
%ROUTINESPEC PRHEX(%INTEGER H)
%ROUTINESPEC PRINTER(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC PON(%RECORD(PARMF)%NAME P)
%IF SSERIES=YES %START
%EXTERNALROUTINESPEC DCU(%RECORD(PARMF)%NAME P)
%FINISH %ELSE %START
%EXTERNALROUTINESPEC GPC(%RECORD(PARMF)%NAME P)
%FINISH
%EXTERNALROUTINESPEC OPMESS(%STRING (23) MESS)
%SYSTEMROUTINESPEC ITOE(%INTEGER A, L)
%IF MULTIOCP=YES %THEN %START
%EXTERNALROUTINESPEC SEMALOOP(%INTEGERNAME SEMA)
%ROUTINESPEC RESERVE LOG
%ROUTINESPEC RELEASE LOG
%ROUTINESPEC AWAIT LOG ROUTE
%FINISH
!------------------------------------------------------------------------
!*
!* Communications record format - extant from CHOPSUPE 22A onwards *
==== ercc07/ibmlink3.txt ====
disconnect .all
LINK ,map
IP1X
IP22X
IOPT3X
IGEN3X
CSERV01X
.END
P0Y
MODIFY P0Y
SATISFY REFS
.ALL
SATISFY DATA
.ALL
SUPPRESS
.ALL
RETAIN
ICL9CEZIBMIMP
SUPPRESS DATA
.ALL
CLOSE
==== ercc07/ibmlink4.txt ====
disconnect .all
LINK
IP1X
IP22X
IOPT3X
IGEN4X
CSERV01X
.END
P0Y
MODIFY P0Y
SATISFY REFS
.ALL
SATISFY DATA
.ALL
SUPPRESS
.ALL
RETAIN
ICL9CEZIBMIMP
SUPPRESS DATA
.ALL
CLOSE
==== ercc07/ebits_ecodes.txt ====
!
!************************************************************************
!* *
!* G.E.Millard *
!* ECODES 10/08/85 *
!* *
!************************************************************************
!
{00} %constinteger HALT = 0
!
!--------------------------------------- 32-bit (Etos) ----------------
!
{01} %constinteger IADD = 1 { (Etos-1) + (Etos) => (Etos) }
{02} %constinteger ISUB = 2 { (Etos-1) - (Etos) => (Etos) }
{03} %constinteger IMULT = 3 { (Etos-1) * (Etos) => (Etos) }
{04} %constinteger IDIV = 4 { (Etos-1) / (Etos) => (Etos) }
{05} %constinteger INEG = 5 { - (Etos) => (Etos) }
{06} %constinteger IABS = 6 { abs( (Etos) ) => (Etos) }
{07} %constinteger IREM = 7 { remainder from }
{ (Etos-1) / (Etos)=> (Etos) }
!
==== ercc07/ibmlink5.txt ====
disconnect .all
LINK
----
IP12y
IP26y
IOPT4y
IGEN5y
CSERV01Y
.END
P0Y
++++
MODIFY P0Y
----
SATISFY REFS
.ALL
SATISFY DATA
.ALL
SUPPRESS
.ALL
RETAIN
ICL9CEZIBMIMP
==== ercc07/i29gens.txt ====
! Changes made by PDS Oct 90
! 1) Revisions to deactivated JAT/JAF code
! 2) Reactivation of JAT/JAF code
! 3) Update of Min Elevel
!
! NB `MOVE WORD` DESCRIPTORS ARE NOT GENERATED
! ALL VALUES ARE CONVERTED TO BYTES
! NEED TO ALTER `OP(MVW)` TO HANDLE WORD DESCRIPTORS.
!
!* 23-10-90 :- Source clear to date to provide sound basis for WP2 (AA)
!* Rename as i29gen30.
!*
!* V67 ILAN/???? Estkresult to use size given for integer
!* types instead of assuming 4. ccomp134
!*
!* V58 CCOMP130 ILAN0377 reload bform changed by LoadItem
!* in note index.
!*
!* V57 CCOMP128 ILAN/0376 Force load index for negative
!* subscript in note index. Instr generating routines
!* assume unsigned.
==== ercc07/makevax_opt.txt ====
edit opt03s,vpos
i<itrimp_vaxoptas>
ta/%inc/
d1i<itrimp_hostcodes>
a'
d1i<itrimp_tform2s>
a'
d1i<tripcnsts>
ta/host=/i/Vax
/d1p-2
e
parm nocheck
vaximp vpos,vpoxx
transfer vpoxx,ercvax(ercc07,peathag)vpo.obj,file,bin
==== ercc07/ebits_especs.txt ====
!* modified 19/08/85
!*
%externalroutinespec Egenerate Object(%stringname Name)
%externalroutinespec Einitialise(%integer Lang, Avertext, Astackca,
Aglaca, Options)
%externalroutinespec Eterminate(%integer adareasizes)
%externalroutinespec Ecommon(%integer area, %stringname Name)
%externalroutinespec Eendcommon(%integer area, Length)
%externalroutinespec Elinestart(%integer lineno)
%externalroutinespec Elinedecode
%externalroutinespec Emonon
%externalroutinespec Emonoff
%externalroutinespec Efaulty
%externalintegerfnspec Estkmarker
%externalroutinespec Esetmarker(%integer Markerid, New Value)
%externalintegerfnspec Eswapmode
!*
%externalroutinespec Estklit(%integer Val)
%externalroutinespec Estkconst(%integer Len, Ad)
%externalroutinespec Estkdir(%integer Area, Offset, Adid, Bytes)
%externalroutinespec Estkind(%integer Area, Offset, Adid, Bytes)
==== ercc07/vaxcom_ilink.txt ====
$ link 'p1',main,vaxiocp,penv,fortout,vndiag,sys$input/opt
sys$share:vaxcrtl.exe/share
==== ercc07/ibmsup_lcform3s.txt ====
%constinteger LSTLEN=256; ! LOCAL SEGMENT TABLE LENGTH
%constinteger CBTLEN=299; ! LENGTH OF CBT TABLE
%constinteger CONTEXTL=192; ! LENGTH OF AN IBM CONTEXT
%constinteger LCONTN=5; ! NO OF LOCAL CONTEXTS
!
! CONTEXTF A SORT OF SSN+1
%recordformat CONTEXTF((%integer psw0,psw1 %or %longinteger PSW),
{8}%integerarray GR(0:15),
{72}FR(0:7),{104}CONTROLR(0:15),{168}%longinteger CPUTIMER,
%integer ASYNI,SUSP,%short PECODE,ILC,%integer spare)
! PARMF FOR PARAMETER PASSING(32 BYTES
%recordformat PARMF((%integer DEST,SRCE %OR %short DSNO,DACT,SSNO,SACT),
(%integer P1,P2,P3,P4,P5,P6 %OR %integerarray P(1:6) %OR %C
%string(6)USER,%byte INCAR,%string(15)INTMESS))
!
! SIGOUTPF FOR PASSING SIGNALS(48 BYTES)
%recordformat SIGOUTPF(((%integer DEST,SRCE %or %short DSNO,DACT,SSNO,SACT),
(%integer P1,P2,P3,P4,P5,P6 %or %INTEGERARRAY p(1:6) %or %c
%string(6)USER,%byte incar,%string(15) INTMESS)),%integer TYPE,SSN,SSNAD,SUSP)
!
! CBT THE CLAIMED BLOCK FORMAT
==== ercc07/vaxspecs.txt ====
{* Area initialisation *}
{ All areas are buffered as the ten new areas. }
{ The following consts represent these areas in this interface }
%constinteger Stack = 0,
Code = 1,
Gla = 2,
{ Unused = 3 }
SST = 4,
UST = 5,
Diags = 6,
Params = 7,
IoTab = 8,
ZGST = 9,
Cnst = 10
%externalintegerfnspec PMarker(%integer HalfWords)
{ Mark CA for future PSetOpd and reserve HalfWords of code for plugging }
{ Also used to identify points in code to be used in PFix. }
==== ercc07/ibmsup_lcform4s.txt ====
%constinteger LSTLEN=256; ! LOCAL SEGMENT TABLE LENGTH
%constinteger CBTLEN=499; ! LENGTH OF CBT TABLE
%constinteger CONTEXTL=192; ! LENGTH OF AN IBM CONTEXT
%constinteger LCONTN=5; ! NO OF LOCAL CONTEXTS
!
! CONTEXTF A SORT OF SSN+1
%recordformat CONTEXTF((%integer psw0,psw1 %or %longinteger PSW),
{8}%integerarray GR(0:15),
{72}FR(0:7),{104}CONTROLR(0:15),{168}%longinteger CPUTIMER,
%integer ASYNI,SUSP,%short PECODE,ILC,%integer last vsparm)
! PARMF FOR PARAMETER PASSING(32 BYTES
%recordformat PARMF((%integer DEST,SRCE %OR %short DSNO,DACT,SSNO,SACT),
(%integer P1,P2,P3,P4,P5,P6 %OR %integerarray P(1:6) %OR %C
%string(6)USER,%byte INCAR,%string(15)INTMESS))
!
! SIGOUTPF FOR PASSING SIGNALS(48 BYTES)
%recordformat SIGOUTPF(((%integer DEST,SRCE %or %short DSNO,DACT,SSNO,SACT),
(%integer P1,P2,P3,P4,P5,P6 %or %INTEGERARRAY p(1:6) %or %c
%string(6)USER,%byte incar,%string(15) INTMESS)),%integer TYPE,SSN,SSNAD,SUSP)
!
! CBT THE CLAIMED BLOCK FORMAT
==== ercc07/makedrs_gen.txt ====
offer dgens
parm nocheck
edit drsgen03s,dgens
a/%incl/d1i<itrimp_hostcodes>
a'd1i<ercs01:ebits_ecodes21>
a'd1i<tripcnsts>
a'd1i<itrimp_tform2s>
a'd1i<ercs01:ebits_especs2>
e
imp dgens,.null
offer dgens,eepz06
==== ercc07/ibmsup_confv7.txt ====
==== ercc07/ibmsup_lcform5s.txt ====
%constinteger LSTLEN=512; ! LOCAL SEGMENT TABLE LENGTH
%constinteger CBTLEN=380; ! LENGTH OF CBT TABLE
%constinteger CONTEXTL=192; ! LENGTH OF AN IBM CONTEXT
%constinteger LCONTN=5; ! NO OF LOCAL CONTEXTS
!
! CONTEXTF A SORT OF SSN+1
%recordformat CONTEXTF((%integer psw0,psw1 %or %longinteger PSW),
{8}%integerarray GR(0:15),
{72}FR(0:7),{104}CONTROLR(0:15),{168}%longinteger CPUTIMER,
%integer ASYNI,SUSP,%short PECODE,ILC,%integer last vsparm)
! PARMF FOR PARAMETER PASSING(32 BYTES
%recordformat PARMF((%integer DEST,SRCE %OR %short DSNO,DACT,SSNO,SACT),
(%integer P1,P2,P3,P4,P5,P6 %OR %integerarray P(1:6) %OR %C
%string(6)USER,%byte INCAR,%string(15)INTMESS))
!
! SIGOUTPF FOR PASSING SIGNALS(48 BYTES)
%recordformat SIGOUTPF(((%integer DEST,SRCE %or %short DSNO,DACT,SSNO,SACT),
(%integer P1,P2,P3,P4,P5,P6 %or %INTEGERARRAY p(1:6) %or %c
%string(6)USER,%byte incar,%string(15) INTMESS)),%integer TYPE,SSN,SSNAD,SUSP)
!
! CBT THE CLAIMED BLOCK FORMAT
==== ercc07/docs_pubs.txt ====
P.D.Stephens Selected Publications
"The IMP Language and Compiler", Computer Journal Vol 18,
pp127-130(1975).
(with N.Shelness and H.Whitfield) "EMAS Scheduling and Allocation
Procedures in the resident Supervisor", Presented at I.R.I.A.
Colloque International sur les Aspects Theoriques et Practiques des
Systems d'Expoitation April 74. Chosen as one of the six best
computing papers presented in France during 1974 and reprinted in
Revue Francais d'Automatique, Informatique et Recherche
Operationelle Vol B2, pp29-45(1975).
"ALGOL(E) Language", International Computers Ltd. Technical
Publication No 6855. (1976).
(Editor and co-author) "EMAS2900 Concepts", ERCC (1980).
"The EMAS2900 Operating System", I.U.C.C. Bulletin Vol 2 No 2,
pp85-89 (1980).
==== ercc07/makegld_gen.txt ====
parm nocheck,nolist
edit gldgen04s,gldgens
a/%incl/d1i<itrimp_hostcodes>
a'd1i<ercs01:ebits_ecodes21>
a'd1i<tripcnsts>
a'd1i<itrimp_tform2s>
a'd1i<ercs01:ebits_especs2>
e
imp gldgens,.null
transfer gldgens,epcpnb(pds,peathag)p4v12.i,file
==== ercc07/docs_efunnies.txt ====
While going through xgen22 I have noted the following problems(queries)
1) The meaning of (say) Indregmodval is not immediately obvious. Better
commenting here would be appreciated.
2) You accept -1 as invalid astackaddr meaning the local pointer invalid.
Other Ecode machines use 0 here.
3) You assume that my local pointer from which you grab temporaies contains
the params but does not allow for the red tape. This is arbitary ( Imp it
contians both). Suggest two further bits allocate in Props to say what is
included in this.
4) Your claiming of stackframe space in eprocend does not allow for mode than
12 bits of space. This does occurr from time to time in programs and will
cause a very hairy bug. At least abort here. I deal with this case by
addint the next highest multiple of 4k. Wastes some space but does at least
work.
==== ercc07/vbootgen1s.txt ====
!
! Copyright P.D.Stephens 1988
! This is a modified Ecode generator with chenges so that it is available
! for rapid implementation of a complete compiler system. The aim is to be able
! to bring up EMAS compilers fast on another system if there is a big bang
! change in the near future. Also this version is intended to be "Definitive"
! ie to define what some of the more specialised operations have to do.
! To aid this extended commentary has been added.
!
! The following changes have been made from a standard generator
!
! 1) All eops go via one routine(EOP). The Ef77op, Epasop etc are dummies
!
! 2) As many specialized operations as possible are re-implemted in terms
! of simplier Ecode operations. This makes the generator highly recursive
!
! 3) Address and refer are implemented as far as possible via state
! transitions not by planting code
!
! 4) A routine Trapjump (QV) has been introduced to tidy up error exits
==== ercc07/ibmsup_lcform6s.txt ====
%constinteger LSTLEN=512; ! LOCAL SEGMENT TABLE LENGTH
%constinteger CBTLEN=380; ! LENGTH OF CBT TABLE
%constinteger CONTEXTL=192; ! LENGTH OF AN IBM CONTEXT
%constinteger LCONTN=5; ! NO OF LOCAL CONTEXTS
%constinteger LCSPTSIZE=16; ! pages in lcptable
!
! CONTEXTF A SORT OF SSN+1
%recordformat CONTEXTF((%integer psw0,psw1 %or %longinteger PSW),
{8}%integerarray GR(0:15),
{72}FR(0:7),{104}CONTROLR(0:15),{168}%longinteger CPUTIMER,
%integer ASYNI,SUSP,%short PECODE,ILC,%integer last vsparm)
! PARMF FOR PARAMETER PASSING(32 BYTES
%recordformat PARMF((%integer DEST,SRCE %OR %short DSNO,DACT,SSNO,SACT),
(%integer P1,P2,P3,P4,P5,P6 %OR %integerarray P(1:6) %OR %C
%string(6)USER,%byte INCAR,%string(15)INTMESS))
!
! SIGOUTPF FOR PASSING SIGNALS(48 BYTES)
%recordformat SIGOUTPF(((%integer DEST,SRCE %or %short DSNO,DACT,SSNO,SACT),
(%integer P1,P2,P3,P4,P5,P6 %or %INTEGERARRAY p(1:6) %or %c
%string(6)USER,%byte incar,%string(15) INTMESS)),%integer TYPE,SSN,SSNAD,SUSP)
!
==== ercc07/m88kdums.txt ====
%externalroutine eprecall2(%integer id,aparprops)
printstring("Eprecall2
")
%end
%externalroutine Eproc2(%stringname name,%integer props,aparprops,%integername id)
printstring("Eproc2
")
%end
%endoffile
==== ercc07/ctoptnass.txt ====
!
! Compile time options for EMAS/370
!
%constinteger YES=1,NO=0,AMDAHL=2
%constinteger XA=YES; ! yes for 370/XA
%constinteger VA MODE=YES; ! yes for Supervisor, no for Chopsupe
%constinteger MULTI OCP=NO; ! yes to include semaphoring
%constinteger CRFITTED=NO; ! card reader
%constinteger CPFITTED=NO; ! card punch
%constinteger SNOOZING=YES; ! allow suspend in store
%constinteger PRODUCTION=NO; ! yes for continuing after S/W errors
%constinteger MONLEVEL=x'3F'; ! 0 = no monitoring
! 2**0 = video updating
! 2**1 = KMONning
! 2**2 = sup timing measurements
! 2**3 = a-c for cross calls
! 2**4 = strobing
! 2**5 = cat table transitions
! 2**8 = event harvesting
%constinteger P4PERCENT=11; ! max % of free store for large jobs
%constinteger MAXPROCS=256; ! max concurrent procs (64,128 or 256)
==== ercc07/vaxcode1s.txt ====
! 30/12/87 - Set lengths for MOVLF in oplr winstr8.i
! Release 1.0 10/11/87 Add bit operations winstr7
! Field Trial 6 Correct complex*16 winstr6.i
! Correct Compress for neg bytes (ADJSP)
! Field trial 5 MOVif to reduce RHS if litval winstr5.i
! fix plant 16 bit imm. opd
! Field Trial 3
! R6 not used. Ie left for optimiser Breg winstr4.i
!
! Field Trial 2 winstr3.i
! Setuse no longer fails registers owned by temp estack records.
!
! Field Trial 1 winstr2.i
%constinteger imp = 1
%constinteger FORTRAN = 2
%constinteger CCOMP = 11
%constinteger PASCAL = 14
==== ercc07/s4algps.txt ====
39
D(NAME)
D(ICONST)
D(CONST)
D(ONAME)
D(COMTEXT))
D(S)
D(ENDTEXT)
D(TEXTTEXT)
D(NAMELIST)
D(HOLE)
D(MARK)
D(ONAMELIST)
D(UPSTCNT)
D(LETTERSTRING)
D(DOWN)
D(UP)
D(SCALARTYPE)
D(NOTENAME)
D(TYPE=A)
D(TYPE=B)
==== ercc07/alg00s.txt ====
%INCLUDE "ercc10:OPOUTS"
%CONSTINTEGER isub=x'5B',IADD=x'5a',LGR=x'58',AND=x'54',ICP=x'59'; ! variant mnemonics
%INCLUDE "ercs12:ibmsce3_specs"
%EXTERNALROUTINE ICL9CEZALGOL
%INTEGER I,J,K
! PRODUCED BY OLDPS FROM S4ALGPS ON 29/08/85
%CONSTBYTEINTEGERARRAY CLETT(0:252)= 1,
44, 1, 43, 1, 45, 1, 40, 1, 41, 2, 201, 198, 4, 212,
200, 197, 206, 4, 197, 204, 211, 197, 1, 94, 2, 42, 42, 1,
42, 1, 47, 3, 196, 201, 214, 4, 212, 210, 213, 197, 5, 198,
193, 204, 211, 197, 3, 193, 206, 196, 2, 207, 210, 4, 201, 205,
208, 204, 5, 197, 209, 213, 201, 214, 3, 206, 207, 212, 7, 201,
206, 212, 197, 199, 197, 210, 4, 210, 197, 193, 204, 7, 194, 207,
207, 204, 197, 193, 206, 1, 59, 5, 214, 193, 204, 213, 197, 5,
204, 193, 194, 197, 204, 6, 211, 215, 201, 212, 195, 200, 6, 211,
212, 210, 201, 206, 199, 5, 193, 210, 210, 193, 217, 9, 208, 210,
207, 195, 197, 196, 213, 210, 197, 2, 58, 40, 7, 195, 207, 205,
205, 197, 206, 212, 1, 58, 2, 58, 61, 4, 211, 212, 197, 208,
5, 213, 206, 212, 201, 204, 5, 215, 200, 201, 204, 197, 1, 61,
2, 62, 61, 1, 62, 1, 35, 2, 60, 61, 1, 60, 2, 92,
61, 3, 198, 207, 210, 2, 196, 207, 5, 194, 197, 199, 201, 206,
==== ercc07/ibmconvert_sibmdump.txt ====
!
!
!
%RECORDFORMAT RR(%INTEGER CONAD,FTYPE,DSTART,DEND)
%EXTERNALROUTINESPEC DEFINE(%STRING(255)PARM)
%SYSTEMROUTINESPEC PSYSMES(%INTEGER ROOT,FLAG)
%SYSTEMROUTINESPEC SETPAR(%STRING(255)PARM)
%SYSTEMSTRINGFNSPEC SPAR(%INTEGER N)
%SYSTEMROUTINESPEC CONNECT(%STRING(31)FILE,%INTEGER MODE,HOLE,PROT,
%RECORD(RR)%NAME FINFO,%INTEGERNAME FLAG)
%SYSTEMROUTINESPEC ETOI(%INTEGER ADR,LNTH)
%SYSTEMROUTINESPEC MOVE(%INTEGER LNTH,FROMAD,TOAD)
!
! OUT HEX
!
%ROUTINE OUTHEX(%INTEGER VAL,WIDTH)
%CONSTBYTEARRAY HX(0:15)='0','1','2','3','4','5','6','7',
'8','9','A','B','C','D','E','F'
%INTEGER I
%FOR I=WIDTH-4,-4,0 %CYCLE
PRINTSYMBOL(HX((VAL>>I)&15))
==== ercc07/ibmsup_lcform7s.txt ====
%constinteger LSTLEN=512; ! LOCAL SEGMENT TABLE LENGTH
%constinteger CBTLEN=480; ! LENGTH OF CBT TABLE
%constinteger CONTEXTL=192; ! LENGTH OF AN IBM CONTEXT
%constinteger LCONTN=5; ! NO OF LOCAL CONTEXTS
%constinteger LCSPTSIZE=16; ! pages in lcptable
!
! CONTEXTF A SORT OF SSN+1
%recordformat CONTEXTF((%integer psw0,psw1 %or %longinteger PSW),
{8}%integerarray GR(0:15),
{72}FR(0:7),{104}CONTROLR(0:15),{168}%longinteger CPUTIMER,
%integer ASYNI,SUSP,%short PECODE,ILC,%integer last vsparm)
! PARMF FOR PARAMETER PASSING(32 BYTES
%recordformat PARMF((%integer DEST,SRCE %OR %short DSNO,DACT,SSNO,SACT),
(%integer P1,P2,P3,P4,P5,P6 %OR %integerarray P(1:6) %OR %C
%string(6)USER,%byte INCAR,%string(15)INTMESS))
!
! SIGOUTPF FOR PASSING SIGNALS(48 BYTES)
%recordformat SIGOUTPF(((%integer DEST,SRCE %or %short DSNO,DACT,SSNO,SACT),
(%integer P1,P2,P3,P4,P5,P6 %or %INTEGERARRAY p(1:6) %or %c
%string(6)USER,%byte incar,%string(15) INTMESS)),%integer TYPE,SSN,SSNAD,SUSP)
!
==== ercc07/vaxiocp.txt ====
!Modified 22/Sept/86 - treat selectoutput(-1) as null device for IMP.
!Modified 25/June/86 use own rather than local arrays
!Modified 28/May/86 for GOULD (AK)
!***********************************************************************
!* IMP written routines supporting COMPILE TIME. *
!***********************************************************************
%CONSTINTEGER EMAS=10
%CONSTINTEGER PERQ=11
%CONSTINTEGER PNX=12
%CONSTINTEGER IBM=13
%CONSTINTEGER GOULD=14
%constinteger DRS=19
%constinteger WhiteChapel = 19
%constinteger Perq3 = 20
%constinteger target = DRS
%constinteger host = DRS
%constinteger EM=25
%owninteger rc=1
==== ercc07/print07s.txt ====
%RECORDFORMAT PARMF(%INTEGER DEST, SRCE, P1, P2, P3, P4, P5, P6)
%EXTRINSICLONGINTEGER KMON
%ROUTINESPEC PRHEX(%INTEGER H)
%ROUTINESPEC PRINTER(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC PON(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC GPC(%RECORD(PARMF)%NAME P)
%EXTERNALROUTINESPEC OPMESS(%STRING (23) MESS)
%SYSTEMROUTINESPEC ITOE(%INTEGER A, L)
%IF MULTIOCP=YES %THEN %START
%EXTERNALROUTINESPEC SEMALOOP(%INTEGERNAME SEMA)
%ROUTINESPEC RESERVE LOG
%ROUTINESPEC RELEASE LOG
%ROUTINESPEC AWAIT LOG ROUTE
%FINISH
!------------------------------------------------------------------------
!* COMMUNICATIONS RECORD FORMAT - EXTANT FROM CHOPSUPE 20L ONWARDS *
%RECORDFORMAT COMF(%INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, %C
DLVNADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, %C
DCODEDA,SUPLVN,TOJDAY,DATE0,DATE1,DATE2, %C
TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,SERVAAD, %C
==== ercc07/docs_wilkesnote.txt ====
Protection is related to system structure and can not not be
discussed sensibly out of context. I propose to to use IBM OS360 and
EMAS2900 for examples as I am not sufficiently familiar with VMS.
Early uni-programming operating systems had user and supervisor
co-resident in separate worlds protected by base and limit registers.
This simple approach worked well although it was difficult to locate
user parameters to operating system calls without adddress computation.
IBM elected to put parameters in code after the SVC, an insanitary
method that has cost them dear. These techniques were extended to multi
tasking and then further distorted to handle virtual memory (with the
operating system remaining in real addresses). The price of the IBM
technique of passing parameters to the system increased sharply. The
code was impure and could not be shared; also code pages were made dirty
by writing in the parameters and had to be paged out. Further the
supervisor had to cope with page boundaries within and between
parameters.
Now that systems have become larger and more complex it is
deirable to use virtual addressing within the operating system and the
simple model fails to cope. The IBM-XA manual has pages of description
==== ercc07/alg01s.txt ====
%INCLUDE "ercc10:OPOUTS"
%CONSTINTEGER ISUB=x'5B',IADD=x'5a',LGR=x'58',AND=x'54',ICP=x'59'; ! variant mnemonics
%INCLUDE "ercs20:ib11.specs"
%EXTERNALROUTINE ICL9CEZALGOL
%INTEGER I,J,K
! PRODUCED BY OLDPS FROM S4ALGPS ON 29/08/85
%CONSTBYTEINTEGERARRAY CLETT(0:252)= 1,
44, 1, 43, 1, 45, 1, 40, 1, 41, 2, 201, 198, 4, 212,
200, 197, 206, 4, 197, 204, 211, 197, 1, 94, 2, 42, 42, 1,
42, 1, 47, 3, 196, 201, 214, 4, 212, 210, 213, 197, 5, 198,
193, 204, 211, 197, 3, 193, 206, 196, 2, 207, 210, 4, 201, 205,
208, 204, 5, 197, 209, 213, 201, 214, 3, 206, 207, 212, 7, 201,
206, 212, 197, 199, 197, 210, 4, 210, 197, 193, 204, 7, 194, 207,
207, 204, 197, 193, 206, 1, 59, 5, 214, 193, 204, 213, 197, 5,
204, 193, 194, 197, 204, 6, 211, 215, 201, 212, 195, 200, 6, 211,
212, 210, 201, 206, 199, 5, 193, 210, 210, 193, 217, 9, 208, 210,
207, 195, 197, 196, 213, 210, 197, 2, 58, 40, 7, 195, 207, 205,
205, 197, 206, 212, 1, 58, 2, 58, 61, 4, 211, 212, 197, 208,
5, 213, 206, 212, 201, 204, 5, 215, 200, 201, 204, 197, 1, 61,
2, 62, 61, 1, 62, 1, 35, 2, 60, 61, 1, 60, 2, 92,
61, 3, 198, 207, 210, 2, 196, 207, 5, 194, 197, 199, 201, 206,
==== ercc07/lfullfort.txt ====
Source: ERCS08:F77REL.SRCE200_XCONTRL8 Compiled: 25/11/87 17.09.10
Object: .NULL
Parms set: NOCHECK,NOARRAY,XREF
ERCC. Portable Imp80 Compiler Release 4 Version 14 Sep 87
2047 4095
1 ! xcontrl8
2 ! 28/09/87 - increase ares sizes if PARM MAXDICT set
3 ! new version no. 2.16
4 ! xcontrl7b
5 ! 23/09/87 - intialise inclevel in ICL9CEIBMF77
6 ! 28/07/87 - new version no. 2.15
7 ! xcontrl7a
8 ! 02/07/87 - new version no. 2.12
9 ! xcontrld7
10 ! 30/06/87 - in Icl9ceibmf77, set OPT1 bit in OPT1, if Parm opt2; set OPT bit in
==== ercc07/maketrp_p1.txt ====
edit poneb02s,trnp102s
i<itrimp_transponeas>
ta/%inc/
d1i<itrimp_hostcodes>
a'
d1i<itrimp_tform2s>
m/%constlonglongreal/
e
imp trnp102s,trnp1y
permit trnp102s
transfer trnp102s,epcfta(pds,peathag)trnp102.i,file
==== ercc07/maketrp_p2.txt ====
edit timp06s,trnp206s
i<itrimp_transptwoas>
ta/%inc/
d1i<itrimp_hostcodes>
a'
d1i<tripcnsts>
a'
d1i<itrimp_tform2s>
ta/host=/i/m88k
/d1
e
imp trnp206s,y
permit trnp206s
transfer trnp206s,epcfta(pds,peathag)trnp206.i,file
==== ercc07/maketrp_p3.txt ====
edit opt04s,trnp305s
i<itrimp_transoptas>
ta/%inc/
d1i<itrimp_hostcodes>
a'
d1i<itrimp_tform2s>
a'
d1i<tripcnsts>
e
imp trnp305s,.null
permit trnp305s
transfer trnp305s,epcfta(pds,peathag)trnp305.i,file
==== ercc07/m88klink.txt ====
LINK
ERCC07:m88p1Y
ERCC07:m88p25Y
ERCC07:m88kOPT3Y
ERCC07:m88kp404Y
ERCC07:CSERV01x
ercs01:EBITS_etrput3y
.END
P0Y
MODIFY P0Y
SATISFY REFS
.ALL
SATISFY DATA
.ALL
SUPPRESS
.ALL
RETAIN
eGENERATEOBJECT,ICL9CEZm88kIMP
SUPPRESS DATA
.ALL
CLOSE
==== ercc07/vaxgen1s.txt ====
!
! 30/12/87 - Fix problem with refer in ECMPLX2 case of EF77OP weop6
!
! First Release 1.0 Fix Ecmplx for movq 8 bytes. weop5
! route eibits,eishiftc to spcall
! Field Trial 5 add refer to EICHAR 17/june/87 weop4
! add Freeregs to ARGPRPOCCALL
! Correct Ecmplx2, eswitch
! Field Trial 3 Drop R6 from list of available regs . set to regvar
!* 25/apr/87 - Add Estkreg. And dedicate R6 to be Breg for optimiser weop3
!%ownstring(31) Versiontext="Fortran77 Compiler Version 0.1"
%constinteger IMP = 1
%constinteger FORTRAN = 2
%constinteger CCOMP = 11
%constinteger PASCAL = 14
%include "itrimp_hostcodes"
%constinteger host=emas
%constinteger target=vax
%RECORDFORMAT PARMF(%INTEGER BITS1,BITS2,TTOPUT,
%BYTEINTEGER LET,DYNAMIC,LINE,TRACE,ARR,DBUG,CHK,DIAG,OPT,FREE,
==== ercc07/maketrp_p4.txt ====
parm nocheck
edit transp401s,trnp401s
a/%incl/d1i<itrimp_hostcodes>
a'd1i<ercs01:ebits_ecodes28>
a'd1i<tripcnsts>
a'd1i<itrimp_tform2s>
ta/host=/r6i/M88K/
e
imp trnp401s,.null
permit trnp401s
transfer trnp401s,epcfta(pds,peathag)trnp401.i,file
==== ercc07/makevax_detach.txt ====
detach makevax_p1,30
detach makevax_P2,30
detach makevax_opt,30
detach makevax_p4,30
detach makevax_bgen,30
detach makevax_cserv,30
detach makevax_Put,30
==== ercc07/makevns_gen.txt ====
offer vgens
parm nocheck
edit vnsgen00s,vgens
a/%incl/d1i<itrimp_hostcodes>
a'd1i<ercs01:ebits_ecodes8>
a'd1i<tripcnsts>
a'd1i<itrimp_tform2s>
a'd1i<ercs01:ebits_especs2>
t(r/%short/i/%half/p1)*
t(m/%else
/r5i/%FINISH %ELSE %START/p1)*
e
imp vgens,.null
offer vgens,eepz06
==== ercc07/vaxp41s.txt ====
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
! Opnd2 is either a 32 bit const with the size (ACC) as value or
! the ptr or arrayhead as normal operand.
!
! VMY X1 is now dim<<28!maxdim<<24!array name(where known)
! Opnd2 is either a 32 bit const with DV offset into const area or
! the arrayhead as a standard operand
!
! AINDX X1 is ELSIZE<<20 !spare
! Opnd2 is arrayhead as standard operand
! NOTE:- The Operands have been swopped for consistency with norm.
!
==== ercc07/ibmconvert_sibmname.txt ====
%EXTERNALROUTINESPEC UCTRAN(%STRINGNAME STR)
!
! IBM NAME
!
%CONSTSTRING(1) NULL="",HASH="#",AT="@",CODE="^"
%EXTERNALSTRING(8)%FN IBM NAME(%STRING(1) PREFIX,%STRING(31)%NAME NAME)
!
! RETURNS IBM VERSION OF NAME TRUNCATED IF NECESSARY WITH SUPPLIED
! PREFIX.
%INTEGER LNME,CH
%STRING(31) NME
NME = NAME
UCTRAN(NME);! FORCE TO UPPER CASE
LNME = LENGTH(NME)
%IF LNME<8 %THEN NME = NME." "
%IF PREFIX=HASH %START
{FIRST CHAR. ON LOWER CASE}
CH = CHARNO(NME,1)
%IF CH=' ' %THEN CH='#' %ELSE CH=CH+'a'-'A'
NME = TOSTRING(CH).SUBSTRING(NME,2,8)
%FINISH
==== ercc07/orngen00s.txt ====
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
! Opnd2 is either a 32 bit const with the size (ACC) as value or
! the ptr or arrayhead as normal operand.
!
! VMY X1 is now dim<<28!maxdim<<24!array name(where known)
! Opnd2 is either a 32 bit const with DV offset into const area or
! the arrayhead as a standard operand
!
! AINDX X1 is ELSIZE<<20 !spare
! Opnd2 is arrayhead as standard operand
! NOTE:- The Operands have been swopped for consistency with norm.
!
==== ercc07/edit35s.txt ====
%CONSTINTEGER EMAS=10,IBMXA=12
%CONSTINTEGER HOST=IBMXA
%CONSTSTRING(1) SNL = "
"
%RECORDFORMAT FRF(%INTEGER CONAD,FILETYPE,DATASTART,DATEND,SIZE,RUP,EEP,MODE,
USERS,ARCH, %STRING(6) TRAN, %STRING(8) DATE,TIME, %INTEGER COUNT,SPARE1,
SPARE2)
%RECORDFORMAT RF(%INTEGER CONAD,FILETYPE,DATASTART,DATAEND)
!
%IF HOST=IBMXA %START
%CONSTSTRING(1)USEP=":"
!
%EXTERNALROUTINESPEC CHANGEFILESIZE%ALIAS"S#CHANGEFILESIZE"( %c
%STRINGname FILE, %INTEGERname NEWSIZE, FLAG)
%EXTERNALROUTINESPEC UCTRANSLATE %ALIAS "S#UCTRANSold"(%INTEGER ADDR,L)
%EXTERNALSTRING(255)%FNSPEC UCSTRING(%STRING(255)S)
%EXTERNALROUTINESPEC MOVE%ALIAS "S#MOVE"(%INTEGER LENGTH,FROM,TO)
%EXTERNALROUTINESPEC PROMPT(%STRING(15) S)
%EXTERNALSTRINGFNSPEC INTERRUPT
%EXTERNALROUTINESPEC TOJOURNAL %ALIAS "S#TOJOURNAL"(%INTEGER FROM,LEN)
%EXTERNALROUTINESPEC FINFO %ALIAS "S#FINFO"(%STRING(255) FILE, %INTEGER MODE,
==== ercc07/ibmoptlink.txt ====
LINK ,map
IP1oX
IP22oX
IOPT3oX
IGEN3oX
CSERV01oX
.END
P0Y
MODIFY P0Y
SATISFY REFS
.ALL
SATISFY DATA
.ALL
SUPPRESS
.ALL
RETAIN
ICL9CEZIBMIMP
SUPPRESS DATA
.ALL
CLOSE
NEWGEN P0Y,IBMoX
==== ercc07/ifast10s.txt ====
%INCLUDE "ercc07:ibmsup_comf370"
%INCLUDE "ercc07:ibmsup_page0f"
%INCLUDE "ercc07:ibmsup_dtform1s"
%INCLUDE "ercc07:ibmsup_xaioform"
%RECORDFORMAT PARMF(%INTEGER DEST,SRCE,(%INTEGER P1,P2,P3,P4,P5,P6 %ORSTRING (23) TEXT))
%CONSTINTEGER PCELLSIZE=36,MARGIN=48
%RECORDFORMAT PDOPEF(%INTEGER CURRMAX,MAXMAX,FIRST UNALLOC,LAST UNALLOC,NEXTPAGE,S1,S2,S3,S4)
%RECORDFORMAT PARMXF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6,LINK)
%CONSTRECORD (PARMXF) %ARRAYNAME PARM=PARM0AD
%CONSTRECORD (PDOPEF) %NAME PARMDOPE=PARM0AD
%RECORDFORMAT STOREF(%SHORTINTEGER FLAGS,USERS,LINK,BLINK,FLINK)
%CONSTRECORD (STOREF) %ARRAYNAME STORE=STORE0AD
!
%EXTERNALLONGINTEGER SEMATIME=0
%OWNINTEGER PARMASL=0
%EXTERNALINTEGER MAINQSEMA=-1
%EXTERNALINTEGERSPEC STORESEMA
%OWNINTEGERARRAY GET NEW PAGE(0:14); ! parms for call of new epage
!
%CONSTINTEGER LOCSN1=LOCSN0+MAXPROCS
%OWNINTEGER APONSTAT1=0,APONSTAT2=0; !APON STATISTICS..SH
==== ercc07/vaxlink.txt ====
LINK
----
ERCC07:vP12Y
ERCC07:vP23Y
ERCC07:vOPT3Y
ERCC07:vp41Y
ERCC07:CSERV01y
ercc07:vBootgen1y
ercc07:vaxput3y
.END
P0Y
++++
MODIFY P0Y
----
SATISFY REFS
.ALL
SATISFY DATA
.ALL
SUPPRESS
.ALL
RETAIN
==== ercc07/makeusys_p1.txt ====
edit poneb01s,Up1s
i<itrimp_usysponeas>
ta/%inc/
d1i<itrimp_hostcodes>
a'
d1i<itrimp_tform2s>
m/%constlonglongreal/
(a/r'/a16d/'/i/'/)154
e
imp Up1s,.null
offer Up1s,ZEPZ01
==== ercc07/makeusys_p2.txt ====
edit timp02s,Up2s
i<itrimp_USYSptwoas>
ta/%inc/
d1i<itrimp_hostcodes>
a'
d1i<tripcnsts>
a'
d1i<itrimp_tform2s>
e
imp Up2s,.null
offer Up2s,zepz01
==== ercc07/trimp_drsptwoas.txt ====
%EXTERNALROUTINE ICL9CEZDRSIMP
%CONSTINTEGER RELEASE=4
%INCLUDE "ERCC07.TRIMP_HOSTCODES"
%CONSTINTEGER HOST=EMAS
%CONSTINTEGER TARGET=DRS
%CONSTINTEGER STANDARDPT=X'41'
%CONSTINTEGER MINAPT=X'41'; ! MINIMUM PTYPE FOR WHICH ARITHMETIC
! OPERATORS ARE AVAILABLE
%CONSTINTEGER MINAPREC=MINAPT>>4
%CONSTHALFINTEGERARRAY TYPEFLAG(0:12)=0,
X'51'{%INTEGER},
X'52'{%REAL},
X'8009'{%LONG SOMETHING},
X'4031'{%BYTE},
X'35'{%STRING},
X'4041'{%HALF},
X'6051'{%SHORT->%INTEGER+WARNING},
X'33'{%RECORD},
0,
X'1051'{%LONG INTEGER FAULT},
X'62'{%LONG REAL},
==== ercc07/ebits_enames13.txt ====
!***********************************************************************
!* *
!* ebits_enames13 24/12/86 *
!* *
!***********************************************************************
!*
%conststring(9)%array Eopname(0:255) = %c
{00} "HALT","IADD","ISUB","IMULT", "IDIV" ,"INEG" ,"IABS" ,"IREM" ,
{08} "IAND","IOR" ,"INOT","IXOR" , "ISHLL","ISHRL","ISHLA","ISHRA",
{10} "IGT" ,"ILT" ,"IEQ" ,"INE" , "IGE" ,"ILE" ,"BNOT" ,"" ,
{18} "JIGT","JILT","JIEQ","JINE" , "JIGE" ,"JILE" ,"JINTGZ","JINTLZ",
{20} "JINTZ","JINTNZ","JINTGEZ","JINTLEZ", "ITWB" ,"","JUMP","",
{28} "" ,"SFA" ,"RETURN" ,"ASF" , "IPUSH" ,"IPOP" ,"EXCH" ,"DUPL",
{30} "DISCARD","" ,"" ,"INDEX1", "INDEX2","INDEX4","INDEX8","INDEX",
{38} "MVB" ,"CHK" ,"TMASK" ,"MVW" , "EZERO" ,"" ,"CPBGT" ,"CPBLT",
{40} "CPBEQ" ,"CPBNE","CPBGE","CPBLE" , "","","","",
{48} "","","","", "","","","",
{50} "UADD","USUB","UGT","ULT", "UEQ","UNE","UGE","ULE",
{58} "JUGT","JULT","JUEQ","JUNE", "JUGE","JULE","JUGTZ","JULTZ",
{60} "JUEQZ","JUNEZ","JUGEZ","JULEZ", "UCVTII","IADDST","ISUBST","IMULTST",
{68} "IDIVST","INEGST","","", "IANDST","IORST","INOTST","IXORST",
==== ercc07/ibmsup_page0.txt ====
!
! The first 512 bytes of page 0 are hardware defined. (See Princs of Op)
! EMAS defines some addition locations for convenience
!
! X200 (512) Soft crash psw Set by G-C.
! X208 (520) System Program error psw.
! Set by G-C as the New PE psw and
! copied to here by L-C when its sets
! the User PE psw to 104.
! X210 (528) The local cpu timer PSW. Set
! by L-C and used by G-C when clock interrupt
! is due to cpu timer exceeded.
! X218 (536) Local controller initial activate
! PSW. Set by G-C
! X220 (544) Local Contoller exit PSW. Set by G-C
! for fast return.
! X228 (552) (Copy of) Restart PSW set ny ENTER
! X230 (560) Top of store marker for dump program
! X238-X27f (568-639) unused
! X280-X2bf (640-703) G-C context(16 regs) actaully only
==== ercc07/ebits_enames19.txt ====
!***********************************************************************
!* *
!* ebits_enames18 14/04/87 *
!* *
!***********************************************************************
!*
%conststring(9)%array Eopname(0:255) = %c
{00} "HALT","IADD","ISUB","IMULT", "IDIV" ,"INEG" ,"IABS" ,"IREM" ,
{08} "IAND","IOR" ,"INOT","IXOR" , "ISHLL","ISHRL","ISHLA","ISHRA",
{10} "IGT" ,"ILT" ,"IEQ" ,"INE" , "IGE" ,"ILE" ,"BNOT" ,"" ,
{18} "JIGT","JILT","JIEQ","JINE" , "JIGE" ,"JILE" ,"JINTGZ","JINTLZ",
{20} "JINTZ","JINTNZ","JINTGEZ","JINTLEZ", "ITWB" ,"","JUMP","",
{28} "" ,"SFA" ,"RETURN" ,"ASF" , "IPUSH" ,"IPOP" ,"EXCH" ,"DUPL",
{30} "DISCARD","" ,"" ,"INDEX1", "INDEX2","INDEX4","INDEX8","INDEX",
{38} "MVB" ,"CHK" ,"TMASK" ,"MVW" , "EZERO" ,"" ,"CPBGT" ,"CPBLT",
{40} "CPBEQ" ,"CPBNE","CPBGE","CPBLE" , "EMAKED","ESPLITD","","",
{48} "","","","", "","","UREM","UDIV",
{50} "UADD","USUB","UGT","ULT", "UEQ","UNE","UGE","ULE",
{58} "JUGT","JULT","JUEQ","JUNE", "JUGE","JULE","JUGTZ","JULTZ",
{60} "JUEQZ","JUNEZ","JUGEZ","JULEZ", "UCVTII","IADDST","ISUBST","IMULTST",
{68} "IDIVST","INEGST","UREMST","UDIVST","IANDST","IORST","INOTST","IXORST",
==== ercc07/ebits_enames21.txt ====
!***********************************************************************
!* *
!* ebits_enames21 18/09/87 *
!* *
!***********************************************************************
!*
%conststring(9)%array Eopname(0:255) = %c
{00} "HALT","IADD","ISUB","IMULT", "IDIV" ,"INEG" ,"IABS" ,"IREM" ,
{08} "IAND","IOR" ,"INOT","IXOR" , "ISHLL","ISHRL","ISHLA","ISHRA",
{10} "IGT" ,"ILT" ,"IEQ" ,"INE" , "IGE" ,"ILE" ,"BNOT" ,"" ,
{18} "JIGT","JILT","JIEQ","JINE" , "JIGE" ,"JILE" ,"JINTGZ","JINTLZ",
{20} "JINTZ","JINTNZ","JINTGEZ","JINTLEZ", "ITWB" ,"","JUMP","",
{28} "" ,"SFA" ,"RETURN" ,"ASF" , "IPUSH" ,"IPOP" ,"EXCH" ,"DUPL",
{30} "DISCARD","" ,"" ,"INDEX1", "INDEX2","INDEX4","INDEX8","INDEX",
{38} "MVB" ,"CHK" ,"TMASK" ,"MVW" , "EZERO" ,"" ,"CPBGT" ,"CPBLT",
{40} "CPBEQ" ,"CPBNE","CPBGE","CPBLE" , "EMAKED","ESPLITD","","",
{48} "","","","", "","","UREM","UDIV",
{50} "UADD","USUB","UGT","ULT", "UEQ","UNE","UGE","ULE",
{58} "JUGT","JULT","JUEQ","JUNE", "JUGE","JULE","JUGTZ","JULTZ",
{60} "JUEQZ","JUNEZ","JUGEZ","JULEZ", "UCVTII","IADDST","ISUBST","IMULTST",
{68} "IDIVST","INEGST","UREMST","UDIVST","IANDST","IORST","INOTST","IXORST",
==== ercc07/trimp_accoptas.txt ====
%INCLUDE "ERCC07.TRIMP_HOSTCODES"
%CONSTINTEGER HOST=EMAS
%CONSTINTEGER TARGET=ACCENT
==== ercc07/vaxcom_login.txt ====
$ define/job sys_defaultlp "LP23"
$ define/job sys_delivery "EUCS, KB"
$ define/job sys_username "Peter Stephens"
$ time :== show time
$ files :== dir/size
$ objanal :== analyse/obj
$ clink :== @clink
$ irun :== @irun
$ clinkd :== @clinkd
$ implink :== @NEW_ilink
$ implinkd :== @ilinkd
$ set term/vt100/insert
$ imp80 :== "$U1:[ERCC07]IMP80.EXE IMP80"
$ purge *.*
==== ercc07/ebits_enames28.txt ====
! Copyright (c) 1987 Edinburgh Portable Compilers Ltd. All Rights Reserved.
!***********************************************************************
!* *
!* ebits_enames28 09/2/88 *
!* *
!***********************************************************************
!*
%conststring(9)%array Eopname(0:255) = %c
{00} "HALT","IADD","ISUB","IMULT", "IDIV" ,"INEG" ,"IABS" ,"IREM" ,
{08} "IAND","IOR" ,"INOT","IXOR" , "ISHLL","ISHRL","ISHLA","ISHRA",
{10} "IGT" ,"ILT" ,"IEQ" ,"INE" , "IGE" ,"ILE" ,"BNOT" ,"" ,
{18} "JIGT","JILT","JIEQ","JINE" , "JIGE" ,"JILE" ,"JINTGZ","JINTLZ",
{20} "JINTZ","JINTNZ","JINTGEZ","JINTLEZ", "ITWB" ,"","JUMP","",
{28} "" ,"SFA" ,"RETURN" ,"ASF" , "IPUSH" ,"IPOP" ,"EXCH" ,"DUPL",
{30} "DISCARD","" ,"" ,"INDEX1", "INDEX2","INDEX4","INDEX8","INDEX",
{38} "MVB" ,"CHK" ,"TMASK" ,"MVW" , "EZERO" ,"" ,"CPBGT" ,"CPBLT",
{40} "CPBEQ" ,"CPBNE","CPBGE","CPBLE" , "EMAKED","ESPLITD","","",
{48} "","","","", "","UMULT","UREM","UDIV",
{50} "UADD","USUB","UGT","ULT", "UEQ","UNE","UGE","ULE",
{58} "JUGT","JULT","JUEQ","JUNE", "JUGE","JULE","JUGTZ","JULTZ",
{60} "JUEQZ","JUNEZ","JUGEZ","JULEZ", "UCVTII","IADDST","ISUBST","IMULTST",
==== ercc07/arout1s.txt ====
!***********************************************************************
!* NOTE WELL *
!* AFTER COMPILING THIS FILE THE FOLLOWING ALIASES MUST BE ADDED *
!* S#PRINT1900=ICL9CEPRINT1900 & S#READ1900=ICL9CEREAD1900 *
!***********************************************************************
!* MODIFIED 28.4.80 TO ALLOW FOR EBCDIC STRINGS
!* MODIFIED 10.3.80 TO REMOVE SQ AND DA
!* MODIFIED 6.3.80 BY LCG WITH PDS'S READ1900 AND WRITETEXT ROUTINES
!* MODIFIED 16/04/79 LENGTH CHANGED
!* MODIFIED 17/01/79 NEW VERSION OF WRITETEXT
!* MODIFIED 20/02/78 ERROR MESSAGE VALUES
!* MODIFIED 8/11/77 READ1900 IGNORES MULTIPLE SP & NL AFTER EXP CHAR
!* MODIFIED 13/01/77 SET MARGINS
!* MODIFIED 03/12/76 NEW VERSIONS OF READ1900,WRITETEXT
!******** MODIFIED 02:07:76 15.15 LCG (ALGLRTS,MATHFNS CONCATONATED
! ,COMPLEX ROUTINES
! & DUPLICATES FOR FORTRAN)
%EXTERNALINTEGERFUNCTIONSPEC IOCP %ALIAS "S#IOCP"(%INTEGER EP,PARM)
%EXTERNALINTEGERMAPSPEC COMREG %ALIAS "S#COMREGMAP"(%INTEGER N)
%CONSTBYTEINTEGERARRAY ITOETAB(0:255)= %C
X'00',X'01',X'02',X'03', X'37',X'2D',X'2E',X'2F',
==== ercc07/tlinkv7opt.txt ====
parm map
link ,separeas
ercc07:isupv710yo
ercc07:ifastv75yo
ercc07:idevv711yo
ercc07:ioperv73y
ercc07:icomv75y
ercc08:iprintv72y
ercc15:itape.Y5
ercc27:icomms.y8opt
ercc08:ienterv72y
ercc07:indiagv72y
.end
isupz
isupfix isupz,isupt,isupl
disconnect isupt
parm nocheck
==== ercc07/edit38s.txt ====
%constinteger diagprint=0
%CONSTSTRING (1) SNL= "
"
%RECORDFORMAT FRF(%INTEGER CONAD,FILETYPE,DATASTART,DATEND,SIZE,RUP,EEP,MODE,USERS,ARCH,
%STRING (6) TRAN, %STRING (8) DATE,TIME, %INTEGER COUNT,SPARE1,SPARE2)
%RECORDFORMAT RF(%INTEGER CONAD,FILETYPE,DATASTART,DATAEND)
!
%CONSTSTRING (1) USEP=":"
!
%EXTERNALROUTINESPEC EMAS3(%STRINGNAME COM,PARM, %INTEGERNAME FLAG)
%EXTERNALROUTINESPEC EMAS3 STRING(%STRINGNAME QUALIFIER,VALUE)
%EXTERNALROUTINESPEC EMAS3 CHANGEFILESIZE(%STRINGNAME FILE, %INTEGERNAME NEWSIZE,FLAG)
%EXTERNALROUTINESPEC UCTRANSLATE %ALIAS "s#uctranslate"(%INTEGER ADDR,L)
%EXTERNALROUTINESPEC MOVE %ALIAS "s#move"(%INTEGER LENGTH,FROM,TO)
%EXTERNALROUTINESPEC PROMPT %ALIAS "s#prompt"(%STRING (255) S)
%EXTERNALSTRINGFNSPEC INTERRUPT %ALIAS "s#interrupt"
%EXTERNALROUTINESPEC TOJOURNAL %ALIAS "S#TOJOURNAL"(%INTEGER FROM,LEN)
%EXTERNALROUTINESPEC FINFO %ALIAS "S#FINFO"(%STRING (255) FILE, %INTEGER MODE,
%RECORD (FRF) %NAME R, %INTEGERNAME FLAG)
%EXTERNALROUTINESPEC EMAS3TRAP(%INTEGERNAME ID,PROT,FLAG)
%EXTERNALROUTINESPEC EMAS3 GIVE EVENT(%INTEGERNAME CLASS,SUBCLASS)
==== ercc07/catinits.txt ====
C%%%CATINIT.FOR
C-- CATINIT -- EDINBURGH VERSION -- 17FEB87
C--
C-- VAX files are set up by this program with names coded here
C-- data file CATDATA
C-- author indx CATINDA
C-- title indx CATINDT
C-- subject indx CATINDS
C-- recordno indx CATINDN
C-- control file CATCONT
C--
C--
C--
C-- The on-line catalogue requires a data-record file, and 4 index
C-- files. These are contiguous files, with record length 256 bytes
C-- ( 1 sector on Perkin-Elmer systems).
C--
C-- Logical units:
C-- 2 Data record file
C-- 5 terminal input
C-- 6 terminal output
==== ercc07/obeypv.txt ====
parm strict
pascal ercs20:pvaltests1_pv 1 ,py,l0
run py
pascal ercs20:pvaltests1_pv 2 ,py,l0
run py
pascal ercs20:pvaltests1_pv 3 ,py,l0
run py
pascal ercs20:pvaltests1_pv 4 ,py,l0
run py
pascal ercs20:pvaltests1_pv 5 ,py,l0
run py
pascal ercs20:pvaltests1_pv 6 ,py,l0
run py
pascal ercs20:pvaltests1_pv 7 ,py,l0
run py
pascal ercs20:pvaltests1_pv 8 ,py,l0
run py
pascal ercs20:pvaltests1_pv 9 ,py,l0
run py
pascal ercs20:pvaltests1_pv 10 ,py,l0
run py
==== ercc07/trimp_hostcodes.txt ====
%CONSTINTEGER YES=1,NO=0
!
! THESE CODE ARE ARBITARY BUT THE TOP DECIMAL DIGIT GIVES THE NO OF BYTES
! IN THE UNIT OF ADDRESSABILITY. BYTE ADDRESSED HOSTS BEING 1N AND
! 16 BIT WORD ADDRESSED HOSTS BEING 2N ETC
%CONSTINTEGER EMAS=10; ! emas on 2900 (unsigned shorts)
%CONSTINTEGER IBM=11; ! emas on 24 bit ibm hardware
%CONSTINTEGER IBMXA=12; ! emas of XA 31 bit hardware
%CONSTINTEGER WWC=13; ! WWc (Natsemi chip) completely swopped
%CONSTINTEGER DRS=13; ! former name for WWC till ICL switched chips
%CONSTINTEGER AMDAHL=14; ! Emas on Amdahls guess at Xa Minor differences fron IBM)
%CONSTINTEGER PERQ3=15; ! ICL packaged 68k chip Unix stack but not swopped
%CONSTINTEGER GOULD=16; ! Gould unswopped forward stack. Needs 4&8 byte alined
%CONSTINTEGER PERQ=20; ! Pos perq now obselete. Fully swopped forward stack
%CONSTINTEGER PNX=21; ! ICL's perq2 Unix stack byte swopped (unsigned shorts)
%CONSTINTEGER ACCENT=22; ! Perq 1 under accent. obsolete now
! ACCENT DIFFERS FROM PERQ ONLY IN
! ASSEMBLES SEQUENCES&SYNTAX
! AND GENERATOR
==== ercc07/edit39s.txt ====
%CONSTINTEGER DIAGPRINT=0
%CONSTSTRING (1) SNL= "
"
%RECORDFORMAT FRF(%INTEGER CONAD,FILETYPE,DATASTART,DATEND,SIZE,RUP,EEP,MODE,USERS,ARCH,
%STRING (6) TRAN, %STRING (8) DATE,TIME, %INTEGER COUNT,SPARE1,SPARE2)
%RECORDFORMAT RF(%INTEGER CONAD,FILETYPE,DATASTART,DATAEND)
!
%CONSTSTRING (1) USEP=":"
!
%EXTERNALROUTINESPEC EMAS3(%STRINGNAME COM,PARM, %INTEGERNAME FLAG)
%EXTERNALROUTINESPEC EMAS3 STRING(%STRINGNAME QUALIFIER,VALUE)
%EXTERNALROUTINESPEC EMAS3 CHANGEFILESIZE(%STRINGNAME FILE, %INTEGERNAME NEWSIZE,FLAG)
%EXTERNALROUTINESPEC UCTRANSLATE %ALIAS "s#uctranslate"(%INTEGER ADDR,L)
%EXTERNALROUTINESPEC MOVE %ALIAS "s#move"(%INTEGER LENGTH,FROM,TO)
%EXTERNALROUTINESPEC PROMPT %ALIAS "s#prompt"(%STRING (255) S)
%EXTERNALSTRINGFNSPEC INTERRUPT %ALIAS "s#interrupt"
%EXTERNALROUTINESPEC TOJOURNAL %ALIAS "S#TOJOURNAL"(%INTEGER FROM,LEN)
%EXTERNALROUTINESPEC FINFO %ALIAS "S#FINFO"(%STRING (255) FILE, %INTEGER MODE,
%RECORD (FRF) %NAME R, %INTEGERNAME FLAG)
%EXTERNALROUTINESPEC EMAS3TRAP(%INTEGERNAME ID,PROT,FLAG)
%EXTERNALROUTINESPEC EMAS3 GIVE EVENT(%INTEGERNAME CLASS,SUBCLASS)
==== ercc07/pbug.txt ====
program bug(output,f);
var f:text;
i :integer;
begin
rewrite(f,'XX');
writeln(output, 'XX opened');
for i := 1 to 5 do writeln(f, i);
close(f);
writeln(output, 'XX closed');
append(f,'XX');
writeln(output, 'XX opened (append)');
for i := 6 to 10 do writeln(f, i);
close(f);
writeln(output, 'XX closed');
reset(f, 'XX');
writeln(output, 'XX opened (read) - contents are');
while not eof(f) do begin
readln(f,i);
writeln(output, i)
end
end.
==== ercc07/ibmconvert_sgenobj.txt ====
%RECORDFORMAT ESD DICTF( %C
%RECORD(ESD DICTF)%NAME NEXT, {POINTS TO NEXT DICT. ENTRY}
%STRING(31)%NAME NAME, {POINTS TO FULL NAME IN INPUT FILE}
%STRING(8) IBMNAME, {HOLDS IBM NAME}
%INTEGER OFFSET, {WITHIN COALESCED AREA OR AREA 6}
ESDOFFSET, {WITHIN GENERATED SD}
LNTH, {LENGTH OF ASSOC. OBJECT}
TXT, {ADDRESS OF FIRST TXT RECORD OF SD}
ESDID, {GIVES ID OF CSECT FOR LD}
{OR ESD ID FOR SD OR ER OR CM}
{FOR PROC ER }
{+0 IS ENTRY PT}
{+1 IS HEAD CODE}
{+2 IS HEAD GLA}
%BYTE ESDTYPE, {ESD ENTRY TYPE}
OWNTYPE, {OWN TYPE PROC/DATA/COMMON}
MAIN) {#0 => MAIN ENTRY PT}
%CONSTBYTEINTEGER SD=0,LD=1,ER=2,CM=5;
%CONSTBYTEINTEGER PROC=0,DATA=1,COMMON=2;
%CONSTSTRING(1) NULL="",HASH="#",AT="@",CODE="^"
!
==== ercc07/ltotals.txt ====
#scom 26,0
link ,map
ercc07:totaly
ERCC07:PDRIVER17Y
.end
ercc07:p0y
MODIFY P0Y,p00y
SATISFY REFS
.ALL
SATISFY DATA
.ALL
SUPPRESS
.ALL
RETAIN
emaszpascal
SUPPRESS DATA
.ALL
redirect
ptraceon, S#PTRACEON
ptraceoff,S#PTRACEOFF
.end
==== ercc07/ibmsup_configv7.txt ====
!
! Amdahl 470/V7 configuration
!
%constinteger cf entry size=32
%constinteger cfentries=47
%constintegerarray config file(0:cfentries*(cf entry size//4)-1)= %c
cfentries*cf entry size,1,32,14,x'863',1,5000,1,
4,m'FD80',x'280',x'380',3,0,0,0,
4,m'FD81',x'381',x'281',3,0,0,0,
4,m'FD82',x'282',x'382',3,0,0,0,
4,m'FD83',x'383',x'283',3,0,0,0,
4,m'FD84',x'284',x'384',3,0,0,0,
4,m'FD85',x'385',x'285',3,0,0,0,
4,m'FD86',x'286',x'386',3,0,0,0,
4,m'FD87',x'387',x'287',3,0,0,0,
4,m'FD88',x'288',x'388',3,0,0,0,
4,m'FD89',x'389',x'289',3,0,0,0,
4,m'FD8A',x'28A',x'38A',3,0,0,0,
4,m'FD8B',x'38B',x'28B',3,0,0,0,
4,m'FD8C',x'28C',x'38C',3,0,0,0,
4,m'FD8D',x'38D',x'28D',3,0,0,0,
==== ercc07/edit40s.txt ====
%CONST %INTEGER DIAGPRINT=0
%CONST %STRING (1) SNL= "
"
%RECORD %FORMAT FRF(%INTEGER CONAD,FILETYPE,DATASTART,DATEND,SIZE,RUP,EEP,MODE,USERS,ARCH, %STRING (6) TRAN,
%STRING (8) DATE,TIME, %INTEGER COUNT,SPARE1,SPARE2)
%RECORD %FORMAT RF(%INTEGER CONAD,FILETYPE,DATASTART,DATAEND)
!
%CONST %STRING (1) USEP=":"
!
%EXTERNAL %INTEGER %FN %SPEC EXIST %ALIAS "S#EXIST"(%STRING (255) PARAM)
%EXTERNAL %ROUTINE %SPEC EMAS3(%STRING %NAME COM,PARM, %INTEGER %NAME FLAG)
%EXTERNAL %ROUTINE %SPEC GET STRING %ALIAS "S#GETSTRING"(%STRING (255) QUALIFIER, %STRING %NAME VALUE)
%EXTERNAL %ROUTINE %SPEC CHANGEFILESIZE %ALIAS "S#CHANGEFILESIZE"(%STRING (255) FILE, %INTEGER NEWSIZE,
%INTEGER %NAME FLAG)
%EXTERNAL %INTEGER %FN %SPEC CHECKNAME %ALIAS "S#CHECKNAME"(%STRING %NAME FILE, %INTEGER %NAME TYPE,QUAL)
%EXTERNAL %ROUTINE %SPEC UCTRANSLATE %ALIAS "s#uctranslate"(%INTEGER ADDR,L)
%EXTERNAL %ROUTINE %SPEC MOVE %ALIAS "s#move"(%INTEGER LENGTH,FROM,TO)
%EXTERNAL %ROUTINE %SPEC PROMPT %ALIAS "s#prompt"(%STRING (255) S)
%EXTERNAL %STRING %FN %SPEC INTERRUPT %ALIAS "s#interrupt"
%EXTERNAL %ROUTINE %SPEC TOJOURNAL %ALIAS "S#TOJOURNAL"(%INTEGER FROM,LEN)
%EXTERNAL %ROUTINE %SPEC FINFO %ALIAS "S#FINFO"(%STRING (255) FILE, %INTEGER MODE, %RECORD (FRF) %NAME R,
==== ercc07/xgen23as.txt ====
!* modified 16/07/86
!*
%ownstring(31) Versiontext="Fortran77 Compiler Version 0.1"
%owninteger Report=0
%owninteger Decode
%owninteger Language
!*
%constinteger IMP = 1
%constinteger FORTRAN = 2
%constinteger CCOMP = 11
%constinteger PASCAL = 14
%constinteger bootlang=16
!*
!***********************************************************************
!* Exports *
!***********************************************************************
!*
%routinespec Einitialise(%integer Lang, Avertext, Astackca,
Aglaca, Options)
%routinespec Eterminate(%integer adareasizes)
%routinespec Ecommon(%integer area, %stringname Name)
==== ercc07/gbits_gldndiag11s.txt ====
! Copyright (c) 1987 Edinburgh Portable Compilers Ltd. All Rights Reserved.
%OWN %STRING (90) copyright= " Copyright (c) 1987 Edinburgh Portable Compilers Ltd. All Rights Reserved."
!
!*****************************************************************
!* *
!* Joint Imp and Fortran Diagnostics module for Gould PN6000. *
!* *
!***********************************************************************
!
! Version 11
! Uses assembler not frigs to find value of BR2 on entry
! Version 10
! This version created by PDS by merging AK's npndiag9 and AAs utxcndiag16
! THe code for Fortran and conditional compilation for UTX and MPX
! has been left alone but never tested. THe IMP diags work with PDS revisions
! to IMP of Dec88. Earlier versions of IMP store the GLa address in the exception
! handler word and these will not work with this NDIAG
!
!---Conditional Compilation Constants:
!
!
==== ercc07/makeorn_gen.txt ====
offer ogens
parm nocheck
edit orngen00s,ogens
a/%incl/d1i<itrimp_hostcodes>
a'd1i<ercs01:ebits_ecodes8>
a'd1i<tripcnsts>
a'd1i<itrimp_tform2s>
a'd1i<ercs01:ebits_especs2>
e
imp ogens,.null
offer ogens,ecsc64
==== ercc07/ibmsup_page0f.txt ====
!
%recordformat PAGE0F((%longinteger IPL PSW,IPL CCW1 %or %c
%longinteger RESTART NEW PSW,RESTART OLD PSW),
%longinteger IPL CCW2,EXT OLD PSW,SVC OLD PSW,PE OLD PSW,MC OLD PSW,IO OLD PSW,
(%longinteger CSW %or %integer CSW1,CSW2), %integer CAW,SP1,SP2,TTABLE DES,
%longinteger EXT NEW PSW,SVC NEW PSW,PE NEW PSW,MC NEW PSW,IO NEW PSW,
%integer EXT PARM, %shortinteger EXT CPU,EXT CODE,SVC ILC,SVC CODE,
PE ILC,PE CODE, %integer TRANS EXC ADDR, %shortinteger MCLASS NO,PER CODE,
%integer PER ADDR,MON CODE,SP3,MAPL ADDR,CHAN ID,IOEL ADDR,LCL,SP4,
(%byteinteger BSP1,MBYTE, %shortinteger IO ADDR, %integer SP5 %or %integer XASIW,XAIOIP),
%integerarray ISP1(1:6),
%longinteger CPU TIMER,CLOCK COMP,MC CODE, %integer SP6,EXT DCODE,
FSTORE ADDR,REG CODE, %longinteger PSW SAVE, %integer PREFIX SAVE,
MODEL SAVE,LOGOUT { etc.....})
!
%constrecord (PAGE0F) %name PAGE0=PAGE0 VA
!
%endoffile
==== ercc07/ebits_enames.txt ====
!*
%conststring(9)%array Eopname(0:255) = %c
{00} "HALT","IADD","ISUB","IMULT", "IDIV" ,"INEG" ,"IABS" ,"IREM" ,
{08} "IAND","IOR" ,"INOT","IXOR" , "ISHLL","ISHRL","ISHLA","ISHRA",
{10} "IGT" ,"ILT" ,"IEQ" ,"INE" , "IGE" ,"ILE" ,"" ,"" ,
{18} "JIGT","JILT","JIEQ","JINE" , "JIGE" ,"JILE" ,"JINTGZ","JINTLZ",
{20} "JINTZ","JINTNZ","JINTGEZ","JINTLEZ", "ITWB" ,"","JUMP","",
{28} "" ,"SFA" ,"RETURN" ,"ASF" , "IPUSH" ,"IPOP" ,"EXCH" ,"DUPL",
{30} "DISCARD","" ,"" ,"INDEX1", "INDEX2","INDEX4","INDEX8","INDEX",
{38} "MVB" ,"CHK" ,"TMASK" ,"" , "" ,"" ,"CPBGT" ,"CPBLT",
{40} "CPBEQ" ,"CPBNE","CPBGE","CPBLE" , "","","","",
{48} "","","","", "","","","",
{50} "","","","", "","","","",
{58} "","","","", "","","","",
{60} "","","","", "","","","",
{68} "","","","", "","","","",
{70} "" ,"RADD" ,"RSUB" ,"RMULT","RDIV" ,"RNEG" ,"RABS","" ,
{78} "","","","", "","","","",
{80} "","","","", "","","","",
{88} "CVTII","CVTIR","CVTRR","TNCRI", "RNDRI","","","",
{90} "RGT" ,"RLT" ,"REQ" ,"RNE" ,"RGE" ,"RLE" ,"JRGT","JRLT",
==== ercc07/trimp_poneb01s.txt ====
!
%CONST %BYTE %INTEGER %ARRAY I TO E TAB(0 : 127) = %C
X'40',X'40',X'40',X'40',X'40',X'40',X'40',X'40',
X'40',X'40',X'15',X'40',X'0C',X'40',X'40',X'40',
X'40',X'40',X'40',X'40',X'40',X'40',X'40',X'40',
X'40',X'40',X'40',X'40',X'40',X'40',X'40',X'40',
X'40',X'4F',X'7F',X'7B',X'5B',X'6C',X'50',X'7D',
X'4D',X'5D',X'5C',X'4E',X'6B',X'60',X'4B',X'61',
X'F0',X'F1',X'F2',X'F3',X'F4',X'F5',X'F6',X'F7',
X'F8',X'F9',X'7A',X'5E',X'4C',X'7E',X'6E',X'6F',
X'7C',X'C1',X'C2',X'C3',X'C4',X'C5',X'C6',X'C7',
X'C8',X'C9',X'D1',X'D2',X'D3',X'D4',X'D5',X'D6',
X'D7',X'D8',X'D9',X'E2',X'E3',X'E4',X'E5',X'E6',
X'E7',X'E8',X'E9',X'4A',X'5F',X'5A',X'6A',X'6D',
X'7C',X'81',X'82',X'83',X'84',X'85',X'86',X'87',
X'88',X'89',X'91',X'92',X'93',X'94',X'95',X'96',
X'97',X'98',X'99',X'A2',X'A3',X'A4',X'A5',X'A6',
X'A7',X'A8',X'A9',X'C0',X'40',X'D0',X'40',X'40'
%CONSTBYTEINTEGERARRAY ONE CASE(0 : 127) = %C
0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,
16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,
==== ercc07/poneb01s.txt ====
!
%CONST %BYTE %INTEGER %ARRAY I TO E TAB(0 : 127) = %C
X'40',X'40',X'40',X'40',X'40',X'40',X'40',X'40',
X'40',X'40',X'15',X'40',X'0C',X'40',X'40',X'40',
X'40',X'40',X'40',X'40',X'40',X'40',X'40',X'40',
X'40',X'40',X'40',X'40',X'40',X'40',X'40',X'40',
X'40',X'4F',X'7F',X'7B',X'5B',X'6C',X'50',X'7D',
X'4D',X'5D',X'5C',X'4E',X'6B',X'60',X'4B',X'61',
X'F0',X'F1',X'F2',X'F3',X'F4',X'F5',X'F6',X'F7',
X'F8',X'F9',X'7A',X'5E',X'4C',X'7E',X'6E',X'6F',
X'7C',X'C1',X'C2',X'C3',X'C4',X'C5',X'C6',X'C7',
X'C8',X'C9',X'D1',X'D2',X'D3',X'D4',X'D5',X'D6',
X'D7',X'D8',X'D9',X'E2',X'E3',X'E4',X'E5',X'E6',
X'E7',X'E8',X'E9',X'4A',X'5F',X'5A',X'6A',X'6D',
X'7C',X'81',X'82',X'83',X'84',X'85',X'86',X'87',
X'88',X'89',X'91',X'92',X'93',X'94',X'95',X'96',
X'97',X'98',X'99',X'A2',X'A3',X'A4',X'A5',X'A6',
X'A7',X'A8',X'A9',X'C0',X'40',X'D0',X'40',X'40'
%CONSTBYTEINTEGERARRAY ONE CASE(0 : 255) = %C
0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,
16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,
==== ercc07/vaxopcodes.txt ====
!
! This is a full list of vax opcodes but the some non relevant instructions
! are commented out. Primarily these are Priviledged D & H forms.
!
!p %constinteger HALT =X'00'
%constinteger NOP =X'01'
!p %constinteger REI =X'02'
%constinteger BPT =X'03'
%constinteger RET =X'04'
%constinteger RSB =X'05'
!p %constinteger LDPCTX=X'06'
!p %constinteger SVPCTX=X'07'
%constinteger CVTPS =X'08'
%constinteger CVTSP =X'09'
%constinteger VAXINDEX =X'0A'; ! INDEX is propername but clashes with Ecodes
%constinteger CRC =X'0B'
!p %constinteger PROBER=X'0C'
%constinteger PROBEW=X'0D'
%constinteger INSQUE=X'0E'
%constinteger REMQUE=X'0F'
==== ercc07/edit41s.txt ====
%CONST %INTEGER DIAGPRINT=0
%CONST %STRING (1) SNL= "
"
%RECORD %FORMAT FRF(%INTEGER CONAD,FILETYPE,DATASTART,DATEND,SIZE,RUP,EEP,MODE,USERS,ARCH, %STRING (6) TRAN,
%STRING (8) DATE,TIME, %INTEGER COUNT,SPARE1,SPARE2)
%RECORD %FORMAT RF(%INTEGER CONAD,FILETYPE,DATASTART,DATAEND)
!
%CONST %STRING (1) USEP=":"
!
%externalroutinespec %c
setfname %alias "s#setfname" (%string(255)s)
%externalroutinespec %c
connect %alias "s#connect" (%string(255)file, %integer mode, hole, prot,
%integername conad, type, start, end, flag)
%externalroutinespec %c
disconnect %alias "s#disconnect" (%string(255)file, %integername flag)
%externalroutinespec %c
outfile %alias "s#outfile" (%string(255)file, %integer size, hole, prot,
%integername conad, flag)
%externalroutinespec %c
destroy %alias "s#destroy" (%string(255)file, %integername flag)
==== ercc07/vaxcom_testimp.txt ====
$ run imp80
imp80 rt30
$ implink rt30
$ run rt30
$ run imp80
imp80 rt31
$ implink rt31
$ run rt31
$ run imp80
imp80 rt32
$ implink rt32
$ run rt32
$ run imp80
imp80 rt33
$ implink rt33
$ run rt33
$ run imp80
imp80 rt34
$ implink rt34
$ run rt34
==== ercc07/eccemtspas.txt ====
(Message 209)
Subject: Ecce.pas MTS version
From: Harry_Whitfield <CL11 @ UK.AC.NEWCASTLE.MTS>
Date: Thu, 25 Jun 87 15:50:49 GMT
To: P.D.Stephens @ UK.AC.EDINBURGH
Via: UK.AC.EDINBURGH.EMAS-A ; (to uk.ac.edinburgh.emas-b) 25 Jun 87 15:51:36 bst
Via: UK.AC.NEWCASTLE.MTS ; (to uk.ac.edinburgh.emas-a) 25 Jun 87 15:51:16 bst
Msg ID: <sent 25 Jun 87 15:50:49 GMT via NCL.MTS>
{*****************************************************************************}
{** **}
{** Title: Edinburgh Editor Ecce for MTS **}
{** Author: H.Whitfield **}
{** Date: 17 November 1985 **}
{** Copyright (c) H.Whitfield 1985 **}
{** **}
{*****************************************************************************}
PROGRAM Ecce( input, output, InFile, OutFile );
==== ercc07/poneb02s.txt ====
!
! Changes for poneb02s
! 1) Improvements to UP and DOWN to flag internal blks or procs
!
!
%CONST %BYTE %INTEGER %ARRAY I TO E TAB(0 : 127) = %C
X'40',X'40',X'40',X'40',X'40',X'40',X'40',X'40',
X'40',X'40',X'15',X'40',X'0C',X'40',X'40',X'40',
X'40',X'40',X'40',X'40',X'40',X'40',X'40',X'40',
X'40',X'40',X'40',X'40',X'40',X'40',X'40',X'40',
X'40',X'4F',X'7F',X'7B',X'5B',X'6C',X'50',X'7D',
X'4D',X'5D',X'5C',X'4E',X'6B',X'60',X'4B',X'61',
X'F0',X'F1',X'F2',X'F3',X'F4',X'F5',X'F6',X'F7',
X'F8',X'F9',X'7A',X'5E',X'4C',X'7E',X'6E',X'6F',
X'7C',X'C1',X'C2',X'C3',X'C4',X'C5',X'C6',X'C7',
X'C8',X'C9',X'D1',X'D2',X'D3',X'D4',X'D5',X'D6',
X'D7',X'D8',X'D9',X'E2',X'E3',X'E4',X'E5',X'E6',
X'E7',X'E8',X'E9',X'4A',X'5F',X'5A',X'6A',X'6D',
X'7C',X'81',X'82',X'83',X'84',X'85',X'86',X'87',
X'88',X'89',X'91',X'92',X'93',X'94',X'95',X'96',
X'97',X'98',X'99',X'A2',X'A3',X'A4',X'A5',X'A6',
==== ercc07/trimp_perqoptas.txt ====
%INCLUDE "ERCC07.TRIMP_HOSTCODES"
%CONSTINTEGER HOST=EMAS
%CONSTINTEGER TARGET=PERQ
==== ercc07/make386_p1.txt ====
offer d386p1s
edit poneb01s,d386p1s
i<itrimp_drsponeas>
ta/%inc/
d1i<itrimp_hostcodes>
a'
d1i<itrimp_tform2s>
m/%constlonglongreal/
e
imp d386p1s,.null
offer d386p1s,zepz06
==== ercc07/make386_p2.txt ====
offer d386p2s
edit timp02s,d386p2s
i<itrimp_drsptwoas>
ta/%inc/
d1i<itrimp_hostcodes>
a'
d1i<tripcnsts>
a'
d1i<itrimp_tform2s>
ta.alpha=.r1i.8.
e
imp d386p2s,.null
offer d386p2s,zepz06
==== ercc07/makevax_put.txt ====
edit vaxput3s,vputs
a/%inc/p1d1i<ercc07:itrimp_hostcodes>
a'p1d1i<ercs04:stabh>
a'p1d1i<ercc07:vaxopcodes>
ta/host=/i/Vax
/d1e
parm noarray,nocheck
vaximp vputs,vputxx
transfer vputxx,ercvax(ercc07,peathag)vput3.obj,file,bin
==== ercc07/tlinkmp.txt ====
parm map
link ,separeas
----
ercc07:isupMP12y
ercc07:ifastMP24y
ercc07:idevMP22y
ercc08:iop3270mpy
ercc07:icomMP9y
ercc07:iprintMP4y
ercc15:itape.y9MP
ercc27:icomms.MP16
ercc07:ienterN3y
ercc07:indiagn3y
.end
isupz
++++
isupfix isupz,isupt,isupl
disconnect isupt
parm nocheck
==== ercc07/vaxcom_irun.txt ====
$run imp80
imp80 'p1'
$ ilink 'p1'
$run 'p1'
==== ercc07/reboot7.txt ====
parm nocheck,noarray,nolist,noline,nodiag,R8,nowarnings
#scom 25,5
pascal ercs12:psource.options7s,options7y
pascal ercs12:psource.analyser11s,analyser11y
pascal ercs12:psource.codeinit9s,codeinit9y
pascal ercs12:psource.ctlstruct9s,ctlstruct9y
pascal ercs12:psource.datareps9s,datareps9y
pascal ercs12:psource.diags5s,diags5y
pascal ercs12:psource.dump5s,dump5y
pascal ercs12:psource.expeval11s,expeval10y
pascal ercs12:psource.generator4s,generator4y
pascal ercs12:psource.lexical4s,lexical4y
pascal ercs12:psource.main5s,main5y
pascal ercs12:psource.progparam2s,progparam2y
pascal ercs12:psource.prologue2s,prologue2y
pascal ercs12:psource.semantics8s,semantics8y
pascal ercs12:psource.source6s,source6y
pascal ercs12:psource.stdprocs9s,stdprocs9y
pascal ercs12:psource.syntax1s,syntax1y
pascal ercs12:psource.varref10s,varref10y
pascal ercs12:psource.withstmts2s,withstmts2y
==== ercc07/trimp_emasopt01s.txt ====
%INCLUDE "ERCC07.TRIMP_TFORM1S"
%INCLUDE "ERCC07.TRIPCNSTS"
%EXTRINSICRECORD(WORKAF) WORKA
%EXTRINSICRECORD(PARMF) PARM
%CONSTINTEGER YES=1
%CONSTINTEGER NO=0
%EXTERNALROUTINESPEC IMPABORT
%EXTERNALROUTINESPEC FAULT(%INTEGER N,DATA,IDENT)
%EXTERNALROUTINESPEC PRINT TRIPS(%RECORD(TRIPF) %ARRAYNAME TRIPLES)
%CONSTBYTEINTEGERARRAY WORDS(0:7)=0(3),1,1,2,4,8;
%ROUTINE EXTRACT(%RECORD(RD) %NAME OPND, %LONGINTEGERNAME VAL,
%LONGLONGREALNAME RVAL, %STRINGNAME STRVAL)
!***********************************************************************
!* EXTRACTS A CONTANT OPERAND RETURNING REAL &INT VALUES *
!***********************************************************************
%INTEGER TYPE,PREC,I,AD
TYPE=OPND_PTYPE; PREC=TYPE>>4
TYPE=TYPE&15
%IF TYPE=5 %START
LENGTH(STRVAL)=WORKA_A(OPND_D)
==== ercc07/reboot8.txt ====
parm nocheck,noarray,nolist,noline,nodiag,R8,nowarnings
#scom 25,5
pascal ercs12:psource.options7s,options7y
pascal ercs12:psource.analyser11s,analyser11y
pascal ercs12:psource.codeinit9s,codeinit9y
pascal ercs12:psource.ctlstruct9s,ctlstruct9y
pascal ercs12:psource.datareps9s,datareps9y
pascal ercs12:psource.diags5s,diags5y
pascal ercs12:psource.dump5s,dump5y
pascal ercs12:psource.expeval11s,expeval10y
pascal ercs12:psource.generator4s,generator4y
pascal ercs12:psource.lexical4s,lexical4y
pascal ercs12:psource.main5s,main5y
pascal ercs12:psource.progparam2s,progparam2y
pascal ercs12:psource.prologue2s,prologue2y
pascal ercs12:psource.semantics8s,semantics8y
pascal ercs12:psource.source6s,source6y
pascal ercs12:psource.stdprocs9s,stdprocs9y
pascal ercs12:psource.syntax1s,syntax1y
pascal ercs12:psource.varref10s,varref10y
pascal ercs12:psource.withstmts2s,withstmts2y
==== ercc07/algtests_ablurb.txt ====
AT1:- This program tests if the compiler survives oversized constant.Should not
run.
AT2:- This program tests if long similar names are distinguished. Should output
1.0.
AT3:- This program tests if a program can be labelled. Some compilers allow this.
AT4:- This program tests if the preassigned names can be used as program labels.
This can cause problems hence many compilers disallow labels here.
AT5:- This program tests if a program can be a statement. THis was allowed in
the 63 Report but is now explicitly disallowed. Should not compile.
AT6:- This program tests if double sided conditions are allowed. Strictly
invalid Algol so should not compile.
AT7:- This program tests assignment to name parameters. The first four calls of
p are valid but the last attempts to assign to a constant. The compiler
==== ercc07/ibmsup_configxa.txt ====
!
! XA configuration (dummy)
!
! NB in an XA configiration HI CUU must be set to zero
==== ercc07/trimp_drsponeas.txt ====
%INCLUDE "ERCC07.TRIMP_HOSTCODES"
%CONSTINTEGER HOST=EMAS
%CONSTINTEGER TARGET=PERQ
! PRODUCED BY OLDPS FROM TRIMP_PERQPS01 ON 06/09/83
%CONSTBYTEINTEGERARRAY CLETT(0: 436)= 1,
40, 1, 41, 1, 42, 1, 44, 2, 201, 198, 6, 213, 206, 204,
197, 211, 211, 5, 215, 200, 201, 204, 197, 5, 213, 206, 212, 201,
204, 3, 198, 207, 210, 1, 61, 5, 193, 204, 201, 193, 211, 7,
201, 206, 212, 197, 199, 197, 210, 4, 210, 197, 193, 204, 4, 204,
207, 206, 199, 4, 194, 217, 212, 197, 6, 211, 212, 210, 201, 206,
199, 4, 200, 193, 204, 198, 5, 211, 200, 207, 210, 212, 6, 210,
197, 195, 207, 210, 196, 7, 210, 207, 213, 212, 201, 206, 197, 2,
198, 206, 3, 205, 193, 208, 8, 198, 213, 206, 195, 212, 201, 207,
206, 4, 206, 193, 205, 197, 9, 193, 210, 210, 193, 217, 206, 193,
205, 197, 9, 207, 198, 208, 210, 207, 199, 210, 193, 205, 6, 207,
198, 198, 201, 204, 197, 6, 207, 198, 204, 201, 211, 212, 6, 198,
207, 210, 205, 193, 212, 3, 206, 207, 212, 3, 193, 206, 196, 2,
207, 210, 1, 58, 4, 211, 208, 197, 195, 5, 193, 210, 210, 193,
217, 3, 207, 215, 206, 8, 197, 216, 212, 197, 210, 206, 193, 204,
9, 197, 216, 212, 210, 201, 206, 211, 201, 195, 8, 195, 207, 206,
211, 212, 193, 206, 212, 5, 195, 207, 206, 211, 212, 5, 197, 214,
==== ercc07/ifast20s.txt ====
%INCLUDE "ercc07:ibmsup_comf370"
%INCLUDE "ercc07:ibmsup_page0f"
%INCLUDE "ercc07:ibmsup_dtform2s"
%INCLUDE "ercc07:ibmsup_xaioform"
%RECORD %FORMAT PARMF(%INTEGER DEST,SRCE,(%INTEGER P1,P2,P3,P4,P5,
P6 %OR %STRING (23) TEXT))
%CONST %INTEGER PCELLSIZE=36,MARGIN=48
%RECORD %FORMAT PDOPEF(%INTEGER CURRMAX,MAXMAX,FIRST UNALLOC,LAST UNALLOC,NEXTPAGE,S1,
S2,S3,S4)
%RECORD %FORMAT PARMXF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6,LINK)
%CONST %RECORD (PARMXF) %ARRAY %NAME PARM=PARM0AD
%CONST %RECORD (PDOPEF) %NAME PARMDOPE=PARM0AD
%RECORD %FORMAT STOREF(%SHORT %INTEGER FLAGS,USERS,LINK,BLINK,FLINK)
%CONST %RECORD (STOREF) %ARRAY %NAME STORE=STORE0AD
!
%EXTERNAL %LONG %INTEGER SEMATIME=0
%OWN %INTEGER PARMASL=0
%EXTERNAL %INTEGER MAINQSEMA=-1
%EXTERNAL %INTEGER %SPEC STORESEMA
%OWN %INTEGER %ARRAY GET NEW PAGE(0:14); ! parms for call of new epage
!
==== ercc07/m88kp401s.txt ====
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
! Opnd2 is either a 32 bit const with the size (ACC) as value or
! the ptr or arrayhead as normal operand.
!
! VMY X1 is now dim<<28!maxdim<<24!array name(where known)
! Opnd2 is either a 32 bit const with DV offset into const area or
! the arrayhead as a standard operand
!
! AINDX X1 is ELSIZE<<20 !spare
! Opnd2 is arrayhead as standard operand
! NOTE:- The Operands have been swopped for consistency with norm.
!
==== ercc07/ctoptnassmp.txt ====
!
! Compile time options for EMAS/370
!
%constinteger YES=1,NO=0,AMDAHL=2
%constinteger XA=YES; ! yes for 370/XA
%constinteger VA MODE=YES; ! yes for Supervisor, no for Chopsupe
%constinteger MULTI OCP=YES; ! yes to include semaphoring
%constinteger CRFITTED=NO; ! card reader
%constinteger CPFITTED=NO; ! card punch
%constinteger SNOOZING=YES; ! allow suspend in store
%constinteger PRODUCTION=NO; ! yes for continuing after S/W errors
%constinteger MONLEVEL=x'3F'; ! 0 = no monitoring
! 2**0 = video updating
! 2**1 = KMONning
! 2**2 = sup timing measurements
! 2**3 = a-c for cross calls
! 2**4 = strobing
! 2**5 = cat table transitions
! 2**8 = event harvesting
%constinteger P4PERCENT=19; ! max % of free store for large jobs
%constinteger MAXPROCS=256; ! max concurrent procs (64,128 or 256)
==== ercc07/ifast21s.txt ====
!
! Changes for vsn 21
! 1) New format for store array to allow for bigger AMT
! 2) Conditional compilation of Q REQUEST and other non xa rts
!
%INCLUDE "ercc07:ibmsup_comf370"
%INCLUDE "ercc07:ibmsup_page0f"
%INCLUDE "ercc07:ibmsup_dtform2s"
%INCLUDE "ercc07:ibmsup_xaioform"
%RECORD %FORMAT PARMF(%INTEGER DEST,SRCE,(%INTEGER P1,P2,P3,P4,P5,
P6 %OR %STRING (23) TEXT))
%CONST %INTEGER PCELLSIZE=36,MARGIN=48
%RECORD %FORMAT PDOPEF(%INTEGER CURRMAX,MAXMAX,FIRST UNALLOC,LAST UNALLOC,NEXTPAGE,S1,
S2,S3,S4)
%RECORD %FORMAT PARMXF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6,LINK)
%CONST %RECORD (PARMXF) %ARRAY %NAME PARM=PARM0AD
%CONST %RECORD (PDOPEF) %NAME PARMDOPE=PARM0AD
%RECORD %FORMAT STOREF(%SHORT %INTEGER FLAGS,USERS, %INTEGER LINK,
%SHORT %INTEGER BLINK,FLINK)
%CONST %RECORD (STOREF) %ARRAY %NAME STORE=STORE0AD
!
==== ercc07/npndiags9s.txt ====
!Modified 19/April/88 14:00 NDIAG9.2
!---History:
!
! %c
NDIAG9.2 incorporates changes to enable diagnostics on NP1. Note %c
that the new changes have been implemented primarily for %c
soft failures from Fortran and are dependent upon the %c
storage allocation of the IMP compiler.
!%c
also effectively disables "bottomad" check for NP1 and UTX.
!%c
NDIAG9.1 corrects occasional report of GLA CORRUPT when a FORTRAN %c
main program has been compiled without diagnostics.
!%c
==== ercc07/m88kp402s.txt ====
! changes applied for risc development retrofitted (GEM 5/10/89)
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
! Opnd2 is either a 32 bit const with the size (ACC) as value or
! the ptr or arrayhead as normal operand.
!
! VMY X1 is now dim<<28!maxdim<<24!array name(where known)
! Opnd2 is either a 32 bit const with DV offset into const area or
! the arrayhead as a standard operand
!
! AINDX X1 is ELSIZE<<20 !spare
! Opnd2 is arrayhead as standard operand
! NOTE:- The Operands have been swopped for consistency with norm.
==== ercc07/especs4h.txt ====
%externalroutine Einitialise %alias"E#INITIALISE"(%integer Lang,Aver,Astackca,Aglaca,options)
%externalroutine Eterminate %alias"E#TERMINATE"(%integer adareasizes)
%externalroutine Ecommon %alias"E#COMMON"(%integer area,%stringname Name)
%externalroutine Eendcommon %alias"E#ENDCOMMON"(%integer area,Length)
%externalroutine Elinestart %alias"E#LINESTART"(%integer lineno)
%externalroutine Elinedecode %alias"E#LINEDECODE"
%externalintegerfn Estkmarker %alias"E#STKMARKER"
%externalroutine Esetmarker %alias"E#SETMARKER"(%integer Markerid,New Value)
%externalintegerfn Eswapmode %alias"E#SWAPMODE"
%externalroutine Emonon %alias"E#MOMON"
%externalroutine Emonoff %alias"E#MONOFF"
%externalroutine Efaulty %alias"E#FAULTY"
%externalroutine Estklit %alias"E#STKLIT"(%integer Val)
%externalroutine Estkconst %alias"E#STKCONST"(%integer Len,Ad)
%externalroutine Estkrconst %alias"E#STKRCONST"(%integer Len,Ad)
%externalroutine Estkdir %alias"E#STKDIR"(%integer Area,Offset,Adid,Bytes)
%externalroutine Estkind %alias"E#STKIND"(%integer Area,Offset,Adid,Bytes)
%externalroutine Estkglobal %alias"E#STKGLOBAL"(%integer Level,Offset,Adid,Bytes)
%externalroutine Estkglobalind %alias"E#STKGLOBALIND"(%integer Level,Offset,Adid,Bytes)
%externalroutine Estkgind %alias"E#STKIND"(%integer Level,Offset,Adid,Bytes)
%externalroutine Estkpar %alias"E#STKPAR"(%integer Level,Offset,Adid,Bytes)
==== ercc07/compallf.txt ====
cd ercs08:f77rel
parm noarray,nocheck,xref
imp ercs08:f77rel.Srce200_XCONTRl8,.null,:l1
imp ercs08:f77rel.Srce200_FALLOC3a,.null,:l2
imp ercs08:f77rel.Srce200_FANAL4a,.null,:l3
imp ercs08:f77rel.Srce200_FARITH1,.null,:l4
imp ercs08:f77rel.Srce200_FCINNUM2a,.null,:l5
imp ercs08:f77rel.Srce200_fcode3,.null,:l6
imp ercs08:f77rel.Srce200_FDATA3,.null,:l7
imp ercs08:f77rel.Srce200_FEND4,.null,:l8
imp ercs08:f77rel.Srce200_FGEN3,.null,:l9
imp ercs08:f77rel.Srce200_FINPUT3a,.null,:l10
imp ercs08:f77rel.Srce200_FMAP1,.null,:l11
imp ercs08:f77rel.Srce200_FMESS2,.null,:l12
imp ercs08:f77rel.Srce200_F1OPT1,.null,:l13
imp ercs08:f77rel.srce200_f2opt1,.null,:l14
imp ercs08:f77rel.srce200_f3opt2,.null,:l15
imp ercs08:f77rel.srce200_f4opt1a,.null,:l16
imp ercs08:f77rel.srce200_f5opt1,.null,:l17
imp ercs08:f77rel.srce200_fcelim1,.null,:l18
imp ercs08:f77rel.srce200_feelim1,.null,:l19
==== ercc07/trimp_portenv01s.txt ====
%CONSTINTEGER YES=1,NO=0
!
! THESE CODE ARE ARBITARY BUT THE TOP DECIMAL DIGIT GIVES THE NO OF BYTES
! IN THE UNIT OF ADDRESSABILITY. BYTE ADDRESSES HOSTS BEING 1N AND
! 16 BIT WORD ADDRESSED HOSTS BEING 2N ETC
%CONSTINTEGER EMAS=10
%CONSTINTEGER IBM=11
%CONSTINTEGER IBMXA=12
%CONSTINTEGER DRS=13
%CONSTINTEGER AMDAHL=14
%CONSTINTEGER PERQ=20
%CONSTINTEGER PNX=21
%CONSTINTEGER ACCENT=22
! ACCENT DIFFERS FROM PERQ ONLY IN
! ASSEMBLES SEQUENCES&SYNTAX
! AND GENERATOR
%CONSTINTEGER LINTAVAIL=1<<AMDAHL!1<<IBM!1<<IBMXA!1<<EMAS
%CONSTINTEGER LLREALAVAIL=1<<AMDAHL!1<<IBM!1<<IBMXA!1<<EMAS
%CONSTINTEGER TARGET=IBMXA
==== ercc07/ifast22s.txt ====
!
! Chnages for IFAST22
!
! 1) uses more chain space
! 2) Better queueing within cylinders for transfers
! 3) more selective use of seek ans set sector
!
!
! Changes for vsn 21
! 1) New format for store array to allow for bigger AMT
! 2) Conditional compilation of Q REQUEST and other non xa rts
!
%INCLUDE "ercc07:ibmsup_comf370"
%INCLUDE "ercc07:ibmsup_page0f"
%INCLUDE "ercc07:ibmsup_dtform2s"
%INCLUDE "ercc07:ibmsup_xaioform"
%RECORD %FORMAT PARMF(%INTEGER DEST,SRCE,(%INTEGER P1,P2,P3,P4,P5,
P6 %OR %STRING (23) TEXT))
%CONST %INTEGER PCELLSIZE=36,MARGIN=48
%RECORD %FORMAT PDOPEF(%INTEGER CURRMAX,MAXMAX,FIRST UNALLOC,LAST UNALLOC,NEXTPAGE,S1,
S2,S3,S4)
==== ercc07/tlinkv7.txt ====
parm map
link ,separeas
ercc07:isupv710y
ercc07:ifastv79y
ercc07:idevv716y
ercc08:ioperv74y
ercc07:icomv78y
ercc07:iprintv73y
ercc15:itape.Y7
ercc27:icomms.y12
ercc08:ienterv72y
ercc07:indiagv72y
.end
isupz
isupfix isupz,isupt,isupl
disconnect isupt
parm nocheck
==== ercc07/m88kp403s.txt ====
! changes applied for risc development retrofitted (GEM 5/10/89)
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
! Opnd2 is either a 32 bit const with the size (ACC) as value or
! the ptr or arrayhead as normal operand.
!
! VMY X1 is now dim<<28!maxdim<<24!array name(where known)
! Opnd2 is either a 32 bit const with DV offset into const area or
! the arrayhead as a standard operand
!
! AINDX X1 is ELSIZE<<20 !spare
! Opnd2 is arrayhead as standard operand
! NOTE:- The Operands have been swopped for consistency with norm.
==== ercc07/put8s.txt ====
{*********************}
{* EMAS 370 *}
{* PUT INTERFACE *}
{* April 22 1985 *}
{*********************}
{*Date of Change:13 Feb 86*}
{*Description of Change:Correction to fixups to code area*}
{*Name of Person Responsible:Rob Pooley*}
{*User Number:ercs20*}
%CONST %STRING (31) PutVersion= "PUT: version 13th February 1986"
{ These are the low level code and object generation routines which are common}
{ to our XA compilers in the EMAS 370 environment. }
{April 22nd - Began move to new object file format. Incorporated LPUT functions}
{ April 18th - added Fortran features: Switch Val and Entry }
==== ercc07/docs_standards.txt ====
@h[Compiler Standards for EMAS(3)]
@b[1. @u[Introduction]]
Unlike 2900 series, IBM 370-XA provides no facilities or assistance for
executing stack-based procedures. To provide cross language calling and
advanced facilities like dynamic loading a carefully thought-out set of
conventions must be followed. The conventions proposed here follow those of
EMAS(1) with slight changes to permit array slicing and cross memory (i.e.
inward) calls.
@b[2. @u[Register Conventions]]
When any EMAS(3) program is executing, GR11 is used as the stack top and it
is kept 8-byte-aligned (for efficient fetching). The stack may be multi-segment
- segment boundaries have no significance (unlike 2900). GR12 points to the head
of the shareable (pure) part of the program and is used to provide
addressibility. Program sharing requires that code executes correctly at
==== ercc07/ibmconvert_doc.txt ====
IBM OBJECT MODULE UTILITIES
1 USING THE UTILITIES
1.1 CONVERTING A FILE
1.2 INVOKING THE CONVERTER ROUTINE
1.3 DUMPING AN OBJECT MODULE
1.4 LOADING THE MODULES
2 OVERVIEW OF CONVERTER ACTIONS
2.1 COALESCING AREAS
2.2 ESD DICTIONARY
2.3 GENERATION OF AREAS
2.4 INITIALISATION DATA
2.5 RELOCATION PROCESSING
2.6 END CARD
3 BUILDING THE UTILITIES
==== ercc07/ifast23s.txt ====
!
! Changes for IFAST23
! 1) Incorporation of C SCH to help clear down FEPs
!
! Changes for IFAST22
!
! 1) uses more chain space
! 2) Better queueing within cylinders for transfers
! 3) more selective use of seek ans set sector
!
!
! Changes for vsn 21
! 1) New format for store array to allow for bigger AMT
! 2) Conditional compilation of Q REQUEST and other non xa rts
!
%INCLUDE "ercc07:ibmsup_comf370"
%INCLUDE "ercc07:ibmsup_page0f"
%INCLUDE "ercc07:ibmsup_dtform2s"
%INCLUDE "ercc07:ibmsup_xaioform"
%RECORD %FORMAT PARMF(%INTEGER DEST,SRCE,(%INTEGER P1,P2,P3,P4,P5,
P6 %OR %STRING (23) TEXT))
==== ercc07/m88kp404s.txt ====
!
! Changes to reduce confusion over dummy parameter pushed for
! alignment purposes (Mostly but not entirely in PARDESLIST
! PDS nov 89
!
! changes applied for risc development retrofitted (GEM 5/10/89)
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
! Opnd2 is either a 32 bit const with the size (ACC) as value or
! the ptr or arrayhead as normal operand.
!
! VMY X1 is now dim<<28!maxdim<<24!array name(where known)
! Opnd2 is either a 32 bit const with DV offset into const area or
==== ercc07/make88k_gen5.txt ====
parm nocheck
edit drsgen05s,dgens
a/%incl/d1i<itrimp_hostcodes>
a'd1i<ercs01:ebits_ecodes28>
a'd1i<tripcnsts>
a'd1i<itrimp_tform2s>
a'd1i<ercs01:ebits_especs5>
ta/host=/r6i/DRS/
e
imp dgens,.null
transfer dgens,castle(ercc07,pete)impdir/sources/d386p4s10.i,file
==== ercc07/trimp_perqptwoas.txt ====
%TRUSTEDPROGRAM
%EXTERNALROUTINE ICL9CEZPERQIMP
%CONSTINTEGER RELEASE=4
%INCLUDE "ERCC07.TRIMP_HOSTCODES"
%CONSTINTEGER HOST=EMAS
%CONSTINTEGER TARGET=PERQ
%CONSTINTEGER STANDARDPT=X'41'
%CONSTINTEGER MINAPT=X'41'; ! MINIMUM PTYPE FOR WHICH ARITHMETIC
! OPERATORS ARE AVAILABLE
%CONSTINTEGER MINAPREC=MINAPT>>4
%CONSTHALFINTEGERARRAY TYPEFLAG(0:12)=0,
X'51'{%INTEGER},
X'52'{%REAL},
X'8009'{%LONG SOMETHING},
X'4031'{%BYTE},
X'35'{%STRING},
X'6051'{%HALF->%INTEGER+WARNING},
X'4041'{%SHORT},
X'33'{%RECORD},
0,
X'1051'{%LONG INTEGER FAULT},
==== ercc07/ibmsup_strrts.txt ====
%EXTERNALROUTINESPEC ETOI %ALIAS "S#ETOI"(%INTEGER AD,L)
%EXTERNALROUTINESPEC ITOE %ALIAS "S#ITOE" (%INTEGER AD,L)
%EXTERNALSTRING(255)%FN EXTRACT VALUE(%STRING(*)%NAME REF,%INTEGERNAME FLAG)
!***********************************************************************
!* RETURNS THE VALUE OF REF ALTERING STRING FORMATS TO IMP *
!***********************************************************************
%INTEGER I,J,K,SP,AD
%SHORTINTEGER L,F
%SWITCH SW(0:5)
%STRING(255)RES
*LM_0,1,REF
*ST_1,AD
*STH_0,L
*SRL_0,16
*STH_0,F
FLAG=0
%IF F<5 %THEN ->SW(F)
SW(1): ! IMP LONGSTRING
FLAG=1
INV: %RESULT="INVALID M-L STRING FOR EXTRACT VALUE"
==== ercc07/ifast24s.txt ====
!
! Changes for IFAST23
! 1) Incorporation of C SCH to help clear down FEPs
!
! Changes for IFAST22
!
! 1) uses more chain space
! 2) Better queueing within cylinders for transfers
! 3) more selective use of seek ans set sector
!
!
! Changes for vsn 21
! 1) New format for store array to allow for bigger AMT
! 2) Conditional compilation of Q REQUEST and other non xa rts
!
%INCLUDE "ercc07:ibmsup_comf370"
%INCLUDE "ercc07:ibmsup_page0f"
%INCLUDE "ercc07:ibmsup_dtform2s"
%INCLUDE "ercc07:ibmsup_xaioform"
%RECORD %FORMAT PARMF(%INTEGER DEST,SRCE,(%INTEGER P1,P2,P3,P4,P5,
P6 %OR %STRING (23) TEXT))
==== ercc07/vaxcom_clinkd.txt ====
$ link/debug/map imp80,pim,vp1,vp2,vpo,vp4,cserv,vbgen,vput,compio,vaxiocp,csrce,penv,vndiag,sys$input/opt
sys$share:vaxcrtl.exe/share
==== ercc07/m88kp405s.txt ====
!
! Changes 22Feb90 to pass types to the ecode generator Vsn 5
!
! Changes to reduce confusion over dummy parameter pushed for
! alignment purposes (Mostly but not entirely in PARDESLIST
! PDS nov 89
!
! changes applied for risc development retrofitted (GEM 5/10/89)
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
! Opnd2 is either a 32 bit const with the size (ACC) as value or
! the ptr or arrayhead as normal operand.
!
==== ercc07/pdiags2s.txt ====
!*
!*
!***********************************************************************
!***********************************************************************
!* *
!* P A S C A L P O S T M O R T E M D I A G N O S T I C S *
!* *
!***********************************************************************
!***********************************************************************
!*
!*
!* History
!* -------
!*
!* Version 1 for PERQ2.
!*
%CONST %INTEGER PERQ2= 0;
%CONST %INTEGER PERQ3= 1;
%CONST %INTEGER AMDAHL= 2;
%CONST %INTEGER GOULD= 3;
%CONST %INTEGER HOST= AMDAHL
==== ercc07/makedrs_opt.txt ====
edit opt03s,dpos
i<itrimp_drsoptas>
ta/%inc/
d1i<itrimp_hostcodes>
a'
d1i<itrimp_tform2s>
a'
d1i<tripcnsts>
ta/host=/r6i/DRS/
e
imp dpos,.null
transfer dpos,castle(ercc07,pete)impdir/sources/d386popts10.i,file
==== ercc07/makevax_cserv.txt ====
edit cserv01s,cs1s
a/%inc/d1i<ercc07:itrimp_hostcodes>
a'd1i<ercc07:itrimp_tform2s>
ta/host=/i/vax
/d1p1
e
vaximp cs1s,cs1xx
transfer cs1xx,ercvax(ercc07,peathag)cserv.obj,file,bin
destroy cs1s
==== ercc07/pdiags3s.txt ====
!*
!*
!***********************************************************************
!***********************************************************************
!* *
!* P A S C A L P O S T M O R T E M D I A G N O S T I C S *
!* *
!***********************************************************************
!***********************************************************************
!*
!*
!* History
!* -------
!*
!* Version 1 for PERQ2.
!*
%CONST %INTEGER PERQ2= 0;
%CONST %INTEGER PERQ3= 1;
%CONST %INTEGER AMDAHL= 2;
%CONST %INTEGER GOULD= 3;
%CONST %INTEGER HOST= AMDAHL
==== ercc07/docs_wplangsup.txt ====
Memo to:Dr. G.E.Thomas
Report of the Working Party on Languages.
I draw your attention to my Memo 0f 30.11.81 and I attach a copy. The lack
of expertise I commented on then has resulted in a report based on serious
misunderstandings of some of the technical issues.
Comments on section B
______________________
There is general lack of distinction between the benefits of language
design, the benefits of International Standards and the benefits of User
expertise. A nebulous cloak of the value of "integration" and "support" is cast
lightly over this whole area. The benefits Imp is alleged to gain from
"integration" with EMAS is almost entirely a myth. Similarly efforts devoted
to providing better "integration" of Pascal and Fortran will be largely wasted
unless the International Standards are abandoned.
==== ercc07/trimp_pnxps01.txt ====
43
D(NAME)
D(ICONST)
D(CONST)
D(DUMMYSTART)
D(N)
D(S)
D(TEXT)
D(BIGHOLE)
D(N255)
D(HOLE)
D(MARK)
D(READLINE?)
D(TEXTTEXT)
D(DUMMYAPP)
D(DOWN)
D(UP)
D(LISTON)
D(LISTOFF)
D(COLON)
D(NOTECONST)
==== ercc07/vaxsup_imp80cld.txt ====
MODULE imp80_table
IDENT "IMP80 - Modified/Created July 1989"
DEFINE VERB IMP80
QUALIFIER LIST, NEGATABLE
QUALIFIER DIAG, NEGATABLE
QUALIFIER CHECK, NEGATABLE
QUALIFIER ARRAY, NEGATABLE
QUALIFIER TRACE, NEGATABLE
QUALIFIER OPT, NONNEGATABLE
QUALIFIER LINE, NEGATABLE
QUALIFIER MAP, NONNEGATABLE
QUALIFIER CODE, NEGATABLE
QUALIFIER PARZ, NEGATABLE
QUALIFIER PARY, NEGATABLE
QUALIFIER PARX, NEGATABLE
QUALIFIER MAXDICT, NEGATABLE
DISALLOW OPT AND (CHECK OR ARRAY OR DIAG)
ROUTINE imp_command
PARAMETER P1,PROMPT="Source file",LABEL=SOURCEFILE,VALUE(REQUIRED,TYPE=$FILE)
==== ercc07/docs_libaut.txt ====
Library Automation
___________________
a) Overview
Library computing was initially conceived as primarily an internal
automation project with little wider relevance. The aims were the automation of
circulation, acquisition and serial control together with the transfer of the
catalogue from a manual to an electronic format. The latter is a prodigious
project taking seven years and requiring the aid of staff supplied by the
Manpower service Agency.
A specialized supplier of library equipment, GEAC, was chosen for the first
contract and their offering, a GEAC 8000, was installed. By the later half of
the 1980s the machine was overloaded and a new machine was required. A difficult
choice presented itself; the claims of compatibility pointed to a further GEAC
machine whilst the wider aspects of the Library's role in information technology
suggested a machine with secure and powerful communications. In fact a further
GEAC, the 9000, has been installed and the transfer of work has begun.
==== ercc07/vaxndiag.txt ====
!
!********************************************
!*
!* VAX/VMS NDIAG - IMP monitors and trapped errors
!* come here. This routine cycles
!* down the stack, calling a lang.
!* dept. routine to analyse each frame
!*
!*************************************************
%CONST %INTEGER extramon=1
%ROUTINE %SPEC Indiag(%INTEGER LNB,GP,ADIAGS,ADIDIA,mode,diag,asize,first,
%INTEGER %NAME flag)
%EXTERNAL %ROUTINE %SPEC Fdiag(%INTEGER LNB,gla,PC,ADIAGS,first, %INTEGER %NAME next)
!%EXTERNAL %INTEGER %MAP %SPEC COMREG %ALIAS "S#COMREGMAP"(%INTEGER n)
%EXTERNAL %ROUTINE %SPEC phex(%INTEGER n)
%INTEGER %FN %SPEC validate(%INTEGER ad)
%OWN %INTEGER ignore
==== ercc07/makegld_opt.txt ====
offer gldpos
parm nocheck,nolist
edit opt03s,gldpos
i<itrimp_gldoptas>
ta/%inc/
d1i<itrimp_hostcodes>
a'
d1i<itrimp_tform2s>
a'
d1i<tripcnsts>
e
imp gldpos,.null
offer gldpos,ercs01
==== ercc07/scaler.txt ====
%ROUTINE scalereg(%INTEGER reg,scale)
!***********************************************************************
!* Performs a simple shift optimising shifts by 0 & 1 *
!* While were are working to the LARGE Unix model arrays *
!* are restricted to 64K bytes hence any index can not be larger *
!* than 16 bits after scaling and can use 16 bit instructions *
!* If we move to the HUGE model then this routine will have to *
!* do 32 shifts with only 16 bit instructions -- Repulsive *
!***********************************************************************
%IF scale<=0 %THEN %RETURN
%IF scale=1 %THEN OpRRS(ADD,reg+1,reg+1) %ELSE OpLit(SHL,scale,reg+1)
%END
%END %OF %FILE
==== ercc07/pdiags4s.txt ====
!*
!*
!***********************************************************************
!***********************************************************************
!* *
!* P A S C A L P O S T M O R T E M D I A G N O S T I C S *
!* *
!***********************************************************************
!***********************************************************************
!*
!*
!* History
!* -------
!*
!* Version 1 for PERQ2.
!*
%CONST %INTEGER PERQ2= 0;
%CONST %INTEGER PERQ3= 1;
%CONST %INTEGER AMDAHL= 2;
%CONST %INTEGER GOULD= 3;
%CONST %INTEGER HOST= AMDAHL
==== ercc07/trimp_cserv01s.txt ====
%INCLUDE "ERCC07.TRIMP_HOSTCODES"
%CONSTINTEGER HOST=EMAS
%INCLUDE "ERCC07.TRIMP_TFORM1S"
%OWNINTEGERNAME ASL
%OWNRECORD(LISTF)%ARRAYNAME ASLIST
%EXTRINSICRECORD(WORKAF)WORKA
%EXTRINSICRECORD(PARMF)PARM
%EXTERNALROUTINE MOVE BYTES(%INTEGER LENGTH,FBASE,FOFF,TOBASE,TOOFF)
!************************************************************************
!* A MOVE BYTES ROUTINE THAT WILL WORK ON WORD&BYTE ADDRESS M-CS *
!***********************************************************************
%INTEGER I
AGN:
%RETURN %IF LENGTH<=0
%IF HOST=EMAS %START; ! EMAS BYTE ADDRESSES
I=X'18000000'+LENGTH
*LDA_TOBASE; *INCA_TOOFF; *LDTB_I
*LSS_FBASE; *IAD_FOFF; *LUH_I
*MV_%L=%DR
%FINISH
%IF HOST=PERQ %START; ! WORD ADDRESS+BYTE OFFSET
==== ercc07/cserv01s.txt ====
%INCLUDE "ERCC07:ITRIMP_HOSTCODES"
%CONSTINTEGER HOST=AMDAHL
%INCLUDE "ERCC07:itrimp_TFORM2S"
%OWNINTEGERNAME ASL
%OWNRECORD(LISTF)%ARRAYNAME ASLIST
%EXTRINSICRECORD(WORKAF)WORKA
%EXTRINSICRECORD(PARMF)PARM
%EXTERNALROUTINE MOVE BYTES(%INTEGER LENGTH,FBASE,FOFF,TOBASE,TOOFF)
!************************************************************************
!* A MOVE BYTES ROUTINE THAT WILL WORK ON WORD&BYTE ADDRESS M-CS *
!***********************************************************************
%INTEGER I
AGN:
%RETURN %IF LENGTH<=0
%IF HOST=EMAS %START; ! EMAS BYTE ADDRESSES
I=X'18000000'+LENGTH
*LDA_TOBASE; *INCA_TOOFF; *LDTB_I
*LSS_FBASE; *IAD_FOFF; *LUH_I
*MV_%L=%DR
%FINISH %else %IF HOST=PERQ %START; ! WORD ADDRESS+BYTE OFFSET
FBASE=FBASE+FOFF>>1
==== ercc07/ibmsup_comformat.txt ====
!
%recordformat COMF(%integer OCPTYPE,SLIPL,TOPS,SEPGS,NDISCS,NSLDEVS,DLVNADDR,
{1C} DITADDR,SLDEVTABAD,STEER INT,DIRSITE,DCODEDA,SUPLVN,TOJDAY,DATE0,DATE1,
{40} DATE2,TIME0,TIME1,TIME2,PAGESIZE,USERS,CATTAD,SERVAAD,NOCPS,ITINT,RATION,
{6C} TRANS, %longinteger KMON, %integer SUPVSN,SECSFRMN,SECSTOCD,SYNC1DEST,
{88} SYNC2DEST,ASYNCDEST,MAXPROCS,INSPERSEC,ELAPHEAD,COMMSRECA,STOREAAD,
{A4} PROCAAD,TSLICE,FEPS,MAXCBT,PERFORMAD,CURPROC,INPTR,OUTPTR,
{C4} PARM ASLA,KERNELQA,RUNQ1A,RUNQ2A,CHANNELT,PROC PICTAD,SCHANNELQ,CPUID,IPLTIME,Failingport,S2,
%INTEGER %ARRAY OCP Port,OCP Prefix,OCP Proc(1:4),%integer END)
!
%endoffile
==== ercc07/pasc01s.txt ====
!*
!*
!***********************************************************************
!***********************************************************************
!* *
!* P A S C A L R U N T I M E S U P P O R T L I B R A R Y *
!* *
!***********************************************************************
!***********************************************************************
!*
!*
!* History
!* -------
!*
!* Version 1.0 for Perq2 and Perq3. (agh)
!*
%CONSTINTEGER PERQ2= 0;
%CONSTINTEGER PERQ3= 1;
%CONSTINTEGER AMDAHL= 2;
%CONSTINTEGER GOULD= 3;
%CONSTINTEGER HOST= AMDAHL
==== ercc07/ibmconvert_sconvibm.txt ====
%CONSTINTEGER DEBUG=0
!
!
!
%RECORDFORMAT OBJFILE( %C
%INTEGER LNTH, {LENGTH OF FILE}
CODESTRT, {START OF CODE FROM START FILE}
PHYSSIZE, {PHYSICAL START OF FILE}
FILETYPE, {FILE TYPE 1}
SUMCHK, {SUM CHECK (OPTIONAL)}
DATETIME, {OF LAST WRITE TO FILE}
LOADDATA, {OFFSET FROM START OF FILE}
FILEMAP) {OFFSET FROM START OF FILE}
!
!
%RECORDFORMAT AREAF( %C
%INTEGER START, {OFFSET OF START OF THE AREA}
LNTH, {LENGTH OF THE AREA}
PROP) {PROP. TO BE ASSOCIATED WITH THE AREA}
%RECORDFORMAT MAPF(%C
%INTEGER NO AREAS,
==== ercc07/docs_scifac.txt ====
Science Faculty
===============
The Science Faculty have been heavy computer users for many years and most
have used EMAS at some stage in the last decade. These departments group
themselves naturally into three section - allowing for some large and diverse
departments like Physics to appear in more than one section.
Group A: Researchers into aspects of Computing.
These include Artificial Intelligence, Artificial Intelligence
Application Institute, Computer Science, Mechanical and Electrical
Engineering, Centre for Speech Technology and Cognitive Science.
This group is primarily based on Workstations linked by LAN and has
the most advanced equipment in the University
Group B: The Collaborators
These include School of Agriculture,Genetics, Molecular Biology,
==== ercc07/ebits_ecodes13.txt ====
!
!************************************************************************
!* *
!* G.E.Millard *
!* ECODES13 24/12/86 *
!* *
!************************************************************************
!
{00} %constinteger HALT = 0
!
!--------------------------------------- generic int operations -------
!
{01} %constinteger IADD = 1 { (Etos-1) + (Etos) => (Etos) }
{02} %constinteger ISUB = 2 { (Etos-1) - (Etos) => (Etos) }
{03} %constinteger IMULT = 3 { (Etos-1) * (Etos) => (Etos) }
{04} %constinteger IDIV = 4 { (Etos-1) / (Etos) => (Etos) }
{05} %constinteger INEG = 5 { - (Etos) => (Etos) }
{06} %constinteger IABS = 6 { abs( (Etos) ) => (Etos) }
{07} %constinteger IREM = 7 { remainder from }
{ (Etos-1) / (Etos)=> (Etos) }
!
==== ercc07/pasc02s.txt ====
!*
!*
!***********************************************************************
!***********************************************************************
!* *
!* P A S C A L R U N T I M E S U P P O R T L I B R A R Y *
!* *
!***********************************************************************
!***********************************************************************
!*
!*
!* History
!* -------
!*
!* Version 1.0 for Perq2 and Perq3. (agh)
!*
%CONSTINTEGER PERQ2= 0;
%CONSTINTEGER PERQ3= 1;
%CONSTINTEGER AMDAHL= 2;
%CONSTINTEGER GOULD= 3;
%CONSTINTEGER HOST= AMDAHL
==== ercc07/vnsgen00s.txt ====
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
! Opnd2 is either a 32 bit const with the size (ACC) as value or
! the ptr or arrayhead as normal operand.
!
! VMY X1 is now dim<<28!maxdim<<24!array name(where known)
! Opnd2 is either a 32 bit const with DV offset into const area or
! the arrayhead as a standard operand
!
! AINDX X1 is ELSIZE<<20 !spare
! Opnd2 is arrayhead as standard operand
! NOTE:- The Operands have been swopped for consistency with norm.
!
==== ercc07/ebits_ecodes19.txt ====
!
!************************************************************************
!* *
!* G.E.Millard *
!* ECODES19 23/04/87 *
!* *
!************************************************************************
!
{00} %constinteger HALT = 0
!
!--------------------------------------- generic int operations -------
!
{01} %constinteger IADD = 1 { (Etos-1) + (Etos) => (Etos) }
{02} %constinteger ISUB = 2 { (Etos-1) - (Etos) => (Etos) }
{03} %constinteger IMULT = 3 { (Etos-1) * (Etos) => (Etos) }
{04} %constinteger IDIV = 4 { (Etos-1) / (Etos) => (Etos) }
{05} %constinteger INEG = 5 { - (Etos) => (Etos) }
{06} %constinteger IABS = 6 { abs( (Etos) ) => (Etos) }
{07} %constinteger IREM = 7 { remainder from }
{ (Etos-1) / (Etos)=> (Etos) }
!
==== ercc07/makeobfiles.txt ====
%begin
%externalroutinespec emas3(%stringname com,params,%integername flag)
%externalstring(8)%fnspec itos %alias "S#ITOS"(%integer n)
%routinespec out(%integer n)
%integer i,j,k
emas3("define","st50,out",k)
select output(50)
newline
read(j); read(k)
%for i=j,1,k %cycle
!printstring("vaximp imp80tests_rt")
!out(i)
!printstring(",rt")
!out(i)
!printstring("y,rt"); out(i)
!printstring("l")
!newline
!printstring("transfer imp80tests_rt"); out(i)
!printstring(",ercvax(ercc07,peathag)rt"); out(i)
!printstring(".imp,file,nomail")
printstring("$ run imp80
==== ercc07/makevns_opt.txt ====
edit opt03s,vpos
i<itrimp_vnsoptas>
ta/%inc/
d1i<itrimp_hostcodes>
a'
d1i<itrimp_tform2s>
a'
d1i<tripcnsts>
e
imp vpos,.null
offer vpos,eepz06
==== ercc07/ebits_ecodes21.txt ====
!
!************************************************************************
!* *
!* G.E.Millard *
!* ECODES21 18/09/87 *
!* *
!************************************************************************
!
{00} %constinteger HALT = 0
!
!--------------------------------------- generic int operations -------
!
{01} %constinteger IADD = 1 { (Etos-1) + (Etos) => (Etos) }
{02} %constinteger ISUB = 2 { (Etos-1) - (Etos) => (Etos) }
{03} %constinteger IMULT = 3 { (Etos-1) * (Etos) => (Etos) }
{04} %constinteger IDIV = 4 { (Etos-1) / (Etos) => (Etos) }
{05} %constinteger INEG = 5 { - (Etos) => (Etos) }
{06} %constinteger IABS = 6 { abs( (Etos) ) => (Etos) }
{07} %constinteger IREM = 7 { remainder from }
{ (Etos-1) / (Etos)=> (Etos) }
!
==== ercc07/algtests_at100.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'I,
'ARRAY' A[ 1 : 1 ];
I := A[1] := 1;
OUTREAL(99, I + A[1])
'END'
==== ercc07/algtests_at101.txt ====
'BEGIN'
'INTEGER'
X,
Y;
X := + 2Y := - 3;
'IF' X < - Y 'THEN'
'END'
==== ercc07/algtests_at102.txt ====
'BEGIN'
'INTEGER'
X,
Y;
X :=;
'END'
==== ercc07/algtests_at103.txt ====
'BEGIN'
'INTEGER'
X,
Y;
X := + 3 := Y
'END'
==== ercc07/algtests_at104.txt ====
'BEGIN'
'REAL'
W,
V;
'REAL'
X,
Y,
Z;
X := + 6.0;
Y := - 2.931;
Z := 4^.2;
W := 10, 000;
'END'
==== ercc07/algtests_at105.txt ====
'BEGIN'
'REAL'
V;
V := 3.5&( - 3);
'END'
==== ercc07/pasc03s.txt ====
!*
!*
!***********************************************************************
!***********************************************************************
!* *
!* P A S C A L R U N T I M E S U P P O R T L I B R A R Y *
!* *
!***********************************************************************
!***********************************************************************
!*
!*
!* History
!* -------
!*
!* Version 1.0 for Perq2 and Perq3. (agh)
!* 29/04/86 - Fix field-width bug in WriteWord.
!* 03/05/86 - Introduce CheckName to validate file names.
!* 05/05/86 - Revised treatment of file names. Remove close error
!* check from reset, rewrite and append. Add New3 and
!* Dispose3.
!* 06/05/86 - In ExtendHeap chain blocks correctly.
==== ercc07/algtests_at106.txt ====
'BEGIN'
'COMMENT' LIBRARY 1;
'INTEGER'
N;
'REAL'
R;
N := 2;
R := 2.5&N;
OUTREAL(99, R);
'END'
==== ercc07/plink01.txt ====
#mon
link ,map
ERCS12:pobject.OPTIONS5Y
ERCS12:pobject.ANALYSER7Y
ERCS12:pobject.ASSGNCODE5Y
ERCS12:pobject.CODEINIT7Y
ERCS12:pobject.CTLSTRUCT9Y
ERCS12:pobject.DATAREPS7Y
ERCS12:pobject.DIAGS3Y
ERCS12:pobject.DUMP5Y
ERCS12:pobject.EXPEVAL19Y
ERCS12:pobject.GENERATOR4Y
ERCS12:pobject.LEXICAL3Y
ERCS12:pobject.MAIN5Y
ERCS12:pobject.PROGPARAM1Y
ERCS12:pobject.PROLOGUE2Y
ERCS12:pobject.SEMANTICS8Y
ERCS12:pobject.SOURCE5Y
ERCS12:pobject.STDPROCS8Y
ERCS12:pobject.SYNTAX1Y
ERCS12:pobject.VARREF9Y
==== ercc07/make88k_p1.txt ====
edit poneb02s,m88p102s
i<itrimp_m88kponeas>
ta/%inc/
d1i<itrimp_hostcodes>
a'
d1i<itrimp_tform2s>
m/%constlonglongreal/
ta/host=/i/PERQ3
/d
1e
imp m88p102s,m88p1y
permit m88p102s
==== ercc07/tripcnsts.txt ====
!
! FIRST THE OPERAND FLAG CONSTANTS
!
%CONSTINTEGER SCONST=0; ! CONST UPTO 64 BITS value is carried
! in opnd_d and opnd_xtra
%CONSTINTEGER LCONST=1; ! CONST LONGER THAN SCONST const can be
! found elsewhere(at top of ar) by
! meanse of base&offset inf in_d and _xtra
%CONSTINTEGER DNAME=2; ! NAME BY DICTIONARY NO the base and disp in
! the dictionary after adjusting by
! possible offset for item in
! in records lead to the variable
%CONSTINTEGER ARNAME=3; ! NAME BY AR POINTER opnd_d the ar pointer
! this form local to pass2
! and used to identify functions
! with params before the call
! is planted
%CONSTINTEGER VIAPTR=4; ! VIA TRIPLE WITHOFFSET TO POINTER
! At an offset(_xtra) from address in
! referenced triple can be found a
! pointer to the required operand
==== ercc07/ebits_ecodes28.txt ====
! Copyright (c) 1987 Edinburgh Portable Compilers Ltd. All Rights Reserved.
!
!************************************************************************
!* *
!* G.E.Millard *
!* ECODES28 09/2/88 *
!* *
!************************************************************************
!
{00} %constinteger HALT = 0
!
!--------------------------------------- generic int operations -------
!
{01} %constinteger IADD = 1 { (Etos-1) + (Etos) => (Etos) }
{02} %constinteger ISUB = 2 { (Etos-1) - (Etos) => (Etos) }
{03} %constinteger IMULT = 3 { (Etos-1) * (Etos) => (Etos) }
{04} %constinteger IDIV = 4 { (Etos-1) / (Etos) => (Etos) }
{05} %constinteger INEG = 5 { - (Etos) => (Etos) }
{06} %constinteger IABS = 6 { abs( (Etos) ) => (Etos) }
{07} %constinteger IREM = 7 { remainder from }
{ (Etos-1) / (Etos)=> (Etos) }
==== ercc07/algtests_at107.txt ====
'BEGIN'
'REAL'
X,
Y,
Z;
Y := 2.0;
X := 2.5;
Z := 5Y * (2 + X);
'END'
==== ercc07/plink02.txt ====
link ,map
ERCS12:pobject.OPTIONS5Y
ERCS12:pobject.ANALYSER7Y
ERCS12:pobject.ASSGNCODE5Y
ERCS12:pobject.CODEINIT7Y
ERCS12:pobject.CTLSTRUCT9Y
ERCS12:pobject.DATAREPS7Y
ERCS12:pobject.DIAGS3Y
ERCS12:pobject.DUMP5Y
ERCS12:pobject.EXPEVAL19Y
ERCS12:pobject.GENERATOR4Y
ERCS12:pobject.LEXICAL3Y
ERCS12:pobject.MAIN5Y
ERCS12:pobject.PROGPARAM1Y
ERCS12:pobject.PROLOGUE2Y
ERCS12:pobject.SEMANTICS8Y
ERCS12:pobject.SOURCE5Y
ERCS12:pobject.STDPROCS8Y
ERCS12:pobject.SYNTAX1Y
ERCS12:pobject.VARREF9Y
ERCS12:pobject.WITHSTMTS2Y
==== ercc07/algtests_talgcomp.txt ====
algol ercc07:algtests_at1,ay,.out
run ay
algol ercc07:algtests_at2,ay,.out
run ay
algol ercc07:algtests_at3,ay,.out
run ay
algol ercc07:algtests_at4,ay,.out
run ay
algol ercc07:algtests_at5,ay,.out
run ay
algol ercc07:algtests_at6,ay,.out
run ay
algol ercc07:algtests_at7,ay,.out
run ay
algol ercc07:algtests_at8,ay,.out
run ay
algol ercc07:algtests_at9,ay,.out
run ay
algol ercc07:algtests_at10,ay,.out
run ay
algol ercc07:algtests_at11,ay,.out
==== ercc07/make88k_p2.txt ====
edit timp06s,m88p206s
i<itrimp_m88kptwoas>
ta/%inc/
d1i<itrimp_hostcodes>
a'
d1i<tripcnsts>
a'
d1i<itrimp_tform2s>
ta/host=/i/PERQ3
/d1
e
imp m88p206s,y
permit m88p206s
==== ercc07/ebits_ecodes29.txt ====
! Copyright (c) 1987 Edinburgh Portable Compilers Ltd. All Rights Reserved.
!
!************************************************************************
!* *
!* G.E.Millard *
!* ECODES28 09/2/88 *
!* *
!************************************************************************
!
{00} %constinteger HALT = 0
!
!--------------------------------------- generic int operations -------
!
{01} %constinteger IADD = 1 { (Etos-1) + (Etos) => (Etos) }
{02} %constinteger ISUB = 2 { (Etos-1) - (Etos) => (Etos) }
{03} %constinteger IMULT = 3 { (Etos-1) * (Etos) => (Etos) }
{04} %constinteger IDIV = 4 { (Etos-1) / (Etos) => (Etos) }
{05} %constinteger INEG = 5 { - (Etos) => (Etos) }
{06} %constinteger IABS = 6 { abs( (Etos) ) => (Etos) }
{07} %constinteger IREM = 7 { remainder from }
{ (Etos-1) / (Etos)=> (Etos) }
==== ercc07/algtests_at108.txt ====
'BEGIN'
'REAL'
Y1,
Y2;
Y1 := Y2 := 1;
REPEAT :;
'IF' Y1 > 0 'THEN'
'GOTO' STOP'GOTO' REPEAT;
STOP :;
'END'
==== ercc07/plink03.txt ====
link ,map
ercc07:OPTIONS5Y
ERCC07:ANALYSER7Y
ercc07:ASSGNCODE5Y
ercc07:CODEINIT7Y
ercc07:CTLSTRUCT9Y
ercc07:DATAREPS7Y
ercc07:DIAGS3Y
ercc07:DUMP5Y
ercc07:EXPEVAL9Y
ercc07:GENERATOR4Y
ercc07:LEXICAL3Y
ercc07:MAIN5Y
ercc07:PROGPARAM1Y
ercc07:PROLOGUE2Y
ercc07:SEMANTICS8Y
ercc07:SOURCE5Y
ercc07:STDPROCS8Y
ercc07:SYNTAX1Y
ercc07:VARREF9Y
ercc07:WITHSTMTS2Y
==== ercc07/make88k_p3.txt ====
edit opt04s,m88p305s
i<itrimp_M88Koptas>
ta/%inc/
d1i<itrimp_hostcodes>
a'
d1i<itrimp_tform2s>
a'
d1i<tripcnsts>
e
imp m88p305s,.null
permit m88p305s
==== ercc07/algtests_at109.txt ====
'BEGIN'
'REAL'
X,
Y,
Z;
X := 6.0;
5.0;
Y := - 2.931;
Z := 4^.2;
'END'
==== ercc07/plink04.txt ====
link ,map
ercs12:pobject.OPTIONS6y
ercs12:pobject.ANALYSER7x
ercs12:pobject.ASSGNCODE5x
ercs12:pobject.CODEINIT7x
ercs12:pobject.CTLSTRUCT9x
ercs12:pobject.DATAREPS7x
ercs12:pobject.DIAGS3x
ercs12:pobject.DUMP5x
ercs12:pobject.EXPEVAL9x
ercs12:pobject.GENERATOR4x
ercs12:pobject.LEXICAL3x
ercs12:pobject.MAIN5x
ercs12:pobject.PROGPARAM1x
ercs12:pobject.PROLOGUE2x
ercs12:pobject.SEMANTICS8x
ercs12:pobject.SOURCE5x
ercs12:pobject.STDPROCS8x
ercs12:pobject.SYNTAX1x
ercs12:pobject.VARREF9x
ercs12:pobject.WITHSTMTS2x
==== ercc07/make88k_p4.txt ====
parm nocheck
edit m88kp405s,m88p419s
a/%incl/d1i<itrimp_hostcodes>
a'd1i<ercs01:ebits_ecodes28>
a'd1i<tripcnsts>
a'd1i<itrimp_tform2s>
ta/host=/r6i/Perq3/
e
imp m88p419s,.null
permit m88p419s
==== ercc07/ebits_defs.txt ====
!*
%constinteger LitVal = 0 { lit }
%constinteger ConstVal = 1 { const }
%constinteger RegVal = 2 { (reg) }
%constinteger FregVal = 3 { (freg) }
%constinteger TempVal = 4 { (temp) }
%constinteger DirVal = 5 { (dir) }
%constinteger IndRegVal = 6 { ((reg)) }
%constinteger IndTempVal = 7 { ((temp)) }
%constinteger IndDirVal = 8 { ((dir)) }
%constinteger AddrConst = 9 { @const }
%constinteger AddrDir = 10 { @dir }
%constinteger RegAddr = 11 { (reg) is @ }
%constinteger TempAddr = 12 { (temp) is @}
%constinteger DirAddr = 13 { (dir) is @ }
%constinteger AddrDirMod = 14 { @dir+M }
%constinteger RegModAddr = 15 { (reg)+M }
%constinteger TempModAddr = 16 { (temp)+M }
%constinteger DirModAddr = 17 { (dir)+M }
%constinteger IndRegModVal = 18 { ((reg)+M) }
%constinteger IndTempModVal = 19 { ((temp)+M) }
==== ercc07/algtests_at110.txt ====
'BEGIN'
'INTEGER'
I.J;
I := 2;
J := 3;
'IF' I * J > I + J 'THEN'
'END'
==== ercc07/algtests_at111.txt ====
'BEGIN'
'REAL'
A,
X;
X := - 10.0;
A := ('IF' X < 0 'THEN' X - 1 'ELSE' 'IF' X > 1 'THEN' X + 1 'ELSE'
X;
'END'
==== ercc07/algtests_at112.txt ====
'BEGIN'
'REAL'
X;
Y;
Z;
X := + 6.0;
Y := - 2.931;
Z := 4^.2;
'END'
==== ercc07/algtests_at113.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'REAL'
A,
X;
X := 0.8;
A := ('IF' X >= 0 'AND' X <= 1 'THEN' X * X - 3 * X + 4 'ELSE'
0);
OUTREAL(A);
'END'
==== ercc07/algtests_at114.txt ====
'BEGIN'
'INTEGER' J,K;
'ARRAY' A(/0:3/);
K := 2;
'FOR' J := 1 'STEP' 1 'UNTIL' K
'BEGIN'
I := 0;
'END';
'END'
==== ercc07/ifix7s.txt ====
%CONSTSTRING (20) VERSION= "IFIX 7 19/8/86"
%CONSTINTEGER SEGSIZE= X'00040000'
%CONSTINTEGER IPUT=0,LPUT=1
!**** RECORD FORMATS ****
%RECORDFORMAT DIRINFF(%STRING (6) USER, %STRING (31) BATCHFILE, %INTEGER MARK,FSYS,PROCNO,
ISUFF,REASON,BATCHID,SESSICLIM,SCIDENSAD,SCIDENS,OPERNO,MSGFAD,SCDATE,SYNC1DEST,SYNC2DEST,
ASYNCDEST)
%RECORDFORMAT TABF(%STRING (31) NAME, %INTEGER I,J)
%RECORDFORMAT RF(%INTEGER AREALOC,BASELOC)
%RECORDFORMAT RELF(%INTEGER LINK,N, %RECORD (RF) %ARRAY R(1:4000))
%RECORDFORMAT OFMF(%INTEGER START,L,PROP)
%RECORDFORMAT RRF(%INTEGER CONAD,FILETYPE,DATASTART,DATAEND)
%RECORDFORMAT CENTF(%INTEGER LINK,(%INTEGER LOC, %STRING (31) IDEN %ORINTEGER CODE OFFSET,
GLA OFFSET,EP OFFSET,PWORD, %STRING (31) IDEN2))
%RECORDFORMAT DENTF(%INTEGER LINK,DISP,L,A, %STRING (31) IDEN)
%RECORDFORMAT CREFF(%INTEGER LINK,REFLOC, %STRING (31) IDEN)
%RECORDFORMAT DREFF(%INTEGER LINK,REFARRAY,L, %STRING (31) IDEN)
!**** SYSTEM AND EXTERNAL SPECS******
!%DYNAMICINTEGERFNSPEC BUILDSCT(%INTEGER OUTBASE, INBASE)
%EXTERNALINTEGERFNSPEC OUTSTREAM %ALIAS "S#OUTSTREAM"
==== ercc07/algtests_at115.txt ====
'BEGIN'
'INTEGER'
I,
J;
'REAL' 'ARRAY'
CAT(1 : 15);
'END'
==== ercc07/pasc04s.txt ====
!*
!*
!***********************************************************************
!***********************************************************************
!* *
!* P A S C A L R U N T I M E S U P P O R T L I B R A R Y *
!* *
!***********************************************************************
!***********************************************************************
!*
!*
!* History
!* -------
!*
!* Version 1.0 for Perq2 and Perq3. (agh)
!* 29/04/86 - Fix field-width bug in WriteWord.
!* 03/05/86 - Introduce CheckName to validate file names.
!* 05/05/86 - Revised treatment of file names. Remove close error
!* check from reset, rewrite and append. Add New3 and
!* Dispose3.
!* 06/05/86 - In ExtendHeap chain blocks correctly.
==== ercc07/algtests_at116.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'COMMENT' USE OF A PROCEDURE;
'REAL'
A,
B,
;
'PROCEDURE' EXAMPLE(X, Y)RESULT : (R);
'VALUE'
X,
Y;
'REAL'
X,
Y,
R;
'BEGIN'
X := X + Y;
R := X^2 + Y^2
'END';
A := 1;
==== ercc07/algtests_at117.txt ====
'BEGIN'
'SWITCH' PATH :=
P1,
P2;
'INTEGER'
N,
I;
I := 0;
LABEL 1 :;
I := I + 1;
'IF' I = 2 'THEN'
'GOTO' STOP;
N := 0;
'GOTO'
'IF' P > 0 'THEN'
PATH(N)
'ELSE'
LABEL 1;
P1 := P - 1;
P2 := P - 1;
==== ercc07/algtests_at118.txt ====
'BEGIN'
'INTEGER'
I;
'REAL'
X;
'ARRAY'
A(/0, 3/);
I := 1;
'FOR' X := 1.0,
2.0,
3.0 'DO'
'BEGIN'
A(/I/):= X;
I := I + 1
'END';
'END'
==== ercc07/ebits_etrput1.txt ====
!* modified 21/08/85
!*
%ownstring(31) Versiontext="Fortran77 Compiler Version 0.1"
%owninteger Report=1
%owninteger Decode
%owninteger Language
%owninteger Nextprocid
!*
%constinteger IMP = 1
%constinteger FORTRAN = 2
%constinteger CCOMP = 11
%constinteger PASCAL = 14
!*
!***********************************************************************
!* Exports *
!***********************************************************************
!*
%routinespec Einitialise(%integer Lang, Avertext, Astackca,
Aglaca, Options)
%routinespec Eterminate(%integer adareasizes)
%routinespec Ecommon(%integer area, %stringname Name)
==== ercc07/algtests_at119.txt ====
'BEGIN'
'INTEGER'
K;
K := 0;
'IF' K = 0'GOTO' FINISH 'ELSE'
K := K + 1;
FINISH :;
'END'
==== ercc07/ebits_etrput2.txt ====
!* modified 21/08/85
!*
%ownstring(31) Versiontext="Fortran77 Compiler Version 0.1"
%owninteger Report=1
%owninteger Decode
%owninteger Language
%owninteger Nextprocid
!*
%constinteger IMP = 1
%constinteger FORTRAN = 2
%constinteger CCOMP = 11
%constinteger PASCAL = 14
!*
!***********************************************************************
!* Exports *
!***********************************************************************
!*
%routinespec Einitialise(%integer Lang, Avertext, Astackca,
Aglaca, Options)
%routinespec Eterminate(%integer adareasizes)
%routinespec Ecommon(%integer area, %stringname Name)
==== ercc07/plink14.txt ====
#scom 26,0
link ,map
ercc07:totaly
ERCC07:PDRIVER14Y
ERCC07:XGEN29YO
.end
ercc07:p0y
MODIFY P0Y,p00y
SATISFY REFS
.ALL
SATISFY DATA
.ALL
SUPPRESS
.ALL
RETAIN
emaszpascal
SUPPRESS DATA
.ALL
redirect
ptraceon, S#PTRACEON
ptraceoff,S#PTRACEOFF
==== ercc07/plink15.txt ====
#scom 26,0
link ,map
ercc07:totaly
ERCC07:PDRIVER15Y
ercc07:xgen30y
.end
ercc07:p0y
MODIFY P0Y,p00y
SATISFY DATA
.ALL
redirect
Einitialise,E#INITIALISE
Eterminate,E#TERMINATE
Elinestart,E#LINESTART
Eswapmode,E#SWAPMODE
Emonon,E#MOMON
Emonoff,E#MONOFF
Efaulty,E#FAULTY
Estklit,E#STKLIT
Estkconst,E#STKCONST
Estkdir,E#STKDIR
==== ercc07/algtests_at120.txt ====
'BEGIN'
'REAL'
X'INTEGER' I;
'ARRAY'
A(/0 : 3/);
I := 0;
'FOR' X := 1.23,
2.34,
3.45 'DO'
'BEGIN'
A(/I/):= X;
I := I + 1
'END';
'END'
==== ercc07/plink16.txt ====
#scom 26,0
link ,map
ercc07:totaly
ERCC07:PDRIVER16Y
ercc07:xgen31y
.end
ercc07:p0y
MODIFY P0Y,p00y
SATISFY DATA
.ALL
redirect
Einitialise,E#INITIALISE
Eterminate,E#TERMINATE
Elinestart,E#LINESTART
Eswapmode,E#SWAPMODE
Emonon,E#MOMON
Emonoff,E#MONOFF
Efaulty,E#FAULTY
Estklit,E#STKLIT
Estkconst,E#STKCONST
Estkdir,E#STKDIR
==== ercc07/algtests_at121.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'INTEGER'
I,
P;
I := 0;
'FOR' P := 1 'STEP' 1 'UNTIL' 4 'DO'
'BEGIN'
'OWN' 'INTEGER'
I;
'IF' P = 1 'THEN'
I := 3
'ELSE'
I := 2 * I;
'BEGIN'
'INTEGER'
J,
I;
J := 4;
I := 0
==== ercc07/plink17.txt ====
#scom 26,0
link ,map
ercc07:totaly
ERCC07:PDRIVER17Y
.end
ercc07:p0y
MODIFY P0Y,p00y
SATISFY DATA
.ALL
redirect
Einitialise,E#INITIALISE
Eterminate,E#TERMINATE
Elinestart,E#LINESTART
Eswapmode,E#SWAPMODE
Emonon,E#MOMON
Emonoff,E#MONOFF
Efaulty,E#FAULTY
Estklit,E#STKLIT
Estkconst,E#STKCONST
Estkdir,E#STKDIR
Estkglobal,E#STKGLOBAL
==== ercc07/algtests_at122.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'INTEGER'
I,
P;
I := 0;
'FOR' P := 1 'STEP' 1 'UNTIL' 4 'DO'
'BEGIN'
'OWN' 'INTEGER'
I;
'IF' P = 1 'THEN'
I := 3
'ELSE'
I := 2 * I;
'BEGIN'
'OWN' 'INTEGER'
J,
I;
I := 0;
'IF' I = 0 'THEN'
==== ercc07/plink18.txt ====
#scom 26,0
link ,map
ercc07:totaly
ERCC07:PDRIVER18Y
.end
ercc07:p0y
MODIFY P0Y,p00y
SATISFY DATA
.ALL
redirect
Einitialise,E#INITIALISE
Eterminate,E#TERMINATE
Elinestart,E#LINESTART
Eswapmode,E#SWAPMODE
Emonon,E#MOMON
Emonoff,E#MONOFF
Efaulty,E#FAULTY
Estklit,E#STKLIT
Estkconst,E#STKCONST
Estkdir,E#STKDIR
Estkglobal,E#STKGLOBAL
==== ercc07/algtests_at123.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'INTEGER'
I,
P;
I := 0;
'FOR' P := 1 'STEP' 1 'UNTIL' 4 'DO'
'BEGIN'
'OWN' 'INTEGER'
I;
'IF' P = 1 'THEN'
I := 3
'ELSE'
I := 2 * I;
'BEGIN'
'OWN' 'INTEGER'
J,
I;
'IF' I = 0 'THEN'
J := 4
==== ercc07/docs_sep82.txt ====
EMAS Team termly Report
-----------------------
The summer has been a time of intense activity for the EMAS group as two
major pieces of hardware had to be commissioned. Both involved substantial
software changes and both projects were completed within the hoped for
timescales - timescales that had been agreed before it was realised that the
two events would become co-temporaneous! The team deserves the congratulation
of the rest of the ERCC for a notable and successful effort and it is
regrettable that hardware problems, particularly with the 2988, have prevented
the Users from realising the scale and success of these efforts.
The DAP arrived in April with the usual sub minimum of documentation. An
elegant solution was devised for incorporating it into EMAS fully compatible
with the EMAS philosophy. Each DAP user is allocated the whole of a virtual DAP
which is connected into his address space like a virtual file. A virtual DAP,
which may be less than but not more than the size of the actual DAP, then
behaves exactly like a mapped file with the additional (and alarming!) property
that its contents change unpredictably with time. Multidap-programming is
==== ercc07/algtests_at124.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'REAL'
X;
X := 1.;
OUTREAL(99, X);
'END'
==== ercc07/ifix8s.txt ====
%const %string (20) version= "IFIX 8 11/1/88"
%const %integer segsize= X'00040000'
%const %integer iput=0,lput=1
!**** RECORD FORMATS ****
%record %format dirinff(%string (6) user, %string (31) batchfile, %integer mark, fsys, procno, isuff, reason,
batchid, sessiclim, scidensad, scidens, operno, msgfad, scdate, sync1dest, sync2dest, asyncdest)
%record %format tabf(%string (31) name, %integer i, j)
%record %format rf(%integer arealoc, baseloc)
%record %format relf(%integer link, n, %record (rf) %array r(1:4000))
%record %format ofmf(%integer start, l, prop)
%record %format rrf(%integer conad, filetype, datastart, dataend)
%record %format centf(%integer link, (%integer loc, %string (31) iden %or %integer code offset, gla offset,
ep offset, pword, %string (31) iden2))
%record %format dentf(%integer link, disp, l, a, %string (31) iden)
%record %format creff(%integer link, refloc, %string (31) iden)
%record %format dreff(%integer link, refarray, l, %string (31) iden)
!**** SYSTEM AND EXTERNAL SPECS******
!%dynamicintegerfnspec BUILDSCT(%integer OUTBASE, INBASE)
%external %integer %fn %spec outstream %alias "S#OUTSTREAM"
%external %string (8) %fn %spec time %alias "S#TIME"
==== ercc07/algtests_at125.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'REAL'
X;
X := 1.&;
OUTREAL(99, X);
'END'
==== ercc07/pasc05s.txt ====
!*
!*
!***********************************************************************
!***********************************************************************
!* *
!* P A S C A L R U N T I M E S U P P O R T L I B R A R Y *
!* *
!***********************************************************************
!***********************************************************************
!*
!*
!* History
!* -------
!*
!* Version 1.0 for Perq2 and Perq3. (agh)
!* 29/04/86 - Fix field-width bug in WriteWord.
!* 03/05/86 - Introduce CheckName to validate file names.
!* 05/05/86 - Revised treatment of file names. Remove close error
!* check from reset, rewrite and append. Add New3 and
!* Dispose3.
!* 06/05/86 - In ExtendHeap chain blocks correctly.
==== ercc07/algtests_at126.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'REAL'
X;
X := &+;OUTREAL(99, X);
'END'
==== ercc07/perq3gen00s.txt ====
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
! Opnd2 is either a 32 bit const with the size (ACC) as value or
! the ptr or arrayhead as normal operand.
!
! VMY X1 is now dim<<28!maxdim<<24!array name(where known)
! Opnd2 is either a 32 bit const with DV offset into const area or
! the arrayhead as a standard operand
!
! AINDX X1 is ELSIZE<<20 !spare
! Opnd2 is arrayhead as standard operand
! NOTE:- The Operands have been swopped for consistency with norm.
!
==== ercc07/docs_sep85.txt ====
Central Systems Group Report
a)EMAS
It became apparent during this period that certain features of the EMAS-3
subsystem, particularly around the Parameter Acquistion Mechanism (PAM), caused
a disproportionate amount of work when programs or packages are moved from 2900.
This area has been simplified and re-implemented so that program importation is
now much easier. The main benefits of the previous design have been retained, in
particular the consistent prompting and defaulting arrangements of PAM. One
consequence change at this late stage is that much of the HELP information and
documentation, which had been prepared well in advance, has had to be withdrawn
for revision.
The permanent front end hardware and software entered service in the last
weeek of September and some teething problems persisted into the User service
which started in October. The interim front end ancient hardware has given an
unexpectedly reliable service througout the development period.
The Service system as at 1st October has all the main components - viz:-
==== ercc07/algtests_at127.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'REAL'
X;
X := &;
OUTREAL(99, X);
'END'
==== ercc07/algtests_at128.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'REAL'
X;
X := .;
OUTREAL(99, X);
'END'
==== ercc07/ibmsup_seguse.txt ====
!
! This is the latest information on the use of Segments for EMAS3.
! Segments 0-63 correspond roughly to Public in EMAS2
! Segments 64-255 are the equivalent to Local in Emas2
! Segments 241-255 vanish from the Segment table when User is running
! but re-appear when Director is entered.
!
! Seg 0 address page 0 and used for
! the zero page (page 1) and
! writing to real addresses (page 2)
! Seg 1 segment table segment
! Seg 2 Supervisor stack
! Seg 3 Alternate Local Controller Stack for Amdahl
! which uses 24 bit virtual addresses in Priv instrns
! Seg 4 Supervisor code
! Segs 5-7 free (for testing on 24 bit machines
! these contain overflow portions of code)
! Seg 8 Supervisor Gla
! Segs 9-15 Reserved for VSS
! Segs 16-19 Fress
==== ercc07/algtests_at129.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'REAL'
X;
X := &-1000;
OUTREAL(99, X);
'END'
==== ercc07/eamdlink.txt ====
LINK
ERCC07:ep1Y
ERCC07:ep22Y
ERCC07:eoPT3Y
ERCC07:eGEN0Y
ERCC07:CSERV01x
ercc07:xgen28y
.END
P0Y
MODIFY P0Y
SATISFY REFS
.ALL
SATISFY DATA
.ALL
SUPPRESS
.ALL
RETAIN
ICL9CEZEAMDIMP
SUPPRESS DATA
.ALL
CLOSE
==== ercc07/algtests_at130.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'INTEGER'
I;
'PROCEDURE' P;
'BEGIN'
'INTEGER'
J;
'PROCEDURE' Q;
'IF' I > 10 'THEN'
'GOTO' L;
J := I := I + 1;
Q;
OUTREAL(99, J);
P;
L :;
OUTREAL(99, J);
'END';
I := 1;
P;
==== ercc07/algtests_at131.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'REAL' 'ARRAY'
JJ(/1 : 8/);
'PROCEDURE' P(X);
'VALUE'
X;
'INTEGER'
X;
;
'PROCEDURE' DEVIATION;
'BEGIN'
'REAL'
X,
Y;
P(JJ)
'END';
DEVIATION;
'END'
==== ercc07/algtests_at132.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'INTEGER'
I,
J,
CASE;
'PROCEDURE' CHECKB(BOOL, ANSWER);
'VALUE'
ANSWER;
'BOOLEAN'
BOOL;
'INTEGER'
ANSWER;
'BEGIN'
'BOOLEAN'
B;
'PROCEDURE' FAIL;
'BEGIN'
OUTREAL(99, I);
OUTREAL(99, J);
==== ercc07/docs_mis.txt ====
Administrative Computing
a) Overview
Administrative computing started in the Secretary's office with the
establishment of a Data Processing Unit (DPU) to serve the central area
administration, primarily the Finance and Secretary's departments. IBM hardware
and software was chosen using IBM terminals running IBM's private protocols.
There was little contact with the computing service.
The second area of administrative computing originated in the Faculty
offices often starting with word processing and evolving into the manipulation
of class lists, marks, etc. This was often performed on micros or stand alone
machines. The offices were subsequently provided with a terminal into the DPU
machine on which data could be displayed but not easily transferred into the
Faculty machine except by re-keying.
The third birthplace of administrative computing was individual departments
starting naturally with the highly numerate departments. These expected to use
the same terminal or workstation for their admin as for their research and
==== ercc07/algtests_at133.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'INTEGER'
I;
'INTEGER' 'ARRAY'
C(/1 : 3/);
'FOR' I := 1,
2,
3 'DO'
C(/I/):= I + 1;
'FOR' I := 1,
2,
3 'DO'
'IF' C(/C(/C(/C(/C(/C(/I/)- 1/)- 1/)- 1/)- 1/)- 1/)# I + 1
'THEN'
OUTREAL(99, I);
OUTREAL(99, 0)
'END'
==== ercc07/algtests_at134.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'INTEGER'
I,
J,
K;
'BOOLEAN'
P,
T;
'PROCEDURE' FAIL;
'BEGIN'
OUTREAL(99, I);
OUTREAL(99, J)
'END';
T := 'TRUE';
'FOR' I := - 1,
0,
1 'DO'
'FOR' J := - 1,
0,
==== ercc07/algtests_at135.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'REAL'
X,
Y,
Z,
U;
'INTEGER'
I,
CASE;
'PROCEDURE' COMPARE(U, V);
'VALUE'
U,
V;
'REAL'
U,
V;
'BEGIN'
CASE := CASE + 1;
'IF' U # V 'THEN'
==== ercc07/pasc06s.txt ====
!*
!*
!***********************************************************************
!***********************************************************************
!* *
!* P A S C A L R U N T I M E S U P P O R T L I B R A R Y *
!* *
!***********************************************************************
!***********************************************************************
!*
!*
!* History
!* -------
!*
!* Version 1.0 for Perq2 and Perq3. (agh)
!* 29/04/86 - Fix field-width bug in WriteWord.
!* 03/05/86 - Introduce CheckName to validate file names.
!* 05/05/86 - Revised treatment of file names. Remove close error
!* check from reset, rewrite and append. Add New3 and
!* Dispose3.
!* 06/05/86 - In ExtendHeap chain blocks correctly.
==== ercc07/portenv03_langs.txt ====
%include "itrimp_hostcodes"
%CONSTINTEGER TARGET=M88K
%EXTERNALROUTINESPEC IOCP %ALIAS "s_iocp"(%INTEGER EP,N)
%CONSTLONGREAL GREATEST= 7.2370055773322608@ 75{R'7FFFFFFFFFFFFFFF'}
%EXTERNALROUTINE MOVE %ALIAS "s_move"(%INTEGER LENGTH,FROM,TO)
%INTEGER I
%RETURNIF LENGTH<=0
%IF target=emas %THENSTART
I=X'18000000'!LENGTH
*LSS_FROM
*LUH_I
*LDTB_I
*LDA_TO
*MV_ %L = %DR
%FINISHELSEIF target=perq %OR TARGET=ACCENT %OR target=pnx %START
%CYCLE i=0,1,length>>2-1
halfinteger(to+i)=halfinteger(from+i)
%REPEAT
%FINISHELSESTART; ! ibm etc
%if FROM<=TO<=FROM+LENGTH %START
%CYCLE I=length-1,-1,0
==== ercc07/algtests_at136.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'REAL'
X;
X := + + 1.0;
X := - - X;
OUTREAL(99, + - X)
'END'
==== ercc07/perq3gen01s.txt ====
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
! Opnd2 is either a 32 bit const with the size (ACC) as value or
! the ptr or arrayhead as normal operand.
!
! VMY X1 is now dim<<28!maxdim<<24!array name(where known)
! Opnd2 is either a 32 bit const with DV offset into const area or
! the arrayhead as a standard operand
!
! AINDX X1 is ELSIZE<<20 !spare
! Opnd2 is arrayhead as standard operand
! NOTE:- The Operands have been swopped for consistency with norm.
!
==== ercc07/algtests_at137.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'BOOLEAN'
B;
B := 'NOT' 'TRUE';
B := 'NOT' ( 'NOT' B);
B := 'NOT' 'NOT' B;
OUTREAL(99, 'IF' B 'THEN' 0 'ELSE' 1)
'END'
==== ercc07/algtests_at138.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'REAL'
X;
'INTEGER'
I;
'PROCEDURE' NOTFUNCTION(Y);
'VALUE'
Y;
'REAL'
Y;
'BEGIN'
I := I + 1;
X := Y
'END';
X := 1.0;
I := 0;
X := 3 * NOTFUNCTION(4.0);
OUTREAL(99, X + NOTFUNCTION(X) + I)
'END'
==== ercc07/trimp_perqponeas.txt ====
%INCLUDE "ERCC07.TRIMP_HOSTCODES"
%CONSTINTEGER HOST=EMAS
%CONSTINTEGER TARGET=PERQ
! PRODUCED BY OLDPS FROM TRIMP_PERQPS01 ON 06/09/83
%CONSTBYTEINTEGERARRAY CLETT(0: 436)= 1,
40, 1, 41, 1, 42, 1, 44, 2, 201, 198, 6, 213, 206, 204,
197, 211, 211, 5, 215, 200, 201, 204, 197, 5, 213, 206, 212, 201,
204, 3, 198, 207, 210, 1, 61, 5, 193, 204, 201, 193, 211, 7,
201, 206, 212, 197, 199, 197, 210, 4, 210, 197, 193, 204, 4, 204,
207, 206, 199, 4, 194, 217, 212, 197, 6, 211, 212, 210, 201, 206,
199, 4, 200, 193, 204, 198, 5, 211, 200, 207, 210, 212, 6, 210,
197, 195, 207, 210, 196, 7, 210, 207, 213, 212, 201, 206, 197, 2,
198, 206, 3, 205, 193, 208, 8, 198, 213, 206, 195, 212, 201, 207,
206, 4, 206, 193, 205, 197, 9, 193, 210, 210, 193, 217, 206, 193,
205, 197, 9, 207, 198, 208, 210, 207, 199, 210, 193, 205, 6, 207,
198, 198, 201, 204, 197, 6, 207, 198, 204, 201, 211, 212, 6, 198,
207, 210, 205, 193, 212, 3, 206, 207, 212, 3, 193, 206, 196, 2,
207, 210, 1, 58, 4, 211, 208, 197, 195, 5, 193, 210, 210, 193,
217, 3, 207, 215, 206, 8, 197, 216, 212, 197, 210, 206, 193, 204,
9, 197, 216, 212, 210, 201, 206, 211, 201, 195, 8, 195, 207, 206,
211, 212, 193, 206, 212, 5, 195, 207, 206, 211, 212, 5, 197, 214,
==== ercc07/algtests_at139.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'REAL'
X,
Y;
'REAL' 'PROCEDURE' P(Z);
'VALUE'
Z;
'REAL'
Z;
'BEGIN'
X := Z + Y
'END';
'REAL' 'PROCEDURE' Q(Z);
'VALUE'
Z;
'REAL'
Z;
'IF' 'FALSE' 'THEN'
Q := Z + X + Y;
==== ercc07/trimp_emasptwoas.txt ====
%EXTERNALROUTINE ICL9CEZIOPT
%CONSTINTEGER RELEASE=4
%INCLUDE "ERCC07.TRIMP_HOSTCODES"
%CONSTINTEGER HOST=EMAS
%CONSTINTEGER TARGET=EMAS
%CONSTINTEGER STANDARDPT=X'51'
%CONSTINTEGER MINAPT=X'51'; ! MINIMUM PTYPE FOR WHICH ARITHMETIC
! OPERATORS ARE AVAILABLE
%CONSTINTEGER MINAPREC=MINAPT>>4
%CONSTHALFINTEGERARRAY TYPEFLAG(0:12)=0,
X'51'{%INTEGER},
X'52'{%REAL},
X'8009'{%LONG SOMETHING},
X'4031'{%BYTE},
X'35'{%STRING},
X'4041'{%HALF->%INTEGER},
X'6051'{%SHORT->%INTEGER+WARNING},
X'33'{%RECORD},
0,
X'61'{%LONG INTEGER},
X'62'{%LONG REAL},
==== ercc07/algtests_at140.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'REAL'
X,
Y;
'PROCEDURE' P(A, B, C);
'VALUE'
A,
B,
C;
'REAL'
A,
B,
C;
'BEGIN'
X := A + B * C;
Y := X + A
'END';
P(1.0,, 3);
OUTREAL(99, X)
==== ercc07/algtests_at141.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'INTEGER' 'PROCEDURE' FACT(N);
'VALUE'
N;
'INTEGER'
N;
FACT :=
'IF' N > 1 'THEN'
N * FACT(N - 1)
'ELSE'
1;
FACT := 1;
OUTREAL(99, FACT(5))
'END'
==== ercc07/algtests_at142.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'REAL'
Y;
'PROCEDURE' P(X, X);
'VALUE'
X;
'REAL'
X;
X := X^2 + 8.6;
P(Y, 2.0);
OUTREAL(99, Y)
'END'
==== ercc07/perf2s.txt ====
%CONSTINTEGER MAXPROCS=256
%CONSTINTEGER YES=1,NO=0
%CONSTINTEGER VAMODE=YES
%CONSTINTEGER COM SEG=31
%CONSTINTEGER LOCSN0=64
%CONSTINTEGER PAGESIZE=4096
%CONSTINTEGER SSHIFT=20
%INCLUDE "ercc07:ibmsup_comf370"
!-----------------------------------------------------------------------
%CONSTINTEGER EPAGESPERSEC=600; !EPAGES THRU one DISC CONTROLLER PER SECOND
!----------------------------------------------------------------------
%EXtERNALSTRINGFUNCTIONSPEC ITOS %alias "S#ITOS" (%INTEGER N)
%EXTERNALROUTINESPEC MOVE %ALIAS "S#MOVE"(%INTEGER NLENGTH,NFROM,NTO)
%EXTERNALROUTINESPEC PROMPT %alias "S#PROMPT"(%STRING (255) S)
==== ercc07/makeusys_gen.txt ====
offer Ugens
parm nocheck
edit Usysgen00s,Ugens
a/%incl/d1i<itrimp_hostcodes>
a'd1i<ercs01:ebits_ecodes5>
a'd1i<tripcnsts>
a'd1i<itrimp_tform2s>
a'd1i<ercs01:ebits_especs2>
e
imp Ugens,.null
offer Ugens,ercs01
==== ercc07/pascio11s.txt ====
!*
!*
!***********************************************************************
!***********************************************************************
!* *
!* P A S C A L R U N T I M E S U P P O R T L I B R A R Y *
!* *
!***********************************************************************
!***********************************************************************
!*
!*
!* History
!* -------
!*
!* Version 1.0 for Perq2 and Perq3. (agh)
!* 29/04/86 - Fix field-width bug in WriteWord.
!* 03/05/86 - Introduce CheckName to validate file names.
!* 05/05/86 - Revised treatment of file names. Remove close error
!* check from reset, rewrite and append. Add New3 and
!* Dispose3.
!* 06/05/86 - In ExtendHeap chain blocks correctly.
==== ercc07/stualgps.txt ====
31
D(NAME) {This BIP accpets any name}
D(ICONST) {This BIP accepts any integer constant}
D(CONST) {This BIP accepts any constant}
D(ONAME) {This BIP accepts any previously declared name}
D(COMTEXT)) {This BIP accepts normal comment text}
D(S) {This BIP accepts any Separator}
D(ENDTEXT) {This BIP accepts end comment text}
D(TEXTTEXT) {This BIP an Algol string}
D(HOLE) {This BIP leaves a hole in the tree for mark}
D(MARK) {This BIP Puts a pointer into the last "hole"}
D(UPSTCNT) {This BIP Increments the statement count}
D(LETTERSTRING) {This BIP accpets a parameter comment}
D(DOWN) {This BIP increments the textual level}
D(UP) {This BIP decrements the textual level and massages the dictionary}
D(SCALARTYPE) {This BIP notes the current setting of type}
D(NOTENAME) {This BIP records the current name in the dictionary}
D(TYPE=A) {This BIP checks the current name is integer or real}
D(TYPE=B) {This BIP checks the current name is Boolean}
D(ARRAYTYPE) {This BIP notes the current type and adds the array bit}
D(PROCTYPE) {This BIP sets the current type to procedure}
==== ercc07/algtests_at143.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'REAL'
X;
'PROCEDURE' P(Y);
'VALUE'
X;
'REAL'
Y;
Y := X;
X := 3.4;
P(10.0);
OUTREAL(99, X)
'END'
==== ercc07/algtests_at144.txt ====
'BEGIN'
'COMMENT' 'LIBRARY'5;
'REAL' PR;
'INTEGER' PI;
'BOOLEAN' PB;
PI := 1;
PR := 0.0&0;
PB :=
'IF' 'NOT' PI > 0 'AND' PI >= 1 'OR' PI < 0 'IMPL' PR <= 0
'EQUIV' PI # 0 'THEN'
'TRUE'
'ELSE'
'TRUE';
'IF' PB 'THEN'
PR := - 1 * PI^3 'DIV' 2 +
ENTIER(SIGN(SQRT(ABS(ARCTAN(LN(EXP(COS(SIN(1)))))
)))) - (PR / ('IF' PR = 0.0 'THEN' 3 'ELSE' 3));
'BEGIN'
'SWITCH' PSW := ENTRY, EXIT;
'OWN' 'REAL' 'ARRAY' PRA(/0 : 1/);
==== ercc07/algtests_at145.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'REAL'
X;
'PROCEDURE' P(A, B);
'VALUE'
(A, B);
'REAL'
(A, B);
X := A + B;
P(3, 4);
OUTREAL(99, X)
'END'
==== ercc07/pasc07s.txt ====
!*
!*
!***********************************************************************
!***********************************************************************
!* *
!* P A S C A L R U N T I M E S U P P O R T L I B R A R Y *
!* *
!***********************************************************************
!***********************************************************************
!*
!*
!* History
!* -------
!*
!* Version 1.0 for Perq2 and Perq3. (agh)
!* 29/04/86 - Fix field-width bug in WriteWord.
!* 03/05/86 - Introduce CheckName to validate file names.
!* 05/05/86 - Revised treatment of file names. Remove close error
!* check from reset, rewrite and append. Add New3 and
!* Dispose3.
!* 06/05/86 - In ExtendHeap chain blocks correctly.
==== ercc07/algtests_at146.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'REAL'
X;
'INTEGER'
I;
X := 3.84;
'FOR' I := 1 'STEP' 1 'UNTIL' 200 'DO'
'BEGIN'
'IF' - 1 / X # - (1 / X) 'THEN'
OUTREAL(99, I);
X := X * 1.01;
'END';
OUTREAL(99, 0);
'END'
==== ercc07/docs_lett.txt ====
The Editor of Centrist
Dear Sir,
The cautionary tale of IDMS makes sad reading; so much effort by a
large proportion of the database group for so long has yielded so little.
The conclusion - namely throw out EMAS and its 5000 mostly satisfied users
so that the handful of IDMS users can have a better service - does not
follow from the narrative.
The IDMS project was a political project to extricate management from
commitments it had given based on (unbelievable) promises from ICL which
had not and could not be honoured. To move a large piece of software, very
operating system intimate, between two very different systems is immensely
difficult even at the source code level. When part of the package is only
available as object code the task is manifestly impossible. There were,
are and always have been more cost effective ways of providing such
facilities to the small number of users who require them.
The decision on 2972 replacement with another EMAS machine (using the
==== ercc07/vaxsup_pimc.txt ====
/* INCLUDES */
#define PROMPT_LENGTH 9
#define MAX_LINE_LENGTH 79
#define QUAL_LENGTH 7
#define TRUE 1
#define FALSE 0
#define NEGATED -1
/************* Only the following PARMS are looked for************/
#define NOLISTSHIFT 1
#define NODIAGSHIFT 2
#define NOCHECKSHIFT 4
#define NOARRAYSHIFT 5
#define NOTRACESHIFT 6
#define OPTSHIFT 16
#define MAPSHIFT 17
#define CODESHIFT 14
#define NOLINESHIFT 23
#define PARMZSHIFT 26
#define PARMYSHIFT 27
#define PARMXSHIFT 28
==== ercc07/perq3gen02s.txt ====
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
! Opnd2 is either a 32 bit const with the size (ACC) as value or
! the ptr or arrayhead as normal operand.
!
! VMY X1 is now dim<<28!maxdim<<24!array name(where known)
! Opnd2 is either a 32 bit const with DV offset into const area or
! the arrayhead as a standard operand
!
! AINDX X1 is ELSIZE<<20 !spare
! Opnd2 is arrayhead as standard operand
! NOTE:- The Operands have been swopped for consistency with norm.
!
==== ercc07/algtests_at147.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'ARRAY'
A(/1.2/);
A(/1/):= 1.0;
OUTREAL(99, A(/1/))
'END'
==== ercc07/makeorn_p1.txt ====
offer op1s
edit poneb01s,op1s
i<itrimp_ornponeas>
ta/%inc/
d1i<itrimp_hostcodes>
a'
d1i<itrimp_tform2s>
m/%constlonglongreal/
e
imp op1s,.null
offer op1s,ecsc64
==== ercc07/algtests_at148.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'INTEGER'
I,
J,
K;
I := J := K := 1;
'IF' I = J 'THEN'
LA : 'IF' J # K 'THEN'
OUTREAL(99, 1)
'ELSE'
OUTREAL(99, 2);
OUTREAL(99, 3)
'END'
==== ercc07/makeorn_p2.txt ====
offer op2s
edit timp02s,op2s
i<itrimp_ornptwoas>
ta/%inc/
d1i<itrimp_hostcodes>
a'
d1i<tripcnsts>
a'
d1i<itrimp_tform2s>
e
imp op2s,.null
offer op2s,ecsc64
==== ercc07/algtests_at149.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'ARRAY'
A(/1 : 2.3 : 4/);
A(/1/):= 1.0;
OUTREAL(99, A(/1/))
'END'
==== ercc07/wwcgen01s.txt ====
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
! Opnd2 is either a 32 bit const with the size (ACC) as value or
! the ptr or arrayhead as normal operand.
!
! VMY X1 is now dim<<28!maxdim<<24!array name(where known)
! Opnd2 is either a 32 bit const with DV offset into const area or
! the arrayhead as a standard operand
!
! AINDX X1 is ELSIZE<<20 !spare
! Opnd2 is arrayhead as standard operand
! NOTE:- The Operands have been swopped for consistency with norm.
!
==== ercc07/algtests_at150.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'REAL'
X,
Y;
'INTEGER'
CASE;
'PROCEDURE' CHECK(B);
'VALUE'
B;
'BOOLEAN'
B;
'IF' B 'THEN'
CASE := CASE + 1
'ELSE'
'BEGIN'
OUTREAL(99, X);
OUTREAL(99, Y);
OUTREAL(99, CASE)
'END';
==== ercc07/oldimprts.txt ====
%EXTERNALROUTINE ISOCARD(%BYTEINTEGERARRAYNAME CARD)
%INTEGER I,J
I=1
%CYCLE
READ SYMBOL(J)
%EXITIF J=NL
CARD(I)=J
%EXITIF I=80
I=I+1
%REPEAT
%FOR I=I+1,1,80 %CYCLE
CARD(I)=' '
%REPEAT
%END
%EXTERNALLONGREALFN RFDISO(%BYTEINTEGERARRAYNAME CARD, %INTEGER COL1,COL2, %INTEGERNAME ERROR)
%INTEGER I,J,K,L,M,SCALE
%INTEGER SIGN
%REAL RES
SIGN=0
->L1 %IF COL1>COL2
M=1; ERROR=0; RES=0; SCALE=0; J=1
==== ercc07/algtests_at151.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'BOOLEAN'
A,
B,
C;
'INTEGER'
I,
J;
A := B := C := 'TRUE';
I := J := 1;
A := I = J;
B := I # J;
C := A := B;
C := A = B;
C = A = B;
OUTREAL(99, 'IF' A 'THEN' 0 'ELSE' 'IF' B 'THEN' 2 'ELSE' 3);
'END'
==== ercc07/ibmsup_seguse2.txt ====
!
! This is the latest information on the use of Segments for EMAS3.
! Segments 0-63 correspond roughly to Public in EMAS2
! Segments 64-511 are the equivalent to Local in Emas2
! Segments 497-511 vanish from the Segment table when User is running
! but re-appear when Director is entered.
!
! Seg 0 address page 0 and used for
! the zero page (page 1) and
! writing to real addresses (page 2)
! Seg 1 segment table segment
! Seg 2 Supervisor stack
! Seg 3 Alternate Local Controller Stack for Amdahl
! which uses 24 bit virtual addresses in Priv instrns
! Seg 4 Supervisor code
! Segs 5-7 free (for testing on 24 bit machines
! these contain overflow portions of code)
! Seg 8 Supervisor Gla
! Segs 9-15 Reserved for VSS
! Segs 16-19 Fress
==== ercc07/algtests_at152.txt ====
'BEGIN'
'COMMENT' 'LIBRARY'5;
'REAL' 'PROCEDURE' P(Q);
'REAL' 'PROCEDURE'
Q; 'COMMENT'(X): 'VALUE' X: 'REAL' X;
P := ABS(Q( - 6.4));
OUTREAL(99, P(ABS))
'END'
==== ercc07/pascio12s.txt ====
!*
!*
!***********************************************************************
!***********************************************************************
!* *
!* P A S C A L R U N T I M E S U P P O R T L I B R A R Y *
!* *
!***********************************************************************
!***********************************************************************
!*
!*
!* History
!* -------
!*
!* Version 1.0 for Perq2 and Perq3. (agh)
!* 29/04/86 - Fix field-width bug in WriteWord.
!* 03/05/86 - Introduce CheckName to validate file names.
!* 05/05/86 - Revised treatment of file names. Remove close error
!* check from reset, rewrite and append. Add New3 and
!* Dispose3.
!* 06/05/86 - In ExtendHeap chain blocks correctly.
==== ercc07/algtests_at153.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'REAL'
X;
X := 0;
X := (X + 1.1) / 3.3;
X := (X + 2.2) / 6.6;
X := (X + 3.3) / 9.9;
X := (X + 4.4) / 13.2;
X := (X + 5.5) / 16.5;
X := (X + 6.6) / 19.8;
X := (X + 7.7) / 23.1;
X := (X + 8.8) / 26.4;
X := (X + 9.9) / 29.7;
X := (X + 11.0) / 33.0;
X := (X + 12.1) / 36.3;
X := (X + 13.2) / 39.6;
X := (X + 14.3) / 42.9;
X := (X + 15.4) / 46.2;
X := (X + 16.5) / 49.5;
==== ercc07/algtests_at154.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'PROCEDURE' P(ST1, ST2);
'STRING'
ST1,
ST2;
;
P( < 1.1>, < 3.3> );
P( < 2.2>, < 6.6> );
P( < 3.3>, < 9.9> );
P( < 4.4>, < 13.2> );
P( < 5.5>, < 16.5> );
P( < 6.6>, < 19.8> );
P( < 7.7>, < 23.1> );
P( < 8.8>, < 26.4> );
P( < 9.9>, < 29.7> );
P( < 11.0>, < 33.0> );
P( < 12.1>, < 36.3> );
P( < 13.2>, < 39.6> );
P( < 14.3>, < 42.9> );
==== ercc07/ibmsup_dtform1s.txt ====
!
! EMAS 370 - Device table entry format
!
%recordformat dtform(%integer iserv,mnemonic,cuu,alt cuu,ccwa,csw1,csw2,
stick,id,timeout,ua size,ua ad,
sense1,sense2,sense3,sense4,sense5,sense6,
stats1,stats2,stats3,stats4,
{ end of common data }
{ DEVIO : } (%integer trtabad,sensedatad %or %c
{ DISC : } %integer propaddr,state,concount,repsno,base,dlvn,
%string(6)label,%byteinteger mech,qstate,prio,slot,bsp2,
%integer lqlink,uqlink,curcyl,sema,trlink))
!
%endoffile
==== ercc07/algtests_at155.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'INTEGER'
I;
'PROCEDURE' P(A, B);
'VALUE'
A;
'VALUE'
B;
'INTEGER'
A,
B;
I := A + B;
P(3, 4);
OUTREAL(99, I);
'END'
==== ercc07/trimp_drsoptas.txt ====
%INCLUDE "ERCC07.TRIMP_HOSTCODES"
%CONSTINTEGER HOST=EMAS
%CONSTINTEGER TARGET=DRS
==== ercc07/pasc08s.txt ====
!*
!*
!***********************************************************************
!***********************************************************************
!* *
!* P A S C A L R U N T I M E S U P P O R T L I B R A R Y *
!* *
!***********************************************************************
!***********************************************************************
!*
!*
!* History
!* -------
!*
!* Version 1.0 for Perq2 and Perq3. (agh)
!* 29/04/86 - Fix field-width bug in WriteWord.
!* 03/05/86 - Introduce CheckName to validate file names.
!* 05/05/86 - Revised treatment of file names. Remove close error
!* check from reset, rewrite and append. Add New3 and
!* Dispose3.
!* 06/05/86 - In ExtendHeap chain blocks correctly.
==== ercc07/algtests_at156.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'INTEGER'
I;
'PROCEDURE' P(A, B);
'INTEGER'
A;
'INTEGER'
B;
I := A + B;
P(3, 4);
OUTREAL(99, I);
'END'
==== ercc07/perq3gen03s.txt ====
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
! Opnd2 is either a 32 bit const with the size (ACC) as value or
! the ptr or arrayhead as normal operand.
!
! VMY X1 is now dim<<28!maxdim<<24!array name(where known)
! Opnd2 is either a 32 bit const with DV offset into const area or
! the arrayhead as a standard operand
!
! AINDX X1 is ELSIZE<<20 !spare
! Opnd2 is arrayhead as standard operand
! NOTE:- The Operands have been swopped for consistency with norm.
!
==== ercc07/algtests_at157.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'BOOLEAN' B;
'REAL' X;
'INTEGER' 'ARRAY' A(/ + 1 : .6&2/);
'INTEGER' I, N;
B := 'FALSE';
N := &+2 * .6;
X := 0;
'COMMENT' ;
'BEGIN'
'COMMENT' ;
'OWN' 'REAL' 'ARRAY' C0(/0 : 1/);
'PROCEDURE' P(A, B, C);
'VALUE' A;
'INTEGER' A;
'STRING' B;
'BOOLEAN' 'ARRAY' C;
'BEGIN'
'BEGIN'
==== ercc07/algtests_at158.txt ====
'BEGIN'
'BEGIN'
'REAL' A;
'GOTO' L;
L: 'WHILE'
'END'
'END'
==== ercc07/gldlink.txt ====
LINK ,map
ERCC07:gp12Y
ERCC07:gp26Y
ERCC07:gp33Y
ERCC07:gGEN4Y
ERCC07:CSERV01x
ercs01:EBITS_etrput1y
.END
P0Y
MODIFY P0Y
SATISFY REFS
.ALL
SATISFY DATA
.ALL
SUPPRESS
.ALL
RETAIN
ICL9CEZgouldIMP
SUPPRESS DATA
.ALL
CLOSE
==== ercc07/algtests_at159.txt ====
'BEGIN'
'PROCEDURE' P(A);
'VALUE' A: ;
P(1)
'END'
==== ercc07/wwcgen02s.txt ====
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
! Opnd2 is either a 32 bit const with the size (ACC) as value or
! the ptr or arrayhead as normal operand.
!
! VMY X1 is now dim<<28!maxdim<<24!array name(where known)
! Opnd2 is either a 32 bit const with DV offset into const area or
! the arrayhead as a standard operand
!
! AINDX X1 is ELSIZE<<20 !spare
! Opnd2 is arrayhead as standard operand
! NOTE:- The Operands have been swopped for consistency with norm.
!
==== ercc07/algtests_at160.txt ====
'BEGIN'
'PROCEDURE' P(A);
'REAL' A: ;
P(1.0)
'END'
==== ercc07/algtests_at161.txt ====
'BEGIN'
'PROCEDURE' P(A ; ;
P(1)
'END'
==== ercc07/algtests_at162.txt ====
'BEGIN'
'ARRAY' A(/(0:3/);
'END'
==== ercc07/pascio13s.txt ====
!*
!*
!***********************************************************************
!***********************************************************************
!* *
!* P A S C A L R U N T I M E S U P P O R T L I B R A R Y *
!* *
!***********************************************************************
!***********************************************************************
!*
!*
!* History
!* -------
!*
!* Version 1.0 for Perq2 and Perq3. (agh)
!* 29/04/86 - Fix field-width bug in WriteWord.
!* 03/05/86 - Introduce CheckName to validate file names.
!* 05/05/86 - Revised treatment of file names. Remove close error
!* check from reset, rewrite and append. Add New3 and
!* Dispose3.
!* 06/05/86 - In ExtendHeap chain blocks correctly.
==== ercc07/algtests_at163.txt ====
'BEGIN'
'IF' ('TRUE' 'OR' ('TRUE') 'THEN'
'END'
==== ercc07/algtests_at164.txt ====
'BEGIN'
L: 'GOTO' (L/)
'END'
==== ercc07/ibmsup_dtform2s.txt ====
!
! EMAS 370 - Device table entry format
!
%recordformat dtform(%integer iserv,mnemonic,cuu,alt cuu,ccwa,csw1,csw2,
stick,id,timeout,ua size,ua ad,
sense1,sense2,sense3,sense4,sense5,sense6,
stats1,stats2,stats3,stats4,
{ end of common data }
{ DEVIO : } (%integer trtabad,sensedatad,sdsema,repsn,CCWVA,KEY %or %c
{ DISC : } %integer propaddr,state,concount,repsno,base,dlvn,
%string(6)label,%byteinteger mech,qstate,prio,slot,bsp2,
%integer lqlink,uqlink,curcyl,sema,trlink))
!
%endoffile
==== ercc07/portenv03_blurb.txt ====
This PD file contains the Imp portable environment split inot bits for
linking in a non sharing Unix environment. With shared environments the
single glob portenv02s is preferable. The modules are roughly
1) Trig and maths fns
2) The matrix functions and other historic material
3) Language support Read write substring etc
4) Crude exponentiation support. The Fortarn versions are used
after they have been booted
The include files are not inserted as yet
==== ercc07/algtests_at165.txt ====
'BEGIN'
'INTEGER' I;
'FOR' 1:=I 'DO';
'END'
==== ercc07/pasc09s.txt ====
!*
!*
!***********************************************************************
!***********************************************************************
!* *
!* P A S C A L R U N T I M E S U P P O R T L I B R A R Y *
!* *
!***********************************************************************
!***********************************************************************
!*
!*
!* History
!* -------
!*
!* Version 1.0 for Perq2 and Perq3. (agh)
!* 29/04/86 - Fix field-width bug in WriteWord.
!* 03/05/86 - Introduce CheckName to validate file names.
!* 05/05/86 - Revised treatment of file names. Remove close error
!* check from reset, rewrite and append. Add New3 and
!* Dispose3.
!* 06/05/86 - In ExtendHeap chain blocks correctly.
==== ercc07/algtests_at166.txt ====
'BEGIN'
'PROCEDURE' 1;;
L;
'END'
==== ercc07/algtests_at167.txt ====
'BEGIN'
'PROCEDURE' P();;
'END'
==== ercc07/algtests_at168.txt ====
'BEGIN'
'SWITCH' 0:=L;
L: 'GOTO' O(/1/)
'END'
==== ercc07/wslds.txt ====
%EXTERNALROUTINE WSLD %alias "C#WSLD"
%EXTERNALROUTINESPEC OPENMAG %alias "S#OPENMAG"(%INTEGER CHAN, %STRING (7) VOL)
%EXTERNALROUTINESPEC SKIPMAG %alias "S#SKIPMAG"(%INTEGER CHAN,BLOCKS)
%EXTERNALROUTINESPEC WRITEMAG %alias "S#WRITEMAG"(%INTEGER CHAN,AD,LEN, %INTEGERNAME FLAG)
%EXTERNALROUTINESPEC WRITETMMAG %alias "S#WRITETMMAG"(%INTEGER CHAN, %INTEGERNAME FLAG)
%EXTERNALROUTINESPEC UNLOADMAG %alias "S#UNLOADMAG"(%INTEGER CHAN)
%EXTERNALINTEGERFNSPEC RDFILEAD(%STRING (255) FILE)
%EXTERNALROUTINESPEC MOVE %ALIAS "S#MOVE"(%INTEGER LENGTH,FROM,TO)
%externalroutinespec emas3string(%stringname vector,param)
%externalroutinespec set return code %alias"emas3setreturncode"(%integername value)
%OWNINTEGERARRAY IPL REC(0:5)= %C
x'00080000',x'00001008', { PSW }
x'02001000',x'60001000', { CCW block to x1000 }
x'08001000',x'00000000' { TIC to x1000 }
%CONSTINTEGER SLDLEN=1024
%OWNINTEGERARRAY SLD(1:SLDLEN)= %C
x'3f000000',x'20000001', { skip over TM }
0(*) { sld code }
%string(63) tape,file
%INTEGER I,FLAG,CONAD
==== ercc07/algtests_at169.txt ====
'BEGIN'
'ARRAY' A(/'IF' 'TRUE' 'THEN' 1 : 10/);
'END'
==== ercc07/algtests_at170.txt ====
L,'BEGIN'
'REAL' A;
'END'
==== ercc07/algtests_at171.txt ====
'BEGIN'
'SWITCH' S:=L;
L: 'GOTO' S(/1)
'END'
==== ercc07/trimp_tform0s.txt ====
!
! RECORDFORMAT FOR ALL THE OPTION AND FLAG VARAIBLES
!
%RECORDFORMAT PARMF(%INTEGER BITS1,BITS2,TTOPUT,
%BYTEINTEGER LET,DYNAMIC,LINE,TRACE,ARR,DBUG,CHK,DIAG,OPT,FREE,
LIST,CPRMODE,COMPILER,Z,Y,PROF,INHCODE,DCOMP,FAULTY,X,STACK,MAP,S1,S2)
%IF HOST=PERQ %OR HOST=ACCENT %OR HOST=IBM %OR HOST=IBMXA %START
%RECORDFORMAT LEVELF(%INTEGER RBASE, DIAGINF, RAL, FLAG, L, M, NMDECS, ONWORD, ONINF,
LABEL, JROUND, UNATT FORMATS, PSIZE, ENTRYAD, DISPLAY, AUXSBASE,
NAMES,%SHORTINTEGER SNMAX,SN,RESSIZE,CLEVEL,%INTEGERARRAY AVL WSP(0:4),
%INTEGER SET)
%FINISH %ELSE %START
%RECORDFORMAT LEVELF(%INTEGER RBASE, DIAGINF, RAL, FLAG, L, M, NMDECS, ONWORD, ONINF,
LABEL, JROUND, UNATT FORMATS, PSIZE, ENTRYAD, DISPLAY, AUXSBASE,
NAMES,%HALFINTEGER SNMAX,SN,RESSIZE,CLEVEL,%INTEGERARRAY AVL WSP(0:4),
%INTEGER SET)
%FINISH
%IF HOST=PERQ %OR HOST=ACCENT %OR HOST=IBM %OR HOST=IBMXA %START
%RECORDFORMAT RD((%INTEGER S1 %OR %SHORT PTYPE,%BYTE XB,FLAG),
(%LONGREAL LR %OR (%INTEGER D %OR %REAL R),
==== ercc07/algtests_at172.txt ====
'BEGIN'
'ARRAY' A(/1:10/);
A(/1) := 1
'END'
==== ercc07/pascio14s.txt ====
!*
!*
!***********************************************************************
!***********************************************************************
!* *
!* P A S C A L R U N T I M E S U P P O R T L I B R A R Y *
!* *
!***********************************************************************
!***********************************************************************
!*
!*
!* History
!* -------
!*
!* Version 1.0 for Perq2 and Perq3. (agh)
!* 29/04/86 - Fix field-width bug in WriteWord.
!* 03/05/86 - Introduce CheckName to validate file names.
!* 05/05/86 - Revised treatment of file names. Remove close error
!* check from reset, rewrite and append. Add New3 and
!* Dispose3.
!* 06/05/86 - In ExtendHeap chain blocks correctly.
==== ercc07/algtests_at173.txt ====
'BEGIN'
'ARRAY' A(/1:10/);
A(/1/)= 1
'END'
==== ercc07/algtests_at174.txt ====
'BEGIN'
'INTEGER' A;
'FOR' A=1 'DO'
'END'
==== ercc07/algtests_at175.txt ====
'BEGIN'
'SWITCH' S=L1,L2;
L1:L2:
'END'
==== ercc07/docs_e3prot.txt ====
Protection in EMAS3
___________________
Apart from a single write protect bit in the segment tables all
protection on IBM architecture is provided by keys on the store. Each
store page has associated a 4 bit key (0-15) an each program has a
similar key in its PSW. Writes to store are only permitted if the key in
the PSW matches the key on the store or if the key in the pSW is 0. One
extra bit associated with the page is available to extend key protection
to read accesses.
EMAS3 has the system in segments 0-63 as there is no public address
space. Careful use of the keys is needed to allow sharing and give
reasonable protection to the system. The scheme may cause some
inconvenience to Director and Comms controller since these may have to
alter their PSW before writing to certain pages. Fortunately there is a
suitable privileged instruction to do this!
My plan is thus:-
==== ercc07/algtests_at176.txt ====
'BEGIN'
'OWN' 'ARRAY'(/1:10/);
'END'
==== ercc07/algtests_at177.txt ====
'BEGIN'
'INTEGER' I;
'FOR' I:= 1 'STEP' 1 'DO'
'END'
==== ercc07/algtests_at178.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'INTEGER'
I;
'INTEGER' 'PROCEDURE' C;
'BEGIN'
'FOR' C := 1 'STEP' 1 'UNTIL' 3 'DO'
'BEGIN'
I := I + 1;
'IF' I < 10 'THEN'
C := C + 1
'END'
'END';
I := 0;
OUTREAL(99, C)
'END'
==== ercc07/algtests_at179.txt ====
LABELWITHOUTCOLON
'BEGIN'
'END'
==== ercc07/makeoptimp.txt ====
parm opt,maxdict,nolist
imp ercc07:itrimp_ibmponeas+ercc07:poneb02s,ip1ox,l0
imp ercc07:itrimp_ibmptwoas+timp03s,ip23ox,l1
imp ercc07:itrimp_ibmoptas+opt03s,iopt3ox,l2
imp cserv01s,cserv01ox,l4
imp ibmgen05s,igen5ox,l5
parm map
LINK
IP1oX
IP23oX
IOPT3oX
IGEN5oX
CSERV01oX
.END
P0Y
MODIFY P0Y
SATISFY REFS
.ALL
SATISFY DATA
.ALL
SUPPRESS
==== ercc07/algtests_at180.txt ====
'BEGIN'
'COMMENT' 'LIBRARY' 1;
'INTEGER'
I,
J,
K,
M;
'INTEGER' 'PROCEDURE' GPPS(I, N, V, Z);
'INTEGER'
I,
N,
V,
Z;
'BEGIN'
'FOR' I := 1 'STEP' 1 'UNTIL' N 'DO'
V := Z;
GPPS := 1
'END';
'FOR' M := 1 'STEP' 1 'UNTIL' 25 'DO'
'BEGIN'
==== ercc07/algtests_at181.txt ====
'BEGIN' 'INTEGER' I;
'INTEGER' 'ARRAY' A,B(/1:10/);
'ARRAY' C,D(/1:10/);
'PROCEDURE' TEST(P,Q,R,S); 'VALUE' P,Q,R,S; 'ARRAY' R,S;
'INTEGER' 'ARRAY' P,Q; 'BEGIN' 'INTEGER' I;
'FOR' I:=1'STEP'1'UNTIL' 10 'DO' 'BEGIN'
'IF' I#P(/I/)'OR' I#Q(/I/)'OR' I#R(/I/)'OR' I#S(/I/) 'THEN' 'BEGIN'
PRINT(I,2,0); PRINT(P(/I/),2,0); PRINT(Q(/I/),2,0);
PRINT(R(/I/),2,1); PRINT(S(/I/),2,1); NEWLINE
'END';
P(/I/):=Q(/I/):=0; R(/I/):=S(/I/):=0
'END' FOR;
PRINTSTRING(<ARRAY _ PASSED>)
'END' TEST;
'FOR' I:=1 'STEP' 1 'UNTIL' 10 'DO' 'BEGIN'
A(/I/):=B(/I/):=I; C(/I/):=D(/I/):=I
'END';
TEST(A,C,D,B);
'FOR' I:=1 'STEP' 1 'UNTIL' 10 'DO' 'BEGIN'
'IF' A(/I/)#I 'OR' B(/I/)#I 'OR' C(/I/)#I 'OR' D(/I/)#I 'THEN' 'BEGIN'
==== ercc07/trimp_tform1s.txt ====
!
! RECORDFORMAT FOR ALL THE OPTION AND FLAG VARAIBLES
!
%RECORDFORMAT PARMF(%INTEGER BITS1,BITS2,TTOPUT,
%BYTEINTEGER LET,DYNAMIC,LINE,TRACE,ARR,DBUG,CHK,DIAG,OPT,FREE,
LIST,CPRMODE,COMPILER,Z,Y,PROF,INHCODE,DCOMP,FAULTY,X,STACK,MAP,QUOTES,S2,
%INTEGER LPOPUT,SP0)
%RECORDFORMAT LEVELF(%INTEGER RBASE, DIAGINF, RAL, FLAG, L, M, NMDECS, ONWORD, ONINF,
LABEL, JROUND, UNATT FORMATS, PSIZE, ENTRYAD, DISPLAY, AUXSBASE,
NAMES, SNMAX,SN,RESSIZE,CLEVEL,SET, S1, S2, S3, S4,
%INTEGERARRAY AVL WSP(0:4))
%IF 1<<host&unsignedshorts=0 %START
%RECORDFORMAT RD((%INTEGER S1 %OR %SHORT PTYPE,%BYTE XB,FLAG),
(%LONGREAL LR %OR (%INTEGER D %OR %REAL R),
%INTEGER XTRA %OR %SHORT H0,H1,H2,H3 %OR %BYTE B0,B1,B2,B3,B4,B5,B6,B7))
%RECORDFORMAT TAGF((%SHORTINTEGER PTYPE,UIOJ,SNDISP,ACC,SLINK,KFORM %OR %C
%INTEGER S1,S2,S3),%INTEGER LINK)
%RECORDFORMAT TRIPF(%BYTE OPERN,OPTYPE,CNT,DPTH,
%SHORTINTEGER FLAGS,PUSE,FLINK,BLINK,%INTEGER X1,
%RECORD(RD) OPND1,OPND2)
==== ercc07/pascio15s.txt ====
!*
!*
!***********************************************************************
!***********************************************************************
!* *
!* P A S C A L R U N T I M E S U P P O R T L I B R A R Y *
!* *
!***********************************************************************
!***********************************************************************
!*
!*
!* History
!* -------
!*
!* Version 1.0 for Perq2 and Perq3. (agh)
!* 29/04/86 - Fix field-width bug in WriteWord.
!* 03/05/86 - Introduce CheckName to validate file names.
!* 05/05/86 - Revised treatment of file names. Remove close error
!* check from reset, rewrite and append. Add New3 and
!* Dispose3.
!* 06/05/86 - In ExtendHeap chain blocks correctly.
==== ercc07/docs_vaxaa.txt ====
Vax Architectural Assessment
============================
a) Virtual Memory
The Vax provides a 32 bit virtual memory of which half is reserved for the
system - this is very comparable to 2900 with two 31 bit virtual memory -
public and local. Here however the similarity ends; while 2900 provides 8192
segments of 256 pages the Vax provides only 2**21 pages. The segmented scheme
provides several advantages in that the protection mechanism is more
economically administered via segments than pages and it is less wasteful to
find space for a separate page table for each actual segment in use than to keep
one large contiguous one. Vax does allow the page tables themselves to be paged
which neatly avoids the store management problem at the non trivial cost of
further virtual store interrupts. The Vax scheme does result in some pressure on
the "spare" bits in the page table (ie those not required for the base address
of the page). The protection information is compressed into four bits per page
as against the 2900 which allows 10 bits per segment. As a result of this there
is not a "used" bit in the Vax page tables which makes it very difficult for the
operating system to discover which pages a program is using. This must be
regarded as a serious defect which will be particularly noticeable at the very
==== ercc07/emasgen02s.txt ====
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
! Opnd2 is either a 32 bit const with the size (ACC) as value or
! the ptr or arrayhead as normal operand.
!
! VMY X1 is now dim<<28!maxdim<<24!array name(where known)
! Opnd2 is either a 32 bit const with DV offset into const area or
! the arrayhead as a standard operand
!
! AINDX X1 is ELSIZE<<20 !spare
! Opnd2 is arrayhead as standard operand
! NOTE:- The Operands have been swopped for consistency with norm.
!
==== ercc07/pasc10s.txt ====
!*
!*
!***********************************************************************
!***********************************************************************
!* *
!* P A S C A L R U N T I M E S U P P O R T L I B R A R Y *
!* *
!***********************************************************************
!***********************************************************************
!*
!*
!* History
!* -------
!*
!* Version 1.0 for Perq2 and Perq3. (agh)
!* 29/04/86 - Fix field-width bug in WriteWord.
!* 03/05/86 - Introduce CheckName to validate file names.
!* 05/05/86 - Revised treatment of file names. Remove close error
!* check from reset, rewrite and append. Add New3 and
!* Dispose3.
!* 06/05/86 - In ExtendHeap chain blocks correctly.
==== ercc07/makeorn_opt.txt ====
offer oopts
edit opt03s,oopts
i<itrimp_ornoptas>
ta/%inc/
d1i<itrimp_hostcodes>
a'
d1i<itrimp_tform2s>
a'
d1i<tripcnsts>
e
imp oopts,.null
offer oopts,ecsc64
==== ercc07/make386_gen.txt ====
offer d386gens
parm nolist,nocheck
edit drsgen04s,d386gens
a/%incl/d1i<itrimp_hostcodes>
a'd1i<ercs01:ebits_ecodes8>
a'd1i<tripcnsts>
a'd1i<itrimp_tform2s>
a'd1i<ercs01:ebits_especs2>
r/p0=2/i/P0=4/
e
imp d386gens,.null
offer d386gens,zepz06
==== ercc07/gbits_ggen67s.txt ====
! ggen67i4
! Changes to support new Imp front end including maked,splitd
! and proper handline of procedures called formally
! ggen67i3
! 31/12/87 - Estkparind to use local base if imp
! ggen67i2
! 23/11/87 - Take out SUI, and SRC
! ggen67
! 25/04/87 - update ERBIT, EWBIT to UTX definitions
! ggen65
! 17/04/87 - use correct np names div_jj, mpy_jj
! ggen64
! 16/04/87 - support unsigned int comparison
! ggen61
! 01/04/87 - support ERBIT, EWBIT
! ggen60
! 18/03/87 - correct pow_cc and pow_zz entries
! ggen59
! 28/02/87 - incorporate integer*8 support (ex ggen36u)
! - incorporate C support (ex ggen54c)
! ggen58
==== ercc07/vnslink.txt ====
LINK
ERCC07:vp1Y
ERCC07:vp22Y
ERCC07:voPT3Y
ERCC07:vGEN0Y
ERCC07:CSERV01x
ercs01:EBITS_etrput1y
.END
P0Y
MODIFY P0Y
SATISFY REFS
.ALL
SATISFY DATA
.ALL
SUPPRESS
.ALL
RETAIN
ICL9CEZVNSIMP
SUPPRESS DATA
.ALL
CLOSE
==== ercc07/usyslink.txt ====
LINK
ERCC07:Up1Y
ERCC07:Up22Y
ERCC07:UoPT3Y
ERCC07:UGEN0Y
ERCC07:CSERV01x
ercs01:EBITS_etrput1y
.END
P0Y
MODIFY P0Y
SATISFY REFS
.ALL
SATISFY DATA
.ALL
SUPPRESS
.ALL
RETAIN
ICL9CEZUNISYSIMP
SUPPRESS DATA
.ALL
CLOSE
==== ercc07/makevax_bgen.txt ====
edit vbootgen1s,vb1s
a/%inc/d1i<ercc07:itrimp_hostcodes>
a'd1i<ercc07:vaxspecs>
a'd1i<ercc07:vaxopcodes>
a'd1i<ercs01:ebits_ecodes28>
a'd1i<ercs01:ebits_enames21>
ta/host=/r5i/Vax/
e
parm nocheck,noarray
vaximp vb1s,vb1xx
transfer vb1xx,ercvax(ercc07,peathag)vbgen.obj,file,bin
==== ercc07/pascio16s.txt ====
!*
!*
!***********************************************************************
!***********************************************************************
!* *
!* P A S C A L R U N T I M E S U P P O R T L I B R A R Y *
!* *
!***********************************************************************
!***********************************************************************
!*
!*
!* History
!* -------
!*
!* Version 1.0 for Perq2 and Perq3. (agh)
!* 29/04/86 - Fix field-width bug in WriteWord.
!* 03/05/86 - Introduce CheckName to validate file names.
!* 05/05/86 - Revised treatment of file names. Remove close error
!* check from reset, rewrite and append. Add New3 and
!* Dispose3.
!* 06/05/86 - In ExtendHeap chain blocks correctly.
==== ercc07/cliba01s.txt ====
!***********************************************************************
!* *
!* RUN-TIME CODE FOR THE C COMPILER *
!* FOR BOTH VME AND EMAS *
!* *
!***********************************************************************
%CONST %INTEGER ISO=0
%CONST %INTEGER EBCDIC=1
%CONST %INTEGER VME= 0
%CONST %INTEGER EMAS= 1
%CONST %INTEGER emasa=2
!***********************************************************************
!* *
!* SET CHCODE = ISO FOR EMAS *
!* = EBCDIC FOR VME *
!* *
!* SET TARGET = EMAS FOR EMAS *
!* = VME FOR VME *
!* *
!* For VME external function names must start with ICL9CA *
==== ercc07/portenv03_matrixs.txt ====
%include "itrimp_hostcodes"
%CONSTINTEGER TARGET=M88K
!%EXTERNALROUTINESPEC IOCP %ALIAS "s_iocp"(%INTEGER EP,N)
%EXTERNALINTEGERFN BITS(%INTEGER X)
%INTEGER I,J
J=0
J=J+X&1 %AND X=X>>1 %WHILE X#0
%RESULT=J
%END
%EXTERNALINTEGERFN PARITY(%INTEGER I)
%RESULT=1-(I&1)*2
%END
%EXTERNALROUTINE SOLVE LN EQ(%LONGREALARRAYNAME A,B, %INTEGER N,
%LONGREALNAME DET)
%LONGREAL AMAX,CH
%INTEGER I,J,J MAX,S
->L3 %IF N>0
PRINTSTRING("
SOLVE LN EQ DATA FAULT: N=")
WRITE(N,2); NEWLINE; %STOP
L3: ->L1 %IF N>1
==== ercc07/ctoptv7l.txt ====
!
! Compile time options for EMAS/370
!
%constinteger YES=1,NO=0,AMDAHL=2
%constinteger XA=AMDAHL; ! yes for 370/XA
%constinteger VA MODE=YES; ! yes for Supervisor, no for Chopsupe
%constinteger MULTI OCP=NO; ! yes to include semaphoring
%constinteger CRFITTED=YES; ! card reader
%constinteger CPFITTED=YES; ! card punch
%constinteger SNOOZING=YES; ! allow suspend in store
%constinteger PRODUCTION=NO; ! yes for continuing after S/W errors
%constinteger MONLEVEL=x'3F'; ! 0 = no monitoring
! 2**0 = video updating
! 2**1 = KMONning
! 2**2 = sup timing measurements
! 2**3 = a-c for cross calls
! 2**4 = strobing
! 2**5 = cat table transitions
! 2**8 = event harvesting
%constinteger P4PERCENT=11; ! max % of free store for large jobs
%constinteger MAXPROCS=256; ! max concurrent procs (64,128 or 256)
==== ercc07/ctotals.txt ====
parm r8,nowarnings,nolist,nodiag,nocheck,noarray,noline
pascal totals,totaly,.out
==== ercc07/algtests_data55.txt ====
run ay
0.01; 0.02; 0.03; 0.04; 0.05;
0.06; 0.07; 0.08; 0.09; 0.10;
0.11; 0.12; 0.13; 0.14; 0.15;
0.16; 0.17; 0.18; 0.19; 0.20;
0.21; 0.22; 0.23; 0.24; 0.25;
0.26; 0.27; 0.28; 0.29; 0.30;
0.31; 0.32; 0.33; 0.34; 0.35;
0.36; 0.37; 0.38; 0.39; 0.40;
0.41; 0.42; 0.43; 0.44; 0.45;
0.46; 0.47; 0.48; 0.49; 0.50;
0.51; 0.52; 0.53; 0.54; 0.55;
0.56; 0.57; 0.58; 0.59; 0.60;
0.61; 0.62; 0.63; 0.64; 0.65;
0.66; 0.67; 0.68; 0.69; 0.70;
0.71; 0.72; 0.73; 0.74; 0.75;
0.76; 0.77; 0.78; 0.79; 0.80;
0.81; 0.82; 0.83; 0.84; 0.85;
0.86; 0.87; 0.88; 0.89; 0.90;
0.91; 0.92; 0.93; 0.94; 0.95;
0.96; 0.97; 0.98; 0.99; 1.00;
==== ercc07/algtests_at200.txt ====
'PROGRAM'PETE;
'BEGIN'
'PROCEDURE'JIM(L,S,ST); 'VALUE'L; 'LABEL'L; 'SWITCH'S;
'STRING'ST; 'ALGOL';
'PROCEDURE'FRED; 'EXTERNAL';
'PROCEDURE'GILES; 'FORTRAN';
'OWN''REAL'X; 'INTEGER'I,J,K; 'BOOLEAN'B1,B2; 'ARRAY'A[1:10];
'FOR'I:=1 'STEP'1 'UNTIL'10,I+1 'WHILE'B1'AND''TRUE''DO'
'IF'K 'GT'J 'OR'K 'GE'J 'THEN''GOTO'END 'ELSE''GO''TO'END;
B1:= I 'EQ'J 'IMPL'K 'NE'J 'EQUIV''FALSE';
B2:='NOT'K 'LE'K 'OR'K 'LT'J;
'CODEON';
'CODEOFF';
I:=(J'DIV'K)'POWER'I;
'COMMENT'ALL KEYWORDS USED;
END:'END'TEST PROG
==== ercc07/algtests_at201.txt ====
'COMMENT' CHECK THAT FAULTY ASSIGNMENT TO PROCEDURE NAME IS DETECTED;
'BEGIN'
'INTEGER'C;
'INTEGER''PROCEDURE' CHSP(U); 'INTEGER'U;
'BEGIN' 'INTEGER'X;
'IF' U<CODE({A}) 'THEN' X:=0 'ELSE' X:=1;
CHSP(U):=X
'END';
C:=0;
CHSP(C)
'END';
==== ercc07/algtests_at202.txt ====
'BEGIN' 'INTEGER'I,J; 'REAL' X;
J:=15;
'FOR' I:=-10 'STEP' 1 'UNTIL' 10 'DO' 'BEGIN'
X:=9.987654321*10**I;
PRINT(X,0,10); PRINT(X*10**15,0,10);
PRINT(X*10**1,0,10);
NEWLINE
'END';
'END';
==== ercc07/algtests_at203.txt ====
'COMMENT' CHECK THAT FAULTY ASSIGNMENT TO PROCEDURE NAME IS DETECTED;
'BEGIN'
'INTEGER'C;
'INTEGER''PROCEDURE' CHSP(U); 'INTEGER'U;
'BEGIN' 'INTEGER'X;
'IF' U<CODE({A}) 'THEN' X:=0 'ELSE' X:=1;
CHSP(U):=X
'END';
C:=0;
CHSP(C)
'END';
==== ercc07/algtests_at204.txt ====
'BEGIN' 'INTEGER'I,J; 'REAL' X;
J:=15;
'FOR' I:=-10 'STEP' 1 'UNTIL' 10 'DO' 'BEGIN'
X:=9.987654321*10**I;
PRINT(X,0,10); PRINT(X*10**15,0,10);
PRINT(X*10**1,0,10);
NEWLINE
'END';
'END';
==== ercc07/algtests_at205.txt ====
'COMMENT' CHECK THAT FAULTY ASSIGNMENT TO PROCEDURE NAME IS DETECTED;
'BEGIN'
'INTEGER'C;
'INTEGER''PROCEDURE' CHSP(U); 'INTEGER'U;
'BEGIN' 'INTEGER'X;
'IF' U<CODE({A}) 'THEN' X:=0 'ELSE' X:=1;
CHSP(U):=X
'END';
C:=0;
CHSP(C)
'END';
//ALGOL
'BEGIN' 'INTEGER'I,J; 'REAL' X;
J:=15;
'FOR' I:=-10 'STEP' 1 'UNTIL' 10 'DO' 'BEGIN'
X:=9.987654321*10**I;
PRINT(X,0,10); PRINT(X*10**15,0,10);
PRINT(X*10**1,0,10);
NEWLINE
'END';
==== ercc07/algtests_at206.txt ====
'COMMENT' CHECK ON NONTERMINATING FOR LOOPS IN OPT MODE;
'BEGIN' 'INTEGER'I
;'FOR' I:= 1 'STEP' 1 'UNTIL' 3 'DO' PRINT(I,3,0);
NEWLINE;
'FOR' I:= 1 'STEP' 2 'UNTIL' 5 'DO' PRINT (I,3,0);
NEWLINE;
PRINT(I,3,0)
'END'
==== ercc07/algtests_at207.txt ====
'BEGIN''INTEGER'I;
'INTEGER''PROCEDURE' TCODE(S); 'STRING' S;
TCODE:=CODE(S);
PRINT(TCODE({A}),3,3)
'END'
==== ercc07/portenv01s.txt ====
%CONSTINTEGER YES=1,NO=0
!
! THESE CODE ARE ARBITARY BUT THE TOP DECIMAL DIGIT GIVES THE NO OF BYTES
! IN THE UNIT OF ADDRESSABILITY. BYTE ADDRESSES HOSTS BEING 1N AND
! 16 BIT WORD ADDRESSED HOSTS BEING 2N ETC
%CONSTINTEGER EMAS=10
%CONSTINTEGER IBM=11
%CONSTINTEGER IBMXA=12
%CONSTINTEGER DRS=13
%CONSTINTEGER AMDAHL=14
%CONSTINTEGER PERQ=20
%CONSTINTEGER PNX=21
%CONSTINTEGER ACCENT=22
! ACCENT DIFFERS FROM PERQ ONLY IN
! ASSEMBLES SEQUENCES&SYNTAX
! AND GENERATOR
%CONSTINTEGER LINTAVAIL=1<<AMDAHL!1<<IBM!1<<IBMXA!1<<EMAS
%CONSTINTEGER LLREALAVAIL=1<<AMDAHL!1<<IBM!1<<IBMXA!1<<EMAS
%CONSTINTEGER TARGET=IBMXA
==== ercc07/algtests_at1.txt ====
'BEGIN'
'REAL' X;
'INTEGER' I;
I := 10000000000000000000000000;
X := 1.0&999
'END'
==== ercc07/algtests_at2.txt ====
'BEGIN'
'REAL' AUTOCORRELATIONCOEFFICIENTNUMBER1;
AUTOCORRELATIONCOEFFICIENTNUMBER1 := 0.0;
'BEGIN'
'REAL' AUTOCORRELATIONCOEFFICIENTNUMBER2;
AUTOCORRELATIONCOEFFICIENTNUMBER2 := 1.0;
OUTREAL(99, AUTOCORRELATIONCOEFFICIENTNUMBER1 +
AUTOCORRELATIONCOEFFICIENTNUMBER2 )
'END'
'END'
==== ercc07/algtests_at3.txt ====
L1:
'BEGIN'
'IF' 1 = 2 'THEN'
'GOTO' L1
'END'
==== ercc07/algtests_at4.txt ====
SIN: COS:
'BEGIN'
'REAL' SIN;
SIN := 0.0
'END'
==== ercc07/algtests_at5.txt ====
L1:
'IF' 1 = 2 'THEN'
'GOTO' L1
==== ercc07/algtests_at6.txt ====
'BEGIN'
'INTEGER' X, Y, Z;
X := Y := Z := 1.0;
'IF' X < Y < Z 'THEN'
'END'
==== ercc07/algtests_at7.txt ====
'BEGIN'
'BOOLEAN'
ASSIGN;
'PROCEDURE' P(X);
'REAL'
X;
'BEGIN'
OUTREAL(99, X);
'IF' ASSIGN 'THEN'
X := 3.14;
'END';
'REAL'
X,
Y;
ASSIGN := 'FALSE';
P(1.0);
X := Y := 2.0;
P(X + Y);
ASSIGN := 'TRUE';
P(X);
P(1.0);
==== ercc07/algtests_at8.txt ====
'BEGIN'
'REAL' X, Y;
X := Y := 0.0;
'REAL' Z;
'END'
==== ercc07/oldps.txt ====
%EXTERNALROUTINE OLDPS(%STRING (63) S)
%EXTERNALROUTINESPEC DATE %alias "EMAS3DATE"(%STRING (*) %NAME S)
%INTEGER I,J,K,SS,NBIP,SSYM
%STRING (31) ST49,ST50,ST51
%STRING (127) HEADER
%EXTERNALROUTINESPEC EMAS3(%STRINGNAME CMD,PARAMS, %INTEGERNAME FLAG)
%INTEGERARRAY CLETT(0:1000),SYMBOL(1300:3000),CC(0:300)
%INTEGER CNEXT,DNEXT,CNUM,DNUM,ALT,DEF,ASL,NIDFLAG,EFLAG
%INTEGERARRAY KK,PUSE,DWORD(1001:1200),DLETT(0:1000),CWORD(1:200)
%ROUTINESPEC READ STRING(%INTEGER TERMINATOR)
%ROUTINESPEC RECORD(%INTEGERARRAYNAME WORD,LETT, %INTEGERNAME NUM,NEXT)
%ROUTINESPEC LOOK UP(%INTEGERARRAYNAME WORD,LETT, %INTEGER FIRST,LAST,INSERT)
%ROUTINESPEC PDDICT
%ROUTINESPEC PRINT STR(%INTEGERARRAYNAME CC, %INTEGER PTR)
%ROUTINESPEC PCDICT
%UNLESS S->ST49.(",").ST50.(",").ST51 %THEN %C
PRINTSTRING("PARAMS?????") %AND NEWLINE %ANDRETURN
EMAS3("DEFINE","ST49,".ST49,EFLAG)
EMAS3("define","ST50,".ST50,EFLAG)
EMAS3("define","ST51,".ST51,EFLAG)
==== ercc07/algtests_at9.txt ====
'BEGIN'
'COMMENT' A SYNTAX PASS IS REQUIRED TO REMOVE COMMENTS;
'PROCEDURE' P( ST );'COMMENT' ST IS A STRING;'COMMENT';
'STRING' ST; ;'COMMENT' DUMMY BODY;
P( <;'COMMENT'<;>> );
'BEGIN'
'PROCEDURE' Q( A ) PARAMETER COMMENT :( B );
'REAL' A, B; ;'COMMENT' DUMMY AGAIN;
Q( 1.0, 2.5 ); 'COMMENT' IS THE SAME AS;
Q( 1.0) WITH PARAMETER COMMENT:( 2.5 );
'END' COMMENT CAN INCLUDE MOST BASIC SYMBOLS 'FOR'
'WHILE' 'THEN''IF' 'DO' := 'BEGIN'( WHICH ARE NOT MATCHED;
'END'
==== ercc07/portenv02s.txt ====
%CONSTINTEGER YES=1,NO=0
!
! THESE CODE ARE ARBITARY BUT THE TOP DECIMAL DIGIT GIVES THE NO OF BYTES
! IN THE UNIT OF ADDRESSABILITY. BYTE ADDRESSED HOSTS BEING 1N ( also 0N) AND
! 16 BIT WORD ADDRESSED HOSTS BEING 2N ETC
%CONSTINTEGER VAX=08; ! Imp on Vax using F & G formats
%CONSTINTEGER UNISYS=09; ! Imp on UnisSys. Unix stack unswopped Vax reals
%CONSTINTEGER EMAS=10; ! emas on 2900 (unsigned shorts)
%CONSTINTEGER IBM=11; ! emas on 24 bit ibm hardware
%CONSTINTEGER IBMXA=12; ! emas of XA 31 bit hardware
%CONSTINTEGER WWC=13; ! WWc (Natsemi chip) completely swopped
%CONSTINTEGER AMDAHL=14; ! Emas on Amdahls guess at Xa Minor differences fron IBM)
%CONSTINTEGER PERQ3=15; ! ICL packaged 68k chip Unix stack but not swopped
%CONSTINTEGER GOULD=16; ! Gould unswopped forward stack. Needs 4&8 byte alined
%CONSTINTEGER VNS=17; ! Unix on 2900 unsigned shorts params as
! 2900. Long int available but not in Ecode
%CONSTINTEGER EAMD=18; ! Amdahl via the Emachine
%CONSTINTEGER DRS=19; ! Intel chip Unix stack and mostly swopped
%CONSTINTEGER PERQ=20; ! Pos perq now obselete. Fully swopped forward stack
==== ercc07/algtests_data75.txt ====
RUN AY
3.33333333333333326@ -1;
1.25000000000000000@ -1;
6.66666666666666652@ -2;
4.16666666666666652@ -2;
2.85714285714285721@ -2;
2.08333333333333326@ -2;
1.58730158730158721@ -2;
1.25000000000000000@ -2;
1.01010101010101017@ -2;
8.33333333333333326@ -3;
6.99300699300699291@ -3;
5.95238095238095211@ -3;
5.12820512820512819@ -3;
4.46428571428571397@ -3;
3.92156862745098045@ -3;
3.47222222222222210@ -3;
3.09597523219814241@ -3;
2.77777777777777768@ -3;
2.50626566416040086@ -3;
==== ercc07/trimp_accptwoas.txt ====
%TRUSTEDPROGRAM
%EXTERNALROUTINE ICL9CEZACCIMP
%CONSTINTEGER RELEASE=4
%INCLUDE "ERCC07.TRIMP_HOSTCODES"
%CONSTINTEGER HOST=EMAS
%CONSTINTEGER TARGET=ACCENT
%CONSTINTEGER STANDARDPT=X'41'
%CONSTINTEGER MINAPT=X'41'; ! MINIMUM PTYPE FOR WHICH ARITHMETIC
! OPERATORS ARE AVAILABLE
%CONSTINTEGER MINAPREC=MINAPT>>4
%CONSTHALFINTEGERARRAY TYPEFLAG(0:12)=0,
X'51'{%INTEGER},
X'52'{%REAL},
X'8009'{%LONG SOMETHING},
X'4031'{%BYTE},
X'35'{%STRING},
X'6051'{%HALF->%INTEGER+WARNING},
X'4041'{%SHORT},
X'33'{%RECORD},
0,
X'1051'{%LONG INTEGER FAULT},
==== ercc07/trimp_impmess.txt ====
1 "%REPEAT is not required"
2 "Label & has already been set in this block"
3 "Jump into %CYCLE at Label & from line #"
4 "& is not a Switch name at current textual level"
5 "Switch name & in expression or assignment"
6 "Switch label &(#) set a second time"
7 "Name & has already been declared"
8 "Routine or fn & has more parameters than specified"
9 "Parameter # of & differs in type from specification"
10 "Routine or fn & has fewer parameters than specified"
11 "Label & referenced at line # has not been set"
12 "%CYCLE at line # has two control clauses"
13 "%REPEAT for %CYCLE at line # is missing"
14 "%END is not required"
15 "# %ENDs are missing"
16 "Name & has not been declared"
17 "Name & does not require parameters or subscripts"
18 "# too few parameters provided for &"
19 "# too many parameters provided for &"
20 "# too few subscripts provided for array &"
==== ercc07/ibmlink.txt ====
LINK
IP1X
IP2X
IOPTX
IGEN2X
CSERV01oX
ercs12:ibmsce2_trputy
.END
P0Y
MODIFY P0Y
SATISFY REFS
.ALL
SATISFY DATA
.ALL
SUPPRESS
.ALL
RETAIN
ICL9CEZIBMIMP,PGENERATEOBJECT
SUPPRESS DATA
.ALL
CLOSE
==== ercc07/gbits_gldmf17s.txt ====
%conststring(50) reldate = " Imp version 8/aug/87
"
{ Compilation Control routine for PNX }
{ Begun 14/oct/83 - Alan }
{ Revised 30/dec/83 }
{ rel 1.2 12/dec/84 accept -N(dltb) compile2}
{ rel 1.3 17/dec/84 accept -N(dltba) compile3}
{ rel 1.6 20/feb/84 fix include non-existant file compile4 }
{ -i => -A; -r => -v }
{ rel1.1(G) delete objectfile if compilation fails }
{ rel1.1(K) -A => -q }
{ rel1.2(A) forbid diagnostic options with optimising ones - compile7 }
{ rel1.2(B) Add routine DeleteObjectFile - compile8 15/Oct/85}
{ rel1.2(C) Check local filename length < 14 chars. compile9.i 9/dec/85}
{ alter for 680020 Fortran by using fort77 and P -> M }
{ rel0.1 Check -P text for UNSET before calling SetSigs. This is a }
{ consequence of ditching FORTENTRY in favour of /lib/crt0.o}
{ Control is received by routine COMPILE aliased to "main" }
{ (Driver7)}
{ rel0.2 -L becomes -G (use Driver8 for compatibility) }
==== ercc07/asss.txt ====
%externalroutine icl9cezassemble
%external %integer %map %spec COMREG %alias "S#COMREGMAP"(%integer N)
{* IBM XA Code Planting routinespecs *}
{******** Monitoring *********}
{ Parm CODE will cause a line by line decode of instructions }
{ Monitoring of all non-code planting is turned on by PMonOn or bit 1 of }
{ COMREG(26). Monitoring of code planting is turned on by bit 2 of COMREG(26) }
{ COMREG(26)=128 causes decoding of each instruction as planted }
{ COMREG(26)=256 causes decoding of the whole code area after fixups }
{* The following routinespecs have been provided initially, corresponding to the *}
{* formats given in the "Principles of Operation". *}
%externalroutinespec PIX RR %alias "S#PIXRR" (%integer Op, R1, R2)
{ Plant RR format instruction }
%externalroutinespec PIX RRE %alias "S#PIXRRE"(%integer Op, R1, R2)
{ Plant RRE format instruction }
==== ercc07/trimp_oaccponeas.txt ====
%INCLUDE "ERCC07.TRIMP_HOSTCODES"
%CONSTINTEGER HOST=EMAS
%CONSTINTEGER TARGET=ACCENT
! PRODUCED BY OLDPS FROM TRIMP_PERQPS01 ON 06/09/83
%CONSTBYTEINTEGERARRAY CLETT(0: 436)= 1,
40, 1, 41, 1, 42, 1, 44, 2, 201, 198, 6, 213, 206, 204,
197, 211, 211, 5, 215, 200, 201, 204, 197, 5, 213, 206, 212, 201,
204, 3, 198, 207, 210, 1, 61, 5, 193, 204, 201, 193, 211, 7,
201, 206, 212, 197, 199, 197, 210, 4, 210, 197, 193, 204, 4, 204,
207, 206, 199, 4, 194, 217, 212, 197, 6, 211, 212, 210, 201, 206,
199, 4, 200, 193, 204, 198, 5, 211, 200, 207, 210, 212, 6, 210,
197, 195, 207, 210, 196, 7, 210, 207, 213, 212, 201, 206, 197, 2,
198, 206, 3, 205, 193, 208, 8, 198, 213, 206, 195, 212, 201, 207,
206, 4, 206, 193, 205, 197, 9, 193, 210, 210, 193, 217, 206, 193,
205, 197, 9, 207, 198, 208, 210, 207, 199, 210, 193, 205, 6, 207,
198, 198, 201, 204, 197, 6, 207, 198, 204, 201, 211, 212, 6, 198,
207, 210, 205, 193, 212, 3, 206, 207, 212, 3, 193, 206, 196, 2,
207, 210, 1, 58, 4, 211, 208, 197, 195, 5, 193, 210, 210, 193,
217, 3, 207, 215, 206, 8, 197, 216, 212, 197, 210, 206, 193, 204,
9, 197, 216, 212, 210, 201, 206, 211, 201, 195, 8, 195, 207, 206,
211, 212, 193, 206, 212, 5, 195, 207, 206, 211, 212, 5, 197, 214,
==== ercc07/portenv03s.txt ====
%CONSTINTEGER YES=1,NO=0
!
! THESE CODE ARE ARBITARY BUT THE TOP DECIMAL DIGIT GIVES THE NO OF BYTES
! IN THE UNIT OF ADDRESSABILITY. BYTE ADDRESSED HOSTS BEING 1N ( also 0N) AND
! 16 BIT WORD ADDRESSED HOSTS BEING 2N ETC
%CONSTINTEGER VAX=08; ! Imp on Vax using F & G formats
%CONSTINTEGER UNISYS=09; ! Imp on UnisSys. Unix stack unswopped Vax reals
%CONSTINTEGER EMAS=10; ! emas on 2900 (unsigned shorts)
%CONSTINTEGER IBM=11; ! emas on 24 bit ibm hardware
%CONSTINTEGER IBMXA=12; ! emas of XA 31 bit hardware
%CONSTINTEGER WWC=13; ! WWc (Natsemi chip) completely swopped
%CONSTINTEGER AMDAHL=14; ! Emas on Amdahls guess at Xa Minor differences fron IBM)
%CONSTINTEGER PERQ3=15; ! ICL packaged 68k chip Unix stack but not swopped
%CONSTINTEGER GOULD=16; ! Gould unswopped forward stack. Needs 4&8 byte alined
%CONSTINTEGER VNS=17; ! Unix on 2900 unsigned shorts params as
! 2900. Long int available but not in Ecode
%CONSTINTEGER EAMD=18; ! Amdahl via the Emachine
%CONSTINTEGER DRS=19; ! Intel chip Unix stack and mostly swopped
%CONSTINTEGER PERQ=20; ! Pos perq now obselete. Fully swopped forward stack
==== ercc07/heap1s.txt ====
%include "itrimp_hostcodes"
%constinteger host=IBMXA
%constinteger target=vax
%constinteger wordad=0
%externalintegermapspec comreg %ALIAS "S#COMREGMAP"(%integer n)
%routinespec phex%alias "S#PHEX"(%integer n)
%externalintegerfnspec getspace(%integer sizeinbytes)
%recordformat heapfm(%integer link,id,item1,item2)
%constinteger endoflist=0
%owninteger mon=0,free,heapinc,heapad,numels,tot=0
%routine format heap(%integer ad)
%record(heapfm) %arrayformat heapafm(1:100000)
%record(heapfm) %arrayname heap
%integer i
heap == array(ad,heapafm)
free = ad
heap(i)_link=addr(heap(i+1)) %for i=1,1,numels-1
==== ercc07/trimp_emasponeas.txt ====
%INCLUDE "ERCC07.TRIMP_HOSTCODES"
%CONSTINTEGER HOST=EMAS
%CONSTINTEGER TARGET=EMAS
! PRODUCED BY OLDPS FROM EMASPS01 ON 06/12/83
%CONSTBYTEINTEGERARRAY CLETT(0: 472)= 1,
40, 1, 41, 1, 42, 1, 44, 2, 201, 198, 6, 213, 206, 204,
197, 211, 211, 5, 215, 200, 201, 204, 197, 5, 213, 206, 212, 201,
204, 3, 198, 207, 210, 1, 61, 5, 193, 204, 201, 193, 211, 7,
201, 206, 212, 197, 199, 197, 210, 4, 210, 197, 193, 204, 4, 204,
207, 206, 199, 4, 194, 217, 212, 197, 6, 211, 212, 210, 201, 206,
199, 4, 200, 193, 204, 198, 5, 211, 200, 207, 210, 212, 6, 210,
197, 195, 207, 210, 196, 7, 210, 207, 213, 212, 201, 206, 197, 2,
198, 206, 3, 205, 193, 208, 8, 198, 213, 206, 195, 212, 201, 207,
206, 4, 206, 193, 205, 197, 9, 193, 210, 210, 193, 217, 206, 193,
205, 197, 9, 207, 198, 208, 210, 207, 199, 210, 193, 205, 6, 207,
198, 198, 201, 204, 197, 6, 207, 198, 204, 201, 211, 212, 6, 198,
207, 210, 205, 193, 212, 3, 206, 207, 212, 3, 193, 206, 196, 2,
207, 210, 1, 58, 4, 211, 208, 197, 195, 5, 193, 210, 210, 193,
217, 3, 207, 215, 206, 8, 197, 216, 212, 197, 210, 206, 193, 204,
9, 197, 216, 212, 210, 201, 206, 211, 201, 195, 8, 195, 207, 206,
211, 212, 193, 206, 212, 5, 195, 207, 206, 211, 212, 5, 197, 214,
==== ercc07/trimp_emasoptas.txt ====
%INCLUDE "ERCC07.TRIMP_HOSTCODES"
%CONSTINTEGER HOST=EMAS
%CONSTINTEGER TARGET=EMAS
==== ercc07/trimp_pnxopt01s.txt ====
%INCLUDE "ERCC07.TRIMP_TFORM1S"
%INCLUDE "ERCC07.TRIPCNSTS"
%EXTRINSICRECORD(WORKAF) WORKA
%EXTRINSICRECORD(PARMF) PARM
%CONSTINTEGER YES=1
%CONSTINTEGER NO=0
%EXTERNALROUTINESPEC IMPABORT
%EXTERNALROUTINESPEC FAULT(%INTEGER N,DATA,IDENT)
%EXTERNALROUTINESPEC PRINT TRIPS(%RECORD(TRIPF) %ARRAYNAME TRIPLES)
%CONSTBYTEINTEGERARRAY WORDS(0:7)=0(3),1,1,1,2,4;
%ROUTINE EXTRACT(%RECORD(RD) %NAME OPND, %INTEGERNAME VAL,
%LONGREALNAME RVAL, %STRINGNAME STRVAL)
!***********************************************************************
!* EXTRACTS A CONTANT OPERAND RETURNING REAL &INT VALUES *
!***********************************************************************
%INTEGER TYPE,PREC,I,AD
TYPE=OPND_PTYPE; PREC=TYPE>>4
TYPE=TYPE&15
VAL=0; RVAL=0; STRVAL=""
%IF TYPE=5 %START
==== ercc07/makevax_p1.txt ====
edit poneb02s,VP1S
i<itrimp_VAXponeas>
ta/%inc/
d1i<itrimp_hostcodes>
a'
d1i<itrimp_tform2s>
m/%constlonglongreal/
TA/HOST=/I/VAX
/D1P-2
e
PARM NOCHECK
VAXIMP VP1S,VP1XX
TRANSFER VP1XX,ERCVAX(ERCC07,PEATHAG)VP1.OBJ,FILE,BIN
==== ercc07/makevax_p2.txt ====
edit timp03s,vp2s
i<itrimp_vaxptwoas>
ta/%inc/
d1i<itrimp_hostcodes>
a'
d1i<tripcnsts>
a'
d1i<itrimp_tform2s>
ta/host=/i/Vax
/d1
e
parm nocheck,noarray,nolist
vaximp vp2s,vp2xx,vp2l
transfer vp2xx,ercvax(ercc07,peathag)vp2.obj,file,bin
==== ercc07/vaxcom_clink.txt ====
$ link/map imp80,pim,vp1,vp2,vpo,vp4,cserv,vbgen,vput3,compio,vaxiocp,csrce,penv,vndiag,sys$input/opt
sys$share:vaxcrtl.exe/share
==== ercc07/stuconsts.txt ====
%OWNBYTEINTEGERARRAYNAME TOKENS
%OWNINTEGER TOKENPTR,IVALUE,CTYPE
%OWNLONGREAL CVALUE
%INTEGERFN CONST(%INTEGER MODE)
!***********************************************************************
!* MODE=0 FOR NORMAL MODE=2 INTEGER CONSTANTS *
!* %RESULT=0 for failure, %RESULT=1 if vali constant found *
!* If ok then ctype=1 for integer const,=2 for real const *
!* real value put into global CVALUE, if integer then it *
!* the integer part is put into global ivalue *
!***********************************************************************
%INTEGER I,Z
%LONGLONGREAL CV,X
CV=0; I=TOKENS(TOKENPTR); CTYPE=1
IVALUE=0; ->N %IF M'0'<=I<=M'9'
->DOT %IF I='.' %AND MODE=0
! 1 digit is the MINIMUM constant
%IF I='@' %AND MODE=0 %THEN CV=1 %AND ->ALPHA
%RESULT=0
N: I=I&15; CV=10*CV+I
TOKENPTR=TOKENPTR+1; I=TOKENS(TOKENPTR)
==== ercc07/makevax_p4.txt ====
edit vaxp41s,vp4s
a/%incl/d1i<itrimp_hostcodes>
a'd1i<ercs01:ebits_ecodes28>
a'd1i<tripcnsts>
a'd1i<itrimp_tform2s>
a'd1i<ercs01:ebits_especs5>
ta/host=/i/vax
/d1p-1
e
parm nocheck,nolist
vaximp vp4s,vp4xx
transfer vp4xx,ercvax(ercc07,peathag)vp4.obj,file,bin
==== ercc07/sdbblurb.txt ====
In ELF (Etymology ELF=Extended load Format) SDB information is
highly structured and placed in a separate area (.debug) from symbol
table information. The debug area has many cross links with itself and
other areas so that variables are owned by subroutines, members by
structures etc. It is not possible for the compiler to construct .debug
without help from the Ecode modules so it seems best for PUT to provide
an interface for the front ends
On the plus side ELF SDB information is very general and can cope
with records,structures and enumeration types etc via user define
typing. There are also a selection of fundamental types. Location
information is also extremely general via a do-it-yourself reverse
polish calculation kit that is able to cope with exceeding complex
calculations.
The following routine is suggest as the interface for variables.
Further routines to add arrays,structures etc as user types will be
added later. In general PUT will assume all SDB information provided
between calls of EPROC and EPROCEND are for variables owned by the
current procedure. Globals are assumed for SDB information preceeding
the first call of EPROC or after the last EPROCEND . However on Sparc
==== ercc07/xgen23s.txt ====
!* modified 16/07/86
!*
%ownstring(31) Versiontext="Fortran77 Compiler Version 0.1"
%owninteger Report=0
%owninteger Decode
%owninteger Language
!*
%constinteger IMP = 1
%constinteger FORTRAN = 2
%constinteger CCOMP = 11
%constinteger PASCAL = 14
%constinteger bootlang=16
!*
!***********************************************************************
!* Exports *
!***********************************************************************
!*
%routinespec Einitialise(%integer Lang, Avertext, Astackca,
Aglaca, Options)
%routinespec Eterminate(%integer adareasizes)
%routinespec Ecommon(%integer area, %stringname Name)
==== ercc07/vaxsup_compioc.txt ====
#include ssdef
#define byteinteger * (char *)
long fileptr;
extern long comreg[64];
extern char objectfile[39];
opensq(chan)
{
char file[80];
fileptr=fopen(&objectfile,"w","ctx=rec","rfm=var","mrs=512");
/* printf("Opened ptr = %x, \n", fileptr);*/
}
writesq(chan, startdr0, startdr1, enddr0, enddr1)
int chan, startdr0, startdr1, enddr0, enddr1;
{
int n,nw,topad;
int buffer[128];
char * ptr1, * ptr2;
==== ercc07/vaxcom_multicomp.txt ====
$ set noverify
$LOOP:
$ next_file = f$search("RT*.IMP",1)
$ if next_file .eqs. "" then goto finish
$ if next_file .eqs. "RT26.IMP" then goto loop
$ if next_file .eqs. "NOR_THIS_ONE.IMP" then goto loop
$ next = f$parse(next_file,,,"NAME")
$ if next .eqs. "RT37" then goto loop
$ imp80 'next'
$ implink 'next'
$ run 'next'
$ delete 'next'.obj;*,'next'.exe;*,'next'.lis;*,'next'.map;*
$ write sys$output "Completed ",next_file
$ goto loop
$FINISH:
$ exit
==== ercc07/gldgen00s.txt ====
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
! Opnd2 is either a 32 bit const with the size (ACC) as value or
! the ptr or arrayhead as normal operand.
!
! VMY X1 is now dim<<28!maxdim<<24!array name(where known)
! Opnd2 is either a 32 bit const with DV offset into const area or
! the arrayhead as a standard operand
!
! AINDX X1 is ELSIZE<<20 !spare
! Opnd2 is arrayhead as standard operand
! NOTE:- The Operands have been swopped for consistency with norm.
!
==== ercc07/docs_timet.txt ====
Planning Timetable for Central Service Replacement Planning Exercise
____________________________________________________________________
1.INTRODUCTION
In 1990, money (approx. #2milllion ) will be made available by the Computer
Board for the replacement of the University of Edinburgh's central computing
service systems, currently based on three Amdahl 470 mainframes. This money
may ONLY be used for the provision of central facilities i.e. those managed by
the Computing Service and available for use by the entire Edinburgh user
community.
The choice made in 1990 will dictate the shape of central computing for
seven years which is the new Computer Board replacement timescale. The Service
organisation, the communications network and Departmental computing will to
varying degrees be influenced by the choice made for the new central
facilities.
==== ercc07/xgen24s.txt ====
!* modified 16/07/86
!*
%ownstring(31) Versiontext="Fortran77 Compiler Version 0.1"
%owninteger Report=0
%owninteger Decode
%owninteger Language
!*
%constinteger IMP = 1
%constinteger FORTRAN = 2
%constinteger CCOMP = 11
%constinteger PASCAL = 14
!*
!***********************************************************************
!* Exports *
!***********************************************************************
!*
%routinespec Einitialise(%integer Lang, Avertext, Astackca,
Aglaca, Options)
%routinespec Eterminate(%integer adareasizes)
%routinespec Ecommon(%integer area, %stringname Name)
%routinespec Eendcommon(%integer area, Length)
==== ercc07/trimp_compress.txt ====
%EXTERNALROUTINESPEC DEFINE(%STRING(63)S)
%EXTERNALROUTINE COMPRESS(%STRING(63)S)
!***********************************************************************
!* COMPRESSES A FILE OF ERROR MESSAGE INTO TWO CONSTARRAYS AND *
!* GENERATES A ROUTINE TO REGURGITATE THEM IN ENGLISH *
!***********************************************************************
%INTEGER CPSTRM,INSTRM,LPSTRM
%INTEGERARRAY WORD(0:2000)
%INTEGERARRAY LETT(0:1000)
%INTEGER I, J, K, N, NUM, NEXT, NMAX, NUMMAX
%STRING(31) FILE1, FILE2, FILE3
%STRING(71)TEMP,INPUT,WK1,WK2
%%STRING(71)%FNSPEC MESS(%INTEGER N)
%ROUTINESPEC LIT(%INTEGERNAME P,%STRINGNAME TXT1)
%ROUTINESPEC CARDS OUT
%CONSTBYTEINTEGERARRAY INTT(0:127)= 63(32),63(3),61,63,60, %C
27,30,31,32,63(3),
28,59,29,63(17),
1,2,3,4,5,6,7,8,9,10,11,12,
13,14,15,16,17,18,19,20,
==== ercc07/gldgen01s.txt ====
!
! Recent Changes
! **************
!
! 23 JUne 87 Unecessary top bits maked out in recordelad. These
! caused no trouble till NP1 which has 32 bit addressing
! Also check removed on convert longinteger to integer
! 8 May 87 Change so RT Params are double word aligned
! 20Apr 87 Changes so that array heads (Long integers) are double word aligned
! Feb 87 Substantial changes to support 64 bit integers
!
!
! Warning this module has the revised triples spec.
!
! In first attempt at Triple Imp considerable use was made of constant operands
! to pass information from Pass2 to GEN. Although for specialised operations like
! passing Labels this still applies, this adhocery has caused problems with arrays
! and pointers particularly in mapped records. The operands for four triples
! have thus been redefined in a more standard way.
!
! GETPTR X1 is now (ptype of passed)<<16! DIMENSION
==== ercc07/idev9s.txt ====
!09-09-85..statistics gathering for auscom
!05-09-85..use tio in case mag tape off-line..sh
%INCLUDE "ercc07:ibmsup_comf370"
%INCLUDE "ercc07:ibmsup_page0f"
%INCLUDE "ercc07:ibmsup_dtform1s"
%INCLUDE "ERCC07:IBMSUP_xaioform"
%RECORDFORMAT PARMF(%INTEGER DEST,SRCE,(%INTEGER P1,P2,P3,P4,P5,P6 %ORSTRING (23) TEXT))
%RECORDFORMAT PARMXF(%INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6,LINK)
%IF VA MODE=YES %START
%CONSTRECORD (PARMXF) %ARRAYNAME PARM=PARM0AD
%FINISHELSESTART
!* %EXTERNALINTEGERSPEC parmad
%OWNRECORD (PARMXF) %ARRAYNAME PARM
!* %OWNRECORD(parmxf)%ARRAYFORMAT parmaf(0:128)
%FINISH
!
%EXTERNALINTEGERFNSPEC REALISE(%INTEGER VAD)
%EXTERNALINTEGERFNSPEC HSCH(%INTEGER SLOTADDR)
%EXTERNALINTEGERFNSPEC TSCH(%INTEGER SLOTADDR, %RECORD (IRBF) %NAME IRB)
%EXTERNALINTEGERFNSPEC SSCH(%INTEGER SLOTADDR,CCWA,KEY)
%EXTERNALROUTINESPEC STSCH(%INTEGER SLOTADDR, %RECORD (SCHIBF) %NAME SCHIB)
==== ercc07/idev10s.txt ====
!09-09-85..statistics gathering for auscom
!05-09-85..use tio in case mag tape off-line..sh
%include "ercc07:ibmsup_comf370"
%include "ercc07:ibmsup_page0f"
%include "ercc07:ibmsup_dtform1s"
%include "ercc07:IBMSUP_xaioform"
%record %format PARMF(%integer DEST,SRCE,(%integer P1,P2,P3,P4,P5,
P6 %or %string (23) TEXT))
%record %format PARMXF(%integer DEST,SRCE,P1,P2,P3,P4,P5,P6,LINK)
%if VA MODE=YES %start
%const %record (PARMXF) %array %name PARM=PARM0AD
%finish %else %start
!* %externalintegerspec parmad
%own %record (PARMXF) %array %name PARM
!* %ownrecord(parmxf)%arrayformat parmaf(0:128)
%finish
!
%external %integer %fn %spec REALISE(%integer VAD)
%external %integer %fn %spec HSCH(%integer SLOTADDR)
%external %integer %fn %spec TSCH(%integer SLOTADDR, %record (IRBF) %name IRB)
%external %integer %fn %spec SSCH(%integer SLOTADDR,CCWA,KEY)
==== ercm09/emas-2900/gateway.txt ====
@section[PABX/LAN Gateways]
@subsection[The current position]
When a large number of ports in one location are connected to a
PABX, for example, to serve a host computer, it is necessary to
connect an Individual Data Interface Unit to the end of each port (see
Fig n). Even when these units can be racked together, as is the case
with the Plessey exchange, the solution is hardly elegant.
These problems can be considerably increased when a number of
different hosts are connected; the maximum numbe of simultaneous
connections to each host must be estimated and that number of lines
dedicated to each host. Users are very unforgiving when access to
their host is denied because all the ports on the exchange are in use
even though the maximum potential of the particular host has not yet
been reached because only a few 'other' lines are in use. Our
experience has shown that the peak number of users is not usually
reached on all hosts simultaneously, the effects of special courses,
lectures, deadlines and the like causes fairly wide fluctuations in
the demand for any particular machine. In solving this problem, in
common with any PACX use, many more access ports have to be provided
==== ercm09/emas-2900/node_dup11e.txt ====
!**************
!* DUP11E *
!*DA:16.JAN.80*
!**************
%CONTROL K'100001'; ! 'SYSTEM' PROGRAM AND
! TRUSTED PROG
%RECORDFORMAT PARF(%INTEGER TYPE, ADDRESS, LEN)
%EXTERNALROUTINE DUP11E(%RECORD (PARF) %NAME P)
%END; ! TEMP TO SAVE CODE SPACE ON NODE 9
%ENDOFFILE
%SYSTEMROUTINESPEC MAPHWR(%INTEGER SEG)
%SYSTEMINTEGERFNSPEC GETID
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMINTEGERFNSPEC MAP ABS(%INTEGER ADR, LEN, REQ ID)
%PERMINTEGERFNSPEC SVC(%INTEGER EP, P0, P1)
==== ercm09/emas-2900/b_ftpxa.txt ====
new
prep x25gen_ftpd5s,ftpd5s#imp,x,g,clean,a
dimp11 ftpd5s#imp
link11 /ftpd5s
ftpd5s#rel
.stack 2400
.streams 3
.stackseg 6
.end
ftpg5s
c ftpg5s#abs,ftpxay
destroy ftpg5s#abs
alist11 ftpd5s#imp
list ftpd5s#lst,.lp23
==== ercm09/emas-2900/kmc11_kmcs.txt ====
C!
! KMC11 ASSEMBLER V2
! STARTED GJB 28/03/78
! UPDATED GJB 29/09/78
!
%CONTROL K'101011'
%BEGIN
%OWNINTEGER FAULTS,LPTR,CLOC,DLOC,TYPE,VALUE,PRINT,LMAX,INST,PPTR,I,COUNT
%OWNINTEGER CORD,SPTR,J,MACLEV,MTPTR,IN1,IN2,IN3,K,TOELSE,POSN
%OWNINTEGER ASL=-1,LS=3
%RECORDFORMAT TF(%BYTEINTEGERARRAY NAME(0:5),%INTEGER TYPE,VALUE)
%RECORD(TF)%ARRAYNAME TAG
%RECORDFORMAT T1F(%BYTEINTEGERARRAYNAME NAME)
%RECORDFORMAT T2F(%RECORD(TF)%ARRAYNAME NAME)
%RECORD(T1F) T1
%RECORD(T2F)%NAME T2
%OWNBYTEINTEGERARRAY TTAG(0:2559) = %C
66, 0, 0, 0, 0, 0, 7, 0, 255, 255,
67, 0, 0, 0, 0, 0, 5, 0, 0, 0,
90, 0, 0, 0, 0, 0, 5, 0, 1, 0,
66, 82, 71, 0, 0, 0, 1, 0, 0, 97,
==== ercm09/emas-2900/kents_ring4s.txt ====
!********************************
!* EMAS-2900 RING INTERFACE *
!* HANDLER *
!* FILE: RING4S *
!* 27:3:80 *
!*********************************
!! STK = 300, STRM = 1
! COMPILE OPTIONS
! ---------------
! TRACE OPTION #T ON
! ERROR OPTION #E ON
! STATS OPTION #S OFF
!
!NB LOCATION K'140016 IS USED TO HOLD THE CHECKSUM SO THAT IT MAY
!BE ACCESSED FROM CODE
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMROUTINESPEC MAP HWR(%INTEGER SEG)
==== ercm09/emas-2900/streets.txt ====
Group 1 Total 225
=======
Eva Pl. Odd 3-9, Even 12/14 10
Ladysmith Rd. Odd 1-69, Even 22-52 51
Maurice Pl. Odd 3-13, Even 2 14
==== ercm09/emas-2900/b_lmpsse.txt ====
imp11 lmpsse
link11
lmpsse#rel
i77perm
.stack 2000
.streams 1
.end
lmpssey
list lmpssey,.fep72
==== ercm09/emas-2900/erteicl_xbm01.txt ====
;**************************************
;* XBM01 *
;* INTERFACE BETWEEN HARDWARE AND IMP*
;* AND LOW LEVEL DUP11 HANDLER *
;* DATE: 23.FEB.80 *
;**************************************
PS=177776; PROCESSOR STATUS WORD
IDLEST=-1; SUPERVISOR IDLE FLAG
INTVAL=40; DEDICATED LOCATION FOR INTERRUPT NUMBER
ALARMF=44; DITTO - FOR CLOCK
PSECT=46; DITTO - CURRENT PSECT
LASTPS = 54
INTINF=56
UPAR=177640
UPDR=177600
UPAR0=40; INDEC INTO PSECT
==== ercm09/emas-2900/iprogsou_code11.txt ====
! RECODE FOR IMP PROGRAMS
! THIS PROGRAM TAKES THE THIRD PASS
! OUTPUT OF THE IMP COMPILER
! AND MAKES A RECODE IN ASSEMBLY
! OF EVERY IMP SOURCE LINE
! AUTHOR K. STRAATMAN
! MATHEMATISCH INSTITUUT
! RIJKSUNIVERSITEIT TE GRONINGEN
! POSTBUS 800, GRONINGEN, THE NETHERLANDS
! 24 JAN 1978
! COMMAND: RECODE SOURCE OY / OUTPUT
%EXTERNALROUTINE CODE11(%STRING(63) FILE)
%CONSTINTEGER MAX SPECS = 100
%OWNINTEGER MAIN PROG = 0
%STRING(63) SOURCE FILE, OBJECT FILE,OUTPUT,SDISP
%INTEGER DISP,I
%EXTERNALINTEGERFNSPEC EXIST(%STRING(63) FILE)
%EXTERNALROUTINESPEC DEFINE(%STRING(63) S)
%EXTERNALINTEGERFNSPEC TIME40(%INTEGER INST)
==== ercm09/emas-2900/btt6xs.txt ====
!**************
!* BTT6S *
!*DA:24.MAR.80*
!**************
%CONTROL K'100001'; ! 'SYSTEM' PROGRAM (FAST ROUTINE ENTRY/EXIT)
%PERMROUTINESPEC SVC(%INTEGER EP, P1, P2)
%BEGIN
%SYSTEMROUTINESPEF MAPHWR(%INTEGER SEGS)
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%RECORDFORMAT PF(%BYTEINTEGER SERVICE, REPLY, %C
%INTEGER A1, A2, A3)
%RECORDFORMAT TTF(%INTEGER KBS, KBD, TTS, TTD)
%RECORDFORMAT BUFF(%INTEGER PT, LAST, %BYTEINTEGERARRAYNAME B)
%RECORDFORMAT BUFFX(%INTEGER PT, LAST, ARRAYPT)
%CONSTRECORD (BUFFX) %NAME NULL = 0
==== ercm09/emas-2900/la0216.txt ====
Dump GEC logfile Version 1.3c
Log:ACCNTS.GAP850216
To:LA0216
First record at 23:57:23
Date Covered was: 7/ 2/ 1985 22:14:50 Exchange 2
Frames Control 1 seg Calls RESETS Bytes/Sec ERRORS Total Frames Total Data F Av Bytes
Line In/sec %Out %In %Out %In Out In Total Out In Total Out In Out In Out In
Em g-2 6.0 17% 59% 78% 99% 0 530 0 223 66 1 472902 662707 393698 268280 44 11
Em g-1 1.3 13% 69% 4% 10% 1691 1 1 129 44 1 100188 100862 78966 25801 128 118
Bu g-2 1.9 14% 60% 72% 98% 0 1229 2 84 24 2 152940 212298 129018 82616 51 13
KBcpse 5.2 23% 62% 60% 79% 5234 1519 6 252 93 43 408105 434642 284817 142624 68 40
Mcsu 0.1 70% 7% 95% 45% 23 11 1 1 5 111 3961 5185 1086 4618 24 83
==== ercm09/emas-2900/tsbsp_tst_rawst.txt ====
5
WT_ACCEPT RUNNING WT_FIN WT_DISC WT_CLOCK
7
ERROR_EVENT * * * * *
ACC PROCESS_ACC,RUNNING * * * -
DISC OPEN_FAILED,WT_CLOCK REPLY_DISC_AB,WT_CLOCK REPLY_DISC_OK,WT_CLOCK
-,WT_CLOCK -
RST SEND_DISC,WT_DISC SEND_DISC,WT_DISC SEND_DISC,WT_DISC - -
EN_OUT * SEND_DATA - - -
INT_A SEND_DISC,WT_DISC SEND_DISC,WT_DISC SEND_DISC,WT_DISC - STOP
TICK - - - - STOP
==== ercm09/emas-2900/alist11s.txt ====
%BEGIN
%INTEGER LINE, ADDR
%ROUTINE POCT(%INTEGER N)
%INTEGER J
SPACE
PRINTSYMBOL(N>>J&7+'0') %FOR J = 15,-3,0
SPACE
%END
%ROUTINE GET(%INTEGERNAME N)
%INTEGER S
READSYMBOL(N); READSYMBOL(S)
N = N+S<<8
%END
%ROUTINE NEXT LINE
%INTEGER S, N
SELECTINPUT(2)
%CYCLE
READSYMBOL(S) %UNTIL S = 1; SKIPSYMBOL
GET(N); GET(ADDR)
N = (N-6)//2
%STOP %IF N <= 0
==== ercm09/emas-2900/advent_mess.txt ====
#1
You can't move that way.
#2
Nothing happens.
#2.1
Nothing seems to happen.
#2.2
I don't think that had any affect on anything.
#2.3
I don't know how to apply that word in this situation.
#2.4
That had little effect, if anything at all.
#3
The fissure is too wide to jump.
#4
You are at the bottom of a pit with a broken neck.
#5
The bottle is already filled!
#6
The bear eagerly wolfs down the food and becomes calm and friendly.
#7
==== ercm09/emas-2900/nodes.txt ====
{{circle(14,15,3);inlabel(.35,"KB CPSE@b")}}
{{inlabel(.2,"@b@b000015000000")}}
{{circle(14,4,3);inlabel(.35,"AT 1 CPSE@b")}}
{{inlabel(.2,"@b@b000016000000")}}
{{circle(2,15,2);inlabel(.2,"TelePAC 1@b")}}
{{inlabel(.14,"@b@b000015001000")}}
{{circle(7.8,12.5,2);inlabel(.2,"TelePAC 2")}}
{{inlabel(.14,"@b@b000015005000")}}
{{circle(2,4,2);inlabel(.2,"AT 2 CPSE@b")}}
{{inlabel(.14,"@b@b000016001000")}}
{{join(c1,c2);join(c1,c3);join(c1,c5)}}
{{join(c2,c3)}}
{{join(c3,c4)}}
{{box(1.5,24.5)(4.5,26.5);inlabel(.2,"EMAS")}}
{{box(8.5,24.5)(11.5,26.5);inlabel(.2,"BUSH")}}
{{box(15.5,24.5)(18.5,26.5);inlabel(.2,"EMAS-A")}}
{{circle(.9,23,.6)inlabel(.14,"Fe3")}}
{{circle(2.3,23,.6)inlabel(.14,"Fe1")}}
{{circle(3.7,23,.6)inlabel(.14,"Fe2")}}
{{circle(7.9,23,.6)inlabel(.14,"Fe4")}}
{{circle(9.3,23,.6)inlabel(.14,"Fe1")}}
==== ercm09/emas-2900/b_rjes.txt ====
imp11 fep_rjes9s/rjes9s#rel,ll
link11
rjes9s#rel
i77perm
.stack 1000
.streams 0
.name rjes
.end
rjes9y
list rjes9y,.fep72
alist11 fep_rjes9s,rjes9s#rel/.lp23
==== ercm09/emas-2900/ertedgn_dz11s.txt ====
!*****************************
!* *
!* DZ11 HANDLER *
!* DATE: 10.FEB.82 *
!* FOR ERTE: DATA GENERAL *
!*****************************
! STK = 300, STREAMS = 0
%CONTROL K'100001'
%CONSTSTRING (13) VSN = "Dz11:vsn001a
"
%RECORDFORMAT DUMF(%INTEGER D)
%CONSTRECORD (DUMF) %NAME NULL = 0
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMROUTINESPEC MAPHWR(%INTEGER SEGS)
%BEGIN
==== ercm09/emas-2900/b_ygatecalls.txt ====
!************************************************************
!* Function Values between Upper level and Gate
!************************************************************
%constinteger connect = 1 ;! start a call up
%constinteger accept call = 2; ! accept a call
%constinteger Disconnect = 3; ! Stop a call, or reject a connect
%constinteger Enable Input = 4; ! Allow data, Gate -> Task
%constinteger Put Output = 5; ! Output Block, Gate -> Task
%constinteger Enable Output = 4; ! Allow Output, Task -> Gate
%constinteger Input Here = 5; ! Input Block, Task -> Gate
%constinteger Expedited = 6; ! Pass 'Interrupts'
%constinteger Reset = 7; ! Reset the Virtual Circuit (!)
%constinteger Datagram = 8; ! Send a 'datagram'
%constinteger Datagram Reply = 9; ! Reply to a datagram
%constinteger Enable Facility = 10; ! Claim incoming calls Task -> Gate
%constinteger Disable Facility= 11; ! Stop them
%constinteger Control data = 12; ! control data in&out (xxx only)
%endoffile
==== ercm09/emas-2900/ftppd_tableold.txt ====
/
[LITERALS]
[ATTRIBUTES]
1 PROTID/0
ACCESSMODE/1
TRANSCODE/2
TEXTFORM/3
MAXREC/5
TRANSLIM/6
INITM/11
TIMEOUT/13
FACILITIES/14
TRANSSTATE/15
DATATYPE/32
FILENAME/64
USERNAME/66
USERPASS/68
FILEPASS/69
ACCOUNT/74
ACCPASS/75
FILESIZE/96
==== ercm09/emas-2900/biog.txt ====
Brian Gilmore has worked for the Edinburgh Regional Computing Centre for the
past 11 years, the last 3 of which as Communications Manager. He graduated
from Edinburgh University in 1971 with a BSc (Hons) in Physics and added a
MPhil in Computer Science in 1976.
Brian Gilmore's principal duties as Communications Manager include the
strategic planning for and the management of the team which develops and
maintains the software for the Edinburgh University X.25 data network EDNET
which interconnects over 40 hosts and 1700 terminals in addition to links to
the Academic Network JANET and the Public Data Network.
He served on the Temporary Network Executive which ran JANET in its
initial phase and has served on the Academic Communities' ISO Transition
Committee, planning the transition from Coloured Books to ISO, for the past
20 months. His latest paper was 'Using PABX for voice and data in large
networks', published in Data Processing Vol 27 No 8, October 1985
==== ercm09/emas-2900/ring_bsp78s.txt ====
! file 'ring_bsp78S'
! nb: should be prepped !
!********************************
!* emas-2900 bsp interface *
!* handler *
!* file: bsp78S *
!* date:27.apr.82 *
!* modified for ercc use *
!*********************************
!! stk = 300, strm = 1
! prep options:- o - old compiler
! n - new compiler
! g - Xgate Vsn, open reply A to sendmessage
%constrecord (*) %name nil == 0
==== ercm09/emas-2900/b_lmxs.txt ====
prep x25gen_lmxots,lmxots#imp,x,clean
imp11 lmxots#imp/,l
link11 /MAP
lmxots#rel
i77perm
.stack 1400
.streams 1
.end
lmxoty
list lmxoty,.fep72
==== ercm09/emas-2900/la0227.txt ====
Command:an(accnts.gap850227)
File: ACCNTS.GAP850227 Type: CHARACTER Length: 1296896 Bytes
Last altered: 28/02/85 at 00.29.29
Command:dumpgec(accnts.gap850227/la0227,,aa0227:e2)
option =:E2
Input connected at 01840020, Length 0013CA00 Hex, 1296896 Dec.
00:32:24 11457 4.8 @ 01841B70
01:05:02 14060 5.9 @ 018431C8
01:37:49 7050 2.9 @ 01844EF8
02:09:37 6841 2.9 @ 01849030
02:41:57 5208 2.2 @ 0184CF5C
03:14:26 4855 2.0 @ 0185005C
03:46:43 5346 2.2 @ 01854D80
04:19:08 5773 2.4 @ 01859A78
04:51:36 11413 4.8 @ 0185DFC0
05:23:56 5318 2.2 @ 01861E98
05:56:16 5232 2.2 @ 01865D70
06:28:39 5272 2.2 @ 01869C9C
07:01:02 5208 2.2 @ 0186DCC0
==== ercm09/emas-2900/x25addrold.txt ====
@device[x2700]
@style[topmargin=0.5in,leftmargin=0.5in,bottommargin=0.5in]
@majorheading(EDNet addresses 7 August 1985)
@b[ Configuration of GEC 4190 KB#1 switch System No. 669]
@verbatim[
Line No Address Name Use Comments
lau 01 M 15000001 EA72 2972 fep (fe1) (Secondary Line)
lau 02 M 15000002 EA71 2972 fep (fe2) (Primary Line)
lau 03 M 15000003 E881 2988 fep (fe2)
lau 04 M 15000004 E882 Xcall - XXX <-> ITP Converter
lau 05 M 15000099 GW01 Gateway to National Switch (Extern:7001004)
lau 06 M 15000006 CSVX ECSVax - Comp. Sc. Vax No XXX, ITP only
lau 07 M 15000007 XGTE Xgate
lau 08 M -------- GSCP Trunk Link to George Sq. Switch
lau 09 M 15000009 LA09 Link to 4160 CPSE (19.2kb)
lau 10 15000010 ERCV ERCVax - ERCC Vax/VMS 11/750
lau 11 15000011 JPAD KBPad1
D 15000111 KBPad2
lau 12 T -------- STSW Trunk Link to Strathclyde (nb: DTE end)
lau 13 15000013 TCP1 TCP M
==== ercm09/emas-2900/b_nodesimold.txt ====
E NODESIM/TEMP
F/B_DEIMOSSPECS/S/DEIMOSPERM/
%C
IMP11 TEMP
LINK11
TEMP#REL
I77PERM
.STACK 5000
.STREAMS 0
.END
NODESIMY
LIST NODESIMY,.FEP72
ALIST TEMP/.LP23
==== ercm09/emas-2900/tsbsp_tsdrivers.txt ====
%CONTROL 1
%BEGIN
%RECORDFORMAT NSF(%INTEGERARRAY DUM(1:3), %STRING (241) NAME)
%RECORDFORMAT NSRF(%INTEGER D1,D2,CODE, %C
((%STRING (241) NAME) %ORC
(%BYTEINTEGER FLAGS, ADDRESS, %INTEGER PORT, FUNCTION, %C
%STRING (55) RESTOFNAME )))
%RECORDFORMAT MEF(%RECORD (MEF) %NAME LINK, %BYTEINTEGER LEN, TYPE, %C
( (%BYTEINTEGERARRAY PARAMS(0:251)) %ORC
(%INTEGER ADDRESS, PORT, %C
( (%INTEGER RCOMM,TCOMM,%BYTEINTEGERARRAY DATA(0:243)) %ORC
(%INTEGER COMMAND, REPLY PORT, FUNCTION, BSP PARAM LEN, %C
%INTEGERARRAY BSP PARAM(1:2), %C
%BYTEINTEGERARRAY TSPARAMS(0:235) ) %ORC
(%RECORD (NSRF) NS REPLY ) %ORC
(%RECORD (NSF) NS) ))))
==== ercm09/emas-2900/erte_blog7s.txt ====
!
!
! BLOGY BLOGY BLOGY BLOGY BLOGY BLOGY BLOGY BLOGY BLOGY BLOGY BLOGY BLOGY
! BLOGY BLOGY BLOGY BLOGY BLOGY BLOGY BLOGY BLOGY BLOGY BLOGY BLOGY BLOGY
!
!
!
%CONTROL K'001001'
!
!
%BEGIN
!
!
!
!G.J.B. // J.C.A. STARTED 10:11:76
! ??? LAST UPDATE 14:3:79 10:30 - FILE BLOG6S
! FOR ERTE MK. 3.2 UPTO 128 USERS
! FOR CS1BM STANDARD COMMANDS
! LINES COMMENTED OUT WITH !@@ ARE CANDIDATES FOR CHANGE FOR F1 AND MK 3
==== ercm09/emas-2900/nhs1.txt ====
@device(x2700)
@make(report)
@majorheading(Proposed Communications Course by ERCC)
@heading[Time and Place]
@verbatim[
1st and 2nd of September
ERCC, George Sq., Edinburgh
Session times will be: 09.30 - 12.30
14.00 - 17.00
Lunch, coffee and tea will be provided
]
@heading(Day 1)
@verbatim[
Introduction: - Packet networks vs direct connections
- OSI Reference model - Layers 1-3
- X.25 (Level 2) - brief summary
- X.25 (Level 3) - Major principles
- Addressing
- Gateways
==== ercm09/emas-2900/nhs2.txt ====
Scottish Health Service Communications Course
Amended Timetable
Note: All sessions are 1 hour 15 mins, 1 hour for the talk, 15 mins for
questions.
1st September
09.30 - 10.45 Intro (L2 & L3) Noel
11.15 - 12.30 Addressing/GWs/Net Management Noel/BG
14.00 - 15.15 Lans & PABX Scott
15.45 - 17.00 ditto Scott
2nd September
09.30 - 10.45 X25 Suppliers Survey BG
==== ercm09/emas-2900/kent#jun81_rjes8.txt ====
%CONSTSTRING (7) VSN = "VSNKG8S"
!MODIFIED:-
!14/5/81 DETECT HIGH LEV CON MESSAGES ON STREAMS OTHER THAN 5
! VALIDATE MESSAGE MORE CAREFULLY IN READ MESSAGE FROM AM1
!1/5/81 VALIDATE BUFFER POINTERS
!07:04:81 ADD 'BELL' TO ABORTED MESSAGES
! ADD BITS DERIVED FROM ERCC VERSION REVD TODAY
!22:04:81 ADD CODE TO COUNT LINES/PAGES ON OUTPUT
! MAP HARDWARE TO SEG 0 TO FREE CODE SPACE IN SEG 3
!********************************
!* EMAS-2900 FEP RJE SERVER *
!* FILE: RJES8/RJES8Y *
!* DATE: 18.SEP.80 *
!* MODIFIED FOR RING 27.OCT.80 *
!********************************
!! STACK SIZE = 300
==== ercm09/emas-2900/node_go.txt ====
NODE CONFIG 08.AUG.80
COMMY
BUFF4Y
KERNY
PRT9Y; 1 0 -7 -6 767700
PRT9Y; 2 0 -21 -20 767720
PRT9Y; 3 0 -23 -22 767600
PRT9Y; 4 0 -25 -24 767620
PRT9Y; 5 0 -29 -28 760200
PRT9Y; 6 0 -19 -18 760220
PRT9Y; 7 0 -31 -30 760240
PRT9Y; 8 0 -33 -32 760260
PRT9Y; 9 0 -43 -42 760140
PRT9Y; 10 0 -45 -44 760160
PARR1Y; 15 3 -26 -27 760030
PARR1Y; 16 3 -34 -35 775140
PARR1Y; 17 3 -36 -37 765240
PARR1Y; 18 3 -38 -39 775160
PARR1Y; 19 3 -40 -41 775200
NGATEY /.TT
KDISPY
==== ercm09/emas-2900/inc2_xgtfns.txt ====
! New X-25 Gate to task Interface - extended set to include Accounting
! Functions:
! Accounting Functions:
%constinteger accredit user pass = 40
%constinteger process command = 41
%constinteger accredit reply = 42
%constinteger command reply = 43
%constinteger log call start = 44
%constinteger checkpoint = 45
%constinteger log call end = 46
%constinteger end call reply = 46
%constinteger hello = 47
%constinteger abort session = 48
%constinteger broadcast = 49
%constinteger goodbye = 50
%constinteger log session end = 51
%constinteger noticeboard = 52
! Transport Functions:
%constinteger connect = 1
==== ercm09/emas-2900/docum_dmanual2.txt ====
$A JUST=1; LINE=76; PAGE=58; TOP=3; BOTTOM=4; MARK=2
$A PAGENO=1
$A TAB=5,15,25
$B20
$L2CM
USER MANUAL FOR DEIMOS
AN OPERATING SYSTEM FOR THE PDP 11
$B2
$L1CM
B. GILMORE
$L2CM
AUGUST 1976
REVISED MAY 1978
$N
$L1CUM
CONTENTS
$B6
$A INDENT=1
.%TITLE $T6 .%PAGE
$B1 @GENERAL FEATURES $T6 3
$B1 @SYSTEM COMMANDS. $T6 7
==== ercm09/emas-2900/response_n9t180jan11.txt ====
Node = 80, Term = 80 - 11 Jan 82 - route n9->fe0 11.45 - 12.00
0
0
0
0
3
7
10
7
14
12
13
18
22
16
23
17
17
16
18
9
==== ercm09/emas-2900/sys_moth6s.txt ====
!************
!* MOTH6S *
!* 27.NOV.79*
!************
%CONTROL K'101011'
%PERMINTEGERFNSPEC SVC(%INTEGER EP, R0, R1)
%BEGIN
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMROUTINESPEC MAP HWR(%INTEGER TOSEG)
%RECORDFORMAT PF(%BYTEINTEGER SERVICE, REPLY, %INTEGER A1, A2, A3)
%RECORD (PF)P
%CONSTINTEGER MAP PSECT = 16; ! SUPERVISOR CALL
%CONSTINTEGERNAME SR0 = K'117572'
! INDEXED INTO SEG 4
==== ercm09/emas-2900/docum_dmanual3.txt ====
$A JUST=1; LINE=76; PAGE=58; TOP=3; BOTTOM=4; MARK=2
$A PAGENO=1
$A TAB=5,15,25
$B20
$L2CM
USER MANUAL FOR DEIMOS
AN OPERATING SYSTEM FOR THE PDP 11
$B2
$L1CM
B. GILMORE
$L2CM
AUGUST 1976
REVISED MAY 1978
$N
$L1CUM
CONTENTS
$B6
$A INDENT=1
.%TITLE $T6 .%PAGE
$B1 @GENERAL FEATURES $T6 3
$B1 @SYSTEM COMMANDS. $T6 7
==== ercm09/emas-2900/b_fgatex.txt ====
EDIT x25_gatexs,t#b
A/198/A1STM/Versi/F<X>K(M/GATX Running/M0R/Running/I<X>i/ (Min,Large,old comp)/p1)2
E
prep t#b,gatex#imp,f,m,h,a,clean,o
IMP11 gatex#imp/gatex#rel,gatex#lst
LINK11
ERCM09.I77PERM
gatex#rel
.name gatx
.STACK 5000
.STREAMS 0
.END
gatex#obj
destroy bacg
COPY gatex#obj,gatex_hobj
rename gatex#obj,bacg
DESTROY t#b
==== ercm09/emas-2900/response_n9t75dec22.txt ====
Node = 9, Term = 75 - time: 10.28 - 11.43 22.dec.81
0
0
401
6620
5339
1984
685
265
127
78
33
26
13
11
10
7
3
3
5
2
==== ercm09/emas-2900/timan2s.txt ====
%externalroutine timan2s(%string (255) s)
%externalroutinespec define(%string (255) s)
%string (255) t,u,v
%integer a,b,c,d,f,e, i
%ownintegerarray tim(0:99)
%ownintegerarray cou(0:99)
%on 9 %start; -> eof; %finish
%unless s -> t.("/").u %start
Printstring("Params as input/output
")
%stop
%finish
define("1,".t); define("2,".u)
select input(1); select output(2)
%cycle
readsymbol(i); printsymbol(i)
%exit %if i = nl
%repeat
d=0
%cycle
==== ercm09/emas-2900/dbug5s.txt ====
!*****************************
!* DBUG4S *
!*DATE: 04.DEC.79 *
!*****************************
!! STK = 300, STR = 1
%CONTROL K'100001'
%PERMROUTINESPEC SVC(%INTEGER EP, R0, R1)
%PERMINTEGERMAPSPEC INTEGER
%PERMBYTEINTEGERMAPSPEC BYTEINTEGER
%PERMINTEGERFNSPEC ADDR
%PERMINTEGERFNSPEC ACC
%SYSTEMROUTINESPEC MAPHWR(%INTEGER SEG)
%BEGIN
%CONSTINTEGER MAP PSECT = 16; ! SUPERVISOR CALL TO MAP TO PSECT
%CONSTBYTEINTEGERNAME ID = K'160030'
%CONSTINTEGER VIR DISP=K'22'; ! DISP TO 1ST VERSION NO
==== ercm09/emas-2900/kents_bsp4s.txt ====
!********************************
!* EMAS-2900 BSP INTERFACE *
!* HANDLER *
!* FILE: BSP4S *
!* 18:3:80 *
!*********************************
!! STK = 300, STRM = 1
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMROUTINESPEC MAP HWR(%INTEGER SEG)
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%RECORDFORMAT DMF(%INTEGER I)
%CONSTRECORD (DMF) %NAME NIL = 0
%CONTROL K'100001'
==== ercm09/emas-2900/response_fe0jan12.txt ====
Node = 80, Term = 80 - 12 Jan 82 1600-1700 ring->n9->fe0
0
0
0
0
42
85
70
53
40
36
36
18
25
11
19
13
12
12
9
10
==== ercm09/emas-2900/b_bgatex.txt ====
EDIT x25_gatexs,t#b
A/198/A1STM/Versi/F<X>K(M/GATX Running/M0R/Running/I<X>i/ (Min,Large,2 lines)/p1)2
E
prep t#b,gatex#imp,m,h,clean,b
IMP11 gatex#imp/gatex#rel,gatex#lst
LINK11
ERCM09.I77PERM
gatex#rel
.name gatx
.STACK 5000
.STREAMS 1
.END
gatex#obj
destroy bacg
COPY gatex#obj,gatex_hobj
rename gatex#obj,bacg
transfer bacg,erte(,)BACG(41),ma,no
DESTROY t#b
==== ercm09/emas-2900/response_fe0jan13.txt ====
Node = 80, Term = 80 - 13 Jan 82 1418-1523 ring->n9->fe0 (new 2980 soft.)
0
0
0
0
172
257
192
112
83
57
47
27
14
17
9
7
2
1
1
0
==== ercm09/emas-2900/cent.txt ====
Our network is at the start of a major change. In the next 2 years we
are committed to changing to the international standard X25. As you probably
realise, the protocols that we use to communicate over the network date back
8 years. At that stage there were no international standards and we were
forced to create our own protocols: The carrier protocol NSI (Network
Standard Interface), RJE (Remote Job Entry) and ITP (Interactive Terminal
Protocol). Since then International standards have developed: X25 as a
carrier protocol, FTP (File Transfer Protocol) and XXX (Interactive protocol-
the symbols XXX stand for X3, X28 & X29 - the 3 relevent standards).
Increasingly manufacturers are offering these standard protocols,
and the network is now being expected to handle a variety of differing
machines, as these new hosts connect we can no longer be expected
to reprogram each of them to fit into our network.
The first change that is being made is to bring our carrier protocol
into line. We already have installed and working a small GEC X25 switch
which we are using to test our own software. In the next month we expect
to have working a PDP 11/60 as a Gateway between the X25 switch and our
Cambridge Ring (and hence to the rest of the network). This gateway will
look like the PSS Gateway but will not have the name/password accrediting
of the PSS Gateway and so will be much more transparent to the user. During the
next year we will be progressively shifting parts of the network, ie TCPs,
==== ercm09/emas-2900/zzombie.txt ====
%EXTERNALROUTINE ZOMBIE(%STRING (255)S)
%INTEGER Z1, Z2
%EXTERNALROUTINESPEC PEHOME
%EXTERNALROUTINESPEC PECLEAR
%EXTERNALROUTINESPEC PECLINE(%INTEGER A)
%EXTERNALROUTINESPEC PEUP
%EXTERNALROUTINESPEC PEDOWN
%EXTERNALROUTINESPEC PERIGHT
%EXTERNALROUTINESPEC PELEFT
%EXTERNALROUTINESPEC PEPOS(%INTEGER X,Y)
%EXTERNALROUTINESPEC PEPROMPT(%INTEGER X,YM %STRINGNAME S)
%EXTERNALREALFNSPEC RANDOM(%INTEGERNAME I, %INTEGER J)
%EXTERNALROUTINESPEC SETMODE(%STRING (255)S)
%EXTERNALSTRING (8) %FNSPEC TIME
%ROUTINESPEC WIN
%ROUTINESPEC START
%ROUTINESPEC PLAY
%ROUTINESPEC GRABBED
%ROUTINESPEC ZFALL
==== ercm09/emas-2900/b_fbgatex.txt ====
EDIT x25_gatexs,t#b
A/198/A1STM/Versi/F<X>K(M/GATX Running/M0R/Running/I<X>i/ (Min,Large,Old Comp)/p1)2
E
prep t#b,gatex#imp,f,m,h,a,clean,b,o
IMP11 gatex#imp/gatex#rel,gatex#lst
LINK11
ERCM09.I77PERM
gatex#rel
.name gatx
.STACK 5000
.STREAMS 0
.END
gatex#obj
destroy bacbg
rename gatex#obj,bacbg
DESTROY t#b
==== ercm09/emas-2900/erteicl_dlog8s.txt ====
!
!
! DLOGY DLOGY DLOGY DLOGY DLOGY DLOGY DLOGY DLOGY DLOGY DLOGY DLOGY DLOGY
! DLOGY DLOGY DLOGY DLOGY DLOGY DLOGY DLOGY DLOGY DLOGY DLOGY DLOGY DLOGY
!
!
!
%CONTROL K'001001'
!
!
%BEGIN
!
!
!
!R.MCL. //G.J.B. // J.C.A. STARTED 20:03:78
! ??? LAST UPDATE 15:11:78 - FILE DLOG8S
!
!
!
! --- STACK NORMAL ---
!
==== ercm09/emas-2900/route.txt ====
$a device=x2700
$d1 :cosmos12b:
$d2 :cosmos14:
$a tab=1",3",4",5",6"
$a left=5
$5
$l0
Edinburgh$t2 A68$t3 0$t4 0$t5 407
$t1 Dalkeith$t2 A68$t3 7$t4 7$t5 400
$t1 Carfraemill$t2 A68$t3 20$t4 27$t5 380
$t1 Greenlaw$t2 A697$t3 13$t4 40$t5 367
$t1 Coldstream$t2 A697$t3 10$t4 50$t5 357
$t1 wooler$t2 A697$t3 14$t4 64$t5 343
$t1 Weldon Bridge$t2 A697$t3 22$t4 86$t5 321
A1$t2 A697$t3 15$t4 101$t5 306
Newcastle(Tunnel)$t2 A108$t3 20$t4 121$t5 286
A1(m)$t2 A108$t3 4$t4 125$t5 282
Durham$t2 A1(m)$t3 13$t4 138$t5 269
Darlington(N)$t2 A1(m)$t3 18$t4 156$t5 251
End A1(m)$t2 A1(m)$t3 7$t4 163$t5 244
Scotch Corner$t2 A1$t3 2$t4 165$t5 242
==== ercm09/emas-2900/coral2orig.txt ====
'CORAL' TEST RESPONDER
'COMMENT' VERSION 1.1
The official definition of Coral 66 does not provide for the output of
data at run time. However the facilities provided by the following
routines are useful within the Test Responder for logging/debugging
purposes. They can be supplied by the implementor either by adapting
existing routines or by writing new ones.
The use of these routines is optional. If the implementor does not wish
to generate such output, he can define these procedures to be null,
comment them out, or delete each occurrence of them from the code. The
occurrences within read.command.octet (chart 3) have been commented out,
because for normal use they produce too much output:- one line per octet
received. The function of each of the routines is as follows:
trwritestring - writes the string supplied as the parameter to the
output buffer.
trwriteint - converts the integer supplied as the first parameter to
==== ercm09/emas-2900/crackerhelp.txt ====
***************************
* *
* THE CRACKER *
* Copyright (C) 1984-6 *
* I.W.SEARLE *
* All Rights Reserved *
* Version 2.31 *
* *
***************************
WELCOME to the THE CRACKER
All versions with Z80 processors
================================
INTRODUCTION
This file contains information about improvements and
updates to THE CRACKER made since the manual was printed. Many
==== ercm09/emas-2900/fepb_bsp4s.txt ====
!********************************
!* EMAS-2900 BSP INTERFACE *
!* HANDLER *
!* FILE: BSP4S *
!* 18:3:80 *
!*********************************
!! STK = 300, STRM = 1
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMROUTINESPEC MAP HWR(%INTEGER SEG)
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%RECORDFORMAT DMF(%INTEGER I)
%CONSTRECORD (DMF) %NAME NIL = 0
%CONTROL K'100001'
==== ercm09/emas-2900/ring_itpe9s.txt ====
! file 'fep_itpe9s'
!********************************
!* emas-2900 fep itp server *
!* file: itpe9s/itpey *
!* date: 25.mar.82 *
!********************************
!! stack size = 1000
%include "deimosperm"
%control 1
%begin
%conststring (13)vsn = "itps:vsnea9j
"
%recordformat am1f(%integer rxs, rxd, txs, txd)
%ownrecord (am1f) %name l == 1; ! addr passed by eam1
!! no of data bytes in a short block
==== ercm09/emas-2900/files.txt ====
!F---FILE SYSTEM INTERROGATOR
!W.S.CURRIE 4TH DEC 1976
!AMENDED TO HANDLE # FILES - GJB
! V006
!LAST UPDATED 15TH MAY 1977 18:50
! THIS IS TO REPLACE THE EXISTING F.IT HAS THE
!FOLLOWING FACILITIES:-
! A : LISTS ALL FILES IN THE CURRENT DIRECTORY ALONG
! WITH THE START BLOCK,PROTECT CODE AND NUMBER
! OF BLOCKS IN THE FILE.
! B FILENAME : GIVES DATA FOR SPECIFIC FILE AS IN A.
! C : GET CURRENT L VALUES
==== ercm09/emas-2900/ncont3s.txt ====
! FILE 'NCONT3S'
!**********************
!* NCON3S/NCON3Y *
!* DATE: 13.MAR.80 *
!*********************
%CONSTSTRING (7) VSN = "VSN002A"
!! STACK = 400, STREAMS = 3
!! MESSAGES FROM THE NETWORK SHOULD BE ENABLED - SEE
!! THE COMMENT AT 'MESSAGES ENABLED'
%CONTROL K'100001'
!STACK=400, STREAMS=3
%RECORDFORMAT XF(%BYTEINTEGER UNIT,FSYS,%BYTEINTEGERARRAY FNAME(0:5))
%EXTERNALPREDICATESPEC READ FNAME(%RECORD(XF)%NAME FILE)
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
==== ercm09/emas-2900/mangame.txt ====
%EXTERNALROUTINE MANGAME(%STRING (63)S)
!!
%DYNAMICROUTINESPEC PROMPT(%STRING (18)S)
%DYNAMICROUTINESPEC DEFINE(%STRING (63)S)
%DYNAMICINTEGERFNSPEC RAND INT; ! RETURNS 0<=R<=20
!!
%ROUTINESPEC ECONOMY ON SALES(%INTEGER C)
%ROUTINESPEC ECONOMY STATE(%INTEGER EC)
%INTEGERFNSPEC SALESF(%INTEGER PRICE, AREA, DELTAC)
%ROUTINESPEC ORDERS INTERDEPENDANCE(%INTEGER AREA)
%INTEGERFNSPEC MARKETING EFFECT(%INTEGER EC)
%ROUTINESPEC CHANGE NPROD
%INTEGERFNSPEC GET LOAN LIMIT(%RECORDNAME F)
%ROUTINESPEC BANCRUPT(%RECORDNAME F)
%INTEGERFNSPEC ASK FOR LOAN(%RECORDNAME F)
%ROUTINESPEC GET CASH FIGURES(%RECORDNAME F)
%INTEGERFNSPEC ASSETS(%RECORDNAME F)
%ROUTINESPEC SET SALES(%INTEGER FIRM)
==== ercm09/emas-2900/stat7s.txt ====
%REALSLONG
!
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! 2900 FEP STATISTICS PACKAGE
!
!
!
! GRAPH1 - USERS V KILO BYTES/SECOND AND CPU
!
! GRAPH2 - 2900 USERS V BLOCKS RXD & TXD
!
! GRAPH3 - 2970 USERS V BLOCKS RXD & TXD
!
! GRAPH4 - FREQUENCY V PKTS/MIN/USER
!
!
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
==== ercm09/emas-2900/etherpict.txt ====
{{horizontal}}
{{colour=thickblack}}
{{label(15,26.7,.35,0,"Possible ERCCNET in Oct. 1985")}}
{{colour=black}}
{{label(17,25.1,.14,0,"Appleton Tower")}}
{{circle(7.5,10,2)}}
{{inserc(1,.2,"KB CPSE")}}
{{circle(7.5,21,2)}}
{{inserc(2,.2,"G.Sq. CPSE")}}
{{circle(12,2,1)}}
{{inserc(3,.14,"JANET")}}
{{box(10,25.5)(10.8,26.3)}}
{{box(11.2,25.5)(12,26.3)}}
{{box(12.4,25.5)(13.2,26.3)}}
{{box(13.6,25.5)(14.4,26.3)}}
{{box(14.8,25.5)(15.6,26.3)}}
{{label(10.1,25.6,.14,0,"TCP")}}
{{label(11.3,25.6,.14,0,"TCP")}}
{{label(12.5,25.6,.14,0,"TCP")}}
{{label(13.7,25.6,.14,0,"TCP")}}
{{label(14.9,25.6,.14,0,"TCP")}}
==== ercm09/emas-2900/response_n6t181jan11.txt ====
Node = 6, Term = 181 - 11 Jan 82 - route n9->n6->fe1 11.45 - 12.00
0
0
0
0
0
93
104
33
13
11
3
0
2
1
0
0
0
0
0
0
==== ercm09/emas-2900/netsig.txt ====
@make[Report]
@flushleft[EDINBURGH REGIONAL COMPUTING CENTRE]
@flushleft[EDINBURGH UNIVERSITY]
@Majorheading{GEC-CUA Network Special Interest Group}
The next meeting of NETSIG will be held on the 12th November 1986 at
@makespace{1}
The meeting will start at 11am.
@subheading[Agenda]
@enumerate[
Minutes of the 13th Meeting, held on the 12th March at UCL.
Matters Arising
Report from the NETSIG Sub Group and matters arising
@enumerate{
Terms of reference
Request from GEC for copies of reports on PSE performance, such as MTBF.
==== ercm09/emas-2900/houcs.txt ====
%begin
%integer i,j,k, ward, nfile, nward
%ownintegerarray c(0:64) = %c
100, 101, 102, 103, 41, 105, 35, 38, 47, 109, 48, 111, 112, 51,
52, 59, 60, 57, 58, 119, 53, 56, 54, 33, 36, 34, 31, 7, 8,
129, 21, 13, 14, 23, 134, 5, 6, 15, 138, 24, 140, 17, 27, 17,
18, 9, 10, 10, 11, 20, 150, 29, 19, 28, 30, 30, 45, 44, 46, 61, 160, 1,
2, 4, 3
%routine get next
select input(3)
read(nfile)
%if nfile<0 %start
select output(0)
printstring("ok
")
select output(2)
nfile = -1; nward = 0; select input(1); %return
%finish
read(nward)
select input(1)
%end
==== ercm09/emas-2900/gouldpap.txt ====
@style[spacing=1]
@make[article]
@device[x2700]
@majorheading[ERCC X.25 (1984) Packet Level Protocol Software]
@paragraph(Introductory Remarks)
In the paper entitled "Implementation Details for Protocols on CSMA/CD
LANs" [1], the JNT Ethernet Advisory Group describes guidelines for the
UK Academic Community's transition to ISO OSI standards on a LAN (as well
as for interworking with Wide Area Networks).
To summarise, the OSI Connection-Oriented Network Service (CONS) is to be
provided directly by the 1984 version of the X.25 packet level protocol
in DTE-to-DTE mode of operation [2] supported by LLC2 [3].
The configurations within which this protocol set can
be employed is described in reference [4] as
@begin[verbatim]
A single LAN
A sequenced Bridged Area Network
A LAN as an OSI subnetwork
A single LAN or a sequenced Bridged Area Network
connected to an X.25 Wide Area Network
==== ercm09/emas-2900/inc2_exts.txt ====
!Commonly Used Externals
%externalroutinespec alarm(%integer ticks)
%externalroutinespec linkin(%integer ser)
%externalintegerfnspec dup addr(%integer seg)
%externalintegerfnspec map abs(%integer adr, len, req id)
%externalroutinespec map hwr(%integer seg)
%externalintegerfnspec get id
%externalroutinespec map virt(%integer ser,seg1,seg2)
%externalroutinespec set prio(%integer n)
%externalroutinespec pon(%record (*) %name p)
%externalroutinespec ponoff(%record (*) %name p)
%externalroutinespec poff(%record (*) %name p)
%endoffile
==== ercm09/emas-2900/stat8s.txt ====
%REALSLONG
!
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! 2900 FEP STATISTICS PACKAGE
!
!
!
! GRAPH1 - USERS V KILO BYTES/SECOND AND CPU
!
! GRAPH2 - 2900 USERS V BLOCKS RXD & TXD
!
! GRAPH3 - 2970 USERS V BLOCKS RXD & TXD
!
! GRAPH4 - FREQUENCY V PKTS/MIN/USER
!
!
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
==== ercm09/emas-2900/ftppd_build.txt ====
new
PREP ftppd_source,FTP#IMP,x,CLEAN
DIMP11 ftp#imp
LINK11 /FTP
FTP
.STACK 3000
.STREAMS 2
.NAME FTPQ
.END
FTP
destroy ftpqy
rename ftp#abs,ftpqy
old
==== ercm09/emas-2900/ring_lmcors.txt ====
!**********************
!* LMCORS/LMCORY *
!* DATE: 27.NOV.80 *
!* RING VERSION *
!*********************
%CONSTSTRING (7) VSN = "VSN001B"
!! STACK = 300, STREAMS = 1
%CONTROL K'100001'
%RECORDFORMAT XF(%BYTEINTEGER UNIT,FSYS,%BYTEINTEGERARRAY FNAME(0:5))
%CONSTRECORD (XF) %NAME NULL = 0
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%BEGIN
%RECORDFORMAT BSPF(%INTEGER ST, DS, RC, TC, %C
%BYTEINTEGERARRAY A(0:239))
%RECORDFORMAT MEF(%RECORD(MEF)%NAME LINK,%BYTEINTEGER LEN,TYPE, %C
%RECORD(BSPF) BSP)
==== ercm09/emas-2900/readtest.txt ====
%CONTROL K'100001'
%BEGIN
%INTEGER I,J,K,X,Y,Z
%RECORDFORMAT PF(%BYTEINTEGER SER, REPLY, %INTEGER A, %C
%BYTEINTEGERARRAYNAME B, %INTEGER C)
%RECORD (PF) P
%OWNBYTEINTEGERARRAY ARR(0:512)
%CONSTBYTEINTEGERNAME ID = K'160030'
%CONSTBYTEINTEGERNAME INT = K'160060'
PROMPT("GO?"); READ(X)
%CYCLE I = 1, 1, 30000
P_SER=3; P_REPLY = ID
P_A = 0; P_B == ARR; P_C=1000+I*X
%WHILE P_C>4900 %THEN P_C = P_C-4800
PON(P); P_SER=0
POFF(P)
%EXIT %IF INT#0
%REPEAT
PRINTSTRING("COUNT ="); WRITE(I, 1); NEWLINE
%ENDOFPROGRAM
==== ercm09/emas-2900/kprims.txt ====
NODEST 1 0
BRG 1 6100
BRGSHR 1 300
MEMORY 1 4500
B 7 FFFF
SP0 3 600
SP1 3 601
SP2 3 602
SP3 3 603
SP4 3 604
SP5 3 605
SP6 3 606
SP7 3 607
SP8 3 608
SP9 3 609
SP10 3 60A
SP11 3 60B
SP12 3 60C
SP13 3 60D
SP14 3 60E
SP15 3 60F
==== ercm09/emas-2900/electdiss.txt ====
%externalroutine elect(%string (255) str)
! this version for district, elect3s for region
%externalroutinespec define(%string (255) s)
%integerarray lab,con,lib(0:63)
%integerarray snp,ind,tota, hold(0:63)
%integerarray maj,indx(0:63)
%ownintegerarray look up(1:62) = %c
57, 4, 3, 16, 55, 17, 27, 53, 30, 62, 29, 5, 37, 24, 56, 54,
12,60, 9, 20, 39, 42, 59, 18, 58, 2, 28, 34, 19, 50, 52, 47, 46, 35, 48,
44, 8, 23, 11, 25, 61, 14, 31, 13, 6, 7, 45, 51, 1, 41, 49, 38, 33, 32,
22, 21, 36, 26, 15, 40, 10, 43
%string (25) %array names(0:63)
%ownintegerarray res(1:62, 1:10)
%ownbyteintegerarray labl(1:10) = 14, 13, 12, 11, 10, 9, 8, 7, 6, 5
%ownbyteintegerarray conl(1:10) = 16, 14, 12, 10, 8, 6, 5, 4, 3, 2
%ownstring (3) %array ps(1:5) = %c
"Lab", "Con", "Lib", "Snp", "Ind"
%realarray pc(0:63)
%ownreal p1,p2
==== ercm09/emas-2900/b_lmtsxbs.txt ====
new
prep x25gen_lmtots,lmtots#imp,x,b,clean
dimp11 lmtots#imp
link11 /map
lmtots#rel
.stack 1000
.streams 1
.stackseg 6
.name lmts
.end
lmtsxby
destroy lmtsxby
rename lmtsxby#abs,lmtsxby
old
==== ercm09/emas-2900/ll4_homes.txt ====
$A LINE=42; LEFT=2; SGAP=2; PGAP=0; JUST=1
$A TAB=4; INDENT=0
$A CAP=0; UNDSH=0; UND=0; CAPO=0; UNDSHO=0; UNDO=0
$A INVERT=0; INVO=0
$l1cm
homes for everyone
$p2
Britain faces a major housing crisis. The Tories have slashed public
spending on housing by half and house building is at its lowest since the
1920's. Houses are falling
into disrepair faster than they can be repaired, while homelessness
and waiting lists continue to grow.
$p2 Labour will reverse this decline. Our aim is a decent home for all
with real freedom of choice between renting and owning, on terms people can
afford.
$p2 Council Housing
$p2 Council housing in Edinburgh is on the point of collapse. The Tory
Government has cut the subsidy for housing and the Tory controlled
District Council have sent rents sky-high. Because of the low level
of money spent on maintainance (a quarter less than the average spent by the
56 Scottish District Councils) has resulted in major defects like dampness
==== ercm09/emas-2900/newsys_doitall.txt ====
imp11 newsys_supnew,supnew#rel
imp11 newsys_sinnew,sinnew#rel
newass newsys_dvn87,dvn87y
c dnv87y,newsys_dvn87y
obey b_sup
obey b_cli
obey b_load
obey b_bdk
obey b_moth
obey b_fsys
obey newsys_build
list x,.bpp155
==== ercm09/emas-2900/ftpsoak.txt ====
transfer nrsl,bush(ercm09,xxxx)q,FI,NO
transfer nrsl,bush(ercm09,xxxx)q,FI,NO
transfer nrsl,bush(ercm09,xxxx)q,FI,NO
transfer nrsl,bush(ercm09,xxxx)q,FI,NO
transfer nrsl,emas-a(ercm09,xxxx)z,FI,NO
transfer nrsl,emas-a(ercm09,xxxx)zz,FI,NO
transfer nrsl,emas-a(ercm09,xxxx)zzz,FI,NO
transfer nrsl,emas-a(ercm09,xxxx)zzzz,FI,NO
transfer nrsl,ercvax(ercm09,ednet1)nrsl,FI,NO
transfer
[15003003.ftp]
out
fi
ercm09
xxxx
q
nrsl
NO
.e
no
transfer
==== ercm09/emas-2900/nrsdo.txt ====
%externalroutine nrs(%string (255) s)
%externalroutinespec define(%string (255) s)
%string (255) t,u,v
%integer i,j,k
%owninteger state = 0, lines = 0
%ownintegerarray field(0:4) = 34, 18, 20, 5, 5
%ownintegerarray spc(0:2) = 34, 52, 72
%ownbyteintegerarray first(0:4) = 'L', 'S', 'D', 'Y', 'A'
%ownstring (25) %array names(0:4) = %c
"Long name",
"Short name",
"DTE string",
"YBTS string",
"Application relay"
%on 9 %start
%stop
%finish
%routine strip(%string (*) %name s)
==== ercm09/emas-2900/response2_fe0jan12.txt ====
Node = 80, Term = 80 - 12 Jan 82 1600-1700 ring->n9->fe0
0
0
0
0
42
85
70
53
40
36
36
18
25
11
19
13
12
12
9
10
==== ercm09/emas-2900/intro.txt ====
@make[article]
@device[x2700]
@style[spacing 1]
@modify[hd2,facecode=k]
@begin[text,topmargin=+1.3inches,leftmargin=+0.45inches,rightmargin=+0.6inches]
blank
@newpage
@section[Introduction]
Edinburgh University is spread across
many parts of Edinburgh with two main "campus" areas and a number of
other scattered departments. This situation has led to a very high
dependence on data networking which has been built up over fifteen years in order
to ensure that students and staff can communicate with either the
main University Services or local department machines.
The current network (see fig 1)
is based on three GEC packet switches supporting
33 hosts and 100 synchronous links [1].
The dispersed nature of the University
has resulted in the development of a separate complex
==== ercm09/emas-2900/workshop.txt ====
Workshop Talks
ISO and Wide Area Networks
The talk deals with the current situation in WAN Networking in the UK and the
plans for the transition from the current Coloured Book (CB) protocols to the
emerging ISO protocols.
The history of JANET (The Joint Academic Network) is described together with a
description of the current position and a short resume of the coverage of the
CB protocols on the machines in use in the Academic Community. This is
followed by a comparision between the CB protocols and those emerging from
ISO/CCITT. A description is then given of the plans now being made by the
Academic Community to achieve a transition to the ISO protocols without the
loss of major services or the creation of multiple non-communicating
networks.
Local Area Network Protocol Options
This talk outlines the major options for open system working on Local Area
==== ercm09/emas-2900/stat9s.txt ====
!
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! 2900 FEP STATISTICS PACKAGE
!
!
!
! GRAPH1 - USERS V KILO BYTES/SECOND AND CPU
!
! GRAPH2 - 2900 USERS V BLOCKS RXD & TXD
!
! GRAPH3 - 2970 USERS V BLOCKS RXD & TXD
!
! GRAPH4 - FREQUENCY V PKTS/MIN/USER
!
!
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
%EXTERNALROUTINESPEC OPENPLOTTER(%INTEGER N)
==== ercm09/emas-2900/newsys_build.txt ====
supbuild .in/x,l2
title
newsys_supnewy
newsys_shared
newsys_perm2y
newsys_BTT7Y
newsys_bdk7Y
newsys_FSYS79Y
newsys_LOAD8Y
newsys_cli1y
newsys_moth77y
END
-11 340 KB#2 ADDR=776500, SER=19
-12 344 TT#2
-6 330 RING RX
-7 334 RING TX
-6 770 KMC11
-7 774 DITTO
-13 270 AM1 INTERFACE
-14 274
-13 160
==== ercm09/emas-2900/timans.txt ====
%externalroutine timans(%string (255) s)
%externalroutinespec define(%string (255) s)
%string (255) t,u,v
%integer a,b,c,d,f,e, i
%ownintegerarray tim(0:99)
%ownintegerarray cou(0:99)
%on 9 %start; -> eof; %finish
%unless s -> t.("/").u %start
Printstring("Params as input/output
")
%stop
%finish
define("1,".t); define("2,".u)
select input(1); select output(2)
%cycle
readsymbol(i); printsymbol(i)
%exit %if i = nl
%repeat
%cycle
read(a); read(b); read(c)
==== ercm09/emas-2900/ednet0285.txt ====
{{circle(10,26,0.6)}}
{{INLABEL(.18,"N1")}}
{{circle(10,24.5,0.6)}}
{{INLABEL(.18,"N6")}}
{{circle(10,22.5,.75)}}
{{inlabel(.18,"RING@b")}}
{{inlabel(.12,"@b@bN72")}}
{{circle(10,15.7,3)}}
{{circle(10,4,3)}}
{{circle(24,11.5,0.5)}}
{{inlabel(.14,"Fe4@bT3")}}
{{circle(24,10.5,0.5)}}
{{inlabel(.14,"Fe1")}}
{{circle(24,9.5,0.5)}}
{{inlabel(.14,"Fe2")}}
{{circle(24,4,0.5)}}
{{inlabel(.14,"Fe2")}}
{{circle(30.5,15.7,1.5)}}
{{INLABEL(.14,"JANET@bPSE")}}
{{circle(24,7,.5)}}
{{inlabel(.14,"Fe1")}}
==== ercm09/emas-2900/b_infoxcall.txt ====
prep x25_infos,infos#imp,x,e,m,clean,c
imp11 infos#imp/,l
link11
infos#rel
i77perm
.stack 2000
.streams 1
.name info
.end
infoxcy
disconnect infoxcy
alist11 infos#imp/.lp23
==== ercm09/emas-2900/sys_dvam1s.txt ====
;**************************************
;* DVAM1S *
;* INTERFACE BETWEEN HARDWARE AND IMP*
;* DATE: 28 MAY 85 *
;**************************************
; FOR SUP40 AND BEYOND - 100 INTERRUPTS - AND EXPANDED DUMP
; AUTOMATIC POWER UP ADDED
PS=177776; PROCESSOR STATUS WORD
IDLEST=-1; SUPERVISOR IDLE FLAG
INTVAL=40; DEDICATED LOCATION FOR INTERRUPT NUMBER
ALARMF=44; DITTO - FOR CLOCK
PSECT=46; DITTO - CURRENT PSECT
LASTPS = 54
PXPT=56; POINTS TO RECORD P2 & PXP IN KERNAL
UPAR=177640
UPDR=177600
==== ercm09/emas-2900/response_info12jan.txt ====
Node = 156, Term = 156 - INFO 12 Jan 82 - 14.30-15.30 (approx)
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
==== ercm09/emas-2900/ednet0286.txt ====
{{circle(23,11.5,.5)}}
{{INLABEL(.14,"Fe4")}}
{{circle(12,16,1.5);inlabel(.14,"Telepac@b15003000")}}
{{circle(31.5,4.5,0)}}
{{circle(10,21.7,2.5);inlabel(.35,"KB-CPSE@bGEC 4190@b")}}
{{inlabel(.14,"@B@B@b@b000015000000")}}
{{circle(10,4,2.5);inlabel(.35,"AT-CPSE@bGEC 4190@b")}}
{{inlabel(.14,"@B@B@b@b000016000000")}}
{{CIRCLE(23,2.5,0.5);inlabel(.14,"Fe3")}}
{{CIRCLE(23,10.5,0.5)}}
{{inlabel(.14,"Fe1")}}
{{CIRCLE(23,9.5,0.5)}}
{{inlabel(.14,"Fe2")}}
{{CIRCLE(23,3.5,0.5)}}
{{inlabel(.14,"Fe2")}}
{{CIRCLE(30.5,21.7,1.5)}}
{{INLABEL(.14,"JANET@bPSE")}}
{{CIRCLE(23,7,.5)}}
{{inlabel(.14,"Fe2")}}
{{circle(15.4,24.8,.1);fill(c12)}}
{{circle(17.8,24.8,.1);fill(c13)}}
==== ercm09/emas-2900/impsrc.txt ====
%CONTROL 1; ! 'SYSTEM' PROGRAM (FAST ROUTINE ENTRY/EXIT)
%RECORDFORMAT DUMMY(%INTEGER X)
%CONSTRECORD (DUMMY) %NAME NULL=0
%BEGIN
%RECORDFORMAT STRDF(%INTEGER RDS, NXY, GETB, %BYTEINTEGER %C
SER, REPLY, UNIT, FSYS, %BYTEINTEGERARRAY NAME(0:5), %C
%INTEGER BL, N, PT, MAX, %BYTEINTEGERARRAY BUFF(0:255))
%RECORDFORMAT STRPF(%RECORD (STRDF) %NAME STRD)
%RECORDFORMAT PE(%BYTEINTEGER SERVICE, REPLY, %C
A1, A2, %BYTEINTEGERARRAYNAME B, %INTEGER C)
%CONSTRECORD (STRPF) %NAME STRP1=K'160034'
%CONSTRECORD (STRPF) %NAME STRP2=K'160036'
%CONSTRECORD (STRPF) %NAME STRP5=K'160044'
%CONSTRECORD (STRPF) %NAME STRP6=K'160046'
%CONSTBYTEINTEGERNAME ID=K'160030'
==== ercm09/emas-2900/b_peek.txt ====
imp11 peeks
link11
peeks#rel
i77perm
.stack 500
.streams 1
.end
peeky
==== ercm09/emas-2900/response_kentdec22.txt ====
P
Node = 0, Term = 5
0
0
0
0
6
87
81
20
10
5
3
0
0
1
1
0
0
0
0
==== ercm09/emas-2900/networks85_slide1.txt ====
@majorheading[Advantages of Using a PABX for Data Traffic]
@heading[Common Wiring]
@heading[Direct Connection of Terminals]
@heading[Handling Multiple Terminal Protocols]
@heading[Infrequently Used Terminals]
@heading[Single Exchange Management]
@heading[Carrying Synchronous Traffic]
@newpage
@majorheading[Disadvantages]
@heading[Blocking Problems]
@heading[Cost]
@heading[Limitations of 64kbs]
@heading[Speech/Data Priorities]
@heading[Lack of Network Management]
@heading[Lack of a Name Directory]
@newpage
@majorheading[Future Improvements]
@heading[Data Port Cost]
@heading[Data Interface Unit Changes]
@heading[ ]
@heading[Alternatives to the DIU]
==== ercm09/emas-2900/btt7ss.txt ====
! FILE 'BTT7S'
!**************
!* BTT7S *
!*DA:24.FEB.81*
!**************
%CONTROL K'100001'; ! 'SYSTEM' PROGRAM (FAST ROUTINE ENTRY/EXIT)
%PERMROUTINESPEC SVC(%INTEGER EP, P1, P2)
%BEGIN
%SYSTEMINTEGERFNSPEC MAP VIRT(%INTEGER ID, FROM SEG, TO SEG)
%SYSTEMROUTINESPEC MAPHWR(%INTEGER SEGS)
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%RECORDFORMAT PF(%BYTEINTEGER SERVICE, REPLY, %C
%INTEGER A1, A2, A3)
%RECORDFORMAT TTF(%INTEGER KBS, KBD, TTS, TTD)
%RECORDFORMAT BUFF(%INTEGER PT, LAST, %BYTEINTEGERARRAYNAME B)
%RECORDFORMAT BUFFX(%INTEGER PT, LAST, ARRAYPT)
%CONSTRECORD (BUFFX) %NAME NULL = 0
==== ercm09/emas-2900/x25conv.txt ====
Conversion from NSI to X25 - DRAFT 4
==========================
==== ercm09/emas-2900/cpmhelp.txt ====
SID
Syntax:
SID {pgm-filespec} {,sym-filespec}
Explanation:
The SID symbolic debugger allows you to monitor and test
programs developed for the 8080 microprocessor. SID supports
real-time breakpoints, fully monitored execution, symbolic
disassembly, assembly, and memory display and fill functions.
SID can dynamically load SID utility programs to provide
traceback and histogram facilities.
ENTER .subtopic FOR INFORMATION ON THE FOLLOWING SUBTOPICS:
COMMANDS EXAMPLES UTILITIES
==== ercm09/emas-2900/erteicl_avars.txt ====
%CONTROL K'001001'
%EXTERNALROUTINE AVAR(%INTEGERARRAYNAME NUM,%C
%INTEGER N,START,OP,VAL,GAP)
!W.S.C. 1ST MARCH 1977
!LAST UPDATED 15/03/77 11:40
! TO COMPUTE THE AVERAGE OF THE NUMBERS IN THE ARRAY
!NUM AND THEIR STANDARD DEVIATION. THE COEFFICIENT OF VARIATION
!IS ALSO COMPUTED.
! THERE ARE N NUMBERS IN NUM,STARTING FROM START.VAL
!IS THE AVERAGE VALUE OF THE FIRST HISTOGRAM BIN(OP=4 ONLY)
!AND GAP IS THE DIFFERENCE BETWEEN ADJACENT BINS.
! OP=0 INTEGER AVERAGE ONLY
! OP=1 INTEGER AVERAGE AND S.D. ONLY
! OP=2 DECIMAL AVERAGE ONLY
! OP=3 DECIMAL AVERAGE AND S.D. ONLY
! OP=4 INTEGER AVERAGE & S.D. OF FREQUENCY GROUPED DATA.
==== ercm09/emas-2900/ednet0986.txt ====
{{circle(23,11.5,.5)}}
{{INLABEL(.14,"Fe3")}}
{{circle(10.5,16,1.5);inlabel(.2,"TelePAC@b15003000")}}
{{join(c1,c2)}}
{{circle(0,0,0)}}
{{circle(13,21.7,2.5);inlabel(.35,"KB-CPSE@bGEC 4190@b")}}
{{inlabel(.14,"@B@B@b@b000015000000")}}
{{circle(13,4,2.5);inlabel(.35,"AT-CPSE@bGEC 4190@b")}}
{{inlabel(.14,"@B@B@b@b000016000000")}}
{{CIRCLE(23,2.8,0.5);inlabel(.14,"Fe4")}}
{{CIRCLE(23,10.5,0.5);inlabel(.14,"Fe1")}}
{{CIRCLE(23,9.5,0.5);inlabel(.14,"Fe2")}}
{{CIRCLE(23,3.8,0.5);inlabel(.14,"Fe2")}}
{{CIRCLE(32.5,21.7,1.5);INLABEL(.14,"JANET@bPSE")}}
{{CIRCLE(23,7.3,.5);inlabel(.14,"Fe2")}}
{{circle(12.75,24.8,.1);fill(c12)}}
{{circle(14.75,24.8,.1);fill(c13)}}
{{circle(16.75,24.8,.1);fill(c14)}}
{{circle(20.75,25.2,0)}}
{{circle(6.75,25.2,0)}}
{{CIRCLE(6.75,1.4,0)}}
==== ercm09/emas-2900/kents1280_buff3.txt ====
!*******************************
!* EMAS-2900 BUFFER MANAGER *
!* FILE: BUFF3 (FEP) *
!* DATE: 06.MAR.80 *
!******************************
!! STK = SIZE+200
%CONSTINTEGER SIZE = K'33000'; ! WAS 35000, BUT NEEDS LINK6S
%CONTROL K'100001'
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%RECORDFORMAT D(%INTEGER I)
%CONSTRECORD (D) %NAME NULL = 0
%BEGIN
%RECORDFORMAT BF(%RECORD (BF) %NAME L, %BYTEINTEGER LEN, MODE, %C
%BYTEINTEGERARRAY A(0:99))
%RECORDFORMAT QF(%RECORD (BF) %NAME L)
==== ercm09/emas-2900/ftppd_tablist.txt ====
! ?
" ?
# ?
$ ?
% ?
& ?
' ?
( ?
) ?
* ?
+ ?
, ?
- ?
. ?
/ ?
0 ?
1 ?
2 ?
3 ?
==== ercm09/emas-2900/spider2.txt ====
@make[report]
@majorheading[ERCC Porting]
ERCC to port the code onto the Spiderport,
work to take 9 man weeks,
with the following activities:-
@itemise[
Understanding of Spider I/Fs in Tasking Monitor, Ethernet driver and
upper level interfaces.
Complete specification of I/Fs at Ethernet/Upper level with Spider
Port of code, H/W and compiler specific changes, I/F change in main code
Glue code to match Spiders I/F to the current ERCC code.
Test new code using a Spider box and a test harness supplied by Spider.
Test the complete Spider box, ie ERCC code and new Spider Code.
Test against our other versions, ie GEC,Whitchapel and IBM
]
==== ercm09/emas-2900/colorinfos.txt ====
! FILE 'ERCM08.INC_COLOURDEFS'
%CONTROL K'100001'
%BEGIN
!
! *** COLOUR DEFINITIONS
!
%CONSTINTEGER BLACK=16
%CONSTINTEGER RED=17
%CONSTINTEGER GREEN=18
%CONSTINTEGER YELLOW=19
%CONSTINTEGER BLUE=20
%CONSTINTEGER MAGENTA=21
%CONSTINTEGER CYAN=22
%CONSTINTEGER WHITE=23
%CONSTINTEGER CURBACK=BLACK; !BACKGROUND FOR EVERYONE
! *** OWN ROUTINES FOR DRIVING INTECOLOUR DISPLAY
!FILE 'ERCM08.COLOURS'
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
==== ercm09/emas-2900/node_umctest.txt ====
! file 'node_umctest'
!*********************
!* umctests/umctesty *
!* date: 29.apr.82 *
!*version for node *
!!!!!!!!!!!!!!!!!!!!!!
!stack = 400
%control 1
%include "deimosperm"
%constinteger kernel ser = 29
! %owninteger secondary = 0; !prim = 0, sec = 1
%constintegername secad == k'060016'; ! in buffer seg, set by node
%constinteger wmax = 56; ! max no of writes
%constinteger sfmask = 63; ! circ buffer size for writes
%conststring (13) vsn = "prtn:vsn012m
"
==== ercm09/emas-2900/myusers.txt ====
%EXTERNALROUTINE MYUSERS(%STRING(255)S)
%externalintegerfnspec fecount(%integername a, b)
%EXTERNALINTEGERFNSPEC DPROCEDURE(%INTEGER ACT, ADR)
%RECORDFORMAT RF1(%INTEGER N, A)
%RECORD(RF1) R1
%RECORDFORMAT PF(%STRING(6)USER, %STRING(23)TCP, %BYTEINTEGER A, INVOC, B, N, F,
%INTEGER LOGS, %BYTEINTEGER site, reason, cons1, cons2, %c
%INTEGER ID, PROC, G, H, Z)
%RECORD(PF)%ARRAY P(1:256)
%record (pf) %name pp
%INTEGER J, feusers,tcpusers, i, k, f, l, max
%integerarray fe(0:5)
%ownintegerarray index(0:255)
%string (24) t,u,v,q
%string(20)%array nam(1:50)
%ownintegerarray nuf(1:50)
%ownintegerarray nus(1:50)
%ownintegerarray itp(1:50)
%ownintegerarray xxx(1:50)
==== ercm09/emas-2900/buff3.txt ====
! FILE 'FEP_BUFF3'
!*******************************
!* EMAS-2900 BUFFER MANAGER *
!* FILE: BUFF3 (FEP) *
!* DATE: 04.NOV.80 *
!******************************
!! STK = SIZE+200
%CONSTINTEGER SIZE = K'33000'; ! WAS 35000, BUT NEEDS LINK6S
%CONTROL K'100001'
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%RECORDFORMAT D(%INTEGER I)
%CONSTRECORD (D) %NAME NULL = 0
%BEGIN
%RECORDFORMAT BF(%RECORD (BF) %NAME L, %BYTEINTEGER LEN, MODE, %C
%BYTEINTEGERARRAY A(0:99))
==== ercm09/emas-2900/b_umc.txt ====
imp11 umcs
link11
umcs#rel
i77perm
.stack 400
.streams 0
.end
umcy
==== ercm09/emas-2900/tu58_bintus.txt ====
!
!BINARY FILE IPL LOADER
! RL01 VERSION 29.AUG.79
!
!W.S.CURRIE 1ST DEC. 1976
!
! THIS PROGRAM TAKES AN ABSOLUTE BINARY FILE AS READ
!FROM PAPER TAPE AND PUTS IT ONTO A CONTIGUOUS AREA OF
!THE DISC READY FOR LOADING.
!
! IT CURRENTLY OVERWRITES SYSTEM1 IN BLOCKS 4600-4700
! STREAM 1 IS THE INPUT FILE
! STREAM 2 IS OPTIONAL REPORT FILE
! OUTPUT IS TO DISC 0.60(OCT) BLOCKS ARE WRITTEN.
! BLOCK=START BLOCK TO WRITE(9201)
! STACK=65000 STREAMS=1
==== ercm09/emas-2900/sys_link5s.txt ====
%CONTROL K'101011'; ! 11/45 & TRUSTED
%RECORDFORMAT DFGH(%INTEGER G)
%CONSTRECORD (DFGH) %NAME NULL = 0
%BEGIN
!! STK = 27200
%CONSTBYTEINTEGERNAME ID = K'160030'
%CONSTBYTEINTEGERNAME FSYS = K'160055'
%CONSTINTEGER EXAMINE = 0
%CONSTINTEGER OUT = 2; ! 'MAP' OUTPUT STREAM
%INTEGER CKSM, BC, LOADPT, STK, STR, I, J
%INTEGER LOAD, N, STK STRT, CODEL, GLAL, LDL
%INTEGER STK GAP, TSTK, CODE STRT
==== ercm09/emas-2900/response_n80t80jan6.txt ====
Node = 80, Term = 80 - 6 Jan 82 14.30 - 16.05
0
0
0
0
114
139
100
90
88
69
62
53
34
27
7
4
6
1
2
0
==== ercm09/emas-2900/kents1280_itps8.txt ====
! FILE 'FEP_ITPS8'
!********************************
!* EMAS-2900 FEP ITP SERVER *
!* FILE: ITPS8/ITPS8Y *
!* DATE: 24.SEP.80 16.10 *
!********************************
!! STACK SIZE = 500
%SYSTEMROUTINESPEC MAP HWR(%INTEGER SEG)
%PERMROUTINESPEC SVC(%INTEGER EP, R0, R1)
%RECORDFORMAT DMF(%INTEGER I)
%CONSTRECORD (DMF) %NAME NULL = 0
%CONTROL K'100001'
==== ercm09/emas-2900/cpsequest.txt ====
CPSE Facilities List
Smallest unit fully config.
Largest unit fully config.
Smallest unit, packet rate
Largest unit, packet rate
Line speeds & interface type
Ability to group PSE units at high speed
Pull boards on running system
Re-start attempt on failed boards
No of virtual calls: total
per link
Memory sizes
Max window size
Max packet size
==== ercm09/emas-2900/discovs.txt ====
%externalroutine disc(%string (255) s)
%externalroutinespec define(%string (255) s)
%integer i,j,k
define ("1,".s)
select input(1)
%cycle
readsymbol(i)
printsymbol(i) %if i>=32 %or i = nl
%repeat
%end
%endoffile
==== ercm09/emas-2900/newperm.txt ====
%recordformat eventfm(%integer a, b, c, %string (31) message)
! I/O package constants added
! Operating constants
%const %integer max streams = 5; ! ie can select input/output 0-5
%const %integer max units = 10; ! # of logical disk units allowed
%const %integer max devs = 10; ! # of different device names
%const %integer max fsys = 8_77; ! # of directories/logical disk
! Values for TYPE field in SDFM
%const %integer null type = -1,
char type = 0,
file type = 1
! Values for STATE field (i.e. state of SYM)
%const %integer valid = 0,
invalid = 1,
EOF = 2
! Error exit codes (event info in %signal)
==== ercm09/emas-2900/b_nbsmon.txt ====
imp11 nbsmon/,ll
link11
nbsmon#rel
i77perm
.stack 1000
.streams 0
.end
nbsmony
list nbsmony,.bpp6
==== ercm09/emas-2900/itps8.txt ====
! FILE 'FEP_ITPS8'
!********************************
!* EMAS-2900 FEP ITP SERVER *
!* FILE: ITPS8/ITPS8Y *
!* DATE: 26.MAY.81 16.10 *
!********************************
!! STACK SIZE = 500
%SYSTEMROUTINESPEC MAP HWR(%INTEGER SEG)
%PERMROUTINESPEC SVC(%INTEGER EP, R0, R1)
%RECORDFORMAT DMF(%INTEGER I)
%CONSTRECORD (DMF) %NAME NULL = 0
%CONTROL K'100001'
==== ercm09/emas-2900/b_bspnew.txt ====
prep bsp78s,bsp78s#imp,n
dimp11 bsp78s#imp
link11 /bsp78s
bsp78s#rel
.stack 1000
.streams 0
.name bsps
.codeseg 1
.stackseg 6
.end
bsp78s
destroy bsp78y
rename bsp78s#abs,bsp78y
==== ercm09/emas-2900/sys_link6s.txt ====
!**************************
!* LINK6S/LINK *
!* DATE: 10.APR.80 *
!* 4TH PASS FOR IMP COMP. *
!**************************
%CONTROL K'101011'; ! 11/45 & TRUSTED
%RECORDFORMAT DFGH(%INTEGER G)
%CONSTRECORD (DFGH) %NAME NULL = 0
%BEGIN
!! STK = 27200
%CONSTBYTEINTEGERNAME ID = K'160030'
%CONSTBYTEINTEGERNAME FSYS = K'160055'
%CONSTINTEGER EXAMINE = 0
==== ercm09/emas-2900/fepb_ring4s.txt ====
!********************************
!* EMAS-2900 RING INTERFACE *
!* HANDLER *
!* FILE: RING4S *
!* 27:3:80 *
!*********************************
!! STK = 300, STRM = 1
! COMPILE OPTIONS
! ---------------
! TRACE OPTION #T ON
! ERROR OPTION #E ON
! STATS OPTION #S OFF
!
!NB LOCATION K'140016 IS USED TO HOLD THE CHECKSUM SO THAT IT MAY
!BE ACCESSED FROM CODE
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMROUTINESPEC MAP HWR(%INTEGER SEG)
==== ercm09/emas-2900/ring_lmacrs.txt ====
!**********************
!* LMACRS/LMACRY *
!* DATE: 28.NOV.80 *
!* RING VERSION *
!*********************
%CONSTSTRING (7) VSN = "VSN001B"
!! STACK = 300, STREAMS = 1
%CONTROL K'100001'
%RECORDFORMAT XF(%BYTEINTEGER UNIT,FSYS,%BYTEINTEGERARRAY FNAME(0:5))
%CONSTRECORD (XF) %NAME NULL = 0
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%BEGIN
%RECORDFORMAT BSPF(%INTEGER ST, DS, RC, TC, %C
%BYTEINTEGERARRAY A(0:240))
%RECORDFORMAT MEF(%RECORD(MEF)%NAME LINK,%BYTEINTEGER LEN,TYPE, %C
==== ercm09/emas-2900/b_game.txt ====
e gen_source2/temp
f/deimosperm/s/b_deimosspecs/
%c
imp11 temp
link11 /temp
temp
ercm11.newimp
.stack 6000
.streams 0
.end
game
==== ercm09/emas-2900/b_info.txt ====
prep x25_infos,infos#imp,f,clean
imp11 infos#imp/,l
link11
infos#rel
i77perm
.stack 2000
.streams 1
.name info
.end
infoxy
disconnect infoxy
alist11 infos#imp/.lp23
==== ercm09/emas-2900/reqs.txt ====
@heading[X.25 Packet switch survey]
The requirements for PSEs for the Academic Community are the original JNT
requirements plus the following extensions:-
@enumerate[
A Higher Connectivity PSE (> 100 connections)
A Higher throughput PSE (> 1000 packets/sec)
A small connectivity PSE (about 10 links)
The ability to fully manage a multi-nodal network
Requirement to support X.25 (1984), and investigation of the possibility
of producing conversion aids such as a Yellow Book to X.25(1984) Gateway.
]
==== ercm09/emas-2900/b_lmcon.txt ====
imp11 lmcons/,l
link11
lmcons#rel
i77perm
.stack 1000
.streams 0
.end
lmcony
alist11 lmcons/.lp23
list lmcony,.bpp6
==== ercm09/emas-2900/gatex1.txt ====
! file 'fep_gatex1'
%conststring (7) vsn = "vsn001a"
!****************************
!* emas-2900 fep gate *
!* file: gatex1 *
!* date: 22.jul.81 *
!****************************
!! stack size = 300
%owninteger own term = 72; ! network address
%owninteger subattach flag = 74
%control 1
%include "deimosperm"
%begin
==== ercm09/emas-2900/b_xprot.txt ====
EDIT x25_XPROTs,T#B
TA/198/A1STM/Versi/f<X>KZ(r/Running/i<X>i/ (Fast)/p1)2
E
prep t#b,xprot#imp,F,Q
IMP11 XPROT#IMP/XPROT#REL,xprot#lst
LINK11
ERCM09.I77PERM
XPROT#REL
.STACK 2000
.STREAMS 0
.NAME XPR1
.END
XPR1#OBJ
destroy xpr1y
rename xpr1#obj,xpr1y
alist11 xprot#imp/.lp23
==== ercm09/emas-2900/erte_erteman8s.txt ====
$A PAGE=60;UND='#'
$A JUST=1;PGAP=5;TAB=5,10,20,30
$A NLS=2;INDENT=1;LINE=70
$A PAGENO=1;START=1
$L1CUM
E.R.T.E. USER MANUAL
$B8 $L1CUM
CONTENTS
$A INDENT=3
$B2 $L9CI
1) INTRODUCTION
2) SCRIPT FORMATS AND PREPROCESSING
3) PARAMETER FILES
4) RUNNING E.R.T.E.
5) ERROR MESSAGES
6) CONFIGURING E.R.T.E.
7) DATA ANALYSIS
8) OTHER RELEVANT DOCUMENTATION
$B8 $I1 $L1CUI
ISSUE NO. 8.0 (FOR ERTE MK. 6) 15TH OCTOBER 1980
==== ercm09/emas-2900/b_am1.txt ====
prep fep_eam77,eam77#imp,n,clean
dimp11 eam77#imp
link11 /map
eam77#rel
.stack 1000
.streams 1
.name am1h
.stackseg 6
.end
eam77
destroy eam77y
rename eam77#abs,eam77y
alist11 eam77#imp/.lp23
==== ercm09/emas-2900/node_umc1e.txt ====
! FILE 'UMC1E'
! FILE 'FEP_UMC1E'
!**************
!* UMC1E *
!*DA:09.JUL.81*
!**************
%CONTROL K'100001'; ! 'SYSTEM' PROGRAM AND
! TRUSTED PROG
%PERMROUTINESPEC SVC(%INTEGER EP, R0, R1)
%RECORDFORMAT PARF(%INTEGER TYPE, ADDRESS, LEN)
%EXTERNALROUTINE DQS11E(%RECORD (PARF) %NAME P)
%SYSTEMROUTINESPEC MAPHWR(%INTEGER SEG)
%SYSTEMINTEGERFNSPEC GETID
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMINTEGERFNSPEC MAP ABS(%INTEGER ADR, LEN, REQ ID)
==== ercm09/emas-2900/dumpgec.txt ====
%externalroutine dumpgec(%string(63) s)
%conststring (25) vsn = " Version 1.3"
%owninteger print all = 0; ! prints lau data if <>0
%owninteger mon line = -1; ! line to monitor
%owninteger mon con = 0
%owninteger print this = 0
%constinteger our exchange = 1
%owninteger this exchange = 0, fix exch
%constinteger scd = 0
%constinteger ecd = 1
%constinteger dcd = 2
%constinteger laustats = 3
%constinteger unitstats = 4
%routinespec dumpaddr(%bytearrayname a, %byte l)
%routinespec writehex(%integer n,d)
!Routine for dumping GEC Network Management logs
%routinespec dat(%integer dat)
%routinespec tod(%integer d)
==== ercm09/emas-2900/erteburr_dvburr01.txt ====
;**************************************
;* burr01 *
;* INTERFACE BETWEEN HARDWARE AND IMP*
;* AND LOW LEVEL DUP11 HANDLER *
;* DATE: 07.FEB.80 *
;**************************************
PS=177776; PROCESSOR STATUS WORD
IDLEST=-1; SUPERVISOR IDLE FLAG
INTVAL=40; DEDICATED LOCATION FOR INTERRUPT NUMBER
ALARMF=44; DITTO - FOR CLOCK
PSECT=46; DITTO - CURRENT PSECT
LASTPS = 54
INTINF=56
UPAR=177640
UPDR=177600
UPAR0=40; INDEC INTO PSECT
==== ercm09/emas-2900/docum_dsysman.txt ====
$A PAGENO=1; JUST=1; TOP=3; BOTTOM=4; MARK=2
$A NLS=2
$A TAB=5,10,15,20,25,30
$B1
$N
$L1CM
PDP 11/40 SYSTEM
$P1 @THE NEW SYSTEM IS BASED ON A MESSAGE PASING SCHEME. @A
MESSAGE CONSISTS OF FOUR WORDS, THE FIRST OF WHICH HOLDS THE
ROUTING INFORMATION, BOTH FOR THE MESSAGE AND ANY REPLY. @THE
REMAINING THREE WORDS ARE USED FOR PASSING PARAMETERS. @IN .IMP IT IS
EXPRESSED AS FOLLOWS:-
$A INDENT=1
.$%RECORD .$%FORMAT .PF($%BYTEINTEGER .SERVICE, .REPLY, .$%C
$I0
$I+1 .$%INTEGER .A1, .A2, .A3)
$A INDENT=0
$P1
@THREE ROUTINES ARE PROVIDED IN .'PERM' TO SEND AND RECEIVE MESSAGES,
THEY ARE ACCESSED AS FOLLOWS:-
$A INDENT=1
==== ercm09/emas-2900/b_nbsmox.txt ====
e nbsmon/nbsmox
f/ponoff/pk
g
p_b = k'140172'
%c
imp11 nbsmox/,ll
link11
nbsmox#rel
i77perm
.stack 1000
.streams 0
.end
nbsmoxy
list nbsmoxy,.bpp6
==== ercm09/emas-2900/erteburr_dup11eicl.txt ====
!**************
!* DUP11E *
!*DA:23.FEB.80*
!**************
%CONTROL K'100001'; ! 'SYSTEM' PROGRAM AND
! TRUSTED PROG
%RECORDFORMAT PARF(%INTEGER TYPE, ADDRESS, LEN)
%EXTERNALROUTINE DUP11E(%RECORD (PARF) %NAME P)
%SYSTEMROUTINESPEC MAPHWR(%INTEGER SEG)
%SYSTEMINTEGERFNSPEC GETID
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMINTEGERFNSPEC MAP ABS(%INTEGER ADR, LEN, REQ ID)
%PERMINTEGERFNSPEC SVC(%INTEGER EP, P0, P1)
%RECORDFORMAT PF(%BYTEINTEGER SER, REPLY, %INTEGER A1, A2, A3)
==== ercm09/emas-2900/erte_init70.txt ====
!THE INITIALISE TASK "INIT" - FOR EMAS 2980.
!E.R.T.E. MK.6 VERSION - VIA DUP11S
! W.S.C. 27TH JULY 1976
! J.C.A. 31ST JAN 1978
! G.J.B. 19TH SEPT 1978
! J.C.A. 27TH SEPT 1978
! B.G. 25.JAN.80
! ??? LAST UPDATE 21:12:78 - FILE INIT70
! THIS VERSION IS FOR USE WITH ICL VME/B
!THE TASK RUNS IN SYSTEM SLOT 29
!SET STACK TO 140 STREAMS=0 PRIORITY=1
%CONTROL K'101011'
==== ercm09/emas-2900/bdiagram.txt ====
%const %real halfsize=.1
%const %real x0=0+halfsize, x0a=1, x1=3, x2=6, x2a=7, x3=8, x4=9, x5=10, x6=11,
x7=12
%const %real y0=1, y1=3, y1a=3.4 {y1+2*halfsize}, y2=4.5, y3=6, y4=7,
y4a=8, y5=10, y6=12, y6a=12.5, y7=13.5
%const %integer black=21, red=22, brown=23, blue=24, green=25, purple=26,
orange=27, thick black=28
%const %string (15) %array colours(black:thick black)="black", "red", "brown", "blue",
"green", "purple", "orange", "thick black"
!-------------------------------------------------------------------------------
! The following statement needs to be changed on a price change.
%const %string (2) %array price(1:13)= "15", "20", "20", "25", "30", "30", "30",
"35", "35", "35", "40", "40", "40"
!-------------------------------------------------------------------------------
%const %integer %array stage colours sequence(1:7)=black, red, orange,
==== ercm09/emas-2900/b_bspxg.txt ====
prep ring_bsp78s,bsp78s#imp,o,g
imp11 bsp78s#imp
link11
bsp78s#rel
i77perm
.stack 1000
.streams 0
.name bsps
.end
bsp78gy
==== ercm09/emas-2900/ibmdoc_ftpmemo.txt ====
FTP SCRIPT
IBM (CMS) as an FTP 'P' end
This file is available as a HELP file (named FTP) and as a
script file. FTP is used to transfer files to and from other
computers accessible via the SERC network; it should work with
sites that support either the FTP77 or FTP80 versions of the
protocol. The latter is now the default.
This HELP file relates to the P-end user interface, and
concentrates on defining and explaining the terminology. This
is presented as a glossary in alphabetical order.
For further information about specific prompts in the user
dialogue, there is a separate small HELP file associated with
==== ercm09/emas-2900/docum_dsydesc.txt ====
$A MARK=2
$A TAB=5, 10, 15
$A JUST=1; LINE=69; PAGE=54; TOP=5; BOTTOM=7
$A NLS=2
DESCRIPTION OF DEIMOS
$B1 $L1C
GOALS
$P0 @THE SECOND SYSTEM WAS DESIGNED FOR OPERATION IN A MEDIUM
SIZED .PDP 11. @AT LEAST 16K WORDS OF CORE, A MEMORY MANAGEMENT UNIT,
A DISC OR SIMILAR FAST MASS STORAGE DEVICE, A TERMINAL AND A CLOCK ARE
REQUIRED. @A FULLY SELF SUPPORTING SYSTEM REQUIRES 28K WORDS OF CORE
IN ORDER TO SUPPORT THE COMPILER.
$P1 @THE SYSTEM WAS DESIGNED WITH FIVE MAIN AIMS:
$A INDENT=1
$B1
%@RUNNING %USER %PROGRAMS
$P0 @THE SYSTEM IS DESIGNED TO RUN GENERAL USER
PROGRAMS. @NORMALLY,
ABOUT TWENTY SIMULTANEOUS PROGRAMS SHOULD BE SUPPORTED,
BUT THIS FIGURE SHOULD BE A PARAMETER AT SYSTEM
GENERATION. @EACH PROGRAM
==== ercm09/emas-2900/b_infops.txt ====
prep x25_infop2s,infops#imp,x,e,m,clean
imp11 infops#imp/,l
link11
infops#rel
i77perm
.stack 2000
.streams 1
.name infp
.end
infopxy
disconnect infopxy
alist11 infops#imp/.lp15
==== ercm09/emas-2900/itpinfs.txt ====
%CONTROL 1
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! INFO MARK 2--ITP CONSOLE HANDLER
!
! FILE=ITPS
!
! 27TH AUG 1980
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! THIS MODULE TAKES CONNECTIONS TO FACILITY 18 FROM GATE AND HANDLES
! CONSEQUENT ITP LOGONS FROM CONSOLES. IT ASSOCIATES THE CONSOLE WITH THE USER TASK
! AND WILL LOAD OTHER TASKS TO GIVE THE REQUIRED SERVICE.
! IT THEN HANDLES THE FLOW OF DATA FROM THE TASK TO THE CONSOLE AND VICE-VERSA.
! LOGGING OFF THE CONSOLE IS ALSO CONTROLLED FROM HERE.
!
! SEE INFO NOTES 2 AND 3 FOR INTERFACE DETAILS.
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
==== ercm09/emas-2900/thesis3.txt ====
@device(x2700)
@make[Report]
@Majorheading{Chapter 3}
In the debate which took place in the last quarter of the nineteenth century and
the first decade of the twentieth century on the provision of a state pension, the
poverty of elderly women was frequently specifically noted. One of the objections
raised to introducing a contributory pension scheme was that it would fail to
meet the needs of women.
The previous chapter demonstrated that in the 1960s and 1970s elderly women were
still the poorest of the elderly. However the contributory national insurance
retirement pension scheme was not the primary cause of this. The gloomy
forecasts about contributory schemes do not appear to have been borne out. This
chapter explores why this happened.
We shall find that the answer is to be found in the provision made for married,
and previously married, women through their husbands. In addition special rules
were added to assist women when their marriages ended before retirement age. It
will be argued here that this solution was not the only one possible, that it was
==== ercm09/emas-2900/erteburr_xbur1s.txt ====
! FILE 'XBUR1S'
!*********************
!* xbur1S/xbur1Y *
!* DATE: 20.AUG.81 *
!!!!!!!!!!!!!!!!!!!!!!
!STACK = 140
%RECORDFORMAT XXF(%INTEGER DUMMY)
%CONSTRECORD (XXF) %NAME NULL = 0
%CONTROL X'100001'; ! TRUSTED PROGRAM AND QUICK
! ROUTINE ENTRY AND EIS
%CONSTSTRING (7) VSN = 'VSN001B'
%BEGIN
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%RECORDFORMAT PARF(%INTEGER TYPE, %RECORD (XXF) %NAME B, %C
==== ercm09/emas-2900/enhance.txt ====
@make{report}
@device(x2700)
@flushleft[Edinburgh Regional Computing Centre]
@Majorheading[Proposal to Enhance the Edinburgh University Network]
@subheading{Introduction}
In 1983 the Board funded the purchase of two large GEC Campus Packet
Switches (CPSEs) to form the nucleus of the Edinburgh University X.25 network thus
replacing the older RCO network. This equipment enabled the University
to connect up a total of 62 hosts, terminal concentrators and gateways,
including a link to JANET.
The Board will recall that one of the problems that Edinburgh University
faces is a split between two sites some two kilometres apart. It was therefore
necessary to install two switches, one on the King's Buildings science campus
site and the other located in the main University area in George Square.
@subheading{Current Network}
Since 1983, the University has funded the gradual enhancement of the two
main switches up to close to their potential maximum size. In addition to
this, the University has also upgraded and extended the smaller GEC switch
which formed the pilot X.25 network. All three switches are now close
to their permitted maximum number of connections. A diagram showing the
==== ercm09/emas-2900/b_itps.txt ====
prep fep_itp9s,itp9s#p,e,n,clean
imp11 itp9s#p
link11
itp9s#rel
.stack 1400
.streams 0
i77perm
.name itps
.end
itp9sy
alist11 itp9s#p/.lp23
list itp9sy,.fep72
==== ercm09/emas-2900/reportsep.txt ====
Communications Group - Termly Report
====================================
Personnel
==== ercm09/emas-2900/b_itpx.txt ====
prep fep_itp9s,itp9s#imp,x,e,a,clean
imp11 itp9s#imp/,l
link11
itp9s#rel
i77perm
.stack 1200
.name itps
.streams 1
.end
itp9xy
alist11 itp9s#imp/.lp23
==== ercm09/emas-2900/alert.txt ====
As part of the replacement program for TCPs, all users on TCPA
and users on the first 16 lines of TCPC (00 to 0F inclusive) will
be transferred to a PAD on the weekend of 18/19th October.
Users on TCPC who wish to know if their terminals are going to be switched
can find out their line number by logging into INFO and typing WHO.
If you require more information or PAD documentation please contact
Peter Macvean, ERCC, King's Buildings. (031-667 1081 ext. 2641 or
MAIL P.Macvean).
==== ercm09/emas-2900/z.txt ====
%begin
%externalroutinespec prompt(%string(63) s)
%externalroutinespec xmode(%string(255) s)
%externalroutinespec terminate
%integer i,j
%integerarray line(1:80)
prompt(tostring(0))
xmode("NATIVE,-E")
j=0
%cycle
readch(i);
%unless 'a'<=i<='z' %then printch(i) %else printch(i-'a'+'A')
printch('*');terminate
%if i=26 {^Z} %then xmode("MESSAGE,E") %AND %STOP
%if i=10 %start
printch(13)
! newline
%cycle i=1,1,j
printch(line(i))
%repeat
==== ercm09/emas-2900/ratgames.txt ====
%externalroutine rat(%string (255) s)
%externallongrealfnspec cputime
%externalrealfnspec random(%integername i, %integer n)
%externalstring (255) %fnspec time
%externalroutinespec terminate
%routinespec clear screen
%routinespec pepos(%integer x, y)
%%integer %fn %spec test door
%externalroutinespec prompt(%string (17) s)
%ownbyteintegerarray door(10:66) =
0, 2, 3, 4, 1, 1, 1, 0, 0, 0,
0, 2, 3, 4, 5, 1, 1, 0, 0, 0,
0, 6, 3, 7, 1, 1, 1, 0, 0, 0,
0, 6, 3, 8, 1, 1, 1, 0, 0, 0,
0, 6, 3, 1, 1, 1, 1, 0, 0, 0,
0, 7, 3, 1, 1, 1, 1
! 0 - error, 1 - door is open
! 2 - electrified,
==== ercm09/emas-2900/coral2.txt ====
'CORAL' TEST RESPONDER
'COMMENT' VERSION 1.1
The official definition of Coral 66 does not provide for the output of
data at run time. However the facilities provided by the following
routines are useful within the Test Responder for logging/debugging
purposes. They can be supplied by the implementor either by adapting
existing routines or by writing new ones.
The use of these routines is optional. If the implementor does not wish
to generate such output, he can define these procedures to be null,
comment them out, or delete each occurrence of them from the code. The
occurrences within read.command.octet (chart 3) have been commented out,
because for normal use they produce too much output:- one line per octet
received. The function of each of the routines is as follows:
trwritestring - writes the string supplied as the parameter to the
output buffer.
trwriteint - converts the integer supplied as the first parameter to
==== ercm09/emas-2900/sys_dvno3s.txt ====
;**************************************
;* DVNO3S *
;* INTERFACE BETWEEN HARDWARE AND IMP*
;* DATE: 20 SEP 84 *
;**************************************
; FOR SUP40 AND BEYOND - 100 INTERRUPTS - AND EXPANDED DUMP
; AUTOMATIC POWER UP ADDED
PS=177776; PROCESSOR STATUS WORD
IDLEST=-1; SUPERVISOR IDLE FLAG
INTVAL=40; DEDICATED LOCATION FOR INTERRUPT NUMBER
ALARMF=44; DITTO - FOR CLOCK
PSECT=46; DITTO - CURRENT PSECT
LASTPS = 54
PXPT=56; POINTS TO RECORD P2 & PXP IN KERNAL
UPAR=177640
UPDR=177600
==== ercm09/emas-2900/node_itpinfs.txt ====
%CONTROL 1
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! INFO MARK 2--ITP CONSOLE HANDLER
!
! FILE=ITPS
!
! 27TH AUG 1980
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! THIS MODULE TAKES CONNECTIONS TO FACILITY 18 FROM GATE AND HANDLES
! CONSEQUENT ITP LOGONS FROM CONSOLES. IT ASSOCIATES THE CONSOLE WITH THE USER TASK
! AND WILL LOAD OTHER TASKS TO GIVE THE REQUIRED SERVICE.
! IT THEN HANDLES THE FLOW OF DATA FROM THE TASK TO THE CONSOLE AND VICE-VERSA.
! LOGGING OFF THE CONSOLE IS ALSO CONTROLLED FROM HERE.
!
! SEE INFO NOTES 2 AND 3 FOR INTERFACE DETAILS.
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
==== ercm09/emas-2900/padans.txt ====
%externalroutine padan(%string (255) s)
%externalroutinespec define(%string (255) s)
%externalintegerfnspec stoi(%string (255) s)
%string (255) t,u,v,s2,t2
%integer i,j,k,x,crash
%owninteger this day, hours, thours
%owninteger max = 0, fhours, hours up
%real mtbf
%recordformat padf(%string (15) name, %integer last crash,crash,lastt,maxu, %c
first,last)
%ownrecord (padf) %array pada(1:100)
%ownrecord (padf) %name pad
%string (255)%array res(1:12)
%owninteger no of res
%conststring (3) %array day(1:7) = "Mon", "Tue", "Wed", "Thu", "Fri",
"Sat", "Sun"
%conststring (12) %array month(1:12) = "Jan", "Feb", "Mar", "Apr", "May",
"Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
==== ercm09/emas-2900/x25addr.txt ====
@device[x2700]
@style[topmargin=0.5in,leftmargin=0.5in,bottommargin=0.5in]
@majorheading(EDNET addresses 20 December 1985)
@b[ Configuration of GEC 4190 KB#1 switch System No. 669]
@verbatim[
Line No Address Name Use Comments
lau 01 V -------- TRGS * V35 Trunk to George Sq.
lau 02 H 15000002 EA71 2972 fep (fe2) (Primary Line)
lau 03 H -------- TRK2 Link to KB2 CPSE
lau 04 M 15000004 E882 Xcall - XXX <-> ITP Converter
lau 05 TM 15000099 GW01 Gateway to National Switch (Extern:7001004)
lau 06 M 15000006 CSVX ECSVax - Comp. Sc. Vax No XXX, ITP only
lau 07 M 15000007 XGTE Xgate
lau 08 M -------- GSCP Trunk Link to George Sq. Switch
lau 09 M 15000001 EA72 2972 Fep (fe1) (Secondary Line)
lau 10 M 15000010 ERCV ERCVax - ERCC Vax/VMS 11/750
lau 11 M 15000003 E881 2988 fep (fe2)
lau 12 T -------- STSW Trunk Link to Strathclyde (nb: DTE end)
lau 13 15000013 TCP1 TCP M
lau 14 15000014 LA14 FCRNS - Forrestry Commision TCP (EFC)
==== ercm09/emas-2900/inc_deimosperm.txt ====
!
! SPECS FOR DEIMOS PERM ROUTINES
!
%EXTERNALROUTINESPEC PON(%RECORD(PEF) %NAME P)
%EXTERNALROUTINESPEC POFF(%RECORD(PEF) %NAME P)
%EXTERNALROUTINESPEC PONOFF(%RECORD(PEF) %NAME P)
%EXTERNALINTEGERFNSPEC MAPVIRT(%INTEGER SER,SEG1,SEG2)
%EXTERNALINTEGERFNSPEC GETABS(%INTEGER VADD,LEN,ID)
%EXTERNALINTEGERFNSPEC GETID
%EXTERNALROUTINESPEC ALARM(%INTEGER TICKS)
%EXTERNALROUTINESPEC LINKIN(%INTEGER SER)
%EXTERNALROUTINESPEC MAPHWR(%INTEGER SEGS)
%EXTERNALROUTINESPEC MAPPSECT(%INTEGER TASK,SEG)
!%EXTERNALROUTINESPEC PUSH(%RECORD(QF)%NAME Q,%RECORD(MEF)%NAME M)
!%EXTERNALRECORD(PEF)%MAPSPEC POP(%RECORD(QF)%NAME Q)
%ENDOFFILE
==== ercm09/emas-2900/eam77.txt ====
! file 'fep_eam77'
!********************************
!* emas-2900 fep am1 handler *
!* file: eam7 *
!* date: 19.jul.82 *
!* modified for pcb interface *
!********************************
!! stack size = 300
%owninteger fep no = 9; ! number supplied on load
%control 1
%include "deimosperm"
%begin
%conststring (13)vsn = "am1h:vsn07w
"
%recordformat am1 linkf(%integer rxs, rxd, txs, txd)
==== ercm09/emas-2900/mainmon.txt ====
%EXTERNALROUTINE MAINMON(%STRING (255) S)
%EXTERNALROUTINESPEC PROMPT(%STRING (15) S)
%DYNAMICROUTINESPEC FEPGRAPHS(%STRING (255) S)
%EXTERNALROUTINESPEC DEFINE(%STRING (255) S)
%STRING (255) T, U, UU, TITLE, UUU
%RECORDFORMAT FF( %C
%INTEGER TIM, USERS,STA,CPU,PKTS,SBR,BYT,RJEO,RJEI)
%INTEGER I, DIFF, K, L, US, CP, KB, PK, RJ, WHO, WHO1, WHO2, JUNK
%OWNINTEGER USERS, STA, CPU, PKTS, SBR, BYT, RJEO, TIM, RJEI
%OWNINTEGER POINTS, FEP NO = -1
%CONSTINTEGERARRAY CPU F(0:3) = %C
354, 0, 0, 236; ! NB ASSUMES 2 FEPS ON 2972
%RECORD F(FF)
!!
!!
!!
%ROUTINE RD(%INTEGERNAME N)
READ(N)
%IF N< 0 %THEN N = N+32768*2
%END
!!
==== ercm09/emas-2900/b_lmiots.txt ====
new
prep x25gen_lmxots,lmxots#imp,t,clean
dimp11 lmxots#imp
link11
lmxots#rel
.stack 1000
.streams 1
.stackseg 6
.name lmio
.end
lmioty
destroy lmioty
rename lmioty#abs,lmioty
old
==== ercm09/emas-2900/log_t44simtest2.txt ====
*T44 SINK TEST, 4 DRIVERS*2 CONNS, 18.MAR.81
RING: 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RING: 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RING: 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RING: 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RING: 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RING: 1414 154 214 0 0 1 0 69 8032 372 348 67 66 0
RING: 3143 350 473 90 3 7 1 174 24443 900 1167 198 198 0
RING: 3023 301 368 185 3 7 2 144 25457 808 1314 202 202 0
RING: 3273 292 370 184 3 1 0 160 25443 808 1298 202 202 0
RING: 3420 288 370 191 3 4 2 162 25901 816 1284 205 204 0
RING: 3106 295 346 189 1 4 0 160 25078 796 1231 200 199 0
RING: 2918 307 396 161 3 1 2 145 25460 812 1289 204 203 0
RING: 3603 296 351 180 4 6 1 172 25264 808 1267 201 202 0
RING: 2795 316 357 193 3 7 0 139 25640 812 1324 203 203 0
RING: 2459 1101 315 97 87 13 8 117-32535 1454 1282 291 284 0
RING: 2620 995 294 76 50 24 7 147-31085 1296 1360 353 297 0
RING: 2398 891 283 81 32 22 18 143-30825 1176 1381 367 294 0
RING: 2282 870 263 85 34 19 27 127-31670 1140 1370 366 285 0
RING: 2429 847 287 93 30 20 16 127-31700 1136 1398 348 284 0
RING: 2219 826 302 82 50 22 32 116-31910 1144 1357 325 286 0
==== ercm09/emas-2900/kent#jun81_bsp5s.txt ====
!********************************
!* EMAS-2900 BSP INTERFACE *
!* HANDLER *
!* FILE: BSP5S *
!* 24:11:80 *
!*********************************
!! STK = 300, STRM = 1
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMROUTINESPEC MAP HWR(%INTEGER SEG)
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%RECORDFORMAT DMF(%INTEGER I)
%CONSTRECORD (DMF) %NAME NIL = 0
%CONTROL K'100001'
==== ercm09/emas-2900/link11.txt ====
%EXTERNALROUTINE LINK11(%STRING(63) PARAM)
%STRING(63) MAP
%OWNINTEGER BRIANS FIDDLE = 255
%CONSTINTEGER LIMIT = 128
%OWNINTEGER CODE BASE = 2<<13, GLA BASE = 7<<13
%OWNINTEGER ALONE = 0, MAIN EP = -1, ENTRY = 0
%OWNSTRING(31) TASK ID = ""
%OWNSTRING(31) FIX FILE = ""
%OWNINTEGER STREAMS = 2
%OWNSTRING(31) PERM FILE = "ERCS13.PERM11#REL", %C
LIB FILE = "ERCS13.LIB11#REL", %C
OBJECT = ""
%OWNINTEGER STACK = 8*1024
%CONSTINTEGER PLUG BIT = 64
%EXTERNALINTEGERFNSPEC EXIST(%STRING(255) S)
%EXTERNALROUTINESPEC DEFINE(%STRING(63) S)
%EXTERNALROUTINESPEC PROMPT(%STRING(15) S)
%RECORDFORMAT TABFM(%INTEGER ADDR, INDEX, %C
%BYTEINTEGER TYPE, %STRING(63) TEXT)
%CONSTINTEGER MAX TABLE = 400
%CONSTINTEGER MAX FILES = 50
==== ercm09/emas-2900/invaders.txt ====
!
!
!
! IIIIIIIIIIII NNNNNNN NNNNN VVVVV VVVVV
! IIIIIIIIIIII NNNNNNNN NNNNN VVVVV VVVVV
! IIIIII NNNNNNNNN NNNNN VVVVV VVVVV
! IIIIII NNNNNNNNNN NNNNN VVVVV VVVVV
! IIIIII NNNNNNNNNNN NNNNN VVVVV VVVVV
! IIIIII NNNNN NNNNNN NNNNN VVVVV VVVVV
! IIIIII NNNNN NNNNNN NNNNN VVVVV VVVVV
! IIIIII NNNNN NNNNNNNNNNN VVVVVVVVV
! IIIIII NNNNN NNNNNNNNNN VVVVVVV
! IIIIII NNNNN NNNNNNNNN VVVVV
! IIIIIIIIIIII NNNNN NNNNNNNN VVV
! IIIIIIIIIIII NNNNN NNNNNNN V
!
!
! SPACE INVADERS
! Program written by Stephen H. Muggleton for the VAX.
! Curtated by John W. Machar to run on the FRED machine.
! (also commented by JWM so he could find things easier)
==== ercm09/emas-2900/b_ringnew.txt ====
prep ring8s,ring8s#imp,n
dimp11 ring8s#imp
link11 /map
ring8s
.stack 1000
.streams 1
.stackseg 6
.end
ring8s
destroy ring8y
rename ring8s#abs,ring8y
==== ercm09/emas-2900/b_gecgrabn.txt ====
prep gen_gecgrab,gecgrab#imp,f,m,i
dimp11 gecgrab#imp
link11
gecgrab#rel
.stack 2000
.streams 2
.stackseg 6
.end
gecgrab
newgen gecgrab#abs,gecgraby
==== ercm09/emas-2900/lynp1s.txt ====
%CONTROL K'100001'
%BEGIN
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! *** OWN ROUTINES FOR DRIVING INTECOLOUR DISPLAY
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
%OWNINTEGER CBACK
%OWNINTEGER CFORE
!
!
%ROUTINE SET CURSOR(%INTEGER X,Y)
PRINTSYMBOL(3)
PRINTSYMBOL(X); PRINTSYMBOL(Y)
PRINTSYMBOL(K'100000')
%END
!
==== ercm09/emas-2900/b_prt12.txt ====
prep node_prt12us,prt12us
destroy prt12us#rel,prt12uy
imp11 prt12us/,ll
link11
prt12us#rel
i77perm
.stack 400
.streams 1
.name prt0
.end
prt12uy
list prt12uy,.bpp155
alist11 prt12us/.lp23
==== ercm09/emas-2900/erteburr_init70.txt ====
!THE INITIALISE TASK "INIT" - FOR EMAS 2980.
!E.R.T.E. MK.3 VERSION - VIA THE DQS 11/E
! W.S.C. 27TH JULY 1976
! J.C.A. 31ST JAN 1978
! G.J.B. 19TH SEPT 1978
! J.C.A. 27TH SEPT 1978
! B.G. 25.JAN.80
! ??? LAST UPDATE 21:12:78 - FILE INIT70
! THIS VERSION IS FOR USE WITH ICL VME/B
!THE TASK RUNS IN SYSTEM SLOT 29
!SET STACK TO 140 STREAMS=0 PRIORITY=1
%CONTROL K'101011'
==== ercm09/emas-2900/b_ftprnew.txt ====
e gen_ftpd1s/temps
f/vsn/f/nsi/s/ring/p
m-0(f/{n}/s/!n!/)*
m-0(f/!r!/s/{r}/)*
m-0
f/deimosperm/s/b_deimosspecs/
m-0(f/own id/s/id/)*
m-0f/cli string/s/cli param/p
1
m-0f/ine connect/f/("N/i/ts./
m-0f/,4,3/l0i/!/p
m-0f/node = 74/e0i/node = 0; term = 3; ! fe4
m-0f/printsymbol(k'100000')/s/flushout/
%c
dimp11 temps
link11 /temps
temps#rel
ercm11.imp
.fixup ercm11.imp#fix
.stack 2000
.streams 3
==== ercm09/emas-2900/anlog2s.txt ====
%externalroutine anlog(%string (255) s)
%externalroutinespec define(%string(255)s)
%externalintegerfnspec smaddr(%integer chan, %integername len)
%externalstring (*) %fnspec itos(%integer i,j)
%integer i,j,k,hmax,l,m,o,p,q,type,ent,tci,tco,tbi,tbo,tpp,node, tcf, tsm
%owninteger conns,info, rec, start, max, gsum, maxt
%owninteger free ind = 1
%integerarray n,t,co,ci,bo,bi,pp,cf,sm, icf, ism,ssm,scf(0:127)
%integer line,oline
%ownintegerarray cou(0:11)
%recordformat tabf(%integer con, pkt, byt)
%record (tabf) %array tab(1:70,1:70)
%byteintegerarray nn,tt(1:70)
%byteintegerarray nod(1:15, 0:200)
%string (6) %array nm(1:70)
%switch sw(0:11)
==== ercm09/emas-2900/i77p.txt ====
;**************************************
; SYSTEM ROUTINES FOR IMP77 *
; DATE: 16.jun.81 *
;**************************************
; NB:
; TO TURN INTO THE FILE IMP77PY#REL, DO THE FOLLOWING
; 1) ASS11 SYS_IMP77P,Y,L
; 2) #CONNECT Y
; 3) #SWORD X?????C,3 - TURN IT INTO A 'TEXT' FILE
; 4) CON11 Y/Z
; 5) NEWGEN Z#REL,IMP77PY#REL
;
DS = R5
LNB = R4
PONPOF = 17.
GETID = 12.
.WORD SPONZ-.
.BYTE 3
==== ercm09/emas-2900/erteinit6.txt ====
! FILE 'ERTE_INIT70'
!THE INITIALISE TASK "INIT" - FOR EMAS 2980.
!E.R.T.E. MK.6 VERSION - VIA DUP11S
! W.S.C. 27TH JULY 1976
! J.C.A. 31ST JAN 1978
! G.J.B. 19TH SEPT 1978
! J.C.A. 27TH SEPT 1978
! B.G. 25.JAN.80
! ??? LAST UPDATE 21:12:78 - FILE INIT70
! THIS VERSION IS FOR USE WITH ICL VME/B
!THE TASK RUNS IN SYSTEM SLOT 29
!SET STACK TO 140 STREAMS=0 PRIORITY=1
==== ercm09/emas-2900/eam88.txt ====
! file 'fep_eam77'
!********************************
!* emas-2900 fep am1 handler *
!* file: eam7 *
!* date: 19.jul.82 *
!* modified for pcb interface *
!********************************
!! stack size = 300
%owninteger fep no = 9; ! number supplied on load
%control 1
%include "deimosperm"
%begin
%conststring (13)vsn = "am1h:vsn07w
"
%recordformat am1 linkf(%integer rxs, rxd, txs, txd)
==== ercm09/emas-2900/pass1.txt ====
! IMP77 compiler first pass
!to create an EMAS version:
!
! d*//*
! m-0 (f/!imp77:/ l* i/!imp77:/ m)*
! On EMAS all shorts should be changed to integers.
!
! Also, the INCLUDE facility will need to be modified.
! ARRAYS CHAR,MAPPED,ANYFORM,CNEST BECOME INTEGER
!
!
!###################################################
! Copyright: 1 January 1980 #
! INTERACTIVE DATASYSTEMS (EDINBURGH) LTD. #
! Peter S. Robertson #
! 32 Upper Gilmore Place #
! Edinburgh EH3 9NJ #
! all rights reserved #
!###################################################
==== ercm09/emas-2900/syslex.txt ====
10th 1st 2nd 3rd 4th 5th 6th 7th 8th 9th Aaron ABA Ababa abalone 3se 4h 3te 2bas 3e 3ot Abbott abbreviate 2c
2dicate 3omen 5inal 3uct Abe abed Abel 4ian 4son 3rdeen 4nathy aberrant 6te 3t 4ted 5ing 3yance 6t 2horred 7nt
Abidjan 3gail abject 2late 4ze 3ution Abner 2o aboard 3de 3lition 3minable 7te 3riginal 8e 4ning 3und 3veboard
5ground 5mentioned 2rade Abraham 4m 5son abrasion 6ve 3eact 5st 3idge 6ment 3oad 4gate 3upt 2scess 4issae
3entee 8ism 6ia 6minded 3inthe 3olution 4rb 6ent 5ption 8ve 3tain 4ention 4inent 4ractor 5use 3urd 2uilding
3ndant 3sable 4ive 3t 4ted 5ing 2ysmal 4s Abyssinia AC academia 7cian 6y Acadia acanthus Acapulco accede
4lerate 7ometer 4ntual 4ptant 6or 3ipiter 3laim 5mation 4imate 8ize 3olade 4mpaniment 9st 8y 6lice 8sh 4rdant
6ion 4st 4untant 5ter Accra accredit 8ate 5tion 4ual 3ulturate 4sation 8ve 5tom 2e 3tic 4one 4ylene 2he
Achilles aching 3romatic 2id 4ic 4ulous Ackerman 3ley acknowledgeable ACM acme 2olyte 3rn 3ustic 2quaint 8ance
4iescent 5sition 9ve 5t 6tal 7ing 2re 4age 3id 3obacy 6t 7ic 4polis 3ylate 5ic Actaeon actinic 6de 6um 5olite
6meter 4vism Acton actor 3ress Acts actuarial 2uity 3men ad Ada adage 4io Adair 3m adamant Adams 5on
adaptation 2dend 6a 6um 3ict Addis 5on addle 3ressee Addressograph adduce Adelaide 4e 4ia 3n adenoma 3quacy
2herent 4sion 6ve 2iabatic 3eu 3pic Adirondack adject 6ival 3oin 6t 4urn 3udge 5icate 4tant Adkins 2ler
administer 8rable 10te 11rix 4ral 7ty 6tion 5e 4ttance 4x 5ture 3onish 6tion 2o 3be 3lescent Adolph 6us 3nis
adoption 6ve 3rn 2renal 7ine Adrian 5tic 4enne adrift 3oit 2sorb 6ate 5ption 8ve 2ulate 4t 5erate 7ous 7y
5hood 2ventitious 6ure 8ous 4rb 6ial 5sary 6e 5t 6ise 3isee 5ory Aegean aegis Aeneas 4id aeolian Aeolus aerate
3ial Aerobacter aerobic 4dynamic 4gene 4nautic 4sol 5pace Aeschylus aesthete afar 2fable 3ectate 6ionate 4rent
3iance 4davit 4liate 4ne 5ity 4rmation 4x 3lict 4uence 7t 3orest 8ation 3ront Afghan 6istan aficionado 3eld
3re 2lame 3oat 2oot 3rementioned 5said 5thought 2resh Africa afro 2t 3ereffect 5glow 5image 5life 5math 5noon
5ward Agamemnon agate Agatha agave Agee agenda 2glomerate 4utinate 8in 3regate 5ssion 7or 4ieve 2hast 2ile 3ng
3tate 2leam Agnes 4w agnomen 4stic 2one 4y 3uti 2rarian 3eeable Agricola agricultural 10e 4mony 2ue Agway ah
==== ercm09/emas-2900/sys_fsys1s.txt ====
!******************************
!* FILE SYSTEM HANDLER *
!* FSYS1S/FSYS1Y *
!* DATE: 24.FEB.81 *
!******************************
!*W.S.C. 25TH AUGUST 1976
!*B.G. 27.MAR.78
!*THIS HANDLER IS THE FILE SYSTEM UTILITY TO REPLACE THE
!*EXISTING ONE IN DEIMOS TO PERMIT A FILE SYSTEM TO BE
!*CREATED ON THE AMPEX 9500 DISC AS WELL AS THE RK05'S.
!*IT IS A CONCEPTUAL COPY OF THE RK05 FILE SYSTEM HANDLER
!*EXCEPT THAT A BUFFER POOL IS USED FOR BLOCK DESCRIPTORS
!*AND DIRECTORY BLOCKS.
!*THE CODE IS SHARED BY 3 SYSTEM SLOTS,4 FOR THE RK05'S,
!*AND 9,15 FOR THE AMPEX DISC.THE AMPEX DISC IS LOGICALLY
!*DIVIDED INTO TWO,UNITS 2&3.
==== ercm09/emas-2900/ertedgn_init90.txt ====
! FILE 'ERTE_INIT90'
!THE INITIALISE TASK "INIT" - FOR data general nova.
! W.S.C. 27TH JULY 1976
! J.C.A. 31ST JAN 1978
! G.J.B. 19TH SEPT 1978
! J.C.A. 27TH SEPT 1978
! B.G. 25.JAN.80
! ??? LAST UPDATE 21:12:78 - FILE INIT70
! THIS VERSION IS FOR USE WITH ICL VME/B
!THE TASK RUNS IN SYSTEM SLOT 29
!SET STACK TO 140 STREAMS=0 PRIORITY=1
%CONTROL K'101011'
==== ercm09/emas-2900/ftppd_oldobj.txt ====
. FTPQ F ¾
¢ `-‘ † &DÕÀF
÷ º
À×FÀx º,À<ã
Á ÷ Ì Â$ Á ÷ ¾ À<ãð 0
0
÷ T„‡ À<ãð ÁF÷ D „‡ ÃÐ,÷ ˜ † € úÁ ÷ x À<ã0
„‡ À<ã, Ãæ,÷ Ð, Á ÷ D Ãù,÷ ¶À<ã0
„‡ À<ã, ÷ Æ À<ã0
Ã-÷ †„‡
Á×{ !F÷ ¼Bÿ ßÁ-´  Baÿ ßÿ üÞƒ÷ P„‡ Á
À<ã, ‡ ÁìÂ
B`l³
0Âe ³ ßFÁw S |!÷ ‚À<ãð ‡ ß• Fÿ ´ÞŸ’Fß• FÁ Fÿ ìÞ‡ ß• Fÿ –ÞŸ’FŠFŠFÁ Fÿ ÌÞ‡å † Ê!
&DUÅe ÀF„‡
ÿ ‚ÞÀ
Fÿ Þ
F×p Ãe,ÿ Þ
‚
Á×Fÿ öÝæ,ÿ êÝ
==== ercm09/emas-2900/lynp2s.txt ====
%CONTROL K'100001'
%BEGIN
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! *** OWN ROUTINES FOR DRIVING INTECOLOUR DISPLAY
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
%OWNINTEGER CBACK
%OWNINTEGER CFORE
%OWNINTEGER LYN
!
!
%ROUTINE SET CURSOR(%INTEGER X,Y)
PRINTSYMBOL(K'100000')
%IF LYN = 0 %START
PRINTSYMBOL(24)
%IF Y = 10 %START
==== ercm09/emas-2900/sys_fsys77.txt ====
!******************************
!* file system handler *
!* fsys1s/fsys1y *
!* date: 30.Jun.81 *
!******************************
!*w.s.c. 25th august 1976
!*b.g. 27.mar.78
!*this handler is the file system utility to replace the
!*existing one in deimos to permit a file system to be
!*created on the ampex 9500 disc as well as the rk05's.
!*it is a conceptual copy of the rk05 file system handler
!*except that a buffer pool is used for block descriptors
!*and directory blocks.
!*the code is shared by 3 system slots,4 for the rk05's,
!*and 9,15 for the ampex disc.the ampex disc is logically
!*divided into two,units 2&3.
==== ercm09/emas-2900/b_lmcox2s.txt ====
prep x25gen_lmcoxs,lmcoxs#imp,b,clean
dimp11 lmcoxs
link11 /map
lmcoxs
.streams 1
.stack 1000
.end
lmcoxs
destroy lmcoxy
rename lmcoxs#abs,lmcoxy
==== ercm09/emas-2900/sys_fsys78.txt ====
!******************************
!* file system handler *
!* fsys1s/fsys1y *
!* date: 30.Jun.81 *
!******************************
! STACK = 240, STREAMS = 0
!*w.s.c. 25th august 1976
!*b.g. 27.mar.78
!*this handler is the file system utility to replace the
!*existing one in deimos to permit a file system to be
!*created on the ampex 9500 disc as well as the rk05's.
!*it is a conceptual copy of the rk05 file system handler
!*except that a buffer pool is used for block descriptors
!*and directory blocks.
!*the code is shared by 3 system slots,4 for the rk05's,
!*and 9,15 for the ampex disc.the ampex disc is logically
==== ercm09/emas-2900/dx11leeds.txt ====
.TITLE DX11
.SBTTL DX11 INTERRUPT ROUTINE - DATA AREAS AND DEFINTIONS
;DX11 INTERRUPT ROUTINE
;DATE: 03-FEBRUARY-84
;NOW READ SYSTEM CONFIGURATION FILE CONFIG PAL11
./ COPY=CONFIG
DX11BITS=1
DX11PAR=1
.PARAM=1
DEVPAR=1
EMTNAM=1
;
./ COPY=SYSMAC
.GLOBL $DX11I,DXTT,DXTTP,DXSPWT,DX11PCB,DXPROC,DXINIT,DXOPEN
.GLOBL DXTRAN,DXSTPR,DXBAST,DXBSTB,DXBSTA,$V,$SAVE,$RESTORE
;
DXMAX1=132. ;BURST LENGTH FOR LONG BURST DEVICES
; DXMAX2=4 ;BURST LENGTH FOR TERMINALS
; DXLONG=X'60 ;FENCE FOR LONG BURST
; DXDEV1 - LOWEST ADDRESS SUPPORTED
; DXDEV2 - ONE MORE THAN HIGHEST ADDRESS SUPPORTED
==== ercm09/emas-2900/kents1280_ring4s.txt ====
!********************************
!* EMAS-2900 RING INTERFACE *
!* HANDLER *
!* FILE: RING4S *
!* 27:3:80 *
!*********************************
!! STK = 300, STRM = 1
!NB LOCATION K'140016 IS USED TO HOLD THE CHECKSUM SO THAT IT MAY
!BE ACCESSED FROM CODE
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMROUTINESPEC MAP HWR(%INTEGER SEG)
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%RECORDFORMAT DMF(%INTEGER I)
%CONSTRECORD (DMF) %NAME NIL = 0
==== ercm09/emas-2900/node_buff4.txt ====
! FILE 'FEP_BUFF4'
!******************************
!* EMAS-2900 BUFFER MANAGER *
!* FILE: BUFF4 (NODE) *
!* DATE: 17.FEB.81 *
!******************************
!! STK = SIZE+200
%CONSTINTEGER SIZE = K'55000'
%CONTROL K'100001'
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%PERMROUTINESPEC SVC(%INTEGER EP, R0, R1)
%RECORDFORMAT D(%INTEGER I)
%CONSTRECORD (D) %NAME NULL = 0
%BEGIN
%RECORDFORMAT BF(%RECORD (BF) %NAME L, %BYTEINTEGER LEN, MODE, %C
%BYTEINTEGERARRAY A(0:99))
==== ercm09/emas-2900/ls0124.txt ====
Dump GEC logfile Version 1.3c
Log:ACCNTS.GSS850124
To:LS0124
First record at 01:06:01
Max Bf: 472 Cur Bf: 345 Vcs 10 Min Bf: 340 Req Dl: 0
Date Covered was: 23/ 1/ 1985 23:59:30 Exchange 3
Frames Control 1 seg Calls RESETS Bytes/Sec ERRORS Total Frames Total Data F Av Bytes
Line In/sec %Out %In %Out %In Out In Total Out In Total Out In Out In Out In
Erte 1.2 43% 25% 42% 48% 90 15 2 60 83 103 103953 115566 59411 85996 82 81
Dev mc 0.0 54% 13% 100% 47% 13 0 0 0 0 84 830 601 344 449 19 74
TCP C 1.1 55% 28% 97% 81% 269 287 0 11 28 9408 97890 76934 42815 53892 14 43
Oslan 0.0 75% 5% 99% 77% 18 2 3 0 0 57 537 485 69 404 64 61
G/W 3 0.1 83% 7% 100% 69% 27 136 0 0 2 19 5477 5236 600 4534 21 46
==== ercm09/emas-2900/b_fsave.txt ====
imp11 fsaves/,ll
link11
fsaves#rel
i77perm
.stack 1000
.streams 1
.end
fsavey
alist11 fsaves/.lp23
==== ercm09/emas-2900/buff3s.txt ====
! FILE 'FEP_BUFF3'
!*******************************
!* EMAS-2900 BUFFER MANAGER *
!* FILE: BUFF3 (FEP) *
!* DATE: 29.JAN.81 *
!******************************
!! STK = SIZE+200
%CONSTINTEGER SIZE = K'33000'; ! WAS 35000, BUT NEEDS LINK6S
%CONTROL K'100001'
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%RECORDFORMAT D(%INTEGER I)
%CONSTRECORD (D) %NAME NULL = 0
%BEGIN
%RECORDFORMAT BF(%RECORD (BF) %NAME L, %BYTEINTEGER LEN, MODE, %C
%BYTEINTEGERARRAY A(0:99))
==== ercm09/emas-2900/xtalktest.txt ====
LL80
@H(List of CPSE Problems)
Ref Date Gec Ref Site Status Description
=============================================================================
1 27 Jun 83 F189 KB Closed Poll/Final Funny
2 27 Jun 83 F188 KB Add/Del addr funny
3 12 Aug 83 F200 AT Design Listaddr doesn't work
4 12 Aug 83 F201 -- FT 2.1 Incorrect handling of RNR
5 12 Aug 83 F202 KB Withdr Call redirection fails (Addr table problem)
6 22 Aug 83 F217 AT Process AC3 Call Instr. error (3 crashes)
7 12 Dec 83 F267 KB Link enable causes a CPSE crash
===========================================================================
8 1 Feb 84 F284 KB FT 2.1 CPSE crash caused by console out of paper
9 1 Feb 84 F285 KB FT 2.4 Proc AC14 Call Instruction error at @@C654
10 27 Feb 84 F311 KB FT 2.4 Proc AC14 Call Instruction Error at @@C654
11 8 Mar 84 KB Proc AC15 Call Instruction Error at @@C654
24 Mar 84 **** AT Power Supply Fault
3 Apr 84 **** KB Crash with no message (See F336)
3 Apr 84 **** KB Actually a Process AC20 call inst. error
(logged as F336)
==== ercm09/emas-2900/sys_sin009.txt ====
!***************************
!* SIN009 *
!* DATE: 03.NOV.80 *
!* SUPERVISOR INITIALISER *
!* SUPERVISOR RELEASE 9 *
!***************************
%CONTROL K'100001'; ! MUL+TRUSTED
%PERMROUTINESPEC SVC
%PERMINTEGERMAPSPEC INTEGER(%INTEGER X); ! USED IN INIT
%RECORDFORMAT DUMMY(%INTEGER X)
%CONSTRECORD (DUMMY) %NAME NULL=0
%CONSTINTEGER TASK LOW LIMIT=30
%CONSTINTEGER TASK USER LIMIT = 35
%CONSTINTEGER TASK LIMIT=70
%CONSTINTEGER FREE CELLS=80
%CONSTINTEGER NO OF SERVICES=50
%CONSTINTEGER FRAG NO=15
%CONSTINTEGER PSECT LENGTH=48
%CONSTINTEGER SVC LIMIT=23
==== ercm09/emas-2900/inc2_discquals.txt ====
!*Disconnect qualifiers
!*From PSS:
%constinteger pss prot not supported = x'43'
!*Transport Service
!
%constinteger ts ok = 0
%constinteger ts response = 1
%constinteger ts no connection = 16
%constinteger ts numberbusy = 17
%constinteger ts out of order = 18
%constinteger ts invalid address = 19
%constinteger ts access barred = 20
%constinteger ts incompatible facilities=21
%constinteger ts no reverse charging = 22
%constinteger ts network congestion = 23
%constinteger ts message too long = 24
%constinteger ts protocol apology = 32
%constinteger ts protocol accusation = 33
%constinteger ts timeout = 34
%constinteger ts connection lost = 35
==== ercm09/emas-2900/b_rjesx.txt ====
prep x25_rjesx2,rjesx2#imp,m,clean
imp11 rjesx2#imp/,l
link11
rjesx2#rel
i77perm
.stack 1400
.name rjes
.streams 1
.end
rjesx2y
alist11 rjesx2#imp/.lp23
==== ercm09/emas-2900/sys_sin010.txt ====
!***************************
!* SIN010 *
!* DATE: 14.JUN.82 *
!* SUPERVISOR INITIALISER *
!* SUPERVISOR RELEASE 10 *
!***************************
%CONTROL K'100001'; ! MUL+TRUSTED
%PERMROUTINESPEC SVC
%PERMINTEGERMAPSPEC INTEGER(%INTEGER X); ! USED IN INIT
%RECORDFORMAT DUMMY(%INTEGER X)
%CONSTRECORD (DUMMY) %NAME NULL=0
%CONSTINTEGER TASK LOW LIMIT=30
%CONSTINTEGER TASK USER LIMIT = 35
%CONSTINTEGER TASK LIMIT=75
%CONSTINTEGER FREE CELLS=80
%CONSTINTEGER NO OF SERVICES=50
%CONSTINTEGER FRAG NO=15
%CONSTINTEGER PSECT LENGTH=52
%CONSTINTEGER SVC LIMIT=23
==== ercm09/emas-2900/anlog4s.txt ====
%externalroutine anlog(%string (255) s)
%externalroutinespec define(%string(255)s)
%externalintegerfnspec smaddr(%integer chan, %integername len)
%externalstring (*) %fnspec itos(%integer i,j)
!nsm
%integer next tot, sum, ch, nodeb
%integer qtr6, qtr9, hr6, hr9 ,tot6, tot9, hr, min, qtr
%integer last6, last9, time6, time9, time
%string(3) hrs, mins, secs
%integerarray entb(0:1,1:25)
%recordformat totf(%integer sum, %byteinteger node, hr, min)
%record(totf) %array tot pkts(1:576)
!end
%integer i,j,k,hmax,m,o,p,q,type,ent,tci,tco,tbi,tbo,tpp,node, tcf, tsm
%integer diff, ntime, thr, tmpr
%owninteger conns,info, rec, start, max, gsum, maxt
%owninteger free ind = 1
%integerarray n,t,co,ci,bo,bi,pp,cf,sm, icf, ism,ssm,scf, mpr, lastt(0:127)
%integerarray ompr, mpx, mpp(0:127)
%integer line,oline
==== ercm09/emas-2900/config509.txt ====
16th Sep. 1986
Dear Ian,
System 509
Could you please build me a T2R7 system for machine #509 with the following
changes:-
1. Line 9 to be a DCE.
==== ercm09/emas-2900/sys_sin011.txt ====
!***************************
!* SIN011 *
!* DATE: 20 SEP 84 *
!* SUPERVISOR INITIALISER *
!* SUPERVISOR RELEASE 11 *
!***************************
%CONTROL K'100001'; ! MUL+TRUSTED
%PERMROUTINESPEC SVC
%PERMINTEGERMAPSPEC INTEGER(%INTEGER X); ! USED IN INIT
%RECORDFORMAT DUMMY(%INTEGER X)
%CONSTRECORD (DUMMY) %NAME NULL=0
%CONSTINTEGER TASK LOW LIMIT=30
%CONSTINTEGER TASK USER LIMIT = 35
%CONSTINTEGER TASK LIMIT=75
%CONSTINTEGER FREE CELLS=80
%CONSTINTEGER NO OF SERVICES=50
%CONSTINTEGER FRAG NO=15
%CONSTINTEGER PSECT LENGTH=52
%CONSTINTEGER SVC LIMIT=23
==== ercm09/emas-2900/inc_records.txt ====
!
! STANDARD RECORD FORMATS......QF,MEF,PEF
!
! ASSUMES NSIF DEFINED.
!
%RECORDFORMAT QF(%RECORD(QF)%NAME LINK)
%RECORDFORMAT MEF(%RECORD(MEF)%NAME LINK,%BYTEINTEGER LEN,TYPE, %C
%RECORD(NSIF) NSL)
%RECORDFORMAT PEF(%BYTEINTEGER SER,REPLY,(%BYTEINTEGER FN,PORT, %C
%RECORD(MEF)%NAME MES,%BYTEINTEGER S0,S1 %OR %INTEGER A,B,C %OR %C
%BYTEINTEGER A1,A2,B1,B2,C1,C2))
%ENDOFFILE
==== ercm09/emas-2900/cslinktest.txt ====
; PDP-11 LINK TEST PROGRAM PAL-11 VERSION(LKP11)
.ABSOLUTE
;REG DEFINITION
R1=%1
R2=%2
R3=%3
TEMP=%4
R5=%5
SP=%6 ;STACK PTR
PC=%7 ;PROG. CTR.
PS=777776 ;PSW
;********************
;CONDITIONALS HERE
BIT9=1 ;BIT9=1 FOR 9-BIT OPTION
;OMIT 'BIT9=1' FOR 8-BIT OPTION
PRAV=1 ;PRAV=1 IF STD KEYBOARD/PRINTER AVAILABLE
;OMIT 'PRAV=1' IF NOT AVAILABLE
==== ercm09/emas-2900/titlesh.txt ====
@make[article]
@device[x2700]
@style[spacing 1]
@begin[text,topmargin=+1.1inches,leftmargin=+0.25inches,rightmargin=+0.5inches]
blank
@newpage
@majorheading[AN APPRAISAL OF THE ADVANTAGES & DISADVANTAGES
OF USING A PABX FOR DATA TRAFFIC]
@BLANKSPACE[0.5in]
@centre[@b[Brian Gilmore
Communications Manager
Edinburgh Regional Computing Centre
University of Edinburgh]]
@blankspace[1.8in]
The paper discusses the main advantages and disadvantages of using a
modern PABX for mixed speech and data traffic. It comes to the conclusion
that with the currently available technology it is not economic to use
such an exchange for extensive data traffic and the paper goes on to look at
future trends in this area in
particular the use of PABX/LAN Gateways to ease connection problems.
==== ercm09/emas-2900/inc2_various.txt ====
! Various useful consts etc
%CONSTINTEGER TRUE = 1
%CONSTINTEGER FALSE = 0
%CONSTINTEGER CR = 13
%CONSTINTEGER LF = 10
! Buffer Manager Consts
%CONSTINTEGER LONG = 0
%CONSTINTEGER SHORT = 1
%CONSTINTEGER REQUEST BUFFER = 0
%CONSTINTEGER RELEASE BUFFER = 1
%CONSTINTEGERNAME NO OF BUFF == K'100112'
%CONSTINTEGERARRAYNAME BMS == K'100112' ;! Buffer Manager Statistics
%ENDOFFILE
==== ercm09/emas-2900/testout3.txt ====
%EXTERNALSTRINGFNSPEC INTERRUPT
%EXTERNALSTRINGFNSPEC TIME
%EXTERNALLONGREALFNSPEC CPUTIME
%EXTERNALROUTINESPEC USERS(%STRING (255) S)
%EXTERNALROUTINESPEC METER(%STRING (255) S)
%SYSTEMROUTINESPEC CONSOLE(%INTEGER EP, %INTEGERNAME AD, LEN)
%OWNINTEGER LYNBAN=0
%EXTERNALROUTINE CLEAR LYN(%STRING (255) S)
PRINTCH(19)
PRINTCH(1)
PRINTCH(18)
PRINTCH(26)
PRINTCH(4)
%END
%ROUTINE BAN CLEAR
PRINTCH(27); PRINTCH('K')
%END
%ROUTINE BAN PLOT(%INTEGER X,Y)
%RETURNUNLESS 0<=X<=79 %AND 0<=Y<=29
PRINTCH(27); PRINTCH('Y'); PRINTCH(X+31)
==== ercm09/emas-2900/b_gate.txt ====
imp11 gate77
link11
gate77#rel
i77perm
.stack 1000
.streams 1
.end
gate77y
alist11 gate77/.lp23
==== ercm09/emas-2900/reportmar.txt ====
Communications Group - Termly Report
====================================
Personel
==== ercm09/emas-2900/ednet0385.txt ====
{{circle(23,11.5,.5)}}
{{INLABEL(.18,"EML")}}
{{circle(31.5,3,0.6)}}
{{INLABEL(.18,"N6")}}
{{circle(31.5,4.5,.75)}}
{{inlabel(.18,"RING@b")}}
{{inlabel(.12,"@b@bN72")}}
{{circle(10,21.7,3)}}
{{circle(10,4,3)}}
{{CIRCLE(28,9.5,0.5)}}
{{inlabel(.14,"Fe4@bT3")}}
{{CIRCLE(23,10.5,0.5)}}
{{inlabel(.14,"Fe1")}}
{{CIRCLE(23,9.5,0.5)}}
{{inlabel(.14,"Fe2")}}
{{CIRCLE(23,3,0.5)}}
{{inlabel(.14,"Fe2")}}
{{CIRCLE(30.5,21.7,1.5)}}
{{INLABEL(.14,"JANET@bPSE")}}
{{CIRCLE(23,7,.5)}}
{{inlabel(.14,"Fe1")}}
==== ercm09/emas-2900/ringold_nsiwes.txt ====
!**********************
!* NSIES/NSIWY *
!* DATE: 17.JUN.81 *
!*********************
%CONSTSTRING (7) VSN = "VSNE01E"
!! STACK = 400, STREAMS = 3
!! NOTE: FOR VERSIONS THAT ARE RUN OUT OF A 2900 FEP SYSTEM,
!! MESSAGES FROM THE NETWORK SHOULD BE ENABLED - SEE
!! THE COMMENT AT 'MESSAGES ENABLED'
%CONTROL 1
%include "DEIMOSPERM"
%RECORDFORMAT XF(%BYTEINTEGER UNIT,FSYS,%BYTEINTEGERARRAY FNAME(0:5))
%BEGIN
%PREDICATESPEC READ FNAME(%RECORD(XF)%NAME FILE)
%%RECORDFORMAT ITPF(%BYTEINTEGER CNSL,HB1,HB2,LEN, %C
%BYTEINTEGERARRAY DATA(0:127))
==== ercm09/emas-2900/response_n7t9dec22a.txt ====
Node = 7, Term = 9
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
==== ercm09/emas-2900/response_n7t9dec22b.txt ====
Node = 7, Term = 9
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
==== ercm09/emas-2900/b_bdk.txt ====
dimp11 bdk7s
link11 /map
bdk7s
.codeseg 2
.stackseg 6
.stack 200
.streams 0
.end
bdk7s
c bdk7s#abs,newsys_bdk7y
==== ercm09/emas-2900/kmc11_kmc2s.txt ====
!
! KMC11 ASSEMBLER V2
! STARTED GJB 28/03/78
! UPDATED GJB 29/09/78
!
!%CONTROL K'101011'
%BEGIN
%OWNINTEGER FAULTS,LPTR,CLOC,DLOC,TYPE,VALUE,PRINT,LMAX,INST,PPTR,I,COUNT
%OWNINTEGER CORD,SPTR,J,MACLEV,MTPTR,IN1,IN2,IN3,K,TOELSE,POSN
%OWNINTEGER ASL=-1,LS=3
%RECORDFORMAT TF(%BYTEINTEGERARRAY NAME(0:5),%INTEGER TYPE,VALUE)
%RECORD(TF)%ARRAY TAG(0:259)
%RECORDFORMAT T1F(%BYTEINTEGERARRAYNAME NAME)
%RECORDFORMAT T2F(%RECORD(TF)%ARRAYNAME NAME)
%RECORD(T1F) T1
%RECORD(T2F)%NAME T2
%OWNBYTEINTEGERARRAY TTAG(0:2559) = %C
66, 0, 0, 0, 0, 0, 7, 0, 255, 255,
67, 0, 0, 0, 0, 0, 5, 0, 0, 0,
90, 0, 0, 0, 0, 0, 5, 0, 1, 0,
66, 82, 71, 0, 0, 0, 1, 0, 0, 97,
==== ercm09/emas-2900/b_xgate.txt ====
DESTROY XGAT#OBJ,XGAT#IMP,XGAT#REL,XGAT#LIS
EDIT XGATE,XGAT#IMP
A/198/A1STM/Versi/F<X>KM/XGAT Running/M0R/Running/I<X>I/ (BACG)/P1
TR/_CONFIG/I/_BACGCONF2/
E
IMP11 XGAT#IMP/XGAT#REL,XGAT#LIS
LINK11
ERCM09.I77PERM
XGAT#REL
.STACK 5000
.STREAMS 1
.END
XGAT#OBJ
PSSE XGAT#OBJ
COPY XGAT#OBJ,XGATEy
DESTROY XGAT#LIS,XGAT#OBJ,XGAT#IMP,XGAT#REL
==== ercm09/emas-2900/eamdum.txt ====
m 243
c 12
x 4
m 242
d -16
d 16
m 243
c 5
i 255
i 254
i 0
i 168
c 12
s -2
d -16
d 16
m 243
c 2
d 0
d 4
d 0
==== ercm09/emas-2900/kmc11_kmc3s.txt ====
!
! KMC11 ASSEMBLER V2
! STARTED GJB 28/03/78
! UPDATED GJB 29/09/78
!
!%CONTROL K'101011'
%BEGIN
%OWNINTEGER FAULTS,LPTR,CLOC,DLOC,TYPE,VALUE,PRINT,LMAX,INST,PPTR,I,COUNT
%OWNINTEGER CORD,SPTR,J,MACLEV,MTPTR,IN1,IN2,IN3,K,TOELSE,POSN
%OWNINTEGER ASL=-1,LS=3
%RECORDFORMAT TF(%BYTEINTEGERARRAY NAME(0:5),%INTEGER TYPE,VALUE)
%RECORD(TF)%ARRAY TAG(0:259)
%RECORDFORMAT T1F(%BYTEINTEGERARRAYNAME NAME)
%RECORDFORMAT T2F(%RECORD(TF)%ARRAYNAME NAME)
%RECORD(T1F) T1
%RECORD(T2F)%NAME T2
%OWNBYTEINTEGERARRAY TTAG(0:2559) = %C
66, 0, 0, 0, 0, 0, 7, 0, 255, 255,
67, 0, 0, 0, 0, 0, 5, 0, 0, 0,
90, 0, 0, 0, 0, 0, 5, 0, 1, 0,
66, 82, 71, 0, 0, 0, 1, 0, 0, 97,
==== ercm09/emas-2900/b_veris.txt ====
IMP11 gen_VERIS77/veris77#rel,L
LINK11
VERIS77#REL
GEN_EXTERNSREL
I77PERM
.STACK 6000
.STREAMS 1
.END
VERIS77Y
==== ercm09/emas-2900/newsys_supde0.txt ====
DEIMOS VSN 10.1 14.JUN.82 (SHARED PERM IN SEG 0 + NEW SEG 8)
RL01
3500
DVRUBY N 0
SUP50 60002 0
PERM2Y 60006 0
BTT7Y 60012 0
RL06Y 60016 0
FSYS78 60022 0
LOAD8Y 60026 0
CLI2Y 60032 0
MOTH6Y 60036 0
END
-11 330 KB #2, VEC=776170, SER = 19
-12 334 TT#3
-7 320 RING RECEIVE 764040
-6 324
-16 400 UMC 1ST LINE, ADDR = 766760
-17 404
-18 410
-19 414
==== ercm09/emas-2900/house.txt ====
-1
745 35 3 13250 6625 L
3976 59 4 17250 8797 M
3984 59 4 10000 5500 B
3379 60 3 13000 8190 F
5230 29 3 12600 6552 B
5473 58 4 17000 8500 D
6083 2 3 13250 6890 M
5126 58 3 13750 6875 F
5553 43 3 13000 6500 S
5516 36 4 14500 9135 D
5515 6 3 16000 8000 M
5303 36 3 13250 7685 U
3683 56 4 18000 11340 M
3886 2 5 17500 10500 D
3714 10 3 14250 7125 F
5167 6 3 15750 8820 M
5446 30 3 12300 7380 F
6070 14 3 15000 7800 S
5385 43 3 18000 9000 D
5547 6 3 16250 10400 D
==== ercm09/emas-2900/erteicl_scpt2s.txt ====
!
!THE SCRIPT TASK FOR SIMPLE INTERACTIVE VIDEO CLUSTER
!
! W.S.C. MODIFIED FROM Z16301 22ND JAN 1980
!
!V001
!
! ??? LAST UPDATE 14:3:80
!
! THIS VERSION FOR USE WITH SIVC
!THIS TASK READS UP TO NUMSCR SCRIPT FILES FROM THE DISC
!AND SENDS SCRIPT LINES AT A GIVEN RATE TO THE TCP
!PROTOCOL HANDLER.THE TASK ASSUMES THAT TKPARN
!IS A PARAMETER FILE FROM WHICH IT READS:-
! 1)THE NUMBER OF SCRIPTS
! 2)THE % OF LINE SPEED TO BE TAKEN AS TYPING SPEED
! 3)THE TIME DELAY BETWEEN STARTING EACH SCRIPT
! FOR EACH SCRIPT:-
! 4)SCRIPT FILE NAME,SYSTEM AND UNIT NUMBER
! 5)LINE SPEED(CHARS/SEC)
! 6)GROUP ADDRESS
==== ercm09/emas-2900/node_ncon10s.txt ====
! file 'node_ncon10s'
!**********************
!* ncon10s/node *
!* date: 02.sep.82 *
!*********************
%conststring (13) vsn = "node:vsn010h
"
!! stack = 400, streams = 1
%control 1
%include "deimosperm"
%recordformat xf(%byte unit,fsys,%bytearray fname(0:5))
%begin
%constinteger control ser = 11
%constinteger kernel ser = 29
%constintegername node number == k'060016'; ! in buffer seg
%recordformat rjef(%byteintegerarray data(0:239))
==== ercm09/emas-2900/ring_lmeors.txt ====
! file 'lmeors'
!**********************
!* lmeors/lmeory *
!* date: 16.dec.81 *
!*********************
%conststring (13) vsn = "lmeo:vsn001b
"
!! stack = 300, streams = 1
%control 1
%recordformat xf(%byteinteger unit,fsys,%byteintegerarray fname(0:5))
%include "deimosperm"
%begin
%owninteger mon = 1
%%recordformat itpf(%byteinteger cnsl,hb1,hb2,len, %c
%byteintegerarray data(0:127))
%recordformat itp2f(%byteinteger cnsl, hb1, hb2, %string(127) s)
==== ercm09/emas-2900/b_pcl.txt ====
imp11 pclo4s
link11
pclo4s#rel
i77perm
.stack 1400
.streams 0
.name clok
.end
pclo4y
==== ercm09/emas-2900/erte_clog6s.txt ====
FILE 'CLOG6S'
!
!
! CLOG CLOG CLOG CLOG CLOG CLOG CLOG CLOG CLOG CLOG CLOG CLOG
! CLOG CLOG CLOG CLOG CLOG CLOG CLOG CLOG CLOG CLOG CLOG CLOG
!
!
!
%CONTROL K'001001'
!
!
%BEGIN
!
!
!
!G.J.B. // J.C.A. STARTED 10:11:76
! ??? LAST UPDATE 15:3:79 14:10 - FILE CLOG5S
!
! FOR ERTE MK.6 MK. 3 MODS MARKED !&&
! FOR ERTE MK.3 MK. 4 MODS MARKED !@@
! SET UP FOR F1 STANDARD COMMANDS
==== ercm09/emas-2900/b_pollpad.txt ====
new
prep x25gen_pollpads,poll#imp,x
dimp11 poll#imp
link11
poll#rel
.stack 4000
.streams 3
.stackseg 6
.name poll
.end
pollxy
destroy pollxy
rename pollxy#abs,pollxy
old
==== ercm09/emas-2900/dirs.txt ====
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! DIR LISTS CURRENT DIRECTORY
!
! W.S.C. 8TH APRIL 1980
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! STACK=2000 STREAMS=1
%CONTROL K'101011'
%BEGIN
! DATA AREAS
%CONSTINTEGER SERV=3
%CONSTINTEGER FSERV=4
%CONSTINTEGER DIRBLK=97
%CONSTINTEGER EXAMINE=0
%CONSTINTEGER GET NEXT=1
==== ercm09/emas-2900/temp.txt ====
notice nodes
gp15
n
h
n
y
n
==== ercm09/emas-2900/erteicl_alog6s.txt ====
!
!
! ALOG ALOG ALOG ALOG ALOG ALOG ALOG ALOG ALOG ALOG ALOG ALOG
! ALOG ALOG ALOG ALOG ALOG ALOG ALOG ALOG ALOG ALOG ALOG ALOG
!
!
!
%CONTROL K'001001'
!
!
%BEGIN
!
!
!
!J.C.A. STARTED 10:11:76
! ??? LAST UPDATE 14:3:79 11:30 - FILE ALOG6S
! FOR ERTE MK 4.0 AND MK 3.2 UPTO 128 SCRIPTS
! --- STACK 15000, STREAMS 4 ---
==== ercm09/emas-2900/sys_fsytxs.txt ====
! FILE 'SYS_FSYSTU581S' - MODIFIED TO RUN TU58 ONLY !!!!!!!
!******************************
!* FILE SYSTEM HANDLER *
!* FSYS1S/FSYS1Y *
!* DATE: 28.JUN.79 *
!******************************
!*W.S.C. 25TH AUGUST 1976
!*B.G. 27.MAR.78
!*THIS HANDLER IS THE FILE SYSTEM UTILITY TO REPLACE THE
!*EXISTING ONE IN DEIMOS TO PERMIT A FILE SYSTEM TO BE
!*CREATED ON THE AMPEX 9500 DISC AS WELL AS THE RK05'S.
!*IT IS A CONCEPTUAL COPY OF THE RK05 FILE SYSTEM HANDLER
!*EXCEPT THAT A BUFFER POOL IS USED FOR BLOCK DESCRIPTORS
!*AND DIRECTORY BLOCKS.
!*THE CODE IS SHARED BY 3 SYSTEM SLOTS,4 FOR THE RK05'S,
!*AND 9,15 FOR THE AMPEX DISC.THE AMPEX DISC IS LOGICALLY
==== ercm09/emas-2900/tcpcrash.txt ====
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAHDIAOLIPACIOKOFBCNFBAAAAAAAAPPAABAAAOBJOIODAHDIAIKIPIAAO
MLGBMKGBAAAAAAAABAAADAAAAAAAAAAAAAAABABADAPPAAAAAAAAAAAABACADAPP
AAAAAAAAAAAABADADAPPAAAAAAAAAAAABAEADAEAAAAAAAAAAAAABAFADAFAAAAA
AAAAAAAABAGADAPPAAAAAAAAAAAABAHADAPPAAAAAAAAAAAABAIADAPPAAAAAAAA
AAAABAJADAJAAAAAAAAAAAAABAKADAKAAAAAAAAAAAAABALADALAAAAAAAAAAAAA
BAMADAMAAAAAAAAAAAAABANADAPPAAAAAAAAAAAABAOADAOAAAAAAAAAAAAABAPA
DAPPAAAAAAAAHDIAMPHPIAAOEGHBIDHBAAAAAAAAAAAADAAAAAAAMFKAAAAAAABA
DAPPAAAAAAAAAAAAAACADAPPAAAAAAAAAAAAAADADAPPAAAAAAAAAAAAAAEADAEA
AAAAMFKAKIBHBAFADAFAAAAAMFKAAAAAAAGADAPPAAAAAAAAAAAAAAHADAPPAAAA
AAAAAAAAAAIADAPPAAAAAAAAAAAAAAJADAJAAAAAMFKAAAAAAAKADAKAAAAAMFKA
AAAAAALADALAAAAAMFKAAAAAAAMADAMAAAAAMFKAAAAAAANADAPPAAAAAAAAAAAA
AAOADAOAAAAAMFKAAAAAAAPADAPPAAAAAAAAHDIAAFHPIBAOMLGBMKGBAAAAAAAA
BAAADAPPAAAAAAAAAAAABABADAPPAAAAAAAAAAAABACADAPPAAAAAAAAAAAABADA
DAPPAAAAAAAAAAAABAEADAPPAAAAAAAAAAAABAFADAFBAAAAAAAAAAAABAGADAPP
AAAAAAAAAAAABAHADAPPAAAAAAAAAAAABAIADAIBAAAAAAAAAAAABAJADAPPAAAA
AAAAAAAABAKADAPPAAAAAAAAAAAABALADAPPAAAAAAAAAAAABAMADAPPAAAAAAAA
AAAABANADANBAAAAAAAAAAAABAOADAOBAAAAAAAAAAAABAPADAPPAAAAAAAAHDIA
EKGPIBAOEGHBIDHBAAAAAAAAAAAADAPPAAAAAAAAAAAAAABADAPPAAAAAAAAAAAA
==== ercm09/emas-2900/b_lm2972.txt ====
e gen_lmtims/temp
f/prompt("n/k2g
node = 9; term = 75
m-0f/lmti:/s/lmf2:/p
m-0f/ercm09/s/ercv12/p
f/LIAM/s/BRIN/p
%c
imp11 temp
link11
temp#rel
i77perm
.stack 2000
.streams 1
.name lmf2
.end
lm2972y
==== ercm09/emas-2900/verifgbs.txt ====
!
! ACCELERATED VERIFY WITH IN-LINE CODING
! GJB 15/01/78
!
! STACK=70000 STREAMS=1
!
%CONTROL K'101011'
%BEGIN
%CONSTBYTEINTEGERNAME ID=K'160030'
%RECORDFORMAT DLF(%INTEGER PR,NEXT)
%RECORD(DLF)%ARRAY DIRL(0:K'7777')
%RECORD(DLF)%NAME BLKINFO
%RECORDFORMAT DF(%BYTEINTEGERARRAY NAME(0:5),%INTEGER FIRST,PR)
%RECORD(DF)%ARRAY DIRT(0:51)
%RECORD(DF)%NAME FILE
%RECORDFORMAT LF(%BYTEINTEGERARRAY NAME(0:15),%INTEGER FIRST,LAST, %C
DIRB,DIRLIST)
%RECORD(LF)%NAME LABEL
LABEL==DIRT(0)
%RECORDFORMAT PF(%BYTEINTEGER SERVICE,REPLY,%INTEGER A1, %C
%RECORD(DLF)%NAME A2,%INTEGER A3)
==== ercm09/emas-2900/node_parr1e.txt ====
! FILE 'FEP_PARR1E'
!**************
!* PAR11E *
!*DA:12.FEB.80*
!**************
%CONTROL K'100001'; ! 'SYSTEM' PROGRAM AND
! TRUSTED PROG
%RECORDFORMAT PARF(%INTEGER TYPE, ADDRESS, LEN)
%EXTERNALROUTINE PAR11E(%RECORD (PARF) %NAME P)
%SYSTEMROUTINESPEC MAPHWR(%INTEGER SEG)
%SYSTEMINTEGERFNSPEC GETID
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMINTEGERFNSPEC MAP ABS(%INTEGER ADR, LEN, REQ ID)
%RECORDFORMAT PF(%BYTEINTEGER SER, REPLY, %INTEGER A1, A2, A3)
==== ercm09/emas-2900/b_lm2976.txt ====
imp11 lm2976
link11
lm2976#rel
i77perm
.stack 2000
.streams 1
.end
lm2976y
list lm2976y,.fep72
==== ercm09/emas-2900/tes5.txt ====
$DEF RTIN = 16_0D, RTOUT = 16_11, NPRREQ = NPR.0
$DEF RINTST = 16_2E, TOPSEG = 16_E8, RDATA = 16_20, SSEL = 16_24
BRG=0
CSR2=BRG; CSR3=BRG; CSR4=BRG; CSR5=BRG
SP10=BRG; SP11=BRG; SP12=BRG; SP13=BRG
SP6=BRG; ! LOW ORDER ADDRESS
SP5 = 16_C0; ! TRANSFER TO ADDRESS 140000
ADR2=16_FF; ADR3=16_FF; ! _SOURCE SELECT = -1
ADR6=SSEL; ADR7=TOPSEG
MISC=16_1C; ! SET CLOCK & O ADR 17&18
NPR = RTOUT
CYCLE; REPEAT IF NPRREQ
SETREC:
ADR2=1; ADR3=0; ! SET RECEIVE=1
ADR6=RINTST
MISC = 16_0C
NPR=RTOUT
CYCLE; REPEAT IF NPRREQ
CYCLE
MISC=16_10; ! CLOCK ON
CYCLE; REPEAT IF MISC.4 = 0
==== ercm09/emas-2900/colorls.txt ====
! FILE 'ERCM08.INC_COLOURDEFS'
%CONTROL K'100001'
%BEGIN
!
! *** COLOUR DEFINITIONS
!
%CONSTINTEGER BLACK=16
%CONSTINTEGER RED=17
%CONSTINTEGER GREEN=18
%CONSTINTEGER YELLOW=19
%CONSTINTEGER BLUE=20
%CONSTINTEGER MAGENTA=21
%CONSTINTEGER CYAN=22
%CONSTINTEGER WHITE=23
%CONSTINTEGER CURBACK=BLACK; !BACKGROUND FOR EVERYONE
! *** OWN ROUTINES FOR DRIVING INTECOLOUR DISPLAY
!FILE 'ERCM08.COLOURS'
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
==== ercm09/emas-2900/sourceis.txt ====
! use .stack 5100
%externalroutine gollum(%string (255) s)
%externalroutinespec time(%stringname s)
%externalstringfnspec interrupt
%externalroutinespec prompt(%string(15) s)
!%externalstring(255) %fnspec uinfs(%integer i)
!%externalintegerfnspec dpermission(%string(11) o,u,d,f, %c
! %integer fs,t,p)
!%systemroutinespec connect(%string(31) f,%integer m,h,p,%record(*)%name r, %c
! %integername flag)
!%externalroutinespec disconnect(%string(255) s)
!%externalintegerfnspec exist(%string(31) f)
!%externalroutinespec list(%string(255) s)
!%externalroutinespec run(%string(255) s)
!%externalstring(255) %fnspec interrupt
!%externalstring(255) %fnspec ucstring(%string(255) s)
%externallongrealfnspec cputime
!%externalroutinespec call(%string(31)command,%string(255)param)
!%systemroutinespec load(%string (31) name, %integer type, %integername flag)
!%externalintegerfnspec uinfi(%integer i)
!
==== ercm09/emas-2900/dvn.txt ====
;**************************************
;* DVNO2S *
;* INTERFACE BETWEEN HARDWARE AND IMP*
;* DATE: 06.MAR.82 *
;**************************************
; FOR SUP40 AND BEYOND - 100 INTERRUPTS - AND EXPANDED DUMP
; AUTOMATIC POWER UP ADDED
PS=177776; PROCESSOR STATUS WORD
IDLEST=-1; SUPERVISOR IDLE FLAG
INTVAL=40; DEDICATED LOCATION FOR INTERRUPT NUMBER
ALARMF=44; DITTO - FOR CLOCK
PSECT=46; DITTO - CURRENT PSECT
LASTPS = 54
PXPT=56; POINTS TO RECORD P2 & PXP IN KERNAL
UPAR=177640
UPDR=177600
==== ercm09/emas-2900/response_fe1jan11.txt ====
Node = 6, Term = 181 - 11 Jan 82 1435-1520 - 11 Jan 82 14.30 - 15.30 (approx)
0
0
0
0
0
63
181
130
76
39
13
10
6
7
3
3
0
1
1
1
==== ercm09/emas-2900/b_lm2980.txt ====
e gen_lmtims/temp
f/prompt("n/k2g
node = 80; term = 80
m-0f/ercm09/s/EYRE63/p
f/LIAM/s/..../p
%c
imp11 temp
link11
temp#rel
i77perm
.stack 2000
.streams 1
.name lm29
.end
lm2980y
==== ercm09/emas-2900/response_fe1jan12.txt ====
Node = 6, Term = 181 - 12 Jan 82 1600-1700 ring->n9->n6->fe1
0
0
0
0
0
101
202
125
55
18
14
13
5
1
1
3
1
1
3
1
==== ercm09/emas-2900/response_fe1jan13.txt ====
Node = 6, Term = 181 - 13 Jan 82 1418-1523 ring->n9->n6->fe1 (new 2980 soft.)
0
0
0
0
0
38
120
97
89
84
64
45
23
25
24
26
17
13
13
6
==== ercm09/emas-2900/tsbsp_rawst.txt ====
16
FREE WT_BUF WT_NS WT_BUF_NS WT_ACCN WT_ACCND DATA WT_DISCN WT_DIN WT_RESETN
WT_RESETI WT_ACCI WT_ACCID WT_DISCI WT_DG_REPLYI WT_DG_REPLYN
12
GOT_BUFFER * SEND_LOOKUP,WT_NS * -,FREE * * * * * * * * * * * *
NS_REPLY * * NS_MESS,WT_ACCN -,FREE * * * * * * * * * * * *
DISCI * DISCI_RESPONSE,WT_BUF_NS DISCI_RESPONSE,WT_BUF_NS * DISCI_WT_ACCN,WT_ACCND
* DISCI_TO_N,WT_DISCN * -,WT_DISCN DISCI_TO_N,WT_DISCN DISCI_TO_N,WT_DISCN
CONN_N_FAILED,FREE -,FREE -,FREE * *
OPENACKN - - - - PROCESS_OPENACK,DATA D_PROCESS_OPENACK,WT_DISCN INT_DISC,WT_DIN
- - INT_DISC,WT_DIN INT_DISC,WT_DIN INT_OPEN_NACK,WT_ACCID - - - DG_REPLY_NTOI,FREE
RESETI * * * * * * RESETI_TO_N,WT_RESETN * - RESETI_RESPONSE
CLEAR_TIMEOUTS,DATA * *
- * *
RESETN - - - - - - RESETN_TO_I,WT_RESETI - - CLEAR_TIMEOUTS,DATA RESETN_RESPONSE
INT_OPEN_NACK,WT_ACCID - - - -
==== ercm09/emas-2900/kmc11_klink.txt ====
!
! c.s. link handler for kmc11 - gjb 28/06/78
!
!
! kmc11 program to perform block transfers between pdp-11 and
! c.s. department nine bit link. buffers are passed, using the
! csrS as follows :-
! (1) pdp-11 -> kmc11
! (a) pdp-11 sets csr0.4 (csr request)
! (b) kmc11 sets csr2.1 (csr grant) after arbitrary delay
! (c) pdp-11 loads buffer info :
! csr2.0 = 0 (rx buff), 1 (tx buff)
! csr2.2/3 = bit 16/17 of address
! csr3 = length (in words)
! csr2.7 = extra byte marker
! csr4/5 = bit 0-15 of address
! (d) pdp-11 resets csr0.4
! (2) kmc11 -> pdp-11
! (a) kmc11 loads buffer info, as above
! (b) kmc11 sets csr2.4 (data ready)
!
==== ercm09/emas-2900/usercmoct83.txt ====
$A INVERT=0
$A CAP=0; CAPSHO=0; CAPO=0; CAPSH=0
$A LINE=76; PGAP=5; PAGE=60; MARK=2; TOP=1
$A TAB=4,8,12,16,20,24,28,32,36,40,44,48
$B3 $L1UC
EDINBURGH REGIONAL COMPUTING CENTRE
$B4 $L1U
For the attention of the Edinburgh Computer Users' Committee
$B5 $L1UM
Report on Communications
$B2 %CONVERSION$ TO$ X25
$P1 The conversion to X25 has gone very smoothly with only a few
minor problems. The real test, however, will only come after the student
load increases later in the term.
$B2 %TCPs
$P1 The current release of X25 TCP software has now been running for over a
month, a new release is ready to be released in the next
few days so that the X25 INFO is picked up by default instead of being manually
changed when a TCP is loaded.
$B2 %FEPs
$P1 The curent 2976 FEP software running on two of the FEPs has also
==== ercm09/emas-2900/node_prt10ns.txt ====
!*********************
!* PRT9S/PRT9Y *
!* DATE: 29.MAY.80 *
!*VERSION FOR NODE *
!*HISTORY UNCERTAIN *
!!!!!!!!!!!!!!!!!!!!!!
!STACK = 140
%CONTROL X'100001'; ! TRUSTED PROGRAM AND QUICK
! ROUTINE ENTRY AND EIS
%CONSTINTEGER KERNEL SER = 29
%OWNINTEGER SECONDARY = 0; !PRIM = 0, SEC = 1
%OWNINTEGER SECAD = 9; !SECONDARY ADDRESS
%CONSTINTEGER WMAX = 56; ! MAX NO OF WRITES
%CONSTINTEGER NO OF SEC BUFFERS = 16; ! PRIVATE BUFFER STORE
%CONSTINTEGER SFMASK = 63; ! CIRC BUFFER SIZE FOR WRITES
%CONSTSTRING (7) VSN = 'VSN009H'
==== ercm09/emas-2900/networks85_introll.txt ====
0m690,0,0,0,495
a0,3150
rr511A2blank
a0,350
a0,3350
rr300Arr925A2
a0,2760
rr300Ab41.rr22AIntroduction
a0,2640
rr511Ap2Edinburghrr21AUniversityrr20Aisrr21Aspreadrr20Aacrossrr21Amanyrr20Apartsrr21Aofrr20AEdinburghrr20Awith
a0,2590
rr435Atworr18Amainrr19A"campus"rr18Aareasrr19Aandrr18Aarr19Anumberrr18Aofrr19Aotherrr19Ascatteredrr18Adepartments.
a0,2540
rr435AThisrr25Asituationrr25Ahasrr25Aledrr25Atorr25Aarr25Averyrr25Ahighrr25Adependencerr25Aonrr25Adatarr25Anetworking
a0,2490
rr435Awhichrr30Ahasrr29Abeenrr30Abuiltrr30Auprr30Aoverrr30Afifteenrr30Ayearsrr30Ainrr30Aorderrr30Atorr30Aensurerr30Athat
a0,2440
rr435Astudentsrr29Aandrr29Astaffrr29Acanrr29Acommunicaterr28Awithrr29Aeitherrr29Atherr29Amainrr29AUniversity
a0,2390
==== ercm09/emas-2900/b_link.txt ====
imp11 link77s/,l
link11
link77s#rel
.streams 4
i77perm
.stack 27200
.end
link77y
alist11 link77s/.lp23
==== ercm09/emas-2900/x25extras.txt ====
@make[report]
@device[x2700]
@flushright[Report Annex 1]
@majorheading[X25 Campus Packet Switching Exchange (CPSE)
Additional Specification]
@paragraph[Control]
The following should be possible without a reload of the entire switch.
@begin[itemize]
Change Link addresses and routing tables
change line speeds.
change Logical group assignments
change between DTE and DCE
@end[itemize]
@subheading[Configuration A]
@begin[verbatim]
PSE with 10 X25 connections - 1 x 48 kbps, 9 x 9.6 kbps,
==== ercm09/emas-2900/log080483.txt ====
08/04/83 01:16:40 N009T000 6 20 156 156 21 90 90 246 32 5 7 9 5
08/04/83 01:16:40 N006T000 6 13 156 156 34 90 90 250 32 5 7 9 5
08/04/83 01:16:45 N006T000 6 13 156 156 34 72 3 59 32 4 7 9 8
08/04/83 01:16:45 N009T000 6 20 156 156 61 72 3 47 32 4 7 9 8
08/04/83 01:16:45 N009T000 6 20 80 80 21 90 90 42 32 23 0 4 1
08/04/83 01:16:45 N006T000 6 33 80 80 34 90 90 54 32 23 0 4 1
08/04/83 01:16:50 N009T000 6 2 80 80 15 0 15 162 32 2306 0 146 146
08/04/83 01:16:50 N009T000 6 17 72 72 15 0 15 79 32 1 0 1 1
08/04/83 01:16:55 N009T000 6 20 156 156 3 0 180 71 32 4 7 9 5
08/04/83 01:16:55 N006T000 6 13 156 156 34 9 180 80 32 4 7 9 5
08/04/83 01:16:55 N009T000 6 20 80 80 21 90 90 65 32 23 0 4 1
08/04/83 01:16:55 N006T000 6 33 80 80 34 90 90 78 32 23 0 4 1
08/04/83 01:16:55 N006T000 6 13 156 156 35 0 171 94 32 4 7 9 5
08/04/83 01:16:55 N009T000 6 20 156 156 17 0 75 96 32 4 7 9 5
08/04/83 01:17:10 N006T000 6 13 156 156 34 9 75 101 32 4 7 9 5
08/04/83 01:17:10 N006T000 6 13 156 156 33 0 181 110 32 4 7 9 5
08/04/83 01:17:15 N009T000 6 20 156 156 2 0 182 115 32 4 7 9 5
08/04/83 01:17:15 N006T000 6 13 156 156 34 9 182 122 32 4 7 9 5
08/04/83 01:17:15 N006T000 6 7 0 27 25 84 84 238 32 98 125 176 111
08/04/83 01:17:20 N009T000 6 20 156 156 61 72 5 162 32 7 14 12 11
08/04/83 01:17:20 N006T000 6 13 156 156 34 72 5 161 32 7 14 12 11
==== ercm09/emas-2900/recode2s.txt ====
%EXTERNALROUTINESPEC DEFINE(%STRING (63)S)
%SYSTEMROUTINESPEC OPENIN(%INTEGER CHANNEL, %STRING (8)S)
%SYSTEMROUTINESPEC SELIN(%INTEGER CHANNEL)
%SYSTEMROUTINESPEC READ BYTE(%INTEGERNAME N)
%SYSTEMROUTINESPEC TERMIN(%INTEGER CHANNEL)
!!
%DYNAMICINTEGERFNSPEC TIME40(%INTEGER IN)
%DYNAMICINTEGERFNSPEC TIME03(%INTEGER IN)
%EXTERNALINTEGERFNSPEC TIME45(%INTEGER IN)
!!
%EXTERNALROUTINE RECODE(%STRING (63)S)
%INTEGER LNUM, CURRENT LINE, ADDR, CA, SI, TIMER, T, TOTT
%STRING (45)SOURCE, OBJECT, OUTPUT, TYPES
%STRING (100) INLINE
!!
!!
%INTEGERFN ITEM
==== ercm09/emas-2900/kentkv11.txt ====
(Message 662)
Subject: Re: Newcastle Interface
From: I.N.Dallas @ uk.ac.ukc 29 Aug 85 16:13:38 bst
To: B.Gilmore @ uk.ac.edinburgh
In reply to: Your message <29 Aug 85 16:05:09 bst 140005@EMAS>
Via: uk.ac.ukc ; (to uk.ac.edinburgh.emas) 30 Aug 85 08:12:22 bst
Msg ID: <29 Aug 85 16:13:38 bst 010857@EMAS>
Attached is the un-prepped source of xprot. There will be a mail message
following which has the GO file, which generates the object.
Thanks for your assistance, I will look closely at the sources too.
Source follows: ***********
#if k
%list
#fi
!
==== ercm09/emas-2900/response_fe1jan25.txt ====
Node = 80, Term = 80 - 25 Jan 82 10.23 - 13.00
0
0
0
0
119
426
303
175
174
166
113
68
58
44
31
20
16
10
9
2
==== ercm09/emas-2900/telepacpas.txt ====
program telepac (input,output,log1,log2,out);
{Analyse the POLL ALL output from a TelePAC}
{Two files are read, and the time difference between the 'readings'}
TYPE
stata = ARRAY [1..2, 1..14] of integer;
polla = ARRAY [1..2, 1..30, 1..21] of integer;
ptpolla = ^polla;
string = PACKED ARRAY [1..80] of CHAR;
VAR
{ log1, log2, out: text;}
hours, mins, secs, index, i, j,q1, q2: integer;
k: real;
str: string;
stat: stata;
poll: ptpolla;
fn1, fn2, out1: string;
==== ercm09/emas-2900/daveletter.txt ====
Dave,
Thanks for the memo, it is useful to get feedback on how users see the
network. It is, however, difficult to answer all the points as all the
documentation is no longer available after this period of time. It is
important that users tell operations about problems while they are
happening, not long after the event.
I have done as much checking as is possible and have come to the
following conclusions:
1) The Central Area CPSE had a harware fault that caused the problems
on the 4th and 6th of February. This machine has in fact been
reasonable reliable and that period can be seen as very exceptional.
2) At least two of the faults described as 'XCALL Down' were in fact
caused by the Vax being down, or not responding.
3) February was a very bad month from the Vax User's point of view and there
were repeated problems until faulty h/w, both in the Vax & its network
connection was isolated and removed.
==== ercm09/emas-2900/b_rles.txt ====
imp11 rles77
link11
rles77#rel
i77perm
.stack 400
.streams 1
.end
rlesy
==== ercm09/emas-2900/gecresults.txt ====
%externalroutine printres(%string (255) s)
%externalroutinespec define(%string (255) s)
%integer i,j,k,q,p,hit
%ownintegerarray num(1:5) = 12, 34, 6, 16, 7
%integerarray cind(1:6)
%ownbyteintegerarray char(1:5) = 'P', 'N', 'A', 'E', 'O'
%integerarray ind(1:75)
%string (5) %array name(1:75)
%ownintegerarray res(1:75) = 87, 62, 75, 54, 53, 73, 57, 31, 55, 46,
44, 63,
74, 38, 40, 71, 55, 50, 26, 55, 42, 33, 38, 78, 26, 78, 54,
47, 72, 67, 69, 62, 47, 23, 79, 15, 63, 44, 24, 23, 22, 23,
45, 47, 45, 27,
42, 44, 29, 40, 32, 24,
55, 53, 34, 48, 57, 34, 39, 37, 29, 29, 65, 53, 56, 44, 75, 54,
30, 59, 26, 29, 51, 25, 18
%routine print res
%integer i,j,k,q
==== ercm09/emas-2900/ring6s.txt ====
! FILE 'RING6S'
!********************************
!* EMAS-2900 RING INTERFACE *
!* HANDLER *
!* FILE: RING6S *
!* DATE:15.JAN.81 *
!*********************************
!! STK = 300, STRM = 1
!NB LOCATION K'140016 IS USED TO HOLD THE CHECKSUM SO THAT IT MAY
!BE ACCESSED FROM CODE
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMROUTINESPEC MAP HWR(%INTEGER SEG)
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%RECORDFORMAT DMF(%INTEGER I)
%CONSTRECORD (DMF) %NAME NIL = 0
==== ercm09/emas-2900/docum_ddbug.txt ====
$A TAB=5, 10; CAPO=0; CAPSHO=0; INVERT=1; PAGENO=1
$A JUST=1; LINE=72; PAGE=59; TOP=3; BOTTOM=4; MARK=2
$L1CM
DEBUGGING PROGRAM
$B2
$L1C
OBJECT: DBUG
$A INDENT=1
$P2
@THIS PROGRAM IS USED AS AN AID TO DEBUGGING PROGRAMS,
IT WILL MORMALLY BE 'LINKED' TO A RUNNING PROGRAM ON THE
SYSTEM USING THE COMMAND .'T' (FOR DETAILS SEE LATER), ALL
ACCESSES TO LOCATIONS WILL THEN BE MADE IN THAT PROGRAMS
VIRTUAL MEMORY.
$B0 @IT MAY BE USED TO:-
$A INDENT=2
$B0 1) .SET AND .CLEAR BREAKPOINTS
$B0 2) @DUMP OUT THE .PSECT, .REGISTERS AND/OR THE .IMP .STACK.
$B0 3) .EXAMINE AND .CHANGE LOCATIONS IN CORE.
$B0 4) .DUMP GENERAL AREAS OF CORE.
$A INDENT=1
==== ercm09/emas-2900/iprogsou_ass11.txt ====
%EXTERNALROUTINE ASS11(%STRING (63)FILES)
%EXTERNALINTEGERFNSPEC SMADDR(%INTEGER CHAN, %INTEGERNAME LENGTH)
%EXTERNALROUTINESPEC DEFINE(%STRING (63)S)
%DYNAMICSTRING (8) %FN %SPEC DATE
%DYNAMICINTEGERFNSPEC TIME40(%INTEGER IN)
%DYNAMICINTEGERFNSPEC TIME03(%INTEGER IN)
%DYNAMICINTEGERFNSPEC TIME45(%INTEGER IN)
%ROUTINE DUMP BIN(%HALFINTEGERARRAYNAME CODE, %C
%INTEGER START, FINISH, %STRINGNAME T, %INTEGERNAME FLAG)
%INTEGER CHECK, J
%ROUTINE PUT(%INTEGER N)
%INTEGER M
M = N>>8&255
N = N&255
PRINTCH(N); PRINTCH(M)
CHECK = CHECK+(N+M)
%END
%RETURN %IF START < 0; !?????
SELECT OUTPUT(3)
CHECK = 0
PUT(1)
==== ercm09/emas-2900/pclo2s.txt ====
! FILE 'PCLOCKS'
! PROGRAMMABLE CLOCK PROGRAM
! DATE: 5.MAR.81
%CONTROL K'100001'
%PERMROUTINESPEC SVC(%INTEGER EP, R0, R1)
%PERMINTEGERMAPSPEC INTEGER
%PERMBYTEINTEGERMAPSPEC BYTEINTEGER
%PERMINTEGERFNSPEC ADDR
%PERMINTEGERFNSPEC ACC
%BEGIN
%SYSTEMROUTINESPEC MAPHWR(%INTEGER SEG)
%SYSTEMROUTINESPEC LINKIN(%INTEGER NO)
%CONSTBYTEINTEGERNAME INT = K'160060'
%RECORDFORMAT CLOCKF(%INTEGER STATUS, DATA)
%CONSTRECORD (CLOCKF) %NAME CLOCK = K'112540'; ! IN SEG 4
%RECORDFORMAT PF(%BYTEINTEGER SER, REPLY, %INTEGER A, B, C)
%RECORD (PF) P
==== ercm09/emas-2900/figs.txt ====
@b[@I[Fig. 1 Edinburgh University Data Network]]
@blankspace[0.9 in]
@b[@I[Fig. 2 Edinburgh University Speech Network]]
@blankspace[0.9in]
@b[@I[Fig. 3 PABX/LAN Project network]]
@blankspace[0.9in]
@b[@I[Fig. 4 Data Connection to a PABX]]
@blankspace[0.9 in]
@b[@I[Fig. 5 X25 Network Connection]]
@blankspace[0.9 in]
@b[@I[Fig. 6 Host Connection to a PABX]]
@blankspace[0.9in]
@b[@I[Fig. 7 PABX/LAN Connection]]
@blankspace[0.9 in]
@b[@I[Fig. 8 Trunk Connection]]
==== ercm09/emas-2900/lmtsxs.txt ====
!**********************
!* lmtots/lmtsxy *
!* date: 20.may.81 *
!*********************
%conststring (13) vsn = "lmts...1d "
! Prep options:- t - itp over transport service
! x - xxx over transport service
#datestring
!! stack = 300, streams = 1
%control x'4001'
%recordformat xf(%byteinteger unit,fsys,%byteintegerarray fname(0:5))
%include "b_deimosspecs"
%begin
%owninteger mon = 0
==== ercm09/emas-2900/dgn1s.txt ====
! FILE 'dgn1s'
!*********************
!* dgn1s/dgn1y *
!* DATE: 10.FEB.82 *
!*********************
!STACK = 140
%RECORDFORMAT XXF(%INTEGER DUMMY)
%CONSTRECORD (XXF) %NAME NULL = 0
%CONTROL K'100001'; ! TRUSTED PROGRAM AND QUICK
! ROUTINE ENTRY AND EIS
%CONSTSTRING (13) VSN = "DGN1:VSN001A
"
%BEGIN
%PERMROUTINESPEC SVC(%INTEGER EP, R0, R1)
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
==== ercm09/emas-2900/inc_colourdefs.txt ====
!
! *** COLOUR DEFINITIONS
!
%CONSTINTEGER BLACK=16
%CONSTINTEGER RED=17
%CONSTINTEGER GREEN=18
%CONSTINTEGER YELLOW=19
%CONSTINTEGER BLUE=20
%CONSTINTEGER MAGENTA=21
%CONSTINTEGER CYAN=22
%CONSTINTEGER WHITE=23
%CONSTINTEGER CURBACK=BLACK; !BACKGROUND FOR EVERYONE
%ENDOFFILE
==== ercm09/emas-2900/node_parr3s.txt ====
! FILE 'PARR3S'
!*********************
!* PARR3S/PARR1Y *
!* DATE: 17.SEP.80 *
!*********************
!STACK = 140
%RECORDFORMAT XXF(%INTEGER DUMMY)
%CONSTRECORD (XXF) %NAME NULL = 0
%CONTROL X'100001'; ! TRUSTED PROGRAM AND QUICK
! ROUTINE ENTRY AND EIS
%CONSTSTRING (7) VSN = 'VSN003E'
%BEGIN
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMINTEGERFNSPEC MAP ABS(%INTEGER ADR, LEN, REQ ID)
%SYSTEMROUTINESPEC MAPHWR(%INTEGER SEG)
==== ercm09/emas-2900/ftppd_obj.txt ====
%constbyteintegerarray token(0: 125)=0,
35, 203, 76, 77, 78, 79, 80, 63,
81, 82, 166, 211, 84, 165, 166, 84,
85, 80, 64, 38, 24, 39, 47, 168,
0, 129, 130, 131, 132, 133, 134, 135,
136, 137, 139, 140, 141, 142, 143, 144,
145, 146, 147, 43, 161, 34, 31, 33,
33, 33, 33, 33, 32, 32, 86, 88,
86, 86, 86, 86, 86, 86, 87, 88,
56, 55, 59, 58, 60, 57, 61, 62,
54, 172, 0, 43, 43, 41, 170, 0,
43, 41, 170, 0, 44, 38, 21, 30,
45, 30, 26, 30, 45, 30, 27, 45,
30, 28, 65, 66, 65, 73, 38, 20,
158, 39, 168, 0, 138, 19, 31, 32,
86, 88, 55, 54, 71, 67, 198, 72,
71, 68, 65, 71, 69
%constbyteintegerarray next(0: 125)=0,
2, 4, 5, 6, 7, 8, 9, 10,
0, 11, 14, 15, 17, 14, 14, 17,
18, 19, 9, 21, 22, 23, 24, 26,
==== ercm09/emas-2900/erteicl_initdu.txt ====
!THE INITIALISE TASK "INIT" - FOR EMAS 2980.
!E.R.T.E. MK.3 VERSION - VIA THE DQS 11/E
! W.S.C. 27TH JULY 1976
! J.C.A. 31ST JAN 1978
! G.J.B. 19TH SEPT 1978
! J.C.A. 27TH SEPT 1978
! B.G. 25.JAN.80
! ??? LAST UPDATE 21:12:78 - FILE INIT70
! THIS VERSION IS FOR USE WITH ICL VME/B
!THE TASK RUNS IN SYSTEM SLOT 29
!SET STACK TO 140 STREAMS=0 PRIORITY=1
%CONTROL K'101011'
==== ercm09/emas-2900/sys_rx501s.txt ====
! FILE RX50 1S
!
! RX50 FLOPPY DISC HANDLER
!
! THIS IS THE UNIT 0&1 VERSION
!
! %% LAST UPDATED 21ST MARCH 1985 FILE=RX5021S
!
! USES SYSTEM SLOTS 8 AND 14. INT SLOT -8.
!
! CALLING PARAMETERS ARE AS FOLLOWS
! P_A1=MODE (0=READ,1=WRITE)
! P_A2=ADDRESS OF BUFFER IN MEMORY
! P_A3=BLOCK NUMBER ON DISC
!
! SINCE DEIMOS DEALS IN 512 BYTE BLOCKS ALL TRANSFERS ARE 2*256
!BYTE SECTORS. THE FIRST 77 BLOCKS ARE RESERVED FOR THE SYSTEM.
!WITHIN EACH TRACK OF 26 SECTORS THE SECTORS ARE INTERLEAVED.
!
! ON EXIT P_A1=FAULT NO. (0=OK)
!
==== ercm09/emas-2900/node_dvno1s.txt ====
;**************************************
;* DVRUB *
;* INTERFACE BETWEEN HARDWARE AND IMP*
;* DATE: 10.OCT.80 *
;**************************************
PS=177776; PROCESSOR STATUS WORD
IDLEST=-1; SUPERVISOR IDLE FLAG
INTVAL=40; DEDICATED LOCATION FOR INTERRUPT NUMBER
ALARMF=44; DITTO - FOR CLOCK
PSECT=46; DITTO - CURRENT PSECT
LASTPS = 54
INTINF=56
UPAR=177640
UPDR=177600
UPAR0=40; INDEC INTO PSECT
UPDR0=UPAR0+2; DITTO
==== ercm09/emas-2900/response2_fe1jan12.txt ====
Node = 6, Term = 181 - 12 Jan 82 1600-1700 ring->n9->n6->fe1
0
0
0
0
0
101
202
125
55
18
14
13
5
1
1
3
1
1
3
1
==== ercm09/emas-2900/node2s.txt ====
! FILE 'FEP_NODES'
!*************************
!* NODES/LOAD *
!* DATE: 23.APR.80 *
!* LOADS A SERIES OF *
!* TASKS, FROM INPUT(1) *
!*************************
%CONTROL K'100001'
%RECORDFORMAT DUMMY(%INTEGER X)
%CONSTRECORD (DUMMY) %NAME NULL = 0
%BEGIN
%CONSTBYTEINTEGERNAME OWN ID = K'160030'
%CONSTBYTEINTEGERNAME FSYS = K'160055'
%CONSTBYTEINTEGERNAME TTNO = K'160061'
%CONSTINTEGER LOAD SER = 5
%RECORDFORMAT PE(%BYTEINTEGER SERVICE, REPLY, A1, A2, %C
%BYTEINTEGERNAME B, %BYTEINTEGER C1, C2)
==== ercm09/emas-2900/ll4_dis.txt ====
$A LINE=42; LEFT=2; SGAP=2; PGAP=0; JUST=1
$A TAB=4; INDENT=0
$A CAP=0; UNDSH=0; UND=0; CAPO=0; UNDSHO=0; UNDO=0
$A INVERT=0; INVO=0
$l1cm
jobs not bombs
$p2 The world must draw back from the nuclear abyss before its too late.
Make no mistake - there won't be many survivors if nuclear bombs are dropped
on Britain.
$p2 Labour believes Britain should take a lead in ending this madness. The
Tories pay lip service to "disarmament" but their actions have escalated
the arms race. The time has come to call a halt.
$p2 Tory policy has made Britain a front-line target in a nuclear war.
Do YOU want to make our island a floating bomb carrier?
$p2 Other countries have already taken the step of refusing to stockpile
nuclear weapons on their soil - Norway, Denmark & Canada for instance.
$p2 In Britain we spend MORE of our resources on defences than do our
European allies. The money which the Tories choose to spend on nuclear
weapons, we want to see spent on creating jobs, on health, education
and welfare.
$p2
==== ercm09/emas-2900/lmon9.txt ====
27.OCT.81 13.15 - 17.32
0 1 5 1 18784-2622 29366 27463 15321 16299
1 2 2 1 22087-429 28141-434 8427 16695
2 3 9 1-4705-25557 26333-18111-15367 12973
3 4 0 1 1829 0 0 0 0 0
4 5 2 1 5829 25104 0-30897-11122-12153
5 6 1 1 3364 161 21 540 0 0
6 7 2999 24 17 5634 2 586
7 8 17536 12 1 341 28474 72
0 10 5 1 19013-2590 29368 27651 15321 16299
1 11 2 1 22281-213 28155 5192 8570 16695
2 12 10 1-4555-25103 26363-7541-15116 12973
3 13 0 1 2024 0 0 0 0 0
4 14 1 1 6294 25138 0-30594-11122-12153
5 15 1 1 3896 195 25 646 0 0
6 16 3193 24 17 7534 2 58
7 17 17820 12 1 341 1025 2
0 19 6 1 19239-2534 29378 27858 15321 16299
1 20 1 1 22486-75 28161 8999 8673 16695
2 21 10 1-4436-24496 26393 5984-14787 12973
3 22 0 1 2218 0 0 0 0 0
==== ercm09/emas-2900/erteicl_du11e.txt ====
!**************
!* DU11E *
!*DA:23.FEB.80*
!**************
%CONTROL K'100001'; ! 'SYSTEM' PROGRAM AND
! TRUSTED PROG
%RECORDFORMAT PARF(%INTEGER TYPE, ADDRESS, LEN)
%EXTERNALROUTINE DU11E(%RECORD (PARF) %NAME P)
%SYSTEMROUTINESPEC MAPHWR(%INTEGER SEG)
%SYSTEMINTEGERFNSPEC GETID
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMINTEGERFNSPEC MAP ABS(%INTEGER ADR, LEN, REQ ID)
%PERMINTEGERFNSPEC SVC(%INTEGER EP, P0, P1)
%RECORDFORMAT PF(%BYTEINTEGER SER, REPLY, %INTEGER A1, A2, A3)
==== ercm09/emas-2900/kents1280_namedoclp.txt ====
Oct 1980 - 1 -
_ ____________
1 Introduction
A task has been implemented on the EMAS FEP system to facilitate access to
the ring name server. This task handles the red tape of the ring message
formats, the allocation of reply ports and retrying the transmissions up to
three times if a reply is not received within 1 or 2 seconds.
The name server task has name NAME and links in as task 15. The name server
task assumes that the FEP buffer manager task is handling the allocation and
deallocation of buffers. Messages to NAME should include a buffer which in the
most common case of a name lookup request will contain the name whose address is
required. The reply from NAME may or may not include a buffer reference
depending on whether a reply was received or not from the name server on the
ring.
==== ercm09/emas-2900/b_fsys.txt ====
dimp11 fsys79
link11 /fsys79
fsys79
.stack 300
.streams 0
.stackseg 6
.codeseg 2
.end
fsys79
c fsys79#abs,newsys_fsys79y
==== ercm09/emas-2900/node_rles77.txt ====
! FILE 'RLES'
! RLS/RL A.L. IBBETSON UNIKENT 1979
! for ERCC NODE use - B. Gilmore 25.Feb.81
! DOWN-LINE LOADING VIA RING
!
! Reads from stream 1. File in abs loader format
! compatible with card reader - i.e. fixed length 80
! byte records. Data is scanned for load block to
! flag termination of file.
!
! I RLS,.TT/RLESY. STREAMS 1. STACK 400
! Copy RLESY into RLESY(0)
!
%CONTROL 1
%include "deimosperm"
%BEGIN
%RECORDFORMAT MEF(%RECORD (MEF) %NAME LINK,%BYTEINTEGER LEN,TYPE,%C
%INTEGER ADR,%INTEGERARRAY DATA(0:124))
%RECORDFORMAT PE(%BYTEINTEGER SER,REPLY,FN,PORT,%RECORD (MEF) %NAME MES,%C
%BYTEINTEGER L,S)
%RECORD (PE) P
==== ercm09/emas-2900/ftppd_table.txt ====
/
[LITERALS]
[ATTRIBUTES]
1 PROTID/0
ACCESSMODE/1
TRANSCODE/2
TEXTFORM/3
MAXREC/5
TRANSLIM/6
INITM/11
TIMEOUT/13
FACILITIES/14
TRANSSTATE/15
DATATYPE/32
FILENAME/64
USERNAME/66
USERPASS/68
FILEPASS/69
ACCOUNT/74
ACCPASS/75
FILESIZE/96
==== ercm09/emas-2900/sxmode.txt ====
%externalintegerfn x29call
!
%recordformat %c
TMODEF(%halfinteger FLAGS1, FLAGS2,
{.04} %byteinteger PROMPTCHAR, ENDCHAR,
{.06} %bytearray BREAKBIT1(0:3) {%or %halfintegerarray BREAKBIT2(0:1))} ,
{.0A} %byteinteger PADS, RPTBUF, LINELIMIT, PAGELENG,
{.0E} %byteintegerARRAY TABVEC(0:7),
{.16} %byteinteger CR, ESC, DEL, CAN,
{.1A} %byteinteger FLAGS, INTERNAL STATE, LEADIN1, LEADIN2, XLO, XHI)
{.20}
!>
!<NNF
%recordformat %c
NNF(%string(6)NAME, %byteinteger KB, TAG, MARKER, %halfinteger INDNO)
!>
!<DIROWNF
!
==== ercm09/emas-2900/node_parr4s.txt ====
! FILE 'PARR4S'
!*********************
!* PARR3S/PARR1Y *
!* DATE: 17.SEP.81 *
!*********************
! NODE 6 VERSION
!STACK = 140
%CONSTINTEGER SECAD = 9
%RECORDFORMAT XXF(%INTEGER DUMMY)
%CONSTRECORD (XXF) %NAME NULL = 0
%CONTROL X'100001'; ! TRUSTED PROGRAM AND QUICK
! ROUTINE ENTRY AND EIS
%CONSTSTRING (7) VSN = 'VSN003K'
%BEGIN
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
==== ercm09/emas-2900/b_ftpb.txt ====
prep x25_ftp4s,ftp4s#imp,x,e,m,clean,b
imp11 ftp4s#imp/,l
link11
ftp4s#rel
i77perm
.stack 2000
.streams 1
.name ftps
.end
ftp4xy
disconnect ftp4xy
alist11 ftp4s#imp/.lp23
==== ercm09/emas-2900/kents1280_notes.txt ====
FEP software as of 25:11:80 - using new versions of ITPS,RJES,EAMH and
the 2 segment version of the buffer manager, BUFF3. Points to note are:-
EAM7 Has 'built in' fep number and AM1 address because KENT use early
version of load program.
RJES8 Modified to 'down' devices that are not available because the
remote is u/s. NB does not effect handling of busy devices except
the open is only repeated every 10 seconds instead of 2.
ITPS8 The queueing of buffers is done in BSPS to gain throughput, however
ITPS is told when each buffer is acknowledged so that BGs buffer
control code should still work - not easy to test at KENT.
Note for SEB's benefit - a frigged version of ITPS to stop students
logging on in room S.01 is in file ITPS8XXS01.
RING4S Does not take special action when the 'ring down' bit in the interface
comes up, except to throw away output transfers. THe idea is for BSPS
to survive a ring reset.
==== ercm09/emas-2900/b_ftpd.txt ====
prep gen_ftpd1s,ftpd1s#imp,n,e,clean
dimp11 ftpd1s#imp
link11 /ftpd1s
ftpd1s
ercm11.imp
.fixup ercm11.imp#fix
.stack 2000
.streams 1
.STACKSEG 6
.end
ftpd1y
destroy ftpd1y
rename ftpd1y#abs,ftpd1y
==== ercm09/emas-2900/erteburr_dvrub2icl.txt ====
;**************************************
;* BRUN10 *
;* INTERFACE BETWEEN HARDWARE AND IMP*
;* DATE: 23.NOV.79 *
;**************************************
PS=177776; PROCESSOR STATUS WORD
IDLEST=-1; SUPERVISOR IDLE FLAG
INTVAL=40; DEDICATED LOCATION FOR INTERRUPT NUMBER
ALARMF=44; DITTO - FOR CLOCK
PSECT=46; DITTO - CURRENT PSECT
LASTPS = 54
INTINF=56
UPAR=177640
UPDR=177600
UPAR0=40; INDEC INTO PSECT
UPDR0=UPAR0+2; DITTO
==== ercm09/emas-2900/ftppd_cons.txt ====
%EXTERNALROUTINE FTPCONS(%STRING(255) FILES)
%EXTERNALROUTINESPEC CONS(%INTEGER FIGUREBASE, AMBIBASE, %C
SSBASE, PHRASEBASE, PHRASELIMIT, IDENT, %INTEGERNAME GMAX, %C
KMAX, %INTEGERARRAYNAME PHRASE, ITEM, NEXT, ATOMIC, MASK, %C
KEYDICT, INDEX, CHAR)
%EXTERNALROUTINESPEC DEFINE(%STRING(63) S)
%STRING(63) GRAFILE, NEWFILE, LISTFILE
%OWNINTEGER GRA=1; !IN STREAMS
%OWNINTEGER ERR=0, NEW=2, GLIST=3, DLIST=3
!OUTSTREAMS
%OWNINTEGER SSBASE=0, PHRASEBASE=1, FIGUREBASE=1, %C
IDENT=255, PHRASELIMIT=255, AMBIBASE=255
%INTEGER GMAX, KMAX
%INTEGERARRAY CHAR(1:2000), INDEX(0:511)
%INTEGERARRAY ITEM, NEXT(0:1023), PHRASE(SSBASE:PHRASELIMIT), %C
ATOMIC, MASK(FIGUREBASE:PHRASELIMIT)
%INTEGERARRAY KEYDICT(32:511)
%INTEGER I, J, K, MAX
==== ercm09/emas-2900/b_prt9f.txt ====
imp11 prt9fs/,ll
link11
prt9fs#rel
i77perm
.stack 1000
.streams 0
.name PRT0
.end
prt9fy
list prt9fy,.fep72
alist11 prt9fs/.lp23
==== ercm09/emas-2900/bush83.txt ====
Networks 1983-1993
==================
==== ercm09/emas-2900/erte_ibm1s.txt ====
! FILE 'IBM2S'
!*********************
!* IBM1S/IBM1Y *
!* DATE: 10.OCT.80 *
!!!!!!!!!!!!!!!!!!!!!!
!STACK = 140
%RECORDFORMAT XXF(%INTEGER DUMMY)
%CONSTRECORD (XXF) %NAME NULL = 0
%CONTROL X'100001'; ! TRUSTED PROGRAM AND QUICK
! ROUTINE ENTRY AND EIS
%CONSTSTRING (7) VSN = 'VSN001K'
%BEGIN
%PERMROUTINESPEC SVC(%INTEGER EP, R0, R1)
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
==== ercm09/emas-2900/response_fe121jan.txt ====
Node = 80, Term = 80 - 21 Jan 82 fe1
0
0
0
0
21
85
104
92
75
64
43
42
23
10
21
10
9
10
2
1
==== ercm09/emas-2900/title.txt ====
@make[article]
@device[x2700]
@style[spacing 1]
@begin[text,topmargin=+1.1inches,leftmargin=+0.25inches,rightmargin=+0.5inches]
blank
@newpage
@majorheading[AN APPRAISAL OF THE ADVANTAGES & DISADVANTAGES
OF USING A PABX FOR DATA TRAFFIC]
@BLANKSPACE[0.5in]
@centre[@b[Brian Gilmore
Communications Manager
Edinburgh Regional Computing Centre
University of Edinburgh]]
@blankspace[1.8in]
The paper discusses the main advantages and disadvantages of using a
modern PABX for mixed speech and data traffic. It comes to the conclusion
that with the currently available technology it is not economic to use
such an exchange for extensive data traffic and the paper goes on to look at
future trends in this area in
particular the use of PABX/LAN Gateways to ease connection problems.
==== ercm09/emas-2900/b_infoamd.txt ====
! nb: Master on amdahl
prep x25_infos,infos#imp,x,e,m,a,b,i,clean
dimp11 infos#imp
dlink11
infos#rel
.stack 2000
.stackseg 6
.name info
.end
infoxcy
destroy infoamdy
rename infoxcy#abs,infoamdy
alist11 infos#imp,infos#rel/.lp23
==== ercm09/emas-2900/node_parr5s.txt ====
! FILE 'PARR5S'
!*********************
!* PARR5S/PARR5Y *
!* DATE: 27.JAN.82 *
!*********************
! NODE 6 VERSION
!STACK = 140
%CONSTINTEGER SECAD = 9
%RECORDFORMAT XXF(%INTEGER DUMMY)
%CONSTRECORD (XXF) %NAME NULL = 0
%CONTROL X'100001'; ! TRUSTED PROGRAM AND QUICK
! ROUTINE ENTRY AND EIS
%CONSTSTRING (7) VSN = 'VSN003K'
%BEGIN
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
==== ercm09/emas-2900/chats.txt ====
!TITLE Technical manual
!*******************************************************************************
!* *
!* chat - an EMAS utility to allow users to chat to each other using the 2900.*
!* *
!* Copyright (c) 1982 by James Darby at UKC. *
!* Assembler routines by R.D.Eager at UKC. *
!* *
!* Version 2.35 *
!* *
!* *
!*******************************************************************************
!< Introduction
!This is the source code of the EMAS chat utility. It allows users to hold an
!interactive conference on several terminals on an EMAS 2900 system. Its main
!features are :-
! 1) Low OCP overhead.
! The utility uses any a small amount of OCP time.
==== ercm09/emas-2900/log_f1.txt ====
FE1 17.FEB.81 FROM 13.00
RING: 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RING: 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RING: 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RING: 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RING: 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RING: 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RING: 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RING: 5 28 0 0 0 0 1 0 17 28 1 1 1 0
RING: 5 28 0 0 0 0 1 0 17 28 2 1 1 0
RING: 176 221 4 2 0 0 0 4 183 197 31 32 34 0
RING: 8 81 0 0 1 0 1 0 68 73 9 10 10 0
RING: 29 272 8 4 1 0 2 0 214 249 36 39 38 0
RING: 5 38 0 0 0 0 1 0 25 36 3 3 3 0
RING: 13 55 0 0 1 0 2 0 34 56 3 2 2 0
RING: 5 28 0 0 0 0 1 0 17 28 1 1 1 0
RING: 32 306 16 4 1 0 1 0 248 283 43 45 45 0
RING: 0 10 0 0 0 0 0 0 8 8 2 2 2 0
RING: 24 54 0 0 1 0 2 1 34 56 4 2 2 0
RING: 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RING: 5 28 0 0 0 0 1 0 17 28 1 1 1 0
==== ercm09/emas-2900/b_ftpn.txt ====
prep fep_ftp1s,ftp1s#imp,n,e,clean
imp11 ftp1s#imp/,l
link11
ftp1s#rel
i77perm
.stack 1000
.streams 1
.name ftps
.end
ftp1ny
==== ercm09/emas-2900/newsys_load8s.txt ====
!**************
!* load18s *
!* 14.jun.82 *
!**************
%control x'4001'
%constrecord (*) %name null == 0
!***********************************
!* *
!* loader faults *
!* *
!* 1 - no core *
!* 2 - init block too long *
!* 3 - init block short *
!* 4 - checksum wrong *
!* 5 - out of range *
!* 6 - end of file/ no file *
==== ercm09/emas-2900/b_ftpp.txt ====
prep ftp1s,,e,n
imp11 ftp1s#p
link11
ftp1s#rel
i77perm
.stack 1000
.streams 1
.name ftps
.end
ftp1y
list ftp1y,.fep72
alist11 ftp1s#p/.lp23
==== ercm09/emas-2900/fecount.txt ====
%const %string (13) vsn="26 JUL 83 1"
%external %integer %fn %spec dprocedure(%integer act, adr)
! %include "ercc04.pd21s_c03formats"
%constinteger MAXTCPNAME = 15 {TCP-name length}
%recordformat %C
PROCDATF(%string(6)USER, %string(MAXTCPNAME)TCPNAME, %byteinteger LOGKEY,
%byteinteger INVOC, PROTOCOL, NODENO, FSYS,
%integer LOGSNO,
%byteinteger SITE, REASON, CONSOLE1, CONSOLE2,
%integer ID, PROCESS, PREV WARN, SESSEND,
%byteinteger GETMODE, PREEMPT, BLNK, LINK)
!
%recordformat %c
TMODEF(%halfinteger FLAGS1, FLAGS2,
{.04} %byteinteger PROMPTCHAR, ENDCHAR,
{.06} %bytearray BREAKBIT1(0:3) {%or %halfintegerarray BREAKBIT2(0:1))} ,
{.0A} %byteinteger PADS, RPTBUF, LINELIMIT, PAGELENG,
{.0E} %byteintegerARRAY TABVEC(0:7),
{.16} %byteinteger CR,ESC,DEL,CAN, SP1,SP2,SP3,SP4,SP5,SP6)
==== ercm09/emas-2900/test.txt ====
@device(x2700)
@make(report)
@section(one)
vbn
@subsection(one.one)
asd
@subsection(one.two)
dfgh
@subsection(one.three)
jklh
@section(two and last)
fghj
==== ercm09/emas-2900/ss2.txt ====
-5000 -900 -500 -350 -300 -100 0 100 300 350 500 900 5000
2 1 0
0 0 -6 -4 0 0 0 -4
-1 -1 -5 -3 0 0 0 0
0 0 0 -3 -1 0 0 0
0 0 0 0 0 -1 0 0
0 0 3 5 -2 0 0 -1
0 0 0 0 1 0 0 1
1 1 1 2 0 1 0 0
0 4 3 0 0 4 6 0
0
1 1 1 1 1 1 1 1
==== ercm09/emas-2900/log_f5.txt ====
FEP1 19.FEB.81 13.00
RING: 10 163 6 2 0 0 0 0 133 145 25 26 26 0
RING: 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RING: 13 330 11 1 0 0 0 0 276 290 51 52 52 0
RING: 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RING: 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RING: 0 0 0 0 0 0 0 0 0 0 1 0 0 0
RING: 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RING: 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RING: 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RING: 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RING: 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RING: 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RING: 14 55 0 0 0 1 2 0 34 56 2 2 2 0
RING: 10 56 0 0 0 0 2 0 36 56 2 2 2 0
RING: 80 749 24 6 0 0 1 3 574 680 93 103 103 0
RING: 19 206 4 1 1 0 2 0 158 189 26 26 25 0
RING: 79 83 0 0 0 0 0 4 53 84 3 3 3 0
RING: 18 56 0 0 0 0 1 1 36 56 2 2 2 0
RING: 24 83 0 0 0 1 2 1 53 84 3 3 3 0
RING: 115 127 6 2 0 0 1 5 100 129 13 11 12 0
==== ercm09/emas-2900/b_ftpr.txt ====
new
prep x25gen_ftpd3s,ftpd3s#imp,r,g,clean
dimp11 ftpd3s#imp
link11 /ftpd3s
ftpd3s#rel
.stack 2000
.streams 3
.stackseg 6
.end
ftpg3s
c ftpg3s#abs,ftpr1y
c ftpr1y,ftpg1y
destroy ftpg3s#abs
list ftpg1y,.fep72
alist11 ftpd3s#imp
list ftpd3s#lst,.lp23
==== ercm09/emas-2900/teledata.txt ====
BASE:LIST ALL
BASE:
0368 EI00 EI01 50
PS01 X25 B 16 EXT SABM 30 30 7 2 4 4 0 NORM 120 20
PS02 X25 B 20 EXT SABM 30 30 7 2 0 4 0 NORM 120 20
PS03 X25 B 100 EXT SABM 30 30 7 2 0 4 0 NORM 120 20
PS04 X25 B 20 EXT SABM 30 30 7 2 0 4 0 NORM 120 20
PS05 X25 B 200 EXT SABM 30 30 7 2 0 4 0 NORM 120 20
PS06 X25 B 100 EXT SABM 30 30 7 2 0 4 0 NORM 120 20
PS07 X25 B 100 EXT SABM 30 30 7 2 0 4 0 NORM 120 20
PS08 X25 B 16 EXT SABM 30 30 7 2 0 4 0 NORM 120 20
XXXX NULL B 1 NONE SABM 30 10 7 2 0 0 0 NORM 5 20
XXXX NULL B 1 NONE SABM 30 10 7 2 0 0 0 NORM 5 20
XXXX NULL B 1 NONE SABM 30 10 7 2 0 0 0 NORM 5 20
XXXX NULL B 1 NONE SABM 30 10 7 2 0 0 0 NORM 5 20
XXXX NULL B 1 NONE SABM 30 10 7 2 0 0 0 NORM 5 20
XXXX NULL B 1 NONE SABM 30 10 7 2 0 0 0 NORM 5 20
XXXX NULL B 1 NONE SABM 30 10 7 2 0 0 0 NORM 5 20
XXXX NULL B 1 NONE SABM 30 10 7 2 0 0 0 NORM 5 20
==== ercm09/emas-2900/log_f6.txt ====
FEP 1 23.FEB.81 13.00 ONWARDS
RING: 18 55 0 0 0 0 1 2 37 56 3 2 2 0
RING: 10 56 0 0 0 0 2 0 36 56 2 2 2 0
RING: 13 56 0 0 0 0 1 1 36 56 2 2 2 0
RING: 25 82 0 0 1 0 3 1 53 84 3 3 3 0
RING: 16 83 0 0 2 0 2 0 53 84 3 3 3 0
RING: 10 56 0 0 0 0 2 0 36 56 2 2 2 0
RING: 60 80 0 1 0 0 1 5 53 84 3 3 3 0
RING: 5 28 0 0 0 0 1 0 18 28 2 1 1 0
RING: 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RING: 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RING: 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RING: 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RING: 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RING: 3 28 0 0 1 0 0 0 17 28 1 1 1 0
RING: 5 28 0 0 0 0 1 0 17 28 1 1 1 0
RING: 5 28 0 0 0 0 1 0 17 28 1 1 1 0
RING: 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RING: 7 27 0 1 0 0 1 0 17 28 1 1 1 0
RING: 14 26 0 1 0 0 1 1 17 28 1 1 1 0
RING: 8 27 0 0 1 0 1 0 17 28 1 1 1 0
==== ercm09/emas-2900/log26nov82.txt ====
26/11/82 00:00:05 N006T000 6 19 156 156 35 0 171 125 32 4 7 9 5
26/11/82 00:00:10 N006T000 6 19 156 156 33 0 181 132 32 4 7 9 5
26/11/82 00:00:10 N009T000 NIF LN 20 2 20 131 135 156 50 156 9 78 18
26/11/82 00:00:10 N009T000 10 5 78 78 18 665 10 455 74 566 5
26/11/82 00:00:10 N009T000 6 20 156 156 2 0 182 4 32 4 7 9 5
26/11/82 00:00:10 N006T000 6 19 156 156 34 9 182 134 32 4 7 9 5
26/11/82 00:00:25 N009T000 6 3 80 80 17 72 72 15 32 216 0 25 13
26/11/82 00:00:25 N009T000 6 17 72 72 15 0 15 255 32 436 0 49 46
26/11/82 00:00:30 N009T000 6 17 72 72 15 0 15 27 32 1 0 1 1
26/11/82 00:00:30 N006T000 6 19 156 156 61 72 3 146 32 4 7 9 8
26/11/82 00:00:35 N006T000 3 33 6 1 5047 355 66 257 45 106 8 5896 603 512 10 57 752 2536 491 153 443 10 966
26/11/82 00:00:40 N009T000 6 20 156 156 17 0 75 34 32 4 7 9 5
26/11/82 00:00:40 N006T000 6 19 156 156 34 9 75 153 32 4 7 9 5
26/11/82 00:00:40 N009T000 6 3 80 80 15 0 15 47 32 1 0 1 1
26/11/82 00:00:45 N009T000 6 20 156 156 21 90 90 39 32 5 7 9 5
26/11/82 00:00:45 N006T000 6 19 156 156 34 90 90 158 32 5 7 9 5
26/11/82 00:00:45 N009T000 6 20 156 156 3 0 180 44 32 4 7 9 5
26/11/82 00:00:45 N006T000 6 19 156 156 34 9 180 162 32 4 7 9 5
26/11/82 00:00:55 N009T000 6 3 80 80 15 0 15 60 32 1 0 1 1
26/11/82 00:00:55 N006T000 6 33 80 80 32 0 23 175 32 1 0 1 1
26/11/82 00:01:25 N009T000 3 25 9 22 394 12586 695 6041 348 1276 44 19414 2236 4597 651 318 2808 0 0 0 0 0 0
==== ercm09/emas-2900/node_parr6s.txt ====
! FILE 'PARR6S'
!*********************
!* PARR6S/PARR6Y *
!* DATE: 07.FEB.83 *
!*********************
! NODE 6 VERSION
!STACK = 140
%CONSTINTEGER SECAD = 9
%RECORDFORMAT XXF(%INTEGER DUMMY)
%CONSTRECORD (XXF) %NAME NULL = 0
%CONTROL X'100001'; ! TRUSTED PROGRAM AND QUICK
! ROUTINE ENTRY AND EIS
%CONSTSTRING (13) VSN = "VSN006A
"
%BEGIN
==== ercm09/emas-2900/b_ftpx.txt ====
prep x25_ftp4s,ftp4s#imp,x,e,m,clean
imp11 ftp4s#imp/,l
link11
ftp4s#rel
i77perm
.stack 2000
.streams 1
.name ftps
.end
ftp4xy
disconnect ftp4xy
alist11 ftp4s#imp/.lp23
==== ercm09/emas-2900/inc_itpint.txt ====
! ITP /TASK INTERFACE MESSAGES
!
%CONSTINTEGER LOGON=1
%CONSTINTEGER DATA IN=2
%CONSTINTEGER INT IN=3
%CONSTINTEGER ILLEGAL MESSAGE=4
%CONSTINTEGER SEND DATA=5
%CONSTINTEGER DATA OUT=6
%CONSTINTEGER SEND PROMPT=7
%CONSTINTEGER TIMEOUT=8
%CONSTINTEGER LOGOFF=9
%CONSTINTEGER SETMODE=10
%CONSTINTEGER CHANGE TASK=11
%ENDOFFILE
==== ercm09/emas-2900/rl04s.txt ====
!************
!* RL04S *
!*06.FEB.80*
!************
!* UNIT 4 ADDED
%CONTROL K'100001'; ! 'SYSTEM' PROGRAM+MUL+TRUSTED
%BEGIN
%SYSTEMINTEGERFNSPEC GETID
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMROUTINESPEC MAPHWR(%INTEGER SEGS)
%RECORDFORMAT PF(%BYTEINTEGER SERVICE, REPLY, %INTEGER A1, A2, A3)
%RECORDFORMAT P2F(%INTEGER D)
%RECORDFORMAT RLF(%INTEGER CS, BA, DA, MP)
%CONSTRECORD (RLF) %NAME RL = K'114400'
%CONSTINTEGERNAME PS = K'117776'
%CONSTINTEGER RLTOP = 10239
==== ercm09/emas-2900/netsig485.txt ====
Edinburgh Regional Computing Centre
Edinburgh University
Networks Special Interest Group
Calling Notice and Agenda
issued by
Brian Gilmore
20th April 1985
You are invited to attend a meeting of NETSIG to be held on Wednesday
15th May in the Halls of Residence, University College, London.
The meeting will start at 10.30am
AGENDA
==== ercm09/emas-2900/cursorlyns.txt ====
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! PERKIN ELMER CURSOR ADDRESSING ROUTINES
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
%EXTERNALROUTINESPEC PROMPT(%STRING (15) S)
%CONSTINTEGER ESC = 27
%EXTERNALROUTINE PEHOME
PRINTCH(12)
%END
%EXTERNALROUTINE PECLEAR
PRINTCH(1)
%END
==== ercm09/emas-2900/b_tolp23.txt ====
e fsaves/temp
f/doch/t/"/u/"/i.//DOC DEST=LP23,USER=ERCM09
F/SW(1):/t/=/e0i/doch.tostring(10)
f/prompt("rem/p
k6
%c
imp11 temp/,ll
link11
temp#rel
i77perm
.stack 1000
.streams 1
.name tolp
.end
tolp23y
alist11 temp/.lp23
==== ercm09/emas-2900/logfile.txt ====
06/09/82 08:17:40 N006T000 6 7 156 156 27 72 9 5 32 4 7 9 8
06/09/82 08:17:40 N009T000 6 20 156 156 29 72 9 63 32 4 7 9 8
06/09/82 08:17:40 N009T000 6 20 156 156 17 0 75 70 32 4 7 9 5
06/09/82 08:17:40 N006T000 6 7 156 156 27 9 75 10 32 4 7 9 5
06/09/82 08:17:45 N009T000 6 20 156 156 5 78 78 78 32 5 14 11 10
06/09/82 08:17:45 N006T000 6 26 80 80 20 0 33 247 32 280 0 31 30
06/09/82 08:17:45 N006T000 6 7 156 156 27 78 78 18 32 5 14 11 10
06/09/82 08:18:00 N006T000 6 26 80 80 27 90 90 23 32 25 0 4 1
06/09/82 08:18:00 N009T000 6 20 80 80 21 90 90 81 32 25 0 4 1
06/09/82 08:18:05 N006T000 6 26 80 80 20 0 33 22 32 287 0 33 33
06/09/82 08:18:10 N009T000 6 29 72 72 21 90 90 94 32 146 0 11 6
06/09/82 08:18:50 N006T000 6 7 156 156 27 72 5 52 32 7 13 12 11
06/09/82 08:18:55 N009T000 6 20 156 156 29 72 5 111 32 7 13 12 11
06/09/82 08:19:05 N006T000 6 26 80 80 20 0 33 44 32 282 0 31 30
06/09/82 08:19:15 N006T000 6 7 156 156 26 0 181 72 32 4 7 9 5
06/09/82 08:19:15 N009T000 6 20 156 156 21 90 90 128 32 5 7 9 5
06/09/82 08:19:15 N006T000 6 26 80 80 20 0 33 66 32 278 0 31 30
06/09/82 08:19:15 N009T000 6 20 156 156 2 0 182 136 32 4 7 9 5
06/09/82 08:19:15 N009T000 6 20 156 156 3 0 180 143 32 4 7 9 5
06/09/82 08:19:15 N006T000 6 7 156 156 27 90 90 81 32 5 7 9 5
06/09/82 08:19:15 N006T000 6 26 80 80 20 0 33 86 32 278 0 31 30
==== ercm09/emas-2900/ednet0485.txt ====
{{circle(23,11.5,.5)}}
{{INLABEL(.18,"EML")}}
{{circle(31.5,3,0.6)}}
{{INLABEL(.18,"N6")}}
{{circle(31.5,4.5,.75)}}
{{inlabel(.18,"RING@b")}}
{{inlabel(.12,"@b@bN72")}}
{{circle(10,21.7,3)}}
{{circle(10,4,3)}}
{{CIRCLE(28,9.5,0.5)}}
{{inlabel(.14,"Fe4@bT3")}}
{{CIRCLE(23,10.5,0.5)}}
{{inlabel(.14,"Fe1")}}
{{CIRCLE(23,9.5,0.5)}}
{{inlabel(.14,"Fe2")}}
{{CIRCLE(23,3,0.5)}}
{{inlabel(.14,"Fe2")}}
{{CIRCLE(30.5,21.7,1.5)}}
{{INLABEL(.14,"JANET@bPSE")}}
{{CIRCLE(23,7,.5)}}
{{inlabel(.14,"Fe1")}}
==== ercm09/emas-2900/kents_itps7.txt ====
!********************************
!* EMAS-2900 FEP ITP SERVER *
!* FILE: ITPS7/ITPS7Y *
!* DATE: 30.APR.80 16.10 *
!********************************
!MODIFIED FOR RING USING BYTE STREAM PROTOCOL INSTEAD OF NSI
!
!! STACK SIZE = 500
%SYSTEMROUTINESPEC MAP HWR(%INTEGER SEG)
%RECORDFORMAT DMF(%INTEGER I)
%CONSTRECORD (DMF) %NAME NULL = 0
%CONTROL K'100001'
==== ercm09/emas-2900/ednet0486.txt ====
{{circle(23,11.5,.5)}}
{{INLABEL(.14,"Fe4")}}
{{circle(11,16,1.5);inlabel(.2,"TelePAC@b15003000")}}
{{circle(31.5,4.5,0)}}
{{circle(13,21.7,2.5);inlabel(.35,"KB-CPSE@bGEC 4190@b")}}
{{inlabel(.14,"@B@B@b@b000015000000")}}
{{circle(13,4,2.5);inlabel(.35,"AT-CPSE@bGEC 4190@b")}}
{{inlabel(.14,"@B@B@b@b000016000000")}}
{{CIRCLE(23,2.8,0.5);inlabel(.14,"Fe3")}}
{{CIRCLE(23,10.5,0.5);inlabel(.14,"Fe1")}}
{{CIRCLE(23,9.5,0.5);inlabel(.14,"Fe2")}}
{{CIRCLE(23,3.8,0.5);inlabel(.14,"Fe2")}}
{{CIRCLE(32.5,21.7,1.5);INLABEL(.14,"JANET@bPSE")}}
{{CIRCLE(23,7.3,.5);inlabel(.14,"Fe2")}}
{{circle(12.75,24.8,.1);fill(c12)}}
{{circle(14.75,24.8,.1);fill(c13)}}
{{circle(16.75,24.8,.1);fill(c14)}}
{{circle(20.75,25.2,0)}}
{{circle(6.75,25.2,0)}}
{{CIRCLE(6.75,1.4,0)}}
{{circle(8.75,1.4,0)}}
==== ercm09/emas-2900/ll4_servic.txt ====
$A LINE=42; LEFT=2; SGAP=2; PGAP=0; JUST=1
$A TAB=4; INDENT=0
$A CAP=0; UNDSH=0; UND=0; CAPO=0; UNDSHO=0; UNDO=0
$A INVERT=0; INVO=0
$l1cm
save our services
$p2 Only a few days before the announcement of the General Election the
Tory Secretary of State for Scotland announced that it was his intention to
take out an order in Parliament to force Lothian Region to cut its spending
by #15 million. If the Tories win the election LOCAL services will suffer.
$p2 A #15 Million cut in Lothians spending will mean:
$a tab=22; indent=1
$b1$c-21For the Elderly: $t1$c-2 An end to free travel
$b0$c-2 Fewer Home Helps
$b0$c-2 Charges for Home Helps, Lunch clubs up again
$b2$c-21For Education: $t1$c-2 Fewer teachers meaning larger classes
$b0$c-2 Nursery places becoming more difficult to get
$b0$c-2 Badly kept schools as cleaning and maintainence staff are reduced
$b2$c-21 To Voluntary $b0 $c-15 Agencies: $t1 $c-2 Grants to organisations
such as youth clubs and those providing services for the elderly and housebound
will face drastic cuts.
==== ercm09/emas-2900/sys_tu58s.txt ====
!* VERSION FOR UNIT 2 & 3 DEV MACHINE ONLY (SEE ADDRESS)
!************
!* TU58S *
!*31.OCT.80*
!* UNIT 2 *
!* VERSION *
!************
!* UNIT 4 ADDED
%CONTROL K'100001'; ! 'SYSTEM' PROGRAM+MUL+TRUSTED
%BEGIN
%SYSTEMINTEGERFNSPEC GETID
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMINTEGERFNSPEC MAP ABS(%INTEGER ADR, LEN, REQ ID)
%PERMINTEGERFNSPEC SVC(%INTEGER EP, R0, R1)
%SYSTEMINTEGERFNSPEC MAP VIRT(%INTEGER WHO, HSEG, MYSEG)
%SYSTEMROUTINESPEC MAPHWR(%INTEGER SEGS)
%RECORDFORMAT PF(%BYTEINTEGER SERVICE, REPLY, %INTEGER A1, A2, A3)
%RECORDFORMAT P2F(%INTEGER D)
==== ercm09/emas-2900/b_dpal.txt ====
imp11 gen_dpal8s/dpal8s#rel,ll
link11
dpal8s#rel
i77perm
.stack 2400
.streams 1
.end
dpal8y
alist11 dpal8s/.lp23
==== ercm09/emas-2900/fepb_itps7.txt ====
!********************************
!* EMAS-2900 FEP ITP SERVER *
!* FILE: ITPS7/ITPS7Y *
!* DATE: 30.APR.80 16.10 *
!********************************
!MODIFIED FOR RING USING BYTE STREAM PROTOCOL INSTEAD OF NSI
!
!! STACK SIZE = 500
%SYSTEMROUTINESPEC MAP HWR(%INTEGER SEG)
%RECORDFORMAT DMF(%INTEGER I)
%CONSTRECORD (DMF) %NAME NULL = 0
%CONTROL K'100001'
==== ercm09/emas-2900/sys_lkdl2s.txt ====
!****************
!* LKDL2S/LKDL2Y *
!* DATE: 18.FEB.80 *
!* HANDLES DIRT&DISC *
!* REQUESTS BY SENDING *
!* THEM DOWN A DL11 *
!***********************
%CONTROL K'101011'; ! 'SYSTEM' PROGRAM (FAST
! ROUTINE ENTRY/EXIT)
%PERMINTEGERFNSPEC SVC(%INTEGER EP, P1, P2)
%SYSTEMROUTINESPEC LINKIN(%INTEGER SEG)
%SYSTEMROUTINESPEC MAPHWR(%INTEGER SEG)
%SYSTEMINTEGERFNSPEC GETID
%BEGIN
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%RECORDFORMAT PF(%BYTEINTEGER SER, REPLY, %INTEGER A, B, C)
%RECORDFORMAT P2F(%INTEGER D)
==== ercm09/emas-2900/b_gecstr.txt ====
prep gen_gecgrab,gecgrab#imp,f,m,s
imp11 gecgrab#imp/,l
link11
gecgrab#rel
i77perm
.stack 2000
.streams 2
.end
gecstry
==== ercm09/emas-2900/slide3.txt ====
{{box(0,0)(8,8);inlabel(.4,"Physical")}}
{{box(0,8)(8,16);inlabel(.4,"Data Link")}}
{{box(0,16)(8,24);inlabel(.4,"Network")}}
{{box(9,0)(17,8)}}
{{box(9,8)(17,16);inlabel(.4,"Lap-B")}}
{{box(9,16)(17,20);inlabel(.4,"X25(1980)")}}
{{box(9,20)(17,24);inlabel(.4,"Yellow Book")}}
{{box(18,0)(26,8)}}
{{box(18,8)(26,16);inlabel(.4,"X25(1984)-L2")}}
{{box(18,16)(26,24);inlabel(.4,"x25(1984)-L3")}}
{{label(2,25,.4,0,"Transition to ISO Network Layer")}}
==== ercm09/emas-2900/inc2_formats.txt ====
%constinteger hdrl = 8 ;! Length of dummy area before data field
%recordformat qf(%record (qf) %name link, %integer count)
%recordformat x25f(%byte octet1, lcn, fn, %bytearray a(0:255))
%recordformat mef(%record (mef) %name link, %byte l,type, %c
(%bytearray a(0:251) %or (%string(4) padding, %byte octet1, lcn, fn, %c
(%bytearray data(0:243) %or %string(250) s ))))
%recordformat pf(%byte ser, reply, %c
((%byte fn, %byte s1 , %c
((%record (mef) %name m, %byte gate port , task port) %c
%or %string(3) facility)) %c
%or (%byte a1, a2, b1, b2, c1, c2) %or (%integer a, b, c) %c
%or (%byte j1, process, j2, j3, len, j4)))
%recordformat cvf((%byte l, (%byte reason, cause, diags, %bytearray our ct(0:3), our segs(0:7),pss ct(0:3), pss segs(0:7)) %c
%or %bytearray a(0:26)) %c
%or %string(27) s)
%endoffile
==== ercm09/emas-2900/jtmp.txt ====
JTMP
====
(Background only)
There are currently four known sites working on JTMP, they are:-
Salford Fortran/Mainframe
ULCC BCPL/Stand alone
Bristol C/Unix (with York FEP)
UWIST ?/VMS (just starting)
The Salford implementation is the only 'host' one, the others are workstations
or workstation converter in the case of ULCC.
Currently, only the Salford implementation on the Amdahl and the ULCC version
can communicate to each other, the reason being that they have implemented
on top of a 'special' protocol to traverse the network. Bristol has
implemented on top of FTP (as it should be done) although they have had to
mod the York FTP to do so. Bristol cannot finish the software as Salford
==== ercm09/emas-2900/slide4.txt ====
$a device=x2700
$d1 :cosmos12b:
$d2 :cosmos14:
$a tab=1",3",4",5",6"
$a left=5
$5
$l0
ISO Standards
Files: IS in late 1986
Jobs: IS in late 1987
Terminals: IS in 1987
Case: IS in 1987
Presentation: IS in 1986
Session: IS now
Transport: IS now
Network: IS now
==== ercm09/emas-2900/response_infodec22.txt ====
Node = 156, Term = 156
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
==== ercm09/emas-2900/b_deimosspecs.txt ====
! Deimos specs for Imp11 v8.7
%externalroutinespec set prio %alias "$SETPRIORITY"(%integer prio)
%externalbytemapspec id
%externalbytemapspec own id %alias "ID"
%externalbytemapspec int %alias "INTCHAR"
%externalintegerfnspec map virt %alias "$FMAPVIRT"(%integer id, fromseg, toseg)
%externalintegerfnspec map psect %alias "$MAPPSECT"(%integer task, toseg)
%externalintegerfnspec time %alias "$TIME"
%externalroutinespec terminate
%externalroutinespec use tt(%integer ser)
%constinteger t3 ser = 21; ! common output handler service number
%constrecord (*) %name null == 0
%endoffile
==== ercm09/emas-2900/kmc11_kexts.txt ====
%EXTERNALSTRING(4)%ARRAY BUS0(0:15)="ADR0","ADR1","ADR2","ADR3",
"ADR4","ADR5","ADR6","ADR7","USR0","USR1","USR2","USR3",
"USR4","USR5","USR6","USR7"
%EXTERNALSTRING(4)%ARRAY BUS1(0:15)="CSR0","CSR1","CSR2","CSR3",
"CSR4","CSR5","CSR6","CSR7","NPR","MISC","?"(*)
%EXTERNALSTRING(5)%ARRAY IF(2:7)="C","Z","BRG.0","BRG.1","BRG.4","BRG.7"
%EXTERNALSTRING(3)%ARRAY ISO(0:31)="NUL","SOH","STX","ETX","EOT","ENQ",
"ACK","BEL"," BS"," HT"," NL"," VT"," FF"," CR"," SO"," SI",
"DLE","DC1","DC2","DC3","DC4","NAK","SYN","ETB","CAN"," EM","SUB",
"ESC"," FS"," GS"," RS"," US"
%EXTERNALROUTINE HEX(%INTEGER DATA)
%INTEGER I,J
%CYCLE I=12,-4,0
J=DATA>>I&15
%IF J<10 %THEN PRINT SYMBOL(J+'0') %ELSE PRINT SYMBOL(J-10+'A')
%REPEAT
%END
%EXTERNALROUTINE OCTAL(%INTEGER DATA)
%INTEGER I
==== ercm09/emas-2900/b_bou.txt ====
imp11 bounce/,ll
link11
bounce#rel
i77perm
.stack 1000
.streams 1
.end
bouncey
==== ercm09/emas-2900/ednet1086.txt ====
{{circle(26,11.5,.5)}}
{{INLABEL(.14,"Fe3")}}
{{circle(9.5,17,1.5);inlabel(.2,"TelePAC@b15003000")}}
{{join(c1,c2)}}
{{circle(8.2,13.3,1.3);inlabel(.175,"TelePAC 2@b15005000")}}
{{circle(13,21.7,2);inlabel(.3,"KB-CPSE@bGEC 4190@b")}}
{{inlabel(.14,"@B@B@b@b000015000000")}}
{{circle(13,4,2);inlabel(.3,"AT-CPSE@bGEC 4190@b")}}
{{inlabel(.14,"@B@B@b@b000016000000")}}
{{CIRCLE(26,2.8,0.5);inlabel(.14,"Fe4")}}
{{CIRCLE(26,10.5,0.5);inlabel(.14,"Fe1")}}
{{CIRCLE(26,9.5,0.5);inlabel(.14,"Fe2")}}
{{CIRCLE(26,3.8,0.5);inlabel(.14,"Fe2")}}
{{CIRCLE(32.5,21.7,1.5);INLABEL(.14,"JANET@bPSE")}}
{{CIRCLE(26,7.3,.5);inlabel(.14,"Fe2")}}
{{circle(12.75,24.8,.1);fill(c12)}}
{{circle(14.75,24.8,.1);fill(c13)}}
{{circle(16.75,24.8,.1);fill(c14)}}
{{circle(20.75,25.2,0)}}
{{circle(6.75,25.2,0)}}
{{CIRCLE(6.75,1.4,0)}}
==== ercm09/emas-2900/elect2s.txt ====
%BEGIN
%INTEGERARRAY LAB,CON,LIB(1:63)
%INTEGERARRAY SNP,IND,TOTA(1:63)
%INTEGERARRAY MAJ,INDX(1:63)
%REALARRAY PC(1:63)
%OWNREAL P1,P2
%OWNINTEGER I,J,K,L,C,B,S,NUM,TOT,INDEX
%ROUTINE READ LINE
%INTEGER I
%CYCLE
READSYMBOL(I); PRINTSYMBOL(I)
%EXIT %IF I=NL
%REPEAT
%END
%INTEGERFN READ CAND
%INTEGER I,J,K
READSYMBOL(I)
%IF I='*' %THEN SKIPSYMBOL %AND %RESULT = 0
READ(J) %UNLESS I = 'P'
==== ercm09/emas-2900/statsreh.txt ====
Dump GEC logfile Version 1.2
Log:ACCNTS.GKB840829
To:L3
No. Time
82745 23:44:17 Link LAU26 Frms (RX/TX): 2642 2552, Calls: 71 3, Bytes: 25501 99503 da 1-3 545 11 0
Max Bf: 3375 Cur Bf: 2848 Vcs 76 Min Bf: 2845 Req Dl: 0
24:00:00 Date: 27/ 8/ 1984 0000
24:00:00 Date: 0/ 1/ 1972 0137 1797 00:32:41 Link LAU26 Frms (RX/TX): 0 0, Calls: 0 0, Bytes: 56 56 da 1-3 0 0 0
Max Bf: 3375 Cur Bf: 2847 Vcs 74 Min Bf: 2841 Req Dl: 0
3644 01:05:49 Link LAU26 Frms (RX/TX): 0 0, Calls: 0 0, Bytes: 112 112 da 1-3 0 0 0
Max Bf: 3375 Cur Bf: 2844 Vcs 85 Min Bf: 2837 Req Dl: 0
==== ercm09/emas-2900/b_inv.txt ====
prep invaders,inv#imp,d
imp11 inv#imp
link11 /map
inv#rel
i77perm
.stack 4000
.end
invy
==== ercm09/emas-2900/b_xprotbm.txt ====
EDIT x25_XPROT3s,T#B
TA/198/A1STM/Versi/f<X>KZ(r/Running/i<X>i/ (Mon)/p1)2
E
prep t#b,xprotb#imp,Q
IMP11 xprotb#IMP/xprotb#REL,xprotb#lst
LINK11
ERCM09.I77PERM
xprotb#REL
.STACK 2000
.STREAMS 1
.NAME xpr1b
.END
xpr1b#OBJ
destroy xpr1by
rename xpr1b#obj,xpr1by
alist11 xprotb#imp/l2
list l2,.lp23
==== ercm09/emas-2900/bridges.txt ====
%CONTROL K'100001'
%BEGIN
%RECORDFORMAT PF(%BYTEINTEGER SER, REPLY, %INTEGER A, B, C)
%ROUTINE BSP(%RECORD (PF) %NAME PQ)
!********************************
!* EMAS-2900 BSP INTERFACE *
!* HANDLER *
!* FILE: BSP4S *
!* 18:3:80 *
!*********************************
!! STK = 300, STRM = 1
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMROUTINESPEC MAP HWR(%INTEGER SEG)
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
==== ercm09/emas-2900/docum_dfaults.txt ====
$A INVERT=0; INVO=0
$A LINE=76; PAGE=0; MARK=2
$A CAP=0; CAPO=0; CAPSH=0; CAPSHO=0
$A TAB=4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68
$L1M
DEIMOS
$B2$T0%Fault$ Messages
$P1There are three main classes of fault messages output by
DEIMOS, they are
$A INDENT=3
$B1$T3$C-3 1)$T3Compiler run time messages
$B0$T3$C-3 2)$T3Loader error messages
$B0$T3$C-3 3)$T3System detected error messages.
$A INDENT=1
$B2$T0 1)$T1Compiler run time messages.
$P1These messages are produced when the compiler run time support
code detects an error. The program is stopped and the error number
is returned to the %task$ which$ started$ the$ program$ up. This task will
normally be the loader and the error message is produced in the form:
$B1$T2F A U L T n
$B1$T1where 'n' has the following values.
==== ercm09/emas-2900/elect3s.txt ====
%externalroutine elect(%string (255) str)
%externalroutinespec define(%string (255) s)
%integerarray lab,con,lib(0:63)
%integerarray snp,ind,tota, hold(0:63)
%integerarray maj,indx(0:63)
%ownintegerarray look up(1:62) = %c
57, 4, 3, 16, 55, 17, 27, 53, 30, 62, 29, 5, 37, 24, 56, 54,
12,60, 9, 20, 39, 42, 59, 18, 58, 2, 28, 34, 19, 50, 52, 47, 46, 35, 48,
44, 8, 23, 11, 25, 61, 14, 31, 13, 6, 7, 45, 51, 1, 41, 49, 38, 33, 32,
22, 21, 36, 26, 15, 40, 10, 43
%string (25) %array names(0:63)
%ownintegerarray res(1:62, 1:10)
%ownbyteintegerarray labl(1:10) = 12, 10, 9, 8, 6, 5, 4, 3, 2, 1
%ownbyteintegerarray conl(1:10) = 16, 14, 12, 10, 8, 6, 5, 4, 3, 2
%ownstring (3) %array ps(1:5) = %c
"Lab", "Con", "Lib", "Snp", "Ind"
%realarray pc(0:63)
%ownreal p1,p2
%owninteger this one
%string (255) ss
==== ercm09/emas-2900/node_nlp3s.txt ====
!**********************
!* nlps/nlpy *
!* nb: Uses New Compiler
!* date: 26.jul.80 *
!*********************
%conststring (15) vsn = "nlps...vsn3a
"
!! stack = 400, streams = 3
%recordformat xf(%byteinteger unit,fsys,%byteintegerarray fname(0:5))
%include "b_deimosspecs"
%begin
%externalroutinespec open output(%integer str, %string (255) s)
%constinteger control ser = 11
%recordformat rjef(%byteintegerarray data(0:239))
==== ercm09/emas-2900/newsys_btt7s.txt ====
! file 'btt7s'
!**************
!* btt7s *
!*da:24.feb.81*
!**************
%control X'4001'
%externalintegerfnspec map virt %alias "$FMAPVIRT"(%integer id, fromseg,toseg)
%begin
%recordformat pf(%byteinteger service, reply, %c
%integer a1, a2, a3)
%recordformat ttf(%integer kbs, kbd, tts, ttd)
%recordformat buff(%integer pt, last, (%bytearrayname b %or %c
%integer arraypt))
%constrecord (*) %name null == 0
%constinteger rubout=k'177'
==== ercm09/emas-2900/b_dpalnew.txt ====
e gen_dpal8s/temp
f/deimosperm/s/b_deimosspecs/
%c
imp11 temp/,ll
link11
temp#rel
ercm11.newimp
.stack 2400
.streams 1
.end
dpal8y
alist11 temp/.lp23
==== ercm09/emas-2900/supnew.txt ====
!***********
!* sup010 *
!*05.mar.82*
!***********
%control x'4001'
%externalroutinespec push(%record(*)%name q,%record(*)%name m)
%externalrecord(*)%mapspec pop(%record(*)%name q)
%constrecord (*) %name null == 0
%recordformat dummy(%integer x)
%begin
%constinteger task low limit=30
%constinteger task limit=75
%constinteger free cells=80
%constinteger no of services=task limit
%constinteger frag no=15
%constinteger psect length=48
%constinteger svc limit=23
==== ercm09/emas-2900/newsys_cli1s.txt ====
! file 'cli1s'
!**************
!* cli1s *
!* 26.feb.81 *
!**************
%control 1
%recordformat dumrec(%integer x)
%constrecord (*) %name null == 0
%externalintegerfnspec map virt %alias "$FMAPVIRT"(%integer id, fromseg,toseg)
%begin
%constinteger delete = 5
%constinteger schedule t = 9
%constinteger map psect = 16
%constinteger r0=0,r1=1,r2=2,r3=3
==== ercm09/emas-2900/inc_vt100.txt ====
%CONSTINTEGER ATTOFF=1; !ATTRIBUTES OFF
%CONSTINTEGER BOLD=2
%CONSTINTEGER UNDER=4
%CONSTINTEGER BLINK=8
%CONSTINTEGER NEGAT=16
!
%CONSTSTRING(2) TOPH="#3"
%CONSTSTRING(2) BOTH="#4"
%CONSTSTRING(2) DOBW="#6"
%ENDOFFILE
==== ercm09/emas-2900/b_det23.txt ====
out=lp23
name=what a drag
.end
==== ercm09/emas-2900/sys_sup009.txt ====
!***********
!* SUP009 *
!*03.NOV.80*
!***********
%CONTROL K'111011'; ! MUL+TRUSTED
%PERMROUTINESPEC SVC
%PERMINTEGERMAPSPEC INTEGER(%INTEGER X); ! USED IN INIT
%RECORDFORMAT DUMMY(%INTEGER X)
%CONSTRECORD (DUMMY) %NAME NULL=0
%BEGIN
%CONSTINTEGER TASK LOW LIMIT=30
%CONSTINTEGER TASK LIMIT=70
%CONSTINTEGER FREE CELLS=80
%CONSTINTEGER NO OF SERVICES=TASK LIMIT
%CONSTINTEGER FRAG NO=15
%CONSTINTEGER PSECT LENGTH=48
%CONSTINTEGER SVC LIMIT=23
==== ercm09/emas-2900/tsbsp_tst_stab.txt ====
!values for the states variable
%CONSTINTEGER WT ACCEPT= 1
%CONSTINTEGER RUNNING= 2
%CONSTINTEGER WT FIN= 3
%CONSTINTEGER WT DISC= 4
%CONSTINTEGER WT CLOCK= 5
!values for the events variable
%CONSTINTEGER ERROR EVENT= 1
%CONSTINTEGER ACC= 2
%CONSTINTEGER DISC= 3
%CONSTINTEGER RST= 4
%CONSTINTEGER EN OUT= 5
%CONSTINTEGER INT A= 6
%CONSTINTEGER TICK= 7
!values for the actions variable
%CONSTINTEGER PROCESS ACC= 1
==== ercm09/emas-2900/sys_sup010.txt ====
!***********
!* SUP010 *
!*14.JUN.82*
!***********
%CONTROL K'111011'; ! MUL+TRUSTED
%PERMROUTINESPEC SVC
%PERMINTEGERMAPSPEC INTEGER(%INTEGER X); ! USED IN INIT
%RECORDFORMAT DUMMY(%INTEGER X)
%CONSTRECORD (DUMMY) %NAME NULL=0
%BEGIN
%CONSTINTEGER TASK LOW LIMIT=30
%CONSTINTEGER TASK LIMIT=75
%CONSTINTEGER FREE CELLS=80
%CONSTINTEGER NO OF SERVICES=TASK LIMIT
%CONSTINTEGER FRAG NO=15
%CONSTINTEGER PSECT LENGTH=52
%CONSTINTEGER SVC LIMIT=23
==== ercm09/emas-2900/isotran.txt ====
@make[report]
@heading[ISO Transition Plans (some brief comments)]
The ISO Transition Plans still correspond well with the outline given by
Peter Linington at Networkshop 1984. However, since then the ISO Transition
Committee has been meeting and a major report will be available in
@b[the autumn] of this year.
An important feature in the transition is keeping in step
with the ISO transition in the rest of Europe
to ensure that we can apply the maximum pressure on @b[manufacturers] to produce
the necessary protocols.
@section[Current Position]
The transition will be handled in two distinct parts.
@begin[enumerate]
At the network Level (and below)
Upper levels
@end[enumerate]
@section[Network Level]
The intention is to switch from the current position of Yellow Book running over
==== ercm09/emas-2900/sys_sup011.txt ====
!***********
!* SUP011 *
!*14 OCT 85*
!***********
%CONTROL K'111011'; ! MUL+TRUSTED
%PERMROUTINESPEC SVC
%PERMINTEGERMAPSPEC INTEGER(%INTEGER X); ! USED IN INIT
%RECORDFORMAT DUMMY(%INTEGER X)
%CONSTRECORD (DUMMY) %NAME NULL=0
%BEGIN
%CONSTINTEGER TASK LOW LIMIT=30
%CONSTINTEGER TASK LIMIT=75
%CONSTINTEGER FREE CELLS=80
%CONSTINTEGER NO OF SERVICES=TASK LIMIT
%CONSTINTEGER FRAG NO=15
%CONSTINTEGER PSECT LENGTH=52
==== ercm09/emas-2900/sys_brun10.txt ====
.TIME40
;**************************************
;* BRUN10 *
;* INTERFACE BETWEEN HARDWARE AND IMP*
;* DATE: 23.NOV.79 *
;**************************************
PS=177776; PROCESSOR STATUS WORD
IDLEST=-1; SUPERVISOR IDLE FLAG
INTVAL=40; DEDICATED LOCATION FOR INTERRUPT NUMBER
SUPER=42; DITTO - FOR SUPERVISOR STATE
ALARMF=44; DITTO - FOR CLOCK
PSECT=46; DITTO - CURRENT PSECT
LASTPS = 54
INTINF=56
UPAR=177640
UPDR=177600
==== ercm09/emas-2900/newsys_suprin.txt ====
DEIMOS VSN 10.1 14.JUN.82 (SHARED PERM IN SEG 0 + NEW SEG 8)
RK05
3500
DVNO2Y N 0
SUP50 60002 0
PERM2Y 60006 0
BTT7Y 60012 0
BDK6Y 60016 0
FSYS78 60022 0
LOAD8Y 60026 0
CLI1Y 60032 0
MOTH6Y 60036 0
END
-11 340 KB#2 ADDR=776500, SER=19
-12 344 TT#2
-6 330 RING RX
-7 334 RING TX
-6 770 KMC11
-7 774 DITTO
-13 270 AM1 INTERFACE
-14 274
==== ercm09/emas-2900/config.txt ====
1 72 4 42 32 "TCP A "
1 72 2 42 32 "TCP C "
1 9 47 42 48 "TCP D "
1 72 8 42 48 "TCP M "
1 72 13 42 32 "TCP S "
1 9 15 42 32 " JCMB "
1 6 60 42 8 "ENGIN "
1 6 20 42 8 "CHEM "
1 9 154 42 8 "FOREST"
1 6 66 42 16 " IGS "
1 9 40 42 24 "G. SQ."
1 6 26 42 16 " GEOG "
1 6 43 42 16 " A.I. "
1 9 41 42 16 "CS-AT1"
1 6 89 42 24 "CS-AT2"
1 6 27 42 40 "ATB-1 "
1 6 70 42 32 "ATB-2 "
1 6 42 42 16 " SOCS "
1 6 63 42 24 "EULIB "
1 6 67 42 8 "POLLCK"
1 6 83 42 24 " BUSH "
==== ercm09/emas-2900/newsys_bdk6s.txt ====
!**********
!* bdk6s *
!*18.feb.82*
!************
%control 1
%begin
%recordformat pf((%byteinteger service, reply %or %integer d), %c
%integer a1, a2, a3)
%recordformat dkf(%integer dst, err, comm, wc, add, dar)
%constrecord (dkf) %name dk == k'117400'
%constinteger dktop = 4871
%owninteger dk bot = k'77'
%constinteger unit1 = k'020000'
%constinteger unit2 = k'040000'
==== ercm09/emas-2900/docum_mdbug.txt ====
$A TAB=5, 10; CAPO=0; CAPSHO=0; INVERT=1; PAGENO=1
$A JUST=1; LINE=72; PAGE=59; TOP=3; BOTTOM=4; MARK=2
$L1CM
DEBUGGING PROGRAM
$B2
$L1C
OBJECT: DBUG
$A INDENT=1
$P2
@THIS PROGRAM IS USED AS AN AID TO DEBUGGING PROGRAMS,
IT MAY BE USED TO:-
$A INDENT=2
$B0 1) .SET AND .CLEAR BREAKPOINTS
$B0 2) @DUMP OUT THE .PSECT, .REGISTERS AND/OR THE .IMP .STACK.
$B0 3) .EXAMINE AND .CHANGE LOCATIONS IN CORE.
$B0 4) .DUMP GENERAL AREAS OF CORE.
$A INDENT=1
$P2
.DEBUG INDICATES ITS READINESS TO ACCEPT COMMANDS
BY TYPING .'DEBUG:'. @THE FOLLOWING COMMANDS MAY BE USED.
$A INDENT=2
==== ercm09/emas-2900/xrco.txt ====
{{Horizontal}}
{{circle(10,26,0.75)}}
{{circle(10,23,0.75)}}
{{circle(10,20,1)}}
{{circle(10,14,3)}}
{{circle(10,5,3)}}
{{circle(24,10.5,0.5)}}
{{circle(24,9.5,0.5)}}
{{circle(24,8.5,0.5)}}
{{circle(24,2.5,0.5)}}
{{circle(29,14,1.5)}}
{{circle(7,17.6,0)}}
{{circle(15.4,17.6,0)}}
{{circle(17.8,17.6,0)}}
{{circle(20.2,17.6,0)}}
{{circle(22.6,17.6,0)}}
{{circle(25,17.6,0)}}
{{circle(24,16.5,0)}}
{{circle(13,1.4,0)}}
{{circle(15.4,1.4,0)}}
{{circle(17.8,1.4,0)}}
==== ercm09/emas-2900/ddload.txt ====
!***************
!* DDLOS *
!* DL HANDLER *
!***************
%CONTROL K'101011'; ! 'SYSTEM' PROGRAM (FAST
! ROUTINE ENTRY/EXIT)
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMROUTINESPEC MAPHWR(%INTEGER SEG)
%PERMINTEGERFNSPEC SVC(%INTEGER EP, R0, R1)
%BEGIN
%RECORDFORMAT PF(%BYTEINTEGER SER, REPLY, %INTEGER A1, A2, A3)
%RECORDFORMAT P2F(%INTEGER D)
%RECORDFORMAT LPF(%INTEGER STATUS, DATA)
%CONSTRECORD (LPF) %NAME LP = K'116504'
! IN SEG 4 (REALLY A PUNCH!!)
==== ercm09/emas-2900/coraltrans.txt ====
e coral2/coral2x
f/'cora/i/{/r0i/}/
(f/'comment'/i/{/(r0lv.;.\ri/}/mi.{.)*i/}/)*
m-0(f/"?"/s/"255"/)*
m-0(f/'integer' 'procedure'/s/%INTEGERFN/)*
m-0(f/'procedure'/s/%ROUTINE/)*
m-0(f/'value' 'integer'/s/%INTEGER/v. ,.ri.A.,v.).i. b.,)*
m-0(f/'integer' 'array'/s/%INTEGERARRAYname /v. ,.ri.c.,v.).i. d.,)*
m-0(f/'location' 'integer'/s/%integername /v. ,.ri.c.,v.).i. d.,)*
m-0(f/'define'/s/%owninteger /f/"/s/= /f/"/e)*
m-0(f/'then'/s/%THEN /m1f1/'begin'/s//m-r0i/%START; /,m)*
m-0(f/'answer'/s/%RESULT =/)*
m-0(f/'if'/s/%IF /)*
m-0(f/'else'/s/%else /r\m(v. .r)*v.'begin'.km-r0i/%start;/,)*
m-0(f/'and'/s/%AND /)*
m-0(f/%start/f/'end'/s/; %FINISH /)*
m-0(f/[/s/(/)*
m-0(f/]/s/)/)*
m-0(f/'or'/s/%or /)*
m-0(f/'bits'/s/BITS/)*
m-0(f/'then'/s/%then /)*
==== ercm09/emas-2900/cals.txt ====
%INTEGERFN INITIALDAY(%INTEGER YEAR)
%OWNINTEGER INITIAL = 0; ! BASE IN 1973
%INTEGER X
X = (INITIAL+YEAR-1973+(YEAR-1973)//4)
%WHILE X > 7 %CYCLE
X = X-7
%REPEAT
%RESULT = X
%END
%EXTERNALROUTINE CALENDAR(%STRING (63)S)
%INTEGER I, YEAR, DAY
%OWNINTEGER INITIAL = 0; !BASE IN 1973
%OWNSTRING (9) %ARRAY MONTH(1:12) = %C
'JANUARY ', 'FEBRUARY ', 'MARCH ', 'APRIL ',
'MAY ', 'JUNE ', 'JULY ', 'AUGUST ',
'SEPTEMBER', 'OCTOBER ', 'NOVEMBER ', 'DECEMBER '
%OWNBYTEINTEGERARRAY DAYS(1:12) = %C
31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
==== ercm09/emas-2900/b_lmeor.txt ====
imp11 lmeors
link11
lmeors#rel
i77perm
.stack 1000
.streams 1
.end
lmeory
alist11 lmeors/.lp23
==== ercm09/emas-2900/newsys_bdk7s.txt ====
!**********
!* bdk7s *
!*22.jun.82*
!************
%control 1
%begin
%recordformat pf((%byteinteger service, reply %or %integer d), %c
%integer a1, a2, a3)
%recordformat dkf(%integer dst, err, comm, wc, add, dar)
%constrecord (dkf) %name dk == k'117400'
%constinteger dktop = 4871
%owninteger dk bot = k'77'
%constinteger unit1 = k'020000'
%constinteger unit2 = k'040000'
==== ercm09/emas-2900/b_bsp.txt ====
prep bsp78s,bsp78s#imp,o
imp11 bsp78s#imp
link11
bsp78s#rel
i77perm
.stack 1000
.streams 0
.name bsps
.end
bsp78y
==== ercm09/emas-2900/sys_dvdup.txt ====
;! FILE 'DVDUP'
;.TIME40
;**************************************
;* DVDUP *
;* INTERFACE BETWEEN HARDWARE AND IMP*
;* DATE: 27.MAR.81 *
;**************************************
PS=177776; PROCESSOR STATUS WORD
IDLEST=-1; SUPERVISOR IDLE FLAG
INTVAL=40; DEDICATED LOCATION FOR INTERRUPT NUMBER
ALARMF=44; DITTO - FOR CLOCK
PSECT=46; DITTO - CURRENT PSECT
LASTPS = 54
INTINF=56
UPAR=177640
UPDR=177600
==== ercm09/emas-2900/dumpgec2.txt ====
%externalroutine dumpgec(%string(63) s)
%conststring (25) vsn = " Version 1.3"
%owninteger print all = 0; ! prints lau data if <>0
%owninteger mon line = -1; ! line to monitor
%owninteger mon con = 0
%owninteger print this = 0
%constinteger our exchange = 1
%owninteger this exchange = 0, fix exch
%constinteger scd = 0
%constinteger ecd = 1
%constinteger dcd = 2
%constinteger laustats = 3
%constinteger unitstats = 4
%routinespec dumpaddr(%bytearrayname a, %byte l)
%routinespec writehex(%integer n,d)
!Routine for dumping GEC Network Management logs
%routinespec dat(%integer dat)
%routinespec tod(%integer d)
==== ercm09/emas-2900/node_prt11ns.txt ====
! FILE 'NODE_PRT11NS'
!*********************
!* PRT1S/PRT1Y *
!* DATE: 26.MAR.81 *
!*VERSION FOR NODE *
!*HISTORY UNCERTAIN *
!!!!!!!!!!!!!!!!!!!!!!
!STACK = 140
%CONTROL X'100001'; ! TRUSTED PROGRAM AND QUICK
! ROUTINE ENTRY AND EIS
%CONSTINTEGER KERNEL SER = 29
%OWNINTEGER SECONDARY = 0; !PRIM = 0, SEC = 1
%OWNINTEGER SECAD = 9; !SECONDARY ADDRESS
%CONSTINTEGER WMAX = 56; ! MAX NO OF WRITES
%CONSTINTEGER SFMASK = 63; ! CIRC BUFFER SIZE FOR WRITES
%CONSTSTRING (7) VSN = 'VSN011C'
==== ercm09/emas-2900/ticket.txt ====
**************************************************
* South Edinburgh Constituency Labour Party *
* *
* UNEMPLOYMENT DEMONSTRATION *
* *
* GLASGOW Feb 21st *
* *
* Bus leaving PRESTON ST. SCHOOL 9.30am *
* Rerturn from Glasgow at 4.30pm *
* $2.50 *
**************************************************
==== ercm09/emas-2900/vaxperf.txt ====
easygraph
title "Transfer rate (bytes/sec) vs Packet Size"
xaxis 20,"Packet Size in bytes"
xformat 3,0
xscale 0,25
yaxis 16,"Bytes/sec"
yformat 3,0
yscale 0,7000
flatnumber
linetype line+points
symbol square
data
50 10410
150 27270
250 40300
350 52220
450 67860
annotate "Vax 11/750"
plot
overlay
symbol diamond
==== ercm09/emas-2900/ertedgn_dgn1s.txt ====
! FILE 'dgn1s'
!*********************
!* dgn1s/dgn1y *
!* DATE: 10.FEB.82 *
!*********************
!STACK = 140
%RECORDFORMAT XXF(%INTEGER DUMMY)
%CONSTRECORD (XXF) %NAME NULL = 0
%CONTROL K'100001'; ! TRUSTED PROGRAM AND QUICK
! ROUTINE ENTRY AND EIS
%CONSTSTRING (13) VSN = "DGN1:VSN001A
"
%BEGIN
%PERMROUTINESPEC SVC(%INTEGER EP, R0, R1)
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
==== ercm09/emas-2900/anlogs.txt ====
%externalroutine anlog(%string (255) s)
%externalroutinespec define(%string(255)s)
%externalintegerfnspec smaddr(%integer chan, %integername len)
%externalstring (*) %fnspec itos(%integer i,j)
%integer i,j,k,l,m,o,p,q,type,ent, tci, tco, tbi, tbo, tpp, node
%owninteger conns,info, rec, start, max, gsum, maxt
%owninteger free ind = 1
%integerarray n,t,co,ci,bo,bi,pp,cf,sm, icf, ism,ssm,scf(0:127)
%integer line,oline
%ownintegerarray cou(0:11)
%integerarray tab(1:60,1:60)
%byteintegerarray nn,tt(1:60)
%byteintegerarray nod(1:15, 0:200)
%string (6) %array nm(1:60)
%switch sw(0:11)
%ownintegerarray enta(1:25)
==== ercm09/emas-2900/log_n1.txt ====
1
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8 1 9 0 1
8 29 70 0 11
8 30 0 0 12
4 30 0 0 29 70 9 15 0
6 30 0 0 29 70 9 15 32 57 0 726 0 54 0
4 30 0 0 29 70 9 18 0
6 30 0 0 29 70 9 18 32 251 0 3193 0 248 0
RING: 9585 23516 4922 4 223 4 357 329 1173 29067 286 287 288 0
4 30 0 0 29 70 9 21 0
RING: 61 19 3 0 0 1 0 3 41 22 4 4 4 0
6 30 0 0 29 70 9 21 32 181 0 2293 0 178 0
4 30 0 0 29 70 9 23 0
RING: 7203 17688 3705 2 157 9 238 266 883 21850 215 214 215 0
6 30 0 0 29 70 9 23 32 40 0 508 0 37 0
==== ercm09/emas-2900/ll4_assem.txt ====
$A LINE=42; LEFT=2; SGAP=2; PGAP=0; JUST=1
$A TAB=3; INDENT=0
$A CAP=0; UNDSH=0; UND=0; CAPO=0; UNDSHO=0; UNDO=0
$A INVERT=0; INVO=0
$l1cm
An assembly for scotland
$p2
In 1979 the Scottish people voted for an Assembly. The Tories came to
power and shelved the issue. An Assembly could stand up to Tory policies
which have been so disastrous for the Scottish economy and our health,
education and social services.
$p1
Labour has pledged itself to establish a directly elected Scottish Assembly,
with powers over a wide range of issues including health, education and
social welfare, able to raise its own revenue.
$p1
The Assembly will have a major role in helping to rebuild Scottish
industry. Labour's "Plan for Scotland" proposes a major public works
programme - including upgrading the roads and railways, improvements
in health care, more aid for cities, and a new coal-fired power station in
the Forth area.
==== ercm09/emas-2900/log_n2.txt ====
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9 30 0 0 13 13 0 0 0 0 0 0 0
9 0 1 0 2 0 0 0 0 0 0 0 0
9 0 2 0 3 0 0 0 0 0 0 0 0
9 0 3 0 4 0 0 0 0 0 0 0 0
9 0 5 0 5 0 0 0 0 0 0 0 0
9 0 6 0 15 0 0 0 0 0 0 0 0
9 1 9 0 1 0 0 2 780 13 0 2 777
5 1 78 78 29 70 11 26 0 126 142 141 487 126 142
9 29 70 0 12 0 0 2 777 0 0 2 780
5 29 70 11 1 78 78 27 0 126 142 141 487 126 142
9 0 72 0 7 0 0 0 0 0 0 0 0
9 0 78 0 8 0 0 0 0 0 0 0 0
9 0 80 0 9 0 0 0 0 0 0 0 0
9 0 90 0 30 0 0 0 0 0 0 0 0
9 0 156 0 11 0 0 0 0 0 0 0 0
11 1 2 1 1752 1157 0 25 0 0 0 0 1751 1164 0 17 26
11 29 0 0 0 0 0 0 438 438 182 522 7 1 0 432 455
4 30 0 0 29 70 9 36 0
6 29 70 11 1 78 78 27 32 127 143 141 487 126 142
6 1 78 78 29 70 11 26 32 126 143 141 487 126 143
==== ercm09/emas-2900/kents1280_nsiws.txt ====
!**********************
!* NSIWS/NSIWY *
!* DATE: 25.SEP.79 *
!*********************
%CONSTSTRING (7) VSN = "VSNK01B"
!! STACK = 400, STREAMS = 3
!! NOTE: FOR VERSIONS THAT ARE RUN OUT OF A 2900 FEP SYSTEM,
!! MESSAGES FROM THE NETWORK SHOULD BE ENABLED - SEE
!! THE COMMENT AT 'MESSAGES ENABLED'
%CONTROL K'100001'
!STACK=400, STREAMS=3
%RECORDFORMAT XF(%BYTEINTEGER UNIT,FSYS,%BYTEINTEGERARRAY FNAME(0:5))
%EXTERNALPREDICATESPEC READ FNAME(%RECORD(XF)%NAME FILE)
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%BEGIN
%%RECORDFORMAT ITPF(%BYTEINTEGER CNSL,HB1,HB2,LEN, %C
==== ercm09/emas-2900/inc_fsys.txt ====
!
! FILE SYSTEM HANDLER INTERFACE
!
%CONSTINTEGER EXAMINE=0
%CONSTINTEGER GET NEXT=1
%CONSTINTEGER DESTROY=2
%CONSTINTEGER CREATE=3
%CONSTINTEGER APPEND=4
%CONSTINTEGER RENAME=5
%CONSTINTEGER RENAME TEMP=6
%CONSTINTEGER RENAME FSYS=7
%CONSTINTEGER GET DIR=8
%ENDOFFILE
==== ercm09/emas-2900/log_n4.txt ====
NODE 4 LOG FROM 18.FEB.81 13.00 ONWARDS
1
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8 1 9 0 1
8 29 70 0 2
8 30 0 0 17
RING: 9 9 3 0 0 0 0 1 7 12 2 1 1 0
4 30 0 0 29 70 9 21 0
RING: 721 1076 442 0 15 3 18 19 67 1556 15 16 17 0
RING: 23265-30388 14253 33 362 24 566 648 1868-14972 469 467 470 0
6 30 0 0 29 70 9 21 32 538 0 7047 0 535 0
RING: 2702 4092 1669 1 41 1 74 79 273 5896 62 62 61 0
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RING: 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RING: 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RING: 0 0 0 0 0 0 0 0 0 0 0 0 0 0
==== ercm09/emas-2900/log_n5.txt ====
NODE 4 19.FEB.81 13.00
1
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8 1 9 0 1
8 2 98 98 2
8 29 70 0 3
8 30 0 0 4
4 29 70 7 30 0 0 16 0
RING: 0 92 0 0 0 0 0 0 69 79 13 12 13 0
RING: 28 586 28 0 0 0 0 0 549 538 81 75 76 0
RING: 9 843 9 0 0 0 0 0 464 767 84 85 85 0
RING: 313 8465 274 11 0 0 0 1 2825 8251 482 496 500 0
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RING: 29 660 29 0 0 0 0 0 510 625 62 63 64 0
6 29 70 7 30 0 0 16 32 244 243 247 920 244 243
==== ercm09/emas-2900/log_n6.txt ====
NODE 4 23.FEB.81 13.00 ONWARDS
RING: 12 11 6 0 0 0 0 1 28 17 1 1 1 61
RING: 12 13 4 0 0 0 0 1 28 17 1 1 1 61
RING: 0 0 0 0 0 0 0 0 0 0 0 0 0 61
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9 30 0 0 12 1029 0 2 4289 0 0 0 101
9 0 1 0 3887 0 0 0 0 0 0 0 0
9 0 2 0 4192 0 0 0 0 0 0 0 0
9 0 3 0 4075 0 0 0 0 0 0 0 0
9 0 5 0 3889 0 0 0 0 0 0 0 0
9 1 9 0 3886 3 0 2 47 612 0 2 159
9 2 21 21 4460 23 0 1 32 0 0 1 28
5 2 21 21 1 80 80 4461 0 19 23 19 43 4 4
9 29 70 0 11 2023 1297 3 28894 9 1 44 27854
9 0 72 0 3891 0 0 0 0 0 0 0 0
9 0 78 0 3890 0 0 0 0 0 0 0 0
9 0 80 0 3892 0 0 0 0 0 0 0 0
9 0 90 0 4525 0 0 0 0 0 0 0 0
9 0 156 0 3963 0 0 0 0 0 0 0 0
11 1 2 1 3333 16158 0 3868 0 1 0 1 13716 10781 0 4229 3891
11 2 3 0 480 5127 0 296 0 26 0 7 620 3070 0 39 891
==== ercm09/emas-2900/sys_sbldrx3s.txt ====
!**********
!* SBLD13S *
!* NB: NOT SAME AS BPL SBLD1S !!!!
!* DATE: 17.MAR.80 *
!* SUPERVISOR BUILD PROGRAM *
!*************************************
%PERMROUTINESPEC SVC(%INTEGER EP, %INTEGERNAME P1, %INTEGER P2)
%PERMINTEGERMAPSPEC INTEGER(%INTEGER X)
%PERMBYTEINTEGERMAPSPEC BYTEINTEGER(%INTEGER X)
%PERMINTEGERFNSPEC ADDR(%INTEGERNAME X)
%PERMINTEGERFNSPEC ACC
%CONSTINTEGERNAME DUMMY = 0
%CONSTINTEGERNAME NULLI = 0
%BEGIN
!* STK = 76000, STRM = 3
==== ercm09/emas-2900/lex2.txt ====
backups Camtec Dexpand eg etc FTP G/W G/Ws GEC Gilmore H/W II lookups
Micro NOC NRS PSE SEEL/Telefile Sep setups stand-alone timescale Unix
Vax XXX
==== ercm09/emas-2900/b_infop.txt ====
prep x25gen_infop2s,infops#imp,x,e,m,clean
imp11 infops#imp/,l
link11
infops#rel
i77perm
.stack 2000
.streams 1
.name infp
.end
infopxy
disconnect infopxy
alist11 infops#imp/.lp15
==== ercm09/emas-2900/comm.txt ====
Networking in Edinburgh University
Introduction
For more than 15 years Edinburgh University has depended on a large data
network. This has grown up under the pressure from Departments, scattered
widely across Edinburgh, to communicate first with the central mainframes and
latterly also with other departments and services both within the University
and other Universities connected to JANET (The Joint Academic Network). A
diagram of the Edinburgh University network is shown in Fig. 1.
The dispersed nature of the University has also resulted in the development
==== ercm09/emas-2900/ftptest.txt ====
transfer l,DESY.VB(a,b)g,FILE,NO
transfer l,EMBL(a,b)g,FILE,NO
transfer l,GEC.B5(a,b)g,FILE,NO
transfer l,GEC.D13(a,b)g,FILE,NO
transfer l,GEC.D2(a,b)g,FILE,NO
transfer l,GEC.D7(a,b)g,FILE,NO
transfer l,GXVS(a,b)g,FILE,NO
transfer l,ICLBRR88(a,b)g,FILE,NO
transfer l,ICLWGW(a,b)g,FILE,NO
transfer l,RSRE(a,b)g,FILE,NO
transfer l,SYPE(a,b)g,FILE,NO
transfer l,ABER.CS.A(a,b)g,FILE,NO
transfer l,AFRC.AFRUS(a,b)g,FILE,NO
transfer l,AFRC.ARCC(a,b)g,FILE,NO
transfer l,AFRC.CAMB(a,b)g,FILE,NO
transfer l,AFRC.FRIB(a,b)g,FILE,NO
transfer l,AFRC.FRIR(a,b)g,FILE,NO
transfer l,AFRC.IRAD(a,b)g,FILE,NO
transfer l,AFRC.LARS(a,b)g,FILE,NO
transfer l,AFRC.NIAEA(a,b)g,FILE,NO
transfer l,AFRC.NVRS(a,b)g,FILE,NO
==== ercm09/emas-2900/b_gecgrab.txt ====
prep X25gen_gecgrab2,gecgrab#imp,f,b,m
imp11 gecgrab#imp/,l
link11
gecgrab#rel
i77perm
.stack 4000
.streams 3
.end
gecgrab2y
==== ercm09/emas-2900/erte_dup11e.txt ====
!**************
!* DUP11E *
!*DA:09.FEB.80*
!**************
%CONTROL K'100001'; ! 'SYSTEM' PROGRAM AND
! TRUSTED PROG
%RECORDFORMAT PARF(%INTEGER TYPE, ADDRESS, LEN)
%EXTERNALROUTINE DUP11E(%RECORD (PARF) %NAME P)
%SYSTEMROUTINESPEC MAPHWR(%INTEGER SEG)
%SYSTEMINTEGERFNSPEC GETID
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMINTEGERFNSPEC MAP ABS(%INTEGER ADR, LEN, REQ ID)
%PERMINTEGERFNSPEC SVC(%INTEGER EP, P0, P1)
%RECORDFORMAT PF(%BYTEINTEGER SER, REPLY, %INTEGER A1, A2, A3)
==== ercm09/emas-2900/node_itpin2s.txt ====
%CONTROL 1
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! INFO MARK 2--ITP CONSOLE HANDLER
!
! FILE=ITPS
!
! 27TH AUG 1980
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! THIS MODULE TAKES CONNECTIONS TO FACILITY 18 FROM GATE AND HANDLES
! CONSEQUENT ITP LOGONS FROM CONSOLES. IT ASSOCIATES THE CONSOLE WITH THE USER TASK
! AND WILL LOAD OTHER TASKS TO GIVE THE REQUIRED SERVICE.
! IT THEN HANDLES THE FLOW OF DATA FROM THE TASK TO THE CONSOLE AND VICE-VERSA.
! LOGGING OFF THE CONSOLE IS ALSO CONTROLLED FROM HERE.
!
! SEE INFO NOTES 2 AND 3 FOR INTERFACE DETAILS.
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
==== ercm09/emas-2900/gatex_nsource.txt ====
!**********************************************************
!* *
!* PSS X-25 Level 3 Protocol Handler *
!* *
!* GATEX *
!* *
!* Version 9.31 15 Sep 1983 *
!* *
!**********************************************************
!*
%control 1
%begin
!************************************
!* *
!* Declarations *
!* *
!************************************
!*
!****** Constintegers ******
!*
==== ercm09/emas-2900/ringold_bsp6s.txt ====
! FILE 'BSP78s'
!********************************
!* EMAS-2900 BSP INTERFACE *
!* HANDLER *
!* FILE: BSP78s *
!* DATE:02.sep.81 *
!* MODIFIED FOR ERCC USE *
!*********************************
!! STK = 300, STRM = 1
%CONSTRECORD (*) %NAME NIL == 0
%CONTROL 1
%include "deimosperm"
==== ercm09/emas-2900/infcolours.txt ====
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! *** EXTERNAL ROUTINES FOR DRIVING INTECOLOUR DISPLAY
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
%INCLUDE "INC_COLOURDEFS"
%INCLUDE "INC_SERVICES"
%EXTERNALINTEGERSPEC CBACK
%EXTERNALINTEGERSPEC CFORE
!
!
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! THESE ROUTINES ARE SPECIAL OUTPUT ROUTINES
! FOR THE INTECOLOUR ON SERVICE 13.
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
==== ercm09/emas-2900/advertinfo.txt ====
$A INVERT=0; INVO=0; PAGE=60; LINE=75; PAGENO=1; JUST=1
$A CAP=0; CAPSH=0; CAPO=0; CAPSHO=0; MARK=2
$A TAB=5,10,15,20,25,30,35,40,45,50,60
$B12$l1mu
Communications Group Vacancy
$B3 The Communications Group has responsibility for the development and
maintenance of software for the Universities Data Network. For the past 12 years this network, linking the University of
Edinburgh, Glasgow and Strathclyde has been based on a proprietary virtual
call protocol on a mixture of PDP11 and Modular One packet switches
, but has recently been converted to use X25, currently based on three GEC X25 packet switches integrated with a
high speed Cambridge Ring. The Edinburgh University part of the Network
currently supports a number of hosts, including:-
$A INDENT=1
$B2 One ICL 2988 and a dual ICL 2972 with a DAP, both running the EMAS
operating system.
$B1 4 systems running UNIX
$B1 2 VAXs running VMS
$B1 A File Store
$B1 A Network Information machine
$B1 Gateways to both BTs PSS and the Joint Academic Network (JANET)
$A INDENT=0
==== ercm09/emas-2900/erte_duxxe.txt ====
!**************
!* DUPXXE *
!*DA:10.JUN.80*
!**************
%CONTROL K'100001'; ! 'SYSTEM' PROGRAM AND
! TRUSTED PROG
%RECORDFORMAT PARF(%INTEGER TYPE, ADDRESS, LEN, FLAG)
%EXTERNALROUTINE DU11E(%RECORD (PARF) %NAME P)
%SYSTEMROUTINESPEC MAPHWR(%INTEGER SEG)
%SYSTEMINTEGERFNSPEC GETID
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMINTEGERFNSPEC MAP ABS(%INTEGER ADR, LEN, REQ ID)
%PERMINTEGERFNSPEC SVC(%INTEGER EP, P0, P1)
%RECORDFORMAT PF(%BYTEINTEGER SER, REPLY, %INTEGER A1, A2, A3)
==== ercm09/emas-2900/b_lmtsxs.txt ====
new
prep x25gen_lmtots,lmtots#imp,x,clean
dimp11 lmtots#imp
link11 /map
lmtots#rel
.stack 1000
.streams 1
.stackseg 6
.name lmts
.end
lmtsxy
destroy lmtsxy
rename lmtsxy#abs,lmtsxy
old
==== ercm09/emas-2900/b_cli.txt ====
dimp11 cli1s
link11 /map
cli1s
.codeseg 2
.stackseg 6
.stack 300
.streams 0
.end
cli1s
c cli1s#abs,newsys_cli1y
==== ercm09/emas-2900/inc_colourspecs.txt ====
!
! *** SPECS FOR EXTERNAL ROUTINES FOR IC DISPLAY
!
%EXTERNALROUTINESPEC OUTSYMBOL(%INTEGER CHAR)
%EXTERNALROUTINESPEC OUTSTRING(%STRING(255) S)
!
%EXTERNALROUTINESPEC ENTER PLOT MODE
%EXTERNALROUTINESPEC EXIT PLOT MODE
%EXTERNALROUTINESPEC SET BACKGROUND(%INTEGER COLOUR)
%EXTERNALROUTINESPEC SET FOREGROUND(%INTEGER COLOUR)
%EXTERNALROUTINESPEC SET CURSOR(%INTEGER X,Y)
%EXTERNALROUTINESPEC SET BLIND CURSOR(%INTEGER X,Y)
%EXTERNALROUTINESPEC BARX(%INTEGER X0,Y,X1)
%EXTERNALROUTINESPEC BARY(%INTEGER X,Y0,Y1)
%EXTERNALROUTINESPEC BIGBARX(%INTEGER X0,Y,X1)
%EXTERNALROUTINESPEC BIGBARY(%INTEGER X,Y0,Y1)
!
%EXTERNALINTEGER CFORE; !CURRENT FOREGROUND COLOUR
%EXTERNALINTEGER CBACK; !CURRENT BACKGROUND COLOUR
%ENDOFFILE
==== ercm09/emas-2900/cursors.txt ====
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! PERKIN ELMER CURSOR ADDRESSING ROUTINES
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
%EXTERNALROUTINESPEC PROMPT(%STRING (15) S)
%CONSTINTEGER ESC = 27
%EXTERNALROUTINE PEHOME
PRINTCH(ESC); PRINTSYMBOL('H')
%END
%EXTERNALROUTINE PECLEAR
PRINTCH(ESC); PRINTSYMBOL('K')
%END
==== ercm09/emas-2900/tu58test.txt ====
%BEGIN
%RECORDFORMAT PF(%BYTEINTEGER SER, REP, %INTEGER A, %INTEGERNAME B, %C
%INTEGER C)
%INTEGER I, J
%CONSTBYTEINTEGERNAME ID = K'160030'
%INTEGERARRAY BUFF(0:256)
%RECORD (PF) P
%ROUTINE READ BL(%INTEGER BLOCK)
P_SER = 8; P_REP = ID
P_A = 0; P_B == BUFF(0); P_C = BLOCK
PONOFF(P)
%IF P_A # 0 %START
PRINTSTRING("READ FAILS "); WRITE(P_A, 1); NEWLINE
%FINISH
%END
PROMPT("WRITE BLOCK?")
READ(I)
%CYCLE J = 0, 1, 255; BUFF(J) = I+100; %REPEAT
P_SER = 8; P_REP = ID
==== ercm09/emas-2900/ringold_rjee8s.txt ====
! FILE 'FEPD_RJEE8S'
%CONSTSTRING (7) VSN = "VSNEB8Y"
!********************************
!* EMAS-2900 FEP RJE SERVER *
!* FILE: RJEE8/RJEE8Y *
!* DATE: 13.MAY.81 *
!* MODIFIED FOR RING 27.OCT.80
!********************************
!! STACK SIZE = 300
%SYSTEMROUTINESPEC MAP HWR(%INTEGER SEG)
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%RECORDFORMAT DMF(%INTEGER I)
%CONSTRECORD (DMF) %NAME NULL = 0
==== ercm09/emas-2900/dmareq.txt ====
Use of DMA Ring Boards
Ring DMA boards will be put in the following machines:-
Nodes 2
Fep's 2
Pss Gateway 1
X25 Gateway 1
ERTE 1
Dev. Machine 1
Filestore 2
Four of these connections are new, ie the filestore machines, the second
FEP, and the 11/60 (or more correctly giving ERTE back its ring interface).
In addition, when the single word boards are released, TCP D will be
moved onto the ring as part of the switch to X25.
==== ercm09/emas-2900/kents_eam7p.txt ====
!********************************
!* EMAS-2900 FEP AM1 HANDLER *
!* FILE: EAM7 *
!* DATE: 22.FEB.80 10.00 *
!* MODIFIED FOR PCB INTERFACE *
!********************************
!! STACK SIZE = 300
%OWNINTEGER FEP NO = 0
%RECORDFORMAT DMF(%INTEGER I)
%CONSTRECORD (DMF) %NAME NULL = 0
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMROUTINESPEC MAP HWR(%INTEGER SEG)
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%CONTROL K'100001'
==== ercm09/emas-2900/erte_erteman.txt ====
$A PAGE=60;UND='#'
$A JUST=1;PGAP=5;TAB=5,10,20,30
$A NLS=2;INDENT=1;LINE=70
$A PAGENO=1;START=1
$L1CUM
E.R.T.E. USER MANUAL
$B8 $L1CUM
CONTENTS
$A INDENT=3
$B2 $L9CI
1) INTRODUCTION
2) SCRIPT FORMATS
3) PARAMETER FILES
4) RUNNING E.R.T.E.
5) ERROR MESSAGES
6) CONFIGURING E.R.T.E.
7) DATA ANALYSIS
8) SCRIPT FILE UTILITIES
9) OTHER RELEVANT DOCUMENTATION
$B8 $I1 $L1CUI
ISSUE NO. 6.0 (FOR ERTE MK.3 & ERTE MK.4) 16TH MARCH 1979
==== ercm09/emas-2900/equipprop.txt ====
Equipment Proposal
a) Equipment Needed
An Intel 88/45 single board computer with an ICL box and
power supply.
b) Purpose
A Name/Route Server for the Network.
On the X25 switch and the Cambridge Ring, the address of a
Server is determined by the line number, or ring station, to
which it is currently connected. On the NSI network the address
is independant of where it is attached so we have been able to
give our Servers fixed addresses. This is not possible with the
X25 switch and hence if a server is replugged we will 'lose' it.
A name/route server would enable us to keep track of the addresses
and enable load balancing of the larger mainframes.
==== ercm09/emas-2900/b_xprotb.txt ====
EDIT x25_XPROT3s,T#B
TA/198/A1STM/Versi/f<X>KZ(r/Running/i<X>i/ (Fast)/p1)2
E
prep t#b,xprotb#imp,Q,f
IMP11 xprotb#IMP/xprotb#REL,xprotb#lst
LINK11
ERCM09.I77PERM
xprotb#REL
.STACK 2000
.STREAMS 1
.NAME xpr1b
.END
xpr1b#OBJ
destroy xpr1by
rename xpr1b#obj,xpr1by
alist11 xprotb#imp/l2
list l2,.lp23
==== ercm09/emas-2900/cons.txt ====
%EXTERNALROUTINE CON(%STRING (255) S)
%EXTERNALROUTINESPEC DEFINE(%STRING (255) S)
%STRING (255) T,U,V
%integer a,b,c,i,j,n,rx,tx,seq,tim,x,y, q
%string(15) from,to
%integerarray val(1:40)
%string (14) %array froma,toa(1:40)
%integerarray dur(1:40)
%bytearray tos(0:255)
%owninteger mtarg = 1
%constinteger nhosts=40
%ownintegerarray tno(0:nhosts)
%ownintegerarray trx(0:nhosts)
%ownintegerarray ttx(0:nhosts)
%ownintegerarray tdur(0:nhosts)
%ownstring (14) %array targa(0:nhosts)
%owninteger print all = 0; ! 0=dont print - see ":p"
%string (255) %fn getstring(%integer n)
%integer i
==== ercm09/emas-2900/jntnews.txt ====
@device[x2700]
@make[report]
@heading[X.25 Switch Survey]
The Academic Community has now been using GEC packet switches for a number of
years and it was felt appropriate to conduct a fresh survey into current
X.25 switching products. The main intention of the survey was to identify
potential suppliers of both large switches (around 100 lines) and of
small switches (around 10 lines) neither of which is satisfactorily
covered by the GEC products. An initial survey was made of 17 systems
which are currently marketed and a summary of the report, entitled
'X.25 Packet Switch Survey, 1st Stage Report' is available from the JNT.
From the initial survey six manufacturers were picked for a more detailed
examination. They were the existing suppliers GEC and Camtec joined by
Amdahl, Dynatech, Telefile and Telematics. The requirement for large switches
was addressed by GEC, Amdahl and Telematics whilst Camtec, Dynatech and
Telefile were contenders for the small switch requirement.
The final survey report recommended that, subject to a number of conditions,
restricted procurement should be permitted between GEC and Telematics at the
==== ercm09/emas-2900/advent_move.txt ====
3 0 6 0 4 0 2 0 0 0
1 0 8 0 2 0 4 0 0 0
2 0 1 0 4 0 7 0 0 0
1 0 3 0 5 0 2 0 0 0
2 0 6 0 4 0 1 0 0 0
2 0 7 0 8 0 5 0 0 0
0 0 0 0 0 0 6 0 0 0
6 0 3 0 9 0 4 0 0 0
8 0 3 0 10 0 4 0 0 0
9 0 0 0 11 0 0 0 0 11
0 0 10 0 0 0 12 0 10 0
0 0 11 0 0 0 13 0 0 0
0 0 12 0 0 0 14 0 14 0
0 0 13 0 0 0 15 0 15 13
0 0 14 0 0 0 16 0 0 0
0 0 15 0 0 0 0 0 0 17
22 0 0 0 18 0 19 0 16 22
17 0 0 0 0 0 0 0 0 0
0 0 17 0 0 0 20 0 0 0
0 0 19 0 0 0 21 0 0 0
20 0 20 0 88 0 29 0 0 0
==== ercm09/emas-2900/sys_rxboot.txt ====
; BOOTSTRAP FOR RX50 DISCS
; BASICALLY SAME AS DEC ONE
.=0
240
BR P1
.WORD 6,0,12,0,0,0,172150
P1: 240
BR P2
.WORD 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.WORD 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.WORD 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.WORD 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
P2: ; AT 254 ?
CLR R1
MOV #100000,R2
MOVEL: MOV (R1)+,(R2)+
CMP R1,#600
BLT MOVEL; MOVE UP TO 100000 (NOT SAME AS DEC)
JMP MOVEP+100000; AND GO TO IT
MOVEP: MOV #172150,R1; ADDR OF RX50
==== ercm09/emas-2900/ring_rolb77s.txt ====
! FILE 'ROLBS'
!**********************
!* ROLBES/ROLBEY *
!* DATE: 26.jan.82 *
!* RING VSN *
!*********************
%CONSTSTRING (7) VSN = "VSN001B"
!! STACK = 300, STREAMS = 1
%CONTROL K'100001'
%include "deimosperm"
%RECORDFORMAT XF(%BYTEINTEGER UNIT,FSYS,%BYTEINTEGERARRAY FNAME(0:5))
%begin
%OWNINTEGER MON = 0
%RECORDFORMAT RJEF(%BYTEINTEGERARRAY DATA(0:239))
%RECORDFORMAT NSI1F(%INTEGER ST, DS, RC, TC, UFLAG, %C
%RECORD(RJEF) RJE)
==== ercm09/emas-2900/b_am1b.txt ====
prep fep_eam9s,eam9s#imp,n,clean,b,m
dimp11 eam9s#imp
link11 /map
eam9s#rel
.stack 2000
.streams 1
.name am1h
.stackseg 6
.end
eam9s
destroy eam9sy
rename eam9s#abs,eam9sy
alist11 eam9s#imp/.lp23
==== ercm09/emas-2900/sys_dvtu58s.txt ====
; FILE 'DVTU58'
;**************************************
;* DVTU58 *
;* INTERFACE BETWEEN HARDWARE AND IMP*
;* DATE: 28.OCT.80 *
;**************************************
PS=177776; PROCESSOR STATUS WORD
IDLEST=-1; SUPERVISOR IDLE FLAG
INTVAL=40; DEDICATED LOCATION FOR INTERRUPT NUMBER
ALARMF=44; DITTO - FOR CLOCK
PSECT=46; DITTO - CURRENT PSECT
LASTPS = 54
INTINF=56
UPAR=177640
UPDR=177600
UPAR0=40; INDEC INTO PSECT
==== ercm09/emas-2900/mon.txt ====
Node = 80, Term = 80
0
0
0
0
15
21
10
0
1
0
0
0
0
0
0
0
0
0
0
==== ercm09/emas-2900/rand.txt ====
%externallongrealfnspec cputime
%integerfn randomize(%integer range)
%longreal res,last
res = cputime
last = fracpt(res*100000)
last = fracpt(last*100000)
%result = intpt(last * range + 1)
%end
%externalintegerfn rand int
%result = randomize(20)
%end
%endoffile
==== ercm09/emas-2900/fsystu581s.txt ====
! FILE 'SYS_FSYSTU581S'
!******************************
!* FILE SYSTEM HANDLER *
!* FSYS1S/FSYS1Y *
!* DATE: 28.JUN.79 *
!******************************
!*W.S.C. 25TH AUGUST 1976
!*B.G. 27.MAR.78
!*THIS HANDLER IS THE FILE SYSTEM UTILITY TO REPLACE THE
!*EXISTING ONE IN DEIMOS TO PERMIT A FILE SYSTEM TO BE
!*CREATED ON THE AMPEX 9500 DISC AS WELL AS THE RK05'S.
!*IT IS A CONCEPTUAL COPY OF THE RK05 FILE SYSTEM HANDLER
!*EXCEPT THAT A BUFFER POOL IS USED FOR BLOCK DESCRIPTORS
!*AND DIRECTORY BLOCKS.
!*THE CODE IS SHARED BY 3 SYSTEM SLOTS,4 FOR THE RK05'S,
!*AND 9,15 FOR THE AMPEX DISC.THE AMPEX DISC IS LOGICALLY
==== ercm09/emas-2900/fepb_eam7p.txt ====
!********************************
!* EMAS-2900 FEP AM1 HANDLER *
!* FILE: EAM7 *
!* DATE: 22.FEB.80 10.00 *
!* MODIFIED FOR PCB INTERFACE *
!********************************
!! STACK SIZE = 300
%OWNINTEGER FEP NO = 0
%RECORDFORMAT DMF(%INTEGER I)
%CONSTRECORD (DMF) %NAME NULL = 0
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMROUTINESPEC MAP HWR(%INTEGER SEG)
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%CONTROL K'100001'
==== ercm09/emas-2900/ibmdoc_ibmcons.txt ====
%externalroutine ibmcon(%string (255) s)
%externalroutinespec define (%string (255) s)
%integer i,j,k,l
%string (255) t,u
%unless s -> t.("/").u %then printstring("Param a/b !!
") %and %stop
define("1,".t); define("2,".u)
select input(1); select output(2)
%on 9 %start
%stop
%finish
printstring("File:"); printstring(t); newlines(2)
k=' '
%cycle
readsymbol(K)
%if k = '+' %then printch(13) %and -> fg
%if k = '0' %then newlines(2) %and -> fg
%if k = '-' %then newlines(3) %and -> fg
%if k = '1' %then newpage %and ->fg
newline
==== ercm09/emas-2900/kent#jun81_itps8.txt ====
! FILE 'FEP_ITPS8'
!********************************
!* EMAS-2900 FEP ITP SERVER *
!* FILE: ITPS8/ITPS8Y *
!* DATE: 24.SEP.80 16.10 *
!********************************
!! STACK SIZE = 500
%SYSTEMROUTINESPEC MAP HWR(%INTEGER SEG)
%PERMROUTINESPEC SVC(%INTEGER EP, R0, R1)
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%RECORDFORMAT DMF(%INTEGER I)
%CONSTRECORD (DMF) %NAME NULL = 0
%CONTROL K'100001'
==== ercm09/emas-2900/gecgrab2.txt ====
!**********************************************************
!* *
!* RCO ITP to GEC Network Management Module *
!* *
!* Gecgrab *
!* *
!* *
!**********************************************************
#options
!* Prep options
!* b - output binary file, else packed hex+compression
!*
!*
%control 1 ;!No record checking.
!*
#if ~i
%include "deimosperm"
#else
%include "b_deimosspecs"
==== ercm09/emas-2900/kmc11_kmcdrvs.txt ====
%externalroutinespec define(%string (255) s)
%externalroutinespec run(%string (255) s)
%externalroutine kmc (%string (255) s)
%string (255) s1, s2, s3, s4
define("2,kprims")
s3="y"; s4=".out"
%if s->s.("/").s2 %start
%if s2->s3.(",").s4 %then s3=s3
%finish
define("1,".s)
%if s3="" %then s3="Y"
%if s4="" %then s4="ss#list"
define("3,".s3)
define("4,".s4)
run("kmc2y")
%end
%externalroutine krecode(%string (255) s)
%string (255) t, u
%unless s -> s.("/"). t %then t = ".out"
define("1,".s)
==== ercm09/emas-2900/b_dx11bb.txt ====
prep x25_dx11bbs,dx11bbs#imp,n,m,b
dimp11 dx11bbs
link11
dx11bbs
.stack 16000
.streams 1
.name DX1B
.stackseg 6
.end
dx11bbs
c dx11bbs#abs,dx11bby
alist11 dx11bbs
list dx11bbs#lst,.lp23
==== ercm09/emas-2900/tsbsp_deimos.txt ====
%EXTERNALROUTINESPEC ALARM(%INTEGER T)
%EXTERNALROUTINESPEC LINKIN(%INTEGER SEG)
%EXTERNALROUTINESPEC MAP VIRT(%INTEGER SER,S1,S2)
%EXTERNALROUTINESPEC PON(%RECORD (PEF) %NAME P)
%EXTERNALROUTINESPEC PONOFF(%RECORD (PEF) %NAME P)
%EXTERNALROUTINESPEC POFF(%RECORD (PEF) %NAME P)
%ENDOFFILE
==== ercm09/emas-2900/b_xprotm.txt ====
EDIT x25_XPROTs,T#B
TA/198/A1STM/Versi/f<X>KZ(r/Running/i<X>i/ (Mon)/p1)2
E
prep t#b,xprot#imp,Q
IMP11 XPROT#IMP/XPROT#REL,xprot#lst
LINK11
ERCM09.I77PERM
XPROT#REL
.STACK 2000
.STREAMS 0
.NAME XPR1
.END
XPR1#OBJ
destroy xpr1y
rename xpr1#obj,xpr1y
alist11 xprot#imp/.lp23
==== ercm09/emas-2900/b_am1m.txt ====
prep fep_eam77,eam77#imp,n,m,c,clean
dimp11 eam77#imp
link11 /map
eam77#rel
.stack 1000
.streams 1
.name am1h
.stackseg 6
.end
eam77
destroy eam77y
rename eam77#abs,eam77y
alist11 eam77#imp/.lp23
==== ercm09/emas-2900/networks85_intro.txt ====
@make[article]
@device[x2700]
@style[spacing 1]
@modify[hd2,facecode=k]
@begin[text,topmargin=+1.3inches,leftmargin=+0.45inches,rightmargin=+0.6inches]
blank
@newpage
@section[Introduction]
Edinburgh University is spread across
many parts of Edinburgh with two main "campus" areas and a number of
other scattered departments. This situation has led to a very high
dependence on data networking which has been built up over fifteen years in order
to ensure that students and staff can communicate with either the
main University Services or local department machines.
The current network (see fig 1)
is based on three GEC packet switches supporting
33 hosts and 100 synchronous links [1].
The dispersed nature of the University
has resulted in the development of a separate complex
==== ercm09/emas-2900/b_xprotp.txt ====
EDIT x25_XPROTs,T#B
TA/198/A1STM/Versi/f<X>KZ(r/Running/i<X>i/ (Fast)/p1)2
E
prep t#b,xprot#imp,F,p
IMP11 XPROT#IMP/XPROT#REL,xprot#lst
LINK11
ERCM09.I77PERM
XPROT#REL
.STACK 2000
.STREAMS 0
.NAME XPR1
.END
XPR1#OBJ
destroy xpr1y
rename xpr1#obj,xpr1y
alist11 xprot#imp/.lp23
==== ercm09/emas-2900/b_am1o.txt ====
prep fep_eam77,eam77#imp,clean
imp11 eam77#imp
link11 /map
i77perm
eam77#rel
.stack 1000
.streams 1
.name am1h
.end
eam77y
alist11 eam77#imp/.lp23
==== ercm09/emas-2900/inc2_config.txt ====
! Configuration file for PSSE
! Options used:INC_CONFIGGEN,TEMP,P,CLEAN
!Versions required:
! System Name Accred Nets Procs* Disc Drv Prep
! P PSSE PSSE Yes 2+1 16 6 10 RL01 0 P
! M XGATE XGATE No 1+1 37 20 40 RL01 0 M
! K Kent GATE Yes 1+1 16 6 10 RL02 0 K
! U Kent #2 SGATE Yes 1+2 ?? ?? ?? RK05 0 U
! G Glasgow GGATE No 1+2 16 6 31 RX02 1 G
! F FEP (GATEX) - No +2 60 20 40 - - H
! T XGATE # 2 XGATE2 No 37 20 40 RL01 0 T
! D DGATE DGATE No 30 20 40 - - D
!Disc Configuration Information
!Define first and last user blocks to prevent us overwriting directory
!etc. Ranges for various discs are:
==== ercm09/emas-2900/ringboot.txt ====
AAAABAABAAAAAACAAAAACAAAAAAAAAADAAAAAAAACMNCLHBIAAAAAAAAAAAAAAAADLCAEDEPENENEFEO
FECAEDEPENENEFEOFECAEDEPENENEFEOFECAEDEPENENEFEOFEAKDLAKDLCAEHEFEPFCEHEFCACNCAFD
EPFCFCFJCAEBECEPFFFECAEDEPEDELFFFACAEMEBFDFECAFHEFEFELCOCAEGEJEOEHEFFCCAFEFCEPFF
ECEMEFCAFHEIEFEOCAFAFFEOEDEIEJEOEHAKDLCAFJEPFFFCCAFAFEEBFAEFCOCAFEEIEJFDCAEJFDCA
EEEFEGEJEOEJFEEFEMFJCAFEEIEFCAEDFFFCFCEFEOFECAFHEPFCELEJEOEHCAFGEFFCFDEJEPEOCOAK
DLCAFEEIEJFDCAEGEJEMEFCAEEEJFDFAEBFEEDEIEFEECAEJEOFEEPCAFEEIEFCAEOEFFEFHEPFCELCA
EBFECADBDBDKDDDAEBENCADJCPDDCPDIDBCOAKDLCAEJEOEGEPCAEPEOCAEBFDFDEFENECEMEFFCCPEM
EJEOELEFFCCAEJEOFEEFFCEGEBEDEFCAFDFEEJEMEMCAEBFHEBEJFEEFEECACIFDEFEFCAEMEBFDFECA
EMEFFEFEEFFCCJCOAKDLCACACACACACACNCAEBEMEBEOAKDLAKDLCAEDEPENENEFEOFECAEDEPENENEF
EOFECAEDEPENENEFEOFECAEDEPENENEFEOFEAKDLAKAJCOFEEJFEEMEFCAFCEJEOEHCAEBECFDEPEMFF
FEEFCAEMEPEBEEEFFCAKDLENEPEEEJEGEJEFEECAEGFCEPENCAEBEOEEFJCAECEFEMEMFDCAFCFECNDB
DBCAEMEPEBEEEFFCCOCAEBEMEJCADDDACPDICPDHDHCOAKDLFEEIEJFDCAFAFCEPEHFCEBENCAFAFFEO
EDEIEFFDCAEBEOCAEBECFDEPEMFFFEEFCAEMEPEBEEEFFCCAFAEBFAEFFCCAFEEBFAEFAKDLEJEOCAEE
EFEDCAECEPEPFEFDFEFCEBFACAEMEPEBEEEFFCCAEGEPFCENEBFEAKAKAJCOFDECFEFEEMAJFAFFEOED
EICAEBECFDEPEMFFFEEFCAEMEPEBEEEFFCCAFEEBFAEFAKDLAKDLAKDLFDEFFECAFAFEFCCAFEEPCAFA
FADKCAFDFEEBFEFFFDCAEGEPFCCAEPECFJFEEFAKDLAKECEFEHEJEODKAJENEPFGAJCDDBDHDHDFDFDE
CMFCDFAKDLAKDLCAFAFFEOEDEICADBDADACAECEMEBEOELCAEMEFEBEEEFFCCAEGFCEBENEFFDAKDLAK
AJEDEMFCAJFCDAAKAJENEPFGAJCDDBDADACMFCDBAKDDCEDKAJEKFDFCAJFAEDCMEPECFJFEEFAJDLFA
FFEOEDEICAEBCAECFJFEEFAKAJEEEFEDAJFCDBAKAJECEOEFAJDDCEAKDLAKDLCAFAFFEOEDEICADDDA
DACAFDFAEFEDEJEBEMCAEMEFEBEEEFFCCAEGFCEBENEFFDAKDLAKAJENEPFGECAJECCOEMEPEPFACLDC
CMFCDAAKAJEEEFEDECAJFCDAAJAJDLEHEFFEFDCAEJEOEDFCEFENEFEOFEEFEECAECEFEGEPFCEFCAFF
==== ercm09/emas-2900/flink.txt ====
!
! C.S. LINK HANDLER FOR KMC11 - GJB 28/06/78
!
!
! KMC11 PROGRAM TO PERFORM BLOCK TRANSFERS BETWEEN PDP-11 AND
! C.S. DEPARTMENT NINE BIT LINK. BUFFERS ARE PASSED, USING THE
! CSRs AS FOLLOWS :-
! (1) PDP-11 -> KMC11
! (A) PDP-11 SETS CSR0.4 (CSR REQUEST)
! (B) KMC11 SETS CSR2.1 (CSR GRANT) AFTER ARBITRARY DELAY
! (C) PDP-11 LOADS BUFFER INFO :
! CSR2.0 = 0 (RX BUFF), 1 (TX BUFF)
! CSR2.2/3 = BIT 16/17 OF ADDRESS
! CSR3 = LENGTH (IN WORDS)
! CSR2.7 = EXTRA BYTE MARKER
! CSR4/5 = BIT 0-15 OF ADDRESS
! (D) PDP-11 RESETS CSR0.4
! (2) KMC11 -> PDP-11
! (A) KMC11 LOADS BUFFER INFO, AS ABOVE
! (B) KMC11 SETS CSR2.4 (DATA READY)
!
==== ercm09/emas-2900/tsbsp_tst_sttext.txt ====
! WT ACCEPT RUNNING WT FIN WT DISC WT CLOCK
!
! ERROR EVENT * * * * *
!
!
! ACC PROCESS ACC * * * -
! RUNNING
!
! DISC OPEN FAILED REPLY DISC AB REPLY DISC OK - -
! WT CLOCK WT CLOCK WT CLOCK WT CLOCK
!
! RST SEND DISC SEND DISC SEND DISC - -
! WT DISC WT DISC WT DISC
!
! EN OUT * SEND DATA - - -
!
!
! INT A SEND DISC SEND DISC SEND DISC - STOP
==== ercm09/emas-2900/b_down.txt ====
imp11 down4m
link11
down4m#rel
.stack 2000
i77perm
.streams 1
.end
down4y
==== ercm09/emas-2900/b_xproty.txt ====
EDIT x25_XPROTs,T#B
TA/198/A1STM/Versi/f<X>KZ(r/Running/i<X>i/ (Fast)/p1)2
E
prep t#b,xprot#imp,F,p,Y
IMP11 XPROT#IMP/XPROT#REL,xprot#lst
LINK11
ERCM09.I77PERM
XPROT#REL
.STACK 2000
.STREAMS 0
.NAME XPRY
.END
XPR1#OBJ
destroy xpry1y
rename xpr1#obj,xpry1y
alist11 xprot#imp/.lp23
==== ercm09/emas-2900/ednet0586.txt ====
{{circle(23,11.5,.5)}}
{{INLABEL(.14,"Fe4")}}
{{circle(11,16,1.5);inlabel(.2,"TelePAC@b15003000")}}
{{circle(0,0,0)}}
{{circle(13,21.7,2.5);inlabel(.35,"KB-CPSE@bGEC 4190@b")}}
{{inlabel(.14,"@B@B@b@b000015000000")}}
{{circle(13,4,2.5);inlabel(.35,"AT-CPSE@bGEC 4190@b")}}
{{inlabel(.14,"@B@B@b@b000016000000")}}
{{CIRCLE(23,2.8,0.5);inlabel(.14,"Fe3")}}
{{CIRCLE(23,10.5,0.5);inlabel(.14,"Fe1")}}
{{CIRCLE(23,9.5,0.5);inlabel(.14,"Fe2")}}
{{CIRCLE(23,3.8,0.5);inlabel(.14,"Fe2")}}
{{CIRCLE(32.5,21.7,1.5);INLABEL(.14,"JANET@bPSE")}}
{{CIRCLE(23,7.3,.5);inlabel(.14,"Fe2")}}
{{circle(12.75,24.8,.1);fill(c12)}}
{{circle(14.75,24.8,.1);fill(c13)}}
{{circle(16.75,24.8,.1);fill(c14)}}
{{circle(20.75,25.2,0)}}
{{circle(6.75,25.2,0)}}
{{CIRCLE(6.75,1.4,0)}}
{{circle(8.75,1.4,0)}}
==== ercm09/emas-2900/b_lmlsse.txt ====
e gen_lmpsse/temp
f/call kent/s/call loop/p
f/call emas/s/call 2972/p
f/ercc14/s/ercv06/p
f/bgxx/s/BRIN/p
%c
imp11 temp
link11
temp#rel
i77perm
.stack 2000
.streams 1
.name lmls
.end
lmlssey
list lmlssey,.fep72
==== ercm09/emas-2900/b_xprotks.txt ====
! nb: source now on amdahl *************************************
EDIT x25_xprot3s,T#B
TA/198/A1STM/Versi/f<X>KZ(r/Running/i<X>i/ (Fast)/p1)2
E
prep t#b,xprot2#imp,f,k,clean
IMP11 xprot2#IMP/xprot2#REL,xprot2#lst
LINK11
ERCM09.I77PERM
xprot2#REL
.STACK 2000
.STREAMS 1
.NAME xpr1
.END
xpr2#OBJ
destroy xprky
rename xpr2#obj,xprky
alist11 xprot2#imp/l2
list l2,.lp23
==== ercm09/emas-2900/b_bspdnew.txt ====
prep ring_bsp78s,bsp78s#imp,n,d
dimp11 bsp78s#imp
link11 /bsp78s
bsp78s#rel
.stack 1000
.streams 0
.name bsps
.codeseg 1
.stackseg 6
.end
bsp78s
destroy bsp78dy
rename bsp78s#abs,bsp78dy
==== ercm09/emas-2900/parr4fs.txt ====
!*********************
!* parr4fs/parr4y *
!* date: 20.jan.82 *
!* modified for fep *
!*********************
!stack = 140
%control 1
%conststring (13) vsn = "parr:vsn004a
"
%begin
%recordformat parrf(%integer rcsr, rbc, rba, rvec, %c
tcsr, tbc, tba, tvec)
%ownrecord (parrf) %name pa == 1
==== ercm09/emas-2900/response2_info12jan.txt ====
Node = 156, Term = 156 - INFO 12 Jan 82 - 14.30-15.30 (approx)
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
==== ercm09/emas-2900/b_rl01.txt ====
dimp11 rl06s
link11 /map
rl06s
.codeseg 2
.stackseg 6
.stack 300
.streams 0
.end
rl06s
c rl06s#abs,newsys_rl06y
==== ercm09/emas-2900/color3s.txt ====
!
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! INFO MARK 2 COLOUR DISPLAY PROGRAM #2
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
!
! THIS PROGRAM DISPLAYS THE STATUS AND USERS ON EACH TCP
! BY MEANS OF BAR GRAPHS OF DIFFERING COLOURS
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! FORMATS AND VARIABLES
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
%BEGIN
%INCLUDE "INC_TERMS"
%INCLUDE INC_GATEINT
==== ercm09/emas-2900/b_sbld.txt ====
imp11 gen_sbld6s/sbld6s#rel,l
link11
sbld6s#rel
i77perm
.stack 72000
.streams 4
.end
sbld6y
alist11 gen_sbld6s,sbld6s#rel/.lp23
==== ercm09/emas-2900/whos.txt ====
%EXTERNALROUTINE WHO(%STRING (255) S)
%integer l
%externalstring (255) %fnspec fromstring(%string (255) s, %integer i,j)
%EXTERNALINTEGER UINFSEG = 9; %INTEGER UINFAD
UINFAD=UINFSEG<<18
%RECORDFORMAT %C
UINFF (%STRING(6) USER, %STRING(31) JOBDOCFILE, %C
%INTEGER MARK, FSYS, PROCNO, ISUFF, REASON, BATCHID, SESSICLIM, %C
SCIDENSAD, SCIDENS, STARTCNSL, AIOSTAT, SCT DATE, %C
SYNC1 DEST, SYNC2 DEST, ASYNC DEST, AACCT REC, AIC REVS, %C
%STRING(15)JOBNAME, %STRING(31)BASEFILE, %INTEGER PREVIC, %C
%INTEGER ITADDR0, ITADDR1, ITADDR2, ITADDR3, ITADDR4, %C
STREAM ID, DIDENT, SCARCITY, PREEMPTAT, %STRING(11)SPOOLRFILE, %C
%INTEGER FUNDS, SESSLEN, PRIORITY, DECKS, DRIVES, UEND)
%RECORD (uinff) %name UINF
UINF==RECORD(UINFAD)
%INTEGER NODE, TERM, BUFF
NODE = (UINF_ITADDR0>>16)&X'FF'
TERM = (UINF_ITADDR0>>8)&X'FF'
BUFF = UINF_ITADDR0&X'FF'
PRINTSTRING("you are on Node"); WRITE(NODE, 1)
==== ercm09/emas-2900/erteburr_icl1s.txt ====
!*********************
!* ICL1S/ICL1Y *
!* DATE: 24.FEB.80 *
!!!!!!!!!!!!!!!!!!!!!!
!STACK = 140
%RECORDFORMAT XXF(%INTEGER DUMMY)
%CONSTRECORD (XXF) %NAME NULL = 0
%CONTROL X'100001'; ! TRUSTED PROGRAM AND QUICK
! ROUTINE ENTRY AND EIS
%CONSTSTRING (7) VSN = 'VSN001B'
%BEGIN
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%RECORDFORMAT PARF(%INTEGER TYPE, %RECORD (XXF) %NAME B, %C
%INTEGER LEN)
==== ercm09/emas-2900/switchtox25.txt ====
Implications of the Switch to X25
=================================
a) Hardware
1. TCPs and Workstations
The following TCPs will need a store upgrade (amount in brackets)
Bush 11/10 (32kb)
Cs-at1 11/10 (16kb)
Eng1 11/10 ( 8kb)
G. Sq. 11/10 (16kb)
Pollock11/04 (32kb)
Scri-P 11/10 (32kb)
The following TCPs will need an HDLC line Interface card
Art In. 11/02 (dpv11)
==== ercm09/emas-2900/b_lmtim.txt ====
c gen_lmtims,temp
imp11 temp
link11
temp#rel
i77perm
.name lmti
.stack 2000
.streams 1
.end
lmtimy
list lmtimy,.fep72
alist11 temp/.lp23
==== ercm09/emas-2900/ednet1184.txt ====
{{circle(10,26,0.75)}}
{{INLABEL(.2,"N1")}}
{{circle(10,24,0.75)}}
{{INLABEL(.2,"N6")}}
{{circle(10,21,1)}}
{{circle(10,14,3)}}
{{circle(10,4,3)}}
{{circle(24,10.5,0.5)}}
{{circle(24,9.5,0.5)}}
{{circle(24,8.5,0.5)}}
{{circle(24,2.5,0.5)}}
{{circle(29,14,1.5)}}
{{circle(7,17.6,0)}}
{{circle(15.4,17.6,0)}}
{{circle(17.8,17.6,0)}}
{{circle(20.2,17.6,0)}}
{{circle(22.6,17.6,0)}}
{{circle(25,17.6,0)}}
{{circle(24,16.5,0)}}
{{circle(13,1.4,0)}}
{{circle(15.4,1.4,0)}}
==== ercm09/emas-2900/erteicl_blog7s.txt ====
!
!
! BLOGY BLOGY BLOGY BLOGY BLOGY BLOGY BLOGY BLOGY BLOGY BLOGY BLOGY BLOGY
! BLOGY BLOGY BLOGY BLOGY BLOGY BLOGY BLOGY BLOGY BLOGY BLOGY BLOGY BLOGY
!
!
!
%CONTROL K'001001'
!
!
%BEGIN
!
!
!
!G.J.B. // J.C.A. STARTED 10:11:76
! ??? LAST UPDATE 14:3:79 10:30 - FILE BLOG6S
! FOR ERTE MK. 3.2 UPTO 128 USERS
! FOR CS1BM STANDARD COMMANDS
! LINES COMMENTED OUT WITH !@@ ARE CANDIDATES FOR CHANGE FOR F1 AND MK 3
==== ercm09/emas-2900/ednet1186.txt ====
{{circle(26,11.5,.5)}}
{{INLABEL(.14,"Fe3")}}
{{circle(9.5,15,1.5);inlabel(.2,"TelePAC@b15003000")}}
{{join(c1,c2)}}
{{circle(8.2,11.3,1.3);inlabel(.175,"TelePAC 3@b15004000")}}
{{circle(13,21.7,2);inlabel(.3,"KB-CPSE@bGEC 4190@b")}}
{{inlabel(.14,"@B@B@b@b000015000000")}}
{{circle(13,4,2);inlabel(.3,"AT-CPSE@bGEC 4190@b")}}
{{inlabel(.14,"@B@B@b@b000016000000")}}
{{CIRCLE(8.5,18,1.25);inlabel(.175,"TelePAC 2@b15005000")}}
{{CIRCLE(26,10.5,0.5);inlabel(.14,"Fe1")}}
{{CIRCLE(26,9.5,0.5);inlabel(.14,"Fe2")}}
{{CIRCLE(26,3.8,0.5);inlabel(.14,"Fe2")}}
{{CIRCLE(32.5,21.7,1.5);INLABEL(.14,"JANET@bPSE")}}
{{CIRCLE(26,7.3,.5);inlabel(.14,"Fe2")}}
{{circle(12.75,24.8,.1);fill(c12)}}
{{circle(14.75,24.8,.1);fill(c13)}}
{{circle(16.75,24.8,.1);fill(c14)}}
{{circle(20.75,25.2,0)}}
{{circle(6.75,25.2,0)}}
{{CIRCLE(6.75,1.4,0)}}
==== ercm09/emas-2900/docum_dsydesc2.txt ====
$A MARK=2
$A TAB=5, 10, 15
$A JUST=1; LINE=69; PAGE=54; TOP=5; BOTTOM=7
$A NLS=1
$L2CM
DESCRIPTION OF DEIMOS
AN OPERATING SYSTEM FOR PDP 11S
$B3
%@DESIGN AIMS
$P1 .DEIMOS WAS DESIGNED FOR OPERATION IN A MEDIUM
SIZED .PDP 11. @AT LEAST 16K WORDS OF CORE, A MEMORY MANAGEMENT UNIT,
A DISC OR SIMILAR FAST MASS STORAGE DEVICE, A TERMINAL AND A CLOCK ARE
REQUIRED.
$P1 @THE SYSTEM WAS DESIGNED WITH SIX MAIN AIMS:
$A INDENT=1
$B1
%@RUNNING %USER %PROGRAMS
$P0 @THE SYSTEM IS DESIGNED TO RUN GENERAL USER
PROGRAMS. @NORMALLY,
ABOUT TWENTY SIMULTANEOUS PROGRAMS ARE SUPPORTED,
BUT THIS FIGURE IS A PARAMETER AT SYSTEM
==== ercm09/emas-2900/dqs12e.txt ====
! FILE 'FEP_DQS12E'
!**************
!* DQS12E *
!*DA:14.APR.80*
!**************
%CONTROL K'100001'; ! 'SYSTEM' PROGRAM AND
! TRUSTED PROG
%RECORDFORMAT PARF(%INTEGER TYPE, ADDRESS, LEN)
%EXTERNALROUTINE DQS11E(%RECORD (PARF) %NAME P)
%SYSTEMROUTINESPEC MAPHWR(%INTEGER SEG)
%SYSTEMINTEGERFNSPEC GETID
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMINTEGERFNSPEC MAP ABS(%INTEGER ADR, LEN, REQ ID)
%RECORDFORMAT PF(%BYTEINTEGER SER, REPLY, %INTEGER A1, A2, A3)
==== ercm09/emas-2900/node_dqs12e.txt ====
! FILE 'FEP_DQS12E'
!**************
!* DQS12E *
!*DA:04.JUN.80*
!**************
%CONTROL K'100001'; ! 'SYSTEM' PROGRAM AND
! TRUSTED PROG
%RECORDFORMAT PARF(%INTEGER TYPE, ADDRESS, LEN)
%EXTERNALROUTINE DQS11E(%RECORD (PARF) %NAME P)
%SYSTEMROUTINESPEC MAPHWR(%INTEGER SEG)
%SYSTEMINTEGERFNSPEC GETID
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMINTEGERFNSPEC MAP ABS(%INTEGER ADR, LEN, REQ ID)
%RECORDFORMAT PF(%BYTEINTEGER SER, REPLY, %INTEGER A1, A2, A3)
==== ercm09/emas-2900/junk.txt ====
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
17 20 21 0 24 6 0 18 30 0 2 0 0 0 0 0 0 0 0 406 1124 755
17 20 21 0 28 2 0 18 30 0 2 0 0 0 0 0 0 0 0 434 1268 755
16 20 23 0 30 6 0 18 30 0 2 4 0 0 0 0 0 0 0 316 1252 755
19 20 21 0 24 2 0 20 30 0 0 0 0 0 0 0 0 0 0 276 1652 755
20 20 20 0 24 4 0 16 30 0 0 0 0 0 0 0 0 0 0 302 1884 755
21 20 19 0 30 2 0 18 30 0 0 0 0 0 0 0 4 0 0 220 1844 755
22 20 19 0 26 2 0 18 30 0 0 0 0 0 0 0 0 0 0 256 1968 755
21 20 19 0 26 2 0 22 30 0 2 0 0 0 0 0 0 0 0 286 1910 755
19 20 18 0 26 2 0 18 30 0 0 0 0 0 0 0 0 0 0 242 1804 755
15 20 17 0 26 2 0 18 30 0 0 0 0 0 0 0 0 0 0 0 1414 755
15 20 19 0 38 2 0 20 30 0 4 2 0 0 0 0 0 0 0 96 1358 755
18 20 21 0 30 4 0 18 30 0 2 2 0 0 0 0 0 0 0 218 1610 755
17 20 21 0 36 2 0 18 30 0 2 0 0 0 0 0 0 0 0 228 1512 755
19 20 20 0 32 4 0 18 32 0 4 2 0 0 0 0 0 0 0 424 1482 755
19 21 21 0 26 6 0 18 30 0 0 4 0 0 0 0 0 0 0 292 1608 755
14 21 21 0 26 6 0 18 32 0 0 2 0 0 0 0 0 0 0 242 1162 755
15 21 19 0 28 6 0 20 30 0 0 0 0 0 0 0 0 0 0 236 1352 755
21 21 20 0 26 4 0 18 38 0 0 2 0 0 0 0 0 0 0 214 1844 755
17 21 20 0 30 4 0 18 60 0 2 0 0 0 0 0 0 0 0 300 1374 755
==== ercm09/emas-2900/ring_rolles.txt ====
! file 'rolls'
!**********************
!* rolles/rolley *
!* date: 29.may.81 *
!* ring vsn *
!*********************
%conststring (7) vsn = "vsn001b"
!! stack = 300, streams = 1
%control 1
%include "deimosperm"
%recordformat xf(%byteinteger unit,fsys,%byteintegerarray fname(0:5))
%begin
%owninteger mon = 0
%recordformat rjef(%byteintegerarray data(0:239))
%recordformat nsi1f(%integer st, ds, rc, tc, uflag, %c
%record(rjef) rje)
==== ercm09/emas-2900/pclocks.txt ====
! PROGRAMMABLE CLOCK PROGRAM
! DATE: 5.MAR.81
%CONTROL K'100001'
%PERMROUTINESPEC SVC(%INTEGER EP, R0, R1)
%PERMINTEGERMAPSPEC INTEGER
%PERMBYTEINTEGERMAPSPEC BYTEINTEGER
%PERMINTEGERFNSPEC ADDR
%PERMINTEGERFNSPEC ACC
%BEGIN
%SYSTEMROUTINESPEC MAPHWR(%INTEGER SEG)
%SYSTEMROUTINESPEC LINKIN(%INTEGER NO)
%CONSTBYTEINTEGERNAME INT = K'160060'
%RECORDFORMAT CLOCKF(%INTEGER STATUS, DATA)
%CONSTRECORD (CLOCKF) %NAME CLOCK = K'112540'; ! IN SEG 4
%RECORDFORMAT PF(%BYTEINTEGER SER, REPLY, %INTEGER A, B, C)
%RECORD (PF) P
==== ercm09/emas-2900/newsys_moth77.txt ====
!************
!* moth6s *
!* 14.jul.81*
!************
%control x'4001'
%include "b_deimosspecs"
%begin
%recordformat pf(%byteinteger service, reply, %integer a1, a2, a3)
%record (pf)p
%constintegername sr0 == k'117572'
! indexed into seg 4
%constintegername sr2 == k'117576'
%routinespec octal(%integer n)
==== ercm09/emas-2900/fspec2.txt ====
$a device = x2700
$d3 "COMPMODROMAN11"
$d4 "COMPMODITALIC11"
$3
$a bold='~'
$a tab = 1,3,10,10,55,77
$a just=1
$a wunder='%'
$a indent = 0
$4
Checklist for Shortlisted Suppliers $3
$b0$t4 H/W & S/W outline of switch systems, with details as necessary
$b0$t4 Conformance to current PSE specifications
$b0$t4 Conformance to X.25(1984), particuarily OSI CONS (ISO DP8878)
$b0$t4 packet switch rates & meaning
$b0$t4 Cost variation vs throughput
$b0$t4 Cost per conection
$b0$t4 Limits on no of connections
$b0$t4 Speed range & type of interface + details of high speed i/fs
$b0$t4 Management options for multiple switch networks
$b0$t4 - remote operation, autonnomous control etc
==== ercm09/emas-2900/fullscreen.txt ====
@heading[Full Screen Services]
The work of the 'Full Screen Services' group is still at a very early stage,
consisting of exchanges by letter.
A meeting of the group will be
held during the Networkshop in Copenhagen.
There were responses from six countries (including the UK) to the original
request for information and a number of points have arisen from the responses.
Currently there is very little full screen activity in use
across national networks. There is some use across local networks
although this
tends to be very specific, ie just for Dec VT100 type terminals or IBM 3270
terminals. Both the DFN and the UK Academic Community use Triple X
(X.28, X.29 and X.3) to provide such services although it is recognised that
Triple X is not ideally suited to provide such services both from the lack
of facilities in the protocol to provide support and from the significant
cost and performance penalties from running in modes which require single
character packets to be transmitted through the network with character
echo being provided from the host end.
==== ercm09/emas-2900/b_fsys78.txt ====
imp11 sys_fsys78/fsys78#rel,l
link11
fsys78#rel
i77perm
.stack 300
.streams 0
.end
fsys78y
alist11 sys_fsys78,fsys78#rel/l2
list l2,.lp23
==== ercm09/emas-2900/b_det.txt ====
out=file
outname=detout
name=what a drag
.end
==== ercm09/emas-2900/b_nbsp.txt ====
DIMP11 NBSP9S
link11 /nbsp
nbsp9s
.stack 1000
.streams 1
.codeseg 1
.stackseg 6
.end
nbsp9s
destroy nbsp9y
rename nbsp9s#abs,nbsp9y
LIST NBSP9Y,.BPP155
==== ercm09/emas-2900/readme.txt ====
Using the PAD
% PAD <address>
then ctrl+p A to wake it up again
PAD> s <filname> to start logging
PAD> dfwt 126 to set forwarding condition
PAD> p back to <address>
PAD> CLR to get out & stop logging
hhcp <filename> emas:<emas-filename> to send to eams
autgorisation:ERCM09
PASS: etc
==== ercm09/emas-2900/b_snoop.txt ====
imp11 snoops/,l
link11
snoops#rel
i77perm
.stack 1000
.streams 0
.end
snoopy
==== ercm09/emas-2900/b_nbss.txt ====
DIMP11 nbss9S
link11 /nbss
nbss9s
.stack 1000
.streams 1
.codeseg 1
.stackseg 6
.end
nbss9s
destroy nbss9y
rename nbss9s#abs,nbss9y
==== ercm09/emas-2900/msrdoc.txt ====
Operation of the Mark Sense Reader.
----------------------------------
There have been some minor problems with this device and this note
is intended to clarify the operating procedures. It supercedes the note
dated 13 July 1981.
1. Power on the reader and set the appropriate switches before loading
the software.
2. The basic device driver is included in the IPL load, so only the
spooler reader should be loaded -
LOAD MSRD
Then spool or connect the reader to the required host -
SPO(CON) MSR/host
Note that only EMAS 2900 JCL is catered for, so host should be either
VWT or XWT. When the first card is detected, the user supplied
USERNAME, PASSWORD and FILENAME are requested on the video. The remainder
of the deck is then read in. To close the file -
EOF MSR
==== ercm09/emas-2900/grakb.txt ====
easygraph
title "MTBF - KB 4190 - 3 month rolling average"
xaxis 12,"Month - Jan 84 to Nov 85"
xformat 3,0
xscale 0,1
yaxis 12,"Hours MTBF"
yformat 3,0
yscale 0,100
flatnumber
linetype line+points
symbol square
data
1 366
2 439
3 274
4 313
5 183 6 183
7 219
8 274
9 274
10 244
==== ercm09/emas-2900/ftu.txt ====
THIS IS a file
==== ercm09/emas-2900/b_ftpring.txt ====
PREP fep_FTP1S,FTP1S#IMP,R,E,CLEAN
IMP11 FTP1S#IMP/,L
LINK11
FTP1S#REL
I77PERM
.STACK 1400
.STREAMS 1
.NAME FTPS
.END
FTP1EY
==== ercm09/emas-2900/tu58_suptu3.txt ====
DEIMOS VSN 9.6T 23.DEC.80 (TU58 VERSION)
3500
DVTUY N 0
SUP33 60002 0
PERM2Y 60006 0
BTT6Y 60012 150
TU582Y 60016 300
FSYTUY 60022 300
LOAD7Y 60026 220
CLI1Y 60032 100
MOTH6Y 60036 50
END
-7 330 RING RECEIVE 764040
-6 334
-13 270 AM1 INTERFACE 775170
-14 274
-13 160 AM1 #2 775160
-14 164
-13 170
-14 174
-20 364 PARR INTERFACE
==== ercm09/emas-2900/docum_mmanual.txt ====
$A TAB=5, 10; CAPO=0; CAPSHO=0; INVERT=0; PAGENO=1
$A JUST=1; LINE=76; PAGE=57; TOP=3; BOTTOM=4; MARK=2
$B20
$L1CM
USER MANUAL FOR MUSS11
$B2
$L1CM
B. GILMORE
$L1CM
JUNE 1975
$A INDENT=1
$A INVERT=1
$N
$L1CUM
CONTENTS
$B6
$A INDENT=1
.TITLE $T6 .PAGE
$B0 @GENERAL FEATURES $T6 3
$B0 @COMPILING A PROGRAM. $T6 4
$B0 @RUNNING A PROGRAM. $T6 5
==== ercm09/emas-2900/tu58_fsytus.txt ====
! FILE 'SYS_FSYSTU582S'
!******************************
!* FILE SYSTEM HANDLER *
!* FSYS1S/FSYS1Y *
!* DATE: 22.DEC.80 *
!* TU58 AS MAIN DISC *
!******************************
!*W.S.C. 25TH AUGUST 1976
!*B.G. 27.MAR.78
!*THIS HANDLER IS THE FILE SYSTEM UTILITY TO REPLACE THE
!*EXISTING ONE IN DEIMOS TO PERMIT A FILE SYSTEM TO BE
!*CREATED ON THE AMPEX 9500 DISC AS WELL AS THE RK05'S.
!*IT IS A CONCEPTUAL COPY OF THE RK05 FILE SYSTEM HANDLER
!*EXCEPT THAT A BUFFER POOL IS USED FOR BLOCK DESCRIPTORS
!*AND DIRECTORY BLOCKS.
!*THE CODE IS SHARED BY 3 SYSTEM SLOTS,4 FOR THE RK05'S,
==== ercm09/emas-2900/b_parrf.txt ====
imp11 parr4fs
link11
parr4fs#rel
i77perm
.stack 400
.streams 0
.end
parr4fy
list parr4fy,.bpp155
==== ercm09/emas-2900/tsbsp_sttext.txt ====
FREE WT BUF WT NS WT BUF NS WT ACCN WT ACCND
GOT BUFFER * SEND LOOKUP * - * *
WT NS FREE
NS REPLY * * NS MESS - * *
WT ACCN FREE
DISCI * DISCI RESPONSE DISCI RESPONSE * DISCI WT ACCN *
WT BUF NS WT BUF NS WT ACCND
OPENACKN - - - - PROCESS OPENACK D PROCESS OPENACK
DATA WT DISCN
RESETI * * * * * *
RESETN - - - - - -
==== ercm09/emas-2900/prob2988.txt ====
Problem in the Interface between the 2988 and the FEPs
EMAS sends messages to the FEPs in the form:-
<write control> <stream id> <max transfer length> <limit>
followed by:-
<write> <max bytes of data> <limit>
where <write control> <write> and <limit> are all 'control' characters,
ie the ninth bit is set to distinguish them from data.
The case of <stream id> = -2 is special in that bytes of data are
sent from the 2988 in multiples of 24 bytes up to a maximum of 192 bytes.
In the case that causes the current problems either the 4 byte header
packet (<stream id> <transfer size>) is not followed by a <limit> or
the <stream id> = -2 data bytes are not terminated by a <limit>, the FEP
will then read up to 200 bytes of data before detecting an error.
In all other cases a missing <limit> will not be noticed by the FEP as
the FEP itself decides how many data bytes to accept.
Brian Gilmore
==== ercm09/emas-2900/nrsl.txt ====
.nf
.H1 Forward Lookup 16 OCT 85
.H1 Context X29 Subnetwork JANET
CERN.GEC-A CERN.GEC-A 000009001002
CERN.IBM CERN.IBM 0000090030020
CERN.INDEX CERN.INDEX 0000090030010
CERN.NDDEV CERN.NDDEV 0000090030051
CERN.VXALBM CERN.VXALBM 0000090030042
CERN.VXALFB CERN.VXALFB 0000090030031
CERN.VXCRNA CERN.VXCRNA 0000090030053
CERN.VXDEV CERN.VXDEV 0000090030043
CERN.VXGIFT CERN.VXGIFT 0000090030035
CERN.VXL3 CERN.VXL3 0000090030033
CERN.VXMERL CERN.VXMERL 0000090030044
CERN.VXOMEG CERN.VXOMEG 0000090030041
DESY.GEC-A DESY.GEC-A 000009501000
DESY.TASSO DESY.VB 000009501001
UK.AC.ABERDEEN UK.AC.ABDN 00000700900104 Relay:CALL PARAMETER IS 7
==== ercm09/emas-2900/erteicl_sivcs9.txt ====
%CONTROL K'100001'
!
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! SIMPLE INTERACTIVE VIDEO CLUSTER
!
! DATE OF FIRST CODING 10TH JAN 1980
!
! LAST UPDATED 12TH MAR 1980 FILE SIVCS9
!
! STACK=3000, STREAMS=1
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
%BEGIN
!
%SYSTEMROUTINESPEC LINKIN(%INTEGER SERVICE)
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
!%SYSTEMROUTINESPEC SVC(%INTEGER A,B,C)
!
==== ercm09/emas-2900/response_n80t80dec21.txt ====
Node = 80, Term = 80 - Time: 12.00 - 17.00 21.dec.81
0
0
0
0
75
756
1572
1243
949
811
614
480
412
293
182
159
117
83
44
55
==== ercm09/emas-2900/kents1280_eam7.txt ====
! FILE 'FEP_EAM7'
!********************************
!* EMAS-2900 FEP AM1 HANDLER *
!* FILE: EAM7 *
!* DATE: 18.SEP.80 10.00 *
!* MODIFIED FOR PCB INTERFACE *
!********************************
!! STACK SIZE = 300
%OWNINTEGER FEP NO = 0
%RECORDFORMAT DMF(%INTEGER I)
%CONSTRECORD (DMF) %NAME NULL = 0
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMROUTINESPEC MAP HWR(%INTEGER SEG)
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%CONTROL K'100001'
==== ercm09/emas-2900/ibmdoc_ftpqmemo.txt ====
FTPQ SCRIPT
IBM (CMS) as an FTP 'Q' end
This file describes the FTP parameters that must be passed
to the IBM (CMS) FTP when using it as a 'Q' end. It is
available as a HELP file (named FTPQ) and as a SCRIPT file.
Included is a description of how to retrieve output from
jobs run in any of the IBM batch systems. Strictly
speaking, output retrieval is an automated 'P' end function,
but the full details are given here as these facilities will
typically be needed in conjunction with jobs which have been
input via the Q-end FTP.
There is a separate HELP file for normal 'P' end usage.
==== ercm09/emas-2900/sys_sbldrk3s.txt ====
!**********
!* SBLD13S *
!* NB: NOT SAME AS BPL SBLD1S !!!!
!* DATE: 17.MAR.80 *
!* SUPERVISOR BUILD PROGRAM *
!*************************************
%PERMROUTINESPEC SVC(%INTEGER EP, %INTEGERNAME P1, %INTEGER P2)
%PERMINTEGERMAPSPEC INTEGER(%INTEGER X)
%PERMBYTEINTEGERMAPSPEC BYTEINTEGER(%INTEGER X)
%PERMINTEGERFNSPEC ADDR(%INTEGERNAME X)
%PERMINTEGERFNSPEC ACC
%CONSTINTEGERNAME DUMMY = 0
%CONSTINTEGERNAME NULLI = 0
%BEGIN
!* STK = 76000, STRM = 3
==== ercm09/emas-2900/jntprop.txt ====
@b[Edinburgh Regional Computing Centre]
@heading[Proposal to the JNT for a
X.25 Packet Switch Survey]
@centre[Brian Gilmore
June 1985]
The ERCC proposes to do a survey of X.25 packet switch suppliers. The survey
will be in two stages.
@b[Stage 1]
In Stage 1, a general survey will be done of at least 15 X.25 packet switch
suppliers with the aim of establishing the cost, throughput, connectivity and
management facilites of the various products. The aim of the survey will
be to produce a short list of a few suppliers for Stage 2. At the end of
this stage an interim report will be provided to the JNT for their approval
of the short list.
==== ercm09/emas-2900/networks87.txt ====
@make[article]
@device[x2700]
@style[spacing 1]
@modify[hd2,facecode=k]
@begin[text,topmargin=+1.3inches,leftmargin=+0.45inches,rightmargin=+0.6inches]
blank
@newpage
@section[The Need for a Virtual Terminal Specification]
Terminals are normally connected to the system they are used on via a
direct connection, a connection through a device such as a circuit
switch which behaves as if the terminal was directly connected, or
through a network, local or wide area. The characteristic behaviour of
a terminal will differ depending on the access route and the
requirements for driving it will also differ.
The model matched by most computer manufacturers in the past was that
of a simple, hard copy terminal that printed out a line at a time then
moved one line down the paper. Although most terminals are now based
on VDUs, the basic method of handling them has remained the same, the
output is scrolled up the screen one line at a time. The consequence
==== ercm09/emas-2900/netnotes.txt ====
$a device=x2700
$d1 :cosmos12b:
$d2 :cosmos14:
$a tab=1",3.5",4.5",4.8",5.7"
$a left=5
$5
$l0
Intro
Nature of Edinburgh University
Data Network - slide 1
Based on 3 x gec packet switches (CPSEs) - central circles
Voice Network - slide 2
Early exposure to PABX & LANs
ICL/DTI - Investigate Interconnection
Project Diagram - slide 3
+ University in progress of procuring new PABXs
Potential Advantages - slide 4
==== ercm09/emas-2900/surveys.txt ====
%EXTERNALROUTINE SURVEY(%STRING (255) S)
!!
%CONSTINTEGER NDATE = 7, JUNCTS = 17
%CONSTINTEGER SP1 = 7, SP2 = 12, SP3 = 13, SP4=16
!!
%INTEGERARRAY X,Y,Z,P(1:NDATE,1:JUNCTS)
%STRING (50) %ARRAY NAMES(1:JUNCTS)
!!
%INTEGER I, J
!!
%CONSTSTRING (10) %ARRAY DATES(1:NDATE) = %C
"10 MAY 78", "12 MAY 78", "20 JUN 78", "28 SEP 78",
"05 OCT 78", "14 FEB 79", "27 JUN 79"
!!
%EXTERNALROUTINESPEC PROMPT(%STRING(18) S)
%EXTERNALROUTINESPEC DEFINE(%STRING (255) S)
!!
%STRING (255) T,U
!!
%ROUTINE READ LINE(%STRINGNAME S)
%INTEGER I
==== ercm09/emas-2900/docum_speeds.txt ====
$L1CM
COMPARISON OF SOME PDP11 PROCESSORS USING A PDP11/34 AS A BASE
$A TAB = 20,50,60
$B3 @TESTS WERE RUN ON @RELEASE 7 OF @DEIMOS USING THE STANDARD
EXTENDED INSTRUCTION SET EXCEPT WHERE NOTED.
$B3
11/34 $T+1 @NO MUL/DIV $T+1 $C+1 84.4$%
$B0 11/34 $T+1 @REL 6 @SUPR. $T+1 $C+1 89.2$%
$B0 11/34 $T+1 @STANDARD $T+1 100$%
$B1 11/40 $T+1 @NO MUL/DIV $T+1 105.4$%
$B0 11/40 $T+2 109.1$%
$B1 11/45 $T+1 @NO MUL/DIV $T+1 128.8$%
$B0 11/45 $T+2 148.1$%
$B6
$L1CM
DISC SPEEDS 1) RK05
$B2 @NO OF @SECTOR @INCREMENTS $T+1 @TRANSFERS/SEC
$B0 $C+8 0 $T+1 $C+6 25
$B0 $C+8 1 $T+1 $C+6 23
$B0 $C+8 2 $T+1 $C+5 103
$B0 $C+8 3 $T+1 $C+6 68
==== ercm09/emas-2900/log11jan83.txt ====
11/01/83 01:01:00 N009T000 6 20 156 156 17 0 75 215 32 4 7 9 5
11/01/83 01:01:00 N006T000 6 13 156 156 34 9 75 75 32 4 7 9 5
11/01/83 01:01:00 N006T000 6 13 156 156 34 90 90 52 32 5 7 9 5
11/01/83 01:01:00 N006T000 6 13 156 156 34 78 78 80 32 5 15 11 10
11/01/83 01:01:00 N009T000 6 20 156 156 21 90 90 175 32 5 7 9 5
11/01/83 01:01:00 N009T000 6 20 156 156 5 78 78 222 32 5 15 11 10
11/01/83 01:01:20 N006T000 3 38 3 189 6585 11665 6797 18566 2 2043 7334 4057 17627 28587 834 1584 28735 6792 288 19611 274 140 34
11/01/83 01:01:20 N009T000 6 2 80 80 20 6 23 9 32 266 0 30 28
11/01/83 01:01:20 N006T000 6 34 80 80 32 0 23 104 32 266 0 30 28
11/01/83 01:01:25 N009T000 6 20 80 80 21 90 90 254 32 23 0 4 2
11/01/83 01:01:25 N006T000 6 18 80 80 34 90 90 98 32 23 0 4 2
11/01/83 01:01:30 N009T000 6 20 80 80 21 90 90 48 32 23 0 4 2
11/01/83 01:01:30 N006T000 6 18 80 80 34 90 90 132 32 23 0 4 2
11/01/83 01:01:55 N009T000 6 20 156 156 61 72 5 118 32 7 14 12 11
11/01/83 01:01:55 N006T000 6 13 156 156 34 72 5 192 32 7 14 12 11
11/01/83 01:02:25 N009T000 6 20 156 156 61 72 3 188 32 4 7 9 8
11/01/83 01:02:25 N006T000 6 13 156 156 34 72 3 238 32 4 7 9 8
11/01/83 01:02:30 N009T000 6 20 156 156 2 0 182 191 32 4 7 9 5
11/01/83 01:02:30 N006T000 6 13 156 156 34 9 182 240 32 4 7 9 5
11/01/83 01:02:30 N006T000 6 13 156 156 35 0 171 248 32 4 7 9 5
11/01/83 01:02:30 N009T000 6 20 156 156 3 0 180 212 32 4 7 9 5
==== ercm09/emas-2900/sys_dvrubshs.txt ====
;FILE 'SYS_DVRUB'
;**************************************
;* DVRUB *
;* INTERFACE BETWEEN HARDWARE AND IMP*
;* DATE: 22.dec.82 *
;**************************************
PS=177776; PROCESSOR STATUS WORD
IDLEST=-1; SUPERVISOR IDLE FLAG
INTVAL=40; DEDICATED LOCATION FOR INTERRUPT NUMBER
ALARMF=44; DITTO - FOR CLOCK
PSECT=46; DITTO - CURRENT PSECT
LASTPS = 54
PXPT = 56
UPAR=177640
UPDR=177600
UPAR0=40; INDEC INTO PSECT
==== ercm09/emas-2900/newsys_sinnew.txt ====
!***************************
!* sin010 *
!* date: 22.jun.82 *
!* supervisor initialiser *
!* supervisor release 10 *
!***************************
%control X'4001'
%recordformat dummy(%integer x)
%constrecord (*) %name null == 0
%constinteger initial sp disp = k'1530'; ! position in i/o seg of initial
! sp - new compiler - may change !!!!!!!!!!!!!!!!!
%constinteger task low limit = 30
%constinteger task user limit = 35
%constinteger task limit = 70
%constinteger free cells = 80
%constinteger no of services = 50
%constinteger frag no = 15
%constinteger psect length = 52
%constinteger svc limit = 23
==== ercm09/emas-2900/inc_terms.txt ====
!
! DEFINES TERMINAL TYPES AND MAX NO OF TERMINALS
!
%CONSTINTEGER TCPTYPE=1
%CONSTINTEGER NODTYPE=2
%CONSTINTEGER FEPTYPE=3
%CONSTINTEGER MAXTERMS=47
%CONSTINTEGER HLIM=7; !HOST RECORDS FOR MULTIPLE CONNS
%CONSTINTEGER NHOSTS=7; !ACTUAL DISTINCT HOSTS
%CONSTBYTEINTEGERARRAY NH(1:NHOSTS)=72,80,21,90,78,7,155
%CONSTBYTEINTEGERARRAY NT(1:NHOSTS)=72,80,21,90,78,9,155
%CONSTSTRING(6)%ARRAY HN(1:NHOSTS)= %C
" 2972 "," 2980 "," PSSE ","FSTORE","CS-VAX"," 2976 "," INFO "
%ENDOFFILE
==== ercm09/emas-2900/hostessipss.txt ====
Welcome to HOSTESS, British Telecom's information service.
Enter carriage return for assistance on how to proceed
or BYE to clear the call.
Document ? ipssSection ? all
COUNTRIES CONNECTED TO IPSS
1.AUSTRALIA AUSTPAC
UK TO AUSTRALIA
DATA NETWORK IDENTIFICATION CODE 5052
CALL CHARGES: POUNDS STERLING
==== ercm09/emas-2900/b_temp.txt ====
imp11 temp
link11
temp#rel
i77perm
.stack 62000
.streams 0
.name stte
.end
tempy
list tempy,.bpp6
==== ercm09/emas-2900/fred.txt ====
%BEGIN
%EXTERNALROUTINESPEC TERMINATE
%EXTERNALROUTINESPEC PROMPT(%STRING (17) S)
%OWNSTRING(1) N="A"
%INTEGER I,J,K
CHARNO(N,1)=0
PROMPT(N)
%CYCLE
READCH(I)
PRINTCH(I)
TERMINATE
%REPEAT
%ENDOFPROGRAM
==== ercm09/emas-2900/b_xxxbig.txt ====
prep x25_xxx3s,xxx3s#imp,s,clean,b
imp11 xxx3s#imp/xxx3s#rel,l
link11
xxx3s#rel
i77perm
.stack 1400
.streams 1
.name xxx
.end
xxx3y
alist11 xxx3s#imp,xxx3s#rel/.lp23
==== ercm09/emas-2900/erteicl_cputs.txt ====
! FILE 'SYS_CPUTS'
! CPUT CPU UTILISATION MODULE
! W.S.C. 21ST MARCH
! LAST UPDATED 30TH MARCH 1977 10:40
! THIS MODULE RUNS AT THE LOWEST PRIORITY,MAINTAINING A
!COUNT.ON A TIME INTERRUPT IT COMPARES THE COUNT WITH A
!PREDETERMINED TOTALY IDLE VALUE TO CALCULATE THE APPROX.
! % CPU IDLE TIME.
! INT T FOR 10SEC INTERVAL
! INT H FOR 30SEC INTERVAL
! INT M FOR 60SEC INTERVAL
%BEGIN
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%PERMINTEGERFNSPEC SVC(%INTEGER EP,P1,P2)
%RECORDFORMAT PF(%BYTEINTEGER SER,REPLY,%INTEGER A1,A2,A3)
==== ercm09/emas-2900/rats.txt ====
{e} %externalroutine rats(%string (255) s)
!d! %begin
%externallongrealfnspec cputime
%externalrealfnspec random(%integername i, %integer n)
%externalstring (255) %fnspec time
%externalroutinespec terminate
%routinespec engage random(%integer n)
%routinespec pepos(%integer x, y)
%%integer %fn %spec test door
%externalroutinespec prompt(%string (17) s)
%ownbyteintegerarray door(10:66) =
0, 2, 3, 4, 1, 1, 1, 0, 0, 0,
0, 2, 3, 4, 5, 1, 1, 0, 0, 0,
0, 6, 3, 7, 1, 1, 1, 0, 0, 0,
0, 6, 3, 8, 1, 1, 1, 0, 0, 0,
0, 6, 3, 1, 1, 1, 1, 0, 0, 0,
0, 7, 3, 1, 1, 1, 1
! 0 - error, 1 - door is open
==== ercm09/emas-2900/b_dbug.txt ====
dimp11 gen_dbug7/dbug7#rel
link11 /dbug7
dbug7
.stack 2000
.streams 1
.stackseg 6
.name dbug
.end
dbug7
c dbug7#abs,dbug7y
==== ercm09/emas-2900/b_lmxxxs.txt ====
new
prep x25_lmxots,lmxots#imp,x,clean
dimp11 lmxots#imp
link11
lmxots#rel
.stack 1000
.streams 1
.stackseg 6
.name lmxx
.end
lmxxxy
destroy lmxxxy
rename lmxxxy#abs,lmxxxy
old
==== ercm09/emas-2900/paddoc.txt ====
$a invert=0; line=65; left=6
$l1um
PAD Summary
$p1The following contains a 'potted' summary of the JNT PAD facilities
most often used. This collection is by no means complete
and there is no substitute for examination of the JNT PAD Terminal Users' Guide.
Nor are the more 'exotic' features and values of the various
parameters which can be set, described.
However, the following should be enough to get you started.
$b1%Introduce yourself to the PAD by typing CR (perhaps repeatedly so that
the PAD can ascertain your terminal line speed.
$b1%Call the host of your choice by typing 'call <hostname>' to the
PAD> prompt e$.g$.
$l3m
PAD>call 2972
$b1%Help is available by typing 'help' to the PAD> prompt to obtain information
as to what the PAD knows about (address, profile, escape, command)
e$.g$. 'help address' gives all the names of the hosts known to the PAD.
$b1%PAD> prompt can be obtained during an interactive call by pressing
==== ercm09/emas-2900/kents_notes.txt ====
20:6:80
This is the first NSI-less FEP
ITPS7 and RJES8 have been edited to change the record formats from
NSI compatability to BSP form, the record formats have been renamed
to reflect this. GATE has disappeared to be replaced by BSPS and the
new RING has a simpler function. NSIW has been likewise altered to
interface to BSPS. EAM, COMM and BUFF are unchanged.
==== ercm09/emas-2900/inc2_configf.txt ====
! Configuration file for Front ends
! Options used:INC_CONFIGGEN,TEMP,H,CLEAN
!Versions required:
! System Name Accred Nets Procs* Disc Drv Prep
! P PSSE PSSE Yes 2+1 16 6 10 RL01 0 P
! M XGATE XGATE No 1+1 37 20 40 RL01 0 M
! K Kent GATE Yes 1+1 16 6 10 RL02 0 K
! U Kent #2 SGATE Yes 1+2 ?? ?? ?? RK05 0 U
! G Glasgow GGATE No 1+2 16 6 31 RX02 1 G
! F FEP (GATEX) - No +2 60 20 40 - - H
! T XGATE # 2 XGATE2 No 37 20 40 RL01 0 T
! D DGATE DGATE No 30 20 40 - - D
!Disc Configuration Information
!Define first and last user blocks to prevent us overwriting directory
!etc. Ranges for various discs are:
==== ercm09/emas-2900/mx.txt ====
0 10 32 1 16315 17922 2488 3644 502 81
1 11 31 1 13529-27333 2149-19314 18855 147
2 12 16 1-7508-2468-230-20404-6785 332
3 13 21 1 5642-24107 11628-27151 1816 0
4 14 33 1 9025-61-2258-25838 23114 45
5 15 23 1 18666 13541 15442-2154-23567 11843
6 16 28 54 60 3717 72 0 0 0
7 17 46 55 63 3983 62 0 0 0
0 19 31 1 16442 18464 2568 9122 502 81
1 20 31 1 13598-26458 2209-288 19252 147
2 21 16 1-7353-2024-198-11789-6605 332
3 22 22 1 5807-23820 11838-24997 1816 0
4 23 31 1 9345 588-2155-19673 23114 4653
5 24 24 1 19054 14293 15524 7313-23438 29251
6 25 28 52 56 3544 76 0 0 0
7 26 46 50 55 3766 70 0 0 0
0 28 30 1 16568 19003 2642 15069 502 81
1 29 29 1 13635-25407 2296 20021 19651 147
2 30 14 1-7235-1507-46-3509-6447 582
3 31 21 1 5996-23638 11959-23802 1816 0
==== ercm09/emas-2900/b_batch.txt ====
imp11 gen_batchs/batchs#rel
link11
batchs#rel
i77perm
.stack 1000
.streams 2
.end
batchy
==== ercm09/emas-2900/log30nov82.txt ====
30/11/82 00:00:05 N006T000 6 19 156 156 61 72 3 125 32 4 7 9 8
30/11/82 00:00:15 N006T000 6 19 156 156 33 0 181 152 32 4 7 9 5
30/11/82 00:00:20 N009T000 6 16 0 47 5 78 78 190 32 61 167 116 116
30/11/82 00:00:20 N006T000 3 33 6 6 4479 4201 771 7366 398 813 20 24470 2376 10767 627 486 2308 7100 1502 460 716 40 2820
30/11/82 00:00:25 N009T000 6 20 156 156 3 0 180 39 32 4 7 9 5
30/11/82 00:00:25 N006T000 6 19 156 156 34 9 180 180 32 4 7 9 5
30/11/82 00:00:25 N009T000 6 20 156 156 2 0 182 44 32 4 7 9 5
30/11/82 00:00:25 N006T000 6 19 156 156 34 9 182 183 32 4 7 9 5
30/11/82 00:00:35 N006T000 6 19 156 156 61 72 5 209 32 7 14 12 11
30/11/82 00:00:55 N009T000 6 20 156 156 17 0 75 135 32 4 7 9 5
30/11/82 00:00:55 N006T000 6 19 156 156 34 9 75 12 32 4 7 9 5
30/11/82 00:01:15 N009T000 6 20 156 156 5 78 78 185 32 5 14 11 10
30/11/82 00:01:15 N006T000 6 19 156 156 34 78 78 55 32 5 14 11 10
30/11/82 00:01:15 N006T000 6 19 156 156 35 0 171 62 32 4 7 9 5
30/11/82 00:01:30 N009T000 3 25 13 2 866 14189 1211 25820 229 1363 76 21877 2523 10637 949 460 2868 0 0 0 0 0 0
30/11/82 00:01:30 N009T000 9 62 0 0 1 10241 0 0 0 0 0
30/11/82 00:01:30 N009T000 9 15 0 15 83 1579 22415 476 47 14 0
30/11/82 00:01:30 N009T000 5 15 0 15 5 78 78 111 0 68 211 125 125
30/11/82 00:01:30 N009T000 5 15 0 15 17 72 72 127 0 2427 7792 4889 3364
30/11/82 00:01:30 N009T000 5 15 0 15 17 72 72 247 0 17091-4941-30316 24508
30/11/82 00:01:30 N009T000 9 4 0 40 2 448-32555 0 52 2 0
==== ercm09/emas-2900/erteburr_xbm01.txt ====
;**************************************
;* XBM01 *
;* INTERFACE BETWEEN HARDWARE AND IMP*
;* AND LOW LEVEL DUP11 HANDLER *
;* DATE: 07.FEB.80 *
;**************************************
PS=177776; PROCESSOR STATUS WORD
IDLEST=-1; SUPERVISOR IDLE FLAG
INTVAL=40; DEDICATED LOCATION FOR INTERRUPT NUMBER
ALARMF=44; DITTO - FOR CLOCK
PSECT=46; DITTO - CURRENT PSECT
LASTPS = 54
INTINF=56
UPAR=177640
UPDR=177600
UPAR0=40; INDEC INTO PSECT
==== ercm09/emas-2900/sys_dxxxxx.txt ====
;**************************************
;* SYS_DXXXXX *
;* INTERFACE BETWEEN HARDWARE AND IMP*
;* DATE: 06.MAR.82 *
;**************************************
;
; * PREP OPTIONS
; R - RK05 DUMPER
; F - FILESTORE SYSTEM
; N - NODES - EXTENDED INTERRUPTS
; X - RX02 DUMPER
; B - BISYNCH PSEUDO DMA
; H - DUP11 HDLC PSEUDO DMA
; V - LSI HDLC PSEUDO DMA (NB:DPV11 HARDWARE)
;
; NOTE: In order to assemble, the CLEAN option in prep MUST be used
;
#IF N
; FOR SUP40 AND BEYOND - 100 INTERRUPTS - AND EXPANDED DUMP
; AUTOMATIC POWER UP ADDED
#FI
==== ercm09/emas-2900/ring_ringx8s.txt ====
! file 'ringX77s' - for new style ring hardware
!********************************
!* emas-2900 ring interface *
!* handler *
!* file: ring7s *
!* date:13.mar.81 *
!*********************************
!! stk = 300, strm = 1
!nb location k'140016 is used to hold the checksum so that it may
!be accessed from code
%include "deimosperm"
%constrecord (*) %name nil == 0
%begin
==== ercm09/emas-2900/fepb_notes.txt ====
20:6:80
This is the first NSI-less FEP
ITPS7 and RJES8 have been edited to change the record formats from
NSI compatability to BSP form, the record formats have been renamed
to reflect this. GATE has disappeared to be replaced by BSPS and the
new RING has a simpler function. NSIW has been likewise altered to
interface to BSPS. EAM, COMM and BUFF are unchanged.
==== ercm09/emas-2900/dumpgecjb.txt ====
%externalroutine dumpgec(%string(63) s)
%constinteger our exchange = 2
%constinteger scd = 0
%constinteger ecd = 1
%constinteger dcd = 2
%constinteger laustats = 3
%constinteger unitstats = 4
%routinespec dumpaddr(%bytearrayname a, %byte l)
%routinespec writehex(%integer n,d)
!Routine for dumping GEC Network Management logs
!J. butler 20.10.82
%routinespec dat(%integer dat)
%routinespec tod(%integer d)
%externalroutinespec define(%string(63) s)
%externalintegerfnspec smaddr(%integer chan,%integername l)
%externalintegerfnspec exist(%string(63) s)
%integer ina,inl,idunit, idexch,idtype
%string(63) t,u
u = ".out" %and t = s %unless s -> t.(",").u
define("1,".t)
==== ercm09/emas-2900/inc_services.txt ====
!
! SERVICE NUMBERS
!
%CONSTINTEGER GATE SER=16
%CONSTINTEGER ITP SER=28
%CONSTINTEGER BUFFER MANAGER=17
%CONSTINTEGER TIME SER=23
%CONSTINTEGER DISPLAY SER=24
%CONSTINTEGER LOG CONTROL=25
%CONSTINTEGER LOAD SER=5; !????????
%CONSTINTEGER POLL SER=27
%CONSTINTEGER USER SER=26
%CONSTINTEGER LOG SER=12
%CONSTINTEGER TT SER=1
%CONSTINTEGER T2 SER=19
!
%CONSTINTEGER REQUEST BUFFER=0
%CONSTINTEGER RELEASE BUFFER=1
!
! GENERAL VARIABLES
!
==== ercm09/emas-2900/lexicon.txt ====
A/B add-on Amdahl Appleton b.gilmore BG Brian Camtec catch-all CJC CO
Conf cons Copenhagen CPSE CRC CRCs DCE DCEs Dec DEL DFN DIS down-line
DTE DTE/DCE Dynatech E.C.U.C E.R.C.C editing-type EDNET eg ERCC Feb FEPs
GEC Gilmore hoc IBM ie ISO JANET JNT KB kb/s Kilostream LCGN LCGs LCN
LCNs look-up lunchtime micro micros MTBF multi-purpose multi-switch
Multi-user Networkshop NLP Non-immediate non-ISO non-manufacturer
non-volatile non-zero NRS occurence Oct OSI outages oversize PSE PSEs
PSS PSSE re-boot re-booting re-used recognised REJ Req ROM Salford SEEL
SSMP stand-alone SVC SVCs Telefile Telematics TelePAC timescale UK
utilising VT VTP WG XCALL XXX zero-filled
==== ercm09/emas-2900/ringold_itpe8s.txt ====
! FILE 'FEPD_ITPE8S'
!********************************
!* EMAS-2900 FEP ITP SERVER *
!* FILE: ITPE8S/ITPEY *
!* DATE: 13.MAY.81 16.10 *
!********************************
!! STACK SIZE = 500
%SYSTEMROUTINESPEC MAP HWR(%INTEGER SEG)
%PERMROUTINESPEC SVC(%INTEGER EP, R0, R1)
%RECORDFORMAT DMF(%INTEGER I)
%CONSTRECORD (DMF) %NAME NULL = 0
%CONTROL K'100001'
%BEGIN
%CONSTSTRING (7)VSN = 'VSNEA8F'
==== ercm09/emas-2900/node_down4m.txt ====
! file 'down4m'
!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
!
! this program is supposed to call do load with
! argument the physical device handler routine.
! until imp77 allows routines to have routine arguments
! it has been kludged. to change it delete the
! sequence !**** and delete lines containing ;!$$$.
! nb this has not been tested
!**********************************************
!* *
!* down line loader v1.3 *
!* date: 04.feb.82 *
!* *
!* b gilmore march 1980 *
!* w d hay november 1979 *
!* *
!**********************************************
!
! stack = 1000, streams = 1
==== ercm09/emas-2900/mort6.txt ====
%DYNAMICROUTINESPEC DEFINE(%STRING (63)S)
%DYNAMICROUTINESPEC PROMPT(%STRING (15)S)
%EXTERNALROUTINE MORT(%STRING (63)S)
%INTEGER I, J, K, YEAR
%REAL DEPR PA
%REAL HOUSE APPR
%REAL BSOC INT, MONTHLY, CAP REP
%OWNINTEGER TITLE=0
%IF S#'' %START
DEFINE('ST1,'.S)
SELECT OUTPUT(1)
%FINISH
!
!
HOUSE APPR=1.02; ! REAL INCREASE (AFTER
! DEPRECIATION)
!!
==== ercm09/emas-2900/mort7.txt ====
%DYNAMICROUTINESPEC DEFINE(%STRING (63)S)
%DYNAMICROUTINESPEC PROMPT(%STRING (15)S)
%EXTERNALROUTINE MORT(%STRING (63)S)
%INTEGER I, J, K, YEAR
%REAL DEPR PA
%REAL HOUSE APPR
%REAL BSOC INT, MONTHLY, CAP REP
%OWNINTEGER TITLE=0
%IF S#'' %START
DEFINE('ST1,'.S)
SELECT OUTPUT(1)
%FINISH
!
!
HOUSE APPR=1.02; ! REAL INCREASE (AFTER
! DEPRECIATION)
!!
==== ercm09/emas-2900/sys_bdk4s.txt ====
!**********
!* BDK4S *
!**********
%CONTROL K'100001'; ! 'SYSTEM' PROGRAM+MUL+TRUSTED
%PERMINTEGERFNSPEC SVC(%INTEGER EP, P1, P2)
%PERMINTEGERMAPSPEC INTEGER
%PERMBYTEINTEGERMAPSPEC BYTEINTEGER
%PERMINTEGERFNSPEC ADDR
%PERMINTEGERFNSPEC ACC
%BEGIN
%SYSTEMINTEGERFNSPEC GETID
%RECORDFORMAT PF(%BYTEINTEGER SERVICE, REPLY, %INTEGER A1, A2, A3)
%RECORDFORMAT P2F(%INTEGER D)
%RECORDFORMAT DKF(%INTEGER DST, ERR, COMM, WC, ADD, DAR)
%CONSTRECORD (DKF) %NAME DK = K'177400'
==== ercm09/emas-2900/tu58_tu582s.txt ====
!************
!* TU582S *
!*22.DEC.80*
!*DISC 0 VSN*
!************
%CONTROL K'100001'; ! 'SYSTEM' PROGRAM+MUL+TRUSTED
%BEGIN
%SYSTEMINTEGERFNSPEC GETID
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMINTEGERFNSPEC MAP ABS(%INTEGER ADR, LEN, REQ ID)
%PERMINTEGERFNSPEC SVC(%INTEGER EP, R0, R1)
%SYSTEMINTEGERFNSPEC MAP VIRT(%INTEGER WHO, HSEG, MYSEG)
%SYSTEMROUTINESPEC MAPHWR(%INTEGER SEGS)
%RECORDFORMAT PF(%BYTEINTEGER SERVICE, REPLY, %INTEGER A1, A2, A3)
%RECORDFORMAT P2F(%INTEGER D)
%RECORDFORMAT TU58F(%INTEGER RSR, RDB, TSR, TDB)
%CONSTRECORD (TU58F) %NAME TU58 = K'116500'; ! 176500 ON 11/44, 176160
==== ercm09/emas-2900/ringans.txt ====
%EXTERNALROUTINE RINGANS(%STRING (255) S)
%EXTERNALROUTINESPEC DEFINE(%STRING (255) S)
%INTEGER I,J,K,PEAK,PN,NZ,N,X,MAX,SUM,TIME,PEAKI,PNI
%OWNINTEGER TYPE = 0
%REAL Q
%STRING (255) T
%INTEGERARRAY NUM(0:13, 1:1000)
%OWNINTEGERARRAY A(0:13) = 0(14)
!!
%ON %EVENT 9 %START
-> FINISH
%FINISH
!!
%ROUTINE SKIP TO END OF LINE
%INTEGER I
%CYCLE
I = 0
READSYMBOL(I)
==== ercm09/emas-2900/lmeots.txt ====
!**********************
!* LMEOTS/LMEOTY *
!* DATE: 17.SEP.80 *
!*********************
%CONSTSTRING (7) VSN = "VSN001B"
!! STACK = 300, STREAMS = 1
%CONTROL K'100001'
%RECORDFORMAT XF(%BYTEINTEGER UNIT,FSYS,%BYTEINTEGERARRAY FNAME(0:5))
%CONSTRECORD (XF) %NAME NULL = 0
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%BEGIN
%%RECORDFORMAT ITPF(%BYTEINTEGER CNSL,HB1,HB2,LEN, %C
%BYTEINTEGERARRAY DATA(0:127))
%RECORDFORMAT RJEF(%BYTEINTEGERARRAY DATA(0:239))
%RECORDFORMAT NSI1F(%BYTEINTEGER FN,SUFL,ST,SS,FLAG,UFLAG, %C
%RECORD(ITPF) ITP)
%RECORDFORMAT NSI2F(%BYTEINTEGER FN,SUFL,ST,SS,%C
==== ercm09/emas-2900/log031182.txt ====
03/11/82 00:00:05 N006T000 6 33 80 80 32 0 23 239 32 2814 0 283 283
03/11/82 00:00:25 N009T000 6 20 80 80 4 0 40 158 32 1 0 1 1
03/11/82 00:00:25 N006T000 6 33 80 80 34 9 40 124 32 1 0 1 1
03/11/82 00:00:25 N006T000 6 33 80 80 21 0 34 128 32 1 0 1 1
03/11/82 00:00:50 N006T000 6 7 156 156 61 72 9 163 32 4 7 9 8
03/11/82 00:00:50 N009T000 6 20 156 156 3 0 180 174 32 4 7 9 5
03/11/82 00:00:50 N006T000 6 7 156 156 34 9 180 165 32 4 7 9 5
03/11/82 00:01:05 N009T000 6 20 156 156 17 0 75 185 32 4 7 9 5
03/11/82 00:01:05 N006T000 6 7 156 156 34 9 75 195 32 4 7 9 5
03/11/82 00:01:10 N006T000 6 7 156 156 61 72 5 201 32 7 16 12 11
03/11/82 00:01:20 N006T000 3 31 7 61 20158 21866 3853 31430 133 2239 4073 31249 8184 19201 271 1293 11726 9443 183 3351 742 70 10
03/11/82 00:01:20 N009T000 6 20 156 156 2 0 182 203 32 4 7 9 5
03/11/82 00:01:20 N006T000 6 7 156 156 34 9 182 230 32 4 7 9 5
03/11/82 00:01:25 N009T000 6 17 72 72 15 0 15 199 32 184 0 21 18
03/11/82 00:01:40 N006T000 6 34 72 72 32 0 23 103 32 480 0 44 44
03/11/82 00:01:40 N009T000 6 17 72 72 20 6 23 151 32 480 0 44 44
03/11/82 00:01:40 N006T000 6 7 156 156 33 0 181 4 32 4 7 9 5
03/11/82 00:01:55 N009T000 6 20 156 156 5 78 78 233 32 5 14 11 10
03/11/82 00:02:00 N006T000 6 7 156 156 34 78 78 29 32 5 14 11 10
03/11/82 00:02:00 N006T000 6 7 156 156 34 90 90 33 32 5 7 9 5
03/11/82 00:02:00 N009T000 6 20 156 156 21 90 90 236 32 5 7 9 5
==== ercm09/emas-2900/reportmay84.txt ====
@heading(Termly Report)
@heading(May 1984)
@heading(Communications Group)
@Section(Ednet)
@subsection(CPSEs)
All three CPSEs have been in service use. The reliability has been
reasonable although we have been pressing GEC over software problems
on the KB 4190. We have now received and installed the software to
run all 39 links on the KB 4190.
@subsection(TCPs)
There have been a few hardware funnies with TCPs this term but no
software problems.
@subsection(FEPs)
==== ercm09/emas-2900/ls0412.txt ====
Dump GEC logfile Version 1.3d
Log:ACCNTS.GSS850412
To:LS0412
First record at 23:49:57
Date Covered was: 3/ 4/ 1985 23:59:47 Exchange 3
Frames Control 1 seg Calls RESETS Bytes/Sec ERRORS Total Frames Total Data F Av Bytes
Line In/sec %Out %In %Out %In Out In Total Out In Total Out In Out In Out In
Erte 0.9 0% 98% 53% 31% 19 11 5 64 2 501 78975 29977 78634 435 69 76
Dev mc 0.0 35% 42% 100% 100% 10 10 0 0 0 569 307 296 144 116 27 202
TCP C 1.2 58% 16% 93% 82% 117 261 0 14 30 26472 102769 73205 42655 59356 19 42
Oslan 0.3 94% 0% 97% 61% 145 9 2 3 51 1009 27291 72808 1291 72128 110 59
GenPad 0.1 72% 4% 100% 59% 31 260 0 1 5 50 7532 6316 1493 5424 22 75
Ed Gr 0.0 41% 43% 87% 66% 10 5 7 0 1 5468 1000 1275 548 609 35 70
==== ercm09/emas-2900/advent_item.txt ====
There is a large sparkling nugget of gold here!
There are bars of silver here!
There is precious jewelry here!
There are many coins here!
There are several diamonds here!
There is a delicate, precious ming vase here!
To one side lies a glistening pearl!
There is a nest here, full of golden eggs!
There is a jewel-encrusted trident here!
There is an emerald the size of a plover's egg here!
There is a platinum pyramid here, eight inches on a side!
There is a golden chain here!
There are rare spices here!
There is a valuable persian rug here!
There is a chest here, full of various treasures!
There is a bottle of water here.
There is a small pool of oil here.
There is a brass lantern here.
There is a set of keys here.
There is food here.
There is a glass bottle here.
==== ercm09/emas-2900/advent_desc.txt ====
You're in a forest.
You're in a forest.
You're in a forest.
You're in a forest.
You're at a hill at end of road.
You're at road near house.
You're inside house.
You're beside a stream in a valley.
You're near a slit in the streambed.
You're directly above a grate in a dry streambed.
You are below the grate.
You're in cobble crawl.
You're in the debris room.
You are in an awkward sloping E/W canyon.
You're in the bird chamber.
You're at top of small pit.
You're in hall of mists.
You're in nugget of gold room.
You're on east side of fissure.
You're on the west side of fissure.
You are at the west end of the hall of mists.
==== ercm09/emas-2900/supb1145.txt ====
DEIMOS VSN 9.9 16.JUNE.80 (CLI&LOAD)
3500
DVRUBY N 0
SUP35 60002 0
PERM2Y 60006 0
BTT6Y 60012 150
BDK5Y 60016 70
FSYS1Y 60022 300
LOAD7Y 60026 300
CLI1Y 60032 200
MOTH6Y 60036 50
END
-6 304
-7 310 DQS11 # 1
-20 324 DQS11 #2
-21 330
-22 404 DQS11 #3
-23 410
-24 424 DQS11 #4
-25 430
-26 454 PARR INT #1
==== ercm09/emas-2900/sys_btt7s.txt ====
! FILE 'BTT7S'
!**************
!* BTT7S *
!*DA:24.FEB.81*
!**************
%CONTROL K'100001'; ! 'SYSTEM' PROGRAM (FAST ROUTINE ENTRY/EXIT)
%PERMROUTINESPEC SVC(%INTEGER EP, P1, P2)
%BEGIN
%SYSTEMINTEGERFNSPEC MAP VIRT(%INTEGER ID, FROM SEG, TO SEG)
%SYSTEMROUTINESPEC MAPHWR(%INTEGER SEGS)
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%RECORDFORMAT PF(%BYTEINTEGER SERVICE, REPLY, %C
%INTEGER A1, A2, A3)
%RECORDFORMAT TTF(%INTEGER KBS, KBD, TTS, TTD)
%RECORDFORMAT BUFF(%INTEGER PT, LAST, %BYTEINTEGERARRAYNAME B)
%RECORDFORMAT BUFFX(%INTEGER PT, LAST, ARRAYPT)
%CONSTRECORD (BUFFX) %NAME NULL = 0
==== ercm09/emas-2900/kern31l.txt ====
1
2 040000 %BEGIN
3 %CONTROL K'101011'
4 %CONSTINTEGER CSIZE = 2231
5 %CONSTINTEGER BLIMIT = 14
6 %CONSTINTEGER INIT DISPLAY = 255
7 %CONSTINTEGER READ DISPLAY = 254
8 %OWNINTEGER MYNODE = 4; !OUR NODE NUMBER
9 %OWNINTEGER THRESHOLD = 150; !ROUTING THRESHOLD
10 %OWNINTEGER LFACTOR = 8; !BUFFERS PER SCORE INCREMENT
11 %OWNINTEGER BC = 0; !NO. OF BUFFERS ALLOCATED
12 %OWNINTEGER BL = 9999; !CONNECT BUFFERS FOR NODE
13 %OWNINTEGER AL = 255; !CONNECT BUFFERS PER ATTACHMENT
14 %RECORDFORMAT CADDRF(%INTEGER LINK)
15 %OWNRECORD (CADDRF) %ARRAYNAME CADDR
16 %OWNINTEGER CLIMIT = CSIZE
17 %OWNINTEGER DISPLAY SERVICE = 0
18 %OWNINTEGER BUFFINDEX = 0
19 %OWNINTEGER BUFFLIMIT = BLIMIT
20 %OWNINTEGER BUFFLOST = 0
21 %RECORDFORMAT BUFFF(%BYTEINTEGER USE, LINE, %BYTEINTEGERARRAY %C
==== ercm09/emas-2900/sys_rx021s.txt ====
!
! RX02 FLOPPY DISC HANDLER
!
! THIS IS THE UNIT 2&3 VERSION
!
! %% LAST UPDATED 14TH MARCH 1980 FILE=RX021S
!
! USES SYSTEM SLOTS 8 AND 14. INT SLOT -8.
!
! CALLING PARAMETERS ARE AS FOLLOWS
! P_A1=MODE (0=READ,1=WRITE)
! P_A2=ADDRESS OF BUFFER IN MEMORY
! P_A3=BLOCK NUMBER ON DISC
!
! SINCE DEIMOS DEALS IN 512 BYTE BLOCKS ALL TRANSFERS ARE 2*256
!BYTE SECTORS. THE FIRST 77 BLOCKS ARE RESERVED FOR THE SYSTEM.
!WITHIN EACH TRACK OF 26 SECTORS THE SECTORS ARE INTERLEAVED.
!
! ON EXIT P_A1=FAULT NO. (0=OK)
!
! ANY ERROR WILL RESULT IN UP TO 10 RETRIES.
==== ercm09/emas-2900/log_t44sat1.txt ====
*T44 RING AT P=2, SATURATION, 12SEC INTS LENGTHS 240->0
RING: 5160 3729 4248 1 20 62 6 80 1000 8079 136 66 67 0
RING: 12499 9097 10441 2 62 133 22 182 1000 19782 318 157 157 0
RING: 21316 15881 17718 3 110 221 24 333 1000-31516 557 270 270 0
RING: 21310 15711 17767 1 113 223 31 317 1000-31642 560 269 269 0
RING: 21227 15667 17683 1 117 218 28 322 1000-31768 558 268 268 0
RING: 18383 13599 15197 1 85 198 25 292 1000 29154 502 243 243 0
RING: 20349 14779 16625 3 88 199 42 364 1000 31800 600 299 300 0
RING: 11967 8950 9801 0 50 120 27 205 1000 18974 363 180 179 0
RING: 20189 14926 16729 0 100 192 31 336 1000 32012 608 302 302 0
RING: 19743 14939 16429 0 86 186 35 318 1000 31694 599 299 299 0
RING: 17624 12892 14413 0 78 181 24 312 1000 27634 531 265 266 0
RING: 17999 13252 14544 3 94 193 17 351 1000 28126 688 328 328 0
RING: 17990 13225 14577 2 71 207 22 345 1000 28122 686 327 327 0
RING: 18015 13071 14540 3 95 196 19 351 1000 27950 688 326 325 0
RING: 18021 13109 14501 1 88 200 19 357 1000 27950 676 324 325 0
RING: 17329 12593 14010 4 71 194 26 338 1000 26922 662 314 314 0
RING: 14676 10619 11583 4 72 148 19 340 1000 22444 707 340 341 0
RING: 16087 11391 12559 4 66 164 20 385 1000 24222 774 367 367 0
RING: 16098 11285 12516 2 73 161 18 400 1000 24090 777 365 365 0
RING: 16276 11502 12850 3 71 166 20 379 1000 24618 781 373 373 0
==== ercm09/emas-2900/sys_cli1s.txt ====
! FILE 'CLI1S'
! FILE 'CLI1S'
!**************
!* CLI1S *
!* 16.JUN.80 *
!**************
%PERMINTEGERFNSPEC SVC(%INTEGER EP, %INTEGER P1, %INTEGER P2)
%PERMINTEGERMAPSPEC INTEGER(%INTEGER X)
%PERMBYTEINTEGERMAPSPEC BYTEINTEGER(%INTEGER X)
%PERMINTEGERFNSPEC ADDR(%INTEGERNAME X)
%SYSTEMINTEGERFNSPEC GETID
%CONTROL K'101011'; ! TRUSTED
%RECORDFORMAT DUMREC(%INTEGER X)
%CONSTRECORD (DUMREC) %NAME NULL = 0
%BEGIN
==== ercm09/emas-2900/log_t44sat2.txt ====
*T44 RING AT P=1, SATURATION, 12 SEC INTS, LENGTHS 240->0
RING: 18018 11361 13568 4 100 205 21 522 1000 25578 408 202 203 0
RING: 13747 8592 10311 2 78 154 22 399 1000 19404 313 155 154 0
RING: 20897 13140 15720 0 115 234 27 609 1000 29610 481 235 235 0
RING: 20733 13157 15588 0 98 245 23 607 1000 29484 480 234 234 0
RING: 19412 12446 14578 0 112 218 23 568 1000 27724 451 221 221 0
RING: 18582 11485 13712 1 95 214 26 580 1000 25868 492 244 245 0
RING: 19332 12145 14291 1 108 213 24 610 1000 27136 511 256 256 0
RING: 12921 8002 9436 0 55 157 21 412 1000 17914 339 170 169 0
RING: 19266 11917 14203 0 95 224 23 609 1000 26818 507 253 253 0
RING: 19409 11996 14337 0 103 225 24 605 1000 27034 514 256 256 0
RING: 16133 9915 11718 0 92 168 18 540 1000 22192 525 258 259 0
RING: 18136 11545 13200 0 101 193 20 606 1000 25370 603 295 295 0
RING: 18287 11501 13329 0 100 200 21 601 1000 25456 606 296 296 0
RING: 18425 11290 13447 1 103 191 20 613 1000 25370 605 295 295 0
RING: 12175 7269 8820 0 55 136 23 401 1000 16512 390 193 192 0
RING: 13367 8193 9131 1 69 170 8 535 1000 17840 533 267 267 0
RING: 15108 8984 10236 0 76 176 29 604 1000 19804 601 300 301 0
RING: 15056 9021 10268 0 82 178 15 603 1000 19866 602 301 301 0
RING: 15039 9014 10204 1 71 175 30 605 1000 19800 600 300 300 0
RING: 15079 9012 10272 0 88 173 21 601 1000 19866 604 301 301 0
==== ercm09/emas-2900/log_t44sat3.txt ====
*T44, SATURATION TEST, PRIO=1, 240->0, RING8S AT BOTH ENDS
RING: 3670 23744 95 2 213 4 27 436 787 24326 392 196 195 0
RING: 4856 32101 141 0 286 4 35 580 1040-32650 520 260 261 0
RING: 4942 32475 136 0 289 2 39 587 1056-32272 533 264 264 0
RING: 4902 32483 136 0 284 6 38 581 1056-32272 530 264 264 0
RING: 4945 32735 130 0 281 5 44 587 1064-32020 532 266 266 0
RING: 4305 27470 155 2 253 6 17 527 1044 28168 522 261 262 0
RING: 4866 31016 175 0 286 6 20 597 1200 31800 600 300 300 0
RING: 2869 17566 102 0 151 10 13 348 680 18020 341 171 170 0
RING: 4823 31018 179 1 286 7 19 590 1200 31800 600 300 300 0
RING: 4811 31033 164 0 283 6 18 596 1200 31800 600 300 300 0
RING: 4172 23064 181 1 226 5 28 513 1060 23752 530 265 266 0
RING: 4746 25024 187 0 281 4 8 596 1200 25800 600 300 300 0
RING: 4770 24997 217 1 275 2 8 600 1204 25800 602 301 300 0
RING: 4756 25009 207 0 256 7 33 588 1196 25800 598 299 300 0
RING: 3043 15680 119 0 168 6 4 379 756 16168 378 190 188 0
RING: 4072 20657 174 1 197 6 32 503 1176 21274 591 294 296 0
RING: 4562 22646 202 0 205 6 29 568 1416 23302 712 354 354 0
RING: 4624 22821 205 0 207 11 24 584 1424 23496 714 356 356 0
RING: 4637 22704 192 0 200 11 32 579 1416 23364 712 354 354 0
RING: 4634 22671 221 0 204 14 33 575 1416 23364 713 354 354 0
==== ercm09/emas-2900/pssbuild_dvdup.txt ====
;! FILE 'DVDUP'
;.TIME40
;**************************************
;* DVDUP *
;* INTERFACE BETWEEN HARDWARE AND IMP*
;* DATE: 27.MAR.81 *
;**************************************
PS=177776; PROCESSOR STATUS WORD
IDLEST=-1; SUPERVISOR IDLE FLAG
INTVAL=40; DEDICATED LOCATION FOR INTERRUPT NUMBER
ALARMF=44; DITTO - FOR CLOCK
PSECT=46; DITTO - CURRENT PSECT
LASTPS = 54
INTINF=56
UPAR=177640
UPDR=177600
==== ercm09/emas-2900/b_ftpgbx.txt ====
new
prep x25gen_ftpd5s,ftpd5s#imp,x,g,clean,b
dimp11 ftpd5s#imp
link11 /ftpd5s
ftpd5s#rel
.stack 2400
.streams 1
.stackseg 6
.name ftpx
.end
ftpg5s
c ftpg5s#abs,ftpgxby
destroy ftpg5s#abs
alist11 ftpd5s#imp
list ftpd5s#lst,.lp23
==== ercm09/emas-2900/b_ncon.txt ====
imp11 ncon10s/,l
link11
ncon10s#rel
i77perm
.stack 1400
.streams 1
.name node
.end
ncon10y
list ncon10y,.bpp6
==== ercm09/emas-2900/election80.txt ====
Lab Seats
SEAT Maj 2nd Lab Candidate
61 Niddrie - D.Brown
30 Craigentinny 487 (snp) L.Imrie (byelection)
62 Craigmillar 1537 Kerr/Black (Was W. Black)
60 Gilmerton 1432 (snp) B. Lonie
35 Moat 651 (snp) B. Wilson
59 Inch 552 (snp) I. Campbell
20 Harbour 474 (snp) J. Hastie
42 Holyrood 434 (snp) R. Kerley
36 Stenhouse 419 (snp) J. Henderson
9 Granton 331 (snp) G. Monies
46 Milton 289 (con) V. Oliver (no snp)
19 Lorne 263 (con) M. Saren
33 Sighthill 227 (snp) J.McKay (now safer)
8 Muirhouse 193 (snp) McLaughlin
58 Kaimes 160 (con) Bjorg McKenzie
54 Firhill 159 (con) G. Barton
27 Calton 86 (con) C. McKinnon
==== ercm09/emas-2900/node_subpb1145.txt ====
DEIMOS VSN 9.9 16.JUNE.80 (CLI&LOAD)
3500
DVRUBY N 0
SUP35 60002 0
PERM2Y 60006 0
BTT6Y 60012 150
BDK5Y 60016 70
FSYS1Y 60022 300
LOAD7Y 60026 300
CLI1Y 60032 200
MOTH6Y 60036 50
END
-6 304
-7 310 DQS11 # 1
-20 324 DQS11 #2
-21 330
-22 404 DQS11 #3
-23 410
-24 424 DQS11 #4
-25 430
-26 454 PARR INT #1
==== ercm09/emas-2900/b_lmcoxs.txt ====
prep x25gen_lmcoxs,lmcoxs#imp,clean
dimp11 lmcoxs
link11 /map
lmcoxs
.streams 1
.stack 1000
.end
lmcoxs
destroy lmcoxy
rename lmcoxs#abs,lmcoxy
==== ercm09/emas-2900/rolls.txt ====
! FILE 'ROLLS'
!**********************
!* ROLLS/ROLLY *
!* DATE: 29.MAY.81 *
!*********************
%CONSTSTRING (7) VSN = "VSN001B"
!! STACK = 300, STREAMS = 1
%CONTROL K'100001'
%RECORDFORMAT XF(%BYTEINTEGER UNIT,FSYS,%BYTEINTEGERARRAY FNAME(0:5))
%CONSTRECORD (XF) %NAME NULL = 0
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%BEGIN
%OWNINTEGER MON = 0
%RECORDFORMAT RJEF(%BYTEINTEGERARRAY DATA(0:239))
%RECORDFORMAT NSI1F(%BYTEINTEGER FN,SUFL,ST,SS,FLAG,UFLAG, %C
%RECORD(RJEF) RJE)
==== ercm09/emas-2900/telepacrep.txt ====
@make[report]
@device[x2700]
@flushleft[Edinburgh Regional Computing Centre]
@majorheading[Report on Pilot TelePAC PSE]
SEEL made a final delivery of hardware on the 29th April that completed the
30 port, 2Mbyte TelePAC switch.
The software that was delivered with the switch was
version 0468 and the testing has been done using that version.
The switch has been in user service since the 8th April and the load has
been built up steadily. There are currently 19 active connections with a
typical loading of nearly 100 calls.
@heading[Hardware Report]
The first part of the switch was delivered on the 28th March,
during the initial testing it became clear that
this unit had
a faulty backplane. SEEL turned out very promptly to fix it but the
obscure nature of the fault meant that the unit was down for about 16 hours.
==== ercm09/emas-2900/erteicl_init70.txt ====
!THE INITIALISE TASK "INIT" - FOR EMAS 2980.
!E.R.T.E. MK.3 VERSION - VIA THE DQS 11/E
! W.S.C. 27TH JULY 1976
! J.C.A. 31ST JAN 1978
! G.J.B. 19TH SEPT 1978
! J.C.A. 27TH SEPT 1978
! B.G. 25.JAN.80
! ??? LAST UPDATE 21:12:78 - FILE INIT70
! THIS VERSION IS FOR USE WITH ICL VME/B
!THE TASK RUNS IN SYSTEM SLOT 29
!SET STACK TO 140 STREAMS=0 PRIORITY=1
%CONTROL K'101011'
==== ercm09/emas-2900/b_comms.txt ====
imp11 gen_comm77/comm77#rel
link11
i77perm
comm77#rel
.stack 1000
.streams 1
.name comm
.end
alist11 gen_comm77/.lp23
==== ercm09/emas-2900/graham.txt ====
GEC.D31 = 15000040.(FTP001,RATS).GECDFTP.00000000203150.FTP.MAIL
GEC.D2 = 15000040.(FTP001,RATS).GECDFTP.00000000200250.FTP.MAIL]
==== ercm09/emas-2900/kents1280_rjes8.txt ====
%CONSTSTRING (7) VSN = "VSNKB8S"
!********************************
!* EMAS-2900 FEP RJE SERVER *
!* FILE: RJES8/RJES8Y *
!* DATE: 18.SEP.80 *
!* MODIFIED FOR RING 27.OCT.80
!********************************
!! STACK SIZE = 300
%SYSTEMROUTINESPEC MAP HWR(%INTEGER SEG)
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%RECORDFORMAT DMF(%INTEGER I)
%CONSTRECORD (DMF) %NAME NULL = 0
%CONTROL K'100001'
==== ercm09/emas-2900/sys_perm2s.txt ====
; SHARED PART OF PERM FOR PSR COMPILER
;*******************
;* PERM0S VSN 12 *
;* 23.APR.80 *
;*******************
PON=2
POFF=3
DELETE=5; EMT DELETE TASK
GETID=14; EMT 12. - GET ID
PONPOF=21; EMT 17. - PON POFF
TTID=1
DKID=3
DIRID=4
LPID=14
LOADID=41; ACTUAL ID OF LOADER TASK ***** MAY CHANGE **************
LNB=R5
==== ercm09/emas-2900/commsrpt.txt ====
Edinburgh Regional Computing Centre
For the attention of the E. C. U. C.
Report on Communications
SWITCHES
The major changes in the network, to achieve a greater level of reliability as
described in the last report, have been carried out over the summer vacation.
The four main switches are now fully interlinked with 48kb/s links.
The major changes involved in this reconfiguration have caused a fair amount of
disruption to the service but this was restricted to the vacation period.
The detailed performance figures are as follows:-
a) GEC Switches
==== ercm09/emas-2900/isotrsl_slide1.txt ====
{{scaling factor(0.67)}}
{{box(0,6)(26,8);inlabel(0.5,"HDLC")}}
{{box(0,8)(26,11);inlabel(0.5,"X25 L3")}}
{{box(0,11)(21,13);inlabel(0.5,"Yellow Book")}}
{{box(0,13)(17,25);inlabel(0.5,"@b@b@b@b@bBlue Book@b(File Transfer Protocol")}}
{{box(5,19)(11,25);inlabel(0.5,"Grey@bBook@b(Mail)")}}
{{box(11,19)(17,25);inlabel(0.4,"Red@bBook@b(JTMP)")}}
{{box(17,13)(21,25);inlabel(0.4,"Green@bBook@b@b(TS29)")}}
{{box(21,11)(26,25);inlabel(0.4,"Green@bBook@b@b(XXX)")}}
{{label(0,3,0.5,0,"UK Academic 'Coloured Book' structure")}}
==== ercm09/emas-2900/sys_rx023s.txt ====
! FILE 'RX022S'
!
! RX02 FLOPPY DISC HANDLER
!
! THIS IS THE UNIT 0&1 VERSION
!
! %% LAST UPDATED 2ND APRIL 1980 FILE=RX022S
!
! USES SYSTEM SLOTS 8 AND 14. INT SLOT -8.
!
! CALLING PARAMETERS ARE AS FOLLOWS
! P_A1=MODE (0=READ,1=WRITE)
! P_A2=ADDRESS OF BUFFER IN MEMORY
! P_A3=BLOCK NUMBER ON DISC
!
! SINCE DEIMOS DEALS IN 512 BYTE BLOCKS ALL TRANSFERS ARE 2*256
!BYTE SECTORS. THE FIRST 77 BLOCKS ARE RESERVED FOR THE SYSTEM.
!WITHIN EACH TRACK OF 26 SECTORS THE SECTORS ARE INTERLEAVED.
!
! ON EXIT P_A1=FAULT NO. (0=OK)
!
==== ercm09/emas-2900/node_nlps.txt ====
!**********************
!* NLPS/NLPY *
!* DATE: 11.MAR.80 *
!*********************
%CONSTSTRING (7) VSN = "VSN001C"
!! STACK = 400, STREAMS = 3
%CONTROL K'100001'
!STACK=400, STREAMS=1
%RECORDFORMAT XF(%BYTEINTEGER UNIT,FSYS,%BYTEINTEGERARRAY FNAME(0:5))
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%BEGIN
%CONSTINTEGER CONTROL SER = 11
%RECORDFORMAT RJEF(%BYTEINTEGERARRAY DATA(0:239))
%RECORDFORMAT NSI1F(%BYTEINTEGER FN,SUFL,ST,SS,FLAG,UFLAG, %C
==== ercm09/emas-2900/isotrsl_slide2.txt ====
{{scaling factor(0.67)}}
{{label(0,25,.4,0,"")}}
UK Coloured Books
Green Book - Terminal Protocols
(Use of X29)
Yellow Book - 'Transport Protocol'
(Now seen as Network Service)
Blue Book - NIFTP - File Transfer Protocol
Grey Book - MAIL - Mail Protocol
Red Book - JTMP - Job Transfer and
Manipulation
------------------------------------------------
Orange Book - Cambridge Ring Protocols
Pink Book - Ethernet - How to use ISO
Faun Book - SSMP - Simple Screen
==== ercm09/emas-2900/isotrsl_slide3.txt ====
{{box(0,0)(8,8);inlabel(.4,"Physical")}}
{{box(0,8)(8,16);inlabel(.4,"Data Link")}}
{{box(0,16)(8,24);inlabel(.4,"Network")}}
{{box(9,0)(17,8)}}
{{box(9,8)(17,16);inlabel(.4,"Lap-B")}}
{{box(9,16)(17,20);inlabel(.4,"X25(1980)")}}
{{box(9,20)(17,24);inlabel(.4,"Yellow Book")}}
{{box(18,0)(26,8)}}
{{box(18,8)(26,16);inlabel(.4,"X25(1984)-L2")}}
{{box(18,16)(26,24);inlabel(.4,"x25(1984)-L3")}}
{{label(2,25,.4,0,"Transition to ISO Network Layer")}}
==== ercm09/emas-2900/isotrsl_slide4.txt ====
{{box(0,2)(22,4);inlabel(.4,"L2")}}
{{box(0,4)(22,8);inlabel(.4,"X.25(1984)")}}
{{box(0,8)(11,24);inlabel(.4,"@b@b@b@b@bFTP")}}
{{box(4,15)(8,24);inlabel(.3,"Mail")}}
{{box(8,15)(11,24);inlabel(.3,"Job")}}
{{box(11,8)(16.5,12);inlabel(.3,"Tran")}}
{{box(16.5,8)(22,12);inlabel(.3,"Tran")}}
{{box(11,12)(16.5,16);inlabel(.3,"Sess")}}
{{box(16.5,12)(22,16);inlabel(.3,"Sess")}}
{{box(11,16)(16.5,20);inlabel(.3,"Pres")}}
{{box(16.5,16)(22,20);inlabel(.3,"Pres")}}
{{box(11,20)(16.5,24);inlabel(.3,"FTAM")}}
{{box(16.5,20)(22,24);inlabel(.3,"X400")}}
{{label(2,0,.4,0,"ISO Transition Stages")}}
==== ercm09/emas-2900/x1.txt ====
Here is my list, I can't find the proper list of contacts etc, but
if you wants names/addresses for any of them please let me know
Amdahl: BBN: BT: Camtec: DCA:
Dynatech: GEC: IPAC: Memotec: Motorola:
Northern Telecom: Plessey: SESA: STC:
Telefile: Telematics: Thorn-Ericsson.
The following companies were approached but do not offer a distinct switch
at this time:
CASE: Logica: Timeplex (PADs only):
Jaguar: Gandalf (PADs only): Norsk Data.
Brian Gilmore
==== ercm09/emas-2900/ednet0686.txt ====
{{circle(23,11.5,.5)}}
{{INLABEL(.14,"Fe4")}}
{{circle(11,16,1.5);inlabel(.2,"TelePAC@b15003000")}}
{{circle(0,0,0)}}
{{circle(13,21.7,2.5);inlabel(.35,"KB-CPSE@bGEC 4190@b")}}
{{inlabel(.14,"@B@B@b@b000015000000")}}
{{circle(13,4,2.5);inlabel(.35,"AT-CPSE@bGEC 4190@b")}}
{{inlabel(.14,"@B@B@b@b000016000000")}}
{{CIRCLE(23,2.8,0.5);inlabel(.14,"Fe3")}}
{{CIRCLE(23,10.5,0.5);inlabel(.14,"Fe1")}}
{{CIRCLE(23,9.5,0.5);inlabel(.14,"Fe2")}}
{{CIRCLE(23,3.8,0.5);inlabel(.14,"Fe2")}}
{{CIRCLE(32.5,21.7,1.5);INLABEL(.14,"JANET@bPSE")}}
{{CIRCLE(23,7.3,.5);inlabel(.14,"Fe2")}}
{{circle(12.75,24.8,.1);fill(c12)}}
{{circle(14.75,24.8,.1);fill(c13)}}
{{circle(16.75,24.8,.1);fill(c14)}}
{{circle(20.75,25.2,0)}}
{{circle(6.75,25.2,0)}}
{{CIRCLE(6.75,1.4,0)}}
{{circle(8.75,1.4,0)}}
==== ercm09/emas-2900/cpsesumm.txt ====
@heading[CPSE Survey Summary]
@varbatim[
Name Range (maxs) Cost(k):10 18 48 100 Notes
===================================================================
==== ercm09/emas-2900/ftppd_source.txt ====
%control 1
#if ~x
#if n
#report NSI version
#else
#report ring version
#fi
#else
#report ts version
#fi
%include "ercm09.b_deimosspecs"
#if ~b
%conststring (9) vsn = "FTPQ..1o "
#else
%conststring (19) vsn = "FTPQ..1o (on FTQ) "
#fi
%begin
%externalstring (255) %fnspec cli param
==== ercm09/emas-2900/colors.txt ====
! FILE 'ERCM08.INC_COLOURDEFS'
%CONTROL K'100001'
%BEGIN
!
! *** COLOUR DEFINITIONS
!
%CONSTINTEGER BLACK=16
%CONSTINTEGER RED=17
%CONSTINTEGER GREEN=18
%CONSTINTEGER YELLOW=19
%CONSTINTEGER BLUE=20
%CONSTINTEGER MAGENTA=21
%CONSTINTEGER CYAN=22
%CONSTINTEGER WHITE=23
%CONSTINTEGER CURBACK=BLACK; !BACKGROUND FOR EVERYONE
! *** OWN ROUTINES FOR DRIVING INTECOLOUR DISPLAY
!FILE 'ERCM08.COLOURS'
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
==== ercm09/emas-2900/b_mail.txt ====
new
prep gen_mailte,mailte#imp,x,g,clean
dimp11 mailte#imp
link11 /mailte
mailte#rel
.stack 2400
.streams 1
.stackseg 6
.name mail
.end
mailte
c mailte#abs,mailtey
destroy mailte#abs
==== ercm09/emas-2900/deimosperm.txt ====
!
! specs for deimos perm routines
!
%externalroutinespec pon(%record(*) %name p)
%externalroutinespec poff(%record(*) %name p)
%externalroutinespec ponoff(%record(*) %name p)
%externalintegerfnspec mapvirt(%integer ser,seg1,seg2)
%externalintegerfnspec map abs(%integer vadd,len,id)
%externalintegerfnspec getid
%externalroutinespec alarm(%integer ticks)
%externalroutinespec linkin(%integer ser)
%externalroutinespec maphwr(%integer segs)
%externalintegerfnspec mappsect(%integer seg,task)
%externalroutinespec push(%record(*)%name q,%record(*)%name m)
%externalrecord(*)%mapspec pop(%record(*)%name q)
%externalintegerfnspec time
%externalroutinespec set prio(%integer prio)
%constbyteintegername own id==(8_160030); !8.1 compiler bug
%constbyteintegername fsys == k'160055'
%constbyteintegername id == k'160030'
%constbyteintegername int==(8_160060)
==== ercm09/emas-2900/b_lmacc.txt ====
imp11 lmaccs/,l
link11
lmaccs#rel
i77perm
.stack 1000
.streams 0
.end
lmaccy
alist11 lmaccs/.lp23
list lmaccy,.bpp6
==== ercm09/emas-2900/init70.txt ====
!THE INITIALISE TASK "INIT" - FOR EMAS 2980.
!E.R.T.E. MK.6 VERSION - VIA DUP11S
! W.S.C. 27TH JULY 1976
! J.C.A. 31ST JAN 1978
! G.J.B. 19TH SEPT 1978
! J.C.A. 27TH SEPT 1978
! B.G. 25.JAN.80
! ??? LAST UPDATE 21:12:78 - FILE INIT70
! THIS VERSION IS FOR USE WITH ICL VME/B
!THE TASK RUNS IN SYSTEM SLOT 29
!SET STACK TO 140 STREAMS=0 PRIORITY=1
%CONTROL K'101011'
==== ercm09/emas-2900/erteicl_arith2.txt ====
! ARITHMETIC ROUTINE (SORT OF DOUBLE WORD)
!W.S.C. 24TH FEB 1977
!LAST UPDATED 25/03/77 09:45
%CONTROL K'001000'
%EXTERNALROUTINE ARITH(%INTEGERNAME N1,N2,%INTEGER BY1,BY2,OP)
!N1 & N2 ARE DOUBLE WORD INTEGERS WITH UP TO 100 IN N2,
!THE 1000'S IN N1.DITTO BY1 AND BY2.THE RESULT IS PUT
!INTO N1 &N2. FOR MPY AND DIV BY1 IS ASSUMED TO BE ZERO.
! OP MAY BE ONE OF THE FOLLOWING VALUES:-
%CONSTINTEGER ADD=0
%CONSTINTEGER SUB=1
%CONSTINTEGER MPY=2
%CONSTINTEGER DIV=3
%SWITCH SW(0:3)
==== ercm09/emas-2900/grate.txt ====
easygraph title "MTBF - KB 4190 - 3 month rolling average" xaxis 20,"Month - Jan
84 to Nov 85"
xformat 3,0
xscale 0,1.5
yaxis 16,"Hours MTBF"
yformat 3,0
yscale 0,150
flatnumber
linetype line+points
pen 3
symbol square
data
1 366
2 439
3 274
4 313
5 183 6 183
7 219
8 274
9 274
10 244
==== ercm09/emas-2900/statnode7s.txt ====
%REALSLONG
!
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! NODE STATISTICS PACKAGE
!
!
!
! GRAPH1 - CONNECTS V BLKS AND CPU
!
! GRAPH2 - 2900 USERS V BLOCKS RXD & TXD
!
! GRAPH3 - 2970 USERS V BLOCKS RXD & TXD
!
! GRAPH4 - FREQUENCY V CON/MIN/USER
!
!
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
==== ercm09/emas-2900/ednet1284.txt ====
{{circle(10,26,0.6)}}
{{INLABEL(.18,"N1")}}
{{circle(10,24.5,0.6)}}
{{INLABEL(.18,"N6")}}
{{circle(10,22.5,.75)}}
{{inlabel(.18,"RING@b")}}
{{inlabel(.12,"@b@bN72")}}
{{circle(10,15.7,3)}}
{{circle(10,4,3)}}
{{circle(24,11.5,0.5)}}
{{inlabel(.14,"Fe4@bT3")}}
{{circle(24,10.5,0.5)}}
{{inlabel(.14,"Fe1")}}
{{circle(24,9.5,0.5)}}
{{inlabel(.14,"Fe2")}}
{{circle(24,3,0.5)}}
{{inlabel(.14,"Fe2")}}
{{circle(30.5,15.7,1.5)}}
{{INLABEL(.14,"JANET@bPSE")}}
{{circle(24,7,.5)}}
{{inlabel(.14,"Fe1")}}
==== ercm09/emas-2900/statskbpad.txt ====
Dump GEC logfile Version 1.2
Log:ACCNTS.GKB840829
To:L3
No. Time
82610 23:42:20 Link LAU0B Frms (RX/TX): 38120 37933, Calls: 152 5, Bytes: 286317 2146692 da 1-3 6557 65 0
Max Bf: 3375 Cur Bf: 2848 Vcs 76 Min Bf: 2845 Req Dl: 0
24:00:00 Date: 27/ 8/ 1984 0000
24:00:00 Date: 0/ 1/ 1972 0137 1667 00:30:44 Link LAU0B Frms (RX/TX): 0 0, Calls: 0 0, Bytes: 54 54 da 1-3 0 0 0
Max Bf: 3375 Cur Bf: 2847 Vcs 74 Min Bf: 2841 Req Dl: 0
3510 01:03:52 Link LAU0B Frms (RX/TX): 0 0, Calls: 0 0, Bytes: 110 110 da 1-3 0 0 0
Max Bf: 3375 Cur Bf: 2844 Vcs 85 Min Bf: 2837 Req Dl: 0
==== ercm09/emas-2900/ednet1285.txt ====
{{circle(23,11.5,.5)}}
{{INLABEL(.18,"EML")}}
{{circle(31.5,3,0.6)}}
{{INLABEL(.18,"N6")}}
{{circle(31.5,4.5,.75)}}
{{inlabel(.18,"RING@b")}}
{{inlabel(.12,"@b@bN72")}}
{{circle(10,21.7,3);inlabel(.4,"KB-CPSE@bGEC 4190@b")}}
{{inlabel(.14,"@B@B@b@b000015000000")}}
{{circle(10,4,3);inlabel(.4,"AT-CPSE@bGEC 4190@b")}}
{{inlabel(.14,"@B@B@b@b000016000000")}}
{{CIRCLE(28,9.5,0.5)}}
{{inlabel(.14,"Fe4@bT3")}}
{{CIRCLE(23,10.5,0.5)}}
{{inlabel(.14,"Fe1")}}
{{CIRCLE(23,9.5,0.5)}}
{{inlabel(.14,"Fe2")}}
{{CIRCLE(23,3,0.5)}}
{{inlabel(.14,"Fe2")}}
{{CIRCLE(30.5,21.7,1.5)}}
{{INLABEL(.14,"JANET@bPSE")}}
==== ercm09/emas-2900/ringtester_ringrs.txt ====
! COMPILE THIS MODULE WITH 15000 STACK & 0 STREAMS
! RINGRS/RXR ALI AUG 1979
! CAMBRIDGE RING RECEIVE HANDLER
! USES BSP PROTOCOL. PASSES TX TASKS TO RINGTS/TXR
! SEE RPTS/RPT FOR OPERATOR INTERFACE
!
%CONTROL K'100001'
%BEGIN
%INTEGERARRAY TXBUFFER(0:153)
!
%CONSTBYTEINTEGERNAME MY ID = K'160030', INT = K'160060'
%CONSTINTEGER ATBLIM=31, PTBLIM=127; ! TRACE BUFFER LIMITS
%CONSTINTEGER RINGSER=29,TXRSER=28,TXRDUMPSER=27,TRACESER=26; ! SERVICE NRS
%CONSTINTEGER LASTTIMERMAX=7, HLRILIM=2099
!
! SETTINGS FOR SET TIMER REQUESTS
!
%CONSTINTEGER TSTATE E ALARM = 0, RSTATE E ALARM = 1, RBALARM = 2
%CONSTINTEGER ONE SECOND = 50, TENTH SEC = 5, TOLIM=5
!
! SETTINGS FOR TSTATE & RSTATE
==== ercm09/emas-2900/sbldrl3s.txt ====
! FILE 'SBLD3KS'
!**********
!* SBLD13S *
!* NB: NOT SAME AS BPL SBLD1S !!!!
!* DATE: 17.MAR.80 *
!* SUPERVISOR BUILD PROGRAM *
!*************************************
%PERMROUTINESPEC SVC(%INTEGER EP, %INTEGERNAME P1, %INTEGER P2)
%PERMINTEGERMAPSPEC INTEGER(%INTEGER X)
%PERMBYTEINTEGERMAPSPEC BYTEINTEGER(%INTEGER X)
%PERMINTEGERFNSPEC ADDR(%INTEGERNAME X)
%PERMINTEGERFNSPEC ACC
%CONSTINTEGERNAME DUMMY = 0
%CONSTINTEGERNAME NULLI = 0
%BEGIN
==== ercm09/emas-2900/node_prt12us.txt ====
! file 'node_prt12us'
!*********************
!* prt12s/prt12y *
!*version for node *
!!!!!!!!!!!!!!!!!!!!!!
!stack = 400
%control 1
%include "deimosperm"
%constinteger kernel ser = 29
! %owninteger secondary = 0; !prim = 0, sec = 1
%constintegername secad == k'060016'; ! in buffer seg, set by node
%constinteger wmax = 56; ! max no of writes
%constinteger sfmask = 63; ! circ buffer size for writes
%conststring (13) vsn = "prtn:vsn012r "
#datestring; ! use prep on this
==== ercm09/emas-2900/log230982.txt ====
23/09/82 01:45:25 N009T000 6 20 156 156 2 0 182 207 32 4 7 9 5
23/09/82 01:45:25 N006T000 6 7 156 156 34 9 182 194 32 4 7 9 5
23/09/82 01:45:25 N006T000 6 7 156 156 33 0 181 198 32 4 7 9 5
23/09/82 01:45:30 N009T000 6 20 156 156 21 90 90 223 32 5 7 9 5
23/09/82 01:45:30 N006T000 6 7 156 156 34 90 90 216 32 5 7 9 5
23/09/82 01:45:35 N009T000 6 17 72 72 21 90 90 226 32 65 0 9 4
23/09/82 01:45:40 N009T000 6 17 72 72 21 90 90 234 32 64 0 9 4
23/09/82 01:45:45 N006T000 6 7 156 156 34 72 9 233 32 4 7 9 8
23/09/82 01:45:45 N009T000 6 20 156 156 29 72 9 244 32 4 7 9 8
23/09/82 01:46:10 N009T000 6 20 156 156 5 78 78 253 32 5 14 11 10
23/09/82 01:46:10 N006T000 6 7 156 156 34 78 78 241 32 5 14 11 10
23/09/82 01:46:10 N009T000 6 17 72 72 21 90 90 243 32 28 0 4 1
23/09/82 01:46:20 N009T000 6 17 72 72 21 90 90 9 32 34 0 5 2
23/09/82 01:46:35 N009T000 6 17 72 72 15 0 15 6 32 1951 0 206 203
23/09/82 01:46:55 N009T000 6 17 72 72 21 90 90 20 32 65 0 9 4
23/09/82 01:47:25 N009T000 6 20 156 156 3 0 180 36 32 4 7 9 5
23/09/82 01:47:25 N006T000 6 7 156 156 34 9 180 50 32 4 7 9 5
23/09/82 01:47:25 N009T000 6 20 156 156 29 72 5 39 32 7 15 12 11
23/09/82 01:47:25 N006T000 6 7 156 156 34 72 5 52 32 7 15 12 11
23/09/82 01:47:30 N006T000 6 7 156 156 34 9 75 60 32 4 7 9 5
23/09/82 01:47:30 N009T000 3 23 15 0 4138 461 109 1598 826 28 8 1409 354 940 643 18 598 0 0 0 0 0 0
==== ercm09/emas-2900/iprogsou_link11.txt ====
%EXTERNALROUTINE LINK11(%STRING(63) PARAM)
%STRING(63) MAP
%OWNINTEGER BRIANS FIDDLE = 255
%CONSTINTEGER LIMIT = 128
%OWNINTEGER CODE BASE = 2<<13, GLA BASE = 0, SPBASE = 7<<13
%OWNINTEGER ALONE = 0, MAIN EP = -1, ENTRY = 0
%OWNSTRING(31) TASK ID = ""
%OWNSTRING(31) FIX FILE = ""
%OWNINTEGER STREAMS = 2
%OWNSTRING(31) PERM FILE = ".PERM11#REL", %C
LIB FILE = ".LIB11#REL", %C
OBJECT = ""
%OWNINTEGER STACK = 8*1024
%CONSTINTEGER PLUG BIT = 64
%EXTERNALINTEGERFNSPEC EXIST(%STRING(255) S)
%EXTERNALROUTINESPEC DEFINE(%STRING(63) S)
%EXTERNALSTRING(6) %FNSPEC IMP11HOST
%EXTERNALROUTINESPEC PROMPT(%STRING(15) S)
%RECORDFORMAT TABFM(%INTEGER ADDR, INDEX, %C
%BYTEINTEGER TYPE, %STRING(63) TEXT)
%CONSTINTEGER MAX TABLE = 400
==== ercm09/emas-2900/reportfeb84.txt ====
Communications Group - Termly Report
------------------------------------
Personnel
---------
Since Bill Byers and Peter Kirkby joined us in December the communications
group is now complete again.
Service Software Support
------------------------
TCPs
----
The software is stable and only a small amount of effort is being
put into its support.
FEPs
==== ercm09/emas-2900/kmc11_krings.txt ====
!
! Ring handler for KMC11
! DATE 11.nov.81
!
!
$list 1
$def flag=sp0, rstatl=sp1, rstath=sp2, rxstate=sp3, txstate=sp4
$def itim = sp5, rxhigh=sp6, rxmid=sp7, rxlow=sp8
$def otim = sp9, txhigh=sp10, txmid=sp11, txlow=sp12
$def temp=sp13, temp1=sp14, time = sp15
! sp5, sp9 & sp15 are spare
!
$def idatal = adr0, idatah = adr1, odatal = adr2, odatah = adr3
$def ibusl = adr4, ibush = adr5, obusl = adr6, obush = adr7
!
$def nprreq=npr.0, nonexmem=misc.0, timeout=misc.4, settime = 16_10
$def bits1617 = 16_0c
$def txints=csr0.0, rxints=csr0.1, reqi11 = csr0.4, oack = csr0.7
$def rfn = csr2.0, kmcreq = csr3.4
$def rxreply = 16_10; ! kmcreq+fn=0
==== ercm09/emas-2900/tr.txt ====
LINK11
ERCM09.I77PERM
xprotb#REL
.STACK 2000
.STREAMS 1
.NAME xpr1b
.END
xpr1b#OBJ
destroy xpr1by
rename xpr1b#obj,xpr1by
alist11 xprotb#imp/l2
list l2,.lp23
==== ercm09/emas-2900/nrs.txt ====
.nf
.H1 Forward Lookup
.H1 Context X29 Subnetwork JANET
Long name CERN.GEC-A
Short name CERN.GEC-A
DTE string 000009001002
Long name CERN.IBM
Short name CERN.IBM
DTE string 0000090030020
Long name CERN.INDEX
Short name CERN.INDEX
DTE string 0000090030010
Long name CERN.NDDEV
Short name CERN.NDDEV
DTE string 0000090030051
==== ercm09/emas-2900/b_parr.txt ====
imp11 parr4s
link11
parr4s#rel
i77perm
.stack 400
.streams 0
.name para
.end
parr4y
==== ercm09/emas-2900/node_nbsp8s.txt ====
! FILE 'NBSP8S'
!********************************
!* BSP TO NSI INTERFACE *
!* FILE: NBSP8S *
!* DATE: 08.MAR.82 *
!* BASED ON KENTS_BSP4S & GATE5 *
!*********************************
!! STK = 1000, STRM = 1
%CONSTINTEGER OWN NODE = 72
%CONSTINTEGER FEP ADDRESS = 9
%OWNINTEGER SBRF = 0
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMROUTINESPEC MAP HWR(%INTEGER SEG)
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%PERMROUTINESPEC SVC(%INTEGER EP, R0, R1)
%RECORDFORMAT DMF(%INTEGER I)
==== ercm09/emas-2900/usercmdec.txt ====
Edinburgh Regional Computing Centre
-----------------------------------
For the attention of the Edinburgh Computer Users Committee
-----------------------------------------------------------
Report on Communications
------------------------
TCPs The number of terminals on the Library TCP has been increased from
---- 32 to 48. A fault which has been causing spurious 'Terminal
Violations' while using the screen editors has been found and fixed.
FEPs The FEPs on the 2988 have been crashing recently due to a problem
---- with the new 2900 hardware. The FEPs should no longer actually
crash but there is still an unresolved problem with the hardware.
PSS The service has been very stable.
==== ercm09/emas-2900/ring_nsiw77s.txt ====
!**********************
!* nsiw77s/nsiw77y *
!* date: 27.jan.82 *
!*********************
%conststring (13) vsn = "nsiw:vsne01f
"
!! stack = 400, streams = 3
!! note: for versions that are run out of a 2900 fep system,
!! messages from the network should be enabled - see
!! the comment at 'messages enabled'
%control 1
%include "deimosperm"
%constinteger nsiw ser = 6; ! private service no
%recordformat xf(%byteinteger unit,fsys,%byteintegerarray fname(0:5))
%begin
==== ercm09/emas-2900/init82.txt ====
! FILE 'ERTE_INIT70'
!THE INITIALISE TASK "INIT" - FOR EMAS 2980.
!E.R.T.E. MK.6 VERSION - VIA DUP11S
! W.S.C. 27TH JULY 1976
! J.C.A. 31ST JAN 1978
! G.J.B. 19TH SEPT 1978
! J.C.A. 27TH SEPT 1978
! B.G. 25.JAN.80
! ??? LAST UPDATE 21:12:78 - FILE INIT70
! THIS VERSION IS FOR USE WITH ICL VME/B
!THE TASK RUNS IN SYSTEM SLOT 29
!SET STACK TO 140 STREAMS=0 PRIORITY=1
==== ercm09/emas-2900/statnode8s.txt ====
%REALSLONG
!
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! NODE STATISTICS PACKAGE
!
!
!
! GRAPH1 - CONNECTS V BLKS AND CPU
!
! GRAPH2 - 2900 USERS V BLOCKS RXD & TXD
!
! GRAPH3 - 2970 USERS V BLOCKS RXD & TXD
!
! GRAPH4 - FREQUENCY V CON/MIN/USER
!
!
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
==== ercm09/emas-2900/fspec.txt ====
$a device = x2700
$d3 "COMPMODROMAN11"
$d4 "COMPMODITALIC11"
$3
$a bold='~'
$a tab = 1,3,10,10,55,77
$a just=1
$a wunder='%'
$a indent = 0
$4
X25 Facilities - $3
$b0$t4 Fast Select;
$b0$t4 Packet and Window size negotiations;
$b0$t4 Call Statistics;
$b0$t4 Permanent Virtual Circuits;
$b0$t4 Call Redirection;
$b0$t4 Reverse Charging.$b1
$4
Access Units - $3$b0
$t4 Bit Rates of 2.4k,4.8k,9.6k,19.2k,48k.$b0
$t4 Physical Level Interfaces - V24/V28, V35, X21.$b0
==== ercm09/emas-2900/response_mfe1jan22.txt ====
Node = 80, Term = 80 - 22 Jan 82 09.50 - 11.50 (ring->n6->fe1)
0
0
0
0
5
37
91
112
106
102
112
66
84
71
60
47
45
34
31
31
==== ercm09/emas-2900/statszoo.txt ====
Dump GEC logfile Version 1.2
Log:GC30AUG84
To:L3
No. Time
102 14:51:09 Link LAU09 Frms (RX/TX): 215 214, Calls: 2 0, Bytes: 1933 15176 da 1-3 29 0 0
Max Bf: 500 Cur Bf: 370 Vcs 2 Min Bf: 367 Req Dl: 0
93 14:59:43 CON LAU09 3 000017000012 -> 15000001 62 04 00 00
108 15:00:02 END LAU09 3 Segs,Ints,resets (RX/TX): 17 3 0 0 0 0, Retran: 0 00/00
109 15:00:19 CON LAU09 4 000017000012 -> 15000001 62 04 00 00
110 15:00:42 END LAU09 4 Segs,Ints,resets (RX/TX): 8 3 0 0 0 0, Retran: 0 00/00
111 15:01:31 CON LAU09 5 000017000012 -> 15000001 62 04 00 00
113 15:05:37 CHK LAU09 5 Segs,Ints,resets (RX/TX): 65 21 0 0 0 0, Retran: 0
116 15:20:36 CHK LAU09 5 Segs,Ints,resets (RX/TX): 292 108 0 0 0 0, Retran: 0
125 15:22:02 Link LAU09 Frms (RX/TX): 615 614, Calls: 5 0, Bytes: 5263 25719 da 1-3 141 1 0
==== ercm09/emas-2900/cpse.txt ====
Initial Configuration for Kings Buildings Switch
================================================
Machine Speed of Line
2972-fe1 19.2
2972-fe2 19.2
2988-fe0 19.2
2988-fe1 19.2
Xgate(i/f to ring)19.2
GS Switch 19.2
C.S. Dept Vax 19.2
El. Eng. Vax 9.6
ERCC Vax 19.2
INFO 9.6
Arcus Prime 9.6
Abro Prime 9.6
Physics 11/45 9.6
==== ercm09/emas-2900/kmc11_kring2s.txt ====
!
! Ring handler for KMC11
! DATE 23.nov.81
!
!
$list 1
$def flag=sp0, rstatl=sp1, rstath=sp2, rxstate=sp3, txstate=sp4
$def itim = sp5, rxhigh=sp6, rxmid=sp7, rxlow=sp8
$def otim = sp9, txhigh=sp10, txmid=sp11, txlow=sp12
$def temp=sp13, temp1=sp14, time = sp15
! sp5, sp9 & sp15 are spare
!
$def idatal = adr0, idatah = adr1, odatal = adr2, odatah = adr3
$def ibusl = adr4, ibush = adr5, obusl = adr6, obush = adr7
!
$def nprreq=npr.0, nonexmem=misc.0, timeout=misc.4, settime = 16_10
$def bits1617 = 16_0c
$def intson=csr0.0, rxints=csr0.1, reqi11 = csr0.4, oack = csr0.7
$def rfn = csr2.0, kmcreq = csr3.4, gobit = csr2.7
$def rxreply = 16_10; ! kmcreq+fn=0
==== ercm09/emas-2900/ring_ringk7s.txt ====
! file ring_ringk7s
!********************************
!* emas-2900 ring interface *
!* handler *
!* file: ringk7s *
!* date:20.nov.81 *
!* For use with KMC11 only *
!*********************************
!! stk = 300, strm = 1
%control 1
%include "deimosperm"
%constrecord (*) %name nil == 0
%begin
%conststring (7)vsn = "vsn007e"
==== ercm09/emas-2900/infoinput.txt ====
The New Info
1) The Display
It must be possible to 'poke' all the X25 links in the network. Ie, when
we put in Pad switches we must be able to test the lines. (the standard
of the current Pad poke would be sufficient).
It would be nice to be able to find out what Pads are up to - but this could
be done on a much reduced time, say 10mins. So a 'poke' would still be
done on the 3 min timer, and a fuller one every now and again.
The 'Host' poll will have to be changed to go XXX, it would be nice to get
VMS & Unix hosts as well as EMAS.
The concept of a fep poll will need to change, it is open to question as to
whether it is different from the 'line status' prod of above.
2) Logging
The current method is hopeless. It produces far too much paper. What would
be useful would be a monthly summary of how often things have gone down. An
enhancement would be a breakdown into broad categories, ie,
==== ercm09/emas-2900/erteicl_times.txt ====
!
!THE TIME TASK
!
!W.S.C. 27TH JULY 1976
!
!V006
!
!LAST UPDATED 12TH MAY 1977 09:40
!
!THIS TASK IS THE TIMING MECHANISM FOR THE STIMULATOR.IT GETS
!A CLOCK MESSAGE EVERY CTICS CLOCK TICKS AND MAINTAINS A LIST OF
!TASK REQUESTS FOR STIMULI.THESE ARE PASSED TO IT BY A PON
!WITH P_A1 THE NUMBER OF TICKS AND P_A3 A PARAMETER TO BE
!PASSED BACK TO THE CALLING TASK.
!IF P_A1<0 THIS IS TAKEN AS A REQUEST FOR A TIME STAMP
!IT SENDS BACK MINS IN P_A1,10TH SECS IN P_A2 AND LEAVES P_A3
!AS IT WAS.
!
!THIS TASK RUNS IN SLOT 28
!
!SET STACK TO 140,STREAMS=0
==== ercm09/emas-2900/cp4syswor.txt ====
; CP4SYS.ASM Keep filename the same, so that we do not have to
; change CP4DEF and CP4LNK
; KERMIT - (Celtic for "FREE")
;
; This is the CP/M-80 implementation of the Columbia University
; KERMIT file transfer protocol.
;
; Version 4.0
;
; Copyright June 1981,1982,1983,1984,1985
; Columbia University
;
; Originally written by Bill Catchings of the Columbia University Center for
; Computing Activities, 612 W. 115th St., New York, NY 10025.
;
; This file contains the system-dependent code and data for KERMIT
; the Amstrad range of personal computers.
;
; Martin D. Beer
; Department of Computer Science,
; University of Liverpool.
==== ercm09/emas-2900/cleans.txt ====
%EXTERNALROUTINE CLEANUP(%STRING (255) S)
%EXTERNALROUTINESPEC DEFINE(%STRING(255) S)
%STRING (255) T, U, V
%INTEGER I, J, K
%ON %EVENT 9 %START
SELECT OUTPUT(0)
WRITE(J, 1)
PRINTSTRING(" CHARS PRINTED
")
WRITE(K, 1)
PRINTSTRING(" CHARS THROWN AWAY
")
%RETURN
%FINISH
K=0; J=0
S -> T.("/").U
DEFINE("ST1,".T); DEFINE("ST2,".U.",1023")
SELECT INPUT(1); SELECT OUTPUT(2)
%CYCLE
==== ercm09/emas-2900/sys_sbldrl2s.txt ====
!**********
!* SBLD12S *
!* NB: NOT SAME AS BPL SBLD1S !!!!
!* DATE: 16.NOV.79 *
!* SUPERVISOR BUILD PROGRAM *
!*************************************
%PERMROUTINESPEC SVC(%INTEGER EP, %INTEGERNAME P1, %INTEGER P2)
%PERMINTEGERMAPSPEC INTEGER(%INTEGER X)
%PERMBYTEINTEGERMAPSPEC BYTEINTEGER(%INTEGER X)
%PERMINTEGERFNSPEC ADDR(%INTEGERNAME X)
%PERMINTEGERFNSPEC ACC
%CONSTINTEGERNAME DUMMY = 0
%CONSTINTEGERNAME NULLI = 0
%BEGIN
!* STK = 76000, STRM = 3
==== ercm09/emas-2900/lexiconfull.txt ====
10th 1st 2nd 3rd 4th 5th 6th 7th 8th 9th Aaron ABA Ababa abalone abase
abash abate abbas abbe abbot Abbott abbreviate abc abdicate abdomen
abdominal abduct Abe abed Abel Abelian Abelson Aberdeen Abernathy
aberrant aberrate abet abetted abetting abeyance abeyant abhorred
abhorrent Abidjan Abigail abject ablate ablaze ablution Abner Abo aboard
abode abolition abominable abominate aboriginal aborigine aborning
abound aboveboard aboveground abovementioned abrade Abraham Abram
Abramson abrasion abrasive abreact abreast abridge abridgment abroad
abrogate abrupt abscess abscissae absentee absenteeism absentia
absentminded absinthe absolution absorb absorbent absorption absorptive
abstain abstention abstinent abstractor abstruse absurd abuilding
abundant abusable abusive abut abutted abutting abysmal abyss Abyssinia
AC academia academician academy Acadia acanthus Acapulco accede
accelerate accelerometer accentual acceptant acceptor accipiter acclaim
acclamation acclimate acclimatize accolade accompaniment accompanist
accompany accomplice accomplish accordant accordion accost accountant
accouter Accra accredit accreditate accretion accrual acculturate
accusation accusative accustom ace acetic acetone acetylene ache
Achilles aching achromatic acid acidic acidulous Ackerman Ackley
acknowledgeable ACM acme acolyte acorn acoustic acquaint acquaintance
acquiescent acquisition acquisitive acquit acquittal acquitting acre
==== ercm09/emas-2900/node_nbsp9s.txt ====
! file 'nbsp9s'
!********************************
!* bsp to nsi interface *
!* file: nbsp9s *
!* date: 17.aug.82 *
!* based on kents_bsp4s & gate5 *
!*********************************
!! stk = 1000, strm = 1
%constinteger own node = 72
%constinteger fep address = 3
%owninteger sbrf = 0
%recordformat dmf(%integer i)
%constrecord (*) %name nil == 0
%control X'4001'
==== ercm09/emas-2900/capsub83.txt ====
To: Clive Nicholas From: B. Gilmore
Date: 09.Sep.83
Capital Submission
======= ==========
1) Additional Terminal (on top of the currently requested one) For my
new CO/1 starting in October.
2) Approx. #2000 for software for the Intel Development sys.
3) Approx. #10,000 for H/W upgrades to the Intel System (new emulation types)
4) Allowance for about 5 or 6 new Intel TCPs to replace current PDP11 ones
in the next year.
==== ercm09/emas-2900/b_lmacxs.txt ====
prep x25gen_lmacxs,lmacxs#imp
dimp11 lmacxs
link11 /map
lmacxs
.streams 1
.stack 1000
.end
lmacxs
destroy lmacxy
rename lmacxs#abs,lmacxy
==== ercm09/emas-2900/b_xprotyp.txt ====
EDIT x25_XPROTs,T#B
TA/198/A1STM/Versi/f<X>KZ(r/Running/i<X>i/ (Fast)/p1)2
E
prep t#b,xprot#imp,F,p,Y
IMP11 XPROT#IMP/XPROT#REL,xprot#lst
LINK11
ERCM09.I77PERM
XPROT#REL
.STACK 2000
.STREAMS 0
.NAME XPRY
.END
XPR1#OBJ
destroy xpry1y
rename xpr1#obj,xpry1y
alist11 xprot#imp/.lp23
==== ercm09/emas-2900/capsub85.txt ====
Capital Expenditure 1985/86
---------------------------
1. Replacement for Info Machine
This will replace the existing 11/34 with an 11/73 with hard
disk + floppy for backup. If this is not purchases, an 11/34
will be needed for the extra Bush Fep. Including BBC + Colour
Monitor.
11/73 etc + X25 I/F + BBC #13,811 (incl. VAT)
2. Extra 256Kb store board for the 11/44 that will be used for the
replacement Fstore machine.
256Kb Board
3. Three synchronous line drivers from Newcastle for the new Bush
Feps and for the EMAS Ring Fep.
3 Newcastle Boards
==== ercm09/emas-2900/ringtester_ringts.txt ====
! RINGTS/TXR. ALI AUG 1979
! DEVICE ROUTINE FOR RING OUTPUT. SEE RPTS & RINGRS
!
%CONTROL K'100001'
%BEGIN
%CONSTBYTEINTEGERNAME MY ID = K'160030'
%CONSTINTEGER TOLIM=5,TXQLIM=7,PKTLIM=1499,PTBLIM=127,%C
TXRSER=28,TXRDUMPSER=27,TRACESER=26 ;! PON/POFF SERVICE NRS
%RECORDFORMAT TXQF(%INTEGER PKTPOS,COUNT,SEQ,TIMEOUT)
%RECORD (TXQF) %ARRAY TXQ(0:TXQLIM) ;! TX MESSAGES WAITING TXFR OUT
%RECORD (TXQF) %NAME TXQ0
%INTEGERARRAY PKTBUF(0:PKTLIM) ;! HOLD PACKETS 4 ALL TXQ ENTRIES
%INTEGERARRAY PKT TRACE BUF(0:PTBLIM) ;! HISTORY LAST PKTS OUTPUT
!
%RECORDFORMAT PF(%BYTEINTEGER S,R,%INTEGER A1,A2,A3)
%RECORD (PF) P
%RECORDFORMAT PTF(%BYTEINTEGER S,R,%INTEGERARRAYNAME B,%INTEGER C,A)
%RECORD (PTF) %NAME PT
%RECORDFORMAT PRF(%BYTEINTEGER S,R,%INTEGER ERROR,TIMEOUT,SEQ)
%RECORD (PRF) %NAME PR
!
==== ercm09/emas-2900/telem.txt ====
Points that conflicy with the JNT spec.
1 Guarentee compatibility with PSS
2 Call stats in the clear packet
3 Call redirection (desirable feature)
4 Proper load sharing
5 Address matching, ie 000015000001 vs 15000001
6 Monitor performance of whole PSE
7 Warning of fault conditions
8 Availability of Net. Man. software
9 Count of various packets:- Call req, Inc call, Clear, Int, Reset
- Count of Level 2 packets ?
10 Zero the counts
11 DTE addresses displayed
12 Password on 'BASE:'
13 MTBF H/W & S/W ?
14 Buffer exhaustion -> crash
15 Hold a Link down
My Outstanding Queries
==== ercm09/emas-2900/lk0226.txt ====
Dump GEC logfile Version 1.3c
Log:ACCNTS.GKB850226
To:LK0226
First record at 21:47:57
Max Bf: 3400 Cur Bf: 2943 Vcs 86 Min Bf: 2870 Req Dl: 0
Date Covered was: 25/ 2/ 1985 23:59:58 Exchange 1
Frames Control 1 seg Calls RESETS Bytes/Sec ERRORS Total Frames Total Data F Av Bytes
Line In/sec %Out %In %Out %In Out In Total Out In Total Out In Out In Out In
2972-2 1.0 28% 62% 47% 55% 0 2144 52 220 119 1393 87582 84495 58441 92547 318 106
2972-1 0.3 81% 62% 18% 89% 2452 731 2 182 38 40 29092 68671 45678 75380 336 39
2988-2 0.8 91% 61% 56% 44% 2832 1143 19 528 113 57 70803 46417 116277 68893 388 138
Xcall 0.7 39% 43% 62% 66% 577 669 28 83 86 4 62772 65606 100855 100335 69 72
Janet 1.1 49% 78% 70% 40% 483 1087 623 32 68 223 97622 50468 40251 61777 60 90
==== ercm09/emas-2900/capsub86.txt ====
@device[x2700]
@make[report]
@majorheading[Capital Expenditure 1986/1987]
@section[CPSE Enhancements]
Continuation of last year's allocation. Though it may also be necessary
to purshase another switch (a second TelePAC) in this year if the demand for
lines continue. Cost between 15 and 25000.
@section[Console enhancements]
Continuation of last year's allocation.
@flushright[Brian Gilmore
February 1986]
==== ercm09/emas-2900/tudumps.txt ====
;
;
; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;
; CORE DUMP TO TU-58 CASSETTE TAPE
;
; DUMPS FROM LOCATION 0 TO 157000-2 TO BLOCK 20
;
; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;
.ABSOLUTE
.=157000
START: MOV #176160,R0 ;DEVICE ADDR-DL11
MOV #STACK,SP
;
; POWER UP SEQUENCE
;
BIS #1,4(R0) ;SET BREAK ON TX TO POWER UP
CLR R1 ;CHARACTER TO SEND
JSR PC,TX ;SEND IT
JSR PC,TX ;TWO NULLS REQUIRED
==== ercm09/emas-2900/kmc11_kring3s.txt ====
! Ring handler for KMC11
! DATE 03.dec.81
! FILE kmc11_kring3s
!
!
$list 1
$def flag=sp0, rstatl=sp1, rstath=sp2, rxstate=sp3, txstate=sp4
$def itim = sp5, rxhigh=sp6, rxmid=sp7, rxlow=sp8
$def otim = sp9, txhigh=sp10, txmid=sp11, txlow=sp12
$def temp=sp13, temp1=sp14, time = sp15
!
$def idatal = adr0, idatah = adr1, odatal = adr2, odatah = adr3
$def ibusl = adr4, ibush = adr5, obusl = adr6, obush = adr7
!
$def nprreq=npr.0, nonexmem=misc.0, timeout=misc.4, settime = 16_10
$def bits1617 = 16_0c
$def intson=csr0.0, rxints=csr0.1, reqi11 = csr0.4, oack = csr0.7
$def rfn = csr2.0, kmcreq = csr3.4, gobit = csr2.7
$def rxreply = 16_10; ! kmcreq+fn=0
$def txreply = 16_11; ! kmcreq+fn=1
==== ercm09/emas-2900/inc2_bformats.txt ====
%constinteger hdrl = 8 ;! Length of dummy area before data field
%recordformat qf(%record (qf) %name link, %integer count)
%recordformat x25f(%byte octet1, lcn, fn, %bytearray a(0:255))
%recordformat mef(%integer buff no, l, %byte owner, type, %c
(%bytearray a(0:249) %or (%string(2) padding, %byte octet1, lcn, fn, %c
(%bytearray data(0:243) %or %string(250) s ))))
%recordformat pf(%byte ser, reply, %c
((%byte fn, %byte s1 , %c
((%integer buff no, %byte gate port , task port) %c
%or %string(3) facility)) %c
%or (%byte a1, a2, b1, b2, c1, c2) %or (%integer a, b, c) %c
%or (%byte j1, process, j2, j3, len, j4)))
%recordformat cvf((%byte l, (%byte reason, cause, diags, %bytearray our ct(0:3), our segs(0:7),pss ct(0:3), pss segs(0:7)) %c
%or %bytearray a(0:26)) %c
%or %string(27) s)
%endoffile
==== ercm09/emas-2900/vp.txt ====
.PAGE
;****************** DPV 11 HANDLER *********************
; ELEMENT DVRVP IN NSILIB
;
; DPV11 Handler derived from the correspondng DUP11 handler.
;
; THIS VERSION PUTS THE FIRST 2 BYTES OF THE FRAME IN THE BUFFER'S
;PARAMETER BLOCK. THESE ARE NOT INCLUDED IN THE MESSAGE LENGTH.
;THE LENGTH COUNT MAY BE ZERO IF EITHER THE LENGTH REALY IS ZERO OR
;IF IT IS 256 BYTES. IN THE LATTER CASE THE POINTERS WILL BE NON-ZERO.
;
;** REGISTER DEFINITIONS **
DPVRCS=0
DPVRDB=2
DPVPSR=2
DPVTCS=4
DPVTDB=6
;** BIT DEFINITIONS **
TSOM=400
TEOM=1000
TEOMUP=2 ; TEOM in the upper byte.
==== ercm09/emas-2900/erte_dvibms.txt ====
;**************************************
;* DVIBMS *
;* INTERFACE BETWEEN HARDWARE AND IMP*
;* DATE: 27.AUG.80 *
;**************************************
PS=177776; PROCESSOR STATUS WORD
IDLEST=-1; SUPERVISOR IDLE FLAG
INTVAL=40; DEDICATED LOCATION FOR INTERRUPT NUMBER
ALARMF=44; DITTO - FOR CLOCK
PSECT=46; DITTO - CURRENT PSECT
LASTPS = 54
INTINF=56
UPAR=177640
UPDR=177600
UPAR0=40; INDEC INTO PSECT
UPDR0=UPAR0+2; DITTO
==== ercm09/emas-2900/sys_sbldrl3s.txt ====
! FILE 'SBLD3KS'
!**********
!* SBLD13S *
!* NB: NOT SAME AS BPL SBLD1S !!!!
!* DATE: 17.MAR.80 *
!* SUPERVISOR BUILD PROGRAM *
!*************************************
%PERMROUTINESPEC SVC(%INTEGER EP, %INTEGERNAME P1, %INTEGER P2)
%PERMINTEGERMAPSPEC INTEGER(%INTEGER X)
%PERMBYTEINTEGERMAPSPEC BYTEINTEGER(%INTEGER X)
%PERMINTEGERFNSPEC ADDR(%INTEGERNAME X)
%PERMINTEGERFNSPEC ACC
%CONSTINTEGERNAME DUMMY = 0
%CONSTINTEGERNAME NULLI = 0
%BEGIN
==== ercm09/emas-2900/tsbsp_stab.txt ====
!values for the states variable
%CONSTINTEGER FREE= 1
%CONSTINTEGER WT BUF= 2
%CONSTINTEGER WT NS= 3
%CONSTINTEGER WT BUF NS= 4
%CONSTINTEGER WT ACCN= 5
%CONSTINTEGER WT ACCND= 6
%CONSTINTEGER DATA= 7
%CONSTINTEGER WT DISCN= 8
%CONSTINTEGER WT DIN= 9
%CONSTINTEGER WT RESETN= 10
%CONSTINTEGER WT RESETI= 11
%CONSTINTEGER WT ACCI= 12
%CONSTINTEGER WT ACCID= 13
%CONSTINTEGER WT DISCI= 14
%CONSTINTEGER WT DG REPLYI= 15
%CONSTINTEGER WT DG REPLYN= 16
!values for the events variable
==== ercm09/emas-2900/telepacrp2.txt ====
@make[report]
@device[x2700]
@flushleft[Edinburgh Regional Computing Centre]
@majorheading[TelePAC - List of outstanding bugs]
@heading[Hardware]
One problem has emerged when using lines timed by the TelePAC. CRC errors
are observed on the line and in the worst cases some faulty blocks are
passed as correct by the CRC check. On investigation this would appear to
be caused by using cables that are too long although the situation was
confused by widely differing margins in particular V24 interface boards.
The better boards will run cables of up to 40 metres in length with no
problems at 9.6kb/s. The worst boards start to have problems at around
25 metres. This means that the boards are strictly within spec (50 feet)
but SEEL and Telefile are looking at the problem and expect to find a
solution.
@heading[Software]
The meeting between the JNT, Telefile, SEEL, Cambridge and ERCC on the
==== ercm09/emas-2900/kents_nsiws.txt ====
!**********************
!* NSIWS/NSIWY *
!* DATE: 25.SEP.79 *
!*********************
%CONSTSTRING (7) VSN = "VSNK01B"
!! STACK = 400, STREAMS = 3
!! NOTE: FOR VERSIONS THAT ARE RUN OUT OF A 2900 FEP SYSTEM,
!! MESSAGES FROM THE NETWORK SHOULD BE ENABLED - SEE
!! THE COMMENT AT 'MESSAGES ENABLED'
%CONTROL K'100001'
!STACK=400, STREAMS=3
%RECORDFORMAT XF(%BYTEINTEGER UNIT,FSYS,%BYTEINTEGERARRAY FNAME(0:5))
%EXTERNALPREDICATESPEC READ FNAME(%RECORD(XF)%NAME FILE)
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%BEGIN
%%RECORDFORMAT ITPF(%BYTEINTEGER CNSL,HB1,HB2,LEN, %C
==== ercm09/emas-2900/libtalk3.txt ====
{{colour(thickblack)}}
{{label(4,25,.6,0,"File Transfer Rates")}}
{{label(5,17,.3,0,"")}}
9.6 Kb 4.8 Kb 1.2Kb
1 M Byte 14 Mins 24 Mins 1 Hour 50 Mins
10 M Byte 2h 18 4h 36 18 hours
30 M Byte 7 hours 14 hours 56 hours
50 M Byte 11h 30 23 hours 4 Days
==== ercm09/emas-2900/kent#jun81_notes.txt ====
FEPF created 12/6/81 after furore about EMAS cntrl D has died
down. Changes to ITPS, RJES, BSPS
ITPS
Buffer address validation code added.
Delay int Y if input not enabled till console nexts attempts
to log on
Add special INT 0 to send terminal address into EMAS N.B. in
UKC version the node number is always zero.
The hardware seg is now seg 0 as the code is > 1 segment
RJES
Includes RDE code for page counting for remote printers.
Seg 0 used as hardware seg as code >1 seg.
Buffer address validation code added.
Check that high level control messages are for stream 5,
(hopefully this is not now useful).
==== ercm09/emas-2900/nsource.txt ====
!**********************************************************
!* *
!* PSS X-25 Level 3 Protocol Handler *
!* *
!* GATEX *
!* *
!* Version 9.62 14 Mar 1986 *
!* *
!**********************************************************
!*
%control 1
%begin
#options
!************************************
!* *
!* Declarations *
!* *
!************************************
!*
!****** Constintegers ******
==== ercm09/emas-2900/rxdump.txt ====
;
; RXO2 DEIMOS SYSTEM DUMPER
;
; DUMPS ALL OF STORE (64K WORDS) TO UNIT 1
; STARTING AT SECTOR 1 OF TRACK 0. SECTORS INTERLEAVED.
;
.ABSOLUTE
.=1000
SECMAP: .BYTE 1,3,5,7,9.,11.,13.,15.,17.,19.,21.,23.,25.
.BYTE 2,4,6,8.,10.,12.,14.,16.,18.,20.,22.,24.,26.
CONTW: .WORD 421
;
; R0 POINTS AT DEVICE
; R1 TRACK
; R2 SECTOR
; R3 STORE ADDR
; R4 ALSO USED.
;
START: MOV #177170,R0 ;DEV ADDR
CLR R1
CLR R2
==== ercm09/emas-2900/news.txt ====
$a line=29;just=1;invert=0
$l1
WHAT A WASTE
$p1 Clickety-clack, clickety-clack. Just another goods train trudging
through Morningside on our Victorian surburban line? Probably. But
it might just be carrying nuclear waste! Environmentalists suspect that waste
from Hunterston may have already been sent through Edinburgh en route to
Windscale, when the west coast line has been blocked. The risk of waste being
routed along the back of Cluny Gardens, under Morningside Road, and along
by Balcarres Street will certainly be much greater if Torness comes into
operation.
$p1 Experts generally concede that transport is the most vulnerable part
of the entire nuclear operation from the point of view of accident or sabotage.
What would happen if a train were derailed, or a terrorist group bought a
flat overlooking the railway and used it to launch an attack?
$p1 Remember that in 1979 members of the Freedom of Information Campaign
walked into Stratford Station in London with a full-sized replica bazooka,
approached a nuclear waste flask at a flatform, pointed the bazooka at it,
and took photos of the event. British Rail memorably observed that the
group 'had a perfect right to be on the platform as long as they had
bought a ticket. It was not the job of British Rail staff to apprehend
==== ercm09/emas-2900/house2.txt ====
-1
745 35 3 13250 6625 L
468 52 3 13750 6875 G
441 45 4 16000 8000 M
1 14 3 15750 8820 D
169 36 4 13250 6890 D
440 45 4 15250 6625 F
660 42 3 16750 10217 S
23 33 3 13500 6750 F
135 46 3 15250 7625 M
832 22 3 11500 5750 F
412 10 3 14750 7375 M
131 43 3 13500 6750 G
168 36 3 12500 7125 L
536 46 3 15000 7500 M
109 22 3 11000 5500 F
117 6 3 15750 7875 D
31 35 3 13500 7425 L
385 6 3 15250 7777 M
337 22 3 15750 7875 M
301 36 3 12500 7000 F
==== ercm09/emas-2900/sys_moth77s.txt ====
!************
!* moth6s *
!* 14.jul.81*
!************
%control 1
%include "deimosperm"
%begin
%recordformat pf(%byteinteger service, reply, %integer a1, a2, a3)
%record (pf)p
%constintegername sr0 == k'117572'
! indexed into seg 4
%constintegername sr2 == k'117576'
%routinespec octal(%integer n)
==== ercm09/emas-2900/fepb_nsiws.txt ====
!**********************
!* NSIWS/NSIWY *
!* DATE: 25.SEP.79 *
!*********************
%CONSTSTRING (7) VSN = "VSNK01B"
!! STACK = 400, STREAMS = 3
!! NOTE: FOR VERSIONS THAT ARE RUN OUT OF A 2900 FEP SYSTEM,
!! MESSAGES FROM THE NETWORK SHOULD BE ENABLED - SEE
!! THE COMMENT AT 'MESSAGES ENABLED'
%CONTROL K'100001'
!STACK=400, STREAMS=3
%RECORDFORMAT XF(%BYTEINTEGER UNIT,FSYS,%BYTEINTEGERARRAY FNAME(0:5))
%EXTERNALPREDICATESPEC READ FNAME(%RECORD(XF)%NAME FILE)
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%BEGIN
%%RECORDFORMAT ITPF(%BYTEINTEGER CNSL,HB1,HB2,LEN, %C
==== ercm09/emas-2900/inc2_sers.txt ====
!PSS Gateway Service Numbers
!DEIMOS hardware driver sers etc
! 1 tty #1
! 2 CLI
! 3 DK
! 4 DIRT
! 5 LOAD
! 6 TU16 (-5) & MOTH
! 8 Big disc #1 - ERTE Big disc handler BDKH
! 9 Big Disc #1 DIR
!11 DQS11S (KMC/DU11)
!12 LP
!13 LP #2 ?
!17 Spool
!18 SPCI
!19 tty #2
!20 CLI #2
!21 tty #3
!22 CLI #3
!23 CR
==== ercm09/emas-2900/ftppd_buildb.txt ====
new
PREP ftppd_source,FTP#IMP,x,CLEAN,b
DIMP11 ftp#imp
LINK11 /FTP
FTP
.STACK 3000
.STREAMS 2
.NAME FTPQ
.stackseg 6
.END
FTP
destroy ftpqy
rename ftp#abs,ftpqy
old
==== ercm09/emas-2900/house6.txt ====
-1
745 35 3 13250 6625 L
468 52 3 13750 6875 G
441 45 4 16000 8000 M
1 14 3 15750 8820 D
169 36 4 13250 6890 D
440 45 4 15250 6625 F
660 42 3 16750 10217 S
23 33 3 13500 6750 F
135 46 3 15250 7625 M
832 22 3 11500 5750 F
412 10 3 14750 7375 M
131 43 3 13500 6750 G
168 36 3 12500 7125 L
536 46 3 15000 7500 M
109 22 3 11000 5500 F
117 6 3 15750 7875 D
31 35 3 13500 7425 L
385 6 3 15250 7777 M
337 22 3 15750 7875 M
301 36 3 12500 7000 F
==== ercm09/emas-2900/telematics.txt ====
@make[report]
@device[x2700]
@majorheading[Telematics]
@section[General]
Telematics offer a range of X.25 networking products called the Net 25 Product
Family including concentrator switches, primary switches, backbone switches,
PADs and supervisory nodes. The equipment is sold in the UK by Telematics and
also by ICL and other companies including IAL who sell it under their own label.
Telematics is certified for use on most public data networks. The maximum
packet size supported is 1024 bytes.
@section[Hardware Description]
The Net 25 switches are based on a proprietary 32 bit bus that is stated to
run at 32 Megabytes/sec.
There are three models available, the P500, P1000 and P2000. The main
difference being the number of slots available. The particular switch
confgurations, described as Net 25/XXX are constructed from the appropriate
model.
The Net 25/100 switch consists of the bus and a
general purpose M68000 processor card, a memory controller and memory, either
a floppy or a hard disk, and an Network Communications Processor NCP.
==== ercm09/emas-2900/b_sbld5.txt ====
imp11 gen_sbld5s/sbld5s#rel,l
link11
sbld5s#rel
i77perm
.stack 72000
.streams 4
.end
sbld5y
alist11 gen_sbld5s,sbld5s#rel/.lp23
==== ercm09/emas-2900/kbstats.txt ====
==== ercm09/emas-2900/advent_prog.txt ====
10 REM ADVENTURE/2960 Version 1.1
11 REM This program is relatively bug-free, but one must realize
12 REM that Murphy's Law still prevails!
13 REM
14 REM ADVENTURE: Programmed in VME/K BASIC by Kev Ashley &
15 REM Robert Dunlop. Based on a version by Benjamin Moser.
16 REM The basic layout of the game was conceived by
17 REM Don Woods & Willie Crowther, both of M.I.T.
18 REM
20 PRINT "Adventure 1.1 on ";SEG$(DAT$,1,2);"-";SEG$(DAT$,3,4);
21 PRINT "-";SEG$(DAT$,6,7)
30 FILE *1: "ERCM09.ADVENT_ITEM"
31 FILE *2: "ERCM09.ADVENT_DESC"
32 FILE *3: "ERCM09.ADVENT_MESS"
33 FILE *4: "ERCM09.ADVENT_MOVE"
36 FILE *5: "GAMESAVE-MOD"
37 PRINT *5:" "
38 RESET *5
40 DIM H$(4),K(149),J(5),N$(46),O(15),S(35),T$(5),V(100),W(149),W$(149)
45 DIM Q(35)
50 REM ASK IF HE WANTS DIRECTIONS
==== ercm09/emas-2900/prt9ns.txt ====
! FILE 'NODE_PRT11NS'
!*********************
!* PRT1S/PRT9Y *
!* DATE: 14.JAN.81 *
!*VERSION FOR NODE *
!*HISTORY UNCERTAIN *
!!!!!!!!!!!!!!!!!!!!!!
!STACK = 140
%CONTROL X'100001'; ! TRUSTED PROGRAM AND QUICK
! ROUTINE ENTRY AND EIS
%CONSTINTEGER KERNEL SER = 29
%OWNINTEGER SECONDARY = 0; !PRIM = 0, SEC = 1
%OWNINTEGER SECAD = 9; !SECONDARY ADDRESS
%CONSTINTEGER WMAX = 56; ! MAX NO OF WRITES
%CONSTINTEGER SFMASK = 63; ! CIRC BUFFER SIZE FOR WRITES
%CONSTSTRING (7) VSN = 'VSN009L'
==== ercm09/emas-2900/sys_bvt1s.txt ====
!**************
!* BVT1S *
!*DA:09.APR.80*
!**************
%CONTROL K'100001'; ! 'SYSTEM' PROGRAM (FAST ROUTINE ENTRY/EXIT)
%PERMROUTINESPEC SVC(%INTEGER EP, P1, P2)
%BEGIN
%SYSTEMROUTINESPEC MAPHWR(%INTEGER SEGS)
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%RECORDFORMAT PF(%BYTEINTEGER SERVICE, REPLY, %C
%INTEGER A1, A2, A3)
%RECORDFORMAT TTF(%INTEGER KBS, KBD, TTS, TTD)
%RECORDFORMAT BUFF(%INTEGER PT, LAST, %BYTEINTEGERARRAYNAME B)
%RECORDFORMAT BUFFX(%INTEGER PT, LAST, ARRAYPT)
%CONSTRECORD (BUFFX) %NAME NULL = 0
==== ercm09/emas-2900/b_ringk.txt ====
imp11 ringk7s/,ll
link11
ringk7s#rel
i77perm
.stack 1000
.streams 1
.end
ringk7y
==== ercm09/emas-2900/coral.txt ====
==== ercm09/emas-2900/edintcps.txt ====
EDINBURGH TCP INFO.
-------------------------
Site ! STORE ! SYNC. ! ASYNC. ! HOW !CONNECTED! NO.OF ! ! DEVICES !
! SIZE ! I/F ! I/F ! LOADED ! WHERE ! LINES ! ! !
! ! ! ! ! ! ! ! !
------------------------------------------------------------------------------------------------------------------------------------
___ATB1__!_32K___!_DPV-11_!_DZ-11___!_TU58_DL_!_NODE 6__!___32_____!___________!_______________!
___ATB2__!_32K___!_DPV-11_!_DZ-11___!_TU58_DL_!_NODE 6__!___24_____!___________!_______________!
___ATB3__!_32K___!_DUP-11_!_DZ-11___!_NODE_6__!_NODE 6__!___16_____!___________!__LP___________!
___BUSH__!_16K___!_DUP-11_!_DZ-11___!_Node_6__!_NODE 6__!___16_____!___________!_______________!
___CHEM__!_32K___!_DPV-11_!_DZ-11___!_TU58_DL_!_NODE 6__!___24_____!___________!__LP___________!
___CSA1__!_20K___!_DUP-11_!_DJ-11___!_Node_9__!_NODE 9__!___16_____!___________!__LP___________!
___CSA2__!_32K___!_DUV-11_!_TTY HAND!_TU58_DL_!_NODE 6__!___26_____!___________!_______________!
___EFCR__!_32K___!_DPV-11_!_DZ-11___!_TU58_DL_!_NODE 6__!___16_____!___________!__LP___________!
___ELIB__!_28K___!_DUP-11_!_DH-11___!_NODE_6__!_NODE 6__!___48_____!___________!_______________!
___ENG1__!_24K___!_DP-11__!_DH-11___!_Ptape___!_NODE 6__!___16_____!___________!_______________!
___ERSK__!_32K___!_DUV-11_!_TTY HAND!_TU58_DL_!_NODE 6__!___26_____!___________!_______________!
==== ercm09/emas-2900/feploads.txt ====
!*************************
!* loadups/loadupy *
!* DATE: 05.jan.82 *
!* This is a special version of loadup *
!* to load the command :- *
!* batch go/.tt *
!***************************************
%include "deimosperm"
%begin
%constinteger load ser = 5
%recordformat pe(%byteinteger service, reply, (%integer a1, %c
%byteintegername b, %integer c) %or %c
(%byteinteger line, line type, %integer ad, %byteinteger rxint, txint))
%record (pe)p
%integer i, j, k, time
==== ercm09/emas-2900/ringtester_rpts.txt ====
! RING PROTOCOL TEST PROGRAM. RPTS/RPT.
! A.L. IBBETSON JULY 1979. UNIKENT.
!
! PROVIDES FACILITIES FOR CHECKING BYTE STREAM PROTOCOL
! HANDLING ON ANOTHER DEVICE ON THE CAMBRIDGE RING
!
%CONTROL K'100001'
%BEGIN
%RECORDFORMAT PF(%BYTEINTEGER SERVICE,REPLY, %INTEGER A1,A2,A3)
%RECORDFORMAT PRF(%BYTEINTEGER SERVICE,REPLY,%C
ERROR,STATUS, %INTEGER LEN,A3)
%RECORDFORMAT PTF(%BYTEINTEGER SERVICE,REPLY, %INTEGER ACTION,%C
LEN, %BYTEINTEGERARRAYNAME BUF)
!
%CONSTBYTEINTEGERNAME MYID = K'160030' ;! MY TASK NUMBER
%CONSTBYTEINTEGERNAME INT = K'160060' ;! FIXED LOC FOR INT FACILITY
%CONSTINTEGER FIVE SECS = 250, TWO SECS = 100
!
! MANIFESTS FOR COMMUNICATION WITH RING DRIVER TASK (SEE RINGRS)
!
%CONSTBYTEINTEGER RING SER = 29 ;! SERVICE NUMBER
==== ercm09/emas-2900/tsbsp_tscodes.txt ====
%CONSTINTEGER CONNECT=1
%CONSTINTEGER ACCEPT CALL=2
%CONSTINTEGER DISCONNECT=3
%CONSTINTEGER ENABLE INPUT=4
%CONSTINTEGER PUT OUTPUT=5
%CONSTINTEGER EXPEDITED DATA=6
%CONSTINTEGER RESET=7
%CONSTINTEGER DATAGRAM=8
%CONSTINTEGER DATAGRAM REPLY=9
%CONSTINTEGER ENABLE FACILITY=10
%CONSTINTEGER DISABLE FACILITY=11
%CONSTINTEGER ENABLE OUTPUT=4
%CONSTINTEGER INPUT HERE=5
%ENDOFFILE
==== ercm09/emas-2900/erte_dupxxe.txt ====
!**************
!* DUPXXE *
!*DA:10.JUN.80*
!**************
%CONTROL K'100001'; ! 'SYSTEM' PROGRAM AND
! TRUSTED PROG
%RECORDFORMAT PARF(%INTEGER TYPE, ADDRESS, LEN, FLAG)
%EXTERNALROUTINE DUP11E(%RECORD (PARF) %NAME P)
%SYSTEMROUTINESPEC MAPHWR(%INTEGER SEG)
%SYSTEMINTEGERFNSPEC GETID
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMINTEGERFNSPEC MAP ABS(%INTEGER ADR, LEN, REQ ID)
%PERMINTEGERFNSPEC SVC(%INTEGER EP, P0, P1)
%RECORDFORMAT PF(%BYTEINTEGER SER, REPLY, %INTEGER A1, A2, A3)
==== ercm09/emas-2900/b_fepload.txt ====
e gen_loadups/temp
f+batch go/.tt+s+LOAD FEP+
1
%c
imp11 temp
link11
temp#rel
i77perm
.stack 1000
.streams 0
.name ldup
.end
fepldupy
==== ercm09/emas-2900/eresu80.txt ====
alnwickhill
c 1435
l 1156
b 694
m 297
p 53.30
*
baberton
c 1573
b 716
s 582
l 475
m 857
p 51.65
*
balerno
c 1513
s 723
l 687
m 790
p 49.94
==== ercm09/emas-2900/b_nodesim.txt ====
dimp11 nodesim
link11 /nodesim
nodesim
ercm11.newimp
.stack 5000
.streams 0
.end
nodesim
list nodesim#abs,.fep72
==== ercm09/emas-2900/eresu82.txt ====
Alnwickhill/Kaimes
c 2081
l 1937
b 1764
s 516
m 144
p 50.9
*
Balerno/Baberton
c 3802
b 2317
s 1059
l 781
m 1485
p 61.1
*
Braidburn/Fairmilehead
c 3811
b 3120
l 451
s 373
==== ercm09/emas-2900/gecpaper.txt ====
Questionaire for Desired PSE Enhancements
-----------------------------------------
Please examine the detailed description of each enhancement on the seperate
sheets and then categorise the priority you attach to each enhancement on
the form below in the following way.
H - High Priority
M - Medium Priority
L - Low Priority
N - Not Interested
Attempt to distribute your priorities evenly, an answer of high priority for
everything will not tell us anything.
Please return the form to Mike Capp at GEC.
PSE Network Network
Control Control Admin. External Other
==== ercm09/emas-2900/fepmons.txt ====
%externalroutine fepmon(%string (255) s)
%dynamicroutinespec fepgraphs(%string (255) s)
%externalroutinespec define(%string (255) s)
%string (255) t, u, uu, title, uuu
%recordformat ff( %c
%integer tim, users,sta,cpu,pkts,sbr,byt,rjeo,rjei)
%integer i, diff, k, l, us, cp, kb, pk, rj, who, who1, who2
%owninteger users, sta, cpu, pkts, sbr, byt, rjeo, tim, rjei
%owninteger points, fep no = -1
%constintegerarray cpu f(0:6) = %c
235(3), 197, 550(3)
%conststring (9) %array fep name(0:5) = %c
"2980(0) ", "2980(1) ", "2980(2) ",
"2972(4) ", "2972(1) ", "2972(2) "
%record (ff) f
!!
!!
!!
%routine rd(%integername n)
read(n)
%if n< 0 %then n = n+32768*2
==== ercm09/emas-2900/newsys_fsys79.txt ====
!******************************
!* file system handler *
!* fsys1s/fsys1y *
!* date: 30.Jun.81 *
!******************************
!*w.s.c. 25th august 1976
!*b.g. 27.mar.78
!*this handler is the file system utility to replace the
!*existing one in deimos to permit a file system to be
!*created on the ampex 9500 disc as well as the rk05's.
!*it is a conceptual copy of the rk05 file system handler
!*except that a buffer pool is used for block descriptors
!*and directory blocks.
!*the code is shared by 3 system slots,4 for the rk05's,
!*and 9,15 for the ampex disc.the ampex disc is logically
!*divided into two,units 2&3.
==== ercm09/emas-2900/kxprot.txt ====
IMP11 kntkv11/XPROT#REL,xprot#lst
LINK11
ERCM09.I77PERM
XPROT#REL
.STACK 2000
.STREAMS 0
.NAME XPR1
.END
XPR1#OBJ
destroy xpr1y
rename xpr1#obj,xpr1y
alist11 kntkv11,xprot#rel/.lp23
==== ercm09/emas-2900/coral2i.txt ====
%begin
{'CORAL' TEST RESPONDER}
{'COMMENT' VERSION 1.1}
{}
{The official definition of Coral 66 does not provide for the output of}
{data at run time. However the facilities provided by the following}
{routines are useful within the Test Responder for logging/debugging}
{purposes. They can be supplied by the implementor either by adapting}
{existing routines or by writing new ones.}
{}
{The use of these routines is optional. If the implementor does not wish}
{to generate such output, he can define these procedures to be null,}
{comment them out, or delete each occurrence of them from the code. The}
{occurrences within read.command.octet (chart 3) have been commented out,}
{because for normal use they produce too much output:- one line per octet}
{received. The function of each of the routines is as follows:}
{}
{}
{trwritestring - writes the string supplied as the parameter to the}
{ output buffer.}
==== ercm09/emas-2900/erte_dvxbms.txt ====
FILE 'ERTE_DVXBMS'
;**************************************
;* DVIBMS *
;* INTERFACE BETWEEN HARDWARE AND IMP*
;* DATE: 11.JUN.80 *
;**************************************
PS=177776; PROCESSOR STATUS WORD
IDLEST=-1; SUPERVISOR IDLE FLAG
INTVAL=40; DEDICATED LOCATION FOR INTERRUPT NUMBER
ALARMF=44; DITTO - FOR CLOCK
PSECT=46; DITTO - CURRENT PSECT
LASTPS = 54
INTINF=56
UPAR=177640
UPDR=177600
UPAR0=40; INDEC INTO PSECT
==== ercm09/emas-2900/ibmdoc_a1.txt ====
1
0 Ref. A1
-
-
-
-
-
-
-
-
PROTOCOLS IN THE SERC/NERC NETWORK (Ref.A1)
+ _________ __ ___ ____ ____ _______ ___ __
-
-
-
-
-
-
-
Version 6
+ _______ _
==== ercm09/emas-2900/erteicl_clog6s.txt ====
! FILE 'CLOG6S'
!
!
! CLOG CLOG CLOG CLOG CLOG CLOG CLOG CLOG CLOG CLOG CLOG CLOG
! CLOG CLOG CLOG CLOG CLOG CLOG CLOG CLOG CLOG CLOG CLOG CLOG
!
!
!
%CONTROL K'001001'
!
!
%BEGIN
!
!
!
!G.J.B. // J.C.A. STARTED 10:11:76
! ??? LAST UPDATE 15:3:79 14:10 - FILE CLOG5S
!
! FOR ERTE MK.6 MK. 3 MODS MARKED !&&
! FOR ERTE MK.3 MK. 4 MODS MARKED !@@
! SET UP FOR F1 STANDARD COMMANDS
==== ercm09/emas-2900/ibmdoc_a2.txt ====
1
0 Ref. A2
- A PROTOCOL FOR USING VMCF (Ref. A2)
+ _ ________ ___ _____ ____ ___ __
0 Version 8
+ _______ _
0 8 March 1982
+ _ _____ ____
0 P M Girard
+ _ _ ______
1. Introduction
+ ____________
0 This paper defines a protocol for conducting multiple
conversations between any two virtual machines, built
around the IBM Virtual Machine Communication Facility
(Ref. M3).
-
0 2. Basic Requirements
+ _____ ____________
0 (a) Ability to set up and close down multiple logical
"connections", each with individual flow control.
==== ercm09/emas-2900/prt11s.txt ====
! FILE 'NODE_PRT11NS'
!*********************
!* PRT1S/PRT1Y *
!* DATE: 03.MAR.81 *
!*VERSION FOR NODE *
!*HISTORY UNCERTAIN *
!!!!!!!!!!!!!!!!!!!!!!
!STACK = 140
%CONTROL X'100001'; ! TRUSTED PROGRAM AND QUICK
! ROUTINE ENTRY AND EIS
%CONSTINTEGER KERNEL SER = 29
%OWNINTEGER SECONDARY = 0; !PRIM = 0, SEC = 1
%OWNINTEGER SECAD = 9; !SECONDARY ADDRESS
%CONSTINTEGER WMAX = 56; ! MAX NO OF WRITES
%CONSTINTEGER SFMASK = 63; ! CIRC BUFFER SIZE FOR WRITES
%CONSTSTRING (7) VSN = 'VSN011B'
==== ercm09/emas-2900/ibmdoc_a3.txt ====
1
0 Ref. A3
- THE APPLICATION/NCP PROTOCOL USING VMCF (Ref. A3)
+ ___ ___________ ___ ________ _____ ____ ___ __
0 Version 5
+ _______ _
0 8 March 1982
+ _ _____ ____
0 P M Girard
+ _ _ ______
1. Introduction
+ ____________
0 This supersedes the paper called "The Application/NCP
Interface via VMCF", whose name was a source of confusion.
0 Ref. A2 describes a general protocol for communicating
between two virtual machines using VMCF. Communication
between an Application virtual machine and NCP is a
particular case of this, and uses a subset of the general
protocol. The purpose of this paper is to specify the
subset.
0 It is important in practice that implementors of
==== ercm09/emas-2900/sys_load7s.txt ====
! FILE 'LOAD7S'
!**************
!* LOAD17S *
!* 25.MAR.81 *
!**************
%PERMINTEGERFNSPEC SVC(%INTEGER EP, %INTEGER P1, %INTEGER P2)
%PERMINTEGERMAPSPEC INTEGER(%INTEGER X)
%PERMBYTEINTEGERMAPSPEC BYTEINTEGER(%INTEGER X)
%PERMINTEGERFNSPEC ADDR(%INTEGERNAME X)
%SYSTEMINTEGERFNSPEC GETID
%CONTROL K'100001'; ! TRUSTED
%RECORDFORMAT DUMREC(%INTEGER X)
%CONSTRECORD (DUMREC) %NAME NULL = 0
!***********************************
!* *
==== ercm09/emas-2900/response_n0t9dec22.txt ====
Node = 0, Term = 9 - time: 9.45 - 10.27 22.dec.81
0
0
1935
3279
1158
556
218
126
64
28
12
6
4
1
2
0
0
2
0
0
==== ercm09/emas-2900/ibmdoc_a4.txt ====
1
0 Ref. A4
- SECNET - ADDRESSING SCHEME (Ref. A4)
+ ______ __________ ______ ___ __
0 Version 2
+ _______ _
0 8 March 1982
+ _ _____ ____
0 P M Girard
+ _ _ ______
1. The Basic Mechanism
+ ___ _____ _________
0 The scheme is designed to be compatible with the Study
Group 3 Transport Service specification (Ref. A6).
0 Process A wishes to communicate with Process B across a
number of networks joined by "gateways". There is a
"transport station" at each end, and these, together with
the intervening gateways, are responsible for setting up
the necessary "connection".
0 Logically, a "transport station" is very similar to a
"gateway", and to simplify the description the term
==== ercm09/emas-2900/asst11j.txt ====
%EXTERNALROUTINE ASS11(%STRING (63)FILES)
%EXTERNALINTEGERFNSPEC SMADDR(%INTEGER CHAN, %INTEGERNAME LENGTH)
%EXTERNALROUTINESPEC DEFINE(%STRING (63)S)
%DYNAMICSTRING (8) %FN %SPEC DATE
%DYNAMICINTEGERFNSPEC TIME40(%INTEGER IN)
%DYNAMICINTEGERFNSPEC TIME03(%INTEGER IN)
%DYNAMICINTEGERFNSPEC TIME45(%INTEGER IN)
%ROUTINE DUMP BIN(%HALFINTEGERARRAYNAME CODE, %C
%INTEGER START, FINISH, %STRINGNAME T, %INTEGERNAME FLAG)
%INTEGER CHECK, J
%ROUTINE PUT(%INTEGER N)
%INTEGER M
M = N>>8&255
N = N&255
PRINTCH(N); PRINTCH(M)
CHECK = CHECK+(N+M)
%END
%RETURN %IF START < 0; !?????
==== ercm09/emas-2900/ibmdoc_a5.txt ====
1
0 Ref. A5
- SERCNET - ADDRESSING SUMMARY (Ref. A5)
+ _______ __________ _______ ___ __
0 Version 2
+ _______ _
0 8 March 1982
+ _ _____ ____
0 P M Girard
+ _ _ ______
0 1. This paper summarises the essential points needed for
implementation. For a more detailed discussion see the
paper "SERCnet - Addressing Scheme" (Ref. A4).
0 2. A name may be either an "address" or a "title".
+ ____
0 3. An address is a decimal number up to 15 digits long. If
+ _______
the number is 12 digits long or less, it represents a pure
DTE number. If it is more than 12 digits long, any digits
beyond the 12th represent a Level 3 sub-address. Leading
zeroes may be optionally omitted in all contexts if the
==== ercm09/emas-2900/nodemon2s.txt ====
%EXTERNALROUTINE NODEMON(%STRING (255) S)
%EXTERNALROUTINESPEC NODEGRAPHS(%STRING (255) S)
%EXTERNALROUTINESPEC DEFINE(%STRING (255) S)
%STRING (255) T, U, UU, TITLE, UUU
%RECORDFORMAT FF( %C
%INTEGER TIM, CPU, ATT,CON,NIF,ERR, %INTEGERARRAY A(4:21))
%OWNINTEGERARRAY AA(0:21)=0(22)
%OWNINTEGERARRAY R(0:21) = 0(22)
%INTEGER I, DIFF, K, L, US, CP, KB, PK, RJ
%OWNINTEGER USERS, STA, CPU, PKTS, SBR, BYT, RJEO, TIM, RJEI
%OWNINTEGER POINTS,ATT,CON,MES,COK,CFAIL,BL,ST,NIF,ERR
%RECORD F(FF)
!!
%OWNINTEGER CPU IDLE = 141; ! 160=FAST STORE, 141=SLOW STORE
!!
!!
%ROUTINE RD(%INTEGERNAME N)
READ(N)
%IF N< 0 %THEN N = N+32768*2
%END
!!
==== ercm09/emas-2900/tsbsp_tst_source.txt ====
!
! transport service interface transmitter
! copies file 1 to the TS interface
!
!prompts the user for the destination names
!
!The program uses a state table to control the actions, the state
!table is included in symbolic and data form below
! copyright University of Kent at Canterbury 1982
! stack=300, streams=1
!
%CONTROL 1
%BEGIN
%RECORDFORMAT MEF(%RECORD (MEF) %NAME LINK, %BYTEINTEGER LEN, TYPE, %C
( (%BYTEINTEGERARRAY PARAMS(0:251)) %ORC
==== ercm09/emas-2900/networks85_title.txt ====
@make[article]
@device[x2700]
@style[spacing 1]
@begin[text,topmargin=+1.1inches,leftmargin=+0.25inches,rightmargin=+0.5inches]
blank
@newpage
@majorheading[AN APPRAISAL OF THE ADVANTAGES & DISADVANTAGES
OF USING A PABX FOR DATA TRAFFIC]
@BLANKSPACE[0.5in]
@centre[@b[Brian Gilmore
Communications Manager
Edinburgh Regional Computing Centre
University of Edinburgh]]
@blankspace[1.8in]
The paper discusses the main advantages and disadvantages of using a
modern PABX for mixed speech and data traffic. It comes to the conclusion
that with the currently available technology it is not economic to use
such an exchange for extensive data traffic and the paper goes on to look at
future trends in this area in
particular the use of PABX/LAN Gateways to ease connection problems.
==== ercm09/emas-2900/b_changes.txt ====
%externalroutinespec insert(%string (255) s)
%externalroutinespec remove(%string (255) s)
%externalroutine new(%string(255) s)
remove("iprogs_alist11y")
remove("iprogs_code11y")
remove("iprogs_link11y")
insert("ercs09.imp11y")
insert("ercs09.recodey")
insert("ercs09.link11y")
printstring("Gone to new compiler
")
%end
%externalroutine old(%string (255) s)
remove("ercs09.imp11y")
remove("ercs09.link11y")
remove("ercs09.recodey")
insert("iprogs_alist11y")
insert("iprogs_code11y")
insert("iprogs_link11y")
%end
==== ercm09/emas-2900/stars.txt ====
%EXTERNALINTEGERFNSPEC RANDOM(%INTEGERNAME I, %INTEGER J)
%OWNINTEGER FOR RANDOM=0
%REALFN RANDOMREAL
!! RETURNS A RESULT .01<=X<=1
%INTEGER P, X, Y
%CYCLE
X = RANDOM(FOR RANDOM, 1)
X = X//10
Y = X//100
P = (X -100*Y)
P=100 %IF P = 0
%RESULT = P/100
%REPEAT
%END
%EXTERNALROUTINE STARS(%STRING (255) JUNK)
%EXTERNALROUTINESPEC PROMPT(%STRING (15) S)
! %EXTERNALREALFNSPEC RANDOMREAL
%EXTERNALLONGREALFNSPEC CPUTIME
==== ercm09/emas-2900/start.txt ====
xmode trans
==== ercm09/emas-2900/b_ftpsnew.txt ====
prep fep_ftp1s,ftp1s#imp,r,e,i,clean
dimp11 ftp1s#imp
link11 /ftp1s
ftp1s
.stack 1400
.streams 1
.name ftps
.stackseg 6
.end
ftp1s
destroy ftp1ey
rename ftp1s#abs,ftp1ey
==== ercm09/emas-2900/am1test.txt ====
;TEST PROGRAM FOR 2900 GPC INTERFACE
;THERE ARE TWO VERSIONS OF THIS PROGRAM
;DEFINE 'PCVSN' TO TEST PC CARD
;UPDATED 03/08/79..MANY CHANGES ON OPERABLE, OP CHANGE,
; PARITY ERROR, RESET ETC.
;UPDATED 13/02/78 TO DO 10 BIT TRANSFERS USING PARITY LOGIC
;UPDATED 27/01/78 FOR 'FETCH NEXT' MODIFICATIONS
;
;OPERATING INSTRUCTIONS
;ATTACH LOOP BACK PLUG TO GPC INTERFACE
;SET CORRECT BUS ADDRESS AND VECTOR ADDRES IN LOCATIONS 1004 AND 1006
;ENSURE MACHINE HAS A LINE TIME CLOCK AT LOCATION 777546,
; VECTOR ADDRESS 100
;ENSURE MACHINE HAS A TELETYPE AT LOCATION 177560
;PROGRAM START ADDRESS IS 1000
;SET BITS IN SWITCH REGISTER AS FOLLOWS:
; 0..DISABLE TEST 1 (REGISTER TEST)
; 1..DISABLE TEST 2 ( 9 BIT DATA EXERCISOR)
; 2..DISABLE TEST 3 (10 BIT DATA EXERCISOR)
; 3..DISABLE TEST 4 ( 9 BIT DATA TEST WITH INTERRUPTS)
; 4..DISABLE TEST 5 (10 BIT DATA TEST WITH INTERRUPTS)
==== ercm09/emas-2900/node_ngate3.txt ====
! FILE 'NGATE3'
%CONSTSTRING (7) VSN = "VSN003J"
!****************************
!* GATE FOR USE WITH NODE *
!* FILE: NGATE3 *
!* DATE: 18.NOV.80 *
!****************************
!! STACK SIZE = 300
%RECORDFORMAT DMF(%INTEGER I)
%SYSTEMROUTINESPEC LINKIN(%INTEGER SERVICE)
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%CONSTRECORD (DMF) %NAME NULL = 0
%CONSTINTEGER OWN TERM = 0; ! NETWORK ADDRESS
%CONSTINTEGER MAX WRITES = 1; ! WRITE-AHEADS TO PROTOCOL HAND.
%CONSTINTEGER LINE NO = 30
%CONSTINTEGER KENT = 0; ! KENT=1 - NO NODE IN NET
==== ercm09/emas-2900/kents1280_bsp4s.txt ====
!********************************
!* EMAS-2900 BSP INTERFACE *
!* HANDLER *
!* FILE: BSP4S *
!* 18:3:80 *
!*********************************
!! STK = 300, STRM = 1
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMROUTINESPEC MAP HWR(%INTEGER SEG)
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%RECORDFORMAT DMF(%INTEGER I)
%CONSTRECORD (DMF) %NAME NIL = 0
%CONTROL K'100001'
==== ercm09/emas-2900/ibmdoc_b1.txt ====
1
0 Ref. B1
- NCP : FUNCTIONAL SPECIFICATION (Ref. B1)
+ ___ __________ _____________ ___ __
0 Version 2
+ _______ _
0 8 March 1982
+ _ _____ ____
0 P M Girard
+ _ _ ______
0 1. Introduction
+ ____________
0 The Network Control Program's function could be summarised
roughly as follows: To provide a network interface for
applications software, allowing it to communicate with
applications elsewhere on a network or multi-network
system.
0 The purpose of this paper is to spell out the implications
of the above statement, and to outline how, and to what
extent, it has been realised in practice.
- 2. Versions
==== ercm09/emas-2900/b_nlp3s.txt ====
dimp11 node_nlp3s
link11 /nlp3s
nlp3s
.stack 1000
.streams 1
.name nlps
.end
nlp3s
destroy nlp3y
rename nlp3s#abs,nlp3y
==== ercm09/emas-2900/ibmdoc_b2.txt ====
1
0 Ref. B2
- NCP : INTERNAL ORGANISATION (Ref. B2)
+ ___ ________ ____________ ___ __
0 Version 2
+ _______ _
0 8 March 1982
+ _ _____ ____
0 P M Girard
+ _ _ ______
0 1. Introduction
+ ____________
0 This paper gives technical information about the internal
organisation of NCP at a level appropriate for someone
installing, developing or maintaining the software.
0 It is not the intention to produce a blow-by-blow account
of the flow of control. Nor would this be particularly
useful, as the listings are fairly heavily commented
throughout and should be easier to follow than a separate
verbal account. However, it can be very helpful to know
what a particular routine is trying to achieve, why it
==== ercm09/emas-2900/fepb_docs.txt ====
April 1980 - 1 -
_ ____________
1 Introduction
There are two programs, which run as separate tasks under the DEIMOS
operating system [1], to control the transmission of information on the ring.
The programs are written in IMP77 [2].
The first is a device driver for the ring interface, it provides for _____
basic
_____ [3] transfers on the ring, initialisation of the interface and
block
notification of power failure on the ring. The ring driver is designed to be
used by several tasks each of which specifies to the ring driver a range of
input ports for which it will accept input. The second program provides an
implementation of the byte stream protocol BSP [4], using the ring driver to
perform the data transfers.
The BSP handler, on initialisation, notifies the ring handler that all input to
ports in the range 1 up to the maximum number of byte stream ports allowed
==== ercm09/emas-2900/ibmdoc_b3.txt ====
1
0 Ref. B3
0 NCP : INTERFACE TO CP/CMS FOR TERMINALS (Ref. B3)
+ ___ _________ __ __ ___ ___ _________ ___ __
0 Version 3
+ _______ _
0 8 March 1982
+ _ _____ ____
0 P M Girard
+ _ _ ______
1. Introduction
+ ____________
0 This paper relates to the VM version of NCP only, as the
MVT version no longer supports access to CP/CMS.
0 The interface uses the IBM-supplied Logical Device Support
Facility, LDSF, (see Ref. M3), and network terminals are
made to look like ASCII devices to the VM control program
CP. It was necessary to modify CP's ASCII terminal
support to some extent. The code for issuing the
necessary LDSF DIAGNOSES and processing the LDSF
interrupts is contained in the VMCF Package (Ref. C2), but
==== ercm09/emas-2900/sys_load8s.txt ====
! FILE 'LOAD7S'
!**************
!* LOAD17S *
!* 14.JUN.82 *
!**************
%PERMINTEGERFNSPEC SVC(%INTEGER EP, %INTEGER P1, %INTEGER P2)
%PERMINTEGERMAPSPEC INTEGER(%INTEGER X)
%PERMBYTEINTEGERMAPSPEC BYTEINTEGER(%INTEGER X)
%PERMINTEGERFNSPEC ADDR(%INTEGERNAME X)
%SYSTEMINTEGERFNSPEC GETID
%CONTROL K'100001'; ! TRUSTED
%RECORDFORMAT DUMREC(%INTEGER X)
%CONSTRECORD (DUMREC) %NAME NULL = 0
!***********************************
!* *
==== ercm09/emas-2900/coral2x.txt ====
%begin
{'CORAL' TEST RESPONDER}
%c
{'COMMENT' VERSION 1.1}
{}
{The official definition of Coral 66 does not provide for the output of}
{data at run time. However the facilities provided by the following}
{routines are useful within the Test Responder for logging/debugging}
{purposes. They can be supplied by the implementor either by adapting}
{existing routines or by writing new ones.}
{}
{The use of these routines is optional. If the implementor does not wish}
{to generate such output, he can define these procedures to be null,}
{comment them out, or delete each occurrence of them from the code. The}
{occurrences within read.command.octet (chart 3) have been commented out,}
{because for normal use they produce too much output:- one line per octet}
{received. The function of each of the routines is as follows:}
{}
{}
{trwritestring - writes the string supplied as the parameter to the}
{ output buffer.}
==== ercm09/emas-2900/fepconn.txt ====
@majorheading[FEP Connections]
@heading[EMAS]
@verbatim[
NOW FUTURE (where different)
FE1 Line 1 000016000002 0000150010??
Line 2 000015000001
Fe2 Line 1 000015000002
Line 2 000016000001 Not in use
Fe3 Line 1 000015001028
]
@heading[Bush]
@verbatim[
FE1 Line 1 000016000003 000015000008
Line 2 000071000004 (Strathclyde)
==== ercm09/emas-2900/ibmdoc_b4.txt ====
1
0 Ref. B4
- NCP : INTERFACE TO RSCS (VNET) FOR RJE (Ref. B4)
+ ___ _________ __ ____ ____ ___ ___ ___ __
0 Version 3
+ _______ _
0 8 March 1982
+ _ _____ ____
0 P M Girard
+ _ _ ______
0 1. Introduction
+ ____________
0 This paper covers both the MVT and VM versions of NCP.
The original version of the paper contains slightly more
detail specific to the MVT environment. In practice, RSCS
calls will not be routed via MVT in future, and the
relevant code may be removed from the MVT version at some
stage. The purpose of this interface is to provide access
to RSCS (also called VNET) from remote workstations
connected via the X25 network. Card reader, line printer
and card punch streams are supported. A main remote
==== ercm09/emas-2900/ftppd_readme.txt ====
The contents of ftppd are as follows:-
build - example build file for the ftp handler
cons - source of the ftp table constructor
consy - object of the above
cons1y - object of the grammar contructor
doc - some documentation (covering theory only as of 4.4.83)
obj - object of the ftp program
source - source of above
table - source of the table specifying ftp
To build a new ftp handler:-
1.insert ftppd_consy and ftppd_cons1y
2.ftpcons ftppd_table/tableobject,tablelist
3.edit tableobject into ftppd_source replacing arrays token, next,
action and value
4.follow scheme of commands in ftppd_build
Best of luck - Noel
==== ercm09/emas-2900/setmode9x.txt ====
! UINF record for Director 17
!
!
!<FEP stuff
%CONSTINTEGER TOPLOG=5
%CONSTINTEGER TOP FE NO = 7
%CONSTINTEGER FEP IO BUFF SIZE = 4096; !NUMBER OF BYTES IN THE CONTROL BUFFERS FOR EACH FEP
%RECORDFORMAT %C
FEPF(%INTEGER AVAILABLE, INPUT STREAM, %C
OUTPUT STREAM, IN BUFF DISC ADDR, OUT BUFF DISC ADDR, %C
IN BUFF DISC BLK LIM, OUT BUFF DISC BLK LIM, %C
IN BUFF CON ADDR, OUT BUFF CON ADDR, IN BUFF OFFSET, %C
OUT BUFF OFFSET, IN BUFF LENGTH, OUT BUFF LENGTH, %C
INPUT CURSOR, OUTPUT CURSOR)
%RECORDFORMAT %C
LF(%STRING(11) NAME,%INTEGER FSYS,DISC ADDR,STATE)
%RECORDFORMAT %C
PROCDATF(%STRING(6)USER, %BYTEINTEGER INVOC, %C
%BYTEINTEGER SP1, SP2, NODENO, FSYS, %C
%INTEGER REASON,ID,PROCESS,PREV WARN,SESSEND, %C
%BYTEINTEGER GETMODE,PREEMPT,BLNK,LINK)
==== ercm09/emas-2900/ibmdoc_b5.txt ====
1
0 Ref. B5
0 NCP : STATISTICS AND LOGGING (Ref. B5)
+ ___ __________ ___ _______ ___ __
0 Version 2
+ _______ _
0 8 March 1982
+ _ _____ ____
0 P M Girard
+ _ _ ______
0 1. Introduction
+ ____________
0 This paper relates specifically to the VM version of NCP.
The MVT version uses SMF for statistics collection, and
handles the logging disc in a somewhat different way.
0 A CMS-compatible minidisk is used, formatted entirely in
4096-byte blocks. Blocks 1 to 15 are used for statistics
and the rest for logging. The total size of the minidisk
is currently 360 blocks.
- 2. Statistics
+ __________
==== ercm09/emas-2900/nodemon3s.txt ====
%REALSLONG
!
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! NODE STATISTICS PACKAGE
!
!
!
! GRAPH1 - CONNECTS V BLKS AND CPU
!
! GRAPH2 - 2900 USERS V BLOCKS RXD & TXD
!
! GRAPH3 - 2970 USERS V BLOCKS RXD & TXD
!
! GRAPH4 - FREQUENCY V CON/MIN/USER
!
!
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
==== ercm09/emas-2900/ednet.txt ====
{{circle(34,3,0.6)}}
{{INLABEL(.18,"N1")}}
{{circle(31.5,3,0.6)}}
{{INLABEL(.18,"N6")}}
{{circle(31.5,4.5,.75)}}
{{inlabel(.18,"RING@b")}}
{{inlabel(.12,"@b@bN72")}}
{{circle(10,21.7,3)}}
{{circle(10,4,3)}}
{{CIRCLE(24.5,11.5,0.5)}}
{{inlabel(.14,"Fe4@bT3")}}
{{CIRCLE(24.5,10.5,0.5)}}
{{inlabel(.14,"Fe1")}}
{{CIRCLE(24.5,9.5,0.5)}}
{{inlabel(.14,"Fe2")}}
{{CIRCLE(24.5,3,0.5)}}
{{inlabel(.14,"Fe2")}}
{{CIRCLE(29.5.5,21.7,1.5)}}
{{INLABEL(.14,"JANET@bPSE")}}
{{CIRCLE(24.5,7,.5)}}
{{inlabel(.14,"Fe1")}}
==== ercm09/emas-2900/ibmdoc_b6.txt ====
1
0 Ref. B6
- NCP : SUPPORT OF INCOMING X29 AND TS29 (Ref. B6)
+ ___ _______ __ ________ ___ ___ ____ ___ __
0 Version 2
+ _______ _
0 8 March 1982
+ _ _____ ____
0 P M Girard
+ _ _ ______
0 1. For an X29 call, the first byte of the CUDF should contain
X'01'. (Values of X'7F' or X'CC' are also acceptable at
present if the characters 'XXX' appear in the 6th to 8th
bytes of the CUDF). For a TS29 call, the first byte of
the CUDF must be X'7F' and the CUDF must contain Transport
Service addressing with a "called address" of TS29.
0 2. On DTE no. 1, the service accessed is MAST/ELECTRIC. On DTE
no. 2, the service accessed is CP/CMS, emulating an
'ASCII' terminal.
0 3. The following PAD parameters are assumed to be of interest
only to the PAD or user, and NCP does not alter them: 1,
==== ercm09/emas-2900/newsys_supnew.txt ====
!***********
!* sup010 *
!*05.mar.82*
!***********
%control x'4001'
%externalroutinespec push(%record(*)%name q,%record(*)%name m)
%externalrecord(*)%mapspec pop(%record(*)%name q)
%constrecord (*) %name null == 0
%recordformat dummy(%integer x)
%begin
%constinteger task low limit=30
%constinteger task limit=75
%constinteger free cells=80
%constinteger no of services=task limit
%constinteger frag no=15
%constinteger psect length=52
%constinteger svc limit=23
==== ercm09/emas-2900/ibmdoc_b7.txt ====
1
0 Ref. B7
- NCP : EXPERIMENTAL FULL SCREEN TERMINAL SUPPORT (Ref. B7)
+ ___ ____________ ____ ______ ________ _______ ___ __
0 Version 3
+ _______ _
0 8 March 1982
+ _ _____ ____
0 P M Girard
+ _ _ ______
0 1. VMNCP experimentally supports 3270 protocol (as used for the
3277 model 2) via X29. Only minor further changes should
be needed to make it work over TS29 also. Only two or
three calls are provided for. If more are attempted, the
calls are likely to delay one another as only four 4K
buffers are incorporated in the program at present.
0 2. The characters 'XXXF' (in IA5) must appear starting at the
6th byte of the CUDF. The setting of the Identifier byte
in the CUDF should be X'01'.
0 3. The software deals with PAD parameters as for the ASCII
terminal interface. In practice, neither end at present
==== ercm09/emas-2900/cpsesetth.txt ====
@device[x2700]
@majorheading[CPSE]
@heading[Please do the following everytime the KB0 CPSE crashes or is reloaded:-]
@verbatim[SETTH LA14 TTD 300 10
SETTH LA14 RTF 200 10
SETTH LA14 PCC 200 10
SETTH LA41 RTF 100 10
SETTH LA42 RTF 100 10
SETTH LA42 PCC 100 10
SETTH IGST RTF 200 10
SETTH IGST TTD 100 10
SETTH ERCV RTF 50 10
]
@heading[Please do the following (at KB) everytime the AT CPSE crashes/is reloaded:-]
@verbatim[
SETTH LB07 L3T 100 10
SETTH MCSU RTF 100 10
]
==== ercm09/emas-2900/electregs.txt ====
%externalroutine electreg(%string (255) str)
%externalroutinespec define(%string (255) s)
%integerarray lab,con,lib(0:63)
%integerarray snp,ind,tota, hold(0:63)
%integerarray maj,indx(0:63)
%ownintegerarray look up(1:62) = %c
57, 4, 3, 16, 55, 17, 27, 53, 30, 62, 29, 5, 37, 24, 56, 54,
12,60, 9, 20, 39, 42, 59, 18, 58, 2, 28, 34, 19, 50, 52, 47, 46, 35, 48,
44, 8, 23, 11, 25, 61, 14, 31, 13, 6, 7, 45, 51, 1, 41, 49, 38, 33, 32,
22, 21, 36, 26, 15, 40, 10, 43
%string (25) %array names(0:63)
%ownintegerarray res(1:62, 1:10)
%ownbyteintegerarray labl(1:10) = 12, 10, 9, 8, 6, 5, 4, 3, 2, 1
%ownbyteintegerarray conl(1:10) = 16, 14, 12, 10, 8, 6, 5, 4, 3, 2
%ownstring (3) %array ps(1:5) = %c
"Lab", "Con", "Lib", "Snp", "Ind"
%realarray pc(0:63)
%ownreal p1,p2
%owninteger this one
%string (255) ss
==== ercm09/emas-2900/newsys_rl06s.txt ====
!************
!* rl06s *
!*24.jun.82*
!************
!* reporting to dir task added
!* unit 4 added
%control 1
%begin
%recordformat pf((%byteinteger service, reply %or %c
%integer d), %integer a1, a2, a3)
%recordformat rlf(%integer cs, ba, da, mp)
%constrecord (rlf) %name rl == k'114400'
%constintegername ps == k'117776'
%constinteger rltop = 10239
%owninteger rl bot = k'77'
==== ercm09/emas-2900/dxxxxx.txt ====
;**************************************
;* SYS_DXXXXX *
;* INTERFACE BETWEEN HARDWARE AND IMP*
;* DATE: 06.MAR.82 *
;**************************************
;
; * PREP OPTIONS
; R - RK05 DUMPER
; F - FILESTORE SYSTEM
; N - NODES - EXTENDED INTERRUPTS
; X - RX02 DUMPER
; B - BISYNCH PSEUDO DMA
; H - DUP11 HDLC PSEUDO DMA
; V - LSI HDLC PSEUDO DMA (NB:DPV11 HARDWARE)
;
; NOTE: In order to assemble, the CLEAN option in prep MUST be used
;
; ******************** Options Included *********************
;
#IF R
; RK05 Dumper Included
==== ercm09/emas-2900/kents1280_bsp5s.txt ====
! FILE 'BSP5S'
!********************************
!* EMAS-2900 BSP INTERFACE *
!* HANDLER *
!* FILE: BSP5S *
!* DATE:10.DEC.80 *
!* MODIFIED FOR ERCC USE *
!*********************************
!! STK = 300, STRM = 1
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMROUTINESPEC MAP HWR(%INTEGER SEG)
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%RECORDFORMAT DMF(%INTEGER I)
%CONSTRECORD (DMF) %NAME NIL = 0
==== ercm09/emas-2900/intro1.txt ====
==== ercm09/emas-2900/ibmdoc_c1.txt ====
1
0 Ref. C1
- INTER-PROCESS COMMUNICATIONS PACKAGE (IPC) (Ref. C1)
+ _____ _______ ______________ _______ ___ ___ __
0 Version 8.7
+ _______ _ _
0 8 March 1982
+ _ _____ ____
0 P M Girard
+ _ _ ______
-
1. Introduction
0 2. Software Structure
0 3. The User's Main Program
0 4. The Dispatcher
0 5. The Distributor Routine
0 6. Inter-Process Message (IPM) Facilities
0 7. Standard Inter-Process "Connections"
0 8. Non-Standard Inter-Process "Connections"
0 9. Asynchronous I/O Facilities
0 10. Timer Services
==== ercm09/emas-2900/newsys_dvn87.txt ====
;FILE 'SYS_DVRUB'
;**************************************
;* DVRUB *
;* INTERFACE BETWEEN HARDWARE AND IMP*
;* DATE: 11.JUN.81 *
;**************************************
.EXTERNAL ASSM
.INTERNAL $RUN
.INTERNAL DISPL="@DISPLAY"
.GLOBL G="%GO"
.INTERNAL EP
PS=177776; PROCESSOR STATUS WORD
IDLEST=-1; SUPERVISOR IDLE FLAG
INTVAL=40; DEDICATED LOCATION FOR INTERRUPT NUMBER
ALARMF=44; DITTO - FOR CLOCK
PSECT=46; DITTO - CURRENT PSECT
LASTPS = 54
==== ercm09/emas-2900/ibmdoc_c2.txt ====
1
0 Ref. C2
0 THE VMCF PACKAGE (Ref. C2)
+ ___ ____ _______ ___ __
0 Version 8
+ _______ _
0 8 March 1982
+ _ _____ ____
0 P M Girard
+ _ _ ______
0 1. Introduction
+ ____________
0 This paper supersedes the paper called "The MVT/VMCF
Package and User Interface", and should be read in
conjunction with the same Version number of "A Protocol
for Using VMCF" (Ref. A2).
0 If the package is used via IPC (Ref. C1), no detailed
knowledge of the contents of this paper is required.
0 The package aims to support those features of the IBM
VMCF (Ref. M3) used or allowed by the protocol, with the
further restriction that SEND/RECV and REPLY are not
==== ercm09/emas-2900/b_ftpgn.txt ====
new
prep gen_ftpd3s,ftpd3s#imp,n,g,clean
dimp11 ftpd3s#imp
link11 /ftpd3s
ftpd3s#rel
.stack 2000
.streams 3
.stackseg 6
.end
ftpg3s
c ftpg3s#abs,ftpgn1y
destroy ftpg3s#abs
==== ercm09/emas-2900/intro3.txt ====
epJO
Introduction
------------
Edinburgh University is spread accross many parts of Edinburgh with two main campus areas and a number of other scattered departments. This situation has lead to a very high dependance on Networking being built up over fifteen years in order to ensure that students and staff can communicate with either the main University Services or local department machines (see fig 1). The current network is based on three GEC packet switches supporting 33 hosts and 100 synchronous links.
The nature of the University has also lead to a seperate complex speach network (see fig 2). The University telehone exchanges now need to be replaced and the opportunity granted by the current range of PBXs lead to an extensive examination of the possibilities of using the speach network for carrying some, or all, of the University data traffic.
The University was also able to take the opportunity of early exposure to one of the latest technology telehone exchanges in the form of a joint project with ICL, partly funded by grants from the DTI under a 'Focus' and Preproduction Order scheme. This project is to connect a Mitel PBX to an ICL OSLAN (Open Systems Local Area Network) and to examine the consequences of carrying data traffic accross the PBX onto the LAN. A project diagram is shown in Fig 3. The project is now one quarter through the evaluation year but a number of lessons have already become clear and are discussed below.
Advantages
----------
There are a number of advantages gained by using a PABX for data traffic, they are:-
in3
Common Wiring
-------------
The biggest attraction of using a PABX for data traffic is that the wiring is already in place. The penetration of telephones is greater than that of terminals. In Edinburgh University we have ???? telephone extensions and 1520 asynchronous connections. The number of telephone extensions is static but the number of asynchronous connections has risen by about 20% per year for the last few years. So an alternative to laying yet more copper is very attractive. Unfortuantly, this situation is far more complex than that and because the existing telephone wiring is owned by BT we will actually be rewiring the entire university when the new exchanges are installed. This new wiring will be capable of fully supporting both the speach and data requirements for most users.
Direct connection of terminals
------------------------------
==== ercm09/emas-2900/ibmdoc_c3.txt ====
1
0 Ref. C3
- THE DEFI PACKAGE (Ref. C3)
+ ___ ____ _______ ___ __
0 Version 2
+ _______ _
0 8 March 1982
+ _ _____ ____
0 P M Girard
+ _ _ ______
0 This small package provides access under VM to a CMS-
compatible minidisk on a 3350 using 4096-byte blocks. The
virtual device address is 201.
0 The module, written in Assembler, contains three entry
points as follows:
0 CALL DEFI (DUMMYARG)
0 The argument is not used, and is present only for
historical reasons. The routine sets up an RPS sector
table for the minidisk, and must be called (once only)
before reading or writing can begin.
0 CALL DRIN (DUMMYARG,BLOCNO,DATA)
==== ercm09/emas-2900/erte_icl1s.txt ====
!*********************
!* ICL1S/ICL1Y *
!* DATE: 24.FEB.80 *
!!!!!!!!!!!!!!!!!!!!!!
!STACK = 140
%RECORDFORMAT XXF(%INTEGER DUMMY)
%CONSTRECORD (XXF) %NAME NULL = 0
%CONTROL X'100001'; ! TRUSTED PROGRAM AND QUICK
! ROUTINE ENTRY AND EIS
%CONSTSTRING (7) VSN = 'VSN001B'
%BEGIN
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%RECORDFORMAT PARF(%INTEGER TYPE, %RECORD (XXF) %NAME B, %C
%INTEGER LEN)
==== ercm09/emas-2900/dpal7s.txt ====
! FILE 'DPAL7S'
!*****************
!* DPAL7S *
!* DA: 05.MAR.81 *
!* RL01 *
!*****************
! STK = 1400, STRMS = 1
%PERMROUTINESPEC SVC(%INTEGER EP, %INTEGERNAME P1, %INTEGER P2)
%PERMINTEGERMAPSPEC INTEGER(%INTEGER X)
%PERMBYTEINTEGERMAPSPEC BYTEINTEGER(%INTEGER X)
%PERMINTEGERFNSPEC ADDR(%INTEGERNAME X)
%PERMINTEGERFNSPEC ACC
%CONSTINTEGERNAME DUMMY = 0
%BEGIN
%RECORDFORMAT SEGF(%INTEGER PAR, PDR, PT, X)
%RECORDFORMAT PSECTF(%INTEGER Q, %BYTEINTEGER ID, STATE, %C
%BYTEINTEGERARRAY NAME(0:3), %C
%BYTEINTEGER PRIO, %INTEGER POFFQ, R0, R1, R2, R3, %C
==== ercm09/emas-2900/clog6s.txt ====
!
!
! CLOG CLOG CLOG CLOG CLOG CLOG CLOG CLOG CLOG CLOG CLOG CLOG
! CLOG CLOG CLOG CLOG CLOG CLOG CLOG CLOG CLOG CLOG CLOG CLOG
!
!
!
%CONTROL K'001001'
!
!
%BEGIN
!
!
!
!G.J.B. // J.C.A. STARTED 10:11:76
! ??? LAST UPDATE 15:3:79 14:10 - FILE CLOG5S
!
! FOR ERTE MK.6 MK. 3 MODS MARKED !&&
! FOR ERTE MK.3 MK. 4 MODS MARKED !@@
! SET UP FOR F1 STANDARD COMMANDS
!
==== ercm09/emas-2900/b_lotups.txt ====
e gen_loadups,lotups
f+batch go/.tt+s+LOAD FEP+p
1
%c
imp11 lotups
link11
lotups#rel
i77perm
.stack 1000
.streams 0
.name ldup
.end
lotupy
alist11 lotups/.lp23
list lotupy,.bpp155
destroy lotups,lotups#rel
==== ercm09/emas-2900/b_ringdma.txt ====
prep ring35,ring35#imp,o,q
imp11 ring35#imp
link11
ring35#rel
i77perm
.stack 1000
.streams 1
.name ring
.end
ring35y
==== ercm09/emas-2900/b_verisnew.txt ====
e gen_veris77/temp
f/deimosperm/s/b_deimosspecs/
m-0f/cli string/s/cli param/
0
m-0f/%integername a/s/%integer a/
1
1
f/==address/e
m-0f/f2==fa(0)/k
f/f2_x/s/addr(fa(0))/
m-0
f/, ba(0)_pr/s/, addr(ba(0)_pr)/p
1
%c
dimp11 temp
link11 /temp
temp
ercm11.newimp
.stack 6000
.streams 1
.name veri
==== ercm09/emas-2900/kmc11_krecos.txt ====
!
! KMC11 RECODE - GJB 19/06/78
!
%CONTROL K'101011'
%BEGIN
%EXTERNALROUTINESPEC HEX(%INTEGER DATA)
%EXTERNALROUTINESPEC OCTAL(%INTEGER DATA)
%EXTERNALROUTINESPEC SYMBOL(%INTEGER DATA)
%EXTERNALROUTINESPEC INST(%INTEGER DATA)
%INTEGER DATA,ADDRESS
%ROUTINE READ DATA
%INTEGER I
read ch(I); read ch(DATA); DATA=DATA!I<<8
%END
%ROUTINE MOVE
%INTEGER I
NEWLINE; PRINT SYMBOL('*') %FOR I=1,1,77; NEWLINES(2)
%END
==== ercm09/emas-2900/b_bspd.txt ====
prep ring_bsp78s,bsp78s#imp,o,d
imp11 bsp78s#imp
link11
bsp78s#rel
i77perm
.stack 1000
.streams 0
.name bsps
.end
bsp78dy
==== ercm09/emas-2900/sys_sbld12s.txt ====
!**********
!* SBLD12S *
!* NB: NOT SAME AS BPL SBLD1S !!!!
!* DATE: 16.NOV.79 *
!* SUPERVISOR BUILD PROGRAM *
!*************************************
%PERMROUTINESPEC SVC(%INTEGER EP, %INTEGERNAME P1, %INTEGER P2)
%PERMINTEGERMAPSPEC INTEGER(%INTEGER X)
%PERMBYTEINTEGERMAPSPEC BYTEINTEGER(%INTEGER X)
%PERMINTEGERFNSPEC ADDR(%INTEGERNAME X)
%PERMINTEGERFNSPEC ACC
%CONSTINTEGERNAME DUMMY = 0
%CONSTINTEGERNAME NULLI = 0
%BEGIN
!* STK = 76000, STRM = 3
==== ercm09/emas-2900/ednet0785.txt ====
{{circle(23,11.5,.5)}}
{{INLABEL(.18,"EML")}}
{{circle(31.5,3,0.6)}}
{{INLABEL(.18,"N6")}}
{{circle(31.5,4.5,.75)}}
{{inlabel(.18,"RING@b")}}
{{inlabel(.12,"@b@bN72")}}
{{circle(10,21.7,3);inlabel(.4,"KB-CPSE@bGEC 4190@b")}}
{{inlabel(.14,"@B@B@b@b000015000000")}}
{{circle(10,4,3);inlabel(.4,"AT-CPSE@bGEC 4190@b")}}
{{inlabel(.14,"@B@B@b@b000016000000")}}
{{CIRCLE(28,9.5,0.5)}}
{{inlabel(.14,"Fe4@bT3")}}
{{CIRCLE(23,10.5,0.5)}}
{{inlabel(.14,"Fe1")}}
{{CIRCLE(23,9.5,0.5)}}
{{inlabel(.14,"Fe2")}}
{{CIRCLE(23,3,0.5)}}
{{inlabel(.14,"Fe2")}}
{{CIRCLE(30.5,21.7,1.5)}}
{{INLABEL(.14,"JANET@bPSE")}}
==== ercm09/emas-2900/ibmdoc_d1.txt ====
1
0 Ref. D1
- A TRANSPORT SERVICE INTERFACE VIA IPC (Ref. D1)
+ _ _________ _______ _________ ___ ___ ___ __
0 Version 4
+ _______ _
0 8 March 1982
+ _ _____ ____
0 P M Girard
+ _ _ ______
0 1. Introduction
+ ____________
0 To facilitate eventual transition to an ISO Standard
Transport Service, hopefully manufacturer-supported, it is
important that Applications should all use the same
Transport Service interface. This paper defines the
interface and describes the software that implements it.
0 The Transport Service interface is built upon various
lower level facilities. The basic component is the IPC
Package (Ref. C1), which provides the necessary network
"Access Method" facilities to OPEN and CLOSE connections
==== ercm09/emas-2900/ednet0786.txt ====
{{circle(23,11.5,.5)}}
{{INLABEL(.14,"Fe4")}}
{{circle(11,16,1.5);inlabel(.2,"TelePAC@b15003000")}}
{{join(c1,c2)}}
{{circle(0,0,0)}}
{{circle(13,21.7,2.5);inlabel(.35,"KB-CPSE@bGEC 4190@b")}}
{{inlabel(.14,"@B@B@b@b000015000000")}}
{{circle(13,4,2.5);inlabel(.35,"AT-CPSE@bGEC 4190@b")}}
{{inlabel(.14,"@B@B@b@b000016000000")}}
{{CIRCLE(23,2.8,0.5);inlabel(.14,"Fe4")}}
{{CIRCLE(23,10.5,0.5);inlabel(.14,"Fe1")}}
{{CIRCLE(23,9.5,0.5);inlabel(.14,"Fe2")}}
{{CIRCLE(23,3.8,0.5);inlabel(.14,"Fe2")}}
{{CIRCLE(32.5,21.7,1.5);INLABEL(.14,"JANET@bPSE")}}
{{CIRCLE(23,7.3,.5);inlabel(.14,"Fe2")}}
{{circle(12.75,24.8,.1);fill(c12)}}
{{circle(14.75,24.8,.1);fill(c13)}}
{{circle(16.75,24.8,.1);fill(c14)}}
{{circle(20.75,25.2,0)}}
{{circle(6.75,25.2,0)}}
{{CIRCLE(6.75,1.4,0)}}
==== ercm09/emas-2900/b_supbl.txt ====
parm free
parm opt,noarray,notrace
prep supbuilds,supbuilde,e
i supbuilde,supbuildy,l,.out
==== ercm09/emas-2900/b_ftpgx.txt ====
new
prep x25gen_ftpd4s,ftpd4s#imp,x,g,clean
dimp11 ftpd4s#imp
link11 /ftpd4s
ftpd4s#rel
.stack 2400
.streams 1
.stackseg 6
.name ftpx
.end
ftpg4s
c ftpg4s#abs,ftpgx1y
destroy ftpg4s#abs
alist11 ftpd4s#imp
list ftpd4s#lst,.lp23
==== ercm09/emas-2900/gecenhres.txt ====
GEC PSE Enhancements results
Pos Votes Question
1 87 P1 Easy method of changing configuration details (eg. DTE/DCE,
redistribution of LCN's between logical groups) without having
to ask GEC where to patch the system.
2 79 N23 Monitor comand, switchable per link, to list calls as set up and
cleared (called, calling addresses, direction).
3 78 N12 STATUS - 'LINK DOWN' type messages to appear on same line as
status report and replaced by a more specific cause of link
failure (eg. timeout, carrier lost).
3 78 N14 Monitor calls through switch - two types:
static - a snapshot
dynamic - listing calls as set up and cleared until
monitor is turned off
==== ercm09/emas-2900/pssbuild_suppss.txt ====
DEIMOS VSN 10.1 31 AUG 82 SERVICE PSS GATEWAY 3 * DUP11, 1 * RING, 1 * RL02
RL01
3500
DVDUPY N 0
SUP50 60002 0
PERM2Y 60006 0
BTT7Y 60012 0
RL06Y 60016 0
FSYS78 60022 0
LOAD8Y 60026 0
CLI2Y 60032 0
MOTH6Y 60036 0
END
-7 330 RING RECEIVE 764040
-6 334
-31 300 DUP11 #1 RX, ADDR = 760050
-32 304 TX
-33 310 #2 RX, ADDR = 760060
-34 314 TX
-35 320 #3 RX, ADDR = 760070
-36 324 TX
==== ercm09/emas-2900/b_rolb.txt ====
prep rolb77s,rolb77s#imp,n,clean
imp11 rolb77s#imp/,l
link11
rolb77s#rel
i77perm
.stack 2000
.streams 1
.end
rolb77y
alist11 rolb77s#imp/.lp23
==== ercm09/emas-2900/b_lmn6.txt ====
e gen_lmtims/temp
f/prompt("n/k2g
node = 6; term = 181
m-0
f/ercm09/s/ERCM05/p
f/liam/s/LIZ!/p
%c
imp11 temp
link11
temp#rel
i77perm
.stack 2000
.streams 1
.name lmn6
.end
lmn6y
==== ercm09/emas-2900/hextobin.txt ====
%EXTERNALROUTINE HFTB(%STRING(63) S)
!ROUTINE FOR CONVERTING HEX-PAIR FILES TO BINARY
!J. BUTLER 1.9.78
%EXTERNALROUTINESPEC CHANGESM(%INTEGER CHAN,L)
%EXTERNALROUTINESPEC NEWSMFILE(%STRING(63) S)
%EXTERNALROUTINESPEC CLOSESM(%INTEGER CHANNEL)
%EXTERNALROUTINESPEC DEFINE(%STRING(63) S)
%EXTERNALINTEGERFNSPEC SMADDR(%INTEGER CHAN,%INTEGERNAME L)
%EXTERNALROUTINESPEC DESTROY(%STRING(63) S)
%EXTERNALINTEGERFNSPEC EXIST(%STRING(63) S)
%INTEGER INA,INL,OUTA,OUTL
%STRING(63) T,U
%UNLESS S->T.(",").U %THEN PRINTSTRING("Parameters?") %ANDRETURN
%IF EXIST(U)#0 %THEN DESTROY(U)
DEFINE("1,".T)
select input(1)
NEWSMFILE(U.",1")
DEFINE("2,".U)
CHANGESM(2,x'100000')
==== ercm09/emas-2900/tsbsp_source.txt ====
!
! TSBSP DRIVER
! copyright University of Kent at Canterbury 1982
! stack=2000, streams=0
!version 2: 23:1:82
!
%CONTROL 1
%BEGIN
%RECORDFORMAT NSF(%INTEGERARRAY DUM(1:3), %STRING (241) NAME)
%RECORDFORMAT NSRF(%INTEGER D1,D2,CODE, %C
((%STRING (241) NAME) %ORC
(%BYTEINTEGER FLAGS, ADDRESS, %INTEGER PORT, FUNCTION, %C
%STRING (55) RESTOFNAME )))
%RECORDFORMAT MEF(%RECORD (MEF) %NAME LINK, %BYTEINTEGER LEN, TYPE, %C
( (%BYTEINTEGERARRAY PARAMS(0:251)) %ORC
==== ercm09/emas-2900/docum_dmphilp1.txt ====
$A MARK=2
$A TAB=5, 10, 15
$A JUST=1; LINE=69; PAGE=54; TOP=5; BOTTOM=7
$A NLS=2
$B10 $L1M
imp AS A tOOL FOR sMALL oPERATING sYSTEMS iMPLEMENTATION
$b2
$l1m
bRIAN a. c. gILMORE
$B10
$l1m
tHESIS pRESENTED FOR THE dEGREE OF mASTER OF pHILOSOPHY
$l1m
fACULTY OF sCIENCE, uNIVERSITY OF eDINBURGH
$l1m
oCTOBER 1976
$N
$L1CM
ABSTRACT
$P2 @THIS THESIS DISCUSSES THE DESIRABILITY
OF USING A HIGH LEVEL LANGUAGE FOR SMALL SYSTEMS
==== ercm09/emas-2900/docum_dmphilp2.txt ====
$A PAGENO=71
$A MARK=2
$A TAB=5, 10, 15
$A JUST=1; LINE=69; PAGE=54; TOP=5; BOTTOM=7
$A NLS=1
$A MARK=2
$A TAB=5, 10
$A JUST=1; LINE=69; PAGE=54; TOP=5; BOTTOM=7
$L3CM
APPENDIX 1
USER MANUAL FOR THE FIRST SYSTEM
$N
$A TAB=5, 10; CAPO=0; CAPSHO=0; INVERT=0
$B20
$L1CM
USER MANUAL FOR MUSS11
$B2
$L1CM
B. GILMORE
$L1CM
==== ercm09/emas-2900/b_deimosperm.txt ====
!
! specs for deimos perm routines
!
%externalroutinespec pon(%record(*) %name p)
%externalroutinespec poff(%record(*) %name p)
%externalroutinespec ponoff(%record(*) %name p)
%externalintegerfnspec mapvirt(%integer ser,seg1,seg2)
%externalintegerfnspec map abs(%integer vadd,len,id)
%externalintegerfnspec getid
%externalroutinespec alarm(%integer ticks)
%externalroutinespec linkin(%integer ser)
%externalroutinespec maphwr(%integer segs)
%externalintegerfnspec mappsect(%integer seg,task)
%externalroutinespec push(%record(*)%name q,%record(*)%name m)
%externalrecord(*)%mapspec pop(%record(*)%name q)
%externalintegerfnspec time
%externalroutinespec set prio(%integer prio)
%constbyteintegername own id==(8_160030); !8.1 compiler bug
%constbyteintegername fsys == k'160055'
%constbyteintegername id == k'160030'
%constbyteintegername int==(8_160060)
==== ercm09/emas-2900/dvdup.txt ====
;! FILE 'DVDUP'
;.TIME40
;**************************************
;* DVDUP *
;* INTERFACE BETWEEN HARDWARE AND IMP*
;* DATE: 27.MAR.81 *
;**************************************
PS=177776; PROCESSOR STATUS WORD
IDLEST=-1; SUPERVISOR IDLE FLAG
INTVAL=40; DEDICATED LOCATION FOR INTERRUPT NUMBER
ALARMF=44; DITTO - FOR CLOCK
PSECT=46; DITTO - CURRENT PSECT
LASTPS = 54
INTINF=56
UPAR=177640
UPDR=177600
==== ercm09/emas-2900/ibmdoc_e2.txt ====
1
0 Ref. E2
0 VMNCP INSTALLATION (Ref. E2)
+ _____ ____________ ___ __
0 Version 1
+ _______ _
0 8 April 1982
+ _ _____ ____
0 P M Girard
+ _ _ ______
0 1. Introduction
+ ____________
0 The software can be shipped on mag tape in a form ready to
be loaded back into a CMS system. It includes all
relevant source code together with some EXEC procedures
and MODULE files.
0 It is assumed that the recipient is running VM/SP and that
the FORTRAN H Extended Plus compiler will be available.
0 The tape is written without labels using the CMS 'TAPE
DUMP' command, and the normal VM/SP options are assumed
(e.g: BLKSIZE 4096). For convenience, the tape is split
==== ercm09/emas-2900/erteicl_printd.txt ====
! PRINTD PRINT DOUBLE WORD INTEGERS
!W.S.C. 28TH FEB 1977
!LAST UPDATED 02/03/77 12:50
%EXTERNALROUTINE PRINTD(%INTEGER N1,N2,SP,DEC)
!
!TO PRINT OUT DOUBLE WORDS,1000 S IN N1
!UP TO 1000 IN N2.SP IS TOTAL SPACE
!AS IN A WRITE COMMAND.IF DEC#0 THE LAST
!TWO DIGITS ARE PRINTED AFTER A DECIMAL POINT.
!
%BYTEINTEGERARRAY N(0:7)
%INTEGER I,P,S,M1,M2
I=10000
P=0
M1=N1
S=-1
%WHILE I>0 %CYCLE
==== ercm09/emas-2900/inc_csidefs.txt ====
%CONSTINTEGER LIT=1,DELIM=2,DIGIT=3,TERM=4,TEXT=5,NUMB=6,CHAR=7
%CONSTINTEGER LITALT=129,DELIMALT=130,DIGALT=131,TERMALT=132
%CONSTINTEGER TEXTALT=133,NUMBALT=134,CHARALT=135
%ENDOFFILE
==== ercm09/emas-2900/ybgate.txt ====
DEIMOS
Vsn 5, 11 April '85
B. Gilmore
Yellow Book GATE - to - TASK Interface
=======================================
This note describes the interface between a Task and a 'Yellow
book' GATE. The intention with a 'yellow book' GATE is that the interface
is common accross NSI, (TS)BSP and X25, though each protocol will require a
different GATE.
The interface operates by the sending of messages as records, 'P', in
the format:
%BYTEINTEGER SER, REPLY, FN, S1, %C
(%RECORD (MEF) %NAME MES, %C
%BYTEINTEGER GATE PORT, TASK PORT) %OR
==== ercm09/emas-2900/b_load8.txt ====
dimp11 load8s
link11 /map
load8s
.codeseg 2
.stackseg 6
.stack 600
.streams 1
.end
load8s
c load8s#abs,newsys_load8y
==== ercm09/emas-2900/sys_dvrxrub.txt ====
.TIME40
;**************************************
;* DVRXRUB *
;* INTERFACE BETWEEN HARDWARE AND IMP*
;* DATE: 03.AUG.81 *
;**************************************
PS=177776; PROCESSOR STATUS WORD
IDLEST=-1; SUPERVISOR IDLE FLAG
INTVAL=40; DEDICATED LOCATION FOR INTERRUPT NUMBER
ALARMF=44; DITTO - FOR CLOCK
PSECT=46; DITTO - CURRENT PSECT
LASTPS = 54
INTINF=56
UPAR=177640
UPDR=177600
UPAR0=40; INDEC INTO PSECT
==== ercm09/emas-2900/b_dx11.txt ====
prep x25_dx11b1s,dx11b1s,b,n,m
dimp11 dx11b1s
link11 /map
dx11b1s
.stack 2000
.streams 1
.name dx11
.stackseg 6
.end
dx11b1s
c dx11b1s#abs,dx11b1y
==== ercm09/emas-2900/spider.txt ====
@make[report]
@majorheading[Spider]
The current agreement with Spider is as follows:-
@section[ Supply of X.25 (1984) and LLC2 code]
license fees as follows:-
@itemise[
1-50 100 pounds per license
51-250 50 pounds
251-500 25 pounds
500- 10 pounds
]
@section[Use of license]
@itemise[
Exclusive for Ethernet Pads (time limit?)
One year exclusive for WAN Pads
One year exclusive for discrete Gateways ethernet/WAN
==== ercm09/emas-2900/sxprot.txt ====
EDIT x25_XPROTs,T#B
TA/198/A1STM/Versi/f<X>KZ(r/Running/i<X>i/ (Slow)/p1)2
E
prep t#b,xprot#imp,Q
IMP11 XPROT#IMP/XPROT#REL,xprot#lst
LINK11
ERCM09.I77PERM
XPROT#REL
.STACK 2000
.STREAMS 0
.NAME XPR1
.END
XPR1#OBJ
destroy xpr1sy
rename xpr1#obj,xpr1sy
alist11 xprot#imp/.lp23
==== ercm09/emas-2900/erteicl_xssllps.txt ====
%BEGIN
*K'104001'
%ENDOFPROGRAM
==== ercm09/emas-2900/b_lminfo.txt ====
imp11 lminfo
link11
lminfo#rel
i77perm
.stack 2000
.streams 1
.end
lminfoy
list lminfoy,.fep72
==== ercm09/emas-2900/kmc11_kloads.txt ====
!
! KMC11 LOADER - GJB 14/04/78
!
%CONTROL K'101011'
%BEGIN
%RECORDFORMAT KF(%BYTEINTEGER CSR0,CSR1,%INTEGER CSR2,CSR4,CSR6)
%SYSTEMROUTINESPEC MAP HWR(%INTEGER SEG)
%CONSTRECORD(KF)%NAME KMC=K'060160';
%INTEGER ADDRESS,DATA
%ROUTINE READ DATA
%INTEGER I
READ SYMBOL(I); READ SYMBOL(DATA)
DATA=DATA!I<<8
%END
%ROUTINE INST(%INTEGER INSTRUCTION)
KMC_CSR1=0; KMC_CSR6=INSTRUCTION
KMC_CSR1=KMC_CSR1!2
KMC_CSR1=KMC_CSR1!1
%END
==== ercm09/emas-2900/ftppd_oldsource.txt ====
%control 1
#if ~x
#if n
#report NSI version
#else
#report ring version
#fi
#else
#report ts version
#fi
%include "ercm09.b_deimosspecs"
%conststring (9) vsn = "FTPQ..1n "
%begin
%externalstring (255) %fnspec cli param
#datestring
#timestring
#if ~x
#if n
==== ercm09/emas-2900/ibmdoc_f1.txt ====
1
0 Ref. F1
- VMNCP : OPERATORS' DOCUMENTATION (Ref. F1)
+ _____ _________ _____________ ___ __
0 Version 2
+ _______ _
0 8 March 1982
+ _ _____ ____
0 P M Girard
+ _ _ ______
0 PART A : GENERAL DESCRIPTION
+ ____ _ _______ ___________
0 1. Introduction
+ ____________
0 VMNCP is a version of the Network Control Program (NCP)
that runs under CMS in its own virtual machine. It can
run at the same time as the MVT version, DKNCP, and the
two have no internal contacts with each other: effectively
they are two separate host machines on the network, each
having its own network address. In due course, VMNCP
should supersede DKNCP completely, but the latter remains
==== ercm09/emas-2900/ibmdoc_f2.txt ====
1
0 Ref. F2
- VMNCP : DIAGNOSTIC CODES (Ref. F2)
+ _____ __________ _____ ___ __
0 Version 3
+ _______ _
0 8 March 1982
+ _ _____ ____
0 P M Girard
+ _ _ ______
0 The diagnostic codes issued by VMNCP (and also by DKNCP in the
MVT system) are based on those recommended in the Transport
Service specification (Ref. A6).
0 The list below covers those actually used, and explanatory
comments are added where appropriate.
0 X'01' : DISCONNECT received from other end
X'11' : Number busy (no ports into application)
X'12' : Out of order (no response from application)
X'13' : Invalid address
X'17' : Network congestion (at call set-up)
X'21' : Protocol error (accusation)
==== ercm09/emas-2900/ftppd_newlist.txt ====
! ?
" ?
# ?
$ ?
% ?
& ?
' ?
( ?
) ?
* ?
+ ?
, ?
- ?
. ?
/ ?
0 ?
1 ?
2 ?
3 ?
==== ercm09/emas-2900/log_t44simtest.txt ====
*T44 RING SINK FROM 3 MACHINES, LOOKING FOR LOCKOUT, 18.MAR.81
******** I 9001
******** O 9004
END OF TRACE
************
************
************
************
************
************
************
************
************
************
************
************
************
************
************
************
==== ercm09/emas-2900/b_moth.txt ====
dimp11 newsys_moth77,moth77#rel
link11 /moth77
moth77
.stack 300
.streams 0
.codeseg 2
.stackseg 6
.end
moth77
c moth77#abs,newsys_moth77y
==== ercm09/emas-2900/imp77specs.txt ====
! Specs to aid IMP77 programs running on IMP80
%record %format EVENTFM (%integer EVENT, SUB, EXTRA, %string(255) MESSAGE)
%external %record (EVENTFM) %spec EVENT
%external %routine %spec SIGNAL (%integer EVENT, SUB, EXTRA)
%external %routine %spec SET EVENT
%external %routine %spec PROMPT (%string(15) STR)
%external %string (15) %fn %spec DATE
%external %string (15) %fn %spec TIME
%external %routine %spec OPEN INPUT (%integer ch, %string(255) file)
%external %routine %spec OPEN OUTPUT (%integer ch, %string(255) file)
%external %routine %spec CLOSE INPUT
%external %routine %spec CLOSE OUTPUT
%external %string (63) %fn %spec ITOS (%integer N, P)
%external %routine %spec WRITE %alias "I77#WRITE" (%integer N, P)
%external %routine %spec PRINT %alias "I77#PRINT" (%long %real R, %integer I, P)
%external %routine %spec READ SYMBOL %alias "I77#RSYM" (%integer %name SYM)
%external %routine %spec SKIP SYMBOL %alias "I77#SSYM"
%external %integer %fn %spec NEXT SYMBOL %alias "I77#NSYM"
%external %routine %spec PRINT SYMBOL %alias "I77#PSYM" (%integer sym)
%external %integer %fn %spec REM (%integer A, B)
%end %of %file
==== ercm09/emas-2900/dvrub.txt ====
; FILE 'DVRUB'
;**************************************
;* DVRUB *
;* INTERFACE BETWEEN HARDWARE AND IMP*
;* DATE: 06.MAR.81 *
;**************************************
PS=177776; PROCESSOR STATUS WORD
IDLEST=-1; SUPERVISOR IDLE FLAG
INTVAL=40; DEDICATED LOCATION FOR INTERRUPT NUMBER
ALARMF=44; DITTO - FOR CLOCK
PSECT=46; DITTO - CURRENT PSECT
LASTPS = 54
INTINF=56
UPAR=177640
UPDR=177600
UPAR0=40; INDEC INTO PSECT
==== ercm09/emas-2900/x25addrn.txt ====
@device[x2700]
@style[topmargin=0.5in,leftmargin=0.5in,bottommargin=0.5in]
@majorheading(EDNET addresses Post introduction of TelePAC)
@b[ Configuration of GEC 4190 KB#1 switch System No. 669]
@verbatim[
Line No Address Name Use Comments
lau 01 V 160000xx TRGS V35 Trunk to George Sq. #1
lau 02 IH 15000002 EA71 2976 fep (fe2) (Primary Line)
lau 03 H 150010xx TRK2 Link to KB2 TelePAC CPSE
lau 04 M 15000004 E882 Xcall - XXX <-> ITP Converter
lau 05 TM 15000099 GW01 Gateway to JANET (Extern:000007001004)
lau 06 M 15000006 CSVX ECSVax - Comp. Sc. Vax No XXX, ITP only
lau 07 M 15000007 XGTE (Second Xcall)
lau 08 M -------- GSCP Multiplexor Trunk Link to George Sq. Switch
lau 09 IM 15000001 EA72 2976 Fep (fe1) (Secondary Line)
lau 10 M 15000010 ERCV ERCVax - ERCC Vax/VMS 11/750
lau 11 M 15000003 E881 Bush fep (fe2)
lau 12 T -------- STSW Trunk Link to Strathclyde (nb: DTE end)
lau 13 15000013 TCP1 TCP M
lau 14 15000114 LA14 FCRNPD - FCRNS Pad
==== ercm09/emas-2900/inc_gateint.txt ====
!
! GATE TO TASK FUNCTIONS
!
%CONSTINTEGER INCOMMING CALL=2
%CONSTINTEGER INPUT RECD=3
%CONSTINTEGER OUTPUT TXD=4
%CONSTINTEGER CALL CLOSED=5
%CONSTINTEGER CALL ABORTED=6
%CONSTINTEGER OPEN MESSAGE=9
!
! TASK TO GATE FUNCTIONS
!
%CONSTINTEGER ENABLE FACILITY=1
%CONSTINTEGER DISABLE FACILITY=2
%CONSTINTEGER CALL REPLY=3
%CONSTINTEGER ENABLE INPUT=4
%CONSTINTEGER PUT OUTPUT=5
%CONSTINTEGER CLOSE CALL=6
%CONSTINTEGER ABORT CALL=7
%CONSTINTEGER MESSAGE REPLY=10
%ENDOFFILE
==== ercm09/emas-2900/pcme_source.txt ====
!**********************************************************
!* *
!* RCO ITP to GEC Network Management Module *
!* *
!* PCME *
!* *
!* Version 9.3 11 Apr 1983 *
!* *
!**********************************************************
!*
%control 1 ;!No record checking.
!*
%begin
!*
!**************************
!* *
!* Declarations *
!* *
!**************************
==== ercm09/emas-2900/amstradfs.txt ====
%externalroutine famstrad(%string (255) s)
%externalroutinespec xmode(%string (255) s)
%externalroutinespec define(%string (255) s)
%externalroutinespec prompt(%string (15) s)
%integer i,j,k
define("1,".s)
xmode("native")
k=0
printstring("Go - end with ctrl+y
")
select output(1)
prompt("")
%cycle
readch(i)
%if i = 25 %then xmode("Trans") %and %stop
%if i = 13 %then %continue; ! return - use lf only
%if i = 10 %and k = 10 %then k=0 %and %continue
k = i
printch(i)
%repeat
%end
==== ercm09/emas-2900/test2.txt ====
THIS IS A TEST
END
==== ercm09/emas-2900/doc2.txt ====
@make[report]
@flushleft[Edinburgh Regional Computing Centre
Communications Group]
@majorheading[X.25 Packet Switch Survey]
@heading[2nd Stage Report]
@Subheading[General]
After the conclusion of the first stage survey, it was agreed that 6
companies be examined in more detail, they are Amdahl, Camtec, Dynatech, GEC,
Telefile and Telematics.
In view of the position of GEC and Camtec as existing suppliers in the Academic
Community, it was not considered necessary to examine their equipment to the
same depth as the rest.
Amdahl, GEC and Telematics are considered as suppliers for the high
connectivity and high throughput switch requirement while Camtec, Dynatech
and Telefile were considered for the small switch needs.
It should be noted that all costs are ex VAT
@subheading[Basis of Comparison]
==== ercm09/emas-2900/streetak.txt ====
Vsn 2
*******************************
* *
* Grand Total 6274 *
* *
*******************************
Burdiehouse/Southhouse (SR-Kaimes) total 1263
==================================
==== ercm09/emas-2900/parits.txt ====
! PARITY REGISTER CHECKER & SWITCH REG COUNTER
!
! DATE: 24.MAY.82
%CONTROL K'100001'
%SYSTEMROUTINESPEC MAPHWR(%INTEGER SEG)
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%BEGIN
%CONSTINTEGERNAME PAR = K'012100'; ! IN SEG 0
%CONSTINTEGERNAME SWR = K'017570'
%RECORDFORMAT PF(%BYTEINTEGER SER, REPLY, A1, A2, B1, B2, C1, C2)
%RECORD (PF) P
%INTEGER I,J,K,T
%ROUTINE OCTAL(%INTEGER N)
%INTEGER I
PRINTSYMBOL((N>>I)&7+'0') %FOR I = 15, -3, 0
==== ercm09/emas-2900/ecucrpt.txt ====
@make[report]
@device[x2700]
@flushleft[Edinburgh Regional Computing Centre]
@flushleft[For the attention of the E.C.U.C.]
@majorheading[Report on Communications]
The general level of the network service to users has been significantly
better this term.
@paragraph[CPSEs]
For the first time ever, the main KB CPSE has run for a period of three
months with no unscheduled hardware or software breaks. There were two
failures in the period caused by mains power outages. Over the three
months the CPSE was taken out 4 times at lunchtime, twice to fix simple
line faults and twice to upgrade the software.
The second KB CPSE had two software crashes on the 14th march, otherwise no
faults in the 3 month period. It has been taken briefly out of service in
the last few days to change network routing otherwise it has not been booked
out.
The Appleton Tower CPSE has not performed as well as the other two. There
==== ercm09/emas-2900/b_xxxa.txt ====
prep x25_xxx3as,xxx3s#imp,s,clean,b,a
imp11 xxx3s#imp/xxx3s#rel,l
link11
xxx3s#rel
i77perm
.stack 1400
.streams 1
.name xxx
.end
xxx3ay
alist11 xxx3s#imp,xxx3s#rel/.lp23
==== ercm09/emas-2900/b_umctest.txt ====
imp11 umctest/,l
link11
umctest#rel
i77perm
.stack 1000
.streams 1
.name umct
.end
umctesty
==== ercm09/emas-2900/usergroup.txt ====
Edinburgh Regional Computing Centre
-----------------------------------
For the attention of the Edinburgh Computer Users Committee
-----------------------------------------------------------
Report on Communications
------------------------
TCPs A new TCP has been installed in the JCMB to provide extra lines.
---- Network charging was included in the last release and charges
are now made for terminal, line printer, graph plotter and
matrix plotter use.
FEPs The Service is stable
----
==== ercm09/emas-2900/erte_xbm01.txt ====
;**************************************
;* XBM01 *
;* INTERFACE BETWEEN HARDWARE AND IMP*
;* AND LOW LEVEL DUP11 HANDLER *
;* DATE: 23.FEB.80 *
;**************************************
PS=177776; PROCESSOR STATUS WORD
IDLEST=-1; SUPERVISOR IDLE FLAG
INTVAL=40; DEDICATED LOCATION FOR INTERRUPT NUMBER
ALARMF=44; DITTO - FOR CLOCK
PSECT=46; DITTO - CURRENT PSECT
LASTPS = 54
INTINF=56
UPAR=177640
UPDR=177600
UPAR0=40; INDEC INTO PSECT
==== ercm09/emas-2900/b_zom.txt ====
imp11 zomb82/,ll
link11
zomb82#rel
i77perm
.stack 5000
.streams 0
.end
zomb82y
list zomb82y,.BPP155
==== ercm09/emas-2900/ibmdoc_i1.txt ====
1
0 Ref. I1
- RAL IBM NETWORKING : INDEX (Ref. I1)
+ ___ ___ __________ _____ ___ __
0 Version 3
+ _______ _
0 8 April 1982
+ _ _____ ____
0 P M Girard
+ _ _ ______
0 Papers are by P M Girard unless otherwise stated.
0 PART A : PROTOCOLS
+ ____ _ _________
A1) Protocols in the SERC/NERC Network
A2) A Protocol for using VMCF
A3) The Application/NCP Protocol using VMCF
A4) SERCnet - Addressing Scheme
A5) SERCnet - Addressing Summary
A6) A Network Independent Transport Service
(PSS User Forum Study Group 3)
A7) Character Terminal Protocols on PSS
==== ercm09/emas-2900/node_supde0.txt ====
DEIMOS VSN 9.14 23.OCT.80 (CLI&LOAD)
3500
DVNO1Y N 0
SUP36 60002 0
PERM2Y 60006 0
BTT6Y 60012 150
BDK5Y 60016 70
FSYS1Y 60022 300
LOAD7Y 60026 300
CLI1Y 60032 200
MOTH6Y 60036 50
END
-6 304
-7 310 DQS11 # 1
-20 324 DQS11 #2
-21 330
-22 404 DQS11 #3
-23 410
-24 424 DQS11 #4
-25 430
-26 454 PARR INT #1
==== ercm09/emas-2900/dum2.txt ====
c 5
i 255
i 255
i 0
i 24
c 12
s -1
d -16
d 16
m 242
m 243
c 3
m 243
i 0
i 247
i 0
i 0
i 0
i 0
i 0
i 45
==== ercm09/emas-2900/b_xxxe.txt ====
prep x25_xxx2s,xxx2s#imp,s,clean
imp11 xxx2s#imp/xxx2s#rel,l
link11
xxx2s#rel
i77perm
.stack 1400
.streams 1
.name xxx
.end
xxx2y
alist11 xxx2s#imp,xxx2s#rel/.lp23
==== ercm09/emas-2900/dum3.txt ====
m 243
c 2
d 0
d 7
d 0
d 10
d 0
d 1
d 1
d 234
d 2
d 13
d 54
d 56
d 56
d 32
d 67
d 104
d 61
d 32
d 49
==== ercm09/emas-2900/dvrvp.txt ====
.PAGE
;****************** DPV 11 HANDLER *********************
; ELEMENT DVRVP IN NSILIB
;
; DPV11 Handler derived from the correspondng DUP11 handler.
;
; THIS VERSION PUTS THE FIRST 2 BYTES OF THE FRAME IN THE BUFFER'S
;PARAMETER BLOCK. THESE ARE NOT INCLUDED IN THE MESSAGE LENGTH.
;THE LENGTH COUNT MAY BE ZERO IF EITHER THE LENGTH REALY IS ZERO OR
;IF IT IS 256 BYTES. IN THE LATTER CASE THE POINTERS WILL BE NON-ZERO.
;
;** REGISTER DEFINITIONS **
DPVRCS=0
DPVRDB=2
DPVPSR=2
DPVTCS=4
DPVTDB=6
;** BIT DEFINITIONS **
TSOM=400
TEOM=1000
TEOMUP=2 ; TEOM in the upper byte.
==== ercm09/emas-2900/dum4.txt ====
c 12
l 5
d -16
d 16
m 243
c 5
i 255
i 255
i 0
i 24
c 12
s -1
d -16
d 16
m 1
m 243
c 3
m 243
i 0
i 5
i 0
==== ercm09/emas-2900/vaxperf2.txt ====
easygraph
title "Transfer rate - Using Protocols"
xaxis 20,"Packet Size in bytes"
xformat 3,0
xscale 0,25
yaxis 16,"Bytes/sec"
yformat 3,0
yscale 0,7000
flatnumber
linetype line+points
symbol square
data
50 2335
150 5415
250 8525
350 10290
450 13635
annotate "To Gec 63/40"
plot
overlay
symbol diamond
==== ercm09/emas-2900/dpal6dks.txt ====
GDGD
==== ercm09/emas-2900/dz11s.txt ====
!*****************************
!* *
!* DZ11 HANDLER *
!* DATE: 10.FEB.82 *
!* FOR ERTE: DATA GENERAL *
!*****************************
! STK = 300, STREAMS = 0
%CONTROL K'100001'
%CONSTSTRING (13) VSN = "Dz11:vsn001a
"
%RECORDFORMAT DUMF(%INTEGER D)
%CONSTRECORD (DUMF) %NAME NULL = 0
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMROUTINESPEC MAPHWR(%INTEGER SEGS)
%BEGIN
==== ercm09/emas-2900/rjeprops.txt ====
Proposed Changes to RCO-RJE Protocol for use on X25
======== ======= == ======= ======== === === == ===
1. In the 'Yellow book' specification of the Transport layer there is no
provision for a non-destructive disconnect. Currently RJE protocol
operates by transmitting the last packet of a file followed immediately
by Send Block+disconnect (a non-destructive disconnect).
Proposal a) A marker, ie a record length of 16_FFFF will be send on
the end of every RJE connection. When the receiver has
dealt with the file it will then clear down the connection
with a Transport Service (TS) Disconnect.
b) It will be necessary to distinguish between a
TS Disconnect that means 'file lost' (current meaning)
and a 'normal' Disconnect. The proposal is that the
qualifier on the TS Disconnect should be zero if the
file is received correctly, non-zero otherwise.
==== ercm09/emas-2900/ftppd_doc.txt ====
2. SOME THEORY
It is well known that the syntax of a context-free language may be
described by a set of phrases expressed as BNF productions. Alternatively,
the phrases may be described by regular expressions. This is equivalent but more
powerful. For example the language:-
<L> -> <exp> <rest>
<rest> -> <null> | + <exp> <rest> | - <exp> <rest>
<exp> -> <var> | <const>
May be written:-
L -> exp (( + , - ) exp)*
exp -> var , const
The constructs used to form the regular expression are:-
L -> A B
which describes A and B following sequentially.
==== ercm09/emas-2900/node_userts.txt ====
!************************
!* USERTS/USERTY *
!* DATE: 17.DEC.80 *
!************************
! FILE 'USERTS'
! STK = 500, STREAMS = 0
%CONSTSTRING (7) VSN = "VSN002A"
%RECORDFORMAT DMF(%INTEGER I)
%CONSTRECORD (DMF) %NAME NULL = 0
%CONTROL K'100001'
%BEGIN
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%RECORDFORMAT ITPF(%BYTEINTEGER CNSL, HDB1, HDB2, %STRING (241) S)
%RECORDFORMAT ITP2F(%BYTEINTEGERARRAY A(0:241))
%RECORDFORMAT ITP3F(%BYTEINTEGER CNSL, HDB1, HDB2, %C
==== ercm09/emas-2900/iprogsou_alist11.txt ====
! RECODE FOR IMP PROGRAMS
! THIS PROGRAM TAKES THE THIRD PASS
! OUTPUT OF THE IMP COMPILER
! AND MAKES A RECODE IN ASSEMBLY
! OF EVERY IMP SOURCE LINE
! AUTHOR K. STRAATMAN
! MATHEMATISCH INSTITUUT
! RIJKSUNIVERSITEIT TE GRONINGEN
! POSTBUS 800, GRONINGEN, THE NETHERLANDS
! 24 JAN 1978
! COMMAND: RECODE SOURCE OY / OUTPUT
%EXTERNALROUTINE ALIST11(%STRING(63) FILE)
%CONSTINTEGER MAX SPECS = 100
%OWNINTEGER MAIN PROG= 0
%STRING(63) SOURCE FILE, OBJECT FILE,OUTPUT,SDISP
%INTEGER DISP,I
%EXTERNALINTEGERFNSPEC EXIST(%STRING(63) FILE)
%EXTERNALROUTINESPEC DEFINE(%STRING(63) S)
! %EXTERNALINTEGERFNSPEC TIME40(%INTEGER INST)
==== ercm09/emas-2900/b_lmacx2s.txt ====
prep x25gen_lmacxs,lmacxs#imp,b,clean
dimp11 lmacxs
link11 /map
lmacxs
.streams 1
.stack 1000
.end
lmacx2s
destroy lmacx2y
rename lmacx2s#abs,lmacx2y
==== ercm09/emas-2900/b_fix.txt ====
==== ercm09/emas-2900/ring_basblktes.txt ====
! program to transmit basic blocks at full speed round the ring
! b.g. 03.sep.81
%control 1
%include "deimosperm"
%begin
%recordformat mef(%record(mef) %name link, %byteinteger len, type, %c
%integer address, %integerarray a(0:100))
%recordformat pf(%byteinteger ser, reply, %integer a, (%integer b, c %or %c
%record (mef) %name mes, %byteinteger len, s1))
%record (pf) p
%integer i,j,k
%constinteger ring ser = 13, buffer man = 17
==== ercm09/emas-2900/electiob80.txt ====
Lab Seats
SEAT Maj 2nd Lab Candidate
61 Niddrie - D.Brown
62 Craigmillar 1537 Kerr/Black (Was W. Black)
60 Gilmerton 1432 (snp) B. Lonie
35 Moat 651 (snp) B. Wilson
59 Inch 552 (snp) I. Campbell
20 Harbour 474 (snp) J. Hastie
42 Holyrood 434 (snp) R. Kerley
36 Stenhouse 419 (snp) J. Henderson
9 Granton 331 (snp) G. Monies
46 Milton 289 (con) V. Oliver (no snp)
19 Lorne 263 (con) M. Saren
33 Sighthill 227 (snp) J.McKay (now safer)
8 Muirhouse 193 (snp) McLaughlin
58 Kaimes 160 (con) Bjorg McKenzie
54 Firhill 159 (con) G. Barton
7 Pilton 5 (SNP HELD) A. Wood
37 Dalry 81 (SNP HELD) E. McKenzie
==== ercm09/emas-2900/zeps.txt ====
%EXTERNALROUTINE ZEPPELIN(%STRING(1) S)
%INTEGERARRAY SPACE(1:10,0:79)
%INTEGERARRAY BOMB,HANGAR,ZEPP,X,Y,NME,NMEX,NMEY,NMEB,NMEH,NMET(1:6)
%INTEGERARRAY GUN(24:55), TARGET(67:72), NMEHAN(73:78), BASE(7:12)
%INTEGER A,B,XX,YY,C,WHICH,UNKNOWN,R,TOTAL,ZS,AS
%STRING (20) ANS,NAME
%ROUTINESPEC CONVERT(%STRING(20) A,%INTEGERNAME B)
%ROUTINESPEC SCORE
%ROUTINESPEC DROP
%ROUTINESPEC NMEDROP
%ROUTINESPEC SELECT
%ROUTINESPEC FIRE
%ROUTINESPEC LAUNCH
%ROUTINESPEC NMELAUNCH
%ROUTINESPEC MOVE
%ROUTINESPEC NMEMOVE
%ROUTINESPEC NMEOPT(%INTEGER C)
%ROUTINESPEC RETARGET
%ROUTINESPEC BELLS(%INTEGER N)
%ROUTINESPEC DRAW
%ROUTINESPEC RST(%STRINGNAME S)
==== ercm09/emas-2900/b_loads.txt ====
imp11 loads
link11
loads#rel
i77perm
.stack 1000
.streams 1
.name lodf
.end
loady
list loady,.bpp155
==== ercm09/emas-2900/b_nsiw.txt ====
imp11 nsiw77s/,l
link11
nsiw77s#rel
i77perm
.stack 1000
.streams 2
.end
nsiw77y
alist11 nsiw77s/.lp23
==== ercm09/emas-2900/isotgreport.txt ====
Here it is!
DRAFT December 85
___________________________
Transition to OSI Standards
_____________________________________________________
Report of the Academic Community OSI Transition Group
__________________
0. Management Summary
____
This is always the last bit that gets written. It will emphasise the
transition as a dynamic process, needing careful management. It will flag
addressing as a major problem area. When it exists, it will be followed by
a page break.
_____________________________
==== ercm09/emas-2900/newsys_supbuilde.txt ====
! file 'sys_sbld5s'
!*************************************
!* sbld15s *
!* date: 25.feb.82 *
!* supervisor build program *
!************************************
! prep options are:-
! e - emas imp
! d - deimos imp
!#if ~(e!d)(=false)
{ #report Must specify e OR d}
{ #abort}
!#fi
!#if e(=true)
!#else(=false)
{ #report Preparing Deimos version}
!#fi
%conststring (13) vsn = "Sup Bld...1a
"
==== ercm09/emas-2900/b_ftpold.txt ====
imp11 ftp1es
link11
ftp1es#rel
i77perm
.stack 1000
.streams 1
.name ftps
.end
ftp1ey
list ftp1ey,.fep72
alist11 ftp1es/.lp23
==== ercm09/emas-2900/kntkv11.txt ====
%list
!
!*************************************************
!* *
!* PSS X-25 Level 2 Protocol Handler *
!* *
!* XPROT *
!* *
%conststring (8) datestring="28/08/85"
%conststring (8) timestring="11.49.32"
!* Version 30.1 22 July 1985 *
!* *
!*************************************************
! Prep options
!
! q - dqs11 code
! p - dup11 code
! n - kv11 code (n = Newcastle)
! b - Big Buffer version
==== ercm09/emas-2900/kents_rjes8.txt ====
%CONSTSTRING (7) VSN = "VSNK08P"
!********************************
!* EMAS-2900 FEP RJE SERVER *
!* FILE: RJES8/RJES8Y *
!* DATE: 06.MAR.80 *
!********************************
!MODIFIED FOR RING TO USE BYTE STEAM PROTOCOL INSTEAD OF NSI
!! STACK SIZE = 300
%SYSTEMROUTINESPEC MAP HWR(%INTEGER SEG)
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%RECORDFORMAT DMF(%INTEGER I)
%CONSTRECORD (DMF) %NAME NULL = 0
%CONTROL K'100001'
==== ercm09/emas-2900/node_umcs.txt ====
! file node_umcs
!*********************
!* umcs/umcy *
!* date: 05.apr.82 *
!!!!!!!!!!!!!!!!!!!!!!
! umc control program
!stack = 140
%control 1
%include "deimosperm"
%conststring (7) vsn = "vsn001b"
%begin
%constinteger umc control = 18
%recordformat xxf(%integer dummy)
%recordformat parf(%integer type, %c
(%record (xxf) %name b %or %integer address), %c
==== ercm09/emas-2900/tsbsp_tst_readthis.txt ====
The files are:
SOURCE main source code
RAWST state table in 'raw' form. To get a new state table INSERT CUR051.STY
then MAKESTAB TST. This will create the following 2 files.
STTEXT state table in readable form. The symbols * and - are used for 'error'
(should never happen) and no-action.
STAB state table in coded form including declarations for the state,event
and action values.
COMPILE OBEY file to compile and link TSTY, leaves a listing file TST#LIS
and an intermediate code file TST#REL.
==== ercm09/emas-2900/inv.txt ====
%begin
! %include "project:consts.imp"
%const %integer restart=14
%byte spacing=true,ship direction=1,ship type=1
%integer ship col=-1,timer
%integer no of men=3
%integer score=0
%integer max bomb factor=8
%integer no of invs=24,leftmost=1,rightmost=8,lowest=3
%integer no of bombs=0,sheet no=0
%integer shell row=-1,shell col=-1
%integer row,col,i,j
%integer row offset=0,col offset=0
%integer init,step,final
%integer legs in=false
%integer tank pos
%integer chs since esc=0
%integer buffer size=100
%integer bufflim,ibp,obp=0,iblim,char,ch
%own %byte %array score board (1:4)='0' (*)
==== ercm09/emas-2900/sys_superte.txt ====
DEIMOS VSN 11.1 20 SEP 84 (SBLD6Y) (NEW BUFF MAN) (CHANGED DEDLOCS)
RK05
3500
DVNO3Y N 0
SUP60 65002 0
PERM2Y 65006 0
BTT7Y 65012 0
BDK6Y 65016 0
FSYS78 65022 0
LOAD8Y 65026 0
CLI1Y 65032 0
MOTH6Y 65036 0
END
-11 340 KB#2 ADDR=776500, SER=19
-12 344 TT#2
-6 330 RING RX
-7 334 RING TX
-6 770 KMC11
-7 774 DITTO
-13 160 am1 interface
-14 164
==== ercm09/emas-2900/mean2s.txt ====
!
!
! ALOG ALOG ALOG ALOG ALOG ALOG ALOG ALOG ALOG ALOG ALOG ALOG
! ALOG ALOG ALOG ALOG ALOG ALOG ALOG ALOG ALOG ALOG ALOG ALOG
!
!
!
%CONTROL K'001001'
!
!
%BEGIN
!
!
!
!J.C.A. STARTED 10:11:76
!T.P.L LAST UPDATE 25:08:81 11:30 - FILE MEANS
! FOR ARTE MK 7.0 UPTO 128 SCRIPTS
! --- STACK 15000, STREAMS 4 ---
==== ercm09/emas-2900/atstats.txt ====
MTBF - KB 4190 - 3 Month Rolling Average
Month - Jan 84 - Feb 86
27
1,0,4,0,3,3,5,3,1,3,3,2,1,3,5,5,2,1,0,0,1,1,0,1,0,1,0
0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,1,0
==== ercm09/emas-2900/b_zomnew.txt ====
dimp11 zomb82
link11 /zomb82
zomb82
ercm11.emts
ercm11.newimp
.stack 5000
.streams 0
.end
zomb82
==== ercm09/emas-2900/docum_dmanual.txt ====
$A JUST=1; LINE=76; PAGE=59; TOP=3; BOTTOM=4; MARK=2
$A PAGENO=1
$A TAB=5,15,25
$B20
$L1CM
USER MANUAL FOR DEIMOS
$B2
$L1CM
B. GILMORE
$L1CM
AUGUST 1976
$N
$L1CUM
CONTENTS
$B6
$A INDENT=1
.TITLE $T6 .PAGE
$B0 @GENERAL FEATURES $T6 3
$B0 @SYSTEM COMMANDS. $T6 4
$B0 @THE .EDITOR. $T6 7
$B0 @THE .IMP COMPILER. $T6 8
==== ercm09/emas-2900/fepb_rjes8.txt ====
%CONSTSTRING (7) VSN = "VSNK08P"
!********************************
!* EMAS-2900 FEP RJE SERVER *
!* FILE: RJES8/RJES8Y *
!* DATE: 06.MAR.80 *
!********************************
!MODIFIED FOR RING TO USE BYTE STEAM PROTOCOL INSTEAD OF NSI
!! STACK SIZE = 300
%SYSTEMROUTINESPEC MAP HWR(%INTEGER SEG)
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%RECORDFORMAT DMF(%INTEGER I)
%CONSTRECORD (DMF) %NAME NULL = 0
%CONTROL K'100001'
==== ercm09/emas-2900/net87tit.txt ====
@make[article]
@device[x2700]
@style[spacing 1]
@begin[text,topmargin=+1.1inches,leftmargin=+0.25inches,rightmargin=+0.5inches]
blank
@newpage
@majorheading[ISO DIRECTIONS IN VTP]
@BLANKSPACE[0.5in]
@centre[@b[Brian Gilmore
Communications Manager
Edinburgh Regional Computing Centre
University of Edinburgh]]
@blankspace[1.8in]
The paper discusses
the need for a Virtual Terminal Protocol examining the shortcomings
of the current solutions. A VTP produced by the UK Academic Community
is discussed in order to compare it to the current state of ISO
standards work.
@blankspace[1.8in]
@begin[text,leftmargin 2in]
==== ercm09/emas-2900/news2.txt ====
$a line=29;just=1;invert=0
$l1
WHY JOIN A SINKING SHIP?
$p1 For months now the press and TV have been telling us that the
Labour Party is on the way out. Torn apart by splits, bancrupt, declining
membership ...... no future in the Labour Party! That's what the opponents
of the Labour Party want you to believe. For those of us who are active
members this picture is hard to square with our experience.
$p1 Take our branch, Sciennes Marchmont, for instance. Membership has
doubled over the last 5 years. Average turnout at branch meetings is four
times what it was 5 years ago. Regular leaflets and newsletters are being
produced. Public meetings are being held. Wherever the decline is, it
isn't here.
$p1 Debate there certainly is but wew aren't being torn apart. People
in the Labour Party do discuss politics and argue about issues.
The arguements can get quite heated at times but most of us see this as
a healthy sign.
$p1 And on the positive side there are new policies which give the
promise of a Labour Government which can make things change - a commitment
to unilateral nuclear disarmament; an alternative economic strategy;
a social policy which will redistribute wealth in this country. Not all
==== ercm09/emas-2900/news3.txt ====
$a line=29;just=1;invert=0
$l1
MEAN MINDED CUTS
$p1 As well as increasing the charges for school meals the new Tory council
has also changed the rules for school meals.
$p1 Now only parents receiving either supplementary benefit or family
income supplement can get free school meals for their children. Under
the Labour Council people on low incomes who, for some reason, did not
qualify for either of these benefits also obtain free school meals for
their children.
$p1 About 3000 people are affected and it hits those people very hard. It means
an extra #2.25 per week for each child.
$p1 For these people - already poor - the promise dangled by the Tories of rate
rebates and more money in your pocket, tastes very sour.
$b
$e
==== ercm09/emas-2900/edinburgh.txt ====
E0E6
Registering Institution:
Name prefix: UK.AC.
Standard name: EDINBURGH
Abbreviated name: ED
Entity Information:
Standard entity name: EDINBURGH
Abbreviated entity name: ED
Description: E.R.C.C. Distributed mail directory
Use:
Protocol Context: MAIL-NIFTP
Direction: FORWARD
Sub-network: JANET
DTE number: 000015000002
YBTS address: FTP.MAIL
Use:
Protocol Context: MAIL-NIFTP
Direction: FORWARD
Sub-network: PSS
DTE number: 234231354354
YBTS address: (DEMO,DEMO).EMAS.FTP.MAIL
==== ercm09/emas-2900/newsys_supbuilds.txt ====
! file 'sys_sbld5s'
!*************************************
!* sbld15s *
!* date: 25.feb.82 *
!* supervisor build program *
!************************************
! prep options are:-
! e - emas imp
! d - deimos imp
#if ~(e!d)
#report Must specify e OR d
#abort
#fi
#if e
#report Preparing Emas version
#else
#report Preparing Deimos version
#fi
%conststring (13) vsn = "Sup Bld...1a
"
==== ercm09/emas-2900/gatex_pre.txt ====
!**********************************************************
!* *
!* PSS X-25 Level 3 Protocol Handler *
!* *
!* GATEX *
!* *
!* Version 9.30 7 Sep 1983 *
!* *
!**********************************************************
!*
%control 1
%begin
!************************************
!* *
!* Declarations *
!* *
!************************************
!*
!****** Constintegers ******
!*
==== ercm09/emas-2900/snoops.txt ====
! programmable clock program
! prog to snoop on a task
! date: 5.mar.81
%control 1
%include "deimosperm"
%begin
%recordformat clockf(%integer status, data)
%constrecord (clockf) %name clock == k'112540'; ! in seg 4
%recordformat pf(%byteinteger ser, reply, %integer a, b, c)
%record (pf) p
%integer i,j,k,n, sum, maxi, sumn
%owninteger speed = 23210; ! every 2.321 secs
%owninteger target task = 0
%string (5) targ, s
%owninteger repf
%ownintegerarray pc(0:385)
==== ercm09/emas-2900/devlog1.txt ====
DEV 11/34 20.FEB.81 11.30
RING: 0-20978 0 0 0 0 0 0-22130-22130 1 1152 1152 0
RING: 0-28750 0 0 0 0 0 0-31398-31398 0 2648 2648 0
RING: 15 32259 3 0 0 0 0 2 29756 29735 1 2529 2529 0
RING: 0 31788 0 0 0 0 0 0 29271 29271 0 2517 2517 0
RING: 0-31428 0 0 0 0 0 0 31531 31531 0 2577 2577 0
RING: 0 32484 0 0 0 0 0 0 29949 29949 0 2535 2535 0
RING: 0 6268 0 0 0 0 0 0 4411 4411 0 1857 1857 0
RING: 0 28656 0 0 0 0 0 0 26220 26220 0 2436 2436 0
==== ercm09/emas-2900/b_ftpra.txt ====
new
prep x25gen_ftpd5s,ftpd5s#imp,r,g,clean,a
dimp11 ftpd5s#imp
link11 /ftpd5s
ftpd5s#rel
.stack 2400
.streams 3
.stackseg 6
.end
ftpg5s
c ftpg5s#abs,ftpray
destroy ftpg5s#abs
alist11 ftpd5s#imp
list ftpd5s#lst,.lp23
==== ercm09/emas-2900/devlog2.txt ====
DEV 11/34 23.FEB.81 12.00 SATURATION TEST
RING: 0 0 0 0 0 0 0 0 0 0 1 0 0 0
RING: 26173-12027 21 17 359 85 509 815 2300-11237 551 516 1016 0
RING:-19973-32756 148 45 660 184 1079 1598 5953-31028 1068 1072 1986 0
RING:-26870-29405 150 46 742 202 1057 1472 11266-27745 1123 1155 2009 0
RING: 27775 14728 495 68 641 240 1395 1286-24599 16852 1321 1748 2001 0
RING: 27994 16315 439 58 647 242 1422 1258-27120 18378 1225 1699 2003 0
==== ercm09/emas-2900/ass11s.txt ====
%EXTERNALROUTINE ASS11(%STRING (63)FILES)
%EXTERNALINTEGERFNSPEC SMADDR(%INTEGER CHAN, %INTEGERNAME LENGTH)
%EXTERNALROUTINESPEC DEFINE(%STRING (63)S)
%DYNAMICSTRING (8) %FN %SPEC DATE
%DYNAMICINTEGERFNSPEC TIME40(%INTEGER IN)
%DYNAMICINTEGERFNSPEC TIME03(%INTEGER IN)
%DYNAMICINTEGERFNSPEC TIME45(%INTEGER IN)
%ROUTINE DUMP BIN(%HALFINTEGERARRAYNAME CODE, %C
%INTEGER START, FINISH, %STRINGNAME T, %INTEGERNAME FLAG)
%INTEGER CHECK, J
%ROUTINE PUT(%INTEGER N)
%INTEGER M
M = N>>8&255
N = N&255
PRINTCH(N); PRINTCH(M)
CHECK = CHECK+(N+M)
%END
%RETURN %IF START < 0; !?????
SELECT OUTPUT(3)
CHECK = 0
PUT(1)
==== ercm09/emas-2900/iunc.txt ====
@h{INTER-UNIVERSITY NETWORK COMMITTEE}
@b[@u[Conference on Campus and Local Area Networking Choice]]
@b[@u[University of Reading, Monday 23 September - Tuesday 24th September 1985]]
@u[Programme]
@b[@u[MONDAY, 23 SEPTEMBER]]
11.30 onwards Registration - St. Andrew's Hall
12.30 - 13.45 Buffet Lunch
@b[@u[First Session]] - Lecture Theatre LT4, London Road Site
Chairman: Dr. P. Kemp, Secretary, IUCC
14.15 Welcome John Lindley,
Chairman, IUNC
==== ercm09/emas-2900/kmc11_kmcman.txt ====
,$A JUST=1; LEFT=2
$A INVERT=0; INVO=0
$A PAGENO=1; BOTTOM=4; TOP=3; PAGE=58
$A LINE=72; MARK=2
$A CAP=0; CAPO=0; CAPSH=0; CAPSHO=0
$A TAB=4,8,12,18,20,24,28,32,36,40,44,48,52,56,60,64,68
$N
$B20
$L1M
H A L K
$B2$L2M
A HIGH-LEVEL ASSEMBLY LANGUAGE
FOR THE KMC11
$B6
$L1M
AN INFORMAL INTRODUCTION
$N
$B2$T0%Introduction
$B2HALK is based upon the language HAL, designed and
implemented by Hamish Dewar on the Interdata 70 series and the
ICL 7502. Various modifications have been made to
==== ercm09/emas-2900/gecenhrest.txt ====
@majorheading[GEC PSE Enhancement Questionaire Results]
@blankspace[1in]
The following results are based on 45 returned forms. Of these,
6 were rejected because they were simply duplicates of other forms from
the same site.
The 'points' have been allocated by the following
@verbatim[
High Priority - 3 Votes
Medium Priority - 2 Votes
Low Priority - 1 Votes
Not Interested - 0 Votes
]
The full results have been given, as well as an ordered list of the
results and the original questions have been included for the top 15.
I am sorry about the mixup over the Questions A7-A26, the results for
these questions will follow.
@format[Brian Gilmore
==== ercm09/emas-2900/spokesinstr.txt ====
SPOKES Bike Survey Thursday 21 May 1981
====================
Name:
Junction:
Times:
========================================================================
==== ercm09/emas-2900/networks85_netnotes.txt ====
$a device=x2700
$d1 :cosmos12b:
$d2 :cosmos14:
$a tab=1",3.5",4.5",4.8",5.7"
$a left=5
$5
$l0
Intro
Nature of Edinburgh University
Data Network - slide 1
Based on 3 x gec packet switches (CPSEs) - central circles
Voice Network - slide 2
Early exposure to PABX & LANs
ICL/DTI - Investigate Interconnection
Project Diagram - slide 3
+ University in progress of procuring new PABXs
Potential Advantages - slide 4
==== ercm09/emas-2900/erteicl_icl1s.txt ====
!*********************
!* ICL1S/ICL1Y *
!* DATE: 24.FEB.80 *
!!!!!!!!!!!!!!!!!!!!!!
!STACK = 140
%RECORDFORMAT XXF(%INTEGER DUMMY)
%CONSTRECORD (XXF) %NAME NULL = 0
%CONTROL X'100001'; ! TRUSTED PROGRAM AND QUICK
! ROUTINE ENTRY AND EIS
%CONSTSTRING (7) VSN = 'VSN001B'
%BEGIN
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%RECORDFORMAT PARF(%INTEGER TYPE, %RECORD (XXF) %NAME B, %C
%INTEGER LEN)
==== ercm09/emas-2900/tests.txt ====
%begin
%integer i,j,k
%cycle
readch(i); write(i, 4); newline
%exitif i=4
%repeat
%endofprogram
==== ercm09/emas-2900/gate5.txt ====
! FILE 'FEP_GATE5'
%CONSTSTRING (7) VSN = "VSN005F"
!****************************
!* EMAS-2900 FEP GATE *
!* FILE: GATE5 *
!* DATE: 27.OCT.80 *
!****************************
!! STACK SIZE = 300
%RECORDFORMAT DMF(%INTEGER I)
%SYSTEMROUTINESPEC LINKIN(%INTEGER SERVICE)
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%CONSTRECORD (DMF) %NAME NULL = 0
%OWNINTEGER OWN TERM = 72; ! NETWORK ADDRESS
%OWNINTEGER SUBATTACH FLAG = 74
%CONSTINTEGER KENT = 0; ! KENT=1 - NO NODE IN NET
==== ercm09/emas-2900/ednet0187.txt ====
{{circle(26,11.5,.5)}}
{{INLABEL(.14,"Fe3")}}
{{circle(9.5,15,1.5);inlabel(.2,"TelePAC@b15003000")}}
{{join(c1,c2)}}
{{circle(8,11,1.3);inlabel(.175,"TelePAC 3@b15004000")}}
{{circle(13,21.7,2);inlabel(.3,"KB-CPSE@bGEC 4190@b")}}
{{inlabel(.14,"@B@B@b@b000015000000")}}
{{circle(13,4,2);inlabel(.3,"AT-CPSE@bGEC 4190@b")}}
{{inlabel(.14,"@B@B@b@b000016000000")}}
{{CIRCLE(8.5,18,1.25);inlabel(.175,"TelePAC 2@b15005000")}}
{{CIRCLE(26,10.5,0.5);inlabel(.14,"Fe1")}}
{{CIRCLE(26,9.5,0.5);inlabel(.14,"Fe2")}}
{{CIRCLE(26,3.8,0.5);inlabel(.14,"Fe2")}}
{{CIRCLE(32.5,21.7,1.5);INLABEL(.14,"JANET@bPSE")}}
{{CIRCLE(26,7.3,.5);inlabel(.14,"Fe2")}}
{{circle(12.75,24.8,.1);fill(c12)}}
{{circle(14.75,24.8,.1);fill(c13)}}
{{circle(16.75,24.8,.1);fill(c14)}}
{{circle(20.75,25.2,0)}}
{{circle(6.75,25.2,0)}}
{{CIRCLE(6.75,1.4,0)}}
==== ercm09/emas-2900/erteicl_sqrts.txt ====
!SQUARE ROOT ROUTINE
!KEN LOOSEMORE 17TH MARCH 1977
%CONTROL K'001001'
%EXTERNALROUTINE SQRT(%INTEGERNAME N1,N2)
%INTEGER R2,INC,S1,S2
%ROUTINE SQUARE(%INTEGERNAME S1,S2,%INTEGER R2)
%INTEGER A,B,X,Y,Z,D
A=R2//100
B=R2-100*A
X=A*A
Y=A*B*2
Z=B*B
D=Y//100
X=X+D
Z=Z+(Y-100*D)*100
D=Z//1000
%IF X> 3276 %OR(X=3276 %AND D>7) %START
==== ercm09/emas-2900/b_sup.txt ====
link11 /sup
newsys_dvn87y
supnew#rel
sinnew#rel
gen_pushopsrel
.fixup b_fix
.stack 0
.alone 0 77777
.squeeze
.entry ep
.end
supnew
c supnew#abs,newsys_supnewy
==== ercm09/emas-2900/node_usert2s.txt ====
!************************
!* USERTS/USERTY *
!* DATE: 25.NOV.80 *
!************************
! FILE 'USERTS'
! STK = 500, STREAMS = 0
%RECORDFORMAT DMF(%INTEGER I)
%CONSTRECORD (DMF) %NAME NULL = 0
%CONTROL K'100001'
%BEGIN
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%RECORDFORMAT ITPF(%BYTEINTEGER CNSL, HDB1, HDB2, %STRING (241) S)
%RECORDFORMAT ITP2F(%BYTEINTEGERARRAY A(0:241))
%RECORDFORMAT ITP3F(%BYTEINTEGER CNSL, HDB1, HDB2, %C
%BYTEINTEGERARRAY A(0:32))
==== ercm09/emas-2900/b_loadup.txt ====
imp11 loadups
link11
loadups#rel
i77perm
.stack 10000
.streams 0
.name ldup
.end
loadupy
==== ercm09/emas-2900/btt6ss.txt ====
!**************
!* BTT6S *
!*DA:24.MAR.80*
!**************
%CONTROL K'100001'; ! 'SYSTEM' PROGRAM (FAST ROUTINE ENTRY/EXIT)
%PERMROUTINESPEC SVC(%INTEGER EP, P1, P2)
%BEGIN
%SYSTEMROUTINESPEC MAPHWR(%INTEGER SEGS)
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%RECORDFORMAT PF(%BYTEINTEGER SERVICE, REPLY, %C
%INTEGER A1, A2, A3)
%RECORDFORMAT TTF(%INTEGER KBS, KBD, TTS, TTD)
%RECORDFORMAT BUFF(%INTEGER PT, LAST, %BYTEINTEGERARRAYNAME B)
%RECORDFORMAT BUFFX(%INTEGER PT, LAST, ARRAYPT)
%CONSTRECORD (BUFFX) %NAME NULL = 0
==== ercm09/emas-2900/ertedgn_rk07s.txt ====
!************
!* RK07S *
!*07.OCT.80*
!************
!* UNIT 4 ADDED
%CONTROL K'100001'; ! 'SYSTEM' PROGRAM+MUL+TRUSTED
%BEGIN
%SYSTEMINTEGERFNSPEC GETID
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMROUTINESPEC MAPHWR(%INTEGER SEGS)
%RECORDFORMAT PF(%BYTEINTEGER SERVICE, REPLY, %INTEGER A1, A2, A3)
%RECORDFORMAT P2F(%INTEGER D)
%RECORDFORMAT RKF(%INTEGER RKCS1, RKWC, RKBA, RKDA, RKCS2, RKDS, RKER, %C
RKAS, RKDC, RKDB, MR1, EP1, EP2, MR2, MR3)
%CONSTRECORD (RKF) %NAME RK = K'117440'
==== ercm09/emas-2900/gecsys669.txt ====
Changes for System 669 System configuration
1. Delete Call Redirection from Lau 09 to Lau 46
and from Lau 46 to Lau 09 (EA72)
2. Change Lau 03 (TRK2) to a DTE with 100 lcns
Lau 08 (GSCP) to a DCE with 100 lcns
3. Please incluse the patch to allow addaddr etc on enabled links
4. Rename GSCP (lau 08) to LA08
XGTE (lau 07) to LA07
TCPM (lau 13) to LA13
MEME (lau 15) to LA15
5. Add Call redirection from :
Lau 01 to Lau 51
Lau 51 to Lau 01
Lau 03 to Lau 51
==== ercm09/emas-2900/gecenhan.txt ====
Questionaire for Desired PSE Enhancements
-----------------------------------------
Please examine the detailed description of each enhancement on the seperate
sheets and then categorise the priority you attach to each enhancement on
the form below in the following way.
H - High Priority
M - Medium Priority
L - Low Priority
N - Not Interested
Attempt to distribute your priorities evenly, an answer of high priority for
everything will not tell us anything.
Please return the form to Mike Capp at GEC.
PSE Network Network
Control Control Admin. External Other
==== ercm09/emas-2900/time40s.txt ====
%EXTERNALINTEGERFN TIME40(%INTEGER IN)
%INTEGER S, D, SR, DR, BF, LEN, J, T, IND, EF
%SWITCH PSW(0:7)
%SWITCH EIS(0:3)
!!
%CONSTINTEGERARRAY MOVEA(0:10) = %C
90, 284, 368, 146, 242, 242, 318, 242, 318, 318, 402
%CONSTINTEGERARRAY MOVEB(0:10) = %C
180, 298, 382, 180, 256(2), 332, 256, 332, 332, 416
%CONSTINTEGERARRAY SOU(0:7) = 0, 78, 84, 174, 84, 174, 146, 236
%CONSTINTEGERARRAY SOUB(0:7) = %C
0, 95, 101, 191, 101, 191, 163, 253
%CONSTINTEGERARRAY CMPA(0:2) = 99, 160, 176
!!
%CONSTINTEGERARRAY DST(0:7) = %C
0, 78, 84, 174, 84, 174, 146, 236
==== ercm09/emas-2900/reportdec.txt ====
Communications Group - Termly Report
==================== =============
Personnel
N. Millar has converted his half time for Computer Science to one day a
week for this term and next.
Events of the last term
=======================
==== ercm09/emas-2900/eresu82all.txt ====
Alnwickhill/Kaimes
c 2081
l 1937
b 1764
s 516
m 144
p 50.9
*
Balerno/Baberton
c 3802
b 2317
s 1059
l 781
m 1485
p 61.1
*
Braidburn/Fairmilehead
c 3811
b 3120
l 451
s 373
==== ercm09/emas-2900/kents1280_names.txt ====
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%RECORDFORMAT DMF(%INTEGER I)
%CONSTRECORD (DMF) %NAME NIL = 0
%CONTROL K'100001'
%BEGIN
%CONSTSTRING (7)VSN = 'VSN004A'
%RECORDFORMAT MEF(%RECORD (MEF) %NAME LINK, %BYTEINTEGER LEN, %C
TYPE, %INTEGER ADDRESS,PORT,COMMAND,RPORT,FN, %C
%INTEGERARRAY A(0:60) )
==== ercm09/emas-2900/b_lmss.txt ====
e gen_lmtims/temp
f/prompt("n/k2g
node = 80; term = 80
m-0
f/if tim>600/g5
%if tim>600 %start
printstring("Greater than 12 secs
")
int = 'A'
%finish
%c
imp11 temp
link11
temp#rel
i77perm
.stack 2000
.streams 1
.name lmss
.end
lmssy
==== ercm09/emas-2900/gateold.txt ====
! FILE 'FEP_GATE5'
%CONSTSTRING (7) VSN = "VSN005F"
!****************************
!* EMAS-2900 FEP GATE *
!* FILE: GATE5 *
!* DATE: 27.OCT.80 *
!****************************
!! STACK SIZE = 300
%RECORDFORMAT DMF(%INTEGER I)
%SYSTEMROUTINESPEC LINKIN(%INTEGER SERVICE)
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%CONSTRECORD (DMF) %NAME NULL = 0
%OWNINTEGER OWN TERM = 72; ! NETWORK ADDRESS
%OWNINTEGER SUBATTACH FLAG = 74
%CONSTINTEGER KENT = 0; ! KENT=1 - NO NODE IN NET
==== ercm09/emas-2900/log31aug82.txt ====
30/08/82 14:00:00 N006T000 6 18 7 56 26 80 80 210 32 7 0 6 3
30/08/82 14:00:00 N009T000 6 20 156 156 17 0 75 232 32 4 7 9 5
30/08/82 14:00:00 N006T000 6 7 156 156 27 9 75 241 32 4 7 9 5
30/08/82 14:00:00 N009T000 6 20 6 83 21 90 90 107 32 48 220 79 48
30/08/82 14:00:00 N006T000 6 1 0 83 27 90 90 166 32 48 220 79 48
30/08/82 14:00:05 N006T000 6 27 9 40 7 156 156 168 32 72 204 137 137
30/08/82 14:00:05 N009T000 6 4 0 40 20 156 156 110 32 72 204 137 137
30/08/82 14:00:10 N009T000 6 4 0 40 3 80 80 247 32 6 3 7 4
30/08/82 14:00:10 N006T000 6 7 156 156 27 9 180 0 32 1 2 2 0
30/08/82 14:00:10 N009T000 6 20 156 156 3 0 180 7 32 1 2 2 0
30/08/82 14:00:15 N006T000 6 10 0 65 29 72 72 26 32 41 105 66 66
30/08/82 14:00:20 N009T000 6 20 156 156 2 0 182 26 32 1 2 2 0
30/08/82 14:00:20 N006T000 6 7 156 156 27 9 182 9 32 1 2 2 0
30/08/82 14:00:25 N009T000 6 20 156 156 21 90 90 37 32 5 7 9 5
30/08/82 14:00:25 N006T000 6 7 156 156 27 90 90 15 32 5 7 9 5
30/08/82 14:00:40 N006T000 6 7 156 156 26 0 181 137 32 1 0 1 0
30/08/82 14:00:40 N006T000 6 1 0 83 23 80 80 27 32 6 3 7 4
30/08/82 14:01:05 N006T000 6 7 156 156 29 72 5 50 32 7 17 12 11
30/08/82 14:01:15 N009T000 6 20 156 156 5 78 78 105 32 5 14 11 10
30/08/82 14:01:15 N006T000 6 7 156 156 27 78 78 60 32 5 14 11 10
30/08/82 14:01:20 N006T000 6 7 156 156 29 72 9 69 32 4 7 9 8
==== ercm09/emas-2900/b_exters.txt ====
%externalstring (255) %map cli param
%constintegername cli addr = k'160000'
%result == string(cli addr)
%end
%endoffile
==== ercm09/emas-2900/kents_docs.txt ====
April 1980 - 1 -
_ ____________
1 Introduction
There are two programs, which run as separate tasks under the DEIMOS
operating system [1], to control the transmission of information on the ring.
The programs are written in IMP77 [2].
The first is a device driver for the ring interface, it provides for _____
basic
_____ [3] transfers on the ring, initialisation of the interface and
block
notification of power failure on the ring. The ring driver is designed to be
used by several tasks each of which specifies to the ring driver a range of
input ports for which it will accept input. The second program provides an
implementation of the byte stream protocol BSP [4], using the ring driver to
perform the data transfers.
The BSP handler, on initialisation, notifies the ring handler that all input to
ports in the range 1 up to the maximum number of byte stream ports allowed
==== ercm09/emas-2900/node_nbsmon.txt ====
! file 'nbsmon'
!********************************
!* bsp to nsi interface *
!* file: nbsmon *
!* date: 09.mar.82 *
!* monitoring program *
!*********************************
!! stk = 1000, strm = 1
%control 1
%include "deimosperm"
%begin
%conststring (13)vsn = "NBSM...1b
"
%recordformat mef(%record (mef) %name link, %byteinteger len, %c
==== ercm09/emas-2900/nodemons.txt ====
%EXTERNALROUTINE NODEMON(%STRING (255) S)
%EXTERNALROUTINESPEC NODEGRAPHS(%STRING (255) S)
%EXTERNALROUTINESPEC DEFINE(%STRING (255) S)
%STRING (255) T, U, UU, TITLE, UUU
%RECORDFORMAT FF( %C
%INTEGER TIM, CPU, ATT,CON,NIF,ERR, %INTEGERARRAY A(4:21))
%OWNINTEGERARRAY AA(0:21)=0(22)
%OWNINTEGERARRAY R(0:21) = 0(22)
%INTEGER I, DIFF, K, L, US, CP, KB, PK, RJ
%OWNINTEGER USERS, STA, CPU, PKTS, SBR, BYT, RJEO, TIM, RJEI
%OWNINTEGER POINTS,ATT,CON,MES,COK,CFAIL,BL,ST,NIF,ERR
%RECORD F(FF)
!!
%OWNINTEGER CPU IDLE = 141; ! 160=FAST STORE, 141=SLOW STORE
!!
!!
%ROUTINE RD(%INTEGERNAME N)
READ(N)
%IF N< 0 %THEN N = N+32768*2
%END
!!
==== ercm09/emas-2900/b_lyn.txt ====
imp11 lynp3s/,ll
link11
lynp3s#rel
i77perm
.stack 1000
.streams 1
.end
lynp3y
alist11 lynp3s/.lp23
==== ercm09/emas-2900/b_buff.txt ====
imp11 x25_buff5s/buff5s#rel
link11
buff5s
i77perm
.stack 1000
.streams 0
.name buff
.end
buff5y
transfer buff5y,emas-a(,)BUFF5q(25),ma,no
alist11 x25_buff5s,buff5s#rel/.lp23
==== ercm09/emas-2900/housingcs2.txt ====
%EXTERNALROUTINE HOUSING(%STRING (255) S)
%EXTERNALROUTINESPEC DEFINE(%STRING (255) S)
%EXTERNALROUTINESPEC PROMPT(%STRING (18) S)
%STRING (255) T,U
%RECORDFORMAT INFOF(%INTEGER FORM, WARD, APTS, MARKET, ACTUAL, TYPE)
%RECORD(infof) %ARRAY INFOA(1:4000)
%OWNINTEGERARRAY QUARTER(1:10) = 1(10)
%OWNBYTEINTEGERARRAY COMM(1:7) = 'W', 'H','A','*','S','R', 'F'
%SWITCH SW(1:7)
!!
%OWNINTEGER NO OF TYPES = 9
%CONSTINTEGERARRAY TYPEX(1:9) = 'B', 'U', 'L', 'M', %C
'D', 'G', 'F', 'S', 'T'
%CONSTINTEGERARRAY TINDEX(1:9) = 1(5), 2, 3, 4, 5
%OWNINTEGERARRAY COUNTWARD(0:62) = 0(63)
%INTEGERARRAY TYPE(0:6, 1:8); ! no of types and no of quarters
%RECORD (infof) %NAME INFO
!!
%INTEGER I,J,K,X,Z, LIMIT, MAX,TOP QU, QURT, THIS COMM
==== ercm09/emas-2900/fepfig2s.txt ====
%OWNINTEGER END = -1
%OWNINTEGERARRAY TIME(0:1100) = 0(1101)
%OWNINTEGERARRAY KBS(0:1100) = 0(1101)
%OWNINTEGERARRAY CPU(0:1100) = 0(1101)
%OWNINTEGERARRAY USERS(0:1100) = 0(1101)
%OWNINTEGERARRAY RJE(0:1100) = 0(1101)
%OWNINTEGERARRAY PKTS(0:1100) = 0(1101)
%OWNINTEGERARRAY SBR(0:1100) = 0(1101)
%OWNINTEGERARRAY ITP(0:1100) = 0(1101)
%OWNINTEGERARRAY RJEI(0:1100) = 0(1101)
%OWNREAL TIMEI = 1, MAX1, MAX2, SLOPE1, SLOPE2
%ROUTINESPEC SPECGRAPHS(%STRING (255) S)
%EXTERNALROUTINESPEC DEFINE(%STRING (255) S)
%EXTERNALROUTINESPEC CLOSE STREAM(%INTEGER CHAM)
%EXTERNALROUTINE FEPDO(%STRING (255) S)
%STRING (255) T, U, UU, TITLE, UUU
%RECORDFORMAT FF( %C
%INTEGER TIM, USERS,STA,CPU,PKTS,SBR,BYT,RJEO,RJEI)
%INTEGER I, DIFF, K, L, US, CP, KB, PK, RJ, WHO, WHO1, WHO2
%OWNINTEGER USERSX, STA, CPUX, PKTSX, SBRX, BYT, RJEO, TIM, RJEIX
%OWNINTEGER POINTS, FEP NO = -1, FLAG = -1
==== ercm09/emas-2900/response_pssloopjan7.txt ====
Node = 0, Term = 5 - 07 Jan 82 11.00-12.00 ->psse->loop->2972
0
0
0
0
0
18
578
262
181
98
60
37
28
16
16
5
8
3
2
0
==== ercm09/emas-2900/b_nlpx.txt ====
imp11 x25_nlpx1/nlpx1#rel,l
link11
nlpx1#rel
i77perm
.stack 1000
.streams 1
.name nlpx
.end
nlpx1y
==== ercm09/emas-2900/networks85_newpaper.txt ====
@make[article]
@device[x2700]
@style[spacing 2]
@modify[hd2,facecode=k]
blank
@newpage
@section[Introduction]
Edinburgh University is spread across
many parts of Edinburgh with two main "campus" areas and a number of
other scattered departments. This situation has led to a very high
dependence on data networking which has been built up over fifteen years in order
to ensure that students and staff can communicate with either the
main University Services or local department machines.
The current network (see fig 1)
is based on three GEC packet switches supporting
35 hosts and 100 synchronous links [1].
The dispersed nature of the University
has resulted in the development of a separate complex
speech network (see fig 2)[2]. The
==== ercm09/emas-2900/b_infopsse.txt ====
prep x25_infos,infos#imp,x,e,m,clean,g
imp11 infos#imp/,l
link11
infos#rel
i77perm
.stack 2000
.streams 1
.name info
.end
infoxgy
disconnect infoxgy
alist11 infos#imp/.lp23
==== ercm09/emas-2900/erteicl_dup11e.txt ====
!**************
!* DUP11E *
!*DA:23.FEB.80*
!**************
%CONTROL K'100001'; ! 'SYSTEM' PROGRAM AND
! TRUSTED PROG
%RECORDFORMAT PARF(%INTEGER TYPE, ADDRESS, LEN)
%EXTERNALROUTINE DUP11E(%RECORD (PARF) %NAME P)
%SYSTEMROUTINESPEC MAPHWR(%INTEGER SEG)
%SYSTEMINTEGERFNSPEC GETID
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMINTEGERFNSPEC MAP ABS(%INTEGER ADR, LEN, REQ ID)
%PERMINTEGERFNSPEC SVC(%INTEGER EP, P0, P1)
%RECORDFORMAT PF(%BYTEINTEGER SER, REPLY, %INTEGER A1, A2, A3)
==== ercm09/emas-2900/b_ring.txt ====
imp11 ring8s/,ll
link11
ring8s#rel
i77perm
.stack 1000
.streams 1
.end
ring8y
list ring8y,.fep72
==== ercm09/emas-2900/kent#jun81_zboots.txt ====
!z80 TCP BOOT PROGRAM
!VERSION 1 JUST LOADS FROM STREAM 1 TO TEST THE BSP INTERFACE
!2:6:81
!VERSION 2 ALLOWS THE USER TO SPECIFY A MACHINE NAME AND CORRESPONDING
!LOAD FILE - INT S ZBT PUTS IT INTO THE 'SET' MODE WHERE IT PROMPTS
!FOR THE MACHINE NAME AND FILE NAME
!8:6:81
!! STK = 300, STRM = 1
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMROUTINESPEC MAP HWR(%INTEGER SEG)
%SYSTEMROUTINESPEC ALARM(%INTEGER TICKS)
%RECORDFORMAT DMF(%INTEGER I)
%CONSTRECORD (DMF) %NAME NIL = 0
%RECORDFORMAT XF(%BYTEINTEGER UNIT,FSYS, %BYTEINTEGERARRAY FNAME(0:5))
==== ercm09/emas-2900/usercmfeb.txt ====
Edinburgh Regional Computing Centre
-----------------------------------
For the attention of the Edinburgh Computer Users Committee
-----------------------------------------------------------
Report on Communications
------------------------
TCPs An extra TCP has been installed in the Appleton Tower to spread
---- the load around. An experiment with better support for screen
packages is being tried on a TCP.
FEPs The FEPs on the 2988 have been more stable although there is still
---- an unresolved hardware difference between the 2988 and the 2972
==== ercm09/emas-2900/testats.txt ====
MTBF - TelePAC #1 - 3 Month Rolling Average
Month - Jan 86 to May 86
5
0 1
0 0 1 0 0 0 0 0
==== ercm09/emas-2900/networks85_titlesh.txt ====
@make[article]
@device[x2700]
@style[spacing 1]
@begin[text,topmargin=+1.1inches,leftmargin=+0.25inches,rightmargin=+0.5inches]
blank
@newpage
@majorheading[AN APPRAISAL OF THE ADVANTAGES & DISADVANTAGES
OF USING A PABX FOR DATA TRAFFIC]
@BLANKSPACE[0.5in]
@centre[@b[Brian Gilmore
Communications Manager
Edinburgh Regional Computing Centre
University of Edinburgh]]
@blankspace[1.8in]
The paper discusses the main advantages and disadvantages of using a
modern PABX for mixed speech and data traffic. It comes to the conclusion
that with the currently available technology it is not economic to use
such an exchange for extensive data traffic and the paper goes on to look at
future trends in this area in
particular the use of PABX/LAN Gateways to ease connection problems.
==== ercm09/emas-2900/fepfig3s.txt ====
%owninteger end = -1
%ownintegerarray time(0:1100) = 0(1101)
%ownintegerarray kbs(0:1100) = 0(1101)
%ownintegerarray cpu(0:1100) = 0(1101)
%ownintegerarray users(0:1100) = 0(1101)
%ownintegerarray rjeo(0:1100) = 0(1101)
%ownintegerarray pkts(0:1100) = 0(1101)
%ownintegerarray sbr(0:1100) = 0(1101)
%ownintegerarray itp(0:1100) = 0(1101)
%ownintegerarray rjei(0:1100) = 0(1101)
%owninteger length, arraddr
%ownreal timei = 1, max1, max2, slope1, slope2
%externalintegerfnspec smaddr(%integer chan, %integername len)
%externalroutinespec destroy(%string (255) s)
%externalroutinespec newsmfile(%string (255) s)
%routinespec graph1(%realarrayname results)
%routinespec graph4(%realarrayname results)
%routinespec graph5(%realarrayname results)
%routinespec graph6(%realarrayname results)
%externalroutinespec define(%string (255) s)
==== ercm09/emas-2900/sys_rl04s.txt ====
!************
!* RL04S *
!*07.OCT.80*
!************
!* UNIT 4 ADDED
%CONTROL K'100001'; ! 'SYSTEM' PROGRAM+MUL+TRUSTED
%BEGIN
%SYSTEMINTEGERFNSPEC GETID
%SYSTEMROUTINESPEC LINKIN(%INTEGER SER)
%SYSTEMROUTINESPEC MAPHWR(%INTEGER SEGS)
%RECORDFORMAT PF(%BYTEINTEGER SERVICE, REPLY, %INTEGER A1, A2, A3)
%RECORDFORMAT P2F(%INTEGER D)
%RECORDFORMAT RLF(%INTEGER CS, BA, DA, MP)
%CONSTRECORD (RLF) %NAME RL = K'114400'
%CONSTINTEGERNAME PS = K'117776'
%CONSTINTEGER RLTOP = 10239
==== ercm09/emas-2900/tsbsp_tst_compile.txt ====
RM TSTY,TST#REL,TST#LIS
IMP11 TST_SOURCE,TST#REL,TST#LIS
LINK11
CONLIB.IMP77PY#REL
TST#REL
.STACK 1000
.STREAMS 1
.END
TSTY
==== ercm09/emas-2900/dbug77.txt ====
!FILE 'SYS_DBUG6S77'
!*****************************
!* DBUG6S *
!*DATE: 17.APR.80 *
!* MODIFIED FOR IMP77 *
!*****************************
!! STK = 300, STR = 1
%SYSTEMROUTINESPEC MAPHWR(%INTEGER SEG)
%SYSTEMROUTINESPEC MAP VIRT(%INTEGER A, B, C)
!%SYSTEMINTEGERFNSPEC MAP PSECT(%INTEGER TASK, SEG)
%BEGIN
%INTEGERFNSPEC MAP PSECT(%INTEGER SEG, TASK)
%CONSTBYTEINTEGERNAME ID == K'160030'
%CONSTINTEGER VIR DISP=K'22'; ! DISP TO 1ST VERSION NO
%CONSTBYTEINTEGERNAME INT == K'160060'
==== ercm09/emas-2900/docum_kmc1.txt ====
$A INVERT=0; INVO=0
$A PAGENO=1; BOTTOM=4; TOP=3; PAGE=58
$A LINE=72; MARK=2
$A CAP=0; CAPO=0; CAPSH=0; CAPSHO=0
$A TAB=4,8,12,18,20,24,28,32,36,40,44,48,52,56,60,64,68
$N
$B15
$L1M
H A L K
$B2$L2M
A HIGH-LEVEL ASSEMBLY LANGUAGE
FOR THE KMC11
$B6
$L1M
AN INFORMAL INTRODUCTION
$N
$B2$T0%Introduction
$B2HALK is based upon the language HAL, designed and
implemented by HD on the Interdata 70 series and the
ICL 7502. Various modifications have been made to
accommodate the idiosyncracies of the KMC11.
==== ercm09/emas-2900/savings.txt ====
%EXTERNALROUTINE SAVINGS(%STRING (255) S)
%REAL X,Y,Z
%INTEGER I,J,K
%OWNREAL P1=10.5
%OWNREAL P2=11.50
%OWNREAL P3=10.5
%REAL INT1, INT2, INT3, Q1, Q2, Q3
P1 = (P1/100); P2 = (P2/100); P3 = (P3/100)
INT1=0;INT2=0; INT3=0;Q1=100; Q2=100; Q3=100
%CYCLE J = 1, 1, 10
PRINTSTRING("YEAR"); WRITE(J, 1); NEWLINE
%CYCLE I = 1, 1, 365
INT1 = INT1+(P1*Q1)/365
INT2 = INT2+(P2*Q2)/365
INT3 = INT3+(P3*Q3)/365
Q3 = Q3+INT3; INT3=0
%IF I = 182 %START
Q1 = Q1+INT1; INT1 = 0
%FINISH
%IF I = 365 %START
==== ercm09/emas-2900/docum_mflop.txt ====
$A TAB=5, 10; CAPO=0; CAPSHO=0; INVERT=1; PAGENO=1
$A JUST=1; LINE=76; PAGE=57; TOP=3; BOTTOM=4; MARK=2
$L1CM
PROGRAM TO COPY A FLOPPY DISC
$B3
$P1 @A %STAND %ALONE PROGRAM ON A PAPER TAPE IS PROVIDED
TO ENABLE A FLOPPY DISC TO BE COPIED. @THE PAPER TAPE IS
CALLED .'COPY .FLOPPY' AND THE PROCEDURE IS AS FOLLOWS:-
$A INDENT=1
$B1 1) @LOAD THE .MUSS11 SYSTEM IN THE NORMAL MANNER AND
THEN HALT THE PROCESSOR.
@THIS ACTION WILL LOAD THE 'PAPER TAPE BOOTSTRAP' INTO CORE,
ALTERNATLY THE .DEC BOOTSTRAP MAY BE USED - SEE THEIR MANUAL.
$B1 2) @REMOVE THE SYSTEM DISC FROM THE MACHINE AND PLACE THE
DISC %TO %BE %COPIED %FROM INTO DRIVE ZERO. @THE BLANK
DISC, OR DISC TO BE OVERWRITTEN IS LOADED ON DRIVE ONE.
$B1 3) @LOAD THE PAPER TAPE INTO THE READER.
$B1 4) @SET THE ADDRESS '077500' ON THE SWITCH REGISTERS
AND %PRESS .LOAD .ADDRESS.
$B1 5) @RAISE THE .HALT .SWITCH AND
%PRESS .START.
==== ercm09/emas-2900/b_rjee.txt ====
e fep_rjes9s/temps
f/vsn/f/0n/s/0e/p
m-0
(f/{n}/s/!n!/)*
m-0(f/!r!/s/{r}/)*
%c
imp11 temps
link11
temps#rel
i77perm
.stack 1000
.streams 1
.name rjes
.end
rje9ey
list rje9ey,.fep72
alist11 temps/.lp23
==== ercm09/emas-2900/housingcs.txt ====
%EXTERNALROUTINE HOUSING(%STRING (255) S)
%EXTERNALROUTINESPEC DEFINE(%STRING (255) S)
%EXTERNALROUTINESPEC PROMPT(%STRING (18) S)
%STRING (255) T,U
%RECORDFORMAT INFOF(%INTEGER FORM, WARD, APTS, MARKET, ACTUAL, TYPE)
%RECORDARRAY INFOA(1:2000)(INFOF)
%OWNINTEGERARRAY QUARTER(1:10) = 1(10)
%OWNBYTEINTEGERARRAY COMM(1:7) = 'W', 'H','A','*','S','R', 'F'
%SWITCH SW(1:7)
!!
%OWNINTEGER NO OF TYPES = 9
%CONSTINTEGERARRAY TYPEX(1:9) = 'B', 'U', 'L', 'M', %C
'D', 'G', 'F', 'S', 'T'
%CONSTINTEGERARRAY TINDEX(1:9) = 1(5), 2, 3, 4, 5
%OWNINTEGERARRAY COUNTWARD(0:64) = 0(65)
%INTEGERARRAY TYPE(0:6, 1:5)
%RECORD %NAME INFO(INFOF)
!!
%INTEGER I,J,K,X,Z, LIMIT, MAX,TOP QU, QURT, THIS COMM
==== ercm09/emas-2900/blackboxmss.txt ====
@device(gp300)
@make(manual)
@modify(description,leftmargin +2,indent -2)
@modify(enumerate,leftmargin +2,indent -2)
@modify(itemize,leftmargin +2,indent -2)
@style(spread 1)
@style(spacing 1)
@style(widowaction=force)
@tabdivide(12)
@majorheading{ERCC BSC/X55 Protocol Convertor}
@section{@ux{Introduction}}
@label{Intro}
This document describes a @b("black-box") convertor that enables the connection
of IBM mainframes running the SERC X55 software on VM to connect to standard
X55 hardware. The requirement arises because a number of such systems in the
SERC and University communities are unable to support HDLC framed synchronous
communications lines.
@subsection{The Protocols}
==== ercm09/emas-2900/ring_ring8s.txt ====
! file 'ring8s' - with monitoring back in
!********************************
!* emas-2900 ring interface *
!* handler *
!* file: ring8s *
!* date:27.jul.82 *
!*********************************
!! stk = 300, strm = 1
!nb location k'140016 is used to hold the checksum so that it may
!be accessed from code
#if o
%include "deimosperm"
#else
%include "b_deimosspecs"
#fi
%constrecord (*) %name nil == 0
==== ercm09/emas-a/dry/dhry#h.txt ====
/* jm */
#define TIME
#define HZ 50
/* jm */
/*
****************************************************************************
*
* "DHRYSTONE" Benchmark Program
* -----------------------------
*
* Version: C, Version 2.1
*
* File: dhry.h (part 1 of 3)
*
* Date: May 25, 1988
*
* Author: Reinhold P. Weicker
* Siemens AG, E STE 35
* Postfach 3240
* 8520 Erlangen
==== ercm09/emas-a/dry/dhry1#orig.txt ====
/*
****************************************************************************
*
* "DHRYSTONE" Benchmark Program
* -----------------------------
*
* Version: C, Version 2.1
*
* File: dhry_1.c (part 2 of 3)
*
* Date: May 25, 1988
*
* Author: Reinhold P. Weicker
*
****************************************************************************
*/
#include "dhry#h"
/* Global Variables: */
==== ercm09/emas-a/dry/makefile.txt ====
#
# Adjust for your system!
#
# Common options for generic UNIX and Microsoft C (under DOS)
# are listed here. You can change them by switching the order,
# placing the ones you want last. Pay particular attention to
# the HZ parameter, which may or may not be listed in some
# header file on your system, such as <sys/param.h> or <limits.h>
# (as CLK_TCK). Even if it is listed, it may be incorrect.
# Also, some operating systems (notably some (all?) versions
# of Microport UNIX) lie about the time. Sanity check with a
# stopwatch.
#
# For Microsoft C under DOS, you need a real make, not MSC make,
# to run this Makefile. The public domain "ndmake" will suffice.
#
CC= cc # C compiler name goes here (UNIX)
PROGS= unix # Programs to build (UNIX)
TIME_FUNC= -DTIMES # Use time(2) for measurement
==== ercm09/emas-a/dry/dhry1#c.txt ====
/*
****************************************************************************
*
* "DHRYSTONE" Benchmark Program
* -----------------------------
*
* Version: C, Version 2.1
*
* File: dhry_1.c (part 2 of 3)
*
* Date: May 25, 1988
*
* Author: Reinhold P. Weicker
*
****************************************************************************
*/
#include "dhry#h"
/* Global Variables: */
==== ercm09/emas-a/dry/dhry1#l.txt ====
Source: ERCC08:DRY.DHRY1#C Compiled: 25/04/89 16.53.22
Object: ERCC08:DRY.DHRY1#O
Parms set: OPT
0 /*
1 ****************************************************************************
2 *
3 * "DHRYSTONE" Benchmark Program
4 * -----------------------------
5 *
6 * Version: C, Version 2.1
7 *
8 * File: dhry_1.c (part 2 of 3)
9 *
10 * Date: May 25, 1988
11 *
12 * Author: Reinhold P. Weicker
13 *
14 ****************************************************************************
15 */
16
==== ercm09/emas-a/dry/do.txt ====
cc dhry1#c,dhry1#o
cc dhry2#c,dhry2#o
link
dhry1#o
dhry2#o
.end
dry
==== ercm09/emas-a/dry/dhry2#c.txt ====
/*
****************************************************************************
*
* "DHRYSTONE" Benchmark Program
* -----------------------------
*
* Version: C, Version 2.1
*
* File: dhry_2.c (part 3 of 3)
*
* Date: May 25, 1988
*
* Author: Reinhold P. Weicker
*
****************************************************************************
*/
#include "dhry#h"
#ifndef REG
#define REG
==== ercm09/emas-a/dry/dhry2#l.txt ====
Source: ERCC08:DRY.DHRY2#C Compiled: 25/04/89 16.53.50
Object: ERCC08:DRY.DHRY2#O
Parms set: OPT
0 /*
1 ****************************************************************************
2 *
3 * "DHRYSTONE" Benchmark Program
4 * -----------------------------
5 *
6 * Version: C, Version 2.1
7 *
8 * File: dhry_2.c (part 3 of 3)
9 *
10 * Date: May 25, 1988
11 *
12 * Author: Reinhold P. Weicker
13 *
14 ****************************************************************************
15 */
16
==== ercm09/emas-a/gen/batchs.txt ====
!*************************
!* Batchs/Batch *
!* DATE: 05.jan.82 *
!* loads a series of *
!* tasks, from input(1) *
!*************************
%include "b_deimosspecs"
%begin
%constinteger load ser = 5
%recordformat pe(%byteinteger service, reply, (%integer a1, %c
%byteintegername b, %integer c %or %c
%byteinteger line, line type, %integer ad, %byteinteger rxint, txint))
%record (pe)p
%owninteger task id = 26; ! private ser to distinguish calls
==== ercm09/emas-a/gen/binlds.txt ====
!
!BINARY FILE IPL LOADER
! RL01 VERSION 29.AUG.79
!
!W.S.CURRIE 1ST DEC. 1976
!
! THIS PROGRAM TAKES AN ABSOLUTE BINARY FILE AS READ
!FROM PAPER TAPE AND PUTS IT ONTO A CONTIGUOUS AREA OF
!THE DISC READY FOR LOADING.
!
! IT CURRENTLY OVERWRITES SYSTEM1 IN BLOCKS 4600-4700
! STREAM 1 IS THE INPUT FILE
! STREAM 2 IS OPTIONAL REPORT FILE
! OUTPUT IS TO DISC 0.60(OCT) BLOCKS ARE WRITTEN.
! BLOCK=START BLOCK TO WRITE(9201)
! STACK=65000 STREAMS=1
==== ercm09/emas-a/gen/dbug7.txt ====
!*****************************
!* gen_dbug7 *
!*date: 15.nov.84 *
!* modified for imp77 *
!*****************************
!! stk = 300, str = 1
%INCLUDE "B_DEIMOSSPECS"
%begin
%constbyteintegername id == k'160030'
%constinteger vir disp=k'22'; ! disp to 1st version no
%constbyteintegername int == k'160060'
%routinespec psect
%routinespec dreg
%routinespec dstack
%routinespec octal(%integer n)
==== ercm09/emas-a/b_ftpxa.txt ====
new
prep x25gen_ftpd5s,ftpd5s#imp,x,g,clean,a
dimp11 ftpd5s#imp
link11 /ftpd5s
ftpd5s#rel
.stack 2400
.streams 3
.stackseg 6
.end
ftpg5s
c ftpg5s#abs,ftpxay
destroy ftpg5s#abs
alist11 ftpd5s#imp
list ftpd5s#lst,.lp23
==== ercm09/emas-a/pss/hostess.txt ====
******* HOSTESS *******
Welcome to HOSTESS, the information service for British Telecom's
Public Data Network.
************************* NEWSFLASHES *************************
For details of network status enter NETSTATUS at the "Document"
prompt.
------------------
Hostess catalogues revised for further details enter TOPCAT at
the "Document?" prompt.
-------------------
New release of VPAD software to be tested at Swindon (0793 614914).
For details type INFORMATION.VPAD at the "Document?" prompt.
---------------------
==== ercm09/emas-a/pss/hostessinf.txt ====
call hostess
Connected
******* HOSTESS *******
Welcome to HOSTESS, the information service for British Telecom's
Public Data Network.
************************* NEWSFLASHES *************************
For details of network status enter NETSTATUS at the "Document"
prompt.
------------------
Hostess catalogues revised for further details enter TOPCAT at
the "Document?" prompt.
-------------------
New release of VPAD software to be tested at Swindon (0793 614914).
For details type INFORMATION.VPAD at the "Document?" prompt.
==== ercm09/emas-a/pss/tariff.txt ====
THE COMPUTER BOARD AND THE RESEARCH COUNCILS
NETWORK EXECUTIVE
JANET USER NOTE 4
The Packet Switchstream Tariff
Issued by
W. Jenkins and S.A. Wood
Issue 2 8 September 1987
==== ercm09/emas-a/x25/ftp4as.txt ====
%conststring (13) vsn = "ftps....4a "
#datestring
#timestring
!********************************
!* emas-2900 fep ftp server *
!* file: ftp4as/ftp4ay *
!* *
!********************************
#options
! prep versions are:-
!
! m = Full Monitoring
! c = Clock monitoring (needs a real time clock)
! i = new imp compiler
!
%control 1
%include "deimosperm"
==== ercm09/emas-a/x25/rjesx2.txt ====
!********************************
!* emas-2900 fep rje server *
!* file: rjesx2/rjesx2y *
!* x25 only version
!********************************
!! stack size = 300
%control 1
%include "deimosperm"
%conststring(13) vsn = "Rjes...v2t "
#datestring
#timestring
%begin
%recordformat am1f(%integer rxs, rxd, txs, txd)
%ownrecord (am1f) %name l == 1; ! supplied by am1 handler
%recordformat ssmessagef(%bytearray a(0:240) %or %c
==== ercm09/emas-a/x25/gecsir.txt ====
@device(x2700)
@majorheading(List of CPSE Problems)
@verbatim[
Ref Date G-Ref Site Description
=============================================================================
8 1 Feb 84 F284 KB CPSE crash caused by console out of paper
9 1 Feb 84 F285 KB Proc AC14 Call Instruction error at @@C654
10 27 Feb 84 F311 KB Proc AC14 Call Instruction Error at @@C654
11 8 Mar 84 KB Proc AC15 Call Instruction Error at @@C654
24 Mar 84 **** AT Power Supply Fault
3 Apr 84 **** KB Crash with no message (See F336)
3 Apr 84 **** KB Actually a Process AC20 call inst. error
==== ercm09/emas-a/x25/xpr1by.txt ====
, XPR1ÈÇ Ð È Àÿ @ © ¨\ÀÁÂȇ M ¸\& ˆ€PPȇ 0 H ”\BA@
ˆ‡ ¾ : P\@BAAAAAÁEøÿˆŠÁe@ BcÂE à ‡
‡ h u Œ\ˆ‡ Í @\ˆ‡ . H\
ˆ‡ ! „\ˆ‡ ã \ˆ‡ Ä 4\À ÁàI _ ÀPSSE TOLKIEN????SERCPSS RCO ?SPR úÿùÿ ù Á ' èT&MDÅe Õ Õ Õ ß ”\÷úÀ"m÷Ám÷• ´‹7ЦkÀ¾Àß ¸\÷œk~kÁŽÂß ì[
ÁÝpkWp Áe#Àß ì[Á•Âß ì[ÃukÃEøÿ÷Qk
ÂÝgk—tùÿÂE þ·Ôj÷Xkjk
ÁÝRkÁU ÿw2k
ÀÝEkÀU ÿ7"k÷‹k‡×k ƒÀ@ ß dP÷‹k‡×ýj ƒÀA ß dPÂjÃ`÷ºÀÆjß ÌNÀ ß ¨TÀ ß @\ß ŒB7ŠâjÀ¾Àß ¸\×½ÖjÄ èU€ újÃE ÿ
ÂÝÄj ÷ ÂjÀÆÀß |R7
Œj7
Xjß ŒBßß 0Q7
Hjß ÜEØ÷‹“jXß ôJ÷‹ú‰Ð×ô‰S À ß (@F×â‰A À ß (@=×Љ? ß MÀ
ß M1÷¥0 ¶‰‚×°‰9 ‚
Ãݦ‰ÃeÐÿ÷&j!ט‰N À ß (\ß 4\ׂ‰Q à Ãíöi÷òi×l‰W ˆÃ Ãíâi÷Þi 7ŠV‰w úþ×Þi M·
™ èVÄiÀÔiß hAwÚiÉ% W"ÿÀ ß dPÃÂió‰ Âni,Á|iA`A`ÁeÁwìiÉ”i3Š À Àe 1 ÂXi‚
ÂEÀÿ·jiÂ-Bi À1
ß MÀ ß (@÷Ni0iß ŒBw fþÀß B7
Fiw Xþ×<i -Ãúh÷• 0i÷i+i÷ ii7Ši÷ii÷øhiÃi÷iÕ0 Õ<ÀÍ Õ`ß øPà ió0 À¾Àß ¨\w öýÀ; Á£ èW¾Àß Mw æý‹ (@&f
DÅe ÃL€~À ß \þÿ÷@€Ã:€!
ÁÝJ€Wp Áe#Àß ì[Á¼Âß ì[À×t ÁÁe.Âß ì[ß TYÀ
ß MÀ ß ¨T×-€ ÷ èT7
â4
÷-àæ"ÃØÃ`Ã`ÃeÁ÷P€Àß BÃF€
==== ercm09/emas-a/x25/dx11b1s.txt ====
!********************************
!* emas-2900 fep dx11 handler *
!* file: x25_dx11b1s *
!********************************
!! stack size = 300
! n = new compiler
! c = Clock monitoring (needs a real time clock!)
! m = All monitoring
!
%owninteger fep no = 9; ! number supplied on load
#if ~n
%control 1
%include "deimosperm"
#else
%control x'4001'
%include "b_deimosspecs"
#fi
==== ercm09/emas-a/x25/infoxy.txt ====
, INFO0Å ð 0 Àÿ @ © ÐA&MDÅe ÷• èžÕ Õ Õ ß ÈHt
Õ Õ Õ ß ÈHt
4Š Àe ß H7 ~7Š~7 ~7Š~7 ~7Š~×-~ ÁÀÀÂ@Àß ÜHÁÇÀÂ@Àß ÜHÃâ}Ãe0 ÷ä}ÁÀß 8HÁ@Àß 8Hß `EÁÀß 8Hß ”EÁÎÀß \@Àôß ÔH4Š Àe ß Hô‹ Àôß ÔH÷¥M |î‚×vP ê‚
ÃÝlÃe±ÿ÷h}7Š`Ï ÐBà7 X}7 X}7ŠU}7 P}7ŠM}ÃD},ÁÓÀß 8HÀ Á4}ß @EÁâÀß 8HÀ
Ý ß @EÁíÀß 8HÀ
Ý ß @EÁøÀß 8HÀ Áö|ß @Eß ”Eô• KÕ
ß Aô• ÃÂ|Ãe ÷¼|¶|2Š 4
´
3Š€ÀÃ%
÷Á@ÀÂÀß ÜH÷• Ú|÷b<Ý|Ä|À ÁR<ß @Eß ”EÃl|Á€ÀÂÂe õ r ÐCß ÜHÃX|ó•
Õ Õ
ß Aw ¤þ ×->| w þÕ Õ&|
ß Aw ~þ Àß (@×-| w fþÕ
ß Aw Vþ] : (@&fDÅe ô• ôÚŸ ô• 4 Àe ß €H…„‡ n d ¶ \@&
DÅe Âe ß ÜH ‚ó• ó”Ÿ ó•
3Š Áe ÂÂe ß ÜHÀÀe ß €H*ó• ó^Ÿ 3Š ÀÀe ß ¨Hó• óBŸ ó•
ó•  Áe Âe ß ÜHÀÀe ß €H„‡ bB Àinfos....1a 15/08/8411.42.40 2972-02988-0INFOFrom Gate, fn=
==== ercm09/emas-a/x25/sercaddr.txt ====
(Message 280)
Subject: Network addresses
From: NPIN07@RLGB (on GEC 4090 - RLGB at Rutherford)
Date: Thu, 31 May 84 13:22 GMT
To: netimp
Via: EDXA ; (to RCO) 31 May 84 13:34:28 bst
Via: RLGB; by EDXA on Thursday, 31-May-84 13:27:04-GMT
Msg ID: <31 MAY 1984 13:22:56 NPIN07@RLGB>
Network Address list. 31 May 1984
The following is a list of network connections, addresses and titles. It
is by no means a full or complete list. That I believe is the responsibility
of the NRS
I am prepared to maintain this list and add to it (Providing Im given the information)
on a 'Best Endeavours Basis'. If you wish to have systems added to the list
please provide me with the information in the following format.
Site, Gateway Address, System Address, Title (mnemonic), Facility.
==== ercm09/emas-a/x25/gatexby.txt ====
, GATX˜Ú ˜ Àÿ @ © Ô~ÀÁÂȇ ÿ & ˆ€PPȇ 0 Ù &