*20 PMODE /PROGRAM CONSTANTS, PAGE ZERO *20 POINT, 0 CASE, 0 C257, 257 C212, 212 C240, 240 C215, 215 C255, 255 C260, 260 DIG, 0 C7400, 7400 M20, -20 MBLK, 0 TEMP, 0 MYES, -400 PSTART, EPROG /TEXT BUFFER-1 INFILE, INPUT TBLK, 0 CHSIZE, 0 FULL, 200 RESPA, 0 RESPB, 0 TWOSB, 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 AWSIZE, WSIZE ADISPF, DISPOF APASS1, PASS1 M56, -56 CHMASK, MASKON+2 WARN, 4141 /WARN SIG PW LOCHAR, 0 /DISPLAY POINTER BLANK, BLANKS 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 LASTCH, 0 ICHLIN, CHLINE 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 MOVE, 0 /DELTA HC/FRAME WSIZE, 0 /HOLDS CURR WSIZ 0 0 0 0 0 /WSIZE ARRAY /TIME PARAMETERS DISPON, -24 /-MSEC/FRAME ON DISPOF, 0 /-CURRENT OFF TM 0 0 0 0 0 /DISPOF ARRAY WARNON, -144 /-HSEC E-LINE SG PAUSET, -310 /-HSEC PAUSE /UP AND DOWN PARAMETERS DOWN, -1 /SLOW INCR UP, 1 /POS FAST INCR NPOINT, -30 /-NO OBS/CASE NCASE, -1 /-NO WSIZE CASES PASS1, 0 /CURR SKIM FLAG 0 0 0 0 0 /PASS1 ARRAY /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 IDIG2-2 TAD D10 DCA HOLD TAD DIG TAD C260 JMS I TIPE TAD HOLD TAD C260 JMS I TIPE TAD I DECPUT /RET AD=DECOUT DCA HOLD JMP I HOLD /JMP I DECOUT ISZ DIG JMP I IDIG2 /JMP DIG2 IDIG2, DIG2 /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 NCASE DCA CASE TAD C10 JMS I LINE 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 JMS I LINE TAD AWSIZE /WS ARRAY-1 DCA 15 TAD ADISPF /DISPOF ARRAY-1 DCA 16 TAD APASS1 /PASS1 ARRAY-1 DCA 17 LOOP1, STL RTL JMS I SPACES TAD I 15 /WSIZE(I) CIA JMS I DECPUT STL RTL JMS I SPACES STA DCA I 16 /INIT DISPOF(I) IAC DCA I 17 /INIT PASS1(I) ISZ CASE /ANOTHER CASE? JMP LOOP1 JMS I LINE TAD NPOINT DCA POINT /NO OBS/CASE HLT LOOP2, TAD NCASE /CYCLE THE CASES DCA CASE TAD AWSIZE DCA 15 TAD ADISPF DCA 16 TAD APASS1 DCA 17 JMS I LINE SENT, LINC LMODE SNS I 0 /CHAR SIZE: SW 0 ADD FULL ESF STC CHSIZE /SET CHAR SIZE ADD C1 SNS 2 /SW 2 0N:TWO SUB CLR STC TWOSB PDP PMODE TAD I 15 /WSIZE(I) DCA WSIZE TAD I 16 /DISPOF(I) DCA DISPOF TAD I 17 /PASS1(I) DCA PASS1 /SKIM FLAG /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 /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 I ICHLIN /JMP CHLINE /DONE WITH SENT. GET RESPS FROM SUBJ A /VIA RESP PANEL AND ALSO FROM SUBJ B VIA /ANALOG BOX IF SW 2 ON (I.E.,IF TWOSB=1) 6314 /CLEAR RESP PANL TAD TWOSB SNA CLA JMP SUBJA DCA RESPB SUBJB, LINC LMODE SAM 10 /READ ANALOG BOX PDP PMODE DCA 1 /SAVE ANALOG RES TAD 1 TAD FULL SPA CLA /<-200? JMP SUBJA /RESPB=NO=0 TAD MD100 TAD 1 SPA CLA />144? JMP SUBJB /NO RESPB YET ISZ RESPB /RESPB=YES=1 SUBJA, 6312 /READ RESP PANEL SNA JMP .-2 /NO RESPA YET TAD MYES SNA CLA /RESPA=YES? IAC DCA RESPA TAD DISPON TAD DISPOF CIA /FT JMS I DECPUT JMS I SPACES TAD RESPA TAD C260 JMS I TIPE JMS I SPACES TAD TWOSB SZA CLA /TWO RESPS? JMP .+3 JMS I SPACES /SKIP RESP B JMP .+4 TAD RESPB TAD C260 JMS I TIPE IAC JMS I SPACES STA TAD 16 DCA 16 TAD PASS1 SZA CLA /SKIMMING CASE? JMP SKIM TAD RESPA SZA CLA JMP SKIM-2 /YES: FASTER TAD DOWN /NO: SLOWER SETS, TAD DISPOF DCA I 16 /INTO DISPOF(I) ISZ CASE /ANOTHER CASE? JMP I ISENT /JMP SENT:NEXT C ISZ POINT /MORE OBS/CASE? JMP I ILOOP2 /JMP LOOP2 JMP I INEWON /JMP NEWONE TAD UP /DECREASE DISPOF JMP SETS /COMES HERE IF PASS1(I)=1:RAPID SLOWING SKIM, TAD RESPA SNA CLA /BELOW THRESH? JMP .+6 STA TAD 17 DCA 17 DCA I 17 /CLR PASS1 FLAG JMP SKIM-2 /FASTER TAD DOWN CLL RAL CLL RAL /SKIM BY X 4 JMP SETS /ENOUGH ROOM LEFT ON DISP LINE? CHLINE, TAD RMHC TAD BOUND SPA CLA /HC PAST BOUND? JMP I IGO /JMP GO:NEXT FRM TAD WARN /PW FOR END- DCA I CHMASK /LINE SIGNAL TAD IHORCO DCA LMHC /RESET TAD KLOCKP /LOAD CLOCK CLLR JMS I MASKIT /WARN SIGNAL CLCA /CLOCK TIME TAD WARNON SPA /DONE WARNING? JMP .-4 STA /RESTORE MASK PW DCA I CHMASK JMS SETUP /RESET HCS JMP I IGO /NEXT FRAME IGO, GO ISENT, SENT ILOOP2, LOOP2 /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