IDENT 1MV,IMV PERIPH BASE MIXED SST *COMMENT 1MV - MASS STORAGE AND MEDIA VERIFICATION. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. TITLE 1MV - MASS STORAGE AND MEDIA VERIFICATION. SPACE 4,10 *** 1MV - MASS STORAGE AND MEDIA VERIFICATION. * * R. K. MYERS. 84/11/19. * W. E. GOEBEL. 85/04/12. SPACE 4,10 *** *1MV* PERFORMS THE FOLLOWING MASS STORAGE VALIDATION * FUNCTIONS. * * 0 = DVFC = MASS STORAGE DEVICE VERIFICATION. * PERFORM A PHYSICAL AND LOGICAL VERIFICATION OF A MASS * STORAGE EQUIPMENT. * PHYSICAL VERIFICATION INVOLVES WRITING AND READING * THE MAINTENANCE CYLINDER ON ALL UNITS OF A DEVICE * THROUGH ALL CHANNELS OF ACCESS. THE DATA READ IS * VERIFIED AGAINST THE DATA WRITTEN. * LOGICAL VERIFICATION INVOLVES THE READING OF THE * LABEL SECTOR ON ALL UNITS OF A DEVICE THROUGH ALL * CHANNELS OF ACCESS. THE LABEL READ IS VERIFIED FOR * THE PROPER DATA. * * 1 = ONFC = SET DEVICE IN *ON* STATE. * THE DEVICE IS TURNED ON UPON SUCCESSFUL VERIFICATION. * * 2 = IDFC = SET DEVICE IN *IDLE* STATE. * SET THE DEVICE IN THE *IDLE* STATE UPON A SUCCESSFULL * VERIFICATION. * * 3 = OFFC = SET DEVICE IN *OFF* STATE. * SET THE DEVICE IN THE *OFF* STATE UPON A SUCCESSFULL * LABEL VERIFICATION. THE PHYSICAL VERIFICATION IS * NOT PERFORMED. * * 4 = MVFC = MEDIA VERIFICATION. * A LOGICAL TRACK IS WRITTEN AND READ SECTOR * BY SECTOR THROUGH ALL CHANNELS OF ACCESS. * IF NO ERRORS ARE ENCOUNTERED, THE TRACK FLAW * IS CLEARED AND THE TRACK CAN BE REUSED. * * 5 = UCFC = MASS STORAGE DATA PATH VERIFICATION AND SET * CHANNEL STATE = *UP*. * PERFORM A PHYSICAL AND LOGICAL VERIFICATION OF A * MASS STORAGE EQUIPMENT USING A SPECIFIED CHANNEL. * PHYSICAL AND LOGICAL VERIFICATION ARE PERFORMED IN THE * SAME FASHION AS FOR FUNCTION *DVFC* WITH THE EXCEPTION * THAT ONLY THE SPECIFIED CHANNEL IS USED. UPON * SUCCESSFUL VERIFICATION, THE CHANNEL STATE IS CHANGED * TO *UP*. * * 6 = SCFC = DISK SWEEP CYCLING. * PERFORM THE NEXT SEEK SEQUENCE IN THE SWEEP CYCLING * ALGORITHM FOR ALL PHYSICAL UNITS OF THE DEVICE WHOSE * EST ORDINAL WAS PASSED IN THE *1MV* CALL. SPACE 4,15 *** CALL. * *T 18/1MV, 6/CP, 12/EST, 6/FCN, 1/R, 17/PAR. * * CP CALLING CONTROL POINT. * EST EST ORDINAL TO PROCESS. * FCN FUNCTION CODE. * R LABEL REPAIR HAS BEEN ATTEMPTED. * PAR = TRACK NUMBER TO TEST (FUNCTION *MVFC*). * = CHANNEL NUMBER, INCLUDING CONCURRENCY FLAG (FUNCTION * *UCFC*). SPACE 4,10 ** COMMON DECKS. *CALL COMPMAC *CALL COMPCHI *CALL COMSCPS *CALL COMSDFS QUAL DSL *CALL COMSDSL QUAL * PLSS EQU /DSL/PLSS *CALL COMSEVT *CALL COMSHIO *CALL COMSLSD QUAL MMF *CALL COMSMMF QUAL * MISD EQU /MMF/MISD *CALL COMSMSP *CALL COMSMST *CALL COMSPFM *CALL COMSPIM *CALL COMSSSE *CALL COMSWEI *CALL COMSZOL *CALL COMS1DS LIST X *CALL COMS1MV LIST * TITLE MACRO DEFINITIONS. FCN SPACE 4,10 ** FCN - DEFINE FUNCTION PROCESSOR. * * FN FCN P,R,E * * FN FUNCTION CODE. * P NAME OF FUNCTION PROCESSOR. * R NAME OF REPAIR PROCESSOR (HANDLES REPAIRABLE ERRORS). * E ERRORS THAT CAN BE REPAIRED BY *R*. * * TABLE GENERATED. * *T,TN 12/ P,12/ R,12/ E PURGMAC FCN MACRO FCN,FN,P,R,E MACREF FCN ORG TFCN+3*FN LOC FN .A IFC NE,$P$$ CON P,R,E .A ELSE LOC *O .A ENDIF ENDM OVERLAY SPACE 4,10 ** OVERLAY - DEFINE THE SECONDARY OVERLAY(S). * * OVERLAY (TEXT) * ENTRY *TEXT* = TEXT OF SUBTITLE. .N SET 0 OVLB MICRO 1,, 2V OVERLAY NAME PURGMAC OVERLAY OVERLAY MACRO TEXT MACREF OVERLAY QUAL .N SET .N+1 .M MICRO .N,1, ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 .O MICRO 1,3, "OVLB"".M" QUAL ".O" TITLE ".O" - TEXT IDENT ".O",OVLA TEXT *COMMENT 1MV - TEXT COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. ORG OVLA LJM * ENTRY/EXIT UJN *-2 OVERLAY EXIT ADDRESS ENDM ENTRY SPACE 4,10 ** ENTRY - DEFINE OVERLAY ENTRY POINT. * * NAME ENTRY * NAME = NAME OF ENTRY ADDRESS. PURGMAC ENTRY MACRO ENTRY,NAME MACREF ENTRY QUAL NAME BSS 0 ENTRY QUAL * ENDM VERIFY SPACE 4,10 ** VERIFY - DEFINE HARDWARE VERIFICATION ROUTINE FOR EQUIPMENT. * * NAME ENTRY EQ * NAM = NAME OF ENTRY ADDRESS. * EQ = EQUIPMENT TYPE(S) TO VERIFY. PURGMAC VERIFY MACRO VERIFY,NAM,EQ MACREF VERIFY NAM SUBR ENTRY/EXIT IRP EQ PRC._EQ EQU NAM IRP ENDM SPACE 4,20 **** DIRECT LOCATION ASSIGNMENTS. BEGIN BSSN 16 T8 BSSN 1 SCRATCH T9 BSSN 1 SCRATCH CN BSSN 5 CM WORD BUFFER (5 LOCATIONS) CC BSSN 1 CURRENT CHANNEL ORDINAL FOR DEVICE DA BSSN 1 CHANNEL COUNT - 1 FOR DEVICE ES BSSN 5 EST ENTRY (5 LOCATIONS) EI BSSN 1 SCRATCH FC BSSN 1 FUNCTION CODE FP BSSN 1 *SEQM* FUNCTION PARAMETER HC BSSN 1 HEAD PROCESSING COUNTER MT BSSN 1 MEDIA ERROR THRESHOLD (1MV) * SCRATCH CELL (2VA) NS BSSN 1 NUMBER OF SECTORS TO PROCESS SU BSSN 1 SINGLE UNIT SECTOR LIMIT DP BSSN 5 DEVICE SEEK PARAMETERS (5 LOCATIONS) ERRNG 50-* DIRECT CELL OVERFLOW BSSN 57-* SP BSSN 1 STATISTICS BUFFER POINTER ERRNG 70-* DIRECT CELL OVERFLOW END BSSN EQ EQU IR+2 EQUIPMENT ORDINAL TO PROCESS **** SPACE 4,10 **** ASSEMBLY CONSTANTS. BUFL EQU 502 PP BUFFER SIZE BUFP EQU 5252 BUFFER WORD PATTERN FOR WRITE/READ TEST CH EQU 0 MASS STORAGE CHANNEL DVSC EQU 3 DEVICE VERIFICATION SECTOR COUNT FCOC EQU 10 OPERATION COMPLETE FUNCTION CODE FCGS EQU 12 GENERAL STATUS FUNCTION CODE FCFP EQU 16 FORMAT 895 FUNCTION CODE FPBL EQU 22 PARAMETER BLOCK LENGTH FOR 895 FORMATTING METH EQU 6 MAINTENANCE CYLINDER MEDIA ERROR THRESHOLD ** STATISTICS BUFFER DEFINITION. BEGIN BSSN 0 WCDB BSSN 1 WRITE ERROR CODE BYTE RCDB BSSN 1 READ ERROR CODE BYTE FMTB BSSN 1 895 FORMATTING ERROR COUNT BYTE WCTB BSSN 1 WRITE ERROR COUNT BYTE RCTB BSSN 1 READ ERROR COUNT BYTE VCTB BSSN 1 VERIFY ERROR COUNT BYTE FMNB BSSN 3 FAMILY/PACK NAME BYTES DNMB BSSN 1 DEVICE NUMBER BYTE EMNB BSSN 1 EQUIPMENT MNEMONIC BYTE LREB BSSN 1 LABEL READ ERROR CODE LEFB BSSN 1 LABEL ERROR FLAGS MXNB BSSN 0 MAXIMUM STATUS BUFFER BYTES END BSSN TBUFL EQU 2*10*MXNB TOTAL BUFFER LENGTH IN PP BYTES **** TITLE MAIN PROGRAM. ** 1MV - MAIN PROGRAM. ORG PPFW IMV LJM PRS PRESET PROGRAM DPP SPACE 4,10 ** DROP PP. DPP RJM RAE RELEASE ASSIGNED EQUIPMENT RJM CVI CLEAR VERIFICATION INTERLOCK MONITOR DPPM DROP PP LJM PPR EXIT TO PP RESIDENT TITLE FUNCTION PROCESSORS. DVFC SPACE 4,10 ** DVFC - DEVICE VERIFICATION AND CLEAR SUSPECT. * * ENTRY (IR+2) = EST ORDINAL TO VERIFY. * (IR+3) = UPPER 6 BITS IS FUNCTION CODE *DVFC*. DVF ENTRY ENTRY RJM DHV PERFORM DEVICE VERIFICATION RJM LBV PERFORM LABEL VERIFICATION DVF1 RJM CFE CHECK FOR ERRORS MJN DVF2 IF ERRORS LDN CSES CLEAR SUSPECT RJM SDA SET DEVICE AVAILABLE RJM IPE ISSUE REMOVABLE PACK EVENT DVF2 CMSTF L1MV CLEAR *1MV* ACTIVE FLAG DVF3 UJP DPP DROP PP ONFC SPACE 4,10 ** ONFC - DEVICE VERIFICATION AND SET DEVICE *ON*. * * ENTRY (IR+2) = EST ORDINAL TO VERIFY. * (IR+3) = UPPER 6 BITS IS FUNCTION CODE *ONFC*. ONF ENTRY ENTRY RJM DHV PERFORM DEVICE VERIFICATION RJM LBV PERFORM LABEL VERIFICATION ONF1 RJM CFE CHECK FOR ERRORS MJN ONF2 IF ERRORS LDN ONES SET DEVICE ON RJM SDA SET DEVICE AVAILABLE * LDN 0 RJM SVF CLEAR VERIFICATION FAILURE COUNT ONF2 UJN DVF3 DROP PP IDFC SPACE 4,10 ** IDFC - DEVICE VERIFICATION AND SET DEVICE *IDLE*. * * ENTRY (IR+2) = EST ORDINAL TO VERIFY. * (IR+3) = UPPER 6 BITS IS FUNCTION CODE *IDFC*. IDF ENTRY ENTRY RJM DHV PERFORM DEVICE VERIFICATION RJM LBV PERFORM LABEL VERIFICATION IDF1 RJM CFE CHECK FOR ERRORS MJN IDF2 IF ERRORS LDN IDES SET DEVICE IN *IDLE* STATE RJM SDA SET DEVICE AVAILABLE IDF2 UJN ONF2 DROP PP LVA SPACE 4,10 ** LVFC - LABEL VERIFICATION AND SET DEVICE *OFF*. * * ENTRY (IR+2) = EST ORDINAL TO VERIFY. * (IR+3) = UPPER 6 BITS IS FUNCTION CODE *OFFC*. LVA ENTRY ENTRY RJM LBV PERFORM LABEL VERIFICATION RJM CFE CHECK FOR ERRORS MJN LVA1 IF ERRORS LDN OFES SET DEVICE OFF RJM CSF ISSUE *SEQM* FUNCTION LVA1 UJN IDF2 DROP PP MVA SPACE 4,10 ** MVFC - MEDIA VERIFICATION OF A PARTICULAR TRACK. * * ENTRY (IR+2) = EST ORDINAL TO PROCESS. * (IR+3) = UPPER 6 BITS IS FUNCTION CODE *MVFC*. * (IR+4) = LOGICAL TRACK NUMBER TO VERIFY. MVA ENTRY ENTRY LDD ES+4 READ MAXIMUM TRACKS SHN 3 ADK TDGL CRD CM LDD IR+4 PRESET TRACK NUMBER TO PROCESS STD T6 LPC 3777 SBD CM PJP MVA6 IF BEYOND END OF TRT SETMS IOCH,(AD,DE,DF,ND,NR),DBUF RJM FBP FILL BUFFER WITH WRITE PATTERN * WRITE, READ AND VERIFY ENTIRE TRACK. LDD T4 SET CHANNEL FOR BUFFERED DEVICE MVA1 STM STSB LDN 0 INITIALIZE SECTOR NUMBER STD T7 LDN MXSC SET SECTOR COUNT STD NS MVA2 SBD NS PJN MVA3 IF NOT MAXIMUM SECTORS TO PROCESS RAD NS MVA3 RJM WCS WRITE CONSECUTIVE SECTORS NJN MVA5 IF WRITE ERRORS RJM RCS READ BACK SECTOR DATA NJN MVA5 IF READ ERRORS RJM VBD VERIFY BUFFER DATA NJN MVA5 IF DATA VERIFICATION ERRORS LDM SLM SBD T7 NJN MVA2 IF NOT SECTOR LIMIT RJM SNC PJP MVA1 IF ANOTHER CHANNEL TO PROCESS LDD EQ STD CM+1 LDD IR+4 TRACK NUMBER TO CLEAR FLAW ON STD CM+2 LDN CTFS STD CM+3 MONITOR STBM UJN MVA6 RETURN MVA5 ENDMS LDK /COMSDFS/HS0105 ISSUE BML MESSAGE RJM IBM MVA6 LDD EQ CLEAR TRACK NUMBER IN MST STD CM+1 LDD IR+4 STD CM+2 LDN CFTS CONDTIONALLY CLEAR TRACK NUMBER STD CM+3 MONITOR SMDM MVA7 UJP DVF2 CLEAR *1MV* ACTIVE AND DROP PP UCFC SPACE 4,10 ** UCFC - DATA PATH VERIFICATION AND SET CHANNEL STATE = *UP*. * * ENTRY (IR+2) = EST ORDINAL OF EQUIPMENT TO VERIFY. * (IR+3) = UPPER 6 BITS IS FUNCTION CODE *UCFC*. * (IR+4) = CHANNEL NUMBER, INCLUDING CONCURRENCY FLAG. UCF ENTRY ENTRY UCF1 LDM TSCH,CC STD T4 STORE CHANNEL FOR VERIFICATION PROCESSOR STM TSCH LMD IR+4 ZJN UCF3 IF CHANNEL FOUND IN TABLE AOD CC LMD DA NJN UCF1 IF ANOTHER CHANNEL UCF2 UJN MVA7 DROP PP UCF3 STD CC FORCE SINGLE CHANNEL VERIFICATION STM DCHA+4 STM HVLA DISABLE HYDRA DIAGNOSTICS ADN 1 STD DA LDD ES SHN 21-6 MJN UCF5 IF UNAVAILABLE DEVICE RJM DHV PERFORM VERIFICATION ON SPECIFIED CHANNEL RJM LBV PERFORM LABEL VERIFICATION UCF4 RJM CFE CHECK FOR ERRORS MJN UCF2 IF ERRORS UCF5 LDD T5 SET CHANNEL STATE TO *UP* STD CM+1 LDM TSCH CHANNEL STD CM+2 LDK SUCS SUBFUNCTION STD CM+3 MONITOR SCSM RJM CEQ CLEAR ERRORS FROM UNIT I/O QUEUE UCF6 UJP UCF2 CLEAR ACTIVE FLAG AND DROP PP SCF SPACE 4,10 ** SCFC - PERFORM DISK SWEEP CYCLING. * * ENTRY (IR+2) = EST ORDINAL OF EQUIPMENT ON WHICH TO PERFORM * SWEEP CYCLING SEEK SEQUENCE. * (IR+3) = UPPER 6 BITS IS FUNCTION CODE *SCFC*. SCF ENTRY ENTRY EXECUTE 0SC,OVLA EXECUTE *0SC* UJN UCF6 CLEAR ACTIVE FLAG AND DROP PP TITLE SUBROUTINES. AEC SPACE 4,15 ** AEC - ANALYZE ERROR CODE. * * ENTRY (RDCT) = 6/, 6/ EC. * EC = ERROR CODE. * (MT) = MEDIA ERROR THRESHOLD. * * EXIT (A) = 0, IF *EC* IS *DRVE* OR *CRSE*. * = *PARE*, IF *EC*=*PARE* AND *METH* NOT EXCEEDED. * = 1/1, 1/D, 6/, 1/C, 3/, 6/ EC. * D = 1, IF *EC*=*DDFE*. * C = 1, IF CHANNEL OR CONTROLLER ERROR. * (MT) DECREMENTED IF MEDIA ERROR ENCOUNTERED. * * USES MT. AEC1 LDD MT MEDIA ERROR THRESHOLD ZJN AEC3 IF TOO MANY MEDIA ERRORS SOD MT LDK PARE+1000*IDC.ME UJN AECX RETURN AEC2 LMC SHNI&77&DDFE STM AECA LDC AECB BIT MAP OF ERRORS INVOLVING CHAN/CONT SHN 0-** POSITION BIT CORRESPONDING TO ERROR AECA EQU *-1 LPN 1 LMK IDC.ME SHN 9D LMD T0 AEC3 LMC 400000+PARE+1000*IDC.ME AEC SUBR ENTRY/EXIT LDM RDCT LPN 77 LMN DRVE ZJN AECX IF DRIVE RESERVE ERROR LMN CRSE&DRVE ZJN AECX IF CONTROLLER RESERVE ERROR LMN PARE&CRSE ZJN AEC1 IF MEDIA ERROR STD T0 LMN DDFE&PARE NJN AEC2 IF NOT DIAGNOSTIC FAILURE LDC 600000+1000*IDC.DF+DDFE UJN AECX RETURN * GENERATE THE SET OF ERROR CODES OF CHANNEL/CONTROLLER ERRORS. .1 SET 1 .2 SET 0 .A ECHO ,ES=("DREC") .B IFEQ IDC.ES,1 ERRNG 17D-.1 ERROR CODE OVER 17 IS CHAN/CONT ERROR CODE .1 DECMIC .1 .2 SET .2+1S".1" .B ENDIF .1 SET .1+1 .A ENDD AECB EQU .2 CDA SPACE 4,10 ** CDA - CALCULATE PHYSICAL DISK ADDRESS. * * ENTRY (T4 - T7) = MASS STORAGE DRIVER PARAMETERS. * (ES - ES+4) = *EQDE* WORD OF EST ENTRY. * * EXIT (DP - DP+4) = SEEK PARAMETERS. * * USES T1, T2, T3, T8, T9, CM - CM+4, DP - DP+4. * * MACROS MONITOR. CDA9 LDD MA STORE LOGICAL DISK ADDRESS CWD T4 MONITOR LDAM CONVERT TO PHYSICAL ADDRESS LDD MA ADN 1 RETRIEVE SEEK PARAMETERS CRD DP CDA10 AOD DP FLAG DISK ADDRESS PRESENT CDA SUBR ENTRY/EXIT LDD DP NJN CDAX IF ADDRESS ALREADY OBTAINED STD CM+1 STD T8 CLEAR PHYSICAL SECTOR ACCUMULATOR CDAA LDD T6 * UJN CDA9 (NON-BUFFERED DEVICE) LPC 3777 STD T3 ITERATION COUNT FOR CONVERSION * UNIT INDEX = SECTOR NUMBER / SINGLE UNIT SECTOR LIMIT. LDD T7 LOGICAL SECTOR NUMBER STD T9 CDA1 STD T2 AOD DP ADVANCE UNIT INDEX LDD T2 SBD SU PJN CDA1 IF DIVISION INCOMPLETE LDD ES+4 SHN 3 ADN DDLL FETCH UNIT DESCRIPTOR WORD FROM MST CRD CM SOD DP SHN -1 LMC -0 CALCULATE BYTE ADDRESS ADN CM+4 STD T1 LDD DP LPN 1 SHN 21-0 DETERMINE POSITION WITHIN BYTE LMI T1 PJN CDA2 IF UNIT POSITIONED LOW SHN -6 CDA2 LPN 77 EXTRACT UNIT NUMBER STD DP+1 LDD CM MERGE WITH EQUIPMENT (CONTROLLER) NUMBER LPC 700 RAD DP+1 * CONVERT LOGICAL DISK ADDRESS TO RELATIVE SECTOR COUNT. CDA3 SOD T3 MJN CDA5 IF CONVERSION COMPLETE LDM LSLT RAD T9 ADVANCE LOGICAL SECTOR COUNT SHN -14 RAD T8 UJN CDA3 LOOP ON CONVERSION * DIVIDE THE RELATIVE SECTOR COUNT BY THE NUMBER OF LOGICAL * SECTORS PER CYLINDER. CDA4 AOD DP+2 ADVANCE RELATIVE CYLINDER NUMBER CDA5 LDM LSCY STD T0 LDD T9 SBM LSCY+1 DIVIDE BY ITERATIVE SUBTRACTION STD T9 PJN CDA6 IF NO BORROW AOD T9 AOD T0 CDA6 LDD T8 SBD T0 STD T8 PJN CDA4 IF DIVISION NOT COMPLETE LDM LSCY+1 RAD T9 SHN -14 ADD T0 RAD T8 LDD ES+4 SHN 3 ADN SCYL FETCH STARTING CYLINDER FROM MST CRD CM LDD CM+2 CONVERT RELATIVE CYLINDER TO ABSOLUTE RAD DP+2 UJN CDA8 COMPLETE ADDRESS CONVERSION * DIVIDE THE REMAINDER OF THE ABOVE CALCULATION BY THE NUMBER * OF LOGICAL SECTORS PER PHYSICAL TRACK. CDA7 AOD DP+3 ADVANCE PHYSICAL TRACK NUMBER CDA8 LDN 0 SBM LSPT DIVIDE BY ITERATIVE SUBTRACTION RAD T9 PJN CDA7 IF NO UNDERFLOW ADM LSPT CDAB SHN 0 SET PHYSICAL SECTOR NUMBER STD DP+4 LJM CDA10 RETURN CEQ SPACE 4,10 ** CEQ - CLEAR ERRORS FROM UNIT I/O QUEUE. * * ENTRY (EQ) = EST ORDINAL. * (ES - ES+4) = EST ENTRY. * * USES CM - CM+4. * * CALLS SUT. * * MACROS DELAY, MONITOR. CEQ1 DELAY LDD CN *PUT* ORDINAL CEQ2 STD CM+2 LDN SUIS *BIOM* SUBFUNCTION STD CM+1 MONITOR BIOM INTERLOCK *PUT* ENTRY LDD CM+1 NJN CEQ1 IF CURRENTLY UNAVAILABLE LDD CN STD CM+2 LDN CETS CLEAR ERROR STATUS FROM I/O QUEUE STD CM+1 MONITOR BIOM * LDN 0 SCAN UNIT TABLE CEQ3 RJM SUT NJN CEQ2 IF SPECIFIED DEVICE CEQ SUBR ENTRY/EXIT LDD ES+3 LMC 2RDV ZJN CEQX IF AN 819 DISK LMK 2RDW&2RDV ZJN CEQX IF AN 819 DISK LCN 0 UJN CEQ3 CLEAR ERRORS CFE SPACE 4,25 ** CFE - CHECK FOR ERRORS. * * ENTRY (DVC1) = CHANNEL 1 DEVICE STATISTICS. * (DVC2) = CHANNEL 2 DEVICE STATISTICS. * * EXIT (A) .LT. 0 IF ERRORS FOUND. * *1DS* CALLED TO DOWN CHANNEL IF ERRORS ON ONE OF TWO * CHANNELS OR PATH VERIFICATION FAILURE. * DEVICE DOWNED IF VERIFY ERRORS. * DEVICE TURNED OFF IF OTHER ERRORS. * * USES CC, SP, T2, T3, CM - CM+4, CN - CN+4. * * CALLS CSF, DCH, IBM, SVF, VSF. * * NOTE - *CFE* USES CM - CM+4 AND CN - CN+4 TO ACCUMULATE ANY * ERRORS DETECTED ON THE FIRST AND SECOND CHANNELS, * RESPECTIVELY. THE FIVE BYTES ARE USED AS FOLLOWS - * * BYTE 0 = CHANNEL NUMBER. * BYTE 1 = VERIFICATION ERROR COUNT. * BYTE 2 = TOTAL ERROR COUNT. * BYTE 3 = UNREPAIRABLE ERROR COUNT. * BYTE 4 = CHANNEL/CONTROLLER ERROR COUNT. CFE SUBR ENTRY/EXIT LDN ZERL CLEAR CHANNEL ERROR COUNTS CRD CM CRD CN LDN CM SET FIRST CHANNEL ACCUMULATOR ADDRESS STD T2 LDC DVC1 BUFFER START ADDRESS STD SP LDN 0 STD CC CFE1 LDM TSCH,CC SET CHANNEL NUMBER STI T2 LDN 10 SET UNIT COUNT STD T3 CFE2 LDM VCTB,SP ACCUMULATE VERIFY ERROR COUNTS ZJN CFE3 IF NO VERIFY ERROR AOM 1,T2 COUNT VERIFY ERROR THIS UNIT CFE3 LDM LEFB,SP GET REPAIRABLE LABEL ERRORS LPC ** CFEA EQU *-1 (SET BY PRESET) STD T0 LMM LEFB,SP ACCUMULATE READ/WRITE/LABEL ERROR COUNTS ZJN CFE3.1 IF NO UNREPAIRABLE LABEL ERRORS LDN 1 CFE3.1 ADM RCTB,SP ADM WCTB,SP ADM FMTB,SP ZJN CFE3.3 IF NO UNREPAIRABLE ERRORS SHN -9D ZJN CFE3.2 IF NO CHANNEL/CONTROLLER ERRORS AOM 4,T2 COUNT CHANNEL/CONTROLLER ERRORS CFE3.2 AOM 3,T2 COUNT UNREPAIRABLE ERRORS CFE3.3 ADD T0 ZJN CFE4 IF NO ERRORS AOM 2,T2 COUNT ERRORS CFE4 LDN MXNB RAD SP SOD T3 NJP CFE2 IF NOT THROUGH WITH ALL UNITS LDN CN SET SECOND CHANNEL ACCUMULATOR ADDRESS STD T2 AOD CC LMD DA NJP CFE1 IF ANOTHER CHANNEL SOD CC ZJN CFE8 IF ONLY ONE CHANNEL LDD CN+1 ADD CN+2 NJN CFE5 IF ERRORS ON SECOND CHANNEL LDD CM+1 ADD CM+2 ZJN CFE7 IF NO ERROR ON PRIMARY CHANNEL * ERROR EXISTS ON PRIMARY CHANNEL BUT NOT ON SECONDARY CHANNEL. LDN CM UJN CFE6 DOWN CHANNEL CFE5 LDD CM+1 ADD CM+2 NJN CFE8 IF ERRORS ON BOTH CHANNELS LDN CN CFE6 RJM DCH DOWN CHANNEL CFE7 RJM VSF VERIFY SYSTEM FILE UJP CFEX RETURN CFE8 LDD CM+1 ADD CN+1 NJP CFE10 IF DATA VERIFICATION ERRORS LDD CM+2 ADD CN+2 ZJN CFE7 IF NO READ/WRITE/LABEL ERRORS LDD CM+3 ADD CN+3 NJN CFE9 IF UNREPAIRABLE ERRORS LJM ** PROCESS REPAIRABLE ERROR CFEB EQU *-1 (SET BY PRESET) CFE9 LDM DCHA+4 ZJN CFE11 IF PATH VERIFICATION LDD ES+4 SHN 3 ADN CTLL CRD CN AOD CN INCREMENT VERIFICATION FAILURE COUNTER RJM SVF LDD ES+4 SHN 3 ADN THLL CRD CM LDD CN SBD CM MJP CFE7 IF COUNT BELOW THRESHOLD - CLEAR ERROR LDD ES SHN 21-1 MJN CFE13 IF DEVICE OFF OR DOWN LDN OFES RJM CSF ISSUE *SEQM* LDN /COMSDFS/HS0030 ISSUE BML MESSAGE RJM IBM UJN CFE13 RETURN CFE10 LDM DCHA+4 NJN CFE12 IF NOT PATH VERIFICATION CFE11 LDN CM RJM DCH DOWN CHANNEL LDC 4000+UCFC RJM IBM ISSUE ERROR LOG MESSAGE UJN CFE14 RETURN * DOWN DEVICE WHEN VERIFY ERRORS ARE PRESENT ON ALL CHANNELS. CFE12 LDD ES CHECK DEVICE STATE LPN 3 LMN 3 ZJN CFE13 IF DEVICE DOWN LDN DWES RETURN DOWN STATUS RJM CSF ISSUE *SEQM* LDN /COMSDFS/HS0034 ISSUE BML MESSAGE RJM IBM CFE13 LCN 0 CFE14 LJM CFEX RETURN CSF SPACE 4,15 ** CSF - CALL *SEQM* SUBFUNCTION. * * ENTRY (A) = *SEQM* SUBFUNCTION. * (EQ) = EST ORDINAL. * (ES - ES+4) = EST ENTRY. * * USES T3, CM - CM+4. * * CALLS RAE. * * MACROS MONITOR, SFA. CSF SUBR ENTRY/EXIT STD T3 LDD ES CHECK DEVICE STATE LPN 3 LMN 3 NJN CSF1 IF NOT *DOWN* RJM RAE RELEASE ASSIGNED EQUIPMENT CSF1 LDD T3 STD CM+2 SET SUBFUNCTION FOR *SEQM* CALL LDD EQ STD CM+1 LDN 0 STD CM+4 MONITOR SEQM SFA EST,EQ REREAD EST ENTRY ADK EQDE CRD ES UJN CSFX RETURN CVI SPACE 4,10 ** CVI - CLEAR VERIFICATION INTERLOCK. * * ENTRY (CVIA) = EST ORDINAL OF DEVICE WITH INTERLOCK SET. * * USES CM - CM+4. * * MACROS MONITOR. CVI SUBR ENTRY/EXIT LDN ZERL CRD CM LDC ** (EST ORDINAL OF DEVICE WITH INTERLOCK SET) CVIA EQU *-1 ZJN CVIX IF NO INTERLOCK SET STD CM+1 SET EST ORDINAL LDN CVIS CLEAR DEVICE VERIFICATION INTERLOCK STD CM+3 MONITOR STBM * LDN 0 STM CVIA CLEAR EST ORDINAL UJN CVIX RETURN DCH SPACE 4,10 ** DCH - DOWN CHANNEL. * * ENTRY (A) = ADDRESS OF CHANNEL SUMMARY. * ((A)) = CHANNEL NUMBER. * ((A)+4) = CHANNEL/CONTROLLER ERROR COUNT. * (EQ) = EST ORDINAL OF EQUIPMENT BEING VERIFIED. * * USES CM - CM+4. * * MACROS EXECUTE, MONITOR. DCH SUBR ENTRY/EXIT STD CM+1 LDI CM+1 STM DCHA+3 SAVE CHANNEL AND CONCURRENCY FLAG LDM 4,CM+1 NJN DCH1 IF CHANNEL/CONTROLLER ERRORS DETECTED LDD EQ SET EST ORDINAL IN REQUEST RAM DCHA+4 DCH1 LDD MA CWM DCHA,ON LDN 0 STD CM+1 EXECUTE 1DS,= MONITOR RPPM CALL *1DS* TO DOWN CHANNEL UJN DCHX RETURN DCHA VFD 18/3L1DS,6/,12/DWNF,12/0,12/4000 DHV SPACE 4,10 ** DHV - PERFORM DEVICE VERIFICATION. * * ENTRY (CC) = CHANNEL COUNT. * (T5) = EST ORDINAL. * (ES - ES+4) = WORD *EQDE* OF EST ENTRY. * * EXIT (A) .NE. 0 IF PREMATURE VERIFICATION TERMINATION. * ERRORS ENCOUNTERED ARE REFLECTED IN STATISTICS BUFFER. * * USES T8. * * CALLS FBP, SVI, DEVICE DEPENDENT PROCESSORS. DHV1 LDN 0 SET RETURN STATUS DHV SUBR ENTRY/EXIT RJM SVI SET VERIFICATION INTERLOCK RJM FBP FILL BUFFER WITH WRITE PATTERN LDM DVPC SETUP PROCESSOR ZJN DHVX IF DEVICE NOT SUPPORTED STD T8 LDC LDNI+METH ALLOW MAINTENANCE CYLINDER MEDIA ERRORS ERRPL METH-100 CODE DEPENDS ON VALUE STM RCSA STM WCSA RJM 0,T8 PERFORM DEVICE DEPENDENT PROCESSING UJN DHVX RETURN FBP SPACE 4,10 ** FBP - FILL BUFFER WITH PATTERN TO WRITE. * * EXIT (A) = 0. * * USES T1. FBP SUBR ENTRY/EXIT LDC BUFL STD T1 FBP1 LDC BUFP FILL BUFFER WITH PATTERN STM BFMS-1,T1 SOD T1 FILL BUFFER WITH PATTERN NJN FBP1 IF NOT END OF BUFFER * LDN 0 UJN FBPX RETURN FDC SPACE 4,10 ** FDC - FORMAT 895 DEVICE MAINTENANCE TRACK. * * ENTRY (T4) = CHANNEL NUMBER. * (EQ) = EST ORDINAL. * (DVMT) = MAINTENANCE TRACK NUMBER. * (ES - ES+4) = EST ENTRY. * * EXIT (A) .NE. 0 IF ERROR. * (T4) = CHANNEL NUMBER. * (T5) = EST ORDINAL. * (T6) = MAINTENANCE TRACK NUMBER. * * CALLS /2VA/FDC. * * MACROS EXECUTE. FDC SUBR ENTRY/EXIT LDD T4 SAVE CHANNEL NUMBER STM FDCA EXECUTE 2VA LDC * (CHANNEL NUMBER) FDCA EQU *-1 STD T4 RJM /2VA/FMT FORMAT 895 MAINTENANCE TRACK UJN FDCX RETURN HVE SPACE 4,15 ** HVE - HARDWARE VERIFICATION FOR EXTENDED MEMORY DEVICES. * * ENTRY (CC) = CHANNEL COUNT. * (T5) = EST ORDINAL. * * EXIT ERRORS NOTED IN STATISTICS BUFFER. * * USES T6, T7. * * CALLS RCS, SNC, VBD, WCS. * * MACROS SETMS, VERIFY. HVE VERIFY (DE,DP) ENTRY/EXIT SETMS IOCH,(AD,AR,DE,DF,ND),DBUF LDM DVMT SETUP MAINTENANCE TRACK STD T6 ZJN HVEX IF UNDEFINED HVE1 LDN 1 STD NS SET NUMBER OF SECTORS TO PROCESS HVEA LDN 0 * LDN 20 IF EM TRACK SIZE IS MORE THAN 2020 WORDS STD T7 HVE2 RJM WCS RJM RCS RJM VBD VERIFY READ BUFFERS LDM SLM SBD T7 NJN HVE2 IF MORE SECTORS TO PROCESS RJM SNC SELECT NEXT CHANNEL PJN HVE1 IF SECOND CHANNEL PRESENT UJP HVEX RETURN HVL SPACE 4,15 ** HVL - HARDWARE VERIFICATION FOR RMS DEVICES. * * ENTRY (CC) = CHANNEL COUNT. * (T4) = FIRST CHANNEL. * (T5) = EST ORDINAL. * (ES - ES+4) = WORD *EQDE* OF EST ENTRY. * * EXIT ERRORS NOTED IN STATISTICS BUFFER. * * USES HC, NS, SP, T6, T7. * * CALLS FDC, IHD, RCS, SNC, VBD, WCS. * * MACROS SETMS, VERIFY. HVL VERIFY (DB,DC,DD,DF,DG,DH,DI,DJ,DK,DL,DM,DN,DQ,DR,DX,DY,DZ,EA, ,EB,EC,ED,EE,EF,EM,EN,EG,EH,EI,EJ,EK,EL,EO,EP,ES,EU,EV,EW) SETMS IOCH,(AD,AR,DE,DF,ND),DBUF HVLA UJN HVL2 INITIATE HYDRA DIAGNOSTICS * PSN (PATH VERIFICATION) HVL1 LDC 0 (HYDRA DIAGNOSTICS DISABLED) * LDC 2*DDFE+1 (HYDRA DIAGNOSTIC FAILURE DETECTED) HVLB EQU *-1 ZJN HVL3 IF NO DIAGNOSTICS HVL2 RJM IHD * UJN HVL3 (IF NOT HYDRA DEVICE) HVLE EQU HVL2 HVL3 LDM DVMT SET MAINTENANCE TRACK STD T6 ZJN HVLX IF UNDEFINED HVLF RJM FDC FORMAT MAINTENANCE TRACK, IF 895 * UJN HVL3.1 (IF NOT 895 DEVICE) NJP HVL5 IF FORMATTING ERROR HVL3.1 LDN 0 STD HC STM HVLD STM HVLG INITIALIZE SECTOR NUMBER SBM DVSB PHYSICAL SECTORS/BUFFER-1 STM HVLH INITIALIZE MASK LDD T4 STORE CHANNEL IN CASE OF BUFFERED DEVICE STM STSB LDN DVSC SET NUMBER OF SECTORS TO PROCESS STD NS LDM DVST RESET FOR OTHER CHANNEL STM HVLC HVL4 LDC ** SECTOR NUMBER HVLG EQU *-1 ADM DVSB ROUND UP TO BUFFER MULTIPLE LPC ** HVLH EQU *-1 STD T7 SBM HVLC PJN HVL7 IF ROUNDING EXCEEDS SECTOR LIMIT RJM WCS WRITE CONSECUTIVE SECTORS HVL5 NJN HVL6 IF WRITE ERRORS RJM RCS READ BACK SECTOR DATA NJN HVL6 IF READ ERRORS RJM VBD VERIFY READ BUFFERS HVL6 NJN HVL10 IF DATA VERIFICATION ERRORS HVL7 LDM DVSI SBN DVSC ADVANCE SECTOR TO NEXT PHYSICAL TRACK RAM HVLG LDC 0 SECTORS + GAP SECTORS PER LOGICAL TRACK HVLC EQU *-1 SBM HVLG SBN 1 PJN HVL8 IF STILL WITHIN SAME LOGICAL TRACK LMC -0 ADC 0 OFFSET TO NEXT UNIT HVLD EQU *-1 SBN 1 STM HVLG AOD T6 INCREMENT TO NEXT LOGICAL TRACK HVL8 AOD HC SBM DVHL ZJN HVL11 IF ALL HEADS PROCESSED HVL9 LJM HVL4 PROCESS NEXT HEAD HVL10 NJN HVL12 IF ERROR HVL11 STD HC LDN MXNB INCREMENT STATISTICS POINTER TO NEXT UNIT RAD SP LDM DVMT RESET LOGICAL TRACK POINTER STD T6 LDD SU CHANGE FOR NEXT UNIT RAM HVLC LDD SU CHANGE SECTOR OFFSET TO NEXT UNIT RAM HVLD STD T7 SET NEXT SECTOR LMM SLM NJN HVL9 IF ANOTHER UNIT HVL12 RJM SNC SELECT NEXT CHANNEL PJP HVL1 IF SECOND CHANNEL PRESENT LJM HVLX RETURN IBM SPACE 4,15 ** IBM - ISSUE BML MESSAGE. * * ENTRY (A) = SYMPTOM CODE OF BML MESSAGE. * (CH) = CHANNEL NUMBER BEING DOWNED. * (EQ) = EST ORDINAL. * * EXIT (A) = 0. * * USES CN. * * CALLS CDA, /2VA/ELM. * * MACROS EXECUTE. IBM SUBR DVF2 ENTRY/EXIT STD CN RJM CDA GET PHYSICAL DISK ADDRESS EXECUTE 2VA LDD EQ RESET EQUIPMENT STD T5 RJM /2VA/ELM ISSUE BML MESSAGE UJN IBMX RETURN IHD SPACE 4,10 ** IHD - INITIATE HYDRA DIAGNOSTICS. * * ENTRY (EQ) = EST ORDINAL. * (ES - ES+4) = *EQDE* WORD OF EST ENTRY. * * USES CM - CM+4. * * CALLS SUT. * * MACROS MONITOR. IHD2 SHN PUTLS CHANGE ORDINAL TO INDEX ADD CN+4 STD CM+4 SHN -14 FORM *PUT* ENTRY ADDRESS ADD CN+3 STD CM+3 LDN 1 PARAMETER WORD COUNT STD CM+1 LDN 0 CLEAR UNUSED BYTE STD CM+2 LDD MA STORE MESSAGE BUFFER PARAMETERS CWM IHDA,CM+1 MONITOR UTEM * LDN 0 SCAN UNIT TABLE IHD3 RJM SUT NJN IHD2 IF SPECIFIED DEVICE IHD SUBR ENTRY/EXIT IHD1 LCN 0 UJN IHD3 SEARCH FOR *PUT* ENTRY IHDA VFD 6/PILL,6/1,6/DVDF,42/1 IPE SPACE 4,10 ** IPE - ISSUE REMOVABLE PACK EVENT. * * ENTRY (ES - ES+4) = EST ENTRY. * * USES CM - CM+4. * * MACROS MONITOR. IPE SUBR ENTRY/EXIT LDD ES+4 READ PACKNAME/DEVICE NUMBER SHN 3 ADK PFGL CRD CM LDD CM+3 LPN 77 NJN IPEX IF NOT AUXILIARY DEVICE LDD CM+3 BUILD PACKNAME HASH ADD CM+2 ADD CM+1 ADD CM STD CM+4 LDN 0 SET EVENT STD CM+1 LDN VSNE/10000 STD CM+3 MONITOR EATM UJN IPEX RETURN LBV SPACE 4,10 ** LBV - LABEL VERIFICATION. * * EXIT STATISTICS BUFFER UPDATED WITH LABEL ERROR STATUS. * * USES CC, NS, SP, T7, CM - CM+4. * * CALLS SNC, VLS. LBV SUBR ENTRY/EXIT LDD ES CHECK UNAVAILABLE DEVICE SHN 21-6 MJN LBVX IF NOT TO PERFORM LABEL CHECK SHN 21-5-21+6 MJN LBVX IF BUFFERED DEVICE LDD ES+4 CHECK FOR INITIALIZE PENDING SHN 3 ADN STLL CRD CM LDD CM LPC MLIAL+MLIHD+MLIFD NJN LBVX IF INITIALIZE PENDING ADK /MMF/LSLT STD T7 STD NS STD CC LDK DVC1 SET POINTER TO FIRST CHANNEL BUFFER STD SP * VALIDATE LABEL SECTORS ON ALL UNITS. LBV1 RJM VLS CHECK CONTENTS OF LABEL AOD NS INCREMENT RELATIVE UNIT NUMBER LDN MXNB INCREMENT STATISTICS POINTER RAD SP LDD SU INCREMENT TO NEXT UNIT RAD T7 SBM SLM MJN LBV1 IF NOT FINISHED WITH LOGICAL TRACK LDN /MMF/LSLT STD T7 RESET STARTING SECTOR NUMBER ADK 0-/MMF/LSLT STD NS RESET RELATIVE UNIT NUMBER RJM SNC SET NEXT CHANNEL PJN LBV1 IF ALL CHANNELS NOT PROCESSED UJP LBVX RETURN RCS SPACE 4,25 ** RCS - READ CONSECUTIVE SECTORS. * * *RCS* READS (NS) CONSECUTIVE SECTORS IN CONSECUTIVE BUFFERS * AT (DBUF). IF A READ ERROR OCCURS, ((SP)+RCTB) IS INCREMENTED * AND READ ERROR CODE SAVED IN ((SP)+RCDB). * * ENTRY (NS) = NUMBER OF SECTORS TO READ. * (SP) = STATISTICS GATHERING POINTER. * (T4 - T7) = MASS STORAGE DRIVER PARAMETERS. * * EXIT (A) = READ ERROR COUNT. * * USES MT, T7, T8, T9. * * CALLS AEC, RDS. * * MACROS SETMS. RCS5 SETMS POSITION FORCE SEEK ON NEXT I/O REQUEST * LDN 0 RCS SUBR ENTRY/EXIT LDN 0 SET MEDIA ERROR THRESHOLD * LDN METH (I/O ON MAINTENANCE CYLINDER) RCSA EQU *-1 STD MT LDC DBUF SET BUFFER POINTER STD T8 LDN 0 SET SECTOR NUMBER STD T9 RCS1 SBD NS ZJN RCS5 IF ALL SECTORS READ LDM DVBE,T9 NJN RCS3 IF SECTOR HAD WRITE ERRORS LDD T8 SET UP BUFFER ADDRESS FOR READ RJM RDS PJN RCS3 IF NO ERROR RJM AEC ANALYZE ERROR CODE NJN RCS2 IF NO CONTROLLER RESERVE LDN 1 SET ERROR INDICATION UJN RCSX RETURN RCS2 STM DVBE,T9 STM RCDB,SP SAVE LATEST READ ERROR CODE PJN RCS3 IF NOT TOO MANY MEDIA OR OTHER ERRORS AOM RCTB,SP SET READ ERROR COUNT UJN RCSX RETURN RCS3 AOD T7 ADVANCE TO NEXT SECTOR LDC BUFL INCREMENT TO NEXT READ BUFFER RAD T8 AOD T9 INCREMENT SECTOR NUMBER UJP RCS1 PROCESS NEXT SECTOR RAE SPACE 4,10 ** RAE - RELEASE ASSIGNED EQUIPMENT. * * USES CM - CM+4. * * MACROS MONITOR. RAE SUBR ENTRY/EXIT LDC 0 RAEA EQU *-1 ZJN RAEX IF EQUIPMENT NOT ASSIGNED STD CM+1 MONITOR DEQM RELEASE EQUIPMENT ASSIGNMENT * LDN 0 STM RAEA UJN RAEX RETURN RLT SPACE 4,10 ** RLT - REPAIR LABEL TRACK. * * EXIT TO *CFE9* IF DEVICE NOT OWNED BY THIS MAINFRAME. * * USES CM - CM+4, CN - CN+4, IR+3. * * CALLS *1CK*, *1RU*. * * MACROS EXECUTE. RLT LDD ES SHN 21-4 MJN RLT1 IF ISHARED EXECUTE 1CK REWRITE LABELS * LJM IMV RERUN *1MV* RLT1 LDD ES+4 SHN 3 ADK SDGL CRD CM ADK DULL-SDGL CRD CN LDD CN+2 LPN 17 ADN 1 SHN 1 LMD CM+4 LPN 76 ZJN RLT2 IF INTERLOCKED BY THIS MAINFRAME LJM CFE9 PROCESS THE ERRORS RLT2 STD IR+3 SET *1RU* FUNCTION CODE EXECUTE 1RU REWRITE LABELS * LJM IMV RERUN *1MV* SDA SPACE 4,10 ** SDA - SET DEVICE AVAILABLE. * * ENTRY (A) = *SEQM* SUBFUNCTION. * (EQ) = EST ORDINAL. * * EXIT (A) = 0. * * USES T3, CM - CM+4. * * CALLS CEQ, CSF. * * MACROS MONITOR. SDA SUBR ENTRY/EXIT STD T3 RJM CEQ CLEAR ERRORS FROM UNIT I/O QUEUE LDD T3 RJM CSF ISSUE *SEQM* FUNCTION LDD EQ STD CM+1 LDN STDE STD CM+2 LDN CERS CLEAR *DE* DEVICE ERROR STATUS STD CM+3 MONITOR SMDM LDN ZERL CLEAR *CMS* TIMERS CRD CM ADN RDSL-ZERL CWD CM ERRNZ WISE CODE DEPENDS ON VALUE LDD EQ STD CM+3 MONITOR EATM ISSUE EVENT FOR THIS DEVICE * LDN 0 UJN SDAX RETURN SNC SPACE 4,15 ** SNC - SELECT NEXT CHANNEL. * * ENTRY (CC) = CURRENT CHANNEL TABLE ORDINAL. * * EXIT (A) .EQ. CHANNEL NUMBER. * .LT. 0 IF NO MORE CHANNELS. * (T4) CHANNEL SELECTED. * (CC) INCREMENTED. * (SP) = SECOND CHANNEL STATISTICS POINTER. * CURRENT CHANNEL RELEASED. * * USES CC, SP, T4. * * MACROS ENDMS. SNC1 LCN 0 SNC SUBR ENTRY/EXIT ENDMS AOD CC ADVANCE CHANNEL TABLE INDEX LMD DA ZJN SNC1 IF NO MORE CHANNELS LDC DVC2 STD SP LDM TSCH,CC SET CHANNEL AND CONCURRENCY FLAG STD T4 UJN SNCX RETURN TSCH CON 0 PRIMARY CHANNEL (FIRST IF SINGLE ACCESS) CON 0 SECONDARY CHANNEL SUT SPACE 4,15 ** SUT - SCAN (BUFFERED I/O) UNIT TABLE. * * ENTRY (A) .LT. 0 IF INITIAL CALL. * (CN) = CURRENT *PUT* ORDINAL IF NOT INITIAL CALL. * (EQ) = EST ORDINAL. * (ES - ES+4) = EST ENTRY. * (CN+3 - CN+4) = FWA OF *PUT* IF NOT INITIAL CALL. * * EXIT (A) = 0 IF END OF SCAN. * = (CN) = *PUT* ORDINAL. * (CN+3 - CN+4) = FWA OF PHYSICAL UNIT TABLE. * * USES CM - CM+4, CN - CN+4. SUT1 SOD CN ZJN SUTX IF END OF UNIT TABLE SUT2 LDD CN+3 SHN 14-PUTLS ADD CN FORM *PUT* ADDRESS SHN PUTLS ADD CN+4 ADK UNCT READ UNIT CONTROL WORD CRD CM LDD CM+1 CHECK EST ORDINAL LMD EQ NJN SUT1 IF NOT REQUIRED DEVICE LDD CN SUT SUBR ENTRY/EXIT PJN SUT1 IF NOT INITIAL CALL LDD ES+4 SHN 3 ADN DILL FETCH DEVICE STATUS FROM MST CRD CM LDD CM+2 ZJN SUTX IF NOT BUFFERED DEVICE LDC BIOL CRD CN LDD CN+1 GET *PUT* DESCRIPTOR SHN 14 LMD CN+2 ADN PUTP CRD CN LDD CN+3 LPN 77 CLEAR FLAGS STD CN+3 UJP SUT2 BEGIN UNIT TABLE SCAN SVF SPACE 4,10 ** SVF - SET VERIFICATION FAILURE COUNT. * * ENTRY (A) = VERIFICATION FAILURE COUNT TO SET. * * EXIT FAILURE COUNT IN *CTLL* MST WORD UPDATED. * * USES CM - CM+4. * * MACROS MONITOR. SVF SUBR ENTRY/EXIT STM SVFA+4 LDN 0 STD CM+2 LDD ES+4 BASE TABLE ADDRESS SHN 3 STD CM+4 SHN -14 STD CM+3 LDN 1 STD CM+1 LDD MA UPDATE FAILURE COUNT CWM SVFA,ON MONITOR UTEM UJN SVFX RETURN SVFA VFD 1/0,5/CTLL,6/12D,6/48D,42/0 SVI SPACE 4,10 ** SVI - SET VERIFICATION INTERLOCK. * * ENTRY (T5) = EST ORDINAL. * (ES - ES+4) = WORD *EQDE* OF EST ENTRY. * * EXIT (CVIA) = EST ORDINAL OF DEVICE WITH INTERLOCK SET. * * USES CM - CM+4. * * MACROS DELAY, MONITOR. SVI SUBR ENTRY/EXIT LDD ES SHN 21-11 PJN SVIX IF NOT SHARED DEVICE SHN 21-4-21+11 MJN SVIX IF ISD DEVICE SVI1 LDN ZERL CRD CM LDD T5 SET EST ORDINAL STD CM+1 STM CVIA LDN SVIS SET DEVICE VERIFICATION INTERLOCK STD CM+3 MONITOR STBM LDD CM+1 ZJN SVIX IF INTERLOCK SET SUCCESSFULLY DELAY 20B DELAY 2 MILLISECONDS UJN SVI1 RETRY VBD SPACE 4,15 ** VBD - VERIFY BUFFER DATA. * * FOR EACH BUFFER THAT DOES NOT VERIFY, ((SP)+VCTB) IS * INCREMENTED. * * ENTRY (NS) = NUMBER OF BUFFERS TO PROCESS. * (SP) = STATISTICS GATHERING POINTER. * (T7) = LAST SECTOR TO CHECK + 1. * * EXIT (A) = DATA ERROR COUNT. * * USES CN, T1, T2, T3. VBD SUBR ENTRY/EXIT LDC DBUF SET BUFFER POINTER STD T3 LDN 0 SET SECTOR NUMBER STD T2 VBD1 SBD NS ZJN VBDX IF ALL BUFFERS PROCESSED LDD T3 STD T1 SET BUFFER ADDRESS TO CHECK ADC BUFL STD T3 LDM DVBE,T2 NJN VBD3 IF ERROR OCCURRED LDD T7 COMPUTE SECTOR NUMBER SBD NS ADD T2 STD T0 ADN 1 LMI T1 NJN VBD4 IF MISMATCH ON SECTOR AOD T1 LDI T1 LMD HN NJN VBD4 IF MISMATCH ON WORD COUNT AOD T1 VBD2 LDC BUFP LMI T1 NJN VBD4 IF PATTERN MISMATCH AOD T1 LMD T3 NJN VBD2 IF NOT END OF BUFFER VBD3 AOD T2 UJN VBD1 CHECK FOR END OF BUFFERS VBD4 LDD T0 SET (T7) TO SECTOR IN ERROR STD T7 AOM VCTB,SP SET DATA ERROR COUNT UJP VBDX RETURN VLS SPACE 4,15 ** VLS - VERIFY LABEL SECTOR. * * ENTRY (T7) = LABEL SECTOR NUMBER. * (NS) = RELATIVE UNIT NUMBER. * (SP) = ERROR STATISTICS BUFFER POINTER. * * EXIT ERROR INDICATORS SET IN STATISTICS BUFFER. * * USES MT, T4, T6, T7, T8, CM - CM+4, CN - CN+4, IR - IR+4. * * CALLS AEC, RDS, VLT, *5ME*. * * MACROS ENDMS, EXECUTE, SETMS. VLS11 RJM AEC ANALYZE ERROR CODE ZJN VLS12 IF DRIVE OR CONTROLLER RESERVE STM LREB,SP SAVE LABEL READ ERROR LDK REFG SET READ ERROR FLAG VLS12 STM LEFB,SP ENDMS VLS SUBR ENTRY/EXIT VLS0 SETMS IOCH,(AD,AR,DE,DF,ND) * LDN 0 SET MEDIA ERROR THRESHOLD STD MT LDM TSCH,CC SET CHANNEL STD T4 STM STSB STORE CHANNEL IN CASE BUFFERED DEVICE LDD ES+4 READ MST DATA SHN 3 ADN ALGL CRD CM LDD CM+1 SET LABEL TRACK NUMBER STD T6 LDC BFMS RJM RDS READ SECTOR VLS0.1 MJP VLS11 IF MASS STORAGE ERROR * CHECK CONTENTS OF LABEL. * LDN 0 STD T8 SET ERROR STATUS LDM LLSS SHN -1 ZJN VLS0.2 IF NOT LEVEL 2 LABEL LDD NS NJN VLS0.2 IF NOT RELATIVE UNIT ZERO RJM VLT VERIFY LEVEL 2 LABEL MJN VLS0.1 IF TRT READ ERROR STD T8 SET ERROR STATUS LPK CKFG NJP VLS12 IF CHECKSUM ERROR VLS0.2 LDM BFMS CHECK CONTROL BYTES LMC 3777 ZJN VLS1 IF PROPER CONTROL BYTE LDK CBFG SET BAD CONTROL BYTE FLAG RAD T8 VLS1 LDM BFMS+1 LMN 77 ZJN VLS2 IF PROPER WORD COUNT LDK WCFG SET BAD WORD COUNT FLAG RAD T8 VLS2 LDM FTSS LMD T6 ZJN VLS3 IF PROPER TRACK LDK TNFG SET BAD TRACK NUMBER FLAG RAD T8 VLS3 LDM E4SS COMPARE EQUIPMENT TYPE WITH EST STM EMNB,SP LMM DVDT ZJN VLS6 IF MATCHING EQUIPMENT MNEMONIC LMN 1RP&1RE VLSA PSN * ZJN VLS6 (IF NON-MATCHING EM EQUIPMENT TYPES) LDK EQFG SET BAD EQUIPMENT MNEMONIC RAD T8 VLS6 LDD ES+4 GET FAMILY/PACKNAME SHN 3 ADN PFGL CRD CN LDD MA COPY LABEL NAME TO MESSAGE BUFFER CWM N4SS+5*PFGL,ON SBN 1 MOVE NAME TO DIRECT CELLS CRD CM LDD CM LMD CN NJN VLS7 IF NOT THE SAME LABEL LDD CM+1 LMD CN+1 NJN VLS7 IF NOT THE SAME LABEL LDD CM+2 LMD CN+2 NJN VLS7 IF NOT THE SAME LABEL LDD CM+3 LMD CN+3 SCN 77 CHECK DEVICE NUMBER SEPARATELY NJN VLS7 IF NOT THE SAME LABEL LDD CM+4 LMD CN+4 SCN 70 ZJN VLS8 IF GOOD COMPARE VLS7 LDK FPFG SET FAMILY/PACK NAME ERROR FLAG RAD T8 VLS8 LDD CM+3 COMPARE DEVICE NUMBERS LMD CN+3 LPN 77 ZJN VLS9 IF DEVICE NUMBERS MATCH LDK DNFG SET BAD DEVICE NUMBER FLAG RAD T8 VLS9 LDD CM STM FMNB,SP LDD CM+1 STM FMNB+1,SP LDD CM+2 STM FMNB+2,SP LDD CM+3 STM DNMB,SP LDD CM+4 CHECK RELATIVE UNIT NUMBER SHN -3 LPN 7 LMD NS ZJN VLS10 IF CORRECT UNIT NUMBER LDK RUFG SET RELATIVE UNIT NUMBER ERROR VLS10 RAD T8 LPK FPFG+DNFG+RUFG NJN VLS10.2 IF WRONG PACK VLS10.1 LDD T8 LJM VLS12 RETURN VLS10.2 LDD ES SHN 21-11 PJN VLS10.1 IF NOT SHARED SHN 11-21 LPN 3 LMN 3 ZJN VLS10.1 IF DOWN LDD T5 STD IR+3 SET EST ORDINAL LDK BFMS STD IR+2 SET BUFFER ADDRESS EXECUTE 5ME LDD IA RESTORE INPUT REGISTER CRD IR LDN /MMF/LSLT RESET LABEL SECTOR STD T7 LJM VLS0 RETRY VERIFICATION VLT SPACE 4,15 ** VLT - VERIFY LEVEL TWO LABEL. * * ENTRY (NS) = RELATIVE UNIT NUMBER. * (SP) = ERROR STATISTICS BUFFER POINTER. * (T7) = LABEL SECTOR NUMBER. * (ES - ES+4) = *EQDE* WORD OF EST ENTRY. * * EXIT (A) = ERROR INDICATORS. * * USES T1, T7, T9, CM - CM+4. * * CALLS CLC, RDS. VLT6 LDK CKFG CHECKSUM ERROR VLT SUBR ENTRY/EXIT RJM CLC COMPUTE LABEL CHECKSUM LMM CKSS NJN VLT6 IF INCORRECT CHECKSUM LDM N4SS+SDGL*5+4 CHECK MST/TRT INTERLOCK LPN 76 ZJN VLT1 IF NOT INTERLOCKED SHN -1 STD T1 LDD ES+4 COMPARE INTERLOCK WITH THIS MF-S INDEX SHN 3 ADK DULL CRD CM LDD CM+2 LPN 17 ADN 1 LMD T1 ZJN VLT1 IF INTERLOCKED BY THIS MAINFRAME LDD T1 SHN 2 RAD T1 LDM DISS-5+3,T1 LPN 1 LMN 1 ZJN VLT1 IF INTERLOCKED FOR DEVICE RECOVERY LDK ILFG VLT1 STD T9 LDD NS NJP VLT4 IF NOT RELATIVE UNIT ZERO LDM N4SS+TDGL*5+2 CHECK MST AND TRT COUNTERS SHN -6 ADN 1 RAD T7 LDC DBUF RJM RDS READ LAST SECTOR OF TRT MJN VLT5 IF READ ERROR LDM N4SS+SDGL*5+2 LMM DBUF+2+77*5+2 NJN VLT2 IF COUNTERS DON-T MATCH LDM N4SS+SDGL*5+3 LMM DBUF+2+77*5+3 NJN VLT2 IF COUNTERS DON-T MATCH LDM N4SS+SDGL*5+4 LMM DBUF+2+77*5+4 SCN 77 ZJN VLT3 IF COUNTERS MATCH VLT2 LDD TH COUNTER MISMATCH * LDK CMFG ERRNZ CMFG-1000B RAD T9 VLT3 LDN /MMF/LSLT RESET LABEL SECTOR STD T7 VLT4 LDD T9 VLT5 LJM VLTX RETURN VSF SPACE 4,15 ** VSF - VERIFY SYSTEM FILE. * * ENTRY (EQ) = (T5) = EST ORDINAL. * (ES - ES+4) = EST ENTRY. * * EXIT (A) .LT. 0 IF I/O ERROR. * * USES CM - CM+4, CN - CN+4. * * CALLS IRA, WSF. * * MACROS SFA. VSF SUBR ENTRY/EXIT LDD ES LPC 2003 CHECK DEVICE STATE LMC 2003 NJN VSFX IF NOT DOWN SYSTEM DEVICE LDN FNTP CRD CM FETCH FNT POINTER LDD CM SHN 14 READ SYSTEM FILE FST LMD CM+1 ERRNZ SYFO CODE DEPENDS ON VALUE ADN FSTG CRD CN RJM IRA INITIALIZE RANDOM ACCESS PROCESSORS * WRITE SYSTEM FILE - SYSTEM + EOI SECTORS. LDD CN+1 PROCESS SYSTEM FILE RJM WSF MJN VSFX IF I/O ERROR * WRITE PP LIBRARY FILE - SYSTEM + EOI SECTORS. LDM PLSS PROCESS PP LIBRARY FILE RJM WSF UJP VSFX RETURN WCS SPACE 4,15 ** WCS - WRITE CONSECUTIVE SECTORS. * * ENTRY (NS) = NUMBER OF SECTORS TO WRITE. * (SP) = STATISTICS GATHERING POINTER. * (T4 - T7) = MASS STORAGE DRIVER PARAMETERS. * (BFMS) = DATA TO WRITE. * * EXIT (A) = WRITE ERROR COUNT. * * USES MT, T7, T9. * * CALLS AEC, WDS. WCS6 LDN 0 RESTORE ORIGINAL SECTOR NUMBER SBD NS RAD T7 LDN 0 WCS SUBR ENTRY/EXIT LDN 0 SET MEDIA ERROR THRESHOLD * LDN METH (I/O ON MAINTENANCE CYLINDER) WCSA EQU *-1 STD MT LDD HN STM BFMS+1 SET SECTOR WORD COUNT LDN 0 STD T9 INITIALIZE SECTOR NUMBER LDD T7 WCS1 ADN 1 SET SECTOR LINKAGE STM BFMS AOD T9 SBD NS ERRNZ WLSF CODE DEPENDS ON VALUE ZJN WCS2 IF WRITING LAST SECTOR PJN WCS6 IF WRITING COMPLETE LDC WCSF WCS2 ADC BFMS RJM WDS PJN WCS3 IF NO ERROR RJM AEC ANALYZE ERROR CODE NJN WCS3 IF NOT DRIVE OR CONTROLLER RESERVE STM DVBE-1,T9 LDN 1 SET ERROR INDICATOR WCS2.1 UJP WCSX RETURN WCS3 STM DVBE-1,T9 STM WCDB,SP SAVE LATEST WRITE ERROR CODE MJN WCS4 IF TOO MANY MEDIA OR OTHER ERRORS AOD T7 UJP WCS1 PROCESS NEXT SECTOR WCS4 SHN 21-20 PJN WCS5 IF NOT DIAGNOSTIC FAILURE STM HVLB WCS5 AOM WCTB,SP SET WRITE ERROR COUNT UJN WCS2.1 RETURN WSF SPACE 4,15 ** WSF - WRITE SYSTEM FILE. * * ENTRY (A) = FIRST TRACK OF FILE. * (EQ) = ORDINAL OF DEVICE BEING VERIFIED. * * EXIT (A) .LT. 0 IF I/O ERROR. * * USES T5, T6, T7. * * CALLS RDS, SEI, WEI, WSS. * * MACROS ENDMS, SETMS. WSF SUBR ENTRY/EXIT STD T6 LDN 0 SYSTEM SECTOR NUMBER STD T7 SETMS READSYS,(AD,DF,ND) LDC BFMS READ SYSTEM SECTOR RJM RDS MJN WSFX IF READ ERROR ENDMS LDD EQ SELECT DEVICE BEING VERIFIED STD T5 SETMS IO,(AD,DF,ND,NR) RJM WSS WRITE SYSTEM SECTOR MJN WSFX IF WRITE ERROR RJM SEI LOCATE EOI ON SYSTEM FILE SETMS POSITION RJM WEI WRITE EOI SECTOR MJN WSF1 IF WRITE ERROR ENDMS * LDN 0 WSF1 UJP WSFX RETURN SPACE 4,10 ** COMMON DECKS. *CALL COMPCLC IRA$ EQU 0 SET *IRA* INITIALIZATION COMPLETE *CALL COMPSEI *CALL COMPIRA *CALL COMPTLB *CALL COMPWEI *CALL COMPWSS TITLE BUFFERS. SPACE 4,10 ** BUFFERS. BUF EQU * BEGIN BSSN BUF * CELLS SET BY PRESET. DVDT BSSN 1 DEVICE TYPE DVMT BSSN 1 DEVICE MAINTENANCE TRACK DVHL BSSN 1 DEVICE HEAD COUNT LIMIT PER TRACK DVSI BSSN 1 DEVICE SECTOR INCREMENT TO NEXT HEAD CVNF BSSN 1 CONVERSION FACTOR DVST BSSN 0 DEVICE SECTORS BETWEEN LOGICAL TRACKS LSLT BSSN 1 LOGICAL SECTORS/LOGICAL TRACK LSCY BSSN 2 LOGICAL SECTORS/CYLINDER LSPT BSSN 1 LOGICAL SECTORS/PHYSICAL TRACK DVSB BSSN 1 PHYSICAL SECTORS / BUFFER - 1 DVPC BSSN 1 DEVICE HARDWARE VERIFICATION PROCESSOR * ZEROED OUT TABLES. DVC1 BSSN 10*MXNB CHANNEL 1 STATISTICS BUFFER DVC2 BSSN 10*MXNB CHANNEL 2 STATISTICS BUFFER EZOT BSSN 0 END OF ZEROED OUT TABLES * SCRATCH CELLS. .1 SET BFMS-* MXSC EQU .1/503 MAXIMUM SECTORS IN BUFFER DVBE BSSN MXSC DEVICE VERIFICATION ERROR FLAG BUFFER DBUF BSSN MXSC*BUFL DATA VERIFICATION DATA BUFFER END BSSN OVLA EQU DVBE+5 *2VA* OVERLAY LOAD POINT SPACE 4,10 ERRNG BFMS-DBUF-MXSC*BUFL OVERFLOW INTO WRITE BUFFER ERRNG MXSC-DVSC NOT ENOUGH SECTORS FOR DEVICE VERIFY ERRNG EPFW-OVLA-ZSCL *0SC* OVERLAYED BY ERROR PROCESSOR TITLE PRESET TABLES. TDVC SPACE 4,10 ** TDVC - TABLE OF DEVICE CONSTANTS. TDVC BSS 0 TDVCL EQU 13 TABLE ENTRY LENGTH .A SET TDVCL+4 TDVCS EQU .A/5 TABLE ENTRY SIZE (CM WORD COUNT) LIST G ECHO ,DT="MSEQ" .1 IF DEF,PRC._DT CON 2R_DT DT CON MCLT_DT LOGICAL TRACK OF MAINTENANCE CYLINDER .2 IFEQ PRC.DT,HVL CON PTCY_DT PHYSICAL TRACKS PER CYLINDER .A SET TT_DT+1 CON LSPS_DT*PSPT_DT/.A SECTOR OFFSET TO NEXT HEAD POSITION CON CFS_DT CONVERSION FACTOR SHIFT COUNT CON SL_DT+GS_DT LOGICAL SECTORS/LOGICAL TRACK .A SET PSPT_DT*PTCY_DT-SPSC_DT PHYSICAL SECTORS/CYLINDER .B SET .A*LSPS_DT LOGICAL SECTORS/CYLINDER .C SET .B/10000 .D SET .C*10000 CON .C UPPER LOGICAL SECTORS/CYLINDER CON .B-.D LOWER LOGICAL SECTORS/CYLINDER CON LSPT_DT LOGICAL SECTORS/PHYSICAL TRACK .3 IF DEF,PSBF_DT CON 37 LOGICAL SECTOR BUFFER ROUNDING FACTOR .3 ELSE CON 0 .3 ENDIF .2 ELSE BSSZ TDVCL-3 .2 ENDIF CON PRC._DT DEVICE TYPE PROCESSOR .1 ENDIF ENDD LIST * BSSZ TDVCL END OF TABLE - NULL PARAMETERS TFCN SPACE 4,10 ** TFCN - TABLE OF FUNCTION PROCESSORS. * * ENTRY - 3 BYTES. * BYTE 0 = FUNCTION PROCESSOR. * BYTE 1 = REPAIR PROCESSOR. * BYTE 2 = REPAIRABLE ERRORS. TFCN BSS 0 DVFC FCN DVF,RLT,REFG+CKFG+CMFG ONFC FCN ONF,RLT,REFG+CKFG+CMFG IDFC FCN IDF,RLT,REFG+CKFG+CMFG OFFC FCN LVA,RLT,REFG+CKFG+CMFG MVFC FCN MVA,CFE9,0 UCFC FCN UCF,CFE9,0 SCFC FCN SCF,DVF2,0 MXFN FCN TITLE PRESET. PRS SPACE 4,30 ** PRS - PRESET. * * ENTRY (IR - IR+4) = *1MV* CALL. * * EXIT (CC) = (DA) = CHANNEL COUNT. * (FC) = FUNCTION CODE. * (SU) = SINGLE UNIT SECTOR COUNT FROM MST. * (SP) = POINTER TO STATISTICS BUFFER. * (T4) = FIRST CHANNEL. * (T5) = EST ORDINAL. * (T7) = 0. * (DP - DP+4) = 0 ((DP) = 1 IF EXTENDED MEMORY). * (ES - ES+4) = *EQDE* WORD OF EST ENTRY. * (DVSA) = SINGLE UNIT SECTOR + GAP COUNT. * (DVHL) = HEAD COUNT LIMIT FOR DEVICE. * (DVMT) = MAINTENANCE CYLINDER LOGICAL TRACK. * (DVSI) = SECTOR INCREMENT FOR FUNCTION. * * ERROR TO *DPP* IF BAD CALL. * * USES T1, T8, CM - CM+4, CN - CN+4, ES - ES+4. PRS BSS ENTRY LDD IR+3 SHN -6 STD FC EXTRACT FUNCTION CODE SHN 1 ADD FC STD T1 SBN MXFN*3 PJN PRS1 IF INCORRECT FUNCTION CODE LDM TFCN,T1 SET PROCESSOR ADDRESS STM PRSB LDM TFCN+1,T1 SET REPAIR PROCESSOR ADDRESS STM CFEB LDM TFCN+2,T1 SET REPAIRABLE ERRORS STM CFEA LDK ESTP CRD CM LDD EQ SET EST ORDINAL STD T5 SBD CM+3 PJN PRS1 IF OUT OF EST SFA EST,T5 READ EST ENTRY ADK EQDE CRD ES ADK EQAE-EQDE CRD CN LDD ES SHN 21-13 MJN PRS2 IF DEVICE IS MASS STORAGE PRS1 LJM DPP DROP PP PRS2 LDD ES+3 LMC 2RDC ZJN PRS2.1 IF 895 TYPE DEVICE ISTORE HVLF,(UJN HVL3.1) DISABLE 895 FORMATTING LDD ES+3 LMC 2RDF ZJN PRS2.2 IF 887 TYPE (HYDRA) DEVICE LMN 2RDH&2RDF ZJN PRS2.2 IF 887 TYPE (HYDRA) DEVICE PRS2.1 ISTORE HVLE,(UJN HVL3) DISABLE HYDRA DIAGNOSTICS PRS2.2 LDD ES+4 READ MST DATA SHN 3 ADN MDGL CRD CM ADN DILL-MDGL GET DRIVER WORD CRD DP LDD CM+1 SAVE SINGLE UNIT SECTOR LIMIT LPC 3777 STD SU * SEARCH FOR DEVICE IN TABLE. LDC TDVC-TDVCL INITIALIZE POINTER INTO DEVICE CONSTANTS STD T1 LDD DP+3 NJN PRS3 IF BUFFERED DEVICE LDC * ORG *-1 TRANSFER FOR NON-BUFFERED DEVICE LOC CDAA UJN CDA9 PROCESS *LDAM* DEVICE LOC *O STM CDAA PRS3 LDN TDVCL INCREMENT POINTER RAD T1 LDI T1 CHECK DEVICE MNEMONIC ZJN PRS4 IF DEVICE NOT FOUND LMD ES+3 NJN PRS3 IF NO MATCH PRS4 STD CC STD T7 STD DA LDD T1 TRANSFER DEVICE PARAMETERS STM PRSA LDN TDVCS SET WORD COUNT STD T1 ERRNG 6-TDVCS TRANSFER OVERFLOWS MESSAGE BUFFER LDD MA CWM 0,T1 MOVE TABLE ENTRY INTO MESSAGE BUFFER PRSA EQU *-1 SBN TDVCS COPY ENTRY TO DEVICE PARAMETER BLOCK CRM DVDT,T1 LDN ZERL CLEAR DEVICE SEEK PARAMETERS CRD DP LDN 77 SET LOGICAL TO PHYSICAL SECTOR CONVERSION SBM CVNF RAM CDAB LDD ES+3 STM DVDT LMC 2RDP ZJN PRS5 IF ESM LMN 2RDE&2RDP NJN PRS6 IF NOT UEM PRS5 ISTORE VLSA,(ZJN VLS6) AOD DP AVOID ADDRESS CONVERSION LDD CN+2 SHN -6 LPN 3 ZJN PRS6 IF XM TRACK SIZE IS 2020 WORDS LDD ES+4 SHN 3 FORM MST ADDRESS ADK ALGL CRD CM LDD CM+1 STM DVMT USE LABEL TRACK FOR VERIFICATION LDN 20 RAM HVEA BEGIN VERIFICATION AT SECTOR 20 PRS6 LDD ES+3 LMC 2RDE ZJN PRS9 IF EXTENDED MEMORY LDN ES+1 STD T1 PRS7 LDI T1 SET CHANNEL IN TABLE LPN 77 STM TSCH,DA LMI T1 SHN 0-12 LMN 2 NJN PRS8 IF ACCESS NOT PRESENT OR DISABLED AOD DA PRS8 AOD T1 ADVANCE CHANNEL BYTE ADDRESS LMN ES+3 NJN PRS7 IF ANOTHER CHANNEL BYTE SOD DA MJP DPP IF NO CHANNELS ZJN PRS10 IF SINGLE ACCESS DEVICE LDD ES SHN 21-6 PJN PRS10 IF DEVICE IS AVAILABLE LDD ES+1 LMD ES+2 LPC 400 PRS9 ZJN PRS10 IF SAME CONTROLLER TYPES LDD ES+2 SHN 0-10 LPN 1 STD T1 LDM ES+1,T1 SET HALF TRACK CHANNEL FOR VERIFICATION LPN 77 STM TSCH UJN PRS11 CONTINUE PRS10 AOD DA SET CHANNEL COUNT LDM TSCH PRS11 STD T4 SET FIRST CHANNEL LDD IR+3 GET REPAIR STATUS LPN 40 NJN PRS12 IF REPAIR HAS BEEN ATTEMPTED LDD T5 STD CM+1 LDN RVES RESERVE EQUIPMENT STD CM+2 MONITOR REQM LDD CM+1 NJN PRS13 IF DEVICE RESERVED LJM IBM+1 ISSUE BML MESSAGE PRS12 LDN 0 COUNT ALL LABEL ERRORS AS UNREPAIRABLE STM CFEA PRS13 LDD T5 STM RAEA SET EQUIPMENT RESERVED * CLEAR STATISTICS BUFFER. LDC EZOT-1 SET BUFFER LWA+1 STD SP SAVE STARTING ADDRESS ERRNG *-EZOT-1 TABLES OVERLAP CODE PRS14 LDN 0 STI SP SOD SP DECREMENT POINTER LMC DVC1 NJN PRS14 IF NOT DONE CLEARING STI SP RJM ECA ENABLE CONTROLLER ACTIVITY LJM * EXIT TO PROCESSOR PRSB EQU *-1 TITLE PRESET SUBROUTINES. ECA SPACE 4,15 ** ECA - ENABLE CONTROLLER ACTIVITY. * * THIS ROUTINE FORCES THE 583X/47444 (*DAS*) OR 9853 (*XMD*) * DRIVER TO REENABLE ACTIVITY TO A CONTROLLER IN ORDER TO * ALLOW A *UCFC* (*UP,CCH*) FUNCTION TO BE PROCESSED. * THIS IS ACCOMPLISHED BY SETTING A SPECIAL REQUEST BIT IN * WORD *PILL* OF THE *PUT*, AND A BIT FOR THE SPECIFIED * CHANNEL IN WORD *BDLL* OF THE *MST*. * * ENTRY (FC) = FUNCTION CODE. * (IR+2) = EST ORDINAL. * (IR+4) = CHANNEL. * * USES CM - CM+4, CN - CN+4, T1. * * MACROS MONITOR, SFA. ECA SUBR ENTRY/EXIT LDD FC CHECK FUNCTION CODE LMN UCFC NJN ECAX IF NOT *UP,CCH* FUNCTION SFA EST,IR+2 READ EST ENTRY ADK EQDE CRD CM LDN TECAL CHECK DEVICE TYPE STD T1 ECA2 SOD T1 CHECK NEXT TABLE ENTRY MJN ECAX IF THIS DEVICE TYPE NOT IN TABLE LDD CM+3 LMM TECA,T1 NJN ECA2 IF DEVICE TYPE DOES NOT MATCH * SET CHANNEL SELECTION FLAGS. LDD CM+1 CHECK FOR FIRST CHANNEL SPECIFIED LPN 77 LMD IR+4 NJN ECA3 IF FIRST CHANNEL NOT SPECIFIED LDN 1 SET FLAG FOR FIRST CHANNEL UJN ECA4 UPDATE *MST* ECA3 LDN 2 SET FLAG FOR SECOND CHANNEL * SET CHANNEL SELECTION FLAGS INTO *MST*. ECA4 STD CN+4 LDC BDLL*100+2 6/INDEX INTO *MST*, 6/BITS TO CHANGE STD CN LDC 49D*100 6/LOW ORDER BIT, 6/0 STD CN+1 LDD MA CWD CN STORE MESSAGE BUFFER PARAMETERS LDD CM+4 SAVE *MST* ADDRESS STD T1 SHN 3 STD CM+4 SHN -14 STD CM+3 LDN 1 STD CM+1 REQUESTS IN MESSAGE BUFFER MONITOR UTEM UPDATE TABLE ENTRY * SET SPECIAL REQUEST INTO *PUT*. LDC PILL*100+1 6/INDEX INTO *PUT*, 6/BITS TO CHANGE STD CN LDC ECAF*100 6/LOW ORDER BIT, 6/0 STD CN+1 LDN 1 STD CN+4 NEW VALUE LDD MA CWD CN STORE MESSAGE BUFFER PARAMETERS LDD T1 SHN 3 *MST* ADDRESS ADK DILL CRD CM (CM+2) = PUT ORDINAL LDK BIOL CRD CN READ BUFFERED I/O POINTERS LDD CN+1 SHN 14 LMD CN+2 ADK PUTP CRD CN READ *PUT* POINTER LDD CM+2 SHN PUTLS ADD CN+4 STD CM+4 SET START ADDRESS OF *PUT* SHN -14 ADD CN+3 STD CM+3 LDN 1 STD CM+1 REQUESTS IN MESSAGE BUFFER MONITOR UTEM UPDATE TABLE ENTRY UJP ECAX RETURN TECA BSS 0 TABLE OF 583X/9853/47444 DEVICES CON 2RDN 9853 CON 2REA 5832 (1X SSD) CON 2REB 5832 (2X SSD) CON 2REC 5833 (1X SABRE) CON 2RED 5833 (1XP SABRE) CON 2REE 5833 (2X SABRE) CON 2REF 5833 (2XP SABRE) CON 2REG 5838 (1X ELITE) CON 2REH 5838 (1XP ELITE) CON 2REI 5838 (2X ELITE) (MP) CON 2REJ 5838 (2XP ELITE) (MP) CON 2REK 5838 (3XP ELITE) (MP) CON 2REL 5838 (4X ELITE) (MP) CON 2REM 5833 (3XP SABRE) (MP) CON 2REN 5833 (4X SABRE) (MP) CON 2REO 47444 (1X 3.5IN) CON 2REP 47444 (1XP 3.5IN) CON 2RES 47444 (2X 3.5IN) (MP) CON 2REU 47444 (2XP 3.5IN) (MP) CON 2REV 47444 (3XP 3.5IN) (MP) CON 2REW 47444 (4X 3.5IN) (MP) TECAL EQU *-TECA LENGTH OF TABLE SPACE 4,10 OVERFLOW OVERLAY (*1MV* FUNCTION COMPLETION OVERLAY.) ELM SPACE 4,20 ** ELM - ERROR LOG MESSAGE PROCESSOR. * * ENTRY (CN) = SYMPTOM CODE. * (DCHA+3) = CHANNEL NUMBER, INCLUDING CONCURRENCY FLAG. * (CN) = SYMPTOM CODE FOR BML MESSAGE. * (EQ) = EST ORDINAL. * (FC) = *1MV* FUNCTION CODE. * (DP - DP+4) = DEVICE SEEK PARAMETERS. * * EXIT (A) = 0. * * USES MT, T1, T2, T3, T8, CM - CM+4, CN - CN+4. * * CALLS C2D, DFM. * * MACROS MONITOR. ELM SUBR ENTRY/EXIT LDD EQ CONVERT UPPER TWO DIGITS OF EST ORDINAL SHN -3 RJM C2D STM ELMB+1 STM ELMC+1 STM ELMD+1 STM ELME+1 STM ELMF+1 LDD EQ CONVERT LOWER DIGIT OF EST ORDINAL STM BMLEO STORE EST ORDINAL IN BML MESSAGE LPN 7 SHN 6 ADC 2R0 STM ELMB+2 STM ELMC+2 STM ELMD+2 STM ELME+2 STM ELMF+2 LDD CN STORE SYMPTOM CODE IN MESSAGE STD T2 STM BMLSC LDD DP+1 ADD UNIT NUMBER TO MESSAGE STM BMLUN ELM1 LDK PPCP ADD PP NUMBER TO MESSAGE CRD CM ADN MMFL-PPCP CRD CN LDD CN ADD MACHINE ID TO MESSAGE STM BMLMF LDD IA STORE PP NUMBER IN BML MESSAGE SBD CM+4 SHN 3 LMM DCHA+3 APPEND CHANNEL NUMBER STM BMLPP * DETERMINE THE APPROPRIATE BML MESSAGE IDENTIFIER TO BE * ADDED TO THE MESSAGE. FOR DISKS, THE MESSAGE ID CAN BE * DETERMINED FROM THE DEVICE CODE. FOR EXTENDED MEMORY, * IT MUST BE DETERMINED FROM DATA IN WORD *DILL* OF THE MST. LDN 0 INITIALIZE TABLE POINTERS STD T8 LDC MSGID-2 SET TABLE ADDRESS STD T1 LDD ES+3 SAVE DEVICE CODE STD T3 LMC 2RDE ZJN ELM2 IF A *DE* TYPE DEVICE LMN 2RDP&2RDE NJN ELM3 IF NOT A *DP* TYPE DEVICE ELM2 LDD ES+4 GET MST WORD *DILL* SHN 3 ADN DILL CRD CM LDD CM+3 USE *DILL* DATA FIELDS LPC 707 STD T3 LDC MSEID-2 SET TABLE ADDRESS STD T1 ELM3 LDN 2 RAD T1 LDI T1 SCAN TABLE FOR A MATCH ZJN ELM4 IF DEVICE IS NOT FOUND IN TABLE LMD T3 NJN ELM3 IF A MATCH HAS NOT YET BEEN FOUND LDM 1,T1 ELM4 STM BMLID STORE MESSAGE ID IN BML MESSAGE LDN BMLL1 STD T3 SET BML MESSAGE LENGTH ELM5 LDN 2 RAD T8 LDM TFCN-2,T8 LMD T2 NJN ELM5 IF NOT A SYMPTOM CODE MATCH LDM TFCN-1,T8 STD T1 LDC ELMD SET DEFAULT ERRORLOG MESSAGE LJM 0,T1 PROCESS SYMPTOM CODE DEPENDENT DATA ELM6 LDM DCHA+3 CHANNEL NUMBER (AND CONCURRENCY FLAG) RJM C2D CONVERT CHANNEL NUMBER FOR MESSAGE STM ELMA+1 LDN 0 SET NO BML MESSAGE STD T3 LDC ELMA *CHXX, EQXXX VERIFICATION FAILURE.* LJM ELM9.1 ISSUE ERRLOG MESSAGE ELM7 LDN BMLL2 SET BML MESSAGE LENGTH STD T3 LDD DP+2 SET CYLINDER IN MESSAGE STM BMLCY LDD DP+3 SET PHYSICAL TRACK IN MESSAGE STM BMLTR LDD DP+4 SET PHYSICAL SECTOR IN MESSAGE STM BMLSN LDD IR+4 STORE TRACK NUMBER IN ERRLOG MESSAGE RJM C2D STM ELMF+5 LDD IR+4 SHN -6 RJM C2D STM ELMF+4 LDC ELMF+ERLN ISSUE ERROR LOG MESSAGE RJM DFM UJN ELM11 ISSUE BML MESSAGE ELM8 LDC ELMC *EQXXX DOWNED BY SYSTEM.* ELM9 STD MT LDC ELMB+ERLN *EQXXX VERIFICATION FAILURE.* RJM DFM LDD MT ELM9.1 LMC ERLN ISSUE ERROR LOG MESSAGE ELM10 RJM DFM LDN ZERL ISSUE *SEE, ERRORLOG* EVENT CRD CM LDN ELAE STD CM+4 MONITOR EATM ELM11 LDD T3 ZJN ELM12 IF NULL MESSAGE STD CM+1 SET BML MESSAGE LENGTH LDC BML+BMLN ISSUE BML MESSAGE RJM DFM ELM12 LJM ELMX RETURN ELM13 LDN 0 SET NO BML MESSAGE STD T3 LDC ELME+ERLN UJP ELM10 ISSUE ERRLOG MESSAGE TFCN SPACE 4 ** TFCN - TABLE OF SYMPTOM CODE DEPENDENT PROCESSORS. TFCN BSS 0 CON 4000+UCFC,ELM6 CHANNEL VERIFICATION FAILURE CON /COMSDFS/HS0030,ELM9 DEVICE SET *OFF* BY SYSTEM CON /COMSDFS/HS0034,ELM8 DEVICE SET *DOWN* BY SYSTEM CON /COMSDFS/HS0105,ELM7 TRACK FLAWED BY SYSTEM CON 0,ELM13 DEVICE UNAVAILABLE MSGID SPACE 4,10 * MSGID - TABLE OF MESSAGE ID-S FOR NON-EXTENDED MEMORY DEVICES. MSGID BSS 0 CON 2RDI,/COMSDFS/RM0002 (DI) 844-2X, HALF TRACK CON 2RDJ,/COMSDFS/RM0003 (DJ) 844-4X, HALF TRACK CON 2RDK,/COMSDFS/RM0004 (DK) 844-2X, FULL TRACK CON 2RDL,/COMSDFS/RM0005 (DL) 844-4X, FULL TRACK CON 2RDV,/COMSDFS/RM0006 (DV) 819, SINGLE DENSITY CON 2RDW,/COMSDFS/RM0006 (DW) 819, DOUBLE DENSITY CON 2RDM,/COMSDFS/RM0007 (DM) 885, HALF TRACK CON 2RDQ,/COMSDFS/RM0017 (DQ) 885, FULL TRACK CON 2RDR,/COMSDFS/RM0015 (DR) CDSS II CON 2RDX,/COMSDFS/RM0010 (DX) 3330-1 CON 2RDY,/COMSDFS/RM0011 (DY) 3330-11 CON 2RDZ,/COMSDFS/RM0012 (DZ) 3350 CON 2RDA,/COMSDFS/RM0013 (DA) 33502 CON 2RDB,/COMSDFS/RM0014 (DB) 885-42 (PFMD) CON 2RDC,/COMSDFS/RM0115 (DC) 895 CON 2RDD,/COMSDFS/RM0110 (DD) 834 CON 2RDF,/COMSDFS/RM0120 (DF) 887 (4KB SECTOR) CON 2RDG,/COMSDFS/RM0111 (DG) 836 CON 2RDH,/COMSDFS/RM0121 (DH) 887 (16KB SECTOR) CON 2RDN,/COMSDFS/RM0124 (DN) 9853 (XMD/CM3) CON 2REA,/COMSDFS/RM0130 (EA) 5832 (1X SSD) CON 2REB,/COMSDFS/RM0131 (EB) 5832 (2X SSD) CON 2REC,/COMSDFS/RM0132 (EC) 5833 (1X SABRE) CON 2RED,/COMSDFS/RM0133 (ED) 5833 (1XP SABRE) CON 2REE,/COMSDFS/RM0134 (EE) 5833 (2X SABRE) CON 2REF,/COMSDFS/RM0137 (EF) 5833 (2XP SABRE) CON 2REG,/COMSDFS/RM0142 (EG) 5838 (1X ELITE) CON 2REH,/COMSDFS/RM0143 (EH) 5838 (1XP ELITE) CON 2REI,/COMSDFS/RM0144 (EI) 5838 (2X ELITE) (MP) CON 2REJ,/COMSDFS/RM0147 (EJ) 5838 (2XP ELITE) (MP) CON 2REK,/COMSDFS/RM0145 (EK) 5838 (3XP ELITE) (MP) CON 2REL,/COMSDFS/RM0146 (EL) 5838 (4X ELITE) (MP) CON 2REM,/COMSDFS/RM0135 (EM) 5833 (3XP SABRE) (MP) CON 2REN,/COMSDFS/RM0136 (EN) 5833 (4X SABRE) (MP) CON 2REO,/COMSDFS/RM0162 (EO) 47444 (1X 3.5IN) CON 2REP,/COMSDFS/RM0163 (EP) 47444 (1XP 3.5IN) CON 2RES,/COMSDFS/RM0164 (ES) 47444 (2X 3.5IN) (MP) CON 2REU,/COMSDFS/RM0167 (EU) 47444 (2XP 3.5IN) (MP) CON 2REV,/COMSDFS/RM0165 (EV) 47444 (3XP 3.5IN) (MP) CON 2REW,/COMSDFS/RM0166 (EW) 47444 (4X 3.5IN) (MP) CON 0 END OF TABLE MSEID SPACE 4,10 * MSEID - TABLE OF MESSAGE ID-S FOR EXTENDED MEMORY DEVICES. MSEID BSS 0 CON 102,/COMSDFS/RM0070 (DP) ECS I - DC135 DDP CON 100,/COMSDFS/RM0071 (DE) ECS I - COUPLER CON 202,/COMSDFS/RM0072 (DP) ECS II - DC135 DDP CON 200,/COMSDFS/RM0073 (DE) ECS II - COUPLER CON 101,/COMSDFS/RM0074 (DP) ECS I - DC145 DDP CON 201,/COMSDFS/RM0075 (DP) ECS II - DC145 DDP CON 300,/COMSDFS/RM0076 (DP) LCME - COUPLER CON 400,/COMSDFS/RM0077 (DE) UEM CON 500,/COMSDFS/RM0207 (DE) ESM - COUPLER CON 501,/COMSDFS/RM0210 (DP) ESM - LOW SPEED PORT CON 601,/COMSDFS/RM0172 (DP) STORNET CON 0 END OF TABLE SPACE 4,10 * BINARY MAINTENANCE LOG MESSAGE. BML BSS 0 BMLID VFD 12/ MESSAGE ID BMLSC VFD 12/ SYMPTOM CODE BMLPP VFD 6/ PP NUMBER VFD 6/ CHANNEL NUMBER BMLUN VFD 6/0 EQUIPMENT NUMBER VFD 6/ UNIT NUMBER VFD 12/0 RESERVED BMLEO VFD 12/ EST ORDINAL VFD 24/0 RESERVED BMLMF VFD 12/ MAINFRAME ID VFD 12/0 RESERVED BMLL1 EQU *-BML MESSAGE LENGTH (NON-TRACK FLAW FORMAT) VFD 24/0 RESERVED BMLCY VFD 12/ CYLINDER BMLTR VFD 12/ TRACK BMLSN VFD 12/ SECTOR BMLL2 EQU *-BML MESSAGE LENGTH (TRACK FLAW FORMAT) SPACE 4,10 * ERROR LOG MESSAGES. ELMA DATA 6HCHXX, ELMB DATA C*EQXXX VERIFICATION FAILURE.* ELMC DATA C*EQXXX DOWNED BY SYSTEM.* ELMD DATA C*EQXXX OFFED BY SYSTEM.* ELME DATA C*EQXXX UNAVAILABLE.* ELMF DATA C*EQXXX,TKNNNN, MEDIA DEFECT FLAWED.* FMT SPACE 4,10 ** FMT - FORMAT 895 DEVICE MAINTENANCE TRACK. * * ENTRY (T4) = CHANNEL NUMBER. * (EQ) = EST ORDINAL. * (DVMT) = MAINTENANCE TRACK NUMBER. * (ES - ES+4) = EST ENTRY. * * EXIT (A) .NE. 0 IF ERROR. * (T4) = CHANNEL NUMBER. * (T5) = EST ORDINAL. * (T6) = MAINTENANCE TRACK NUMBER. * * USES T1, T2, T4, T5, T6, CM - CM+4, CN - CN+2. * * CALLS FNC, SDR. * * MACROS DCHAN, DELAY, RCHAN. FMT12 LDD ES+4 GET UNIT COUNT SHN 3 ADK DDLL CRD CM LDD CM LPN 7 STD T2 LDN FMMC RJM SDR LDN 0 SET RETURN STATUS FMT SUBR ENTRY/EXIT LDM DVMT RESTORE MAINTENANCE TRACK NUMBER STD T6 LDD EQ RESTORE EST ORDINAL STD T5 LDD T4 LPN 40 NJN FMT12 IF CONCURRENT CHANNEL LDD T4 RCHAN RESERVE CHANNEL LDC CTAB STD T1 SET CHANNEL TABLE ADDRESS FMT1 LDI T1 ZJN FMT2 IF END OF LIST STD T2 LDI T2 MODIFY INSTRUCTION SCN 37 LMD T4 STI T2 AOD T1 ADVANCE LIST POINTER UJN FMT1 MODIFY NEXT INSTRUCTION FMT2 LDD ES+4 GET UNIT LIST SHN 3 ADK DDLL CRD CM LDD T6 STORE CYLINDER NUMBER LPC 3777 SHN -1 STD CN FMT3 LDD CM+4 EXTRACT NEXT UNIT SHN 14 STD CM+4 ERRPL 4000-3*SLDC CODE DEPENDS ON VALUE SHN -14 LMC 3S6 SET MODE/OPERATION DECODE STD CN+1 LDD TH SET LARGE RECORD SIZE STD CN+2 FMT4 LDK FCFP ISSUE FORMAT FUNCTION RJM FNC MJN FMT6 IF ERROR ACN CH LDN FPBL OAM CN,CH NJN FMT6 IF INCOMPLETE DATA TRANSFER FMT5 EJM FMT7,CH IF ALL DATA WAS ACCEPTED ADN 1 NJN FMT5 IF NOT TIMEOUT FMT6 UJN FMT9 SET ERROR STATUS FMT7 DCN CH+40 LCN 0 SET 4 SECOND TIMEOUT STD T2 FMT8 DELAY 10 LDK FCGS ISSUE GENERAL STATUS FUNCTION RJM FNC MJN FMT9 IF ERROR ACN CH LDN 1 IAM T1,CH NJN FMT9 IF INCOMPLETE DATA TRANSFER SFM FMT9,CH IF CHANNEL PARITY ERROR DCN CH+40 LDD T1 ZJN FMT10 IF TRACK FORMATTING COMPLETE SOD T2 NJN FMT8 IF NOT TIMEOUT FMT9 AOM FMTB,SP SET ERROR STATUS UJN FMT11 COMPLETE PROCESSING FMT10 AOD CN+2 INCREMENT TRACK NUMBER LPN 77 LMN PTCYDC NJP FMT4 IF NOT END OF CYLINDER LDD CM LPN 7 SBN 1 STD CM PJP FMT3 IF MORE UNITS TO FORMAT FMT11 DCN CH+40 LDK FCOC RELEASE HARDWARE RESERVES RJM FNC SHN 0-21 SET ERROR STATUS IF ERROR RAM FMTB,SP LDD T4 RELEASE CHANNEL DCHAN LDM FMTB,SP LJM FMTX RETURN FNC SPACE 4,10 ** FNC - FUNCTION CHANNEL. * * ENTRY (A) = FUNCTION CODE. * * EXIT (A) .EQ. 0 IF FUNCTION WAS ACCEPTED. * .LT. 0 IF TIMEOUT OR CHANNEL ACTIVE UPON ENTRY. FNC SUBR ENTRY/EXIT AJM FNC2,CH IF CHANNEL ALREADY ACTIVE FAN CH FNC1 ADD ON IJM FNC3,CH IF FUNCTION ACCEPTED NJN FNC1 IF NOT TIMEOUT YET FNC2 DCN CH+40 LCN 0 RETURN ERROR STATUS UJN FNCX RETURN FNC3 LDN 0 RETURN SUCCESSFUL STATUS UJN FNCX RETURN CTAB BSS 0 TABLE OF CHANNEL INSTRUCTION ADDRESSES CHTB SPACE 4,10 ** COMMON DECKS. *CALL COMPC2D *CALL COMPSDR *CALL COMPSMI VTE SPACE 4,15 ** VTE - VERIFY TRT EOI SECTORS. * * ENTRY (EQ) = EST ORDINAL BEING PROCESSED. * * USES T6, T7. * * CALLS CMI, CPF, CPS, FEB, FFT, PCV, WEI. * * MACROS SETMS. VTE SUBR ENTRY/EXIT RJM PCV PRESET VTE1 RJM FEB FIND *EOI* BYTE IN TRT ZJN VTEX IF FINISHED WITH *EOI* PROCESSING RJM FFT FIND FIRST TRACK OF TRT CHAIN RJM CPS CHECK IF FILE IS PRESERVED ZJN VTE5 IF FILE IS NOT PRESERVED RJM CPF CHECK PRESERVED FILE INTERLOCKS NJN VTE1 IF FILE INTERLOCKED ON OTHER MAINFRAME VTE2 LDD T9 SETUP TO WRITE AN ENHANCED EOI SECTOR SBN 1 STD T6 LDD EI STD T7 SETMS IO,(AD,ND,NR) RJM WEI WRITE PROPER EOI SECTOR * CHECK FOR MS ERROR. ENDMS VTE3 UJP VTE1 CONTINUE TO NEXT EOI VTE5 RJM CMI CHECK MACHINE RECOVERY TABLE INTERLOCK ZJN VTE3 IF FILE NOT LOCAL TO THIS MAINFRAME UJP VTE2 GO WRITE CORRECT EOI TO FILE CMI SPACE 4,15 ** CMI - CHECK MACHINE RECOVERY TABLE INTERLOCK. * * ENTRY (T6) = FIRST TRACK NUMBER OF FILE. * (T8) = BYTE NUMBER IN TRT WORD. * (CM - CM+4) = TRT WORD CONTAINING (T6). * (FTPB) = LENGTH OF TRT BEING PROCESSED. * * EXIT (A) = 0 IF FILE IS NOT LOCAL TO THIS MAINFRAME. * .NE. 0 IF FILE IS LOCAL TO THIS MAINFRAME. * * USES T1, T2, CM - CM+4. CMI3 LDN 1 RETURN WITH LOCAL FILE STATUS CMI SUBR ENTRY/EXIT LDD CM+4 CHECK TRACK INTERLOCK LMM TCMI,T8 SBD CM+4 PJN CMI3 IF FILE NOT INTERLOCKED * CHECK MRT TO DETERMINE WHO HAS FILE INTERLOCKED. CMI1 LDD T6 CALCULATE WORD OFFSET INTO MRT SHN 21-4 STD T1 SHN 4-21 SAVE BIT INTERLOCK NUMBER (BITS 0-4) STD T2 CMIB LDC ** GET TRT FWA ADM FTPB ADD LENGTH OF TRT ADD T1 ADD OFFSET INTO MRT CRD CM LDN CM+5 SET BYTE POINTER WITHIN MRT WORD STD T0 CMI2 SOD T0 LCN 14 RAD T2 PJN CMI2 IF NOT POSITIONED TO PROPER BYTE ADC SHNI+21-0+14 STM CMIC LDI T0 CMIC SHN ** SHN 0-21 UJP CMIX RETURN TCMI CON 200,100,40,20 TABLE OF TRACK INTERLOCK BITS CPF SPACE 4,15 ** CPF - CHECK PRESERVED FILE STATUS. * * ENTRY (MT) = FIRST TRACK NUMBER OF FILE. * * EXIT (A) = 0 IF FILE IS NOT INTERLOCKED. * .NE. 0 IF FILE IS INTERLOCKED ON OTHER MAINFRAME. * * USES T6, T7. * * CALLS CPI, RDS. * * MACROS ENDMS, SETMS. CPF SUBR ENTRY/EXIT LDD MT SETUP TO READ SYSTEM SECTOR STD T6 LDN 0 STD T7 SETMS IO,(AD,ND) LDC BFMS READ SYSTEM SECTOR RJM RDS * CHECK FOR MS ERROR. ENDMS LDM BFMS+2+4 SHN -6 LMN PMFT ZJN CPF1 IF DIRECT ACCESS PERMANENT FILE LMN FAFT&PMFT NJN CPF2 IF NOT FAST ATTACH PERMANENT FILE CPF1 LDD ES LPC 1020 ZJN CPF2 IF DEVICE NOT A SHARED DEVICE RJM CPI CHECK MMF PERMANENT FILE INTERLOCKS CPF2 UJP CPFX RETURN CPS SPACE 4,10 ** CPS - CHECK FOR PRESERVED FILE STATUS. * * ENTRY (T6) = FIRST TRACK NUMBER. * (T8) = BYTE NUMBER IN TRT WORD. * (CM - CM+4) = TRT WORD CONTAINING (T6). * * EXIT (A) = 0 IF FILE IS NOT PRESERVED. * .NE. 0 IF FILE IS PRESERVED FILE. CPS SUBR ENTRY/EXIT LDD CM+4 CHECK FOR PRESERVED BIT LMM TCPS,T8 SBD CM+4 SHN -21 UJN CPSX RETURN * BIT MASKS FOR INTERLOCK TESTS. TCPS CON 4000,2000,1000,0400 CPI SPACE 4,10 ** CPI - CHECK MMF PERMANENT FILE INTERLOCKS. * * ENTRY (BFMS) = SYSTEM SECTOR OF PRESERVED FILE. * * EXIT (A) = 0 IF FILE IS NOT INTERLOCKED. * .NE. 0 IF FILE IS INTERLOCKED ON OTHER MAINFRAME. * * USES T2, T3, T5. * * CALLS SMI. CPI SUBR ENTRY/EXIT LDD EQ STD T5 RJM SMI GET CURRENT MACHINE INDEX STD T2 SHN 1 STD T3 *2 ADD T3 *4 RAD T2 *5 UJN CPIX RETURN FEB SPACE 4,15 ** FEB - FIND EOI TRT BYTE. * * ENTRY (T9) = TRACK NUMBER TO BEGIN SEARCH. * * EXIT (A) = 0 IF NO EOI BYTE FOUND. * (T6) = TRACK NUMBER CONTAINING EOI BYTE, IF FOUND. * (T9) = UPDATED TO BEGIN NEXT SEARCH. * * USES T2. * * CALLS FTP. FEB SUBR ENTRY/EXIT LDN 0 STD T2 LDD T9 RJM FTP ZJN FEBX IF NO *EOI* FOUND ADN 1 STD T9 UJN FEBX RETURN FFT SPACE 4,10 ** FFT - FIND FIRST TRACK LINK. * * ENTRY (T6) = TRACK NUMBER TO LINK BACK TO *BOI*. * * EXIT (A) = (MT) = (T6) = TRACK NUMBER OF FIRST TRACK. * * USES MT, T2, T6. * * CALLS FTP. FFT SUBR ENTRY/EXIT FFT1 LDD T6 STD T2 LDN 0 BEGIN SEARCH FROM BEGINNING OF TRT RJM FTP NJN FFT1 IF FIRST LINK NOT FOUND LDD T6 SAVE FIRST TRACK NUMBER STD MT UJN FFTX RETURN FTP SPACE 4,15 ** FTP - FIND TRT BYTE PATTERN. * * ENTRY (A) = TRACK NUMBER IN TRT TO BEGIN WITH. * (T2) = PATTERN TO FIND IN TRT BYTES. * * EXIT (A) = (T6) = TRACK NUMBER OF PATTERN MATCH. * (EI) = *EOI* SECTOR NUMBER, IF FOUND AS MATCH. * (T8) = BYTE NUMBER IN TRT WORD. * * USES EI, T1, T2, T6, T8, CM - CM+4. FTP SUBR ENTRY/EXIT STD T6 LPN 3 CALCULATE FIRST OFFSET ADN CM STD T1 LDD T6 CALCULATE TRT WORD OFFSET LPC 3777 SHN -2 STD T6 FTP1 LDC ** READ TRT WORD FTPA EQU *-1 ADD T6 CRD CM FTP2 LDI T1 SHN 21-13 PJN FTP4 IF *EOI* BYTE SHN 21+1-21+13 LMD T2 ZJN FTP5 IF PATTERN MATCH FTP3 AOD T1 SBN CM+4 NJN FTP2 IF NOT THROUGH ALL TRT BYTES LDN CM STD T1 LDC ** CHECK IF DONE WITH TRT FTPB EQU *-1 (NUMBER OF WORDS IN TRT) SBD T6 ZJN FTPX IF NO PATTERN MATCH FOUND AOD T6 INCREMENT TRT WORD OFFSET UJN FTP1 CONTINUE SEARCHING TRT FTP4 LDD T2 NJN FTP3 IF NOT SEARCHING FOR *EOI* LDI T1 SAVE *EOI* SECTOR NUMBER STD EI FTP5 LDD T1 CONSTRUCT TRACK NUMBER SBN CM STD T8 SAVE BYTE NUMBER IN TRT WORD SHN 21-2 ADD T6 SHN 2 ADC 4000 STD T6 LJM FTPX RETURN PCV SPACE 4,20 ** PCV - PRESET CONDITIONS FOR *VTE*. * * ENTRY (ES - ES+4) = EST ENTRY. * * EXIT (FTPB) = TRT LENGTH IN CM WORDS. * * USES CM - CM+4, CN - CN+4. * * CALLS IRA. PCV SUBR ENTRY/EXIT RJM IRA SET ADDRESSES LDD ES+4 SHN 3 ADK TDGL GET TRT LENGTH CRD CN ADN TRLL-TDGL GET TRT FWA CRD CM LDD CN+2 STM FTPB LDD CM+4 PRESET TRT ADDRESS STM CMIB+1 STM FTPA LDD CM+3 LPN 77 LMC LDCI STM CMIB STM FTPA-1 UJP PCVX RETURN QUAL * OVERFLOW OVLA,BFMS TITLE END