*
*        THIS PROGRAM DESIGNED TO BE RUN
*        AS A GHOST PROVIDES THE OPERATOR
*        WITH KNOWLEDGE OF HIS USERS HERETOFORE
*        UNAVAILABLE IN UTS.  THE VALUES
*        DISPLAYED FOR EACH USER ARE:
*        USER     INTERNAL USER NUMBER
*        ACCOUNT  LOGGED ON ACCOUNT
*        NAME     LOGGED ON NAME
*        TIME USED CPU TIME USED THUS FAR
*        TIME LEFT TIME REMAINING TO A BATCH JOB
*                  BEFORE IT WILL BE ABORTED FOR
*                  MAX TIME
*        LINE/SYSID LINE NUMBER FOR ON-LINE USERS,
*                   SYSID FOR BATCH USERS
*        TYPE     USER TYPE
*        MEAN SIZE  AVERAGE SIZE THROUGHOUT THE JOB
*        MAX USER   MAX SIZE USED COMPARED AGAINST
*                   THE !LIMIT CARD
*        CURR SIZE  USER'S CURRENT ACTUAL SIZE (UB:PCT)
*        I/O INTENSITY  NUMBER OF I/O OPERATIONS
*                       DIVIDED BY THE TOTAL CPU TIME USED
*
*
*        THIS PROGRAM USES A SERIES OF GENERALIZED
*        ROUTINES WHICH MAKES THE ADDITION OF MORE
*        DISPLAYS TRIVIAL.
*
*
*************** W A R N I N G ***************
*
*        THIS PROGRAM WILL NOT RUN ON DISC-
*        SWAPPING SYSTEMS.  THE ROUTINE PHYS%TO%REL
*        MUST BE MODIFIED TO ACCOMMODATE THEM.
*
*********************************************
*
*        THE GENERAL OUTLINE OF ACTIVITY IS TO
*        LOCATE THE JIT OF EACH ACTIVE USER,
*        MOVE IT TO THE BUFFER CALLED "PAGE",
*        AND PRINT THE APPROPRIATE STUFF
*
*        THE PROGRAM MUST BE RUN WITH PRIV='C0'
*        AS IT MAKES LAVISH USE OF THE M:SYS CAL
*
         PAGE
         SYSTEM   BPM
         SYSTEM    UTS
         SYSTEM   SIG7FDP
CHECKOUT SET      0
CPV      EQU      1
         REF      M:LO,M:LL         ** M:LL TEMP FOR AP **
         REF      SMUIS,NEWQ
         REF      UB:SWAPI,MB:GPT,UH:JIT,MB:GAM5,;
                  MB:SDI,J:ACCN,J:JIT,J:UNAME
         REF      UH:FLG,UX:JIT
         REF      UB:US
         REF      JB:PNR,M:UC,J:MRT,J:UTIME,J:PTIME
         DO       CPV
         SREF     UB:C#
         REF      S:DP
         REF      DCT22
         REF      NSPC
         REF      UH:AJIT
         REF,1    JB:MAX,JB:CUR
         ELSE
         REF,1    JB:C9T,JB:M9T,JB:CSP,JB:MSP
         FIN
         REF      UB:PCT,JB:VLH,DCACCESS,DPACCESS,TPACCESS
         REF      SB:GJOBUN,S:GJOBTBL,MAXG
         SPACE    5
TICS%PER%SEC EQU  500
TICS%PER%MIN EQU  30000
BTD      EQU      0
Z        EQU      0
X1       EQU      1
USR      EQU      2
CNT      EQU      3
X4       EQU      4
X5       EQU      5
X6       EQU      6
X7       EQU      7
BUF      EQU      8
SIZE     EQU      9
LINK     EQU      11
DA0      EQU      12
DA1      EQU      13
DA2      EQU      14
DA3      EQU      15
LIST     TEXT     '0123456789ABCDEF'
         SPACE    5
ENTER    CNAME
         PROC
         LCI      5
         PSM,X1   STACK
         PSW,LINK STACK
         PEND
RETURN   CNAME    1
RETURNTO CNAME    2
         PROC
LF(1)    PLW,LINK STACK
         LCI      5
         PLM,X1   STACK
         DO       NAME=1
         B        *LINK
         ELSE
         B        AF(1)
         FIN
         PEND
         SPACE    5
HEX      EQU      0               PROC FOR GENERATING
TEXT     EQU      1                TABLES OF ACTIONS AND
DEC      EQU      2                 TABS. IF THE ACTION IS
TYPETAB  CSECT    1                  A LOAD, THE TYPE OF VARIABLE
OPTAB    CSECT    1                   IS SUPPLIED IN ANOTHER TABLE
TABTAB   CSECT    1
LOP      CNAME    1
BOP      CNAME    2
         PROC
A        SET      %
         USECT    OPTAB
         DO       NAME=1
         LI,X6    AF(1)
         ELSE
         DO       NAME=2
         B        AF(1)
         FIN
         FIN
TABMAX   SET      %-OPTAB
         USECT    TABTAB
         DATA,1   AF(2)
         USECT    TYPETAB
         DATA,1   AF(3)
         USECT    A
         PEND
         SPACE    5
         LOP      USR,2,HEX
         BOP      PRINT%ACN,11
         BOP      PRINT%NAME,24
         BOP      TIME%USED,27
         BOP      TIME%LEFT,34
         BOP      PRINT%LINE,41
         BOP      PRINT%TYPE,44
         BOP      MEAN%SIZE,49
         BOP      MAX%SIZE,54
         BOP      CURRENT%SIZE,59
         BOP      IO%RATE,64
         BOP      PRINT%9T,67
         BOP      PRINT%SP,70
         SPACE    5
         CSECT    0
NEWQARG  EQU      %
         DATA     X'E00A00'
         DATA     BA(PAGE)
         DATA     X'800'
SEEK     DATA     0
EA       DATA     0
EAI      DATA     0
         SPACE    5
VIR%PAGE EQU      %
         DATA     0
PATCH    EQU      %
         RES      10
TIME     DATA     0
LINE%PTR DATA     0
LINE     RES      30
TEN      DATA     10
         BOUND    8
ACCUM%SAVE DATA   X'40404040',X'40404040'
ACCUM    DATA     0,0,0
         BOUND    8
STACK    EQU      %               BIG STACK FOR FUTURE
         DATA     %+1              EXPANSION
         DATA     X'320000'
         RES      X'32'
         SPACE    5
         BOUND    8
PAGE     RES      512             BUFFER TO HOLD JITS
         DO       CHECKOUT=0
PD       SET      PAGE-J:JIT      USE YOUR OWN JIT
         ELSE                      FOR CHECKOUT OF
PD       SET      0                 FORMAT ROUTINES
         FIN
         PAGE
         CSECT    1
         DEF      START
START    EQU      %               THIS CODE IS INITIALIZATION,
         LC       J:JIT
         BCR,4    NOTGHST
         M:MESSAGE (MESS,ISPY)      TELL OPERATOR WE ARE ON
         DO       CPV=0             OUTPUT BANNER IF NOT CPV
         LI,7     30
         LW,8     ='    '
         STW,8    LINE-1,7
         BDR,7    %-1
         LW,7     J:JIT             GET MY ID
         SLS,7    16
         LI,5     -4
         LI,6     0
         SLD,6    4
         LB,8     LIST,6
         STB,8    LINE+1,5
         BIR,5    %-4
         LI,8     ':'               FANCY IT UP A LITTLE
         STB,8    LINE+1
         LCI      2
         LM,8     SPYMSG
         STM,8    LINE+2
         M:TIME   LINE+5            SET TIME/DATE INTO BUFFER
         LI,7     20
         LI,LINK  80
         STW,LINK LINE%PTR
         BAL,LINK WRITE%LINE
         LI,BUF   SPACE
         BAL,LINK MESSAGE
         BDR,7    %-5
         LI,LINK  80
         STW,LINK LINE%PTR
         BAL,LINK WRITE%LINE
         FIN
NOTGHST  EQU      %
         M:GP     1                ASCERTAINING THE ADDRESS
         M:FP     1                 OF A FREE PAGE, FORCING
         STW,9    VIR%PAGE
         M:DEVICE M:LO,(PAGE)
         LI,BUF   HEADER
         BAL,LINK MESSAGE
         LI,BUF   HEADER1
         BAL,LINK MESSAGE
         LI,USR   0
         SPACE    5
PRINT%USR EQU     %
         LI,Z     0
         STW,Z    LINE%PTR        THIS IS THE MAIN DRIVER
         AI,USR   1                ROUTINE WHICH CYCLES
         CI,USR   SMUIS             THROUGH ALL USERS ON
         BG       ALL%DONE            THE SYSTEM, PRINTING
         DO       CHECKOUT=0           JIT INFORMATION SELECTED
         BAL,LINK GET%JIT               BY THE BOP/LOP TABLES
         FIN
         LI,CNT   0               USR: THE REGISTER CONTAINING
P1       EQU      %                     THE USER NUMBER
         BAL,LINK GET%VAL         CNT: THE REGISTER CONTAINING
         AI,CNT   1                     THE ITEM NUMBER TO BE
         CI,CNT   TABMAX                 PRINTED NEXT
         BL       P1
         BAL,LINK WRITE%LINE
         B        PRINT%USR
         SPACE    5
ALL%DONE EQU      %               EXIT ROUTINE DOING NOTHING
         LC       J:JIT
         BCR,4    %+2
         CAL1,9   6                 PRINT IF GHOST
         M:EXIT
         SPACE    5
WRITE%LINE EQU    %               GENERAL WRITE ROUTINE
         LI,BUF   LINE             USING THE OBVIOUS REGISTERS
         LW,SIZE  LINE%PTR
         LI,BTD   0
WRITE    M:WRITE  M:LO,(BUF,*BUF),(SIZE,*SIZE),(BTD,*BTD)
         LI,SIZE  0
         STW,SIZE LINE%PTR
         B        *LINK
         SPACE    5
MESSAGE  EQU      %               PRINTS A MESSAGE ON M:LO
         LB,SIZE  *BUF
         LI,BTD   1               IN:  BUF CONTAINS MESSAGE ADDRESS
         EXU      WRITE
         B        *LINK
         SPACE    5
GET%JIT  EQU      %               ONE WAY OR ANOTHER,
         ENTER                     THIS ROUTINE RETURNS
         BAL,LINK PHYS%TO%REL       TO THE CALLER (VIA LINK)
         B        RETURNX            WITH THE JIT IN THE
         STW,DA0  SEEK                BUFFER "PAGE"
         LI,X6    3
         STB,X7   NEWQARG,X6      IF THE USER IS IN CORE
         LCI      6                HIS JIT IS MOVED TO PAGE;
         LM,12    NEWQARG           OTHERWISE, IT IS READ
         BAL,LINK  NEWQ              IN FROM THE SWAP DEVICE
         NOP
         BAL,Z    SL1
G1       EQU      %
         RETURN
         SPACE    5
RETURNX  EQU      %
         BAL,Z    SL1
         RETURNTO PRINT%USR
         SPACE    5
PHYS%TO%REL EQU   %
         M:SYS
         CI,10    NEWQ            THIS ROUTINE DETERMINES
*                                    WHETHER OR NOT THIS
         BNE      NOT%HERE          USER SHOULD BE OUTPUT
         LB,X6    UB:US,USR
         BEZ      *LINK           IF HIS STATE IS NON-ZERO
         SREF     SNULL             NULL STATE FOR CP-V B00
         CI,X6    SNULL
         BE       *LINK
         AI,LINK  1                AND HIS JIT IN CORE,
         LH,X6    UH:FLG,USR        THEN HIS JIT IS MOVED
         CI,X6    X'200'             TO PAGE VIA MOVE%IT%IN
         BANZ     MOVE%IT%IN
READ%JIT%IN EQU   %
*
* THIS CODE ADDED TO HANDLE BOTH RAD SWAPPER
*  AND PACK SWAPPER SYSTEMS.
* P.GOODWIN 3-17-75 (HAPPY ST. PATRICK'S DAY)
*
         MTW,0    S:DP              TEST FOR PACK SWAP
         BEZ      RD%SWP            ZERO IF NOT
*
* THIS CODE IS FOR A PACK SWAPPER SYSTEM
*
PK%SWP   EQU      %
         LB,X5    UB:SWAPI,USR      CALCULATE . . .
         LB,X5    MB:SDI,X5           THE #SECTS/CYL
         LB,X5    DCT22,X5
         LW,X5    NSPC,X5
         LB,X7    UB:C#,USR         GET USERS CYL #
         LI,X6    0                 CALCULATE SECT ADDRESS
         MW,X6    X5
         AI,X7    2
         CI,USR   2                 TEST FOR ALLOCAT
         BNE      %+2                IT HAS WEIRD QUALITIES
         AI,X7    4
         LW,DA0   X7                MOVE TO DA0
         LB,X6    UB:SWAPI,USR      SWAP DEV. DCT INDEX
         LB,X7    MB:SDI,X6         SWAP DEV. DCT
         STH,X7   DA0               MERGE INTO DCT
         B        *LINK             RETURN
*
* FOLLOWING CODE IS FOR RAD SWAPPER SYSTEM
*
RD%SWP   EQU      %
         LB,X6    UB:SWAPI,USR    OTHERWISE, THE ADDRESS OF
         LB,X5    MB:GPT,X6        HIS JIT IS CALCULATED FROM
         SLS,X5   1                 UH:JIT AND CONTROL
         LI,DA1   0                  RETURNED TO THE GET%JIT
         LH,DA0   UH:JIT,USR           ROUTINE  TO READ IT IN
         LB,X7    MB:GAM5,X6
         AND,X7   =X'7F'          OBVIOUSLY, THIS WILL NOT
         OR,X7    =X'100'          WORK FOR DISC-SWAPPING
         S,DA0    *X7               SYSTEMS, AND THE LOGIC TO
         MW,X5    DA0                SUPPORT THEM MUST BE ADDED
         EOR,X7   =X'37F'              HERE. SORRY ABOUT THAT.
         AI,X7    1
         S,DA1    *X7
         AW,X5    DA1
         LW,DA0   X5
         LB,X7    MB:SDI,X6
         STH,X7   DA0
         B        *LINK
         SPACE    5
NOT%HERE EQU      %               HERE IF THE MONITOR ISN'T
         BAL,Z    SL1              WHAT WE EXPECT
         LI,BUF   NOT%HERE%MSG
         BAL,LINK MESSAGE
         M:XXX
NOT%HERE%MSG TEXTC 'PROGRAM DOES NOT MATCH SYSTEM',;
                   ', RELOAD WITH MONSTK OR J1'
         SPACE    5
GET%VAL  EQU      %               DRIVER FOR THE TABLE ROUTINES
         ENTER
         LB,X5    TABTAB,CNT
         BAL,LINK SPACES
         EXU      OPTAB,CNT
         LB,X7    TYPETAB,CNT
         BAL,LINK CONVERT,X7
         RETURN
         SPACE    5
MOVE%IT%IN EQU    %               MOVE A USER'S JIT WHICH
         LOAD,X7  UX:JIT,USR       IS IN CORE TO THE
         LW,X6    VIR%PAGE          BUFER PAGE BY MAPPING
         BAL,Z    SL1                ONTO HIS JIT, THEN
         SLS,X7   9                    USING MBS TO MOVE
         M:FVP    *VIR%PAGE            TO PAGE.
         M:CVM    *X7,*X6
         SLS,X6   2               CAUTION IS REQUIRED HERE
         LW,X7    =X'FF000000'+BA(PAGE)  WHEN ADDING ADDITIONAL
         LI,8     8                 MOVE ALL JIT IN
         MBS,X6   0                 DISPLAYS, AS ONLY 1/4
         MTB,-1   X7
         BDR,8    %-2
         LI,Z     8
         STB,Z    X7                MOVE LAST 8 BYTES
         MBS,X6   0
         M:SYS                     GET MASTER MODE
         LH,X6    UH:FLG,USR
         CI,X6    X'200'
         BAZ      READ%JIT%IN       WE FAILED TO MOVE IT IN TIME
         BAL,Z    SL1
         B        G1                   HERE
         SPACE    5
SL1      EQU      %               RETURN TO MASTER CALLER SLAVE
         LPSD,0   SL2              NOTE USES Z AS LINK
         B        *Z
         BOUND    8
SL2      GEN,12,20 X'C',SL1+1
         DATA     0
         SPACE    5
*
PRINT%ACN EQU     %
         LI,LINK  G1
         LI,X5    8
         LI,X6    J:ACCN+PD
         SLS,X6   2                 BA(J:ACCN+PD)
         B        CT1
         SPACE    5
PRINT%NAME EQU    %               PRINT HIS NAME OR
         LW,X6    J:UNAME+PD       THE NAME OF THE GHOST
         BEZ      PN2               JOB GOING MASTER MODE
         CW,X6    ACCUM%SAVE         TO PICK UP THE ENTRY
         BE       RETURNX+1           IN S:GJOBTBL
PN1      EQU      %
         LI,X5    12
         LI,X6    J:UNAME+PD
         SLS,X6   2                 BA(J:UNAME+PD)
         LI,LINK  G1
         B        CT1
PN2      EQU      %
         LC       J:JIT+PD
         BCR,4    RETURNX+1
         LI,X5    MAXG
         M:SYS
         CB,USR   SB:GJOBUN,X5
         BE       %+2
         BDR,X5   %-2
         LD,X6    S:GJOBTBL,X5
         SLD,X6   8
         AI,X7    X'40'
         STW,X6   J:UNAME+PD
         STW,X7   J:UNAME+PD+1
         LW,X6    ACCUM%SAVE
         STW,X6   J:UNAME+PD+2
         LI,Z     PN1
         B        SL1
         SPACE    5
PRINT%LINE EQU    %               PRINT LINE NUMBER
         LC       J:JIT+PD         FOR ON LINE OR SYSID
         BCS,8    LINE1             FOR BATCH. GHOST
         BCS,4    G1                 GETS NOTHING
         LI,DA1   X'1FFFF'
         LS,DA1   J:JIT+PD
         B        PL1
LINE1    EQU      %
         LI,DA1   X'FF'
         LS,DA1   M:UC+1+PD
PL1      EQU      %
         LI,X6    DA1
         LI,LINK  G1
         B        CONVERT%HEX
         SPACE    5
*
*        MOST OF THE FOLLOWING ROUTINES
*        YOU CAN GET FROM THE TITLE.
*        ONLY THE INTERESTING
*        REGISTERS ARE COMMENTED ON.
*
         SPACE    5
TIME%LEFT EQU     %
         LC       J:JIT+PD
         BCS,12   G1                PRINT ONLY IF BATCH
         LW,DA1   J:MRT+PD
         B        MIN%SEC
         SPACE    5
TIME%USED EQU     %
         LW,DA1   J:UTIME+PD
         AW,DA1   J:UTIME+1+PD
         AW,DA1   J:PTIME+PD
         AW,DA1   J:PTIME+1+PD
         STW,DA1  TIME
         B        MIN%SEC
         SPACE    5
MIN%SEC  EQU      %               IN:  DA1 CONTAINS THE
         LI,DA0   0                    VALUE IN TICS TO BE TRANSLATED
         DW,DA0   =TICS%PER%MIN
         LI,X6    DA1
         BAL,LINK CONVERT%DEC
         LW,DA1   DA0
         AI,DA1   TICS%PER%SEC/2
         LI,DA0   0
         DW,DA0   =TICS%PER%SEC
         LI,DA0   0
         DW,DA0   TEN
         AI,DA0   '0'
         AI,DA1   ':0'
         SLS,DA1  8
         OR,DA1   DA0
         LW,X7    LINE%PTR
         AI,X7    BA(LINE)
         LI,X6    3
         STB,X6   X7
         AWM,X6   LINE%PTR
         LI,X6    DA1*4+1
         MBS,X6   0
         RETURN
         SPACE    5
PRINT%TYPE EQU    %
         LC       J:JIT+PD
         LI,X6    BATCH
         BCR,8    %+3
         LI,X6    ON%LINE
         B        %+3
         BCR,4    %+2
         LI,X6    GHOST
         LI,LINK  G1
         B        CONVERT%TEXT
*
ON%LINE  TEXTC    'OL'
BATCH    TEXTC    'BA'
GHOST    TEXTC    'GH'
         SPACE    5
MEAN%SIZE EQU     %               CORE*TIME/TIME
         LW,DA1   J:PTIME+2+PD     CALCULATION WITH A
         AW,DA1   J:UTIME+2+PD      DECIMAL RESULT
         BLEZ     G1
         LW,DA2   TIME
         LI,DA0   0
         DW,DA0   DA2
MEAN1    EQU      %
         LI,LINK  G1
         LI,X6    DA1
         B        CONVERT%DEC
         SPACE    5
MAX%SIZE EQU      %               JB:PEAK, IF YOU HADN'T GUESSED
         LI,X5    1
         LB,DA1   JB:VLH+PD,X5
         B        MEAN1
         SPACE    5
CURRENT%SIZE EQU  %
         M:SYS
         LB,DA1   UB:PCT,USR
         BAL,Z    SL1
         B        MEAN1
         SPACE    5
IO%RATE  EQU      %               CPU TIME/ACCESSES
         LI,DA3   X'1FFFF'         BOTH TAPE AND DISC TO
         LS,DA3   J:JIT+DCACCESS+PD  PRODUCE MILLISECONDS
         LI,DA2   X'1FFFF'
         AND,DA2  J:JIT+DPACCESS+PD
         AW,DA3   DA2               ADD IN PACK ACCESSES
         AW,DA3   J:JIT+TPACCESS+PD  BETWEEN I/O OPERATIONS
         AND,DA3  =X'1FFFF'
         LI,DA0   0
         LW,DA1   TIME
         AW,DA1   TIME              (TIME IS TICS)
         DW,DA0   DA3
         B        MEAN1
         SPACE    5
PRINT%9T EQU      %
         DO       CPV
         LI,X5    JB:CUR+PD+PD+PD+PD+2   INDEX TO CURRENT 9T
         ELSE
         LI,X5    JB:C9T+PD+PD+PD+PD
         FIN
         LB,DA1   0,X5              GET CURRENT 9T
         LC       J:JIT+PD
         BCS,12   MEAN1             USE CURRENT IF GHOST/ON-LINE
         DO       CPV
         LI,X5    JB:MAX+PD+PD+PD+PD+2   IDEX TO MAX 9T
         ELSE
         LI,X5    JB:M9T+PD+PD+PD+PD
         FIN
         LB,DA0   0,X5              GET MAX 9T
         AND,DA0  =X'7F'            MAY HAVE EXTRA BIT
         CW,DA1   DA0               CURRENT : MAX
         BGE      MEAN1             USE CURRENT IF > MAX
         LW,DA1   DA0               ELSE USE MAX
         B        MEAN1
         SPACE    5
PRINT%SP EQU      %
         DO       CPV
         LI,X5    JB:CUR+PD+PD+PD+PD+4   INDEX TO CURRENT SP
         ELSE
         LI,X5    JB:CSP+PD+PD+PD+PD
         FIN
         LB,DA1   0,X5              GET CURRENT SP
         LC       J:JIT+PD
         BCS,12   MEAN1             USE CURRENT IF GHOST/ON-LINE
         DO       CPV
         LI,X5    JB:MAX+PD+PD+PD+PD+4  INDEX TO MAX SP
         ELSE
         LI,X5    JB:MSP+PD+PD+PD+PD
         FIN
         LB,DA0   0,X5
         AND,DA0  =X'7F'            MAY HAVE EXTRA BIT
         CW,DA1   DA0               CURRENT : MAX
         BGE      MEAN1             USE CURRENT IF > MAX
         LW,DA1   DA0               ELSE USE MAX
         B        MEAN1
         SPACE    5
*
CONVERT  EQU      %
         B        CONVERT%HEX
         B        CONVERT%TEXT
         B        CONVERT%DEC
         SPACE    5
*
CONVERT%HEX EQU   %               MAIN HEX TRANSLATE
         LD,X4    ACCUM%SAVE       ROUTINE WHICH RIGHT-JUSTIFYS
         STD,X4   ACCUM             THE RESULT SUPPRESSING
         LI,Z     0                  LEADING ZEROS
         LW,X7    *X6
         LI,X5    -8              IN:  X6 CONTAINS THE ADDRESS
         B        C2                   OF THE WORD TO BE TRANSLATED
C1       EQU      %
         BIR,X5   C2              USE: Z CONTAINS BOTH THE
         LI,X6    BA(ACCUM+2)          CHARACTER COUNT AND
         LI,X5    X'FF'                CONDITION CODES, PREVENTING
         LS,X5    Z                    PRINTING LEADING ZEROS
         BNEZ     C15
         LI,X5    1
         LI,Z     X'F0'
         STW,Z    ACCUM+1
C15      EQU      %
         SW,X6    X5
         B        CT1
C2       EQU      %
         LI,X6    0
         SCD,X6   4
         LC       Z
         BNEZ     C3
         LW,X6    X6
         BEZ      C1
         STCF     Z
C3       EQU      %
         LB,X6    LIST,X6
         MTW,1    Z
         STB,X6   ACCUM+2,X5
         AI,X4    1
         B        C1
         SPACE    5
CONVERT%TEXT EQU  %               IN:  X6 CONTRINS THE ADDRESS
         LB,X5    *X6                  OF THE TEXTC LINE TO BE
         SLS,X6   2                    ADDED TO THE BUFFER.
         AI,X6    1                    IN THE CASE OF ENTRY
CT1      EQU      %                    AT CT1, X6 HAS THE STRING
         LI,X7    BA(LINE)             BYTE ADDRESS AND X5 THE
         AW,X7    LINE%PTR             COUNT OF THE STRRING
         SW,X7    X5
         STB,X5   X7
         MBS,X6  0
         B        *LINK
         SPACE    5
CONVERT%DEC EQU   %               IN:  AGAIN, X6 CONTAINS THE
         ENTER                         ADDRESS OF THE WORD
         LD,X4    ACCUM%SAVE           TO BE TRANSLATED TO
         STD,X4   ACCUM                DECIMAL, SUPPRESSING
         LI,X5    0                    LEADING ZEROS
         LI,X4    BA(ACCUM)+7
         LW,X7    0,X6
CD1      EQU      %
         LI,X6    0
         DW,X6    TEN
         AI,X6    X'F0'
         STB,X6   0,X4
         AI,X5    1
         CI,X7    0
         BE       CD2
         BDR,X4   CD1
CD2      EQU      %
         LW,X6    X4
         BAL,LINK CT1
         RETURN
         SPACE    5
SPACES   EQU      %               IN:  AGAIN, X5 CONTAINS THE
         SW,X5    LINE%PTR             TAB TO WHICH TO SPACE
         LI,X1    BA(LINE)             AND TO WHICH THE OTHER
         AW,X1    LINE%PTR             ROUTINES RIGHT-JUSTIFY
         STB,X5   X1
         MBS,Z    BA(ACCUM%SAVE)
         AWM,X5   LINE%PTR
         B        *LINK
         SPACE    5
         DO       0
HEADER   TEXTC    '   USER    ACCOUNT  NAME          ',;
                  'TIME USED  TIME LEFT LINE/    TYPE',;
                  '  MEAN   MAX  CURR   I/O'
HEADER1  TEXTC    '                                   ',;
                  'MIN SEC    MIN SEC  SYSID',;
                  '          SIZE  USER  SIZE INTENSITY'
         FIN
HEADER   TEXTC    ' # ACCOUNT  NAME          TIME   TIM',;
                  'E ID/    MEAN  MAX CURR   MS 9T SP'
HEADER1  TEXTC    '                          USED   LEF',;
                  'T LINE   SIZE USER SIZE  I/O        '
ISPY     TEXTC    'I SPY!!'
         DO       CPV=0
SPACE    TEXTC    ' '
SPYMSG   TEXT     'SPY,:SYS'
         FIN
         END      START
