*20 PMODE *200 MONIT, CLA TLS TAD BELL /ASCII CODE BELL TSF JMP .-1 TLS /RING BELL CLA LINC LMODE ACT, HLT SNS I 5 JMP SHOWIT /SW 5=DISPLAY SNS I 4 JMP SAVEIT /SW 4=SAVE TEXT SNS I 3 JMP FINDIT /SW 3=TEXT-TAPE SNS 2 JMP ACT /NO SW=HLT AGAIN PDP /READ TEXT ON TT PMODE START, TLS TAD CHTABL /START AD D TEXT DCA PLACE KCC READ, KSF JMP .-1 KRB TSF JMP .-1 TLS /ECHO CHAR DCA TEMP /SAVE CHAR TAD TEMP TAD MM200 /CHECK FOR L/T SNA CLA JMP READ /SKIP L/T TAD TEMP TAD M215 /CHECK FOR CR SNA CLA JMP READ /SKIP CR TAD TEMP TAD M212 /CHECK FOR LF SNA CLA JMP READ /SKIP LF TAD TEMP TAD M377 /RUBOUT? SZA CLA JMP .+5 STA /RUBOUT:AC=-1 TAD PLACE DCA PLACE /DECR TEXT AD JMP READ /REREAD LAST CH TAD TEMP AND C0077 /STRIP ASCII DCA TEMP TAD TEMP DCA I PLACE /STORE CHAR TAD TEMP TAD M43 SNA CLA /END OF TEXT? JMP MONIT ISZ PLACE /INCR TEXT AD TAD PLACE SMA CLA /OUT OF ROOM? JMP READ /GET NEXT CHAR HLT /NO MORE ROOM JMP START /REREAD TEXT C0077, 77 TEMP, 0 MM200, -200 M215, -215 M212, -212 CHTABL, 2000 /2000=TEXT BELL, 207 M377, -377 M43, -43 PLACE, 0 /MAG TAPE I/O SEGMENT LMODE FINDIT, LDA I 0 /MODE INSTR= RDC U /READ TAPE 1 JMP LAB SAVEIT, LDA I 0 /MODE INSTR= WRC U /WRITE TAPE 1 LAB, STC MODE /STORE MODE INST LDF 1 /LINC DF = 1 LDA I 0 4000 STC MBLK /MEM BLK=4 HLT RSW /OFF R SW GET STC TBLK /INIT TAPE BLK FIX, ADD TBLK ADD MBLK /FORM 2ND TAPE STC MODE+1 /INSTR MODE, 0 /RDC-WRC 1 0 /2ND TAPE INSTR PDP PMODE CLA TAD C1000 TAD MBLK /INCR MBLK SNA /LAST BLK? JMP MONIT /DONE! DCA MBLK /NEW MBLK ISZ TBLK /NEW TBLK LINC LMODE JMP FIX /I/O NEXT BLK MBLK, 0 TBLK, 0 C1000, 1000 /MASKING SUBROUTINE *400 PMODE MASK, 0 /HOLDS RET ADR CLA TAD LMASK DCA NTIME /SET UP ISZ LOOP TAD I MSPOT /MASK H.C. INTO DCA 1 /LINC BETA-1 REG TAD VERCO /VERT. COOR. MASKON, LINC LMODE DSC I 0 /DISP MASK PW 7777 /FOUND HERE PDP PMODE ISZ NTIME /MORE MASK AREA? JMP MASKON /MORE MASK JMP I MASK /RETURN LMASK, -6 /-NO. MASK WORDS NTIME, 0 MSPOT, HCMASK /ADR OF MASK HC /WINDOW DISPLAY SUBROUTINE WINDOW, 0 /HOLDS RET AD CLA TAD WSIZE DCA NTIME /SET UP ISZ LOOP TAD I WSPOT /PUT WINDOW HC DCA 1 /INTO LINC B-2 TAD I TEXTSP /ADR-1 OF FIRST DCA 10 /INTO AUTO IND WNEXT, TAD I 10 /GET NEXT CHAR DCA CHAR TAD CHAR TAD M56 /END OF STRING? SNA CLA JMP I WINDOW /RETURN TAD CHAR CLL RAL /DOUBLE CODE TAD PWTABL /AD PW TABLE DCA 2 /INTO LINC B-2 TAD VERCO /VERT. CO. LINC LMODE DSC 2 /DISPLAY PWS DSC I 2 PDP PMODE ISZ NTIME /DONE? JMP .+2 JMP I WINDOW /RETURN CLA TAD 1 TAD HORSP DCA 1 /INCR H.C. JMP WNEXT /DO NEXT CHAR HORSP, 2 /H. INC. -8 WSIZE, -3 /-WINDOW SIZE WSPOT, HCWIND /AD OF WINDOW HC TEXTSP, LOCHAR /AD OF 1ST CHAR VERCO, 0 /VERT. COOR. PWTABL, PATRN-2 /AD-2 OF PW TAB CHAR, 0 M56, -56 /-STOP CODE /DISPLAY SEGMENT *600 LMODE SHOWIT, LDA I 0 1777 /INIT TEXT AD-1 STC LOCHAR WAIT, SNS 1 /HLT SW 1 OFF HLT ESF /HALF SIZE CHAR PDP PMODE CLLR /CLEAR CLOCK TAD KLOCKP / CLLR /LOAD CLOCK JMS I MASKIT /MASK THRU PAUSE CLCA /CLOCK READING TAD PAUSET SPA CLA /DONE PAUSING? JMP .-4 /CONT PAUSE NEXTWD, CLLR TAD KLOCK CLLR /LOAD CLOCK CLA TAD LOCHAR DCA HOLD1 ISZ HOLD1 TAD I HOLD1 TAD M40 /BLANK? SNA JMP .-4 /SKIP BLANK TAD M16 /.?:16+40=56 SNA CLA JMP QUIT /.=END FOUND STA TAD HOLD1 DCA LOCHAR /LOCHAR=HOLD1-1 IAC DCA WIDTH /WSIZE=1 FLOOP, ISZ HOLD1 /ANOTHER CHAR/WD TAD I HOLD1 TAD M40 /BLANK? SNA JMP FIND /END OF WORD TAD M16 /.? SNA CLA JMP FIND ISZ WIDTH /ANOTHER CHAR/WD JMP FLOOP FIND, CLA TAD WIDTH CIA DCA I WIDE /WSIZE=-WIDTH LINC LMODE SNS 0 JMP BYLET /DURATION/LETTER JMP BYWORD /DURATION/WORD BYLET, PDP PMODE TAD I WIDE DCA WIDTH /ISZ LOOP TAD ADISP /BASIC TIME ON TAD LDISP /+TIME/LETTER ISZ WIDTH /ANOTHER LET/WD? JMP .-2 /MORE ON TIME TIMEON, DCA DISPON /SET ON TIME JMS I MASKIT /MASK WHILE OFF CLCA /CLOCK READING TAD DISPOF /OFF TIME DONE? SPA CLA JMP .-4 /MORE OFF TIME CLLR TAD KLOCK CLLR JMS I MASKIT /DO LEADING MASK JMS I SHOW /WINDOW DISP CLCA /CLOCK READING TAD DISPON SPA CLA /LONG ENOUGH? JMP .-5 TAD 10 /AD LAST CH DISP DCA LOCHAR JMP NEXTWD LMODE BYWORD, PDP PMODE TAD TDISP /TIME ON/WORD JMP TIMEON QUIT, TAD HOLD1 /END OF SENT DCA LOCHAR TAD LOCHAR IAC DCA DISPON /DUMMY USE TAD I DISPON TAD MM43 /LAST SENT? SNA CLA JMP I MONN /DONE! LINC LMODE JMP WAIT /DO ANOTHER SENT PMODE MONN, MONIT MM43, -43 HOLD1, 0 TDISP, -144 WIDE, WSIZE ADISP, -50 LDISP, -24 WIDTH, 0 M40, -40 M16, -16 LOCHAR, 0 HCMASK, 240 HCWIND, 274 MASKIT, MASK SHOW, WINDOW DISPON, 0 /HOLDS ON TIME DISPOF, -50 /WINDOW OFF TIME PAUSET, -310 /PAUSE TIME KLOCK, 4100 /COUNT MSEC KLOCKP, 5100 /COUNT HSEC *1002 /PATTERN WORDS FOR CHAR DISPL. PATRN, 4477 /A 7744 5177 /B 2651 4136 /C 2241 4177 /D 3641 4577 /E 4145 4477 /F 4044 4136 /G 2645 1077 /H 7710 7741 /I 0041 4142 /J 4076 1077 /K 4324 177 /L 301 3077 /M 7730 3077 /N 7706 4177 /O 7741 4477 /P 3044 4276 /Q 376 4477 /R 3146 5121 /S 4651 4040 /T 4077 177 /U 7701 176 /V 7402 677 /W 7701 1463 /X 6314 770 /Y 7007 4543 /Z 6151 4177 /[ 0000 2040 /\ 0410 0 /] 7741 2000 /^ 2077 3410 /BACK ARROW 1010 0 /SPACE 0 7500 /! 0 6006 /" 60 3614 /NUMBER SIGN 1436 7721 /DOLLAR SIGN 4677 1446 /% 6130 5166 /& 0523 500 /APOSTROPHY 6 4163 /( 0 0 /) 6341 2050 /* 50 404 /+ 437 605 /, 0 404 /- 404 1 /. 0 601 // 4030 4136 /0 3641 2101 /1 177 4523 /2 2151 4122 /3 2651 2414 /4 477 5172 /5 651 1506 /6 4225 4443 /7 6050 5126 /8 2651 5120 /9 3651 4200 /: 0 2601 /; 0 2410 /< 0042 1212 /= 1212 4200 /> 1024 4020 /? 2055