;WHEN OUTPUT FINISHES\r
IOSUPR=200 ;SUPPRESS ALL OUTPUT\r
;TILL NEXT INPUT OR INIT (^O).\r
- TRMON=400 ;TTY IS IN MONITOR\r
+ TPMON=400 ;TTY IS IN MONITOR\r
;COMMAND MODE.\r
- DDTM=1000 ;DDT MODE\r
+ DDTM=1000 ;DDT MDDE\r
TTYDTC=2000 ;TTY DDB IS DETACHED FROM LINE\r
SYNC=20000 ;BREAK CHARACTER SEEN\r
;SIGNAL TO INCREMENT SYNC COUNT\r
IFNDEF FTDDTM,<FTDDTM=-1> ;NON-ZERO TO IUNCLUDE CALLI DDTIN,OUT\r
\r
FTTTYSER=-1 ;DEFINE THIS SYSTEM TO HAVE SCNSRF\r
-\r
INTERN FTTTYSER ;ASSURE MULT DEF GLOBALS IF WRONG APSER\r
\f; RIGHT HALF BITS (USER MODE0\r
FCS=100 ;FULL CHARACTER SET. PASS\r
\r
TLKRNG=1 ;THIS LINE CURRENTLY IN A TALK RING\r
XON=2 ;^Q TYPED, PAPER TAPE INPUT\r
-\r
FULTWX=4 ;SELF ECHOING FULL DUPLEX\r
T35=10 ;MODEL 35\r
T37=20 ;MODEL 37\r
-ROBTPB=40 ;RUBOUT TYPED LAST (ECHO \ BEFORE NEXT CHAR.)\r
+ROBTPD=40 ;RUBOUT TYPED LAST (ECHO \ BEFORE NEXT CHAR.)\r
LINRDY=100 ;LINE TYPED IN BY USER (TISYNC .G.0)\r
; NOT ACTUALLY IN LINTAB. BUT RETURNED BY\r
; GETLIN IN TTCALL\r
;(BY MONITOR, TYPE-IN COMMANDS, OR PROGRAM)\r
\r
LGLSET=T37+T35+FULTWX+XON ;THESE CAN BE SET OR ZEROED BY PROGRAM\r
-KILMSK=ROBTPB+TLKRNG+XON ;CLEARED AT TTYKIL\r
+KILMSK=ROBTPD+TLKRNG+XON ;CLEARED AT TTYKIL\r
\r
;DECLARE THESE AS INTERNS TO GET THEM IN THE MAP\r
;AND TO CHECK AGAINST S IN COMMON\r
LINE=TAC1 ;SCANNER LINE NUMBER\r
HPOS=ITEM ;HORIZONTAL POSITION OF TTY,(0-71)\r
\r
+\r
;SPECIAL SYMBOLS\r
\r
PION=200 ;TURN PI ON BIT\r
IDLECH=1 ;DELAY CHAR FOR TABS, ETC,\r
; SHOULD BE ^V, BUT FOR 37'S\r
\r
+\r
;BYTE POINTERS\r
\r
+\r
INTERNAL TPCJOBN,TYPX,FULTWX,TYPE,TAKR,BREAKB\r
\r
PHPOS: POINT 7,DEVIAD(DEVDAT),12 ;HORIZONTAL POSITION\r
; DATA BLOCKS.\r
; 4)SETS TTYUSE#1 IN ALL TTY DDBS IN THE TRANSLATOR TABLE.\r
\r
-EXTERNAL SCNSCH,MLTTYL,MTTYLN,TTYTAB,SCNINI\r
+\r
+EXTERNAL SCNCHN,MLTTYL,MTTYLN,TTYTAB,SCNINI\r
\r
TTYINI: MOVEI TAC,SCNCHN\r
CONO TTY,1200(TAC) ;CLEAR CTY, ASSIGN CHANNEL\r
MOVSI TAC1,MLTTYL ;NO. OF TTY DEV. DATA BLOCKS. NOT LINES\r
MOVSI IOS,TPMON+IOFST ;VIRGIN STATUS\r
MOVEI DDB,TTYLST ;FIRST TTY DDB ADDRESS\r
-\r
SCN1: MOVSI DAT,TTYUSE ;TTY DDB IN USE BIT\r
TDNN DAT,DEVMOD(DDB) ;IS THIS TTY DDB IN USE?\r
SETZM DEVNAM(DDB) ;NO, SET PHYSICAL NAME TO 0.\r
SCN2: MOVSI TAC,TTYUSE\r
SKIPE DDB,TTYTAB(TAC1)\r
IORM TAC,DEVMOD(DDB)\r
- HRRZ TA,TAC1 ;SET UP PERMANENT LINTAB BITS\r
+ HRRZ TAC,TAC1 ;SET UP PERMANENT LINTAB BITS\r
CAIGE TAC,TCONLN ;ORDINARY TTY LINE?\r
JRST SCN3 ;YES\r
CAIE TAC,TCONLN ;CTY LINE?\r
HLLM TAC,LINTAB(TAC1) ;LEAVING REST OF BITS AS THEY WERE\r
AOBJN TAC1,SCN2\r
POPJ PDP,\r
+\r
\f;ROUTINES TO SET UP BUFFERS\r
\r
INTERNAL TSETBF,SETBFI,PUTCHI\r
MOVEM TAC,PCTR(DAT)\r
HLRZ TAC,BUF(DAT) ;CHARACTER COUNT\r
MOVEM TAC,FCTR(DAT) ;UPDATE FREE CHARACTER COUNT\r
+ POPJ PDP,\r
\r
;ROUTINE TO PUT A CHARACTER INTO A BUFFER (FOR INPUT,MERTPO, AND ONCE)\r
;CALL MOVEI DAT,TTYBUF(DDB) ;TO SPECIFY BUFFER\r
\r
PUTCHI: SOSGE FCTR(DAT) ;ANY FREE SPACES LEFT?\r
JRST PUTCI0 ;NO\r
-PUTCI2: SOSLE PTCR(DAT) ;LAST BYTE IN BUFFER FILLED?\r
+PUTCI2: SOSLE PCTR(DAT) ;LAST BYTE IN BUFFER FILLED?\r
JRST PUTCI1 ;NO, GO AHEAD\r
PUSH PDP,TAC\r
MOVE TAC,BUF(DAT) ;GET ADR AND SIZE OF BUFFER\r
PUTCI0: AOS FCTR(DAT) ;READJUST FREE COUNTER\r
POPJ PDP,\r
\r
+\r
;ROUTINE TO PLACE A CHARACTER INTO THE OUTPUT BUFFER\r
;CALLED AT INTERRUPT LEVEL\r
;CALL MOVE CHREC,CHARACTER TO PLACE INTO BUFFER\r
HLRZM TAC,TOPCTR(DDB) ;INITIAL COUNTER\r
HRLI TAC,440700 ;MAKE A BYTE POINTER\r
MOVEM TAC,TOPUTR(DDB) ;INITIAL POINTER\r
-PUTCO1: IDBP CHREC,TOPUTR(DDB) ;PUT CHARACTER INTO BUFFER\r
+PUTCO1: IDPB CHREC,TOPUTR(DDB) ;PUT CHARACTER INTO BUFFER\r
CONO PI,PION ;GET PI BACK ON\r
POPJ PDP,\r
+\r
\f;ROUTINE TO CHECK IF A CHARACTER IS SPECIAL(ASCII 0-37, 175-177)\r
;CALL MOVE CHREC,CHAR. TO BE CHECKED\r
; PUSHJ PDP,SPCHEK\r
;FORMAT XWD BITS+CHAR,ADRESS OF ROUTINE\r
;HIGH ORDER BITS IN LH:\r
\r
-SPACTN=40000 ;SPECIAL ACTION TO BE TAKEN\r
+SPACTN=400000 ;SPECIAL ACTION TO BE TAKEN\r
SPOUT=100000 ;SPECIAL HANDLING ON UUO OUTPUT\r
BREAKB=20000 ;BREAK CHARACTER\r
SPHPOS=10000 ;CHARACTER AFFECTS HORIZONTAL POSITION\r
-ECSBRK=4000 ;BREAK CHARACTER IN FCS(100) MODE\r
+FCSBRK=4000 ;BREAK CHARACTER IN FCS(100) MODE\r
ECHSUP=2000 ;SUPRESS ECHO OF CHAR ITSELF\r
\r
SPCTAB: XWD ECHSUP,0 ;NULL\r
XWD SPACTN+ECHSUP,CONTP ;^P T35 SW\r
XWD SPACTN+ECHSUP,CONTQ ;^Q XON (PAPERTAPE)\r
XWD ECHSUP,0 ;^R TAPE PUNCH OFF\r
- XWD SPACN+ECHSUP,CONTS ;^S XOFF\r
+ XWD SPACTN+ECHSUP,CONTS ;^S XOFF\r
XWD ECHSUP,0 ;^T TAPE PUNCH OFF\r
XWD SPACTN,CONTU ;^U DELETE LINE\r
XWD ECHSUP,0 ;^V\r
EXTERNAL WSYNC,IADRCK,ADRERR\r
EXTERNAL PTYOW\r
\r
+\r
DDTIN: PUSHJ PDP,TTYFNU ;SET UP DEVDAT,LINE\r
MOVE IOS,[XWD TTYIOW+DDTM,IOACT]\r
IORB IOS,DEVIOS(DDB) ;PUT INTO I/O WAIT\r
PUSHJ PDP,TWSYNC ;NO, WAIT FOR SOME\r
DDTIW: MOVE IOS,[XWD TTYIOW,IOACT]\r
ANDCAB IOS,DEVIOS(DDB)\r
-\r
MOVSI TAC,IOFST+DDTM\r
IORM TAC,DEVIOS(DEVDAT) ;STOP ALL IO\r
HRRZ TAC,@UUO ;CONTENTS OF USER (DDT) AC\r
\fXFRIN: PUSHJ PDP,GETCHR ;TRANSFER INTO USER'S AREA\r
JUMPE CHREC,XFRIN2\r
PUSHJ PDP,SPCHEK\r
- JRST XFIN1\r
+ JRST XFRIN1\r
TLNE TAC,FCSBRK+BREAKB\r
SOS TISYNC(DDB)\r
XFRIN1: CAIN CHREC,3 ;PRESTORED CONTROL C?\r
- JRST DDONC ;YES, GO INTO MONITOR MODE\r
+ JRST DDTCNC ;YES, GO INTO MONITOR MODE\r
IDPB CHREC,AC2\r
SOJG AC1,XFRIN ;LOOP TILL DONE\r
XFRIN2: MOVEI CHREC,0 ;TERMINATE STRING\r
DDT5: MOVSI IOS,IO+DDTM\r
IORB IOS,DEVIOS(DDB)\r
HRLI UUO,PROG ;POINT TO USER AC\r
- HRRI UUO,-1(PROG) ;COMPENSATE FOR GETWD1\r
+ HRRI UUO,-1(UUO) ;COMPENSATE FOR GETWD1\r
DDT2: MOVE DAT,[XWD 440700,TAC] ;BYTE POINTER TO TAC\r
PUSHJ PDP,GETWD1 ;GET THE USER'S WORD\r
DDT3: TLNN DAT,760000 ;ANY CHARS LEFT?\r
MOVNI HPOS,10 ;YES. 8 LF'S\r
CAIN TAC,13 ;VT?\r
MOVNI HPOS,4 ;YES. 4 LF'S\r
-OUTC1B: PUSHJ PDP,PUTCH0 ;OUTPUT THE PHONEY CHAR\r
+OUTC1B: PUSHJ PDP,PUTCHO ;OUTPUT THE PHONEY CHAR\r
ADDI HPOS,1 ;COUNT THE OUTPUTS\r
TRNE HPOS,7 ;ENOUGH?\r
JRST OUTC1B ;NO. MORE.\r
JRST OUTCH3 ;NO MORE.\r
\r
OUTC1A: ;HERE ON OUTPUT OF SLOW CHARS TO SMART TTY\r
- PUSHJ PDP,PUTCH0 ;SENT THE REAL CHAR\r
+ PUSHJ PDP,PUTCHO ;SENT THE REAL CHAR\r
MOVE TAC,CHREC ;COPY THE CHARACTER\r
- MOVEI CHREC,IOLECH ;A DELAY CHARACTER\r
+ MOVEI CHREC,IDLECH ;A DELAY CHARACTER\r
SUBI HPOS,2 ;TWO SHLUFF CHARACTERS\r
JRST OUTC1C ;GO OUTPUT THE SLUFFS.\r
;COUNT WILL BE MODIFIED ON VT,FF\r
;TO ADJUST HPOS FOR OUTPUT OF CHREC\r
;SKIPS IF SPCHECK SAYS SPECIAL CHAR\r
\r
-ADJHP: CAIL CHREC,174 ;HIGH SPECIALS?\r
+ADJHP: CAILE CHREC,174 ;HIGH SPECIALS?\r
JRST SPCHEK ;YES, NO HPOS MOTION\r
CAIL CHREC,40 ;CONTROL CHARACTERS?\r
AOJA HPOS,SPCHEK ;NO. COUNT HPOS FOR PRINT CHAR\r
\f XP TOBF,.-ZZ\r
REPEAT STTYBF,<0>\r
;NO. OF CHAR. IN MON. BUF.\r
-\r
XP TTYCHR,<<STTYBF>*5>\r
XP SCNDDS,.-ZZ ;SIZE OF SCN DDB\r
\r
TTYIN1: SKIPG TISYNC(DDB)\r
PUSHJ PDP,TWSYNC\r
PUSHJ PDP,MONUSR\r
-TENDIN: MOVE IOS,[XWD TTYIOW+DDTM+IOSUPR,ECHOF+MERTP+IGNOR+IOACT]\r
+TENDIN: MOVE IOS,[XWD TTYIOW+DDTM+IOSUPR,ECHOF+MERTPO+IGNOR+IOACT]\r
T0POPJ: ANDCAB IOS,DEVIOS(DDB)\r
POPJ PDP,\r
\f;ROUTINE TO MOVE A LINE OR STRING FROM TTY INPUT BUFFER TO USER'S INPUT BUFFER\r
IDPB CHREC,AC1 ;PLACE CHAR. IN USER BUFFER\r
PUSHJ PDP,SPCHEK ;SPECIAL CHARACTER?\r
JRST MONUS2 ;NO\r
-\r
- TLNE TAC,FCSBRK+BREAKP ;A BREAK CHARACTER?\r
+ TLNE TAC,FCSBRK+BREAKB ;A BREAK CHARACTER?\r
SOSA TISYNC(DDB) ;SOME BREAK, COUNT IT DOWN\r
MONUS2: SOJG AC2,MONUS1 ;NO, USER BUFFER FULL?\r
CAIN CHREC,3 ;STORED CONTROL C?\r
\r
MONUS7: MOVE IOS,[XWD TTYIOW,IOACT]\r
IORB IOS,DEVIOS(DDB) ;PUT JOB BACK IN IOWAIT\r
- PUSHJ PDP,MONU6\r
+ PUSHJ PDP,MONUS6\r
JRST TTYIN ;RESTART INPUT UUO\r
\r
MONUS8: TLNN IOS,IOEND ;ROOM FOR ANOTHER BUFFER, ^Z SEEN?\r
MOVSI IOS,IO+IOFST\r
IORB IOS,DEVIOS(DDB)\r
\r
+\r
PUSHJ PDP,STLNAC ;GET LINE CHARACTERISTICS\r
PUSH PDP,LINE ;SAVE INFO\r
PUSHJ PDP,USRMON ;MOVE USER'S BUFFER TO TTO BUFFER\r
PUSHJ PDP,ADVBFE ;ADVANCE USER'S HEADERS\r
SKIPA\r
JRST .+3 ;MOVE BUFFERS AVAILABLE\r
-\r
MOVEI IOS,IOACT ;NO MORE BUFFERS\r
ANDCAB IOS,DEVIOS(DDB) ;CLEAR ACTIVE IN IOS\r
POP PDP,LINE ;RESTORE LINE INFO\r
MOVSI TAC,TOIP\r
CONO PI,PIOFF ;PREVENT TIMING GLITCH\r
TDNN TAC,TTYPTR(DDB) ;IS TYPE-OUT ALREADY ON?\r
- JRST UTYPE1\r
+ JRST UTYPT1\r
CONO PI,PION\r
POPJ PDP,0\r
\r
-UTYP1: IORM TAC,TTYPTR(DDB) ;START TYPEOUT\r
+UTYPT1: IORM TAC,TTYPTR(DDB) ;START TYPTEOUT\r
JRST XMTIN1\r
\f;ROUTINE TO MOVE USER OUTPUT BUFFER TO MON. OUTPUT BUFFER\r
;CALLED ONLY AT UUO LEVEL,BY OUTPUT UUO\r
PUSHJ PDP,UADCK1\r
JRST @TTUUOT(UCHN) ;DISPATCH TO UUO ROUTINES\r
\r
+\r
TTUUOT: EXP INCHRW ;(0)INPUT CHAR. WAIT TILL TYPED\r
EXP ONEOUT ;(1)OUTPUT A CHARACTER\r
EXP INCHRS ;(2)INPUT A CHAR. & SKIP\r
-\r
EXP OUTSTR ;(3)OUTPUT A STRING\r
EXP INCHWL ;(4)INPUT CHAR, WAIT.LINE MODE\r
EXP INCHSL ;(5)INPUT CHAR, SKIP. LINE MODE\r
EXP GETLIN ;(6)GET LINE CHARACTERISTICS WORD\r
EXP SETLIN ;(7)SET BITS IN LH LINTAB\r
- EXP TRESOU ;(10)BACK UP POINTER TO COMMAND\r
+ EXP TRESCU ;(10)BACK UP POINTER TO COMMAND\r
EXP SETBFI ;(11)CLEAR INPUT BUFFER\r
EXP SETBF2 ;(12)CLEAR OUTPUT BUFFER\r
EXP SKPINC ;(13)SKIP IF CHAR TO INPUT\r
INCHRW: PUSHJ PDP,INCHRS ;GET ACHAR IF ONE IS THERE\r
JRST .+2 ;NONE THERE\r
POPJ PDP, ;CHAR, PICKED UP AND STORED\r
- MOVE IOS,[XWD TTYIOW+ODTM,IOACT][ ;SETUP FOR IOWAIT\r
+ MOVE IOS,[XWD TTYIOW+DDTM,IOACT] ;SETUP FOR IOWAIT\r
IORB IOS,DEVIOS(DDB) ;SPECIFICALLY FOR INPUT WAIT\r
PUSHJ PDP,TWSYNC ;WAIT FOR CHAR. TO BE TYPED\r
JRST INCHRW ;GO GET IT\r
ONEOUT: PUSHJ PDP,GETWDU ;PICK UP CHAR FROM USER\r
MOVE CHREC,TAC ;PUT IT IN PROPER AC\r
ANDI CHREC,177 ;MASK ANY JUNK\r
-\r
JUMPE CHREC,CPOPJ ;DONT STORE NULLS\r
PUSHJ PDP,OUTCHR ;PLACE IT IN TTO BUFFER\r
JUMPN CHREC,DDTUTT ;IF IT STORED, RETURN\r
JUMPE TAC,GETLN1 ;IF NONE, NO LINES.\r
SKIPLE TISYNC(DEVDAT) ;ANY TYPE-IN?\r
TLO LINE,LINRDY ;YES. FLAG.\r
-GETLN1: MOVE LINE,@UUO ;GIVE IT TO USER\r
+GETLN1: MOVEM LINE,@UUO ;GIVE IT TO USER\r
POPJ PDP,\r
\r
;ROUTINE TO SET LINE CHARACTERISTICS THAT ARE SETABLE\r
AND TAC,@UUO ;SET ONLY THOSE BITS USER WANTS SET\r
IORM TAC,LINTAB(LINE) ;SET RESULTANT\r
POPJ PDP,\r
+\r
\f;ROUTINE TO ATTACH TTY TO A JOB\r
;CALL: MOVE DEVDAT,ADDRESS OF TTY DEVICE DATA BLOCK\r
; MOVE ITEM,JOB NUMBER\r
; OR SIXBIT /CTY/,\r
; 5)SETS DEVOPR IF IT IS NON-ZERO.\r
\r
+\r
INTERNAL TTYATT,TTYATI\r
EXTERNAL PUNIT,PJOBN,TTYTAB\r
\r
EXTERNAL PUNIT,TTYTAB\r
\r
TTYDET: MOVSI TAC,TTYATC\r
- TDNN TAC,DEVMOND(DDB) ;IS THIS DDB WORTH KEEPING?\r
+ TDNN TAC,DEVMOD(DDB) ;IS THIS DDB WORTH KEEPING?\r
JRST TTYDT1 ;NO. GO JUNK IT\r
\r
MOVSI IOS,TTYDTC ;YES. MARK IT DETACHED\r
ADDI TAC,TTYCHR\r
IDIVI TAC,5\r
ADD TAC,TTIBUF(DDB)\r
- HLL TAC,TLWBYT(TAC1)\r
+ HLL TAC,TLHBYT(TAC1)\r
POP PDP,TAC1 ;RESTORE LINE\r
POPJ PDP,0\r
+\r
\f;ROUTINE TO FIND TTY FOR A JOB\r
;CALL: MOVE ITEM,JOB NUMBER\r
; PUSHJ PDP, TTYFND\r
EXTERNAL JOB\r
\r
\r
+\r
TTYFNU: MOVE ITEM,JOB\r
TTYFND: PUSHJ PDP,TTYSRC\r
TTYDAT: MOVEI DAT,TTOBUF(DDB)\r
POPJ PDP,\r
\r
+\r
;PUT JOB IN IO WAIT IF TTY BUFFER NOT EMPTY\r
;CALLED BY NON ERROR MESSAGE ROUTINES AT UUO LEVEL\r
\r
TLZ LINE,LGLSET ;INITIALIZE OTHER MODES\r
HLLM LINE,LINTAB(LINE)\r
SETZB TAC,DEVLOG(DEVDAT) ;CLEAR LOGICAL NAME\r
- MOVE TAC,[XWD TTYUSR+TTYATC,ASSCON+ASSPRG]\r
+ MOVE TAC,[XWD TTYUSE+TTYATC,ASSCON+ASSPRG]\r
ANDCAM TAC,DEVMOD(DEVDAT) ;CLEAR ATTACH,USE, AND ASSIGN BITS\r
TTYKL1: LDB LINE,PUNIT ;LINE NO.\r
SETZM TTYTAB(LINE) ;CLEAR TRANSLATOR TABLE\r
JRST TTYF9 ;FOUND\r
TTYF0: AOBJN LINE,TTYSRA\r
TTYF1: MOVSI TAC,576062 ;LOOK FOR DEVICE "OPR"\r
-\r
PUSHJ PDP,DEVPHY ;SEARCH PHYSICAL DEVICE NAMES FOR OPR\r
SKIPA TAC,DEVOPR ;NOT FOUND.\r
JRST TTYF9\r
JUMPN TAC,TTYF3 ;WAS OPR SPECIFIED IN ONCE ONLY CODE?\r
- MOVEI DDR,TTYLST ;NO\r
+ MOVEI DDB,TTYLST ;NO\r
SKIPE DEVNAM(DDB) ;HAS A TTY BEEN TYPED ON?\r
JRST TTYF9\r
MOVEI LINE,TCONLN ;NO USE CTY.\r
MOVE IOS,DEVIOS(DDB) ;GET CORRECT IOS\r
SKIPLE TISYNC(DDB) ;HAS USER TYPED AHEAD?\r
PUSHJ PDP,COMSET ;YES, WAKE UP COMMAND DECODER(IF IN MON. MODE)\r
- JRST UTYRET ;GO TYPE FIRST CHAR.\r
+ JRST UTYPET ;GO TYPE FIRST CHAR.\r
\f;ROUTINE TO ADD TTY TO TALK RING\r
;CALL: ADR. OF DDB TO BE ADDED TO RING AT -3(PDP)\r
; MOVE TAC,SIXBIT /TTYN/\r
POPJ PDP,\r
MOVE IOS,DEVIOS(DEVDAT) ;IS TTY IN MONITOR MODE AND LEFT HAND MARGIN?\r
MOVE TAC1,-3(PDP) ;TTY GIVING TALK COMMAND\r
-\r
MOVE TAC1,DEVNAM(TAC1) ;ITS NAME\r
MOVE TAC,DEVNAM(DEVDAT) ;OPR IS NEVER TOO BUSY...\r
CAME TAC1,DEVOPR ;EITHER ONE OPR?\r
LDB LINE,PUNIT ;LINE NUMBER IS RING.\r
MOVSI TAC,TLKRNG\r
LDB CHREC,PTALK\r
- TDDN TAC,LINTAB(LINE)\r
+ TDNN TAC,LINTAB(LINE)\r
HRRZ CHREC,LINE\r
IORM TAC,LINTAB(LINE)\r
EXCH DDB,-3(PDP) ;GET DDB OF TALKER\r
INTERNAL CTYINT\r
EXTERNAL SCNSAV,SCNCHN,TCONLN\r
\r
-CTYINI: CONSO TTY,50 ;TTI OR TTO FLAG?\r
+\r
+CTYINT: CONSO TTY,50 ;TTI OR TTO FLAG?\r
JRST CTYINT ;NO\r
JSR SCNSAV ;YES, SAVE AC'S\r
MOVEI LINE,TCONLN ;LOAD LINE WITH PROPER\r
\r
RECINT:\r
INUS2: ;TAG FOR INTERRUPT SERVICE\r
-INJEXT: ;ANOTHER TAG, NOT USED, BUT WANTED BY LOSING DLSINT\r
+INJEST: ;ANOTHER TAG, NOT USED, BUT WANTED BY LOSING DLSINT\r
\r
TRNN CHREC,177 ;IGNORE NULLS\r
POPJ PDP,0 ;DISMISS INTERRUPT\r
MOVE TAC,TIPCTR(DDB) ;UPDATE COUNTER FOR ^U\r
DPB TAC,PLSTLC\r
TLZN IOS,TTYIOW ;IN TELETYPE INPUT WAIT?\r
- JRST TTYTST ;NO, GO ECHO\r
+ JRST TYPTST ;NO, GO ECHO\r
PUSHJ PDP,STTIOD ;YES, SET IO DONE(OUT OF TTY IOW)\r
MOVSI IOS,IOW+TTYIOW\r
ANDCAB IOS,DEVIOS(DDB) ;CLEAR WAIT BITS\r
POPJ PDP,\r
\fINTERNAL XMTINT,PTYGET\r
\r
-XMTINT: HLL LINE,LINETAB(LINE) ;GET LINE CHAR.\r
+XMTINT: HLL LINE,LINTAB(LINE) ;GET LIN CHAR.\r
HRRZ DDB,TTYTAB(LINE) ;GET DDB ADDRESS\r
JUMPE DDB,CPOPJ ;IF NONE, X BEING TYPED\r
MOVE IOS,DEVIOS(DDB) ;GET IO STATUS\r
SKIPL TTYPTR(DDB) ;WAS TYPE-OUT IN PROGRESS?\r
POPJ PDP, ;IGNORE XMT DURING ECHO CK\r
XMTIN1: MOVEI DAT,TTOBUF(DDB) ;SPECIFY TTO BUFFER\r
-XMTI1A CONO PI,PIOFF ;KEEP TOIP AND PUTR/TAKR EQUAL\r
+XMTI1A: CONO PI,PIOFF ;KEEP TOIP AND PUTR/TAKR EQUAL\r
HLRZ TAC,BUF(DAT) ;IS OUTPUT BUFFER EMPTY?\r
CAMLE TAC,FCTR(DAT) ;I.E. FREE COUNT AT MAX?\r
JRST XMTIN2 ;NO, TYPING STILL IN PROGRESS\r
\r
TRNE IOS,MERTPO ;MONITOR ERROR MESSAGE?\r
- CAIE DAT,TIOBUF(DDB) ;OUTPUT BUFFER?\r
+ CAIE DAT,TTOBUF(DDB) ;OUTPUT BUFFER?\r
JRST XMTIN4 ;NO, MUST REALLY BE DONE\r
MOVEI DAT,TTIBUF(DDB) ;YES. NOW EMPTY OUT TTI BUFFER\r
JRST XMTI1A\r
;OTHERWISE, DDB ONLY USED TO TYPE A\r
JRST TTYKIL ;MESSAGE; KILL TTY DDB\r
\r
-\r
XMTIN2: CONO PI,PION\r
PUSHJ PDP,GETCHR ;NO, GET NEXT CHAR. IN BUFFER\r
JUMPE CHREC,XMTIN1 ;IGNORE NULLS\r
TTEDIT: PUSHJ PDP,ADJHP ;ADJUST HP AND CHECK SPECIAL\r
JRST TIPACK ;NOT SPECIAL\r
MOVSI IOS,0\r
- TLNE TAC,BBREAK+FCSBRK ;BREAK CHAR?\r
+ TLNE TAC,BREAKB+FCSBRK ;BREAK CHAR?\r
TLO IOS,SYNC ;BREAK CHAR, SET SYNC\r
IORB IOS,DEVIOS(DDB) ;SET SYNC\r
JUMPL TAC,0(TAC) ;DISPATCH IF SPACTN SET\r
PUSHJ PDP,BSECHO ;YES. OUTPUT A BACKSLASH\r
TTIPT1: PUSHJ PDP,PUTCHI ;PUT CHAR IN INPUT BUFFER\r
JRST INBFUL ;IT DIDNT FIT\r
- LTNN TAC,ECHSUP ;SHOULD THIS CHAR BE ECHOED?\r
-DUPLEX: TLNE LINE,FULTWX,HLFDPX ;IS THIS LINE ECHOING ITSELF?\r
+ TLNN TAC,ECHSUP ;SHOULD THIS CHAR BE ECHOED?\r
+DUPLEX: TLNE LINE,FULTWX+HLFDPX ;IS THIS LINE ECHOING ITSELF?\r
POPJ PDP,0 ;JUST RETURN WITHOUT ECHO\r
DUPLX1: PUSH PDP,TAC ;SAVE TAC OVER PUTCHO\r
TLNN IOS,TPMON ;SHOULD ECHO IF IN MONITOR MODE\r
PUSHJ PDP,PUTCHO ;SO ECHO IT.\r
JRST TPOPJ ;RESTORE TAC AND RETURN\r
\r
-INTERNAL INBFUB ;FOR THE PTY\r
+INTERNAL INBFUL ;FOR THE PTY\r
\r
INBFUL: MOVSI IOS,SYNC ;DONT COUNT SYNC COUNT\r
ANDCAB IOS,DEVIOS(DDB) ; SINCE CHAR NOT STORED\r
AOJDPX: AOJA HPOS,DUPLX1 ;OUTPUT AND COUNT HPOS\r
\r
RUBOU1: TLZE LINE,ROBTPD ;END OF INPUT STREAM REACHED\r
- \r
PUSHJ PDP,BSECHO ;OUTPUT A BACKSLASH\r
JRST CRLFEC ;AND A CR LF\r
\r
TRNE TAC,17 ;DONE YET?\r
SOJA TAC,.-2 ;NO. OUTPUT MORE\r
POPJ PDP,0 ;DONE\r
+\r
\fSIMFF: TLO TAC,ECHSUP ;DON'T OUTPUT FF OR VT TO A 33\r
PUSHJ PDP,TTIPUT ;PUT IT IN BUFFER\r
MOVEI CHREC,12 ;SIMULATE WITH LF'S\r
CONTI: TLNN LINE,T35\r
TLO TAC,ECHSUP ;DONT OUTPUT TAB TO 33\r
PUSHJ PDP,TTIPUT ;PUT IN BUFFER AND MAYBE ECHO\r
- TLEN LINE,XON+DISLIN ;IF PAPER TAPE,DISMISS\r
+ TLNE LINE,XON+DISLIN ;IF PAPER TAPE,DISMISS\r
POPJ PDP,0 ; SO AS NOT TO OVERFILL OUTBUF\r
;ALSO, DISPLAY DOESNT WANT FILLER\r
HRRI TAC,1 ;TWO IDLES\r
\r
CRLF: MOVEI HPOS,0 ;HERE ON INPUT OF A CARRIAGE RETURN\r
TLNE LINE,XON ;IF PAPER TAPE, NO FREE LF\r
-\r
JRST TTIPUT ;JUST STORE THE CR\r
PUSHJ PDP,TTIPUT ;ORDINARILY, STORE AND GO ON HERE\r
MOVEI CHREC,12 ;BY ADDING A LF\r
ADD TAC,PUTR(DAT) ;*\r
TLNE TAC,400000\r
ADD TAC,[XWD 347777,-1]\r
-\r
MOVEM TAC,PUTR(DAT)\r
AOS FCTR(DAT)\r
AOS TAC,PCTR(DAT)\r
TYPL: TLNE LINE,PTYLIN\r
POPJ PDP, ;YES\r
PUSHJ PDP,PEVEN8 ;GENERATE CORRECT PARITY\r
- TLNE LINE,CTYLIN ;NO,CONSOLE TTY?\r
+ TLNN LINE,CTYLIN ;NO,CONSOLE TTY?\r
JRST SCNTYP ;TYPE CHAR.\r
CTYP: DATAO TTY,CHREC\r
DPB CHREC,PLASTC\r
POPJ PDP, ;YES.\r
MOVSI IOS,MLTTYL ;NO. OF TTY DDBS\r
MOVEI DEVDAT,TTYLST ;ADDRESS OF FIRST TTY DDB\r
- SKIPA TAC,[XWD TTYUSE+TTYATC,ASSPRG+ASSCON]\r
+ SKIPA TAC,[XWD TTYUSE+TTYATC,ASSCON+ASSPRG]\r
HLRZ DEVDAT,DEVSER(DEVDAT) ;CHAIN THRU DDBS\r
TDNE TAC,DEVMOD(DEVDAT) ;USE,ATTACH OR ASSIGN BITS ON?\r
AOBJN IOS,.-2 ;YES. DONE?\r
-\r
JUMPGE IOS,CPOPJ ;YES. DEVICE DATA BLOCK FOUND?\r
MOVSI TAC,TOIP ;CLEAR TOIP IN DDB\r
ANDCAM TAC,TTYPTR(DDB) ;IN CASE OF PREVIOUS DETACH\r
TLNE LINE,CTYLIN ;IS THIS CONSOLE TTY?\r
MOVEM TAC,DEVNAM(DEVDAT);YES, SET NAME TO CTY.\r
TLNE LINE,PTYLIN ;IS THIS A PTY?\r
- PUSHJ PDP,PTMNND ;YES. SET IT INTO MONITOR MODE\r
+ PUSHJ PDP,PTMNMD ;YES. SET IT INTO MONITOR MODE\r
JRST CPOPJ1 ;SUCCESSFUL RETURN.\r
\fSCNEND: END\r
\f\r