;       DJOB2.M68 - Dynamic memory display PART 2
;
;       Copyright [c] STUYVESANT SofSystems
;
; EDIT HISTORY
; [J-01] 8701.02        REMOVED CODE TO RESET CONNECTION TIME DISPLAY AND ERASE DISPLAYS WHEN RESET
;

       SEARCH  SYS
       SEARCH  SYSSYM
       SEARCH  TRM

       RADIX 8.


       AUTOEXTERN

;
;MACROS

DEFINE  DPACK   ADDR,COUNT                              ; SET UP FOR UNPACK ADDR= WHERE RAD50 IS COUNT=# OF WORDS @(ADDR)
       LEA     A1,ADDR                                 ; EA=> A1
       MOV     #COUNT-1,D0                             ; D0 GETS COUNT-1 SO BEQ TRUE FOR 1 WORD
       CALL UPACK                                      ; UNPACK IT ONTO SCREEN AT CURRENT POSITION
       ENDM

DEFINE  L.CRT   ROW,COL                                 ; SET A WORD=ROW/COL CODE
       WORD    <ROW_8.>+<COL>
       ENDM

DEFINE  DSPLY   ROW,COL,TEXT                            ; SET BYTES =
       WORD    <ROW_8.>+<COL>                          ; ROW/COL CODE
       BYTE    20$$-10$$                               ; LENGTH OF MESSAGE
10$$:   ASCIZ   ?TEXT?                                  ; BYTES OF MESSAGE
       EVEN                                            ; FORCE EVEN FOR NEXT NESSAGE
20$$:                                                   ; NEED FOR SUBTRACTION ABOVE
       ENDM

DEFINE  LOW                                             ; SET REDUCED INTENSITY
       MOV     #177400+11.,D1
       TCRT
       ENDM

DEFINE  HIGH                                            ; SET NORMAL INTENSITY
       MOV     #177400+12.,D1
       TCRT
       ENDM


;
;
;
; DISPLAY JOB NAME
;
D$JNM:: MOV     JOBNAM(A0),D0           ; MOV TRUE JOBNAME TO D0
       CMP     D0,J%JNM(A5)            ; CMP WITH STORED
       BNE     100$                    ; IF #0  THEN NOT SAME SO BR
       RTN

100$:   MOV     D0,J%JNM(A5)            ; SAVE NEW NAME
       MOV     #<D%JNM-C.SCR>,D0       ; LOAD DSPLY LOCATION
       CALL    POSCRT                  ; MOVE
       DPACK   J%JNM(A5),2             ; ADDR & COUNT TO UNPACK
       RTN
;
;
; DISPLAY TERMINAL NAME
;
D$TNM:: MOV     JOBTRM(A0),D0           ; GET TRUE TRMNAME
       BEQ     120$                    ; IF =0 THEN NOW DETACHED PRINT SO
       MOV     D0,A1                   ; = ADDR OF TRMDEF
       MOV     -4(A1),D0               ; -4 =MODULE NAME
       CMP     D0,J%TNM(A5)            ; CMP WITH STORED
       BNE     100$                    ; IF #0 THEN NOT SAME SO BR
       RTN                             ; = SO FIN

100$:   MOV     D0,J%TNM(A5)            ; SAVE NEW NAME
       MOV     #<D%TNM-C.SCR>,D0       ; LOCATE
       CALL POSCRT                     ; MOVE
       DPACK   J%TNM(A5),2             ; UNPACK AND PRINT
       RTN

120$:   MOV     D0,J%TNM(A5)            ; STORE A 0
       MOV     #<D%TNM-C.SCR>,D0       ; LOCATE
       CALL    POSCRT                  ; MOVE
       LOW                             ; SET DIM VID
       TYPE    <detach>                ; TELL THEM
       HIGH                            ; SET NORM VID
       RTN                             ; FIN AND RTN
;
;
; DISPLAY PROGRAM NAME
;
D$PGM:: CLR     D0                                      ; PRE CLEAR FOR WORD OP
       MOVW    JOBSTS(A0),D0                           ; MOVE PRESENT JOB STATUS TO D0
       ANDW    #J.MON,D0                               ; AND IT W/ MON FLAG
       BNE     200$                                    ; IF NE THEN AT MON LEVEL

       MOV     JOBPRG(A0),D0                           ; GET CURRENT PROGRAM
       CMP     D0,J%PGM(A5)                            ; COMPARE WITH LAST
       BNE     100$                                    ; IF NE THEN UPDATE
       RTN                                             ; ELSE = SO RTN

100$:   MOV     D0,J%PGM(A5)                            ; SAVE NEW PROGRAM NAME
       MOV     #<D%PGM-C.SCR>,D0                       ; SET INDEX TO MESSAGE LOCATION
       CALL    POSCRT                                  ; LOCATE CURSOR
       DPACK   J%PGM(A5),2                             ; PRINT NEW PROGRAM NAME
       RTN                                             ; FINISHED AND RTN

200$:   TST     J%PGM(A5)                               ; TEST THE L-WORD
       BMI     300$                                    ; BRANCH IF ITS NEG

       MOVW    #-1,J%PGM(A5)                           ; CLEAR OLD PROGRAM
       MOV     #<D%PGM-C.SCR>,D0                       ; LOCATE MESSAGE LINE
       CALL    POSCRT                                  ; LOCATE CURSOR
       LOW                                             ; SET LOW INTENSITY
       TYPE    <mon   >                                ; TELL THEM
       HIGH                                            ; RESTORE TO HIGH INTENSITY
300$:   RTN                                             ; ALL DONE
;
;
; DISPLAY CURRENT LOG IN  {CLOG}
;
D$CLOG::CLR     D1                                      ; PRE CLEAR D1 FOR WORD OPER S
       MOVW    JOBUSR(A0),D1                           ; GET NEW PPN
       BEQ     400$                                    ; IF 0 THEN LOGGED OFF
       CMPW    D1,J%PPN(A5)                            ; COMPARE TO OLD PPN
       BNE     100$                                    ; IF NE UPDATE EVERY BODY
       MOVW    JOBDRV(A0),D1                           ; GET NEW DRIVE
       CMPW    D1,J%DRV(A5)                            ; CMP W/OLD
       BNE     100$                                    ; IF NE UPDATE EVERYBODY
       MOVW    JOBDEV(A0),D1                           ; GET NEW DEVICE
       CMPW    D1,J%DEV(A5)                            ; CMP W/OLD
       BNE     100$                                    ; IF NE UPDATE EVERYBODY
       RTN                                             ; NO ONE CHANGED FINISH

100$:   MOVW    JOBUSR(A0),J%PPN(A5)                    ; SAVE PPN
       MOVW    JOBDRV(A0),J%DRV(A5)                    ; SAVE DRIVE
       MOVW    JOBDEV(A0),J%DEV(A5)                    ; SAVE DEVICE
       MOV     #<D%PPN-C.SCR>,D0                       ; FIND MESSAGE STRING
       CALL    POSCRT                                  ; LOCATE CURSOR
       TYPE    <                >                      ; CLEAR OLD
       CALL    POSCRT                                  ; REPOSITION
       DPACK   J%DEV(A5),1                             ; DISPLAY DEVICE
       MOVW    J%DRV(A5),D1                            ; SET D1=DRIVE
       DCVT    0,OT$TRM                                ; PRINT DRIVE AS DECIMAL/ SPACE AS REQD/ @TRM
       TYPE    <:[>                                    ; PRINT TERMINATING COLON AND PPN BRACKET
       PRPPN   J%PPN(A5)                               ; PRINT PPN
       TYPE    <]>                                     ; PRINT TERM BRACKET
       RTN

400$:   CLRW    J%PPN(A5)                               ; CLEAR PPN
       CLRW    J%DRV(A5)                               ; CLEAR DRIVE
       CLRW    J%DEV(A5)                               ; CLEAR DEVICE
       MOV     #<D%PPN-C.SCR>,D0                       ; LOCATE MESSAGE STRING
       CALL    POSCRT                                  ; LOCATE CURSOR
       LOW                                             ; PRINT @ LOW INTENSITY
       TYPE    <not logged-in  >                       ; TELL THEM NOT LOGGED IN
       HIGH                                            ; NORM. VID
       RTN
;
;
; DISPLAY JOB STATUS                    ; NOTE NO "NULL STAT FOR THIS RTN CUZ' IT HAPPEN TO MUCH
;
;
D$JST:: MOVW    JOBSTS(A0),D2                           ; GET NEW JOB STATUS
       CMPW    D2,J%JST(A5)                            ; CMP W/ OLD JOB STATUS
       BNE     100$                                    ; IF NE THEN UPDATE
       RTN                                             ; = SO QUIT

100$:   MOVW    D2,J%JST(A5)                            ; REPLACE JOB STATUS
       MOV     #<D%JST-C.SCR>,D0                       ; LOCATE MESSAGE STRING
       CALL    POSCRT                                  ; LOCATE CURSOR
       TST     D2                                      ; TEST IF =0 OR (-)
       BEQ     200$                                    ; IF =0 SHOW IT

       LEA     A1,M.JSTS                               ; LOAD EA OF STATUSES
       MOV     #1,D0                                   ; SET COUNTER TO 1
       CLR     D3                                      ; CLR D3 FOR WORD OPER
       CLR     D2                                      ; CLR D2 FOR WORD OPER

110$:   MOVW    D0,D3                                   ; MAKE D3=D0
       ANDW    J%JST(A5),D3                            ; TEST BIT
       BEQ     120$                                    ; IF EQ 0 THEN BIT =0 (NOT THIS STATUS)
       INC     D2                                      ; COUNTER FOR #FOUND
       TTYL    @A1                                     ; PRINT IT OUT
       CMPW    D2,#10.                                 ; MAX 10 STATUSES AT ONCE LISTED
       BEQ     135$                                    ; IF 10 THEN DONT DO ANY MORE

120$:   ADD     #5.,A1                                  ; INC A1 BY 5 FOR OFFSET TO NEXT STATUS
       LSLW    D0,#1.                                  ; SHIFT BIT 1 POS TO LEFT
       BCC     110$                                    ; BRANCH IF NO CARRY (BIT SHIFTED OUT)

       LEA     A1,B.JSTS                               ; LOCATE BLANKS LIST
       MUL     D2,#4.                                  ; MUL #PRINTED 4 FOR STATUS OFFSET
       ADDW    D2,A1                                   ; ADD OFFSET
       TTYL    @A1                                     ; PRINT OUT CLEARING BLANKS

135$:   RTN                                             ; FINISHED

200$:   LEA     A1,B.JSTS                               ; LOCATE BLANKS
       TTYL    @A1                                     ; PRINT IT
       RTN                                             ; FINISHED

;
;
;
; JOB STATUS LIST
;
M.JSTS: ASCIZ   /b01 /
       ASCIZ   /TIW /
       ASCIZ   /TOW /
       ASCIZ   /SLP /
       ASCIZ   /IOW /
       ASCIZ   /EXW /
       ASCIZ   /SMW /
       ASCIZ   /CCC /
       ASCIZ   /MSG /
       ASCIZ   /MON /
       ASCIZ   /b10 /
       ASCIZ   /b11 /
       ASCIZ   /SUS /
       ASCIZ   /LOK /
       ASCIZ   /FIL /
       ASCIZ   /NXT /
B.JSTS: ASCIZ   /                                        /

       EVEN
;
;
; DISPLAY TRM STATUS
;
D$TST:: MOV     JOBTRM(A0),A1                           ; GET NEW JOB STATUS
       MOVW    @A1,D2                                  ; MOV TERM STAT WORD TO D2
       CMPW    D2,J%TST(A5)                            ; CMP W/ OLD JOB STATUS
       BNE     100$                                    ; IF NE THEN UPDATE
       RTN                                             ; = SO QUIT

100$:   MOVW    D2,J%TST(A5)                            ; REPLACE JOB STATUS
       MOV     #<D%TST-C.SCR>,D0                       ; LOCATE MESSAGE STRING
       CALL    POSCRT                                  ; LOCATE CURSOR
       TST     D2                                      ; TEST =0 OR (-)
       BEQ     200$                                    ; IF =0

       LEA     A1,M.TSTS                               ; LOAD EA OF STATUSES
       MOV     #1,D0                                   ; SET COUNTER TO 1
       CLR     D3                                      ; CLR D3 FOR WORD OPER
       CLR     D2                                      ; CLR D2 FOR WORD OPER

110$:   MOVW    D0,D3                                   ; MAKE D3=D0
       ANDW    J%TST(A5),D3                            ; TEST BIT
       BEQ     120$                                    ; IF EQ 0 THEN BIT =0 (NOT THIS STATUS)
       INC     D2                                      ; COUNTER FOR #FOUND
       TTYL    @A1                                     ; PRINT IT OUT
       CMPW    D2,#10.                                 ; MAX 10 STATUSES AT ONCE LISTED
       BEQ     135$                                    ; IF 10 THEN DONT DO ANY MORE

120$:   ADD     #5.,A1                                  ; INC A1 BY 5 FOR OFFSET TO NEXT STATUS
       LSLW    D0,#1.                                  ; SHIFT BIT 1 POS TO LEFT
       BCC     110$                                    ; BRANCH IF NO CARRY (BIT SHIFTED OUT)

       LEA     A1,B.JSTS                               ; LOCATE BLANKS LIST
       MUL     D2,#4.                                  ; MUL #PRINTED 4 FOR STATUS OFFSET
       ADDW    D2,A1                                   ; ADD OFFSET
       TTYL    @A1                                     ; PRINT OUT CLEARING BLANKS

135$:   RTN                                             ; FINISHED

200$:   LEA     A1,B.JSTS                               ; LOCATE BLANKS
       TTYL    @A1                                     ; PRINT IT
       RTN                                             ; FINISHED
;
;
; JOB STATUS LIST
;
M.TSTS: ASCIZ   /IMI /
       ASCIZ   /ECS /
       ASCIZ   /LCL /
       ASCIZ   /DAT /
       ASCIZ   /ILC /
       ASCIZ   /XLT /
       ASCIZ   /NFK /
       ASCIZ   /OIP /
       ASCIZ   /LED /
       ASCIZ   /ASN /
       ASCIZ   /DIS /
       ASCIZ   /VLD /
       ASCIZ   /LDT /
       ASCIZ   /b13 /
       ASCIZ   /b14 /
       ASCIZ   /b15 /

       EVEN
;
;
; DISPLAY JOB TYPE
;
D$TYP:: MOVW    JOBTYP(A0),D2                           ; GET NEW JOB STATUS
       CMPW    D2,J%TYP(A5)                            ; CMP W/ OLD JOB STATUS
       BNE     100$                                    ; IF NE THEN UPDATE
       RTN                                             ; = SO QUIT

100$:   MOVW    D2,J%TYP(A5)                            ; REPLACE JOB STATUS
       MOV     #<D%TYP-C.SCR>,D0                       ; LOCATE MESSAGE STRING
       CALL    POSCRT                                  ; LOCATE CURSOR
       TSTW    D2                                      ; IF @0 THEN NO STATUS
       BEQ     200$                                    ; RTN FOR NULL STATUS

       LEA     A1,M.JTYP                               ; LOAD EA OF STATUSES
       MOV     #1,D0                                   ; SET COUNTER TO 1
       CLR     D3                                      ; CLR D3 FOR WORD OPER
       CLR     D2                                      ; CLR D2 FOR WORD OPER

110$:   MOVW    D0,D3                                   ; MAKE D3=D0
       ANDW    J%TYP(A5),D3                            ; TEST BIT
       BEQ     120$                                    ; IF EQ 0 THEN BIT =0 (NOT THIS STATUS)
       INC     D2                                      ; COUNTER FOR #FOUND
       TTYL    @A1                                     ; PRINT IT OUT
       CMPW    D2,#10.                                 ; MAX 10 STATUSES AT ONCE LISTED
       BEQ     135$                                    ; IF 10 THEN DONT DO ANY MORE

120$:   ADD     #5.,A1                                  ; INC A1 BY 5 FOR OFFSET TO NEXT STATUS
       LSLW    D0,#1.                                  ; SHIFT BIT 1 POS TO LEFT
       BCC     110$                                    ; BRANCH IF NO CARRY (BIT SHIFTED OUT)

       LEA     A1,B.JSTS                               ; LOCATE BLANKS LIST
       MUL     D2,#4.                                  ; MUL #PRINTED 4 FOR STATUS OFFSET
       ADDW    D2,A1                                   ; ADD OFFSET
       TTYL    @A1                                     ; PRINT OUT CLEARING BLANKS

135$:   RTN                                             ; FINISHED

200$:   LOW                                             ; LOW INTENSITY
       TYPE    <null type                               > ; TELL NUL STATUS AND MASK IF ANY OLD STATUS LEFT
       HIGH                                            ; NORM INTENSITY
       RTN
                                           ; FINISHED

M.JTYP: ASCIZ   /USR /
       ASCIZ   /NUL /
       ASCIZ   /NEW /
       ASCIZ   /LPT /
       ASCIZ   /HEX /
       ASCIZ   /DER /
       ASCIZ   /VER /
       ASCIZ   /CCA /
       ASCIZ   /GRD /
       ASCIZ   /TSK /
       ASCIZ   /CAB /
       ASCIZ   /PRE /
       ASCIZ   /PRO /
       ASCIZ   /SRQ /
       ASCIZ   /b14 /
       ASCIZ   /b15 /

       EVEN
;
;
; DISPLAY JOBS MEMORY PARTITION BASE
;
D$BAS:: MOV     JOBBAS(A0),D2                           ; MOV CURRENT JOBS MEMORY BAS TO D2
       CMP     D2,J%BAS(A5)                            ; CMP W/ LAST KNOWN
       BNE     100$                                    ; IF NE THEN TO RTN TO REPLACE AND PRINT
       RTN                                             ; RTN IF EQ

100$:   MOV     D2,J%BAS(A5)                            ; REPLACE OLD WITH CURRENT
       MOV     #<D%BAS-C.SCR>,D0                       ; LOCATE MESSAGE LINE
       CALL    POSCRT                                  ; MOVE CURSOR
       TST     D2                                      ; TEST THAT L-WORD IF =0 OR (-)
       BEQ     200$                                    ; BRANCH IF 0

       MOV     D2,D1                                   ; MOV FOR PRINT OUT
       OCVT    8.,OT$TRM!OT$ZER!OT$TSP                 ; DISPLAY ON SCREEN IN OCTAL (or hex)/ NO LEAD ZERO/ W-TRAIL SP
;       MOV     #<D%BOT-C.SCR>,D0                       ; LOCATE MESSAGE LINE
;       CALL    POSCRT                                  ; MOVE CURSOR
;       MOV     D2,D1                                   ; MOV FOR PRINT OUT
;       OCVT    7.,OT$TRM!OT$ZER!OT$TSP                 ; DISPLAY ON SCREEN IN OCTAL (or hex)/ NO LEAD ZERO/ W-TRAIL SP
       RTN                                             ; FINISHED WITH THIS RTN

200$:   MOV     #0,J%SIZ(A5)                            ; RESET MEMORY SIZE TO 0
       LOW                                             ; TYPE LOW INTENSITY
       TYPE    < no mem.>                              ; TELL THEM
       HIGH                                            ; NORM INTENSITY
;       MOV     #<D%BOT-C.SCR>,D0                       ; LOCATE MESSAGE LINE
;       CALL    POSCRT                                  ; MOVE CURSOR
;       TYPE    <        >                              ; DELETE IT
       RTN
;
;
; DISPLAY MEMORY SIZE
;
D$SIZ:: MOV     JOBSIZ(A0),D2                           ; MOV CURRENT JOBS MEMORY SIZ TO D2
       CMP     D2,J%SIZ(A5)                            ; CMP W/ LAST KNOWN
       BNE     100$                                    ; IF NE THEN TO RTN TO REPLACE AND PRINT
       RTN                                             ; RTN IF EQ

100$:   TST     J%BAS(A5)                               ; IF ITS ZERO NO MEMORY AND TELL THEM
       BEQ     150$

       MOV     D2,J%SIZ(A5)                            ; REPLACE OLD WITH CURRENT
       MOV     #<D%SIZ-C.SCR>,D0                       ; LOCATE MESSAGE LINE
       CALL    POSCRT                                  ; MOVE CURSOR
       TST     D2                                      ; TEST THAT L-WORD IF =0 OR (-)
       BEQ     200$                                    ; BRANCH IF 0

       MOV     D2,D1                                   ; MOV FOR PRINT OUT
       OCVT    8.,OT$TRM!OT$ZER!OT$TSP                 ; DISPLAY ON SCREEN IN OCTAL (or hex)/ NO LEAD ZERO/ W-TRAIL SP
       MOV     #<D%TOP-C.SCR>,D0                       ; LOCATE MESSAGE LINE
       CALL    POSCRT                                  ; MOVE CURSOR
       MOV     D2,D1                                   ; MOV FOR PRINT OUT
       ADD     J%BAS(A5),D1                            ; ADD JOB BASE
       OCVT    8.,OT$TRM!OT$ZER!OT$TSP                 ; DISPLAY ON SCREEN IN OCTAL (or hex)/ NO LEAD ZERO/ W-TRAIL SP
       RTN                                             ; FINISHED WITH THIS RTN

150$:   MOV     #<D%SIZ-C.SCR>,D0                       ; LOCATE MESSAGE LINE
       CALL    POSCRT                                  ; MOVE CURSOR

200$:   LOW                                             ; TYPE LOW INTENSITY
       TYPE    < no mem.>                              ; TELL THEM
       HIGH                                            ; NORM INTENSITY
       MOV     #<D%TOP-C.SCR>,D0                       ; LOCATE MESSAGE LINE
       CALL    POSCRT                                  ; MOVE CURSOR
       TYPE    <        >
       RTN
;
;
; DISPLAY JOB PRIVILAGE                 - currently un used
;
D$PRV:: MOVW    JOBPRV(A0),D2                           ; MOV CURRENT JOBS PRIVILAGE TO D2
       CMPW    D2,J%PRV(A5)                            ; CMP W/ LAST KNOWN
       BNE     100$                                    ; IF NE THEN TO RTN TO REPLACE AND PRINT
       RTN                                             ; RTN IF EQ

100$:   MOVW    D2,J%PRV(A5)                            ; REPLACE OLD WITH CURRENT
       MOV     #<D%PRV-C.SCR>,D0                       ; LOCATE MESSAGE LINE
       CALL    POSCRT                                  ; MOVE CURSOR
       TSTW    D2                                      ; TEST THAT L-WORD IF =0 OR (-)
       BEQ     200$                                    ; BRANCH IF 0

       CLR     D1
       MOVW    D2,D1                                   ; MOV FOR PRINT OUT
       OCVT    8.,OT$TRM!OT$ZER!OT$TSP                 ; DISPLAY ON SCREEN IN OCTAL (or hex)/ NO LEAD ZERO/ W-TRAIL SP
       RTN                                             ; FINISHED WITH THIS RTN

200$:   LOW                                             ; TYPE LOW INTENSITY
       TYPE    <    none>                              ; TELL THEM
       HIGH                                            ; NORM INTENSITY
       RTN
;
;
; DISPLAY COMMAND FILE SIZE                     (ALWAYS DISPLAY IN DECIMAL)
;
D$CMZ:: MOVW    JOBCMZ(A0),D2                           ; MOV CURRENT JOBS PRIVILAGE TO D2
       CMPW    D2,J%CMZ(A5)                            ; CMP W/ LAST KNOWN
       BNE     100$                                    ; IF NE THEN TO RTN TO REPLACE AND PRINT
       RTN                                             ; RTN IF EQ

100$:   MOVW    D2,J%CMZ(A5)                            ; REPLACE OLD WITH CURRENT
       MOV     #<D%CMZ-C.SCR>,D0                       ; LOCATE MESSAGE LINE
       CALL    POSCRT                                  ; MOVE CURSOR
       TSTW    D2                                      ; TEST THAT L-WORD IF =0 OR (-)
       BEQ     200$                                    ; BRANCH IF 0

       CLR     D1
       MOVW    D2,D1                                   ; MOV FOR PRINT OUT
       OCVT    8.,OT$TRM!OT$ZER!OT$TSP                 ; DISPLAY ON SCREEN IN DECIMAL / NO LEAD ZERO/ W-TRAIL SP
       RTN                                             ; FINISHED WITH THIS RTN

200$:   LOW                                             ; TYPE LOW INTENSITY
       TYPE    <    none>                              ; TELL THEM
       HIGH                                            ; NORM INTENSITY
       RTN
;
;
; DISPLAY COMMAND FILE STATUS
;
D$CMS:: MOVW    JOBCMS(A0),D2                           ; MOV CURRENT JOBS PRIVILAGE TO D2
       CMPW    D2,J%CMS(A5)                            ; CMP W/ LAST KNOWN
       BNE     100$                                    ; IF NE THEN TO RTN TO REPLACE AND PRINT
       RTN                                             ; RTN IF EQ

100$:   MOVW    D2,J%CMS(A5)                            ; REPLACE OLD WITH CURRENT
       MOV     #<D%CMS-C.SCR>,D0                       ; LOCATE MESSAGE LINE
       CALL    POSCRT                                  ; MOVE CURSOR
       TSTW    D2                                      ; TEST =0
       BEQ     200$                                    ; IF =0

       LEA     A1,M.JCMS                               ; LOAD EA OF STATUSES
       MOV     #1,D0                                   ; SET COUNTER TO 1
       CLR     D3                                      ; CLR D3 FOR WORD OPER
       CLR     D2                                      ; CLR D2 FOR WORD OPER

110$:   MOVW    D0,D3                                   ; MAKE D3=D0
       ANDW    J%CMS(A5),D3                            ; TEST BIT
       BEQ     120$                                    ; IF EQ 0 THEN BIT =0 (NOT THIS STATUS)
       INC     D2                                      ; COUNTER FOR #FOUND
       TTYL    @A1                                     ; PRINT IT OUT
       CMPW    D2,#6.                                  ; MAX 06 STATUSES AT ONCE LISTED
       BEQ     135$                                    ; IF 10 THEN DONT DO ANY MORE

120$:   ADD     #5.,A1                                  ; INC A1 BY 5 FOR OFFSET TO NEXT STATUS
       LSLW    D0,#1.                                  ; SHIFT BIT 1 POS TO LEFT
       BCC     110$                                    ; BRANCH IF NO CARRY (BIT SHIFTED OUT)

       LEA     A1,B.JSTS                               ; LOCATE BLANKS LIST
       MUL     D2,#4.                                  ; MUL #PRINTED 4 FOR STATUS OFFSET
       ADDW    #16.,D2                                 ; CORRECT FOR ONLY 24 PRINTING SPACES NOT 40
       ADDW    D2,A1                                   ; ADD OFFSET
       TTYL    @A1                                     ; PRINT OUT CLEARING BLANKS

135$:   RTN                                             ; FINISHED

200$:   LEA     A1,B.JSTS                               ; LOCATE BLANKS
       ADDW    #16.,A1                                 ; ADD OFFSET FOR LESS PRINTING AREA
       TTYL    @A1                                     ; PRINT IT
       RTN                                             ; FINISHED
;
;
;
M.JCMS: ASCIZ   /MON /
       ASCIZ   /SIL /
       ASCIZ   /TRC /
       ASCIZ   /PTL /
       ASCIZ   /b 4 /
       ASCIZ   /b 5 /
       ASCIZ   /b 6 /
       ASCIZ   /b 7 /
       ASCIZ   /b 8 /
       ASCIZ   /b 9 /
       ASCIZ   /b10 /
       ASCIZ   /b11 /
       ASCIZ   /b12 /
       ASCIZ   /b13 /
       ASCIZ   /b14 /
       ASCIZ   /b15 /

       EVEN
;
;
; DISPLAY TERMINAL DEF BLK POINTER
;
D$TRM:: MOV     JOBTRM(A0),D2                           ; MOV CURRENT JOBS MEMORY SIZ TO D2
       CMP     D2,J%TRM(A5)                            ; CMP W/ LAST KNOWN
       BNE     100$                                    ; IF NE THEN TO RTN TO REPLACE AND PRINT
       RTN                                             ; RTN IF EQ

100$:   MOV     D2,J%TRM(A5)                            ; REPLACE OLD WITH CURRENT
       MOV     #<D%TRM-C.SCR>,D0                       ; LOCATE MESSAGE LINE
       CALL    POSCRT                                  ; MOVE CURSOR
       TST     D2                                      ; TEST THAT L-WORD IF =0 OR (-)
       BEQ     200$                                    ; BRANCH IF 0

       MOV     D2,D1                                   ; MOV FOR PRINT OUT
       OCVT    8.,OT$TRM!OT$ZER!OT$TSP                 ; DISPLAY ON SCREEN IN OCTAL (or hex)/ NO LEAD ZERO/ W-TRAIL SP
       RTN                                             ; FINISHED WITH THIS RTN

200$:   LOW                                             ; TYPE LOW INTENSITY
       TYPE    <detached>                              ; TELL THEM
       HIGH                                            ; NORM INTENSITY
       RTN
;
;
; DISPLAY CPU TIME
;
D$CPU:: MOV     JOBCPU(A0),D2                           ; MOV CURRENT JOB CPU TIME TO D2
       CMP     D2,J%CPU(A5)                            ; CMP W/ LAST KNOWN
       BNE     100$                                    ; IF NE THEN TO RTN TO REPLACE AND PRINT
       RTN                                             ; RTN IF EQ

100$:   MOV     D2,J%CPU(A5)                            ; REPLACE OLD WITH CURRENT
       BEQ     110$                                    ; IF EQ TO 0 DONT ERASE                 [J-01]
       MOV     #<D%CPU-C.SCR>,D0                       ; LOCATE MESSAGE LINE
       CALL    POSCRT                                  ; MOVE CURSOR

       MOV     D2,D1                                   ; MOV FOR PRINT OUT
       DCVT    8.,OT$TRM!OT$ZER!OT$TSP                 ; DISPLAY ON SCREEN IN OCTAL (or hex)/ NO LEAD ZERO/ W-TRAIL SP
110$:   RTN                                             ; FINISHED WITH THIS RTN
;
;
; DISPLAY CON TIME
;
D$CON::
       MOV     #<D%CON-C.SCR>,D0                       ; LOCATE MESSAGE LINE
       CALL    POSCRT                                  ; MOVE CURSOR
       MOV     JOBCON(A0),D1                           ; MOV CURRENT JOB CONECT TIME TO D2
       BEQ     100$                                    ; IF NO CON TIME TYPE IT @100$
       SUB     A2,A2                                   ; PRE-CLEAR FOR $OTCON RTN
       CALL    $OTCON                                  ; DISPLAY ON SCREEN AS TIME
       TYPE    <     >                                 ; CLEAR ANY OLD DISPLAY
100$:   RTN                                             ; FINISHED WITH THIS RTN

; [J-01]  REMOVED CODE TO RESET CONNECTION TIME TO 0
;
;100$:  TYPE <00:00:00     >                            ; DISPLAY 0 TIME
;       RTN                                             ; FINISHED WITH THIS RTN
;
;
; DISPLAY DSR TIME
;
D$DSR:: MOV     JOBDSR(A0),D2                           ; MOV CURRENT JOB DISK READS TO D2
       CMP     D2,J%DSR(A5)                            ; CMP W/ LAST KNOWN
       BNE     100$                                    ; IF NE THEN TO RTN TO REPLACE AND PRINT
       RTN                                             ; RTN IF EQ

100$:   MOV     D2,J%DSR(A5)                            ; REPLACE OLD WITH CURRENT
       BEQ     110$                                    ; IF EQ 0 THEN DONT ERASE                       [J-01]
       MOV     #<D%DSR-C.SCR>,D0                       ; LOCATE MESSAGE LINE
       CALL    POSCRT                                  ; MOVE CURSOR

       MOV     D2,D1                                   ; MOV FOR PRINT OUT
       DCVT    8.,OT$TRM!OT$ZER!OT$TSP                 ; DISPLAY ON SCREEN IN OCTAL (or hex)/ NO LEAD ZERO/ W-TRAIL SP
110$:   RTN                                             ; FINISHED WITH THIS RTN
;
;
; DISPLAY DSW TIME
;
D$DSW:: MOV     JOBDSW(A0),D2                           ; MOV CURRENT JOB DISK WRITES TO D2
       CMP     D2,J%DSW(A5)                            ; CMP W/ LAST KNOWN
       BNE     100$                                    ; IF NE THEN TO RTN TO REPLACE AND PRINT
       RTN                                             ; RTN IF EQ

100$:   MOV     D2,J%DSW(A5)                            ; REPLACE OLD WITH CURRENT
       BEQ     110$                                    ; IF EQ 0 THEN DONT ERASE                       [J-01]
       MOV     #<D%DSW-C.SCR>,D0                       ; LOCATE MESSAGE LINE
       CALL    POSCRT                                  ; MOVE CURSOR

       MOV     D2,D1                                   ; MOV FOR PRINT OUT
       DCVT    8.,OT$TRM!OT$ZER!OT$TSP                 ; DISPLAY ON SCREEN IN OCTAL (or hex)/ NO LEAD ZERO/ W-TRAIL SP
110$:   RTN                                             ; FINISHED WITH THIS RTN


       END