DataMuseum.dk

Presents historical artifacts from the history of:

RC3500

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

See our Wiki for more about RC3500

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦2cec58b4f⟧ TextFileVerbose

    Length: 142080 (0x22b00)
    Types: TextFileVerbose
    Names: »tsaoslst«

Derivation

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

TextFileVerbose

\f

tsaoslst    81.06.10.   12.29.                                                    page     1

   10    1          
   20    2          
   30    3           
\f

tsaoslst    81.06.10.   12.29.                                                    page     2

 1010    4        PROCESS alarm_opsys(VAR semvector: system_vector;
 1020    5          VAR evavector: appl_vector );
 1030    6          
 1040    7            (***************************************************
 1050    8            *
 1060    9            * function:    the test module is used to initialise buffers,
 1070   10            *              signal them to semaphores, and to write their
 1080   11            *              contents, when they have been handled by another
 1090   12            *
 1100   13            * externals:   none
 1110   14            *
 1120   15            * var params:  none
 1130   16            *
 1140   17            * semaphores:  the module sends to the system semaphore
 1150   18            *              "operatorsem".
 1160   19            *
 1170   20            *
 1180   21            * programmed may 1980 by wib and stb
 1190   22            *
 1200   23            ***************************************************)
 1210   24          
 1220   25        CONST
 1230   26          version = "vers  4.08 /";
 1240   27          
 1250   28          
 1260   29           
\f

tsaoslst    81.06.10.   12.29.                                                    page     3

 2010   30        CONST
 2020   31          opbufsize = 80; (* no. of bytes in buffers to the operator module *)
 2030   32            (***   bufs   ***)
 2040   33          messbufsize= 64; (*words*)
 2050   34          testbufsize= 120;
 2060   35          maxbufsize= 120;
 2070   36          minbufsize=  16;
 2080   37          noofmodules= 21;
 2090   38          noofsemaphores= ts_sem_total;
 2100   39          pu= 0; (* processing unit number *)
 2110   40          pr= -1; (* timeslicing priority *)
 2120   41          
 2130   42          valparam= "param val ";
 2140   43          noparam= " no param ";
 2150   44          alreadyexists= " already exists     ";
 2160   45          doesntexist= " doesn't exist      ";
 2170   46          illegalno= "illegal no";
 2180   47          createerror= "error in createcall ";
 2190   48          
 2200   49          linelength= 80;
 2210   50          firstindex= 6 + alfalength;
 2220   51          lastindex= firstindex + (linelength - 1);
 2230   52          ok= 0; (* result from operator *)
 2240   53          
 2250   54          
 2260   55        TYPE
 2270   56          
 2280   57            (*---- for alarmenv later  ------*)
 2290   58          
 2300   59          paxpooltype = pool no_pax_bufs OF min_rut_mess;
 2310   60          
 2320   61          opbuftype=
 2330   62          RECORD
 2340   63          !  first,
 2350   64          !  last,
 2360   65          !  next: integer;
 2370   66          !  name: alfa;
 2380   67          !  data: ARRAY (firstindex..lastindex) OF char
 2390   68          END;
 2400   69          
 2410   70            (***   bufs   ***)
 2420   71          messbuftype= ARRAY (1..messbufsize) OF integer;
 2430   72          testbuftype= ARRAY (1..testbufsize) OF integer;
 2440   73          minbuftype = ARRAY (1.. minbufsize) OF integer;
 2450   74          maxbuftype = ARRAY (1.. maxbufsize) OF integer;
 2460   75          
\f

tsaoslst    81.06.10.   12.29.                                                    page     4

 2470   76          createchtype=
 2480   77          RECORD
 2490   78          !  controlinfo, timeout: byte
 2500   79          END;
 2510   80          
 2520   81          atbuffer= ARRAY (0..1) OF byte;
 2530   82          
 2540   83          
 2550   84          alfa10= ARRAY (1..10) OF char;
 2560   85          alfa20= ARRAY (1..20) OF char;
 2570   86          
 2580   87            (* type necessary to compare sempointers *)
 2590   88          point_rec = RECORD
 2600   89                      !  a: sempointer;
 2610   90                      END;
 2620   91          
 2630   92        VAR
 2640   93            (*********  pools  *********)
 2650   94          opbufpool: pool 3 OF opbuftype;
 2660   95            (***   bufs   ***)
 2670   96          testbufpool: pool 12 OF testbuftype;
 2680   97          messbufpool: pool no_listen OF messbuftype;
 2690   98          paxbufpool : paxpooltype;
 2700   99          
 2710  100            (**********  semaphores  **********)
 2720  101          spool_sem,
 2730  102          countsem,    (* used by "t"-command *)
 2740  103          wsem,        (* buffers written by the operatormodule is
 2750  104                       returned here *)
 2760  105          wrsem        (* buffers with content read by the operator
 2770  106                       module is returned here *)
 2780  107          : semaphore;
 2790  108          ts_sem : ARRAY (1..ts_sem_total) OF semaphore;
 2800  109          
 2810  110            (**********  references  **********)
 2820  111          nref,
 2830  112          countref,    (* used by "t"-command *)
 2840  113          opinref,    (* ref. to buffer from operator *)
 2850  114          opoutref,   (* ref. to buffer to operator *)
 2860  115          cur           (* ref. to current buffer *)
 2870  116          : reference;
 2880  117          
 2890  118            (**********  pointers  **********)
 2900  119          spool_test_sem : sempointer;
 2910  120          opsem: sempointer;
 2920  121          worksem: sempointer;
\f

tsaoslst    81.06.10.   12.29.                                                    page     5

 2930  122          sem : ts_pointer_vector;
 2940  123          
 2950  124            (**********  zones  **********)
 2960  125          z: zone;
 2970  126          
 2980  127            (**********  char  **********)
 2990  128          command: char;   (* the first char the operator typed *)
 3000  129          
 3010  130          
 3020  131            (**********  integers  **********)
 3030  132          base,            (* number base for input and output *)
 3040  133          firstword,       (* used by "o"-command *)
 3050  134          i,
 3060  135          incharsleft,   (* no. of not yet read chars in opinbuffer *)
 3070  136          j,
 3080  137          k,
 3090  138          lastword,       (* used by "o"-command *)
 3100  139          leftbyte,       (* used by "p"-command *)
 3110  140          moduleno,       (* tested module *)
 3120  141          noofparams,     (* no. of params in operator line *)
 3130  142          oldbase,        (* used by the "b" command *)
 3140  143          rightbyte,      (* used by "p"-command *)
 3150  144          semno,           (* typed semaphore number *)
 3160  145          curbufsize,     (* in words *)
 3170  146          curbuftype,     (* 0 - 4 *)
 3180  147          st              (* storage requirements *)
 3190  148          : integer;
 3200  149          
 3210  150            (**********  booleans  **********)
 3220  151          readok,         (* indicates if the last call of readinteger
 3230  152                          yielded a result *)
 3240  153          testmode
 3250  154          : boolean;
 3260  155          
 3270  156            (**********  arrays  **********)
 3280  157          netc_locals : netc_loc_sems;
 3290  158          params: ARRAY(1..50) OF integer; (* holds parameters from operator *)
 3300  159          sh: ARRAY(1..noofmodules) OF shadow; (* ref. to process incarn. *)
 3310  160          
 3320  161            (********** param to use in create **********)
 3330  162          dc_addr: macroaddr := macroaddr(7,0,0);
 3340  163          nc_addr: macroaddr := macroaddr(7,5,0);
 3350  164          ts_addr: macroaddr := macroaddr(7,5,4);
 3360  165          
 3370  166            (*** auxiliary to compare sempointers ***)
 3380  167          ap,bp : point_rec;
\f

tsaoslst    81.06.10.   12.29.                                                    page     6

 3390  168          node_no : byte;
 3400  169          dte_addr : int_pax_addr := int_pax_addr(0,0,0,3);
 3410  170           
\f

tsaoslst    81.06.10.   12.29.                                                    page     7

 4010  171            (**********  externals **********)
 4020  172        PROCESS tssuper(
 4030  173          op: sempointer;
 4040  174          VAR ts_sem : !ts_pointer_vector);
 4050  175        EXTERNAL;
 4060  176        
 4070  177        PROCESS at_handler(
 4080  178          op: sempointer;
 4090  179          VAR
 4100  180          dc_addr,
 4110  181          ts_addr: !macroaddr;
 4120  182          VAR ts_sem : !ts_pointer_vector);
 4130  183        EXTERNAL;
 4140  184        
 4150  185        PROCESS vc_handler(
 4160  186          op: sempointer;
 4170  187          VAR
 4180  188          dc_addr,
 4190  189          ts_addr: !macroaddr;
 4200  190          VAR ts_sem : !ts_pointer_vector);
 4210  191        EXTERNAL;
 4220  192        
 4230  193        PROCESS timout(
 4240  194          opsem: sempointer;
 4250  195          VAR timeoutsem: !ts_pointer;
 4260  196          ticklength, max: integer);
 4270  197        EXTERNAL;
 4280  198        
 4290  199        PROCESS atconnector(
 4300  200          opsem: sempointer;
 4310  201          VAR
 4320  202          atcsem,
 4330  203          quesem : !ts_pointer;
 4340  204          VAR
 4350  205          athsem,
 4360  206          driversem,
 4370  207          timsem,
 4380  208          com_sem: !sempointer;
 4390  209          VAR
 4400  210          dc_addr,
 4410  211          ts_addr: !macroaddr;
 4420  212          ownaddr: integer;
 4430  213          channelno: byte);
 4440  214        EXTERNAL;
 4450  215        
 4460  216        PROCESS vcc(
\f

tsaoslst    81.06.10.   12.29.                                                    page     8

 4470  217          opsem: sempointer;
 4480  218          VAR
 4490  219          messem,
 4500  220          quesem : !ts_pointer;
 4510  221          VAR
 4520  222          vchsem,
 4530  223          lamsem,
 4540  224          timeoutsem,
 4550  225          com_sem: !sempointer;
 4560  226          VAR
 4570  227          dcaddr,
 4580  228          tsaddr: !macroaddr;
 4590  229          micaddr: integer;
 4600  230          channelno: byte);
 4610  231        EXTERNAL;
 4620  232        
 4630  233        PROCESS tsconnector(
 4640  234          opsem: sempointer;
 4650  235          VAR
 4660  236          tsssem,
 4670  237          dcsem,
 4680  238          ncsem,
 4690  239          lamsem,
 4700  240          timeoutsem,
 4710  241          com_sem: !sempointer;
 4720  242          VAR
 4730  243          inputsem,
 4740  244          semint1,
 4750  245          semint2,
 4760  246          semint3,
 4770  247          semint4: !ts_pointer);
 4780  248        EXTERNAL;
 4790  249        
 4800  250        PROCESS lam(
 4810  251          opsem: sempointer;
 4820  252          pu, level: integer;
 4830  253          VAR inputsem: !ts_pointer);
 4840  254        EXTERNAL;
 4850  255        
 4860  256        PROCESS vagt(
 4870  257          opsem: sempointer;
 4880  258          VAR sem: !ts_pointer_vector);
 4890  259        EXTERNAL;
 4900  260        
 4910  261        PROCESS dcmodule(
 4920  262          opsem: sempointer;
\f

tsaoslst    81.06.10.   12.29.                                                    page     9

 4930  263          VAR sem1,sem2,sem3,sem4: !sempointer;
 4940  264          VAR sem5,sem6,sem7,sem8: !ts_pointer);
 4950  265        EXTERNAL;
 4960  266        
 4970  267        PROCESS tap(
 4980  268          opsem: sempointer;
 4990  269          VAR tab_sem: !ts_pointer);
 5000  270        EXTERNAL;
 5010  271        
 5020  272        PROCESS ncsup(
 5030  273          opsem: sempointer;
 5040  274          VAR
 5050  275          main,
 5060  276          free,
 5070  277          done: !ts_pointer;
 5080  278          VAR
 5090  279          net_sem,
 5100  280          timeoutsem: !sempointer);
 5110  281        EXTERNAL;
 5120  282        
 5130  283        PROCESS dtesimulator (
 5140  284          test_sem : sempointer;
 5150  285          VAR
 5160  286          pax_pool_sem,
 5170  287          dte_sem : !ts_pointer;
 5180  288          VAR
 5190  289          netc_sem,
 5200  290          rut_trm_sem,
 5210  291          rut_rec_sem : !sempointer;
 5220  292          dte_addr : int_pax_addr
 5230  293          );
 5240  294        EXTERNAL;
 5250  295        
 5260  296        PROCESS netconnector (
 5270  297          global_timeout : byte;
 5280  298          test_sem : sempointer;
 5290  299          VAR
 5300  300          pax_pool_sem,
 5310  301          main_sem : !ts_pointer;
 5320  302          local_sem_table : netc_loc_sems;
 5330  303          VAR
 5340  304          com_pool_sem,
 5350  305          timeout_sem,
 5360  306          dte_sem : !sempointer
 5370  307          );
 5380  308        EXTERNAL;
\f

tsaoslst    81.06.10.   12.29.                                                    page    10

 5390  309        
 5400  310        PROCESS tapdte (
 5410  311          op_sem : sempointer;
 5420  312          VAR sem : ! ts_pointer );
 5430  313        EXTERNAL;
 5440  314        
 5450  315        PROCESS tapnet (
 5460  316          op_sem : sempointer;
 5470  317          VAR sem : !ts_pointer );
 5480  318        EXTERNAL;
 5490  319        
 5500  320        PROCESS testoutput (
 5510  321          insem,
 5520  322          opsem : sempointer );
 5530  323        EXTERNAL;
 5540  324        
 5550  325        
 5560  326        PROCEDURE setoflowmask( oflow: boolean);
 5570  327        EXTERNAL;
 5580  328        
 5590  329        PROCEDURE readram( VAR result:byte; index : integer);
 5600  330        EXTERNAL;
 5610  331        
 5620  332          (********** forwards **********)
 5630  333        
 5640  334        PROCEDURE getparams;
 5650  335        FORWARD;
 5660  336        
 5670  337        PROCEDURE outdecimal(int,positions: integer);
 5680  338        FORWARD;
 5690  339        
 5700  340        PROCEDURE outinteger(int,positions: integer);
 5710  341        FORWARD;
 5720  342        
 5730  343        PROCEDURE outstring10(text: alfa10);
 5740  344        FORWARD;
 5750  345        
 5760  346        PROCEDURE outstring12(text: alfa);
 5770  347        FORWARD;
 5780  348        
 5790  349        PROCEDURE outstring20(text: alfa20);
 5800  350        FORWARD;
 5810  351        
 5820  352        FUNCTION readchar: char;
 5830  353        FORWARD;
 5840  354        
\f

tsaoslst    81.06.10.   12.29.                                                    page    11

 5850  355        FUNCTION readinteger: integer;
 5860  356        FORWARD;
 5870  357        
 5880  358        PROCEDURE repeatchar;
 5890  359        FORWARD;
 5900  360        
 5910  361        PROCEDURE testmodeout (text: alfa20; i: integer);
 5920  362        FORWARD;
 5930  363        
 5940  364        PROCEDURE writenl;
 5950  365        FORWARD;
 5960  366         
\f

tsaoslst    81.06.10.   12.29.                                                    page    12

 6010  367        FUNCTION dte_pax_addr (i:integer): int_pax_addr;
 6020  368        VAR pax_adr : int_pax_addr;
 6030  369        BEGIN
 6040  370    1   ! pax_adr.net_addr := params(i);
 6050  371    2   ! pax_adr.reg_addr := params(i+1);
 6060  372    3   ! pax_adr.node_addr := params(i+2);
 6070  373    4   ! pax_adr.ext_addr := params(i+3);
 6080  374    5   ! dte_pax_addr := pax_adr;
 6090  375    6   END;
 6100  376        
 6110  377        PROCEDURE make_phead (
 6120  378          i : integer; op_code : byte;
 6130  379          VAR p : format_1_packet_header );
 6140  380        BEGIN
 6150  381    1   ! WITH p DO
 6160  382    2   !   BEGIN
 6170  383    3   !   ! format := rut_format_1;
 6180  384    4   !   ! priority := rut_prio_0;
 6190  385    5   !   ! packet_type := rut_pack_type;
 6200  386    6   !   ! state := 0;
 6210  387    7   !   ! org := dte_pax_addr(i);
 6220  388    8   !   ! dst := dte_pax_addr(i+3);
 6230  389    9   !   ! facility := params(9);
 6240  390   10   !   ! user_field := op_code *256 + params(2);
 6250  391   11   !   ! top_of_data := 0;
 6260  392   12   !   END;
 6270  393   13   END;
 6280  394         
\f

tsaoslst    81.06.10.   12.29.                                                    page    13

 7010  395        FUNCTION packmacro (
 7020  396          par:integer):macroaddr;
 7030  397        VAR
 7040  398          a:macroaddr;
 7050  399        BEGIN
 7060  400    1   ! a.dc_addr := params( par);
 7070  401    2   ! a.nc_addr := params( par+1);
 7080  402    3   ! a.ts_addr := params( par+2);
 7090  403    4   ! packmacro := a;
 7100  404    5   END;
 7110  405        
 7120  406        FUNCTION packextnode (
 7130  407          par:integer) : ext_pax_addr;
 7140  408        VAR
 7150  409          i:integer;
 7160  410          a:ext_pax_addr;
 7170  411        BEGIN
 7180  412    1   ! FOR i:=1 TO 6 DO
 7190  413    2   !   a(i):=0;
 7200  414    3   ! FOR i:=0 TO 2 DO
 7210  415    4   !   BEGIN
 7220  416    5   !   ! a(7+i):=params(par+i);
 7230  417    6   !   ! testout(z,"params      ", params(par+i));
 7240  418    7   !   END;
 7250  419    8   ! FOR i:= 10 TO 14 DO
 7260  420    9   !   a(i) := 0;
 7270  421   10   ! FOR i := 1 TO 14 DO
 7280  422   11   !   testout(z,"a           ", a(i));
 7290  423   12   ! packextnode := a;
 7300  424   13   END;
 7310  425         
\f

tsaoslst    81.06.10.   12.29.                                                    page    14

 8010  426        PROCEDURE get_curbuftype;
 8020  427        BEGIN
 8030  428    1   ! IF cur^.size < minbufsize THEN
 8040  429    2   !   curbuftype:= 0 ELSE
 8050  430    3   !   IF cur^.size < messbufsize THEN
 8060  431    4   !     curbuftype:= 1 ELSE
 8070  432    5   !     IF cur^.size < maxbufsize THEN
 8080  433    6   !       curbuftype:= 2 ELSE
 8090  434    7   !       IF cur^.size < testbufsize THEN
 8100  435    8   !         curbuftype:= 3 ELSE
 8110  436    9   !         curbuftype:= 4;
 8120  437   10   ! 
 8130  438   11   ! CASE curbuftype OF
 8140  439   12   ! ! 0: curbufsize:= 0;
 8150  440   13   ! ! 1: curbufsize:= minbufsize;
 8160  441   14   ! ! 2: curbufsize:= messbufsize;
 8170  442   15   ! ! 3: curbufsize:= maxbufsize;
 8180  443   16   ! ! 4: curbufsize:= testbufsize;
 8190  444   17   ! END;
 8200  445   18   END;
 8210  446         
\f

tsaoslst    81.06.10.   12.29.                                                    page    15

 9010  447        PROCEDURE getinput;
 9020  448            (* reads input from console into opinref^ *)
 9030  449        BEGIN
 9040  450    1   ! 
 9050  451    2   ! testmodeout ("getinput called     ",0);
 9060  452    3   ! 
 9070  453    4   ! REPEAT
 9080  454    5   ! ! LOCK opinref AS opbuf: opbuftype DO
 9090  455    6   ! !   opbuf.next:= firstindex;
 9100  456    7   ! ! signal (opinref, opsem^);
 9110  457    8   ! ! wait (opinref, wrsem);
 9120  458    9   ! UNTIL opinref^.u2= ok (* 0*);
 9130  459   10   ! 
 9140  460   11   ! LOCK opinref AS opbuf: opbuftype DO
 9150  461   12   !   WITH opbuf DO
 9160  462   13   !     BEGIN
 9170  463   14   !     ! incharsleft:= next - first;
 9180  464   15   !     ! next:= firstindex;
 9190  465   16   !     END;
 9200  466   17   ! command:= readchar;
 9210  467   18   ! 
 9220  468   19   ! testmodeout ("command read:       ",ord(command));
 9230  469   20   ! 
 9240  470   21   ! getparams;
 9250  471   22   END (* getinput *);
 9260  472         
\f

tsaoslst    81.06.10.   12.29.                                                    page    16

10010  473        PROCEDURE getparams;
10020  474            (* reads integer parameters *)
10030  475        VAR newbase: boolean;
10040  476        BEGIN
10050  477    1   ! testmodeout ("getparams called    ",0);
10060  478    2   ! 
10070  479    3   ! noofparams:= 0;
10080  480    4   ! 
10090  481    5   ! IF command IN (."a","b","c","d","e","f","k","n","o","p","s","t","w","x".)
10100  482    6   !   THEN
10110  483    7   !   BEGIN (* change to decimal *)
10120  484    8   !   ! oldbase:= base;
10130  485    9   !   ! base:= 10;
10140  486   10   !   ! newbase:= true;
10150  487   11   !   END
10160  488   12   ! ELSE
10170  489   13   !   newbase:= false;
10180  490   14   ! 
10190  491   15   ! REPEAT
10200  492   16   ! ! noofparams:= noofparams + 1;
10210  493   17   ! ! params(noofparams):= readinteger;
10220  494   18   ! ! testmodeout ("parameter read:     ",params(noofparams));
10230  495   19   ! ! IF (noofparams=1) THEN
10240  496   20   ! !   IF command IN (."f","p".) THEN
10250  497   21   ! !     BEGIN (* change to old *)
10260  498   22   ! !     ! base:= oldbase;
10270  499   23   ! !     ! newbase:= false;
10280  500   24   ! !     END;
10290  501   25   ! ! 
10300  502   26   ! UNTIL (NOT readok) OR (noofparams= 50);
10310  503   27   ! 
10320  504   28   ! noofparams:= noofparams - 1;
10330  505   29   ! 
10340  506   30   ! IF newbase THEN
10350  507   31   !     (* change back to old base *)
10360  508   32   !   base:= oldbase;
10370  509   33   END (* getparams *);
10380  510         
\f

tsaoslst    81.06.10.   12.29.                                                    page    17

11010  511        PROCEDURE init_proc(
11020  512          index: integer;
11030  513          name,
11040  514          inc_name : alfa;
11050  515          p    : processrec;
11060  516          size,
11070  517          prio : integer);
11080  518        VAR
11090  519          okl,
11100  520          ok   : integer;
11110  521        BEGIN
11120  522    1   ! IF NOT nil(sh(index)) THEN
11130  523    2   !   outstring20(alreadyexists) ELSE
11140  524    3   !   BEGIN
11150  525    4   !   ! IF noofparams<2 THEN st:= size;
11160  526    5   !   ! okl:= link(name,p.processref^);
11170  527    6   !   ! ok:= create(inc_name,p,sh(index),st);
11180  528    7   !   ! IF ok=0 THEN
11190  529    8   !   !   start(sh(index),prio) ELSE
11200  530    9   !   !   BEGIN
11210  531   10   !   !   ! ok:= ok*100+okl;
11220  532   11   !   !   ! outstring20(createerror);
11230  533   12   !   !   ! outstring12(inc_name);
11240  534   13   !   !   ! outdecimal(ok,5);
11250  535   14   !   !   ! writenl;
11260  536   15   !   !   ! okl:= unlink(p.processref^);
11270  537   16   !   !   END;
11280  538   17   !   END;
11290  539   18   END;
11300  540         
\f

tsaoslst    81.06.10.   12.29.                                                    page    18

12010  541        PROCEDURE init_modul(index: integer);
12020  542        CONST
12030  543          n1 = "tssupervisor";
12040  544          n2 = "at_handler  ";
12050  545          n3 = "vc_handler  ";
12060  546          n4 = "timout      ";
12070  547          n5 = "atconnector ";
12080  548          n6 = "vcatc       ";
12090  549          n7 = "tsconnector ";
12100  550          n8 = "atvagtsim   ";
12110  551          n9 = "lam         ";
12120  552          n10= "tap         ";
12130  553          n11= "dcmodule    ";
12140  554          n13= "ncsupervisor";
12150  555          n14= "vcitc       ";
12160  556          n15= "itvagtsim   ";
12170  557          n16= "alc         ";
12180  558          n17= "netconnector";
12190  559          n18= "dtesimulator";
12200  560          n19= "tapdte      ";
12210  561          n20= "tapnet      ";
12220  562          n21= "testoutput  ";
12230  563        BEGIN
12240  564    1   ! CASE index OF
12250  565    2   ! ! 1: (* tssup *)
12260  566    3   ! !   init_proc(index, n1, n1,
12270  567    4   ! !   tssuper( opsem, sem),
12280  568    5   ! !   tss_size,tss_pri);
12290  569    6   ! ! 2: (* ath *)
12300  570    7   ! !   init_proc(index, n2, n2,
12310  571    8   ! !   at_handler( opsem, dc_addr, ts_addr, sem),
12320  572    9   ! !   ath_size,ath_pri);
12330  573   10   ! ! 3: (* vch *)
12340  574   11   ! !   init_proc(index, n3, n3,
12350  575   12   ! !   vc_handler( opsem, dc_addr, ts_addr, sem),
12360  576   13   ! !   vch_size,vch_pri);
12370  577   14   ! ! 4: (* timeout *)
12380  578   15   ! !   init_proc(index, n4, n4,
12390  579   16   ! !   timout( opsem, sem(timeout_sem_no), time_out_unit, 40),
12400  580   17   ! !   tim_size,tim_pri);
12410  581   18   ! ! 5: (* atc *)
12420  582   19   ! !   init_proc(index, n5, n5,
12430  583   20   ! !   atconnector( opsem, sem(atc_sem_no), sem(atc_sem_no+1),
12440  584   21   ! !   sem(ath_sem_no).s, sem(lam_sem_no).s, sem(timeout_sem_no).s,
12450  585   22   ! !   sem(com_pool).w, dc_addr, ts_addr, 257, 7),
12460  586   23   ! !   atc_size,atc_pri);
\f

tsaoslst    81.06.10.   12.29.                                                    page    19

12470  587   24   ! ! 6: (* vcatc *)
12480  588   25   ! !   init_proc(index, n6, n6,
12490  589   26   ! !   vcc( opsem, sem(vcc_sem_no), sem(vcc_sem_no+1),
12500  590   27   ! !   sem(vch_sem_no).s, sem(vas_sem_no).s, sem(timeout_sem_no).s,
12510  591   28   ! !   sem(com_pool).w, dc_addr, ts_addr, 63, 2),
12520  592   29   ! !   vac_size, vcc_pri);
12530  593   30   ! ! 7: (* tsc *)
12540  594   31   ! !   init_proc(index, n7, n7,
12550  595   32   ! !   tsconnector( opsem, sem(tssup_sem_no).s,
12560  596   33   ! !   sem(dc_sem_no).s,
12570  597   34   ! !   sem(nc_sem_no).s, sem(lam_sem_no).s, sem(timeout_sem_no).s,
12580  598   35   ! !   sem(com_pool).w, sem(netc_sem_no),
12590  599   36   ! !   sem(pax_sem_2), sem(pax_sem_1),
12600  600   37   ! !   sem(pax_ncp_sem), sem(dte_sem_no)),
12610  601   38   ! !   tsc_size, tsc_pri);
12620  602   39   ! ! 8: (* atvagtsim *)
12630  603   40   ! !   init_proc(index, n8, n8,
12640  604   41   ! !   vagt( opsem, sem),
12650  605   42   ! !   vas_size, vc_sim_pri);
12660  606   43   ! ! 9: (* lam *)
12670  607   44   ! !   init_proc(index, n9, n9,
12680  608   45   ! !   lam( opsem, pu, 5, sem(lam_sem_no)),
12690  609   46   ! !   lam_size, 1);
12700  610   47   ! ! 10: (* tap *)
12710  611   48   ! !   init_proc(index, n10, n10,
12720  612   49   ! !   tap( opsem, sem(tap_sem_no)),
12730  613   50   ! !   512, 0);
12740  614   51   ! ! 11: (* dc *)
12750  615   52   ! !   init_proc(index, n11, n11,
12760  616   53   ! !   dcmodule( opsem, sem(lam_sem_no).s, sem(netc_sem_no).s,
12770  617   54   ! !   sem(com_pool).w, sem(timeout_sem_no).s,
12780  618   55   ! !   sem(dc_sem_no), sem(dc_int1), sem(dc_int2), sem(dc_int3)),
12790  619   56   ! !   dc_sim_size, dc_sim_pri);
12800  620   57   ! ! 12: (* tap01 *)
12810  621   58   ! !   init_proc(index, n10, "tap01       ",
12820  622   59   ! !   tap ( opsem, sem(tap1_sem_no)),
12830  623   60   ! !   512, 0);
12840  624   61   ! ! 13: (* ncsupervisor *)
12850  625   62   ! !   init_proc(index, n13, n13,
12860  626   63   ! !   ncsup( opsem, sem(nc_sem_no), sem(ncsup_int1), sem(ncsup_int2),
12870  627   64   ! !   sem(netc_sem_no).s, sem(timeout_sem_no).s),
12880  628   65   ! !   nc_sup_size, tss_pri);
12890  629   66   ! ! 14: (* vcitc *)
12900  630   67   ! !   init_proc(index, n14, n14,
12910  631   68   ! !   vcc( opsem, sem(vcc_sem_no+2), sem(vcc_sem_no+3),
12920  632   69   ! !   sem(vch_sem_no).s, sem(vis_sem_no).s, sem(timeout_sem_no).s,
\f

tsaoslst    81.06.10.   12.29.                                                    page    20

12930  633   70   ! !   sem(com_pool).w, dc_addr, ts_addr, 64, 3),
12940  634   71   ! !   vic_size, vcc_pri);
12950  635   72   ! ! 15: (* itvagtsim *)
12960  636   73   ! !   init_proc(index, n15, n15,
12970  637   74   ! !   vagt( opsem, sem),
12980  638   75   ! !   vis_size, vc_sim_pri);
12990  639   76   ! ! 17: (* netconnector *)
13000  640   77   ! !   init_proc ( index, n17, n17,
13010  641   78   ! !   netconnector( glob_timeout, spool_test_sem,
13020  642   79   ! !   sem( pax_pool),sem( netc_sem_no), netc_locals,
13030  643   80   ! !   sem( com_pool).w,
13040  644   81   ! !   sem( timeout_sem_no).s, sem( dte_sem_no).s),
13050  645   82   ! !   netc_size, netc_pri);
13060  646   83   ! ! 
13070  647   84   ! ! 18: (* dtesimulator *)
13080  648   85   ! !   init_proc ( index, n18, n18,
13090  649   86   ! !   dtesimulator ( spool_test_sem, sem( pax_pool), sem(dte_sem_no),
13100  650   87   ! !   sem( netc_sem_no).s,
13110  651   88   ! !   sem( pax_sem_1).s, sem( pax_sem_2).s,
13120  652   89   ! !   dte_addr),
13130  653   90   ! !   netc_size, netc_pri);
13140  654   91   ! ! 19: (* tapdte *)
13150  655   92   ! !   init_proc ( index, n19, n19,
13160  656   93   ! !   tapdte ( opsem, sem(tap_dte_sem_no)),
13170  657   94   ! !   512,0);
13180  658   95   ! ! 20: (* tapnet *)
13190  659   96   ! !   init_proc ( index, n20, n20,
13200  660   97   ! !   tapnet ( opsem, sem(tap_net_sem_no)),
13210  661   98   ! !   512,0);
13220  662   99   ! ! 
13230  663  100   ! ! 21: (* testoutput *)
13240  664  101   ! !   init_proc ( index, n21, n21,
13250  665  102   ! !   testoutput ( spool_test_sem, opsem),
13260  666  103   ! !   512,0);
13270  667  104   ! ! 
13280  668  105   ! ! 
13290  669  106   ! ! 
13300  670  107   ! ! OTHERWISE
13310  671  108   ! ! BEGIN
13320  672  109   ! ! ! outdecimal(index,4);
13330  673  110   ! ! ! outstring10(illegalno);
13340  674  111   ! ! END;
13350  675  112   ! END (* case *)
13360  676  113   END;
13370  677         
\f

tsaoslst    81.06.10.   12.29.                                                    page    21

14010  678        FUNCTION moduleready(moduleno: integer): boolean;
14020  679            (* tests if an incarnation of the module is existing
14030  680            and writes an errormessage if so *)
14040  681        BEGIN
14050  682    1   ! IF nil( sh( moduleno) ) THEN moduleready:=true
14060  683    2   ! ELSE
14070  684    3   !   BEGIN  (* module is already existing *)
14080  685    4   !   ! outdecimal(moduleno,4);
14090  686    5   !   ! outstring20(alreadyexists);
14100  687    6   !   ! moduleready:=false;
14110  688    7   !   END;
14120  689    8   END (* module ready *);
14130  690        
14140  691        
14150  692         
\f

tsaoslst    81.06.10.   12.29.                                                    page    22

15010  693        PROCEDURE outchar(ch:char);
15020  694            (* writes ch into the output buffer *)
15030  695        BEGIN
15040  696    1   ! LOCK opoutref AS opbuf: opbuftype DO
15050  697    2   !   WITH opbuf DO
15060  698    3   !     BEGIN
15070  699    4   !     ! last:= last + 1;
15080  700    5   !     ! data (last):= ch;
15090  701    6   !     END;
15100  702    7   END (* outchar *);
15110  703         
\f

tsaoslst    81.06.10.   12.29.                                                    page    23

16010  704        PROCEDURE outdecimal (int, positions: integer);
16020  705            (* writes the integer "int" decimally into opbuf starting
16030  706            at "last", which is updated accordingly *)
16040  707          
16050  708        BEGIN
16060  709    1   ! oldbase:= base;
16070  710    2   ! base:= 10;
16080  711    3   ! outinteger(int,positions);
16090  712    4   ! base:= oldbase;
16100  713    5   END (* outdecimal *);
16110  714         
\f

tsaoslst    81.06.10.   12.29.                                                    page    24

17010  715        PROCEDURE outinteger(int,positions:integer);
17020  716            (* writes the integer "int" into opbuf starting at
17030  717            "last", which is updated accordingly *)
17040  718        CONST
17050  719          maxpos = 20; (* max number of positions in layout *)
17060  720          
17070  721        VAR
17080  722          bits: ARRAY(0..15) OF bit;
17090  723          digits:ARRAY(1..maxpos) OF char;
17100  724          curdigit, (* current pos. in digits-array to be filled out *)
17110  725          curpos,   (* cur. pos. in the nunber being computed *)
17120  726          h, i,
17130  727          m, newm,
17140  728          noofdig,  (* no. of digits in the resulting number *)
17150  729          noofpos,  (* no. of pos. from bits-array for one number *)
17160  730          res,      (* resulting number *)
17170  731          used: integer;
17180  732          
17190  733          negative, zeroes: boolean;
17200  734          
17210  735        BEGIN
17220  736    1   ! used:= 1;
17230  737    2   ! 
17240  738    3   !   (* first we initialise the digits array *)
17250  739    4   ! FOR i:=1 TO maxpos DO digits(i):=sp;
17260  740    5   ! 
17270  741    6   ! IF base= 10 THEN
17280  742    7   !   BEGIN
17290  743    8   !   ! i:=maxpos;
17300  744    9   !   ! 
17310  745   10   !   ! negative:= int<0;
17320  746   11   !   ! 
17330  747   12   !   ! REPEAT
17340  748   13   !   ! !   (* now we unpack the digits backwards and put them
17350  749   14   !   ! !   into the digits array *)
17360  750   15   !   ! ! 
17370  751   16   !   ! ! digits(i):= chr (abs(int MOD base) + ord("0"));
17380  752   17   !   ! ! int:=int DIV base;
17390  753   18   !   ! ! i:=i-1;
17400  754   19   !   ! UNTIL (i=1) OR (int=0);
17410  755   20   !   ! 
17420  756   21   !   ! IF negative THEN
17430  757   22   !   !   BEGIN
17440  758   23   !   !   ! digits(i):="-";
17450  759   24   !   !   ! i:=i-1;
17460  760   25   !   !   END;
\f

tsaoslst    81.06.10.   12.29.                                                    page    25

17470  761   26   !   ! 
17480  762   27   !   ! used:=maxpos-i;
17490  763   28   !   ! 
17500  764   29   !   ! IF int <> 0 THEN digits(1):= "*";
17510  765   30   !   END (* if base= 10 *)
17520  766   31   !   
17530  767   32   ! ELSE (* base= 2, 8, or 16 *)
17540  768   33   !   BEGIN
17550  769   34   !   !   (* initialise bits-array *)
17560  770   35   !   ! IF int>=0 THEN
17570  771   36   !   !   BEGIN
17580  772   37   !   !   ! FOR i:= 15 DOWNTO 1 DO
17590  773   38   !   !   !   BEGIN
17600  774   39   !   !   !   ! bits(i):= int MOD 2;
17610  775   40   !   !   !   ! int:= int DIV 2;
17620  776   41   !   !   !   END;
17630  777   42   !   !   ! bits(0):= int MOD 2;
17640  778   43   !   !   ! int:= int DIV 2;
17650  779   44   !   !   END
17660  780   45   !   ! ELSE
17670  781   46   !   !     (* int<0 *)
17680  782   47   !   !   BEGIN
17690  783   48   !   !   !   (* subtract abs(int) from 1111111...1 *)
17700  784   49   !   !   ! FOR i:= 15 DOWNTO 1 DO
17710  785   50   !   !   !   BEGIN
17720  786   51   !   !   !   ! bits(i):= 1+(int MOD 2);
17730  787   52   !   !   !   ! int:= int DIV 2;
17740  788   53   !   !   !   END;
17750  789   54   !   !   ! bits(0):= 1+(int MOD 2);
17760  790   55   !   !   ! int:= int DIV 2;
17770  791   56   !   !   ! 
17780  792   57   !   !   !   (* add 1 *)
17790  793   58   !   !   ! m:= 1;
17800  794   59   !   !   ! FOR i:= 15 DOWNTO 1 DO
17810  795   60   !   !   !   BEGIN
17820  796   61   !   !   !   ! newm:= (bits(i)+m) DIV 2;
17830  797   62   !   !   !   ! bits(i):= (bits(i)+m) MOD 2;
17840  798   63   !   !   !   ! m:= newm;
17850  799   64   !   !   !   END;
17860  800   65   !   !   ! newm:= (bits(0)+m) DIV 2;
17870  801   66   !   !   ! bits(0):= (bits(0)+m) MOD 2;
17880  802   67   !   !   ! m:= newm;
17890  803   68   !   !   END (*int<0*);
17900  804   69   !   ! 
17910  805   70   !   !   (* compute digits-array *)
17920  806   71   !   ! CASE base OF
\f

tsaoslst    81.06.10.   12.29.                                                    page    26

17930  807   72   !   ! ! 2: BEGIN
17940  808   73   !   ! !   ! noofpos:= 1;
17950  809   74   !   ! !   ! noofdig:= 16;
17960  810   75   !   ! !   END;
17970  811   76   !   ! ! 
17980  812   77   !   ! ! 8: BEGIN
17990  813   78   !   ! !   ! noofpos:= 3;
18000  814   79   !   ! !   ! noofdig:= 6;
18010  815   80   !   ! !   END;
18020  816   81   !   ! ! 
18030  817   82   !   ! ! 16: BEGIN
18040  818   83   !   ! !   ! noofpos:= 4;
18050  819   84   !   ! !   ! noofdig:= 4;
18060  820   85   !   ! !   END;
18070  821   86   !   ! END (* case *);
18080  822   87   !   ! 
18090  823   88   !   ! curdigit:= maxpos -noofdig +1;
18100  824   89   !   ! 
18110  825   90   !   ! IF base= 8
18120  826   91   !   !   THEN curpos:= 3
18130  827   92   !   ! ELSE curpos:= 1;
18140  828   93   !   ! res:= 0;
18150  829   94   !   ! zeroes:= true;
18160  830   95   !   ! 
18170  831   96   !   ! FOR h:= 0 TO 15 DO
18180  832   97   !   !   BEGIN
18190  833   98   !   !   ! res:= res*2 + bits(h);
18200  834   99   !   !   ! IF curpos= noofpos THEN
18210  835  100   !   !   !   BEGIN (* time to fill out a pos. in digits-array *)
18220  836  101   !   !   !   ! IF zeroes AND (res=0) THEN
18230  837  102   !   !   !   !   BEGIN
18240  838  103   !   !   !   !   ! IF curdigit=maxpos
18250  839  104   !   !   !   !   !   THEN digits(curdigit):= "0"
18260  840  105   !   !   !   !   !     (*else digits (curdigit):= " "*);
18270  841  106   !   !   !   !   END
18280  842  107   !   !   !   ! ELSE
18290  843  108   !   !   !   !   IF res<=9
18300  844  109   !   !   !   !     THEN digits(curdigit):= chr (res + ord ("0"))
18310  845  110   !   !   !   !   ELSE digits(curdigit):= chr (res + ord ("7"));
18320  846  111   !   !   !   ! IF (res<>0) AND zeroes THEN
18330  847  112   !   !   !   !   BEGIN
18340  848  113   !   !   !   !   ! zeroes:= false;
18350  849  114   !   !   !   !   ! used:= maxpos - curdigit + 1;
18360  850  115   !   !   !   !   END;
18370  851  116   !   !   !   ! res:= 0;
18380  852  117   !   !   !   ! curpos:= 0;
\f

tsaoslst    81.06.10.   12.29.                                                    page    27

18390  853  118   !   !   !   ! curdigit:= curdigit + 1;
18400  854  119   !   !   !   END;
18410  855  120   !   !   ! curpos:= curpos + 1;
18420  856  121   !   !   END;
18430  857  122   !   END (* base= 2, 8, of 16 *);
18440  858  123   ! 
18450  859  124   ! IF positions<used THEN outchar(sp);
18460  860  125   ! 
18470  861  126   ! IF (NOT (positions IN (. 1 .. maxpos .)) )
18480  862  127   !   OR (positions < used) THEN
18490  863  128   !   positions:=used;
18500  864  129   ! 
18510  865  130   ! FOR i:=maxpos+1-positions TO maxpos DO
18520  866  131   !   BEGIN
18530  867  132   !   ! outchar( digits(i) );
18540  868  133   !   END
18550  869  134   !   
18560  870  135   END (* out integer *);
18570  871        
18580  872        
18590  873         
\f

tsaoslst    81.06.10.   12.29.                                                    page    28

19010  874        PROCEDURE outstring10(text: alfa10);
19020  875            (* writes the text into opbuf starting at outputpointer
19030  876            which is updated accordingly *)
19040  877        VAR
19050  878          i: integer;
19060  879        BEGIN
19070  880    1   ! FOR i:=1 TO 10 DO
19080  881    2   !   outchar( text(i) );
19090  882    3   END (* out string 10 *);
19100  883        
19110  884        PROCEDURE outstring12(text: alfa);
19120  885        VAR
19130  886          i: integer;
19140  887        BEGIN
19150  888    1   ! FOR i:=1 TO 12 DO
19160  889    2   !   outchar(text(i));
19170  890    3   END;
19180  891         
\f

tsaoslst    81.06.10.   12.29.                                                    page    29

20010  892        PROCEDURE outstring20(text: alfa20);
20020  893            (* analogue to outstring10 *)
20030  894        VAR
20040  895          i: integer;
20050  896        BEGIN
20060  897    1   ! FOR i:=1 TO 20 DO
20070  898    2   !   outchar( text(i) );
20080  899    3   END (* out string 20 *);
20090  900        
20100  901        
20110  902        
20120  903         
\f

tsaoslst    81.06.10.   12.29.                                                    page    30

21010  904        FUNCTION readchar: char;
21020  905            (* reads the next char from opinref^.
21030  906            next is incremented and charsleft is
21040  907            decremented *)
21050  908        BEGIN
21060  909    1   ! LOCK opinref AS opbuf: opbuftype DO
21070  910    2   !   WITH opbuf DO
21080  911    3   !     BEGIN
21090  912    4   !     ! readchar:= data(next);
21100  913    5   !     ! next:= next + 1;
21110  914    6   !     END;
21120  915    7   ! incharsleft:=incharsleft-1;
21130  916    8   END (* readchar *);
21140  917        
21150  918        
21160  919        
21170  920         
\f

tsaoslst    81.06.10.   12.29.                                                    page    31

22010  921        FUNCTION readinteger : integer;
22020  922            (* reads the next integer from opinref^ starting
22030  923            at "inputpoint". upon return "inputpoint" will be
22040  924            the position just after the last char read.
22050  925            
22060  926            the global boolean "readok" will be true if an
22070  927            integer was read and false otherwise *)
22080  928          
22090  929        CONST
22100  930          digits = (. "0" .. "9" .);
22110  931          hexdigits = (. "a" .. "f" .);
22120  932          signs =  (. "+" , "-" .);
22130  933          
22140  934        VAR
22150  935          negative, digit: boolean;
22160  936          
22170  937          curdigit, noofdigit,
22180  938          result: integer;
22190  939          
22200  940          ch,lastchar: char;
22210  941          
22220  942          
22230  943        BEGIN
22240  944    1   ! readok:=false;
22250  945    2   ! lastchar:=nul;
22260  946    3   ! ch:=nul;
22270  947    4   ! digit:=false;
22280  948    5   ! 
22290  949    6   !   (* now skip until a digit is encountered *)
22300  950    7   ! 
22310  951    8   ! IF incharsleft > 0 THEN
22320  952    9   !   REPEAT
22330  953   10   !   ! lastchar:=ch;
22340  954   11   !   ! ch:=readchar;
22350  955   12   !   ! digit:= (ch IN digits) OR
22360  956   13   !   ! ((base= 16) AND (ch IN hexdigits))
22370  957   14   !   UNTIL digit OR (incharsleft<=0);
22380  958   15   ! 
22390  959   16   ! result:=0;
22400  960   17   ! IF base= 10 THEN
22410  961   18   !   negative:= lastchar= "-"
22420  962   19   ! ELSE negative:= false;
22430  963   20   ! 
22440  964   21   ! 
22450  965   22   ! IF digit THEN
22460  966   23   !   BEGIN
\f

tsaoslst    81.06.10.   12.29.                                                    page    32

22470  967   24   !   ! IF ch IN digits
22480  968   25   !   !   THEN result:= ord (ch) - ord ("0")
22490  969   26   !   ! ELSE result:= ord (ch) - 87 (*ord ("W")*);
22500  970   27   !   ! readok:=true;
22510  971   28   !   END;
22520  972   29   ! 
22530  973   30   ! IF base=10 THEN
22540  974   31   !   BEGIN
22550  975   32   !   ! WHILE digit AND (incharsleft>0) DO
22560  976   33   !   !   BEGIN (* read the digits *)
22570  977   34   !   !   ! ch:= readchar;
22580  978   35   !   !   ! 
22590  979   36   !   !   ! digit:= (ch IN digits) OR
22600  980   37   !   !   ! ((base= 16) AND (ch IN hexdigits));
22610  981   38   !   !   ! IF digit THEN
22620  982   39   !   !   !   BEGIN
22630  983   40   !   !   !   ! IF negative AND (result=3276) AND (ch="8")
22640  984   41   !   !   !   !   THEN BEGIN
22650  985   42   !   !   !   !   ! result:= -32768;
22660  986   43   !   !   !   !   ! negative:= false;
22670  987   44   !   !   !   !   END
22680  988   45   !   !   !   ! ELSE
22690  989   46   !   !   !   !   BEGIN
22700  990   47   !   !   !   !   ! IF ch IN digits
22710  991   48   !   !   !   !   !   THEN result:= result*base+(ord(ch)-ord("0"))
22720  992   49   !   !   !   !   ! ELSE result:= result*base+(ord(ch)-87(*ord("W")*));
22730  993   50   !   !   !   !   END;
22740  994   51   !   !   !   END;
22750  995   52   !   !   END (* while *);
22760  996   53   !   ! 
22770  997   54   !   ! IF negative THEN result:= - result;
22780  998   55   !   ! 
22790  999   56   !   END (* base= 10 *)
22800 1000   57   !   
22810 1001   58   ! ELSE
22820 1002   59   !   BEGIN (* base= 2, 8, or 16 *)
22830 1003   60   !   ! 
22840 1004   61   !   ! CASE base OF
22850 1005   62   !   ! ! 2:BEGIN
22860 1006   63   !   ! !   ! IF ch="1" THEN negative:= true;
22870 1007   64   !   ! !   ! noofdigit:= 16;
22880 1008   65   !   ! !   END;
22890 1009   66   !   ! ! 
22900 1010   67   !   ! ! 8: BEGIN
22910 1011   68   !   ! !   ! IF ch="1" THEN negative:= true;
22920 1012   69   !   ! !   ! noofdigit:= 6;
\f

tsaoslst    81.06.10.   12.29.                                                    page    33

22930 1013   70   !   ! !   END;
22940 1014   71   !   ! ! 
22950 1015   72   !   ! ! 16: BEGIN
22960 1016   73   !   ! !   ! IF ch>="8" THEN negative:= true;
22970 1017   74   !   ! !   ! noofdigit:= 4;
22980 1018   75   !   ! !   END;
22990 1019   76   !   ! END (*case*);
23000 1020   77   !   ! curdigit:= 1;
23010 1021   78   !   ! 
23020 1022   79   !   ! WHILE digit AND (incharsleft>0) DO
23030 1023   80   !   !   BEGIN
23040 1024   81   !   !   ! ch:= readchar;
23050 1025   82   !   !   ! digit:= (ch IN digits) OR
23060 1026   83   !   !   ! ((base=16) AND (ch IN hexdigits));
23070 1027   84   !   !   ! IF digit
23080 1028   85   !   !   !   THEN BEGIN
23090 1029   86   !   !   !   ! curdigit:= curdigit+1;
23100 1030   87   !   !   !   ! IF (curdigit=noofdigit) AND negative THEN
23110 1031   88   !   !   !   !   BEGIN
23120 1032   89   !   !   !   !   ! CASE base OF
23130 1033   90   !   !   !   !   ! ! 2: result:= result - 16384 (*2^14*);
23140 1034   91   !   !   !   !   ! ! 8: result:= result -  4096 (*2^12*);
23150 1035   92   !   !   !   !   ! ! 16:result:= result -  2048 (*2^11*);
23160 1036   93   !   !   !   !   ! END (*case*)
23170 1037   94   !   !   !   !   END;
23180 1038   95   !   !   !   ! IF ch IN digits THEN
23190 1039   96   !   !   !   !   result:= result*base + (ord(ch)-ord("0"))
23200 1040   97   !   !   !   ! ELSE
23210 1041   98   !   !   !   !   result:= result*base + (ord(ch)-87 (*ord("W")*));
23220 1042   99   !   !   !   ! IF (curdigit=noofdigit) AND negative
23230 1043  100   !   !   !   !   THEN BEGIN
23240 1044  101   !   !   !   !   ! IF result=0
23250 1045  102   !   !   !   !   !   THEN result:= -32768
23260 1046  103   !   !   !   !   ! ELSE result:= -((32767-result)+1);
23270 1047  104   !   !   !   !   END;
23280 1048  105   !   !   !   END (*if digit*);
23290 1049  106   !   !   END (*while digit*);
23300 1050  107   !   END (* base= 2, 8, or 16 *);
23310 1051  108   ! IF incharsleft > 0 THEN
23320 1052  109   !     (* we read one char too many - spit it out *)
23330 1053  110   !   repeatchar;
23340 1054  111   ! 
23350 1055  112   ! readinteger:=result;
23360 1056  113   END (* read integer *);
23370 1057         
\f

tsaoslst    81.06.10.   12.29.                                                    page    34

24010 1058        PROCEDURE repeatchar;
24020 1059        BEGIN
24030 1060    1   ! LOCK opinref AS opbuf: opbuftype DO
24040 1061    2   !   opbuf.next:= opbuf.next - 1;
24050 1062    3   ! incharsleft:= incharsleft + 1;
24060 1063    4   END;
24070 1064         
\f

tsaoslst    81.06.10.   12.29.                                                    page    35

25010 1065        FUNCTION testinterval (i,first,last: integer): boolean;
25020 1066            (* true if first<=i<=last *)
25030 1067        BEGIN
25040 1068    1   ! IF (i<first) OR (i>last) THEN
25050 1069    2   !   BEGIN
25060 1070    3   !   ! outstring10(illegalno);
25070 1071    4   !   ! outinteger(i,4);
25080 1072    5   !   ! writenl;
25090 1073    6   !   ! testinterval:= false
25100 1074    7   !   END
25110 1075    8   ! ELSE
25120 1076    9   !   testinterval:= true;
25130 1077   10   END;
25140 1078         
\f

tsaoslst    81.06.10.   12.29.                                                    page    36

26010 1079        PROCEDURE testmodeout (text: alfa20; i: integer);
26020 1080        BEGIN
26030 1081    1   ! IF testmode THEN
26040 1082    2   !   BEGIN
26050 1083    3   !   ! outstring20 (text);
26060 1084    4   !   ! outinteger (i, 4);
26070 1085    5   !   ! writenl;
26080 1086    6   !   END;
26090 1087    7   END (* testout *);
26100 1088         
\f

tsaoslst    81.06.10.   12.29.                                                    page    37

27010 1089        PROCEDURE testsem(i: integer; VAR t_sem : semaphore);
27020 1090            (* test the semaphore t_sem, and
27030 1091            writes its status on the console if it is
27040 1092            non-passive *)
27050 1093        VAR more: boolean;
27060 1094        BEGIN
27070 1095    1   ! 
27080 1096    2   ! IF i>0 THEN
27090 1097    3   !   BEGIN
27100 1098    4   !   ! ap.a := sem(i).s;
27110 1099    5   !   ! bp.a := sem(i).w;
27120 1100    6   !   END
27130 1101    7   ! ELSE ap:=bp;
27140 1102    8   ! IF open(t_sem) THEN
27150 1103    9   !   BEGIN (* user semaphore no. i is open *)
27160 1104   10   !   ! IF ap=bp THEN
27170 1105   11   !   !   outchar(" ") ELSE outchar("^");
27180 1106   12   !   ! outdecimal(i,3);
27190 1107   13   !   ! outchar(":");
27200 1108   14   !   ! more:= true;
27210 1109   15   !   ! 
27220 1110   16   !   !   (* now count the no. of buffers on this semaphore *)
27230 1111   17   !   ! j:=0; (* j is the counter *)
27240 1112   18   !   ! WHILE more DO
27250 1113   19   !   !   BEGIN
27260 1114   20   !   !   ! sensesem(countref, t_sem);
27270 1115   21   !   !   ! IF nil(countref) THEN
27280 1116   22   !   !   !   more:= false
27290 1117   23   !   !   ! ELSE
27300 1118   24   !   !   !   BEGIN
27310 1119   25   !   !   !   ! signal(countref,countsem);
27320 1120   26   !   !   !   ! j:=j+1;
27330 1121   27   !   !   !   END
27340 1122   28   !   !   END;
27350 1123   29   !   ! 
27360 1124   30   !   ! outdecimal(j,3);
27370 1125   31   !   ! WHILE open(countsem) DO
27380 1126   32   !   !   BEGIN (* return the buffers to sem(i) *)
27390 1127   33   !   !   ! wait(countref,countsem);
27400 1128   34   !   !   ! signal(countref,t_sem);
27410 1129   35   !   !   END;
27420 1130   36   !   ! 
27430 1131   37   !   ! writenl;
27440 1132   38   !   END (* open *)
27450 1133   39   ! ELSE
27460 1134   40   !   IF locked( t_sem) THEN
\f

tsaoslst    81.06.10.   12.29.                                                    page    38

27470 1135   41   !     BEGIN (* user semaphore no. i is locked *)
27480 1136   42   !     ! IF ap=bp THEN
27490 1137   43   !     !   outchar(" ") ELSE outchar("^");
27500 1138   44   !     ! outdecimal(i,3);
27510 1139   45   !     ! outchar(":");
27520 1140   46   !     ! outstring10(" locked   ");
27530 1141   47   !     ! writenl;
27540 1142   48   !     END;
27550 1143   49   END (* testsem *);
27560 1144        
27570 1145        
27580 1146        
27590 1147        
27600 1148         
\f

tsaoslst    81.06.10.   12.29.                                                    page    39

28010 1149        PROCEDURE writenl;
28020 1150            (* prepares opbuf for output to the operator and signals
28030 1151            it to operator module *)
28040 1152        BEGIN
28050 1153    1   ! IF NOT nil(opoutref) THEN
28060 1154    2   !   BEGIN
28070 1155    3   !   ! outchar(nl);
28080 1156    4   !   ! signal(opoutref, opsem^)
28090 1157    5   !   END;
28100 1158    6   ! wait(opoutref, wsem);
28110 1159    7   ! LOCK opoutref AS opbuf: opbuftype DO
28120 1160    8   !   opbuf.last:= firstindex;
28130 1161    9   END (* writenl *);
28140 1162        
28150 1163         
\f

tsaoslst    81.06.10.   12.29.                                                    page    40

29010 1164        
29020 1165        
29030 1166        
29040 1167          (****************************************
29050 1168          *                                       *
29060 1169          *       m a i n   p r o g r a m         *
29070 1170          *                                       *
29080 1171          ****************************************)
29090 1172        
29100 1173        
29110 1174        
29120 1175        
29130 1176        
29140 1177        
29150 1178        BEGIN
29160 1179    1   ! 
29170 1180    2   ! opsem:= semvector(operatorsem);
29180 1181    3   ! spool_test_sem := ref( spool_sem);
29190 1182    4   ! testmode:= false;
29200 1183    5   ! testopen (z,own.incname,opsem);
29210 1184    6   ! testout(z,version,al_env_version);
29220 1185    7   ! 
29230 1186    8   ! readram(node_no,10);
29240 1187    9   ! node_no := node_no MOD 16;
29250 1188   10   ! dte_addr.net_addr := 0;
29260 1189   11   ! dte_addr.reg_addr := 0;
29270 1190   12   ! dte_addr.node_addr := node_no;
29280 1191   13   ! dte_addr.ext_addr := 3;
29290 1192   14   ! 
29300 1193   15   ! 
29310 1194   16   ! testout(z,"ext-pax-addr",
29320 1195   17   ! paxnet_config( node_no,3)*1000 + paxnet_config( node_no,6)*100 +
29330 1196   18   ! paxnet_config( node_no,9)*10  + paxnet_config( node_no,14) );
29340 1197   19   ! 
29350 1198   20   !   (* initialise pointers *)
29360 1199   21   ! FOR i:=1 TO ts_sem_total DO
29370 1200   22   !   BEGIN
29380 1201   23   !   ! sem(i).s:= ref(ts_sem(i));
29390 1202   24   !   ! sem(i).w:= sem(i).s;
29400 1203   25   !   END;
29410 1204   26   ! 
29420 1205   27   !   (*  initialize pointers to eva semaphores *)
29430 1206   28   ! sem(pax_sem_2).s:=ref(evavector(px_urec1));
29440 1207   29   ! sem(pax_sem_2).w:=sem(pax_sem_2).s;
29450 1208   30   ! sem(pax_sem_1).s:=ref(evavector(px_utrm1));
29460 1209   31   ! sem(pax_sem_1).w:=sem(pax_sem_1).s;
\f

tsaoslst    81.06.10.   12.29.                                                    page    41

29470 1210   32   ! sem(pax_sem_3).s := ref(evavector(px_urec2));
29480 1211   33   ! sem(pax_sem_3).w := sem(pax_sem_3).s;
29490 1212   34   ! sem(pax_sem_4).s := ref(evavector(px_utrm2));
29500 1213   35   ! sem(pax_sem_4).w := sem(pax_sem_4).s;
29510 1214   36   ! sem(pax_ncp_sem).s:=ref(evavector(px_ncp));
29520 1215   37   ! sem(pax_ncp_sem).w:=sem(pax_ncp_sem).s;
29530 1216   38   ! sem(lam_sem_no).s := ref( evavector(al_lam1));
29540 1217   39   ! sem(lam_sem_no).w := sem( lam_sem_no).s;
29550 1218   40   ! 
29560 1219   41   !   (*  initialize local semaphores for netconnector  *)
29570 1220   42   ! 
29580 1221   43   ! netc_locals(1):=sem(tssup_sem_no).s;
29590 1222   44   ! netc_locals(2):=sem(nc_sem_no).s;
29600 1223   45   ! 
29610 1224   46   !   (* initialise buffers *)
29620 1225   47   ! FOR i:= 1 TO 2 DO
29630 1226   48   !   BEGIN
29640 1227   49   !   ! alloc (opoutref, opbufpool, wsem);
29650 1228   50   !   ! opoutref^.u1:=2; (* write *)
29660 1229   51   !   ! LOCK opoutref AS opbuf: opbuftype DO
29670 1230   52   !   !   WITH opbuf DO
29680 1231   53   !   !     BEGIN
29690 1232   54   !   !     ! first:= firstindex;
29700 1233   55   !   !     ! name:= "alarm       ";
29710 1234   56   !   !     ! data(firstindex):= "!";
29720 1235   57   !   !     END;
29730 1236   58   !   ! return (opoutref);
29740 1237   59   !   END;
29750 1238   60   ! writenl;
29760 1239   61   ! 
29770 1240   62   ! alloc(opinref, opbufpool, wrsem);
29780 1241   63   ! 
29790 1242   64   ! opinref^.u1:=1; (* read *)
29800 1243   65   ! 
29810 1244   66   ! LOCK opinref AS opbuf: opbuftype DO
29820 1245   67   !   WITH opbuf DO
29830 1246   68   !     BEGIN
29840 1247   69   !     ! first:= firstindex;
29850 1248   70   !     ! last:= lastindex;
29860 1249   71   !     ! name:= "alarm       ";
29870 1250   72   !     END;
29880 1251   73   ! 
29890 1252   74   !   (*-------    allocate all listenbuffers ---*)
29900 1253   75   ! FOR i:= 1 TO no_listen DO
29910 1254   76   !   BEGIN
29920 1255   77   !   ! alloc(cur,messbufpool,sem(com_pool).s^);
\f

tsaoslst    81.06.10.   12.29.                                                    page    42

29930 1256   78   !   ! return(cur);
29940 1257   79   !   END;
29950 1258   80   ! 
29960 1259   81   !   (*-------    allocate all paxnetbuffers ---*)
29970 1260   82   ! FOR i:=1 TO no_pax_bufs DO
29980 1261   83   !   BEGIN
29990 1262   84   !   ! alloc( cur, paxbufpool, sem(dte_sem_no).s^);
30000 1263   85   !   ! signal( cur, sem( pax_pool).s^);
30010 1264   86   !   END;
30020 1265   87   ! 
30030 1266   88   ! st:= 1024;
30040 1267   89   ! base:= 10;
30050 1268   90   ! firstword:= 1;
30060 1269   91   ! lastword:= 10;
30070 1270   92   ! 
30080 1271   93   ! setoflowmask(true);
30090 1272   94   ! 
30100 1273   95   ! noofparams:= 0;
30110 1274   96   !   (* insert auto create with edit here *)
30120 1275   97   ! 
30130 1276   98   ! REPEAT
30140 1277   99   ! !   (* read a line of input from the operator and execute it *)
30150 1278  100   ! ! 
30160 1279  101   ! ! getinput;
30170 1280  102   ! ! 
30180 1281  103   ! ! CASE command OF
30190 1282  104   ! ! ! 
30200 1283  105   ! ! ! ";": (* comment command *)
30210 1284  106   ! ! !   BEGIN
30220 1285  107   ! ! !   END;
30230 1286  108   ! ! !  
\f

tsaoslst    81.06.10.   12.29.                                                    page    43

31010 1287  109   ! ! ! "a": (* alloc *)
31020 1288  110   ! ! !     (* a buffer is allocated from the messbufpool to the current
31030 1289  111   ! ! !     reference "cur".
31040 1290  112   ! ! !     1st param is the answersem *)
31050 1291  113   ! ! !   BEGIN
31060 1292  114   ! ! !   ! semno:= params(1);
31070 1293  115   ! ! !   ! 
31080 1294  116   ! ! !   ! IF noofparams >= 1 THEN
31090 1295  117   ! ! !   !   IF nil(cur) THEN
31100 1296  118   ! ! !   !     IF ((semno>0) AND (semno <= noofsemaphores))
31110 1297  119   ! ! !   !       OR ((semno<0) AND (semno >= -applsem_max)) THEN
31120 1298  120   ! ! !   !       BEGIN
31130 1299  121   ! ! !   !       ! IF semno > 0 THEN
31140 1300  122   ! ! !   !       !   alloc (cur, testbufpool, ts_sem(semno))
31150 1301  123   ! ! !   !       ! ELSE
31160 1302  124   ! ! !   !       !   alloc (cur, testbufpool, evavector(-semno));
31170 1303  125   ! ! !   !       ! WITH cur^ DO
31180 1304  126   ! ! !   !       !   BEGIN
31190 1305  127   ! ! !   !       !   ! u1:= 0;
31200 1306  128   ! ! !   !       !   ! u2:= 0;
31210 1307  129   ! ! !   !       !   ! u3:= 0;
31220 1308  130   ! ! !   !       !   ! u4:= 0;
31230 1309  131   ! ! !   !       !   END;
31240 1310  132   ! ! !   !       ! get_curbuftype;
31250 1311  133   ! ! !   !       ! outstring10("  bufsize ");
31260 1312  134   ! ! !   !       ! outinteger(curbufsize, 5);
31270 1313  135   ! ! !   !       ! outinteger(cur^.size, 5)
31280 1314  136   ! ! !   !       END
31290 1315  137   ! ! !   !     ELSE outstring10(illegalno)
31300 1316  138   ! ! !   !     ELSE outstring20("you already have one")
31310 1317  139   ! ! !   !     ELSE outstring10(noparam)
31320 1318  140   ! ! !   END (* alloc*);
31330 1319  141   ! ! !  
\f

tsaoslst    81.06.10.   12.29.                                                    page    44

32010 1320  142   ! ! ! "b": (* base *)
32020 1321  143   ! ! !     (* defines the number base for input as well as output *)
32030 1322  144   ! ! !     (* the base is always read decimally *)
32040 1323  145   ! ! !   BEGIN
32050 1324  146   ! ! !   ! IF noofparams < 1 THEN
32060 1325  147   ! ! !   !   BEGIN
32070 1326  148   ! ! !   !   ! base:= oldbase;
32080 1327  149   ! ! !   !   ! outstring10(noparam)
32090 1328  150   ! ! !   !   END
32100 1329  151   ! ! !   ! ELSE
32110 1330  152   ! ! !   !   
32120 1331  153   ! ! !   !   IF NOT (params(1) IN (. 2, 8, 10, 16 .) ) THEN
32130 1332  154   ! ! !   !     BEGIN (* illegal base *)
32140 1333  155   ! ! !   !     ! outstring20("illegal base        ");
32150 1334  156   ! ! !   !     ! base:= oldbase;
32160 1335  157   ! ! !   !     END
32170 1336  158   ! ! !   !   ELSE
32180 1337  159   ! ! !   !     base:= params(1);
32190 1338  160   ! ! !   END;
32200 1339  161   ! ! !  
\f

tsaoslst    81.06.10.   12.29.                                                    page    45

33010 1340  162   ! ! ! "c": (* create *)
33020 1341  163   ! ! !     (* an incarnation of each of the predefined modules to be tested
33030 1342  164   ! ! !     is created and started.
33040 1343  165   ! ! !     params are nos. of the modules to be created and started *)
33050 1344  166   ! ! !   
33060 1345  167   ! ! !   IF noofparams >= 1 THEN
33070 1346  168   ! ! !     
33080 1347  169   ! ! !     BEGIN
33090 1348  170   ! ! !     ! moduleno:= params(1);
33100 1349  171   ! ! !     ! 
33110 1350  172   ! ! !     ! IF noofparams>1 THEN st:= params(2);
33120 1351  173   ! ! !     ! 
33130 1352  174   ! ! !     ! IF (moduleno<1) OR (moduleno > noofmodules) THEN
33140 1353  175   ! ! !     !   BEGIN (* illegal no *)
33150 1354  176   ! ! !     !   ! outdecimal(moduleno,4);
33160 1355  177   ! ! !     !   ! outstring10(illegalno);
33170 1356  178   ! ! !     !   END
33180 1357  179   ! ! !     ! ELSE
33190 1358  180   ! ! !     !   IF moduleready(moduleno) THEN init_modul(moduleno);
33200 1359  181   ! ! !     END (* if noofparams >= 1 *)
33210 1360  182   ! ! !   ELSE outstring10 (noparam);
33220 1361  183   ! ! !   (* end create *)
33230 1362  184   ! ! !  
\f

tsaoslst    81.06.10.   12.29.                                                    page    46

34010 1363  185   ! ! ! "d": (*  test dtesimulator  *)
34020 1364  186   ! ! !   BEGIN
34030 1365  187   ! ! !   ! outstring10("test dte  ");
34040 1366  188   ! ! !   ! 
34050 1367  189   ! ! !   ! sensesem( nref, sem( pax_pool).w^);
34060 1368  190   ! ! !   ! 
34070 1369  191   ! ! !   ! IF NOT nil( nref) THEN
34080 1370  192   ! ! !   !   BEGIN
34090 1371  193   ! ! !   !   ! nref^.u2 := 7;
34100 1372  194   ! ! !   !   ! nref^.u4 := from_link;
34110 1373  195   ! ! !   !   ! 
34120 1374  196   ! ! !   !   ! CASE params(1) OF
34130 1375  197   ! ! !   !   ! ! 
34140 1376  198   ! ! !   !   ! ! 
34150 1377  199   ! ! !   !   ! ! 
34160 1378  200   ! ! !   !   ! ! 1: (* answer to connect ext *)
34170 1379  201   ! ! !   !   ! !   BEGIN
34180 1380  202   ! ! !   !   ! !   ! nref^.u1 := rut_con;
34190 1381  203   ! ! !   !   ! !   ! nref^.u2 := rut_ok;
34200 1382  204   ! ! !   !   ! !   ! nref^.u3 := 7;
34210 1383  205   ! ! !   !   ! !   ! 
34220 1384  206   ! ! !   !   ! !   ! LOCK nref AS buf: rut_prefix_type DO
34230 1385  207   ! ! !   !   ! !   !   buf.ext_no := params(2);
34240 1386  208   ! ! !   !   ! !   !   (* ie  d 1 20  answers on connect ext 20 *)
34250 1387  209   ! ! !   !   ! !   END;
34260 1388  210   ! ! !   !   ! ! 
34270 1389  211   ! ! !   !   ! ! 2 : (* send ric buffer *)
34280 1390  212   ! ! !   !   ! !   BEGIN
34290 1391  213   ! ! !   !   ! !   ! nref^.u1 := dte_ric;
34300 1392  214   ! ! !   !   ! !   ! nref^.u4 := to_link;
34310 1393  215   ! ! !   !   ! !   END;
34320 1394  216   ! ! !   !   ! !   (* ie d 2  sends a ric-buffer to dte *)
34330 1395  217   ! ! !   !   ! ! 
34340 1396  218   ! ! !   !   ! ! 3: (* receive call from remote user *)
34350 1397  219   ! ! !   !   ! !   BEGIN
34360 1398  220   ! ! !   !   ! !   ! nref^.u1 := rut_rec;
34370 1399  221   ! ! !   !   ! !   ! nref^.u2 := rut_ok;
34380 1400  222   ! ! !   !   ! !   ! nref^.u3 := rut_default;
34390 1401  223   ! ! !   !   ! !   ! LOCK nref AS buf : rut_trp_pdata DO
34400 1402  224   ! ! !   !   ! !   !   WITH buf DO
34410 1403  225   ! ! !   !   ! !   !     BEGIN
34420 1404  226   ! ! !   !   ! !   !     ! make_phead( 3, dte_car, phead);
34430 1405  227   ! ! !   !   ! !   !     ! FOR i := label_size+3 TO l_listen DO
34440 1406  228   ! ! !   !   ! !   !     !   alarm_mess.da(i) := i;
34450 1407  229   ! ! !   !   ! !   !     END
34460 1408  230   ! ! !   !   ! !   END;
\f

tsaoslst    81.06.10.   12.29.                                                    page    47

34470 1409  231   ! ! !   !   ! !   (*        stream    sender  receiver  facility  *)
34480 1410  232   ! ! !   !   ! !   (* ie d 3   1       0 0 4   0 0 2     0     is 4 sending call to 2 *)
34490 1411  233   ! ! !   !   ! !  
\f

tsaoslst    81.06.10.   12.29.                                                    page    48

35010 1412  234   ! ! !   !   ! ! 4 : (* send receipt for call *)
35020 1413  235   ! ! !   !   ! !   IF params(2) = 1 THEN
35030 1414  236   ! ! !   !   ! !     BEGIN  (* aic *)
35040 1415  237   ! ! !   !   ! !     ! nref^.u1 := dte_aic;
35050 1416  238   ! ! !   !   ! !     ! nref^.u3 := 1;
35060 1417  239   ! ! !   !   ! !     ! nref^.u4 := to_link;
35070 1418  240   ! ! !   !   ! !     ! LOCK nref AS buf : aic_buf_type DO
35080 1419  241   ! ! !   !   ! !     !   BEGIN
35090 1420  242   ! ! !   !   ! !     !   ! buf.aic_id := 1;
35100 1421  243   ! ! !   !   ! !     !   ! buf.aic_q := false;
35110 1422  244   ! ! !   !   ! !     !   END
35120 1423  245   ! ! !   !   ! !     END
35130 1424  246   ! ! !   !   ! !   ELSE
35140 1425  247   ! ! !   !   ! !     BEGIN   (* rejic *)
35150 1426  248   ! ! !   !   ! !     ! nref^.u1 := dte_rejic;
35160 1427  249   ! ! !   !   ! !     ! nref^.u3 := 1;
35170 1428  250   ! ! !   !   ! !     ! nref^.u4 := to_link;
35180 1429  251   ! ! !   !   ! !     ! LOCK nref AS buf : rejic_buf_type DO
35190 1430  252   ! ! !   !   ! !     !   BEGIN
35200 1431  253   ! ! !   !   ! !     !   ! buf.rejic_id := 1;
35210 1432  254   ! ! !   !   ! !     !   ! buf.rejic_diag := params(3);
35220 1433  255   ! ! !   !   ! !     !   END
35230 1434  256   ! ! !   !   ! !     END;
35240 1435  257   ! ! !   !   ! !   (* ie d  4  1  sends aic-buffer   *)
35250 1436  258   ! ! !   !   ! !   (* ie d  4  0  sends rejic-buffer *)
35260 1437  259   ! ! !   !   ! ! 
35270 1438  260   ! ! !   !   ! ! 5: (* receive data from remote user *)
35280 1439  261   ! ! !   !   ! !   BEGIN
35290 1440  262   ! ! !   !   ! !   ! nref^.u1 := rut_rec;
35300 1441  263   ! ! !   !   ! !   ! nref^.u2 := rut_ok;
35310 1442  264   ! ! !   !   ! !   ! nref^.u3 := rut_default;
35320 1443  265   ! ! !   !   ! !   ! LOCK nref AS buf : rut_trp_pdata DO
35330 1444  266   ! ! !   !   ! !   !   WITH buf DO
35340 1445  267   ! ! !   !   ! !   !     BEGIN
35350 1446  268   ! ! !   !   ! !   !     ! make_phead( 3, dte_sdata, phead);
35360 1447  269   ! ! !   !   ! !   !     ! control.op_code := opc_command;
35370 1448  270   ! ! !   !   ! !   !     ! FOR i := label_size+3 TO l_listen DO
35380 1449  271   ! ! !   !   ! !   !     !   alarm_mess.da(i) := i;
35390 1450  272   ! ! !   !   ! !   !     END;
35400 1451  273   ! ! !   !   ! !   END;
35410 1452  274   ! ! !   !   ! !   (*        strm    sender   rec   fac   *)
35420 1453  275   ! ! !   !   ! !   (* ie d 5  1      0 0 4   0 0 2   0   sends data from 4 to 2 *)
35430 1454  276   ! ! !   !   ! !  
\f

tsaoslst    81.06.10.   12.29.                                                    page    49

36010 1455  277   ! ! !   !   ! ! 6: (* clear from remote user *)
36020 1456  278   ! ! !   !   ! !   BEGIN
36030 1457  279   ! ! !   !   ! !   ! nref^.u1 := rut_rec;
36040 1458  280   ! ! !   !   ! !   ! nref^.u2 := rut_ok;
36050 1459  281   ! ! !   !   ! !   ! nref^.u3 := rut_default;
36060 1460  282   ! ! !   !   ! !   ! LOCK nref AS buf : rut_trp_pdata DO
36070 1461  283   ! ! !   !   ! !   !   WITH buf DO
36080 1462  284   ! ! !   !   ! !   !     BEGIN
36090 1463  285   ! ! !   !   ! !   !     ! make_phead( 3, dte_clr, phead);
36100 1464  286   ! ! !   !   ! !   !     END;
36110 1465  287   ! ! !   !   ! !   END;
36120 1466  288   ! ! !   !   ! !   (*          strm   sender   rec   fac  *)
36130 1467  289   ! ! !   !   ! !   (* ie d  6   1     0 0 4   0 0 2   0   clears stream 1 from 4 to 2 *)
36140 1468  290   ! ! !   !   ! ! 
36150 1469  291   ! ! !   !   ! ! 
36160 1470  292   ! ! !   !   ! !  
\f

tsaoslst    81.06.10.   12.29.                                                    page    50

37010 1471  293   ! ! !   !   ! ! 10: (* call request *)
37020 1472  294   ! ! !   !   ! !   BEGIN
37030 1473  295   ! ! !   !   ! !   ! nref^.u1 := dte_car;
37040 1474  296   ! ! !   !   ! !   ! nref^.u3 := params(2);
37050 1475  297   ! ! !   !   ! !   ! nref^.u4 := to_link;
37060 1476  298   ! ! !   !   ! !   ! LOCK nref AS buf:car_buf_type DO
37070 1477  299   ! ! !   !   ! !   !   WITH buf DO
37080 1478  300   ! ! !   !   ! !   !     BEGIN
37090 1479  301   ! ! !   !   ! !   !     ! first := ric_first_val;
37100 1480  302   ! ! !   !   ! !   !     ! last := ric_first_val+l_control+l_listen-1;
37110 1481  303   ! ! !   !   ! !   !     ! q_bit := false;
37120 1482  304   ! ! !   !   ! !   !     ! WITH call_buf DO
37130 1483  305   ! ! !   !   ! !   !     !   BEGIN
37140 1484  306   ! ! !   !   ! !   !     !   ! control.op_code := dte_car;
37150 1485  307   ! ! !   !   ! !   !     !   ! dte_adr_l := l_dte_adr;
37160 1486  308   ! ! !   !   ! !   !     !   ! dte_adr := paxnet_config( params(5));
37170 1487  309   ! ! !   !   ! !   !     !   ! 
37180 1488  310   ! ! !   !   ! !   !     !   ! facility_l := l_facilities;
37190 1489  311   ! ! !   !   ! !   !     !   ! facility := params(6);
37200 1490  312   ! ! !   !   ! !   !     !   ! FOR i := label_size+3 TO l_listen DO
37210 1491  313   ! ! !   !   ! !   !     !   !   alarm_mess.da(i):=i;
37220 1492  314   ! ! !   !   ! !   !     !   END;
37230 1493  315   ! ! !   !   ! !   !     END;
37240 1494  316   ! ! !   !   ! !   END;
37250 1495  317   ! ! !   !   ! !   (*       strm rec   fac     *)
37260 1496  318   ! ! !   !   ! !   (* ie d 10  1  0 0 3  0 sends a call to 3 on stream 1 *)
37270 1497  319   ! ! !   !   ! !   (* ie d 10  2  0 0 4  0 sends a call to 4 on stream 2 *)
37280 1498  320   ! ! !   !   ! !  
\f

tsaoslst    81.06.10.   12.29.                                                    page    51

38010 1499  321   ! ! !   !   ! ! 11: (* call accepted from remote user *)
38020 1500  322   ! ! !   !   ! !   BEGIN
38030 1501  323   ! ! !   !   ! !   ! nref^.u1 := rut_rec;
38040 1502  324   ! ! !   !   ! !   ! nref^.u2 := rut_ok;
38050 1503  325   ! ! !   !   ! !   ! nref^.u3 := rut_default;
38060 1504  326   ! ! !   !   ! !   ! LOCK nref AS buf: rut_trp_pdata DO
38070 1505  327   ! ! !   !   ! !   !   WITH buf DO
38080 1506  328   ! ! !   !   ! !   !     make_phead( 3, dte_aic, phead);
38090 1507  329   ! ! !   !   ! !   END;
38100 1508  330   ! ! !   !   ! !   (*         strm  sender  rec  fac  *)
38110 1509  331   ! ! !   !   ! !   (* ie d  11  1  0 0 3  0 0 2  0  is 3 accepting call from 2 *)
38120 1510  332   ! ! !   !   ! ! 
38130 1511  333   ! ! !   !   ! ! 12: (* send data to remote user *)
38140 1512  334   ! ! !   !   ! !   BEGIN
38150 1513  335   ! ! !   !   ! !   ! nref^.u1 := dte_sdata;
38160 1514  336   ! ! !   !   ! !   ! nref^.u3 := params(2);
38170 1515  337   ! ! !   !   ! !   ! nref^.u4 := to_link;
38180 1516  338   ! ! !   !   ! !   ! LOCK nref AS buf : dte_sdata_data DO
38190 1517  339   ! ! !   !   ! !   !   WITH buf DO
38200 1518  340   ! ! !   !   ! !   !     BEGIN
38210 1519  341   ! ! !   !   ! !   !     ! q_bit := false;
38220 1520  342   ! ! !   !   ! !   !     ! m_bit := false;
38230 1521  343   ! ! !   !   ! !   !     ! control.op_code := opc_command;
38240 1522  344   ! ! !   !   ! !   !     ! FOR i := label_size+3 TO l_listen DO
38250 1523  345   ! ! !   !   ! !   !     !   alarm_mess.da(i) := i;
38260 1524  346   ! ! !   !   ! !   !     END
38270 1525  347   ! ! !   !   ! !   END;
38280 1526  348   ! ! !   !   ! !   (* ie d  12  1      sends data on stream 1 *)
38290 1527  349   ! ! !   !   ! ! 
38300 1528  350   ! ! !   !   ! ! 13: (* clear stream to remote user *)
38310 1529  351   ! ! !   !   ! !   BEGIN
38320 1530  352   ! ! !   !   ! !   ! nref^.u1 := dte_clr;
38330 1531  353   ! ! !   !   ! !   ! nref^.u4 := to_link;
38340 1532  354   ! ! !   !   ! !   ! nref^.u3 := params(2);
38350 1533  355   ! ! !   !   ! !   ! LOCK nref AS buf : clear_buf_type DO
38360 1534  356   ! ! !   !   ! !   !   buf.diag_code := params(3);
38370 1535  357   ! ! !   !   ! !   END;
38380 1536  358   ! ! !   !   ! ! 
38390 1537  359   ! ! !   !   ! !   (*         strm   diag-code  *)
38400 1538  360   ! ! !   !   ! !   (* ie d 13  1        16    sends clear stream to dte *)
38410 1539  361   ! ! !   !   ! ! 
38420 1540  362   ! ! !   !   ! ! 
38430 1541  363   ! ! !   !   ! ! OTHERWISE
38440 1542  364   ! ! !   !   ! ! 
38450 1543  365   ! ! !   !   ! ! outstring10("undef test");
38460 1544  366   ! ! !   !   ! END;
\f

tsaoslst    81.06.10.   12.29.                                                    page    52

38470 1545  367   ! ! !   !   ! signal( nref, sem( dte_sem_no).s^);
38480 1546  368   ! ! !   !   END
38490 1547  369   ! ! !   ! ELSE
38500 1548  370   ! ! !   !   outstring10("no paxbufs");
38510 1549  371   ! ! !   ! 
38520 1550  372   ! ! !   END;
38530 1551  373   ! ! !  
\f

tsaoslst    81.06.10.   12.29.                                                    page    53

39010 1552  374   ! ! ! "f": (* fill *)
39020 1553  375   ! ! !     (* fills integers into current buffer.
39030 1554  376   ! ! !     1st param: first word no. to be filled,
39040 1555  377   ! ! !     following: values to be assigned *)
39050 1556  378   ! ! !   BEGIN
39060 1557  379   ! ! !   ! IF noofparams < 2 THEN
39070 1558  380   ! ! !   !   outstring10("param     ")
39080 1559  381   ! ! !   ! ELSE
39090 1560  382   ! ! !   !   IF (params(1) < 1) THEN
39100 1561  383   ! ! !   !     outstring20("illegal start       ")
39110 1562  384   ! ! !   !   ELSE
39120 1563  385   ! ! !   !     IF nil(cur) THEN
39130 1564  386   ! ! !   !       outstring10("no buffer ")
39140 1565  387   ! ! !   !     ELSE
39150 1566  388   ! ! !   !       BEGIN (* params are ok *)
39160 1567  389   ! ! !   !       ! i:= params(1); (* i points into the messbuf *)
39170 1568  390   ! ! !   !       ! 
39180 1569  391   ! ! !   !       ! FOR j:= 2 TO noofparams DO
39190 1570  392   ! ! !   !       !     (* j points into the param list *)
39200 1571  393   ! ! !   !       !   IF i <= curbufsize THEN
39210 1572  394   ! ! !   !       !     BEGIN
39220 1573  395   ! ! !   !       !     ! CASE curbuftype OF
39230 1574  396   ! ! !   !       !     ! ! 1: LOCK cur AS minbuf: minbuftype DO
39240 1575  397   ! ! !   !       !     ! !     minbuf(i):= params(j);
39250 1576  398   ! ! !   !       !     ! ! 2: LOCK cur AS messbuf: messbuftype DO
39260 1577  399   ! ! !   !       !     ! !     messbuf(i):= params(j);
39270 1578  400   ! ! !   !       !     ! ! 3: LOCK cur AS maxbuf: maxbuftype DO
39280 1579  401   ! ! !   !       !     ! !     maxbuf(i):= params(j);
39290 1580  402   ! ! !   !       !     ! ! 4: LOCK cur AS testbuf: testbuftype DO
39300 1581  403   ! ! !   !       !     ! !     testbuf(i):= params(j);
39310 1582  404   ! ! !   !       !     ! ! OTHERWISE
39320 1583  405   ! ! !   !       !     ! END;
39330 1584  406   ! ! !   !       !     ! i:= i + 1;
39340 1585  407   ! ! !   !       !     END;
39350 1586  408   ! ! !   !       ! 
39360 1587  409   ! ! !   !       END (* params ok *)
39370 1588  410   ! ! !   END (* fill *);
39380 1589  411   ! ! !  
\f

tsaoslst    81.06.10.   12.29.                                                    page    54

40010 1590  412   ! ! ! "h": (* help *)
40020 1591  413   ! ! !     (* lists possible commands and no. of parameters *)
40030 1592  414   ! ! !   BEGIN
40040 1593  415   ! ! !   ! outstring20("comm and no of param"); writenl;
40050 1594  416   ! ! !   ! outstring20("a: allocate   1     "); writenl;
40060 1595  417   ! ! !   ! outstring20("b: base       1     "); writenl;
40070 1596  418   ! ! !   ! outstring20("c: create     >=1   "); writenl;
40080 1597  419   ! ! !   ! outstring20("e: execute    1     "); writenl;
40090 1598  420   ! ! !   ! outstring20("f: fill       2     "); writenl;
40100 1599  421   ! ! !   ! outstring20("h: help       0     "); writenl;
40110 1600  422   ! ! !   ! outstring20("i: init point 0     "); writenl;
40120 1601  423   ! ! !   ! outstring20("k: kill       >=1   "); writenl;
40130 1602  424   ! ! !   ! outstring20("o: output     0 to 2"); writenl;
40140 1603  425   ! ! !   ! outstring20("p: partial    >=3   "); writenl;
40150 1604  426   ! ! !   ! outstring20("r: return     0     "); writenl;
40160 1605  427   ! ! !   ! outstring20("s: signal     1     "); writenl;
40170 1606  428   ! ! !   ! outstring20("t: test       0 or 1"); writenl;
40180 1607  429   ! ! !   ! outstring20("u: user param 1 to 4"); writenl;
40190 1608  430   ! ! !   ! outstring20("w: wait       1     "); writenl;
40200 1609  431   ! ! !   ! outstring20("x: exch point 2     "); writenl;
40210 1610  432   ! ! !   ! outstring20(";: comment          ");
40220 1611  433   ! ! !   END;
40230 1612  434   ! ! !  
\f

tsaoslst    81.06.10.   12.29.                                                    page    55

41010 1613  435   ! ! ! "i": (* initialise pointers *)
41020 1614  436   ! ! !   IF noofparams=0 THEN
41030 1615  437   ! ! !     FOR i:=1 TO noofsemaphores DO sem(i).w:= sem(i).s ELSE
41040 1616  438   ! ! !       IF (params(1)>0) AND (params(1)<=noofsemaphores) THEN
41050 1617  439   ! ! !         sem(params(1)).w:= sem(params(1)).s ELSE
41060 1618  440   ! ! !         outstring10(valparam);
41070 1619  441   ! ! !  
\f

tsaoslst    81.06.10.   12.29.                                                    page    56

42010 1620  442   ! ! ! "e", (* exception *)
42020 1621  443   ! ! !   (* call of exception routine in one or more incarnations *)
42030 1622  444   ! ! ! "k": (* kill *)
42040 1623  445   ! ! !     (* removes incarnation of tested module(s)
42050 1624  446   ! ! !     params are nos. of modules to be removed *)
42060 1625  447   ! ! !   
42070 1626  448   ! ! !   IF noofparams >= 1 THEN
42080 1627  449   ! ! !     FOR i:= 1 TO noofparams DO
42090 1628  450   ! ! !       BEGIN
42100 1629  451   ! ! !       ! moduleno:= params(i);
42110 1630  452   ! ! !       ! IF (1<=moduleno) AND (moduleno<=noofmodules) THEN
42120 1631  453   ! ! !       !   IF NOT nil(sh(moduleno)) THEN
42130 1632  454   ! ! !       !     IF command="e" THEN
42140 1633  455   ! ! !       !       break(sh(moduleno),#h2f) ELSE
42150 1634  456   ! ! !       !       remove (sh(moduleno))
42160 1635  457   ! ! !       !     ELSE
42170 1636  458   ! ! !       !       BEGIN
42180 1637  459   ! ! !       !       ! outdecimal (moduleno, 4);
42190 1638  460   ! ! !       !       ! outstring10(" not alive");
42200 1639  461   ! ! !       !       ! writenl;
42210 1640  462   ! ! !       !       END
42220 1641  463   ! ! !       !     ELSE
42230 1642  464   ! ! !       !       BEGIN
42240 1643  465   ! ! !       !       ! outdecimal (moduleno, 4);
42250 1644  466   ! ! !       !       ! outstring10(illegalno);
42260 1645  467   ! ! !       !       ! writenl;
42270 1646  468   ! ! !       !       END
42280 1647  469   ! ! !       END
42290 1648  470   ! ! !     ELSE outstring10("no params ");
42300 1649  471   ! ! !  
\f

tsaoslst    81.06.10.   12.29.                                                    page    57

43010 1650  472   ! ! ! "m": (* testmode *)
43020 1651  473   ! ! !   testmode:= NOT testmode;
43030 1652  474   ! ! !  
\f

tsaoslst    81.06.10.   12.29.                                                    page    58

44010 1653  475   ! ! ! "n": (*  test netconnector *)
44020 1654  476   ! ! !   BEGIN
44030 1655  477   ! ! !   ! 
44040 1656  478   ! ! !   ! outstring10("test netc ");
44050 1657  479   ! ! !   ! 
44060 1658  480   ! ! !   ! 
44070 1659  481   ! ! !   ! CASE params(1) OF
44080 1660  482   ! ! !   ! !  
\f

tsaoslst    81.06.10.   12.29.                                                    page    59

45010 1661  483   ! ! !   ! ! 1: (* update pax-table from local sup *)
45020 1662  484   ! ! !   ! !   BEGIN
45030 1663  485   ! ! !   ! !   ! sensesem( nref, sem( com_pool).w^);
45040 1664  486   ! ! !   ! !   ! 
45050 1665  487   ! ! !   ! !   ! IF NOT nil( nref) THEN
45060 1666  488   ! ! !   ! !   !   BEGIN
45070 1667  489   ! ! !   ! !   !   ! nref^.u2 := 7;
45080 1668  490   ! ! !   ! !   !   ! nref^.u3 := netc_route1;
45090 1669  491   ! ! !   ! !   !   ! nref^.u4 := #hac;
45100 1670  492   ! ! !   ! !   !   ! 
45110 1671  493   ! ! !   ! !   !   ! LOCK nref AS buf : RECORD
45120 1672  494   ! ! !   ! !   !   !                      !  a:alarmlabel;
45130 1673  495   ! ! !   ! !   !   !                      !  i : integer;
45140 1674  496   ! ! !   ! !   !   !                      !  p:paxnet_e;
45150 1675  497   ! ! !   ! !   !   !   END DO
45160 1676  498   ! ! !   ! !   !   !   WITH buf DO
45170 1677  499   ! ! !   ! !   !   !     BEGIN
45180 1678  500   ! ! !   ! !   !   !     ! a.no_of_by := l_listen;
45190 1679  501   ! ! !   ! !   !   !     ! a.update := insert_code;
45200 1680  502   ! ! !   ! !   !   !     ! a.rec.macro := packmacro(2);
45210 1681  503   ! ! !   ! !   !   !     ! a.rec.micro := netc_mic_addr;
45220 1682  504   ! ! !   ! !   !   !     ! a.send.macro := packmacro(5);
45230 1683  505   ! ! !   ! !   !   !     ! p.al_mac_addr := packmacro(8);
45240 1684  506   ! ! !   ! !   !   !     ! p.pax_addr := paxnet_config( params(13));
45250 1685  507   ! ! !   ! !   !   !     ! 
45260 1686  508   ! ! !   ! !   !   !     ! i := params(14);
45270 1687  509   ! ! !   ! !   !   !     ! p.stream_no := params(15);
45280 1688  510   ! ! !   ! !   !   !     ! p.max_retrans := 1;
45290 1689  511   ! ! !   ! !   !   !     END;
45300 1690  512   ! ! !   ! !   !   END;
45310 1691  513   ! ! !   ! !   !   (*       receiver sender al-mac  pax indx stream       *)
45320 1692  514   ! ! !   ! !   !   (* ie n 1  0 0 0  1 0 0  1 2 2  0 0 2  1  1 sets netc address *)
45330 1693  515   ! ! !   ! !   !   (* ie n 1  1 2 2  1 0 0  1 2 0  0 0 2  2  2 sets ncsup addr   *)
45340 1694  516   ! ! !   ! !   !   (* ie n 1  1 2 2  1 0 0  1 3 2  0 0 3  7  0 sets global ts-adr*)
45350 1695  517   ! ! !   ! !   !   (* ie n 1  1 2 2  1 0 0  1 3 0  0 0 3  8  0 sets global nc-adr*)
45360 1696  518   ! ! !   ! !   END;
45370 1697  519   ! ! !   ! !  
\f

tsaoslst    81.06.10.   12.29.                                                    page    60

46010 1698  520   ! ! !   ! ! 2 : (* update pax-table from net *)
46020 1699  521   ! ! !   ! !     (*---- comming in a ric-buffer --*)
46030 1700  522   ! ! !   ! !   BEGIN
46040 1701  523   ! ! !   ! !   ! sensesem( nref, sem(pax_pool).w^);
46050 1702  524   ! ! !   ! !   ! 
46060 1703  525   ! ! !   ! !   ! IF NOT nil( nref) THEN
46070 1704  526   ! ! !   ! !   !   BEGIN
46080 1705  527   ! ! !   ! !   !   ! nref^.u1 := dte_ric;
46090 1706  528   ! ! !   ! !   !   ! nref^.u2 := 0;
46100 1707  529   ! ! !   ! !   !   ! nref^.u3 := 7;
46110 1708  530   ! ! !   ! !   !   ! nref^.u4 := to_link;
46120 1709  531   ! ! !   ! !   !   ! 
46130 1710  532   ! ! !   ! !   !   ! LOCK nref AS buf : tst_ric_type DO
46140 1711  533   ! ! !   ! !   !   !   BEGIN
46150 1712  534   ! ! !   ! !   !   !   ! buf.c_i := params(16);
46160 1713  535   ! ! !   ! !   !   !   ! WITH buf.c_b DO
46170 1714  536   ! ! !   ! !   !   !   !   BEGIN
46180 1715  537   ! ! !   ! !   !   !   !   ! a_l.no_of_by := l_listen;
46190 1716  538   ! ! !   ! !   !   !   !   ! a_l.op_code := #hac;
46200 1717  539   ! ! !   ! !   !   !   !   ! a_l.update := insert_code;
46210 1718  540   ! ! !   ! !   !   !   !   ! a_l.rec.macro := packmacro(2);
46220 1719  541   ! ! !   ! !   !   !   !   ! a_l.rec.micro:=netc_mic_addr;
46230 1720  542   ! ! !   ! !   !   !   !   ! a_l.send.macro:=packmacro(5);
46240 1721  543   ! ! !   ! !   !   !   !   ! a_l.send.micro := 1;
46250 1722  544   ! ! !   ! !   !   !   !   ! p_e.al_mac_addr := packmacro(8);
46260 1723  545   ! ! !   ! !   !   !   !   ! p_e.pax_addr := paxnet_config( params(13));
46270 1724  546   ! ! !   ! !   !   !   !   ! 
46280 1725  547   ! ! !   ! !   !   !   !   ! indx:=params(15);
46290 1726  548   ! ! !   ! !   !   !   !   ! p_e.stream_no := params(14);
46300 1727  549   ! ! !   ! !   !   !   !   ! p_e.max_retrans := 1;
46310 1728  550   ! ! !   ! !   !   !   !   ! d_a := p_e.pax_addr;
46320 1729  551   ! ! !   ! !   !   !   !   END;
46330 1730  552   ! ! !   ! !   !   !   END
46340 1731  553   ! ! !   ! !   !   END;
46350 1732  554   ! ! !   ! !   END;
46360 1733  555   ! ! !   ! !   (*       receiver sender al-mac  pax  strm indx call-id  *)
46370 1734  556   ! ! !   ! !   (* ie n 2  1 2 2  1 0 0  1 4 2  0 0 4   1    9  1   sets global ts-addr *)
46380 1735  557   ! ! !   ! !   (* ie n 2  1 2 2  1 0 0  1 4 0  0 0 4   2   10  2   sets global nc-addr *)
46390 1736  558   ! ! !   ! !   (* ie n 2  1 2 2  1 0 0  1 5 2  0 0 5   3   11  3   sets global ts-addr *)
46400 1737  559   ! ! !   ! !   (* ie n 2  1 2 2  1 0 0  1 5 0  0 0 5   4   12  4   sets global nc-addr *)
46410 1738  560   ! ! !   ! !  
\f

tsaoslst    81.06.10.   12.29.                                                    page    61

47010 1739  561   ! ! !   ! ! 3:  (* send alarmmessage from local *)
47020 1740  562   ! ! !   ! !   BEGIN
47030 1741  563   ! ! !   ! !   ! sensesem( nref, sem(com_pool).w^);
47040 1742  564   ! ! !   ! !   ! 
47050 1743  565   ! ! !   ! !   ! IF NOT nil( nref) THEN
47060 1744  566   ! ! !   ! !   !   BEGIN
47070 1745  567   ! ! !   ! !   !   ! nref^.u2 := 7;
47080 1746  568   ! ! !   ! !   !   ! nref^.u3 := tss_route;
47090 1747  569   ! ! !   ! !   !   ! nref^.u4 := #h30;
47100 1748  570   ! ! !   ! !   !   ! 
47110 1749  571   ! ! !   ! !   !   ! LOCK nref AS abuf : max_alarm_mess DO
47120 1750  572   ! ! !   ! !   !   !   WITH abuf DO
47130 1751  573   ! ! !   ! !   !   !     BEGIN
47140 1752  574   ! ! !   ! !   !   !     ! al.no_of_by := l_listen;
47150 1753  575   ! ! !   ! !   !   !     ! al.rec.macro := packmacro(2);
47160 1754  576   ! ! !   ! !   !   !     ! al.rec.micro := 0;
47170 1755  577   ! ! !   ! !   !   !     ! al.send.macro := packmacro(5);
47180 1756  578   ! ! !   ! !   !   !     ! al.send.micro := 0;
47190 1757  579   ! ! !   ! !   !   !     ! FOR i := label_size+3 TO l_listen DO
47200 1758  580   ! ! !   ! !   !   !     !   da(i) := i;
47210 1759  581   ! ! !   ! !   !   !     END;
47220 1760  582   ! ! !   ! !   !   ! 
47230 1761  583   ! ! !   ! !   !   !   (*        receiver sender *)
47240 1762  584   ! ! !   ! !   !   !   (* ie n 3  1 2 0   1 0 0  gives an alarm to ncsup local   *)
47250 1763  585   ! ! !   ! !   !   !   (* ie n 3  1 3 2   1 0 0  gives an alarm to tssup global  *)
47260 1764  586   ! ! !   ! !   !   !   (* ie n 3  1 3 0   1 0 0  gives an alarm to ncsup global  *)
47270 1765  587   ! ! !   ! !   !   END;
47280 1766  588   ! ! !   ! !   END;
47290 1767  589   ! ! !   ! !  
\f

tsaoslst    81.06.10.   12.29.                                                    page    62

48010 1768  590   ! ! !   ! ! 4:  (* update pax-table from net *)
48020 1769  591   ! ! !   ! !     (*--- comming in a databuffer ---*)
48030 1770  592   ! ! !   ! !   BEGIN
48040 1771  593   ! ! !   ! !   ! sensesem( nref, sem( pax_pool).w^);
48050 1772  594   ! ! !   ! !   ! 
48060 1773  595   ! ! !   ! !   ! IF NOT nil(nref) THEN
48070 1774  596   ! ! !   ! !   !   BEGIN
48080 1775  597   ! ! !   ! !   !   ! nref^.u1 := dte_rdata;
48090 1776  598   ! ! !   ! !   !   ! nref^.u2 := 0;
48100 1777  599   ! ! !   ! !   !   ! nref^.u3 := params(2) MOD 256;
48110 1778  600   ! ! !   ! !   !   ! nref^.u4 := to_link;
48120 1779  601   ! ! !   ! !   !   ! 
48130 1780  602   ! ! !   ! !   !   ! LOCK nref AS buf : tst_sdata_data DO
48140 1781  603   ! ! !   ! !   !   !   WITH buf DO
48150 1782  604   ! ! !   ! !   !   !     BEGIN
48160 1783  605   ! ! !   ! !   !   !     ! control.op_code := opc_command;
48170 1784  606   ! ! !   ! !   !   !     ! WITH a_l DO
48180 1785  607   ! ! !   ! !   !   !     !   BEGIN
48190 1786  608   ! ! !   ! !   !   !     !   ! no_of_by := l_listen;
48200 1787  609   ! ! !   ! !   !   !     !   ! op_code := #hac;
48210 1788  610   ! ! !   ! !   !   !     !   ! update := insert_code;
48220 1789  611   ! ! !   ! !   !   !     !   ! rec.macro := packmacro(3);
48230 1790  612   ! ! !   ! !   !   !     !   ! rec.micro := netc_mic_addr;
48240 1791  613   ! ! !   ! !   !   !     !   ! send.macro := packmacro(6);
48250 1792  614   ! ! !   ! !   !   !     !   ! send.micro := 0;
48260 1793  615   ! ! !   ! !   !   !     !   END;
48270 1794  616   ! ! !   ! !   !   !     ! indx := params(9);
48280 1795  617   ! ! !   ! !   !   !     ! WITH p_e DO
48290 1796  618   ! ! !   ! !   !   !     !   BEGIN
48300 1797  619   ! ! !   ! !   !   !     !   ! al_mac_addr := packmacro(10);
48310 1798  620   ! ! !   ! !   !   !     !   ! pax_addr := paxnet_config( params(15));
48320 1799  621   ! ! !   ! !   !   !     !   ! 
48330 1800  622   ! ! !   ! !   !   !     !   ! stream_no := params(16);
48340 1801  623   ! ! !   ! !   !   !     !   ! max_retrans := 1;
48350 1802  624   ! ! !   ! !   !   !     !   END;
48360 1803  625   ! ! !   ! !   !   !     END;
48370 1804  626   ! ! !   ! !   !   END;
48380 1805  627   ! ! !   ! !   END;
48390 1806  628   ! ! !   ! ! 
48400 1807  629   ! ! !   ! !   (*     strm receiver sender indx al-mac pax strm *)
48410 1808  630   ! ! !   ! !   (* n 4  1    1 2 2   1 0 0   1   1 4 2 0 0 4  1  *)
48420 1809  631   ! ! !   ! !  
\f

tsaoslst    81.06.10.   12.29.                                                    page    63

49010 1810  632   ! ! !   ! ! 5: (* send data or receipt from net *)
49020 1811  633   ! ! !   ! !   BEGIN
49030 1812  634   ! ! !   ! !   ! sensesem( nref, sem(pax_pool).w^);
49040 1813  635   ! ! !   ! !   ! 
49050 1814  636   ! ! !   ! !   ! IF NOT nil( nref) THEN
49060 1815  637   ! ! !   ! !   !   BEGIN
49070 1816  638   ! ! !   ! !   !   ! nref^.u1 := dte_rdata;
49080 1817  639   ! ! !   ! !   !   ! nref^.u2 := 0;
49090 1818  640   ! ! !   ! !   !   ! nref^.u3 := params(4) MOD 256;
49100 1819  641   ! ! !   ! !   !   ! nref^.u4 := to_link;
49110 1820  642   ! ! !   ! !   !   ! 
49120 1821  643   ! ! !   ! !   !   ! LOCK nref AS buf : tst_sdata_data DO
49130 1822  644   ! ! !   ! !   !   !   WITH buf DO
49140 1823  645   ! ! !   ! !   !   !     BEGIN
49150 1824  646   ! ! !   ! !   !   !     ! control.op_code := params(2);
49160 1825  647   ! ! !   ! !   !   !     ! control.data := params(3);
49170 1826  648   ! ! !   ! !   !   !     ! a_l.rec.macro := packmacro(5);
49180 1827  649   ! ! !   ! !   !   !     ! a_l.rec.micro := 0;
49190 1828  650   ! ! !   ! !   !   !     ! a_l.op_code := #h30;
49200 1829  651   ! ! !   ! !   !   !     END;
49210 1830  652   ! ! !   ! !   !   END;
49220 1831  653   ! ! !   ! !   END;
49230 1832  654   ! ! !   ! ! 
49240 1833  655   ! ! !   ! !   (*        opcode  data   stream   receiver  *)
49250 1834  656   ! ! !   ! !   (* n 5      x      x        1       1 2 2   *)
49260 1835  657   ! ! !   ! !   (* dte-aic  16     128   data-received *)
49270 1836  658   ! ! !   ! !   (* dte-rej  20      64   data-not-received *)
49280 1837  659   ! ! !   ! !   (* opc-rec  96           *)
49290 1838  660   ! ! !   ! !   (* opc-com  48           *)
49300 1839  661   ! ! !   ! ! 
49310 1840  662   ! ! !   ! ! 
49320 1841  663   ! ! !   ! ! OTHERWISE
49330 1842  664   ! ! !   ! ! outstring10("undef test");
49340 1843  665   ! ! !   ! END;
49350 1844  666   ! ! !   ! IF NOT nil( nref) THEN
49360 1845  667   ! ! !   !   signal( nref, sem( netc_sem_no).s^)
49370 1846  668   ! ! !   ! ELSE
49380 1847  669   ! ! !   !   outstring10("no buffers");
49390 1848  670   ! ! !   END;
49400 1849  671   ! ! ! 
49410 1850  672   ! ! !  
\f

tsaoslst    81.06.10.   12.29.                                                    page    64

50010 1851  673   ! ! ! "o": (* output *)
50020 1852  674   ! ! !     (* outputs current buffer incl. user parameters
50030 1853  675   ! ! !     1st param is firstword,
50040 1854  676   ! ! !     2nd param is lastword *)
50050 1855  677   ! ! !   BEGIN
50060 1856  678   ! ! !   ! IF nil(cur) THEN
50070 1857  679   ! ! !   !   outstring10 ("no buffer ")
50080 1858  680   ! ! !   ! ELSE
50090 1859  681   ! ! !   !   BEGIN
50100 1860  682   ! ! !   !   ! outchar("u");
50110 1861  683   ! ! !   !   ! outchar(":");
50120 1862  684   ! ! !   !   ! 
50130 1863  685   ! ! !   !   ! outinteger(cur^.u1,4);
50140 1864  686   ! ! !   !   ! outinteger(cur^.u2,4);
50150 1865  687   ! ! !   !   ! outinteger(cur^.u3,4);
50160 1866  688   ! ! !   !   ! outinteger(cur^.u4,4);
50170 1867  689   ! ! !   !   ! writenl;
50180 1868  690   ! ! !   !   ! 
50190 1869  691   ! ! !   !   ! IF (noofparams>=1) AND (params(1)>=1)
50200 1870  692   ! ! !   !   !   AND (params(1)<= curbufsize) THEN
50210 1871  693   ! ! !   !   !   firstword:= params(1);
50220 1872  694   ! ! !   !   ! 
50230 1873  695   ! ! !   !   ! IF (noofparams>=2) AND (params(2)<=curbufsize) THEN
50240 1874  696   ! ! !   !   !   lastword:= params(2);
50250 1875  697   ! ! !   !   ! IF lastword>curbufsize THEN
50260 1876  698   ! ! !   !   !   lastword:= curbufsize;
50270 1877  699   ! ! !   !   ! 
50280 1878  700   ! ! !   !   ! IF cur^.size<curbufsize THEN
50290 1879  701   ! ! !   !   !   outstring20("too small buffer    ") ELSE
50300 1880  702   ! ! !   !   !   FOR i:= firstword TO lastword DO
50310 1881  703   ! ! !   !   !     BEGIN
50320 1882  704   ! ! !   !   !     ! outdecimal(i,3);
50330 1883  705   ! ! !   !   !     ! outchar(":");
50340 1884  706   ! ! !   !   !     ! CASE curbuftype OF
50350 1885  707   ! ! !   !   !     ! ! 1: LOCK cur AS minbuf: minbuftype DO
50360 1886  708   ! ! !   !   !     ! !     j:= minbuf(i);
50370 1887  709   ! ! !   !   !     ! ! 2: LOCK cur AS messbuf: messbuftype DO
50380 1888  710   ! ! !   !   !     ! !     j:= messbuf(i);
50390 1889  711   ! ! !   !   !     ! ! 3: LOCK cur AS maxbuf: maxbuftype DO
50400 1890  712   ! ! !   !   !     ! !     j:= maxbuf(i);
50410 1891  713   ! ! !   !   !     ! ! 4: LOCK cur AS testbuf: testbuftype DO
50420 1892  714   ! ! !   !   !     ! !     j:= testbuf(i);
50430 1893  715   ! ! !   !   !     ! ! OTHERWISE
50440 1894  716   ! ! !   !   !     ! ! j:= 0;
50450 1895  717   ! ! !   !   !     ! END;
50460 1896  718   ! ! !   !   !     ! IF base= 2 THEN
\f

tsaoslst    81.06.10.   12.29.                                                    page    65

50470 1897  719   ! ! !   !   !     !   outinteger(j,17)
50480 1898  720   ! ! !   !   !     ! ELSE
50490 1899  721   ! ! !   !   !     !   outinteger(j,7);
50500 1900  722   ! ! !   !   !     ! writenl;
50510 1901  723   ! ! !   !   !     END;
50520 1902  724   ! ! !   !   END (* ok *);
50530 1903  725   ! ! !   END (* output *);
50540 1904  726   ! ! !  
\f

tsaoslst    81.06.10.   12.29.                                                    page    66

51010 1905  727   ! ! ! "p": (* partial words *)
51020 1906  728   ! ! !     (* fills partial words i.e. bytes into current buffer.
51030 1907  729   ! ! !     1st param: word no. in which to start
51040 1908  730   ! ! !     2nd param: byte no. (of 1st word) in which to start:
51050 1909  731   ! ! !     -           0: left byte
51060 1910  732   ! ! !     -           1: right byte
51070 1911  733   ! ! !     following: byte values to be assigned *)
51080 1912  734   ! ! !   BEGIN
51090 1913  735   ! ! !   ! IF noofparams<2 THEN
51100 1914  736   ! ! !   !   outstring10("param     ")
51110 1915  737   ! ! !   ! ELSE
51120 1916  738   ! ! !   !   IF (params(1)<1) THEN
51130 1917  739   ! ! !   !     outstring20("illegal start-word  ")
51140 1918  740   ! ! !   !   ELSE
51150 1919  741   ! ! !   !     IF NOT (params(2) IN (.0,1.)) THEN
51160 1920  742   ! ! !   !       outstring20 ("2nd must be 0 or 1  ")
51170 1921  743   ! ! !   !     ELSE
51180 1922  744   ! ! !   !       IF nil (cur) THEN
51190 1923  745   ! ! !   !         outstring10 ("no buffer ")
51200 1924  746   ! ! !   !       ELSE
51210 1925  747   ! ! !   !         BEGIN (* params are ok *)
51220 1926  748   ! ! !   !         ! i:= params(1); (* i points into current buffer *)
51230 1927  749   ! ! !   !         ! j:= params(2);
51240 1928  750   ! ! !   !         ! 
51250 1929  751   ! ! !   !         ! IF cur^.size<messbufsize THEN
51260 1930  752   ! ! !   !         !   outstring20("too small buffer    ") ELSE
51270 1931  753   ! ! !   !         !   LOCK cur AS messbuf: messbuftype DO
51280 1932  754   ! ! !   !         !     BEGIN
51290 1933  755   ! ! !   !         !     ! IF messbuf(i)<0 THEN
51300 1934  756   ! ! !   !         !     !   leftbyte:= (messbuf(i)+255) DIV 256
51310 1935  757   ! ! !   !         !     ! ELSE
51320 1936  758   ! ! !   !         !     !   leftbyte:= messbuf(i) DIV 256;
51330 1937  759   ! ! !   !         !     ! 
51340 1938  760   ! ! !   !         !     ! FOR k:= 3 TO noofparams DO
51350 1939  761   ! ! !   !         !     !     (* k points into the parameter list *)
51360 1940  762   ! ! !   !         !     !   IF i<= messbufsize THEN
51370 1941  763   ! ! !   !         !     !     BEGIN
51380 1942  764   ! ! !   !         !     !     ! CASE j OF
51390 1943  765   ! ! !   !         !     !     ! ! 0:
51400 1944  766   ! ! !   !         !     !     ! !   BEGIN (* left *)
51410 1945  767   ! ! !   !         !     !     ! !   ! rightbyte:= abs(messbuf(i) MOD 256);
51420 1946  768   ! ! !   !         !     !     ! !   ! leftbyte := params (k);
51430 1947  769   ! ! !   !         !     !     ! !   END;
51440 1948  770   ! ! !   !         !     !     ! ! 1:
51450 1949  771   ! ! !   !         !     !     ! !   BEGIN (* right *)
51460 1950  772   ! ! !   !         !     !     ! !   ! rightbyte:= params (k);
\f

tsaoslst    81.06.10.   12.29.                                                    page    67

51470 1951  773   ! ! !   !         !     !     ! !   ! IF leftbyte>=128 THEN
51480 1952  774   ! ! !   !         !     !     ! !   !   BEGIN
51490 1953  775   ! ! !   !         !     !     ! !   !   ! messbuf(i):= (leftbyte-128)*256 + rightbyte;
51500 1954  776   ! ! !   !         !     !     ! !   !   ! IF messbuf(i)>0 THEN
51510 1955  777   ! ! !   !         !     !     ! !   !   !   messbuf(i):= -((32767-messbuf(i))+1)
51520 1956  778   ! ! !   !         !     !     ! !   !   ! ELSE messbuf(i):= -32768;
51530 1957  779   ! ! !   !         !     !     ! !   !   END
51540 1958  780   ! ! !   !         !     !     ! !   ! ELSE
51550 1959  781   ! ! !   !         !     !     ! !   !   messbuf(i):= leftbyte*256 + rightbyte;
51560 1960  782   ! ! !   !         !     !     ! !   ! i:= i+1;
51570 1961  783   ! ! !   !         !     !     ! !   END;
51580 1962  784   ! ! !   !         !     !     ! ! 
51590 1963  785   ! ! !   !         !     !     ! END (* case *);
51600 1964  786   ! ! !   !         !     !     ! 
51610 1965  787   ! ! !   !         !     !     ! j:= 1-j;
51620 1966  788   ! ! !   !         !     !     END;
51630 1967  789   ! ! !   !         !     ! 
51640 1968  790   ! ! !   !         !     ! IF (j=1) AND (i<=messbufsize) THEN
51650 1969  791   ! ! !   !         !     !   IF leftbyte>=128 THEN
51660 1970  792   ! ! !   !         !     !     BEGIN
51670 1971  793   ! ! !   !         !     !     ! IF messbuf(i)>0 THEN
51680 1972  794   ! ! !   !         !     !     !   messbuf(i):= (leftbyte-128)*256 + rightbyte
51690 1973  795   ! ! !   !         !     !     ! ELSE messbuf(i):= - 32768;
51700 1974  796   ! ! !   !         !     !     ! messbuf(i):= -((32767-messbuf(i))+1);
51710 1975  797   ! ! !   !         !     !     END
51720 1976  798   ! ! !   !         !     !   ELSE
51730 1977  799   ! ! !   !         !     !     messbuf(i):= leftbyte*256 + rightbyte;
51740 1978  800   ! ! !   !         !     END (* lock *);
51750 1979  801   ! ! !   !         END (* params ok *);
51760 1980  802   ! ! !   END (* partial *);
51770 1981  803   ! ! !  
\f

tsaoslst    81.06.10.   12.29.                                                    page    68

52010 1982  804   ! ! ! "r": (* return *)
52020 1983  805   ! ! !     (* returns current buffer *)
52030 1984  806   ! ! !   IF nil(cur)
52040 1985  807   ! ! !     THEN outstring10("no buffer ")
52050 1986  808   ! ! !   ELSE return(cur);
52060 1987  809   ! ! !  
\f

tsaoslst    81.06.10.   12.29.                                                    page    69

53010 1988  810   ! ! ! "s": (* signal *)
53020 1989  811   ! ! !     (* signals current buffer to one of the predefined semaphores.
53030 1990  812   ! ! !     1st param is semno *)
53040 1991  813   ! ! !   BEGIN
53050 1992  814   ! ! !   ! semno:= params(1);
53060 1993  815   ! ! !   ! 
53070 1994  816   ! ! !   ! IF noofparams >= 1 THEN
53080 1995  817   ! ! !   !   IF (1<=semno) AND (semno<=noofsemaphores) THEN
53090 1996  818   ! ! !   !     IF NOT nil(cur) THEN
53100 1997  819   ! ! !   !       signal (cur,ts_sem(semno))
53110 1998  820   ! ! !   !     ELSE outstring10("no buffer ")
53120 1999  821   ! ! !   !     ELSE
53130 2000  822   ! ! !   !       IF (semno <= -1) AND (semno >= -applsem_max) THEN
53140 2001  823   ! ! !   !         signal( cur, evavector( -semno))
53150 2002  824   ! ! !   !       ELSE outstring10(illegalno)
53160 2003  825   ! ! !   !       ELSE outstring10(noparam)
53170 2004  826   ! ! !   END (* signal *);
53180 2005  827   ! ! !  
\f

tsaoslst    81.06.10.   12.29.                                                    page    70

54010 2006  828   ! ! ! "t": (* testsem *)
54020 2007  829   ! ! !     (* tests the status of the specified semaphores.
54030 2008  830   ! ! !     if none is specified, the status of all the
54040 2009  831   ! ! !     user semaphores is given.
54050 2010  832   ! ! !     in both cases nothing will be written for a semaphore
54060 2011  833   ! ! !     if it is passive. *)
54070 2012  834   ! ! !   BEGIN
54080 2013  835   ! ! !   ! IF noofparams=0 THEN
54090 2014  836   ! ! !   !   BEGIN (* test all semaphores *)
54100 2015  837   ! ! !   !   ! 
54110 2016  838   ! ! !   !   ! FOR i:= -applsem_max TO -1 DO
54120 2017  839   ! ! !   !   !   testsem( i,evavector(-i));
54130 2018  840   ! ! !   !   ! 
54140 2019  841   ! ! !   !   ! FOR i:=1 TO noofsemaphores DO
54150 2020  842   ! ! !   !   !   testsem(i,ts_sem(i))
54160 2021  843   ! ! !   !   END (* test all *)
54170 2022  844   ! ! !   ! ELSE
54180 2023  845   ! ! !   !   BEGIN (* test the specified semaphores *)
54190 2024  846   ! ! !   !   ! 
54200 2025  847   ! ! !   !   ! FOR i:=1 TO noofparams DO
54210 2026  848   ! ! !   !   !   IF (params(i)=0) OR (params(i)>noofsemaphores)
54220 2027  849   ! ! !   !   !     OR (params(i) < -applsem_max) THEN
54230 2028  850   ! ! !   !   !     BEGIN (* illegal no. *)
54240 2029  851   ! ! !   !   !     ! outstring20("illegal no.:        ");
54250 2030  852   ! ! !   !   !     ! outdecimal(params(i),3);
54260 2031  853   ! ! !   !   !     ! writenl;
54270 2032  854   ! ! !   !   !     END (* illegal no *)
54280 2033  855   ! ! !   !   !   ELSE
54290 2034  856   ! ! !   !   !     BEGIN
54300 2035  857   ! ! !   !   !     ! IF params(i)>0 THEN
54310 2036  858   ! ! !   !   !     !   testsem( params(i), ts_sem(params(i)))
54320 2037  859   ! ! !   !   !     ! ELSE
54330 2038  860   ! ! !   !   !     !   testsem( params(i), evavector(-params(i)));
54340 2039  861   ! ! !   !   !     END
54350 2040  862   ! ! !   !   END (* test the specified semaphores *)
54360 2041  863   ! ! !   END (* testsem *);
54370 2042  864   ! ! ! 
54380 2043  865   ! ! !  
\f

tsaoslst    81.06.10.   12.29.                                                    page    71

55010 2044  866   ! ! ! "u": (* user parameters *)
55020 2045  867   ! ! !     (* inserts user param into header of current buffer
55030 2046  868   ! ! !     1st param is u1
55040 2047  869   ! ! !     2nd param is u2
55050 2048  870   ! ! !     3rd param is u3
55060 2049  871   ! ! !     4th param is u4 *)
55070 2050  872   ! ! !   BEGIN
55080 2051  873   ! ! !   ! IF nil(cur)
55090 2052  874   ! ! !   !   THEN outstring10("no buffer ")
55100 2053  875   ! ! !   ! ELSE
55110 2054  876   ! ! !   !   IF noofparams = 0 THEN
55120 2055  877   ! ! !   !     outstring10(noparam)
55130 2056  878   ! ! !   !   ELSE
55140 2057  879   ! ! !   !     WITH cur^ DO
55150 2058  880   ! ! !   !       BEGIN
55160 2059  881   ! ! !   !       ! IF testinterval (params(1),0,255) THEN u1:= params(1);
55170 2060  882   ! ! !   !       ! IF (noofparams>=2) THEN IF testinterval(params(2),0,255) THEN
55180 2061  883   ! ! !   !       !     u2:= params(2);
55190 2062  884   ! ! !   !       ! IF (noofparams>=3) THEN IF testinterval(params(3),0,255) THEN
55200 2063  885   ! ! !   !       !     u3:= params(3);
55210 2064  886   ! ! !   !       ! IF (noofparams>=4) THEN IF testinterval(params(4),0,255) THEN
55220 2065  887   ! ! !   !       !     u4:= params(4);
55230 2066  888   ! ! !   !       END
55240 2067  889   ! ! !   END; (* end user parameters *)
55250 2068  890   ! ! ! 
55260 2069  891   ! ! !  
\f

tsaoslst    81.06.10.   12.29.                                                    page    72

56010 2070  892   ! ! ! "w": (* wait *)
56020 2071  893   ! ! !     (* waits for semaphore semno.
56030 2072  894   ! ! !     1st param is semno *)
56040 2073  895   ! ! !   BEGIN
56050 2074  896   ! ! !   ! semno:= params(1);
56060 2075  897   ! ! !   ! 
56070 2076  898   ! ! !   ! IF noofparams >= 1 THEN
56080 2077  899   ! ! !   !   IF nil(cur) THEN
56090 2078  900   ! ! !   !     IF ((semno>0) AND (semno <= noofsemaphores))
56100 2079  901   ! ! !   !       OR ((semno<0) AND (semno >= -applsem_max)) THEN
56110 2080  902   ! ! !   !       BEGIN
56120 2081  903   ! ! !   !       ! IF semno > 0 THEN
56130 2082  904   ! ! !   !       !   sensesem( cur, ts_sem(semno))
56140 2083  905   ! ! !   !       ! ELSE
56150 2084  906   ! ! !   !       !   sensesem( cur, evavector(-semno));
56160 2085  907   ! ! !   !       ! IF nil(cur) THEN
56170 2086  908   ! ! !   !       !   outstring20("semaphore not open  ")
56180 2087  909   ! ! !   !       ! ELSE
56190 2088  910   ! ! !   !       !   BEGIN
56200 2089  911   ! ! !   !       !   ! get_curbuftype;
56210 2090  912   ! ! !   !       !   ! outstring10("  bufsize ");
56220 2091  913   ! ! !   !       !   ! outinteger(curbufsize, 5);
56230 2092  914   ! ! !   !       !   ! outinteger(cur^.size, 5)
56240 2093  915   ! ! !   !       !   END;
56250 2094  916   ! ! !   !       END
56260 2095  917   ! ! !   !     ELSE outstring10(illegalno)
56270 2096  918   ! ! !   !     ELSE outstring20("you already have one")
56280 2097  919   ! ! !   !     ELSE outstring10(noparam)
56290 2098  920   ! ! !   END (* wait *);
56300 2099  921   ! ! !  
\f

tsaoslst    81.06.10.   12.29.                                                    page    73

57010 2100  922   ! ! ! "x": (* exchange pointer *)
57020 2101  923   ! ! !   BEGIN
57030 2102  924   ! ! !   ! IF noofparams >= 2 THEN
57040 2103  925   ! ! !   !   IF (params(1)>0) AND (params(1)<=noofsemaphores) THEN
57050 2104  926   ! ! !   !     IF (params(2)>0) AND (params(2)<=noofsemaphores) THEN
57060 2105  927   ! ! !   !       BEGIN
57070 2106  928   ! ! !   !       ! worksem:= sem(params(1)).w;
57080 2107  929   ! ! !   !       ! sem(params(1)).w:= sem(params(2)).w;
57090 2108  930   ! ! !   !       ! sem(params(2)).w:= worksem;
57100 2109  931   ! ! !   !       END
57110 2110  932   ! ! !   !     ELSE outstring10(valparam)
57120 2111  933   ! ! !   !     ELSE outstring10(valparam)
57130 2112  934   ! ! !   !     ELSE outstring10(noparam)
57140 2113  935   ! ! !   END (* exchange pointer *);
57150 2114  936   ! ! ! 
57160 2115  937   ! ! ! 
57170 2116  938   ! ! ! OTHERWISE (* error *)
57180 2117  939   ! ! ! outstring20 ("illegal comm. type h");
57190 2118  940   ! ! END (* case *);
57200 2119  941   ! ! 
57210 2120  942   ! ! IF command<>";" THEN
57220 2121  943   ! !   writenl;
57230 2122  944   ! ! 
57240 2123  945   ! UNTIL false;
57250 2124  946   ! 
57260 2125  947   END.
57270 2126      
57280 2127      
57290 2128      
57300 2129      
\f

tsaoslst    81.06.10.   12.29.                                                    page    74

           0   39*   52*   81*  162*  162*  163*  169*  169*  169*  386   391   413   414   420   429 
              439:  439   451   477   479   528   613   623   657   661   666   722*  745   754   764 
              770   777   789   800   801   801   828   831   836   846   851   852   951   957   959 
              975  1022  1044  1051  1096  1111  1188  1189  1273  1296  1297  1299  1305  1306  1307 
             1308  1614  1616  1706  1754  1756  1776  1792  1817  1827  1894  1919  1933  1943: 1954 
             1971  2013  2026  2035  2054  2059  2060  2062  2064  2078  2079  2081  2103  2104 
           1   40*   51*   71*   72*   73*   74*   81*   84*   85*  108*  158*  159*  371   401   412 
              421   431   440:  492   495   504   565:  583   589   609   699   723*  736   739   753 
              754   759   764   772   784   786   789   793   794   808   823   827   849   853   855 
              861   865   880   888   897   913   915  1020  1029  1046  1061  1062  1120  1199  1221 
             1225  1242  1253  1260  1268  1292  1294  1324  1331  1337  1345  1348  1350  1352  1374 
             1378: 1413  1416  1420  1427  1431  1480  1560  1560  1567  1574: 1584  1615  1616  1616 
             1617  1617  1626  1627  1630  1659  1661: 1688  1721  1727  1801  1869  1869  1869  1870 
             1871  1885: 1916  1916  1919  1926  1948: 1955  1960  1965  1968  1974  1992  1994  1995 
             2000  2016  2019  2025  2059  2059  2074  2076  2103  2103  2106  2107 
           2  372   390   402   414   433   441:  525   569:  591   631   774   775   777   778   786 
              787   789   790   796   797   800   801   807:  833  1005: 1033: 1222  1225  1228  1331 
             1350  1385  1389: 1413  1474  1514  1532  1557  1569  1576: 1680  1698: 1718  1753  1777 
             1824  1873  1873  1874  1887: 1896  1913  1919  1927  2060  2060  2061  2102  2104  2104 
             2107  2108 
           3   94*  169*  373   388   435   442:  573:  631   633   813   826  1106  1124  1138  1191 
             1195  1396: 1404  1405  1432  1446  1448  1463  1490  1506  1522  1534  1578: 1739: 1757 
             1789  1825  1882  1889: 1938  2030  2062  2062  2063 
           4  164*  436   443:  577:  672   685   818   819  1017  1071  1084  1354  1412: 1580: 1637 
             1643  1768: 1818  1863  1864  1865  1866  1891: 2064  2064  2065 
           5  163*  164*  534   581:  608  1312  1313  1438: 1486  1682  1720  1755  1810: 1826  2091 
             2092 
           6   50*  412   587:  814  1012  1195  1455: 1489  1791 
           7  162*  163*  164*  416   585   593: 1371  1382  1667  1707  1745  1899 
           8  602:  812:  825  1010: 1034: 1331  1683  1722 
           9  389   606:  843  1196  1794 
          10   84*  419   485   610:  710   741   880   960   973  1186  1196  1267  1269  1331  1471:
             1797 
          11  614: 1499:
          12   96*  620:  888  1511:
          13  624: 1528: 1684  1723 
          14  419   421   629: 1196  1686  1726 
          15  635:  722*  772   784   794   831  1687  1725  1798 
          16   36*  809   817:  956   980  1007  1015: 1026  1035: 1187  1331  1712  1800 
          17  639: 1897 
          18  647:
          19  654:
          20   85*  658:  719*  897 
          21   37*  663:
\f

tsaoslst    81.06.10.   12.29.                                                    page    75

          40  579 
          50  158*  502 
          63  591 
          64   33*  633 
          80   31*   49*
          87  969   992  1041 
         100  531  1195 
         120   34*   35*
         128 1951  1953  1969  1972 
         255 1934  2059  2060  2062  2064 
         256  390  1777  1818  1934  1936  1945  1953  1959  1972  1977 
         257  585 
         512  613   623   657   661   666 
        1000 1195 
        1024 1266 
        2048 1035 
        3276  983 
        4096 1034 
       16384 1033 
       32767 1046  1955  1974 
       32768  985  1045  1956  1973 
a              89*  398*  400   401   402   403   410*  413=  416=  420=  422   423  1098= 1099= 1672:
             1678  1679  1680  1681  1682 
abs           751  1945 
abuf         1749: 1750 
aic_buf_type 1418 
aic_id       1420=
aic_q        1421=
al           1752  1753  1754  1755  1756 
alarmlabel   1672 
alarm_mess   1406  1449  1491  1523 
alarm_opsys     4*
alfa           66*  346*  514*  884*
alfa10         84*  343*  874*
alfa20         85*  349*  361*  892* 1079*
alfalength     50*
alloc        1227  1240  1255  1262  1300  1302 
alreadyexists                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
               44*  523   686 
al_env_version                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             1184 
al_lam1      1216 
al_mac_addr  1683= 1722= 1797=
ap            167* 1098  1101= 1104  1136 
\f

tsaoslst    81.06.10.   12.29.                                                    page    76

applsem_max  1297  2000  2016  2027  2079 
appl_vector     5*
as            454:  460:  696:  909: 1060: 1159: 1229: 1244: 1384: 1401: 1418: 1429: 1443: 1460: 1476:
             1504: 1516: 1533: 1574: 1576: 1578: 1580: 1671: 1710: 1749: 1780: 1821: 1885: 1887: 1889:
             1891: 1931:
atbuffer       81*
atconnector   199*  583 
atcsem        202*
atc_pri       586 
atc_sem_no    583   583 
atc_size      586 
athsem        205*
ath_pri       572 
ath_sem_no    584 
ath_size      572 
at_handler    177*  571 
a_l          1715  1716  1717  1718  1719  1720  1721  1784  1826  1827  1828 
base          132*  484   485=  498=  508=  709   710=  712=  741   751   752   806   825   956   960 
              973   980   991   992  1004  1026  1032  1039  1041  1267= 1326= 1334= 1337= 1896 
bit           722*
bits          722*  774=  777=  786=  789=  796   797=  797   800   801=  801   833 
boolean       154*  326*  475*  678*  733*  935* 1065* 1093*
bp            167* 1099  1101  1104  1136 
break        1633 
buf          1384: 1385  1401: 1402  1418: 1420  1421  1429: 1431  1432  1443: 1444  1460: 1461  1476:
             1477  1504: 1505  1516: 1517  1533: 1534  1671: 1676  1710: 1712  1713  1780: 1781  1821:
             1822 
byte           78*   81*  168*  213*  230*  297*  329*  378*
call_buf     1482 
car_buf_type 1476 
ch            693*  700   940*  946=  953   954=  955   956   967   968   969   977=  979   980   983 
              990   991   992  1006  1011  1016  1024= 1025  1026  1038  1039  1041 
channelno     213*  230*
char           67*   84*   85*  128*  352*  693*  723*  904*  940*
chr           751   844   845 
clear_buf_type                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             1533 
command       128*  466=  468   481   496  1281  1632  2120 
com_pool      585   591   598   617   633   643  1255  1663  1741 
com_pool_sem  304*
com_sem       208*  225*  241*
control      1447  1484  1521  1783  1824  1825 
controlinfo    78*
countref      112* 1114  1115  1119  1127  1128 
\f

tsaoslst    81.06.10.   12.29.                                                    page    77

countsem      102* 1119  1125  1127 
create        527 
createchtype   76*
createerror    47*  532 
cur           115*  428   430   432   434  1255  1256  1262  1263  1295  1300  1302  1303  1313  1563 
             1574: 1576: 1578: 1580: 1856  1863  1864  1865  1866  1878  1885: 1887: 1889: 1891: 1922 
             1929  1931: 1984  1986  1996  1997  2001  2051  2057  2077  2082  2084  2085  2092 
curbufsize    145*  439=  440=  441=  442=  443= 1312  1571  1870  1873  1875  1876  1878  2091 
curbuftype    146*  429=  431=  433=  435=  436=  438  1573  1884 
curdigit      724*  823=  838   839   844   845   849   853=  853   937* 1020= 1029= 1029  1030  1042 
curpos        725*  826=  827=  834   852=  855=  855 
c_b          1713 
c_i          1712=
da           1406= 1449= 1491= 1523= 1758=
data           67*  700=  912  1234= 1825=
dcaddr        227*
dcmodule      261*  616 
dcsem         237*
dc_addr       162*  180*  188*  210*  400=  571   575   585   591   633 
dc_int1       618 
dc_int2       618 
dc_int3       618 
dc_sem_no     596   618 
dc_sim_pri    619 
dc_sim_size   619 
diag_code    1534=
digit         935*  947=  955=  957   965   975   979=  981  1022  1025= 1027 
digits        723*  739=  751=  758=  764=  839=  844=  845=  867   930*  955   967   979   990  1025 
             1038 
doesntexist    45*
done          277*
driversem     206*
dst           388=
dtesimulator  283*  649 
dte_addr      169*  292*  652  1188  1189  1190  1191 
dte_adr      1486=
dte_adr_l    1485=
dte_aic      1415  1506 
dte_car      1404  1473  1484 
dte_clr      1463  1530 
dte_pax_addr  367*  374=  387   388 
dte_rdata    1775  1816 
dte_rejic    1426 
dte_ric      1391  1705 
\f

tsaoslst    81.06.10.   12.29.                                                    page    78

dte_sdata    1446  1513 
dte_sdata_data                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             1516 
dte_sem       287*  306*
dte_sem_no    600   644   649  1262  1545 
d_a          1728=
evavector       5* 1206  1208  1210  1212  1214  1216  1302  2001  2017  2038  2084 
external      175*  183*  191*  197*  214*  231*  248*  254*  259*  265*  270*  281*  294*  308*  313*
              318*  323*  327*  330*
ext_addr      373= 1191=
ext_no       1385=
ext_pax_addr  407*  410*
facility      389= 1489=
facility_l   1488=
false         489   499   687   848   944   947   962   986  1073  1116  1182  1421  1481  1519  1520 
             2123 
first          63*  463  1065* 1068  1232= 1247= 1479=
firstindex     50*   51*   67*  455   464  1160  1232  1234  1247 
firstword     133* 1268= 1871= 1880 
format        383=
format_1_packet_header                                           <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              379*
free          276*
from_link    1372 
getinput      447* 1279 
getparams     334*  470   473*
get_curbuftype                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              426* 1310  2089 
global_timeout                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              297*
glob_timeout  641 
h             726*  831=  833 
h2f          1633 
h30          1747  1828 
hac          1669  1716  1787 
hexdigits     931*  956   980  1026 
i             134*  361*  367*  370   371   372   373   378*  387   388   409*  412=  413   414=  416 
              416   417   419=  420   421=  422   726*  739=  739   743=  751   753=  753   754   758 
              759=  759   762   772=  774   784=  786   794=  796   797   797   865=  867   878*  880=
              881   886*  888=  889   895*  897=  898  1065* 1068  1068  1071  1079* 1084  1089* 1096 
             1098  1099  1106  1138  1199= 1201  1201  1202  1202  1225= 1253= 1260= 1405= 1406  1406 
             1448= 1449  1449  1490= 1491  1491  1522= 1523  1523  1567= 1571  1575  1577  1579  1581 
             1584= 1584  1615= 1615  1615  1627= 1629  1673: 1686= 1757= 1758  1758  1880= 1882  1886 
             1888  1890  1892  1926= 1933  1934  1936  1940  1945  1953  1954  1955  1955  1956  1959 
             1960= 1960  1968  1971  1972  1973  1974  1974  1977  2016= 2017  2017  2019= 2020  2020 
             2025= 2026  2026  2027  2030  2035  2036  2036  2038  2038 
\f

tsaoslst    81.06.10.   12.29.                                                    page    79

illegalno      46*  673  1070  1315  1355  1644  2002  2095 
incharsleft   135*  463=  915=  915   951   957   975  1022  1051  1062= 1062 
incname      1183 
inc_name      514*  527   533 
index         329*  512*  522   527   529   541*  564   566   570   574   578   582   588   594   603 
              607   611   615   621   625   630   636   640   648   655   659   664   672 
indx         1725= 1794=
init_modul    541* 1358 
init_proc     511*  566   570   574   578   582   588   594   603   607   611   615   621   625   630 
              636   640   648   655   659   664 
inputsem      243*  253*
insem         321*
insert_code  1679  1717  1788 
int           337*  340*  704*  711   715*  745   751   752=  752   754   764   770   774   775=  775 
              777   778=  778   786   787=  787   789   790=  790 
integer        65*   71*   72*   73*   74*  148*  158*  196*  212*  229*  252*  329*  337*  340*  355*
              361*  367*  378*  396*  407*  409*  512*  517*  520*  541*  678*  704*  715*  731*  878*
              886*  895*  921*  938* 1065* 1079* 1089* 1673 
int_pax_addr  169*  169*  292*  367*  368*
j             136* 1111= 1120= 1120  1124  1569= 1575  1577  1579  1581  1886= 1888= 1890= 1892= 1894=
             1897  1899  1927= 1942  1965= 1965  1968 
k             137* 1938= 1946  1950 
label_size   1405  1448  1490  1522  1757 
lam           250*  608 
lamsem        223*  239*
lam_sem_no    584   597   608   616  1216  1217  1217 
lam_size      609 
last           64*  699=  699   700  1065* 1068  1160= 1248= 1480=
lastchar      940*  945=  953=  961 
lastindex      51*   67* 1248 
lastword      138* 1269= 1874= 1875  1876= 1880 
leftbyte      139* 1934= 1936= 1946= 1951  1953  1959  1969  1972  1977 
level         252*
linelength     49*   51*
link          526 
local_sem_table                                                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              302*
lock          454:  460:  696:  909: 1060: 1159: 1229: 1244: 1384: 1401: 1418: 1429: 1443: 1460: 1476:
             1504: 1516: 1533: 1574: 1576: 1578: 1580: 1671: 1710: 1749: 1780: 1821: 1885: 1887: 1889:
             1891: 1931:
locked       1134 
l_control    1480 
l_dte_adr    1485 
l_facilities 1488 
\f

tsaoslst    81.06.10.   12.29.                                                    page    80

l_listen     1405  1448  1480  1490  1522  1678  1715  1752  1757  1786 
m             727*  793=  796   797   798=  800   801   802=
macro        1680= 1682= 1718= 1720= 1753= 1755= 1789= 1791= 1826=
macroaddr     162*  162*  163*  163*  164*  164*  181*  189*  211*  228*  396*  398*
main          275*
main_sem      301*
make_phead    377* 1404  1446  1463  1506 
max           196*
maxbuf       1578: 1579= 1889: 1890 
maxbufsize     35*   74*  432   442 
maxbuftype     74* 1578  1889 
maxpos        719*  723*  739   743   762   823   838   849   861   865   865 
max_alarm_mess                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             1749 
max_retrans  1688= 1727= 1801=
messbuf      1576: 1577= 1887: 1888  1931: 1933  1934  1936  1945  1953= 1954  1955= 1955  1956= 1959=
             1971  1972= 1973= 1974= 1974  1977=
messbufpool    97* 1255 
messbufsize    33*   71*  430   441  1929  1940  1968 
messbuftype    71*   97* 1576  1887  1931 
messem        219*
micaddr       229*
micro        1681= 1719= 1721= 1754= 1756= 1790= 1792= 1827=
minbuf       1574: 1575= 1885: 1886 
minbufsize     36*   73*  428   440 
minbuftype     73* 1574  1885 
min_rut_mess   59*
moduleno      140*  678*  682   685  1348= 1352  1352  1354  1358  1358  1629= 1630  1630  1631  1633 
             1634  1637  1643 
moduleready   678*  682=  687= 1358 
more         1093* 1108= 1112  1116=
m_bit        1520=
n1            543*  566   566 
n10           552*  611   611   621 
n11           553*  615   615 
n13           554*  625   625 
n14           555*  630   630 
n15           556*  636   636 
n16           557*
n17           558*  640   640 
n18           559*  648   648 
n19           560*  655   655 
n2            544*  570   570 
n20           561*  659   659 
\f

tsaoslst    81.06.10.   12.29.                                                    page    81

n21           562*  664   664 
n3            545*  574   574 
n4            546*  578   578 
n5            547*  582   582 
n6            548*  588   588 
n7            549*  594   594 
n8            550*  603   603 
n9            551*  607   607 
name           66*  513*  526  1233= 1249=
ncsem         238*
ncsup         272*  626 
ncsup_int1    626 
ncsup_int2    626 
nc_addr       163*  401=
nc_sem_no     597   626  1222 
nc_sup_size   628 
negative      733*  745=  756   935*  961=  962=  983   986=  997  1006= 1011= 1016= 1030  1042 
netconnector  296*  641 
netc_locals   157*  642  1221= 1222=
netc_loc_sems                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              157*  302*
netc_mic_addr                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             1681  1719  1790 
netc_pri      645   653 
netc_route1  1668 
netc_sem      289*
netc_sem_no   598   616   627   642   650  1845 
netc_size     645   653 
net_addr      370= 1188=
net_sem       279*
newbase       475*  486=  489=  499=  506 
newm          727*  796=  798   800=  802 
next           65*  455=  463   464=  912   913=  913  1061= 1061 
nl           1155 
node_addr     372= 1190=
node_no       168* 1186  1187= 1187  1190  1195  1195  1196  1196 
noofdig       728*  809=  814=  819=  823 
noofdigit     937* 1007= 1012= 1017= 1030  1042 
noofmodules    37*  159* 1352  1630 
noofparams    141*  479=  492=  492   493   494   495   502   504=  504   525  1273= 1294  1324  1345 
             1350  1557  1569  1614  1626  1627  1869  1873  1913  1938  1994  2013  2025  2054  2060 
             2062  2064  2076  2102 
noofpos       729*  808=  813=  818=  834 
noofsemaphores                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
               38* 1296  1615  1616  1995  2019  2026  2078  2103  2104 
\f

tsaoslst    81.06.10.   12.29.                                                    page    82

noparam        43* 1317  1327  1360  2003  2055  2097  2112 
no_listen      97* 1253 
no_of_by     1678= 1715= 1752= 1786=
no_pax_bufs    59* 1260 
nref          111* 1367  1369  1371  1372  1380  1381  1382  1384: 1391  1392  1398  1399  1400  1401:
             1415  1416  1417  1418: 1426  1427  1428  1429: 1440  1441  1442  1443: 1457  1458  1459 
             1460: 1473  1474  1475  1476: 1501  1502  1503  1504: 1513  1514  1515  1516: 1530  1531 
             1532  1533: 1545  1663  1665  1667  1668  1669  1671: 1701  1703  1705  1706  1707  1708 
             1710: 1741  1743  1745  1746  1747  1749: 1771  1773  1775  1776  1777  1778  1780: 1812 
             1814  1816  1817  1818  1819  1821: 1844  1845 
nul           945   946 
oflow         326*
ok             52*  458   520*  527=  528   531=  531   534 
okl           519*  526=  531   536=
oldbase       142*  484=  498   508   709=  712  1326  1334 
op            173*  178*  186*
opbuf         454:  455   460:  461   696:  697   909:  910  1060: 1061  1061  1159: 1160  1229: 1230 
             1244: 1245 
opbufpool      94* 1227  1240 
opbufsize      31*
opbuftype      61*   94*  454   460   696   909  1060  1159  1229  1244 
opc_command  1447  1521  1783 
open         1102  1125 
operatorsem  1180 
opinref       113*  454:  456   457   458   460:  909: 1060: 1240  1242  1244:
opoutref      114*  696: 1153  1156  1158  1159: 1227  1228  1229: 1236 
opsem         120*  194*  200*  217*  234*  251*  257*  262*  268*  273*  322*  456   567   571   575 
              579   583   589   595   604   608   612   616   622   626   631   637   656   660   665 
             1156  1180= 1183 
op_code       378*  390  1447= 1484= 1521= 1716= 1783= 1787= 1824= 1828=
op_sem        311*  316*
ord           468   751   844   845   968   968   969   991   991   992  1039  1039  1041 
org           387=
outchar       693*  859   867   881   889   898  1105  1105  1107  1137  1137  1139  1155  1860  1861 
             1883 
outdecimal    337*  534   672   685   704* 1106  1124  1138  1354  1637  1643  1882  2030 
outinteger    340*  711   715* 1071  1084  1312  1313  1863  1864  1865  1866  1897  1899  2091  2092 
outstring10   343*  673   874* 1070  1140  1311  1315  1317  1327  1355  1360  1365  1543  1548  1558 
             1564  1618  1638  1644  1648  1656  1842  1847  1857  1914  1923  1985  1998  2002  2003 
             2052  2055  2090  2095  2097  2110  2111  2112 
outstring12   346*  533   884*
outstring20   349*  523   532   686   892* 1083  1316  1333  1561  1593  1594  1595  1596  1597  1598 
             1599  1600  1601  1602  1603  1604  1605  1606  1607  1608  1609  1610  1879  1917  1920 
             1930  2029  2086  2096  2117 
\f

tsaoslst    81.06.10.   12.29.                                                    page    83

own          1183 
ownaddr       212*
p             379*  381   515*  526   527   536  1674: 1683  1684  1687  1688 
packet_type   385=
packextnode   406*  423=
packmacro     395*  403= 1680  1682  1683  1718  1720  1722  1753  1755  1789  1791  1797  1826 
par           396*  400   401   402   407*  416   417 
params        158*  370   371   372   373   389   390   400   401   402   416   417   493=  494  1292 
             1331  1337  1348  1350  1374  1385  1413  1432  1474  1486  1489  1514  1532  1534  1560 
             1567  1575  1577  1579  1581  1616  1616  1617  1617  1629  1659  1684  1686  1687  1712 
             1723  1725  1726  1777  1794  1798  1800  1818  1824  1825  1869  1870  1871  1873  1874 
             1916  1919  1926  1927  1946  1950  1992  2026  2026  2027  2030  2035  2036  2036  2038 
             2038  2059  2059  2060  2061  2062  2063  2064  2065  2074  2103  2103  2104  2104  2106 
             2107  2107  2108 
paxbufpool     98* 1262 
paxnet_config                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             1195  1195  1196  1196  1486  1684  1723  1798 
paxnet_e     1674 
paxpooltype    59*   98*
pax_addr     1684= 1723= 1728  1798=
pax_adr       368*  370   371   372   373   374 
pax_ncp_sem   600  1214  1215  1215 
pax_pool      642   649  1263  1367  1701  1771  1812 
pax_pool_sem  286*  300*
pax_sem_1     599   651  1208  1209  1209 
pax_sem_2     599   651  1206  1207  1207 
pax_sem_3    1210  1211  1211 
pax_sem_4    1212  1213  1213 
phead        1404  1446  1463  1506 
point_rec      88*  167*
pool           59*   94*   96*   97*
positions     337*  340*  704*  711   715*  859   861   862   863=  865 
pr             40*
prio          517*  529 
priority      384=
process         4*  172*  177*  185*  193*  199*  216*  233*  250*  256*  261*  267*  272*  283*  296*
              310*  315*  320*
processrec    515*
processref    526   536 
pu             39*  252*  608 
px_ncp       1214 
px_urec1     1206 
px_urec2     1210 
px_utrm1     1208 
\f

tsaoslst    81.06.10.   12.29.                                                    page    84

px_utrm2     1212 
p_e          1722  1723  1726  1727  1728  1795 
quesem        203*  220*
q_bit        1481= 1519=
readchar      352*  466   904*  912=  954   977  1024 
readinteger   355*  493   921* 1055=
readok        151*  502   944=  970=
readram       329* 1186 
rec          1680  1681  1718  1719  1753  1754  1789  1790  1826  1827 
ref          1181  1201  1206  1208  1210  1212  1214  1216 
reference     116*
reg_addr      371= 1189=
rejic_buf_type                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             1429 
rejic_diag   1432=
rejic_id     1431=
remove       1634 
repeatchar    358* 1053  1058*
res           730*  828=  833=  833   836   843   844   845   846   851=
result        329*  938*  959=  968=  969=  983   985=  991=  991   992=  992   997=  997  1033= 1033 
             1034= 1034  1035= 1035  1039= 1039  1041= 1041  1044  1045= 1046= 1046  1055 
return       1236  1256  1986 
ric_first_val                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             1479  1480 
rightbyte     143* 1945= 1950= 1953  1959  1972  1977 
rut_con      1380 
rut_default  1400  1442  1459  1503 
rut_format_1  383 
rut_ok       1381  1399  1441  1458  1502 
rut_pack_type                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              385 
rut_prefix_type                                                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             1384 
rut_prio_0    384 
rut_rec      1398  1440  1457  1501 
rut_rec_sem   291*
rut_trm_sem   290*
rut_trp_pdata                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             1401  1443  1460  1504 
s             584   584   584   590   590   590   595   596   597   597   597   616   616   617   627 
              627   632   632   632   644   644   650   651   651  1098  1201= 1202  1206= 1207  1208=
             1209  1210= 1211  1212= 1213  1214= 1215  1216= 1217  1221  1222  1255  1262  1263  1545 
             1615  1617  1845 
sem           122*  258*  312*  317*  567   571   575   579   583   583   584   584   584   585   589 
              589   590   590   590   591   595   596   597   597   597   598   598   599   599   600 
              600   604   608   612   616   616   617   617   618   618   618   618   622   626   626 
\f

tsaoslst    81.06.10.   12.29.                                                    page    85

              626   627   627   631   631   632   632   632   633   637   642   642   643   644   644 
              649   649   650   651   651   656   660  1098  1099  1201  1202  1202  1206  1207  1207 
             1208  1209  1209  1210  1211  1211  1212  1213  1213  1214  1215  1215  1216  1217  1217 
             1221  1222  1255  1262  1263  1367  1545  1615  1615  1617  1617  1663  1701  1741  1771 
             1812  1845  2106  2107  2107  2108 
sem1          263*
sem2          263*
sem3          263*
sem4          263*
sem5          264*
sem6          264*
sem7          264*
sem8          264*
semaphore     107*  108* 1089*
semint1       244*
semint2       245*
semint3       246*
semint4       247*
semno         144* 1292= 1296  1296  1297  1297  1299  1300  1302  1992= 1995  1995  1997  2000  2000 
             2001  2074= 2078  2078  2079  2079  2081  2082  2084 
sempointer     89*  119*  120*  121*  173*  178*  186*  194*  200*  208*  217*  225*  234*  241*  251*
              257*  262*  263*  268*  273*  280*  284*  291*  298*  306*  311*  316*  322*
semvector       4* 1180 
send         1682  1720  1721  1755  1756  1791  1792 
sensesem     1114  1367  1663  1701  1741  1771  1812  2082  2084 
setoflowmask  326* 1271 
sh            159*  522   527   529   682  1631  1633  1634 
shadow        159*
signal        456  1119  1128  1156  1263  1545  1845  1997  2001 
signs         932*
size          428   430   432   434   516*  525  1313  1878  1929  2092 
sp            739   859 
spool_sem     101* 1181 
spool_test_sem                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              119*  641   649   665  1181=
st            147*  525=  527  1266= 1350=
start         529 
state         386=
stream_no    1687= 1726= 1800=
system_vector                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
                4*
tab_sem       269*
tap           267*  612   622 
tap1_sem_no   622 
\f

tsaoslst    81.06.10.   12.29.                                                    page    86

tapdte        310*  656 
tapnet        315*  660 
tap_dte_sem_no                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              656 
tap_net_sem_no                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              660 
tap_sem_no    612 
testbuf      1580: 1581= 1891: 1892 
testbufpool    96* 1300  1302 
testbufsize    34*   72*  434   443 
testbuftype    72*   96* 1580  1891 
testinterval 1065* 1073= 1076= 2059  2060  2062  2064 
testmode      153* 1081  1182= 1651= 1651 
testmodeout   361*  451   468   477   494  1079*
testopen     1183 
testout       417   422  1184  1194 
testoutput    320*  665 
testsem      1089* 2017  2020  2036  2038 
test_sem      284*  298*
text          343*  346*  349*  361*  874*  881   884*  889   892*  898  1079* 1083 
ticklength    196*
timeout        78*
timeoutsem    195*  224*  240*  280*
timeout_sem   305*
timeout_sem_no                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              579   584   590   597   617   627   632   644 
time_out_unit                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              579 
timout        193*  579 
timsem        207*
tim_pri       580 
tim_size      580 
top_of_data   391=
to_link      1392  1417  1428  1475  1515  1531  1708  1778  1819 
true          486   682   829   970  1006  1011  1016  1076  1108  1271 
tsaddr        228*
tsconnector   233*  595 
tsc_pri       601 
tsc_size      601 
tsssem        236*
tssuper       172*  567 
tssup_sem_no  595  1221 
tss_pri       568   628 
tss_route    1746 
\f

tsaoslst    81.06.10.   12.29.                                                    page    87

tss_size      568 
tst_ric_type 1710 
tst_sdata_data                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             1780  1821 
ts_addr       164*  181*  189*  211*  402=  571   575   585   591   633 
ts_pointer    195*  203*  220*  247*  253*  264*  269*  277*  287*  301*  312*  317*
ts_pointer_vector                                                <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              122*  174*  182*  190*  258*
ts_sem        108*  174*  182*  190* 1201  1300  1997  2020  2036  2082 
ts_sem_total   38*  108* 1199 
t_sem        1089* 1102  1114  1128  1134 
u1           1228= 1242= 1305= 1380= 1391= 1398= 1415= 1426= 1440= 1457= 1473= 1501= 1513= 1530= 1705=
             1775= 1816= 1863  2059=
u2            458  1306= 1371= 1381= 1399= 1441= 1458= 1502= 1667= 1706= 1745= 1776= 1817= 1864  2061=
u3           1307= 1382= 1400= 1416= 1427= 1442= 1459= 1474= 1503= 1514= 1532= 1668= 1707= 1746= 1777=
             1818= 1865  2063=
u4           1308= 1372= 1392= 1417= 1428= 1475= 1515= 1531= 1669= 1708= 1747= 1778= 1819= 1866  2065=
unlink        536 
update       1679= 1717= 1788=
used          731*  736=  762=  849=  859   862   863 
user_field    390=
vac_size      592 
vagt          256*  604   637 
valparam       42* 1618  2110  2111 
vas_sem_no    590 
vas_size      605 
vcc           216*  589   631 
vcc_pri       592   634 
vcc_sem_no    589   589   631   631 
vchsem        222*
vch_pri       576 
vch_sem_no    590   632 
vch_size      576 
vc_handler    185*  575 
vc_sim_pri    605   638 
version        26* 1184 
vic_size      634 
vis_sem_no    632 
vis_size      638 
w             585   591   598   617   633   643  1099  1202= 1207= 1209= 1211= 1213= 1215= 1217= 1367 
             1615= 1617= 1663  1701  1741  1771  1812  2106  2107= 2107  2108=
wait          457  1127  1158 
worksem       121* 2106= 2108 
writenl       364*  535  1072  1085  1131  1141  1149* 1238  1593  1594  1595  1596  1597  1598  1599 
             1600  1601  1602  1603  1604  1605  1606  1607  1608  1609  1639  1645  1867  1900  2031 
             2121 
\f

tsaoslst    81.06.10.   12.29.                                                    page    88

wrsem         105*  457  1240 
wsem          103* 1158  1227 
z             125*  417   422  1183  1184  1194 
zeroes        733*  829=  836   846   848=
zone          125*
\f

tsaoslst    81.06.10.   12.29.                                                    page    89

AND               25
ARRAY             13
BEGIN            160
CASE              11
CONST              5
DIV                9
DO                88
DOWNTO             3
ELSE              77
END              175
FOR               30
FORWARD           11
FUNCTION           9
IF               123
IN                14
MOD               11
NIL               21
NOT               16
OF                28
OR                13
OTHERWISE          6
PROCEDURE         27
RECORD             4
REPEAT             5
THEN             123
TO                27
TYPE               1
UNTIL              5
VAR               44
WHILE              4
WITH              22
\f

oer7  1981.06.10  12.31
 tsaos program
81.06.10.      12.32.                         pascal80     version 1981.04.01


   name        headline beginline endline  appetite(words) 

   dte_pax_addr   368       370     375  :       8            
   make_phead     380       383     393  :      17            
   packmacro      398       400     404  :       6            
   packextnode    409       412     424  :      29            
   get_curbufty   427       429     445  :       2            
   getinput       449       451     471  :      21            
   getparams      475       477     509  :      25            
   init_proc      519       523     539  :      29            
   init_modul     543       565     676  :      58            
   moduleready    681       682     689  :      19            
   outchar        695       696     702  :       9            
   outdecimal     708       709     713  :      10            
   outinteger     719       736     870  :      47            
   outstring10    878       880     882  :      17            
   outstring12    886       888     890  :      17            
   outstring20    895       897     899  :      17            
   readchar       908       909     916  :      11            
   readinteger    930       944    1056  :      17            
   repeatchar    1059      1060    1063  :       8            
   testinterval  1067      1069    1077  :      13            
   testmodeout   1080      1082    1087  :      18            
   testsem       1093      1097    1143  :      15            
   writenl       1152      1154    1161  :      11            
   alarm_opsys     26      1180    2125  :    1302            

 code: 7 . 576  = 21576 bytes


end of PASCAL80 compilation 

end
blocksread = 53
«eof»