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

⟦dbf6cb13a⟧ TextFile

    Length: 15360 (0x3c00)
    Types: TextFile
    Names: »fesuplst«

Derivation

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

TextFile

\f

fesuplst    81.05.20.   14.53.                                                    page     1

   10    1        PROCESS fesupervisor(
   20    2          op_sem : sempointer;
   30    3          VAR input_sem, write_sem, que_up, que_down : !ts_pointer;
   40    4          VAR stream_sem, netc_sem, com_pool : !sempointer);
   50    5        CONST
   60    6          version = "vers  1.11 /";
   70    7          no_read_stream  = 3;
   80    8          no_write_stream = 3;
   90    9          no_trans_bufs   = no_read_stream + no_write_stream;
  100   10          stream_mark = 255;        (* u4 *)
  110   11          dummy_stream = 2;
  120   12          max_stream_no = 15;
  130   13          
  140   14        TYPE
  150   15          tty_data = ARRAY ( 1..data_length ) OF byte;
  160   16          stream_buf = PACKED RECORD
  170   17                              !  fi, la, ne : integer;
  180   18                              !  fix        : alarmlabel;
  190   19                              !  data       : tty_data;
  200   20                              !  dummy      : ARRAY ( 1..106-data_length ) OF byte
  210   21                              END;
  220   22          return_buf= PACKED RECORD
  230   23                             !  fi, la, ne : integer;
  240   24                             !  fix        : alarmlabel;
  250   25                             !  data       : alarmlabel;
  260   26                             END;
  270   27          alarm_buf = PACKED RECORD
  280   28                             !  alabel : alarmlabel;
  290   29                             !  adata  : tty_data;
  300   30                             END;
  310   31          netc_buf = PACKED RECORD
  320   32                            !  alabel : alarmlabel;
  330   33                            !  intg   : integer;
  340   34                            !  netc_macro : macroaddr;
  350   35                            END;
  360   36          streams = SET OF 0..max_stream_no;
  370   37          
  380   38        VAR
  390   39          i      : byte;
  400   40          msg,
  410   41          alarm_msg : reference;
  420   42          opzone : zone;
  430   43          trans_pool : pool no_trans_bufs OF stream_buf;
  440   44          akt_streams : streams := (. 1, 2, 4 .);
  450   45          netc_addr : alarmnetaddr := alarmnetaddr(macroaddr(0,0,0),3);
  460   46           
\f

fesuplst    81.05.20.   14.53.                                                    page     2

 1010   47          PROCEDURE send_read_stream( no: byte );
 1020   48          BEGIN
 1030   49    1     ! LOCK msg AS buf : stream_buf DO
 1040   50    2     !   WITH msg^, buf DO
 1050   51    3     !     BEGIN
 1060   52    4     !     ! u1:= read_stream;
 1070   53    5     !     ! u2:= 0;
 1080   54    6     !     ! u3:= no;
 1090   55    7     !     ! u4:= stream_mark;
 1100   56    8     !     ! fi:= 6;
 1110   57    9     !     ! la:= 6+data_length;
 1120   58   10     !     ! ne:= 6;
 1130   59   11     !     END;
 1140   60   12     ! signal( msg, stream_sem^ );
 1150   61   13     END;
 1160   62          
 1170   63          PROCEDURE send_to_netc;
 1180   64          BEGIN
 1190   65    1     ! sensesem( alarm_msg, com_pool^ );
 1200   66    2     ! IF nil ( alarm_msg ) THEN
 1210   67    3     !   signal( msg, que_down.s^ ) ELSE
 1220   68    4     !   BEGIN
 1230   69    5     !   ! LOCK msg AS buf : stream_buf DO
 1240   70    6     !   !   LOCK alarm_msg AS abuf : alarm_buf DO
 1250   71    7     !   !     WITH alarm_msg^, buf, abuf DO
 1260   72    8     !   !       BEGIN
 1270   73    9     !   !       ! IF fix.rec = netc_addr THEN
 1280   74   10     !   !       !   u3:= netc_route1 ELSE
 1290   75   11     !   !       !   u3:= netc_route;
 1300   76   12     !   !       ! u4:= fix.op_code;
 1310   77   13     !   !       ! alabel:= fix;
 1320   78   14     !   !       ! adata := data;
 1330   79   15     !   !       END;
 1340   80   16     !   ! signal( alarm_msg, netc_sem^ );
 1350   81   17     !   ! IF msg^.u1 = read_stream THEN
 1360   82   18     !   !   send_read_stream ( msg^.u3 ) ELSE
 1370   83   19     !   !   signal( msg, write_sem.s^ );
 1380   84   20     !   END;
 1390   85   21     ! 
 1400   86   22     END;
 1410   87           
\f

fesuplst    81.05.20.   14.53.                                                    page     3

 2010   88          PROCEDURE send_write_stream;  (* data to sm3502 in msg *)
 2020   89          VAR
 2030   90            rec_stream : integer;
 2040   91          BEGIN
 2050   92    1     ! sensesem( alarm_msg, write_sem.w^ );
 2060   93    2     ! IF nil ( alarm_msg ) THEN
 2070   94    3     !   signal( msg, que_up.s^ ) ELSE
 2080   95    4     !   BEGIN
 2090   96    5     !   ! LOCK msg AS buf : alarm_buf DO
 2100   97    6     !   !   LOCK alarm_msg AS sbuf : stream_buf DO
 2110   98    7     !   !     WITH alarm_msg^, buf, sbuf DO
 2120   99    8     !   !       BEGIN
 2130  100    9     !   !       ! rec_stream:= alabel.rec.micro MOD 256;
 2140  101   10     !   !       ! IF rec_stream IN akt_streams THEN
 2150  102   11     !   !       !   u3:= rec_stream ELSE
 2160  103   12     !   !       !   u3:= dummy_stream;
 2170  104   13     !   !       ! u1:= write_stream;
 2180  105   14     !   !       ! u2:= 0;
 2190  106   15     !   !       ! u4:= stream_mark;
 2200  107   16     !   !       ! fix:= alabel;
 2210  108   17     !   !       ! data:= adata;
 2220  109   18     !   !       ! fi:= 6;
 2230  110   19     !   !       ! la:= 8 + alabel.no_of_by;
 2240  111   20     !   !       ! ne:= la + 1;
 2250  112   21     !   !       END;
 2260  113   22     !   ! IF msg^.u3 = netc_route2 THEN
 2270  114   23     !   !   LOCK msg AS buf : netc_buf DO
 2280  115   24     !   !     WITH buf DO
 2290  116   25     !   !       IF (alabel.result=accepted) AND (intg=1) THEN
 2300  117   26     !   !         netc_addr.macro:= netc_macro;
 2310  118   27     !   ! signal( alarm_msg, stream_sem^ );
 2320  119   28     !   ! return( msg );
 2330  120   29     !   END;
 2340  121   30     END;
 2350  122           
\f

fesuplst    81.05.20.   14.53.                                                    page     4

 3010  123          PROCEDURE write_returned; (* writebuf returned from sm3502 *)
 3020  124          BEGIN
 3030  125    1     ! IF msg^.u2 = ok_result THEN
 3040  126    2     !   signal( msg, write_sem.s^ ) ELSE
 3050  127    3     !     (* sm3502 error, return buf *)
 3060  128    4     !   BEGIN
 3070  129    5     !   ! LOCK msg AS buf : return_buf DO
 3080  130    6     !   !   WITH msg^, buf DO
 3090  131    7     !   !     BEGIN
 3100  132    8     !   !     ! data:= fix;
 3110  133    9     !   !     ! fix.no_of_by:= 2*label_size+2;
 3120  134   10     !   !     ! fix.rec     := data.send;
 3130  135   11     !   !     ! fix.send    := data.rec;
 3140  136   12     !   !     ! fix.send.micro:= tss_mic_addr;
 3150  137   13     !   !     ! fix.op_code := #h12;
 3160  138   14     !   !     ! fix.update  := 0;
 3170  139   15     !   !     ! fix.result  := no_connection;
 3180  140   16     !   !     END;
 3190  141   17     !   ! send_to_netc;
 3200  142   18     !   END;
 3210  143   19     END;
 3220  144           
\f

fesuplst    81.05.20.   14.53.                                                    page     5

 4010  145            (* main program *)
 4020  146        BEGIN
 4030  147    1   ! testopen( opzone, own.incname, op_sem );
 4040  148    2   ! testout ( opzone, version, fe_env_version );
 4050  149    3   ! FOR i:= 0 TO max_stream_no DO
 4060  150    4   !   IF i IN akt_streams THEN
 4070  151    5   !     BEGIN
 4080  152    6   !     ! alloc ( msg, trans_pool, input_sem.s^ );
 4090  153    7   !     ! send_read_stream(i);
 4100  154    8   !     ! alloc( msg, trans_pool, input_sem.s^ );
 4110  155    9   !     ! signal( msg, write_sem.s^ );
 4120  156   10   !     END;
 4130  157   11   ! 
 4140  158   12   ! 
 4150  159   13   ! REPEAT (* forever *)
 4160  160   14   ! ! 
 4170  161   15   ! ! wait( msg, input_sem.w^ );
 4180  162   16   ! ! IF ownertest( trans_pool, msg ) THEN
 4190  163   17   ! !   BEGIN  (* from streamer *)
 4200  164   18   ! !   ! IF msg^.u1 = read_stream THEN
 4210  165   19   ! !   !   send_to_netc ELSE
 4220  166   20   ! !   !   write_returned;
 4230  167   21   ! !   END ELSE
 4240  168   22   ! !   send_write_stream;
 4250  169   23   ! ! 
 4260  170   24   ! ! IF open( que_up.w^) AND open( write_sem.w^) THEN
 4270  171   25   ! !   BEGIN (* write a qued message on stream *)
 4280  172   26   ! !   ! wait( msg, que_up.w^);
 4290  173   27   ! !   ! send_write_stream;
 4300  174   28   ! !   END;
 4310  175   29   ! ! 
 4320  176   30   ! ! IF open( que_down.w^) AND open( com_pool^) THEN
 4330  177   31   ! !   BEGIN
 4340  178   32   ! !   ! wait( msg, que_down.w^);
 4350  179   33   ! !   ! send_to_netc;
 4360  180   34   ! !   END;
 4370  181   35   ! ! 
 4380  182   36   ! UNTIL false
 4390  183   37   ! 
 4400  184   38   END. (* process fesup *)
 4410  185      
\f

fesuplst    81.05.20.   14.53.                                                    page     6

           0   36*   45*   45*   45*   53   105   138   149 
           1   15*   20*   44*  111   116 
           2   11*   44*  133   133 
           3    7*    8*   45*
           4   44*
           6   56    57    58   109 
           8  110 
          15   12*
         106   20*
         255   10*
         256  100 
abuf           70:   71 
accepted      116 
adata          29*   78=  108 
akt_streams    44*  101   150 
alabel         28*   32*   77=  100   107   110   116 
alarmlabel     18*   24*   25*   28*   32*
alarmnetaddr   45*   45*
alarm_buf      27*   70    96 
alarm_msg      41*   65    66    70:   71    80    92    93    97:   98   118 
alloc         152   154 
as             49:   69:   70:   96:   97:  114:  129:
buf            49:   50    69:   71    96:   98   114:  115   129:  130 
byte           15*   20*   39*   47*
com_pool        4*   65   176 
data           19*   25*   78   108=  132=  134   135 
data_length    15*   20*   57 
dummy          20*
dummy_stream   11*  103 
false         182 
fesupervisor    1*
fe_env_version                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              148 
fi             17*   23*   56=  109=
fix            18*   24*   73    76    77   107=  132   133   134   135   136   137   138   139 
h12           137 
i              39*  149=  150   153 
incname       147 
input_sem       3*  152   154   161 
integer        17*   23*   33*   90*
intg           33*  116 
la             17*   23*   57=  110=  111 
label_size    133 
lock           49:   69:   70:   96:   97:  114:  129:
\f

fesuplst    81.05.20.   14.53.                                                    page     7

macro         117=
macroaddr      34*   45*
max_stream_no                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
               12*   36*  149 
micro         100   136=
msg            40*   49:   50    60    67    69:   81    82    83    94    96:  113   114:  119   125 
              126   129:  130   152   154   155   161   162   164   172   178 
ne             17*   23*   58=  111=
netc_addr      45*   73   117 
netc_buf       31*  114 
netc_macro     34*  117 
netc_route     75 
netc_route1    74 
netc_route2   113 
netc_sem        4*   80 
no             47*   54 
no_connection                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              139 
no_of_by      110   133=
no_read_stream                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
                7*    9*
no_trans_bufs                                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
                9*   43*
no_write_stream                                                  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
                8*    9*
ok_result     125 
open          170   170   176   176 
opzone         42*  147   148 
op_code        76   137=
op_sem          2*  147 
own           147 
ownertest     162 
pool           43*
process         1*
que_down        3*   67   176   178 
que_up          3*   94   170   172 
read_stream    52    81   164 
rec            73   100   134=  135 
rec_stream     90*  100=  101   102 
reference      41*
result        116   139=
return        119 
return_buf     22*  129 
s              67    83    94   126   152   154   155 
\f

fesuplst    81.05.20.   14.53.                                                    page     8

sbuf           97:   98 
sempointer      2*    4*
send          134   135=  136 
send_read_stream                                                 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
               47*   82   153 
send_to_netc   63*  141   165   179 
send_write_stream                                                <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
               88*  168   173 
sensesem       65    92 
signal         60    67    80    83    94   118   126   155 
streams        36*   44*
stream_buf     16*   43*   49    69    97 
stream_mark    10*   55   106 
stream_sem      4*   60   118 
testopen      147 
testout       148 
trans_pool     43*  152   154   162 
tss_mic_addr  136 
ts_pointer      3*
tty_data       15*   19*   29*
u1             52=   81   104=  164 
u2             53=  105=  125 
u3             54=   74=   75=   82   102=  103=  113 
u4             55=   76=  106=
update        138=
version         6*  148 
w              92   161   170   170   172   176   178 
wait          161   172   178 
write_returned                                                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
              123*  166 
write_sem       3*   83    92   126   155   170 
write_stream  104 
zone           42*
\f

fesuplst    81.05.20.   14.53.                                                    page     9

AND                3
ARRAY              2
BEGIN             16
CONST              1
DO                13
ELSE               8
END               20
FOR                1
IF                13
IN                 2
MOD                1
NIL                2
OF                 4
PACKED             4
PROCEDURE          4
RECORD             4
REPEAT             1
SET                1
THEN              13
TO                 1
TYPE               1
UNTIL              1
VAR                4
WITH               5
\f

jg3  1981.05.20  14.54
 fesup program
81.05.20.      14.54.                         pascal80     version 1981.04.01


   name        headline beginline endline  appetite(words) 

   send_read_st    48        49      61  :      11            
   send_to_netc    64        65      86  :      17            
   send_write_s    90        92     121  :      16            
   write_return   124       126     143  :      12            
   fesupervisor     6       147     184  :     116            

 code: 0 . 1662  = 1662 bytes


end of PASCAL80 compilation 

end
blocksread = 52
▶EOF◀