$CONTROL USLINIT, CODE, MAP                                             00010000
                                                                        00014000
<<------------------------------------------------------------->>       00016000
<<                                                             >>       00018000
<<                    MPE Segmenter Driver                     >>       00020000
<<                     SEGDVR (Module 03)                      >>       00022000
<<                                                             >>       00024000
<<                      Version  A.01.07                       >>       00026000
<<                     January 15, 1982                        >>       00028000
<<                                                             >>       00030000
<<------------------------------------------------------------->>       00032000
                                                                        00034000
$COPYRIGHT "(C) COPYRIGHT HEWLETT-PACKARD COMPANY 1981.  ",  &          00036000
$          "THIS PROGRAM MAY BE USED WITH ONE COMPUTER ",    &          00038000
$          "AT A TIME AND SHALL NOT OTHERWISE BE ",          &          00040000
$          "RECORDED, TRANSMITTED OR STORED IN A RETRIEVAL ",&          00042000
$          "SYSTEM.  COPYING OR OTHER REPRODUCTION OF THIS ",&          00044000
$          "PROGRAM EXCEPT FOR ARCHIVAL PURPOSES IS ",       &          00046000
$          "PROHIBITED WITHOUT THE PRIOR WRITTEN CONSENT ",  &          00048000
$          "OF HEWLETT-PACKARD COMPANY."                                00050000
                                                                        00052000
$TITLE "       MPE SEGMENTER DRIVER - JANUARY 15, 1982"                 00054000
$CONTROL MAIN = SEGDVR                                                  00056000
$CONTROL SEGMENT = SEGDVR                                               00058000
                                                                        00060000
begin                                                                   00062000
$PAGE                                                                   00064000
EQUATE CCG = 0,  <<"GREATER THAN" CONDITION CODE>>                      00066000
       CCL = 1,  <<"LESS THAN" CONDITION CODE>>                         00068000
       CCE = 2;  <<"EQUAL" CONDITION CODE>>                             00070000
INTEGER STATUS = Q-1;  <<STATUS WORD OF STACK MARKER>>                  00072000
DEFINE CONDCODE = STATUS.(6:2)#;  <<CONDITION CODE BITS>>               00074000
LOGICAL PARM = Q-4;  <<CREATE PARAMETER>>                               00076000
DEFINE CAB' = ASSEMBLE(CAB)#,                                           00078000
       DEL' = ASSEMBLE(DEL)#,                                           00080000
       DUP' = ASSEMBLE(DUP)#,                                           00082000
       XCH' = ASSEMBLE(XCH)#;                                           00084000
INTEGER XREG = X;  <<X REGISTER>>                                       00086000
INTEGER S0 = S-0;                                                       00088000
INTEGER S1 = S-1;                                              <<04285>>00090000
INTEGER S3 = S-3;                                              <<04285>>00092000
LOGICAL LS0 = S-0;                                                      00094000
BYTE POINTER BPS0 = S-0;                                                00096000
INTEGER POINTER PS0 = S-0;                                              00098000
INTEGER POINTER PS4 = S-4;                                              00100000
DOUBLE DS2 = S-2;                                                       00102000
                                                                        00104000
EQUATE   ERR'PRIVUSER  =  17;                                           00106000
<<SUBSYSTEM VARIABLES>>                                                 00108000
                                                                        00110000
INTEGER RUNNER;                                                <<04586>>00112000
EQUATE MITBUILD=10;                                            <<04586>>00114000
ARRAY PROMPT (0:0)=DB _ "- ";  <<COMMAND PROMPT CHARACTER = "-">>       00116000
ARRAY DOUBLEPROMPT (0:0)=DB := "--";  <<DOUBLE PROMPT>>                 00118000
ARRAY MSG1 (0:29) :=                                                    00120000
"HP32050A.01.08  SEGMENTER/3000 (C) HEWLETT-PACKARD CO 1982";           00122000
BYTE ARRAY MESS (0:375) :=                                     <<04101>>00124000
                                                                        00126000
   <<SEGMENTER ERRORS>>                                                 00128000
                                                                        00130000
   2,14,"INTERNAL ERROR",                                               00132000
   3,34,"UNABLE TO CREATE SEGMENTER PROCESS",                           00134000
   4,36,"UNABLE TO ACTIVATE SEGMENTER PROCESS",                         00136000
   5,40,"UNABLE TO SEND MAIL TO SEGMENTER PROCESS",                     00138000
   6,45,"UNABLE TO RECEIVE MAIL FROM SEGMENTER PROCESS",                00140000
                                                                        00142000
   <<COMMAND INTERPRETER ERRORS>>                                       00144000
                                                                        00146000
   10,20,"ILLEGAL COMMAND NAME",                                        00148000
   11,28,"ILLEGAL NUMBER OF PARAMETERS",                                00150000
   12,17,"ILLEGAL PARAMETER",                                           00152000
   13,23,"COMMAND BUFFER OVERFLOW",                                     00154000
   14,20,"ILLEGAL CONTINUATION",                                        00156000
   15,15,"INPUT I/O ERROR",                                             00158000
   16,16,"OUTPUT I/O ERROR",                                            00160000
   17,23,"INSUFFICIENT CAPABILITY",                            <<04101>>00162000
   18,17,"ILLEGAL DELIMITER";                                  <<04101>>00164000
INTEGER BLANK _ %006440;  <<CR - BLANK>>                                00166000
INTEGER AMPERSAND _ %006446;  <<CR - AMPERSAND>>                        00168000
INTEGER LPAREN _ %006450;  <<CR - LEFT PAREN>>                          00170000
INTEGER RPAREN _ %006451;  <<CR - RIGHT PAREN>>                         00172000
INTEGER COMMA _ %006454;  <<CR - COMMA>>                                00174000
LOGICAL INTERACTIVE;  <<INTERACTIVE INPUT?>>                            00176000
LOGICAL DUPLICATIVE;  <<DUPLICATIVE INPUT?>>                            00178000
LOGICAL PRIVUSER;  <<PRIVILEGED USER CAP FROM WHO >>                    00180000
LOGICAL INHIBITFILEEQ;  <<INHIBIT FILE EQUATION BIT>>                   00182000
EQUATE TTYBND = 79;  <<INPUT BUFFER BOUND>>                             00184000
EQUATE MAXTTY = 2+2*TTYBND;  <<MAX. NR. BYTES FOR COMMAND>>             00186000
INTEGER ARRAY TTY (0:TTYBND);  <<INPUT BUFFER>>                         00188000
BYTE ARRAY BTTY (*) = TTY;                                              00190000
BYTE ARRAY DELIMITERS(0:3):=",=;",%15;                         <<04285>>00192000
$PAGE  "SEGMENTER SUBSYSTEM VARIABLES"                         <<00207>>00194000
<<SEGMENTER SUBSYSTEM VARIABLES>>                                       00196000
                                                                        00198000
INTEGER PIN _ 0;  <<PIN OF SEGMENTER SUBSYSTEM>>                        00200000
INTEGER COMMANDNR;                                                      00202000
INTEGER ERRORNR;                                                        00204000
INTEGER NERRORPARM;                                                     00206000
INTEGER NUM1;                                                           00208000
INTEGER NUM2;                                                           00210000
INTEGER NUM3;                                                           00212000
INTEGER NUM4;                                                           00214000
INTEGER NUM5;                                                           00216000
INTEGER NUM6;                                                  <<00629>>00218000
BYTE ARRAY STRING1 (0:15);                                              00220000
BYTE ARRAY STRING2 (0:15);                                              00222000
BYTE ARRAY FNAME1 (0:35);                                               00224000
BYTE ARRAY FNAME2 (0:35);                                               00226000
$PAGE  "PROCEDURE DECLARATIONS"                                <<00207>>00228000
<<----------------------------------------------------------------------00230000
*                                                                      *00232000
*  PROCEDURE DECLARATIONS                                              *00234000
*                                                                      *00236000
---------------------------------------------------------------------->>00238000
                                                                        00240000
PROCEDURE ACTIVATE (PIN,CODE);                                          00242000
   VALUE PIN,CODE;                                                      00244000
   LOGICAL PIN,CODE;                                                    00246000
   OPTION VARIABLE,EXTERNAL;                                            00248000
INTEGER PROCEDURE ASCII (NUM,BASE,STRING);                              00250000
   VALUE NUM,BASE;                                                      00252000
   INTEGER NUM,BASE;                                                    00254000
   BYTE ARRAY STRING;                                                   00256000
   OPTION EXTERNAL;                                                     00258000
LOGICAL PROCEDURE BINARY (STRING,LENGTH);                               00260000
   VALUE LENGTH;                                                        00262000
   BYTE ARRAY STRING;                                                   00264000
   INTEGER LENGTH;                                                      00266000
   OPTION EXTERNAL;                                                     00268000
PROCEDURE CLEAR (BA,LEN);                                               00270000
   VALUE LEN;                                                           00272000
   BYTE ARRAY BA;                                                       00274000
   INTEGER LEN;                                                         00276000
   OPTION FORWARD;                                                      00278000
PROCEDURE CREATE (PROGNAME,ENTRYNAME,PIN,PARM,FLAGS,STACKSIZE,DLSIZE,   00280000
                  MAXDATA,PRIORITY,RANK);                               00282000
   VALUE PARM,FLAGS,STACKSIZE,DLSIZE,MAXDATA,PRIORITY,RANK;             00284000
   BYTE ARRAY PROGNAME,ENTRYNAME;                                       00286000
   INTEGER PIN,PARM,STACKSIZE,DLSIZE,MAXDATA,RANK;                      00288000
   LOGICAL FLAGS,PRIORITY;                                              00290000
   OPTION VARIABLE,EXTERNAL;                                            00292000
PROCEDURE DEBUG;                                                        00294000
   OPTION EXTERNAL;                                                     00296000
PROCEDURE GETCLASS (DESCRIP,TARGET);                                    00298000
   VALUE DESCRIP;                                                       00300000
   DOUBLE DESCRIP;                                                      00302000
   INTEGER TARGET;                                                      00304000
   OPTION FORWARD;                                                      00306000
PROCEDURE GETFILENAME (DESCRIP,TARGET);                                 00308000
   VALUE DESCRIP;                                                       00310000
   DOUBLE DESCRIP;                                                      00312000
   BYTE ARRAY TARGET;                                                   00314000
   OPTION FORWARD;                                                      00316000
PROCEDURE GETIDENT (DESCRIP,TARGET);                                    00318000
   VALUE DESCRIP;                                                       00320000
   DOUBLE DESCRIP;                                                      00322000
   BYTE ARRAY TARGET;                                                   00324000
   OPTION FORWARD;                                                      00326000
INTEGER PROCEDURE GETJCW;                                               00328000
   OPTION EXTERNAL;                                                     00330000
PROCEDURE GETNUMBER (IDENT,TARGET);                                     00332000
   BYTE ARRAY IDENT; INTEGER TARGET;                                    00334000
   OPTION FORWARD;                                                      00336000
PROCEDURE GETPRIVMODE;                                                  00338000
   OPTION EXTERNAL;                                                     00340000
PROCEDURE GETUSERMODE;                                                  00342000
   OPTION EXTERNAL;                                                     00344000
PROCEDURE GETXIDENT (DESCRIP,TARGET,INDEX);                             00346000
   DOUBLE DESCRIP;                                                      00350000
   BYTE ARRAY TARGET;                                                   00352000
   LOGICAL INDEX;                                                       00354000
   OPTION FORWARD;                                                      00356000
INTEGER PROCEDURE KEYWORD (DESCRIP,PARMS);                              00358000
   VALUE DESCRIP;                                                       00360000
   DOUBLE DESCRIP;                                                      00362000
   BYTE ARRAY PARMS;                                                    00364000
   OPTION FORWARD;                                                      00366000
INTEGER PROCEDURE MYCOMMAND (IMAGE,DELIMS,MAXPARMS,NRPARMS,PARMS,DICT,  00368000
                             DEFN);                                     00370000
   VALUE MAXPARMS;                                                      00372000
   BYTE ARRAY IMAGE,DELIMS,DICT;                                        00374000
   INTEGER MAXPARMS,NRPARMS;                                            00376000
   DOUBLE ARRAY PARMS;                                                  00378000
   BYTE POINTER DEFN;                                                   00380000
   OPTION VARIABLE,EXTERNAL;                                            00382000
PROCEDURE PRINT (MESSAGE,LENGTH,CONTROL);                               00384000
   VALUE LENGTH,CONTROL;                                                00386000
   ARRAY MESSAGE;                                                       00388000
   INTEGER LENGTH,CONTROL;                                              00390000
   OPTION EXTERNAL;                                                     00392000
PROCEDURE PRINTERROR;                                                   00394000
   OPTION FORWARD;                                                      00396000
INTEGER PROCEDURE READ (MESSAGE,EXPECTEDL);                             00398000
   VALUE EXPECTEDL;                                                     00400000
   ARRAY MESSAGE;                                                       00402000
   INTEGER EXPECTEDL;                                                   00404000
   OPTION EXTERNAL;                                                     00406000
PROCEDURE READCOMMAND;                                                  00408000
   OPTION FORWARD;                                                      00410000
LOGICAL PROCEDURE RECEIVEMAIL (PIN,BUFFER,WAITFLAG);                    00412000
   VALUE PIN,WAITFLAG;                                                  00414000
   LOGICAL PIN,WAITFLAG;                                                00416000
   INTEGER ARRAY BUFFER;                                                00418000
   OPTION EXTERNAL;                                                     00420000
PROCEDURE SEGMENTER (PIN,COMMAND,ERROR,NUM1,NUM2,NUM3,NUM4,NUM5,        00422000
                     NUM6,STRING1,STRING2,FNAME1,FNAME2);      <<00629>>00424000
   VALUE COMMAND,NUM1,NUM2,NUM3,NUM4,NUM5,NUM6;                <<00629>>00426000
   INTEGER PIN,COMMAND,ERROR,NUM1,NUM2,NUM3,NUM4,NUM5,NUM6;    <<00629>>00428000
   BYTE ARRAY STRING1,STRING2,FNAME1,FNAME2;                            00430000
   OPTION VARIABLE,EXTERNAL;                                            00432000
LOGICAL PROCEDURE SENDMAIL (PIN,COUNT,BUFFER,WAITFLAG);                 00434000
   VALUE PIN,COUNT,WAITFLAG;                                            00436000
   LOGICAL PIN,COUNT,WAITFLAG;                                          00438000
   INTEGER ARRAY BUFFER;                                                00440000
   OPTION EXTERNAL;                                                     00442000
PROCEDURE SETJCW (PARM);                                                00444000
   VALUE PARM;                                                          00446000
   INTEGER PARM;                                                        00448000
   OPTION EXTERNAL;                                                     00450000
PROCEDURE SYSTEMDEBUG;                                                  00452000
   OPTION EXTERNAL;                                                     00454000
PROCEDURE WHO (MODE,CAPABILITY,LATTR,USERN,GROUPN,ACCTN,HOMEN,TERMN);   00456000
   LOGICAL MODE,TERMN;                                                  00458000
   DOUBLE CAPABILITY,LATTR;                                             00460000
   BYTE ARRAY USERN,GROUPN,ACCTN,HOMEN;                                 00462000
   OPTION VARIABLE,EXTERNAL;                                            00464000
INTRINSIC FGETINFO;                                            <<04757>>00466000
$PAGE    "CLEAR"                                               <<00207>>00468000
<<----------------------------------------------------------------------00470000
*                                                                      *00472000
*  PROCEDURE GROUP                                                     *00474000
*                                                                      *00476000
---------------------------------------------------------------------->>00478000
                                                                        00480000
PROCEDURE CLEAR (BA,LEN);                                               00482000
   VALUE LEN;                                                           00484000
   BYTE ARRAY BA;                                                       00486000
   INTEGER LEN;                                                         00488000
   BEGIN                                                                00490000
   TOS _ @BA; BPS0 _ " ";                                               00492000
   ASSEMBLE(DUP,INCB); MOVE * _ *,(LEN)                                 00494000
   END;                                                                 00496000
$PAGE  "GETNUMBER"                                             <<00207>>00498000
PROCEDURE GETNUMBER (IDENT,TARGET);                                     00500000
   <<EVALUATES THE NUMBER STRING (IDENT) AND INSERTS THE RESULT         00502000
     IN TARGET.  IT IS ASSUMED THAT LEADING BLANKS HAVE BEEN            00504000
     REMOVED, THAT THE NUMBER IS UNSIGNED AND THAT IT MAY BE            00506000
     PRECEEDED BY "%".  NOTE THAT THIS PROCEDURE USES THE CONDITION     00508000
     CODE TO INDICATE AN ERROR>>                                        00510000
   BYTE ARRAY IDENT; INTEGER TARGET;                                    00512000
   BEGIN                                                                00514000
   TOS _ 0;  <<FOR RESULT OF BINARY>>                                   00516000
   TOS _ @IDENT;                                                        00518000
   DUP';                                                                00520000
   IF BPS0 = "%" THEN TOS _ TOS+1;                                      00522000
   WHILE BPS0 = NUMERIC DO TOS _ TOS+1;                                 00524000
   TOS _ TOS-@IDENT;  <<NUMBER STRING LENGTH>>                          00526000
   TARGET _ BINARY(*,*);  <<EVALUATE NUMBER>>                           00528000
   TOS _ IF = THEN CCE ELSE CCL;  <<ERROR?>>                            00530000
   CONDCODE _ TOS                                                       00532000
   END;                                                                 00534000
$PAGE  "GETIDENT"                                              <<00207>>00536000
PROCEDURE GETIDENT (DESCRIP,TARGET);                                    00538000
   <<MOVES AN IDENTIFIER STRING FROM SOURCE TO TARGET AND    >><<02818>>00540000
   <<TRUNCATES THE STRING TO 15 CHAR'S IF NECESSARY. WARNING >><<02818>>00542000
   <<MSG IS OUTPUT FOR TRUNCATION. CONDCODE IS SET TO CCL IF >><<02818>>00544000
   <<STRING IS NULL (STRING WITH 0 LENGTH). IT IS ASSUMED    >><<02818>>00546000
   <<THAT TARGET HAS BEEN PRE-BLANKED SO THAT THE MOVED      >><<02818>>00548000
   <<IDENTIFIER WILL BE TERMINATED BY A BLANK                >><<02818>>00550000
   VALUE DESCRIP;                                                       00552000
   DOUBLE DESCRIP;                                                      00554000
   BYTE ARRAY TARGET;                                                   00556000
   BEGIN                                                                00558000
   ARRAY MSG(0:22);                                            <<03024>>00560000
   BYTE ARRAY MSGB(*)=MSG;                                     <<03024>>00562000
   BYTE POINTER IDENT = DESCRIP;                                        00564000
   INTEGER INFO = DESCRIP+1;                                            00566000
   BYTE LEN = DESCRIP+1;                                                00568000
   IF INTEGER(LEN) = 0 THEN GO ERR;                            <<02818>>00570000
   TOS _ @TARGET; TOS _ @IDENT;                                         00572000
   IF INTEGER(LEN) <= 15 THEN TOS := LEN                       <<03065>>00574000
   ELSE BEGIN                                                  <<02818>>00576000
          MOVE MSGB:="*** WARNING *** ";                       <<03024>>00578000
          PRINT (MSG,-16,0);                                   <<03024>>00580000
          MOVE MSGB:=("STRING LONGER THAN 15 CHAR'S, ",        <<03024>>00582000
                      "TRUNCATED TO 15 ");                     <<03024>>00584000
          PRINT (MSG,-46,0);                                   <<03024>>00586000
          TOS:=15;                                             <<02818>>00588000
        END;                                                   <<02818>>00590000
   MOVE * := *,(TOS);                                          <<02818>>00592000
   TOS:=CCE;                                                   <<02818>>00594000
   GO GETOUT;                                                  <<02818>>00596000
   ERR: TOS:=CCL;                                              <<02818>>00598000
   GETOUT: CONDCODE:=TOS;                                      <<02818>>00600000
   END;                                                                 00602000
$PAGE  "GETXIDENT"                                             <<00207>>00604000
PROCEDURE GETXIDENT (DESCRIP,TARGET,INDEX);                             00606000
   <<SAME SAME AS GETIDENT EXCEPT LOOKS FOR AN OPTIONAL INDEX.  IF      00608000
     ONE IS FOUND, IT'S VALUE IS PLACED IN INDEX; OTHERWISE THE         00610000
     DEFAULT INDEX OF 0 IS PLACED IN INDEX.  NOTE THAT THIS PROCEDURE   00612000
     USES THE CONDITION CODE TO INDICATE AN ERROR>>                     00614000
   DOUBLE DESCRIP;                                                      00618000
   BYTE ARRAY TARGET;                                                   00620000
   LOGICAL INDEX;                                                       00622000
   BEGIN                                                                00624000
   BYTE POINTER IDENT;                                         <<04285>>00626000
   POINTER I = DESCRIP;                                        <<04285>>00628000
   @IDENT:=I;                                                  <<04285>>00630000
   INDEX _ 0;  <<DEFALUT INDEX OF 0>>                                   00632000
   SCAN IDENT UNTIL COMMA,1;  <<LOOK FOR COMMA OR CR>>                  00634000
   SCAN IDENT UNTIL LPAREN,1;  <<LOOK FOR "(" OR CR>>                   00636000
   ASSEMBLE(DDUP,CMP);                                                  00638000
   IF > THEN  <<INDEX PRESENT?>>                                        00640000
      BEGIN                                                             00642000
      ASSEMBLE(DDUP);                                                   00644000
      SCAN * UNTIL RPAREN,1;  <<LOOK FOR ")" OR CR>>                    00646000
      ASSEMBLE(DDUP,CMP);                                               00648000
      IF < THEN  <<NO MATCHING ")"?>>                                   00650000
         BEGIN                                                          00652000
         NFG:                                                           00654000
         TOS _ CCL;  <<ERROR CONDITION CODE>>                           00656000
         GO GETOUT                                                      00658000
         END;                                                           00660000
      TOS _ TOS+1;  <<SKIP OVER ")">>                                   00662000
      SCAN * WHILE BLANK,1;  <<SKIP OVER TRAILING BLANKS>>              00664000
      IF TOS <> TOS THEN GO NFG;  <<GARBAGE BEFORE DELIMITER?>>         00666000
      ASSEMBLE(DUP,INCB);                                               00668000
      DO TOS _ TOS-1 UNTIL BPS0 <> " ";                                 00670000
      TOS:=TOS-@IDENT+1;                                       <<04285>>00672000
      IF < THEN GO NFG;                                        <<04285>>00674000
      I(1).(0:8) := TOS;  << IDENTIFIER LENGTH >>              <<04285>>00676000
      SCAN * WHILE BLANK,1;                                             00678000
      ASSEMBLE(DUP);    <<CHECK ILLEGAL INDEX>>                <<02819>>00680000
      IF BPS0 = "%" THEN TOS:=TOS+1;                           <<02819>>00682000
      WHILE BPS0 <> ")" DO                                     <<02819>>00684000
        IF BPS0 = NUMERIC THEN TOS:=TOS+1                      <<02819>>00686000
        ELSE WHILE BPS0 <> ")" DO                              <<02819>>00688000
               BEGIN                                           <<02819>>00690000
                  IF BPS0 <> " " THEN                          <<02819>>00692000
                     BEGIN                                     <<02819>>00694000
                       ASSEMBLE(DDEL);                         <<02819>>00696000
                       GO NFG                                  <<02819>>00698000
                     END;                                      <<02819>>00700000
                  TOS:=TOS+1;                                  <<02819>>00702000
               END;                                            <<02819>>00704000
      ASSEMBLE(DEL);                                           <<02819>>00706000
      GETNUMBER(*,INDEX);  <<EVALUATE INDEX>>                           00708000
      IF < THEN GO NFG  <<ERROR?>>                                      00710000
      END;                                                              00712000
   GETIDENT(DESCRIP,TARGET);                                            00714000
   IF < THEN                                                   <<02818>>00716000
      BEGIN                                                    <<02818>>00718000
         TOS:=CCL;                                             <<02818>>00720000
         GO GETOUT;                                            <<02818>>00722000
      END;                                                     <<02818>>00724000
   TOS _ CCE;  <<OK CONDITION CODE>>                                    00726000
                                                                        00728000
   GETOUT:                                                              00730000
   CONDCODE _ TOS  <<STORE CONDITION CODE>>                             00732000
   END;                                                                 00734000
$PAGE  "GETFILENAME"                                           <<00207>>00736000
PROCEDURE GETFILENAME (DESCRIP,TARGET);                                 00738000
   <<MOVES A FILE NAME IDENTIFIER STRING FROM SOURCE (IDENT) TO         00740000
     TARGET.  IT IS ASSUMED THAT TARGET HAS BEEN PRE-BLANKED SO         00742000
     SO THAT THE MOVED IDENTIFIER WILL BE TERMINATED BY A BLANK>>       00744000
   VALUE DESCRIP;                                                       00746000
   DOUBLE DESCRIP;                                                      00748000
   BYTE ARRAY TARGET;                                                   00750000
   BEGIN                                                                00752000
   BYTE POINTER IDENT = DESCRIP;                                        00754000
   LOGICAL INFO = DESCRIP+1;                                            00756000
   BYTE LEN = DESCRIP+1;                                                00758000
   IF (1 <= INTEGER(LEN) <= 35) THEN                           <<02820>>00760000
      BEGIN                                                    <<02820>>00762000
         CONDCODE:=CCE;                                        <<02820>>00764000
         MOVE TARGET:=IDENT,(LEN); <<MOVE FILE NAME>>          <<02820>>00766000
      END                                                      <<02820>>00768000
   ELSE  CONDCODE:=CCL;                                        <<02820>>00770000
   END;                                                                 00772000
$PAGE  "GETCLEASS"                                             <<00207>>00774000
PROCEDURE GETCLASS (DESCRIP,TARGET);                                    00776000
   <<CHECKS FOR A MATCH BETWEEN THE GIVEN IDENTIFIER AND THE SET        00778000
     OF LEGAL ONES.  NOTE THAT THIS PROCEDURE USES THE CONDITION        00780000
     CODE TO INDICATE AN ERROR>>                                        00782000
   VALUE DESCRIP;                                                       00784000
   DOUBLE DESCRIP;                                                      00786000
   INTEGER TARGET;                                                      00788000
   BEGIN                                                                00790000
   BYTE POINTER IDENT = DESCRIP;                                        00792000
   LOGICAL INFO = DESCRIP+1;                                            00794000
   BYTE ARRAY PARMS(0:19)=PB _ 7,"SEGMENT",4,"UNIT",5,"ENTRY",0;        00796000
   TOS _ 0; TOS _ DESCRIP; TOS _ @PARMS;                                00798000
   TOS _ KEYWORD(*,*);                                                  00800000
   TOS _ IF < THEN CCL ELSE CCE;                                        00802000
   CONDCODE _ TOS;                                                      00804000
   TARGET.(12:2) _ TOS                                                  00806000
   END;                                                                 00808000
$PAGE   "KEYWORD"                                              <<00207>>00810000
INTEGER PROCEDURE KEYWORD (DESCRIP,PARMS);                              00812000
   <<CHECKS FOR A MATCH BETWEEN THE GIVEN IDENTIFIER AND THE GIVEN      00814000
     KEYWORD LIST, WHICH MUST BE A PB-RELATIVE BYTE ARRAY.  NOTE        00816000
     THAT THIS PROCEDURE USES THE CONDITION CODE TO INDICATE AN         00818000
     ERROR>>                                                            00820000
   VALUE DESCRIP;                                                       00822000
   DOUBLE DESCRIP;                                                      00824000
   BYTE ARRAY PARMS;                                                    00826000
   BEGIN                                                                00828000
   BYTE POINTER IDENT = DESCRIP;                                        00830000
   INTEGER INFO = DESCRIP+1;                                            00832000
   BYTE LEN = DESCRIP+1;                                                00834000
   INTEGER INDEX = KEYWORD;  <<KEYWORD LIST INDEX>>                     00836000
   BYTE ARRAY KEYLEN(0:0);  <<KEYWORD LENGTH>>                          00838000
   XREG _ @IDENT;                                                       00840000
   TOS _ @KEYLEN; TOS _ @PARMS;                                         00842000
   AGAIN:                                                               00844000
   MOVE * _ * PB,(1),1;  <<EXTRACT KEYWORD LENGTH>>                     00846000
   ASSEMBLE(XBX,DDUP);  <<LOAD @IDENT AND SAVE @KEYLEN+1>>              00848000
   TOS _ KEYLEN; ASSEMBLE(TEST);                                        00850000
   IF = THEN  <<KEYWORD LIST EXHAUSTED?>>                               00852000
      BEGIN                                                             00854000
      TOS _ CCL;                                                        00856000
      GO GETOUT                                                         00858000
      END;                                                              00860000
   IF INTEGER(LEN) = S0 THEN  <<NR. CHAR'S EQUAL?>>                     00862000
      IF * = * PB,(TOS) THEN  <<STRINGS MATCH?>>                        00864000
         BEGIN                                                          00866000
         TOS _ CCE;                                                     00868000
         GO GETOUT                                                      00870000
         END                                                            00872000
      ELSE                                                              00874000
   ELSE ASSEMBLE(DEL,DDEL);                                             00876000
   INDEX _ INDEX+1;  <<BUMP KEYWORD NR.>>                               00878000
   TOS _ TOS+INTEGER(KEYLEN);  <<NEXT KEYWORD IN LIST>>                 00880000
   ASSEMBLE(XBX,DECB);  <<SAVE @IDENT AND RESTORE @KEYLEN>>             00882000
   GO AGAIN;                                                            00884000
                                                                        00886000
   GETOUT:                                                              00888000
   CONDCODE _ TOS                                                       00890000
   END;                                                                 00892000
$PAGE  "READCOMMAND"                                           <<00207>>00894000
PROCEDURE READCOMMAND;                                                  00896000
   <<READS AND PARSES A COMMAND IMAGE.  THE PARAMETERS OF THE COMMAND   00898000
     ARE PLACED IN THE GLOBAL COMMAND PARAMETER VARIABLES.  NOTE THAT   00900000
     THIS PROCEDURE USES THE CONDITION CODE TO INDICATE AN ERROR>>      00902000
   BEGIN                                                                00904000
   BYTE ARRAY COMS (*)=PB := 5,"ADDRL",5,"ADDSL",6,"AUXUSL",            00906000
      7,"BUILDRL",7,"BUILDSL",8,"BUILDUSL",5,"CEASE",4,"COPY",4,"EXIT", 00908000
      4,"HIDE",6,"LISTRL",6,"LISTSL",7,"LISTUSL",6,"NEWSEG",7,"PREPARE",00910000
      8,"PURGERBM",7,"PURGERL",7,"PURGESL",6,"REVEAL",2,"RL",2,"SL",    00912000
3,"USE",3,"USL",5,"DEBUG",6,"COPYSL",7,"COPYUSL",7,"CLEANSL",  <<00207>>00914000
      8,"CLEANUSL",4,"PREP",7,"LISTAUX",4,"SHOW",8,"LISTPMAP", <<04585>>00916000
      8,"SETFPMAP",0;                                          <<04585>>00918000
   SWITCH COMSWITCH _ ADDRL,ADDSL,AUXUSL,BUILDRL,BUILDRL,BUILDRL,       00920000
     CEASE,COPY,EXIT,ADDRL,LISTRL,LISTSL,LISTUSL,NEWSEG,PREPARE<<00592>>00922000
     ,COPY,PURGERL,PURGERL,ADDRL,AUXUSL,AUXUSL,CEASE,AUXUSL,   <<00207>>00924000
      DEBUG',COPYUSL,COPYUSL,CLEANSL,CLEANSL,PREPARE,LISTUSL,  <<04585>>00926000
      SHOW,LISTPMAP,SETFPMAP;                                  <<04585>>00928000
   byte array PrepParms(*) = PB :=   << Legal -PREP parameters <<04102>>00930000
      2, "RL",                    << Specifies RL file >>      <<04102>>00932000
      6, "ZERODB",                << Zeroes uninitialized stack<<04102>>00934000
      4, "PMAP",                  << Produces PMAP listing >>  <<04102>>00936000
      7, "MAXDATA",               << Specifies max stack size ><<04102>>00938000
      5, "STACK",                 << Specifies initial Q to Z ><<04102>>00940000
      2, "DL",                    << Specifies initial DL to DB<<04102>>00942000
      5, "PATCH",                 << Specifies patch area size <<04102>>00944000
      3, "CAP",                   << Capabilities req'd to run <<04102>>00946000
      5, "NOSYM",                 << Turn off symbolic debug >><<04102>>00948000
      5, "FPMAP",                 << Pmap info in prog file  >><<04102>>00950000
      7, "NOFPMAP",                                            <<04102>>00952000
      8, "CHECKSUM",                                           <<04259>>00954000
      0;                                                       <<04102>>00956000
   BYTE ARRAY ADDSLPARMS(*)=PB:=                               <<04102>>00958000
      4, "PMAP",                                               <<04102>>00960000
      5, "NOSYM",                                              <<04102>>00962000
      5, "FPMAP",                                              <<04102>>00964000
      7, "NOFPMAP",                                            <<04102>>00966000
      8, "CHECKSUM",                                           <<04259>>00968000
      5, "PATCH",                                              <<04259>>00970000
      1, "C",                                                  <<04586>>00972000
      1, "S",                                                  <<04586>>00974000
      1, "P",                                                  <<04586>>00976000
      0;                                                       <<04102>>00978000
   BYTE ARRAY CAPS(0:30)=PB _ 2,"NS",2,"BA",2,"IA",2,"PM",2,"CR",2,"RT",00980000
      2,"MR",2,"CD",2,"DS",2,"PH",0;                                    00982000
   BYTE ARRAY SETFPMAPPARMS(*)=PB:=                            <<04585>>00984000
      6, "SYSTEM",                                             <<04585>>00986000
      7, "SESSION",                                            <<04585>>00988000
      9, "CONDITION",                                          <<04585>>00990000
      11,"UNCONDITION",                                        <<04585>>00992000
      2, "ON",                                                 <<04585>>00994000
      3, "OFF",                                                <<04585>>00996000
      0;                                                       <<04585>>00998000
   SWITCH BADPARM _ BADPARM1,BADPARM1,BADPARM2,BADPARM3;       <<02818>>01000000
   INTEGER I = Q+1;  <<PARAMETER NR.>>                                  01002000
   INTEGER NRPARMS = Q+2;  <<NR. PARAMETERS>>                           01004000
   INTEGER BADPARMNR = Q+3;  <<ILLEGAL PARAMETER NR.>>                  01006000
   LOGICAL SPECIFIED = Q+4;  <<PARAMETERS SPECIFIED BIT MAP>>           01008000
   DEFINE SYSSPECIFIED=SPECIFIED.(0:1)#,                       <<04585>>01010000
          SYSSESSIONSPECIFIED=SPECIFIED.(1:1)#,                <<04585>>01012000
          CONDPARMSPECIFIED=SPECIFIED.(2:1)#,                  <<04585>>01014000
          ONOFFSPECIFIED=SPECIFIED.(3:1)#;                     <<04585>>01016000
   LOGICAL CONTINUED = Q+5;  <<COMMAND CONTINUED?>>                     01018000
   LOGICAL FPMAPSPECIFIED = Q+5;                               <<04102>>01020000
   DOUBLE ARRAY DESCRIP (*) = Q+4;  <<PARAMETER DESCRIPTOR ARRAY>>      01022000
   ARRAY DESCRIPW(*)=Q+4;                                      <<04101>>01024000
   DOUBLE DESCRIP1 = DESCRIP+2;                                         01026000
   BYTE POINTER PARM1 = DESCRIP1;                                       01028000
   LOGICAL INFO1 = DESCRIP1+1;                                          01030000
   BYTE LEN1 = DESCRIP1+1;                                              01032000
   DOUBLE DESCRIP2 = DESCRIP+4;                                         01034000
   BYTE POINTER PARM2 = DESCRIP2;                                       01036000
   LOGICAL INFO2 = DESCRIP2+1;                                          01038000
   BYTE LEN2 = DESCRIP2+1;                                              01040000
   DOUBLE DESCRIP3 = DESCRIP+6;                                         01042000
   BYTE POINTER PARM3 = DESCRIP3;                                       01044000
   LOGICAL INFO3 = DESCRIP3+1;                                          01046000
   BYTE LEN3 = DESCRIP3+1;                                              01048000
                                                               <<04101>>01050000
   EQUATE COMMA'=0,                                            <<04101>>01052000
          EQUAL'=1,                                            <<04101>>01054000
          SEMICOLON'=2,                                        <<04101>>01056000
          CR'=3;                                               <<04285>>01060000
   EQUATE FILENAME = 1,                                        <<04285>>01062000
          SEGNAME  = 2,                                        <<04285>>01064000
          NUMFIELD = 3,                                        <<04285>>01066000
          ALPHANUM = 4;                                        <<04285>>01068000
   DEFINE DELIMITER'=INTEGER(DESCRIPW(I*2+1).(11:5))#;         <<04101>>01070000
                                                               <<04101>>01072000
   SUBROUTINE CHECKDELIMITER(DELIMITER,I);                     <<04101>>01074000
                                                               <<04101>>01076000
   VALUE DELIMITER,                                            <<04101>>01078000
         I;         <<PARAMETER INDEX>>                        <<04101>>01080000
   INTEGER DELIMITER,I;                                        <<04101>>01082000
                                                               <<04101>>01084000
   BEGIN                                                       <<04101>>01086000
      IF DELIMITER' <> DELIMITER THEN                          <<04101>>01088000
         BEGIN                                                 <<04101>>01090000
            ERRORNR:=18;                                       <<04101>>01092000
            GO TO NFG1;                                        <<04101>>01094000
         END;                                                  <<04101>>01096000
   END;   <<CHECKDELIMITER>>                                   <<04101>>01098000
                                                                        01100000
   SUBROUTINE GETNUM (NUM);                                             01102000
      <<EVALUATES THE NUMERIC PARAMETER ASSOCIATED WITH THE KEYWORDED   01104000
        PARAMETER SPECIFIED BY I>>                                      01106000
      INTEGER NUM;                                                      01108000
      BEGIN                                                             01110000
      I _ I+1;                                                          01112000
      IF I > NRPARMS THEN                                      <<04101>>01114000
         BEGIN                                                 <<04101>>01116000
           I:=I-1;                                             <<04101>>01118000
           GO TO NFGPARM;                                      <<04101>>01120000
         END;                                                  <<04101>>01122000
      CHECKDELIMITER(EQUAL',I-1);                              <<04101>>01124000
      TOS _ 0; TOS _ DESCRIP(I); TOS _ TOS.(0:8);                       01126000
      ASSEMBLE (DUP);                                          <<04101>>01128000
      IF TOS=0 THEN GO NFGPARM;                                <<04101>>01130000
      PS4 := BINARY(*,*);  <<EVAL. NUMBER>>                             01132000
      IF <> THEN GO NFGPARM;                                   <<04101>>01134000
      END;                                                              01136000
   SUBROUTINE CHECKSPECIAL (I,MODE);                           <<04285>>01138000
   VALUE I,MODE;                                               <<04285>>01140000
   INTEGER I,MODE;                                             <<04285>>01142000
   << THIS ROUTINE CHECKS ALPHA-NUMERIC PARAMETER THAT  >>     <<04285>>01144000
   << THIS PARAMETER DID NOT CONTAIN SPECIAL CHARACTERS >>     <<04285>>01146000
   BEGIN                                                       <<04285>>01148000
      TOS:=DESCRIPW(I*2+1).(0:8)-1; << PARM CHARACTER COUNT >> <<04285>>01150000
      TOS:=DESCRIPW(S3*2); << PARM ADDRESS >>                  <<04285>>01152000
      WHILE S1 >= 0 DO                                         <<04285>>01154000
         BEGIN                                                 <<04285>>01156000
            IF BPS0(S1) = SPECIAL THEN                         <<04285>>01158000
               BEGIN                                           <<04285>>01160000
                  IF S3=FILENAME THEN                          <<04285>>01162000
                     IF BPS0(S1)="*" OR BPS0(S1)="." OR BPS0   <<04387>>01164000
                       (S1)="$" OR BPS0(S1)="/" THEN GO NEXT;  <<04387>>01166000
                  IF S3=SEGNAME THEN                           <<04285>>01168000
                     IF BPS0(S1)="-" OR BPS0(S1)="_" OR        <<04387>>01170000
                        BPS0(S1)="'" THEN GO NEXT;             <<04387>>01172000
                  IF S3=NUMFIELD THEN                          <<04285>>01174000
                     IF BPS0(S1)="%" THEN                      <<04285>>01176000
                       GO TO NEXT;                             <<04285>>01178000
                  ERRORNR:=18;                                 <<04285>>01180000
                  GO TO NFG1;                                  <<04285>>01182000
               END;                                            <<04285>>01184000
   NEXT:    S1:=S1-1;                                          <<04285>>01186000
         END;                                                  <<04285>>01188000
      DDEL;                                                    <<04285>>01190000
   END;                                                        <<04285>>01192000
                                                                        01194000
   <<* * * INITIALIZE LOCAL VARIABLES * * *>>                           01196000
                                                                        01198000
   ASSEMBLE(DZRO,DZRO; ZERO);                                           01200000
   ASSEMBLE(ADDS 46);                                                   01202000
                                                                        01204000
   <<* * * INITIALIZE GLOBAL COMMAND PARAMETERS * * *>>                 01206000
                                                                        01208000
   NERRORPARM _ -1;  <<INIT. TO NO PARAMETER>>                          01210000
   ASSEMBLE(DZRO,DZRO; DZRO);                                  <<00629>>01212000
   NUM1 _ TOS; NUM2 _ TOS; NUM4 _ TOS; NUM5 _ TOS;                      01214000
   NUM6 := TOS;                                                <<00629>>01216000
   TOS.(11:1) _ INHIBITFILEEQ; NUM3 _ TOS;                              01218000
   CLEAR(STRING1,15); CLEAR(STRING2,15);                                01220000
   CLEAR(FNAME1,35); CLEAR(FNAME2,35);                                  01222000
                                                                        01224000
   <<* * * READ COMMAND * * *>>                                         01226000
                                                                        01228000
   NULLCOMMAND:                                                         01230000
   IF INTERACTIVE THEN  <<PROMPT?>>                                     01232000
      BEGIN                                                             01234000
      PRINT(PROMPT,-1,%320);  <<PROMPT = "-">>                          01236000
      IF < THEN  <<ERROR?>>                                             01238000
         BEGIN                                                          01240000
         PRINTERROR:                                                    01242000
         TOS := 16;                                                     01244000
         GO NFG                                                         01246000
         END                                                            01248000
      END;                                                              01250000
   I _ MAXTTY;  <<NR. BYTES AVAILABLE>>                                 01252000
   TOS := @TTY;  <<BUFFER ADR.>>                                        01254000
                                                                        01256000
   READMORE:                                                            01258000
   TOS := READ(PS0,-I);  <<READ A LINE>>                                01260000
   IF > THEN  <<END-OF-FILE?>>                                          01262000
      BEGIN                                                             01264000
      COMMANDNR := 8;  <<EXIT COMMAND>>                                 01266000
      GO BOUGHTIT                                                       01268000
      END;                                                              01270000
   IF < THEN  <<ERROR?>>                                                01272000
      BEGIN                                                             01274000
      TOS := 15;                                                        01276000
      GO NFG                                                            01278000
      END;                                                              01280000
   ASSEMBLE(TEST);                                                      01282000
   IF = THEN  <<ZERO CHAR'S?>>                                          01284000
      BEGIN                                                             01286000
      TOS := CONTINUED;                                                 01288000
      DDEL;                                                             01290000
      IF <> THEN GO DNULLCOMMAND;  <<CONTINUED?>>                       01292000
      DEL;                                                              01294000
      GO NULLCOMMAND                                                    01296000
      END;                                                              01298000
   IF NOT DUPLICATIVE THEN  <<ECHO LINE?>>                              01300000
      BEGIN                                                             01302000
      ASSEMBLE(DDUP,NEG);                                               01304000
      ASSEMBLE (ADDS 1);                                       <<04757>>01306000
      FGETINFO (2,,,,S0); << GET STDLIST REC SIZE >>           <<04757>>01308000
      IF \S0\ < \S1\ THEN                                      <<04757>>01310000
         S1 := TOS                                             <<04757>>01312000
      ELSE                                                     <<04757>>01314000
         DEL;                                                  <<04757>>01316000
      PRINT(*,*,0);                                                     01318000
      IF < THEN GO PRINTERROR  <<ERROR?>>                               01320000
      END;                                                              01322000
   IF S0 = I THEN  <<BUFFER OVERFLOW?>>                                 01324000
      BEGIN                                                             01326000
      TOS := 13;                                                        01328000
      GO NFG                                                            01330000
      END;                                                              01332000
   XREG := TOS;                                                         01334000
   TOS _ S0&LSL(1);                                                     01336000
   BPS0(XREG) := %15;  <<INSERT CR STOPPER>>                            01338000
   SCAN * UNTIL AMPERSAND,1;  <<LOOK FOR CONTINUATION CHAR.>>           01340000
   IF NOCARRY THEN  <<LINE CONTINUED?>>                                 01342000
      BEGIN                                                             01344000
      ASSEMBLE(DUP,INCA);                                               01346000
      SCAN * WHILE BLANK;  <<LOOK FOR CR>>                              01348000
      IF NOCARRY THEN  <<ILLEGAL CONTINUATION?>>                        01350000
         BEGIN                                                          01352000
         TOS := 14;                                                     01354000
         GO NFG                                                         01356000
         END;                                                           01358000
      IF LS0 THEN                                                       01360000
         BEGIN                                                          01362000
         BPS0 _ " ";  <<BLANK OUT AMPERSAND>>                           01364000
         TOS _ TOS+1                                                    01366000
         END;                                                           01368000
      TOS _ TOS&LSR(1);  <<GET NEW WORD LABEL>>                         01370000
      ASSEMBLE(DUP,CAB; SUB,NEG);                                       01372000
      I _ TOS&ASL(1)+I;  <<ADJUST NR. BYTES AVAILABLE>>                 01374000
      DNULLCOMMAND:                                                     01376000
      IF INTERACTIVE THEN  <<PROMPT AGAIN?>>                            01378000
         BEGIN                                                          01380000
         PRINT(DOUBLEPROMPT,-2,%320);  <<PROMPT = "--">>                01382000
         IF < THEN GO PRINTERROR  <<ERROR?>>                            01384000
         END;                                                           01386000
      CONTINUED := CONTINUED+1;  <<SET CONTINUED FLAG>>                 01388000
      GO READMORE                                                       01390000
      END;                                                              01392000
                                                                        01394000
   <<* * * RECOGNIZE COMMAND NAME * * *>>                               01396000
                                                                        01398000
   ASSEMBLE(DDEL,ZERO);  <<FOR COMMAND NR.>>                            01400000
   SCAN BTTY WHILE BLANK,1;  <<SKIP OVER LEADING BLANKS>>               01402000
   ASSEMBLE(DUP,DUP);                                                   01404000
   MOVE * _ * WHILE AS,0;  <<SKIP AND UPSHIFT COMMAND>>                 01406000
   ASSEMBLE(STAX,DDUP; DEL,SUB);  <<COMMAND LENGTH>>                    01408000
   TOS _ TOS&LSL(8);                                                    01410000
   TOS _ @COMS;  <<COMMAND NAME LIST>>                                  01412000
   COMMANDNR _ KEYWORD(*,*);  <<COMMAND NR.>>                           01414000
   IF < THEN  <<ILLEGAL COMMAND?>>                                      01416000
      BEGIN                                                             01418000
      TOS := 10;                                                        01420000
      GO NFG                                                            01422000
      END;                                                              01424000
                                                                        01426000
   <<* * * LOCATE COMMAND PARAMETERS * * *>>                            01428000
                                                                        01430000
   ASSEMBLE(ZERO,LDXA);                                                 01432000
   TOS:=MYCOMMAND(*,DELIMITERS,23,NRPARMS,DESCRIP(1));         <<04101>>01434000
   IF > THEN GO ERR1;  <<TOO MANY PARAMETERS?>>                         01436000
                                                                        01440000
   <<* * * INTERPRET COMMAND AND PARAMETERS * * *>>                     01442000
                                                                        01444000
   GO * COMSWITCH(COMMANDNR);                                           01446000
                                                                        01448000
   <<ADDRL>>                                                            01450000
                                                                        01452000
   ADDRL:                                                               01454000
   IF NRPARMS <> 1 THEN GO ERR1;                                        01456000
   GETXIDENT(DESCRIP1,STRING1,NUM1);                                    01458000
   IF < THEN GO BADPARM1;                                      <<02818>>01460000
   GO BOUGHTIT;                                                         01462000
                                                                        01464000
   <<ADDSL>>                                                            01466000
                                                                        01468000
   ADDSL:                                                               01470000
   NUM6 := -1;  <<DO NOT APPEND A PATCH AREA>>                 <<00629>>01472000
   IF NRPARMS < 1 THEN GO ERR1;                                <<04102>>01476000
   GETIDENT(DESCRIP1,STRING2);                                 <<04102>>01478000
   IF < THEN GO BADPARM1;                                      <<04102>>01480000
   FPMAPSPECIFIED:=0;                                          <<04102>>01482000
   FOR I:=2 UNTIL NRPARMS DO                                   <<04102>>01484000
      BEGIN                                                    <<04102>>01486000
         CHECKSPECIAL(I,ALPHANUM);                             <<04285>>01488000
         TOS:=0;                                               <<04102>>01490000
         TOS:=DESCRIP(I);                                      <<04102>>01492000
         TOS:=@ADDSLPARMS;                                     <<04102>>01494000
         TOS:=KEYWORD(*,*);                                    <<04102>>01496000
         IF < THEN GO NFGPARM;                                 <<04102>>01498000
         XREG:=TOS;                                            <<04102>>01500000
         CASE * XREG OF                                        <<04102>>01502000
            BEGIN                                              <<04102>>01504000
                                                               <<04102>>01506000
               << PMAP     >>                                  <<04102>>01508000
                                                               <<04102>>01510000
               BEGIN                                           <<04102>>01512000
                  I:=I-1;                                      <<04102>>01514000
                  IF NOT (DELIMITER' = COMMA' LOR              <<04102>>01516000
                          DELIMITER' = SEMICOLON') THEN        <<04102>>01518000
                     BEGIN                                     <<04102>>01520000
                        ERRORNR:=18;                           <<04102>>01522000
                        GO TO NFG1;                            <<04102>>01524000
                     END;                                      <<04102>>01526000
                  I:=I+1;                                      <<04102>>01528000
                  NUM3.(15:1):=1;                              <<04102>>01530000
               END;                                            <<04102>>01532000
                                                               <<04102>>01534000
               << NOSYM   >>                                   <<04102>>01536000
                                                               <<04102>>01538000
               BEGIN                                           <<04102>>01540000
                  CHECKDELIMITER(SEMICOLON',I-1);              <<04102>>01542000
                  NUM3.(9:1):=1;                               <<04102>>01544000
               END;                                            <<04102>>01546000
                                                               <<04102>>01548000
               << FPMAP >>                                     <<04102>>01550000
                                                               <<04102>>01552000
               BEGIN                                           <<04102>>01554000
                  CHECKDELIMITER(SEMICOLON',I-1);              <<04102>>01556000
                  IF FPMAPSPECIFIED THEN                       <<04102>>01558000
                     GO NFGPARM                                <<04102>>01560000
                  ELSE                                         <<04102>>01562000
                     BEGIN                                     <<04102>>01564000
                        NUM3.(8:1):=1;                         <<04102>>01566000
                        FPMAPSPECIFIED:=1;                     <<04102>>01568000
                     END;                                      <<04102>>01570000
               END;                                            <<04102>>01572000
                                                               <<04102>>01574000
               << NOFPMAP >>                                   <<04102>>01576000
                                                               <<04102>>01578000
               BEGIN                                           <<04102>>01580000
                  CHECKDELIMITER(SEMICOLON',I-1);              <<04102>>01582000
                  IF FPMAPSPECIFIED THEN                       <<04102>>01584000
                     GO NFGPARM                                <<04102>>01586000
                  ELSE                                         <<04102>>01588000
                     BEGIN                                     <<04102>>01590000
                        NUM3.(7:1):=1;                         <<04102>>01592000
                        FPMAPSPECIFIED:=1;                     <<04102>>01594000
                     END;                                      <<04102>>01596000
               END;                                            <<04102>>01598000
                                                               <<04259>>01600000
               << CHECKSUM >>                                  <<04259>>01602000
                                                               <<04259>>01604000
               BEGIN                                           <<04259>>01606000
                  CHECKDELIMITER(SEMICOLON',I-1);              <<04259>>01608000
                  NUM3.(6:1):=1;                               <<04259>>01610000
               END;                                            <<04259>>01612000
                                                               <<04259>>01614000
               << PATCH >>                                     <<04259>>01616000
                                                               <<04259>>01618000
               BEGIN                                           <<04259>>01620000
                  CHECKDELIMITER(SEMICOLON',I-1);              <<04259>>01622000
                  GETNUM(NUM6);                                <<04259>>01624000
               END;                                            <<04259>>01626000
                                                               <<04259>>01628000
               << CORE RESIDENT >>                             <<04586>>01630000
                                                               <<04586>>01632000
               BEGIN                                           <<04586>>01634000
                  CHECKDELIMITER(SEMICOLON',I-1);              <<04586>>01636000
                  IF RUNNER <> MITBUILD THEN GO NFGPARM;       <<04586>>01638000
                  NUM3.(1:1):=1;                               <<04586>>01640000
               END;                                            <<04586>>01642000
                                                               <<04586>>01644000
               << SYSTEM SEGMENT >>                            <<04586>>01646000
                                                               <<04586>>01648000
               BEGIN                                           <<04586>>01650000
                  CHECKDELIMITER(SEMICOLON',I-1);              <<04586>>01652000
                  IF RUNNER <> MITBUILD THEN GO NFGPARM;       <<04586>>01654000
                  NUM3.(2:1):=1;                               <<04586>>01656000
               END;                                            <<04586>>01658000
                                                               <<04586>>01660000
               << PERMANENT ALLOCATED SEGMENT >>               <<04586>>01662000
                                                               <<04586>>01664000
               BEGIN                                           <<04586>>01666000
                  CHECKDELIMITER(SEMICOLON',I-1);              <<04586>>01668000
                  IF RUNNER <> MITBUILD THEN GO NFGPARM;       <<04586>>01670000
                  NUM3.(0:1):=1;                               <<04586>>01672000
               END;                                            <<04586>>01674000
                                                               <<04586>>01676000
            END;  << CASE >>                                   <<04102>>01678000
      END; << FOR LOOP >>                                      <<04102>>01680000
   GO BOUGHTIT;                                                <<04102>>01682000
                                                                        01684000
   <<AUXUSL>>                                                           01686000
                                                                        01688000
   AUXUSL:                                                              01690000
   IF NRPARMS <> 1 THEN GO ERR1;                                        01692000
   CHECKSPECIAL(1,FILENAME);                                   <<04285>>01694000
   GETFILENAME(DESCRIP1,FNAME1);                                        01696000
   IF < THEN GO BADPARM1;                                               01698000
   GO BOUGHTIT;                                                         01700000
                                                                        01702000
   <<BUILDRL>>                                                          01704000
                                                                        01706000
   BUILDRL:                                                             01708000
   IF NRPARMS <> 3 THEN GO ERR1;                                        01710000
   CHECKSPECIAL(1,FILENAME);                                   <<04285>>01712000
   CHECKDELIMITER(COMMA',1);                                   <<04101>>01714000
   CHECKDELIMITER(COMMA',2);                                   <<04101>>01716000
   GETFILENAME(DESCRIP1,FNAME1);                                        01718000
   IF < THEN GO BADPARM1;                                               01720000
   NUM1 _ BINARY(PARM2,INTEGER(LEN2));                                  01722000
   IF <> THEN GO BADPARM2;  <<ERROR?>>                                  01724000
   NUM2 _ BINARY(PARM3,INTEGER(LEN3));                                  01726000
   IF <> THEN GO BADPARM3;  <<ERROR?>>                                  01728000
   GO BOUGHTIT;                                                         01730000
                                                                        01732000
   <<BUILDSL>>                                                          01734000
                                                                        01736000
   COMMENT SEE BUILDRL;                                                 01738000
                                                                        01740000
   <<BUILDUSL>>                                                         01742000
                                                                        01744000
   COMMENT SEE BUILDRL;                                                 01746000
                                                                        01748000
   <<CEASE>>                                                            01750000
                                                                        01752000
   CEASE:                                                               01754000
   NUM3 _ 8;  <<DEFAULT = ENTRY>>                                       01756000
   CEASE2:                                                              01758000
   IF NRPARMS = 1 THEN                                                  01760000
      BEGIN                                                             01762000
      CEASE1:                                                           01764000
      GETXIDENT(DESCRIP(NRPARMS),STRING1,NUM1);                         01766000
      IF < THEN GO * BADPARM(NRPARMS);                                  01768000
      CHECKSPECIAL(NRPARMS,SEGNAME); << RBM NAME HAS THE   >>  <<04285>>01770000
                                     << SAME FORMAT AS SEG >>  <<04285>>01772000
      GO BOUGHTIT                                                       01774000
      END;                                                              01776000
   IF NRPARMS = 2 THEN                                                  01778000
      BEGIN                                                             01780000
      CHECKSPECIAL(1,ALPHANUM);                                <<04285>>01782000
      CHECKDELIMITER(COMMA',1);                                <<04101>>01784000
      GETCLASS(DESCRIP1,NUM3);                                          01786000
      IF < THEN GO BADPARM1;                                            01788000
      GO CEASE1                                                         01790000
      END;                                                              01792000
   GO ERR1;                                                             01794000
                                                               <<00207>>01796000
   <<CLEANSL>>                                                 <<00207>>01798000
   CLEANSL:                                                    <<00207>>01800000
   IF NRPARMS > 1 THEN GO ERR1;                                <<00629>>01802000
   IF NRPARMS=1 THEN                                           <<00207>>01806000
     BEGIN                                                     <<00207>>01808000
       GETFILENAME(DESCRIP1,FNAME1);                           <<00207>>01810000
       IF < THEN GO TO BADPARM1;                               <<00207>>01812000
     END;                                                      <<00207>>01816000
   GO TO BOUGHTIT;                                             <<00629>>01818000
                                                               <<00207>>01820000
                                                               <<00207>>01822000
   <<CLEANUSL>>                                                <<00207>>01824000
                                                               <<00207>>01826000
   COMMENT: SEE CLEANSL;                                       <<00207>>01828000
                                                               <<00207>>01830000
<<COPYSL>>                                                     <<00207>>01832000
                                                               <<00207>>01834000
  COMMENT: SEE COPYUSL;                                        <<00207>>01836000
                                                               <<00207>>01838000
                                                               <<00207>>01840000
   <<COPYUSL>>                                                 <<00207>>01842000
   COPYUSL:                                                    <<00207>>01844000
   IF NOT (1<=NRPARMS<=2) THEN GO TO ERR1;                     <<00207>>01846000
   NUM1:=BINARY(PARM1,INTEGER(LEN1));                          <<00207>>01848000
   IF <> THEN GO BADPARM1;                                     <<00207>>01850000
   IF NOT (0<=NUM1<=30000) THEN GO BADPARM1;                   <<00207>>01852000
   IF NRPARMS=2 THEN                                           <<00207>>01854000
     BEGIN                                                     <<00207>>01856000
       CHECKSPECIAL(2,FILENAME);                               <<04285>>01858000
         CHECKDELIMITER(COMMA',1);                             <<04101>>01860000
       GETFILENAME(DESCRIP(2),FNAME1);                         <<00207>>01862000
       IF < THEN GO TO BADPARM2;                               <<00207>>01864000
     END;                                                      <<00207>>01866000
   GO TO BOUGHTIT;                                             <<00207>>01868000
                                                               <<00207>>01870000
                                                                        01872000
   <<COPY>>                                                             01874000
                                                                        01876000
   COPY:                                                                01878000
   NUM3 _ %4;  <<DEFAULT = UNIT>>                                       01880000
   GO CEASE2;                                                           01882000
                                                                        01884000
   <<EXIT>>                                                             01886000
                                                                        01888000
   EXIT:                                                                01890000
   IF NRPARMS <> 0 THEN GO ERR1;                                        01892000
   GO BOUGHTIT;                                                         01894000
                                                                        01896000
   <<HIDE>>                                                             01898000
                                                                        01900000
   COMMENT SEE ADDRL;                                                   01902000
                                                                        01904000
   <<LISTRL>>                                                           01906000
                                                                        01908000
   LISTRL:                                                              01910000
   IF NRPARMS <> 0 THEN GO ERR1;                                        01912000
   NUM3.(15:1) _ 1;  <<TURN ON LIST BIT>>                               01914000
   GO BOUGHTIT;                                                         01916000
                                                                        01918000
   <<LISTSL>>                                                           01920000
                                                                        01922000
LISTSL:                                                        <<00207>>01926000
   IF NRPARMS >1 THEN GO ERR1;                                 <<00207>>01928000
   NUM3.(15:1):=1;  <<TURN ON LIST>>                           <<00592>>01930000
   IF NRPARMS=1 THEN                                           <<00207>>01934000
     BEGIN                                                     <<00207>>01936000
       GETFILENAME(DESCRIP1,FNAME1);                           <<00592>>01938000
       IF < THEN GO TO BADPARM1;                               <<00207>>01940000
     END;                                                      <<00207>>01944000
   GO BOUGHTIT;                                                <<00592>>01946000
                                                                        01948000
<<LISTAUX>>                                                    <<03025>>01950000
                                                               <<03025>>01952000
COMMENT SEE LISTUSL;                                           <<03025>>01954000
                                                               <<03025>>01956000
   <<LISTUSL>>                                                          01958000
                                                                        01960000
LISTUSL:                                                       <<00592>>01962000
   IF NRPARMS > 1 THEN GO ERR1;                                <<00592>>01964000
   NUM3.(15:1):=1;  <<TURN LIST ON>>                           <<00592>>01966000
   IF NRPARMS = 1 THEN                                         <<00592>>01968000
      BEGIN                                                    <<00592>>01970000
      GETIDENT(DESCRIP1,STRING2);                              <<00592>>01972000
      IF < THEN GO BADPARM1;                                   <<00592>>01974000
      END;                                                     <<00592>>01976000
   GO BOUGHTIT;                                                <<00592>>01978000
                                                                        01980000
   <<NEWSEG>>                                                           01982000
                                                                        01984000
   NEWSEG:                                                              01986000
   IF NRPARMS <> 2 THEN GO ERR1;                                        01988000
   CHECKSPECIAL(1,SEGNAME);                                    <<04285>>01990000
   CHECKDELIMITER(COMMA',1);                                   <<04101>>01992000
   GETIDENT(DESCRIP1,STRING2);                                          01994000
   IF < THEN GO BADPARM1;                                      <<02818>>01996000
   GO CEASE1;                                                           01998000
                                                                        02000000
   <<PREPARE>>                                                          02002000
                                                                        02004000
   PREPARE:                                                             02006000
   IF NRPARMS < 1 THEN GO ERR1;                                <<04101>>02008000
   CHECKSPECIAL(1,FILENAME);                                   <<04285>>02010000
   GETFILENAME(DESCRIP1,FNAME1);                                        02012000
   IF < THEN GO BADPARM1;                                               02014000
   TOS _ -1; ASSEMBLE(DUP,DDUP);                               <<00629>>02016000
   NUM1 _ TOS; NUM2 _ TOS; NUM4 _ TOS; NUM6 _ TOS;             <<00629>>02018000
   FPMAPSPECIFIED:=0;                                          <<04102>>02020000
   FOR I _ 2 UNTIL NRPARMS DO                                           02022000
      BEGIN                                                             02024000
      CHECKSPECIAL(I,ALPHANUM);                                <<04285>>02026000
      CHECKDELIMITER(SEMICOLON',I-1);                          <<04101>>02028000
      TOS _ SPECIFIED;                                                  02030000
      TOS _ 0; TOS _ DESCRIP(I); TOS _ @PREPPARMS;                      02032000
      TOS _ KEYWORD(*,*);                                               02034000
      IF < THEN                                                         02036000
         BEGIN                                                          02038000
         NFGPARM:                                                       02040000
         TOS _ I;                                                       02042000
         GO ERR2                                                        02044000
         END;                                                           02046000
      XREG := TOS;  <<PARM. NR.>>                                       02048000
      ASSEMBLE(TSBC 0,X);                                               02050000
      IF <> THEN GO NFGPARM;  <<RE-SPECIFIED PARAMETER?>>               02052000
      SPECIFIED := TOS;                                                 02054000
      CASE * XREG OF                                                    02056000
         BEGIN                                                          02058000
                                                                        02060000
         <<RL>>                                                         02062000
                                                                        02064000
         BEGIN                                                          02066000
         I _ I+1;                                                       02068000
         IF I > NRPARMS THEN                                   <<04101>>02070000
            BEGIN                                              <<04101>>02072000
               I:=I-1;                                         <<04101>>02074000
               GO TO NFGPARM;                                  <<04101>>02076000
            END;                                               <<04101>>02078000
         CHECKSPECIAL(I,FILENAME);                             <<04285>>02080000
         CHECKDELIMITER(EQUAL',I-1);                           <<04101>>02082000
         GETFILENAME(DESCRIP(I),FNAME2);                                02084000
         IF < THEN GO NFGPARM                                           02086000
         END;                                                           02088000
                                                                        02090000
         <<ZERODB>>                                                     02092000
                                                                        02094000
         NUM3.(14:1) _ 1;                                               02096000
                                                                        02098000
         <<PMAP>>                                                       02100000
                                                                        02102000
         NUM3.(15:1) _ 1;                                               02104000
                                                                        02106000
         <<MAXDATA>>                                                    02108000
                                                                        02110000
         GETNUM(NUM4);                                                  02112000
                                                                        02114000
         <<STACK>>                                                      02116000
                                                                        02118000
         GETNUM(NUM1);                                                  02120000
                                                                        02122000
         <<DL>>                                                         02124000
                                                                        02126000
         GETNUM(NUM2);                                                  02128000
                                                               <<00629>>02130000
         <<00629>>                                             <<00629>>02132000
                                                               <<00629>>02134000
         GETNUM(NUM6);                                         <<00629>>02136000
                                                               <<00629>>02138000
                                                                        02140000
         <<CAP>>                                                        02142000
                                                                        02144000
         BEGIN                                                          02146000
         TOS _ 0;  <<INIT. CAP. BIT MAP>>                               02148000
         IF I+1 > NRPARMS THEN GO NFGPARM;                     <<04101>>02150000
         CHECKDELIMITER(EQUAL',I);                             <<04101>>02152000
         NEXTCAP:                                                       02154000
         I _ I+1;                                                       02156000
         IF I > NRPARMS THEN GO PUTCAP;                                 02158000
         CHECKSPECIAL(I,ALPHANUM);                             <<04285>>02160000
         TOS _ 0; TOS _ DESCRIP(I); TOS _ @CAPS;                        02162000
         TOS _ KEYWORD(*,*);                                            02164000
         IF < THEN  <<ILLEGAL CAPABILITY>>                              02166000
            GO TO NFGPARM;                                     <<04101>>02170000
         XREG _ TOS;                                                    02172000
         ASSEMBLE(TSBC 0,X);  <<SET CAP. BIT>>                          02174000
         IF <> THEN GO NFGPARM;  <<RE-SPECIFIED CAPABILITY>>            02176000
         IF DELIMITER' = SEMICOLON' OR                         <<04101>>02178000
            DELIMITER' = CR'                                   <<04101>>02180000
            THEN GO TO PUTCAP;                                 <<04101>>02182000
         CHECKDELIMITER(COMMA',I);                             <<04101>>02184000
         GO NEXTCAP;                                                    02186000
         PUTCAP:                                                        02188000
         NUM5 _ TOS&LSR(6)  <<STORE CAP. BIT MAP>>                      02192000
         END;                                                  <<00207>>02194000
                                                               <<00207>>02196000
         << NOSYM >>                                           <<04102>>02198000
                                                               <<00207>>02200000
         NUM3.(9:1):=1;                                        <<00207>>02202000
                                                               <<00207>>02204000
         << FPMAP >>                                           <<04102>>02206000
                                                               <<04102>>02208000
         IF FPMAPSPECIFIED THEN GO NFGPARM                     <<04102>>02210000
         ELSE BEGIN                                            <<04102>>02212000
                 FPMAPSPECIFIED:=1;                            <<04102>>02214000
                 NUM3.(8:1):=1;                                <<04102>>02216000
              END;                                             <<04102>>02218000
                                                               <<04102>>02220000
         << NOFPMAP >>                                         <<04102>>02222000
                                                               <<04102>>02224000
         IF FPMAPSPECIFIED THEN GO NFGPARM                     <<04102>>02226000
         ELSE BEGIN                                            <<04102>>02228000
                 FPMAPSPECIFIED:=1;                            <<04102>>02230000
                 NUM3.(7:1):=1;                                <<04102>>02232000
              END;                                             <<04102>>02234000
                                                               <<04259>>02236000
         << CHECKSUM >>                                        <<04259>>02238000
                                                               <<04259>>02240000
         NUM3.(6:1):=1;                                        <<04259>>02242000
                                                               <<04102>>02244000
         END                                                            02246000
      END;                                                              02248000
   GO BOUGHTIT;                                                         02250000
                                                                        02252000
   <<PURGERBM>>                                                         02254000
                                                                        02256000
   COMMENT SEE COPY;                                                    02258000
                                                                        02260000
   <<PURGERL>>                                                          02262000
                                                                        02264000
   PURGERL:                                                             02266000
   NUM3 _ 8;  <<DEFAULT = ENTRY>>                                       02268000
   IF NRPARMS = 1 THEN                                                  02270000
      BEGIN                                                             02272000
      PURGERL1:                                                         02274000
      CHECKSPECIAL(NRPARMS,SEGNAME);                                    02276000
      GETIDENT(DESCRIP(NRPARMS),STRING1);                               02278000
      IF < THEN GO * BADPARM(NRPARMS);                         <<02818>>02280000
      GO BOUGHTIT                                                       02282000
      END;                                                              02284000
   IF NRPARMS = 2 THEN                                                  02286000
      BEGIN                                                             02288000
      CHECKSPECIAL(1,ALPHANUM);                                <<04295>>02290000
      CHECKDELIMITER(COMMA',1);                                <<04101>>02292000
      GETCLASS(DESCRIP1,NUM3);                                          02294000
      IF < THEN GO BADPARM1;                                            02296000
      GO PURGERL1                                                       02298000
      END;                                                              02300000
   GO ERR1;                                                             02302000
                                                                        02304000
   <<PURGESL>>                                                          02306000
                                                                        02308000
   COMMENT SEE PURGERL;                                                 02310000
                                                                        02312000
                                                               <<00207>>02314000
   <<PURGEUSL>>                                                <<00207>>02316000
                                                               <<00207>>02318000
   COMMENT: SEE PURGERL;                                       <<00207>>02320000
                                                               <<00207>>02322000
   <<REVEAL>>                                                           02324000
                                                                        02326000
   COMMENT SEE ADDRL;                                                   02328000
                                                                        02330000
   <<RL>>                                                               02332000
                                                                        02334000
   COMMENT SEE AUXUSL;                                                  02336000
                                                                        02338000
   <<SL>>                                                               02340000
                                                                        02342000
   COMMENT SEE AUXUSL;                                                  02344000
                                                                        02346000
   <<USE>>                                                              02348000
                                                                        02350000
   COMMENT SEE CEASE;                                                   02352000
                                                                        02354000
   <<USL>>                                                              02356000
                                                                        02358000
   COMMENT SEE AUXUSL;                                                  02360000
                                                                        02362000
   <<SHOW>>                                                    <<04585>>02364000
                                                               <<04585>>02366000
   SHOW:                                                       <<04585>>02368000
   IF NRPARMS <> 0 THEN GO ERR1;                               <<04585>>02370000
   NUM3.(15:1) := 1;                                           <<04585>>02372000
   GO BOUGHTIT;                                                <<04585>>02374000
                                                               <<04585>>02376000
   <<LISTPMAP>>                                                <<04585>>02378000
                                                               <<04585>>02380000
   LISTPMAP:                                                   <<04585>>02382000
   IF NRPARMS > 2 OR NRPARMS < 1 THEN GO ERR1;                 <<04585>>02384000
   CHECKSPECIAL(1,FILENAME);                                   <<04585>>02386000
   GETFILENAME(DESCRIP1,FNAME1);                               <<04585>>02388000
   IF NRPARMS = 2 THEN                                         <<04585>>02390000
      BEGIN                                                    <<04585>>02392000
         CHECKDELIMITER(SEMICOLON',1);                         <<04585>>02394000
         CHECKSPECIAL(2,SEGNAME);                              <<04585>>02396000
         GETFILENAME(DESCRIP2,FNAME2);                         <<04585>>02398000
      END;                                                     <<04585>>02400000
   NUM3.(15:1) := 1;                                           <<04585>>02402000
   GO BOUGHTIT;                                                <<04585>>02404000
                                                               <<04585>>02406000
   <<SETFPMAP>>                                                <<04585>>02408000
                                                               <<04585>>02410000
   SETFPMAP:                                                   <<04585>>02412000
   IF NRPARMS > 3 THEN GO ERR1;                                <<04585>>02414000
   SYSSPECIFIED:=0;                                            <<04585>>02416000
   SYSSESSIONSPECIFIED:=0;                                     <<04585>>02418000
   CONDPARMSPECIFIED:=0;                                       <<04585>>02420000
   ONOFFSPECIFIED:=0;                                          <<04585>>02422000
   FOR I:=1 UNTIL NRPARMS DO                                   <<04585>>02424000
      BEGIN                                                    <<04585>>02426000
         CHECKSPECIAL(I,ALPHANUM);                             <<04585>>02428000
         IF I < NRPARMS THEN CHECKDELIMITER(SEMICOLON',1);     <<04585>>02430000
         TOS:=0;                                               <<04585>>02432000
         TOS:=DESCRIP(I);                                      <<04585>>02434000
         TOS:=@SETFPMAPPARMS;                                  <<04585>>02436000
         TOS:=KEYWORD(*,*);                                    <<04585>>02438000
         IF < THEN GO NFGPARM;                                 <<04585>>02440000
         XREG:=TOS;                                            <<04585>>02442000
         CASE * XREG OF                                        <<04585>>02444000
            BEGIN                                              <<04585>>02446000
                                                               <<04585>>02448000
               <<SYSTEM>>                                      <<04585>>02450000
                                                               <<04585>>02452000
               BEGIN                                           <<04585>>02454000
                  IF SYSSESSIONSPECIFIED THEN                  <<04585>>02456000
                     GO NFGPARM;                               <<04585>>02458000
                  SYSSESSIONSPECIFIED:=1;                      <<04585>>02460000
                  SYSSPECIFIED :=1;                            <<04585>>02462000
                  NUM1:=1;                                     <<04585>>02464000
               END;                                            <<04585>>02466000
                                                               <<04585>>02468000
               <<SESSION>>                                     <<04585>>02470000
                                                               <<04585>>02472000
               BEGIN                                           <<04585>>02474000
                   IF SYSSESSIONSPECIFIED THEN                 <<04585>>02476000
                      GO NFGPARM;                              <<04585>>02478000
                   SYSSESSIONSPECIFIED:=1;                     <<04585>>02480000
               END;                                            <<04585>>02482000
                                                               <<04585>>02484000
               <<CONDITION>>                                   <<04585>>02486000
                                                               <<04585>>02488000
               BEGIN                                           <<04585>>02490000
                  IF CONDPARMSPECIFIED OR NOT SYSSPECIFIED THEN<<04585>>02492000
                      GO NFGPARM;                              <<04585>>02494000
                   CONDPARMSPECIFIED:=1;                       <<04585>>02496000
               END;                                            <<04585>>02498000
                                                               <<04585>>02500000
               <<UNCONDITION>>                                 <<04585>>02502000
                                                               <<04585>>02504000
               BEGIN                                           <<04585>>02506000
                  IF CONDPARMSPECIFIED OR NOT SYSSPECIFIED THEN<<04585>>02508000
                     GO NFGPARM;                               <<04585>>02510000
                  CONDPARMSPECIFIED:=1;                        <<04585>>02512000
                  NUM2 := 1;                                   <<04585>>02514000
               END;                                            <<04585>>02516000
                                                               <<04585>>02518000
               <<ON>>                                          <<04585>>02520000
                                                               <<04585>>02522000
               BEGIN                                           <<04585>>02524000
                  IF ONOFFSPECIFIED THEN                       <<04585>>02526000
                     GO NFGPARM;                               <<04585>>02528000
                  ONOFFSPECIFIED:=1;                           <<04585>>02530000
               END;                                            <<04585>>02532000
                                                               <<04585>>02534000
               <<OFF>>                                         <<04585>>02536000
                                                               <<04585>>02538000
               BEGIN                                           <<04585>>02540000
                  IF ONOFFSPECIFIED THEN                       <<04585>>02542000
                     GO NFGPARM;                               <<04585>>02544000
                  ONOFFSPECIFIED := 1;                         <<04585>>02546000
                  NUM4:=1;                                     <<04585>>02548000
               END;                                            <<04585>>02550000
            END;                                               <<04585>>02552000
         END;                                                  <<04585>>02554000
   GO BOUGHTIT;                                                <<04585>>02556000
                                                               <<04585>>02558000
   <<DEBUG>>                                                            02560000
                                                                        02562000
   DEBUG':                                                              02564000
   IF NRPARMS <> 0 THEN GO ERR1;                                        02566000
   IF PRIVUSER THEN DEBUG                                               02568000
   ELSE                                                                 02570000
      BEGIN                                                             02572000
      TOS:= ERR'PRIVUSER;                                               02574000
      GO NFG;                                                           02576000
      END;                                                              02578000
                                                                        02580000
   BOUGHTIT:                                                            02582000
   TOS := CCE;  <<OK CONDITION CODE>>                                   02584000
   GO GETOUT;                                                           02586000
                                                                        02588000
   ERR1: TOS := 11; GO NFG;  <<ILLEGAL NR. PARM'S>>                     02590000
                                                                        02592000
   BADPARM3: BADPARMNR := BADPARMNR+1;  <<ILLEGAL THIRD PARAMETER>>     02594000
   BADPARM2: BADPARMNR := BADPARMNR+1;  <<ILLEGAL SECOND PARAMETER>>    02596000
   BADPARM1: BADPARMNR := BADPARMNR+1;  <<ILLEGAL FIRST PARAMETER>>     02598000
   TOS := BADPARMNR;  <<PARM. NR.>>                                     02600000
                                                                        02602000
   ERR2: NERRORPARM := TOS; TOS := 12;  <<ILLEGAL PARAMETER>>           02604000
                                                                        02606000
   NFG:                                                                 02608000
   ERRORNR := TOS;  <<ERROR NR.>>                                       02610000
   NFG1:                                                       <<04101>>02612000
   TOS := CCL;  <<ERROR CONDITION CODE>>                                02614000
                                                                        02616000
   GETOUT:                                                              02618000
   CONDCODE := TOS  <<STORE CONDITION CODE>>                            02620000
   END;                                                                 02622000
$PAGE "PRINTERROR"                                             <<00207>>02624000
PROCEDURE PRINTERROR;                                                   02626000
   <<PRINTS AN ERROR MESSAGE ON THE JOB LIST DEVICE>>                   02628000
   BEGIN                                                                02630000
   XREG := ERRORNR;  <<ERROR NR.>>                                      02632000
   IF (2 <= XREG <=6) OR (10 <= XREG <= 18) THEN               <<04101>>02634000
      BEGIN                                                             02636000
      MOVE BTTY _ "*** ERROR *** ",2;                                   02638000
      IF NERRORPARM <> -1 THEN  <<NUMERIC PARAMETER?>>                  02640000
         BEGIN                                                          02642000
         TOS _ ASCII(NERRORPARM,10,BPS0);                               02644000
         TOS _ TOS+TOS                                                  02646000
         END;                                                           02648000
      PRINT(TTY,@BTTY-S0,0);  <<PRINT ERROR AND PARAMETER>>             02650000
      TOS _ @MESS;                                                      02652000
      WHILE INTEGER(BPS0) <> ERRORNR DO                                 02654000
         BEGIN                                                          02656000
         TOS _ TOS+1;                                                   02658000
         TOS _ TOS+BPS0;                                                02660000
         TOS _ TOS+1                                                    02662000
         END;                                                           02664000
      TOS _ @BTTY;                                                      02666000
      ASSEMBLE(XCH,INCA);                                               02668000
      TOS _ BPS0;                                                       02670000
      ASSEMBLE(INCB);                                                   02672000
      MOVE * _ *,(TOS),2;                                               02674000
      PRINT(TTY,@BTTY-S0,0)  <<PRINT MESSAGE>>                          02676000
      END;                                                              02678000
   XREG := XREG-1;  <<FOR XREG = 1 TEST>>                               02680000
   IF <> AND NOT INTERACTIVE THEN  <<SET ABORT BIT?>>                   02682000
      BEGIN                                                             02684000
      TOS := GETJCW;                                                    02686000
      TOS.(0:1) := 1;  <<SET ABORT BIT>>                                02688000
      SETJCW(*)                                                         02690000
      END                                                               02692000
   END;                                                                 02694000
$PAGE "OUTER BLOCK"                                            <<00207>>02696000
<<* * * INITIALIZE GLOBAL PARAMETERS * * *>>                            02698000
                                                                        02700000
TOS := 0;                                                               02702000
TOS := 0D;                                                              02704000
WHO(S0,DS2);                                                            02706000
DUPLICATIVE := S0.(14:1);  <<DUPLICATIVE BIT>>                          02708000
INTERACTIVE := TOS;  <<INTERACTIVE BIT>>                                02710000
PRIVUSER := TOS.(9:1); DEL;                                             02712000
INHIBITFILEEQ := NOT PARM.(14:1);  <<INHIBIT FILE EQUATION BIT>>        02714000
RUNNER:=PARM;                                                  <<04586>>02716000
PRINT(MSG1,-59,0);  <<"SEGMENTER SUBSYSTEM">>                           02718000
IF < THEN  <<ERROR?>>                                                   02720000
   BEGIN                                                                02722000
   ERRORNR := 16;  <<ERROR NR.>>                                        02724000
   GO PRINTIT                                                           02726000
   END;                                                                 02728000
                                                                        02730000
OB:                                                                     02732000
READCOMMAND;  <<PARSE COMMAND LINE>>                                    02734000
IF < THEN  <<SYNTAX ERROR?>>                                            02736000
   BEGIN                                                                02738000
   PRINTIT:                                                             02740000
   PRINTERROR;  <<PRINT ERROR MESSAGE>>                                 02742000
   GO OB  <<NEXT COMMAND>>                                              02744000
   END;                                                                 02746000
SEGMENTER(PIN,COMMANDNR,ERRORNR,NUM1,NUM2,NUM3,NUM4,NUM5,               02748000
   NUM6,STRING1,STRING2,FNAME1,FNAME2); <<SEND COMMAND>>       <<00629>>02750000
IF > THEN  <<NON-FATAL ERROR?>>                                         02752000
   BEGIN                                                                02754000
   GO PRINTIT                                                           02756000
   END;                                                                 02758000
IF < THEN  <<FATAL ERROR?>>                                             02760000
   BEGIN                                                                02762000
   PRINTERROR;  <<PRINT ERROR MESSAGE>>                                 02764000
   GO FINISHED                                                          02766000
   END;                                                                 02768000
IF COMMANDNR = 8 THEN GO FINISHED;  <<EXIT COMMAND?>>                   02770000
GO OB;  <<NEXT COMMAND>>                                                02772000
                                                                        02774000
FINISHED:                                                               02776000
end.                                                           <<02821>>02778000
