@X @~
~V7 56 2 -5
~D10
~H                       MUSS
~
~
~V2 -20
~HAPPENDIX17
~V2 0
~D13
~M~OMU6G CONFIGURATION
~D12
~MUNIVERSITY OF MANCHESTER~
~V9 -1
~P
~D10
~S1~MAppendix 17   CONTENTS~
~
~
~MCONSYS71 -  System Configuration - MU6G Manchester University~
~
~NCONSYS72 -  System Configuration Version 2~
~
~NCONLIB71 -  Library Configuration~
~
~NCONLIB   -  Library Compile Jobs
~V9 -1
~P
~D10
~H                    MUSS
~

~D10
~HCONSYS        71
~D10
~MMANCHESTER UNIVERSITY  -  CONFIDENTIAL~
~
~
~V2 -16
                                                             ISSUE 11~
~V2 0
~V9 -1
~P
~V9 1
~YCONSYS71
~X%|
~S1~M~OAP7 IMPLEMENTATION DESCRIPTION~
~S1~M~OConfiguration  Version 1~
~S1~OConfiguration - MU6G Manchester University~
~S1~O1. Allocation of Segments~
~
~
Common Segment Number  System Segment Number  Use~
 128                   1                      Paged system code~
 129                   2                      Paged system data~
 130                   3                      Locked system code~
 131                   4                      Locked system data~
 132                   5                      Basic system library~
 133                   6                      First PRB segment~
 134                   7                      Second PRB segment~
 135                   8                      Message buffers~
 136                   9                      Process zero stack~
                                              segment~
 137                  10                      Initialisation code~
 138                  11                      System directory~
 139                  12                      File work segment~
 140                  13                      AUL segment~
 141                  14                      Paged system data~
                                              (initial)~
 147                  20                      MUSL~
 148                  21                      MUTL~
 149                  22                      MURD~
 150                  23                      Math functions code~
 151                  24                      Documentation code~
 152                  25                      GAL~
 157                  30                      Basic System Utilities~
 158                  31                      Compiler writer~
                                              Utilities~
 159                  32                      First Pascal segment~
 160                  33                      Scnd Pascal segment~
 161                  34                      FORTRAN~
 162                  35                      FORTRAN I/O~
  -                   36                      Bootstrap~
  -                   37                      Disc copy~
  -                   38                      Disc Format~
 163                  -                       Basic I/O~
 164                  -                       BASIC~
 165                  -                       Unix Basic I/O~
 166                  -                       MUSS 'C'~
 167                  -                       MUSS C Utilities~
 168                  -                       UNIX Shell~
~S1~O2. Allocation of Disc Space~
~S~ONote~
~
All disc addresses are in page size  units.~
~
MUSS Disc Address            Contents~
0 -  15                    Bootstrap~
16-  19                    Disc Copy Programs~
24-  27                    Disc Format~
~
~M~OV1 System~
   32 -   159                Paged system code~
  160 -   223                Locked system code~
  224 -   287                Locked system data~
  288 -   415                Basic system library~
  416 -   423                Initialisation code~
  424 -   455                System directory~
  456 -   487                Paged system data (initial)~
  488 -   551                MUSL~
  552 -   679                MUTL~
  680 -   743                MURD~
  744 -   775                Math functions code~
  776 -   839                Documentation code~
  840 -   903                Basic system utilities~
  904 -   935                Compiler writer's utiliites~
~
~
~M~OV2 System~
 1032 -  1159                Paged system code~
 1160 -  1223                Locked system code~
 1224 -  1287                Locked system data~
 1288 -  1415                Basic system library~
 1416 -  1423                Initialisation code~
 1424 -  1455                System directory~
 1456 -  1487                Paged system data (initial)~
 1488 -  1551                MUSL~
 1552 -  1679                MUTL~
 1680 -  1743                MURD~
 1744 -  1775                Math functions code~
 1776 -  1839                Documentation code~
 1840 -  1903                Basic system utilities~
 1904 -  1935                Compiler writer's utilities~
~
~M~OCommon Areas~
~
 2000 -  2127                First PRB segment~
 2128 -  2255                Second PRB segment~
 2256 -  2383                Message buffers~
 2384 -  2511                Process zero stack segment~
 2512 -  2543                Paged system data~
 2544 -  2671                File work segment~
 2672 -  2799                AUL segment~
~
Compilers Version 1~
~
 3000 -  3031                GAL~
 3048 -  3175                Pascal~
 3176 -  3303                Pascal I/O~
 3304 -  3431                FORTRAN~
 3432 -  3463                FORTRAN I/O~
~
Compilers Version 2~
~
3500 -  3531            GAL~
3548 -  3675            Pascal~
3676 -  3803            Pascal I/O~
3804 -  3931            Fortran~
3932 -  3963            Fortran I/O~
~
~T$ 30
~S1~O3. Core Layout after Bootstrapping~
~
~
Core Address                Contents~
%0$Monitor~
%4000$Locked system code~
%C000$Locked system data~
%1C000$PZ PRB~
%1E000 - %20000$Paged data~
%20000 - %21000$Initialisation code~
~S1~O4. Compile Jobs
~S1~O4.1 System Compile (MU6G)~
~
~OFiles produced~
~
List of file names ( "?" represents version number)~
MU6G01? MU6G02? MU6G03? MU6G04?~
MU6G05? MU6G06?~
SYSDIR7?~
~
::BEGIN COMPSYS\?~
DO 0 SYS\?LOG %200 %40000~
LIB MTLX\~
LIB MSLX~
LIB L2X\~
OPENDIR MUSMS~
FLIP MU6S:CONSYS71 1~
CONSYS~
**DI 4 0~
MUSL %0 BSYS\? %60F~
*INFORM %2400;~
*TLSEG 0 %10000 %2000000 %F(8) %0;~
*TLSEG 1 %A000 %2080000 %F(8) 0;~
*TLSEG 2 %1000 %0 %F(7)D 0;~
*TLSEG 3 %10000 %20C0000 %F(8) 0;~
*TLSEG 4 %4000 %2040000 %F(8) 0;~
*TLSEG 5 %2000 %28000 %F(8) 0;~
*TLSEG 6 %10000 %2100804 %F(8) 0;~
*TLSEG 7 %7000 %20D1000 %F(7)D 0;~
*TLLOAD 1 2; ::SYSINT CODE~
*TLLOAD 0 4; ::SYSTSK CODE~
*TLLOAD 3 5; ::LOCKED DATA~
*TLLOAD 3 6; ::LOCKED AT THE MOMENT DATA~
*TLLOAD 4 12; :: DEFINITELY PAGED DATA~
*TLLOAD 5 7; ::INITIALISATION CODE~
*TLLOAD 1 11; ::COMMON INT/CMD LEVEL CODE~
*TLLOAD 0 15; ::COMMON COMMAND LEVEL PROCEDURES~
*TLLOAD 0 16; ::VIRTUAL STORE COMMANDS~
*TLLOAD 0 17; ::MESSAGE COMMANDS~
*TLLOAD 0 18; ::I/O AND CONFIGURATION COMMANDS~
*TLLOAD 0 19; ::PROCESS COMMANDS~
*TLLOAD 0 20; ::FILE COMMANDS~
*TLLOAD 0 21; ::MISCELLANEOUS COMMANDS~
*TLLOAD 2 22; ::PW0 ETC~
*TLLOAD 1 23; :: I/O APPENDIX~
*TLLOAD 6 27; :: LIB DATAVEC~
*TLLOAD 0 26; ::DRUM MANAGER COMMANDS~
*TLLOAD 4 28; :: FILE DATA~
*TLLOAD 3 24; :: I/O BUFFERS~
*TLLOAD 0 25; :: ED COMMANDS
*TLLOAD 3 29; :: I/O VARS~
*TLLOAD 7 30; :: DRUM DATA~
**SELECTINPUT 4~
FLIP MU6S:AP7011 1~
AP701~
**DI 4 0~
MUSL %0 %0 %E00~
**SELECTINPUT 4~
FLIP MU6S:AP7021 1~
AP702~
**DI 4 0~
MUSL %0 %0 %E00~
**SELECTINPUT 4~
FLIP MU6S:AP1031 1~
AP103~
**DI 4 0~
MUSL %0 %0 %E00~
**SELECTINPUT 4~
FLIP MU6S:AP7041 1~
AP704.DZ11~
**DI 4 0~
MUSL %0 %0 %E00~
**SELECTINPUT 4~
FLIP MU6S:AP7051 1~
AP705~
**DI 4 0~
MUSL %0 %0 %E00~
**SELECTINPUT 4~
FLIP MU6S:AP7061 1~
AP706~
**DI 4 0~
MUSL %0 %0 %E00~
**SELECTINPUT 4~
FLIP MU6S:AP7111 1~
AP711.CONS~
**DI 4 0~
MUSL %0 %0 %E00~
**SELECTINPUT 4~
FLIP MU6S:SYS011 1~
SYS01~
**DI 4 0~
MUSL %0 %0 %E00~
**SELECTINPUT 4~
FLIP MU6S:SYS021 1~
SYS02~
**DI 4 0~
MUSL %0 %0 %E00~
**SELECTINPUT 4~
FLIP MU6S:SYS034 1~
SYS03~
**DI 4 0~
MUSL %0 %0 %E00~
**SELECTINPUT 4~
DEL~
MUSL %0 %0 %E00~
MODULE SYS05 (TINI.ESM);~
PSPEC TINI.ESM (INTEGER);~
PROC TINI.ESM (PROC.SPN);~
END~
*END~
FLIP MU6S:SYS061 1~
SYS06~
**DI 4 0~
MUSL %0 %0 %E00~
**SELECTINPUT 4~
FLIP MU6S:SYS081 1~
SYS08~
**DI 4 0~
MUSL %0 %0 %E00~
**SELECTINPUT 4~
DEL~
MUSL %0 %0 %E00~
MODULE SYS09 (TINI.GRS);~
*CODE 19;~
PSPEC TINI.GRS (INTEGER);~
PROC TINI.GRS (PROC.SPN);~
END~
*END~
FLIP MU6S:SYS101 1~
SYS10~
**DI 4 0~
MUSL %0 %0 %E00~
**SELECTINPUT 4~
FLIP MU6S:SYS111 1~
SYS11~
**DI 4 0~
MUSL %0 %0 %E00~
**SELECTINPUT 4~
FLIP MU6S:SYS121 1~
SYS12~
**DI 4 0~
MUSL %0 %0 %E00~
**SELECTINPUT 4~
FLIP MU6S:SYS141 1~
SYS14~
**DI 4 0~
MUSL %0 %0 %E00~
**SELECTINPUT 4~
FLIP MU6S:SYS151 1~
SYS15~
**DI 4 0~
MUSL %0 %0 %E00~
**TLMODE %101~
**SELECTINPUT 4~
**TLMODE %100~
FLIP MU6S:SYS163 1~
SYS16~
**DI 4 0~
MUSL %0 %0 %E00~
**TLMODE %101~
**SELECTINPUT 4~
**TLMODE %100~
FLIP MU6S:SYS172 1~
SYS17~
**DI 4 0~
MUSL %0 %0 %E00~
**TLMODE %101~
**SELECTINPUT 4~
**TLMODE %100~
FLIP MU6S:SYS181 1~
SYS18~
**DI 4 0~
MUSL %0 %0 %E00~
**SELECTINPUT 4~
FLIP MU6S:SYS193 1~
SYS19~
**DI 4 0~
MUSL %0 %0 %E00~
**TLMODE %101~
**SELECTINPUT 4~
**TLMODE %100~
FLIP MU6S:SYS131 1~
SYS13~
**DI 4 0~
MUSL %0 %0 %E00~
**TLMODE %101~
**SELECTINPUT 4~
**TLMODE %100~
FLIP MU6S:SYS073 1~
SYS07~
SAVE SUBMOD1~
FLIP MU6S:SYS074 1~
SYS07~
SAVE SUBMOD2~
FLIP MU6S:SYS075 1~
SYS07~
SAVE SUBMOD3~
ED MU6S:SYS072~
S[TITLE SYS07[~
D[::SUB1 [~
D[::SUB2 [~
D[::SUB3 [~
C[TITLE SYS07/4[~
(4D[::SUB1 [)~
(4D[::SUB2 [)~
(2D[::SUB3 [)~
(2D[::SUB1 [)~
(2D[::SUB2 [)~
(2D[::SUB1 [)~
(2D[::SUB2 [)~
(2D[::SUB3 [)~
E~
FLIP 0 1~
SYS07~
**DI 4 0~
MUSL %0 %0 %E00~
**TLMODE %101~
**SELECTINPUT 4~
DEL SUBMOD1~
DEL SUBMOD2~
DEL SUBMOD3~
FLIP MU6S:SYS201 1~
SYS20~
**DI 4 0~
MUSL %0 %0 %E00~
**SELECTINPUT 4~
FLIP MU6S:SYS211 1~
SYS21~
**DI 4 0~
MUSL %0 %0 %E00~
**SELECTINPUT 4~
FLIP MU6S:SYS221 1~
SYS22~
**DI 4 0~
MUSL %0 %0 %E00~
**SELECTINPUT 4~
FLIP MU6S:SYS231 1~
SYS23~
**DI 4 0~
MUSL %0 %0 %E00~
**SELECTINPUT 4~
FLIP MU6S:AP7991 1~
AP799~
**DI 4 0~
MUSL %0 %0 %A00~
**SELECTINPUT 4~
ENDINPUT 4~
CF BSYS\? DIR1\?~
DEL BSYS\?~
STOP~
::END COMPSYS\?~
~S1~O4.2 MU6G Monitor Compile~
~
~
::BEGIN MU6G MONITOR
DO 0 MON7LOG %200~
LIB MTLX7~
LIB MSLX~
LIB L2X7~
MUSL %0 BMON\? %60B~
*INFORM %2400;~
**TLSEG 0 %2000 %0 -1 0~
**TLSEG 1 %1000 %10000 -1 0~
**TLSEG 2 %0 %2000 -3 0~
**TLSEG 4 %0 %10000 -3 0~
**TLSEG 6 %2000 %10000 -1 0~
**TLSEG 7 %2000 %10000 -1 0~
*TLLOAD 1 2;~
*TLLOAD 2 3;~
*TLLOAD 4 5;~
*TLLOAD 6 6;~
*TLLOAD 7 7;~
*TLLOAD 2 20;~
PSPEC MONITOR (INTEGER);~
MODULE (NO.V1.SEGS, NO.V2.SEGS, SYS14.PAGE.SHIFT,~
   SYS14.PAGE.SIZE, OLAY.ADDR, SYS.SIZE, MUSS.ROM.START,~
   V1.DISC.ADDR, V1.CORE.ADDR, V1.TRAN.SIZE,~
   V2.DISC.ADDR, V2.CORE.ADDR, V2.TRAN.SIZE,~
   BAD.BLOCK.TABLE, BAD.BLOCK.TABLE.SIZE, BAD.BLOCK.CORE.ADDR);~
LITERAL NO.V1.SEGS = 6, NO.V2.SEGS = 6, SYS14.PAGE.SHIFT = 11,~
   SYS14.PAGE.SIZE = 2048, SYS.SIZE = 256;~
LITERAL / ADDR MUSS.ROM.START = %0000, OLAY.ADDR = %10000;~
LITERAL / INTEGER32 BAD.BLOCK.TABLE = 999552;~
LITERAL / INTEGER BAD.BLOCK.TABLE.SIZE = 152;~
LITERAL / INTEGER32 BAD.BLOCK.CORE.ADDR = %30000;~
*CODE 1;~
*#%6500 %0003; ::BM3 = 3;~
*#%7C31; ::BM3 <<- 15;~
*#%C653; ::SF = BM3;~
MONITOR (0);~
*GLOBAL 1;~
DATAVEC V1.DISC.ADDR (ADDR)~
   160 168 416 224 229 456~
END~
DATAVEC V1.TRAN.SIZE (LOGICAL)~
   8 11 4 5 27 4~
END~
DATAVEC V1.CORE.ADDR (ADDR)~
   %4000 %8000 %28000 %D800 %10000 %26000~
END~
DATAVEC V2.DISC.ADDR (ADDR)~
   1160 1168 1416 1224 1229 1456~
END~
DATAVEC V2.TRAN.SIZE (LOGICAL)~
   8 11 4 5 27 4~
END~
DATAVEC V2.CORE.ADDR (ADDR)~
   %4000 %8000 %28000 %D800 %10000 %26000~
END~
*END~
FLIP MU6S:AP7501 1~
AP750~
DI 4~
MUSL %0 %0 %E0B~
**SI 4~
EI 4~
DEL~
MUSL %0 %0 %E0B~
MODULE (SUPP.MENU, SUPPT.SIZE, OPTION.ADDRS, SUPP.OPTIONS);~
*GLOBAL 1;~
LITERAL / LOGICAL8 LF = 10;~
DATAVEC SUPP.MENU (LOGICAL8)~
   "8) Copy Disc." LF~
   "9) Format CDC Disc." LF~
END~
LITERAL SUPPT.SIZE = 34;~
DATAVEC OPTION.ADDRS (INTEGER)~
   128 192~
END~
LITERAL SUPP.OPTIONS = 2~
*END~
FLIP MU6S:AP7511 1~
AP751~
DI 4~
MUSL %0 %0 %E0B~
*INFORM %2400;~
**SI 4~
EI 4~
DEL~
FLIP MU6S:SYS501 1~
SYS50~
DI 4~
MUSL %0 %0 %E0B~
*INFORM %2400;~
**SI 4~
EI 4~
DEL~
FLIP MU6S:SYS513 1~
SYS51~
DI 4~
MUSL %0 %0 %E0B~
*INFORM %2400;~
LITERAL / ADDR BUFF.ADDR = %20000, BUFF.ADDR2 = BUFF.ADDR + %4000,~
   TABLE.BUFF1 = %18000, TABLE.BUFF2 = %18800;~
**SI 4~
EI 4~
DEL~
MUSL %0 %0 %A0B~
MODULE (SERVICE.ROUTINE);~
*CODE 2;~
PSPEC SERVICE.ROUTINE ();~
PROC SERVICE.ROUTINE;~
END~
*END~
DEL BMON71~
STOP~
::END MU6G MONITOR~
~Y
~P
~V9 -1
~D15
~V2 -16
~HFLOWCHARTS
~V2 0
~
~
~H        CONSYS71
~V9 -1
~F
@TITLE CONSYS(71,11)
@COL 1S-2R-3R-4R-5R-6F
@FLOW 1-2-3-4-5-6
@BOX 1.0
CONFIGURATION MODULE
@BOX 3.0
SPECIFICATION OF CONFIGURATION PARAMETERS
FOR MU6G
@BOX 5.0
@BOX 6.0
END
@BOX 1.1
#CONSYS/1
#CONSYS/2
@BOX 2.1
TYPE INIT.PRB.TYPE IS
LOGICAL [50] REGISTER.DUMP
SYS14.SEG.VARS SEG.VARS;
@BOX 3.1
*GLOBAL 22;
INTEGER PW0, PW1, PW2, PW3, PW4, PW5, PW6;
LOGICAL64 PWW1, PWW2, PWW3, PWW4;
@BOX 4.1
::GENERAL PARAMETERS
*GLOBAL 5;
LITERAL / INTEGER BYTES.PER.WORD = 4, BITS.PER.WORD = 32, STORE.SIZE = 2097152;
LITERAL / INTEGER RESERVED.STACK.BOTTOM = %800;
LITERAL / INTEGER SHORT.MESSAGE.LENGTH = 128;
LITERAL / INTEGER REAL.STORE.SEGMENT = %FE - 8;
LITERAL / ADDR REAL.STORE.ADDR = REAL.STORE.SEGMENT * %40000,
   REAL.STORE.ADDRESS = 0;
@BOX 5.1
INTEGER VERSION.NO, DEBUG; :: ACCESSED BY THE BOOTSTRAP
DATAVEC INTERRUPT.STACKS (LOGICAL8)
   0 [%4200]
END
DATAVEC FIXED.ADDRESSES (INTEGER)
   0 [22]
END
DATAVEC COMMS.BUFFERS (LOGICAL8)
   0 [%A0]
END
::MESSAGE AND I/O BUFFERS
::MUST BEGIN ON 128-BYTE BOUNDARIES
LOGICAL8 [SHORT.MESSAGE.LENGTH] REC.MESSAGE;
LOGICAL8 [SHORT.MESSAGE.LENGTH] TRANS.MESSAGE;
DATAVEC IO.BUFFERS (LOGICAL8)
   0 [%2000]
END
*CODE 7;
*GLOBAL 5;
#CONSYS.APP
#CONSYS.SYS01
#CONSYS.SYS02
#CONSYS.SYS03
#CONSYS.SYS05
#CONSYS.SYS06
#CONSYS.SYS10
#CONSYS.SYS11
#CONSYS.SYS12
#CONSYS.SYS13
#CONSYS.SYS14
#CONSYS.SYS15
#CONSYS.SYS16
#CONSYS.SYS17
#CONSYS.SYS18
*GLOBAL 12;
#CONSYS.SYS19
*GLOBAL 5;
#CONSYS.SYS20
#CONSYS.SYS21
#CONSYS.SYS23
@BOX 6.1
*END
@END



@TITLE CONSYS/1(71,11)
@COL 1S-2R-3R-4R
@FLOW 1-2-3-4
@BOX 1.0
OTHER MODULES REFERENCED
@BOX 4.0
SYS03 DRUM MANAGER
SYS06 PROCESS SCHEDULER
SYS07 I/O MANAGEMENT
SYS08 REAL TIME CLOCK
SYS13 PROCESS MANAGEMENT
SYS14 VIRTUAL STORE MANAGEMENT
SYS16 FILE SYSTEM
SYS20 PROCESS ZERO
SUP01 JOB SUPERVISOR
SUP02 FILE MANAGER
@BOX 1.1
::EXTERNAL ENVIRONMENT
@BOX 3.1
PSPEC EMPTY.ACTIVITY ();
PSPEC SET.BIT (ADDR [LOGICAL8], INTEGER);
PSPEC CONS.I.CONTROL (INTEGER, INTEGER, ADDR, LOGICAL, LOGICAL32) / LOGICAL32;
PSPEC CONS.O.CONTROL (INTEGER, INTEGER, ADDR, LOGICAL, LOGICAL32) / LOGICAL32;
PSPEC DZ11.I.CONTROL (INTEGER, INTEGER, ADDR, LOGICAL, LOGICAL32) / LOGICAL32;
PSPEC DZ11.O.CONTROL (INTEGER, INTEGER, ADDR, LOGICAL, LOGICAL32) / LOGICAL32;
PSPEC REMOTE.DEV.CONTROL (INTEGER, INTEGER, ADDR, LOGICAL, LOGICAL32) / LOGICAL3
2;
PSPEC DZ11.POLL ();
PSPEC ED.POLL ();
PSPEC IO.RECEIVE () / LOGICAL32;
PSPEC IO.RESET ();
PSPEC IO.INFORM ();
@BOX 4.1
ADDR [LOGICAL8] SYS02.IN.USE;
PSPEC SYS03.DRUM.INTERRUPT ();
PSPEC SYS03.DRUM.TASK ();
PSPEC SYS03.INITIALISE.DRUM.SEGMENT (INTEGER, LOGICAL32, INTEGER, INTEGER);
PSPEC SYS05.ED.INTERRUPT ();
PSPEC SYS05.ESM.TASK ();
PSPEC SYS06.PROCESS.SCHEDULER ();
PSPEC SYS07.IO.INTERRUPT ();
PSPEC SYS07.IO.TASK ();
PSPEC SYS08.CLOCK.INTERRUPT ();
PSPEC SYS13.PROCESS.ACTIVITY ();
PSPEC SYS13.INT.GET.PRB (INTEGER) / ADDR;
PSPEC SYS13.TERM.PROC.TASK ();
PSPEC SYS13.INIT.SUP.TASK ();
TYPE SYS14.CMT.TYPE IS
   LOGICAL16 SSN,BLOCK
OR
   LOGICAL32 ENTRY
;
TYPE SYS14.LST.TYPE IS
   LOGICAL8 ACCESS, SSN
OR
   LOGICAL16 LST.ENTRY;
TYPE SYS14.SST.TYPE IS
   INTEGER LIMIT
   LOGICAL8 STATUS, COUNT
OR
   INTEGER SST.LINK;
TYPE SYS14.SEG.VARS IS
   SYS14.LST.TYPE [64] XST
   SYS14.LST.TYPE [128] LST
   INTEGER PROCESS.NUMBER, SEG.NO1, BLK1, SEG.NO2, BLK2;
LITERAL / INTEGER CF.NO.OF.SYS.SEGS = 256, CF.NO.OF.COMMON.SEGS = 128;
SYS14.SST.TYPE [CF.NO.OF.SYS.SEGS] SYS14.SST;
SYS14.LST.TYPE [CF.NO.OF.COMMON.SEGS] SYS14.CST;
SYS14.CMT.TYPE [1024] SYS14.CMT;
PSPEC SYS14.CORE.REJECT ();
PSPEC SYS16.FILE.TASK ();
PSPEC SYS16.INIT.FILE.TASK ();
PSPEC SYS17.INIT.ACCOUNTS.TASK ();
PSPEC SYS19.INIT.DEV.TASK ();
PSPEC SYS20.SET.TASK (INTEGER, INTEGER);
PSPEC SYS20.TASK.LOOP ();
PSPEC JOB ();
PSPEC FILMAN ();
PSPEC FILMAN10 ();
PSPEC SET.UP ();
@END
@TITLE CONSYS/2(71,11)

@COL 1S
@BOX 1.0
EXPORT LIST
@BOX 1.1
MODULE (PW0, PW1, PW2, PW3, PW4, PW5, PW6, PWW1, PWW2, PWW3, PWW4, V.PAR,
   BYTES.PER.WORD, BITS.PER.WORD, STORE.SIZE, RESERVED.STACK.BOTTOM, NO.OF.COMMA
NDS,
   DEBUG, NO.OF.DZ11S, NO.OF.DZ11.CHANNELS, NO.OF.DZ11.REGS,
   NO.OF.DZ11.DEVICES, OVERRUN.SIZE, DZ11.OVERRUN.AREA.SIZE,
   I.CH.TABLE, O.CH.TABLE, WRITE.PROCS, POLL.PROC, POLL.PROCS,
   ACTIVITY.LINK, INITIAL.KERNEL.STACK, SYS01.INT.ACTIVITIES, INT.ACTIVITIES, CH
ECKPOINT.HALT, NO.OF.ACTIVITIES,
   NO.OF.HALTS, SYS01.NO.OF.ACTIVITIES, SYS01.NO.OF.INT.ACTIVITIES, SYS01.CORE.H
ALT, SYS01.DTQ.HALT,
   SYS01.PAGING.HALT, SYS01.TASK.HALT, SYS01.PAGING.ACTIVITY, SYS01.DRUM.ACTIVIT
Y, SYS01.DISC.ACTIVITY,
   SYS01.PROC.SCHEDULER.ACTIVITY, SYS01.IO.ACTIVITY, SYS01.CLOCK.ACTIVITY, SYS01
.PZ.ACTIVITY,
   AP.ACTIVITY.MASK, SYS.ACTIVITY.MASK, AP.DZ11.ACTIVITY,
   NO.OF.PAGES.BIT.VEC.SIZE, SYS02.NO.OF.PAGES.BIT.VEC.SIZE, SYS02.CORE.PAGE.SIZ
E,
   SYS02.NO.OF.PAGES, NO.OF.PAGES, ALLOCATED.CORE, IN.USE,
   PAGED.DATA.SEG, PAGED.DATA.MAPPED.SEG,
   DRUM.ALLOCATIONS, FREE.BLOCKS, FREE.SUB.TABLES, NO.OF.DRUM.SECTIONS,
   DRUM.SECTION.SIZE, DRUM.SECTION.AVAILABLE,
   DRUM.SIZES, DRUM.BLOCK.SIZE, MAX.SEG.SIZE, SUB.TABLE.SIZE, DRUM.BLOCK.SIZE.BI
T.VEC.SIZE,
   CORE.TABLE.AREA.RA, CORE.TABLE.AREA.VA, BLOCK.AREA.ADDR, TABLE.AREA.ADDR,
   SECTOR.BUFF.VA, SECTOR.BUFF.RA, CLEAR.PAGE.ADDR, SECTOR.SIZE, BLOCK.TABLE.ENT
RY.SIZE,
   NO.OF.BAD.BLOCKS, BAD.BLOCK.TABLE.ADDR, BAD.BLOCK.DATA.ADDR,
   UNIT.PRESENT, NO.OF.UNITS, NO.OF.MT.UNITS, SYS05.NO.OF.MT.UNITS, FIRST.MT.UNI
T,
   NO.OF.ED.UNITS, FIRST.ED.UNIT, ED.BLOCK, NO.OF.MT.BLOCKS,
   INTERACTIVE.TS, BATCH.TS, BATCH.NO, CMD.SUS, TERM.SUS,
   SYS06.TERM.SUS, SYS06.KILL.SUS, MESSAGE.SUS, SYS06.MESSAGE.SUS, SYS06.IO.SUS,
   WORKSPACE,
   INITIAL.TIMER, SYS11.INITIAL.TIMER, ABORT.CPU,
   DEFAULT.CPU, TRAPPING.CPU, CPU.RUNOUT,
   ILLEGAL.ORDER,
   NO.OF.SUPS, SUP.NAME, SUP.START, PRIVI.UID, PRBS.PER.SEG, PRB.SIZE, PRB.SEG,
   PZ.PRB.RA, PRB.MAPPED.SEG, CPRB.MAPPED.SEG, NO.OF.PROCS, SYS13.NO.OF.PROCS, S
TART.PROC,
   SEG.SIZE, SEG.SHIFT, X.SEG.SIZE, PAGE.SIZE, PAGE.SHIFT, PROTECTED, NO.OF.INIT
IAL.SEGS,
   NO.OF.LOCAL.SEGS, NO.OF.COMMON.SEGS, NO.OF.SYS.SEGS,  NO.OF.X.SEGS, X.SEG,
   FIRST.COMMON.SEG, FIRST.X.SEG, CLEAR.PAGE.SEG, LOCKED.SIZE, LOCKIN,
   LOCKOUT, ALTERED, REFERENCED, ACCESS.FIELD, REAL.STORE.ADDRESS,
   PROC.FIELD, SEG.FIELD, BLK.FIELD, PROC.FIELD.SHIFT, SEG.FIELD.SHIFT, BLK.FIEL
D.SHIFT, ACCESS.FIELD.SHIFT,
   SYS14.NO.OF.COMMON.SEGS,  SYS14.PAGE.SHIFT, SYS14.NO.OF.SYS.SEGS,
    SYS14.NO.OF.LOCAL.SEGS, SYS14.NO.OF.X.SEGS,  REAL.STORE.SEGMENT,
   SYS14.IO.BUF.SEG, SYS14.IO.BUF.SEG.2, SYS14.SEG.SHIFT, SYS14.SEG.SIZE, SYS14.
FIRST.COMMON.SEG, SYS14.FIRST.X.SEG,
   X.SEG, SYS14.ON.DRUM, SYS14.X.SEG, SYS14.X.SEG.SIZE, SYS14.PAGE.SIZE,
   NO.OF.BUFFERS, NO.OF.BUFFERS.BIT.VEC.SIZE, MBUFS.PER.SEG,
   MBUF.SEG, MBUF.MAPPED.SEG, RESPONSE.TIME,
   NO.OF.DIRS, SYS.MB.FILLER.SIZE, SYS.MB.START.ADDR, USER.MB.START.ADDR,
   MAX.PERMITTED.USERS, BLOCK.SIZE, MAPPED.UMB.TABLE.SIZE,
   NO.OF.REMOTE.DIRS, NO.OF.SYS.REMOTE.DIRS, DIR.ENTRY.SIZE, USER.MB.ENTRY.SIZE,
   FILE.MAPPED.SEG, FILE.SEG, PERMIT.MAPPED.SEG,
   CATALOGUE.MAPPED.SEG,
   NO.OF.RESOURCES, NO.OF.USER.PARAMS, NO.OF.CONSUMABLES, NO.OF.REUSABLES, NO.OF
.USERS, CPU.TIME, SYS17.NO.OF.RESOURCES,
   SYS17.NO.OF.USER.PARAMS, SYS17.NO.OF.CONSUMABLES, SYS17.NO.OF.REUSABLES, SYS1
7.CPU.TIME, SYS17.FILE.STORE,
   SYS17.NO.OF.FILES, DAILY.LIMIT, ACCS.MAPPED.SEG, AUL.CORE.SEG, AUL.CORE.BLK,
AUL.BLK.SIZE, AUL.DRUM.SITE.1,
   AUL.DRUM.SITE.2, AUL.MAPPED.SEG, AUL.FILLER.SIZE, AUL.INT.MAPPED.SEG, PRIVI.U
SER.NAMES, PRIVI.USER.PASSWDS,
   PRIVI.USER.SUPERS, PRIVI.SYS.UPS, PRIVI.SYS.UPS.SIZE, SUBORDS, NO.OF.DEFAULT.
USERS, MAX.BALANCE, AUL.UPDATE.PERIOD,
   NO.OF.MCS, MC.CHANNEL, MC.NAME,
   NO.OF.SUP.PROCS, SUP.PROC.NAME, SUP.MC.NAME, SUP.SPN, SUP.PID, SUP.CH,

   PERI.BUFF.VA, PERI.BUFF.RA, PERI.BUFF.SIZE, SYS19.NO.OF.P.DEV.TYPES,
   NO.OF.P.DEV.TYPES, NO.OF.DEVICE.CLASSES, DEVICES.PER.P.DEV.TYPE,
   SYS19.MAX.DATA.TRANSFER, SYS19.PERI.BUFF.SIZE, NO.OF.PRESET.DEVICES,
   SYS19.NO.OF.COMMS.DEVICES, COMMS.BUFFER.VA, COMMS.BUFFER.RA,
   NO.OF.DEVICES, SYS19.NO.OF.DEVICES, CONFIG.TABLE, CONFIG.SIZE, NO.OF.PERI.PRO
CS,
   SYS19.TALK.IN.DEVICE.CLASS, SYS19.TALK.OUT.DEVICE.CLASS,
   SYS19.NO.OF.GROUPS, NO.OF.PERI.CHANNELS, NO.OF.PERI.REROUTES, PERI.NAME,
   PERI.SPN, SYS19.NO.OF.PERI.CHANNELS, SYS19.OPR.IN.DEV.NO,
   IO.BUF.SEG, IO.BUF.BLK, IO.MSEG, SYS20.DRUM.TASK, SYS20.IO.TASK, SYS20.SET.UP
.TASK,
   SYS20.INIT.ACCOUNTS.TASK, SYS20.TERM.PROC.TASK, SYS20.INIT.SUP.TASK, SYS20.FI
LE.TASK,
   SYS20.INIT.DEV.TASK, SYS20.INIT.FILE.TASK, NO.OF.TASKS, TASK.PROC, TASK.PROCS
,
   INITIAL.DATA.SEG, INITIAL.DATA.MAPPED.SEG, NO.OF.INITIAL.DATA.SEGS,
   DRUM.ADDRS1, DRUM.ADDRS2, LIMITS, VERSION.NO,
   NO.OF.OP.PARAMS,
   SYS19.MAX.REMOTE.P.DEV.NO, SYS19.PDP.IO.ADDR, SYS19.NO.OF.RECEIVE.ADDRS,
   RECEIVE.PROCS, RESET.PROCS, INFORM.PROCS,
   CIU.SHIFT.VAL, CIU.CONTROL.REG, CIU.RX.REG, CIU.TR.REG,
   CIU.NO.WORDS.REG, AP.CIU.ACTIVITY,
   SHORT.MESSAGE.LENGTH, REC.MESSAGE, TRANS.MESSAGE,
   REC.MESSAGE.RA, TRANS.MESSAGE.RA, MAINLIB.DIR.SEG, NO.OF.STATS);
@END

@TITLE CONSYS.APP(71,11)

@COL 1S-2R-3R

@FLOW 1-2-3

@BOX 1.0
APPENDIX CONFIGURATION
@BOX 2.0
APPENDIX DECLARATIONS
@BOX 3.0
INITIALISATION CODE
@BOX 1.1
:: APPENDIX CONFIGURATION
@BOX 2.1
::INITIALISE MEMORY MANAGEMENT
#CONSYS.APP/1
LITERAL / INTEGER NO.OF.PROCS = 128;
LITERAL / INTEGER SYS13.NO.OF.PROCS = NO.OF.PROCS;
LITERAL / INTEGER NO.OF.COMMANDS = 80;
DATAVEC I.CH.TABLE (LOGICAL8)
   4 [2]   %C      %46   4 [4]   %24     4       5       4        5
   %15     4 [3]   %84   4       %84     4 [107] %24     4 [128]
END
DATAVEC O.CH.TABLE (LOGICAL8)
   0 [10]   %28  0   %40   0 [243]
END
PSPEC WRITE.PROC (INTEGER, INTEGER, ADDR, LOGICAL, LOGICAL32) / LOGICAL32;
PSPEC DUMMY.WRITE.PROC = WRITE.PROC;
DATAVEC WRITE.PROCS (ADDR WRITE.PROC)
   DUMMY.WRITE.PROC
   CONS.I.CONTROL
   CONS.O.CONTROL
   DZ11.I.CONTROL
   DZ11.O.CONTROL
   REMOTE.DEV.CONTROL
END
*CODE 2;
PSPEC POLL.PROC ();
PROC POLL.PROC;
END
DATAVEC POLL.PROCS (ADDR POLL.PROC);
   POLL.PROC
   POLL.PROC
   POLL.PROC
   DZ11.POLL
   POLL.PROC
   POLL.PROC
END
LITERAL / INTEGER NO.OF.DZ11S = 2;
LITERAL / INTEGER NO.OF.DZ11.CHANNELS = NO.OF.DZ11S * 8,
   NO.OF.DZ11.REGS = NO.OF.DZ11S * 4,
   NO.OF.DZ11.DEVICES = NO.OF.DZ11S * 16;
LITERAL / INTEGER OVERRUN.SIZE = 32,
   DZ11.OVERRUN.AREA.SIZE = OVERRUN.SIZE * NO.OF.DZ11.CHANNELS;
::CONFIGURE CIU
   #CONSYS.APP/3
@BOX 3.1
*CODE 7;
INTEGER NEW.STACK;
%10600040 => NEW.STACK;
*#%C798 %0000; :: LDA3 0/BA6
@END

@TITLE CONSYS.APP/1(71,11)

@COL 1S-2R-3R

@FLOW 1-2-3

@BOX 1.0
MEMORY MANAGEMENT INITIALISATION
@BOX 2.0
APP CONFIGURATION
@BOX 3.0
INITIALISATION OF MMU
@BOX 1.1
::INITIALISATION OF MEMORY MANAGEMENT
@BOX 2.1
VSTORE V.MACOP %80C;
VSTORE V.PURGE.CPRS %8EC;
VSTORE V.PURGE.CACHE %8F4;
VSTORE V.RESET.PARS %8FC;
VSTORE V.PROC.NO %804;
VSTORE V.PAR [1024] %8004;
PSPEC INIT.MMU ();
INIT.MMU ();
PROC INIT.MMU;
INTEGER J, K, PAR.ENTRY;
DATAVEC PAR.SEG (LOGICAL8)
   %82
   %83
   %85
   %81
   %F6
END
DATAVEC PAR.ACC (LOGICAL8)
   %50
   %60
   %60
   %60
   %60
END
DATAVEC PAR.SIZE (INTEGER)
   19
   48
   1
   4
   256
END
DATAVEC PAR.INDEX (INTEGER)
   8
   27
   75
   76
   96
END
DATAVEC PAR.PAGE (INTEGER)
   0 [4]
   %C000
END
@BOX 3.1
-1 => V.PURGE.CPRS;
-1 => V.PURGE.CACHE;
-1 => V.RESET.PARS;
128 => V.PROC.NO;
%80000070 => PAR.ENTRY; ::PROCESS 128
::MAP REAL TO VIRTUAL
FOR J < 512 DO
   PAR.ENTRY => V.PAR [J];
   %200 +> PAR.ENTRY;
OD
0 => V.MACOP;
FOR K < 5 DO
   PAR.SEG [K] <<- 16 ! PAR.ACC [K] + PAR.PAGE [K] => PAR.ENTRY;
   FOR J < PAR.SIZE [K] DO
      PAR.ENTRY => V.PAR [PAR.INDEX [K] + J];
      %200 +> PAR.ENTRY;
   OD
OD
END
@END

@TITLE CONSYS.APP/3(71,11)
@COL 1S-2R
@FLOW 1-2
@BOX 1.0
CIU CONFIGURATION
@BOX 2.0
CIU PARAMETERS
@BOX 1.1
::CIU CONFIGURATION
@BOX 2.1
LITERAL / INTEGER CIU.SHIFT.VAL = 7;
::RA'S OF BUFFERS DECLARED IN CONSYS
LITERAL / ADDR REC.MESSAGE.RA = %11B00, TRANS.MESSAGE.RA = %11B80;
VSTORE CIU.CONTROL.REG %58004;
VSTORE CIU.RX.REG %5802C;
VSTORE CIU.TR.REG %58024;
VSTORE CIU.NO.WORDS.REG %58014;
PSPEC DUMMY.RECEIVE.PROC () / LOGICAL32;
DATAVEC RECEIVE.PROCS (ADDR DUMMY.RECEIVE.PROC)
   DUMMY.RECEIVE.PROC
   IO.RECEIVE
END
PSPEC DUMMY.RESET.PROC ();
DATAVEC RESET.PROCS (ADDR DUMMY.RESET.PROC)
   DUMMY.RESET.PROC
   IO.RESET
END
PSPEC DUMMY.INFORM.PROC ();
DATAVEC INFORM.PROCS (ADDR DUMMY.INFORM.PROC)
   DUMMY.INFORM.PROC
   IO.INFORM
END
*CODE 2;
PROC DUMMY.RECEIVE.PROC;
END
PROC DUMMY.RESET.PROC;
END
PROC DUMMY.INFORM.PROC;
END
@END



@TITLE CONSYS.SYS01(71,11)

@COL 1S-2R
@FLOW 1-2
@BOX 1.0
SYS01 CONFIGURATION
@BOX 2.0
SYS01 PARAMETERS
@BOX 1.1
::SYS01 CONFIGURATION
@BOX 2.1
LITERAL / INTEGER NO.OF.ACTIVITIES = 32, NO.OF.INT.ACTIVITIES = 16, NO.OF.HALTS
= 7,
   SYS01.NO.OF.ACTIVITIES = NO.OF.ACTIVITIES, SYS01.NO.OF.INT.ACTIVITIES = NO.OF
.INT.ACTIVITIES,
   CHECKPOINT.HALT = 0, SYS01.CORE.HALT = 1, SYS01.DTQ.HALT = 2,
   SYS01.PAGING.HALT =  3, SYS01.TASK.HALT = 4;
LITERAL / LOGICAL SYS01.INT.ACTIVITIES = %FFFF0000, INT.ACTIVITIES = SYS01.INT.A
CTIVITIES,
   SYS01.PAGING.ACTIVITY = %40000000, SYS01.DRUM.ACTIVITY = %4000000, SYS01.DISC
.ACTIVITY = %2000000,
   SYS01.PROC.SCHEDULER.ACTIVITY = %10000, SYS01.IO.ACTIVITY = %800000, SYS01.CL
OCK.ACTIVITY = %200000,
   SYS01.PZ.ACTIVITY = %8000;
LITERAL / LOGICAL AP.ACTIVITY.MASK = %01400000, SYS.ACTIVITY.MASK = %FEBFFFFF,
   AP.DZ11.ACTIVITY = %00400000, AP.CIU.ACTIVITY = %01000000;
*GLOBAL 5;
ADDR [NO.OF.ACTIVITIES] ACTIVITY.LINK;
DATAVEC INITIAL.KERNEL.STACK (ADDR)
   %20C0008 %20C0308 %20C0008 %20C0008
   %20C0008 %20C0608 %20C0008 %20C0008
   %20C0908 %20C0008 %20C0C08 %20C0008
   %20C0008 %20C0008 %20C0008 %20C0F08
   %20C1208 %20C1508 %20C1808 %20C1B08
   %20C1E08 %20C2108 %20C2408 %20C2708
   %20C2A08 %20C2D08 %20C3008 %20C3308
   %20C3608 %20C3908 %20C3C08 %20C3F08
END
*CODE 7;
PSPEC INITIALISE.SYS01 ();
INITIALISE.SYS01 ();
PROC INITIALISE.SYS01;
INTEGER I;
ADDR INIT.FP;
ADDR [LOGICAL] INIT.FRAME;
PSPEC INT.PROC ();
DATAVEC ACTIVITY.ENTRY (ADDR INT.PROC)
   EMPTY.ACTIVITY
   SYS14.CORE.REJECT
   EMPTY.ACTIVITY
   EMPTY.ACTIVITY
   EMPTY.ACTIVITY
   SYS03.DRUM.INTERRUPT
   SYS05.ED.INTERRUPT
   EMPTY.ACTIVITY
   SYS07.IO.INTERRUPT
   EMPTY.ACTIVITY
   SYS08.CLOCK.INTERRUPT
   EMPTY.ACTIVITY
   EMPTY.ACTIVITY
   EMPTY.ACTIVITY
   EMPTY.ACTIVITY
   SYS06.PROCESS.SCHEDULER
   SYS13.PROCESS.ACTIVITY
   SYS13.PROCESS.ACTIVITY
   SYS13.PROCESS.ACTIVITY
   SYS13.PROCESS.ACTIVITY
   SYS13.PROCESS.ACTIVITY
   SYS13.PROCESS.ACTIVITY
   SYS13.PROCESS.ACTIVITY
   SYS13.PROCESS.ACTIVITY
   SYS13.PROCESS.ACTIVITY
   SYS13.PROCESS.ACTIVITY
   SYS13.PROCESS.ACTIVITY
   SYS13.PROCESS.ACTIVITY
   SYS13.PROCESS.ACTIVITY
   SYS13.PROCESS.ACTIVITY
   SYS13.PROCESS.ACTIVITY
   SYS13.PROCESS.ACTIVITY
END
FOR I < NO.OF.ACTIVITIES DO
   MAKE (LOGICAL, 2, INITIAL.KERNEL.STACK [I] => INIT.FP) => INIT.FRAME;
   BYTE (ACTIVITY.ENTRY [I]) <<- 3 => INIT.FRAME^ [1];
   INIT.FP <<- 3 => ACTIVITY.LINK [I] <<- 2 ! %80 => INIT.FRAME^ [0];
OD
END
@END

@TITLE CONSYS.SYS02(71,11)
@COL 1S-2R-3R-4R
@FLOW 1-2-3-4
@BOX 1.0
SYS02 CONFIGURATION
@BOX 2.0
SYS02 PARAMETERS
@BOX 1.1
:: SYS02 CONFIGURATION
@BOX 2.1
*GLOBAL 5;
LITERAL / INTEGER SYS02.NO.OF.PAGES = 1024, SYS02.CORE.PAGE.SIZE = 2048,
   SYS02.NO.OF.PAGES.BIT.VEC.SIZE = 128;
INTEGER NO.OF.PAGES, NO.OF.PAGES.BIT.VEC.SIZE, ALLOCATED.CORE;
DATAVEC IN.USE (LOGICAL8)
   %FF [%A]
   %00 [%2]
   %FF [%20] :: BLOCK TABLE CORE AREA (SYS03)
   %00 [%13]
   %FF [%41] :: DON'T USE 2ND MEGABYTE OR ENG BOOTSTRAP
END
@BOX 4.1
*CODE 7;
BEGIN
SYS02.NO.OF.PAGES => NO.OF.PAGES;
SYS02.NO.OF.PAGES.BIT.VEC.SIZE => NO.OF.PAGES.BIT.VEC.SIZE;
%358 => ALLOCATED.CORE;
^IN.USE => SYS02.IN.USE;
END
@END
@TITLE CONSYS.SYS03(71,11)
@COL 1S-2R-3R
@FLOW 1-2-3
@BOX 1.0
SYS03 CONFIGURATION
@BOX 2.0
SYS03 PARAMETERS
@BOX 3.0
INITIALISATION CODE
@BOX 1.1
:: SYS03 CONFIGURATION
@BOX 2.1
LITERAL / INTEGER DRUM.BLOCK.SIZE = 8,
   SUB.TABLE.SIZE = 16, MAX.SEG.SIZE = 1024,
   DRUM.BLOCK.SIZE.BIT.VEC.SIZE = 2, BLOCK.TABLE.ENTRY.SIZE = 4;
LITERAL / INTEGER  NO.OF.BAD.BLOCKS = 152;
LITERAL / INTEGER NO.OF.DRUM.SECTIONS = 1,
   ED300.SIZE = 500256,
   ALLOCATED.DRUM = %1000, TABLE.AREA.SIZE = 512, SEC.SIZE = 512;
LITERAL / INTEGER BLK.AREA.ADDR = ALLOCATED.DRUM + TABLE.AREA.SIZE / DRUM.BLOCK.
SIZE,
  FREE.BLOCK.SIZE = 1880,
  FREE.SUB.TABLE.SIZE = 1024 / SUB.TABLE.SIZE / 4 * TABLE.AREA.SIZE / 8;
LITERAL / ADDR BAD.BLOCK.TABLE.ADDR = %30000 + REAL.STORE.ADDR;
*GLOBAL 5;
INTEGER SECTOR.SIZE, CLEAR.PAGE.ADDR, SECTOR.BUFF.RA;
ADDR SECTOR.BUFF.VA;
ADDR CORE.TABLE.AREA.VA;
INTEGER32 CORE.TABLE.AREA.RA;
LOGICAL16 BLOCK.AREA.ADDR;
LOGICAL32 TABLE.AREA.ADDR;
ADDR [LOGICAL8] FREE.BLOCKS, FREE.SUB.TABLES;
*GLOBAL 30;
LOGICAL8 [FREE.BLOCK.SIZE] FREE.BLKS;
LOGICAL8 [FREE.SUB.TABLE.SIZE] FREE.ST;
*GLOBAL 5;
DATAVEC DRUM.SECTION.AVAILABLE (LOGICAL8)
   1
END
DATAVEC DRUM.SECTION.SIZE (LOGICAL32)
   %7FFFFFFF
END
@BOX 3.1
*CODE 7;
^FREE.BLKS => FREE.BLOCKS;
^FREE.ST => FREE.SUB.TABLES;
SEC.SIZE => SECTOR.SIZE;
ALLOCATED.DRUM * 2048 / SECTOR.SIZE => TABLE.AREA.ADDR;
BLK.AREA.ADDR => BLOCK.AREA.ADDR;
%1D800 / %800 => CLEAR.PAGE.ADDR;
%1E000 / SECTOR.SIZE => SECTOR.BUFF.RA;
%20D0800 => SECTOR.BUFF.VA;
%30000 + REAL.STORE.ADDR => CORE.TABLE.AREA.VA;
%30000 => CORE.TABLE.AREA.RA;
@END

@TITLE CONSYS.SYS05(71,11)

@COL 1S-2R-4R
@FLOW 1-2-4
@BOX 1.0
SYS05 CONFIGURATION
@BOX 2.0
SYS05 LITERALS
@BOX 1.1
::SYS05 PARAMETERS
@BOX 2.1
LITERAL / INTEGER NO.OF.UNITS = 2, NO.OF.MT.UNITS = 1, FIRST.MT.UNIT = 0,
   NO.OF.ED.UNITS = 1,
   D.BLOCK = 1;
LITERAL / INTEGER SYS05.NO.OF.MT.UNITS = NO.OF.MT.UNITS,
   FIRST.ED.UNIT = NO.OF.MT.UNITS;
@END
@TITLE CONSYS.SYS06(71,11)

@COL 1S-2R

@FLOW 1-2

@BOX 1.0
SYS06 CONFIGURATION
@BOX 2.0
SYS06 PARAMETERS
@BOX 1.1
::SYS06 CONFIGURATION
@BOX 2.1
LITERAL / INTEGER INTERACTIVE.TS = 1, BATCH.TS = 1, BATCH.NO = 15,
   CMD.SUS = 4, TERM.SUS = 1, SYS06.TERM.SUS = TERM.SUS,
    SYS06.KILL.SUS = %FFFE, SYS06.IO.SUS = 8,
   MESSAGE.SUS = 2, SYS06.MESSAGE.SUS = MESSAGE.SUS;
@END
@TITLE CONSYS.SYS10(71,11)

@COL 1S-2R
@FLOW 1-2
@BOX 1.0
SYS10 CONFIGURATION
@BOX 2.0
SYS10 PARAMETERS
@BOX 1.1
:: SYS10 CONFIGURATION
@BOX 2.1
LITERAL / INTEGER WORKSPACE = 256;
@END
@TITLE CONSYS.SYS11(71,11)

@COL 1S-2R

@FLOW 1-2

@BOX 1.0
SYS11 CONFIGURATION
@BOX 2.0
SYS11 PARAMETERS
@BOX 1.1
::SYS11 CONFIGURATION
@BOX 2.1
LITERAL / INTEGER INITIAL.TIMER = 20, ABORT.CPU = 2,
   TRAPPING.CPU = 10, DEFAULT.CPU = 500, CPU.RUNOUT = 1;
LITERAL / INTEGER SYS11.INITIAL.TIMER = INITIAL.TIMER;
@END
@TITLE CONSYS.SYS12(71,11)

@COL 1S-2R

@FLOW 1-2

@BOX 1.0
SYS12 CONFIGURATION
@BOX 2.0
SYS12 PARAMETERS
@BOX 1.1
::SYS12 CONFIGURATION
@BOX 2.1
LITERAL / INTEGER ILLEGAL.ORDER = 2;
@END

@TITLE CONSYS.SYS13(71,11)

@COL 1S-2R
@FLOW 1-2
@BOX 1.0
SYS13 CONFIGURATION
@BOX 2.0
SYS13 PARAMETERS
@BOX 1.1
:: SYS13 CONFIGURATION
@BOX 2.1
:: LITERAL / INTEGER NO.OF.PROCS = 256;
:: LITERAL / INTEGER SYS13.NO.OF.PROCS = NO.OF.PROCS;
LITERAL / INTEGER PRIVI.UID = 2, PRBS.PER.SEG = 128,
   PRB.SIZE = 2048, PZ.PRB.RA = %25800, NO.OF.SUPS = 3;
DATAVEC SUP.NAME (LOGICAL64)
   "JOB"
   "FILMAN"
   "FILMAN10"
END

PSPEC START.PROC ();
*GLOBAL 27;
DATAVEC SUP.START (ADDR START.PROC)
   JOB
   FILMAN
   FILMAN10
END
*GLOBAL 5;
@END

@TITLE CONSYS.SYS14(71,11)
@COL 1S-2R-3R-4R
@FLOW 1-2-3-4
@BOX 1.0
SYS14 CONFIGURATION
@BOX 2.0
SYS14 PARAMETERS
@BOX 4.0
SEGMENT TABLE INITIALISATION
@BOX 1.1
:: SYS14 CONFIGURATION
@BOX 2.1
*GLOBAL 5;
LITERAL / INTEGER NO.OF.LOCAL.SEGS = 128, NO.OF.COMMON.SEGS = 128, NO.OF.SYS.SEG
S = 256,
   NO.OF.X.SEGS = 64, NO.OF.INITIAL.SEGS = 39;
LITERAL / INTEGER FIRST.COMMON.SEG = 128, FIRST.X.SEG = 256;
LITERAL / LOGICAL X.SEG = 2, LOCKOUT = 1, ALTERED = 4, REFERENCED = 8, ACCESS.FI
ELD = %F0,
   PROC.FIELD = %FF000000, SEG.FIELD = %FF0000, BLK.FIELD = %FE00, PROC.FIELD.SH
IFT = 24,
   SEG.FIELD.SHIFT = 16, BLK.FIELD.SHIFT = 9, ACCESS.FIELD.SHIFT = 4;
LITERAL / INTEGER NO.OF.INITIAL.DATA.SEGS = NO.OF.INITIAL.SEGS;
LITERAL / INTEGER SEG.SIZE = %40000, SEG.SHIFT = 18, X.SEG.SIZE = 128, PAGE.SIZE
 = 2048, PAGE.SHIFT = 11,
   LOCKED.SIZE = 59;
LITERAL / INTEGER DRUM.BLOCK.SHIFT = PAGE.SHIFT + 2;
LITERAL / INTEGER SYS14.SEG.SIZE = SEG.SIZE, SYS14.SEG.SHIFT = SEG.SHIFT, SYS14.
X.SEG.SIZE = X.SEG.SIZE,
   SYS14.PAGE.SIZE = PAGE.SIZE, SYS14.PAGE.SHIFT = PAGE.SHIFT, SYS14.ON.DRUM = 1
,
   SYS14.NO.OF.LOCAL.SEGS = NO.OF.LOCAL.SEGS, SYS14.NO.OF.SYS.SEGS = NO.OF.SYS.S
EGS,
   SYS14.FIRST.COMMON.SEG = FIRST.COMMON.SEG,
   SYS14.NO.OF.COMMON.SEGS = NO.OF.COMMON.SEGS, SYS14.NO.OF.X.SEGS = NO.OF.X.SEG
S, SYS14.X.SEG = X.SEG;
LITERAL / INTEGER CLEAR.PAGE.SEG = %F0, SYS14.IO.BUF.SEG = 0,
   SYS14.IO.BUF.SEG.2 = 0,
   PAGED.DATA.SEG = 129, PAGED.DATA.MAPPED.SEG = PAGED.DATA.SEG,
   PRB.SEG = 133, PRB.MAPPED.SEG = PRB.SEG, CPRB.MAPPED.SEG = PRB.SEG,
   MBUF.SEG = 135, MBUF.MAPPED.SEG = MBUF.SEG,
   INITIAL.DATA.SEG = 137, INITIAL.DATA.MAPPED.SEG = INITIAL.DATA.SEG,
   FILE.SEG = 139, FILE.MAPPED.SEG = FILE.SEG, PERMIT.MAPPED.SEG = FILE.SEG,
   FILE.DATA.SEG = PAGED.DATA.SEG, FILE.DATA.MAPPED.SEG = PAGED.DATA.MAPPED.SEG,
   CATALOGUE.MAPPED.SEG = 0,
   AUL.CORE.SEG = 140, AUL.MAPPED.SEG = AUL.CORE.SEG, AUL.INT.MAPPED.SEG = 0,
   ACCS.MAPPED.SEG = 0;
LITERAL / INTEGER MAIN.LIB.DIR.SEG = 138;
DATAVEC LOCKIN (INTEGER16)
   1 [1024]
END
@BOX 3.1
*CODE 7;
-> INIT.SYS14;
*CODE 2;
*GLOBAL 7;
#CONSYS.SYS14/1
*GLOBAL 5;
@BOX 4.1
*CODE 7;
PSPEC INITIALISE.SYS14 ();
INIT.SYS14: INITIALISE.SYS14 ();
PROC INITIALISE.SYS14;
INTEGER SEG, I;
ADDR [INTEGER] D.ADDR;
IF VERSION.NO = 0 THEN
   ^DRUM.ADDRS.1 => D.ADDR;
ELSE
   ^DRUM.ADDRS.2 => D.ADDR;
FI
FOR SEG < NO.OF.INITIAL.SEGS DO
   SELECT SYS14.SST [SEG];
   SYS03.INITIALISE.DRUM.SEGMENT (SEG, D.ADDR^ [SEG] / DRUM.BLOCK.SIZE,
      LIMITS [SEG], PRE.LOADED [SEG]);
   IF CORE.ADDRS [SEG] >= 0 THEN
      SEG => SSN OF SYS14.CMT [CORE.ADDRS [SEG]];
   FI
   LIMITS [SEG] => LIMIT;
   1 => COUNT;
   SEG => SSN OF SYS14.CST [SEG - 1];
   ACCESS [SEG] => ACCESS OF SYS14.CST [SEG - 1];
OD
END
@END

@TITLE CONSYS.SYS14/1(71,11)

@COL 1S
@BOX 1.1
DATAVEC LIMITS (INTEGER)
         0     64     16     16
        32     64    128    128
       128    128      8     32
       128    128     32      0
         0      0      0      0
        64    128     64     32
        64      0      0      0
         0      0    128     32
         0      0      0      0
         0 [3]
END
DATAVEC ACCESS (LOGICAL8)
       %00    %85    %86    %85
       %86    %8D    %86    %86
       %86    %86    %86    %8C
       %86    %86    %86    %00
       %00    %00    %00    %00
       %8D    %8D    %8D    %8D
       %8D    %00    %00    %00
       %00    %00    %8D    %8D
       %00    %00    %00    %00
       %00 [3]
END
*GLOBAL 5;
DATAVEC DRUM.ADDRS.1 (INTEGER)
         0     32   2512    160
       224    288   2000   2128
      2256   2384    416    424
      2544   2672    456      0
         0      0      0      0
       488    552    680    744
       776      0     0      0
         0      0    840    904
         0      0     0      0
         0     16    24
END
DATAVEC DRUM.ADDRS.2 (INTEGER)
         0   1032   2512   1160
      1224   1288   2000   2128
      2256   2384   1416   1424
      2544   2672   1456      0
         0      0      0      0
      1488   1552   1680   1744
      1776      0      0      0
         0      0   1840   1904
         0      0      0      0
         0     16     24
END
*GLOBAL 7;
DATAVEC PRE.LOADED (INTEGER8)
   0 1 0 1
   1 1 0 0
   0 0 1 1
   0 0 1 0
   0 0 0 0
   1 1 1 1
   1 0 0 0
   0 0 1 1
   0 0 0 0
   0 [3]
END
DATAVEC CORE.ADDRS (INTEGER16)
   -1 -1 -1 8
   27 75 76 -1 [33]
END
@END

@TITLE CONSYS.SYS15(71,11)

@COL 1S-2R

@FLOW 1-2

@BOX 1.0
SYS15 CONFIGURATION
@BOX 2.0
SYS15 PARAMETERS
@BOX 1.1
::SYS15 CONFIGURATION
@BOX 2.1
LITERAL NO.OF.BUFFERS = 1024;
LITERAL /INTEGER NO.OF.BUFFERS.BIT.VEC.SIZE = 128;
LITERAL / INTEGER MBUFS.PER.SEG = 1024, RESPONSE.TIME = 300;
@END
@TITLE CONSYS.SYS16(71,11)

@COL 1S-2R

@FLOW 1-2

@BOX 1.0
SYS16 CONFIGURATION
@BOX 2.0
SYS16 PARAMETERS
@BOX 1.1
::SYS16 CONFIGURATION
@BOX 2.1
LITERAL / INTEGER NO.OF.DIRS = 63,
   SYS.MB.FILLER.SIZE = %5FC, MAX.PERMITTED.USERS = 8,
   NO.OF.REMOTE.DIRS = 8,  NO.OF.SYS.REMOTE.DIRS = 64,
   BLOCK.SIZE = PAGE.SIZE * DRUM.BLOCK.SIZE,
   MAPPED.UMB.TABLE.SIZE = 1,
   SYS.MB.START.ADDR = 3040, USER.MB.START.ADDR = 3048,
   DIR.ENTRY.SIZE = %2C, USER.MB.ENTRY.SIZE = %20;
@END

@TITLE CONSYS.SYS17(71,11)

@COL 1S-2R
@FLOW 1-2

@BOX 1.0
SYS17 CONFIGURATION
@BOX 2.0
SYS17 PARAMETERS
@BOX 1.1
::SYS17 CONFIGURATION
@BOX 2.1
LITERAL / INTEGER NO.OF.CONSUMABLES = 2, NO.OF.REUSABLES = 3, NO.OF.USERS = 512;
LITERAL / INTEGER NO.OF.RESOURCES = NO.OF.CONSUMABLES + NO.OF.REUSABLES;
LITERAL / INTEGER NO.OF.USER.PARAMS = NO.OF.RESOURCES + NO.OF.CONSUMABLES;
LITERAL / INTEGER CPU.TIME = 1, SYS17.FILE.STORE = 5, SYS17.NO.OF.FILES = 4;
LITERAL / INTEGER SYS17.NO.OF.RESOURCES = NO.OF.RESOURCES, SYS17.NO.OF.USER.PARA
MS = NO.OF.USER.PARAMS,
   SYS17.NO.OF.CONSUMABLES = NO.OF.CONSUMABLES, SYS17.NO.OF.REUSABLES = NO.OF.RE
USABLES;
LITERAL / INTEGER SUBORDS = 6, NO.OF.DEFAULT.USERS = 5, SYS17.CPU.TIME = CPU.TIM
E;
LITERAL / INTEGER PRIVI.SYS.UPS.SIZE = NO.OF.CONSUMABLES * 2 + NO.OF.REUSABLES *
 NO.OF.DEFAULT.USERS;
LITERAL / INTEGER AUL.CORE.BLK = 0, AUL.BLK.SIZE = 16, DAILY.LIMIT = 2, MAX.BALA
NCE = %7FFFFFF;
LITERAL / INTEGER AUL.DRUM.SITE.1 = 3000, AUL.DRUM.SITE.2 = 3016, AUL.FILLER.SIZ
E = %1FEC, AUL.UPDATE.PERIOD = 60;
DATAVEC PRIVI.USER.NAMES (LOGICAL64)
   "SYSTEM"
   "PRIVI"
   "MU6S"
   "MU6C"
   "MUSM"
END
DATAVEC PRIVI.USER.PASSWDS (LOGICAL64)
   "MANAGER"
   "LEGED"
   "RULES"
   "X"
   "MSUM"
END
DATAVEC PRIVI.USER.SUPERS (INTEGER8)
   -1
   0 [4]
END
DATAVEC PRIVI.SYS.UPS (INTEGER)
   ::USER "SYSTEM"
   %7FFFFFF::OUTPUT BAL
   %7FFFFFF::CPUTIME BAL
   %7FFFFFF::OUTPUT INC
   %7FFFFFF::CPUTIME INC
   %7FFFFFF::NO.FILES
   %7FFFFFF::FILESTORE
   %7FFFFFF::SUBORDS
   ::USER "PRIVI"
   0 [7]
   ::USER "MU6S"
   0 [7]
   ::USER "MU6C"
   0 [7]
   ::USER "MUSM"
   0 [7]
END
@END

@TITLE CONSYS.SYS18(71,11)

@COL 1S-2R-3R
@FLOW 1-2-3
@BOX 1.0
SYS18 CONFIGURATION
@BOX 2.0
SYS18 PARAMETERS
@BOX 3.0
SYS18 DATAVECS
@BOX 1.1
:: SYS18 CONFIGURATION
@BOX 2.1
LITERAL NO.OF.MCS = 16;
@BOX 3.1
DATAVEC MC.CHANNEL (INTEGER)
   %0105 :: MACHINE 0 - 11/34
   %0105 :: MACHINE 1 - VAX
   %0105 :: MACHINE 2 - 11/44
   %0105 :: MACHINE 3 - MU5
   %0105 :: MACHINE 4 - MC68000
   %0105 :: MACHINE 5 - MU6G
   0 [10]
END
DATAVEC MC.NAME (LOGICAL64)
   "PDP34"
   "VAX"
   "PDP44"
   "MU5"
   "MC68000"
   "MU6G"
   0 [10]
END
LITERAL NO.OF.SUP.PROCS = 8;
DATAVEC SUP.PROC.NAME (LOGICAL64)
   "JOB"
   "JOB" "FILMAN"
   "JOB"
   "JOB"
   "JOB"
   "JOB"
   0 [1]
END
DATAVEC SUP.MC.NAME (LOGICAL64)
   "PDP34"
   "VAX" "VAX"
   "PDP44"
   "MU5"
   "MC68000"
   "MU6G"
   0 [1]
END
DATAVEC SUP.SPN (INTEGER)
   %0200
   %0201 %0401
   %0202
   %0203
   %0204
   %0205
   0 [1]
END
DATAVEC SUP.PID (INTEGER)
   1
   1 2
   1
   1
   1
   1
   0 [1]
END
DATAVEC SUP.CH (INTEGER)
   0
   0 0
   0
   0
   0
   0 [2]
END
@END
@TITLE CONSYS.SYS19(71,11)
@COL 1S-2R-3R
@FLOW 1-2-3
@BOX 1.0
SYS19 CONFIGURATION
@BOX 2.0
SYS19 PARAMETERS
@BOX 3.0
SYS19 DATAVECS
@BOX 4.0
LOCATE WHICH DEVICES ARE PRESENT
@BOX 1.1
::SYS19 INITIALIZATION
@BOX 2.1
LITERAL / INTEGER NO.OF.DEVICES = 64, NO.OF.PERI.CHANNELS = 40,
   NO.OF.PERI.REROUTES = 2, NO.OF.PRESET.DEVICES =  3;
LITERAL / INTEGER CONFIG.SIZE = NO.OF.PRESET.DEVICES * 4;
LITERAL /  INTEGER NO.OF.P.DEV.TYPES = 6, NO.OF.DEVICE.CLASSES = 10,
   PERI.BUFF.SIZE = %80;
LITERAL / INTEGER SYS19.NO.OF.DEVICES = NO.OF.DEVICES,
   SYS19.NO.OF.PERI.CHANNELS = NO.OF.PERI.CHANNELS,
   SYS19.OPR.IN.DEV.NO = 1, SYS19.PERI.BUFF.SIZE = PERI.BUFF.SIZE;
LITERAL / INTEGER SYS19.NO.OF.P.DEV.TYPES = NO.OF.PDEV.TYPES;
LITERAL / INTEGER SYS19.TALK.IN.DEVICE.CLASS = 4, SYS19.TALK.OUT.DEV.NO = 0;
LITERAL / INTEGER SYS19.NO.OF.GROUPS = NO.OF.DEVICES - 1 / 16 + 1;
LITERAL / INTEGER SYS19.TALK.OUT.DEVICE.CLASS = 5, SYS19.NO.OF.COMMS.DEVICES = 1
0;
LITERAL / ADDR COMMS.BUFFER.VA = %20C4260;
LITERAL / LOGICAL32 COMMS.BUFFER.RA = %11A60;
::PERI BUFFS FOLLOW APPENDIX COMMS BUFFERS
LITERAL / ADDR PERI.BUFF.VA = %20C4400;
LITERAL / LOGICAL32 PERI.BUFF.RA = %11C00;
LITERAL / INTEGER NO.OF.REMOTE.DEVICES = 40, SYS19.NO.OF.RECEIVE.ADDRS = 2,
   SYS19.MAX.REMOTE.P.DEV.NO = %91;
LITERAL / LOGICAL16 SYS19.PDP.IO.ADDR = 1;
@BOX 3.1
*CODE  2;
-> L;
*GLOBAL 12;
#CONSYS.SYS19/1
*GLOBAL 5;
L:
LITERAL / INTEGER NO.OF.PERI.PROCS = 16;
DATAVEC PERI.NAME (LOGICAL64)
   "LPT"
   "OPR"
   "LPTVAX"
   "OPRVAX"
   0 [12]
END
DATAVEC PERI.SPN (LOGICAL)
   %0301
   %0301
   %1301
   %1701
   0 [12]
END
DATAVEC DEVICES.PER.P.DEV.TYPE (INTEGER)
   0::EMPTY
   1::CONS I
   1::CONS O
   NO.OF.DZ11.DEVICES :: DZ11 I
   NO.OF.DZ11.DEVICES :: DZ11 O
   SYS19.MAX.REMOTE.P.DEV.NO
END
DATAVEC SYS19.MAX.DATA.TRANSFER (INTEGER)
   %10 ::CHARACTER INPUT
   %10 ::COMMUNICATIONS INPUT
   %400::CHARACTER OUTPUT
   %200::COMMUNICATIONS OUTPUT
END
@END
@TITLE CONSYS.SYS19/1(71,11)

@COL 1S
@BOX 1.0
CONFIG TABLE
@BOX 1.1
::DEVICE CLASSES ARE:
::0 = CHAR.IN, 1 = CHAR.OUT, 2 = COMMS.IN, 3 = COMMS.OUT
::4 = TALK.IN, 5 = TALK.OUT, 8 = REMOTE.COMMS.IN, 9 = REMOTE.COMMS.OUT
DATAVEC CONFIG.TABLE (LOGICAL32)
:: LOGICAL.DEV.ID        PHYSICAL.DEV.ID        PHYSICAL.DEV.MODE   PAIR DEV NO
       %00502                 %000                   %00000             %F(8)
       %10024                 %0100                   %148F1             2
       %10126                 %0200                   %14820             1
END
@END

@TITLE CONSYS.SYS20(71,11)
@COL 1S-2R-4R
@FLOW 1-2-4
@BOX 1.0
SYS20 CONFIGURATION
@BOX 2.0
SYS20 PARAMETERS
@BOX 4.0
INITIALISE PROCESS ZERO PRB
@BOX 1.1
::SYS20 INITIALISATION
@BOX 2.1
LITERAL / INTEGER NO.OF.TASKS = 9;
LITERAL / INTEGER IO.BUF.SEG = 0, IO.BUF.BLK = %7F, IO.MSEG = 0;
PSPEC TASK.PROC ();
PSPEC LIB10.SET.UP.TASK ();
DATAVEC TASK.PROCS (ADDR TASK.PROC)
   SYS03.DRUM.TASK
   SYS17.INIT.ACCOUNTS.TASK
   SYS16.INIT.FILE.TASK
   SYS16.FILE.TASK
   SYS07.IO.TASK
   SYS19.INIT.DEV.TASK
   LIB10.SET.UP.TASK
   SYS13.TERM.PROC.TASK
   SYS13.INIT.SUP.TASK
END;
LITERAL / INTEGER SYS20.DRUM.TASK = %80000000, SYS20.INIT.ACCOUNTS.TASK = %40000
000,
   SYS20.INIT.FILE.TASK = %20000000, SYS20.FILE.TASK = %10000000,
   SYS20.IO.TASK = %08000000, SYS20.INIT.DEV.TASK = %04000000, SYS20.SET.UP.TASK
 = %02000000,
   SYS20.TERM.PROC.TASK = %01000000, SYS20.INIT.SUP.TASK = %00800000;;
*GLOBAL 27;
DATAVEC LIB.TASK.PROCS (ADDR TASK.PROC)
   SET.UP
END
*GLOBAL 5;
*CODE 4;
PROC LIB10.SET.UP.TASK;
ADDR TASK.PROC T.PROC;
   LIB.TASK.PROCS [0] => T.PROC;
   T.PROC^ ();
END
@BOX 4.1
*CODE 7;
PSPEC INITIALISE.SYS20 ();
INITIALISE.SYS20 ();
SYS20.SET.TASK (SYS20.SET.UP.TASK, 0);
PROC INITIALISE.SYS20;
TYPE TASK.PROC.ADDR IS
   ADDR TASK.PROC TSK.PROC
OR
   LOGICAL TSK.ADDR;
TASK.PROC.ADDR TSK.PROC.ADDR;
ADDR INIT.PRB.TYPE PRB.VARS;
ADDR [LOGICAL] PZ.REG.PTR;
ADDR SYS14.SEG.VARS PZ.SEG.VARS;
MAKE (INIT.PRB.TYPE, 0, %2140000) => PRB.VARS;
^REGISTER.DUMP OF PRB.VARS^ => PZ.REG.PTR;
RESERVED.STACK.BOTTOM => PZ.REG.PTR^ [0] <<- 2 ! %A0 => PZ.REG.PTR^ [32];
^SYS20.TASK.LOOP => TSK.PROC OF TSK.PROC.ADDR;
TSK.ADDR OF TSK.PROC.ADDR => PZ.REG.PTR^ [33];
^SEG.VARS OF PRB.VARS^ => PZ.SEG.VARS;
9 => SSN OF LST [0] OF PZ.SEG.VARS^;
%8E => ACCESS OF LST [0] OF PZ.SEG.VARS^;
END
@END


@TITLE CONSYS.SYS21(71,11)

@COL 1S-2R
@FLOW 1-2
@BOX 1.0
SYS21 CONFIGURATION
@BOX 2.0
SYS21 PARAMETERS
@BOX 1.1
:: SYS21 CONFIGURATION
@BOX 2.1
LITERAL / INTEGER NO.OF.STATS = 18;
@END

@TITLE CONSYS.SYS23(71,11)

@COL 1S-2R
@FLOW 1-2
@BOX 1.0
SYS23 CONFIGURATION
@BOX 2.0
SYS23 PARAMETERS
@BOX 1.1
::SYS23 CONFIGURATION
@BOX 2.1
LITERAL NO.OF.OP.PARAMS = 16;
@END

