QDUMP

Table Of Contents

  • [00007] QDUMP - QUEUE DUMP PROCESSOR.
  • [00009] QUEUE DUMP PROCESSOR.
  • [00290] SCLASS - DEFINE SERVICE CLASS TABLE.
  • [00315] ASSEMBLY CONSTANTS.
  • [00332] RESERVED LOCATIONS AND FETS.
  • [00374] MAIN ROUTINE.
  • [00464] PRIMARY SUBROUTINES.
  • [00466] CAL - CHECK ACCESS LEVELS.
  • [00528] CID - CHECK FOR INCORRECT DEVICES.
  • [00559] DQF - DUMP QUEUED FILES.
  • [00664] OFN - SET OUTPUT AND DUMP FILE NAMES.
  • [00760] OUT - RELEASE OUTPUT FILE TO PRINTER.
  • [00804] WDH - WRITE DUMP FILE HEADER BLOCK.
  • [00898] AQF - ATTACH QUEUE FILE AND READ SYSTEM INFORMATION.
  • [00979] BEC - BUILD EXTERNAL CONTROL WORD.
  • [01002] BOF - BUILD OUTPUT FILE.
  • [01081] BOH - BUILD OUTPUT FILE PAGE HEADER.
  • [01151] BUP - BACK UP *IN* POINTER TO BEGINNING OF CURRENT FILE.
  • [01255] CDI - CHECK CURRENT DEVICE IQFT.
  • [01322] CPF - COPY QUEUED FILE AND ASSOCIATED DATA TO DUMP FILE.
  • [01376] TQCW - TABLE OF QDUMP CONTROL WORDS.
  • [01385] CQD - COPY QUEUE FILES TO DUMP FILE.
  • [01469] CSI - COPY SYSTEM INFORMATION TO DUMP FILE.
  • [01497] CUF - CLEAN UP CURRENT FILE AFTER ERROR.
  • [01545] DFD - DUMP QUEUED FILE DATA.
  • [01742] EPR - ERROR CODE PROCESSOR.
  • [01817] EDF - PROCESS DUPLICATE FILE NAME.
  • [01825] EPE - PROCESS WRITE PARITY ERRORS.
  • [01888] ERM - PROCESS READ MASS STORAGE ERRORS.
  • [01912] ESS - PROCESS INCORRECT SYSTEM SECTOR ERRORS.
  • [01920] ETL - PROCESS TRACK LIMIT.
  • [01972] ERP$ - *READW*

BOHBL EQU *-BOHB

BOHC DATA H*0* CARRIAGE CONTROL

        DATA   C*                                              LENGTH

,ACCESS*

        DATA   H* *        CARRIAGE CONTROL
        DATA   C*   NUM  JSNS MID FAMILY  DN DT DS   DATE      (PRUS)

,LEVEL DISPOSITION ERRORS*

        DATA   C* *

BOHCL EQU *-BOHC BUP SPACE 4,10 BUP - BACK UP *IN* POINTER TO BEGINNING OF CURRENT FILE. * * SET THE *IN* POINTER TO THE BEGINNING OF THE LAST RECORD * IN THE CIRCULAR BUFFER AND BACKSPACE TO THE START OF * THE CURRENT QUEUED FILE ON THE DUMP FILE IF NECESSARY. * * ENTRY (DFBS) = DUMP FILE BLOCK SIZE. * (RBCW) = ROUTE BLOCK CONTROL WORD. * (ERCW) = READ ERROR CONTROL WORD. * * USES X - 0, 1, 2, 3, 4, 6, 7. * A - 1, 2, 3, 4, 6, 7. * * CALLS BEC, WBD. * * MACROS BKSP, MESSAGE. BUP SUBR ENTRY/EXIT SA2 D+2 *IN* SA3 A2+B1 *OUT* SA4 A3+B1 *LIMIT* SX4 X4+ SX6 X3 SET LAST RECORD POINTER TO *OUT* IX7 X2-X3 CHECK FOR NO DATA IN BUFFER SA6 BUPA SX3 WBUF+1 ZR X7,BUP4 IF *IN* .EQ. *OUT* SX3 X6+ RESET *OUT* * GET NEXT CONTROL WORD ADDRESS. BUP1 SA1 X3+ CONTROL WORD SX6 5 SX7 X1+4 ROUND UP IX6 X7/X6 WORDS IN BLOCK IX7 X3+X6 CALCULATE ADDRESS OF NEXT CONTROL WORD SX7 X7+2 IX1 X7-X4 NG X1,BUP2 IF NOT AT *LIMIT* IX7 X4-X3 CALCULATE AFTER WRAP-AROUND IX7 X6-X7 SA1 D+1 *FIRST* SX1 X1 IX7 X7+X1 SX7 X7+2 BUP2 SA1 DFBS DUMP FILE BLOCK SIZE IX6 X6-X1 PL X6,BUP3 IF NOT EOR SA7 BUPA SAVE ADDRESS OF NEXT RECORD * SET *IN* POINTER. BUP3 SX3 X7 RESET ADDRESS IX6 X2-X7 NZ X6,BUP1 IF ADDRESS .NE. *IN* SA1 BUPA IX7 X2-X1 ZR X7,BUPX IF *IN* = ADDRESS OF NEXT RECORD SX7 X1 SET *IN* = ADDRESS OF LAST RECORD SA7 A2 * BACKSPACE DUMP FILE IF NOT AT BEGINNING OF FILE. SA3 A3 *OUT* IX6 X3-X1 NZ X6,BUPX IF EOR FOUND SX3 X3+B1 CHECK FOR BEGINNING OF QUEUED FILE IX7 X3-X4 NZ X7,BUP4 IF NOT AT *LIMIT* SA3 D+1 *FIRST* BUP4 SA1 X3 CHECK FOR ROUTE BLOCK CONTROL WORD SA4 RBCW BX7 X4-X1 ZR X7,BUPX IF AT BEGINNING OF FILE BKSP D,R SA1 D CHECK IF BACKSPACE COMPLETE SX0 77BS3 BX6 X0*X1 SX6 X6-50B SX1 B1 SET WORDS IN BUFFER NZ X6,BUPX IF NOT REWIND STATUS * END ERRORED FILE AND ISSUE MESSAGE. SA2 ERCW WRITE ERROR CONTROL WORD TO DUMP FILE BX6 X2 SA6 WBUF+1 RJ BEC BUILD EXTERNAL CONTROL WORD RJ WBD WRITE EOR BLOCK SA1 RBCW SET FILE NAME IN MESSAGE MX0 42 BX7 X0*X1 LX7 -18 SA2 MES11+3 MX0 18 BX6 X0*X2 BX7 X6+X7 SA7 A2+ MESSAGE MES11 EQ BUPX BUPA CON 0 ADDRESS OF NEXT RECORD CDI SPACE 4,20 CDI - CHECK CURRENT DEVICE IQFT. * * COUNT THE ENTRIES IN THE REMAINDER OF THE CURRENT DEVICE * IQFT. IF TRACK LIMIT HAS BEEN REACHED, THE ENTRIES ARE * VERIFIED AND THOSE MEETING SPECIFICATIONS ARE NOTED * ON THE OUTPUT FILE. * * ENTRY (IGCT) = COUNT OF FILES IGNORED ON DEVICE. * (CDIA) .NE. 0 IF TRACK LIMIT REACHED. * (CEQP) = CURRENT EST ORDINAL. * * EXIT (IGCT) = UPDATED COUNT OF IGNORED FILES. * (X5) = 0 IF NO ERROR. * = *K* DISPLAY MESSAGE ADDRESS IF ERROR. * * USES X - 0, 1, 2, 5, 6, 7. * A - 1, 2, 7. * * CALLS BOF, VIE. * * MACROS READW, WRITEW.

CDI SUBR ENTRY/EXIT

* READ REMAINDER OF OLD IQFT.

CDI1 BX5 X5-X5 CLEAR ERROR STATUS

        READW  IQ,IQFE,QFEWL
        NZ     X5,CDIX     IF MASS STORAGE ERROR
        NZ     X1,CDIX     IF EOF/EOI

* BUILD OUTPUT FILE IF TRACK LIMIT REACHED.

        SA2    CDIA
        ZR     X2,CDI2     IF TRACK LIMIT NOT REACHED
        SA1    IQFE+8
        NG     X1,CDI2     IF LENGTH ERROR
        BX6    X6-X6
        RJ     VIE         VERIFY IQFT ENTRY
        NZ     X1,CDI2     IF NO MATCH
        SX7    TBUF        REWIND POINTERS
        SA7    T+2
        SA7    T+3
        SA2    CEQP        SET CURRENT EQUIPMENT IN ENTRY
        LX2    48
        MX0    12
        SA1    IQFE+1
        BX6    -X0*X1      CLEAR OLD EST ORDINAL
        BX7    X6+X2
        SA7    A1
        WRITEW T,IQFE,QFEWL MOVE ENTRY TO BUFFER
        SA2    T+2         SET *OUT* = *IN*
        SX7    X2
        SA7    A2+B1
        SX7    BOFE        *TRACK LIMIT - FILE IGNORED*
        RJ     BOF

* BUILD NEW IQFT.

CDI2 SA2 IGCT INCREMENT COUNT

        SX7    X2+B1
        SA7    A2
        EQ     CDI1        READ NEXT ENTRY

CDIA CON 0 TRACK LIMIT FLAG CPF SPACE 4,20 CPF - COPY QUEUED FILE AND ASSOCIATED DATA TO DUMP FILE. * * CALL ROUTINES TO FORMAT AND COPY THE ROUTE BLOCK, SYSTEM * INFORMATION (SYSTEM AND EOI SECTORS) AND THE DATA FOR THE * QUEUED FILE TO THE DUMP FILE ALONG WITH THE CORRESPONDING * CONTROL WORDS. * * ENTRY (AQFA) .NE. 0 IF PREVIOUS READ ERROR. * * EXIT (X5) = 0 IF NO ERROR. * .LT. 0, SKIP CURRENT FILE. * .GT. 0, *K* DISPLAY MESSAGE ADDRESS. * * USES X - 0, 1, 2, 5, 6, 7. * A - 1, 2, 7. * * CALLS BUP, CSI, DFD, FRB. CPF SUBR ENTRY/EXIT * SET QUEUED FILE NAME IN CONTROL WORDS. SA2 T+3 SET FILE NAME SA2 X2-QFEWL MX0 24 BX6 X0*X2 SX2 B0+ SET INDEX CPF1 SA1 TQCW+X2 INSERT NAME IN CONTROL WORD BX1 -X0*X1 BX7 X6+X1 SA7 A1 SX2 X2+B1 INCREMENT INDEX SX5 X2-TQCWL NZ X5,CPF1 IF NOT ALL CONTROL WORDS SA1 AQFA NZ X1,CPF2 IF PREVIOUS READ ERROR SX7 BLANK SAVE NO ERROR CODE ADDRESS SA7 CPFA * COPY DATA TO DUMP FILE. CPF2 SX0 B0+ INITIALIZE NUMBER OF WORDS IN BUFFER SX7 DBLL SET INITIAL BUFFER SEGMENT LIMIT SA7 DBSL RJ FRB FORM ROUTE BLOCK RJ CSI COPY SYSTEM INFORMATION RJ DFD DUMP QUEUED FILE DATA PL X5,CPFX IF NOT SKIP FILE RJ BUP BACK UP *IN* POINTER EQ CPFX CPFA CON 0 ERROR CODE ADDRESS TQCW SPACE 4 TQCW - TABLE OF QDUMP CONTROL WORDS.

TQCW BSS 0 TABLE OF QDUMP CONTROL WORDS. RBCW VFD 42/0,3/1,3/0,3/0,9/EPBL ROUTE BLOCK SYCW VFD 42/0,3/3,3/0,3/0,9/200B SYSTEM INFORMATION DACW VFD 42/0,3/0,3/0,3/0,9/0 DATA ERCW VFD 42/0,3/7,3/0,3/0,9/0 DUMP ERRORS TQCWL EQU *-TQCW CQD SPACE 4,20 CQD - COPY QUEUE FILES TO DUMP FILE. * * CALL ROUTINES TO PHYSICALLY DUMP THE FILES SPECIFIED * IN A BUFFER OF IQFT ENTRIES TO THE DUMP FILE. * * ENTRY (DSPB) = 0, DUMP INACTIVE QUEUE FILES. * = 1, DUMP ACTIVE QUEUE FILES. * = 2, DUMP ALL QUEUE FILES. * (DPCT) = COUNT OF FILES DUMPED ON THIS DEVICE. * (PQFA) .NE. 0 IF MORE FILES TO PROCESS. * * EXIT (X5) = 0 IF NO ERROR. * = *K* DISPLAY MESSAGE ADDRESS IF ERROR. * * USES X - 1, 2, 3, 5, 6, 7. * A - 1, 2, 3, 5, 6. * B - 6. * * CALLS AQF, BOF, CDI, CPF, EPR, RTF, SPF. CQD SUBR ENTRY/EXIT SX5 AIQF SET ATTACH INACTIVE FILES SA1 DSPB ZR X1,CQD2 IF DUMP INACTIVE SA1 T SET *QFM* PARAMETERS IN FET RJ SPF CQD1 SX5 AQFF SET ATTACH ACTIVE FILES * ATTACH QUEUE FILES THAT MEET ALL SPECIFICATIONS. CQD2 RJ AQF ATTACH FILE NG X5,CQD4 IF SKIP FILE NZ X5,CQD6 IF ERROR NZ X6,CQD5 IF END OF BUFFER * MOVE QUEUE FILE TO DUMP FILE. RJ CPF COPY FILE TO DUMP FILE NG X5,CQD4 IF SKIP FILE NZ X5,CQD6 IF ERROR RJ RTF RETURN FILE ZR X5,CQD3 IF NO ERROR SB6 TQEP SET ERROR TABLE ADDRESS RJ EPR PROCESS ERROR SA1 DSPB NZ X1,CQD3 IF DUMPING ACTIVE SA1 IGCT DECREMENT IGNORED COUNT SX6 X1-1 SA6 A1 * BUILD OUTPUT FILE. CQD3 SA1 DPCT INCREMENT DUMPED COUNT SX6 X1+B1 SA6 A1 SA1 CPFA SET ERROR CODE ADDRESS SX7 X1 BX6 X5 SAVE ERROR STATUS SA6 CQDA RJ BOF BUILD OUTPUT FILE SA5 CQDA NG X5,CQD4 IF SKIP FILE NZ X5,CQD6 IF RETURN ERROR CQD4 SA1 DSPB NZ X1,CQD1 IF DUMP ACTIVE * CHECK FOR END OF FILES. CQD5 SX5 B0+ CLEAR ERROR FLAG SA3 PQFA NZ X3,CQDX IF MORE FILES TO PROCESS CQD6 SA1 DSPB NZ X1,CQDX IF DUMP ACTIVE * COUNT REMAINING FILES. SA2 PQFA ZR X2,CQDX IF ALL ENTRIES PROCESSED RJ CDI CHECK CURRENT IQFT EQ CQDX RETURN CQDA CON 0 RETURN QUEUED FILE ERROR STATUS CSI SPACE 4,20 CSI - COPY SYSTEM INFORMATION TO DUMP FILE. * * COPY THE SYSTEM AND EOI SECTORS, ALONG WITH THE SYSTEM * INFORMATION CONTROL WORD, TO THE DUMP FILE. * * ENTRY (X0) = NUMBER OF WORDS CURRENTLY IN BUFFER. * (SYCW) = SYSTEM INFORMATION CONTROL WORD. * * EXIT (X0) = NUMBER OF WORDS IN BUFFER. * * USES X - 0, 2, 5, 6, 7. * A - 2, 5, 6, 7. * * MACROS MOVE.

CSI SUBR ENTRY/EXIT

        SX6    X0+B1       INDEX OF CONTROL WORD
        SX0    X6
        SA6    QCWI
        MOVE   SBUFL-1,SBUF,WBUF+1+X0
        SA5    SYCW        GET SYSTEM INFORMATION CONTROL WORD
        SX0    X0+SBUFL-1  UPDATE BUFFER WORD COUNT
        SA2    QCWI        INDEX FOR CONTROL WORD
        BX7    X5
        SA7    WBUF+X2
        EQ     CSIX        RETURN

CUF SPACE 4,20 CUF - CLEAN UP CURRENT FILE AFTER ERROR. * * INSURE THAT THE CURRENT FILE AND IQFT ENTRY, IF * NECESSARY, ARE REPLACED ON THE SOURCE DEVICE AFTER * AN ERROR HAS OCCURED. * * ENTRY (X5) = ERROR MESSAGE ADDRESS. * = 0 IF CURRENTLY PROCESSING AN ERROR. * (A0) = FET ADDRESS. * (AQFB) = 0 IF ERROR ATTACHING QUEUED FILE. * (DSPB) = 0, DUMP INACTIVE QUEUE FILES. * = 1, DUMP ACTIVE QUEUE FILES. * = 2, DUMP ALL QUEUE FILES. * * EXIT (X4) = ERROR MESSAGE ADDRESS. * (X5) = 0 IF NO NEW ERROR. * = MESSAGE ADDRESS IF ERROR RETURNING FILE. * * USES X - 1, 4, 5, 6, 7. * A - 1, 4, 5, 6, 7. * * CALLS RTF. * * MACROS MOVE. CUF SUBR ENTRY/EXIT SX6 X5+ SAVE ERROR ADDRESS SA6 CUFA SA1 AQFB NZ X1,CUF1 IF NOT ATTACHING ERROR SA5 T+3 *OUT* MOVE QFEWL,X5,IQFE SX7 X5+QFEWL UPDATE *OUT* POINTER SA7 A5 BX5 X5-X5 CLEAR ERROR EQ CUF2 RESET ERROR ADDRESS CUF1 RJ RTF RETURN QUEUE FILE TO SOURCE DEVICE CUF2 SA4 CUFA RESET ERROR ADDRESS SA1 DSPB NZ X1,CUFX IF DUMPING ACTIVE SA1 IGCT INCREMENT IGNORED COUNT SX6 X1+B1 SA6 A1 EQ CUFX RETURN CUFA CON 0 ERROR ADDRESS DFD SPACE 4,20 DFD - DUMP QUEUED FILE DATA. * * COPY ONE QUEUED FILE FROM THE SOURCE DEVICE TO THE * DUMP FILE. * * ENTRY (X0) = NUMBER OF WORDS CURRENTLY IN BUFFER. * (DFBS) = DUMP FILE BLOCK SIZE. * (DACW) = QDUMP DATA CONTROL WORD SKELETON. * (ERCW) = QDUMP DUMP ERRORS CONTROL WORD SKELETON. * * EXIT (X5) = 0 IF NO ERROR. * .LT. 0, SKIP CURRENT FILE. * .GT. 0, *K* DISPLAY MESSAGE ADDRESS. * * USES X - ALL. * A - 0, 1, 2, 3, 5, 6, 7. * B - 6. * * CALLS BEC, CER, EPR, PFB, WDB. * * MACROS READW.

* CORRECT DUMP FOR FILES WITH ONLY EOI-S.

DFD13 SA2 DFDE

        NZ     X2,DFD13.1  IF CONTROL WORD WRITTEN
        SA3    QCWI        CALCULATE WORD COUNT
        SA1    DACW        QDUMP CONTROL WORD
        IX6    X0-X3
        SX6    X6+EORC+1   ADD EOR FLAG AND LEVEL 0 TRAILER WORD
        BX7    X1+X6
        SX0    X0+B1       INCREMENT WORD COUNT
        BX6    X6-X6       SET LEVEL 0 EOR
        SA7    WBUF+X3
        SA6    WBUF+X0

DFD13.1 SA2 DFDC

        ZR     X2,DFD14    IF NO EOR/EOF ON QUEUED FILE
        SX0    X0-1        DECREMENT WORD COUNT

* BUILD DUMP ERROR CONTROL WORD.

DFD14 SA1 DFDB

        ZR     X1,DFD15    IF NO DUMP ERRORS
        SA2    ERCW        ADD ERROR COUNT TO CONTROL WORD
        IX6    X2+X1
        SX0    X0+B1       INCREMENT WORD COUNT
        SA6    WBUF+X0

* WRITE BLOCK TO DUMP FILE.

DFD15 SX1 X0+ SET NUMBER OF WORDS IN BUFFER

        SA2    DFBS        DUMP FILE BLOCK SIZE
        IX6    X2-X1
        PL     X6,DFD16    IF ONE OR LESS BLOCKS
        SX1    X2

DFD16 RJ BEC BUILD EXTERNAL CONTROL WORD

        SX5    X0+         SET NUMBER OF WORDS IN BLOCK
        MX0    -6          CHECK FOR EXACT MASS STORAGE PRU
        BX7    -X0*X5
        SA7    DFDC
        RJ     WBD         WRITE BLOCK
        NZ     X5,DFD11    IF ERROR
        SA1    MSFG
        NZ     X1,DFDX     IF NOT MASS STORAGE

* WRITE EOR IF EXACT MASS STORAGE PRU.

        SA2    DFDC
        NZ     X2,DFDX     IF NOT EXACT PRU
        SX1    B0+         BUILD EXTERNAL CONTROL WORD
        RJ     BEC
        RJ     WBD         WRITE ZERO LENGTH EOR BLOCK
        NZ     X5,DFD11    IF ERROR

DFD SUBR ENTRY/EXIT

        BX6    X6-X6       CLEAR FLAGS
        SA6    DFDB
        SA6    A6+B1
        SA6    A6+1
        SA6    A6+1

* READ BLOCK OF DATA.

DFD1 SX6 X0+B1 SAVE INDEX OF FIRST CONTROL WORD IN BLOCK

        SX0    X6          ADD QDUMP CONTROL WORD
        SA6    QCWI

DFD2 SA0 Q READ CONTROL WORD

        READW  A0,WBUF,B1
        NZ     X1,DFD13    IF EOI
        SX6    B0+         CLEAR CONTROL WORD WRITTEN FLAG
        SA6    DFDE
        SA1    WBUF        CHECK FOR PARITY ERROR
        SX5    TCEPA       SET PARITY ERROR CODE
        NG     X1,DFD10    IF PARITY ERROR
        RJ     CER         CHECK FOR OTHER ERROR
        ZR     X5,DFD3     IF NO ERROR
        SX6    X5-TCEPA
        NZ     X6,DFD10    IF ERROR OTHER THAN PARITY ERROR

DFD3 SA1 WBUF FIND WORD COUNT IN BLOCK

        SX2    5
        SX3    X1+4        ROUND UP
        IX5    X3/X2
        READW  Q,WBUF+1+X0,X5+B1  READ REST OF BLOCK
        SA2    DBSL        BUFFER SEGMENT LIMIT
        IX0    X0+X5       INCREMENT BUFFER WORD COUNT
        IX4    X0-X2
        SX6    X5-100B
        SA6    DFDC        SAVE EOR/EOF STATUS
        ZR     X6,DFD7     IF NO EOR/EOF ON QUEUED FILE

* DETERMINE IF EOR OR EOF.

        SA6    DFDE        SET CONTROL WORD WRITTEN FLAG
        SA3    WBUF+1+X0   CHECK EOR LEVEL
        LX3    12
        MX1    -12
        BX3    -X1*X3
        BX7    X3
        SX1    X3-17B
        SA5    QCWI        CHECK NUMBER OF WORDS READ
        IX2    X0-X5
        SX6    B1
        NZ     X2,DFD4     IF EOR
        ZR     X1,DFD5     IF EOF

DFD4 SA7 A3+ RESET EOR LEVEL NUMBER

        SA6    DFDC        SET EOR STATUS
        SX0    X0+1        ADD ON EOR LEVEL CONTROL WORD
        SX4    X4+1

DFD5 NZ X4,DFD7 IF NOT EXACT BLOCK SIZE

        SA1    DFDC        CLEAR EOR/EOF STATUS
        BX6    X6-X6
        SA6    A1
        SX7    EOFC        EOF CODE
        NG     X1,DFD6     IF EOF
        SX7    EORC        EOR CODE

DFD6 SA1 DACW SET IN CONTROL WORD

        BX7    X1+X7
        SA7    A1

* WRITE BLOCK TO DUMP FILE.

DFD7 NG X4,DFD8 IF DATA READ .LT. BUFFER SEGMENT LIMIT

        SA0    DACW
        RJ     PFB         PROCESS FULL BUFFER SEGMENT
        SA1    DACW        RESET CONTROL WORD
        SA2    QCWI
        SX7    EOFC        SET EOF CONTROL WORD FOR EXACT BLOCK
        MX6    42
        BX6    X6*X1
        BX7    X6+X7
        SA6    A1
        SA7    WBUF+X2
        NZ     X5,DFDX     IF ERROR

DFD8 SA2 DFDC

        ZR     X2,DFD2     IF NO EOR/EOF ON QUEUED FILE

* WRITE DUMP CONTROL WORD FOR EOR/EOF BLOCK.

        SA3    QCWI
        SX1    EOFC        SET EOF CODE
        NG     X2,DFD9     IF EOF
        IX6    X0-X3       SET EOR CODE PLUS WORD COUNT
        SX1    X6+EORC

DFD9 SA2 DACW QDUMP CONTROL WORD

        BX6    X2+X1
        SA6    WBUF+X3
        EQ     DFD1

* PROCESS ERRORS.

DFD10 SX6 -1 SET READ ERROR FLAG

        SA6    DFDD

DFD11 SX7 X5-11B

        NZ     X7,DFD12    IF NOT SPECIAL MASS STORAGE ERROR
        SA3    A0+6        GET ERROR CODE
        MX0    -9
        BX5    -X0*X3
        SX5    X5+11B      BIAS ERROR CODE

DFD12 SB6 TCEP SET ERROR TABLE ADDRESS

        RJ     EPR         PROCESS ERROR
        NZ     X5,DFDX     IF ERROR
        SA1    DFDD        CHECK ERROR TYPE
        BX6    X6-X6       CLEAR FLAG
        SA6    A1
        ZR     X1,DFDX     IF WRITE ERROR
        SA7    CPFA        SAVE ERROR CODE ADDRESS
        SA1    DFDB        INCREMENT ERROR COUNT
        SX6    X1+B1
        SA6    A1
        EQ     DFD3        CONTINUE PROCESSING

DFDB CON 0 DUMP READ ERROR COUNT DFDC CON 0 EOR/EOF STATUS DFDD CON 0 READ/WRITE ERROR FLAG DFDE CON 0 CONTROL WORD WRITTEN FLAG EPR SPACE 4,30 EPR - ERROR CODE PROCESSOR. * * USE THE GIVEN ERROR CODE TO FIND THE CORRECT ERROR * MESSAGE OR PROCESSOR IN THE ERROR TABLES. IF A PROCESSOR * IS NEEDED, IT IS EXECUTED, THEN CONTROL IS SENT BACK TO * THE CALLING SUBROUTINE. * * ENTRY (X5) = ERROR CODE. * (B6) = ERROR TABLE ADDRESS. * (A0) = FET ADDRESS. * (DSPB) = 0, DUMP INACTIVE QUEUE FILES. * = 1, DUMP ACTIVE QUEUE FILES. * = 2, DUMP ALL QUEUE FILES. * (PQFA) = NEXT ENTRY IN QFT BUFFER IF *DSPB* .NE. 0. * (ERRA) .NE. 0 IF ALREADY PROCESSING AN ERROR EXIT. * (DQFB) .NE. 0 IF NO QUEUED FILE ATTACHED. * * EXIT (X5) = 0 IF TO CONTINUE PROCESSING. * .LT. 0 IF SKIP FILE. * .GT. 0 IF *K* DISPLAY MESSAGE ADDRESS. * (X7) = DISPOSITION CODE ADDRESS. * (ERRB) .NE. 0 IF *PO=N* SPECIFIED AND (X5) .GT. 0. * (IGCT) INCREMENTED IF DUMPING INACTIVE. * TO *ERR1* IF PROCESSING AN ERROR EXIT OR SECOND ERROR * FOUND WHILE PROCESSING FIRST ERROR. * * USES X - 0, 1, 2, 3, 5, 6, 7. * A - 1, 2, 5, 6, 7. * B - 5, 6. * * CALLS BOF, CDI, CUF, RTF, SQB. * * MACROS CLOSER, MESSAGE, RECALL, WRITECW. EPR SUBR ENTRY/EXIT SA1 ERRA NZ X1,ERR1 IF PROCESSING ERROR EXIT * CHECK FOR UNKNOWN ERROR CODE. SA2 B6-B1 NUMBER OF TABLE ENTRIES IX6 X5-X2 PL X6,EPR1 IF NOT IN TABLE * GET ERROR MESSAGE ADDRESS FROM TABLE. SA5 B6+X5 ZR X5,EPR1 IF DEFAULT MESSAGE TO BE USED NG X5,EPR3 IF PROCESSOR ADDRESS SB6 A5+ EPR1 SA5 B6 SET ERROR MESSAGE ADDRESS MESSAGE X5 SX2 IQ CHECK IF ATTACH IQFT ERROR SX1 A0 IX6 X2-X1 ZR X6,EPR2 IF OLD *IQFT* RJ CUF CLEAN UP FILE NZ X5,ERR1 IF ERROR SX5 X4+ RESET ORIGINAL ERROR EPR2 SA1 TARA+ARFC PL X1,EPRX IF *PO=N* NOT SPECIFIED SA6 ERRB SET ABORT FLAG SX5 MES2 *QDUMP ABORTED.* MESSAGE X5 EQ EPRX RETURN EPR3 SB5 X5 SET PROCESSOR ADDRESS JP B5 JUMP TO PROCESSOR EPR4 NZ X5,ERR1 IF ERROR RJ BOF BUILD OUTPUT FILE SX5 -1 SET SKIP FILE EQ EPRX RETURN EDF SPACE 4 EDF - PROCESS DUPLICATE FILE NAME.

EDF BX5 X5-X5 SET NO ERROR MESSAGE

        RJ     CUF         CLEAN UP FILE
        SX7    BOFF        *DUPLICATE FILE NAME - FILE IGNORED*
        EQ     EPR4        COMPLETE PROCESSING

EPE SPACE 4 EPE - PROCESS WRITE PARITY ERRORS. EPE SX2 Q CHECK IF READ ERROR SX3 A0 IX6 X2-X3 ZR X6,ERM IF READ MASS STORAGE ERROR SA1 MSFG ZR X1,EPE2 IF MASS STORAGE DUMP FILE * PROCESS TAPE DUMP FILE. MX6 1 SET PAUSE BIT SA1 B0 LX6 13 BX6 X1+X6 SA6 A1+ MESSAGE MES9,2 *TAPE ERROR - GO,JSN./DROP,JSN.* * WAIT FOR GO,JSN. FROM OPERATOR. EPE1 RECALL SA1 B0 CHECK FOR GO,JSN. MX0 1 LX0 13 BX2 X0*X1 NZ X2,EPE1 IF GO,JSN. NOT SPECIFIED * CLOSE ERRORED REEL. RECALL D SA1 EBUF SET PRU SIZE INTO CONTROL WORD SA2 DFBS DUMP FILE PRU SIZE MX0 -24 BX1 -X0*X1 LX2 24 BX6 X1+X2 SA6 A1 SX6 EBUF+3 SET *IN* AND *OUT* SX7 A1 SA6 DE+2 SA7 DE+3 WRITECW DE,R WRITE END OF VOLUME CONTROL WORD CLOSER D,UNLOAD,R WRITECW D,* PRESET WRITE FUNCTION SX5 B0+ CLEAR ERROR EQ EPRX RETURN * PROCESS MASS STORAGE DUMP FILE. EPE2 SA2 DQFB NZ X2,EPE3 IF NO QUEUED FILE TO RETURN RJ RTF RETURN FILE NZ X5,ERR1 IF ERROR SA1 DSPB NZ X1,EPE3 IF DUMPING ACTIVE SA1 IGCT INCREMENT IGNORED COUNT SX6 X1+1 SA6 A1+ EPE3 SX5 MES8 *BAD DUMP FILE.* MESSAGE X5 EQ EPR2 CHECK FOR *PO=N* SPECIFIED ERM SPACE 4 ERM - PROCESS READ MASS STORAGE ERRORS.

ERM SA2 TARA+ARFC CHECK ERRORED FILE PROCESSING STATUS

        LX2    59-57
        NG     X2,ERM1     IF PROCESSING SELECTED

* PROCESS READ ERRORS WITH ERRORED FILE PROCESSING DESELECTED.

        RJ     RTF         RETURN FILE TO SOURCE DEVICE
        SX7    BOFB        *READ ERROR - FILE IGNORED*
        SA1    DSPB
        NZ     X1,EPR4     IF DUMPING ACTIVE
        SA1    IGCT        INCREMENT IGNORED COUNT
        SX6    X1+B1
        SA6    A1
        EQ     EPR4        COMPLETE PROCESSING

* PROCESS READ ERRORS WITH ERRORED FILE PROCESSING SELECTED.

ERM1 SX5 B0+ CLEAR ERROR

        SX7    BOFC        *READ ERROR - FILE DUMPED*
        EQ     EPRX        RETURN

ESS SPACE 4 ESS - PROCESS INCORRECT SYSTEM SECTOR ERRORS. ESS BX5 X5-X5 SET NO ERROR MESSAGE RJ CUF CLEAN UP FILE SX7 BOFD *SYSTEM SECTOR ERROR - FILE IGNORED* EQ EPR4 COMPLETE PROCESSING ETL SPACE 4 ETL - PROCESS TRACK LIMIT.

ETL SA1 DQFB

        NZ     X1,ETL4     IF NO QUEUED FILE TO RETURN
        RJ     RTF         RETURN QUEUE FILE
        NZ     X5,ERR1     IF ERROR
        SX7    BOFE        *TRACK LIMIT - FILE IGNORED*
        RJ     BOF         BUILD OUTPUT FILE
        SA2    DSPB
        ZR     X2,ETL3     IF DUMPING INACTIVE

* EMPTY BUFFER CONTENTS.

ETL1 SA1 T+2 *IN*

        SA5    A1+B1       *OUT*
        IX7    X1-X5
        ZR     X7,ETL2     IF END OF BUFFER
        SX6    X5+QFEWL
        SA6    A5
        BX7    X7-X7       ZERO FAMILY/MACHINE ID WORD OF IQFT ENTRY
        SA7    X5+9
        SX7    BOFE        *TRACK LIMIT - FILE IGNORED*
        RJ     BOF         BUILD OUTPUT FILE
        EQ     ETL1        PROCESS NEXT ENTRY

ETL2 SA1 PQFA SET NEXT ENTRY ADDRESS

        SB6    X1+
        ZR     X1,ETL4     IF ALL QFT ENTRIES PROCESSED
        RJ     SQB         SEARCH QFT BUFFER
        SA6    PQFA        SAVE STATUS
        EQ     ETL1        PROCESS NEXT ENTRY

* REWRITE IQFT.

ETL3 SA1 IGCT INCREMENT IGNORED COUNT

        SX7    X1+B1
        SA7    A1
        SX6    B1+         SET TRACK LIMIT FLAG
        SA6    CDIA
        RJ     CDI         COPY OLD TO NEW IQFT
        NZ     X5,ERR1     IF ERROR
        SX6    B0+         CLEAR TRACK LIMIT AND BUFFER STATUS FLAGS
        SA6    CDIA
        SA6    PQFA

* SET FOR RETURN.

ETL4 SX5 MC07 *TRACK LIMIT*

        MESSAGE X5
        EQ     EPR2        CHECK FOR *PO=N* SPECIFIED

ERP$ SPACE 4,30 ERP$ - *READW*/*WRITEW* ERROR PROCESSOR. * * PROCESS ERRORS FOUND DURING A *READW* OR *WRITEW* CALL. * * ENTRY FROM *COMCCIO*. * (X2) = FET ADDRESS. * (X7) = ERROR CODE FROM FET. * (B6) = ADDRESS IN WORKING BUFFER. * (B7) = WORDS LEFT TO TRANSFER. * (DQFB) = 0 IF QUEUED FILE ATTACHED. * * EXIT (X5) .NE. 0 IF TRACK LIMIT OR MS PARITY ERROR. * (X5) .EQ. *MES5* IF IQFT READ ERROR. * (X2) = FET ADDRESS IF TAPE WRITE PARITY ERROR. * (B6) = WORKING BUFFER ADDRESS IF TAPE WRITE PARITY. * (B7) = WORDS TO TRANSFER IF TAPE WRITE PARITY ERROR. * TO *DQFX* IF NO QUEUED FILE PRESENT ON MASS STORAGE * WRITE PARITY ERROR OR TRACK LIMIT. * TO *DFDX* IF QUEUED FILE PRESENT. * TO *WTW1* IF WRITE PARITY ERROR. * TO *ERPX$* IF READ PARITY ERROR. * TO *RDW=* IF IQFT READ ERROR. * * USES X - 1, 2, 3, 5, 6, 7. * A - 1, 2, 3, 6, 7. * B - 6, 7. * * CALLS CER, EPR, IIM. * * MACROS MESSAGE, QCALL. ERP$ SX6 X2-Q ZR X6,ERP2 IF READ PARITY ERROR SX6 X2-IQ ZR X6,ERP3 IF IQFT READ ERROR SX6 X2 SAVE FET ADDRESS AND DATA POINTERS SA6 ERPA SX7 B7 SX6 B6+ SA6 A6+B1 SA7 A6+B1 * PROCESS ERROR. SB6 TCEP SET ERROR TABLE ADDRESS RJ CER CHECK FOR ERROR RJ EPR PROCESS ERROR NZ X5,ERP1 IF TRACK LIMIT OR MS PARITY ERROR * PROCESS TAPE WRITE PARITY ERROR. SA2 ERPA RESTORE FET ADDRESS SA1 A2+B1 RESTORE DATA POINTERS SA3 A1+B1 SB6 X1+ SB7 X3 EQ /COMCWTW/WTW1 JUMP BACK INTO ROUTINE * PROCESS MASS STORAGE PARITY ERROR OR TRACK LIMIT. ERP1 SA1 DQFB ZR X1,DFDX IF QUEUED FILE PRESENT ON WRITE ERROR EQ DQFX * CLEAR READ PARITY STATUS IN FET. ERP2 SA1 X2 CLEAR ERROR STATUS SX3 17BS10 BX6 -X3*X1 SA6 A1 EQ ERPX$ RESUME *CIO* FUNCTION ERP3 SX3 11B IX3 X7-X3 NZ X3,ERP2 IF NOT SPECIAL MASS STORAGE ERROR QCALL PGQF,IQ PURGE OLD IQFT FILE BX6 X6-X6 SA6 ATTA SA2 CEQP RJ IIM SX5 MES5 * QUEUES UNRECOVERABLE THIS DEVICE.* MESSAGE X5 EQ RDW= RETURN TO CONTINUE PROCESSING ERPA CON 0 FET ADDRESS ERPB CON 0 ADDRESS IN WORKING BUFFER ERPC CON 0 WORDS LEFT TO TRANSFER ERR SPACE 4,20 ERR - ERROR EXIT PROCESSOR. * * CALL ROUTINES TO CLEAN UP FILES AND SEND OUT A MESSAGE * FOLLOWING AN ERROR EXIT. * * ENTRY AT *ERR1* IF SECOND ERROR EXIT OR DOUBLE ERROR. * * EXIT (ERRB) .NE. 0 IF TO ABORT AFTER CLEAN UP FINISHED. * TO *QDU3* IF POSSIBLE TO CLEAN UP FILES. * * USES X - 1, 3, 5, 6. * A - 1, 6. * * CALLS CUF, RAF. * * MACROS ABORT, EREXIT, MESSAGE.

ERR SX6 B1+ SET ERROR EXIT FLAG

        SA6    ERRA
        EREXIT ERR1        SET SECOND ERROR EXIT
        RJ     CUF         CLEAN UP FILE
        NZ     X5,ERR1     IF ERROR
        SX5    MES2        *QDUMP ABORTED.*
        MESSAGE X5
        SA1    TARA+ARFC
        PL     X1,QDU3     IF *PO=N* NOT SPECIFIED
        SX6    B1+         SET ABORT FLAG
        SA6    ERRB
        EQ     QDU3        CLEAN UP FILES

* ABORT ON SECOND ERROR OR ERROR EXIT.

ERR1 SX3 IQ RETURN ATTACHED IQFT FILE

        RJ     RAF
        MESSAGE MES10      *QUEUE STATUS INDEFINITE.*
        MESSAGE MES2       *QDUMP ABORTED.*
        ABORT

ERRA CON 0 ERROR EXIT FLAG ERRB CON 0 ABORT AFTER CLEAN UP (*PO=N* SPECIFIED) FRB SPACE 4,40 * THE FOLLOWING FLAGS AND FIELDS ARE SET IN THE ROUTE * BLOCK CREATED BY *QDUMP*. * * ROUTE BLOCK FLAG BIT * WORD BITS SET FIELD DESCRIPTION * * 0 59 - 18 X FILE NAME. * 0 6 - 1 X FORCED ORIGIN TYPE. * 1 47 - 36 FORMS CODE (FLAG BIT AND FIELD SET * IF NOT *INPUT* FILE TYPE). * 1 35 - 24 DISPOSITION CODE. * 1 23 - 21 X EXTERNAL CHARACTERISTICS CODES. * 1 20 - 18 X INTERNAL CHARACTERISTICS CODES. * 2 23 - 0 TUI. * 3 11 - 0 X PRIORITY (BIT 12 SET ALSO). * 4 47 - 36 X FORCED SERVICE CLASS. * 4 16 - 12 X REPEAT COUNT. * 8 59 - 18 X OWNER USER NAME. * 9 59 - 18 X OWNER FAMILY NAME. * 10 59 - 18 X CREATION USER NAME. * 11 59 - 18 X CREATION FAMILY NAME. * * THE ROUTE TO CENTRAL SITE FLAG BIT IS SET IF THE * DESTINATION ROUTING INFORMATION FOR THE FILE CONTAINS * A LOCAL BATCH ID. * * IF A CREATION USER NAME EXISTS FOR THE FILE, THE ORIGIN * TYPE AND SERVICE CLASS WILL BE FORCED. FRB - FORM ROUTE BLOCK FROM SYSTEM SECTOR. * * FORM A ROUTE BLOCK USING SYSTEM SECTOR INFORMATION * AND COPY THIS BLOCK TO THE DUMP FILE ALONG WITH AN * ARITHMETIC CHECKSUM WHICH IS THE SUM OF THE * POPULATION COUNTS OF THE FIVE WORDS IN THE BLOCK. * * ENTRY (X0) = NUMBER OF WORDS CURRENTLY IN BUFFER. * (RBCW) = ROUTE BLOCK CONTROL WORD. * (BLOCK) = FIRST WORD OF ROUTE BLOCK. * * EXIT (X0) = NUMBER OF WORDS IN BUFFER. * * USES X - 0, 1, 2, 3, 5, 6, 7. * A - 1, 5, 6, 7. * * CALLS CBL, GSF. * * MACROS MOVE.

FRB SUBR ENTRY/EXIT

        SX6    X0+1        INDEX OF CONTROL WORD
        SA6    QCWI
        RJ     CBL         CLEAR ROUTE BLOCK

* SET FILE NAME IN WORD 0.

        SX5    IOSS        GET NAME FROM SYSTEM SECTOR
        RJ     GSF
        MX0    24
        BX7    X0*X6
        SA7    BLOCK

* SET FLAG BITS IN WORD 1.

        SX5    IOSS+3*5
        RJ     GSF
        LX6    18
        MX0    -6
        SX7    B1+B1       SET ROUTE TO CENTRAL SITE BIT
        BX3    -X0*X6
        ZR     X3,FRB1     IF BATCH ID DEFINED
        BX7    X7-X7       CLEAR BIT

FRB1 SA1 FRBA FLAG BITS

        BX1    X1+X7       ADD ROUTE TO CENTRAL SITE FLAG

* SET INTERNAL AND EXTERNAL CODES IN WORD 1.

        LX6    24
        MX0    6
        BX7    X0*X6       ADD INTERNAL CODE AND EXTERNAL CODE
        LX7    24
        LX0    24
        BX1    -X0*X1
        BX1    X1+X7

* SET DISPOSITION CODE IN WORD 1.

        SX5    DCSS        READ DISPOSITION CODE
        RJ     GSF
        MX0    12
        BX6    X0*X6
        LX6    12
        SX2    2RIN        CHECK FOR INPUT TYPE
        BX7    X2-X6
        LX6    24          ADD DISPOSITION CODE
        BX1    X1+X6
        ZR     X7,FRB2     IF INPUT TYPE

* SET FORMS CODE IN WORD 1.

        SX5    IOSS+3*5+4  READ FORMS CODE FROM SYSTEM SECTOR
        RJ     GSF
        MX0    12
        BX6    X0*X6
        LX6    -12
        BX7    X1+X6
        SX6    B1+         SET FORMS CODE BIT
        LX6    10
        BX1    X7+X6

FRB2 BX7 X1

        SA7    BLOCK+1

* SET ROUTE INFORMATION IN WORD 2.

        SX5    IOSS+3*5+1  READ ROUTE INFORMATION FROM SYSTEM SECTOR
        RJ     GSF
        MX0    24
        BX7    X0*X6
        LX7    24
        SA7    BLOCK+2

* SET PRIORITY IN WORD 3.

        SX5    PRSS        READ PRIORITY FROM SYSTEM SECTOR
        RJ     GSF
        MX0    12
        BX7    X0*X6
        LX7    12
        SA7    BLOCK+3

* SET REPEAT COUNT IN WORD 4.

        SX5    RCSS        READ REPEAT COUNT FROM SYSTEM SECTOR
        RJ     GSF
        SA1    BLOCK+4
        MX0    12
        BX7    X0*X6
        LX7    24
        BX7    X1+X7
        SA7    A1

* SET FORCED ORIGIN TYPE AND SERVICE CLASS.

        SX5    ACSS
        RJ     GSF
        MX0    42
        BX6    X0*X6
        SX1    EFSC        PRESET ORIGIN DEFAULT FLAG
        ZR     X6,FRB3     IF NO CREATION USER NAME
        SA6    BLOCK+10    SET CREATION USER NAME
        SX5    FMSS        SET CREATION FAMILY NAME
        RJ     GSF
        SA6    BLOCK+11
        SX5    IOSS+SCLQ*5 GET SERVICE CLASS AND ORIGIN TYPE
        RJ     GSF
        MX0    -6
        LX6    6           GET SERVICE CLASS
        BX1    -X0*X6
        LX6    6           GET ORIGIN TYPE
        BX2    -X0*X6
        SA5    BLOCK       PLACE ORIGIN TYPE INTO PARAMETER BLOCK
        LX2    1
        BX7    X5+X2
        SX5    4000B       SET ORIGIN TYPE FLAG
        BX7    X7+X5
        SA7    A5
        SA2    BLOCK+1
        LX5    9           SET SERVICE CLASS FLAG
        BX7    X2+X5
        SA7    A2
        SA1    FRBB+X1     GET SERVICE CLASS
        SA2    BLOCK+4     ADD TO PARAMETER BLOCK
        BX7    X1+X2
        SA7    A2
        SX1    EFCU        SET CREATION FAMILY/USER NAME FLAG

FRB3 SX5 OASS SET OWNER USER NAME

        RJ     GSF
        MX0    42
        BX6    X0*X6
        ZR     X6,FRB4     IF NO OWNER USER NAME
        SA6    BLOCK+8
        SX5    FOSS        SET OWNER FAMILY NAME
        RJ     GSF
        MX0    42
        BX6    X0*X6
        SX1    X1+EFOU     SET OWNER FAMILY/USER NAME FLAG
        SA6    BLOCK+9

FRB4 BX7 X1 SET FLAGS IN PARAMETER BLOCK

        SA7    BLOCK+7

* GENERATE CHECKSUM OF POPULATION COUNTS.

        SX0    B0+         CHECKSUM
        SX5    EPBL-1      SET INDEX

FRB5 SA1 BLOCK+X5 GET ROUTE BLOCK WORD

        CX2    X1
        IX0    X0+X2       INCREMENT CHECKSUM
        SX5    X5-1
        PL     X5,FRB5     IF NOT ALL OF BLOCK COUNTED

* MOVE ROUTE BLOCK TO BUFFER.

        SA5    QCWI        SET CONTROL WORD INDEX
        MOVE   EPBL,BLOCK,WBUF+1+X5
        SX7    X0+         SET CHECKSUM
        SA7    WBUF+EPBL+X5
        SX0    X5+EPBL     INCREMENT BUFFER WORD COUNT

* STORE CONTROL WORD IN BUFFER.

        SA1    RBCW        CONTROL WORD
        BX7    X1
        SA7    WBUF+X5
        EQ     FRBX        RETURN

FRBA CON FRFN+FRRC+FRFC+FRPR+FRIC+FREC+FREB FLAG BITS FRBB BSS 0

        LOC    0
        BSS    1           NOT USED
        LIST   D

.SCL HERE

        LIST   *
        LOC    *O

GAD SPACE 4,10 GAD - GET ACCESS LIMITS FOR DEVICE(S) FOR SELECTED FAMILY. * * ENTRY (X3) = FAMILY NAME. * * EXIT (DVLA) AND (DVUA) RESET TO LIMITS FOR SELECTED FAMILY. * * USES X - 0, 1, 4, 5, 6, 7. * A - 1, 4, 5, 6, 7. * B - 6, 7. GAD SUBR ENTRY/EXIT MX0 42 SX6 8 INITIALIZE DEVICE LEVEL LIMITS SX7 -B1 SA6 GADA SA7 GADB SA1 TARA+ARDN CHECK DEVICE NUMBER SELECTION ZR X1,GAD2 IF ALL DEVICES SELECTED * PROCESS SPECIFIC DEVICE FOR FAMILY. SB6 X1 GET EST ORDINAL FOR DEVICE SA1 TDAA+B6 GET DEVICE ACCESS LIMITS MX0 -3 BX6 -X0*X1 AX1 3 BX7 -X0*X1 GAD1 SA6 DVUA RESET LIMITS SA7 DVLA EQ GADX RETURN * PROCESS ALL DEVICES FOR SPECIFIED FAMILY. GAD2 SB7 ESMX SET NUMBER OF ENTRIES TO CHECK SA1 TEQA SB6 B0+ INITIALIZE TABLE INDEX GAD3 BX1 X0*X1 GET FAMILY NAME BX4 X1-X3 ZR X4,GAD5 IF DEVICE FOUND GAD4 SA1 A1+B1 GET NEXT DEVICE ENTRY SB7 B7-B1 SB6 B6+1 INCREMENT TABLE INDEX PL B7,GAD3 IF NOT END OF DEVICES SA1 GADA RETURN DEVICE LIMITS SA4 GADB BX6 X4 BX7 X1 EQ GAD1 RESET LIMITS GAD5 SA4 TDAA+B6 GET ACCESS LEVELS FOR DEVICE MX1 -3 BX6 -X1*X4 LX4 -3 BX7 -X1*X4 SA4 GADA COMPARE WITH CURRENT LIMITS SA5 GADB IX4 X7-X4 IX5 X5-X6 NG X4,GAD6 IF NEW LEVEL IS LOWER EQ GAD7 CHECK UPPER LEVEL GAD6 SA7 A4+ SET NEW LOWER LEVEL LIMIT GAD7 PL X5,GAD4 IF NEW LEVEL NOT HIGHER SA6 A5+ SET NEW UPPER LEVEL LIMIT EQ GAD4 CHECK NEXT ENTRY GADA BSS 1 CURRENT LOWER LEVEL LIMIT GADB BSS 1 CURRENT UPPER LEVEL LIMIT GSF SPACE 4,20 GSF - GET SYSTEM SECTOR FIELD. * * RETURN 60 BITS OF DATA FROM THE SYSTEM SECTOR WITH * THE SPECIFIED FIELD LEFT JUSTIFIED IN THE WORD. * * ENTRY (X5) = ADDRESS OF FIELD BIASED BY *BFMS*+2. * (SBUF) = SYSTEM SECTOR FIRST WORD. * * EXIT (X6) = FIELD LEFT JUSTIFIED. * * USES X - 0, 2, 3, 4, 5, 6, 7. * A - 4, 5. * B - 5, 6.

GSF SUBR ENTRY/EXIT

        SX4    X5-BFMS-2   ADJUST ADDRESS
        SX3    5           CONVERT TO CM ADDRESS
        SX5    X4+
        SX2    X3
        IX6    X4/X3
        IX7    X6*X2
        IX5    X5-X7       GET BYTE COUNT

* FORM MASK.

        SX3    12
        SX2    60
        IX3    X3*X5
        MX0    1
        SA4    X6+SBUF     GET FIRST WORD
        SB6    X3          SET SHIFT COUNT
        IX3    X2-X3       SET SHIFT COUNT = 60D - COUNT
        SA5    A4+B1
        SB5    X3-1
        AX0    B5,X0       FORM MASK

* GET DATA FROM WORDS.

        LX4    B6,X4       POSITION WORDS
        LX5    B6,X5
        BX6    X0*X4       MASK UPPER DATA
        BX7    -X0*X5      MASK LOWER DATA
        BX6    X6+X7       MERGE DATA
        EQ     GSFX

IDM SPACE 4,20 IDM - ISSUE DAYFILE MESSAGES. * * FORMAT AND ISSUE MESSAGES APPLICABLE TO THE COMPLETED * QUEUE OPERATION. * * ENTRY (DPCT) = COUNT OF FILES DUMPED ON DEVICE. * (IGCT) = COUNT OF FILES IGNORED. * (CEQP) = CURRENT EQUIPMENT. * (DSPB) = 0 IF DUMPING INACTIVE. * * EXIT (DPCT) = (IGCT) = 0. * * USES X - ALL. * A - 1, 2, 3, 4, 5, 6, 7. * * CALLS CDD, COD, SFN. * * MACROS MESSAGE. IDM SUBR ENTRY/EXIT * SET INDEX INTO MESSAGE TABLE. SA1 DSPB SX6 B1+ NZ X1,IDM1 IF DUMPING ACTIVE SX6 B0+ * CHECK DUMPED FILE COUNT. IDM1 SA5 TFCM+X6 GET MESSAGE ADDRESS SA1 DPCT DUMPED FILE COUNT ZR X1,IDM3 IF NO COUNT * SET UP MESSAGE. IDM2 BX6 X6-X6 CLEAR COUNT SA6 A1 RJ CDD CONVERT COUNT LX6 30 SA5 X5 MX0 -30 BX6 X0*X6 SA3 CEQP CURRENT EQUIPMENT SA4 TEQA+X3 BX5 -X0*X5 MX0 42 IX6 X6+X5 BX1 X0*X4 FAMILY NAME SA6 A5 RJ SFN SPACE FILL NAME MX0 48 SA2 A5+3 LX4 48 LX6 54 BX2 -X0*X2 CLEAR PREVIOUS FAMILY BX6 X0*X6 MX0 -6 IX6 X6+X2 APPEND *.* BX1 -X0*X4 SA6 A2+ RJ COD CONVERT DEVICE NUMBER MX0 -12 SA3 A6-B1 BX6 -X0*X6 CLEAR SPACES LX0 24 BX3 X0*X3 CLEAR OLD DEVICE NUMBER LX6 24 IX7 X6+X3 SA7 A3 MESSAGE A5 ISSUE MESSAGE * CHECK IGNORED COUNT. IDM3 SA1 IGCT ZR X1,IDMX IF NO COUNT SA5 TFCM+2 GET IGNORED MESSAGE ADDRESS EQ IDM2 SET UP IGNORED MESSAGE TFCM SPACE 4 TFCM BSS 0 FILE COUNT MESSAGE TABLE CON MSG1 INACTIVE DUMPED CON MSG2 ACTIVE DUMPED CON MSG3 IGNORED MSG1 DATA C* XXXX FILES DUMPED(I) DNYY FM AAAAAAA.* MSG2 DATA C* XXXX FILES DUMPED(A) DNYY FM AAAAAAA.* MSG3 DATA C* XXXX FILES IGNORED DNYY FM AAAAAAA.* IIM SPACE 4,20 IIM - ISSUE IQFT ERROR MESSAGE. * * SET UP AND ISSUE THE MESSAGE * IQFT FILE ERROR DN XX * FAMILY AAAAAAA.* TO THE DAYFILE. * * ENTRY (X2) = IQFT EST ORDINAL. * * USES X - 0, 1, 4, 6, 7. * A - 1, 4, 6, 7. * * CALLS COD, SFN. * * MACROS MESSAGE.

IIM SUBR ENTRY/EXIT

* SET FAMILY NAME IN MESSAGE.

        SA4    TEQA+X2     FAMILY NAME
        MX0    42
        BX1    X0*X4
        RJ     SFN         SPACE FILL NAME
        SA1    IIMA+3      SET IN MESSAGE
        BX1    -X0*X1
        BX6    X0*X6
        BX7    X1+X6
        SA7    A1

* SET DEVICE NUMBER IN MESSAGE.

        LX4    -12         DEVICE NUMBER
        MX0    -6
        BX1    -X0*X4
        RJ     COD         CONVERT TO DISPLAY CODE
        SA1    IIMA+2      SET IN MESSAGE
        MX0    12
        BX4    X0*X4
        BX1    -X0*X1
        BX6    X1+X4
        SA6    A1+
        MESSAGE IIMA       * IQFT FILE ERROR DN XX FAMILY AAAAAAA.*
        EQ     IIMX        RETURN

IIMA DATA C* IQFT FILE ERROR DN XX FAMILY AAAAAAA.* PFB SPACE 4,20 PFB - PROCESS FULL BLOCK OF DATA. * * WRITE ONE FULL BLOCK OF DATA TO THE DUMP FILE AND * SET UP THE BUFFER AND POINTERS FOR THE NEXT BLOCK. * * ENTRY (X4) = NUMBER OF EXTRA WORDS IN BUFFER. * (A0) = CONTROL WORD ADDRESS. * (QCWI) = CONTROL WORD BUFFER INDEX. * (DBSL) = NUMBER OF WORDS OF FULL BUFFER SEGMENTS. * (DFBS) = MAXIMUM NUMBER OF WORDS IN BLOCK. * * EXIT (X0) = NUMBER OF WORDS AT TOP OF BUFFER. * (QWCI) = NEW CONTROL WORD BUFFER INDEX. * (X5) = 0 IF NO ERROR. * = *K* DISPLAY MESSAGE ADDRESS IF WRITE ERROR. * * USES X - 0, 1, 2, 3, 5, 6, 7. * A - 1, 2, 3, 5, 6, 7. * B - 6. * * CALLS BEC, EPR, WBD. * * MACROS MOVE. * SET UP NEXT BUFFER SEGMENT. PFB3 MOVE X4,WBUF+X5+1,WBUF+X5+2 ALLOW FOR QDUMP CONTROL WORD SX6 X5+1 SX5 B0+ INDICATE NO ERROR PFB4 SA6 QCWI UPDATE CONTROL WORD INDEX SX0 X0+1 ADD FOR QDUMP CONTROL WORD SX7 X6+DBLL-1 UPDATE BUFFER SEGMENT LIMIT SA7 DBSL PFB SUBR ENTRY/EXIT * BUILD CONTROL WORDS. SA2 QCWI BUILD QDUMP CONTROL WORD SA5 DBSL BUFFER SEGMENT LIMIT IX1 X5-X2 NUMBER OF WORDS SINCE CONTROL WORD SA3 A0 MX6 51 BX3 X6*X3 IX6 X3+X1 SA3 DBLS DUMP BLOCK LOGICAL SIZE SA6 WBUF+X2 IX3 X5-X3 NG X3,PFB3 IF BUFFER SEGMENT (BUFFER NOT FULL) SA1 DFBS WORDS IN DUMP FILE BLOCK RJ BEC BUILD EXTERNAL CONTROL WORD * WRITE BLOCK OF DATA. SA5 DBSL BUFFER SEGMENT LIMIT BX7 X4 SAVE WORD COUNT SA7 PFBA RJ WBD WRITE BLOCK TO DUMP FILE ZR X5,PFB2 IF NO ERROR * PROCESS ERRORS. SX7 X5-11B NZ X7,PFB1 IF NOT SPECIAL MASS STORAGE ERROR SA3 D+6 GET ERROR CODE MX0 -9 BX5 -X0*X3 SX5 X5+11B BIAS ERROR CODE PFB1 SB6 TCEP SET ERROR TABLE ADDRESS RJ EPR PROCESS ERROR NZ X5,PFBX IF ERROR * SET BUFFER FOR BEGINNING OF NEXT BLOCK. PFB2 SA1 PFBA RESTORE REMAINING WORD COUNT SA2 DBLS DUMP BLOCK LOGICAL SIZE SX0 X1 MOVE X0,WBUF+X2+1,WBUF+2 MOVE WORDS TO TOP OF BUFFER SX6 B1 SET INDEX OF CONTROL WORD IN NEXT BLOCK EQ PFB4 SET POINTERS AND RETURN PFBA CON 0 REMAINING WORD COUNTS PQF SPACE 4,30 PQF - PROCESS QUEUE FILES. * * CALL ROUTINES TO ATTACH, READ AND SEARCH THE IQFT * FILE FOR INACTIVE OR QFT FOR ACTIVE QUEUE FILES THAT * MEET THE SPECIFICATIONS OF THE *K* DISPLAY INPUT AND * DUMP THOSE FILES. * * ENTRY (DSPB) = 0, DUMP INACTIVE QUEUE FILES. * = 1, DUMP ACTIVE QUEUE FILES. * = 2, DUMP ALL QUEUE FILES. * (CEQP) = CURRENT EQUIPMENT. * (X0) = 0 IF INITIAL CALL ON ACTIVE FILES. * = 1 IF NON-INITIAL CALL. * (B6) = QFT BUFFER ADDRESS IF NON-INITIAL CALL. * * EXIT (X5) = 0 IF NO ERROR. * = *K* DISPLAY MESSAGE ADDRESS IF ERROR. * * USES X - 1, 2, 3, 5. * A - 0, 1, 2, 6. * B - 6. * * CALLS ATT, CER, CQD, EPR, IIM, RAF, RQT, SIB, SQB. * * MACROS READEI, RECALL.

PQF6 SA2 CEQP

        RJ     IIM         ISSUE IQFT ERROR MESSAGE
        RJ     CER         CLEAR ERROR
        SB6    TQEP        SET ERROR TABLE ADDRESS
        RJ     EPR         PROCESS ERROR

PQF7 BX5 X5-X5 CLEAR ERROR TO CONTINUE

PQF SUBR ENTRY/EXIT

        SA1    DSPB
        ZR     X1,PQF2     IF DUMP INACTIVE FILES
        NZ     X0,PQF1     IF NON-INITIAL CALL

* SEARCH QFT FOR QUEUE FILES TO DUMP.

        RJ     RQT         READ QFT
        SB6    RBUF+QFTE   SET QFT BUFFER ADDRESS

PQF1 RJ SQB SEARCH QFT BUFFER ON SPECIFIED OPTIONS

        SA6    PQFA        SAVE END OF BUFFER STATUS
        SA1    T+2
        SA2    A1+B1
        IX5    X1-X2       *IN* - *OUT*
        ZR     X5,PQFX     IF BUFFER EMPTY
        EQ     PQF4        COPY QUEUE FILES TO DESTINATION DEVICE

* RETURN IQFT FILE.

PQF2 RECALL Q

        RECALL D
        SX3    IQ          RETURN ATTACHED IQFT FILE
        RJ     RAF

* ATTACH AND READ IQFT.

        SA2    CEQP        CURRENT EST ORDINAL
        SA1    TEQA+X2     CHECK FOR IQFT
        LX1    59-0
        BX5    X5-X5       CLEAR ERROR FLAG
        PL     X1,PQFX     IF NO IQFT ON DEVICE
        SA0    X3
        RJ     ATT         ATTACH IQFT FILE
        NZ     X5,PQF6     IF ERROR
        READEI IQ,R        READ IQFT

* SEARCH IQFT FOR QUEUE FILES TO DUMP.

PQF3 RJ SIB SEARCH IQFT BUFFER ON SPECIFIED OPTIONS

        SA6    PQFA        SAVE END OF BUFFER STATUS
        NZ     X5,PQF5     IF ERROR

PQF4 RJ CQD COPY QUEUE FILES TO DESTINATION FILE

* CHECK FOR MORE TABLE TO SEARCH.

        NZ     X5,PQF5     IF ERROR
        SA1    PQFA
        SB6    X1+         SET NEXT TABLE ADDRESS
        ZR     X1,PQFX     IF ENTIRE TABLE SEARCHED
        SA2    DSPB
        ZR     X2,PQF3     IF DUMP INACTIVE FILES
        EQ     PQF1        CONTINUE QFT SEARCH

PQF5 SX1 MES5

        IX1    X5-X1
        NZ     X1,PQF7     IF IQFT READ ERROR
        EQ     PQFX        RETURN

PQFA CON 0 END OF BUFFER STATUS RTF SPACE 4,20 RTF - RETURN LOCAL FILE. * * RETURN THE QUEUED FILE BACK TO THE SOURCE DEVICE. * * EXIT (X5) = 0 IF NO ERROR. * = ERROR CODE IF AN ERROR. * * USES X - 0, 1, 5, 6, 7. * A - 0, 1, 5, 6, 7. * * CALLS CBL, CER. * * MACROS QCALL, RECALL, ROUTE. * RETURN ACTIVE QUEUED FILE. RTF1 RJ CBL CLEAR ROUTE BLOCK SA1 T+3 SET UP ROUTE BLOCK SA1 X1-QFEWL MX0 24 BX6 X0*X1 SA6 BLOCK SA1 RTFA SET EXTENDED BLOCK PRESENT FLAG BX6 X1 SA6 A6+B1 SA1 RTFB SET SPECIAL REQUEUE OPERATION FLAG BX7 X1 SA7 BLOCK+7 BX5 X5-X5 CLEAR ERROR ROUTE BLOCK,RECALL RTF SUBR ENTRY/EXIT RECALL Q MAKE QUEUED FILE FET QUIET BEFORE RETURN SA1 DSPB NZ X1,RTF1 IF DUMPING ACTIVE FILES * RETURN INACTIVE QUEUED FILE. SA5 T+3 SET BACK *OUT* POINTER SX7 X5-QFEWL SA7 A5+ SA0 T QCALL RIQF,T SX7 X5 UPDATE *OUT* POINTER SA7 A5 RJ CER CHECK FOR ERROR EQ RTFX RETURN RTFA VFD 42/0,18/FREB EXTENDED BLOCK PRESENT FLAG RTFB VFD 42/0,18/EFRQ SPECIAL REQUEUE OPERATION FLAG SIB SPACE 4,20 SIB - SEARCH IQFT BUFFER ON SPECIFIED OPTIONS. * * SEARCH THE IQFT FOR QUEUE FILES THAT MEET THE * SPECIFICATIONS GIVEN BY THE *K* DISPLAY INPUT AND * RETURN WHEN ONE IS FOUND THAT DOES. * * ENTRY (CEQP) = CURRENT EQUIPMENT. * * EXIT (X6) = 1 IF MORE BUFFER TO SEARCH. * = 0 IF ENTIRE BUFFER SEARCHED. * (IGCT) = NUMBER OF FILES IGNORED ON DEVICE. * (IQFE) = FIRST WORD OF IQFT ENTRY. * (X5) = 0 IF NO ERROR. * = *K* DISPLAY MESSAGE ADDRESS IF ERROR * * USES X - 0, 2, 3, 4, 5, 6, 7. * A - 2, 3, 7. * * CALLS CLD, PLE, VAF, VIE. * * MACROS READW, WRITEW.

SIB4 BX6 X6-X6

SIB SUBR ENTRY/EXIT

        SX7    TBUF        REWIND POINTERS
        SA7    T+2
        SA7    A7+B1
        EQ     SIB3        VERIFY IQFT ENTRY

* PROCESS FILES NOT MEETING CRITERIA.

SIB1 RJ PLE PROCESS LENGTH ERROR SIB2 SA2 IGCT INCREMENT IGNORED FILE COUNT

        SX7    X2+B1
        SA7    A2

* VERIFY IQFT ENTRY.

SIB3 BX5 X5-X5 CLEAR ERROR STATUS

        READW  IQ,IQFE,QFEWL
        NZ     X5,SIBX     IF IQFT READ ERROR
        NZ     X1,SIB4     IF EOF/EOI
        SA2    IQFE+8
        NG     X2,SIB1     IF LENGTH ERROR
        SA3    IQFE+2      CHECK LOGICAL IDENTIFIER
        SX4    B0+         SET NO NEED TO CHECK FOR LID IN TABLE
        RJ     CLD
        NZ     X3,SIB2     IF NO MATCH
        SA3    IQFE+INSQ   GET ACCESS LEVEL OF FILE
        RJ     VAF         VALIDATE ACCESS LEVEL
        NZ     X1,SIB2     IF FILE NOT SELECTED
        SX6    B0+         SET ACTIVATE REQUEST
        RJ     VIE         VERIFY IQFT ENTRY
        NZ     X1,SIB2     IF NO MATCH
        SA2    CEQP        SET CURRENT EQUIPMENT IN ENTRY
        LX2    48
        MX0    12
        SA3    IQFE+1
        BX6    -X0*X3
        BX7    X6+X2
        SA7    A3

* MOVE ENTRY TO BUFFER.

        WRITEW T,IQFE,QFEWL
        SX6    B1          SET MORE TO PROCESS
        EQ     SIBX        RETURN

SQB SPACE 4,20 SQB - SEARCH QFT BUFFER ON SPECIFIED OPTIONS. * * SEARCH THE QFT FOR QUEUE FILES THAT MEET THE * SPECIFICATIONS GIVEN BY THE *K* DISPLAY INPUT AND * BUILD A PSEUDO IQFT ENTRY IN THE TEMPORARY IQFT * BUFFER FOR THOSE THAT DO. * * ENTRY (B6) = BUFFER ADDRESS OF NEXT ENTRY TO SEARCH. * (QFTS) = QFT LENGTH. * (CEQP) = CURRENT EQUIPMENT. * * EXIT (X6) = 0 IF ENTIRE BUFFER SEARCHED. * = ADDRESS OF NEXT ENTRY OTHERWISE. * * USES X - 0, 1, 3, 4, 5, 6, 7. * A - 3, 4, 5, 6, 7. * B - 3, 6. * * CALLS CLD, VAF, VQE. * * MACROS MOVE. SQB4 SX6 B6 SET ADDRESS OF NEXT ENTRY SQB SUBR ENTRY/EXIT SX7 TBUF REWIND POINTERS SA7 T+2 SA7 A7+B1 BX5 X5-X5 PRESET NOT FULL BUFFER * VERIFY QFT ENTRY. SQB1 NG X5,SQB4 IF FULL BUFFER SA4 B6 READ QFT ENTRY MX0 -12 CLEAR LINKAGE FIELD BX3 X0*X4 ZR X3,SQB3 IF EMPTY QFT SLOT LX4 59-1 NG X4,SQB3 IF ATTACHED TO A JOB SX4 B0 SET NO NEED TO CHECK FOR LID IN TABLE SA3 B6+2 CHECK LOGICAL IDENTIFIER RJ CLD NZ X3,SQB3 IF NO MATCH SA3 B6+INSQ GET ACCESS LEVEL RJ VAF VALIDATE ACCESS LEVEL OF FILE NZ X1,SQB3 IF FILE NOT SELECTED SX1 B6+ SET QFT ADDRESS RJ VQE VERIFY QFT ENTRY NZ X1,SQB3 IF NO MATCH SA3 CEQP SET CURRENT EQUIPMENT IX7 X3-X2 NZ X7,SQB3 IF NOT CORRECT EQUIPMENT * MOVE PSEUDO IQFT ENTRY TO BUFFER. SA5 T+2 *IN* SX6 B6-RBUF SET QFT ORDINAL IN ENTRY SX1 QFTE IX6 X6/X1 SA6 X5+QFEWL-1 SB3 QFEWL-QFTE-1 NUMBER OF WORDS TO CLEAR BX6 X6-X6 SQB2 SB3 B3-B1 SA6 A6-B1 NZ B3,SQB2 IF MORE WORDS TO CLEAR MOVE QFTE,B6,X5 SX7 X5+QFEWL UPDATE *IN* POINTER SA7 A5+ SA3 A5+2 *LIMIT* SX3 X3 CHECK FOR FULL BUFFER IX6 X3-X7 SX5 X6-QFEWL * CHECK FOR END OF QFT. SQB3 SB6 B6+QFTE SET NEXT ENTRY ADDRESS SA3 QFTS QFT LENGTH SX6 RBUF+X3 SX3 B6+QFTE IX4 X3-X6 BX6 X6-X6 SET BUFFER SEARCHED NG X4,SQB1 IF NOT END OF QFT ZR X4,SQB1 IF NOT END OF QFT EQ SQBX RETURN VAF SPACE 4,15 VAF - VALIDATE ACCESS LEVEL OF FILE. * * CALL *CAF* TO CHECK ACCESS LEVEL OF FILE. * * ENTRY (A3) = ADDRESS OF *INSQ* WORD OF QFT ENTRY OF FILE. * * EXIT (X1) = 0, IF FILE SELECTED. * * USES X - 0, 1, 2, 4. * A - 1, 2, 4. * B - 2. * * CALLS CAF.

VAF SUBR ENTRY/EXIT

        SB2    B1+         FORCE CHECK OF ORIGIN TYPE ACCESS LIMITS
        SA4    ALFG
        SA2    DVLA        PRESET TO USE DEVICE ACCESS LEVEL LIMITS
        SA1    DVUA
        ZR     X4,VAF1     IF DEVICE LEVELS TO BE USED
        SA2    TARA+ARLA   USE ACCESS LEVELS FROM ARGUMENT TABLE
        SA1    TARA+ARUA

VAF1 RJ CAF CHECK ACCESS LEVEL OF FILE

        EQ     VAFX        RETURN

WBD SPACE 4,20 WBD - WRITE BLOCK OF DATA TO DUMP FILE. * * WRITE ONE BLOCK OF DATA TO THE DUMP FILE USING CONTROL * WORDS AND CHECK FOR WRITE ERRORS. * * ENTRY (X5) = NUMBER OF WORDS IN BUFFER. * (DFBS) = DUMP FILE BLOCK SIZE. * * EXIT (X5) = 0 IF NO ERROR. * .NE. 0, ERROR CODE. * (A0) = FET ADDRESS OF DUMP FILE. * * USES X - ALL. * A - 0, 1, 2, 4, 6, 7. * * CALLS BEC, CER. * * MACROS WRITEW. WBD SUBR ENTRY/EXIT SA2 DFBS DUMP FILE BLOCK SIZE SX4 B0+ CLEAR INDEX BX6 X2 SA6 WBDB IX7 X5-X6 PL X7,WBD1 IF AT LEAST ONE BLOCK SIZE SX6 X5 SET NUMBER OF WORDS IN BUFFER SA6 A6 WBD1 SA1 WBUF+1+X6 SAVE WORD FOLLOWING BLOCK BX6 X1 BX7 X7-X7 INSERT TRAILER CONTROL WORD SA6 WBDA SA7 A1+ * WRITE BLOCK TO DUMP FILE. SA2 DFBS DUMP FILE BLOCK SIZE IX6 X5-X2 SX0 X2 PL X6,WBD2 IF AT LEAST ONE BLOCK SIZE LEFT SX0 X5+ WBD2 SA0 D WRITEW A0,WBUF+X4,X0+2 SX3 X5 SAVE BLOCK WORD COUNT * RESTORE DESTROYED WORD. SA1 WBDA RESTORE WORD FOLLOWING BLOCK BX6 X1 SA2 WBDB SA6 WBUF+1+X2 RJ CER CHECK FOR ERROR SA1 MSFG NZ X1,WBDX IF NOT MASS STORAGE NZ X5,WBDX IF ERROR * PROCESS MASS STORAGE BLOCK. IX0 X3-X0 SET REMAINING WORD COUNT ZR X0,WBDX IF END OF DUMP BLOCK SA1 DFBS BUILD EXTERNAL CONTROL WORD IX7 X0-X1 PL X7,WBD3 IF AT LEAST ONE PRU LEFT SX1 X0 WBD3 RJ BEC SA1 WBUF SET CONTROL WORD IN BUFFER SA4 WBDB SET INDEX FOR NEXT PRU BX7 X1 SA7 WBUF+X4 IX6 X4+X5 SA6 A4 SX5 X0 SET WORD COUNT EQ WBD1 PROCESS NEXT BLOCK WBDA CON 0 WORD FOLLOWING BLOCK OF DATA WBDB CON 0 INDEX FOR WORD FOLLOWING BLOCK TITLE ERROR PROCESSING TABLES. TCEP - TABLE OF *CIO* ERROR PROCESSING. * * INDEX INTO TABLE IS *CIO* ERROR CODE IF FET+0 CODE IS 1 * OR 2. IF FET+0 CODE IS 11B, INDEX INTO TABLE IS ERROR * CODE BIASED BY 11B.

        CON    21B         NUMBER OF TABLE ENTRIES

TCEP BSS 0 TABLE OF *CIO* ERROR PROCESSING

        LOC    0
        CON    MC00        *CIO* ERROR
        VFD    1/1,59/ETL  TRACK LIMIT

TCEPA VFD 1/1,59/EPE PARITY ERROR

        BSSZ   7
        VFD    1/1,59/EPE  PARITY ERROR
        CON    MC02        ADDRESS ERROR
        CON    MC03        DEVICE STATUS ERROR
        CON    MC04        FUNCTION REJECT ERROR
        CON    MC05        DEVICE RESERVED
        CON    MC06        DEVICE NOT READY
        VFD    1/1,59/ETL  TRACK LIMIT
        LOC    *O
        SPACE  4

TQEP - TABLE OF *QFM* ERROR PROCESSING. * * INDEX INTO TABLE IS *QFM* ERROR CODE. CON TQEPL NUMBER OF TABLE ENTRIES TQEP BSS 0 TABLE OF *QFM* ERROR PROCESSING LOC 0 CON MQ00 *QFM* ERROR FNFE CON MQ01 FILE NOT FOUND FAIE CON MQ02 FILE ALREADY INTERLOCKED TASE CON 0 IQFT TRACK ALREADY ASSIGNED FTHE CON MQ04 FNT/QFT FULL INSE VFD 1/1,59/ESS INCORRECT SYSTEM SECTOR RMSE VFD 1/1,59/ERM RMS ERROR BSSZ 2 DUNE CON MQ03 DEVICE UNAVAILABLE BSSZ 4 DFNE VFD 1/1,59/EDF DUPLICATE FILE NAME TQEPL EQU * LOC *O TITLE OPERATOR/DAYFILE AND ERROR MESSAGES. OPERATOR/DAYFILE MESSAGES.

MES1 DATA C* QDUMP COMPLETE. * MES2 DATA C* QDUMP ABORTED. * MES3 DATA C* INCORRECT DUMP REQUESTED. * MES4 DATA C* FILE NAME CONFLICT - FILE XXXXXXX.* MES5 DATA C* QUEUES UNRECOVERABLE THIS DEVICE.* MES6 DATA C* NO OUTPUT FILE EXISTS. * MES7 DATA C* OUTPUT FILE RELEASED. * MES8 DATA C* BAD DUMP FILE. * MES9 DATA C* TAPE ERROR - GO,JSN./DROP,JSN.* MES10 DATA C* QUEUE STATUS INDEFINITE. * MES11 DATA C* ERRORED FILE PARTIALLY DUMPED - .* MES12 DATA C* ACCESS LEVEL LIMITS OUT OF RANGE.*

*CIO* ERROR MESSAGES. MC00 DATA C/ *CIO* ERROR. / MC02 DATA C* ADDRESS ERROR. * MC03 DATA C* DEVICE STATUS ERROR. * MC04 DATA C* 6681 FUNCTION REJECT ERROR. * MC05 DATA C* DEVICE RESERVED. * MC06 DATA C* DEVICE NOT READY. * MC07 DATA C* TRACK LIMIT. * *QFM* ERROR MESSAGES.

MQ00 DATA C/ *QFM* ERROR. / MQ01 DATA C* FILE NOT FOUND. * MQ02 DATA C* FILE ALREADY INTERLOCKED. * MQ03 DATA C* DEVICE UNAVAILABLE. * MQ04 DATA C* QFT/LOCAL FNT FULL. *

        TITLE  COMMON DECKS.

* COMMON DECKS.

*CALL COMCCDD *CALL COMCCIO *CALL COMCCOD *CALL COMCCPM *CALL COMCEDT *CALL COMCFQO *CALL COMCIQP *CALL COMCLFM *CALL COMCMVE *CALL COMCQFM *CALL COMCQFP *CALL COMCRDW *CALL COMCSCB *CALL COMCSFN *CALL COMCSFM *CALL COMCSYS *CALL COMCVLC *CALL COMCVQF WRIF$ EQU 1 *CALL COMCWTC *CALL COMCWTW *CALL COMCZTB

        TITLE  BUFFERS.
        USE    LITERALS

* BUFFERS.

BLOCK BSSZ EPBL *DSP* CALL BLOCK IQFE BSSZ QFEWL INACTIVE QUEUED FILE ENTRY BUFFER TACF BSS 0 TABLE OF ACTIVE FAMILIES (UNUSED) EBUF VFD 24/1000B,36/5 END OF VOLUME CONTROL WORD BUFFER

        VFD    60/310000B
        BSSZ   2

WBUF EQU * WORKING BUFFER TBUF EQU WBUF+WBUFL TEMPORARY IQFT ENTRY BUFFER OBUF EQU TBUF+BUFL OUTPUT FILE BUFFER QBUF EQU OBUF+BUFL QUEUE FILE BUFFER DBUF EQU QBUF+QBUFL DESTINATION QUEUE FILE BUFFER SBUF EQU DBUF+DBUFL SYSTEM INFORMATION BUFFER

* READ FNT OR QFT INTO FIELD LENGTH STARTING AT *RBUF*.

RBUF EQU SBUF+SBUFL FNT/QFT BUFFER

* THE LENGTH OF *IBUF* MAY BE EXPANDED TO READ THE ENTIRE * FNT OR QFT IF NECESSARY.

IBUF EQU RBUF OLD IQFT FILE BUFFER BUFFL EQU IBUF+IBUFL+4 END OF BUFFERS PRS TITLE PRESET. ** PRS - PRESET. * * PRESET ADJUSTS FIELD LENGTH AND SETS UP A * CONTROL WORD TO READ THE QFT. * * ENTRY (QFTA) = *QFTP* WORD IN CMR. * * EXIT (QFTS) = LENGTH OF QFT. * (RQTA) = *RSB* CONTROL WORD FOR QFT READ. * * USES X - 0, 1, 2, 3, 4, 6, 7. * A - 2, 6, 7. * * MACROS MEMORY.

PRS SUBR ENTRY/EXIT

        MEMORY CM,,R,BUFFL

* SET QFT FWA AND LENGTH.

        SA2    QFTA        *QFTP* WORD
        MX0    -24         GET FWA OF QFT
        LX2    24
        BX7    -X0*X2
        LX2    12          GET MAXIMUM NUMBER OF QFT ENTRIES
        MX0    -12
        BX2    -X0*X2
        SX3    QFTE
        IX6    X2*X3       NUMBER OF ENTRIES * ENTRY LENGTH
        SA6    QFTS        QFT LENGTH

* SET UP *RSB* CONTROL WORD TO READ QFT.

        SX4    100B        WORD COUNT
        LX4    18
        BX7    X4+X7       ADD ON QFT FWA
        SX1    RBUF        BUFFER ADDRESS
        LX7    18
        BX7    X7+X1
        SA7    RQTA
        EQ     PRSX        RETURN
        SPACE  4,10
        ERRPL  *-RFL       IF DEFAULT FIELD LENGTH TOO SMALL
        SPACE  4
        END    QDUMP

</file>