summaryrefslogtreecommitdiff
path: root/net/net inserter
blob: c89d0f0cbf17920c165d7449b98931c97d128681 (plain)
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
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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
(*************************************************************************)
(*** Insertiert alle notwendigen Pakete, die zum Betrieb des Netzes    ***)
(*** notwendig sind.                                                   ***)
(*** Berücksichtigt nur EUMEL - Versionen ab  1.8.1, sowie             ***)
(*** Multi-User-Version                                                ***)
(***                                                                   ***)
(***                                                                   ***)
(*** 23.05.87  ar                                                      ***)
(*************************************************************************)

LET netfile = "netz",
    multi files = "net files/M";


INT CONST version :: id (0);
THESAURUS VAR tesa;

head;
IF no privileged task
     THEN errorstop (name (myself) + " ist nicht privilegiert!")
  ELIF station number wrong
       THEN errorstop ("'define station' vergessen ")
FI;

IF version < 181 THEN versionsnummer zu klein
                 ELSE install net
FI.

no privileged task:
   NOT (myself < supervisor).

station number wrong:
   station (myself) < 1.

install net :
   IF NOT exists (netfile)
        THEN errorstop ("Datei " + netfile +" existiert nicht")
   FI;
   IF is multi THEN insert multi net
               ELSE errorstop ("Diese Netzversion ist nur für Multi-user Versionen freigegeben")
   FI;
   forget ("net install", quiet);
   net start.

net start :
    say line (" ");
    do ("start");
    do ("global manager (PROC (DATASPACE VAR, INT CONST, INT CONST, TASK CONST)
                         net manager)").

is multi :
   (pcb(9) AND 255) > 1.

insert multi net :
   hole dateien vom archiv;
   insert say and forget (tesa).

hole dateien vom archiv :
   fetch if necessary (multi files);
   tesa := ALL (multi files);
   forget (multi files, quiet);
   fetch if necessary (tesa - all);
   say line (" ");
   say line ("Archiv-Floppy kann entnommen werden.");
   release (archive).
   
   
head :
   IF online THEN page;
                  put center (" E U M E L  -  Netz  wird  installiert.");
                  line;
                  put center ("----------------------------------------");
                  line (2)
   FI.

versionsnummer zu klein : 
   errorstop ("Netzsoftware erst ab Version 1.8.1 insertierbar !").
 
PROC fetch if necessary (TEXT CONST datei) :
   IF NOT exists (datei) THEN say line ("Loading """ + datei + """...");
                              fetch (datei, archive)
   FI.
END PROC fetch if necessary;

PROC fetch if necessary (THESAURUS CONST tes) :
   do (PROC (TEXT CONST) fetch if necessary, tes)
END PROC fetch if necessary;

PROC insert say and forget (TEXT CONST name of packet): 
   IF online THEN INT VAR cx, cy;
                  put ("Inserting """ + name of packet + """..."); 
                  get cursor (cx, cy)
   FI;
   insert (name of packet); 
   IF online THEN cl eop (cx, cy); line FI;
   forget (name of packet, quiet)
END PROC insert say and forget;

PROC insert say and forget (THESAURUS CONST tes): 
   do (PROC (TEXT CONST) insert say and forget, tes)
END PROC insert say and forget;

PROC put center (TEXT CONST t):
   put center (t, xsize);
END PROC put center;

PROC put center (INT CONST zeile, TEXT CONST t):
   put center (zeile, t, xsize);
END PROC put center;

PROC put center (TEXT CONST t, INT CONST gesamtbreite):
   INT VAR cy;
   get cursor (cy, cy);
   put center (cy, t, gesamtbreite)
END PROC put center;

PROC put center (INT CONST zeile, TEXT CONST t, INT CONST gesamtbreite):
   cursor ((gesamtbreite - length (t)) DIV 2, zeile);
   put (t).
END PROC put center;

PROC cl eol: 
  out (""5"") 
END PROC cl eol;

PROC cl eop: 
  out (""4"") 
END PROC cl eop; 
 
PROC cl eol (INT CONST cx, cy): 
   cursor (cx, cy); 
   cl eol 
END PROC cl eol; 
 
PROC cl eop (INT CONST cx, cy): 
   cursor (cx, cy); 
   cl eop 
END PROC cl eop; 

PROC say line (TEXT CONST t):
    IF online THEN put line (t) FI
ENDPROC say line;