IDENT 6DI,MSFW 7155-7154-7054/885-844 MAIN DRIVER. HN MICRO 1,,+*LDAM* DEVICE+ PERIPH J BASE MIXED SST *COMMENT 6DI - "HN" MAIN DRIVER. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. TITLE 6DI - "HN" DRIVER. SPACE 4 *** 6DI - 7155-7154-7054/885-844 DRIVER. * R. J. THIELEN. 75/11/20. * W. E. GOEBEL. 78/01/24. SPACE 4 *** 6DI PROVIDES THE CAPABILITY TO ACCESS THE 885 AND * 844-44 OR 844-41 DRIVES THROUGH THE 7155 CONTROLLER. * 6DI ALSO PROVIDES THE CAPABILITY TO ACCESS 844-21, 844-44, * 844-41 DISK DRIVES THROUGH EITHER A 7054 OR 7154 CONTROLLER. * FULL TRACKING OPERATIONS ARE ALLOWED ONLY THROUGH THE 7155 * AND 7154 CONTROLLERS. * * ACCESS TO FSC 3330 AND 3350 DRIVES IN FULL TRACK MODE * IS PROVIDED THROUGH THE FSC CHANNEL ADAPTOR. * * 834 AND 836 DRIVES ARE ACCESSED THROUGH A 7255 * CHANNEL ADAPTOR WHICH HAS A 7155 COMPATIBLE INTERFACE. THEY * MAY ONLY BE ACCESSED IN FULL TRACK MODE. * * CDSS SUBSYSTEMS ARE ACCESSED THROUGH A 7155 COMPATIBLE * CONTROLLER WHICH IS INCLUDED IN THE SUBSYSTEM. THEY MAY ONLY * BE ACCESSED IN FULL TRACK MODE. SPACE 4 *** ORGANIZATION OF 7155/885. * * UP TO THREE 885 UNITS CAN BE COMBINED TO FORM A * LOGICAL DEVICE. * * EQUIPMENT TYPE = *DM*. * * SECTORS/TRACK = 640. * * TRACKS/UNIT = 1682. * * WORDS/UNIT = 68,894,720. * * UNITS/DEVICE = 1-3. * * WORDS/DEVICE = 68,894,720 - 206,684,160. * * MAXIMUM DATA RATE = 61.44 K WORDS/SECOND. * * * EQUIPMENT TYPE = *DQ*. * * SECTORS/TRACK = 640. * * TRACKS/UNIT = 1682. * * WORDS/UNIT = 68,894,720. * * UNITS/DEVICE = 1-3. * * WORDS/DEVICE = 68,894,720 - 206,684,160. * * MAXIMUM DATA RATE = 122.88 K WORDS/SECOND. SPACE 4 *** ORGANIZATION OF 7X5X/844-XX. * * UP TO EIGHT 844-XX UNITS CAN BE COMBINED TO FORM A * LOGICAL DEVICE. * * EQUIPMENT TYPE = *DI*. * * SECTORS/TRACK = 107. * * TRACKS/UNIT = 1632. * * WORDS/UNIT = 11,175,936. * * UNITS/DEVICE = 1-8. * * WORDS/DEVICE = 11,175,936 - 89,407,488. * * MAXIMUM DATA RATE = 46.08 K WORDS/SECOND. * * * EQUIPMENT TYPE = *DJ*. * * SECTORS/TRACK = 227. * * TRACKS/UNIT = 1640. * * WORDS/UNIT = 23,825,920. * * UNITS/DEVICE = 1-8. * * WORDS/DEVICE = 23,825,920 - 190,607,360. * * MAXIMUM DATA RATE = 46.08 K WORDS/SECOND. * * * EQUIPMENT TYPE = *DK*. * * SECTORS/TRACK = 112. * * TRACKS/UNIT = 1632. * * WORDS/UNIT = 11,698,176. * * UNITS/DEVICE = 1-8. * * WORDS/DEVICE = 11,698,176 - 93,585,408. * * MAXIMUM DATA RATE = 92.16 K WORDS/SECOND. * * * EQUIPMENT TYPE = *DL*. * * SECTORS/TRACK = 227. * * TRACKS/UNIT = 1640. * * WORDS/UNIT = 23,825,920. * * UNITS/DEVICE = 1-8. * * WORDS/DEVICE = 24,825,920 - 190,607,360. * * MAXIMUM DATA RATE = 92.16 K WORDS/SECOND. SPACE 4,10 *** ORGANIZATION OF FSC DEVICES. * * * MODEL = 3330-1. * * EQUIPMENT TYPE = *DX*. * * SECTORS/TRACK = 98. * * TRACKS/UNIT = 1632. * * WORDS/UNIT = 10,235,904. * * UNITS/DEVICE = 1-8. * * WORDS/DEVICE = 10,235,904 - 81,887,232. * * MAXIMUM DATA RATE = 80.64 K WORDS/SECOND. * * * MODEL = 3330-11. * * EQUIPMENT TYPE = *DY*. * * SECTORS/TRACK = 198. * * TRACKS/UNIT = 1624. * * WORDS/UNIT = 20,579,328. * * UNITS/DEVICE = 1-8. * * WORDS/DEVICE = 20,579,328 - 164,634,624. * * MAXIMUM DATA RATE = 80.64 K WORDS/SECOND. * * * MODEL = 3350. * * EQUIPMENT TYPE = *DZ*. * * SECTORS/TRACK = 420. * * TRACKS/MODULE = 1116. * * WORDS/MODULE = 30,051,840. * * MODULE/DEVICE = 1-4. * * WORDS/DEVICE = 30,051,840 - 120,207,360. * * MAXIMUM DATA RATE = 107.52 K WORDS PER SECOND. * * * MODEL = 33502. * * EQUIPMENT TYPE = *DA*. * * SECTORS/TRACK = 840. * * TRACKS/MODULE = 1116. * * WORDS/MODULE = 30,051,840. * * MODULE/DEVICE = 1-2. * * WORDS/DEVICE = 60,103,680 - 120,207,360. * * MAXIMUM DATA RATE = 107.52 K WORDS PER SECOND. SPACE 4,10 *** ORGANIZATION OF 834 DEVICES. * * UP TO EIGHT 834 PHYSICAL UNITS MAY BE COMBINED TO FORM A * LOGICAL DEVICE. * * EQUIPMENT TYPE = *DD*. * * SECTORS/TRACK = 160. * * TRACKS/UNITS = 1628. * * WORDS/UNIT = 16,670,720. * * UNITS/DEVICE = 1-8. * * WORDS/DEVICE = 16,670,720 - 133,365,760. * * MAXIMUM DATA RATE = 122.88 K WORDS/SECOND. SPACE 4,10 *** ORGANIZATION OF 836 DEVICES. * * UP TO THREE 836 PHYSICAL UNITS MAY BE COMBINED TO FORM A * LOGICAL DEVICE. * * EQUIPMENT TYPE = *DG*. * * SECTORS/TRACK = 564. * * TRACKS/UNIT = 1398. * * WORDS/UNIT = 50,462,208. * * UNITS/DEVICE = 1-3. * * WORDS/DEVICE = 50,462,208 - 151,386,624. * * MAXIMUM DATA RATE = 122.88 K WORDS/SECOND. SPACE 4 *** ORGANIZATION OF CDSS II DEVICES. * * ONE CDSS II UNIT FORMS A SINGLE LOGICAL DEVICE. * * EQUIPMENT TYPE = *DR*. * * SECTORS/TRACK = 640. * * TRACKS/UNIT = 123,640. * * WORDS/UNIT = 253,229,056. * * UNITS/DEVICE = 1. * * WORDS/DEVICE = 253,229,056. SPACE 4 ** ENTRY CONDITIONS. * * * (T4) = CHANNEL IF PREVIOUSLY RESERVED. * (T5) = EST ORDINAL. * (T6) = TRACK. * (T7) = SECTOR. SPACE 4 RICHI$ EQU 1 SELECT DEFERRED INSTRUCTION REDEFINITION RICHL$ EQU 1 RIREL$ EQU 1 *CALL COMPMAC *CALL COMPCHI *CALL COMPCHL *CALL COMPREL *CALL COMSCPS *CALL COMSDFS *CALL COMSEVT LIST X *CALL COMSMSP LIST * *CALL COMSPIM *CALL COMSZOL *CALL COMS1DS SPACE 4,20 ** DRIVER FUNCTION CODES. FCCN EQU 0 CONNECT FUNCTION CODE FCS1 EQU 1 SEEK 1 TO 1 INTERLACE FCS2 EQU 2 SEEK 2 TO 1 INTERLACE FCRD EQU 4 READ FUNCTION CODE FCWR EQU 5 WRITE FUNCTION CODE FCOC EQU 10 OPERATION COMPLETE FUNCTION CODE FCGR EQU 11 DISABLE RESERVES - GRENADE FCGS EQU 12 GENERAL STATUS FUNCTION CODE FCCO EQU 14 CONTINUE FUNCTION CODE FCDK EQU 15 DROP SEEKS FCDR EQU 20 DRIVE RELEASE FCDS EQU 23 DETAILED STATUS FUNCTION CODE FCRF EQU 30 READ FACTORY DATA FUNCTION CODE FCRU EQU 31 READ UTILITY SECTOR FUNCTION CODE FCRP EQU 34 READ PROTECTED SECTOR FCWL EQU 35 WRITE LAST SECTOR FCWP EQU 37 WRITE PROTECTED SECTOR FCRB EQU 43 READ BACK COUPLER BUFFER FCST EQU 52 INPUT PROCESSOR STATUS FCSU EQU 55 SPIN UP AN ISD DRIVE FCSD EQU 56 SPIN DOWN AN ISD DRIVE FCTD EQU 56 INPUT TIMING DATA FCDP EQU 61 AUTODUMP FCMP EQU 62 MANIPULATE PROCESSOR FCID EQU 63 INPUT DISPLAY DATA FCFT EQU 64 FUNCTION TIMING DIFFERENCE COUNTER FCLC EQU 71 AUTOLOAD CONTROL MODULE FROM PP FCAL EQU 414 AUTOLOAD FUNCTION CODE SPACE 4 ** ASSEMBLY CONSTANTS. DSLN EQU 24 DETAILED STATUS LENGTH FRNW EQU 3 FIRMWARE REVISION NUMBER WORD ARNW EQU 20 FSC ADAPTOR REVISION NUMBER WORD CMNW EQU 21 CONTROL MODULE REVISION NUMBER WORD CH EQU 0 MASS STORAGE CHANNEL DEC MICRO 1,, 6DI DECK NAME TITLE 6DI - MAIN DRIVER. * REDEFINE CHANNEL INSTRUCTIONS TO PRODUCE CHANNEL TABLE. RICHI REDEFINE CHANNEL INSTRUCTIONS SPACE 4 ORG MSFW SPACE 4 * ENTRY POINT TRANSFERS. CON PRS PRESET ADDRESS RDS CON 0 ENTRY UJN RDS. READ SECTOR WDS CON 0 ENTRY UJN WDS. EMS SPACE 4,10 ** EMS - END MASS STORAGE PROCESSING. * * ENTRY (T4) = CHANNEL, IF PREVIOUSLY RESERVED. * (T5) = EQUIPMENT. * * EXIT (A) = 0. * * NOTE - THE *.EMS* ENTRY POINT IS SUPPORTED ONLY VIA THE * *ENDMS* MACRO DEFINED IN *COMPMAC*. IF THIS LOCATION * CHANGES, THE DEFINITION OF *.EMS* MUST BE CHANGED IN * *PPCOM* AND ALL PROGRAMS USING THE *ENDMS* * MACRO MUST BE REASSEMBLED. .EMS SUBR ENTRY/EXIT LDN 0 STD CM+3 STI D1 SET POSITION REQUIRED RJM DSW DROP CHANNEL VIA *DSWM* UJN .EMSX RETURN RDS SPACE 4 ** RDS - READ SECTOR. * * ENTRY (A) = BUFFER ADDRESS FOR SECTOR. * * EXIT (A) .LT. 0 IF UNRECOVERED ERROR AND READ ERROR * PROCESSING SELECTED. * * CALLS DST, FNC, LDA. RDS. STM RDSB SET BUFFER ADDRESS * THE CODE BETWEEN *RDSC* AND *RDSA* IS OVERLAID TO MEASURE * THE SERVO TIMING. *0SI* MEASURES THE SERVO * TIMING AND OVERLAYS *RDS*. RDSC BSS 0 * THE FOLLOWING CODE MUST BE DUPLICATED IN BOTH *RDS* AND * *WDS* BECAUSE OF TIMING CONSTRAINTS FOR THE 885. SOI D1 MJN RDS1 IF POSITION REQUIRED ADD T7 LMM WDSA ZJN RDS2 IF CONSECUTIVE SECTORS RDS1 RJM LDA LOAD ADDRESS AND ISSUE POSITION RDS2 LDN FCRD NORMAL READ RDSA EQU *-1 * LDN FCRU READ UTILITY SECTOR * LDN FCRF READ FACTORY DATA * LDN FCDS (READING DETAILED STATUS) * LDN FCTD (PERFORMING SERVO ADJUSTMENT FOR 885) * UJN RDS4 (ISSUING DISABLE RESERVES) * ENTERED HERE FROM *7SI* TO ISSUE CONTINUE FUNCTION. * ENTERED HERE TO READ BACK COUPLER BUFFER ON FULL TRACK * WRITE BUFFER TO DISK ERROR. RDS3 RJM FNC IAM *,CH RDSB EQU *-1 RDS3.1 NJN WDS5 IF TRANSFER NOT COMPLETE * LJM DEI6.0 (IF COUPLER READ BACK) RDSD EQU *-1 RDS4 LDM RDS SFM LDA8,CH IF CHANNEL PARITY ERROR (LOWER 800 SERIES) UJN DST1 CHECK STATUS WDS SPACE 4 ** WDS - WRITE SECTOR. * * ENTRY (A) = BUFFER ADDRESS FOR SECTOR. * * EXIT (A) = 0 IF NO ERROR. * (A) = -0 IF UNRECOVERED ERROR AND WRITE ERROR * PROCESSING SELECTED. * (A) .EQ. -1 IF UNRECOVERED ERROR ON PREVIOUS SECTOR, * NO WRITE ERROR PROCESSING BUFFER SPECIFIED IN *WDSE* * AND WRITE ERROR PROCESSING SELECTED. * * CALLS DST, FNC, LDA. WDS. STM WDSC SET BUFFER ADDRESS SHN -14 STM WDSB SET WRITE LAST SECTOR * THE FOLLOWING CODE MUST BE DUPLICATED IN BOTH *RDS* AND * *WDS* BECAUSE OF TIMING CONSTRAINTS FOR THE 885. SOI D1 MJN WDS1 IF POSITION REQUIRED ADD T7 LMC * WDSA EQU *-1 ZJN WDS2 IF CONSECUTIVE SECTORS WDS1 RJM LDA LOAD ADDRESS AND ISSUE POSITION WDS2 LDI D1 CHECK END OF UNIT/TRACK * LJM /0SD/SUE2 (SPINNING DOWN AN ISD DRIVE) * LJM /0SD/SUE4 (SPINNING UP AN ISD DRIVE) ZJN WDS3 IF END OF UNIT/TRACK LDC 0 WDSB EQU *-1 WDS3 LMN FCWL WRITE LAST SECTOR * ENTERED HERE FROM *7SI* TO ISSUE CONTINUE FUNCTION. * ENTERED HERE FROM *0SD* TO ISSUE SPINUP/SPINDOWN FUNCTION. WDS4 RJM FNC OAM *,CH WDSC EQU *-1 WDS5 NJN LDA9 IF INCOMPLETE TRANSFER WDSD LDM WDS * LDC /0SD/SUE4 (SPINNING UP/DOWN AN ISD DRIVE) * UJN DST PROCESS STATUS DST SPACE 4 ** DST - DEVICE STATUS. * WAITS FOR CHANNEL EMPTY, THEN DISCONNECTS. * * ENTRY (A) = EXIT ADDRESS. * * EXIT (A) = 0 AND EXIT TO EXIT ADDRESS IF NO STATUS ERROR. * EXIT TO LDA1 IF STATUS ERROR. DST FJM *,CH DCN CH+40 DST1 STD CM SAVE EXIT ADDRESS * THE *7155* CONTROLLER CANNOT ACCEPT THE GENERAL STATUS * FUNCTION FOR 5 MICRO SECONDS AFTER THE DATA TRANSFER * IS COMPLETE FOR READS AND 10 MICRO SECONDS FOR WRITE. * IN ORDER TO MAKE USE OF THIS TIMING CONSTRAINT THE EXIT * ADDRESS IS AN ENTRY CONDITION TO *DST*, WHICH IS STORED * IN THE EXIT INSTRUCTION DURING THE CONTROLLER OVERHEAD * PERIOD AFTER THE DATA TRANSFER. THIS ALLOWS THE SHORTEST * DELAY POSSIBLE TO RETURN TO THE CALLER AFTER GENERAL * STATUS IS RECEIVED. GENERAL STATUS IS PERFORMED AS AN * IN LINE OPERATION TO MINIMIZE OVERHEAD TIME FOR THE * *7155* CONTROLLER. LDN FCGS GET GENERAL STATUS RJM FNC ISSUE FUNCTION IAN CH+40 SFM LDA8,CH IF CHANNEL PARITY ERROR (800 SERIES) DSTA NJN LDA3 IF ERRORS * LJM /0SD/CGS (SPINNING UP/DOWN AN ISD DRIVE) DSTB LJM 0,CM RETURN * LJM /0SC/SCP8 (SWEEP CYCLING) LDA SPACE 4,10 ** LDA - LOAD ADDRESS. * * ENTRY (T5) = EQUIPMENT. * (T6) = TRACK. * (T7) = SECTOR. * * ENTRY LDA3 = ENTRY POINT TO PROCESS GENERAL STATUS ERRORS. * LDA2 = ENTRY POINT TO JUMP TO ERROR PROCESSOR. * * USES CM - CM+4. * * CALLS DST, DSW, FNC. * * MACROS MONITOR. LDA8 LCN CHPE SET CHANNEL PARITY ERROR FLAG LDA9 LJM DSW7 CALL ERROR PROCESSOR LDA CON 0 ENTRY * REENTER HERE ON ERROR RETRY. * COMPUTE PHYSICAL ADDRESS. LDA1 LDD OA WAIT OUTPUT REGISTER CLEAR CRD CM LDD CM NJN LDA1 IF NOT CLEAR STD CM+1 INDICATE A STANDARD SEEK LDD MA CWD T4 MONITOR LDAM CONVERT LOGICAL TO PHYSICAL ADDRESS SOD CM+4 SET UNIT SWITCH COUNTER STI D1 ADD T7 SET CONSECUTIVE SECTOR COUNT STM WDSA UJN LDA4 CHECK FOR SEEK WAIT NEEDED * ENTER HERE TO PROCESS GENERAL STATUS ERRORS. * *DSW* WILL DETERMINE IF STATUS REQUIRES AN ERROR PROCESSOR * CALL OR A SEEK WAIT MONITOR FUNCTION. LDA3 STD CM+3 SAVE STATUS LDA4 RJM DSW DRIVER SEEK WAIT PROCESSING LDD CM+2 ZJN LDA5 IF CONTROLLER PREVIOUSLY RESERVED RJM FNC IAN CH+40 SFM LDA8,CH IF CHANNEL PARITY ERROR (800 SERIES) LPC 2000 NJN LDA3 IF CONTROLLER RESERVED LDN 11-1 SET CONNECTED STATUS IN CHRV RAM CHRV LDA5 LDD MA READ SEEK PARAMETERS * LJM RDS2 (GET DETAILED STATUS FOR *0CI*) LDAC EQU *-1 ADN 1 CRD CM LDAA LDN 0 SEEK FUNCTION * LDN FCS1 (SEEK 1 TO 1 INTERLACE) * LDN FCS2 (SEEK 2 TO 1 INTERLACE) * LDN FCGR (ISSUING DISABLE RESERVES) RJM FNC LDAB LDN 4 * UJN LDA7 (ISSUING DISABLE RESERVES) OAM CM+1,CH OUTPUT UNIT, CYLINDER, TRACK AND SECTOR LDA6 NJN ERR IF ERROR LDA7 LDM LDA LJM DST CHECK STATUS FNC SPACE 4,15 ** FNC - FUNCTION DEVICE. * * ENTRY (A) = FUNCTION CODE. * * EXIT (A) = 502, IF NORMAL FUNCTION. * = *DSLN*, IF READING DETAILED STATUS. * = 2, IF PERFORMING SERVO ADJUSTMENT FOR 885. * = 1, IF SPINNING UP/DOWN AN ISD DRIVE. * FUNCTION ISSUED. * CHANNEL ACTIVATED. * * CALLS ERR. FNC4 ACN CH LDC 502 FULL BUFFER WORD COUNT FNCA EQU *-1 * LDC DSLN (READING DETAILED STATUS) * LDC 2 (PERFORMING SERVO ADJUSTMENT FOR 885) * LDC 1 (SPINNING UP/DOWN AN ISD DRIVE) FNC SUBR ENTRY/EXIT FNC1 AJM ERR,CH IF CONTROLLER NOT READY FNCC FAN CH * THE FOLLOWING DELAY MUST ALLOW AT LEAST 15 SECONDS. LDD HN STD T0 FNC2 ADD ON ENSURE DELAY IS SATISIFIED FNCB IJM FNC4,CH IF FUNCTION ACCEPTED NJN FNC2 IF INNER TIMEOUT LOOP NOT YET COMPLETE SOD T0 NJN FNC2 IF NOT YET TIMED OUT * UJN ERR PROCESS ERROR ERR SPACE 4,10 ** ERR - CALL *7BI*. ERR MSERR 7BI,* LJM LEP1 CALL ERROR PROCESSOR * LJM DCI8 (DURING *7CI* PROCESSING) * LJM DEI6.1 (DURING *7EI* PROCESSING) * LJM FTO13 (DURING *7FI* PROCESSING) * LJM FTO16 (DURING *7FI* PROCESSING) * LJM DCP3 (DURING *7GI* PROCESSING) * LJM DCP5 (DURING *7GI* PROCESSING) * LJM EXD4 (DURING *7KI* PROCESSING) * LJM EXD11 (DURING *7KI* PROCESSING) * LJM /0SC/SCP9 (SWEEP CYCLING) ERRA EQU *-1 EXIT ADDRESS DSW SPACE 4,30 ** DSW - DRIVER SEEK WAIT PROCESSING. * * ENTRY (CM+3) = SEEK WAIT FUNCTION. THE FOLLOWING IS A LIST * OF THE POSSIBLE VALUES AND THEIR ORIGIN. * 0 = CHANNEL RELEASE REQUEST. *ENDMS REQUEST* * 2 = SEEK IN PROGRESS. *CONTROLLER STATUS* * 4 = STORAGE MOVE REQUESTED OR *LDAM STATUS* * UNIT SWITCH REQUESTED. *LDAM STATUS* * 10 = DRIVE RESERVED. *CONTROLLER STATUS* * 11 = REQUEST CHANNEL AND UNIT. *LDAM STATUS* * 2000 = CONTROLLER RESERVED. *CONTROLLER STATUS* * 4XXX = ERROR STATUS. *CONTROLLER STATUS* * 5XXX = ERROR STATUS. *CONTROLLER STATUS* * 77YY = ERROR STATUS. *LDAM STATUS* * YY = COMPLIMENT OF ERROR CODE. * (CHRV) = DRIVER CONTROL WORD. SEE *COMSMSP*. * * EXIT (A) = 0. * (T4) = CHANNEL. * (T5) = SYSTEM DEVICE SELECTED WHEN APPROPRIATE. * * USES CM - CM+4. * * MACROS MONITOR. DSW4 FNC FCOC,CH+40 ISSUE RELEASE FUNCTION DSWD EQU *-1 * FNC FCDR,CH+40 A DRIVE RELEASE FUNCTION IS ISSUED AS * OPPOSED TO THE OPERATION COMPLETE WHEN * A SEEK OPERATION IS OUTSTANDING ON A * SHARED DRIVE THROUGH THE SAME CHANNEL. * THE ISSUING OF THE DRIVE RELEASE PREVENTS * ANOTHER MACHINE FROM ACCESSING, THROUGH * THE SAME CONTROLLER, THE DRIVE THAT HAS * THE SEEK INITIATED. LDD HN STD T0 DSW5 IJM DSW2,CH IF FUNCTION ACCEPTED ADD ON ENSURE DELAY IS SATISIFIED NJN DSW5 IF INNER TIMEOUT LOOP NOT YET COMPLETE SOD T0 NJN DSW5 IF NOT YET TIMED OUT UJN DSW2 ISSUE DRIVER SEEK WAIT DSW SUBR ENTRY/EXIT LDM CHRV CHECK CHANNEL RESERVATION STD CM LPN 11 DSW1 LMD CM+3 ZJN DSWX IF NO *DSWM* NEEDED DSWB SCN 77 * SCN 75 (SHARED DEVICE - NO RELEASE AFTER SEEK) SHN 21-13 NJN DSW6 IF NO RELEASE OR ERROR LDD CM LPN 10 NJN DSW4 IF CONNECTED ISSUE RELEASE DSW2 LDD MA WRITE MESSAGE BUFFER PARAMETERS CWD T4 MONITOR DSWM DRIVER SEEK WAIT * LDN 0 DSW3 RAI T0 MODIFY CHANNEL INSTRUCTIONS LDM TCHA,CM STD T0 AOD CM LDD CM+4 DSWA SBN CH NJN DSW3 IF MORE CHANNEL INSTRUCTIONS TO MODIFY LDD MA SET T4, T5, AND CM CRD T4 LDD CM+1 SET RELEASE CODE STM DSWD LDD CM SET CHANNEL STATUS STM CHRV UJN DSW1 CHECK FOR ERROR DSW6 PJN DSW2 IF NO ERROR LDD CM+3 SET ERROR CODE DSW7 STI D1 LJM ERR PROCESS ERROR TCHS SPACE 4,10 ** TCHA - TABLE OF CHANNEL INSTRUCTION ADDRESSES. CHTL DSWA TERMINATE CHANNEL TABLE TCHA CHTB RSTC RESTORE CHANNEL INSTRUCTIONS PRS SPACE 4,10 ** PRS - PRESET. * * ENTRY (CM - CM+4) = *EQDE* WORD OF EST ENTRY. * * EXIT SEEK FUNCTION SELECTED. * SELECTION MADE FOR DRIVE RELEASE AFTER SEEK. PRS LDM STSB SET SEEK FUNCTION ADK LDNI+FCS1-2000 STM LDAA LDI D1 STM DSWB LDN 0 INITIALIZE UNIT SWITCH COUNTER STI D1 LJM SMSX RETURN SPACE 4 .1 SET *+4-MSFW CHECK FOR OVERFLOW .1 SET .1/5 .1 SET MSFW+.1*5 .2 SET PPFW-5-* BYTES AVAILABLE BEFORE OVERFLOW ERRNG PPFW-5-.1 DRIVER OVERFLOWS INTO *PPFW*-5 TITLE 6DJ - ISD DISK DRIVER. IDENT 6DJ,MSFW ISD DISK DRIVER. *COMMENT 6DI - ISD DISK DRIVER. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. SPACE 4,10 *** 6DJ - ISD DISK DRIVER. * * K. F. REHM. 85/03/11. SPACE 4,15 *** *6DJ* ALLOWS ACCESS TO ISD (834 AND 836) DRIVES ONLY. * IT PROVIDES IMPROVED DISK PERFORMANCE OVER *6DI* BY MAKING * SEVERAL CHANGES TO THE DATA TRANSFER PROTOCOL. *6DJ* CAUSES * *CPUMTR* TO PASS THE DIRECTION OF THE DISK TRANSFER (READ OR * WRITE) IN PREVIOUSLY UNUSED BITS IN THE SEEK PARAMETER WORDS. * THIS ALLOWS THE ADAPTER TO REDUCE SOME OF THE OVERHEAD IN ITS * COMMUNICATIONS WITH THE CONTROL MODULE AND ALLOWS THE PP TO * GIVE UP THE CHANNEL UNTIL DATA IS AVAILABLE IN THE CONTROL * MODULE-S BUFFER, EFFECTIVELY OVERLAPPING DISK LATENCY TIME. * *6DJ* ALSO GIVES UP THE CHANNEL AFTER A *WLSF* IF THE LAST * SECTOR WRITTEN HAS NOT YET ARRIVED ON DISK. THIS ALLOWS * OTHER PP-S TO USE THE CHANNEL WHILE THE CONTROL MODULE * FINISHES WRITING THE SECTOR. FOR NON-PERFORMANCE CRITICAL * DATA TRANSFERS SUCH AS READING THE PACK SERIAL NUMBER, THE * REGULAR *6DI* DRIVER IS USED INSTEAD. * * *6DJ* USES ALL THE SAME MASS STORAGE OVERLAYS AS * *6DI*. SINCE THE OVERLAYS OFTEN READ FROM OR MODIFY THE * RESIDENT DRIVER, MANY OF THE SUBROUTINE TAGS IN *6DJ* MUST * BE DEFINED AT THE SAME ADDRESS AS THOSE IN *6DI*. THOSE * TAGS IN *6DJ* WHICH DO NOT NEED TO BE IN LINE WITH THEIR * *6DI* COUNTERPARTS HAVE A *.J* APPENDED TO THEM TO PREVENT * ASSEMBLY ERRORS. SPACE 4,10 ** ENTRY CONDITIONS. * * (T4) = CHANNEL IF PREVIOUSLY RESERVED. * (T5) = EST ORDINAL. * (T6) = TRACK. * (T7) = SECTOR. SPACE 4,10 * REDEFINE CHANNEL INSTRUCTIONS TO PRODUCE CHANNEL TABLE. RICHI REDEFINE CHANNEL INSTRUCTIONS SPACE 4 ORG MSFW SPACE 4 * ENTRY POINT TRANSFERS. CON PRS PRESET *6DJ* RDS CON 0 ENTRY UJN RDS. READ SECTOR WDS CON 0 ENTRY UJN WDS. WRITE SECTOR EMS SPACE 4,10 ** EMS - END MASS STORAGE PROCESSING. * * ENTRY (T4) = CHANNEL, IF PREVIOUSLY RESERVED. * (T5) = EQUIPMENT. * * EXIT (A) = 0. * * NOTE - THE *.EMS* ENTRY POINT IS SUPPORTED ONLY VIA THE * *ENDMS* MACRO DEFINED IN *COMPMAC*. IF THIS LOCATION * CHANGES, THE DEFINITION OF *.EMS* MUST BE CHANGED IN * *PPCOM* AND ALL PROGRAMS USING THE *ENDMS* * MACRO MUST BE REASSEMBLED. .EMS SUBR ENTRY/EXIT LDN 0 STD CM+3 STI D1 SET POSITION REQUIRED RJM DSW DROP CHANNEL VIA *DSWM* UJN .EMSX RETURN RDS SPACE 4,10 ** RDS - READ SECTOR. * * ENTRY (A) = BUFFER ADDRESS FOR SECTOR. * * EXIT (A) .LT. 0 IF UNRECOVERED ERROR AND READ ERROR * PROCESSING SELECTED. * * CALLS DST, FNC, LDA. RDS. STM RDSB SET BUFFER ADDRESS SOI D1 MJN RDS1 IF POSITION REQUIRED ADD T7 LMM WDSA ZJN RDS2 IF CONSECUTIVE SECTORS RDS1 RJM LDA LOAD ADDRESS AND ISSUE POSITION RDS2 LDN FCRD NORMAL READ ERRNZ RDS2-.RDS2 ENSURE ADDRESS IS CORRECT FOR *LDAM* CHECK * ENTERED HERE FROM *7SI* TO ISSUE CONTINUE FUNCTION. * ENTERED HERE TO READ BACK COUPLER BUFFER ON FULL TRACK * WRITE BUFFER TO DISK ERROR. RDS3 RJM FNC IAM *,CH RDSB EQU *-1 NJN WDS5 IF TRANSFER NOT COMPLETE SFM LDA8,CH IF CHANNEL PARITY ERROR (LOWER 800 SERIES) LDM RDS UJN DST1 CHECK STATUS WDS SPACE 4,10 ** WDS - WRITE SECTOR. * * ENTRY (A) = BUFFER ADDRESS FOR SECTOR. * * EXIT (A) = 0 IF NO ERROR. * (A) = -0 IF UNRECOVERED ERROR AND WRITE ERROR * PROCESSING SELECTED. * (A) .EQ. -1 IF UNRECOVERED ERROR ON PREVIOUS SECTOR, * NO WRITE ERROR PROCESSING BUFFER SPECIFIED IN *WDSE* * AND WRITE ERROR PROCESSING SELECTED. * * CALLS DST, FNC, LDA. WDS. STM WDSC SET BUFFER ADDRESS SHN -14 STM WDSB SET WRITE LAST SECTOR SOI D1 MJN WDS1 IF POSITION REQUIRED ADD T7 LMC * WDSA EQU *-1 ZJN WDS2 IF CONSECUTIVE SECTORS WDS1 RJM LDA LOAD ADDRESS AND ISSUE POSITION WDS2 LDI D1 CHECK END OF UNIT/TRACK ZJN WDS3 IF END OF UNIT/TRACK LDC 0 WDSB EQU *-1 WDS3 LMN FCWL WRITE LAST SECTOR * ENTERED HERE FROM *7SI* TO ISSUE CONTINUE FUNCTION. WDS4 RJM FNC OAM *,CH WDSC EQU *-1 WDS5 NJN LDA9 IF INCOMPLETE TRANSFER LDM WDS * UJN DST PROCESS STATUS DST SPACE 4,10 ** DST - DEVICE STATUS. * WAITS FOR CHANNEL EMPTY, THEN DISCONNECTS. * * ENTRY (A) = EXIT ADDRESS. * * EXIT (A) = 0 AND EXIT TO EXIT ADDRESS IF NO STATUS ERROR. * EXIT TO LDA1 IF STATUS ERROR. DST FJM *,CH IF LAST WORD NOT YET TAKEN DCN CH+40 DST1 STD CM SAVE EXIT ADDRESS ERRNZ DST1-.DST1 ENSURE ADDRESS IS CORRECT FOR *1MS* JUMP LDN FCGS GET GENERAL STATUS RJM FNC ISSUE FUNCTION IAN CH+40 SFM LDA8,CH IF CHANNEL PARITY ERROR (800 SERIES) NJN LDA3.J IF ERRORS LJM 0,CM RETURN LDA SPACE 4,10 ** LDA - LOAD ADDRESS. * * ENTRY (T5) = EQUIPMENT. * (T6) = TRACK. * (T7) = SECTOR. * * ENTRY LDA3 = ENTRY POINT TO PROCESS GENERAL STATUS ERRORS. * LDA2 = ENTRY POINT TO JUMP TO ERROR PROCESSOR. * * USES CM - CM+4. * * CALLS DST, DSW, FNC. * * MACROS MONITOR. LDA8 LCN CHPE SET CHANNEL PARITY ERROR FLAG LDA9 LJM DSW7A CALL ERROR PROCESSOR LDA CON 0 ENTRY * REENTER HERE ON ERROR RETRY. * COMPUTE PHYSICAL ADDRESS. LDA1 LDD OA WAIT OUTPUT REGISTER CLEAR CRD CM LDD CM NJN LDA1 IF NOT CLEAR LDD MA CWD T4 LDM LDA PASS READ/WRITE FLAG TO *CPUMTR* STD CM+1 MONITOR LDAM CONVERT LOGICAL TO PHYSICAL ADDRESS SOD CM+4 SET UNIT SWITCH COUNTER STI D1 ADD T7 SET CONSECUTIVE SECTOR COUNT STM WDSA UJN LDA4.J CHECK FOR SEEK WAIT NEEDED * ENTER HERE TO PROCESS GENERAL STATUS ERRORS. * *DSW* WILL DETERMINE IF STATUS REQUIRES AN ERROR PROCESSOR * CALL OR A SEEK WAIT MONITOR FUNCTION. LDA3.J STD CM+3 SAVE STATUS LDA4.J RJM DSW DRIVER SEEK WAIT PROCESSING * IF (CM+2) = 1, THEN *DSW* WAS ENTERED BECAUSE A *0020* * GENERAL STATUS INDICATED THAT THE SECTOR JUST WRITTEN HAD NOT * YET ARRIVED ON DISK. IN ORDER TO ALLOW OTHER PP-S TO USE THE * CHANNEL DURING THIS DELAY, *6DJ* GIVES UP THE CHANNEL, THEN * PERIODICALLY RE-REQUESTS IT TO SEE IF THE SECTOR HAS BEEN * WRITTEN, GIVING THE CHANNEL UP AGAIN IF THE SECTOR IS STILL * NOT ON DISK. A GENERAL STATUS OF ZERO INDICATES THAT THE * SECTOR HAS ARRIVED ON DISK; BY PATCHING THE DRIVER EXIT * ADDRESS INTO *LDA*, THE ZERO GENERAL STATUS WILL CAUSE *6DJ* * TO CORRECTLY RETURN TO ITS CALLER. LDD CM+2 ZJN LDA5 IF CONTROLLER PREVIOUSLY RESERVED SBN 1 NJN LDA4.1 IF NOT BACK FROM A DSWM SUBFUNCTION 20 LDM WDS STM LDA LDA4.1 LDN 11-1 SET CONNECTED STATUS IN CHRV RAM CHRV LDA5 LDD MA READ SEEK PARAMETERS ADN 1 CRD CM LDN FCS1 (SEEK ONE TO ONE INTERLACE) RJM FNC LDN 4 OAM CM+1,CH OUTPUT UNIT, CYLINDER, TRACK AND SECTOR NJN ERR IF ERROR LDM LDA LJM DST CHECK STATUS FNC SPACE 4,10 ** FNC - FUNCTION DEVICE. * * ENTRY (A) = FUNCTION CODE. * * EXIT (A) = 502. * FUNCTION ISSUED. * CHANNEL ACTIVATED. * * CALLS ERR. FNC4 ACN CH LDC 502 FULL BUFFER WORD COUNT FNC SUBR ENTRY/EXIT AJM ERR,CH IF CONTROLLER NOT READY FAN CH * NOTE - THE FOLLOWING DELAY MUST BE AT LEAST 300 MS. FNC2A ADD ON ENSURE 300 MS DELAY IS SATISFIED IJM FNC4,CH IF FUNCTION ACCEPTED NJN FNC2A IF NOT YET TIMED OUT UJN ERR PROCESS ERROR SPACE 4,10 * NOTE - THE FOLLOWING CODE IS PLACED HERE TO ALLOW *6DJ* * ADDRESSES TO REMAIN IN SYNCH WITH *6DI* DSW6A PJN DSW5.1 IF NO ERROR LDD CM+3 SET ERROR CODE DSW7A STI D1 * UJN ERR PROCESS ERROR ERR SPACE 4,10 ** ERR - CALL *7BI*. ERR MSERR 7BI,* LJM LEP1 CALL ERROR PROCESSOR * LJM DCI8 (DURING *7CI* PROCESSING) * LJM DEI6.1 (DURING *7EI* PROCESSING) * LJM FTO13 (DURING *7FI* PROCESSING) * LJM FTO16 (DURING *7FI* PROCESSING) * LJM DCP3 (DURING *7GI* PROCESSING) * LJM DCP5 (DURING *7GI* PROCESSING) ERRA EQU *-1 EXIT ADDRESS DSW SPACE 4,30 ** DSW - DRIVER SEEK WAIT PROCESSING. * * ENTRY (CM+3) = SEEK WAIT FUNCTION. THE FOLLOWING IS A LIST * OF THE POSSIBLE VALUES AND THEIR ORIGIN. * 0 = CHANNEL RELEASE REQUEST. *ENDMS REQUEST* * 2 = SEEK IN PROGRESS. *CONTROLLER STATUS* * 4 = STORAGE MOVE REQUESTED OR *LDAM STATUS* * UNIT SWITCH REQUESTED. *LDAM STATUS* * 10 = DRIVE RESERVED. *CONTROLLER STATUS* * 11 = REQUEST CHANNEL AND UNIT. *LDAM STATUS* * 20 = WRITE IN PROGRESS. *CONTROLLER STATUS* * 4XXX = ERROR STATUS. *CONTROLLER STATUS* * 5XXX = ERROR STATUS. *CONTROLLER STATUS* * 77YY = ERROR STATUS. *LDAM STATUS* * YY = COMPLIMENT OF ERROR CODE. * (CHRV) = DRIVER CONTROL WORD. SEE *COMSMSP*. * * EXIT (A) = 0. * (T4) = CHANNEL. * (T5) = SYSTEM DEVICE SELECTED WHEN APPROPRIATE. * * USES CM - CM+4. * * MACROS MONITOR. DSW4 FNC FCOC,CH+40 ISSUE RELEASE FUNCTION DSWD EQU *-1 * FNC FCDR,CH+40 A DRIVE RELEASE FUNCTION IS ISSUED AS * OPPOSED TO THE OPERATION COMPLETE WHEN * A SEEK OPERATION IS OUTSTANDING ON A * SHARED DRIVE THROUGH THE SAME CHANNEL. * THE ISSUING OF THE DRIVE RELEASE PREVENTS * ANOTHER MACHINE FROM ACCESSING, THROUGH * THE SAME CONTROLLER, THE DRIVE THAT HAS * THE SEEK INITIATED. LDN 1 STD T0 DSW5 IJM DSW2,CH IF FUNCTION ACCEPTED ADN 1 ENSURE DELAY IS SATISIFIED NJN DSW5 IF INNER TIMEOUT LOOP NOT YET COMPLETE SOD T0 NJN DSW5 IF NOT YET TIMED OUT DSW5.1 UJN DSW2 ISSUE DRIVER SEEK WAIT DSW SUBR ENTRY/EXIT LDM CHRV CHECK CHANNEL RESERVATION STD CM LPN 11 DSW1 LMD CM+3 ZJN DSWX IF NO *DSWM* NEEDED SCN 55 SHN 21-13 NJN DSW6A IF NO RELEASE OR ERROR LDD CM LPN 10 NJN DSW4 IF CONNECTED ISSUE RELEASE DSW2 LDD OA CHECK IF *DRCM*/*EXCM* COMPLETED CRM DSWC,ON LDM DSWC NJN DSW2 IF FUNCTION NOT YET PROCESSED LDD MA STORE PARAMETERS CWD T4 MONITOR DSWM DRIVER SEEK WAIT * LDN 0 DSW3.J RAI T0 MODIFY CHANNEL INSTRUCTIONS LDM TCHA.J,CM STD T0 AOD CM LDD CM+4 DSWA.J SBN CH NJN DSW3.J IF MORE CHANNEL INSTRUCTIONS TO MODIFY LDD MA SET T4, T5, AND CM CRD T4 LDD CM+1 SET RELEASE CODE STM DSWD LDD CM SET CHANNEL STATUS STM CHRV LJM DSW1 CHECK FOR ERROR TCHS SPACE 4,10 ** TCHA.J - TABLE OF CHANNEL INSTRUCTION ADDRESSES CHTL DSWA.J TERMINATE CHANNEL TABLE TCHA.J CHTB RSTC RESTORE CHANNEL INSTRUCTIONS ERRNG PRS-* DRIVER OVERFLOWED INTO SCRATCH AREA PRS SPACE 4,10 ** PRS - PRESET *6DJ*. PRS BSS 0 ENTRY LDN 0 FORCE *LDA* CALL ON FIRST OPERATION STI D1 LJM SMSX EXIT VIA *.SMS* DSWC BSS 0 *DRCM*/*ECXM* CHECK SCRATCH AREA SPACE 4 .1 SET *+5+4-MSFW CHECK FOR OVERFLOW .1 SET .1/5 .1 SET MSFW+.1*5 .2 SET PPFW-5-*-5 BYTES AVAILABLE BEFORE OVERFLOW ERRNG PPFW-5-.1 DRIVER OVERFLOWS INTO *PPFW*-5 7BI MSOVL 7651,T2,EPFW-1,("HN" INITIAL ERROR PROCESSOR.) 7CI SPACE 4,10 *** INITIALIZE ERROR PROCESSOR. * K. F. REHM. 84/02/01. 7CI SPACE 4,10 *** *7BI* IS CALLED BY *6DI*/*6DJ* WHEN AN ERROR HAS BEEN * DETECTED. *7BI* OVERLAYS *6DI*/*6DJ* PRESET WITH RECOVERY * CODE INITIALIZES MEMORY LOCATIONS USED BY OTHER OVERLAYS. SPACE 4,10 ** DBI - INITIALIZE ERROR PROCESSING. * * ENTRY (T1) = LENGTH OF *PRS* OVERLAY CODE. * (T2) = RDCT. * (T4 - T7) = DRIVER PARAMETERS. * (RDCT) = ERROR PROCESSOR INTERFACE WORD. * BIT 6 = 0 IF FIRST RETRY ATTEMPT. * (DRSW) = *LDAM*/*DSWM*/CHANNEL PARITY ERROR CODE * COMPLIMENT. * * EXIT TO *7CI*. * (T4 - T7) = UNCHANGED. * (DEAI) = ALGORITHM INDEX. * EXIT (DEDT) = ERROR PROCESSING CONTROL WORD. * BITS AFFECTED BY THIS OVERLAY - * BITS 3 - 0 = *6DI*/*6DJ* DRIVER TYPE. * (DEGS) = 0. * (DENR) = 0 IF FIRST RETRY ATTEMPT, ELSE UNCHANGED. * (DERC) = 0 IF FIRST RETRY ATTEMPT, ELSE UNCHANGED. * (DERW) = 1 IF WRITE REQUEST, 0 IF READ REQUEST. * (DEST) = 0. * (DEWR) = 0 IF FIRST RETRY ATTEMPT, ELSE UNCHANGED. * (DEXA) = *LDA1*, *7EP* EXIT ADDRESS. * (MSFW) = INITIAL CHANNEL. * (RDCT) = ERROR PROCESSOR INTERFACE WORD. * BITS AFFECTED BY THIS OVERLAY - * BIT 4 = 1. * (WDSB) = *WLSF* FUNCTION. * (MB, BYTES 0-3) = T4 - T7, SAVED FOR *7FI*. * (MB, BYTE 4) = ADDRESS OF LAST *FNC* CALL FOR *7FI*. * (MB+1) = PHYSICAL DISK ADDRESS FROM *LDAM*. * * USES T1, CM - CM+4. * * MACROS MONITOR, MSERR. SPACE 4,10 * *7BI* MOVES THE FOLLOWING CODE TO THE *6DI* PRESET AREA. QUAL DBIA BSS 0 ERROR PROCESSOR CALLS LOC PRS ** ERR2 - CALL STATUS PROCESSOR. ERR2 MSERR 7SI,* UJN WEP1 EXECUTE *7SI* ** WEP - WRITE ERROR PROCESSOR. WEP STD T2 MSERR 7WI,* WEP1 LJM LEP1 EXECUTE OVERLAY * THE FOLLOWING CHECK VERIFIES THAT LINKAGE BYTES ARE NOT * DESTROYED DURING ERROR RECOVERY OF THE FIRST SECTOR OF A * PP PROGRAM LOAD. IT ALSO VERIFIES THAT THE USE OF LONG * TERM ERROR PROCESSOR DATA CELLS DOES NOT DESTROY THE ERROR * PROCESSOR CALL CODE. ERRNG DEFW+1-* OVERFLOW LOC *O DBIAL EQU *-DBIA QUAL * SPACE 4,10 DBI ENTRY *7BI* ENTRY DBI1 LDM DBIA-1,T1 MOVE CODE TO PRESET AREA STM PRS-1,T1 SOD T1 NJN DBI1 IF MORE TO MOVE STM DEST INITIALIZE ERROR PROCESSING CONTROL WORD STM DEGS INITIALIZE GENERAL STATUS STM DEDT SET DRIVER TYPE ERRNZ /COMSDFS/D6DI CODE REQUIRES *D6DI* = 0 ERRNZ /COMSDFS/D6DJ CODE REQUIRES *D6DJ* = 0 LCN 0 STM DELF PRESET LAST FUNCTION SFA EST,T5 ADK EQDE CRD CM LDD CM+4 GET ALGORITHM INDEX FROM MST SHN 3 ADK DILL CRD CM LDD CM+4 LPN 77 STM DEAI LDM FNC PRESERVE ADDRESS OF LAST *FNC* CALL STD CM LDD MA SAVE (T4 - CM) IN CASE *7FI* IS CALLED CWD T4 LDN 0 STD CM+1 MONITOR LDAM SAVE PHYSICAL DISK ADDRESS LDC RDS2 SET READ/WRITE FLAG SBM LDA SHN -21 ERRNZ WRIP-1 CODE DEPENDS ON VALUE OF *WRIP* ERRNZ REDP CODE DEPENDS ON VALUE OF *REDP* STM DERW LDI T2 LPC 100 NJN DBI2 IF NOT FIRST RETRY ATTEMPT STM DERC INITIALIZE RETRY COUNT STM DEWR INITIALIZE *DATA WRITTEN/READ* FLAG STM DENR INITIALIZE *NON-RECOVERABLE ERROR* FLAG LDD HN STI T2 LDD T4 SAVE INITIAL CHANNEL STM MSFW LDI D1 LMC 7777&LNRE ZJN DBI2 IF SUSPECT SET BY PREVIOUS PP LDM CHRV SCN EPNS LMN EPNS PERMIT ACCESS TO SUSPECT DEVICE STM CHRV DBI2 LDC LDA1 SET ERROR PROCESSOR EXIT ADDRESS STM DEXA MSERR 7CI EXECUTE *7CI* SPACE 4,10 ERRNG 10000-* *7BI* OVERFLOW BSS 10000-* (SPARES) CON DBI-1 (T0) = ENTRY ADDRESS - 1 CON DBIAL (T1) = LENGTH OF ERROR PROCESSOR CALL CODE CON RDCT (T2) = RDCT ERRNZ LN-* INCORRECT *7BI* OVERLAY LENGTH QUAL * 7CI MSOVL 7637,T2,DEXA,(OBTAIN GENERAL AND DETAILED STATUS.) SPACE 4,10 *** OBTAIN GENERAL AND DETAILED STATUS. * R. J. MAAS. 80/12/12. * C. R. LUND. 81/07/30. SPACE 4,10 * *7CI* IS CALLED BY *7BI*. IF THE ERROR IS A * CONTROLLER REPORTED ERROR, *7CI* WILL OBTAIN GENERAL AND * DETAILED STATUS FROM THE CONTROLLER. IF THE ERROR IS A * *DSWM*, *LDAM* OR CHANNEL PARITY ERROR, STATUS WILL NOT BE * TAKEN. INSTEAD, *7EI* WILL BE CALLED IMMEDIATELY. *7FI* * WILL BE CALLED IF EITHER STATUS FUNCTION TIMES OUT OR AN * INCOMPLETE DATA TRANSFER OCCURS ON EITHER STATUS INPUT. 7DI SPACE 4,10 * REDEFINE CHANNEL INSTRUCTIONS TO PRODUCE LINKED LIST. FWDL$ EQU 1 SELECT FORWARD LINKED CHANNEL INSTRUCTIONS RICHL LEO SPACE 4,10 ** DCI - OBTAIN GENERAL AND DETAILED STATUS. * * ENTRY (T1) = DETAILED STATUS SIZE. * (T2) = FIRST CHANNEL INSTRUCTION ADDRESS. * (T4 - T7) = DRIVER PARAMETERS. * (D1) = DRSW. * (DRSW) = *LDAM*/*DSWM*/CHANNEL PARITY ERROR CODE * COMPLIMENT. * (MB, BYTES 0-3) = T4 - T7, SAVED FOR *7FI*. * (MB, BYTE 4) = ADDRESS OF LAST *FNC* CALL FOR *7FI*. * (MB+1) = PHYSICAL DISK ADDRESS FROM *LDAM*. * * EXIT TO *7EI* IF NOT A CONTROLLER REPORTED ERROR OR A * CHANNEL PARITY ERROR OCCURS WHEN ATTEMPTING TO INPUT * STATUS. * TO *7FI* IF FUNCTION TIMEOUT OR INCOMPLETE DATA * TRANSFER ON STATUS INPUT. * TO *7DI* OTHERWISE. * (T2) = *7EI* PROCESSING INDEX IF *7EI* IS CALLED. * (T4 - T7) = UNCHANGED. * (DEEC) = ERROR CODE (MEANINGFUL ONLY IF CALLING *7EI* * OR *7FI*). * = *CSTE* IF FUNCTION TIMEOUT OR INCOMPLETE DATA * TRANSFER. * = *CHPE* IF CHANNEL PARITY ERROR ON STATUS * INPUT OR CHANNEL PARITY ERROR ON INPUT IN * DRIVER. * = ERROR CODE REPORTED BY *DSWM* OR *LDAM*. * (DEGS) = GENERAL STATUS. * (DELF) = FUNCTION (COULD BE DATA) RETRIEVED FROM * CHANNEL. * (DERC) = *CHPE* RETRY LIMIT - 1 IF CHANNEL PARITY * ERROR ON STATUS INPUT IN THIS OVERLAY, * OTHERWISE UNCHANGED. * (MB, BYTES 0-3) = UNCHANGED. * (MB, BYTE 4) = UNCHANGED. * (MB+1) = UNCHANGED. * (MB+2 - MB+5) = DETAILED STATUS IF CALLING *7DI*. * * USES CM, T1, T2. * * CALLS FNC. * * MACROS MSERR. DCI ENTRY *7CI* ENTRY LDC DCI8 SET FUNCTION TIMEOUT ERROR ADDRESS STM ERRA * INITIALIZE TO ZEROS THE AREA WHERE DETAILED STATUS WILL BE * READ IN. ERRNG *-OFFW-DSLN DETAILED STATUS DESTROYS CODE DCI1 LDN 0 STM OFFW-1,T1 SOD T1 NJN DCI1 IF MORE BYTES TO CLEAR * MODIFY CHANNEL INSTRUCTIONS. * LDN 0 DCI2 RAD T2 LDI T2 SAVE LINK TO NEXT CHANNEL INSTRUCTION LPN 37 STD CM LDD T4 MODIFY A CHANNEL INSTRUCTION SBD CM RAI T2 LDD CM NJN DCI2 IF MORE INSTRUCTIONS TO MODIFY * IF THE ERROR WAS REPORTED BY THE CONTROLLER, PROCEED TO * TAKE GENERAL AND DETAILED STATUS. IN ALL OTHER CASES GO * DIRECTLY TO *7EI*. LDI D1 SBK 7700 MJN DCI5 IF CONTROLLER REPORTED ERROR LMN 77 UJN DCI4 EXECUTE *7EI* * PROCESS A CHANNEL PARITY ERROR (800 SERIES MACHINES) * THAT OCCURS ON INPUT OF GENERAL OR DETAILED STATUS * IN *7CI*. *CHRT* RETRIES WILL BE PERFORMED BEFORE * THE ERROR IS CONSIDERED UNRECOVERED. DCI3 AOD T1 SBN CHRT MJN DCI6 IF NOT UNRECOVERED YET LDK CHRT-1 FORCE UNRECOVERED ERROR STM DERC LDN CHPE SET CHANNEL PARITY ERROR FLAG DCI4 LJM DCI9 CALL *7EI* * RETRIEVE ANY FUNCTION OR DATA LEFT ON THE CHANNEL AND THEN * TAKE BOTH GENERAL AND DETAILED STATUS. IF A FUNCTION TIMES * OUT OR IF ALL OF GENERAL OR DETAILED STATUS IS NOT RECEIVED, * CALL *7FI* TO DETERMINE THE CAUSE OF THE PROBLEM. DCI5 IJM DCI7,CH IF NOT FUNCTION TIMEOUT EJM DCI6,CH IF NO FUNCTION ON CHANNEL IAN CH+40 INPUT FUNCTION STM DELF DCI6 DCN CH+40 DCI7 LDN FCGS GET GENERAL STATUS RJM FNC LDN 1 IAM DEGS,CH SFM DCI3,CH IF CHANNEL PARITY ERROR (800 SERIES) NJN DCI8 IF INCOMPLETE DATA TRANSFER STD T1 RESET CHANNEL PARITY ERROR RETRY COUNT LDM DEGS LMC 5017 ZJN DCI8 IF CONTROL MODULE MEMORY ERROR SHN 0-12 LPN 1 LMN 1 ERRNZ EI0 CODE ASSUMES *EI0* = 0 ZJN DCI11 IF OPPOSITE ACCESS RESERVED LDN FCDS GET DETAILED STATUS RJM FNC LDN DSLN IAM OFFW,CH ERRNG *-OFFW-DSLN DATA READ IN DESTROYS CODE SFM DCI3,CH IF CHANNEL PARITY ERROR (800 SERIES) NJN DCI8 IF INCOMPLETE DATA TRANSFER LDN 3R7DQ&3R7DI STM DCIA MSERR 7DI,= UJN DCI12 EXECUTE *7DI* DCI8 LDD HN ERRNZ 3R7FI-3R7EI-100 CODE ASSUMES RELATIVE VALUES RAM DCIA LDN CSTE SET CONTROLLER STOP ERROR CODE DCI9 STM DEEC LDN EI3 SET *7EI* PROCESSOR INDEX DCI11 STD T2 DCI12 LDN DSLN/5 STD T1 LDD MA ADN 2 CWM OFFW,T1 ERRNZ DSLN/5-4 ADJUST IF VALUE OF *DSLN* CHANGES MSERR 7EI,* MSERR 7FI,= (FUNCTION TIMEOUT/DATA TRANSFER ERROR) DCIA EQU *-1 LJM LEP1 EXECUTE *7DI*/*7EI*/*7FI* SPACE 4 HERE TERMINATE LINKED CHANNEL INSTRUCTIONS SPACE 4,10 ERRNG 10000-* *7CI* OVERFLOW BSS 10000-* (SPARES) CON DCI-1 (T0) = ENTRY ADDRESS - 1 CON DSLN (T1) = DETAILED STATUS LENGTH CON CH01$ (T2) = FIRST CHANNEL INSTRUCTION ADDRESS ERRNZ LN-* INCORRECT *7CI* OVERLAY LENGTH QUAL * 7DI MSOVL 7550,T2,DEXA,(DETAILED STATUS PROCESSOR.) 7DI SPACE 4,10 *** DETAILED STATUS PROCESSOR. * R. M. DANISCH. 85/02/06. 7DI SPACE 4,10 * *7DI* IS CALLED BY *7CI* TO DETERMINE THE ERROR TYPE * BY ANALYZING DETAILED STATUS. 7DI SPACE 4,10 ** DDI - DETAILED STATUS PROCESSOR. * * ENTRY (T1) = DEST. * (T2) = DEGS. * (T4 - T7) = DRIVER PARAMETERS. * (DEAI) = ALGORITHM INDEX. * (DERW) = 1 IF WRITE REQUEST, 0 IF READ REQUEST. * (DEGS) = GENERAL STATUS. * (RDCT) = ERROR PROCESSING INTERFACE WORD. * (MB+1) = PHYSICAL DISK ADDRESS FROM *LDAM*. * (MB+2 - MB+5) = DETAILED STATUS. * * EXIT TO *7EI*. * (DEST) = ERROR PROCESSING CONTROL WORD. * BITS AFFECTED BY THIS OVERLAY - * BIT 5 = 1 IF ISD DRIVE FAULT. * BIT 0 = 1 IF ERROR ON PREVIOUS SECTOR. * (DEWR) = 1 IF DATA WRITTEN TO DISK. * (MB+1) = UNCHANGED. * (MB+2 - MB+5) = UNCHANGED. * * USES CM, T2. * * MACROS MSERR. DDI ENTRY *7DI* ENTRY LDI T2 SHN 0-11 LMN 5 ZJN DDI1 IF GENERAL STATUS = 5XXX LDN EI0 SET *7EI* PROCESSOR INDEX LJM DDI22 EXECUTE *7EI* DDI1 LDM DEAI IDENTIFY HARDWARE TYPE SBN AIIB MJN DDI3 IF 844/885 DEVICE SBK AIIE-AIIB PJN DDI2 IF NOT ISD DEVICE LDN 12-10 RAM DDIE LDC UJNI+DDI18.1-DDIH ERRPL DDI18.1-DDIH-40 RANGE ERROR STM DDIH LDN 7-3 UJN DDI6 CONTINUE DDI2 SBN AIDX-AIIE PJN DDI7 IF FSC DEVICE LJM DDI20 REPORT STATUS ERROR FOR BUFFERED DEVICE DDI3 LDN PSNI ENABLE DATA WRITTEN CHECK STM DDIC LDM DEAI SBN AIDQ PJN DDI4 IF *DR* OR *DQ* DEVICE ADN AIDQ-AIDM NJN DDI9 IF 844 DEVICE DDI4 LDN PSNI STM DDID ENABLE 885 NOT READY CHECK DDI6 UJN DDI8 CONTINUE DDI7 LCN 10-0 MODIFY CODE FOR FSC DEVICE RAM DDIE LDC LMNI+1 STM DDIG LDN 21-14 RAM DDIH+1 LDC UJNI+DDI23-DDII ERRPL DDI23-DDII-40 RANGE ERROR STM DDII LCN 12-7 DDI8 RAM DDIF DDI9 LDN DSLN/5 READ DETAILED STATUS FROM MESSAGE BUFFER STD CM LDD MA ADN 2 CRM OFFW,CM ERRNZ DSLN/5-4 ADJUST CODE IF VALUE OF *DSLN* CHANGES ERRNG *-OFFW-DSLN CODE IS DESTROYED BY DETAILED STATUS * CHECK FOR DATA WRITTEN TO DISK. DDI13 UJN DDI15 CONTINUE FOR NON-844/885 DEVICE * PSN (844/885) DDIC EQU *-1 LDM OFFW+20 LPN 2 ZJN DDI14 IF NOT DATA FIELD ERROR LDM DERW ZJN DDI14 IF READ REQUEST STM DEWR SET *DATA WRITTEN/READ* FLAG * CHECK FOR DRIVE NOT READY. DDI14 UJN DDI15 CONTINUE FOR NON-885 * PSN (885) DDID EQU *-1 LDM OFFW+7 SHN 21-0 MJN DDI17 IF NOT *NOT READY* DDI15 LDI T2 LMC 5020 NJN DDI17 IF NOT *NOT READY* LDM OFFW+10 * LDM OFFW (FSC) * LDM OFFW+12 (ISD) DDIE EQU *-1 SHN 0-7 * SHN 0-12 (FSC) * SHN 0-3 (ISD) DDIF EQU *-1 LPN 1 DDIG PSN * LMN 1 (FSC) NJN DDI17 IF NOT *NOT READY* LDN EI6 SET *7EI* PROCESSOR INDEX UJN DDI18 EXECUTE *7EI* * CHECK FOR ERROR ON PREVIOUS SECTOR. DDI17 LDM OFFW+14 * LDM OFFW+21 (FSC) * UJN DDI18.1 (ISD) DDIH EQU *-2 SHN 0-13 ZJN DDI19 IF NOT ERROR ON PREVIOUS SECTOR LDM DERW ZJN DDI18.2 IF NOT A WRITE AOI T1 SET *ERROR ON PREVIOUS SECTOR* FLAG LDN EI1 SET *7EI* PROCESSOR INDEX DDI18 LJM DDI22 EXECUTE *7EI* * CHECK FOR ISD MEDIA ERROR. DDI18.1 LDM OFFW+20 CHECK BOX ISOLATION STATUS SHN 21-5 PJN DDI20 IF NOT DRIVE/MEDIA FAULT LDM OFFW+10 SHN 0-4 LMC 101 ZJN DDI21 IF MEDIA ERROR IN HEADER LMN 101&103 ZJN DDI21 IF MEDIA ERROR IN DATA LDN 40 SET *EXECUTE DIAGNOSTICS* FLAG RAI T1 DDI18.2 UJN DDI20 SET *7EI* PROCESSOR INDEX (STATUS ERROR) * CHECK FOR 844/885 MEDIA ERROR. DDI19 LDM OFFW * UJN DDI23 (FSC) DDII EQU *-2 LPN 17 LMN 10 ZJN DDI21 IF MEDIA ERROR LDM OFFW+1 SHN 21-13 MJN DDI21 IF MEDIA ERROR SHN 13-11 MJN DDI21 IF MEDIA ERROR LDM OFFW+20 SHN 21-10 MJN DDI21 IF MEDIA ERROR DDI20 SOM DDIJ ERRNZ EI5-EI4-1 CODE ASSUMES *EI5* = *EI4* + 1 DDI21 LDN EI5 SET *7EI* PROCESSOR INDEX * LDN EI4 (NOT A MEDIA ERROR) DDIJ EQU *-1 DDI22 STD T2 MSERR 7EI EXECUTE *7EI* * CHECK FOR FSC MEDIA ERROR. DDI23 LDI T2 SHN 21-4 PJN DDI20 IF NOT MEDIA ERROR LDM OFFW SHN 21-7 PJN DDI20 IF NOT MEDIA ERROR LDM OFFW+1 SHN 21-6 PJN DDI20 IF NOT MEDIA ERROR UJN DDI21 EXECUTE *7EI* SPACE 4,10 ERRNG 10000-* *7DI* HAS OVERFLOWED BSS 10000-* SPARES CON DDI-1 (T0) = ENTRY ADDRESS - 1 CON DEST (T1) = DEST CON DEGS (T2) = DEGS ERRNZ LN-* INCORRECT *7DI* OVERLAY LENGTH QUAL * 7EI MSOVL 7542,T1,DEXA,(SET ERROR CODE.) SPACE 4 *** SET ERROR CODE. * R. J. THIELEN. 75/11/20. * W. E. GOEBEL. 77/01/24. SPACE 4 * *7EI* IS CALLED BY *7CI*, *7DI* OR *7FI* TO PERFORM * ADDITIONAL CHECKS ON GENERAL STATUS AND TO ASSIGN AN ERROR * CODE FOR THE CURRENT ERROR. FOR COUPLER TO DISK ERRORS, * *7EI* WILL READ BACK THE PREVIOUS SECTOR FROM THE CONTROLLER * SO THAT THE DRIVER CAN RE-WRITE IT. MSE SPACE 4 ** DEI - SET ERROR CODE. * * ENTRY (T1) = DEST. * (T2) = INDEX TO PROCESSING ADDRESS IN *7EI*. * (T4 - T7) = DRIVER PARAMETERS. * (DEAI) = ALGORITHM INDEX. * (DEEC) = ERROR CODE IF CALLED BY *7CI* OR *7FI*. * (DEGS) = GENERAL STATUS. * (DERW) = 1 IF WRITE REQUEST, 0 IF READ REQUEST. * (DEST) = ERROR PROCESSING CONTROL WORD. * (RDSB) = ADDRESS OF DATA BUFFER FOR READ. * (WDSC) = ADDRESS OF DATA BUFFER FOR WRITE. * (WDSE) = ADDRESS OF BUFFER FOR WRITE ERROR RETRY (IF * SPECIFIED ON *SETMS*). * (MB+1) = PHYSICAL DISK ADDRESS FROM *LDAM*. * (MB+2 - MB+5) = DETAILED STATUS, IF ERROR WAS REPORTED * BY CONTROLLER (NOT A *DSWM*/*LDAM*/ * CHANNEL PARITY ERROR. * * EXIT TO *7EK* * (T2) = READ BUFFER ADDRESS. * (T4 - T7) = UNCHANGED. * (DEEC) = ERROR CODE. * (DENR) = 1 IF NON-RECOVERABLE ERROR. * (DEST) = ERROR PROCESSING CONTROL WORD. * BITS AFFECTED BY THIS OVERLAY - * BIT 12 = 1 IF NO RETRIES ARE ALLOWED. * BIT 4 = 1 IF RECOVERY IN PROGRESS (BIT 10 * OF GENERAL STATUS IS SET). * BIT 3 = 1 IF BUFFER READBACK FAILED. * (DEWR) = 1 IF DATA MAY HAVE BEEN WRITTEN TO DISK. * (DEXA) = ADDRESS AT WHICH TO RETRY OPERATION. * *LDA1*, IF *7SI* WILL NOT BE CALLED. * *ERR2*, IF *7SI* TO BE CALLED. * (MB+1) = UNCHANGED. * (MB+2 - MB+5) = UNCHANGED. * * USES T2, T7, CM. * * MACROS ISTORE, MSERR. DEI ENTRY *7EI* ENTRY LDM TDEI,T2 STD CM LDN 0 LJM 0,CM ENTER PROCESSOR * *EI0* - GENERAL STATUS .NE. 5XXX. DEI1 LDM DEGS SHN 21-10 PJN DEI4 IF NO RECOVERY IN PROGRESS SHN 10-5 PJN DEI3 IF NOT A CORRECTABLE ERROR LDM RDSB SBK EPFW-502+1 PJN DEI4 IF ERROR PROCESSOR OVERLAYS BUFFER DEI3 LDC ERR2 CAUSE *7EP* TO CALL *7SI* STM DEXA LDN 20 SET IMMEDIATE EXIT FLAG FOR *7EP* RAI T1 DEI4 LJM DEI9 SET *DSTE* ERROR CODE * *EI1* - WRITE ERROR ON PREVIOUS SECTOR. DEI5 LDM ERXA NJP DEI8 IF ERROR ON A RETRY STM WDSB FORCE *WRITE LAST SECTOR* ERRNZ WLSF CODE ASSUMES VALUE LDM WDSE NJN DEI6 IF WRITE BUFFER SPECIFIED LDM WDSC DESTROY CURRENT SECTOR BUFFER DEI6 STM RDSB STD T2 SBK EPFW-502+1 PJN DEI6.1 IF BUFFER IN ERROR PROCESSOR AREA LDC DEI7 SET RETURN FROM READ OF COUPLER BUFFER STM RDS LDC DEI6.1 SET ERROR RETURN STM ERRA LDD HN ERRNZ LJMI-100 CODE DEPENDS ON VALUE STM RDSD LDC DEI6.0 STM RDSD+1 LDN FCRB READ BACK COUPLER BUFFER LJM RDS3 USE READ PROCESSOR * RETURN HERE ON ERROR IN COUPLER BUFFER READ ATTEMPT. DEI6.1 LDC UJNI+DEI17-DEIA ERRPL DEI17-DEIA-40 RANGE ERROR STM DEIA LDN 10 SET *ERROR ON BUFFER READBACK* FLAG RAI T1 UJN DEI8 CONTINUE * RETURN HERE TO DELAY DURING COUPLER READ BACK. DEI6.0 STD T0 SAVE (A) LDC LDMI RESTORE DRIVER CODE STM RDSD+1 ISTORE RDSD,(NJN WDS5) SBN 1 DELAY AT LEAST 128 MICROSECONDS NJN *-1 IF DELAY NOT EXPIRED LDD T0 RESTORE (A) LJM RDS3.1 RE-ENTER DRIVER * SET UP RETRY OF PREVIOUS SECTOR. DEI7 LDM WDS SAVE *WDS* RETURN IN *RDS* STM RDS LDC WEP RETURN TO WEP AFTER RETRY STM WDS LDM WDSC SAVE CURRENT BUFFER ADDRESS STM RDSB LDD T2 SET RETRY BUFFER ADDRESS STM WDSC SOD T7 * *EI2* - FUNCTION TIMEOUT / CONTROLLER MEMORY ERROR. DEI8 LDI T1 LPC 101 ZJN DEI11 IF FUNCTION TIMEOUT LPN 1 ZJN DEI10 IF CONTROLLER MEMORY ERROR * *EI4* - STATUS ERROR. DEI9 LDK DSTE&RAME SET *DSTE* ERROR CODE DEI10 LMK RAME&FTOE SET *RAME* ERROR CODE DEI11 LMK FTOE&PARE SET *FTOE* ERROR CODE * *EI5* - MEDIA ERROR. DEI12 LMK PARE&NRDE SET *PARE* ERROR CODE * *EI6* - DEVICE NOT READY. DEI13 LMK NRDE SET *NRDE* ERROR CODE DEI14 STM DEEC * *EI3* - ERROR CODE ALREADY SET. DEI15 LDM DEEC * UJN DEI17 (ERROR ON COUPLER BUFFER READ) DEIA EQU *-2 SBK RESE PJN DEI18 IF RESERVE ERROR * CHECK FOR A WRITE REQUEST ON AN ISD DEVICE. THIS IS * CONSIDERED A NON-RECOVERABLE CASE FOR CONTROLLER REPORTED * ERRORS DUE TO THE DATA BUFFERING IN THE 7255 ADAPTER AND * CONTROL MODULE. THE ERROR IS ALSO FORCED UNRECOVERED TO * PREVENT RETRYING THE OPERATION. LDM DEAI SBK AIIB MJN DEI18 IF NOT ISD SBK AIIE-AIIB PJN DEI18 IF NOT ISD LDC 600 SET ISD/WRITE BUFFERING FLAGS RAI T1 SHN 21-4 MJN DEI18 IF *CONTINUE* TO BE ISSUED DEI17 LDM DERW ZJN DEI18 IF READ REQUEST STM DEWR SET *DATA WRITTEN/READ* FLAG STM DENR SET *NON-RECOVERABLE* FLAG LDC 2000 SET *UNRECOVERED* FLAG RAI T1 DEI18 LDC LEP1 RESET *FNC* TIMEOUT EXIT ADDRESS STM ERRA LDM RDSB STD T2 MSERR 7EK EXECUTE *7EK* QUAL TDEI BSS 0 PROCESSOR ADDRESS TABLE LOC 0 EI0 CON /7EI/DEI1 EI1 CON /7EI/DEI5 EI2 CON /7EI/DEI8 EI3 CON /7EI/DEI15 EI4 CON /7EI/DEI9 EI5 CON /7EI/DEI12 EI6 CON /7EI/DEI13 CON 0 FORCE LAST ENTRY OF TABLE .LT. 7777B LOC *O QUAL * SPACE 4 ERRNG 10000-* *7EI* HAS OVERFLOWED BSS 10000-* (SPARES) CON DEI-1 (T0) = ENTRY ADDRESS - 1 CON DEST (T1) = DEST ERRNZ LN-* INCORRECT *7EI* OVERLAY LENGTH QUAL * 7FI MSOVL 7517,T2,DEXA,(FUNCTION TIMEOUT PROCESSOR.) FTO SPACE 4,10 *** PROCESS FUNCTION TIMEOUT. * R. M. DANISCH 83/01/03. * P. D. HAAS. 83/04/29. FTO SPACE 4,10 *** THE FUNCTION TIMEOUT PROCESSOR IS CALLED BY *7CI* * WHEN ONE OF THE FOLLOWING OCCURS - THE GENERAL STATUS * FUNCTION ISSUED BY *7CI* TIMES OUT, THE DETAILED * STATUS FUNCTION ISSUED BY *7CI* TIMES OUT, OR THERE * IS AN INCOMPLETE DATA TRANSFER ON THE INPUT OF GENERAL * OR DETAILED STATUS IN *7CI*. * * THIS OVERLAY PERFORMS THE FOLLOWING FUNCTIONS - * 1. RESTART A 7054 CONTROLLER HUNG ON A COUPLER LOCKUP * VIA A SHORT AUTOLOAD. * 2. DETERMINE IF A RAM PARITY ERROR OR CONTROLLER STOP * OCCURRED ON A 7155 CONTROLLER. 7FI SPACE 4,10 * REDEFINE CHANNEL INSTRUCTIONS TO PRODUCE A LINKED LIST. FWDL$ EQU 1 SELECT FORWARD LINKING RICHL FTO SPACE 4,10 ** FTO - FUNCTION TIMEOUT PROCESSOR. * * ENTRY (T1) = DEST. * (T2) = FIRST CHANNEL INSTRUCTION ADDRESS. * (T4) = CHANNEL NUMBER. * (DEAI) = ALGORITHM INDEX. * (DEEC) = *CSTE* ERROR CODE. * (DEGS) = GENERAL STATUS. * 5002 IF 7255 MEMORY ERROR. * 5017 IF ISD CONTROL MODULE MEMORY ERROR. * (DERW) = 1 IF WRITE REQUEST, 0 IF READ REQUEST. * (MB, BYTES 0-3) = T4 - T7. * (MB, BYTE 4) = ADDRESS OF LAST *FNC* CALL. * (MB+1) = PHYSICAL DISK ADDRESS FROM *LDAM*. * (MB+2 - MB+5) = DETAILED STATUS, IF ONE TAKEN. * * EXIT TO *7EI*. * (T2) = INDEX TO PROCESSING ADDRESS IN *7EI* * (T4 - T7) = RESTORED FROM *MB*. * (DENR) = 1 IF ALL OF THE FOLLOWING CONDITIONS HOLD - * A. THE CONTROLLER IS CONNECTED. * B. NOT AN ISD DEVICE. * C. THE OPERATION IS A WRITE. * D. TIMEOUT OCCURRED BEFORE THE PREVIOUS * SECTOR WAS WRITTEN TO DISK. * (DERC) = *FTRT* IF ALL OF THE FOLLOWING ARE TRUE - * A. THE CONTROLLER IS CONNECTED. * B. THE DRIVE IS NOT AN ISD. * C. THE CONTROLLER TYPE IS NOT A 7155 MODEL * B OR C. * D. TIMEOUT OCCURRED BEFORE THE PREVIOUS * SECTOR WAS WRITTEN TO DISK. * E. THE ERROR IS NOT A RAM PARITY ERROR. * (DEST) = ERROR PROCESSING CONTROL WORD. * BITS AFFECTED BY THIS OVERLAY - * BIT 6 = 1 IF RAM PARITY ERROR. * BITS 2-1 = CONTROLLER TYPE. * 0 7155 MODEL A. * 1 7155 MODEL B OR C. * 2 7255 ADAPTER. * 3 CONTROL MODULE. * (DEWR) = 1 IF WRITE OPERATION ON NON-ISD DEVICE AND * THE CONTROLLER IS CONNECTED. * * USES T0 - T2, T4 - T7, CM - CM+4. * * CALLS FNC, RCM. * * MACROS MSERR, RICHL. DFI ENTRY *7FI* ENTRY FTO LDN 0 FTO1 RAD T2 MODIFY CHANNEL INSTRUCTIONS LDI T2 LPN 37 STD CM LDD T4 SBD CM RAI T2 LDD CM NJN FTO1 IF MORE INSTRUCTIONS ERRNZ WLSF CODE DEPENDS ON VALUE STM WDSB LDN EI3 PRESET *7EI* PROCESSOR INDEX STD T2 DCN CH+40 LDM DEAI SBK AIIB MJN FTO4 IF NOT ISD DEVICE SBK AIIE-AIIB PJN FTO4 IF NOT ISD DEVICE LDD HN SET *MEMORY ERROR* FLAG RAI T1 LDM DEGS SET CONTROLLER TYPE LMC 5017 ZJN FTO3 IF ISD CONTROL MODULE MEMORY ERROR LDN 1S1 FTO3 LMN 3S1 RAI T1 LJM FTO15 CALL *7EI* * ISSUE A SHORT AUTOLOAD TO RESTART THE CONTROLLER IN CASE IT * IS HUNG, AND WAIT UNTIL THE FUNCTION HAS COMPLETED. * DETERMINE WHETHER OR NOT THE ERROR COULD HAVE OCCURRED ON A * PREVIOUS SECTOR. FTO3.1 ADN AIDR-AIDQ ZJN FTO6 IF 885 *DQ* DRIVE ADN AIDQ-AIDM UJN FTO4.1 CHECK FOR 885 *DM* DRIVE FTO4 FNC FCAL,CH ISSUE SHORT AUTOLOAD FUNCTION LDM DERW ZJN FTO5 IF READ SEQUENCE STM DEWR SET *DATA WRITTEN* FLAG LDM DEAI SBK AIDR MJN FTO3.1 IF POSSIBLE 885 *DQ* OR *DM* DRIVE FTO4.1 ZJN FTO6 IF CDSS II *DR* OR 885 *DM* DRIVE LDM LDAA LPN 77 EXTRACT INTERLACE FTO5 LMN FCS1 ERRZR FCS1 CODE DEPENDS ON VALUE FTO6 STD T7 LDD TH SET 5 SECOND TIMEOUT STD T5 FTO7 DELAY 10D*8D DELAY FOR 10 MS SOD T5 MJN RCM1 IF AUTOLOAD TIMEOUT AJM FTO7,CH IF AUTOLOAD NOT PROCESSED * ACTIVATE THE CHANNEL FOR 25 - 750 MICROSECONDS. * LDC ** 0 .LE. (A) .LT. 1000B ACN CH SBD MA 1022B .LE. (MA) .LE. 7632B MJN *-1 IF DELAY INCOMPLETE DCN CH+40 * DETERMINE IF RAM PARITY ERROR OCCURRED. THE METHOD FOR * DOING THIS IS TO ISSUE A MANIPULATE PROCESSOR FUNCTION * AND SEE IF IT TIMES OUT. IF IT DOESN-T, THE CONTROLLER * TYPE IS ESTABLISHED AS A 7155, OTHER MODELS WILL NOT ACCEPT * THE FUNCTION. THE INPUT DISPLAY DATA FUNCTION IS USED * TO REFERENCE EACH RAM ADDRESS IN THE CONTROLLER AND WILL * NOT HALT IF A PARITY ERROR IS DETECTED, RATHER A BIT WILL * BE SET IN THE CONTROLLER-S PROCESSOR STATUS THAT INDICATES * THE ERROR. THIS BIT WILL BE INTERROGATED BY THE PP. LDN ZERL CRD CM LDC FTO13 SET ERROR EXIT FOR FUNCTION TIMEOUT STM ERRA LDC 8192DS-5 SET LOOP COUNT FOR 16384 BYTE DUMP STD T5 BUF EQU OFFW SCRATCH BUFFER ERRPL BUF+77-* BUFFER OVERLAYS CODE RCM SPACE 4,10 ** RCM - READ CONTROLLER MEMORY. * * ENTRY (CM+1 - CM+2) = ADDRESS IN CONTROLLER MEMORY. * * EXIT (CM) = 2. * *FCID* FUNCTION ISSUED TO CONTROLLER. * (ERRA) = *FTO16*. * * CALLS FNC. RCMX LJM FTO8 ENTRY/EXIT RCM EQU *-1 LDN 2 SET READ MODE STD CM LDN FCMP ISSUE *MANIPULATE PROCESSOR* FUNCTION RJM FNC LDN 5 OUTPUT PARAMETERS OAM CM,CH RCM1 NJN FTO9 IF INCOMPLETE TRANSFER DCN CH+40 LDC FTO16 SET ERROR EXIT FOR FUNCTION TIMEOUT STM ERRA LDN FCID ISSUE *INPUT DISPLAY DATA* FUNCTION RJM FNC UJN RCMX RETURN * READ OUT CONTROLLER MEMORY. FTO8 RJM RCM LDD HN INPUT 64 BYTES IAM BUF,CH FTO9 NJN FTO11 IF INCOMPLETE TRANSFER LDN 40 RAD CM+2 ADVANCE CONTROLLER ADDRESS SHN 21-10 PJN FTO10 IF NOT 8 BIT OVERFLOW STD CM+2 AOD CM+1 ADJUST CONTROLLER ADDRESS FTO10 SOD T5 NJN FTO8 IF MORE TO READ * OBTAIN PROCESSOR STATUS. LDN FCST ISSUE *INPUT PROCESSOR STATUS* FUNCTION RJM FNC LDN 40 INPUT STATUS IAM BUF,CH FTO11 NJN FTO12 IF INCOMPLETE TRANSFER LDM BUF+23 LPN 20 SHN 1-4 SET 7155 CONTROLLER TYPE, MODEL A OR/B/C RAI T1 LDM BUF SET *RAM PARITY ERROR* FLAG LPN 20 SHN 6-4 RAI T1 LDD MA CRD CM LDD CM+4 CHECK LAST CALL TO *FNC* LMC WDS4+2 NJN FTO15 IF NOT WRITE FUNCTION TIMEOUT STD CM+1 LDC 321 STD CM+2 READ CONTROLLER MEMORY RJM RCM LDN 2 INPUT *WRITE BUFFER TO DISK* FLAG IAM T6,CH FTO12 NJN FTO16 IF INCOMPLETE TRANSFER FTO13 LDD T7 NJN FTO15 IF NOT ERROR AFFECTING PREVIOUS SECTOR LDN 1 FORCE ERROR NON-RECOVERABLE STM DENR LDI T1 SHN 21-1 PJN FTO14 IF NOT B/C MODEL 7155 CONTROLLER SOD T2 ERRNZ EI1+1-EI2 CODE DEPENDS ON VALUES UJN FTO15 ADJUST *7EI* PROCESSOR INDEX FTO14 LPN 20 NJN FTO15 IF RAM PARITY ERROR LDK FTRT-1 FORCE UNRECOVERED STM DERC FTO15 SOD T2 ERRNZ EI2+1-EI3 CODE DEPENDS ON VALUES FTO16 DCN CH+40 LDD MA RESTORE DRIVER PARAMETERS CRD T4 MSERR 7EI CALL *7EI* FTO SPACE 4,10 HERE TERMINATE LINKED CHANNEL INSTRUCTIONS SPACE 4,10 ERRNG 10000-* OVERFLOW BSS 10000-* SPARES CON DFI-1 (T0) = ENTRY ADDRESS - 1 CON DEST (T1) = DEST CON CH01$ (T2) = FIRST CHANNEL INSTRUCTION ADDRESS ERRNZ LN-* INCORRECT *7FI* OVERLAY LENGTH QUAL * 7GI MSOVL 7613,T2,DSFA+4,(CHANNEL/CONTROLLER ERROR PROCESSOR.) DCP SPACE 4,10 *** PROCESS CHANNEL/CONTROLLER ERROR. * R. M. DANISCH 83/01/03. DCP SPACE 4,10 * THE CHANNEL/CONTROLLER ERROR PROCESSOR IS CALLED BY *7HI*. * IF *7HI* WAS UNSUCCESSFUL IN ATTEMPTING THE CONTROLWARE * RELOAD, *7GI* WILL ATTEMPT TO RELEASE DRIVES RESERVED TO THE * FAILING CONTROLLER SO THEY MAY BE ACCESSED THROUGH AN * ALTERNATE CHANNEL. IF THE CONTROLLER IS UNABLE TO RELEASE * DRIVES, IT MAY BE NECESSARY TO REMOVE DRIVE RESERVATIONS * MANUALLY IN ORDER TO GAIN ACCESS THROUGH AN ALTERNATE * CHANNEL. SPACE 4,10 * GENERATE LINKED LIST OF CHANNEL INSTRUCTIONS. FWDL$ EQU 1 SELECT FORWARD LINKING RICHL SPACE 4,10 * LIST OF PROCESSOR INDICES. QUAL DC1 EQU 0 *DCP1* INDEX DC6 EQU 1 *DCP6* INDEX DC9 EQU 2 *DCP9* INDEX DC11 EQU 3 *DCP11* INDEX QUAL * DCP SPACE 4,10 ** DCP - PROCESS CHANNEL/CONTROLLER ERROR. * * ENTRY (A) = 0. * (T1) = RDCT. * (T2) = CH01$. * (T4) = CHANNEL NUMBER. * (T5) = EST ORDINAL. * * USES CM, T2. * * CALLS FNC. * * MACROS ENDMS. DCP1 RAD T2 LDI T2 MODIFY CHANNEL INSTRUCTIONS LPN 37 STD CM LDD T4 SBD CM RAI T2 LDD CM NJN DCP1 IF MORE INSTRUCTIONS LDM CHRV PREVENT OPERATION COMPLETE SCN 10 STM CHRV LDM DEST LPN 40 ZJN DCP2 IF NOT AN ISD DEVICE LJM DCP6 AVOID DROP SEEKS AND CONTROLLER HANG DCP2 AOM DCPA SET TIME-OUT FLAG LDM UERR ERRNZ EPDE-400-EPSM CODE ASSUMES VALUES SHN 21-10 MJN DCP4 IF *ENDMS* IS DISABLED LDC DCP3 SET ERROR EXIT ADDRESS STM ERRA * RELEASE ALL UNITS RESERVED TO CONTROLLER. LDN FCDK RELEASE ALL BUT LAST DRIVE ACCESSED RJM FNC DCN CH+40 LDN FCDR RELEASE LAST DRIVE ACCESSED RJM FNC SOM DCPA CLEAR TIME-OUT FLAG DCP3 DCN CH+40 * SINCE IT IS KNOWN THE CONTROLLER CONTAINS A RAM PARITY * ERROR, IT IS DESIRABLE TO LEAVE THE CONTROLLER IN SUCH A * STATE THAT THE NEXT PP TO ACCESS IT DISCOVERS THE ERROR * ALSO. THE METHOD USED TO ACCOMPLISH THIS IS TO ISSUE A * PROCESSOR MANIPULATION FUNCTION TO CAUSE THE CONTROLLER TO * HANG ON A ZERO INSTRUCTION. DCP4 LDC DCP5 SET ERROR EXIT ADDRESS STM ERRA LDN FCMP HANG CONTROLLER RJM FNC LDN 5 OAM DCPB,CH DCP5 LDC LEP1 RESET ERROR EXIT ADDRESS STM ERRA DCN CH+40 DCP6 LDM UERR ERRNZ EPDE-400-EPSM CODE ASSUMES VALUES SHN 21-10 MJN DCP8 IF *ENDMS* DISABLED ENDMS LDM CHRV SHN 21-4 MJN DCP11 IF CALLER SELECTED CHANNEL DCPA LDN 0 * LDN 1 (*FCDK*/*FCDR* TIMED OUT) DCP8 NJN DCP11 IF DRIVES NOT RELEASED DCP9 STD CM LDI T1 LPC 500 STI T1 SOM HEDR+6 LDM DEST LPC -3000 STM DEST LDD CP CLEAR CONTROL POINT MESSAGE ADN MS2W CWD CM LJM LDA1 RETRY I/O DCP11 LDM DEST SET UNRECOVERED FLAG LPC -2000 LMC 2000 STM DEST LJM LEP EXECUTE *7EQ* DCPB CON 4,0,27,0,0 PCE SPACE 4,20 ** PCE - PROCESS CHANNEL/CONTROLLER ERROR. * * ENTRY (T3) = PROCESSOR INDEX. * = 0 FOR *DCP1*. * = 1 FOR *DCP6*. * = 2 FOR *DCP9*. * = 3 FOR *DCP11*. * (MB+2) = ORIGINAL CELLS (T3 - T7). * (MB+3 - MB+5) = LAST THREE WORDS OF DETAILED STATUS. * * EXIT (A) = 0. * (T3 - T7) = RESTORED FROM (MB+2). * (MB+3 - MB+5) = UNCHANGED. * * USES CM. * * NOTE IF THE TAGS IN *7GI* ARE RENAMED OR RENUMBERED, * THE TABLE INDEX MNEMONICS DEFINED ABOVE SHOULD ALSO * BE UPDATED TO REFLECT THOSE CHANGES (FOR CLARITY). DGI ENTRY *7GI* ENTRY PCE BSS 0 LDM TPCE,T3 SET PROCESSOR ADDRESS STD CM LDD MA RESTORE DIRECT CELLS ADN 2 CRD T3 LDN 0 LJM 0,CM EXIT TO PROCESSOR TPCE BSS 0 PROCESSOR ADDRESSES LOC 0 DC1 CON DCP1 DC6 CON DCP6 DC9 CON DCP9 DC11 CON DCP11 LOC *O DCP SPACE 4,10 HERE TERMINATE LINKED CHANNEL INSTRUCTIONS SPACE 4,10 ERRNG 10000-* OVERFLOW BSS 10000-* SPARES CON DGI-1 (T0) = ENTRY ADDRESS - 1 CON RDCT (T1) = RDCT CON CH01$ (T2) = CH01$ ERRNZ LN-* INCORRECT *7GI* OVERLAY LENGTH QUAL * 7HI MSOVL 7574,T2,DSFA+4,(CONTROLWARE RELOAD PROCESSOR.) SPACE 4,10 *** PROCESS CONTROLWARE RELOAD. * P. D. HAAS. 83/04/29. 7HI SPACE 4,10 * *7HI* IS CALLED BY *7JI* TO RELOAD CHANNEL OR CONTROL * MODULE CONTROLWARE. *7HI* SETS THE RELOAD FLAG FOR THE * CHANNEL OR CONTROL MODULE AND THEN CALLS *1DS* TO START A * *LOADBC* JOB WHICH RELOADS THE CONTROLWARE. *7HI* WILL WAIT * UP TO *CRTO* SECONDS FOR THE RELOAD TO COMPLETE BEFORE GIVING * UP. SPACE 4,10 ** COMMON DECKS. *CALL COMS1DS RCW SPACE 4,25 ** RCW - RELOAD CONTROLWARE PROCESSOR. * * ENTRY (T1) = DEST. * (T2) = RELOAD TIMEOUT VALUE. * (T3) = ADDRESS + *CM* OF BYTE CONTAINING * RELOAD FLAGS. * (T4) = CONTROL MODULE ACCESS INDICATOR. FOR C/M * RELOADS, 1 INDICATES PRIMARY CHANNEL SHOULD * BE USED FOR RELOAD. 0 INDICATES SECONDARY * CHANNEL SHOULD BE USED. THIS CELL IS * UNUSED FOR NON-C/M RELOADS. * (T5) = SYSTEM CP *MS2W* ADDRESS. * (T6 - T7) = ADDRESS OF RELOAD INTERLOCK WORD. * (DEST) = ERROR PROCESSING CONTROL WORD. * (MB+2) = ORIGINAL CELLS (T3 - T7) * (MB+3 - MB+5) = LAST THREE WORDS OF DETAILED STATUS. * * EXIT TO *7GI*. * (T3) = *7GI* PROCESSOR INDEX. * (MB+2) = UNCHANGED. * (MB+3 - MB+5) = UNCHANGED. * * USES CM - CM+4, T0 - T7. * * CALLS FTN, SCT. * * MACROS DELAY, MONITOR, MSERR, PAUSE. DHI ENTRY *7HI* ENTRY RCW LDI T1 SHN 0-1 LPN 3 LMN 3 NJN RCW0 IF NOT CONTROL MODULE RELOAD LDD T4 STORE C/M ACCESS INDICATOR RAM SCTC+4 SET PRIMARY OR SECONDARY CHANNEL SOM RCWD AVOID DOWNING CHANNEL IF RELOAD FAILS ERRNZ RCW8-RCW7-1 CODE ASSUMES *RCW8* = RCW7* + 1 AOM RCWC+4 INDICATE CONTROL MODULE RELOAD TO *1DS* UJN RCW0.1 BEGIN RELOAD RCW0 LDM SCTA-CM,T3 DEFINE LOCATION OF LOAD FLAGS STM SCTC+1 STM SCTB+1 SOM SCTC SET CORRECT FIELD WIDTH FOR NON-C/M LOAD STM SCTC+4 SET CORRECT FIELD VALUE * SET THE CONTROLWARE RELOAD FLAG FOR THE APPROPRIATE CHANNEL * OR CONTROL MODULE. RCW0.1 LDN 2 SET *UTEM* PARAMETER COUNT FOR *SCT* STD T4 RJM SCT NJN RCW3 IF RELOAD ALREADY REQUESTED OR IN PROGRESS * INITIATE A CONTROLWARE RELOAD *1DS* CALL. *1DS* WILL START A * *LOADBC* JOB TO RELOAD THE CONTROLWARE. RCW1 RJM FTN * PAUSE NE PAUSE FOR MOVE LDD MA CWM RCWC,ON STORE *1DS* CALL MONITOR RPPM LDD CM+1 ZJN RCW1 IF PP NOT ASSIGNED * WAIT *CRTO* SECONDS FOR THE RELOAD TO COMPLETE. LDN 0 RCW2 LPN 1 RCWA ZJN RCW3 IF RELOAD NOT INITIATED STM RCWA ZJN RCW4 IF RELOAD ABORTED RCW3 SOD T2 NJN RCW5 IF NOT RELOAD TIMEOUT RCW4 RJM SCT CLEAR LOAD REQUESTED FLAG NJN RCW5 IF RELOAD REQUEST NOT CLEARED LJM RCW8 CONTINUE RCWD EQU *-1 RCW5 DELAY 100D*8D 100 MILLISECOND DELAY LOOP RJM FTN * PAUSE NE LDD T6 CHECK RELOAD FLAGS SHN 14 LMD T7 CRD CM LDI T3 SHN 0-12 NJN RCW2 IF RELOAD NOT COMPLETE LDI T1 SHN 0-1 LPN 7 LMN 1 ZJN RCW6 IF 7155 B OR C AND READBACK WORKED LDM DENR LMN 1 ZJN RCW7 IF UNRECOVERABLE WITH CONTROLWARE RELOAD RCW6 LDN DC9&DC11 RCW7 LMN DC11 ERRNZ DC1 CODE DEPENDS ON VALUE RCW8 STD T3 LDN 0 STD CM LDD T5 CLEAR SYSTEM CP MESSAGE CWD CM MSERR 7GI EXECUTE *7GI* RCWC VFD 18/0L1DS,6/0,6/0,6/ILJF,24/0 SCT SPACE 4,15 ** SCT - SET (CLEAR) CONTROLWARE LOAD REQUEST FLAG. * * ENTRY (T4) = 2. * (T6 - T7) = ADDRESS OF WORD CONTAINING CONTROLWARE * LOAD FLAGS. * * EXIT (A) = RESPONSE FROM *UTEM* REQUEST. * * USES CM - CM+4. * * MACROS MONITOR. SCT SUBR ENTRY/EXIT LDD MA SETUP OUTPUT REGISTER CWD T7-4 CRD CM CWM SCTB,CM+1 STORE *UTEM* PARAMETERS MONITOR UTEM * LDN 0 RESET PARAMETERS FOR ERROR PROCESSING STM SCTC+4 LDN 2 STM SCTB+4 LDD CM+1 UJN SCTX RETURN SCTA BSS 0 TABLE OF RELOAD FLAG BIT POSITIONS CON 58DS6 CON 46DS6 CON 34DS6 CON 22DS6 CON 10DS6 SCTB VFD 1/1,5/0,6/2,6/34D,42/0 * VFD 1/1,5/0,6/2,6/34D,42/2 SCTC VFD 1/0,5/0,6/3,6/33D,42/4 * VFD 1/0,5/0,6/3,6/33D,42/0 SPACE 4,10 ERRNG 10000-* OVERFLOW BSS 10000-* SPARES CON DHI-1 (T0) = ENTRY ADDRESS - 1 CON DEST (T1) = DEST CON CRTO*10D+1 (T2) = RELOAD TIMEOUT VALUE ERRNZ LN-* INCORRECT *7HI* OVERLAY LENGTH QUAL * 7II MSOVL 7613,T2,DSFA+4,(INITIATE CONTROLWARE RELOAD.) SPACE 4,10 *** INITIATE CONTROLWARE RELOAD. * P. D. HAAS. 83/04/29. * R. M. DANISCH. 83/10/17. SPACE 4,10 *** *7II* IS CALLED BY *7EP* TO DETERMINE WHETHER OR NOT * A CONTROLWARE RELOAD IS POSSIBLE. IF SO, *7JI* IS CALLED TO * BEGIN THE RELOAD PROCESS. IF NOT, *7GI* IS CALLED TO TRY AND * DOWN THE CHANNEL ON WHICH THE ERROR OCCURRED. 7II SPACE 4,10 ** ICR - INITIATE CONTROLWARE RELOAD. * * ENTRY (T1) = DEST. * (T2) = DEEC. * (T4) = CHANNEL NUMBER. * (DEEC) = ERROR CODE. * (DEST) = ERROR PROCESSING CONTROL WORD. * (MB+3 - MB+5) = LAST THREE WORDS OF DETAILED STATUS. * * EXIT TO *7GI* IF NO CONTROLWARE RELOAD. * (T3) = *7GI* PROCESSOR INDEX. * (MB+2) = ORIGINAL CELLS (T3 - T7). * (MB+3 - MB+5) = UNCHANGED. * * TO *7JI* IF CONTROLWARE RELOAD. * (T3) = ADDRESS OF BYTE CONTAINING RELOAD FLAGS. * (T4) = CONTROL MODULE ACCESS INDICATOR. FOR C/M * RELOADS, 1 INDICATES PRIMARY CHANNEL SHOULD BE * USED FOR RELOAD. 0 INDICATES SECONDARY CHANNEL * SHOULD BE USED. THIS CELL IS UNUSED FOR * NON-C/M RELOADS. * (T5) = CONTROL MODULE EST ORDINAL IF C/M RELOAD. * (T6-T7) = ADDRESS OF RELOAD INTERLOCK WORD. * (MB+2) = ORIGINAL CELLS (T3 - T7). * (MB+3 - MB+5) = UNCHANGED. * * USES CM - CM+4, T0 - T7. * * CALLS FCM, FCT. * * MACROS MSERR. DII ENTRY *7II* ENTRY * IF THE ERROR IS EITHER A CHANNEL PARITY ERROR OR A CONTROLLER * STOP, PROCEED TO *7GI* TO TRY AND DOWN THE CHANNEL. ICR LDD MA SAVE DRIVER PARAMETERS ADN 2 CWD T3 LDI T2 SBN RAME PJN ICR2 IF FUNCTION TIMEOUT / RAM PARITY LDN DC6&DC11 ICR0 LMN DC11 ERRNZ DC1 CODE DEPENDS ON VALUE ICR1 STD T3 MSERR 7GI EXECUTE *7GI* * FOR RAM PARITY ERRORS AND FUNCTION TIMEOUTS, CHECK IF THE * CONTROLWARE RELOAD LIMIT HAS ALREADY BEEN REACHED. IF NOT, * CALL *7JI* TO BEGIN THE RELOAD. ICR2 LDI T1 SHN 0-1 LPN 3 LMN 3 ZJN ICR3 IF CONTROL MODULE RELOAD ERRNZ ICR1-ICR0-1 CODE REQUIRES *ICR1* = *ICR0* + 1 AOM ICRB LDC FCT STORE ADDRESS OF NON-C/M PROCESSOR STM ICRA ICR3 RJM FCM FIND CONTROL MODULE EST ENTRY * RJM FCT (NOT CONTROL MODULE RELOAD) ICRA EQU *-1 LDD CM+1 RAD T7 SET CONTROLWARE TABLE WORD ADDRESS SHN -14 ADD CM STD T6 SHN 14 READ RELOAD FLAGS WORD LMD T7 CRD CM LDI T3 SHN -6 LPN 7 LMN CRTH ZJN ICR0 IF RELOAD THRESHOLD REACHED * ZJN ICR1 (NOT CONTROL MODULE ERROR) ICRB EQU *-1 MSERR 7JI EXECUTE *7JI* FCM SPACE 4,15 ** FCM - FIND CONTROL MODULE EST ENTRY. * * ENTRY (T4) = CHANNEL NUMBER. * (HEDR+3) = ISD UNIT NUMBER. * * EXIT (T3) = *CM* + 2. * (T4) = 1 IF PRIMARY CHANNEL SHOULD BE USED FOR RELOAD. * 0 IF SECONDARY CHANNEL SHOULD BE USED. * (T5) = CONTROL MODULE EST ORDINAL. * (T7) = RELOAD INTERLOCK WORD OFFSET FROM FWA OF EST. * (CM - CM+1) = FWA OF EST. * * USES T2 - CM+4. * * MACROS MONITOR, SFA. FCM CON 0 ENTRY LDD T4 STORE CHANNEL FOR COMPARISON RAM FCMA STM FCMB LDK ESTP CRD CM FCM1 SOD CM+2 DECREMENT EST ORDINAL CFI EST SAVE EST ENTRY OFFSET STD T7 NJN FCM3 IF NOT END OF SCAN FCM2 MONITOR HNGM UJN FCM2 HANG PP FCM3 SFA EST,CM+2 READ NEXT ENTRY ADK EQDE CRD T2 LDD T2+3 LMC 2RCM NJN FCM1 IF NOT CONTROL MODULE EST ENTRY LDD T2+4 SHN 0-6 LMM HEDR+3 SCN 7 NJN FCM1 IF WRONG EQUIPMENT LDD T2+2 SET CHANNEL INDICATOR FOR *7HI* ZJN FCM4 IF NO SECONDARY CHANNEL LPN 37 LMN ** FCMA EQU *-1 ZJN FCM5 IF SECONDARY CHANNEL IN USE FCM4 LDD T2+1 LPN 37 LMN ** FCMB EQU *-1 NJN FCM2 IF CHANNEL NOT IN EST ENTRY LDN 1 FCM5 STD T4 LDD CM+2 SAVE EST ORDINAL FOR *7HI* STD T5 LDN CM+2 SET BYTE NUMBER STD T3 AOD T7 ADVANCE TO *EQAE* WORD OF EST ENTRY ERRNZ EQAE-1 CODE ASSUMES *EQAE* = 1 FCM6 LJM ICRA+1 RETURN FCT SPACE 4,10 ** FCT - FIND CONTROLWARE TABLE ENTRY. * * ENTRY (T4) = CHANNEL NUMBER. * * EXIT (T3) = CHANNEL NUMBER MODULO 5 + *CM*. * (T7) = WORD OFFSET RELATIVE TO FWA OF CONTROLWARE * TABLE. * (CM - CM+1) = FWA OF CONTROLWARE TABLE. * * USES T3, T4, T6 - CM+2. FCT CON 0 ENTRY LDD T4 STORE CHANNEL NUMBER RAM FCTA FNC FCAL,CH ISSUE SHORT AUTOLOAD FCTA EQU *-2 LDC CHTP READ CHANNEL TABLE POINTER CRD CM-2 LDN 2*CTALL-1 INITIALIZE WORD OFFSET STD T7 FCT1 AOD T7 INCREMENT WORD OFFSET LCN 5 RAD T4 PJN FCT1 IF CORRECT WORD NOT REACHED ADN CM+5 SAVE BYTE NUMBER + *CM* STD T3 UJN FCM6 RETURN SPACE 4,10 ERRNG 10000-* OVERFLOW BSS 10000-* SPARES CON DII-1 (T0) = ENTRY ADDRESS - 1 CON DEST (T1) = DEST CON DEEC (T2) = DEEC ERRNZ LN-* INCORRECT *7II* OVERLAY LENGTH QUAL * 7JI MSOVL 7702,T2,DSFA+4,(ISSUE RELOAD MESSAGE.) SPACE 4,10 *** ISSUE RELOAD MESSAGE. * R. M. DANISCH. 83/10/11. 7JI SPACE 4,10 *** *7JI* IS CALLED BY *7II* TO ISSUE A MESSAGE TO THE * SYSTEM CONTROL POINT TO SHOW THE OPERATOR WHAT CHANNEL OR * CONTROL MODULE IS HAVING ITS CONTROLWARE RELOADED. *7JI* * THEN CALLS *7HI* TO BEGIN THE ACTUAL RELOAD. IRM SPACE 4,30 ** IRM - ISSUE RELOAD MESSAGE. * * ENTRY (T1) = DEST. * (T2) = HEDR+7. * (T3) = ADDRESS + *CM* OF BYTE CONTAINING RELOAD FLAGS. * (T4) = CONTROL MODULE ACCESS INDICATOR. FOR CONTROL * MODULE RELOADS, 1 INDICATES THE PRIMARY CHANNEL * SHOULD BE USED FOR RELOAD. 0 INDICATES * SECONDARY CHANNEL SHOULD BE USED. THIS CELL IS * UNUSED FOR NON-CONTROL MODULE RELOADS. * (T5) = CONTROL MODULE EST ORDINAL IF C/M RELOAD. * (T6 - T7) = ADDRESS OF RELOAD INTERLOCK WORD. * (DEST) = ERROR PROCESSING CONTROL WORD. * (MB+2) = ORIGINAL (T3 - T7). * (MB+3 - MB+5) = LAST THREE WORDS OF DETAILED STATUS. * * EXIT TO *7HI*. * (T3) = UNCHANGED. * (T4) = UNCHANGED. * (T5) = SYSTEM CP *MS2W* ADDRESS. * (T6 - T7) = UNCHANGED. * (MB+2) = UNCHANGED. * (MB+3 - MB+5) = UNCHANGED. * * USES T5, CM - CM+4. * * MACROS MSERR. DJI ENTRY *7JI* ENTRY IRM LDI T1 SHN 0-1 LPN 3 LMN 3 NJN IRM1 IF NOT CONTROL MODULE RELOAD LDC 2REQ CONVERT MESSAGE FOR C/M RELOAD STM IRMA+5 UJN IRM2 CONVERT EST ORDINAL IRM1 LDI T2 GET CHANNEL NUMBER SHN -6 STD T5 LDC 2R 0 STM IRMA+6 IRM2 LDD T5 CONVERT CHANNEL OR EST ORDINAL TO DISPLAY LPN 7 SHN 6 RAM IRMA+7 LDD T5 SHN -3 LPN 7 LMD T5 LPN 77 LMD T5 RAM IRMA+6 LDN NCPL WRITE MESSAGE TO SYSTEM CONTROL POINT CRD CM AOD CM+1 SHN 7 ADN MS2W STD T5 CWM IRMA,TR MSERR 7HI EXECUTE *7HI* IRMA DATA C*RELOADING CH000 CONTROLWARE.* IRM SPACE 4,10 ERRNG 10000-* OVERFLOW BSS 10000-* SPARES CON DJI-1 (T0) = ENTRY ADDRESS - 1 CON DEST (T1) = DEST CON HEDR+7 (T2) = POINTER TO CHANNEL NUMBER ERRNZ LN-* INCORRECT *7JI* OVERLAY LENGTH QUAL * 7KI MSOVL 7567,T2,DSFA+4,(EXECUTE LEVEL 1 DIAGNOSTICS.) SPACE 4,10 *** EXECUTE LEVEL 1 DIAGNOSTICS. * R. M. DANISCH. 83/10/17. SPACE 4,10 *** *7KI* IS CALLED BY *7EO* FOR UNRECOVERED ERRORS ON * ISD DEVICES. IT ISSUES A SPINUP COMMAND TO EXECUTE * LEVEL 1 DIAGNOSTICS IN THE CONTROL MODULE. FOLLOWING * COMPLETION OF THE DIAGNOSTICS EXECUTION, *7EP* IS ENTERED * TO ISSUE A BML MESSAGE NOTING DIAGNOSTIC RESULTS FOR *HPA*. SPACE 4,10 * GENERATE LINKED LIST OF CHANNEL INSTRUCTIONS. FWDL$ EQU 1 SELECT FORWARD LINKING RICHL 7KI SPACE 4,10 ** EXD - EXECUTE LEVEL 1 DIAGNOSTICS. * * ENTRY (T1) = DEDT. * (T2) = FIRST CHANNEL INSTRUCTION ADDRESS. * (T4 - T7) = DRIVER PARAMETERS. * (DEDT) = ERROR PROCESSING CONTROL WORD. * (MSGH - MSGH+4) = *EMB* MESSAGE HEADER. * (HEDR - HEDR+11) = BML MESSAGE HEADER. * (DDMD - DDMD+4) = DEVICE DEPENDENT MESSAGE DATA. * (DSFA - DSFA+4) = FIRST WORD OF DETAILED STATUS. * (MB+2 - MB+5) = DETAILED STATUS TAKEN BY *7CI*. * * EXIT (T4 - T7) = UNCHANGED. * (MSGH - MSGH+4) = UNCHANGED. * (HEDR - HEDR+11) = BML MESSAGE HEADER. * (DDMD - DDMD+4) = DEVICE DEPENDENT MESSAGE DATA. * (DSFA - DSFA+23) = DETAILED STATUS TAKEN BY *7KI*. * (MB+2 - MB+5) = DETAILED STATUS TAKEN BY *7KI*. * * USES T0 - T2, CM - CM+4. * * CALLS FNC. * * MACROS DELAY, MSERR, PAUSE. DKI ENTRY *7KI* ENTRY LDI T1 CHECK INITIAL CALL LPN 20 NJN EXD1 IF FIRST FAILURE MESSAGE ISSUED LDM ERXA STI D1 SAVE ERROR RETURN ADDRESS MSERR 7KI,* STM ERR2+1 MODIFY ERROR PROCESSOR CALL LDC ERR2 STM ERXA LDN 20 SET RETURN TO ERROR PROCESSOR RAI T1 LJM LEP ISSUE FIRST FAILURE MESSAGE EXD1 LDI D1 RESTORE ERROR RETURN ADDRESS STM ERXA LCN 20 CLEAR RETURN TO ERROR PROCESSOR RAI T1 MSERR 7SI,* RESTORE ERROR PROCESSOR CALL STM ERR2+1 LDN 0 EXD2 RAD T2 MODIFY CHANNEL INSTRUCTIONS LDI T2 LPN 37 STD T0 LDD T4 SBD T0 RAI T2 LDD T0 NJN EXD2 IF MORE INSTRUCTIONS TO MODIFY * ISSUE SPINUP FUNCTION TO EXECUTE LEVEL ONE DIAGNOSTICS. EXD3 LDN 0 STD CM INITIALIZE *FCSU* TIMEOUT FLAG STD T2 INITIALIZE CHANNEL PARITY RETRY COUNT LDC EXD5 STM ERRA SET ERROR EXIT ADDRESS LDN FCSU ISSUE SPINUP FUNCTION RJM FNC LDN 1 OUTPUT PARAMETER OAM HEDR+3,CH NJN EXD5 IF INCOMPLETE TRANSFER EXD4 SBN 1 ZJN EXD5 IF TIMEOUT FJM EXD4,CH IF CHANNEL FULL AOD CM INDICATE NO ERROR ON *FCSU* EXD5 DCN CH+40 * TAKE GENERAL STATUS. IF STATUS SHOWS SPINUP STILL IN * PROGRESS, LOOP ISSUING SPINUP AND GENERAL STATUS FUNCTIONS * UNTIL DIAGNOSTICS COMPLETE. IF GENERAL STATUS CANNOT BE * TAKEN, EXIT TO *7EP*. LDC EXD11 SET ERROR EXIT ADDRESS STM ERRA EXD6 AOD T2 INCREMENT CHANNEL PARITY RETRY COUNT LMN CHRT+1 ZJN EXD7 IF CHANNEL PARITY RETRY LIMIT REACHED LDN FCGS ISSUE GENERAL STATUS FUNCTION RJM FNC LDN 1 INPUT GENERAL STATUS IAM DEGS,CH ZJN EXD9 IF DATA TRANSFER COMPLETE EXD7 LJM EXD11 CALL *7EP* EXD8 LJM EXD3 REISSUE SPINUP FUNCTION EXD9 STD T2 CLEAR CHANNEL PARITY RETRY COUNT LDD CM SFM EXD6,CH IF CHANNEL PARITY ERROR ZJN EXD10 IF *FCSU* TIMED OUT LDM DEGS STM DDMD+4 SET GENERAL STATUS IN MESSAGE LMN 2 NJN EXD10 IF NOT BUSY STATUS DELAY 1*8D DELAY FOR 1 MILLISECOND PAUSE LDD CM+1 LMN ORET NJN EXD8 IF NOT OPERATOR OVERRIDE * TAKE DETAILED STATUS. EXD10 AOD T2 INCREMENT CHANNEL PARITY RETRY COUNT LMN CHRT+1 ZJN EXD11 IF CHANNEL PARITY RETRY LIMIT REACHED LDN FCDS ISSUE DETAILED STATUS RJM FNC LDN DSLN INPUT DETAILED STATUS IAM DSFA,CH NJN EXD11 IF DATA TRANSFER ERROR SFM EXD10,CH IF CHANNEL PARITY ERROR LDN DSLN/5 STD T2 LDD MA ADN 2 SAVE NEW DETAILED STATUS CWM DSFA,T2 LDC /COMSDFS/RS0200+/COMSDFS/D6DJ*400 SET SYMPTOM CODE STM HEDR+1 UJN EXD12 CALL *7EP* EXD11 DCN CH+40 LDM DEST INHIBIT BML MESSAGE LPC 3777 STM DEST EXD12 MSERR 7EP EXECUTE *7EP* EXD SPACE 4,10 HERE TERMINATE LINKED CHANNEL INSTRUCTIONS EXD SPACE 4,10 ERRNG 10000-* OVERFLOW BSS 10000-* SPARES CON DKI-1 (T0) = ENTRY ADDRESS - 1 CON DEDT (T1) = DEDT CON CH01$ (T2) = FIRST CHANNEL INSTRUCTION ADDRESS ERRNZ LN-* INCORRECT *7KI* OVERLAY LENGTH QUAL * 7SI MSOVL 7733,T2,DSFA+4,(STATUS PROCESSOR.) SPACE 4 *** MASS STORAGE STATUS PROCESSOR. * R. J. THIELEN. 75/11/20. * W. E. GOEBEL. 77/01/24. 7SI SPACE 4,10 *** *7SI* IS CALLED BY *7EP* TO PERFORM ADDITIONAL * DETAILED STATUS PROCESSING. IF A CORRECTION VECTOR IS * PROVIDED IN DETAILED STATUS, *7SI* CORRECTS THE ERROR IN THE * READ BUFFER AND THEN EXITS TO *7EQ* TO COMPLETE ERROR * RECOVERY. FOR OTHER ERRORS, *7SI* REENTERS THE DRIVER AND * ISSUES A *CONTINUE* FUNCTION CAUSING THE CONTROLLER TO RETRY * THE PREVIOUS OPERATION. DSI SPACE 4 ** DSI - MAIN ROUTINE. * * ENTRY (T1) = DEGS. * (T2) = DERW. * (T4 - T7) = DRIVER PARAMETERS. * (DERW) = 1 IF WRITE REQUEST, 0 IF READ REQUEST. * (DEGS) = GENERAL STATUS. * (HEDR - HEDR+11) = BML MESSAGE HEADER. * (HEDR+12 - HEDR+16) = FIRST WORD OF DETAILED STATUS. * (MB+3 - MB+5) = LAST THREE WORDS OF DETAILED STATUS. * * EXIT TO *6DI* IF CONTINUE FUNCTION TO BE ISSUED. * TO *7EQ* IF ERROR CAN BE CORRECTED ON THE FLY. * (T4 - T7) = UNCHANGED. * (MB+3 - MB+5) = UNCHANGED. * * USES CM, CM+1. DSI ENTRY *7SI* ENTRY LDI T2 ZJN DSI1 IF READ LDN WDS4-RDS3 SET EXIT ADDRESS FOR CONTINUE DSI1 STD CM+1 LDI T1 LPN 40 NJN DSI2 IF CORRECTABLE ON THE FLY LDN FCCO LJM RDS3,CM+1 ISSUE CONTINUE FUNCTION * PERFORM ERROR CORRECTION. DSI2 LDD MA ADN 3 CRM DSFA+5,TR READ IN REMAINDER OF DETAILED STATUS ERRNG *-DSFA-DSLN DATA READ IN DESTROYS CODE LDM DSFA+14 SET BUFFER ADDRESS LPC 777 ADM RDSB STD CM LDM DSFA+15 PERFORM CORRECTION ON FIRST WORD LMI CM STI CM AOD CM LDM DSFA+16 PERFORM CORRECTION ON SECOND WORD LMI CM STI CM LJM LEP CALL *7EQ* TO REPORT RECOVERY SPACE 4 ERRNG 10000-* *7SI* HAS OVERFLOWED BSS 10000-* SPARES (ADJUST ORIGIN BY 5 AS REQUIRED) CON DSI-1 ENTRY ADDRESS - 1 CON DEGS (T1) = DEGS CON DERW (T2) = DERW ERRNZ LN-* INCORRECT *7SI* OVERLAY LENGTH QUAL * 7WI MSOVL 7732,T1,DEEC,(WRITE ERROR PROCESSOR.) SPACE 4 *** WRITE ERROR PROCESSOR. * W. E. GOEBEL. 77/01/24. SPACE 4 *** THE WRITE ERROR PROCESSOR IS CALLED ONLY WHEN * WRITING IN FULL TRACK MODE UTILIZING THE 715X CONTROLLER * OR THE FSC CHANNEL ADAPTOR. *7WI* IS CALLED TO * RETRY THE CURRENT SECTOR AFTER THE ERROR PROCESSOR * HAS INITIATED A RETRY OF THE PREVIOUS SECTOR. THE PREVIOUS * SECTOR HAD BEEN DETECTED TO BE IN ERROR BY A FUNCTION * TIME OUT. * * IF THE PREVIOUS SECTOR WAS SUCCESSFULLY WRITTEN * AND THE CURRENT SECTOR DATA STILL EXISTS (BUFFER SPECIFIED * IN WDSE) NORMAL PROCESSING WILL RESUME AT THE CURRENT SECTOR. * * IF NO BUFFER WAS SPECIFIED VIA WDSE THE CURRENT SECTOR * DATA DOES NOT EXIST IN THE PPU FOR RETRY. IN THIS CASE * CONTROL WILL BE RETURNED TO THE CALLING PROGRAM WITH BIT 11 * OF THE ACCUMULATOR (AND *RDCT*) SET. * * ENTRY (T1) = RDS. * (T2) = 0 IF PREVIOUS SECTOR ERROR WAS RECOVERED. * (RDS) = *WDS* EXIT ADDRESS. * (RDSB) = BUFFER ADDRESS. * (WDSE) = WRITE ERROR BUFFER ADDRESS (IF ANY). * (DEEC) = ERROR CODE. * * EXIT (A) = 1/1, 5/0, 12/(RDCT) * (RDCT) = 1/0, 1/1, 1/F, 3/0, 6/E. * F = 1 IF CURRENT SECTOR DATA WAS DESTROYED BY * PREVIOUS SECTOR RECOVERY. CALLER SHOULD * REISSUE CURRENT SECTOR WRITE REQUEST. * E = ERROR CODE. * (T7) = CURRENT SECTOR. * * USES T1, T7. * * MACROS ENDMS. PWI SPACE 4,10 DWI ENTRY *7WI* ENTRY PWI AOD T7 ADVANCE TO CURRENT SECTOR LDM RDSB RESTORE BUFFER ADDRESS STM WDSC LDI T1 RESTORE EXIT ADDRESS STD T1 STM WDS LDD T2 NJN PWI1 IF UNRECOVERED ERROR LDD TH SET *REISSUE CURRENT SECTOR* FLAG RAM PWIA LDM WDSE NJN PWI2 IF ERROR RECOVERY BUFFER SPECIFIED LDM UERR ERRNZ EPDE-400-EPSM CODE ASSUMES VALUES SHN 21-10 MJN PWI1 IF *ENDMS* DISABLED ENDMS PWI1 LDM DEEC SET ERROR PROCESSOR INTERFACE WORD LMC 1S17D+1S10D PWIA EQU *-1 STM RDCT LJM 0,T1 RETURN PWI2 LJM LDA1 RETRY CURRENT SECTOR ERRNG 10000-* *7WI* HAS OVERFLOWED BSS 10000-* SPARES (ADJUST ORIGIN BY 5 AS REQUIRED) CON DWI-1 (T0) = ENTRY ADDRESS - 1 CON RDS (T1) = *RDS* ERRNZ LN-* INCORRECT *7WI* OVERLAY LENGTH QUAL * TITLE 0TI - TRACK FLAW PROCESSOR. QUAL 0TI IDENT 0TI,FFIX "HN" TRACK FLAW PROCESSOR. *COMMENT 6DI - "HN" TRACK FLAW PROCESSOR. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. FFI SPACE 4 *** TRACK FLAW PROCESSOR. * R. J. THIELEN. 75/11/20. * W. E. GOEBEL. 77/01/24. * J. R. HILDEBRAND. 82/01/12. FFI SPACE 4 *** THE TRACK FLAW PROCESSOR READS FLAW MAPS FROM DISK * PACKS AND FLAWS LOGICAL TRACKS CORRESPONDING TO THE PHYSICAL * FLAW ADDRESSES RECORDED THERE. * * ** ENTRY CONDITIONS. * * ((LA)-1) = EQUIPMENT. * * THE TRACK FLAW PROCESSOR IS CALLED IN THE SAME MANNER AS * LOCATION FREE OVERLAYS. * * * EXIT CONDITIONS. * * (A) = NON-ZERO IF FLAWING INCOMPLETE. * (T5) = EQUIPMENT EST ORDINAL. * TRACKS FLAWED IN TRT IF POSSIBLE TO DO SO. * * CALLS RDS. * * USES DIRECT CELLS 00 - 17, BFMS - BFMS+501. * * * NOTES - * * MODIFIES READ FUNCTION CODE IN MAIN DRIVER AND CLEARS * *MSD* SO THAT DRIVER WILL BE RELOADED BY A *SMS*. * * PHYSICAL FLAW INFORMATION IS RECORDED IN THE UTILITY * SECTOR IN 24 BIT FORMAT AS FOLLOWS * * 1/S, 1/T, 10/CY, 6/HD, 6/SC * * WHERE S = SECTOR FLAW IF SET = 1 * T = TRACK FLAW IF SET = 1 * CY = CYLINDER * HD = HEAD * SC = SECTOR * * THE MAIN OVERLAY, 0TI, CONTAINS COMMON SUBROUTINES AND * PROCESSORS FOR THE FOLLOWING DEVICES - * * DI * DJ * * AN AUXILLIARY OVERLAY, 0TJ, CONTAINS PROCESSORS FOR - * * DK * DL * DM * DQ * DR * DX * DY * DZ * DA * DB * DC * * THE FOLLOWING TYPES OF DEVICES DO NOT HAVE FLAW MAPS RECORDED * ON DISK, SO *0TI* IS IMMEDIATELY EXITED - * * DD * DG SPACE 4 ** DIRECT LOCATION ASSIGNMENTS. T8 EQU 16 TEMPORARY T9 EQU 17 TEMPORARY SPACE 4 * REDEFINE INSTRUCTIONS FOR LOCATION FREE EXECUTION. RIREL REDEFINE INSTRUCTIONS FFI SPACE 4,10 ORG 5 FFI SUBR ENTRY/EXIT RJM PRS PRESET FLAW PROCESSING ZJN FFIX IF NO FLAW MAP ON DISK TO READ MJN FFIX IF NO ALGORITHM INDEX * MAIN FLAW PROCESSING LOOP. FFI1 LDC 0 * LDC NTDA/2 (DA DEVICE) FFID EQU *-1 RJM POM PROCESS ONE FLAW MAP FFIA UJN FFI2 CONTINUE * LDD T9 (PROCESS SECOND *DA* FLAW MAP) ADC -NTDA/2 STD T9 LDN 0 RJM POM PROCESS FLAW MAP FOR SECOND *DA* VOLUME FFI2 LDC ** SINGLE UNIT SECTOR LIMIT FFIB EQU *-1 RAD T7 ADVANCE LOGICAL SECTOR ADDRESS SBM. SLM MJN FFI1 IF MORE UNITS FOR THIS DEVICE FFIC UJN *+2 CONTINUE * RJM FCE (*DA* DEVICE) VFD 12/FCE LDD T8 ERROR STATUS UJN FFIX EXIT POM SPACE 4,10 ** POM - PROCESS ONE FLAW MAP. * * ENTRY (A) = *NTDA*/2, IF FIRST CALL FOR A *DA* DEVICE. * 0 IF NOT. * T9 = LOGICAL TRACK NUMBER OF UTILITY FLAW SECTOR. * * EXIT T8 INCREMENTED IF ERROR. * * CALLS RDS, FLAW PROCESSORS. POM2 AOD T8 COUNT ERROR POM SUBR STM POMA+1 SET *DA* TRACK BIAS LDD T9 SET DEADSTART CYLINDER TRACK ADDRESS STD T6 LDC BFMS RESET UTILITY MAP INDEX STD T3 RJM. RDS READ UTILITY SECTOR SHN -17D STD T6 SAVE STATUS ENDMS LDD T6 NJN POM2 IF ERROR IN READ * CONVERT FLAWS FROM PHYSICAL TO LOGICAL. POM1 LDI T3 READ TRACK ADDRESS ZJN POMX IF NO MORE FLAWS LPC 1777 POMA ADC 0 * ADC NTDA/2 (FIRST CALL FOR *DA* DEVICE) SHN 1 STD T6 POMB RJM ** PROCESS FLAW LDN 2 ADVANCE UTILITY SECTOR INDEX RAD T3 UJN POM1 CONTINUE PROCESSING FLT SPACE 4 ** FLT - FLAW LOGICAL TRACK. * * ENTRY (T6) = LOGICAL TRACK. * * EXIT LOGICAL TRACK FLAWED IF WITHIN TRT. * * USES CM+1 - CM+3. FLT SUBR ENTRY/EXIT LDD T6 CHECK IF TRACK WITHIN TRT STD CM+2 ADC -** FLTA EQU *-1 NUMBER OF TRACKS PJN FLTX IF BEYOND TRT LDN STFS SELECT TRACK FLAW FUNCTION STD CM+3 LDD T5 SET EQUIPMENT STD CM+1 MONITOR STBM SET TRACK FLAW UJN FLTX EXIT PRS SPACE 4,10 ** PRS - PRESET FLAW PROCESSOR. * * LOAD DRIVER AND PRESET FOR UTILITY SECTOR READ. * LOAD AUXILLIARY OVERLAY IF NEEDED. * MODIFY CODE FOR PROPER DEVICE. * * EXIT (T9) = LOGICAL TRACK OF UTILITY SECTOR. * (T7) = LOGICAL SECTOR OF UTILITY SECTOR. * (T8) = 0. * (A) .LT. 0 IF NO ALGORITHM INDEX IN MST. * (A) .EQ. 0 IF NO FLAW MAP ON DISK TO READ. * (T5) = EQUIPMENT. PRS3 RJM. EXR EXECUTE 0TJ,= LOAD AUXILLIARY PROCESSOR OVERLAY LDC -PFLA RAD LA RESTORE 0TI LOAD ADDRESS PRS4 LDM -1 STD T5 SET EST ORDINAL SETMS PIO,(DF,NR,NS) LDC ** PRSB EQU *-1 STD T7 SET SECTOR NUMBER LDC ** PRSC EQU *-1 STD T9 SET TRACK NUMBER LDN 0 STD T8 PRESET RETURN STATUS LDC LDNI+FCRU SET UTILITY SECTOR FUNCTION CODE STM. RDSA PRS SUBR PFLA BSS 0 AUXILLIARY PROCESSOR OVERLAY ORIGIN LDM -1 SET EST ORDINAL STD T5 SFA EST ADK EQDE CRD CM READ EST ENTRY LDD CM+4 SHN 3 ADN DILL READ ALGORITHM INDEX CRD CM SBN DILL-TDGL CRD CM-1 LCN 0 SET NUMBER OF TRACKS LMD CM-1+2 SHN 2 STM FLTA STORE IN *FLT* SUBROUTINE * SET ALGORITHM INDEX DEPENDENT PARAMETERS. LDD CM+4 LPN 77 SBN 1 MJN PRSX IF NO ALGORITHM INDEX STD T0 SHN 2 SET *TALP* OFFSET ADD T0 ADD LA STD T3 LDM. TALP,T3 SET LOGICAL TRACK ZJN PRSX IF NO FLAW MAP ON DISK TO READ STM PRSC LDM. TALP+1,T3 SAVE LOGICAL SECTOR STM PRSB LDM. TALP+2,T3 SET FLAW PROCESSOR STM POMB+1 LDM. TALP+3,T3 SET SINGLE UNIT SECTOR LIMIT STM FFIB LDD T0 SBN AIDA-1 NJN PRS1 IF NOT A *DA* DEVICE LDC NTDA/2 SET UP FOR *DA* PROCESS STM FFID LDC LDDI+T9 STM FFIA LDC RJMI+LA STM FFIC PRS1 LDM. TALP+4,T3 NJN PRS2 IF AUXILLIARY OVERLAY NEEDED LJM PRS4 LOAD DRIVER PRS2 LDC PFLA RAD LA SET LOAD ADDRESS FOR AUXILLIARY OVERLAY LDM. TALP+4,T3 SHN 6 ADN 1R0 SHN 18D-6 LJM PRS3-PFLA LOAD AUXILLIARY PROCESSOR OVERLAY TALP SPACE 4 ** TALP - TABLE OF ALGORITHM INDEX DEPENDENT PARAMETERS. * * ENTRY = 5 BYTES. * WORD 1 = LOGICAL TRACK OF FLAW INFORMATION. * WORD 2 = LOGICAL SECTOR OF FLAW INFORMATION. * WORD 3 = FLAW PROCESSOR ADDRESS. * WORD 4 = SINGLE UNIT SECTOR LIMIT. * WORD 5 = PROCESSOR OVERLAY NAME. TALP INDEX INDEX 5*AIDI-5,(7150,1,FPI,SLDI,0) INDEX 5*AIDJ-5,(7154,1,FPJ,SLDJ,0) INDEX 5*AIDK-5,(7150,2,FPK,SLDK,2RTJ) INDEX 5*AIDL-5,(7154,2,FPL,SLDL,2RTJ) INDEX 5*AIDM-5,(7223,20,FPM,SLDM,2RTJ) INDEX 5*AIDQ-5,(7222,41,FPQ,SLDQ,2RTJ) INDEX 5*AIDR-5,(0,0,0,0,0) INDEX 5*AIDD-5,(0,0,0,0,0) INDEX 5*AIDG-5,(0,0,0,0,0) INDEX 5*AIDX-5,(7150,1,FPX,SLDX,2RTJ) INDEX 5*AIDY-5,(7134,1,FPY,SLDY,2RTJ) INDEX 5*AIDZ-5,(6136,1,FPZ,SLDZ,2RTJ) INDEX 5*AIDA-5,(6137,1,FPA,SLDA,2RTJ) INDEX 5*AIDB-5,(7222,204,FPB,SLDB,2RTJ) INDEX 5*AIDC-5,(7352,1,FPC,SLDC,2RTJ) INDEX 5*AIDS-5 FPX SPACE 4,10 ** FLAW PROCESSORS. * * ENTRY (T3) = ADDRESS OF PHYSICAL ADDRESS. * (A) = (T6) = CYLINDER * 2. * * EXIT LOGICAL TRACK CORRESPONDING TO THE PHYSICAL ADDRESS * FLAWED IN THE TRT. * * MAY USE T1, T2, T6, T7, CM - CM+4. * * CALLS FLT. FPI SPACE 4 ** FPI - FLAW PROCESSOR FOR *DI* EQUIPMENTS. FPI SUBR ENTRY/EXIT RAD T6 LDM. 1,T3 TRACK AND SECTOR STD T2 SHN -6 SBN 11 MJN FPI1 IF LOWER HALF OF CYLINDER AOD T6 FPI1 LDD T2 SET EVEN ODD PHYSICAL SECTOR LPN 1 SHN 1 RAD T6 RJM FLT FLAW TRACK LDI T3 CHECK FOR TRACK MODE FLAW SHN 21-12 PJN FPIX IF NOT TRACK MODE FLAW LDD T6 LMN 2 SELECT OTHER LOGICAL TRACK STD T6 RJM FLT FLAW LOGICAL TRACK UJN FPIX EXIT FPJ SPACE 4,10 ** FPJ - FLAW PROCESSOR FOR *DJ* EQUIPMENTS. FPJ SUBR ENTRY/EXIT LDM. 1,T3 SET EVEN/ODD TRACK LPN 1 RAD T6 RJM FLT FLAW LOGICAL TRACK LDI T3 CHECK FOR TRACK MODE FLAW SHN 21-12 PJN FPJX IF NOT TRACK MODE FLAW LDD T6 SELECT OTHER LOGICAL TRACK LMN 1 STD T6 RJM FLT FLAW LOGICAL TRACK UJN FPJX EXIT SPACE 4 ERRNG 473-* OVERLAY OVERFLOWS PRU TITLE 0TJ - TRACK FLAW PROCESSOR FOR 33502. IDENT 0TJ,FFIX "HN" TRACK FLAW PROCESSOR. *COMMENT 6DI - "HN" TRACK FLAW PROCESSOR. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. ZTJ SPACE 4,10 *** TRACK FLAW PROCESSOR AUXILLIARY OVERLAY. * J. D. MEYER 80/12/12. * J. R. HILDEBRAND 82/01/12. ZTJ SPACE 4,10 *** ADDITIONAL FLAW PROCESSORS FOR *0TI*. * * CONTAINS FLAW PROCESSORS FOR THE FOLLOWING EQUIPMENTS - * * DK * DL * DM * DQ * DX * DY * DZ * DA * DB * DC * * ENTRY (T3) = ADDRESS OF PHYSICAL ADDRESS. * (A) = (T6) = CYLINDER * 2. * * EXIT LOGICAL TRACK CORRESPONDING TO THE PHYSICAL ADDRESS * FLAWED IN THE TRT. * * MAY USE T1, T2, T6, T7, CM - CM+4. * * CALLS CHS, FLT, PTF. SPACE 4 ORG 5 LOC PFLA+5 ZTJ SUBR UJN ZTJX RETURN AFTER LOADING ROUTINES FPK SPACE 4 ** FPK - FLAW PROCESSOR FOR *DK* EQUIPMENT. FPK5 ADN 2 PJN FPKX IF IN GAP SECTOR FPK6 RJM FLT FLAW LOGICAL TRACK FPK SUBR ENTRY/EXIT RAD T6 LDI T3 SHN 21-12 MJN FPK2 IF TRACK MODE FLAW RJM CHS CONVERT HEAD GROUP AND SECTOR FPK1 LDC -SLDK-2 RAD T2 MJN FPK5 IF IN PREVIOUS TRACK AOD T6 ADVANCE TRACK UJN FPK1 FPK2 RJM PTF PROCESS TRACK FLAW UJN FPKX RETURN FPL SPACE 4 ** FPL - FLAW PROCESSOR FOR *DL* EQUIPMENTS. FPL4 ADN 2 PJN FPLX IF IN GAP SECTOR FPL5 RJM FLT FLAW LOGICAL TRACK FPL SUBR ENTRY/EXIT LDI T3 SHN 21-12 MJN FPL2 IF TRACK MODE FLAW RJM CHS CONVERT HEAD GROUP AND SECTOR FPL1 LDC -SLDL-2 RAD T2 MJN FPL4 IF IN PREVIOUS TRACK AOD T6 ADVANCE TRACK UJN FPL1 FPL2 RJM FPY PROCESS TRACK FLAW UJN FPLX RETURN FPM SPACE 4,10 ** FPM - FLAW PROCESSOR FOR *DM* EQUIPMENTS. FPM SUBR ENTRY/EXIT RJM FLT FLAW TRACK AOD T6 RJM FLT FLAW TRACK UJN FPMX RETURN FPQ SPACE 4,10 ** FPQ - FLAW PROCESSOR FOR *DQ* EQUIPMENTS. FPQ SUBR ENTRY/EXIT LDM. 1,T3 SHN -6 SBN 24 MJN FPQ1 IF IN FIRST HALF OF CYLINDER AOD T6 FPQ1 RJM FLT FLAW TRACK UJN FPQX RETURN FPX SPACE 4,10 ** FLAW PROCESSOR FOR *DX* EQUIPMENTS. FPX SUBR ENTRY/EXIT RAD T6 RJM PTF PROCESS TRACK FLAW UJN FPXX RETURN FPY SPACE 4,10 ** FLAW PROCESSOR FOR *DY* EQUIPMENTS. FPY2 RJM FLT FLAW LOGICAL TRACK FPY SUBR ENTRY/EXIT LDM. 1,T3 SHN -6 SBN 11 MJN FPY2 IF IN FIRST TRACK NJN FPY1 IF IN SECOND TRACK RJM FLT FLAW BOTH TRACKS FPY1 AOD T6 UJN FPY2 FLAW SECOND TRACK FPZ SPACE 4,10 ** FLAW PROCESSOR FOR *DZ* EQUIPMENTS. FPZ SUBR ENTRY/EXIT LDM. 1,T3 SHN -6 SBN 17 MJN FPZ1 IF FIRST TRACK IN CYLINDER AOD T6 ADVANCE TRACK FPZ1 RJM FLT FLAW LOGICAL TRACK UJN FPZX RETURN FPA SPACE 4,10 ** FPA - FLAW PROCESSOR FOR *DA* EQUIPMENTS. FPA SUBR SHN -1 STD T6 SET LOGICAL TRACK = PHYSICAL CYLINDER RJM FLT PROCESS FLAW UJN FPAX EXIT FCE SPACE 4,10 ** FCE - FLAW DS AND CE TRACKS FOR *DA* DEVICE. FCE SUBR LDD T9 ADC NTDA/2 LPC 3777 STD T6 SET DEAD START TRACK ADDRESS RJM FLT FLAW TRACK SOD T6 RJM FLT LDD T6 SHN -1 STD T6 RJM FLT SOD T6 RJM FLT UJN FCEX RETURN FPB SPACE 4,10 ** FPB - FLAW PROCESSOR FOR *DB* EQUIPMENTS. FPB SUBR LDM. 1,T3 SHN -6 SBN 5 MJN FPB1 IF FIRST HALF OF CYLINDER AOD T6 FPB1 RJM FLT ENTER FLAW UJN FPBX RETURN FPC SPACE 4,10 ** FLAW PROCESSOR FOR *DC* EQUIPMENTS. FPC SUBR ENTRY/EXIT LDM. 1,T3 SHN -6 SBN 7 MJN FPC2 IF IN FIRST TRACK NJN FPC1 IF IN SECOND TRACK RJM FLT FLAW BOTH TRACKS FPC1 AOD T6 FPC2 RJM FLT FLAW LOGICAL TRACK UJN FPCX FLAW SECOND TRACK SPACE 4,10 ** FLAW SUBROUTINES. CHS SPACE 4,10 ** CHS - CONVERT HEAD AND SECTOR TO RELATIVE SECTOR IN CYLINDER. * * ENTRY ((T3)+1) = 6/ HEAD,6/ SECTOR. * * EXIT (T2) = RELATIVE SECTOR IN CYLINDER. * = HEAD * 30B + SECTOR. * * USES T1, T2. CHS SUBR ENTRY/EXIT LDM. 1,T3 SET HEAD GROUP SHN -6 STD T1 LDM. 1,T3 SET SECTOR LPN 77 STD T2 CHS1 SOD T1 MJN CHSX IF END OF MULTIPLY LDN 30 RAD T2 UJN CHS1 LOOP PTF SPACE 4,10 ** PTF - PROCESS TRACK FLAW. * * ENTRY (T3) = ADDRESS OF PHYSICAL ADDRESS. * (T6) = PHYSICAL CYLINDER * 4. * * EXIT LOGICAL TRACK FLAWED. * * USES T1. * * CALLS FLT. PTF3 RJM FLT FLAW LOGICAL TRACK PTF SUBR ENTRY/EXIT LDM. 1,T3 SHN -6 ADN 1 STD T1 HEAD GROUP + 1 UJN PTF2 CONTINUE PROCESSING PTF1 AOD T6 ADVANCE TRACK PTF2 LCN 5 RAD T1 MJN PTF3 IF IN PREVIOUS TRACK NJN PTF1 IF NOT HEAD GROUP CROSSING TRACK BOUNDARY RJM FLT FLAW LOGICAL TRACK AOD T6 UJN PTF3 FLAW SECOND TRACK SPACE 4 ERRNG 473-* OVERLAY OVERFLOWS PRU RSTR RESTORE INSTRUCTIONS TITLE 0PI - PACK SERIAL PROCESSOR. QUAL 0PI IDENT 0PI,PRSX "HN" PACK SERIAL PROCESSOR. *COMMENT 6DI - "HN" PACK SERIAL PROCESSOR. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. SPACE 4 *** PACK SERIAL PROCESSOR. * R. J. THIELEN. 75/11/20. * W. E. GOEBEL. 78/03/06. SPACE 4 *** THE PACK SERIAL PROCESSOR PERFORMS ANY ONE OF THREE * DIFFERENT FUNCTIONS, DEPENDING UPON THE OPTION CHOSEN BY THE * CALLER. * 1) IT READS THE PACK SERIAL NUMBER FROM A SPECIFIED DISK * PACK AND PLACES IT INTO BOTH ERRLOG AND BML MESSAGES * WHICH ARE RETURNED TO THE CALLING PROGRAM. * 2) IT LOADS AND MODIFIES THE MASS STORAGE DRIVER TO ALLOW * THE CALLER TO READ AND WRITE PROTECTED SECTORS. * 3) IT READS THE DEADSTART SECTOR FROM A SPECIFIED DISK * DRIVE AND VERIFIES THAT IT IS VALID BY CHECKING THOSE * FIELDS IN THE SECTOR WHOSE CONTENTS ARE KNOWN AND * CONSTANT. AN *ENDMS* IS NOT ISSUED IF THE SECTOR IS * VALID, ALLOWING THE CALLER TO UPDATE AND REWRITE THE * SECTOR BEFORE ANOTHER MAINFRAME CAN GAIN ACCESS TO THE * DRIVE. SPACE 4 * REDEFINE INSTRUCTIONS FOR LOCATION FREE EXECUTION. RIREL REDEFINE INSTRUCTIONS SPACE 4,10 * COMMON DECKS. *CALL COMSDFS PRS EJECT *** PRS - PRESET PACK SERIAL PROCESSOR. * * ENTRY ((LA)-1) = 3/ FC,9/ EQ. * EQ = EST ORDINAL. * FC = 0 IF TO READ PACK SERIAL NUMBER. * FC = 1 IF TO MODIFY DRIVER TO READ AND WRITE PROTECTED * SECTORS. * FC = 4 IF TO READ AND VERIFY THE DEADSTART SECTOR. * * EXIT (T5) = EST ORDINAL. * * FOR FC = 0, * (A) = MAIN PROCESSOR ENTRY ADDRESS. * (T6) = LOGICAL TRACK OF PACK SERIAL NUMBER. * (T7) = LOGICAL SECTOR OF PACK SERIAL NUMBER. * PACK SERIAL NUMBER PROCESSOR INITIALIZED. * * FOR FC = 1, * DRIVER MODIFIED TO READ AND WRITE PROTECTED SECTORS. * * FOR FC = 4, * (A) = 0 IF DEADSTART SECTOR LOADED AND VERIFIED. * = 1 IF MASS STORAGE ERROR OCCURRED WHILE READING * DEADSTART SECTOR. * = 2 IF DEADSTART SECTOR FIELDS WERE NOT CORRECT. * (T6) = LOGICAL TRACK OF DEADSTART SECTOR. * (T7) = LOGICAL SECTOR OF DEADSTART SECTOR. * (BFMS - BFMS+501) = DEADSTART SECTOR, IF (A) = 0. * * USES T3, T5 - T7, CM - CM+4. * * CALLS C2D, RDS. * * MACROS ENDMS, SETMS. ORG 5 PRS SUBR ENTRY/EXIT LDD LA ABSOLUTIZE MESSAGE ADDRESSES RAM TDMA LDD LA RAM TDMA+1 LDM -1 SET EST ORDINAL LPC 777 STD T5 STM MSGB+5 SHN -3 CONVERT UPPER TWO DIGITS OF EST ORDINAL RJM C2D STM MSGA+1 LDD T5 CONVERT LOWER DIGIT OF EST ORDINAL LPN 7 SHN 6 RAM MSGA+2 * *SETMS* IS CHANGED TO SUPPRESS ERROR REPORTING OF NORMAL AND * NOT READY ERRORS WHILE READING BOTH THE DEADSTART SECTOR AND * THE PACK SERIAL NUMBER, PREVENTING UNNECESSARY ERROR MESSAGES * FROM BEING ISSUED TO THE OPERATOR. EXAMPLES OF UNNEEDED * ERROR MESSAGES ARE 1) READING THE DEADSTART SECTOR ON ISD AND * 844 PACKS WHICH HAVE NEVER HAD *CIP* INSTALLED, AND 2) TRYING * TO READ THE PACK SERIAL NUMBER ON AN ISD PACK THAT DOES NOT * HAVE ONE. SETMS PIO SETMS =,PIO,(AR,DF,-RR,SM) LDK EPAR&EPDF&EPRR&EPSM STM. UERR LDM. CHRV SET ACCESS TO A DOWN DEVICE SCN EPAD LMN EPAD STM. CHRV LDC LDNI+FCRF SET READ FACTORY DATA FUNCTION STM. RDSA LDD CM+3 SET EQUIPMENT NAME IN MESSAGE LPC 3777 STM MSGA STM MSGB+2 LDD CM+4 SHN 3 ADN DILL READ ALGORITHM INDEX CRD CM SBN DILL-MDGL READ SECTOR LIMIT CRD CM-1 LDD CM-1+1 SET SINGLE UNIT SECTOR LIMIT LPC 3777 STM PSPB * SET ALGORITHM INDEX DEPENDENT PROCESSING. LDD CM+4 LPN 77 ADC TALP ADD LA STD T3 LDI T3 SET TRACK STD T6 * NOTE - THE FOLLOWING CODE SETS THE CORRECT *FACTORY* SECTOR * NUMBER FOR ALL DEVICES (ZERO FOR ALL EXCEPT CDSS II). IF A * NEW DEVICE IS TO BE ADDED WITH A *DEADSTART* SECTOR NUMBER * EXCEEDING 377, THIS CODE MAY REQUIRE ALTERATION. LDM. TDSS-TALP,T3 SET FACTORY SECTOR NUMBER LPC 7400 CLEAR BITS 7-0 STD T7 LDM -1 CHECK OPTION TYPE SHN 0-11 NJN PRS2 IF NOT READING PACK SERIAL NUMBER LDC PSP RETURN MAIN PROCESSOR ENTRY ADDRESS ADD LA PRS1 LJM PRSX EXIT PRS2 LDC LDNI+FCRP STM. RDSA LDC LDNI+FCWP STM. WDS3 LDM -1 SHN 0-12 ZJN PRS1 IF SETTING FOR PROTECTED READS AND WRITES LDM. TDST-TALP,T3 SET DEADSTART TRACK STD T6 LDM. TDSS-TALP,T3 SET DEADSTART SECTOR NUMBER STD T7 LDC BFMS READ THE DEADSTART SECTOR RJM. RDS SHN 0-21 NJN PRS4 IF DEADSTART SECTOR CANNOT BE READ LDN PRSBL+1 STD CM LDD LA RAM PRSA PRS3 SOD CM CHECK NEXT BYTE ZJN PRS4 IF ALL KNOWN BYTES IN SECTOR ARE CORRECT LDM. BFMS-1,CM LMM. PRSB-1,CM VERIFY BYTE AGAINST EXPECTED VALUE PRSA EQU *-1 ZJN PRS3 IF BYTE CONTENTS ARE CORRECT ENDMS LDN 2 PRS4 LJM PRSX EXIT PRSB CON 0500,0016 CONTROL BYTES CON 0000,0000,0000,1120,1400 FIRST WORD OF SECTOR CON 0000,0000,0000 BEGINNING OF SECOND WORD PRSBL EQU *-PRSB PSP SPACE 4 *** PSP - PACK SERIAL PROCESSOR. * * ENTRY (A) = LOGICAL UNIT. * (T5) = EQUIPMENT. * (T6) = TRACK. * (T7) = SECTOR. * * EXIT (A) = 6/BL, 12/TA. * BL = BML MESSAGE LENGTH. * TA = DAYFILE MESSAGE TABLE ADDRESS. * (A) = 0 IF DISK ERROR DETECTED. * (BFMS - BFMS+1) = PACK SERIAL NUMBER IF NO DISK ERROR. * * USES T0, T3 - T7, CM - CM+4. * * CALLS CBD, CHB, CSD, CTD, RDS. * * MACROS ENDMS. PSP4 LDN 0 RETURN ERROR STATUS PSP SUBR ENTRY/EXIT STD T1 SAVE LOGICAL UNIT PSP1 SOD T1 FORM LOGICAL UNIT * SECTOR LIMIT MJN PSP2 IF MULTIPLICATION COMPLETE LDC 0 ADD SINGLE UNIT SECTOR LIMIT PSPB EQU *-1 RAD T7 UJN PSP1 PSP2 LDC BFMS READ FACTORY SECTOR RJM. RDS MJN PSP4 IF ERROR LDD MA GET PHYSICAL UNIT NUMBER CWD T4 MONITOR LDAM CONVERT ADDRESS ENDMS LDD MA ADN 1 CRD CM LDD CM+1 PUT PHYSICAL UNIT NUMBER IN MESSAGE STM MSGB+3 RJM C2D STM MSGA+4 LDC BFMS SET ADDRESS OF PACK SERIAL NUMBER STD CM LDC MSGA+7 SET ERRLOG MESSAGE DESTINATION ADDRESS ADD LA STD CM+1 LDC MSGB+7 SET BML MESSAGE DESTINATION ADDRESS ADD LA STD CM+2 RJM CSD CONVERT 6 BCD DIGITS TO DISPLAY LDC TDMA+MSG1L*10000 ADD LA LJM PSPX EXIT MSGA DATA C*EQ000, U00,PS=000000.* MSGB CON DM0401 MESSAGE ID CON HI0100 MESSAGE SYMPTOM CON 0 DEVICE TYPE (DISPLAY CODE) CON 0 UNIT NUMBER (BINARY) CON 0 RESERVED FOR CDC CON 0 EST ORDINAL (BINARY) CON 0 RESERVED FOR CDC DATA 6AXXXXXX PACK SERIAL NUMBER (DISPLAY CODE) MSG1L EQU *-MSGB REGULAR BML MESSAGE LENGTH TDMA SPACE 4,10 ** TDMA - TABLE OF DAYFILE MESSAGE ADDRESSES. TDMA BSS 0 CON MSGA ERRLOG MESSAGE ADDRESS CON MSGB BML MESSAGE ADDRESS TALP SPACE 4 ** TALP - TABLE OF ALGORITHM INDEX PROCESSING PARAMETERS. * * ENTRY = 1 WORDS. * WORD 1 = LOGICAL TRACK OF MANUFACTURING SECTOR. TALP INDEX INDEX AIDI,(7150) INDEX AIDJ,(7154) INDEX AIDK,(7150) INDEX AIDL,(7154) INDEX AIDM,(7222) INDEX AIDQ,(7222) INDEX AIDR,(5060) INDEX AIDX,(7150) INDEX AIDY,(7134) INDEX AIDZ,(6136) INDEX AIDA,(6137) INDEX AIDB,(7222) INDEX AIDC,(7352) INDEX AIDD,(0) INDEX AIDG,(0) INDEX AIDS TDST SPACE 4,10 ** TDST - TABLE OF DEADSTART TRACK NUMBERS. TDST INDEX INDEX AIDI,7152 INDEX AIDJ,7155 INDEX AIDK,7150 INDEX AIDL,7154 INDEX AIDM,7222 INDEX AIDQ,7222 INDEX AIDR,5060 INDEX AIDX,7150 INDEX AIDY,7134 INDEX AIDZ,6136 INDEX AIDA,6137 INDEX AIDB,7222 INDEX AIDC,(7352) INDEX AIDD,7140 INDEX AIDG,6570 INDEX AIDS TDSS SPACE 4,10 ** TDSS - TABLE OF DEADSTART SECTOR NUMBERS. * * NOTE - IF A NEW DEVICE WITH A DEADSTART SECTOR NUMBER GREATER * THAN 377 IS ADDED TO THIS TABLE, CODE IN THE AREA JUST BEFORE * TAG *PRS1* MAY REQUIRE ALTERATION. TDSS INDEX INDEX AIDI,1 INDEX AIDJ,1 INDEX AIDK,3 INDEX AIDL,3 INDEX AIDM,37B INDEX AIDQ,76B INDEX AIDR,2476B INDEX AIDX,2 INDEX AIDY,2 INDEX AIDZ,2 INDEX AIDA,2 INDEX AIDB,370B INDEX AIDC,2 INDEX AIDD,0 INDEX AIDG,0 INDEX AIDS CBD SPACE 4 ** CBD - CONVERT BINARY CODED DECIMAL TO DISPLAY CODE. * * ENTRY (A) = 10/,8/ 2 BCD DIGITS. * (CM+1) = ADDRESS IN ERRLOG MESSAGE WHERE RESULT IS * TO BE STORED. * (CM+2) = ADDRESS IN BML MESSAGE WHERE RESULT IS TO * BE STORED. * * EXIT CONVERTED DIGITS ADDED TO ERRLOG AND BML MESSAGES. * (CM+1) AND (CM+2) INCREMENTED. * * USES T0. CBD SUBR ENTRY/EXIT LPC 377 UNPACK DIGITS SHN 16 SAVE HIGH ORDER DIGIT STD T0 SCN 17 SHN -2 POSITION LOW ORDER DIGIT LMD T0 MERGE HIGH ORDER DIGIT SHN 6 ADC 2R00 CONVERT TO DISPLAY CODE STI CM+1 STI CM+2 AOD CM+1 AOD CM+2 UJN CBDX EXIT CSD SPACE 4,10 ** CSD - CONVERT SIX BCD DIGITS TO DISPLAY CODE. * * ENTRY (CM) = ADDRESS OF BCD DIGITS. * (CM+1) = STARTING ADDRESS IN ERRLOG MESSAGE WHERE * RESULT IS TO BE STORED. * (CM+2) = STARTING ADDRESS IN BML MESSAGE WHERE RESULT * IS TO BE STORED. * * EXIT DIGITS ADDED TO ERRLOG AND BML MESSAGES. * (CM - CM+2) EACH INCREMENTED TO POINT TO THE FIRST * BYTE AFTER THE ADDED DIGITS. * * USES CM. * * CALLS CBD. CSD SUBR ENTRY/EXIT LDI CM CONVERT BCD DIGITS ONE AND TWO SHN -4 RJM CBD LDI CM CONVERT BCD DIGITS THREE AND FOUR LPN 17 SHN 14 LMM. 1,CM SHN -10 RJM CBD AOD CM LDI CM CONVERT BCD DIGITS FIVE AND SIX RJM CBD AOD CM UJN CSDX EXIT SPACE 4 ** COMMON DECKS. *CALL COMPC2D SPACE 4 ERRNG 473-* OVERLAY OVERFLOWS PRU RSTR RESTORE INSTRUCTIONS TITLE 0RI - UNIT RESERVE PROCESSOR. QUAL 0RI IDENT 0RI,PRSX "HN" UNIT RESERVE PROCESSOR. *COMMENT 6DI - "HN" UNIT RESERVE PROCESSOR. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. SPACE 4 *** UNIT RESERVE PROCESSOR. * R. J. THIELEN. 75/11/20. * W. E. GOEBEL. 78/03/06. * K. F. REHM. 84/07/12. SPACE 4 *** THE UNIT RESERVE PROCESSOR IS USED IN CASES WHERE 844 * DRIVES ARE CONNECTED TO MORE THAN ONE CONTROLLER, AND THE * CONTROLLER WHICH IS CURRENTLY HOLDING DRIVES RESERVED IS * INOPERATIVE. THE PROCESSOR ISSUES A *GRENADE* FUNCTION TO * THE FUNCTIONING CONTROLLER, WHICH RELEASES ALL 844 DRIVES * RESERVED BY THE INOPERATIVE CONTROLLER. SPACE 4 * REDEFINE INSTRUCTIONS FOR LOCATION FREE EXECUTION. RIREL REDEFINE INSTRUCTIONS PRS SPACE 4,10 *** PRS - PRESET UNIT RESERVE PROCESSOR. * * EXIT (A) = MAIN PROCESSOR ENTRY ADDRESS. ORG 5 PRS SUBR ENTRY/EXIT LDC RUR ADD LA UJN PRSX EXIT RUR SPACE 4,10 ** RUR - RELEASE UNIT RESERVES. * * ENTRY (T5) = EST ORDINAL OF EQUIPMENT. * (T6) = LEGAL TRACK NUMBER. * (T7) = LEGAL SECTOR NUMBER. * * CALLS RDS. * * MACROS SETMS. RUR SUBR ENTRY/EXIT SETMS PIO,(DF,NS) LDC LDNI+FCGR STM. LDAA LDM RURA STM. LDAB LDM RURB STM. RDSA RJM. RDS ISSUE GRENADE FUNCTION ENDMS UJN RURX RETURN RURA BSS 0 LOC LDAB UJN LDA7 AVOID OUTPUT OF DISK ADDRESS LOC *O RURB BSS 0 LOC RDSA UJN RDS4 AVOID ISSUING FURTHER FUNCTIONS LOC *O BSS 0 ERRNG 473-* OVERLAY OVERFLOWS PRU RSTR RESTORE INSTRUCTIONS TITLE 0SI - SERVO TIMING PROCESSOR. QUAL 0SI IDENT 0SI,PRSX "HN" SERVO TIMING PROCESSOR. COMMENT 82/02/26. 82/10/23. 6DI - "HN" SERVO TIMING PROCESSOR. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. SPACE 4,10 *** SERVO TIMING PROCESSOR. * R. J. THIELEN. 75/11/20. * W. E. GOEBEL. 78/03/06. * T. J. CALLAGHAN. 83/03/09. SPACE 4,10 *** THE SERVO TIMING PROCESSOR PERFORMS SERVO * ADJUSTMENTS FOR 885 DRIVES. SPACE 4,10 * REDEFINE INSTRUCTIONS FOR LOCATION FREE EXECUTION. RIREL REDEFINE INSTRUCTIONS PRS SPACE 4,10 *** PRS - PRESET PACK SERIAL PROCESSOR. * * ENTRY ((LA)-1) = 3/,9/ EQ. * EQ = EST ORDINAL. * * EXIT (A) = MAIN PROCESSOR ENTRY ADDRESS. * (T5) = EST ORDINAL. * (T6) = TRACK. * (T7) = SECTOR. * PACK SERIAL PROCESSOR INITIALIZED. * MASS STORAGE DRIVER INITIALIZED AND MODIFIED TO READ * THE APPROPRIATE SECTOR. * * USES T5. * * MACROS SETMS. ORG 5 PRS SUBR ENTRY/EXIT LDM -1 SET EST ORDINAL LPC 777 STD T5 SETMS PIO,(DF,NS) LDD LA ABSOLUTIZE ADDRESS RAM FTCA SBN TFTC-FTC RETURN PROCESSOR ADDRESS UJN PRSX RETURN FTC SPACE 4,10 ** FTC - FUNCTION SERVO DIFFERENCE TIMING COUNTER. * * ENTRY (T7) = LOGICAL UNIT * SINGLE UNIT SECTOR LIMIT. * * EXIT (A) = 0 IF TIMING TOO LARGE. * (A) .LT. 0 IF DISK ERROR. * (A) = SERVO TIMING AVERAGED OVER 20 SAMPLES. * * USES T1, T3. * * CALLS RDS. * * MACROS ENDMS, SETMS. FTC3 ENDMS FTC SUBR ENTRY/EXIT LDN 2 SET DRIVER STM. FNCA LDN TFTCL-1 MOVE CODE TO *RDS* STD T1 FTC1 LDM. TFTC,T1 FTCA EQU *-1 STM. RDSC,T1 SOD T1 PJN FTC1 IF MORE TO MOVE LDN 20 SET TIMING LOOP COUNTER STD T3 FTC2 LDC BFMS INPUT TIMING SAMPLE RJM. RDS MJN FTCX IF ERROR LDM. BFMS NJN FTC3 IF TIMING DATA TOO LARGE LDM. BFMS+1 PROCESS TIMING SAMPLE RAM FTCB+1 SHN -14 RAM FTCB SOD T3 NJN FTC2 IF MORE SAMPLES TO PROCESS ENDMS FTCB LDC 0 TOTAL OF TIMING SAMPLES SHN -4 LJM FTCX RETURN TFTC BSS 0 CODE TO OVERLAY *RDS* LOC RDSC RJM. LDA SEEK TO CYLINDER 0 RJM FTD FUNCTION TIMING DIFFERENCE COUNTER UJN RDSA INPUT TIMING DATA BSS RDSA-* SPARES RDSA LDN FCTD INPUT TIMING DATA LOC *O TFTCL EQU *-TFTC FTC SPACE 4,10 ** FTD - FUNCTION TIMING DIFFERENCE COUNTER. FTD SUBR ENTRY/EXIT LDM. FNCC SET FUNCTION ADN 40 STM FTDA LDM. FNCB SET TEST STM FTDB LDN FCFT FUNCTION TIMING DIFFERENCE COUNTER FTDA FAN 0+40 LDD TH STD T1 STD T2 FTDB CON 0,RDSA * IJM RDSA,CH IF FUNCTION ACCEPTED SOD T1 PJN FTDB IF NOT TIME OUT SOD T2 PJN FTDB IF NOT TIME OUT UJN FTDX RETURN SPACE 4 ERRNG 473-* OVERLAY OVERFLOWS PRU RSTR RESTORE INSTRUCTIONS TITLE 0CI - FIRMWARE IDENT PROCESSOR. QUAL 0CI IDENT 0CI,PRSX "HN" FIRMWARE IDENT PROCESSOR. *COMMENT 6DI - "HN" FIRMWARE IDENT PROCESSOR. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. SPACE 4 *** FIRMWARE IDENT PROCESSOR. * R. J. THIELEN. 75/11/20. * W. E. GOEBEL. 78/03/06. SPACE 4 *** THE FIRMWARE IDENT PROCESSOR OBTAINS DETAILED STATUS * FOR A SPECIFIED EQUIPMENT, CHANNEL AND LOGICAL UNIT, EXTRACTS * THE FIRMWARE REVISION NUMBER AND PLACES THAT INFORMATION IN A * DAYFILE MESSAGE THAT IT RETURNS TO THE CALLING PROGRAM. SPACE 4 * REDEFINE INSTRUCTIONS FOR LOCATION FREE EXECUTION. RIREL REDEFINE INSTRUCTIONS SPACE 4,10 ** COMMON DECKS. *CALL COMSDFS PRS SPACE 4,10 *** PRS - PRESET FIRMWARE IDENTIFICATION PROCESSOR. * * ENTRY ((LA)-1) = 3/ FN,9/ EQ. * FN = FUNCTION NUMBER. * 0 = CHANNEL CONTROLWARE IDENTIFICATION. * 1 = CONTROL MODULE CONTROLWARE IDENTIFICATION. * * EXIT (A) = MAIN PROCESSOR ENTRY ADDRESS. * (T5) = EST ORDINAL. * FIRMWARE IDENTIFICATION PROCESSOR INITIALIZED. * * USES T5, T7, CM - CM+4. * * MACROS SETMS. ORG 5 PRS SUBR ENTRY/EXIT LDD LA ABSOLUTIZE MESSAGE ADDRESSES RAM TDMA RAM TDMA+1 LDM -1 SET EST ORDINAL LPC 777 STD T5 SETMS PIOCH,(DF,NR,NS) LDD CM+4 GET ALGORITHM INDEX FROM MST SHN 3 ADN DILL CRD CM LDD CM+4 LPN 77 RAM FIPC STM PRSA ADC -AIIB-TDAI MJN PRS2 IF NOT ISD SBK AIIE-AIIB MJN PRS3 IF ISD SBK AIDC-AIIE ERRNG AIDC-AIIE ALGORITHM INDEXES OUT OF ORDER MJN PRS2 IF NOT FSC, 7165 NOR ISD STD T0 LDN ARNW-FRNW SET ADAPTOR REVISION NUMBER WORD RAM FIPF LDD T0 ZJN PRS5 IF 7165/895 EQUIPMENT PRS2 UJN PRS6 MODIFY DRIVER * MODIFY OVERLAY FOR EITHER THE 7255 ADAPTOR OR FOR A CONTROL * MODULE. PRS3 LDM -1 SHN 0-11 ZJN PRS5 IF 7255 ADAPTOR LDM PRSA ADK -AIDD-TDAI ZJN PRS4 IF *DD* DEVICE TYPE LDN /CNTL/T424-/CNTL/T422 (CONTROL MODULE II) PRS4 ADN /CNTL/T422 (CONTROL MODULE I) STM ** PRSA EQU *-1 (MODIFY CONTROLWARE INDEX TABLE CONTENTS) LDN PSNI STM FIPE LDN HI0104-HI0101 RAM MSGB+1 PRS5 LDN 1RD-1RA RAM MSGA+5 STM MSGB+10 PRS6 LDC LDNI+FCDS SET DRIVER TO READ *DETAILED STATUS* STM. RDSA LDM -1 SHN 0-11 NJN PRS7 IF CONTROL MODULE FIRMWARE IDENTIFICATION LDD HN ENABLE A BRANCH TO READ *DETAILED STATUS* ERRNZ LJMI-100 ADJUST IF VALUE CHANGES STM. LDAC LDC RDS2 STM. LDAC+1 PRS7 LDN DSLN STM. FNCA LDC FIP ADD LA LJM PRSX EXIT MSGA DATA C*CH00 MA722-A00,CM0.* MSGB CON DM0401 MESSAGE ID CON HI0101 MESSAGE SYMPTOM CON 0 CHANNEL (OCTAL) CON 0 (CONTROL MODULE EQUIPMENT NUMBER) CON 0 RESERVED FOR CDC DATA 10A MA722-AYY FIRMWARE REVISION LEVEL (DISPLAY CODE) MSGBL EQU *-MSGB BML MESSAGE LENGTH TDMA SPACE 4,10 ** TDMA - TABLE OF DAYFILE MESSAGE ADDRESSES. TDMA BSS 0 CON MSGA ERRLOG MESSAGE ADDRESS CON MSGB-MSGA BML MESSAGE ADDRESS FIP SPACE 4 *** FIP - FIRMWARE IDENTIFICATION PROCESSOR. * * ENTRY (T4) = CHANNEL. * (T5) = EST ORDINAL. * * EXIT (A) = 6/BL, 12/TA. * BL = BML MESSAGE LENGTH. * TA = ADDRESS OF MESSAGE PARAMETER BLOCK. * .LT. 0 IF MASS STORAGE ERROR. * (T5) = UNCHANGED. * (BFMS) = DETAILED STATUS. * * USES T3, T6, T7. * * CALLS CDD, COD, RDS. * * MACROS ENDMS. FIP SUBR ENTRY/EXIT LDN 0 STD T6 CLEAR LOGICAL ADDRESS STD T7 LDC BFMS READ DETAILED STATUS RJM. RDS MJN FIPX IF ERROR ENDMS * ADD CHANNEL NUMBER TO THE ERRLOG AND BML MESSAGES. LDD T4 PUT CHANNEL IN MESSAGE STM MSGB+2 RJM COD STM MSGA+1 * ADD FIRMWARE TYPE TO ERRLOG AND BML MESSAGES. LDM TDAI FIPC EQU *-1 NJN FIP4 IF CONTROLWARE TYPE ALREADY KNOWN LDM. BFMS+FRNW SHN -12 SHN 1 FIP4 ADD LA ADC FIPH STD T3 LDI T3 STM MSGA+3 STM MSGB+6 LDM. 1,T3 STM MSGA+4 STM MSGB+7 * ADD REVISION NUMBER TO ERRLOG AND BML MESSAGES. IF * PROCESSING A CONTROL MODULE, ADD THE CONTROL MODULE * EQUIPMENT NUMBER TO THE MESSAGES. LDC MSGA+7 ADD LA STD T3 UJN FIP6 CHANNEL FIRMWARE IDENTIFICATION * PSN (CONTROL MODULE FIRMWARE IDENTIFICATION) FIPE EQU *-1 LDM. BFMS+FRNW GET CONTROL MODULE EQUIPMENT NUMBER SHN -3 LPN 7 STM MSGB+3 ADC 2RM0 STM MSGA+10 LDN 11-7 RAD T3 LDM. BFMS+CMNW LPN 37 UJN FIP7 ADD REVISION NUMBER FIP6 LDM. BFMS+FRNW * LDM. BFMS+ARNW (FSC AND 7165 EQUIPMENTS) FIPF EQU *-1 SHN -6 LPN 17 FIP7 RJM CDD STM MSGA+6 STM MSGB+11 * TERMINATE THE ERROR LOG MESSAGE. LDC 2R. STI T3 LDN 0 STM. 1,T3 LDC TDMA+MSGBL*10000 SET TABLE ADDRESS, BML MSG LENGTH ADD LA LJM FIPX RETURN FIPH BSS 0 LOC 0 QUAL CNTL T710 DATA 4RA710 HALF TRACK CONTROLWARE T454 DATA 4RA454 FSC ADAPTOR CONTROLWARE T401 DATA 4RA401 FULL TRACK CONTROLWARE T721 DATA 4RA721 FMD CONTROLWARE T722 DATA 4RA722 DEMA/PFMD CONTROLWARE T462 DATA 4RA462 7255 ADAPTOR CONTROLWARE T422 DATA 4RH422 CONTROL MODULE I CONTROLWARE T424 DATA 4RH424 CONTROL MODULE II CONTROLWARE T464 DATA 4RA464 7165 CONTROLWARE QUAL * LOC *O TDAI INDEX INDEX AIDI,0 INDEX AIDJ,0 INDEX AIDM,0 INDEX AIDK,0 INDEX AIDL,0 INDEX AIDQ,0 INDEX AIDR,0 INDEX AIDD,/CNTL/T462 INDEX AIDG,/CNTL/T462 INDEX AIDB,/CNTL/T722 INDEX AIDC,/CNTL/T464 INDEX AIDX,/CNTL/T401 INDEX AIDY,/CNTL/T401 INDEX AIDZ,/CNTL/T401 INDEX AIDA,/CNTL/T401 INDEX AIDS CDD SPACE 4,10 ** CDD - CONVERT TWO DIGITS TO DECIMAL DISPLAY CODE. * * ENTRY (A) = NUMBER TO CONVERT. * * EXIT (A) = DISPLAY CODE VALUE. * * USES T0 - T1. CDD2 ADN 10D+1R0 SHN 14 POSITION UNITS ADD T0 SHN 6 CDD SUBR ENTRY/EXIT STD T1 SAVE NUMBER LDN 1R0 PRESET TENS STD T0 CDD1 LDD T1 COUNT 10 SBN 10D MJN CDD2 IF CONVERSION COMPLETE STD T1 AOD T0 UJN CDD1 LOOP TO END OF CONVERSION COD SPACE 4,10 ** COD - CONVERT TWO DIGITS TO OCTAL DISPLAY CODE. * * ENTRY (A) = NUMBER TO CONVERT. * * EXIT (A) = DISPLAY CODE VALUE. * * USES T0. COD SUBR ENTRY/EXIT STD T0 SHN 3 LMD T0 SCN 70 ADC 2R00 UJN CODX RETURN BSS 0 ERRNG 473-* OVERLAY OVERFLOWS PRU RSTR RESTORE INSTRUCTIONS TITLE 0SC - SWEEP CYCLING PROCESSOR. QUAL 0SC IDENT 0SC,SCPX *COMMENT 6DI - SWEEP CYCLING PROCESSOR. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. 0SC SPACE 4,10 *** 0SC - SWEEP CYCLING PROCESSOR. * R. M. DANISCH. 87/01/01. 0SC SPACE 4,10 *** *0SC* IS CALLED BY *1MV* TO EXECUTE THE NEXT SWEEP CYCLING * SEEK SEQUENCE FOR A SPECIFIED MASS STORAGE DEVICE. THE SEEK * SEQUENCE WILL BE EXECUTED FOR EACH PHYSICAL UNIT OF A * MULTI-UNIT DEVICE. WORD *SCLL* OF THE MST ENTRY CONTAINS THE * CYLINDER NUMBER USED FOR THE LAST SEEK IN THE PREVIOUS * SEQUENCE. 0SC SPACE 4,10 *** ENTRY CONDITIONS. * * * (IR+2) = EST ORDINAL. 0SC SPACE 4,10 * DIRECT CELL ASSIGNMENTS. CN EQU 20 - 24 CM WORD BUFFER AB EQU 25 - 31 CM WORD BUFFER SU EQU 32 SINGLE UNIT SECTOR LIMIT SC EQU 33 SEEK COUNT SI EQU 34 SEEK INCREMENT TI EQU 35 *TDVP* TABLE INDEX MS EQU 36 MST ENTRY ADDRESS / 10B 0SC SPACE 4,10 * REDEFINE INSTRUCTIONS FOR LOCATION FREE EXECUTION. RIREL SCP SPACE 4,10 ORG 5 ** SCP - SWEEP CYCLING PROCESSOR. SCP SUBR ENTRY/EXIT * PRESET *0SC*. LDD IR+2 STD T5 SETMS PIO,(NS) LDD CM+4 SAVE MST ENTRY ADDRESS STD MS SHN 3 ADN MDGL READ SINGLE UNIT SECTOR LIMIT CRD AB ADK SCLL-MDGL READ SWEEP CYCLING CONTROL WORD CRD CN LDD AB+1 SET SINGLE UNIT SECTOR LIMIT LPC 3777 STD SU LDD LA INITIALIZE *TDVP* TABLE INDEX SBN 5 STD TI SCP1 LDN 5 ADVANCE TO NEXT TABLE ENTRY RAD TI SBD LA LMC TDVPL ZJP SCPX IF SWEEP CYCLING NOT SUPPORTED ON DEVICE LDM. TDVP,TI LMD CM+3 NJN SCP1 IF NOT DEVICE TYPE MATCH STD T7 LDC SCP9 DISABLE ERROR PROCESSING ADD LA STM. ERRA LDD HN AVOID DATA TRANSFER STM. DSTB ERRNZ LJMI-100 CODE DEPENDS ON VALUE * POSITION TO STARTING CYLINDER. SCP2 LDN 0 CAUSE IMMEDIATE EXIT IF ERROR ON 1ST SEEK STD SC LDN SCP4 AVOID DATA TRANSFER ADD LA STM. DSTB+1 LDD CN ADN 1 LMM. TDVP+1,TI ZJN SCP3 IF PRIOR SEQUENCE ENDED ON LAST CYLINDER LDD CN SET INITIAL POSITION SHN 1 CONVERT CYLINDER TO LOGICAL TRACK SCP3 STD T6 * LDC BFMS ISSUE READ REQUEST FOR SEEK EXECUTION RJM. RDS CALL DRIVER TO ISSUE SEEK SCP4 DELAY 8D*17D DELAY FOR ONE DISK REVOLUTION * ISSUE SEEK SEQUENCE. LDC SCP8 AVOID DATA TRANSFER ADD LA STM. DSTB+1 LDM. TDVP+2,TI SET SMALL SEEK COUNT STD SC LDM. TDVP+3,TI SET SMALL SEEK INCREMENT SCP5 STD SI SCP6 LDD SI ADVANCE POSITION BY SEEK INCREMENT SHN 1 RAD T6 SHN -1 SBM. TDVP+1,TI MJN SCP7 IF NOT BEYOND END OF DEVICE LDN 0 PERFORM ONLY ONE SEEK AT END OF DEVICE STD SC LDM. TDVP+1,TI SEEK TO LAST CYLINDER SBN 1 SHN 1 STD T6 * LDC BFMS ISSUE READ REQUEST WITH NO DATA TRANSFER SCP7 RJM. RDS CALL DRIVER TO ISSUE SEEK SCP8 DELAY 8D*17D DELAY FOR ONE DISK REVOLUTION SCP9 SOD SC DECREMENT SEEK COUNT MJN SCP10 IF POSITIONING COMPLETE NJN SCP6 IF SMALL SEEK SEQUENCE INCOMPLETE LDM. TDVP+4,TI SET MAJOR POSITION INCREMENT UJN SCP5 CALCULATE NEXT SEEK ADDRESS * RELEASE THE CURRENT DRIVE AND CHECK FOR ANOTHER (MULTI-UNIT). SCP10 ENDMS LDD SU ADVANCE TO NEXT UNIT RAD T7 SBM. SLM MJP SCP2 IF MORE UNITS TO PROCESS * UPDATE THE SWEEP CYCLING CONTROL WORD IN THE MST ENTRY. LDD T6 STORE FINAL POSITION IN *SCLL* SHN -1 STD CN LDK RTCL STORE NEW TIME STAMP IN *SCLL* CRD CM LDD CM+1 STD CN+1 LDD MS UPDATE *SCLL* SHN 3 ADN SCLL CWD CN LJM SCPX RETURN TDVP SPACE 4,10 ** TDVP - TABLE OF DEVICE PARAMETERS. TDVP BSS 0 CON 2RDB DEVICE TYPE *DB* CON CYUNDB NUMBER OF CYLINDERS ON DEVICE CON 3 NUMBER OF SMALL INCREMENT SEEKS CON 12D SIZE OF SMALL INCREMENT SEEK CON 93D SIZE OF LARGE INCREMENT SEEK CON 2RDD DEVICE TYPE *DD* CON CYUNDD NUMBER OF CYLINDERS ON DEVICE CON 4 NUMBER OF SMALL INCREMENT SEEKS CON 13D SIZE OF SMALL INCREMENT SEEK CON 50D SIZE OF LARGE INCREMENT SEEK CON 2RDG DEVICE TYPE *DG* CON CYUNDG NUMBER OF CYLINDERS ON DEVICE CON 6 NUMBER OF SMALL INCREMENT SEEKS CON 16D SIZE OF SMALL INCREMENT SEEK CON 80D SIZE OF LARGE INCREMENT SEEK CON 2RDM DEVICE TYPE *DM* CON CYUNDM NUMBER OF CYLINDERS ON DEVICE CON 3 NUMBER OF SMALL INCREMENT SEEKS CON 12D SIZE OF SMALL INCREMENT SEEK CON 93D SIZE OF LARGE INCREMENT SEEK CON 2RDQ DEVICE TYPE *DQ* CON CYUNDQ NUMBER OF CYLINDERS ON DEVICE CON 3 NUMBER OF SMALL INCREMENT SEEKS CON 12D SIZE OF SMALL INCREMENT SEEK CON 93D SIZE OF LARGE INCREMENT SEEK TDVPL BSS 0 LWA+1 OF TABLE 0SC SPACE 4 OVERFLOW 5,ZSCL *0SC* OVERFLOWS PRU TITLE 0SD - SPIN UP/DOWN ISMD DRIVES. QUAL 0SD IDENT 0SD,PRSX "HN" SPIN UP/DOWN MS DRIVES. *COMMENT 6DI - SPIN UP/DOWN MS DRIVES. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. SPACE 4,10 *** 0SD - SPIN UP/DOWN MASS STORAGE DRIVES. * K. F. REHM. 83/06/16. SPACE 4,10 *** *0SD* IS USED TO SPINUP OR SPINDOWN THOSE MASS STORAGE * DEVICES THAT SUPPORT SAID CAPABILITY. FOR ISMD TYPE * DEVICES, THE DRIVER IS MODIFIED TO ISSUE A SPINUP OR * SPINDOWN FUNCTION. FOR BUFFERED DEVICES, A FLAG IS * SET IN THE BUFFERED I/O PHYSICAL UNIT TABLE TO BE * PROCESSED BY DEVICE SPECIFIC DRIVERS. SPACE 4,10 ** COMMON DECKS. *CALL COMSHIO SPACE 4,10 * REDEFINE INSTRUCTIONS FOR LOCATION FREE EXECUTION. RIREL REDEFINE INSTRUCTIONS PRS SPACE 4,10 ** PRS - PRESET SPINUP/DOWN PROCESSOR. * * EXIT (A) = PROCESSOR ENTRY ADDRESS. ORG 5 PRS SUBR ENTRY/EXIT LDD LA RAM PRDC LDN SUE RETURN SPINUP/SPINDOWN PROCESSOR ADDRESS ADD LA UJN PRSX EXIT SUE SPACE 4,10 ** SUE - SPIN UP/DOWN AN ISD DRIVE. * * ENTRY ((LA)-1) = EST ORDINAL OF EQUIPMENT TO SPIN UP/DOWN. * ((LA)-2) = 7/0,1/SF,4/0, WHERE * SF = 0, IF TO SPIN UP EQUIPMENT. * = 1, IF TO SPIN DOWN EQUIPMENT. * * EXIT ((LA)-1) = UNCHANGED. * ((LA)-2) = UNCHANGED. * * USES CM - CM+4. * * CALLS ANU, PRD, WDS. * * MACROS MONITOR. SUE4 RJM ANU ADVANCE TO THE NEXT PHYSICAL UNIT NJN SUE1 IF MORE UNITS TO SPIN UP SUE SUBR ENTRY/EXIT RJM PRD PRESET DRIVER ZJN SUEX IF NOT AN ISD DRIVE SUE1 LDN 0 STM CGSA LDN CM+1 RJM. WDS LPN 17 LMN NRDE NJN SUE4 IF HARDWARE FAILURE STD CM CLEAR FLASHING *MS2W* MESSAGE LDD CP ADK MS2W CWD CM LDM -2 NJN SUE4 IF SPINDOWN REQUEST SUE2 LDD MA CWD T4 MONITOR LDAM LDD MA ADN 1 CRD CM LDN 2 IGNORE *DRIVE BUSY* GENERAL STATUS STM CGSA LDM -2 ZJN SUE3 IF SPINUP REQUEST LDN FCSD&FCSU SET SPINDOWN SUE3 LMK FCSU SET SPINUP LJM. WDS4 ISSUE SPINUP/DOWN FUNCTION ANU SPACE 4,10 ** ANU - ADVANCE TO NEXT PHYSICAL UNIT. * * *ANU* WILL DELAY AT LEAST 10 MSEC TO AVOID POWER FLUCTUATIONS * WHEN MORE THAN ONE UNIT IS TO BE SPUN UP/DOWN. * * ENTRY (T6) = NUMBER OF UNITS REMAINING TO BE SPUN UP/DOWN. * * EXIT (A) .NE. 0, IF NEXT UNIT EXISTS. * * USES CM. * * MACROS DELAY, ENDMS. ANU2 ENDMS * LDN 0 (A) = 0 IS *ENDMS* EXIT CONDITION ANU SUBR ENTRY/EXIT LDC 0 (SINGLE UNIT SECTOR LIMIT) ANUA EQU *-1 SET BY *PRD* RAD T7 SOD T6 MJN ANU2 IF NO MORE UNITS IN EQUIPMENT DELAY 10D*8D DELAY 10 MILLISECONDS PAUSE ST LDN 1 UJN ANUX EXIT CGS SPACE 4,10 ** CGS - CHECK GENERAL STATUS. * * *CGS* TRAPS ALL GENERAL STATUS FUNCTIONS ISSUED BY *6DI* TO * THE CONTROLLER AND RETURNS TO CALLER IF EITHER A *0000* * (OPERATION SUCCESSFUL) OR *0002* (DRIVE BUSY) STATUS IS * ISSUED. THIS ALLOWS *0SD* TO CONTINUE SPINNING UP/DOWN * OTHER DRIVES WITHOUT HAVING TO WAIT IN *DSWM* PROCESSING * UNTIL THE CURRENT DRIVE FINISHES SPINNING UP/DOWN. * * ENTRY (A) = GENERAL STATUS. * * EXIT TO *SUE4* IF SPINUP AND NON-ERROR GENERAL STATUS. * TO *SUE2* IF SPINDOWN AND NON-ERROR GENERAL STATUS. * TO *LDA1* IF ERROR GENERAL STATUS. CGS BSS 0 ENTRY NJN CGS2 IF NOT *0000* GENERAL STATUS CGS1 LJM. 0,CM RETURN TO CALLER CGS2 STD CM+3 SAVE STATUS LMC 0 * LMC 2 (IGNORE *DRIVE BUSY* GENERAL STATUS) CGSA EQU *-1 ZJN CGS1 IF *DRIVE BUSY* SHN 21-13 PJN CGS3 IF NO ERROR LDN 0 STM CGSA CGS3 LDD CM+3 RESTORE STATUS LJM. LDA3 PROCESS STATUS PRD SPACE 4,10 ** PRD - PRESET DRIVER. * * EXIT (A) = 0 IF DEVICE NOT CANDIDATE FOR SPINUP/SPINDOWN. * (T5) = EST ORDINAL. * (T6) = NUMBER OF UNITS - 1 IN EQUIPMENT. * * USES T6, T7, CM - CM+4. * * MACROS SETMS, SFA. PRD6 LDM -2 SET FLAG VALUE SHN -3 NJN PRD7 IF SPINDOWN REQUEST LDN 4 ERRNZ SPDF+1-SPUF CODE DEPENDS ON VALUE PRD7 LMN 1 ERRNZ DUNF+1-SPDF CODE DEPENDS ON VALUE STM PRDA+4 LDC BIOL GET POINTER TO BUFFERED I/O TABLES CRD CM LDD CM+1 FETCH *PUT* TABLE POINTER WORD SHN 14 LMD CM+2 ADN PUTP CRD CM LDD CM+4 SET FWA OF *UNCT* WORD IN *PUT* ADK UNCT STM PRDB SHN -14 ADD CM+3 LPN 77 CLEAR FLAGS LMC ADCI STM PRDB-1 LDD CM NUMBER OF ENTRIES IN TABLE STD T7 PRD8 SHN PUTLS READ UNIT DESCRIPTOR WORD ADC 0 PRDB EQU *-1 CRD CM STD CM+4 SAVE ADDRESS FOR MONITOR CALL SHN -14 STD CM+3 LDD CM+1 CHECK EST ORDINAL LMD T5 NJN PRD9 IF NOT REQUESTED DEVICE LDN 1 STD CM+1 LDD MA STORE *UTEM* REQUEST IN MESSAGE BUFFER CWM. PRDA,CM+1 PRDC EQU *-1 MONITOR UTEM SET FLAG FOR BUFFERED DEVICE DRIVER SOD T6 MJN PRD10 IF NO MORE UNITS PRD9 SOD T7 NJN PRD8 IF NOT END OF *PUT* PRD10 LDN 0 DEVICE NOT CANDIDATE FOR SPINUP/SPINDOWN PRD SUBR ENTRY/EXIT LDM -1 SET EQUIPMENT STD T5 SFA EST GET EST ENTRY ADK EQDE CRD CM LDD CM SHN 21-13 PJN PRD10 IF NOT A MASS STORAGE DEVICE LDC TPRD-1 CHECK DEVICE TYPE ADD LA STD T1 PRD1 AOD T1 LDI T1 ZJN PRD10 IF NOT CANDIDATE FOR SPINUP/SPINDOWN LMD CM+3 NJN PRD1 IF DEVICE TYPE DOES NOT MATCH PRD2 LDD CM+4 SHN 3 ADN DDLL FETCH DEVICE UNIT COUNT CRD T6 SBN DDLL-DILL GET DEVICE DEPENDENT PARAMETERS CRD T7 LDD T6 CHECK FOR NULL EQUIPMENT LPC 2007 STD T6 SAVE UNIT COUNT SHN 21-12 MJP PRD10 IF NULL EQUIPMENT LDD T7+3 SHN 21-12 MJP PRD6 IF BUFFERED DEVICE LDD CM+4 SHN 3 ADN MDGL GET SINGLE UNIT SECTOR LIMIT CRD CM LDD CM+1 SECTOR LIMIT LPC 3777 STM ANUA SETMS PIO,(AD,DE,DF,NR,NS) LDN 0 STD T7 LDD HN ERRNZ LJMI-100B CODE USES *HN* TO CREATE *LJM* STM. DSTA STM. WDS2 MODIFY ROUTINES *WDS* AND *DST* LDC CGS ADD LA STM. DSTA+1 LDM -2 ZJN PRD5 IF SPINUP REQUEST LDK SUE2&SUE4 PRD5 LMK SUE4 ADD LA STM. WDS2+1 LDC LDCI STM. WDSD LDK SUE4 ADD LA STM. WDSD+1 LDN 1 STM. FNCA LJM PRDX EXIT PRDA VFD 1/0,5/PILL-UNCT,6/3,6/DUNF,42/0 *UTEM* REQUEST TPRD BSS 0 CANDIDATE DEVICES FOR SPINUP/SPINDOWN CON 2RDD 834 CON 2RDG 836 CON 2RDF 887 (4KB SECTOR) CON 2RDH 887 (16KB SECTOR) CON 0 SPACE 4,10 ERRNG 473-* OVERLAY OVERFLOWS PRU RSTR RESTORE INSTRUCTIONS SPACE 4 END