.TITLE QTTAB - DATA BASE FOR CATCHING I/O PACKETS .SBTTL DISCUSSION AND OFFSET DEFINITIONS .MCALL HWDDF$,UCBDF$,PCBDF$ HWDDF$ ;DEFINE THE HARDWARE REGISTERS ETC. UCBDF$ ;DEFINE THE UNIT CONTROL BLOCK OFFSETS PCBDF$ ;DEFINE THE PARTITION CONTROL BLOCK OFFSETS ; WRITTEN BY: JOHN WOOD ; LAWRENCE BERKELEY LABORABORY ; BERKELEY, CALIFORNIA 94720 ; (415) 486-4972 ; ; ; QTTAB IS A COMPANION DATA BASE TO THE DRIVER 'QTDRV'. .PAGE .SBTTL DEVICE CONTROL BLOCK $QTDAT:: QTDCB:: .WORD 0 ;D.LNK - LINK TO NEXT DCB .WORD .QT0 ;D.UCB - POINTER TO FIRST UCB .ASCII /QT/ ;D.NAM - DEVICE MNEMONIC .BYTE 0,0 ;D.UNIT - LOW, HIGH UNIT NUMBER .WORD QTND-QTST ;D.UCBL - LENGTH OF UCB .WORD 0 ;D.DSP - POINTER TO DRIVER DISPATCH TABLE .WORD 2 ;D.MSK - LEGAL FUNCTION CODES 0.-15. .WORD 2 ; - CONTROL 0.-15. .WORD 0 ; - NO-OP 0.-15. .WORD 0 ; - ACP 0.-15. .WORD 0 ; - LEGAL 16.-31. .WORD 0 ; - CONTROL 16.-31. .WORD 0 ; - NO-OP 16.-31. .WORD 0 ; - ACP 16.-31. .WORD 0 ;D.PCB - DRIVER PCB ADDRESS ; THIS SHORT PIECE OF CODE IS USED TO EFFECT A JUMP TO THE TARGET ; DRIVER WHEN THE QT: DRIVER IS FINISHED. THE TWO LOCATIONS POINTED TO ; BY 'D.APR' AND 'D.DDT' ARE RELOCATED ADDRESSES AND ARE LOADED BY THE ; QT: DRIVER. D.COD== .-QTDCB ;START OF DRIVER RECALL CODE MOV (SP)+,R0 ;GET TARGET PCB ADDRESS FROM STACK MOV P.REL(R0),KISAR5 ;RESET APR5 TO POINT TO TARGET DRIVER D.APR== .-QTDCB-2 ;OFFSET FOR KISAR5 RELOCATED ADDRESS MOV (SP)+,R0 ;GET OFFSET INTO TARGET DRIVER'S DISPATCH TABLE ADD #D.DDT,R0 ;ADD ADDRESS OF TARGET DISPATCH TABLE D.DDT== .-QTDCB-2 ; JMP @(R0) ;ENTER TARGET DRIVER .PAGE .SBTTL UNIT CONTROL BLOCK QTST= . .WORD 0 ;U.LUIC - LOGIN UIC .WORD 0 ;U.OWN - OWNING TERMINAL .QT0: .WORD QTDCB ;U.DCB - BAQT POINTER TO DCB .WORD .-2 ;U.REA - REDIRECT POINTER .BYTE UC.PWF ;U.CTL - CONTROL FLAGS .BYTE 0 ;U.STS - UNIT STATUS .BYTE 0 ;U.UNIT - PHYCIAL UNIT NUMBER .BYTE 0 ;U.ST2 - STATUS EXTENSION .WORD 0 ;U.CW1 .WORD 0 ;U.CW2 .WORD 0 ;U.CW3 .WORD 0 ;U.CW4 .WORD QTSCB ;U.SCB - POINTER TO SCB .WORD 0 ;U.ATT - TCB OF ATTACHED TASK .BLKW 2 ;U.BUF - CURRENT I/O REQUEST BUFFER .BLKW 1 ;U.CNT - BYTE COUNT OF CURRENT REQUEST QTND= . .PAGE .SBTTL STATUS CONTROL BLOCK QTSCB:: .WORD 0,QTSCB ;S.LHD - I/O QUEUE LISTHEAD .BYTE PR0 ;S.PRI - INTERRUPT PRIORITY .BYTE 0 ;S.VCT - INTERRUPT VECTOR ADDRESS/4 .BYTE 0,0 ;S.CTM - TIMEOUT COUNT .BYTE 0,0 ;S.CON - CONTROLLER NUMBER AND STATUS .WORD 0 ;S.CSR .BLKW 1 ;S.PKT - ADDRESS OF CURRENT PACKET .BLKW 5 ;S.FRK - FORK BLOCK $QTEND:: .END