cdc:nos2.source:opl871:1hp
Table of Contents
1HP
Table Of Contents
- [00009] 885-42 DRIVER.
- [00108] CONSTANTS, DEFINITIONS, AND MACROS.
- [00174] TBLM - CREATE TABLE ENTRY MACRO.
- [00197] CBTE - CONTROL BUFFER TABLE ENTRY.
- [00212] CCBA - COMPUTE *CBT* ENTRY ADDRESS.
- [00238] PUTE - PHYSICAL UNIT TABLE ENTRY.
- [00253] CPTA - COMPUTE *PUT* ENTRY ADDRESS.
- [00279] EMBE - ERROR MESSAGE TABLE ENTRY.
- [00294] MONITOR - ISSUE MONITOR FUNCTION.
- [00319] MAIN PROGRAM.
- [00321] FHP - 885-42 DRIVER.
- [00327] MST - MAIN PROGRAM.
- [00343] TPOR - TABLE OF *PUT* ORDINALS.
- [00358] SUBROUTINES.
- [00360] CCP - CHECK FOR CHANNEL PARITY ERROR.
- [00384] CCR - CHECK FOR CHANNEL REQUESTED OR DOWN.
- [00422] CCS - CHECK CONSECUTIVE SECTORS.
- [00483] CDS - CRACK DETAILED STATUS.
- [00598] CRL - CHECK FOR ERROR RETRY LIMIT REACHED.
- [00657] CRQ - CHECK REQUEST QUEUE.
- [00718] DCH - RELEASE CHANNEL.
- [00743] ERR - PROCESS ERROR.
- [00861] TEPF - TABLE OF ERROR PROCESSING FLAGS.
- [00895] TEPO - TABLE OF IMMEDIATE RETURN ERROR PROCESSING OPTIONS.
- [00903] TMNE - TABLE OF ERROR CODE MNEMONICS.
- [00911] TREC - TABLE OF RETRY COUNTS.
- [00919] TSYM - TABLE OF BML SYMPTOM CODES.
- [00927] FNC - FUNCTION CHANNEL.
- [00967] GDS - GET DETAILED STATUS.
- [01001] GGS - GET GENERAL STATUS.
- [01048] IBM - ISSUE BML MESSAGE.
- [01197] IIC - ISSUE I/O COMPLETION REQUEST.
- [01227] IMF - ISSUE MONITOR FUNCTION.
- [01247] ISF - ISSUE SEEK OPERATION.
- [01323] OVI - OBTAIN AND VERIFY *PUT* INTERLOCK.
- [01397] PCH - PROCESS CHANNEL REQUEST.
- [01438] PDT - PROCESS DATA TRANSFER.
- [01495] PFR - PREPARE FOR RETRY ATTEMPT.
- [01520] PRE - PRESET ERROR PROCESSOR.
- [01559] RCH - REQUEST CHANNEL.
- [01584] RHR - RELEASE HARDWARE RESERVES.
- [01609] RIO - PERFORM READ OPERATION.
- [01681] RLC - RELOAD CONTROLWARE.
- [01753] RPI - RELEASE *PUT* INTERLOCK.
- [01792] RTM - REQUEST TRACK FLAW IF MEDIA ERROR.
- [01867] SCD - SET DRIVER DROPPED FLAG.
- [01896] SSF - SET SUSPECT FLAG.
- [01936] SUQ - SCAN UNIT QUEUE.
- [02048] TEP - TERMINATE ERROR PROCESSING.
- [02163] WIO - PERFORM WRITE OPERATION.
- [02254] PRS - PRESET *1HP*.
- [02542] STA - SET TABLE ADDRESSES.
Source Code
- 1HP.txt
- IDENT 1HP,FHP
- 1HP TITLE 1HP - 885-42 DRIVER.
- PERIPH
- BASE MIXED
- SST
- *COMMENT 1HP - 885-42 DRIVER.
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- 1HP SPACE 4,10
- *** 1HP - 885-42 DRIVER.
- *
- * P. T. BARNETT. 83/09/04.
- * R. M. DANISCH. 85/12/23.
- 1HP SPACE 4,10
- *** 1HP PROVIDES THE CAPABILITY TO ACCESS THE 885-42 DRIVE
- * THROUGH THE 7155-401 (FA211-C) CONTROLLER. 1HP IS A
- * DEDICATED PROGRAM THAT IS INITIATED AT DEADSTART AND REMAINS
- * ACTIVE AS LONG AS ITS CHANNEL IS UP AND FUNCTIONAL. 1HP USES
- * THE *BIOM* MONITOR FUNCTION TO COMMUNICATE WITH *CPUMTR*.
- 1HP SPACE 4,10
- *** CALL FORMAT -
- *
- *T,IR 18/*1HP*, 1/0, 5/CP, 6/CCTO, 18/0, 12/CH
- *
- * CP CONTROL POINT NUMBER (MUST BE SYSTEM CP).
- *
- * CCTO CCT ORDINAL.
- * CH CHANNEL NUMBER.
- 1HP SPACE 4,35
- *** ORGANIZATION OF 885-42.
- *
- * UP TO THREE 885-42 UNITS CAN BE COMBINED TO FORM
- * A LOGICAL DEVICE.
- *
- * EQUIPMENT TYPE = *DB*.
- *
- * SECTORS/TRACK = 640 LOGICAL / 160 PHYSICAL.
- * (4 LOGICAL SECTORS FORM 1 PHYSICAL SECTOR)
- *
- * CM WORDS/PHYSICAL SECTOR = 400B.
- *
- * LOGICAL SECTORS/PHYSICAL SECTOR = 4.
- *
- * LOGICAL SECTORS/LOGICAL TRACK = 1200B (640D).
- *
- * LOGICAL SECTORS/BUFFER = 40B.
- *
- * TRACKS/UNIT = 3222B (1682D).
- *
- * WORDS/UNIT = 68,894,720.
- *
- * UNITS/DEVICE = 1-3.
- *
- * WORDS/DEVICE = 68,894,720 - 206,684,160.
- *
- * MAXIMUM DATA RATE = 491.52 K WORDS/SECOND.
- 1HP SPACE 4,20
- ** MESSAGES.
- *
- * * EQXXX CC ERROR RETRY UNDERWAY.*
- * ISSUED TO THE SYSTEM CONTROL POINT FOR PRESENTATION ON THE
- * B-DISPLAY TO ALERT THE OPERATOR THAT ERROR RECOVERY IS BEING
- * PERFORMED ON THE DEVICE WHOSE EST ORDINAL IS XXX. THE TWO
- * CHARACTER MNEMONIC CC DESCRIBES THE ERROR TYPE.
- *
- * * 1HP - UNAUTHORIZED CALL.*
- * ISSUED TO THE SYSTEM DAYFILE IF 1HP WAS NOT CALLED FROM
- * THE SYSTEM.
- 1HP SPACE 4,65
- ** IMPLEMENTATION NOTES.
- *
- * THE 7155-401 CONTROLLER IS CONNECTED TO ESM THROUGH A LOW
- * SPEED PORT, AND THE DATA TRANSFER IS DONE THROUGH THAT
- * CONNECTION. THEREFORE, UPON ISSUING A READ OR WRITE
- * FUNCTION, A 2-BYTE ESM ADDRESS IS SENT TO THE CONTROLLER
- * THROUGH THE CHANNEL, AND THEN THE CHANNEL IS DISCONNECTED.
- * *1HP* IS THEN FREE TO DO AS IT PLEASES WHILE THE CONTROLLER
- * READS/WRITES THE DATA FROM/TO ESM. SOMETIME BEFORE ISSUING
- * THE NEXT READ/WRITE FUNCTION *1HP* WILL ISSUE A GENERAL
- * STATUS FUNCTION. THE CONTROLLER WILL PROVIDE STATUS ONLY
- * AFTER COMPLETION OF THE DATA TRANSFER.
- *
- * IN ORDER TO MAXIMIZE THE TRANSFER RATE, *1HP* WILL SCAN THE
- * UNIT QUEUE WHILE WAITING FOR I/O COMPLETION TO SEE IF THE
- * CURRENT TRANSFER CAN BE CONTINUED. IF THE 10B SECTORS
- * IMMEDIATELY FOLLOWING THE CURRENT 10B SECTORS ARE TO
- * BE USED IN THE SAME TRANSFER DIRECTION, *1HP* WILL CONTINUE
- * THE OPERATION, WITHOUT LOSING A DISK REVOLUTION.
- * DURING THE SUCCEEDING TRANSFER, *1HP* WILL ATTEMPT TO NOTIFY
- * *CPUMTR* OF COMPLETION ON THE PREVIOUS BUFFER.
- 1HP SPACE 4,10
- * COMMON DECKS.
- *CALL COMPMAC
- RICHI$ EQU 1 SELECT DEFERRED INSTRUCTION REDEFINITION
- *CALL COMPCHI
- *CALL COMSCPS
- *CALL COMSDFS
- LIST X
- *CALL COMSHIO
- LIST *
- *CALL COMSLSD
- *CALL COMSMSC
- LIST X
- *CALL COMSMSP
- LIST *
- *CALL COMSPIM
- *CALL COMS1DS
- TITLE CONSTANTS, DEFINITIONS, AND MACROS.
- 1HP SPACE 4,10
- ** DIRECT CELL ASSIGNMENTS.
- RS EQU 16 ERROR RECOVERY STATUS
- ER EQU 17 ERROR RECOVERY IN PROGRESS
- CC EQU 20 COMPLETION REQUEST COUNT
- S1 EQU 21 SCRATCH
- EC EQU 22 ERROR CODE
- RW EQU 23 READ/WRITE FLAG
- IL EQU 24 *PUT* INTERLOCK FLAG
- SR EQU 25 - 31 SCRATCH
- WB EQU SR - SR+4 FOR *COMPIMB* COMPATIBILITY
- PI EQU 32 *PADN* WORD INDEX
- CN EQU 33 - 37 SCRATCH (5 CELLS)
- CD EQU 40 - 45 CURRENT DATA (6 CELLS)
- CS EQU 46 CHANNEL STATUS
- NB EQU 47 NEXT BUFFER ORDINAL
- PB EQU 50 PREVIOUS BUFFER ORDINAL
- CB EQU 51 CURRENT BUFFER ORDINAL
- TB EQU 52 TOTAL CBT COUNT
- GS EQU 53 GENERAL STATUS
- * EQU 54 CHANNEL NUMBER (FROM INPUT REGISTER)
- TI EQU 57 *TPOR* INDEX
- CA EQU 60 - 64 CURRENT PHYSICAL ADDRESS (5 CELLS)
- RC EQU 65 RETRY COUNT
- PO EQU 66 *PUT* ORDINAL
- S2 EQU 67 SCRATCH
- 1HP SPACE 4,10
- ** DRIVER FUNCTION CODES.
- FCSK EQU 1 SEEK 1 TO 1 INTERLACE
- FCRD EQU 4 READ
- FCWR EQU 5 WRITE
- FCOC EQU 10 OPERATION COMPLETE
- FCCO EQU 14 CONTINUE
- FCDS EQU 23 DETAILED STATUS
- FCES EQU 66 EXTENDED GENERAL STATUS
- FCAL EQU 414 AUTOLOAD
- 1HP SPACE 4,10
- ** STATUS AND CONTROL REGISTER FUNCTION CODE(S).
- FCTC EQU 3000 TEST AND CLEAR *SCR* BIT
- 1HP SPACE 4,10
- ** ASSEMBLY CONSTANTS.
- BFRL EQU 10 *EMB* FLUSH RETRY COUNT
- CH EQU 0 MASS STORAGE CHANNEL
- EMAI EQU 400 EXTENDED MEMORY ADDRESS INCREMENT
- FCESL EQU 5 LENGTH OF EXTENDED GENERAL STATUS
- FCRDL EQU 2 NUMBER OF PARAMETER BYTES FOR READ
- FCSKL EQU 4 NUMBER OF PARAMETER BYTES FOR SEEK
- FCWRL EQU 6 NUMBER OF PARAMETER BYTES FOR WRITE
- MAXU EQU 16D MAXIMUM NUMBER OF UNITS PER CHANNEL
- PCRL EQU 10 PP CALL RETRY LIMIT
- MFRL EQU 10 MONITOR FUNCTION RETRY LIMIT
- PPSLB EQU 10 PHYSICAL SECTORS PER BUFFER
- PSPT EQU 40 PHYSICAL SECTORS PER PHYSICAL TRACK
- SOSF EQU 100 SEEK OPTION SELECT FLAGS
- TPORE EQU 1 LENGTH OF *TPOR* ENTRY
- SPACE 4,10
- ** MACROS.
- 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
- CON 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
- CCBA SPACE 4,15
- ** CCBA - COMPUTE *CBT* ENTRY ADDRESS.
- *
- * THIS MACRO SETS (A) TO THE REQUESTED *CBT* ENTRY ADDRESS.
- *
- * CCBA W,A
- *
- * W - OPTIONAL WORD OFFSET TO BE ADDED TO ADDRESS.
- * A - IF NON-BLANK, BUFFER ORDINAL IS IN ACCUMULATOR.
- *
- * ENTRY (A) = BUFFER ORDINAL IF *A* PARAMETER IS NON-BLANK.
- * (CB) = CURRENT BUFFER ORDINAL.
- *
- * EXIT (A) = *CBT* ENTRY ADDRESS + WORD OFFSET.
- PURGMAC CCBA
- CCBA MACRO W,A
- MACREF CCBA
- IFC EQ,$A$$,1
- LDD CB
- SHN CBTLS
- CBTE *
- ADC W
- CCBA ENDM
- 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
- CPTA SPACE 4,10
- ** CPTA - COMPUTE *PUT* ENTRY ADDRESS.
- *
- * THIS MACRO SETS (A) TO THE REQUESTED *PUT* ENTRY ADDRESS.
- *
- * CPTA W,A
- *
- * W - OPTIONAL WORD OFFSET TO BE ADDED TO ADDRESS.
- * A - IF NON-BLANK, *PUT* ORDINAL IS IN ACCUMULATOR.
- *
- * ENTRY (A) = *PUT* ORDINAL IF *A* PARAMETER IS NON-BLANK.
- * (PO) = *PUT* ORDINAL.
- *
- * EXIT (A) = *PUT* ENTRY ADDRESS + WORD OFFSET.
- PURGMAC CPTA
- CPTA MACRO W,A
- MACREF CPTA
- IFC EQ,$A$$,1
- LDD PO
- SHN PUTLS
- PUTE *
- ADC W
- CPTA ENDM
- 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
- MONITOR SPACE 4,15
- ** MONITOR - ISSUE MONITOR FUNCTION.
- *
- * THIS MACRO PROVIDES FUNCTIONALITY IDENTICAL TO THAT OF THE
- * *MONITOR* MACRO DEFINED IN *COMPMAC*, WHILE ENSURING ANY
- * PENDING *BIOM* MONITOR FUNCTION IS COMPLETED BEFORE THE NEXT
- * MONITOR FUNCTION IS ISSUED.
- *
- * MONITOR F
- *
- * F - MONITOR FUNCTION CODE.
- *
- * EXIT (A) = 0.
- * (CM - CM+4) = COMPLETED PP OUTPUT REGISTER IMAGE.
- *
- * CALLS IMF.
- PURGMAC MONITOR
- MONITOR MACRO F
- MACREF MONITOR
- LDK F
- RJM IMF
- MONITOR ENDM
- 1HP SPACE 4
- TITLE MAIN PROGRAM.
- FHP SPACE 4,10
- ** FHP - 885-42 DRIVER.
- ORG PPFW
- FHP RJM PRS PRESET
- MST SPACE 4,10
- ** MST - MAIN PROGRAM.
- MST RJM CCR CHECK FOR CHANNEL REQUESTED/DOWN
- MJN MST1 IF CHANNEL GLOBALLY DOWN
- RJM SUQ SCAN UNIT QUEUE
- ZJN MST IF NO ELIGIBLE ENTRY FOUND
- RJM ISF ISSUE SEEK FUNCTION
- NJN MST IF UNIT NOT ON CYLINDER
- RJM PDT PERFORM DATA TRANSFER
- UJN MST LOOP
- MST1 RJM DCH RELEASE CHANNEL
- MONITOR DPPM DROP PP
- LJM PPR ENTER IDLE LOOP
- TPOR SPACE 4,10
- ** TPOR - TABLE OF *PUT* ORDINALS.
- *
- * THIS TABLE CONTAINS THE ORDINALS OF THE *PUT* ENTRIES FOR ALL
- * UNITS ACCESSED BY THIS DRIVER-S CHANNEL.
- *
- * ENTRY = 1 WORD.
- *
- *T 5/ 0, 1/ I, 6/ *PUT* ORDINAL
- * I EST CHANNEL BYTE INDEX.
- *
- * TABLE IS TERMINATED BY A ZERO BYTE.
- TPOR BSSZ TPORE*MAXU
- CON 0 TERMINATE *TPOR* TABLE
- TITLE SUBROUTINES.
- CCP SPACE 4,10
- ** CCP - CHECK FOR CHANNEL PARITY ERROR.
- *
- * EXIT (A) .EQ. 0 IF NO CHANNEL PARITY ERROR.
- * .LT. 0 = COMPLEMENT OF *CHPE* ERROR CODE IF
- * CHANNEL PARITY ERROR.
- CCP1 LDN 0
- CCP SUBR ENTRY/EXIT
- LDC FCTC+30 TEST AND CLEAR SCR BIT
- CCPA EQU *-1 (BIT NUMBER)
- FJM CCP1,CHSC IF MAINTENANCE CHANNEL IN USE
- CCPB EQU *-2
- OAN CHSC ISSUE REQUEST
- CCPC EQU *-1
- IAN CHSC INPUT RESULT
- CCPD EQU *-1
- ZJN CCPX IF NO CHANNEL PARITY ERROR
- LCN CHPE
- UJN CCPX RETURN
- 1HP SPACE 4
- RICHI REDEFINE CHANNEL INSTRUCTIONS
- CCR SPACE 4,20
- ** CCR - CHECK FOR CHANNEL REQUESTED OR DOWN.
- *
- * THIS ROUTINE CHECKS TO SEE IF THE CHANNEL TO WHICH THIS PP IS
- * DEDICATED IS BEING REQUESTED BY ANOTHER PP OR IS GLOBALLY
- * DOWN. IF THE CHANNEL IS REQUESTED BY ANOTHER PP, IT WILL BE
- * RELEASED AND WILL BE REQUESTED AGAIN FOLLOWING A ONE SECOND
- * DELAY. IF THE CHANNEL IS GLOBALLY DOWN, THE DRIVER DROP FLAG
- * WILL BE SET IN THE CONTROLWARE TABLE AND THE CHANNEL WILL BE
- * RELEASED.
- *
- * EXIT (A) .LT. 0 IF CHANNEL IS GLOBALLY DOWN.
- *
- * USES CM - CM+4.
- *
- * CALLS DCH, RCH, SCD.
- *
- * MACROS DELAY.
- CCR2 RJM SCD SET DRIVER DROP FLAG
- LCN 0 SET DROPOUT REPLY
- CCR SUBR ENTRY/EXIT
- LDC ** READ CHANNEL TABLE
- CCRA EQU *-1 (CM ADDRESS OF ENTRY)
- CRD CM
- LDD CM+** CHECK REQUESTED FLAG
- CCRB EQU *-1 (BYTE ADDRESS OF ENTRY)
- SHN 21-5
- MJN CCR2 IF CHANNEL IS GLOBALLY DOWN
- SHN 22+5-13
- PJN CCRX IF CHANNEL NOT REQUESTED
- RJM DCH RELEASE CHANNEL
- CCR1 DELAY
- RJM RCH REQUEST CHANNEL
- ZJN CCR1 IF CHANNEL NOT ASSIGNED
- UJN CCRX RETURN
- CCS SPACE 4,15
- ** CCS - CHECK CONSECUTIVE SECTORS.
- *
- * THIS ROUTINE CHECKS THE NEXT BUFFER IN THE I/O QUEUE TO
- * DETERMINE IF IT IS CONSECUTIVE WITH THE REQUEST CURRENTLY
- * BEING PROCESSED.
- *
- * ENTRY (CB) = CURRENT BUFFER ORDINAL.
- * (NB) = NEXT BUFFER ORDINAL IF CONSECUTIVE REQUEST
- * ALREADY FOUND.
- * (TB) = TOTAL BUFFER COUNT.
- *
- * EXIT (NB) = NEXT BUFFER ORDINAL.
- * = 0 IF CONSECUTIVE TRANSFER NOT POSSIBLE.
- * (TB) = TOTAL BUFFER COUNT.
- *
- * USES NB, TB, CM - CM+4, CN - CN+4, T0 - T4.
- *
- * MACROS CCBA.
- CCS3 LDN 0 INDICATE NO CONSECUTIVE REQUEST
- STD NB
- CCS SUBR ENTRY/EXIT
- LDD NB
- NJN CCSX IF NEXT REQUEST ALREADY FOUND
- CCBA PAD4 READ CURRENT *CBT* ENTRY
- CRD CM
- ADK IOLK-PAD4
- CRD CN
- LDD CN+2 NEXT BUFFER ORDINAL
- ZJN CCSX IF NO BUFFER
- STD NB STORE BUFFER ORDINAL OF NEXT REQUEST
- CCBA PAD1,A GET DISK ADDRESS FOR THIS BUFFER
- CRD CN
- ADK IOLK-PAD1 GET WRITE FLAG
- CRD T0
- LDD T0
- SHN 0-11
- LPN 1
- LMD RW
- NJN CCS3 IF TRANSFER NOT IN SAME DIRECTION
- LDD CM+1
- LMD CN+1
- CCS1 NJN CCS3 IF NO CYLINDER MATCH
- LDD CM+2
- ADN 2
- LMD CN+2
- ZJN CCS2 IF CONSECTUTIVE SECTOR ON SAME TRACK
- LDD CM+2
- ADD HN
- SCN 77
- LMD CN+2
- NJN CCS1 IF NOT FIRST SECTOR ON CONSECUTIVE TRACK
- LDD CM+2
- LPN 77
- SBN PSPT-2
- NJN CCS1 IF NOT CONSECUTIVE REQUEST
- CCS2 AOD TB INCREMENT TOTAL BUFFER COUNT
- LJM CCSX RETURN
- CDS SPACE 4,25
- ** CDS - CRACK DETAILED STATUS.
- *
- * THIS ROUTINE DETERMINES WHAT ERROR CODE TO SET BY EXAMINING
- * DETAILED STATUS. IT WILL ALSO ATTEMPT TO RECOVER BY ISSUING
- * A *CONTINUE* FUNCTION IF GENERAL STATUS INDICATES THE ERROR
- * IS RECOVERABLE BY THE CONTROLLER.
- *
- * ENTRY (EC) = ERROR CODE.
- * (GS) = GENERAL STATUS.
- * (RW) = READ/WRITE FLAG.
- * (T7) = SECTOR COUNT.
- *
- * EXIT (A) .EQ. 0 IF ERROR WAS RECOVERED BY CONTROLLER.
- * .LT. 0 IF A FUNCTION TIMEOUT, CHANNEL PARITY
- * ERROR, OR DATA TRANSFER ERROR OCCURRED
- * WHILE TRYING TO OBTAIN STATUS.
- * .GT. 0 OTHERWISE.
- * (EC) = ERROR CODE.
- *
- * USES CB, EC, PB, RS.
- *
- * CALLS GDS, GGS, PCH.
- CDS SUBR ENTRY/EXIT
- CDS1 RJM GDS GET DETAILED STATUS
- MJN CDSX IF ERROR
- LDD GS
- SHN 21-13
- PJP CDS6 IF NOT ABNORMAL TERMINATION
- SHN 13-10
- PJN CDS3 IF ERROR NOT RECOVERABLE BY CONTROLLER
- * ATTEMPT CONTROLLER RECOVERY.
- LDK FCCO ISSUE *CONTINUE* FUNCTION
- RJM PCH
- MJN CDSX IF TIMEOUT/DATA TRANSFER ERROR
- RJM GGS GET GENERAL STATUS
- MJN CDSX IF STATUS NOT OBTAINED
- NJN CDS1 IF NOT YET RECOVERED
- LCN 1 INDICATE CONTROLLER RECOVERY
- STD RS
- LDN 0
- UJN CDSX RETURN
- * CHECK FOR *NOT READY* CONDITION.
- CDS3 SHN 10-4
- PJN CDS4 IF NOT *NOT READY*
- LDM DST+7
- LPN 1
- NJN CDS4 IF NOT *NOT READY*
- LDM DST+10
- SHN 0-7
- LPN 1
- ZJP CDS8 IF DRIVE *NOT READY*
- * DURING SPINUP, THE STATUS OF THE DRIVE CHANGES SO AS TO
- * APPEAR NOT TO BE A *NOT READY* CONDITION. TO AVOID
- * MISHANDLING THIS SITUATION THE ERROR PROCESSOR CHECKS FOR
- * PRIOR DETECTION OF *NOT READY* AND ASSUMES NO CHANGE IN
- * THE SITUATION UNTIL GENERAL STATUS BECOMES ZERO.
- CDS4 LDD EC
- LMK NRDE
- ZJP CDS8 IF *NOT READY* ALREADY DETECTED
- * CHECK FOR *BUFFER TO DISK* ERROR.
- LDD RW
- ZJN CDS5 IF READ OPERATION
- LDM DST+14
- SHN 21-13
- PJN CDS5 IF NOT ERROR ON PREVIOUS SECTOR
- LDD T7
- LMK PPSLB-1
- NJN CDS5 IF NOT AT BUFFER BOUNDARY
- LDD PB BACKUP TO PREVIOUS BUFFER
- STD CB
- LDN 0
- STD PB
- UJN CDS6 SET ERROR CODE
- * CHECK FOR MEDIA ERROR.
- CDS5 LDM DST+17
- LPN 40
- NJN CDS6 IF PROCESSOR INSTRUCTION TIMEOUT
- LDM DST
- LPN 17
- LMN 10
- ZJN CDS7 IF MEDIA ERROR
- LDM DST+1
- SHN 21-13
- MJN CDS7 IF MEDIA ERROR
- SHN 13-11
- MJN CDS7 IF MEDIA ERROR
- LDM DST+20
- SHN 21-10
- MJN CDS7 IF MEDIA ERROR
- LDM DST+17
- SHN 21-6
- MJN CDS9 IF CHANNEL PARITY ERROR ON OUTPUT
- CDS6 LDN DSTE
- UJN CDS10 SET ERROR CODE
- CDS7 LDK PARE&NRDE
- CDS8 LMK NRDE
- UJN CDS10 SET ERROR CODE
- CDS9 LDN CHPE SET ERROR CODE
- CDS10 STD EC
- LJM CDSX RETURN
- CRL SPACE 4,10
- ** CRL - CHECK FOR ERROR RETRY LIMIT REACHED.
- *
- * ENTRY (EC) = ERROR CODE.
- * (ER) = *RECOVERY IN PROGRESS* FLAG.
- * (RC) = RETRY COUNT.
- * (T5) = EST ORDINAL.
- *
- * EXIT (A) .GE. 0 IF RETRY LIMIT REACHED.
- * .LT. 0 IF NOT AT RETRY LIMIT.
- * (RC) INCREMENTED.
- * MESSAGE ISSUED TO *MS2W* OF SYSTEM CONTROL POINT FOR
- * B-DISPLAY PRESENTATION IF HALF WAY TO RETRY LIMIT.
- *
- * USES RC.
- CRL SUBR ENTRY/EXIT
- LDD ER
- LMC SHNI+1
- STM CRLA
- AOD RC INCREMENT RETRY COUNT
- LDM TREC,EC
- SHN -1
- SBD RC
- PJN CRL1 IF TOO EARLY TO NOTIFY OPERATOR
- LDD T5 STORE EST ORDINAL IN MESSAGE
- SHN -3
- RJM C2D
- STM CRLB+1
- LDD T5
- LPN 7
- SHN 6
- ADC 2R0
- STM CRLB+2
- LDM TMNE,EC STORE ERROR MNEMONIC IN MESSAGE
- STM CRLB+3
- LDD CP
- ADK MS2W
- CWM CRLB,TR
- CRL1 LDD RC
- * IF *RECOVERY IN PROGRESS* IS NOT SET, THE RETRY COUNT IS
- * SHIFTED SO THAT THE LIMIT CHECK IS MADE AGAINST N/2 (WHERE N
- * IS THE RETRY LIMIT FOR THE ERROR TYPE IN CELL *EC*). THIS
- * CAUSES HALF OF THE RETRY ATTEMPTS TO BE PERFORMED ON EACH
- * CHANNEL, IF AN ALTERNATE ACCESS IS AVAILABLE. IF NO
- * ALTERNATE ACCESS IS AVAILABLE, ALL RETRIES WILL BE PERFORMED
- * ON THIS CHANNEL.
- SHN 0
- * SHN 1 (RECOVERY NOT IN PROGRESS)
- CRLA EQU *-1
- SBM TREC,EC
- SBN 1
- UJP CRLX RETURN
- CRLB DATA C*EQ000 XX ERROR RETRY UNDERWAY.*
- CRQ SPACE 4,20
- ** CRQ - CHECK REQUEST QUEUE.
- *
- * THIS ROUTINE ATTEMPTS TO CALL *CPUMTR* TO COMPLETE REQUESTS
- * IN THE UNIT QUEUE THAT HAVE ALREADY BEEN PROCESSED.
- *
- * ENTRY (CC) = COMPLETION REQUEST COUNT.
- * (PO) = *PUT* ORDINAL.
- *
- * EXIT (A) .EQ. 0 IF NO REQUESTS PRESENT.
- * .NE. 0 IF *CPUMTR* IS STILL BUSY WITH PREVIOUS
- * FUNCTION OR AN EXCHANGE WAS JUST ISSUED
- * FOR THE CURRENT FUNCTION.
- *
- * USES CC, CN - CN+4, T0 - T4.
- CRQ SUBR ENTRY/EXIT
- LDC ** READ XP
- CRQA EQU *-1 FWA OF XP
- CRD T0
- LDD OA READ OUTPUT REGISTER
- CRD CN
- LDD T0+4 (B0)
- NJN CRQ1 IF MISSED EXCHANGE
- STD CN+3
- LDD CN
- SHN 21-13
- MJN CRQ1 IF REISSUE REQUIRED
- NJN CRQX IF FUNCTION NOW BEING PROCESSED
- LDD CC
- ZJN CRQX IF NO PENDING COMPLETION REQUESTS
- LDC **
- CRQE EQU *-1
- CRD T0
- LDD T0
- ADD T0+1
- NJN CRQX IF FUNCTION IN PROGRESS
- LDN DCBS SET *BIOM* SUBFUNCTION
- STD CN+1
- LDD PO
- STD CN+2
- CRQ1 LDD CC
- RAD CN+3
- LDN 0
- STD CC
- LDK BIOM
- STD CN
- LDD OA
- CWD CN
- LDC **
- CRQB EQU *-1 ADDRESS OF EXCHANGE PACKAGE
- CWM CRQD,ON WRITE FIRST WORD
- SBN 1 SET EXCHANGE ADDRESS
- MXN 0 EXCHANGE CPU
- CRQC EQU *-1 CPU NUMBER
- UJP CRQX RETURN
- CRQD VFD 24/0 (P)
- VFD 18/0 (A0)
- VFD 18/0 (B0)
- DCH SPACE 4,15
- ** DCH - RELEASE CHANNEL.
- *
- * THIS ROUTINE RELEASES THE CHANNEL IF IT IS CURRENTLY
- * RESERVED.
- *
- * ENTRY (IR+4) = CHANNEL NUMBER.
- * (CS) = CHANNEL RESERVATION STATUS.
- *
- * EXIT (A) = (CS) = 0.
- *
- * USES CM+1, CS.
- *
- * MACROS MONITOR.
- DCH SUBR ENTRY/EXIT
- LDD CS
- LPN 1
- ZJN DCHX IF CHANNEL NOT RESERVED
- LDD IR+4 RELEASE CHANNEL
- STD CM+1
- MONITOR DCHM
- SOD CS
- UJN DCHX RETURN
- ERR SPACE 4,30
- ** ERR - PROCESS ERROR.
- *
- * THIS ROUTINE IS CALLED TO PERFORM ERROR PROCESSING.
- *
- * ENTRY (EC) = 0 IF THIS IS THE FIRST RETRY OF A RECOVERY
- * SEQUENCE AND THE CALLER DID NOT SET THE ERROR
- * CODE.
- * = ERROR CODE IF NOT THE FIRST RETRY OF A RECOVERY
- * SEQUENCE AND NOT A CALLER SPECIFIED ERROR CODE.
- * = COMPLEMENT OF ERROR CODE IF SPECIFIED BY THE
- * CALLER.
- * (RC) = RETRY COUNT.
- *
- * EXIT (EC) = 0.
- * (RC) = 0.
- * TO THE POINT OF CALL IF THE ERROR WAS RECOVERED BY THE
- * CONTROLLER.
- * TO *MST* IN ALL OTHER CASES.
- *
- * USES EC, RC, RS, T1.
- *
- * CALLS CDS, CRL, CRQ, GGS, IBM, ISF, PDT, PFR, PRE,
- * RLC, SSF, TEP.
- ERR SUBR ENTRY/EXIT
- RJM PRE PRESET ERROR PROCESSOR
- NJP ERR11 IF INTERLOCK/VERIFICATION FAILURE
- LDD EC
- SHN 21-13
- PJN ERR3 IF ERROR CODE NOT SET BY CALLER
- ERR2 LCN 0 STORE ERROR CODE
- LMD EC
- STD EC
- UJN ERR3.1 CHECK FOR RETRY LIMIT
- ERR3 RJM GGS GET GENERAL STATUS
- MJN ERR2 IF STATUS NOT OBTAINED
- RJM CDS CRACK DETAILED STATUS
- MJN ERR2 IF STATUS NOT OBTAINED
- ERR3.1 LDD RC
- NJN ERR4 IF NOT FIRST RETRY
- LDD GS SAVE INITIAL GENERAL STATUS
- STM BMLGS
- ERR4 LDD TH FORCE IMMEDIATE COMPLETION
- ERRNZ SHNI-1000 CODE DEPENDS ON VALUE
- STM IICA
- RJM IIC ISSUE I/O COMPLETION REQUEST
- ERR4.1 RJM CRQ ENSURE NO PENDING MONITOR FUNCTION
- NJN ERR4.1 IF FUNCTION STILL PENDING
- RJM IBM ISSUE BML MESSAGE IF FIRST RETRY
- AOD RS
- SHN 21-13
- MJN ERR6.1 IF ERROR RECOVERED BY CONTROLLER
- RJM CRL CHECK FOR RETRY LIMIT REACHED
- MJN ERR7 IF RETRY LIMIT NOT REACHED
- * ATTEMPT TO RELOAD THE CONTROLLER IF THE ERROR TYPE IS
- * APPROPRIATE FOR SUCH AN ACTION.
- LDM TEPF,EC
- SHN 21-5
- PJN ERR5 IF RELOAD INAPPROPRIATE FOR ERROR TYPE
- RJM RLC RELOAD CONTROLLER
- ERR5 SOD RC ADJUST FINAL RETRY COUNT
- AOD RS SET RECOVERY STATUS
- ERR6.1 UJN ERR11 TERMINATE ERROR PROCESSING
- * SET THE SUSPECT FLAG IF APPROPRIATE FOR THIS ERROR TYPE.
- ERR7 RJM SSF SET SUSPECT FLAG (IF APPROPRIATE)
- * RETRY I/O SEQUENCE.
- ERR9 RJM ISF ISSUE SEEK FUNCTION
- ZJN ERR10 IF ON CYLINDER AND NO ERROR
- LDD GS
- LMN 2
- ZJN ERR9 IF POSITIONER BUSY
- LMN 10&2
- NJN ERR9.1 IF DRIVE NOT RESERVED ON OTHER CHANNEL
- LDC 4000 CAUSE PRIORITY OVERRIDE ON SEEK
- RAM ISFA
- UJN ERR9 REISSUE SEEK
- ERR9.1 LDD CS
- LPN 10
- ZJN ERR11 IF CONTROLLER WAS NOT CONNECTED
- LDK DSTE SET ERROR CODE FOR LOST CONTROLLER RESERVE
- STD EC
- UJP ERR4 RETRY OPERATION
- ERR10 RJM PFR PREPARE FOR RETRY ATTEMPT
- RJM PDT PERFORM READ/WRITE OPERATION
- * CONTROL RETURNS TO THIS POINT ONLY IF THE ERROR WAS
- * RECOVERED.
- ERR11 AOD RS SET RECOVERY STATUS
- SHN 6
- RAD RC ADJUST FOR CONTROLLER RECOVERY
- * TERMINATE ERROR PROCESSING. INSTRUCTIONS MODIFIED FOR ERROR
- * PROCESSING WILL BE RESTORED TO THEIR ORIGINAL VALUES, VARIOUS
- * DATA CELLS WILL BE RESTORED TO THEIR INITIAL STATES, ETC.
- RJM TEP TERMINATE ERROR PROCESSING
- LDM ERRA,RS
- STD T1
- LJM 0,T1 EXIT ERROR PROCESSOR
- ERRA INDEX TABLE OF EXIT ADDRESSES
- INDEX 0,ERRX
- INDEX 1,MST
- INDEX 2,MST
- INDEX 3,MST
- INDEX 4
- TEPF SPACE 4,25
- ** TEPF - TABLE OF ERROR PROCESSING FLAGS.
- *
- * THIS TABLE CONTAINS INFORMATION RELATED TO EACH ERROR TYPE.
- * EACH ENTRY HAS THE FOLLOWING FORMAT -
- * VFD 2/ERROR COUNT INCREMENT, BML MESSAGE INDICATOR
- * 0 DO NOT INCREMENT ERROR COUNTS AND DO
- * NOT ISSUE BML MESSAGE.
- * 1 INCREMENT ERROR COUNTS AND ISSUE BML
- * MESSAGE.
- * 2 INCREMENT ERROR COUNTS AND ISSUE BML
- * MESSAGE IF UNRECOVERED ERROR.
- * VFD 2/ERROR LOG MESSAGE INDICATOR
- * 0 DO NOT ISSUE ERROR LOG MESSAGE.
- * 1 ISSUE ERROR LOG MESSAGE WITH DETAILED
- * STATUS.
- * 2 ISSUE ERROR LOG MESSAGE WITHOUT
- * DETAILED STATUS.
- * VFD 1/SUSPECT FLAG
- * 0 DO NOT SET SUSPECT FLAG.
- * 1 SET SUSPECT FLAG.
- * VFD 1/DOWN CHANNEL FLAG
- * 0 DO NOT DOWN CHANNEL.
- * 1 DOWN CHANNEL.
- * VFD 1/CONTROLLER RELOAD FLAG
- * 0 DO NOT RELOAD CONTROLLER.
- * 1 RELOAD CONTROLLER.
- * VFD 5/UNUSED (ZERO)
- LIST G
- TEPF EQU *-1
- ECHO 1,EC=("DREC")
- VFD 2/IEC._EC,2/IEM._EC,1/SUS._EC,1/IDC._EC,1/CWR._EC,5/0
- LIST *
- TEPO SPACE 4,10
- ** TEPO - TABLE OF IMMEDIATE RETURN ERROR PROCESSING OPTIONS.
- LIST G
- TEPO EQU *-1
- ECHO 1,ERRCODE=("DREC")
- CON EPO._ERRCODE "TXT._ERRCODE" ERROR
- LIST *
- TMNE SPACE 4,10
- ** TMNE - TABLE OF ERROR CODE MNEMONICS.
- LIST G
- TMNE EQU *-1
- ECHO 1,ERRCODE=("DREC")
- CON EMN._ERRCODE "TXT._ERRCODE" ERROR
- LIST *
- TREC SPACE 4,10
- ** TREC - TABLE OF RETRY COUNTS.
- LIST G
- TREC EQU *-1
- ECHO 1,ERRCODE=("DREC")
- CON RTC._ERRCODE "TXT._ERRCODE" ERROR
- LIST *
- TSYM SPACE 4,10
- ** TSYM - TABLE OF BML SYMPTOM CODES.
- LIST G
- TSYM EQU *-1
- ECHO 1,ERRCODE=("DREC")
- CON SYM._ERRCODE "TXT._ERRCODE" ERROR
- LIST *
- FNC SPACE 4,10
- ** FNC - FUNCTION CHANNEL.
- *
- * ENTRY (A) = FUNCTION CODE.
- *
- * EXIT (A) .LT. 0 IF CHANNEL ACTIVE UPON ENTRY OR FUNCTION
- * TIMEOUT. (EC) = COMPLEMENT OF ERROR CODE.
- * .GE. 0 IF NO ERROR.
- *
- * USES EC.
- FNC6 ACN CH ACTIVATE CHANNEL
- LDN 0 SET REPLY STATUS
- FNC SUBR ENTRY/EXIT
- STM FNCA SAVE FUNCTION CODE
- AJM FNC5,CH IF CHANNEL IS STILL ACTIVE
- FAN CH FUNCTION CHANNEL
- * THE DRIVER MUST WAIT AT LEAST 300 MS BEFORE TIMING OUT THE
- * FUNCTION.
- FNC1 ADD ON
- IJM FNC6,CH IF FUNCTION ACCEPTED
- NJN FNC1 IF NOT TIMEOUT YET
- FNC2 LCN FTOE SET COMPLEMENT OF *FTOE* ERROR CODE
- FNC3 STD EC
- EJM FNC4,CH IF CHANNEL IS EMPTY
- LDN 1 SAVE LAST FUNCTION ISSUED
- IAM FNCA,CH
- FNC4 LCN 0 SET ERROR REPLY STATUS
- DCN CH+40
- UJN FNCX RETURN
- FNC5 LCN CHFE SET *CHANNEL FAILURE* ERROR CODE
- UJN FNC3 INPUT DATA/FUNCTION FROM CHANNEL
- FNCA CON -0 CURRENT FUNCTION
- GDS SPACE 4,15
- ** GDS - GET DETAILED STATUS.
- *
- * THIS ROUTINE OBTAINS THE DETAILED STATUS FROM THE CONTROLLER.
- *
- * EXIT (A) .EQ. 0 IF STATUS OBTAINED.
- * .LT. 0 IF STATUS NOT OBTAINED.
- * (EC) = COMPLEMENT OF *IDTE* ERROR CODE IF INCOMPLETE
- * TRANSFER OCCURS.
- *
- * USES EC, T1.
- *
- * CALLS CCP, FNC.
- GDS1 LCN IDTE SET *INCOMPLETE DATA TRANSFER* ERROR CODE
- GDS2 STD EC
- GDS3 LDN MXSL-1 INVALIDATE DETAILED STATUS
- STD T1
- GDS4 LCN 0
- STM DST,T1
- SOD T1
- PJN GDS4 IF MORE BYTES
- GDS SUBR ENTRY/EXIT
- LDN FCDS ISSUE DETAILED STATUS FUNCTION
- RJM FNC
- MJN GDS3 IF ERROR
- LDN MXSL
- IAM DST,CH INPUT DETAILED STATUS
- NJN GDS1 IF INCOMPLETE DATA TRANSFER
- RJM CCP CHECK FOR CHANNEL PARITY ERROR
- ZJN GDSX IF NO CHANNEL PARITY ERROR
- UJN GDS2 INVALIDATE STATUS AND RETURN
- GGS SPACE 4,15
- ** GGS - GET GENERAL STATUS.
- *
- * THIS ROUTINE OBTAINS THE EXTENDED GENERAL STATUS FROM THE
- * CONTROLLER.
- *
- * EXIT (A) .GE. 0 IF GENERAL STATUS OBTAINED. (GS) = STATUS.
- * .LT. 0 IF STATUS NOT OBTAINED. (GS) = 7777.
- * (EC) = COMPLEMENT OF *IDTE* ERROR CODE IF INCOMPLETE
- * TRANSFER OCCURRED.
- * = COMPLEMENT OF *CHPE* ERROR CODE IF CHANNEL
- * ERROR OCCURRED.
- *
- * USES EC, GS, T1.
- *
- * CALLS CCP, FNC.
- GGS1 LCN IDTE SET *INCOMPLETE DATA TRANSFER* ERROR CODE
- GGS2 STD EC
- GGS3 LDN FCESL-1 INVALIDATE EXTENDED GENERAL STATUS
- STD T1
- GGS4 LCN 0
- STM GGSA,T1
- SOD T1
- PJN GGS4 IF MORE BYTES
- LCN 0 INVALIDATE GENERAL STATUS
- GGS5 STD GS
- GGS SUBR ENTRY/EXIT
- LDM FNCA SAVE FUNCTION BEFORE GENERAL STATUS
- STM GGSB
- LDN FCES ISSUE EXTENDED GENERAL STATUS FUNCTION
- RJM FNC
- MJN GGS3 IF ERROR
- LDN FCESL
- IAM GGSA,CH
- NJN GGS1 IF INCOMPLETE TRANSFER
- RJM CCP CHECK FOR CHANNEL PARITY ERROR
- MJN GGS2 IF CHANNEL PARITY ERROR
- LDM GGSB RESTORE LAST FUNCTION FOR ERROR PROCESSOR
- STM FNCA
- LDM GGSA
- UJN GGS5 SAVE FIRST STATUS BYTE
- GGSA BSS FCESL EXTENDED GENERAL STATUS BUFFER
- GGSB BSS 1 LAST FUNCTION BEFORE GENERAL STATUS
- IBM SPACE 4,25
- ** IBM - ISSUE BML MESSAGE.
- *
- * THIS ROUTINE BUILDS A BML MESSAGE AND CALLS ROUTINE *IMB* TO
- * ISSUE THE MESSAGE TO THE BML.
- *
- * ENTRY (CA - CA+3) = SEEK PARAMETERS.
- * (EC) = ERROR CODE.
- * (ER) = RECOVERY IN PROGRESS FLAG.
- * (RC) = RETRY COUNT.
- * (RS) = RECOVERY STATUS.
- * 777X INITIAL RETRY.
- * 0 RECOVERED BY CONTROLLER.
- * 1 RECOVERED BY DRIVER.
- * 2 UNRESOLVED.
- * 3 UNRECOVERED.
- * (RW) = READ/WRITE FLAG.
- * (T5) = EST ORDINAL.
- * (BMLGS) = GENERAL STATUS.
- * (DST - DST+23) = DETAILED STATUS IF APPLICABLE.
- *
- * EXIT (RC) INCREMENTED IF FIRST RETRY.
- *
- * USES RC, T1, CM+1 - CM+3.
- *
- * CALLS IMB.
- *
- * MACROS MONITOR.
- IBM SUBR ENTRY/EXIT
- LDM TEPF,EC
- SHN 0-12
- ZJN IBMX IF NO BML MESSAGE/ERROR COUNT INCREMENT
- LDD RS
- LMN 2
- ZJN IBMX IF UNRESOLVED ERROR
- SHN 21-13
- PJN IBM2 IF FINAL RETRY
- LDD RC
- NJN IBMX IF NOT INITIAL RETRY
- AOD RC INCREMENT RETRY COUNT
- UJN IBM3 CONTINUE
- * INCREMENT ERROR COUNTER.
- IBM2 LDD T5 SET EST ORDINAL
- STD CM+1
- LDD RS SET BYTE NUMBER
- SHN -1
- ADN 3
- STD CM+2
- LDK ICTS SET SUBFUNCTION
- STD CM+3
- MONITOR SMDM
- IBM3 LDD RS SET RECOVERED/UNRECOVERED FLAG
- ADN 5
- SHN -3
- LPN 1
- STD T1
- LDC /COMSDFS/D1HP*400 STORE SYMPTOM CODE
- LMM TSYM,EC
- STM BMLSC
- LMK /COMSDFS/HS0040+/COMSDFS/D1HP*400
- NJN IBM4 IF NOT A MEDIA ERROR
- LDD RW SET WRITE MEDIA ERROR SYMPTOM CODE
- ERRNZ /COMSDFS/HS0041-/COMSDFS/HS0040-1 ERROR
- RAM BMLSC
- IBM4 LDD RC STORE RETRY COUNT
- SHN 6-1
- ADD RW ADD READ/WRITE FLAG
- SHN 1
- ADD T1 ADD RECOVERY STATUS
- STM BMLRC
- LDD CA UNIT NUMBER
- LPN 77
- STM BMLUN
- LDD T5 EST ORDINAL
- STM BMLEO
- LDD EC ERROR CODE
- STM BMLEC
- LDD CA+1 CYLINDER
- STM BMLCY
- LDD CA+2 TRACK AND SECTOR
- SHN 6
- LMD CA+3
- STM BMLTS
- LDC BML ISSUE *BML* MESSAGE
- RJM IMB ISSUE MESSAGE TO BUFFER
- UJP IBMX RETURN
- BML SPACE 4,10
- * BINARY MAINTENANCE LOG MESSAGE.
- BML BSS 0
- HDR1 VFD 36/0 RESERVED
- VFD 12/BMS1LC LENGTH OF MESSAGE
- VFD 12/MLDY MESSAGE TYPE
- VFD 12//COMSDFS/RM0014 MESSAGE ID
- BMLSC VFD 4//COMSDFS/D1HP DRIVER TYPE
- VFD 1/0 RESERVED
- VFD 7/0 SYMPTOM CODE
- BMLPP VFD 6/ PP NUMBER
- VFD 6/ CHANNEL NUMBER
- BMLUN VFD 6/0 EQUIPMENT NUMBER
- VFD 6/ UNIT NUMBER
- VFD 12/0 RESERVED
- BMLEO VFD 12/ EST ORDINAL
- BMLRC VFD 6/ RETRY COUNT
- VFD 4/0 RESERVED
- VFD 1/0 READ OPERATION
- * VFD 1/1 WRITE OPERATION
- VFD 1/0 RECOVERED ERROR
- * VFD 1/1 UNRECOVERED ERROR
- BMLCR VFD 6/ CHANNEL USED FOR RECOVERY
- VFD 6/0 RESERVED
- BMLMF VFD 12/ MAINFRAME ID
- VFD 12/0 RESERVED
- HDR1L EQU *-HDR1 HEADER LENGTH (PP WORDS)
- HDR1LC EQU HDR1L/5 HEADER LENGTH (CM WORDS)
- BMLEC VFD 12/ ERROR CODE
- BMLCY VFD 12/ CYLINDER
- BMLTS VFD 12/ TRACK AND SECTOR
- BMLLF VFD 12/ LAST FUNCTION
- BMLGS VFD 12/ GENERAL STATUS
- * DETAILED STATUS.
- DST BSS MXSL
- BMS1L EQU *-BML LENGTH OF MESSAGE (PP WORDS)
- .A SET BMS1L+4
- BMS1LC EQU .A/5 LENGTH OF MESSAGE (CM WORDS)
- IIC SPACE 4,10
- ** IIC - ISSUE I/O COMPLETION REQUEST.
- *
- * ENTRY (CC) = COMPLETION COUNT.
- * (PB) = PREVIOUS BUFFER ORDINAL, IF ANY.
- *
- * EXIT (PB) = 0.
- *
- * USES CC ,PB.
- *
- * CALLS CRQ.
- IIC SUBR ENTRY/EXIT
- LDD PB
- ZJN IIC1 IF NO PREVIOUS BUFFER ORDINAL
- AOD CC INCREMENT COMPLETION COUNT
- LDN 0 CLEAR PREVIOUS BUFFER ORDINAL
- STD PB
- IIC1 LDD CC
- SHN **
- IICA EQU *-1
- ZJN IICX IF NOT AT THRESHOLD
- RJM CRQ ISSUE COMPLETION REQUEST
- UJN IICX RETURN
- IICB BSS 0
- CON SHNI+77-0
- CON SHNI+77-1
- IMF SPACE 4,10
- ** IMF - ISSUE MONITOR FUNCTION.
- *
- * ENTRY (A) = MONITOR FUNCTION CODE.
- *
- * EXIT (A) = 0.
- * (CM - CM+4) = COMPLETED PP OUTPUT REGISTER IMAGE.
- *
- * USES S1.
- *
- * CALLS CRQ, FTN.
- IMF SUBR ENTRY/EXIT
- STD S1 SAVE MONITOR FUNCTION CODE
- IMF1 RJM CRQ CHECK FOR FUNCTION REISSUE REQUIRED
- NJN IMF1 IF PREVIOUS FUNCTION NOT YET COMPLETE
- LDD S1
- RJM FTN ISSUE MONITOR FUNCTION
- UJN IMFX RETURN
- ISF SPACE 4,25
- ** ISF - ISSUE SEEK OPERATION.
- *
- * THIS ROUTINE ISSUES THE SEEK FUNCTION.
- *
- * ENTRY (CB) = BUFFER ORDINAL.
- * (CS) = CHANNEL RESERVATION STATUS.
- *
- * EXIT (A) .EQ. 0 IF UNIT ON-CYLINDER.
- * .NE. 0 IF CONTROLLER RESERVED TO OPPOSITE ACCESS,
- * DRIVE RESERVED TO OTHER CONTROLLER, OR
- * POSITIONER BUSY.
- * (CA - CA+2) = PHYSICAL ADDRESS OF FIRST SECTOR IN
- * BUFFER.
- * (CS) = BIT 3 SET IF CONTROLLER HARDWARE RESERVE IS
- * HELD. BIT 3 IS CLEAR IF *OPERATION COMPLETE*
- * FUNCTION WAS ISSUED.
- * TO *ERR* IF ERROR.
- *
- * USES CS, EC, CA - CA+4, CM - CM+4.
- *
- * CALLS ERR, FNC, GGS, RHR.
- *
- * MACROS CCBA.
- ISF SUBR ENTRY/EXIT
- CCBA PAD1 GET DISK ADDRESS FROM CBT ENTRY
- CRD CA
- LDD CA SET OPTION SELECT FLAGS
- LMC SOSF
- * LMC SOSF+4000 (PRIORITY OVERRIDE REQUIRED)
- ISFA EQU *-1
- STD CA
- LDD CA+2 SET HEAD NUMBER
- SHN 14
- STD CA+2
- SHN -14 SET SECTOR NUMBER
- STD CA+3
- LDD CS
- LPN 10
- NJN ISF1 IF CONTROLLER ALREADY CONNECTED
- RJM GGS GET GENERAL STATUS
- MJN ISF2 IF GENERAL STATUS WAS NOT OBTAINED
- SHN 21-12
- MJP ISFX IF COUPLER RESERVED ON OTHER ACCESS
- LDN 10 SET HARDWARE RESERVE FLAG
- RAD CS
- ISF1 LDN FCSK ISSUE SEEK FUNCTION
- RJM FNC
- ISF2 MJN ISF5 IF ERROR
- LDN FCSKL OUTPUT SEEK PARAMETERS
- OAM CA,CH
- ZJN ISF3 IF ALL DATA WAS TAKEN
- LCN IDTE SET *INCOMPLETE DATA TRANSFER* ERROR CODE
- UJN ISF4 PROCESS ERROR
- ISF3 EJM ISF6,CH IF LAST BYTE TRANSFERRED
- SBN 1
- NJN ISF3 IF NOT TIMEOUT
- LCN CHFE SET *CHANNEL FAILURE* ERROR CODE
- ISF4 STD EC
- ISF5 RJM ERR CALL ERROR PROCESSOR
- ISF6 DCN CH+40
- RJM GGS GET GENERAL STATUS
- ZJN ISF8 IF NO ERROR AND ON-CYLINDER
- MJN ISF5 IF STATUS WAS NOT OBTAINED
- SHN 21-3
- MJN ISF7 IF UNIT IS RESERVED TO OTHER ACCESS
- SHN 3-1
- PJN ISF5 IF ERROR
- ISF7 RJM RHR RELEASE HARDWARE RESERVES
- NJN ISF5 IF ERROR
- LDN 1 INDICATE NOT ON CYLINDER
- ISF8 LJM ISFX RETURN
- OVI SPACE 4,15
- ** OVI - OBTAIN AND VERIFY *PUT* INTERLOCK.
- *
- * THIS ROUTINE ATTEMPTS TO OBTAIN THE *PUT* INTERLOCK AND IF
- * SUCCESSFUL, VERIFIES THAT THE BUFFER FOR WHICH THE SEEK WAS
- * ISSUED IS STILL CURRENT IN THE QUEUE.
- *
- * ENTRY (CA+1 - CA+3) = ADDRESS USED FOR SEEK.
- * (CB) = BUFFER ORDINAL.
- * (ER) = RECOVERY IN PROGRESS FLAG.
- * (IL) = NONZERO IF THE *PUT* INTERLOCK IS ALREADY HELD.
- * (PO) = *PUT* ORDINAL.
- *
- * EXIT (A) = 0 IF *PUT* ENTRY IS INTERLOCKED AND BUFFER IS
- * STILL CURRENT IN QUEUE.
- * = NONZERO IF *PUT* ENTRY IS INTERLOCKED BY OTHER
- * DRIVER OR THE BUFFER FOR WHICH THE SEEK WAS
- * PERFORMED HAS ALREADY BEEN PROCESSED BY THE
- * OTHER DRIVER.
- * (IL) = 1 IF (A) = 0.
- *
- * USES IL, CM+1 - CM+2, CN - CN+4.
- *
- * CALLS RPI.
- *
- * MACROS CCBA, CPTA, MONITOR.
- OVI2 LDN 0 INDICATE *PUT* INTERLOCKED AND BUFFER OK
- OVI SUBR ENTRY/EXIT
- LDD IL
- NJN OVI2 IF THIS DRIVER ALREADY HAS *PUT* INTERLOCK
- * LDK SUIS
- ERRNZ SUIS CODE DEPENDS ON VALUE
- STD CM+1
- LDD PO
- STD CM+2
- MONITOR BIOM ISSUE INTERLOCK REQUEST
- LDD CM+1
- NJN OVIX IF *PUT* IS INTERLOCKED BY OTHER DRIVER
- AOD IL SET *PUT* INTERLOCK FLAG
- LDC CREQ UPDATE *CCT* TABLE
- OVIA EQU *-2 (*CCT* FWA SET BY *PRS*)
- CWD IL
- LDD ER
- NJN OVI2 IF RECOVERY IN PROGRESS
- * VERIFY THAT THE BUFFER FOR WHICH THE SEEK WAS ISSUED IS STILL
- * CURRENT IN THE QUEUE.
- CPTA UNCT
- CRD CN
- LDD CN+3
- LMD CB
- NJN OVI1 IF CURRENT CBT ORDINAL CHANGED
- CCBA HSLK GET *PUT* ORDINAL FROM CBT ENTRY
- CRD CN
- LDD CN+4
- LMD PO
- NJN OVI1 IF *PUT* ORDINALS DO NOT MATCH
- CCBA PAD1 GET PHYSICAL ADDRESS FROM CBT ENTRY
- CRD CN
- LDD CN+1
- LMD CA+1
- NJN OVI1 IF NO CYLINDER MATCH
- LDD CA+2 TRACK
- SHN 6
- LMD CA+3 SECTOR
- LMD CN+2
- ZJN OVI1.1 IF BUFFER OK
- OVI1 RJM RPI RELEASE *PUT* INTERLOCK
- LDN 1 INDICATE VERIFICATION FAILURE
- OVI1.1 UJP OVIX RETURN
- PCH SPACE 4,20
- ** PCH - PROCESS CHANNEL REQUEST.
- *
- * THIS ROUTINE IS CALLED TO ISSUE A READ, WRITE OR CONTINUE
- * FUNCTION TO THE CONTROLLER.
- *
- * ENTRY (A) = FUNCTION CODE.
- * (CD - CD+1) = EXTENDED MEMORY ADDRESS.
- * (CD+2 - CD+5) = SHORT PRU FLAGS IF WRITE REQUEST.
- * (RW) = READ/WRITE FLAG.
- *
- * EXIT (A) .EQ. 0 IF COMPLETED SUCCESSFULLY.
- * .LT. 0 IF FUNCTION TIMEOUT, INCOMPLETE DATA
- * TRANSFER OR CHANNEL FAILURE.
- * (EC) = COMPLEMENT OF *IDTE* ERROR CODE IF DATA
- * TRANSFER ERROR.
- *
- * USES EC.
- *
- * CALLS FNC.
- PCH3 LCN IDTE SET *INCOMPLETE DATA TRANSFER* ERROR CODE
- PCH4 STD EC
- PCH SUBR ENTRY/EXIT
- RJM FNC FUNCTION CHANNEL
- MJN PCHX IF ERROR
- LDC ** OUTPUT PARAMETERS
- PCHA EQU *-1 (PARAMETER BLOCK SIZE)
- OAM CD,CH
- NJN PCH3 IF INCOMPLETE DATA TRANSFER
- PCH1 EJM PCH2,CH IF LAST BYTE ACCEPTED
- SBN 1
- NJN PCH1 IF NOT TIMEOUT
- LCN CHFE SET *CHANNEL FAILURE* ERROR CODE
- UJN PCH4 SET ERROR CODE
- PCH2 DCN CH+40B
- LDN 0 SET REPLY = SUCCESSFUL
- UJN PCHX RETURN
- PDT SPACE 4,15
- ** PDT - PROCESS DATA TRANSFER.
- *
- * THIS ROUTINE PREPARES FOR AND STARTS THE DATA TRANSFER WHEN A
- * REQUEST IS FOUND IN THE *PUT* AND THE SEEK HAS COMPLETED. IT
- * WILL CALL THE PROPER ROUTINE FOR THE DIRECTION OF THE I/O.
- * THIS ROUTINE WILL RETURN TO THE MAIN LOOP ONLY WHEN THE
- * TRANSFER CANNOT CONTINUE ON THE CURRENT UNIT.
- *
- * ENTRY (EC) = ERROR CODE, IF RECOVERY IS IN PROGRESS.
- * (PO) = *PUT* ORDINAL.
- * (RW) = READ/WRITE FLAG.
- *
- * USES NB, PB, PI, T1, T7, CD - CD+1, CN+2 - CN+4.
- *
- * CALLS ERR, OVI, RHR, RIO, RPI, WIO.
- *
- * MACROS CCBA.
- PDT SUBR ENTRY/EXIT
- LDM PDTB,RW STORE PARAMETER BLOCK LENGTH
- STM PCHA
- RJM OVI OBTAIN *PUT* INTERLOCK AND VERIFY BUFFER
- NJN PDT1 IF UNABLE TO INTERLOCK *PUT*/WRONG BUFFER
- STD NB CLEAR NEXT BUFFER ORDINAL
- STD PB CLEAR PREVIOUS BUFFER ORDINAL
- STD PI SET *PADN* WORD OFFSET
- LDM IICB,RW
- STM IICA
- LDM PDTA,RW STORE SUBROUTINE ADDRESS
- STD T1
- CCBA IOLK
- CRD CD-3
- ERRNZ CD-CN-5 CODE IS VALUE DEPENDENT
- LDN PPSLB SET SECTOR COUNT
- STD T7
- RJM 0,T1 ENTER DATA TRANSFER ROUTINE
- * CONTROL RETURNS HERE AFTER THE DATA TRANSFER IS COMPLETED.
- PDT1 RJM RHR RELEASE HARDWARE RESERVES
- ZJN PDT2 IF NO ERROR
- LDD EC
- NJN PDT2 IF ERROR RECOVERY IN PROGRESS
- RJM ERR CALL ERROR PROCESSOR
- PDT2 RJM RPI RELEASE *PUT* INTERLOCK
- UJP PDTX RETURN
- PDTA BSS 0 PROCESSOR ADDRESS TABLE
- CON RIO
- CON WIO
- PDTB BSS 0 PARAMETER BLOCK LENGTH TABLE
- CON FCRDL
- CON FCWRL
- PFR SPACE 4,15
- ** PFR - PREPARE FOR RETRY ATTEMPT.
- *
- * THIS ROUTINE DOES WHATEVER IS NECESSARY TO PREPARE FOR THE
- * NEXT RETRY ATTEMPT. ITS DUTIES INCLUDE PLUGGING INSTRUCTIONS
- * TO FORCE RETURN TO THE ERROR PROCESSOR FOLLOWING RECOVERY.
- *
- * ENTRY (RW) = READ/WRITE FLAG.
- *
- * USES T1, T2.
- PFR SUBR ENTRY/EXIT
- LDD RW
- SHN 1
- STD T1
- LDM PFRA,T1
- STD T2
- LDM PFRA+1,T1
- STI T2
- UJN PFRX RETURN
- PFRA BSS 0
- CON RIOA,RIOX
- CON WIOA,WIO6.1
- PRE SPACE 4,15
- ** PRE - PRESET ERROR PROCESSOR.
- *
- * THIS ROUTINE PERFORMS OPERATIONS NECESSARY TO PREPARE THE
- * DRIVER FOR ERROR PROCESSOR EXECUTION.
- *
- * EXIT (A) = 0 IF ERROR PROCESSING SHOULD CONTINUE.
- * (RS) = RECOVERY STATUS.
- * (T5) = EST ORDINAL.
- * (TEPA) = 1 IF VERIFICATION/INTERLOCK REJECT.
- *
- * USES RS, T5, CM - CM+4.
- *
- * CALLS CRQ, OVI.
- *
- * MACROS CPTA.
- PRE2 AOM TEPA SET VERIFICATION/INTERLOCK REJECT FLAG
- STD RS FORCE EXIT TO *MST*
- PRE SUBR ENTRY/EXIT
- DCN CH+40 DISCONNECT CHANNEL IN CASE STILL ACTIVE
- LDM FNCA SAVE CURRENT FUNCTION
- STM BMLLF
- LCN 0 INITIALIZE RECOVERY STATUS
- STD RS
- LDD HN
- ERRNZ SOSF-100 CODE DEPENDS ON VALUE
- STM ISFA
- RJM OVI GET *PUT* INTERLOCK (IF NOT ALREADY HELD)
- NJN PRE2 IF INTERLOCK NOT OBTAINED
- CPTA UNCT GET EST ORDINAL
- CRD CM
- LDD CM+1
- STD T5
- PRE1 RJM CRQ ENSURE NO PENDING MONITOR FUNCTIONS
- NJN PRE1 IF FUNCTION STILL PENDING
- UJN PREX RETURN
- RCH SPACE 4,10
- ** RCH - REQUEST CHANNEL.
- *
- * ENTRY (IR+4) = CHANNEL NUMBER.
- * (CS) = CHANNEL RESERVATION STATUS.
- *
- * EXIT (A) .NE. 0 IF CHANNEL ASSIGNED.
- * .EQ. 0 IF CHANNEL NOT ASSIGNED.
- *
- * USES CM+1, CS.
- *
- * MACROS MONITOR.
- RCH SUBR ENTRY/EXIT
- LDD CS
- LPN 1
- NJN RCHX IF CHANNEL ALREADY ASSIGNED
- LDD IR+4
- STD CM+1
- MONITOR CCHM
- LDD CM+2
- ZJN RCHX IF CHANNEL NOT ASSIGNED
- AOD CS SET CHANNEL RESERVATION FLAG
- UJN RCHX RETURN
- RHR SPACE 4,10
- ** RHR - RELEASE HARDWARE RESERVES.
- *
- * ENTRY (CS) = CHANNEL STATUS.
- *
- * EXIT (A) = 0 IF NO ERROR.
- *
- * USES CS, S1.
- *
- * CALLS FNC.
- RHR SUBR ENTRY/EXIT
- LDD CS
- LPN 10
- ZJN RHRX IF CONTROLLER NOT RESERVED
- LDN FCOC ISSUE *OPERATION COMPLETE* FUNCTION
- RJM FNC
- SHN 0-21 SAVE ERROR STATUS
- STD S1
- DCN CH+40
- LCN 10 CLEAR CONTROLLER RESERVE FLAG
- RAD CS
- LDD S1 SET REPLY STATUS
- UJN RHRX RETURN
- RIO SPACE 4,15
- ** RIO - PERFORM READ OPERATION.
- *
- * ENTRY (CB) = CURRENT BUFFER ORDINAL.
- * (CD - CD+1) = BUFFER ADDRESS.
- * (NB) = 0.
- * (PB) = 0.
- * (PI) = 0.
- * (T7) = *PPSLB*.
- *
- * EXIT (PB) = ORDINAL OF LAST BUFFER PROCESSED.
- *
- * USES CB, PB, PI, T7, CD - CD+1, CM - CM+4, CN+2 - CN+4.
- *
- * CALLS CCS, CRQ, ERR, GGS, IIC, PCH.
- *
- * MACROS CCBA.
- RIO SUBR ENTRY/EXIT
- RIO1 LDN FCRD ISSUE READ FUNCTION
- RJM PCH
- MJN RIO4 IF ERROR
- RJM IIC CHECK FOR NEED TO ISSUE COMPLETION REQUEST
- LDD T7
- LPN 1
- ZJN RIO3 IF FIRST SECTOR OF CONTROL WORD
- CCBA PAD1 UPDATE PRU FLAGS
- ADD PI
- CRD CM
- LDM GGSA+3
- STD CM+3
- LDM GGSA+4 UPDATE LINKAGE BYTE
- STD CM+4
- CCBA PAD1
- ADD PI
- CWD CM
- AOD PI INCREMENT *PADN* WORD OFFSET
- RIO3 RJM CCS CHECK FOR CONSECUTIVE REQUEST
- RJM GGS GET GENERAL STATUS
- ZJN RIO5 IF NO ERROR
- RIO4 RJM ERR PROCESS ERROR
- RIO5 AOD CA+3 ADVANCE CURRENT POSITION
- LMN PSPT
- NJN RIO6 IF NOT END OF TRACK
- STD CA+3 RESET TO SECTOR 0
- AOD CA+2 ADVANCE TO NEXT TRACK
- RIO6 SOD T7 DECREMENT SECTOR COUNT
- ZJN RIO7 IF FINISHED WITH BUFFER
- LDC EMAI INCREMENT EXTENDED MEMORY ADDRESS
- RAD CD+1
- SHN -14
- RAD CD
- LJM RIO1 READ NEXT SECTOR
- RIO7 STD PI RESET *PADN* WORD OFFSET
- RJM CCS CHECK FOR CONSECUTIVE REQUEST
- LDD CB ADVANCE BUFFER POINTERS
- STD PB
- LDD NB
- STD CB
- ZJP RIOX IF NO CONSECUTIVE REQUEST FOUND
- CCBA IOLK,A INITIALIZE EXTENDED MEMORY ADDRESS
- CRD CD-3
- ERRNZ CD-CN-5 CODE IS VALUE DEPENDENT
- LDN PPSLB RESET SECTOR COUNT
- STD T7
- LDN 0 CLEAR NEXT BUFFER ORDINAL
- STD NB
- LJM RIO1 CONTINUE TRANSFER
- * LJM RIOX (ERROR RECOVERY IN PROGRESS)
- RIOA EQU *-1
- RLC SPACE 4,15
- ** RLC - RELOAD CONTROLWARE.
- *
- * THIS ROUTINE CALLS *1DS* TO INITIATE THE CONTROLWARE RELOAD.
- *
- * EXIT (A) = 0 IF CONTROLWARE RELOADED.
- *
- * USES S2, CM - CM+4, CN - CN+4.
- *
- * CALLS *1DS*.
- *
- * MACROS DELAY, EXECUTE, MONITOR.
- RLC6 LDN 1 INDICATE CONTROLWARE NOT RELOADED
- RLC SUBR ENTRY/EXIT
- LDC **
- RLCJ EQU *-1
- NJN RLCX IF RELOAD WAS ALREADY ATTEMPTED
- LDK DSSL AVOID CONTROLWARE LOAD DURING DEADSTART
- CRD CM
- LDD CM+4
- LPN 4
- NJN RLCX IF DEADSTART IN PROGRESS
- LDC ** READ CONTROLWARE TABLE
- RLCA EQU *-1 CM ADDRESS OF TABLE ENTRY
- CRD CM
- LDD CM+**
- RLCB EQU *-1 BYTE ADDRESS OF TABLE ENTRY
- SHN 21-13
- MJN RLCX IF RELOAD IN PROGRESS
- SHN 13-21-6
- LPN 7 CONTROLWARE LOAD COUNT
- LMK CRTH
- ZJN RLC6 IF RELOAD LIMIT REACHED
- AOM RLCJ SET RELOAD ATTEMPTED FLAG
- * SET RELOAD REQUEST BIT IN CONTROLWARE TABLE.
- LDN 0
- STD CM+2
- LDD MA MESSAGE BUFFER ADDRESS
- CWM RLCG,ON REQUEST WORD
- LDC **
- RLCC EQU *-1 ADDRESS OF CONTROLWARE TABLE ENTRY
- STD CM+4
- SHN -14
- STD CM+3
- LDN 1 NUMBER OF REQUESTS TO PROCESS
- STD CM+1
- MONITOR UTEM
- * LDN 0 INITIALIZE RETRY COUNT
- STD S2
- * CALL *1DS* TO INITIATE CONTROLWARE LOAD JOB.
- RLC1 DELAY
- LDD MA MESSAGE BUFFER ADDRESS
- CWM RLCH,ON *1DS* REQUEST
- EXECUTE 1DS,=
- MONITOR RPPM REQUEST PP
- LDD CM+1
- NJN RLC2 IF PP ASSIGNED
- AOD S2 INCREMENT RETRY COUNT
- LMK PCRL
- NJN RLC1 IF NOT RETRY LIMIT
- RLC2 LJM RLCX RETURN
- RLCG VFD 1/0,5/0,6/1,6/,42/1 *UTEM* REQUEST
- RLCH VFD 18/3L1DS,6/,12/ILJF,24/0 *1DS* REQUEST
- RPI SPACE 4,10
- ** RPI - RELEASE *PUT* INTERLOCK.
- *
- * ENTRY (CC) = COMPLETION COUNT.
- * (IL) = *PUT* INTERLOCK FLAG.
- * (PB) = PREVIOUS BUFFER ORDINAL.
- * (PO) = *PUT* ORDINAL.
- * (TB) = TOTAL CBT COUNT.
- *
- * USES CC, IL, PB, CM - CM+4.
- *
- * MACROS MONITOR.
- RPI SUBR ENTRY/EXIT
- LDD IL
- ZJN RPIX IF *PUT* NOT INTERLOCKED
- LDD TB SET TOTAL BUFFER COUNT
- STD CM+4
- LDD PB
- ZJN RPI1 IF NO PREVIOUS BUFFER
- LDN 1 ACCOUNT FOR PREVIOUS BUFFER
- RPI1 ADD CC
- LMC 4000 SET *RELEASE INTERLOCK* FLAG
- STD CM+3
- LDD PO
- STD CM+2
- LDN DCBS CLEAR UNIT INTERLOCK
- STD CM+1
- LDN 0 CLEAR COMPLETION COUNT BEFORE *CRQ* CALL
- STD CC
- MONITOR BIOM
- * LDN 0
- STD IL CLEAR *PUT* INTERLOCK FLAG
- STD PB CLEAR PREVIOUS BUFFER ORDINAL
- LDC CREQ UPDATE *CCT* TABLE
- RPIA EQU *-2 (*CCT* FWA SET BY *PRS*)
- CWD IL
- UJP RPIX RETURN
- RTM SPACE 4,25
- ** RTM - REQUEST TRACK FLAW IF MEDIA ERROR.
- *
- * THIS ROUTINE DETERMINES IF THE ERROR RESULTED FROM A MEDIA
- * FAILURE. IF IT DID, *CPUMTR* WILL BE CALLED TO PLACE THE
- * LOGICAL TRACK NUMBER IN THE MST SO *1MV* CAN PERFORM A MEDIA
- * VERIFICATION WHEN THE TRACK IS RELEASED. AN ERROR LOG
- * MESSAGE IS ISSUED INFORMING THE OPERATOR THAT A MEDIA FAILURE
- * OCCURRED BUT THE TRACK HAS NOT YET BEEN FLAWED BY THE SYSTEM.
- *
- * ENTRY (CA - CA+3) = PHYSICAL ADDRESS.
- * (CB) = BUFFER ORDINAL.
- * (EC) = ERROR CODE.
- * (T5) = EST ORDINAL.
- *
- * USES T1, CM - CM+4.
- *
- * CALLS C2D, IMB.
- *
- * MACROS MONITOR.
- RTM SUBR ENTRY/EXIT
- LDD EC
- LMK PARE
- NJN RTMX IF NOT MEDIA ERROR
- LDD T5 CONVERT AND STORE EST ORDINAL IN MESSAGE
- SHN -3
- RJM C2D
- STM RTMB+1
- LDD T5
- STD CM+1 STORE EST ORDINAL FOR *SMDM*
- LPN 7
- SHN 6
- ADC 2R0,
- STM RTMB+2
- LDD CA+1 COMPUTE LOGICAL TRACK
- SHN 1
- ADC 4000
- STD CM+2
- LDD CA+2 PHYSICAL TRACK
- LPN 77
- SHN 5
- ERRNZ PSPT-40 CODE DEPENDS ON VALUE
- ADD CA+3
- SBK PSLTDB
- MJN RTM1 IF FIRST LOGICAL TRACK OF CYLINDER
- AOD CM+2
- RTM1 LDD CM+2
- SHN -6 CONVERT UPPER 6 BITS
- RJM C2D
- STM RTMB+4 STORE RESULT IN DISPLAY BUFFER
- LDD CM+2 CONVERT LOWER 6 BITS
- LPN 77
- RJM C2D
- STM RTMB+5 STORE RESULT IN DISPLAY BUFFER
- LDK SFTS SET SUBFUNCTION
- STD CM+3
- MONITOR SMDM
- LDD CM+1
- NJN RTM2 IF THIS TRACK FLAW ALREADY REQUESTED
- LDC RTMA ISSUE ERROR LOG MESSAGE
- RJM IMB
- RTM2 UJP RTMX RETURN
- RTMA VFD 24/0 RESERVED
- VFD 12/1 ERRLOG ALERT FLAG
- VFD 12/RTMAL MESSAGE LENGTH
- VFD 12/ELDY ERRLOG DAYFILE
- RTMB DATA C*EQXXX,TKNNNN, MEDIA DEFECT ENCOUNTERED.*
- .1 SET *-RTMA+4
- RTMAL EQU .1/5
- SCD SPACE 4,15
- ** SCD - SET DRIVER DROPPED FLAG.
- *
- * THIS ROUTINE SETS A FLAG IN THE CONTROLWARE TABLE INDICATING
- * THAT THE DRIVER OF THIS CHANNEL HAS DROPPED.
- *
- * EXIT (A) = 0.
- *
- * USES CM+1 - CM+4.
- *
- * MACROS MONITOR.
- SCD SUBR ENTRY/EXIT
- LDD MA STORE *UTEM* PARAMETERS
- CWM SCDB,ON
- LDC **
- SCDA EQU *-1 (CONTROLWARE TABLE ADDRESS)
- STD CM+4
- SHN -14
- STD CM+3
- LDN 1
- STD CM+1
- LDN 0
- STD CM+2
- MONITOR UTEM SET DRIVER DROP FLAG
- UJN SCDX RETURN
- SCDB VFD 1/0,5/0,6/1,6/,42/1
- SSF SPACE 4,15
- ** SSF - SET SUSPECT FLAG.
- *
- * THIS ROUTINE SETS THE SUSPECT FLAG IN THE MST ENTRY VIA
- * AN *SEQM* MONITOR FUNCTION IF CERTAIN CRITERIA ARE MET. IT
- * ALSO SETS AN ERROR CODE IN THE MST THAT APPEARS ON THE *E,M*
- * DISPLAY.
- *
- * ENTRY (EC) = ERROR CODE.
- * (RC) = RETRY COUNT.
- * (T5) = EST ORDINAL.
- *
- * USES CM+1 - CM+3.
- *
- * CALLS RTM.
- *
- * MACROS MONITOR.
- SSF SUBR ENTRY/EXIT
- LDD RC
- LMK SURT
- NJN SSFX IF NOT TIME TO SET SUSPECT FLAG
- RJM RTM CHECK FOR MEDIA FAILURE
- LDM TEPF,EC
- SHN 21-7
- PJN SSFX IF SUSPECT FLAG NOT TO BE SET
- LDD T5 SET SUSPECT FLAG
- STD CM+1
- LDN SSES
- STD CM+2
- MONITOR SEQM
- LDD T5 SET ERROR CODE IN MST
- STD CM+1
- LDN STDE
- STD CM+2
- LDN SERS
- STD CM+3
- MONITOR SMDM
- UJN SSFX RETURN
- SUQ SPACE 4,15
- ** SUQ - SCAN UNIT QUEUE.
- *
- * THIS ROUTINE SCANS THE *PUT* ENTRIES OF UNITS ACCESSED BY
- * THIS CHANNEL UNTIL IT HAS SCANNED THE ENTIRE TABLE OR FINDS
- * AN ENTRY ELIGIBLE FOR PROCESSING.
- *
- * ENTRY (TI) = CURRENT *TPOR* INDEX.
- *
- * EXIT (A) .EQ. 0 IF ENTIRE TABLE SCANNED AND NO ELIGIBLE
- * ENTRY FOUND.
- * .NE. 0 IF ENTRY SELECTED.
- * (CB) = CURRENT BUFFER ORDINAL.
- * (ER) = 1 IF ERROR RECOVERY IS IN PROGRESS.
- * (PO) = ORDINAL OF SELECTED *PUT* ENTRY.
- * (RC) = 0 IF ELIGIBLE ENTRY FOUND AND *RECOVERY IN
- * PROGRESS* FLAG IS CLEAR.
- * = N/2 WHERE N IS THE RETRY LIMIT FOR THE ERROR
- * CODE SET IN *EC* IF *RECOVERY IN PROGRESS*
- * FLAG IS SET.
- * (RW) = READ/WRITE FLAG.
- * TO *ERR* IF ERROR RECOVERY IS IN PROGRESS FOR
- * SELECTED BUFFER.
- * (TB) = TOTAL BUFFER COUNT.
- *
- * USES CB, EC, ER, PO, RC, RW, S1, TB, TI, CM - CM+4,
- * CN - CN+4, T1 - T5.
- *
- * CALLS ERR.
- *
- * MACROS CCBA, CPTA, SFA.
- SUQ7 LDD TI
- LMN 1
- SUQA EQU *-1
- NJN SUQ1 IF NOT FINISHED WITH *PUT* SCAN
- SUQ SUBR ENTRY/EXIT
- SUQ1 AOD TI ADVANCE *TPOR* INDEX
- ERRNZ TPORE-1 CODE IS VALUE DEPENDENT
- LDM TPOR-1,TI
- NJN SUQ2 IF NOT END OF *TPOR* TABLE
- STD TI RESET INDEX
- UJN SUQ1 CONTINUE
- SUQ2 SHN 14 SET CHANNEL BYTE INDEX
- STD S1
- SHN -14 SET *PUT* ORDINAL
- STD PO
- CPTA UNCT,A READ *PUT* ENTRY
- CRD CM
- LDD CM
- SHN 21-13
- MJN SUQ7 IF UNIT INTERLOCK SET
- LDD CM+3
- NJN SUQ3 IF REQUEST IN QUEUE
- SUQ2.1 UJN SUQ7 PROCESS NEXT *PUT*
- SUQ3 STD CB SAVE BUFFER ORDINAL
- CCBA IOLK,A READ *CBT* ENTRY
- CRD CN
- ADK HSLK-IOLK
- CRD T1
- SFA EST,CM+1 READ EST ENTRY
- ADK EQDE
- CRD CM
- LDM CM+1,S1
- SHN -11
- LPN 3
- STD T2 SAVE CHANNEL STATE INDICATOR
- LMN 3
- NJN SUQ4 IF CHANNEL NOT DOWN
- SUQ3.1 UJN SUQ2.1 PROCESS NEXT *PUT*
- SUQ4 LDD T1
- SHN 0-12
- ZJN SUQ4.1 IF NOT CHANNEL SPECIFIC REQUEST
- CCBA PAD4 GET CHANNEL FROM CBT ENTRY
- CRD CM
- LDD CM
- SHN -6
- LMD IR+4
- STD T2
- SUQ4.1 LDD T2
- NJN SUQ3.1 IF IDLE STATE OR OTHER CHANNEL SPECIFIED
- LDD CN SET/CLEAR READ/WRITE FLAG
- SHN 0-11
- LPN 1
- STD RW
- SHN 13-0 SET TOTAL BUFFER COUNT
- ADN 1
- STD TB
- LDD T1
- SHN 0-13
- STD ER SET/CLEAR RECOVERY IN PROGRESS FLAG
- ZJN SUQ6 IF NOT ERROR RECOVERY
- LDD T1 SAVE ERROR CODE
- LPN 77
- STD T1
- LMC 7777 COMPLEMENT ERROR CODE
- STD EC
- LDM TREC,T1 SET RETRY COUNT = LIMIT/2
- SHN -1
- STD RC
- RJM ERR CALL ERROR PROCESSOR
- LJM SUQ1 CONTINUE SCAN
- SUQ6 LDD TI SET SCAN LIMIT
- LMC LMNI
- STM SUQA
- LJM SUQX RETURN
- TEP SPACE 4,25
- ** TEP - TERMINATE ERROR PROCESSING.
- *
- * THIS ROUTINE PERFORMS OPERATIONS NECESSARY TO RESTORE THE
- * DRIVER TO ITS NORMAL STATE (NON-ERROR PROCESSING).
- *
- * ENTRY (EC) = ERROR CODE.
- * (PO) = *PUT* ORDINAL.
- * (RS) = RECOVERY STATUS.
- * (RW) = READ/WRITE FLAG.
- *
- * EXIT (EC) = 0.
- * (ER) = 0.
- * (RC) = 0.
- * (RS) = RECOVERY STATUS.
- * 0 RECOVERED BY CONTROLLER.
- * 1 RECOVERED BY DRIVER.
- * 2 UNRESOLVED.
- * 3 UNRECOVERED.
- *
- * USES EC, ER, IL, RC, RS, S2, T1, T2, CM - CM+4.
- *
- * CALLS IBM, RHR, RPI.
- *
- * MACROS MONITOR.
- TEP4 LDN 0
- STD EC CLEAR ERROR CODE
- STD ER CLEAR RECOVERY IN PROGRESS FLAG
- STD RC CLEAR RETRY COUNT
- STM RLCJ CLEAR RELOAD ATTEMPTED FLAG
- STM TEPA CLEAR VERIFICATION/INTERLOCK REJECT FLAG
- LDD HN RESET SEEK SELECTION OPTIONS
- ERRNZ SOSF-100 CODE DEPENDS ON VALUE
- STM ISFA
- TEP SUBR ENTRY/EXIT
- LDD RW
- SHN 1
- STD T1
- LDM TEPB,T1 RESTORE INSTRUCTIONS
- STD T2
- LDM TEPB+1,T1
- STI T2
- LDC **
- TEPA EQU *-1
- NJP TEP4 IF OTHER DRIVER HANDLING ERROR
- LDD RS
- ZJN TEP1 IF RECOVERED BY CONTROLLER
- LDD EC SAVE ERROR CODE IN CASE FUNCTION TIMEOUT
- STD S2
- RJM RHR RELEASE HARDWARE RESERVES
- LDD S2 RESTORE ERROR CODE
- STD EC
- LDD RS
- TEP1 LMN 2
- NJN TEP2 IF NOT UNRESOLVED ERROR
- * ISSUING SUBFUNCTION *SETS* OF THE *BIOM* MONITOR FUNCTION
- * CAUSES ONE OF THE FOLLOWING TO OCCUR -
- * A. IF THE RECOVERY IN PROGRESS FLAG IS SET IN THE CBT
- * ENTRY, THE REQUEST WILL BE TERMINATED WITH STATUS
- * RETURNED TO THE PROGRAM THAT ISSUED THE REQUEST.
- * IN THIS CASE IT IS THE RESPONSIBILITY OF THIS
- * DRIVER TO ISSUE MESSAGES TO THE BML, ERROR LOG, JOB
- * DAYFILE AND SYSTEM DAYFILE INDICATING AN
- * UNRECOVERED ERROR OCCURRED.
- * B. IF THE RECOVERY IN PROGRESS FLAG IS CLEAR AND AN
- * ALTERNATE CHANNEL EXISTS (WITH AN ACTIVE DRIVER),
- * THE REQUEST WILL BE MODIFIED TO FORCE CONTINUATION
- * OF ERROR RECOVERY BY THE OTHER DRIVER.
- * C. IF THE RECOVERY IN PROGRESS FLAG IS CLEAR BUT
- * EITHER THERE IS NO ALTERNATE ACCESS PATH OR IT HAS
- * BEEN DOWNED, THE REQUEST WILL BE MODIFIED TO FORCE
- * CONTINUATION OF ERROR PROCESSING ON THIS CHANNEL.
- LDN SETS SET SUBFUNCTION
- STD CM+1
- LDD PO SET *PUT* ORDINAL
- STD CM+2
- LDN 1 SET BUFFER COUNT
- STD CM+3
- LDD EC SET ERROR CODE
- STD CM+4
- MONITOR BIOM
- STD IL CLEAR *PUT* INTERLOCK FLAG
- LDD CM+1
- ZJN TEP2 IF PROCESSING WILL RESUME ON OTHER CHANNEL
- AOD RS SET UNRECOVERED STATUS
- * ISSUE THE BML MESSAGE AND INCREMENT ERROR COUNTERS IF
- * APPROPRIATE FOR THIS ERROR TYPE AND RESOLUTION OF THE ERROR
- * HAS BEEN DETERMINED.
- TEP2 LDD RS
- LPN 1
- ZJN TEP3 IF UNRESOLVED OR RECOVERED BY CONTROLLER
- RJM RPI RELEASE *PUT* INTERLOCK
- TEP3 RJM IBM ISSUE BML MESSAGE
- * CLEAR B-DISPLAY MESSAGE.
- LDK ZERL
- CRD CM
- LDD CP
- ADK MS2W
- CWD CM
- UJP TEP4 CONTINUE CLEARING AND RETURN
- TEPB BSS 0
- CON RIOA,RIO1
- CON WIOA,WIO1
- WIO SPACE 4,10
- ** WIO - PERFORM WRITE OPERATION.
- *
- * ENTRY (CB) = CURRENT BUFFER ORDINAL.
- * (CD - CD+1) = BUFFER ADDRESS.
- * (NB) = 0.
- * (PB) = 0.
- * (PI) = 0.
- * (T7) = *PPSLB*.
- *
- * EXIT (PB) = ORDINAL OF LAST BUFFER PROCESSED.
- *
- * USES CB, PB, PI, T1, T7, CA+2 - CA+3, CD - CD+5,
- * CN+2 - CN+4.
- *
- * CALLS CCS, CRQ, ERR, GGS, IIC, PCH.
- *
- * MACROS CCBA.
- WIO SUBR ENTRY/EXIT
- WIO1 LDD T7
- LPN 1
- NJN WIO2 IF NOT FIRST SECTOR OF CONTROL WORD
- LDD CD+1 SAVE EXTENDED MEMORY ADDRESS BYTE
- STD T1
- CCBA PAD1 GET LINKAGE BYTES FROM *CBT* ENTRY
- ADD PI
- CRD CD+1
- LDD T1 RESTORE EXTENDED MEMORY ADDRESS BYTE
- STD CD+1
- AOD PI INCREMENT *PADN* INDEX
- WIO2 LDN FCWR ISSUE WRITE FUNCTION
- RJM PCH
- MJN WIO4.1 IF ERROR
- AOD CA+3 ADVANCE CURRENT POSITION
- LMN PSPT
- NJN WIO3 IF NOT END OF TRACK
- STD CA+3 RESET TO SECTOR ZERO
- AOD CA+2 ADVANCE TO NEXT TRACK
- WIO3 SOD T7 DECREMENT SECTOR COUNT
- ZJN WIO5 IF FINISHED WITH BUFFER
- LMK PPSLB-1
- ZJN WIO4 IF FIRST SECTOR OF BUFFER
- RJM IIC ISSUE I/O COMPLETION REQUEST IF REQUIRED
- WIO4 LDC EMAI INCREMENT EXTENDED MEMORY ADDRESS
- RAD CD+1
- SHN -14
- RAD CD
- RJM CCS CHECK FOR CONSECUTIVE REQUEST
- RJM GGS GET GENERAL STATUS
- ZJP WIO1 IF NO ERROR
- WIO4.1 UJN WIO8 CALL ERROR PROCESSOR
- WIO5 STD PI RESET *PADN* WORD INDEX
- RJM CCS CHECK FOR CONSECUTIVE REQUEST
- LDD CB ADVANCE BUFFER POINTERS
- STD PB
- LDD NB
- STD CB
- ZJN WIO6 IF NO CONSECUTIVE REQUEST
- CCBA IOLK,A SET EXTENDED MEMORY ADDRESS
- CRD CD-3
- ERRNZ CD-CN-5 CODE IS VALUE DEPENDENT
- LDN PPSLB RESET SECTOR COUNT
- STD T7
- RJM GGS GET GENERAL STATUS
- NJN WIO7 IF ERROR
- STD NB CLEAR NEXT BUFFER ORDINAL
- LJM WIO1 CONTINUE TRANSFER
- * LJM WIO6.1 (ERROR RECOVERY IN PROGRESS)
- WIOA EQU *-1
- WIO6 RJM GGS GET GENERAL STATUS
- NJN WIO7 IF ERROR ON LAST SECTOR
- WIO6.1 RJM GGS GET GENERAL STATUS
- ZJN WIO9 IF NO ERROR
- WIO7 LDD PB BACKUP TO PREVIOUS BUFFER
- STD CB
- LDN 0 AVOID BUFFER COMPLETION
- STD PB
- WIO8 RJM ERR CALL ERROR PROCESSOR
- WIO9 LJM WIOX RETURN
- SPACE 4,10
- * COMMON DECKS.
- *CALL COMPC2D
- *CALL COMPIMB
- SPACE 4,10
- PRS TITLE PRESET PROGRAM.
- PRS SPACE 4,10
- ** PRS - PRESET *1HP*.
- *
- * EXIT (CC) = 0.
- * (CS) = 0.
- * (EC) = 0.
- * (ER) = 0.
- * (IL) = 0.
- * (PB) = 0.
- * (RC) = 0.
- * (TI) = 0.
- * (BMLCR) = 6/ CHANNEL, 6/0.
- * (BMLMF) = MAINFRAME ID.
- * (BMLPP) = 6/ PP NUMBER, 6/ CHANNEL.
- * (CCPA) = *SCR* CHANNEL PARITY BIT + FCTC + 30B.
- * (CCPB) = *SCR* CHANNEL OUTPUT INSTRUCTION (OAN).
- * (CCPC) = *SCR* CHANNEL INPUT INSTRUCTION (IAN).
- * (CCRA) = WORD ADDRESS OF CHANNEL TABLE ENTRY.
- * (CCRB) = BYTE ADDRESS OF CHANNEL TABLE ENTRY + LDDI.
- * (CHRV) = 1.
- * (CRQA) = FWA OF PP EXCHANGE PACKAGE.
- * (CRQB) = FWA OF PP EXCHANGE PACKAGE.
- * (CRQC) = CPU EXCHANGE INSTRUCTION (MXN).
- * (CRQD) = FIRST WORD OF PP EXCHANGE PACKAGE.
- * (RLCA) = WORD ADDRESS OF CONTROLWARE TABLE ENTRY.
- * (RLCB) = BYTE ADDRESS OF CONTROLWARE TABLE ENTRY.
- * (RLCC) = WORD ADDRESS OF CONTROLWARE TABLE ENTRY.
- * (RLCG) = BIT NUMBER OF LOAD REQUESTED FLAG.
- * (SCDA) = WORD ADDRESS OF CONTROLWARE TABLE ENTRY.
- * (SCDB) = BIT NUMBER OF DRIVER DROP FLAG.
- * ALL *CCBA* REFERENCES TO *CBT* PLUGGED.
- * ALL *CPTA* REFERENCES TO *PUT* PLUGGED.
- * ALL *EMBE* REFERENCES TO *EMB* PLUGGED.
- *
- * USES CC, CS, EC, ER, IL, PB, RC, TI, CM - CM+4, CN - CN+4,
- * T0 - T7.
- *
- * CALLS DFM, RCH.
- *
- * MACROS CPTA, MONITOR, SFA.
- PRS SUBR ENTRY/EXIT
- LDK NCPL VALIDATE CALLER
- CRD CM
- AOD CM+1 NUMBER OF CONTROL POINTS
- SHN 7
- LMD CP
- ZJN PRS1 IF SYSTEM CONTROL POINT
- LDC =C* 1HP - UNAUTHORIZED CALL.*
- RJM DFM ISSUE DAYFILE MESSAGE
- MONITOR ABTM ABORT CONTROL POINT
- LJM PPR RETURN
- PRS1 STD CC CLEAR COMPLETION REQUEST COUNT
- STD CS CLEAR CHANNEL/CONTROLLER STATUS
- STD EC CLEAR ERROR CODE
- STD ER CLEAR RECOVERY IN PROGRESS FLAG
- STD IL CLEAR *PUT* INTERLOCK FLAG
- STD PB CLEAR PREVIOUS BUFFER ORDINAL
- STD RC CLEAR RETRY COUNT
- STD TI INITIALIZE *TPOR* INDEX
- LDD IR+4 CHANNEL NUMBER
- STM BMLPP
- PRS2 RJM RCH REQUEST CHANNEL
- ZJN PRS2 IF CHANNEL NOT ASSIGNED
- * PLUG CHANNEL INSTRUCTIONS.
- LDC PRSD SET FWA OF CHANNEL TABLE
- STD T1
- PRS3 LDI T1
- ZJN PRS4 IF END OF CHANNEL TABLE
- STD T2
- LDD IR+4 CHANNEL
- RAI T2 STORE CHANNEL IN INSTRUCTION
- AOD T1 ADVANCE CHANNEL TABLE POINTER
- UJN PRS3 CONTINUE
- PRS4 LDK PXPP READ PPU STATUS
- CRD CN
- ADN 1
- CRM CRQD,ON READ FIRST WORD OF PP XP
- AOM CRQD+4
- LDK PPCP READ PP COMMUNICATIONS AREA POINTER
- CRD CM
- ADK MMFL-PPCP
- CRD T1
- LDD T1 SAVE MAINFRAME ID
- STM BMLMF
- LDD IA GET ((PP NUMBER - 2) * 10B)
- SBD CM+4
- SBN 20
- SHN -3
- STD T1 PP NUMBER - 2
- SBN 10
- MJN PRS4.1 IF PP 0-11
- ADN 6 ADJUST FOR PP 20-31
- PRS4.1 ADN 12
- SHN 6
- RAM BMLPP SET PP NUMBER
- SHN 6
- STM BMLCR SET RECOVERY CHANNEL
- LDD IR+4
- STD T2
- SBN 20
- PJN PRS5 IF IN SECOND PPS
- ADN 20
- RAM CCPA SET *SCR* BIT NUMBER
- LDK CHSC *SCR* - FIRST PPS
- UJN PRS6 CONTINUE
- PRS5 RAM CCPA SET *SCR* BIT NUMBER
- LDK CHSC+20 *SCR* - SECOND PPS
- PRS6 ADC FJMI
- STM CCPB
- ADC IANI-FJMI
- STM CCPD
- ADC OANI-IANI
- STM CCPC
- LDD T1 PP NUMBER - 2
- SHN 4
- ADD T1 (PP NUMBER - 2) * 21B
- RAD CN+4 SET EXCHANGE ADDRESS
- STM CRQA
- STM CRQB
- SHN -14
- RAD CN+3
- RAM CRQA-1
- STM CRQB-1
- LDD CN+4 SET *MA* ADDRESS
- ADN 6
- STM CRQE
- SHN -14
- ADD CN+3
- RAM CRQE-1
- LDK ACPL CHECK CPU STATUS
- CRD CM
- LCN 0
- STD T1 PRESET CHANNEL TABLE WORD INDEX
- LDN 60D PRESET BIT POSITION FOR LOAD REQUEST
- STD T3
- LDD CM
- SHN 6
- PJN PRS7 IF CPU 0 ON
- AOM CRQC SET EXCHANGE TO CPU 1
- LDD HN
- RAM CRQD+3 SET (A0) TO 1
- PRS7 AOD T1 ADVANCE CM TABLE INDEX
- LCN 5
- RAD T2
- PJN PRS7 IF NOT TO PROPER INDEX
- ADN 5
- RAM CCRB PRESET CHANNEL TABLE BYTE INDEX
- STM RLCB PRESET CONTROLWARE TABLE BYTE INDEX
- LPN 7 BYTE ADDRESS
- STD T2
- PRS8 LCN 12D
- RAD T3 DECREMENT POSITION
- SOD T2
- PJN PRS8 IF NOT TO PROPER POSITION
- LDD T3 BIT POSITION
- ADN 13 ADD OFFSET WITHIN BYTE
- SHN 6
- STM RLCG+1
- SBK 200
- STM SCDB+1
- LDK CHTP CHANNEL TABLE(S) POINTER
- CRD CM
- LDD CM+2 FWA OF CHANNEL TABLE
- SHN 14
- LMD CM+3
- ADD T1 ADD WORD INDEX
- STM CCRA CM ADDRESS OF CHANNEL TABLE ENTRY
- SHN -14
- RAM CCRA-1
- LDD CM+2 COMPUTE FWA OF CONTROLWARE TABLE
- SHN 14
- LMD CM+3
- ADN CTALL*2
- ADD T1 ADD WORD INDEX
- STM RLCA CM ADDRESS OF CONTROLWARE TABLE ENTRY
- STM RLCC
- STM SCDA
- SHN -14
- RAM RLCA-1
- STM RLCC-1
- STM SCDA-1
- * PLUG *EMB* ADDRESSES.
- LDN EMBP FETCH *EMB* POINTER
- CRD CM
- .CM1 EQU CM+1
- LDC .CM1*10000+PRSC
- RJM STA SET *EMB* ADDRESSES
- * GET BUFFERED I/O TABLE POINTERS.
- LDK BIOL READ BUFFERED I/O TABLE POINTERS
- CRD CM
- LDD CM+1
- SHN 14
- LMD CM+2
- ADK CCTP GET *CCT* DESCRIPTOR
- CRD CA
- ADK PUTP-CCTP GET *PUT* DESCRIPTOR
- CRD T3
- ADN CBTP-PUTP GET *CBT* DESCRIPTOR
- CRD CN
- AOD T3
- * PLUG *CCT* ADDRESS.
- LDD IR+2 SET ADDRESS OF *CCT*
- SHN CCTLS-6
- ADD CA+4
- RAM OVIA+1
- STM RPIA+1
- SHN -14
- ADD CA+3
- RAM OVIA
- STM RPIA
- * PLUG *CBT* ADDRESSES.
- .CN3 EQU CN+3
- LDC .CN3*10000+PRSA
- RJM STA SET *CBT* ADDRESSES
- * PLUG *PUT* ADDRESSES.
- LDC T6*10000+PRSB
- RJM STA SET *PUT* ADDRESSES
- * BUILD *TPOR* TABLE.
- PRS12 STD T1 INITIALIZE *TPOR* INDEX
- PRS13 SOD T3 DECREMENT *PUT* ORDINAL
- ZJP PRSX IF SCAN COMPLETE
- CPTA UNCT,A READ *PUT* ENTRY
- CRD CM
- SFA EST,CM+1 READ EST ENTRY
- ADK EQDE
- CRD CM
- LDN 0 INITIALIZE EST CHANNEL BYTE INDEX
- STD T2
- LDD CM+1
- LPN 37
- LMD IR+4
- ZJN PRS14 IF DEVICE SUPPORTED BY THIS DRIVER
- LDD CM+2
- ZJN PRS13 IF SINGLE ACCESS DEVICE
- LPN 37
- LMD IR+4
- NJN PRS13 IF DEVICE NOT SUPPORTED BY THIS DRIVER
- AOD T2 INCREMENT CHANNEL BYTE INDEX
- PRS14 AOD T1 INCREMENT *TPOR* INDEX
- ERRNZ TPORE-1 CODE DEPENDS ON VALUE
- LMK MAXU+1
- ZJN PRS14.1 IF TOO MANY UNITS ON CHANNEL
- LDD T2 POSITION CHANNEL BYTE INDEX
- SHN 6
- LMD T3 SET *PUT* ORDINAL
- STM TPOR-1,T1
- UJP PRS13 CONTINUE SCAN
- PRS14.1 LDC =C* 1HP - TOO MANY UNITS ON CHANNEL.*
- RJM DFM ISSUE SYSTEM DAYFILE MESSAGE
- MONITOR HNGM
- UJN * HANG
- PRSA BSS 0 TABLE OF *CBT* ADDRESSES
- TCBT HERE
- CON 0 TERMINATE TABLE
- PRSB BSS 0 TABLE OF *PUT* ADDRESSES
- TPUT HERE
- CON 0 TERMINATE TABLE
- PRSC BSS 0 TABLE OF *EMB* ADDRESSES
- QUAL COMPIMB
- TEMB HERE
- QUAL *
- CON 0 TERMINATE TABLE
- PRSD BSS 0 TABLE OF CHANNEL INSTRUCTION ADDRESSES
- CHTB
- STA SPACE 4,10
- ** STA - SET TABLE ADDRESSES.
- *
- * ENTRY (A) = 6/ TP, 12/ TA
- * TP = TABLE POINTER.
- * TA = INSTRUCTION TABLE ADDRESS.
- *
- * EXIT (A) = 0.
- *
- * USES T0, T1, T2.
- STA1 STD 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
- AOD T0 ADVANCE INSTRUCTION LIST
- STA2 LDI T0
- NJN STA1 IF NOT END OF TABLE
- STA SUBR ENTRY/EXIT
- STD T0
- SHN -14 SET ADDRESS POINTER
- STD T1
- UJN STA2 ENTER LOOP
- 1HP SPACE 4,10
- OVERFLOW
- 1HP SPACE 4,10
- END
cdc/nos2.source/opl871/1hp.txt ยท Last modified: 2023/08/05 17:24 by Site Administrator