         << LINES .001/.009 ARE RESERVED FOR SYSTEMS INTEGRATION >>     00000001
LOGICAL LOG'BIT, MEM'STAT;                                     <<*2139>>00205000
INTEGER CPU'TYPE, MEM'SUM, CONTROLLER'NUM;                     <<*2139>>00215000
EQUATE                                                         <<*2139>>00225000
     MAX'CPU =        15,                                      <<*2139>>00225100
     NUM'CONTROLLERS = 4;                                      <<*2139>>00225200
                                                               <<*2139>>00225300
INTEGER ARRAY CONTROLLER'ARRAY(0:MAX'CPU*NUM'CONTROLLERS-1):=  <<*2139>>00225400
<<   CPU                  CONTROLLER NUMBER              >>    <<*2139>>00225500
<<   NUM            0        1        2        3         >>    <<*2139>>00225600
<<  -----        -------  -------  -------  -------      >>    <<*2139>>00225700
<<    1   >>        0,       2,     "NO",    "NO",             <<*2139>>00225800
<<    2   >>        0,       8,     "NO",    "NO",             <<*2139>>00225900
<<    3   >>        0,       8,     "NO",    "NO",             <<*2139>>00226000
<<    4   >>        0,      16,     "NO",    "NO",             <<*2139>>00226100
<<    5   >>        0,     "NO",    "NO",    "NO",             <<*2139>>00226200
<<    6   >>        0,       4,     "NO",    "NO",             <<*2139>>00226300
<<    7   >>        0,     "NO",    "NO",    "NO",             <<*2139>>00226400
<<    8   >>        0,     "NO",    "NO",    "NO",             <<*2139>>00226500
<<    9   >>        0,     "NO",    "NO",    "NO",             <<*2139>>00226600
<<   10   >>        0,     "NO",    "NO",    "NO",             <<*2139>>00226700
<<   11   >>        0,     "NO",    "NO",    "NO",             <<*2139>>00226800
<<   12   >>        0,     "NO",    "NO",    "NO",             <<*2139>>00226900
<<   13   >>        0,     "NO",    "NO",    "NO",             <<*2139>>00227000
<<   14   >>        0,     "NO",    "NO",    "NO",             <<*2139>>00227100
<<   15   >>        0,     "NO",    "NO",    "NO";             <<*2139>>00227200
                                                               <<*2139>>00227300
DEFINE FILESIZE = 4D#;  << MEMLOG FILE SIZE: 2 LOGICAL RECS >> <<*2139>>00260000
     CONTROLLER'B = 1,                                         <<*2139>>00465000
     CONTROLLER'C = 2,                                         <<*2139>>00466000
     CONTROLLER'D = 3;                                         <<*2139>>00467000
INTEGER PROCEDURE GET'CONTROLLER(CNTRLR'NUM, CPU'NUM);         <<*2139>>00890100
VALUE CNTRLR'NUM, CPU'NUM;                                     <<*2139>>00890200
INTEGER CNTRLR'NUM, CPU'NUM;                                   <<*2139>>00890300
     << TOO BAD SPL DOESN'T ALLOW TWO DIMENSIONAL ARRAYS. >>   <<*2139>>00890400
BEGIN                                                          <<*2139>>00890500
GET'CONTROLLER :=                                              <<*2139>>00890600
 CONTROLLER'ARRAY((CPU'NUM-1) * NUM'CONTROLLERS + CNTRLR'NUM); <<*2139>>00890700
END;                                                           <<*2139>>00890800
                                                               <<*2139>>00890900
PROCEDURE PUT'CONTROLLER(CNTRLR'NUM, CPU'NUM, VAL);            <<*2139>>00891000
VALUE CNTRLR'NUM, CPU'NUM, VAL;                                <<*2139>>00891100
INTEGER CNTRLR'NUM, CPU'NUM, VAL;                              <<*2139>>00891200
                                                               <<*2139>>00891300
BEGIN                                                          <<*2139>>00891400
CONTROLLER'ARRAY((CPU'NUM-1) * NUM'CONTROLLERS + CNTRLR'NUM):= <<*2139>>00891500
   VAL;                                                        <<*2139>>00891600
END;                                                           <<*2139>>00891700
     DOUBLE FG'FLIMIT;    << FILE LIMIT FROM FGETINFO >>       <<*2139>>00967000
          FGETINFO(FNUM,,,,FG'RSIZE,,,,,,,FG'FLIMIT);          <<*2139>>01045000
          IF FG'RSIZE <> RECSIZE OR FG'FLIMIT <> FILESIZE      <<*2139>>01050000
  IF CPU'TYPE = 6  THEN                                        <<*2139>>02340000
    BEGIN                                                      <<*2139>>02340200
    IF MEMBOARD = CONTROLLER'A  THEN                           <<*2139>>02340400
      TOS := %20000000001D                                     <<*2139>>02340600
    ELSE                                                       <<*2139>>02340800
      TOS := %20000000003D;                                    <<*2139>>02341000
    END                                                        <<*2139>>02341200
  ELSE                                                         <<*2139>>02341400
    BEGIN                                                      <<*2139>>02341600
    TOS := %100000 + GET'CONTROLLER(MEMBOARD,CPU'TYPE);        <<*2139>>02341800
    IF MEMBOARD = CONTROLLER'B  OR                             <<*2139>>02342000
       MEMBOARD = CONTROLLER'D  THEN                                    02342100
      TOS := 3                                                 <<*2139>>02342200
    ELSE                                                       <<*2139>>02342400
      TOS := 1;                                                <<*2139>>02342600
    END;                                                       <<*2139>>02345000
                                                               <<*2139>>02357000
       FILLOGREC'MM(MEMBOARD);                                 <<*1996>>03185500
       FILLOGREC'MM(MEMBOARD);                                 <<*1996>>03186000
       FILLOGREC'MM(MEMBOARD);                                 <<*1996>>03186500
       FILLOGREC'MM(MEMBOARD);                                 <<*1996>>03187000
       FILLOGREC'MM(MEMBOARD);                                 <<*1996>>03187500
       FILLOGREC'MM(MEMBOARD);                                 <<*1996>>03188000
       FILLOGREC'MM(MEMBOARD);                                 <<*1996>>03188500
       FILLOGREC'MM(MEMBOARD);                                 <<*1996>>03189000
       FILLOGREC'MM(MEMBOARD);                                 <<*1996>>03189500
        IF BANKNUM >= GET'CONTROLLER(1,4)                      <<*2139>>03255000
        IF TOS.(15:1)= 0 THEN PUT'CONTROLLER(1,4,"NO");        <<*2139>>03285000
     IF CPU'TYPE = 6  THEN                                     <<*2139>>03315000
       BEGIN                                                   <<*2139>>03315500
       DTIME := 600;                                           <<*2139>>03316000
       TOS := %20000000001D;                                   <<*2139>>03316500
       MCS;                                                    <<*2139>>03317000
       MEM'STAT := TOS;                                        <<*2139>>03317500
       IF MEM'STAT.(7:1) THEN                                  <<*2139>>03318000
         PUT'CONTROLLER(1, CPU'TYPE, 8)                        <<*2139>>03318500
       ELSE IF BANKNUM >= 8 THEN                               <<*2139>>03319000
         PUT'CONTROLLER(1, CPU'TYPE, 16);                      <<*2139>>03319500
       END                                                     <<*2139>>03320000
     ELSE IF CPU'TYPE >= 7  THEN                               <<*2139>>03320500
       BEGIN                                                   <<*2139>>03321000
       DTIME := 600;                                           <<*2139>>03321500
       CONTROLLER'NUM := 0;                                    <<*2139>>03322000
       MEM'SUM := 0;                                           <<*2139>>03322500
       WHILE BANKNUM > MEM'SUM DO                              <<*2139>>03323000
         BEGIN                                                 <<*2139>>03323500
         TOS := %100000 + MEM'SUM;                             <<*2139>>03324000
         IF CONTROLLER'NUM = CONTROLLER'B  OR                  <<*2139>>03324500
            CONTROLLER'NUM = CONTROLLER'D  THEN                <<*2139>>03324550
           TOS := 3                                            <<*2139>>03324600
         ELSE                                                  <<*2139>>03324700
           TOS := 1;                                           <<*2139>>03324800
         MCS;                                                  <<*2139>>03325000
         MEM'STAT := TOS;                                      <<*2139>>03325500
         PUT'CONTROLLER(CONTROLLER'NUM, CPU'TYPE, MEM'SUM);    <<*2139>>03326000
         CASE MEM'STAT.(6:2) OF                                <<*2139>>03326500
           BEGIN                                               <<*2139>>03327000
           MEM'SUM := MEM'SUM +  16;                           <<*2139>>03327500
           MEM'SUM := MEM'SUM +   8;                           <<*2139>>03328000
           MEM'SUM := MEM'SUM +  32;                           <<*2139>>03328500
           MEM'SUM := MEM'SUM + 128;                           <<*2139>>03329000
           END;                                                <<*2139>>03329500
         CONTROLLER'NUM := CONTROLLER'NUM + 1;                 <<*2139>>03330000
         END;                                                  <<*2139>>03330500
       END;                                                    <<*2139>>03335000
          CONTROLLER'NUM := 0;                                 <<*2139>>03365000
          WHILE                                                <<*2139>>03366000
              BANKNUM>= GET'CONTROLLER(CONTROLLER'NUM,CPU'TYPE)<<*2139>>03366500
              AND  CONTROLLER'NUM < NUM'CONTROLLERS  DO        <<*2139>>03367000
            BEGIN                                              <<*2139>>03368000
            UPDATE'MEMLOG(CONTROLLER'NUM);                     <<*2139>>03369000
            CONTROLLER'NUM := CONTROLLER'NUM + 1;              <<*2139>>03370000
            END;                                               <<*2139>>03375000
