Added recovered BINCOM.MAC source.
[retro-software/dec/tops10/v4.5.git] / src / scnsrf.mac
index 37d1861..76fda9d 100644 (file)
@@ -86,7 +86,6 @@ IFNDEF FTHDPX,<FTHDPX=-1>     ;NON-ZERO TO INCLUDE HALF-DUPLEX CODE
 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
@@ -138,7 +137,6 @@ TTYRMT=4000         ;REMOTE TTY LINE
 \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
@@ -165,6 +163,7 @@ INTERNAL T35,T37,FULTWX,LGLSET,KILMSK,XON
        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
@@ -173,8 +172,10 @@ INTERNAL T35,T37,FULTWX,LGLSET,KILMSK,XON
        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
@@ -213,6 +214,7 @@ TOIP=400000 ;SIGN OF TTYPTR(DDB) - TYPE-OUT IN PROGRESS
 ;        DATA BLOCKS.\r
 ;      4)SETS TTYUSE#1 IN ALL TTY DDBS IN THE TRANSLATOR TABLE.\r
 \r
+\r
 EXTERNAL SCNCHN,MLTTYL,MTTYLN,TTYTAB,SCNINI\r
 \r
 TTYINI:        MOVEI TAC,SCNCHN\r
@@ -221,7 +223,6 @@ TTYINI:     MOVEI TAC,SCNCHN
        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
@@ -254,6 +255,7 @@ SCN3:       HRRM    TAC,LINTAB(TAC1)        ;SET LOG. LINE NUMBERS
        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
@@ -276,6 +278,7 @@ SETBF0:     MOVE    TAC,BUF(DAT)
        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
@@ -336,6 +339,7 @@ GETCH1:     TDZA    CHREC,CHREC     ;RETURN 0 INDICATING END OF BUFFER
 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
@@ -354,6 +358,7 @@ PUTCHO:     SOSGE   TOFCTR(DDB)             ;RETURN IMMEDIATELY IF NO ROOM
 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
@@ -375,7 +380,7 @@ SPCHK1:     MOVE    TAC,SPCTAB(CHREC)
 ;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
@@ -430,6 +435,7 @@ INTERNAL DDTIN
 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
@@ -438,7 +444,6 @@ DDTIN:      PUSHJ PDP,TTYFNU        ;SET UP DEVDAT,LINE
        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
@@ -502,7 +507,7 @@ DDTOUT:     PUSHJ PDP,TTYFNU
 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
@@ -593,7 +598,7 @@ OUTC1A:     ;HERE ON OUTPUT OF SLOW CHARS TO SMART TTY
                        ;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
@@ -731,7 +736,6 @@ SCNDDB:     SIXBIT  /TTY0/          ;DEVNAME
 \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
@@ -785,7 +789,6 @@ MONUS1:     PUSHJ   PDP,GETCHR              ;GET A CHAR, FROM IT
        IDPB    CHREC,AC1               ;PLACE CHAR. IN USER BUFFER\r
        PUSHJ   PDP,SPCHEK              ;SPECIAL CHARACTER?\r
        JRST    MONUS2                  ;NO\r
-\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
@@ -839,13 +842,13 @@ TTYOUT:   MOVSI   IOS,IOBEG
        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
@@ -909,10 +912,10 @@ TTYUUO:   PUSHJ   PDP,TTYFNU
        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
@@ -985,7 +988,6 @@ INCHRW:     PUSHJ   PDP,INCHRS              ;GET ACHAR IF ONE IS THERE
 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
@@ -1016,6 +1018,7 @@ SETLIN:   MOVSI   TAC,LGLSET              ;MAKE MASK OF ALL OF THEM
        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
@@ -1031,6 +1034,7 @@ SETLIN:   MOVSI   TAC,LGLSET              ;MAKE MASK OF ALL OF THEM
 ;                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
@@ -1194,6 +1198,7 @@ TBYTEP:   PUSH    PDP,TAC1                ;SAVE LINE
        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
@@ -1204,11 +1209,13 @@ INTERNAL TTYFNU,TTYFND,TTYERP
 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
@@ -1313,7 +1320,6 @@ TTYSRA:   HRRZ DEVDAT,TTYTAB(LINE)
        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
@@ -1392,7 +1398,6 @@ TTYTLK:   PUSHJ   PDP,GETDDB      ;IN CASE NOT SET UP
        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
@@ -1437,6 +1442,7 @@ TTYUSR:   MOVSI IOS,USRB          ;SET BIT TO SWITCH TTY TO USER MODE
 INTERNAL CTYINT\r
 EXTERNAL SCNSAV,SCNCHN,TCONLN\r
 \r
+\r
 CTYINT:        CONSO TTY,50            ;TTI OR TTO FLAG?\r
        JRST CTYINT                     ;NO\r
        JSR     SCNSAV                  ;YES, SAVE AC'S\r
@@ -1629,7 +1635,6 @@ XMTIN4:   MOVEI   IOS,MERTPO
                                ;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
@@ -1762,7 +1767,6 @@ RUBOU2:   PUSHJ   PDP,RUBOU4      ;NOT A BREAK AFTER ALL
 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
@@ -1777,6 +1781,7 @@ SIMFF1:   PUSHJ   PDP,DUPLX1      ;OUTPUT ECHO OF LF OR IDL
        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
@@ -1817,7 +1822,6 @@ CNTLEC:   HRRI    TAC,100(CHREC)  ;SAVE UN-CNTL CHARACTER
 \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
@@ -1873,7 +1877,6 @@ DCPUTR:   LDB     TAC,PLSTLC              ;CHECK FOR NONE TO DELETE
        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
@@ -2015,7 +2018,6 @@ DDBSRC:   HRRZ    TAC,LINE                ;NUMBER OF LINE ONLY
        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