*20 PMODE /PROGRAM CONSTANTS, PAGE ZERO *20 NALT, 0 C257, 257 C212, 212 C240, 240 C215, 215 C255, 255 C260, 260 DIG, 0 C7400, 7400 M20, -20 MBLK, 0 TEMP, 0 RESP, 0 MYES, -400 PSTART, EPROG /TEXT BUFFER-1 INFILE, INPUT TBLK, 0 CHSIZE, 0 FULL, 200 PASS1, 0 LRESP, 0 IPAUSE, PAUSE INEWON, NEWONE C1000, 1000 NEXTC, NEXTCH NEXTC4, NEXTCH-4 PWTABL, PATRN-2 /AD-2 OF PW TABL FIRST, 2000 /FINAL TEXT ADDR CHAR, 0 M56, -56 CHMASK, MASKON+2 WARN, 4141 /WARN SIG PW LOCHAR, 0 /DISPLAY POINTER BLANK, BLANKS HISTOF, 0 MD1000, -1750 D1000, 1750 MD100, -144 D100, 144 MD10, -12 D10, 12 M43, -43 DECPUT, DECOUT LINE, LINES SPACES, SPACE TIPE, TYPE LMHC, 0 /HC OF L MASK HCWIND, 0 /HC OF WINDOW RMHC, 0 /HC OF R MASK C10, 10 M40, -40 MASKIT, MASK SHOW, WINDOW NTIME, 0 ONCE, 0 HOLD, 0 KLOCK, 4100 /MSEC CLOCK KLOCKP, 5100 /HSEC CLOCK M200, -200 LASTCH, 0 C40, 40 C1, 1 /DISPLAY PARAMETERS WINDSP, 1 /CHAR SPACING MASKSP, 2 /MASK-CHAR " BOUND, -700 /-R DISP BORDER IHORCO, 0 /LEFTMOST HC VERCO, 0 /VERT DISP COOR LSIZE, -6 /-SIZE OF L MASK RSIZE, -6 /-SIZE OF R MASK WSIZE, -3 /-WINDOW WIDTH MOVE, 0 /DELTA HC/FRAME /TIME PARAMETERS DISPON, -24 /-MSEC/FRAME ON DISPOF, -50 /-MSEC/FRAME OFF WARNON, -144 /-HSEC E-LINE SG PAUSET, -310 /-HSEC PAUSE /HYSTERESIS PARAMETERS NALTER, -30 /NO. REV PTS DOWN, -1 /SLOW INCR UP, 1 /POS FAST INCR /TEXT PARAMETERS INSERT, 0 /NO. EXTRA BLANK SLIDE, 1 /NEW CHARS/FRAME /SUBR DOUBLES AC IF FULL-SIZE CHAR DOUBLE, 0 DCA HOLD /SAVE AC TAD CHSIZE SZA CLA /RETURN IF ZERO JMP .+3 TAD HOLD JMP I DOUBLE TAD HOLD CLL RAL /DOUBLE JMP I DOUBLE /SUBR SETS HCS RELATIVE TO LMHC SETUP, 0 CLA TAD LSIZE CIA CLL RTL TAD MASKSP JMS DOUBLE TAD LMHC DCA HCWIND TAD WSIZE DCA TEMP SKP TAD WINDSP TAD C10 ISZ TEMP JMP .-3 TAD MASKSP JMS DOUBLE TAD HCWIND DCA RMHC JMP I SETUP /SUBR READS IN TEXT PASSAGE IN SUCCESSIV /TEXT BLOCKS, STARTING WITH BN TBLK INPUT, 0 LINC LMODE STC ONCE /ONCE THRU FLAG LDF 1 /LINC DF=1 LDA I 0 4000 STC MBLK /MEM BLK=4 FIX, ADD TBLK ADD MBLK /FORM 2ND TAPE STC MODE+1 /INSTR MODE, RDC U /READ TAPE 1 0 /2ND TAPE INSTR PDP PMODE CLA TAD ONCE SZA CLA /DO ONLY ONCE JMP CONT TAD INPUT+3 /SET LDF 1 FOR DCA HOKEY /LATER USE TAD I FIRST /GET ADD OF AND C7400 /HOW MANY I/O CLL RTR /BLOCKS MORE? CLL RTR CLL RTR TAD M20 CLL RTR /LEAVE 0-13 BLKS SNA JMP CONT+2 /DONE: RETURN CIA DCA TEMP /ISZ LOOP ISZ ONCE /SET ONCE FLAG JMP CLAW CONT, ISZ TEMP /ANOTHER BLK? JMP CLAW TAD FIRST DCA 12 /TEXT START JMP I INPUT CLAW, TAD C1000 TAD MBLK /NEXT MBLK SZA /RESET IF MBLK=0 JMP .+3 TAD FIX-2 /MBLK=4 ISZ HOKEY /INCR LDF DCA MBLK /NEW MBLK ISZ TBLK /NEW TBLK LINC LMODE HOKEY, 0 /LDF N INSTR JMP FIX /NEXT I/O PMODE /SUBROUTINE GIVES AC+1 SPACES OUTPUT SPACE, 0 CMA DCA NTIME TAD C240 JMS TYPE ISZ NTIME JMP .-3 JMP I SPACE TYPE, 0 TLS TSF JMP .-1 CLA JMP I TYPE /SUBR TO OUPUT AC+1 LINES LINES, 0 CMA DCA NTIME TAD C212 JMS TYPE ISZ NTIME JMP .-3 TAD C215 JMS TYPE JMP I LINES /SUBR TYPES AC AS SIGNED DECIMAL INTEGER DECOUT, 0 DCA HOLD DCA DIG TAD HOLD SMA JMP DIG0 CIA DCA HOLD TAD C255 JMS TYPE TAD HOLD DIG0, TAD MD1000 SMA JMP .+10 TAD D1000 DCA HOLD TAD DIG TAD C260 JMS TYPE DCA DIG JMP .+3 ISZ DIG JMP DIG0 TAD HOLD DIG1, TAD MD100 SMA JMP .+10 TAD D100 DCA HOLD TAD DIG TAD C260 JMS TYPE DCA DIG JMP .+3 ISZ DIG JMP DIG1 TAD HOLD DIG2, TAD MD10 SMA JMP .+12 TAD D10 DCA HOLD TAD DIG TAD C260 JMS TYPE TAD HOLD TAD C260 JMS TYPE JMP I DECOUT ISZ DIG JMP DIG2 *400 /MASKING SUBROUTINE MASK, 0 /HOLDS RET ADR CLA DCA ONCE /LEFT FIRST TAD LSIZE /-LEFT M SIZE SMA /ANY L M AT ALL? JMP RIGHT DCA NTIME /SET UP ISZ LOOP TAD LMHC /HC OF L MASK 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 CLA TAD ONCE /DONE RIGHT YET? SZA JMP I MASK /RETURN RIGHT, ISZ ONCE TAD RSIZE /-R MASK SIZE SMA JMP I MASK /NO R MASK DCA NTIME TAD RMHC JMP MASKON-2 /WINDOW DISPLAY SUBROUTINE WINDOW, 0 /HOLDS RET AD CLA TAD WSIZE DCA NTIME /SET UP ISZ LOOP TAD HCWIND /PUT WINDOW HC DCA 1 /INTO LINC B-2 TAD LOCHAR /AD-1 OF FIRST DCA 10 /INTO AUTO IND WNEXT, TAD I 10 /GET NEXT 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 WINDSP JMS DOUBLE TAD 1 DCA 1 /INCR H.C. JMP WNEXT /DO NEXT CHAR /PROGRAM STARTS HERE START, HLT LAS /GET INIT TBLK DCA TBLK /FROM R SWS JMS I INFILE /GET TEXT PASSAG NEWONE, HLT /NEW RUN TAD C10 JMS I LINE TAD WSIZE CIA JMS I DECPUT JMS I SPACES TAD MOVE JMS I DECPUT TAD C257 / "/" JMS I TIPE TAD C10 TAD WINDSP JMS I DECPUT JMS I SPACES TAD INSERT JMS I DECPUT JMS I SPACES TAD DISPON CIA JMS I DECPUT JMS I SPACES TAD UP JMS I DECPUT TAD DOWN JMS I DECPUT IAC DCA PASS1 /INIT FLAG STA DCA DISPOF /STARTING SPEED HLT LINC LMODE SENT, SNS I 0 /CHAR SIZE: SW 0 ADD FULL ESF STC CHSIZE /SET CHAR SIZE PDP PMODE /LOAD TEXT BUFFER WITH NEXT SENTENCE, /EXTRA BLANKS AS PER INSERT TAD PSTART DCA 11 /FIRST BUF LOC TAD PSTART DCA LOCHAR TAD WSIZE JMS I BLANK /LEADING BLANKS NEXTCH, TAD I 12 /NEXT TEXT CHAR DCA CHAR TAD CHAR TAD M40 SZA CLA /BLANK? JMP .+5 TAD INSERT /NO. EXTRA BLNKS CMA /+TEXT BLANK JMS I BLANK /FILL BLANKS JMP NEXTCH TAD CHAR DCA I 11 /STORE CHAR TAD CHAR TAD M56 SNA CLA /END SENTENCE? JMP I IPAUSE /JMP PAUSE TAD CHAR TAD M43 SZA CLA /LAST SENT? JMP I NEXTC /NEXTCH /END OF PASSAGE(C43) FOUND: /GET MORE TEXT FROM CONTIGUOUS BLOCKS ISZ TBLK JMS I INFILE JMP I NEXTC4 /NEXTCH-4 *600 /SUBR STORES NO.=-AC TEXT BLANKS BLANKS, 0 DCA NTIME TAD C40 DCA I 11 ISZ NTIME JMP .-3 JMP I BLANKS PAUSE, TAD WSIZE JMS I BLANK /TRAILING BLANKS TAD 11 CIA DCA LASTCH /SAVE -LAST ADD TAD IHORCO DCA LMHC JMS SETUP /INIT H.C.S CLLR TAD KLOCKP CLLR /START CLOCK JMS I MASKIT /MASK THRU PAUSE CLCA TAD PAUSET SPA CLA JMP .-4 GO, CLLR TAD KLOCK CLLR JMS I MASKIT JMS I SHOW CLCA TAD DISPON SPA CLA JMP .-5 CLLR TAD KLOCK CLLR JMS I MASKIT CLCA TAD DISPOF SPA CLA JMP .-4 CLLR /STOP CLOCK TAD MOVE JMS DOUBLE /DOUBLE IF FULL TAD LMHC DCA LMHC /INCR LMHC JMS SETUP /NEW HCS TAD SLIDE TAD LOCHAR DCA LOCHAR /NEW CHARS TAD 10 /ADDR LAST CHAR TAD LASTCH SPA CLA /PAST END? JMP CHLINE /DONE WITH SENT. - SW 5 ON=GET BINARY /JUDGEMENT RESPONSE, SW 5 OFF= ON TO /NEXT SENTENCE LINC LMODE SNS 5 JMP SENT /DO NEXT SENT /SW 4: ON=HLT, GET BINARY RESP FROM /EXPTR VIA RSW (BIT 11=RESP) /SW 4: OFF=GET BINARY RESP FROM RESP PAN SNS 4 JMP SUBJ HLT PDP PMODE LAS /LEFT SWITCHES AND C1 /SAVE BIT 11 JMP PUTOUT-4 /SAVE AS RESP LMODE SUBJ, PDP /RESP FROM SUBJ PMODE 6314 /CLR RESP PANEL 6312 /READ RESP PANEL SNA JMP .-2 /WAIT FOR RESP TAD MYES /YES? SNA CLA IAC DCA RESP /YES=1, NO=0 TAD PASS1 SZA CLA /CRUDE SKIM? JMP SKIM PUTOUT, JMS I LINE TAD DISPON TAD DISPOF CIA JMS I DECPUT /PRINT FT JMS I SPACES TAD RESP TAD C260 JMS I TIPE /PRINT RESP TAD RESP CIA TAD LRESP /PREV RESP SNA CLA /REVERSAL? JMP .+4 ISZ NALT /ENOUGH REVS? SKP JMP I INEWON /JMP NEWONE TAD RESP DCA LRESP TAD RESP SZA CLA JMP SKIM-2 TAD DOWN /SLOWER:DECREASE SETS, TAD DISPOF DCA DISPOF LINC LMODE JMP SENT PMODE TAD UP /FASTER:INCREASE JMP SETS SKIM, TAD RESP /WAITING FOR SZA CLA /FIRST "NO" JMP .+5 TAD DOWN CLL RAL CLL RAL / X 4 JMP SETS TAD NALTER DCA NALT /NO ADDT REVS DCA PASS1 /CLEAR SKIM FLAG DCA LRESP JMP PUTOUT /ENOUGH ROOM LEFT ON DISP LINE? CHLINE, TAD RMHC TAD BOUND SPA CLA /HC PAST BOUND? JMP GO /O.K.:NEXT FRAME TAD WARN /PW FOR END- DCA I CHMASK /LINE SIGNAL TAD IHORCO DCA LMHC /RESET TAD KLOCKP /LOAD CLOCK CLLR GAIN, JMS I MASKIT /WARN SIGNAL CLCA /CLOCK TIME TAD WARNON SPA /DONE WARNING? JMP I AGAIN /JMP .-4 STA /RESTORE MASK PW DCA I CHMASK JMS SETUP /RESET HCS JMP I IGO /NEXT FRAME IGO, GO AGAIN, GAIN /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 /? EPROG, 2055