.TITLE TISTAT - PROVIDE TERMINAL STATUS TO AT. .IDENT /X01.00/ ;**- ; Module name: TISTAT - PROVIDE TERMINAL STATUS TO AT. ; ; Version X01.00 Last edit: 05-JUN-80 10:31 ; Status: Development/Debugging ; ; Revision history: ; ; Version X01.00 04-JUN-80 14:36 - 05-JUN-80 10:31 ; Created by: K.J. CROSS ; ;**- ; ; THIS PROGRAM PROVIDES INFORMATION TO AT. CONCERNING THE STATUS ; OF TI:. IT RETURNS THE FOLLOWING INFORMATION IN THE EXIT STATUS ; WORD ( IN AT.): ; ; +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ ; !--TERMINAL NUMBER--!SPW!N.U!WID!HFF!SLV!LWR!CRT!PRI!ERR!ERR!SUC! ; +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ ; ; THESE HAVE THE FOLLOWING MEANING: ; ; VALUE HOW TO TEST MEANING ; ----- ----------- ------- ; ; TERM /4000 TERMINAL NUMBER (E.G. 6 = TT6:) ; SPW &2000 1 = TISTAT WAS SPAWNED ; N.U NOT USED ; WID &400 1 = TERMINAL WIDTH > 80. ; HFF &200 1 = TERMINAL HAS HARWARE FORMFEED ; SLV &100 1 = TERMINAL IS SET SLAVE ; LWR &40 1 = TERMINAL SUPPORTS LOWER CASE ; CRT &20 1 = TERMINAL IS A CRT ; PRI &10 1 = TERMINAL IS PRIVILEGED ; ERR &6 NON-ZERO INDICATES ERROR (I.E. TISTAT ; TASK IMAGE NOT FOUND) ; SUC &1 1 = SUCCESSFUL COMPLETION (SHOULD ALWAYS ; BE SET) ; ; THIS TASK IS PRIVILEGED AND MUST BE LINKED TO THE SYSTEM EXECUTIVE: ; ; >MAC TISTAT=LB:[1,1]EXEMC/ML,[UIC]TISTAT ; ; >TKB TISTAT/PR=TISTAT,LB:[1,54]RSX11M.STB/SS ; ; ; SYSTEM MACROS ; .MCALL TCBDF$,EXST$S,EXIT$S,TTSYM$ .MCALL ALUN$C,GLUN$C,QIOW$C TCBDF$ ;DEFINE TCB OFFSETS TTSYM$ ;DEFINE TT DRIVER SYMBOLS ; ; LOCAL DEFINITIONS ; TILUN = 1 ;TI: LUN ST.ERR = 6 ;ERROR ST.PRI = 10 ;PRIVILEGED TERMINAL ST.CRT = 20 ;CRT ST.LWR = 40 ;LOWER CASE ST.SLV = 100 ;SLAVE ST.HFF = 200 ;HARDWARE FORMFEED ST.WID = 400 ;WIDE TERMINAL ST.SPW = 2000 ;TISTAT WAS SPAWNED ST.TRM = 174000 ;TERMINAL NUMBER ; ; LOCAL DATA ; GMCTAB: ;START OF SF.GMC TABLE ACR: .BYTE TC.ACR,0 ;SET /WRAP BIN: .BYTE TC.BIN,0 ;SET /RPA DLU: .BYTE TC.DLU,0 ;SET /REMOTE ESQ: .BYTE TC.ESQ,0 ;SET /ESCSEQ FDX: .BYTE TC.FDX,0 ;SET /FDX HFF: .BYTE TC.HFF,0 ;SET /FORMFEED HHT: .BYTE TC.HHT,0 ;SET /HHT HLD: .BYTE TC.HLD,0 ;SET /HOLD LPP: .BYTE TC.LPP,0 ;SET /LINES NEC: .BYTE TC.NEC,0 ;SET /NOECHO PRI: .BYTE TC.PRI,0 ;SET /PRIV RAT: .BYTE TC.RAT,0 ;SET /TYPEAHEAD RSP: .BYTE TC.RSP,0 ;SET /SPEED CRT: SCP: .BYTE TC.SCP,0 ;SET /CRT SLV: .BYTE TC.SLV,0 ;SET /SLAVE LWR: SMR: .BYTE TC.SMR,0 ;SET /LOWER TTP: .BYTE TC.TTP,0 ;SET /TERM VFL: .BYTE TC.VFL,0 ;SET /VFILL WID: .BYTE TC.WID,0 ;SET /BUF XSP: .BYTE TC.XSP,0 ;SET /SPEED EBC: .BYTE TC.8BC,0 ;SET /EBC GMCSIZ = .-GMCTAB ;END OF SF.GMC TABLE GLUNBF: .BLKW 6 ;GLUN$ BUFFER ; ; START OF PROGRAM. ; TISTAT: ALUN$C TILUN,TI,0 ;ASSIGN TI: GLUN$C TILUN,GLUNBF ;GET LUN INFO ABOUT TI: MOVB GLUNBF+G.LUNU,R0 ;GET TERMINAL UNIT NUMBER SWAB R0 ;PUT INTO HIGH BYTE ASL R0 ;PUT INTO ST.TRM LOCATION ASL R0 ; ... ASL R0 ; ... MOV $TKTCB,R1 ;GET OUR TCB ADDRESS TST T.OCBH(R1) ;WERE WE SPAWNED? BEQ EXX ;IF EQ, NO - NOBODY TO RECEIVE STATUS BIS #ST.SPW,R0 ;SET SPAWNED BIT QIOW$C SF.GMC,TILUN,TILUN,,,, ;READ CHARACTERISTICS BCC 20$ ;IF CC, WE GOT THEM BIS #EX$SEV,R0 ;SEVERE ERROR - SF.GMC FAILED BR EXX ;EXIT 20$: CMPB WID+1,#80. ;WIDE TERMINAL? BLOS 30$ ;IF LOS, YES BIS #ST.WID,R0 ;SET WIDE TERMINAL 30$: .IRP CHAR, TSTB 'CHAR'+1 ;IS TC.'CHAR' SET? BEQ .+6 ;IF EQ, NO BIS #ST.'CHAR',R0 ;GET IN CHARACTERISTICS WORD .ENDM BIS #EX$SUC,R0 ;SUCCESSFUL COMPLETION EXX: EXST$S R0 ;EXIT WITH STATUS EXIT$S ;IN CASE EXST$ FAILS .END TISTAT