X-Git-Url: http://git.sky-visions.com/cgi-bin/gitweb.cgi/retro-software/dec/tops10/v4.5.git/blobdiff_plain/cda2ba6d27526e5ef6f27f7b3391cfb55055bf2e..8c11230d54654d010d9027c672dcf4011d2cf539:/src/scnsrf.mac diff --git a/src/scnsrf.mac b/src/scnsrf.mac index 14d7517..76fda9d 100644 --- a/src/scnsrf.mac +++ b/src/scnsrf.mac @@ -73,9 +73,9 @@ SCNSRF: ;WHEN OUTPUT FINISHES IOSUPR=200 ;SUPPRESS ALL OUTPUT ;TILL NEXT INPUT OR INIT (^O). - TRMON=400 ;TTY IS IN MONITOR + TPMON=400 ;TTY IS IN MONITOR ;COMMAND MODE. - DDTM=1000 ;DDT MODE + DDTM=1000 ;DDT MDDE TTYDTC=2000 ;TTY DDB IS DETACHED FROM LINE SYNC=20000 ;BREAK CHARACTER SEEN ;SIGNAL TO INCREMENT SYNC COUNT @@ -86,7 +86,6 @@ IFNDEF FTHDPX, ;NON-ZERO TO INCLUDE HALF-DUPLEX CODE IFNDEF FTDDTM, ;NON-ZERO TO IUNCLUDE CALLI DDTIN,OUT FTTTYSER=-1 ;DEFINE THIS SYSTEM TO HAVE SCNSRF - INTERN FTTTYSER ;ASSURE MULT DEF GLOBALS IF WRONG APSER ; RIGHT HALF BITS (USER MODE0 FCS=100 ;FULL CHARACTER SET. PASS @@ -138,11 +137,10 @@ TTYRMT=4000 ;REMOTE TTY LINE TLKRNG=1 ;THIS LINE CURRENTLY IN A TALK RING XON=2 ;^Q TYPED, PAPER TAPE INPUT - FULTWX=4 ;SELF ECHOING FULL DUPLEX T35=10 ;MODEL 35 T37=20 ;MODEL 37 -ROBTPB=40 ;RUBOUT TYPED LAST (ECHO \ BEFORE NEXT CHAR.) +ROBTPD=40 ;RUBOUT TYPED LAST (ECHO \ BEFORE NEXT CHAR.) LINRDY=100 ;LINE TYPED IN BY USER (TISYNC .G.0) ; NOT ACTUALLY IN LINTAB. BUT RETURNED BY ; GETLIN IN TTCALL @@ -151,7 +149,7 @@ LINRDY=100 ;LINE TYPED IN BY USER (TISYNC .G.0) ;(BY MONITOR, TYPE-IN COMMANDS, OR PROGRAM) LGLSET=T37+T35+FULTWX+XON ;THESE CAN BE SET OR ZEROED BY PROGRAM -KILMSK=ROBTPB+TLKRNG+XON ;CLEARED AT TTYKIL +KILMSK=ROBTPD+TLKRNG+XON ;CLEARED AT TTYKIL ;DECLARE THESE AS INTERNS TO GET THEM IN THE MAP ;AND TO CHECK AGAINST S IN COMMON @@ -165,6 +163,7 @@ INTERNAL T35,T37,FULTWX,LGLSET,KILMSK,XON LINE=TAC1 ;SCANNER LINE NUMBER HPOS=ITEM ;HORIZONTAL POSITION OF TTY,(0-71) + ;SPECIAL SYMBOLS PION=200 ;TURN PI ON BIT @@ -173,8 +172,10 @@ INTERNAL T35,T37,FULTWX,LGLSET,KILMSK,XON IDLECH=1 ;DELAY CHAR FOR TABS, ETC, ; SHOULD BE ^V, BUT FOR 37'S + ;BYTE POINTERS + INTERNAL TPCJOBN,TYPX,FULTWX,TYPE,TAKR,BREAKB PHPOS: POINT 7,DEVIAD(DEVDAT),12 ;HORIZONTAL POSITION @@ -213,7 +214,8 @@ TOIP=400000 ;SIGN OF TTYPTR(DDB) - TYPE-OUT IN PROGRESS ; DATA BLOCKS. ; 4)SETS TTYUSE#1 IN ALL TTY DDBS IN THE TRANSLATOR TABLE. -EXTERNAL SCNSCH,MLTTYL,MTTYLN,TTYTAB,SCNINI + +EXTERNAL SCNCHN,MLTTYL,MTTYLN,TTYTAB,SCNINI TTYINI: MOVEI TAC,SCNCHN CONO TTY,1200(TAC) ;CLEAR CTY, ASSIGN CHANNEL @@ -221,7 +223,6 @@ TTYINI: MOVEI TAC,SCNCHN MOVSI TAC1,MLTTYL ;NO. OF TTY DEV. DATA BLOCKS. NOT LINES MOVSI IOS,TPMON+IOFST ;VIRGIN STATUS MOVEI DDB,TTYLST ;FIRST TTY DDB ADDRESS - SCN1: MOVSI DAT,TTYUSE ;TTY DDB IN USE BIT TDNN DAT,DEVMOD(DDB) ;IS THIS TTY DDB IN USE? SETZM DEVNAM(DDB) ;NO, SET PHYSICAL NAME TO 0. @@ -240,7 +241,7 @@ SCN1: MOVSI DAT,TTYUSE ;TTY DDB IN USE BIT SCN2: MOVSI TAC,TTYUSE SKIPE DDB,TTYTAB(TAC1) IORM TAC,DEVMOD(DDB) - HRRZ TA,TAC1 ;SET UP PERMANENT LINTAB BITS + HRRZ TAC,TAC1 ;SET UP PERMANENT LINTAB BITS CAIGE TAC,TCONLN ;ORDINARY TTY LINE? JRST SCN3 ;YES CAIE TAC,TCONLN ;CTY LINE? @@ -254,6 +255,7 @@ SCN3: HRRM TAC,LINTAB(TAC1) ;SET LOG. LINE NUMBERS HLLM TAC,LINTAB(TAC1) ;LEAVING REST OF BITS AS THEY WERE AOBJN TAC1,SCN2 POPJ PDP, + ;ROUTINES TO SET UP BUFFERS INTERNAL TSETBF,SETBFI,PUTCHI @@ -276,6 +278,7 @@ SETBF0: MOVE TAC,BUF(DAT) MOVEM TAC,PCTR(DAT) HLRZ TAC,BUF(DAT) ;CHARACTER COUNT MOVEM TAC,FCTR(DAT) ;UPDATE FREE CHARACTER COUNT + POPJ PDP, ;ROUTINE TO PUT A CHARACTER INTO A BUFFER (FOR INPUT,MERTPO, AND ONCE) ;CALL MOVEI DAT,TTYBUF(DDB) ;TO SPECIFY BUFFER @@ -285,7 +288,7 @@ SETBF0: MOVE TAC,BUF(DAT) PUTCHI: SOSGE FCTR(DAT) ;ANY FREE SPACES LEFT? JRST PUTCI0 ;NO -PUTCI2: SOSLE PTCR(DAT) ;LAST BYTE IN BUFFER FILLED? +PUTCI2: SOSLE PCTR(DAT) ;LAST BYTE IN BUFFER FILLED? JRST PUTCI1 ;NO, GO AHEAD PUSH PDP,TAC MOVE TAC,BUF(DAT) ;GET ADR AND SIZE OF BUFFER @@ -336,6 +339,7 @@ GETCH1: TDZA CHREC,CHREC ;RETURN 0 INDICATING END OF BUFFER PUTCI0: AOS FCTR(DAT) ;READJUST FREE COUNTER POPJ PDP, + ;ROUTINE TO PLACE A CHARACTER INTO THE OUTPUT BUFFER ;CALLED AT INTERRUPT LEVEL ;CALL MOVE CHREC,CHARACTER TO PLACE INTO BUFFER @@ -351,9 +355,10 @@ PUTCHO: SOSGE TOFCTR(DDB) ;RETURN IMMEDIATELY IF NO ROOM HLRZM TAC,TOPCTR(DDB) ;INITIAL COUNTER HRLI TAC,440700 ;MAKE A BYTE POINTER MOVEM TAC,TOPUTR(DDB) ;INITIAL POINTER -PUTCO1: IDBP CHREC,TOPUTR(DDB) ;PUT CHARACTER INTO BUFFER +PUTCO1: IDPB CHREC,TOPUTR(DDB) ;PUT CHARACTER INTO BUFFER CONO PI,PION ;GET PI BACK ON POPJ PDP, + ;ROUTINE TO CHECK IF A CHARACTER IS SPECIAL(ASCII 0-37, 175-177) ;CALL MOVE CHREC,CHAR. TO BE CHECKED ; PUSHJ PDP,SPCHEK @@ -375,11 +380,11 @@ SPCHK1: MOVE TAC,SPCTAB(CHREC) ;FORMAT XWD BITS+CHAR,ADRESS OF ROUTINE ;HIGH ORDER BITS IN LH: -SPACTN=40000 ;SPECIAL ACTION TO BE TAKEN +SPACTN=400000 ;SPECIAL ACTION TO BE TAKEN SPOUT=100000 ;SPECIAL HANDLING ON UUO OUTPUT BREAKB=20000 ;BREAK CHARACTER SPHPOS=10000 ;CHARACTER AFFECTS HORIZONTAL POSITION -ECSBRK=4000 ;BREAK CHARACTER IN FCS(100) MODE +FCSBRK=4000 ;BREAK CHARACTER IN FCS(100) MODE ECHSUP=2000 ;SUPRESS ECHO OF CHAR ITSELF SPCTAB: XWD ECHSUP,0 ;NULL @@ -401,7 +406,7 @@ SPCTAB: XWD ECHSUP,0 ;NULL XWD SPACTN+ECHSUP,CONTP ;^P T35 SW XWD SPACTN+ECHSUP,CONTQ ;^Q XON (PAPERTAPE) XWD ECHSUP,0 ;^R TAPE PUNCH OFF - XWD SPACN+ECHSUP,CONTS ;^S XOFF + XWD SPACTN+ECHSUP,CONTS ;^S XOFF XWD ECHSUP,0 ;^T TAPE PUNCH OFF XWD SPACTN,CONTU ;^U DELETE LINE XWD ECHSUP,0 ;^V @@ -430,6 +435,7 @@ INTERNAL DDTIN EXTERNAL WSYNC,IADRCK,ADRERR EXTERNAL PTYOW + DDTIN: PUSHJ PDP,TTYFNU ;SET UP DEVDAT,LINE MOVE IOS,[XWD TTYIOW+DDTM,IOACT] IORB IOS,DEVIOS(DDB) ;PUT INTO I/O WAIT @@ -438,7 +444,6 @@ DDTIN: PUSHJ PDP,TTYFNU ;SET UP DEVDAT,LINE PUSHJ PDP,TWSYNC ;NO, WAIT FOR SOME DDTIW: MOVE IOS,[XWD TTYIOW,IOACT] ANDCAB IOS,DEVIOS(DDB) - MOVSI TAC,IOFST+DDTM IORM TAC,DEVIOS(DEVDAT) ;STOP ALL IO HRRZ TAC,@UUO ;CONTENTS OF USER (DDT) AC @@ -456,11 +461,11 @@ DDTIW: MOVE IOS,[XWD TTYIOW,IOACT] XFRIN: PUSHJ PDP,GETCHR ;TRANSFER INTO USER'S AREA JUMPE CHREC,XFRIN2 PUSHJ PDP,SPCHEK - JRST XFIN1 + JRST XFRIN1 TLNE TAC,FCSBRK+BREAKB SOS TISYNC(DDB) XFRIN1: CAIN CHREC,3 ;PRESTORED CONTROL C? - JRST DDONC ;YES, GO INTO MONITOR MODE + JRST DDTCNC ;YES, GO INTO MONITOR MODE IDPB CHREC,AC2 SOJG AC1,XFRIN ;LOOP TILL DONE XFRIN2: MOVEI CHREC,0 ;TERMINATE STRING @@ -502,7 +507,7 @@ DDTOUT: PUSHJ PDP,TTYFNU DDT5: MOVSI IOS,IO+DDTM IORB IOS,DEVIOS(DDB) HRLI UUO,PROG ;POINT TO USER AC - HRRI UUO,-1(PROG) ;COMPENSATE FOR GETWD1 + HRRI UUO,-1(UUO) ;COMPENSATE FOR GETWD1 DDT2: MOVE DAT,[XWD 440700,TAC] ;BYTE POINTER TO TAC PUSHJ PDP,GETWD1 ;GET THE USER'S WORD DDT3: TLNN DAT,760000 ;ANY CHARS LEFT? @@ -575,16 +580,16 @@ OUTC1C: CAIN TAC,14 ;FF? MOVNI HPOS,10 ;YES. 8 LF'S CAIN TAC,13 ;VT? MOVNI HPOS,4 ;YES. 4 LF'S -OUTC1B: PUSHJ PDP,PUTCH0 ;OUTPUT THE PHONEY CHAR +OUTC1B: PUSHJ PDP,PUTCHO ;OUTPUT THE PHONEY CHAR ADDI HPOS,1 ;COUNT THE OUTPUTS TRNE HPOS,7 ;ENOUGH? JRST OUTC1B ;NO. MORE. JRST OUTCH3 ;NO MORE. OUTC1A: ;HERE ON OUTPUT OF SLOW CHARS TO SMART TTY - PUSHJ PDP,PUTCH0 ;SENT THE REAL CHAR + PUSHJ PDP,PUTCHO ;SENT THE REAL CHAR MOVE TAC,CHREC ;COPY THE CHARACTER - MOVEI CHREC,IOLECH ;A DELAY CHARACTER + MOVEI CHREC,IDLECH ;A DELAY CHARACTER SUBI HPOS,2 ;TWO SHLUFF CHARACTERS JRST OUTC1C ;GO OUTPUT THE SLUFFS. ;COUNT WILL BE MODIFIED ON VT,FF @@ -593,7 +598,7 @@ OUTC1A: ;HERE ON OUTPUT OF SLOW CHARS TO SMART TTY ;TO ADJUST HPOS FOR OUTPUT OF CHREC ;SKIPS IF SPCHECK SAYS SPECIAL CHAR -ADJHP: CAIL CHREC,174 ;HIGH SPECIALS? +ADJHP: CAILE CHREC,174 ;HIGH SPECIALS? JRST SPCHEK ;YES, NO HPOS MOTION CAIL CHREC,40 ;CONTROL CHARACTERS? AOJA HPOS,SPCHEK ;NO. COUNT HPOS FOR PRINT CHAR @@ -731,7 +736,6 @@ SCNDDB: SIXBIT /TTY0/ ;DEVNAME XP TOBF,.-ZZ REPEAT STTYBF,<0> ;NO. OF CHAR. IN MON. BUF. - XP TTYCHR,<*5> XP SCNDDS,.-ZZ ;SIZE OF SCN DDB @@ -763,7 +767,7 @@ IFN FTHDPX,< TTYIN1: SKIPG TISYNC(DDB) PUSHJ PDP,TWSYNC PUSHJ PDP,MONUSR -TENDIN: MOVE IOS,[XWD TTYIOW+DDTM+IOSUPR,ECHOF+MERTP+IGNOR+IOACT] +TENDIN: MOVE IOS,[XWD TTYIOW+DDTM+IOSUPR,ECHOF+MERTPO+IGNOR+IOACT] T0POPJ: ANDCAB IOS,DEVIOS(DDB) POPJ PDP, ;ROUTINE TO MOVE A LINE OR STRING FROM TTY INPUT BUFFER TO USER'S INPUT BUFFER @@ -785,8 +789,7 @@ MONUS1: PUSHJ PDP,GETCHR ;GET A CHAR, FROM IT IDPB CHREC,AC1 ;PLACE CHAR. IN USER BUFFER PUSHJ PDP,SPCHEK ;SPECIAL CHARACTER? JRST MONUS2 ;NO - - TLNE TAC,FCSBRK+BREAKP ;A BREAK CHARACTER? + TLNE TAC,FCSBRK+BREAKB ;A BREAK CHARACTER? SOSA TISYNC(DDB) ;SOME BREAK, COUNT IT DOWN MONUS2: SOJG AC2,MONUS1 ;NO, USER BUFFER FULL? CAIN CHREC,3 ;STORED CONTROL C? @@ -821,7 +824,7 @@ MONUS5: MOVSI IOS,IOFST MONUS7: MOVE IOS,[XWD TTYIOW,IOACT] IORB IOS,DEVIOS(DDB) ;PUT JOB BACK IN IOWAIT - PUSHJ PDP,MONU6 + PUSHJ PDP,MONUS6 JRST TTYIN ;RESTART INPUT UUO MONUS8: TLNN IOS,IOEND ;ROOM FOR ANOTHER BUFFER, ^Z SEEN? @@ -839,13 +842,13 @@ TTYOUT: MOVSI IOS,IOBEG MOVSI IOS,IO+IOFST IORB IOS,DEVIOS(DDB) + PUSHJ PDP,STLNAC ;GET LINE CHARACTERISTICS PUSH PDP,LINE ;SAVE INFO PUSHJ PDP,USRMON ;MOVE USER'S BUFFER TO TTO BUFFER PUSHJ PDP,ADVBFE ;ADVANCE USER'S HEADERS SKIPA JRST .+3 ;MOVE BUFFERS AVAILABLE - MOVEI IOS,IOACT ;NO MORE BUFFERS ANDCAB IOS,DEVIOS(DDB) ;CLEAR ACTIVE IN IOS POP PDP,LINE ;RESTORE LINE INFO @@ -853,11 +856,11 @@ UTYPET: JUMPL LINE,PTYPE ;START PTY EXCHANGE IF PTY LINE MOVSI TAC,TOIP CONO PI,PIOFF ;PREVENT TIMING GLITCH TDNN TAC,TTYPTR(DDB) ;IS TYPE-OUT ALREADY ON? - JRST UTYPE1 + JRST UTYPT1 CONO PI,PION POPJ PDP,0 -UTYP1: IORM TAC,TTYPTR(DDB) ;START TYPEOUT +UTYPT1: IORM TAC,TTYPTR(DDB) ;START TYPTEOUT JRST XMTIN1 ;ROUTINE TO MOVE USER OUTPUT BUFFER TO MON. OUTPUT BUFFER ;CALLED ONLY AT UUO LEVEL,BY OUTPUT UUO @@ -909,16 +912,16 @@ TTYUUO: PUSHJ PDP,TTYFNU PUSHJ PDP,UADCK1 JRST @TTUUOT(UCHN) ;DISPATCH TO UUO ROUTINES + TTUUOT: EXP INCHRW ;(0)INPUT CHAR. WAIT TILL TYPED EXP ONEOUT ;(1)OUTPUT A CHARACTER EXP INCHRS ;(2)INPUT A CHAR. & SKIP - EXP OUTSTR ;(3)OUTPUT A STRING EXP INCHWL ;(4)INPUT CHAR, WAIT.LINE MODE EXP INCHSL ;(5)INPUT CHAR, SKIP. LINE MODE EXP GETLIN ;(6)GET LINE CHARACTERISTICS WORD EXP SETLIN ;(7)SET BITS IN LH LINTAB - EXP TRESOU ;(10)BACK UP POINTER TO COMMAND + EXP TRESCU ;(10)BACK UP POINTER TO COMMAND EXP SETBFI ;(11)CLEAR INPUT BUFFER EXP SETBF2 ;(12)CLEAR OUTPUT BUFFER EXP SKPINC ;(13)SKIP IF CHAR TO INPUT @@ -975,7 +978,7 @@ EXTERNAL TTPLEN,GETWDU INCHRW: PUSHJ PDP,INCHRS ;GET ACHAR IF ONE IS THERE JRST .+2 ;NONE THERE POPJ PDP, ;CHAR, PICKED UP AND STORED - MOVE IOS,[XWD TTYIOW+ODTM,IOACT][ ;SETUP FOR IOWAIT + MOVE IOS,[XWD TTYIOW+DDTM,IOACT] ;SETUP FOR IOWAIT IORB IOS,DEVIOS(DDB) ;SPECIFICALLY FOR INPUT WAIT PUSHJ PDP,TWSYNC ;WAIT FOR CHAR. TO BE TYPED JRST INCHRW ;GO GET IT @@ -985,7 +988,6 @@ INCHRW: PUSHJ PDP,INCHRS ;GET ACHAR IF ONE IS THERE ONEOUT: PUSHJ PDP,GETWDU ;PICK UP CHAR FROM USER MOVE CHREC,TAC ;PUT IT IN PROPER AC ANDI CHREC,177 ;MASK ANY JUNK - JUMPE CHREC,CPOPJ ;DONT STORE NULLS PUSHJ PDP,OUTCHR ;PLACE IT IN TTO BUFFER JUMPN CHREC,DDTUTT ;IF IT STORED, RETURN @@ -1016,6 +1018,7 @@ SETLIN: MOVSI TAC,LGLSET ;MAKE MASK OF ALL OF THEM AND TAC,@UUO ;SET ONLY THOSE BITS USER WANTS SET IORM TAC,LINTAB(LINE) ;SET RESULTANT POPJ PDP, + ;ROUTINE TO ATTACH TTY TO A JOB ;CALL: MOVE DEVDAT,ADDRESS OF TTY DEVICE DATA BLOCK ; MOVE ITEM,JOB NUMBER @@ -1031,6 +1034,7 @@ SETLIN: MOVSI TAC,LGLSET ;MAKE MASK OF ALL OF THEM ; OR SIXBIT /CTY/, ; 5)SETS DEVOPR IF IT IS NON-ZERO. + INTERNAL TTYATT,TTYATI EXTERNAL PUNIT,PJOBN,TTYTAB @@ -1140,7 +1144,7 @@ INTERNAL TTYDET EXTERNAL PUNIT,TTYTAB TTYDET: MOVSI TAC,TTYATC - TDNN TAC,DEVMOND(DDB) ;IS THIS DDB WORTH KEEPING? + TDNN TAC,DEVMOD(DDB) ;IS THIS DDB WORTH KEEPING? JRST TTYDT1 ;NO. GO JUNK IT MOVSI IOS,TTYDTC ;YES. MARK IT DETACHED @@ -1191,9 +1195,10 @@ TBYTEP: PUSH PDP,TAC1 ;SAVE LINE ADDI TAC,TTYCHR IDIVI TAC,5 ADD TAC,TTIBUF(DDB) - HLL TAC,TLWBYT(TAC1) + HLL TAC,TLHBYT(TAC1) POP PDP,TAC1 ;RESTORE LINE POPJ PDP,0 + ;ROUTINE TO FIND TTY FOR A JOB ;CALL: MOVE ITEM,JOB NUMBER ; PUSHJ PDP, TTYFND @@ -1204,11 +1209,13 @@ INTERNAL TTYFNU,TTYFND,TTYERP EXTERNAL JOB + TTYFNU: MOVE ITEM,JOB TTYFND: PUSHJ PDP,TTYSRC TTYDAT: MOVEI DAT,TTOBUF(DDB) POPJ PDP, + ;PUT JOB IN IO WAIT IF TTY BUFFER NOT EMPTY ;CALLED BY NON ERROR MESSAGE ROUTINES AT UUO LEVEL @@ -1313,12 +1320,11 @@ TTYSRA: HRRZ DEVDAT,TTYTAB(LINE) JRST TTYF9 ;FOUND TTYF0: AOBJN LINE,TTYSRA TTYF1: MOVSI TAC,576062 ;LOOK FOR DEVICE "OPR" - PUSHJ PDP,DEVPHY ;SEARCH PHYSICAL DEVICE NAMES FOR OPR SKIPA TAC,DEVOPR ;NOT FOUND. JRST TTYF9 JUMPN TAC,TTYF3 ;WAS OPR SPECIFIED IN ONCE ONLY CODE? - MOVEI DDR,TTYLST ;NO + MOVEI DDB,TTYLST ;NO SKIPE DEVNAM(DDB) ;HAS A TTY BEEN TYPED ON? JRST TTYF9 MOVEI LINE,TCONLN ;NO USE CTY. @@ -1372,7 +1378,7 @@ TTSTR1: MOVSI TAC,IO+TPMON MOVE IOS,DEVIOS(DDB) ;GET CORRECT IOS SKIPLE TISYNC(DDB) ;HAS USER TYPED AHEAD? PUSHJ PDP,COMSET ;YES, WAKE UP COMMAND DECODER(IF IN MON. MODE) - JRST UTYRET ;GO TYPE FIRST CHAR. + JRST UTYPET ;GO TYPE FIRST CHAR. ;ROUTINE TO ADD TTY TO TALK RING ;CALL: ADR. OF DDB TO BE ADDED TO RING AT -3(PDP) ; MOVE TAC,SIXBIT /TTYN/ @@ -1392,7 +1398,6 @@ TTYTLK: PUSHJ PDP,GETDDB ;IN CASE NOT SET UP POPJ PDP, MOVE IOS,DEVIOS(DEVDAT) ;IS TTY IN MONITOR MODE AND LEFT HAND MARGIN? MOVE TAC1,-3(PDP) ;TTY GIVING TALK COMMAND - MOVE TAC1,DEVNAM(TAC1) ;ITS NAME MOVE TAC,DEVNAM(DEVDAT) ;OPR IS NEVER TOO BUSY... CAME TAC1,DEVOPR ;EITHER ONE OPR? @@ -1405,7 +1410,7 @@ TTYTK1: CONO PI,SCNOFF LDB LINE,PUNIT ;LINE NUMBER IS RING. MOVSI TAC,TLKRNG LDB CHREC,PTALK - TDDN TAC,LINTAB(LINE) + TDNN TAC,LINTAB(LINE) HRRZ CHREC,LINE IORM TAC,LINTAB(LINE) EXCH DDB,-3(PDP) ;GET DDB OF TALKER @@ -1437,7 +1442,8 @@ TTYUSR: MOVSI IOS,USRB ;SET BIT TO SWITCH TTY TO USER MODE INTERNAL CTYINT EXTERNAL SCNSAV,SCNCHN,TCONLN -CTYINI: CONSO TTY,50 ;TTI OR TTO FLAG? + +CTYINT: CONSO TTY,50 ;TTI OR TTO FLAG? JRST CTYINT ;NO JSR SCNSAV ;YES, SAVE AC'S MOVEI LINE,TCONLN ;LOAD LINE WITH PROPER @@ -1461,7 +1467,7 @@ EXTERNAL COMCNT RECINT: INUS2: ;TAG FOR INTERRUPT SERVICE -INJEXT: ;ANOTHER TAG, NOT USED, BUT WANTED BY LOSING DLSINT +INJEST: ;ANOTHER TAG, NOT USED, BUT WANTED BY LOSING DLSINT TRNN CHREC,177 ;IGNORE NULLS POPJ PDP,0 ;DISMISS INTERRUPT @@ -1505,7 +1511,7 @@ RECIN4: TLNE IOS,SYNC MOVE TAC,TIPCTR(DDB) ;UPDATE COUNTER FOR ^U DPB TAC,PLSTLC TLZN IOS,TTYIOW ;IN TELETYPE INPUT WAIT? - JRST TTYTST ;NO, GO ECHO + JRST TYPTST ;NO, GO ECHO PUSHJ PDP,STTIOD ;YES, SET IO DONE(OUT OF TTY IOW) MOVSI IOS,IOW+TTYIOW ANDCAB IOS,DEVIOS(DDB) ;CLEAR WAIT BITS @@ -1589,7 +1595,7 @@ COMSET: TLNN IOS,TPMON ;MONITOR MODE? POPJ PDP, INTERNAL XMTINT,PTYGET -XMTINT: HLL LINE,LINETAB(LINE) ;GET LINE CHAR. +XMTINT: HLL LINE,LINTAB(LINE) ;GET LIN CHAR. HRRZ DDB,TTYTAB(LINE) ;GET DDB ADDRESS JUMPE DDB,CPOPJ ;IF NONE, X BEING TYPED MOVE IOS,DEVIOS(DDB) ;GET IO STATUS @@ -1600,13 +1606,13 @@ PTYGET: ;CALL HERE TO SKIP ABOVE OVERHEAD SKIPL TTYPTR(DDB) ;WAS TYPE-OUT IN PROGRESS? POPJ PDP, ;IGNORE XMT DURING ECHO CK XMTIN1: MOVEI DAT,TTOBUF(DDB) ;SPECIFY TTO BUFFER -XMTI1A CONO PI,PIOFF ;KEEP TOIP AND PUTR/TAKR EQUAL +XMTI1A: CONO PI,PIOFF ;KEEP TOIP AND PUTR/TAKR EQUAL HLRZ TAC,BUF(DAT) ;IS OUTPUT BUFFER EMPTY? CAMLE TAC,FCTR(DAT) ;I.E. FREE COUNT AT MAX? JRST XMTIN2 ;NO, TYPING STILL IN PROGRESS TRNE IOS,MERTPO ;MONITOR ERROR MESSAGE? - CAIE DAT,TIOBUF(DDB) ;OUTPUT BUFFER? + CAIE DAT,TTOBUF(DDB) ;OUTPUT BUFFER? JRST XMTIN4 ;NO, MUST REALLY BE DONE MOVEI DAT,TTIBUF(DDB) ;YES. NOW EMPTY OUT TTI BUFFER JRST XMTI1A @@ -1629,7 +1635,6 @@ XMTIN4: MOVEI IOS,MERTPO ;OTHERWISE, DDB ONLY USED TO TYPE A JRST TTYKIL ;MESSAGE; KILL TTY DDB - XMTIN2: CONO PI,PION PUSHJ PDP,GETCHR ;NO, GET NEXT CHAR. IN BUFFER JUMPE CHREC,XMTIN1 ;IGNORE NULLS @@ -1675,7 +1680,7 @@ TYPE: JUMPE CHREC,CPOPJ ;IS TYPING STILL TO BE IN PROGRESS? TTEDIT: PUSHJ PDP,ADJHP ;ADJUST HP AND CHECK SPECIAL JRST TIPACK ;NOT SPECIAL MOVSI IOS,0 - TLNE TAC,BBREAK+FCSBRK ;BREAK CHAR? + TLNE TAC,BREAKB+FCSBRK ;BREAK CHAR? TLO IOS,SYNC ;BREAK CHAR, SET SYNC IORB IOS,DEVIOS(DDB) ;SET SYNC JUMPL TAC,0(TAC) ;DISPATCH IF SPACTN SET @@ -1687,8 +1692,8 @@ TTIPUT: TLZE LINE,ROBTPD ;HAVE WE BEEN DELETING? PUSHJ PDP,BSECHO ;YES. OUTPUT A BACKSLASH TTIPT1: PUSHJ PDP,PUTCHI ;PUT CHAR IN INPUT BUFFER JRST INBFUL ;IT DIDNT FIT - LTNN TAC,ECHSUP ;SHOULD THIS CHAR BE ECHOED? -DUPLEX: TLNE LINE,FULTWX,HLFDPX ;IS THIS LINE ECHOING ITSELF? + TLNN TAC,ECHSUP ;SHOULD THIS CHAR BE ECHOED? +DUPLEX: TLNE LINE,FULTWX+HLFDPX ;IS THIS LINE ECHOING ITSELF? POPJ PDP,0 ;JUST RETURN WITHOUT ECHO DUPLX1: PUSH PDP,TAC ;SAVE TAC OVER PUTCHO TLNN IOS,TPMON ;SHOULD ECHO IF IN MONITOR MODE @@ -1696,7 +1701,7 @@ DUPLX1: PUSH PDP,TAC ;SAVE TAC OVER PUTCHO PUSHJ PDP,PUTCHO ;SO ECHO IT. JRST TPOPJ ;RESTORE TAC AND RETURN -INTERNAL INBFUB ;FOR THE PTY +INTERNAL INBFUL ;FOR THE PTY INBFUL: MOVSI IOS,SYNC ;DONT COUNT SYNC COUNT ANDCAB IOS,DEVIOS(DDB) ; SINCE CHAR NOT STORED @@ -1762,7 +1767,6 @@ RUBOU2: PUSHJ PDP,RUBOU4 ;NOT A BREAK AFTER ALL AOJDPX: AOJA HPOS,DUPLX1 ;OUTPUT AND COUNT HPOS RUBOU1: TLZE LINE,ROBTPD ;END OF INPUT STREAM REACHED - PUSHJ PDP,BSECHO ;OUTPUT A BACKSLASH JRST CRLFEC ;AND A CR LF @@ -1777,6 +1781,7 @@ SIMFF1: PUSHJ PDP,DUPLX1 ;OUTPUT ECHO OF LF OR IDL TRNE TAC,17 ;DONE YET? SOJA TAC,.-2 ;NO. OUTPUT MORE POPJ PDP,0 ;DONE + SIMFF: TLO TAC,ECHSUP ;DON'T OUTPUT FF OR VT TO A 33 PUSHJ PDP,TTIPUT ;PUT IT IN BUFFER MOVEI CHREC,12 ;SIMULATE WITH LF'S @@ -1785,7 +1790,7 @@ SIMFF1: PUSHJ PDP,DUPLX1 ;OUTPUT ECHO OF LF OR IDL CONTI: TLNN LINE,T35 TLO TAC,ECHSUP ;DONT OUTPUT TAB TO 33 PUSHJ PDP,TTIPUT ;PUT IN BUFFER AND MAYBE ECHO - TLEN LINE,XON+DISLIN ;IF PAPER TAPE,DISMISS + TLNE LINE,XON+DISLIN ;IF PAPER TAPE,DISMISS POPJ PDP,0 ; SO AS NOT TO OVERFILL OUTBUF ;ALSO, DISPLAY DOESNT WANT FILLER HRRI TAC,1 ;TWO IDLES @@ -1817,7 +1822,6 @@ CNTLEC: HRRI TAC,100(CHREC) ;SAVE UN-CNTL CHARACTER CRLF: MOVEI HPOS,0 ;HERE ON INPUT OF A CARRIAGE RETURN TLNE LINE,XON ;IF PAPER TAPE, NO FREE LF - JRST TTIPUT ;JUST STORE THE CR PUSHJ PDP,TTIPUT ;ORDINARILY, STORE AND GO ON HERE MOVEI CHREC,12 ;BY ADDING A LF @@ -1873,7 +1877,6 @@ DCPUTR: LDB TAC,PLSTLC ;CHECK FOR NONE TO DELETE ADD TAC,PUTR(DAT) ;* TLNE TAC,400000 ADD TAC,[XWD 347777,-1] - MOVEM TAC,PUTR(DAT) AOS FCTR(DAT) AOS TAC,PCTR(DAT) @@ -2015,7 +2018,6 @@ DDBSRC: HRRZ TAC,LINE ;NUMBER OF LINE ONLY HLRZ DEVDAT,DEVSER(DEVDAT) ;CHAIN THRU DDBS TDNE TAC,DEVMOD(DEVDAT) ;USE,ATTACH OR ASSIGN BITS ON? AOBJN IOS,.-2 ;YES. DONE? - JUMPGE IOS,CPOPJ ;YES. DEVICE DATA BLOCK FOUND? MOVSI TAC,TOIP ;CLEAR TOIP IN DDB ANDCAM TAC,TTYPTR(DDB) ;IN CASE OF PREVIOUS DETACH @@ -2070,7 +2072,7 @@ SCNIN0: ADDI LINE,20 TLNE LINE,CTYLIN ;IS THIS CONSOLE TTY? MOVEM TAC,DEVNAM(DEVDAT);YES, SET NAME TO CTY. TLNE LINE,PTYLIN ;IS THIS A PTY? - PUSHJ PDP,PTMNND ;YES. SET IT INTO MONITOR MODE + PUSHJ PDP,PTMNMD ;YES. SET IT INTO MONITOR MODE JRST CPOPJ1 ;SUCCESSFUL RETURN. SCNEND: END