*20 / PS V3.3 MAR 13, 1970 / LAP6-DIAL ... PRINT MANUSCRIPT (SOURCE) /ASSEMBLE WITH TELETYPE /BLOCK 363, WITH THE TELETYPE ROUTINES IN BLOCK 364 *1000 / / ENTER WITH STARTING BLOCK OF SOURCE TO BE PRINTED IN AC / OTHER RELEVANT PARAMETERS IN E6 / STC SIN+2 /START BLOCK TO I/O LIST LDA /PICK UP I/O UNIT NO E6+6 STC SIN /...ALSO TO I/O LIST SET I 5 E6 /POINTER TO LINE NUMBERS LDA 5 /GET THE FIRST LINE NUMBER STA I X1, 0 /A TEMP FOR 8 MODE ADDRESSING LDA I 5 /SECOND LINE NUMBER STA I X2, 0 /SECOND TEMP PDP PMODE /GET INTO 8 MODE FOR GOOD COMPARES. CLA TAD X1 /GET THE FIRST LINE NUMBER CLL CML CIA /COMPLEMENT AC AND SET LINK TAD X2 /NUMBER 2 -- LINC CLEARED IF LN2 GE LN1 LINC LMODE /GET BACK INTO LINC MODE LZE /WERE NUMBERS OK? JMP B8 /NOPE. EXIT. SET I 5 E6 SET I 3 J9+2 LDA 5 /1ST LINE AZE STC STRTLN /STARTING LINE NO ADD . /GET A DUMMY INSTRUCTION IN THE AC. STC JBNOBK /AND STORE IN THE PAGE BREAK ROUTINE /THIS INSURES THAT IT WILL ONLY GIVE TWO LINES INITIALLY. ADD P1 STC L8 LDA I 5 /LN2 AZE ADD P1 /INCR IF SPECIF AZE STC STOPLN /HOLD FOR COMPARE IF SPECIFIED LDA I 5 SAE I 7777 JMP .+3 LDA I 5443 STA 3 LDA I 5 STA I 3 LDA I 5 STA I 3 LDA I 5 STA I 3 LDA I -0 STA I 3 SET I 3 7377 SET I 5 -1 LDA CURLIN /CURRENT LINE NO SAE I STRTLN, 1 /STARTING LINE NO JMP S5 /NOT YET STC C8 NOP /KLUDGE--DO NOT REMOVE K5, JMP Z8 JMP X8 SET I 13 -1000 LDA CURLIN SAE I STOPLN, 7776 JMP L5 /DONE JMP B8-1 /WAIT FOR KEY /PARTIAL PRINT S5, JMP BUMPLN /GO TO NEXT LINE LDA I 43 SHD I 3 JMP K5-7 JMP CHECK JMP .-5 /PRINT LINE L5, JMP BUMPLN /UP LINE SET 2 3 LDH I 2 SHD I 0000 /00=END OF FILE CHARACTER??? JMP A8 /END OF THE LISTING! SET I 13 -74 M5, JMP CHECK LDH I 3 SHD I 4700 /CHECK FOR A TAB SKP JMP NOTAB /NOT A TAB LDA TBCONT /GET THE OUTPUT POSITION ADA I -10 /BOP DWON BY 8 APO I JMP .-3 /STILL POSITIVE AZE I JMP .-5 /AND NONZERO COM /NOW GET THE POSITIVE REMAINDER ADA I -1 /AND ZAP DOWN FOR THE XSK TO FOLLOW ADD 13 /ADD IN NUMBER OF CHARS TO GO AZE I JMP DOIT /TOO BIG APO JMP NOPE /IT LL FIT DOIT, LDA I -1 /SO XSK WILL KNOW ITS THE END OF THE LINE NOPE, STC 13 /AND STORE BACK CORRECT COUNT NOTAB, LDA I /RESET Z8 TO DO A PAGE BREAK JMP T8 /PAGE BREAK CALLER STC JBNOBK /STORE IT AWAY LDH 3 /GET THE OLD CHAR BACK. SHD I 4300 JMP P5 JMP W8 LDH 3 SHD I 4000 JMP C5 N5, XSK I 13 JMP M5 JMP CHECK LDH I 3 SHD I 4300 JMP P5 /TT LINE CONTINUES PAST PAGE BREAK XSK I 5 JMP .+2 JMP Z8 JMP X8 SET I 13 -100 LDH 3 JMP M5+5 /COUNT TO NEXT SPACE OR EOL. /DO NOT BREAK WORDS AT END OF TT LINE C5, SET I 4 1 SET 2 3 JMP CHECK LDH I 2 SHD I 4300 JMP .+5 XSK I 4 SAE I 40 JMP .-7 LDA 13 ADD 4 APO JMP N5 LDA I -101 ADD 4 APO I JMP N5 JMP N5+2 /EOL P5, LDA CURLIN ADD P1 STC C8 STC TBCONT /ZERO TAB CONTROL Q5, XSK I 5 JMP K5+1 JMP K5 /MS ADDRESS CHECK AND UP LINE NUMBER BUMPLN, LDA I P1, 1 ADM I CURLIN, 0 /CURRENT LINE CHECK, SET 6 /SAVE RETURN 0 LDA /BETA 3 CONTAINS ADDR IN SOURCE BLOCK 3 SAE I /END OF BLOCK? 7377 JMP 6 /NO-RETURN GETBLK, PDP /YES-ENTER PMODE FOR READ PMODE CDF 0 CIF 10 JMS I READ /GET ONE BLOCK SIN ISZ SIN+2 /INCREMENT BLOCK NO LINC LMODE LDF 1 /FORCE CORRECT DATA FIELD SET I 3 /RESET SOURCE POINTER 6777 SET 2 3 JMP 6 / / I/O CONTROL BLOCK / SIN, 0 /UNIT 6 /MEM ADDR = 3000 0 /START BLOCK 1 /READ ONE ONLY / READ=21 /POINTER TO READ ROUTINE / / / / ASMIFM 1377-. UH-OH -- THIS ROUTINE IS TOO BIG / / / /DIAL PRINT MS(SRC) /ADD TELETYPE HERE BEFORE ASSEMBLY / EJECT /TELETYPE ROUTINES / / N.B. DONT CHANGE THIS CODE UNLESS CHANGES ARE REFLECTED IN PXDX. / KBDOPR=1400 E6=2371 A6=2001 G7=346 D7=300 E7=0 J9=771 *1400 /DIAL TELETYPE ROUTINE /44-END PRINT / / A8, LDA I -4 /TO COMPENSATE FOR NO BREAK AT THE END ADM 5 /BOP DOWN LINE NUMBER COUNTER JMP T8 /DO A LINE FEED XSK I 5 /DONE YET??? JMP .-2 /DOWN TO BOTTOM OF PAGE. LDA I 55 /THE MINUS SIGN JMP W8 /PRINT IT SET I 5 -14 /ENOUGH TO GET PAST TEAR RIM. JMP X8 /C.R. S XSK I 5 /ALL DONE?? JMP .-2 /NOPE. NOP B8, PDP PMODE CIF CDF 10 JMP I .+1 7777 LMODE /PAGE PRESET Z8, SET I 5 -4 SET 14 0 JMP X8 JBNOBK, JMP T8 XSK I 5 JMP .-2 LDA I 55 JMP W8 /- JMP X8 JMP T8 LDH J9+2 SHD I 5400 JMP .+7 SET I 2 J9+2-4000 JMP Y8 /NAME LDA I 54 JMP W8 /, LDA I L8, 0 /PAGE NUMBER JMP P8 LDA I 1 /CONSTANT ADD .-4 STC .-5 ADD C8 /LINE NUMBER AZE I JMP X8-6 JMP W8-2 JMP W8-2 SET I 2 S8-4000 JMP Y8 /LN= LDA I C8, 0 /LN JMP P8 /PRINT NUMBER JMP X8 JMP T8 SET I 5 -71 STC TBCONT /ZERO OUT THE TAB COUNTER. A NEW LINE IS HERE. JMP 14 /EXIT. /KST, CARRIAGE RETURN X8, SET 7 0 KST JMP .+6 LIF 3 JMP KBDOPR SHD I 4300 JMP B8 PDP PMODE CLA TAD P215 JMS I TYPOA TAD P212 JMS I TYPOA LINC LMODE JMP 7 P215, 215 TYPOA, TYPO P212, 212 PMODE TYPO, 0 TSF JMP .-1 TLS CLA JMP I TYPO LMODE T8, PDP PMODE CLA TAD P212 JMS I TYPES LINC LMODE JMP 0 TYPES, TYPO /LINEFEED ONLY R8, SET 4 0 JMP M8 ADA I 60 JMP W8 JMP N8 JMP R8+2 /PRINT NUMBER, NO LEADS P8, SET 4 0 AZE JMP .+5 ADA I 60 JMP W8 JMP 4 P8S, JMP M8 AZE JMP .+3 JMP N8 JMP P8S ADA I 60 JMP R8+5 /NUMBER SUBS M8, ROL 3 STA I 0 BCL I 7770 JMP 0 N8, LDA M8+2 SRO I 3567 JMP 0 JMP 4 /PRINT LDA I 40 W8, PDP PMODE JMS I CONVT DCA TEMP TAD TEMP TAD M211A SNA CLA JMP TABP TAD TEMP JMS I TYPS ISZ TBCONT LNRT, LINC LMODE JMP 0 TYPS, TYPO TBCONT, 0 CONVT, CONVRT /PRINT LINE OR LABEL Y8, SET I 13 0 /CHARS PER LINE SET 7 0 LDH I 2 SHD I 4300 JMP 7 /END DIAL LINE SHD I 7700 /END NAME JMP 7 JMP W8 XSK I 13 JMP Y8+4 LDH I 2 /END OF TT LINE SHD I 4300 JMP 7 XSK I 5 JMP J8 /TTLINE CONTINUES PAST PAGE BREAK J8, JMP X8 SET I 7 JMP M5+2 SET I 14 -12 JMP W8-2 XSK I 14 JMP .-2 SET I 13 -66 LDH 2 JMP Y8+5 A7=370 B7=0 PMODE M47, -47 M40, -40 P240, 240 P100, 100 P211, 211 TEMP, 0 M211A, -211 M10, -10 P77, 77 CONVRT, 0 AND P77 DCA TEMP TAD TEMP TAD M47 SNA CLA JMP TABCV TAD TEMP TAD M40 SPA TAD P100 TAD P240 JMP I CONVRT TABCV, TAD P211 JMP I CONVRT TABP, TAD TBCONT TAD M10 SMA JMP .-2 JMS SKIP DCA TBCONT JMP LNRT T4, 0 SKIP, 0 DCA T4 TAD P240 JMS I TYPS ISZ T4 JMP .-3 JMP I SKIP LMODE D5, 4040 4040 4040 4040 4040 4040 2317 2522 0305 4040 4040 0211 1601 2231 4340 4016 0115 0540 E5, 4040 4002 1640 4002 1413 2343 S8, 1416 7543