.TITLE EXIT - PROGRAM EXIT FOR TECOIO .IDENT "X0210" ; ANDREW C. GOLDSTEIN 3-JAN-78 11:58 .MCALL EXIT$S,DIR$ EX$ERR = 2 ; EXIT WITH ERROR STATUS EX$SUC = 1 ; EXIT WITH SUCCESS STATUS .SBTTL EXIT ROUTINES ;+ ; ; *** - EXERR EXIT WITH ERROR STATUS ; ; THIS ENTRY IS CALLED BY TECO WHEN IT IS EXITING DUE TO AN ERROR AND ; THE EXIT-ON-ERROR BIT IN ETYPE IS SET. ; ; *** - GEXIT EXIT AND GO ; ; *** - TEXIT EXIT ; ; THESE TWO ENTRIES ARE CALLED BY TECO TO EXIT. "TEXIT" SIMPLY EXITS ; TO THE MONITOR; "GEXIT" IS AN EXIT AND GO. SINCE ITS FUNCTION IS ; NOT CLEARLY DEFINED IN RSX-11, IT ALSO JUST EXITS TO THE MONITOR. ; ; NO INPUTS, NO OUTPUTS, NO RETURN. ; ;- .PSECT CODE,RO .ENABL LSB EXERR:: MOV #EX$ERR,-(SP) ; SET FOR EXIT WITH ERROR STATUS BR 10$ GEXIT:: TEXIT:: MOV #EX$SUC,-(SP) ; SET FOR EXIT WITH SUCCESS STATUS 10$: TST OUTFDB+F.BDB ; SEE IF THERE IS AN OUTPUT FILE OPEN BEQ 20$ ; BRANCH IF NOT CALL KILFIL ; IF SO, DELETE IT 20$: CALL CLOSIF ; CLOSE THE INPUT FILE IF NECESSARY CALL INDCLS ; CLOSE THE INDIRECT FILE IF OPEN CALL TDRDEL ; DELETE TEMP DIRECTORY, IF ANY CALL TTDET ; DETACH THE TERMINAL MOV #<2*256.>+29.,-(SP) ; EXIT WITH STATUS DIC DIR$ ; TRY EXIT WITH STATUS EXIT$S ; ELSE DO NORMAL EXIT .DSABL LSB .SBTTL MAINTAIN VT52 DISPLAY ;+ ; ; *** - WATCH MAINTAIN DISPLAY ; ; THIS ROUTINE APPEARS HERE AS A NULL ROUTINE TO MAINTAIN THE TEXT DISPLAY. ; IT OCCUPIES THE OVERLAYABLE PSECT "SCREEN" AND MAY BE OVERLAID WITH A REAL ; ROUTINE TO MAINTAIN THE DISPLAY (SUCH AS THE VT52 SCREEN MODULE). ; ; INPUTS: NONE ; ; OUTPUTS: NONE ; ; ALL REGISTARE PRESERVED ; ;- .CSECT SCREEN SCREEN::.WORD 0 ; AMOUNT OF IMPURE AREA NEEDED BY DISPLAY WATCH:: CLC RETURN ; DUMMY ROUTINE .SBTTL FLAG READ/WRITE INTERCEPT ;+ ; ; *** - FLAGRW INTERCEPT FLAG MODIFICATIONS ; ; THIS ROUTINE IS CALLED BY ALL TECO COMMANDS READING OR WRITING THE VARIOUS ; FLAGS. THE ONLY ONE OF CONCERN IS THE SETTING AND CLEARING OF THE ; DETACH FLAG. ; ; INPUTS: ; ; R0 = NEW FLAG VALUE (IF R3 = -1) ; R2 = OFFSET TO FLAG CELL FROM R5 ; R3 = -1 IF FLAG IS BEING WRITTEN ; >< -1 IF FLAG IS BEING READ ; ; OUTPUTS: ; ; NONE ; ; ALL REGISTERS PRESERVED ; ;- .PSECT CODE,RO FLAGRW:: SAVE CMP R2,#ETYPE ; SEE IF WE ARE MODIFYING THE ET FLAG BNE 20$ ; BRANCH IF NOT INC R3 ; SEE IF WE ARE WRITING IT BNE 20$ ; BRANCH IF NOT MOV ETYPE(R5),R1 ; GET OLD VALUE MOV R0,R2 ; COPY NEW VALUE BIC R1,R2 ; COMPUTE XOR OF VALUES BIC R0,R1 ; IN R1 BIS R2,R1 ; BIT #ET.DET,R1 ; SEE IF THE DETACH FLAG IS CHANGING BEQ 20$ ; BRANCH IF NOT BIT #ET.DET,R0 ; IF IT IS BEING SET BEQ 10$ CALL TTDET ; DETACH THE TERMINAL AS REQUESTED BR 20$ 10$: CALL TTATT ; OR ATTACH IF IT IS BEING CLEARED 20$: RETURN .SBTTL NO CONTROL/O ;+ ; ; *** - NOCTLO NO CONTROL/O ; ; THIS ROUTINE DISABLES THE AFFECT OF A PREVIOUSLY TYPED CONTROL O ; ; INPUTS: NONE ; ; OUTPUTS: NONE ; ; ALL REGISTERS ARE PRESERVED ; ;- NOCTLO:: BIT #ET.DET,ETYPE(R5) ; IF RUNNING DETACHED BNE 10$ ; CTRL O IS UP TO THE TERMINAL DRIVER CALL TTDET ; DETACH THE TERMINAL CALL TTATT ; AND REATTACH IT 10$: RETURN .END