         PCC      0
         SYSTEM   BPM
         SYSTEM   SIG9
         TITLE    'PRINTFPT - Print FILL FPT for DMPQ/RESQ'
*
*        REFs and DEFs
*
         DEF      FPT:P
         DEF      FPT:D
         DEF      PRINTFPT
         DEF      PRINTHDR
         DEF      DIDHDR
*
         REF      FID               Word containing TEXTC filename
         REF      FILLFPT           FPT to be printed
         REF      J:TCB
         REF      M:LO
*
*
*        Register EQUates
*
R1       EQU      1
R2       EQU      2
R3       EQU      3
R4       EQU      4
R5       EQU      5
R6       EQU      6
R7       EQU      7
R8       EQU      8
R9       EQU      9
R10      EQU      10
R11      EQU      11
R12      EQU      12
R13      EQU      13
R14      EQU      14
R15      EQU      15
SR1      EQU      R8
SR2      EQU      R9
SR3      EQU      R10
SR4      EQU      R11
         PAGE
*
*        PROCS
*
TEXTCR   CNAME
         PROC
         BOUND    4
LF       EQU      %
         DISP     %
         LIST     0
         DATA,1   S:NUMC(S:UT(AF))+1,S:UT(AF),X'0D'
         BOUND    4
         LIST     1
         PEND
         SPACE    2
FIELD    CNAME
         PROC
         LOCAL    I
I        DO       5
         DATA     AF(I)
         FIN
         PEND
         PAGE
***********************************************************************
*                                                                     *
*     FPT contains a set of subroutines used by DMPQ and RESQ to      *
*     format and print the FPT involved in filling a file back        *
*     into the symbiont queues.  It may be used by programs           *
*     written by your friendly neighborhood field analyst or          *
*     systems programmer if you want to try using Spill/Fill          *
*     yourself (see the cautions in the DMPQ or RESQ source           *
*     listings!)  The code herein is pretty straightforwards.         *
*                                                                     *
***********************************************************************
         PAGE
FPT:P    CSECT    1
PRINTHDR RES
         MTW,1    DIDHDR
         BGZ      *R15
         M:DEVICE M:LO,(VFC)
         M:WRITE  M:LO,(BUF,HEADER),(SIZE,HDRSIZE),(WAIT)
         M:DEVICE M:LO,(NOVFC)
         M:WRITE  M:LO,(BUF,BLANK),(SIZE,4)
         B        *R15
         PAGE
PRINTFPT RES
         PSW,R15  *J:TCB
         LW,R1    L('    ')
         LI,R2    30
         STW,R1   OUTBUF-1,R2
         BDR,R2   %-1
         LI,R1    0
         LI,R2    BA(OUTBUF)+1
FMTLOOP  LCI      5
         LM,R3    FIELDS,R1
         AI,R1    5
         CI,R3    0
         BE       PRINTREP
         LCI      3
         PSM,R1   *J:TCB
         CI,R4    0
         BE       ENDFMT
         LW,R11   *R4
         SLS,R11  0,R5
         SLS,R11  0,R6
         AW,R2    R3
         B        %,7
         B        CHARVAL
         B        DECVAL
         B        HEXVAL
         B        PROCPRIO
         B        PROCDEV
         B        PROCGRAN
*
*        Convert character value
*
CHARVAL  RES
         CI,R11   0
         BNE      %+2
         LW,R11   L('    ')
CHARLOOP  AI,R2   -1
         STB,R11  0,R2
         SLS,R11  -8
         BDR,R3   CHARLOOP
         B        ENDFMT
*
*        Convert decimal value
*
DECVAL   RES
DECLOOP  MI,R10   1
         DW,R10   L(10)
         AI,R10   C'0'
         AI,R2    -1
         STB,R10  0,R2
         CI,R11   0
         BE       %+2
         BDR,R3   DECLOOP
         B        ENDFMT
*
*        Convert hex value
*
HEXVAL   RES
HEXLOOP  LI,R10   0
         SCD,R10  -4
         SLS,R10  -28
         AI,R10   C'0'
         CI,R10   C'9'
         BLE      %+2
         AI,R10   C'A'-C'9'-1
         AI,R2    -1
         STB,R10  0,R2
         CI,R11   0
         BE       ENDFMT
         BDR,R3   HEXLOOP
         B        ENDFMT
*
*        Process special field for priority
*
PROCPRIO SW,R2    R3
         MI,R11   8
         AI,R11   BA(PRIOLIST)
         LW,R3    R11
         XW,R2    R3
         OR,R3    L(5**24)
         MBS,R2   0
         B        ENDFMT
*
*        Process DEV field
*
PROCDEV  CI,R11   'AA'              Is it big enough to be character?
         BGE      CHARVAL           If so treat it as such
         B        HEXVAL            If not print it in hex
*
*        Process GRAN field
*
PROCGRAN LW,R10   PRIO
         CI,R10   X'22'             Is it a NCTL file?
         BNE      DECVAL            If not it's correct - print it
         AI,R11   1                 NTCL granule counts are really
         SLS,R11  -1                  sectors (half-granules)
         B        DECVAL                so compensate & print
         SPACE    3
ENDFMT   LCI      3
         PLM,R1   *J:TCB
         AW,R2    R3
         AI,R2    4                 Skip a few spaces
         B        FMTLOOP
         SPACE    3
PRINTREP M:WRITE  M:LO,(BUF,OUTBUF),(SIZE,120),(WAIT)
         PLW,R15  *J:TCB
         B        *R15
         PAGE
FPT:D    CSECT    0
DEV      EQU      FILLFPT+3
RBID     EQU      FILLFPT+4
COPIES   EQU      FILLFPT+7
RBFLAGS  EQU      FILLFPT+8
FORM     EQU      FILLFPT+9
PRIO     EQU      FILLFPT+10
SYSID    EQU      FILLFPT+13
GRANS    EQU      FILLFPT+13
*
*
CHAR     EQU      1
DEC      EQU      2
HEX      EQU      3
SPEC1    EQU      4
SPEC2    EQU      5
SPEC3    EQU      6
HEADER   TEXT     'BFILE#   SYSID     PRIO    RBID    GRANS   DEV',;
                  '    FORM    CPY    FLGS/TYP'
HDRSIZE  EQU      BA(%)-BA(HEADER)
BLANK    TEXT     '    '
TRSPACE  TEXT     'B   '
OUTBUF   RES      30
DIDHDR   DATA     -1
FIELDS   RES
         FIELD    3,FID,8,-8,CHAR
         FIELD    5,SYSID,16,-16,HEX
         FIELD    5,PRIO,,,SPEC1
         FIELD    4,RBID,,,DEC
         FIELD    5,GRANS,,-16,SPEC3
         FIELD    2,DEV,,,SPEC2
         FIELD    4,FORM,,,CHAR
         FIELD    3,COPIES,,,DEC
         FIELD    8,RBFLAGS,,,HEX
         FIELD    0
*
*
PRIOLIST TEXT     ' IN 0'
         TEXT     ' IN 1'
         TEXT     ' IN 2'
         TEXT     ' IN 3'
         TEXT     ' IN 4'
         TEXT     ' IN 5'
         TEXT     ' IN 6'
         TEXT     ' IN 7'
         TEXT     ' IN 8'
         TEXT     ' IN 9'
         TEXT     ' IN A'
         TEXT     ' IN B'
         TEXT     ' IN C'
         TEXT     ' IN D'
         TEXT     ' IN E'
         TEXT     ' IN F'
         TEXT     'RUNNING'         Will never show up
         TEXT     'OUT 0'
         TEXT     'OUT 1'
         TEXT     'OUT 2'
         TEXT     'OUT 3'
         TEXT     'OUT 4'
         TEXT     'OUT 5'
         TEXT     'OUT 6'
         TEXT     'OUT 7'
         TEXT     'OUT 8'
         TEXT     'OUT 9'
         TEXT     'OUT A'
         TEXT     'OUT B'
         TEXT     'OUT C'
         TEXT     'OUT D'
         TEXT     'OUT E'
         TEXT     'OUT F'
         TEXT     'MFILE'
         TEXT     ' NCTL'
         END
