*20 PMODE *20 MNPRE, 0 MNPOST, 0 MNSHOW, 0 IWINDO, WINDOW TIMER, 0 R, 0 L, 0 D, 0 N, 0 AFTER, 140 /POST REFRESHES BEFORE, 40 /PRE REFRESHES FRTIME, 5 /REFRESHES/FRAME W, 3 /WINDOW WIDTH S, 1 /NEW CHARS/FRAME /SUBR STARTS 100 KHZ CLOCK CLOCK, 0 CLA CLLR TAD RCLOCK CLLR CLA JMP I CLOCK RCLOCK, 2100 /SUBR WAITS UNTIL CLOCK TIMES OUT DELAY, 0 CLCA TAD RFRESH SPA CLA JMP .-3 CLLR /STOP CLOCK JMP I DELAY RFRESH, -1750 /10 MSEC REFRESH /THIS SECTION ENCODES NEXT DIAL LINE /FROM DIAL TEXT SOURCE, IGNORING LEADING /"/" AND LINE-CONTINUATION MARKS /TEXT SOURCE AUTOMATICALLY BUFFERED OF /OFF TAPE UNIT 1 IN 17400-17777, WITH /HALF-WORD POINTER=5 /AS LINE IS ENCODED, AN ARRAY OF THE PWS /NEEDED FOR DISPLAY ARE STORED IN 14000 /AND UP (LDF 6), 2 PWS PER 1/2 WORD CHAR LMODE /IF SW 5 UP, SAME LINE USED OVER AGAIN /RATHER THAN ENCODING NEXT ONE NEXSTR, SNS I 5 JMP TRIAL SET I 3 3777 /AD-1 PW BUFFER CLR STC 2 /COUNTS NO.CHARS ESF /HALF-SIZE " NEXCHR, LDF 7 LDA 5 /LAST HALF WORD? AZE /END INPUT BLOK? JMP INCHAR APO I JMP INCHAR /N0: GET NEXT CH LDA I /YES:GET NEXT ONE, 1 /TBLK OFF UNIT 1 ADM I TBLK, 0 BSE I /MBLK=7,LDF=7 7000 STC .+2 RDC U 0 /FILLED ABOVE SET I 5 /RESET 1/2 POINT 7377 /TO 17400-1/2 INCHAR, LDH I 5 /NEXT 1/2 WORD AZE I /0=FILE END JMP ENDFIL SHD I 5700 /57(/)=DIAL LINE JMP NEXCHR /IGNORED SHD I 4300 /43=END DIAL LIN JMP ENDSTR SHD I /54=DIAL LINE 5400 /CONTINUE:SKIP JMP NEXCHR ROL 1 ADA I PATRN-2 /ADDR PW PAIR STC 6 /IN LIF LDF 6 /STORE PWS IN LDA 6 /14000 ON UP STA I 3 LDA I 6 STA I 3 /SECOND PW XSK I 2 /INCR NO CHARS JMP NEXCHR /GET NEXT CHAR ENDSTR, LDA I /END OF LINE: 10 /CHAR WIDTH ADD DX /CHAR SPACING MUL 2 /TIMES NO CHARS AZE I /=LINE LENGTH JMP NEXSTR /SKIP EMPTY LINE SCR 1 /CENTER LINE COM ADA I X0, 374 /CENTER OF LINE STC IHORCO /STARTING H.C. ADD 2 STC N /SAVE NO CHARS /STRING ENCODED AS PW ARRAY. TRIAL /BEGINS HERE TRIAL, PDP PMODE CLA IAC TAD N /NO. CHARS CMA /1"S COMP -1 DCA MNPRE STA CLL RAL DCA MNSHOW STA CLL RAL DCA MNPOST /DISPLAY UNTIL READY SIGNAL AND THEN FOR /ANOTHER "BEFORE" REFRESHES /READY SIGNAL IS EITHER BUTTON PRESS ON /4-KEY BOX (SW 0 0FF) OR UP&DOWN ON SW 1 /(SW 0 ON). LINC LMODE SNS 0 JMP KEYBRD SNS 1 JMP .-1 WAIT1, PDP PMODE JMS CLOCK JMS I IWINDO JMS DELAY LINC LMODE SNS I 1 JMP WAIT1 /HAVE START SIGNAL: IF SW 2 ON, READ /DISPLAY PARAMETERS FROM CONSOLE; IF OFF /USE CURRENT VALUES INPARS, SNS 2 JMP READY LSW STC FRTIME RSW BCL I 7700 /RIGHT HALF STC S RSW BCL I 77 /LEFT HALF ROR 6 STC W JMP READY KEYBRD, PDP PMODE 6304 JMS CLOCK JMS I IWINDO JMS DELAY 6302 SNA CLA JMP .-5 LINC LMODE JMP INPARS /HAVE READY SIG /NOW DISPLAY SAME PREMASK PATTERN FOR /"BEFORE" REFRESHES AFTER READY SIGNAL READY, PDP PMODE TAD BEFORE CIA DCA TIMER JMS CLOCK JMS I IWINDO JMS DELAY ISZ TIMER JMP .-4 /FRAME SEQUENCE BEGINS. SEQUENCING /CONTROLLED BY THREE PARAMETERS: L=NO. /POSNS LEFT OF WINDOW (POSTMASKED). /D=NO. POSNS IN WINDOW. R=NO. POSNS /RIGHT OF WINDOW (PREMASKED). TAD N DCA R DCA D DCA L /SECTION UPDATES (L,D,R) ACCORDING TO /WINDOW WIDTH (W) AND SLIDE (S) FRAME, TAD L SNA CLA JMP GROW TAD R SNA CLA JMP SHRINK USUAL, TAD S CIA TAD R SPA JMP SHRINK-2 DCA R TAD S TAD L DCA L JMP SHOW GROW, TAD W CIA TAD D TAD S SMA SZA JMP STUNT CLA TAD D TAD S DCA D TAD S CIA TAD R DCA R JMP SHOW STUNT, DCA L TAD W DCA D JMP STUNT-5 CLA DCA R SHRINK, TAD S TAD L DCA L TAD L CIA TAD N SPA SNA JMP EXIT DCA D /SECTION GENERATES LINKAGE FOR DISPLAY /SUBROUTINE: MNPOST=-(L+1), MNSHOW=-(D+1 /AND MNPRE=-(R+1): -"S ARE 1"S COMPLS. SHOW, CLA IAC TAD L CMA DCA MNPOST IAC TAD D CMA DCA MNSHOW IAC TAD R CMA DCA MNPRE /NOW DISPLAY FRAME FOR FRTIME REFRESHES TAD FRTIME CIA DCA TIMER JMS CLOCK JMS I IWINDO JMS DELAY ISZ TIMER JMP .-4 JMP FRAME /PREPARE NEW FRM /DISPLAY OVER WHEN CONTROL PASSES HERE /FROM FRAME-SEQUENCING ALGORITHM /DISPLAY ALL POSTMASKS "AFTER" REFRESHES EXIT, CLA IAC TAD N CMA DCA MNPOST STA CLL RAL DCA MNSHOW STA CLL RAL DCA MNPRE TAD AFTER CIA DCA TIMER JMS CLOCK JMS I IWINDO JMS DELAY ISZ TIMER JMP .-4 LINC LMODE JMP NEXSTR /NEXT DISPLAY PMODE /SUBR DISPLAYS ONE FRAME OF MOVING /WINDOW DISPLAY. THERE ARE N DISPLAY /POSITIONS, WITH DX BETWEEN POSNS AND /THE LINE CENTERED AT X0 PAGE WINDOW, 0 LINC LMODE SET I 1 IHORCO, 0 /1=H.C. SET 2 MNPOST /-NO POSTMASKED SET I 3 3777 /AD-1 PW BUFFER LDF 6 /IN 14000 UP POST, XSK I 2 /DONE POSTING? SKP JMP DISPLA /YES:DISPLAY LDA I VERCO, 340 /VERT. COORD. DSC I POSMSK, 7777 /POSTMASK PW XSK I 3 /SKIP MASKED PW DSC POSMSK XSK I 3 LDA I DX, 1 /CHAR SPACING ADM 1 JMP POST DISPLA, SET 2 MNSHOW /-NO. SHOWN XSK I 2 /DONE WITH THEM? SKP JMP PRE /YES:PREMASK LDA VERCO DSC I 3 /SHOW 2 CHAR PWS DSC I 3 LDA DX ADM 1 /ADVANCE H.C. JMP DISPLA+2 PRE, SET 2 MNPRE /-NO. PREMASKED XSK I 2 /DONE? SKP JMP RETURN LDA VERCO DSC I PREMSK, 7777 /PREMASK PW DSC PREMSK LDA DX ADM 1 /ADVANCE H.C. JMP PRE+2 RETURN, PDP PMODE CLA JMP I WINDOW /END OF WINDOW SUBR /PROGRAM STARTS HERE. LOAD FIRST TBLK OF /TEXT (DIAL) FILE FROM LSWS START, CLA HLT LAS DCA TBLK /READ IN FIRST BLOCK OF TEXT FILE /INTO 17400-17777 (LDF=7,MBLK=7) LINC LMODE LDF 7 LDA TBLK BSE I 7000 STC .+2 RDC U 0 SET I 5 /INITIALIZE HALF 7401 /WORD CHAR POINT JMP NEXSTR+2 /ENCODE 1ST LINE /CONTROL REACHES HERE ONLY WHEN END OF /TEXT FILE ENCOUNTERED.CONTINUE RESTARTS /PROGRAM ENDFIL, PDP PMODE JMP START /DISPLAY PATTERN WORDS 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 /?