DataMuseum.dk

Presents historical artifacts from the history of:

RC4000/8000/9000

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

See our Wiki for more about RC4000/8000/9000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦d93a4b1fd⟧ TextFile

    Length: 89856 (0x15f00)
    Types: TextFile
    Names: »paposlst«

Derivation

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

TextFile

\f

paposlst    81.06.19.   11.35.                                                    page     1

   10    1        PROCESS pax_opsys(VAR semvector: system_vector;
   20    2          VAR evavector: appl_vector);
   30    3          
   40    4            (***************************************************
   50    5            *
   60    6            * function:    the test module is used to initialise buffers,
   70    7            *              signal them to semaphores, and to write their
   80    8            *              contents, when they have been handled by another
   90    9            *
  100   10            * externals:   none
  110   11            *
  120   12            * var params:  none
  130   13            *
  140   14            * semaphores:  the module sends to the system semaphore
  150   15            *              "operatorsem".
  160   16            *
  170   17            *
  180   18            * programmed may 1980 by wib and stb
  190   19            *
  200   20            ***************************************************)
  210   21          
  220   22        CONST
  230   23          version = "vers  5.05 /";
  240   24          
  250   25          
  260   26           
\f

paposlst    81.06.19.   11.35.                                                    page     2

 1010   27        CONST
 1020   28          
 1030   29          ts_sem_total = 40;
 1040   30          
 1050   31          size_listen=50;  (**************************************   chh   *********************************)
 1060   32          opbufsize = 80; (* no. of bytes in buffers to the operator module *)
 1070   33          messbufsize= size_listen; (*words*)
 1080   34          testbufsize= size_listen*4;
 1090   35          noofmodules= 20;
 1100   36          noofsemaphores= ts_sem_total;
 1110   37          pu= 0; (* processing unit number *)
 1120   38          pr= -1; (* timeslicing priority *)
 1130   39          
 1140   40          valparam= "param val ";
 1150   41          noparam= " no param ";
 1160   42          alreadyexists= " already exists     ";
 1170   43          doesntexist= " doesn't exist      ";
 1180   44          illegalno= "illegal no";
 1190   45          createerror= "error in createcall ";
 1200   46          illegalparam='illegal parameters  ';
 1210   47          proc7ncr='proc 7 not created  ';
 1220   48          
 1230   49          firstindex= 6 + alfalength;
 1240   50          lastindex= firstindex + (80 - 1);
 1250   51          ok= 0; (* result from operator *)
 1260   52          nooftaps=3;   (********************** jli *********************)
 1270   53          noofph=4;    (********* jli **********)
 1280   54           
\f

paposlst    81.06.19.   11.35.                                                    page     3

 2010   55          
 2020   56        TYPE
 2030   57          pb_type=ARRAY(1..noofph) OF ph_type;  (*** jli ***)
 2040   58          tap_state_tp=(stopped,started);
 2050   59          tap_state_type=ARRAY(1..nooftaps) OF tap_state_tp;  (********* jli *******)
 2060   60          opbuftype=
 2070   61          RECORD
 2080   62          !  first,
 2090   63          !  last,
 2100   64          !  next: integer;
 2110   65          !  name: alfa;
 2120   66          !  data: ARRAY (firstindex..lastindex) OF char
 2130   67          END;
 2140   68          
 2150   69          messbuftype= ARRAY (1..messbufsize) OF integer;
 2160   70          testbuftype= ARRAY (1..testbufsize) OF integer;
 2170   71          
 2180   72          atbuffer= ARRAY (0..1) OF byte;
 2190   73          
 2200   74          
 2210   75          alfa10= ARRAY (1..10) OF char;
 2220   76          alfa20= ARRAY (1..20) OF char;
 2230   77          
 2240   78            (* type necessary to compare sempointers *)
 2250   79          point_rec = RECORD
 2260   80                      !  a: sempointer;
 2270   81                      END;
 2280   82          
 2290   83           
\f

paposlst    81.06.19.   11.35.                                                    page     4

 3010   84        VAR
 3020   85          pb:pb_type;   (***** jli *****)
 3030   86            (*********  pools  *********)
 3040   87          consprotpool: pool 1;    (********** jli *****)
 3050   88          opbufpool: pool 3 OF opbuftype;
 3060   89          messbufpool: pool 20 OF messbuftype;
 3070   90          
 3080   91            (**********  semaphores  **********)
 3090   92          countsem,    (* used by "t"-command *)
 3100   93          wsem,        (* buffers written by the operatormodule is
 3110   94                       returned here *)
 3120   95          wrsem        (* buffers with content read by the operator
 3130   96                       module is returned here *)
 3140   97          : semaphore;
 3150   98          consoleprot: semaphore;  (* ****** jli *****)
 3160   99          tap_sem     (* snooper semaphore ************* jli **************)
 3170  100          : ARRAY(1..nooftaps) OF semaphore;
 3180  101          ts_sem : ARRAY (1..ts_sem_total) OF semaphore;
 3190  102          tap_semp: ARRAY(1..nooftaps) OF tap_pointer; (* snooper pointer semaphore ************ jli ************)
 3200  103          
 3210  104            (**********  references  **********)
 3220  105          chhref,     (*************************************    chh    ***********************)
 3230  106          chhstack,   (*************************************    chh    ***********************)
 3240  107          countref,    (* used by "t"-command *)
 3250  108          opinref,    (* ref. to buffer from operator *)
 3260  109          opoutref,   (* ref. to buffer to operator *)
 3270  110          cur           (* ref. to current buffer *)
 3280  111          : reference;
 3290  112          
 3300  113            (**********  pointers  **********)
 3310  114          opsem: sempointer;
 3320  115          worksem: sempointer;
 3330  116          sem : ARRAY(1..ts_sem_total) OF tap_pointer;     (******    chh     **************)
 3340  117          
 3350  118            (**********  zones  **********)
 3360  119          z: zone;
 3370  120          
 3380  121            (**********  char  **********)
 3390  122          command: char;   (* the first char the operator typed *)
 3400  123          
 3410  124           
\f

paposlst    81.06.19.   11.35.                                                    page     5

 4010  125            (**********  integers  **********)
 4020  126          base,            (* number base for input and output *)
 4030  127          firstword,       (* used by "o"-command *)
 4040  128          i,
 4050  129          incharsleft,   (* no. of not yet read chars in opinbuffer *)
 4060  130          j,
 4070  131          k,
 4080  132          lastword,       (* used by "o"-command *)
 4090  133          leftbyte,       (* used by "p"-command *)
 4100  134          moduleno,       (* tested module *)
 4110  135          noofparams,     (* no. of params in operator line *)
 4120  136          oldbase,        (* used by the "b" command *)
 4130  137          rightbyte,      (* used by "p"-command *)
 4140  138          semno,           (* typed semaphore number *)
 4150  139          st              (* storage requirements *)
 4160  140          : integer;
 4170  141          
 4180  142          tap_index: ARRAY(1..nooftaps) OF integer; (** jli ******)
 4190  143          simsignal: ARRAY(1..2) OF integer;
 4200  144          
 4210  145            (**********  booleans  **********)
 4220  146          readok,         (* indicates if the last call of readinteger
 4230  147                          yielded a result *)
 4240  148          testmode
 4250  149          : boolean;
 4260  150          
 4270  151            (**********  arrays  **********)
 4280  152          params: ARRAY(1..50) OF integer; (* holds parameters from operator *)
 4290  153          sh: ARRAY(1..noofmodules) OF shadow; (* ref. to process incarn. *)
 4300  154          
 4310  155          
 4320  156            (*** auxiliary to compare sempointers ***)
 4330  157          ap,bp : point_rec;
 4340  158          
 4350  159            (*** router definitions ************** jli *************)
 4360  160          ltrm:  ltsmarray;
 4370  161          lrec:  ltsmarray;
 4380  162          ldrv:  ltsmarray;
 4390  163          ldrv2:  ltsmarray;
 4400  164          
 4410  165            (* tap definitions **************** jli ************)
 4420  166          tap_state: tap_state_type:=tap_state_type(nooftaps***stopped);
 4430  167           
\f

paposlst    81.06.19.   11.35.                                                    page     6

 5010  168            (*------- consts and vars from noah ------*)
 5020  169          
 5030  170        CONST
 5040  171          
 5050  172          nwu_del1=125;
 5060  173          nwu_del2=4;
 5070  174          
 5080  175          nwb_del1=120;
 5090  176          nwb_del2=11;
 5100  177          
 5110  178        VAR
 5120  179          ownadr: nwadr;
 5130  180          
 5140  181          r_lcp_id: integer:= 200;
 5150  182          r_transit_ph: integer:= 10;
 5160  183          r_nnp_ph: integer:= 20;
 5170  184          
 5180  185          conn_desc: conn_desc_array;
 5190  186          
 5200  187          sh_routsupv: shadow;
 5210  188          sh_poolh: shadow;
 5220  189          sh_poolnnp: shadow;
 5230  190          
 5240  191          node_no : byte;
 5250  192          max_hlcon_no : byte;
 5260  193           
\f

paposlst    81.06.19.   11.35.                                                    page     7

 6010  194            (**********  externals **********)
 6020  195        PROCESS ncp(
 6030  196          VAR sys_vector: system_vector;
 6040  197          VAR ncp_sem: ! tap_pointer;
 6050  198          VAR sc_sem: ! tap_pointer;
 6060  199          VAR timeout_sem: ! tap_pointer;
 6070  200          ncp_ident: ! integer);
 6080  201        EXTERNAL;
 6090  202        
 6100  203        PROCESS timeout(procname: alfa;
 6110  204          opsem: ^semaphore;
 6120  205          VAR main_sem: semaphore;
 6130  206          ticklength,
 6140  207          max: integer;
 6150  208          hh: integer;
 6160  209          mm: integer;
 6170  210          ss: integer);
 6180  211        EXTERNAL;
 6190  212        
 6200  213        PROCESS pool_handler( VAR sysvec: system_vector;
 6210  214          VAR poolh_sem: semaphore;
 6220  215          VAR ncp_sem : semaphore;
 6230  216          lcp_ident: integer;
 6240  217          VAR ph: ph_type);
 6250  218        EXTERNAL;
 6260  219        
 6270  220        PROCESS supervisor( VAR sysvec: system_vector;
 6280  221          VAR ncp: ! tap_pointer;
 6290  222          lcp_ident: integer;
 6300  223          VAR ltrm: ! ltsmarray;
 6310  224          VAR lrec: ! ltsmarray;
 6320  225          VAR ldrv: ! ltsmarray;
 6330  226          VAR ldrv2:! ltsmarray;
 6340  227          VAR conn_desc: conn_desc_array;
 6350  228          VAR supv: ! tap_pointer;
 6360  229          VAR poolh,poolnnp: ! tap_pointer;
 6370  230          udelay1,udelay2,bdelay1,bdelay2: byte;
 6380  231          VAR ownaddr: nwadr);
 6390  232        EXTERNAL;
 6400  233        
 6410  234        
 6420  235        
 6430  236        PROCESS pxtap(opsem: sempointer;
 6440  237          VAR sem: ! tap_pointer;
 6450  238          VAR consoleprot: semaphore);
 6460  239        EXTERNAL;
\f

paposlst    81.06.19.   11.35.                                                    page     8

 6470  240        
 6480  241        PROCESS ncth(VAR sys_vector:system_vector;
 6490  242          VAR consoleprot:semaphore;
 6500  243          VAR ncth_sem:semaphore;
 6510  244          pu,formatter_prio,comint_prio:integer);
 6520  245        EXTERNAL;
 6530  246        
 6540  247        
 6550  248        PROCEDURE readram( VAR result: byte; index: integer);
 6560  249        EXTERNAL;
 6570  250        
 6580  251        
 6590  252        
 6600  253        
 6610  254        
 6620  255        
 6630  256        
 6640  257        
 6650  258        
 6660  259        
 6670  260        
 6680  261        
 6690  262        
 6700  263        
 6710  264        
 6720  265        
 6730  266        
 6740  267        
 6750  268        
 6760  269        
 6770  270        
 6780  271        
 6790  272        
 6800  273        
 6810  274        
 6820  275        
 6830  276        
 6840  277         
\f

paposlst    81.06.19.   11.35.                                                    page     9

 7010  278          (********** forwards **********)
 7020  279        
 7030  280        PROCEDURE getparams;
 7040  281        FORWARD;
 7050  282        
 7060  283        PROCEDURE outdecimal(int,positions: integer);
 7070  284        FORWARD;
 7080  285        
 7090  286        PROCEDURE outinteger(int,positions: integer);
 7100  287        FORWARD;
 7110  288        
 7120  289        PROCEDURE outstring10(text: alfa10);
 7130  290        FORWARD;
 7140  291        
 7150  292        PROCEDURE outstring12(text: alfa);
 7160  293        FORWARD;
 7170  294        
 7180  295        PROCEDURE outstring20(text: alfa20);
 7190  296        FORWARD;
 7200  297        
 7210  298        FUNCTION readchar: char;
 7220  299        FORWARD;
 7230  300        
 7240  301        FUNCTION readinteger: integer;
 7250  302        FORWARD;
 7260  303        
 7270  304        PROCEDURE repeatchar;
 7280  305        FORWARD;
 7290  306        
 7300  307        PROCEDURE testmodeout (text: alfa20; i: integer);
 7310  308        FORWARD;
 7320  309        
 7330  310        PROCEDURE writenl;
 7340  311        FORWARD;
 7350  312        
 7360  313        PROCEDURE init_rout_semp;
 7370  314        BEGIN
 7380  315    1   ! ltrm(1):=sem(11);  (* urec1 *)
 7390  316    2   ! lrec(1):=sem(12);  (* utrm1 *)
 7400  317    3   ! ltrm(2):=sem(15);
 7410  318    4   ! lrec(2):=sem(16);
 7420  319    5   ! ldrv(2):=sem(17);  (* hdlc1 driver sem *)
 7430  320    6   ! ldrv2(2):=sem(26);
 7440  321    7   ! ltrm(3) := sem(19);
 7450  322    8   ! lrec(3) := sem(20);
 7460  323    9   ! ldrv(3) := sem(21);
\f

paposlst    81.06.19.   11.35.                                                    page    10

 7470  324   10   ! ldrv2(3):= sem(26);
 7480  325   11   ! ltrm(4) := sem(23);
 7490  326   12   ! lrec(4) := sem(24);
 7500  327   13   ! ldrv(4) := sem(25);
 7510  328   14   ! ldrv2(4):= sem(26);
 7520  329   15   END;
 7530  330        
 7540  331        PROCEDURE start_tap(i,incno:integer);
 7550  332        BEGIN
 7560  333    1   ! IF (i=0) OR (i>ts_sem_total) OR (noofparams<2) THEN
 7570  334    2   !   outstring20('illegal parameter   ') ELSE
 7580  335    3   !   BEGIN
 7590  336    4   !   ! IF tap_state(incno)=started THEN
 7600  337    5   !   !   outstring20('already started     ') ELSE
 7610  338    6   !   !   BEGIN
 7620  339    7   !   !   ! sem(i).s:=ref(tap_sem(incno));
 7630  340    8   !   !   ! tap_semp(incno).s:=sem(i).w;
 7640  341    9   !   !   ! tap_index(incno):=i;
 7650  342   10   !   !   ! tap_state(incno):=started;
 7660  343   11   !   !   ! init_rout_semp;
 7670  344   12   !   !   END;
 7680  345   13   !   END;
 7690  346   14   END;
 7700  347        
 7710  348        PROCEDURE stop_tap(incno:integer);
 7720  349        BEGIN
 7730  350    1   ! IF tap_state(incno)=started THEN
 7740  351    2   !   BEGIN
 7750  352    3   !   ! sem(tap_index(incno)).s:=ref(ts_sem(tap_index(incno)));
 7760  353    4   !   ! tap_state(incno):=stopped;
 7770  354    5   !   ! init_rout_semp;
 7780  355    6   !   END;
 7790  356    7   END;
 7800  357        
 7810  358        PROCEDURE getinput;
 7820  359            (* reads input from console into opinref^ *)
 7830  360        BEGIN
 7840  361    1   ! 
 7850  362    2   ! testmodeout ("getinput called     ",0);
 7860  363    3   ! 
 7870  364    4   ! REPEAT
 7880  365    5   ! ! LOCK opinref AS opbuf: opbuftype DO
 7890  366    6   ! !   opbuf.next:= firstindex;
 7900  367    7   ! ! signal (opinref, opsem^);
 7910  368    8   ! ! wait (opinref, wrsem);
 7920  369    9   ! UNTIL opinref^.u2= ok (* 0*);
\f

paposlst    81.06.19.   11.35.                                                    page    11

 7930  370   10   ! 
 7940  371   11   ! LOCK opinref AS opbuf: opbuftype DO
 7950  372   12   !   WITH opbuf DO
 7960  373   13   !     BEGIN
 7970  374   14   !     ! incharsleft:= next - first;
 7980  375   15   !     ! next:= firstindex;
 7990  376   16   !     END;
 8000  377   17   ! command:= readchar;
 8010  378   18   ! 
 8020  379   19   ! testmodeout ("command read:       ",ord(command));
 8030  380   20   ! 
 8040  381   21   ! getparams;
 8050  382   22   END (* getinput *);
 8060  383         
\f

paposlst    81.06.19.   11.35.                                                    page    12

 9010  384        PROCEDURE getparams;
 9020  385            (* reads integer parameters *)
 9030  386        VAR newbase: boolean;
 9040  387        BEGIN
 9050  388    1   ! testmodeout ("getparams called    ",0);
 9060  389    2   ! 
 9070  390    3   ! noofparams:= 0;
 9080  391    4   ! 
 9090  392    5   ! IF command IN (."a","b","c","e","f","k","o","p","s","t","w","x".)
 9100  393    6   !   THEN
 9110  394    7   !   BEGIN (* change to decimal *)
 9120  395    8   !   ! oldbase:= base;
 9130  396    9   !   ! base:= 10;
 9140  397   10   !   ! newbase:= true;
 9150  398   11   !   END
 9160  399   12   ! ELSE
 9170  400   13   !   newbase:= false;
 9180  401   14   ! 
 9190  402   15   ! REPEAT
 9200  403   16   ! ! noofparams:= noofparams + 1;
 9210  404   17   ! ! params(noofparams):= readinteger;
 9220  405   18   ! ! testmodeout ("parameter read:     ",params(noofparams));
 9230  406   19   ! ! IF (noofparams=1) THEN
 9240  407   20   ! !   IF command IN (."e","f","p".) THEN
 9250  408   21   ! !     BEGIN (* change to old *)
 9260  409   22   ! !     ! base:= oldbase;
 9270  410   23   ! !     ! newbase:= false;
 9280  411   24   ! !     END;
 9290  412   25   ! ! 
 9300  413   26   ! UNTIL (NOT readok) OR (noofparams= 50);
 9310  414   27   ! 
 9320  415   28   ! noofparams:= noofparams - 1;
 9330  416   29   ! 
 9340  417   30   ! IF newbase THEN
 9350  418   31   !     (* change back to old base *)
 9360  419   32   !   base:= oldbase;
 9370  420   33   END (* getparams *);
 9380  421         
\f

paposlst    81.06.19.   11.35.                                                    page    13

10010  422        PROCEDURE init_proc(
10020  423          index: integer;
10030  424          name : alfa;
10040  425          p    : processrec;
10050  426          size,
10060  427          prio : integer);
10070  428        VAR
10080  429          ok   : integer;
10090  430        BEGIN
10100  431    1   ! IF NOT nil(sh(index)) THEN
10110  432    2   !   outstring20(alreadyexists) ELSE
10120  433    3   !   BEGIN
10130  434    4   !   ! IF noofparams<2 THEN st:= size;
10140  435    5   !   ! ok:= link(name,p.processref^);
10150  436    6   !   ! ok:= create(name,p,sh(index),size);
10160  437    7   !   ! IF ok=0 THEN
10170  438    8   !   !   start(sh(index),prio) ELSE
10180  439    9   !   !   BEGIN
10190  440   10   !   !   ! outstring20(createerror);
10200  441   11   !   !   ! outdecimal(ok,4);
10210  442   12   !   !   ! outstring10("  process ");
10220  443   13   !   !   ! outstring12(name);
10230  444   14   !   !   ! writenl;
10240  445   15   !   !   ! ok:= unlink(p.processref^);
10250  446   16   !   !   END;
10260  447   17   !   END;
10270  448   18   END;
10280  449        
10290  450        PROCEDURE crtap(index:integer;i:integer; n:alfa);
10300  451        BEGIN
10310  452    1   ! tap_semp(i).w:=ref(tap_sem(i));
10320  453    2   ! start_tap(params(2),i);
10330  454    3   ! init_proc(index,n,
10340  455    4   ! pxtap(semvector(operatorsem),tap_semp(i),consoleprot),
10350  456    5   ! 500,stdpriority);
10360  457    6   END;
10370  458        
10380  459        
10390  460        PROCEDURE init_modul(index: integer);
10400  461        CONST
10410  462          n1 = "ncp         ";
10420  463          n2 = "timeout     ";
10430  464          n6 = "ncth        ";
10440  465          n7 = "pxtap       ";
10450  466          n11= 'pxtap2      ';
10460  467          n12= 'pxtap3      ';
\f

paposlst    81.06.19.   11.35.                                                    page    14

10470  468        BEGIN
10480  469    1   ! CASE index OF
10490  470    2   ! ! 
10500  471    3   ! ! 1:  (* ncp *)
10510  472    4   ! !   init_proc(index, n1 ,
10520  473    5   ! !   ncp( semvector, sem(1), sem(2), sem(3), 576),
10530  474    6   ! !   900, stdpriority);
10540  475    7   ! ! 
10550  476    8   ! ! 2:  (* timeout *)
10560  477    9   ! !   BEGIN
10570  478   10   ! !   ! IF noofparams<>4 THEN
10580  479   11   ! !   !   BEGIN
10590  480   12   ! !   !   ! params(2):= 0;
10600  481   13   ! !   !   ! params(3):= 0;
10610  482   14   ! !   !   ! params(4):= 0;
10620  483   15   ! !   !   END;
10630  484   16   ! !   ! init_proc(index,n2,
10640  485   17   ! !   ! timeout(n2, opsem, sem(3).s^, 900, 0, params(2), params(3), params(4)),
10650  486   18   ! !   ! 600, stdpriority);
10660  487   19   ! !   END;
10670  488   20   ! ! 
10680  489   21   ! ! 4 : (* supervisor *)
10690  490   22   ! !   BEGIN
10700  491   23   ! !   ! 
10710  492   24   ! !   ! CASE node_no OF
10720  493   25   ! !   ! ! 4,5,6 : max_hlcon_no := 2;
10730  494   26   ! !   ! ! 2 : max_hlcon_no := 4;
10740  495   27   ! !   ! ! OTHERWISE max_hlcon_no := 3;
10750  496   28   ! !   ! END;
10760  497   29   ! !   ! 
10770  498   30   ! !   ! conn_desc(1).ctyp := typ_locon;
10780  499   31   ! !   ! conn_desc(1).cparams(1) := node_no;
10790  500   32   ! !   ! conn_desc(1).cparams(2) := 8;
10800  501   33   ! !   ! conn_desc(1).cparams(3) := 8;
10810  502   34   ! !   ! conn_desc(1).cparams(4) := 0;
10820  503   35   ! !   ! conn_desc(1).cparams(5) := 0;
10830  504   36   ! !   ! 
10840  505   37   ! !   ! FOR i := 2 TO max_hlcon_no DO
10850  506   38   ! !   !   BEGIN
10860  507   39   ! !   !   ! conn_desc(i).ctyp := typ_hlcon;
10870  508   40   ! !   !   ! conn_desc(i).cparams(1) := i-2;
10880  509   41   ! !   !   ! conn_desc(i).cparams(2) := 2;
10890  510   42   ! !   !   ! conn_desc(i).cparams(3) := 1;
10900  511   43   ! !   !   ! conn_desc(i).cparams(4) := 0;
10910  512   44   ! !   !   ! conn_desc(i).cparams(5) := 50;
10920  513   45   ! !   !   ! conn_desc(i).cparams(6) := 5;
\f

paposlst    81.06.19.   11.35.                                                    page    15

10930  514   46   ! !   !   END;
10940  515   47   ! !   ! 
10950  516   48   ! !   ! FOR i := max_hlcon_no+1 TO cmax DO
10960  517   49   ! !   !   conn_desc(i).ctyp := none;
10970  518   50   ! !   ! 
10980  519   51   ! !   ! i:=link('supervisor  ',supervisor);
10990  520   52   ! !   ! IF i <> 0 THEN
11000  521   53   ! !   !   testout(z,"sup lnk nok ",i)
11010  522   54   ! !   ! ELSE
11020  523   55   ! !   !   i:=create('supv        ',
11030  524   56   ! !   !   supervisor( semvector, sem(1),r_lcp_id, ltrm,lrec,ldrv,ldrv2,conn_desc,
11040  525   57   ! !   !   sem(10),sem(4),sem(5),nwu_del1,nwu_del2,nwb_del1,nwb_del2,ownadr),
11050  526   58   ! !   !   sh_routsupv, 700);
11060  527   59   ! !   ! IF i <> 0 THEN
11070  528   60   ! !   !   testout(z,"sup crt nok ", i)
11080  529   61   ! !   ! ELSE
11090  530   62   ! !   !   start(sh_routsupv,stdpriority);
11100  531   63   ! !   ! 
11110  532   64   ! !   ! i:= link('pool_handler',pool_handler);
11120  533   65   ! !   ! IF i <> 0 THEN
11130  534   66   ! !   !   testout(z,"trp lnk nok ", i)
11140  535   67   ! !   ! ELSE
11150  536   68   ! !   !   i:=create('transit-pool',
11160  537   69   ! !   !   pool_handler( semvector,sem(4).w^,sem(1).s^,r_transit_ph, pb(1)),
11170  538   70   ! !   !   sh_poolh, 300);
11180  539   71   ! !   ! IF i <> 0 THEN
11190  540   72   ! !   !   testout(z,"trp crt nok ",i)
11200  541   73   ! !   ! ELSE
11210  542   74   ! !   !   start(sh_poolh, stdpriority);
11220  543   75   ! !   ! 
11230  544   76   ! !   ! i:= create('nnp pool    ',
11240  545   77   ! !   ! pool_handler( semvector, sem(5).w^,sem(1).s^,r_nnp_ph,pb(2)),
11250  546   78   ! !   ! sh_poolnnp, 300);
11260  547   79   ! !   ! IF i <> 0 THEN
11270  548   80   ! !   !   testout(z,"nnp crt nok ", i)
11280  549   81   ! !   ! ELSE
11290  550   82   ! !   !   start( sh_poolnnp, stdpriority);
11300  551   83   ! !   ! 
11310  552   84   ! !   END;
11320  553   85   ! ! 
11330  554   86   ! ! 6: (* ncth *)
11340  555   87   ! !   init_proc(index,n6,
11350  556   88   ! !   ncth(semvector,consoleprot,sem(2).w^,0,stdpriority,stdpriority),
11360  557   89   ! !   500,stdpriority);
11370  558   90   ! ! 
11380  559   91   ! ! 
\f

paposlst    81.06.19.   11.35.                                                    page    16

11390  560   92   ! ! 7: (* tap1 *)
11400  561   93   ! !   crtap(index,1,n7);
11410  562   94   ! ! 
11420  563   95   ! ! 
11430  564   96   ! ! 
11440  565   97   ! ! 11: (*  tap2  *)
11450  566   98   ! !   IF nil(sh(7)) THEN outstring20(proc7ncr) ELSE
11460  567   99   ! !     crtap(index,2,n11);
11470  568  100   ! ! 
11480  569  101   ! ! 12: (* tap3 *)
11490  570  102   ! !   IF nil(sh(7)) THEN outstring20(proc7ncr) ELSE
11500  571  103   ! !     crtap(index,3,n12);
11510  572  104   ! ! 
11520  573  105   ! ! 
11530  574  106   ! ! 
11540  575  107   ! ! 
11550  576  108   ! ! 
11560  577  109   ! ! OTHERWISE
11570  578  110   ! ! BEGIN
11580  579  111   ! ! ! outdecimal(index,4);
11590  580  112   ! ! ! outstring10(illegalno);
11600  581  113   ! ! END;
11610  582  114   ! END (* case *)
11620  583  115   END;
11630  584         
\f

paposlst    81.06.19.   11.35.                                                    page    17

12010  585        FUNCTION moduleready(moduleno: integer): boolean;
12020  586            (* tests if an incarnation of the module is existing
12030  587            and writes an errormessage if so *)
12040  588        BEGIN
12050  589    1   ! IF nil( sh( moduleno) ) THEN moduleready:=true
12060  590    2   ! ELSE
12070  591    3   !   BEGIN  (* module is already existing *)
12080  592    4   !   ! outdecimal(moduleno,4);
12090  593    5   !   ! outstring20(alreadyexists);
12100  594    6   !   ! moduleready:=false;
12110  595    7   !   END;
12120  596    8   END (* module ready *);
12130  597        
12140  598        
12150  599         
\f

paposlst    81.06.19.   11.35.                                                    page    18

13010  600        PROCEDURE outchar(ch:char);
13020  601            (* writes ch into the output buffer *)
13030  602        BEGIN
13040  603    1   ! LOCK opoutref AS opbuf: opbuftype DO
13050  604    2   !   WITH opbuf DO
13060  605    3   !     BEGIN
13070  606    4   !     ! last:= last + 1;
13080  607    5   !     ! data (last):= ch;
13090  608    6   !     END;
13100  609    7   END (* outchar *);
13110  610         
\f

paposlst    81.06.19.   11.35.                                                    page    19

14010  611        PROCEDURE outdecimal (int, positions: integer);
14020  612            (* writes the integer "int" decimally into opbuf starting
14030  613            at "last", which is updated accordingly *)
14040  614          
14050  615        BEGIN
14060  616    1   ! oldbase:= base;
14070  617    2   ! base:= 10;
14080  618    3   ! outinteger(int,positions);
14090  619    4   ! base:= oldbase;
14100  620    5   END (* outdecimal *);
14110  621         
\f

paposlst    81.06.19.   11.35.                                                    page    20

15010  622        PROCEDURE outinteger(int,positions:integer);
15020  623            (* writes the integer "int" into opbuf starting at
15030  624            "last", which is updated accordingly *)
15040  625        CONST
15050  626          maxpos = 20; (* max number of positions in layout *)
15060  627          
15070  628        VAR
15080  629          bits: ARRAY(0..15) OF bit;
15090  630          digits:ARRAY(1..maxpos) OF char;
15100  631          curdigit, (* current pos. in digits-array to be filled out *)
15110  632          curpos,   (* cur. pos. in the nunber being computed *)
15120  633          h, i,
15130  634          m, newm,
15140  635          noofdig,  (* no. of digits in the resulting number *)
15150  636          noofpos,  (* no. of pos. from bits-array for one number *)
15160  637          res,      (* resulting number *)
15170  638          used: integer;
15180  639          
15190  640          negative, zeroes: boolean;
15200  641          
15210  642        BEGIN
15220  643    1   ! used:= 1;
15230  644    2   ! 
15240  645    3   !   (* first we initialise the digits array *)
15250  646    4   ! FOR i:=1 TO maxpos DO digits(i):=sp;
15260  647    5   ! 
15270  648    6   ! IF base= 10 THEN
15280  649    7   !   BEGIN
15290  650    8   !   ! i:=maxpos;
15300  651    9   !   ! 
15310  652   10   !   ! negative:= int<0;
15320  653   11   !   ! 
15330  654   12   !   ! REPEAT
15340  655   13   !   ! !   (* now we unpack the digits backwards and put them
15350  656   14   !   ! !   into the digits array *)
15360  657   15   !   ! ! 
15370  658   16   !   ! ! digits(i):= chr (abs(int MOD base) + ord("0"));
15380  659   17   !   ! ! int:=int DIV base;
15390  660   18   !   ! ! i:=i-1;
15400  661   19   !   ! UNTIL (i=1) OR (int=0);
15410  662   20   !   ! 
15420  663   21   !   ! IF negative THEN
15430  664   22   !   !   BEGIN
15440  665   23   !   !   ! digits(i):="-";
15450  666   24   !   !   ! i:=i-1;
15460  667   25   !   !   END;
\f

paposlst    81.06.19.   11.35.                                                    page    21

15470  668   26   !   ! 
15480  669   27   !   ! used:=maxpos-i;
15490  670   28   !   ! 
15500  671   29   !   ! IF int <> 0 THEN digits(1):= "*";
15510  672   30   !   END (* if base= 10 *)
15520  673   31   !   
15530  674   32   ! ELSE (* base= 2, 8, or 16 *)
15540  675   33   !   BEGIN
15550  676   34   !   !   (* initialise bits-array *)
15560  677   35   !   ! IF int>=0 THEN
15570  678   36   !   !   BEGIN
15580  679   37   !   !   ! FOR i:= 15 DOWNTO 1 DO
15590  680   38   !   !   !   BEGIN
15600  681   39   !   !   !   ! bits(i):= int MOD 2;
15610  682   40   !   !   !   ! int:= int DIV 2;
15620  683   41   !   !   !   END;
15630  684   42   !   !   ! bits(0):= int MOD 2;
15640  685   43   !   !   ! int:= int DIV 2;
15650  686   44   !   !   END
15660  687   45   !   ! ELSE
15670  688   46   !   !     (* int<0 *)
15680  689   47   !   !   BEGIN
15690  690   48   !   !   !   (* subtract abs(int) from 1111111...1 *)
15700  691   49   !   !   ! FOR i:= 15 DOWNTO 1 DO
15710  692   50   !   !   !   BEGIN
15720  693   51   !   !   !   ! bits(i):= 1+(int MOD 2);
15730  694   52   !   !   !   ! int:= int DIV 2;
15740  695   53   !   !   !   END;
15750  696   54   !   !   ! bits(0):= 1+(int MOD 2);
15760  697   55   !   !   ! int:= int DIV 2;
15770  698   56   !   !   ! 
15780  699   57   !   !   !   (* add 1 *)
15790  700   58   !   !   ! m:= 1;
15800  701   59   !   !   ! FOR i:= 15 DOWNTO 1 DO
15810  702   60   !   !   !   BEGIN
15820  703   61   !   !   !   ! newm:= (bits(i)+m) DIV 2;
15830  704   62   !   !   !   ! bits(i):= (bits(i)+m) MOD 2;
15840  705   63   !   !   !   ! m:= newm;
15850  706   64   !   !   !   END;
15860  707   65   !   !   ! newm:= (bits(0)+m) DIV 2;
15870  708   66   !   !   ! bits(0):= (bits(0)+m) MOD 2;
15880  709   67   !   !   ! m:= newm;
15890  710   68   !   !   END (*int<0*);
15900  711   69   !   ! 
15910  712   70   !   !   (* compute digits-array *)
15920  713   71   !   ! CASE base OF
\f

paposlst    81.06.19.   11.35.                                                    page    22

15930  714   72   !   ! ! 2: BEGIN
15940  715   73   !   ! !   ! noofpos:= 1;
15950  716   74   !   ! !   ! noofdig:= 16;
15960  717   75   !   ! !   END;
15970  718   76   !   ! ! 
15980  719   77   !   ! ! 8: BEGIN
15990  720   78   !   ! !   ! noofpos:= 3;
16000  721   79   !   ! !   ! noofdig:= 6;
16010  722   80   !   ! !   END;
16020  723   81   !   ! ! 
16030  724   82   !   ! ! 16: BEGIN
16040  725   83   !   ! !   ! noofpos:= 4;
16050  726   84   !   ! !   ! noofdig:= 4;
16060  727   85   !   ! !   END;
16070  728   86   !   ! END (* case *);
16080  729   87   !   ! 
16090  730   88   !   ! curdigit:= maxpos -noofdig +1;
16100  731   89   !   ! 
16110  732   90   !   ! IF base= 8
16120  733   91   !   !   THEN curpos:= 3
16130  734   92   !   ! ELSE curpos:= 1;
16140  735   93   !   ! res:= 0;
16150  736   94   !   ! zeroes:= true;
16160  737   95   !   ! 
16170  738   96   !   ! FOR h:= 0 TO 15 DO
16180  739   97   !   !   BEGIN
16190  740   98   !   !   ! res:= res*2 + bits(h);
16200  741   99   !   !   ! IF curpos= noofpos THEN
16210  742  100   !   !   !   BEGIN (* time to fill out a pos. in digits-array *)
16220  743  101   !   !   !   ! IF zeroes AND (res=0) THEN
16230  744  102   !   !   !   !   BEGIN
16240  745  103   !   !   !   !   ! IF curdigit=maxpos
16250  746  104   !   !   !   !   !   THEN digits(curdigit):= "0"
16260  747  105   !   !   !   !   !     (*else digits (curdigit):= " "*);
16270  748  106   !   !   !   !   END
16280  749  107   !   !   !   ! ELSE
16290  750  108   !   !   !   !   IF res<=9
16300  751  109   !   !   !   !     THEN digits(curdigit):= chr (res + ord ("0"))
16310  752  110   !   !   !   !   ELSE digits(curdigit):= chr (res + ord ("7"));
16320  753  111   !   !   !   ! IF (res<>0) AND zeroes THEN
16330  754  112   !   !   !   !   BEGIN
16340  755  113   !   !   !   !   ! zeroes:= false;
16350  756  114   !   !   !   !   ! used:= maxpos - curdigit + 1;
16360  757  115   !   !   !   !   END;
16370  758  116   !   !   !   ! res:= 0;
16380  759  117   !   !   !   ! curpos:= 0;
\f

paposlst    81.06.19.   11.35.                                                    page    23

16390  760  118   !   !   !   ! curdigit:= curdigit + 1;
16400  761  119   !   !   !   END;
16410  762  120   !   !   ! curpos:= curpos + 1;
16420  763  121   !   !   END;
16430  764  122   !   END (* base= 2, 8, of 16 *);
16440  765  123   ! 
16450  766  124   ! IF positions<used THEN outchar(sp);
16460  767  125   ! 
16470  768  126   ! IF (NOT (positions IN (. 1 .. maxpos .)) )
16480  769  127   !   OR (positions < used) THEN
16490  770  128   !   positions:=used;
16500  771  129   ! 
16510  772  130   ! FOR i:=maxpos+1-positions TO maxpos DO
16520  773  131   !   BEGIN
16530  774  132   !   ! outchar( digits(i) );
16540  775  133   !   END
16550  776  134   !   
16560  777  135   END (* out integer *);
16570  778        
16580  779        
16590  780         
\f

paposlst    81.06.19.   11.35.                                                    page    24

17010  781        PROCEDURE outstring10(text: alfa10);
17020  782            (* writes the text into opbuf starting at outputpointer
17030  783            which is updated accordingly *)
17040  784        VAR
17050  785          i: integer;
17060  786        BEGIN
17070  787    1   ! FOR i:=1 TO 10 DO
17080  788    2   !   outchar( text(i) );
17090  789    3   END (* out string 10 *);
17100  790        
17110  791        PROCEDURE outstring12(text: alfa);
17120  792        VAR
17130  793          i: integer;
17140  794        BEGIN
17150  795    1   ! FOR i:=1 TO 12 DO
17160  796    2   !   outchar(text(i));
17170  797    3   END;
17180  798         
\f

paposlst    81.06.19.   11.35.                                                    page    25

18010  799        PROCEDURE outstring20(text: alfa20);
18020  800            (* analogue to outstring10 *)
18030  801        VAR
18040  802          i: integer;
18050  803        BEGIN
18060  804    1   ! FOR i:=1 TO 20 DO
18070  805    2   !   outchar( text(i) );
18080  806    3   END (* out string 20 *);
18090  807        
18100  808        
18110  809        
18120  810         
\f

paposlst    81.06.19.   11.35.                                                    page    26

19010  811        FUNCTION readchar: char;
19020  812            (* reads the next char from opinref^.
19030  813            next is incremented and charsleft is
19040  814            decremented *)
19050  815        BEGIN
19060  816    1   ! LOCK opinref AS opbuf: opbuftype DO
19070  817    2   !   WITH opbuf DO
19080  818    3   !     BEGIN
19090  819    4   !     ! readchar:= data(next);
19100  820    5   !     ! next:= next + 1;
19110  821    6   !     END;
19120  822    7   ! incharsleft:=incharsleft-1;
19130  823    8   END (* readchar *);
19140  824        
19150  825        
19160  826        
19170  827         
\f

paposlst    81.06.19.   11.35.                                                    page    27

20010  828        FUNCTION readinteger : integer;
20020  829            (* reads the next integer from opinref^ starting
20030  830            at "inputpoint". upon return "inputpoint" will be
20040  831            the position just after the last char read.
20050  832            
20060  833            the global boolean "readok" will be true if an
20070  834            integer was read and false otherwise *)
20080  835          
20090  836        CONST
20100  837          digits = (. "0" .. "9" .);
20110  838          hexdigits = (. "a" .. "f" .);
20120  839          signs =  (. "+" , "-" .);
20130  840          
20140  841        VAR
20150  842          negative, digit: boolean;
20160  843          
20170  844          curdigit, noofdigit,
20180  845          result: integer;
20190  846          
20200  847          ch,lastchar: char;
20210  848          
20220  849          
20230  850        BEGIN
20240  851    1   ! readok:=false;
20250  852    2   ! lastchar:=nul;
20260  853    3   ! ch:=nul;
20270  854    4   ! digit:=false;
20280  855    5   ! 
20290  856    6   !   (* now skip until a digit is encountered *)
20300  857    7   ! 
20310  858    8   ! IF incharsleft > 0 THEN
20320  859    9   !   REPEAT
20330  860   10   !   ! lastchar:=ch;
20340  861   11   !   ! ch:=readchar;
20350  862   12   !   ! digit:= (ch IN digits) OR
20360  863   13   !   ! ((base= 16) AND (ch IN hexdigits))
20370  864   14   !   UNTIL digit OR (incharsleft<=0);
20380  865   15   ! 
20390  866   16   ! result:=0;
20400  867   17   ! IF base= 10 THEN
20410  868   18   !   negative:= lastchar= "-"
20420  869   19   ! ELSE negative:= false;
20430  870   20   ! 
20440  871   21   ! 
20450  872   22   ! IF digit THEN
20460  873   23   !   BEGIN
\f

paposlst    81.06.19.   11.35.                                                    page    28

20470  874   24   !   ! IF ch IN digits
20480  875   25   !   !   THEN result:= ord (ch) - ord ("0")
20490  876   26   !   ! ELSE result:= ord (ch) - 87 (*ord ("W")*);
20500  877   27   !   ! readok:=true;
20510  878   28   !   END;
20520  879   29   ! 
20530  880   30   ! IF base=10 THEN
20540  881   31   !   BEGIN
20550  882   32   !   ! WHILE digit AND (incharsleft>0) DO
20560  883   33   !   !   BEGIN (* read the digits *)
20570  884   34   !   !   ! ch:= readchar;
20580  885   35   !   !   ! 
20590  886   36   !   !   ! digit:= (ch IN digits) OR
20600  887   37   !   !   ! ((base= 16) AND (ch IN hexdigits));
20610  888   38   !   !   ! IF digit THEN
20620  889   39   !   !   !   BEGIN
20630  890   40   !   !   !   ! IF negative AND (result=3276) AND (ch="8")
20640  891   41   !   !   !   !   THEN BEGIN
20650  892   42   !   !   !   !   ! result:= -32768;
20660  893   43   !   !   !   !   ! negative:= false;
20670  894   44   !   !   !   !   END
20680  895   45   !   !   !   ! ELSE
20690  896   46   !   !   !   !   BEGIN
20700  897   47   !   !   !   !   ! IF ch IN digits
20710  898   48   !   !   !   !   !   THEN result:= result*base+(ord(ch)-ord("0"))
20720  899   49   !   !   !   !   ! ELSE result:= result*base+(ord(ch)-87(*ord("W")*));
20730  900   50   !   !   !   !   END;
20740  901   51   !   !   !   END;
20750  902   52   !   !   END (* while *);
20760  903   53   !   ! 
20770  904   54   !   ! IF negative THEN result:= - result;
20780  905   55   !   ! 
20790  906   56   !   END (* base= 10 *)
20800  907   57   !   
20810  908   58   ! ELSE
20820  909   59   !   BEGIN (* base= 2, 8, or 16 *)
20830  910   60   !   ! 
20840  911   61   !   ! CASE base OF
20850  912   62   !   ! ! 2:BEGIN
20860  913   63   !   ! !   ! IF ch="1" THEN negative:= true;
20870  914   64   !   ! !   ! noofdigit:= 16;
20880  915   65   !   ! !   END;
20890  916   66   !   ! ! 
20900  917   67   !   ! ! 8: BEGIN
20910  918   68   !   ! !   ! IF ch="1" THEN negative:= true;
20920  919   69   !   ! !   ! noofdigit:= 6;
\f

paposlst    81.06.19.   11.35.                                                    page    29

20930  920   70   !   ! !   END;
20940  921   71   !   ! ! 
20950  922   72   !   ! ! 16: BEGIN
20960  923   73   !   ! !   ! IF ch>="8" THEN negative:= true;
20970  924   74   !   ! !   ! noofdigit:= 4;
20980  925   75   !   ! !   END;
20990  926   76   !   ! END (*case*);
21000  927   77   !   ! curdigit:= 1;
21010  928   78   !   ! 
21020  929   79   !   ! WHILE digit AND (incharsleft>0) DO
21030  930   80   !   !   BEGIN
21040  931   81   !   !   ! ch:= readchar;
21050  932   82   !   !   ! digit:= (ch IN digits) OR
21060  933   83   !   !   ! ((base=16) AND (ch IN hexdigits));
21070  934   84   !   !   ! IF digit
21080  935   85   !   !   !   THEN BEGIN
21090  936   86   !   !   !   ! curdigit:= curdigit+1;
21100  937   87   !   !   !   ! IF (curdigit=noofdigit) AND negative THEN
21110  938   88   !   !   !   !   BEGIN
21120  939   89   !   !   !   !   ! CASE base OF
21130  940   90   !   !   !   !   ! ! 2: result:= result - 16384 (*2^14*);
21140  941   91   !   !   !   !   ! ! 8: result:= result -  4096 (*2^12*);
21150  942   92   !   !   !   !   ! ! 16:result:= result -  2048 (*2^11*);
21160  943   93   !   !   !   !   ! END (*case*)
21170  944   94   !   !   !   !   END;
21180  945   95   !   !   !   ! IF ch IN digits THEN
21190  946   96   !   !   !   !   result:= result*base + (ord(ch)-ord("0"))
21200  947   97   !   !   !   ! ELSE
21210  948   98   !   !   !   !   result:= result*base + (ord(ch)-87 (*ord("W")*));
21220  949   99   !   !   !   ! IF (curdigit=noofdigit) AND negative
21230  950  100   !   !   !   !   THEN BEGIN
21240  951  101   !   !   !   !   ! IF result=0
21250  952  102   !   !   !   !   !   THEN result:= -32768
21260  953  103   !   !   !   !   ! ELSE result:= -((32767-result)+1);
21270  954  104   !   !   !   !   END;
21280  955  105   !   !   !   END (*if digit*);
21290  956  106   !   !   END (*while digit*);
21300  957  107   !   END (* base= 2, 8, or 16 *);
21310  958  108   ! IF incharsleft > 0 THEN
21320  959  109   !     (* we read one char too many - spit it out *)
21330  960  110   !   repeatchar;
21340  961  111   ! 
21350  962  112   ! readinteger:=result;
21360  963  113   END (* read integer *);
21370  964         
\f

paposlst    81.06.19.   11.35.                                                    page    30

22010  965        PROCEDURE repeatchar;
22020  966        BEGIN
22030  967    1   ! LOCK opinref AS opbuf: opbuftype DO
22040  968    2   !   opbuf.next:= opbuf.next - 1;
22050  969    3   ! incharsleft:= incharsleft + 1;
22060  970    4   END;
22070  971         
\f

paposlst    81.06.19.   11.35.                                                    page    31

23010  972        FUNCTION testinterval (i,first,last: integer): boolean;
23020  973            (* true if first<=i<=last *)
23030  974        BEGIN
23040  975    1   ! IF (i<first) OR (i>last) THEN
23050  976    2   !   BEGIN
23060  977    3   !   ! outstring10(illegalno);
23070  978    4   !   ! outinteger(i,4);
23080  979    5   !   ! writenl;
23090  980    6   !   ! testinterval:= false
23100  981    7   !   END
23110  982    8   ! ELSE
23120  983    9   !   testinterval:= true;
23130  984   10   END;
23140  985         
\f

paposlst    81.06.19.   11.35.                                                    page    32

24010  986        PROCEDURE testmodeout (text: alfa20; i: integer);
24020  987        BEGIN
24030  988    1   ! IF testmode THEN
24040  989    2   !   BEGIN
24050  990    3   !   ! outstring20 (text);
24060  991    4   !   ! outinteger (i, 4);
24070  992    5   !   ! writenl;
24080  993    6   !   END;
24090  994    7   END (* testout *);
24100  995         
\f

paposlst    81.06.19.   11.35.                                                    page    33

25010  996        PROCEDURE testsem(i: integer);
25020  997            (* test the semaphore "sem( semno)", and
25030  998            writes its status on the console if it is
25040  999            non-passive *)
25050 1000        VAR more: boolean;
25060 1001        BEGIN
25070 1002    1   ! 
25080 1003    2   ! ap.a := sem(i).s;
25090 1004    3   ! bp.a := sem(i).w;
25100 1005    4   ! IF open (ts_sem(i)) THEN
25110 1006    5   !   BEGIN (* user semaphore no. i is open *)
25120 1007    6   !   ! IF ap=bp THEN
25130 1008    7   !   !   outchar(" ") ELSE outchar("^");
25140 1009    8   !   ! outdecimal(i,3);
25150 1010    9   !   ! outchar(":");
25160 1011   10   !   ! more:= true;
25170 1012   11   !   ! 
25180 1013   12   !   !   (* now count the no. of buffers on this semaphore *)
25190 1014   13   !   ! j:=0; (* j is the counter *)
25200 1015   14   !   ! WHILE more DO
25210 1016   15   !   !   BEGIN
25220 1017   16   !   !   ! sensesem(countref, ts_sem(i));
25230 1018   17   !   !   ! IF nil(countref) THEN
25240 1019   18   !   !   !   more:= false
25250 1020   19   !   !   ! ELSE
25260 1021   20   !   !   !   BEGIN
25270 1022   21   !   !   !   ! signal(countref,countsem);
25280 1023   22   !   !   !   ! j:=j+1;
25290 1024   23   !   !   !   END
25300 1025   24   !   !   END;
25310 1026   25   !   ! 
25320 1027   26   !   ! outdecimal(j,3);
25330 1028   27   !   ! WHILE open(countsem) DO
25340 1029   28   !   !   BEGIN (* return the buffers to sem(i) *)
25350 1030   29   !   !   ! wait(countref,countsem);
25360 1031   30   !   !   ! signal(countref, ts_sem(i));
25370 1032   31   !   !   END;
25380 1033   32   !   ! 
25390 1034   33   !   ! writenl;
25400 1035   34   !   END (* open *)
25410 1036   35   ! ELSE
25420 1037   36   !   IF locked( ts_sem(i)) THEN
25430 1038   37   !     BEGIN (* user semaphore no. i is locked *)
25440 1039   38   !     ! IF ap=bp THEN
25450 1040   39   !     !   outchar(" ") ELSE outchar("^");
25460 1041   40   !     ! outdecimal(i,3);
\f

paposlst    81.06.19.   11.35.                                                    page    34

25470 1042   41   !     ! outchar(":");
25480 1043   42   !     ! outstring10(" locked   ");
25490 1044   43   !     ! writenl;
25500 1045   44   !     END;
25510 1046   45   END (* testsem *);
25520 1047        
25530 1048        
25540 1049        
25550 1050        
25560 1051         
\f

paposlst    81.06.19.   11.35.                                                    page    35

26010 1052        PROCEDURE writenl;
26020 1053            (* prepares opbuf for output to the operator and signals
26030 1054            it to operator module *)
26040 1055        BEGIN
26050 1056    1   ! IF NOT nil(opoutref) THEN
26060 1057    2   !   BEGIN
26070 1058    3   !   ! outchar(nl);
26080 1059    4   !   ! signal(opoutref, opsem^)
26090 1060    5   !   END;
26100 1061    6   ! wait(opoutref, wsem);
26110 1062    7   ! LOCK opoutref AS opbuf: opbuftype DO
26120 1063    8   !   opbuf.last:= firstindex;
26130 1064    9   END (* writenl *);
26140 1065        
26150 1066         
\f

paposlst    81.06.19.   11.35.                                                    page    36

27010 1067        
27020 1068        
27030 1069        
27040 1070          (****************************************
27050 1071          *                                       *
27060 1072          *       m a i n   p r o g r a m         *
27070 1073          *                                       *
27080 1074          ****************************************)
27090 1075        
27100 1076        
27110 1077        
27120 1078        
27130 1079        
27140 1080        
27150 1081        BEGIN
27160 1082    1   ! 
27170 1083    2   ! opsem:= semvector(operatorsem);
27180 1084    3   ! testmode:= false;
27190 1085    4   ! testopen(z,own.incname,opsem);
27200 1086    5   ! testout(z,version,0);
27210 1087    6   ! 
27220 1088    7   ! readram( node_no, 10);
27230 1089    8   ! node_no := node_no MOD 16;
27240 1090    9   ! ownadr(1) := node_no;
27250 1091   10   ! 
27260 1092   11   ! testout(z,"int-pax-node", node_no);
27270 1093   12   ! 
27280 1094   13   !   (* initialise pointers *)
27290 1095   14   ! FOR i:=1 TO ts_sem_total DO
27300 1096   15   !   BEGIN
27310 1097   16   !   ! sem(i).s:= ref(ts_sem(i));
27320 1098   17   !   ! sem(i).w:= sem(i).s;
27330 1099   18   !   END;
27340 1100   19   ! 
27350 1101   20   !   (* initialize pointers to eva semaphores *)
27360 1102   21   ! sem(11).s:= ref(evavector(px_urec1));
27370 1103   22   ! sem(11).w:= sem(11).s;
27380 1104   23   ! sem(12).s:= ref(evavector(px_utrm1));
27390 1105   24   ! sem(12).w:= sem(12).s;
27400 1106   25   ! sem(1).s:= ref(evavector(px_ncp));
27410 1107   26   ! sem(1).w:= sem(1).s;
27420 1108   27   ! sem(26).s := ref(evavector(al_lam1));
27430 1109   28   ! sem(26).w := sem(26).s;
27440 1110   29   ! 
27450 1111   30   ! init_rout_semp;
27460 1112   31   ! 
\f

paposlst    81.06.19.   11.35.                                                    page    37

27470 1113   32   !   (* initialise buffers *)
27480 1114   33   ! alloc(opoutref,consprotpool,wsem);  (****** jli ****)
27490 1115   34   ! signal(opoutref,consoleprot);       (****** jli ******)
27500 1116   35   ! FOR i:= 1 TO 2 DO
27510 1117   36   !   BEGIN
27520 1118   37   !   ! alloc (opoutref, opbufpool, wsem);
27530 1119   38   !   ! opoutref^.u1:=2; (* write *)
27540 1120   39   !   ! LOCK opoutref AS opbuf: opbuftype DO
27550 1121   40   !   !   WITH opbuf DO
27560 1122   41   !   !     BEGIN
27570 1123   42   !   !     ! first:= firstindex;
27580 1124   43   !   !     ! name:= "pax         ";
27590 1125   44   !   !     ! data(firstindex):= "!";
27600 1126   45   !   !     END;
27610 1127   46   !   ! return (opoutref);
27620 1128   47   !   END;
27630 1129   48   ! writenl;
27640 1130   49   ! 
27650 1131   50   ! alloc(opinref, opbufpool, wrsem);
27660 1132   51   ! 
27670 1133   52   ! opinref^.u1:=1; (* read *)
27680 1134   53   ! 
27690 1135   54   ! LOCK opinref AS opbuf: opbuftype DO
27700 1136   55   !   WITH opbuf DO
27710 1137   56   !     BEGIN
27720 1138   57   !     ! first:= firstindex;
27730 1139   58   !     ! last:= lastindex;
27740 1140   59   !     ! name:= "pax         ";
27750 1141   60   !     END;
27760 1142   61   ! 
27770 1143   62   !   <*
27780 1144   63   !   FOR i:= 1 TO no_listen DO
27790 1145   64   !   BEGIN
27800 1146   65   !   alloc(cur,messbufpool,sem(com_pool).s^);
27810 1147   66   !   return(cur);
27820 1148   67   !   END;
27830 1149   68   !   *>
27840 1150   69   ! st:= 1024;
27850 1151   70   ! base:= 10;
27860 1152   71   ! firstword:= 1;
27870 1153   72   ! lastword:= 10;
27880 1154   73   ! 
27890 1155   74   ! 
27900 1156   75   !   (* insert auto create with edit here *)
27910 1157   76   ! init_modul(1);
27920 1158   77   ! init_modul(2);
\f

paposlst    81.06.19.   11.35.                                                    page    38

27930 1159   78   ! init_modul(4);
27940 1160   79   ! init_modul(6);
27950 1161   80   ! 
27960 1162   81   ! REPEAT
27970 1163   82   ! !   (* read a line of input from the operator and execute it *)
27980 1164   83   ! ! 
27990 1165   84   ! ! getinput;
28000 1166   85   ! ! 
28010 1167   86   ! ! CASE command OF
28020 1168   87   ! ! ! 
28030 1169   88   ! ! ! ";": (* comment command *)
28040 1170   89   ! ! !   BEGIN
28050 1171   90   ! ! !   END;
28060 1172   91   ! ! !  
\f

paposlst    81.06.19.   11.35.                                                    page    39

29010 1173   92   ! ! ! "b": (* base *)
29020 1174   93   ! ! !     (* defines the number base for input as well as output *)
29030 1175   94   ! ! !     (* the base is always read decimally *)
29040 1176   95   ! ! !   BEGIN
29050 1177   96   ! ! !   ! IF noofparams < 1 THEN
29060 1178   97   ! ! !   !   BEGIN
29070 1179   98   ! ! !   !   ! base:= oldbase;
29080 1180   99   ! ! !   !   ! outstring10(noparam)
29090 1181  100   ! ! !   !   END
29100 1182  101   ! ! !   ! ELSE
29110 1183  102   ! ! !   !   
29120 1184  103   ! ! !   !   IF NOT (params(1) IN (. 2, 8, 10, 16 .) ) THEN
29130 1185  104   ! ! !   !     BEGIN (* illegal base *)
29140 1186  105   ! ! !   !     ! outstring20("illegal base        ");
29150 1187  106   ! ! !   !     ! base:= oldbase;
29160 1188  107   ! ! !   !     END
29170 1189  108   ! ! !   !   ELSE
29180 1190  109   ! ! !   !     base:= params(1);
29190 1191  110   ! ! !   END;
29200 1192  111   ! ! !  
\f

paposlst    81.06.19.   11.35.                                                    page    40

30010 1193  112   ! ! ! "f": (* fill *)
30020 1194  113   ! ! !     (* fills integers into current buffer.
30030 1195  114   ! ! !     1st param: first word no. to be filled,
30040 1196  115   ! ! !     following: values to be assigned *)
30050 1197  116   ! ! !   BEGIN
30060 1198  117   ! ! !   ! IF noofparams < 2 THEN
30070 1199  118   ! ! !   !   outstring10("param     ")
30080 1200  119   ! ! !   ! ELSE
30090 1201  120   ! ! !   !   IF (params(1) < 1) THEN
30100 1202  121   ! ! !   !     outstring20("illegal start       ")
30110 1203  122   ! ! !   !   ELSE
30120 1204  123   ! ! !   !     IF nil(cur) THEN
30130 1205  124   ! ! !   !       outstring10("no buffer ")
30140 1206  125   ! ! !   !     ELSE
30150 1207  126   ! ! !   !       BEGIN (* params are ok *)
30160 1208  127   ! ! !   !       ! i:= params(1); (* i points into the messbuf *)
30170 1209  128   ! ! !   !       ! 
30180 1210  129   ! ! !   !       ! FOR j:= 2 TO noofparams DO
30190 1211  130   ! ! !   !       !     (* j points into the param list *)
30200 1212  131   ! ! !   !       !   IF i <= messbufsize THEN
30210 1213  132   ! ! !   !       !     BEGIN
30220 1214  133   ! ! !   !       !     ! LOCK cur AS messbuf: messbuftype DO
30230 1215  134   ! ! !   !       !     !   messbuf(i):= params(j);
30240 1216  135   ! ! !   !       !     ! i:= i + 1;
30250 1217  136   ! ! !   !       !     END;
30260 1218  137   ! ! !   !       ! 
30270 1219  138   ! ! !   !       END (* params ok *)
30280 1220  139   ! ! !   END (* fill *);
30290 1221  140   ! ! !  
\f

paposlst    81.06.19.   11.35.                                                    page    41

31010 1222  141   ! ! ! "i": (* initialise pointers *)
31020 1223  142   ! ! !   BEGIN
31030 1224  143   ! ! !   ! IF noofparams=0 THEN
31040 1225  144   ! ! !   !   FOR i:=1 TO noofsemaphores DO sem(i).w:= sem(i).s ELSE
31050 1226  145   ! ! !   !     IF (params(1)>0) AND (params(1)<=noofsemaphores) THEN
31060 1227  146   ! ! !   !       sem(params(1)).w:= sem(params(1)).s ELSE
31070 1228  147   ! ! !   !       outstring10(valparam);
31080 1229  148   ! ! !   ! init_rout_semp;
31090 1230  149   ! ! !   END;
31100 1231  150   ! ! !  
\f

paposlst    81.06.19.   11.35.                                                    page    42

32010 1232  151   ! ! ! "k": (* kill *)
32020 1233  152   ! ! !     (* removes incarnation of tested module(s)
32030 1234  153   ! ! !     params are nos. of modules to be removed *)
32040 1235  154   ! ! !   
32050 1236  155   ! ! !   IF noofparams >= 1 THEN
32060 1237  156   ! ! !     FOR i:= 1 TO noofparams DO
32070 1238  157   ! ! !       BEGIN
32080 1239  158   ! ! !       ! moduleno:= params(i);
32090 1240  159   ! ! !       ! IF (1<=moduleno) AND (moduleno<=noofmodules) THEN
32100 1241  160   ! ! !       !   IF NOT nil(sh(moduleno)) THEN
32110 1242  161   ! ! !       !     remove (sh(moduleno))
32120 1243  162   ! ! !       !   ELSE
32130 1244  163   ! ! !       !     BEGIN
32140 1245  164   ! ! !       !     ! outdecimal (moduleno, 4);
32150 1246  165   ! ! !       !     ! outstring10(" not alive");
32160 1247  166   ! ! !       !     ! writenl;
32170 1248  167   ! ! !       !     END
32180 1249  168   ! ! !       !   ELSE
32190 1250  169   ! ! !       !     BEGIN
32200 1251  170   ! ! !       !     ! outdecimal (moduleno, 4);
32210 1252  171   ! ! !       !     ! outstring10(illegalno);
32220 1253  172   ! ! !       !     ! writenl;
32230 1254  173   ! ! !       !     END
32240 1255  174   ! ! !       END
32250 1256  175   ! ! !     ELSE outstring10("no params ");
32260 1257  176   ! ! !  
\f

paposlst    81.06.19.   11.35.                                                    page    43

33010 1258  177   ! ! ! "m": (* testmode *)
33020 1259  178   ! ! !   testmode:= NOT testmode;
33030 1260  179   ! ! !  
\f

paposlst    81.06.19.   11.35.                                                    page    44

34010 1261  180   ! ! ! "o": (* output *)
34020 1262  181   ! ! !     (* outputs current buffer incl. user parameters
34030 1263  182   ! ! !     1st param is firstword,
34040 1264  183   ! ! !     2nd param is lastword *)
34050 1265  184   ! ! !   BEGIN
34060 1266  185   ! ! !   ! IF nil(cur) THEN
34070 1267  186   ! ! !   !   outstring10 ("no buffer ")
34080 1268  187   ! ! !   ! ELSE
34090 1269  188   ! ! !   !   BEGIN
34100 1270  189   ! ! !   !   ! outchar("u");
34110 1271  190   ! ! !   !   ! outchar(":");
34120 1272  191   ! ! !   !   ! 
34130 1273  192   ! ! !   !   ! outinteger(cur^.u1,4);
34140 1274  193   ! ! !   !   ! outinteger(cur^.u2,4);
34150 1275  194   ! ! !   !   ! outinteger(cur^.u3,4);
34160 1276  195   ! ! !   !   ! outinteger(cur^.u4,4);
34170 1277  196   ! ! !   !   ! writenl;
34180 1278  197   ! ! !   !   ! 
34190 1279  198   ! ! !   !   ! IF (noofparams>=1) AND (params(1)>=1)
34200 1280  199   ! ! !   !   !   AND (params(1)<= messbufsize) THEN
34210 1281  200   ! ! !   !   !   firstword:= params(1);
34220 1282  201   ! ! !   !   ! 
34230 1283  202   ! ! !   !   ! IF (noofparams>=2) AND (params(2)<=messbufsize) THEN
34240 1284  203   ! ! !   !   !   lastword:= params(2);
34250 1285  204   ! ! !   !   ! IF lastword>messbufsize
34260 1286  205   ! ! !   !   !   THEN lastword:= messbufsize;
34270 1287  206   ! ! !   !   ! 
34280 1288  207   ! ! !   !   ! IF cur^.size<messbufsize THEN
34290 1289  208   ! ! !   !   !   outstring20("too small buffer    ") ELSE
34300 1290  209   ! ! !   !   !   FOR i:= firstword TO lastword DO
34310 1291  210   ! ! !   !   !     BEGIN
34320 1292  211   ! ! !   !   !     ! outdecimal(i,3);
34330 1293  212   ! ! !   !   !     ! outchar(":");
34340 1294  213   ! ! !   !   !     ! LOCK cur AS messbuf: messbuftype DO
34350 1295  214   ! ! !   !   !     !   IF base= 2 THEN
34360 1296  215   ! ! !   !   !     !     outinteger(messbuf(i),17)
34370 1297  216   ! ! !   !   !     !   ELSE
34380 1298  217   ! ! !   !   !     !     outinteger(messbuf(i),7);
34390 1299  218   ! ! !   !   !     ! writenl;
34400 1300  219   ! ! !   !   !     END;
34410 1301  220   ! ! !   !   END (* ok *);
34420 1302  221   ! ! !   END (* output *);
34430 1303  222   ! ! !  
\f

paposlst    81.06.19.   11.35.                                                    page    45

35010 1304  223   ! ! ! "r": (* return *)
35020 1305  224   ! ! !     (* returns current buffer *)
35030 1306  225   ! ! !   IF nil(cur)
35040 1307  226   ! ! !     THEN outstring10("no buffer ")
35050 1308  227   ! ! !   ELSE return(cur);
35060 1309  228   ! ! !  
\f

paposlst    81.06.19.   11.35.                                                    page    46

36010 1310  229   ! ! ! "s": (* signal *)
36020 1311  230   ! ! !     (* signals current buffer to one of the predefined semaphores.
36030 1312  231   ! ! !     1st param is semno *)
36040 1313  232   ! ! !   BEGIN
36050 1314  233   ! ! !   ! semno:= params(1);
36060 1315  234   ! ! !   ! 
36070 1316  235   ! ! !   ! IF noofparams >= 1 THEN
36080 1317  236   ! ! !   !   IF (1<=semno) AND (semno<=noofsemaphores) THEN
36090 1318  237   ! ! !   !     IF NOT nil(cur) THEN
36100 1319  238   ! ! !   !       signal (cur,sem(semno).s^)
36110 1320  239   ! ! !   !     ELSE outstring10("no buffer ")
36120 1321  240   ! ! !   !     ELSE outstring10(illegalno)
36130 1322  241   ! ! !   !     ELSE outstring10(noparam)
36140 1323  242   ! ! !   END (* signal *);
36150 1324  243   ! ! !  
\f

paposlst    81.06.19.   11.35.                                                    page    47

37010 1325  244   ! ! ! "t": (* testsem *)
37020 1326  245   ! ! !     (* tests the status of the specified semaphores.
37030 1327  246   ! ! !     if none is specified, the status of all the
37040 1328  247   ! ! !     user semaphores is given.
37050 1329  248   ! ! !     in both cases nothing will be written for a semaphore
37060 1330  249   ! ! !     if it is passive. *)
37070 1331  250   ! ! !   BEGIN
37080 1332  251   ! ! !   ! IF noofparams=0 THEN
37090 1333  252   ! ! !   !   BEGIN (* test all semaphores *)
37100 1334  253   ! ! !   !   ! 
37110 1335  254   ! ! !   !   ! FOR i:=1 TO noofsemaphores DO
37120 1336  255   ! ! !   !   !   testsem(i)
37130 1337  256   ! ! !   !   END (* test all *)
37140 1338  257   ! ! !   ! ELSE
37150 1339  258   ! ! !   !   BEGIN (* test the specified semaphores *)
37160 1340  259   ! ! !   !   ! 
37170 1341  260   ! ! !   !   ! FOR i:=1 TO noofparams DO
37180 1342  261   ! ! !   !   !   IF (params(i)<1) OR (params(i)>noofsemaphores) THEN
37190 1343  262   ! ! !   !   !     BEGIN (* illegal no. *)
37200 1344  263   ! ! !   !   !     ! outstring20("illegal no.:        ");
37210 1345  264   ! ! !   !   !     ! outdecimal(params(i),3);
37220 1346  265   ! ! !   !   !     ! writenl;
37230 1347  266   ! ! !   !   !     END (* illegal no *)
37240 1348  267   ! ! !   !   !   ELSE
37250 1349  268   ! ! !   !   !     testsem( params(i) );
37260 1350  269   ! ! !   !   END (* test the specified semaphores *)
37270 1351  270   ! ! !   END (* testsem *);
37280 1352  271   ! ! ! 
37290 1353  272   ! ! !  
\f

paposlst    81.06.19.   11.35.                                                    page    48

38010 1354  273   ! ! ! "u": (* user parameters *)
38020 1355  274   ! ! !     (* inserts user param into header of current buffer
38030 1356  275   ! ! !     1st param is u1
38040 1357  276   ! ! !     2nd param is u2
38050 1358  277   ! ! !     3rd param is u3
38060 1359  278   ! ! !     4th param is u4 *)
38070 1360  279   ! ! !   BEGIN
38080 1361  280   ! ! !   ! IF nil(cur)
38090 1362  281   ! ! !   !   THEN outstring10("no buffer ")
38100 1363  282   ! ! !   ! ELSE
38110 1364  283   ! ! !   !   IF noofparams = 0 THEN
38120 1365  284   ! ! !   !     outstring10(noparam)
38130 1366  285   ! ! !   !   ELSE
38140 1367  286   ! ! !   !     WITH cur^ DO
38150 1368  287   ! ! !   !       BEGIN
38160 1369  288   ! ! !   !       ! IF testinterval (params(1),0,255) THEN u1:= params(1);
38170 1370  289   ! ! !   !       ! IF (noofparams>=2) THEN IF testinterval(params(2),0,255) THEN
38180 1371  290   ! ! !   !       !     u2:= params(2);
38190 1372  291   ! ! !   !       ! IF (noofparams>=3) THEN IF testinterval(params(3),0,255) THEN
38200 1373  292   ! ! !   !       !     u3:= params(3);
38210 1374  293   ! ! !   !       ! IF (noofparams>=4) THEN IF testinterval(params(4),0,255) THEN
38220 1375  294   ! ! !   !       !     u4:= params(4);
38230 1376  295   ! ! !   !       END
38240 1377  296   ! ! !   END; (* end user parameters *)
38250 1378  297   ! ! ! 
38260 1379  298   ! ! !  
\f

paposlst    81.06.19.   11.35.                                                    page    49

39010 1380  299   ! ! ! "w": (* wait *)
39020 1381  300   ! ! !     (* waits for semaphore semno.
39030 1382  301   ! ! !     1st param is semno *)
39040 1383  302   ! ! !   BEGIN
39050 1384  303   ! ! !   ! semno:= params(1);
39060 1385  304   ! ! !   ! 
39070 1386  305   ! ! !   ! IF noofparams >= 1 THEN
39080 1387  306   ! ! !   !   IF nil(cur) THEN
39090 1388  307   ! ! !   !     IF (1<=semno) AND (semno<=noofsemaphores) THEN
39100 1389  308   ! ! !   !       BEGIN
39110 1390  309   ! ! !   !       ! sensesem( cur, sem(semno).w^);
39120 1391  310   ! ! !   !       ! IF nil(cur) THEN
39130 1392  311   ! ! !   !       !   outstring20("semaphore not open  ")
39140 1393  312   ! ! !   !       END
39150 1394  313   ! ! !   !     ELSE outstring10(illegalno)
39160 1395  314   ! ! !   !     ELSE outstring20("you already have one")
39170 1396  315   ! ! !   !     ELSE outstring10(noparam)
39180 1397  316   ! ! !   END (* wait *);
39190 1398  317   ! ! !  
\f

paposlst    81.06.19.   11.35.                                                    page    50

40010 1399  318   ! ! ! "x": (* exchange pointer *)
40020 1400  319   ! ! !   BEGIN
40030 1401  320   ! ! !   ! IF noofparams >= 2 THEN
40040 1402  321   ! ! !   !   IF (params(1)>0) AND (params(1)<=noofsemaphores) THEN
40050 1403  322   ! ! !   !     IF (params(2)>0) AND (params(2)<=noofsemaphores) THEN
40060 1404  323   ! ! !   !       BEGIN
40070 1405  324   ! ! !   !       ! worksem:= sem(params(1)).w;
40080 1406  325   ! ! !   !       ! sem(params(1)).w:= sem(params(2)).w;
40090 1407  326   ! ! !   !       ! sem(params(2)).w:= worksem;
40100 1408  327   ! ! !   !       ! init_rout_semp;
40110 1409  328   ! ! !   !       END
40120 1410  329   ! ! !   !     ELSE outstring10(valparam)
40130 1411  330   ! ! !   !     ELSE outstring10(valparam)
40140 1412  331   ! ! !   !     ELSE outstring10(noparam)
40150 1413  332   ! ! !   END (* exchange pointer *);
40160 1414  333   ! ! ! 
40170 1415  334   ! ! ! "g": (* start tap
40180 1416  335   ! ! !    1st parameter is tap incno
40190 1417  336   ! ! !    2nd parameter is sem. no. to tap  *)
40200 1418  337   ! ! !   IF (params(1)<1) OR (params(1)>3) THEN outstring20(illegalparam) ELSE
40210 1419  338   ! ! !     start_tap(params(2),params(1));
40220 1420  339   ! ! ! 
40230 1421  340   ! ! ! "q": (* stop tap *)
40240 1422  341   ! ! !     (* 1st parameter is tap incno *)
40250 1423  342   ! ! !   IF (params(1)<1) OR (params(1)>3) THEN outstring20(illegalparam) ELSE
40260 1424  343   ! ! !     stop_tap(params(1));
40270 1425  344   ! ! ! 
40280 1426  345   ! ! ! 
40290 1427  346   ! ! ! "^": (* pop *)
40300 1428  347   ! ! !     (* pops from current buffer and saves the popped message in chhstack *)
40310 1429  348   ! ! !   IF NOT nil(cur) THEN
40320 1430  349   ! ! !     BEGIN
40330 1431  350   ! ! !     ! pop(chhref, cur);
40340 1432  351   ! ! !     ! push(chhref, chhstack);
40350 1433  352   ! ! !     END
40360 1434  353   ! ! !   ELSE
40370 1435  354   ! ! !     outstring10("no buffer ");
40380 1436  355   ! ! ! 
40390 1437  356   ! ! ! "_": (* push *)
40400 1438  357   ! ! !     (* pushes the first message in chhstack onto current buffer *)
40410 1439  358   ! ! !   IF NOT nil(chhstack) THEN
40420 1440  359   ! ! !     BEGIN
40430 1441  360   ! ! !     ! pop(chhref, chhstack);
40440 1442  361   ! ! !     ! push(chhref, cur);
40450 1443  362   ! ! !     END
40460 1444  363   ! ! !   ELSE
\f

paposlst    81.06.19.   11.35.                                                    page    51

40470 1445  364   ! ! !     outstring10("not popped");
40480 1446  365   ! ! ! 
40490 1447  366   ! ! ! 
40500 1448  367   ! ! ! 
40510 1449  368   ! ! ! OTHERWISE (* error *)
40520 1450  369   ! ! ! outstring20 ("illegal comm. type h");
40530 1451  370   ! ! END (* case *);
40540 1452  371   ! ! 
40550 1453  372   ! ! IF command<>";" THEN
40560 1454  373   ! !   writenl;
40570 1455  374   ! ! 
40580 1456  375   ! UNTIL false;
40590 1457  376   ! 
40600 1458  377   END.
40610 1459      
40620 1460      
40630 1461      
\f

paposlst    81.06.19.   11.35.                                                    page    52

           0   37*   51*   72*  333   362   388   390   437   480   481   482   485   502   503   511 
              520   527   533   539   547   556   629*  652   661   671   677   684   696   707   708 
              708   735   738   743   753   758   759   858   864   866   882   929   951   958  1014 
             1086  1224  1226  1332  1364  1369  1370  1372  1374  1402  1403 
           1   38*   50*   57*   59*   69*   70*   72*   75*   76*   87*  100*  101*  102*  116*  142*
              143*  152*  153*  315   316   403   406   415   471:  473   498   499   499   500   501 
              502   503   508   510   516   524   537   537   545   561   606   630*  643   646   660 
              661   666   671   679   691   693   696   700   701   715   730   734   756   760   762 
              768   772   787   795   804   820   822   927   936   953   968   969  1023  1090  1095 
             1106  1107  1107  1116  1133  1152  1157  1177  1184  1190  1201  1201  1208  1216  1225 
             1226  1226  1227  1227  1236  1237  1240  1279  1279  1279  1280  1281  1314  1316  1317 
             1335  1341  1342  1369  1369  1384  1386  1388  1402  1402  1405  1406  1418  1418  1418 
             1419  1423  1423  1423  1424 
           2  143*  317   318   319   320   333   434   453   473   476:  480   485   493   494:  500 
              505   508   509   509   545   556   567   681   682   684   685   693   694   696   697 
              703   704   707   708   714:  740   912:  940: 1116  1119  1158  1184  1198  1210  1283 
             1283  1284  1295  1370  1370  1371  1401  1403  1403  1406  1407  1419 
           3   52*   88*  321   322   323   324   473   481   485   485   495   501   510   571   720 
              733  1009  1027  1041  1292  1345  1372  1372  1373  1418  1423 
           4   34*   53*  173*  325   326   327   328   441   478   482   485   489:  493:  494   502 
              511   525   537   579   592   725   726   924   978   991  1159  1245  1251  1273  1274 
             1275  1276  1374  1374  1375 
           5  493:  503   512   513   525   545 
           6   49*  493:  513   554:  721   919  1160 
           7  560:  566   570  1298 
           8  500   501   719:  732   917:  941: 1184 
           9  750 
          10   75*  182*  396   525   617   648   787   867   880  1088  1151  1153  1184 
          11  176*  315   565: 1102  1103  1103 
          12  316   569:  795  1104  1105  1105 
          15  317   629*  679   691   701   738 
          16  318   716   724:  863   887   914   922:  933   942: 1089  1184 
          17  319  1296 
          19  321 
          20   35*   76*   89*  183*  322   626*  804 
          21  323 
          23  325 
          24  326 
          25  327 
          26  320   324   328  1108  1109  1109 
          40   29*
          50   31*  152*  413   512 
          80   32*   50*
          87  876   899   948 
\f

paposlst    81.06.19.   11.35.                                                    page    53

         120  175*
         125  172*
         200  181*
         255 1369  1370  1372  1374 
         300  538   546 
         500  456   557 
         576  473 
         600  486 
         700  526 
         900  474   485 
        1024 1150 
        2048  942 
        3276  890 
        4096  941 
       16384  940 
       32767  953 
       32768  892   952 
a              80* 1003= 1004=
abs           658 
alfa           65*  203*  292*  424*  450*  791*
alfa10         75*  289*  781*
alfa20         76*  295*  307*  799*  986*
alfalength     49*
alloc        1114  1118  1131 
alreadyexists                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
               42*  432   593 
al_lam1      1108 
ap            157* 1003  1007  1039 
appl_vector     2*
as            365:  371:  603:  816:  967: 1062: 1120: 1135: 1214: 1294:
atbuffer       72*
base          126*  395   396=  409=  419=  616   617=  619=  648   658   659   713   732   863   867 
              880   887   898   899   911   933   939   946   948  1151= 1179= 1187= 1190= 1295 
bdelay1       230*
bdelay2       230*
bit           629*
bits          629*  681=  684=  693=  696=  703   704=  704   707   708=  708   740 
boolean       149*  386*  585*  640*  842*  972* 1000*
bp            157* 1004  1007  1039 
byte           72*  191*  192*  230*  248*
ch            600*  607   847*  853=  860   861=  862   863   874   875   876   884=  886   887   890 
              897   898   899   913   918   923   931=  932   933   945   946   948 
char           66*   75*   76*  122*  298*  600*  630*  811*  847*
chhref        105* 1431  1432  1441  1442 
\f

paposlst    81.06.19.   11.35.                                                    page    54

chhstack      106* 1432  1439  1441 
chr           658   751   752 
cmax          516 
comint_prio   244*
command       122*  377=  379   392   407  1167  1453 
conn_desc     185*  227*  498   499   500   501   502   503   507   508   509   510   511   512   513 
              517   524 
conn_desc_array                                                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              185*  227*
consoleprot    98*  238*  242*  455   556  1115 
consprotpool   87* 1114 
countref      107* 1017  1018  1022  1030  1031 
countsem       92* 1022  1028  1030 
cparams       499=  500=  501=  502=  503=  508=  509=  510=  511=  512=  513=
create        436   523   536   544 
createerror    45*  440 
crtap         450*  561   567   571 
ctyp          498=  507=  517=
cur           110* 1204  1214: 1266  1273  1274  1275  1276  1288  1294: 1306  1308  1318  1319  1361 
             1367  1387  1390  1391  1429  1431  1442 
curdigit      631*  730=  745   746   751   752   756   760=  760   844*  927=  936=  936   937   949 
curpos        632*  733=  734=  741   759=  762=  762 
data           66*  607=  819  1125=
digit         842*  854=  862=  864   872   882   886=  888   929   932=  934 
digits        630*  646=  658=  665=  671=  746=  751=  752=  774   837*  862   874   886   897   932 
              945 
doesntexist    43*
evavector       2* 1102  1104  1106  1108 
external      201*  211*  218*  232*  239*  245*  249*
false         400   410   594   755   851   854   869   893   980  1019  1084  1456 
first          62*  374   972*  975  1123= 1138=
firstindex     49*   50*   66*  366   375  1063  1123  1125  1138 
firstword     127* 1152= 1281= 1290 
formatter_prio                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              244*
getinput      358* 1165 
getparams     280*  381   384*
h             633*  738=  740 
hexdigits     838*  863   887   933 
hh            208*
i             128*  307*  331*  333   333   339   340   341   450*  452   452   453   455   505=  507 
              508   508   509   510   511   512   513   516=  517   519=  520   521   523=  527   528 
              532=  533   534   536=  539   540   544=  547   548   633*  646=  646   650=  658   660=
              660   661   665   666=  666   669   679=  681   691=  693   701=  703   704   704   772=
              774   785*  787=  788   793*  795=  796   802*  804=  805   972*  975   975   978   986*
              991   996* 1003  1004  1005  1009  1017  1031  1037  1041  1095= 1097  1097  1098  1098 
\f

paposlst    81.06.19.   11.35.                                                    page    55

             1116= 1208= 1212  1215  1216= 1216  1225= 1225  1225  1237= 1239  1290= 1292  1296  1298 
             1335= 1336  1341= 1342  1342  1345  1349 
illegalno      44*  580   977  1252  1321  1394 
illegalparam   46* 1418  1423 
incharsleft   129*  374=  822=  822   858   864   882   929   958   969=  969 
incname      1085 
incno         331*  336   339   340   341   342   348*  350   352   352   353 
index         248*  423*  431   436   438   450*  454   460*  469   472   484   555   561   567   571 
              579 
init_modul    460* 1157  1158  1159  1160 
init_proc     422*  454   472   484   555 
init_rout_semp                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              313*  343   354  1111  1229  1408 
int           283*  286*  611*  618   622*  652   658   659=  659   661   671   677   681   682=  682 
              684   685=  685   693   694=  694   696   697=  697 
integer        64*   69*   70*  140*  142*  143*  152*  181*  182*  183*  200*  207*  208*  209*  210*
              216*  222*  244*  248*  283*  286*  301*  307*  331*  348*  423*  427*  429*  450*  450*
              460*  585*  611*  622*  638*  785*  793*  802*  828*  845*  972*  986*  996*
j             130* 1014= 1023= 1023  1027  1210= 1215 
k             131*
last           63*  606=  606   607   972*  975  1063= 1139=
lastchar      847*  852=  860=  868 
lastindex      50*   66* 1139 
lastword      132* 1153= 1284= 1285  1286= 1290 
lcp_ident     216*  222*
ldrv          162*  225*  319=  323=  327=  524 
ldrv2         163*  226*  320=  324=  328=  524 
leftbyte      133*
link          435   519   532 
lock          365:  371:  603:  816:  967: 1062: 1120: 1135: 1214: 1294:
locked       1037 
lrec          161*  224*  316=  318=  322=  326=  524 
ltrm          160*  223*  315=  317=  321=  325=  524 
ltsmarray     160*  161*  162*  163*  223*  224*  225*  226*
m             634*  700=  703   704   705=  707   708   709=
main_sem      205*
max           207*
maxpos        626*  630*  646   650   669   730   745   756   768   772   772 
max_hlcon_no  192*  493=  494=  495=  505   516 
messbuf      1214: 1215= 1294: 1296  1298 
messbufpool    89*
messbufsize    33*   69* 1212  1280  1283  1285  1286  1288 
messbuftype    69*   89* 1214  1294 
mm            209*
\f

paposlst    81.06.19.   11.35.                                                    page    56

moduleno      134*  585*  589   592  1239= 1240  1240  1241  1242  1245  1251 
moduleready   585*  589=  594=
more         1000* 1011= 1015  1019=
n             450*  454 
n1            462*  472 
n11           466*  567 
n12           467*  571 
n2            463*  484   485 
n6            464*  555 
n7            465*  561 
name           65*  424*  435   436   443  1124= 1140=
ncp           195*  221*  473 
ncp_ident     200*
ncp_sem       197*  215*
ncth          241*  556 
ncth_sem      243*
negative      640*  652=  663   842*  868=  869=  890   893=  904   913=  918=  923=  937   949 
newbase       386*  397=  400=  410=  417 
newm          634*  703=  705   707=  709 
next           64*  366=  374   375=  819   820=  820   968=  968 
nl           1058 
node_no       191*  492   499  1088  1089= 1089  1090  1092 
none          517 
noofdig       635*  716=  721=  726=  730 
noofdigit     844*  914=  919=  924=  937   949 
noofmodules    35*  153* 1240 
noofparams    135*  333   390=  403=  403   404   405   406   413   415=  415   434   478  1177  1198 
             1210  1224  1236  1237  1279  1283  1316  1332  1341  1364  1370  1372  1374  1386  1401 
noofph         53*   57*
noofpos       636*  715=  720=  725=  741 
noofsemaphores                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
               36* 1225  1226  1317  1335  1342  1388  1402  1403 
nooftaps       52*   59*  100*  102*  142*  166*
noparam        41* 1180  1322  1365  1396  1412 
nul           852   853 
nwadr         179*  231*
nwb_del1      175*  525 
nwb_del2      176*  525 
nwu_del1      172*  525 
nwu_del2      173*  525 
ok             51*  369   429*  435=  436=  437   441   445=
oldbase       136*  395=  409   419   616=  619  1179  1187 
opbuf         365:  366   371:  372   603:  604   816:  817   967:  968   968  1062: 1063  1120: 1121 
             1135: 1136 
\f

paposlst    81.06.19.   11.35.                                                    page    57

opbufpool      88* 1118  1131 
opbufsize      32*
opbuftype      60*   88*  365   371   603   816   967  1062  1120  1135 
open         1005  1028 
operatorsem   455  1083 
opinref       108*  365:  367   368   369   371:  816:  967: 1131  1133  1135:
opoutref      109*  603: 1056  1059  1061  1062: 1114  1115  1118  1119  1120: 1127 
opsem         114*  204*  236*  367   485  1059  1083= 1085 
ord           379   658   751   752   875   875   876   898   898   899   946   946   948 
outchar       600*  766   774   788   796   805  1008  1008  1010  1040  1040  1042  1058  1270  1271 
             1293 
outdecimal    283*  441   579   592   611* 1009  1027  1041  1245  1251  1292  1345 
outinteger    286*  618   622*  978   991  1273  1274  1275  1276  1296  1298 
outstring10   289*  442   580   781*  977  1043  1180  1199  1205  1228  1246  1252  1256  1267  1307 
             1320  1321  1322  1362  1365  1394  1396  1410  1411  1412  1435  1445 
outstring12   292*  443   791*
outstring20   295*  334   337   432   440   566   570   593   799*  990  1186  1202  1289  1344  1392 
             1395  1418  1423  1450 
own          1085 
ownaddr       231*
ownadr        179*  525  1090=
p             425*  435   436   445 
params        152*  404=  405   453   480=  481=  482=  485   485   485  1184  1190  1201  1208  1215 
             1226  1226  1227  1227  1239  1279  1280  1281  1283  1284  1314  1342  1342  1345  1349 
             1369  1369  1370  1371  1372  1373  1374  1375  1384  1402  1402  1403  1403  1405  1406 
             1406  1407  1418  1418  1419  1419  1423  1423  1424 
pax_opsys       1*
pb             85*  537   545 
pb_type        57*   85*
ph            217*
ph_type        57*  217*
point_rec      79*  157*
pool           87*   88*   89*
poolh         229*
poolh_sem     214*
poolnnp       229*
pool_handler  213*  532   537   545 
pop          1431  1441 
positions     283*  286*  611*  618   622*  766   768   769   770=  772 
pr             38*
prio          427*  438 
proc7ncr       47*  566   570 
process         1*  195*  203*  213*  220*  236*  241*
processrec    425*
\f

paposlst    81.06.19.   11.35.                                                    page    58

processref    435   445 
procname      203*
pu             37*  244*
push         1432  1442 
pxtap         236*  455 
px_ncp       1106 
px_urec1     1102 
px_utrm1     1104 
readchar      298*  377   811*  819=  861   884   931 
readinteger   301*  404   828*  962=
readok        146*  413   851=  877=
readram       248* 1088 
ref           339   352   452  1097  1102  1104  1106  1108 
reference     111*
remove       1242 
repeatchar    304*  960   965*
res           637*  735=  740=  740   743   750   751   752   753   758=
result        248*  845*  866=  875=  876=  890   892=  898=  898   899=  899   904=  904   940=  940 
              941=  941   942=  942   946=  946   948=  948   951   952=  953=  953   962 
return       1127  1308 
rightbyte     137*
r_lcp_id      181*  524 
r_nnp_ph      183*  545 
r_transit_ph  182*  537 
s             339=  340=  352=  485   537   545  1003  1097= 1098  1102= 1103  1104= 1105  1106= 1107 
             1108= 1109  1225  1227  1319 
sc_sem        198*
sem           116*  237*  315   316   317   318   319   320   321   322   323   324   325   326   327 
              328   339   340   352   473   473   473   485   524   525   525   525   537   537   545 
              545   556  1003  1004  1097  1098  1098  1102  1103  1103  1104  1105  1105  1106  1107 
             1107  1108  1109  1109  1225  1225  1227  1227  1319  1390  1405  1406  1406  1407 
semaphore      97*   98*  100*  101*  204*  205*  214*  215*  238*  242*  243*
semno         138* 1314= 1317  1317  1319  1384= 1388  1388  1390 
sempointer     80*  114*  115*  236*
semvector       1*  455   473   524   537   545   556  1083 
sensesem     1017  1390 
sh            153*  431   436   438   566   570   589  1241  1242 
shadow        153*  187*  188*  189*
sh_poolh      188*  538   542 
sh_poolnnp    189*  546   550 
sh_routsupv   187*  526   530 
signal        367  1022  1031  1059  1115  1319 
signs         839*
simsignal     143*
\f

paposlst    81.06.19.   11.35.                                                    page    59

size          426*  434   436  1288 
size_listen    31*   33*   34*
sp            646   766 
ss            210*
st            139*  434= 1150=
start         438   530   542   550 
started        58*  336   342   350 
start_tap     331*  453  1419 
stdpriority   456   474   486   530   542   550   556   556   557 
stopped        58*  166*  353 
stop_tap      348* 1424 
supervisor    220*  519   524 
supv          228*
system_vector                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
                1*  196*  213*  220*  241*
sysvec        213*  220*
sys_vector    196*  241*
tap_index     142*  341=  352   352 
tap_pointer   102*  116*  197*  198*  199*  221*  228*  229*  237*
tap_sem        99*  339   452 
tap_semp      102*  340   452   455 
tap_state     166*  336   342=  350   353=
tap_state_tp   58*   59*
tap_state_type                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
               59*  166*  166*
testbufsize    34*   70*
testbuftype    70*
testinterval  972*  980=  983= 1369  1370  1372  1374 
testmode      148*  988  1084= 1259= 1259 
testmodeout   307*  362   379   388   405   986*
testopen     1085 
testout       521   528   534   540   548  1086  1092 
testsem       996* 1336  1349 
text          289*  292*  295*  307*  781*  788   791*  796   799*  805   986*  990 
ticklength    206*
timeout       203*  485 
timeout_sem   199*
true          397   589   736   877   913   918   923   983  1011 
ts_sem        101*  352  1005  1017  1031  1037  1097 
ts_sem_total   29*   36*  101*  116*  333  1095 
typ_hlcon     507 
typ_locon     498 
u1           1119= 1133= 1273  1369=
u2            369  1274  1371=
\f

paposlst    81.06.19.   11.35.                                                    page    60

u3           1275  1373=
u4           1276  1375=
udelay1       230*
udelay2       230*
unlink        445 
used          638*  643=  669=  756=  766   769   770 
valparam       40* 1228  1410  1411 
version        23* 1086 
w             340   452=  537   545   556  1004  1098= 1103= 1105= 1107= 1109= 1225= 1227= 1390  1405 
             1406= 1406  1407=
wait          368  1030  1061 
worksem       115* 1405= 1407 
writenl       310*  444   979   992  1034  1044  1052* 1129  1247  1253  1277  1299  1346  1454 
wrsem          95*  368  1131 
wsem           93* 1061  1114  1118 
z             119*  521   528   534   540   548  1085  1086  1092 
zeroes        640*  736=  743   753   755=
zone          119*
\f

paposlst    81.06.19.   11.35.                                                    page    61

AND               20
ARRAY             18
BEGIN            108
CASE               6
CONST              6
DIV                7
DO                39
DOWNTO             3
ELSE              61
END              116
FOR               19
FORWARD           11
FUNCTION           6
IF               101
IN                13
MOD                8
NIL               16
NOT               10
OF                26
OR                13
OTHERWISE          3
PROCEDURE         28
RECORD             2
REPEAT             5
THEN             101
TO                16
TYPE               1
UNTIL              5
VAR               37
WHILE              4
WITH               6
\f

oer8  1981.06.19  11.36
81.06.19.      11.36.                         pascal80     version 1981.04.01


   name        headline beginline endline  appetite(words) 

   init_rout_se   314       315     329  :       7            
   start_tap      332       334     346  :      20            
   stop_tap       349       351     356  :      13            
   getinput       360       362     382  :      21            
   getparams      386       388     420  :      25            
   init_proc      429       432     448  :      28            
   crtap          451       452     457  :      33            
   init_modul     462       471     583  :      57            
   moduleready    588       589     596  :      19            
   outchar        602       603     609  :       9            
   outdecimal     615       616     620  :      10            
   outinteger     626       643     777  :      47            
   outstring10    785       787     789  :      17            
   outstring12    793       795     797  :      17            
   outstring20    802       804     806  :      17            
   readchar       815       816     823  :      11            
   readinteger    837       851     963  :      17            
   repeatchar     966       967     970  :       8            
   testinterval   974       976     984  :      13            
   testmodeout    987       989     994  :      18            
   testsem       1000      1003    1046  :      15            
   writenl       1055      1057    1064  :      11            
   pax_opsys       23      1083    1458  :    1153            

 code: 4 . 2312  = 14312 bytes


end of PASCAL80 compilation 

end
blocksread = 53
▶EOF◀