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>