==== 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 Ù &