.TITLE LGN - LOG TERMINATOR .IDENT /01.00/ .LIST MEB ; ; AUTHOR: H. L. COLEMAN ; MILLIKEN AND COMPANY ; P. O. BOX 1926 ; MAIL STOP M-103 ; SPARTANBURG, S. C. 29304 ; (803)573-2556 ; ; VERSION: 01.00 ; ; DATE: 4-APRIL-78 ; ; MODIFICATIONS: ; ; FUNCTION: STOP LOGGING FOR THE SPECIFIED TERMINAL ; ; INPUT: ; ; COMMAND LINE OF THE FORM: ; ; LGN TERMINAL ; ; OUTPUT: ; ; TERMINATION BUFFER QUEUED TO LOG TASK ; .PAGE ; MACRO CALLS AND SYSTEM DEFINITIONS ; .MCALL GMCR$,MSGN$S,DIR$,EXIT$S,WTSE$S .MCALL UCBDF$,TCBDF$,QIOSY$ UCBDF$ ;DEFINE UCB OFFSETS TCBDF$ ;DEFINE TCB OFFSETS QIOSY$ ;DEFINE QIO SYMBOLS .PAGE ; MESSAGES ; PFX: .BYTE PRMT-PFX-1 .ASCII /LGN -/ PRMT: .BYTE M001-PRMT-1 .ASCII /LGN>/ M001: .BYTE M002-M001-1 .ASCII /INVALID DEVICE/ M002: .BYTE M003-M002-1 .ASCII /SYNTAX ERROR/ M003: .BYTE M004-M003-1 .ASCII /LOGGING NOT ACTIVE ON THIS TERMINAL/ M004: .BYTE M005-M004-1 .ASCII /NOT A PRIVLEDGED TERMINAL/ M005: .BYTE 0 .EVEN .PAGE ; CONSTANTS AND WORK AREAS ; MCRLIN: GMCR$ DVBUF: .BLKW 2 LEFMSK=1 .PAGE $LGN: MOV $TKTCB,R0 ;R0 = A(MY TCB) MOV T.UCB(R0),R1 ;R1 = A(MY TI: UCB) BIT #U2.PRV,U.CW2(R1) ;PRIVLEDGED TERMINAL ? BNE 900$ ;IF NE, YES - CONTINUE MSGN$S PFX,3,M004,,,ABORT ;TERMINAL NOT PRIVLEDGED EXIT$S ;EXIT 900$: MOV #MCRLIN+2,R0 ;R0 = A(COMMAND POSITION IN BUFFER) DIR$ #MCRLIN ;TRY TO GET MCR COMMAND BCC 1100$ ;IF CC, WE GOT ONE - GO PARSE IT 1000$: MSGN$S PRMT,0,,MCRLIN+2,79.,ABORT ;PROMPT MOV #MCRLIN+2,R0 ;R0 = A(COMMAND POSITION IN BUFFER) CMPB #IE.EOF,$TIOSB ;CTRL/Z ? BNE 1200$ ;IF NE, NO - CONTINUE EXIT$S ;EXIT 1100$: TSTB (R0) ;EOL ? BEQ 1200$ ;IF EQ, YES - NOTHING TO PARSE CMPB #' ,(R0)+ ;BLANK ? BNE 1100$ ;IF NE, NO - CONTINUE SEARCH 1200$: CMPB #' ,(R0)+ ;BLANK ? BEQ 1200$ ;IF EQ, YES - SKIP IT DEC R0 ;R0 = A(FIRST NON BLANK CHARACTER) TSTB (R0) ;EOL ? BNE 1400$ ;IF NE, NO - PARSE TERMINAL 1300$: MOV $TKTCB,R0 ;R0 = A(MY TCB) MOV T.UCB(R0),R1 ;R1 = A(TI: UCB) BR 1800$ ;CONTINUE 1400$: MOV #DVBUF,R3 ;R3 = A(PARSE BUFFER) CALL $FDLOG ;PARSE THE TERMINAL BCC 1700$ ;IF CC, NO ERRORS - CONTINUE TST R3 ;SYNTAX ERROR ? BEQ 1600$ ;IF EQ, YES 1500$: MSGN$S PFX,3,M001,,,ABORT ;INVALID DEVICE BR 1000$ ;FORCE PROMPT 1600$: MSGN$S PFX,3,M002,,,ABORT ;SYNTAX ERROR BR 1000$ ;FORCE PROMPT 1700$: CMP #"TI,DVBUF ;IS DEVICE TI: BNE 1800$ ;IF NE, NO TST DVBUF+2 ;UNIT = 0 BEQ 1300$ ;IF EQ, YES - GO FIND TI0: 1800$: CALL $SWSTK,2000$ ;SWITCH TO SYSTEM STACK 1900$: MOV U.RED(R1),R1 ;FOLLOW THE REDIRECT CHAIN CMP U.RED(R1),R1 ;END OF CHAIN ? BNE 1900$ ;IF NE, NO - CONTINUE SEARCH MOV R1,DVBUF ;DVBUF = A(TERMINAL UCB) RETURN ;RETURN TO USER STACK 2000$: MOV DVBUF,R5 ;R5 = A(UCB) BIT #DV.TTY,U.CW1(R5) ;VALID DEVICE ? BEQ 1500$ ;IF EQ, NO TST TTLOG(R5) ;IS LOGGING ACTIVE ? BNE 2100$ ;IF NE, YES MSGN$S PFX,1,M003,,,ABORT ;LOGGING NOT ACTIVE EXIT$S ;EXIT 2100$: CALL $SWSTK,2300$ ;SWITCH TO SYSTEM STACK MOV TTLOG(R5),R0 ;R0 = A(LOG TASK TCB) CLR TTLOG(R5) ;TURN OFF LOGGING BIS #LEFMSK,T.EFLG(R0) ;SET LOG TASK EVENT FLAG MOV $ACTHD,$RQSCH ;DECLARE SIGNIFICANT EVENT RETURN ;RETURN TO USER STACK 2300$: EXIT$S ;EXIT ABORT: HALT ;ABORT THE TASK .END $LGN