cdc:nos2.source:opl871:1da
Table of Contents
1DA
Table Of Contents
- [00002] 1DA - DISK ARRAY SUBSYSTEM (DAS) DRIVER.
- [00011] DAS DRIVER.
- [00560] CONSTANTS AND DEFINITIONS.
- [00845] CSTB - CONTROLLER STATE TABLE. (LDML XXXX,CI)
- [00935] MACROS.
- [00938] TBLM - CREATE MASS STORAGE DEVICE TABLE ENTRIES.
- [01013] TBLM - CREATE TABLE ENTRY MACRO.
- [01036] CBTE - CONTROL BUFFER TABLE ENTRY.
- [01051] CCTE - CHANNEL CONTROL TABLE ENTRY.
- [01066] CHTE - CHANNEL TABLE ENTRY.
- [01081] EMBE - ERROR MESSAGE TABLE ENTRY.
- [01096] EXPE - EXCHANGE PACKAGE ADDRESS ENTRY.
- [01111] FTTE - FUNCTION TIMEOUT TABLE ENTRY.
- [01126] PUTE - PHYSICAL UNIT TABLE ENTRY.
- [01141] ERRMSG - DEFINE ERROR LOG MESSAGE.
- [01162] MONITOR - REQUEST MONITOR FUNCTION.
- [01180] WAIT - DO NOTHING FOR SPECIFIED TIME.
- [01208] MAIN PROGRAM.
- [01210] DAS - MAIN PROGRAM.
- [01280] DEVICE ATTRIBUTE TABLES.
- [01359] READ / WRITE PROCESSING.
- [01361] PIO - READ / WRITE PROCESSING.
- [01464] FORMAT DRIVES AT DEADSTART.
- [01466] CFF - CHECK FOR FORMAT.
- [01538] SELECTIVE RESET PROCESSING.
- [01540] SRS - SELECTIVE RESET PROCESSING.
- [01658] SUBROUTINES.
- [01660] ACE - ANALYZE CHANNEL ERROR.
- [01690] AME - ATTEMPT MONITOR EXCHANGE.
- [01724] ATT - PROCESS ATTENTION.
- [01757] CAA - CHECK IF ACCESS TO PARITY DEVICE IS ALLOWED.
- [01817] CAB - CHECK ACGL *MMF PARITY DEVICE ACCESS* BIT.
- [01839] CAC - CHECK FOR ALTERNATE CHANNEL.
- [01863] CAN - CONVERT ASCII NUMBER TO DISPLAY CODE.
- [01893] CBB - CHECK BDLL *DISABLE ACCESS* BIT.
- [01916] CBC - CLEAR BUFFER COUNT.
- [01930] CBI - CLEAR *BDT* ERROR PROCESSING INTERLOCKS.
- [01962] CCA - CHECK CONTROLLER ATTRIBUTES.
- [02088] CCI - CALCULATE CHANNEL INDEX.
- [02111] CCO - CHECK FOR CONTROLLER OVER TEMPERATURE.
- [02186] CCR - CHECK FOR CHANNEL REQUEST.
- [02233] CCS - CHECK CHANNEL STATE FOR SPECIFIED DEVICE.
- [02250] CDA - CONVERT DISK ADDRESS.
- [02320] CDS - CHECK DEVICE STATUS.
- [02341] CDT - CHECK DRIVE TYPE.
- [02419] CEA - CLEAR *ENABLE CONTROLLER ACTIVITY* REQUEST.
- [02443] CEC - CHECK FOR *ENABLE CONTROLLER ACTIVITY* REQUEST.
- [02472] CEP - CLEAR ERROR PROCESSING INTERLOCK.
- [02524] CET - CHECK ELAPSED TIME.
- [02575] CFM - CLEAR *FORMAT PENDING* FLAG IN MST(S).
- [02612] CFR - CHECK *PUT* FOR REQUEST.
- [02687] CLP - CLEAR *LOST PARITY* FLAGS.
- [02716] CLU - CLUSTER LOGICAL UNIT.
- [02833] CMC - CHECK MONITOR COMPLETE.
- [02872] CMN - CHECK MODEL NUMBER.
- [02920] CMP - COMPLETE PROCESSING.
- [03013] CMR - CHECK FOR MMF *RESTORE* FLAGS.
- [03054] COD - CHECK FOR OFF-LINE DRIVE.
- [03086] CPC - CHECK FOR PARALLEL CONTROLLER.
- [03115] CPE - CHECK IF PARITY DRIVE ENABLED.
- [03174] CPF - CHANGE *PILL* FIELD IN *PUT*.
- [03215] CRF - CLEAR RESET FLAGS.
- [03236] CRI - CLEAR SLAVE RESET INTERLOCK.
- [03254] CRP - CLEAR *RESTORE IN PROGRESS* FLAGS.
- [03310] CSC - COMPUTE SECTOR COUNT FOR RESTORE.
- [03348] CSN - COMPARE CONTROLLER SERIAL NUMBERS.
- [03388] CSR - CLEAR SPECIAL REQUEST.
- [03407] CTO - CHECK TIMEOUT.
- [03435] CUF - CHECK IF UNIT FORMATTED.
- [03471] DCA - DISABLE CONTROLLER ACTIVITY.
- [03494] DCE - DOWN CHANNEL ON EQUIPMENT.
- [03528] DCR - DROP CHANNEL RESERVATION.
- [03551] DDT - DETERMINE DRIVE TYPE.
- [03702] DLU - DECLUSTER LOGICAL UNIT.
- [03756] DMP - DISABLE MMF PARITY DEVICE ACCESS.
- [03807] DRT - CHECK REQUEST TYPE.
- [03831] ECA - ENABLE CONTROLLER ACTIVITY.
- [03862] ECI - EXAMINE CONTROLLER INTERRUPTS.
- [03935] EDR - EXECUTE DRIVE (POWER ON) RESET.
- [04007] EIO - ENTER I/O REQUEST QUEUE.
- [04075] EMP - ENABLE MMF PARITY DEVICE ACCESS.
- [04135] ERR - PROCESS ERRORS.
- [04371] EUI - ENSURE UNIT INTERLOCKED.
- [04408] FFD - FIND FAILING DRIVE.
- [04473] FMU - FORMAT UNIT.
- [04560] GBM - GENERATE BML MESSAGE.
- [04854] GCA - GET CURRENT *ACGL*.
- [04880] GCS - GET CONTROLLER SERIAL NUMBER.
- [04910] IBM - ISSUE BML MESSAGE.
- [04948] ICR - ISSUE CONTROLLER RESET.
- [05012] IDM - ISSUE DAYFILE MESSAGE.
- [05067] IDU - INTERLOCK DISK UNIT.
- [05124] IEE - ISSUE E,E EVENT.
- [05146] IEM - ISSUE ERROR LOG MESSAGE.
- [05223] IHD - INTERRUPT HANDLER.
- [05301] IIO - INITIATE I/O.
- [05385] ILU - INITIALIZE LOGICAL UNIT.
- [05464] IMF - ISSUE MONITOR FUNCTION AND WAIT FOR COMPLETION.
- [05491] IMR - INITIATE *BIOM* MONITOR REQUEST.
- [05518] IOM - ISSUE OPERATOR MESSAGE.
- [05547] IPR - INITIATE PARITY RESTORE.
- [05726] ISR - IDENTIFY AND PROCESS SPECIAL REQUEST.
- [05855] LDP - LOAD DEVICE PARAMETERS.
- [05920] LMR - LOG MICROCODE REVISION.
- [05972] LND - LOCATE NEXT DRIVE (ON SPECIFIED CONTROLLER).
- [06002] LNE - LOCATE NEXT EST/PARTITION FOR THIS DEVICE.
- [06062] LPS - LOG PACK SERIAL NUMBER(S).
- [06139] LSD - LOCATE SELECTED DRIVE IN *DSTB*.
- [06169] PEF - PROCESS ERROR FLAGS.
- [06219] PLP - PROCESS LOST PARITY.
- [06282] PPE - PROCESS PARITY ENABLE.
- [06305] RBD - READ *BDLL*.
- [06324] RCA - REPORT CONTROLLER ATTRIBUTES.
- [06343] RCT - READ CHANNEL TABLE.
- [06359] RDO - REPORT DRIVE OFF-LINE.
- [06377] REE - READ EST ENTRY.
- [06395] RLB - READ LINKAGE BITS.
- [06437] RMR - READ CHANNEL STATUS REGISTER.
- [06463] RND - RUN DIAGNOSTICS.
- [06505] ROD - RESTORE OFF-LINE DRIVE.
- [06649] SCD - STORE *CPD* DATA.
- [06673] SCP - SET COMMAND PARAMETER.
- [06694] SDO - SET DRIVE OFF-LINE.
- [06761] SDT - SET DATA TRANSFER MODE.
- [06788] SEC - SET ERROR CODE.
- [06863] SEO - SET EST ORDINAL.
- [06897] SEP - SET ERROR PROCESSING INTERLOCK.
- [07012] SFP - SET COMMON FORMAT PARAMETERS.
- [07040] SFR - SEARCH FOR CONSECUTIVE REQUEST.
- [07129] SLB - SET LINKAGE BITS.
- [07180] SMD - SKIP MEDIA DEFECT DURING RESTORE.
- [07232] SOC - SET OPERATION CODE AND CONTROLLER.
- [07246] SOU - SET OPERATION CODE AND UNIT.
- [07273] SRF - SET DRIVER RELOAD FLAG.
- [07304] SRI - SET SLAVE RESET INTERLOCK.
- [07355] SRP - SEARCH RESPONSE PACKET.
- [07390] SSS - SET SUSPECT STATE ON DEVICE.
- [07441] STF - REQUEST TRACK FLAW.
- [07505] STO - SET TIMEOUT.
- [07534] SUA - SET UEM ADDRESS.
- [07564] SUD - SPIN UP DRIVE.
- [07610] SUI - SET UNIT INTERLOCK.
- [07638] TMSE - TABLE OF MASS STORAGE ERROR CODES.
- [07665] TMSK - TABLE OF CONTROLLER MASKS.
- [07682] UBP - UPDATE *BDLL* PARAMETER.
- [07716] UEC - UPDATE MST ERROR COUNT.
- [07742] UHD - UNPACK HEX DATA.
- [07805] UPD - UDPATE PHYSICAL DRIVE NUMBER.
- [07851] VDA - VERIFY DRIVE ATTRIBUTES.
- [08015] VIS - VERIFY INTERRUPT SOURCE.
- [08051] WAC - WAIT FOR OTHER ACTIVITY TO COMPLETE.
- [08086] WLB - WRITE LINKAGE BITS.
- [08127] WMC - WAIT MAINTENANCE CHANNEL EMPTY.
- [08149] CHANNEL SUBROUTINES.
- [08151] BCS - DEFINE INFORMATION TRANSFER.
- [08173] CFE - CHECK FOR I/O ERROR.
- [08192] CRC - COMMON READ CODE.
- [08217] CTC - CHECK TRANSFER COMPLETE.
- [08298] DCM - DESELECT CONTROLLER.
- [08316] DCT - DETERMINE CHANNEL TYPE.
- [08334] DTM - DETERMINE TRANSFER MODE.
- [08373] FAN - SEND A FUNCTION TO THE IPI CHANNEL.
- [08387] FCN - ISSUE FUNCTION.
- [08405] GIS - GET INTERRUPT STATUS.
- [08430] GSS - GET SLAVE STATUS.
- [08481] IDT - INPUT DATA TO PP.
- [08526] RCR - RESET CHANNEL REGISTERS. THIS LEAVES THE IPI
- [08569] RDR - READ REGISTER.
- [08587] RIF - RESET INTERFACE.
- [08628] RRP - READ RESPONSE PACKET.
- [08655] RSR - READ SLAVE RESPONSE.
- [08677] RTR - READ T REGISTER.
- [08709] SAP - SELECT ADAPTER PORT.
- [08726] SCM - SELECT CONTROLLER.
- [08757] WCB - WRITE COMMAND BLOCK (PACKET).
- [08817] WTC - WAIT TRANSMISSION COMPLETE.
- [08832] WTR - WRITE T REGISTER.
- [08872] COMMON DECKS.
- [08895] BUFFERS.
- [08932] PRESET.
- [08942] PRS - PRESET DRIVER FOR PROCESSING.
- [09036] PRESET SUBROUTINES.
- [09038] CCP - CHECK CALLING PROGRAM.
- [09071] IFP - INITIALIZE MANAGED TABLE PROCESSORS.
- [09078] MCI - MODIFY CHANNEL INSTRUCTIONS.
- [09113] SCT - SET CHANNEL TABLE ENTRY ADDRESSES.
- [09158] SPA - SET PP EXCHANGE PACKAGE ADDRESSES.
- [09195] STA - SET TABLE ADDRESSES.
- [09225] INSTRUCTION MODIFICATION TABLES.
- [09301] BST - BUILD STATE TABLES AND BML ERROR MESSAGE BUFFER.
- [09351] SUBROUTINES.
- [09353] MRS - MASTER RESET SLAVES.
- [09395] OVERLAYABLE SUBROUTINES.
- [09397] CFD - CLEAR FLAGS AT DEADSTART.
- [09518] DHE - DETERMINE HIGHEST EST ORDINAL.
- [09555] IST - INITIALIZE DEVICE STATE TABLE.
- [09688] SMC - SET MMF CONSTANTS.
Source Code
- 1DA.txt
- IDENT 1DA,DASX
- TITLE 1DA - DISK ARRAY SUBSYSTEM (DAS) DRIVER.
- CIPPU ,S
- MEMSEL 8
- LIST F
- BASE M
- SST DLYA,.DLY,.EST
- *COMMENT 1DA - DISK ARRAY SUBSYSTEM (DAS) DRIVER.
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- SPACE 4,10
- *** 1DA - DAS DRIVER.
- *
- * C. D. ROWE. 91/03/06.
- * P. C. SMITH. 94/03/21.
- * R. E. DUNBAR. 94/07/15.
- * P. C. SMITH. 95/12/10.
- SPACE 4,40
- *** *1DA* IS THE DRIVER FOR THE 583X/47444 DISK ARRAY SUBSYSTEM.
- *
- * THE FOLLOWING DISK DRIVES ARE SUPPORTED,
- * 5832-1, 5832-2
- * 5833-1, 5833-1P
- * 5833-2, 5833-2P
- * 5833-3P, 5833-4
- * 5838-1, 5838-1P
- * 5838-2, 5838-2P
- * 5838-3P, 5838-4
- * 47444-1, 47444-1P
- * 47444-2, 47444-2P
- * 47444-3P, 47444-4
- *
- * THE DAS DISK DRIVES ARE SUPPORTED AS BUFFERED I/O
- * DEVICES. REQUESTS TO BE PROCESSED BY *1DA* ARE POSTED
- * BY *CPUMTR* IN THE BUFFERED I/O TABLES IN *CMR*.
- * *1DA* INTERLOCKS UNITS, DELINKS BUFFERS, AND COMPLETES
- * SAID REQUESTS BY ISSUING APPROPRIATE *BIOM* FUNCTIONS.
- *
- * EACH COPY OF *1DA* WILL SUPPORT ONE CONCURRENT CHANNEL
- * CONFIGURED WITH THE INTELLIGENT PERIPHERAL INTERFACE (IPI)
- * AND IS THE SOLE DRIVER FOR ALL DAS DISKS ON THAT CHANNEL.
- * *1DA* MUST BE LOADED INTO A CONCURRENT PP, IN THE SAME
- * BANK AS THE CHANNEL IT IS TO SERVICE. THIS DRIVER SUPPORTS
- * THE 10 AND THE 25 MB IPI CHANNELS. WHEN THE DRIVER IS
- * LOADED IT STATUSES THE CHANNEL TO DETERMINE WHICH ONE IS
- * PRESENT. IT WILL READ THE CHANNEL SPEED SELECTED IN THE
- * CONTROLLER USING INTERLOCK MODE. IF THE SPEED IS
- * INCORRECT, IT WILL SET THE SPEED TO BE THE SAME AS THE
- * CHANNEL.
- *
- * EACH COPY OF THE DRIVER CAN SERVICE UP TO 24 LOGICAL DAS
- * UNITS IN ANY CONFIGURATION MIX. UP TO 4 CONTROLLERS MAY
- * BE CONFIGURED; A CONTROLLER MAY BE COUPLED TO EITHER PORT
- * OF THE IPI ADAPTER.
- *
- * *1DA* SCANS THROUGH THE *PUT* ENTRIES IN A CIRCULAR FASHION
- * LOOKING FOR REQUESTS TO PROCESS. ONCE A REQUEST IS FOUND,
- * *1DA* USES THE PHYSICAL DISK AND UEM ADDRESSES IN THE
- * CORRESPONDING *CBT* ENTRY TO DETERMINE THE ACTION TO BE
- * TAKEN. *1DA* WILL ATTEMPT TO PROCESS CONSECUTIVE REQUESTS
- * ON THE CURRENT UNIT UNTIL THE END OF THE UNIT I/O QUEUE,
- * OR A CONSECUTIVE REQUEST WAS NOT FOUND. AT THIS POINT
- * *1DA* WILL RESUME ITS SEARCH THROUGH THE *PUT* WITH THE
- * *PUT* ENTRY IMMEDIATELY FOLLOWING THE ONE JUST PROCESSED.
- SPACE 4,40
- *** ORGANIZATION OF THE DAS UNITS (MEASUREMENTS IN DECIMAL).
- *
- * EQUIPMENT TYPE EA EB
- * PRODUCT NUMBER 5832-1 5832-2
- *
- * UNITS/LOGICAL DEVICE 1-8 1-4
- * PARTITIONS 1 1
- *
- * PHYSICAL ORGANIZATION
- *
- * WORDS/PHYSICAL SECTOR 2048 2048
- * PHYSICAL SECTORS/TRACK 3 6
- * SPARE SECTORS/CYLINDER 0 0
- * PHYSICAL TRACKS/CYLINDER 4 4
- * CYLINDERS/DRIVE 844 844
- *
- * LOGICAL ORGANIZATION
- *
- * WORDS/LOGICAL SECTOR 64 64
- * LOGICAL SECTORS/LOGICAL TRACK 160 320
- * LOGICAL TRACKS/DRIVE 2023 2023
- *
- *
- * EQUIPMENT TYPE EC/ED EE/EF
- * PRODUCT NUMBER 5833-1/1P 5833-2/2P
- *
- * UNITS/LOGICAL DEVICE 1-2 1
- * PARTITIONS 1 1
- *
- * PHYSICAL ORGANIZATION
- *
- * WORDS/PHYSICAL SECTOR 2048 2048
- * PHYSICAL SECTORS/TRACK 6 11
- * SPARE SECTORS/CYLINDER 2 2
- * PHYSICAL TRACKS/CYLINDER 7 7
- * CYLINDERS/DRIVE 1629 1629
- *
- * LOGICAL ORGANIZATION
- *
- * WORDS/LOGICAL SECTOR 64 64
- * LOGICAL SECTORS/LOGICAL TRACK 992 1920
- * LOGICAL TRACKS/DRIVE 2046 2034
- *
- *
- * EQUIPMENT TYPE EM EN
- * PRODUCT NUMBER 5833-3P 5833-4
- *
- * UNITS/LOGICAL DEVICE 1 1
- * PARTITIONS 2 2
- *
- * PHYSICAL ORGANIZATION
- *
- * WORDS/PHYSICAL SECTOR 2048 2048
- * PHYSICAL SECTORS/TRACK 17 22
- * SPARE SECTORS/CYLINDER 2 2
- * PHYSICAL TRACKS/CYLINDER 7 7
- * CYLINDERS/DRIVE 1629 1629
- * CYLINDERS/PARTITION 814 814
- *
- * LOGICAL ORGANIZATION
- *
- * WORDS/LOGICAL SECTOR 64 64
- * LOGICAL SECTORS/LOGICAL TRACK 1504 1952
- * LOGICAL TRACKS/LOGICAL DEVICE 2023 2025
- *
- *
- * EQUIPMENT TYPE EG/EH EI/EJ
- * PRODUCT NUMBER 5838-1/1P 5838-2/2P
- *
- * UNITS/LOGICAL DEVICE 1 1
- * PARTITIONS 1 2
- *
- * PHYSICAL ORGANIZATION
- *
- * WORDS/PHYSICAL SECTOR 2048 2048
- * PHYSICAL SECTORS/TRACK 5 9
- * SPARE SECTORS/CYLINDER 4 4
- * PHYSICAL TRACKS/CYLINDER 9 9
- * CYLINDERS/DRIVE 2620 2620
- * CYLINDERS/PARTITION 2620 1310
- *
- * LOGICAL ORGANIZATION
- *
- * WORDS/LOGICAL SECTOR 64 64
- * LOGICAL SECTORS/LOGICAL TRACK 1696 1600
- * LOGICAL TRACKS/LOGICAL DEVICE 2025 2015
- *
- *
- * EQUIPMENT TYPE EK EL
- * PRODUCT NUMBER 5838-3P 5838-4
- *
- * UNITS/LOGICAL DEVICE 1 1
- * PARTITIONS 3 4
- *
- * PHYSICAL ORGANIZATION
- *
- * WORDS/PHYSICAL SECTOR 2048 2048
- * PHYSICAL SECTORS/TRACK 14 18
- * SPARE SECTORS/CYLINDER 4 4
- * PHYSICAL TRACKS/CYLINDER 9 9
- * CYLINDERS/DRIVE 2620 2620
- * CYLINDERS/PARTITION 873 655
- *
- * LOGICAL ORGANIZATION
- *
- * WORDS/LOGICAL SECTOR 64 64
- * LOGICAL SECTORS/LOGICAL TRACK 1696 1632
- * LOGICAL TRACKS/LOGICAL DEVICE 2007 2026
- *
- *
- * EQUIPMENT TYPE EO/EP ES/EU
- * PRODUCT NUMBER 47444-1/1P 47444-2/2P
- *
- * UNITS/LOGICAL DEVICE 1 1
- * PARTITIONS 1 2
- *
- * PHYSICAL ORGANIZATION
- *
- * WORDS/PHYSICAL SECTOR 512 1024
- * PHYSICAL SECTORS/TRACK 13 13
- * SPARE SECTORS/CYLINDER 7 7
- * PHYSICAL TRACKS/CYLINDER 15 15
- * CYLINDERS/DRIVE 2290 2290
- * CYLINDERS/PARTITION 2290 1145
- *
- * LOGICAL ORGANIZATION
- *
- * WORDS/LOGICAL SECTOR 64 64
- * LOGICAL SECTORS/LOGICAL TRACK 3240B 3240B
- * LOGICAL TRACKS/LOGICAL DEVICE 3755B 3754B
- *
- *
- * EQUIPMENT TYPE EV EW
- * PRODUCT NUMBER 47444-3P 47444-4
- *
- * UNITS/LOGICAL DEVICE 1 1
- * PARTITIONS 3 4
- *
- * PHYSICAL ORGANIZATION
- *
- * WORDS/PHYSICAL SECTOR 1024 1024
- * PHYSICAL SECTORS/TRACK 19 25
- * SPARE SECTORS/CYLINDER 7 7
- * PHYSICAL TRACKS/CYLINDER 15 15
- * CYLINDERS/DRIVE 2290 2290
- * CYLINDERS/PARTITION 763 572
- *
- * LOGICAL ORGANIZATION
- *
- * WORDS/LOGICAL SECTOR 64 64
- * LOGICAL SECTORS/LOGICAL TRACK 3200B 3200B
- * LOGICAL TRACKS/LOGICAL DEVICE 3764B 3744B
- SPACE 4,20
- *** TRANSFER RATES
- *
- * 1. MAXIMUM TRANSFER RATE OF PP IF 10 MB IPI CHANNEL, 16 KB
- * SECTOR SIZE, AND CPU RESPONSE TIME IS IMMEDIATE.
- *
- * SECTORS STREAMED / PP OVERHEAD + SECTORS * (1.6384 + .150)
- *
- * USE SECTORS = 96 (8 SSD CYLINDERS)
- *
- * RATE = 96 * 16384 1572864
- * ----------------- = ------- = 9.06 MB/S
- * 2 + 96 * (1.7884) 173.686
- *
- * = 11310 KCHAR/S
- *
- * 2. MAXIMUM RATE FOR SSD IF 10 MB IPI CHANNEL, 16 KB SECTOR
- * SIZE, AND CPU RESPONSE TIME IS IMMEDIATE.
- *
- * BYTES FOR 8 CYLINDERS
- * RATE = -------------------------------------------------------
- * PP+CTR OVERHEAD + 8 CYL SWITCHES+SEC. * (1.6384 + 150)
- *
- *
- * 1572864
- * = -------------------------- = 8.83 MB/S
- * 2 + 2 + 2.4 + 96 * (1.7884)
- *
- * = 11040 KCHAR/S
- *
- * 3. MAXIMUM RATE FOR 5833-1 IF 10 MB IPI CHANNEL, 16 KB SECTOR
- * SIZE, AND CPU RESPONSE TIME IS IMMEDIATE.
- *
- * CYLINDER SWITCH = 5.5 MILLISECONDS
- *
- *
- * BYTES FOR 8 CYLINDERS
- * RATE = ------------------------------------------------
- * 8 CYL SWITCHES + ((HEADS * CYL) + 1) * 16.66666
- *
- *
- * 40 * 16384 * 8 5242880
- * RATE = ------------------ = ------------ = 5.27 MB/S
- * 44 + 57 * 16.6666 994
- *
- * = 6593 KCHAR/S
- *
- * 4. MAXIMUM RATE FOR 5833-2 IF 10 MB IPI CHANNEL, 16 KB SECTOR
- * SIZE, AND CPU RESPONSE TIME IS IMMEDIATE.
- *
- * CYLINDER SWITCH = 11 MILLISECONDS
- *
- * BYTES FOR 8 CYLINDERS
- * RATE = ------------------------------------------------
- * 8 CYL SWITCHES + ((HEADS * CYL) + 1) * 16.66666
- *
- *
- * 75 * 16384 * 8 9830400
- * RATE = ------------------ = ------------ = 9.45 MB/S
- * 88 + 57 * 16.6666 1040
- *
- *
- * = 11810 KCHAR/S
- *
- * NOTE - SINCE THIS IS GREATER THAN THE RATE THE PP CAN MAINTAIN,
- * YOU MUST USE THE RATE THE PP CAN MAINTAIN (11310 KCHAR/S).
- *
- * 5. MAXIMUM TRANSFER RATE OF PP IF 25 MB IPI CHANNEL, 16 KB
- * SECTOR SIZE, AND CPU RESPONSE TIME IS IMMEDIATE.
- *
- * SECTORS STREAMED / PP OVERHEAD + SECTORS * (.65536 + 150)
- *
- * USE SECTORS = 96 (8 SSD CYLINDERS)
- *
- * RATE = 96 * 16384 1572864
- * ----------------- = ------- = 20.34 MB/S
- * 2 + 96 * (.80536) 77.316
- *
- * = 25430 KCHAR/S
- SPACE 4,35
- *** MEASURED TRANSFER RATES.
- * MAINFRAME = 860/870
- * MST(N=400000,P=6) TO GET TIMING VALUES.
- *
- * NOTE - THE NUMBER OF DRIVES CONFIGURED PER DRIVER AND THE
- * INTERRUPT SIZE (PHYSICAL SECTORS) FOR WRITES COULD
- * AFFECT PERFORMANCE.
- *
- * NOTE- BUFFER THRESHOLD VALUES USED WERE 4,3,3. CHANGING
- * THE BUFFER VALUES TO 1,3,3 FOR 583X DRIVES INCREASED
- * RANDOM READS APPROXIMATELY 30 PERCENT AND DID NOT
- * HURT OTHER VALUES.
- *
- * NOTE- A FIELD LENGTH OF 60000 WAS USED WHEN RUNNING MST.
- * USE OF A SMALLER FIELD LENGTH COULD CAUSE PERFORMANCE
- * NUMBERS TO DECREASE.
- *
- * SEQ. SEQ. RANDOM RANDOM
- * UNITS INT. WRITE READ READ WRITE
- * TYPE DEFINED SIZE KC/S KC/S IO/S IO/S CHANNEL
- * -------------------------------------------------------------
- * 5832-1 1 NA 9448 9306 78.2 59.9 IPI-10
- * 5832-2 1 NA 10009 9980 73.6 53.9 IPI-10
- * 5833-1 1 2 6669 6765 31.8 25.4 IPI-10
- * 5833-2 1 2 9996 9379 36.3 27.0 IPI-10
- * 5833-3 1 2 9945 9956 36.0 26.4 IPI-10
- * 5833-4 1 2 9983 10078 37.2 16.4 IPI-10
- * 5838-1 1 2 8180 8172 44.4 27.9 IPI-10
- * 47444-1 1 8 4097 4232 29.1 16.4 IPI-10
- * 47444-2 1 4 8191 9525 33.5 17.8 IPI-10
- * 47444-3 1 4 8792 9594 32.1 16.6 IPI-10
- * 47444-4 1 4 9161 9713 32.8 17.0 IPI-10
- * 5832-1 1 NA 9886 10032 88.2 66.9 IPI-25
- * 5832-2 1 NA 12894 8157 119.1 79.8 IPI-25
- * 5833-1 1 2 6649 6774 32.9 25.9 IPI-25
- * 5833-2 1 2 11975 8078 40.4 27.5 IPI-25
- * 5833-3 1 2
- * 5833-4 1 2
- * 5838-1 1 2 8067 8205 44.3 26.9 IPI-25
- * 5838-2 1 2
- * 5838-3 1 2
- * 5838-4 1 2
- * 47444-1 1 8 IPI-25
- * 47444-2 1 4 IPI-25
- * 47444-3 1 4 IPI-25
- * 47444-4 1 4 IPI-25
- * 9853 1 8 3087 3130 21.7 17.2 IPI-10
- * 887-4K 1 11210 10958 35.3 18.9 ISI
- SPACE 4,10
- *** CALL.
- *
- *T 18/ DRN, 6/ CP, 6/ CO, 18/, 7/ 1, 5/ CH
- *
- * DRN DRIVER NAME.
- * CP CONTROL POINT NUMBER (MUST BE SYSTEM CP).
- * CO CHANNEL TABLE ORDINAL (SET BY *CPUMTR*).
- * CH CHANNEL NUMBER BEING SERVICED BY THIS PP.
- SPACE 4,10
- *** DAYFILE MESSAGES.
- *
- * DRN - UNAUTHORIZED CALL.
- *
- * THE DRIVER (NAMED *DRN*) WILL ISSUE THIS MESSAGE AND ABORT
- * IF NOT ASSIGNED TO THE SYSTEM CONTROL POINT.
- SPACE 4,20
- *** ERRLOG MESSAGES.
- *
- * EQORD,TKNNNN, MEDIA DEFECT ENCOUNTERED.
- *
- * A MEDIA DEFECT HAS BEEN ENCOUNTERED ON EQUIPMENT WITH EST
- * ORDINAL ORD, LOGICAL TRACK NNNN. A REQUEST HAS BEEN ISSUED
- * TO AUTOMATICALLY FLAW THIS TRACK WHEN IT IS DROPPED.
- *
- *
- * CHCC MH427-DXX,CMN.
- *
- * CONTROLLER N ON CHANNEL CC IS RUNNING MICROCODE REVISION
- * LEVEL XX.
- *
- *
- * YYZZZ, UNN, CMA CONTROLLER DISABLED, CCHBB.
- *
- * CONTROLLER A ON CONCURRENT CHANNEL BB HAS BEEN DISABLED.
- * THIS DRIVER WILL NO LONGER TRY TO USE THIS CONTROLLER.
- * THIS ACTION WAS TAKEN AS A RESULT OF ERROR PROCESSING FOR
- * DRIVE NN OF THE LOGICAL UNIT WITH DRIVE TYPE YY AND EST
- * ORDINAL ZZZ. ACCESS TO THIS CONTROLLER MAY BE REENABLED
- * BY ENTERING AN *UP,CCH* COMMAND FOR THE AFFECTED CHANNEL.
- *
- *
- * YYZZZ, UNN, CMA CONTROLLER ENABLED, CCHBB.
- *
- * CONTROLLER A ON CONCURRENT CHANNEL BB HAS BEEN REENABLED.
- * THIS DRIVER WILL NOW ATTEMPT TO USE THIS CONTROLLER AGAIN.
- * THIS ACTION WAS TAKEN IN RESPONSE TO AN *UP,CCH* COMMAND
- * FOR THIS CHANNEL.
- *
- *
- * YYZZZ, UNN, CMA RESET ON CCHBB.
- *
- * A SLAVE RESET HAS BEEN INITIATED ON CONTROLLER A ON
- * CONCURRENT CHANNEL BB, AS PART OF ERROR PROCESSING FOR
- * DRIVE NN OF THE LOGICAL UNIT WITH DRIVE TYPE YY AND EST
- * ORDINAL ZZZ.
- *
- *
- * YYZZZ, UNN, CMA RESET COMPLETE.
- *
- * THE SLAVE RESET OF CONTROLLER A, WHICH WAS INITIATED AS
- * PART OF ERROR PROCESSING FOR DRIVE NN OF THE LOGICAL UNIT
- * WITH DRIVE TYPE YY AND EST ORDINAL ZZZ, IS COMPLETE.
- *
- *
- * YYZZZ, UNN, CMA RESET FAILURE.
- *
- * THE SLAVE RESET OF CONTROLLER A, WHICH WAS INITIATED AS
- * PART OF ERROR PROCESSING FOR DRIVE NN OF THE LOGICAL UNIT
- * WITH DRIVE TYPE YY AND EST ORDINAL ZZZ, HAS FAILED.
- *
- *
- * YYZZZ, UNN, FORMAT COMPLETE.
- *
- * THE FORMAT OF DRIVE NN OF THE LOGICAL UNIT WITH DRIVE TYPE
- * YY AND EST ORDINAL ZZZ IS COMPLETE.
- *
- *
- * YYZZZ, UNN, FORMAT INITIATED.
- *
- * A FORMAT HAS BEEN INITIATED ON DRIVE NN OF THE LOGICAL UNIT
- * WITH DRIVE TYPE YY AND EST ORDINAL ZZZ.
- *
- *
- * YYZZZ, UNN,PS=XXXXXX.
- *
- * THE DAS UNIT, NN, WITH DEVICE TYPE YY AND ORDINAL ZZZ HAS
- * THE PACK SERIAL NUMBER XXXXXX.
- *
- *
- * YYZZZ, UNN, PARITY PROTECTION DISABLED.
- *
- * DRIVE NN OF THE LOGICAL UNIT WITH DRIVE TYPE YY AND ORDINAL
- * ZZZ HAS BEEN SET OFF LINE.
- *
- *
- * YYZZZ, UNN, PARITY PROTECTION RESTORED.
- *
- * DRIVE NN OF THE LOGICAL UNIT WITH DRIVE TYPE YY AND ORDINAL
- * ZZZ HAS BEEN RESTORED.
- *
- *
- * YYZZZ, UNN, PARITY RESTORE INITIATED.
- *
- * A PARITY RESTORE HAS BEEN INITIATED ON DRIVE NN OF THE
- * LOGICAL UNIT WITH DRIVE TYPE YY AND ORDINAL ZZZ.
- SPACE 4,10
- *** OPERATOR MESSAGES.
- *
- * EQORD, SPIN UP PENDING.
- *
- * EQORD UNN FORMATTING.
- *
- * CMX BEING RESET ON CCHNN.
- *
- * MR ERROR.
- SPACE 4,15
- *** DISK ERROR PROCESSING.
- *
- * THE DRIVER MAINTAINS A COUNTER OF THE NUMBER OF RETRIES
- * NECESSARY TO SUCCESSFULLY PROCESS A REQUEST. IF THE
- * ERROR COUNT IS NON-ZERO WHEN A REQUEST IS COMPLETED, THE
- * DRIVER WILL LOG A BML MESSAGE AND INCREMENT THE RECOVERED
- * ERROR COUNT IN THE MST.
- *
- * IF THE ERROR COUNT REACHES *MERC* BEFORE THE REQUEST IS
- * SUCCESSFULLY COMPLETED, THE DRIVER WILL SET AN ERROR CODE
- * IN THE *CBT*, LOG A FATAL ERROR IN THE BML, AND INCREMENT
- * THE UNRECOVERED ERROR COUNT IN THE MST.
- SPACE 4,10
- *** CONFIGURATION NOTES.
- *
- * IN A DUAL ACCESS ENVIRONMENT, THE SAME EQUIPMENT NUMBER MUST
- * BE SET FOR THE PORT IN USE ON EACH CONTROLLER.
- SPACE 4,20
- *** SPECIAL PROGRAMMING NOTES.
- *
- * THE FOLLOWING IS A LIST OF SPECIAL NOTES THAT SHOULD BE
- * READ AND UNDERSTOOD BEFORE ANY MODIFICATIONS ARE MADE TO
- * THIS PROGRAM.
- *
- *
- * 1) WHERE POSSIBLE, *CMR* POINTERS HAVE BEEN PLUGGED BY THE
- * PRESET ROUTINE TO IMPROVE THE EXECUTION SPEED OF THE
- * PROGRAM AND TO MINIMIZE THE AMOUNT OF CODE.
- *
- * 2) SUBROUTINE *IMR* ISSUES A *BIOM* REQUEST TO *CPUMTR*
- * WITHOUT WAITING FOR THE REQUEST TO COMPLETE. THEREFORE,
- * BEFORE WRITING THE OUTPUT REGISTER FOR ANY OTHER MONITOR
- * FUNCTION, SUBROUTINE *CMC* MUST BE CALLED TO ENSURE ANY
- * PREVIOUS *BIOM* REQUEST IS COMPLETE. TO ENSURE THAT THIS
- * LOGIC IS FOLLOWED, THE *MONITOR* MACRO IS REDEFINED TO
- * CALL SUBROUTINE *IMF* RATHER THAN *PPR* SUBROUTINE *FTN*.
- *
- * 3) THE DEVICE STATE TABLE COMPLETELY OVERLAYS *PPR*.
- * THEREFORE, IT IS NOT POSSIBLE TO CALL ANY *PPR* ENTRY
- * POINT AFTER SUBROUTINE *IST* IS CALLED IN *3DZ*.
- SPACE 4,25
- *** INFORMATIVE BML MESSAGES.
- *
- * SOME MESSAGES MAY BE LOGGED AT DRIVE INITIALIZATION TIME THAT
- * ARE INFORMATIVE RATHER THAN HARDWARE ERRORS.
- *
- * 1) IF A DRIVE IS FORMATTED FOR NOS/VE, THEN USED BY NOS IN
- * DUAL ACCESS MODE, THE DRIVE WILL BE FORMATTED THROUGH
- * ONE PATH, BUT THE CONTROLLER ON THE OTHER PATH DOES NOT
- * YET KNOW A FORMAT CHANGE OCCURRED. IF THE NUMBER OF
- * PHYSICAL DRIVES PER LOGICAL UNIT REMAINS THE SAME, A
- * LOGICAL RESET WILL BE REQUIRED. EXAMPLE OF RESPONSE
- * RETURNED.
- *
- * 0016 0132 0600 0018 0DE1 0000 0101 0000 C0FE 0000 1000
- *
- * IF THE NUMBER OF PHYSICAL DRIVES PER LOGICAL UNIT
- * CHANGES, A SLAVE RESET WILL BE REQUIRED ON THE SIDE THAT
- * DOES NOT DO THE FORMAT/CLUSTER.
- *
- * 2) IF THE SYSTEM IS DEADSTARTED WHILE I/O REQUESTS ARE IN
- * PROGRESS OR A CHANNEL IS DOWNED WHEN I/O IS IN PROGRESS,
- * A DRIVE COULD BE LEFT RESERVED. THE NEXT TIME THE DRIVE
- * IS ACCESSED, A RECOVERABLE ERROR MAY OCCUR. IF A DRIVE
- * IS BUSY, THE DRIVE RESET, STEP 2 OF ERROR RECOVERY, WILL
- * BREAK THE RESERVE.
- SPACE 4,10
- ** COMMON DECKS.
- *CALL COMPMAC
- RICHI$ EQU 1 SELECT DEFERRED INSTRUCTION MODIFICATION
- LCHI$ EQU 1 SELECT CONL FOR CHANNEL ADDRESS TABLE
- *CALL COMPCHI
- *CALL COMSCPS
- QUAL$S SET 0 REMOVE QUALIFICATION OF COMSDFS CONSTANTS
- *CALL COMSDFS
- *CALL COMSEVT
- LIST X
- *CALL COMSHIO
- LIST *
- QUAL IOU
- *CALL COMSIOU
- QUAL *
- QUAL MMF
- *CALL COMSMMF
- QUAL *
- *CALL COMSMSC
- *CALL COMSMSP
- *CALL COMSMST
- *CALL COMSPIM
- *CALL COMS1DS
- SPACE 4,10
- ** INTERFACE SPECIFICATIONS.
- DN MICRO 1,3,*1DA* DEFAULT DRIVER NAME
- TITLE CONSTANTS AND DEFINITIONS.
- SPACE 4,10
- **** DIRECT CELL ALLOCATION.
- NR EQU 15 - 21 NEXT REQUEST
- WB EQU 22 - 26 CM WORD BUFFER
- * THE NEXT FIVE LOCATIONS ARE ORDER DEPENDENT.
- PB EQU 27 PREVIOUS CONTROL BUFFER ORDINAL
- CB EQU 30 CURRENT CONTROL BUFFER ORDINAL
- NB EQU 31 NEXT CONTROL BUFFER ORDINAL
- UA EQU 32 - 33 UEM ADDRESS / 100
- EO EQU 34 EST ORDINAL
- DN EQU 35 DRIVE NUMBER
- CI EQU 36 CONTROLLER STATE TABLE ADDRESS
- CN EQU 37 CONTROLLER NUMBER
- MS EQU 40 MAJOR STATUS (RESPONSE PACKET)
- RT EQU 41 STATUS RESPONSE TYPE
- TM EQU 42 TRANSFER MODE, 0 = STREAM DATA
- DT EQU 43 DRIVE TYPE
- UC EQU 44 UNIT ACTIVITY COUNT
- RW EQU 45 READ / WRITE FLAG
- PA EQU 46 PROCESSOR ADDRESS
- DI EQU 47 DEVICE STATE TABLE ADDRESS
- CT EQU IR CHANNEL TYPE, 0 = 10 MB CHANNEL
- FC EQU IR+1 FORMAT COMPLETE FOR ALL UNITS IF NONZERO
- DD EQU IR+2 NUMBER OF DATA DRIVES IN DEVICE
- MF EQU IR+3 MASTER CLEAR CHANNEL ERROR IF NONZERO
- CR EQU 57 CHANNEL RESERVED IF NONZERO
- RF EQU 60 RESET IN PROGRESS IF NONZERO
- LF EQU 61 LAST FUNCTION
- PD EQU 62 NUMBER OF PARITY DRIVES IN DEVICE
- CW EQU 63 - 67 CM WORD BUFFER
- ****
- SPACE 4,10
- ** IPI ADAPTER FUNCTION CODES.
- F0000 EQU 0#0000 MASTER CLEAR
- F00E1 EQU 0#00E1 READ STATUS REGISTER
- F0100 EQU 0#0100 CLEAR DMA ERROR
- F0102 EQU 0#0102 READ IPI REVISION REGISTER
- F0300 EQU 0#0300 WRITE CONTROL REGISTER
- F0700 EQU 0#0700 READ OPERATIONAL STATUS
- F0800 EQU 0#0800 DMA TERMINATE
- F0A00 EQU 0#0A00 READ T REGISTER
- F0B00 EQU 0#0B00 WRITE T REGISTER
- F0C00 EQU 0#0C00 DMA READ FROM ADAPTER
- F0D00 EQU 0#0D00 DMA WRITE TO ADAPTER
- F0E00 EQU 0#0E00 CLEAR T REGISTER
- F0062 EQU 0#0062 PORT A SELECT
- F0862 EQU 0#0862 PORT B SELECT
- SPACE 4,10
- ** IPI CHANNEL FUNCTION CODES.
- F0029 EQU 0#0029 SELECT CONTROLLER (SET SELECT OUT)
- F005B EQU 0#005B DEFINE INFORMATION TRANSFER (SET SYNC OUT)
- F0071 EQU 0#0071 DESELECT CONTROLLER (CLEAR SELECT OUT)
- F0711 EQU 0#0711 CLEAR MASTER OUT
- F0715 EQU 0#0715 ENABLE INTERRUPTS (SET MASTER OUT)
- F8025 EQU 0#8025 REQUEST TRANSFER MODE (SET MASTER OUT)
- F8039 EQU 0#8039 MASTER STATUS (CLEAR MASTER OUT)
- F8215 EQU 0#8215 RESET LOGICAL INTERFACE (SET MASTER OUT)
- F8415 EQU 0#8415 RESET SLAVE (SET MASTER OUT)
- F9213 EQU 0#9213 MASTER RESET SLAVES (SET SYNC OUT)
- * DATA TRANSFER FUNCTIONS.
- F0081 EQU 0#0081 READ INTERLOCKED
- F0181 EQU 0#0181 WRITE INTERLOCKED
- F0281 EQU 0#0281 READ STREAMING
- F0381 EQU 0#0381 WRITE STREAMING
- SPACE 4,10
- ** COMMAND / RESPONSE PACKET DEFINITIONS.
- PLN EQU 0 PACKET LENGTH
- CRN EQU 1 COMMAND REFERENCE NUMBER
- OPC EQU 2 OPERATION CODE
- CUN EQU 3 CONTROLLER + UNIT NUMBER
- FCP EQU 4 FIRST COMMAND PARAMETER
- MST EQU 4 MAJOR STATUS
- * MAJOR STATUS RESPONSE TYPES.
- CMCT EQU 1 COMMAND COMPLETE
- ASRT EQU 4 ASYNCHRONOUS RESPONSE
- XFNT EQU 5 TRANSFER NOTIFICATION
- * MAJOR STATUS CODES.
- CMCS EQU 0#12 COMMAND COMPLETE (CONDITIONAL SUCCESS)
- CMSS EQU 0#18 COMMAND COMPLETE (SUCCESSFUL)
- ASRS EQU 0#40 ASYNCHRONOUS RESPONSE
- XFNS EQU 0#50 TRANSFER NOTIFICATION
- IOPL EQU 20 I/O COMMAND PACKET LENGTH
- RPBFL EQU 77 RESPONSE PACKET BUFFER LENGTH
- SPACE 4,10
- ** COMMAND PACKET OPERATION CODES.
- C0200 EQU 0#0200 REPORT ATTRIBUTES
- C0202 EQU 0#0202 RESTORE ATTRIBUTES
- C0209 EQU 0#0209 LOAD ATTRIBUTES
- C020A EQU 0#020A SAVE ATTRIBUTES
- C0301 EQU 0#0301 REPORT ADDRESSEE CONDITION
- C0302 EQU 0#0302 REPORT ADDRESSEE STATUS
- C0700 EQU 0#0700 SET OPERATING MODE
- C0800 EQU 0#0800 ABORT (DRIVE RESET)
- C1005 EQU 0#1005 BLOCK READ
- C2005 EQU 0#2005 BLOCK WRITE
- C280E EQU 0#280E FORMAT
- C8100 EQU 0#8100 DRIVE DIAGNOSTICS
- CE005 EQU 0#E005 RESTORE DRIVE
- SPACE 4,10
- ** COMMAND PACKET PARAMETER ID-S.
- P02D1 EQU 0#02D1 PERFORMANCE LOGGING
- P0254 EQU 0#0254 DRIVE RESET
- P02D2 EQU 0#02D2 MASTER TERMINATE
- P02D3 EQU 0#02D3 EXTENT RESPONSE
- P02D4 EQU 0#02D4 ENABLE ASYNCS
- P02D5 EQU 0#02D5 PHYSICAL DRIVE
- P0351 EQU 0#0351 DISK MODES
- P036C EQU 0#036C REQUEST ATTRIBUTE
- P0931 EQU 0#0931 COMMAND EXTENT
- P0568 EQU 0#0568 FACILITIES ATTACHED
- P0968 EQU 0#0968 FACILITIES ATTACHED
- P0D68 EQU 0#0D68 FACILITIES ATTACHED
- P1168 EQU 0#1168 FACILITIES ATTACHED
- SPACE 4,10
- ** SUBSTATUS PARAMETER ID CODES.
- ID16 EQU 0#16 MACHINE EXCEPTION FOR CONTROLLER
- ID17 EQU 0#17 COMMAND EXCEPTION FOR CONTROLLER
- ID23 EQU 0#23 MESSAGE EXCEPTION
- ID24 EQU 0#24 INTERVENTION REQUIRED FOR DRIVE
- ID26 EQU 0#26 MACHINE EXCEPTION FOR DRIVE
- ID29 EQU 0#29 CONDITIONAL SUCCESS
- ID32 EQU 0#32 RESPONSE EXTENT (COMMON)
- SPACE 4,10
- ** INFORMATION TRANSFER DEFINITIONS.
- CIOT EQU 0 COMMAND - INFORMATION OUT
- RIIN EQU 1 RESPONSE - INFORMATION IN
- DAOT EQU 2 DATA - INFORMATION OUT
- DAIN EQU 3 DATA - INFORMATION IN
- SPACE 4,10
- ** MAINTENANCE REGISTER REQUEST CODE SYMBOLS.
- MR EQU /IOU/MR MAINTENANCE CHANNEL
- IOUC EQU /IOU/IOUC+/IOU/MRRD READ CONNECT CODE
- RMRF EQU /IOU/MRRD-/IOU/MRRD READ REGISTER
- WMRF EQU /IOU/MRWT-/IOU/MRRD WRITE REGISTER
- RFMR EQU RMRF*10000+/IOU/FMCR READ FAULT MASK REGISTER
- RCSR EQU RMRF*10000+/IOU/C0CR READ CHANNEL STATUS REGISTER
- WFMR EQU WMRF*10000+/IOU/FMCR WRITE FAULT MASK REGISTER
- SPACE 4,10
- ** INITIAL OR FINAL FAULT ANALYSIS CODES.
- ECIE EQU 2 IPI CHANNEL ERROR FLAG (CHPE)
- ECHF EQU 7 CHANNEL HUNG FULL (CHFE)
- ETIT EQU 10 CONTROLLER INTERRUPT TIMEOUT (FTOE)
- ETFN EQU 11 CHANNEL FUNCTION TIMEOUT
- EDPE EQU 14 MEDIA ERROR (PARE)
- *EDNR EQU 20 USED BY 9853 (NRDE)
- EIDT EQU 24 INCOMPLETE DATA TRANSFER (IDTE)
- ERSS EQU 30 RESERVED SUBSTATUS (ID X1) (DSTE)
- EDFM EQU 31 DEFECT MANAGEMENT ERROR (ID X2)
- EMME EQU 32 MESSAGE/MICROCODE EXCEPTION (ID X3)
- ETSL EQU 33 SELECT TIMEOUT
- ESUF EQU 34 SPIN-UP FAILURE (DSTE)
- ESDF EQU 35 SPIN-DOWN FAILURE
- *ETTC EQU 36 USED BY 9853
- EIVR EQU 37 INTERVENTION REQUIRED (ID X4)
- EAPR EQU 40 ALTERNATE PORT EVENT (ID X5) (DSTE)
- EMEX EQU 41 MACHINE EXCEPTION (ID X6)
- ECEX EQU 42 COMMAND EXCEPTION (ID X7)
- EFDF EQU 43 FORMAT DRIVE FAILURE
- EIOS EQU 44 I/O INITIATION ERROR (DSTE)
- *ERPE EQU 45 USED BY 9853
- *ERDS EQU 46 USED BY 9853
- EROD EQU 47 RESTORE OFF-LINE DRIVE ERROR
- ECMA EQU 50 COMMAND ABORTED (ID X8) (DSTE)
- ECCS EQU 51 CONDITIONAL SUCCESS (ID X9)
- ECIC EQU 52 COMMAND INCOMPLETE (ID XA)
- EUST EQU 53 SUCCESSFUL NOT SET IN ENDING STATUS
- EDTF EQU 54 DIAGNOSTIC FAULT (DDFE)
- *EDRS EQU 55 USED BY 9853
- ECNR EQU 60 SLAVE/SYNC IN SIGNAL ERROR (RAME)
- ELCA EQU 61 LOAD CONTROLLER ATTRIBUTES FAILURE
- ESRE EQU 62 SELECTIVE RESET ERROR
- ERDA EQU 63 REPORT DEVICE ATTRIBUTES ERROR
- EBAE EQU 64 BUS ACKNOWLEDGE ERROR (RAME)
- ECOT EQU 65 CONTROLLER OVER TEMPERATURE
- EDRE EQU 70 DRIVE RESERVE ERROR (DRVE)
- ECRE EQU 74 USED BY 9853 (RAME)
- ECMD EQU 75 CONTROLLER DEAD
- WDTP EQU 100 WRONG DRIVE TYPE (DSTE)
- PNSP EQU 101 PARALLEL NOT SUPPORTED
- PDPD EQU 102 PARITY DRIVE PROTECTION DISABLED
- PDPE EQU 103 PARITY DRIVE PROTECTION ENABLED
- SPACE 4,10
- ** CHANNEL STATUS FAULT CODES.
- ECPE EQU 1 CHANNEL PARITY ERROR
- *ECIE EQU 2 IPI CHANNEL ERROR FLAG
- ECER EQU 4 CHANNEL DETECTED ERROR
- ECCM EQU 5 CHANNEL DETECTED CM ERROR
- SPACE 4,10
- ** DEVICE STATE TABLE DEFINITIONS. (LDM XXXX,DI)
- BEGIN BSSN 0
- PUTO BSSN 1 *PUT* ORDINAL
- PNUN BSSN 1 4/C, 3/P, 3/E, 6/U WHERE
- C = *CSTB* INDEX
- P = PORT NUMBER
- E = EQUIPMENT (CONTROLLER) NUMBER
- U = UNIT NUMBER
- ADDR BSSN 1 NO ATTENTION RETURN
- ATTN BSSN 1 ATTENTION RETURN
- IDTR BSSN 1 RETURN ADDRESS FROM *IDT*
- EEST BSSN 1 EXPECTED EXECUTION STATUS
- RWST BSSN 1 READ / WRITE STATUS
- RQLN BSSN 1 1/U, 11/R WHERE
- U = UNIT INTERLOCK SET (IN *PUT*)
- R = NUMBER OF REQUESTS PROCESSED
- CSCT BSSN 1 CUMULATIVE SECTOR COUNT
- CYLN BSSN 1 CYLINDER ON SEEK
- PHYD BSSN 1 PHYSICAL DRIVE
- TKSN BSSN 1 TRACK, SECTOR FOR I/O
- ERCT BSSN 1 ERROR COUNT
- SREQ BSSN 1 SPECIAL REQUEST
- IPPS BSSN 1 I/O PREPROCESSING STATUS
- LCMD BSSN 1 LAST COMMAND OP CODE
- IOST BSSN 1 READ/WRITE STATUS
- DVTP BSSN 1 9/XX, 1/0, 6/YY WHERE
- XX = BIT 15 PARTITIONED DEVICE
- BIT 14 PROCESS LOST PARITY
- BIT 13 CHECK DRIVE TYPE
- BIT 12 MMF RESTORE / ACCESS DISABLED
- BIT 11 MMF RESTORE / ACCESS ENABLED
- BIT 10 ENABLE MMF PARITY DEV. ACCESS
- BIT 09 MMF SHARED DEVICE
- BIT 08 MMF RESTORE INITIATION
- BIT 07 CHECK MMF PARITY ACCESS
- YY = DRIVE TYPE (0 = EA, 1 = EB, ... )
- OUPD BSSN 1 OFFLINE UNIT OF PARITY DEVICE
- SEPR BSSN 1 RETURN ADDRESS FROM *SEP* OR *WAC*
- DSTBE BSSN 0 LENGTH OF STATE TABLE ENTRY
- END BSSN
- SPACE 4,10
- ** CSTB - CONTROLLER STATE TABLE. (LDML XXXX,CI)
- BEGIN BSSN 0
- CTST BSSN 1 CONTROLLER STATUS
- * 1/S, 1/R, 1/D, 1/0, 12/FD
- * S = SLAVE RESET IN PROGRESS
- * R = INITIAL LOGICAL RESET REQUIRED (DRIVER STARTUP)
- * D = CONTROLLER DEAD (SLAVE RESET FAILED)
- * FD = *DST* ADDRESS OF FIRST DEVICE ON CONTROLLER.
- *
- * NOTE - COMMANDS AND RESPONSES WILL BE TRANSFERRED IN
- * INTERLOCK MODE IF *CTST* BIT 15, 14 OR 13 IS SET.
- CTSN BSSN 3 CONTROLLER SERIAL NUMBER (LAST 6 DIGITS)
- CSTBE BSSN 0 LENGTH OF CONTROLLER STATE TABLE ENTRY
- END BSSN
- SPACE 4,10
- **** ASSEMBLY CONSTANTS.
- TE EQU 0 = 1 TO ENABLE COMMAND/RESPONSE TRACING
- DE EQU 0 = 1 TO ENABLE DEBUG MODE
- BPB EQU 16384D BYTES PER BUFFER / DATA BURST
- CH EQU 16 CHANNEL NUMBER
- MXCN EQU 4 MAXIMUM NUMBER OF CONTROLLERS / DRIVER
- MXND EQU 30 MAXIMUM NUMBER OF UNITS / DRIVER
- CBTO EQU 30D NORMAL COMMAND BLOCK TIMEOUT (SECONDS)
- FMTO EQU 12D*60D FORMAT TIMEOUT (SECONDS) (UPPED FOR 47444)
- SUTO EQU 8D*60D SPIN UP TIMEOUT (SECONDS)
- SRTO EQU 9D*60D SLAVE RESET TIMEOUT (SECONDS)
- DRFM EQU 1000 DIRECTION FLAG MASK
- ILFM EQU 4000 INTERLOCK FLAG MASK
- CSRC EQU 4 RETRY COUNT TO MAKE CHANNEL SWITCH
- SRRC EQU 2 RETRY COUNT TO ISSUE SLAVE RESET
- MERC EQU CSRC*2 RETRY COUNT TO SET UNRECOVERABLE
- IRBR EQU 3 I/O REQUESTS BEFORE NEXT RESTORE
- SBUR EQU 20D SECONDS BETWEEN *UTRS* REQUESTS
- ****
- SPACE 4,10
- * MEMORY LAYOUT.
- DSTB EQU 100 START OF DEVICE STATE TABLES
- DSTBL EQU DSTB+DSTBE*MXND LWA+1 OF DEVICE STATE TABLES
- ERRNG 7777-DSTBL DI IS IN *CTST* BITS 0-11 ONLY
- CSTB EQU DSTBL CONTROLLER STATE TABLE
- CSTBL EQU CSTB+CSTBE*MXCN LWA+1 OF CONTROLLER STATE TABLES
- OCMD MAX CSTBL,MSFW+5 DRIVER ORIGIN
- SPACE 4,10
- * LAYOUT OF ERROR DATA BUFFERS.
- BEGIN BSSN 0 REAL TIME ERROR DATA
- EXST BSSN 1 ENDING STATUS
- BSSN 2 RESERVED
- LSCC BSSN 1 LAST SLAVE COMMAND
- LCFN BSSN 1 LAST CHANNEL FUNCTION
- CREG BSSN 4 CHANNEL REGISTER DATA
- BSSN 3 RESERVED
- TREG BSSN 3 CONTENTS OF T REGISTER
- RTEDL EQU *
- EMBF BSSN 0 ERROR MESSAGE BUFFER
- BSSN 3*5 BML MESSAGE PREFIX AND HEADER
- CODE BSSN 1 INITIAL FAULT CODE
- FCS1 BSSN 1 FAULT CODE - ERROR STEP 1
- FCS2 BSSN 1 FAULT CODE - ERROR STEP 2
- FCS3 BSSN 1 FAULT CODE - ERROR STEP 3
- FALT BSSN 1 FINAL FAULT CODE
- EREA BSSN 1 ERROR RECOVERY ENTRY ADDRESS
- RBCT BSSN 1 RESIDUAL BYTE COUNT
- STCT BSSN 1 SECTORS TRANSFERED COUNT
- ICYL BSSN 1 CYLINDER ON INITIAL SEEK
- ITAS BSSN 1 TRACK + SECTOR ON INITIAL SEEK
- .3 SET *-EMBF+4
- EMBFS EQU .3/5
- EMBF1 EQU EMBFS*5+EMBF
- .1 SET RTEDL*4
- .2 SET .1-.1/3*3+2
- .3 SET .1/3+.2/3+4
- EMBF2 EQU .3/5*5+EMBF1
- EMBF2L EQU EMBF2/5
- .1 SET RPBFL*4
- .2 SET .1-.1/3*3+2
- .3 SET .1/3+.2/3+4
- EMBFL EQU .3/5*5+EMBF2
- END BSSN
- EDBFL EQU RTEDL+EMBFL
- TITLE MACROS.
- ** MACRO DEFINITIONS.
- TBLM SPACE 4,10
- ** TBLM - CREATE MASS STORAGE DEVICE TABLE ENTRIES.
- *
- PURGMAC TBLM
- TBLM MACRO TY
- .A1 IFGE AI_TY,AIAB
- .A2 IFLT AI_TY,AIAE
- * 1/PARITY DRIVES, 3/DATA DRIVES, 12/MNEMONIC
- DM RMT
- EQ_TY EQU *-DM
- VFDL 1/BF_TY-6,3/PDD_TY,12/2R_TY
- DM RMT
- * PHYSICAL SECTORS PER CYLINDER.
- PSCY RMT
- CON PTCY_TY*PSPT_TY-SPSC_TY
- PSCY RMT
- .A SET CYPN_TY-1
- .B SET PTCY_TY*PSPT_TY-SPSC_TY
- .A SET .A*.B
- .C SET MCLT_TY-4000B
- .D SET SL_TY/LSPS_TY
- .C SET .D*.C
- .A SET .A-.C+1
- .A SET .A/PSBF_TY*PSBF_TY
- IFGT .A,10B*.B,1
- .A SET 10B*.B
- STS_TY EQU .A
- * 7/BML MESSAGE DEVICE CODE, 9/STREAMING END-CASE SECTORS.
- STS RMT
- VFDL 7/MLID_TY,9/STS_TY
- STS RMT
- * 4/LOGICAL TO PHYSICAL SHIFT, 12/LAST CYLINDER ON UNIT.
- CYUN RMT
- VFDL 4/CFS_TY,12/CYUN_TY-1
- CYUN RMT
- * 4/PHYSICAL SECTORS PER BUFFER, 12/MAINTENANCE CYLINDER.
- MC RMT
- VFDL 4/PSBF_TY,12/CYPN_TY-1
- MC RMT
- * 6/LAST TRACK ON CYLINDER, 6/LAST SECTOR ON CYLINDER + 1
- LSOC RMT
- VFD 6/PTCY_TY-1,6/PSPT_TY-SPSC_TY
- LSOC RMT
- * BYTES PER SECTOR + PHYSICAL SECTORS PER PHYSICAL TRACK.
- BPS RMT
- CONL 16384D/PSBF_TY+PSPT_TY
- BPS RMT
- * MODEL NUMBER (LAST TWO BYTES).
- MN RMT
- CONL MDL_TY
- MN RMT
- .A2 ENDIF
- .A1 ENDIF
- TBLM ENDM
- SPACE 4
- TBL "MSEQ" GENERATE DEVICE ATTRIBUTE TABLES
- TBLM SPACE 4,10
- ** TBLM - CREATE TABLE ENTRY MACRO.
- *
- *NAM TBLM
- *
- * ENTRY NAM = TABLE NAME.
- *
- * EXIT NAM_E MACRO DEFINED.
- PURGMAC TBLM
- MACRO TBLM,NAM
- PURGMAC NAM_E
- NAM_E MACRO ADDR
- LOCAL A
- MACREF NAM_E
- NOREF A
- A EQU ADDR
- T_NAM RMT
- CONL A
- RMT
- TBLM ENDM
- CBTE SPACE 4,15
- ** CBTE - CONTROL BUFFER TABLE ENTRY.
- *
- * THIS MACRO GENERATES AN ENTRY IN REMOTE LIST *TCBT*
- * THAT CONTAINS THE ADDRESS OF AN INSTRUCTION WHICH
- * REQUIRES THE FWA OF THE CONTROL BUFFER TABLE.
- *
- * CBTE ADDR
- *
- * ENTRY (ADDR) = ADDRESS OF INSTRUCTION.
- *
- * EXIT ADDRESS IS ADDED TO THE REMOTE BLOCK *TCBT*.
- CBT TBLM
- CCTE SPACE 4,15
- ** CCTE - CHANNEL CONTROL TABLE ENTRY.
- *
- * THIS MACRO GENERATES AN ENTRY IN REMOTE LIST *TCCT*
- * THAT CONTAINS THE ADDRESS OF AN INSTRUCTION WHICH
- * REQUIRES THE FWA OF THE CHANNEL CONTROL TABLE.
- *
- * CCTE ADDR
- *
- * ENTRY (ADDR) = ADDRESS OF INSTRUCTION.
- *
- * EXIT ADDRESS IS ADDED TO THE REMOTE BLOCK *TCCT*.
- CCT TBLM
- CHTE SPACE 4,15
- ** CHTE - CHANNEL TABLE ENTRY.
- *
- * THIS MACRO GENERATES AN ENTRY IN REMOTE LIST *TCHT*
- * THAT CONTAINS THE ADDRESS OF AN INSTRUCTION WHICH
- * REQUIRES THE FWA OF THE CHANNEL TABLE.
- *
- * CHTE ADDR
- *
- * ENTRY (ADDR) = ADDRESS OF INSTRUCTION.
- *
- * EXIT ADDRESS IS ADDED TO THE REMOTE BLOCK *TCHT*.
- CHT TBLM
- EMBE SPACE 4,15
- ** EMBE - ERROR MESSAGE TABLE ENTRY.
- *
- * THIS MACRO GENERATES AN ENTRY IN REMOTE LIST *TEMB*
- * THAT CONTAINS THE ADDRESS OF AN INSTRUCTION WHICH
- * REQUIRES THE FWA OF THE ERROR MESSAGE TABLE.
- *
- * EMBE ADDR
- *
- * ENTRY (ADDR) = ADDRESS OF INSTRUCTION.
- *
- * EXIT ADDRESS IS ADDED TO THE REMOTE BLOCK *TEMB*.
- EMB TBLM
- EXPE SPACE 4,15
- ** EXPE - EXCHANGE PACKAGE ADDRESS ENTRY.
- *
- * THIS MACRO GENERATES AN ENTRY IN REMOTE LIST *TEXP*
- * THAT CONTAINS THE ADDRESS OF AN INSTRUCTION WHICH
- * REQUIRES THE FWA OF THE PP EXCHANGE PACKAGE.
- *
- * EXPE ADDR
- *
- * ENTRY (ADDR) = ADDRESS OF INSTRUCTION.
- *
- * EXIT ADDRESS IS ADDED TO THE REMOTE BLOCK *TEXP*.
- EXP TBLM
- FTTE SPACE 4,15
- ** FTTE - FUNCTION TIMEOUT TABLE ENTRY.
- *
- * THIS MACRO GENERATES AN ENTRY IN REMOTE LIST *TFTT*
- * THAT CONTAINS THE ADDRESS OF AN INSTRUCTION WHICH
- * REQUIRES THE FWA OF THE FUNCTION TIMEOUT TABLE.
- *
- * FTTE ADDR
- *
- * ENTRY (ADDR) = ADDRESS OF INSTRUCTION.
- *
- * EXIT ADDRESS IS ADDED TO THE REMOTE BLOCK *TFTT*.
- FTT TBLM
- PUTE SPACE 4,15
- ** PUTE - PHYSICAL UNIT TABLE ENTRY.
- *
- * THIS MACRO GENERATES AN ENTRY IN REMOTE LIST *TPUT*
- * THAT CONTAINS THE ADDRESS OF AN INSTRUCTION WHICH
- * REQUIRES THE FWA OF THE PHYSICAL UNIT TABLE.
- *
- * PUTE ADDR
- *
- * ENTRY (ADDR) = ADDRESS OF INSTRUCTION.
- *
- * EXIT ADDRESS IS ADDED TO THE REMOTE BLOCK *TPUT*.
- PUT TBLM
- ERRMSG SPACE 4,10
- ** ERRMSG - DEFINE ERROR LOG MESSAGE.
- *
- * TAG ERRMSG (TEXT)
- *
- * *ERRMSG* DEFINES AN ERROR LOG MESSAGE, AND CALCULATES THE
- * LENGTH OF THE MESSAGE IN CM WORDS. THE LENGTH IS STORED
- * IN THE PP LOCATION BEFORE THE TEXT. *TAG* POINTS TO THE
- * TEXT ITSELF. THE CALCULATED LENGTH IS BIASED TO INCLUDE
- * THE MESSAGE HEADER CONTAINED IN SUBROUTINE *IEM*.
- PURGMAC ERRMSG
- MACRO ERRMSG,TAG,MSG
- LOCAL LEN
- CON LEN/5
- TAG DATA C*MSG*
- ERRNG 18D-*+TAG MESSAGE TOO LONG
- LEN EQU *-TAG+13+4
- ENDM
- MONITOR SPACE 4,10
- ** MONITOR - REQUEST MONITOR FUNCTION.
- *
- * MONITOR F
- *
- * ENTRY F = MONITOR FUNCTION.
- * (CM+1 - CM+4) = PARAMETERS.
- *
- * CALLS IMF.
- PURGMAC MONITOR
- MONITOR MACRO F
- MACREF MONITOR
- LDK F
- RJM IMF
- ENDM
- WAIT SPACE 4,10
- ** WAIT - DO NOTHING FOR SPECIFIED TIME.
- *
- * WAIT N
- *
- * N = MICROSECOND COUNT.
- *
- * EXIT (A) = 0.
- PURGMAC WAIT
- WAIT MACRO N
- MACREF WAIT
- NOREF .2
- BASE D
- .2 SET N 1
- IFEQ N,64,2
- LDD HN
- SKIP 4
- IFEQ N,512,2
- LDD TH
- SKIP 1
- LDK .2
- BASE *
- SBN 1
- STD T0
- NJN *-2 IF WAIT TIME HAS NOT ELAPSED
- ENDM
- TITLE MAIN PROGRAM.
- DAS SPACE 4,15
- ** DAS - MAIN PROGRAM.
- *
- * ENTRY AT *DAS* (VIA *RJM*) TO SET REENTRY ADDRESS.
- * AT *DAS1* WITH (ADDR,DI) ZERO WHEN REQUEST COMPLETE.
- * AT *DAS1* WITH (ADDR,DI) NONZERO TO ALLOW REENTRY.
- * AT *DAS6* IF CHANNEL DOWN WHEN DRIVER LOADED.
- *
- * USES DI.
- *
- * CALLS CAA, CCR, CET, CFR, EMP, IOM, LDP, PLP, PPE, PRS.
- *
- * MACROS MONITOR.
- ORG OCMD
- RICHI BEGIN CHANNEL INSTRUCTION MODIFICATION
- DAS SUBR PRS ENTRY (EXECUTE *PRS* ON INITIAL ENTRY)
- LDML DAS SET REENTRY ADDRESS
- STML ADDR,DI
- * PROCESS NEXT DEVICE.
- DAS1 LDC DSTB (ADDRESS OF NEXT *DST* ENTRY)
- DASA EQU *-1
- LMC DSTBL (LWA+1 OF *DSTB* - ADJUSTED BY *IST*)
- DASB EQU *-1
- ZJN DAS3 IF END OF DEVICE STATE TABLE
- DAS2 LDM DASA
- STD DI SET DEVICE STATE TABLE ADDRESS
- ADN DSTBE
- STM DASA ADVANCE TABLE ADDRESS
- RJM LDP LOAD DEVICE PARAMETERS
- RJM PLP PROCESS LOST PARITY, IF PENDING
- RJM PPE PROCESS PARITY ENABLE, IF PENDING
- RJM CAA CHECK IF ACCESS ALLOWED
- NJN DAS1 IF ACCESS TO DEVICE NOT ALLOWED
- RJM CFR CHECK FOR REQUEST
- UJN DAS1 CHECK NEXT DEVICE
- * END OF DEVICE STATE TABLE - CHECK FOR CHANNEL DOWN.
- DAS3 RJM CCR CHECK FOR CHANNEL REQUEST
- ZJN DAS5 IF CHANNEL DOWN
- RJM CET CHECK ELAPSED TIME
- MJN DAS4 IF NOT TIME TO REFRESH OPERATOR MESSAGE
- LCN 0 TRY TO MAKE MULTIPLE MESSAGES VISIBLE
- RJM IOM REFRESH OPERATOR MESSAGE
- DAS4 LDC DSTB RESTART DEVICE STATE TABLE SCAN
- STM DASA
- UJP DAS2 PROCESS NEXT DEVICE
- * CHANNEL *DOWN* DETECTED - FORCE COMPLETION ON ALL REQUESTS.
- DAS5 UJN *+2 FIRST PASS
- * UJN *+1 (SECOND PASS)
- DASC EQU *-1
- UJN DAS6 DROP PP ON SECOND PASS
- SOM DASC
- LDC CMP8 CHANGE PATH THRU *CFR*
- STML CFRA
- UJN DAS4 LOOP THROUGH DEVICE STATE TABLE
- DAS6 MONITOR DPPM DROP PP
- UJN * HANG UNTIL *CPUMTR*/*1MA* IDLES PP
- .DLY CON 370 DELAY MACRO - DELAY COUNT FOR 4X PP
- DLYA SBN 4 DELAY MACRO - FOR 4X PP
- TITLE DEVICE ATTRIBUTE TABLES.
- SPACE 4,20
- ** DEVICE RELATED TABLES BUILT VIA *MSDC*.
- *
- * LOCATION DT IS THE INDEX TO THESE TABLES.
- LIST G
- DM SPACE 4,10
- ** 1/PARITY DRIVES, 3/DATA DRIVES, 12/MNEMONIC
- DM BSS 0
- DM HERE
- EQNS EQU *-DM
- CON 0 TERMINATE DEVICE TYPE LIST
- PSCY SPACE 4,10
- ** PHYSICAL SECTORS PER CYLINDER.
- PSCY BSS 0
- PSCY HERE
- STS SPACE 4,10
- ** 7/BML MESSAGE DEVICE CODE, 9/STREAMING END-CASE SECTORS.
- BMID BSS 0
- STS BSS 0
- STS HERE
- CYUN SPACE 4,10
- ** 4/LOGICAL TO PHYSICAL SHIFT, 12/LAST CYLINDER ON UNIT.
- CFS BSS 0
- CYUN BSS 0
- CYUN HERE
- MC SPACE 4,10
- ** 4/PHYSICAL SECTORS PER BUFFER, 12/MAINTENANCE CYLINDER.
- PSBF BSS 0
- MC BSS 0
- MC HERE
- LSOC SPACE 4,10
- ** 6/LAST TRACK ON CYLINDER, 6/LAST SECTOR ON CYLINDER + 1
- LSOC BSS 0
- LSOC HERE
- BPS SPACE 4,10
- ** BYTES PER SECTOR + PHYSICAL SECTORS PER PHYSICAL TRACK.
- BPS BSS 0
- PSPT BSS 0
- BPS HERE
- MN SPACE 4,10
- ** MODEL NUMBER (LAST TWO BYTES).
- MN BSS 0
- MN HERE
- LIST *
- SPACE 4,20
- ** CHANNEL TYPE RELATED TABLES.
- *
- * LOCATION CT IS THE INDEX INTO THESE TABLES.
- TRAT DATA 0#7E42 10 MB CHANNEL TRANSFER RATE
- DATA 0#FF42 25 MB CHANNEL TRANSFER RATE
- PAS DATA 0#62 10 MB CHANNEL PORT A SELECT
- DATA 0#362 25 MB CHANNEL PORT A SELECT
- CTS DATA 0#F02 10 MB CHANNEL, CHANNEL TRANSFER SPEED
- DATA 0 25 MB CHANNEL, CHANNEL TRANSFER SPEED
- EDC DATA 0 10 MB CHANNEL, USE SINGLE CMI SLOT
- DATA 0#4000 25 MB CHANNEL, USE DOUBLE CMI SLOT
- TITLE READ / WRITE PROCESSING.
- PIO SPACE 4,20
- ** PIO - READ / WRITE PROCESSING.
- *
- * ENTRY AT *PIO* TO INITIATE REQUEST.
- * AT *PIO2* FROM *CTC* IF NO DATA TRANSFERRED.
- * AT *PIO6* FROM *CTC* IF NO MORE DATA.
- * (RW) = 0 IF READ.
- * (CB) = CONTROL BUFFER.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- *
- * EXIT TO *ERR* IF ERROR.
- * TO *CMP* WHEN COMMAND COMPLETES.
- *
- * USES CB, T1.
- *
- * CALLS ATT, BCS, CTC, DCM, EIO, FCN, GSS, SCD, SFR, SOU,
- * WCB, WTR.
- PIO BSS 0 ENTRY
- LDML PIOA,RW READ OR WRITE OPERATION CODE
- RJM SOU SET OPERATION CODE AND UNIT
- * COMMAND EXTENT PARAMETER SET BY *IIO*.
- LDN IOPL COMMAND PACKET LENGTH
- RJM WCB WRITE COMMAND PACKET
- UJN PIO2 SET I/O IN PROGRESS
- PIO1 RJM DCM DESELECT CONTROLLER
- PIO2 LDD CB SET I/O IN PROGRESS
- STM IPPS,DI
- LDN XFNT PROCESS ATTENTION
- RJM ATT
- ZJN PIO3 IF EXPECTED STATUS
- LCN EIOS I/O INITIATION ERROR
- RJM ERR PROCESS ERROR
- PIO3 STML PIOC CLEAR ENDING STATUS
- LDN 1 SET CHANNEL ACTIVE FOR *CPD*
- RJM SCD
- LDM IPPS,DI RESTORE CURRENT BUFFER ORDINAL
- PIO4 STD CB
- LDML PIOC CHECK ENDING STATUS
- LPN 0#30
- NJN PIO1 IF PAUSE / TIME DEPENDENT OPERATION
- * INITIATE DATA TRANSFER.
- LDN DAIN DEFINE TRANSFER DIRECTION
- SBD RW
- ERRNZ DAOT+1-DAIN CODE DEPENDS ON VALUE
- RJM BCS
- LDML PIOB,RW SET DMA MODE
- RJM FCN
- RJM WTR WRITE T REGISTER
- LDD CB
- RJM SFR SEARCH FOR CONSECUTIVE REQUEST
- * WAIT UNTIL ONE BURST DMA TRANSFER COMPLETE.
- RJM CTC CHECK TRANSFER COMPLETE
- * LDN 0
- STD T1 CLEAR RESIDUAL BYTE COUNT
- LDD NB
- ZJN PIO5 IF NO MORE CONSECUTIVE REQUESTS
- LDN 0#A
- PIO5 LMN 0#A CHECK ENDING STATUS
- RJM GSS
- RJM EIO ENTER BUFFER IN I/O REQUEST QUEUE
- LDD NB
- NJN PIO4 IF CONSECUTIVE REQUEST PRESENT
- * COMPLETE READ / WRITE OPERATIONS.
- * LDN 0 CLEAR CHANNEL ACTIVE FOR *CPD*
- RJM SCD
- RJM DCM DESELECT CONTROLLER
- LDN CMSS EXPECT COMMAND COMPLETE
- PIO6 RJM ATT WAIT FOR INTERRUPT
- NJN PIO7 IF NOT SUCCESSFUL
- LDM RSDI CHECK IF RESTORE IN PROGRESS
- LMD DI
- NJN PIO6.1 IF NO RESTORE IN PROGRESS ON THIS DEVICE
- SOM RMUX REQUESTS TO MULTIPLEX BETWEEN RESTORES
- PIO6.1 LJM CMP COMPLETION PROCESSING
- PIO7 LDDL MS
- LMC 0#42
- NJN PIO8 IF NOT CONDITIONAL SUCCESS/ASYNCH
- LDDL PA
- STML ATTN,DI SET ATTENTION RETURN ADDRESS
- PIO8 LCN EIOS I/O INITIATION ERROR
- RJM ERR PROCESS ERROR
- PIOA BSS 0 COMMAND CODES
- CONL C1005
- CONL C2005
- PIOB BSS 0 DATA TRANSFER FUNCTIONS
- CON F0281
- CON F0381
- PIOC CON 0 ENDING STATUS (SET BY *GSS*)
- TITLE FORMAT DRIVES AT DEADSTART.
- CFF SPACE 4,25
- ** CFF - CHECK FOR FORMAT.
- *
- * ENTRY FROM *CFR* AFTER INITIAL LOGICAL RESET HAS BEEN
- * PERFORMED FOR ALL CONTROLLERS.
- * (CI) = CONTROLLER STATE TABLE ADDRESS.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- * (FC) = 0.
- *
- * EXIT TO *CMP*.
- * TO *ERR* IF CONTROLLER NOT FUNCTIONING.
- * (FC) = 1 IF ALL UNITS FORMATTED.
- *
- * USES DI, FC.
- *
- * CALLS CCS, CFM, CLP, CMN, CPC, CPF, IDU, ILU, LDP, SEP.
- CFF5 LDN ECMD CONTROLLER DEAD
- RJM ERR PROCESS ERROR
- CFF BSS 0 ENTRY/EXIT
- RJM LDP LOAD DEVICE PARAMETERS
- LDD CM+3
- SHN 21-FCRF+14
- PJN CFF1 IF NO FORMAT REQUEST FOR THIS DEVICE
- RJM IDU INTERLOCK DEVICE
- NJN CFF1 IF INTERLOCK NOT AVAILABLE
- RJM SEP SET ERROR PROCESSING INTERLOCK
- NJN CFF1 IF ERROR IN PROGRESS ON DIFFERENT DEVICE
- * FORMAT DEVICE.
- LDD DI INDICATE FORMAT IN PROGRESS
- STM CFFA
- LDML CTST,CI CHECK FOR CONTROLLER DEAD
- SHN 21-15
- MJN CFF5 IF CONTROLLER NOT FUNCTIONAL
- RJM CPC CHECK FOR PARALLEL CONTROLLER
- RJM CMN CHECK MODEL NUMBER
- RJM ILU INITIALIZE LOGICAL UNIT
- LDN 0
- STM CFFA INDICATE FORMAT COMPLETE
- RJM CLP CLEAR *LOST PARITY* FLAGS, IF SET
- RJM CFM CLEAR *FORMAT PENDING* FLAG IN MST
- LDN FCRF
- RJM CPF CLEAR *FORMAT* SPECIAL REQUEST IN *PUT*
- * CHECK IF ANY FORMAT REQUESTS REMAIN.
- CFF1 LDD DI SAVE DEVICE STATE TABLE INDEX
- STM CFFB
- LDC DSTB CHECK FIRST DEVICE
- STD DI
- CFF2 RJM LDP LOAD DEVICE PARAMETERS
- LDD CM+3
- SHN 21-FCRF+14
- PJN CFF3 IF NO FORMAT REQUEST FOR DEVICE
- RJM CCS CHECK CHANNEL STATE
- ZJN CFF4 IF CHANNEL UP
- CFF3 LDN DSTBE CHECK NEXT DEVICE
- RAD DI
- LMM DASB
- NJN CFF2 IF MORE DEVICES TO CHECK
- AOD FC INDICATE NO MORE DEVICES TO FORMAT
- CFF4 LDC ** RESTORE DEVICE STATE TABLE INDEX
- CFFB EQU *-1
- STD DI
- RJM LDP RELOAD DEVICE PARAMETERS
- LJM CMP COMPLETE REQUEST
- CFFA DATA 0 FORMAT IN PROGRESS (*DST* ADDRESS)
- TITLE SELECTIVE RESET PROCESSING.
- SRS SPACE 4,20
- ** SRS - SELECTIVE RESET PROCESSING.
- *
- * ENTRY (A) = 2/X, 16/RA.
- * WHERE X = 0 IF SLAVE RESET.
- * = 1 IF LOGICAL RESET.
- * RA = RETURN ADDRESS IF COMMAND COMPLETE.
- * (CI) = CONTROLLER STATE TABLE ADDRESS.
- * (CN) = CONTROLLER NUMBER.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- * (EO) = EST ORDINAL.
- * AT *SRS1* FROM *CCA* IF CHANNEL SPEED WRONG.
- *
- * EXIT (SRSA) = 0 IF RESET COMPLETE.
- * TO *CMP* IF PROCESSING INITIAL LOGICAL RESET.
- * TO *CMP10* IF RESET IN PROGRESS ON A DIFFERENT DEVICE,
- * OR IF SLAVE RESET REQUIRED DURING *RESTORE*.
- * TO *ERR* IF ERROR.
- *
- * USES PA, RW, TM, T1.
- *
- * CALLS ATT, CCA, CRF, CRP, GCS, IEM, IOM, RIF, SRI, SRP, STO.
- SRS BSS 0 ENTRY
- STDL T1 SAVE RETURN ADDRESS
- SHN -20 SAVE RESET OPTION
- STD RW
- LDM SRSA
- ZJN SRS0 IF NO RESET IN PROGRESS
- LMD DI
- NJP CMP10 IF RESET IN PROGRESS ON A DIFFERENT DEVICE
- SRS0 LDDL T1
- STML SRSB SAVE RETURN ADDRESS
- * REENTER HERE FROM *CCA* WITH (RW) = 0 TO FORCE SLAVE RESET.
- SRS1 RJM SRI SET SLAVE RESET INTERLOCK, IF REQUIRED
- LDD RW SET RESET OPTION
- STM RWST,DI
- LMN 1
- SHN 17-0
- STDL T1
- LDD DI
- STM SRSA SET LOCAL RESET IN PROGRESS
- LDML CTST,CI
- LPC 77777
- LMDL T1 SET BIT 15 IF SLAVE RESET
- STML CTST,CI
- LDN 1
- STDL TM INTERLOCK DATA TRANSFERS
- RJM RIF RESET SLAVE / LOGICAL INTERFACE
- LDML SRST,RW DEFINE RESET TIMEOUT
- RJM STO
- LDD CN CONVERT CONTROLLER NUMBER
- ADN 1R0
- SHN 6 INSERT IN MESSAGE
- LMN 1R
- STM SRSG+1
- LDD RW
- NJN SRS2 IF LOGICAL RESET
- * IF A SLAVE RESET IS REQUIRED DURING A RESTORE, THE RESTORE
- * WILL BE ABANDONED. AN EXIT TO *CMP10* IS FORCED TO ENSURE
- * THAT ALL INTERLOCKS ARE CLEARED.
- LDM RSIN CHECK RESTORE INTERLOCK
- LMD DI
- NJN SRS1.1 IF INTERLOCK NOT SET ON THIS DEVICE
- RJM CRP CLEAR *RESTORE IN PROGRESS*
- LDC CMP10 FORCE COMPLETION AFTER RESET
- STML SRSB
- SRS1.1 LDC SRSG ISSUE OPERATOR MESSAGE
- RJM IOM
- LDC ERCR+100000 *EQXXX, UXX, CMX RESET ON CCHXX.*
- RJM IEM ISSUE ERRORLOG MESSAGE
- SRS2 LDN ASRT WAIT ON ASYNC INTERRUPT
- RJM ATT
- NJN SRS3 IF NOT ASYNCHRONOUS RESPONSE
- * SEARCH RESPONSE PACKET FOR MACHINE EXCEPTION PARAMETER.
- LDN ID16 LOOK FOR MACHINE EXCEPTION
- RJM SRP
- MJN SRS3 IF PARAMETER NOT FOUND
- LDML RPBF+6,T3
- LPC 0#FEE0 CHECK OPERATIONAL + READY TRANSITION
- LMC 0#6000
- ZJN SRS4 IF CONTROLLER RESET SUCCESSFUL
- SRS3 LCN ESRE SELECTIVE RESET ERROR
- RJM ERR PROCESS ERROR
- SRS4 RJM CCA CHECK CONTROLLER ATTRIBUTES
- RJM GCS GET CONTROLLER SERIAL NUMBER
- LDM RWST,DI
- NJN SRS5 IF NOT SLAVE RESET
- LDC ERRC+100000 *EQXXX, UXX, CMX RESET COMPLETE.*
- RJM IEM ISSUE ERRORLOG MESSAGE
- SRS5 RJM CRF CLEAR RESET FLAGS
- LDML CTST,CI ENABLE CONTROLLER ACTIVITY
- STDL T0
- LPC 37777 CLEAR BITS 15 AND 14
- STML CTST,CI
- LDDL T0
- SHN 21-16
- MJP CMP IF PROCESSING INITIAL LOGICAL RESET
- LDML SRSB RETURN ADDRESS
- STDL PA
- LJM 0,PA RETURN TO CALLER
- SRSA CON 0 DI OF CONTROLLING DRIVE FOR RESET
- SRSB CON 0 RETURN ADDRESS
- SRSG DATA C*CM3 BEING RESET ON CCHNN.*
- SRST BSS 0
- CONL SRTO SLAVE RESET TIMEOUT
- CONL CBTO LOGICAL RESET TIMEOUT
- TITLE SUBROUTINES.
- ACE SPACE 4,10
- ** ACE - ANALYZE CHANNEL ERROR.
- *
- * ENTRY (RBUF) = CHANNEL STATUS REGISTER.
- *
- * EXIT (A) = 0 IF ERROR FLAG NOT SET.
- * = CHANNEL ERROR FAULT CODE.
- ACE3 LDN ECCM SET CHANNEL DETECTED CM ERROR
- ACE SUBR ENTRY/EXIT
- LDM RBUF+5
- LPN 2
- ZJN ACEX IF CHANNEL ERROR FLAG NOT SET
- LDM RBUF
- LPN 76
- NJN ACE3 IF ERROR IN MEMORY
- LDM RBUF+1
- SHN -5
- ZJN ACE2 IF NOT PARITY / IPI CHANNEL ERROR
- LPN 2
- ZJN ACE1 IF NOT PARITY ERROR
- * SET FAULT ANALYSIS CODE.
- LDN ECPE&ECIE CHANNEL PARITY ERROR
- ACE1 LMN ECIE&ECER IPI CHANNEL ERROR FLAG
- ACE2 LMN ECER CHANNEL DETECTED ERROR
- UJN ACEX RETURN
- AME SPACE 4,10
- ** AME - ATTEMPT MONITOR EXCHANGE.
- *
- * EXIT (A) = 0.
- *
- * USES CW - CW+4.
- *
- * MACROS EXPE.
- AME SUBR ENTRY/EXIT
- EXPE *
- AME1 LDC 6 CHECK FOR (MA) NON-ZERO
- CRD CW
- LDD CW+1
- ADD CW
- NJN AME1 IF EXCHANGE PACKAGE NOT READY
- EXPE *
- AME2 LDC 0 SET (B0) NON-ZERO
- CWM AMEA,ON
- SBN 1 EXCHANGE MONITOR
- MXN 0
- CRD CW
- LDD CW+4
- ZJN AMEX IF EXCHANGE TAKEN
- LDN 28D
- SBN 1
- NJN *-1 IF NOT 20 MICROSECONDS ELAPSED
- UJN AME2 RETRY EXCHANGE
- AMEA VFD 24/0 (P)
- VFD 18/0 (A0)
- VFD 18/0 (B0)
- ATT SPACE 4,10
- ** ATT - PROCESS ATTENTION.
- *
- * ENTRY (A) = EXPECTED STATUS RESPONSE TYPE.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- *
- * EXIT VIA *ECI* IF INTERRUPT RECEIVED.
- * TO *ERR* IF NO INTERRUPT.
- * (ATTA) = INTERRUPT ADDRESS FOR LAST INTERRUPT TIMEOUT.
- *
- * CALLS CTO, DAS.
- ATT CON 0 ENTRY
- STML EEST,DI
- LDML ATT SAVE RETURN ADDRESS
- STML ATTN,DI
- ATT1 RJM DAS RETURN TO MAIN LOOP
- * RETURN HERE THROUGH *ECI* IF NO INTERRUPT RECEIVED.
- RJM CTO
- MJN ATT1 IF NOT TIMEOUT
- LDML ATTN,DI SAVE ADDRESS
- STML ATTA
- LDN 0
- STML ATTN,DI CLEAR ATTENTION PROCESSING ADDRESS
- STML ADDR,DI CLEAR REENTRY ADDRESS
- LDN ETIT INTERRUPT TIMEOUT
- RJM ERR PROCESS ERROR
- ATTA CON 0 ADDRESS FOR INTERRUPT TIMEOUT
- CAA SPACE 4,10
- ** CAA - CHECK IF ACCESS TO PARITY DEVICE IS ALLOWED.
- *
- * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
- * (DVTP,DI) BIT 7 SET, TIME TO CHECK FOR MMF *RESTORE*.
- *
- * EXIT (A) = 0, IF ACCESS ALLOWED.
- *
- * CALLS CMR, DMP, EMP.
- CAA8 LDN 0 INDICATE ACCESS ALLOWED
- CAA SUBR ENTRY/EXIT
- LDML ADDR,DI
- * UJN CAA8 (NO SHARED DEVICES CONFIGURED)
- CAAA EQU *-2
- NJN CAA8 IF REQUEST IN PROGRESS ON THIS DEVICE
- LDM RSIN CHECK IF RESTORE INTERLOCK SET
- LMD DI
- ZJN CAAX IF INTERLOCK SET FOR THIS DEVICE
- LDML DVTP,DI
- SHN 21-7
- MJN CAA2 IF TIME TO CHECK FOR MMF RESTORE
- CAA1 LDML DVTP,DI CHECK IF ACCESS ALLOWED
- SHN 0-10
- LPN 21 *ACCESS DISABLED* AND *RESTORE INITIATION*
- UJN CAAX RETURN
- CAA2 LDML DVTP,DI CLEAR *CHECK MMF PARITY ACCESS* BIT
- LPC 177577
- STML DVTP,DI
- SHN 21-10 CHECK MMF RESTORE BITS
- MJN CAA5 IF *MMF RESTORE INITIATION* FLAG SET
- RJM CMR CHECK MMF RESTORE FLAGS IN MST
- PJN CAA7 IF RESTORE INITIATION NOT IN PROGRESS
- LDML DVTP,DI SET *MMF RESTORE INITIATION* FLAG
- LPC 177377
- LMC 400
- STML DVTP,DI
- CAA3 RJM DMP DISABLE MMF PARITY DEVICE ACCESS
- CAA4 UJN CAA1 RETURN ACCESS PERMISSION
- CAA5 RJM CMR CHECK MMF RESTORE FLAGS IN MST
- PJN CAA6 IF RESTORE INITIATION COMPLETE
- LDML DVTP,DI CHECK MMF RESTORE BITS
- SHN 21-14
- PJN CAA3 IF *DISABLE* FLAG NOT SET
- UJN CAA4 RETURN ACCESS PERMISSION
- CAA6 RJM EMP ENABLE MMF PARITY ACCESS, IF POSSIBLE
- UJN CAA4 RETURN ACCESS PERMISSION
- CAA7 LDML DVTP,DI CHECK MMF RESTORE BITS
- SHN 0-13
- LPN 3
- ZJN CAA4 IF NEITHER *ENABLE* OR *DISABLE* BIT SET
- LDM CMRA
- NJN CAA4 IF RESTORE STILL IN PROGRESS
- UJN CAA6 ENABLE MMF PARITY ACCESS
- CAB SPACE 4,10
- ** CAB - CHECK ACGL *MMF PARITY DEVICE ACCESS* BIT.
- *
- * ENTRY (EO) = EST ORDINAL.
- *
- * EXIT (A) = 0, IF THE BIT FOR THIS MAINFRAME IS CLEAR.
- *
- * USES CM - CM+4.
- *
- * CALLS REE.
- CAB SUBR ENTRY/EXIT
- RJM REE READ EST ENTRY
- LDD CM+4
- SHN 3
- ADN ACGL
- CRD CM
- LDD CM
- LPN 0 (MACHINE MASK FOR THIS MF)
- CABA EQU *-1
- UJN CABX RETURN
- CAC SPACE 4,15
- ** CAC - CHECK FOR ALTERNATE CHANNEL.
- *
- * ENTRY (EO) = EST ORDINAL.
- *
- * EXIT (A) = 0, IF ALTERNATE CHANNEL DEFINED AND UP.
- * (CM - CM+4) = *EQDE* WORD OF EST.
- * (T1) = INDEX INTO (CM+1) FOR THIS CHANNEL.
- * (T2) = INDEX INTO (CM+1) FOR ALTERNATE CHANNEL.
- * (T6) = MST ADDRESS / 10B.
- *
- * USES T2.
- *
- * CALLS CCI.
- CAC SUBR ENTRY/EXIT
- RJM CCI CALCULATE CHANNEL INDEX
- LMN 1
- STD T2
- LDM CM+1,T2 CHECK ALTERNATE CHANNEL
- SHN -11 CHECK IF ALTERNATE CHANNEL DEFINED AND UP
- LMN 4
- UJN CACX RETURN
- CAN SPACE 4,10
- ** CAN - CONVERT ASCII NUMBER TO DISPLAY CODE.
- *
- * ENTRY (T3) = ADDRESS OF OUTPUT BUFFER.
- * (T4) = ADDRESS OF 6-DIGIT ASCII NUMBER.
- *
- * EXIT (T3) ADVANCED.
- * (T4) ADVANCED.
- *
- * USES T1, T3, T4.
- CAN SUBR ENTRY/EXIT
- LDDL T3
- ADN 3
- STDL T1
- CAN1 LDIL T4
- SHN -10
- SBN 60-33 CONVERT ASCII TO DISPLAY CODE
- SHN 6
- STI T3 UPPER CHARACTER OF WORD
- LDIL T4
- LPC 377
- SBN 60-33 CONVERT ASCII TO DISPLAY CODE
- RAI T3 LOWER CHARACTER OF WORD
- AODL T4
- AODL T3
- LMDL T1
- NJN CAN1 IF MORE CHARACTERS TO CONVERT
- UJN CANX RETURN
- CBB SPACE 4,10
- ** CBB - CHECK BDLL *DISABLE ACCESS* BIT.
- *
- * ENTRY (DI) = DEVICE STATE TABLE INDEX.
- *
- * EXIT (A) .LT. 0, IF THE BIT FOR THIS CHANNEL IS SET.
- * (A) .GE. 0, IF THE BIT FOR THIS CHANNEL IS CLEAR.
- * (T1) = CHANNEL INDEX.
- *
- * CALLS CCI, RBD.
- CBB SUBR ENTRY/EXIT
- RJM CCI CALCULATE CHANNEL INDEX
- LDC SHNI+21-7
- SBD T1
- STM CBBA
- RJM RBD READ *BDLL*
- LDD CM+3 CHECK *DISABLE ACCESS* BIT IN *BDLL*
- SHN 21-7 CHECK IF BIT SET FOR FIRST CHANNEL
- * SHN 21-10 (CHECK IF BIT SET FOR SECOND CHANNEL)
- CBBA EQU *-1
- UJN CBBX RETURN
- CBC SPACE 4,10
- ** CBC - CLEAR BUFFER COUNT.
- *
- * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
- *
- * EXIT (A) = (RQLN,DI).
- * BUFFER COUNT IN (RQLN,DI) CLEARED.
- CBC SUBR ENTRY/EXIT
- LDM RQLN,DI
- LPC 4000
- STM RQLN,DI
- UJN CBCX RETURN
- CBI SPACE 4,10
- ** CBI - CLEAR *BDT* ERROR PROCESSING INTERLOCKS.
- *
- * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
- * (EO) = EST ORDINAL.
- *
- * USES CM - CM+4.
- *
- * CALLS LNE, RBD, UBP.
- *
- * MACROS MONITOR.
- CBI SUBR ENTRY/EXIT
- LDN 0 INITIALIZE PARTITION SEARCH
- CBI1 RJM LNE LOCATE NEXT EST FOR THIS DEVICE
- ZJN CBIX IF NO MORE PARTITIONS
- RJM RBD READ *BDLL*
- LDD CM+3 CHECK IF THIS MF HOLDS INTERLOCK
- SHN 21-12
- PJN CBI2 IF THIS MF DOES NOT HOLD INTERLOCK
- LDN CEPS CLEAR ERROR PROCESSING INTERLOCK
- STD CM+1
- LDD EO SET EST ORDINAL
- STD CM+4
- MONITOR MTEM
- * LDN 0 CLEAR FLAG THAT SAYS THIS MF HAS INTERLOCK
- STD CM+2
- LDN 26 BIT TO CHANGE
- RJM UBP UPDATE *BDLL* PARAMETER
- CBI2 LDD EO
- UJN CBI1 CHECK FOR NEXT PARTITION
- CCA SPACE 4,20
- ** CCA - CHECK CONTROLLER ATTRIBUTES.
- * - DISABLE USAGE STATISTIC COUNTING.
- * - ENABLE MASTER TERMINATE.
- * - DISABLE EXTENT RESPONSE FOR MASTER TERMINATE.
- * - ENABLE REPORTING DEVICE FAULT LOG.
- * - SET SPEED SELECTION TO 10 MB IF 10 MB CHANNEL.
- * - SET SPEED SELECTION TO 25 MB IF 25 MB CHANNEL.
- *
- * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
- * (CT) = CHANNEL TYPE.
- *
- * EXIT TO *SRS1* WITH (RW) = 0, IF CHANNEL SPEED WRONG.
- * TO *ERR*, IF LOAD CONTROLLER ATTRIBUTES ERROR.
- *
- * USES RW, TM, T1 - T3.
- *
- * CALLS ATT, IDT, SDT, SOC, WCB.
- CCA SUBR ENTRY/EXIT
- * RESTORE CONTROLLER ATTRIBUTES.
- LDC C0202 RESTORE ATTRIBUTES OPERATION CODE
- RJM SOC SET OPERATION CODE AND CONTROLLER
- LDN 6 COMMAND PACKET LENGTH
- RJM WCB WRITE COMMAND PACKET
- LDN CMSS
- RJM ATT PROCESS ATTENTION
- NJP CCA1.1 IF NOT SUCCESSFUL
- RJM SDT SET DATA TRANSFER MODE FOR INTERLOCK
- * CHECK ATTRIBUTE PARAMETERS D1, D2, D3, D4, AND D6.
- LDC C0200 REPORT ATTRIBUTES OPERATION CODE
- RJM SOC SET OPERATION CODE AND CONTROLLER
- LDC 0#76C
- STML CPBF+FCP
- LDC 0#80D1 REPORT PARAMETERS D1,D2,D3,D4,D6
- STML CPBF+FCP+1
- LDC 0#D2D3
- STML CPBF+FCP+2
- LDC 0#D4D6
- STML CPBF+FCP+3
- LDN 14D COMMAND PACKET LENGTH
- RJM IDT INPUT DATA TO PP
- LDN 0
- STDL T1
- STDL T2
- STDL T3
- STDL TM DATA TRANSFER MODE IS STREAMING
- CCA1 LDML ATTB,T1
- LMML CCAA,T1
- CCA1.1 NJN CCA2.1 IF PARAMETER ID NOT FOUND
- AODL T1
- SBN 11
- PJN CCA2 IF ALL PARAMETERS CHECKED
- LDML ATTB,T1
- LMML CCAA,T1
- NJN CCA3 IF PARAMETER SET WRONG
- AODL T1
- UJN CCA1 CHECK NEXT PARAMETER
- CCA2 LDML ATTB+13
- LPC 0#F02
- LMML CTS,CT
- NJN CCA3 IF ATTRIBUTE D6 INCORRECT
- RJM ATT WAIT FOR COMPLETION RESPONSE
- RJM SDT SET DATA TRANSFER MODE TO STREAMING
- LJM CCAX EXIT
- CCA2.1 LCN ELCA LOAD CONTROLLER ATTRIBUTES FAILURE
- RJM ERR PROCESS ERROR
- * LOAD/SAVE ATTRIBUTES.
- CCA3 LDML CCAA,T3 BUILD COMMAND PACKET
- STML CPBF+FCP,T3
- AODL T3
- LMN 11
- NJN CCA3 IF MORE PARAMETER WORDS TO MOVE
- LDML ATTB+11
- STML CPBF+FCP+11 PORT A,B CONTROLLER ADDRESS
- LDML ATTB+12
- STML CPBF+FCP+12 PORT C,D CONTROLLER ADDRESS
- LDML ATTB+13
- LPC 0#F0FD
- LMML CTS,CT
- STML CPBF+FCP+13 SELECT CHANNEL TRANSFER RATE
- RJM ATT WAIT FOR COMPLETION RESPONSE
- LDM RPBF
- LMN 10
- CCA3.1 NJP CCA2.1 IF ERROR
- LDC C0209 LOAD ATTRIBUTE OPERATION CODE
- RJM SOC SET OPERATION CODE AND CONTROLLER
- LDC P02D1
- STM CPBF+FCP RESTORE WORD WIPED OUT BY *ATT*
- LDN 30D COMMAND PACKET LENGTH
- RJM WCB WRITE COMMAND PACKET
- LDN CMSS
- RJM ATT PROCESS ATTENTION
- NJN CCA3.1 IF NOT SUCCESSFUL
- RJM SDT SET DATA TRANSFER MODE
- LDC C020A SAVE ATTRIBUTE OPERATION CODE
- RJM SOC SET OPERATION CODE AND CONTROLLER
- LDN 6
- RJM WCB WRITE COMMAND PACKET
- LDN CMSS
- RJM ATT PROCESS ATTENTION
- NJN CCA3.1 IF NOT SUCCESSFUL
- LDML ATTB+13
- LPC 0#F02
- LMML CTS,CT
- ZJP CCAX IF CHANNEL TRANSFER SPEED CORRECT
- LDN 0
- STD RW
- LJM SRS1 FORCE SLAVE RESET
- CCAA BSS 0 EXPECTED CONTROLLER ATTRIBUTES
- CONL P02D1,0#100
- CONL P02D2,0#100
- CONL P02D3,0#100
- CONL P02D4,0#100
- CONL 0#7D6
- CCI SPACE 4,15
- ** CCI - CALCULATE CHANNEL INDEX.
- *
- * ENTRY (EO) = EST ORDINAL.
- * (IR+4) = CHANNEL SERVICED BY THIS DRIVER.
- *
- * EXIT (A) = (T1) = INDEX INTO (CM+1) FOR THIS CHANNEL.
- * (CM - CM+4) = *EQDE* WORD OF EST.
- *
- * USES T1.
- *
- * CALLS REE.
- CCI SUBR ENTRY/EXIT
- RJM REE READ EST ENTRY
- LDD CM+1 EXTRACT CHANNEL
- LMD IR+4
- LPN 77
- ZJN CCI1 IF PATH SERVICED BY THIS DRIVER
- LDN 1
- CCI1 STD T1 SET CHANNEL BYTE INDEX
- UJN CCIX RETURN
- CCO SPACE 4,20
- ** CCO - CHECK FOR CONTROLLER OVER TEMPERATURE.
- *
- * THIS ROUTINE SEARCHES THE RESPONSE PACKET FOR STATUS
- * INDICATING AN OVER TEMPERATURE CONDITION. IF THERE IS
- * AN OVER TEMPERATURE CONDITION, AN ERROR IS OPTIONALLY
- * LOGGED TO THE BML, A BIT INDICATING OVER TEMPERATURE IS
- * SET IN *BDLL*, AND AN OPERATOR ACTION MESSAGE IS GENERATED.
- *
- * ENTRY (A) = 0 IF BML MESSAGE SHOULD NOT BE ISSUED.
- * (DT) = DRIVE TYPE.
- *
- * USES CM+2, T7.
- *
- * CALLS IDM, IEE, SRP, UBP.
- CCO SUBR ENTRY/EXIT
- STD T7
- LDN ID16
- RJM SRP SEARCH RESPONSE PACKET
- MJN CCOX IF PARAMETER 16 NOT FOUND
- LDML RPBF+6,T3
- SHN 21-11
- PJN CCOX IF NOT CONTROLLER OVER TEMPERATURE
- LDM MSID
- STM CCOA SAVE VALUES FROM CURRENT MESSAGE
- LDM EDBF+FALT
- STM CCOA+1
- LDM EDBF+FCS2
- STM CCOA+2
- LDM MSGL+1
- STM CCOA+3
- LDML BMID,DT
- SHN -11
- STM MSID ERROR MESSAGE ID
- LDN ECOT CONTROLLER OVERTEMPERATURE
- STM EDBF+FALT FINAL FAULT CODE
- LDD T7
- ZJP CCO1 IF NOT ISSUING MESSAGE TO BML
- * *HPA* DOES NOT DISPLAY THE DATA WITH SYMPTOM 0111 WHEN THE
- * ERROR IS RECOVERABLE, SO TWO MESSAGES ARE ISSUED TO THE BML.
- LCN 0
- STM EDBF+FCS2 SET NO STATUS FOR *HPA*
- LDN 5
- STM MSGL+1 MESSAGE LENGTH
- LDD HN
- ERRNZ HD0100-100 CODE DEPENDS ON VALUE
- RJM IDM ISSUE INITIAL BML MESSAGE
- LDN 3
- STM MSGL+1 MESSAGE LENGTH
- LDC HD0111
- RJM IDM ISSUE FINAL BML MESSAGE
- LDM CCOA
- STM MSID RESTORE VALUES IN CURRENT MESSAGE
- LDM CCOA+1
- STM EDBF+FALT
- LDM CCOA+2
- STM EDBF+FCS2
- LDM CCOA+3
- STM MSGL+1
- * SET OVER TEMPERATURE BIT IN *BDLL*.
- CCO1 LDN 1 NEW VALUE
- STD CM+2
- LDN 63 BIT TO CHANGE
- RJM UBP UPDATE *BDLL* PARAMETER
- RJM IEE ISSUE *CHECK E,E DISPLAY* EVENT
- UJP CCOX RETURN
- CCOA BSS 4 SAVE AREA FOR VALUES FROM CURRENT MESSAGE
- CCR SPACE 4,15
- ** CCR - CHECK FOR CHANNEL REQUEST.
- *
- * ENTRY (UC) = UNIT ACTIVITY COUNT.
- * (IR+4) = CHANNEL NUMBER.
- * AT *CCR2* FROM */3DZ/BST*.
- *
- * EXIT (A) = 0 IF CHANNEL DOWN.
- * TO */3DZ/BST2* IF ENTRY WAS FROM */3DZ/BST*.
- *
- * USES CM+1, CR.
- *
- * CALLS DCR, RCT, SRF.
- *
- * MACROS DELAY, MONITOR.
- CCR3 RJM SRF SET DRIVER RELOAD FLAG
- CCR4 LDD CR
- CCR SUBR /3DZ/BST2 ENTRY/EXIT
- RJM RCT READ CHANNEL TABLE
- SHN 21-5
- MJN CCR3 IF CHANNEL GLOBALLY DOWN
- LPN 40
- ZJN CCR4 IF CHANNEL NOT REQUESTED
- STM CHRQ DISABLE NEW ACTIVITY
- LDD UC
- NJN CCRX IF CURRENT ACTIVITY
- RJM DCR DROP CHANNEL RESERVATION
- * LDN 0
- STM CHRQ ENABLE NEW ACTIVITY
- CCR1 LDD CR
- NJN CCRX IF CHANNEL RESERVED
- * ENTERED HERE FROM *PRS*.
- CCR2 DELAY WAIT AWHILE
- LDD IR+4
- STD CM+1 ATTEMPT TO RESERVE CHANNEL
- MONITOR CCHM
- LDD CM+2 SET RESERVATION STATUS
- STD CR
- RJM RCT READ CHANNEL TABLE
- LPN 40
- ZJN CCR1 IF CHANNEL NOT DOWN
- UJP CCR3 SET DRIVER RELOAD FLAG
- CCS SPACE 4,10
- ** CCS - CHECK CHANNEL STATE FOR SPECIFIED DEVICE.
- *
- * ENTRY (EO) = EST ORDINAL.
- * (IR+4) = CHANNEL SERVICED BY THIS DRIVER.
- *
- * EXIT (A) = CHANNEL STATE.
- *
- * CALLS CCI.
- CCS SUBR ENTRY/EXIT
- RJM CCI CALCULATE CHANNEL INDEX
- LDM CM+1,T1
- SHN -11
- SCN 4
- UJN CCSX RETURN
- CDA SPACE 4,15
- ** CDA - CONVERT DISK ADDRESS.
- *
- * ENTRY (T4) = RELATIVE CYLINDER NUMBER.
- * (T5) = PHYSICAL TRACK.
- * (T7) = LOGICAL SECTOR WITHIN PHYSICAL TRACK.
- * (DT) = DRIVE TYPE.
- *
- * EXIT (T6) = LOGICAL TRACK.
- *
- * USES T1, T3 - T7, CM - CM+4.
- *
- * CALLS REE.
- CDA SUBR ENTRY/EXIT
- RJM REE READ EST ENTRY
- LDD CM+4
- SHN 3
- ADN MDGL
- CRD CM
- LDD CM+1 SINGLE UNIT SECTOR LIMIT
- STD T1
- LDN 0 CLEAR SECTOR COUNT ACCUMULATOR
- STD T3
- LDC 3777 INITIALIZE LOGICAL TRACK CALCULATION
- STD T6
- LDML CFS,DT SET UP PHYSICAL TO LOGICAL SHIFTS
- SHN -14
- ADK SHNI
- STM CDAA
- STM CDAB
- * MULTIPLY THE PHYSICAL TRACK NUMBER BY THE NUMBER OF LOGICAL
- * SECTORS PER PHYSICAL TRACK.
- CDA1 SOD T5
- MJN CDA3 IF END OF CONVERSION
- LDM PSPT,DT
- CDAA SHN ** PHYSICAL SECTORS TO LOGICAL SECTORS
- RAD T7 ADVANCE LOGICAL SECTOR COUNT
- SHN -14
- RAD T3
- UJN CDA1 LOOP ON CONVERSION
- * MULTIPLY THE CYLINDER NUMBER BY THE NUMBER OF LOGICAL SECTORS
- * PER CYLINDER.
- CDA2 LDML PSCY,DT
- CDAB SHN ** PHYSICAL SECTORS TO LOGICAL SECTORS
- RAD T7 ADVANCE LOGICAL SECTOR COUNT
- SHN -14
- RAD T3
- CDA3 SOD T4
- PJN CDA2 IF NOT END OF CONVERSION
- * DIVIDE THE ACCUMULATED LOGICAL SECTOR COUNT BY THE NUMBER OF
- * LOGICAL SECTORS PER LOGICAL TRACK. THE SINGLE UNIT SECTOR
- * LIMIT IS USED, BECAUSE ONLY THE LOGICAL TRACK NUMBER (AND
- * NOT THE LOGICAL SECTOR NUMBER) IS OF INTEREST.
- CDA4 AOD T6 ADVANCE LOGICAL TRACK NUMBER
- LDN 0
- SBD T1 SINGLE UNIT SECTOR LIMIT
- RAD T7
- PJN CDA4 IF NO UNDERFLOW
- AOD T7
- SOD T3
- PJN CDA4 IF DIVISION INCOMPLETE
- LJM CDAX RETURN
- CDS SPACE 4,15
- ** CDS - CHECK DEVICE STATUS.
- *
- * ENTRY (EO) = EST ORDINAL.
- *
- * EXIT (A) .LT. 0, IF DEVICE HAS NOT BEEN RECOVERED.
- * (A) .GT. 0, IF DEVICE IS RECOVERD AND SHARED.
- * (A) .EQ. 0, IF DEVICE IS RECOVERD AND NOT SHARED.
- * (CM - CM+4) = *EQDE* WORD OF EST ENTRY.
- *
- * CALLS REE.
- CDS SUBR ENTRY/EXIT
- RJM REE READ EST ENTRY
- LDD CM
- SHN 21-6
- MJN CDSX IF DEVICE UNAVAILABLE (NOT RECOVERED)
- LDD CM
- LPC 1000 ISOLATE *SHARED* STATUS
- UJN CDSX RETURN
- CDT SPACE 4,25
- ** CDT - CHECK DRIVE TYPE.
- *
- * VERIFY THAT THE CONFIGURED DRIVE MATCHES THE ACTUAL DRIVE
- * TYPE. IF A DRIVE IS ACCESSED FROM 2 CONTROLLERS, THE DRIVE
- * COULD BE RECLUSTERED FROM ONE CONTROLLER AND THE OTHER ONE
- * WOULD NOT KNOW THE CHANGE OCCURRED. A SLAVE RESET MUST BE
- * ISSUED TO CAUSE THE CONTROLLER TO REEVALUATE THE DRIVE.
- *
- * ENTRY (DN) = DRIVE NUMBER.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- * (DT) = DRIVE TYPE.
- *
- * EXIT TO *CMP* WITH CHECK DRIVE BIT CLEAR IF CORRECT
- * NUMBER OF PHYSICAL DRIVES IN THE LOGICAL UNIT AND
- * THE DRIVE ATTRIBUTES ARE CORRECT.
- * TO *CMP10* IF ERROR IN PROGRESS ON A DIFFERENT DEVICE.
- * TO *ERR* IF ERROR.
- *
- * USES CM+2, T2, T3.
- *
- * CALLS ATT, COD, CUF, DDT, SEP, UBP, VDA, WAC.
- CDT BSS 0 ENTRY
- * ALLOW ACTIVITY ON OTHER DRIVES TO COMPLETE BEFORE REPORTING
- * ATTRIBUTE 68 FOR THE CONTROLLER. EVEN IF ISSUED, IT WOULD
- * NOT BE EXECUTED UNTIL ALL COMMANDS IN PROGRESS COMPLETE.
- RJM SEP SET ERROR PROCESSING INTERLOCK
- NJP CMP10 IF ERROR IN PROGRESS ON A DIFFERENT DEVICE
- RJM WAC WAIT FOR OTHER ACTIVITY TO COMPLETE
- * CLEAR CONTROLLER OVER TEMPERATURE BIT IN *BDLL*.
- LDN 0 SET NEW VALUE
- STD CM+2
- LDN 63 BIT TO CHANGE
- RJM UBP UPDATE *BDLL* PARAMETER
- * CHECK DRIVE CONFIGURATION.
- LDD DN
- STM PHYD,DI PHYSICAL DRIVE
- RJM DDT DETERMINE DRIVE TYPE
- MJN CDT1 IF DRIVE NOT FOUND
- LDM DDTA TOTAL DRIVES FOUND
- STD T2
- SBD DD TOTAL DRIVES EXPECTED
- SBD PD
- ZJN CDT2 IF CORRECT DRIVE COUNT
- CDT1 LCN ERDA REPORT DEVICE ATTRIBUTES ERROR
- RJM ERR PROCESS ERROR
- CDT2 LDD T2
- SHN 1
- RAD T3
- LDM ATTB,T3
- SHN 21-4
- PJN CDT4 IF NO PARITY DRIVE
- SOD T2
- CDT4 LDD T2 TOTAL DATA DRIVES FOUND
- LMD DD EXPECTED DATA DRIVES
- NJN CDT1 IF ERROR
- LDM ATTB,T3
- SHN 21-11
- PJN CDT1 IF NOT CLUSTERED
- RJM ATT WAIT FOR COMPLETION RESPONSE
- LDC C0302 REPORT ADDRESSEE STATUS OPERATION CODE
- RJM CUF CHECK IF UNIT FORMATTED
- NJN CDT1 IF NOT FORMATTED
- RJM VDA VERIFY DRIVE ATTRIBUTES
- RJM COD CHECK FOR OFFLINE DRIVE
- LDML DVTP,DI
- LPC 157777 CLEAR *CHECK DRIVE TYPE* FLAG
- STML DVTP,DI
- LJM CMP EXIT
- CEA SPACE 4,15
- ** CEA - CLEAR *ENABLE CONTROLLER ACTIVITY* REQUEST.
- *
- * ENTRY (EO) = EST ORDINAL FOR DEVICE.
- * (IR+4) = CHANNEL NUMBER.
- *
- * EXIT CHANNEL ENABLE BIT CLEARED IN *MST* WORD *BDLL*.
- * SPECIAL REQUEST BIT CLEARED.
- *
- * USES CM+2.
- *
- * CALLS CCI, CPF, UBP.
- CEA SUBR ENTRY/EXIT
- RJM CCI CALCULATE CHANNEL INDEX
- LDN 0 NEW VALUE
- STD CM+2
- LDD T1 BIT TO CHANGE
- ADN 49D
- RJM UBP CLEAR ENABLE CHANNEL BIT IN *BDLL*
- LDN ECAF CLEAR SPECIAL REQUEST IN *PUT*
- RJM CPF
- UJN CEAX RETURN
- CEC SPACE 4,10
- ** CEC - CHECK FOR *ENABLE CONTROLLER ACTIVITY* REQUEST.
- *
- * EXIT (A) = 0, IF REQUEST IS FOR THIS CHANNEL.
- *
- * USES T1 - T7, CM.
- *
- * MACROS SFA.
- CEC SUBR ENTRY/EXIT
- SFA EST,EO CHECK EST ENTRY
- ADK EQDE
- CRD T1
- LDD T1+4
- SHN 3
- ADN BDLL CHECK IF REQUEST IS FOR THIS CHANNEL
- CRD T4
- LDD T4
- SHN -1
- LPN 3
- STD T4
- ZJN CECX IF NEITHER CHANNEL FLAG IS SET
- SBN 3
- ZJN CECX IF BOTH CHANNEL FLAGS ARE SET
- LDM T1,T4 COMPARE REQUESTED CHANNEL TO THIS CHANNEL
- LMD IR+4
- LPN 77
- UJN CECX RETURN
- CEP SPACE 4,15
- ** CEP - CLEAR ERROR PROCESSING INTERLOCK.
- *
- * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
- * (EO) = EST ORDINAL.
- * (ERPA) = (DI), IF ERROR PROCESSING ACTIVE ON DEVICE.
- * (ERFL) = (DI), IF E.P. INTERLOCK SET FOR THIS DEVICE.
- * (ERMF) = (DI), IF MMF RECOVERY INTERLOCK SET.
- *
- * EXIT (ERPA) = (ERRA) = 0, IF ERROR PROCESSING ACTIVE.
- * (ERFL) = (ERRA) = 0, IF INTERLOCK SET.
- * (ERMF) = 0, IF MMF RECOVERY INTERLOCK SET.
- * MMF INTERLOCK(S) CLEARED.
- *
- * CALLS CBI, CDS, LNE.
- *
- * MACROS CMSTF, MONITOR.
- CEP SUBR ENTRY/EXIT
- LDM ERPA CHECK IF ERROR PROCESSING ACTIVE
- LMD DI
- NJN CEP1 IF NOT ACTIVE ON THIS DEVICE
- STM ERPA CLEAR ERROR PROCESSING ACTIVE FLAG
- STM ERRA ENABLE NEXT PASS THROUGH ERROR PROCESSOR
- CEP1 LDM ERFL CHECK IF ERROR PROCESSING INTERLOCK SET
- LMD DI
- NJN CEPX IF NOT SET ON THIS DEVICE
- STM ERFL CLEAR ERROR PROCESSING INTERLOCK FLAG
- * CLEAR ERROR PROCESSING FLAGS IN *MST*.
- CEP2 LDN 0 INITIALIZE PARTITION SEARCH
- CEP3 RJM LNE LOCATE NEXT EST FOR THIS DEVICE
- ZJN CEP5 IF NO MORE PARTITIONS TO PROCESS
- RJM CDS CHECK DEVICE STATUS
- MJN CEP4 IF DEVICE NOT RECOVERED
- CMSTF GDER CLEAR *ERROR RECOVERY IN PROGRESS* FLAG
- CEP4 LDD EO
- UJN CEP3 CHECK FOR NEXT PARTITION
- * CLEAR MMF INTERLOCKS, IF SET.
- CEP5 LDM ERMF CHECK IF RECOVERY ERROR INTERLOCK SET
- ZJN CEP6 IF INTERLOCK NOT SET
- LDN CRIS CLEAR RECOVERY ERROR PROCESSING INTERLOCK
- STD CM+1
- MONITOR MTEM
- * LDN 0 CLEAR RECOVERY ERROR INTERLOCK FLAG
- STM ERMF
- CEP6 RJM CBI CLEAR *BDT* ERROR PROCESSING INTERLOCKS
- UJP CEPX RETURN
- CET SPACE 4,10
- ** CET - CHECK ELAPSED TIME.
- *
- * ENTRY (CETB) = TIME OF LAST GLOBAL MST CHECK.
- *
- * EXIT (A) .LT. 0, IF NOT TIME TO CHECK GLOBAL MST-S.
- * (DVTP) BIT 7 SET FOR SHARED PARITY DEVICES, IF TIME.
- * (CETB) UPDATED, IF TIME TO CHECK GLOBAL MST-S.
- *
- * USES T1, T2, CM - CM+4.
- CET SUBR ENTRY/EXIT
- LDK RTCL GET CURRENT CLOCK
- CRD CM
- LDD CM+1 COMPARE LOW ORDER BYTE OF SECONDS
- SBM CETB CALCULATE ELAPSED TIME
- PJN CET1 IF NO UNDERFLOW
- ADC 10000 CORRECT FOR UNDERFLOW
- CET1 SBN SBUR
- MJN CETX IF ELAPSED TIME LESS THAN *SBUR* SECONDS
- LDD CM+1 SAVE CURRENT CLOCK VALUE
- STM CETB
- * SET *CHECK MMF ACCESS* FLAGS FOR ALL SHARED PARITY DEVICES.
- LDC DSTB-DSTBE
- * UJN CETX (NO SHARED DEVICES CONFIGURED)
- CETA EQU *-2
- STD T1
- CET2 LDN DSTBE PROCESS NEXT DEVICE
- RAD T1
- LMM DASB
- ZJN CETX IF NO MORE DEVICES TO PROCESS
- LDM DVTP,T1
- LPN 77
- STD T2 DRIVE TYPE
- LDML DM,T2
- SHN 21-17
- PJN CET2 IF NOT PARITY DEVICE
- LDML DVTP,T1
- SHN 21-11
- PJN CET2 IF NOT SHARED DEVICE
- SHN -21+11+22
- LPC 177577
- LMC 200 SET *CHECK MMF PARITY ACCESS* FLAG
- STML DVTP,T1
- UJN CET2 PROCESS NEXT DEVICE
- CETB CON 0 TIME OF LAST GLOBAL MST CHECK (SECONDS)
- CFM SPACE 4,15
- ** CFM - CLEAR *FORMAT PENDING* FLAG IN MST(S).
- *
- * IF FORMAT IS COMPLETE ON ALL UNITS OF A DEVICE, CLEAR *FP*
- * IN THE MST(S) FOR ALL PARTITIONS OF THAT DEVICE.
- *
- * ENTRY (EO) = EST ORDINAL FOR DEVICE.
- *
- * EXIT MST(S) UPDATED IF FORMAT COMPLETE.
- *
- * USES CM - CM+4, CW - CW+4.
- *
- * CALLS LNE.
- *
- * MACROS CMSTF, PUTE.
- CFM SUBR ENTRY/EXIT
- LDI DI *PUT* ORDINAL OF FIRST UNIT OF DEVICE
- ERRNZ PUTO CODE DEPENDS ON VALUE
- CFM1 SHN PUTLS
- PUTE *
- ADC HSCT GET *PUT* ORDINAL OF NEXT UNIT
- CRD CM
- ADN PILL-HSCT GET SPECIAL REQUEST FLAGS
- CRD CW
- LDD CW+3
- SHN 21-FCRF-14
- MJN CFMX IF FORMAT REQUEST SET FOR THIS UNIT
- LDD CM+4
- NJN CFM1 IF ADDITIONAL UNITS IN DEVICE
- * LDN 0 INITIALIZE PARTITION SEARCH
- CFM2 RJM LNE LOCATE NEXT EST FOR THIS DEVICE
- ZJN CFMX IF NO MORE PARTITIONS
- CMSTF LFPR CLEAR *FORMAT PENDING* FLAG IN MST
- LDD EO
- UJN CFM2 SEARCH FOR NEXT PARTITION
- CFR SPACE 4,25
- ** CFR - CHECK *PUT* FOR REQUEST.
- *
- * ENTRY (CI) = CONTROLLER STATE TABLE ADDRESS.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- * (FC) = 0 IF FORMATTING OF DRIVES NOT COMPLETE.
- *
- * EXIT TO SPECIAL REQUEST OR IO ROUTINE AS APPLICABLE WITH -
- * (PO) = *PUT* ORDINAL.
- * (CB) = *CBT* ORDINAL.
- * (EO) = EST ORDINAL.
- * (RW) = READ / WRITE FLAG.
- * (CN) = CONTROLLER NUMBER.
- * (DN) = DRIVE NUMBER.
- * (WB - WB+4) = *UNCT* WORD OF *PUT* ENTRY.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- * TO *ERR* IF CONTROLLER ERROR.
- * TO *CFF* TO CHECK FOR FORMAT REQUEST.
- * TO *ISR* TO PROCESS SPECIAL REQUEST.
- * TO *PIO* TO PROCESS I/O REQUEST.
- * TO *ROD* TO RESTORE AN OFF-LINE DRIVE.
- *
- * USES CM+3.
- *
- * CALLS CMP8, ECI, IDU, IIO, ISR, LDP, ROD.
- CFR9 LDM RSDI CHECK IF RESTORE IN PROGRESS
- LMD DI
- NJN CFRX IF NO RESTORE IN PROGRESS ON THIS DEVICE
- STM RMUX CLEAR MULTIPLEX COUNT
- RJM ROD RESTORE OFF-LINE DRIVE
- CFR SUBR ENTRY/EXIT
- RJM ECI EXAMINE CONTROLLER INTERRUPTS
- * RJM CMP8 (TERMINATION PROCESSING)
- CFRA EQU *-1
- NJN CFRX IF DEVICE SHOULD NOT BE PROCESSED
- LDD FC
- NJN CFR0 IF FORMAT COMPLETE
- LJM CFF CHECK FOR FORMAT
- CFR0 RJM LDP LOAD DEVICE PARAMETERS
- LDML DVTP,DI CHECK FOR INTERNAL SPECIAL REQUESTS
- SHN 6-15
- LPC 100 ISOLATE *CHECK DRIVE TYPE* FLAG
- ZJN CFR1 IF NO INTERNAL SPECIAL REQUESTS PENDING
- STD CM+3 SET INTERNAL SPECIAL REQUESTS
- CFR1 LDD CM+3
- NJN CFR2 IF SPECIAL REQUEST
- LDD WB+3
- CFR1.1 ZJN CFR9 IF NO I/O REQUEST
- CFR2 LDD CM+4
- ZJN CFR3 IF UNIT NOT INTERLOCKED
- LMD OA
- CFR2.1 NJN CFRX IF UNIT INTERLOCKED BY OTHER DRIVER
- CFR3 LDD CM+3
- ZJN CFR5 IF NOT SPECIAL REQUEST
- RJM ROD SEE IF TIME TO ISSUE RESTORE
- RJM ISR IDENTIFY AND PROCESS SPECIAL REQUEST
- UJN CFR1 CHECK FOR ANOTHER REQUEST
- CFR5 LDD CB
- RJM IIO INITIATE I/O
- ZJN CFR1.1 IF I/O NOT ENABLED ON THIS ACCESS
- RJM IDU INTERLOCK DISK UNIT
- NJN CFR2.1 IF INTERLOCK NOT AVAILABLE
- LDML CTST,CI
- SHN 21-15
- PJN CFR6 IF CONTROLLER FUNCTIONAL
- LDN ECMD CONTROLLER DEAD
- RJM ERR PROCESS ERROR
- CFR6 RJM ROD SEE IF TIME TO ISSUE RESTORE
- LJM PIO PROCESS I/O REQUEST
- CLP SPACE 4,10
- ** CLP - CLEAR *LOST PARITY* FLAGS.
- *
- * USES CM - CM+4.
- *
- * CALLS CDS, LNE.
- *
- * MACROS CMSTF, MONITOR.
- CLP SUBR ENTRY/EXIT
- LDML DVTP,DI CLEAR *PROCESS LOST PARITY* FLAG, IF SET
- LPC 137777
- STML DVTP,DI
- LDN 0 INTIALIZE PARTITION SEARCH
- CLP1 RJM LNE LOCATE NEXT EST FOR THIS DEVICE
- ZJN CLPX IF NO MORE PARTITIONS
- RJM CDS CHECK DEVICE STATUS
- MJN CLP2 IF DEVICE NOT RECOVERED
- LDD EO SET EST ORDINAL
- STD CM+1
- LDN 0
- STD CM+2
- LDN SOUS CLEAR OFFLINE UNIT IN *ACGL*
- STD CM+3
- MONITOR STBM
- CMSTF GDPL CLEAR *PARITY PROTECTION LOST* FROM *ACGL*
- CLP2 LDD EO
- UJN CLP1 PROCESS NEXT PARTITION
- CLU SPACE 4,40
- ** CLU - CLUSTER LOGICAL UNIT.
- *
- * ENTRY (DT) = DRIVE TYPE.
- * (CN) = CONTROLLER NUMBER.
- * (DD) = NUMBER OF DATA DRIVES IN DEVICE.
- * (DN) = DRIVE NUMBER.
- * (PD) = NUMBER OF PARITY DRIVES IN DEVICE.
- *
- * EXIT TO *ERR* IF ERROR.
- * COMMAND PACKET WRITTEN THE FOLLOWING VALUES, WHERE
- * X INDICATES THE UNIT NUMBER (RANK IN THE CABINET).
- *
- * <- 5832 -> <-------- 5833 / 5838 / 47444 --------->
- * -1 -2 -1 -1P -2 -2P -3 -3P -4
- *
- * LENGTH 000C 0010 000C 0010 0010 0014 0014 0018 0018
- *
- * CPBF+FCP+0 0568 0968 0568 0968 0968 0D68 0D68 1168 1168
- *
- * 1 0X01 0X01 0X01 0X01 0X01 0X01 0X01 0X01 0X01
- * 2 8600 8680 8A00 8A80 8A80 8A80 8A80 8A80 8A80
- *
- * X X X X X X X
- * 3 ---- 0801 ---- 1801 0801 0801 0801 0801 0801
- * 4 ---- 8680 ---- 8A10 8A80 8A80 8A80 8A80 8A80
- *
- * X
- * 5 ---- ---- ---- ---- ---- 1801 1X01 1X01 1X01
- * 6 ---- ---- ---- ---- ---- 8A10 8A80 8A80 8A80
- *
- * X X
- * 7 ---- ---- ---- ---- ---- ---- ---- 1801 1801
- * 8 ---- ---- ---- ---- ---- ---- ---- 8A10 8A80
- *
- * USES T1.
- *
- * CALLS ATT, SOU, SRP, WCB.
- CLU SUBR ENTRY/EXIT
- LDC C0209 LOAD ATTRIBUTE OPERATION CODE
- RJM SOU SET OPERATION CODE AND UNIT
- LPN 77B
- SHN 10
- ADN 1
- STML CPBF+FCP+1 FIRST DRIVE
- ADC 0#800
- STML CPBF+FCP+3 SECOND DRIVE
- ADC 0#800
- STML CPBF+FCP+5 THIRD DRIVE
- ADC 0#800
- STML CPBF+FCP+7 FOURTH DRIVE
- LDD DD NUMBER OF DATA DRIVES
- ADD PD NUMBER OF PARITY DRIVES
- SBN 1 TOTAL DRIVES LESS 1
- SHN 1 SET PARAMETER BLOCK INDEX
- STD T1
- SHN 1+10B BUILD CLUSTER PARAMETER
- ADC P0568
- STML CPBF+FCP
- LDD DT
- IFNE EQEA,0,2
- SBK EQEA
- MJN CLU1 IF NOT 5832 SOLID STATE DEVICE
- SBK EQEC-EQEA
- PJN CLU1 IF NOT 5832 SOLID STATE DEVICE
- LDC 0#8680
- UJN CLU2 CONTINUE SETUP
- CLU1 LDC 0#8A80
- CLU2 STML CPBF+FCP+2
- STML CPBF+FCP+4
- STML CPBF+FCP+6
- STML CPBF+FCP+10
- LDD T1
- NJN CLU3 IF NOT 1X DRIVE
- LDC -0#80 CLEAR PARALLEL BIT
- RAML CPBF+FCP+2
- CLU3 LDD PD
- ZJN CLU4 IF NOT A PARITY DEVICE
- LDML CPBF+FCP+7 MAKE LAST DRIVE PARITY DRIVE
- STML CPBF+FCP+1,T1
- LDC 0#10-0#80 CLEAR PARALLEL BIT, SET PARITY BIT
- RAML CPBF+FCP+2,T1
- * COMMAND PACKET SETUP COMPLETE FOR ALL CONFIGURATIONS.
- CLU4 LDD T1
- SHN 1
- ADK 0#C
- RJM WCB WRITE COMMAND PACKET
- LDN CMSS
- RJM ATT PROCESS ATTENTION
- NJN CLU10 IF NOT SUCCESSFUL
- * WAIT FOR ASYNCHRONOUS RESPONSE FROM DRIVE.
- CLU9 LDN ASRT
- RJM ATT PROCESS ATTENTION
- NJN CLU10 IF ERROR
- LDD CN
- SHN 10
- ADD DN
- LMML RPBF+CUN
- NJN CLU9 IF WRONG UNIT
- LDN ID26
- RJM SRP SEARCH RESPONSE PACKET
- MJN CLU10 IF ID26 NOT FOUND
- LDML RPBF+5,T3
- SBN 7
- MJN CLU10 IF PARAMETER TOO SHORT
- LDML RPBF+5+3,T3
- SHN 21-13
- MJP CLUX IF READ READY
- CLU10 LCN ELCA LOAD CONTROLLER ATTRIBUTES FAILURE
- RJM ERR PROCESS ERROR
- CMC SPACE 4,10
- ** CMC - CHECK MONITOR COMPLETE.
- *
- * EXIT (A) = (CW) = 0.
- *
- * USES CW - CW+4.
- *
- * CALLS AME.
- *
- * MACROS DELAY.
- CMC SUBR ENTRY/EXIT
- CMC1 LDD OA CHECK OUTPUT REGISTER
- CRD CW
- LDD CW
- ZJN CMCX IF NO REQUEST WAITING FOR RESPONSE
- SHN 21-13
- PJN CMC2 IF REISSUE FLAG NOT SET
- SHN 13-21
- LPC 177 CLEAR FLAGS
- STD CW
- LDD OA UPDATE OUTPUT REGISTER
- CWD CW
- RJM AME REISSUE REQUEST
- UJN CMC3 DELAY AND RECHECK
- CMC2 SHN 13-21
- LPC 177
- SBN CPUM
- PJN CMC3 IF NOT *MTR* REQUEST
- LDK PPRL SET *MTR* REQUEST FLAG
- CRD CW
- LDD OA
- STD CW
- LDK PPRL
- CWD CW
- CMC3 DELAY
- UJN CMC1 RECHECK OUTPUT REGISTER
- CMN SPACE 4,15
- ** CMN - CHECK MODEL NUMBER.
- *
- * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
- * (DN) = DRIVE NUMBER.
- * (DT) = DRIVE TYPE.
- *
- * EXIT TO *ERR* IF WRONG DRIVE TYPE.
- *
- * USES T1, T2.
- *
- * CALLS ATT, DDT, IDT, SCP, SOU.
- CMN4 RJM ATT WAIT FOR COMPLETION RESPONSE
- CMN SUBR ENTRY/EXIT
- LDD DN
- STM PHYD,DI PHYSICAL DRIVE
- RJM DDT DETERMINE DRIVE TYPE
- MJN CMN4 IF DRIVE NOT FOUND
- RJM ATT WAIT FOR COMPLETION RESPONSE
- LDC C0200 REPORT ATTRIBUTES OPERATION CODE
- RJM SOU SET OPERATION CODE AND UNIT
- LDC 0#8050
- STML CPBF+FCP+1
- LDC 0#36C
- RJM SCP SET COMMAND PARAMETER
- LDN 10D COMMAND PACKET LENGTH
- RJM IDT INPUT DATA TO PP
- LDM DDTA DRIVES PER LOGICAL UNIT
- STDL T1
- LDN 0
- STDL T2
- CMN1 LDML ATTB+26D,T2
- NJN CMN2 IF MODEL NUMBER PRESENT
- SODL T1
- ZJN CMN3 IF NO MODEL NUMBER
- LDN 14
- RADL T2
- UJN CMN1 CONTINUE SEARCH FOR MODEL NUMBER
- CMN2 LMML MN,DT EXPECTED MODEL NUMBER
- ZJN CMN3 IF CORRECT MODEL NUMBER
- LDC -WDTP WRONG DRIVE TYPE
- RJM ERR PROCESS ERROR
- CMN3 UJP CMN4 WAIT FOR COMPLETION RESPONSE
- CMP SPACE 4,25
- ** CMP - COMPLETE PROCESSING.
- *
- * ENTRY AT *CMP* IF SPECIAL REQUEST OR I/O REQUEST
- * COMPLETED SUCCESSFULLY.
- * AT *CMP1* IF UNRECOVERED ERROR.
- * AT *CMP2* FROM *ERR* IF SUSPECT STATE WAS JUST
- * SET FOR THE DEVICE.
- * AT *CMP8* IF PP BEING DROPPED.
- * AT *CMP10* TO ABANDON REQUEST (WILL BE RETRIED LATER).
- * (DI) = DEVICE STATE TABLE ADDRESS.
- * (UC) = UNIT ACTIVITY COUNT.
- * (RW) = READ / WRITE STATUS.
- *
- * EXIT TO *DAS1*.
- * (UC) = UNIT ACTIVITY COUNT DECREMENTED.
- *
- * USES UC, WB+3, WB+4.
- *
- * CALLS CBC, CEP, CMC, CRF, CRP, DMP, IDM, IMR, RCR.
- CMP10 RJM RCR RESET CHANNEL REGISTERS
- RJM CBC CLEAR BUFFER COUNT
- * UJN CMP ABANDON REQUEST
- CMP LDM ERCT,DI
- ZJN CMP3 IF NO ERRORS
- LDN 3
- STM MSGL+1 SET BASIC MESSAGE LENGTH
- CMP1 AOM ERCT,DI
- LDC HD0111 ISSUE FINAL BML MESSAGE
- RJM IDM
- CMP2 LDN 0 CLEAR ERROR COUNT
- STM ERCT,DI
- CMP3 RJM CEP CLEAR ERROR PROCESSING, IF SET
- RJM CRF CLEAR RESET FLAGS, IF SET
- LDM CFFA
- LMD DI
- NJN CMP4 IF NO FORMAT IN PROGRESS ON DEVICE
- STM CFFA CLEAR *FORMAT IN PROGRESS* FLAG
- * INCLUDE *PROBE* DATA IN FINAL *BIOM* REQUEST.
- CMP4 LDD RW SET DATA TRANSFER DIRECTION
- SHN 13-0
- LMM CSCT,DI APPEND CUMULATIVE SECTOR COUNT
- STD WB+4
- LDM RQLN,DI
- CMP5 ZJN CMP7 IF UNIT NOT INTERLOCKED
- STD WB+3
- LDM RSDI CHECK IF RESTORE IN PROGRESS
- LMD DI
- NJN CMP6 IF NO RESTORE IN PROGRESS ON THIS DEVICE
- LDD WB+3
- LPN 77
- STD WB+3
- ZJN CMP7 IF NO BUFFERS TO DELINK
- LDN DCBS DELINK BUFFERS (LEAVE INTERLOCK SET)
- RJM IMR
- RJM CBC CLEAR BUFFER COUNT (LEAVE INTERLOCK SET)
- UJN CMP7 CHECK MONITOR COMPLETE
- CMP6 LDN DCBS DELINK BUFFERS / RELEASE UNIT INTERLOCK
- RJM IMR
- * LDN 0 CLEAR UNIT INTERLOCKED FLAG
- STM RQLN,DI
- SOD UC ADJUST UNIT ACTIVITY COUNT
- CMP7 RJM CMC CHECK MONITOR COMPLETE
- * LDN 0
- STM ADDR,DI CLEAR REENTRY ADDRESS
- STM ATTN,DI CLEAR INTERRUPT ADDRESS
- STM CSCT,DI CLEAR CUMULATIVE SECTOR COUNT
- STM SREQ,DI CLEAR SPECIAL REQUEST FLAG
- LJM DAS1 PROCESS NEXT DEVICE
- * TERMINATION PROCESSING.
- CMP8 CON 0
- RJM CRF CLEAR RESET FLAGS, IF SET
- RJM CEP CLEAR ERROR PROCESSING, IF SET
- RJM CRP CLEAR *RESTORE IN PROGRESS*, IF SET
- LDN 0 CLEAR *PROBE* DATA
- STD WB+4
- LDD PD
- ZJN CMP9 IF NOT PARITY DEVICE
- LDML DVTP,DI
- SHN 21-11
- PJN CMP9 IF NOT MMF SHARED DEVICE
- RJM DMP DISABLE MMF PARITY DEVICE ACCESS
- CMP9 RJM CBC CLEAR BUFFER COUNT
- UJP CMP5 RELEASE UNIT INTERLOCK, IF SET
- CMR SPACE 4,15
- ** CMR - CHECK FOR MMF *RESTORE* FLAGS.
- *
- * ENTRY (EO) = EST ORDINAL.
- *
- * EXIT (A) .EQ. 0, IF RESTORE NOT IN PROGRESS.
- * (A) .GT. 0, IF RESTORE IN PROGRESS FOR ANY PARTITION.
- * (A) .LT. 0, IF RESTORE INITIATION FOR ANY PARTITION.
- * (CMRA) = EST ORDINAL OF DEVICE WITH RESTORE FLAG SET.
- * (CMRA) = 0, IF NO EST WITH RESTORE FLAG FOUND.
- *
- * USES T4.
- *
- * CALLS CDS, GCA, LNE.
- CMR3 LDD T4 RETURN STATUS
- SHN 21-3
- CMR SUBR ENTRY/EXIT
- LDN 0
- STD T4
- STM CMRA
- * LDN 0 INITIALIZE PARTITION SEARCH
- CMR1 RJM LNE LOCATE NEXT EST FOR THIS DEVICE
- ZJN CMR3 IF NO MORE PARTITIONS
- RJM CDS CHECK DEVICE STATUS
- MJN CMR2 IF DEVICE NOT RECOVERED
- ZJN CMR2 IF NOT SHARED DEVICE
- RJM GCA GET CURRENT *ACGL*
- LDD CM+4
- LPN 11 CHECK *RESTORE* AND *RESTORE INITIATION*
- ZJN CMR2 IF NEITHER BIT SET
- STD T4 SAVE STATUS
- LDD EO
- STM CMRA SAVE EST ORDINAL
- CMR2 LDD EO
- UJN CMR1 CHECK FOR NEXT PARTITION
- CMRA CON 0 EST ORDINAL WITH *RESTORE* SET
- COD SPACE 4,10
- ** COD - CHECK FOR OFF-LINE DRIVE.
- *
- * ENTRY (PD) = PARITY DEVICE FLAG.
- *
- * EXIT (A) = 0, IF NO OFFLINE DRIVE FOUND.
- *
- * CALLS ATT, RDO, SOU, WCB.
- COD1 LDN 0 INDICATE NO OFFLINE DRIVE FOUND
- COD SUBR ENTRY/EXIT
- LDD PD
- ZJN CODX IF NOT A PARITY DEVICE
- LDC C0302 REPORT ADDRESSEE STATUS OPERATION CODE
- RJM SOU SET OPERATION CODE AND UNIT
- LDN 6 COMMAND PACKET LENGTH
- RJM WCB WRITE COMMAND PACKET
- LDN CMSS
- RJM ATT WAIT FOR COMPLETION RESPONSE
- NJN COD1 IF ERROR
- LDML RPBF+11
- SHN 21-11
- PJN COD1 IF NO OFF-LINE DRIVE DETECTED
- SHN -21+11+22 SET PHYSICAL DRIVE ID
- LPN 37
- STM PHYD,DI
- STM OUPD,DI SET OFFLINE UNIT
- RJM RDO REPORT DRIVE OFFLINE
- LDN 1 INDICATE OFFLINE DRIVE FOUND
- UJN CODX RETURN
- CPC SPACE 4,10
- ** CPC - CHECK FOR PARALLEL CONTROLLER.
- *
- * ENTRY (DT) = DRIVE TYPE.
- *
- * EXIT TO *ERR* IF CONTROLLER DOES NOT SUPPORT THIS DRIVE.
- *
- * CALLS ATT, IDT, SOC.
- CPC1 RJM ATT WAIT FOR COMPLETION RESPONSE
- CPC SUBR ENTRY/EXIT
- LDD DD DATA DRIVES PER LOGICAL UNIT
- SBN 1
- ZJN CPCX IF THIS DRIVE WILL WORK IN SERIAL MODE
- LDC C0200 REPORT ATTRIBUTES OPERATION CODE
- RJM SOC SET OPERATION CODE AND CONTROLLER
- LDC 0#36C
- STML CPBF+FCP
- LDC 0#80DA
- STML CPBF+FCP+1 REPORT PARAMETER DA
- LDN 10D COMMAND PACKET LENGTH
- RJM IDT INPUT DATA TO PP
- LDML ATTB+1
- SHN 21-10
- MJN CPC1 IF CONTROLLER SUPPORTS PARALLEL DRIVES
- LDC -PNSP CONTROLLER DOES NOT SUPPORT PARALLEL
- RJM ERR PROCESS ERROR
- CPE SPACE 4,20
- ** CPE - CHECK IF PARITY DRIVE ENABLED.
- *
- * ENTRY (FFDA) = 0 IF FAILING DRIVE IN RESPONSE PACKET.
- * (CI) = CONTROLLER STATE TABLE ADDRESS.
- * (FC) = FORMAT COMPLETE FLAG.
- * (PD) = 0, IF NOT PARITY DEVICE.
- * (IPPA) = 1.
- *
- * EXIT (CPEA) = 0 IF PARITY DRIVE AND RESPONSE HAS FAILING
- * DRIVE.
- * (T2) = (RPBF+9) FROM REPORT ADDRESSEE STATUS.
- * TO *ERR* IF ERROR.
- *
- * USES T2.
- *
- * CALLS ATT, SOU, WCB.
- CPE SUBR ENTRY/EXIT
- LDD PD PARITY DRIVE INDICATOR
- ZJN CPEX IF NOT A PARITY DEVICE
- LDM SREQ,DI
- NJN CPEX IF SPECIAL REQUEST
- LDML CTST,CI
- SHN 21-15
- MJN CPEX IF CONTROLLER DEAD
- LDD FC
- ZJN CPEX IF FORMAT NOT COMPLETE
- LDM FFDA
- NJN CPEX IF NO FAILING DRIVE
- LDC C0302 REPORT ADDRESSEE STATUS
- RJM SOU SET OPERATION CODE AND UNIT
- LDN 6 COMMAND PACKET LENGTH
- RJM WCB WRITE COMMAND PACKET
- LDN CMSS
- RJM ATT PROCESS ATTENTION
- ZJN CPE2 IF SUCCESSFUL
- LCN ERDA REPORT DEVICE ATTRIBUTES ERROR
- RJM ERR PROCESS ERROR
- CPE2 LDML RPBF+11
- STDL T2
- SHN 3
- PJN CPE4 IF LOGICAL UNIT NOT READ READY
- SHN 1
- PJN CPE4 IF NO PARITY DRIVE
- SHN 4
- PJN CPE3 IF NO OFF-LINE DRIVE
- SHN -10 RIGHT JUSTIFY OFF-LINE UNIT NUMBER
- LMM PHYD,DI
- LPN 37
- NJN CPE4 IF FAILING DRIVE NOT OFF-LINE
- CPE3 LDN 0
- STM CPEA
- CPE4 UJP CPEX RETURN
- CPEA CON 0
- CPF SPACE 4,15
- ** CPF - CHANGE *PILL* FIELD IN *PUT*.
- *
- * ENTRY (A) = 6/V, 6/N, 6/B.
- * V = VALUE TO SET INTO SPECIFIED FIELD.
- * N = NUMBER OF BITS - 1 TO CLEAR.
- * B = LOW ORDER BIT NUMBER TO CHANGE.
- * (DI) = DEVICE STATUS TABLE ENTRY ADDRESS.
- *
- * EXIT (A) = 0.
- *
- * USES T6, T7, CM+1 - CM+4.
- *
- * MACROS MONITOR, PUTE.
- CPF SUBR ENTRY/EXIT
- STD T6 SAVE FIELD SIZE AND LOW ORDER BIT
- SHN -14
- STD CM+2 NEW VALUE
- LDD T6
- SHN 6
- STD T7 SET BIT NUMBER
- SHN -14
- ADC PILL*100+1 WORD OFFSET
- STD T6
- LDD MA
- CWD T6 STORE MESSAGE BUFFER PARAMETERS
- LDN 1
- STD CM+1 PARAMETER WORD COUNT
- LDI DI
- ERRNZ PUTO CODE DEPENDS ON VALUE
- SHN PUTLS
- PUTE *
- ADC 0 SET BASE *PUT* ENTRY ADDRESS
- STD CM+4
- SHN -14
- STD CM+3
- MONITOR UTEM CLEAR *PUT* FLAG
- * LDN 0
- UJN CPFX RETURN
- CRF SPACE 4,10
- ** CRF - CLEAR RESET FLAGS.
- *
- * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
- * (SRSA) = (DI), IF RESET IN PROGRESS ON DEVICE.
- *
- * USES RF.
- *
- * CALLS CRI, IOM.
- CRF SUBR ENTRY/EXIT
- LDM SRSA CHECK RESET FLAG
- LMD DI
- NJN CRFX IF NO RESET IN PROGRESS ON THIS DEVICE
- STM SRSA CLEAR RESET FLAG
- STD RF CLEAR *RESET FAILED*
- RJM CRI CLEAR SLAVE RESET INTERLOCK, IF SET
- LDN 0 CLEAR OPERATOR MESSAGE
- RJM IOM
- UJN CRFX RETURN
- CRI SPACE 4,10
- ** CRI - CLEAR SLAVE RESET INTERLOCK.
- *
- * ENTRY (CRIB) = 0, IF SLAVE RESET INTERLOCK NOT SET.
- *
- * CALLS IFR.
- CRI SUBR ENTRY/EXIT
- CRIA LDC ** (SLAVE RESET INTERLOCK FLAG)
- * UJN CRIX (NO SHARED BUFFERED DEVICES CONFIGURED)
- CRIB EQU *-1
- ZJN CRIX IF SLAVE RESET INTERLOCK NOT SET
- LCN /MMF/DSRI CLEAR *DAS SLAVE RESET INTERLOCK* FLAG BIT
- RJM IFR
- LDN 0 CLEAR *SLAVE RESET INTERLOCK SET* FLAG
- STM CRIB
- UJN CRIX RETURN
- CRP SPACE 4,15
- ** CRP - CLEAR *RESTORE IN PROGRESS* FLAGS.
- *
- * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
- * (EO) = EST ORDINAL.
- * (RSIN) = (DI), IF RESTORE INTERLOCK SET ON DEVICE.
- *
- * USES CM - CM+4.
- *
- * CALLS CPF, CDS, LNE, RBD, UBP.
- *
- * MACROS CMSTF, MONITOR.
- CRP4 LDN RSPF CLEAR *RESTORE* SPECIAL REQUEST FLAG
- RJM CPF
- STM SREQ,DI CLEAR SPECIAL REQUEST FLAG
- CRP SUBR ENTRY/EXIT
- LDM RSIN CHECK RESTORE INTERLOCK FLAG
- LMD DI
- NJN CRPX IF INTERLOCK NOT SET FOR THIS DEVICE
- STM RSIN CLEAR RESTORE INTERLOCK FLAG
- STM RSDI CLEAR *RESTORE IN PROGRESS* FLAG
- * LDN 0 INITIALIZE PARTITION SEARCH
- CRP1 RJM LNE LOCATE NEXT EST FOR THIS DEVICE
- ZJN CRP4 IF NO MORE PARTITIONS
- RJM CDS CHECK DEVICE STATUS
- ZJN CRP2 IF DEVICE RECOVERED BUT NOT SHARED
- RJM RBD READ *BDLL*
- LDD CM+3 CHECK IF THIS MF HOLDS *RESTORE* INTERLOCK
- SHN 21-11
- PJN CRP3 IF THIS MF DOES NOT HOLD INTERLOCK
- CRP2 CMSTF GDUR CLEAR *RESTORE IN PROGRESS* FROM *ACGL*
- CMSTF GDRI CLEAR *RESTORE INITIATION* FROM *ACGL*
- LDD EO SET EST ORDINAL
- STD CM+1
- LDN 0
- STD CM+2
- LDN SRCS CLEAR REMAINING CYLINDERS / 100B IN *ACGL*
- STD CM+3
- MONITOR STBM
- RJM CDS CHECK DEVICE STATUS
- MJN CRP3 IF DEVICE NOT RECOVERED
- ZJN CRP3 IF NOT SHARED DEVICE
- LDD EO SET EST ORDINAL
- STD CM+4
- LDN CRPS CLEAR RESTORE PARITY INTERLOCK IN *BDT*
- STD CM+1
- MONITOR MTEM
- * LDN 0 CLEAR FLAG THAT SAYS THIS MF HAS INTERLOCK
- STD CM+2
- LDN 25 BIT TO CHANGE
- RJM UBP UPDATE *BDLL* PARAMETER
- CRP3 LDD EO
- UJP CRP1 PROCESS NEXT PARTITION
- CSC SPACE 4,10
- ** CSC - COMPUTE SECTOR COUNT FOR RESTORE.
- *
- * ENTRY (DT) = DRIVE TYPE.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- *
- * EXIT (CPBF+FCP+2) = NUMBER OF SECTORS TO RESTORE.
- *
- * USES T1 - T3.
- CSC2 LDM PSPT,DT
- SBD T2
- RAD T3 ADD SECTORS FOR LAST TRACK
- STM CPBF+FCP+2 SECTOR COUNT
- CSC SUBR ENTRY/EXIT
- LDM RTSN
- STM TKSN,DI FOR ERROR LOGGING
- SHN 14
- STD T1 STARTING TRACK
- SHN -14
- STD T2 STARTING SECTOR
- LDD T1
- SHN 10
- ADD T2
- STML CPBF+FCP+4 STARTING TRACK, SECTOR
- LDN 0
- STD T3
- STM CPBF+FCP+1 UPPER 2 BYTES OF SECTOR COUNT
- CSC1 AOD T1
- LDM LSOC,DT
- SHN -6
- SBD T1
- MJN CSC2 IF LAST TRACK
- LDM PSPT,DT
- RAD T3 COMPUTE SECTOR COUNT
- UJN CSC1 INCREMENT TRACK NUMBER
- CSN SPACE 4,15
- ** CSN - COMPARE CONTROLLER SERIAL NUMBERS.
- *
- * COMPARE THE CONTROLLER SERIAL NUMBER IN THE *BDT* ENTRY
- * FOR THE SPECIFIED DEVICE WITH THE SERIAL NUMBER OF THE
- * CONTROLLER PROCESSING THE DEVICE ON THIS CHANNEL.
- *
- * ENTRY (A) = EST ORDINAL.
- * (CI) = CONTROLLER STATE TABLE ADDRESS.
- *
- * EXIT (A) = 0, IF CONTROLLER SERIAL NUMBER MATCHES.
- *
- * USES CM - CM+4.
- *
- * MACROS MONITOR.
- CSN SUBR ENTRY/EXIT
- * GET SERIAL NUMBER OF CONTROLLER PERFORMING *RESTORE*.
- STD CM+4 SET EST ORDINAL
- LDN GBDS GET *BDT* ENTRY
- STD CM+1
- MONITOR MTEM
- LDD MA READ *BDT* ENTRY
- CRD CM
- * COMPARE WITH THIS CONTROLLER-S SERIAL NUMBER.
- LDD CM+2
- LMM CTSN,CI
- NJN CSNX IF NOT THE SAME SERIAL NUMBER
- LDD CM+3
- LMM CTSN+1,CI
- NJN CSNX IF NOT THE SAME SERIAL NUMBER
- LDD CM+4
- LMM CTSN+2,CI
- UJN CSNX RETURN STATUS
- CSR SPACE 4,10
- ** CSR - CLEAR SPECIAL REQUEST.
- *
- * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
- *
- * EXIT TO *CMP*.
- *
- * CALLS CPF.
- CSR BSS 0 ENTRY
- LDM SREQ,DI
- ZJN CSR1 IF NO SPECIAL REQUEST IN PROGRESS
- LPN 77
- SBN ECAF+ISRB-ISRA
- PJN CSR1 IF INTERNAL SPECIAL REQUEST
- LDM SREQ,DI
- RJM CPF CLEAR SPECIAL REQUEST FROM *PUT*
- CSR1 LJM CMP COMPLETE PROCESSING
- CTO SPACE 4,10
- ** CTO - CHECK TIMEOUT.
- *
- * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
- *
- * EXIT (A) .LT. 0 IF NOT TIMEOUT.
- *
- * USES T6, T7, CM - CM+4.
- *
- * MACROS FTTE.
- CTO SUBR ENTRY/EXIT
- LDI DI
- ERRNZ PUTO CODE DEPENDS ON VALUE
- SHK FTTLS
- FTTE *
- ADC 0 READ *FTT* ENTRY
- CRD CM
- LDC RTCL FETCH CURRENT CLOCK VALUE
- CRD T6
- LDD T6 CHECK ELAPSED TIME
- SBD CM+3
- MJN CTOX IF NOT TIMEOUT
- SHN 14
- ADD T7
- SBD CM+4
- UJN CTOX RETURN
- CUF SPACE 4,10
- ** CUF - CHECK IF UNIT FORMATTED.
- *
- * ENTRY (A) = OPERATION CODE.
- * (DT) = DRIVE TYPE.
- *
- * EXIT (A) = 0 IF DRIVE FORMATTED WITH CORRECT SECTOR SIZE.
- * TO *ERR* IF ERROR.
- *
- * CALLS ATT, SOU, WCB.
- CUF3 LDN 1
- CUF SUBR ENTRY/EXIT
- RJM SOU SET OPERATION CODE AND UNIT
- LDN 6 COMMAND PACKET LENGTH
- RJM WCB WRITE COMMAND PACKET
- LDN CMSS
- RJM ATT PROCESS ATTENTION
- ZJN CUF1 IF SUCCESSFUL
- LCN ERDA REPORT DEVICE ATTRIBUTES ERROR
- RJM ERR PROCESS ERROR
- CUF1 LDML RPBF+11
- SHN 21-16
- PJN CUF3 IF NOT FORMATTED
- SHN 21-17-21+16+22
- MJN CUF2 IF CLUSTERED (DATA DRIVES ALREADY CHECKED)
- LDML RPBF+7
- LPN 77B MASK ACTUAL DATA DRIVES FOR FORMAT
- LMD DD EXPECTED DATA DRIVES
- NJN CUFX IF WRONG NUMBER OF DATA DRIVES
- CUF2 LDML BPS,DT EXPECTED SECTOR SIZE
- SCN 77
- LMML RPBF+13 ACTUAL SECTOR SIZE
- UJP CUFX RETURN
- DCA SPACE 4,15
- ** DCA - DISABLE CONTROLLER ACTIVITY.
- *
- * ENTRY (CI) = CONTROLLER STATE TABLE ADDRESS.
- * (CN) = CONTROLLER NUMBER.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- * (EO) = EST ORDINAL.
- * (IR+4) = CHANNEL NUMBER.
- *
- * EXIT *CONTROLLER DEAD* FLAG SET IN CONTROLLER STATE TABLE.
- * *CMX CONTROLLER DISABLED, CCHXX.* MESSAGE ISSUED.
- *
- * CALLS IEM.
- DCA SUBR ENTRY/EXIT
- LDML CTST,CI SET *CONTROLLER DEAD* FLAG
- LPC 017777 CLEAR BITS 15, 14 AND 13
- LMC 020000 SET BIT 13
- STML CTST,CI
- LDC ERCD+100000 *EQXXX, UXX, CMX CONTROLLER DISABLED.*
- RJM IEM ISSUE ERRORLOG MESSAGE
- UJN DCAX RETURN
- DCE SPACE 4,10
- ** DCE - DOWN CHANNEL ON EQUIPMENT.
- *
- * ENTRY (EO) = EST ORDINAL OF DEVICE.
- *
- * USES EO, CM - CM+4.
- *
- * CALLS DAS.
- *
- * MACROS DELAY, EXECUTE, MONITOR.
- DCE SUBR ENTRY/EXIT
- DCE1 LDD EO SET EST ORDINAL
- STM DCEA
- LMC 4000
- STM DCEB+4 SET DRIVER CALL FLAG, EST ORDINAL
- LDD MA
- CWM DCEB,ON STORE *1DS* CALL IN MESSAGE BUFFER
- LDN 0
- STD CM+1 SET NON-PRIORITY REQUEST
- EXECUTE 1DS,=
- MONITOR RPPM REQUEST PP
- LDD CM+1
- NJN DCEX IF *1DS* STARTED
- RJM DAS PROCESS ACTIVITY ON OTHER DEVICES
- DELAY
- LDC ** (EST ORDINAL OF CURRENT PARTITION)
- DCEA EQU *-1
- STD EO RESTORE EST ORDINAL
- UJN DCE1 RETRY CALL
- DCEB VFD 18/3L1DS,6/,12/DWNF,12/0,12/4000
- DCR SPACE 4,15
- ** DCR - DROP CHANNEL RESERVATION.
- *
- * ENTRY (CR) = 1 IF CHANNEL RESERVED.
- * (IR+4) = CHANNEL NUMBER.
- *
- * EXIT (A) = (CR) = 0.
- * CHANNEL RESERVATION DROPPED.
- *
- * USES CM+1, CR.
- *
- * MACROS MONITOR.
- DCR SUBR ENTRY/EXIT
- LDD CR
- ZJN DCRX IF CHANNEL NOT RESERVED
- LDD IR+4
- STD CM+1 DROP CHANNEL
- MONITOR DCHM
- * LDN 0 SET CHANNEL NOT RESERVED
- STD CR
- UJN DCRX RETURN
- DDT SPACE 4,20
- ** DDT - DETERMINE DRIVE TYPE.
- *
- * ENTRY (PHYD,DI) = DRIVE TO DETERMINE TYPE OF.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- *
- * EXIT (A) .EQ. DRIVE TYPE (0-7) IF SUPPORTED DRIVE FOUND.
- * DRIVE TYPE 8-13 AND 14-19 ARE REPORTED AS
- * DRIVE TYPE 2-7.
- * (A) .EQ. *EQNS* IF NON-SUPPORTED DRIVE TYPE FOUND.
- * (A) .LT. 0 IF DRIVE NOT FOUND OR ERROR.
- * (DDTA) = DRIVES PER LOGICAL UNIT.
- * (ATTB+2,T3) HAS BIT 9 SET IF THE DRIVE IS FOUND
- * AND IT IS CLUSTERED. (T3) IS ADJUSTED TO POINT
- * TO THE CORRECT WORD IN THE RESPONSE.
- *
- * USES T1 - T4.
- *
- * CALLS IDT, SOC.
- *
- * NOTE TO ENSURE THAT THIS ROUTINE IS NOT CALLED FOR MORE
- * THAN ONE DEVICE AT THE SAME TIME, THE ERROR PROCESSING
- * FLAG MUST ALWAYS BE SET BEFORE CALLING THIS ROUTINE.
- DDT SUBR ENTRY
- LDC C0200 REPORT ATTRIBUTES OPERATION CODE
- RJM SOC SET OPERATION CODE AND CONTROLLER
- LDC P036C
- STML CPBF+FCP PARAMETER TO READ REV NUMBER
- LDC 0#8068
- STML CPBF+FCP+1 REPORT PARAMETER 68
- LDN 10D COMMAND PACKET LENGTH
- RJM IDT INPUT DATA TO PP
- LDML DDT
- STDL T4 RETURN ADDRESS FROM *DDT*
- LDML RPBF+5+2
- SHN -1
- STDL T1 LENGTH OF ATTRIBUTE DATA
- LDM PHYD,DI PHYSICAL DRIVE
- SHN 10
- ADN 1
- STDL T2 EXPECTED PARAMETER WORD WITH UNIT NUMBER
- LDN 0
- STDL T3 INDEX TO PARAMETER 68
- LDN 1
- STML DDTA PHYSICAL DRIVES PER LOGICAL UNIT
- DDT1 LDML ATTB,T3
- LMC 0#568
- NJN DDT4 IF NOT SINGLE UNIT
- LDML ATTB+1,T3
- LMDL T2
- NJP DDT15 IF DIFFERENT UNIT
- LDML ATTB+2,T3
- SHN 21-12
- MJN DDT2 IF SOLID STATE DISK
- LDN EQEC 5833-1 OR 5838-1 OR 47444-1
- UJN DDT3 EXIT
- DDT2 LDN EQEA 5832-1
- DDT3 UJP DDTX RETURN
- DDT4 LMC 0#968&0#568
- NJN DDT9 IF NOT 2 UNITS
- LDML ATTB+1,T3
- LMDL T2
- ZJN DDT5 IF UNIT FOUND
- LDML ATTB+3,T3
- LMDL T2
- NJP DDT16 IF DIFFERENT UNIT
- DDT5 LDN 2
- STML DDTA PHYSICAL DRIVES PER LOGICAL UNIT
- LDML ATTB+4,T3
- SHN 21-13
- MJN DDT6 IF NOT SSD
- LDN EQEB 5832-2
- UJN DDT3 EXIT
- DDT6 SHN 21-4-21+13
- MJN DDT7 IF PARITY DRIVE
- LDN EQEE 5833-2 OR 5838-2 OR 47444-2
- UJN DDT3 EXIT
- DDT7 LDN EQED 5833-1P OR 5838-1P OR 47444-1P
- DDT8 UJN DDT3 EXIT
- DDT9 LMC 0#D68&0#968
- NJN DDT12 IF NOT 3 UNITS
- LDML ATTB+1,T3
- LMDL T2
- ZJN DDT10 IF UNIT FOUND
- LDML ATTB+3,T3
- LMDL T2
- ZJN DDT10 IF UNIT FOUND
- LDML ATTB+5,T3
- LMDL T2
- NJP DDT17 IF UNIT NOT FOUND
- DDT10 LDN 3
- STML DDTA PHYSICAL DRIVES PER LOGICAL UNIT
- LDML ATTB+6,T3
- SHN 21-4
- PJP DDT14 IF NOT A PARITY UNIT
- LDN EQEF 5833-2P OR 5838-2P OR 47444-2P
- DDT11 UJN DDT8 EXIT
- DDT12 LMC 0#1168&0#D68
- NJP DDT20 IF ILLEGAL PARAMETER
- LDML ATTB+1,T3
- LMDL T2
- ZJN DDT12.1 IF UNIT FOUND
- LDML ATTB+3,T3
- LMDL T2
- ZJN DDT12.1 IF UNIT FOUND
- LDML ATTB+5,T3
- LMDL T2
- ZJN DDT12.1 IF UNIT FOUND
- LDML ATTB+7,T3
- LMDL T2
- NJN DDT18 IF DIFFERENT UNIT
- DDT12.1 LDN 4
- STML DDTA TOTAL DRIVES
- LDML ATTB+10,T3
- SHN 21-4
- PJN DDT13.1 IF NOT A PARITY UNIT
- LDN EQEM 5833-3P OR 5838-3P OR 47444-3P
- DDT13 UJN DDT11 EXIT
- DDT13.1 LDN EQEN 5833-4 OR 5838-4 OR 47444-4
- UJN DDT13 EXIT
- DDT14 LDN EQNS NUMBER OF DEFINED DRIVE TYPES
- UJN DDT13 EXIT
- DDT15 LDN 3
- UJN DDT19 UPDATE POINTER
- DDT16 LDN 5
- UJN DDT19 UPDATE POINTER
- DDT17 LDN 7
- UJN DDT19 UPDATE POINTER
- DDT18 LDN 11
- DDT19 RADL T3 UPDATE POINTER TO PARAMETER 68
- SBDL T1
- MJP DDT1 IF MORE PARAMETERS TO CHECK
- DDT20 LCN 0 DRIVE NOT FOUND OR ERROR
- UJN DDT13 EXIT
- DDTA CON 0 TOTAL NUMBER OF DRIVES IN LOGICAL UNIT
- DLU SPACE 4,10
- ** DLU - DECLUSTER LOGICAL UNIT.
- *
- * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
- * (DDTA) = PHYSICAL DRIVES PER LOGICAL UNIT.
- * (PHYD,DI) = DRIVE TO DECLUSTER.
- * (DT) = DRIVE TYPE.
- *
- * EXIT TO *ERR* IF ERROR.
- *
- * CALLS ATT, SCP, SOU, SRP, WCB.
- DLU SUBR ENTRY/EXIT
- LDC C0209+1S17 LOAD ATTRIBUTE OPERATION CODE
- RJM SOU SET OPERATION CODE AND UNIT
- LDC P0568
- RJM SCP SET COMMAND PARAMETER
- LDML CPBF+CUN
- LPN 77B MASK DRIVE NUMBER
- SHN 10
- ADN 1
- STML CPBF+FCP+1 PARAMETER WORD WITH DRIVE NUMBER
- LDD DT
- IFNE EQEA,0,2
- SBN EQEA
- MJN DLU1 IF NOT SOLID STATE
- SBN EQEC-EQEA
- PJN DLU1 IF NOT SOLID STATE
- LDC 0#8500 DECLUSTER 5832
- UJN DLU2 SET DECLUSTER PARAMETER
- DLU1 LDC 0#8900 DECLUSTER 5833/5838/47444
- DLU2 STML CPBF+FCP+2
- LDN 12D COMMAND PACKET LENGTH
- RJM WCB WRITE COMMAND PACKET
- LDN CMSS
- RJM ATT PROCESS ATTENTION
- NJN DLU4 IF NOT SUCCESSFUL
- * IF THE NEXT COMMAND IS ISSUED BEFORE THE DECLUSTER
- * COMPLETES, AN ERROR COULD OCCUR.
- DLU3 LDN ASRT
- RJM ATT PROCESS ATTENTION
- LDK ID26
- RJM SRP SEARCH RESPONSE PACKET
- MJN DLU3 IF ID26 NOT FOUND
- SOM DDTA
- NJN DLU3 IF ANOTHER ASYNCHRONOUS RESPONSE EXPECTED
- UJP DLUX RETURN
- DLU4 LCN ELCA LOAD CONTROLLER ATTRIBUTES FAILURE
- RJM ERR PROCESS ERROR
- DMP SPACE 4,15
- ** DMP - DISABLE MMF PARITY DEVICE ACCESS.
- *
- * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
- * (EO) = EST ORDINAL.
- *
- * USES CM+2.
- *
- * CALLS CAB, CAC, CBB, LNE, RBD, UBP.
- *
- * MACROS CMSTF.
- DMP5 LDC ** (UNPROCESSED PARTITION COUNT)
- DMPB EQU *-1
- NJN DMPX IF NOT ALL PARTITIONS PROCESSED
- LDML DVTP,DI SET *ACCESS DISABLED* FLAG
- LPC 167777
- LMC 10000
- STML DVTP,DI
- DMP SUBR ENTRY/EXIT
- LDN 0 CLEAR UNPROCESSED PARTITION COUNT
- STM DMPB
- * LDN 0 INITIALIZE PARTITION SEARCH
- DMP1 RJM LNE LOCATE NEXT EST FOR THIS DEVICE
- ZJN DMP5 IF NO MORE PARTITIONS
- RJM CAB CHECK ACGL *MMF PARITY DEVICE ACCESS* BIT
- ZJN DMP4 IF BIT FOR THIS MF IS CLEAR
- RJM CBB CHECK BDLL *DISABLE ACCESS* BIT
- MJN DMP2 IF BIT FOR THIS DRIVER ALREADY SET
- LDN 1 NEW VALUE
- STD CM+2
- LDD T1 BIT TO CHANGE
- ADN 19D
- RJM UBP SET DISABLE ACCESS BIT IN *BDLL*
- DMP2 RJM CAC CHECK FOR ALTERNATE CHANNEL
- NJN DMP3 IF ALTERNATE CHANNEL UNDEFINED OR DOWN
- RJM RBD READ *BDLL*
- LDD CM+3 CHECK IF BITS SET FOR BOTH CHANNELS
- SHN -7
- LPN 3
- LMN 3
- ZJN DMP3 IF BOTH BITS ARE NOW SET
- AOM DMPB UNPROCESSED PARTITION COUNT
- UJN DMP4 PROCESS NEXT PARTITION
- DMP3 CMSTF GPDA CLEAR ACCESS FLAG BIT FOR THIS MF
- DMPA EQU *-3 (BIT NUMBER FOR THIS MF)
- DMP4 LDD EO
- UJP DMP1 PROCESS NEXT PARTITION
- DRT SPACE 4,10
- ** DRT - CHECK REQUEST TYPE.
- *
- * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
- * (FC) = 0 IF FORMAT NOT COMPLETE.
- * (CB) = 0 IF NO I/O BUFFER PRESENT.
- *
- * EXIT (A) .NE. 0 IF I/O REQUEST.
- DRT2 LDN 0
- DRT SUBR ENTRY/EXIT
- LDD FC
- ZJN DRTX IF FORMAT NOT COMPLETE
- LDM SREQ,DI
- NJN DRT2 IF SPECIAL REQUEST
- LDM RSDI CHECK IF RESTORE IN PROGRESS
- LMD DI
- NJN DRT1 IF NO RESTORE IN PROGRESS ON THIS DEVICE
- LDM RMUX
- ZJN DRTX IF CURRENTLY RESTORING A CYLINDER
- DRT1 LDD CB
- UJN DRTX
- ECA SPACE 4,20
- ** ECA - ENABLE CONTROLLER ACTIVITY.
- *
- * THIS SPECIAL REQUEST CLEARS THE CONTROLLER DEAD FLAG IN THE
- * CONTROLLER STATE TABLE. THIS FUNCTION IS ISSUED BY *1MV*
- * WHEN AN *UP,CCH* COMMAND IS ENTERED.
- *
- * ENTRY (CI) = CONTROLLER STATE TABLE ADDRESS.
- * (CN) = CONTROLLER NUMBER.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- * (EO) = EST ORDINAL.
- * (IR+4) = CHANNEL NUMBER.
- *
- * EXIT *CONTROLLER DEAD* FLAG CLEARED IN *CTST*.
- * *CMX CONTROLLER ENABLED, CCHXX* MESSAGE ISSUED.
- * TO *CMP* WHEN FUNCTION COMPLETE.
- *
- * CALLS CEA, IEM.
- ECA BSS 0 ENTRY
- LDML CTST,CI ENABLE CONTROLLER ACTIVITY
- SHN 21-15
- PJN ECA1 IF CONTROLLER NOT DISABLED
- SHN -21+15+22
- LPC 17777 CLEAR BITS 15 - 13
- STML CTST,CI
- LDC ERCE+100000 *EQXXX, UXX, CMX CONTROLLER ENABLED.*
- RJM IEM ISSUE ERRORLOG MESSAGE
- ECA1 RJM CEA CLEAR ENABLE ACTIVITY REQUEST
- LJM CMP COMPLETE FUNCTION
- ECI SPACE 4,15
- ** ECI - EXAMINE CONTROLLER INTERRUPTS.
- *
- * ENTRY (CI) = CONTROLLER STATE TABLE ADDRESS.
- * (CN) = CONTROLLER NUMBER.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- *
- * EXIT (A) = (PA) = 0 IF NO REQUEST IN PROGRESS.
- * (A) .NE. 0, IF DEVICE SHOULD NOT BE PROCESSED.
- * TO (ADDR,DI) IF NO RESPONSE FOR REQUEST IN PROGRESS.
- * TO (ATTN,DI) IF RESPONSE FOR REQUEST IN PROGRESS.
- * TO *CMP* AFTER PERFORMING THE INITIAL LOGICAL RESET
- * ON THE CONTROLLER. THIS RESET IS DONE ONCE PER
- * CONTROLLER WHEN THE DRIVER IS LOADED.
- *
- * USES PA.
- *
- * CALLS FCN, GIS, IDU, IHD, LDP, SAP, SRS.
- ECI SUBR ENTRY/EXIT
- RJM SAP SELECT ADAPTER PORT
- LDC F0715 ENABLE INTERRUPTS
- RJM FCN
- RJM LDP LOAD DEVICE PARAMETERS
- RJM GIS GET INTERRUPT STATUS
- LPML TMSK,CN
- ZJN ECI2 IF NO INTERRUPT FROM THIS CONTROLLER
- * CHECK THAT INTERRUPT BELONGS TO CURRENT DRIVE.
- RJM IHD
- ZJN ECI2 IF RESPONSE FROM INACTIVE DRIVE
- * LDML ATTN,DI
- STDL PA SET RETURN ADDRESS
- LDN 0
- STML ATTN,DI DEACTIVATE RETURN
- * RETURN TO CALLER WITH STATUS FROM RESPONSE PACKET.
- LDM EEST,DI EXPECTED RESPONSE TYPE
- LMD RT
- ZJN ECI1 IF EXPECTED RESPONSE
- LMD RT
- LMD MS
- ZJN ECI1 IF EXPECTED STATUS
- LMK CMCS&CMSS
- ECI1 LJM 0,PA RETURN TO CALLER
- * NO INTERRUPT FOUND - CHECK FOR REQUEST IN PROGRESS.
- ECI2 LDDL PA
- NJN ECI1 IF REQUEST IN PROGRESS
- LDM ERFL
- ZJN ECI3 IF DRIVER NOT IN ERROR PROCESSING
- LMD DI
- NJN ECI5 IF ERROR ON DIFFERENT DEVICE
- ECI3 LDM SRSA
- NJN ECI5 IF RESET IN PROGRESS
- LDM CFFA
- NJN ECI5 IF FORMAT IN PROGRESS
- LDML CTST,CI CHECK CONTROLLER STATUS
- SHN 21-16
- MJN ECI6 IF INITIAL LOGICAL RESET NOT COMPLETE
- LDN 0
- ECI5 LJM ECIX RETURN
- * PROCESS INITIAL LOGICAL RESET.
- ECI6 RJM IDU INTERLOCK DISK UNIT
- NJN ECI5 IF DEVICE ASSIGNED ELSEWHERE
- LDC 1S16+CMP
- LJM SRS INITIATE LOGICAL RESET
- EDR SPACE 4,20
- ** EDR - EXECUTE DRIVE (POWER ON) RESET.
- *
- * THIS MASTER CLEARS THE DRIVE(S), BREAKS AN OPPOSITE ACCESS
- * RESERVE AND RUNS DIAGNOSTICS. IT IS ISSUED BY THE
- * CONTROLLER EVEN IF THE DRIVE IS OFF-LINE OR NOT OPERATIONAL.
- * IF A SLAVE RESET IS ISSUED AND AN ATTACHED DRIVE IS RESERVED
- * TO ANOTHER CONTROLLER, THE CONTROLLER WILL REPORT THE DRIVE
- * AS NOT OPERATIONAL.
- *
- * ENTRY (CN) = CONTROLLER NUMBER.
- * (DD) = NUMBER OF DATA DRIVES IN DEVICE.
- * (DN) = DRIVE NUMBER.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- * (PD) = NUMBER OF PARITY DRIVES IN DEVICE.
- *
- * EXIT (PHYD,DI) IS NOT CHANGED.
- *
- * CALLS ATT, DDT, SRS, UPD, WCB.
- EDR5 RJM UPD UPDATE PHYSICAL DRIVE ADDRESS
- NJN EDR1 IF MORE PHYSICAL DRIVES IN LOGICAL UNIT
- LDM EDRA
- STM PHYD,DI RESTORE DRIVE NUMBER
- EDR SUBR ENTRY/EXIT
- LDM MSGL+1
- SBN EMBF2L-1
- MJN EDRX IF NO RESPONSE PACKET
- LDM PHYD,DI
- STM EDRA SAVE DRIVE NUMBER
- LDD DN
- STM PHYD,DI PHYSICAL DRIVE
- EDR1 RJM DDT DETERMINE DRIVE TYPE
- LDML DDTA TOTAL DRIVES IN LOGICAL UNIT
- LMN 1
- ZJN EDR3 IF 1X DRIVE
- RJM ATT WAIT FOR COMPLETION RESPONSE
- LDD DD
- ADD PD
- SBN 1
- ZJN EDR2 IF 1X DRIVE CONFIGURED
- LDM PHYD,DI
- LPN 70B
- NJP EDR5 IF RESET ALREADY ISSUED
- EDR2 LDD CN
- SHN 10
- ADD DN
- SCN 0#38
- UJN EDR4 SAVE ADDRESS FOR COMMAND
- EDR3 RJM ATT WAIT FOR COMPLETION RESPONSE
- LDDL CN
- SHN 10
- ADM PHYD,DI
- EDR4 STML CPBF+CUN LOGICAL ADDRESS
- LDC C0800 ABORT COMMAND
- STML CPBF+OPC
- LDC P0254
- STML CPBF+FCP
- LDC 0#400 RESET AS AT POWER ON
- STML CPBF+FCP+1
- LDN 10D COMMAND PACKET LENGTH
- RJM WCB COMMAND PACKET TRANSFER
- LDN CMSS WAIT ON INTERRUPT
- RJM ATT
- LDC EDR5+1S16 RETURN ADDRESS/LOGICAL RESET
- LJM SRS RESET IN CASE OF MULTIPLE RESPONSES
- EDRA CON 0 FAILING DRIVE NUMBER
- EIO SPACE 4,35
- ** EIO - ENTER I/O REQUEST QUEUE.
- *
- * THIS ROUTINE SETS LINKAGE BITS IF THE REQUEST IS A READ.
- * IT ALSO DELINKS COMPLETED BUFFERS FROM THE REQUEST QUEUE.
- * ON READ REQUESTS, EACH BUFFER IS DELINKED IMMEDIATELY.
- * ON WRITE REQUESTS, BUFFERS ARE ONLY DELINKED AFTER ENOUGH
- * SUBSEQUENT SECTORS HAVE BEEN SENT TO THE CONTROLLER TO
- * ENSURE THAT THE DATA HAS BEEN FLUSHED TO THE DISK (BASED
- * ON THE FACT THAT THE CONTROLLER HAS AN INTERNAL BUFFER OF
- * 128KB FOR EACH SPINDLE OF THE DEVICE).
- *
- * THIS ALGORITHM ENSURES THAT THE CURRENT CBT ORDINAL IN THE
- * *PUT* WILL POINT TO THE SECTOR IN ERROR, WHEN AN ERROR IS
- * ENCOUNTERED ON A WRITE REQUEST. SINCE (CB) IS ALWAYS RESET
- * TO THE CURRENT CBT ORDINAL FROM THE *PUT* WHEN *LDP* IS
- * CALLED, THIS ALLOWS CODE IN *ERR* TO ENSURE THAT THE CORRECT
- * I/O REQUEST WILL BE RETRIED DURING ERROR PROCESSING.
- *
- * ENTRY (RW) = READ / WRITE STATUS.
- * (CB) = CURRENT BUFFER ORDINAL.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- * (DT) = DRIVE TYPE.
- * (NB) = NEXT BUFFER ORDINAL.
- *
- * USES T1, WB+3, CM - CM+4.
- *
- * CALLS IMR, SLB.
- EIO SUBR ENTRY/EXIT
- LDD RW
- NJN EIO2 IF WRITE OPERATION
- LDD CB
- RJM SLB SET LINKAGE BITS
- LDD NB
- ZJN EIO1 IF LAST BUFFER
- LDN 1
- UJN EIO3 DELINK AFTER ONE BUFFER READ
- EIO1 LDN 2 LAST MONITOR REQUEST WILL DELINK AND
- UJN EIO3 RELEASE UNIT INTERLOCK
- EIO2 LDD DD CONTROLLER BUFFER IS 128K PER DATA DRIVE
- SHN 3
- ADN 2
- EIO3 STD T1 DELINKING CRITERIA
- LDML PSBF,DT
- SHN -14
- RAM CSCT,DI
- AOM RQLN,DI ADVANCE ENTRY COUNT
- LPC 3777
- SBD T1
- MJN EIO5 IF QUEUE NOT FULL
- ADN 1
- STD WB+3 NUMBER OF BUFFERS TO DELINK
- SBN 14
- PJN EIO4 IF TIME TO FORCE DELINK
- LDD OA
- CRD CM CHECK OUTPUT REGISTER
- LDD CM
- NJN EIO5 IF MONITOR REQUEST IN PROGRESS
- EIO4 LDN DCBS
- RJM IMR INITIATE MONITOR REQUEST
- * LDN 0
- SBD WB+3 ADJUST QUEUE ENTRY COUNT
- RAM RQLN,DI
- EIO5 UJP EIOX RETURN
- EMP SPACE 4,15
- ** EMP - ENABLE MMF PARITY DEVICE ACCESS.
- *
- * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
- * (EO) = EST ORDINAL.
- *
- * EXIT (A) = 0, IF ALL PARTITIONS PROCESSED.
- *
- * USES CM+2, T4.
- *
- * CALLS CAB, CBB, CCI, CDS, CMR, CSN, LNE, UBP.
- *
- * MACROS SMSTF.
- EMP6 LDC 10000 SET *MMF RESTORE / ACCESS DISABLED* FLAG
- STDL T4
- EMP7 LDML DVTP,DI CLEAR *ACCESS DISABLED*, *ACCESS ENABLED*,
- LPC 163377 AND *RESTORE INITIATION*
- LMDL T4 SET ACCESS ENABLED OR DISABLED FLAG
- STML DVTP,DI
- EMP8 LDC ** (COUNT OF UNPROCESSED PARTITIONS LEFT)
- EMPB EQU *-1
- EMP SUBR ENTRY/EXIT
- LDN 0 CLEAR UNPROCESSED PARTITION COUNT
- STM EMPB
- RJM CMR CHECK MMF RESTORE FLAGS
- MJN EMP8 IF RESTORE INITIATION IN PROGRESS
- ZJN EMP1 IF NO RESTORE IN PROGRESS
- LDM CMRA EST ORDINAL WITH RESTORE SET
- RJM CSN COMPARE CONTROLLER SERIAL NUMBERS
- NJN EMP6 IF RESTORE ON DIFFERENT CONTROLLER
- LDC 4000 SET *MMF RESTORE / ACCESS ENABLED* FLAG
- STD T4
- UJN EMP7 SET FLAG AND EXIT
- EMP1 LDN 0 CLEAR ACCESS ENABLED/DISABLED FLAG
- STD T4
- * LDN 0 INITIALIZE PARTITION SEARCH
- EMP2 RJM LNE LOCATE NEXT EST FOR THIS DEVICE
- ZJN EMP7 IF NO MORE PARTITIONS
- RJM CDS CHECK DEVICE STATUS
- MJN EMP4 IF DEVICE NOT RECOVERED
- RJM CBB CHECK BDLL *DISABLE ACCESS* BIT
- PJN EMP3 IF BIT FOR THIS DRIVER ALREADY CLEAR
- LDN 0 NEW VALUE
- STD CM+2
- LDD T1 BIT TO CHANGE
- ADN 19D
- RJM UBP CLEAR DISABLE ACCESS BIT IN *BDLL*
- EMP3 RJM CAB CHECK ACGL *MMF PARITY DEVICE ACCESS* BIT
- NJN EMP5 IF BIT FOR THIS MF IS ALREADY SET
- SMSTF GPDA SET ACCESS FLAG BIT FOR THIS MF
- EMPA EQU *-3 (BIT NUMBER FOR THIS MF)
- UJN EMP5 PROCESS NEXT PARTITION
- EMP4 AOM EMPB INCREMENT UNPROCESSED PARTITION COUNT
- EMP5 LDD EO
- UJP EMP2 PROCESS NEXT PARTITION
- ERR SPACE 4,45
- ** ERR - PROCESS ERRORS.
- *
- * ERROR PROCESSING FLOW IS CONTROLLED BY THE RETRY COUNT
- * (ERCT,DI). EXAMPLE FLOW THROUGH RECOVERY FOR DRIVE ERROR-
- *
- * (ERCT,DI) COMMENT
- * --------- ------------------------------------------------------
- * 0 ENTER, LOGICAL RESET
- * 1 ISSUE BML MESSAGE, EXIT
- * 1 ENTER, LOGICAL RESET, DRIVE RESET
- * 2 ISSUE BML MESSAGE, EXIT
- * 2 ENTER, SLAVE RESET (OR LOGICAL RESET IF A DRIVE CAN BE
- * OFF-LINE OR MEDIA ERROR)
- * 3 ISSUE BML MESSAGE, EXIT
- * 3 ENTER, LOGICAL RESET
- * 4 ISSUE BML MESSAGE, SET SUSPECT STATE, EXIT
- *
- * THE REQUEST IS NOW CHANNEL SPECIFIC, AND IF DUAL ACCESS IS
- * DEFINED, WILL BE FOR THE OTHER CHANNEL.
- *
- * 4 ENTER, LOGICAL RESET
- * 5 ISSUE BML MESSAGE, EXIT
- * 5 ENTER, LOGICAL RESET, DRIVE RESET
- * 6 ISSUE BML MESSAGE, EXIT
- * 6 ENTER, LOGICAL RESET
- * 7 ISSUE BML MESSAGE, RUN DRIVE DIAGNOSTICS, EXIT
- * 7 ENTER, LOGICAL RESET
- * 8 IF NO DRIVE TO OFF-LINE OR THE OFF-LINE COMMAND
- * FAILED, SET MISCELLANEOUS AND ISSUE THE FINAL BML
- * MESSAGE. OTHERWISE, OFF-LINE THE FAILING DRIVE,
- * SET ERCT TO 0, AND EXIT.
- *
- * NOTE - IF THE REQUEST STARTS OUT AS A CHANNEL-SPECIFIC
- * REQUEST (E.G. A *1MV* I/O REQUEST), ALL RETRIES WILL
- * BE DONE ON THIS CHANNEL.
- *
- * NOTE - IF AN ERROR OCCURS ON AN I/O REQUEST DURING A
- * RESTORE, ALL RETRIES WILL BE DONE ON THIS CHANNEL.
- * IF THE ERROR IS UNRECOVERABLE, I/O REQUESTS AND
- * SPECIAL REQUESTS WILL BE DISABLED FOR THE DRIVE
- * UNTIL THE RESTORE COMPLETES.
- *
- * ENTRY (A) = FAULT ANALYSIS CODE.
- * (CI) = CONTROLLER STATE TABLE ADDRESS.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- * (DN) = DRIVE NUMBER.
- *
- * EXIT TO *DAS1* TO RETRY REQUEST.
- * TO *CMP2* AFTER SUSPECT STATE SET.
- * TO *CMP1* IF RETRIES COMPLETE AND UNRECOVERABLE SET.
- * TO *CMP10* IF ERROR IN PROGRESS ON DIFFERENT DEVICE.
- *
- * USES RW, T1 - T5.
- *
- * CALLS CBC, CMC, CRF, DCA, EDR, EUI, GBM, ICR, IDM, IEM, IOM,
- * LDP, RCR, RND, SCD, SDO, SEC, SEP, SRS, SSS, WAC.
- *
- * MACROS CBTE.
- ERR CON 0 ENTRY
- PJN ERR1 IF NO RESPONSE PACKET
- LMC 767777
- ERR1 STD T4 SAVE FAULT CODE
- SHN 0-14
- STD T1 SET RESPONSE PACKET STATUS
- RJM EUI ENSURE UNIT INTERLOCKED
- LDM ERPA CHECK IF ERROR PROCESSING ALREADY ACTIVE
- ZJN ERR1.1 IF ERROR PROCESSING NOT ACTIVE
- LMD DI
- NJN ERR2 IF ACTIVE ON DIFFERENT DEVICE
- ERR1.1 LDD DI SET ERROR PROCESSING ACTIVE FLAG
- STM ERPA
- LDM SRSA
- ZJN ERR4 IF NO RESET IN PROGRESS
- LMD DI
- ZJN ERR3 IF THIS UNIT CONTROLLING RESET
- ERR2 LJM CMP10 ABANDON REQUEST (RETRY LATER)
- ERR3 RJM CRF CLEAR RESET FLAGS
- LDM RWST,DI
- NJN ERR4 IF NOT SLAVE RESET
- LDC ERRF+100000 *EQXXX, UXX, CMX RESET FAILURE.*
- RJM IEM ISSUE ERRORLOG MESSAGE
- LDN 0 CLEAR OPERATOR MESSAGE
- RJM IOM
- RJM DCA DISABLE CONTROLLER ACTIVITY
- ERR4 LDN 0 CLEAR CHANNEL ACTIVE
- RJM SCD
- LDC ** (ZERO IF NEW PASS THROUGH ERROR PROCESSING)
- ERRA EQU *-1
- NJP ERR11 IF NOT NEW PASS THROUGH ERROR PROCESSING
- AOM ERRA INDICATE STATUS SAVED
- LDM ERCT,DI
- SBN SRRC
- ZJN ERR6 IF ERROR MIGHT BE FROM SLAVE RESET
- LDM RWST,DI
- STM IOST,DI SAVE READ/WRITE STATUS
- ERR6 LDD DN SET DEFAULT FAILING DRIVE (MAY BE CHANGED
- STM PHYD,DI LATER IF A RESPONSE IS PRESENT)
- LCN 0
- STM EDBF+FCS2 NO RESPONSE PACKET FOR *HPA*
- LDD T4 INSERT INITIAL FAULT CODE
- STM EDBF+CODE
- STM EDBF+FALT PRESET FINAL FAULT CODE
- * GENERATE BML MESSAGE. ON A *CONDITIONAL SUCCESS* ERROR,
- * REENTER CALLING ROUTINE TO COMPLETE PROCESSING REQUEST.
- RJM GBM GENERATE BML MESSAGE
- * RELOAD DEVICE PARAMETERS AND CLEAR BUFFER COUNT. IF AN ERROR
- * OCCURS WHILE STREAMING WRITE REQUESTS, THIS ENSURES THAT (CB)
- * POINTS TO THE REQUEST IN ERROR, AND THAT NO ADDITIONAL WRITE
- * REQUESTS WILL BE DELINKED. SEE DOCUMENTATION IN *EIO*.
- RJM LDP RELOAD DEVICE PARAMETERS
- RJM CBC CLEAR BUFFER COUNT
- * SET ERROR PROCESSING INTERLOCK.
- RJM SEP SET ERROR PROCESSING INTERLOCK
- NJP CMP10 IF ERROR IN PROGRESS ON A DIFFERENT DEVICE
- LDN 0 CLEAR *FORMAT IN PROGRESS* FLAG
- STM CFFA
- LDML CTST,CI
- SHN 21-15
- PJN ERR7 IF CONTROLLER STILL FUNCTIONAL
- LDN 1
- STM CPEA INDICATE NO DRIVE TO OFF-LINE
- UJN ERR14 SLAVE RESET FAILED
- * ALLOW ACTIVITY ON OTHER DRIVES TO COMPLETE BEFORE ISSUING
- * THE RESET.
- ERR7 RJM WAC WAIT FOR OTHER ACTIVITY TO COMPLETE
- RJM ICR ISSUE CONTROLLER RESET
- * UJN ERR12 (IF RESET SUCCESSFUL)
- UJN ERR14 RESET FAILED
- * REENTER HERE IF ERROR WHILE ATTEMPTING HARDWARE RECOVERY.
- ERR11 RJM RCR RESET CHANNEL REGISTERS
- UJN ERR14 SET RECOVERY FAULT CODE
- ERR12 LDM ERCT,DI CHECK RETRY COUNT
- SBN 1
- ZJN ERR13 IF TIME FOR DRIVE RESET
- SBN MERC-CSRC
- NJN ERR14 IF NOT TIME FOR DRIVE RESET
- ERR13 RJM EDR EXECUTE DRIVE RESET
- ERR14 LDN 0
- STM EDBF+FCS3 SET RECOVERY FAULT CODE
- LDM IOST,DI
- STM RWST,DI RESTORE READ/WRITE STATUS
- STD RW
- LDM ERCT,DI CHECK ERROR COUNT
- SBN MERC-1
- MJN ERR15 IF NOT TIME TO OFF-LINE DRIVE
- RJM SDO SET DRIVE OFF-LINE
- RJM SEC SET ERROR CODE IN *CBT*
- AOM MISC MARK ERROR UNRECOVERED
- LJM CMP1 COMPLETE PROCESSING
- ERR15 AOM ERCT,DI
- LDD HN
- ERRNZ HD0100-100 CODE DEPENDS ON VALUE
- RJM IDM ISSUE MESSAGE
- LDML CTST,CI
- SHN 21-15
- MJN ERR16 IF CONTROLLER DEAD
- LDM ERCT,DI
- SBN MERC-1
- NJN ERR16 IF NOT TIME TO RUN DIAGNOSTICS
- RJM RND RUN DRIVE DIAGNOSTICS
- ERR16 LDM SREQ,DI
- NJP ERR19 IF SPECIAL REQUEST
- LDD FC
- ZJP ERR19 IF FORMAT NOT COMPLETE
- LDM RSDI CHECK IF RESTORE IN PROGRESS
- LMD DI
- NJN ERR17 IF NO RESTORE IN PROGRESS ON THIS DEVICE
- LDM RMUX
- ZJN ERR18 IF CURRENTLY RESTORING A CYLINDER
- ERR17 LDM ERCT,DI
- LMN CSRC
- NJN ERR18 IF NOT TIME FOR CHANNEL SWAP
- LDD CB
- ZJN ERR17.1 IF NO I/O BUFFER
- SHN CBTLS
- CBTE *
- ADC HSLK GET CHANNEL SELECT STATUS
- CRD T1
- LDD T1
- SHN 0-12
- LMN 1
- ZJN ERR19 IF REQUEST ALREADY CHANNEL-SPECIFIC
- ERR17.1 UJP ERR20 SET SUSPECT STATE
- ERR18 LDM EDBF+CODE
- LMN EROD
- NJN ERR19 IF NOT RESTORE
- LDM EDBF+FALT
- LMN EDPE
- NJN ERR19 IF NOT MEDIA ERROR
- * IF THE RETRY LIMIT FOR SKIPPING MEDIA ERRORS DURING A
- * RESTORE IS CHANGED, CODE IN *GBM* MUST ALSO BE CHANGED.
- LDML ERCT,DI
- SBN 2
- ZJP CMP IF MEDIA RETRY LIMIT FOR RESTORE
- ERR19 RJM CMC CHECK MONITOR COMPLETE
- * LDN 0
- STM ADDR,DI CLEAR REENTRY ADDRESS
- STM ATTN,DI CLEAR INTERRUPT ADDRESS
- STM CSCT,DI CLEAR CUMULATIVE SECTOR COUNT
- STM SREQ,DI CLEAR SPECIAL REQUEST FLAG
- STM ERRA ENABLE NEXT PASS THROUGH ERROR PROCESSOR
- LDD RF
- NJN ERR19.2 IF RESET FAILURE
- ERR19.1 LJM DAS1 RETURN TO MAIN LOOP
- ERR19.2 LDML CTST,CI
- SHN 21-15
- MJN ERR19.1 IF CONTROLLER DEAD
- LDC 1S16+DAS1 RETURN ADDRESS
- LJM SRS ISSUE LOGICAL RESET
- ERR20 RJM SSS SET SUSPECT STATE ON DEVICE
- RJM SEC SET ERROR CODE IN *CBT*
- LJM CMP2 COMPLETE PROCESSING
- ERPA CON 0 ERROR PROCESSING ACTIVE FLAG (*DST* INDEX)
- EUI SPACE 4,15
- ** EUI - ENSURE UNIT INTERLOCKED.
- *
- * IF AN INTERRUPT IS PRESENT AND A CHANNEL ERROR OCCURS WHILE
- * READING THE RESPONSE, (DI) MIGHT BE FOR A UNIT THAT IS NOT
- * INTERLOCKED.
- *
- * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
- *
- * EXIT (DI) = DEVICE ADDRESS OF INTERLOCKED UNIT.
- * TO *CMP7* IF NO INTERLOCKED UNIT.
- *
- * USES DI.
- *
- * CALLS LDP, LND, RCR.
- EUI SUBR ENTRY/EXIT
- LDM RQLN,DI
- SHN 0-13
- NJN EUIX IF UNIT INTERLOCKED
- STML ADDR,DI CLEAR REENTRY ADDRESS
- STML ATTN,DI CLEAR INTERRUPT ADDRESS
- * LDN 0 LOCATE FIRST DRIVE
- EUI1 RJM LND LOCATE NEXT DRIVE
- ZJN EUI2 IF NO MORE DRIVES ON CONTROLLER
- LDM RQLN,T7
- SHN 0-13
- LMN 1
- NJN EUI1 IF UNIT NOT INTERLOCKED
- LDD T7
- STD DI
- RJM LDP LOAD DEVICE PARAMETERS
- UJN EUIX RETURN
- EUI2 RJM RCR RESET CHANNEL REGISTERS
- LJM CMP7 COMPLETE REQUEST
- FFD SPACE 4,15
- ** FFD - FIND FAILING DRIVE.
- *
- * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
- *
- * EXIT (FFDA) = 0 IF FAILING DRIVE.
- * (PHYD,DI) = FAILING DRIVE.
- *
- * USES T3.
- *
- * CALLS SRP.
- FFD SUBR ENTRY/EXIT
- LDM EDBF+FALT
- SBN EMME
- ZJN FFD1 IF RESPONSE PRESENT
- SBN EIVR-EMME
- ZJN FFD1 IF RESPONSE PRESENT
- SBN EMEX-EIVR
- NJP FFD7 IF NO RESPONSE PACKET
- FFD1 LDK ID23
- RJM SRP SEARCH RESPONSE PACKET
- MJN FFD2 IF ID23 NOT FOUND
- LDML RPBF+5,T3
- SHN -10
- SBN 6
- PJN FFD4 IF FAILING DRIVE FOUND
- FFD2 LDK ID24
- RJM SRP SEARCH RESPONSE PACKET
- MJN FFD3 IF ID24 NOT FOUND
- LDML RPBF+5,T3
- SHN -10
- SBN 7
- MJN FFD3 IF NO FAILING DRIVE
- LDML RPBF+5+3,T3
- UJN FFD5 CHECK FOR PHYSICAL DRIVE NUMBER
- FFD3 LDK ID26
- RJM SRP SEARCH RESPONSE PACKET
- MJN FFD7 IF ID26 NOT FOUND
- LDML RPBF+5,T3
- SHN -10
- SBN 10
- MJN FFD7 IF NO FAILING DRIVE
- AOD T3
- FFD4 LDML RPBF+5+3,T3
- SHN -10
- FFD5 LPC 377
- LMC 0#FE
- ZJN FFD7 IF NO PHYSICAL DRIVE NUMBER
- LMC 0#FE
- STM PHYD,DI SAVE FAILING DRIVE NUMBER
- LDML RPBF+OPC
- LMC C0209
- ZJN FFD7 IF COMMAND THAT OFF-LINES A DRIVE
- LDN 0
- FFD6 STM FFDA
- UJP FFDX RETURN
- FFD7 LDN 1
- UJN FFD6 RETURN
- FFDA CON 0
- FMU SPACE 4,15
- ** FMU - FORMAT UNIT.
- *
- * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
- * (PHYD,DI) = THE PHYSICAL DRIVE TO FORMAT.
- * (DD) = NUMBER OF DATA DRIVES IN DEVICE.
- * (DT) = DRIVE TYPE.
- * (FC) = FORMAT COMPLETE FLAG.
- *
- * EXIT TO *ERR* IF ERROR.
- *
- * CALLS ATT, C2D, IEM, IOM, SFP, WCB.
- FMU SUBR ENTRY/EXIT
- LDC ERFI *EQXXX, UXX, FORMAT INITIATED.*
- RJM IEM ISSUE ERROR LOG MESSAGE
- LDM PHYD,DI
- RJM C2D PUT UNIT NUMBER IN MESSAGE
- STM FMUA+4
- LDD EO
- RJM C2D CONVERT EST ORDINAL
- STM FMUA+2
- LDD EO
- SHN -6 SET ORDINAL IN MESSAGE
- ADC 2RQ0
- STM FMUA+1
- LDC FMUA
- RJM IOM ISSUE OPERATOR MESSAGE
- * FORMAT THE DIAGNOSTIC CYLINDER.
- RJM SFP SET COMMON FORMAT PARAMETERS
- LDC 0#1DF
- STML CPBF+FCP+3 FORMAT THE DIAGNOSTIC CYLINDER
- LDD DT DRIVE TYPE
- IFNE EQEA,0,2
- SBN EQEA
- MJN FMU0 IF NOT 5832
- SBN EQEC-EQEA
- MJN FMU1 IF 5832
- FMU0 LDN 0#E COMMAND PACKET LENGTH
- RJM WCB WRITE COMMAND PACKET
- LDN CMSS
- RJM ATT PROCESS ATTENTION
- NJN FMU1.2 IF NOT SUCCESSFUL
- * FORMAT THE DATA CYLINDERS.
- FMU1 RJM SFP SET COMMON FORMAT PARAMETERS
- LDML FC
- NJN FMU2 IF DRIVE CLUSTERED
- LDC 0#7DD FACTORY FORMAT PARAMETER
- STML CPBF+FCP+3
- LDD DD
- STML CPBF+FCP+4 DATA DRIVES PER LOGICAL UNIT
- LDN 0
- STML CPBF+FCP+5 UPPER BYTES OF SECTOR SIZE
- LDML BPS,DT BYTES PER SECTOR
- SCN 77
- STML CPBF+FCP+6
- LDN 0#14 COMMAND PACKET LENGTH
- UJN FMU3 WRITE COMMAND PACKET
- FMU1.2 LCN EFDF FORMAT DRIVE FAILURE
- RJM ERR PROCESS ERROR
- FMU2 LDC 0#53B
- STML CPBF+FCP+3 LOGICAL SECTOR SIZE
- LDN 0
- STML CPBF+FCP+4 UPPER BYTES OF SECTOR SIZE
- LDML BPS,DT
- SCN 77
- STML CPBF+FCP+5
- LDN 0#12 COMMAND PACKET LENGTH
- FMU3 RJM WCB WRITE COMMAND PACKET
- LDN CMSS
- RJM ATT PROCESS ATTENTION
- NJN FMU1.2 IF ERROR
- * LDN 0 CLEAR OPERATOR MESSAGE
- RJM IOM
- LDC ERFC *EQXXX, UXX, FORMAT COMPLETE.*
- RJM IEM ISSUE ERROR LOG MESSAGE
- UJP FMUX RETURN
- FMUA DATA C* EQ000 U00 FORMATTING.*
- GBM SPACE 4,35
- ** GBM - GENERATE BML MESSAGE.
- *
- * THIS ROUTINE GENERATES THE ERROR MESSAGE FOR SYMPTOM 100 OR
- * 111. IF THE ERROR IS A MEDIA ERROR, THE RETRY COUNT IS ONE,
- * AND THE COMMAND IS READ OR WRITE, THE TRACK FLAW WILL BE SET
- * IN THE MST. IF THE ERROR IS A MEDIA ERROR, THE RETRY COUNT
- * IS ONE, AND THE COMMAND IS A RESTORE, THE CYLINDER, TRACK,
- * AND SECTOR VALUES WILL BE UPDATED TO POINT TO THE SECTOR
- * AFTER THE ONE WITH THE MEDIA ERROR, SO THE NEXT RESTORE
- * COMMAND WILL END UP SKIPPING THE MEDIA DEFECT.
- *
- * ENTRY (T1) .NE. 0 IF RESPONSE PACKET PRESENT.
- * (DI) .EQ. DEVICE STATE TABLE ADDRESS.
- * (DT) .EQ. DEVICE TYPE.
- *
- * EXIT TO *DAS1* IF CONDITIONAL SUCCESS. THE CONTROLLER
- * RETURNS AN ASYNCHRONOUS RESPONSE WITH A PARAMETER 29
- * FOR EACH PHYSICAL DRIVE OF THE LOGICAL UNIT THAT IT
- * PERFORMED RECOVERY ON. IT THEN RETURNS A COMMAND
- * COMPLETION RESPONSE. THIS ROUTINE LOGS THE
- * ASYNCHRONOUS RESPONSE TO THE BML, THEN EXITS TO THE
- * MAIN LOOP, *DAS*. SINCE (ATTN,DI) AND (ADDR,DI) ARE
- * STILL SET EXPECTING THE COMMAND COMPLETION RESPONSE,
- * WHEN THE COMMAND COMPLETION RESPONSE IS RECEIVED,
- * THE CODE IN *PIO* WILL GO TO *CMP* AND LOG A
- * RECOVERED ERROR. HOWEVER, IF THE ERROR COUNT
- * REACHES THE MAXIMUM VALUE WHEN PROCESSING A
- * CONDITIONAL SUCCESS, IT WILL BE TREATED AS A
- * NORMAL ERROR.
- *
- * USES PA, T2 - T7.
- *
- * CALLS ACE, CCO, FFD, IDM, RCR, RMR, RTR, SMD, SRP, STF, UHD.
- GBM SUBR ENTRY/EXIT
- LDM CSCT,DI
- STM EDBF+STCT SECTORS TRANSFERRED
- LDM CYLN,DI SET SEEK ADDRESS - CYLINDER
- STM EDBF+ICYL
- LDM TKSN,DI SEEK ADDRESS - TRACK AND SECTOR
- STM EDBF+ITAS
- LDML LCMD,DI SET LAST COMMAND
- STML EDBF+LSCC
- LDML GSSA EXECUTION (ENDING) STATUS
- STML EDBF+EXST
- LDML ERR ERROR RECOVERY ENTRY ADDRESS
- STML EDBF+EREA
- GBM1 LDDL LF SAVE LAST CHANNEL FUNCTION
- STML EDBF+LCFN
- SCF. GBM1,MR ACQUIRE MAINTENANCE CHANNEL ACCESS
- LDN ZERL
- CRML RBUF,ON CLEAR BUFFER IN CASE OF ERROR
- SBN 1
- CRML RBUF+4,ON
- RJM RMR READ CHANNEL STATUS REGISTER
- DCN. MR+40
- CCF. *+2,MR CLEAR MAINTENANCE CHANNEL FLAG
- LDN 0
- STD T2 INITIALIZE INDEX
- RJM ACE ANALYZE CHANNEL ERROR
- STML EDBF+FCS1 SAVE CHANNEL STATUS
- LDC EDBF+CREG
- STDL T5 SET ERROR BUFFER ADDRESS
- GBM2 LDM RBUF,T2
- SHN 10 PACK 8-BIT DATA
- LMM RBUF+1,T2
- STIL T5
- AODL T5 ADVANCE ADDRESS
- LDN 2
- RAD T2 INCREMENT INDEX
- LMN RBUFL
- NJN GBM2 IF MORE REGISTER DATA
- RJM RTR READ T REGISTER
- LDK RTEDL
- STD T4 SET LENGTH OF DATA
- LDC EDBF
- STDL T2 SOURCE DATA ADDRESS
- ADK EMBF1
- RJM UHD UNPACK HEX DATA
- ADN EMBFS
- STM MSGL+1 MESSAGE LENGTH INCLUDING NON-HEX DATA
- LDD T1
- ZJN GBM3 IF NO RESPONSE PACKET PRESENT
- * PUT RESPONSE IN BML.
- LDC RPBF
- STDL T2 SET SOURCE DATA ADDRESS
- LDIL T2
- ADN 3 CALCULATE STATUS BLOCK LENGTH
- SHN -1
- SBK RPBFL
- MJN GBM2.1 IF LESS THAN MAXIMUM SIZE
- LDN 0
- GBM2.1 ADK RPBFL
- STD T4
- LDC EDBF+EMBF2 CONVERT STATUS TO 12 BIT DATA
- RJM UHD MOVE RESPONSE PACKET TO BML MESSAGE
- RAM MSGL+1 INCREASE LENGTH TO INCLUDE RESPONSE
- LDN 0
- STM EDBF+FCS2 RESPONSE PACKET PRESENT FOR *HPA*
- * CONVERT MAJOR STATUS TO INDEX.
- LDDL MS UNPACK BUS A FLAGS
- SHN -10
- STD T2
- LDD MS BUS B SUBSTATUS FLAGS
- LPN 7
- SHN 10 COMBINE FLAGS IN ORDER
- RAD T2
- GBM3 ZJP GBM27 IF NO SUBSTATUS
- LCN 0
- STD T3
- GBM4 AOD T3 ADVANCE INDEX
- LDD T2
- SHN 21-0 CONVERT FLAG POSITION TO INDEX
- STD T2
- PJN GBM4 IF BIT NOT SET
- LDML GBMA,T3
- STDL PA SET PROCESSOR ADDRESS
- LJM 0,PA EXIT TO PROCESSOR
- * RESERVED SUBSTATUS (PID = X0 AND X1).
- GBM5 LDN ERSS
- UJN GBM11 SET FINAL FAULT CODE
- * DEFECT MANAGEMENT (PID = X2).
- GBM6 LDN EDFM
- UJN GBM11 SET FINAL FAULT CODE
- * MESSAGE / MICROCODE EXCEPTION (PID = X3).
- GBM7 LDN EMME
- UJN GBM11 SET FINAL FAULT CODE
- * INTERVENTION REQUIRED (PID = X4).
- GBM8 LDN ID24
- RJM SRP SEARCH RESPONSE PACKET
- PJN GBM10 IF ID24 FOUND
- GBM9 LDN EIVR
- UJN GBM11 SET FINAL FAULT CODE
- GBM10 LDML RPBF+5+1,T3
- SHN 21-11
- PJN GBM9 IF NOT FACILITY BUSY
- LDN EDRE
- GBM11 LJM GBM26 SET FINAL FAULT CODE
- * ALTERNATE PORT EXCEPTION (PID = X5).
- GBM12 LDN EAPR
- UJN GBM11 SET FINAL FAULT CODE
- * MACHINE EXCEPTION (PID = X6).
- GBM13 LDN ID26 SEARCH FOR DRIVE SUBSTATUS
- RJM SRP
- ZJN GBM15 IF SUBSTATUS FOUND
- GBM14 LDN 0 DO NOT ISSUE SPECIAL BML MESSAGE
- RJM CCO CHECK FOR CONTROLLER OVER TEMPERATURE
- LDN EMEX
- LJM GBM26 SET FINAL FAULT CODE
- GBM15 LDML RPBF+5,T3 CHECK LENGTH OF PARAMETER
- SHN -10
- SBN 0#10+1
- MJN GBM14 IF NO EXTENDED SUBSTATUS
- LDML RPBF+5+4,T3
- SHN -10
- LMC 0#FE
- ZJN GBM16 IF NO PHYSICAL DRIVE NUMBER
- LMC 0#FE
- STM PHYD,DI FAILING PHYSICAL DRIVE
- GBM16 LDM RPBF+15,T3
- LPN 77 EXAMINE COMMAND ENDING STATUS
- SBN 0#11
- ZJN GBM17 IF ECC ERROR
- SBN 0#13-0#11
- ZJN GBM17 IF MISSING SYNC
- SBN 0#19-0#13
- NJP GBM14 IF NOT SECTOR NOT FOUND ERROR
- GBM17 LDML RPBF+OPC
- SHN -14
- SBN 1
- ZJN GBM18 IF READ
- SBN 1
- ZJN GBM18 IF WRITE
- SBN 14
- NJP GBM14 IF NOT RESTORE (NOT MEDIA ERROR)
- GBM18 LDM ERCT,DI
- LMN 1
- NJN GBM19 IF NOT FIRST RETRY
- LDM RPBF+12,T3
- STD T4 SET CYLINDER IN ERROR
- GBM18.1 SBM MC,DT CHECK FOR MAINTENANCE CYLINDER
- ZJN GBM19 IF NOT IN USER AREA
- SBN 1
- PJN GBM18.1 IF MORE TO CHECK
- LDML CFS,DT
- SHN -14
- ADK SHNI
- STM GBMB
- LDML RPBF+13,T3
- LPN 77
- STD T6 PHYSICAL SECTOR
- GBMB SHN ** CONVERT PHYSICAL TO LOGICAL
- STD T7 LOGICAL SECTOR WITHIN PHYSICAL TRACK
- LDML RPBF+13,T3
- SHN -10
- STD T5 PHYSICAL TRACK
- RJM SMD SKIP MEDIA DEFECT
- NJN GBM19 IF RESTORE
- RJM STF INSERT TRACK FLAW IN MST
- GBM19 LDN EDPE
- UJN GBM22 SET FINAL FAULT CODE
- * COMMAND EXCEPTION (PID = X7).
- GBM20 LDN ECEX
- UJN GBM22 SET FINAL FAULT CODE
- * COMMAND ABORTED (PID = X8).
- GBM21 LDN ECMA
- GBM22 LJM GBM26 SET FINAL FAULT CODE
- * COMMAND CONDITIONALLY SUCCESSFUL (PID = X9).
- GBM23 LDN ECCS
- STML EDBF+FALT SET FAULT CODE
- LDN ID29
- RJM SRP SEARCH RESPONSE PACKET
- MJN GBM24 IF ID29 NOT FOUND
- LDML RPBF+5,T3
- SHN -10
- SBN 6
- MJN GBM24 IF NO FAILING DRIVE
- LDML RPBF+5+3,T3
- SHN -10
- LMC 0#FE
- ZJN GBM24 IF NO FAILING DRIVE NUMBER
- LMC 0#FE
- STM PHYD,DI FAILING DRIVE NUMBER
- GBM24 LDN 0
- STM EDBF+FCS3
- LDM ERCT,DI CHECK ERROR COUNT
- SBN MERC-1
- MJN GBM24.1 IF MAXIMUM ERROR COUNT NOT REACHED
- LDN ECCS
- UJN GBM26 SET FINAL FAULT CODE
- * ISSUE BML MESSAGE AND RETURN TO MAIN LOOP. THIS ALLOWS
- * A REENTRY BASED ON THE VALUES OF (ATTN,DI) AND (ADDR,DI).
- GBM24.1 AOM ERCT,DI INCREMENT ERROR COUNT
- LDD HN
- ERRNZ HD0100-100 CODE DEPENDS ON VALUE
- RJM IDM ISSUE MESSAGE
- LDN 0
- STM ERPA CLEAR ERROR PROCESSING ACTIVE FLAG
- STM ERRA ENABLE NEXT PASS THROUGH ERROR PROCESSOR
- LJM DAS1 RETURN TO MAIN LOOP
- * COMMAND INCOMPLETE (PID = XA).
- GBM25 LDN ECIC
- * LJM GBM26 SET FINAL FAULT CODE
- * COMPLETE ERROR PROCESSING.
- GBM26 STML EDBF+FALT SET FINAL FAULT CODE
- GBM27 RJM RCR RESET CHANNEL
- RJM FFD FIND FAILING DRIVE
- LJM GBMX RETURN
- GBMA BSS 0 SUBSTATUS PROCESSORS
- CONL GBM5 RESERVED
- CONL GBM5 RESERVED
- CONL GBM6 DEFECT MANAGEMENT
- CONL GBM7 MESSAGE / MICROCODE EXCEPTION
- CONL GBM8 INTERVENTION REQUIRED
- CONL GBM12 ALTERNATE PORT EXCEPTION
- CONL GBM13 MACHINE EXCEPTION
- CONL GBM20 COMMAND EXCEPTION
- CONL GBM21 COMMAND ABORTED
- CONL GBM23 COMMAND CONDITIONALLY SUCCESSFUL
- CONL GBM25 COMMAND INCOMPLETE
- GCA SPACE 4,15
- ** GCA - GET CURRENT *ACGL*.
- *
- * ENTRY (EO) = EST ORDINAL.
- *
- * EXIT (CM - CM+4) = *ACGL* WORD FROM *MST*.
- *
- * USES CM - CM+4.
- *
- * CALLS REE.
- *
- * MACROS MONITOR.
- GCA SUBR ENTRY/EXIT
- LDD EO SET EST ORDINAL
- STD CM+1
- LDN UTRS GET CURRENT MST
- STD CM+3
- MONITOR STBM
- RJM REE READ EST ENTRY
- LDD CM+4
- SHN 3
- ADN ACGL READ *ACGL*
- CRD CM
- UJN GCAX RETURN
- GCS SPACE 4,15
- ** GCS - GET CONTROLLER SERIAL NUMBER.
- *
- * ENTRY (CI) = CONTROLLER STATE TABLE ADDRESS.
- * (CN) = CONTROLLER NUMBER.
- * (DN) = DRIVE NUMBER.
- *
- * EXIT CONTROLLER SERIAL NUMBER IN (CTSN - CTSN+2).
- *
- * USES T3, T4.
- *
- * CALLS ATT, CAN, IDT, RCA.
- GCS SUBR ENTRY/EXIT
- LDM CTSN,CI
- NJN GCSX IF CONTROLLER SERIAL NUMBER ALREADY KNOWN
- RJM RCA REPORT CONTROLLER ATTRIBUTES
- RJM IDT INPUT DATA TO PP
- * CONVERT RIGHT 6 OF 8 CONTROLLER SERIAL NUMBER CHARACTERS.
- LDC ATTB+0#10 SET ADDRESS OF CONTROLLER SERIAL NUMBER
- STDL T4
- LDD CI SET ADDRESS FOR CONVERSION
- ADN CTSN
- STDL T3
- RJM CAN CONVERT ASCII NUMBER TO DISPLAY CODE
- RJM ATT WAIT FOR COMPLETION RESPONSE
- UJN GCSX RETURN
- IBM SPACE 4,10
- ** IBM - ISSUE BML MESSAGE.
- *
- * ENTRY (A) = SYMPTOM - 100.
- * (NR - NR+4, WB - WB+4) = MESSAGE PARAMETERS.
- *
- * EXIT (A) = 0.
- *
- * USES CM - CM+4, NR, NR+1.
- *
- * CALLS IDM.
- IBM SUBR ENTRY/EXIT
- ADD HN INSERT SYMPTOM CODE
- ERRNZ HI0100-100 CODE DEPENDS ON VALUE
- STD NR+1
- LDC DM0401 DEFINE MESSAGE ID
- STD NR
- LDN ZERL CLEAR HEADER WORD
- CRD CM
- LDN 3 WORD COUNT OF MESSAGE
- STD CM+3
- ADK MLDY-3 DIRECT MESSAGE TO BML
- STD CM+4
- LDC SBUF SET MESSAGE ADDRESS
- STML MAD1
- LDD MA MOVE MESSAGE DATA
- CWM CM,TR
- ERRNZ CM+5-NR CODE DEPENDS ON VALUE
- SBN 3
- ERRNZ NR+5-WB CODE DEPENDS ON VALUE
- CRM SBUF,TR
- ERRNG SBUFL-3*5 CODE DEPENDS ON VALUE
- LDN 0 ISSUE BML MESSAGE
- RJM IDM
- * LDN 0
- UJN IBMX RETURN
- ICR SPACE 4,15
- ** ICR - ISSUE CONTROLLER RESET.
- *
- * ENTRY (RW) .NE. 0 IF PREVIOUS RESET FAILED.
- * (RF) .NE. 0 IF RESET FAILURE.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- * (PD) = 0, IF NOT PARITY DEVICE.
- * (CPEA) = 0, IF TIME TO DO SLAVE RESET AND THERE
- * IS A DRIVE TO OFF-LINE.
- *
- * EXIT TO *ERR12* IF RESET COMPLETE.
- * (CPEA) = 0 IF LOGICAL RESET ISSUED AND THERE IS
- * A DRIVE TO OFF-LINE.
- *
- * CALLS CPE, SRS.
- ICR6 LDN 1
- STM CPEA INDICATE NO DRIVE TO OFF-LINE
- LDM RWST,DI
- ZJN ICRX IF SLAVE RESET FAILED
- LDM ERCT,DI
- SBN CSRC-SRRC
- ZJN ICR1 IF TIME TO TRY SLAVE RESET
- ICR SUBR ENTRY/EXIT
- LDD RF
- NJN ICR6 IF PREVIOUS RESET FAILED
- LDM ERCT,DI
- SBN CSRC-SRRC
- NJN ICR2 IF NOT TIME TO TRY SLAVE RESET
- * DO NOT DO SLAVE RESET IF CHANNEL ERROR, MEDIA ERROR,
- * OR CONTROLLER DEAD.
- ICR1 LDML EDBF+FALT
- SBN ETIT
- ZJN ICR3 IF INTERRUPT TIMEOUT
- SBN EDPE-ETIT+1
- MJN ICR2 IF NOT DOING SLAVE RESET (CHANNEL ERROR)
- SBN ECNR-EDPE-1
- ZJN ICR3 IF SLAVE IN/SYNC IN SIGNAL ERROR
- SBN ECRE-ECNR
- PJN ICR2 IF NOT DOING SLAVE RESET
- * DO NOT ISSUE SLAVE RESET (1 MINUTE) IF A DRIVE CAN
- * BE SET OFF-LINE.
- LDD PD
- ZJN ICR3 IF NOT PARITY DEVICE
- LDM CPEA
- NJN ICR3 IF NO DRIVE TO OFF-LINE
- ICR2 LDN 1
- STM CPEA INDICATE NO DRIVE TO OFF-LINE
- LDC 1S16+ICR5 RETURN ADDRESS
- UJN ICR4 ISSUE LOGICAL RESET
- ICR3 LDN 0 ENABLE LOGGING OF ERROR RESPONSE
- STM ERRA
- LDC ERR12 RETURN ADDRESS FROM SLAVE RESET
- ICR4 LJM SRS ISSUE RESET
- ICR5 RJM CPE CHECK IF PARITY DRIVE ENABLED
- LJM ERR12 EXIT
- IDM SPACE 4,20
- ** IDM - ISSUE DAYFILE MESSAGE.
- *
- * ENTRY (A) = BML MESSAGE SYMPTOM CODE.
- * (RW) = READ / WRITE FLAG.
- * (EO) = EST ORDINAL.
- * (CN) = CONTROLLER NUMBER.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- * (DT) = DRIVE TYPE.
- * (PHYD,DI) = DRIVE NUMBER.
- * (MISC) = 1 IF UNRECOVERED ERROR.
- * (MAD1) = MESSAGE ADDRESS.
- *
- * NOTE - THE CONTENTS OF THE MESSAGE DETERMINES WHETHER IT
- * GOES TO THE ERROR LOG OR THE BML.
- *
- * EXIT (A) = (MISC) = 0.
- *
- * CALLS IMB, UEC.
- IDM SUBR ENTRY/EXIT
- LMC D"DN"*400
- STM BMLM+1 INSERT SYMPTOM CODE IN MESSAGE
- LDML BMID,DT
- SHN -11
- STM MSID ERROR MESSAGE ID
- LDD CN
- SHN 6
- ADM PHYD,DI INSERT UNIT NUMBER
- STM UNIT
- LDM PNUN,DI SET PORT NUMBER
- SHN -3
- SCN 77
- STM PORT
- LDD EO INCLUDE EST ORDINAL
- STM ESTO
- LDD RW READ / WRITE FLAG
- LPN 1
- SHN 21-4
- ADM ERCT,DI SET RETRY COUNT
- SHN 13-5
- RAM MISC APPEND TO RECOVERED/UNRECOVERED STATUS
- LDML MAD1
- RJM IMB ISSUE MESSAGE TO BUFFER
- RJM UEC UPDATE MST ERROR COUNT
- LDC MSGP
- STML MAD1 RESTORE BML ERROR MESSAGE ADDRESS
- LDN 0
- STM MISC CLEAR UNRECOVERED ERROR STATUS
- * LDN 0
- LJM IDMX RETURN
- MAD1 CONL MSGP MESSAGE ADDRESS (MAY BE SET BY CALLER)
- IDU SPACE 4,15
- ** IDU - INTERLOCK DISK UNIT.
- *
- * ENTRY (CB) = CBT ORDINAL, IF I/O REQUEST.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- * (EO) = EST ORDINAL.
- *
- * EXIT (A) .EQ. 0, IF UNIT INTERLOCKED SUCCESSFULLY.
- * (A) .LT. 0, IF CHANNEL DOWN.
- * (A) .GT. 0, IF UNABLE TO INTERLOCK.
- *
- * USES T7, WB+3, CM - CM+4.
- *
- * CALLS CAC, CCS, SUI.
- *
- * MACROS CBTE.
- IDU4 RJM SUI SET UNIT INTERLOCK
- IDU SUBR ENTRY/EXIT
- LDM RQLN,DI
- SHN 0-13 CHECK UNIT RESERVED
- LMN 1
- ZJN IDUX IF UNIT INTERLOCKED
- LDC 0
- CHRQ EQU *-1
- NJN IDUX IF CHANNEL REQUESTED
- RJM CCS CHECK CHANNEL STATE
- IDU2 ZJN IDU4 IF CHANNEL UP
- SCN 1
- NJN IDU3 IF CHANNEL DOWN
- * CHANNEL IDLE. IF OTHER CHANNEL IS DEFINED AND UP, ONLY
- * PROCESS CHANNEL-SPECIFIC REQUESTS ON THIS CHANNEL.
- LDD CB
- ZJN IDU3 IF NOT I/O REQUEST
- SHN CBTLS
- CBTE *
- ADC PAD4 GET CHANNEL FROM CBT ENTRY
- CRD T7
- ADN HSLK-PAD4 GET CHANNEL SELECT STATUS
- CRD CM
- LDD CM CHECK ERROR FLAGS
- SHN 0-12
- NJN IDU2.1 IF CHANNEL SPECIFIC REQUEST
- RJM CAC CHECK ALTERNATE CHANNEL STATUS
- ZJN IDU3 IF OTHER CHANNEL DEFINED AND UP
- UJP IDU4 SET UNIT INTERLOCK
- IDU2.1 LDD T7 CHECK SPECIFIED CHANNEL
- SHN -6
- LMD IR+4
- ZJN IDU2 IF REQUEST FOR THIS DRIVER
- IDU3 LCN 0 RETURN *CHANNEL DOWN* STATUS
- UJP IDUX RETURN
- IEE SPACE 4,15
- ** IEE - ISSUE E,E EVENT.
- *
- * THIS ROUTINE ISSUES A MONITOR REQUEST WHICH CAUSES AN
- * OPERATOR ACTION TO VIEW THE E,E DISPLAY.
- *
- * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
- *
- * USES CM - CM+4.
- *
- * MACROS MONITOR.
- IEE SUBR ENTRY/EXIT
- LDN EEVS
- STD CM+1 ENTER EVENT
- LDN 0
- STD CM+3
- LDN CEDE *CHECK E,E DISPLAY* EVENT
- STD CM+4
- MONITOR EATM
- UJN IEEX RETURN
- IEM SPACE 4,15
- ** IEM - ISSUE ERROR LOG MESSAGE.
- *
- * ENTRY (A) = 1/CF,15/ADDRESS.
- * CF - SET CONTROLLER NUMBER INTO MESSAGE.
- * THE MESSAGE LENGTH IS IN (ADDRESS-1).
- * (CN) = CONTROLLER NUMBER.
- * (DT) = DRIVE TYPE.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- * (EO) = EST ORDINAL.
- *
- * USES T1, T2.
- *
- * CALLS C2D, IDM.
- IEM SUBR ENTRY/EXIT
- STDL T0 SAVE COMPLETE PARAMETER
- LPC 17777
- STDL T1 ADDRESS OF SPECIFIED MESSAGE
- STML IEMA
- LDDL T0 CHECK IF CONTROLLER NUMBER FLAG SET
- SHN 21-17
- PJN IEM1 IF CONTROLLER NUMBER NOT PART OF MESSAGE
- LDD CN CONVERT CONTROLLER NUMBER
- ADN 1R0
- SHN 6 INSERT IN MESSAGE
- LMN 1R
- STM 1,T1
- IEM1 LDM DM,DT SAVE DEVICE MNEMONIC
- STM ERMH+5
- LDD EO
- SHN -3
- RJM C2D
- STM ERMH+6 UPPER 2 DIGITS OF EST ORDINAL
- LDD EO
- LPN 7
- SHN 6
- ADC 2R0,
- STM ERMH+7 LOWER DIGIT OF EST ORDINAL
- LDM PHYD,DI
- RJM C2D
- STM ERMH+11 FAILING DRIVE
- LDM -1,T1 SET MESSAGE LENGTH
- STM ERMH+3
- LDN 4
- STD T1
- LDD MA
- CWM **,T1 COPY MESSAGE INTO BUFFER
- IEMA EQU *-1
- LDD MA
- CRM ERMB,T1
- LDC ERMH MESSAGE HEADER ADDRESS
- STML MAD1
- RJM IDM ISSUE MESSAGE TO ERROR LOG
- UJP IEMX RETURN
- * ERROR MESSAGE HEADER AND BUFFER.
- ERMH CON 0,0,0,**,ELDY
- DATA 12H*****, U**,
- ERMB BSSZ 4*5
- CON 0
- * ERROR MESSAGES.
- ERPD ERRMSG (PARITY PROTECTION DISABLED.)
- ERPR ERRMSG (PARITY PROTECTION RESTORED.)
- ERRI ERRMSG (PARITY RESTORE INITIATED.)
- ERFI ERRMSG (FORMAT INITIATED.)
- ERFC ERRMSG (FORMAT COMPLETE.)
- ERCR ERRMSG (CMX RESET ON CCHXX.)
- ERRC ERRMSG (CMX RESET COMPLETE.)
- ERRF ERRMSG (CMX RESET FAILURE.)
- ERCD ERRMSG (CMX CONTROLLER DISABLED, CCHXX.)
- ERCE ERRMSG (CMX CONTROLLER ENABLED, CCHXX.)
- IHD SPACE 4,20
- ** IHD - INTERRUPT HANDLER.
- *
- * ENTRY (CI) = CONTROLLER STATE TABLE ADDRESS.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- * (DN) = DRIVE NUMBER.
- *
- * EXIT (A) = EXIT CONDITION FROM ROUTINE *VIS*.
- * = 0 IF INTERRUPT FOR INACTIVE DRIVE.
- * = RETURN ADDRESS TO PROCESSOR.
- * (MS) = MAJOR STATUS FROM RESPONSE PACKET.
- * (RT) = RESPONSE TYPE FROM STATUS BLOCK.
- * (DI) = THE COMMAND REFERENCE NUMBER FROM AN EXPECTED
- * RESPONSE.
- * TO *DAS1* IF UNEXPECTED ASYNCH.
- *
- * USES DI, MS, RT, T4.
- *
- * CALLS DCM, LDP, LSD, RCR, RRP, SCM, VIS.
- IHD6 LCN 0 INDICATE ASYNC INTERRUPT
- IHD7 RJM VIS VERIFY INTERRUPT SOURCE
- IHD SUBR ENTRY/EXIT
- LDML CTST,CI
- SHN -15
- ZJN IHD1 IF STREAMING MODE FOR RESPONSES
- * IF 10 MB CHANNEL AND INTERLOCK MODE, SOMETIMES AFTER SENDING
- * A COMMAND PACKET, THE ERROR FLAG WILL SET DURING THE
- * FOLLOWING BUS CONTROL SEQUENCE (IPI ERROR REGISTER = 0004).
- * MASTER CLEARING THE CHANNEL AFTER THE COMMAND PACKET
- * PREVENTS THIS PROBLEM.
- RJM RCR RESET CHANNEL REGISTERS
- IHD1 RJM SCM SELECT CONTROLLER
- RJM RRP READ RESPONSE PACKET
- LDML RPBF+MST
- STDL MS SAVE MAJOR STATUS
- SHN -4
- LPN 17 EXTRACT RESPONSE TYPE
- STD RT
- LMN XFNT
- ZJN IHD7 IF TRANSFER NOTIFICATION
- RJM DCM DESELECT CONTROLLER
- LDD RT CHECK RESPONSE TYPE
- LMN ASRT
- NJP IHD7 IF NOT ASYNC (UNSOLICITED) RESPONSE
- LDM RPBF+CUN
- LPC 377
- STD T4 SAVE DRIVE NUMBER
- LMC 377
- ZJP IHD6 IF RESPONSE FOR CONTROLLER
- RJM LSD LOCATE SELECTED DRIVE
- ZJN IHD5 IF DRIVE UNKNOWN ON THIS CONTROLLER
- STD DI
- RJM LDP LOAD DEVICE PARAMETERS
- * AN ASYNCH FOR A DRIVE CAN OCCUR BEFORE THE ASYNCH FOR THE
- * CONTROLLER AFTER A SLAVE RESET.
- LDM SRSA
- NJN IHD5 IF RESET IN PROGRESS
- LDM EEST,DI
- LMN ASRT
- ZJN IHD4 IF EXPECTED ASYNCH
- LDML RPBF+CRN
- LMD DI
- NJN IHD5 IF NOT EXPECTED ASYNCH
- IHD4 LDML ATTN,DI
- LJM IHDX RETURN
- * AN UNEXPECTED ASYNCH CAN BE THE RESULT OF A DRIVE RESET FROM
- * THE OTHER ACCESS, OR BECAUSE AN OFF-LINE DRIVE HAS BEEN
- * REPAIRED AND SPUN UP. SUCH UNEXPECTED ASYNCHS ARE IGNORED.
- IHD5 LJM DAS1 RETURN TO MAIN LOOP
- IIO SPACE 4,20
- ** IIO - INITIATE I/O.
- *
- * ENTRY (A) = (CB) = *CBT* ORDINAL.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- * (DT) = DRIVE TYPE.
- *
- * EXIT (A) = 0 IF I/O DISABLED ON THIS CHANNEL.
- * (RW) = READ / WRITE STATUS.
- * (PA) = PROCESSOR ADDRESS.
- * (NR - NR+4) = PHYSICAL ADDRESS OF REQUEST.
- *
- * USES PA, RW, NR - NR+4, T1 - T7.
- *
- * CALLS PEF.
- *
- * MACROS CBTE.
- IIO4 STDL PA
- SCN 77 SET I/O DISABLED STATUS
- IIO SUBR ENTRY/EXIT
- SHN CBTLS
- CBTE *
- ADC PAD1 FETCH SEEK PARAMETERS FROM *CBT*
- CRD NR
- ADN PAD4-PAD1 GET CHANNEL FROM CBT ENTRY
- CRD T1
- ADN HSLK-PAD4 GET CHANNEL SELECT STATUS
- CRD T2
- SBN HSLK-IOLK GET READ / WRITE FLAG
- CRD T3
- LDD T2 CHECK ERROR FLAGS
- SHN 0-12
- ZJN IIO1 IF NO FLAGS
- SHN -1
- STD RW PROCESS ERROR FLAGS
- RJM PEF
- NJN IIO4 IF I/O PREPROCESSING INDICATED
- *IIO1 LDN 0
- IIO1 STML CPBF+FCP+1 CLEAR UPPER BYTES OF BLOCK COUNT
- STML CPBF+FCP+6 CLEAR UPPER BYTES OF INTERRUPT SIZE
- STML CPBF+FCP+10 CLEAR UPPER BYTES OF BURST SIZE
- LDC P0931
- STML CPBF+FCP COMMAND EXTENT PARAMETER
- LDD NR+1
- STM CPBF+FCP+3 SET CYLINDER IN COMMAND PACKET
- STM CYLN,DI
- * DETERMINE PARTITION.
- IIO2 SBM MC,DT
- MJN IIO2.1 IF IN THE CORRECT PARTITION
- SBN 1
- PJN IIO2 IF NOT AT MAINTENANCE CYLINDER
- * SET BLOCK COUNT. USING A LARGER BLOCK COUNT IMPROVES
- * STREAMING PERFORMANCE.
- IIO2.1 ADN 7
- PJN IIO2.2 IF WITHIN LAST 8 CYLINDERS
- LDML PSCY,DT SET SECTOR COUNT FOR 8 CYLINDERS
- SHN 3
- UJN IIO3 RETURN
- IIO2.2 LDM STS,DT SET SECTOR COUNT FOR .LT. 8 CYLINDERS
- LPC 777
- IIO3 STML CPBF+FCP+2 SECTOR COUNT
- LDD NR+2
- STM TKSN,DI TRACK + SECTOR
- SCN 77
- SHN 2
- LMD NR+2 SEPARATE INTO 8 BIT FIELDS
- SCN 77
- LMD NR+2 SET IN COMMAND PACKET
- STML CPBF+FCP+4
- LDD T3
- SHN 22-11 EXTRACT WRITE DATA FLAG
- LPN 1
- STM RWST,DI SET READ / WRITE STATUS
- STD RW
- LDC PIO
- UJP IIO4 SET PROCESSOR ADDRESS
- ILU SPACE 4,15
- ** ILU - INITIALIZE LOGICAL UNIT.
- *
- * DECLUSTER UNIT IF CLUSTERED, FORMAT ALL THE PHYSICAL DRIVES
- * OF THE LOGICAL UNIT AS NECESSARY, THEN CLUSTER THE UNIT.
- *
- * ENTRY (DN) = DRIVE NUMBER.
- * (DT) = DRIVE TYPE.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- *
- * USES CM - CM+4.
- *
- * CALLS ATT, CLU, CUF, DDT, DLU, FMU, SRS, UPD.
- ILU SUBR ENTRY/EXIT
- LDD DN
- STM PHYD,DI PHYSICAL DRIVE
- ILU1 RJM DDT DETERMINE DRIVE TYPE
- MJP ILU7 IF DRIVE NOT IN CONTROLLER TABLE
- SBD DT
- PJN ILU1.2 IF ACTUAL EQUAL OR GREATER THAN EXPECTED
- ILU1.1 ADN EQEG-EQEC ADVANCE DEVICE TYPE RANGE
- ERRNZ EQEO-EQEG-EQEG+EQEC (RANGES MUST BE EQUAL SIZE)
- MJN ILU1.1 IF NOT TO PROPER RANGE
- ILU1.2 ZJN ILU4 IF EXPECTED AND ACTUAL TYPES MATCH
- LDM DDTA
- SBN 1
- ZJN ILU4 IF LOGICAL UNIT IS ONE DRIVE
- * IF 2 CONTROLLERS ARE CABLED TO THE UNIT AND THE UNIT IS
- * CLUSTERED DIFFERENTLY THAN IT IS CONFIGURED, THE OTHER
- * CONTROLLER MAY ALREADY HAVE DECLUSTERED AND RECLUSTERED
- * DIFFERENTLY. SLAVE RESET MUST BE DONE TO CAUSE THE
- * CONTROLLER TO REEVALUATE THE DRIVES.
- LDC ILU2 RETURN ADDRESS
- LJM SRS INITIATE SLAVE RESET
- * CLEAR THE ASYNCHRONOUS RESPONSES AFTER THE SLAVE RESET.
- * THERE IS NORMALLY ONE ASYNCH PER PHYSICAL DRIVE AFTER A
- * DECLUSTER COMMAND. IF THE DECLUSTER COMMAND IS ISSUED AFTER
- * SLAVE RESET, THE ASYNCHS THAT SHOULD HAVE BEEN AFTER THE
- * COMPLETION RESPONSE FOR THE DECLUSTER MAY COME BEFORE THE
- * COMPLETION RESPONSE. THIS WILL CAUSE A TIMEOUT WAITING
- * FOR A RESPONSE.
- ILU2 LDC 1S16+ILU3 RETURN ADDRESS
- LJM SRS ISSUE LOGICAL RESET
- ILU3 RJM DDT DETERMINE DRIVE TYPE
- MJN ILU7 IF DRIVE NOT IN CONTROLLER TABLE
- ILU4 LDML ATTB+2,T3
- SHN 21-11
- PJN ILU5 IF UNIT NOT CLUSTERED
- RJM ATT WAIT FOR COMPLETION RESPONSE
- RJM DLU DECLUSTER LOGICAL UNIT
- UJN ILU6 CHECK FOR CONDITIONAL FORMAT
- ILU5 RJM ATT WAIT FOR COMPLETION RESPONSE
- ILU6 LDK SSTL
- CRD CM
- LDD CM+1
- SHN 21-12
- PJN ILU8 IF UNCONDITIONAL FORMAT
- RJM DDT DETERMINE DRIVE TYPE
- MJN ILU7 IF DRIVE NOT IN CONTROLLER TABLE
- RJM ATT WAIT FOR COMPLETION RESPONSE
- LDC C0302+1S17 REPORT ADDRESSEE STATUS OPERATION CODE
- RJM CUF CHECK IF UNIT FORMATTED
- ZJN ILU9 IF UNIT FORMATTED
- UJN ILU8 FORMAT THE UNIT
- ILU7 RJM ATT WAIT FOR COMPLETION RESPONSE
- ILU8 RJM FMU FORMAT UNIT
- ILU9 RJM UPD UPDATE DRIVE NUMBER
- NJP ILU1 IF MORE DRIVES TO CHECK
- RJM CLU CLUSTER LOGICAL UNIT
- UJP ILUX RETURN
- IMF SPACE 4,10
- ** IMF - ISSUE MONITOR FUNCTION AND WAIT FOR COMPLETION.
- *
- * ENTRY (A) = FUNCTION.
- *
- * EXIT (A) = 0.
- * (CM - CM+4) = MONITOR FUNCTION RESPONSE.
- *
- * USES CM - CM+4.
- *
- * CALLS AME, CMC.
- IMF SUBR ENTRY/EXIT
- STD CM
- RJM CMC WAIT MONITOR COMPLETE (PREVIOUS REQUEST)
- LDD OA WRITE OUTPUT REGISTER
- CWD CM
- LDD CM
- SBN CPUM
- MJN IMF1 IF NOT *CPUMTR* REQUEST
- RJM AME ATTEMPT MONITOR EXCHANGE
- IMF1 RJM CMC WAIT FOR MONITOR COMPLETE (NEW REQUEST)
- LDD OA READ OUTPUT REGISTER
- CRD CM
- LDN 0
- UJN IMFX RETURN
- IMR SPACE 4,15
- ** IMR - INITIATE *BIOM* MONITOR REQUEST.
- *
- * ENTRY (A) = *BIOM* SUBFUNCTION.
- * (WB+3 - WB+4) = *BIOM* PARAMETERS.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- *
- * EXIT (A) = 0.
- *
- * USES WB - WB+2.
- *
- * CALLS AME, CMC.
- IMR SUBR ENTRY/EXIT
- STD WB+1
- LDI DI SET *PUT* ORDINAL
- ERRNZ PUTO CODE DEPENDS ON VALUE
- STD WB+2
- LDN BIOM SET MONITOR FUNCTION
- STD WB
- RJM CMC CHECK MONITOR COMPLETE
- LDD OA
- CWD WB
- RJM AME ATTEMPT MONITOR EXCHANGE
- * LDN 0
- UJN IMRX RETURN
- IOM SPACE 4,10
- ** IOM - ISSUE OPERATOR MESSAGE.
- *
- * ENTRY (A) = ADDRESS OF MESSAGE.
- * = 0 TO CLEAR MESSAGE.
- * = - TO REFRESH MESSAGE.
- * (EO) = EST ORDINAL.
- *
- * USES T1.
- *
- * CALLS C2D.
- IOM2 LDD CP SYSTEM CP ADDRESS
- ADN MS2W
- CWD T1 CLEAR THE MESSAGE
- IOM3 LDML IOMA
- NJN IOM1 IF MESSAGE PRESENT
- IOM SUBR ENTRY/EXIT
- STDL T1
- MJN IOM3 IF MESSAGE REFRESH
- STML IOMA
- ZJN IOM2 IF CLEAR MESSAGE CALL
- IOM1 LDD CP SYSTEM CP ADDRESS
- ADN MS2W
- CWM **,TR STORE OPERATOR MESSAGE
- IOMA EQU *-1
- UJN IOMX RETURN
- IPR SPACE 4,30
- ** IPR - INITIATE PARITY RESTORE.
- *
- * INITIATE RESTORE OF AN OFF-LINE DRIVE, IN RESPONSE TO AN
- * OPERATOR *RESTORE* COMMAND.
- *
- * THIS ROUTINE CHECKS FOR AN OFF-LINE DRIVE OF A PARITY UNIT.
- * IT WILL ISSUE A SPIN UP DRIVE COMMAND TO SEE IF THE DRIVE
- * IS USEABLE, AND IF SO, FORMAT THE DRIVE IF NECESSARY, THEN
- * SET UP TABLES SO THE DRIVE WILL BE RESTORED ONE CYLINDER
- * AT A TIME AS A BACKGROUND OPERATION.
- *
- * THIS DRIVER WILL HOLD THE UNIT INTERLOCK (IN THE *PUT*)
- * DURING THE ENTIRE RESTORE OPERATION. FOR A SHARED DEVICE,
- * IT WILL ALSO HOLD THE ERROR PROCESSING INTERLOCK (IN THE
- * *BDT*) DURING THE RESTORE INITIATION PROCESS, AND THE MMF
- * RESTORE INTERLOCK (IN THE *BDT*) DURING THE ENTIRE RESTORE.
- * THE MMF RESTORE INTERLOCK WILL ENSURE THAT ONLY THE
- * CONTROLLER THAT IS PERFORMING THE RESTORE WILL BE ALLOWED
- * TO DO I/O ON THE DEVICE DURING THE RESTORE.
- *
- * ENTRY (CI) = CONTROLLER STATE TABLE ADDRESS.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- * (EO) = EST ORDINAL.
- *
- * EXIT TO *CSR*.
- * TO *CMP*, TO LEAVE REQUEST PENDING.
- *
- * USES CM - CM+4.
- *
- * CALLS ATT, CDS, CLP, COD, CRP, DAS, FMU, GCA, IEE, IEM,
- * LNE, SEP, SOU, SRS, SUD, UBP, WAC, WCB.
- *
- * MACROS CMSTF, DELAY, MONITOR, SMSTF.
- IPR BSS 0 ENTRY
- LDM RSIN CHECK RESTORE INTERLOCK FLAG
- ZJN IPR1 IF INTERLOCK NOT SET
- LMD DI
- NJN IPR2 IF INTERLOCK SET FOR ANOTHER DEVICE
- LJM IPR13 PROCESS REENTRY FOR RESTORE ON THIS DEVICE
- * ISSUE LOGICAL RESET TO ENSURE THAT THIS CONTROLLER SEES
- * THE CURRENT STATUS OF THE DRIVE IN QUESTION. ALLOW ACTIVITY
- * ON OTHER DEVICES TO COMPLETE BEFORE ISSUING THE RESET.
- IPR1 RJM SEP SET ERROR PROCESSING INTERLOCK
- ZJN IPR3 IF INTERLOCK SET SUCCESSFULLY
- IPR2 LJM CMP LEAVE REQUEST PENDING
- IPR3 RJM WAC WAIT FOR OTHER ACTIVITY TO COMPLETE
- LDML CSTB,CI
- SHN 21-15
- MJN IPR5 IF CONTROLLER NOT FUNCTIONAL
- LDC IPR4+1S16 RETURN ADDRESS
- LJM SRS ISSUE LOGICAL RESET
- * CHECK FOR OFF-LINE DRIVE.
- IPR4 RJM COD CHECK FOR OFF-LINE DRIVE
- NJN IPR6 IF OFF-LINE DRIVE DETECTED
- RJM CLP CLEAR *LOST PARITY* FLAGS
- IPR5 RJM CRP CLEAR *RESTORE IN PROGRESS*, IF SET
- LJM CSR ABANDON REQUEST
- * SET *RESTORE IN PROGRESS* FLAGS AND INTERLOCKS.
- IPR6 LDD DI SET RESTORE INTERLOCK FLAG
- STM RSIN
- LDD CI SET ADDRESS OF CONTROLLER SERIAL NUMBER
- ADK CTSN-2
- STM IPRA
- LDN 0 INITIALIZE PARTITION SEARCH
- IPR7 RJM LNE LOCATE NEXT EST FOR THIS DEVICE
- ZJP IPR9 IF NO MORE PARTITIONS
- RJM CDS CHECK DEVICE STATUS
- MJN IPR5 IF DEVICE NOT RECOVERED
- ZJN IPR8 IF NOT SHARED DEVICE
- LDD MA SET CONTROLLER SERIAL NUMBER INTO MB
- CWM **,ON (ADDRESS OF *CTSN* FOR THIS CONTROLLER)
- IPRA EQU *-1
- LDD EO SET EST ORDINAL
- STD CM+4
- LDN SRPS SET RESTORE PARITY INTERLOCK IN *BDT*
- STD CM+1
- MONITOR MTEM
- LDD CM+4
- NJP IPR5 IF REJECT (OTHER MF PERFORMING RESTORE)
- LDN 1 SET FLAG THAT SAYS THIS MF HAS INTERLOCK
- STD CM+2
- LDN 25 BIT TO CHANGE
- RJM UBP UPDATE *BDLL* PARAMETER
- IPR8 SMSTF GDRI SET *RESTORE INITIATION* IN *ACGL*
- SMSTF GDUR SET *RESTORE IN PROGRESS* IN *ACGL*
- LDC ERRI *EQXXX, UXX, PARITY RESTORE INITIATED.*
- RJM IEM ISSUE ERROR LOG MESSAGE
- LDD EO
- UJP IPR7 PROCESS NEXT PARTITION
- * IF SHARED DEVICE, WAIT FOR OTHER MF-S TO ACKNOWLEDGE.
- IPR9 RJM IEE ISSUE E,E EVENT
- LDN 0 INITIALIZE PARTITION SEARCH
- IPR10 RJM LNE LOCATE NEXT EST FOR THIS DEVICE
- ZJN IPR13 IF NO MORE PARTITIONS
- STM IPRC SAVE EST ORDINAL
- RJM CDS CHECK DEVICE STATUS
- ZJN IPR12 IF NOT SHARED DEVICE
- IPR11 RJM GCA GET CURRENT *ACGL*
- LDD CM GET ACCESS FLAGS
- LPN 17
- SCN ** (MACHINE MASK FOR THIS MF)
- IPRB EQU *-1
- ZJN IPR12 IF NO OTHER MF HAS ACCESS FLAG SET
- RJM DAS PROCESS ACTIVITY ON OTHER DEVICES
- DELAY
- LDC ** (EST ORDINAL OF CURRENT PARTITION)
- IPRC EQU *-1
- STD EO RESTORE EST ORDINAL
- UJN IPR11 RETRY
- IPR12 LDD EO
- UJN IPR10 PROCESS NEXT PARTITION
- * SPIN UP DRIVE.
- IPR13 RJM SUD SPIN UP DRIVE
- ZJN IPR15 IF SUCCESSFUL
- IPR14 LJM IPR5 ABANDON RESTORE
- * FORMAT DRIVE, IF REQUIRED.
- IPR15 LDK SSTL
- CRD CM
- LDD CM+1
- SHN 21-12
- PJN IPR16 IF UNCONDITIONAL FORMAT
- LDC C0302 REPORT ADDRESSEE STATUS OPERATION CODE
- RJM SOU SET OPERATION CODE AND UNIT
- LDC P02D5
- STML CPBF+FCP PHYSICAL DRIVE PARAMETER
- LDM OUPD,DI OFFLINE UNIT NUMBER
- SHN 10
- STML CPBF+FCP+1 PHYSICAL DRIVE TO STATUS
- LDN 12 COMMAND PACKET LENGTH
- RJM WCB WRITE COMMAND PACKET
- LDN CMSS
- RJM ATT PROCESS ATTENTION
- NJN IPR14 IF ERROR
- LDML RPBF+11
- SHN 21-16
- IPR16 PJN IPR17 IF DRIVE NOT FORMATTED
- LDM RPBF+7 CHECK NUMBER OF DATA DRIVES
- LPN 77
- LMD DD EXPECTED DATA DRIVES
- NJN IPR17 IF WRONG NUMBER OF DATA DRIVES
- LDML BPS,DT CHECK SECTOR SIZE
- SCN 77
- LMML RPBF+13 ACTUAL SECTOR SIZE
- ZJN IPR18 IF CORRECT SECTOR SIZE
- IPR17 RJM FMU FORMAT THE DRIVE
- * SET UP RESTORE PARAMETERS.
- IPR18 LDD DI SET *RESTORE IN PROGRESS* FLAG
- STM RSDI
- LDN 0
- STM RCYL STARTING CYLINDER TO RESTORE
- STM RTSN STARTING TRACK, SECTOR TO RESTORE
- STM RMUX I/O REQUESTS TO MULTIPLEX PER RESTORE
- * LDN 0 INITIALIZE PARTITION SEARCH
- IPR19 RJM LNE LOCATE NEXT EST FOR THIS DEVICE
- ZJN IPR20 IF NO MORE PARTITIONS
- CMSTF GDRI CLEAR *RESTORE INITIATION* FROM *ACGL*
- LDD EO
- UJN IPR19 PROCESS NEXT PARTITION
- IPR20 LJM CSR CLEAR SPECIAL REQUEST FLAG / START RESTORE
- ISR SPACE 4,25
- ** ISR - IDENTIFY AND PROCESS SPECIAL REQUEST.
- *
- * ENTRY (CM+3) = SPECIAL REQUEST FLAGS.
- * (CI) = CONTROLLER STATE TABLE ADDRESS.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- * (EO) = EST ORDINAL.
- *
- * EXIT (CM+3) UPDATED - BITS FOR *ECAF* AND/OR *LMLF* CLEARED
- * IF REQUEST IS FOR THE ALTERNATE CHANNEL.
- * TO *DAS1* IF UNIT INTERLOCK NOT OBTAINED.
- * TO *ERR* IF CONTROLLER FAILURE.
- * TO *ECA* IF ENABLE CONTROLLER ACTIVITY AND *BDLL*
- * BIT SET FOR THIS CHANNEL.
- * TO SPECIAL REQUEST PROCESSOR (ADDRESS IN TABLE *ISRA*)
- * IF SPECIAL REQUEST FOUND, WITH -
- * (RW) = INDEX FOR SPECIAL REQUEST.
- *
- * USES CM+3, PA, RW.
- *
- * CALLS CEC, CPF, IDU, SEO.
- ISR SUBR ENTRY/EXIT
- * CHECK FOR *ENABLE CONTROLLER ACTIVITY* (*ECAF*) REQUEST.
- * IF REQUEST IS FOR OTHER CHANNEL, LOOK FOR DIFFERENT REQUEST.
- LDD CM+3
- SHN 21-ECAF+ECAF/12D*12D
- PJN ISR3 IF *ECAF* REQUEST NOT SET
- RJM CEC CHECK IF REQUEST IS FOR THIS CHANNEL
- NJN ISR2 IF REQUEST IS NOT FOR THIS CHANNEL
- LJM ECA ENABLE CONTROLLER ACTIVITY
- ISR2 LDD CM+3 LOOK FOR A DIFFERENT REQUEST TO PROCESS
- SCN 1
- ERRNZ ECAF-12D CODE DEPENDS ON VALUE
- STD CM+3
- * CHECK FOR *LIST FIRMWARE REVISION* (*LMLF*) REQUEST.
- * IF REQUEST IS FOR OTHER CHANNEL, LOOK FOR DIFFERENT REQUEST.
- ISR3 LDD CM+3
- SHN 21-LMLF+LMLF/12D*12D
- PJN ISR4 IF *LMLF* REQUEST NOT SET
- LPN 77 ISOLATE CHANNEL NUMBER
- LMD IR+4
- ZJN ISR6 IF REQUEST FOR THIS DRIVER
- LDD CM+3 LOOK FOR A DIFFERENT REQUEST TO PROCESS
- LPN 37
- ERRNZ LMLF-17D CODE DEPENDS ON VALUE
- STD CM+3
- * IF RESTORE ALREADY IN PROGRESS FOR ANY DEVICE, LEAVE ANY
- * ADDITIONAL *RESTORE* REQUEST PENDING.
- ISR4 LDM RSDI
- ZJN ISR4.1 IF NO RESTORE IN PROGRESS
- LDD CM+3 CLEAR *RESTORE* SPECIAL REQUEST FLAG
- SCN 2
- ERRNZ RSPF-13D CODE DEPENDS ON VALUE
- STD CM+3
- * SEARCH FOR OTHER SPECIAL REQUEST.
- ISR4.1 LDD CM+3 ISOLATE SPECIAL REQUEST FLAGS
- STD T0
- ZJP ISRX IF NO SPECIAL REQUEST TO PROCESS
- LDN ECAF-1
- STD RW
- ISR5 AOD RW ADVANCE INDEX
- LDD T0
- SHN 21-0 CHECK NEXT FLAG
- STD T0
- PJN ISR5 IF NOT SET
- LDD RW
- UJN ISR7 SET SPECIAL REQUEST FLAG
- * PROCESS SPECIAL REQUEST.
- ISR6 LDC 6S6+LMLF BITS - 1 TO CLEAR / STARTING BIT
- ISR7 STM SREQ,DI SET SPECIAL REQUEST FLAG
- LPN 77
- SBN ECAF CALCULATE INDEX
- STD RW
- STM RWST,DI SAVE INDEX
- RJM SEO SET EST ORDINAL
- LDML ISRA,RW
- STDL PA SET PROCESSOR ADDRESS
- RJM IDU INTERLOCK DISK UNIT
- MJN ISR8 IF CHANNEL DOWN OR NOT ENABLED
- NJN ISR9 IF INTERLOCK NOT AVAILABLE
- LDML CTST,CI
- SHN 21-15
- MJN ISR10 IF CONTROLLER DEAD
- LJM 0,PA EXIT TO SPECIAL REQUEST
- * CHANNEL DOWN OR NOT ENABLED.
- ISR8 LDM SREQ,DI
- LMC 6S6+LMLF
- NJN ISR9 IF NOT LIST MICROCODE REVISION
- LDC 6S6+LMLF BITS - 1 TO CLEAR / STARTING BIT
- RJM CPF CLEAR SPECIAL REQUEST BIT IN *PUT*
- * INTERLOCK NOT AVAILABLE.
- ISR9 LDN 0
- STM SREQ,DI CLEAR SPECIAL REQUEST FLAG
- STM ADDR,DI CLEAR REENTRY ADDRESS
- STM ATTN,DI CLEAR INTERRUPT ADDRESS
- LJM DAS1 RETURN TO MAIN LOOP
- * CONTROLLER FAILURE.
- ISR10 LDN ECMD CONTROLLER DEAD
- RJM ERR PROCESS ERROR
- ISRA BSS 0 SPECIAL REQUEST PROCESSORS
- CONL CSR CLEAR FLAG (ENABLE CONTROLLER ACTIVITY)
- CONL IPR INITIATE PARITY RESTORE
- CONL CSR CLEAR FLAG (RESERVED)
- CONL LPS LIST PACK SERIAL NUMBER
- CONL CSR CLEAR FLAG (FORMAT REQUEST)
- CONL LMR LIST MICROCODE REVISION LEVEL
- ISRB BSS 0 INTERNAL SPECIAL REQUEST PROCESSORS
- CONL CDT CHECK DRIVE TYPE (INTERNAL REQUEST)
- LDP SPACE 4,25
- ** LDP - LOAD DEVICE PARAMETERS.
- *
- * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
- *
- * EXIT (A) = (EO) = EST ORDINAL.
- * (CB) = *CBT* ORDINAL.
- * (CI) = CONTROLLER STATE TABLE ADDRESS.
- * (CN) = CONTROLLER NUMBER.
- * (DD) = NUMBER OF DATA DRIVES IN DEVICE.
- * (DN) = DRIVE NUMBER.
- * (DT) = DRIVE TYPE.
- * (PA) = REQUEST IN PROGRESS ADDRESS.
- * (PD) = PARITY DEVICE FLAG.
- * (RW) = READ / WRITE FLAG.
- * (CM - CM+4) = *PILL* WORD OF *PUT* ENTRY.
- * (WB - WB+4) = *UNCT* WORD OF *PUT* ENTRY.
- *
- * USES CB, CI, CN, DD, DN, DT, PA, PD, RW, CM - CM+4,
- * WB - WB+4.
- *
- * CALLS SEO.
- *
- * MACROS PUTE.
- LDP SUBR ENTRY/EXIT
- LDM DVTP,DI
- LPN 77
- STD DT DRIVE TYPE
- LDML DM,DT
- SHN 0-17
- STD PD NONZERO IF PARITY DEVICE
- LDML DM,DT
- SHN 0-14
- LPN 7
- STD DD NUMBER OF DATA DRIVES IN DEVICE
- LDML PNUN,DI
- SHN -14
- SHN 2
- ERRNZ CSTBE-4 CODE DEPENDS ON VALUE
- ADC CSTB
- STD CI CONTROLLER STATE TABLE ADDRESS
- LDI DI
- ERRNZ PUTO CODE DEPENDS ON VALUE
- SHN PUTLS
- PUTE *
- ADC PILL GET INTERLOCK STATUS
- CRD CM
- SBN PILL-UNCT FETCH UNIT CONTROL WORD
- CRD WB
- LDD WB GET CONTROLLER AND UNIT NUMBER
- LPC 777
- SHN 21-5 EXTRACT CONTROLLER NUMBER
- STD CN
- SHN 5-21 ISOLATE DRIVE NUMBER
- STD DN
- LDM RWST,DI RESTORE READ / WRITE STATUS
- STD RW
- LDML ADDR,DI CURRENT PROCESSING ADDRESS
- STDL PA
- LDD WB+3 *CBT* ORDINAL
- STD CB
- RJM SEO SET EST ORDINAL
- UJP LDPX RETURN
- LMR SPACE 4,15
- ** LMR - LOG MICROCODE REVISION.
- *
- * ENTRY (CN) = CONTROLLER NUMBER.
- * (DN) = DRIVE NUMBER.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- * (DT) = DRIVE TYPE.
- *
- * EXIT TO *CSR* WHEN THE REQUEST IS COMPLETE.
- *
- * USES NR+2, NR+3, T3, T4, WB - WB+4.
- *
- * CALLS ATT, CHD, IBM, IDM, IDT, RCA.
- LMR BSS 0 ENTRY
- RJM RCA REPORT CONTROLLER ATTRIBUTES
- RJM IDT INPUT DATA TO PP
- * GENERATE MICROCODE REVISION ERRLOG MESSAGE.
- LDD CN SET CONTROLLER NUMBER IN BML MESSAGE
- STD NR+3
- ADC 2RM0 CONVERT FOR ERRLOG MESSAGE
- STM LMRB+6
- LDC LMRB+4 LOCATION FOR REVISION LEVEL
- STDL T3
- SBN LMRB+4-LMRA SET MESSAGE ADDRESS
- STML MAD1
- LDM ATTB+16 CONVERT REVISION LEVEL
- RJM CHD
- RJM IDM ISSUE MESSAGE TO ERRLOG
- * GENERATE MICROCODE REVISION BML MESSAGE.
- LDD MA MOVE MICROCODE REVISION LEVEL
- CWM LMRB,ON
- SBN 1 COPY TO BML MESSAGE
- CRD WB
- LDD IR+4 SET CHANNEL NUMBER
- STD NR+2
- LDN HI0104-HI0100
- RJM IBM ISSUE BML MESSAGE
- * LDN 0
- RJM ATT WAIT FOR COMPLETION RESPONSE
- LJM CSR CLEAR SPECIAL REQUEST FLAG
- LMRA CON 0,0,0,4,ELDY MICROCODE REVISION ERRLOG MESSAGE
- DATA 4HCH**
- LMRB DATA 10H MH427-D**
- DATA C+,CM0.+
- LND SPACE 4,15
- ** LND - LOCATE NEXT DRIVE (ON SPECIFIED CONTROLLER).
- *
- * ENTRY (A) = 0 TO LOCATE FIRST DRIVE OF STRING.
- * (CI) = CONTROLLER STATE TABLE ADDRESS.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- * (T7) = CURRENT *DST* ADDRESS, IF (A) .NE. 0.
- *
- * EXIT (A) = (T7) = DEVICE STATE TABLE ADDRESS OF NEXT DRIVE.
- * (A) = 0 IF NO MORE DRIVES (ON CONTROLLER).
- *
- * USES T7.
- LND2 LDM CTST,CI ADDRESS OF FIRST DRIVE IN STRING
- STD T7
- LND3 LDM PNUN,T7 VERIFY CONTROLLER
- LMM PNUN,DI
- SHN -6
- NJN LND1 IF NOT SPECIFIED CONTROLLER
- LDD T7
- LND SUBR ENTRY/EXIT
- ZJN LND2 IF INITIAL CALL
- LND1 LDN DSTBE
- RAD T7 ADVANCE DEVICE STATE TABLE ADDRESS
- LMM DASB
- NJN LND3 IF NOT END OF BLOCK
- * LDN 0
- UJN LNDX RETURN
- LNE SPACE 4,25
- ** LNE - LOCATE NEXT EST/PARTITION FOR THIS DEVICE.
- *
- * LOCATE NEXT EST ASSOCIATED WITH THE CURRENT DEVICE.
- *
- * ENTRY (A) .EQ. 0, START SEARCH WITH EST ORDINAL IN *PUT*.
- * (A) .NE. 0, (A) = LAST EST ORDINAL PROCESSED.
- * (DI) = DEVICE STATUS TABLE ADDRESS.
- * (EO) = CURRENT EST ORDINAL.
- *
- * EXIT (A) = (EO) = EST ORDINAL OF NEXT PARTITION.
- * (A) = 0, IF NO MORE PARTITIONS FOR THIS *PUT*.
- * (EO) = ORIGINAL EST ORDINAL (FROM *CBT*/*PUT*).
- *
- * USES EO, CM - CM+4.
- *
- * CALLS REE, SEO.
- *
- * MACROS PUTE.
- LNE3 RJM SEO SET EST ORDINAL FROM *CBT* OR *PUT*
- LNE4 LDN 0 INDICATE NO MORE PARTITIONS
- LNE SUBR ENTRY/EXIT
- ZJN LNE1 IF INITIAL ENTRY OF SEARCH
- STD EO SET EST ORDINAL
- LDML DVTP,DI
- SHN 21-17
- PJN LNE4 IF NOT PARTITIONED DEVICE
- UJN LNE2 LOCATE NEXT EST ORDINAL
- LNE1 LDI DI *PUT* ORDINAL FROM DEVICE STATE TABLE
- ERRNZ PUTO CODE DEPENDS ON VALUE
- SHN PUTLS
- PUTE *
- ADC UNCT GET FIRST EST FOR THIS *PUT*
- CRD CM
- SOD CM+1 SET STARTING EST ORDINAL FOR SEARCH
- STD EO
- LNE2 AOD EO
- LMC ** HIGHEST EST ORDINAL FOR THIS DRIVER (+1)
- LNEA EQU *-1
- ZJN LNE3 IF NO MORE *EST* ENTRIES TO CHECK
- RJM REE READ EST ENTRY
- LDD CM
- SHN 21-13
- PJN LNE2 IF NOT MASS STORAGE
- SHN 21-5-21+13
- PJN LNE2 IF NOT A BUFFERED DEVICE
- LDD CM+4
- SHN 3
- ADK DILL
- CRD CM
- LDD CM+2 GET *PUT* ORDINAL FROM *MST*
- LMI DI *PUT* ORDINAL FROM DEVICE STATE TABLE
- ERRNZ PUTO CODE DEPENDS ON VALUE
- NJN LNE2 IF NOT FOR THE DESIRED *PUT*
- LDD EO
- UJP LNEX RETURN NEXT EST ORDINAL
- LPS SPACE 4,15
- ** LPS - LOG PACK SERIAL NUMBER(S).
- *
- * ENTRY (CN) = CONTROLLER NUMBER.
- * (DN) = DRIVE NUMBER.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- * (DT) = DRIVE TYPE.
- *
- * EXIT TO *CSR* WHEN THE REQUEST IS COMPLETE.
- *
- * USES NR+2, NR+3, T3, T4, WB - WB+4.
- *
- * CALLS ATT, CAN, C2D, IBM, IDM, IDT, SOU, UPD.
- LPS BSS 0 ENTRY
- LDD DN
- STM PHYD,DI PHYSICAL DRIVE NUMBER
- LDC C0200 REPORT ATTRIBUTES OPERATION CODE
- RJM SOU SET OPERATION CODE AND UNIT
- LDC P036C REQUEST ATTRIBUTE PARAMETER
- STM CPBF+FCP
- LDC 0#8050 RETURN ATTRIBUTE ID 50 AS DATA
- STML CPBF+FCP+1
- LDN 12 COMMAND PACKET LENGTH
- RJM IDT INPUT DATA TO PP
- LDC ATTB+0#1E SET ADDRESS OF FIRST PACK SERIAL NUMBER
- STDL T4
- * GENERATE PACK SERIAL NUMBER ERRLOG MESSAGE.
- LPS1 LDC LPSB+2 SET ADDRESS FOR CONVERSION
- STDL T3
- SBN LPSB+2-LPSA DEFINE MESSAGE ADDRESS
- STML MAD1
- RJM CAN CONVERT ASCII NUMBER TO DISPLAY CODE
- LDN 11
- RADL T4 UPDATE POINTER TO NEXT SERIAL NUMBER
- LDM PHYD,DI
- STD NR+3 PUT UNIT NUMBER IN BML MESSAGE
- RJM C2D CONVERT UNIT NUMBER FOR ERRLOG MESSAGE
- STM LPSA+11
- LDD EO CONVERT EST ORDINAL
- SHN -3
- RJM C2D
- STM LPSA+6 INSERT IN ERRLOG MESSAGE
- LDM DM,DT
- STM LPSA+5 SAVE DEVICE MNEMONIC
- STD NR+2
- LDD EO
- LPN 7 CONVERT LOWER DIGIT
- SHN 6
- ADC 2R0, ADD TO ERRLOG MESSAGE
- STM LPSA+7
- RJM IDM ISSUE MESSAGE TO ERRLOG
- * GENERATE PACK SERIAL NUMBER BML MESSAGE.
- LDD MA MOVE DRIVE SERIAL NUMBER
- CWM LPSB,ON
- SBN 1 COPY TO BML MESSAGE
- CRD WB
- LDD EO INSERT EST ORDINAL
- STD WB
- LDN 0 CLEAR UNUSED FIELD
- STD WB+1
- RJM IBM ISSUE BML MESSAGE
- RJM UPD UPDATE PHYSICAL DRIVE
- NJP LPS1 IF MORE PHYSICAL DRIVES
- * LDN 0
- RJM ATT WAIT FOR COMPLETION RESPONSE
- LJM CSR CLEAR SPECIAL REQUEST FLAG
- LPSA CON 0,0,0,4,ELDY PACK SERIAL NUMBER ERRLOG MESSAGE
- DATA 10H*****, U**
- LPSB DATA C+,PS=******.+
- LSD SPACE 4,15
- ** LSD - LOCATE SELECTED DRIVE IN *DSTB*.
- *
- * ENTRY (T4) = DRIVE NUMBER.
- *
- * EXIT (A) = 0 IF NO RESPONSE EXPECTED.
- * = DEVICE STATE TABLE ADDRESS FOR DRIVE.
- *
- * CALLS LND.
- LSD SUBR ENTRY/EXIT
- LDN 0
- UJN LSD2 LOCATE FIRST DRIVE
- LSD1 LDN 1
- LSD2 RJM LND
- ZJN LSDX IF END OF DRIVE STRING
- LDD FC
- NJN LSD3 IF FORMAT COMPLETE
- LDML ATTN,T7
- ZJN LSD1 IF RESPONSE NOT EXPECTED
- UJN LSD4
- LSD3 LDM PNUN,T7
- LPN 77 CHECK DRIVE NUMBER
- LMD T4
- NJN LSD1 IF SPECIFIED DRIVE NOT FOUND
- LSD4 LDD T7
- UJN LSDX RETURN
- PEF SPACE 4,15
- ** PEF - PROCESS ERROR FLAGS.
- *
- * ENTRY (RW) = ERROR INDEX.
- * (CB) = *CBT* ORDINAL.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- * (DN) = DRIVE NUMBER.
- * (T1) = BYTE 0 OF *PAD4* WORD OF CBT ENTRY.
- * (T2) = BYTE 0 OF *HSLK* WORD OF CBT ENTRY.
- * (NR - NR+4) = *PAD1* WORD OF *CBT* ENTRY.
- *
- * EXIT (A) = 0 IF OK TO INITIATE I/O.
- * TO (0,PA) TO PROCESS A CHANNEL SPECIFIC READ OR
- * WRITE REQUEST. AFTER SUSPECT STATE IS SET, THE
- * REQUEST BECOMES CHANNEL SPECIFIC.
- * TO *CMP10* IF ERROR IN PROGRESS ON A DIFFERENT DEVICE.
- *
- * CALLS IDU, IIO, LDP, SEP.
- PEF1 LDN 0 INDICATE I/O IN ORDER
- PEF SUBR ENTRY/EXIT
- LDD T1
- SHN -6 CHECK CHANNEL NUMBER
- LMD IR+4
- NJN PEFX IF I/O DISABLED ON THIS ACCESS
- LDD RW
- ZJN PEFX IF *1MV* DEVICE VERIFICATION
- LDM ERFL
- LMD DI
- ZJN PEFX IF ERROR IN PROGRESS ON THIS DEVICE
- LDML CTST,CI
- SHN 21-15
- MJN PEF1 IF CONTROLLER DEAD
- LDML ERCT,DI
- NJN PEF1 IF I/O INITIATED
- RJM IDU INTERLOCK DEVICE
- NJN PEFX IF INTERLOCK NOT AVAILABLE
- LDN CSRC
- STM ERCT,DI SET INITIAL ERROR COUNT
- RJM LDP LOAD DEVICE PARAMETERS
- LDD CM+1
- SHN -6 FAILING DRIVE NUMBER
- STM PHYD,DI FOR RECOVERED ERROR REPORTING
- RJM SEP SET ERROR PROCESSING INTERLOCK
- NJP CMP10 IF ERROR IN PROGRESS ON A DIFFERENT DEVICE
- LDD CB INITIATE I/O
- RJM IIO
- LJM 0,PA EXIT TO PROCESSOR
- PLP SPACE 4,20
- ** PLP - PROCESS LOST PARITY.
- *
- * PLP HANDLES *PROCESS LOST PARITY* CONDITIONS, PROVIDED THAT
- * THE DEVICE HAS BEEN RECOVERED. IF IT HAS, PLP SETS THE UNIT
- * NUMBER AND THE *PARITY PROTECTION LOST* FLAG IN MST WORD
- * *ACGL*, SO THAT THE THE E,E DISPLAY ON EACH MAINFRAME WILL
- * SHOW WHICH DRIVE IS OFF-LINE.
- *
- * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
- * (EO) = EST ORDINAL.
- *
- * USES CM - CM+4.
- *
- * CALLS CDS, IEE, LNE.
- *
- * MACROS MONITOR, SMSTF.
- PLP4 LDC ** (COUNT OF NEW PARTITIONS PROCESSED)
- PLPA EQU *-1
- ZJN PLP5 IF NO NEW PARTITIONS PROCESSED
- RJM IEE ISSUE E,E EVENT
- PLP5 LDC ** (COUNT OF UNPROCESSED PARTITIONS LEFT)
- PLPB EQU *-1
- NJN PLPX IF NOT ALL PARTITIONS PROCESSED
- LDML DVTP,DI CLEAR *PROCESS LOST PARITY* FLAG
- LPC 137777
- STML DVTP,DI
- PLP SUBR ENTRY/EXIT
- LDML DVTP,DI
- SHN 21-16
- PJN PLPX IF *PROCESS LOST PARITY* NOT SET
- LDN 0 CLEAR PARTITION COUNTS
- STM PLPA
- STM PLPB
- * LDN 0 INITIALIZE PARTITION SEARCH
- PLP1 RJM LNE LOCATE NEXT EST FOR THIS DEVICE
- ZJN PLP4 IF NO MORE PARTITIONS
- RJM CDS CHECK DEVICE STATUS
- MJN PLP2 IF DEVICE NOT RECOVERED
- LDD CM+4 CHECK IF *PARITY LOST* FLAG ALREADY SET
- SHN 3
- ADN ACGL
- CRD CM
- LDD CM+4
- SHN 21-2
- MJN PLP3 IF PARTITION ALREADY PROCESSED
- LDD EO SET EST ORDINAL
- STD CM+1
- LDM OUPD,DI OFFLINE UNIT OF PARITY DEVICE
- STD CM+2
- LDN SOUS SET OFFLINE UNIT IN *ACGL*
- STD CM+3
- MONITOR STBM
- SMSTF GDPL SET *PARITY PROTECTION LOST* IN *ACGL*
- AOM PLPA INDICATE NEW PARTITION PROCESSED
- UJN PLP3 PROCESS NEXT PARTITION
- PLP2 AOM PLPB INCREMENT UNPROCESSED PARTITION COUNT
- PLP3 LDD EO
- UJP PLP1 PROCESS NEXT PARTITION
- PPE SPACE 4,10
- ** PPE - PROCESS PARITY ENABLE.
- *
- * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
- * (EO) = EST ORDINAL.
- *
- * EXIT (DVTP,DI) BIT 10 CLEAR, IF PROCESSING COMPLETE.
- * (DVTP,DI) BIT 7 SET, IF PROCESSING COMPLETE.
- *
- * CALLS EMP.
- PPE SUBR ENTRY/EXIT
- LDML DVTP,DI
- SHN 21-12
- PJN PPEX IF *ENABLE MMF PARITY ACCESS* NOT SET
- RJM EMP ENABLE MMF PARITY DEVICE ACCESS
- NJN PPEX IF NOT ALL PARTITIONS PROCESSED
- LDML DVTP,DI CLEAR *ENABLE MMF PARITY ACCESS* FLAG
- LPC 175577
- LMC 200 SET *CHECK MMF PARITY ACCESS* FLAG
- STML DVTP,DI
- UJN PPEX RETURN
- RBD SPACE 4,10
- ** RBD - READ *BDLL*.
- *
- * ENTRY (EO) = EST ORDINAL.
- *
- * EXIT (CM - CM+4) = *BDLL* WORD OF MST.
- *
- * USES CM - CM+4.
- *
- * CALLS REE.
- RBD SUBR ENTRY/EXIT
- RJM REE READ EST ENTRY
- LDD CM+4
- SHN 3
- ADN BDLL
- CRD CM
- UJN RBDX RETURN
- RCA SPACE 4,10
- ** RCA - REPORT CONTROLLER ATTRIBUTES.
- *
- * ENTRY (CN) = CONTROLLER NUMBER.
- *
- * EXIT PARAMETERS SET UP FOR *IDT* CALL.
- *
- * CALLS SOC.
- RCA SUBR ENTRY/EXIT
- LDC C0200 REPORT ATTRIBUTES OPERATION CODE
- RJM SOC SET OPERATION CODE AND CONTROLLER
- LDC P036C REQUEST ATTRIBUTE PARAMETER
- STM CPBF+FCP
- LDC 0#8050 RETURN ATTRIBUTE ID 50 AS DATA
- STML CPBF+FCP+1
- LDN 12 COMMAND PACKET LENGTH
- UJN RCAX RETURN
- RCT SPACE 4,10
- ** RCT - READ CHANNEL TABLE.
- *
- * EXIT (A) = CHANNEL TABLE STATUS BYTE.
- *
- * USES NR - NR+4.
- *
- * MACROS CHTE.
- RCT SUBR ENTRY/EXIT
- CHTE *
- LDC 0 READ CHANNEL TABLE ENTRY
- CRD NR
- RCTA LDD NR
- UJN RCTX RETURN
- RDO SPACE 4,15
- ** RDO - REPORT DRIVE OFF-LINE.
- *
- * RDO SETS THE *PROCESS LOST PARITY* FLAG SO THAT MST WORD
- * *ACGL* WILL BE UPDATED WHEN THE DEVICE HAS BEEN RECOVERED.
- *
- * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
- *
- * CALLS PLP.
- RDO SUBR ENTRY/EXIT
- LDML DVTP,DI SET *PROCESS LOST PARITY* FLAG
- LPC 137777
- LMC 40000
- STML DVTP,DI
- RJM PLP PROCESS LOST PARITY
- UJN RDOX RETURN
- REE SPACE 4,10
- ** REE - READ EST ENTRY.
- *
- * ENTRY (EO) = EST ORDINAL.
- *
- * EXIT (A) = ADDRESS OF *EQDE* WORD OF EST ENTRY.
- * (CM - CM+4) = *EQDE* WORD OF EST ENTRY.
- *
- * USES CM - CM+4.
- *
- * MACROS SFA.
- REE SUBR ENTRY/EXIT
- SFA EST,EO
- ADK EQDE
- CRD CM
- UJN REEX RETURN
- RLB SPACE 4,15
- ** RLB - READ LINKAGE BITS.
- *
- * ENTRY (T6) = ADDRESS FOR LINKAGE.
- * (PB) = CONTROL BUFFER ORDINAL.
- * (T1) = DATA BUFFER ADDRESS.
- * (T2) = CONTROL BUFFER WORD NUMBER.
- * (CM - CM+4) = *PAD* WORD OF *CBT* ENTRY.
- *
- * EXIT SECTOR LINKAGE SET IN *CBT* ENTRY.
- *
- * USES T1, T6.
- *
- * MACROS CBTE.
- RLB1 LDN 10+4 ADVANCE BUFFER ADDRESS
- RADL T1
- LDIL T1 EXTRACT LINKAGE FROM BUFFER
- RLB2 SHN -14
- SHN 10 POSITION FOR *CBT* ENTRY
- STI T6
- LDML 4,T1 EXTRACT LINKAGE FROM BUFFER
- SHN -14
- SHN 4 POSITION FOR *CBT* ENTRY
- RAI T6
- LDML 10,T1 EXTRACT LINKAGE FROM BUFFER
- SHN -14
- * SHN 0 POSITION FOR *CBT* ENTRY
- RAI T6
- AOD T6 ADVANCE *CBT* WORD ADDRESS
- LMN CM+5
- NJN RLB1 IF MORE LINKAGE
- LDD PB
- SHN CBTLS
- CBTE *
- ADC 0 FWA OF *CBT*
- ADD T2
- CWD CM UPDATE CONTROL BUFFER ENTRY
- RLB SUBR ENTRY/EXIT
- UJN RLB2 MOVE SECTOR LINKAGE
- RMR SPACE 4,10
- ** RMR - READ CHANNEL STATUS REGISTER.
- *
- * EXIT (A) = 0 IF NO CHANNEL ERROR.
- * (RBUF) = REGISTER CONTENTS.
- *
- * CALLS WMC.
- RMR SUBR ENTRY/EXIT
- FNC. IOUC,MR
- ACN. MR ACTIVATE MAINTENANCE CHANNEL
- LDN 0
- OAN. MR OUTPUT NULL PARAMETER
- CON LDCI
- IAN CH (FORCE CHANNEL TABLE ENTRY)
- ORG *-1
- CON RCSR+CH TRANSMIT REGISTER NUMBER
- OAN. MR
- RJM WMC WAIT CHANNEL EMPTY
- DCN. MR+40
- NJN RMRX IF CHANNEL HUNG FULL
- ACN. MR
- LDN RBUFL READ CHANNEL STATUS REGISTER
- IAM. RBUF,MR
- UJN RMRX RETURN
- RND SPACE 4,15
- ** RND - RUN DIAGNOSTICS.
- *
- * NOTE - THE DRIVE MUST BE CLUSTERED TO RUN DIAGNOSTICS.
- * THE CODE WILL NOT RUN DIAGNOSTICS IF A FORMAT
- * REQUEST IS PRESENT TO ENSURE THIS ROUTINE IS ONLY
- * RUN WHEN THE DRIVE IS CLUSTERED.
- *
- * ENTRY (PHYD,DI) = DRIVE TO RUN DIAGNOSTICS.
- * (FC) = 0 IF FORMAT NOT COMPLETE.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- *
- * EXIT TO *ERR* IF ERROR.
- *
- * CALLS ATT, SOU, WCB.
- RND SUBR ENTRY/EXIT
- LDD FC
- ZJN RNDX IF FORMAT NOT COMPLETE
- LDML EDBF+FALT
- SBN EDPE
- ZJN RND1 IF MEDIA ERROR
- SBN EIVR-EDPE
- ZJN RND1 IF ID24
- SBN EMEX-EIVR
- NJN RNDX IF NOT ID26
- RND1 STM ERRA ENABLE LOGGING OF ERROR RESPONSE
- LDC C8100 DRIVE DIAGNOSTIC COMMAND
- RJM SOU SET OPERATION CODE AND UNIT
- LDC P02D5
- STML CPBF+FCP PARAMETER TO SELECT DRIVE
- LDM PHYD,DI
- SHN 10
- STML CPBF+FCP+1 PHYSICAL DRIVE NUMBER
- LDN 12 WRITE COMMAND PACKET
- RJM WCB
- LDN CMSS PROCESS ATTENTION
- RJM ATT
- ZJP RNDX IF DIAGNOSTICS COMPLETED SUCCESSFULLY
- LCN EDTF DIAGNOSTIC FAULT
- RJM ERR PROCESS ERROR
- ROD SPACE 4,20
- ** ROD - RESTORE OFF-LINE DRIVE.
- *
- * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
- * (DT) = DRIVE TYPE.
- *
- * EXIT TO CALLER IF NO RESTORE OR NOT TIME TO RESTORE.
- * TO *CMP* IF RESTORE CYLINDER COMMAND COMPLETE.
- * TO *ERR* IF ERROR.
- *
- * USES T1.
- *
- * CALLS ATT, CLP, CRP, CSC, IDM, IEM, LNE, SOU, WCB.
- *
- * MACROS MONITOR.
- ROD10 LDDL MS
- LMC 0#42
- NJN ROD11 IF NOT CONDITIONAL SUCCESS
- LDDL PA SET INTERRUPT REENTRY ADDRESS
- STML ATTN,DI EXPECT A COMMAND COMPLETE RESPONSE
- ROD11 LCN EROD RESTORE OFF-LINE DRIVE ERROR
- UJN ROD13 PROCESS ERROR
- ROD12 LDN ECMD CONTROLLER DEAD
- ROD13 RJM ERR PROCESS ERROR
- ROD SUBR ENTRY/EXIT
- LDM RSDI CHECK IF RESTORE IN PROGRESS
- LMD DI
- NJN RODX IF NO RESTORE IN PROGRESS ON THIS DEVICE
- LDM RMUX
- NJN RODX IF NOT TIME TO RESTORE A CYLINDER
- LDML CTST,CI
- SHN 21-15
- MJN ROD12 IF CONTROLLER DEAD
- * RESTORE NEXT CYLINDER.
- LDC CE005 RESTORE OPERATION CODE
- RJM SOU SET OPERATION CODE AND UNIT
- RJM CSC COMPUTE SECTOR COUNT
- LDC P0931
- STML CPBF+FCP COMMAND EXTENT PARAMETER
- LDC P02D5
- STML CPBF+FCP+5 PHYSICAL DRIVE PARAMETER
- LDM OUPD,DI
- STM PHYD,DI
- SHN 10
- STML CPBF+FCP+6 PHYSICAL DRIVE PARAMETER
- LDC 0#2E3
- STML CPBF+FCP+7 RESTORE OPTION PARAMETER
- LDM RCYL
- STM CPBF+FCP+3 CYLINDER TO RESTORE
- STM CYLN,DI FOR ERROR LOGGING
- LMM CYUN,DT CHECK FOR LAST CYLINDER
- NJN ROD1 IF NOT LAST CYLINDER
- LDC 0#901
- STML CPBF+FCP NO OP EXTENT PARAMETER
- LDC 0#100
- UJN ROD2 ON LINE DRIVE
- ROD1 LDC 0#200 RESTORE DRIVE
- ROD2 STML CPBF+FCP+10
- LDN 30 COMMAND PACKET LENGTH
- RJM WCB WRITE COMMAND PACKET
- LDN CMSS
- RJM ATT PROCESS ATTENTION
- NJP ROD10 IF ERROR
- STM RTSN NEXT TRACK, SECTOR TO RESTORE
- LDML RMUX
- SHN 21-17
- MJN ROD3 IF MULTIPLEXING DISABLED
- LDN IRBR
- STM RMUX I/O REQUESTS BEFORE NEXT RESTORE
- * CALCULATE REMAINING CYLINDERS.
- ROD3 LDM CYUN,DT CALCULATE REMAINING CYLINDERS / 100B
- SBM RCYL
- ADN 77
- SHN -6
- STD T1
- LMC ** (VALUE PREVIOUSLY CALCULATED)
- RODA EQU *-1
- ZJN ROD5 IF VALUE HAS NOT CHANGED
- LDN 0 INITIALIZE PARTITITON SEARCH
- ROD4 RJM LNE LOCATE NEXT EST FOR THIS DEVICE
- ZJN ROD5 IF NO MORE PARTITIONS
- STD CM+1 SET EST ORDINAL
- LDD T1 REMAINING CYLINDERS / 100B
- STM RODA
- STD CM+2
- LDN SRCS SET REMAINING CYLINDERS / 100B IN *ACGL*
- STD CM+3
- MONITOR STBM
- LDD EO
- UJN ROD4 PROCESS NEXT PARTITION
- ROD5 AOM RCYL INCREMENT CYLINDER TO RESTORE
- SBM CYUN,DT CYLINDERS REMAINING
- MJN ROD6 IF MORE CYLINDERS TO RESTORE
- NJN ROD7 IF NO MORE CYLINDERS TO RESTORE
- ROD6 LJM CMP COMPLETION PROCESSING
- * RESTORE COMPLETE.
- ROD7 RJM CRP CLEAR *RESTORE IN PROGRESS* FLAGS
- RJM CLP CLEAR *LOST PARITY* FLAGS
- LDM OUPD,DI DRIVE JUST RESTORED
- STM PHYD,DI
- LDN EROD RESTORE COMMAND
- STM EDBF+CODE
- LDC PDPE PARITY DRIVE PROTECTION ENABLED
- STM EDBF+FALT FINAL FAULT CODE
- LDN 0
- STM EDBF+FCS1
- STM EDBF+FCS2
- STM EDBF+FCS3
- * LDN 0 INITIALIZE PARTITION SEARCH
- ROD8 RJM LNE LOCATE NEXT EST FOR THIS DEVICE
- ZJN ROD9 IF NO MORE PARTITIONS
- LDC ERPR *EQXXX, UXX, PARITY PROTECTION RESTORED.*
- RJM IEM ISSUE ERROR LOG MESSAGE
- LDD EO
- UJN ROD8 PROCESS NEXT PARTITION
- ROD9 LDN 4
- STM MSGL+1 SET BASIC MESSAGE LENGTH
- AOM ERCT,DI
- LDD HN
- ERRNZ HD0100-100 CODE DEPENDS ON VALUE
- RJM IDM ISSUE *PARITY RESTORED* BML MESSAGE
- LJM CMP COMPLETION PROCESSING
- RCYL CON 0 CURRENT CYLINDER BEING RESTORED
- RMUX CON 0 1/X, 15/Y WHERE
- X = 0 IF MULTIPLEXING ALLOWED
- Y = REQUESTS TO MULTIPLEX PER RESTORE
- RSDI CON 0 RESTORE IN PROGRESS FLAG (*DST* INDEX)
- RSIN CON 0 RESTORE INTERLOCK FLAG (*DST* INDEX)
- RTSN CON 0 6 / RESTORE TRACK, 6 / RESTORE SECTOR
- SCD SPACE 4,15
- ** SCD - STORE *CPD* DATA.
- *
- * ENTRY (A) = 0 TO INDICATE CHANNEL INACTIVE.
- * = 1 TO INDICATE CHANNEL ACTIVE.
- * (UC) = UNIT ACTIVITY COUNT.
- *
- * EXIT (T7) = 0.
- *
- * USES CM - CM+2, T5 - T7.
- *
- * MACROS CCTE.
- SCD SUBR ENTRY/EXIT
- STD T5
- LDN ZERL CLEAR UNUSED BYTES
- CRD T6
- LDD UC INSERT UNIT COUNT
- STD T6
- CCTE *
- LDC CREQ STORE *CPD* DATA
- CWD T5
- UJN SCDX RETURN
- SCP SPACE 4,10
- ** SCP - SET COMMAND PARAMETER.
- *
- * ENTRY (A) = COMMAND PARAMETER.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- * (DDTA) = TOTAL NUMBER OF DRIVES IN LOGICAL UNIT.
- *
- * EXIT (A) = 0 IF 1X DRIVE.
- * (CPBF+CUN) = LOGICAL ADDRESS.
- SCP SUBR ENTRY/EXIT
- STML CPBF+FCP
- LDML DDTA TOTAL DRIVES
- LMN 1
- ZJN SCPX IF SINGLE DRIVE
- LDML CPBF+CUN
- SCN 0#38
- STML CPBF+CUN ENSURE STRING BIT CLEAR
- LDN 1
- UJN SCPX RETURN
- SDO SPACE 4,15
- ** SDO - SET DRIVE OFF-LINE.
- *
- * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
- * (EO) = EST ORDINAL.
- * (PD) = 0, IF NOT PARITY DEVICE.
- * (CPEA) = 0 IF DRIVE SHOULD BE SET OFF-LINE.
- * (PHYD,DI) = FAILING DRIVE.
- *
- * EXIT TO CALLER IF NO DRIVE TO SET OFF-LINE.
- * TO *CMP10* WITH *ERCT* CLEAR IF DRIVE SET OFF-LINE.
- * TO *ERR* IF ERROR.
- *
- * CALLS ATT, CRP, IDM, IEM, LNE, RDO, SOU, WCB.
- SDO SUBR ENTRY/EXIT
- LDD PD
- ZJN SDOX IF NOT PARITY DEVICE
- LDM CPEA
- NJN SDOX IF NO DRIVE TO SET OFF-LINE
- STM ERRA ENABLE LOGGING OF ERROR
- RJM CRP CLEAR *RESTORE IN PROGRESS*, IF SET
- LDC C0209 LOAD ATTRIBUTE OPERATION CODE
- RJM SOU SET OPERATION CODE AND UNIT
- LDC P02D5
- STML CPBF+FCP PARAMETER WITH FAILING DRIVE NUMBER
- LDM PHYD,DI
- STM OUPD,DI OFFLINE DRIVE UNIT NUMBER
- SHN 10
- STML CPBF+FCP+1 FAILING DRIVE NUMBER
- LDC 0#1D9
- STML CPBF+FCP+2 PARAMETER TO SET OFF-LINE DRIVE
- LDN 14 COMMAND PACKET LENGTH
- RJM WCB WRITE COMMAND BLOCK
- LDN CMSS
- RJM ATT WAIT FOR ATTENTION
- ZJN SDO1 IF SUCCESSFUL
- LCN ERDA REPORT DRIVE ATTRIBUTES ERROR
- RJM ERR PROCESS ERROR
- * *HPA* DOES NOT DISPLAY THE DATA WITH SYMPTOM 0111 WHEN THE
- * ERROR IS RECOVERABLE, SO TWO MESSAGES ARE ISSUED TO THE BML.
- SDO1 AOM ERCT,DI
- LCN 0
- STM EDBF+FCS2 INDICATE NO RESPONSE FOR HPA
- LDC PDPD PARITY DRIVE PROTECTION DISABLED
- STM EDBF+FALT FINAL FAULT CODE
- LDD HN
- ERRNZ HD0100-100 CODE DEPENDS ON VALUE
- RJM IDM ISSUE INITIAL BML MESSAGE
- LDN 3
- STM MSGL+1 MESSAGE LENGTH
- LDC HD0111
- RJM IDM ISSUE FINAL BML MESSAGE
- STM ERCT,DI CLEAR ERROR COUNT
- * LDN 0 INITIALIZE PARTITION SEARCH
- SDO2 RJM LNE LOCATE NEXT EST FOR THIS DEVICE
- ZJN SDO3 IF NO MORE PARTITIONS
- LDC ERPD *EQXXX, UXX, PARITY PROTECTION DISABLED.*
- RJM IEM ISSUE ERROR LOG MESSAGE
- LDD EO
- UJN SDO2 PROCESS NEXT PARTITION
- SDO3 RJM RDO REPORT DRIVE OFF-LINE
- LJM CMP10 ABANDON REQUEST (RETRY LATER)
- SDT SPACE 4,10
- ** SDT - SET DATA TRANSFER MODE.
- *
- * ENTRY (TM) = 0 TO STREAM DATA.
- *
- * EXIT TO *ERR* IF ERROR.
- *
- * CALLS ATT, SOC, WCB.
- SDT SUBR ENTRY/EXIT
- LDC C0209 LOAD ATTRIBUTE OPERATION CODE
- RJM SOC SET OPERATION CODE AND CONTROLLER
- LDC 0#46E
- STML CPBF+FCP PARAMETER 6E
- LDDL TM
- ADC 0#C080
- STML CPBF+FCP+1 MODE FOR DATA
- LDN 0
- STML CPBF+FCP+2
- LDN 14 COMMAND PACKET LENGTH
- RJM WCB WRITE COMMAND PACKET
- LDN CMSS
- RJM ATT PROCESS ATTENTION
- ZJP SDTX IF SUCCESSFUL
- LCN ELCA LOAD CONTROLLER ATTRIBUTES FAILURE
- RJM ERR PROCESS ERROR
- SEC SPACE 4,15
- ** SEC - SET ERROR CODE.
- *
- * ENTRY (CI) = CONTROLLER STATE TABLE ADDRESS.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- * (EO) = EST ORDINAL.
- *
- * USES RF, T5, UC, WB+3, WB+4.
- *
- * CALLS CAC, CEA, CEC, CFM, CPF, CRP, DCE, DRT, IMR, IOM, LDP.
- * THE *SETS* MONITOR REQUEST IS USED TO MOVE THE I/O REQUEST
- * TO AN ALTERNATE CHANNEL. THE I/O BUFFER IS ONLY DELINKED
- * IF THE REQUEST IS CHANNEL SPECIFIC.
- SEC6 LDM RSDI CHECK IF RESTORE IN PROGRESS
- LMD DI
- NJN SEC7 IF NO RESTORE IN PROGRESS ON THIS DEVICE
- LDC 100000
- STML RMUX DISABLE REQUEST MULTIPLEXING
- UJN SECX RETURN
- SEC7 LDN 1 BUFFER COUNT TO BE DELINKED
- STD WB+3
- LDN SETS INSERT CODE IN *CBT*, RELEASE INTERLOCK
- RJM IMR
- * LDN 0 SET INTERLOCK RELEASED (FOR *CMP*)
- STM RQLN,DI
- SOD UC DECREMENT UNIT ACTIVITY COUNT
- SEC SUBR ENTRY/EXIT
- LDN 0
- STD RF CLEAR RESET IN PROGRESS FLAG
- RJM IOM CLEAR OPERATOR MESSAGE
- RJM LDP LOAD DEVICE PARAMETERS
- LDML EDBF+FALT
- SHN -2 CREATE INDEX FROM FAULT CODE
- STD T5
- LDM TMSE,T5
- STD WB+4 SET MASS STORAGE ERROR CODE
- RJM DRT DETERMINE REQUEST TYPE
- NJP SEC6 IF I/O REQUEST
- LDML CTST,CI
- SHN 21-15
- MJN SEC1 IF CONTROLLER DEAD
- SHN -21+15+22
- LPC 137777 CLEAR RESET FLAG (BIT 14)
- STML CTST,CI
- SEC1 RJM CRP CLEAR *RESTORE IN PROGRESS*
- RJM LDP LOAD DEVICE PARAMETERS
- LDD CM+3
- SHN 21-LMLF+14
- PJN SEC2 IF *LIST MICROCODE REVISION* NOT SET
- LPN 77
- LMD IR+4
- NJN SEC2 IF REQUEST NOT FOR THIS DRIVER
- LDC 6S6+LMLF BITS - 1 TO CLEAR / STARTING BIT
- RJM CPF CLEAR SPECIAL REQUEST BIT IN *PUT*
- SEC2 RJM LDP LOAD DEVICE PARAMETERS
- LDD CM+3
- SHN 21-ECAF+14
- PJN SEC3 IF *ENABLE CONTROLLER ACTIVITY* NOT SET
- RJM CEC CHECK IF REQUEST IS FOR THIS CHANNEL
- NJN SEC3 IF REQUEST IS NOT FOR THIS CHANNEL
- RJM CEA CLEAR REQUEST
- SEC3 RJM CAC CHECK FOR ALTERNATE CHANNEL
- NJN SEC4 IF NO ALTERNATE CHANNEL
- RJM DCE DOWN CHANNEL ON EQUIPMENT
- UJN SEC5 COMPLETE PROCESSING
- SEC4 LDC 3S6+ECAF+1 BITS - 1 TO CLEAR / STARTING BIT
- RJM CPF CLEAR SPECIAL REQUEST BITS IN *PUT*
- RJM CFM ENSURE *FORMAT PENDING* CLEARED IN MST
- SEC5 LJM SECX RETURN
- SEO SPACE 4,15
- ** SEO - SET EST ORDINAL.
- *
- * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
- * (CB) = CBT ORDINAL.
- *
- * EXIT (A) = (EO) = EST ORDINAL.
- *
- * USES EO, CW - CW+4.
- *
- * CALLS DRT.
- *
- * MACROS CBTE, PUTE.
- SEO1 LDD CW+1 GET EST ORDINAL FROM *PUT*
- SEO2 STD EO SET EST ORDINAL
- SEO SUBR ENTRY/EXIT
- LDI DI
- ERRNZ PUTO CODE DEPENDS ON VALUE
- SHN PUTLS
- PUTE *
- ADC UNCT FETCH UNIT CONTROL WORD
- CRD CW
- RJM DRT DETERMINE REQUEST TYPE
- ZJN SEO1 IF NOT I/O REQUEST
- LDD CB *CBT* ORDINAL
- SHN CBTLS
- CBTE *
- ADC FSTC
- CRD CW GET EST ORDINAL FROM *CBT*
- LDD CW
- UJN SEO2 SET EST ORDINAL AND RETURN
- SEP SPACE 4,30
- ** SEP - SET ERROR PROCESSING INTERLOCK.
- *
- * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
- * (EO) = EST ORDINAL.
- *
- * EXIT (A) .EQ. 0, IF INTERLOCK SET FOR THIS DEVICE.
- * (A) .NE. 0, IF ALREADY SET FOR A DIFFERENT DEVICE.
- * (ERFL) = DEVICE STATE TABLE OF DEVICE WITH ERROR.
- * TO *CMP10*, IF RESTORE IN PROGRESS ON OTHER MF.
- *
- * USES T1, CM - CM+4.
- *
- * CALLS CBI, CDS, CMR, DAS, LNE, SEO, UBP.
- *
- * MACROS DELAY, SMSTF, MONITOR.
- SEP CON 0 ENTRY
- LDML SEP SAVE RETURN ADDRESS
- STML SEPR,DI
- SEP1 LDM ERFL
- ZJN SEP3 IF ERROR PROCESSING FLAG NOT SET
- SEP2 LDML SEPR,DI GET RETURN ADDRESS
- STDL T1
- LDM ERFL RETURN (A) = 0 IF ERROR IS ON THIS DEVICE
- LMD DI
- LJM 0,T1 RETURN
- * SET MMF ERROR PROCESSING INTERLOCKS, IF REQUIRED.
- SEP3 LDML DVTP,DI
- SHN 21-11
- PJN SEP6 IF NOT SHARED DEVICE
- LDN 0 INITIALIZE PARTITION SEARCH
- SEP4 RJM LNE LOCATE NEXT EST FOR THIS DEVICE
- ZJN SEP6 IF NO MORE PARTITIONS TO PROCESS
- RJM CDS CHECK DEVICE STATUS
- MJP SEP10 IF DEVICE NOT RECOVERED
- * DEVICE RECOVERED. SET ERROR INTERLOCK IN *BDT*.
- LDD EO SET EST ORDINAL
- STD CM+4
- LDN SEPS SET ERROR PROCESSING INTERLOCK IN *BDT*
- STD CM+1
- MONITOR MTEM
- LDD CM+4
- NJP SEP13 IF NOT SUCCESSFUL
- LDN 1 SET FLAG THAT SAYS THIS MF HAS INTERLOCK
- STD CM+2
- LDN 26 BIT TO CHANGE
- RJM UBP UPDATE *BDLL* PARAMETER
- SEP5 LDD EO
- UJN SEP4 PROCESS NEXT PARTITION
- SEP6 LDD DI SET ERROR PROCESSING FLAG
- STM ERFL
- * SET ERROR PROCESSING FLAG(S) IN THE MST(S).
- SEP7 LDN 0 INITIALIZE PARTITION SEARCH
- SEP8 RJM LNE LOCATE NEXT EST FOR THIS DEVICE
- ZJP SEP2 IF NO MORE PARTITIONS
- RJM CDS CHECK DEVICE STATUS
- MJN SEP9 IF DEVICE NOT RECOVERED
- SMSTF GDER SET *ERROR RECOVERY IN PROGRESS* FLAG
- SEP9 LDD EO
- UJN SEP8 CHECK FOR NEXT PARTITION
- * DEVICE NOT RECOVERED. SET RECOVERY ERROR INTERLOCK.
- SEP10 LDN SRIS SET RECOVERY ERROR PROCESSING INTERLOCK
- SEP11 STD CM+1
- MONITOR MTEM
- LDD CM+4
- SBN 2
- ZJN SEP13 IF REJECT (ANOTHER DRIVER HOLDS INTERLOCK)
- LDD DI
- STM ERFL SET ERROR PROCESSING FLAG
- STM ERMF SET RECOVERY INTERLOCK FLAG
- LDD CM+4
- NJN SEP12 IF CONFLICTING INTERLOCKS SET
- RJM SEO RESTORE ORIGINAL EST ORDINAL
- UJN SEP7 RETURN SUCCESSFUL STATUS
- * THE RECOVERY ERROR PROCESSING INTERLOCK WAS SET SUCCESSFULLY,
- * BUT ONE OR MORE CONFLICTING *BDT* INTERLOCKS ARE STILL SET.
- * *SEP* MUST WAIT, PERIODICALLY ISSUING *MTEM*/*GRIS* REQUESTS,
- * UNTIL ALL CONFLICTING INTERLOCKS HAVE BEEN RELEASED.
- SEP12 RJM DAS PROCESS ACTIVITY ON OTHER DEVICES
- DELAY
- RJM CMR CHECK FOR MMF *RESTORE* FLAGS
- NJN SEP14 IF RESTORE IN PROGRESS ON OTHER MF
- LDN GRIS GET RECOVERY INTERLOCK STATUS
- UJN SEP11 CHECK FOR CONFLICTING INTERLOCKS
- * INTERLOCK ATTEMPT UNSUCCESSFUL. THIS MEANS THAT ANOTHER MF
- * HOLDS THE INTERLOCK (OR SOME OF THE INTERLOCKS) REQUIRED.
- * TO AVOID A DEADLOCK, THIS MF MUST RELEASE ANY INTERLOCK
- * THAT IT HOLDS, AND THEN RETRY THE INTERLOCK ATTEMPT LATER.
- SEP13 RJM CBI CLEAR *BDT* ERROR PROCESSING INTERLOCKS
- RJM DAS PROCESS ACTIVITY ON OTHER DEVICES
- DELAY
- RJM CMR CHECK FOR MMF *RESTORE* FLAGS
- NJN SEP14 IF RESTORE IN PROGRESS ON OTHER MF
- LJM SEP1 RETRY INTERLOCK
- SEP14 LJM CMP10 ABANDON REQUEST (RETRY LATER)
- ERFL CON 0 ERROR PROCESSING FLAG
- ERMF CON 0 RECOVERY INTERLOCK FLAG
- SFP SPACE 4,10
- ** SFP - SET COMMON FORMAT PARAMETERS.
- *
- * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
- * (FC) = 0 IF DRIVE DECLUSTERED.
- * (CN) = CONTROLLER NUMBER.
- * (DN) = DRIVE NUMBER.
- *
- * CALLS SOU.
- SFP SUBR ENTRY/EXIT
- LDC C280E+1S17 FORMAT OPERATION CODE
- RJM SOU SET OPERATION CODE AND UNIT
- LDC P02D5 PARAMETER TO SELECT DRIVE
- STML CPBF+FCP
- LDM PHYD,DI
- SHN 10
- STML CPBF+FCP+1 DRIVE TO FORMAT
- LDC 0#1E5
- STML CPBF+FCP+2 DO NOT READ HEADERS
- LDD FC
- ZJN SFPX IF DRIVE DECLUSTERED
- LDD CN
- SHN 10
- ADD DN
- STML CPBF+CUN LOGICAL ADDRESS
- UJP SFPX RETURN
- SFR SPACE 4,15
- ** SFR - SEARCH FOR CONSECUTIVE REQUEST.
- *
- * ENTRY (A) = CURRENT *CBT* ORDINAL.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- * (DT) = DRIVE TYPE.
- *
- * EXIT (NB) = 0 IF NO CONSECUTIVE REQUEST FOUND.
- * = *CBT* ORDINAL OF NEXT REQUEST.
- * (NR - NR+4) = PHYSICAL ADDRESS OF NEXT REQUEST.
- *
- * USES NB, CM - CM+4, NR - NR+4, T1 - T6.
- *
- * MACROS CBTE.
- SFR9 LDN 0
- STD NB
- SFR SUBR ENTRY/EXIT
- SHN CBTLS
- CBTE *
- ADC PAD1 FETCH SEEK PARAMETERS FROM *CBT*
- CRD CM
- ADN IOLK-PAD1 (T1) = I/O LINK-UP FLAGS
- CRD T1
- LDM ERCT,DI
- NJN SFR9 IF IN ERROR RECOVERY
- LDML PSBF,DT SET NUMBER OF SECTORS PER BUFFER
- SHN -14
- STD T0
- LDM CYLN,DI
- SFR1 SBM MC,DT
- MJN SFR1.1 IF IN THE CORRECT PARTITION
- SBN 1
- PJN SFR1 IF NOT AT MAINTENANCE TRACK
- SFR1.1 ADN 7
- PJN SFR1.2 IF WITHIN LAST 8 CYLINDERS
- LDML PSCY,DT SET SECTOR COUNT FOR 8 CYLINDERS
- SHN 3
- UJN SFR2 CONTINUE
- SFR1.2 LDM STS,DT SET SECTOR COUNT FOR .LT. 8 CYLINDERS
- LPC 777
- SFR2 SBM CSCT,DI
- SBD T0 LESS NUMBER OF SECTORS PER BUFFER
- ZJN SFR3 IF TIME TO CURTAIL STREAMING
- LDD T1+2
- ZJN SFR3 IF NO REQUEST AVAILABLE
- STD NB
- SHN CBTLS
- CBTE *
- ADC PAD1 PHYSICAL ADDRESS OF NEXT REQUEST
- CRD NR
- ADN IOLK-PAD1 I/O LINK-UP WORD OF NEXT REQUEST
- CRD T2
- LDD T2 COMPARE LINK-UP FLAGS
- LMD T1
- LPC DRFM+ILFM
- ZJN SFR5 IF SAME DIRECTION AND INTERLOCKED
- SFR3 UJP SFR9 RETURN
- SFR5 LDML PSBF,DT CALCULATE NEXT SECTOR
- SHN -14
- RAD CM+2
- LDD NR+1 CHECK SEEK PARAMETERS
- SBD CM+1
- ZJN SFR6 IF SAME CYLINDER
- SBN 1
- NJN SFR3 IF NOT NEXT CYLINDER
- LDD CM+2 CALCULATED NEXT SECTOR
- SBM LSOC,DT
- PJN SFR7 IF END OF CYLINDER REACHED
- UJN SFR3 RETURN WITH NO CONSECUTIVE REQUEST
- SFR6 LDD CM+2 CHECK NEXT SECTOR
- LMD NR+2
- ZJN SFR8 IF NEXT SECTOR ON SAME TRACK
- LDD CM+2
- LPN 77
- SBM PSPT,DT
- MJN SFR3 IF NOT AT END OF TRACK
- LMD CM+2
- LPN 77
- LMD CM+2
- ADD HN SET NEXT TRACK
- SFR7 LMD NR+2
- NJN SFR3 IF NOT NEXT SECTOR ON CONSECUTIVE TRACKS
- SFR8 LJM SFRX RETURN
- SLB SPACE 4,15
- ** SLB - SET LINKAGE BITS.
- *
- * ENTRY (A) = *CBT* ORDINAL.
- * (RW) = READ / WRITE STATUS.
- *
- * EXIT LINKAGE BITS SET IN *CBT* ENTRY / UEM BUFFER.
- *
- * USES PB, T1, T2, T5, T6, UA, UA+1, CM - CM+4.
- *
- * CALLS RLB, SUA, WLB.
- *
- * MACROS CBTE.
- SLB SUBR ENTRY/EXIT
- STD PB
- RJM SUA SET UEM ADDRESS
- LDN PAD1
- STD T2
- LDN 5 UEM WORD COUNT
- STD T5
- LDML SLBB,RW SET PROCESSOR ADDRESS
- STML SLBA
- SLB1 LRD UA LOAD *R* REGISTER
- LDD PB
- SHN CBTLS READ CONTROL BUFFER WORD
- CBTE *
- ADC 0 FWA OF *CBT*
- ADD T2
- CRD CM
- LDC SBUF-4 SET BUFFER ADDRESS
- STDL T1
- LDC 1S17 READ START OF BUFFER SEGMENT
- CRML SBUF,T5
- LDN CM+3 SET *CBT* ENTRY ADDRESS
- STD T6
- RJM 0 MOVE LINKAGE BITS
- SLBA EQU *-1
- LDN 10 ADVANCE *R* REGISTER IMAGE
- RAD UA+1
- SHN -14
- RAD UA
- AOD T2 ADVANCE CONTROL BUFFER WORD
- LMN PAD4+1
- NJN SLB1 IF NOT COMPLETE
- UJP SLBX RETURN
- SLBB CONL RLB
- CONL WLB
- SMD SPACE 4,15
- ** SMD - SKIP MEDIA DEFECT DURING RESTORE.
- *
- * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
- * (T5) = PHYSICAL TRACK.
- * (T6) = PHYSICAL SECTOR.
- * (DT) = DRIVE TYPE.
- *
- * EXIT (A) = 0 IF NOT RESTORE.
- *
- * USES T5, T6.
- SMD4 LDN 0
- SMD SUBR ENTRY/EXIT
- LDML RPBF+OPC
- LMC CE005
- NJN SMD4 IF NOT RESTORE
- * SET RCYL, RTSN TO THE PHYSICAL SECTOR AFTER THE FAILING ONE.
- AOD T6 PHYSICAL SECTOR
- SHN 14
- ADD T5 PHYSICAL TRACK
- SHN 6
- STM RTSN
- AOD T5
- LDM LSOC,DT
- SHN -6
- SBD T5
- MJN SMD1 IF LAST TRACK
- LDD T6
- SBM PSPT,DT
- MJN SMD2 IF NEXT RESTORE ADDRESS ALREADY SET
- SHN 14 POTENTIAL RESIDUAL SECTOR NUMBER
- ADD T5
- SHN 6
- STM RTSN
- UJN SMD2 SET REQUESTS TO MULTIPLEX
- SMD1 LDM RTSN
- SBM LSOC,DT
- MJN SMD2 IF NEXT RESTORE ADDRESS ALREADY SET
- STM RTSN
- AOM RCYL
- SMD2 LDML RMUX
- SHN 21-17
- MJN SMD3 IF MULTIPLEXING I/O REQUESTS DISABLED
- LDN IRBR
- STML RMUX I/O REQUESTS BEFORE NEXT RESTORE
- SMD3 UJP SMDX RETURN
- SOC SPACE 4,10
- ** SOC - SET OPERATION CODE AND CONTROLLER.
- *
- * ENTRY (A) = OPERATION CODE.
- * (CN) = CONTROLLER NUMBER.
- SOC SUBR ENTRY/EXIT
- STML CPBF+OPC
- LDD CN
- SHN 10
- LMC 0#FF
- STM CPBF+CUN
- UJN SOCX RETURN
- SOU SPACE 4,15
- ** SOU - SET OPERATION CODE AND UNIT.
- *
- * ENTRY (A) = 1/X, 17/YY.
- * WHERE X = 0 IF (DN) IS THE DRIVE NUMBER.
- * = 1 IF (PHYD,DI) IS THE DRIVE NUMBER.
- * YY = OPERATION CODE.
- * (CN) = CONTROLLER NUMBER.
- * (DN) = DRIVE NUMBER.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- *
- * EXIT (A) = UNIT NUMBER FOR COMMAND PACKET.
- SOU SUBR ENTRY/EXIT
- STML CPBF+OPC
- MJN SOU1 IF USING PHYSICAL DRIVE
- LDD CN MERGE CONTROLLER + DRIVE NUMBERS
- SHN 10
- LMD DN
- UJN SOU2 SET FACILITY ADDRESS
- SOU1 LDD CN MERGE CONTROLLER + DRIVE NUMBERS
- SHN 10
- ADM PHYD,DI
- SOU2 STM CPBF+CUN
- UJN SOUX RETURN
- SRF SPACE 4,10
- ** SRF - SET DRIVER RELOAD FLAG.
- *
- * EXIT (A) = 0.
- *
- * USES CM+1 - CM+4.
- *
- * CALLS DCR.
- *
- * MACROS MONITOR, CHTE.
- SRF SUBR ENTRY/EXIT
- RJM DCR DROP CHANNEL RESERVATION
- * LDN 0
- STD CM+2 CLEAR UNUSED BYTE
- CHTE *
- LDC CTALL*2 ADDRESS OF CHANNEL CONTROLWARE TABLE ENTRY
- STD CM+4
- SHN -14
- STD CM+3
- LDN 1 SET NUMBER OF REQUESTS
- STD CM+1
- LDD MA STORE REQUEST IN MESSAGE BUFFER
- CWM SRFA,CM+1
- MONITOR UTEM SET RELOAD FLAG
- * LDN 0
- UJN SRFX RETURN
- SRFA VFD 1/0,5/0,6/1,6/,42/1
- SRI SPACE 4,30
- ** SRI - SET SLAVE RESET INTERLOCK.
- *
- * IN A MMF ENVIRONMENT, DAS MUST BE CONFIGURED WITH MORE
- * THAN ONE DRIVER ACCESSING EACH CONTROLLER. TO PREVENT AN
- * ENDLESS SEQUENCE OF SLAVE RESETS UNDER SOME ERROR CONDITIONS,
- * AN EXTENDED MEMORY FLAG REGISTER INTERLOCK IS USED TO ENSURE
- * THAT ONLY ONE DRIVER TRIES TO PERFORM A SLAVE RESET AT ANY
- * ONE TIME. IF *1DA* ATTEMPTS TO SET THIS INTERLOCK AND
- * DETERMINES THAT IT IS HELD BY ANOTHER DRIVER, IT WILL WAIT
- * UNTIL THE INTERLOCK IS CLEAR, AND THEN CLEAR THE BUFFER COUNT
- * AND COMPLETE THE CURRENT REQUEST. THE REQUEST WILL BE
- * RETRIED ON A SUBSEQUENT PASS THROUGH THE MAIN LOOP.
- *
- * ENTRY (RW) = 0, IF SLAVE RESET.
- * (CRIB) .NE. 0, IF SLAVE RESET INTERLOCK ALREADY SET.
- *
- * EXIT INTERLOCK SET, IF FIRST *IFR* CALL SUCCESSFUL.
- * (CRIB) .NE. 0, IF SLAVE RESET INTERLOCK SET.
- * TO *CMP10*, IF FIRST *IFR* CALL UNSUCCESSFUL.
- *
- * CALLS IFR.
- *
- * MACROS DELAY.
- SRI SUBR ENTRY/EXIT
- SRIA LDD RW
- * UJN SRIX (NO SHARED BUFFERED DEVICES CONFIGURED)
- NJN SRIX IF NOT SLAVE RESET
- STM SRIB CLEAR *UNSUCCESSFUL IFR CALL* FLAG
- LDM CRIB
- NJN SRIX IF SLAVE RESET INTERLOCK ALREADY SET
- SRI1 LDN /MMF/DSRI SET *DAS SLAVE RESET INTERLOCK* FLAG BIT
- RJM IFR
- NJN SRI3 IF NOT SUCCESSFUL
- LDC 0
- * LDC NONZERO (AT LEAST ONE UNSUCCESSFUL *IFR* CALL)
- SRIB EQU *-1
- NJN SRI2 IF NOT SUCCESSFUL ON FIRST TRY
- LDN 1 SET *SLAVE RESET INTERLOCK SET* FLAG
- STM CRIB
- UJN SRIX RETURN
- SRI2 LCN /MMF/DSRI CLEAR *DAS SLAVE RESET INTERLOCK* FLAG BIT
- RJM IFR
- LJM CMP10 ABANDON REQUEST (RETRY LATER)
- SRI3 STM SRIB SET *UNSUCCESSFUL IFR CALL* FLAG
- DELAY 20B DELAY TWO MILLISECONDS
- UJN SRI1 RETRY INTERLOCK ATTEMPT
- SRP SPACE 4,10
- ** SRP - SEARCH RESPONSE PACKET.
- *
- * ENTRY (A) = PARAMETER ID TO SEARCH FOR.
- *
- * EXIT (A) .EQ. 0 IF ID FOUND.
- * (A) .LT. 0 IF ID NOT FOUND.
- * (RPBF+5,T3) .EQ. THE PARAMETER.
- *
- * USES T1 - T3.
- SRP1 LDML RPBF+5,T3 EXTRACT PARAMETER BLOCK LENGTH
- SHN -10-1
- ADN 1 CONVERT OCTET COUNT TO BYTE COUNT
- STD T0
- RAD T3 ADVANCE BUFFER INDEX
- LDD T2
- SBD T0
- SRP2 MJN SRPX IF END OF RESPONSE PACKET
- STD T2
- LDM RPBF+5,T3 CHECK NEXT PARAMETER BLOCK
- LMD T1
- LPC 377
- NJN SRP1 IF NOT REQUESTED ID
- SRP SUBR ENTRY/EXIT
- STD T1
- LDN 0 INITIALIZE INDEX
- STD T3
- LDM RPBF+PLN PACKET LENGTH
- ADN 1
- SHN -1 CONVERT TO PP WORD COUNT
- SBN 5
- UJN SRP2 CHECK MINIMUM PACKET LENGTH
- SSS SPACE 4,15
- ** SSS - SET SUSPECT STATE ON DEVICE.
- *
- * THIS ROUTINE ALSO SAVES THE FAILING DRIVE IN WORD *PILL*
- * SO THAT THE ALTERNATE CHANNEL DRIVER CAN INCLUDE THE CORRECT
- * UNIT NUMBER IN THE BML MESSAGE IF THE ERROR IS RECOVERED.
- *
- * ENTRY (EO) = EST ORDINAL.
- *
- * USES T6, T7, CM+1 - CM+4.
- *
- * CALLS REE.
- *
- * MACROS MONITOR, PUTE.
- SSS SUBR ENTRY/EXIT
- RJM REE READ EST ENTRY
- LDD CM CHECK DEVICE STATUS
- LPN 2
- NJN SSSX IF DEVICE *OFF* OR *DOWN*
- LDD EO
- STD CM+1 SET EST ORDINAL
- LDD IR+4
- STD CM+3 INSERT CHANNEL NUMBER
- LDN SSES
- STD CM+2 SET SUSPECT STATE ON DEVICE
- MONITOR SEQM
- * SAVE FAILING DRIVE IN WORD *PILL* FOR THE ALTERNATE CHANNEL.
- LDC PILL*100+6
- STD T6 6/WORD, 6/BITS TO CHANGE
- LDC 52*100
- STD T7 LOW ORDER BIT TO CHANGE
- LDM PHYD,DI
- STD CM+2 NEW VALUE
- LDD MA
- CWD T6 STORE MESSAGE BUFFER PARAMETERS
- LDN 1
- STD CM+1 PARAMETER WORD COUNT
- LDI DI
- ERRNZ PUTO CODE DEPENDS ON VALUE
- SHN PUTLS
- PUTE *
- ADC 0 SET BASE *PUT* ENTRY ADDRESS
- STD CM+4
- SHN -14
- STD CM+3
- MONITOR UTEM SAVE FAILING DRIVE IN *PUT*
- UJP SSSX RETURN
- STF SPACE 4,15
- ** STF - REQUEST TRACK FLAW.
- *
- * ENTRY (CB) = CURRENT *CBT* ORDINAL.
- * (EO) = EST ORDINAL.
- * (T4) = CYLINDER NUMBER.
- * (T5) = PHYSICAL TRACK.
- * (T7) = LOGICAL SECTOR WITHIN PHYSICAL TRACK.
- *
- * USES T4, CM - CM+4.
- *
- * CALLS CDA, C2D, IDM, REE.
- *
- * MACROS MONITOR.
- STF SUBR ENTRY/EXIT
- RJM REE READ EST ENTRY
- LDD CM+4 GET PARTITION CYLINDER OFFSET
- SHN 3
- ADK SCYL
- CRD CM
- LDD T4 CONVERT ABSOLUTE TO RELATIVE CYLINDER
- SBD CM+2
- STD T4
- RJM CDA CONVERT DISK ADDRESS
- LDD T6
- STD CM+2 TRACK NUMBER FOR MONITOR REQUEST
- RJM C2D SET TRACK NUMBER IN MESSAGE
- STM STFB+5
- LDD T6
- SHN -6
- RJM C2D SET TRACK NUMBER IN MESSAGE
- STM STFB+4
- LDD EO
- SHN -3 CONVERT EST ORDINAL
- RJM C2D
- STM STFB+1 SET ORDINAL IN MESSAGE
- LDD EO
- STD CM+1
- LPN 7
- SHN 6 CONVERT LOW ORDER DIGIT
- ADC 2R0,
- STM STFB+2
- LDK SFTS INSERT SUBFUNCTION
- STD CM+3
- MONITOR SMDM SET TRACK FLAW REQUEST IN MST
- LDD CM+1
- NJN STF1 IF THIS FLAW ALREADY REQUESTED
- LDC STFA
- STML MAD1 ISSUE ERROR LOG MESSAGE
- RJM IDM
- STF1 LJM STFX RETURN
- STFA VFD 24/0 RESERVED
- VFD 12/1 ERRLOG ALERT FLAG
- VFD 12/STFAL MESSAGE LENGTH
- VFD 12/ELDY ERRLOG DAYFILE
- STFB DATA C*EQXXX,TKNNNN, MEDIA DEFECT ENCOUNTERED.*
- .1 SET *-STFA+4
- STFAL EQU .1/5
- STO SPACE 4,10
- ** STO - SET TIMEOUT.
- *
- * ENTRY (A) = TIMEOUT VALUE (IN SECONDS).
- *
- * USES CM - CM+4, T5 - T7.
- *
- * MACROS FTTE.
- STO SUBR ENTRY/EXIT
- STD T6
- LDC RTCL FETCH CURRENT TIME
- CRD CM
- LDD T6
- RAD CM+1 SET TIME LIMIT
- SHN -14
- RAD CM
- LDM STO SET CALLERS ADDRESS
- STD T7
- LDN 0
- STD T5
- LDI DI
- ERRNZ PUTO CODE DEPENDS ON VALUE
- SHK FTTLS
- FTTE *
- ADC 0 STORE *FTT* ENTRY
- CWD T5
- UJN STOX RETURN
- SUA SPACE 4,10
- ** SUA - SET UEM ADDRESS.
- *
- * ENTRY (A) = *CBT* ORDINAL.
- *
- * EXIT (UA - UA+1) = UEM ADDRESS / 100.
- *
- * USES UA, UA+1, CM - CM+4.
- *
- * MACROS CBTE.
- SUA SUBR ENTRY/EXIT
- SHN CBTLS
- CBTE *
- ADC IOLK READ *CBT* ENTRY
- CRD CM
- LDD CM+4 EXTRACT RELATIVE UEM ADDRESS
- ADC 0
- SUAA EQU *-1
- SHN -6
- STD UA+1 SET ABSOLUTE ADDRESS / 100
- LDD CM+3
- ADC 0
- SUAB EQU *-1
- SHN 6
- RAD UA+1
- SHN -14
- STD UA
- UJN SUAX RETURN
- SUD SPACE 4,10
- ** SUD - SPIN UP DRIVE.
- *
- * ENTRY (OUPD,DI) = PHYSICAL DRIVE TO SPIN UP.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- * (EO) = EST ORDINAL.
- *
- * EXIT (A) = 0 IF COMMAND SUCCESSFUL.
- * (PHYD,DI) = PHYSICAL DRIVE.
- *
- * CALLS ATT, SOU, WCB.
- SUD SUBR ENTRY/EXIT
- LDM OUPD,DI SET PHYSICAL DRIVE TO SPIN UP
- STM PHYD,DI
- SHN 10
- STML CPBF+FCP+1 DRIVE TO SPIN UP
- LDC P02D5
- STML CPBF+FCP PHYSICAL DRIVE PARAMETER
- LDC C0301 REPORT CONDITION OPERATION CODE
- RJM SOU SET OPERATION CODE AND UNIT
- LDN 12 COMMAND PACKET LENGTH
- RJM WCB WRITE COMMAND BLOCK
- LDN CMSS
- RJM ATT PROCESS ATTENTION
- NJP SUD2 IF ERROR
- LDML RPBF+6
- SHN 21-7
- MJN SUD2 IF DRIVE NOT OPERATIONAL
- LDC C0700 SET OPERATING MODE OPERATION CODE
- RJM SOU SET OPERATION CODE AND UNIT
- LDC P02D5
- STML CPBF+FCP PHYSICAL DRIVE PARAMETER
- LDM OUPD,DI PHYSICAL DRIVE
- SHN 10
- STML CPBF+FCP+1 DRIVE TO SPIN UP
- LDC P0351
- STML CPBF+FCP+2
- LDC 0#8000
- STML CPBF+FCP+3 PARAMETER TO SELECT SPIN UP
- LDN 16 COMMAND PACKET LENGTH
- RJM WCB WRITE COMMAND PACKET
- LDN CMSS
- RJM ATT PROCESS ATTENTION
- SUD2 UJP SUDX RETURN
- SUI SPACE 4,15
- ** SUI - SET UNIT INTERLOCK.
- *
- * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
- *
- * EXIT (A) = 0 IF *PUT* ENTRY INTERLOCKED.
- * (UC) = UNIT ACTIVITY COUNT INCREMENTED.
- * (CM+1) = *BIOM* STATUS.
- *
- * USES CM+1, CM+2, UC.
- *
- * MACROS MONITOR.
- SUI SUBR ENTRY/EXIT
- LDI DI SET *PUT* ORDINAL
- ERRNZ PUTO CODE DEPENDS ON VALUE
- STD CM+2
- LDN SUIS SET SUBFUNCTION
- STD CM+1
- MONITOR BIOM INTERLOCK DEVICE
- LDD CM+1
- NJN SUIX IF INTERLOCK NOT ACQUIRED
- AOD UC ADVANCE UNIT ASSIGNED COUNT
- LDC 4000
- STM RQLN,DI SET UNIT INTERLOCKED
- LDN 0
- UJN SUIX RETURN
- TMSE SPACE 4,10
- ** TMSE - TABLE OF MASS STORAGE ERROR CODES.
- *
- * INDEXED BY FAULT CODE / 4.
- TMSE BSS 0
- LOC 0
- CON CHPE CHANNEL PARITY
- CON CHFE CHANNEL FAILURE
- CON FTOE FUNCTION TIMEOUT
- CON PARE DATA PARITY (MEDIA)
- CON NRDE DEVICE NOT READY
- CON IDTE DATA TRANSFER
- CON DSTE DEVICE STATUS
- CON DSTE DEVICE STATUS
- CON DSTE DEVICE STATUS
- CON DSTE DEVICE STATUS
- CON DSTE DEVICE STATUS
- CON DDFE DIAGNOSTIC FAILURE
- CON RAME CONTROLLER MEMORY
- CON RAME CONTROLLER MEMORY
- CON DRVE DRIVE RESERVE
- CON RAME CONTROLLER MEMORY
- CON DSTE DEVICE STATUS
- LOC *O
- TMSK SPACE 4,10
- ** TMSK - TABLE OF CONTROLLER MASKS.
- *
- * INDEXED BY CONTROLLER NUMBER.
- SPACE 2
- TMSK BSS 0
- LOC 0
- CON 001
- CON 002
- CON 004
- CON 010
- CON 020
- CON 040
- CON 100
- CON 200
- LOC *O
- UBP SPACE 4,20
- ** UBP - UPDATE *BDLL* PARAMETER.
- *
- * THIS ROUTINE CHANGES A BIT IN WORD *BDLL* OF THE MST.
- *
- * ENTRY (A) = BIT TO CHANGE.
- * (EO) = EST ORDINAL.
- * (CM+2) = NEW VALUE.
- *
- * USES T6, T7, CM - CM+4.
- *
- * CALLS REE.
- *
- * MACROS MONITOR.
- UBP SUBR ENTRY/EXIT
- SHN 6
- STD T7 BIT NUMBER * 100B
- LDN 1
- STD T6 NUMBER OF BITS TO CHANGE
- LDD MA
- CWD T6 STORE MESSAGE BUFFER PARAMETERS
- RJM REE READ EST ENTRY
- LDD CM+4
- SHN 3
- ADN BDLL SET ADDRESS OF *BDLL*
- STD CM+4
- SHN -14
- STD CM+3
- LDN 1
- STD CM+1 PARAMETER WORD COUNT
- MONITOR UTEM
- UJN UBPX RETURN
- UEC SPACE 4,15
- ** UEC - UPDATE MST ERROR COUNT.
- *
- * ENTRY (EO) = EST ORDINAL.
- * (BMLM+1) = BML MESSAGE SYMPTOM CODE.
- * (MISC - BIT 0) = 1 IF UNRECOVERED ERROR.
- *
- * USES CM+1 - CM+3.
- *
- * MACROS MONITOR.
- UEC SUBR ENTRY/EXIT
- LDM BMLM+1
- LMC D"DN"*400+HD0111
- NJN UECX IF NOT COMPLETION MESSAGE
- LDD EO
- STD CM+1 SET EST ORDINAL
- LDM MISC
- LPN 1 SET BYTE NUMBER
- ADN 3
- STD CM+2
- LDN ICTS INCREMENT ERROR COUNT
- STD CM+3
- MONITOR SMDM
- UJN UECX RETURN
- UHD SPACE 4,15
- ** UHD - UNPACK HEX DATA.
- *
- * STATUS READ FROM THE IPI CHANNEL AND RESPONSES RECEIVED
- * FROM THE CONTROLLER ARE IN 16-BIT WORDS. THIS ROUTINE
- * MOVES CONSECUTIVE 16-BIT WORDS TO CONSECUTIVE 12-BIT
- * WORDS. THUS, 3 16-BIT WORDS WOULD BE UNPACKED AND STORED
- * IN 4 12-BIT WORDS IN PP MEMORY.
- *
- * ENTRY (A) = DESTINATION DATA ADDRESS.
- * (T2) = SOURCE DATA ADDRESS.
- * (T4) = 16-BIT WORD COUNT OF HEX DATA.
- *
- * EXIT (A) = CM WORD COUNT OF 12 BIT DATA.
- *
- * USES T2 - T5.
- *
- * CALLS DV5.
- UHD3 AODL T3 SET END OF 12 BIT DATA
- STML UHDA
- LDN ZERL ENSURE ZERO FILL TO CM WORD BOUNDARY
- CRM *,ON
- UHDA EQU *-1
- LDDL T3 SET BYTE COUNT OF 12 BIT DATA
- SBDL T5
- RJM DV5 CONVERT TO CM WORD COUNT
- UHD SUBR ENTRY/EXIT
- STDL T3
- STDL T5 PRESERVE DESTINATION BUFFER ADDRESS
- UHD1 LDIL T2
- SHN 16
- STI T3 UNPACK N+3RD BYTE
- SHN -6
- SCN 77
- STM 1,T3
- AODL T3
- SOD T4
- UHD2 ZJN UHD3 IF END OF HEX DATA
- AODL T2
- LDIL T2
- SHN -10
- RAI T3 UNPACK N+4TH BYTE
- AODL T3
- LDIL T2
- SHN 4
- SCN 17
- STI T3
- SOD T4
- ZJN UHD2 IF END OF HEX DATA
- AODL T2
- LDIL T2
- STM 1,T3
- SHN -14
- RAI T3 UNPACK N+5TH BYTE
- AODL T3
- SOD T4
- ZJN UHD2 IF END OF HEX DATA
- AODL T2
- AODL T3
- UJP UHD1 CONTINUE UNPACK
- UPD SPACE 4,25
- ** UPD - UDPATE PHYSICAL DRIVE NUMBER.
- *
- * THIS ROUTINE UPDATES (PHYD,DI) TO THE NEXT PHYSICAL DRIVE
- * OF THE LOGICAL UNIT. THE PHYSICAL DRIVE PROGRESSION IS AS
- * FOLLOWS, WHERE X IS THE CABINET RANK.
- *
- * TYPE PROGRESSION
- *
- * 1 NX. (N = 0-3)
- * 1P 0X, 3X.
- * 2 0X, 1X.
- * 2P 0X, 1X, 3X.
- * 3 0X, 1X, 2X.
- * 3P 0X, 1X, 2X, 3X.
- * 4 0X, 1X, 2X, 3X.
- *
- * ENTRY (DT) = DRIVE TYPE.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- * (DD) = NUMBER OF DATA DRIVES IN DEVICE.
- * (PD) = NUMBER OF PARITY DRIVES IN DEVICE.
- *
- * EXIT (A) = 0 IF (PHYD,DI) IS THE LAST PHYSICAL
- * DRIVE OF THE LOGICAL UNIT. NO UPDATE IS
- * MADE IN THIS CASE.
- UPD2 LDN 0 EXIT WITH NO UPDATE
- UPD SUBR ENTRY/EXIT
- LDM PHYD,DI
- SHN -3
- ADN 1
- SBD DD
- MJN UPD4 IF NORMAL UPDATE
- NJN UPD2 IF NO UPDATE NECESSARY
- LDD PD
- ZJN UPDX IF NO UPDATE NECESSARY
- LDN 4
- SBD DD
- SHN 3
- UJN UPD5 UPDATE TO PARITY DRIVE
- UPD4 LDN 10B UPDATE TO NEXT STRING
- UPD5 RAM PHYD,DI
- UJP UPDX RETURN
- VDA SPACE 4,10
- ** VDA - VERIFY DRIVE ATTRIBUTES.
- *
- * ENTRY (DT) = DRIVE TYPE.
- *
- * EXIT TO *ERR* IF ERROR.
- *
- * USES T1.
- *
- * CALLS ATT, IDT, SOU, WCB.
- VDA11 RJM ATT WAIT FOR COMPLETION RESPONSE
- VDA SUBR ENTRY/EXIT
- * RESTORE DRIVE ATTRIBUTES.
- LDC C0202 RESTORE ATTRIBUTES OPERATION CODE
- RJM SOU SET OPERATION CODE AND UNIT
- LDN 6 COMMAND PACKET LENGTH
- RJM WCB WRITE COMMAND PACKET
- LDN CMSS
- RJM ATT PROCESS ATTENTION
- NJP VDA10 IF NOT SUCCESSFUL
- * CHECK ATTRIBUTE 6E.
- LDC C0200 REPORT ATTRIBUTE OPERATION CODE
- RJM SOU SET OPERATION CODE AND UNIT
- LDC P036C
- STML CPBF+FCP REPORT ATTRIBUTE 6E
- LDC 0#806E
- STML CPBF+FCP+1
- LDN 12 COMMAND PACKET LENGTH
- RJM IDT INPUT DATA TO PP
- LDML ATTB+1
- LMC 0#C080
- NJN VDA1 IF ATTRIBUTE INCORRECT
- RJM ATT WAIT FOR COMPLETION RESPONSE
- UJP VDA3 CHECK ATTRIBUTE 6F
- VDA1 RJM ATT WAIT FOR COMPLETION RESPONSE
- LDC C0209 LOAD ATTRIBUTE OPERATION CODE
- RJM SOU SET OPERATION CODE AND UNIT
- LDC 0#46E
- STML CPBF+FCP PARAMETER 6E
- LDC 0#C080 FOR PARITY DRIVES THIS ENABLES PARITY
- STML CPBF+FCP+1 CORRECTION BEFORE ECC CORRECTION
- LDN 0
- STML CPBF+FCP+2
- LDN 14 COMMAND PACKET LENGTH
- RJM WCB WRITE COMMAND PACKET
- LDN CMSS
- RJM ATT PROCESS ATTENTION
- NJN VDA2 IF NOT SUCCESSFUL
- LDC C020A SAVE ATTRIBUTE OPERATION CODE
- RJM SOU SET OPERATION CODE AND UNIT
- LDN 6 COMMAND PACKET LENGTH
- RJM WCB WRITE COMMAND PACKET
- LDN CMSS
- RJM ATT PROCESS ATTENTION
- VDA2 NJP VDA10 IF NOT SUCCESSFUL
- * CHECK ATTRIBUTE PARAMETER 6F.
- VDA3 LDC C0200
- RJM SOU SET OPERATION CODE AND UNIT
- LDC P036C
- STML CPBF+FCP REPORT ATTRIBUTE 6F
- LDC 0#806F
- STML CPBF+FCP+1
- LDN 12 COMMAND PACKET LENGTH
- RJM IDT INPUT DATA TO PP
- LDML ATTB+13
- LMC BPB
- NJN VDA4 IF BURST SIZE NOT CORRECT
- RJM ATT WAIT FOR COMPLETION RESPONSE
- UJP VDA7 CHECK ATTRIBUTE D8
- VDA4 RJM ATT WAIT FOR COMPLETION RESPONSE
- LDN 0
- STD T1
- VDA5 LCN 0 PARAMETERS WITH FFFF WILL NOT BE CHANGED
- STML CPBF+FCP,T1
- AOD T1
- LMN 24
- NJN VDA5 IF MORE WORDS TO INITIALIZE
- STM CPBF+FCP+10
- STM CPBF+FCP+12
- LDC BPB*2 SET INTERRUPT SIZE
- STML CPBF+FCP+11
- SHN -1 SET BURST SIZE
- STML CPBF+FCP+13
- LDC C0209 LOAD ATTRIBUTE OPERATION CODE
- RJM SOU SET OPERATION CODE AND UNIT
- LDC 0#276F
- STML CPBF+FCP PARAMETER 6F
- LDN 46D COMMAND PACKET LENGTH
- RJM WCB WRITE COMMAND PACKET
- LDN CMSS
- RJM ATT PROCESS ATTENTION
- NJN VDA6 IF NOT SUCCESSFUL
- LDC C020A SAVE ATTRIBUTE OPERATION CODE
- RJM SOU SET OPERATION CODE AND UNT
- LDN 6 COMMAND PACKET LENGTH
- RJM WCB WRITE COMMAND PACKET
- LDN CMSS
- RJM ATT PROCESS ATTENTION
- VDA6 NJN VDA8 IF NOT SUCCESSFUL
- * CHECK ATTRIBUTE D8.
- VDA7 LDD DT
- IFNE EQEA,0,2
- SBN EQEA
- MJN VDA7.1 IF NOT SOLID STATE 5832
- SBN EQEC-EQEA
- MJP VDAX IF INTERRUPT SIZE NOT USED
- VDA7.1 LDC C0200 REPORT ATTRIBUTE OPERATION CODE
- RJM SOU SET OPERATION CODE AND UNIT
- LDC P036C REPORT PARAMETER D8
- STML CPBF+FCP
- LDC 0#80D8
- STML CPBF+FCP+1
- LDN 12 COMMAND PACKET LENGTH
- RJM IDT INPUT DATA TO PP
- LDML ATTB
- LMC 0#9D8
- VDA8 NJP VDA10 IF RESPONSE INCORRECT
- LDC BPB SET INTERRUPT SIZE
- LMML ATTB+2
- NJN VDA9 IF INTERRUPT SIZE WRONG
- LDML ATTB+4
- LMC BPB
- ZJP VDA11 IF BURST SIZE CORRECT
- VDA9 RJM ATT WAIT FOR COMPLETION RESPONSE
- LDN 0
- STML CPBF+FCP+1
- STML CPBF+FCP+3
- LDC BPB*2 SELECT INTERRUPT SIZE
- STML CPBF+FCP+2
- SHN -1 SET BURST SIZE
- STML CPBF+FCP+4
- LDC 0#09D8
- STML CPBF+FCP PARAMETER D8
- LDC C0209 LOAD ATTRIBUTE OPERATION CODE
- RJM SOU SET OPERATION CODE AND UNIT
- LDN 20 COMMAND PACKET LENGTH
- RJM WCB WRITE COMMAND PACKET
- LDN CMSS
- RJM ATT PROCESS ATTENTION
- NJN VDA10 IF NOT SUCCESSFUL
- LDC C020A SAVE ATTRIBUTES OPERATION CODE
- RJM SOU SET OPERATION CODE AND UNIT
- LDN 6 COMMAND PACKET LENGTH
- RJM WCB WRITE COMMAND PACKET
- LDN CMSS
- RJM ATT PROCESS ATTENTION
- NJN VDA10 IF NOT SUCCESSFUL
- LJM VDAX RETURN
- VDA10 LCN ERDA REPORT DRIVE ATTRIBUTES ERROR
- RJM ERR PROCESS ERROR
- VIS SPACE 4,15
- ** VIS - VERIFY INTERRUPT SOURCE.
- *
- * ENTRY (A) .LT. 0 IF ASYNC INTERRUPT FROM CONTROLLER.
- *
- * EXIT (A) = 0 IF INTERRUPT FOR INACTIVE DRIVE.
- * = RETURN ADDRESS TO PROCESSOR.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- *
- * USES DI.
- *
- * CALLS CCO, DCM, LDP.
- VIS4 RJM CCO CHECK FOR CONTROLLER OVER TEMPERATURE
- LDM SRSA
- ZJN VISX IF NO RESET IN PROGRESS
- STD DI
- UJN VIS1 LOAD DEVICE PARAMETERS
- VIS SUBR ENTRY/EXIT
- MJN VIS4 IF ASYNCH FOR CONTROLLER
- LDM RPBF+CRN CHECK COMMAND NUMBER
- STD DI
- VIS1 RJM LDP LOAD DEVICE PARAMETERS
- LDM RQLN,DI
- SHN 21-13
- PJN VIS2 IF UNIT NOT INTERLOCKED
- LDML ATTN,DI
- NJN VISX IF EXPECTED RESPONSE
- VIS2 LDDL RT
- LMN XFNT
- NJN VIS3 IF NOT TRANSFER NOTIFICATION
- RJM DCM DESELECT CONTROLLER
- VIS3 LDN 0
- UJN VISX RETURN
- WAC SPACE 4,25
- ** WAC - WAIT FOR OTHER ACTIVITY TO COMPLETE.
- *
- * WAIT UNTIL ALL OTHER ACTIVITY ON THIS CONTROLLER IS COMPLETE.
- * THE FACT THAT *ERFL* IS SET WILL PREVENT NEW ACTIVITY.
- *
- * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
- *
- * USES DI, T1.
- *
- * CALLS LND, LDP.
- WAC CON 0 ENTRY
- LDML WAC SAVE RETURN ADDRESS
- STML SEPR,DI
- LDC WAC1
- STML ADDR,DI RETURN ADDRESS IF NO RESPONSE
- WAC1 LDN 1
- WAC2 LMN 1
- RJM LND LOCATE DRIVE
- ZJN WAC3 IF NO MORE DRIVES ON CONTROLLER
- LDML ADDR,T7
- ZJN WAC2 IF NO ACTIVITY ON DRIVE
- LDD T7
- LMD DI
- ZJN WAC2 IF CURRENT DRIVE
- LDD T7
- STD DI
- RJM LDP LOAD DEVICE PARAMETERS
- LJM 0,PA CHECK FOR TIMEOUT ON ACTIVE DRIVE
- WAC3 LDML SEPR,DI GET RETURN ADDRESS
- STDL T1
- LJM 0,T1 RETURN
- WLB SPACE 4,10
- ** WLB - WRITE LINKAGE BITS.
- *
- * ENTRY (T6) = ADDRESS FOR LINKAGE.
- * (T1) = DATA BUFFER ADDRESS.
- * (T5) = NUMBER OF WORDS TO WRITE.
- * (CM - CM+4) = *PAD* WORD OF *CBT* ENTRY.
- *
- * EXIT SECTOR LINKAGE SET IN DATA BUFFER.
- *
- * USES T1, T6.
- WLB1 LDN 10+4 ADVANCE BUFFER ADDRESS
- RADL T1
- LDI T6 EXTRACT LINKAGE FROM *CBT* ENTRY
- SHN -10
- * LPN 17
- SHN 14 POSITION FOR DATA BUFFER
- LMI T1
- STIL T1
- WLB2 LDI T6 EXTRACT LINKAGE FROM *CBT* ENTRY
- SHN -4
- LPN 17
- SHN 14 POSITION FOR DATA BUFFER
- LMM 4,T1
- STML 4,T1
- LDI T6 EXTRACT LINKAGE FROM *CBT* ENTRY
- * SHN 0
- LPN 17
- SHN 14 POSITION FOR DATA BUFFER
- LMM 10,T1
- STML 10,T1
- AOD T6 ADVANCE *CBT* WORD ADDRESS
- LMN CM+5
- NJN WLB1 IF MORE LINKAGE
- LDC 1S17
- CWML SBUF,T5 UPDATE DATA BUFFER
- WLB SUBR ENTRY/EXIT
- UJN WLB2 MOVE SECTOR LINKAGE
- WMC SPACE 4,10
- ** WMC - WAIT MAINTENANCE CHANNEL EMPTY.
- *
- * EXIT (A) .EQ. 0 IF CHANNEL EMPTY.
- * (A) .NE. 0 IF CHANNEL HUNG FULL.
- WMC2 LDN 0 INDICATE CHANNEL EMPTY
- WMC SUBR ENTRY/EXIT
- LDD TH
- WMC1 EJM. WMC2,MR IF TRANSMISSION COMPLETE
- SBN 1
- NJN WMC1 IF NOT TIMED OUT
- DCN. MR+40
- CCF. *+2,MR CLEAR CHANNEL FLAG
- LDD CP
- ADN MS2W STORE CP MESSAGE
- CWM WMCA,TR
- UJN WMCX RETURN
- WMCA DATA C*MR ERROR.*
- TITLE CHANNEL SUBROUTINES.
- BCS SPACE 4,10
- ** BCS - DEFINE INFORMATION TRANSFER.
- *
- * ENTRY (A) = BUS *A* BITS 7 AND 6.
- *
- * EXIT TO *ERR* IF ERROR.
- *
- * CALLS RSR.
- BCS1 LDDL LF FETCH LAST FUNCTION
- LMN 0#32
- RJM RSR DROP SYNC OUT
- BCS SUBR ENTRY/EXIT
- SHN 17-1
- ADK F005B SET SYNC OUT
- RJM RSR READ SLAVE RESPONSE
- LPC 377
- ZJN BCS1 IF BUS ACKNOWLEDGE CORRECT
- LDN EBAE BUS ACKNOWLEDGE ERROR
- RJM ERR PROCESS ERROR
- CFE SPACE 4,10
- ** CFE - CHECK FOR I/O ERROR.
- *
- * ENTRY (A) = RESIDUAL WORD COUNT.
- * AT *CFE1* FROM *DCT* IF ERROR FLAG SET.
- *
- * EXIT (A) = 0.
- * TO *ERR* IF ERROR.
- CFE4 NJN CFE3 IF INCOMPLETE DATA TRANSFER
- CFE SUBR ENTRY/EXIT
- CFM CFE4,CH IF CHANNEL ERROR FLAG CLEAR
- CFE1 LDN ECIE IPI CHANNEL ERROR FLAG
- CFE2 RJM ERR PROCESS CHANNEL ERROR
- CFE3 LDN EIDT INCOMPLETE DATA TRANSFER
- UJN CFE2 PROCESS ERROR
- CRC SPACE 4,10
- ** CRC - COMMON READ CODE.
- *
- * ENTRY (A) = LENGTH FOR INPUT.
- * (T0) = WORDS NOT TRANSFERRED.
- *
- * EXIT TO *ERR* IF ERROR.
- *
- * USES T1.
- *
- * CALLS GSS.
- CRC2 LDN 0
- RJM GSS GET ENDING STATUS
- CRC SUBR ENTRY/EXIT
- SBD T0
- STD T1 WORDS NOT TRANSFERRED
- LDC 50000D
- CRC1 IJM CRC2,CH IF SLAVE IN
- SBN 1
- NJN CRC1 IF TIMEOUT NOT EXPIRED
- LCN ECNR SLAVE/SYNC IN SIGNAL ERROR
- RJM ERR PROCESS ERROR
- CTC SPACE 4,15
- ** CTC - CHECK TRANSFER COMPLETE.
- *
- * ENTRY (RW) = 0 IF READ.
- *
- * EXIT (A) = 0 TO CALLER IF NO ERROR.
- * TO *PIO2* IF ENDING STATUS INDICATES PAUSE AND
- * NO DATA WAS READ.
- * TO *PIO6* IF ENDING STATUS INDICATES NO MORE DATA
- * AND NOT ALL DATA WAS TRANSFERRED.
- * TO *ERR* IF ERROR.
- *
- * USES T1.
- *
- * CALLS DCM, FAN, FCN, GSS, RCR, RDR, RTR, SCD.
- CTC SUBR ENTRY/EXIT
- LDC 7700D
- STDL T1
- CTC1 LDC F0700
- RJM FCN REQUEST OPERATIONAL STATUS
- ACN CH
- EJM CTC2,CH IF ERROR
- IAN CH READ STATUS
- LPN 1
- ZJN CTCX IF TRANSFER COMPLETE
- CTC2 SODL T1
- NJN CTC1 IF NOT TIMEOUT
- RJM RTR READ T REGISTER
- LDD CT
- ZJN CTC2.1 IF 10 MB CHANNEL
- * THE DMA TERMINATE FUNCTION DOES NOT CLEAR DMA MODE
- * IN THE 25 MB CHANNEL.
- SFM CTC2.0,CH CLEAR ERROR FLAG ON 25MB CHANNEL
- CTC2.0 LDC F0E00
- RJM FAN CLEAR T REGISTER
- CTC2.1 LDC F0800 DMA TERMINATE FUNCTION
- RJM FAN SEND THE FUNCTION
- LDC F00E1 READ STATUS REGISTER FUNCTION
- RJM RDR READ REGISTER
- SHN 6
- PJN CTC3 IF SLAVE IN DROPPED
- LDN ECNR SLAVE/SYNC IN SIGNAL ERROR
- RJM ERR PROCESS ERROR
- CTC3 LDN 0 NO MASTER TERMINATE
- * STD T1 SO LENGTH ERROR NOT REPORTED IN *CFE*
- RJM GSS GET ENDING STATUS
- LPN 60B
- LMN 20B
- ZJN CTC5 IF NO MORE DATA
- * IF MULTIPLE PHYSICAL DRIVES PER LOGICAL UNIT, AND THERE
- * IS A MEDIA ERROR FOR AT LEAST 2 DRIVES AT THE SAME SECTOR,
- * THE CONTROLLER WILL TRANSFER NO DATA THEN RETURN AN ENDING
- * STATUS INDICATING PAUSE, AND EXPECT THE HOST TO REREAD
- * THE DATA IF IT SENDS A TRANSFER NOTIFICATION RESPONSE.
- LDDL RW
- NJN CTC4 IF WRITE
- LDML EDBF+TREG
- LMC BPB
- NJN CTC4 IF NOT 0-BYTE TRANSFER
- RJM RCR RESET CHANNEL REGISTERS
- LJM PIO2 WAIT FOR ANOTHER RESPONSE
- CTC4 LDN EIDT INCOMPLETE DATA TRANSFER
- RJM ERR PROCESS ERROR
- * THE CONTROLLER MAY DROP SLAVE IN ANYTIME DURING THE TRANSFER
- * AND RETURN 90 HEX AS ENDING STATUS. THIS INDICATES COMMAND
- * COMPLETE. THE RESPONSE PACKET SHOULD REPORT AN ERROR.
- *CTC5 LDN 0
- CTC5 RJM SCD CLEAR CHANNEL ACTIVE FOR *CPD*
- RJM DCM DESELECT THE CONTROLLER
- LCN 0 TO GUARANTEE AN ERROR IS REPORTED
- LJM PIO6 WAIT FOR A RESPONSE
- DCM SPACE 4,10
- ** DCM - DESELECT CONTROLLER.
- *
- * CALLS FCN, RSR.
- DCM SUBR ENTRY/EXIT
- LDC F0071
- RJM RSR WAIT FOR SLAVE IN TO DROP
- CFM DCMX,CH IF ERROR FLAG NOT SET
- * ON A 25 MB IPI CHANNEL, A DESELECT SEQUENCE COULD RESULT
- * IN A CHANNEL SEQUENCE ERROR. THE FOLLOWING CODE CLEARS
- * SUCH AN ERROR STATUS.
- LDC F0100
- RJM FCN CLEAR THE DMA ERROR
- UJN DCMX RETURN
- DCT SPACE 4,10
- ** DCT - DETERMINE CHANNEL TYPE.
- *
- * EXIT (CT) = 0 IF 10 MB CHANNEL.
- * 1 IF 25 MB CHANNEL.
- *
- * CALLS FCN.
- DCT1 STDL CT
- DCT SUBR ENTRY/EXIT
- LDC F0102
- RJM FCN READ IPI REVISION REGISTER
- ACN CH
- LDN 0
- EJM DCT1,CH IF 10 MB/S IPI CHANNEL
- LDN 1
- UJN DCT1 RETURN
- DTM SPACE 4,15
- ** DTM - DETERMINE TRANSFER MODE.
- *
- * ENTRY (A) = CONTROLLER NUMBER.
- * (T6) = 0 IF STREAMING COMMANDS/RESPONSES.
- * (T6) = 200(16) IF INTERLOCKING COMMANDS/RESPONSES.
- *
- * EXIT (A) = CONTROLLER NUMBER + TRANSFER MODE CHANGE.
- *
- * USES T4.
- *
- * CALLS FCN, RSR.
- DTM SUBR ENTRY/EXIT
- SHN 14
- STDL T4 SET CONTROLLER NUMBER IN RESPONSE
- LMC F8025
- RJM RSR REQUEST TRANSFER SETTINGS
- LPN 0#10
- LMN 0#10 COMPLEMENT TRANSFER MODE
- SHN 11-4
- LMDL T6 MASK FOR INTERLOCK DATA
- SHN 2
- RADL T4 APPEND TRANSFER MODE TO RESPONSE
- SFM CFE1,CH IF ERROR FLAG SET
- LDDL LF
- LMC 0#54 DROP MASTER OUT
- RJM RSR ENSURE SLAVE IN DROPPED
- CFM DTM1,CH IF ERROR FLAG NOT SET
- * ON A 25 MB IPI CHANNEL, A REQUEST TRANSFER SETTINGS SEQUENCE
- * COULD RESULT IN A CHANNEL SEQUENCE ERROR. THE FOLLOWING CODE
- * CLEARS SUCH AN ERROR STATUS.
- LDC F0100
- RJM FCN CLEAR THE DMA ERROR
- DTM1 LDDL T4
- UJP DTMX RETURN
- FAN SPACE 4,10
- ** FAN - SEND A FUNCTION TO THE IPI CHANNEL.
- *
- * NOTE - THE CHANNEL MAY HAVE BEEN LEFT ACTIVE BY A MASTER
- * CLEAR, A ROUTINE SUCH AS DCM, OR AFTER A REPORTED
- * ERROR.
- *
- * ENTRY (A) = FUNCTION TO ISSUE.
- FAN SUBR ENTRY/EXIT
- DCN CH+40 ENSURE THE CHANNEL IS INACTIVE
- FAN CH SEND THE FUNCTION
- UJN FANX RETURN
- FCN SPACE 4,10
- ** FCN - ISSUE FUNCTION.
- *
- * ENTRY (A) = FUNCTION CODE.
- *
- * EXIT (A) .NE. 0.
- * (LF) = FUNCTION CODE.
- * TO *ERR* IF FUNCTION TIMEOUT.
- FCN SUBR ENTRY/EXIT
- DCN CH+40
- FAN CH ISSUE FUNCTION
- STDL LF
- IJM FCNX,CH IF FUNCTION ACCEPTED
- RJM LDP LOAD DEVICE PARAMETERS
- LDN ETFN CHANNEL FUNCTION TIMEOUT
- RJM ERR PROCESS ERROR
- GIS SPACE 4,10
- ** GIS - GET INTERRUPT STATUS.
- *
- * EXIT (A) = (GISA) = INTERRUPT STATUS.
- *
- * CALLS FCN.
- * INTERRUPTS MUST BE ENABLED AT LEAST 6 MICROSECONDS BEFORE
- * THE FOLLOWING INPUT.
- GIS1 IAN CH READ INTERRUPT STATUS
- GIS2 STML GISA
- LDC F0711 NEGATE MASTER OUT
- RJM FCN
- LDML GISA RETURN WITH (A) = STATUS
- GIS SUBR ENTRY/EXIT
- ACN CH+40
- FJM GIS1,CH
- LDN 0
- UJN GIS2 SET NULL STATUS
- GISA CON 0
- GSS SPACE 4,15
- ** GSS - GET SLAVE STATUS.
- *
- * ENTRY (A) = 0 IF STATUS W/O MASTER TERMINATE.
- * = MASTER TERMINATE OPTION.
- * (T1) = RESIDUAL BYTE COUNT.
- *
- * EXIT (A) = (PIOC) = ENDING STATUS IF TRANSFER SUCCESSFUL.
- * (GSSA) = ENDING STATUS AS READ FROM CONTROLLER.
- * TO *ERR* IF ERROR.
- *
- * CALLS RRP, RSR.
- GSS5 LDML GSSA ENDING STATUS
- STML PIOC
- GSS SUBR ENTRY/EXIT
- SHN 10
- ADC F8039 INDICATE TRANSFER SUCCESSFUL
- RJM RSR GET ENDING STATUS
- STML GSSA
- SFM GSS3,CH IF ERROR FLAG SET
- SHN 21-7
- PJN GSS1 IF TRANSFER NOT SUCCESSFUL
- LDD T1
- ZJN GSS5 IF ALL WORDS TRANSFERRED
- LDN EIDT INCOMPLETE DATA TRANSFER
- UJN GSS4 PROCESS ERROR
- GSS1 SHN 10
- LPC 117
- LMN 3
- NJN GSS2 IF NOT COMMAND REJECT
- * IF CONTROLLER OVER TEMPERATURE OCCURS BEFORE THE COMMAND IS
- * ISSUED, A COMMAND REJECT ERROR COULD OCCUR. A LOGICAL RESET
- * WOULD CAUSE THE OVER TEMPERATURE STATUS TO BE LOST.
- RJM RRP READ RESPONSE PACKET
- LCN EUST SUCCESSFUL NOT SET IN ENDING STATUS
- UJN GSS4 PROCESS ERROR
- GSS2 LDN EUST SUCCESSFUL NOT SET IN ENDING STATUS
- UJN GSS4 PROCESS ERROR
- GSS3 LDN ECIE IPI CHANNEL ERROR FLAG
- GSS4 RJM ERR PROCESS ERROR
- GSSA CON 0 ENDING STATUS
- IDT SPACE 4,15
- ** IDT - INPUT DATA TO PP.
- *
- * ENTRY (A) = COMMAND PACKET LENGTH.
- * (TM) = TRANSFER MODE.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- *
- * EXIT ATTRIBUTE DATA STARTS AT ATTB.
- *
- * USES T1.
- *
- * CALLS ATT, BCS, CRC, DCM, FCN, WCB.
- IDT1 LCN ERDA REPORT DRIVE ATTRIBUTES ERROR
- RJM ERR PROCESS ERROR
- IDT CON 0 ENTRY
- RJM WCB WRITE COMMAND PACKET
- LDML IDT
- STML IDTR,DI SAVE RETURN ADDRESS
- LDN XFNT EXPECT TRANSFER NOTIFICATION RESPONSE
- RJM ATT PROCESS ATTENTION
- NJP IDT1 IF ERROR
- LDN DAIN DATA TRANSFER IN
- RJM BCS BUS CONTROL SEQUENCE
- LDI T0 DELAY 750 NANOSECONDS
- LDDL TM TRANSFER MODE
- SHN 11-0
- LMC F0281
- RJM FCN TELL DMA LOGIC TO READ
- ACN CH
- LDC ATTBL
- IAM ATTB,CH INPUT ATTRIBUTE DATA
- STD T0 WORDS NOT TRANSFERRED
- LDM RPBF+MST+3 BYTE LENGTH OF TRANSFER
- ADN 1 IN CASE OF ODD BYTE LENGTH
- SHN -1 EXPECTED WORDS TO TRANSFER
- RAD T0
- LDC ATTBL
- RJM CRC COMMON READ CODE
- RJM DCM DESELECT CONTROLLER
- LDML IDTR,DI
- STDL T1
- LJM 0,T1 RETURN TO CALLER
- RCR SPACE 4,10
- ** RCR - RESET CHANNEL REGISTERS. THIS LEAVES THE IPI
- * CHANNEL IN AN IDLE STATE.
- *
- * ENTRY (MF) = 0 IF PREVIOUS MASTER CLEAR SUCCESSFUL.
- *
- * USES MF, T1.
- *
- * CALLS DCT, FCN, WTC.
- *
- * MACROS WAIT.
- RCR2 LDN 0
- STD MF INDICATE MASTER CLEAR COMPLETE
- RCR SUBR ENTRY/EXIT
- LDD MF
- NJN RCR2 IF MASTER CLEAR FAILED
- AOD MF
- LDN F0000
- RJM FCN MASTER CLEAR THE ADAPTER
- WAIT 100
- * MASTER CLEAR DOES NOT CLEAR ERROR FLAG ON THE 25 MB CHANNEL,
- * SO THE SFM INSTRUCTION MUST BE USED TO CLEAR IT.
- SFM RCR1,CH
- *RCR1 LDN 0 SET DEVICE NOT SELECTED
- RCR1 ADK F0000-0 ENSURE NO SEQUENCE ERROR
- RJM FCN
- RJM DCT DETERMINE CHANNEL TYPE
- LDML TRAT,CT
- RJM FCN SET IPI CHANNEL TRANSFER RATE
- LDC F0300
- RJM FCN WRITE CONTROL REGISTER FUNCTION
- ACN CH
- LDML EDC,CT ENABLE DOUBLE CMI SLOT IF 25 MB CHANNEL
- STDL T1
- LDN 1
- OAM T1,CH
- RJM WTC WAIT TRANSFER COMPLETE
- UJP RCR2 SET COMPLETE AND RETURN
- RDR SPACE 4,10
- ** RDR - READ REGISTER.
- *
- * ENTRY (A) = FUNCTION CODE.
- *
- * EXIT (A) = VALUE OF REGISTER OR 0 IF ERROR.
- *
- * CALLS FAN.
- RDR1 LDN 0
- RDR SUBR ENTRY/EXIT
- RJM FAN SEND FUNCTION
- AJM RDR1,CH IF NO FUNCTION REPLY
- ACN CH+40B
- EJM RDR1,CH IF WORD COULD NOT BE READ
- IAN CH
- UJN RDRX RETURN
- RIF SPACE 4,15
- ** RIF - RESET INTERFACE.
- *
- * ENTRY (RW) = 0 TO RESET SLAVE INTERFACE.
- * = 1 TO RESET LOGICAL INTERFACE.
- * (CN) = CONTROLLER NUMBER.
- *
- * EXIT (RF) = 1.
- *
- * USES RF.
- *
- * CALLS FCN, RCR, SAP.
- *
- * MACROS WAIT.
- RIF SUBR ENTRY/EXIT
- AOD RF FLAG RESET IN PROGRESS
- RJM RCR RESET CHANNEL
- RJM SAP SELECT ADAPTER PORT
- LDD CN
- SHN 14 FORM RESET FUNCTION
- LMML RIFA,RW
- RJM FCN ISSUE LOGICAL RESET
- WAIT 20
- LDDL LF
- LMN 2 SET SYNC OUT
- RJM FCN
- WAIT 10
- LDDL LF NEGATE SYNC OUT
- SCN 2
- RJM FCN
- LDDL LF CLEAR MASTER OUT
- SCN 4
- RJM FCN
- UJP RIFX RETURN
- RIFA BSS 0 RESET FUNCTION CODES
- CONL F8415
- CONL F8215
- RRP SPACE 4,10
- ** RRP - READ RESPONSE PACKET.
- *
- * ENTRY (T6) = 0 IF STREAMING MODE FOR RESPONSES.
- *
- * CALLS BCS, CRC, FCN.
- RRP SUBR ENTRY/EXIT
- LDN RIIN
- RJM BCS INITIATE BUS EXCHANGE (RESPONSE IN)
- LDDL T6 STREAMING OR INTERLOCK MODE
- LMC F0281 READ
- RJM FCN RAISE MASTER OUT
- ACN CH
- LDN RPBFL TRANSFER RESPONSE PACKET
- IAM RPBF,CH
- STD T0 SAVE RESIDUE
- SBN RPBFL-4
- PJN RRP1 IF INVALID PACKET LENGTH
- LDM RPBF+PLN
- ADN 3 CONVERT OCTET COUNT TO BYTE COUNT
- SHN -1
- RAD T0
- RRP1 LDK RPBFL COMPARE LENGTH WITH DATA READ
- RJM CRC COMMON READ CODE
- UJN RRPX RETURN
- RSR SPACE 4,10
- ** RSR - READ SLAVE RESPONSE.
- *
- * ENTRY (A) = FUNCTION TO ISSUE.
- *
- * EXIT (A) = SLAVE RESPONSE.
- * TO *ERR* IF ERROR.
- *
- * CALLS FCN.
- RSR2 IAN CH READ SLAVE RESPONSE
- RSR SUBR ENTRY/EXIT
- RJM FCN
- LDC 2000
- ACN CH
- RSR1 FJM RSR2,CH IF SLAVE IN DROPPED
- SBN 1
- NJN RSR1 IF NOT TIMED OUT
- LDN ECNR SLAVE/SYNC IN SIGNAL ERROR
- RJM ERR PROCESS ERROR
- RTR SPACE 4,10
- ** RTR - READ T REGISTER.
- *
- * USES T2, T3.
- *
- * CALLS FAN.
- RTR SUBR ENTRY/EXIT
- LDC F0A00 READ T REGISTER FUNCTION
- STD T2
- RJM FAN
- LDN 0
- STML EDBF+TREG
- STML EDBF+TREG+1 CLEAR T REGISTER BUFFER
- STML EDBF+TREG+2
- STD T3
- ACN CH+40B ACTIVATE CHANNEL
- * THE ONE WORD INPUT IS NECESSARY TO PREVENT THE CHANNEL
- * FROM HANGING ON A 170 DMA CHANNEL.
- RTR1 SOD T2
- ZJN RTRX IF TIMEOUT
- IJM RTRX,CH IF ERROR
- EJM RTR1,CH IF CHANNEL NOT FULL YET
- IAN CH
- STML EDBF+TREG,T3 SAVE WORD FROM T REGISTER
- AOD T3
- LMN 3
- ZJN RTRX IF TRANSFER COMPLETE
- UJN RTR1 INPUT NEXT WORD
- SAP SPACE 4,10
- ** SAP - SELECT ADAPTER PORT.
- *
- * ENTRY (DI) = DEVICE STATE TABLE ADDRESS.
- * (CT) = 0 IF 10 MB CHANNEL.
- *
- * CALLS FCN.
- SAP SUBR ENTRY/EXIT
- LDM PNUN,DI
- SHN 0-11 ISOLATE PORT NUMBER
- SHN 13-0
- ERRNZ F0062+4000-F0862 CODE DEPENDS ON VALUE
- ADML PAS,CT
- RJM FCN
- UJN SAPX RETURN
- SCM SPACE 4,15
- ** SCM - SELECT CONTROLLER.
- *
- * ENTRY (SF) = 1 IF DEVICE PREVIOUSLY SELECTED.
- * (CI) = CONTROLLER STATE TABLE INDEX.
- * (CN) = CONTROLLER NUMBER.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- * (T6) = 0 IF STREAMING COMMANDS/RESPONSES.
- *
- * EXIT TO *ERR* IF ERROR.
- *
- * USES T6.
- *
- * CALLS DTM, RSR, SAP.
- SCM SUBR ENTRY/EXIT
- RJM SAP SELECT ADAPTER PORT
- LDML CTST,CI
- SHN -15
- ZJN SCM1 IF STREAMING COMMANDS/RESPONSES
- LDC 0#200
- SCM1 STDL T6
- LDD CN
- RJM DTM DETERMINE TRANSFER MODE
- LMN F0029 SET SELECT OUT
- RJM RSR READ BIT SIGNIFICANT RESPONSE
- LPML TMSK,CN
- NJN SCMX IF CORRECT CONTROLLER
- LDN ETSL SELECT TIMEOUT
- RJM ERR PROCESS ERROR
- WCB SPACE 4,15
- ** WCB - WRITE COMMAND BLOCK (PACKET).
- *
- * ENTRY (A) = COMMAND PACKET LENGTH.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- * (T6) = 0 IF STREAMING MODE.
- * (DT) = DRIVE TYPE.
- *
- * EXIT TO *ERR* IF ERROR.
- *
- * USES T1.
- *
- * CALLS BCS, DCM, FCN, GSS, SCM, STO.
- WCB2 LDN 0 GET STATUS
- RJM GSS
- RJM DCM DESELECT CONTROLLER
- LDML CPBF+OPC OPERATION CODE
- SHN -10
- SBN 7
- NJN WCB3 IF NOT SPIN UP/DOWN
- LDC SUTO SPIN UP TIMEOUT
- UJN WCB5 SET COMMAND TIMEOUT
- WCB3 SBN 0#28-7
- NJN WCB4 IF NOT FORMAT
- LDML CPBF
- LMN 0#E
- ZJN WCB4 IF NOT FULL PACK FORMAT
- LDC FMTO
- UJN WCB5 SET COMMAND TIMEOUT
- WCB4 LDC CBTO
- WCB5 RJM STO SET TIMEOUT
- WCB SUBR ENTRY/EXIT
- STM CPBF+PLN
- LDML CPBF+OPC
- STML LCMD,DI SAVE LAST COMMAND
- LDD DI SET COMMAND REFERENCE NUMBER
- STM CPBF+CRN
- RJM SCM SELECT CONTROLLER
- LDN CIOT
- RJM BCS INITIATE BUS EXCHANGE (COMMAND OUT)
- LDDL T6 STREAM OR INTERLOCK MODE
- LMC F0381 WRITE
- RJM FCN RAISE MASTER OUT
- ACN CH
- LDM CPBF+PLN CONVERT OCTET COUNT TO BYTE COUNT
- ADN 3
- SHN -1 TRANSFER COMMAND PACKET
- OAM CPBF,CH
- STD T1 SAVE RESIDUAL BYTE COUNT FOR *GSS*
- LDC 50000D
- WCB1 IJM WCB2,CH IF SLAVE IN DROPPED
- SBN 1
- NJN WCB1 IF NOT TIMED OUT
- LDN ECNR SLAVE/SYNC IN SIGNAL ERROR
- RJM ERR PROCESS ERROR
- WTC SPACE 4,10
- ** WTC - WAIT TRANSMISSION COMPLETE.
- *
- * EXIT TO *ERR* IF ERROR.
- *
- * CALLS CFE.
- WTC1 DCN CH+40 DEACTIVATE CHANNEL
- WTC SUBR ENTRY/EXIT
- RJM CFE CHECK FOR ERROR
- EJM WTC1,CH IF LAST WORD TAKEN OFF CHANNEL
- LDN ECHF CHANNEL HUNG FULL
- RJM ERR PROCESS CHANNEL ERROR
- WTR SPACE 4,10
- ** WTR - WRITE T REGISTER.
- *
- * ENTRY (CB) = *CBT* ORDINAL.
- * (RW) = 0 IF READ.
- *
- * CALLS FCN, SLB, SUA, WTC.
- WTR SUBR ENTRY/EXIT
- LDD RW
- ZJN WTR1 IF READ REQUEST
- LDD CB
- RJM SLB SET LINKAGE BITS
- WTR1 LDD CB
- RJM SUA GET UEM BUFFER ADDRESS
- LDD UA+1
- SHN 11 FORMAT ADDRESS
- SCN 7
- STML WTRA+2 SET ABSOLUTE ADDRESS
- LDD UA
- SHN 14 COMPLETE BUFFER ADDRESS
- LMD UA+1
- SHN 11-20 INSERT IN REGISTER IMAGE
- STM WTRA+1
- LDML WTRB,RW ISSUE DMA FUNCTION
- RJM FCN
- LDN 3 SET BLOCK LENGTH
- ACN CH
- OAM WTRA,CH OUTPUT BUFFER PARAMETERS
- RJM WTC
- UJP WTRX RETURN
- WTRA BSS 0 T REGISTER BUFFER
- CONL BPB BYTE LENGTH OF I/O TRANSFER
- CONL 0,0 UEM ADDRESS OF BUFFER
- WTRB BSS 0 DMA I/O FUNCTIONS
- CONL F0C00
- CONL F0D00
- TITLE COMMON DECKS.
- SPACE 4,10
- ** COMMON DECKS.
- *CALL COMPCHD
- *CALL COMPC2D
- RND$ EQU 0 DEFINE ROUNDING FOR *COMPDV5*
- *CALL COMPDV5
- EST$ EQU 0 ASSEMBLE *EST* ACCESS ROUTINE
- IFP$ EQU 0 FORCE REMOTE ASSEMBLY OF *IFP*
- *CALL COMPGFP
- *CALL COMPIFR
- M8K$ EQU 1 USE LONG INSTRUCTIONS
- *CALL COMPIMB
- QUAL TEO
- QUAL$ EQU 0 DO NOT FURTHER QUALIFY COMMON DECKS
- T5 EQU EO USE *EO* FOR EST ORDINAL IN COMMON DECKS
- *CALL COMPTGB
- *CALL COMPTLB
- QUAL *
- TGB EQU /TEO/TGB
- TLB EQU /TEO/TLB
- TITLE BUFFERS.
- SPACE 4,10
- ** BUFFERS.
- RPBF BSS 0 RESPONSE PACKET BUFFER
- CPBF EQU RPBF+1 COMMAND PACKET BUFFER
- ATTB EQU RPBF+10 ATTRIBUTE BUFFER
- ATTBL EQU 0#8A
- RBUF EQU ATTB+ATTBL REGISTER BUFFER
- RBUFL EQU 2*4
- SBUF EQU RBUF+RBUFL SCRATCH BUFFER
- SBUFL EQU 4*5
- EDBF EQU 20000-400-RTEDL ERROR DATA BUFFER
- ERRNG 400-EDBFL+RTEDL CODE DEPENDS ON VALUE
- MSGP EQU EDBF+EMBF MESSAGE PREFIX
- MSGL EQU MSGP+2 MESSAGE LENGTH
- MSGT EQU MSGL+2 MESSAGE TYPE
- BMLM EQU MSGT+1 BML MESSAGE HEADER
- MSID EQU BMLM MESSAGE ID
- PPCH EQU MSID+2 PP NUMBER / CHANNEL NUMBER
- UNIT EQU PPCH+1 UNIT NUMBER
- PORT EQU UNIT+1 PORT NUMBER
- ESTO EQU PORT+1 EST ORDINAL
- MISC EQU ESTO+1 RETRY COUNT / WRITE + RECOVERY FLAGS
- MFID EQU MISC+2 MAINFRAME ID
- SPACE 4,10
- * CHECK FOR BUFFER OVERLAP.
- ERRNG EDBF-SBUF-SBUFL *SBUF* OVERFLOWS INTO *EDBF*
- TITLE PRESET.
- * PRESET DATA LOCATIONS.
- CPCH CON 0 6/CPP NUMBER, 6/CHANNEL NUMBER
- PUTA CON 0,0 FWA OF *PUT*
- PUTN CON 0 NUMBER OF *PUT* ENTRIES
- OVLP EQU *+5 ORIGIN FOR OVERLAY *3DZ*
- PRS SPACE 4,15
- ** PRS - PRESET DRIVER FOR PROCESSING.
- *
- * ENTRY AT *PRS* WHEN DRIVER LOADED.
- *
- * EXIT TO *3DZ*.
- *
- * USES CR, CT, PA, UC, CM - CM+4, T2 - T7, WB - WB+4.
- *
- * CALLS CCP, IFP, MCI, SCT, SPA, STA.
- *
- * MACROS EXECUTE.
- PRS BSS 0 ENTRY
- LDD IR+2 SAVE *CCT* ORDINAL
- STM PRSA
- RJM IFP INITIALIZE *COMPGFP*
- LDN 0
- STD UC SET NO UNITS RESERVED
- STD PA SET NO REQUEST IN PROGRESS
- STD CT DEFAULT TO 10 MB CHANNEL
- RJM MCI MODIFY CHANNEL INSTRUCTIONS
- * LDN 0
- STD CR SET CHANNEL NOT RESERVED
- RJM SPA SET PP EXCHANGE PACKAGE ADDRESSES
- * SET TIME FOR NEXT GLOBAL MST CHECK, BASED ON CPP NUMBER.
- LDK RTCL GET CURRENT CLOCK
- CRD CM
- LDD CM+1 CURRENT TIME (SECONDS)
- SBD T4 ADJUST BY CPP NUMBER
- PJN PRS1 IF NO UNDERFLOW
- LDD T4
- PRS1 STM CETB PRESET TIME OF PREVIOUS GLOBAL MST CHECK
- RJM SCT SET CHANNEL TABLE ADDRESSES
- LDK BIOL
- CRD CM READ BUFFERED I/O POINTERS
- LDD CM+1
- SHN 14
- LMD CM+2
- ADN FTTP READ *FTT* POINTER
- CRD T6
- SBN FTTP-CCTP READ *CCT* POINTER
- CRD T4
- ADN CBTP-CCTP READ *CBT* POINTER
- CRD WB
- SBN CBTP-PUTP READ *PUT* POINTER
- CRD T2
- LDD T2+3 SAVE *PUT* ADDRESS
- LPN 77
- STM PUTA
- LDD T2+4
- STM PUTA+1
- AOD T2
- STM PUTN SAVE NUMBER OF *PUT* ENTRIES
- LDC T5*20000+TPUT SET *PUT* ADDRESSES
- RJM STA
- LDC ** ADJUST CHANNEL CONTROL TABLE POINTER
- PRSA EQU *-1
- SCN 77
- SHN CCTLS-6
- RAD CM
- SHN -14
- RAD T7
- LDC T7*20000+TCCT SET *CCT* ADDRESSES
- RJM STA
- .CM1 EQU CM+1
- LDC .CM1*20000+TFTT SET *FTT* ADDRESSES
- RJM STA
- .WB3 EQU WB+3
- LDC .WB3*20000+TCBT SET *CBT* ADDRESSES
- RJM STA
- LDN EMBP FETCH *EMB* POINTER
- CRD CM
- LDC .CM1*20000+TEMB SET *EMB* ADDRESSES
- RJM STA
- LDK ESTP SET ENDING EST ORDINAL FOR EST SEARCH
- CRD CM
- LDD CM+3
- STM LNEA
- LDK UEML
- CRD CM READ UEM POINTERS
- LDD CM
- SHN 11
- * SHN 11+EMSC
- SCN 77
- STM SUAA SET FWA OF UEM
- LDD CM
- SHN -3
- * SHN EMSC-3
- STM SUAB
- RJM CCP CHECK CALLING PROGRAM
- EXECUTE 3DZ CONTINUE PRESET
- TITLE PRESET SUBROUTINES.
- CCP SPACE 4,10
- ** CCP - CHECK CALLING PROGRAM.
- *
- * EXIT (A) = 0.
- * TO *PPR* IF UNAUTHORIZED CALL.
- *
- * USES CM - CM+4.
- *
- * CALLS DFM.
- *
- * MACROS MONITOR.
- CCP SUBR ENTRY/EXIT
- LDK NCPL
- CRD CM GET NUMBER OF CONTROL POINTS
- AOD CM+1
- SHN 7
- LMD CP
- ZJN CCPX IF DRIVER AT SYSTEM CP
- LDD MA MOVE MESSAGE BELOW ADDRESS 10000
- CWM CCPA,TR
- LDD MA
- CRM CSTB,TR
- ERRNG 10000-CSTB MESSAGE BUFFER MUST BE IN FIRST 4K OF PP
- ERRNG CSTB-MSFW MESSAGE BUFFER MUST NOT DESTROY PPR
- LDC CSTB
- RJM DFM ISSUE DAYFILE MESSAGE
- MONITOR ABTM
- LJM PPR EXIT TO PP RESIDENT
- CCPA DATA C* 1DA - UNAUTHORIZED CALL.*
- IFP SPACE 4,10
- ** IFP - INITIALIZE MANAGED TABLE PROCESSORS.
- LIST G
- IFP HERE
- LIST *
- MCI SPACE 4,15
- ** MCI - MODIFY CHANNEL INSTRUCTIONS.
- *
- * ENTRY (IR+4) = CONCURRENT CHANNEL NUMBER.
- *
- * EXIT (A) = 0.
- *
- * USES T1 - T3.
- *
- * CALLS C2D.
- *
- * MACROS CHTL.
- MCI1 RAIL T2 MODIFY CHANNEL INSTRUCTION
- AOD T1
- MCI2 LDML TCHA,T1 EXTRACT NEXT ADDRESS
- STDL T2
- LDD T3 CHECK END OF LIST
- CHTL *
- SBN CH
- NJN MCI1 IF MORE INSTRUCTIONS TO MODIFY
- MCI SUBR ENTRY/EXIT
- LDD IR+4
- LPN 37 EXTRACT CHANNEL NUMBER
- STD T3
- RJM C2D CONVERT FOR OPERATOR MESSAGES
- STM SRSG+13
- STM ERCR+10
- STM ERCD+16
- STM ERCE+16
- LDN 0 INITIALIZE REMOTE TABLE INDEX
- STD T1
- UJN MCI2 ENTER LOOP
- SCT SPACE 4,10
- ** SCT - SET CHANNEL TABLE ENTRY ADDRESSES.
- *
- * ENTRY (IR+4) = CHANNEL NUMBER.
- *
- * USES T1, T2, CM - CM+4.
- *
- * CALLS C2D, STA.
- SCT SUBR ENTRY/EXIT
- LDD IR+4
- STD T1 SET CHANNEL NUMBER
- STM DCEB+3
- RAM CPCH
- RJM C2D CONVERT FOR ERROR MESSAGE
- STM LMRA+6
- LCN 0 WORD OFFSET
- STD T2
- SCT1 AOD T2 INCREMENT WORD OFFSET
- LCN 5
- RAD T1
- PJN SCT1 IF CHANNEL NOT IN THIS WORD
- ADN 5
- STD T1
- RAM RCTA SET BYTE OFFSET
- LDD T1
- SHN 1 BYTE OFFSET * 2
- ADD T1 BYTE OFFSET * 3
- SHN 2 BYTE OFFSET * 12
- SBN 59D (BYTE OFFSET * 12) - 59
- LMC -0 59 - (BYTE OFFSET * 12)
- SBN 2
- SHN 6
- STM SRFA+1 SET DRIVER FLAG BIT POSITION
- LDK CHTP
- CRD CM
- LDD T2 SET ADDRESS OF WORD IN CHANNEL TABLE
- RAD CM+3
- SHN -14
- RAD CM+2
- .CM2 EQU CM+2
- LDC .CM2*20000+TCHT SET CHANNEL TABLE ADDRESSES
- RJM STA
- LJM SCTX RETURN
- SPA SPACE 4,10
- ** SPA - SET PP EXCHANGE PACKAGE ADDRESSES.
- *
- * EXIT (T4) = CPP NUMBER.
- *
- * USES CM - CM+4, T1 - T5.
- *
- * CALLS STA.
- SPA SUBR ENTRY/EXIT
- LDN PXPP
- CRD CM FETCH FWA OF PP EXCHANGE PACKAGE AREA
- ADN 1
- CRM AMEA,ON SET FIRST WORD OF PP EXCHANGE PACKAGE
- ADN PPCP-PXPP-2
- CRD T1 READ PP COMMUNICATION AREA POINTER
- LDD IA
- STM AMEA+4 SET (B0) NON-ZERO FOR EXCHANGE TEST
- SBD T1+4
- SHN -3 PP NUMBER
- SBN 24 CPP NUMBER
- STD T4
- SHN 6
- STM CPCH SAVE CPP NUMBER FOR BML MESSAGE
- SHN -6
- ADN 24-2
- STD T1 PP NUMBER - 2
- SHN 4
- ADD T1 (PP NUMBER - 2) * 21B
- RAD CM+4
- SHN -14
- RAD CM+3
- .CM3 EQU CM+3
- LDC .CM3*20000+TEXP SET EXCHANGE PACKAGE ADDRESSES
- RJM STA
- LJM SPAX RETURN
- STA SPACE 4,10
- ** STA - SET TABLE ADDRESSES.
- *
- * ENTRY (A) = 5/ TP, 13/ TA.
- * (TP) = TABLE POINTER.
- * (TA) = INSTRUCTION TABLE ADDRESS.
- *
- * EXIT (A) = 0.
- *
- * USES T1 - T3.
- STA1 STDL T2 SET INSTRUCTION ADDRESS
- LDM 1,T1
- RAM 1,T2 SET LOWER 12 BITS OF ADDRESS
- SHN -14
- ADI T1 SET UPPER 6 BITS OF ADDRESS
- LPN 37
- RAI T2
- AODL T3 ADVANCE INSTRUCTION LIST
- STA2 LDIL T3
- NJN STA1 IF NOT END OF TABLE
- STA SUBR ENTRY/EXIT
- STDL T3
- SHN -15 SET ADDRESS POINTER
- STD T1
- LDDL T3
- LPC 17777
- STDL T3
- UJN STA2 ENTER LOOP
- TITLE INSTRUCTION MODIFICATION TABLES.
- TCHA SPACE 4,10
- ** TABLE OF CHANNEL INSTRUCTIONS ADDRESSES.
- TCHA CHTB
- RSTC RESTORE CHANNEL INSTRUCTIONS
- TCBT SPACE 4,10
- ** TABLE OF INSTRUCTIONS REQUIRING FWA OF *CBT*.
- TCBT BSS 0
- TCBT HERE
- CON 0 TERMINATE TABLE
- TCCT SPACE 4,10
- ** TABLE OF INSTRUCTIONS REQUIRING ADDRESS OF *CCT* ENTRY.
- TCCT BSS 0
- TCCT HERE
- CON 0 TERMINATE TABLE
- TCHT SPACE 4,10
- ** TABLE OF INSTRUCTIONS REQUIRING FWA OF CHANNEL TABLE.
- TCHT BSS 0
- TCHT HERE
- CON 0 TERMINATE TABLE
- TEMB SPACE 4,10
- ** TABLE OF INSTRUCTIONS REQUIRING FWA OF *EMB*.
- TEMB BSS 0
- QUAL COMPIMB
- TEMB HERE
- QUAL *
- CON 0 TERMINATE TABLE
- TEXP SPACE 4,10
- ** TABLE OF INSTRUCTIONS REQUIRING FWA OF PP EXCHANGE PACKAGE.
- TEXP BSS 0
- TEXP HERE
- CON 0 TERMINATE TABLE
- TFTT SPACE 4,10
- ** TABLE OF INSTRUCTIONS REQUIRING FWA OF *FTT*.
- TFTT BSS 0
- TFTT HERE
- CON 0 TERMINATE TABLE
- TPUT SPACE 4,10
- ** TABLE OF INSTRUCTIONS REQUIRING FWA OF *PUT*.
- TPUT BSS 0
- TPUT HERE
- CON 0 TERMINATE TABLE
- SPACE 4,10
- * CHECK FOR OVERFLOW.
- ERRNG 17777-*-5 OVERFLOW PAST END OF PP
- SPACE 4,10
- TTL 1DA/3DZ - *DAS* DRIVER PRESET (PART 2).
- TITLE
- IDENT 3DZ,OVLP *DAS* DRIVER PRESET (PART 2).
- *COMMENT 1DA - *DAS* DRIVER PRESET (PART 2).
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1995.
- ORG OVLP
- QUAL 3DZ
- BST SPACE 4,15
- ** BST - BUILD STATE TABLES AND BML ERROR MESSAGE BUFFER.
- *
- * ENTRY (CPCH) = CPP NUMBER AND CHANNEL NUMBER.
- * (PUTA - PUTA+1) = ADDRESS OF *PUT*.
- * (PUTN) = NUMBER OF *PUT* ENTRIES.
- *
- * EXIT TO *MRS* WHEN PRESET COMPLETE.
- * TO *DAS6* IF CHANNEL DOWN.
- *
- * USES T4.
- *
- * CALLS CFD, DHE, IST, SMC.
- BST SUBR ENTRY
- * NOTE - THE FOLLOWING CALL TO *IST* DESTROYS *PPR* IN THIS PP.
- * NO CALLS TO *PPR* MAY BE MADE AFTER THIS POINT.
- RJM IST INITIALIZE DEVICE/CONTROLLER STATE TABLES
- RJM DHE DETERMINE HIGHEST EST ORDINAL
- RJM SMC SET MMF CONSTANTS
- RJM CFD CLEAR FLAGS AT DEADSTART
- * PRESET BML ERROR MESSAGE BUFFER.
- LDC EDBF
- STDL T4
- LDN 0
- BST1 STI T4
- AODL T4 ADVANCE BUFFER ADDRESS
- SHN 0-15
- ZJN BST1 IF NOT END OF BUFFER
- LDM CPCH SET CPP NUMBER AND CHANNEL NUMBER
- STM PPCH
- LDN MLDY SET DAYFILE CODE
- STM MSGT
- LDC ** (MAINFRAME ID)
- BSTA EQU *-1
- STM MFID
- * RESERVE CHANNEL AND INITIATE DRIVER.
- LDM DASB CHECK IF ANY DEVICES FOUND
- LMC DSTB
- ZJN BST3 IF NO DEVICES FOR THIS DRIVER
- LJM CCR2 RESERVE CHANNEL (RETURN TO *BST2*)
- BST2 NJN MRS IF CHANNEL NOT DOWN
- BST3 LJM DAS6 DROP CPP
- TITLE SUBROUTINES.
- MRS SPACE 4,10
- ** MRS - MASTER RESET SLAVES.
- *
- * EXIT TO *CMP* IF RESET SUCCESSFUL.
- * TO *DAS1* IF NO UNIT COULD BE INTERLOCKED.
- *
- * USES DI, T1.
- *
- * CALLS FCN, IDU, LDP, RCR.
- *
- * MACROS WAIT.
- MRS BSS 0 ENTRY
- LDC DSTB-DSTBE FIRST DEVICE TABLE ADDRESS
- STD DI
- MRS1 LDN DSTBE
- RAD DI
- LMM DASB
- ZJP DAS1 IF NO UNIT COULD BE INTERLOCKED
- RJM LDP LOAD DEVICE PARAMETERS
- RJM IDU INTERLOCK DISK UNIT
- NJN MRS1 IF UNIT NOT INTERLOCKED
- RJM RCR MASTER CLEAR CHANNEL
- LDN 1
- STD T1
- SHN 13-0 POSITION PORT NUMBER
- MRS3 LMML PAS,CT
- RJM FCN SELECT ADAPTER PORT
- LDC F9213
- RJM FCN ISSUE MASTER RESET
- WAIT 10
- LDDL LF LAST FUNCTION
- SCN 2
- RJM FCN CLEAR SYNC OUT
- SOD T1
- ZJN MRS3 IF ANOTHER PORT TO PROCESS
- LJM CMP EXIT/CLEAR UNIT INTERLOCK
- SPACE 4,10
- * CHECK FOR OVERFLOW.
- ERRNG EDBF-* OVERFLOW INTO BML ERROR MESSAGE BUFFER
- TITLE OVERLAYABLE SUBROUTINES.
- CFD SPACE 4,15
- ** CFD - CLEAR FLAGS AT DEADSTART.
- *
- * CLEAR FLAGS THAT ARE LEFT SET AFTER LEVEL 3 DEADSTART.
- * THE CORRESPONDING *BDT* INTERLOCKS ARE CLEARED BY *MTE*.
- *
- * EXIT FLAGS CLEARED IN *BDLL* AND *ACGL*.
- *
- * USES DI, T4, UC, CM - CM+4, CW - CW+4.
- *
- * CALLS CDS, CMC, IDU, IMR, LDP, LNE, RBD, UBP.
- *
- * MACROS CMSTF, MONITOR.
- CFD SUBR ENTRY/EXIT
- LDC DSTB-DSTBE
- STD DI
- CFD1 LDN DSTBE PROCESS NEXT DEVICE
- RAD DI
- LMM DASB
- ZJN CFDX IF NO MORE DEVICES TO PROCESS
- RJM LDP LOAD DEVICE PARAMETERS
- LDN 0 INITIALIZE PARTITION SEARCH
- CFD2 RJM LNE LOCATE NEXT EST FOR THIS DEVICE
- ZJN CFD1 IF NO MORE PARTITIONS
- RJM CDS CHECK DEVICE STATUS
- MJN CFD3 IF DEVICE NOT RECOVERED
- RJM RBD READ *BDLL*
- LDD CM+3 CHECK FLAGS FOR ERROR/RESTORE INTERLOCKS
- SHN 0-11
- LPN 3
- NJN CFD4 IF EITHER FLAG IS SET
- CFD3 LJM CFD12 PROCESS NEXT PARTITION
- * INTERLOCK DEVICE AND RECHECK FLAGS.
- CFD4 RJM IDU INTERLOCK DEVICE
- NJN CFD1 IF INTERLOCK NOT AVAILABLE
- RJM RBD READ *BDLL*
- LDD CM+3 CHECK FLAGS FOR ERROR/RESTORE INTERLOCKS
- SHN 0-11
- LPN 3
- ZJP CFD11 IF NEITHER FLAG IS SET
- STD T4 SAVE STATUS
- LDN ZERL CLEAR *BDT* ENTRY BUFFER
- CRD CW
- LDML DVTP,DI
- SHN 21-11
- PJN CFD5 IF NOT SHARED DEVICE
- * GET *BDT* ENTRY FROM *MTE*.
- LDD EO SET EST ORDINAL
- STD CM+4
- LDN GBDS GET *BDT* ENTRY
- STD CM+1
- MONITOR MTEM
- LDD MA READ *BDT* ENTRY
- CRD CW
- * PROCESS ERROR PROCESSING FLAG.
- CFD5 LDD T4
- LPN 2
- ZJN CFD8 IF *BDLL* ERROR PROCESSING FLAG NOT SET
- LDD CW CHECK IF *BDT* ERROR INTERLOCK SET
- ZJN CFD6 IF NOT SET
- LPN 77
- LMN ** (MACHINE INDEX)
- CFDA EQU *-1
- NJN CFD7 IF SET FOR A DIFFERENT MF
- UJN CFD8 DO NOT CLEAR FLAGS
- CFD6 CMSTF GDER CLEAR *ERROR RECOVERY IN PROGRESS* FLAG
- CFD7 LDN 0 CLEAR FLAG THAT SAYS THIS MF HAS INTERLOCK
- STD CM+2
- LDN 26 BIT TO CHANGE
- RJM UBP UPDATE *BDLL* PARAMETER
- * PROCESS RESTORE FLAG.
- CFD8 LDD T4
- LPN 1
- ZJN CFD11 IF *BDLL* RESTORE FLAG NOT SET
- LDD CW+1 CHECK IF *BDT* RESTORE SET
- ZJN CFD9 IF NOT SET
- LPN 77
- LMN ** (MACHINE INDEX)
- CFDB EQU *-1
- NJN CFD10 IF SET FOR A DIFFERENT MF
- UJN CFD11 DO NOT CLEAR FLAGS
- CFD9 CMSTF GDUR CLEAR *RESTORE IN PROGRESS* FROM *ACGL*
- CMSTF GDRI CLEAR *RESTORE INITIATION* FROM *ACGL*
- LDD EO SET EST ORDINAL
- STD CM+1
- LDN 0
- STD CM+2
- LDN SRCS CLEAR REMAINING CYLINDERS / 100B IN *ACGL*
- STD CM+3
- MONITOR STBM
- CFD10 LDN 0 CLEAR FLAG THAT SAYS THIS MF HAS INTERLOCK
- STD CM+2
- LDN 25 BIT TO CHANGE
- RJM UBP UPDATE *BDLL* PARAMETER
- * CLEAR UNIT INTERLOCK.
- CFD11 LDN 0 RELEASE UNIT INTERLOCK
- STD WB+4
- LDC 4000
- STD WB+3
- LDN DCBS
- RJM IMR
- * LDN 0 CLEAR UNIT INTERLOCKED FLAG
- STM RQLN,DI
- SOD UC ADJUST UNIT ACTIVITY COUNT
- RJM CMC CHECK MONITOR COMPLETE
- CFD12 LDD EO
- LJM CFD2 PROCESS NEXT PARTITION
- DHE SPACE 4,10
- ** DHE - DETERMINE HIGHEST EST ORDINAL.
- *
- * ENTRY (LNEA) = HIGHEST MASS STORAGE EST ORDINAL (+1).
- *
- * EXIT (LNEA) = HIGHEST EST ORDINAL FOR THIS DRIVER (+1).
- *
- * USES DI.
- *
- * CALLS LDP, LNE.
- DHE SUBR ENTRY/EXIT
- LDC DSTB
- STD DI
- DHE1 RJM LDP LOAD DEVICE PARAMETERS
- LDN 0 INITIALIZE PARTITION SEARCH
- DHE2 RJM LNE LOCATE NEXT EST ORDINAL
- ZJN DHE4 IF NO MORE PARTITIONS
- SBM DHEA
- MJN DHE3 IF NOT NEW HIGHEST EST ORDINAL
- LDD EO SET HIGHEST EST ORDINAL
- STM DHEA
- DHE3 LDD EO
- UJN DHE2 PROCESS NEXT PARTITION
- DHE4 LDN DSTBE ADVANCE DEVICE STATE TABLE ADDRESS
- RAD DI
- LMM DASB
- NJN DHE1 IF NOT END OF DEVICE STATE TABLE
- LDM DHEA SET HIGHEST EST ORDINAL FOR THIS DRIVER
- ADN 1
- STM LNEA
- UJN DHEX RETURN
- DHEA CON 0 HIGHEST EST ORDINAL FOR THIS DRIVER
- IST SPACE 4,15
- ** IST - INITIALIZE DEVICE STATE TABLE.
- *
- * ENTRY (PUTA - PUTA+1) = ADDRESS OF *PUT*.
- * (PUTN) = NUMBER OF *PUT* ENTRIES.
- *
- * USES CI, DI, FC, T1, T2, T5, CM - CM+4, CW - CW+4,
- * WB - WB+4.
- *
- * MACROS SFA.
- IST11 LDD DI DEFINE END OF DEVICE STATE TABLE
- STM DASB
- IST SUBR ENTRY/EXIT
- LDC CSTBL-1
- STDL DI
- IST1 LDN 0 CLEAR DEVICE AND CONTROLLER STATE TABLES
- STI DI
- SOD DI
- LMC DSTB
- NJN IST1 IF MORE TO CLEAR
- * LDN 0
- STD FC UNITS NOT CHECKED FOR FORMAT REQUEST
- STD T5 INITIALIZE *PUT* ORDINAL
- * PROCESS NEXT *PUT* ENTRY.
- IST2 AOD T5 CHECK NEXT *PUT* ENTRY
- LMM PUTN NUMBER OF *PUT* ENTRIES
- ZJN IST11 IF END OF PHYSICAL UNIT TABLE
- LDD T5
- SHN PUTLS CALCULATE *PUT* ADDRESS
- STD T1
- LDM PUTA FWA OF *PUT*
- SHN 14
- LMM PUTA+1
- ADD T1
- ADK UNCT GET UNIT CONTROL WORD
- CRD WB
- SFA EST,WB+1 FETCH EST ENTRY
- ADK EQDE
- CRD CM
- ADK EQAE-EQDE
- CRD CW
- LDD CM+1 CHECK FIRST CHANNEL
- STD T1
- LMD IR+4
- LPN 77
- ZJN IST3 IF CHANNEL FOR THIS DRIVER
- LDD CM+2 CHECK SECOND CHANNEL
- STD T1
- ZJN IST2 IF SECOND CHANNEL NOT DEFINED
- LMD IR+4
- LPN 77
- NJN IST2 IF NOT CHANNEL FOR THIS DRIVER
- * CREATE DEVICE STATE TABLE ENTRY FOR THIS DEVICE.
- IST3 LDD T5 SET *PUT* ORDINAL IN STATE TABLE
- STI DI
- ERRNZ PUTO CODE DEPENDS ON VALUE
- LDD T1
- LPC 200 SET PORT NUMBER
- SHN 11-7
- STM PNUN,DI
- LDD WB GET EQUIPMENT AND UNIT NUMBERS
- LPC 777
- RAM PNUN,DI APPEND TO PORT NUMBER
- LDN EQNS DETERMINE DEVICE TYPE
- STD T1
- IST4 SOD T1 CHECK NEXT DEVICE MNEMONIC
- LDM DM,T1
- LMD CM+3
- NJN IST4 IF DEVICE MNEMONIC DOES NOT MATCH
- LDD T1 SET DEVICE TYPE INDEX
- LMC 1S13 SET *CHECK DRIVE TYPE* FLAG
- STML DVTP,DI
- LDD CM CHECK FOR SHARED DEVICE
- LPC 1000
- ZJN IST5 IF NOT SHARED DEVICE
- RAML DVTP,DI SET *MMF SHARED DEVICE* FLAG
- LDML DM,T1
- SHN 0-17 NONZERO IF PARITY DEVICE
- SHN 12-0
- RAML DVTP,DI SET *ENABLE MMF PARITY DEVICE ACCESS* FLAG
- IST5 LDD CW+3
- SHN 0-13 NONZERO IF PARTITIONED DEVICE
- SHN 17-0
- RAML DVTP,DI SET *PARTITIONED DEVICE* FLAG
- * FIND CONTROLLER STATE TABLE ENTRY FOR THIS DEVICE.
- LDN 0 INITIALIZE CONTROLLER STATE TABLE INDEX
- STD T1
- IST6 LDD T1 CHECK NEXT CONTROLLER
- SHN 2
- ERRNZ CSTBE-4 CODE DEPENDS ON VALUE
- ADC CSTB
- STD CI SET CONTROLLER STATE TABLE ADDRESS
- LDML CTST,CI
- NJN IST7 IF CONTROLLER ALREADY IDENTIFIED
- LDD DI SET *DSTB* ADDRESS OF FIRST DEVICE
- LMC 1S14 SET *INITIAL RESET REQUIRED* FLAG
- STML CTST,CI
- UJN IST8 SET CONTROLLER STATE TABLE INDEX
- IST7 LPC 7777 *DSTB* OF FIRST DEVICE ON CONTROLLER
- STD T2
- LDM PNUN,T2 COMPARE CONTROLLER AND PORT NUMBERS
- LMM PNUN,DI
- SHN -6
- ZJN IST8 IF SAME CONTROLLER AND PORT NUMBERS
- AOD T1 CHECK NEXT CONTROLLER
- LMN MXCN
- NJN IST6 IF NOT END OF CONTROLLER STATE TABLE
- STI DI CLEAR DEVICE STATE TABLE ENTRY
- ERRNZ PUTO CODE DEPENDS ON VALUE
- STM PNUN,DI
- STM DVTP,DI
- UJN IST9 IGNORE DEVICE AND PROCESS NEXT *PUT*
- IST8 LDD T1 SET CONTROLLER STATE TABLE INDEX
- SHN 14
- RAML PNUN,DI
- LDN DSTBE ADVANCE DEVICE STATE TABLE ADDRESS
- RAD DI
- LMC DSTBL
- ZJN IST10 IF DEVICE STATE TABLE IS FULL
- IST9 LJM IST2 PROCESS NEXT *PUT* ENTRY
- IST10 LJM IST11 DEFINE END OF DEVICE STATE TABLE
- SMC SPACE 4,10
- ** SMC - SET MMF CONSTANTS.
- *
- * PERFORM CODE MODIFICATION FOR MMF OPERATION.
- *
- * USES CM - CM+4.
- *
- * MACROS ISTORE.
- SMC SUBR ENTRY/EXIT
- LDK MMFL GET MMF WORD
- CRD CM
- LDD CM SET MAINFRAME ID
- STM BSTA
- LDD CM+1
- SHN 21-11
- MJN SMC1 IF SHARED BUFFERED DEVICES CONFIGURED
- ISTORE CRIA,(UJN CRIX) DISABLE MMF SLAVE RESET INTERLOCK
- ISTORE SRIA,(UJN SRIX)
- ISTORE CAAA,(UJN CAA8) DISABLE CHECK FOR MMF PARITY RESTORE
- ISTORE CETA,(UJN CETX)
- UJN SMCX RESERVE CHANNEL
- SMC1 LDD CM+3 SET MACHINE MASKS
- RAM IPRB
- LPN 77
- RAM CABA
- LDD CM+4 SET MACHINE INDEX
- RAM CFDA
- STM CFDB
- LDD CM+4 MACHINE INDEX
- ADN GPDA-1 *ACGL* BIT NUMBER
- LMC LCNI
- STM DMPA
- LMC LDNI&LCNI
- STM EMPA
- UJP SMCX RETURN
- SPACE 4,10
- * CHECK FOR OVERFLOW.
- ERRNG 17777-*-5 OVERFLOW PAST END OF PP
- QUAL *
- TTL 1DA - DISK ARRAY SUBSYSTEM (DAS) DRIVER.
- END
cdc/nos2.source/opl871/1da.txt ยท Last modified: 2023/08/05 17:24 by Site Administrator