IDENT 1MR,/MRP/MRP PERIPH BASE MIXED SST *COMMENT 1MR - MACHINE RECOVERY PROCESSOR. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. TITLE 1MR - MACHINE RECOVERY PROCESSOR. SPACE 4 *** 1MR - MACHINE RECOVERY PROCESSOR. * R. J. PRIEVE 75/02/14. * P. D. HAAS. 87/04/10. SPACE 4 *** 1MR PROCESSES FUNCTION REQUESTS FROM *MREC*, THE * MACHINE RECOVERY UTILITY. * * FUNCTIONS PROCESSED ARE THE FOLLOWING. * * FUNCTION 0 - RETRIEVE DISPLAY INFORMATION. * FUNCTION 1 - PROCESS DAT, FAT, MRT,S, SYSTEM SECTORS, * AND UNIT AND/OR CONTROLLER RESERVE SITUATIONS. * FUNCTION 2 - UPDATE MST ENTRIES IN CM FOR INDEPENDENT * SHARED DEVICES. * FUNCTION 3 - CLEAR DEVICE INTERLOCKS. SPACE 4 *** ENTRY CONDITIONS. * *T, IR 18/1MR,18/0,6/FN,18/PARM * * FN FUNCTION NUMBER. * PARM PARAMETER. * * PARAMETERS ARE DOCUMENTED IN HEADER INFORMATION * OF EACH FUNCTION PROCESSOR. SPACE 4 *** DAYFILE MESSAGES. * * * INCORRECT 1MR FUNCTION.* * * * 1MR ERROR FLAG TERMINATION.* - ERROR FLAG WAS SET AT * MREC,S CONTROL POINT. * * * SSER, EQXXX, TKYYYY.* - UNRECOVERED ERROR OCCURRED WHEN * ATTEMPTING TO READ OR WRITE THE SYSTEM SECTOR ON EQXXX, * TRACK YYYY. THE SECTOR IS NOT PROCESSED. PROCESSING * CONTINUES. THIS MESSAGE IS ALSO ISSUED TO THE ERRLOG. * * * EQXXX, MRT PROCESSED BUT NOT REWRITTEN.* - UNRECOVERED * WRITE ERROR OCCURRED WHEN ATTEMPTING TO ZERO OUT THE MRT * FOR EQXXX. PROCESSING CONTINUES. * * * EQXXX, TKYYYY, INCORRECT LOCAL FILE.* - MRT BIT WAS FOUND * SET FOR TRACK YYYY ON EQXXX, BUT THE TRACK WAS NOT THE FIRST * TRACK OF A LOCAL FILE. THE MRT BIT WAS CLEARED BUT THE * TRACK WAS NOT DROPPED. * * * EQXXX, DAF INTERLOCKS NOT CLEARED.* - INTERLOCKS IN THE * SYSTEM SECTORS OF DIRECT ACCESS FILES ON EQXXX WERE NOT * CLEARED, EITHER BECAUSE OF MASS STORAGE ERRORS OR * BECAUSE A PF CATALOG SIZE ERROR WAS DETECTED. * * * RECOVERING PF.EQXXX, TRK YYYY.* - INFORMATIVE MESSAGE ISSUED * AT CONTROL POINT WHEN PRESERVED FILES ARE BEING PROCESSED * ON EQXXX. * * * EQXXX, UNYY, CHECKING RESERVE.* - INFORMATIVE MESSAGE * ISSUED TO B-DISPLAY WHILE CONTROLLER AND UNIT RESERVES * ARE BEING PROCESSED. IN THE CASE OF MULTI-UNIT * DEVICES, YY IS THE PHYSICAL UNIT NUMBER. * * * EQXXX, CLEARING LABEL SECTOR INTERLOCKS.* - INFORMATIVE * MESSAGE ISSUED TO B-DISPLAY WHILE THE RMS COPY OF THE * MST IS BEING PROCESSED (SHARED RMS SYSTEM ONLY). * * * EQXXX, CHYY, CONTROLLER RESERVED.* - INFORMATIVE MESSAGE * ISSUED TO B-DISPLAY INDICATING THAT THE HARDWARE CONTROLLER * RESERVE IS HELD BY THE DOWN MAINFRAME FOR THE SPECIFIED * CHANNEL/DEVICE. TO CLEAR THE RESERVE, THE OPERATOR SHOULD * HIT THE DEADSTART BUTTON. IF THE CONTROLLER IS TO BE * IGNORED BY THIS MAINFRAME, JUST ENTER THE *GO,JSN* COMMAND. * * * EQXXX, UNYY, UNIT RESERVED.* - INFORMATIVE MESSAGE ISSUED * TO B-DISPLAY INDICATING THAT THE HARDWARE UNIT RESERVE IS * HELD BY THE DOWN MAINFRAME FOR THE SPECIFIED UNIT. IF THIS * DEVICE IS TO BE IGNORED BY THIS MAINFRAME, THE OPERATOR * SHOULD JUST ENTER *GO,JSN*. OTHERWISE, THE OPERATOR SHOULD * CLEAR THE UNIT RESERVE (SEE DOCUMENTATION IN *MREC*) ON * THE UNIT TO CONTINUE PROCESSING. * * * INTERLOCKING IQFT, EQXXX.* - INDICATES *1MR* IS WAITING * FOR THE INTERLOCK ON THE *IQFT* TRACK. SPACE 4 *CALL COMPMAC *CALL COMSCPS *CALL COMSIOQ *CALL COMSJIO QUAL LSD *CALL COMSLSD QUAL * N4SS EQU /LSD/N4SS DISS EQU /LSD/DISS CKSS EQU /LSD/CKSS DKSS EQU /LSD/DKSS QUAL MMF LIST X *CALL COMSMMF LIST * QUAL * MISD EQU /MMF/MISD MMPF EQU /MMF/MMPF MXMF EQU /MMF/MXMF QUAL MRT LIST X *CALL COMSMRT LIST * QUAL * *CALL COMSMSP *CALL COMSMST *CALL COMSPFM *CALL COMSPIM *CALL COMSSSD *CALL COMSSSE *CALL COMSWEI SPACE 4,10 ** ASSEMBLY CONSTANTS. BUFS EQU BFMS-502 SCRATCH BUFFER QBUF EQU BUFS-502 *IQFT* BUFFER BUFD EQU QBUF-5*2 *DAT* BUFFER SPACE 4 **** DIRECT LOCATION ASSIGNMENTS. ORG 16 EF BSS 1 ERROR FLAG SC BSS 1 SCRATCH CN BSS 5 CM BUFFER DA BSS 2 DAT TRACK ADDRESS DF BSS 1 DIRECT ACCESS FILE COUNT DT BSS 1 DAT/FAT TRACK ET BSS 2 ENVIRONMENT TABLE ADDRESS EQ BSS 1 EQUIPMENT BEING PROCESSED ID BSS 1 MACHINE ID OF THIS MACHINE LK BSS 1 LINK DEVICE EST ORDINAL MD BSS 1 MACHINE INDEX OF DOWNED MACHINE MI BSS 1 MID OF DOWNED MACHINE MK BSS 1 MACHINE MASK OF DOWNED MACHINE NT BSS 1 NUMBER OF TRACKS ON CURRENT DEVICE FT BSS 1 FILE TYPE PF BSS 1 PRESERVED FILE TRACK INTERLOCK STATUS TC BSS 1 TRACK COUNT BY BSS 1 BYTE COUNT WB EQU NT - BY WORD BUFFER (5 LOCATIONS) BI BSS 1 BIT COUNT AD BSS 1 ADDRESS OF CURRENT MRT BYTE ORG 57 SD BSS 1 TYPE OF SHARED DEVICE (FUNCTION 2) * 0 = EXTENDED MEMORY MMF DEVICE. * 1 = INDEPENDENT SHARED DEVICE (ISD). TW BSS 1 CONSTANT 2 SX BSS 1 CONSTANT 6 RE BSS 1 READ EXTENDED MEMORY SUBFUNCTION * 1000 WE BSS 1 WRITE EXTENDED MEMORY SUBFUNCTION * 1000 CT BSS 1 CURRENT TRACK QF BSS 1 FIRST TRACK OF *IQFT* QT BSS 1 CURRENT TRACK OF *IQFT* QS BSS 1 CURRENT SECTOR OF *IQFT* **** TITLE MAIN ROUTINE. ** MAIN ROUTINE. QUAL MRP ORG PPFW MRP RJM PRS PRESET MRPA EQU *-1 DROP RJM CFI CLEAR FLAG REGISTER INTERLOCKS MRP1 LDN 1 SET COMPLETE FLAG FOR *MREC* STD CN+4 LDD RA SHN 6 ADC /MRT/RCLW CWD CN MRP2 MONITOR DPPM DROP PP UJN ABT1 EXIT TO PP RESIDENT ERR LDC =C* 1MR ERROR FLAG TERMINATION.* RJM DFM LDC WDSX RESET ERROR RETURN FROM *WDS* STM WDSA RJM TQF TERMINATE *IQFT* RJM CFI CLEAR FLAG REGISTER INTERLOCKS UJN MRP2 DROP PP SPACE 4 ** ABT - ISSUE MESSAGE AND ABORT. * * ENTRY (A) = MESSAGE ADDRESS. ABT RJM DFM ISSUE MESSAGE RJM CFI CLEAR FLAG REGISTER INTERLOCKS MONITOR ABTM ABT1 LJM PPR EXIT TO PP RESIDENT SPACE 4 ** COMMON DECKS. QUAL *CALL COMPC2D *CALL COMPCEA *CALL COMPCKP *CALL COMPRSS *CALL COMPSSE QUAL MRP *CALL COMPWEI *CALL COMPWSS WDS SPACE 4,10 ** WDS - WRITE MASS STORAGE. * * ENTRY (A) = SAME AS ENTRY TO DRIVER. * (T5 - T7) = MASS STORAGE PARAMETERS. * * EXIT (A) = 0 IF NO WRITE ERRORS. * * CALLS WDS. WDS1 LDN 0 INDICATE SUCCESSFUL WRITE WDS SUBR ENTRY/EXIT RJM //WDS PJN WDS1 IF WRITE COMPLETED SHN 21-12 SHN 0-21 NJN WDSX IF NON-RECOVERABLE ERROR LCN 10 LJM WDSX ERROR RETURN WDSA EQU *-1 TITLE FUNCTION 1 - PROCESS DAT, FAT, MRT-S. PMT SPACE 4 ** PMT - PROCESS DAT, FAT, MRT,S. (FUNCTION 1) * * ENTRY (IR+3 - IR+4) = ADDR. * * ADDR ADDRESS OF TABLE OF DEVICES TO RECOVER. * * CALLS CAA, CLU, C2D, DAT, DFM, MRT, PDT, PFB, RMI, SDM, * SDP, SFR, *2MS*. * * MACROS EXECUTE, PAUSE. PMT SUBR ENTRY/EXIT EXECUTE 2MS LOAD HARDWARE RESERVE ROUTINES LDD LK ZJN PMT1 IF NOT EXTENDED MEMORY MMF LDN /MMF/DATI RJM SFR SET DAT INTERLOCK RJM CLU CLEAR UTILITY / DEVICE INTERLOCKS * PROCESS DAT, MRT-S, SYSTEM SECTORS. PMT1 LCN 0 PRESET TABLE INDEX STD SC PMT2 PAUSE NE AOD SC READ TABLE ENTRY RJM CAA ADD SC CRD CM LDD CM+4 SET EST ORDINAL STD EQ STD T5 NJN PMT3 IF NOT END OF DEVICES TO RECOVER LJM PMTX RETURN PMT3 LDD CM SET POSSIBLE IGNORE DEVICE STM PMTA LDD CM+3 SET TYPE OF SHARED DEVICE STD SD ZJN PMT4 IF NOT ISD LDD T5 STD LK RJM SDM CHECK IF DEVICE SHARED TO DOWN MF NJN PMT2 IF NOT SHARED TO DOWN MF RJM RMI RELEASE MST INTERLOCKS UJN PMT5 PROCESS MRT PMT4 RJM PDT PROCESS DAT FOR DEVICE ZJN PMT7 IF NO PROCESSING FOR DEVICE PMT5 RJM SDP SET DEVICE PARAMETERS STM PMTB RJM MRT PROCESS MRT FOR DEVICE LDC 0 PMTA EQU *-1 LMN /MRT/IGN ZJN PMT6 IF IGNORE DEVICE LDC ** CHECK PFC SIZE PMTB EQU *-1 ZJN PMT8 IF 8-WORD PF CATALOGS LDD DF ZJN PMT6 IF NO DAF-S RJM PFB PROCESS DAF SYSTEM SECTORS NJN PMT8 IF ALL FILES NOT PROCESSED PMT6 LDD SD NJN PMT7 IF ISD LDD WE WRITE DAT ENTRY WITH ACCESS CLEARED STD T3 LDD MA CWM BUFD,TW STORE DAT ENTRY IN MESSAGE BUFFER LDD EQ SET EQUIPMENT RJM DAT WRITE DAT ENTRY PMT7 LJM PMT2 LOOP FOR NEXT DEVICE PMT8 LDD EQ CONVERT UPPER DIGIT OF EST ORDINAL SHN -6 ADC 2RQ0 STM PMTC+1 LDD EQ CONVERT LOWER TWO DIGITS OF EST ORDINAL RJM C2D STM PMTC+2 LDC PMTC * EQXXX, DAF INTERLOCKS NOT CLEARED.* RJM DFM UJN PMT7 LOOP FOR NEXT DEVICE PMTC DATA C* EQXXX, DAF INTERLOCKS NOT CLEARED.* TITLE FUNCTION 4 - PROCESS RESERVES AND BAT-S. PRB SPACE 4,10 ** PRB - PROCESS RESERVES AND BAT-S. (FUNCTION 4) * * ENTRY (IR+3 - IR+4) = ADDR. * * ADDR ADDRESS OF TABLE OF DEVICES TO RECOVER. * * CALLS ECS, RES, *2MS*. * * MACROS EXECUTE. PRB SUBR ENTRY/EXIT LDD LK ZJN PRB1 IF NOT EXTENDED MEMORY MMF * DISABLE LEVEL 3 RECOVERY OF DOWNED MACHINE. LDN ZERL BUILD MMFL WORD FOR DOWNED MACHINE CRD CM LDD MI SET MID OF DOWNED MACHINE STD CM LDD MD SET MACHINE INDEX OF DOWNED MACHINE STD CM+4 LDD MA SET CM BUFFER ADDRESS CWD CM LDD ET+1 SET EXTENDED MEMORY ADDRESS ADD MD ADD INDEX INTO CORRECT ENTRY SBN 1 STD CM+4 SHN -14 ADD ET ADD WE STD CM+3 LDN 1-1 WRITE EXTENDED MEMORY RJM ECS * PROCESS CONTROLLER AND UNIT RESERVES. PRB1 EXECUTE 2MS LOAD HARDWARE RESERVE ROUTINES RJM RES PROCESS BAT-S AND HARDWARE RESERVES UJP PRBX RETURN TITLE SUBROUTINES. CAA SPACE 4 ** CAA - CALCULATE ABSOLUTE ADDRESS. * * ENTRY (IR+3 - IR+4) = RELATIVE ADDRESS. * * EXIT (A) = ABSOLUTE ADDRESS. CAA SUBR ENTRY/EXIT LDD IR+3 LPN 77 SHN 6 ADD RA SHN 6 ADD IR+4 UJN CAAX RETURN CAT SPACE 4,10 ** CAT - CALCULATE ADDRESS OF TRT. * * ENTRY (A) = ADDRESS OF WORD *TRLL* IN MST. * * EXIT (A) = FWA OF TRT. * * USES CM - CM+4. CAT SUBR ENTRY/EXIT CRD CM GET FWA OF TRT LDD CM+3 LPN 77 SHN 14 LMD CM+4 UJN CATX RETURN CAM SPACE 4 ** CAM - CHECK ACCESS MODES FOR DIRECT ACCESS FILE. * * ENTRY (T5) = EST ORDINAL. * (T6) = FIRST TRACK. * (BFMS) = SYSTEM SECTOR. * * EXIT (A) = (PF) = 0 IF FILE PURGED. * * USES CM - CM+4. * * CALLS RRS. * * MACROS ENDMS, MONITOR. CAM1 LDN 1 SET FILE NOT PURGED CAM SUBR ENTRY/EXIT LDM CASS CHECK PURGE BIT SHN 21-5 PJN CAM1 IF PURGE BIT NOT SET SHN -21+5+22 CHECK IF ACTIVE USERS LPN 32 ADM UCSS+1 ADM UCSS+2 ADM UCSS+3 ADM UCSS+4 NJN CAMX IF ACTIVE USERS RJM RRS ENDMS LDD T6 RELEASE FILE SPACE STD CM+2 LDD T5 STD CM+1 MONITOR DTKM * LDN 0 CLEAR TRACK INTERLOCK STATUS STD PF UJN CAMX RETURN CFI SPACE 4,10 ** CFI - CLEAR FLAG REGISTER INTERLOCKS HELD BY *1MR*. * * ENTRY (CFIA) = LINK DEVICE EST ORDINAL, IF ECS MMF. * = 0, IF ISD MMF. * * USES T2. * * CALLS CFR, SCI. CFI SUBR ENTRY/EXIT RJM SCI CLEAR *CMS* INTERLOCK LDC ** CHECK TYPE OF MMF OPERATION CFIA EQU *-1 (LINK DEVICE EST ORDINAL, IF ECS MMF) ZJN CFIX IF NOT EXTENDED MEMORY MMF LDC TFRB-3 CLEAR FLAG REGISTER INTERLOCKS STD T2 CFI1 LDN 3 RAD T2 LDI T2 ZJN CFIX IF END OF FLAG BITS LPN 40 ZJN CFI1 IF NOT SET LMI T2 RJM CFR UJN CFI1 CQF SPACE 4,15 ** CQF - CHECK QUEUE FILE. * * ENTRY (MI) = ID OF DOWN MACHINE. * (QF) = FIRST TRACK OF *IQFT* IF INITIALIZED. * (T4) = CHANNEL (RESERVED). * (T5) = EST ORDINAL. * (CT) = (T6) = FIRST TRACK OF PRESERVED FILE. * (BFMS) = PRESERVED FILE SYSTEM SECTOR. * * EXIT (A) = 0 IF NOT QUEUE FILE. * (FT) = FILE TYPE. * * USES T1, T2, T3. * * CALLS IQF, WQF, WSS. * * MACROS ENDMS, FILEREC, SETMS. CQF6 LDN 0 INDICATE NON-QUEUE FILE CQF SUBR ENTRY/EXIT LDM FNSS+4 EXTRACT FILE TYPE SHN -6 STD FT LDN RDATL SET LENGTH OF QUEUE FILE TABLE STD T3 CQF1 SOD T3 DECREMENT INDEX MJN CQF6 IF END OF TABLE LDM RDAT,T3 LMD FT NJN CQF1 IF NOT MATCHING FILE TYPE LDM FGSS LPN 2 ZJN CQF2 IF INACTIVE QUEUE FILE LDM RMSS LMD MI NJN CQF6 IF NOT ACTIVE QUEUE FILE ON DOWN MACHINE LCN 2 SET QUEUE FILE INACTIVE RAM FGSS RJM WSS REWRITE SYSTEM SECTOR CQF2 LDD QF NJN CQF3 IF QUEUE FILE PROCESSING INITIATED ENDMS RJM IQF INITIALIZE *IQFT* CQF3 LDM RMSS SET MACHINE ID STM FMSS+4 LDM FLSS SET FILE LENGTH STM CDSS LDM FLSS+1 STM CDSS+1 LDC IOSS SYSTEM SECTOR ADDRESS OF QFT ENTRY STD T1 LDC QBUF+2 SET BUFFER ADDRESS CQFC EQU *-1 STD T2 ADN 5*QFTE END OF QFT ENTRY STD T3 ADN 5*10-5*QFTE END OF MAXIMUM SIZE QFT ENTRY STM CQFD * MOVE IQFT ENTRY TO BUFFER. CQF4 LDI T1 MOVE QFT ENTRY STI T2 AOD T1 ADVANCE BUFFER ADDRESSES AOD T2 LMD T3 NJN CQF4 IF NOT END OF QFT ENTRY LDN 5 STD T1 LDD MA MOVE REMAINDER OF IQFT ENTRY CWM CDSS,ON CWM FMSS,ON CWM FDSS,ON CWM ACSS,ON CWM FOSS,ON SBN 5 CRM QBUF+2+5*10,T1 CQFD EQU *-1 LDC 5*QFEWL ADVANCE BUFFER ADDRESS RAM CQFC LDN QFEWL ADVANCE SECTOR LENGTH RAM QBUF+1 SHN -6 ZJN CQF5 IF NOT FULL SECTOR RJM WQF WRITE *IQFT* SECTOR ZJN CQF5 IF SECTOR WRITTEN LJM IQF2 END OF SPACE ON *IQFT* CQF5 LDD CT RESET CURRENT TRACK STD T6 LJM CQFX RETURN FILEREC DAP SPACE 4,10 ** DAP - DELAY AND PAUSE. * * EXIT (A) = 0 IF *ODET* OR ERROR .GE. *SPET* SET. DAP SUBR ENTRY/EXIT DELAY PAUSE LDD CM+1 SBN ODET ZJN DAPX IF OPERATOR DROP SBN SPET-ODET SHN -21 (A) = 1 IF NO ERROR *SPET* OR ABOVE UJN DAPX RETURN DPS SPACE 4 ** DPS - DETERMINE IF PRESERVED FILE AND RESERVATION BIT * IS SET FOR TRACK SPECIFIED. * * ENTRY (T6) = TRACK. * * EXIT (A, BIT 21) = RESERVATION BIT. * (A, BIT 7) = PRESERVED FILE BIT. * (A, BIT 3) = TRACK INTERLOCK BIT. * * USES CM - CM+4. DPS SUBR ENTRY/EXIT LDD T6 READ TRT WORD SHN -2 DPSA ADC TRTS CRD CM LDD T6 SET SHIFT COUNT LPN 3 ADC SHNI+16 STM DPSB LDD CM+4 DPSB SHN 16 UJN DPSX RETURN IQF SPACE 4,15 ** IQF - INITIALIZE *IQFT*. * * ENTRY (T5) = EST ORDINAL. * * EXIT (QF) = (QT) = FIRST TRACK OF *IQFT*. * (QS) = FIRST SECTOR OF *IQFT*. * * USES T3, T6. * * CALLS RSS, WSS. * * MACROS SETMS. IQF SUBR ENTRY/EXIT IQF2 LDM PFBA STD T6 SET *IQFT* TRACK STD QF STD QT LDC 500 STD T3 IQF4 LDN 0 CLEAR SYSTEM SECTOR BUFFER STM BFMS+1,T3 STM QBUF+1,T3 CLEAR IQFT BUFFER SOD T3 NJN IQF4 LOOP TO START OF BUFFER STM QBUF+1 CLEAR SECTOR WORD COUNT LDD MA MOVE FILE NAME TO BUFFER CWM IQFA,ON SBN 1 CRM FNSS,ON SETMS POSITION RJM WSS WRITE *IQFT* SYSTEM SECTOR LDN FSMS SET FIRST *IQF* SECTOR STD QS LDD CT RESTORE CURRENT TRACK STD T6 SETMS POSITION * LDN 0 REREAD QUEUE FILE SYSTEM SECTOR RJM RSS LJM IQFX RETURN IQFA VFD 42/0LQUEUES,6/1,6/SYFT,6/0 MRM SPACE 4 ** MRM - ISSUE MRT ERROR MESSAGE. * * ENTRY (A) = ADDRESS OF MESSAGE. * (T6) = TRACK. * (EQ) = EST ORDINAL TO BE INSERTED IN MESSAGE. * * USES T1. * * CALLS C2D, DFM. MRM SUBR ENTRY/EXIT STD T1 SAVE MESSAGE ADDRESS STM MRMA LDD EQ CONVERT UPPER DIGIT OF EST ORDINAL SHN -6 ADC 2RQ0 STM 1,T1 LDD EQ CONVERT LOWER TWO DIGITS OF EST ORDINAL RJM C2D STM 2,T1 LDD T1 LMC MRTC ZJN MRM1 IF NO TRACK IN MESSAGE LDD T6 CONVERT TRACK MESSAGE RJM C2D STM 6,T1 LDD T6 SHN -6 RJM C2D STM 5,T1 LDD T1 ISSUE MESSAGE TO ERRLOG LMC ERLN RJM DFM MRM1 LDC * ISSUE MESSAGE TO DAYFILE MRMA EQU *-1 RJM DFM LJM MRMX RETURN MRT SPACE 4 ** MRT - PROCESS MRT. * * ENTRY (T6) = MRT TRACK NUMBER. * (NT) = NUMBER OF TRACKS ON DEVICE BEING RECOVERED. * (EQ) = EST ORDINAL BEING PROCESSED. * * EXIT TO *MSR* IF LINK DEVICE ERROR. * * USES AD, BY, TC, T5, T6, CM - CM+4. * * CALLS MRM, PTR, RSC, WDS. * * MACROS ENDMS, MONITOR, SETMS. MRT8 LDD MA RESET MRT TRACK AND SECTOR CWM MRTB,ON SBN 1 CRD T3 SETMS IO,(NS,RW) LDC BUFS SET BUFFER ADDRESS RJM WDS WRITE SECTOR MJN MRT9 IF ERROR ENDMS UJN MRTX RETURN MRT9 LDC MRTC SET MESSAGE ADDRESS RJM MRM ISSUE ERROR MESSAGE MRT SUBR ENTRY/EXIT LDD EQ UPDATE TRT FOR DEVICE STD CM+1 LDN UTRS STD CM+3 MONITOR STBM * LDN 0 SET FIRST TRACK STD TC STD BY LDD LK READ MRT SECTOR FROM LINK DEVICE STD T5 LDD SD ZJN MRT1 IF NOT ISD LDN /MMF/MRTL-/MMF/MRST MRT1 ADN /MMF/MRST-1 SET MRT SECTOR ADD MD STD T7 SETMS IO,NS LDC BUFS+2+4 SET FIRST MRT BYTE TO PROCESS STD AD SBN 2+4 READ MRT SECTOR RJM RSC LDD MA SAVE MRT TRACK AND SECTOR CWD T3 CRM MRTB,ON ENDMS LDD EQ SET EST ORDINAL STD T5 SETMS IO,RW MRT2 LDI AD NJN MRT4 IF BITS SET IN BYTE MRT3 SOD AD LDN 14 INCREMENT TRACKS RAD TC AOD BY INCREMENT BYTE WITHIN WORD LMN 3 NJN MRT2 IF NOT DONE WITH CM WORD * LDN 0 STD BY RESET BYTE COUNTER LDN 10 RAD AD LCN 4 ADJUST TRACK COUNT RAD TC SBD NT MJN MRT2 IF MORE TRACKS TO CHECK LJM MRT8 MRT4 LDN 1 INITIALIZE MASK STM MRTA SHN 13-0 SET TRACK ADD TC STD T6 MRT5 LDI AD ZJN MRT3 IF NO MORE TRACK BITS IN MRT BYTE LPC 0 MRTA EQU *-1 ZJN MRT6 IF TRACK BIT NOT SET LMI AD CLEAR TRACK BIT STI AD RJM PTR PROCESS TRACK RESERVATION MJN MRT6 IF VALID TRACK ASSIGNMENT LDC MRTD ISSUE ERROR MESSAGE RJM MRM MRT6 AOD T6 ADVANCE TRACK LDM MRTA RAM MRTA ADJUST MASK FOR NEXT MRT BIT SHN -14 ZJN MRT5 IF NOT ZERO MASK LJM MRT3 SET NEXT MRT BYTE MRTB BSS 5 TEMPORARY STORAGE MRTC DATA C* EQXXX, MRT PROCESSED BUT NOT REWRITTEN.* MRTD DATA C* EQXXX, TKYYYY, INCORRECT LOCAL FILE.* MSR SPACE 4 ** MSR - RETURN ERROR TO *MREC*. * * ENTRY (A) = ERROR CODE. * * EXIT ERROR RETURN WORD RETURNED TO *MREC*. * * CALLS CFR. MSR STD T5 SAVE ERROR CODE LDN ZERL CRD T0 LDD RA RETURN ERROR WORD TO *MREC* SHN 6 ADC /MRT/ERRW CWD T1 MSR1 LJM DROP DROP PP PFB SPACE 4 ** PFB - CLEAN UP DIRECT ACCESS FILE SYSTEM SECTORS. * * ENTRY (EQ) = EST ORDINAL TO PROCESS. * (NT) = NUMBER OF TRACKS ON DEVICE. * * EXIT (A) = 0 IF DEVICE CLEANUP COMPLETED. * * USES BY, CT, NT, PF, TC, T2, T5, T6, T7, CM - CM+4. * * CALLS CAM, CQF, C2D, DPS, FAT, PFA, RRS, RSS, SSE, STB, * STI, TQF, USC, WDS. * * MACROS ENDMS, PAUSE, SETMS. PFB SUBR ENTRY/EXIT LDD EQ SET EST ORDINAL STD T5 SHN -6 CONVERT UPPER DIGIT OF EST ORDINAL ADC 2RQ0 STM PFBB+10 STM PFBC+13 LDD EQ CONVERT LOWER TWO DIGITS OF EST ORDINAL RJM C2D STM PFBB+11 STM PFBC+14 SETMS IO,(NS,RW) LDN 0 STD BY PRESET FILES PROCESSED COUNT STD EF LDD CM+4 GET *IQFT* POINTER FROM MST STM PFBD PFB0 SHN 3 ADN ACGL CRD CM LDD CM+3 SET *IQFT* TRACK STM PFBA STD T6 INTERLOCK *IQFT* RJM STI ZJN PFB1 IF TRACK INTERLOCKED LDD CP ADN MS2W STORE WAITING MESSAGE CWM PFBC,TR DELAY 10*100D DELAY 100 MS PAUSE NE LDC ** LOAD MST ADDRESS PFBD EQU *-1 UJN PFB0 LOOP ON INTERLOCK PFB1 STD PF LDC PFB18 SET WRITE ERROR PROCESSING RETURN STM WDSA LDD MD SET MACHINE INDEX*5 STD TC SHN 2 RAD TC ADC UCSS SET BEGINNING OF DOWNED MACHINE ENTRY STM USCA LDC 4000-1 SET INITIAL TRACK STD CT ADN 1 SET LAST TRACK + 1 RAD NT PFB2 AOD CT ADVANCE TRACK NUMBER LMD NT NJN PFB3 IF NOT END OF TRT STD CM LDC WDSX RESET ERROR RETURN STM WDSA LDD CP CLEAR CONTROL POINT MESSAGE ADN MS2W CWD CM RJM TQF TERMINATE *IQFT* LDD EF LJM PFBX RETURN PFB3 LDD CT SET NEXT TRACK STD T6 LMC 0 PFBA EQU *-1 ZJN PFB2 IF *IQFT* TRACK RJM DPS DETERMINE TRACK STATUS SHN 21-7 PJN PFB2 IF NOT FIRST TRACK OF PRESERVED FILE * READ AND VERIFY SYSTEM SECTOR. AOD BY INCREMENT SYSTEM SECTORS PROCESSED LMN NFTP NJN PFB4 IF NOT TIME TO PAUSE STD BY RESET COUNTER PAUSE NE PFB4 LDD T6 SET TRACK NUMBER IN MESSAGE RJM C2D STM PFBB+16 LDD T6 SHN -6 RJM C2D STM PFBB+15 LDD CP ISSUE MESSAGE ADN MS2W CWM PFBB,TR SETMS POSITION * LDN 0 RJM RSS ZJN PFB7 IF VALID SYSTEM SECTOR PFB5 ENDMS LDD PF ZJN PFB6 IF TRACK NOT INTERLOCKED LDN CTIS RJM STB CLEAR TRACK INTERLOCK * LDN 0 STD PF PFB6 LJM PFB2 LOOP FOR NEXT PRESERVED FILE PFB7 RJM CQF CHECK FOR QUEUE FILE NJN PFB5 IF QUEUE FILE PROCESSED LDD FT CHECK FILE TYPE LMN PMFT ZJN PFB10 IF DIRECT ACCESS FILE LMN FAFT&PMFT NJN PFB5 IF NOT FAST ATTACH FILE RJM RRS LDD SD NJN PFB9 IF ISD LDM FISS LPC 3777 ZJN PFB10 IF NOT GLOBAL ATTACH FILE RJM FAT PROCESS FAST ATTACH FILE PFB8 NJN PFB5 IF FILE STILL IN FAST ATTACH STATUS LJM PFB14 REWRITE SECTOR PFB9 RJM PFA PROCESS FAST ATTACH FILE ON ISD NJN PFB8 IF SYSTEM SECTOR UPDATE NOT REQUIRED UJN PFB14 REWRITE SYSTEM SECTOR * UPDATE USER COUNTS IN SYSTEM SECTOR. PFB10 LDM UCSS,TC CHECK IF ALL COUNTS ZERO LPN 1 STD T2 ADM UCSS+1,TC ADM UCSS+2,TC ADM UCSS+3,TC ADM UCSS+4,TC NJN PFB12 IF NECESSARY TO UPDATE SECTOR RJM CAM CHECK ACCESS MODE BITS NJN PFB8 IF FILE NOT PURGED PFB11 LJM PFB2 LOOP FOR NEXT PRESERVED FILE PFB12 RJM RRS REREAD SYSTEM SECTOR WITH INTERLOCK LDN 0 STM FISS RJM USC UPDATE SYSTEM SECTOR COUNTS LDC PMFT*100 STM FNSS+4 PFB14 RJM CAM CHECK ACCESS MODE BITS ZJN PFB11 IF FILE PURGED * WRITE SECTOR BACK TO DEVICE. LDN 0 RESET SECTOR STD T7 LDC BFMS WRITE SECTOR RJM WDS ZJN PFB16 IF NO ERRORS ENDMS RJM SSE PFB16 LJM PFB5 CLEAR TRACK INTERLOCK PFB18 AOD EF SET ERROR FLAG LDD NT SBN 1 ENABLE IMMEDIATE RETURN STD CT UJN PFB16 COMPLETE OPERATIONS ON DEVICE PFBB DATA C* RECOVERING PF.EQXXX, TRK YYYY.* PFBC DATA C*$INTERLOCKING IQFT, EQXXX.* PTR SPACE 4,15 ** PTR - PROCESS TRACK RESERVATION. * * ENTRY (T5) = EST ORDINAL. * (T6) = CURRENT TRACK. * (SD) = INDEPENDENT SHARED DEVICE STATUS. * * EXIT (A) .GE. 0 IF INCORRECT LOCAL FILE. * * USES CM - CM+4. * * CALLS DPS, RSS, STB. * * MACROS ENDMS, MONITOR. PTR1 LDN CTIS CLEAR INTERLOCK RJM STB PTR3 LCN 0 SET EXIT CONDITION PTR SUBR ENTRY/EXIT RJM DPS DETERMINE TRACK STATUS SHN 21-3 MJN PTR1 IF TRACK INTERLOCKED SHN 3-21+22 PJN PTRX IF TRACK NOT RESERVED SHN 21-7 MJN PTRX IF FILE PRESERVED LDN 0 READ SYSTEM SECTOR RJM RSS LPC 7777 NJN PTRX IF SYSTEM SECTOR ERROR ENDMS LDD T6 RELEASE LOCAL FILE DISK SPACE STD CM+2 LDD T5 LMC 2000 SET TRACK DROP FOR ANOTHER MACHINE STD CM+1 MONITOR DTKM UJN PTR3 RETURN RRS SPACE 4,15 ** RRS - REREAD SYSTEM SECTOR IF TRACK INTERLOCK NOT SET. * * ENTRY (PF) = TRACK INTERLOCK STATUS. * * EXIT TO CALLER IF TRACK INTERLOCKED ON ENTRY. * * EXIT (A) = (T6) IF TRACK NO LONGER RESERVED. * = RESPONSE FROM *RSS*. * TO PREVIOUS *RSS* CALLER IF TRACK NOT ALREADY * INTERLOCKED. * * CALLS RSS, STI. * * MACROS ENDMS. RRS SUBR ENTRY/EXIT LDD PF NJN RRSX IF FIRST TRACK INTERLOCKED ENDMS LDM RSS CHANGE RETURN TO LAST *RSS* CALLER STM RRS RJM STI SET TRACK INTERLOCK NJN RRSX IF TRACK NO LONGER RESERVED * LDN 0 REREAD SYSTEM SECTOR RJM RSS UJN RRSX RETURN RSC SPACE 4,10 ** RSC - READ SECTOR AND CHECK FOR ERRORS. * * ENTRY (A) = BUFFER ADDRESS. * (T5 - T7) = DRIVER PARAMETERS. * * ERROR TO *MSR* IF READ ERROR. * * CALLS RDS. * * MACROS ENDMS. RSC SUBR ENTRY/EXIT RJM RDS READ SECTOR PJN RSCX IF NO ERROR RSC1 ENDMS LDN /MRT/RER SET READ ERROR LJM MSR PROCESS ERROR SCI SPACE 4,15 ** SCI - INCREMENT/DECREMENT *MREC* ACTIVITY COUNT. * * *CMS* WILL WAIT ON THE ACTIVITY COUNT IN *INWL* BEFORE AN * UNLOAD WILL BE PROCESSED. * * EXIT (A) = 0. * * USES CM - CM+4. * * MACROS MONITOR. SCI SUBR ENTRY/EXIT SCIA LDD MA INCREMENT/DECREMENT *MREC* COUNT * UJN SCIX (NOT *PMT* OR *UMT* FUNCTION) CWM SCIB,TW SBN 1 CRD CM MONITOR UADM LDD CM+1 ZJN SCIX IF NO OVERFLOW/UNDERFLOW SCI1 MONITOR HNGM UJN SCI1 HANG SCIB VFD 12/LIOS,12/INWL,6/18D,6/6,24/0 INCREMENT ACTIVITY *SCIB VFD 12/LDOS,12/INWL,6/18D,6/6,24/0 (DECREMENT ACTIVITY) VFD 12/0,12/1,12/1,24/0 SDP SPACE 4,15 ** SDP - SET DEVICE PARAMETERS. * * ENTRY (EQ) = EQUIPMENT. * * EXIT (A) = PF CATALOG SIZE. * = 0, 8 WORD CATALOGS. * = 1000, 16 WORD CATALOGS. * (DF) = DAF COUNT. * (NT) = NUMBER OF TRACKS ON DEVICE. * (DPSA - DPSA+1) = TRT ADDRESS. * * USES T0 - T6, CN - CN+4. * * MACROS SFA. * * CALLS CAT. SDP SUBR ENTRY/EXIT SFA EST,EQ SET DEVICE PARAMETERS ADK EQDE CRD CN LDD CN+4 SHN 3 ADN MDGL CRD T0 SBN MDGL-TDGL CRD T1 ADN ACGL-TDGL CRD CN SET DAF COUNT ADN TRLL-ACGL RJM CAT CALCULATE FWA OF TRT SBD TH STM DPSA+1 SHN -14 LMC ADCI STM DPSA LDD T1+2 SHN 2 STD NT NUMBER OF TRACKS SHN 21-13 PJN SDP1 IF NOT FULL-LENGTH TRT SOD NT SET (NT) = 3777 SDP1 LDD CN+2 STD DF DAF COUNT LDD T0 GET PFC SIZE LPC 1000 LJM SDPX RETURN STB SPACE 4,15 ** STB - SET TRACK BIT. * * ENTRY (A) = *STBM* SUBFUNCTION CODE. * (T5) = EST ORDINAL. * (T6) = TRACK NUMBER. * * EXIT (A) = MONITOR RESPONSE. * * USES CM - CM+4. * * MACROS MONITOR. STB SUBR ENTRY/EXIT STD CM+3 SET SUBFUNCTION CODE LDD T6 SET TRACK STD CM+2 LDD T5 SET EST ORDINAL LMC 1S10 STD CM+1 MONITOR STBM ISSUE REQUEST LDD CM+1 UJN STBX RETURN STI SPACE 4,15 ** STI - SET TRACK INTERLOCK. * * ENTRY (T5) = EST ORDINAL. * (T6) = TRACK. * * EXIT (A) = 0 IF TRACK INTERLOCKED. * = (T6) IF TRACK NOT RESERVED. * (PF) = (T6) IF TRACK INTERLOCKED. * * ERROR TO *ERR* IF *ORET* ERROR FLAG DETECTED. * * CALLS STB. * * MACROS DELAY, PAUSE. STI2 LDD T6 FLAG TRACK INTERLOCKED STD PF STI3 LMD T6 RETURN INTERLOCK STATUS STI SUBR ENTRY/EXIT STI1 LDN STIS ATTEMPT TRACK INTERLOCK RJM STB ZJN STI2 IF INTERLOCK SET LMN 2 ZJN STI3 IF TRACK NOT RESERVED DELAY 250D*10 PAUSE LDD CM+1 CHECK ERROR FLAG LMN ORET NJN STI1 IF NOT OPERATOR OVERRIDE LJM ERR PROCESS ERROR FLAG TERMINATION TQF SPACE 4,15 ** TQF - TERMINATE *IQFT*. * * ENTRY (T5) = EST ORDINAL. * (QF) = FIRST TRACK OF *IQFT*. * (QT) = CURRENT *IQFT* TRACK. * (QS) = CURRENT *IQFT* SECTOR. * * EXIT (QF) = 0. * * USES T1, T6, T7. * * CALLS STB, WEI, WQF. * * MACROS ENDMS, MONITOR, SETMS. TQF2 LDM PFBA ZJN TQFX IF *IQFT* NOT INTERLOCKED STD T6 LDN CTIS CLEAR TRACK INTERLOCK RJM STB * LDN 0 CLEAR *IQFT* PROCESSING INITIATED STD QF STM PFBA CLEAR TRACK INTERLOCKED FLAG TQF SUBR ENTRY/EXIT LDD QF ZJN TQF2 IF NO QUEUE FILE PROCESSING LDC 500 STD T1 TQF1 LDN 0 CLEAR EOI SECTOR BUFFER STM BFMS+1,T1 SOD T1 NJN TQF1 LOOP TO START OF BUFFER RJM WQF WRITE LAST *IQFT* SECTOR LDD MA MOVE FILE NAME TO BUFFER CWM IQFA,ON SBN 1 CRM BFMS+FNEI,ON LDD T5 SETUP EOI SECTOR BUFFER STM BFMS+FSEI LDD QF STM BFMS+FTEI LDD QT SET CURRENT *IQFT* TRACK AND SECTOR STD T6 LDD QS STD T7 SETMS POSITION RJM WEI WRITE EOI SECTOR ENDMS LDD T5 SET EOI IN TRT LMC 1S11 STD CM+1 LDD QT LPC 3777 STD CM+2 LDD QS STD CM+3 MONITOR DTKM LJM TQF2 CLEAR TRACK INTERLOCK USC SPACE 4,10 * USC - UPDATE SYSTEM SECTOR COUNTS. * * ENTRY (T2) = WRITE MODE FLAG FROM UCSS OF DOWN MACHINE. * (TC) = MACHINE INDEX*5. * (MI) = MACHINE INDEX. * (UCSA) = ADDRESS IN BUFFER OF DOWN MACHINE PF COUNTS. * (BFMS) = SYSTEM SECTOR. * * EXIT COUNTS UPDATED AND ENTRY CLEARED FOR DOWN MACHINE. USC SUBR ENTRY/EXIT LDN 0 SUBTRACT DOWN MACHINE COUNTS FROM TOTAL SBM UCSS+1,TC RAM UCSS+1 LDN 0 SBM UCSS+2,TC RAM UCSS+2 LDN 0 SBM UCSS+3,TC RAM UCSS+3 LDN 0 SBM UCSS+4,TC RAM UCSS+4 LDM UCSS,TC LPN 2 ZJN USC1 IF LOCAL UTILITY ATTACH FLAG NOT SET LDM CASS CLEAR GLOBAL UTILITY ATTACH FLAG LPC 7677 STM CASS USC1 LDN ZERL CLEAR ENTRY FOR DOWNED MACHINE CRM *,ON USCA EQU *-1 LDD T2 ZJN USC2 IF WRITE MODE NOT SET LDM CASS CLEAR WRITE MODE BITS IN ACCESS WORD LPC 7541 STM CASS USC2 LJM USCX RETURN WQF SPACE 4,15 ** WQF - WRITE *IQFT* SECTOR. * * ENTRY (T5) = EST ORDINAL. * (QT) = CURRENT *IQFT* TRACK. * (QS) = CURRENT *IQFT* SECTOR. * * EXIT (A) = 0 IF SECTOR WRITTEN. * * USES T6, T7, CM - CM+4. * * CALLS WDS. * * MACROS ENDMS, MONITOR. WQF SUBR ENTRY/EXIT LDD QT SET CURRENT *IQFT* TRACK STD T6 LDC QBUF+2 RESET BUFFER POINTER STM CQFC LDD QS SET *IQFT* SECTOR STD T7 ADN 1 SET SECTOR LINKAGE STM QBUF STD QS SET NEXT *IQFT* SECTOR LMM SLM NJN WQF1 IF NOT SECTOR LIMIT ENDMS * LDN 0 STD CM+3 STD CM+4 STD QS LDD T5 REQUEST NEXT *IQFT* TRACK STD CM+1 LDD T6 STD CM+2 MONITOR RTCM LDD CM+4 SET NEXT TRACK IN SECTOR LINKAGE STM QBUF ZJN WQF3 IF NO TRACK AVAILABLE STD QT WQF1 SETMS POSITION LDC QBUF+WLSF WRITE *IQFT* SECTOR RJM WDS ENDMS * LDN 0 STM QBUF+1 WQF2 LJM WQFX RETURN WQF3 LDD T7 SAVE LAST SECTOR FOR EOI STD QS UJN WQF2 RETURN TITLE EXTENDED MEMORY MMF SUBROUTINES. SPACE 4,10 *** EXTENDED MEMORY MMF SUBROUTINES. * * THE FOLLOWING CODE IS USED ONLY FOR ECS MMF ENVIRONMENTS. * IT IS OVERLAID BY ISD MMF CODE IF RUNNING IN AN ISD SYSTEM. USE OVERLAY OVLA EQU *+5 *2MR* LOAD ADDRESS CFR SPACE 4,10 ** CFR - CLEAR FLAG REGISTER BIT. * * ENTRY (A) = BIT NUMBER TO CLEAR. * * USES CM - CM+4. * * CALLS TFR. * * MACROS MONITOR. CFR SUBR ENTRY/EXIT RJM TFR TOGGLE FLAG REGISTER BIT LDD T1 BIT NUMBER SHN 6 STD CM+1 LDN CFRS SET TO CLEAR FLAG REGISTER BIT SHN 11 STD CM+3 MONITOR ECSM UJN CFRX RETURN DAT SPACE 4,10 ** DAT - READ(WRITE) DAT ENTRY (2 WORDS). * * ENTRY (A) = EST ORDINAL OF EQUIPMENT. * (T3) = RECS*1000 IF READ, WECS*1000 IF WRITE. * DAT IN CM BUFFER (MA - MA+1) IF WRITE. * * EXIT (BUFD) = 2 WORD DAT ENTRY. (READ ONLY) * * CALLS ECS. * * USES CM - CM+4, T1. * * MACROS SFA. DAT SUBR ENTRY/EXIT SFA EST READ EST ENTRY ADK EQDE CRD CM LDD CM+4 READ MST FOR DAT INDEX SHN 3 ADN MDGL CRD CM LDD CM SET DAT INDEX LPC 377 SHN 1 ADD DA+1 STD CM+4 SHN -14 ADD T3 SET TO READ/WRITE EXTENDED MEMORY ADD DA STD CM+3 LDN 2-1 READ TWO WORDS RJM ECS READ(WRITE) EXTENDED MEMORY LDD T3 LMD WE ZJN DATX IF WRITE LDD MA CRM BUFD,TW UJN DATX RETURN ECS SPACE 4,10 ** ECS - READ/WRITE EXTENDED MEMORY. * * ENTRY (A) = WORD COUNT - 1. * (CM+3 - CM+4) = PARAMETERS FOR *ECSM* FUNCTION. * * EXIT (A) = 0. * * ERROR TO *MSR* IF TRANSFER ERROR. ECS SUBR ENTRY/EXIT SHN 6 STD CM+1 SET WORD COUNT LDD MA STD CM+2 SET BUFFER ADDRESS MONITOR ECSM LDD CM+1 ZJN ECSX IF NO ERRORS LDN /MRT/RER SET READ ERROR LJM MSR PROCESS ERROR FAT SPACE 4,10 ** FAT - PROCESS FAST ATTACH PERMANENT FILES. * * ENTRY (A) = INDEX OF FAT ENTRY IN EXTENDED MEMORY. * SYSTEM SECTOR IN BFMS. * * EXIT (A) = 0 IF REMOVE FILE FROM FAST ATTACH STATUS. * * USES T2, T3, T7, CM - CM+4. * * CALLS CFR, ECS, SFR, WFW. * * MACROS ENDMS. FAT SUBR ENTRY/EXIT STD T3 LDK MMFL CRD CM LDD CM+1 SHN 21-12 PJN FAT1 IF NOT LSPMMF SHN 12-21 LPC 777 LMD T5 NJN FAT1 IF FILE DOES NOT RESIDE ON LINK DEVICE ENDMS FAT1 LDN /MMF/FATI OBTAIN *FATI* INTERLOCK RJM SFR LDN 0 SET FAT WORD TO READ STD T2 FAT2 LDD T3 SET FAST ATTACH TRACK ADDRESS SHN /MMF/FATS ADD T2 ADD DA+1 ADC /MMF/FAST*100 STD CM+4 SHN -14 ADD DA ADD RE READ EXTENDED MEMORY STD CM+3 LDN 1-1 SET WORD COUNT RJM ECS READ FAT WORD LDD T2 READ FAT ENTRY INTO BUFFER SHN 2 ADD T2 ADC BUFS STM FATA LDD MA CRM BUFS,ON FATA EQU *-1 AOD T2 LMN /MMF/MXMF+2 NJN FAT2 IF NOT END OF WORDS TO READ LDD MD SET INDEX INTO ENTRY FOR DOWNED MACHINE SHN 2 ADD MD STD T2 STD T7 PRESET EXIT CONDITION LDN 0 ADJUST COUNTS SBM BUFS+5+2,T2 RAM BUFS+5+2 LDN 0 SBM BUFS+5+3,T2 RAM BUFS+5+3 LDN 0 SBM BUFS+5+4,T2 RAM BUFS+5+4 LDD MA WRITE GLOBAL COUNTS TO EXTENDED MEMORY CWM BUFS+5,ON LDN 1 RJM WFW WRITE FAT WORD LDN ZERL CRD CM LDD MA CWD CM LDD MD ADN 1 RJM WFW WRITE FAT WORD LDN 0 STM BUFS+5,T2 ZERO SLOT FOR THIS MACHINE STD T2 FAT3 LDM BUFS+2*5,T2 NJN FAT4 IF FILE STILL ATTACHED LDN 5 RAD T2 LMK 5*/MMF/MXMF NJN FAT3 IF NOT END OF MACHINES TO CHECK STM FISS CLEAR FAST ATTACH STATUS STD T7 SET EXIT CONDITION LDN ZERL CLEAR ENTRY IN EXTENDED MEMORY CRD CM LDD MA CWD CM LDN 0 RJM WFW WRITE WORD 0 OF FAT LDC PMFT*100 RESET FILE TYPE STM FNSS+4 LDM CASS CLEAR WRITE MODE BITS IN ACCESS WORD LPC 7541 STM CASS FAT4 LDN /MMF/FATI CLEAR *FATI* INTERLOCK RJM CFR LDD T7 LJM FATX RETURN PDT SPACE 4,10 ** PDT - CLEAR DEVICE ACCESSED BIT IN DAT FOR DOWNED MACHINE. * * ENTRY (EQ) = EST ORDINAL. * * EXIT (A) = 0 IF NOT PROCESSING DEVICE. * (T6) = MST TRACK IF PROCESSING DEVICE. * * USES T3, T6. * * CALLS CKP, DAT. PDT SUBR ENTRY/EXIT LDD MK STM PDTA SET DOWNED MACHINE MASK LDD RE STD T3 SET READ OF DAT LDD EQ RJM DAT LDM BUFD+5+4 CHECK IF DOWNED MACHINE ACCESSING DEVICE LPC * PDTA EQU *-1 ZJN PDTX IF DEVICE ACCESS NOT SET LMM BUFD+5+4 STM BUFD+5+4 LDM BUFD+4 SET MST TRACK FOR DEVICE STD T6 RJM CKP SET CHECKPOINT BIT LDN 1 UJN PDTX RETURN SFR SPACE 4,10 ** SFR - SET FLAG REGISTER BIT. * * ENTRY (A) = BIT NUMBER TO SET. * * ERROR TO *ERR* IF ERROR FLAG SET. * * USES T1, CM - CM+4. * * CALLS DAP, TFR. * * MACROS MONITOR. SFR2 LDD CP CLEAR MESSAGE ADN MS2W CWD CM SFR SUBR ENTRY/EXIT RJM TFR TOGGLE FLAG REGISTER BIT SFR1 LDD T1 SET BIT NUMBER SHN 6 STD CM+1 LDC SFRS*1000 STD CM+3 MONITOR ECSM LDD CM+1 ZJN SFR2 IF BIT SET LDD CP ADN MS2W CWM SFRA,TR RJM DAP DELAY AND PAUSE NJN SFR1 IF NO OPERATOR DROP LDD T1 RESET BIT INTERLOCKED FLAG RJM TFR TOGGLE FLAG REGISTER BIT LJM ERR ERROR FLAG TERMINATION SFRA DATA C*WAITING FOR XXXI INTERLOCK.* TFRB SPACE 4,10 ** TFRB - TABLE OF FLAG REGISTER BIT INTERLOCKS. * * ENTRY = 3 WORDS. *T, TFRB 6/,1/I ,5/N ,24/FLAG BIT MNEMONIC * I FLAG BIT INTERLOCKED FLAG * N BIT NUMBER TFRB BSS 0 TABLE OF FLAG REGISTER BIT INTERLOCKS VFD 12//MMF/DATI,24/0LDATI DAT INTERLOCK VFD 12//MMF/FATI,24/0LFATI FAST ATTACH TRACK INTERLOCK VFD 12//MMF/BDTI,24/0LBDTI BDT INTERLOCK CON 0 TERMINATOR TFR SPACE 4,10 ** TFR - TOGGLE FLAG REGISTER BIT. * * ENTRY (A) = FLAG BIT NUMBER. * * USES T1, CM+2. TFR SUBR ENTRY/EXIT STD T1 LDC TFRB-3 INITIALIZE BIT SEARCH STD CM+2 TFR1 LDN 3 SEARCH FOR FLAG BIT RAD CM+2 LDI CM+2 ZJN * IF BIT NOT FOUND LMD T1 LPN 37 NJN TFR1 IF NOT FOUND LDI CM+2 TOGGLE BIT LMN 40 STI CM+2 LDM 1,CM+2 SET BIT MNEMONIC IN MESSAGE STM SFRA+6 LDM 2,CM+2 STM SFRA+7 UJN TFRX RETURN WFW SPACE 4,10 ** WFW - WRITE FAT WORD. * * ENTRY (A) = RELATIVE FAT WORD TO WRITE. * (T3) = FAT INDEX. * MESSAGE BUFFER CONTAINS WORD TO WRITE. * * USES CM+3, CM+4. * * CALLS ECS. WFW SUBR ENTRY/EXIT SHN 22-/MMF/FATS ADD T3 SHN /MMF/FATS ADD DA+1 SET FAST ATTACH TRACK ADDRESS ADC /MMF/FAST*100 STD CM+4 SHN -14 ADD DA ADD WE STD CM+3 LDN 1-1 WORD COUNT RJM ECS WRITE EXTENDED MEMORY UJN WFWX RETURN SPACE 4,5 E1MR BSS 0 END OF ECS MMF CODE TITLE FUNCTION 0 - RETRIEVE DISPLAY INFORMATION. RDI SPACE 4,10 ** RDI - RETRIEVE DISPLAY INFORMATION. (FUNCTION 0) * * ENTRY (IR+3 - IR+4) = ADDR. * * ADDR ADDRESS OF TABLE OF SHARED DEVICES FOR THIS MACHINE. * * CALLS CAA, DAT. * * MACROS SFA. RDI SUBR ENTRY/EXIT LDK EFRL READ MACHINE STATE TABLE CRD CM LDN /MMF/MXMF SET MAXIMUM NUMBER OF MAINFRAMES STD T1 LDD CM SHN 14 LMD CM+1 CRM BFMS,T1 LDD RA WRITE STATE TABLE TO CM TABLE SHN 6 ADK /MRT/TMID CWM BFMS,T1 * RETURN MASKS OF MACHINES SHARING DEVICES WITH THIS MACHINE. LCN 0 SET TABLE INDEX STD SC RDI1 AOD SC INCREMENT TABLE INDEX RJM CAA ADD SC CRD CN READ TABLE ENTRY LDD CN+4 ZJN RDIX IF END OF TABLE SFA EST ADK EQDE READ EST ENTRY CRD CM LDD CM SHN 21-6 MJN RDI1 IF DEVICE UNAVAILABLE LDD RE STD T3 SET READ OPERATION LDD CN+4 RJM DAT READ DAT ENTRY LDM BUFD+5+4 LMC 0 CLEAR MASK OF THIS MACHINE RDIA EQU *-1 STD CN SET MACHINE MASK RJM CAA ADD SC WRITE ENTRY BACK TO *MREC* CWD CN UJP RDI1 LOOP FOR NEXT DEVICE ERRNG BUFD-* CODE OVERFLOWS BUFFER TITLE FUNCTION 3 - CLEAR DEVICE INTERLOCKS. CDV SPACE 4,10 ** CDV - CLEAR DEVICE INTERLOCKS. (FUNCTION 3) * * ENTRY (IR+4) = MACHINE INDEX FOR WHICH TO CLEAR INTERLOCKS. * * EXIT TO *MRP2*. * * MACROS MONITOR. CDV8 MONITOR HNGM CDV9 LDK EFRL CHANGE STATE OF DOWN MACHINE CRD CM LDD CM SHN 14 LMD CM+1 ADD IR+4 ADK /MMF/MFST-1 CRD CN LDD CN+4 LMN /MMF/MFMR NJN CDV8 IF NOT IN PROPER STATE * LDN /MMF/MFDN SET *1MR* DONE STATE ERRNZ /MMF/MFDN CODE DEPENDS ON VALUE OF TAG STD CN+4 LDD CM WRITE STATE WORD SHN 14 LMD CM+1 ADD IR+4 ADK /MMF/MFST-1 CWD CN LJM MRP2 EXIT TO DROP PP ONLY CDV SUBR ENTRY/EXIT LDK ESTP PRESET EQUIPMENT SEARCH CRD CM LDD CM+3 STD EQ CDV1 SOD EQ ZJN CDV9 IF END OF EQUIPMENTS SFA EST ADK EQDE CRD CN LDD CN LPC 5020 LMC 5000 NJN CDV1 IF NOT MMF SHARED DEVICE * OBTAIN DEVICE INTERLOCK WHILE PROCESSING TRACK INTERLOCKS. RJM CBI CLEAR SHARED BUFFERED DEVICE INTERLOCKS LDD EQ SET EST ORDINAL STD CM+1 LDN SDIS INTERLOCK DEVICE STD CM+3 MONITOR STBM LDD CN+4 GET TRT ADDRESS SHN 3 ADK TDGL CRD T1 ADK SDGL-TDGL CRD T6 (T6 - T6+1) = EM ADDRESS OF MST ADK TRLL-SDGL CRD CN+3-4 (CN+2 - CN+3) = TRT ADDRESS LDD T1+2 SET TRT LENGTH STD TC LDN 0 SET CURRENT TRT WORD STD CN UJN CDV3 ENTER LOOP * LOOP THROUGH TRT WORDS CHECKING FOR INTERLOCKED TRACKS. CDV2 AOD CN ADVANCE TRT WORD SBD TC PJP CDV4 IF END OF TRT CDV3 LDD CN+2 READ TRT WORD SHN 14 LMD CN+3 ADD CN CRD T1 LDD T1+4 SHN -4 LPN 17 ZJN CDV2 IF NO TRACK INTERLOCK BITS SET * INTERLOCKED TRACK(S) FOUND, CHECK IF HELD BY DOWN MACHINE. ADC TCDVB GET INTERLOCK BITS IN MRT ORDER STD T0 LDI T0 STM CDVB (CDVB) = TRACK INTERLOCK BITS (MRT ORDER) LDD IR+4 COMPUTE EXTENDED MEMORY MRT ADDRESS SHN 6+3 ADD CN SHN -3 ADC /MMF/MRST*100-100 STD SC ADDRESS OF MRT WORD IN TRACK ADD T6+1 STD CM+4 SHN -14 ADD T6 ADD RE STD CM+3 LDD MA SET CM ADDRESS STD CM+2 LDN 0 SET WORD COUNT TO 1 STD CM+1 MONITOR ECSM LDD MA READ MRT WORD CRD CM * CHECK MRT WORD OF DOWN MACHINE TO SEE IF IT HAS INTERLOCKS. LDD CN COMPUTE MRT BYTE LPN 7 STD BI LDM TCDV,BI SET BYTE FROM TABLE STD BY LDM TCDVA,BI SET MRT SHIFTS STM CDVA LMN 77 STM CDVC LDI BY CDVA SHN ** SHIFT MRT BITS TO BITS 4 - 7 LPC ** CDVB EQU *-1 ZJP CDV2 IF NO INTERLOCKS HELD BY THIS MACHINE STD T0 SAVE INTERLOCKS CLEARED CDVC SHN ** SHIFT BACK LMI BY STI BY * CLEAR TRACK INTERLOCK BITS IN TRT WORD. LDD T0 GET INTERLOCK BITS CLEARED IN TRT ORDER SHN -4 ADC TCDVB STD T0 LDI T0 LMD T1+4 STD T1+4 LDD CN+2 WRITE TRT WORD SHN 14 ADD CN+3 ADD CN CWD T1 * REWRITE MRT WORD TO EXTENDED MEMORY. LDD MA SET CM ADDRESS CWD CM WRITE MRT WORD TO MB STD CM+2 LDD SC SET ADDRESS OF MRT WORD ADD T6+1 STD CM+4 SHN -14 ADD T6 ADD WE STD CM+3 LDN 0 SET WORD COUNT TO 1 STD CM+1 MONITOR ECSM LJM CDV2 PROCESS NEXT TRT WORD * ADJUST *PFM* ACTIVITY COUNTS. CDV4 LDN GLGL-LLLL COMPUTE EM ADDRESS OF LOCAL MST STD SC LDN 0 STD T0 CDV5 LDN LLLL RAD SC AOD T0 LMD IR+4 NJN CDV5 IF NOT END OF COMPUTATION ERRNG 6-LLLL LOCAL MST EXCEEDS MESSAGE BUFFER LDD SC SET EXTENDED MEMORY ADDRESS FOR *ECSM* ADD T6+1 STD CM+4 SHN -14 ADD T6 ADD RE STD CM+3 LDD MA SET CM ADDRESS STD CM+2 LDC LLLL*100-100 STD CM+1 MONITOR ECSM LDD MA READ LOCAL AREA CRM MBUF,SX * SUBTRACT LOCAL PF COUNTS FROM GLOBAL. LDD CN+4 READ GLOBAL COUNT WORD FROM CM MST SHN 3 ADK TDGL CRD CM LDD CM+1 ZJN CDV7 IF NO COUNTS SET SBM MBUF+DULL*5-GLGL*5+1 MJN CDV6 IF COUNTER UNDERFLOW STD CM+1 CDV6 LDN 0 STM MBUF+DULL*5-GLGL*5+1 LDD CN+4 SHN 3 ADK TDGL CWD CM * WRITE LOCAL MST BACK TO EXTENDED MEMORY. LDD MA WRITE LOCAL AREA STD CM+2 CWM MBUF,SX LDD SC SET EXTENDED MEMORY ADDRESS FOR *ECSM* ADD T6+1 STD CM+4 SHN -14 ADD T6 ADD WE STD CM+3 LDC LLLL*100-100 STD CM+1 MONITOR ECSM * CLEAR DEVICE INTERLOCK. NOTE THAT THE TRT AND GLOBAL MST * ARE WRITTEN TO EXTENDED MEMORY BY THIS FUNCTION. CDV7 LDD EQ ADC 4000 SET CHECKPOINT BIT STD CM+1 LDN CDIS STD CM+3 MONITOR STBM LJM CDV1 PROCESS NEXT EQUIPMENT TCDV CON CM+4,CM+4,CM+4,CM+3,CM+3,CM+3,CM+2,CM+2 TCDVA CON SHNI+4,SHNI,SHNI+73,SHNI+4,SHNI,SHNI+73,SHNI+4,SHNI TCDVB CON 00,200,100,300,40,240,140,340 CON 20,220,120,320,60,260,160,360 TITLE *CDV* SUBROUTINES. ABE SPACE 4,10 ** ABE - ACCESS *BDT* ENTRY. * * ENTRY (A) = READ/WRITE FUNCTION CODE (*RE* OR *WE*). * (SC) = *DAT* INDEX. * (ABEA) = *BDT* TRACK. * * USES CM+3, CM+4, T6, T7. * * CALLS CEA, ECS. ABE SUBR ENTRY/EXIT ADC ADDI STM ABEB LDC ** (*BDT* TRACK) ABEA EQU *-1 STD T6 LDN 0 STD T7 RJM CEA CONVERT EXTENDED MEMORY ADDRESS LDD SC ADD *DAT* INDEX RAD CM+4 SHN -14 ABEB ADD RE READ FUNCTION * ADD WE (WRITE FUNCTION) RAD CM+3 LDN 1-1 READ OR WRITE ONE WORD RJM ECS READ OR WRITE *BDT* ENTRY UJN ABEX RETURN CBI SPACE 4,10 ** CBI - CLEAR SHARED BUFFERED DEVICE INTERLOCKS. * * ENTRY (MD) = MACHINE INDEX OF DOWNED MACHINE. * (EQ) = EST ORDINAL. * (CN - CN+4) = EST ENTRY. * * USES SC, CM - CM+4, T1 - T5. * * CALLS ABE, CFR, SFR. * * MACROS CMSTF, MONITOR. CBI SUBR ENTRY/EXIT LDD CN SHN 21-5 PJN CBIX IF NOT SHARED BUFFERED DEVICE LDN ZERL CRD CM LDD MD SET MACHINE INDEX OF DOWNED MACHINE STD CM+2 LDD EQ SET EST ORDINAL STD CM+4 LDN CBRS CLEAR *BAT* READ ACCESS PERMISSIONS STD CM+1 MONITOR MTEM LDD CN+4 SHN 3 ADN MDGL CRD CM LDD CM GET *DAT* INDEX LPC 377 STD SC LDN /MMF/BDTI SET *BDT* INTERLOCK RJM SFR LDN RE READ *BDT* ENTRY RJM ABE LDD MA CRD T1 LDD T1 CHECK ERROR PROCESSING INTERLOCK ZJN CBI1 IF INTERLOCK NOT SET LPN 7 LMD MD NJN CBI1 IF INTERLOCK NOT HELD BY DOWNED MACHINE STD T1 CLEAR INTERLOCK CMSTF GDER CLEAR ERROR PROCESSING BIT IN *ACGL* CBI1 LDD T2 CHECK RESTORE PARITY INTERLOCK ZJN CBI2 IF INTERLOCK NOT SET LPN 7 LMD MD NJN CBI2 IF INTERLOCK NOT HELD BY DOWNED MACHINE STD T1+1 CLEAR INTERLOCK STD T1+2 CLEAR CONTROLLER SERIAL NUMBER STD T1+3 STD T1+4 CMSTF GDUR CLEAR RESTORE IN PROGRESS BIT IN *ACGL* CMSTF GDRI CLEAR RESTORE INITIATION BIT IN *ACGL* CBI2 LDD MA CWD T1 LDN WE REWRITE *BDT* ENTRY RJM ABE LDN /MMF/BDTI CLEAR *BDT* INTERLOCK RJM CFR CMSTF GPDA CLEAR MMF PARITY DEVICE ACCESS FLAG CBIA EQU *-3 (BIT NUMBER FOR DOWNED MAINFRAME) UJP CBIX RETURN SPACE 4,10 * COMMON DECKS. QUAL COMPTGB QUAL$ EQU 0 PREVENT FURTHER QUALIFICATION T5 EQU EQ USE *EQ* AS EST ORDINAL IN *COMPTGB* *CALL COMPTGB QUAL * TGB EQU /COMPTGB/TGB SPACE 4,10 MBUF BSS 0 TITLE PRESET. PRS SPACE 4,10 ** PRS - PRESET PROGRAM. * * EXIT (ID) = MID OF THIS MACHINE. * (LK) = EST ORDINAL OF LINK DEVICE. * (MD) = MACHINE INDEX OF DOWNED MACHINE. * (MK) = MACHINE MASK OF DOWNED MACHINE. * (MI) = MID OF DOWNED MACHINE. * (AD) = FUNCTION CODE. * (QF) = 0. * (TW) = CONSTANT TWO. * (SX) = CONSTANT SIX. * (DT) = DAT / FAT TRACK. * (RE) = *ECSM* READ FUNCTION. * (WE) = *ECSM* WRITE FUNCTION. * (DA - DA+1) = DEVICE ACCESS TABLE ADDRESS. * (ET - ET+1) = ENVIRONMENT TABLE ADDRESS. * * CALLS AST, CEA, DAP, SCI. * * MACROS SFA. PRS SUBR ENTRY/EXIT LDN 2 STD TW LDD IR+3 SHN -6 STD AD SBN /MRT/MFUN MJN PRS0 IF LEGAL FUNCTION LDC PRSA * INCORRECT 1MR FUNCTION.* LJM ABT ABORT PRS0 LDD AD CHECK FUNCTION CODE LMN /MRT/PMT ZJN PRS0.1 IF *PMT* FUNCTION LMN /MRT/UMT&/MRT/PMT ZJN PRS0.1 IF *UMT* FUNCTION ISTORE SCIA,(UJN SCIX) DISABLE *CMS* INTERLOCK CODE LJM PRS3 READ MULTIMAINFRAME INFORMATION * WAIT FOR *CMS* TO COMPLETE. PRS0.1 LDC FEAF*10000+MSSI RJM AST CHECK FOR *CMS* ACTIVE ZJN PRS2 IF *CMS* NOT ACTIVE RJM DAP DELAY AND PAUSE NJN PRS1 IF NO ERROR FLAG SET STD CM CLEAR MESSAGE LDD CP ADK MS2W CWD CM LJM MRP2 DROP PP PRS1 LDD CP * WAITING FOR *CMS* TO FINISH.* ADK MS2W CWM PRSC,TR LDN ZERL CRD CM LDD MA CWD IR MONITOR RECM RECALL *1MR* LJM PPR RETURN TO RESIDENT PRS2 STD CM CLEAR MESSAGE LDD CP ADK MS2W CWD CM RJM SCI SET *CMS* INTERLOCK * LDN 0 STD QF LDN LDOS SET TO DECREMENT ACTIVITY COUNT STM SCIB * READ MULTIMAINFRAME INFORMATION. PRS3 LDK MMFL READ LINK DEVICE EST ORDINAL CRD CM LDD CM STORE MID OF THIS MACHINE STD ID LDD CM+3 SET MACHINE MASK STM RDIA LDD CM+1 CHECK FOR SHARED BUFFERED DEVICES SHN 21-11 MJN PRS3.1 IF SHARED BUFFERED DEVICES DEFINED AOM PRSE DISABLE SHARED BUFFERED DEVICE PROCESSING PRS3.1 LDD CM+1 STORE EST ORDINAL OF LINK DEVICE LPC 777 STD LK SET LINK EST ORDINAL STM CFIA ZJN PRS4 IF NO LINK DEVICE SFA EST READ EST ENTRY ADK EQDE CRD CN LDD CN+4 READ MST TO OBTAIN LABEL TRACK SHN 3 ADN ALGL CRD CN LDD CN+4 SET DAT/FAT TRACK STD DT LDD CN+1 SET LABEL TRACK STD T6 LDN /MMF/ETLT SET ENVIRONMENT TABLE SECTOR STD T7 RJM CEA CONVERT TO EXTENDED MEMORY ADDRESS LDD CM+3 STD ET LDD CM+4 STD ET+1 LDD DT SET DAT/FAT TRACK ADDRESS STD T6 LDN 0 STD T7 RJM CEA CONVERT EXTENDED MEMORY ADDRESS LDD CM+4 STD DA+1 LDD CM+3 STD DA PRS4 LDD AD LMN /MRT/CDV NJN PRS5 IF NOT CLEAR DEVICE INTERLOCK FUNCTION LDD IR+4 UJN PRS6 SET MACHINE INDEX OF DOWNED MACHINE PRS5 LDD RA SET MACHINE INDEX OF DOWNED MACHINE SHN 6 ADC /MRT/MASK CRD CM LDD CM+4 PRS6 STD MD ADN GPDA-1 SET BIT NUMBER FOR *CMSTF* REQUEST LMC LCNI STM CBIA LDM PRSB-1,MD SET MASK OF DOWNED MACHINE STD MK LDD CM SET MID OF DOWNED MACHINE STD MI LDN 6 STD SX LDC RECS*1000 STD RE LDC WECS*1000 STD WE PRSE LDN 0 * LDN 1 (SHARED BUFFERED DEVICES NOT DEFINED) NJN PRS7 IF SHARED BUFFERED DEVICES NOT DEFINED LDD ET+1 ADN /MMF/BAET SET ADDRESS OF ENVIRONMENT TABLE WORD STD CM+4 SHN -14 ADD ET ADD RE STD CM+3 LDN 1-1 READ ONE WORD FROM EXTENDED MEMORY RJM ECS LDD MA CRD CM LDD CM+1 SET *BDT* FIRST TRACK STM ABEA * CHECK FOR ISD ENVIRONMENT. PRS7 LDM PRSD,AD SET ADDRESS OF FUNCTION PROCESSOR STM MRPA LDD LK NJP MRP IF EXTENDED MEMORY MMF LDC MRP STM EXR SET RETURN ADDRESS EXECUTE 2MR,* LJM EXR+1 LOAD ISD MMF SUBROUTINES PRSA DATA C* INCORRECT 1MR FUNCTION.* * TABLE OF MACHINE MASKS (INDEXED BY MACHINE INDEX). PRSB BSS 0 .1 SET 1 DUP MXMF,2 CON .1 .1 SET .1+.1 PRSC DATA 30L WAITING FOR *CMS* TO FINISH. * TABLE OF FUNCTION PROCESSOR ADDRESSES. PRSD INDEX INDEX /MRT/RDI,RDI RETRIEVE DISPLAY INFORMATION INDEX /MRT/PMT,PMT PROCESS DAT, FAT, MRT-S INDEX /MRT/UMT,UMT UPDATE MST ENTRIES IN CM INDEX /MRT/CDV,CDV CLEAR DEVICE INTERLOCKS INDEX /MRT/PRB,PRB PROCESS RESERVES AND BAT-S INDEX /MRT/MFUN SPACE 4,10 * PRESET COMMON DECKS. *CALL COMPAST SPACE 4,10 OVERFLOW TTL 1MR/2MR - PROCESS ISD RECOVERY. TITLE ISD MMF SUBROUTINES. IDENT 2MR,OVLA *COMMENT 1MR - PROCESS ISD RECOVERY. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. SPACE 4,10 *** 2MR - PROCESS ISD RECOVERY. * D. K. ELDRED. 82/12/01. SPACE 4,10 *** ISD MMF SUBROUTINES. * * THE FOLLOWING CODE IS USED ONLY FOR ISD MMF ENVIRONMENTS. * IT OVERLAYS THE EXTENDED MEMORY MMF SUBROUTINES IN *1MR*. ORG OVLA TMR SUBR ENTRY/EXIT UJN TMRX RETURN CTC SPACE 4,15 ** CTC - COPY DISK TABLES TO CENTRAL MEMORY. * * ENTRY (T3) = MST POINTER. * (T5) = EST ORDINAL. * (T6) = LABEL TRACK. * (CT) = LAST TRT SECTOR + 1. * (WB+2) = TRT LENGTH. * (WB+3) = LABEL SECTOR NUMBER. * * USES CT, T7, WB, WB+1. * * CALLS CAT, RDS. CTC1 LDD WB+2 ADJUST WORD COUNT LPN 77 ZJN CTCX IF END OF TRT ON SECTOR BOUNDARY STD WB CTC2 LDC BUFS READ SECTOR OF TRT DATA RJM RDS LDD T3 SET MST POINTER TO TRT SHN 3 ADN TRLL CALCULATE TRT ADDRESS RJM CAT ADD WB+1 WRITE TRT DATA TO CENTRAL MEMORY CWM BUFS+2,WB LDD HN ADVANCE TRT OFFSET RAD WB+1 CTC3 AOD T7 ADVANCE SECTOR NUMBER SBD CT MJN CTC2 IF ANOTHER FULL SECTOR ZJN CTC1 IF PARTIAL SECTOR CTC SUBR ENTRY/EXIT LDN 0 STD WB+1 INITIALIZE TRT OFFSET LDD HN STD WB SET FULL SECTOR WORD COUNT LDD WB+3 STD T7 SET LABEL SECTOR SOD CT UJN CTC3 COPY TRT CUC SPACE 4,10 ** CUC - COMPARE UPDATE COUNTS. * * ENTRY (A) = ADDRESS OF COUNTER IN *BFMS* BUFFER. * (BUFS) = TRT / MRT SECTOR. * * EXIT (A) = 0 IF COUNTS MATCH. * * USES T1. CUC SUBR ENTRY/EXIT STD T1 LDI T1 COMPARE UPDATE COUNTS LMM BUFS+2+5*77+2 NJN CUCX IF NO MATCH LDM 1,T1 LMM BUFS+2+5*77+3 NJN CUCX IF NON-MATCHING COUNTS LDM 2,T1 LMM BUFS+2+5*77+4 SCN 77 UJN CUCX RETURN PFA SPACE 4,15 ** PFA - PROCESS FAST ATTACH FOR ISD. * * ENTRY (TC) = MACHINE INDEX*5. * SYSTEM SECTOR IN BFMS. * * EXIT (A) = 0 IF REWRITE SYSTEM SECTOR. * * CALLS USC. * * USES T2. PFA3 LDN 1 SET NO SYSTEM SECTOR REWRITE PFA SUBR ENTRY/EXIT LDM UCSS,TC SHN 21-2 PJN PFA3 IF NO ENTRY FOR DOWNED MACHINE SHN -21+2+22 LPN 1 STD T2 RJM USC UPDATE SYSTEM SECTOR COUNTS LDN 0 PRESET COUNTER STD T2 PFA1 LDM UCSS+5,T2 NJN PFA2 IF FILE STILL BEING ACCESSED LDN 5 ADVANCE COUNTER RAD T2 LMC /MMF/MMPF*5 NJN PFA1 IF NOT ALL MAINFRAMES CHECKED STM FISS CLEAR FAST ATTACH STATUS LDC PMFT*100 RESET FILE TYPE STM FNSS+4 PFA2 LDN 0 SET TO REWRITE SYSTEM SECTOR UJN PFAX RETURN RMI SPACE 4,10 ** RMI - RELEASE MST INTERLOCKS. * * ENTRY (T5) = EST ORDINAL. * (MD) = DOWNED MACHINE INDEX. * * EXIT TO *MSR* IF LABEL SECTOR ERROR. * * USES T6, T7, CM - CM+4. * CALLS CDC, CLC, CTC, C2D, DAP, RSC, UDT, VDT, WDS. * * MACROS ENDMS, SETMS. RMI SUBR ENTRY/EXIT LDD T5 CONVERT UPPER DIGIT OF EST ORDINAL SHN -6 ADC 2RQ0 STM RMIB+1 LDD T5 CONVERT LOWER TWO DIGITS OF EST ORDINAL RJM C2D STM RMIB+2 SETMS IO,(NS,DE,RW) LDD CM+4 SET MST ADDRESS STD T3 SHN 3 ADN ALGL READ DEVICE ALLOCATION WORD CRD CM LDD CM+1 SET LABEL TRACK STD T6 LDN /MMF/LSLT STD T7 LDD CP WRITE MESSAGE TO B-DISPLAY ADN MS2W CWM RMIB,TR RMI1 LDC BFMS READ LABEL SECTOR RJM RSC RJM VDT VERIFY DISK TABLES ZJN RMI2 IF RESERVE HELD BY DOWN MACHINE MJN RMI4 IF DEVICE NOT INTERLOCKED ENDMS RJM DAP DELAY NJP RMI1 IF NO OPERATOR DROP LJM ERR PROCESS OPERATOR DROP RMI2 LDD WB+3 ZJN RMI3 IF PRIMARY MRT CURRENT LDN 0 SBD WB+3 SET PRIMARY MRT SECTOR RAD T7 LDC BUFS COPY MRT TO PRIMARY LOCATION RJM WDS RMI3 LDM N4SS+5*SDGL+4 SCN 77 CLEAR DOWN MACHINE INTERLOCK SHN -1 LMD WB+4 SET THIS MACHINE-S INTERLOCK SHN 1 STM N4SS+5*SDGL+4 LDN /MMF/LSLT SET PRIMARY LABEL SECTOR STD T7 RJM CLC COMPUTE LABEL CHECKSUM STM CKSS RMI4 LDD MD SHN 2 DOWN MACHINE INDEX * 5 ADD MD ADC DISS-5 SET DIT ENTRY ADDRESS STD T0 STM RMIA LDI T0 EXTRACT ACTIVITY COUNT LPN 77 LMC -0 DECREMENT PFM ACTIVITY COUNT RAM N4SS+TDGL*5+1 * CLEAR PF INTERLOCK AND INSTALL INTERLOCK IF HELD * BY DOWN MACHINE. LDI T0 LPC 300 LMM N4SS+5*TDGL+1 CLEAR PF AND INSTALL INTERLOCKS STM N4SS+5*TDGL+1 LDN ZERL CLEAR DIT ENTRY CRM **,ON RMIA EQU *-1 LDN /MMF/LSLT SET PRIMARY LABEL SECTOR STD T7 RJM CDC COMPUTE LABEL CHECKSUM STM CKSS LDC BFMS+WLSF WRITE LABEL SECTOR RJM WDS PJN RMI6 IF NO WRITE ERROR LDN /MRT/WER SET WRITE ERROR LJM MSR RETURN ERROR TO *MREC* RMI6 LDD WB NJN RMI8 IF NOT UPDATING TABLES IN CM AOM N4SS+5*SDGL+4 LDD T3 CALCULATE FWA OF TRT SHN 3 ADK TDGL SET DEVICE INTERLOCK IN CM CWM N4SS,TR RJM CTC COPY TRT TO CENTRAL MEMORY ENDMS RJM UDT UPDATE DEVICE INFORMATION TABLE LDN CDIS STD CM+3 SET *STBM* SUBFUNCTION LDD T5 STD CM+1 REBUILD TABLES ON DISK MONITOR STBM RMI8 ENDMS RELEASE MASS STORAGE RESOURCES * LDN 0 STD CM LDD CP ADN MS2W CLEAR MESSAGE CWD CM LJM RMIX RETURN RMIB DATA C* EQXXX, CLEARING MST INTERLOCKS.* SDM SPACE 4,15 ** SDM - CHECK DEVICE SHARED TO DOWN MF. * * ENTRY (T5) = EST ORDINAL. * (MI) = MID OF DOWN MAINFRAME. * * EXIT (A) = 0, DEVICE SHARED TO DOWN MF. * = 1, DEVICE NOT SHARED TO DOWN MF. * (MD) = MACHINE INDEX. * * USES RE, T6, CM - CM+4. * * MACROS SFA. * * CALLS CAT. SDM SUBR ENTRY/EXIT SFA EST,T5 ADK EQDE READ EST ENTRY CRD CM LDD CM CHECK DEVICE ATTRIBUTES LPC 4120 LMC 4020 NJN SDM2 IF NOT MASS STORAGE / AVAILABLE / ISD LDD CM+4 STD RE SAVE MST ADDRESS / 10 SHN 3 ADK TDGL FETCH TRT LENGTH CRD CM LDD CM+2 DETERMINE LENGTH OF MRT ADN 7 SHN -3 ADD CM+2 ADD LENGTH OF THE TRT SBN 1 STD T6 SET DIT OFFSET LDN /MMF/MMPF STD MD MAXIMUM MACHINE CONFIGURATION SDM1 LDD RE SHN 3 ADN TRLL RJM CAT CALCULATE FWA OF TRT ADD T6 ADD MD CRD CM READ DIT ENTRY LDD CM+4 LMD MI ZJN SDM3 IF MATCHING MACHINE ID-S SOD MD NJN SDM1 IF MORE TO CHECK SDM2 LDN 1 SDM3 LJM SDMX RETURN UDT SPACE 4,10 ** UDT - UPDATE DEVICE INFORMATION TABLE IN CM. * * ENTRY (T3) = MST POINTER. * (WB+2) = TRT LENGTH. * (BFMS) = LABEL SECTOR. * * USES T1, WB+2. * * CALLS CAT. UDT SUBR ENTRY/EXIT LDN /MMF/MISD STD T1 DIT LENGTH LDD WB+2 ADN 7 CALCULATE DIT OFFSET SHN -3 RAD WB+2 APPEND MRT LENGTH TO TRT LENGTH LDD T3 SHN 3 ADN TRLL CALCULATE FWA OF TRT RJM CAT ADD WB+2 COPY DIT TO CENTRAL MEMORY CWM DISS,T1 UJN UDTX RETURN VDT SPACE 4,25 ** VDT - VERIFY DISK TABLES. * * ENTRY (MD) = DOWN MACHINE INDEX FOR SPECIFIED DEVICE. * (T3) = MST POINTER. * (T5) = EST ORDINAL. * (T6) = LABEL TRACK. * (T7) = 0. * (BFMS) = FIRST LABEL SECTOR. * * EXIT (A) .LT. 0 IF DEVICE NOT INTERLOCKED. * .GT. 0 IF INTERLOCK HELD BY ACTIVE MACHINE. * .EQ. 0 IF INTERLOCK HELD BY DOWN MACHINE. * (T7) = MRT SECTOR NUMBER IF TABLES VERIFIED. * (WB) = 0 IF DEVICE INTERLOCK HELD BY DOWN MACHINE. * (WB+2) = TRT LENGTH. * (WB+3) = LABEL SECTOR NUMBER IF TABLES VERIFIED. * (WB+4) = THIS MACHINE INDEX FOR SPECIFIED DEVICE. * (BFMS) = LABEL SECTOR. * (BUFS) = MRT SECTOR IF DOWN MACHINE HAS INTERLOCK. * * USES CT, CM - CM+4, WB - WB+4. * * CALLS CLC, CTC, CUC, RSC. * * MACROS ENDMS. VDT8 LCN 1 INDICATE DEVICE NOT INTERLOCKED VDT SUBR ENTRY/EXIT LDD T3 SHN 3 ADK TDGL FETCH TRT LENGTH CRD WB ADN DULL-TDGL GET DEVICE USAGE WORD CRD CM LDD CM+2 EXTRACT DIT ORDINAL LPN 17 ADN 1 SET MACHINE INDEX STD WB+4 LDM N4SS+5*SDGL+4 CHECK SOFTWARE RESERVE LPN 77 ZJN VDT8 IF DEVICE NOT INTERLOCKED SHN -1 LMD MD CHECK DEVICE HOLDING INTERLOCK STD WB NJN VDTX IF NOT HELD BY DOWN MACHINE VDT1 STD WB+3 RJM CLC COMPUTE LABEL CHECKSUM LMM CKSS NJN VDT3 IF CHECKSUM ERROR * READ ENTIRE TRT TO ENSURE NO DISK ERRORS FOR *CTC*. AOD T7 SET FIRST SECTOR OF TRT LDD WB+2 SHN -6 CALCULATE LAST SECTOR OF TRT ADN 2 ADD WB+3 INCLUDE ALTERNATE TABLES BIAS STD CT VDT2 LDC BUFS READ TRT SECTOR RJM RSC AOD T7 ADVANCE SECTOR NUMBER LMD CT NJN VDT2 IF NOT END OF TRT SECTOR * VERIFY UPDATE COUNTS BETWEEN MST AND TRT. LDC N4SS+5*SDGL+2 COMPARE UPDATE COUNTS RJM CUC VDT3 NJN VDT4 IF NON-MATCHING COUNTS LDN /MMF/MRTL-1 ADD MD ADD WB+3 SET MRT SECTOR OF DOWN MACHINE STD T7 LDC BUFS READ MRT SECTOR RJM RSC * VERIFY UPDATE COUNTS BETWEEN DIT AND MRT. LDD MD CALCULATE ADDRESS OF DIT ENTRY SHN 2 ADD MD ADC /LSD/DISS-5+1 COMPARE UPDATE COUNTS RJM CUC ZJP VDTX IF MATCHING COUNTS VDT4 LDD WB+3 ZJN VDT5 IF ALTERNATE LABEL NOT CHECKED ENDMS LJM RSC1 PROCESS READ ERROR VDT5 LDD T3 READ MST SHN 3 ADN DULL SET ALTERNATE LABEL SECTOR CRD T7 LDC BFMS READ LABEL SECTOR RJM RSC LDD T7 LJM VDT1 VERIFY ALTERNATE LABEL TABLES SPACE 4,10 ** COMMON DECKS. *CALL COMPCLC SPACE 4,5 ERRNG QBUF-* CODE OVERFLOW INTO BUFFERS SCP SPACE 4,10 ** SCP - SET / CLEAR PP PAUSE FLAG. * * ENTRY (A) = 0 IF CLEARING PP PAUSE FLAG. * = 1 IF SETTING PP PAUSE FLAG. * * USES CM - CM+4. SCP SUBR ENTRY/EXIT STD T0 LDD CP FETCH SENSE SWITCH WORD ADN SNSW CRD CM LDD CM+3 SET / CLEAR PAUSE FLAG SCN 1 LMD T0 STD CM+3 LDD CP STORE SENSE SWITCH WORD ADN SNSW CWD CM UJN SCPX RETURN TITLE FUNCTION 2 - UPDATE MST ENTRIES IN CM. UMT SPACE 4,10 ** UMT - UPDATE MST ENTRIES IN CM. (FUNCTION 2) * * EXIT MST-S FOR INDEPENDENT SHARED DEVICES UPDATED IN CM. * * USES T1, T5, T6, WB+2, CM - CM+4, CN - CN+4. * * CALLS C2D, RLS, SCP, SDM, UDT, VDT. * * MACROS DELAY, EXECUTE, SFA. UMT8 LDN 0 CLEAR PP PAUSE FLAG RJM SCP UMT SUBR ENTRY/EXIT EXECUTE 2MS LDN NOPE-1 INITIALIZE EST ORDINAL FOR SEARCH STD T5 LDN 0 CLEAR TRACK POINTER (FOR *STB*) STD T6 LDN ESTP GET EST POINTERS CRD CN UMT1 AOD T5 ADVANCE EST ORDINAL LMD CN+3 ZJN UMT8 IF END OF MASS STORAGE DEVICES RJM SDM NJN UMT1 IF NOT AVAILABLE ISD SHARED WITH DOWN MF LDD T5 SHN -6 ADC 2RQ0 CONVERT UPPER DIGIT OF EST ORDINAL STM UMTA+1 STM UMTB+1 LDD T5 CONVERT LOWER TWO DIGITS OF EST ORDINAL RJM C2D STM UMTA+2 STM UMTB+2 LDN 1 SET PP PAUSE FLAG RJM SCP UMT2 RJM RLS READ LABEL SECTOR NJN UMT4 IF READ ERRORS RJM VDT VERIFY DISK TABLES ENDMS RJM UDT UPDATE DIT IN CENTRAL MEMORY UMT3 LJM UMT1 PROCESS NEXT EST ENTRY UMT4 LPN 77 EXTRACT ERROR CODE LMN CRSE NJN UMT5 IF CONTROLLER NOT RESERVED LDD T4 RJM C2D CONVERT CHANNEL FOR MESSAGE STM UMTA+5 LDD CP WRITE MESSAGE TO B-DISPLAY ADN MS2W CWM UMTA,TR UJN UMT6 CHECK FOR CLEARED PP PAUSE FLAG UMT5 LMN RESE&CRSE NJP RSC1 IF UNIT NOT RESERVED LDM RLSA+5 STM UMTB+5 SET UNIT NUMBER IN MESSAGE LDD CP ADN MS2W COPY MESSAGE TO B-DISPLAY CWM UMTB,TR UMT6 DELAY LDD CP READ SENSE SWITCH WORD ADN SNSW CRD CM LDD CM+3 CHECK FOR PAUSE FLAG CLEARED SHN 21-0 MJP UMT2 IF *GO* COMMAND NOT ISSUED UMT7 LJM UMT1 PROCESS NEXT EST ENTRY UMTA DATA C* EQXXX, CHYY, CONTROLLER RESERVED.* UMTB DATA C* EQXXX, UNYY, UNIT RESERVED.* SPACE 4,10 E2MR BSS 0 END OF ISD RECOVERY CODE OVERFLOW OVLA OVLB MAX E1MR+5,E2MR+5 *2MS* LOAD ADDRESS TTL 1MR/2MS - HARDWARE RESERVE ROUTINES. TITLE COMMON SUBROUTINES. IDENT 2MS,OVLB *COMMENT 1MR - HARDWARE RESERVE ROUTINES. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. SPACE 4,10 *** 2MS - HARDWARE RESERVE ROUTINES. ORG OVLB TMS SUBR ENTRY/EXIT UJN TMSX RETURN AFTER LOAD RES SPACE 4,15 ** RES - PROCESS UNIT AND CONTROLLER RESERVES. * * ENTRY (IR+3 - IR+4) = FWA OF TABLE OF DEVICES TO RECOVER. * * EXIT RETURN TO *MREC* FOR OPERATOR ACTION IF THERE IS * A UNIT OR CONTROLLER RESERVE WHICH CANNOT BE CLEARED. * * USES SC, T5, T6, CM - CM+4, CN -CN+4. * * CALLS CAA, CBW, RLS, SDM, *0RI*. * * MACROS EXECUTE. RES SUBR ENTRY/EXIT EXECUTE 0RI,BUFS+1 STM RESA SET PROCESSOR ADDRESS LCN 0 STD SC RES1 AOD SC ADVANCE TABLE INDEX RJM CAA ADD SC READ TABLE ENTRY FOR NEXT SHARED DEVICE CRD CN LDD CN+4 SET EST ORDINAL STD T5 ZJN RESX IF END OF DEVICES TO RECOVER LDD CN+3 ZJN RES2 IF NOT ISD RJM SDM NJN RES1 IF NOT SHARED WITH DOWN MF RES2 LDD CN ZJN RES3 IF DEVICE HAS NOT YET BEEN PROCESSED SBN /MRT/REL MJN RES1 IF IGNORE OR DEVICE ALREADY PROCESSED RES3 RJM CBW CLEAR BAT WRITE PERMISSIONS RJM RLS READ LABEL SECTOR ZJN RES4 IF NO ERRORS LPN 77 LMN CRSE ZJN RES7 IF CONTROLLER RESERVED LMN RESE&CRSE ZJN RES5 IF UNIT RESERVED RES4 LDN /MRT/PRO SET DEVICE PROCESSED STD CN RJM CAA WRITE ENTRY BACK TO TABLE ADD SC CWD CN LJM RES1 CHECK NEXT EQUIPMENT RES5 LDD BI CHECK EQUIPMENT TYPE SHN 21-7 PJN RES8 IF NOT *LDAM* EQUIPMENT LDD CN CHECK FOR RELEASE REQUESTED SBN /MRT/REL NJN RES8 IF OPERATOR DID NOT SELECT RELEASE STD CN RJM * EXECUTE *0RI* TO RELEASE RESERVE RESA EQU *-1 UJN RES3 RECHECK RESERVE RES7 LDD T4 RETURN CHANNEL NUMBER STD CN+1 LDN /MRT/CRS SET CONTROLLER RESERVED UJN RES9 CONTINUE RES8 LDN /MRT/URS SET UNIT RESERVED RES9 STD CN+4 LDD T5 SET EQUIPMENT STD CN+3 LDD SC SET INDEX INTO DEVICE TABLE STD CN+2 LDN 0 STD CN LDD RA RETURN ERROR WORD TO *MREC* SHN 6 ADC /MRT/ERRW CWD CN LJM DROP DROP PP CBW SPACE 4,10 ** CBW - CLEAR BAT WRITE ACCESS PERMISSIONS. * * ENTRY (T5) = EST ORDINAL FOR DEVICE. * (MD) = MACHINE INDEX OF DOWNED MACHINE. * * USES CM - CM+4, WB - WB+4. * * MACROS MONITOR, SFA. CBW SUBR ENTRY/EXIT SFA EST,T5 SET DEVICE PARAMETERS ADK EQDE CRD WB LDD WB SHN 21-11 PJN CBWX IF NOT ECS MMF SHARED DEVICE SHN 21-5-21+11 PJN CBWX IF NOT SHARED BUFFERED DEVICE LDN ZERL CRD CM LDD MD SET MACHINE INDEX OF DOWNED MACHINE STD CM+2 LDD T5 SET EST ORDINAL STD CM+4 LDN CBWS CLEAR BAT WRITE ACCESS PERMISSIONS STD CM+1 MONITOR MTEM UJN CBWX RETURN CLU SPACE 4,10 ** CLU - CLEAR UTILITY / DEVICE INTERLOCKS. * * USES SC, CM - CM+4, CN - CN+4, T2 - T7. * * CALLS CEA, ECS, RSC, WSC. * * MACROS ENDMS, SETMS. CLU SUBR ENTRY/EXIT LDD ET+1 ADN /MMF/DAET SET ADDRESS OF ENVIRONMENT TABLE WORD STD CM+4 SHN -14 ADD ET ADD RE STD CM+3 LDN 1-1 READ ONE WORD FROM EXTENDED MEMORY RJM ECS * LDN 0 SET FIRST SECTOR STD T7 LDD MA GET WORD FROM CM BUFFER CRD CM LDD CM+4 NUMBER OF WORDS IN DAT SHN -1 STD SC NUMBER OF DAT ENTRIES LDD DT SET DAT TRACK STD T6 LDD LK READ FIRST SECTOR OF DAT STD T5 SETMS IO,RW CLU1 LDC BFMS READ EXTENDED MEMORY SECTOR RJM RSC LDN 100/2 SET NUMBER OF DAT ENTRIES STD T2 LDN 1 SKIP HEADER BYTES STD T3 CLU2 LDN 12 INCREMENT POSITION IN BUFFER RAD T3 LDM BFMS-11,T3 ZJN CLU4 IF HOLE LDM BFMS,T3 LMD MK NJN CLU4 IF NOT ONLY DOWNED MACHINE USING DEVICE * LDN 0 STM BFMS,T3 CLEAR STATUS BYTE LDM BFMS-5,T3 NJN CLU6 IF SHARED DEVICE * LDN 0 STM BFMS-11,T3 CLEAR *DAT* ENTRY CLU4 SOD SC NJN CLU5 IF MORE DAT ENTRIES * LDN 0 RJM WSC REWRITE SECTOR ENDMS LJM CLUX RETURN CLU5 SOD T2 NJN CLU2 IF NOT END OF SECTOR * LDN 0 RJM WSC REWRITE SECTOR AOD T7 LJM CLU1 READ NEXT SECTOR * CLEAR INTERLOCKS IN *ACGL* AND *SDGL*. CLU6 LDD T7 SAVE DAT SECTOR STD CN+1 LDD T2 SAVE POSITION IN DAT STD CN LDM BFMS-5,T3 SET MST TRACK STD T6 LDN /MMF/MSST SET MST SECTOR STD T7 LDC BUFS READ MST SECTOR RJM RSC LDN 0 SET LOCAL AREA OFFSET STD T1 LDD MD SET LOCAL AREA COUNT STD T2 CLU7 LDN 0 CLEAR LOCAL INTERLOCKS STM BUFS+2+5*DULL+1,T1 LDK LLLL*5 ADVANCE OFFSET RAD T1 SOD T2 NJN CLU7 IF NOT END OF MACHINES * LDN 0 STM BUFS+2+5*TDGL+1 CLEAR GLOBAL INTERLOCKS LDM BUFS+2+5*SDGL+4 SCN 77 CLEAR SOFTWARE RESERVE STM BUFS+2+5*SDGL+4 LDN ZERL CLEAR DEVICE DESCRIPTION CRM BUFS+2+5*PFGL,ON LDM BUFS+2+5*ACGL+4 LPK MGLAP LMK MGUNL SET GLOBAL UNLOAD STM BUFS+2+5*ACGL+4 LDC BUFS REWRITE MST SECTOR RJM WSC LDD DT RESTORE DAT TRACK STD T6 LDD CN+1 RESTORE DAT SECTOR STD T7 LDD CN RESTORE DAT POSITION STD T2 UJP CLU4 PROCESS NEXT DAT ENTRY RLS SPACE 4,20 ** RLS - READ LABEL SECTOR. * * ENTRY (T5) = EST ORDINAL. * * EXIT (A) = 0 IF NO ERROR. * = (RDCT) IF ERROR. * (T3) = MST POINTER. * (T6) = LABEL TRACK. * (BI) = BYTE 0 OF EST ENTRY FOR DEVICE. * (CN+1) = PHYSICAL UNIT NUMBER IF UNIT RESERVED. * (BFMS) = FIRST LABEL SECTOR. * * CALLS C2D, RDS. * * USES QS, T1, T7, CM - CM+4, WB - WB+4. * * MACROS ENDMS, SETMS. RLS SUBR ENTRY/EXIT SETMS IO,(NS,RR) LDD CM SAVE BYTE 0 OF *EQDE* WORD STD BI LDD CM+4 SAVE MST POINTER STD T3 SHN 3 ADN ALGL FETCH LABEL TRACK CRD T6 ADN MDGL-ALGL GET SECTOR LIMITS CRD CM ADN DDLL-MDGL READ UNIT LIST CRD WB LDD T7 SET LABEL TRACK STD T6 LDD CM+1 EXTRACT SINGLE UNIT SECTOR LIMIT LPC 3777 STD QS LDD CM+4 SET LAST LABEL SECTOR SBD QS STD T7 LDD T5 CONVERT UPPER DIGIT OF EST ORDINAL SHN -6 ADC 2RQ0 STM RLSA+1 LDD T5 CONVERT LOWER TWO DIGITS OF EST ORDINAL RJM C2D STM RLSA+2 LDD WB EXTRACT UNIT COUNT LPN 7 LMN 7 INVERT COUNT STD WB * READ LABEL SECTOR. RLS1 SHN 21-0 SET UNIT LIST INDEX STD T1 SCN 3 MERGE BYTE FROM UNIT LIST LMM WB+1,T1 MJN RLS2 IF UNIT PACKED LOW SHN -6 RLS2 LPN 77 EXTRACT UNIT NUMBER STD CN+1 RJM C2D STM RLSA+5 LDD CP WRITE MESSAGE TO B-DISPLAY ADN MS2W CWM RLSA,TR LDC BFMS READ SECTOR RJM RDS PJN RLS4 IF NO ERROR LPN 77 LMN CRSE ZJN RLS3 IF CONTROLLER RESERVED LMN RESE&CRSE NJN RLS4 IF NOT UNIT RESERVED RLS3 ENDMS * LDN 0 STD CM LDD CP CLEAR MESSAGE ADN MS2W CWD CM LDM RDCT SET ERROR STATUS LJM RLSX RETURN * ADVANCE TO NEXT UNIT OF MULTI-UNIT DEVICE. RLS4 LDD T7 DECREMENT SECTOR ADDRESS SBD QS MJN RLS3 IF END OF UNITS STD T7 AOD WB LJM RLS1 LOOP FOR NEXT UNIT RLSA DATA C* EQXXX, UNYY, CHECKING RESERVE.* WSC SPACE 4,10 ** WSC - WRITE EXTENDED MEMORY SECTOR. * * ENTRY (A) = 0 IF DATA IN *BFMS*. * (T4 - T7) = DRIVER PARAMETERS. * * EXIT TO *MSR* IF UNRECOVERED WRITE ERROR. * * CALLS WDS, MSR. WSC SUBR ENTRY/EXIT NJN WSC1 IF ALTERNATE BUFFER LDC BFMS SET BUFFER ADDRESS WSC1 RJM WDS WRITE SECTOR PJN WSCX IF NO ERROR LDN /MRT/WER SET LINK DEVICE WRITE ERROR LJM MSR PROCESS ERROR ERRNG BUFS-* CODE OVERFLOWS BUFFER TTL 1MR - MACHINE RECOVERY PROCESSOR. SPACE 4,10 END