UNIVERSAL DEVPRM - DEVICE PARAMETERS FOR TOPS-10 V040 SUBTTL D. MASTROVITO /DPM 23-AUG-88 SEARCH F,S SALL ;CLEAN LISTINGS .DIRECT FLBLST ;CLEANER LISTINGS ;THIS FILE CONTAINS DEVICE PARAMETER DEFINITIONS AND DATA STRUCTURES. ;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED ; OR COPIED ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE. ; ;COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1986,1988. ;ALL RIGHTS RESERVED. .CPYRT<1986,1988>,. XP VDEVPR,040 ;DEVPRM VERSION NUMBER SUBTTL DEVICE CODE DEFINITIONS FSTICD==:540 ;FIRST INTERNAL CHANNEL DEVICE CODE LSTICD==:574 ;LAST INTERNAL CHANNEL DEVICE CODE ;IN THE IDEAL WORLD IT WOULD BE POSSIBLE TO INSTALL THE NIA20 OR CI20 ;IN EITHER OF THE MODIFIED INTERNAL CHANNEL BACKPLANE SLOTS IN THE ;KL-10. UNFORTUNATELY, THERE IS NO EASY WAY TO TELL THE TWO TYPES OF ;DEVICES APART. THOSE WHO ARE FOOLISH ENOUGH TO BELIEVE THE ;DOCUMENTATION MIGHT DISAGREE, BUT THE ENGINEERS NEVER STRAPPED THE ;NIA20 AND CI20 TO RETURN DIFFERENT PORT TYPE FIELDS AS THE ;DOCUMENTATION LEADS ONE TO BELIEVE. FOR THIS REASON, THE SOFTWARE IN ;TOPS-10 HAS BEEN WRITTEN TO ASSUME THE NIA20 CAN ONLY APPEAR AS ;INTERNAL CHANNEL NUMBER 5, AND THE CI20 CAN ONLY APPEAR AS INTERNAL ;CHANNEL NUMBER 7. SUBTTL RH20 CHANNEL DEFINITIONS -- CONI CI.DBP==:1B18 ;DATA BUS PARITY ERROR CI.EXC==:1B19 ;EXCEPTION CI.LWC==:1B20 ;LONG WORD COUNT CI.SWC==:1B21 ;SHORT WORD COUNT CI.CER==:1B22 ;CHANNEL ERROR CI.DRE==:1B23 ;DRIVE RESPONSE ERROR CI.RAE==:1B24 ;REGISTER ACCESS ERROR CI.RDY==:1B25 ;CHANNEL READY CI.OVR==:1B26 ;DATA OVERRUN CI.MBE==:1B27 ;MASSBUS ENABLE CI.ATN==:1B28 ;ATTENTION CI.SCR==:1B29 ;SCR FULL CI.AIE==:1B30 ;ATTENTION INTERRUPT ENABLE CI.BSY==:1B31 ;PCR FULL (BUSY) CI.DON==:1B32 ;COMMAND DONE CI.PIA==:7B35 ;PI ASSIGNMENT SUBTTL RH20 CHANNEL DEFINITIONS -- CONO CO.RAE==:1B24 ;CLEAR REGISTER ACCESS ERROR CO.MBI==:1B25 ;MASSBUS INIT CO.TEC==:1B26 ;TRANSFER ERROR CLEAR CO.MBE==:1B27 ;MASSBUS ENABLE CO.RCP==:1B28 ;RESET COMMAND LIST POINTER CO.SCR==:1B29 ;DELETE SCR CO.AIE==:1B30 ;ATTENTION INTERRUPT ENABLE CO.STP==:1B31 ;STOP TRANSFER CO.CCD==:1B32 ;CLEAR COMMAND DONE CO.PIA==:7B35 ;PI ASSIGNMENT SUBTTL RH20 CHANNEL DEFINITIONS -- DATAI REGISTER ;FIELDS COMMON TO ALL DATAI OPERATIONS DI.REG==:77B5 ;REGISTER SELECT FIELD DI.LDR==:1B6 ;LOAD REGISTER DI.DRV==:7B17 ;DRIVE SELECT FIELD ;REGISTER AND REGISTER SPECIFIC BIT DEFINITIONS. NOTE THAT BIT ;DEFINITIONS FOR .DIPBA AND .DIPTC ARE THE SAME AS THOSE FOR ;.DISBA AND .DISTC RESPECTIVELY. .DISBA==:70B5 ;SECONDARY BLOCK ADDRESS REGISTER DI.BAD==:177777B35 ;BLOCK ADDRESS/FRAME COUNT .DISTC==:71B5 ;SECONDARY TRANSFER CONTROL REGISTER DI.RCP==:1B7 ;RESET COMMAND LIST POINTER DI.SCS==:1B10 ;STORE CHANNEL STATUS DI.DTE==:1B19 ;DISABLE TRANSFER ERROR STOP DI.CNT==:1777B29 ;NEGATIVE BLOCK COUNT DI.FNC==:77B35 ;MASSBUS FUNCTION CODE .DIPBA==:72B5 ;PRIMARY BLOCK ADDRESS REGISTER .DIPTC==:73B5 ;PRIMARY TRANSFER CONTROLER REGISTER .DIIVI==:74B5 ;INTERRUPT VECTOR INDEX REGISTER DI.IVI==:777B35 ;INTERRUPT VECTOR ADDRESS ;BITS APPLICABLE ONLY TO EXTERNAL REGISTERS DI.CPE==:1B8 ;CONTROL BUS PARITY ERROR DI.TRA==:1B10 ;TRANSFER RECEIVED DI.CPA==:1B19 ;CONTROL BUS PARITY BIT DI.ERD==:177777B35 ;EXTERNAL REGISTER DATA SUBTTL RH20 CHANNEL DEFINITIONS -- DATAO REGISTER ;FIELDS COMMON TO ALL DATAO OPERATIONS DO.REG==:77B5 ;REGISTER SELECT FIELD DO.LDR==:1B6 ;LOAD REGISTER DO.DRE==:1B9 ;DISABLE REGISTER ACCESS ERROR DO.DRV==:7B17 ;DRIVE SELECT FIELD ;REGISTER AND REGISTER SPECIFIC BIT DEFINITIONS. NOTE THAT THE BIT ;DEFINITIONS FOR .DOPBA AND .DOPTC ARE THE SAME AS THOSE FOR ;.DOSBA AND .DOSTC RESPECTIVELY. .DOSBA==:70B5 ;SECONDARY BLOCK ADDRESS REGISTER DO.BAD==:177777B35 ;BLOCK ADDRESS/FRAME COUNT .DOSTC==:71B5 ;SECONDARY TRANSFER CONTROL REGISTER DO.RCP==:1B7 ;RESET COMMAND LIST POINTER DO.SCS==:1B10 ;STORE CHANNEL STATUS DO.DTE==:1B19 ;DISABLE TRANSFER ERROR STOP DO.CNT==:1777B29 ;NEGATIVE BLOCK COUNT DO.FNC==:77B35 ;MASSBUS FUNCTION CODE .DOPBA==:72B5 ;PRIMARY BLOCK ADDRESS REGISTER .DOPTC==:73B5 ;PRIMARY TRANSFER CONTROLER REGISTER .DOIVI==:74B5 ;INTERRUPT VECTOR INDEX REGISTER DO.IVI==:777B35 ;INTERRUPT VECTOR ADDRESS ;BITS APPLICABLE ONLY TO EXTERNAL REGISTERS DO.CEP==:1B18 ;CONTROL BUS EVEN PARITY DO.ERD==:177777B35 ;EXTERNAL REGISTER DATA SUBTTL RH20 CHANNEL DEFINITIONS -- EXTERNAL REGISTERS ;THE FOLLOWING EXTERNAL REGISTER DEFINITIONS ARE THE ONES MOST ;COMMONLY USED. IT IS NOT INTENDED TO BE AN EXHAUSTIVE LIST OF ;EXTERNAL REGISTERS. .DICTR==:0B5 ;CONTROL REGISTER .DISTR==:1B5 ;STATUS REGISTER .DIERR==:2B5 ;ERROR REGISTER .DIMTR==:3B5 ;MAINTENANCE REGISTER .DIASR==:4B5 ;ATTENTION SUMMARY REGISTER .DIDAR==:5B5 ;DESIRED ADDRESS REGISTER .DIDTR==:6B5 ;DRIVE TYPE REGISTER .DILAR==:7B5 ;LOOK AHEAD REGISTER .DISNR==:10B5 ;SERIAL NUMBER REGISTER .DIOFS==:11B5 ;OFFSET REGISTER .DIDCR==:12B5 ;DESIRED CYLINDER REGISTER .DICCR==:13B5 ;CURRENT CYLINDER ADDRESS REGISTER .DIER2==:14B5 ;SECOND ERROR REGISTER .DIER3==:15B5 ;THIRD ERROR REGISTER .DIEPR==:16B5 ;ECC POSITION REGISTER .DIEBR==:17B5 ;ECC BURST (PATTERN) REGISTER SUBTTL IPA CHANNEL DEFINITIONS -- CONI CI.PPT==:1B0 ;PORT PRESENT CI.CPE==:1B6 ;CRAM PARITY ERROR CI.MER==:1B7 ;MBUS ERROR CI.IDL==:1B11 ;IDLE CI.DCP==:1B12 ;DISABLE COMPLETE CI.ECP==:1B13 ;ENABLE COMPLETE CI.TYP==:7B17 ;PORT TYPE .CIKNI==:1 ;NIA20 (KLNI) .CIKLP==:2 ;CI20 (KLIPA) CI.EPE==:1B24 ;EBUS PARITY ERROR CI.FQE==:1B25 ;FREE QUEUE ERROR CI.DPE==:1B26 ;DATA PATH ERROR CI.RQA==:1B28 ;RESPONSE QUEUE AVAILABLE CI.ENA==:1B31 ;ENABLED CI.MRN==:1B32 ;MICRO-PROCESSOR RUNNING CI.PIA==:7B35 ;PRIORITY INTERRUPT ASSIGNMENT SUBTTL IPA CHANNEL DEFINITIONS -- CONO CO.CPT==:1B18 ;CLEAR PORT CO.DTE==:1B19 ;DIAGNOSTIC_TEST_EBUS CO.LAR==:1B21 ;SELECT LATCHED ADDRESS REGISTER CO.EPE==:1B24 ;CLEAR EBUS PARITY ERROR CO.FQE==:1B25 ;CLEAR FREE QUEUE ERROR CO.CQA==:1B27 ;SET COMMAND QUEUE AVAILABLE CO.RQA==:1B28 ;CLEAR RESPONSE QUEUE AVAILABLE CO.DIS==:1B30 ;DISABLE CO.ENA==:1B31 ;ENABLE CO.MRN==:1B32 ;MICRO-PROCESSOR RUN CO.PIA==:7B35 ;PRIORITY INTERRUPT ASSIGNMENT SUBTTL IPA CHANNEL DEFINITIONS -- DATAI/DATAO REGISTER ;DATAO REGISTER AND REGISTER SPECIFIC BIT DEFINITIONS. .DOLRA==:40B5 ;LOAD RAM ADDRESS REGISTER DO.RAR==:7777B12 ;RAM ADDRESS REGISTER CONTENTS DO.LHW==:1B13 ;SELECT LEFT HALF CRAM MICRO-WORD ;COMMON TO DATAI/DATAO DT.LAR==:7777B12 ;LATCHED ADDRESS REGISTER CONTENTS DT.CRM==:7777777777B35 ;CRAM HALF-WORD CONTENTS SUBTTL IPA CHANNEL DEFINITIONS -- MICROCODE ;CRAM ADDRESS DEFINITIONS MAXCRA==:7777 ;MAXIMUM CRAM ADDRESS MAXDRA==:1777 ;MAXIMUM DRAM ADDRESS PPEFST==:7750 ;ADDRESS OF FIRST PLANNED CRAM PARITY ERROR PPELST==:7777 ;ADDRESS OF LAST PLANNED CRAM PARITY ERROR CRMSIZ==:MAXCRA+1 ;SIZE OF CRAM DRMSIZ==:MAXDRA+1 ;SIZE OF DRAM SUBTTL CHANNEL LOGOUT AREA DEFINITIONS .CSICW==:0 ;INITIAL CONTROL WORD CC.OPC==:7B2 ;OPCODE .CCHLT==:0 ;HALT .CCJMP==:2 ;JUMP .CCFDT==:4 ;FORWARD DATA TRANSFER (DO NOT HALT) .CCRDT==:5 ;REVERSE DATA TRANSFER (DO NOT HALT) .CCFTH==:6 ;FORWARD DATA TRANSFER (HALT) .CCRTH==:7 ;REVERSE DATA TRANSFER (HALT) CC.XFR==:4B2 ;DATA TRANSFER IF SET CC.HLT==:2B2 ;HALT BIT FOR DATA TRANSFERS CC.REV==:1B2 ;REVERSE BIT FOR DATA TRANSFERS CC.WDC==:3777B13 ;WORD COUNT CC.ADR==:17777777B35 ;ADDRESS .CSCLP==:1 ;STATUS/COMMAND LIST POINTER CS.MPE==:1B1 ;MEMORY PARITY ERROR CS.NAE==:1B2 ;NOT ADDRESS PARITY ERROR CS.NW0==:1B3 ;NOT WORD COUNT = 0 CS.NXM==:1B4 ;NXM CS.LTE==:1B9 ;LAST TRANSFER ERROR CS.RHE==:1B10 ;RH20 ERROR CS.LWC==:1B11 ;LONG WORD COUNT CS.SWC==:1B12 ;SHORT WORD COUNT CS.OVR==:1B13 ;OVERRUN CS.CLP==:17777777B35 ;CURRENT COMMAND LIST POINTER .CSDBA==:2 ;CURRENT CCW CS.COP==:7B2 ;CURRENT CCW OPCODE CS.CWC==:3777B13 ;CURRENT CCW WORD COUNT CS.DBA==:17777777B35 ;CURRENT DATA BUFFER ADDRESS .CSIVI==:3 ;INTERRUPT VECTOR INSTRUCTION SUBTTL RH11 CHANNEL DEFINITIONS -- REGISTER OFFSETS .DOCR==:00 ;CONTROL REGISTER .DOWC==:02 ;WORD COUNT REGISTER .DOBA==:04 ;BUS ADDRESS REGISTER .DODA==:06 ;DESIRED ADDRESS (TRACK/SECTOR/FRAME) .DOCS2==:10 ;STATUS REGISTER .DOSR==:12 ;DRIVE STATUS REGISTER .DOER==:14 ;ERROR REGISTER 1 .DOAS==:16 ;ATTENTION SUMMARY .DOLA==:20 ;LOOK-AHEAD (SECTOR COUNTER/CHECK CHARACTER) .DODB==:22 ;DATA BUFFER .DOMR==:24 ;MAINTENANCE REGISTER 1 .DODT==:26 ;DRIVE TYPE .DOSN==:30 ;SERIAL NUMBER .DOUC==:32 ;UNIT CONTROL (HEAD OFFSET/TAPE FORMAT) SUBTTL RH11 CHANNEL DEFINITIONS -- STATUS REGISTER CS.DLT==:1B20 ;DATA LATE (OVERRUN) CS.WCE==:1B21 ;WRITE CHECK ERROR CS.UPE==:1B22 ;UNIBUS PARITY ERROR CS.NXD==:1B23 ;NON-EXISTANT DRIVE CS.NEX==:1B24 ;NON-EXISTANT MEMORY CS.PGE==:1B25 ;PROGRAM ERROR CS.MXF==:1B26 ;MISSED TRANSFER CS.DPE==:1B27 ;DATA BUS PARITY ERROR CS.OR==: 1B28 ;OUTPUT READY CS.IR==: 1B29 ;INPUT READY CS.CLR==:1B30 ;CONTROLLER CLEAR CS.PAT==:1B31 ;PARITY TEST CS.BAI==:1B32 ;UNIBUS ADDRESS INCREMENT INHIBIT CS.UNI==:7B35 ;UNIT SELECT SUBTTL RH11 CHANNEL DEFINITIONS -- CONTROL REGISTER CR.SC==: 1B20 ;SPECIAL CONDITION (ALL ERRORS) CR.TRE==:1B21 ;TRANSFER ERROR CR.CPE==:1B22 ;MASSBUS CONTROL BUS PARITY ERROR CR.DVA==:1B24 ;DRIVE AVAILABLE CR.PSL==:1B25 ;PORT SELECT CR.A17==:1B26 ;ADDRESS 17 CR.A16==:1B27 ;ADDRESS 16 CR.RDY==:1B28 ;READY CR.IE==: 1B29 ;INTERRUPT ENABLED CR.FNC==:37B34 ;FUNCTION CODE CR.GO==: 1B35 ;GO SUBTTL RH11 CHANNEL DEFINITIONS -- DRIVE STATUS REGISTER DS.ATA==:1B20 ;ATTENTION ACTIVE DS.ERR==:1B21 ;COMPOSITE ERROR DS.PIP==:1B22 ;POSITION IN PROGRESS DS.MOL==:1B23 ;MEDIUM ON LINE DS.WRL==:1B24 ;WRITE LOCK DS.DPR==:1B27 ;DRIVE PRESENT DS.DRY==:1B28 ;DRIVE READY SUBTTL RH11 CHANNEL DEFINITIONS -- ERROR REGISTER 1 ER.DCK==:1B20 ;DATA CHECK ER.UNS==:1B21 ;UNSAFE ER.OPI==:1B22 ;OPERATION INCOMPLETE ER.DTE==:1B23 ;DRIVE TIMING ERROR ER.WCF==:1B30 ;WRITE CLOCK FAIL ER.FMT==:1B31 ;FORMAT ERROR ER.PAR==:1B32 ;CONTROL BUS PARITY ER.RMR==:1B33 ;REGISTER MODIFICATION REFUSED ER.ILR==:1B34 ;ILLEGAL REGISTER ER.ILF==:1B35 ;ILLEGAL FUNCTION SUBTTL MASBUS DEVICE CODES ;CODES DEFINED BY THE HARDWARE TY.RS4==:002 ;RS04 TY.RS5==:003 ;RS05 TY.T2L==:010 ;LOWEST TM02 TY.T77==:014 ;TU77 (TM03 HAS 40 BIT ON FOR TU77) TY.T2H==:017 ;HIGHEST TM02 TY.RP4==:020 ;RP04 TY.RP5==:021 ;RP05 TY.RP6==:022 ;RP06 TY.RM3==:024 ;RM03 TY.RP7==:042 ;RP07 TY.T3L==:050 ;LOWEST TM03 TY.T3H==:057 ;HIGHEST TM03 TY.DXA==:060 ;DX20A/TU7X TAPES TY.DXB==:061 ;DX20B/RP20 DISKS TY.T78==:101 ;TM78 ;FIELDS IN DRIVE TYPE REGISTER TR.NBA==100000 ;NOT BLOCK ADDRESSED TR.TAP==40000 ;TAPE DRIVE TR.MOH==20000 ;MOVING HEAD DEVICE TR.DRQ==4000 ;DRIVE REQUEST REQUIRED (DUAL-PORT HARDWARE) TR.TYP==777 ;DRIVE TYPE SUBTTL DRIVER INTERFACE -- CHARACTERISTICS ;WORD DRVCNF ;*** NOTE *** ;THIS WORD CANNOT BE EXPANDED TO INCLUDE ANY DATA EXCEPT ONE-BIT QUANTITIES. ;THE DEVICE TYPE BYTE MUST RESIDE IN THIS WORD. IT IS FORMATTED IN THIS WAY ;TO ALLOW AUTCON TO CHOOSE A DEVICE TYPE AND MASK OF CHARACTERISTICS, AND ;USE A SINGLE WORD FOR FAST DEVICE DISPATCH TABLE SELECTION. DR.DVT==:77B5 ;DEVICE TYPE DR.SFT==:1B25 ;SOFTWARE DEVICE DR.DDN==:1B26 ;DECIMAL DEVICE NUMBERS IN DDB NAMES DR.NET==:1B27 ;ENCODE ANF-10 STATION NUMBERS IN DDB NAME DR.MCD==:1B28 ;MULTI-CPU DEVICE (USE LH OF .CPSAV) DR.NMC==:1B29 ;DEVICE NAME INCLUDES CPU NUMBER DR.XAD==:1B30 ;EXTENDED ADDRESSING DRIVER DR.GCC==:1B31 ;GLOBAL CPU COUNTERS DR.DPU==:1B32 ;DO DUAL PORTED KDB/UDB LINK FIXUPS DR.UCK==:1B33 ;UNCACHE KDB DR.UCU==:1B34 ;UNCACHE UDB DR.UCD==:1B35 ;UNCACHE DDB ;WORD DRVCF2 DR.KTY==:37B4 ;KONTROLLER TYPE DR.LIM==:7B7 ;MAXIMUM DEVICES IN SYSTEM DR.DMX==:777B16 ;MAXIMUM DRIVES ON KONTROLLER DR.HDN==:777B25 ;HIGHEST DRIVE NUMBER ON KONTROLLER DR.SCK==:37B30 ;KDB/UDB SECTION NUMBER DR.SCD==:37B35 ;DDB SECTION NUMBER ;MACRO TO GENERATE DRIVER CHARACTERISTICS WORD DEFINE DRVCHR (PFX,DVT,LIM,KTY,DMX,HDN,SCK,SCD,FLG),< XLIST Z1== ;;INITIALIZE MASKS Z1==Z1! ;;DEVICE TYPE Z1==Z1! ;;FLAGS Z2==Z2! ;;KONTROLLER TYPE Z2==Z2! ;;MAXIMUM DEVICES IN SYSTEM Z2==Z2! ;;MAXIMUM NUMBER OF DRIVES Z2==Z2! ;;HIGHEST DRIVE NUMBER ON KONT Z2==Z2! ;;SECTION FOR KDB/UDB Z2==Z2! ;;SECTION FOR DDB LIST PFX'CNF==Z1 PFX'CN2==Z2 PFX'NAM== ;;GENERIC DEVICE NAME PFX'DMW== ;;WORDS NEEDED TO REPRESENT ALL ;; ALL DRIVES IN A BIT MASK PURGE Z1, Z2 ;;CLEAN UP SYMBOL TABLE > ;END DEFINE DRVCHR SUBTTL DRIVER INTERFACE -- DISPATCH TABLE .ORG 0 DRVLNK::!BLOCK 1 ;LINK TO NEXT DISPATCH DRVNAM::!BLOCK 1 ;GENERIC DEVICE NAME DRVKDB::!BLOCK 1 ;PROTOTYPE KDB ADDRESS DRVKLN::!BLOCK 1 ;PROTOTYPE KDB LENGTH DRVUDB::!BLOCK 1 ;PROTOTYPE UDB ADDRESS DRVULN::!BLOCK 1 ;PROTOTYPE UDB LENGTH DRVDDB::!BLOCK 1 ;PROTOTYPE DDB ADDRESS DRVDDL::!BLOCK 1 ;PROTOTYPE DDB LENGTH DRVULP::!BLOCK 1 ;PROTOTYPE UCODE LOADER BLOCK ADDRESS DRVULO::!BLOCK 1 ;PROTOTYPE UCODE LOADER OFFSET IN KDB DRVICD::!BLOCK 1 ;PROTOTYPE INTERRUPT CODE ADDRESS DRVICL::!BLOCK 1 ;PROTOTYPE INTERRUPT CODE LENGTH DRVCNF::!BLOCK 1 ;CHARACTERISTICS (MOSTLY BITS) DRVCF2::!BLOCK 1 ;MORE CHARACTERISTICS (BYTES) DRVPIC::!BLOCK 1 ;PI CHANNEL DRVINT::!BLOCK 1 ;INTERRUPT SERVICE DRVDIA::!BLOCK 1 ;DIAG. UUO DISPATCH DRVADF::! ;STARTING ADDRESS FOR SECTION ONE FIXUP DRVMDT::!BLOCK 1 ;MONGEN'ED DEVICE TABLE DRVCKT::!BLOCK 1 ;COMPATIBLE KONTROLLER TABLE DRVINI::!BLOCK 1 ;INITIALIZATION DRVCFG::!BLOCK 1 ;AUTOCONFIGURE DRVLEN::! ;LENGTH OF DISPATCH .ORG SUBTTL DRIVER INTERFACE -- DISPATCH TABLE GENERATION DEFINE DRVDSP (PFX,CHN,DDB,DDL,DIA),< XWD 0,0 ;;RESERVE SPACE FOR LINK WORD .LINK .LKDRV,.-1 ;;LINK INTO DRIVER DISPATCH CHAIN XLIST EXP PFX'NAM ;;GENERIC DEVICE NAME EXP PFX'KDB,PFX'KLN ;;PROTOTYPE KDB ADDRESS AND LENGTH EXP PFX'UDB,PFX'ULN ;;PROTOTYPE UDB ADDRESS AND LENGTH EXP DDB,DDL ;;PROTOTYPE DDB ADDRESS AND LENGTH EXP PFX'ULP,PFX'ULB ;;PROTOTYPE UCODE BLOCK AND KDB OFFSET EXP PFX'ICD,PFX'ICL ;;PROTOTYPE INTERRUPT CODE AND LENGTH EXP PFX'CNF ;;CHARACTERISTICS EXP PFX'CN2 ;;MORE CHARACTERISTICS EXP CHN ;;PI CHANNEL EXP PFX'INT ;;INTERRUPT SERVICE EXP DIA ;;DIAG. UUO DISPATCH EXP PFX'MDT## ;;MONGEN'ED DEVICE TABLE EXP PFX'CKT ;;COMPATIBLE KONTROLLER TABLE EXP 0 ;;INITIALIZATION EXP PFX'CFG ;;AUTOCONFIGURE LIST ;;DRVLEN==:DRVLEN ;;DETECT MULTIPLY DEFINED GLOBALS > ;END DEFINE DRVDSP SUBTTL DRIVER INTERFACE -- MONGEN'ED DEVICE TABLE ;MONGEN'ED DEVICE TABLE DEFINITIONS ; ;THE MONGEN'ED DEVICE TABLE (MDT) IS USED TO SPECIFY NON-STANDARD DEVICE ;CONDITIONS OR PARAMETERS THAT CANNOT BE DETERMINED DYNAMICALLY BY QUERYING ;THE DEVICE. STORAGE IS RESERVED FOR THE FOLLOWING QUANTITIES: ; ; CPU CPU NUMBER ; DVC KL10 = DEVICE CODE ; IVI KS10 = INTERRUPT VECTOR INDEX ; UNI MASSBUS UNIT ; DRV PHYSICAL DRIVE NUMBER ; FLG MISCELLANEOUS FLAGS ; DAT DEVICE DEPENDENT DATA ; ;THESE QUANTITIES ARE SPECIFIED THROUGH THE USE OF THE MD???? MACROS ;WHERE ???? IS THE PROCESSOR TYPE (I.E. KL10). THE MACROS ARE ;EXPANDED IN COMDEV INTO TABLES FOR EACH DRIVER WHICH IS LOADED IN ;THE MONITOR. ON THE KL10, THE TABLES CONSIST OF TWO-WORD PAIRS; THE ;FIRST WORD SPECIFYING THE DEVICE IN QUESTION, AND THE SECOND ;CONTAINING DEVICE DEPENDENT INFORMATION. ON THE KS10, THE TABLES ;OF THREE-WORD TRIPLETS; THE FIRST WORD SPECIFYING THE DEVICE IN ;QUESTION, THE SECOND SPECIFYING THE UNIBUS ADDRESS OF THE DEVICE, ;AND THE THIRD CONTAINING DEVICE DEPENDENT INFORMATION. MD.CPU==:7B2 ;CPU NUMBER IFN FTKL10, ;/4 IFN FTKS10, ;/4 MD.UNI==:7B12 ;MASSBUS UNIT NUMBER MD.DRV==:377B20 ;DRIVE NUMBER MD.KON==:1B21 ;KONTROLLER DEFINITION MD.ALL==:1B22 ;ALL UNITS ON KONTROLLER IFN FTKS10, ;UNIBUS ADDRESS (SECOND WORD OF MDT) DEFINE MDKL10 (CPU,DVC,UNI,DRV,FLG,DAT),< IFN FTKL10,< ZZ== ;;INITIALIZE MASK AND FLAGS ZZ==ZZ! ;;CPU NUMBER ZZ==ZZ!,MD.DVC)> ;;/4 ZZ==ZZ! ;;MASBUS UNIT NUMBER ZZ==ZZ! ;;INCLUDE FLAGS EXP , ;;STORE RESULTS >; END IFN FTKL10 > ;END DEFINE MDKL10 DEFINE MDKS10 (CPU,IVI,UAD,UNI,DRV,FLG,DAT),< IFN FTKS10,< ZZ== ;;INITIALIZE MASK AND FLAGS ZZ==ZZ! ;;CPU NUMBER ZZ==ZZ!,MD.IVI)> ;;/4 ZZ==ZZ! ;;MASBUS UNIT NUMBER ZZ==ZZ! ;;INCLUDE FLAGS ZZZ==UAD ;;UNIBUS ADDRESS EXP ,, ;;STORE RESULTS >; END IFN FTKS10 >; END DEFINE MDKS10 ;MACRO TO RESERVE STORAGE IN THE MONGEN'ED DEVICE TABLE FOR PER-CPU ;COUNTERS TO CONTROL THE ASSIGNMENT OF CONTROLLER OR DEVICE NAMES. DEFINE MDCPUN (C1,C2,C3,C4,C5,C6),< BYTE (5) C1,C2,C3,C4,C5,C6,00 BYTE (5) 00,00,00,00,00,00,00 > ;END DEFINE MDCPUN ;MACRO TO RESERVE MONGEN'ED DEVICE TABLE SLOTS FOR THOSE DEVICES WHICH ;MAY BE DYNAMICALLY CONFIGURED AS A RESULT OF A NON-AUTOCONFIGURE ACTION ;OF SOME MONITOR SERVICE ROUTINE. FOR EXAMPLE, CONSOLE FRONT END DEVICE ;INFORMATION IS PASSED TO THE MONITOR DURING SYSTEM INITIALIZATION. THIS ;DATA IS PATCHED INTO THE MONGEN'ED DEVICE TABLE FOR PRINTERS AND CARD ;READERS, AND IS USED BY THE APPROPRIATE DEVICE DRIVERS WHEN CALLED BY ;AUTCON. DEFINE MDPATD (NUM),< REPEAT *3, > ;END DEFINE MDPATD ;MACRO TO TERMINATE THE MONGEN'ED DEVICE TABLE DEFINE MDTERM, DEFINE KDBBEG (PFX,SIZ),< ...BAS==. ...END==...BAS+'SIZ ...SIZ=='SIZ IFN FTKL10,< SETWRD (KDBCNI,) SETWRD (KDBCNO,) SETWRD (KDBDTI,) SETWRD (KDBDTO,) SETWRD (KDBBKI,) SETWRD (KDBBKO,) >; END IFN FTKL10 > ;END DEFINE KDBBEG DEFINE KDBEND,< .ORG ...END PURGE ...BAS, ...END, ...SIZ > DEFINE SETWRD (OFS,VAL),< .ORG ...BAS+'OFS VAL > DEFINE UDBBEG (PFX,SIZ),< ...BAS==. ...END==...BAS+'SIZ ...SIZ=='SIZ > ;END DEFINE UDBBEG DEFINE UDBEND,< .ORG ...END PURGE ...BAS, ...END, ...SIZ > DEFINE DDBBEG (PFX,SIZ),< ...BAS==. ...END==...BAS+'SIZ ...SIZ=='SIZ > ;END DEFINE DDBBEG DEFINE DDBEND,< .ORG ...END PURGE ...BAS, ...END, ...SIZ > DEFINE EQUATE (TYP,VAL,SYM),< XLIST IRP SYM,< IFIDN , IFIDN ,< SYM==VAL> > ;;END IRP SYM LIST > ;END DEFINE EQUATE DEFINE WID (MASK),<<^L<-<_<^L>>-1>>> DEFINE POS (MASK),<<^L<&<->>>> DEFINE POINTR (LOC,MASK),<> DEFINE INSVL. (VALUE,MASK),<<<B)>>&>> SUBTTL CHANNEL DATA BLOCK (CHN) .ORG 0 CHNBSY::!BLOCK 1 ;CHANNEL IDLE/BUSY WORD ;=1 = IDLE ; 0 = BUSY ;+N = BUSY ;THIS MUST BE WORD ZERO OF THE CHANNEL DATA BLOCK ;SO AOSG @KDBCHN(W) WILL TEST AND SET BUSY IN ONE ;INSTRUCTION CHNSYS::!BLOCK 1 ;ADDRESS OF NEXT CHANNEL IN SYSTEM CHNLUE::!BLOCK 1 ;ADDRESS OF LAST UDB WITH SOFT OR HARD ERROR CHNICW::!BLOCK 1 ;INITIAL CONTROL WORD ON LAST SORT OR HARD ERROR ;(CONTENTS OF EVEN LOW CORE WORD) CHNFCW::!BLOCK 1 ;FINAL CONTROL WORD ON LAST SOFT OR HARD ERROR ;(WHAT CHANNEL STORES IN OLD LOW CORE WORD) ;LH = PRESENT CONTENTS OF CONTROL WORD ADDRESS COUNTER ;RH = PRESENT CONTENTS OF DATA ADDRESS COUNTER ;BECAUSE EACH DEVICE HANDLES ERROR TERMINATION ;DIFFERENTLY ON THE CHANNEL, THE SOFTWARE STORES 3 ;CONTROL WORDS AND 3 DATA WORDS 'AROUND' THE PROBLEM ;AREA AS INDICATED BY THE LH AND RH OF WHAT CHANNEL ;STORES IN .CHFCW. NO ATTEMPT IS MADE BY THE MONITOR ;TO DETERMINE WHICH OF THE 3 WORDS IS REALLY THE LAST ;CONTROL OR DATA WORD. THAT MUST BE DONE BY THE ;INVESTIGATING PERSONNEL. CHNCW2::!BLOCK 1 ;COMMAND WORD -2 ON LAST HARD OR SOFT ERROR CHNCW1::!BLOCK 1 ;COMMAND WORD -1 ON LAST HARD OR SOFT ERROR CHNCW0::!BLOCK 1 ;COMMAND WORD ON LAST HARD OR SOFT ERROR CHNDW2::!BLOCK 1 ;DATA WORD -2 ON LAST HARD OR SOFT ERROR CHNDW1::!BLOCK 1 ;DATA WORD -1 ON LAST HARD OR SOFT ERROR CHNDW0::!BLOCK 1 ;DATA WORD ON LAST HARD OR SOFT ERROR CHNMPE::!BLOCK 1 ;NUMBER OF MEMORY PARITIES CHNDPE::!BLOCK 1 ;NUMBER OF DATA PARITIES (FROM DEVICE) CHNNXM::!BLOCK 1 ;NUMBER OF NXMS OR DATA LATES (OVER RUN) CHNCSR::! ;LH = BITS TO REQUEST CPU TO SWEEP CORE ON BEHALF OF ; CHANNEL. STORED IN .CPAEF BY CHN MPE ROUTINE CHNLDE::!BLOCK 1 ; RH=LAST DEVICE DATA BLOCK ADR CHNETW::!BLOCK 1 ;EXPECTED TERMINATION CONTROL WORD OF LAST ERROR CHNECT::!BLOCK 1 ;ERROR COUNT SO FAR ON CURRENT DATA TRANSFER SET TO ;-1 = UNIT IS RECALIBRATING ; 0 = INCREMENTED AND TESTED BY FILSER (TO DSKTRY) ; NOT LOOKED AT BY INTERRUPT ROUTINE CHNRCT::!BLOCK 1 ;RECALIBRATE ERROR COUNT ON CURRENT DATA TRANSFER ;START AT 0 AND GOES TO RCLTRY. INCREMENTED EVERY ;TIME CHNECT COUNTS UP TO DSKTRY ;TOTAL TRIES = DSKTRY * RCLTRY CHNQUE::!BLOCK 1 ;LH = ADDRESS OF FIRST (LONGEST WAITING) DDB ; WAITING TO DO A DATA TRANSFER (TW QUEUE) ;RH = JOB NUMBER FOR DDB WHOSE ADDRESS IS IN LH ;BOTH HALVES = 0 IF NO FILES WAITING TO TRANSFER, ;SO A FAST TEST FOR EMPTY TRANSFER WAIT QUEUE ;NOTE - A FILE IN T STATES IS NOT IN TW QUEUE CHNTYP::!BLOCK 1 ;CHANNEL TYPE AND FLAGS ;LH BITS (DEFINED AS 18-BIT QUANTITIES) CP.DX1==:200000 ;DX10 CP.RH2==:100000 ;RH20 CP.R11==:40000 ;RH11 CP.LP2==:20000 ;UNIBUS/LP20 CP.CD2==:10000 ;UNIBUS/CD20 CP.KLP==:4000 ;KLIPA CP.KNI==:2000 ;KLNI ;*** BITS 12-14 FOR CUSTOMER USE CP.SAX==:40 ;SA10 CP.SWF==:1 ;CACHE SWEEP MUST BE DONE BEFORE INTERRUPT EXIT CHNIFP::!BLOCK 1 ;INITIAL FAIRNESS COUNT FOR POSITIONING UNITS ;ON THIS CHANNEL AFTER A DATA TRANSFER INTERRUPT. ;USED TO SET CHNCFP WHEN IT COUNTS TO ZERO. AN ;INITIAL VALUE OF 1 (OR 0) REDUCES THE SYSTEM ;POSITION ON A FIRST COME, FIRST SERVE BASIS ;(RATHER THAN THE NEAREST POSITION) ALL THE TIME CHNCFP::!BLOCK 1 ;CURRENT FAIRNESS COUNT FOR POSITIONING UNITS ON ;THIS CHANNEL AFTER A DATA TRANSFER INTERRUPT ;DECREMENTED BY 1 EACH DATA TRANSFER INTERRUPT ;ON THIS CHANNEL. I.E. NUMBER OF DATA TRANSFER ;INTERRUPTS LEFT BEFORE A POSITIONING REQUEST IS ;SELECTED ON THE BASIS OF LONGEST WAITING FILE ;("FAIR") RATHER THAN NEAREST (INCLUDING "ON ;CYLINDER") ("FAST") CHNIFT::!BLOCK 1 ;INITIAL FAIRNESS COUNT FOR DATA TRANSFERS ON THIS ;CHANNEL. USED TO SET CHNCFT WHEN IT COUNTS TO 0 CHBSCN::!BLOCK 1 ;SOFTWARE CHANNEL NUMBER - WORD ADDRESS CHSSCN==:^D9 ;BYTE SIZE CHNSCN==:^D8 ;BYTE POINTER POSITION CHNCFT::!BLOCK 1 ;CURRENT FAIRNESS COUNT FOR DATA TRANSFERS ON THIS ;CHANNEL. DECREMENTED BY 1 FOR EACH DATA TRANSFER ;INTERRUPT. WHEN REACHES 0, A DATA TRANSFER IS ;SELECTED ON THE BASIS OF THE LONGEST WAITING FILE ;WHICH IS IN POSITION ("FAIR") RATHER THAN THE ;SHORTEST LATENCY ("FAST"). CHNIFS::!BLOCK 1 ;INITIAL FAIRNESS COUNT FOR SWAPPING ON THIS CHANNEL CHNCFS::!BLOCK 1 ;CURRENT FAIRNESS COUNT FOR SWAPPING ON THIS CHANNEL. ;DECREMENTED BY 1 EACH TIME A SWAP OR PAGE OPERATION IS ;STARTED. A FILE OPERATION IS STARTED IF THIS COUNT IS ;;NEGATIVE AND FILE I/O IS PENDING CHNNUM::!BLOCK 1 ;LH = -1 ON ERRORS, ELSE 0 ;RH = NUMBER OF 128 WORD BLOCKS BEING TRANSFERRED ; ON THIS CHANNEL ON THE CURRENT TRANSFER. SETUP ; AT SAME TIME AS CHANNEL COMMAND LIST. NOT ; CLEARED AT END OF TRANSFER SO GOOD FOR LOOKING ; AT IN LIGHTS. CHNQUL::!BLOCK 1 ;LENGTH OF TRANSFER WAIT QUEUE CHNTCW::!BLOCK 1 ;EXPECTED TERMINATION CONTROL WORD. USED TO CHECK FOR ;ABNORMAL CHANNEL TERMINATION WITHOUT ERROR INDICATIONS ;FROM CONTROLLER CHNCUA::!BLOCK 1 ;CURRENT UNIT ACTIVE ON CHANNEL IFN FTKS10,< CHNUBA::!BLOCK 1 ;UNIBUS ADAPTER STATUS REGISTER ADDRESS ;LH = UNIBUS ADAPTER NUMBER ;RH = UNIBUS STATUS WORD ADDRESS CHNIMR::!BLOCK 1 ;ADDRESS OF INITIAL MAPPING REGISTER FOR THIS DEVICE CHNMRC::!BLOCK 1 ;NUMBER OF MAPPING REGISTERS AVAILABLE TO THIS DEVICE CHNIEA::!BLOCK 1 ;INITIAL ELEVEN STYLE ADDRESS FOR CURRENT TRANSFER CHNBTC::!BLOCK 1 ;ELEVEN STYLE BYTE COUNT FOR CURRENT TRANSFER CHNNXF::!BLOCK 1 ;NO TRANSFER FLAG ;-1 = NO TRANSFER ; 0 = NORMAL TRANSFER ;NO TRANSFER REQUESTS COME DOWN FROM FILSER WHEN IT ;WANTS TO READ A BLOCK BUT DO NO DATA TRANSFER ANYWHERE ;TO VERIFY THAT A PARTICULAR BLOCK IN FACT HAS ERRORS CHNDBF::!BLOCK 1 ;DUMMY 1-WORD BUFFER FOR BUS ADDRESS INHIBIT USAGE ;FOR EXAMPLE: READ A SECTOR, BUT TRANSFER NO DATA CHNRRV::!BLOCK 1 ;READ REVERSE FLAG ;-1 = READ REVERSE ; 0 = READ NORMAL >;END IFN FTKS10 CHNDVC::!BLOCK 1 ;AUTOCONFIGURATION CPU/DEVICE WORD ;FORMAT: B2 + /4 CHBCPU==:CHNDVC ;OWNING CPU NUMBER CHSCPU==^D3 ;BYTE SIZE CHNCPU==^D2 ;BYTE POINTER POSITION CHNTBP::!BLOCK 1 ;AOBJN POINTER TO KONTROLLERS ON THIS CHANNEL CHNKTB::!BLOCK ;STORAGE FOR KDB ADDRESSES CHNLEN::! ;LENGTH OF CHANNEL DATA BLOCK .ORG SUBTTL KONTROLLER DATA BLOCK (KDB) -- OFFSETS COMMON TO ALL CONTROLLERS .ORG 0 KDBNAM::!BLOCK 1 ;SIXBIT NAME OF CONTROLLER KDBNXT::!BLOCK 1 ;LINK TO NEXT CONTROLLER IN SYSTEM KDBCAM::!BLOCK 1 ;CPU ACCESSIBILITY MASK KDBCHN::!BLOCK 1 ;CHANNEL DATA BLOCK ADDRESS KDBIUN::!BLOCK 1 ;INITIAL POINTER TO UNITS KDBFUN::!BLOCK 1 ;FINAL POINTER TO UNITS KDBCUN::!BLOCK 1 ;CURRENT POINTER TO UNITS KDBIUM::!BLOCK 1 ;OFFSET TO IGNORE MASK KDBNUM::!BLOCK 1 ;OFFSET TO NEW UNIT MASK KDBICP::!BLOCK 1 ;ADDRESS OF INITIAL CHANNEL PROGRAM KDBDSP::!BLOCK 1 ;ADDRESS OF CONTROLLER DISPATCH TABLE KDBSER::!BLOCK 2 ;KONTROLLER SERIAL NUMBER KDBSTS::!BLOCK 1 ;STATUS WORD KD.MPD==:1B0 ;MULTI-PORTED DEVICE KD.APC==:1B1 ;ALL PORTS CONFIGURED KD.MPT==:17B5 ;MAXIMUM NUMBER OF PORTS KDBPCC::!BLOCK 1 ;# WORDS,,STARTING OFFSET INDICATING ; PHYSICALLY CONTIGUOUS CORE REQUIREMENTS IFN FTKL10,< KDBCSO::!BLOCK 1 ;CONSO SKIP CHAIN POINTER > ;END IFN FTKL10 KDBVIN::!BLOCK 1 ;VECTOR INTERRUPT POINTER KDBDVC::!BLOCK 1 ;DEVICE CODE OR UNIBUS BASE ADDRESS KDBIOB::! ;START OF WORDS CONTAINING I/O INSTRUCTIONS KDBCNI::!BLOCK 1 ;CONI DEV,T1 KDBCNO::!BLOCK 1 ;CONO DEV,(T1) KDBDTI::!BLOCK 1 ;DATAI DEV,T2 KDBDTO::!BLOCK 1 ;DATAO DEV,T2 KDBBKI::!BLOCK 1 ;BLKI DEV,T2 KDBBKO::!BLOCK 1 ;BLKO DEV,T2 KDBIOE::! ;END OF WORDS CONTAINING I/O INSTRUCTIONS KDBIVI::!BLOCK 1 ;DATAO CONTENTS TO SET UP INTERRUPT VECTOR KDBUNI::!BLOCK 1 ;MASSBUS UNIT NUMBER,,ATTENTION BIT ;UNIT = -1 ON NON-MULTI UNIT KONTROLLERS KDBSIZ::! ;LENGTH OF COMMON KDB .ORG SUBTTL UNIT DATA BLOCK (UDB) -- OFFSETS COMMON TO ALL KONTROLLERS .ORG 0 UDBNAM::!BLOCK 1 ;UNIT NAME UDBPDN::!BLOCK 1 ;PHYSICAL DRIVE NUMBER UDBDSN::!BLOCK 2 ;DRIVE SERIAL NUMBER UDBKDB::!BLOCK ;KDB ADDRESSES FOR EACH PORT UDBCAM::!BLOCK 1 ;CPU ACCESSIBILITY MASK UDBDDB::!BLOCK 1 ;NORMAL DDB ADDRESS UDBPCC::!BLOCK 1 ;NUMBER OF WORDS,,STARTING OFFSET INDICATING ; PHYSICALLY CONTIGUOUS CORE REQUIREMENTS UDBSIZ::! ;LENGTH OF COMMON UDB .ORG SUBTTL GENERAL DEFINITIONS -- SXX -- IBM CHANNEL SENSE BYTES ;SENSE BYTES COMMON TO ALL IBM CHANNEL DEVICES ARE DEFINED HERE; ;DEVICE-DEPENDENT SENSE BYTES ARE DEFINED LATER. S00WRD==0 ;SENSE BYTE 0 (PDP-10 WORD 0 BYTE 0) S00REJ==1B0 ;COMMAND REJECT S00IRQ==1B1 ;INTERVENTION REQUIRED S00BOC==1B2 ;BUS OUT CHECK S00EQP==1B3 ;EQUIPMENT CHECK S00DCK==1B4 ;DATA CHECK S00OVR==1B5 ;OVERRUN S00WCZ==1B6 ;WORD COUNT ZERO S00DCC==1B7 ;DATA CONVERTER CHECK S01WRD==0 ;SENSE BYTE 1 (PDP-10 WORD 0 BYTE 1) S02WRD==0 ;SENSE BYTE 2 (PDP-10 WORD 0 BYTE 2) S03WRD==0 ;SENSE BYTE 3 (PDP-10 WORD 0 BYTE 3) S04WRD==1 ;SENSE BYTE 4 (PDP-10 WORD 1 BYTE 0) S05WRD==1 ;SENSE BYTE 5 (PDP-10 WORD 1 BYTE 1) S06WRD==1 ;SENSE BYTE 6 (PDP-10 WORD 1 BYTE 2) S07WRD==1 ;SENSE BYTE 7 (PDP-10 WORD 1 BYTE 3) S08WRD==2 ;SENSE BYTE 8 (PDP-10 WORD 2 BYTE 0) S09WRD==2 ;SENSE BYTE 9 (PDP-10 WORD 2 BYTE 1) S10WRD==2 ;SENSE BYTE 10 (PDP-10 WORD 2 BYTE 2) S11WRD==2 ;SENSE BYTE 11 (PDP-10 WORD 2 BYTE 3) S12WRD==3 ;SENSE BYTE 12 (PDP-10 WORD 3 BYTE 0) S13WRD==3 ;SENSE BYTE 13 (PDP-10 WORD 3 BYTE 1) S14WRD==3 ;SENSE BYTE 14 (PDP-10 WORD 3 BYTE 2) S15WRD==3 ;SENSE BYTE 15 (PDP-10 WORD 3 BYTE 3) S16WRD==4 ;SENSE BYTE 16 (PDP-10 WORD 4 BYTE 0) S17WRD==4 ;SENSE BYTE 17 (PDP-10 WORD 4 BYTE 1) S18WRD==4 ;SENSE BYTE 18 (PDP-10 WORD 4 BYTE 2) S19WRD==4 ;SENSE BYTE 19 (PDP-10 WORD 4 BYTE 3) S20WRD==5 ;SENSE BYTE 20 (PDP-10 WORD 4 BYTE 0) S21WRD==5 ;SENSE BYTE 21 (PDP-10 WORD 4 BYTE 1) S22WRD==5 ;SENSE BYTE 22 (PDP-10 WORD 4 BYTE 2) S23WRD==5 ;SENSE BYTE 23 (PDP-10 WORD 4 BYTE 3) SUBTTL DISK DEFINITIONS -- KONTROLLER TYPES ;KONTROLLER TYPES TYPDR==:0 ;DR (FUTURE DRUM) TYPFH==:1 ;FH (RC10/RM10B BURROUGHS DISK OR BRYANT DRUM) TYPDP==:2 ;DP (RP10 MEMOREX) TYPMD==:3 ;MD (BRYANT MASS [MOBY] DISK) TYPFS==:4 ;FS (RH10) TYPRP==:5 ;RP (RH10/RH11/RH20) TYPRN==:6 ;RN (RH20/DX20/RP20CT) TYPRA==:7 ;RA (CI20/HSC) ;*** 10 - 12 RESERVED FOR FUTURE USE BY DIGITAL ;*** 13 - 17 RESERVED FOR CUSTOMER TYPE CODES TYPDS==:17 ;DS (SA10/IBM CHANNEL DISKS) SUBTTL DISK DEFINITION -- SXX - IBM CHANNEL SENSE BYTES ;S01WRD==0 ;SENSE BYTE 1 (PDP-10 WORD 0 BYTE 1) D01PME==1B8 ;PERMANENT ERROR D01ITF==1B9 ;INVALID TRACK FORMAT D01EOC==1B10 ;END OF CYLINDER ;BIT 11 UNUSED D01NRF==1B12 ;NO RECORD FOUND D01FPR==1B13 ;FILE PROTECTED D01WRL==1B14 ;WRITE-LOCKED D01OPI==1B15 ;OPERATION INCOMPLETE ;S02WRD==0 ;SENSE BYTE 2 (PDP-10 WORD 0 BYTE 2) D02COR==1B17 ;CORRECTABLE ERROR D02EDP==1B19 ;ENVIRONMENTAL DATA PRESENT ;S07WRD==7 ;SENSE BYTE 7 (PDP-10 WORD 1 BYTE 3) D07FMC==377B31 ;FORMAT/MESSAGE CODE FMCECC==123 ;FORMAT 5, MESSAGE 3="CORRECTABLE DATA AREA" ;S15WRD==3 ;SENSE BYTE 15 (PDP-10 WORD 3 BYTE 3) D15RD1==377B31 ;1ST OF 3 BYTES OF RESTART DISPLACEMENT ;S16WRD==4 ;SENSE BYTE 16 PDP-10 WORD 4 BYTES 0,1) D16RD2==177777B15 ;2ND AND 3RD OF 3 BYTES OF RESTART DISPLACEMENT D16ERD==177777B31 ;1ST AND 2ND OF 2 BYTES OF ERROR DISPLACEMENT ;S20WRD==5 ;SENSE BYTE 20 PDP-10 WORD 5 D16EC1==377B7 ;1ST OF 3 ECC PATTERN BYTES D16EC2==377B15 ;2ND OF 3 ECC PATTERN BYTES D16EC3==377B23 ;3RD OF 3 ECC PATTERN BYTES ;S23WRD==5 ;SENSE BYTE 23 (PDP-10 WORD 4 BYTE 3) D23CHT==1B31 ;CHANNEL TRUNCATION OCCURRED SUBTTL DISK DEFINITIONS -- COMMON KONTROLLER DATA BLOCK MACRO DEFINE XXKON (PFX),< KDBBEG (PFX,\PFX'XKLN) SETWRD (KDBNAM,) SETWRD (KDBIUN,) SETWRD (KDBCUN,) SETWRD (KDBIUM,) SETWRD (KDBNUM,) SETWRD (KONPTR,) SETWRD (KONREG,\) SETWRD (KONEBK,PFX'XEBK) SETWRD (KONRED,) SETWRD (KONRDS,PFX'XRDS) SETWRD (KONRDF,PFX'XRDF) SETWRD (KONRDC,) SETWRD (KONWRT,PFX'XWRT) SETWRD (KONWTS,PFX'XWTS) SETWRD (KONWTF,PFX'XWTF) SETWRD (KONWTC,) SETWRD (KONUNL,) SETWRD (KONPOS,) SETWRD (KONLTM,) SETWRD (KONUPA,PFX'XUPA) SETWRD (KONCPY,) SETWRD (KONHWP,) SETWRD (KONRCL,) SETWRD (KONSTP,PFX'XSTP) SETWRD (KONERR,) SETWRD (KONECC,) SETWRD (KONRRG,PFX'XREG) SETWRD (KONCCM,PFX'XCCM) SETWRD (KONALV,PFX'XALV) SETWRD (KONRLD,PFX'XRLD) SETWRD (KONEDL,PFX'XEDL) SETWRD (KONSEC,PFX'XSEC) >; END DEFINE XXKON SUBTTL DISK DEFINITIONS -- KON - KONTROLLER DATA BLOCK CPUMSK==:77 ;SYMBOL FOR MASK OF ALL CPU BITS .ORG KDBSIZ KONBSY::!BLOCK 1 ;LH = KONTROLLER BUSY FLAG (SIGN BIT) KOPBSY==:400000 ;KONTROLLER IS BUSY WHEN SET IFN FTCIDSK,< KOPBND==:1 ;THIS KON ALREADY BOUND (ONCE ONLY) >; END IFN FTCIDSK KONCNT::!BLOCK 1 ;NUMBER OF WORDS IN TRANSFER ON FORMAT ;DISPATCH TABLE KONRED::!BLOCK 1 ;READ KONBMX==:KONRED ;BLOCK MULTIPLEX KONTROLLER KOPBMX==:(1B0) ;BLOCK MULTIPLEX KONTROLLER ;MUST BE SIGN BIT KOBKTP==:KONRED ;KONTROLLER TYPE KOSKTP==^D6 ;BYTE SIZE KONKTP==^D8 ;BYTE PTR POS KONRDS::!BLOCK 1 ;READ, STOP ON ERR KOBKNM==:KONRDS ;KONTROLLER NUMBER KOSKNM==^D6 ;BYTE SIZE KONKNM==^D8 ;BYTE PTR POS KONRDF::!BLOCK 1 ;READ HEADER AND DATA KONRDC::!BLOCK 1 ;READ IN 10/11 COMPAT. MODE KONWRT::!BLOCK 1 ;WRITE KONWTS::!BLOCK 1 ;WRITE, STOP ON ERR KONCNA==:KONWTS ;CREDITS NOT AVAILABLE KOPCNA==:(1B0) ;DON'T QUEUE ANYTHING MORE ;MUST BE SIGN BIT KONWTF::!BLOCK 1 ;WRITE FORMAT KONWTC::!BLOCK 1 ;WRITE IN 10/11 COMPAT. MODE KONUNL::!BLOCK 1 ;UNLOAD A DRIVE KONPOS::!BLOCK 1 ;POSITION KOPFIX==:400000 ;BIT 0=1 IF FIXED HEAD DEV KOPPWX==:200000 ;BIT 1=1 IF CAN SEEK WHILE XFER IN PROGRESS KONLTM::!BLOCK 1 ;RETURN TIME TO BEGINNING OF TRANSFER KONMX==:KONLTM ;MULTI XFERS KOPMX==400000 ;DRIVE CAN DO MULTIPLE XFERS AT SAME TIME KONUPA::!BLOCK 1 ;TEST IF KONTROLLER IS ON-LINE KONDWN==:KONUPA ;KONTROLLER IS DOWN KOPDWN==:400000 ;THE BIT (SET BY KONCHK - NOT BY XXXUPA) ;KONTROLLER OFFLINE WHEN SYSTEM STARTED ;AND OPERATOR COULD NOT PUT IT ONLINE ;SKIP RETURN IF YES, NO SKIP IF NOT KOPWHL==:200000 ;WRITE-HEADER-LOCKOUT SWITCH IS "WRONG" KONMPS==:KONUPA ;WORD OFFSET TO TEST KOPMPS BIT KOPMPS==:100000 ;THIS KDB REPRESENTS A MICROCODED ;DISK CONTROLLER AND THE MICROPROCESSOR ;HAS STOPPED. KONCPY::!BLOCK 1 ;DETERMINE TYPE & CAPACITY OF UNIT KOPIDL==:400000 ;KONTROLLER MUST BE IDLE TO READ UNIT TYPE KOPUHE==:200000 ;UNIT HAD ERROR OF ANY KIND - LH T4 VALUE KOPNSU==:100000 ;NO SUCH UNIT - LH T4 VALUE KONRCL::!BLOCK 1 ;RECALIBRATE THIS UNIT KONDRB==:KONRCL ;WORD OFFSET TO TEST KOPDRB BIT KOPDRB==:(1B0) ;DRIVER HANDLES I/O VIA DISK IORBS KONSTP::!BLOCK 1 ;STOP A HUNG UNIT KONHWP::!BLOCK 1 ;CHECK HARDWARE WRITE PROTECT KONCUA::!BLOCK 1 ;UDB ADDRESS DOING DATA XFER (OR LAST ONE) KONPTR::!BLOCK 1 ;USED TO PICKUP UNIT DATA BLOCK ADDRESS KONDMP::!BLOCK 1 ;STORAGE FOR DEVDMP WHEN STARTING DUMP MODE I/O KONERR::!BLOCK 1 ;ERROR RECOVERY PROGRAM IN KONTROL ROUTINE KONECC::!BLOCK 1 ;GENERATE ECC MASK, POSITION KONECA==:KONECC ;KONTROLLER KNOWS THAT ECC CAN BE DONE KOPECA==:(1B0) ;WE KNOW ECC CAN BE DONE WITHOUT ERROR KONRRG::!BLOCK 1 ;READ DRIVE REGISTERS KONCCM::!BLOCK 1 ;COMPUTE DISTANCE FROM CYLINDER KONALV::!BLOCK 1 ;ENSURE KONTROLLER HAS A PIA KONRLD::!BLOCK 1 ;RELOAD DISK CONTROLLER KONEDL::!BLOCK 1 ;ENABLE/DISABLE MICROCODE LOADING KONSEC::!BLOCK 1 ;ONCE PER SECOND CALL ;THESE MUST BE THE LAST LOCATIONS IN THE KDB BEFORE KONTROLLER-DEPENDENT STUFF KONECR::!BLOCK 1 ;CONTROL REG ON ERROR KONEDB::!BLOCK 1 ;DATA BUFFER REG ON ERROR KONREG::!BLOCK 1 ;NUMBER OF DRIVE REGISTERS TO SAVE ON ERR KONEBK::!BLOCK 1 ;ADDRESS OF DRIVE REGISTER STORAGE KONUDB::! ;TABLE OF POINTERS TO UDBS .ORG SUBTTL DISK DEFINITIONS -- OP - DRIVER DISPATCH OFFSETS .ORG 0 OPRED::!BLOCK 1 ;(00) READ OPWRT::!BLOCK 1 ;(01) WRITE BLOCK 1 ;(02) OPWTF::!BLOCK 1 ;(03) FORMAT OPPOS::!BLOCK 1 ;(04) POSITION OPCLR::!BLOCK 1 ;(05) CLEAR OPSEL::!BLOCK 1 ;(06) SELECT OPCAL::!BLOCK 1 ;(07) RECALIBRATE OPLEN::! ;LENGTH OF DISPATCH .ORG SUBTTL DISK DEFINITIONS -- MISCELLANEOUS KOPOFL==:400000 ;'OFF-LINE' OR 'NOT-READY' OR 'FILE UNSAFE' BIT ; (LIGHTS UNPOFL IN UNIDES) KOPFUS==:200000 ;FILE UNSAFE - ADD TO MESSAGE TO OPERATOR KOPUSI==:100000 ;UNIT STATUS INCONSISTENT KOPWLK==:040000 ;WRITE LOCK (IF ALL THE OTHER BITS ARE OFF, THEN ;THE PROBLEM IS ASSUMED TO BE WRITE LOCK). KOPNOC==:020000 ;(CI ONLY) NO CREDITS KOPDER==:010000 ;(CI ONLY) DEVICE ERROR KONERM==:KOPOFL+KOPFUS+KOPUSI+KOPWLK+KOPNOC+KOPDER ;ALL ERRORS SUBTTL DISK DEFINITIONS -- UNIT DATA BLOCK .ORG UDBSIZ UNILOG::!BLOCK 1 ;SIXBIT LOGICAL UNIT NAME WITHIN STR ; LAST DIGIT OR TWO IS 0 TO 77 LEFT JUSTIFIED UNIHID::!BLOCK 1 ;SIXBIT HOME BLOCK IDNAME - NEVER CHANGED IN HOME BLOCK UNISYS::!BLOCK 1 ;LH=CORE ADDRESS (ACROSS POINTER) OF NEXT UNIT DATA ; BLOCK IN SYSTEM, LH=0 IN LAST UNIT IN SYSTEM UNISIC==:UNISYS ;# SAT BLOCKS IN CORE FOR THIS UNIT UNSSIC==^D8 ;BYTE SIZE UNNSIC==^D25 ;BYTE PTR POS UNILUN==:UNISYS ;LOGICAL UNIT NUMBER WITHIN FILE STRUCTURE OF THIS UNIT UNSLUN==^D6 ;BYTE SIZE UNNLUN==^D35 ;BYTE PTR POS UNISTR::!BLOCK 1 ;LH=ADDRESS OF NEXT UNIT DATA BLOCK IN STR ; LH=0 IN LAST UNIT IN FILE STRUCTURE ;RH=UPWARD POINTER TO FILE STR. DATA BLOCK. ;WORD=0 IF THIS UNIT IS NOT IN AN STR UNICHN::!BLOCK 1 ;ADDRESS OF NEXT UNIT DATA BLOCK ON SAME CHANNEL ; LAST UNIT POINTS BACK TO FIRST UNIT (RING) UNIKON::!BLOCK 1 ;ADDRESS OF NEXT UNIT DATA BLOCK ON SAME KON ; LAST UNIT POINTS BACK TO FIRST UNIT (RING) UNISWP::!BLOCK 1 ;LH=CORE ADDR OF NEXT UNIT FOR SWAPPING UNICFS==:UNISWP ;RH CONTAINS BYTE WHICH IS CLASS FOR SWAPPING ;SWAPPER WILL TRY EVERYTHING TO SWAP ON ONE CLASS ;BEFORE TRYING NEXT CLASS, TO KEEP ON FASTEST UNITS UNSCFS==^D3 ;BYTE SIZE UNNCFS==^D22 ;BYTE PTR POS ;ERROR STATISTICS: UNIHCT::!BLOCK 1 ;NO. OF HARD DISK ERRORS ON THIS UNIT (RETRYS FAILED ; TO CLEAR ERROR) ;LH=NO. DEVICE+SEEK + SEARCH ERRORS(IODERR)(CHAN+CONTROL) ;(SEE UNIPCT) ;RH=NO. DATA ERRORS(IODTER)(HARDWARE DEVICE DATA PARITY) UNISCT::!BLOCK 1 ;NO. OF SOFT + NO. OF HARD ERRORS - INCREMENTED ; ONCE WHEN SUCCESS FOLLOWS ONE OR MORE FAILURES ; NOT INCREMENTED ON HARD ERRORS ;LH=NO. SOFT+HARD DEVICE+SEARCH ERRORS(SEE UNIPCT) ;RH=NO SOFT+HARD DATA ERRORS UNIMCT::!BLOCK 1 ;NO. OF MONITOR DETECTED ERRORS(THREE 12-BIT FIELDS) ; USER PROGRAM SEES IOIMPM ERROR BIT SET FOR ALL 3 TYPES OF ERRORS UNPSER==:100 ;NO. OF SAT FAILURES(NO. OF FREE CLUSTERS ON DISK SAT ; DISAGREE WITH EXPECTED NO AS STORED IN CORE) UNPRER==:10000 ;NO. OF RIB REDUNDANT INFO FAILED TO COMPARE UNPCER==:1 ;NO. OF SOFTWARE FOLDED CHECKSUM FAILURES(USER IO BUT NOT ; SWAP) (MUST BE RIGHT JUSTIFIED FOR AOS) UNIERR::!BLOCK 1 ;LAST ERROR DEVICE STATUS WHICH OCCURRED ON THIS UNIT ; AFTER FIRST RECOVERY ATTEMPT FAILED. SET BY ; MOVEM T2,UNIERR(U) IN FILSER WHERE T2 IS SET DIRECTLY ; FROM KONTROLLER STATUS WORD IN KONTROLLER DEPENDENT ; ROUTINE. IF RECOVERY SUCCEEDS BEFORE FIRST RECAL, ; UNIERR WILL CONTAIN 0 UNISOF::!BLOCK 1 ;LAST ERROR DEVICE STATUS ON THIS UNIT ; BEFORE ANY RECOVERY ATTEMPTED ; DEVICE, DATA, SEARCH, HUNG ERRORS UNIHBN::!BLOCK 1 ;LAST LOGICAL BLOCK NUMBER ON HARD OR SOFT ERROR ;PERFORMANCE MONITORING DATA LOCATIONS: ;NOTE FOLLOWING 6 ENTRIES ARE MUTUALLY EXCLUSIVE AND ACCOUNT FOR ALL ; TRANSFERS ON THIS UNIT (EXCEPT ERROR RETRYS) ;WRITE COUNT MUST BE READ COUNT+1 UNIBRC::!BLOCK 1 ;NO. OF BUFFERED MODE 128 WORD BLOCKS READ UNIBWC::!BLOCK 1 ;NO. OF BUFFERRED MODE 128 WORD BLOCKS WRITTEN UNIDRC::!BLOCK 1 ;NO. OF DUMP MODE 128 WORD BLOCKS READ(INCLUDEING GETS) UNIDWC::!BLOCK 1 ;NO. OF DUMP MODE 128 WORD BLOCKS WRITTEN(INCLUDING SAVES) UNIMRC::!BLOCK 1 ;NO. OF MONITOR 128 WORD BLOCKS READ(SAT,UFD,MFD,BAT,SWAP) UNIMWC::!BLOCK 1 ;NO. OF MONITOR 128 WORD BLOCKS WRITTEN(SAT,UFD,MFD,BAT,SWAP) ;NOTE: TO COMPUTE NO. OF MONITOR OVERHEAD READS(WRITES) ; SUBTRACT UNIICT(UNIOCT) FROM UNIMRC(UNIMWC) UNIICT::!BLOCK 1 ;NO. OF 128 WORD BLOCKS SWAPPED IN(SET BY SWPINT) UNIOCT::!BLOCK 1 ;NO. OF 128 WORD BLOCKS SWAPPED OUT(SET BY SWPINT) ;NOTE: FOLLOWING 2 ENTRIES ARE MUTUALLY EXCLUSIVE AND ACCOUNT FOR ALL SEEKS ; ON THIS UNIT EXCEPT END OF CYLINDER AND RECALIBRATION AND SEEK UUOS UNIMSC::!BLOCK 1 ;COUNT OF NO. OF MONITOR+SWAP SEEKS UNIUSC::!BLOCK 1 ;COUNT OF NO. OF USER (BUFFER+DUMP) SEEKS ; (INCLUDES GETS AND SAVES) ;MORE ERROR STATISTICS: UNIPCT::!BLOCK 1 ;SEEK INCOMPLETE ERRORS (UPDATED BY KONTOLLER ROUTINES ; RATHER THAN FILSER). NOTE THIS IS DIFFERENT FROM ; SEARCH ERRORS (SEE UNIHCT,UNISCT) ;RH=SOFT+HARD SEEK-INCOMPLETE FAILURES ;LH=POSITIONING FAILURES ;HARD ERRORS ARE REPORTED TO FILSER AS DEVICE ERRORS TOO ;FILSER RETRYS 'DSKTRY' TIMES AND COUNTS IN LH UNIHCT,UNISCT UNIFKS::!BLOCK 1 ;FREE K FOR SWAPPING ON THIS UNIT ; 0 MEANS FULL OR UNIT DOESN'T HAVE SWAPPING SPACE ALLOCATED UNISUN==:UNIFKS ;THIS LOCATION TIME-SHARED BY ONCE ONLY CODE TO ; REMEMBER LOG. UNIT # OF UNIT IN ACTIVE SWAPPING LIST ; -1 IF NOT IN LIST. UNISDI::!BLOCK 1 ;LAST ERROR DATAI STATUS WORD ; DATA,DEVICE,SEARCH HUNG ERRORS BEFORE RECOVERY ATTEMPTED UNIHDI::!BLOCK 1 ;LAST ERROR DATAI STATUS WORD ; DATA,DEVICE,SEARCH ERRORS AFTER FIRST RECOVERY ATTEMPT FAILS UNIECT::!BLOCK 1 ;NO. OF CONSECUTIVE TIMES AN ERROR STATUS WAS RETURNED ; FOR THE LAST OPERATION ON THIS UNIT. (IE, FIRST+RETRIES ; WITH ERRORS). SET BACK TO 1 ON FIRST ERROR, RATHER THAN ; BEGINNING OF NEW OPERATION, SO USER PROGRAMS HAVE MORE ; TIME TO LOOK AT IT. UNPFIR==:400000 ;SIGN BIT (UNPFIR)=1 DURING FIRST TRY, 0 DURING RETRIES ; THIS BIT IS TOO DYNAMIC TO BE USEFUL FOR DAEMON ERR ; REPORTING UNPHRD==:200000 ;UNPHRD=1 IF LAST ERROR WAS HARD, RESET WHEN RETRY COUNTER ; RESET SO IT IS USEFUL FOR ERROR REPORTING UNPHNG==:100000 ;SET IF DRIVE WAS HUNG UNPECC==:40000 ;SET IF SOME RETRY WAS ECC-CORRECTABLE UNPECE==:20000 ;SET IF ALLOWING ECC-CORRECTION OF ERRORS UNIHNG::!BLOCK 1 ;RH=NO. OF TIME OUTS WHICH WERE RECOVERED UNPHNR==:1000 ;LH BIT TO COUNT HUNGS NOT RECOVERED BY ; STOPPING UNIT (KONSTP) UNIT IN TRANSFER STATE UNPHRC==:1 ;LH BIT TO COUNT HUNGS RECOVERED BY ; STOPPING UNIT (KONSTP) UNIT IN TRANSFER STATE UNPHRS==:1 ;RH BIT TO COUNT HUNGS RECOVERED BY ; RESTARTING UNIT (UUOTWQ OR PIKTRN) ; UNIT WAS IDLE OR TRANSFER WAIT ; AND CHANNEL WAS IDLE. (MUST BE BIT 35 FOR AOS) UNPHPS==:1000 ;RH BIT TO COUNT NUMBER OF HUNGS ; CAUSED (AND RECOVERED WITHOUT OPERATOR INTEVENTION) ; BY UNIT IN POSITION STATE UNISTS::!BLOCK 1 ;STATUS WORD FOR UNIT - SET, CHANGED BY FILSER ONLY ;ONLY WHOLE WORD USED SO THAT EXCH TRICK CAN BE USED ;THESE SAME CODES ARE USED IN DEYCOD BYTE ICOD==:0 ;IDLE - NO POSITIONING OR TRANSFERRING AND NO QUEUED ; REQUESTS FOR POSITIONING OR TRANSFERRING PWCOD==:ICOD+1 ;WAITING TO POSITION WITH IMPLIED TRANSFER INTENDED PCOD==:PWCOD+1 ;IN PROCESS OF POSITIONING TWCOD==:PCOD+1 ;WAITING TO DO DATA TRANSFER TCOD==:TWCOD+1 ;IN PROCESS OF DATA TRANSFER MDACOD==:TCOD+1 ;ONLY USABLE BY MDA (REREAD HOM BLOCKS, NO COMPARE) ;NOTE THAT THE FOLLOWING CODES MUST BE THE HIGHEST DEFINED OWCOD==:MDACOD+1 ;WAITING FOR OPERATOR INTERVENTION, FILE IN T STATE OCOD==:OWCOD+1 ;WAITING FOR OPR INTERVENTION, NO FILE ACTIVE OW2COD==:OWCOD+2 ;OW, BUT NO MESSAGE ONCE A MINUTE O2COD==:OCOD+2 ;O, BUT NO MESSAGE UNICCT::!BLOCK 1 UNIBCT==:UNICCT ;BITS 9-17 = NUMBER OF SLOTS LEFT IN BAT BLOCK FOR UNIT ; 777 MEANS DONT KNOW UNSBCT==^D9 ;BYTE SIZE UNNBCT==^D17 ;POSITION UNISNS==:UNICCT ;BITS 0-8=SECTION NUMBER OF SECTION ; CONTAINING SWAPPING SATS UNSSNS==^D9 ;BYTE SIZE UNNSNS==^D8 ;BYTE POSITION UNIHOM::!BLOCK 1 ;LOGICAL DISK BLOCK NO. WITHIN UNIT (NOT STR) OF THE ; TWO HOME BLOCKS ON THIS UNIT. ;LH=FIRST HOME BLOCK, RH=REDUNDANT ONE. NOTE: ; LOGICAL BLOCK NOS. ARE NOT USUALLY RESTRICTED TO ; ANYTHING LESS THAN 36 BITS. HOWEVER THE HOME BLOCKS ARE ; RESTRICTED TO BEING LOCATED SOMEWHERE ON THE FIRST ; 262,000 BLOCKS ON THIS UNIT ;THESE ARE THE ONLY DISK ADDRESSES ASSEMBLED INTO THE ; MONITOR. ALL OTHER DISK ADDRESSES ARE ; STORED ON THE DISK, STARTING WITH THE HOME BLOCK UNIQUE::!BLOCK 1 ;LH=ADDRESS OF FIRST (LONGEST WAITING) DEVICE DATA BLOCK (FILE) ; IN POSITION WAIT FOR THIS UNIT (PW QUEUE) ;RH=JOB NUMBER FOR DDB WHOSE ADDRESS IS IN LH ;AS A FLAG, BOTH HALVES ARE SET TO 0 WHEN NO FILES IN ; POSITION WAIT QUEUE. ;NOTE: THE FILE WHICH IS IN P STATE IS NOT IN QUEUE UNIGRP::!BLOCK 1 ;LH=NO. OF SEQUENTIAL BLOCKS (NOT CLUSTERS) TO TRY ON ; SEQUENTIAL OUTPUT (CAN BE CHANGED WITHOUT REFRESHING) ;BITS 22-26 UNUSED IFN FTMP,< UNIPWQ==:UNIGRP ;BIT 18 ON IF THERE IS AN OUTSTANDING CLOCK REQUEST ; FOR THE OTHER CPU TO PROCESS ITS POSITION WAIT QUEUE UNPPWQ==:1B18 >; END IFN FTMP UNINDU==:UNIGRP ;BIT 19 ON IF WANT TO FLUSH UNIT FROM DISK CACHE UNPNDU==:1B19 UNIRHP==:UNIGRP ;BIT 20 ON IF REHEAD OF HOME IS IN PROGRESS UNPRHP==:1B20 UNIMSG==:UNIGRP ;BIT 21 ON IF UNIT OFFLINE MSG HAS BEEN PRINTED THIS MINUTE UNPMSG==:1B21 UNILKP==:UNIGRP ;BITS 27-35 = LAST KNOWN POSITION OF DISK ; MEANINGFUL ONLY FOR RP20 UNSLKP==^D9 ;BYTE SIZE UNNLKP==^D35 ;BYTE PTR POS UNIBPU::!BLOCK 1 ;NO. OF LOGICAL BLOCKS PER UNIT(RETURNED BY DSKCHR) UNIBPM::!BLOCK 1 ;NO OF LOGICAL BLOCKS PER UNIT INCLUDING MAINTENANCE CYLINDERS UNIPCI::!BLOCK 1 ;NO OF BLOCKS PAGED IN UNIPCO::!BLOCK 1 ;NO OF BLOCKS PAGED OUT UNICHR::!BLOCK 1 ;UNIT CHARACTERISTICS (RETURNED IN DSKCHR UUO) UNIBPC==:UNICHR ;BITS 0-8 = # BLOCKS/CLUSTER UNSBPC==^D9 ;BYTE SIZE UNNBPC==^D8 ;BYTE PTR POS UNIBPT==:UNICHR ;BITS 9-17 = # BLOCKS/TRACK UNSBPT==^D9 ;BYTE SIZE UNNBPT==^D17 ;BYTE PTR POS UNIBPY==:UNICHR ;BITS 18-35= # BLOCKS/CYLINDER (THE SMALLEST IF CYLINDER UNSBPY==^D18 ; HAVE DIFFERENT SIZES (MDF)) - BYTE SIZE UNNBPY==^D35 ;BYTE PTR POS UNICPS::!BLOCK 1 ;RH=NO. OF CLUSTERS PER SAT TABLE ON THIS UNIT ; (ROUNDED UP IF NOT AN EVEN NUMBER OF CLUSTERS) UNIWPS==:UNICPS ;# OF WORDS PER SAF BLOCK ON DISK FOR THIS UNIT ; LIMITED TO 128 WORDS OR CLUSTER SIZE WHICHEVER IS SMALLER UNSWPS==^D9 ;BYTE SIZE UNNWPS==^D8 ;BYTE PTR POS UNISPU==:UNICPS ;NO. OF SAT BLOCKS ON THIS UNIT UNSSPU==^D8 ;BYTE SIZE UNNSPU==^D17 ;BYTE PTR POS UNICYL::!BLOCK 1 ;PHYSICAL CYLINDER UNIT IS CURRENTLY AT OR POSITIONING TOWARDS. ; THIS IS ONLY WORD SET AND LOOKED AT BY DEVICE DEPENDENT ROUTINE. ; USED BY FILSER TO SEE IF UNITS IN POSITION, NEVER CHANGED BY ; FILSER. INITIALIZE TO -1 SO FORCE POSITIONING FOR FIRST READ ; ELSE GET POSITIONING ERROR AND FALSE ERROR DATA UNIBLK::!BLOCK 1 ;LOGICAL BLOCK NUMBER WITHIN THE UNIT. UNISAB::!BLOCK 1 ;LH=ADDR. OF FIRST SAB BLOCK IN RING FOR UNIT UNITAL::!BLOCK 1 ;NO. OF FREE BLOCKS(RESERVED+FCFS) LEFT ON THIS UNIT UNIDES::!BLOCK 1 ;WORD RETURNED IN AC FOR DSKCHR UUO DESCRIBES THIS DISK ; UNIT IN TERMS OF STR NUMBER, CHANNEL, KONTROLLER UNIT ; NUMBER. ETC. ;HENCE, UNIDES RH=(3)CHANNEL NUM(6)KONTROLLER TYPE ; (3)KONTROLLER NUM(3)UNIT TYPE(3)UNIT NUMBER UNPRHB==:400000 ;SET IF MONITOR MUST REREAD HOME BLOCK BEFORE NEXT ; OPERATION TO INSURE THE PACK ID IS CORRECT. THE ; MONITOR SETS THIS BIT WHENEVER A DISK PACK GOES OFF LINE. UNPOFL==:200000 ;SET IF THE UNIT IS OFF LINE UNPHWP==:100000 ;SET IF THE UNIT IS HARDWARE WRITE PROTECTED UNPWPO==:UNPHWP!UNPOFL ;WRITE PROTECT OR OFFLINE BITS UNPSWP==:40000 ;SET IF THIS UNIT IS A MEMBER OF A STR WHICH IS ; SOFTWARE WRITE PROTECTED FOR THIS JOB. ;BIT IS NEVER STORED HERE IN UNIT DATA BLOCK. MUST ; BE COMPUTED ON EACH DSKCHR UUO FOR EACH JOB UNPCHG==:UNPSWP ;TIMESHARED BIT-A PARAMETER WAS CHANGED SO HOME BLOCK MUST ; BE WRITTEN. USED ONLY DURING ONCE ONLY CODE THEN ; CLEARED BEFORE SYSTEM STARTED UNPSAF==:20000 ;SET IF UNIT IS MEMBER OF SINGLE-ACCESS F.S. ; NOT STORED IN UNIT DATA BLOCK UNPNMU==:UNPSAF ;TIMESHARED BIT-A UNIT WHICH BELONGS TO A DISK SET ; NOT MOUNTED TO THIS SYSTEM. USED ONLY DURING ONCE ; ONLY CODE THEN CLEARED BEFORE SYSTEM STARTED UNPZMT==:10000 ;SET IF THIS UNIT IS A MEMBER OF A STR WHOSE MOUNT ; COUNT HAS GONE DOWN TO ZERO, MEANING NO ONE IS ; USING THE STR. NOT STORED IN UNIT DATA BLOCK. UNPTSB==:UNPCHG ;TIMESHARED BITS TO CLEAR WHEN EXITING ONCE ONLY CODE UNPTSB==:UNPTSB!UNPNMU ;INCLUDE THIS BIT UNIPRF==:UNIDES ;UNIT IS A MEMBER OF A PRIVATE STR UNSPRF==^D1 ;BYTE SIZE UNNPRF==^D6 ;BYTE PTR POS UNPPRF==:4000 ;THE BIT UNIUST==:UNIDES ;UNIT STATUS UNSUST==^D2 ;BYTE SIZE UNNUST==^D8 ;BYTE PTR POS UNVPIM==:0 ;UNIT IS UP AND PACK IS MOUNTED UNVPBM==:1 ;UNIT IS UP AND PACK BEING MOUNTED BY OPERATOR UNVNPM==:2 ;UNIT IS UP BUT NO PACK MOUNTED UNVDWN==:3 ;UNIT IS DOWN UNPMSB==:400 ;SET IF THIS UNIT HAS MORE THAN ONE SAT BLOCK UNPNNA==:200 ;SET IF THIS UNIT IS A MEMBER OF A STR FOR WHICH THE ; OPERATOR HAS REQUESTED NO NEW ACCESS INIT'S, LOOKUPS, OR ; ENTERS. SET BY PRIVILEGED STRUUO FUNCTION UNIAWL==:UNIDES ;SET IF THIS STR IS SOFTWARE WRTIE PROTECTED FROM ALL JOBS UNSAWL==^D1 ;BYTE SIZE UNNAWL==^D11 ;BYTE PTR POS UNPAWL==:100 ;THE BIT UNPFUS==:40 ;SET IF THIS UNIT GOT A FILE UNSAFE CONDITION ; AT CONNECT TIME (UUO OR INT). USED TO TELL OPERATOR ; CLEARED WHEN UMT COMES ON-LINE WITH INTERRUPT UNPSTS==:UNPAWL ;BITS CHANGEABLE BY STRUUO .FSRDF ; EITHER SINGLE ACCESS OR WRITE PROTECTED FROM ALL JOBS UNPSTL==:UNPSTS!UNPNNA!UNPRHB!UNPMSB!UNPHWP ;BITS TO BE DETERMINED WHEN STR ; DEFINED (STRUUO-.FSDEF) UNIWMD==:UNIDES ;UNIT WAITING FOR MDA TO DO SOMETHING UNPWMD==:20 ;THE BIT UNPALT==:10 ;BIT SET IN AC IF THIS IS DUAL PORTED UNPUSI==:4 ;UNIT STATUS INCONSISTENT (BADUNI) UNPRSS==:2 ;REMOVING SWAPPING UNIT UNPUNO==:UNPFUS+UNPOFL ;OFF-LINE + UNSAFE ;BITS 15 - 17 ARE A CODE WHICH TELLS WHETHER THE ARGUMENT PASSED TO ; MONITOR IN LOC WAS: (NEVER STORED IN UNIT DATA BLOCK) ; 0 GENERIC DEVICE DSK OR LOGICAL NAME FOR IT (E.G., DSK) ; 1 SUBSET OF STR BECAUSE OF AN STR ABBREVIATION ; 2 STR NAME OR LOGICAL NAME FOR IT (E.G., DSKA) ; 3 UNIT WITHIN A FILE STRUCTURE OR A LOGICAL NAME FOR IT ; (E.G., DSKA0) ; 4 A KONTROLLER CLASS NAME OR A LOGICAL NAME FOR IT ; (E.G., DR,FH,DP,MD) ; 5 A KONTROLLER NAME OR A LOGICAL NAME FOR IT ; (E.G., DRA,FHA,DPA,MDA,DPB) ; 6 A PHYSICAL DISK UNIT NAME OR A LOGICAL NAME FOR IT ; (E.G., DRA0,DPA3) ;RH CONFIGURATION INFORMATION: UNIKTP==:UNIDES ;BITS 21-26 CONTROLLER TYPE UNSKTP==^D6 ;BYTE SIZE UNNKTP==^D26 ;BYTE PTR POS TYPDR==:0 ; 0 DR (FUTURE DRUM, IF ANY) TYPFH==:1 ; 1 FH (BURROUGHS DISK OR BRYANT DRUM) TYPDP==:2 ; 2 DP (MEMOREX RP01,RP02,RP03) TYPMD==:3 ; 3 MD (BRYANT MASS DISK) TYPFS==:4 ; 4 FS (RH10/RS04) TYPRP==:5 ; 5 RP (RH10/RP04,RP05) TYPRN==:6 ; 6 RN (RH20/RP20) UNIUTP==:UNIDES ;BITS 30-32 UNIT TYPE - A KONTROLLER DEPENDENT FIELD USED TO UNSUTP==^D3 ; DISTINGUISH VARIOUS OPTIONS OF A UNIT ON ITS KONTROLLER UNNUTP==^D32 ;BYTE PTR POS UNPUTP==:10 ;RIGHT MOST BIT FRSTDR==:0 ;POSITION OF OR UNIT TYPES ON TABLES IN ONCMOD ; 0 0 FRSTFH==:FRSTDR+2 ;POSITION OF FH UNIT TYPES ON TABLES IN ONCMOD ; 1 0 BURROUGHS DISK ON RC10 ; 1 BRYANT DRUM ON RC10 FRSTDP==:FRSTFH+2 ;POSITION OF DP UNIT TYPES ON TABLES IN ONCMOD ; 2 0 RP01 ; 1 RP02 ; 2 RP03 FRSTMD==:FRSTDP+3 ;POSTION OF MD UNIT TYPES ON TABLES IN ONCMOD ; 3 0 DUAL POSITIONER ; 1 SINGLE POSITIONER FRSTFS==:FRSTMD+2 ;POSITION OF FS UNIT TYPES FRSTRP==:FRSTFS+1 ;POSITION OF RP UNIT TYPES ; 5 0 RP04 ; 1 RP06 ; 2 RM03 ; 3 RP07 FRSTRN==:FRSTRP+4 ;POSITION OF RN UNIT TYPES ; 6 0 RP20 FRSTRA==:FRSTRN+1 ;POSITION OF RA UNIT TYPES ; 7 0 RA80 ; 1 RA81 ; 2 RA60 UNIPTR::!BLOCK 1 ;LH=-LENGTH OF SWAP SAT TABLE ;RH=ADDR OF SWAP SAT TABLE (ALWAYS IN CORE) ; EACH BIT REPRESENTS 1K OF SWAPPING STORAGE UNISLB::!BLOCK 1 ;FIRST SWAP LOGICAL BLOCK # ON THIS UNIT UNIXRA::!BLOCK 1 ;LH=-NUMBER OF BLOCKS WRITTEN VIA EXTENDED RIBS ;RH=-NUMBER OF BLOCKS READ VIA EXTENDED RIBS UNICDA::!BLOCK 1 ;RH=ADR OF DDB CURRENTLY ; POSITIONING OR XFERRING ON THIS WAIT ;LH=FORMER RH (RH ZEROED WHEN UNIT IDLE) UNIGEN::!BLOCK 1 ;GENERATION NUMBER OF UDB (AOS'D WHEN UNIT DISMOUNTED) UNIRCV::!BLOCK 1 ;NUMBER OF RETRIES OF HUNG UNIT WITHOUT RECOVERING UNISWA::!BLOCK 1 ;ADDRESS OF CURRENT SWPLST ENTRY UNISID==:UNISWA ;TIME-SHARED WORD BY ONCE ONLY TO REMEMBER SWAPPING ID UNISWD::!BLOCK 1 ;DISTANCE (OR TIME TO BLOCK) OF BEST SWAP FOR UNIT UNIQUL::!BLOCK 1 ;LENGTH OF POSITION WAIT QUEUE UNIBUC::!BLOCK 1 ;NO OF BLOCKS ON UNIT IN 10/11 COMPAT.MODE UNIDIA::!BLOCK 1 ;JOB NUMBER,,DDB OF JOB SHUTTING DOWN IO (DIAG.) IFN FTDUAL!FTCIDSK,< UNIALT::!BLOCK 1 ;RH = ADDRESS OF ALTERNATE PORT (UNLIKE UNI2ND NEVER ; CHANGES ONCE SET UP BY MATUN) CPUMSK==:77 ;LH = BIT MASK OF CPUS WHICH HAVE ATTACHED THIS PORT ; (BITS 12-17) UNI2ND::!BLOCK 1 ;RH=ADDR OF OTHER PORT ;LH=-1 IFF THIS PORT IS THE ALTERNATE PORT ;(I.E. UNI2ND=-1,,
) >; END IFN FTDUAL!FTCIDSK UNITIM::!BLOCK 1 ;HUNG-TIMER (PDVTIM NOT USED FOR DSK DDBS) UNIJOB::!BLOCK 1 ;RH=JOB NUMBER FOR DDB WHOSE ADDRESS IS IN RH(UNICDA) ; (0 WHEN RH(UNICDA)=0) ;LH=PREVIOUS RH(UNIJOB) UNIAJB::!BLOCK 1 ;RH NUMBER OF JOB OWNING DA OR ZERO ;LH NUMBER OF PEOPLE WANTING (WAITERS+USER) UNIDS2::!BLOCK 1 ;MORE STATUS BITS ;LH BITS U2PNRM==:400000 ;SET IF NON-REMOVABLE MEDIA U2PPGA==:200000 ;SET IF PORT WENT AWAY WITHOUT AN OFF-LINE INTERRUPT U2PFEP==:100000 ;SET IF DRIVE PORTED TO FRONT-END U2PDPD==:40000 ;SET IF DRIVE HAS DUAL-PORT HARDWARE U2PNOC==:20000 ;SET IF MONITOR I/O ON UNIT SHOULD NOT BE CACHED U2PIGN==:10000 ;SET IF NEXT UNIT AVAIL MSG SHOULD BE IGNORED (CI) UNIKOF==:UNIDS2 ;BITS 9-17 "KONTAB" OFFSET UNSKOF==^D9 ;BYTE SIZE UNNKOF==^D17 ;BYTE PTR POS UNIKNM==:UNIDS2 ;BITS 18-26 KONTROLLER NUMBER UNSKNM==^D9 ;BYTE SIZE UNNKNM==^D26 ;BYTE PTR POS ;*** BITS 27-35 FREE IFN FTMDA,< UNILTM::!BLOCK 1 ;UNIVERSAL DATE-TIME OF LOCK ON STR >;END IFN FTMDA UNISPT::!BLOCK 1 ;RH=ADDRESS OF STORAGE ALLOC. POINTERS (SPT) TABLE UNIPGT::!BLOCK 1 ;PAGE QTR TURNS,,PAGE TURN ;NO OF TIMES WE REREAD RIB TO GET NEW PNTRS UNICRC::!BLOCK 1 ;MONITOR CACHE READ CALLS UNICRH::!BLOCK 1 ;MONITOR CACHE READ HITS UNICWC::!BLOCK 1 ;MONITOR CACHE WRITE CALLS UNICWH::!BLOCK 1 ;MONITOR CACHE WRITE HITS UNICBK::!BLOCK 1 ;MONITOR BLOCKS CACHED THIS UNIT UNIK4S::!BLOCK 1 ;K FOR SWAPPING ON THIS UNIT ; WHETHER UNIT IS IN ACTIVE SWAPPING LIST OR NOT UNSK4S==^D36 ;BYTE SIZE UNNK4S==^D35 ;BYTE PTR POS ;THESE MUST BE THE LAST THINGS IN THE UDB....... UNILAS::!BLOCK 1 ;LAST COMMAND ISSUED TO MASSBUS DEVICE ;****DAEMON DEPENDS ON NEXT 5 LABELS BEING CONTIGUOUS**** UNISCR::!BLOCK 1 ;CONTROL REGISTER AT 1ST ERROR UNIHCR::!BLOCK 1 ;CONTROL REGISTER AT END UNISDR::!BLOCK 1 ;DATA REGISTER AT 1ST ERROR UNIHDR::!BLOCK 1 ;DATA REGISTER AT END UNIEBK::! ;DRIVE REGISTERS SAVED ON ERROR HERE ;LH=LAST ERROR, RH=1ST ERROR ;LAST WORD IN BLOCK IS COMMAND WHICH CAUSED THE ERROR .ORG SUBTTL IPA20 DEFINITIONS -- COMMON PART OF KONTROLLER DATA BLOCK .ORG KDBSIZ IPKDDB::!BLOCK 1 ;ADDRESS OF DRAM DUMP BUFFER AREA IPKSIZ::! ;LENGTH OF COMMON PART OF KONTROLLER DATA BLOCK .ORG SUBTTL MAGTAPE DEFINITIONS -- KONTROLLER TYPES ;KONTROLLER TYPES K.TMA==:0 ;TM10A K.TMB==:1 ;TM10B K.TC1==:2 ;TC10C K.TX1==:3 ;DX10/TX01/TX02 K.TM2==:4 ;TM02/TM03 ON RH10/RH20 K.TM2H==:5 ;TM02/TM03 ON RH11 K.DX2==:6 ;DX20/TX02 K.T78==:7 ;TM78 ;*** 10 - 12 RESERVED FOR FUTURE USE BY DIGITAL ;*** 13 - 17 RESERVED FOR CUSTOMER TYPE CODES K.TS1==:17 ;SA10/IBM CHANNEL MAGTAPES K.MAX==:17 ;MAXIMUM KONTROLLER TYPE SUBTTL MAGTAPE DEFINITIONS -- SXX - IBM CHANNEL SENSE BYTES ;SENSE BYTE DEFINITIONS SNSBYT==^D24 ;NUMBER OF SENSE BYTES RETURNED SNSWDS==/^D4 ;NUMBER OF WORDS OF SENSE INFORMATION RETURNED ;S00WRD IS DEFINED PREVIOUSLY ;S01WRD==0 ;SENSE BYTE 1 (PDP-10 WORD 0 BYTE 1) S01NOI==1B8 ;NOISE S01TUA==1B9 ;TU STATUS A S01TUB==1B10 ;TU STATUS B S017TK==1B11 ;SEVEN TRACK S01BOT==1B12 ;LOAD POINT S01WRT==1B13 ;WRITE STATUS S01WLK==1B14 ;FILE PROTECTED S01NCP==1B15 ;NOT CAPABLE ;S02WRD==0 ;SENSE BYTE 2 (PDP-10 WORD 0 BYTE 2) S02TIE==377B23 ;TRACK IN ERROR BYTE ;S03WRD==0 ;SENSE BYTE 3 (PDP-10 WORD 0 BYTE 3) S03VRC==1B24 ;READ/WRITE VRC S03MTE==1B25 ;LRC/MTE S03SKW==1B26 ;SKEW ERROR S03CRC==1B27 ;EDC/CRC ERROR S03ENV==1B28 ;ENV/ECC ERROR S03D16==1B29 ;1600 BPI S03BKW==1B30 ;BACKWARD STATUS S03CPC==1B31 ;C/P COMPARE ;S04WRD==1 ;SENSE BYTE 4 (PDP-10 WORD 1 BYTE 0) S04REJ==1B1 ;REJECT TU S04TPI==1B2 ;TAPE INDICATE S04WTV==1B3 ;WRT TRIG VRC S04LWR==1B5 ;LWR S04TUC==1B6 ;TU CHECK S04RPQ==1B7 ;RESERVED FOR RPQ ;S05WRD==1 ;SENSE BYTE 5 (PDP-10 WORD 1 BYTE 1) S05NSS==1B9 ;NEW SUBSYSTEM S05WTM==1B10 ;WTM CHECK S05PEB==1B11 ;PE ID BURST CHECK S05PRC==1B13 ;PARTIAL RECORD S05PSE==1B14 ;POSTAMBLE ERROR S059MD==1B15 ;9-TRACK MULTIPLE DENSITY ;S06WRD==1 ;SENSE BYTE 6 (PDP-10 WORD 1 BYTE 2) S067TK==1B16 ;7 TRACK S06WCF==1B17 ;WRITE CURRENT FAIL S06DTU==1B18 ;DUAL DENSITY TU S06N16==1B19 ;NOT 1600 BPI S06D62==1B20 ;6250 BPI TAPE S06MOD==17B23 ;TU MODEL (S06D62 IS HIGH ORDER BIT) ;S07WRD==1 ;SENSE BYTE 7 (PDP-10 WORD 1 BYTE 3) S07COL==1B24 ;COLUMN S07LCF==1B25 ;LEFT COLUMN FAIL S07RCF==1B26 ;RIGHT COLUMN FAIL S07RSK==1B27 ;RESET KEY S07DSE==1B28 ;DATA SECURITY ERASE FAILURE S07ERA==1B21 ;ERASE HEAD S07LDF==1B23 ;LOAD FAILURE ;S08WRD==2 ;SENSE BYTE 8 (PDP-10 WORD 2 BYTE 0) S08IBG==1B0 ;IBG DETECTED ;S09WRD==2 ;SENSE BYTE 9 (PDP-10 WORD 2 BYTE 1) S09C62==1B8 ;6250 BPI CORRECTION S09VEL==1B9 ;VELOCITY CHANGE S09CBC==1B10 ;CHANNEL BUFFER CHECK S09CRC==1B11 ;CRC III S09D62==1B12 ;6250 BPT TCU ;S10WRD==2 ;SENSE BYTE 10 (PDP-10 WORD 2 BYTE 2) S10CSR==1B16 ;COMMAND START REJECT S10RND==1B19 ;RECORD NOT DETECTED S10TSF==1B21 ;TACH START FAIL S10VCK==1B23 ;VELOCITY CHECK ;S11WRD==2 ;SENSE BYTE 11 (PDP-10 WORD 2 BYTE 3) S11BYT==377B31 ;RESERVED ;S12WRD==3 ;SENSE BYTE 12 (PDP-10 WORD 3 BYTE 0) S12BYT==377B7 ;RESERVED ;S13WRD==3 ;SENSE BYTE 13 (PDP-10 WORD 3 BYTE 1) S13FET==3B9 ;TCU FEATURES S13TCH==77B15 ;TCU SERIAL HIGH ;S14WRD==3 ;SENSE BYTE 14 (PDP-10 WORD 3 BYTE 2) S14TCL==377B23 ;TCU SERIAL LOW ;S15WRD==3 ;SENSE BYTE 15 (PDP-10 WORD 3 BYTE 3) S15TUH==377B31 ;TU SERIAL HIGH ;S16WRD==4 ;SENSE BYTE 16 (PDP-10 WORD 4 BYTE 0) S16TUL==377B7 ;TU SERIAL LOW ;S17WRD==4 ;SENSE BYTE 17 (PDP-10 WORD 4 BYTE 1) S172CH==1B8 ;2 CHANNEL SWITCH FEATURE S17SWF==7B11 ;SWITCH FEATURES S17TCE==17B15 ;TCU EC LEVEL ;S18WRD==4 ;SENSE BYTE 18 (PDP-10 WORD 4 BYTE 2) S18TUE==17B23 ;TU EC LEVEL ;S19WRD==4 ;SENSE BYTE 19 (PDP-10 WORD 4 BYTE 3) S19TU7==1B24 ;BUSY STATUS - TU 7 S19TU6==1B25 ; - TU 6 S19TU5==1B26 ; - TU 5 S19TU4==1B27 ; - TU 4 S19TU3==1B28 ; - TU 3 S19TU2==1B29 ; - TU 2 S19TU1==1B30 ; - TU 1 S19TU0==1B31 ; - TU 0 ;S20WRD==5 ;SENSE BYTE 20 (PDP-10 WORD 5 BYTE 0) S20TUF==1B0 ;BUSY STATUS - TU F S20TUE==1B1 ; - TU E S20TUD==1B2 ; - TU D S20TUC==1B3 ; - TU C S20TUB==1B4 ; - TU B SA0TUA==1B5 ; - TU A S20TU9==1B6 ; - TU 9 S20TU8==1B7 ; - TU 8 ;S21WRD==5 ;SENSE BYTE 21 (PDP-10 WORD 5 BYTE 1) S21BYT==377B15 ;S22WRD==5 ;SENSE BYTE 22 (PDP-10 WORD 5 BYTE 2) S22MDE==377B23 ;MICROPROGRAM DETECTED ERRORS (PAGE QA025) ;S23WRD==5 ;SENSE BYTE 23 (PDP-10 WORD 5 BYTE 3) S23M4T==1B24 ;MOD IV TCU S23MDE==177B31 ;MICROPROGRAM DETECTED ERRORS (PAGE AQ025) SUBTTL MAGTAPE DEFINITIONS -- TRB - I/O REQUEST BLOCK (IORB) .ORG 0 TRBLNK::!BLOCK 1 ;LH = FUNCTION DATA, RH = LINK TO NEXT RB.EXC==:(1B0) ;SIGN BIT - UNIT EXCEPTION (TRBSTS NON-ZERO) RB.AIO==:(1B1) ;THIS REQUEST IS ASYNC RB.PCL==:(1B2) ;FROM QUEUED PROTOCOL RB.PAR==:(1B3) ;PARITY THIS REQUEST (1=EVEN) RB.DNS==:4 ;DENSITY BYTE SIZE RB.DNP==:^D7 ;BYTE POSITION OF DENSITY BYTE RB.D2==:1 ;200 BPI RB.D5==:2 ;556 BPI RB.D8==:3 ;800 BPI RB.D16==:4 ;1600 BPI RB.D62==:5 ;6250 BPI RB.MDS==:3 ;MODE BYTE SIZE RB.MDP==:^D10 ;RIGHT MOST BIT OF MODE BYTE RB.MCD==:1 ;CORE DUMP (9 TRK) RB.MBY==:2 ;BYTE MODE (4 8 BIT BYTES/WD - 9 TRK) RB.M6B==:3 ;SIXBIT (9 TRK SPCL) RB.M7B==:4 ;7 BIT MODE ("MARVELOUS ASCII") RB.M7T==:5 ;7-TRK CORE DUMP (SIXBIT) RB.BYS==:RB.MDS+RB.DNS+1 ;PARITY/DENSITY/MODE BYTE RB.BYP==:RB.MDP RB.RQS==:2 ;REQUEST STATUS BYTE SIZE RB.RQP==:^D12 ;RIGHT MOST BIT POSITION OF STATUS RB.RPN==:1 ;REQUEST PENDING RB.ACT==:2 ;REQUEST ACTIVE RB.DUN==:3 ;REQUEST DONE RB.FNS==:5 ;FUNCTION BYTE SIZE RB.FNP==:^D17 ;RIGHT MOST BIT OF FCN BYTE RB.FRD==:1 ;READ FORWARD RB.FWT==:2 ;WRITE RB.FRB==:3 ;READ BACKWARDS RB.FSR==:4 ;SPACE FORWARD RECORD RB.FBR==:5 ;SPACE BACKWARD RECORD RB.FSF==:6 ;SPACE FORWARD FILE RB.FBF==:7 ;SPACE BACKWARD FILE RB.FLG==:10 ;WRITE LONG GAP (3") RB.FSE==:11 ;DATA SECURITY ERASE RB.FRW==:12 ;REWIND RB.FRU==:13 ;REWIND AND UNLOAD RB.FTM==:14 ;WRITE TAPE MARK RB.FYB==:15 ;WAIT FOR KONTROLLER IDLE (YELLOW BALL) RB.FCR==:16 ;PERFORM CORRECTION READ RB.FRL==:17 ;READ AT LOW THRESHOLD TRBXCW::! ;RH = POINTER TO EVA OF COMMAND LIST TRBSTS::!BLOCK 1 ;LH = TERMINATION STATUS RB.SER==:(1B0) ;NON RECOVERABLE ERROR RB.SDE==:(1B1) ;0 = CHN/DEV ERR, 1 = DATA ERR RB.SED==:(1B2) ;SOME ERROR ENCOUNTERED RB.STM==:(1B3) ;TAPE MARK ENCOUNTERED RB.SBT==:(1B4) ;HIT BOT RB.SET==:(1B5) ;HIT EOT RB.STL==:(1B6) ;RECORD TOO LONG (READ) RB.SLK==:(1B7) ;WRITE ATTEMPTED ON W.L. TAPE RB.SNM==:(1B8) ;TAPE DIDN'T MOVE RB.SOL==:(1B9) ;UNIT OFF LINE RB.SRW==:(1B10) ;UNIT REWINDING RB.SRE==:(1B11) ;RECOVERED ERROR (OLD INFO STILL VALID) RB.SIL==:(1B12) ;ILLEGAL OP RB.SEN==:(1B13) ;ERROR ON NEXT RECORD (THIS ONE OK) RB.SMO==:(1B14) ;MONITOR-DIRECTED OFF-LINE RB.SAP==:(1B15) ;TAPE ALREADY REPOSITIONED FOR ERROR RECIVERY TRBRCT::!BLOCK 1 ;BYTE COUNT OF TRANSFER, IF DATA READ TRBEXL::! ;LH = POINTER TO END OF TRANSFER LIST TRBIVA::!BLOCK 1 ;RH = ADDRESS OF INTERRUPT ROUTINE TRBLEN::! ;LENGTH OF BLOCK .ORG SUBTTL MAGTAPE DEFINITIONS -- TKB - KONTROLLER DATA BLOCK .ORG KDBSIZ TKBCNT::!BLOCK 1 ;NUMBER OF RECORDS DONE ON THIS OPERATION TKBSTS::!BLOCK 1 ;KONTROLLER STATUS TKBJOB::!BLOCK 1 ;JOB NUMBER OF MAINT-MODE OWNER ; TKBJOB MUST IMMEDIATELY PRECEDE TKBCCL TKBCCL::!BLOCK ;CHANNEL COMMAND LIST TKBERB::!BLOCK TRBLEN ;IORB FOR ERROR RECOVERY IFN FTMP,< TKBFCT::!BLOCK 1 ;FAIRNESS COUNT TO ALLOW QUEUED I/O TO START ; EVEN IF PENDING REQUESTS ON THIS CPU > TKBUDB::! ;TABLE OF POINTERS TO UDBS .ORG SUBTTL MAGTAPE DEFINITIONS -- TUB - UNIT DATA BLOCK .ORG UDBSIZ TUBAKA::!BLOCK 1 ;ACTIVE (CURRENT) KDB ADDRESS TUBCUR::!BLOCK 1 ;POINTER TO CURRENT DDB TUBDDL::!BLOCK 1 ;LABEL DDB ADDRESS TUBCNF::!BLOCK 1 ;CONFIG INFORMATION TUBSTS::!BLOCK 1 ;UNIT STATUS TUBIEP::!BLOCK 1 ;INITIAL ERROR POINTER TUBFEP::!BLOCK 1 ;FINAL ERROR POINTER TUBQUE::!BLOCK 1 ;QUEUE PNTR FOR IORB'S TUBERR::!BLOCK 1 ;ERROR RECOVERY INFO TUBRID::!BLOCK 1 ;REELID (DAEMON KNOWS ABT THIS AREA) TUBFIL::!BLOCK 1 ;NUMBER OF FILES FROM BOT TUBREC::!BLOCK 1 ;NUMBER OF RECORDS FROM EOF TUBCRD::!BLOCK 1 ;NUMBER OF CHARACTERS READ SINCE UNLOAD TUBCWR::!BLOCK 1 ;NUMBER OF CHARACTERS WRITTEN SINCE UNLOAD TUBSRE::!BLOCK 1 ;NUMBER OF SOFT READ ERRORS TUBHRE::!BLOCK 1 ;NUMBER OF HARD READ ERRORS TUBSWE::!BLOCK 1 ;NUMBER OF SOFT WRITE ERRORS TUBHWE::!BLOCK 1 ;NUMBER OF HARD WRITE ERRORS TUBTME::!BLOCK 1 ;TOTAL MEDIA ERRORS SINCE UNLOAD TUBCLE==:.-1 ;END OF AREA TO CLEAR TUBTDE::!BLOCK 1 ;TOTAL DEVICE ERRORS SINCE RELOAD TUBTUN::!BLOCK 1 ;TOTAL UNLOADS TUBTRY::!BLOCK 1 ;RETRIES TO RESOLVE ERROR TUBCCR::!BLOCK 1 ;CHAR CNT ON LAST REC TUBPBE::!BLOCK 1 ;POSITION BEFORE ERROR (FILE,,RECORD) TUBFES::!BLOCK 1 ;FINAL ERROR STATE WORD TPCHMX==:.-TUBRID ;MAX ARG ALLOWED FOR MTACHR UUO TUBCHR::!BLOCK 1 ;STATISTICS FOR MTCHR. UUO TUBDDA::! BLOCK TUBTME-TUBRID+1 ;SHADOW AREA FOR DAEMON TUBDDE==:.-1 ;END OF SHADOW AREA (DAEMON KNOWS ABT) TUBPGM::!BLOCK 1 ;PROGRAM NAME ON ERROR TUBUID::!BLOCK 1 ;PPN USING DRIVE ON ERROR TUBDVC::!BLOCK 1 ;DEVICE CODE FOR ERROR LOGGING TUBKTY::!BLOCK 1 ;CHANNEL TYPE FOR ERROR LOGGING TUBCNI::!BLOCK 1 ;ERROR STATUS FOR NEXT RECORD TUBHTT::!BLOCK 4 ;HUNG TIMER TABLE TUBMTV::!BLOCK 1 ;TIMEOUT INCASE NO ACCESS TO SOME PORT TUBTIM::!BLOCK 1 ;RUNNING HUNG TIMER IFN FTTLAB,< TUBPTR::!BLOCK 1 ;BYTE POINTER TO FILE.EXT TUBMSG::!BLOCK 1 ;LENGTH,,FUNCTION CODE FOR LABEL MESSAGE TUBPHY::!BLOCK 1 ;PHYSICAL NAME FOR LABEL PCS TUBLBL::!BLOCK 1 ;LABEL STATUS WORD TLMSIZ==.-TUBMSG TUBLIB::! ;START OF LABEL INFORMATION BLOCK TUBRFM::!BLOCK 1 ;RECORD FORMAT (FOR LABELS ONLY) TUBRCC::!BLOCK 1 ;RECORD SIZE (FOR LABELS ONLY) TUBBKL::!BLOCK 1 ;BLOCK SIZE (FOR LABELS ONLY) TUBEXP::!BLOCK 1 ;EXPIRATION DATE (FOR LABELS ONLY) TUBPRT::!BLOCK 1 ;PROTECTION (FOR LABELS ONLY) TUBPSN::!BLOCK 1 ;FILE POSITION # TUBFNM::!BLOCK <^D17+4>/5 ;17 CHAR (ASCII) FILE NAME TUBGVR::!BLOCK 1 ;GENERATION + VERSION # TLPMAX==:.-TUBLIB > ;END IFN FTTLAB TUBLEN::! ;LENGTH OF TUB .ORG SUBTTL MAGTAPE DEFINITIONS -- TPK - DRIVER DISPATCH .ORG DRVLEN TPKISR::!BLOCK 1 ;INTERRUPT SERVICE TPKRES::!BLOCK 1 ;RESET ACTIVE TRANSFER TPKSIO::!BLOCK 1 ;START I/O TPKCCF::!BLOCK 1 ;COMMAND CHAINING FLAG TPKCMD::!BLOCK 1 ;SET DEVICE COMMAND IN LIST (COMMAND CHAINING) TPKIDL::!BLOCK 1 ;SET DEVICE IDLE TPKONL::!BLOCK 1 ;SKIP IF KONTROLLER ONLINE TPKSCH::!BLOCK 1 ;CAUSE SCHEDULE CYCLE TPKEDL::!BLOCK 1 ;ENABLE/DISABLE MICROCODE LOADING TPKLOD::!BLOCK 1 ;LOAD MICROCODE TPKDRV::!BLOCK 1 ;AUTOCONFIGURE A SINGLE DRIVE TPKBSY::!BLOCK 1 ;CHECK FOR KONTROLLER BUSY TPKBSZ::!BLOCK 1 ;MAXIMUM BLOCK SIZE ALLOWABLE TPKLEN::! ;LENGTH OF SERVICE DEPENDENT DISPATCH .ORG DEFINE TPK (PFX,CCF,BSZ),< XLIST IFIW PFX'ISR ;;INTERRUPT SERVICE IFIW PFX'RES ;;RESET ACTIVE TRANSFER IFIW PFX'SIO ;;START I/O IFIDN ,< EXP 0> ;;NO COMMAND CHAINING FLAG IFIDN , ;;COMMAND CHAINING FLAG AVAILABLE IFIW PFX'CMD ;;SET DEVICE COMMAND IFIW PFX'IDL ;;SET DEVICE IDLE IFIW PFX'ONL ;;SKIP IF KONTROLLER ONLINE IFIW PFX'SCH ;;CAUSE SCHEDULE CYCLE IFIW PFX'EDL ;;ENABLE/DISABLE MICROCODE LOADING IFIW PFX'LOD ;;LOAD MICROCODE IFIW PFX'DRV ;;ATTACH DRIVE IFIW PFX'BSY ;;CHECK FOR KONTROLLER BUSY EXP BSZ ;;MAXIMUM BLOCK SIZE ALLOWABLE LIST ;;TPKLEN==:TPKLEN ;;DETECT MULTIPLY DEFINED GLOBALS > ;END DEFINE TPK SUBTTL MAGTAPE DEFINITIONS -- TPNBF - NON-BLOCKING FUNCTION MASK ;MACRO TO DEFINE A MASK OF THE NON-BLOCKING HARDWARE FUNCTIONS ;FOR A GIVEN KONTROLLER DEFINE TPNBF (FCN),< ZZ==0 IRP FCN,> EXP ZZ PURGE ZZ > ;END DEFINE NBF SUBTTL END END