IDENT MPF,MPF PERIPH BASE MIXED SST TITLE MPF - *PACKER* UTILITY HELPER. SPACE 4,10 *COMMENT MPF - *PACKER* UTILITY HELPER. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. SPACE 4,10 *** MPF - *PACKER* UTILITY PP HELPER ROUTINE. * * W. J. STURGIS. 78/02/14. * K. A. GILLIAM. 80/08/11. * D. G. BEAUSANG. 80/08/26. * A. J. NATHANSON. 83/10/25. * K. R. DELAY. 84/03/26. * P. C. SMITH. 87/12/01. SPACE 4,10 *** MPF IS A PP HELPER PROGRAM FOR THE UTILITY *PACKER*. SPACE 4,10 *** CALL - * *T 18/ *MPF*,6/ R,12/ FN,6/ ,18/ ADDR * * FN = FUNCTION CODE. * ADDR = ADDRESS OF FET OR PARAMETER BLOCK. * * SEE INDIVIDUAL FUNCTIONS FOR MORE DETAILS. * * FN = 0, DROP TRACKS ON IAPF CHAIN. * FN = 1, REWRITE EOI. * FN = 2, DELINK TRACKS FROM IAPF CHAIN. * FN = 3, (RESERVED). * FN = 4, READ SYSTEM SECTOR. * FN = 5, WRITE SYSTEM SECTOR. * FN = 6, RETURN FST FOR CATALOG OVERFLOW TRACK. * FN = 7, REWRITE CATALOG SECTOR. SPACE 4,10 *** DAYFILE MESSAGES. * * THESE MESSAGES ARE ISSUED TO THE SYSTEM AND LOCAL * DAYFILES, AND THE CALLING JOB IS ABORTED. * * * MPF - ADDRESS OUT OF RANGE.* * THE SPECIFIED ADDRESS WAS .LE. 1 OR .GE. FL. * * * MPF - BUFFER ARGUMENT ERROR.* * BUFFER ARGUMENTS (FIRST/IN/OUT/LIMIT) ARE INCORRECT. * * * MPF - CATALOG REWRITE LINK BYTE ERROR.* * AN INCORRECT LINK BYTE WAS READ FROM THE * CATALOG TRACK. * * * MPF - DEVICE ERROR IDLE SET.* * A DEVICE ERROR IDLE WAS SET AS THE RESULT OF AN * INCORRECT CATALOG SECTOR WRITE. * * * MPF - EQXX TKYYYY SCZZZZ.* * THE EST ORDINAL, TRACK AND SECTOR LOCATION OF THE * INCORRECT SECTOR WRITE. * * * MPF - FET COMPLETE BIT SET.* * THE FET COMPLETE BIT WAS SET ON ENTRY FOR FN=7. * * * MPF - FET TOO SHORT.* * THE FET WAS TOO SHORT FOR FN=7. * * * MPF - FILE NOT FOUND.* * THE LOCAL FILE SPECIFIED IN THE FET WAS NOT FOUND. * * * MPF - FM DN FFFFFFF NN.* * THE FAMILY NAME (FFFFFFF) AND DEVICE NUMBER (NN) * OF THE DEVICE ON WHICH ERROR IDLE WAS SET. * * * MPF - INACCESSIBLE DEVICE.* * THE DEVICE STATUS RETURNED BY THE *SETMS* MACRO * INDICATES THAT THE DEVICE IS NOT ACCESSIBLE. * * * MPF - INCORRECT CALL.* * CALLER WAS NOT *SSJ=* PROGRAM, OR *MPF* WAS * NOT CALLED WITH AUTO RECALL. * * * MPF - INCORRECT CATALOG REWRITE REQUEST.* * INCORRECT SECTOR LENGTH, INCORRECT RANDOM ADDRESS, * INCORRECT EST ORDINAL, ET CETERA. * * * MPF - INCORRECT CIO CODE IN CATALOG REWRITE.* * THE CIO CODE FOR *REWRITE* MUST BE SET IN THE FET * FOR A SECTOR REWRITE WITH 100B WORDS; THE CIO CODE * FOR *REWRITER* MUST BE SET IN THE FET FOR A SECTOR * WITH LESS THAN 100B WORDS. * * * MPF - INCORRECT FUNCTION.* * FUNCTION NUMBER NOT RECOGNIZED. * * * MPF - INCORRECT LINK BYTE IN CATALOG SCAN.* * THE CONTROL BYTES IN THE SECTOR AT END OF A TRACK * WERE NOT LINK BYTES, THE LINK BYTE POINTED TO AN * UNRESERVED TRACK, OR THE LINK BYTE POINTED TO A * TRACK WHICH WAS NOT ON THE TRACK CHAIN WHICH STARTED * WITH THE LABEL TRACK. * * * MPF - INCORRECT OVERFLOW FST REQUEST.* * THE PARAMETER BLOCK FOR FN=6 WAS INCORRECT. * * * MPF - INCORRECT SECTOR READ IN CATALOG REWRITE.* * AN UNRECOVERED MASS STORAGE ERROR WAS ENCOUNTERED * ON A SECTOR READ. * * * MPF - INCORRECT SECTOR READ IN CATALOG SCAN.* * AN UNRECOVERED MASS STORAGE ERROR WAS ENCOUNTERED * ON A CATALOG TRACK. * * * MPF - INCORRECT SYSTEM SECTOR.* * THE LINKAGE BYTES IN THE BUFFER WERE NOT CORRECT * FOR THE WRITE SYSTEM SECTOR FUNCTION. * * * MPF - INCORRECT WORD COUNT IN CATALOG REWRITE.* * THE WORD COUNT IN THE CIO BUFFER IS .GE. THAN 100B. * * * MPF - INCORRECT WRITE IN CATALOG REWRITE.* * AN UNRECOVERED MASS STORAGE ERROR WAS ENCOUNTERED * ON A SECTOR WRITE. THIS ERROR WILL SET ERROR IDLE * ON THE DEVICE. * * * MPF - I/O SEQUENCE ERROR.* * FST ENTRY FOR REWRITE EOI WAS BUSY. * * * MPF - RANDOM ADDRESS NOT ON IAPF CHAIN.* * THE SPECIFIED RANDOM ADDRESS WAS NOT FOUND ON * THE IAPF CHAIN. * * * MPF - SYSTEM SECTOR ERROR.* * A MASS STORAGE ERROR WAS ENCOUNTERED WHEN READING * OR WRITING A SYSTEM SECTOR. * * * MPF - WRITE LOCK-OUT ON CATALOG FILE.* * THE CATALOG FILE WAS NOT IN WRITE MODE. TITLE COMMON DECKS. SPACE 4,10 * COMMON DECKS. SPACE 4,10 *CALL COMPMAC *CALL COMSCPS *CALL COMSLSD *CALL COMSMSP *CALL COMSMST *CALL COMSPIM *CALL COMSWEI TITLE MACRO DEFINITIONS. SPACE 4,10 * MACRO DEFINITIONS. ERROR SPACE 4,10 ** ERROR - ISSUE ERROR MESSAGE AND ABORT. * * ERROR MSG * * MSG = ADDRESS OF ERROR MESSAGE. * * CALLS ERR. PURGMAC ERROR ERROR MACRO M MACREF ERROR LDC M RJM ERR ERROR ENDM LDCA SPACE 4,10 ** LDCA - LOAD AND CHECK CENTRAL ADDRESS. * * LDCA ADDR,OFFSET * * (ADDR - ADDR+1) = RELATIVE ADDRESS. * OFFSET = ADDED TO ADDRESS. * * CALLS VCA. * * USES T1, T2. PURGMAC LDCA LDCA MACRO A,N MACREF LDCA LDD A LPN 37 SHN 14 ADD A+1 IFC NE,$N$$,1 ADK N RJM VCA LDCA ENDM TITLE DIRECT CELL DEFINITIONS. SPACE 4,10 * DIRECT CELL DEFINITIONS. FS EQU 20 - 24 FST ENTRY RI EQU 25 - 26 RANDOM INDEX CT EQU 35 OVERFLOW TRACK NUMBER TK EQU 36 LABEL TRACK FN EQU 40 - 44 FNT ENTRY FA EQU 57 FNT ADDRESS FT EQU 60 - 61 FIRST IN EQU 62 - 63 IN OT EQU 64 - 65 OUT LM EQU 66 - 67 LIMIT TITLE MAIN PROGRAM. SPACE 4,10 ORG PPFW MPF SPACE 4,10 ** MPF - MAIN PROGRAM. MPF BSS 0 ENTRY RJM PRS PRESET RJM 0,T1 EXECUTE FUNCTION MONITOR DPPM DROP PP LJM PPR EXIT TO PP RESIDENT TITLE ERROR PROCESSING. ERR SPACE 4,10 ** ERR - ERROR PROCESSOR. * * ENTRY (A) = ADDRESS OF ERROR MESSAGE TEXT. * * EXIT TO *PPR*. * PP HUNG IF *SYSTEM DEBUG* ENABLED. * * CALLS DFM, SFC. * * MACROS MONITOR. ERR SUBR ENTRY RJM DFM ISSUE DAYFILE MESSAGE RJM SFC SET FST COMPLETE LDK ZERL CRD CM LDM ERR SET ADDRESS OF CALLER STD CM+1 MONITOR CHGM CONDITIONALLY HANG PP MONITOR ABTM ABORT CONTROL POINT LJM PPR EXIT TO PP RESIDENT ERRMSG SPACE 4,10 * ERROR MESSAGES. ERAR DATA C* MPF - ADDRESS OUT OF RANGE.* ERBA DATA C* MPF - BUFFER ARGUMENT ERROR.* ERCC DATA C* MPF - INCORRECT CIO CODE IN CATALOG REWRITE.* ERCR DATA C* MPF - INCORRECT CATALOG REWRITE REQUEST.* EREI DATA C* MPF - DEVICE ERROR IDLE SET.* ERFC DATA C* MPF - FET COMPLETE BIT SET.* ERFS DATA C* MPF - FET TOO SHORT.* ERIC DATA C* MPF - INCORRECT CALL.* ERID DATA C* MPF - INACCESSIBLE DEVICE.* ERIF DATA C* MPF - INCORRECT FUNCTION.* ERIO DATA C* MPF - I/O SEQUENCE ERROR.* ERIS DATA C* MPF - INCORRECT SYSTEM SECTOR.* ERLR DATA C* MPF - CATALOG REWRITE LINK BYTE ERROR.* ERLS DATA C* MPF - INCORRECT LINK BYTE IN CATALOG SCAN.* ERNF DATA C* MPF - FILE NOT FOUND.* EROF DATA C* MPF - INCORRECT OVERFLOW FST REQUEST.* ERRA DATA C* MPF - RANDOM ADDRESS NOT ON IAPF CHAIN.* ERRR DATA C* MPF - INCORRECT SECTOR READ IN CATALOG REWRITE.* ERSR DATA C* MPF - INCORRECT SECTOR READ IN CATALOG SCAN.* ERSS DATA C* MPF - SYSTEM SECTOR ERROR.* ERWL DATA C* MPF - WRITE LOCK-OUT ON CATALOG FILE.* ERWR DATA C* MPF - INCORRECT WORD COUNT IN CATALOG REWRITE.* ERWW DATA C* MPF - INCORRECT WRITE IN CATALOG REWRITE.* TITLE FUNCTION PROCESSORS. DTK SPACE 4,10 *** DTK (0) - DROP TRACKS ON IAPF CHAIN. * * ENTRY (IR+3 - IR+4) = PARAMETER ADDRESS. * *T ADDR 12/ EQ,24/ ,24/ EOI * * EQ = EST ORDINAL. * EOI = RANDOM ADDRESS OF NEW EOI. * * EXIT TRT UPDATED. * DEVICE CHECKPOINT REQUESTED. DTK SUBR LDCA IR+3 SET EST ORDINAL CRD CM LDD CM LPC 3777 STD T5 LDCA IR+3 RJM CDA COMPUTE DISK ADDRESS LDD T5 ADC 4000 DEVICE CHECKPOINT FLAG STD CM+1 LDD T6 SET EOI TRACK LPC 3777 CLEAR LINK BIT STD CM+2 LDD T7 SET EOI SECTOR STD CM+3 MONITOR DTKM LJM DTKX RETURN RWE SPACE 4,10 *** RWE (1) - REWRITE EOI. * * ENTRY (IR+3 - IR+4) = FET ADDRESS. * LOCAL FILE POSITIONED TO CORRECT SECTOR FOR EOI WRITE. * * EXIT EOI WRITTEN. RWE SUBR RJM SFP SET FILE PARAMETERS SETMS IO,RW RJM PDS PROCESS DEVICE STATUS RJM WEI WRITE EOI SECTOR ENDMS RJM SFC SET FST COMPLETE UJN RWEX RETURN DLK SPACE 4,15 *** DLK (2) - DELINK TRACKS FROM IAPF CHAIN. * * ENTRY (IR+3 - IR+4) = PARAMETER ADDRESS. * *T ADDR 12/ ,12/ EQ,12/ FT,12/ NT,12/ LT * * EQ = EST ORDINAL. * FT = FIRST TRACK. * NT = NEXT TRACK. * LT = LAST TRACK. * * EXIT TRACKS DELINKED FROM IAPF CHAIN. * DEVICE CHECKPOINT REQUESTED. DLK SUBR LDCA IR+3 CRD CM READ PARAMETER LDD CM+1 LPC 3777 LMC 4000 DEVICE CHECKPOINT FLAG STD CM+1 LDD CM+2 ENSURE LINK BIT CLEAR LPC 3777 STD CM+2 MONITOR DLKM UJN DLKX RETURN RSC SPACE 4,10 *** RSC (4) - READ SYSTEM SECTOR. * * ENTRY (IR+3 - IR+4) = FET ADDRESS. * RANDOM ADDRESS OF SYSTEM SECTOR IN FET+6. * * EXIT SYSTEM SECTOR RETURNED TO BUFFER STARTING AT *FIRST*. * RANDOM ADDRESS IN FET+6 UPDATED. RSC SUBR ENTRY/EXIT RJM SFP SET FILE PARAMETERS LDCA IR+3,6 GET RANDOM ADDRESS RJM CDA COMPUTE DISK ADDRESS SETMS IO RJM PDS PROCESS DEVICE STATUS LDN 0 DO NOT COMPARE FILE NAME RJM RSS READ SYSTEM SECTOR ZJN RSC2 IF SYSTEM SECTOR VALID RSC1 ERROR ERSS * SYSTEM SECTOR ERROR.* RSC2 ENDMS LDCA IR+3,6 CRD CM AOD CM+4 UPDATE RANDOM ADDRESS IN FET+6 SHN -14 RAD CM+3 LDCA IR+3,6 CWD CM SBN 5 FIRST CRD CM LDCA CM+3,101 ENSURE THAT SYSTEM SECTOR FITS IN CM FL LDCA CM+3 CWM BFMS,ON WRITE CONTROL BYTES TO CM BUFFER CWM BFMS+2,HN WRITE SYSTEM SECTOR TO CM BUFFER RJM SFC SET FST COMPLETE LJM RSCX RETURN WSC SPACE 4,10 *** WSC (5) - WRITE SYSTEM SECTOR. * * ENTRY (IR+3 - IR+4) = FET ADDRESS. * SYSTEM SECTOR IN BUFFER STARTING AT *FIRST*. * RANDOM ADDRESS OF SYSTEM SECTOR IN FET+6. * * EXIT SYSTEM SECTOR WRITTEN. * RANDOM ADDRESS IN FET+6 UPDATED. WSC SUBR ENTRY/EXIT RJM SFP SET FILE PARAMETERS LDCA IR+3,6 RANDOM ADDRESS RJM CDA COMPUTE DISK ADDRESS LDCA IR+3,1 FIRST CRD CM LDCA CM+3,101 ENSURE SYSTEM SECTOR IS WITHIN CM FL LDCA CM+3 CRM BFMS,ON READ CONTROL BYTES FROM CM BUFFER CRM BFMS+2,HN READ SYSTEM SECTOR FROM CM BUFFER LDM BFMS LMC 3777 CHECK CONTROL BYTES LMM BFMS+1 LMN 77 ZJN WSC1 IF CONTROL BYTES VALID ERROR ERIS * INCORRECT SYSTEM SECTOR.* WSC1 LDD T6 STM FTSS SET FIRST TRACK LDD T7 ADN FSMS STM NSSS NEXT SECTOR LMM SLM NJN WSC2 IF NOT END OF TRACK RJM SNT STM NSSS WSC2 SETMS IO,RW RJM PDS PROCESS DEVICE STATUS LDC BFMS+WLSF RJM WDS WRITE SYSTEM SECTOR PJN WSC3 IF NO DISK ERROR ERROR ERSS * SYSTEM SECTOR ERROR.* WSC3 ENDMS RJM SFC SET FST COMPLETE LDCA IR+3,6 CRD CM AOD CM+4 UPDATE RANDOM ADDRESS IN FET+6 SHN -14 RAD CM+3 LDCA IR+3,6 CWD CM LJM WSCX RETURN RTF SPACE 4,25 *** RTF (6) - RETURN FST FOR CATALOG OVERFLOW TRACK. * * ENTRY (IR+3 - IR+4) = PARAMETER BLOCK ADDRESS. * *T ADDR 12/ EQ,12/ FT,12/ CT,12/ CS,12/ ST *T,ADDR+1 48/ ,12/ OT *T,ADDR+2 60/ * * EQ = EST ORDINAL. * FT = FIRST TRACK. * CT = CURRENT TRACK (IGNORED). * CS = CURRENT SECTOR (IGNORED). * ST = STATUS (IGNORED). * OT = OVERFLOW TRACK INDEX. * * EXIT (ADDR+2) = FST ENTRY FOR THE *OT*-TH OVERFLOW TRACK. * *T ADDR+2 12/ EQ,12/ FT,12/ CT,12/ CS,12/ ST * * EQ = EST ORDINAL. * FT = FIRST TRACK. * CT = FIRST TRACK. * CS = 0. * ST = 5. RTF6 LDCA IR+3,2 RETURN LOCATION IN PARAMETER BLOCK CWD FS WRITE REPLY RTF SUBR ENTRY/EXIT LDCA IR+3 READ PARAMETER BLOCK CRD FS LDCA IR+3,1 CRD CM LDD CM+4 ZJN RTF1 IF NO OVERFLOW TRACK INDEX STD CT AOD CT INCREMENT FOR ENTRY INTO LOOP LDD FS EST ORDINAL LPC 3777 STD T5 LDD FS+1 TRACK LPC 3777 LMC 4000 STD T6 LDN 0 SET FST FIELDS FOR RETURN STD FS+3 LDN 5 STD FS+4 RJM CMS CHECK MASS STORAGE NJN RTF1 IF ERROR LDD FS+1 STARTING TRACK LPC 3777 ADC 4000 RJM VTB VALIDATE TRACK BYTE ZJN RTF2 IF TRACK BYTE VALID RTF1 ERROR EROF * INCORRECT OVERFLOW FST REQUEST.* RTF2 SOD CT DECREMENT COUNTER ZJP RTF6 IF DONE LDD FS+1 TRACK STD T6 SETMS IO RJM PDS PROCESS DEVICE STATUS LDM SLM SECTOR LIMIT SBN 1 LAST SECTOR ON TRACK STD T7 LDC BFMS RJM RDS READ SECTOR PJN RTF3 IF NO ERROR ERROR ERSR * INCORRECT SECTOR READ IN CATALOG SCAN.* RTF3 ENDMS LDM BFMS GET LINK BYTE NJN RFT4 IF NOT EOF/EOI LDM BFMS+1 GET SECOND LINK BYTE RFT4 SHN 21-13 PJN RTF5 IF NOT LINK BYTE SHN -6 STD FS+1 STD FS+2 RJM VTB VALIDATE TRACK LINK BYTE ZJP RTF2 IF NO ERROR RTF5 ERROR ERLS * INCORRECT LINK BYTE IN CATALOG SCAN.* RWC SPACE 4,25 *** RWC (7) - REWRITE CATALOG SECTOR. * * ENTRY (IR+3 - IR+4) = FET ADDRESS. * RANDOM ADDRESS FOR REWRITE IN FET+6. * SECTOR DATA IN CM BUFFER. * * EXIT SECTOR REWRITTEN, FET UPDATED AND SET COMPLETE. * CRI NOT UPDATED, RR NOT CLEARED, FST POSITION * IS THE TRACK AND SECTOR JUST WRITTEN. * * TO *ERR* IF ERROR; ERROR IDLE SET ON DEVICE * IF UNRECOVERABLE MS ERROR RETURNED ON REWRITE * OF CATALOG SECTOR. RWC SUBR ENTRY/EXIT LDN 5+2 MINIMUM FET LENGTH REQUIRED RJM IFQ INITIAL FET QUERY RJM PIO PRESET I/O RJM CMS CHECK MASS STORAGE NJN RWC1 IF ERROR LDD FS+1 FIRST TRACK RJM VTB VALIDATE THAT TRACK IS ON LABEL TRT CHAIN ZJN RWC2 IF NO ERROR RWC1 ERROR ERCR * INCORRECT CATALOG REWRITE REQUEST.* RWC2 NFA FA,R READ FNT CRD CM LDD CM+3 LPN 1 ZJN RWC3 IF FILE IN WRITE MODE ERROR ERWL * WRITE LOCK-OUT ON CATALOG FILE.* RWC3 LDD FS+1 FIRST TRACK STD T6 LDCA IR+3,6 RANDOM ADDRESS FROM FET (RR) CRD CM LDD CM+4 STD RI+1 RANDOM INDEX LDD CM+3 STD RI LDN 0 ENSURE CURRENT TRT RJM CRA CONVERT RANDOM ADDRESS MJP RWC1 IF ADDRESS NOT VALID LDD T6 LMD FS+1 NJP RWC1 IF TRACK IS NOT THE SAME AS FIRST TRACK LDD T7 CHECK TRACK AT SECTOR LIMIT ADN 1 STM BFMS NEXT SECTOR LMM SLM ZJN RWC4 IF AT LAST SECTOR IN TRACK RJM COB CHECK OUTPUT BUFFER (GET WORDS IN BUFFER) MJP RWC11 IF BUFFER ARGUMENT ERROR STM BFMS+1 WORDS IN SECTOR SBD HN ZJN RWC5 IF FULL SECTOR MJN RWC6 IF SHORT SECTOR ERROR ERWR * INCORRECT WORD COUNT IN CAT REWRITE.* RWC4 SETMS IO READ TO OBTAIN LINK BYTES RJM PDS PROCESS DEVICE STATUS LDC BFMS RJM RDS PJN RWC8 IF NO ERROR ERROR ERRR * INCORRECT SECTOR READ IN CAT REWRITE.* RWC5 LDC 214 *REWRITE* CODE UJN RWC7 SET *CIO* FUNCTION CODE RWC6 LDC 224 *REWRITER* CODE RWC7 STD T3 SET *CIO* FUNCTION CODE LDCA IR+3 GET *CIO* FUNCTION CODE FROM FET+0 CRD CM LDD CM+4 LPC 1774 CODE FIELD LMD T3 ZJN RWC12 IF *CIO* FUNCTION CODE MATCHES ERROR ERCC * INCORRECT CIO CODE IN CAT REWRITE.* RWC8 LDM BFMS CHECK LINKAGE BYTES ZJN RWC9 IF EOF OR EOI LMC 3777 ZJN RWC9 IF SYSTEM SECTOR RJM COB CHECK OUTPUT BUFFER (GET WORDS IN BUFFER) MJN RWC10 IF BUFFER ARGUMENT ERROR LMM BFMS+1 ZJN RWC12 IF SECTOR LENGTH DID NOT CHANGE RWC9 ENDMS ERROR ERLR * CATALOG REWRITE LINK BYTE ERROR.* RWC10 ENDMS RWC11 ERROR ERBA * BUFFER ARGUMENT ERROR.* RWC12 LDM BFMS+1 NUMBER OF WORDS IN SECTOR STM T3 NUMBER OF WORDS TO READ LDC BFMS+2 PP BUFFER ADDRESS RJM RBB READ BINARY BUFFER SETMS IO,RW,EBMS RJM PDS PROCESS DEVICE STATUS LDC BFMS+WLSF RJM WDS PJN RWC13 IF NO ERROR LDC ERWW * MPF - INCORRECT WRITE IN CAT REWRITE.* RJM DFM RJM LTD LOG LOCATION TO DAYFILE RJM FDD LOG FAMILY NAME, DEVICE NUMBER TO DAYFILE LDN STEI SET ERROR IDLE STATUS RJM SES SMSTF GDEI ERROR EREI * DEVICE ERROR IDLE SET.* RWC13 ENDMS LDN ZERL UPDATE OUT POINTER IN FET CRD CM LDD OT+1 STD CM+4 LDD OT STD CM+3 LDCA IR+3,3 CWD CM * T6 AND T7 (CURRENT TRACK AND CURRENT SECTOR) ARE NOT * UPDATED TO REFLECT THE NEXT SECTOR TO AVOID THE NON- * STANDARD NEXT TRACK LINKAGE PROBLEM. THUS, THE FST * CURRENT POSITION WILL POINT AT THE SECTOR WRITTEN. RJM CIO COMPLETE I/O LJM RWCX RETURN TITLE SUBROUTINES. CDA SPACE 4,15 ** CDA - COMPUTE DISK ADDRESS. * * ENTRY (A) = CM ADDRESS OF RANDOM ADDRESS. * (T5) = EST ORDINAL. * * EXIT (T6) = TRACK. * (T7) = SECTOR. * (RI - RI+1) = RANDOM ADDRESS. * * USES T6, CM - CM+4, RI - RI+1. * * CALLS CRA. * * MACROS ERROR, SFA. CDA SUBR ENTRY/EXIT CRD CM LDD CM+3 STD RI LDD CM+4 STD RI+1 SFA EST,T5 ADK EQDE CRD CM READ EST ENTRY LDD CM+4 SHN 3 MST ADDRESS ADN ALGL CRD CM LDD CM FIRST TRACK OF IAPF CHAIN STD T6 LDN 0 ENSURE CURRENT TRT RJM CRA COMPUTE RANDOM ADDRESS PJN CDAX IF ADDRESS IS IN TRACK CHAIN ERROR ERRA * RANDOM ADDRESS NOT ON IAPF CHAIN.* CFS SPACE 4,10 ** CFS - COMPLETE FET STATUS. * * ENTRY (IR+3 - IR+4) = FET ADDRESS. * * EXIT FET STATUS SET COMPLETE (IF FET ADDRESS VALID). * (IR+3 - IR+4) = 0 (IF FET STATUS SET COMPLETE). * * USES CM - CM+4, IR+3 - IR+4. * * MACROS LDCA. CFS SUBR ENTRY/EXIT LDCA IR+3 FET ADDRESS CRD CM AOD CM+4 LDCA IR+3 CWD CM LDN 0 CLEAR FET ADDRESS STD IR+3 STD IR+4 UJN CFSX RETURN CIO SPACE 4,20 ** CIO - COMPLETE I/O. * * COMPLETE FST WRITE AND SET FET STATUS COMPLETE. * * ENTRY OPERATION COMPLETED ON FILE. * (T5) = EST ORDINAL. * (T6) = TRACK. * (T7) = SECTOR. * * EXIT FET STATUS SET COMPLETE. * FST WRITTEN. * * USES FS - FS+4. * * CALLS CFS, SFC. CIO SUBR ENTRY/EXIT * UPDATE FST ENTRY AND WRITE. LDD FS+4 SET FILE STATUS SCN 16 LMN 4 STD FS+4 LDD T6 SET TRACK STD FS+2 LDD T7 SET SECTOR STD FS+3 LDD T5 SET EST ORDINAL STD FS RJM SFC SET FST COMPLETE RJM CFS COMPLETE FET STATUS UJP CIOX RETURN CMS SPACE 4,15 ** CMS - CHECK MASS STORAGE. * * ENTRY (T5) = EST ORDINAL. * (T6) = TRACK. * * EXIT (A) = 0 IF NO ERROR. * (TK) = LABEL TRACK. * * USES T1, CM - CM+4. * * MACROS SFA. CMS1 LDN 1 INDICATE ERROR CMS SUBR ENTRY/EXIT SFA EST,T5 READ EST ENTRY ADK EQDE CRD CM LDD CM SHN 21-13 PJN CMS1 IF NOT MASS STORAGE LDD CM+4 MST/10 STD T1 SHN 3 ADK TDGL CRD CM LDD CM+2 LENGTH OF TRT ADD TH 4000/4 SHN 2 SBD T6 REQUESTED TRACK MJN CMS1 IF INCORRECT TRACK LDD T1 SHN 3 ADN ALGL CRD CM LDD CM+1 LABEL TRACK LPC 3777 ADC 4000 STD TK LDD CM+3 ZJP CMS1 IF NO CATALOG TRACKS LDN 0 INDICATE NO ERROR UJP CMSX RETURN FDD SPACE 4,15 ** FDD - LOG FAMILY NAME AND DEVICE NUMBER TO DAYFILE. * * ENTRY (T5) = EST ORDINAL. * * EXIT MESSAGE ISSUED. * * USES CM - CM+4. * * CALLS C2D, DFM. * * MACROS SFA. FDD SUBR ENTRY/EXIT SFA EST,T5 READ EST ENTRY ADK EQDE CRD CM LDD CM+4 GET MST ADDRESS SHN 3 ADK PFGL READ FAMILY NAME / DEVICE NUMBER CRM FDDA+6,ON MERGE INTO MESSAGE LDM FDDA+11 CONVERT DEVICE NUMBER RJM C2D STM FDDA+12 SET DEVICE NUMBER INTO MESSAGE LDM FDDA+11 BLANK FILL FAMILY NAME SCN 77 CLEAR BINARY DEVICE NUMBER ZJN FDD1 IF TWO OR MORE BLANKS NEEDED LMN 1R MERGE SINGLE BLANK INTO MESSAGE STM FDDA+11 UJN FDD4 ISSUE MESSAGE FDD1 LDC 2R SET TWO BLANKS INTO MESSAGE STM FDDA+11 LDN 3 NUMBER OF BYTES MAY NEED TO BLANK FILL STD CM FDD2 LDM FDDA+5,CM NJN FDD3 IF END OF FAMILY NAME FOUND LDC 2R SET TWO MORE BLANKS INTO MESSAGE STM FDDA+5,CM SOD CM DECREMENT COUNTER NJN FDD2 IF NOT DONE UJN FDD4 ISSUE MESSAGE FDD3 LPN 77 CHECK IF SINGLE BLANK NEEDED NJN FDD4 IF NO BLANK NEEDED LDM FDDA+5,CM LMN 1R SINGLE BLANK STM FDDA+5,CM FDD4 LDC FDDA RJM DFM ISSUE DAYFILE MESSAGE LJM FDDX RETURN FDDA DATA C*MPF - FM DN FFFFFFF NN.* IFQ SPACE 4,15 ** IFQ - INITIAL FET QUERY. * * VALIDATE THAT THE FET IS LONG ENOUGH, IS WITHIN FL, * AND DOES NOT HAVE COMPLETE BIT SET. * * ENTRY (A) = MINIMUM FET LENGTH REQUIRED. * (IR+3 - IR+4) = FET ADDRESS. * * EXIT TO *ERR* IF FET IS NOT VALID. * * USES T2, T3, CM - CM+4. * * CALLS VCA. * * MACROS LDCA. IFQ SUBR ENTRY/EXIT STD T3 REQUIRED FET LENGTH LDCA IR+3 VALIDATE FET+0 ADDRESS CRD CM CHECK COMPLETE BIT CLEAR LDD CM+4 LPN 1 ZJN IFQ1 IF COMPLETE BIT IS CLEAR ERROR ERFC * FET COMPLETE BIT SET.* IFQ1 LDCA IR+3,1 GET FET LENGTH CRD CM LDD CM+3 SHN -6 ADN 5 STD T2 CHECK FET LENGTH SBD T3 PJN IFQ2 IF FET IS LONG ENOUGH ERROR ERFS * FET TOO SHORT.* IFQ2 LDD IR+3 CHECK IF LAST WORD OF FET IS WITHIN FL SHN 14 LMD IR+4 ADD T2 SBN 1 RJM VCA VALIDATE CENTRAL ADDRESS UJP IFQX RETURN LTD SPACE 4,10 ** LTD - LOG LOCATION TO DAYFILE. * * ENTRY (T5) = EST ORDINAL. * (T6) = TRACK. * (T7) = SECTOR. * * EXIT MESSAGE ISSUED TO DAYFILE. * * CALLS C2D, DFM. LTD SUBR ENTRY/EXIT LDD T5 CONVERT EST ORDINAL RJM C2D STM LTDA+5 LDD T5 SHN -6 RJM C2D STM LTDA+4 LDD T6 CONVERT TRACK RJM C2D STM LTDA+11 LDD T6 SHN -6 RJM C2D STM LTDA+10 LDD T7 CONVERT SECTOR RJM C2D STM LTDA+15 LDD T7 SHN -6 RJM C2D STM LTDA+14 LDC LTDA ISSUE MESSAGE RJM DFM UJP LTDX RETURN LTDA DATA C*MPF - EQXXXX TKYYYY SCZZZZ.* PDS SPACE 4,10 ** PDS - PROCESS DEVICE STATUS. * * ENTRY (MSD) = DEVICE STATUS UPON EXIT FROM *SETMS*. * (T5) = EST ORDINAL OF THE DEVICE. * DRIVER SOFTWARE IS LOADED. * * EXIT TO *ERR* IF DEVICE IS INACCESSIBLE. * * MACROS ENDMS, ERROR. PDS SUBR ENTRY/EXIT LDM MSD SHN 21-6 PJN PDSX IF DEVICE IS AVAILABLE, RETURN ENDMS ERROR ERID * INACCESSIBLE DEVICE.* PIO SPACE 4,20 ** PIO - PRESET I/O. * * SET DIRECT CELLS FOR I/O OPERATION. * * ENTRY (IR+3 - IR+4) = VALIDATED FET ADDRESS. * * EXIT (FA) = FST ADDRESS OF FILE. * (FS - FS+4) = FST ENTRY FOR FILE. * (T5) = EST ORDINAL. * (T6) = TRACK. * (T7) = SECTOR. * (FT - FT+1) = FIRST. * (IN - IN+1) = IN. * (OT - OT+1) = OUT. * (LM - LM+1) = LIMIT. * * CALLS SBA, SFP, VBA. PIO SUBR ENTRY/EXIT RJM SFP SET FILE PARAMETERS RJM SBA SET BUFFER ADDRESSES RJM VBA VALIDATE BUFFER ADDRESSES UJN PIOX RETURN SBA SPACE 4,15 ** SBA - SET BUFFER ARGUMENTS. * * READ BUFFER POINTERS INTO DIRECT CELLS. * * ENTRY (IR+3 - IR+4) = FET ADDRESS. * * EXIT (FT - FT+1) = FIRST. * (IN - IN+1) = IN. * (OT - OT+1) = OUT. * (LM - LM+1) = LIMIT. * * USES CM - CM+4, FT - FT+1, IN - IN+1, LM - LM+1, OT - OT+1. SBA SUBR ENTRY/EXIT LDCA IR+3,4 READ LIMIT CRD LM-3 SBN 1 READ OUT CRD OT-3 SBN 1 READ IN CRD CM LDD CM+3 STD IN LDD CM+4 STD IN+1 LDCA IR+3,1 READ FIRST CRD CM LDD CM+3 LPN 77 STD FT LDD CM+4 STD FT+1 UJP SBAX RETURN SFC SPACE 4,15 ** SFC - SET FST COMPLETE. * * ENTRY (FS - FS+4) = FST. * (FA) = FNT ADDRESS. * (FA) = 0, IF NO FILE CURRENTLY SET BUSY. * * EXIT FST SET COMPLETE AND WRITTEN TO CENTRAL. * (FA) = 0. * * USES FA, FS+4. * * MACROS NFA. SFC SUBR ENTRY/EXIT AOD FS+4 SET STATUS COMPLETE LDD FA ZJN SFCX IF NO FST ADDRESS NFA FA,R WRITE FST ADK FSTL CWD FS LDN 0 CLEAR FNT ADDRESS STD FA UJN SFCX RETURN SFP SPACE 4,10 ** SFP - SET FILE PARAMETERS. * * ENTRY (IR+3 - IR+4) = FET ADDRESS. * * EXIT (FA) = FNT ADDRESS. * (FS - FS+4) = FST ENTRY. * (T5) = EST ORDINAL. * (T6) = TRACK. * (T7) = SECTOR. * FST SET BUSY. * * USES FA, T5, T6, T7, FN - FN+4, FS - FS+4. * * CALLS SAF, SFB. * * MACROS ERROR, LDCA. SFP SUBR ENTRY/EXIT LDCA IR+3 READ FILE NAME CRD FN LDCA IR+3,4 READ FNT ADDRESS CRD FS LDD FS RJM SAF SEARCH FOR ASSIGNED FILE NJN SFP1 IF FILE FOUND ERROR ERNF * FILE NOT FOUND.* SFP1 RJM SFB SET FILE BUSY ZJN SFP2 IF FILE SET BUSY LDN 0 CLEAR FNT ADDRESS STD FA ERROR ERIO * I/O SEQUENCE ERROR.* SFP2 LDD FS LPC 3777 STD T5 EST ORDINAL LDD FS+2 STD T6 TRACK LDD FS+3 STD T7 SECTOR UJP SFPX RETURN VBA SPACE 4,10 ** VBA - VALIDATE BUFFER ADDRESSES. * * ENTRY (FT - FT+1) = FIRST. * (IN - IN+1) = IN. * (OT - OT+1) = OUT. * (LM - LM+1) = LIMIT. * * EXIT TO *ERR* IF BUFFER ARGUMENT ERROR. * * MACROS ERROR. VBA SUBR ENTRY/EXIT LDD LM CHECK LIMIT SHN 14 LMD LM+1 SBN 1 SHN -6 SBD FL PJN VBA1 IF LIMIT .GT. FL LDD OT CHECK OUT SBD LM SHN 14 ADD OT+1 SBD LM+1 PJN VBA1 IF OUT .GE. LIMIT LDD OT SBD FT SHN 14 ADD OT+1 SBD FT+1 MJN VBA1 IF OUT .LT. FIRST LDD IN CHECK IN SBD LM SHN 14 ADD IN+1 SBD LM+1 PJN VBA1 IF IN .GE. LIMIT LDD IN SBD FT SHN 14 ADD IN+1 SBD FT+1 MJN VBA1 IF IN .LT. FIRST UJP VBAX RETURN VBA1 ERROR ERBA * BUFFER ARGUMENT ERROR.* VCA SPACE 4,10 ** VCA - VALIDATE CENTRAL ADDRESS. * * ENTRY (A) = RELATIVE ADDRESS. * * EXIT (A) = ABSOLUTE ADDRESS IF ADDRESS VALID. * * USES T1, T2. * * MACROS ERROR. VCA SUBR STD T2 SCN 1 ZJN VCA1 IF ADDRESS .LE. 1 SCN 77 SHN 6 STD T1 SHN 6 SBD FL PJN VCA1 IF ADDRESS .GE. FL LDD T1 FORM ABSOLUTE ADDRESS SHN 6 ADD RA SHN 6 ADD T2 UJP VCAX RETURN VCA1 ERROR ERAR * ADDRESS OUT OF RANGE.* VTB SPACE 4,10 ** VTB - VALIDATE TRACK LINK BYTE. * * ENTRY (A) = TRACK LINK BYTE TO VALIDATE. * (TK) = LABEL TRACK. * (T5) = EST ORDINAL. * * EXIT (A) = 0 IF NO ERROR. * * USES T1, T2, T6, CM - CM+4. * * CALLS SNT. * * MACROS MONITOR. VTB SUBR ENTRY/EXIT STD T2 SAVE BYTE LDD TK LABEL TRACK STD T6 LDN UTRS SET SUBFUNCTION CODE STD CM+3 LDD T5 SET EST ORDINAL STD CM+1 MONITOR STBM GET CURRENT TRT VTB1 RJM SNT GET LINK STD T6 LMD T2 ZJN VTB3 IF LINKED TO REQUESTED TRACK BYTE LDD T6 SHN 21-13 MJN VTB1 IF LINK BYTE VTB2 LDN 1 INDICATE ERROR UJN VTBX RETURN VTB3 LDD T6 SHN 21-13 PJN VTB2 IF NOT A LINK BYTE RJM SNT LDD T1 ADC SHNI+6+14-4 STM VTBA LDD CM+4 VTBA SHN ** PJN VTB2 IF NOT RESERVED LDN 0 INDICATE NO ERROR UJP VTBX RETURN TITLE BUFFER ALLOCATION. SPACE 4,10 * BUFFER ALLOCATION. WEIA BSSZ WCEI*5+2 EOI SECTOR BUFFER (FOR *COMPWEI*) EBMS EQU BFMS-502 MASS STORAGE ERROR BUFFER TITLE COMMON DECKS. SPACE 4,10 * COMMON DECKS. *CALL COMPCOB CRA$ EQU 0 ENSURE CURRENT TRT *CALL COMPCRA *CALL COMPCRS *CALL COMPC2D *CALL COMPRBB RIS$ EQU 1 READ IAPF SYSTEM SECTOR *CALL COMPRSS SAF$ EQU 0 SEARCH SPECIFIC ENTRY FIRST *CALL COMPSAF *CALL COMPSES *CALL COMPSFB *CALL COMPSNT *CALL COMPTGB *CALL COMPWEI SPACE 4,10 ERRPL *-EBMS OVERFLOW INTO MS ERROR BUFFER ERRPL *-BFMS OVERFLOW INTO MS BUFFER TITLE PRESET. PRS SPACE 4,15 ** PRS - PRESET. * * ENTRY (IR+2) = FUNCTION CODE. * * EXIT (T1) = FUNCTION PROCESSOR ADDRESS. * * USES FA, T1, CM - CM+4. * * CALLS CRS. * * MACROS ERROR. PRS SUBR LDN 0 CLEAR FST ADDRESS STD FA LDD CP CHECK IF CALLER IS *SSJ=* ADK SEPW CRD CM LDD CM SHN 21-2 MJN PRS2 IF CALLER IS *SSJ=* PRS1 ERROR ERIC * INCORRECT CALL.* PRS2 RJM CRS ZJN PRS1 IF NOT CALLED WITH AUTO RECALL LDD IR+2 STD T1 FUNCTION CODE SBN TFCNL MJN PRS4 IF LEGAL FUNCTION PRS3 ERROR ERIF * INCORRECT FUNCTION.* PRS4 LDM TFCN,T1 FUNCION PROCESSOR ADDRESS STD T1 ZJN PRS3 IF INCORRECT FUNCTION UJP PRSX RETURN SPACE 4,10 * TFCN - TABLE OF FUNCTION PROCESSORS. TFCN BSS 0 CON DTK DROP TRACKS CON RWE REWRITE END OF INFORMATION CON DLK DELINK TRACKS CON 0 (RESERVED) CON RSC READ SYSTEM SECTOR CON WSC WRITE SYSTEM SECTOR CON RTF RETURN FST FOR CATALOG OVERFLOW TRACK CON RWC REWRITE CATALOG SECTOR TFCNL EQU *-TFCN SPACE 4,10 OVERFLOW PPFW,EPFW SPACE 4 END