*20 PMODE *6400 MLINES, 0 /2ND SCOPE PARAM DLINES, 0 M212, -212 M3, -3 C207, 207 M233, -233 M26, -26 M35, -35 C77, 77 C40, 40 C43, 43 LMODE ADBUFR, BUFFER /LMODE BUFFER(0) PMODE /ENTRY FOR DIVERTED HISPEED PUNCH OUTPUT DWRITE, 0 IOF /INTER. OFF DCA ASCII /SAVE CHAR ISZ DWRITE /INCR. RET.ADDR. TAD MLINES /2ND SCOPE PARAM SNA CLA JMP I DWRITE /=0:NO OUTPUT TAD ASCII TAD M212 SNA JMP RETURN /IGNORE LF TAD M3 /-215 SNA JMP CR /CAR. RET. TAD M26 /-243 SNA JMP BLNK /NO. SIGN=BLANK TAD M35 /-300 SNA CLA JMP BLNK /AT-SIGN=BLANK TAD ASCII AND C77 SNA JMP RETURN /IGNORE "OPEN" DCA ASCII /STRIPPED JMS STORE /PUT INTO BUFFER RETURN, ION /INTER. BACK ON JMP I DWRITE BLNK, CLA TAD C40 JMP RETURN-2 CR, CLA TAD C43 DCA ASCII JMS STORE /43=CR CODE ISZ DLINES /ROOM ANOTHER LN JMP RETURN TAD MLINES /NO MORE LINES: SPA CLA JMP FREEZE /<0:FREEZE PROG. /MAX. NO. LINES FILLED; SINCE 2ND PARAM />0, KEEP ONLY MOST RECENT LINES. LINC LMODE ADD 0 /SAVE L-REG 0 STC SAVE0 JMP PUSHBF /DELETE TOP LINE PMODE /ENTER "FREEZE" STATE WHEN EITHER MAX. /NO. LINES DISPLAYED OR BUFFER FILLED. /RING BELL AND FREEZE (WITH DISPLAY ON) /UNTIL CTRL/S HIT ON TTY, THEN CLEAR /BUFFER AND START ANEW. FREEZE, TAD C207 TSF JMP .-1 TLS /RING BELL FWAIT, KSF /TTY KEY YET? JMP FROZEN KRB TAD M233 /YES: CTRL/S? SNA CLA JMP THAW /YES:RELEASE FROZEN, ION NOP /DISPLAY INT. IOF /HERE ONLY JMP FWAIT /KEEP WAITING THAW, TAD MLINES SMA CIA DCA DLINES /RESET MAX LINES TAD ADBUFR DCA EPOINT /CLEAR BUFFER DCA I IBUFFR /0=END-MARKER JMP RETURN IBUFFR, BUFFER /SUBROUTINE STORES HALF-WORD STRIPPED /ASCII IN BUFFER, WITH FOLLOWING TERMIN- /TOR=0, END-MARKER. AS IN LMODE, MUST /SAVE CONTENTS OF REGISTERS 0&1 STORE, 0 LINC LMODE ADD 0 STC SAVE0 ADD 1 STC SAVE1 SET I 1 /SET 1/2 POINTER EPOINT, BUFFER /TO END-BUFFER LDA I ASCII, 0 STH 1 /SAVE CHAR CLR STH I 1 /FOLLOWING 0 ADD 1 STC EPOINT /SAVE PTR SET I 1 SAVE1, 0 /RESTORE 1 ADD EPOINT SAE I ENDBUF, 5577 /END BUFFER=7757 JMP SAVE0-1 /NO SET 0 /YES:RESTORE 0 SAVE0 /AND FREEZE PDP PMODE CLA JMP FREEZE LMODE SET I 0 /RESTORE 0 AND SAVE0, 0 /RETURN PDP PMODE CLA JMP I STORE /THIS SECTION SLIDES TOP LINE OUT OF /BUFFER. LMODE PUSHBF, ADD 1 STC SAVE1 /SAVE 1 ADD 2 STC SAVE2 /SAVE 2 SET I 2 BUFFER-4000 LDH I 2 SAE I 43 JMP .-3 /LOOK FOR 1ST CR SET I 1 BUFFER-4000 LDH I 2 /SHIFT CHAR DOWN STH I 1 /UNTIL FINAL 0 AZE JMP .-3 ADD 1 STC EPOINT /NEW END-BUFFER" SUV 0 SAVE0 /RESTORE 0 SET 1 SAVE1 /RESTORE 1 SET I 2 SAVE2, 0 /RESTORE 2 PDP PMODE STA /ROOM=1 LINE DCA I IDLINS /DCA DLINES JMP I IRETN /JMP RETURN IDLINS, DLINES IRETN, RETURN / /THIS SECTION HANDLES THE (8-MODE ONLY!) /INTERRUPTS FOR DISPLAY REFRESHING / RFRESH, 0 /1ST SCOPE PARAM CYCLES, -1 / DISPLA, DCA ACSAVE /SAVE AC RAR DCA LSAVE /SAVE LINK CLSA AND C60 /TRIGGER 1 ? SNA CLA JMP BACK /NO:FALSE ALARM ISZ CYCLES /REFRESH YET? JMP BACK TAD RFRESH /YES:RESET CYCLE DCA CYCLES /COUNTER LINC LMODE ESF /HALF-SIZE ADD 0 STC SAVE0 /SAVE 0 ADD 1 STC SAVE1 /SAVE 1 ADD 2 STC SAVE2 /SAVE 2 ADD 3 STC SAVE3 SET I 3 BUFFER-4000 /CHAR PTR LDA I 360 /TOP LINE V.C. STC Y DLINE, SET I 1 /LEFTMOST H.C. -2 LDH I 3 /NEXT BUFFER CHR AZE I JMP BACK1 /0-END BUFFER SHD I 4000 /DONT DISP BLANK JMP BLANK SHD I 4300 JMP NXLINE /END OF LINE ROL 1 ADA I PATRN-2 STC 2 /AD PW PAIR LDA I Y, 0 /CURRENT V.C. DSC 2 DSC I 2 /DISPLAY CHAR XSK I 1 /CHAR SPACING JMP DLINE+2 /NEXT CHAR BLANK, LDA I 11 /SKIP CHAR POSN ADM 1 JMP DLINE+2 NXLINE, LDA I -20 /LINE SPACING ADM Y JMP DLINE /NEXT LINE BACK1, SET 0 SAVE0 SET 1 SAVE1 SET 2 SAVE2 SET I 3 SAVE3, 0 /RESTORE 0,1,2,3 PDP PMODE BACK, CLA CLL /SETUP RETURN TAD LSAVE RAL /RESTORE LINK TAD ACSAVE /RESTORE AC RMF / " MEM FIELDS ION JMP I 0 /RETURN MAINLINE ACSAVE, 0 LSAVE, 0 C60, 60 / /END OF INTERRUPT HANDLER - DISPLAY /PATTERN WORDS FOR CHAR DISPLAY FOLLOWS LMODE 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 /BLANK 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 /SCOPE STORAGE BUFFER BEGINS HERE BUFFER, 0