.TITLE VTTAB .IDENT /02/ ; ; DATA STRUCTURES FOR VIRTUAL TERMINAL DRIVER, RSX-11M VERSION 3.1 ; ; D. ELDERKIN 23-MAY-77 ; ; MODIFIED BY: ; J. DOWNWARD 17-MAY-79 ; ADDITIONAL WORDS ARE ADDED TO EACH TERMINAL UCB TO IMPLEMENT ; IN A STRAIGHTFORWARD MANNER, USER BY USER ACCOUNTING. ; IT SHOULD BE NOTED THAT THIS METHOD WHILE SIMPLER TO IMPLEMENT ; THAN CREATING AN ACCOUNT BLOCK FOR EACH TERMINAL, DOES IMPOSE ; A MAXIMUM OVERHEAD IN USING UP EXEC SPACE WHETHER OR NOT ; A TERMINAL IS LOGGED ON. IF ONE CHOOSES, HELLO COULD CREATE ; AN ACCOUNT BLOCK FOR EACH TERMINAL IN POOL. THIS WILL REQUIRE ; AN EXEC MODIFICATION TO SYSCM, TO CREATE A ACCOUNTING NODE ; HEADER. NOTE ALSO THAT THIS METHOD IS FASTER(INVOLVES LESS TIME ; IN TRACKING DOWN THE PROPER PLACE TO STUFF DATA. ; LD$VT=1 ; LOADABLE DRIVER $VTDAT:: ; START OF LOADABLE DATA BASE ;+ ; DEVICE CONTROL BLOCK ;- DCB0: .IIF DF LD$VT, $VTTBL=0 .WORD 0 .WORD UCB0 ;LINK TO FIRST UCB .ASCII /VT/ .BYTE 0,1 .WORD VTND-VTST .WORD $VTTBL W1=160037 W2=30 ; .IIF DF T$$GMC!T$$GTS!T$$SMC, W1=W1!40 ; DE003 ; .IIF DF T$$RPR, W1=W1!1000 .WORD W1,W2,160000,0,7,0,1,6 .IF DF L$$DRV .WORD 0 .ENDC ;+ ; UNIT CONTROL BLOCK 0 ;- VTST=. .IF DF M$$MUP .IF DF R$$PRV ; KMS ACCOUNTING RUN PRIVLEGES ; JGD ; JGD ; JGD .IF DF Q$$CNT ; QIO ACCOUNTING ; JGD .WORD 0 ; RESERVED ; JGD .WORD 0 ; RESERVED ; JGD .ENDC ; END CONDITIONAL -- QIO ACCOUNTING ; JGD ; JGD .IF DF T$$CPU ; CPU TIME ACCOUNTING ; JGD .WORD 0 ; U.ATCT - NUMBER OF ...AT. RUNS ; JGD .WORD 0 ; U.INCT - NUMBER OF INSTALL REQUESTS ; JGD .WORD 0 ; U.RNCT - NUMBER OF TASKS RUN ; JGD .WORD 0 ; U.TIC1 - CPU TIME IN TICS -LOW ORDER PART ; JGD .WORD 0 ; U.TIC2 - CPU TIME IN TICS - HIGH ORDER PART ; JGD .WORD 0 ; U.ACN - ACCOUNT NUMBER ; JGD .ENDC ; END CONDITIONAL -- CPU TIME ACCOUNTING ; JGD ; JGD .WORD 0 ; U.PRV1=U.LUIC-2 - PRIVLEGE MASK WORD ; JGD ; EVENTUALLY THIS WILL BE PRIVLEGE MASK WORD ; JGD ; FOR SYSTEMS WITH AND WITHOUT MULTIPLEXERS. ; JGD .ENDC ; END CONDITIONAL -- PRIVLEGE MASK WORD ; JGD ; JGD .IFDF M$$CLI ; IF DECNET SUPPORT .WORD 0 ; U.CLI .ENDC ; .END M$$CLI .WORD 0 ; U.LUIC .WORD 0 ; U.OWN .ENDC UCB0: .WORD DCB0 .WORD .-2 .BYTE UC.PWF,0 .BYTE 0,0 .WORD DV.REC!DV.CCL!DV.TTY .IF DF M$$MUP .IFF .WORD U2.PRV .IFT .IF GT M$$MUP+1 .WORD U2.LOG ; TERMINAL STARTS OFF LIFE LOGGED OFF .IFF .WORD U2.PRV .IFTF M$$MUP=M$$MUP+1 .ENDC .ENDC .WORD 0 .WORD 72. .WORD $VT0 .WORD 0,0,0,0,0,0,0,0,0,$BTMSK+1,0,0,100200,0 .IIF DF T$$ACR!T$$BTW!T$$CCA!T$$CCO!T$$ESC!T$$HLD, T1=0 .IF DF T1!T$$RPR!T$$SYN!T$$TRW!T$$UTB!T$$30P .WORD 0 .ENDC .IF DF T$$CCA&A$$TRP .WORD 0 .ENDC .IF DF T$$ESC .WORD 0 .ENDC VTND=. ;+ ; UNIT CONTROL BLOCK 1 ;- VTST=. .IF DF M$$MUP .IF DF R$$PRV ; KMS ACCOUNTING RUN PRIVLEGES ; JGD ; JGD ; JGD .IF DF Q$$CNT ; QIO ACCOUNTING ; JGD .WORD 0 ; RESERVED ; JGD .WORD 0 ; RESERVED ; JGD .ENDC ; END CONDITIONAL -- QIO ACCOUNTING ; JGD ; JGD .IF DF T$$CPU ; CPU TIME ACCOUNTING ; JGD .WORD 0 ; U.ATCT - NUMBER OF ...AT. RUNS ; JGD .WORD 0 ; U.INCT - NUMBER OF INSTALL REQUESTS ; JGD .WORD 0 ; U.RNCT - NUMBER OF TASKS RUN ; JGD .WORD 0 ; U.TIC1 - CPU TIME IN TICS -LOW ORDER PART ; JGD .WORD 0 ; U.TIC2 - CPU TIME IN TICS - HIGH ORDER PART ; JGD .WORD 0 ; U.ACN - ACCOUNT NUMBER ; JGD .ENDC ; END CONDITIONAL -- CPU TIME ACCOUNTING ; JGD ; JGD .WORD 0 ; U.PRV1=U.LUIC-2 - PRIVLEGE MASK WORD ; JGD .ENDC ; END CONDITIONAL -- PRIVLEGE MASK WORD ; JGD ; JGD .IFDF M$$CLI ; FOR DECNET SUPPORT .WORD 0 ; U.CLI .ENDC ; .END M$$CLI .WORD 0 ; U.LUIC .WORD 0 ; U.OWN .ENDC UCB1: .WORD DCB0 .WORD .-2 .BYTE UC.PWF,0 .BYTE 0,0 .WORD DV.REC!DV.CCL!DV.TTY .IF DF M$$MUP .IFF .WORD U2.PRV .IFT .IF GT M$$MUP .WORD U2.LOG .IFF .WORD U2.PRV .IFTF M$$MUP=M$$MUP+1 .ENDC .ENDC .WORD 0 .WORD 72. .WORD $VT1 .WORD 0,0,0,0,0,0,0,0,0,$BTMSK+1,0,0,100200,0 .IIF DF T$$ACR!T$$BTW!T$$CCA!T$$CCO!T$$ESC!T$$HLD, T1=0 .IF DF T1!T$$RPR!T$$SYN!T$$TRW!T$$UTB!T$$30P .WORD 0 .ENDC .IF DF T$$CCA&A$$TRP .WORD 0 .ENDC .IF DF T$$ESC .WORD 0 .ENDC VTND=. ;+ ; START OF SCB0 ;- .PSECT $VT0: .WORD 0 .WORD .-2 .BYTE 0,0 ; NO INTERRUPTS HERE .BYTE 0,0 ; NO TIMEOUTS .BYTE 0,0 .WORD 0 .WORD 0,0,0,0,0 .IF DF L$$DRV &M$$MGE .WORD 0 .ENDC ;+ ; START OF SCB 1 ;- .PSECT $VT1: .WORD 0 .WORD .-2 .BYTE 0,0 ; NO INTERRUPTS HERE .BYTE 0,0 .BYTE 2,0 ; .WORD 0 .WORD 0,0,0,0,0 .IF DF L$$DRV&M$$MGE .WORD 0 .ENDC $VTEND:: .END