;-------------------------------------------------------------------C ; SETCHAN January 1983 C ; Written by Denny Thury, Texas Instruments. Stolen and added to C ; Directory Managment, (DM), by John C. Hayre, Texas Instruments. C ; Send suggestions and/or complaints to: C ; C ; Texas Instruments C ; P.O. Box 225012, MS 3618 C ; Dallas, Texas 75265 C ; (Attention John Hayre) C ; C ; Phone: 214-995-3575 C ;-------------------------------------------------------------------C ; 4/10/85 RTG REMOVED CHECK FOR VT100 TERMINAL. RUN WHAT YOU'VE ; GOT. ; 7/26/85 RTG added check for VT200 and VT100 .TITLE SETCHAN ; .MACRO TYPE BUFF,SIZE $QIOW_S EFN=#3,- CHAN=4(AP),- FUNC=#IO$_WRITEVBLK,- P1=BUFF,- P2=SIZE .ENDM ; .PSECT SETDATA,LONG,RD,WRT,NOEXE $IODEF $TTDEF $DCDEF ; DEVCHAR: ; BUFFER FOR INITIAL CHARACTERISTICS OF DEVICE DCLASS: .BLKB 1 ; TERMINAL CLASS DTYPE: .BLKB 1 ; TERMINAL TYPE BSIZE: .BLKB 2 ; BUFFER SIZE TCHAR: .BLKB 4 ; TERMINAL CHARACTERISTICS ; ; BUFFER FOR UPDATED CHARACTERSTICS. NOWRAP WILL BE SET. ; NEWCHAR: NCLASS: .BLKB 1 ; TERMINAL CLASS NTYPE: .BLKB 1 ; TERMINAL TYPE NSIZE: .BLKB 2 ; BUFFER SIZE NCHAR: .BLKB 4 ; TERMINAL CHARACTERISTICS ; CHAN: .BLKW 1 ; SAVE CHANNEL NUMBER HERE ; ; DEFINE ESCAPE SEQUENCES FOR TERMINAL ; ESC=27 ; VT100: .ASCII //[?2l/ VT52SZ=.-VT52 ; WRAP: .ASCII /[?7h/ WRAPSZ=.-WRAP ; NOWRAP: .ASCII /[?7l/ NOWRAPSZ=.-NOWRAP ; ; DEFINE OTHER MESSAGES ; BADDEV: .ASCII /Terminal must be in VT100 or VT200 mode/ BADSZ=.-BADDEV ; .PSECT SETCHAN,SHR,EXE,NOWRT,RD,LONG ; .ENTRY SETTERM,0 ; CVTWL 4(AP),CHAN $QIOW_S EFN=#3,- CHAN=CHAN,- FUNC=#IO$_SENSEMODE,- P1=DEVCHAR ; MOVQ DEVCHAR,NEWCHAR ; COPY ORIGINAL CHARACTERISTICS CMPB DTYPE,#DT$_VT100 ; IS TERMINAL A VT100?? BEQLU 10$ ; YES.. PROCEED CMPB DTYPE,#TT$_VT200_SERIES ; IS TERMINAL A VT200?? BEQLU 10$ ; YES.. PROCEED CMPB DTYPE,#TT$_VT102 ; IS TERMINAL A VT102 BEQLU 10$ ; YES.. PROCEED BRW INVAL_DEV ; NO. INVALID DEVICE 10$: BBCC #TT$V_WRAP,NCHAR,20$ ; TURN OFF WRAP FEATURE TYPE NOWRAP,#NOWRAPSZ ; WRAP WAS SET -- CLEAR IT ; ; NOW SET NEW CHARACTERISTICS ; 20$: $QIOW_S EFN=#3,- CHAN=CHAN,- FUNC=#IO$_SETMODE,- P1=NEWCHAR RET ; RETURN TO CALLER ; ; A DEVICE WHICH IS NEITHER VT100 NOR VT52 IS CONSIDERED INVALID. ; ABORT THIS IMAGE, WITH AN ERROR MESSAGE ; INVAL_DEV: TYPE BADDEV,#BADSZ $EXIT_S ; ;------------------------------------------------------------------------ ; ; ENTRY TO RESTORE TERMINAL TO INITIAL CONDITIONS ; .ENTRY RSTTERM,0 ; ; CHECK IF TERMINAL HAD WRAP MODE SET, AND RESTORE IT IF SO ; CMPL NCHAR,TCHAR ; HAVE TERM. CHARACTERISTICS CHANGED BEQLU 10$ ; NO... SKIP THIS CODE TYPE WRAP,#WRAPSZ ; YES.. RESTORE WRAP MODE ; ; NOW RESTORE TERMINAL TO ORIGNAL STATE ; 10$: $QIOW_S EFN=#3,- CHAN=CHAN,- FUNC=#IO$_SETMODE,- P1=DEVCHAR ; RET ; .END