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