DataMuseum.dk

Presents historical artifacts from the history of:

RC4000/8000/9000

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RC4000/8000/9000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦171f9c431⟧ TextFile

    Length: 121344 (0x1da00)
    Types: TextFile
    Names: »feaoslst«

Derivation

└─⟦a41ae585a⟧ Bits:30001842 SW-save af projekt 1000, Alarm-system
    └─⟦72244f0ef⟧ 
        └─⟦this⟧ »feaoslst« 

TextFile

\f

feaoslst    81.05.08.   14.51.                                                    page     1

   10    1           
\f

feaoslst    81.05.08.   14.51.                                                    page     2

 1010    2          
 1020    3          
 1030    4          
 1040    5           
\f

feaoslst    81.05.08.   14.51.                                                    page     3

 2010    6        PROCESS alarm_opsys( VAR semvector: system_vector;
 2020    7          VAR evavector: appl_vector );
 2030    8          
 2040    9            (***************************************************
 2050   10            *
 2060   11            * function:    the test module is used to initialise buffers,
 2070   12            *              signal them to semaphores, and to write their
 2080   13            *              contents, when they have been handled by another
 2090   14            *
 2100   15            * externals:   none
 2110   16            *
 2120   17            * var params:  none
 2130   18            *
 2140   19            * semaphores:  the module sends to the system semaphore
 2150   20            *              "operatorsem".
 2160   21            *
 2170   22            *
 2180   23            * programmed may 1980 by wib and stb
 2190   24            *
 2200   25            ***************************************************)
 2210   26          
 2220   27        CONST
 2230   28          version = "vers  4.20 /";
 2240   29          
 2250   30          
 2260   31          
 2270   32           
\f

feaoslst    81.05.08.   14.51.                                                    page     4

 3010   33        CONST
 3020   34          opbufsize = 80; (* no. of bytes in buffers to the operator module *)
 3030   35            (***   bufs   ***)
 3040   36          messbufsize= 64; (*words*)
 3050   37          testbufsize= 120;
 3060   38          maxbufsize= 120;
 3070   39          minbufsize=  16;
 3080   40          noofmodules= 14;
 3090   41          noofsemaphores= ts_sem_total;
 3100   42          pu= 0; (* processing unit number *)
 3110   43          pr= -1; (* timeslicing priority *)
 3120   44          
 3130   45          valparam= "param val ";
 3140   46          noparam= " no param ";
 3150   47          alreadyexists= " already exists     ";
 3160   48          doesntexist= " doesn't exist      ";
 3170   49          illegalno= "illegal no";
 3180   50          createerror= "error in createcall ";
 3190   51          
 3200   52          linelength= 80;
 3210   53          firstindex= 6 + alfalength;
 3220   54          lastindex= firstindex + (linelength - 1);
 3230   55          ok= 0; (* result from operator *)
 3240   56          
 3250   57          
 3260   58        TYPE
 3270   59          
 3280   60            (*---- for alarmenv later  ------*)
 3290   61          
 3300   62          paxpooltype = pool no_pax_bufs OF min_rut_mess;
 3310   63          
 3320   64          opbuftype=
 3330   65          RECORD
 3340   66          !  first,
 3350   67          !  last,
 3360   68          !  next: integer;
 3370   69          !  name: alfa;
 3380   70          !  data: ARRAY (firstindex..lastindex) OF char
 3390   71          END;
 3400   72          
 3410   73            (***   bufs   ***)
 3420   74          messbuftype= ARRAY (1..messbufsize) OF integer;
 3430   75          testbuftype= ARRAY (1..testbufsize) OF integer;
 3440   76          minbuftype = ARRAY (1.. minbufsize) OF integer;
 3450   77          maxbuftype = ARRAY (1.. maxbufsize) OF integer;
 3460   78          
\f

feaoslst    81.05.08.   14.51.                                                    page     5

 3470   79           
\f

feaoslst    81.05.08.   14.51.                                                    page     6

 4010   80          createchtype=
 4020   81          RECORD
 4030   82          !  controlinfo, timeout: byte
 4040   83          END;
 4050   84          
 4060   85          atbuffer= ARRAY (0..1) OF byte;
 4070   86          
 4080   87          
 4090   88          alfa10= ARRAY (1..10) OF char;
 4100   89          alfa20= ARRAY (1..20) OF char;
 4110   90          
 4120   91            (* type necessary to compare sempointers *)
 4130   92          point_rec = RECORD
 4140   93                      !  a: sempointer;
 4150   94                      END;
 4160   95          
 4170   96        VAR
 4180   97            (*********  pools  *********)
 4190   98          opbufpool: pool 3 OF opbuftype;
 4200   99            (***   bufs   ***)
 4210  100          testbufpool: pool 12 OF testbuftype;
 4220  101          messbufpool: pool no_listen OF messbuftype;
 4230  102          paxbufpool : paxpooltype;
 4240  103          
 4250  104            (**********  semaphores  **********)
 4260  105          countsem,    (* used by "t"-command *)
 4270  106          wsem,        (* buffers written by the operatormodule is
 4280  107                       returned here *)
 4290  108          wrsem        (* buffers with content read by the operator
 4300  109                       module is returned here *)
 4310  110          : semaphore;
 4320  111          ts_sem : ARRAY (1..ts_sem_total) OF semaphore;
 4330  112          
 4340  113            (**********  references  **********)
 4350  114          nref,
 4360  115          countref,    (* used by "t"-command *)
 4370  116          opinref,    (* ref. to buffer from operator *)
 4380  117          opoutref,   (* ref. to buffer to operator *)
 4390  118          cur           (* ref. to current buffer *)
 4400  119          : reference;
 4410  120          
 4420  121            (**********  pointers  **********)
 4430  122          opsem: sempointer;
 4440  123          worksem: sempointer;
 4450  124          sem : ts_pointer_vector;
 4460  125          
\f

feaoslst    81.05.08.   14.51.                                                    page     7

 4470  126           
\f

feaoslst    81.05.08.   14.51.                                                    page     8

 5010  127            (**********  zones  **********)
 5020  128          z: zone;
 5030  129          
 5040  130            (**********  char  **********)
 5050  131          command: char;   (* the first char the operator typed *)
 5060  132          
 5070  133          
 5080  134            (**********  integers  **********)
 5090  135          base,            (* number base for input and output *)
 5100  136          firstword,       (* used by "o"-command *)
 5110  137          i,
 5120  138          incharsleft,   (* no. of not yet read chars in opinbuffer *)
 5130  139          j,
 5140  140          k,
 5150  141          lastword,       (* used by "o"-command *)
 5160  142          leftbyte,       (* used by "p"-command *)
 5170  143          moduleno,       (* tested module *)
 5180  144          noofparams,     (* no. of params in operator line *)
 5190  145          oldbase,        (* used by the "b" command *)
 5200  146          rightbyte,      (* used by "p"-command *)
 5210  147          semno,           (* typed semaphore number *)
 5220  148          curbufsize,     (* in words *)
 5230  149          curbuftype,     (* 0 - 4 *)
 5240  150          st              (* storage requirements *)
 5250  151          : integer;
 5260  152          
 5270  153            (**********  booleans  **********)
 5280  154          readok,         (* indicates if the last call of readinteger
 5290  155                          yielded a result *)
 5300  156          testmode
 5310  157          : boolean;
 5320  158          
 5330  159            (**********  arrays  **********)
 5340  160          netc_locals : netc_loc_sems;
 5350  161          params: ARRAY(1..50) OF integer; (* holds parameters from operator *)
 5360  162          sh: ARRAY(1..noofmodules) OF shadow; (* ref. to process incarn. *)
 5370  163          
 5380  164            (********** param to use in create **********)
 5390  165          dc_addr: macroaddr := macroaddr(7,0,0);
 5400  166          nc_addr: macroaddr := macroaddr(7,5,0);
 5410  167          ts_addr: macroaddr := macroaddr(7,5,4);
 5420  168          
 5430  169            (*** auxiliary to compare sempointers ***)
 5440  170          ap,bp : point_rec;
 5450  171          
 5460  172           
\f

feaoslst    81.05.08.   14.51.                                                    page     9

 6010  173            (**********  externals **********)
 6020  174        PROCESS fesupervisor(
 6030  175          op: sempointer;
 6040  176          VAR input_sem, write_sem, que_sem : ! ts_pointer;
 6050  177          VAR stream_sem, netc_sem, com_pool : ! sempointer);
 6060  178        EXTERNAL;
 6070  179        
 6080  180        PROCESS streamer(
 6090  181          VAR input_sem, xmitter, receiver : ! ts_pointer;
 6100  182          retrans_max : integer;
 6110  183          op : sempointer);
 6120  184        EXTERNAL;
 6130  185        
 6140  186        PROCESS fpadriver(
 6150  187          VAR sem : ! ts_pointer;
 6160  188          level, block : integer;
 6170  189          rec : boolean;
 6180  190          op: sempointer);
 6190  191        EXTERNAL;
 6200  192        
 6210  193        PROCESS timeout(
 6220  194          opsem: sempointer;
 6230  195          VAR timeoutsem: !ts_pointer;
 6240  196          ticklength, max: integer);
 6250  197        EXTERNAL;
 6260  198        
 6270  199        PROCESS lam(
 6280  200          opsem: sempointer;
 6290  201          pu, level: integer;
 6300  202          VAR inputsem: !ts_pointer);
 6310  203        EXTERNAL;
 6320  204        
 6330  205        PROCESS tap(
 6340  206          opsem: sempointer;
 6350  207          VAR tab_sem: !ts_pointer);
 6360  208        EXTERNAL;
 6370  209        
 6380  210        PROCESS dtesimulator (
 6390  211          op_sem : sempointer;
 6400  212          VAR
 6410  213          pax_pool_sem,
 6420  214          dte_sem : !ts_pointer;
 6430  215          VAR
 6440  216          netc_sem,
 6450  217          rut_trm_sem,
 6460  218          rut_rec_sem : !sempointer;
\f

feaoslst    81.05.08.   14.51.                                                    page    10

 6470  219          dte_addr : int_pax_addr
 6480  220          );
 6490  221        EXTERNAL;
 6500  222        
 6510  223        PROCESS netconnector (
 6520  224          global_timeout : byte;
 6530  225          op_sem : sempointer;
 6540  226           
\f

feaoslst    81.05.08.   14.51.                                                    page    11

 7010  227          VAR
 7020  228          pax_pool_sem,
 7030  229          main_sem : !ts_pointer;
 7040  230          local_sem_table : netc_loc_sems;
 7050  231          VAR
 7060  232          com_pool_sem,
 7070  233          timeout_sem,
 7080  234          dte_sem : !sempointer
 7090  235          );
 7100  236        EXTERNAL;
 7110  237        
 7120  238        PROCESS tapdte (
 7130  239          op_sem : sempointer;
 7140  240          VAR sem : ! ts_pointer );
 7150  241        EXTERNAL;
 7160  242        
 7170  243        PROCESS tapnet (
 7180  244          op_sem : sempointer;
 7190  245          VAR sem : !ts_pointer );
 7200  246        EXTERNAL;
 7210  247        
 7220  248        PROCESS osif (
 7230  249          op_sem : sempointer;
 7240  250          VAR inputsem : !ts_pointer;
 7250  251          VAR streemsem, lamsem : !sempointer;
 7260  252          port : byte);
 7270  253        EXTERNAL;
 7280  254        
 7290  255        PROCESS dcmodule(
 7300  256          opsem : sempointer;
 7310  257          VAR sem1, sem2, sem3, sem4 : !sempointer;
 7320  258          VAR sem5, sem6, sem7, sem8 : !ts_pointer );
 7330  259        EXTERNAL;
 7340  260        
 7350  261        PROCEDURE setoflowmask( oflow: boolean);
 7360  262        EXTERNAL;
 7370  263        
 7380  264        
 7390  265          (********** forwards **********)
 7400  266        
 7410  267        PROCEDURE getparams;
 7420  268        FORWARD;
 7430  269        
 7440  270        PROCEDURE outdecimal(int,positions: integer);
 7450  271        FORWARD;
 7460  272        
\f

feaoslst    81.05.08.   14.51.                                                    page    12

 7470  273        PROCEDURE outinteger(int,positions: integer);
 7480  274        FORWARD;
 7490  275        
 7500  276        PROCEDURE outstring10(text: alfa10);
 7510  277        FORWARD;
 7520  278        
 7530  279         
\f

feaoslst    81.05.08.   14.51.                                                    page    13

 8010  280        PROCEDURE outstring12(text: alfa);
 8020  281        FORWARD;
 8030  282        
 8040  283        PROCEDURE outstring20(text: alfa20);
 8050  284        FORWARD;
 8060  285        
 8070  286        FUNCTION readchar: char;
 8080  287        FORWARD;
 8090  288        
 8100  289        FUNCTION readinteger: integer;
 8110  290        FORWARD;
 8120  291        
 8130  292        PROCEDURE repeatchar;
 8140  293        FORWARD;
 8150  294        
 8160  295        PROCEDURE testmodeout (text: alfa20; i: integer);
 8170  296        FORWARD;
 8180  297        
 8190  298        PROCEDURE writenl;
 8200  299        FORWARD;
 8210  300        
 8220  301         
\f

feaoslst    81.05.08.   14.51.                                                    page    14

 9010  302        FUNCTION dte_pax_addr (i:integer): int_pax_addr;
 9020  303        VAR pax_adr : int_pax_addr;
 9030  304        BEGIN
 9040  305    1   ! pax_adr.net_addr := params(i);
 9050  306    2   ! pax_adr.reg_addr := params(i+1);
 9060  307    3   ! pax_adr.node_addr := params(i+2);
 9070  308    4   ! pax_adr.ext_addr := params(i+3);
 9080  309    5   ! dte_pax_addr := pax_adr;
 9090  310    6   END;
 9100  311        
 9110  312        PROCEDURE make_phead (
 9120  313          i : integer; op_code : byte;
 9130  314          VAR p : format_1_packet_header );
 9140  315        BEGIN
 9150  316    1   ! WITH p DO
 9160  317    2   !   BEGIN
 9170  318    3   !   ! format := rut_format_1;
 9180  319    4   !   ! priority := rut_prio_0;
 9190  320    5   !   ! packet_type := rut_pack_type;
 9200  321    6   !   ! state := 0;
 9210  322    7   !   ! org := dte_pax_addr(i);
 9220  323    8   !   ! dst := dte_pax_addr(i+3);
 9230  324    9   !   ! facility := params(9);
 9240  325   10   !   ! user_field := op_code *256 + params(2);
 9250  326   11   !   ! top_of_data := 0;
 9260  327   12   !   END;
 9270  328   13   END;
 9280  329        
 9290  330         
\f

feaoslst    81.05.08.   14.51.                                                    page    15

10010  331        FUNCTION packmacro (
10020  332          par:integer):macroaddr;
10030  333        VAR
10040  334          a:macroaddr;
10050  335        BEGIN
10060  336    1   ! a.dc_addr := params( par);
10070  337    2   ! a.nc_addr := params( par+1);
10080  338    3   ! a.ts_addr := params( par+2);
10090  339    4   ! packmacro := a;
10100  340    5   END;
10110  341        
10120  342        FUNCTION packextnode (
10130  343          par:integer) : ext_pax_addr;
10140  344        VAR
10150  345          i:integer;
10160  346          a:ext_pax_addr;
10170  347        BEGIN
10180  348    1   ! FOR i:=1 TO 6 DO
10190  349    2   !   a(i):=0;
10200  350    3   ! FOR i:=0 TO 2 DO
10210  351    4   !   a(7+i):=params(par+i);
10220  352    5   ! FOR i:= 10 TO 14 DO
10230  353    6   !   a(i) := 0;
10240  354    7   ! packextnode := a;
10250  355    8   END;
10260  356        
10270  357         
\f

feaoslst    81.05.08.   14.51.                                                    page    16

11010  358        PROCEDURE get_curbuftype;
11020  359        BEGIN
11030  360    1   ! IF cur^.size < minbufsize THEN
11040  361    2   !   curbuftype:= 0 ELSE
11050  362    3   !   IF cur^.size < messbufsize THEN
11060  363    4   !     curbuftype:= 1 ELSE
11070  364    5   !     IF cur^.size < maxbufsize THEN
11080  365    6   !       curbuftype:= 2 ELSE
11090  366    7   !       IF cur^.size < testbufsize THEN
11100  367    8   !         curbuftype:= 3 ELSE
11110  368    9   !         curbuftype:= 4;
11120  369   10   ! 
11130  370   11   ! CASE curbuftype OF
11140  371   12   ! ! 0: curbufsize:= 0;
11150  372   13   ! ! 1: curbufsize:= minbufsize;
11160  373   14   ! ! 2: curbufsize:= messbufsize;
11170  374   15   ! ! 3: curbufsize:= maxbufsize;
11180  375   16   ! ! 4: curbufsize:= testbufsize;
11190  376   17   ! END;
11200  377   18   END;
11210  378        
11220  379         
\f

feaoslst    81.05.08.   14.51.                                                    page    17

12010  380        PROCEDURE getinput;
12020  381            (* reads input from console into opinref^ *)
12030  382        BEGIN
12040  383    1   ! 
12050  384    2   ! testmodeout ("getinput called     ",0);
12060  385    3   ! 
12070  386    4   ! REPEAT
12080  387    5   ! ! LOCK opinref AS opbuf: opbuftype DO
12090  388    6   ! !   opbuf.next:= firstindex;
12100  389    7   ! ! signal (opinref, opsem^);
12110  390    8   ! ! wait (opinref, wrsem);
12120  391    9   ! UNTIL opinref^.u2= ok (* 0*);
12130  392   10   ! 
12140  393   11   ! LOCK opinref AS opbuf: opbuftype DO
12150  394   12   !   WITH opbuf DO
12160  395   13   !     BEGIN
12170  396   14   !     ! incharsleft:= next - first;
12180  397   15   !     ! next:= firstindex;
12190  398   16   !     END;
12200  399   17   ! command:= readchar;
12210  400   18   ! 
12220  401   19   ! testmodeout ("command read:       ",ord(command));
12230  402   20   ! 
12240  403   21   ! getparams;
12250  404   22   END (* getinput *);
12260  405        
12270  406         
\f

feaoslst    81.05.08.   14.51.                                                    page    18

13010  407        PROCEDURE getparams;
13020  408            (* reads integer parameters *)
13030  409        VAR newbase: boolean;
13040  410        BEGIN
13050  411    1   ! testmodeout ("getparams called    ",0);
13060  412    2   ! 
13070  413    3   ! noofparams:= 0;
13080  414    4   ! 
13090  415    5   ! IF command IN (."a","b","c","d","e","f","k","n","o","p","s","t","w","x".)
13100  416    6   !   THEN
13110  417    7   !   BEGIN (* change to decimal *)
13120  418    8   !   ! oldbase:= base;
13130  419    9   !   ! base:= 10;
13140  420   10   !   ! newbase:= true;
13150  421   11   !   END
13160  422   12   ! ELSE
13170  423   13   !   newbase:= false;
13180  424   14   ! 
13190  425   15   ! REPEAT
13200  426   16   ! ! noofparams:= noofparams + 1;
13210  427   17   ! ! params(noofparams):= readinteger;
13220  428   18   ! ! testmodeout ("parameter read:     ",params(noofparams));
13230  429   19   ! ! IF (noofparams=1) THEN
13240  430   20   ! !   IF command IN (."f","p".) THEN
13250  431   21   ! !     BEGIN (* change to old *)
13260  432   22   ! !     ! base:= oldbase;
13270  433   23   ! !     ! newbase:= false;
13280  434   24   ! !     END;
13290  435   25   ! ! 
13300  436   26   ! UNTIL (NOT readok) OR (noofparams= 50);
13310  437   27   ! 
13320  438   28   ! noofparams:= noofparams - 1;
13330  439   29   ! 
13340  440   30   ! IF newbase THEN
13350  441   31   !     (* change back to old base *)
13360  442   32   !   base:= oldbase;
13370  443   33   END (* getparams *);
13380  444        
13390  445         
\f

feaoslst    81.05.08.   14.51.                                                    page    19

14010  446        PROCEDURE init_proc(
14020  447          index: integer;
14030  448          name,
14040  449          inc_name : alfa;
14050  450          p    : processrec;
14060  451          size,
14070  452          prio : integer);
14080  453        VAR
14090  454          okl,
14100  455          ok   : integer;
14110  456        BEGIN
14120  457    1   ! IF NOT nil(sh(index)) THEN
14130  458    2   !   outstring20(alreadyexists) ELSE
14140  459    3   !   BEGIN
14150  460    4   !   ! IF noofparams<2 THEN st:= size;
14160  461    5   !   ! okl:= link(name,p.processref^);
14170  462    6   !   ! ok:= create(inc_name,p,sh(index),st);
14180  463    7   !   ! IF ok=0 THEN
14190  464    8   !   !   start(sh(index),prio) ELSE
14200  465    9   !   !   BEGIN
14210  466   10   !   !   ! ok:= ok*100+okl;
14220  467   11   !   !   ! outstring20(createerror);
14230  468   12   !   !   ! outstring12(inc_name);
14240  469   13   !   !   ! outdecimal(ok,5);
14250  470   14   !   !   ! writenl;
14260  471   15   !   !   ! okl:= unlink(p.processref^);
14270  472   16   !   !   END;
14280  473   17   !   END;
14290  474   18   END;
14300  475        
14310  476         
\f

feaoslst    81.05.08.   14.51.                                                    page    20

15010  477        PROCEDURE init_modul(index: integer);
15020  478        CONST
15030  479          n1 = "fesupervisor";
15040  480          n2 = "streamer    ";
15050  481          n3 = "osif        ";
15060  482          n4 = "timout      ";
15070  483          n5 = "lam         ";
15080  484          n6 = "tap         ";
15090  485          n7 = "netconnector";
15100  486          n8 = "dtesimulator";
15110  487          n9 = "tapdte      ";
15120  488          n10= "tapnet      ";
15130  489          n11= "dcmodule    ";
15140  490          n12= "fpadriver   ";
15150  491        BEGIN
15160  492    1   ! CASE index OF
15170  493    2   ! ! 1: (* fesup *)
15180  494    3   ! !   init_proc(index, n1, n1,
15190  495    4   ! !   fesupervisor( opsem,
15200  496    5   ! !   sem(fesup_sem_no), sem(fesup_write), sem(fesup_que),
15210  497    6   ! !   sem(stream_sem_no).s, sem(netc_sem_no).s, sem(com_pool).w ),
15220  498    7   ! !   fesup_size, fesup_pri );
15230  499    8   ! ! 2: (* streamer *)
15240  500    9   ! !   init_proc(index, n2, n2,
15250  501   10   ! !   streamer( sem(stream_sem_no), sem(stream_xmit),
15260  502   11   ! !   sem(stream_rec), 3, opsem), stream_size, stream_pri);
15270  503   12   ! ! 3: (* osif *)
15280  504   13   ! !   init_proc(index, n3, n3,
15290  505   14   ! !   osif( opsem, sem(osif_sem_no), sem(stream_sem_no).s,
15300  506   15   ! !   sem(lam_sem_no).s, 7),
15310  507   16   ! !   osif_size, osif_pri);
15320  508   17   ! ! 4: (* timeout *)
15330  509   18   ! !   init_proc(index, n4, n4,
15340  510   19   ! !   timeout( opsem, sem(timeout_sem_no), time_out_unit, 40),
15350  511   20   ! !   tim_size,tim_pri);
15360  512   21   ! ! 5: (* lam *)
15370  513   22   ! !   init_proc(index, n5, n5,
15380  514   23   ! !   lam( opsem, pu, 5, sem(lam_sem_no)),
15390  515   24   ! !   lam_size, lam_pri);
15400  516   25   ! ! 6: (* tap *)
15410  517   26   ! !   init_proc(index, n6, n6,
15420  518   27   ! !   tap( opsem, sem(tap_sem_no)),
15430  519   28   ! !   512, 0);
15440  520   29   ! ! 11: (* tap01 *)
15450  521   30   ! !   init_proc(index, n6, "tap01       ",
15460  522   31   ! !   tap ( opsem, sem(tap1_sem_no)),
\f

feaoslst    81.05.08.   14.51.                                                    page    21

15470  523   32   ! !   512, 0);
15480  524   33   ! ! 7: (* netconnector *)
15490  525   34   ! !   init_proc ( index, n7, n7,
15500  526   35   ! !    
\f

feaoslst    81.05.08.   14.51.                                                    page    22

16010  527   36   ! !   netconnector( glob_timeout, opsem,
16020  528   37   ! !   sem( pax_pool),sem( netc_sem_no), netc_locals,
16030  529   38   ! !   sem( com_pool).w,
16040  530   39   ! !   sem( timeout_sem_no).s, sem( dte_sem_no).s),
16050  531   40   ! !   netc_size, netc_pri);
16060  532   41   ! ! 
16070  533   42   ! ! 8: (* dtesimulator *)
16080  534   43   ! !   init_proc ( index, n8, n8,
16090  535   44   ! !   dtesimulator ( opsem, sem( pax_pool), sem(dte_sem_no),
16100  536   45   ! !   sem( netc_sem_no).s,
16110  537   46   ! !   sem( pax_sem_1).s, sem( pax_sem_2).s,
16120  538   47   ! !   dte_pax_addr(3)),
16130  539   48   ! !   netc_size, netc_pri);
16140  540   49   ! ! 9: (* tapdte *)
16150  541   50   ! !   init_proc ( index, n9, n9,
16160  542   51   ! !   tapdte ( opsem, sem(tap_dte_sem_no)),
16170  543   52   ! !   512,0);
16180  544   53   ! ! 10: (* tapnet *)
16190  545   54   ! !   init_proc ( index, n10, n10,
16200  546   55   ! !   tapnet ( opsem, sem(tap_net_sem_no)),
16210  547   56   ! !   512,0);
16220  548   57   ! ! 
16230  549   58   ! ! 12: (* dc simulator *)
16240  550   59   ! !   init_proc( index, n11, n11,
16250  551   60   ! !   dcmodule( opsem, sem( lam_sem_no ).s, sem( netc_sem_no ).s,
16260  552   61   ! !   sem( com_pool ).w, sem( timeout_sem_no ).s,
16270  553   62   ! !   sem( dc_sem_no ), sem( dc_int1 ), sem( dc_int2 ), sem( dc_int3 ) ),
16280  554   63   ! !   dc_sim_size, dc_sim_pri );
16290  555   64   ! ! 
16300  556   65   ! ! 13: (* fpa rec *)
16310  557   66   ! !   init_proc( index, n12, "fparec      ",
16320  558   67   ! !   fpadriver( sem(stream_rec), 6, 2, true, opsem),
16330  559   68   ! !   512, 0);
16340  560   69   ! ! 
16350  561   70   ! ! 14: (* fpa xmit *)
16360  562   71   ! !   init_proc( index, n12, "fpaxmit     ",
16370  563   72   ! !   fpadriver( sem(stream_xmit), 7, 2, false, opsem),
16380  564   73   ! !   
16390  565   74   ! !   512, 0);
16400  566   75   ! ! 
16410  567   76   ! ! OTHERWISE
16420  568   77   ! ! BEGIN
16430  569   78   ! ! ! outdecimal(index,4);
16440  570   79   ! ! ! outstring10(illegalno);
16450  571   80   ! ! END;
16460  572   81   ! END (* case *)
\f

feaoslst    81.05.08.   14.51.                                                    page    23

16470  573   82   END;
16480  574        
16490  575         
\f

feaoslst    81.05.08.   14.51.                                                    page    24

17010  576        FUNCTION moduleready(moduleno: integer): boolean;
17020  577            (* tests if an incarnation of the module is existing
17030  578            and writes an errormessage if so *)
17040  579        BEGIN
17050  580    1   ! IF nil( sh( moduleno) ) THEN moduleready:=true
17060  581    2   ! ELSE
17070  582    3   !   BEGIN  (* module is already existing *)
17080  583    4   !   ! outdecimal(moduleno,4);
17090  584    5   !   ! outstring20(alreadyexists);
17100  585    6   !   ! moduleready:=false;
17110  586    7   !   END;
17120  587    8   END (* module ready *);
17130  588        
17140  589        
17150  590        
17160  591         
\f

feaoslst    81.05.08.   14.51.                                                    page    25

18010  592        PROCEDURE outchar(ch:char);
18020  593            (* writes ch into the output buffer *)
18030  594        BEGIN
18040  595    1   ! LOCK opoutref AS opbuf: opbuftype DO
18050  596    2   !   WITH opbuf DO
18060  597    3   !     BEGIN
18070  598    4   !     ! last:= last + 1;
18080  599    5   !     ! data (last):= ch;
18090  600    6   !     END;
18100  601    7   END (* outchar *);
18110  602        
18120  603         
\f

feaoslst    81.05.08.   14.51.                                                    page    26

19010  604        PROCEDURE outdecimal (int, positions: integer);
19020  605            (* writes the integer "int" decimally into opbuf starting
19030  606            at "last", which is updated accordingly *)
19040  607          
19050  608        BEGIN
19060  609    1   ! oldbase:= base;
19070  610    2   ! base:= 10;
19080  611    3   ! outinteger(int,positions);
19090  612    4   ! base:= oldbase;
19100  613    5   END (* outdecimal *);
19110  614        
19120  615         
\f

feaoslst    81.05.08.   14.51.                                                    page    27

20010  616        PROCEDURE outinteger(int,positions:integer);
20020  617            (* writes the integer "int" into opbuf starting at
20030  618            "last", which is updated accordingly *)
20040  619        CONST
20050  620          maxpos = 20; (* max number of positions in layout *)
20060  621          
20070  622        VAR
20080  623          bits: ARRAY(0..15) OF bit;
20090  624          digits:ARRAY(1..maxpos) OF char;
20100  625          curdigit, (* current pos. in digits-array to be filled out *)
20110  626          curpos,   (* cur. pos. in the nunber being computed *)
20120  627          h, i,
20130  628          m, newm,
20140  629          noofdig,  (* no. of digits in the resulting number *)
20150  630          noofpos,  (* no. of pos. from bits-array for one number *)
20160  631          res,      (* resulting number *)
20170  632          used: integer;
20180  633          
20190  634          negative, zeroes: boolean;
20200  635          
20210  636        BEGIN
20220  637    1   ! used:= 1;
20230  638    2   ! 
20240  639    3   !   (* first we initialise the digits array *)
20250  640    4   ! FOR i:=1 TO maxpos DO digits(i):=sp;
20260  641    5   ! 
20270  642    6   ! IF base= 10 THEN
20280  643    7   !   BEGIN
20290  644    8   !   ! i:=maxpos;
20300  645    9   !   ! 
20310  646   10   !   ! negative:= int<0;
20320  647   11   !   ! 
20330  648   12   !   ! REPEAT
20340  649   13   !   ! !   (* now we unpack the digits backwards and put them
20350  650   14   !   ! !   into the digits array *)
20360  651   15   !   ! ! 
20370  652   16   !   ! ! digits(i):= chr (abs(int MOD base) + ord("0"));
20380  653   17   !   ! ! int:=int DIV base;
20390  654   18   !   ! ! i:=i-1;
20400  655   19   !   ! UNTIL (i=1) OR (int=0);
20410  656   20   !   ! 
20420  657   21   !   ! IF negative THEN
20430  658   22   !   !   BEGIN
20440  659   23   !   !   ! digits(i):="-";
20450  660   24   !   !   ! i:=i-1;
20460  661   25   !   !   END;
\f

feaoslst    81.05.08.   14.51.                                                    page    28

20470  662   26   !   !  
\f

feaoslst    81.05.08.   14.51.                                                    page    29

21010  663   27   !   ! 
21020  664   28   !   ! used:=maxpos-i;
21030  665   29   !   ! 
21040  666   30   !   ! IF int <> 0 THEN digits(1):= "*";
21050  667   31   !   END (* if base= 10 *)
21060  668   32   !   
21070  669   33   ! ELSE (* base= 2, 8, or 16 *)
21080  670   34   !   BEGIN
21090  671   35   !   !   (* initialise bits-array *)
21100  672   36   !   ! IF int>=0 THEN
21110  673   37   !   !   BEGIN
21120  674   38   !   !   ! FOR i:= 15 DOWNTO 1 DO
21130  675   39   !   !   !   BEGIN
21140  676   40   !   !   !   ! bits(i):= int MOD 2;
21150  677   41   !   !   !   ! int:= int DIV 2;
21160  678   42   !   !   !   END;
21170  679   43   !   !   ! bits(0):= int MOD 2;
21180  680   44   !   !   ! int:= int DIV 2;
21190  681   45   !   !   END
21200  682   46   !   ! ELSE
21210  683   47   !   !     (* int<0 *)
21220  684   48   !   !   BEGIN
21230  685   49   !   !   !   (* subtract abs(int) from 1111111...1 *)
21240  686   50   !   !   ! FOR i:= 15 DOWNTO 1 DO
21250  687   51   !   !   !   BEGIN
21260  688   52   !   !   !   ! bits(i):= 1+(int MOD 2);
21270  689   53   !   !   !   ! int:= int DIV 2;
21280  690   54   !   !   !   END;
21290  691   55   !   !   ! bits(0):= 1+(int MOD 2);
21300  692   56   !   !   ! int:= int DIV 2;
21310  693   57   !   !   ! 
21320  694   58   !   !   !   (* add 1 *)
21330  695   59   !   !   ! m:= 1;
21340  696   60   !   !   ! FOR i:= 15 DOWNTO 1 DO
21350  697   61   !   !   !   BEGIN
21360  698   62   !   !   !   ! newm:= (bits(i)+m) DIV 2;
21370  699   63   !   !   !   ! bits(i):= (bits(i)+m) MOD 2;
21380  700   64   !   !   !   ! m:= newm;
21390  701   65   !   !   !   END;
21400  702   66   !   !   ! newm:= (bits(0)+m) DIV 2;
21410  703   67   !   !   ! bits(0):= (bits(0)+m) MOD 2;
21420  704   68   !   !   ! m:= newm;
21430  705   69   !   !   END (*int<0*);
21440  706   70   !   ! 
21450  707   71   !   !   (* compute digits-array *)
21460  708   72   !   ! CASE base OF
\f

feaoslst    81.05.08.   14.51.                                                    page    30

21470  709   73   !   ! !  
\f

feaoslst    81.05.08.   14.51.                                                    page    31

22010  710   74   !   ! ! 2: BEGIN
22020  711   75   !   ! !   ! noofpos:= 1;
22030  712   76   !   ! !   ! noofdig:= 16;
22040  713   77   !   ! !   END;
22050  714   78   !   ! ! 
22060  715   79   !   ! ! 8: BEGIN
22070  716   80   !   ! !   ! noofpos:= 3;
22080  717   81   !   ! !   ! noofdig:= 6;
22090  718   82   !   ! !   END;
22100  719   83   !   ! ! 
22110  720   84   !   ! ! 16: BEGIN
22120  721   85   !   ! !   ! noofpos:= 4;
22130  722   86   !   ! !   ! noofdig:= 4;
22140  723   87   !   ! !   END;
22150  724   88   !   ! END (* case *);
22160  725   89   !   ! 
22170  726   90   !   ! curdigit:= maxpos -noofdig +1;
22180  727   91   !   ! 
22190  728   92   !   ! IF base= 8
22200  729   93   !   !   THEN curpos:= 3
22210  730   94   !   ! ELSE curpos:= 1;
22220  731   95   !   ! res:= 0;
22230  732   96   !   ! zeroes:= true;
22240  733   97   !   ! 
22250  734   98   !   ! FOR h:= 0 TO 15 DO
22260  735   99   !   !   BEGIN
22270  736  100   !   !   ! res:= res*2 + bits(h);
22280  737  101   !   !   ! IF curpos= noofpos THEN
22290  738  102   !   !   !   BEGIN (* time to fill out a pos. in digits-array *)
22300  739  103   !   !   !   ! IF zeroes AND (res=0) THEN
22310  740  104   !   !   !   !   BEGIN
22320  741  105   !   !   !   !   ! IF curdigit=maxpos
22330  742  106   !   !   !   !   !   THEN digits(curdigit):= "0"
22340  743  107   !   !   !   !   !     (*else digits (curdigit):= " "*);
22350  744  108   !   !   !   !   END
22360  745  109   !   !   !   ! ELSE
22370  746  110   !   !   !   !   IF res<=9
22380  747  111   !   !   !   !     THEN digits(curdigit):= chr (res + ord ("0"))
22390  748  112   !   !   !   !   ELSE digits(curdigit):= chr (res + ord ("7"));
22400  749  113   !   !   !   ! IF (res<>0) AND zeroes THEN
22410  750  114   !   !   !   !   BEGIN
22420  751  115   !   !   !   !   ! zeroes:= false;
22430  752  116   !   !   !   !   ! used:= maxpos - curdigit + 1;
22440  753  117   !   !   !   !   END;
22450  754  118   !   !   !   ! res:= 0;
22460  755  119   !   !   !   ! curpos:= 0;
\f

feaoslst    81.05.08.   14.51.                                                    page    32

22470  756  120   !   !   !   !  
\f

feaoslst    81.05.08.   14.51.                                                    page    33

23010  757  121   !   !   !   ! curdigit:= curdigit + 1;
23020  758  122   !   !   !   END;
23030  759  123   !   !   ! curpos:= curpos + 1;
23040  760  124   !   !   END;
23050  761  125   !   END (* base= 2, 8, of 16 *);
23060  762  126   ! 
23070  763  127   ! IF positions<used THEN outchar(sp);
23080  764  128   ! 
23090  765  129   ! IF (NOT (positions IN (. 1 .. maxpos .)) )
23100  766  130   !   OR (positions < used) THEN
23110  767  131   !   positions:=used;
23120  768  132   ! 
23130  769  133   ! FOR i:=maxpos+1-positions TO maxpos DO
23140  770  134   !   BEGIN
23150  771  135   !   ! outchar( digits(i) );
23160  772  136   !   END
23170  773  137   !   
23180  774  138   END (* out integer *);
23190  775        
23200  776        
23210  777        
23220  778         
\f

feaoslst    81.05.08.   14.51.                                                    page    34

24010  779        PROCEDURE outstring10(text: alfa10);
24020  780            (* writes the text into opbuf starting at outputpointer
24030  781            which is updated accordingly *)
24040  782        VAR
24050  783          i: integer;
24060  784        BEGIN
24070  785    1   ! FOR i:=1 TO 10 DO
24080  786    2   !   outchar( text(i) );
24090  787    3   END (* out string 10 *);
24100  788        
24110  789        PROCEDURE outstring12(text: alfa);
24120  790        VAR
24130  791          i: integer;
24140  792        BEGIN
24150  793    1   ! FOR i:=1 TO 12 DO
24160  794    2   !   outchar(text(i));
24170  795    3   END;
24180  796        
24190  797         
\f

feaoslst    81.05.08.   14.51.                                                    page    35

25010  798        PROCEDURE outstring20(text: alfa20);
25020  799            (* analogue to outstring10 *)
25030  800        VAR
25040  801          i: integer;
25050  802        BEGIN
25060  803    1   ! FOR i:=1 TO 20 DO
25070  804    2   !   outchar( text(i) );
25080  805    3   END (* out string 20 *);
25090  806        
25100  807        
25110  808        
25120  809        
25130  810         
\f

feaoslst    81.05.08.   14.51.                                                    page    36

26010  811        FUNCTION readchar: char;
26020  812            (* reads the next char from opinref^.
26030  813            next is incremented and charsleft is
26040  814            decremented *)
26050  815        BEGIN
26060  816    1   ! LOCK opinref AS opbuf: opbuftype DO
26070  817    2   !   WITH opbuf DO
26080  818    3   !     BEGIN
26090  819    4   !     ! readchar:= data(next);
26100  820    5   !     ! next:= next + 1;
26110  821    6   !     END;
26120  822    7   ! incharsleft:=incharsleft-1;
26130  823    8   END (* readchar *);
26140  824        
26150  825        
26160  826        
26170  827        
26180  828         
\f

feaoslst    81.05.08.   14.51.                                                    page    37

27010  829        FUNCTION readinteger : integer;
27020  830            (* reads the next integer from opinref^ starting
27030  831            at "inputpoint". upon return "inputpoint" will be
27040  832            the position just after the last char read.
27050  833            
27060  834            the global boolean "readok" will be true if an
27070  835            integer was read and false otherwise *)
27080  836          
27090  837        CONST
27100  838          digits = (. "0" .. "9" .);
27110  839          hexdigits = (. "a" .. "f" .);
27120  840          signs =  (. "+" , "-" .);
27130  841          
27140  842        VAR
27150  843          negative, digit: boolean;
27160  844          
27170  845          curdigit, noofdigit,
27180  846          result: integer;
27190  847          
27200  848          ch,lastchar: char;
27210  849          
27220  850          
27230  851        BEGIN
27240  852    1   ! readok:=false;
27250  853    2   ! lastchar:=nul;
27260  854    3   ! ch:=nul;
27270  855    4   ! digit:=false;
27280  856    5   ! 
27290  857    6   !   (* now skip until a digit is encountered *)
27300  858    7   ! 
27310  859    8   ! IF incharsleft > 0 THEN
27320  860    9   !   REPEAT
27330  861   10   !   ! lastchar:=ch;
27340  862   11   !   ! ch:=readchar;
27350  863   12   !   ! digit:= (ch IN digits) OR
27360  864   13   !   ! ((base= 16) AND (ch IN hexdigits))
27370  865   14   !   UNTIL digit OR (incharsleft<=0);
27380  866   15   ! 
27390  867   16   ! result:=0;
27400  868   17   ! IF base= 10 THEN
27410  869   18   !   negative:= lastchar= "-"
27420  870   19   ! ELSE negative:= false;
27430  871   20   ! 
27440  872   21   ! 
27450  873   22   ! IF digit THEN
27460  874   23   !   BEGIN
\f

feaoslst    81.05.08.   14.51.                                                    page    38

27470  875   24   !   !  
\f

feaoslst    81.05.08.   14.51.                                                    page    39

28010  876   25   !   ! IF ch IN digits
28020  877   26   !   !   THEN result:= ord (ch) - ord ("0")
28030  878   27   !   ! ELSE result:= ord (ch) - 87 (*ord ("W")*);
28040  879   28   !   ! readok:=true;
28050  880   29   !   END;
28060  881   30   ! 
28070  882   31   ! IF base=10 THEN
28080  883   32   !   BEGIN
28090  884   33   !   ! WHILE digit AND (incharsleft>0) DO
28100  885   34   !   !   BEGIN (* read the digits *)
28110  886   35   !   !   ! ch:= readchar;
28120  887   36   !   !   ! 
28130  888   37   !   !   ! digit:= (ch IN digits) OR
28140  889   38   !   !   ! ((base= 16) AND (ch IN hexdigits));
28150  890   39   !   !   ! IF digit THEN
28160  891   40   !   !   !   BEGIN
28170  892   41   !   !   !   ! IF negative AND (result=3276) AND (ch="8")
28180  893   42   !   !   !   !   THEN BEGIN
28190  894   43   !   !   !   !   ! result:= -32768;
28200  895   44   !   !   !   !   ! negative:= false;
28210  896   45   !   !   !   !   END
28220  897   46   !   !   !   ! ELSE
28230  898   47   !   !   !   !   BEGIN
28240  899   48   !   !   !   !   ! IF ch IN digits
28250  900   49   !   !   !   !   !   THEN result:= result*base+(ord(ch)-ord("0"))
28260  901   50   !   !   !   !   ! ELSE result:= result*base+(ord(ch)-87(*ord("W")*));
28270  902   51   !   !   !   !   END;
28280  903   52   !   !   !   END;
28290  904   53   !   !   END (* while *);
28300  905   54   !   ! 
28310  906   55   !   ! IF negative THEN result:= - result;
28320  907   56   !   ! 
28330  908   57   !   END (* base= 10 *)
28340  909   58   !   
28350  910   59   ! ELSE
28360  911   60   !   BEGIN (* base= 2, 8, or 16 *)
28370  912   61   !   ! 
28380  913   62   !   ! CASE base OF
28390  914   63   !   ! ! 2:BEGIN
28400  915   64   !   ! !   ! IF ch="1" THEN negative:= true;
28410  916   65   !   ! !   ! noofdigit:= 16;
28420  917   66   !   ! !   END;
28430  918   67   !   ! ! 
28440  919   68   !   ! ! 8: BEGIN
28450  920   69   !   ! !   ! IF ch="1" THEN negative:= true;
28460  921   70   !   ! !   ! noofdigit:= 6;
\f

feaoslst    81.05.08.   14.51.                                                    page    40

28470  922   71   !   ! !   !  
\f

feaoslst    81.05.08.   14.51.                                                    page    41

29010  923   72   !   ! !   END;
29020  924   73   !   ! ! 
29030  925   74   !   ! ! 16: BEGIN
29040  926   75   !   ! !   ! IF ch>="8" THEN negative:= true;
29050  927   76   !   ! !   ! noofdigit:= 4;
29060  928   77   !   ! !   END;
29070  929   78   !   ! END (*case*);
29080  930   79   !   ! curdigit:= 1;
29090  931   80   !   ! 
29100  932   81   !   ! WHILE digit AND (incharsleft>0) DO
29110  933   82   !   !   BEGIN
29120  934   83   !   !   ! ch:= readchar;
29130  935   84   !   !   ! digit:= (ch IN digits) OR
29140  936   85   !   !   ! ((base=16) AND (ch IN hexdigits));
29150  937   86   !   !   ! IF digit
29160  938   87   !   !   !   THEN BEGIN
29170  939   88   !   !   !   ! curdigit:= curdigit+1;
29180  940   89   !   !   !   ! IF (curdigit=noofdigit) AND negative THEN
29190  941   90   !   !   !   !   BEGIN
29200  942   91   !   !   !   !   ! CASE base OF
29210  943   92   !   !   !   !   ! ! 2: result:= result - 16384 (*2^14*);
29220  944   93   !   !   !   !   ! ! 8: result:= result -  4096 (*2^12*);
29230  945   94   !   !   !   !   ! ! 16:result:= result -  2048 (*2^11*);
29240  946   95   !   !   !   !   ! END (*case*)
29250  947   96   !   !   !   !   END;
29260  948   97   !   !   !   ! IF ch IN digits THEN
29270  949   98   !   !   !   !   result:= result*base + (ord(ch)-ord("0"))
29280  950   99   !   !   !   ! ELSE
29290  951  100   !   !   !   !   result:= result*base + (ord(ch)-87 (*ord("W")*));
29300  952  101   !   !   !   ! IF (curdigit=noofdigit) AND negative
29310  953  102   !   !   !   !   THEN BEGIN
29320  954  103   !   !   !   !   ! IF result=0
29330  955  104   !   !   !   !   !   THEN result:= -32768
29340  956  105   !   !   !   !   ! ELSE result:= -((32767-result)+1);
29350  957  106   !   !   !   !   END;
29360  958  107   !   !   !   END (*if digit*);
29370  959  108   !   !   END (*while digit*);
29380  960  109   !   END (* base= 2, 8, or 16 *);
29390  961  110   ! IF incharsleft > 0 THEN
29400  962  111   !     (* we read one char too many - spit it out *)
29410  963  112   !   repeatchar;
29420  964  113   ! 
29430  965  114   ! readinteger:=result;
29440  966  115   END (* read integer *);
29450  967        
29460  968         
\f

feaoslst    81.05.08.   14.51.                                                    page    42

30010  969        PROCEDURE repeatchar;
30020  970        BEGIN
30030  971    1   ! LOCK opinref AS opbuf: opbuftype DO
30040  972    2   !   opbuf.next:= opbuf.next - 1;
30050  973    3   ! incharsleft:= incharsleft + 1;
30060  974    4   END;
30070  975        
30080  976         
\f

feaoslst    81.05.08.   14.51.                                                    page    43

31010  977        FUNCTION testinterval (i,first,last: integer): boolean;
31020  978            (* true if first<=i<=last *)
31030  979        BEGIN
31040  980    1   ! IF (i<first) OR (i>last) THEN
31050  981    2   !   BEGIN
31060  982    3   !   ! outstring10(illegalno);
31070  983    4   !   ! outinteger(i,4);
31080  984    5   !   ! writenl;
31090  985    6   !   ! testinterval:= false
31100  986    7   !   END
31110  987    8   ! ELSE
31120  988    9   !   testinterval:= true;
31130  989   10   END;
31140  990        
31150  991         
\f

feaoslst    81.05.08.   14.51.                                                    page    44

32010  992        PROCEDURE testmodeout (text: alfa20; i: integer);
32020  993        BEGIN
32030  994    1   ! IF testmode THEN
32040  995    2   !   BEGIN
32050  996    3   !   ! outstring20 (text);
32060  997    4   !   ! outinteger (i, 4);
32070  998    5   !   ! writenl;
32080  999    6   !   END;
32090 1000    7   END (* testout *);
32100 1001        
32110 1002         
\f

feaoslst    81.05.08.   14.51.                                                    page    45

33010 1003        PROCEDURE testsem(i: integer; VAR t_sem : semaphore);
33020 1004            (* test the semaphore t_sem, and
33030 1005            writes its status on the console if it is
33040 1006            non-passive *)
33050 1007        VAR more: boolean;
33060 1008        BEGIN
33070 1009    1   ! 
33080 1010    2   ! IF i>0 THEN
33090 1011    3   !   BEGIN
33100 1012    4   !   ! ap.a := sem(i).s;
33110 1013    5   !   ! bp.a := sem(i).w;
33120 1014    6   !   END
33130 1015    7   ! ELSE ap:=bp;
33140 1016    8   ! IF open(t_sem) THEN
33150 1017    9   !   BEGIN (* user semaphore no. i is open *)
33160 1018   10   !   ! IF ap=bp THEN
33170 1019   11   !   !   outchar(" ") ELSE outchar("^");
33180 1020   12   !   ! outdecimal(i,3);
33190 1021   13   !   ! outchar(":");
33200 1022   14   !   ! more:= true;
33210 1023   15   !   ! 
33220 1024   16   !   !   (* now count the no. of buffers on this semaphore *)
33230 1025   17   !   ! j:=0; (* j is the counter *)
33240 1026   18   !   ! WHILE more DO
33250 1027   19   !   !   BEGIN
33260 1028   20   !   !   ! sensesem(countref, t_sem);
33270 1029   21   !   !   ! IF nil(countref) THEN
33280 1030   22   !   !   !   more:= false
33290 1031   23   !   !   ! ELSE
33300 1032   24   !   !   !   BEGIN
33310 1033   25   !   !   !   ! signal(countref,countsem);
33320 1034   26   !   !   !   ! j:=j+1;
33330 1035   27   !   !   !   END
33340 1036   28   !   !   END;
33350 1037   29   !   ! 
33360 1038   30   !   ! outdecimal(j,3);
33370 1039   31   !   ! WHILE open(countsem) DO
33380 1040   32   !   !   BEGIN (* return the buffers to sem(i) *)
33390 1041   33   !   !   ! wait(countref,countsem);
33400 1042   34   !   !   ! signal(countref,t_sem);
33410 1043   35   !   !   END;
33420 1044   36   !   ! 
33430 1045   37   !   ! writenl;
33440 1046   38   !   END (* open *)
33450 1047   39   ! ELSE
33460 1048   40   !   IF locked( t_sem) THEN
\f

feaoslst    81.05.08.   14.51.                                                    page    46

33470 1049   41   !      
\f

feaoslst    81.05.08.   14.51.                                                    page    47

34010 1050   42   !     BEGIN (* user semaphore no. i is locked *)
34020 1051   43   !     ! IF ap=bp THEN
34030 1052   44   !     !   outchar(" ") ELSE outchar("^");
34040 1053   45   !     ! outdecimal(i,3);
34050 1054   46   !     ! outchar(":");
34060 1055   47   !     ! outstring10(" locked   ");
34070 1056   48   !     ! writenl;
34080 1057   49   !     END;
34090 1058   50   END (* testsem *);
34100 1059        
34110 1060        
34120 1061        
34130 1062        
34140 1063        
34150 1064         
\f

feaoslst    81.05.08.   14.51.                                                    page    48

35010 1065        PROCEDURE writenl;
35020 1066            (* prepares opbuf for output to the operator and signals
35030 1067            it to operator module *)
35040 1068        BEGIN
35050 1069    1   ! IF NOT nil(opoutref) THEN
35060 1070    2   !   BEGIN
35070 1071    3   !   ! outchar(nl);
35080 1072    4   !   ! signal(opoutref, opsem^)
35090 1073    5   !   END;
35100 1074    6   ! wait(opoutref, wsem);
35110 1075    7   ! LOCK opoutref AS opbuf: opbuftype DO
35120 1076    8   !   opbuf.last:= firstindex;
35130 1077    9   END (* writenl *);
35140 1078        
35150 1079        
35160 1080         
\f

feaoslst    81.05.08.   14.51.                                                    page    49

36010 1081        
36020 1082        
36030 1083        
36040 1084          (****************************************
36050 1085          *                                       *
36060 1086          *       m a i n   p r o g r a m         *
36070 1087          *                                       *
36080 1088          ****************************************)
36090 1089        
36100 1090        
36110 1091        
36120 1092        
36130 1093        
36140 1094        
36150 1095        BEGIN
36160 1096    1   ! 
36170 1097    2   ! opsem:= semvector(operatorsem);
36180 1098    3   ! testmode:= false;
36190 1099    4   ! testopen (z,own.incname,opsem);
36200 1100    5   ! testout(z,version,fe_env_version);
36210 1101    6   ! 
36220 1102    7   !   (* initialise pointers *)
36230 1103    8   ! FOR i:=1 TO ts_sem_total DO
36240 1104    9   !   BEGIN
36250 1105   10   !   ! sem(i).s:= ref(ts_sem(i));
36260 1106   11   !   ! sem(i).w:= sem(i).s;
36270 1107   12   !   END;
36280 1108   13   ! 
36290 1109   14   !   (*  initialize pointers to eva semaphores *)
36300 1110   15   ! sem(pax_sem_2).s:=ref(evavector(px_urec1));
36310 1111   16   ! sem(pax_sem_2).w:=sem(pax_sem_2).s;
36320 1112   17   ! sem(pax_sem_1).s:=ref(evavector(px_utrm1));
36330 1113   18   ! sem(pax_sem_1).w:=sem(pax_sem_1).s;
36340 1114   19   ! sem(pax_ncp_sem).s:=ref(evavector(px_ncp));
36350 1115   20   ! sem(pax_ncp_sem).w:=sem(pax_ncp_sem).s;
36360 1116   21   ! sem(lam_sem_no).s:= ref(evavector(al_lam1));
36370 1117   22   ! sem(lam_sem_no).w:= sem(lam_sem_no).s;
36380 1118   23   ! 
36390 1119   24   !   (*  initialize local semaphores for netconnector  *)
36400 1120   25   ! 
36410 1121   26   ! netc_locals(1):=sem(tssup_sem_no).s;
36420 1122   27   ! netc_locals(2):=sem(nc_sem_no).s;
36430 1123   28   ! 
36440 1124   29   !   (* initialise buffers *)
36450 1125   30   ! FOR i:= 1 TO 2 DO
36460 1126   31   !   BEGIN
\f

feaoslst    81.05.08.   14.51.                                                    page    50

36470 1127   32   !   !  
\f

feaoslst    81.05.08.   14.51.                                                    page    51

37010 1128   33   !   ! alloc (opoutref, opbufpool, wsem);
37020 1129   34   !   ! opoutref^.u1:=2; (* write *)
37030 1130   35   !   ! LOCK opoutref AS opbuf: opbuftype DO
37040 1131   36   !   !   WITH opbuf DO
37050 1132   37   !   !     BEGIN
37060 1133   38   !   !     ! first:= firstindex;
37070 1134   39   !   !     ! name:= opsysname;
37080 1135   40   !   !     ! data(firstindex):= "!";
37090 1136   41   !   !     END;
37100 1137   42   !   ! return (opoutref);
37110 1138   43   !   END;
37120 1139   44   ! writenl;
37130 1140   45   ! 
37140 1141   46   ! alloc(opinref, opbufpool, wrsem);
37150 1142   47   ! 
37160 1143   48   ! opinref^.u1:=1; (* read *)
37170 1144   49   ! 
37180 1145   50   ! LOCK opinref AS opbuf: opbuftype DO
37190 1146   51   !   WITH opbuf DO
37200 1147   52   !     BEGIN
37210 1148   53   !     ! first:= firstindex;
37220 1149   54   !     ! last:= lastindex;
37230 1150   55   !     ! name:= opsysname;
37240 1151   56   !     END;
37250 1152   57   ! 
37260 1153   58   !   (*-------    allocate all listenbuffers ---*)
37270 1154   59   ! FOR i:= 1 TO no_listen DO
37280 1155   60   !   BEGIN
37290 1156   61   !   ! alloc(cur,messbufpool,sem(com_pool).s^);
37300 1157   62   !   ! return(cur);
37310 1158   63   !   END;
37320 1159   64   ! 
37330 1160   65   !   (*-------    allocate all paxnetbuffers ---*)
37340 1161   66   ! FOR i:=1 TO no_pax_bufs DO
37350 1162   67   !   BEGIN
37360 1163   68   !   ! alloc( cur, paxbufpool, sem(dte_sem_no).s^);
37370 1164   69   !   ! signal( cur, sem( pax_pool).s^);
37380 1165   70   !   END;
37390 1166   71   ! 
37400 1167   72   ! st:= 1024;
37410 1168   73   ! base:= 10;
37420 1169   74   ! firstword:= 1;
37430 1170   75   ! lastword:= 10;
37440 1171   76   ! 
37450 1172   77   ! setoflowmask(true);
37460 1173   78   ! 
\f

feaoslst    81.05.08.   14.51.                                                    page    52

37470 1174   79   !  
\f

feaoslst    81.05.08.   14.51.                                                    page    53

38010 1175   80   ! noofparams:= 0;
38020 1176   81   !   (* insert auto create with edit here *)
38030 1177   82   ! 
38040 1178   83   ! REPEAT
38050 1179   84   ! !   (* read a line of input from the operator and execute it *)
38060 1180   85   ! ! 
38070 1181   86   ! ! getinput;
38080 1182   87   ! ! 
38090 1183   88   ! ! CASE command OF
38100 1184   89   ! ! ! 
38110 1185   90   ! ! ! ";": (* comment command *)
38120 1186   91   ! ! !   BEGIN
38130 1187   92   ! ! !   END;
38140 1188   93   ! ! ! 
38150 1189   94   ! ! !  
\f

feaoslst    81.05.08.   14.51.                                                    page    54

39010 1190   95   ! ! ! "a": (* alloc *)
39020 1191   96   ! ! !     (* a buffer is allocated from the messbufpool to the current
39030 1192   97   ! ! !     reference "cur".
39040 1193   98   ! ! !     1st param is the answersem *)
39050 1194   99   ! ! !   BEGIN
39060 1195  100   ! ! !   ! semno:= params(1);
39070 1196  101   ! ! !   ! 
39080 1197  102   ! ! !   ! IF noofparams >= 1 THEN
39090 1198  103   ! ! !   !   IF nil(cur) THEN
39100 1199  104   ! ! !   !     IF ((semno>0) AND (semno <= noofsemaphores))
39110 1200  105   ! ! !   !       OR ((semno<0) AND (semno >= -applsem_max)) THEN
39120 1201  106   ! ! !   !       BEGIN
39130 1202  107   ! ! !   !       ! IF semno > 0 THEN
39140 1203  108   ! ! !   !       !   alloc (cur, testbufpool, ts_sem(semno))
39150 1204  109   ! ! !   !       ! ELSE
39160 1205  110   ! ! !   !       !   alloc (cur, testbufpool, evavector(-semno));
39170 1206  111   ! ! !   !       ! WITH cur^ DO
39180 1207  112   ! ! !   !       !   BEGIN
39190 1208  113   ! ! !   !       !   ! u1:= 0;
39200 1209  114   ! ! !   !       !   ! u2:= 0;
39210 1210  115   ! ! !   !       !   ! u3:= 0;
39220 1211  116   ! ! !   !       !   ! u4:= 0;
39230 1212  117   ! ! !   !       !   END;
39240 1213  118   ! ! !   !       ! get_curbuftype;
39250 1214  119   ! ! !   !       ! outstring10("  bufsize ");
39260 1215  120   ! ! !   !       ! outinteger(curbufsize, 5);
39270 1216  121   ! ! !   !       ! outinteger(cur^.size, 5)
39280 1217  122   ! ! !   !       END
39290 1218  123   ! ! !   !     ELSE outstring10(illegalno)
39300 1219  124   ! ! !   !     ELSE outstring20("you already have one")
39310 1220  125   ! ! !   !     ELSE outstring10(noparam)
39320 1221  126   ! ! !   END (* alloc*);
39330 1222  127   ! ! ! 
39340 1223  128   ! ! !  
\f

feaoslst    81.05.08.   14.51.                                                    page    55

40010 1224  129   ! ! ! "b": (* base *)
40020 1225  130   ! ! !     (* defines the number base for input as well as output *)
40030 1226  131   ! ! !     (* the base is always read decimally *)
40040 1227  132   ! ! !   BEGIN
40050 1228  133   ! ! !   ! IF noofparams < 1 THEN
40060 1229  134   ! ! !   !   BEGIN
40070 1230  135   ! ! !   !   ! base:= oldbase;
40080 1231  136   ! ! !   !   ! outstring10(noparam)
40090 1232  137   ! ! !   !   END
40100 1233  138   ! ! !   ! ELSE
40110 1234  139   ! ! !   !   
40120 1235  140   ! ! !   !   IF NOT (params(1) IN (. 2, 8, 10, 16 .) ) THEN
40130 1236  141   ! ! !   !     BEGIN (* illegal base *)
40140 1237  142   ! ! !   !     ! outstring20("illegal base        ");
40150 1238  143   ! ! !   !     ! base:= oldbase;
40160 1239  144   ! ! !   !     END
40170 1240  145   ! ! !   !   ELSE
40180 1241  146   ! ! !   !     base:= params(1);
40190 1242  147   ! ! !   END;
40200 1243  148   ! ! ! 
40210 1244  149   ! ! !  
\f

feaoslst    81.05.08.   14.51.                                                    page    56

41010 1245  150   ! ! ! "c": (* create *)
41020 1246  151   ! ! !     (* an incarnation of each of the predefined modules to be tested
41030 1247  152   ! ! !     is created and started.
41040 1248  153   ! ! !     params are nos. of the modules to be created and started *)
41050 1249  154   ! ! !   
41060 1250  155   ! ! !   IF noofparams >= 1 THEN
41070 1251  156   ! ! !     
41080 1252  157   ! ! !     BEGIN
41090 1253  158   ! ! !     ! moduleno:= params(1);
41100 1254  159   ! ! !     ! 
41110 1255  160   ! ! !     ! IF noofparams>1 THEN st:= params(2);
41120 1256  161   ! ! !     ! 
41130 1257  162   ! ! !     ! IF (moduleno<1) OR (moduleno > noofmodules) THEN
41140 1258  163   ! ! !     !   BEGIN (* illegal no *)
41150 1259  164   ! ! !     !   ! outdecimal(moduleno,4);
41160 1260  165   ! ! !     !   ! outstring10(illegalno);
41170 1261  166   ! ! !     !   END
41180 1262  167   ! ! !     ! ELSE
41190 1263  168   ! ! !     !   IF moduleready(moduleno) THEN init_modul(moduleno);
41200 1264  169   ! ! !     END (* if noofparams >= 1 *)
41210 1265  170   ! ! !   ELSE outstring10 (noparam);
41220 1266  171   ! ! !   (* end create *)
41230 1267  172   ! ! ! 
41240 1268  173   ! ! !  
\f

feaoslst    81.05.08.   14.51.                                                    page    57

42010 1269  174   ! ! ! "d": (*  test dtesimulator  *)
42020 1270  175   ! ! !   BEGIN
42030 1271  176   ! ! !   ! outstring10("test dte  ");
42040 1272  177   ! ! !   ! 
42050 1273  178   ! ! !   ! sensesem( nref, sem( pax_pool).w^);
42060 1274  179   ! ! !   ! 
42070 1275  180   ! ! !   ! IF NOT nil( nref) THEN
42080 1276  181   ! ! !   !   BEGIN
42090 1277  182   ! ! !   !   ! nref^.u2 := 7;
42100 1278  183   ! ! !   !   ! nref^.u4 := from_link;
42110 1279  184   ! ! !   !   ! 
42120 1280  185   ! ! !   !   ! CASE params(1) OF
42130 1281  186   ! ! !   !   ! ! 
42140 1282  187   ! ! !   !   ! ! 1: (* answer to connect ext *)
42150 1283  188   ! ! !   !   ! !   BEGIN
42160 1284  189   ! ! !   !   ! !   ! nref^.u1 := rut_con;
42170 1285  190   ! ! !   !   ! !   ! nref^.u2 := rut_ok;
42180 1286  191   ! ! !   !   ! !   ! nref^.u3 := 7;
42190 1287  192   ! ! !   !   ! !   ! 
42200 1288  193   ! ! !   !   ! !   ! LOCK nref AS buf: rut_prefix_type DO
42210 1289  194   ! ! !   !   ! !   !   buf.ext_no := params(2);
42220 1290  195   ! ! !   !   ! !   !   (* ie  d 1 20  answers on connect ext 20 *)
42230 1291  196   ! ! !   !   ! !   END;
42240 1292  197   ! ! !   !   ! ! 
42250 1293  198   ! ! !   !   ! ! 2: (* call request *)
42260 1294  199   ! ! !   !   ! !   BEGIN
42270 1295  200   ! ! !   !   ! !   ! nref^.u1 := dte_car;
42280 1296  201   ! ! !   !   ! !   ! nref^.u3 := params(2);
42290 1297  202   ! ! !   !   ! !   ! nref^.u4 := to_link;
42300 1298  203   ! ! !   !   ! !   ! LOCK nref AS buf:car_buf_type DO
42310 1299  204   ! ! !   !   ! !   !   WITH buf DO
42320 1300  205   ! ! !   !   ! !   !     BEGIN
42330 1301  206   ! ! !   !   ! !   !     ! first := ric_first_val;
42340 1302  207   ! ! !   !   ! !   !     ! last := ric_first_val+l_control+l_listen-1;
42350 1303  208   ! ! !   !   ! !   !     ! q_bit := false;
42360 1304  209   ! ! !   !   ! !   !     ! WITH call_buf DO
42370 1305  210   ! ! !   !   ! !   !     !   BEGIN
42380 1306  211   ! ! !   !   ! !   !     !   ! control.op_code := dte_car;
42390 1307  212   ! ! !   !   ! !   !     !   ! dte_adr_l := l_dte_adr;
42400 1308  213   ! ! !   !   ! !   !     !   ! dte_adr := packextnode(3);
42410 1309  214   ! ! !   !   ! !   !     !   ! facility_l := l_facilities;
42420 1310  215   ! ! !   !   ! !   !     !   ! facility := params(6);
42430 1311  216   ! ! !   !   ! !   !     !   END;
42440 1312  217   ! ! !   !   ! !   !     END;
42450 1313  218   ! ! !   !   ! !   !  
\f

feaoslst    81.05.08.   14.51.                                                    page    58

43010 1314  219   ! ! !   !   ! !   END;
43020 1315  220   ! ! !   !   ! !   (* ie d 2  1  0 0 3  0 sends a call to 3 on stream 1 *)
43030 1316  221   ! ! !   !   ! !   (* ie d 2  2  0 0 4  0 sends a call to 4 on stream 2 *)
43040 1317  222   ! ! !   !   ! ! 
43050 1318  223   ! ! !   !   ! ! 3: (* call accepted from remote user *)
43060 1319  224   ! ! !   !   ! !   BEGIN
43070 1320  225   ! ! !   !   ! !   ! nref^.u1 := rut_rec;
43080 1321  226   ! ! !   !   ! !   ! nref^.u2 := rut_ok;
43090 1322  227   ! ! !   !   ! !   ! nref^.u3 := rut_default;
43100 1323  228   ! ! !   !   ! !   ! LOCK nref AS buf: rut_trp_pdata DO
43110 1324  229   ! ! !   !   ! !   !   WITH buf DO
43120 1325  230   ! ! !   !   ! !   !     make_phead( 3, dte_aic, phead);
43130 1326  231   ! ! !   !   ! !   END;
43140 1327  232   ! ! !   !   ! !   (* ie d  3  1  0 0 3  0 0 2  0  is 3 accepting call from 2 *)
43150 1328  233   ! ! !   !   ! ! 
43160 1329  234   ! ! !   !   ! ! 4: (* send data to remote user *)
43170 1330  235   ! ! !   !   ! !   BEGIN
43180 1331  236   ! ! !   !   ! !   ! nref^.u1 := dte_sdata;
43190 1332  237   ! ! !   !   ! !   ! nref^.u3 := params(2);
43200 1333  238   ! ! !   !   ! !   ! LOCK nref AS buf : dte_sdata_data DO
43210 1334  239   ! ! !   !   ! !   !   WITH buf DO
43220 1335  240   ! ! !   !   ! !   !     BEGIN
43230 1336  241   ! ! !   !   ! !   !     ! q_bit := false;
43240 1337  242   ! ! !   !   ! !   !     ! m_bit := false;
43250 1338  243   ! ! !   !   ! !   !     ! control.op_code := dte_sdata;
43260 1339  244   ! ! !   !   ! !   !     END
43270 1340  245   ! ! !   !   ! !   END;
43280 1341  246   ! ! !   !   ! !   (* ie d  4  1      sends data on stream 1 *)
43290 1342  247   ! ! !   !   ! ! 
43300 1343  248   ! ! !   !   ! ! 
43310 1344  249   ! ! !   !   ! ! 
43320 1345  250   ! ! !   !   ! ! OTHERWISE
43330 1346  251   ! ! !   !   ! ! outstring10("undef test");
43340 1347  252   ! ! !   !   ! END;
43350 1348  253   ! ! !   !   ! signal( nref, sem( dte_sem_no).s^);
43360 1349  254   ! ! !   !   END
43370 1350  255   ! ! !   ! ELSE
43380 1351  256   ! ! !   !   outstring10("no paxbufs");
43390 1352  257   ! ! !   ! 
43400 1353  258   ! ! !   END;
43410 1354  259   ! ! ! 
43420 1355  260   ! ! !  
\f

feaoslst    81.05.08.   14.51.                                                    page    59

44010 1356  261   ! ! ! "f": (* fill *)
44020 1357  262   ! ! !     (* fills integers into current buffer.
44030 1358  263   ! ! !     1st param: first word no. to be filled,
44040 1359  264   ! ! !     following: values to be assigned *)
44050 1360  265   ! ! !   BEGIN
44060 1361  266   ! ! !   ! IF noofparams < 2 THEN
44070 1362  267   ! ! !   !   outstring10("param     ")
44080 1363  268   ! ! !   ! ELSE
44090 1364  269   ! ! !   !   IF (params(1) < 1) THEN
44100 1365  270   ! ! !   !     outstring20("illegal start       ")
44110 1366  271   ! ! !   !   ELSE
44120 1367  272   ! ! !   !     IF nil(cur) THEN
44130 1368  273   ! ! !   !       outstring10("no buffer ")
44140 1369  274   ! ! !   !     ELSE
44150 1370  275   ! ! !   !       BEGIN (* params are ok *)
44160 1371  276   ! ! !   !       ! i:= params(1); (* i points into the messbuf *)
44170 1372  277   ! ! !   !       ! 
44180 1373  278   ! ! !   !       ! FOR j:= 2 TO noofparams DO
44190 1374  279   ! ! !   !       !     (* j points into the param list *)
44200 1375  280   ! ! !   !       !   IF i <= curbufsize THEN
44210 1376  281   ! ! !   !       !     BEGIN
44220 1377  282   ! ! !   !       !     ! CASE curbuftype OF
44230 1378  283   ! ! !   !       !     ! ! 1: LOCK cur AS minbuf: minbuftype DO
44240 1379  284   ! ! !   !       !     ! !     minbuf(i):= params(j);
44250 1380  285   ! ! !   !       !     ! ! 2: LOCK cur AS messbuf: messbuftype DO
44260 1381  286   ! ! !   !       !     ! !     messbuf(i):= params(j);
44270 1382  287   ! ! !   !       !     ! ! 3: LOCK cur AS maxbuf: maxbuftype DO
44280 1383  288   ! ! !   !       !     ! !     maxbuf(i):= params(j);
44290 1384  289   ! ! !   !       !     ! ! 4: LOCK cur AS testbuf: testbuftype DO
44300 1385  290   ! ! !   !       !     ! !     testbuf(i):= params(j);
44310 1386  291   ! ! !   !       !     ! ! OTHERWISE
44320 1387  292   ! ! !   !       !     ! END;
44330 1388  293   ! ! !   !       !     ! i:= i + 1;
44340 1389  294   ! ! !   !       !     END;
44350 1390  295   ! ! !   !       ! 
44360 1391  296   ! ! !   !       END (* params ok *)
44370 1392  297   ! ! !   END (* fill *);
44380 1393  298   ! ! ! 
44390 1394  299   ! ! !  
\f

feaoslst    81.05.08.   14.51.                                                    page    60

45010 1395  300   ! ! ! "h": (* help *)
45020 1396  301   ! ! !     (* lists possible commands and no. of parameters *)
45030 1397  302   ! ! !   BEGIN
45040 1398  303   ! ! !   ! outstring20("comm and no of param"); writenl;
45050 1399  304   ! ! !   ! outstring20("a: allocate   1     "); writenl;
45060 1400  305   ! ! !   ! outstring20("b: base       1     "); writenl;
45070 1401  306   ! ! !   ! outstring20("c: create     >=1   "); writenl;
45080 1402  307   ! ! !   ! outstring20("e: execute    1     "); writenl;
45090 1403  308   ! ! !   ! outstring20("f: fill       2     "); writenl;
45100 1404  309   ! ! !   ! outstring20("h: help       0     "); writenl;
45110 1405  310   ! ! !   ! outstring20("i: init point 0     "); writenl;
45120 1406  311   ! ! !   ! outstring20("k: kill       >=1   "); writenl;
45130 1407  312   ! ! !   ! outstring20("o: output     0 to 2"); writenl;
45140 1408  313   ! ! !   ! outstring20("p: partial    >=3   "); writenl;
45150 1409  314   ! ! !   ! outstring20("r: return     0     "); writenl;
45160 1410  315   ! ! !   ! outstring20("s: signal     1     "); writenl;
45170 1411  316   ! ! !   ! outstring20("t: test       0 or 1"); writenl;
45180 1412  317   ! ! !   ! outstring20("u: user param 1 to 4"); writenl;
45190 1413  318   ! ! !   ! outstring20("w: wait       1     "); writenl;
45200 1414  319   ! ! !   ! outstring20("x: exch point 2     "); writenl;
45210 1415  320   ! ! !   ! outstring20(";: comment          ");
45220 1416  321   ! ! !   END;
45230 1417  322   ! ! ! 
45240 1418  323   ! ! !  
\f

feaoslst    81.05.08.   14.51.                                                    page    61

46010 1419  324   ! ! ! "i": (* initialise pointers *)
46020 1420  325   ! ! !   IF noofparams=0 THEN
46030 1421  326   ! ! !     FOR i:=1 TO noofsemaphores DO sem(i).w:= sem(i).s ELSE
46040 1422  327   ! ! !       IF (params(1)>0) AND (params(1)<=noofsemaphores) THEN
46050 1423  328   ! ! !         sem(params(1)).w:= sem(params(1)).s ELSE
46060 1424  329   ! ! !         outstring10(valparam);
46070 1425  330   ! ! ! 
46080 1426  331   ! ! !  
\f

feaoslst    81.05.08.   14.51.                                                    page    62

47010 1427  332   ! ! ! "e", (* exception *)
47020 1428  333   ! ! !   (* call of exception routine in one or more incarnations *)
47030 1429  334   ! ! ! "k": (* kill *)
47040 1430  335   ! ! !     (* removes incarnation of tested module(s)
47050 1431  336   ! ! !     params are nos. of modules to be removed *)
47060 1432  337   ! ! !   
47070 1433  338   ! ! !   IF noofparams >= 1 THEN
47080 1434  339   ! ! !     FOR i:= 1 TO noofparams DO
47090 1435  340   ! ! !       BEGIN
47100 1436  341   ! ! !       ! moduleno:= params(i);
47110 1437  342   ! ! !       ! IF (1<=moduleno) AND (moduleno<=noofmodules) THEN
47120 1438  343   ! ! !       !   IF NOT nil(sh(moduleno)) THEN
47130 1439  344   ! ! !       !     IF command="e" THEN
47140 1440  345   ! ! !       !       break(sh(moduleno),#h2f) ELSE
47150 1441  346   ! ! !       !       remove (sh(moduleno))
47160 1442  347   ! ! !       !     ELSE
47170 1443  348   ! ! !       !       BEGIN
47180 1444  349   ! ! !       !       ! outdecimal (moduleno, 4);
47190 1445  350   ! ! !       !       ! outstring10(" not alive");
47200 1446  351   ! ! !       !       ! writenl;
47210 1447  352   ! ! !       !       END
47220 1448  353   ! ! !       !     ELSE
47230 1449  354   ! ! !       !       BEGIN
47240 1450  355   ! ! !       !       ! outdecimal (moduleno, 4);
47250 1451  356   ! ! !       !       ! outstring10(illegalno);
47260 1452  357   ! ! !       !       ! writenl;
47270 1453  358   ! ! !       !       END
47280 1454  359   ! ! !       END
47290 1455  360   ! ! !     ELSE outstring10("no params ");
47300 1456  361   ! ! ! 
47310 1457  362   ! ! !  
\f

feaoslst    81.05.08.   14.51.                                                    page    63

48010 1458  363   ! ! ! "m": (* testmode *)
48020 1459  364   ! ! !   testmode:= NOT testmode;
48030 1460  365   ! ! ! 
48040 1461  366   ! ! !  
\f

feaoslst    81.05.08.   14.51.                                                    page    64

49010 1462  367   ! ! ! "n": (*  test netconnector *)
49020 1463  368   ! ! !   BEGIN
49030 1464  369   ! ! !   ! outstring10("test netc ");
49040 1465  370   ! ! !   ! 
49050 1466  371   ! ! !   ! sensesem( nref, sem( pax_pool).w^);
49060 1467  372   ! ! !   ! 
49070 1468  373   ! ! !   ! IF NOT nil( nref) THEN
49080 1469  374   ! ! !   !   BEGIN
49090 1470  375   ! ! !   !   ! 
49100 1471  376   ! ! !   !   ! nref^.u2 := 7;
49110 1472  377   ! ! !   !   ! 
49120 1473  378   ! ! !   !   ! CASE params(1) OF
49130 1474  379   ! ! !   !   ! ! 
49140 1475  380   ! ! !   !   ! ! 1: (* update pax-table from local sup *)
49150 1476  381   ! ! !   !   ! !   BEGIN
49160 1477  382   ! ! !   !   ! !   ! nref^.u3 := tss_route;
49170 1478  383   ! ! !   !   ! !   ! nref^.u4 := #hac;
49180 1479  384   ! ! !   !   ! !   ! 
49190 1480  385   ! ! !   !   ! !   ! LOCK nref AS buf : RECORD
49200 1481  386   ! ! !   !   ! !   !                      !  a:alarmlabel;
49210 1482  387   ! ! !   !   ! !   !                      !  i : integer;
49220 1483  388   ! ! !   !   ! !   !                      !  p:paxnet_e;
49230 1484  389   ! ! !   !   ! !   !   END DO
49240 1485  390   ! ! !   !   ! !   !   WITH buf DO
49250 1486  391   ! ! !   !   ! !   !     BEGIN
49260 1487  392   ! ! !   !   ! !   !     ! a.update := insert_code;
49270 1488  393   ! ! !   !   ! !   !     ! a.rec.macro := packmacro(2);
49280 1489  394   ! ! !   !   ! !   !     ! a.rec.micro := netc_mic_addr;
49290 1490  395   ! ! !   !   ! !   !     ! a.send.macro := packmacro(5);
49300 1491  396   ! ! !   !   ! !   !     ! p.al_mac_addr := packmacro(8);
49310 1492  397   ! ! !   !   ! !   !     ! p.pax_addr := packextnode(11);
49320 1493  398   ! ! !   !   ! !   !     ! i := params(14);
49330 1494  399   ! ! !   !   ! !   !     ! p.stream_no := params(15);
49340 1495  400   ! ! !   !   ! !   !     END;
49350 1496  401   ! ! !   !   ! !   !   (*       receiver sender al-mac  pax indx stream       *)
49360 1497  402   ! ! !   !   ! !   !   (* ie n 1  0 0 0  1 0 0  1 2 2  0 0 2  1  0 sets netc address *)
49370 1498  403   ! ! !   !   ! !   !   (* ie n 1  1 2 2  1 0 0  1 2 2  0 0 2  2  1 sets tssup addr   *)
49380 1499  404   ! ! !   !   ! !   !   (* ie n 1  1 2 2  1 0 0  1 2 0  0 0 2  3  2 sets ncsup addr   *)
49390 1500  405   ! ! !   !   ! !   !   (* ie n 1  1 2 2  1 0 0  1 3 2  0 0 3  4  0 sets global ts-adr*)
49400 1501  406   ! ! !   !   ! !   !   (* ie n 1  1 2 2  1 0 0  1 3 0  0 0 3  5  0 sets global nc-adr*)
49410 1502  407   ! ! !   !   ! !   END;
49420 1503  408   ! ! !   !   ! ! 
49430 1504  409   ! ! !   !   ! !  
\f

feaoslst    81.05.08.   14.51.                                                    page    65

50010 1505  410   ! ! !   !   ! ! 2 : (* update pax-table from net *)
50020 1506  411   ! ! !   !   ! !   BEGIN
50030 1507  412   ! ! !   !   ! !   ! nref^.u3 := params(15);
50040 1508  413   ! ! !   !   ! !   ! nref^.u4 := to_link;
50050 1509  414   ! ! !   !   ! !   ! 
50060 1510  415   ! ! !   !   ! !   ! LOCK nref AS buf : RECORD
50070 1511  416   ! ! !   !   ! !   !                      !  x,y,z:integer;
50080 1512  417   ! ! !   !   ! !   !                      !  b1,b2:boolean;
50090 1513  418   ! ! !   !   ! !   !                      !  d:byte;
50100 1514  419   ! ! !   !   ! !   !                      !  control: control_field_type;
50110 1515  420   ! ! !   !   ! !   !                      !  a:alarmlabel;
50120 1516  421   ! ! !   !   ! !   !                      !  i:integer;
50130 1517  422   ! ! !   !   ! !   !                      !  p:paxnet_e;
50140 1518  423   ! ! !   !   ! !   !   END DO
50150 1519  424   ! ! !   !   ! !   !   WITH buf DO
50160 1520  425   ! ! !   !   ! !   !     BEGIN
50170 1521  426   ! ! !   !   ! !   !     ! a.update := insert_code;
50180 1522  427   ! ! !   !   ! !   !     ! a.rec.macro := packmacro(2);
50190 1523  428   ! ! !   !   ! !   !     ! a.rec.micro:=netc_mic_addr;
50200 1524  429   ! ! !   !   ! !   !     ! a.send.macro:=packmacro(5);
50210 1525  430   ! ! !   !   ! !   !     ! p.al_mac_addr := packmacro(8);
50220 1526  431   ! ! !   !   ! !   !     ! p.pax_addr := packextnode(11);
50230 1527  432   ! ! !   !   ! !   !     ! i:=params(14);
50240 1528  433   ! ! !   !   ! !   !     ! p.stream_no := 0;
50250 1529  434   ! ! !   !   ! !   !     END;
50260 1530  435   ! ! !   !   ! !   END;
50270 1531  436   ! ! !   !   ! !   (*       receiver sender al-mac  pax  indx stream  *)
50280 1532  437   ! ! !   !   ! !   (* ie n 2  1 2 2  1 0 0  1 4 2  0 0 4  6  1   sets global ts-addr *)
50290 1533  438   ! ! !   !   ! !   (* ie n 2  1 2 2  1 0 0  1 4 0  0 0 4  7  1   sets global nc-addr *)
50300 1534  439   ! ! !   !   ! !   (* ie n 2  1 2 2  1 0 0  1 5 2  0 0 5  8  1   sets global ts-addr *)
50310 1535  440   ! ! !   !   ! !   (* ie n 2  1 2 2  1 0 0  1 5 0  0 0 5  9  1   sets global nc-addr *)
50320 1536  441   ! ! !   !   ! ! 
50330 1537  442   ! ! !   !   ! !  
\f

feaoslst    81.05.08.   14.51.                                                    page    66

51010 1538  443   ! ! !   !   ! ! 3:  (* send alarmmessage *)
51020 1539  444   ! ! !   !   ! !   BEGIN
51030 1540  445   ! ! !   !   ! !   ! nref^.u3 := tss_route;
51040 1541  446   ! ! !   !   ! !   ! nref^.u4 := #h30;
51050 1542  447   ! ! !   !   ! !   ! 
51060 1543  448   ! ! !   !   ! !   ! LOCK nref AS abuf : alarmlabel DO
51070 1544  449   ! ! !   !   ! !   !   abuf.rec.macro := packmacro(2);
51080 1545  450   ! ! !   !   ! !   ! 
51090 1546  451   ! ! !   !   ! !   !   (*        receiver *)
51100 1547  452   ! ! !   !   ! !   !   (* ie n 3  1 2 2   gives an alarm to tssup itself  *)
51110 1548  453   ! ! !   !   ! !   !   (* ie n 3  1 2 0   gives an alarm to ncsup local   *)
51120 1549  454   ! ! !   !   ! !   !   (* ie n 3  1 3 2   gives an alarm to tssup global  *)
51130 1550  455   ! ! !   !   ! !   !   (* ie n 3  1 3 0   gives an alarm to ncsup global  *)
51140 1551  456   ! ! !   !   ! !   END;
51150 1552  457   ! ! !   !   ! ! 
51160 1553  458   ! ! !   !   ! ! 
51170 1554  459   ! ! !   !   ! ! OTHERWISE
51180 1555  460   ! ! !   !   ! ! outstring10("undef test");
51190 1556  461   ! ! !   !   ! END;
51200 1557  462   ! ! !   !   ! signal( nref, sem( netc_sem_no).s^);
51210 1558  463   ! ! !   !   END
51220 1559  464   ! ! !   ! ELSE
51230 1560  465   ! ! !   !   outstring10("no paxbufs");
51240 1561  466   ! ! !   END;
51250 1562  467   ! ! ! 
51260 1563  468   ! ! ! 
51270 1564  469   ! ! !  
\f

feaoslst    81.05.08.   14.51.                                                    page    67

52010 1565  470   ! ! ! "o": (* output *)
52020 1566  471   ! ! !     (* outputs current buffer incl. user parameters
52030 1567  472   ! ! !     1st param is firstword,
52040 1568  473   ! ! !     2nd param is lastword *)
52050 1569  474   ! ! !   BEGIN
52060 1570  475   ! ! !   ! IF nil(cur) THEN
52070 1571  476   ! ! !   !   outstring10 ("no buffer ")
52080 1572  477   ! ! !   ! ELSE
52090 1573  478   ! ! !   !   BEGIN
52100 1574  479   ! ! !   !   ! outchar("u");
52110 1575  480   ! ! !   !   ! outchar(":");
52120 1576  481   ! ! !   !   ! 
52130 1577  482   ! ! !   !   ! outinteger(cur^.u1,4);
52140 1578  483   ! ! !   !   ! outinteger(cur^.u2,4);
52150 1579  484   ! ! !   !   ! outinteger(cur^.u3,4);
52160 1580  485   ! ! !   !   ! outinteger(cur^.u4,4);
52170 1581  486   ! ! !   !   ! writenl;
52180 1582  487   ! ! !   !   ! 
52190 1583  488   ! ! !   !   ! IF (noofparams>=1) AND (params(1)>=1)
52200 1584  489   ! ! !   !   !   AND (params(1)<= curbufsize) THEN
52210 1585  490   ! ! !   !   !   firstword:= params(1);
52220 1586  491   ! ! !   !   ! 
52230 1587  492   ! ! !   !   ! IF (noofparams>=2) AND (params(2)<=curbufsize) THEN
52240 1588  493   ! ! !   !   !   lastword:= params(2);
52250 1589  494   ! ! !   !   ! IF lastword>curbufsize THEN
52260 1590  495   ! ! !   !   !   lastword:= curbufsize;
52270 1591  496   ! ! !   !   ! 
52280 1592  497   ! ! !   !   ! IF cur^.size<curbufsize THEN
52290 1593  498   ! ! !   !   !   outstring20("too small buffer    ") ELSE
52300 1594  499   ! ! !   !   !   FOR i:= firstword TO lastword DO
52310 1595  500   ! ! !   !   !     BEGIN
52320 1596  501   ! ! !   !   !     ! outdecimal(i,3);
52330 1597  502   ! ! !   !   !     ! outchar(":");
52340 1598  503   ! ! !   !   !     ! CASE curbuftype OF
52350 1599  504   ! ! !   !   !     ! ! 1: LOCK cur AS minbuf: minbuftype DO
52360 1600  505   ! ! !   !   !     ! !     j:= minbuf(i);
52370 1601  506   ! ! !   !   !     ! ! 2: LOCK cur AS messbuf: messbuftype DO
52380 1602  507   ! ! !   !   !     ! !     j:= messbuf(i);
52390 1603  508   ! ! !   !   !     ! ! 3: LOCK cur AS maxbuf: maxbuftype DO
52400 1604  509   ! ! !   !   !     ! !     j:= maxbuf(i);
52410 1605  510   ! ! !   !   !     ! ! 4: LOCK cur AS testbuf: testbuftype DO
52420 1606  511   ! ! !   !   !     ! !     j:= testbuf(i);
52430 1607  512   ! ! !   !   !     ! ! OTHERWISE
52440 1608  513   ! ! !   !   !     ! ! j:= 0;
52450 1609  514   ! ! !   !   !     ! END;
52460 1610  515   ! ! !   !   !     ! IF base= 2 THEN
\f

feaoslst    81.05.08.   14.51.                                                    page    68

52470 1611  516   ! ! !   !   !     !    
\f

feaoslst    81.05.08.   14.51.                                                    page    69

53010 1612  517   ! ! !   !   !     !   outinteger(j,17)
53020 1613  518   ! ! !   !   !     ! ELSE
53030 1614  519   ! ! !   !   !     !   outinteger(j,7);
53040 1615  520   ! ! !   !   !     ! writenl;
53050 1616  521   ! ! !   !   !     END;
53060 1617  522   ! ! !   !   END (* ok *);
53070 1618  523   ! ! !   END (* output *);
53080 1619  524   ! ! ! 
53090 1620  525   ! ! !  
\f

feaoslst    81.05.08.   14.51.                                                    page    70

54010 1621  526   ! ! ! "p": (* partial words *)
54020 1622  527   ! ! !     (* fills partial words i.e. bytes into current buffer.
54030 1623  528   ! ! !     1st param: word no. in which to start
54040 1624  529   ! ! !     2nd param: byte no. (of 1st word) in which to start:
54050 1625  530   ! ! !     -           0: left byte
54060 1626  531   ! ! !     -           1: right byte
54070 1627  532   ! ! !     following: byte values to be assigned *)
54080 1628  533   ! ! !   BEGIN
54090 1629  534   ! ! !   ! IF noofparams<2 THEN
54100 1630  535   ! ! !   !   outstring10("param     ")
54110 1631  536   ! ! !   ! ELSE
54120 1632  537   ! ! !   !   IF (params(1)<1) THEN
54130 1633  538   ! ! !   !     outstring20("illegal start-word  ")
54140 1634  539   ! ! !   !   ELSE
54150 1635  540   ! ! !   !     IF NOT (params(2) IN (.0,1.)) THEN
54160 1636  541   ! ! !   !       outstring20 ("2nd must be 0 or 1  ")
54170 1637  542   ! ! !   !     ELSE
54180 1638  543   ! ! !   !       IF nil (cur) THEN
54190 1639  544   ! ! !   !         outstring10 ("no buffer ")
54200 1640  545   ! ! !   !       ELSE
54210 1641  546   ! ! !   !         BEGIN (* params are ok *)
54220 1642  547   ! ! !   !         ! i:= params(1); (* i points into current buffer *)
54230 1643  548   ! ! !   !         ! j:= params(2);
54240 1644  549   ! ! !   !         ! 
54250 1645  550   ! ! !   !         ! IF cur^.size<messbufsize THEN
54260 1646  551   ! ! !   !         !   outstring20("too small buffer    ") ELSE
54270 1647  552   ! ! !   !         !   LOCK cur AS messbuf: messbuftype DO
54280 1648  553   ! ! !   !         !     BEGIN
54290 1649  554   ! ! !   !         !     ! IF messbuf(i)<0 THEN
54300 1650  555   ! ! !   !         !     !   leftbyte:= (messbuf(i)+255) DIV 256
54310 1651  556   ! ! !   !         !     ! ELSE
54320 1652  557   ! ! !   !         !     !   leftbyte:= messbuf(i) DIV 256;
54330 1653  558   ! ! !   !         !     ! 
54340 1654  559   ! ! !   !         !     ! FOR k:= 3 TO noofparams DO
54350 1655  560   ! ! !   !         !     !     (* k points into the parameter list *)
54360 1656  561   ! ! !   !         !     !   IF i<= messbufsize THEN
54370 1657  562   ! ! !   !         !     !     BEGIN
54380 1658  563   ! ! !   !         !     !     ! CASE j OF
54390 1659  564   ! ! !   !         !     !     ! ! 0:
54400 1660  565   ! ! !   !         !     !     ! !   BEGIN (* left *)
54410 1661  566   ! ! !   !         !     !     ! !   ! rightbyte:= abs(messbuf(i) MOD 256);
54420 1662  567   ! ! !   !         !     !     ! !   ! leftbyte := params (k);
54430 1663  568   ! ! !   !         !     !     ! !   END;
54440 1664  569   ! ! !   !         !     !     ! ! 1:
54450 1665  570   ! ! !   !         !     !     ! !   BEGIN (* right *)
54460 1666  571   ! ! !   !         !     !     ! !   ! rightbyte:= params (k);
\f

feaoslst    81.05.08.   14.51.                                                    page    71

54470 1667  572   ! ! !   !         !     !     ! !   !  
\f

feaoslst    81.05.08.   14.51.                                                    page    72

55010 1668  573   ! ! !   !         !     !     ! !   ! IF leftbyte>=128 THEN
55020 1669  574   ! ! !   !         !     !     ! !   !   BEGIN
55030 1670  575   ! ! !   !         !     !     ! !   !   ! messbuf(i):= (leftbyte-128)*256 + rightbyte;
55040 1671  576   ! ! !   !         !     !     ! !   !   ! IF messbuf(i)>0 THEN
55050 1672  577   ! ! !   !         !     !     ! !   !   !   messbuf(i):= -((32767-messbuf(i))+1)
55060 1673  578   ! ! !   !         !     !     ! !   !   ! ELSE messbuf(i):= -32768;
55070 1674  579   ! ! !   !         !     !     ! !   !   END
55080 1675  580   ! ! !   !         !     !     ! !   ! ELSE
55090 1676  581   ! ! !   !         !     !     ! !   !   messbuf(i):= leftbyte*256 + rightbyte;
55100 1677  582   ! ! !   !         !     !     ! !   ! i:= i+1;
55110 1678  583   ! ! !   !         !     !     ! !   END;
55120 1679  584   ! ! !   !         !     !     ! ! 
55130 1680  585   ! ! !   !         !     !     ! END (* case *);
55140 1681  586   ! ! !   !         !     !     ! 
55150 1682  587   ! ! !   !         !     !     ! j:= 1-j;
55160 1683  588   ! ! !   !         !     !     END;
55170 1684  589   ! ! !   !         !     ! 
55180 1685  590   ! ! !   !         !     ! IF (j=1) AND (i<=messbufsize) THEN
55190 1686  591   ! ! !   !         !     !   IF leftbyte>=128 THEN
55200 1687  592   ! ! !   !         !     !     BEGIN
55210 1688  593   ! ! !   !         !     !     ! IF messbuf(i)>0 THEN
55220 1689  594   ! ! !   !         !     !     !   messbuf(i):= (leftbyte-128)*256 + rightbyte
55230 1690  595   ! ! !   !         !     !     ! ELSE messbuf(i):= - 32768;
55240 1691  596   ! ! !   !         !     !     ! messbuf(i):= -((32767-messbuf(i))+1);
55250 1692  597   ! ! !   !         !     !     END
55260 1693  598   ! ! !   !         !     !   ELSE
55270 1694  599   ! ! !   !         !     !     messbuf(i):= leftbyte*256 + rightbyte;
55280 1695  600   ! ! !   !         !     END (* lock *);
55290 1696  601   ! ! !   !         END (* params ok *);
55300 1697  602   ! ! !   END (* partial *);
55310 1698  603   ! ! ! 
55320 1699  604   ! ! !  
\f

feaoslst    81.05.08.   14.51.                                                    page    73

56010 1700  605   ! ! ! "r": (* return *)
56020 1701  606   ! ! !     (* returns current buffer *)
56030 1702  607   ! ! !   IF nil(cur)
56040 1703  608   ! ! !     THEN outstring10("no buffer ")
56050 1704  609   ! ! !   ELSE return(cur);
56060 1705  610   ! ! ! 
56070 1706  611   ! ! !  
\f

feaoslst    81.05.08.   14.51.                                                    page    74

57010 1707  612   ! ! ! "s": (* signal *)
57020 1708  613   ! ! !     (* signals current buffer to one of the predefined semaphores.
57030 1709  614   ! ! !     1st param is semno *)
57040 1710  615   ! ! !   BEGIN
57050 1711  616   ! ! !   ! semno:= params(1);
57060 1712  617   ! ! !   ! 
57070 1713  618   ! ! !   ! IF noofparams >= 1 THEN
57080 1714  619   ! ! !   !   IF (1<=semno) AND (semno<=noofsemaphores) THEN
57090 1715  620   ! ! !   !     IF NOT nil(cur) THEN
57100 1716  621   ! ! !   !       signal (cur,ts_sem(semno))
57110 1717  622   ! ! !   !     ELSE outstring10("no buffer ")
57120 1718  623   ! ! !   !     ELSE
57130 1719  624   ! ! !   !       IF (semno <= -1) AND (semno >= -applsem_max) THEN
57140 1720  625   ! ! !   !         signal( cur, evavector( -semno))
57150 1721  626   ! ! !   !       ELSE outstring10(illegalno)
57160 1722  627   ! ! !   !       ELSE outstring10(noparam)
57170 1723  628   ! ! !   END (* signal *);
57180 1724  629   ! ! ! 
57190 1725  630   ! ! !  
\f

feaoslst    81.05.08.   14.51.                                                    page    75

58010 1726  631   ! ! ! "t": (* testsem *)
58020 1727  632   ! ! !     (* tests the status of the specified semaphores.
58030 1728  633   ! ! !     if none is specified, the status of all the
58040 1729  634   ! ! !     user semaphores is given.
58050 1730  635   ! ! !     in both cases nothing will be written for a semaphore
58060 1731  636   ! ! !     if it is passive. *)
58070 1732  637   ! ! !   BEGIN
58080 1733  638   ! ! !   ! IF noofparams=0 THEN
58090 1734  639   ! ! !   !   BEGIN (* test all semaphores *)
58100 1735  640   ! ! !   !   ! 
58110 1736  641   ! ! !   !   ! FOR i:= -applsem_max TO -1 DO
58120 1737  642   ! ! !   !   !   testsem( i,evavector(-i));
58130 1738  643   ! ! !   !   ! 
58140 1739  644   ! ! !   !   ! FOR i:=1 TO noofsemaphores DO
58150 1740  645   ! ! !   !   !   testsem(i,ts_sem(i))
58160 1741  646   ! ! !   !   END (* test all *)
58170 1742  647   ! ! !   ! ELSE
58180 1743  648   ! ! !   !   BEGIN (* test the specified semaphores *)
58190 1744  649   ! ! !   !   ! 
58200 1745  650   ! ! !   !   ! FOR i:=1 TO noofparams DO
58210 1746  651   ! ! !   !   !   IF (params(i)=0) OR (params(i)>noofsemaphores)
58220 1747  652   ! ! !   !   !     OR (params(i) < -applsem_max) THEN
58230 1748  653   ! ! !   !   !     BEGIN (* illegal no. *)
58240 1749  654   ! ! !   !   !     ! outstring20("illegal no.:        ");
58250 1750  655   ! ! !   !   !     ! outdecimal(params(i),3);
58260 1751  656   ! ! !   !   !     ! writenl;
58270 1752  657   ! ! !   !   !     END (* illegal no *)
58280 1753  658   ! ! !   !   !   ELSE
58290 1754  659   ! ! !   !   !     BEGIN
58300 1755  660   ! ! !   !   !     ! IF params(i)>0 THEN
58310 1756  661   ! ! !   !   !     !   testsem( params(i), ts_sem(params(i)))
58320 1757  662   ! ! !   !   !     ! ELSE
58330 1758  663   ! ! !   !   !     !   testsem( params(i), evavector(-params(i)));
58340 1759  664   ! ! !   !   !     END
58350 1760  665   ! ! !   !   END (* test the specified semaphores *)
58360 1761  666   ! ! !   END (* testsem *);
58370 1762  667   ! ! ! 
58380 1763  668   ! ! ! 
58390 1764  669   ! ! !  
\f

feaoslst    81.05.08.   14.51.                                                    page    76

59010 1765  670   ! ! ! "u": (* user parameters *)
59020 1766  671   ! ! !     (* inserts user param into header of current buffer
59030 1767  672   ! ! !     1st param is u1
59040 1768  673   ! ! !     2nd param is u2
59050 1769  674   ! ! !     3rd param is u3
59060 1770  675   ! ! !     4th param is u4 *)
59070 1771  676   ! ! !   BEGIN
59080 1772  677   ! ! !   ! IF nil(cur)
59090 1773  678   ! ! !   !   THEN outstring10("no buffer ")
59100 1774  679   ! ! !   ! ELSE
59110 1775  680   ! ! !   !   IF noofparams = 0 THEN
59120 1776  681   ! ! !   !     outstring10(noparam)
59130 1777  682   ! ! !   !   ELSE
59140 1778  683   ! ! !   !     WITH cur^ DO
59150 1779  684   ! ! !   !       BEGIN
59160 1780  685   ! ! !   !       ! IF testinterval (params(1),0,255) THEN u1:= params(1);
59170 1781  686   ! ! !   !       ! IF (noofparams>=2) THEN IF testinterval(params(2),0,255) THEN
59180 1782  687   ! ! !   !       !     u2:= params(2);
59190 1783  688   ! ! !   !       ! IF (noofparams>=3) THEN IF testinterval(params(3),0,255) THEN
59200 1784  689   ! ! !   !       !     u3:= params(3);
59210 1785  690   ! ! !   !       ! IF (noofparams>=4) THEN IF testinterval(params(4),0,255) THEN
59220 1786  691   ! ! !   !       !     u4:= params(4);
59230 1787  692   ! ! !   !       END
59240 1788  693   ! ! !   END; (* end user parameters *)
59250 1789  694   ! ! ! 
59260 1790  695   ! ! ! 
59270 1791  696   ! ! !  
\f

feaoslst    81.05.08.   14.51.                                                    page    77

60010 1792  697   ! ! ! "w": (* wait *)
60020 1793  698   ! ! !     (* waits for semaphore semno.
60030 1794  699   ! ! !     1st param is semno *)
60040 1795  700   ! ! !   BEGIN
60050 1796  701   ! ! !   ! semno:= params(1);
60060 1797  702   ! ! !   ! 
60070 1798  703   ! ! !   ! IF noofparams >= 1 THEN
60080 1799  704   ! ! !   !   IF nil(cur) THEN
60090 1800  705   ! ! !   !     IF ((semno>0) AND (semno <= noofsemaphores))
60100 1801  706   ! ! !   !       OR ((semno<0) AND (semno >= -applsem_max)) THEN
60110 1802  707   ! ! !   !       BEGIN
60120 1803  708   ! ! !   !       ! IF semno > 0 THEN
60130 1804  709   ! ! !   !       !   sensesem( cur, ts_sem(semno))
60140 1805  710   ! ! !   !       ! ELSE
60150 1806  711   ! ! !   !       !   sensesem( cur, evavector(-semno));
60160 1807  712   ! ! !   !       ! IF nil(cur) THEN
60170 1808  713   ! ! !   !       !   outstring20("semaphore not open  ")
60180 1809  714   ! ! !   !       ! ELSE
60190 1810  715   ! ! !   !       !   BEGIN
60200 1811  716   ! ! !   !       !   ! get_curbuftype;
60210 1812  717   ! ! !   !       !   ! outstring10("  bufsize ");
60220 1813  718   ! ! !   !       !   ! outinteger(curbufsize, 5);
60230 1814  719   ! ! !   !       !   ! outinteger(cur^.size, 5)
60240 1815  720   ! ! !   !       !   END;
60250 1816  721   ! ! !   !       END
60260 1817  722   ! ! !   !     ELSE outstring10(illegalno)
60270 1818  723   ! ! !   !     ELSE outstring20("you already have one")
60280 1819  724   ! ! !   !     ELSE outstring10(noparam)
60290 1820  725   ! ! !   END (* wait *);
60300 1821  726   ! ! ! 
60310 1822  727   ! ! !  
\f

feaoslst    81.05.08.   14.51.                                                    page    78

61010 1823  728   ! ! ! "x": (* exchange pointer *)
61020 1824  729   ! ! !   BEGIN
61030 1825  730   ! ! !   ! IF noofparams >= 2 THEN
61040 1826  731   ! ! !   !   IF (params(1)>0) AND (params(1)<=noofsemaphores) THEN
61050 1827  732   ! ! !   !     IF (params(2)>0) AND (params(2)<=noofsemaphores) THEN
61060 1828  733   ! ! !   !       BEGIN
61070 1829  734   ! ! !   !       ! worksem:= sem(params(1)).w;
61080 1830  735   ! ! !   !       ! sem(params(1)).w:= sem(params(2)).w;
61090 1831  736   ! ! !   !       ! sem(params(2)).w:= worksem;
61100 1832  737   ! ! !   !       END
61110 1833  738   ! ! !   !     ELSE outstring10(valparam)
61120 1834  739   ! ! !   !     ELSE outstring10(valparam)
61130 1835  740   ! ! !   !     ELSE outstring10(noparam)
61140 1836  741   ! ! !   END (* exchange pointer *);
61150 1837  742   ! ! ! 
61160 1838  743   ! ! ! 
61170 1839  744   ! ! ! OTHERWISE (* error *)
61180 1840  745   ! ! ! outstring20 ("illegal comm. type h");
61190 1841  746   ! ! END (* case *);
61200 1842  747   ! ! 
61210 1843  748   ! ! IF command<>";" THEN
61220 1844  749   ! !   writenl;
61230 1845  750   ! ! 
61240 1846  751   ! UNTIL false;
61250 1847  752   ! 
61260 1848  753   END.
61270 1849      
\f

feaoslst    81.05.08.   14.51.                                                    page    79

           0   42*   55*   85*  165*  165*  166*  321   326   349   350   353   361   371:  371   384 
              411   413   463   519   523   543   547   559   565   623*  646   655   666   672   679 
              691   702   703   703   731   734   739   749   754   755   859   865   867   884   932 
              954   961  1010  1025  1175  1199  1200  1202  1208  1209  1210  1211  1420  1422  1528 
             1608  1635  1649  1659: 1671  1688  1733  1746  1755  1775  1780  1781  1783  1785  1800 
             1801  1803  1826  1827 
           1   43*   54*   74*   75*   76*   77*   85*   88*   89*  111*  161*  162*  306   337   348 
              363   372:  426   429   438   493:  598   624*  637   640   654   655   660   666   674 
              686   688   691   695   696   711   726   730   752   757   759   765   769   785   793 
              803   820   822   930   939   956   972   973  1034  1103  1121  1125  1143  1154  1161 
             1169  1195  1197  1228  1235  1241  1250  1253  1255  1257  1280  1282: 1302  1364  1364 
             1371  1378: 1388  1421  1422  1422  1423  1423  1433  1434  1437  1473  1475: 1583  1583 
             1583  1584  1585  1599: 1632  1632  1635  1642  1664: 1672  1677  1682  1685  1691  1711 
             1713  1714  1719  1736  1739  1745  1780  1780  1796  1798  1826  1826  1829  1830 
           2  307   325   338   350   365   373:  460   499:  558   563   676   677   679   680   688 
              689   691   692   698   699   702   703   710:  736   914:  943: 1122  1125  1129  1235 
             1255  1289  1293: 1296  1332  1361  1373  1380: 1488  1505: 1522  1544  1587  1587  1588 
             1601: 1610  1629  1635  1643  1781  1781  1782  1825  1827  1827  1830  1831 
           3   98*  308   323   367   374:  502   503:  538   716   729  1020  1038  1053  1308  1318:
             1325  1382: 1538: 1596  1603: 1654  1750  1783  1783  1784 
           4  167*  368   375:  508:  569   583   721   722   927   983   997  1259  1329: 1384: 1444 
             1450  1577  1578  1579  1580  1605: 1785  1785  1786 
           5  166*  167*  469   512:  514  1215  1216  1490  1524  1813  1814 
           6   53*  348   516:  558   717   921  1310 
           7  165*  166*  167*  351   506   524:  563  1277  1286  1471  1614 
           8  533:  715:  728   919:  944: 1235  1491  1525 
           9  324   540:  746 
          10   88*  352   419   544:  610   642   785   868   882  1168  1170  1235 
          11  520: 1492  1526 
          12  100*  549:  793 
          13  556:
          14   40*  352   561: 1493  1527 
          15  623*  674   686   696   734  1494  1507 
          16   39*  712   720:  864   889   916   925:  936   945: 1235 
          17 1612 
          20   89*  620*  803 
          40  510 
          50  161*  436 
          64   36*
          80   34*   52*
          87  878   901   951 
         100  466 
         120   37*   38*
         128 1668  1670  1686  1689 
\f

feaoslst    81.05.08.   14.51.                                                    page    80

         255 1650  1780  1781  1783  1785 
         256  325  1650  1652  1661  1670  1676  1689  1694 
         512  519   523   543   547   559   565 
        1024 1167 
        2048  945 
        3276  892 
        4096  944 
       16384  943 
       32767  956  1672  1691 
       32768  894   955  1673  1690 
a              93*  334*  336   337   338   339   346*  349=  351=  353=  354  1012= 1013= 1481: 1487 
             1488  1489  1490  1515: 1521  1522  1523  1524 
abs           652  1661 
abuf         1543: 1544 
alarmlabel   1481  1515  1543 
alarm_opsys     6*
alfa           69*  280*  449*  789*
alfa10         88*  276*  779*
alfa20         89*  283*  295*  798*  992*
alfalength     53*
alloc        1128  1141  1156  1163  1203  1205 
alreadyexists                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
               47*  458   584 
al_lam1      1116 
al_mac_addr  1491= 1525=
ap            170* 1012  1015= 1018  1051 
applsem_max  1200  1719  1736  1747  1801 
appl_vector     7*
as            387:  393:  595:  816:  971: 1075: 1130: 1145: 1288: 1298: 1323: 1333: 1378: 1380: 1382:
             1384: 1480: 1510: 1543: 1599: 1601: 1603: 1605: 1647:
atbuffer       85*
b1           1512:
b2           1512:
base          135*  418   419=  432=  442=  609   610=  612=  642   652   653   708   728   864   868 
              882   889   900   901   913   936   942   949   951  1168= 1230= 1238= 1241= 1610 
bit           623*
bits          623*  676=  679=  688=  691=  698   699=  699   702   703=  703   736 
block         188*
boolean       157*  189*  261*  409*  576*  634*  843*  977* 1007* 1512 
bp            170* 1013  1015  1018  1051 
break        1440 
buf          1288: 1289  1298: 1299  1323: 1324  1333: 1334  1480: 1485  1510: 1519 
byte           82*   85*  224*  252*  313* 1513 
call_buf     1304 
\f

feaoslst    81.05.08.   14.51.                                                    page    81

car_buf_type 1298 
ch            592*  599   848*  854=  861   862=  863   864   876   877   878   886=  888   889   892 
              899   900   901   915   920   926   934=  935   936   948   949   951 
char           70*   88*   89*  131*  286*  592*  624*  811*  848*
chr           652   747   748 
command       131*  399=  401   415   430  1183  1439  1843 
com_pool      177*  497   529   552  1156 
com_pool_sem  232*
control      1306  1338  1514:
controlinfo    82*
control_field_type                                               <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             1514 
countref      115* 1028  1029  1033  1041  1042 
countsem      105* 1033  1039  1041 
create        462 
createchtype   80*
createerror    50*  467 
cur           118*  360   362   364   366  1156  1157  1163  1164  1198  1203  1205  1206  1216  1367 
             1378: 1380: 1382: 1384: 1570  1577  1578  1579  1580  1592  1599: 1601: 1603: 1605: 1638 
             1645  1647: 1702  1704  1715  1716  1720  1772  1778  1799  1804  1806  1807  1814 
curbufsize    148*  371=  372=  373=  374=  375= 1215  1375  1584  1587  1589  1590  1592  1813 
curbuftype    149*  361=  363=  365=  367=  368=  370  1377  1598 
curdigit      625*  726=  741   742   747   748   752   757=  757   845*  930=  939=  939   940   952 
curpos        626*  729=  730=  737   755=  759=  759 
d            1513:
data           70*  599=  819  1135=
dcmodule      255*  551 
dc_addr       165*  336=
dc_int1       553 
dc_int2       553 
dc_int3       553 
dc_sem_no     553 
dc_sim_pri    554 
dc_sim_size   554 
digit         843*  855=  863=  865   873   884   888=  890   932   935=  937 
digits        624*  640=  652=  659=  666=  742=  747=  748=  771   838*  863   876   888   899   935 
              948 
doesntexist    48*
dst           323=
dtesimulator  210*  535 
dte_addr      219*
dte_adr      1308=
dte_adr_l    1307=
dte_aic      1325 
\f

feaoslst    81.05.08.   14.51.                                                    page    82

dte_car      1295  1306 
dte_pax_addr  302*  309=  322   323   538 
dte_sdata    1331  1338 
dte_sdata_data                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             1333 
dte_sem       214*  234*
dte_sem_no    530   535  1163  1348 
evavector       7* 1110  1112  1114  1116  1205  1720  1737  1758  1806 
external      178*  184*  191*  197*  203*  208*  221*  236*  241*  246*  253*  259*  262*
ext_addr      308=
ext_no       1289=
ext_pax_addr  343*  346*
facility      324= 1310=
facility_l   1309=
false         423   433   563   585   751   852   855   870   895   985  1030  1098  1303  1336  1337 
             1846 
fesupervisor  174*  495 
fesup_pri     498 
fesup_que     496 
fesup_sem_no  496 
fesup_size    498 
fesup_write   496 
fe_env_version                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             1100 
first          66*  396   977*  980  1133= 1148= 1301=
firstindex     53*   54*   70*  388   397  1076  1133  1135  1148 
firstword     136* 1169= 1585= 1594 
format        318=
format_1_packet_header                                           <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              314*
fpadriver     186*  558   563 
from_link    1278 
getinput      380* 1181 
getparams     267*  403   407*
get_curbuftype                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              358* 1213  1811 
global_timeout                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              224*
glob_timeout  527 
h             627*  734=  736 
h2f          1440 
h30          1541 
hac          1478 
hexdigits     839*  864   889   936 
\f

feaoslst    81.05.08.   14.51.                                                    page    83

i             137*  295*  302*  305   306   307   308   313*  322   323   345*  348=  349   350=  351 
              351   352=  353   627*  640=  640   644=  652   654=  654   655   659   660=  660   664 
              674=  676   686=  688   696=  698   699   699   769=  771   783*  785=  786   791*  793=
              794   801*  803=  804   977*  980   980   983   992*  997  1003* 1010  1012  1013  1020 
             1053  1103= 1105  1105  1106  1106  1125= 1154= 1161= 1371= 1375  1379  1381  1383  1385 
             1388= 1388  1421= 1421  1421  1434= 1436  1482: 1493= 1516: 1527= 1594= 1596  1600  1602 
             1604  1606  1642= 1649  1650  1652  1656  1661  1670  1671  1672  1672  1673  1676  1677=
             1677  1685  1688  1689  1690  1691  1691  1694  1736= 1737  1737  1739= 1740  1740  1745=
             1746  1746  1747  1750  1755  1756  1756  1758  1758 
illegalno      49*  570   982  1218  1260  1451  1721  1817 
incharsleft   138*  396=  822=  822   859   865   884   932   961   973=  973 
incname      1099 
inc_name      449*  462   468 
index         447*  457   462   464   477*  492   494   500   504   509   513   517   521   525   534 
              541   545   550   557   562   569 
init_modul    477* 1263 
init_proc     446*  494   500   504   509   513   517   521   525   534   541   545   550   557   562 
inputsem      202*  250*
input_sem     176*  181*
insert_code  1487  1521 
int           270*  273*  604*  611   616*  646   652   653=  653   655   666   672   676   677=  677 
              679   680=  680   688   689=  689   691   692=  692 
integer        68*   74*   75*   76*   77*  151*  161*  182*  188*  196*  201*  270*  273*  289*  295*
              302*  313*  332*  343*  345*  447*  452*  455*  477*  576*  604*  616*  632*  783*  791*
              801*  829*  846*  977*  992* 1003* 1482  1511  1516 
int_pax_addr  219*  302*  303*
j             139* 1025= 1034= 1034  1038  1373= 1379  1381  1383  1385  1600= 1602= 1604= 1606= 1608=
             1612  1614  1643= 1658  1682= 1682  1685 
k             140* 1654= 1662  1666 
lam           199*  514 
lamsem        251*
lam_pri       515 
lam_sem_no    506   514   551  1116  1117  1117 
lam_size      515 
last           67*  598=  598   599   977*  980  1076= 1149= 1302=
lastchar      848*  853=  861=  869 
lastindex      54*   70* 1149 
lastword      141* 1170= 1588= 1589  1590= 1594 
leftbyte      142* 1650= 1652= 1662= 1668  1670  1676  1686  1689  1694 
level         188*  201*
linelength     52*   54*
link          461 
local_sem_table                                                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              230*
\f

feaoslst    81.05.08.   14.51.                                                    page    84

lock          387:  393:  595:  816:  971: 1075: 1130: 1145: 1288: 1298: 1323: 1333: 1378: 1380: 1382:
             1384: 1480: 1510: 1543: 1599: 1601: 1603: 1605: 1647:
locked       1048 
l_control    1302 
l_dte_adr    1307 
l_facilities 1309 
l_listen     1302 
m             628*  695=  698   699   700=  702   703   704=
macro        1488= 1490= 1522= 1524= 1544=
macroaddr     165*  165*  166*  166*  167*  167*  332*  334*
main_sem      229*
make_phead    312* 1325 
max           196*
maxbuf       1382: 1383= 1603: 1604 
maxbufsize     38*   77*  364   374 
maxbuftype     77* 1382  1603 
maxpos        620*  624*  640   644   664   726   741   752   765   769   769 
messbuf      1380: 1381= 1601: 1602  1647: 1649  1650  1652  1661  1670= 1671  1672= 1672  1673= 1676=
             1688  1689= 1690= 1691= 1691  1694=
messbufpool   101* 1156 
messbufsize    36*   74*  362   373  1645  1656  1685 
messbuftype    74*  101* 1380  1601  1647 
micro        1489= 1523=
minbuf       1378: 1379= 1599: 1600 
minbufsize     39*   76*  360   372 
minbuftype     76* 1378  1599 
min_rut_mess   62*
moduleno      143*  576*  580   583  1253= 1257  1257  1259  1263  1263  1436= 1437  1437  1438  1440 
             1441  1444  1450 
moduleready   576*  580=  585= 1263 
more         1007* 1022= 1026  1030=
m_bit        1337=
n1            479*  494   494 
n10           488*  545   545 
n11           489*  550   550 
n12           490*  557   562 
n2            480*  500   500 
n3            481*  504   504 
n4            482*  509   509 
n5            483*  513   513 
n6            484*  517   517   521 
n7            485*  525   525 
n8            486*  534   534 
n9            487*  541   541 
\f

feaoslst    81.05.08.   14.51.                                                    page    85

name           69*  448*  461  1134= 1150=
nc_addr       166*  337=
nc_sem_no    1122 
negative      634*  646=  657   843*  869=  870=  892   895=  906   915=  920=  926=  940   952 
netconnector  223*  527 
netc_locals   160*  528  1121= 1122=
netc_loc_sems                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              160*  230*
netc_mic_addr                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             1489  1523 
netc_pri      531   539 
netc_sem      177*  216*
netc_sem_no   497   528   536   551  1557 
netc_size     531   539 
net_addr      305=
newbase       409*  420=  423=  433=  440 
newm          628*  698=  700   702=  704 
next           68*  388=  396   397=  819   820=  820   972=  972 
nl           1071 
node_addr     307=
noofdig       629*  712=  717=  722=  726 
noofdigit     845*  916=  921=  927=  940   952 
noofmodules    40*  162* 1257  1437 
noofparams    144*  413=  426=  426   427   428   429   436   438=  438   460  1175= 1197  1228  1250 
             1255  1361  1373  1420  1433  1434  1583  1587  1629  1654  1713  1733  1745  1775  1781 
             1783  1785  1798  1825 
noofpos       630*  711=  716=  721=  737 
noofsemaphores                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
               41* 1199  1421  1422  1714  1739  1746  1800  1826  1827 
noparam        46* 1220  1231  1265  1722  1776  1819  1835 
no_listen     101* 1154 
no_pax_bufs    62* 1161 
nref          114* 1273  1275  1277  1278  1284  1285  1286  1288: 1295  1296  1297  1298: 1320  1321 
             1322  1323: 1331  1332  1333: 1348  1466  1468  1471  1477  1478  1480: 1507  1508  1510:
             1540  1541  1543: 1557 
nul           853   854 
oflow         261*
ok             55*  391   455*  462=  463   466=  466   469 
okl           454*  461=  466   471=
oldbase       145*  418=  432   442   609=  612  1230  1238 
op            175*  183*  190*
opbuf         387:  388   393:  394   595:  596   816:  817   971:  972   972  1075: 1076  1130: 1131 
             1145: 1146 
opbufpool      98* 1128  1141 
\f

feaoslst    81.05.08.   14.51.                                                    page    86

opbufsize      34*
opbuftype      64*   98*  387   393   595   816   971  1075  1130  1145 
open         1016  1039 
operatorsem  1097 
opinref       116*  387:  389   390   391   393:  816:  971: 1141  1143  1145:
opoutref      117*  595: 1069  1072  1074  1075: 1128  1129  1130: 1137 
opsem         122*  194*  200*  206*  256*  389   495   502   505   510   514   518   522   527   535 
              542   546   551   558   563  1072  1097= 1099 
opsysname    1134  1150 
op_code       313*  325  1306= 1338=
op_sem        211*  225*  239*  244*  249*
ord           401   652   747   748   877   877   878   900   900   901   949   949   951 
org           322=
osif          248*  505 
osif_pri      507 
osif_sem_no   505 
osif_size     507 
outchar       592*  763   771   786   794   804  1019  1019  1021  1052  1052  1054  1071  1574  1575 
             1597 
outdecimal    270*  469   569   583   604* 1020  1038  1053  1259  1444  1450  1596  1750 
outinteger    273*  611   616*  983   997  1215  1216  1577  1578  1579  1580  1612  1614  1813  1814 
outstring10   276*  570   779*  982  1055  1214  1218  1220  1231  1260  1265  1271  1346  1351  1362 
             1368  1424  1445  1451  1455  1464  1555  1560  1571  1630  1639  1703  1717  1721  1722 
             1773  1776  1812  1817  1819  1833  1834  1835 
outstring12   280*  468   789*
outstring20   283*  458   467   584   798*  996  1219  1237  1365  1398  1399  1400  1401  1402  1403 
             1404  1405  1406  1407  1408  1409  1410  1411  1412  1413  1414  1415  1593  1633  1636 
             1646  1749  1808  1818  1840 
own          1099 
p             314*  316   450*  461   462   471  1483: 1491  1492  1494  1517: 1525  1526  1528 
packet_type   320=
packextnode   342*  354= 1308  1492  1526 
packmacro     331*  339= 1488  1490  1491  1522  1524  1525  1544 
par           332*  336   337   338   343*  351 
params        161*  305   306   307   308   324   325   336   337   338   351   427=  428  1195  1235 
             1241  1253  1255  1280  1289  1296  1310  1332  1364  1371  1379  1381  1383  1385  1422 
             1422  1423  1423  1436  1473  1493  1494  1507  1527  1583  1584  1585  1587  1588  1632 
             1635  1642  1643  1662  1666  1711  1746  1746  1747  1750  1755  1756  1756  1758  1758 
             1780  1780  1781  1782  1783  1784  1785  1786  1796  1826  1826  1827  1827  1829  1830 
             1830  1831 
paxbufpool    102* 1163 
paxnet_e     1483  1517 
paxpooltype    62*  102*
pax_addr     1492= 1526=
\f

feaoslst    81.05.08.   14.51.                                                    page    87

pax_adr       303*  305   306   307   308   309 
pax_ncp_sem  1114  1115  1115 
pax_pool      528   535  1164  1273  1466 
pax_pool_sem  213*  228*
pax_sem_1     537  1112  1113  1113 
pax_sem_2     537  1110  1111  1111 
phead        1325 
point_rec      92*  170*
pool           62*   98*  100*  101*
port          252*
positions     270*  273*  604*  611   616*  763   765   766   767=  769 
pr             43*
prio          452*  464 
priority      319=
process         6*  174*  180*  186*  193*  199*  205*  210*  223*  238*  243*  248*  255*
processrec    450*
processref    461   471 
pu             42*  201*  514 
px_ncp       1114 
px_urec1     1110 
px_utrm1     1112 
que_sem       176*
q_bit        1303= 1336=
readchar      286*  399   811*  819=  862   886   934 
readinteger   289*  427   829*  965=
readok        154*  436   852=  879=
rec           189* 1488  1489  1522  1523  1544 
receiver      181*
ref          1105  1110  1112  1114  1116 
reference     119*
reg_addr      306=
remove       1441 
repeatchar    292*  963   969*
res           631*  731=  736=  736   739   746   747   748   749   754=
result        846*  867=  877=  878=  892   894=  900=  900   901=  901   906=  906   943=  943   944=
              944   945=  945   949=  949   951=  951   954   955=  956=  956   965 
retrans_max   182*
return       1137  1157  1704 
ric_first_val                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             1301  1302 
rightbyte     146* 1661= 1666= 1670  1676  1689  1694 
rut_con      1284 
rut_default  1322 
rut_format_1  318 
\f

feaoslst    81.05.08.   14.51.                                                    page    88

rut_ok       1285  1321 
rut_pack_type                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              320 
rut_prefix_type                                                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             1288 
rut_prio_0    319 
rut_rec      1320 
rut_rec_sem   218*
rut_trm_sem   217*
rut_trp_pdata                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             1323 
s             497   497   505   506   530   530   536   537   537   551   551   552  1012  1105= 1106 
             1110= 1111  1112= 1113  1114= 1115  1116= 1117  1121  1122  1156  1163  1164  1348  1421 
             1423  1557 
sem           124*  187*  240*  245*  496   496   496   497   497   497   501   501   502   505   505 
              506   510   514   518   522   528   528   529   530   530   535   535   536   537   537 
              542   546   551   551   552   552   553   553   553   553   558   563  1012  1013  1105 
             1106  1106  1110  1111  1111  1112  1113  1113  1114  1115  1115  1116  1117  1117  1121 
             1122  1156  1163  1164  1273  1348  1421  1421  1423  1423  1466  1557  1829  1830  1830 
             1831 
sem1          257*
sem2          257*
sem3          257*
sem4          257*
sem5          258*
sem6          258*
sem7          258*
sem8          258*
semaphore     110*  111* 1003*
semno         147* 1195= 1199  1199  1200  1200  1202  1203  1205  1711= 1714  1714  1716  1719  1719 
             1720  1796= 1800  1800  1801  1801  1803  1804  1806 
sempointer     93*  122*  123*  175*  177*  183*  190*  194*  200*  206*  211*  218*  225*  234*  239*
              244*  249*  251*  256*  257*
semvector       6* 1097 
send         1490  1524 
sensesem     1028  1273  1466  1804  1806 
setoflowmask  261* 1172 
sh            162*  457   462   464   580  1438  1440  1441 
shadow        162*
signal        389  1033  1042  1072  1164  1348  1557  1716  1720 
signs         840*
size          360   362   364   366   451*  460  1216  1592  1645  1814 
sp            640   763 
st            150*  460=  462  1167= 1255=
\f

feaoslst    81.05.08.   14.51.                                                    page    89

start         464 
state         321=
streamer      180*  501 
stream_no    1494= 1528=
stream_pri    502 
stream_rec    502   558 
stream_sem    177*
stream_sem_no                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              497   501   505 
stream_size   502 
stream_xmit   501   563 
streemsem     251*
system_vector                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
                6*
tab_sem       207*
tap           205*  518   522 
tap1_sem_no   522 
tapdte        238*  542 
tapnet        243*  546 
tap_dte_sem_no                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              542 
tap_net_sem_no                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              546 
tap_sem_no    518 
testbuf      1384: 1385= 1605: 1606 
testbufpool   100* 1203  1205 
testbufsize    37*   75*  366   375 
testbuftype    75*  100* 1384  1605 
testinterval  977*  985=  988= 1780  1781  1783  1785 
testmode      156*  994  1098= 1459= 1459 
testmodeout   295*  384   401   411   428   992*
testopen     1099 
testout      1100 
testsem      1003* 1737  1740  1756  1758 
text          276*  280*  283*  295*  779*  786   789*  794   798*  804   992*  996 
ticklength    196*
timeout        82*  193*  510 
timeoutsem    195*
timeout_sem   233*
timeout_sem_no                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              510   530   552 
time_out_unit                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              510 
tim_pri       511 
\f

feaoslst    81.05.08.   14.51.                                                    page    90

tim_size      511 
top_of_data   326=
to_link      1297  1508 
true          420   558   580   732   879   915   920   926   988  1022  1172 
tssup_sem_no 1121 
tss_route    1477  1540 
ts_addr       167*  338=
ts_pointer    176*  181*  187*  195*  202*  207*  214*  229*  240*  245*  250*  258*
ts_pointer_vector                                                <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              124*
ts_sem        111* 1105  1203  1716  1740  1756  1804 
ts_sem_total   41*  111* 1103 
t_sem        1003* 1016  1028  1042  1048 
u1           1129= 1143= 1208= 1284= 1295= 1320= 1331= 1577  1780=
u2            391  1209= 1277= 1285= 1321= 1471= 1578  1782=
u3           1210= 1286= 1296= 1322= 1332= 1477= 1507= 1540= 1579  1784=
u4           1211= 1278= 1297= 1478= 1508= 1541= 1580  1786=
unlink        471 
update       1487= 1521=
used          632*  637=  664=  752=  763   766   767 
user_field    325=
valparam       45* 1424  1833  1834 
version        28* 1100 
w             497   529   552  1013  1106= 1111= 1113= 1115= 1117= 1273  1421= 1423= 1466  1829  1830=
             1830  1831=
wait          390  1041  1074 
worksem       123* 1829= 1831 
writenl       298*  470   984   998  1045  1056  1065* 1139  1398  1399  1400  1401  1402  1403  1404 
             1405  1406  1407  1408  1409  1410  1411  1412  1413  1414  1446  1452  1581  1615  1751 
             1844 
write_sem     176*
wrsem         108*  390  1141 
wsem          106* 1074  1128 
x            1511:
xmitter       181*
y            1511:
z             128* 1099  1100  1511:
zeroes        634*  732=  739   749   751=
zone          128*
\f

feaoslst    81.05.08.   14.51.                                                    page    91

AND               25
ARRAY             13
BEGIN            135
CASE              11
CONST              5
DIV                9
DO                66
DOWNTO             3
ELSE              76
END              151
FOR               24
FORWARD           11
FUNCTION           9
IF               117
IN                14
MOD                8
NIL               16
NOT               11
OF                28
OR                13
OTHERWISE          6
PROCEDURE         26
RECORD             5
REPEAT             5
THEN             117
TO                21
TYPE               1
UNTIL              5
VAR               33
WHILE              4
WITH              14
\f

jg7  1981.05.08  14.52
 feaos program
81.05.08.      14.53.                         pascal80     version 1981.04.01


   name        headline beginline endline  appetite(words) 

   dte_pax_addr   303       305     310  :       8            
   make_phead     315       318     328  :      17            
   packmacro      334       336     340  :       6            
   packextnode    345       348     355  :      18            
   get_curbufty   359       361     377  :       2            
   getinput       382       384     404  :      21            
   getparams      409       411     443  :      25            
   init_proc      454       458     474  :      29            
   init_modul     479       493     573  :      60            
   moduleready    579       580     587  :      19            
   outchar        594       595     601  :       9            
   outdecimal     608       609     613  :      10            
   outinteger     620       637     774  :      47            
   outstring10    783       785     787  :      17            
   outstring12    791       793     795  :      17            
   outstring20    801       803     805  :      17            
   readchar       815       816     823  :      11            
   readinteger    838       852     966  :      17            
   repeatchar     970       971     974  :       8            
   testinterval   979       981     989  :      13            
   testmodeout    993       995    1000  :      18            
   testsem       1007      1011    1058  :      15            
   writenl       1068      1070    1077  :      11            
   alarm_opsys     28      1097    1848  :     924            

 code: 1 . 7698  = 17698 bytes


end of PASCAL80 compilation 

end
blocksread = 53
▶EOF◀