C SUBROUTINE TTYINI SUBROUTINE TTYINI C PERFORM INITS ON UNIT 5. NORMALLY EITHER DO NOTHING OR C REPLACE WITH SOMETHING THAT WORKS FOR YOUR SYSTEM. TYPICAL C ACTIONS: C SET THE TERMINAL NOT TO WRAP AROUND C ATTACH TERMINAL SO TYPE-AHEAD WORKS C SET UP TERMINAL TO MUNGE AROUND THE ESCAPE SEQUENCES TO ALLOW C SPECIAL FUNCTION AND/OR ARROW KEYS TO WORK. C VMS VERSION ... HIGHLY SYSTEM DEPENDENT... INTEGER*4 TTCHAN,STAT,SYS$ASSIGN,SYS$QIOW INTEGER*2 IOSB(4) LOGICAL*1 AKP(2) INTEGER*4 MODEBF(3),IWRK,IW2 INCLUDE '($IODEF)' INCLUDE '($TTDEF)' COMMON /TTCHN/TTCHAN DATA AKP/27,'='/ STAT=SYS$ASSIGN('TT',TTCHAN,,) IW2=IO$_SENSEMODE STAT=SYS$QIOW(,%VAL(TTCHAN),%VAL(IW2),IOSB,,,MODEBF,%VAL(12),,,,) IW2=TTM$_WRAP IWRK=.NOT.(IW2) MODEBF(2)=MODEBF(2).AND.IWRK IW2=TT$M_ESCAPE IWRK=IW2 MODEBF(2)=MODEBF(2).OR.IWRK C TURN ON DESIRED CHARACTERISTICS (REALLY NEED THE ESCAPE CHARAC. C BADLY...) IW2=IO$_SETMODE STAT=SYS$QIOW(,%VAL(TTCHAN),%VAL(IW2),IOSB,,,MODEBF,%VAL(12),,,,) C NOW HAVING SET THE TERMINAL UP, GET BACK OUTTA HERE... C FIRST SET AUXILIARY KEYPAD MODE UP ON UNIT 6 THOUGH. WRITE(6,2000)AKP 2000 FORMAT(2A1) RETURN END C C SUBROUTINE GETTTL(LINE) C READ IN A TERMINAL LINE ON VAX... C VMS VERSION. FOR STANDARD VANILLA VERSION COMMENT C OUT ALL BUT THE FORTRAN READ AND UNCOMMENT THAT... SUBROUTINE GETTTL(LINE) LOGICAL*1 LINE(132) C C C ****++++ VMS SPECIFIC BELOW INTEGER*4 TTCHAN,STAT,SYS$ASSIGN,SYS$QIOW INTEGER*2 IOSB(4) INTEGER*4 MODEBF(3),IWRK INCLUDE '($IODEF)' INCLUDE '($TTDEF)' COMMON /TTCHN/TTCHAN DO 1 N1=1,132 1 LINE(N1)=0 C NOTE TTCHAN IS SET UP IN TTYINI ABOVE IWRK=IO$_TTYREADALL STAT=SYS$QIOW(,%VAL(TTCHAN),%VAL(IWRK),IOSB,,,LINE,%VAL(132),,,,) C THAT OUGHT TO PULL EVERYTHING IN... C SINCE WE ZERO THE BUFFER INITIALLY, FORGET THE COUNT. IT ONLY C MATTERS IF BUFFER NEEDS TO BE CLEARED PAST IT... C ****++++ VMS SPECIFIC ABOVE C C C DUMMY CODE FOR FORTRAN READ... C ********* C **** HERE IS THE SECTION OF CODE YOU NEED FOR NON-VMS-SPECIFIC VERSION C READ(5,1000)LINE C1000 FORMAT(132A1) C ********* RETURN END