IDENT 1HY,HYDD
TITLE 1HY - HYDRA (887) DRIVER.
CIPPU ,S
BASE M
SST
*COMMENT 1HY - HYDRA (887) DRIVER.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
SPACE 4,10
*** 1HY - HYDRA (887) DRIVER.
*
* P. D. HAAS. 85/12/16.
SPACE 4,10
*** *1HY* IS THE DRIVER FOR THE 887 DISK STORAGE SUBSYSTEM.
*
* THE 887 DISK DRIVES ARE SUPPORTED AS BUFFERED I/O
* DEVICES. REQUESTS THAT ARE PROCESSED BY *1HY* ARE
* POSTED BY *CPUMTR* IN THE BUFFERED I/O TABLES IN *CMR*.
* *1HY* INTERLOCKS UNITS, DELINKS BUFFERS, AND COMPLETES
* SAID REQUESTS BY ISSUING APPROPRIATE *BIOM* FUNCTIONS.
*
* EACH COPY OF *1HY* WILL SUPPORT ONE CONCURRENT CHANNEL AND
* IS THE SOLE DRIVER FOR ALL HYDRA DISKS ON THAT CHANNEL.
* *1HY* MUST BE LOADED INTO A CONCURRENT PP, IN THE SAME
* BANK AS THE CHANNEL IT IS TO SERVICE.
*
* *1HY* SCANS THROUGH THE *PUT* ENTRIES IN A CIRCULAR FASHION
* LOOKING FOR REQUESTS TO PROCESS. ONCE A REQUEST IS FOUND,
* *1HY* USES THE PHYSICAL DISK AND UEM ADDRESSES IN THE
* CORRESPONDING *CBT* ENTRY TO DETERMINE THE ACTION TO BE
* TAKEN. *1HY* 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
* *1HY* WILL RESUME ITS SEARCH THROUGH THE *PUT* WITH THE
* *PUT* ENTRY IMMEDIATELY FOLLOWING THE ONE JUST PROCESSED.
SPACE 4,10
*** CALL.
*
*T 18/ *1HY*, 6/ CP, 6/ CO, 18/, 7/ 1, 5/ CH
*
* 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.
*
* 1HY - UNAUTHORIZED CALL.
*
* *1HY* 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.
SPACE 4,10
*** OPERATOR MESSAGES.
*
* EQORD, DIAGNOSTICS RUNNING.
*
* EQORD, SPIN UP PENDING.
SPACE 4,10
*** ORGANIZATION OF THE 887 (MEASUREMENTS IN DECIMAL).
*
* EQUIPMENT TYPE *DF*
*
* UNITS/LOGICAL DEVICE (N) 1 - 3
*
* PHYSICAL ORGANIZATION:
*
* WORDS/PHYSICAL SECTOR 512
* PHYSICAL SECTORS/TRACK 38
* PHYSICAL TRACKS/CYLINDER 4
* CYLINDERS/DEVICE 884 * N
* WORDS/DEVICE 68,796,416 * N
*
* LOGICAL ORGANIZATION:
*
* WORDS/LOGICAL SECTOR 64
* LOGICAL SECTORS/PHYSICAL SECTOR 8
* LOGICAL SECTORS/LOGICAL TRACK 608 * N
* LOGICAL TRACKS/CYLINDER 2
* LOGICAL TRACKS/DEVICE 1768
*
* MAXIMUM SUSTAINED DATA RATE 983 K WORDS/SECOND
*
*
* EQUIPMENT TYPE *DH*
*
* UNITS/LOGICAL DEVICE (N) 1 - 2
*
* PHYSICAL ORGANIZATION:
*
* WORDS/PHYSICAL SECTOR 2048
* PHYSICAL SECTORS/TRACK 11
* PHYSICAL TRACKS/CYLINDER 4
* CYLINDERS/DEVICE 884 * N
* WORDS/DEVICE 79,659,008 * N
*
* LOGICAL ORGANIZATION:
*
* WORDS/LOGICAL SECTOR 64
* LOGICAL SECTORS/PHYSICAL SECTOR 32
* LOGICAL SECTORS/LOGICAL TRACK 704 * N
* LOGICAL TRACKS/CYLINDER 2
* LOGICAL TRACKS/DEVICE 1768
*
* MAXIMUM SUSTAINED DATA RATE 1122 K WORDS/SECOND
SPACE 4,10
*** DISK ERROR PROCESSING DONE BY *1HY*.
*
* FOR EACH REQUEST THAT IS PROCESSED, *1HY* KEEPS A COUNTER
* WHICH CONTAINS THE NUMBER OF RETRIES THAT HAVE BEEN
* ATTEMPTED WHILE TRYING TO SUCCESSFULLY PROCESS THE REQUEST.
* WHEN A REQUEST IS COMPLETED *1HY* CHECKS TO SEE IF THE
* ERROR COUNT IS NON-ZERO. *1HY* WILL LOG A BML MESSAGE
* AND INCREMENT THE RECOVERED ERROR COUNT IN THE MST IF THE
* ERROR COUNT IS NON-ZERO.
*
* IF THE ERROR COUNT REACHES *MERC* BEFORE THE REQUEST IS
* SUCCESSFULLY COMPLETED, *1HY* WILL SET THE ERROR FLAGS IN
* THE *CBT*, LOG A FATAL ERROR IN THE BML, AND INCREMENT THE
* UNRECOVERED ERROR COUNT IN THE MST.
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
*CALL COMPCHI
*CALL COMSCPS
QUAL$S SET 0 REMOVE QUALIFICATION OF COMSDFS CONSTANTS
*CALL COMSDFS
LIST X
*CALL COMSHIO
LIST *
QUAL IOU
*CALL COMSIOU
QUAL *
*CALL COMSLSD
*CALL COMSMSC
*CALL COMSMSP
*CALL COMSPIM
*CALL COMS1DS
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
EO EQU 32 EST ORDINAL
UN EQU 33 UNIT NUMBER
UA EQU 34 - 35 UEM ADDRESS / 100
RC EQU 36 REQUEST COUNT
DT EQU 37 DEVICE TYPE
SS EQU 40 SLAVE STATUS FLAGS
PO EQU 41 CURRENT *PUT* ORDINAL
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
ML EQU 60 MESSAGE LENGTH
FC EQU 61 FAULT CODE
CD EQU 62 CHANNEL DATA
RF EQU 63 SPECIAL REQUEST FLAGS
****
SPACE 4,10
** ISI ADAPTOR FUNCTION CODES.
FCMC EQU 0#000 MASTER CLEAR
FCRC EQU 0#100 READ CONTROL REGISTER
FCWC EQU 0#101 WRITE CONTROL REGISTER
FCRM EQU 0#200 READ MASK REGISTER
FCWM EQU 0#201 WRITE MASK REGISTER
FCRE EQU 0#300 READ ERROR STATUS
FCRO EQU 0#400 READ OPERATIONAL STATUS
FCIS EQU 0#500 REQUEST IDLE STATUS
FCRT EQU 0#600 READ *T* REGISTERS
FCWT EQU 0#601 WRITE *T* REGISTERS
FCRS EQU 0#700 READ TEST SEED
FCWS EQU 0#701 WRITE TEST SEED
FCCH EQU 0#800 CLEAR SELECT HOLD
FCSH EQU 0#801 SET SELECT HOLD
FCCS EQU 0#900 CLEAR COMMAND SEQUENCE
FCSS EQU 0#901 SET COMMAND SEQUENCE
FCSO EQU 0#A00 FORCE SYNC OUT
FCPM EQU 0#B00 SET PP MODE
FCCD EQU 0#C00 CLEAR DMA MODE
FCSD EQU 0#C01 SET DMA MODE
FCCE EQU 0#D00 CLEAR ECHO MODE
FCSE EQU 0#D01 SET ECHO MODE
FCCT EQU 0#E00 CLEAR *T* REGISTERS
SPACE 4,10
** FUNCTION WORD OPTION FLAGS.
FOBS EQU 1S8 BUS SLAVE (IHD) SELECT
FONI EQU 1S9 NON-INTERLOCKED MODE
FOTT EQU 1S10 TERMINATE I/O TRANSFER
FOZI EQU 1S11 ZERO-FILL INHIBIT
FOCA EQU 1S12 CLEAR ATTENTION
FODE EQU 1S13 DATA EXCHANGE
FOSR EQU 1S14 SELECTIVE RESET
FOWR EQU 1S15 WRITE SELECT
SPACE 4,10
** *IHD* FUNCTION WORDS.
FWSB EQU 0#80 READ STATUS BLOCK
FWDS EQU 0#90 READ DEVICE STATUS
FWBS EQU FOBS BUS SLAVE (IHD) SELECT
FWCA EQU FOCA CLEAR ATTENTION
FWSN EQU FOCA+FOTT+0#D0 READ SERIAL NUMBER
FWRL EQU FOCA+FOTT+0#FA READ REVISION LEVEL
FWEP EQU FODE+FOCA+FOTT ERROR PROCESSING
FWEL EQU FODE+FOCA+FOTT READ ERROR LOG
FWER EQU FODE+FOCA+FOTT READ ERROR REGISTER
FWRE EQU FODE+FOTT+FONI+FOCA READ EXCHANGE
FWSR EQU FOSR+FOCA SELECTIVE RESET
FWCB EQU FOWR+FOCA WRITE COMMAND BLOCK
FWWE EQU FOWR+FWRE+FOZI WRITE EXCHANGE
SPACE 4,10
** *IHD* COMMAND CODES.
CCRL EQU 0#01+1S15 READ ERROR LOG
CCRI EQU 0#02+1S15 READ ERROR REGISTER IMAGE
CCNO EQU 0#05+1S15 NO OPERATION
CCSD EQU 0#12+1S15 SPIN-DOWN DRIVE
CCSU EQU 0#13+1S15 SPIN-UP DRIVE
CCOW EQU 0#23+1S15 INITIATE OPEN-ENDED WRITE
CCOR EQU 0#35+1S15 INITIATE OPEN-ENDED READ
CCLM EQU 0#53+1S15 LOAD OPERATING MODE PARAMETERS
CCLD EQU 0#54+1S15 LOAD ATTENTION DELAY PARAMETERS
CCD2 EQU 0#70+1S15 EXECUTE LEVEL 2 DIAGNOSTICS
CCRT EQU 0#78+1S15 EXECUTE READ TEST
CCWT EQU 0#79+1S15 EXECUTE WRITE TEST
CCD1 EQU 0#7A+1S15 EXECUTE LEVEL 1 DIAGNOSTICS
SPACE 4,10
** *IHD* COMMAND EXECUTION STATUS.
ESUI EQU 00 *IHD* UNIT IDLE
ESRD EQU 10 READ DATA AVAILABLE
ESBS EQU 20 BUFFER SPACE AVAILABLE
ESCB EQU 40 COMMAND BLOCK INDEPENDENT
ESUA EQU 60 UNSOLICITED ATTENTION
ESCC EQU 70 COMMAND COMPLETE
SPACE 4,10
** *IHD* COMMAND BLOCK PARAMETER WORD VALUES.
PWIT EQU 0#0000 INTEGRITY TEST
PWWT EQU 0#0005 WRITE TEST
PWRT EQU 0#0006 READ TEST
PWADDF EQU 0#0401 ATTENTION DELAY (4KB SECTOR)
PWADDH EQU 0#0101 ATTENTION DELAY (16KB SECTOR)
PWOM EQU 0#3D02 OPERATING MODE
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
ECER EQU 4 CHANNEL DETECTED ERROR
ECCM EQU 5 CHANNEL DETECTED CM ERROR
ECIE EQU 6 ISI CHANNEL ERROR
ECHF EQU 7 CHANNEL HUNG FULL
ETAT EQU 10 ATTENTION TIMEOUT
ETFN EQU 11 CHANNEL FUNCTION TIMEOUT
EDPE EQU 14 DATA PARITY ERROR
EDNR EQU 20 DEVICE NOT READY
EOTC EQU 21 OVER TEMP CONDITION
EIDT EQU 24 INCOMPLETE DATA TRANSFER
EIRQ EQU 30 *IHD* FAILURE
ECBN EQU 31 COMMAND BLOCK NUMBER
EICU EQU 32 INCORRECT UNIT SELECTED
ETSL EQU 33 SELECT TIMEOUT
ESUF EQU 34 SPIN-UP FAILURE
ESDF EQU 35 SPIN-DOWN FAILURE
ETTC EQU 36 TRANSFER COMPLETE TIMEOUT
EUES EQU 37 UNEXPECTED EXECUTION STATUS
ETCB EQU 40 COMMAND BLOCK TIMEOUT
EUDS EQU 41 UNEXPECTED DELAY STATUS
ELOP EQU 42 LOAD OPERATING PARAMETERS FAILURE
EDSA EQU 43 SELECT ACTIVE DROPPED
ETTR EQU 44 *T* REGISTER EMPTY TIMEOUT
EIOS EQU 45 I/O INITIATION ERROR
EIOC EQU 46 I/O COMPLETE ERROR
EDTF EQU 50 DIAGNOSTIC FAULT
EDRA EQU 54 DRIVE RESERVED TO ALTERNATE ACCESS
SPACE 4,10
** DEVICE STATE TABLE DEFINITIONS.
LOC 0
PUTO BSS 1 *PUT* ORDINAL
CREG BSS 1 CONTROL REGISTER IMAGE
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
RQIN BSS 1 REQUEST QUEUE INDEX
RQLN EQU 10 REQUEST QUEUE LENGTH
IORQ BSS RQLN I/O REQUEST QUEUE
CBCT BSS 1 CUMULATIVE BUFFER COUNT
CYLN BSS 1 CYLINDER ON SEEK
TKSN BSS 1 TRACK + SECTOR ON SEEK
ERCT BSS 1 ERROR COUNT
ELEN BSS 1 ERROR LOG ENTRY NUMBER
ELRC BSS 1 ERROR LOG REPETITION COUNT
EREN BSS 1 ERROR REGISTER ENTRY NUMBER
SREQ BSS 1 SPECIAL REQUEST
IPPS BSS 1 I/O PREPROCESSING STATUS
LCMD BSS 1 LAST *IHD* COMMAND
ESAD BSS 1 ERROR STEP ADDRESS
DSTBE BSS 0 LENGTH OF STATE TABLE ENTRY
LOC 0
SPACE 4,15
**** ASSEMBLY CONSTANTS.
CH EQU 16 CHANNEL NUMBER
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
OHYD MAX PPFW,DSTBL DRIVER ORIGIN
* THE FOLLOWING SYMBOLS DEFINE LOCATIONS IN THE I/O
* REQUEST QUEUE (IORQ) OF THE DEVICE STATE TABLE.
* THESE LOCATIONS MAY BE USED ONLY DURING ERROR AND
* SPECIAL REQUEST PROCESSING (NOT DURING I/O PROCESSING).
ENAD EQU IORQ+RQLN-1 ERROR NEXT ADDRESS
CACT EQU ENAD-1 CLEAR ATTENTION COUNT
SIST EQU CACT-1 SYSTEM INTERVENTION STATUS
MIST EQU SIST-1 MANUAL INTERVENTION STATUS
GSST EQU MIST-1 GENERAL SLAVE STATUS
IOST EQU GSST-1 READ WRITE STATUS
ERAD EQU IOST-1 ERROR RETURN ADDRESS
ERRNG ERAD-IORQ CODE DEPENDS ON VALUE
* THE FOLLOWING VALUE IS USED AS A SHIFT COUNT
* TO DETERMINE THE FUNCTION TIMEOUT DELAY (2**N).
FTOS EQU 0 1 MILLISECOND
ERRNG 8D-FTOS VALUE TOO LARGE
.2 DECMIC FTOS+2
FTOD EQU 370S".2" FUNCTION TIMEOUT DELAY
DRFM EQU 1000 DIRECTION FLAG MASK
ILFM EQU 4000 INTERLOCK FLAG MASK
MERC EQU 7 ERROR PROCESSING RETRY COUNT
CSRC EQU MERC/2+1 CHANNEL SWITCH RETRY COUNT
FTRC EQU 3 FUNCTION TIMEOUT RETRY COUNT
DSRC EQU 20D DEVICE SELECT RETRY COUNT
ERLGL EQU 48D ERROR LOG LENGTH
ERRGL EQU 48D ERROR REGISTER LENGTH
SLSTL EQU 7 SLAVE STATUS BLOCK LENGTH
DVSTL EQU 10 DEVICE STATUS BLOCK LENGTH
STSBL EQU SLSTL+DVSTL COMBINED STATUS BLOCK LENGTH
DBUFL MAX ERLGL,ERRGL DATA BUFFER LENGTH
EBUFL EQU 5*10D ERROR MESSAGE BUFFER LENGTH
****
SPACE 4,10
* THE FOLLOWING SYMBOL DEFINITION CONTROLS WHICH (IF ANY)
* OF THE DIAGNOSTICS ARE USED FOR DEVICE VERIFICATION.
*CCVD EQU CCNO NO DIAGNOSTICS
*CCVD EQU CCD1 LEVEL 1 DIAGNOSTICS
*CCVD EQU CCD2 LEVEL 2 DIAGNOSTICS
CCVD EQU CCD2 LEVEL 2 DIAGNOSTICS
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
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
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
FTTE SPACE 4,10
** FTTE - FUNCTION TIMEOUT TABLE ENTRY.
*
* THIS MACRO GENERATES AN ENTRY IN REMOTE LIST *TFTT*
* THAT CONTAINS THE ADDRESS OF AN INSTRUCTION WHICH
* REQUIRES THE FWA OF THE FUNCTION TIMEOUT TABLE.
*
* FTTE ADDR
*
* ENTRY (ADDR) = ADDRESS OF INSTRUCTION.
*
* EXIT ADDRESS IS ADDED TO THE REMOTE BLOCK *TFTT*.
FTT TBLM
PUTE SPACE 4,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
TITLE MAIN PROGRAM.
HYD SPACE 4,10
** HYD - MAIN PROGRAM.
ORG OHYD
RICHI BEGIN CHANNEL INSTRUCTION MODIFICATION
HYDD LJM PRS PRESET DRIVER
HYD EQU *-1
LDM HYD PRESERVE RETURN ADDRESS
STM ADDR,DI
HYD1 LDD SF
ZJN HYD3 IF DEVICE NOT SELECTED
LDC FCCH
RJM FCN CLEAR SELECT HOLD
SOD SF
HYD3 BSS 0
LDC 0 CHECK ERROR PROCESSING
UNSW EQU *-1
NJN HYD5 IF UNIT SWITCH DISABLED
LDN DSTBE
RAD DI ADVANCE DEVICE INDEX
LMC DSTBL
HYDA EQU *-1
NJN HYD5 IF NOT END OF STATUS BLOCK
RJM CCR
ZJN HYD7 IF CHANNEL DOWN
HYD4 LDC DSTB
STD DI RESET START OF STATUS BLOCK
HYD5 RJM CFR
UJN HYD3 CHECK NEXT DEVICE
HYD7 UJN *+2 FIRST PASS
HYDB EQU HYD7
UJN HYD8 DROP PP ON SECOND PASS
SOM HYDB
LDN 0 ENABLE UNIT SWITCH
STM UNSW
LDN PSNI CHANGE PATH THRU *CFR*
STM CFRA
LDC CMP7 RELEASE *PUT* INTERLOCKS
STM CFRB
UJN HYD4 LOOP THRU DEVICE STATE TABLE
HYD8 MONITOR DPPM DROP PP
LJM PPR EXIT TO PPR
TITLE READ / WRITE PROCESSING.
PIO SPACE 4,10
** PIO - READ / WRITE PROCESSING.
PIO BSS 0
LDML PIOB,RW ISSUE SEEK COMMAND
LMC 1S17
RJM WCB WRITE COMMAND BLOCK
* WAIT UNTIL *IHD* HAS RAISED ATTENTION.
LDM PIOC,RW PROCESS ATTENTION
RJM ATT
ZJN PIO2 IF EXPECTED STATUS
LDN EIOS
PIO1 RJM ERR PROCESS ERROR
* INITIATE DATA TRANSFER.
PIO2 LDN 1 SET CHANNEL ACTIVE FOR *CPD*
RJM SCD
LDML PIOD,RW SELECT INFORMATION EXCHANGE
RJM WFW
LDC FCSD SET DMA MODE
RJM FCN
LDM PIOE,RW SET PROCESSOR ADDRESS
STM PIOA
PIO3 RJM 0 PROCESS I/O REQUEST
PIOA EQU *-1
PIO6 NJN PIO1 IF TIMEOUT ERROR
* WAIT - TRANSFER COMPLETE.
PIO7 LCN 1 CHECK OPERATIONAL STATUS
RJM COS
ZJN PIO8 IF TRANSFER COMPLETE
LDN ETTC
UJN PIO1 TRANSFER IN PROGRESS TIMEOUT
PIO8 RJM SFR CHECK FOR CONSECUTIVE REQUEST
STD CB
NJN PIO3 IF ONE MORE REQUEST
* COMPLETE READ / WRITE OPERATIONS.
LDC FCCS CLEAR COMMAND SEQUENCE
RJM FCN
LDN 0 CLEAR CHANNEL ACTIVE
RJM SCD
LDN ESCC PROCESS ATTENTION
RJM ATT
ZJN PIO9 IF *COMMAND COMPLETE*
LDN EIOC
UJN PIO6 ERROR IN I/O COMPLETE STATUS
PIO9 LDD SS CHECK FOR DELAY STATUS
LPN 1
ZJN PIO11 IF NO DELAY STATUS
LDD RW
STM IPPS,DI SAVE READ / WRITE STATUS
LDN 0
STD RW SELECT *IHD* ERROR LOG
STM RWST,DI
LDC PIO10 SET RETURN ADDRESS
STM ESAD,DI
LJM LGE1 DUMP ERROR LOG
PIO10 LDM IPPS,DI RESTORE READ / WRITE STATUS
STD RW
STM RWST,DI
LDN 0 ENABLE ERROR PROCESSING
STM ESAD,DI
PIO11 LJM CMP COMPLETE PROCESSING
PIOB BSS 0 COMMAND CODES
CONL CCOR
CONL CCOW
PIOC BSS 0 EXPECTED EXECUTION STATUS
CON ESRD
CON ESBS
PIOD BSS 0 INFORMATION EXCHANGE FUNCTION WORDS
CONL FWRE
CONL FWWE
PIOE BSS 0 PROCESSOR ADDRESSES
CON RBD
CON WBD
TITLE DOCUMENT UNIT CHARACTERISTICS.
DUC SPACE 4,10
** DUC - DAYFILE UNIT CHARACTERISTICS.
DUC BSS 0
LDN ZERL CLEAR MESSAGE HEADER
CRD WB
LDN MLDY SET DAYFILE CODE
STD WB+4
LDC FWSN
RJM WFW REQUEST SERIAL NUMBER
LDN 2
STD T7 SET BLOCK SIZE
ACN CH
IAM DBUF,CH READ SERIAL NUMBER
RJM CFE
LDC FWRL REQUEST OTHER CHARACTERISTICS
RJM WFW
LDN 6 READ CHARACTERISTICS
ACN CH
IAM DBUF+2,CH READ REVISION LEVEL
RJM CFE
LDC SBUF SET MESSAGE ADDRESS
STM MAD1
ADN 2*5 ASSEMBLY BUFFER ADDRESS
STD T3
LDC 10S12+DBUF UNPACK HEX DATA
RJM UHD
ADN 2 SET MESSAGE LENGTH
STD WB+3
LDM MSGL RESIDUAL BYTE COUNT
STD WB+2
LDC DM0401 MESSAGE ID
STD PB
LDC HI0107 SET SYMPTOM CODE
STD PB+1
LDD DT DEVICE TYPE
SHN 1
ERRNZ PB+3-EO CODE DEPENDS ON VALUE
ADC 2RDF
ERRNZ PB+4-UN CODE DEPENDS ON VALUE
STD PB+2
LDD MA MOVE BASIC MESSAGE DATA
CWM WB,T7
ERRNZ WB+5-PB CODE DEPENDS ON VALUE
SBN 2
CRM SBUF,T7
LDN 0
STD RW ISSUE BML MESSAGE
RJM IBM
LJM CSR CLEAR SPECIAL REQUEST FLAG
TITLE LOG *IHD* ERRORS.
LGE SPACE 4,10
** LGE - LOG *IHD* ERRORS.
*
* ENTRY (RW) = 0 TO LOG ERROR LOG.
* = 1 TO LOG ERROR REGISTER.
LGE BSS 0
LDC CMP SET RETURN ADDRESS
LGE1 STM RADD,DI
LDN 3 SET TIMEOUT VALUE = 3 SECONDS
STD TO
LDML LGEA,RW REQUEST LOG / REGISTER DUMP
RJM WCB
* WAIT UNTIL *IHD* HAS RAISED ATTENTION.
LDN ESRD PROCESS ATTENTION
RJM ATT
ZJN LGE3 IF EXPECTED RESPONSE
LDN EIOS
RJM ERR PROCESS ERROR
* INITIATE DATA TRANSFER.
LGE3 LDML LGEB,RW WRITE FUNCTION WORD
RJM WFW
ACN CH
LDM LGEC,RW SET DUMP LENGTH
STD T7
IAM DBUF,CH INPUT ERROR DATA
RJM CFE
LCN 0 PRESET SEARCH INDEX
STD T6
LDD RW
ZJN LGE5 IF DUMPING ERROR LOG
LDML DBUF
SBML EREN,DI
ZJN LGE7 IF NO CHANGE IN ERROR REGISTER
RAML EREN,DI
UJN LGE9 PROCESS ERROR REGISTER DATA
* SCAN ERROR LOG DATA FOR NEW ENTRIES.
LGE4 SHN -12 POSITION ERROR COUNT
LMM ELEN,DI
ZJN LGE10 IF END OF NEW ENTRIES
LGE5 AOD T6
SHN 2 ADVANCE INDICES
STD T7
ERRNZ ERLGL-ERLGL/4*4 CODE DEPENDS ON VALUE
LMK ERLGL
ZJN LGE8 IF END OF ERROR LOG
LDML DBUF,T7
NJN LGE4 IF NOT EMPTY ENTRY
LGE6 LDD T6
NJN LGE8 IF NEW ENTRIES FOUND
LGE7 LJM LGE12 CLEAR COMMAND SEQUENCE
LGE8 LDML DBUF
SHN -12 RESET ENTRY NUMBER
STM ELEN,DI
LDML DBUF+3 SET REPETITION COUNT
STML ELRC,DI
LGE9 UJN LGE11 PROCESS ERROR DATA
LGE10 LDML DBUF+3,T7 CHECK REPEAT COUNT
SBML ELRC,DI
ZJN LGE6 IF NO CHANGE IN REPETITION COUNT
STML DBUF+3,T7
RAML ELRC,DI UPDATE ERROR LOG REPEAT COUNT
LDN 4
RAD T7 INCLUDE THIS ERROR LOG ENTRY
* PROCESS ERROR INFORMATION.
LGE11 LDC MBUF SET MESSAGE BUFFER ADDRESS
STD T3
LDD T7 ERROR DATA BYTE COUNT
SHN 14
LMC DBUF
RJM UHD UNPACK HEX DATA
SHN 14
LMM LGED,RW ISSUE BML MESSAGE
RJM IBM
LGE12 LDC FCCS CLEAR COMMAND SEQUENCE
RJM FCN
LDN ESCC PROCESS ATTENTION
RJM ATT
ZJN LGE13 IF *COMMAND COMPLETE*
LDN EIOC
RJM ERR ERROR IN I/O COMPLETE STATUS
LGE13 LDC FWCA CLEAR ATTENTION
RJM WFC
LDM RADD,DI SET RETURN ADDRESS
STD PA
LJM 0,PA RETURN TO CALLER
LGEA BSS 0 LOG / REGISTER SELECT OPTIONS
CONL CCRL
CONL CCRI
LGEB BSS 0 DUMP FUNCTION WORDS
CONL FWEL
CONL FWER
LGEC BSS 0 DUMP LENGTHS
CON ERLGL
CON ERRGL
LGED BSS 0 BML SYMPTOM CODES
CON HD0104
CON HD0103
TITLE LOAD OPERATING PARAMETERS.
LOP SPACE 4,10
** LOP - LOAD OPERATING PARAMETERS.
*
* ENTRY (RW) = 0 TO LOAD ATTENTION DELAY PARAMETERS.
* = 1 TO LOAD OPERATING MODE PARAMETERS.
LOP BSS 0
LDC CMP SET RETURN ADDRESS
LOP1 STM RADD,DI
LDD RW
NJN LOP2 IF SETTING OPERATING MODE
LDML LOPA,DT
UJN LOP3 SET ATTENTION DELAY PARAMETERS
LOP2 LDC PWOM SET OPERATING MODE PARAMETERS
LOP3 STML WCBA+4
LDN 3 SET TIMEOUT VALUE = 3 SECONDS
STD TO
LDML LOPB,RW LOAD PARAMETERS
RJM WCB
* WAIT UNTIL *IHD* HAS RAISED ATTENTION.
LDN ESCC PROCESS ATTENTION
RJM ATT
ZJN LOP4 IF NORMAL COMPLETION
LDN ELOP
RJM ERR PROCESS ERROR
LOP4 LDM RADD,DI SET RETURN ADDRESS
STD PA
LJM 0,PA RETURN TO CALLER
LOPA BSS 0 ATTENTION DELAY PARAMETER WORDS
CONL PWADDF
CONL PWADDH
LOPB BSS 0 COMMAND CODES
CONL CCLD
CONL CCLM
TITLE DIAGNOSTIC PROCESSING.
RND SPACE 4,10
** RND - RUN DIAGNOSTICS.
*
* ENTRY (RW) = 0 TO EXECUTE READ TEST.
* = 1 TO EXECUTE WRITE TEST.
* = 2 TO RUN VERIFICATION DIAGNOSTICS.
RND BSS 0
LDC CSR SET RETURN ADDRESS
RND1 STM RADD,DI
LDC RNDD ISSUE OPERATOR MESSAGE
RJM IOM
LDML RNDA,RW SET PARAMETER WORD
STML WCBA+4
LDM RNDB,RW SET TIMEOUT VALUE
STD TO
LDML RNDC,RW INITIATE TEST
RJM WCB
* WAIT UNTIL *IHD* HAS RAISED ATTENTION.
LDN 0 PROCESS ATTENTION
RJM ATT
RND2 LDC MBUF SET ASSEMBLY BUFFER ADDRESS
STD T3
LDC SLSTL*10000+SLST UNPACK HEX DATA
RJM UHD
SHN 14 ISSUE BML MESSAGE
LMC HD0106
ADD RW
ERRNZ HD0106+1-HD0107 CODE DEPENDS ON VALUE
ERRNZ HD0107+1-HD0110 CODE DEPENDS ON VALUE
RJM IBM
LDD RW CHECK OPERATION
SBN 2
ZJN RND3 IF VERIFICATION DIAGNOSTICS
LDD SS
LMN ESCC
LPN 70
ZJN RND3 IF NORMAL COMPLETION
LDN EDTF
RJM ERR PROCESS ERROR
*RND3 LDN 0 CLEAR OPERATOR MESSAGE
RND3 RJM IOM
LDM RADD,DI SET RETURN ADDRESS
STD PA
LJM 0,PA RETURN TO CALLER
RNDA BSS 0 PARAMETER WORDS
CONL PWRT
CONL PWWT
CONL PWIT
RNDB BSS 0 TIMEOUT VALUES (IN SECONDS)
CON 1*60D
CON 1*60D
CON 4*60D+20D
RNDC BSS 0 COMMAND CODES
CONL CCRT
CONL CCWT
CONL CCVD
RNDD DATA C* EQ000, DIAGNOSTIC RUNNING.*
TITLE SPIN-DOWN PROCESSING.
SPD SPACE 4,10
** SPD - SPIN DOWN DRIVE.
SPD BSS 0
LDN 1*60D SET TIMEOUT VALUE = 1 MINUTE
STD TO
LDC CCSD SPIN-DOWN DRIVE
RJM WCB
* WAIT UNTIL *IHD* HAS RAISED ATTENTION.
LDN ESCC PROCESS ATTENTION
RJM ATT
ZJP CSR IF NORMAL COMPLETION
LDN ESDF
RJM ERR PROCESS ERROR
TITLE SPIN-UP PROCESSING.
SPU SPACE 4,10
** SPU - SPIN UP DRIVE.
SPU BSS 0
LDC CSR SET RETURN ADDRESS
SPU1 STM ERAD,DI
LDN 0 GET SLAVE STATUS
RJM GSS
LDML SLST+5 CHECK DEVICE READY
SHN 0-17
ZJN SPU2 IF DISK NOT SPINNING
LDN SPU5-SPU4
SPU2 ADC SPU4 PROCESS SELECTIVE RESET
LJM SRS1
SPU3 RJM HYD RETURN TO MAIN LOOP
* CHECK TIME INTERVAL SINCE LAST SPIN-UP.
SPU4 RJM CMC CHECK MONITOR COMPLETE
LDK HSUEI
STD CM+4 SET SPIN-UP INTERVAL
SHN -14
STD CM+3
LDN UHSS UPDATE EVENT TIME
STD CM+1
MONITOR EATM CHECK EVENT TIME
LDD CM+1
NJN SPU3 IF EVENT INTERVAL NOT ELAPSED
* WRITE COMMAND BLOCK TO POWER UP SPINDLE.
RJM SSD
LDC 3*60D SET TIMEOUT VALUE = 3 MINUTES
STD TO
LDC SPUA ISSUE OPERATOR MESSAGE
RJM IOM
LDC CCSU SPIN-UP DRIVE
RJM WCB
* WAIT UNTIL *IHD* HAS RAISED ATTENTION.
LDN ESCC PROCESS ATTENTION
RJM ATT
ZJN SPU5 IF NORMAL COMPLETION
LDN ESUF
RJM ERR PROCESS ERROR
SPU5 LDN 1 SELECT LOAD OF MODE PARAMETERS
STM RWST,DI
SPU6 STD RW SET PROCESSOR INDEX
LDC SPU7
LJM LOP1 LOAD OPERATING PARAMETERS
SPU7 SOM RWST,DI
PJN SPU6 IF YET TO LOAD DELAY PARAMETERS
LDM SREQ,DI
ZJN SPU8 IF SPIN-UP INITIATED BY DRIVER
LDN DUNF
RJM CPF CLEAR DEVICE UNAVAILABLE
* COMPLETE DEVICE INITIALIZATION.
SPU8 LDM ERAD,DI SET RETURN ADDRESS
STD PA
LDN 0 CLEAR OPERATOR MESSAGE
RJM IOM
LJM 0,PA RETURN TO CALLER
SPUA DATA C* EQ000, SPIN UP PENDING.*
TITLE SELECTIVE RESET PROCESSING.
SRS SPACE 4,10
** SRS - PROCESS SELECTIVE RESET.
SRS BSS 0
LDC CMP4 SET RETURN ADDRESS
SRS1 STM RADD,DI
LDC FWSR ISSUE SELECTIVE RESET
RJM WFW
LDN 6 SET TIMEOUT TO 6 SECONDS
RJM STO
LDN ESCB PROCESS ATTENTION
RJM ATT
ZJN SRS3 IF *COMMAND BLOCK INDEPENDENT*
LDN EUES
SRS2 RJM ERR PROCESS ERROR
SRS3 LDD SS CHECK DELAY STATUS PRESENT
LPN 1
ZJN SRS4 IF NO DELAY STATUS
LDM SLST+3
LPC 377 CHECK DELAY STATUS
LMC 0#83
ZJN SRS5 IF HOST GENERATED RESET
SRS4 LDN EUDS
UJN SRS2 UNEXPECTED DELAY STATUS
SRS5 STM ELEN,DI
STM ELRC,DI CLEAR INTERNAL ERROR COUNTERS
STM EREN,DI
LDM RADD,DI SET RETURN ADDRESS
STD PA
LJM 0,PA RETURN TO CALLER
TITLE SUBROUTINES.
ACE SPACE 4,10
** ACE - ANALYZE CHANNEL ERROR.
*
* ENTRY (RBUF) = CHANNEL STATUS REGISTER.
ACE3 LDN ECCM SET CHANNEL DETECTED CM ERROR
ACE4 STM FALT
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 / ISI CHANNEL ERROR
LPN 2
ZJN ACE1 IF NOT PARITY ERROR
LDN ECPE&ECIE
ACE1 LMN ECIE&ECER FAULT ANALYSIS CODE
ACE2 LMN ECER
UJN ACE4 SAVE FAULT CODE
AME SPACE 4,10
** AME - ATTEMPT MONITOR EXCHANGE.
*
* EXIT (A) = 0.
*
* USES CM - CM+4.
*
* MACROS EXPE.
AME SUBR ENTRY/EXIT
EXPE *
AME1 LDC 6 CHECK FOR (MA) NON-ZERO
CRD CM
LDD CM
ADD CM+1
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 CM
LDD CM+4
ZJN AMEX IF EXCHANGE TAKEN
LDN 28D
SBN 1 WAIT 20 MICROSECONDS ELAPSED
NJN *-1
UJN AME2 RETRY EXCHANGE
AMEA VFD 24/0 (P)
VFD 18/0 (A0)
VFD 18/0 (B0)
AMR SPACE 4,15
** AMR - ACCESS MAINTENANCE REGISTER.
*
* ENTRY (A) = 6/ OC, 12/ RN
* OC = *RMRF* TO READ REGISTER.
* = *WMRF* TO WRITE REGISTER.
* RN = *IOU* REGISTER NUMBER.
*
* EXIT (A) = 0 IF NO CHANNEL ERROR.
* (RBUF) = REGISTER CONTENTS.
*
* USES T4.
*
* CALLS WMC.
AMR1 ACN. MR
LDN 0 OUTPUT NULL PARAMETER
OAN. MR
LDD T4 TRANSMIT REGISTER NUMBER
OAN. MR
LDN 0 WAIT CHANNEL EMPTY
RJM WMC
DCN. MR+40
NJN AMRX IF CHANNEL HUNG FULL
ACN. MR
LDN 10 READ / WRITE REGISTER
AMRA IAM. RBUF,MR
AMR SUBR ENTRY/EXIT
STD T4
SHN -14 POSITION OP CODE
LMD HN
ERRNZ IOUC-100 CODE DEPENDS ON VALUE
FAN. MR
LPN 20
ERRNZ RMRF+20-WMRF CODE DEPENDS ON VALUE
SHN 3
LMC IAMI+MR FORM I/O INSTRUCTION
STM AMRA
UJP AMR1 ACCESS MAINTENANCE REGISTER
ATT SPACE 4,15
** ATT - PROCESS ATTENTION.
*
* ENTRY (A) = EXPECTED EXECUTION STATUS.
*
* EXIT (A) = 0 IF EXPECTED EXECUTION STATUS.
* (SS) = SLAVE STATUS (SET BY *GSS*).
*
* ERROR TO *ERR* IF TIMEOUT.
*
* USES PA.
*
* CALLS CTO, GSS, HYD, R1B, SSD.
ATT CON 0 ENTRY
STM EEST,DI
LDM ATT SAVE RETURN ADDRESS
STM ATTN,DI
ATT1 RJM HYD RETURN TO MAIN LOOP
LDC FCIS
RJM R1B REQUEST IDLE STATUS
STML IDST
LPML TMSK,UN
ZJN ATT2 IF ATTENTION NOT SET
LDM ATTN,DI
STD PA
RJM SSD SELECT SLAVE DEVICE
* RETURN TO CALLER WITH *IHD* STATUS.
LDM EEST,DI
RJM GSS GET SLAVE STATUS
LMM EEST,DI
LJM 0,PA RETURN TO CALLER
ATT2 RJM CTO
MJN ATT1 IF NOT TIMEOUT
LDN ETAT
RJM ERR PROCESS ERROR
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 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
CCR2 DELAY
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
CFE SPACE 4,10
** CFE - CHECK FOR I/O ERROR.
*
* EXIT (A) = 0.
*
* ERROR TO *ERR*.
CFE3 LDC FCRE ACCESS ERROR REGISTER
RJM FCN
ACN CH SIMULATE REGISTER READ
DCN CH+40
CFM *+2,CH CLEAR CHANNEL ERROR FLAG
LDD T1
CFE4 NJN CFE2 IF INCOMPLETE DATA TRANSFER
CFE SUBR ENTRY/EXIT
DCN CH+40
CFM CFE4,CH IF CHANNEL ERROR FLAG CLEAR
STD T1
LDML WFWA CHECK OPERATION IN PROGRESS
LMC FWSR
ZJN CFE3 IF SELECTIVE RESET
LDN ECIE
CFE1 RJM ERR PROCESS CHANNEL ERROR
CFE2 STM RBCT SAVE RESIDUAL BYTE COUNT
LDN EIDT
UJN CFE1 PROCESS ERROR
CFR SPACE 4,10
** CFR - CHECK *PUT* FOR REQUEST.
*
* ENTRY (DI) = DEVICE STATUS BLOCK ADDRESS.
*
* USES T2, CM - CM+4.
*
* CALLS CSD, IIO, ISR, SAP.
*
* MACROS PUTE, SFA.
CFR3 LDD WB EXTRACT UNIT NUMBER
LPN 77
STD UN
LDD WB+1
STD EO SET EST ORDINAL
SFA EST
ADK EQDE READ EST ENTRY
CRD CM
LDD CM+3
LPN 77
SBN 1RF SET DEVICE TYPE
SHN 0-1
STD DT
LDD WB+3 SET *CBT* ORDINAL
STD CB
LDD PA
ZJN CFR4 IF NO REQUEST IN PROGRESS
RJM SAP SELECT ADAPTOR PORT
LDM RWST,DI
STD RW SET READ / WRITE STATUS
UJN CFR6 RETURN TO PROCESSOR
CFR4 LDD T2
ZJN CFR7 IF NO SPECIAL REQUEST
RJM ISR IDENTIFY SPECIAL REQUEST
ZJN CFRX IF UNKNOWN REQUEST
LDN 0
STD CB
CFR5 RJM CSD CONNECT TO *IHD*
ZJN CFRX IF UNIT UNAVAILABLE
* EXIT TO PROCESSOR AS APPLICABLE WITH -
* (PO) = *PUT* ORDINAL.
* (CB) = *CBT* ORDINAL.
* (EO) = EST ORDINAL.
* (RW) = READ / WRITE STATUS.
* (DT) = DEVICE TYPE.
* (UN) = UNIT NUMBER.
* (RF) = SPECIAL REQUEST FLAGS.
* (WB - WB+4) = *UNCT* WORD OF *PUT* ENTRY.
CFR6 LJM 0,PA RETURN TO PROCESSOR
CFR7 LDD CB INITIATE I/O
RJM IIO
NJN CFR5 IF I/O ENABLED ON THIS ACCESS
CFR SUBR ENTRY/EXIT
LDI DI
ERRNZ PUTO CODE DEPENDS ON VALUE
STD PO
SHN PUTLS READ *PUT* ENTRY
PUTE *
ADC PILL GET INTERLOCK STATUS
CRD CM
SBN PILL-UNCT FETCH UNIT CONTROL WORD
CRD WB
LDM ADDR,DI CHECK REQUEST PRESENT
STD PA
NJN CFR2 IF REQUEST IN PROGRESS
LDD CM+3
STD RF SET SPECIAL REQUESTS
DVRF BITSET DVDF-DVDF/12D*12D
LPN 77&DVRF EXTRACT OPERATOR REQUESTS
STD CM+3
SCN 1 CLEAR DEVICE UNAVAILABLE
STD T2
NJN CFR1 IF SPECIAL REQUEST PRESENT
LMD CM+3
NJN CFRX IF DEVICE UNAVAILABLE FOR I/O
ADD WB+3
ZJN CFRX IF NO I/O REQUEST
CFR1 LDD CM+4
CFRA ZJN CFR2 IF UNIT NOT INTERLOCKED
LMD OA
NJN CFRX IF NOT INTERLOCKED BY THIS DRIVER
CFR2 LJM CFR3
CFRB EQU *-1 (MODIFIED FOR TERMINATION PROCESSING)
CMC SPACE 4,10
** CMC - CHECK MONITOR COMPLETE.
*
* EXIT (A) = (CM) = 0.
*
* USES CM - CM+4.
*
* CALLS AME.
*
* MACROS DELAY.
CMC SUBR ENTRY/EXIT
CMC1 LDD OA
CRD CM
LDD CM
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 CM
LDD OA UPDATE OUTPUT REGISTER
CWD CM
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 *HYD3*.
* (SF) = 0.
* (UC) = UNIT ACTIVITY COUNT DECREMENTED.
*
* USES WB+4.
*
* CALLS CMC, DCB, FCN, IEM, WFC.
CMP LDM ERCT,DI
ZJN CMP3 IF NO ERRORS
AOM ERCT,DI
CMP1 LDN HD0111-HD0100
RJM IEM ISSUE FINAL MESSAGE
* LDN 0
CMP2 STM ERCT,DI CLEAR ERROR COUNT
CMP3 STM IPPS,DI
CMP4 LDD SF
ZJN CMP5 IF DEVICE NOT SELECTED
LDC FWCA
RJM WFC CLEAR ATTENTION
LDC FCCH
RJM FCN CLEAR SELECT HOLD
SOD SF
CMP5 LDD RW SET DATA TRANSFER DIRECTION
SHN 13-0
LMM CBCT,DI APPEND CUMULATIVE BUFFER COUNT
STD WB+4
LDM RQIN,DI SET UP *CBT* LIST
LMC 4000
RJM DCB DELINK BUFFERS / RELEASE UNIT INTERLOCK
LDD WB+3
SHN 0-13
ZJN CMP6 IF UNIT INTERLOCK NOT RELEASED
SOD UC
LDN 0 CLEAR REQUEST IN PROGRESS
CMP6 STM ADDR,DI
STM CBCT,DI CLEAR *CBT* COUNT
STM RQIN,DI
STM SREQ,DI
RJM CMC
LJM HYD3 RETURN
CMPA EQU *-1
CMP7 LDN 0 SET REQUEST QUEUE EMPTY
STM RQIN,DI
UJP CMP5 RELEASE UNIT INTERLOCK
COS SPACE 4,10
** COS - CHECK OPERATIONAL STATUS.
*
* ENTRY (A) = POSITIVE MASK TO RETURN ON BIT(S) SET.
* = NEGATIVE MASK TO RETURN ON BIT(S) CLEAR.
*
* EXIT (A) = 0 IF CONDITION SET.
* .LT. 0 IF TIMEOUT.
*
* ERROR TO *ERR* IF ADAPTOR DROPPED SELECT ACTIVE.
*
* USES T2, T3.
*
* CALLS CTO, R1B.
COS3 SHN 12
LPDL T2 CHECK CONDITION MET
LMDL T3
ZJN COSX IF CONDITION SET
RJM CTO
MJN COS2 IF NOT TIMEOUT
LCN 0
COS SUBR ENTRY/EXIT
STDL T2
PJN COS1 IF RETURN ON BIT(S) SET
LMC -0
STDL T2 COMPLEMENT MASK
LDN 0
COS1 STDL T3
COS2 LDC FCRO GET OPERATIONAL STATUS
RJM R1B
SHN 21-11
MJN COS3 IF *SELECT* ACTIVE
LDN EDSA
RJM ERR PROCESS ERROR
CPF SPACE 4,10
** CLEAR *PUT* FLAG.
*
* ENTRY (A) = BIT NUMBER TO CLEAR IN *PILL* WORD.
*
* EXIT (A) = 0.
*
* USES T6, T7, CM - CM+4.
*
* CALLS CMC.
*
* MACROS MONITOR, PUTE.
CPF SUBR ENTRY/EXIT
SHN 6
STD T7 SET BIT NUMBER
LDC PILL*100+1
STD T6 WORD OFFSET + FIELD WIDTH
RJM CMC
* LDN 0 CLEAR UNUSED BYTE
STD CM+2
LDD MA STORE MESSAGE BUFFER PARAMETERS
CWD T6
LDN 1 PARAMETER WORD COUNT
STD CM+1
LDD PO
SHN PUTLS
PUTE *
ADC 0 SET BASE *PUT* ENTRY ADDRESS
STD CM+4
SHN -14
STD CM+3
MONITOR UTEM CLEAR *PUT* FLAG
* LDN 0
UJN CPFX RETURN
CSD SPACE 4,15
** CSD - CONNECT TO SLAVE DEVICE.
*
* ENTRY (UN) = UNIT NUMBER.
* (CB) = *CBT* ORDINAL IF I/O REQUEST.
* (CM - CM+4) = EST ENTRY.
*
* EXIT (A) .NE. 0 IF UNIT CONNECTED.
*
* USES T2, T7, CM - CM+4.
*
* ERROR TO *ERR* IF SELECT REJECT.
*
* CALLS R1B, SSD, SUI.
*
* MACROS CBTE.
CSD SUBR ENTRY/EXIT
LDC 0
CHRQ EQU *-1
NJN CSD4 IF CHANNEL REQUESTED
STM LCMD,DI
* CHECK EST ENTRY FOR CHANNEL DOWN.
LDD CM+1 EXTRACT CHANNEL
LMD IR+4
LPN 77
ZJN CSD1 IF PATH SERVICED BY THIS DRIVER
LDN 1
CSD1 ADN CM+1 SET CHANNEL BYTE ADDRESS
STD T2
LDI T2 CHECK CHANNEL STATE
SHN -11
LMN 4
ZJN CSD6 IF CHANNEL UP AND AVAILABLE
SCN 1
NJN CSD4 IF CHANNEL DOWN OR NOT ENABLED
LDD CB
ZJN CSDX 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 CSDX IF NOT CHANNEL SPECIFIC REQUEST
LDD T7 CHECK CHANNEL
SHN -6
LMD IR+4
ZJN CSD6 IF REQUEST FOR THIS DRIVER
CSD4 LDN 0
CSD5 UJP CSDX RETURN
CSD6 RJM SUI SET UNIT INTERLOCK
NJN CSD4 IF ASSIGNED ELSEWHERE
LDC FCIS
RJM R1B READ IDLE STATUS
STML IDST
RJM SSD SELECT *IHD*
* READ BIT SIGNIFICANT RESPONSE.
LDC FCSO FORCE SYNC OUT
RJM R1B
STML BSRN SAVE RESPONSE
LPML TMSK,UN
NJN CSD5 IF CORRECT UNIT SELECTED
LDN EICU
RJM ERR PROCESS ERROR
CSR SPACE 4,10
** CSR - CLEAR SPECIAL REQUEST.
*
* EXIT TO *CMP*.
*
* CALLS CPF.
CSR BSS 0 ENTRY
LDM SREQ,DI
ZJN CSR1 IF REQUEST SELECTED BY DRIVER
RJM CPF
CSR1 LJM CMP COMPLETE PROCESSING
CTO SPACE 4,10
** CTO - CHECK TIMEOUT.
*
* ENTRY (PO) = *PUT* ORDINAL.
*
* EXIT (A) .LT. 0 IF NOT TIMEOUT.
*
* USES T6, T7, CM - CM+4.
*
* MACROS FTTE.
CTO SUBR ENTRY/EXIT
LDD PO
SHK FTTLS READ *FTT* ENTRY
FTTE *
ADC 0
CRD CM
LDC RTCL FETCH CURRENT CLOCK VALUE
CRD T6
LDD T6 CHECK ELAPSED TIME
SBD CM+3
MJN CTOX IF NOT TIMEOUT
SHN 14
ADD T7
SBD CM+4
UJN CTOX RETURN
DCB SPACE 4,15
** DCB - DELINK CONTROL BUFFERS.
*
* ENTRY (A) = VALUE FOR BYTE 3 OF *BIOM* REQUEST.
* (RW) = READ / WRITE STATUS.
*
* EXIT (A) = 0.
* (WB+3) = BYTE 3 OF *BIOM* REQUEST.
*
* USES RC, T2, T3, WB+3.
*
* CALLS IMR, SLB.
DCB1 LDM IORQ,DI EXTRACT *CBT* ORDINAL
STD PB
RJM SLB SET LINKAGE BITS
SOM RQIN,DI
ZJN DCB3 IF QUEUE NOW EMPTY
STD T3
LDD DI ADDRESS OF FIRST QUEUE ENTRY
ADN IORQ+1
STD T2
DCB2 LDI T2 MOVE STACK DOWN
STM -1,T2
AOD T2 ADVANCE LIST ADDRESS
SOD T3
NJN DCB2 IF NOT END OF MOVE
SOD RC
NJN DCB1 IF BUFFER COUNT NOT SATISFIED
DCB3 LDN DCBS
RJM IMR INITIATE MONITOR REQUEST
* LDN 0
DCB SUBR ENTRY/EXIT
STD WB+3
ZJN DCBX IF NULL REQUEST
LPN 77
ZJN DCB3 IF NO BUFFERS TO PROCESS
STD RC
LDD RW
ZJN DCB1 IF READ OPERATION
LDN 0
SBD RC ADJUST REQUEST QUEUE ENTRY COUNT
RAM RQIN,DI
UJN DCB3 ISSUE MONITOR REQUEST
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
EIO SPACE 4,10
** EIO - ENTER I/O REQUEST QUEUE.
*
* ENTRY (A) = *CBT* ORDINAL.
* (RW) = READ / WRITE STATUS.
*
* EXIT (PB) = *CBT* ORDINAL.
*
* USES T5.
*
* CALLS DCB, SLB.
EIO1 RJM SLB SET LINKAGE BITS
EIO2 AOM CBCT,DI
AOM RQIN,DI ADVANCE ENTRY COUNT
SBM EIOA,RW
MJN EIOX IF QUEUE NOT FULL
LDN 1
RJM DCB DELINK 1ST BUFFER IN LIST
EIO SUBR ENTRY/EXIT
STD PB
LDD RW
NJN EIO1 IF WRITE OPERATION
LDM RQIN,DI
ADD DI ADDRESS OF NEXT AVAILABLE SLOT
STD T5
LDD PB ENTER *CBT* ORDINAL IN QUEUE
STM IORQ,T5
UJN EIO2 ADVANCE ENTRY COUNT
EIOA BSS 0 DELINKING CRITERIA
CON 3
CON 10
ERR SPACE 4,15
** ERR - PROCESS ERRORS.
*
* ENTRY (A) = FAULT ANALYSIS CODE.
* (CR) = CHANNEL RESERVATION STATUS.
*
* EXIT TO *CMP*.
*
* USES PA, T2, T3, T5, CM - CM+4, WB - WB+4.
*
* CALLS ACE, AMR, GDS, GSS, IEM, IMR, ISF, RCR, SCD, SET,
* SRS, STF, STO, UHD, WFC.
ERR CON 0 ENTRY
STD FC
LDM ESAD,DI
ZJN ERR1 IF NEW PASS THRU PROCESSOR
STD PA
LJM 0,PA CONTINUE
ERR1 STD T5 CLEAR CHANNEL ACTIVE
RJM SCD
AOM UNSW DISABLE UNIT SWITCH
LDC ERR5
STM ESAD,DI SET ERROR STEP ADDRESS
* GENERATE BML ERROR MESSAGE.
LDD FC SET INITIAL FAULT CODE
STM CODE
STM FALT
LDD DT SET SECTORS TRANSFERED COUNT
SHN 21-0
LMM CBCT,DI
MJN ERR2 IF LARGE SECTOR DEVICE
SHN 2
ERRNZ PSBFDH*4-PSBFDF CODE DEPENDS ON VALUE
ERR2 STM STCT
LDM CYLN,DI SET SEEK ADDRESS - CYLINDER
STM ICYL
LDM TKSN,DI SEEK ADDRESS - TRACK AND SECTOR
STM ITAS
ERR3 LCN 0 PRESET INTERMEDIATE FAULT CODES
STM FCS1
STM FCS2
STM FCS3
LDML LCMD,DI SET LAST *IHD* COMMAND
STML LSCC
LDM FCNA MOVE LAST CHANNEL FUNCTION
STM LCFN
SCF. ERR3,MR ACQUIRE MAINTENANCE REGISTER ACCESS
CON LDCI
IAN CH (FORCE CHANNEL TABLE ENTRY)
ORG *-1
CON RCSR+CH
RJM AMR READ CHANNEL STATUS REGISTER
DCN. MR+40
CCF. *+2,MR CLEAR CHANNEL FLAG
LDN 0
STD T2 CLEAR INDICES
STD T3
RJM ACE ANALYZE CHANNEL ERROR
ERR4 LDM RBUF,T2
SHN 10 PACK 8-BIT DATA
LMM RBUF+1,T2
STML RBUF,T3
AOD T3 ADVANCE INDEX
SHN 1
STD T2 SET INDEX
LMN 10
NJN ERR4 IF MORE REGISTER DATA
LDN ZERL
CRM RBUF+4,ON CLEAR UNUSED BYTES
LDD CR
ZJN ERR6 IF FUNCTION TIMEOUT
LDN 0
STD FC CLEAR PRESENT FAULT CODE
LDC FCRT
RJM FCN ISSUE READ *T* REGISTER FUNCTION
ACN CH
LDN 3 INPUT REGISTER CONTENTS
IAM RBUF+7,CH
DCN CH+40
ERR5 LDD FC SET INTERMEDIATE FAULT CODE
STM FCS1
ERR6 LDC EBUF+2*5 SET MESSAGE ASSEMBLY ADDRESS
STD T3
LDC 17S12+DBUF UNPACK HEX DATA
RJM UHD
ADN 2 APPEND LENGTH OF NON-HEX DATA
STD ML
LDC ERR28 SET NEXT ERROR STEP
STM ESAD,DI
LDN 0 CLEAR CHECK ATTENTION COUNT
STM CACT,DI
STM RSVD CLEAR RESERVED FIELD
STD FC
LDM RWST,DI SAVE READ / WRITE STATUS
STM IOST,DI
LDD CR
ZJP ERR51 IF FUNCTION TIMEOUT
RJM RCR
LDM LCMD,DI
ZJN ERR14 IF NO ACTIVE COMMAND
ERR10 AOM CACT,DI ADVANCE CHECK ATTENTION COUNT
LMN 6
ZJN ERR14 IF DEVICE LOCKED UP
LDN 3
RJM STO SET TIMEOUT = 3 SECONDS
LDN 0
RJM ATT PROCESS ATTENTION
ERR11 SHN -3
STD PA
LDM ERRB,PA SET PROCESSOR ADDRESS
ERR12 STD PA
LJM 0,PA EXIT TO PROCESSOR
ERR13 LDC FWEP CLEAR ATTENTION
RJM WFC
UJN ERR10 LOOP FOR NEXT ATTENTION
ERR14 RJM SSD SELECT SLAVE DEVICE
LDC ERR51
LJM SRS1 PROCESS SELECTIVE RESET
ERR16 LDC ERR51
UJN ERR20 SET POST PROCESSING ADDRESS
ERR17 LDC ERR38
UJN ERR20 SET POST PROCESSING ADDRESS
ERR18 LDN 0 CLEAR INTERMEDIATE FAULT CODE
STM FCS2
LDM ENAD,DI
UJN ERR12 EXIT TO POST PROCESSOR
ERR19 LDC ERR30 SET POST PROCESSING ADDRESS
ERR20 STM ENAD,DI
LDM SLST+1 SAVE SYSTEM INTERVENTION CODE
STM SIST,DI
LDM SLST+2 SAVE MANUAL INTERVENTION CODE
STM MIST,DI
LDD SS SAVE EXECUTION STATUS
STM GSST,DI
RJM GDS GET DEVICE STATUS
LDC FWCA
RJM WFC CLEAR ATTENTION
LDC EBUF+6*5
STD T3 SET DESTINATION DATA ADDRESS
LDC STSBL*10000+SLST
RJM UHD UNPACK HEX DATA
RAD ML
LDN 1 SELECT DUMP OF ERROR REGISTER
STM RWST,DI
ERR24 STD RW SET PROCESSOR INDEX
LDC ERR25
LJM LGE1 LOG *IHD* ERRORS
ERR25 SOM RWST,DI
PJN ERR24 IF YET TO DUMP ERROR LOG
LJM ERR18 EXIT TO POST PROCESSOR
ERR28 LDD FC SET INTERMEDIATE FAULT CODE
STM FCS2
LDC ERR50 SET ERROR STEP
STM ESAD,DI
LJM ERR14 PROCESS SELECTIVE RESET
ERR30 LDM GSST,DI CHECK EXECUTION STATUS
LPN 6
ZJP ERR51 IF NO INTERVENTION FLAGS
* ANALYZE INTERVENTION STATUS.
SHN -2 SET LIST INDEX
STD T2
ADN MIST SET STATUS WORD ADDRESS
ADD DI
STD T3
LDM ERRE,T2 SET LIST ADDRESS
STD T2
ERR31 LDN 2 ADVANCE LIST ADDRESS
RAD T2
LDI T2
ZJN ERR32 IF END OF LIST
LMI T3
LPC 377
NJN ERR31 IF NOT MATCHING INTERVENTION CODE
* ATTEMPT ERROR SPECIFIC RECOVERY.
ERR32 LDM 1,T2 SET PROCESSOR ADDRESS
STD T2
LDC ERR50 SET NEXT ERROR STEP
STM ESAD,DI
LDN 0
LJM 0,T2 EXIT TO PROCESSOR
ERR36 LDN EDNR SET NOT READY ERROR
STM FALT
LDML SLST+5 CHECK SLAVE STATUS
SHN 0-17
NJN ERR50 IF DISK SPINNING
LDM ERCT,DI
ZJN ERR38 IF INITIAL RETRY
LMN CSRC
NJN ERR50 IF NOT FIRST ALTERNATE RETRY
ERR38 LDC ERR50
LJM SPU1 PROCESS SPIN UP
ERR40 LDM IOST,DI RESTORE READ / WRITE STATUS
STM RWST,DI
STD RW
LDC ERR44 RUN DIAGNOSTIC
LJM RND1
ERR44 RJM STF PROCESS MEDIA ERROR
LDN EDPE&EOTC
* UJN ERR46 SET DATA PARITY ERROR
ERR46 LMN EOTC&ECPE
* UJN ERR47 SET OVER-TEMP CONDITION ERROR
ERR47 LMN ECPE&EDTF
* UJN ERR48 SET CHANNEL PARITY ERROR
ERR48 LMN EDTF SET DIAGNOSTIC TIMEOUT ERROR
ERR49 STM FALT
* COMPLETE ERROR PROCESSING.
ERR50 LDD FC SET INTERMEDIATE FAULT CODE
STM FCS3
ERR51 LDM IOST,DI RESTORE READ / WRITE STATUS
STD RW
LDN 0 CLEAR ERROR STEP
STM ESAD,DI
STM UNSW ENABLE UNIT SWITCH
AOM ERCT,DI ADVANCE ERROR COUNT
LMN MERC
NJN ERR53 IF NOT RETRY LIMIT
ERR52 AOM MISC
RJM SEC SET ERROR CODE IN *CBT*
LJM CMP1 COMPLETE PROCESSING
ERR53 LDN HD0100-HD0100
RJM IEM ISSUE ERROR MESSAGE
LDM FALT
LMN ETFN
ZJN ERR52 IF FUNCTION TIMEOUT ERROR
LMN EDTF&ETFN
ZJN ERR52 IF DIAGNOSTIC FAILURE
LDM SREQ,DI
NJN ERR54 IF NOT I/O PROCESSING
LDM ERCT,DI
LMN CSRC
ZJN ERR56 IF TIME FOR CHANNEL SWAP
LMN 1&CSRC
NJN ERR54 IF NOT FIRST RETRY
LDM RQIN,DI
STD WB+3
LDN IDSS INHIBIT DATA STREAMING
RJM IMR
ERR54 LDC 4000 DISABLE RELEASE OF UNIT INTERLOCK
STM RQIN,DI
LJM CMP4 RETRY REQUEST
ERR56 RJM SEC FORCE ALTERNATE CHANNEL SELECTION
LDN SSES
RJM ISF SET SUSPECT STATE
* LDN 0
LJM CMP2 COMPLETE PROCESSING
ERRB BSS 0
CON ERR14 (IHD IDLE)
CON ERR13 READ DATA AVAILABLE
CON ERR13 BUFFER SPACE AVAILABLE
CON ERR14 (UNDEFINED)
CON ERR16 COMMAND BLOCK INDEPENDENT
CON ERR14 (UNDEFINED)
CON ERR17 UNSOLICITED ATTENTION
CON ERR19 COMMAND COMPLETE
ERRC BSS 0 MANUAL INTERVENTION CODES
CON 0#C1,ERR36 DISK NOT READY
CON 0#63,ERR47 ISI I/O PARITY ERROR
CON 0#6A,ERR48 DIAGNOSTIC FAILURE
CON 0#6B,ERR46 TEMPERATURE FAULT
CON 0000,ERR51
ERRD BSS 0 SYSTEM INTERVENTION CODES
CON 0#41,ERR40 UNABLE TO READ HEADER
CON 0#42,ERR40 HEADER ERROR
CON 0#43,ERR40 UNABLE TO READ DATA
CON 0#A6,ERR48 DIAGNOSTIC FAILURE
CON 0000,ERR51
ERRE BSS 0 LIST ADDRESSES
CON ERRC-2 MANUAL INTERVENTION CODES
CON ERRD-2 SYSTEM INTERVENTION CODES
FCN SPACE 4,10
** FCN - ISSUE FUNCTION.
*
* ENTRY (A) = FUNCTION CODE.
*
* ERROR TO *ERR*.
*
* CALLS RCS.
FCN SUBR ENTRY/EXIT
STM FCNA
LDN FTRC SET INTERNAL REPEAT COUNT
STD T0
FCN1 FNC 0,CH ISSUE FUNCTION
FCNA EQU *-1
LDC FTOD
FCN2 IJM FCNX,CH IF FUNCTION ACCEPTED
SBN 1
NJN FCN2 IF NOT TIMED OUT
DCN CH+40
SOD T0
NJN FCN1 IF RETRY COUNT NOT SATISFIED
STD SF
* LDN 0
RJM RCS GLOBALLY DOWN CHANNEL
LDN ETFN
RJM ERR PROCESS ERROR
GDS SPACE 4,10
** GDS - GET DEVICE STATUS.
*
* CALLS CFE, FCN, WFW.
GDS SUBR ENTRY/EXIT
LDC FWDS
RJM WFW WRITE FUNCTION WORD
ACN CH
LDN DVSTL INPUT DEVICE STATUS
IAM DVST,CH
RJM CFE
LDC FCCS CLEAR COMMAND SEQUENCE
RJM FCN
UJN GDSX RETURN
GSS SPACE 4,15
** GSS - GET SLAVE STATUS.
*
* ENTRY (A) = 0 TO IGNORE INTERVENTION STATUS.
*
* EXIT (A) = EXECUTION STATUS.
* (SS) = STATUS FLAGS.
*
* ERROR TO *ERR* IF *INTERVENTION REQUIRED*.
*
* USES T2.
*
* CALLS CFE, WFW.
GSS5 LMN ESCC RESTORE EXECUTION STATUS
GSS SUBR ENTRY/EXIT
STD T2
LDC FWSB
RJM WFW WRITE FUNCTION WORD
ACN CH
LDN SLSTL INPUT STATUS BLOCK
IAM SLST,CH
RJM CFE
LDML SLST CHECK COMMAND BLOCK NUMBER
LPN 17
NJN GSS4 IF INVALID BLOCK NUMBER
LDML SLST
STML EXST
SHN 0-10 EXTRACT STATUS FLAGS
STD SS
LPN 70 CHECK EXECUTION STATUS
LMN ESCC
NJN GSS5 IF NOT *COMMAND COMPLETE*
LDD T2
GSS1 ZJN GSS5 IF NO INTERVENTION STATUS ANALYSIS
LDD SS
LPN 6
ZJN GSS5 IF NO INTERVENTION FLAGS
GSS2 LDN EIRQ
GSS3 RJM ERR PROCESS ERROR
GSS4 LDN ECBN
UJN GSS3 COMMAND BLOCK NUMBER
IBM SPACE 4,20
** IBM - ISSUE BML MESSAGE.
*
* ENTRY (A) = 6/ ML, 12/ SC
* ML = MESSAGE LENGTH (CM WORD COUNT).
* SC = MESSAGE SYMPTOM CODE.
* (RW) = READ / WRITE FLAG.
* (DT) = DEVICE TYPE.
* (EO) = EST ORDINAL.
* (UN) = UNIT NUMBER.
* (MISC) = 1 IF UNRECOVERED ERROR.
*
* EXIT (A) = (MISC) = 0.
*
* USES T2, T3.
*
* CALLS CMC, IMB, UEC.
IBM SUBR ENTRY/EXIT
LMC D1HY*400
STM BMLM+1
SHN -14 SET MESSAGE LENGTH
STD T2
ZJN IBM1 IF BASIC MESSAGE ONLY
LDN 1
IBM1 STD T3
LDD DT
ADC RM0120 SET MESSAGE ID
STM BMLM
LDML CREG,DI SET PORT NUMBER
SHN 6-16
* LPC 100
STM PORT
LDD UN SET UNIT NUMBER
STM UNIT
LDD EO SET EST ORDINAL
STM ESTO
LDM ERCT,DI SET RETRY COUNT
SHN 5
LMD RW MERGE READ / WRITE FLAG
SHN 1
RAM MISC
RJM CMC CHECK MONITOR COMPLETE
LDM MAD1
NJN IBM3 IF HEADER NOT REQUIRED
LDD T2 PARTIAL MESSAGE LENGTH
ADN 3 HEADER LENGTH
STM MSGL+1 COMPLETE MESSAGE LENGTH
LDM MAD2 MESSAGE ADDRESS
STD T0
LDN 3*5-1
STD T3
IBM2 SOD T0 MOVE HEADER TO MESSAGE
LDM MSGP,T3
STI T0
SOD T3
PJN IBM2 IF MOVE NOT COMPLETE
LDD T0
IBM3 RJM IMB ISSUE MESSAGE TO BUFFER
RJM UEC UPDATE MST ERROR COUNT
LDC MBUF
STM MAD2 RESTORE MESSAGE ADDRESS
LDN 0
STM MAD1
STM MISC CLEAR UNRECOVERED ERROR STATUS
* LDN 0
LJM IBMX RETURN
MAD1 CON 0 MESSAGE ADDRESS IF MESSAGE HAS HEADER.
MAD2 CON MBUF MESSAGE ADDRESS IF HEADER MUST BE ADDED.
MSGP CON 0 MESSAGE PREFIX
CON 0
MSGL CON 0,0 MESSAGE LENGTH
CON MLDY MESSAGE TYPE
BMLM BSS 0 BML MESSAGE PREFIX
VFD 12/RM0120 887 MESSAGE ID
VFD 12/ SYMPTOM CODE
VFD 6/,6/ CPP NUMBER, CHANNEL NUMBER
UNIT VFD 6/0,6/ UNUSED, UNIT NUMBER
PORT VFD 6/,6/0 PORT NUMBER, UNUSED
ESTO VFD 12/ EST ORDINAL
MISC VFD 6/,4/0,2/ RETRY COUNT, UNUSED, WRITE + REC FLAGS
VFD 12/0 UNUSED
MFID VFD 12/ MAINFRAME ID
VFD 12/0 UNUSED
IEM SPACE 4,10
** IEM - ISSUE BML ERROR MESSAGE.
*
* ENTRY (A) = SYMPTOM CODE OFFSET FROM *HD0100*.
* (ML) = MESSAGE LENGTH (CM WORD COUNT).
*
* EXIT (A) = (ML) = 0.
*
* CALLS IBM.
IEM SUBR ENTRY/EXIT
ADD HN
ERRNZ HD0100-100 CODE DEPENDS ON VALUE
STD T0
LDC EBUF SET MESSAGE ADDRESS
STM MAD2
LDD ML MESSAGE LENGTH
SHN 14
LMD T0
RJM IBM ISSUE ERROR MESSAGE
* LDN 0
STD ML
UJN IEMX 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.
* (TO) = SEEK TIMEOUT VALUE.
* (NR - NR+4) = PHYSICAL ADDRESS OF REQUEST.
*
* USES T1 - T7.
*
* CALLS PEF.
*
* MACROS CBTE.
IIO3 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 IIO2 IF NO FLAGS
SHN -1
STD RW PROCESS ERROR FLAGS
RJM PEF
IIO1 NJN IIO3 IF I/O PREPROCESSING INDICATED
IIO2 LDD NR+1
STM WCBA+5 SET CYLINDER IN COMMAND BLOCK
STM CYLN,DI
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 BLOCK
STML WCBA+6
LDD T3
SHN 22-11 EXTRACT WRITE DATA FLAG
LPN 1
STM RWST,DI SET READ / WRITE STATUS
STD RW
LDN 3
STD TO SEEK TIMEOUT = 3 SECONDS
LDC PIO
UJN IIO1 SET PROCESSOR ADDRESS
IMR SPACE 4,15
** IMR - INITIATE MONITOR REQUEST.
*
* ENTRY (A) = *BIOM* SUBFUNCTION.
* (PO) = *PUT* ORDINAL.
* (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
LDD PO SET *PUT* ORDINAL
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.
* (EO) = EST ORDINAL.
*
* USES T1.
*
* CALLS C2D.
IOM1 LDD CP CLEAR THE MESSAGE
ADN MS2W
CWD T1
IOM SUBR ENTRY/EXIT
STD T1
ZJN IOM1 IF CLEAR MESSAGE CALL
STM IOMA
LDD EO CONVERT EST ORDINAL
RJM C2D
STM 2,T1 SET IN MESSAGE
LDD EO
SHN -6
LMC 2RQ0
STM 1,T1
LDD CP STORE OPERATOR MESSAGE
ADN MS2W
CWM **,TR
IOMA EQU *-1
UJN IOMX RETURN
ISF SPACE 4,15
** ISF - ISSUE *SEQM* FUNCTION.
*
* ENTRY (A) = *SEQM* SUBFUNCTION.
* (EO) = EST ORDINAL.
* (IR+4) = CHANNEL NUMBER.
*
* EXIT (A) = 0.
*
* USES T2, CM - CM+4.
*
* CALLS CMC.
*
* MACROS MONITOR.
ISF SUBR ENTRY/EXIT
STD T2
RJM CMC CHECK MONITOR COMPLETE
LDD EO
STD CM+1 SET EST ORDINAL
LDD T2
STD CM+2 SET *SEQM* SUBFUNCTION
LDD IR+4
STD CM+3 SET CHANNEL NUMBER
MONITOR SEQM
* LDN 0
UJN ISFX RETURN
ISR SPACE 4,10
** ISR - IDENTIFY SPECIAL REQUEST.
*
* ENTRY (A) = SPECIAL REQUEST FLAGS.
*
* EXIT (A) = 0 IF UNIDENTIFIED FLAG.
* (PA) = PROCESSOR ADDRESS.
* (RW) = SPECIAL REQUEST INDEX.
ISR2 LDM ISRA,RW SET SPECIAL REQUEST PROCESSOR
STD PA
ISR SUBR ENTRY/EXIT
SHN -1
STD T0 SAVE FLAGS
LCN 0
ERRNZ DUNF+1-SPDF CODE DEPENDS ON VALUE
STD RW
ISR1 AOD RW ADVANCE INDEX
LDD T0
SHN 21-0 CHECK NEXT FLAG
STD T0
PJN ISR1 IF NOT SET
LDD RW
STM RWST,DI SET INDEX FOR DIAGNOSTICS
ADN SPDF
STM SREQ,DI SET SPECIAL REQUEST FLAG
SBN DUCF+1
MJN ISR2 IF VALID REQUEST
LDN 0
UJN ISRX RETURN
ISRA BSS 0 SPECIAL REQUEST PROCESSORS
CON SPD SPIN-DOWN DRIVE
CON SPU SPIN-UP DRIVE
CON DUC DAYFILE UNIT CHARACTERISTICS
PEF SPACE 4,15
** PEF - PROCESS ERROR FLAGS.
*
* ENTRY (RW) = ERROR INDEX.
* (CB) = *CBT* ORDINAL.
* (T1) = BYTE 0 OF *PAD4* WORD OF CBT ENTRY.
* (RF) = SPECIAL REQUEST FLAGS.
* (NR - NR+4) = *PAD1* WORD OF *CBT* ENTRY.
*
* EXIT (A) = 0 IF OK TO INITIATE I/O.
* = I/O PREPROCESSOR ADDRESS.
*
* USES RW, PA.
*
* CALLS CPF, IIO, WFC.
PEF6 LDN 0 INDICATE I/O IN ORDER
PEF SUBR ENTRY/EXIT
LDD T1
SHN -6
LMD IR+4 CHECK CHANNEL NUMBER
NJN PEFX IF I/O DISABLED ON THIS ACCESS
LDM ERCT,DI
NJN PEF1 IF PATH VERIFICATION INITIATED
LDM PEFA,RW
STM ERCT,DI SET INITIAL ERROR COUNT
PEF1 LDM IPPS,DI
NJN PEF6 IF I/O PREPROCESSING COMPLETE
LDD RW
SHN 14-0
NJN PEF2 IF NOT *1MV* DEVICE VERIFICATION
* CHECK DISK ADDRESS AT BEGINNING OF MAINTENANCE CYLINDER.
LDD NR+1 CHECK CURRENT CYLINDER
.CY SET MCLTDF-4000
ERRNZ MCLTDH-MCLTDF CODE DEPENDS ON VALUE
LMC .CY/2
NJN PEF6 IF NOT MAINTENANCE CYLINDER
LDD NR+2
NJN PEF6 IF DEVICE VERIFICATION IN PROGRESS
LDD RF
LPN DVRF
ZJN PEFX IF NO VERIFICATION DIAGNOSTICS
LCN PEF4-PEF3
PEF2 ADC PEF4
UJP PEFX RETURN
PEF3 LDN DVDF CLEAR DIAGNOSTICS REQUESTED FLAG
RJM CPF
PEF4 LDM PEFB,RW SET I/O PREPROCESSOR ADDRESS
STD PA
LDN 2 SELECT VERIFICATION DIAGNOSTICS
STD RW
STM RWST,DI SAVE AS READ / WRITE STATUS
LDC PEF5
LJM 0,PA EXIT TO PREPROCESSOR
PEF5 LDC FWCA CLEAR ATTENTION
RJM WFC
LDD CB INITIATE I/O
STM IPPS,DI
RJM IIO
LJM 0,PA EXIT TO PROCESSOR
PEFA BSS 0 INITIAL ERROR COUNT
CON 0
CON CSRC
PEFB BSS 0 I/O PREPROCESSOR
CON RND1
CON SRS1
RBD SPACE 4,10
** RBD - READ BUFFERED DISK.
*
* ENTRY (CB) = CURRENT *CBT* ORDINAL.
*
* EXIT (A) = *ETTC* IF TRANSFER COMPLETE TIMEOUT.
*
* CALLS COS, EIO, SFR, WTR.
RBD SUBR ENTRY/EXIT
RBD1 RJM WTR WRITE *T* REGISTER
LDD CB
RJM EIO ENTER REQUEST IN I/O QUEUE
RJM SFR
ZJN RBDX IF NO CONSECUTIVE REQUEST FOUND
STD CB
LCN 1 CHECK OPERATIONAL STATUS
RJM COS
ZJN RBD1 IF TRANSFER COMPLETE
LDN ETTR
UJN RBDX RETURN ERROR
RCR SPACE 4,10
** RCR - RESET CHANNEL REGISTERS.
*
* EXIT (SF) = 0 (DEVICE NOT SELECTED).
*
* CALLS FCN.
RCR SUBR HYD4 ENTRY/EXIT
DCN CH+40
LDK FCMC MASTER CLEAR THE ADAPTOR
RJM FCN
LDN 0 SET DEVICE NOT SELECTED
STD SF
UJN RCRX RETURN
RCS SPACE 4,10
** RCS - REMOVE CHANNEL FROM SYSTEM USE.
*
* ENTRY (A) = EST ORDINAL IF CHANNEL IS TO BE DOWNED ON A
* PARTICULAR DEVICE.
* = 0 IF CHANNEL IS TO BE GLOBALLY DOWNED.
*
* USES CM - CM+4.
*
* MACROS DELAY, EXECUTE, MONITOR.
RCS SUBR ENTRY/EXIT
LMC 4000 SET DRIVER CALL FLAG, EST ORDINAL
STM RCSA+4
LDD MA WRITE *1DS* CALL IN MESSAGE BUFFER
CWM RCSA,ON
RCS1 LDN 0 SET NON-PRIORITY REQUEST
STD CM+1
EXECUTE 1DS,=
MONITOR RPPM
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 T6.
*
* MACROS CBTE.
RLB1 LDN 10+4 ADVANCE BUFFER ADDRESS
RAD 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
R1B SPACE 4,10
** R1B - READ ONE BYTE.
*
* ENTRY (A) = FUNCTION CODE.
*
* EXIT (A) = (CD) = CHANNEL DATA.
*
* CALLS CFE, FCN.
R1B SUBR ENTRY/EXIT
RJM FCN
ACN CH
IAN CH
STDL CD SAVE INPUT
LDN 0
RJM CFE CHECK FOR ERROR
LDDL CD
UJN R1BX RETURN
SAP SPACE 4,10
** SAP - SELECT ADAPTOR PORT.
*
* CALLS FCN, WTC.
SAP SUBR ENTRY/EXIT
LDC FCWC
RJM FCN WRITE CONTROL REGISTER
ACN CH
LDML CREG,DI OUTPUT PORT SELECT
OAN CH
LDN 0 WAIT - TRANSMISSION COMPLETE
RJM WTC
UJN SAPX RETURN
SCD SPACE 4,10
** SCD - STORE *CPD* DATA.
*
* ENTRY (A) = 0 TO INDICATE CHANNEL INACTIVE.
* = 1 TO INDICATE CHANNEL ACTIVE.
* (UC) = UNIT ACTIVITY COUNT.
*
* USES T7, CM - CM+4.
*
* MACROS CCTE.
SCD SUBR ENTRY/EXIT
STD T7
LDN ZERL CLEAR UNUSED BYTES
CRD CM
LDD UC INSERT UNIT COUNT
STD CM
CCTE *
LDC CREQ STORE *CPD* DATA
CWD T7
UJN SCDX RETURN
SEC SPACE 4,10
** SEC - SET ERROR CODE.
*
* ENTRY (EO) = EST ORDINAL.
*
* USES T5, WB+3 - WB+4.
*
* CALLS IMR, RCR, RCS, SES.
SEC1 LDN 1 *CBT* COUNT TO BE DELINKED
STD WB+3
SHN 13-0 SET INTERLOCK RELEASED (FOR *CMP*)
STM RQIN,DI
LDM FALT
SHN -2 CREATE INDEX FROM FAULT CODE
STD T5
LDM TMSE,T5 SET MASS STORAGE ERROR CODE
STD WB+4
LDN SETS INSERT CODE IN *CBT*
RJM IMR
SOD UC DECREMENT UNIT ACTIVITY COUNT
SEC SUBR ENTRY/EXIT
RJM RCR RESET CHANNEL REGISTERS
LDD EO
STD T5 EST ORDINAL FOR *SES*
LDN STDE
RJM SES SET ERROR STATUS IN MST
LDM SREQ,DI
ZJN SEC1 IF I/O PROCESSING
LDD EO DOWN CHANNEL ON THIS DEVICE
RJM RCS
LJM CMP1 COMPLETE PROCESSING
SFR SPACE 4,15
** SFR - SEARCH FOR CONSECUTIVE REQUEST.
*
* ENTRY (CB) = CURRENT *CBT* ORDINAL.
* (DT) = DEVICE TYPE.
*
* EXIT (A) = 0 IF NO CONSECUTIVE REQUEST FOUND.
* = (NB) = *CBT* ORDINAL OF NEXT REQUEST.
* (NR - NR+4) = PHYSICAL ADDRESS OF NEXT REQUEST.
*
* USES CM - CM+4, T1 - T6.
*
* MACROS CBTE.
SFR SUBR ENTRY/EXIT
LDD CB
SHN CBTLS FETCH SEEK PARAMETERS FROM *CBT*
CBTE *
ADC PAD1
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
LDD T1+2
ZJN SFRX IF NO REQUEST AVAILABLE
STD NB
SHN CBTLS
CBTE *
ADC PAD1 PHYSICAL ADDRESS OF NEXT REQUEST
CRD NR
ADN IOLK-PAD1 I/O LINK-UP WORD OF NEXT REQUEST
CRD T2
LDD T2 COMPARE LINK-UP FLAGS
LMD T1
LPC DRFM+ILFM
ZJN SFR3 IF SAME DIRECTION AND INTERLOCKED
SFR1 LDN 0
STD NB
SFR2 UJN SFRX RETURN
SFR3 LDD NR+1 CHECK SEEK PARAMETERS
SBD CM+1
ZJN SFR4 IF SAME CYLINDER
SBN 1
NJN SFR1 IF NOT NEXT CYLINDER
LDD NR+2
NJN SFR1 IF NOT CONSECUTIVE CYLINDER REQUEST
SBK PTCYDF*100
UJN SFR5 CHECK NEXT TRACK / SECTOR
ERRNZ PTCYDH-PTCYDF CODE DEPENDS ON VALUE
SFR4 LDD CM+2 CHECK NEXT SECTOR
ADM SFRA,DT
LMD NR+2
ZJN SFR6 IF NEXT SECTOR ON SAME TRACK
LDN 0
SFR5 ADD CM+2 SET NEXT TRACK
ADD HN
SBM SFRB,DT CHECK NEXT SECTOR
LMD NR+2
NJN SFR1 IF NOT NEXT SECTOR ON CONSECUTIVE TRACKS
SFR6 LDD NB
UJN SFR2 RETURN
SFRA BSS 0 PHYSICAL SECTORS PER I/O BUFFER
CON PSBFDF
CON PSBFDH
SFRB BSS 0 FACTOR FOR NEXT SECTOR CALCULATION
CON PSPTDF-PSBFDF
CON PSPTDH-PSBFDH
SLB SPACE 4,15
** SLB - SET LINKAGE BITS.
*
* ENTRY (PB) = *CBT* ORDINAL.
* (RW) = READ / WRITE STATUS.
*
* EXIT LINKAGE BITS SET IN *CBT* ENTRY / UEM BUFFER.
*
* USES CM - CM+4, T0 - T6, UA - UA+1.
*
* CALLS RLB, SUA, WLB.
*
* MACROS CBTE.
SLB SUBR ENTRY/EXIT
LDD 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
STD 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
CON WLB
SRF SPACE 4,10
** SRF - SET DRIVER RELOAD FLAG.
*
* EXIT (A) = 0.
*
* USES CM - CM+4.
*
* CALLS CMC, DCR.
*
* MACROS CHTE, MONITOR.
SRF SUBR ENTRY/EXIT
RJM CMC
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
SSD SPACE 4,15
** SSD - SELECT SLAVE DEVICE.
*
* ENTRY (SF) = 1 IF DEVICE PREVIOUSLY SELECTED.
* (UN) = UNIT NUMBER.
*
* EXIT (A) .NE. 0 IF DEVICE SELECTED.
* (SF) = 1 IF DEVICE SELECTED.
*
* ERROR TO *ERR* IF SELECT REJECT.
*
* USES T2.
*
* CALLS FCN, R1B, SAP, WFW.
SSD4 AOD SF SET DEVICE SELECTED
SSD SUBR ENTRY/EXIT
LDD SF
NJN SSDX IF DEVICE PREVIOUSLY SELECTED
LDN DSRC
STD T2
RJM SAP SELECT ADAPTOR PORT
SSD1 LDD UN
LMC FWBS WRITE FUNCTION WORD
RJM WFW
SSD2 LDC FCRO GET OPERATIONAL STATUS
RJM R1B
SHN 0-11
LPN 35 EXTRACT PAUSE, SYNC IN/OUT, SELECT ACTIVE
LMN 1
ZJN SSD4 IF DEVICE SELECTED
LDC FCCH
RJM FCN CLEAR SELECT HOLD
SOD T2
NJN SSD1 IF RETRY COUNT NOT EXHAUSTED
LDC FCIS
RJM R1B CHECK IDLE STATUS
SHN -10
LPML TMSK,UN
ZJN SSD3 IF DRIVE NOT BUSY
LDN EDRA&ETSL
SSD3 LMN ETSL
RJM ERR PROCESS ERROR
STF SPACE 4,15
** STF - REQUEST TRACK FLAW.
*
* ENTRY (CB) = CURRENT *CBT* ORDINAL.
* (EO) = EST ORDINAL.
*
* USES CM - CM+4, T3 - T3+4.
*
* CALLS CMC, C2D, IBM.
*
* MACROS CBTE, MONITOR.
STF SUBR ENTRY/EXIT
RJM CMC
LDD EO CONVERT EST ORDINAL
SHN -3
RJM C2D
STM STFB+1 SET ORDINAL IN MESSAGE
LDD EO
STD CM+1
LPN 7
SHN 6
ADC 2R0,
STM STFB+2
LDD CB FETCH *CBT* INFORMATION
SHN CBTLS
CBTE *
ADC PAD1
CRD T3
LDD T3+1 DETERMINE LOGICAL TRACK NUMBER
SHN 1
ERRNZ LTCYDF-2 CODE DEPENDS ON VALUE
ADC 4000
ERRNZ LTCYDH-LTCYDF CODE DEPENDS ON VALUE
STD CM+2
LDD T3+2
ERRNZ PTCYDF-4 CODE DEPENDS ON VALUE
SHN -7
ERRNZ PTCYDH-PTCYDF CODE DEPENDS ON VALUE
RAD CM+2
RJM C2D CONVERT TRACK NUMBER FOR MESSAGE
STM STFB+5
LDD CM+2
SHN -6
RJM C2D
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
STM MAD1 ISSUE ERROR LOG MESSAGE
RJM IBM
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).
* (PO) = *PUT* ORDINAL.
*
* USES T5, T6, T7, CM - CM+4.
*
* MACROS FTTE.
STO SUBR ENTRY/EXIT
STD T6
LDC RTCL FETCH CURRENT TIME
CRD CM
LDD T6
RAD CM+1 SET TIME LIMIT
SHN -14
RAD CM
LDM STO SET CALLERS ADDRESS
STD T7
LDN 0
STD T5
LDD PO STORE TABLE ENTRY
SHK FTTLS
FTTE *
ADC 0
CWD T5
UJN STOX RETURN
SUA SPACE 4,10
** SUA - SET UEM ADDRESS.
*
* ENTRY (A) = *CBT* ORDINAL.
*
* EXIT (UA - UA+1) = UEM ADDRESS / 100.
*
* USES 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 (PO) = *PUT ORDINAL.
*
* EXIT (A) = 0 IF *PUT* ENTRY INTERLOCKED.
* (UC) = UNIT ACTIVITY COUNT INCREMENTED.
*
* USES CM - CM+4.
*
* CALLS CMC.
*
* MACROS MONITOR.
SUI1 AOD UC ADVANCE UNIT ASSIGNED COUNT
LDN 0
SUI SUBR ENTRY/EXIT
RJM CMC
LDD PO SET *PUT* ORDINAL
STD CM+2
LDN SUIS SET SUBFUNCTION
STD CM+1
MONITOR BIOM INTERLOCK DEVICE
LDD CM+1
ZJN SUI1 IF INTERLOCK ACQUIRED
LMD OA
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 DDFE DIAGNOSTIC FAILURE
CON DRVE DRIVE RESERVED
LOC *O
TMSK SPACE 4,10
** TMSK - TABLE OF UNIT MASKS.
*
* INDEXED BY UNIT NUMBER.
TMSK BSS 0
LOC 0
CON 200
CON 100
CON 040
CON 020
CON 010
CON 004
CON 002
CON 001
LOC *O
UEC SPACE 4,15
** UEC - UPDATE MST ERROR COUNT.
*
* ENTRY (EO) = EST ORDINAL.
* (BMLM+2) = BML MESSAGE SYMPTOM CODE.
* (MISC - BIT 0) = 1 IF UNRECOVERED ERROR.
*
* USES CM - CM+4.
*
* MACROS MONITOR.
UEC SUBR ENTRY/EXIT
LDM BMLM+1
LMC D1HY*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) = 6/ BC, 12/ SA
* BC = BYTE COUNT OF HEX DATA.
* SA = SOURCE DATA ADDRESS.
* (T3) = DESTINATION DATA ADDRESS.
*
* EXIT (A) = CM WORD COUNT OF 12 BIT DATA.
*
* USES T2, T4, T5.
*
* CALLS DV5.
UHD3 AOD T3 SET END OF 12 BIT DATA
STM UHDA
LDN ZERL ENSURE ZERO FILL TO CM WORD BOUNDARY
CRM *,ON
UHDA EQU *-1
LDD T3 SET BYTE COUNT OF 12 BIT DATA
SBD T5
RJM DV5 CONVERT TO CM WORD COUNT
UHD SUBR ENTRY/EXIT
STD T2
SHN -14 SET BYTE COUNT
STD T4
LDD T3 PRESERVE DESTINATION BUFFER ADDRESS
STD T5
UHD1 LDIL T2 UNPACK N+3RD BYTE
SHN 16
STI T3
SHN -6
SCN 77
STM 1,T3
AOD T3
SOD T4
UHD2 ZJN UHD3 IF END OF HEX DATA
AOD T2
LDIL T2 UNPACK N+4TH BYTE
SHN -10
RAI T3
AOD T3
LDIL T2
SHN 4
SCN 17
STI T3
SOD T4
ZJN UHD2 IF END OF HEX DATA
AOD T2
LDIL T2 UNPACK N+5TH BYTE
STM 1,T3
SHN -14
RAI T3
AOD T3
SOD T4
ZJN UHD2 IF END OF HEX DATA
AOD T2
AOD T3
UJP UHD1 CONTINUE UNPACK
WBD SPACE 4,10
** WBD - WRITE BUFFERED DISK.
*
* ENTRY (CB) = CURRENT *CBT* ORDINAL.
*
* EXIT (A) = *ETTR* IF *T* REGISTER EMPTY TIMEOUT.
*
* CALLS COS, EIO, SFR, WTR.
WBD2 RJM WTR WRITE *T* REGISTER
RJM SFR
NJN WBD1 IF CONSECUTIVE REQUEST FOUND
WBD SUBR ENTRY/EXIT
LDD CB
WBD1 STD CB ENTER REQUEST IN I/O QUEUE
RJM EIO
LDN 2 CHECK OPERATIONAL STATUS
RJM COS
ZJN WBD2 IF *T* REGISTER EMPTY
LDN ETTR
UJN WBDX RETURN ERROR
WCB SPACE 4,15
** WCB - WRITE COMMAND BLOCK.
*
* ENTRY (A) = 1/ CA, 1/, 16/ CC
* CA = 1 IF NOT CLEARING ATTENTION.
* CC = COMMAND CODE.
* (TO) = TIMEOUT VALUE FOR *FTT*.
*
* USES T3.
*
* CALLS FCN, R1B, STO, WFW, WTC.
WCB SUBR ENTRY/EXIT
STML WCBA+7
STML LCMD,DI
SHN 0-21 EXTRACT *CLEAR ATTENTION* STATUS
SHN 14-0
LMC FWCB INITIATE COMMAND BLOCK WRITE
WCB1 RJM WFW
LDN 10 SET LENGTH OF BLOCK
ACN CH
OAM WCBA,CH OUTPUT COMMAND BLOCK
RJM WTC
LDC 250D SET LOCAL TIMEOUT
STD T3
WCB2 LDC FCRO GET OPERATIONAL STATUS
RJM R1B
LPN 1
NJN WCB4 IF COMMAND BLOCK TRANSFER INCOMPLETE
* LDN 0
STM WCBA+4 CLEAR PARAMETER WORD
LDC FCCS
RJM FCN CLEAR COMMAND SEQUENCE
LDD TO
RJM STO SET REQUEST TIMEOUT
WCB3 UJP WCBX RETURN
WCB4 DELAY 7 WAIT AWHILE
SOD T3
NJN WCB2 IF NOT TIMEOUT
LDN ETCB
RJM ERR PROCESS ERROR
WCBA BSS 10 COMMAND BLOCK
WFC SPACE 4,10
** WFC - WRITE FUNCTION WORD AND CLEAR.
*
* ENTRY (A) = FUNCTION WORD.
*
* CALLS FCN, WFW.
WFC SUBR ENTRY/EXIT
RJM WFW WRITE FUNCTION WORD
LDC FCCS CLEAR COMMAND SEQUENCE
RJM FCN
UJN WFCX RETURN
WFW SPACE 4,10
** WFW - WRITE FUNCTION WORD.
*
* ENTRY (A) = FUNCTION WORD.
*
* CALLS FCN, WTC.
WFW SUBR ENTRY/EXIT
STML WFWA
LDC FCCS CLEAR COMMAND SEQUENCE
RJM FCN
LDC FCSS SET COMMAND SEQUENCE / SELECT HOLD
RJM FCN
LDN 1 SET BYTE COUNT
ACN CH
OAM WFWA,CH OUTPUT FUNCTION WORD
RJM WTC
UJN WFWX RETURN
WFWA CON 0 FUNCTION WORD BUFFER
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 T6.
WLB1 LDN 10+4 ADVANCE BUFFER ADDRESS
RAD 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.
*
* ENTRY (A) = 0 IF TRANSFER COMPLETE.
* (T5) = 0 IF INITIAL ENTRY.
*
* EXIT (A) = 0 IF CHANNEL EMPTY.
* = (T5) IF CHANNEL HUNG FULL.
*
* USES CM - CM+4.
WMC3 LDD T5
ZJN WMCX IF NO ERRORS
LDN ZERL
CRD CM CLEAR BUFFER
LDD CP
ADN MS2W CLEAR CP MESSAGE
CWD CM
LDN 0 INDICATE CHANNEL EMPTY
WMC SUBR ENTRY/EXIT
NJN WMC2 IF INCOMPLETE TRANSFER
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
STD T5
UJN WMCX RETURN
WMCA DATA C*MR ERROR.*
WTC SPACE 4,10
** WTC - WAIT TRANSMISSION COMPLETE.
*
* EXIT (A) = 0.
*
* ERROR TO *ERR*.
*
* USES T1.
*
* CALLS CFE.
WTC3 LDD T1 CHECK FOR I/O ERROR
RJM CFE
* LDN 0 EXIT CONDITION FROM *CFE*
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
DCN CH+40
LDN ECHF
RJM ERR PROCESS CHANNEL ERROR
WTR SPACE 4,10
** WTR - WRITE *T* REGISTER.
*
* ENTRY (CB) = *CBT* ORDINAL.
* (TO) = TIMEOUT VALUE FOR *FTT*.
*
* CALLS FCN, STO, SUA, WTC.
WTR SUBR ENTRY/EXIT
LDD CB
RJM SUA SET UEM ADDRESS
LDD UA+1
SHN 11
SCN 7
STML WTRA+2 FORM ABSOLUTE UEM ADDRESS
LDD UA
SHN 14
LMD UA+1
SHN 11-20 SET IN *T* REGISTER
STM WTRA+1
LDC FCWT ISSUE WRITE *T* REGISTER FUNCTION
RJM FCN
LDN 3 SET BLOCK LENGTH
ACN CH
OAM WTRA,CH OUTPUT BUFFER PARAMETERS
RJM WTC
LDD TO 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
TITLE MISCELLANEOUS.
SPACE 4,10
** COMMON DECKS.
*CALL COMPC2D
RND$ EQU 0 DEFINE ROUNDING FOR *COMPDV5*
*CALL COMPDV5
M8K$ EQU 1 USE LONG INSTRUCTIONS
*CALL COMPIMB
*CALL COMPSES
SPACE 4,10
** BUFFERS.
SLST BSS 0 SLAVE STATUS
DVST EQU SLST+SLSTL DEVICE STATUS
EHDR EQU DVST+DVSTL ERROR MESSAGE HEADER BUFFER
EBUF EQU EHDR+5*3 ERROR MESSAGE ASSEMBLY BUFFER
CODE EQU EBUF INITIAL FAULT CODE
FCS1 EQU EBUF+1 FAULT CODE - ERROR STEP 1
FCS2 EQU EBUF+2 FAULT CODE - ERROR STEP 2
FCS3 EQU EBUF+3 FAULT CODE - ERROR STEP 3
FALT EQU EBUF+4 FINAL FAULT CODE
RSVD EQU EBUF+5 RESERVED
RBCT EQU EBUF+6 RESIDUAL BYTE COUNT
STCT EQU EBUF+7 SECTORS TRANSFERED COUNT
ICYL EQU EBUF+10 CYLINDER ON INITIAL SEEK
ITAS EQU EBUF+11 TRACK + SECTOR ON INITIAL SEEK
DBUF EQU EBUF+EBUFL DATA BUFFER
EXST EQU DBUF EXECUTION STATUS
IDST EQU DBUF+1 IDLE STATUS
BSRN EQU DBUF+2 BIT SIGNIFICANT RESPONSE
LSCC EQU DBUF+3 LAST SLAVE COMMAND
LCFN EQU DBUF+4 LAST CHANNEL FUNCTION
RBUF EQU DBUF+5 REGISTER BUFFER
SBUF EQU DBUF+DBUFL SCRATCH BUFFER
MBUF EQU SBUF+5*3 MESSAGE ASSEMBLY BUFFER
TITLE PRESET ROUTINES.
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 CCPA
RJM DFM ISSUE DAYFILE MESSAGE
MONITOR ABTM
LJM PPR EXIT TO PP RESIDENT
CCPA DATA C* 1HY - UNAUTHORIZED CALL.*
IST SPACE 4,15
** IST - INITIALIZE DEVICE STATE TABLE.
*
* ENTRY (PO) = 0.
* (RC) = NUMBER OF ENTRIES IN *PUT*.
*
* EXIT (A) = 0 IF NO DEVICES FOR THIS DRIVER.
*
* USES DI, PO, CM - CM+4.
*
* MACROS PUTE, SFA.
IST6 LDD DI DEFINE END OF DEVICES
STM HYDA
LMC DSTB SET EXIT CONDITION
IST SUBR ENTRY/EXIT
LDC DSTBL-1
STD DI
IST1 LDN 0 CLEAR DEVICE STATE TABLE
STI DI
SOD DI
LMC DSTB
NJN IST1 IF MORE TO CLEAR
IST2 AOD PO
LMD RC
ZJN IST6 IF END OF PHYSICAL UNIT TABLE
LDD PO
SHN PUTLS READ *PUT* ENTRY
PUTE *
ADC UNCT GET UNIT CONTROL WORD
CRD CM
SFA EST,CM+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
IST4 NJN IST3 IF NOT THIS DRIVERS CHANNEL
IST5 LDD PO SET *PUT* ORDINAL IN STATE TABLE
STI DI
ERRNZ PUTO CODE DEPENDS ON VALUE
LDI CM
LPC 200 SET PORT SELECT IN CONTROL REGISTER
SHN 16-7
STML CREG,DI
LDN DSTBE ADVANCE STATE TABLE ADDRESS
RAD DI
LMC DSTBL
NJN IST4 IF NOT AT BLOCK LIMIT
LJM IST6 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.
MCI1 RAIL T2 MODIFY CHANNEL INSTRUCTION
AOD T1
MCI2 LDM TCHA,T1 EXTRACT NEXT ADDRESS
STD T2
LDD T0 CHECK END OF LIST
CHTL *
SBN CH
NJN MCI1 IF MORE INSTRUCTIONS TO MODIFY
MCI SUBR ENTRY/EXIT
LDD IR+4
LPN 37 EXTRACT CHANNEL NUMBER
STD T0
LDN 0 INITIALIZE REMOTE TABLE INDEX
STD T1
UJN MCI2 ENTER LOOP
TCHA SPACE 4,10
** TABLE OF CHANNEL INSTRUCTIONS ADDRESSES.
TCHA CHTB
RSTC RESTORE CHANNEL INSTRUCTIONS
TCBT SPACE 4,10
** TABLE OF INSTRUCTIONS REQUIRING FWA OF *CBT*.
TCBT BSS 0
TCBT HERE
CON 0 TERMINATE TABLE
TCCT SPACE 4,10
** TABLE OF INSTRUCTIONS REQUIRING ADDRESS OF *CCT* ENTRY.
TCCT BSS 0
TCCT HERE
CON 0 TERMINATE TABLE
TCHT SPACE 4,10
** TABLE OF INSTRUCTIONS REQUIRING FWA OF CHANNEL TABLE.
TCHT BSS 0
TCHT HERE
CON 0 TERMINATE TABLE
TEMB SPACE 4,10
** TABLE OF INSTRUCTIONS REQUIRING FWA OF *EMB*.
TEMB BSS 0
QUAL COMPIMB
TEMB HERE
QUAL *
CON 0 TERMINATE TABLE
TEXP SPACE 4,10
** TABLE OF INSTRUCTIONS REQUIRING FWA OF PP EXCHANGE PACKAGE.
TEXP BSS 0
TEXP HERE
CON 0 TERMINATE TABLE
TFTT SPACE 4,10
** TABLE OF INSTRUCTIONS REQUIRING FWA OF *FTT*.
TFTT BSS 0
TFTT HERE
CON 0 TERMINATE TABLE
TPUT SPACE 4,10
** TABLE OF INSTRUCTIONS REQUIRING FWA OF *PUT*.
TPUT BSS 0
TPUT HERE
CON 0 TERMINATE TABLE
SPACE 4,10
ERRPL *-10000 CODE DEPENDS ON VALUE
PRS SPACE 4,20
** PRS - PRESET *1HY* FOR PROCESSING.
*
* EXIT (UC) = 0.
*
* CALLS CCP, CCR, MCI, IST, PCT, RCR, SPA, STA.
PRS RJM CCP CHECK CALLING PROGRAM
* LDN 0
STD UC SET NO UNITS RESERVED
STD PO
RJM MCI MODIFY CHANNEL INSTRUCTIONS
STD CR
RJM SPA SET PP EXCHANGE PACKAGE ADDRESSES
PRS1 RJM SCT SET CHANNEL TABLE ADDRESSES
LDK BIOL
CRD CM READ BUFFERED I/O POINTERS
LDD CM+1
SHN 14
LMD CM+2
ADN FTTP READ *FTT* POINTER
CRD T6
SBN FTTP-CCTP READ *CCT* POINTER
CRD T4
ADN PUTP-CCTP READ *PUT* POINTER
CRD T2
ADN CBTP-PUTP READ *CBT* POINTER
CRD WB
AOD T2 SET NUMBER OF *PUT* ENTRIES
STD RC
LDC T5*10000+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*10000+TCCT SET *CCT* ADDRESSES
RJM STA
.CM1 EQU CM+1
LDC .CM1*10000+TFTT SET *FTT* ADDRESSES
RJM STA
.WB3 EQU WB+3
LDC .WB3*10000+TCBT SET *CBT* ADDRESSES
RJM STA
LDN EMBP FETCH *EMB* POINTER
CRD CM
LDC .CM1*10000+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
LDC PRS3 SET RETURN ADDRESS
STM CCR
RJM IST INITIALIZE DEVICE STATE TABLE
ZJN PRS4 IF NO DEVICES FOR THIS DRIVER
LDN 0 CLEAR RESIDUAL BYTE COUNT
STM RBCT
LJM CCR2 RESERVE CHANNEL
PRS3 NJP RCR+1 IF CHANNEL NOT DOWN
PRS4 LJM HYD8 DROP CPP
SCT SPACE 4,10
** SCT - SET CHANNEL TABLE ENTRY ADDRESSES.
*
* ENTRY (IR+4) = CHANNEL NUMBER.
*
* USES T1, T2, CM - CM+4.
*
* CALLS STA.
SCT SUBR ENTRY/EXIT
LDD IR+4
STD T1 SET CHANNEL NUMBER
STM RCSA+3
RAM BMLM+2
* SHN 6 SAVE RECOVERY CHANNEL FOR *BML*
* STM BMLM+7
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*10000+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*10000+TEXP SET EXCHANGE PACKAGE ADDRESSES
RJM STA
LJM SPAX RETURN
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 T1, T2, T3.
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 T3 ADVANCE INSTRUCTION LIST
STA2 LDI T3
NJN STA1 IF NOT END OF TABLE
STA SUBR ENTRY/EXIT
STD T3
SHN -14 SET ADDRESS POINTER
STD T1
UJN STA2 ENTER LOOP
OVERFLOW OHYD,20000
END