/TECO - VERSION J /SHEET 60 /21 APR 69 RBH QREFER, 0 /SET UP POINTERS FOR Q-REG REFERENCE SCAN /GET NUMBER OF Q-REG TAD (-72) /CHECK FOR GOODNESS SMA ERR /BADNESS TAD (72-57) /Q-REGS ARE 0 THRU 9 SPA SNA ERR /REST OF BADNESS DCA QNMBR /THIS IS (Q-REG#)+1 STA /SUBTRACT ONE TAD QNMBR CLL RAL /TWO WORDS OF POINTERS PER Q-REG TAD (QPNTR-24) /ADD IN BASE OF POINTERS JMP I QREFER /CARRY BACK POINTER TO POINTERS CHRQ, QREF /COMMAND Q IAC /POINT TO SECOND WORD DCA CQOQ /SAVE POINTER NCHK /SEE IF LOADING OR USING JMP CQOA /USING TAD N /LOADING VALUE OF N DCA I CQOQ /PUT IT AWAY POPJ /DONE CHRU, QREF /COMMAND U DCA CQOQ /SAVE POINTER NCHK /SEE WHAT'S HAPPENING JMP CXOA+2 /DELETING CONTENTS OF Q-REG CCHK /ONE ARG OR TWO? SKP /ONE: +N OR -N CHARS JMP CXOA /TWO: CHARS M,N TAD N TAD P BZCHK /SEE IF REASONABLE DCA N /ONE LIMIT TAD P /. IS DCA M /OTHER LIMIT JMP CXOA CPCS, QREF /COMMAND % IAC /POINT TO VALUE WORD DCA CQOQ /SAVE POINTER ISZ I CQOQ /INCREMENT VALUE CQOA, TAD I CQOQ /OK EVEN ON SKIP JMP NCOM /MAKE A NUMBER /TECO - VERSION I /SHEET 61 /22 NOV 68 RBH CHRX, QREF /COMMAND X DCA CQOQ /SAVE POINTER NCHK /SEE WHAT THEY WANT JMP CXOB /WHOLE BAG CCHK JMP CXOA-1 /+N OR -N LINES PUSHJ LINES /LINES M,N SKP JMS NLINES /FIGURE LINES CXOA, PUSHJ MFROMN /COMPUTE N-M DCA CXON /LENGTH OF NEW STRING TAD I CQOQ CIA CLL TAD CXON /HOW MUCH TO ADJUST Q-REG SIZE PUSHJ /MAKE IT MORE OR LESS QADJ TAD CXON /LENGTH OF NEW STRING DCA I CQOQ /TO Q-REG POINTER TAD CXON /LENGTH OF STRING SNA CLA /IS THERE ANYTHING TO DO? POPJ /NO, GO BACK TAD P /SAVE CURRENT POINTER PUSH /FOR RESTORATION AT END QSUM /ADD UP LOWER Q-REGS STA DCA CFLG /SET COMMA FLAG TAD (QPUT) /CARRY POINTER PUSHJ /FOR TEXT OUTPUT CHRV+2 /ROUTINE JMP QUPNF /RESTORE . AND RESET POINTERS CXOB, PUSHJ /X ALONE MEANS ENTIRE TEXT BUFFER CHRH /DO HU TO GET EVERYTHING JMP CHRU+2 /RESET COMMA & NUMBER FLAGS CXON, 0 /STRING LENGTH PAGE /TECO - VERSION I /SHEET 62 / 2 DEC 68 RBH PAGE 23 /COMMAND O CHRO, DCA NFLG /AVOID TROUBLE QCHK /TEST FOR QUOTES TAD QUOTE /MOVE TO LOCAL POINT DCA COOZ TAD QUOTE+1 DCA COOZ+1 STA /SET ITERATION FLAG DCA COOL TAD QP /POINTER TO GOTO STRING IAC DCA COOQ /SAVE FOR RESTARTING TAD ITRST /START AT BEGINNING OF SNA /CURRENT ITERATION DCA COOL /NOT ITERATING, CLEAR FLAG DCA SCANP /RESET SCAN POINTER COOA, SKP CLA /AVOID QSKP FIRST TIME QSKP /SKIP A STRING COMMAND TAD COOQ /RESET TO BEGINNING OF GOTO DCA QR SKPSET /SKIP COMMANDS UNTIL 41 /! ENCOUNTERED COOC /WHERE TO PROCESS IT ISZ COOL /HERE ON $ OR ALTM ERR /TAG NOT MATCHED JMP COOA-1 /DO PART FROM BEGINNING COOL, 0 /FLAG FOR ITERATION COOQ, 0 /BEGINNING OF GOTO STRING COOT, 0 /TEMPORARY CSMI, POP /SAVE RETURN POINTER DCA CSPS PUSHJ /FOUND < CHLT /PUSH DOWN INTO ITERATION JMP .+5 /AND CONTINUE CSMO, POP /SAVE RETURN POINTER DCA CSPS PUSHJ /FOUND > CGSG /POP OUT OF ITERATION TAD CSPS /RESTORE RETURN PUSH /POINTER JMP CSML /CONTINUE /TECO - VERSION I /SHEET 63 / 2 DEC 68 RBH COOB, .+2 /END OF TAG STRING FOUND .+1 GET QR /CHECK FOR END OF GOTO STRING SORT COOZ QUOTAB-COOZ /GO TO IREST IF IT IS JMP COOA /NOT END SO NO MATCH COOC, SCAN /FOUND TAG DEFINITION SORT QUOTE /WATCH OUT FOR END COOB-QUOTE /COOB IF END OF TAG CIA DCA COOT /NOT END, SAVE GET QR /COMPARE WITH GOTO STRING ISZ QR SORT COOZ /WATCH FOR END HERE, TOO COOY-COOZ /START AGAIN IF END FOUND TAD COOT /NOT END, COMPARE SZA CLA JMP COOA+1 /DIFFERENT, START OVER JMP COOC /MATCH SO FAR SETSKP, 0 /SET UP TO SKIP COMMANDS TAD I SETSKP DCA SKPLST /CHAR TO TRAP ON ISZ SETSKP TAD I SETSKP /LOCATION TO SERVICE DCA SKPTAB /TRAP CHAR CSML, SCAN TAD (-100) /LOOK FOR LOWER CASE SMA AND CS137 /MASK TO UPPER CASE TAD CS100 /RESTORE 100 SORT SKPLST SKPTAB-SKPLST CSMK, CLA /NON-STRING COMMAND JMP CSML /KEEP SKIPPING CSMD, SCAN /CLEAR OUT MODIFIER JMP CSMK /TECO - VERSION I /SHEET 64 / 2 DEC 68 RBH CSMC, PUSHJ /FOUND ^ CHUA1 /MAKE CTRL CHAR DCA SCHAR /RETURN TO SORT ROUTINE JMP SORTA1 /AS IF NOTHING HAPPENED CSME, SCAN /FOUND E COMMAND AND CS137 /MASK OUT LC BIT SORT ESKLST /LOOK FOR ER & EW ESKTAB-ESKLST /USE CSMQ TO SKIP JMP CSMK /NO STRING CSMZ, ISZ SETSKP /FOUND $ OR ALTM JMP I SETSKP /HOP BACK TO SEE IF ERROR CSPS, 0 /SAVE RETURN POINTER COOY, COOA+1 COOA+1 COOZ, 0 0 SKPLST, 0 /TRAP CHAR 41 /! 76 /> 74 /< 42 /" 136 /^ CS100, 100 /@ 1 /^A 2 /^B 25 /^U 36 /^^ 105 /E 111 /I 116 /N 117 /O 122 /R 123 /S CS137, 137 /_ 33 /ALTM 44 /$ CSMA, PUSHJ /LIST TERMINATOR CATS /FOUND @ JMP CSML /CONTINUE SKIPPING PAGE /TECO - VERSION J /SHEET 65 /21 APR 69 RBH PAGE 24 /I/O UTILITIES ENDGRP, TAD [-3] /WRITE GROUP MARK ENDFIL, TAD (ENDPNT+4) /WRITE FILE MARK DCA ENDPNT /PARAMETER POINTER TAD I ENDPNT OUTPUT /GS OR FS ISZ ENDPNT TAD WUNIT SMA CLA /DISC OR DECTAPE? JMP WDUMP /YES, DUMP BUFFER TAD (-776) /PUT OUT 510 LINES DCA DECPUT /OF BLANK TAPE TAD (200) /CLOBBER 200'S BIT OUTPUT ISZ DECPUT /ALL DONE? JMP .-3 /NO ISZ ENDPNT /YES, MOVE POINTER JMP I ENDPNT /JUMP THRU LIST ENDPNT, 0 35 /GROUP SEPARATOR 0 /FLAG FOR FILE SYSTEM POPJ 34 /FILE SEPARATOR +1 /FLAG FOR FILE SYSTEM DCA WEND /FLAG END-OF-FILE TAD ERR-4400 /GET ERRXX POINTER DCA OUTR /FURTHER OUTPUT IS ERROR POPJ FLAP, 0 /CLEAR TAPE FROM HS READER TAD RUNIT SMA /DISC OR TAPE? JMP RFILL /YES, REFILL BUFFER IAC SZA /HS READER? JMP I FLAP /NO, MUST BE TTY STA /YES, SET FLAP FLAG DCA DECGET INPUT /CLEAN CHARS OUT OF BUFFER JMP .-3 /UNTIL NO MORE TAPE IN RDR /TECO - VERSION J /SHEET 66 /24 MAR 69 RBH DECPUT, 0 /DECTAPE & DISC OUTPUT ISZ WCHAR /SKIP IF FIRST CHAR JMP .+4 /NOT, SO PROCEED DCA OCHAR /SAVE CHAR WHILE WAITING JMS OSWAIT /MAKE SURE PREV WRITTEN TAD OCHAR /NOW GO ON PUT WCHAR /STD 5/7 ASCII TAD (-DMAX+1) /SEE IF BUFFER FULL TAD WCHAR /# OF CHARS THERE SNA CLA JMS GW /BUFFER FULL, WRITE IT JMP I DECPUT DECGET, 0 /DECTAPE & DISC INPUT ISZ RCHAR /FIRST CHAR? SKP CLA /NO, PROCEED JMS OSWAIT /MAKE SURE READY GET RCHAR DCA ICHAR /INPUT CHAR REG TAD (-DMAX+1) /SEE IF LAST CHAR TAD RCHAR /# OF CHARS USED SNA CLA JMS GR /BUFFER EMPTY, REFILL TAD ICHAR /PICK UP INPUT CHAR JMP I DECGET T1 /BREAK: QUIT WHOLE LINE CTLC /^C: GO TO MONITOR CAFF+4 /FF: TERMINATE APFS /FS: END THE FILE RDHANG, 0 /^P: RETURN & START READER ISZ DECGET /FLAPPING TAPE? SKP CLA /NO JMP I FLAP /YES, FINISHED TAD (136) /^ TO ASK FOR RESPONSE RDHG10, TYPE /HIT HIM LISTEN /WAIT FOR RESPONSE SORT RDHLST RDHANG-3-RDHLST CLA /WANT BREAK,^C,^L,^[, OR ^P TAD (77) /? JMP RDHG10 /LET HIM KNOW IT'S ALIVE /TECO - VERSION J /SHEET 67 /21 APR 69 RBH WDUMP, TAD I ENDPNT /DUMP DISC/TAPE BUFFER DCA WLAST JMS GW /WRITE OUT BUFFER JMP ENDPNT-2 /GO OUT THRU TABLE APPTAB, CALP /BLANK--IGNORE APRO /RUBOUT--MAKE IDLE APGS /GROUP SEP--FLAP AND PROCEED APFS /FILE SEP--END OF INPUT APSP /SPACE--MIGHT CONVERT TO TAB CALP /IDLE--IGNORE CAFF /FORM FEED--END OF PAGE APLF /LINE FEED--SEE IF TOO FULL APCR /CARR RET--INSERT CR+LF APHT /TAB--NO CHANGE APHT /ALTM--NO CHANGE RFILL, CLA /REFILL INPUT BUFFER JMS GR /FROM DISC OR DECTAPE JMP I FLAP PAGE /TECO - VERSION I /SHEET 68 / 2 DEC 68 RBH PAGE 25 /FILE HANDLING UTILITIES IOSTRT, 0 /INITIAL I/O SELECTION TAD ERR-4400 /MUST SET UP I/O DCA OUTR TAD ERR-4400 /WITHIN PROGRAM DCA INR /POINT TO READER ROUTINE RRB /CLEAR DEVICE FLAGS PCF TCF KCC DCA TBUSY /CLEAR TTY OUT FLAG TAD Z SCATP /SAVE SCAT POINTER DCA ISCAT /FOR STARTING I/O ION JMP I IOSTRT /INPUT ROUTINE POINTERS: TTYIN /TELETYPE RGET /HS READER INPTAB, DECGET /DISC & DECTAPE /OUTPUT ROUTINE POINTERS: TYO /TELETYPE PCO /HS PUNCH OUPTAB, DECPUT /DISC & DECTAPE WOPEN, TAD (10) /OPEN OUTPUT FILE ROPEN, TAD (7400) /OPEN INPUT FILE DCA POINTR /SET SKP OR NOP QCHK /LOOK FOR QUOTES SCAN TAD (-100) /TEST FOR LETTERS SPA JMP DTATST /NOT, SHOULD BE DECTAPE AND (37) /MASK OFF CASE BIT TAD (100) /RESTORE TO LETTER SORT DEVLST /TEST TABLE OF DEVICES DEVTAB-DEVLST ERR /NOT IN TABLE /TECO - VERSION I /SHEET 69 / 4 DEC 68 RBH DTATST, TAD (100-70) SMA SZA /LOOK FOR DIGIT 1-8 JMP DTATST-1 /CALL ERROR TAD (70-60) SPA SNA JMP DTATST-1 /MORE ERROR DSC, DCA UNIT /POINT OF CONVERGENCE QSKP /SKIP REST OF STRING POINTR, JMP . /SWITCH FOR READ OR WRITE JMP READIN TAD UNIT DCA WUNIT /SET UNIT FLAG TAD UNIT SMA /DISC OR DECTAPE? CLA /YES TAD (OUPTAB) DCA POINTR /COMPUTE POINTER TAD I POINTR DCA OUTR /OUTPUT ROUTINE POINTER STA DCA WEND /NOT END OF FILE TAD (OUPSET-OUPTAB) OPNA1, TAD POINTR DCA POINTR /DO UNIQUE FIXES TAD I POINTR /AN EXTRA LEVEL OF DCA POINTR /INDIRECT ADDRESSING JMS I POINTR POPJ /EXIT READIN, TAD UNIT DCA RUNIT /SET UNIT FLAG TAD UNIT SMA /DISC OR DECTAPE CLA /YES TAD (INPTAB) DCA POINTR /COMPUTE POINTER TAD I POINTR DCA INR /INPUT ROUTINE POINTER STA DCA REND /NOT END OF FILE TAD (INPSET-INPTAB) JMP OPNA1 /CONVERGE /TECO - VERSION J /SHEET 70 /21 APR 69 RBH RSETUP, 0 /SETUP FOR DISC & TAPE TAD UNIT DCA IMPORT+6 TAD IMPORT+4 /INITIAL BLOCK DCA IMPORT+7 /IS NEXT BLOCK JMS GR /FILL INPUT BUFFER JMP I RSETUP IMPORT, 0 /INPUT FILE, SCRATCH TAPE 0 0 0 1 /INITIAL BLOCK 0 0 0 0 UNIT, 0 /I/O SETUP POINTERS: DUMMY /FOR TELETYPE RCLEAR /HS READER INPSET, RSETUP /DISC & DECTAPE DUMMY /TELETYPE WCLEAR /HS PUNCH OUPSET, WSETUP /DISC & DECTAPE PAGE /TECO - VERSION I /SHEET 71 / 3 NOV 68 RBH PAGE 26 /COMMANDS " AND ' CNDLST, 103 /C 143 /C 76 />, OLD G 53 /+, NO EQV: 0 OR + 43 /#, OLD N 55 /-, NO EQV: 0 OR - 74 /<, OLD L 75 /=, OLD E CDBQ, NCHK /COMMAND " ERR /NO NUMBER TO TEST SCAN SORT CNDLST CNDTAB-CNDLST ERR /NO SUCH TEST CNDI, SCAN /HIT ANOTHER " STA /SO SKIP MATCHING ' TAD CNDN DCA CNDN RESORT /GO BACK TO CSML CNDO, ISZ CNDN /FOUND A ' RESORT /NEED ANOTHER: BACK TO CSML TAD (CSMD) /FIX UP SKIP TABLE DCA SKPTAB+4 /USED ELSEWHERE CSGQ, POPJ /COMMAND ' NO ACTION TO TAKE CNDN, 0 /COUNTER FOR " NESTING TCRLF, TAD CACR /CR IN COMM LINE DCA CHAR CTLTYP /TYPE IT OUT JMS SPUT /PUT INTO COMM LINE TAD CALF /THEN PUT IN A LF DCA CHAR JMS SPUT JMP T2 /AND GET SOME MORE /TECO - VERSION I /SHEET 72 / 3 NOV 68 RBH CNDTAB, CNDC /LEGAL CONSTITUENT OF CNDC /SYMBOL FOR ASSEMBLER .+6 /POSITIVE, NON-ZERO .+6 /POSITIVE OR ZERO .+6 /NON-ZERO .+6 /NEGATIVE OR ZERO .+6 /NEGATIVE .+6 /ZERO TAD (40) /SMA SZA-SMA TAD (40) /SMA-SZA TAD CNM110 /SZA-SPA SNA TAD (40) /SPA SNA-SPA TAD (40) /SPA-SNA TAD (SNA CLA) DCA .+2 /COMPUTED INSTRUCTION TAD N /PERFORM TEST JMP . /INVERSE OF TEST SENSE POPJ /CONDITION SATISFIED CNDF, STA /NOT SATISFIED DCA CNDN /BEGINNING SKIPPING COMMANDS TAD (CNDI) /TRAP OUT NESTED " DCA SKPTAB+4 SKPSET /CALL SKIPPING ROUTINE 47 /FIND A ' CNDO /PROCESS IT THERE ERR /NO MATCHING ' CNDC, TAD N /TEST FOR SYMBOL JMS SCHSRT /FIND LETTERS & NUMBERS SZA CLA /AC=0 IF NOT CNDP, POPJ /N IS A SYMBOL TAD N SORT /LOOK FOR $,%, AND . SYMLST SYMTAB-SYMLST JMP CNDF /N IS NOT A SYMBOL SYMLST, 44 /$ 45 /% 56 /. CNM110, -110 /SZA-SPA SNA, END OF LIST /TECO - VERSION I /SHEET 73 /30 OCT 68 RBH COMLST, 7 /^G, COMMAND LINE EDIT LIST 15 /CR, INSERT CR & LF 177 /RUBOUT 14 /^L, SET LOWER CASE 25 /^U, SET UPPER CASE RECLST, 3 /^C, ERROR RECOVERY AID LIST 33 /^[, ALT MODE 175 /ANOTHER ALT MODE 176 /YET ANOTHER ALT MODE 77 /? CBSN0, TAD (55-72) /SEE IF DIGIT SMA JMP CBSN2 /NO, STOP HERE TAD (72-60) SPA JMP CBSN2 /NOT DIGIT EITHER PUSHJ NMBR+2 /CALL DIGIT PROCESSOR ISZ P /POINT TO NEXT CHAR TAD (NOP-SZA) /DON'T TAKE A - CBSN, TAD (SZA) /TAKE INITIAL - DCA CBSN1 GET P /TEST 1 CHAR TAD (-55) /IS IT -? CBSN1, JMP . /SZA OR NOP JMP CBSN0 /SEE IF DIGIT PUSHJ CMIN /CALL - PROCESSOR JMP CBSN-2 /TEST NEXT CHAR CBSN2, CLA POPJ /FINISHED JMP I QOVER /TRICKY CODING HERE .-1 /TARGET OF A SORT LIST QOVER, 0 /ENTRY POINT AND TARGET OF SORT SCAN SORT QUOTE /SKIPPING OVER A STRING COMMAND QOVER-1-QUOTE CLA /NOT END JMP QOVER+1 /SKIP ANOTHER CHAR PAGE /TECO - VERSION J /SHEET 74 /16 JAN 69 RBH PAGE 27 /HIGH-SPEED PAPER TAPE ROUTINES PPUT, 0 /PUNCH 1 CHARACTER DCA OCHAR /SAVE IT TAD WCHAR TAD PFULL SMA CLA JMP .-3 /BUFFER FULL: MP WAIT LOOP IOF /DO DELICATE THINGS TAD OCHAR CDF 10 DCA I 14 CDF 00 TAD 14 TAD PMAX SPA CLA JMP .+3 TAD PMIN DCA 14 ISZ WCHAR JMP PRETN /PUNCH ALREADY GOING TAD PSCAT /START UP PUNCH DCA SCATP /SCAT COMMAND LINK JMP PNEXT /GO FAKE INTERRUPT TAD ISCAT /COME HERE ON FAKE SCAT DCA SCATP /RESTORE REAL THING PRETN, ION /FINISHED WITH DELICATE WORK JMP I PPUT /RETURN TO GET ANOTHER CHAR PSCAT, PRETN-2 /ADDRESS FOR FAKE SCAT PFULL, -OUT+1 PMAX, -TXT+1 PMIN, OUT-1 /TECO - VERSION I /SHEET 75 / 8 OCT 68 RBH PANSR, PCF /PUNCH INT SERVICE ROUTINE STA CLL TAD WCHAR DCA WCHAR SNL SCAT /BUFFER EMPTY PNEXT, CDF 10 TAD I 15 CDF 00 TAD (200) /ADD EIGHTH BIT PLS CLA TAD 15 TAD PMAX SPA CLA SCAT /POINTER OK TAD PMIN /RESET TO BEGINNING DCA 15 SCAT RANSR, RRB /READER INT SERVICE ROUTINE CLA ISZ RCHAR SKP SCAT /BUFFER FULL RNEXT, RRB RFC /READ 1 CHAR, GET ANOTHER AND MASK CDF 10 DCA I 12 CDF 00 TAD 12 TAD PFULL SPA CLA SCAT /POINTER OK STA /RESET TO 0 DCA 12 SCAT /TECO - VERSION I /SHEET 76 /15 OCT 68 RBH RGET, 0 DCA RTIME /RESET TIMER TAD RCHAR /0 FULL, -577 EMPTY TAD PMIN /+577 SPA SNA CLA /PROCEED IF ANYTHING IN BUFFER JMP RWAIT /NOTHING IN BUFFER IOF CDF 10 TAD I 13 CDF 00 DCA ICHAR TAD 13 TAD PFULL SPA CLA JMP .+3 STA DCA 13 STA CLL TAD RCHAR DCA RCHAR SZL /WAS BUFFER FULL? JMP RRETN /NO, SO READER ALREADY RUNNING TAD RSCAT /FAKE AN INTERRUPT DCA SCATP /TO START READER JMP RNEXT TAD ISCAT /COME HERE ON FAKE SCAT DCA SCATP /RESTORE REAL THING RRETN, TAD ICHAR /PICK UP CHARACTER ION /UNPLUG OUR EARS JMP I RGET RSCAT, RRETN-2 RWAIT, TAD RTIME /19.5 MICROSEC PER ROUND CLL IAC /OR 80 MILLISEC TO HANG SNL /MINIMUM READER SPEED MUST JMP RGET+1 /EXCEED 12.5 CHARS PER SECOND JMS RDHANG /READER WAS OUT OF TAPE AT LAST RFC RFC CLA JMP I RGET /RETURN WITH NOTHING RTIME, 0 PAGE /TECO - VERSION J /SHEET 77 /21 APR 69 RBH PAGE 30 /MORE FILE HANDLING WSETUP, 0 /SETUP DISC & DECTAPE TAD UNIT DCA EXPORT+6 DCA EXPORT+4 /INITIAL BLOCK SET BY FILE SYSTEM DCA EXPORT+5 /BLOCK COUNT DCA EXPORT+7 /NEXT BLOCK POINTER DCA EXPORT+11 /FREE BLOCK LIST POINTER DCA WLAST /CLEAR END-OF-FILE FLAG FLAG STA DCA WCHAR /RESET CHAR POINTER JMP I WSETUP EXPORT, 0 /OUTPUT FILE 0 0 4000 /WRITE MODE FLAG 0 0 0 0 6400 /FREE BLOCK LIST 0 DEVLST, 104 /DEVICE ASSIGNMENTS 113 /K: TTYIN 120 /P: HSP OUT 122 /R: HSRIN 124 /T: TTYOUT IAC /END OF LIST CMA /HSR & HSP COME HERE JMP I DEVTAB /REJOIN OTHER ROUTINE DEVTAB, DSC /0 FOR DISC DEVTAB-3 /-2 FOR TTY DEVTAB-2 /-1 FOR HSP DEVTAB-2 /-1 FOR HSR DEVTAB-3 /-2 FOR TTY DUMMY, 0 /FAKE INITIALIZATION JMP I DUMMY /FOR TTY /TAILINGS: TWRITE= 6600 TREAD= 7000 TJOIN= 7100 PAGE $