.TITLE DRTAB .IDENT /V1.0/ ; THIS FILE CONTAINS THE NECESSARY DATA STRUCTURES FOR THE ; LOADABLE DRIVER FOR DEVICE DR: ; VERSION V1.0 ; AUTHOR:Daniel Steinberg ; DATE:15-MAR-79 .NLIST MD,MC,CND ;DISABLE MACRO DEFINITION AND CALL LISTINGS .LIST ME,MEB ;ENABLE MACRO EXPANSION LISTINGS $DRDAT:: ;START OF LOADABLE DRIVER DATABASE ; DEVICE CONTROL BLOCK DRDCB: .WORD 0 ;D.LNK - POINTER TO NEXT DCB .WORD DR0UCB ;D.UCB - POINTER TO FIRST UCB .ASCII /DR/ ;D.NAM - DEVICE NAME .BYTE 0,NDR11S-1 ;D.UNIT - LOW UNIT, HIGH UNIT .WORD UCBEN-UCBST ;D.UCBL - LENGTH OF A UCB .WORD 0 ;D.DSP - POINTER TO DRIVER DISPATCH TABLE .WORD 35 ;D.MSK 0-15. - LEGAL FUNCTION MASK .WORD 30 ; 0-15. - CONTROL FUNCTION MASK .WORD 0 ; 0-15. - NO-OP FUNCTION MASK .WORD 0 ; 0-15. - ACP FUNCTION MASK .WORD 0 ; 16.-31. .WORD 0 ; 16.-31. .WORD 0 ; 16.-31. .WORD 0 ; 16.-31. .WORD 0 ;D.PCB - POINTER TO LOADABLE DRIVER PCB ; UNIT CONTROL BLOCKS .MACRO DR1UCB UNIT ;MACRO TO DEFINE A UCB .IF EQ,UNIT ;IF DR0: UCBST: .ENDC .WORD 0 ;U.OWN - OWNER TERMINAL DR'UNIT'UCB: .WORD DRDCB ;U.DCB - POINTER BACK TO UCB .WORD DR'UNIT'UCB ;U.RED - POINTER TO REDIRECT UCB .BYTE UC.ALG!UC.ATT!1 ;U.CTL - CONTROL FLAG (WORD ALIGNED, ATT ENTRY) .BYTE 0 ;U.STS - UNIT STATUS .BYTE 0 ;U.UNIT - PHYSICAL UNIT NUMBER .BYTE 0 ;U.ST2 - UNIT STATUS EXTENSION .WORD DV.SWL ;U.CW1 - FIRST DEVICE CHAR WORD (NO WRITE) .WORD 0 ;U.CW2 - ATBSTS - (ATB BUFFER STATUS) .WORD 0 ;U.CW3 - ATBPTR - (ATB BUFFER PTR) .WORD DEFMAX ;U.CW4 - MAXATB - (MAXIMUM ATB BUFFER SIZE) .WORD DR'UNIT'SCB ;U.SCB - SCB ADDRESS .WORD 0 ;U.ATT - TCB ADDRESS OF ATTACHED TASK .WORD 0 ;U.BUF - CURRENT BUFFER ADDR DBLWORD .WORD 0 .WORD 0 ;U.CNT - CURRENT REQUEST BYTE COUNT .IF EQ,UNIT ;IF DR0: UCBEN=. .ENDC .ENDM UNIT=0 .REPT NDR11S ;IF MORE THAN ONE DR11, ADD MORE DCBs DR1UCB \UNIT ;DEFINE UCB FOR THIS UNIT UNIT=UNIT+1 ;SET NEXT UNIT .ENDR ; STATUS CONTROL BLOCKS .MACRO DR1SCB UNIT ;MACRO TO DEFINE DR11 SCBs DR'UNIT'SCB: .WORD 0 ;S.LHD - I/O QUEUE LISTHEAD .WORD DR'UNIT'SCB ;LAST ENTRY IN I/O QUEUE .BYTE PR4 ;S.PRI - DEVICE PRIORITY .BYTE DR'UNIT'VEC/4 ;S.VCT - INTERRUPT VECTOR /4 .BYTE 0 ;S.CTM - CURRENT TIMEOUT COUNT .BYTE 2 ;S.ITM - TIMEOUT COUNT .BYTE UNIT*2 ;S.CON - CONTROLLER INDEX .BYTE 0 ;S.STS - CONTROLLER STATUS .WORD DR'UNIT'CSR ;S.CSR - CSR ADDRESS .WORD 0 ;S.PKT - ADDRESS OF CURRENT I/O PACKET .BLKW 4 ;S.FRK - FORK BLOCK .WORD 0 ;FORK DRIVER RELOCATION BASE .ENDM UNIT=0 .REPT NDR11S ;SET UP SCBs DR1SCB \UNIT ;DEFINE SCB FOR THIS DR11 UNIT=UNIT+1 ;INCREMENT CTR .ENDR $DREND:: .END