/R-L TO P?S FIXUP PROGRAM /R-L MONITOR DECTAPE TO P?S DECTAPE CONVERSION PROGRAM PAGE 1 START, KCC /CLEAN UP TSF /KERCHUNK TLS /IF NECESSARY JMS PR6BIT /DO A , JMS SCRIBE /TELL THEM MOUMSG /TO MOUNT THE TAPE JMS INPUT /WAIT FOR A CHARACTER TAD [-15 /IS IT A ? SZA CLA /SKIP IF YES JMP .-3 /JUMP IF NO JMS I [SYSIO /GO READ 7000 /IN THE 2^100+0 /R-L 15 /CATALOG JMS SCRIBE /TELL THEM SCLMSG /THE OPTIONS GETFIL, JMS I [FILNAM /GET A FILE NAME TAD [6775 /SETUP DCA TPTR1 /POINTER FIXLUP, TAD I TPTR1 /GET A PAIR CMA /INVERT FOR TEST SNA CLA /SKIP IF NOT DELETED JMP FIXED /JUMP IF NOTHING TO DO NL7775 /BACKUP TAD TPTR1 /POINTER DCA TPTR1 /TO PREVIOUS STA /-1 TAD I TPTR1 /GET EOL POINTER ISZ TPTR1 /BUMP TO NEXT DCA TPTR2 /SAVE IT TAD I TPTR2 /GET SEQUENCE AND [7700 /JUST HIGH BITS SZA /SKIP IF ALREADY ZERO TAD [4100 /CHECK FOR 3700 SNA /SKIP IF NOT TAD [4177 /ADD ON FUDGE FACTOR TAD [3700 /RESTORE CHARACTER DCA I TPTR2 /PUT IT BACK JMP FIXLUP /TRY NEXT FIXED, JMS CTLCHK /CHECK FOR ^C TAD TAPREC /GET CURRENT BLOCK DCA OUTBLK /STORE INLINE JMS I [SYSIO /CALL I/O 3000 /TO WRITE OUT 20^100+4000+0 /THE CONVERTED OUTBLK, .-. /P?S FILE JMP GETFIL /GO GET ANOTHER ONE SCRIBE, 0 /MESSAGE OUTPUT ROUTINE DCA SCRCNT /SAVE MAXIMUM COUNT TAD I SCRIBE /GET MESSAGE ADDRESS ISZ SCRIBE /BUMP PAST ARGUMENT DCA TPTR3 /SAVE FOR LATER SCRIBR, TAD I TPTR3 /GET A PAIR RTR /\ RTR / >BSW RTR // JMS PR6BIT /PRINT IT JMP I SCRIBE /WAS ISZ SCRCNT /DONE TOO MANY ? SKP /SKIP IF NOT JMP SCRIBX /JUMP IF DONE TAD I TPTR3 /GET AGAIN ISZ TPTR3 /BUMP TO NEXT PAIR JMS PR6BIT /PRINT IT JMP I SCRIBE /WAS ISZ SCRCNT /DONE TOO MANY ? JMP SCRIBR /NO,KEEP GOING SCRIBX, JMS PR6BIT /YES,PRINT , JMP I SCRIBE /RETURN PR6BIT, 0 /6-BIT PRINT ROUTINE AND [77 /JUST 6-BIT SZA / ? JMP PR6BT1 /NO TAD [15 /YES,GET JMS TYPE /PRINT IT TAD [12 /GET JMS TYPE /PRINT IT JMP I PR6BIT /TAKE FIRST RETURN PR6BT1, ISZ PR6BIT /BUMP RETURN TAD [40 /\ AND [77 / >MAKE 7-BIT TAD [40 // JMS TYPE /PRINT IT JMP I PR6BIT /RETURN INPUT, 0 /INPUT ROUTINE KSF /WAIT FOR JMP .-1 /A CHARACTER JMS CTLCHK /CHECK FOR ^C KRB /READ IT IN AND [177 /JUST 7-BIT DCA CHAR /SAVE IT TAD CHAR /GET IT BACK JMP I INPUT /RETURN TYPE, 0 /OUTPUT ROUTINE TSF /WAIT FOR JMP .-1 /PREVIOUS CHARACTER TLS /PRINT THIS ONE CLA /THROW IT AWAY JMP I TYPE /RETURN CTLCHK, 0 /CHECK FOR ^C CLA /JUST IN CASE TAD [200 /ELIMINATE PARITY KRS /GET BUFFER TAD [-203 /^C ? SNA CLA /SKIP IF NOT KSF /SKIP NEXT IF FLAG UP & ^C JMP I CTLCHK /RETURN IF NOT ^C JMP I [7600 /BOOTSTRAP ON ^C PAGE GLINE, 0 /GET A LINE ROUTINE CLA CLL /CLEAN UP DCA TPTR1 /CLEAR TEMPORARY CHLOOP, JMS I [INPUT /GET A CHARACTER TAD [-177 / ? SNA /SKIP IF NOT JMP BACKSP /JUMP IF SO IAC / ? SZA /SKIP IF YES IAC / ? SNA /SKIP IF NEITHER JMP CR /JUMP IF EITHER TAD [-140+175 /LOWER CASE ? SMA /SKIP IF NOT TAD [7740 /MAKE UPPER CASE TAD [40 / OR ? SNA /SKIP IF NEITHER JMP CHLOOP /IGNORE IF EITHER TAD [-137+100 / ? SNA /SKIP IF NOT JMP BACKSP /JUMP IF YES TAD [-33+137 / ? SNA /SKIP IF NOT JMP CR /JUMP IF SO TAD [-25+33 /<^U> ? SNA /SKIP IF NOT JMP DELETL /JUMP IF IT IS TAD [-15+25 / ? SNA /SKIP IF NOT JMP CR /JUMP IF IT IS TAD [-12+15 / ? SNA /SKIP IF NOT JMP LF /JUMP IF YES TAD [-4+12 /<^D> ? SNA /SKIP IF NOT JMP DELETL /JUMP IF IT IS TAD [-40+4 /BAD CONTROL CHARACTER ? SPA /SKIP IF GOOD CHARACTER JMP CHLOOP /GO BACK IF BAD TAD [40 /RESTORE CHARACTER AND [77 /JUST 6-BIT DCA CHAR /SAVE IT TAD TPTR1 /GET INDEX CLL RAR /%2 TAD [BUFFER /ADD ON BASE DCA TPTR2 /SAVE AS POINTER TAD I TPTR2 /GET CURRENT PAIR AND [7700 /JUST HIGH BITS TAD CHAR /ADD ON CURRENT CHARACTER SZL /DO WE MOVE ? JMP .+5 /NO CLL RTL /\ RTL / >BSW RTL // AND [7700 /JUST 6-BIT DCA I TPTR2 /PUT BACK 1 OR BOTH ISZ TPTR1 /BUMP CHARACTER INDEX TAD CHAR /GET THE CHARACTER JMS I [PR6BIT /GO PRINT IT HLT /CANT COME HERE JMP CHLOOP /GO GET ANOTHER LF, JMS I [PR6BIT /GO TO NEXT LINE TAD TPTR1 /GET COUNT SNA /SKIP IF ANY JMP CHLOOP /FORGET IT CIA /INVERT FNR COUNTING JMS I [SCRIBE /ECHO BUFFER /THE INPUT BUFFER JMP CHLOOP /TRY AGAIN DELETL, JMS I [SCRIBE /TELL THEM ZAPMSG /ZAP! JMP GLINE+1 /START ALL OVER AGAIN BACKSP, STA /BACKUP TAD TPTR1 /CHECK INDEX SPA /SKIP IF ALRIGHT JMP GLINE+1 /WE ERASED IT ! DCA TPTR1 /SAVE UPDATED VALUE TAD [137 /GET A JMS I [TYPE /PRINT IT JMP CHLOOP /TRY,TRY AGAIN CR, TAD TPTR1 /GET INDEX SNA /SKIP IF ANY INPUT JMP CHLOOP /IGNORE EMPTY LINES TAD [BUFFER^2-1 /MAKE ABSOLUTE POINTER CLL RAR /%2 DCA XR1 /SETUP DELETE POINTER DCA I XR1 /DELETE IN CASE DCA I XR1 /SHORT INPUT JMS I [PR6BIT /GOTO NEW LINE JMP I GLINE /RETURN PAGE FILNAM, 0 /FILE NAME ROUTINE TAD ALLSW /ARE WE DOING ALL OF THEM ? SZA CLA /SKIP IF NOT JMP DOALL /JUMP IF SO JMS I [SCRIBE /ASK THEM NAMESG /WHAT FILE NAME JMS I [GLINE /GET RESPONSE TAD I [BUFFER /GET FIRST 2 LETTERS TAD [-5203 /IS IT CATALOG OPTION ? SNA /SKIP IF NOT JMP CATPRT /JUMP IF SO TAD [2 /IS IT ALL FILES OPTION ? SNA CLA /SKIP IF NOT JMP SETALL /JUMP IF SO TAD I [7377 /GET CATALOG POINTER DCA TAPREC /SAVE AS INITIAL BLOCK TAD [7000 /GET FIRST CATALOG WORD NXTNAM, DCA TPTR1 /SET UP CATALOG POINTER TAD I TPTR1 /GET A PAIR SNA /END OF CATALOG ? JMP NOTFND /YES,COMPLAIN CMA /DELETED ENTRY ? SNA CLA /SKIP IF NOT JMP NAMNG /TRY NEXT ENTRY STA /BACKUP FOR AUTO-INDEX TAD TPTR1 /GET ENTRY POINTER DCA XR1 /SAVE IT TAD [BUFFER-1 /SETUP COMPARE DCA XR2 /POINTER NL7775 /SETUP DCA TCNT1 /COUNT SRCH, TAD I XR1 /GET AN ENTRY CIA /INVERT FOR TEST TAD I XR2 /COMPARE SZA CLA /SKIP IF IT COMPARES JMP NAMNG /FORGET IT ISZ TCNT1 /DONE ALL YET ? JMP SRCH /NO,GO BACK TSTFIL, JMS I [CTLCHK /CHECK FOR ^C TAD TAPREC /GET TAPE BLOCK DCA .+4 /STORE IN-LINE JMS I [SYSIO /CALL I/O 3000 /TO READ IT IN 20^100+0 /TO CORE .-. /FROM THIS BLOCK TAD I [3000 /GET POTENTIAL BINARY FLAG WORD RAL /ISOLATE BITS SNL /MIGHT BE BINARY ? JMP CHKSRC /NO SPA CLA /BINARY ? JMP CHKSRC /NO TAD I [3001 /GET FIRST ORIGIN TAD [-200 /IS IT 0200 ? SNA CLA /SKIP IF NOT JMP FILNG /BARF ON BINARY FILE CHKSRC, CLA /JUST IN CASE TAD I [6777 /GET LAST NUMBER POINTER DCA TPTR1 /SAVE IT TAD I TPTR1 /GET FIRST FREE WORD ACCORDING TO PAIR CIA /INVERT FOR TEST TAD I [6776 /COMPARE TO FIRST FREE WORD BY POINTER SZA CLA /SKIP IF SAME JMP FILNG /FILE NOT ASCII ISZ TPTR1 /BUMP TO LINE # ENTRY TAD I TPTR1 /GET THE LINE NUMBER (LAST) CMA /SHOULD BE 7777 SZA CLA /SKIP IF IT WAS 7777 JMP FILNG /FILE NOT ASCII TAD I [6776 /GET FREE SOURCE POINTER DCA TPTR1 /SAVE IT TAD I TPTR1 /GET FIRST FREE WORD SNA CLA /SKIP IF NOT JMP I FILNAM /RETURN,ALL IS OK FILNG, JMS I [SCRIBE /TELL THEM NOTSRC /THEY GOOFED JMP FILNAM+1 /START ALL OVER AGAIN SETALL, STA /SET DCA ALLSW /SWITCH TAD [7000 /GET DCA ALLPTR /MASTER CATALOG POINTER TAD I [7377 /GET FIRST BLOCK JMP ALLGO /GO DO IT ALL DOALL, TAD ALLPTR /GET CURRENT POINTER TAD [3 /BUMP TO NEXT DCA ALLPTR /SAVE IT BACK TAD TAPREC /GET CURRENT BLOCK TAD [20 /BUMP TO NEXT FILE ALLGO, DCA TAPREC /SAVE NEXT FILE TAD I ALLPTR /GET NEXT ENTRY SNA /SKIP IF POSSIBLE JMP I [7600 /WE'RE DONE CMA /IS IT DELETED ? SNA CLA /SKIP IF NOT JMP DOALL /GO ON TO NEXT TAD [-6 /SETUP MESSAGE COUNT JMS I [SCRIBE /TELL THEM ALLPTR, 0 /WHAT FILE WE'RE DOING JMP TSTFIL /GO TEST THE FILE NOTFND, JMS I [SCRIBE /TELL THEM NFMSG /THEY CAN'T SPELL JMP FILNAM+1 /TRY,TRY AGAIN NAMNG, TAD TAPREC /GET CURRENT BLOCK TAD [20 /BUMP TO NEXT FILE DCA TAPREC /SAVE IT BACK TAD TPTR1 /GET ENTRY POINTER TAD [3 /BUMP TO NEXT ENTRY JMP NXTNAM /FINISH IT THERE CATPRT, TAD [7000 /SETUP DCA CATPTR /CATALOG POINTER TAD I CATPTR /GET A WORD KSF /FLAG UP ? SKP /SKIP IF NOT KCC /CLEAR IT IF IT WAS (ALSO AC) SNA /CHARACTER HIT OR END OF CATALOG ? JMP FILNAM+1 /YES,GO GET ANOTHER OPTION CMA /DELETED ENTRY ? SNA CLA /SKIP IF NOT JMP CATFRE /GO TELL THEM OF EMPTY TAD [-6 /SETUP NAME LIMIT JMS I [SCRIBE /PRINT OUT CATPTR, .-. /CURRENT NAME CATBMP, TAD CATPTR /GET CURRENT POINTER TAD [3 /BUMP TO NEXT JMP CATPRT+1 /GO ON TO NEXT CATFRE, JMS I [SCRIBE /TELL THEM FREMSG /OF LIBERATION JMP CATBMP /ON TO NEXT PAGE NAMESG, TEXT "ENTER FILE NAME OR OPTION" NOTSRC, TEXT "NOT SOURCE FILE !" MOUMSG, TEXT "MOUNT R-L TAPE ON UNIT 0 WRITE ENABLED,THEN HIT " NFMSG, TEXT "FILE NOT FOUND !" SCLMSG, TEXT "TYPE *C FOR CATALOG,*A FOR ALL OR ONE FILENAME AT A TIME" ZAPMSG, TEXT " ZAP !" FREMSG, TEXT "" BUFFER= . /INPUT BUFFER PAGE 0 *10 XR1, 0 /AUTO-INDEX #1 XR2, 0 /AUTO-INDEX #2 *20 ALLSW, 0 /ALL OR ONE SWITCH CHAR, 0 /INPUT BUFFER NL7775= CLA CLL CMA RTL /LOAD AC WITH 7775 SCRCNT, 0 /SCRIBE LIMIT COUNT SYSIO= 7640 /I/O ENTRY POINT TAPREC, 0 /TAPE RECORD TCNT1, 0 /TEMPORARY TPTR1, 0 /TEMPORARY TPTR2, 0 /TEMPORARY TPTR3, 0 /TEMPORARY /HERE COME THE LITERALS !!!