.TITLE VTDRV - VIRTUAL TERMINAL DRIVER .IDENT /JN1.0/ ;LAST MODIFIED 780203. ;PROVIDES A LOGGED-IN, PRIVILEGED, VIRTUAL (NOT PSEUDO) TERMINAL FOR ; VARIOUS PURPOSES. ; ;FIRST THE DEFINITIONS: LD$VT=0 ;LOADABLE DEVICE DRIVER ; ;BEGIN THE MINIMAL DRIVER: $VTTBL:: ;DRIVER DISPATCH TABLE .WORD VTINI .WORD VTCAN .WORD VTTMO .WORD VTPWF ; $VTINT:: ;INTERRUPT ENTRY RETURN ;JUST EXIT SINCE NO VALID INTRP. ; VTINI: CALL $GTPKT ;GET A PACKET BCS VTPWF ;EXIT IF NONE OR BUSY MOV #IS.SUC&377,R0 ;SHOW SUCCESSFUL COMPLETION MOV I.PRM+4(R1),R1 ;MOVE REQUESTED BYTE COUNT TO SHOW ALL XFRD. CALL $IODON ;& EXIT SHOWING DONE BR VTINI ; & GO LOOK FOR MORE ; VTCAN: VTTMO: VTPWF: RETURN ;NO-OPS ; ;THEN THE DATABASE: $VTDAT:: ;START OF DATABASE ; THE DCB: VTDCB: .WORD 0 ;D.LNK (NO ADDL. DCB'S) .WORD VTUCB ;D.UCB .ASCII /VT/ ;D.NAM .BYTE 0,0 ;D.UNIT (UNIT 0 ONLY) .WORD VTUCBL ;D.UCBL .WORD 0 ;D.DSP (0 FOR LOADABLE DEV.) .WORD 140033,0,140031,0 ;D.MSK: LEGAL, CNTL, NO-OP, ACP MASKS 0-15 .WORD 5,0,1,4 ; LEGAL, CNTL, NO-OP, ACP MASKS 16-31 .WORD 0 ;D.PCB ; ; THE UCB: VTUCBS: .BYTE 2,1 ;U.LUIC (LOGGED IN W/ UIC OF [1,2]) .WORD 0 ;U.OWN (NON-ZERO IF ALLOCATED) VTUCB: .WORD VTDCB ;U.DCB .WORD .-2 ;U.RED .BYTE 0 ;U.CTL (ALL BITS HAPPEN TO BE OFF) .BYTE 0 ;U.STS .BYTE 0 ;U.UNIT .BYTE 0 ;U.ST2 .WORD DV.REC!DV.CCL!DV.TTY ;U.CW1 .WORD U2.PRV ;U.CW2 (LOGGED-IN & PRIVILEGED) .WORD 0 ;U.CW3 .WORD 80. ;U.CW4 (DEFAULT RECORD SIZE) .WORD VTSCB ;U.SCB .WORD 0 ;U.ATT .BLKW 2 ;U.BUF .BLKW 1 ;U.CNT .WORD 0,0,0,0,0,0,0,0 ;MISC. TT RELATED UCB WORDS (HERE FOR EQUIV.) .BYTE 2,1 ;U.UIC (DEFAULT TERMINAL UIC) .WORD 0,0,0,0 ;ADDL. TT RELATED UCB WORDS - USE UNKNOWN VTUCBL=.-VTUCBS ; ; NEXT THE SCB: VTSCB: .WORD 0,VTSCB ;S.LHD .BYTE PR4 ;S.PRI (LOWEST USABLE PRIORITY) .BYTE 370/4 ;S.VCT (USE AN UNUSED ADDR. FOR CONVENIENCE) .BYTE 0 ;S.CTM .BYTE 1 ;S.ITM .BYTE 0 ;S.CON .BYTE 0 ;S.STS .WORD 370 ;S.CSR (USE A CONVENIENT ADDR.) .BLKW 1 ;S.PKT .BLKW 5 ;S.FRK $VTEND:: ;END OF TABLES ; .END