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