cdc:nos2.source:opl871:1xd
Table of Contents
1XD
Table Of Contents
- [00002] 1XD - NOS XMD (9853) DRIVER.
- [00010] CM3/XMD3 (9853) DRIVER.
- [00202] CONSTANTS AND DEFINITIONS.
- [00536] MACROS.
- [00540] TBLM - CREATE TABLE ENTRY MACRO.
- [00563] CBTE - CONTROL BUFFER TABLE ENTRY.
- [00578] CCTE - CHANNEL CONTROL TABLE ENTRY.
- [00593] CHTE - CHANNEL TABLE ENTRY.
- [00608] EMBE - ERROR MESSAGE TABLE ENTRY.
- [00623] EXPE - EXCHANGE PACKAGE ADDRESS ENTRY.
- [00638] PUTE - PHYSICAL UNIT TABLE ENTRY.
- [00653] MONITOR - REQUEST MONITOR FUNCTION.
- [00671] WAIT - DO NOTHING FOR SPECIFIED TIME.
- [00701] MAIN PROGRAM.
- [00703] XMD - MAIN PROGRAM.
- [00743] READ / WRITE PROCESSING.
- [00745] PIO - READ / WRITE PROCESSING.
- [00858] LIST DEVICE ATTRIBUTE.
- [00860] LDA - LIST DEVICE ATTRIBUTE IN DAYFILE.
- [01007] DIAGNOSTIC PROCESSING.
- [01009] RND - RUN DIAGNOSTICS.
- [01044] SELECTIVE RESET PROCESSING.
- [01046] SRS - SELECTIVE RESET PROCESSING.
- [01185] INTERRUPT DRIVEN SUBROUTINES.
- [01187] BOR - BREAK OPPOSITE RESERVE.
- [01218] EDR - EXECUTE DRIVE (POWER ON) RESET.
- [01256] GDS - GET DRIVE STATUS.
- [01293] RTC - RETURN TO CALLER.
- [01306] SCA - SET CONTROLLER ATTRIBUTES.
- [01348] SDA - SET DRIVE ATTRIBUTES.
- [01440] SUBROUTINES.
- [01442] ACE - ANALYZE CHANNEL ERROR.
- [01469] AME - ATTEMPT MONITOR EXCHANGE.
- [01503] ATT - PROCESS ATTENTION.
- [01564] CCO - CHECK FOR CONTROLLER OVER TEMPERATURE.
- [01641] CCR - CHECK FOR CHANNEL REQUEST.
- [01686] CDA - CONVERT PHYSICAL TO LOGICAL DISK ADDRESS.
- [01740] CEA - CLEAR *ENABLE CONTROLLER ACTIVITY* REQUEST.
- [01782] CFR - CHECK *PUT* FOR REQUEST.
- [01837] CMC - CHECK MONITOR COMPLETE.
- [01864] CMP - COMPLETE PROCESSING.
- [01934] CPF - CLEAR *PUT* FLAG IN *PILL*.
- [01968] CSR - CLEAR SPECIAL REQUEST.
- [01987] CTO - CHECK TIMEOUT.
- [02004] DCR - DROP CHANNEL RESERVATION.
- [02026] ECA - ENABLE CONTROLLER ACTIVITY.
- [02056] EIO - ENTER I/O REQUEST QUEUE.
- [02097] ERR - PROCESS ERRORS.
- [02551] ICR - ISSUE CONTROLLER RESET.
- [02598] IDM - ISSUE DAYFILE MESSAGE.
- [02643] IDU - INTERLOCK DISK UNIT.
- [02705] IIO - INITIATE I/O.
- [02769] IMF - ISSUE MONITOR FUNCTION.
- [02788] IMR - INITIATE MONITOR REQUEST.
- [02815] IOM - ISSUE OPERATOR MESSAGE.
- [02851] ISR - IDENTIFY AND PROCESS SPECIAL REQUEST.
- [02985] LDP - LOAD DEVICE PARAMETERS.
- [03029] LND - LOCATE NEXT DRIVE (ON SPECIFIED CONTROLLER).
- [03063] LSD - LOCATE SELECTED DRIVE IN *DSTB*.
- [03091] PEF - PROCESS ERROR FLAGS.
- [03126] RCS - REMOVE CHANNEL FROM SYSTEM USE.
- [03153] RCT - READ CHANNEL TABLE.
- [03169] RLB - READ LINKAGE BITS.
- [03212] RMR - READ CHANNEL STATUS REGISTER.
- [03238] SCD - STORE *CPD* DATA.
- [03262] SEC - SET ERROR CODE.
- [03327] SFR - SEARCH FOR CONSECUTIVE REQUEST.
- [03398] SLB - SET LINKAGE BITS.
- [03451] SMC - SEARCH FOR MAJOR CATEGORY SUBSTATUS.
- [03476] SRF - SET DRIVER RELOAD FLAG.
- [03507] SRP - SEARCH RESPONSE PACKET.
- [03542] STF - SET TRACK FLAW, IF TRACK WITHIN USER AREA.
- [03600] STO - SET TIMEOUT.
- [03619] SUA - SET UEM ADDRESS.
- [03649] SUI - SET UNIT INTERLOCK.
- [03682] TMSE - TABLE OF MASS STORAGE ERROR CODES.
- [03708] TMSK - TABLE OF UNIT MASKS.
- [03726] UBP - UPDATE *BDLL* PARAMETER.
- [03757] UEC - UPDATE MST ERROR COUNT.
- [03783] UHD - UNPACK HEX DATA.
- [03840] VIS - VERIFY INTERRUPT SOURCE.
- [03894] WLB - WRITE LINKAGE BITS.
- [03936] WMC - WAIT MAINTENANCE CHANNEL EMPTY.
- [03959] WTC - WAIT TRANSMISSION COMPLETE.
- [03984] CHANNEL SUBROUTINES.
- [03986] BCS - DEFINE INFORMATION TRANSFER.
- [04012] CFE - CHECK FOR I/O ERROR.
- [04031] CTC - CHECK TRANSFER COMPLETE.
- [04058] DCM - DESELECT CONTROL MODULE.
- [04090] DTM - DETERMINE TRANSFER MODE.
- [04120] ECI - EXAMINE CONTROLLER INTERRUPTS.
- [04203] FCN - ISSUE FUNCTION.
- [04230] GIS - GET INTERRUPT STATUS.
- [04257] GSS - GET SLAVE STATUS.
- [04313] IHD - INTERRUPT HANDLER.
- [04376] RCR - RESET CHANNEL REGISTERS.
- [04401] RIF - RESET INTERFACE.
- [04442] RRP - READ RESPONSE PACKET.
- [04477] RSR - READ SLAVE RESPONSE.
- [04496] RTR - READ *T* REGISTER.
- [04511] SAP - SELECT ADAPTOR PORT.
- [04525] SCM - SELECT CONTROL MODULE.
- [04555] WCB - WRITE COMMAND BLOCK (PACKET).
- [04598] WTR - WRITE *T* PRIME REGISTER.
- [04640] MISCELLANEOUS.
- [04686] INSTRUCTION MODIFICATION TABLES.
- [04739] PRESET.
- [04741] PRS - PRESET DRIVER FOR PROCESSING.
- [04829] PRESET SUBROUTINES.
- [04831] CCP - CHECK CALLING PROGRAM.
- [04854] IST - INITIALIZE DEVICE STATE TABLE.
- [04933] MCI - MODIFY CHANNEL INSTRUCTIONS.
- [04963] MRS - MASTER RESET SLAVES.
- [04991] SCT - SET CHANNEL TABLE ENTRY ADDRESSES.
- [05036] SPA - SET PP EXCHANGE PACKAGE ADDRESSES.
- [05070] STA - SET TABLE ADDRESSES.
Source Code
- 1XD.txt
- IDENT 1XD,CM3D
- TITLE 1XD - NOS XMD (9853) DRIVER.
- CIPPU ,S
- MEMSEL 8
- BASE M
- SST
- *COMMENT 1XD - CM3/XMD3 (9853) DRIVER.
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- SPACE 4,10
- *** 1XD - CM3/XMD3 (9853) DRIVER.
- *
- * P. D. HAAS. 88/02/26.
- SPACE 4,10
- *** *1XD* IS THE DRIVER FOR THE XMD (9853) DISK STORAGE SUBSYSTEM.
- *
- * THE XMD DISK DRIVES ARE SUPPORTED AS BUFFERED I/O
- * DEVICES. REQUESTS TO BE PROCESSED BY *1XD* ARE POSTED
- * BY *CPUMTR* IN THE BUFFERED I/O TABLES IN *CMR*.
- * *1XD* INTERLOCKS UNITS, DELINKS BUFFERS, AND COMPLETES
- * SAID REQUESTS BY ISSUING APPROPRIATE *BIOM* FUNCTIONS.
- *
- * EACH COPY OF *1XD* WILL SUPPORT ONE CONCURRENT CHANNEL
- * CONFIGURED WITH THE INTELLIGENT PERIPHERAL INTERFACE (IPI)
- * AND IS THE SOLE DRIVER FOR ALL XMD DISKS ON THAT CHANNEL.
- * *1XD* MUST BE LOADED INTO A CONCURRENT PP, IN THE SAME
- * BANK AS THE CHANNEL IT IS TO SERVICE.
- *
- * EACH COPY OF THE DRIVER CAN SERVICE UP TO SIXTEEN XMD
- * UNITS IN ANY CONFIGURATION MIX OF CONTROL MODULES AND
- * DRIVES COUPLED TO EITHER PORT OF THE IPI ADAPTOR.
- *
- * *1XD* SCANS THROUGH THE *PUT* ENTRIES IN A CIRCULAR FASHION
- * LOOKING FOR REQUESTS TO PROCESS. ONCE A REQUEST IS FOUND,
- * *1XD* USES THE PHYSICAL DISK AND UEM ADDRESSES IN THE
- * CORRESPONDING *CBT* ENTRY TO DETERMINE THE ACTION TO BE
- * TAKEN. *1XD* 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
- * *1XD* WILL RESUME ITS SEARCH THROUGH THE *PUT* WITH THE
- * *PUT* ENTRY IMMEDIATELY FOLLOWING THE ONE JUST PROCESSED.
- SPACE 4,10
- *** ORGANIZATION OF THE 9853 (MEASUREMENTS IN DECIMAL).
- *
- * EQUIPMENT TYPE *DN*
- *
- * UNITS/LOGICAL DEVICE 1
- *
- * PHYSICAL ORGANIZATION:
- *
- * WORDS/PHYSICAL SECTOR 256
- * PHYSICAL SECTORS/TRACK 21
- * PHYSICAL TRACKS/CYLINDER 19
- * CYLINDERS/DEVICE 1409
- * WORDS/DEVICE 143,861,760
- *
- * LOGICAL ORGANIZATION:
- *
- * WORDS/LOGICAL SECTOR 64
- * LOGICAL SECTORS/PHYSICAL SECTOR 4
- * LOGICAL SECTORS/LOGICAL TRACK 1120
- * LOGICAL TRACKS/DEVICE 2007
- *
- * MAXIMUM SUSTAINED DATA RATE 312 K WORDS/SECOND
- 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,10
- *** 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 MH426-DXX,CMN.
- *
- * CONTROL MODULE N ON CHANNEL CC IS RUNNING MICROCODE REVISION
- * LEVEL XX.
- *
- *
- * DNEEE, UNN,PS=XXXXXX.
- *
- * UNIT NN OF THE 9853 DEVICE WITH EST ORDINAL EEE HAS THE PACK
- * SERIAL NUMBER XXXXXX.
- SPACE 4,10
- *** OPERATOR MESSAGES.
- *
- * EQORD, DIAGNOSTICS RUNNING.
- *
- * EQORD, SPIN UP PENDING.
- *
- * CM3 BEING RESET ON CCHNN.
- *
- * CM3 RESET FAILURE ON CCHNN.
- *
- * MR ERROR.
- SPACE 4,10
- *** 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 DIALED INTO THE PORT IN USE ON EACH CONTROL MODULE.
- SPACE 4,10
- *** 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) THIS PROGRAM EXCHANGES *CPUMTR* WITHOUT WAITING FOR
- * THE REQUEST TO COMPLETE. ROUTINE *CMC* SHOULD BE CALLED
- * IF THE *MONITOR* MACRO IS TO BE USED WHILE THERE IS A
- * POSSIBILITY OF AN OUTSTANDING MONITOR REQUEST.
- *
- * 3) THE DEVICE STATE TABLE IS BUILT AT LOCATION *EXR* IN
- * PP RESIDENT, THEREFORE IT IS NOT POSSIBLE TO USE THE
- * *EXR* AND *SMS* ROUTINES.
- 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 *
- *CALL COMSLSD
- *CALL COMSMSC
- *CALL COMSMSP
- *CALL COMSPIM
- *CALL COMS1DS
- SPACE 4,10
- ** INTERFACE SPECIFICATIONS.
- IF -MIC,DM,2
- DM MICRO 1,2,*DN* DEFAULT DEVICE MNEMONIC
- DN MICRO 1,3,*1XD* DEFAULT DRIVER NAME
- .1 SET 0
- .A ECHO ,TY=(DN),MI=(RM0124)
- .B IFC EQ,*TY*"DM"*
- .1 SET 1
- BMID EQU MI BML ERROR MESSAGE ID
- STOPDUP
- .B ENDIF
- .A ENDD
- IFEQ .1,0,1
- ERR UNKNOWN DEVICE TYPE - "DM"
- CYUN EQU CYUN"DM" CYLINDERS / UNIT
- PSBF EQU PSBF"DM" PHYSICAL SECTORS / CONTROL BUFFER
- PTCY EQU PTCY"DM" PHYSICAL TRACKS / CYLINDER
- PSPT EQU PSPT"DM" PHYSICAL SECTORS / PHYSICAL TRACK
- CFLP EQU CFS"DM" LOGICAL - PHYSICAL CONVERSION FACTOR
- LSCY EQU PSPT*PTCY*LSPS"DM" LOGICAL SECTORS / CYLINDER
- LSLT EQU SL"DM"+GS"DM" LOGICAL SECTORS / LOGICAL TRACK
- LSPT EQU LSPT"DM" LOGICAL SECTORS / PHYSICAL TRACK
- MCLT EQU MCLT"DM" MAINTENANCE CYLINDER LOGICAL TRACK
- 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
- RC EQU 36 REQUEST COUNT
- CN EQU 37 CONTROLLER NUMBER
- MS EQU 40 MAJOR STATUS (RESPONSE PACKET)
- RT EQU 41 STATUS RESPONSE TYPE
- TO EQU 42 COMMAND TIMEOUT
- SF EQU 43 DEVICE SELECTED FLAG
- UC EQU 44 UNIT ACTIVITY COUNT
- ERRNZ SF+1-UC CODE DEPENDS ON VALUE
- RW EQU 45 READ / WRITE FLAG
- PA EQU 46 PROCESSOR ADDRESS
- DI EQU 47 DEVICE INDEX
- CR EQU 57 CHANNEL RESERVED STATUS
- RF EQU 60 RESET IN PROGRESS FLAG
- LF EQU 61 LAST FUNCTION
- TA EQU 62 DEVICE STATE TABLE ADDRESS
- CW EQU 63 - 67 CM WORD BUFFER
- ****
- SPACE 4,10
- ** IPI ADAPTOR FUNCTION CODES.
- F0000 EQU 0#0000 MASTER CLEAR
- F0200 EQU 0#0200 READ CONTROL REGISTER
- F0300 EQU 0#0300 WRITE CONTROL REGISTER
- F0600 EQU 0#0600 READ ERROR 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* PRIME REGISTER
- F0C00 EQU 0#0C00 DMA READ FROM ADAPTOR
- F0D00 EQU 0#0D00 DMA WRITE TO ADAPTOR
- F0E00 EQU 0#0E00 CLEAR *T* REGISTERS
- F0062 EQU 0#0062 PORT A SELECT
- F0862 EQU 0#0862 PORT B SELECT
- F7E42 EQU 0#7E42 CHANNEL TRANSFER RATE
- SPACE 4,10
- ** IPI CHANNEL FUNCTION CODES.
- F00F1 EQU 0#00F1 READ ERROR REGISTER
- * BUS CONTROL FUNCTIONS.
- 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
- BCPL EQU 06 BASIC COMMAND PACKET LENGTH
- BRPL EQU 10 BASIC RESPONSE PACKET LENGTH
- IOPL EQU 20 I/O COMMAND PACKET LENGTH
- CPBFL EQU 32 COMMAND PACKET BUFFER LENGTH
- RPBFL EQU 77 RESPONSE PACKET BUFFER LENGTH
- SPACE 4,10
- ** COMMAND PACKET OPERATION CODES.
- C0200 EQU 0#0200 REPORT ATTRIBUTES
- C0209 EQU 0#0209 LOAD ATTRIBUTES
- C020A EQU 0#020A SAVE ATTRIBUTES
- C0301 EQU 0#0301 REPORT ADDRESSEE STATUS
- C0401 EQU 0#0401 RELEASE RESERVE
- C0402 EQU 0#0402 PRIORITY RESERVE
- C0700 EQU 0#0700 SET OPERATING MODE
- C0800 EQU 0#0800 ABORT COMMAND
- C1005 EQU 0#1005 BLOCK READ
- C2005 EQU 0#2005 BLOCK WRITE
- C8100 EQU 0#8100 DRIVE DIAGNOSTICS
- SPACE 4,10
- ** COMMAND PACKET PARAMETER ID-S.
- P01D1 EQU 0#01D1 PERFORMANCE LOG
- P0254 EQU 0#0254 DRIVE RESET
- P02D2 EQU 0#02D2 MASTER TERMINATE
- P02D3 EQU 0#02D3 EXTENT RESPONSE
- P0351 EQU 0#0351 DISK MODES
- P036C EQU 0#036C REQUEST ATTRIBUTE
- P0551 EQU 0#0551 DISK DATA BLOCK SIZE
- P0931 EQU 0#0931 COMMAND EXTENT
- P0951 EQU 0#0951 TRANSFER SIZE OVERRIDE
- SPACE 4,10
- ** SUBSTATUS PARAMETER ID CODES.
- ID16 EQU 0#16 MACHINE EXCEPTION FOR CONTROLLER
- ID17 EQU 0#17 COMMAND EXCEPTION FOR CONTROLLER
- ID19 EQU 0#19 CONDITIONAL SUCCESS FOR CONTROLLER
- ID24 EQU 0#24 INTERVENTION REQUIRED FOR DRIVE
- ID26 EQU 0#26 MACHINE EXCEPTION FOR DRIVE
- 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
- ** FAULT ANALYSIS CODES.
- ECPE EQU 1 CHANNEL PARITY ERROR (CHPE)
- ECIE EQU 2 IPI CHANNEL ERROR
- ECER EQU 4 CHANNEL DETECTED ERROR (CHFE)
- ECCM EQU 5 CHANNEL DETECTED CM ERROR
- ECHF EQU 7 CHANNEL HUNG FULL
- ETIT EQU 10 INTERRUPT TIMEOUT (FTOE)
- ETFN EQU 11 CHANNEL FUNCTION TIMEOUT
- EDPE EQU 14 DATA PARITY ERROR (PARE)
- EDNR EQU 20 DEVICE NOT READY (NRDE)
- EIDT EQU 24 INCOMPLETE DATA TRANSFER (IDTE)
- ERSS EQU 30 RESERVED SUBSTATUS (DSTE)
- EDFM EQU 31 DEFECT MANAGEMENT ERROR
- EMME EQU 32 MESSAGE/MICROCODE EXCEPTION
- ETSL EQU 33 SELECT TIMEOUT
- ESUF EQU 34 SPIN-UP FAILURE (DSTE)
- ESDF EQU 35 SPIN-DOWN FAILURE
- ETTC EQU 36 TRANSFER COMPLETE TIMEOUT
- EIVR EQU 37 INTERVENTION REQUIRED
- EAPR EQU 40 ALTERNATE PORT EXCEPTION (DSTE)
- EMEX EQU 41 MACHINE EXCEPTION ERROR
- ECEX EQU 42 COMMAND EXCEPTION ERROR
- EIOS EQU 44 I/O INITIATION ERROR (DSTE)
- ERPE EQU 45 REGISTER PARITY ERROR
- ERDS EQU 46 REPORT DRIVE STATUS ERROR
- ECMA EQU 50 COMMAND ABORTED ERROR (DSTE)
- ECCS EQU 51 CONDITIONAL SUCCESS
- ECIC EQU 52 COMMAND INCOMPLETE
- EUST EQU 53 TRANSFER UNSUCCESSFUL
- EDTF EQU 54 DIAGNOSTIC FAULT (DDFE)
- EDRS EQU 55 DRIVE RESET FAILURE
- ECNR EQU 60 SLAVE IN DID NOT DROP (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 (CHFE)
- ECOT EQU 65 CONTROLLER OVER TEMPERATURE
- EDRE EQU 70 DRIVE RESERVE ERROR (DRVE)
- ECRE EQU 74 CONTROLLER RESET ERROR (RAME)
- ECMD EQU 75 CONTROL MODULE DEAD
- SPACE 4,10
- ** DEVICE STATE TABLE DEFINITIONS.
- LOC 0
- PUTO BSS 1 *PUT* ORDINAL
- PNUN BSS 1 PORT/EQUIPMENT/UNIT NUMBERS (3/P,3/E,6/U)
- ADDR BSS 1 PROCESSOR ADDRESS
- RADD BSS 1 RETURN ADDRESS
- ATTN BSS 1 ATTENTION RETURN
- EEST BSS 1 EXPECTED EXECUTION STATUS
- RWST BSS 1 READ / WRITE STATUS
- RQLN BSS 1 REQUEST QUEUE LENGTH
- CBCT BSS 1 CUMULATIVE BUFFER COUNT
- CYLN BSS 1 CYLINDER ON SEEK
- TKSN BSS 1 TRACK + SECTOR ON SEEK
- ERCT BSS 1 ERROR COUNT
- SREQ BSS 1 SPECIAL REQUEST
- * IPPS - I/O PREPROCESSING STATUS.
- * BIT 15 = DRIVE DIAGNOSTICS IN PROGRESS.
- * BIT 14 = *SET DRIVE ATTRIBUTES* REQUIRED.
- * BIT 13 = *BREAK OPPOSITE RESERVE* REQUIRED.
- * BITS 11-0 = CBT ORDINAL FOR CURRENT I/O REQUEST.
- IPPS BSS 1 I/O PREPROCESSING STATUS
- LCMD BSS 1 LAST COMMAND OP CODE
- ESAD BSS 1 ERROR STEP ADDRESS
- ENAD BSS 1 ERROR NEXT ADDRESS
- RPST BSS 1 RESPONSE PACKET STATUS
- IOST BSS 1 READ/WRITE STATUS
- ERAD BSS 1 ERROR RETURN ADDRESS
- FTOC BSS 2 FUNCTION TIMEOUT CLOCK VALUE
- DSTBE BSS 0 LENGTH OF STATE TABLE ENTRY
- LOC 0
- SPACE 4,15
- **** ASSEMBLY CONSTANTS.
- CH EQU 16 CHANNEL NUMBER
- NRAP EQU 2 NUMBER OF IPI ADAPTOR PORTS
- MXCN EQU 10 MAXIMUM NUMBER OF CONTROLLERS / PORT
- MXDC EQU 10 MAXIMUM NUMBER OF DRIVES / CONTROLLER
- MXND EQU 10*2 MAXIMUM NUMBER OF UNITS / DRIVER
- DSTB EQU EXR START OF DEVICE STATE TABLES
- DSTBL EQU DSTB+DSTBE*MXND LWA+1 OF DEVICE STATE TABLES
- * CSTB - CONTROLLER STATUS BLOCK.
- * ONE ENTRY PER CONTROLLER NUMBER PER PORT.
- *
- * BIT 15 SLAVE RESET IN PROGRESS
- * BIT 14 LOGICAL RESET PENDING
- * BITS 0-11 DEVICE INDEX OF FIRST DRIVE ON CONTROLLER
- CSTB EQU DSTBL CONTROLLER STATUS BLOCK
- CSTBS EQU 10*2 LENGTH OF CONTROLLER STATUS BLOCK
- OCMD MAX PPFW,CSTB+CSTBS DRIVER ORIGIN
- MNCS EQU 1 MINIMUM NUMBER OF CYLINDERS / STREAM
- MXCS EQU 2 MAXIMUM NUMBER OF CYLINDERS / STREAM
- MNSS EQU MNCS*PSPT*PTCY MINIMUM SECTORS / STREAM
- MXSS EQU MXCS*PSPT*PTCY MAXIMUM SECTORS / STREAM
- MNBS EQU MNSS/PSBF-1 MINIMUM NUMBER OF BUFFERS / STREAM
- MXBS EQU MXSS/PSBF-1 MAXIMUM NUMBER OF BUFFERS / STREAM
- DRFM EQU 1000 DIRECTION FLAG MASK
- ILFM EQU 4000 INTERLOCK FLAG MASK
- CSRC EQU 4 CHANNEL SWITCH RETRY COUNT
- MERC EQU CSRC*2 ERROR PROCESSING RETRY COUNT
- * 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
- BSSN 1 RESERVED
- 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
- .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.
- SPACE 4,10
- ** MACRO DEFINITIONS.
- 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,10
- ** 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,10
- ** 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,10
- ** 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,10
- ** 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,10
- ** 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
- PUTE SPACE 4,10
- ** 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
- 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.
- *
- * USES T0.
- 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
- ENDM
- TITLE MAIN PROGRAM.
- XMD SPACE 4,10
- ** XMD - MAIN PROGRAM.
- ORG OCMD
- RICHI BEGIN CHANNEL INSTRUCTION MODIFICATION
- CM3D LJM PRS PRESET DRIVER
- XMD EQU *-1
- LDM XMD PRESERVE RETURN ADDRESS
- STM ADDR,DI
- XMD1 RJM DCM DESELECT CONTROLLER
- XMD2 LDD TA
- LMC DSTBL (ADJUSTED BY *IST*)
- XMDA EQU *-1
- NJN XMD5 IF NOT END OF DEVICE STATE TABLE
- RJM CCR
- ZJN XMD7 IF CHANNEL DOWN
- LCN 0
- RJM IOM REFRESH OPERATOR MESSAGE
- XMD4 LDC DSTB
- STD TA RESTART STATE TABLE SCAN
- XMD5 LDD TA
- STD DI SET DEVICE INDEX
- ADN DSTBE
- STD TA ADVANCE TABLE ADDRESS
- RJM CFR
- UJN XMD2 CHECK NEXT DEVICE
- XMD7 UJN *+2 FIRST PASS
- XMDB EQU XMD7
- UJN XMD8 DROP PP ON SECOND PASS
- SOM XMDB
- LDC CMP8 CHANGE PATH THRU *CFR*
- STM CFRA
- UJN XMD4 LOOP THRU DEVICE STATE TABLE
- XMD8 MONITOR DPPM DROP PP
- LJM PPR EXIT TO PPR
- MSG1 DATA C* "DN" - UNAUTHORIZED CALL.*
- TITLE READ / WRITE PROCESSING.
- PIO SPACE 4,10
- ** PIO - READ / WRITE PROCESSING.
- PIO BSS 0
- LDML PIOB,RW SETUP SEEK COMMAND
- STML CPBF+OPC
- LDD CN MERGE CONTROLLER + DRIVE NUMBERS
- SHN 10
- LMD DN SET FACILITY ADDRESS
- STM CPBF+CUN
- LDC P0931 COMMAND EXTENT PARAMETER
- STM CPBF+FCP
- LDN 0 UPPER SECTOR COUNT
- STM CPBF+FCP+1
- * SET UP COMMAND PARAMETERS.
- * NOTE THAT PARAMETERS CPBF+FCP+2 - CPBF+FCP+4 HAVE ALREADY
- * BEEN SET BY SUBROUTINE *IIO*.
- LDC P0951 TRANSFER SIZE OVERRIDE PARAMETER
- STM CPBF+FCP+5
- LDC 40000 CHANGE BURST SIZE
- STML CPBF+FCP+11
- STML CPBF+FCP+7 CHANGE INTERRUPT SIZE
- SHN 0-20
- STM CPBF+FCP+10 SET LEADING DIGITS
- STM CPBF+FCP+6
- LDN 40D SEEK TIMEOUT = 40 SECONDS
- STD TO
- LDN IOPL+12 WRITE COMMAND BLOCK
- RJM WCB
- * WAIT UNTIL CONTROLLER RETURNS TRANSFER NOTIFICATION.
- PIO1 LDD CB SET I/O IN PROGRESS
- STM IPPS,DI
- LDN XFNT PROCESS ATTENTION
- RJM ATT
- ZJN PIO2 IF EXPECTED STATUS
- LCN EIOS
- RJM ERR PROCESS ERROR
- PIO2 LDN 1 SET CHANNEL ACTIVE FOR *CPD*
- RJM SCD
- LDM IPPS,DI RESTORE CURRENT BUFFER ORDINAL
- PIO3 STD CB
- LDDL T7 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 PIOD,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.
- LDN 2 TIMEOUT = 2 SECONDS
- RJM STO
- 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
- NJP PIO3 IF CONSECUTIVE REQUEST PRESENT
- * COMPLETE READ / WRITE OPERATIONS.
- * LDN 0 CLEAR CHANNEL ACTIVE FOR *CPD*
- RJM SCD
- LDN 40D TIMEOUT = 40 SECONDS
- RJM STO
- LDN CMSS WAIT ON INTERRUPT
- RJM ATT
- NJN PIO7 IF ERROR
- LDDL MS
- LMN CMCS
- NJN PIO6 IF NOT CONDITIONAL SUCCESS
- LDML RPBF+5
- LPC 377
- LMN ID19
- NJN PIO7 IF RESPONSE NOT DUE TO MASTER TERMINATE
- LDML RPBF
- SBN 17
- PJN PIO7 IF RESPONSE TOO LONG
- LDML RPBF+7
- SHN 21-10
- PJN PIO7 IF NOT MASTER TERMINATE
- PIO6 LJM CMP COMPLETE PROCESSING
- PIO7 LCN EIOS
- RJM ERR PROCESS ERROR
- PIOB BSS 0 COMMAND CODES
- CONL C1005
- CONL C2005
- PIOD BSS 0 DATA TRANSFER FUNCTIONS
- CONL F0281
- CONL F0381
- TITLE LIST DEVICE ATTRIBUTE.
- LDA SPACE 4,10
- ** LDA - LIST DEVICE ATTRIBUTE IN DAYFILE.
- LDA BSS 0
- LDC C0200 SETUP REPORT ATTRIBUTES COMMAND
- STM CPBF+OPC
- LDD CN MERGE CONTROLLER + UNIT NUMBERS
- SHN 10
- LMD DN SET FACILITY ADDRESS
- STM CPBF+CUN
- LDC P036C REQUEST ATTRIBUTE PARAMETER
- STM CPBF+FCP
- LDC 0#4050 RETURN ATTRIBUTE ID 50 IN RESPONSE
- STML CPBF+FCP+1
- LDN 2 TIMEOUT = 2 SECONDS
- STD TO
- LDN BCPL+4 WRITE COMMAND BLOCK
- RJM WCB
- * WAIT UNTIL CONTROLLER HAS RETURNED INTERRUPT.
- LDN CMSS WAIT ON INTERRUPT
- RJM ATT
- ZJN LDA1 IF COMMAND COMPLETE
- LCN ERDA
- RJM ERR PROCESS ERROR
- LDA1 LDD RW CHECK REQUEST INDEX
- SBN LDIF-ECAF
- ZJN LDA2 IF FOR DRIVE SERIAL NUMBER
- * GENERATE MICROCODE REVISION ERRLOG MESSAGE.
- LDD CN SET CONTROL MODULE NUMBER IN BML MESSAGE
- STD NR+3
- ADC 2RM0 CONVERT FOR ERRLOG MESSAGE
- STM LDAB+6
- LDC LDAB+4 LOCATION FOR REVISION LEVEL
- STD T3
- SBN LDAB+4-LDAA SET MESSAGE ADDRESS
- STML MAD1
- LDM RPBF+6+0#1B/2 CONVERT REVISION LEVEL
- RJM CHD
- RJM IDM ISSUE MESSAGE TO ERRLOG
- * GENERATE MICROCODE REVISION BML MESSAGE.
- LDD MA MOVE MICROCODE REVISION LEVEL
- CWM LDAB,ON
- SBN 1 COPY TO BML MESSAGE
- CRD WB
- LDD IR+4 SET CHANNEL NUMBER
- STD NR+2
- LDN HI0104-HI0100
- LJM LDA4 COMPLETE BML MESSAGE
- * GENERATE PACK SERIAL NUMBER ERRLOG MESSAGE.
- LDA2 LDN 0
- STD T2
- LDC LDAE+2 SET ADDRESS FOR CONVERSION
- STD T3
- SBN -LDAD+LDAE+2 DEFINE MESSAGE ADDRESS
- STML MAD1
- * CONVERT RIGHTMOST 6 DIGITS OF 8 DIGIT PACK SERIAL NUMBER.
- LDA3 LDML RPBF+FCP+1+0#1E,T2
- SHN -10
- ZJN LDA3.1 IF SERIAL NUMBER NOT PRESENT
- SBN 60 CONVERT ASCII TO DISPLAY CODE
- LDA3.1 ADN 1R0
- SHN 6
- STD T0 UPPER CHARACTER OF WORD
- LDML RPBF+FCP+1+0#1E,T2
- LPN 77
- ZJN LDA3.2 IF SERIAL NUMBER NOT PRESENT
- SBN 60 CONVERT ASCII TO DISPLAY CODE
- LDA3.2 ADN 1R0
- LMD T0
- STI T3 LOWER CHARACTER OF WORD
- AOD T2
- AOD T3
- LMC LDAE+2+3
- NJN LDA3 IF MORE CHARACTERS TO CONVERT
- LDM PNUN,DI
- LPN 77 PUT UNIT NUMBER IN BML MESSAGE
- STD NR+3
- RJM C2D CONVERT FOR ERRLOG MESSAGE
- STM LDAD+11
- LDD EO CONVERT EST ORDINAL
- SHN -3
- RJM C2D
- STM LDAD+6 INSERT IN ERRLOG MESSAGE
- LDD EO
- LPN 7 CONVERT LOWER DIGIT
- SHN 6
- ADC 2R0, ADD TO ERRLOG MESSAGE
- STM LDAD+7
- RJM IDM ISSUE MESSAGE TO ERRLOG
- * GENERATE PACK SERIAL NUMBER BML MESSAGE.
- LDD MA MOVE DRIVE SERIAL NUMBER
- CWM LDAE,ON
- SBN 1 COPY TO BML MESSAGE
- CRD WB
- LDD EO INSERT EST ORDINAL
- STD WB
- LDC 2R"DM" SET DEVICE MNEMONIC
- STD NR+2
- LDN 0 CLEAR UNUSED FIELD
- STD WB+1
- LDA4 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
- STD RW ISSUE BML MESSAGE
- RJM IDM
- LJM CSR CLEAR SPECIAL REQUEST FLAG
- LDAA CON 0,0,0,4,ELDY MICROCODE REVSION ERRLOG MESSAGE
- DATA 4HCH**
- LDAB DATA 10H MH426-D**
- DATA C+,CM0.+
- LDAD CON 0,0,0,4,ELDY PACK SERIAL NUMBER ERRLOG MESSAGE
- DATA 10H"DM"***, U**
- LDAE DATA C+,PS=******.+
- TITLE DIAGNOSTIC PROCESSING.
- RND SPACE 4,10
- ** RND - RUN DIAGNOSTICS.
- RND SUBR ENTRY/EXIT
- LDM ENAD,DI
- NJN RNDX IF DRIVE DISABLED (SLAVE RESET FAILURE)
- LDC C8100 SETUP DRIVE DIAGNOSTIC COMMAND
- STML CPBF+OPC
- LDD CN MERGE CONTROLLER + DRIVE NUMBERS
- SHN 10
- LMD DN SET FACILITY ADDRESS
- STM CPBF+CUN
- LDN 60D TIMEOUT VALUE = 1 MINUTE
- STD TO
- LDN BCPL WRITE COMMAND BLOCK
- RJM WCB
- LDML IPPS,DI FLAG DIAGNOSTICS INITIATED
- LPC -1S15
- LMC 1S15
- STML IPPS,DI
- * WAIT UNTIL CONTROLLER HAS RETURNED INTERRUPT.
- LDN CMSS PROCESS ATTENTION
- RJM ATT
- ZJN RND1 IF DIAGNOSTICS COMPLETED SUCCESSFULLY
- LDN 0 CLEAR ERROR STEP ADDRESS
- STM ESAD,DI
- LCN EDTF
- RJM ERR PROCESS ERROR
- RND1 LDML IPPS,DI CLEAR DIAGNOSTICS FLAG
- LPC -1S15
- STML IPPS,DI
- UJP RNDX RETURN
- TITLE SELECTIVE RESET PROCESSING.
- SRS SPACE 4,20
- ** SRS - SELECTIVE RESET PROCESSING.
- *
- * ENTRY (A) = 6/FLAG,12/RADD.
- * (FLAG) = 0 FOR SLAVE RESET.
- * (FLAG) = 1 FOR LOGICAL RESET.
- * (RADD) = RETURN ADDRESS.
- * (CN) = CONTROLLER NUMBER.
- * (ADDR,DI) = 0 FOR ALL DRIVES ON CONTROL MODULE.
- *
- * EXIT TO *ERR* IF ERROR.
- * TO *CMP9* FOR NON-CONTROLLING DRIVES ON SLAVE RESET.
- *
- * USES PA, RF, RW, T1, T5.
- *
- * CALLS ATT, C2D, IOM, LND, RIF, SCA, SRP, STO, XMD.
- SRS BSS 0 ENTRY
- STM ERAD,DI SET RETURN ADDRESS
- SHN -14
- STD RW SAVE RESET OPTION
- STM RWST,DI
- SRS2 LDC 0 CHECK RESET ACTIVITY
- SRSA EQU *-1
- ZJN SRS4 IF NONE IN PROGRESS
- SRS3 RJM XMD RETURN TO MAIN LOOP
- UJN SRS2 CHECK RESET IN PROGRESS
- SRS4 LDD DI
- STM SRSA SET LOCAL RESET IN PROGRESS
- LDN 0
- SRS5 RJM LND LOCATE NEXT DRIVE
- ZJN SRS7 IF NO MORE DRIVES ON CONTROLLER
- LDM SRSE,RW
- STM ADDR,T7 SET DRIVE PROCESSING ADDRESS
- STM SRSC
- LDN 1
- UJN SRS5 CHECK FOR NEXT DRIVE
- SRS7 LDM PNUN,DI
- SHN -6 CONTROLLER BLOCK INDEX
- STD T5
- LDD RW
- LMN 1
- SHN 17-0 BIT 15 SET IF SLAVE RESET
- STDL T1
- LDML CSTB,T5 SET / CLEAR SLAVE RESET IN PROGRESS FLAG
- LPC -1S15
- LMDL T1
- STML CSTB,T5
- RJM RIF RESET SLAVE / LOGICAL INTERFACE
- LDN 60D RESET TIMEOUT = 1 MINUTE
- RJM STO
- LDD CN CONVERT CONTROL MODULE NUMBER
- RJM C2D
- SHN 6 INSERT IN MESSAGE
- LMN 1R
- STM SRSH+1 INSERT IN FAILURE MESSAGE
- STM SRSG+1
- LDD RW
- NJN SRS7.1 IF LOGICAL RESET
- LDC SRSG ACTIVATE OPERATOR MESSAGE
- STM IOMA
- LCN 1
- RJM IOM
- SRS7.1 LDN ASRT WAIT ON ASYNC INTERRUPT
- RJM ATT
- NJN SRS8 IF ERROR
- * SEARCH RESPONSE PACKET FOR MACHINE EXCEPTION PARAMETER.
- LDN ID16 LOOK FOR MACHINE EXCEPTION
- RJM SRP
- MJN SRS8 IF PARAMETER NOT FOUND
- LDML RPBF+6,T3
- LPC 0#FEE0 CHECK OPERATIONAL + READY TRANSITION
- LMC 0#6000
- ZJN SRS9 IF CONTROLLER RESET SUCCESSFUL
- SRS8 LCN ESRE
- RJM ERR PROCESS ERROR
- SRS9 RJM SCA SET CONTROLLER ATTRIBUTES
- * LDN 0 CLEAR RESET INTERLOCK
- STM SRSA
- STD RF CLEAR RESET IN PROGRESS FLAG
- RJM IOM CLEAR OPERATOR MESSAGE
- LDM PNUN,DI
- SHN -6 CONTROLLER BLOCK INDEX
- STD T5
- LDML CSTB,T5 ENABLE CONTROLLER ACTIVITY
- LPC -1S14-1S15
- STML CSTB,T5
- * SLAVE RESET - WAIT FOR ASYNC INTERRUPT ON CONTROLLING UNIT.
- * IF THE DRIVE INTERRUPT FOR THE CONTROLLING UNIT IS RECEIVED
- * BEFORE THE CONTROLLER INTERRUPT, *IHD* WILL CLEAR *SRSC*
- * AND THROW AWAY THE INTERRUPT.
- SRS10 LDC 0 CHECK RESET COMPLETION
- * LDC (NONZERO) (SLAVE RESET - MAY BE CLEARED BY *IHD*)
- SRSC EQU *-1
- ZJN SRS11 IF CONTROLLING DRIVE COMPLETE
- LDC 7*60D TIMEOUT = 7 MINUTES
- RJM STO
- LDN ASRT WAIT ON ASYNC INTERRUPT
- RJM ATT (RETURN TO *SRS11* IF INTERRUPT TIMEOUT)
- * COMPLETE RESET PROCESSING.
- SRS11 LDN 0 REENABLE ACCESS TO CONTROLLING DEVICE
- STM ADDR,DI
- STM ATTN,DI
- RJM IOM CLEAR OPERATOR MESSAGE
- LDM ERAD,DI
- STD PA
- LJM 0,PA RETURN TO CALLER
- * SLAVE RESET - WAIT FOR ASYNC INTERRUPTS ON OTHER UNITS.
- * ENTRY TO THIS CODE IS FORCED BY CODE AT *SRS5*.
- * IF A DRIVE INTERRUPT FOR A NONCONTROLLING UNIT IS RECEIVED
- * BEFORE ENTRY AT *SRS12*, *VIS* WILL CLEAR *ADDR* FOR THE
- * DRIVE AND THROW AWAY THE INTERRUPT.
- SRS12 LDC 8D*60D TIMEOUT = 8 MINUTES
- RJM STO
- LDN ASRT WAIT FOR ASYNC INTERRUPT
- RJM ATT (RETURN TO *SRS13* IF INTERRUPT TIMEOUT)
- SRS13 LDN 0
- RJM IOM CLEAR OPERATOR MESSAGE
- LJM CMP9 REENABLE ACCESS TO DRIVE
- SRSE BSS 0 DRIVE PROCESSING ADDRESSES
- CON SRS12 SLAVE RESET
- CON 0 LOGICAL RESET
- SRSG DATA C*CM3 BEING RESET ON CCHNN.*
- SRSH DATA C*CM3 RESET FAILURE ON CCHNN.*
- TITLE INTERRUPT DRIVEN SUBROUTINES.
- BOR SPACE 4,20
- ** BOR - BREAK OPPOSITE RESERVE.
- *
- * EXECUTE A DRIVE RESET FOR THE SPECIFIED DRIVE. THIS IS DONE
- * FOR EACH DRIVE AT DRIVER INITIALIZATION TIME TO BREAK ANY
- * DRIVE RESERVES WHICH MAY BE HELD BY THE OPPOSITE ACCESS.
- * ALSO CLEAR CONTROLLER OVER TEMPERATURE STATUS IN MST WORD
- * *BDLL*.
- *
- * ENTRY (CN) = CONTROLLER NUMBER.
- * (DN) = DRIVE NUMBER.
- *
- * EXIT TO *CMP*.
- *
- * USES CM+2, T7.
- *
- * CALLS EDR, UBP.
- BOR BSS 0 ENTRY
- LDN 0 CLEAR CONTROLLER OVER TEMPERATURE FLAG
- STD CM+2
- LDC 63*100 LOW ORDER BIT TO CHANGE TIMES 100
- STD T7
- LDC BDLL*100+1 6/WORD, 6/BITS TO CHANGE
- RJM UBP UPDATE *BDLL* PARAMETER
- RJM EDR EXECUTE DRIVE RESET
- LDML IPPS,DI CLEAR *BREAK OPPOSITE RESERVE* FLAG
- LPC -1S13
- STML IPPS,DI
- LJM CMP COMPLETE REQUEST
- EDR SPACE 4,15
- ** EDR - EXECUTE DRIVE (POWER ON) RESET.
- *
- * ENTRY (CN) = CONTROLLER NUMBER.
- * (DN) = DRIVE NUMBER.
- *
- * EXIT (A) = 0 IF COMMAND COMPLETED.
- * TO CALLER VIA *RTC*.
- *
- * ERROR TO *ERR* IF NOT COMMAND COMPLETED.
- *
- * USES TO.
- *
- * CALLS ATT, WCB.
- EDR CON 0
- LDM EDR SET RETURN ADDRESS
- STM RADD,DI
- LDC C0800 SETUP ABORT COMMAND
- STM CPBF+OPC
- LDD CN CONTROLLER NUMBER
- SHN 10
- LMD DN APPEND FACILITY ADDRESS
- STM CPBF+CUN
- LDC P0254 PARAMETER ID = DRIVE RESET
- STM CPBF+FCP
- LDC 0#400 SELECT POWER ON RESET
- STM CPBF+FCP+1
- LDN 30D TIMEOUT = 30 SECONDS
- STD TO
- LDN BCPL+3 WRITE COMMAND BLOCK
- RJM WCB
- LDN CMSS WAIT ON INTERRUPT
- RJM ATT
- ZJP RTC IF COMMAND COMPLETE
- LCN EDRS
- RJM ERR PROCESS ERROR
- GDS SPACE 4,15
- ** GDS - GET DRIVE STATUS.
- *
- * ENTRY (CN) = CONTROLLER NUMBER.
- * (DN) = DRIVE NUMBER.
- *
- * EXIT (A) = DRIVE CONDITION FLAGS.
- * TO CALLER VIA *RTC*.
- *
- * ERROR TO *ERR* IF COMMAND COMPLETE NOT RECEIVED.
- *
- * USES TO.
- *
- * CALLS ATT, WCB.
- GDS CON 0
- LDM GDS SET RETURN ADDRESS
- STM RADD,DI
- LDC C0301 SETUP REPORT STATUS COMMAND
- STML CPBF+OPC
- LDD CN CONTROLLER NUMBER
- SHN 10
- LMD DN FORM FACILITY ADDRESS
- STM CPBF+CUN
- LDN 2 TIMEOUT = 2 SECONDS
- STD TO
- LDN BCPL WRITE COMMAND BLOCK
- RJM WCB
- LDN CMSS WAIT ON INTERRUPT
- RJM ATT
- ZJN GDS2 IF COMMAND COMPLETE
- LCN ERDS
- RJM ERR PROCESS ERROR
- GDS2 LDML RPBF+6 RETURN DRIVE CONDITION TO CALLER
- * LJM RTC
- RTC SPACE 4,10
- ** RTC - RETURN TO CALLER.
- *
- * USES PA.
- RTC STD T0 SAVE 12 BITS OF *A* REGISTER
- LMD T0
- LMM RADD,DI SET RETURN ADDRESS
- STD PA
- LMD PA RESTORE *A* REGISTER
- LMD T0
- LJM 0,PA RETURN TO CALLER
- SCA SPACE 4,15
- ** SCA - SET CONTROLLER ATTRIBUTES.
- *
- * ENTRY (CN) = CONTROLLER NUMBER.
- *
- * EXIT (A) = 0 IF COMMAND COMPLETED.
- * TO CALLER VIA *RTC*.
- *
- * ERROR TO *ERR* IF NOT COMMAND COMPLETED.
- *
- * USES TO.
- *
- * CALLS ATT, WCB.
- SCA CON 0
- LDM SCA SET RETURN ADDRESS
- STM RADD,DI
- LDC C0209 SETUP LOAD ATTRIBUTES COMMAND
- STM CPBF+OPC
- LDD CN CONTROLLER NUMBER
- SHN 10
- LMC 0#FF APPEND FACILITY ADDRESS
- STM CPBF+CUN
- LDC P01D1 DISABLE PERFORMANCE LOG
- STM CPBF+FCP
- ADK P02D2-P01D1 ENABLE MASTER TERMINATE
- STM CPBF+FCP+1
- ADK P02D3-P02D2 DISABLE EXTENT RESPONSE
- STM CPBF+FCP+3
- LDC 0#100 SET PARAMETERS
- STM CPBF+FCP+2
- STM CPBF+FCP+4
- LDN 2 TIMEOUT = 2 SECONDS
- STD TO
- LDN BCPL+11 WRITE COMMAND BLOCK
- RJM WCB
- LDN CMSS WAIT ON INTERRUPT
- RJM ATT
- ZJP RTC IF COMMAND COMPLETE
- LCN ELCA
- RJM ERR PROCESS ERROR
- SDA SPACE 4,20
- ** SDA - SET DRIVE ATTRIBUTES.
- *
- * SET THE FACILITY BUSY TIMEOUT FOR THE SPECIFIED DRIVE TO
- * 15 SECONDS. THIS IS DONE TO PREVENT ERRORS WHEN ANOTHER
- * CONTROL MODULE ACCESSES A DRIVE TO PERFORM SWEEP CYCLING,
- * OR WHEN A DRIVE IS TIED UP RUNNING DIAGNOSTICS AFTER A
- * SLAVE RESET FROM THE OTHER ACCESS.
- *
- * ENTRY (CN) = CONTROLLER NUMBER.
- * (DN) = DRIVE NUMBER.
- *
- * EXIT TO *CMP* IF COMMAND COMPLETED.
- *
- * ERROR TO *ERR* IF ERROR.
- *
- * USES TO.
- *
- * CALLS ATT, WCB.
- SDA BSS 0 ENTRY
- * REPORT DEVICE ATTRIBUTES.
- LDC C0200 SETUP REPORT ATTRIBUTES COMMAND
- STML CPBF+OPC
- LDD CN SET FACILITY ADDRESS
- SHN 10
- LMD DN
- STM CPBF+CUN
- LDC P036C REQUEST ATTRIBUTE PARAMETER
- STML CPBF+FCP
- LDC 0#406F REQUEST ATTRIBUTE 6F
- STML CPBF+FCP+1
- LDN 40D TIMEOUT = 40 SECONDS
- STD TO
- LDN BCPL+4 WRITE COMMAND BLOCK
- RJM WCB
- LDN CMSS WAIT FOR INTERRUPT
- RJM ATT
- NJP SDA2 IF ERROR
- * SET FACILITY BUSY TIMEOUT TO 15 SECONDS.
- LDML RPBF+25 CHECK CURRENT TIMEOUT VALUE
- LMC 0#E4
- NJN SDA1 IF TIMEOUT VALUE NOT CORRECT
- LDML RPBF+26
- LMC 0#E1C0
- ZJP SDA4 IF TIMEOUT VALUE ALREADY CORRECT
- SDA1 LDC 0#E4 SET TIMEOUT VALUE TO 15 SECONDS
- STML RPBF+25
- LDC 0#E1C0
- STML RPBF+26
- * LOAD DEVICE ATTRIBUTES.
- LDC C0209 SETUP LOAD ATTRIBUTES COMMAND
- STML CPBF+OPC
- LDD CN SET FACILITY ADDRESS
- SHN 10
- LMD DN
- STM CPBF+CUN
- LDN 40D TIMEOUT = 40 SECONDS
- STD TO
- LDN BCPL+50 WRITE COMMAND BLOCK
- RJM WCB
- LDN CMSS WAIT FOR INTERRUPT
- RJM ATT
- ZJN SDA3 IF COMMAND COMPLETE
- SDA2 LCN ERDA
- RJM ERR PROCESS ERROR
- * SAVE NEW ATTRIBUTES IN EEPROM.
- SDA3 LDC C020A SETUP SAVE ATTRIBUTES COMMAND
- STML CPBF+OPC
- LDD CN SET FACILITY ADDRESS
- SHN 10
- LMC 0#FF
- STM CPBF+CUN
- LDN 40D TIMEOUT = 40 SECONDS
- STD TO
- LDN BCPL WRITE COMMAND BLOCK
- RJM WCB
- LDN CMSS WAIT FOR INTERRUPT
- RJM ATT
- NJN SDA2 IF ERROR
- SDA4 LDML IPPS,DI CLEAR *SET DRIVE ATTRIBUTES* FLAG
- LPC -1S14
- STML IPPS,DI
- LJM CMP COMPLETE REQUEST
- TITLE SUBROUTINES.
- ACE SPACE 4,10
- ** ACE - ANALYZE CHANNEL ERROR.
- *
- * ENTRY (RBUF) = CHANNEL STATUS REGISTER.
- *
- * EXIT (A) = 0 IF NO CHANNEL ERROR.
- * = CHANNEL ERROR FAULT CODE.
- ACE3 LDN ECCM SET CHANNEL DETECTED CM ERROR
- ACE SUBR ENTRY/EXIT
- LDM RBUF+5
- LPN 2
- ZJN ACEX IF NO CHANNEL ERROR
- 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
- LDN ECPE&ECIE
- ACE1 LMN ECIE&ECER FAULT ANALYSIS CODE
- ACE2 LMN ECER
- 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 STATUS BLOCK ADDRESS.
- *
- * EXIT VIA ROUTINE *ECI*.
- *
- * ERROR TO *ERR* IF INTERRUPT TIMEOUT.
- * TO *SRS11* IF TIMEOUT OF SLAVE RESET INTERRUPT FOR
- * CONTROLLING DRIVE.
- * TO *SRS13* IF TIMEOUT OF SLAVE RESET INTERRUPT FOR
- * NON-CONTROLLING DRIVE.
- *
- * USES T5.
- *
- * CALLS CTO, IOM, XMD.
- ATT CON 0 ENTRY
- STM EEST,DI
- LDM ATT SAVE RETURN ADDRESS
- STM ATTN,DI
- ATT1 RJM XMD RETURN TO MAIN LOOP
- ATT2 RJM CTO CHECK FOR TIMEOUT
- PJP ATT5 IF TIMEOUT
- LDM PNUN,DI CHECK FOR SLAVE RESET
- SHN -6
- STD T5
- LDML CSTB,T5
- SHN 21-17
- PJN ATT2.1 IF NO SLAVE RESET IN PROGRESS
- LDC SRSG *CM3 BEING RESET ON CCHNN.*
- STM IOMA
- LCN 1
- UJN ATT4 ISSUE OPERATOR MESSAGE
- ATT2.1 LDM ATTN,DI CHECK INTERRUPT RETURN ADDRESS
- LMC SRS13
- ZJN ATT3 IF WAITING FOR ASYNCH AFTER RESET
- LMC SRS11&SRS13
- ZJN ATT3 IF WAITING FOR ASYNCH AFTER RESET
- UJN ATT1 RETURN TO MAIN LOOP
- ATT3 LDC SPDA SPIN UP PENDING MESSAGE
- ATT4 RJM IOM ISSUE OPERATOR MESSAGE
- UJP ATT1 RETURN TO MAIN LOOP
- ATT5 LDM ATTN,DI
- LMC SRS13
- ZJP SRS13 IF WAITING FOR SLAVE RESET INTERRUPT
- LMC SRS11&SRS13
- ZJP SRS11 IF WAITING FOR SLAVE RESET INTERRUPT
- LDN 0 CLEAR INTERRUPT AND REENTRY ADDRESSES
- STM ATTN,DI
- STM ADDR,DI
- LDN ETIT
- RJM ERR PROCESS ERROR
- SPDA DATA C* EQ000, SPIN UP PENDING.*
- 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.
- *
- * USES CM+1 - CM+4, T7.
- *
- * CALLS IDM, SRP, UBP.
- *
- * MACROS MONITOR.
- 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 EDBF+FALT
- STM CCOA SAVE VALUES FROM CURRENT MESSAGE
- LDM EDBF+FCS2
- STM CCOA+1
- LDM MSGL+1
- STM CCOA+2
- LDN ECOT
- STM EDBF+FALT FINAL FAULT CODE
- LDD T7
- ZJN 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 EDBF+FALT RESTORE VALUES IN MESSAGE
- LDM CCOA+1
- STM EDBF+FCS2
- LDM CCOA+2
- STM MSGL+1
- * SET OVER TEMPERATURE BIT IN *BDLL*.
- CCO1 LDN 1 NEW VALUE
- STD CM+2
- LDC 63*100 LOW ORDER BIT TO CHANGE TIMES 100
- STD T7
- LDC BDLL*100+1 6/WORD, 6/BITS TO CHANGE
- RJM UBP UPDATE *BDLL* PARAMETER
- LDN EEVS
- STD CM+1 ENTER EVENT
- LDN 0
- STD CM+3
- LDN CEDE *CHECK E,E DISPLAY* EVENT
- STD CM+4
- MONITOR EATM
- UJP CCOX RETURN
- CCOA BSS 3 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.
- *
- * EXIT (A) = 0 IF CHANNEL DOWN.
- *
- * USES CM - CM+4.
- *
- * CALLS DCR, RCT, SRF.
- *
- * MACROS DELAY, MONITOR.
- CCR3 RJM SRF SET DRIVER RELOAD FLAG
- CCR4 LDD CR
- CCR SUBR PRS3 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
- LJM CCR3 SET DRIVER RELOAD FLAG
- CDA SPACE 4,10
- ** CDA - CONVERT PHYSICAL TO LOGICAL DISK ADDRESS.
- *
- * ENTRY (T4) = CYLINDER NUMBER.
- * (T5) = PHYSICAL TRACK + SECTOR.
- *
- * EXIT (T6) = LOGICAL TRACK.
- * (T7) = LOGICAL SECTOR.
- *
- * USES T3, T4, T5.
- * MULTIPLY THE CYLINDER VALUE BY THE NUMBER OF LOGICAL
- * SECTORS PER CYLINDER.
- CDA2 LDK LSCY
- 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
- * SUM OF (LOGICAL + GAP) SECTORS PER LOGICAL TRACK.
- CDA4 AOD T6 ADVANCE LOGICAL TRACK NUMBER
- LDK -LSLT
- RAD T7
- PJN CDA4 IF NO UNDERFLOW
- AOD T7
- SOD T3
- PJN CDA4 IF DIVISION INCOMPLETE
- CDA SUBR ENTRY/EXIT
- LDD T5
- SHN 14 EXTRACT PHYSICAL TRACK
- STD T5
- SHN CFLP-14 CONVERT PHYSICAL TO LOGICAL SECTOR
- STD T7
- LDN 0 CLEAR SECTOR COUNT ACCUMULATOR
- STD T3
- LDC 4000-1 INITIALIZE LOGICAL TRACK CALCULATION
- STD T6
- * MULTIPLY THE TRACK VALUE BY THE NUMBER OF LOGICAL
- * SECTORS PER PHYSICAL TRACK.
- CDA1 SOD T5
- MJN CDA3 IF END OF CONVERSION
- LDK LSPT
- RAD T7 ADVANCE LOGICAL SECTOR COUNT
- SHN -14
- RAD T3
- UJN CDA1 LOOP ON CONVERSION
- 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 IF BOTH CHANNELS ENABLED.
- *
- * USES CM - CM+4, T1 - T1+4, T7.
- *
- * CALLS CPF, UBP.
- *
- * MACROS SFA.
- CEA SUBR ENTRY/EXIT
- SFA EST,EO
- ADK EQDE
- CRD T1 READ *EQDE* WORD
- LDD T1+1
- LMD IR+4
- LPN 77
- ZJN CEA1 IF THIS IS THE FIRST CHANNEL
- LDN 1
- CEA1 ADN 49D
- SHN 6 LOW ORDER BIT TO CHANGE TIMES 100
- STD T7
- LDN 0 NEW VALUE
- STD CM+2
- LDC BDLL*100+1 6/WORD, 6/BITS TO CHANGE
- RJM UBP CLEAR ENABLE CHANNEL BIT IN *BDLL*
- LDD T1+4
- SHN 3
- ADN BDLL
- CRD CM
- LDD CM
- LPN 6
- NJN CEAX IF OTHER CHANNEL STILL NOT ENABLED
- LDN ECAF CLEAR SPECIAL REQUEST IN *PUT*
- RJM CPF
- UJN CEAX RETURN
- CFR SPACE 4,10
- ** CFR - CHECK *PUT* FOR REQUEST.
- *
- * ENTRY (DI) = DEVICE STATUS BLOCK ADDRESS.
- *
- * ERROR TO *ERR*.
- *
- * USES CM+3.
- *
- * CALLS CMP8, ECI, IDU, IIO, ISR.
- CFR5 LDD CB INITIATE I/O
- RJM IIO
- ZJN CFRX IF I/O NOT ENABLED ON THIS ACCESS
- RJM IDU INTERLOCK DISK UNIT
- NJN CFRX IF INTERLOCK NOT AVAILABLE
- LDM ENAD,DI
- ZJN CFR6 IF CONTROLLER FUNCTIONAL
- LDN ECMD
- RJM ERR PROCESS ERROR
- * EXIT TO PROCESSOR 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.
- CFR6 LJM 0,PA EXIT TO PROCESSOR
- CFR SUBR ENTRY/EXIT
- RJM ECI EXAMINE CONTROLLER INTERRUPTS
- * RJM CMP8 (TERMINATION PROCESSING)
- CFRA EQU *-1
- NJN CFRX IF RESET OR ERROR IN PROGRESS
- LDML IPPS,DI CHECK FOR INTERNAL SPECIAL REQUESTS
- SHN 6-15
- LPC 300
- ZJN CFR1 IF ALL INTERNAL SPECIAL REQUESTS PROCESSED
- STD CM+3 SET INTERNAL SPECIAL REQUESTS
- CFR1 LDD CM+3 CHECK FOR SPECIAL REQUEST
- NJN CFR2 IF SPECIAL REQUEST PRESENT
- ADD WB+3
- ZJN CFRX IF NO I/O REQUEST
- CFR2 LDD CM+4
- ZJN CFR3 IF UNIT NOT INTERLOCKED
- LMD OA
- NJN CFRX IF UNIT INTERLOCKED BY OTHER DRIVER
- CFR3 LDD CM+3 CHECK FOR SPECIAL REQUEST
- ZJP CFR5 IF NO SPECIAL REQUEST
- RJM ISR IDENTIFY AND PROCESS SPECIAL REQUEST
- UJP CFR1 CHECK FOR ANOTHER REQUEST
- 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
- CRD CW
- LDD CW
- ZJN CMCX IF NO REQUEST WAITING FOR RESPONSE
- SHN 21-13
- PJN CMC2 IF NOT TO RETRY REQUEST
- SHN 13-21
- LPC 177 CLEAR FLAGS
- STD CW
- LDD OA UPDATE OUTPUT REGISTER
- CWD CW
- RJM AME REISSUE REQUEST
- CMC2 DELAY
- UJN CMC1 RECHECK OUTPUT REGISTER
- CMP SPACE 4,15
- ** CMP - COMPLETE PROCESSING.
- *
- * ENTRY (SF) = DEVICE SELECTED STATUS.
- * (UC) = UNIT ACTIVITY COUNT.
- * (RW) = READ / WRITE STATUS.
- *
- * EXIT TO *XMD2*.
- * (UC) = UNIT ACTIVITY COUNT DECREMENTED.
- *
- * USES UC, WB+3, WB+4.
- *
- * CALLS CMC, DCM, IDM, IMR.
- CMP LDM ERCT,DI
- ZJN CMP4 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 FORCE CLEAR OF ERROR COUNT / ERROR FLAG
- STM CMPA
- CMP4 RJM DCM DESELECT CONTROLLER
- * INCLUDE *PROBE* DATA IN FINAL *BIOM* REQUEST.
- LDD RW SET DATA TRANSFER DIRECTION
- SHN 13-0
- LMM CBCT,DI APPEND CUMULATIVE BUFFER COUNT
- STD WB+4
- LDM RQLN,DI
- CMP5 ZJN CMP6 IF UNIT NOT INTERLOCKED
- STD WB+3
- LDN DCBS DELINK BUFFERS / RELEASE UNIT INTERLOCK
- RJM IMR
- RJM CMC CHECK FOR MONITOR COMPLETE
- * LDN 0 CLEAR UNIT INTERLOCKED
- STM RQLN,DI
- SOD UC ADJUST UNIT ACTIVITY COUNT
- CMP6 LDC 1
- CMPA EQU *-1
- NJN CMP7 IF ERCT/ERFL SHOULD NOT BE CLEARED
- STM ERCT,DI CLEAR ERROR COUNT
- AOM CMPA
- LDM ERFL CHECK ERROR PROCESSING
- LMD DI
- NJN CMP7 IF NOT ON THIS UNIT
- STM ERFL
- CMP7 RJM CMC CHECK FOR MONITOR COMPLETE
- * LDN 0
- STM ADDR,DI CLEAR REQUEST IN PROGRESS
- STM ATTN,DI
- STM SREQ,DI
- STM CBCT,DI
- STM ESAD,DI ENABLE NEXT PASS THROUGH ERROR PROCESSOR
- LDML IPPS,DI CLEAR I/O IN PROGRESS
- LPC 170000
- STML IPPS,DI
- LJM XMD2 RETURN
- * TERMINATION PROCESSING.
- CMP8 CON 0
- CMP9 LDN 0 CLEAR *PROBE* DATA
- STD WB+4
- LDM RQLN,DI SET REQUEST QUEUE EMPTY
- SCN 77
- UJP CMP5 RELEASE UNIT INTERLOCK
- CPF SPACE 4,10
- ** CPF - CLEAR *PUT* FLAG IN *PILL*.
- *
- * ENTRY (A) = 6/N, 6/B.
- * N = NUMBER OF BITS - 1 TO CLEAR.
- * B = LOW ORDER BIT NUMBER TO CLEAR.
- *
- * USES T6, T7, CM+1 - CM+4.
- *
- * MACROS MONITOR, PUTE.
- CPF SUBR ENTRY/EXIT
- SHN 6
- STD T7 SET BIT NUMBER
- SHN -14
- ADC PILL*100+1 WORD OFFSET + FIELD WIDTH
- STD T6
- LDN 0 NEW VALUE
- STD CM+2
- 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
- UJN CPFX RETURN
- CSR SPACE 4,10
- ** CSR - CLEAR SPECIAL REQUEST.
- *
- * ENTRY (DI) = DEVICE STATUS BLOCK 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 *PUT* FLAG
- CSR1 LJM CMP COMPLETE PROCESSING
- CTO SPACE 4,10
- ** CTO - CHECK TIMEOUT.
- *
- * EXIT (A) .LT. 0 IF NOT TIMEOUT.
- *
- * USES CM - CM+4.
- CTO SUBR ENTRY/EXIT
- LDC RTCL FETCH CURRENT CLOCK VALUE
- CRD CM
- LDD CM CHECK ELAPSED TIME
- SBM FTOC,DI
- NJN CTOX IF TIMEOUT PASSED OR NOT REACHED
- LDD CM+1
- SBM FTOC+1,DI
- UJN CTOX RETURN
- DCR SPACE 4,10
- ** DCR - DROP CHANNEL RESERVATION.
- *
- * ENTRY (CR) = 1 IF CHANNEL RESERVED.
- * (IR+4) = CHANNEL NUMBER.
- *
- * EXIT (A) = (CR) = 0.
- *
- * USES CM - CM+4.
- *
- * 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
- ECA SPACE 4,20
- ** ECA - ENABLE CONTROLLER ACTIVITY.
- *
- * THIS SPECIAL REQUEST CLEARS THE CONTROLLER DEAD FLAGS IN
- * THE CONTROLLER STATE TABLE, AND IN THE DEVICE STATE TABLE
- * ENTRIES FOR ALL DEVICES ON THIS CONTROLLER. THIS FUNCTION IS
- * ISSUED BY *1MV* WHEN THE STATE OF A 9853 DRIVE IS CHANGED
- * TO *ON* OR *IDLE*.
- *
- * ENTRY (EO) = EST ORDINAL.
- * (IR+4) = CHANNEL NUMBER.
- *
- * EXIT TO *CMP7* WHEN FUNCTION COMPLETE.
- *
- * CALLS CEA, LND.
- ECA BSS 0 ENTRY
- LDN 0 LOCATE FIRST DRIVE
- ECA1 RJM LND LOCATE DRIVE
- ZJN ECA2 IF NO MORE DRIVES ON CONTROLLER
- LDN 0 CLEAR CONTROLLER DEAD FLAG
- STM ENAD,T7
- LDN 1 LOCATE NEXT DRIVE
- UJN ECA1 LOCATE DRIVE
- ECA2 LDM CSTB,T5 ENABLE CONTROLLER ACTIVITY
- STM CSTB,T5 (CLEAR BITS 15 - 12)
- RJM CEA CLEAR ENABLE ACTIVITY REQUEST
- LJM CMP7 COMPLETE FUNCTION
- EIO SPACE 4,10
- ** EIO - ENTER I/O REQUEST QUEUE.
- *
- * ENTRY (RW) = READ / WRITE STATUS.
- * (CB) = CURRENT BUFFER ORDINAL.
- *
- * USES WB+3, CM - CM+4.
- *
- * CALLS IMR, SLB.
- EIO2 LDD OA
- CRD CM CHECK OUTPUT REGISTER
- LDD CM
- NJN EIOX IF MONITOR REQUEST IN PROGRESS
- EIO3 LDN DCBS
- RJM IMR INITIATE MONITOR REQUEST
- * LDN 0
- SBD WB+3 ADJUST QUEUE ENTRY COUNT
- RAM RQLN,DI
- EIO SUBR ENTRY/EXIT
- LDD RW
- NJN EIO1 IF WRITE OPERATION
- LDD CB
- RJM SLB SET LINKAGE BITS
- EIO1 AOM CBCT,DI
- AOM RQLN,DI ADVANCE ENTRY COUNT
- LPN 77
- SBM EIOA,RW
- MJN EIOX IF QUEUE NOT FULL
- ADN 1
- STD WB+3 NUMBER OF BUFFERS TO DELINK
- SBN 14
- MJN EIO2 IF NOT TIME TO FORCE DELINK
- UJN EIO3 DELINK BUFFERS
- EIOA BSS 0 DELINKING CRITERIA
- CON 1
- CON 10
- ERR SPACE 4,45
- ** ERR - PROCESS ERRORS.
- *
- * ERROR PROCESSING FLOW IS CONTROLLED BY THE RETRY COUNT, ERCT.
- * 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
- * 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 SET MISCELLANEOUS AND ISSUE THE FINAL BML MESSAGE.
- *
- * 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.
- *
- * ENTRY (A) = FAULT ANALYSIS CODE.
- * (RF) = RESET IN PROGRESS STATUS.
- *
- * EXIT TO *CMP*.
- * (RF) = 0.
- *
- * USES DI, PA, RF, RW, WB+3, CM+1 - CM+3, CW - CW+4, T1 - T5.
- *
- * CALLS ACE, CCO, DCM, EDR, ICR, IDM, IMR, LDP, LND, RCR, RMR,
- * RND, RTR, SCD, SEC, SMC, SRP, STF, UHD.
- *
- * MACROS CBTE, MONITOR, SFA.
- ERR CON 0 ENTRY
- PJN ERR1 IF NO RESPONSE PACKET
- LMC 767777
- ERR1 STD T4 SAVE FAULT CODE
- SHN 0-14
- STD T3
- LDM RQLN,DI
- SCN 77
- NJN ERR1.4 IF DEVICE INTERLOCKED
- * IF DEVICE NOT INTERLOCKED, THIS MAY BE AN ERROR ENCOUNTERED
- * WHEN READING A RESPONSE PACKET FOR AN UNSOLICITED ASYNC
- * INTERRUPT. IN THIS CASE, FIND ANY DEVICE ON THIS CONTROL
- * MODULE WHICH IS INTERLOCKED, AND PROCESS THE ERROR AS IF IT
- * WAS FROM THAT DEVICE. IF NO DEVICE ON THIS CONTROL MODULE
- * IS INTERLOCKED, RESET THE CHANNEL AND DISCARD THE ERROR,
- * REENTERING *ECI* AT *ECI3*.
- LDN 0 LOCATE FIRST DRIVE
- ERR1.1 RJM LND
- ZJN ERR1.2 IF NO MORE DEVICES
- LDM RQLN,T7 CHECK NEXT DEVICE
- SCN 77
- NJN ERR1.3 IF DEVICE INTERLOCKED
- LDN 1
- UJN ERR1.1 LOCATE NEXT DEVICE
- ERR1.2 RJM RCR RESET CHANNEL REGISTERS
- LJM ECI3 DISCARD ERROR AND LOOK FOR I/O REQUEST
- ERR1.3 LDD T7 SET DEVICE PARAMETERS
- STD DI
- RJM LDP
- ERR1.4 LDD T3
- STM RPST,DI SET RESPONSE PACKET STATUS
- LDM SRSA
- ZJN ERR3 IF NO RESET IN PROGRESS
- LMD DI
- ERR2 ZJN ERR2.1 IF THIS UNIT CONTROLLING RESET
- RJM RCR RESET CHANNEL REGISTERS
- LDN 0 CLEAR BUFFER COUNTS
- STM CBCT,DI
- LDC 4000
- STM RQLN,DI
- LJM CMP RELEASE DRIVE INTERLOCK
- ERR2.1 STM SRSA CLEAR RESET INTERLOCK
- ERR3 LDM ESAD,DI
- ZJN ERR4 IF NEW PASS THRU PROCESSOR
- STD PA
- LJM 0,PA CONTINUE
- *ERR4 LDN 0 CLEAR CHANNEL ACTIVE
- ERR4 RJM SCD
- LDC 0 CHECK ERROR FLAG
- ERFL EQU *-1
- ZJN ERR5 IF NO ERROR IN PROGRESS
- LMD DI
- NJN ERR2 IF ERROR ON DIFFERENT DEVICE
- ERR5 LDD DI
- STM ERFL SET ERROR IN PROGRESS
- LDC ERR79
- STM ESAD,DI INITIAL ERROR STEP ADDRESS
- LDM RWST,DI
- STM IOST,DI SAVE READ/WRITE STATUS
- * GENERATE BML ERROR MESSAGE.
- LCN 0 SET NO STATUS FOR *HPA*
- STM EDBF+FCS2
- LDD T4 INSERT INITIAL FAULT CODE
- STML EDBF+CODE
- STML EDBF+FALT PRESET FINAL FAULT CODE
- LDM CBCT,DI
- SHN LSLBS-CFLP SECTORS TRANSFERED COUNT
- STML EDBF+STCT
- LDM CYLN,DI SET SEEK ADDRESS - CYLINDER
- STML EDBF+ICYL
- LDM TKSN,DI SEEK ADDRESS - TRACK AND SECTOR
- STML EDBF+ITAS
- LDML LCMD,DI SET LAST COMMAND
- STML EDBF+LSCC
- LDML GSSA EXECUTION (ENDING) STATUS
- STML EDBF+EXST
- LDM ERR RETAIN ENTRY ADDRESS
- STML EDBF+FALT+1
- ERR6 LDDL LF SAVE LAST CHANNEL FUNCTION
- STML EDBF+LCFN
- SCF. ERR6,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
- STML EDBF+TREG
- STML EDBF+TREG+1 CLEAR *T* REGISTER BUFFER
- STML EDBF+TREG+2
- RJM ACE ANALYZE CHANNEL ERROR
- DCN CH+40
- STML EDBF+FCS1 SAVE CHANNEL STATUS
- LDC EDBF+CREG
- STDL T5 SET ERROR BUFFER ADDRESS
- ERR7 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 ERR7 IF MORE REGISTER DATA
- LDM IPPS,DI
- ZJN ERR8 IF NOT I/O REQUEST
- RJM RTR READ *T* REGISTER
- ERR8 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
- LDM RPST,DI
- ZJN ERR13 IF NO RESPONSE PACKET PRESENT
- LDC RPBF
- STDL T2 SET SOURCE DATA ADDRESS
- LDI T2
- ADN 3 CALCULATE STATUS BLOCK LENGTH
- SHN -1
- STD T4
- LDC EDBF+EMBF2 CONVERT STATUS TO 12 BIT DATA
- RJM UHD
- RAM MSGL+1 APPEND TO MESSAGE
- LDN 0
- STM EDBF+FCS2 INDICATE STATUS 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
- ERR13 ZJP ERR71 IF NO SUBSTATUS
- LCN 0
- STD T3
- ERR14 AOD T3 ADVANCE INDEX
- LDD T2
- SHN 21-0 CONVERT FLAG POSITION TO INDEX
- STD T2
- PJN ERR14 IF BIT NOT SET
- LDM ERRB,T3
- STD PA SET PROCESSOR ADDRESS
- LDD T3
- LJM 0,PA EXIT TO PROCESSOR
- * RESERVED SUBSTATUS (PID = X0 AND X1).
- ERR20 LDN ERSS
- LJM ERR70 SET FINAL FAULT CODE
- * DEFECT MANAGEMENT (PID = X2).
- ERR24 LDN EDFM
- LJM ERR70 SET FINAL FAULT CODE
- * MESSAGE / MICROCODE EXCEPTION (PID = X3).
- ERR26 LDN EMME
- LJM ERR70 SET FINAL FAULT CODE
- * INTERVENTION REQUIRED (PID = X4).
- *ERR30 LDN 4 SEARCH FOR SUBSTATUS
- ERR30 RJM SMC
- PJN ERR32 IF SUBSTATUS FOUND
- ERR31 LDN EIVR
- UJN ERR39 SET FINAL FAULT CODE
- ERR32 SHN 21-11
- PJN ERR31 IF NOT FACILITY BUSY
- LJM ERR51 PROCESS FACILITY BUSY ERROR
- * ALTERNATE PORT EXCEPTION (PID = X5).
- ERR38 LDN EAPR
- ERR39 LJM ERR70 SET FINAL FAULT CODE
- * MACHINE EXCEPTION (PID = X6).
- ERR40 LDN ID26 SEARCH FOR DRIVE SUBSTATUS
- RJM SRP
- ZJN ERR42 IF SUBSTATUS FOUND
- ERR41 LDN EMEX
- STM EDBF+FALT SET FINAL FAULT CODE
- LDN 0 DO NOT ISSUE BML MESSAGE
- RJM CCO CHECK FOR CONTROLLER OVER TEMPERATURE
- LJM ERR71 COMPLETE ERROR PROCESSING
- ERR42 LDML RPBF+5,T3 CHECK LENGTH OF PARAMETER
- SHN -10
- SBN 0#0A+1
- MJN ERR41 IF NO EXTENDED SUBSTATUS
- LDM RPBF+12,T3
- LPN 77 EXAMINE COMMAND ENDING STATUS
- SBN 0#11
- ZJN ERR43 IF ECC ERROR
- SBN 0#13-0#11
- ZJN ERR43 IF MISSING SYNC
- SBN 0#19-0#13
- NJN ERR41 IF NOT SECTOR NOT FOUND ERROR
- ERR43 LDN ID32 SEARCH FOR RESPONSE EXTENT
- RJM SRP
- NJN ERR41 IF NOT MEDIA ERROR
- LDM ERCT,DI
- LMN 1
- NJN ERR45 IF NOT SECOND RETRY
- LDM RPBF+10,T3
- STD T4 SET CYLINDER IN ERROR
- LDML RPBF+11,T3
- STD T0 REPACK TRACK + SECTOR
- LPN 77
- STD T5 PHYSICAL SECTOR
- LMD T0
- SHN 6-10 APPEND PHYSICAL TRACK
- RAD T5
- RJM STF INSERT TRACK FLAW IN MST
- ERR45 LDN EDPE
- LJM ERR70 SET FINAL FAULT CODE
- * COMMAND EXCEPTION (PID = X7).
- ERR48 LDN ID17 SEARCH FOR SUBSTATUS
- RJM SRP
- ZJN ERR50 IF SUBSTATUS FOUND
- ERR49 LDN ECEX
- UJN ERR54 SET FINAL FAULT CODE
- ERR50 LDML RPBF+5,T3 CHECK LENGTH OF PARAMETER
- SHN -10
- SBN 5+1
- MJN ERR49 IF NO EXTENDED SUBSTATUS
- LDML RPBF+10,T3
- SHN 21-13
- PJN ERR49 IF NOT RESERVED TO ALTERNATE ACCESS
- ERR51 LDN EDRE
- ERR54 UJN ERR70 SET FINAL FAULT CODE
- * COMMAND ABORTED (PID = X8).
- ERR58 LDN ECMA
- UJN ERR70 SET FINAL FAULT CODE
- * COMMAND CONDITIONALLY SUCCESSFUL (PID = X9).
- ERR60 LDN ECCS SET FINAL FAULT CODE
- STML EDBF+FALT
- LDM IOST,DI RESTORE READ/WRITE STATUS
- STD RW
- AOM ERCT,DI INCREMENT ERROR COUNT
- LDD HN
- ERRNZ HD0100-100 CODE DEPENDS ON VALUE
- RJM IDM ISSUE MESSAGE
- LJM CMP COMPLETE REQUEST
- * COMMAND INCOMPLETE (PID = XA).
- ERR64 LDN ECIC
- * UJN ERR70 SET FINAL FAULT CODE
- * COMPLETE ERROR PROCESSING.
- ERR70 STML EDBF+FALT SET FINAL FAULT CODE
- ERR71 LDML IPPS,DI
- SHN -17
- NJP ERR76 IF ERROR FROM DIAGNOSTICS
- LDM ENAD,DI
- NJP ERR82 IF DRIVE DISABLED (SLAVE RESET FAILURE)
- RJM RCR RESET CHANNEL REGISTERS
- LDC ERR72
- STM ADDR,DI SET RETURN ADDRESS
- * ALLOW ACTIVITY ON OTHER DRIVES TO COMPLETE BEFORE ISSUING
- * CONTROLLER RESET.
- ERR72 LDN 0 LOCATE FIRST DRIVE
- RJM LND
- ERR73 LDM ADDR,T7
- ZJN ERR74 IF NO ACTIVITY ON DEVICE
- LDD T7
- LMD DI
- ZJN ERR74 IF ERROR PROCESSING FOR THIS DRIVE
- LDD T7 LOAD DEVICE PARAMETERS
- STD DI
- RJM LDP
- LDM ADDR,DI
- STD T2
- LJM 0,T2 CONTINUE PROCESSING ON ACTIVE DRIVE
- ERR74 LDN 1 LOCATE NEXT DRIVE
- RJM LND
- NJN ERR73 IF ANOTHER DRIVE PRESENT
- RJM ICR ISSUE CONTROLLER RESET
- * UJN ERR81 (IF RESET SUCCESSFUL)
- NJN ERR82 IF LOGICAL RESET FAILED
- ERR76 LDM EDBF+CODE
- UJN ERR83 PROCESS SLAVE RESET FAILURE
- * REENTER HERE IF ERROR WHILE ATTEMPTING HARDWARE RECOVERY.
- ERR79 RJM RCR RESET CHANNEL REGISTERS
- UJN ERR82 SET RECOVERY FAULT CODE
- ERR81 LDM ERCT,DI CHECK RETRY COUNT
- SBN 1
- ZJN ERR81.1 IF DRIVE RESET IN ORDER
- SBN MERC-CSRC
- NJN ERR82 IF NOT TIME FOR DRIVE RESET
- ERR81.1 RJM EDR EXECUTE DRIVE RESET
- ERR82 LDN 0
- ERR83 STM EDBF+FCS3 SET RECOVERY FAULT CODE
- LDN 0
- STD RF CLEAR RESET IN PROGRESS FLAG
- LDM IOST,DI
- STM RWST,DI RESTORE READ/WRITE STATUS
- STD RW
- LDM EDBF+FCS3
- ZJN ERR85 IF NOT HARDWARE RECOVERY ERROR
- ERR84 RJM SEC SET ERROR CODE
- AOM MISC MARK ERROR UNRECOVERED
- LJM CMP1 COMPLETE PROCESSING
- ERR85 LDM ERCT,DI CHECK ERROR COUNT
- SBN MERC-1
- PJN ERR84 IF ERROR LIMIT
- AOM ERCT,DI
- LDD HN
- ERRNZ HD0100-100 CODE DEPENDS ON VALUE
- RJM IDM ISSUE MESSAGE
- LDM ERCT,DI
- SBN MERC-1
- NJN ERR86 IF NOT TIME TO RUN DRIVE DIAGNOSTICS
- RJM RND RUN DRIVE DIAGNOSTICS
- ERR86 LDM RQLN,DI
- LPN 77 EXTRACT REQUEST QUEUE COUNT
- STD WB+3
- LMM RQLN,DI CLEAR BUFFER COUNT
- STM RQLN,DI
- LDM SREQ,DI
- NJN ERR87 IF NOT I/O PROCESSING
- LDM ERCT,DI
- LMN CSRC
- ZJN ERR89 IF TIME FOR CHANNEL SWAP
- LMN 1&CSRC
- NJN ERR87 IF NOT FIRST RETRY
- LDD WB+3
- ZJN ERR87 IF NO PROCESSED BUFFERS
- LDN IDSS
- RJM IMR INHIBIT DATA STREAMING
- ERR87 RJM DCM DESELECT CONTROL MODULE
- LJM CMP7 RETRY REQUEST
- ERR89 LDD CB
- ZJN ERR89.1 IF NO I/O BUFFER
- SHN CBTLS
- CBTE *
- ADC HSLK GET CHANNEL SELECT STATUS
- CRD T1
- LDD T1
- SHN 0-12
- LMN 1
- ZJP ERR87 IF REQUEST ALREADY CHANNEL-SPECIFIC
- ERR89.1 LDD EO
- STD CM+1 SET EST ORDINAL
- SFA EST
- ADK EQDE FETCH *EQDE* WORD OF EST ENTRY
- CRD CW
- LDD CW CHECK DEVICE STATUS
- LPN 2
- NJN ERR90 IF DEVICE *OFF* OR *DOWN*
- LDD IR+4
- STD CM+3 INSERT CHANNEL NUMBER
- LDN SSES
- STD CM+2 SET SUSPECT STATE ON DEVICE
- MONITOR SEQM
- ERR90 RJM SEC SET ERROR CODE IN *CBT*
- LJM CMP2 COMPLETE PROCESSING
- ERRB BSS 0 SUBSTATUS PROCESSORS
- CON ERR20 RESERVED
- CON ERR20 RESERVED
- CON ERR24 DEFECT MANAGEMENT
- CON ERR26 MESSAGE / MICROCODE EXCEPTION
- CON ERR30 INTERVENTION REQUIRED
- CON ERR38 ALTERNATE PORT EXCEPTION
- CON ERR40 MACHINE EXCEPTION
- CON ERR48 COMMAND EXCEPTION
- CON ERR58 COMMAND ABORTED
- CON ERR60 COMMAND CONDITIONALLY SUCCESSFUL
- CON ERR64 COMMAND INCOMPLETE
- ICR SPACE 4,10
- ** ICR - ISSUE CONTROLLER RESET.
- *
- * ENTRY (RF) .NE. 0 IF PREVIOUS RESET FAILED.
- *
- * EXIT (A) = 0 IF SLAVE RESET FAILED.
- * (A) = 1 IF LOGICAL RESET FAILED.
- * TO *ERR81* IF RESET SUCCESSFUL.
- *
- * CALLS SRS.
- ICR4 LDM RWST,DI
- ZJN ICRX IF SLAVE RESET FAILED
- LDM ERCT,DI
- SBN CSRC-2
- ZJN ICR2 IF TIME TO TRY SLAVE RESET
- ICR SUBR ENTRY/EXIT
- LDD RF
- NJN ICR4 IF PREVIOUS RESET FAILED
- LDM ERCT,DI
- SBN CSRC-2
- NJN ICR1 IF NOT TIME TO TRY SLAVE RESET
- * DO NOT PERFORM SLAVE RESET IF CHANNEL ERROR, MEDIA ERROR,
- * RESET ERROR OR CONTROLLER DEAD.
- LDML EDBF+FALT
- SBN ETIT
- ZJN ICR2 IF INTERRUPT TIMEOUT
- SBN EDPE+1-ETIT
- MJN ICR1 IF CHANNEL / MEDIA ERROR
- SBN ECRE-EDPE-1
- MJN ICR2 IF NOT RESET ERROR / CONTROLLER DEAD
- * PERFORM LOGICAL RESET.
- ICR1 LDC 1S12+ERR81 ISSUE LOGICAL RESET
- UJN ICR3 RESET CONTROL MODULE
- * PERFORM SLAVE RESET.
- ICR2 LDN 0 FORCE LOGGING OF ERROR RESPONSE
- STM ESAD,DI
- LDC ERR81 ISSUE SLAVE RESET
- ICR3 LJM SRS RESET CONTROL MODULE
- IDM SPACE 4,20
- ** IDM - ISSUE DAYFILE MESSAGE.
- *
- * ENTRY (A) = BML MESSAGE SYMPTOM CODE.
- * (RW) = READ / WRITE FLAG.
- * (EO) = EST ORDINAL.
- * (CN) = CONTROLLER NUMBER.
- * (DN) = DRIVE NUMBER.
- * (MISC) = 1 IF UNRECOVERED ERROR.
- *
- * EXIT (A) = (MISC) = 0.
- *
- * USES T2, T3, CM - CM+4, WB - WB+4.
- *
- * CALLS IMB, UEC.
- IDM SUBR ENTRY/EXIT
- LMC D"DN"*400
- STM BMLM+1 INSERT SYMPTOM CODE IN MESSAGE
- LDM PNUN,DI
- LPC 777 INSERT CONTROLLER AND UNIT NUMBERS
- STM UNIT
- LMM PNUN,DI SET PORT NUMBER
- SHN -3
- STM PORT
- LDD EO INCLUDE EST ORDINAL
- STM ESTO
- LDM ERCT,DI SET RETRY COUNT
- SHN 5
- LMD RW MERGE READ / WRITE FLAG
- SHN 1
- 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.
- * (EO) = EST ORDINAL.
- *
- * EXIT (A) = 0 IF UNIT INTERLOCKED.
- *
- * USES T2, CM - CM+4, T7 - T7+4.
- *
- * CALLS SUI.
- *
- * MACROS CBTE, SFA.
- IDU6 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
- STM LCMD,DI
- SFA EST,EO CALCULATE EST ADDRESS
- ADK EQDE
- CRD CM READ *EQDE* WORD
- * CHECK EST ENTRY FOR CHANNEL DOWN.
- LDD CM+1 EXTRACT CHANNEL
- LMD IR+4
- LPN 77
- ZJN IDU1 IF PATH SERVICED BY THIS DRIVER
- LDN 1
- IDU1 ADN CM+1 SET CHANNEL BYTE ADDRESS
- STD T2
- LDI T2 CHECK CHANNEL STATE
- SHN -11
- LMN 4
- IDU2 ZJN IDU6 IF CHANNEL UP AND AVAILABLE
- SCN 1
- IDU3 NJN IDUX IF CHANNEL DOWN OR NOT ENABLED
- LDD CB
- ZJP IDU6 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
- ZJN IDU4 IF NOT CHANNEL SPECIFIC REQUEST
- LDD T7
- SHN -6 CHECK CHANNEL
- LMD IR+4
- ZJN IDU2 IF REQUEST FOR THIS DRIVER
- IDU4 LDN 1
- UJN IDU3 RETURN
- IIO SPACE 4,15
- ** IIO - INITIATE I/O.
- *
- * ENTRY (A) = (CB) = *CBT* ORDINAL.
- *
- * 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 STD 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 LDD NR+1
- STM CPBF+FCP+3 SET CYLINDER IN COMMAND PACKET
- STM CYLN,DI
- ADN 2
- SBK CYUN
- PJN IIO2 IF WITHIN LAST TWO CYLINDERS OF DEVICE
- LDK MXSS MAXIMUM SECTOR COUNT TO STREAM
- UJN IIO3 SET SECTOR COUNT
- IIO2 LDK MNSS MINIMUM SECTOR COUNT TO STREAM
- IIO3 STML CPBF+FCP+2 SECTOR COUNT / STREAM LIMIT
- 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
- LJM IIO4 SET PROCESSOR ADDRESS
- IMF SPACE 4,10
- ** IMF - ISSUE MONITOR FUNCTION.
- *
- * ENTRY (A) = FUNCTION.
- *
- * EXIT (A) = 0.
- *
- * USES CM.
- *
- * CALLS CMC, FTN.
- IMF1 RJM CMC WAIT MONITOR COMPLETE
- LDD CM
- RJM FTN ISSUE MONITOR FUNCTION
- IMF SUBR ENTRY/EXIT
- STD CM
- UJN IMF1 CHECK OUTPUT REGISTER
- IMR SPACE 4,15
- ** IMR - INITIATE MONITOR REQUEST.
- *
- * ENTRY (A) = *BIOM* SUBFUNCTION.
- * (WB+3 - WB+4) = *BIOM* PARAMETERS.
- *
- * EXIT (A) = 0.
- *
- * USES WB - WB+2.
- *
- * CALLS AME, CMC.
- IMR2 RJM AME ATTEMPT MONITOR EXCHANGE
- * LDN 0
- 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
- UJN IMR2 ATTEMPT EXCHANGE
- 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 LDM IOMA
- NJN IOM1 IF MESSAGE PRESENT
- IOM SUBR ENTRY/EXIT
- STD T1
- MJN IOM3 IF MESSAGE REFRESH
- STM IOMA
- ZJN IOM2 IF CLEAR MESSAGE CALL
- LDD EO
- RJM C2D CONVERT EST ORDINAL
- STM 2,T1
- LDD EO
- SHN -6 SET ORDINAL IN MESSAGE
- ADC 2RQ0
- STM 1,T1
- IOM1 LDD CP SYSTEM CP ADDRESS
- ADN MS2W
- CWM **,TR STORE OPERATOR MESSAGE
- IOMA EQU *-1
- UJN IOMX RETURN
- ISR SPACE 4,25
- ** ISR - IDENTIFY AND PROCESS SPECIAL REQUEST.
- *
- * ENTRY (CM+3) = SPECIAL REQUEST FLAGS.
- * (DI) = DEVICE STATUS BLOCK ADDRESS.
- * (EO) = EST ORDINAL.
- *
- * EXIT (CM+3) UPDATED - BITS FOR *ECAF* AND/OR *LMLF* CLEARED
- * IF REQUEST IS FOR THE ALTERNATE CHANNEL.
- * TO *XMD2* IF UNIT INTERLOCK NOT OBTAINED.
- * TO *ERR* IF CONTROLLER FAILURE.
- * TO *ECA* IF ENABLE CONTROLLER ACTIVITY AND *BDLL*
- * BIT NOT CLEAR.
- * TO SPECIAL REQUEST PROCESSOR (ADDRESS IN TABLE *ISRA*)
- * IF SPECIAL REQUEST FOUND WITH -
- * (RW) = INDEX FOR SPECIAL REQUEST.
- *
- * USES CM, CM+3, PA, RW, T1 - T7.
- *
- * CALLS CPF, IDU.
- *
- * MACROS SFA.
- ISR SUBR ENTRY/EXIT
- * CHECK FOR *ENABLE CONTROLLER ACTIVITY* (*ECAF*) REQUEST.
- * IF REQUEST IS FOR OTHER CHANNEL, LOOK FOR DIFFERENT REQUEST.
- * IF ALREADY ENABLED ON BOTH CHANNELS, EXIT TO *CSR*.
- LDD CM+3
- SHN 21-ECAF+ECAF/12D*12D
- PJN ISR3 IF *ECAF* REQUEST NOT SET
- SFA EST,EO CHECK EST ENTRY
- ADK EQDE
- CRD T1
- LDD T1+4
- SHN 3
- ADK BDLL CHECK WHICH CHANNEL TO ENABLE
- CRD T4
- LDD T4
- SHN -1
- LPN 3
- STD T4
- ZJN ISR3 IF ALREADY ENABLED ON BOTH CHANNELS
- SBN 3
- PJN ISR1 IF NEITHER CHANNEL IS ALREADY ENABLED
- LDM T1,T4
- LMD IR+4
- LPN 77
- NJN ISR2 IF THIS CHANNEL ALREADY ENABLED
- ISR1 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
- * SEARCH FOR OTHER SPECIAL REQUEST.
- ISR4 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
- 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
- LDM ENAD,DI
- NJN ISR10 IF CONTROLLER FAILURE
- 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
- LJM XMD2 RETURN TO MAIN LOOP
- * CONTROLLER FAILURE.
- ISR10 LDN ECMD
- RJM ERR PROCESS ERROR
- ISRA BSS 0 SPECIAL REQUEST PROCESSORS
- CON CSR CLEAR FLAG (ENABLE CONTROLLER ACTIVITY)
- CON CSR CLEAR FLAG (RESERVED)
- CON CSR CLEAR FLAG (RESERVED)
- CON LDA LIST DRIVE SERIAL NUMBER
- CON CSR CLEAR FLAG (RESERVED)
- CON LDA LIST MICROCODE REVISION LEVEL
- ISRB BSS 0 INTERNAL SPECIAL REQUEST PROCESSORS
- CON BOR BREAK OPPOSITE RESERVE (INTERNAL REQUEST)
- CON SDA SET DRIVE ATTRIBUTES (INTERNAL REQUEST)
- LDP SPACE 4,20
- ** LDP - LOAD DEVICE PARAMETERS.
- *
- * ENTRY (DI) = DEVICE STATUS BLOCK ADDRESS.
- *
- * EXIT (A) = (EO) = EST ORDINAL.
- * (CB) = *CBT* ORDINAL.
- * (CN) = CONTROLLER NUMBER.
- * (DN) = DRIVE NUMBER.
- * (EO) = EST ORDINAL.
- * (PA) = REQUEST IN PROGRESS ADDRESS.
- * (RW) = READ / WRITE FLAG.
- * (CM - CM+4) = *PILL* WORD OF *PUT* ENTRY.
- * (WB - WB+4) = *UNCT* WORD OF *PUT* ENTRY.
- *
- * USES CB, CN, DN, EO, PA, RW, CM - CM+4, WB - WB+4.
- *
- * MACROS PUTE.
- LDP SUBR ENTRY/EXIT
- 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 NUMBERS
- LPC 777
- SHN 21-5 EXTRACT CONTROLLER NUMBER
- STD CN
- SHN 5-21 ISOLATE DRIVE NUMBER
- STD DN
- LDD WB+3 *CBT* ORDINAL
- STD CB
- LDM RWST,DI RESTORE READ / WRITE STATUS
- STD RW
- LDM ADDR,DI CURRENT PROCESSING ADDRESS
- STD PA
- LDD WB+1 SET EST ORDINAL
- STD EO
- UJN LDPX RETURN
- LND SPACE 4,10
- ** LND - LOCATE NEXT DRIVE (ON SPECIFIED CONTROLLER).
- *
- * ENTRY (A) = 0 TO LOCATE FIRST DRIVE OF STRING.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- * (T5) = CONTROLLER STATUS BLOCK INDEX, IF (A) = 0.
- * (T7) = CURRENT DEVICE STATE TABLE ADDRESS.
- *
- * EXIT (A) = (T7) = STATE TABLE ADDRESS OF NEXT DRIVE.
- * (A) = 0 IF NO MORE DRIVES (ON CONTROLLER).
- * (T5) = CONTROLLER STATUS BLOCK INDEX.
- *
- * USES T5, T7.
- LND2 LDM PNUN,DI EXTRACT CONTROLLER BLOCK INDEX
- SHN -6
- STD T5
- LDM CSTB,T5 ADDRESS OF FIRST DRIVE IN STRING
- STD T7
- LND3 LDM PNUN,T7 FORM *CSTB* INDEX
- SHN -6
- LMD T5
- 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 XMDA
- NJN LND3 IF NOT END OF BLOCK
- * LDN 0
- UJN LNDX RETURN
- LSD SPACE 4,15
- ** LSD - LOCATE SELECTED DRIVE IN *DSTB*.
- *
- * ENTRY (T4) = DRIVE NUMBER.
- *
- * EXIT (A) = 0 IF UNKNOWN DRIVE ON SPECIFIED CONTROLLER.
- * = DEVICE STATE TABLE ADDRESS FOR DRIVE.
- *
- * CALLS LND.
- LSD1 LDN 0 LOCATE FIRST DRIVE
- LSD2 RJM LND
- ZJN LSDX IF END OF DRIVE STRING
- LDM PNUN,T7
- LPN 77 CHECK DRIVE NUMBER
- LMD T4
- NJN LSD2 IF NOT SPECIFIED DRIVE
- LDM ADDR,T7
- ZJN LSDX IF DRIVE NOT ACTIVE
- LDD T7
- LSD SUBR ENTRY/EXIT
- LDD T4
- SBN 10
- MJN LSD1 IF VALID DRIVE NUMBER
- LDN 0
- UJN LSDX RETURN
- PEF SPACE 4,15
- ** PEF - PROCESS ERROR FLAGS.
- *
- * ENTRY (RW) = ERROR INDEX.
- * (CB) = *CBT* ORDINAL.
- * (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 PROCESSOR IF I/O INITIATED.
- *
- * CALLS IDU, IIO.
- PEF7 LDN 0 INDICATE I/O IN ORDER
- PEF SUBR ENTRY/EXIT
- LDD T1
- SHN -6 CHECK CHANNEL NUMBER
- LMD IR+4
- PEF1 NJN PEFX IF I/O DISABLED ON THIS ACCESS
- LDD RW
- ZJN PEFX IF *1MV* DEVICE VERIFICATION
- LDML ERCT,DI
- NJN PEF7 IF I/O INITIATED
- RJM IDU INTERLOCK DISK UNIT
- NJN PEFX IF INTERLOCK NOT AVAILABLE
- LDN CSRC
- STM ERCT,DI SET INITIAL ERROR COUNT
- LDM ENAD,DI
- NJN PEF7 IF CONTROLLER DEAD
- LDD CB INITIATE I/O
- RJM IIO
- LJM 0,PA EXIT TO PROCESSOR
- RCS SPACE 4,10
- ** RCS - REMOVE CHANNEL FROM SYSTEM USE.
- *
- * ENTRY (A) = EST ORDINAL IF CHANNEL TO BE DOWNED ON DEVICE.
- * = 0 IF CHANNEL TO BE GLOBALLY DOWNED.
- *
- * USES CM - CM+4.
- *
- * MACROS DELAY, EXECUTE, MONITOR.
- RCS SUBR ENTRY/EXIT
- LMC 4000
- STM RCSA+4 SET DRIVER CALL FLAG, EST ORDINAL
- LDD MA
- CWM RCSA,ON STORE *1DS* CALL IN MESSAGE BUFFER
- RCS1 LDN 0
- STD CM+1 SET NON-PRIORITY REQUEST
- EXECUTE 1DS,=
- MONITOR RPPM REQUEST PP
- LDD CM+1
- NJN RCSX IF *1DS* STARTED
- DELAY
- UJN RCS1 RETRY CALL
- RCSA VFD 18/3L1DS,6/,12/DWNF,12/0,12/4000
- 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+0
- UJN RCTX RETURN
- RLB SPACE 4,15
- ** RLB - READ LINKAGE BITS.
- *
- * ENTRY (A) = (T6) = ADDRESS FOR LINKAGE IN (CM - CM+4).
- * (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
- * LDD T6
- 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
- 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 T5, T6, CM - CM+2.
- *
- * 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
- SEC SPACE 4,15
- ** SEC - SET ERROR CODE.
- *
- * ENTRY (EO) = EST ORDINAL.
- *
- * EXIT TO *CSR* IF PROCESSING SPECIAL REQUEST.
- *
- * USES T5, UC, CW - CW+4, WB+3 - WB+4.
- *
- * CALLS DCM, IMR, IOM, LDP, RCS, SES.
- *
- * MACROS CBTE.
- SEC5 LDN 1 BUFFER COUNT TO BE DELINKED
- STD WB+3
- * 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.
- LDN SETS INSERT CODE IN *CBT*
- RJM IMR
- * LDN 0 SET INTERLOCK RELEASED (FOR *CMP*)
- STM RQLN,DI
- SOD UC DECREMENT UNIT ACTIVITY COUNT
- SEC SUBR ENTRY/EXIT
- LDN 0
- RJM IOM
- RJM DCM ENSURE CONTROLLER DESELECTED
- RJM LDP
- LDML IPPS,DI CHECK DIAGNOSTIC FLAG
- SHN -17
- ZJN SEC1 IF NOT ERROR FROM DIAGNOSTIC
- LDD CB
- SHN CBTLS CONVERT CBT ORDINAL
- CBTE *
- ADC HSLK FETCH ERROR STATUS
- CRD CW
- LDD CW CHECK PREVIOUS ERROR
- LPN 77
- NJN SEC2 IF PREVIOUS ERROR
- SEC1 LDML EDBF+FALT
- SHN -2 CREATE INDEX FROM FAULT CODE
- STD T5
- LDM TMSE,T5
- SEC2 STD WB+4 SET MASS STORAGE ERROR CODE
- LDML IPPS,DI CLEAR *RND*, *SDA* AND *BOR* FLAGS
- LPC -1S15-1S14-1S13
- STML IPPS,DI
- LDD WB+4 CHECK ERROR CODE
- LMN NRDE
- ZJN SEC3 IF NOT-READY CONDITION
- LDN STDE&STNR
- SEC3 LMN STNR
- RJM SES SET ERROR STATUS IN MST
- LDD CB
- ZJN SEC4 IF SPECIAL REQUEST OR NO BUFFER
- LDM SREQ,DI
- ZJP SEC5 IF I/O PROCESSING
- SEC4 LDD EO DOWN CHANNEL ON THIS DEVICE
- RJM RCS
- AOM MISC MARK ERROR UNRECOVERED
- LJM CSR CLEAR SPECIAL REQUEST
- SFR SPACE 4,15
- ** SFR - SEARCH FOR CONSECUTIVE REQUEST.
- *
- * ENTRY (A) = CURRENT *CBT* ORDINAL.
- *
- * EXIT (A) = (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.
- 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
- LDD T1 CHECK STREAMING ENABLED
- LPN 40
- NJN SFR1 IF DATA STREAMING DISABLED
- LDM CYLN,DI
- ADN 2
- SBK CYUN
- PJN SFR0 IF WITHIN LAST TWO CYLINDERS OF DEVICE
- LDK MXBS MAXIMUM BUFFER COUNT TO STREAM
- UJN SFR0.1 CHECK BUFFER COUNT
- SFR0 LDK MNBS MINIMUM BUFFER COUNT TO STREAM
- SFR0.1 SBM CBCT,DI
- ZJN SFR2 IF TIME TO CURTAIL STREAMING
- LDD T1+2
- STD NB
- ZJN SFRX IF NO REQUEST AVAILABLE
- 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 SFR4 IF SAME DIRECTION AND INTERLOCKED
- SFR1 LDN 0
- SFR2 STD NB
- SFR3 UJP SFRX RETURN
- SFR4 LDD NR+1 CHECK SEEK PARAMETERS
- SBD CM+1
- ZJN SFR5 IF SAME CYLINDER
- SBN 1
- NJN SFR1 IF NOT NEXT CYLINDER
- LDD CM+2
- SBK PTCY*100
- UJN SFR6 CHECK NEXT TRACK / SECTOR
- SFR5 LDD CM+2 CHECK NEXT SECTOR
- ADN PSBFDN
- LMD NR+2
- ZJN SFR7 IF NEXT SECTOR ON SAME TRACK
- LDD CM+2
- SFR6 ADD HN SET NEXT TRACK
- SBK PSPT-PSBF
- LMD NR+2
- NJN SFR1 IF NOT NEXT SECTOR ON CONSECUTIVE TRACKS
- SFR7 LDD NB
- UJN SFR3 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, CM - CM+4, T1 - T6, UA - UA+1.
- *
- * CALLS RLB, SUA, WLB.
- *
- * MACROS CBTE.
- SLB SUBR ENTRY/EXIT
- STD PB
- RJM SUA SET UEM ADDRESS
- LDN PAD1
- STD T2
- SRD T3
- LDN 5 UEM WORD COUNT
- STD T5
- LDM SLBB,RW SET PROCESSOR ADDRESS
- STM 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
- LRD T3
- UJP SLBX RETURN
- SLBB CON RLB READ LINKAGE BITS
- CON WLB WRITE LINKAGE BITS
- SMC SPACE 4,10
- ** SMC - SEARCH FOR MAJOR CATEGORY SUBSTATUS.
- *
- * ENTRY (A) = MAJOR STATUS CATEGORY.
- *
- * EXIT (A) = FIRST TWO OCTETS OF SUBSTATUS.
- * .LT. 0 IF SUBSTATUS NOT PRESENT.
- * (T4) = SUBSTATUS PARAMETER ID CODE.
- *
- * CALLS SRP.
- SMC1 LDML RPBF+6,T3 RETURN FIRST BYTE OF SUBSTATUS
- SMC SUBR ENTRY/EXIT
- LMN 0#10
- STD T4 SEARCH FOR CONTROLLER SUBSTATUS
- RJM SRP
- ZJN SMC1 IF SUBSTATUS FOUND
- LDN 0#20-0#10
- RAD T4 SEARCH FOR DRIVE SUBSTATUS
- RJM SRP
- ZJN SMC1 IF SUBSTATUS FOUND
- * LCN 0
- UJN SMCX RETURN
- SRF SPACE 4,10
- ** SRF - SET DRIVER RELOAD FLAG.
- *
- * EXIT (A) = 0.
- *
- * USES CM - CM+4.
- *
- * CALLS DCR.
- *
- * MACROS MONITOR.
- 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
- SRP SPACE 4,10
- ** SRP - SEARCH RESPONSE PACKET.
- *
- * ENTRY (A) = PARAMETER ID TO SEARCH FOR.
- *
- * EXIT (A) = 0 IF ID FOUND.
- * .LT. 0 IF ID NOT FOUND.
- * (T3) = *RPBF* INDEX - 5 OF PARAMETER BLOCK.
- *
- * USES T1, T2.
- 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
- STF SPACE 4,15
- ** STF - SET TRACK FLAW, IF TRACK WITHIN USER AREA.
- *
- * ENTRY (CB) = CURRENT *CBT* ORDINAL.
- * (EO) = EST ORDINAL.
- * (T3+1) = CYLINDER NUMBER.
- * (T3+2) = PHYSICAL TRACK + SECTOR.
- *
- * USES CM+1 - CM+3.
- *
- * CALLS CDA, C2D, IDM.
- *
- * MACROS MONITOR.
- STF SUBR ENTRY/EXIT
- 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
- RJM CDA CONVERT DISK ADDRESS
- LDD T6 SET TRACK TO FLAW
- STD CM+2
- SBK MCLT
- PJN STFX IF TRACK NOT WITHIN USER AREA
- LDD T6
- RJM C2D SET TRACK NUMBER IN MESSAGE
- STM STFB+5
- LDD T6
- SHN -6
- RJM C2D SET TRACK NUMBER IN MESSAGE
- STM STFB+4
- LDK SFTS INSERT SUBFUNCTION
- STD CM+3
- MONITOR SMDM SET TRACK FLAW REQUEST IN MST
- LDD CM+1
- NJN STF2 IF THIS FLAW ALREADY REQUESTED
- LDC STFA
- STML MAD1 ISSUE ERROR LOG MESSAGE
- RJM IDM
- STF2 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 T6, CM - CM+4.
- STO SUBR ENTRY/EXIT
- STD T6
- LDC RTCL FETCH CURRENT TIME
- CRD CM
- LDD T6
- ADD CM+1 SET TIME LIMIT
- STM FTOC+1,DI
- SHN -14
- ADD CM
- STM FTOC,DI
- UJN STOX RETURN
- SUA SPACE 4,10
- ** SUA - SET UEM ADDRESS.
- *
- * ENTRY (A) = *CBT* ORDINAL.
- *
- * EXIT (UA - UA+1) = UEM ADDRESS / 100.
- *
- * USES 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
- SUI SPACE 4,15
- ** SUI - SET UNIT INTERLOCK.
- *
- * ENTRY (DI) = DEVICE STATUS BLOCK INDEX.
- *
- * EXIT (A) = 0 IF *PUT* ENTRY INTERLOCKED.
- * (UC) = UNIT ACTIVITY COUNT INCREMENTED.
- * (CM+1) = *BIOM* STATUS.
- *
- * USES CM+1, CM+2, UC.
- *
- * MACROS MONITOR.
- SUI1 AOD UC ADVANCE UNIT ASSIGNED COUNT
- LDC 4000
- SUI2 STM RQLN,DI SET UNIT INTERLOCKED
- LDN 0
- SUI SUBR ENTRY/EXIT
- LDM RQLN,DI
- SCN 77
- NJN SUI2 IF UNIT ALREADY INTERLOCKED
- 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
- ZJN SUI1 IF INTERLOCK ACQUIRED
- LDN 1
- 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 CHFE CHANNEL FAILURE
- CON DRVE DRIVE RESERVE
- CON RAME CONTROLLER MEMORY
- LOC *O
- TMSK SPACE 4,10
- ** TMSK - TABLE OF UNIT MASKS.
- *
- * INDEXED BY UNIT NUMBER.
- 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/FIELD IN WORD *BDLL* OF THE MST.
- *
- * ENTRY (A) = 6/WORD, 6/BITS TO CHANGE.
- * (EO) = EST ORDINAL.
- * (CM+2) = NEW VALUE.
- * (T7) = LOW ORDER BIT TO CHANGE TIMES 100.
- *
- * USES T6, CM - CM+4.
- *
- * MACROS MONITOR, SFA.
- UBP SUBR ENTRY/EXIT
- STD T6
- LDD MA
- CWD T6 STORE MESSAGE BUFFER PARAMETERS
- SFA EST,EO CALCULATE EST ADDRESS
- ADK EQDE
- CRD CM
- LDD CM+4
- SHN 3
- STD CM+4 SET BASE *MST* ENTRY ADDRESS
- 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.
- *
- * ENTRY (A) = DESTINATION DATA ADDRESS.
- * (T2) = SOURCE DATA ADDRESS.
- * (T4) = BYTE COUNT OF HEX DATA.
- *
- * EXIT (A) = CM WORD COUNT OF 12 BIT DATA.
- *
- * USES T2, T3, T4, 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
- VIS SPACE 4,15
- ** VIS - VERIFY INTERRUPT SOURCE.
- *
- * ENTRY (A) .LT. 0 IF ASYNC INTERRUPT.
- * (DI) = DEVICE STATUS BLOCK ADDRESS.
- * (PA) = REQUEST IN PROGRESS ADDRESS.
- *
- * EXIT (A) = 0 IF INTERRUPT FOR INACTIVE DRIVE.
- * = RETURN ADDRESS TO PROCESSOR.
- *
- * USES DI, T4.
- *
- * CALLS LDP.
- VIS3 LDM ATTN,DI PROCESS ASYNC INTERRUPT
- ZJN VIS3.1 IF NOT WAITING FOR INTERRUPT
- LDM EEST,DI
- LMN ASRT
- ZJN VIS6 IF WAITING FOR ASYNC INTERRUPT
- VIS3.1 LDM ADDR,DI
- LMC SRS12
- NJN VIS3.2 IF NOT NONCONTROLLING DRIVE ON SLAVE RESET
- STM ADDR,DI CLEAR REENTRY ADDRESS
- VIS3.2 LDN 0
- UJN VISX DISCARD UNSOLICITED ASYNC INTERRUPT
- VIS4 LDD T4 CHANGE ADDRESS TO CORRECT DEVICE
- STD DI
- RJM LDP LOAD DEVICE PARAMETERS
- VIS5 LDM RQLN,DI
- SCN 77
- ZJN VISX IF UNIT NOT INTERLOCKED
- VIS6 LDD PA
- LMC ATT2
- NJN VIS2 IF NOT SOLICITED INTERRUPT
- LDM ATTN,DI
- VIS SUBR ENTRY/EXIT
- MJP VIS3 IF ASYNC INTERRUPT
- LDM RPBF+CRN CHECK COMMAND NUMBER
- LMD DI
- ZJN VIS5 IF INTERRUPT FROM CURRENT DEVICE
- LDC DSTB
- STD T4
- VIS1 LDM RPBF+CRN COMPARE COMMAND NUMBER
- LMD T4
- ZJN VIS4 IF DEVICE FOUND
- LDN DSTBE
- RAD T4 ADVANCE TABLE ADDRESS
- LMM XMDA
- NJN VIS1 IF NOT END OF DEVICE STATE TABLE
- VIS2 LDN 0
- UJN VISX RETURN
- WLB SPACE 4,10
- ** WLB - WRITE LINKAGE BITS.
- *
- * ENTRY (A) = (T6) = ADDRESS FOR LINKAGE IN (CM - CM+4).
- * (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
- * LDD T6
- UJN WLB2 MOVE SECTOR LINKAGE
- WMC SPACE 4,10
- ** WMC - WAIT MAINTENANCE CHANNEL EMPTY.
- *
- * EXIT (A) = 0 IF CHANNEL EMPTY.
- * .NE. 0 IF CHANNEL HUNG FULL.
- WMC3 LDN 0 INDICATE CHANNEL EMPTY
- WMC SUBR ENTRY/EXIT
- LDD TH
- WMC1 EJM. WMC3,MR IF TRANSMISSION COMPLETE
- SBN 1
- NJN WMC1 IF NOT TIMED OUT
- WMC2 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.*
- WTC SPACE 4,10
- ** WTC - WAIT TRANSMISSION COMPLETE.
- *
- * ERROR TO *ERR*.
- *
- * USES T1.
- *
- * CALLS CFE.
- WTC3 LDD T1 CHECK FOR I/O ERROR
- RJM CFE
- DCN CH+40 DEACTIVATE CHANNEL
- WTC SUBR ENTRY/EXIT
- STD T1
- LDN 5 SET TIMEOUT = 5*262 MILLISECONDS
- STD T0
- WTC1 LDN 0
- WTC2 EJM WTC3,CH IF LAST BYTE TAKEN OFF CHANNEL
- SBN 1
- NJN WTC2 IF NOT TIMED OUT
- SOD T0
- NJN WTC1 IF NOT TIMEOUT
- LDN ECHF
- RJM ERR PROCESS CHANNEL ERROR
- TITLE CHANNEL SUBROUTINES.
- BCS SPACE 4,10
- ** BCS - DEFINE INFORMATION TRANSFER.
- *
- * ENTRY (A) = BUS *A* BITS 7 AND 6.
- *
- * ERROR TO *ERR*.
- *
- * CALLS FCN, RSR.
- BCS2 LDDL LF FETCH LAST FUNCTION
- LMN 0#32
- RJM FCN DROP SYNC OUT (NO PARITY CHECK)
- LDN 77
- RJM RSR READ SLAVE RESPONSE
- BCS SUBR ENTRY/EXIT
- SHN 17-1
- ADC F005B SET SYNC OUT
- RJM FCN
- LDN 77 READ SLAVE RESPONSE
- RJM RSR
- LPC 377
- ZJN BCS2 IF BUS ACKNOWLEDGE CORRECT
- LDN EBAE
- RJM ERR PROCESS ERROR
- CFE SPACE 4,10
- ** CFE - CHECK FOR I/O ERROR.
- *
- * ENTRY (A) = RESIDUAL WORD COUNT.
- *
- * EXIT (A) = 0.
- *
- * ERROR TO *ERR*.
- CFE5 NJN CFE3 IF INCOMPLETE DATA TRANSFER
- CFE SUBR ENTRY/EXIT
- CFM CFE5,CH IF CHANNEL ERROR FLAG CLEAR
- CFE1 LDN ECIE
- CFE2 RJM ERR PROCESS CHANNEL ERROR
- CFE3 LDN EIDT
- UJN CFE2 PROCESS ERROR
- CTC SPACE 4,10
- ** CTC - CHECK TRANSFER COMPLETE.
- *
- * EXIT (A) = 0.
- *
- * ERROR TO *ERR*.
- *
- * CALLS CTO.
- CTC SUBR ENTRY/EXIT
- CTC1 LDC F0700
- RJM FCN REQUEST OPERATIONAL STATUS
- ACN CH
- IAN CH READ STATUS
- SFM CFE1,CH IF CHANNEL ERROR FLAG SET
- LPC 176001
- ZJN CTCX IF TRANSFER COMPLETE
- SCN 1
- NJN CTC4 IF REGISTER PARITY ERROR
- RJM CTO CHECK ELAPSED TIME
- MJN CTC1 IF NOT TIMEOUT
- LDN ETTC
- CTC3 RJM ERR PROCESS ERROR
- CTC4 LDN ERPE
- UJN CTC3 PROCESS ERROR
- DCM SPACE 4,10
- ** DCM - DESELECT CONTROL MODULE.
- *
- * ENTRY (SF) = 0 IF CONTROLLER NOT SELECTED.
- *
- * EXIT (A) = (SF) = 0.
- *
- * USES SF.
- *
- * ERROR TO *ERR*.
- *
- * CALLS FCN.
- DCM2 IAN CH+40 READ CONTROLLER RESPONSE
- LDN 0
- STD SF CLEAR SELECT FLAG
- DCM SUBR ENTRY/EXIT
- LDD SF
- ZJN DCMX IF CONTROLLER NOT SELECTED
- LDC F0071
- RJM FCN CLEAR SELECT OUT
- LDC 2000
- ACN CH
- DCM1 FJM DCM2,CH IF SLAVE IN DROPPED
- SBN 1
- NJN DCM1 IF NOT TIMED OUT
- LDM ESAD,DI
- NJN DCM2 IF ERROR PROCESSING
- LDN ECNR
- RJM ERR PROCESS ERROR
- DTM SPACE 4,10
- ** DTM - DETERMINE TRANSFER MODE.
- *
- * ENTRY (A) = CONTROLLER NUMBER.
- *
- * 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 FCN REQUEST TRANSFER MODE (SET MASTER OUT)
- LDN 77
- RJM RSR READ SLAVE RESPONSE
- LPN 0#10
- LMN 0#10 COMPLEMENT TRANSFER MODE
- SHN 13-4
- RADL T4 APPEND TRANSFER MODE TO RESPONSE
- LDDL LF
- LMC 0#54 DROP MASTER OUT
- RJM FCN
- LDN 77 READ SLAVE RESPONSE
- RJM RSR
- LDDL T4
- UJP DTMX RETURN
- ECI SPACE 4,20
- ** ECI - EXAMINE CONTROLLER INTERRUPTS.
- *
- * ENTRY (DI) = DEVICE STATUS BLOCK ADDRESS.
- *
- * EXIT (A) .NE. 0, IF RESET OR ERROR IN PROGRESS.
- * (PA) = 0 IF NO REQUEST IN PROGRESS.
- * (CM - CM+4) = *PILL* WORD OF *PUT* ENTRY.
- * (WB - WB+4) = *UNCT* WORD OF *PUT* ENTRY.
- * TO (ATTN) IF INTERRUPT RECEIVED.
- * TO *SRS* IF LOGICAL RESET NOT YET PERFORMED.
- *
- * USES PA, T5.
- *
- * CALLS FCN, GIS, IHD, LDP, SAP, SUI.
- ECI SUBR ENTRY/EXIT
- ECI1 RJM SAP SELECT ADAPTOR PORT
- LDC F0715 ENABLE INTERRUPTS
- RJM FCN
- RJM LDP LOAD DEVICE PARAMETERS
- RJM GIS GET INTERRUPT STATUS
- LPML TMSK,CN
- ZJN ECI3 IF NO INTERRUPT FROM THIS CONTROLLER
- * CHECK THAT INTERRUPT BELONGS TO CURRENT DRIVE.
- RJM IHD
- ZJN ECI3 IF RESPONSE FROM INACTIVE DRIVE
- * LDM ATTN,DI
- STD PA SET RETURN ADDRESS
- LDN 0
- STM ATTN,DI DEACTIVATE RETURN
- STM ADDR,DI CLEAR REENTRY ADDRESS
- * RETURN TO CALLER WITH STATUS FROM RESPONSE PACKET.
- LDM EEST,DI EXPECTED RESPONSE TYPE
- LMD RT
- ZJN ECI2 IF EXPECTED RESPONSE
- LMD RT
- LMD MS
- ZJN ECI2 IF EXPECTED STATUS
- LMK CMCS&CMSS
- ECI2 LJM 0,PA RETURN TO CALLER
- ECI3 LDD PA
- NJN ECI2 IF REQUEST IN PROGRESS
- LDM ERFL
- ZJN ECI4 IF DRIVER NOT IN ERROR PROCESSING
- LMD DI
- NJN ECI7 IF ERROR ON DIFFERENT DEVICE
- ECI4 LDM SRSA
- NJN ECI7 IF RESET IN PROGRESS
- LDM PNUN,DI
- SHN -6 SET CONTROLLER BLOCK INDEX
- STD T5
- LDML CSTB,T5 CHECK CONTROLLER STATUS
- SHN -16
- ZJN ECI7 IF AVAILABLE
- SHN -1
- ZJN ECI8 IF NOT SLAVE RESET FAILURE
- LDM ENAD,DI
- NJN ECI6 IF DRIVE ALREADY DISABLED
- LDC SRSH
- STM IOMA SET ERROR MESSAGE
- STM ENAD,DI DISABLE DRIVE
- ECI6 LDN 0
- ECI7 LJM ECIX RETURN
- * AT DRIVER INITIATION, PERFORM LOGICAL RESET ON CONTROLLING
- * DRIVE OF EACH CONTROL MODULE. NO ACTIVITY ON OTHER DRIVES
- * ON THE CONTROL MODULE WILL BE ALLOWED UNTIL THE RESET IS
- * COMPLETE.
- ECI8 LDM CSTB,T5 CHECK CONTROLLING DRIVE INDEX
- LMD DI
- NJN ECI7 IF NOT THIS DRIVE
- RJM SUI SET UNIT INTERLOCK
- NJN ECI7 IF DEVICE ASSIGNED ELSEWHERE
- LDC 1S12+CMP
- LJM SRS INITIATE LOGICAL RESET
- FCN SPACE 4,10
- ** FCN - ISSUE FUNCTION.
- *
- * ENTRY (A) = FUNCTION CODE.
- *
- * EXIT (A) .NE. 0.
- * (LF) = FUNCTION CODE.
- *
- * USES LF.
- *
- * ERROR TO *ERR*.
- FCN2 DCN CH+40 LEAVE CHANNEL INACTIVE
- FCN SUBR ENTRY/EXIT
- DCN CH+40
- STDL LF
- FAN CH ISSUE FUNCTION
- LDN 20D
- FCN1 IJM FCNX,CH IF FUNCTION ACCEPTED
- SBN 1
- NJN FCN1 IF NOT TIMED OUT
- LDM ESAD,DI
- NJN FCN2 IF ERROR IN PROGRESS
- LDN ETFN
- RJM ERR PROCESS ERROR
- GIS SPACE 4,10
- ** GIS - GET INTERRUPT STATUS.
- *
- * EXIT (A) = (GISA) = INTERRUPT STATUS.
- *
- * CALLS FCN, RSR.
- GIS2 IAN CH READ INTERRUPT STATUS
- GIS3 STML GISA
- LDC F0711 NEGATE MASTER OUT
- RJM FCN
- LDN 20D READ SLAVE RESPONSE
- RJM RSR
- LDML GISA RETURN WITH (A) = STATUS
- GIS SUBR ENTRY/EXIT
- LDN 20D
- ACN CH+40
- GIS1 FJM GIS2,CH IF SLAVE IN
- SBN 1
- NJN GIS1 IF NOT TIMED OUT
- * LDN 0
- UJP GIS3 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) = (T7) = SLAVE STATUS IF TRANSFER SUCCESSFUL.
- * (GSSA) = SLAVE STATUS AS READ FROM CONTROLLER.
- *
- * ERROR TO *ERR* IF STATUS ERROR.
- *
- * USES T7.
- *
- * CALLS FCN, RRP, RSR.
- GSS5 LDML GSSA ENDING STATUS
- STDL T7
- GSS SUBR ENTRY/EXIT
- SHN 10
- ADC F8039 INDICATE TRANSFER SUCCESSFUL
- RJM FCN
- LDC 2000 READ SLAVE RESPONSE
- RJM RSR
- 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
- 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
- UJN GSS4 PROCESS ERROR
- GSS2 LDN EUST
- UJN GSS4 PROCESS ERROR
- GSS3 LDN ECIE
- GSS4 RJM ERR PROCESS ERROR
- GSSA CON 0 ENDING STATUS
- IHD SPACE 4,15
- ** IHD - INTERRUPT HANDLER.
- *
- * ENTRY (DI) = *DSTB* 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.
- *
- * USES DI, MS, RT, T4.
- *
- * CALLS CCO, DCM, LDP, LSD, RRP, SCM, VIS.
- IHD4 LCN 0 INDICATE ASYNC INTERRUPT
- IHD5 RJM VIS VERIFY INTERRUPT SOURCE
- IHD SUBR ENTRY/EXIT
- RJM SCM SELECT CONTROL MODULE
- 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 IHD5 IF TRANSFER NOTIFICATION
- RJM DCM DESELECT CONTROL MODULE
- LDD RT CHECK RESPONSE TYPE
- LMN ASRT
- NJN IHD5 IF NOT ASYNC (UNSOLICITED) RESPONSE
- LDM RPBF+CUN
- LPC 377
- STD T4 SAVE DRIVE NUMBER
- LMC 0#FF
- NJN IHD1 IF NOT RESPONSE FROM CONTROLLER
- LDN 1 ISSUE BML MESSAGE IF OVER TEMPERATURE
- RJM CCO CHECK FOR CONTROLLER OVER TEMPERATURE
- LDM SRSA
- ZJN IHD3 IF RESET NOT IN PROGRESS
- STD DI SET DEVICE INDEX
- RJM LDP
- IHD0 LJM IHD4 PROCESS ASYNC INTERRUPT
- * ON SLAVE RESET, IF DRIVE INTERRUPT FOR THE CONTROLLING DRIVE
- * IS RECEIVED BEFORE THE CONTROLLER INTERRUPT, CLEAR *SRSC*
- * AND DISCARD DRIVE INTERRUPT.
- IHD1 LDD T4 CHECK FACILITY ADDRESS
- LMD DN
- ZJN IHD2 IF INTERRUPT FROM CURRENT DRIVE
- RJM LSD LOCATE SELECTED DRIVE
- ZJN IHD3 IF DRIVE UNKNOWN ON THIS CONTROLLER
- STD DI SET DEVICE INDEX
- RJM LDP
- IHD2 LDM SRSA CHECK RESET IN PROGRESS
- LMD DI
- NJN IHD0 IF NOT DRIVE CONTROLLING RESET
- STM SRSC INDICATE DRIVE INTERRUPT RECEIVED
- IHD3 LJM XMD2 RETURN TO MAIN LOOP
- RCR SPACE 4,10
- ** RCR - RESET CHANNEL REGISTERS.
- *
- * ENTRY (CR) = CHANNEL RESERVATION STATUS.
- *
- * EXIT (SF) = 0 (DEVICE NOT SELECTED).
- *
- * CALLS FCN.
- *
- * MACROS WAIT.
- RCR SUBR ENTRY/EXIT
- LDD CR
- ZJN RCRX IF CHANNEL NOT RESERVED
- LDN F0000
- RJM FCN MASTER CLEAR THE ADAPTOR
- WAIT 100
- * LDN 0 SET DEVICE NOT SELECTED
- STD SF
- ADK F0000-0 ENSURE NO SEQUENCE ERROR
- RJM FCN
- LDC F7E42 FIX CHANNEL TRANSFER RATE AT 10 MB
- RJM FCN
- UJN RCRX RETURN
- RIF SPACE 4,15
- ** RIF - RESET INTERFACE.
- *
- * ENTRY (RW) = 0 TO RESET SLAVE INTERFACE.
- * (RW) = 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 REGISTERS
- RJM SAP SELECT ADAPTOR 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.
- *
- * USES T1.
- *
- * CALLS BCS, FCN, GSS.
- RRP5 LDN 0 GET ENDING STATUS
- RJM GSS
- RRP SUBR ENTRY/EXIT
- LDN RIIN
- RJM BCS INITIATE BUS EXCHANGE (RESPONSE IN)
- LDC F0281
- RJM FCN READ STREAMING
- ACN CH
- LDN RPBFL TRANSFER RESPONSE PACKET
- IAM RPBF,CH
- STD T0 SAVE RESIDUE
- SBN RPBFL-4
- PJN RRP2 IF INVALID PACKET LENGTH
- LDM RPBF+PLN
- ADN 3 CONVERT OCTET COUNT TO BYTE COUNT
- SHN -1
- RAD T0
- RRP2 LDK RPBFL COMPARE LENGTH WITH DATA READ
- SBD T0
- STD T1 SET RESIDUAL BYTE COUNT
- LDC 50000D
- RRP3 IJM RRP5,CH IF SLAVE IN
- SBN 1
- NJN RRP3 IF NOT TIMED OUT
- LCN ECNR
- RJM ERR PROCESS ERROR
- RSR SPACE 4,10
- ** RSR - READ SLAVE RESPONSE.
- *
- * ENTRY (A) = TIMEOUT VALUE (MICROSECONDS).
- *
- * EXIT (A) = SLAVE RESPONSE.
- *
- * ERROR TO *ERR* IF SLAVE NOT RESPONDING.
- RSR4 IAN CH READ SLAVE RESPONSE
- RSR SUBR ENTRY/EXIT
- ACN CH
- RSR1 FJM RSR4,CH IF SLAVE IN DROPPED
- SBN 1
- NJN RSR1 IF NOT TIMED OUT
- LDN ECNR
- RJM ERR PROCESS ERROR
- RTR SPACE 4,10
- ** RTR - READ *T* REGISTER.
- RTR2 ACN CH ACTIVATE CHANNEL
- LDN 3
- IAM EDBF+TREG,CH INPUT REGISTER CONTENTS
- RTR SUBR ENTRY/EXIT
- FNC F0A00,CH
- RTR1 IJM RTR2,CH IF FUNCTION ACCEPTED
- SBN 77
- PJN RTR1 IF NOT TIMED OUT
- DCN CH+40
- UJN RTRX RETURN
- SAP SPACE 4,10
- ** SAP - SELECT ADAPTOR PORT.
- *
- * 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
- ADC F0062
- RJM FCN
- UJN SAPX RETURN
- SCM SPACE 4,10
- ** SCM - SELECT CONTROL MODULE.
- *
- * ENTRY (SF) = 1 IF DEVICE PREVIOUSLY SELECTED.
- * (CN) = CONTROLLER (CM3) NUMBER.
- *
- * EXIT (A) = (SF) = 1 = DEVICE SELECTED.
- *
- * ERROR TO *ERR* IF SELECT REJECT.
- *
- * CALLS DTM, FCN, RSR, SAP.
- SCM3 AOD SF SET DEVICE SELECTED
- SCM SUBR ENTRY/EXIT
- LDD SF
- NJN SCMX IF DEVICE PREVIOUSLY SELECTED
- STM GSSA
- RJM SAP SELECT ADAPTOR PORT
- LDD CN
- RJM DTM DETERMINE TRANSFER MODE
- LMN F0029
- RJM FCN SET SELECT OUT
- LDN 77
- RJM RSR READ SLAVE RESPONSE
- LPML TMSK,CN
- NJN SCM3 IF CORRECT CONTROLLER
- LDN ETSL
- RJM ERR PROCESS ERROR
- WCB SPACE 4,15
- ** WCB - WRITE COMMAND BLOCK (PACKET).
- *
- * ENTRY (A) = COMMAND BLOCK LENGTH.
- * (DI) = DEVICE STATE TABLE ADDRESS.
- * (TO) = TIMEOUT VALUE.
- *
- * ERROR TO *ERR*.
- *
- * USES T1.
- *
- * CALLS BCS, DCM, FCN, GSS, SCM, STO.
- WCB3 LDN 0 GET STATUS
- RJM GSS
- RJM DCM DESELECT CONTROL MODULE
- LDD TO
- RJM STO SET TIMEOUT
- WCB SUBR ENTRY/EXIT
- STM CPBF+PLN
- LDD DI SET COMMAND REFERENCE NUMBER
- STM CPBF+CRN
- RJM SCM SELECT CONTROL MODULE
- LDN CIOT
- RJM BCS INITIATE BUS EXCHANGE (COMMAND OUT)
- LDML CPBF+OPC
- STML LCMD,DI SAVE LAST COMMAND
- LDC F0381
- RJM FCN WRITE STREAMING
- 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
- LDC 50000D
- WCB2 IJM WCB3,CH IF SLAVE IN
- SBN 1
- NJN WCB2 IF NOT TIMED OUT
- LDN ECNR
- RJM ERR PROCESS ERROR
- WTR SPACE 4,10
- ** WTR - WRITE *T* PRIME REGISTER.
- *
- * ENTRY (CB) = *CBT* ORDINAL.
- * (RW) = READ / WRITE STATUS.
- *
- * CALLS FCN, STO, 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
- LDN 3 SET REQUEST TIMEOUT
- RJM STO
- UJP WTRX RETURN
- WTRA BSS 0 *T* REGISTER BUFFER
- CONL 40000 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 MISCELLANEOUS.
- SPACE 4,10
- * COMMON DECKS.
- *CALL COMPCHD
- *CALL COMPC2D
- RND$ EQU 0 DEFINE ROUNDING FOR *COMPDV5*
- *CALL COMPDV5
- M8K$ EQU 1 USE LONG INSTRUCTIONS
- *CALL COMPIMB
- QUAL SES
- QUAL$ EQU 0 DONT FURTHER QUALIFY *SES*
- T5 EQU EO
- *CALL COMPSES
- QUAL *
- SES EQU /SES/SES
- SPACE 4,10
- * BUFFERS.
- RPBF BSS 0 RESPONSE PACKET BUFFER
- CPBF EQU RPBF+1 COMMAND PACKET BUFFER
- RBUF EQU RPBF+RPBFL REGISTER BUFFER
- RBUFL EQU 2*4
- SBUF EQU RBUF+RBUFL SCRATCH BUFFER
- SBUFL EQU 3*5
- SPACE 4,10
- EDBF EQU 20000-400-RTEDL ERROR DATA BUFFER
- ERRNG 400-EDBFL+RTEDL CODE DEPENDS ON VALUE
- ERRPL SBUF+SBUFL-EDBF BUFFER OVERLAP
- 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
- UNIT EQU MSID+3 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
- TITLE INSTRUCTION MODIFICATION TABLES.
- TCHA SPACE 4,10
- ** TABLE OF CHANNEL INSTRUCTIONS ADDRESSES.
- TCHA CHTB
- CON 0 END OF TABLE
- 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
- TPUT SPACE 4,10
- ** TABLE OF INSTRUCTIONS REQUIRING FWA OF *PUT*.
- TPUT BSS 0
- TPUT HERE
- CON 0 TERMINATE TABLE
- TITLE PRESET.
- PRS SPACE 4,20
- ** PRS - PRESET DRIVER FOR PROCESSING.
- *
- * EXIT (UC) = 0.
- * TO *MRS*.
- * TO *XMD8* IF CHANNEL DOWN OR NO DEVICES FOR DRIVER.
- *
- * CALLS CCP, CCR2, IST, MCI, SCT, SPA, STA.
- PRS BSS 0 ENTRY
- RJM CCP CHECK CALLING PROGRAM
- * LDN 0
- STD UC SET NO UNITS RESERVED
- LDC EDBF
- ERRPL ENDD-EDBF CODE DEPENDS ON VALUE
- STDL T4
- RJM MCI MODIFY CHANNEL INSTRUCTIONS
- * LDN 0
- STD CR SET CHANNEL NOT RESERVED
- * PRESET BML ERROR MESSAGE BUFFER.
- PRS1 STI T4
- AODL T4 ADVANCE BUFFER ADDRESS
- SHN 0-15
- ZJN PRS1 IF NOT END OF BUFFER
- LDN MLDY
- STM MSGT
- LDC BMID ERROR MESSAGE ID
- STM MSID
- RJM SPA SET PP EXCHANGE PACKAGE ADDRESSES
- RJM SCT SET CHANNEL TABLE ADDRESSES
- LDK BIOL
- CRD CM READ BUFFERED I/O POINTERS
- LDD CM+1
- SHN 14
- LMD CM+2
- ADN CCTP READ *CCT* POINTER
- CRD T4
- ADN CBTP-CCTP READ *CBT* POINTER
- CRD WB
- SBN -PUTP+CBTP READ *PUT* POINTER
- CRD T2
- LDD T2+3 SET ADDRESS OF *PUT*
- LPN 77
- RAM ISTA
- LDD T2+4
- RAM ISTA+1
- AOD T2 SET NUMBER OF *PUT* ENTRIES
- STD RC
- LDC T5*20000+TPUT SET *PUT* ADDRESSES
- RJM STA
- LDD IR+2 ADJUST CHANNEL CONTROL TABLE POINTER
- SHN CCTLS-6
- RAD CM
- SHN -14
- RAD T7
- LDC T7*20000+TCCT SET *CCT* ADDRESSES
- RJM STA
- .WB3 EQU WB+3
- LDC .WB3*20000+TCBT SET *CBT* ADDRESSES
- RJM STA
- LDN EMBP FETCH *EMB* POINTER
- CRD CM
- .CM1 EQU CM+1
- LDC .CM1*20000+TEMB SET *EMB* ADDRESSES
- RJM STA
- LDK UEML
- CRD CM READ UEM POINTERS
- LDD CM
- PRSA SHN 11
- * SHN 11+EMSC
- SCN 77
- STM SUAA SET FWA OF UEM
- LDD CM
- PRSB SHN -3
- * SHN EMSC-3
- STM SUAB
- LDK MMFL FETCH MACHINE ID
- CRD CM
- LDD CM SET MAINFRAME ID FOR BML MESSAGES
- STM MFID
- RJM IST INITIALIZE DEVICE STATE TABLE
- ZJN PRS4 IF NO DEVICES FOR THIS DRIVER
- LJM CCR2 RESERVE CHANNEL (RETURN TO *PRS3*)
- PRS3 NJP MRS IF CHANNEL NOT DOWN
- PRS4 LJM XMD8 DROP CPP
- TITLE PRESET SUBROUTINES.
- CCP SPACE 4,10
- ** CCP - CHECK CALLING PROGRAM.
- *
- * EXIT (A) = 0.
- *
- * 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
- LDC MSG1
- RJM DFM ISSUE DAYFILE MESSAGE
- MONITOR ABTM
- LJM PPR EXIT TO PP RESIDENT
- IST SPACE 4,15
- ** IST - INITIALIZE DEVICE STATE TABLE.
- *
- * ENTRY (RC) = NUMBER OF *PUT* ENTRIES.
- *
- * EXIT (A) = 0 IF NO DEVICES FOR THIS DRIVER.
- * (DI) = DEVICE INDEX FOR FIRST DEVICE, IF PRESENT.
- * DEVICE PARAMETERS SET FOR FIRST DEVICE, IF PRESENT.
- *
- * USES DI, TA, T5, CM - CM+4, WB - WB+4.
- *
- * CALLS LDP.
- *
- * MACROS SFA.
- IST7 LDD DI DEFINE END OF DEVICES
- STM XMDA
- LMC DSTB SET EXIT CONDITION
- ZJN ISTX IF NO DEVICES FOR THIS DRIVER
- LDC DSTB SET DEVICE INDEX FOR FIRST DEVICE
- STD DI
- STD TA
- RJM LDP LOAD DEVICE PARAMETERS
- IST SUBR ENTRY/EXIT
- LDC OCMD-1
- STD DI
- IST1 LDN 0 CLEAR DEVICE STATE TABLE
- STI DI
- SOD DI
- LMC DSTB
- NJN IST1 IF MORE TO CLEAR
- * LDN 0
- STD T5 INITIALIZE *PUT* ORDINAL
- IST2 AOD T5
- LMD RC
- ZJN IST7 IF END OF PHYSICAL UNIT TABLE
- LDD T5
- SHN PUTLS READ *PUT* ENTRY
- ISTA ADC UNCT+** GET UNIT CONTROL WORD
- CRD WB
- SFA EST,WB+1 FETCH EST ENTRY
- ADK EQDE
- CRD CM
- LDN CM INITIALIZE CHANNEL BYTE ADDRESS
- STD CM
- IST3 AOD CM ADVANCE PATH DESCRIPTOR ADDRESS
- LMN CM+3
- ZJN IST2 IF TWO POSSIBLE CHANNELS CHECKED
- LDI CM
- ZJN IST3 IF NULL ACCESS
- LMD IR+4
- LPN 77
- NJN IST3 IF NOT THIS DRIVERS CHANNEL
- LDD T5 SET *PUT* ORDINAL IN STATE TABLE
- STI DI
- ERRNZ PUTO CODE DEPENDS ON VALUE
- LDC 1S14+1S13 SET INTERNAL SPECIAL REQUEST FLAGS
- STML IPPS,DI
- LDI CM
- LPC 200 SET PORT NUMBER
- SHN 11-7
- STM PNUN,DI
- LDD WB GET CONTROLLER AND UNIT NUMBERS
- LPC 777
- RAM PNUN,DI APPEND TO PORT NUMBER
- SHN -6
- STD WB+4 SET *CSTB* INDEX
- LDM CSTB,WB+4
- NJN IST5 IF CONTROLLER IDENTIFIED
- LDD DI
- LMC 1S14 RESET FLAG + FIRST *PUT* ORDINAL
- STML CSTB,WB+4
- IST5 LDN DSTBE
- RAD DI ADVANCE STATE TABLE ADDRESS
- LMC DSTBL
- NJP IST2 IF DEVICE TABLE NOT FULL
- LJM IST7 SET INITIAL STATE TABLE ADDRESS
- MCI SPACE 4,10
- ** MCI - MODIFY CHANNEL INSTRUCTIONS.
- *
- * ENTRY (IR+4) = CONCURRENT CHANNEL NUMBER.
- *
- * EXIT (A) = 0.
- *
- * USES T1, T2, T3.
- *
- * CALLS C2D.
- MCI1 LDD T3
- SBN CH
- RAIL T2 MODIFY CHANNEL INSTRUCTION
- AOD T1
- MCI2 LDML TCHA,T1 EXTRACT CHANNEL NUMBER
- STDL T2
- 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 SRSH+14
- STM SRSG+13
- LDN 0 INITIALIZE REMOTE TABLE INDEX
- STD T1
- UJN MCI2 ENTER LOOP
- MRS SPACE 4,10
- ** MRS - MASTER RESET SLAVES.
- *
- * EXIT TO *XMD4*.
- *
- * USES T1.
- *
- * CALLS FCN, RCR.
- *
- * MACROS WAIT.
- MRS BSS 0 ENTRY
- RJM RCR MASTER CLEAR CHANNEL
- LDN 1
- STD T1
- SHN 13-0 POSITION PORT NUMBER
- MRS2 LMC F0062
- RJM FCN SELECT ADAPTOR PORT
- LDC F9213
- RJM FCN ISSUE MASTER RESET
- WAIT 10
- LDDL LF LAST FUNCTION
- SCN 2
- RJM FCN CLEAR SYNC OUT
- SOD T1
- ZJN MRS2 IF ANOTHER PORT TO PROCESS
- LJM XMD4 ENTER MAIN 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 RCSA+3
- RAM BMLM+2
- RJM C2D CONVERT FOR ERROR MESSAGE
- STM LDAA+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.
- *
- * USES T1 - T5, CM - CM+4.
- *
- * 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 (A) = CPP NUMBER
- SBN 24
- SHN 6
- STM BMLM+2 INSERT CPP NUMBER IN BML MESSAGE
- SHN -6
- ADN 24-2
- STD T1 CPP NUMBER - 2
- SHN 4
- ADD T1 (CPP 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, T2, 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 POINTER ADDRESS
- STD T1
- LDDL T3 SET INSTRUCTION TABLE ADDRESS
- LPC 17777
- STDL T3
- UJN STA2 ENTER LOOP
- ENDD BSS 0 END OF DRIVER
- OVERFLOW OCMD,20000
- END
cdc/nos2.source/opl871/1xd.txt ยท Last modified: 2023/08/05 17:24 by Site Administrator