100 P7CH, .-. /SEVEN-BIT PRINT ROUTINE 110 DCA P7TEMP /STASH PASSED VALUE 120 P7AGN, JMS CHKUP /CHECK FOR <^C>, ETC. 130 TAD P7TEMP /GET THE VALUE 140 P7TSF, TSFIOT /**** CONSOLE **** CIF MCS+10 150 P7JMP, JMP P7AGN /**** CONSOLE **** JMS OUTCON 160 P7TLS, TLSIOT /**** CONSOLE **** JMP P7AGN 170 JMS CHKUP /CHECK FOR <^C>, ETC. 180 JMP I P7CH /RETURN 190 EJECT 200 PAGE /PROGRAM STARTS HERE 210 220 NCON, NOP /IN CASE WE'RE CHAINED TO 230 SCRCASE,JMP I SCRIBE/(INITIAL)/CONTINUE THERE 240 250 / MESSAGE PRINTING ROUTINE. 260 270 SCRIBE, INITIALIZE /MESSAGE PRINT ROUTINE; PRELOADED FOR STARTUP 280 CLA /JUST IN CASE 290 TAD I SCRIBE /GET MESSAGE POINTER 300 DCA NCON /STASH IT 310 ISZ SCRIBE /BUMP PAST ARGUMENT 320 TAD (140) /INITIALIZE TO 330 CASZP1, DCA SCRCASE /**** /U **** CLA!400 340 SCRLUP, TAD I NCON /GET LEFT HALF-WORD 350 RTR;RTR;RTR /MOVE OVER 360 JMS SCRPRNT /PRINT IT 370 TAD I NCON /GET RIGHT HALF-WORD 380 JMS SCRPRNT /PRINT IT 390 ISZ NCON /BUMP TO NEXT PAIR 400 JMP SCRLUP /KEEP GOING 410 420 SCRPRNT,.-. /CHARACTER PRINT ROUTINE 430 AND [77] /JUST SIX-BIT 440 SNA /END OF MESSAGE? 450 JMP I SCRIBE /YES, RETURN TO ORIGINAL CALLER 460 DCA SCRCHAR /NO, SAVE FOR NOW 470 TAD SCRCHAR /GET IT BACK 480 TAD (-"%!200) /IS IT "%"? 490 SNA /SKIP IF NOT 500 JMP SCRCRLF /JUMP IF IT MATCHES 510 TAD [-"^+100+"%] /IS IT "^" 520 SNA CLA /SKIP IF NOT 530 JMP SCRFLIP /JUMP IF IT MATCHES 540 TAD SCRCHAR /GET THE CHARACTER 550 AND [40] /DOES CASE MATTER? 560 SNA CLA /SKIP IF NOT 570 TAD SCRCASE /ELSE GET PREVAILING CASE 580 TAD SCRCHAR /GET THE CHARACTER 590 LFENTRY,JMS P7CH /PRINT THE CHARACTER 600 JMP I SCRPRNT /RETURN 610 620 SCRCRLF,TAD (15) /GET A 630 JMS P7CH /PRINT IT 640 TAD (12) /GET A 650 JMP LFENTRY /CONTINUE THERE 660 EJECT 670 SCRFLIP,TAD SCRCASE /GET CURRENT CASE 680 CIA /INVERT IT 690 TAD (140+100) /ADD SUM OF POSSIBLE VALUES 700 CASZP2, DCA SCRCASE /**** /U **** CLA!400 710 JMP I SCRPRNT /RETURN 720 730 SCRCHAR,.-. /LATEST OUTPUT CHARACTER 740 EJECT 750 / P?S/8 SIX-BIT OUTPUT ROUTINE. 760 770 / CALL WITH: 780 790 / TAD CHAR /AC CONTAINS LATEST CHARACTER TO OUTPUT 800 / JMS I (P6CH) /CALL ROUTINE 810 / ALWAYS RETURNS HERE WITH CLEAR AC 820 / FILES ARE AUTOMATICALLY CREATED AS NECESSARY. 830 840 / CALL APPROPRIATE ROUTINE TO CLOSE THE FILE (NL4000;JMS I POUT). 850 860 / THE CONVERSION PROCESS STARTS AT "MEMIN" WHICH OPENS THE FIRST FILE. 870 880 P6CH, NEWBUFFER /SIX-BIT OUTPUT ROUTINE; PRELOADED FOR STARTUP 890 JMS I (PFFOUT) /CALL P?S/8 OUTPUT ROUTINE 900 SKP /SKIP IF FILE JUST CLOSED 910 JMP P6END /JUMP IF NOT 920 ISZ FILPTR /BUMP TO NEXT FILE ARGUMENT 930 MEMIN, TAD I FILPTR /GET THE NEXT FILE ARGUMENT 940 SNA /END OF ALL FILES? 950 JMP TRUNCATE /YES, WE LOSE 960 DCA POFBLK /NO, STORE IN-LINE 970 JMS I (PFFINITIALIZE) /CALL INITIALIZE ROUTINE 980 POFBLK, .-. /WILL BE FILE ARGUMENT ([BLOCK&7770] + [UNIT&7]) 990 144 /INITIAL LINE NUMBER 1000 12 /LINE INCREMENT 1010 P6END, JMS CHKUP /CHECK FOR <^C>, ETC. 1020 JMP I P6CH /RETURN TO CALLER 1030 1040 TRUNCAT,JMS I [SCRIBE] /TELL THEM 1050 TRUMSG /WE DIDN'T MAKE IT 1060 CREPORT,TAD FILCNT /GET FILE COUNT 1070 SNA /SKIP IF ANY 1080 JMP FILNO /ELSE LEAVE IT SAYING "NO" 1090 TAD (-12) /IS IT LESS THAN TEN? 1100 SMA /SKIP IF SO 1110 TAD ("1^100-3612) /ELSE CORRECT FOR 10-17 1120 TAD ("0-200+3612) /GET NUMERIC CORRECTION 1130 DCA FCTMSG+1 /STORE IN MESSAGE 1140 NL7777 /-1 1150 TAD FILCNT /EXACTLY ONE FILE? 1160 SZA CLA /SKIP IF SO 1170 JMP FILNO /JUMP IF OTHERWISE 1180 TAD ("E^100+"^-300) /ELSE MAKE IT DROP THE "S" 1190 DCA I (FLSMSG+3) /STORE INTO THE MESSAGE