summaryrefslogtreecommitdiff
path: root/app/flint/0.4/src/operator.spoolcmd
blob: 921f1e3dd85a387ad4e0d51307e056c777964951 (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
PACKET spool cmd                                    (* Autor: R. Ruland  *)
                                                    (* Stand: 01.04.86   *)
       DEFINES killer,                              (* Be     14.01.88   *)
               first,                               (* Umstellung Menue  *)
               start,
               stop,
               halt,
               wait for halt :
 
LET error nak          = 2 ,

    entry line code    = 23 ,
    killer code        = 24 , 
    first code         = 25 ,
    start code         = 26 , 
    stop code          = 27 ,
    halt code          = 28 ,
    wait for halt code = 29 ;
 
DATASPACE VAR ds;

BOUND STRUCT (TEXT entry line, INT index) VAR control msg;
BOUND TEXT VAR error msg ;
 
INT VAR reply;
 
INITFLAG VAR in this task := FALSE;
 
 
PROC control spool (TASK CONST spool, INT CONST control code,
                    TEXT CONST question, BOOL CONST leave) :
 
  enable stop;
  initialize control msg;
  WHILE valid spool entry
    REP IF control question THEN control spool entry FI PER;
 
  . initialize control msg :
      IF NOT initialized (in this task) THEN ds := nilspace FI;
      forget (ds); ds := nilspace; control msg := ds;
      control msg. entry line := "";
      control msg. index      := 0;
  (*  say (""13""10"");*)
 
  . valid spool entry :
      call (spool, entry line code, ds, reply);
      IF reply = error nak
         THEN error msg := ds;
              errorstop (error msg);
      FI;
      control msg. index <> 0
 
   . control question :
  (*   say (control msg. entry line);
       yes (question) *)
       ja (control msg. entry line + question, "JA/spool control", leave)
 
  . control spool entry :
      call (spool, control code, ds, reply);
      IF reply = error nak
         THEN error msg := ds;
              errorstop (error msg);
      FI;
      IF leave THEN LEAVE control spool FI;
 
END PROC control spool;
 
 
PROC killer (TASK CONST spool) :
 
  control spool (spool, killer code, " loeschen", FALSE)
 
END PROC killer;
 
 
PROC first (TASK CONST spool) :
 
  control spool (spool, first code, " als erstes", TRUE)
 
END PROC first;

 
PROC start (TASK CONST spool) :
 
  call (stop  code, "", spool);
  call (start code, "", spool);
 
END PROC start;
 
 
PROC stop (TASK CONST spool) :
 
  call (stop code, "", spool);
 
END PROC stop;
 
 
PROC halt (TASK CONST spool) :
 
  call (halt code, "", spool);
 
END PROC halt;
 
 
PROC wait for halt (TASK CONST spool) :
 
  call (wait for halt code, "", spool);
 
END PROC wait for halt;
 
 
END PACKET spool cmd;