1
0
mirror of https://github.com/PDP-10/stacken.git synced 2026-01-31 13:52:00 +00:00
Files
PDP-10.stacken/files/stacken-tape-backup/dskb:10_7/mon/devprm.mac
Lars Brinkhoff 6e18f5ebef Extract files from tape images.
Some tapes could not be extracted.
2021-01-29 10:47:33 +01:00

1931 lines
69 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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==<Z2==0> ;;INITIALIZE MASKS
Z1==Z1!<INSVL.(.TY'DVT',DR.DVT)> ;;DEVICE TYPE
Z1==Z1!<FLG> ;;FLAGS
Z2==Z2!<INSVL.('KTY,DR.KTY)> ;;KONTROLLER TYPE
Z2==Z2!<INSVL.(LIM,DR.LIM)> ;;MAXIMUM DEVICES IN SYSTEM
Z2==Z2!<INSVL.(DMX,DR.DMX)> ;;MAXIMUM NUMBER OF DRIVES
Z2==Z2!<INSVL.(HDN,DR.HDN)> ;;HIGHEST DRIVE NUMBER ON KONT
Z2==Z2!<INSVL.(SCK,DR.SCK)> ;;SECTION FOR KDB/UDB
Z2==Z2!<INSVL.(SCD,DR.SCD)> ;;SECTION FOR DDB
LIST
PFX'CNF==Z1
PFX'CN2==Z2
PFX'NAM==<SIXBIT /DVT/> ;;GENERIC DEVICE NAME
PFX'DMW==<HDN+43/44> ;;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,<MD.DVC==:177B9> ;<DEVICE CODE>/4
IFN FTKS10,<MD.IVI==:177B9> ;<INTERRUPT VECTOR INDEX>/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,<MD.UAD==:777777B35> ;UNIBUS ADDRESS (SECOND WORD OF MDT)
DEFINE MDKL10 (CPU,DVC,UNI,DRV,FLG,DAT),<
IFN FTKL10,<
ZZ==<ZZZ==0> ;;INITIALIZE MASK AND FLAGS
ZZ==ZZ!<INSVL.(CPU,MD.CPU)> ;;CPU NUMBER
ZZ==ZZ!<INSVL.(<DVC/4>,MD.DVC)> ;;<DEVICE CODE>/4
ZZ==ZZ!<INSVL.(UNI,MD.UNI)> ;;MASBUS UNIT NUMBER
ZZ==ZZ!<FLG> ;;INCLUDE FLAGS
EXP <ZZ>,<DAT> ;;STORE RESULTS
>; END IFN FTKL10
> ;END DEFINE MDKL10
DEFINE MDKS10 (CPU,IVI,UAD,UNI,DRV,FLG,DAT),<
IFN FTKS10,<
ZZ==<ZZZ==0> ;;INITIALIZE MASK AND FLAGS
ZZ==ZZ!<INSVL.(CPU,MD.CPU)> ;;CPU NUMBER
ZZ==ZZ!<INSVL.(<IVI/4>,MD.IVI)> ;;<INTERRUPT VECTOR INDEX>/4
ZZ==ZZ!<INSVL.(UNI,MD.UNI)> ;;MASBUS UNIT NUMBER
ZZ==ZZ!<FLG> ;;INCLUDE FLAGS
ZZZ==UAD ;;UNIBUS ADDRESS
EXP <ZZ>,<ZZZ>,<DAT> ;;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 <NUM>*3,<EXP -1,0>
> ;END DEFINE MDPATD
;MACRO TO TERMINATE THE MONGEN'ED DEVICE TABLE
DEFINE MDTERM,<EXP 0>
DEFINE KDBBEG (PFX,SIZ),<
...BAS==.
...END==...BAS+'SIZ
...SIZ=='SIZ
IFN FTKL10,<
SETWRD (KDBCNI,<CONI 000,T1>)
SETWRD (KDBCNO,<CONO 000,(T1)>)
SETWRD (KDBDTI,<DATAI 000,T2>)
SETWRD (KDBDTO,<DATAO 000,T2>)
SETWRD (KDBBKI,<BLKI 000,T2>)
SETWRD (KDBBKO,<BLKO 000,T2>)
>; 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 <TYP><GLOBAL>,<SYM==:VAL>
IFIDN <TYP><LOCAL>,< SYM==VAL>
> ;;END IRP SYM
LIST
> ;END DEFINE EQUATE
DEFINE WID (MASK),<<^L<-<<MASK>_<^L<MASK>>>-1>>>
DEFINE POS (MASK),<<^L<<MASK>&<-<MASK>>>>>
DEFINE POINTR (LOC,MASK),<<POINT WID(MASK),LOC,POS(MASK)>>
DEFINE INSVL. (VALUE,MASK),<<<<VALUE>B<POS(<MASK>)>>&<MASK>>>
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: <CPU>B2 + <DEVICE CODE>/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 <LENKTB==:20> ;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 <MXPORT==:4> ;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,<SIXBIT /PFX/>)
SETWRD (KDBIUN,<XWD -PFX'XDMX,PFX'XUTB>)
SETWRD (KDBCUN,<XWD -PFX'XDMX,PFX'XUTB>)
SETWRD (KDBIUM,<PFX'XIUM>)
SETWRD (KDBNUM,<PFX'XNUM>)
SETWRD (KONPTR,<PFX'XUTB(P3)>)
SETWRD (KONREG,\<PFX'ERNO>)
SETWRD (KONEBK,PFX'XEBK)
SETWRD (KONRED,<XWD PFX'BMX,PFX'XRED>)
SETWRD (KONRDS,PFX'XRDS)
SETWRD (KONRDF,PFX'XRDF)
SETWRD (KONRDC,<XWD PFX'RDC,PFX'XRDC>)
SETWRD (KONWRT,PFX'XWRT)
SETWRD (KONWTS,PFX'XWTS)
SETWRD (KONWTF,PFX'XWTF)
SETWRD (KONWTC,<XWD PFX'RDC,PFX'XWTC>)
SETWRD (KONUNL,<XWD PFX'UNL,PFX'XUNL>)
SETWRD (KONPOS,<XWD PFX'FIX,PFX'XPOS>)
SETWRD (KONLTM,<XWD PFX'MX,PFX'XLTM>)
SETWRD (KONUPA,PFX'XUPA)
SETWRD (KONCPY,<XWD PFX'CPY,PFX'XCPY>)
SETWRD (KONHWP,<PFX'XHWP>)
SETWRD (KONRCL,<XWD PFX'DRB,PFX'XRCL>)
SETWRD (KONSTP,PFX'XSTP)
SETWRD (KONERR,<XWD PFX'OFS,PFX'XERR>)
SETWRD (KONECC,<XWD PFX'ECA,PFX'XECC>)
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,,<MAIN PORT>)
>; 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==<SNSBYT+3>/^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 <TKWCCL==:5> ;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 <CCF><NO>,< EXP 0> ;;NO COMMAND CHAINING FLAG
IFIDN <CCF><YES>,<EXP -1> ;;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,<ZZ==ZZ!<1B0_-RB.F'FCN>>
EXP ZZ
PURGE ZZ
> ;END DEFINE NBF
SUBTTL END
END