/RT-11 TO P?S CONVERTOR /READS RT-11 DECTAPES BLOCK # FROM = PARM,USES UNIT 7 FOR INPUT / EQUATED SYMBOLS BUFFER= 0 /USE THIS BUFFER FOR INPUT SYSIO= 7640 /I/O ENTRY POINT WRITE= 4000 /SYSIO WRITE BIT PAGE 33 /FOR ONCE ONLY CODE RT11, TAD I (7756 /GET EQUALS PARM CMA /INVERT FOR TEST SNA /NONE PASSED ? JMP I (BAD /BARF CMA /RESTORE ARGUMENT DCA I (RTBLK /STORE IT TAD I (7607 /GET # OF OUTPUT FILES SNA /SKIP IF ANY JMP I (BAD /BARF IF NONE TAD (7757 /ADD ON BASE DCA RT11 /SAVE IT DCA I RT11 /WIPE OUT INPUT FILES TAD (1347 DCA I (7614 TAD (7600 DCA I (7747 JMP I (INRT11 /START IT UP PAGE /RT11 CHARACTER FETCH ROUTINE GETC, 0 /GET A CHAR ROUTINE AND (177 /JUST 7-BIT SNA /RT11 ? JMP INEOF /YES TAD L7640 /CHECK FOR LOWER CASE(AND SOME STRANGERS) SPA /UPPER CASE ? TAD (40 /YES,WE NOW HAVE 6-BIT IF IT WAS A LETTER,ETC. SNA /WAS IT A NULL ? (OR 140 CODE) JMP I GETC /YES,THROW IT AWAY TAD (46 /^Z ? SNA /SKIP IF NO JMP INEOF /YES TAD (21 /TAB ? SNA /SKIP IF NOT TAD (226 /THIS WILL PUT IN PROPER TAB CODE LATER TAD (7775 /FORM FEED ? SNA /SKIP IF NO ZAPFRM, JMP DOFORM /JUMP IF YES;NL7776 IF /K IAC /BUMP TO V. T.;IF SPECIAL HANDLING NEEDED,PUT IT HERE IAC /BUMP TO LF SNA /SKIP IF NOT LF JMP PUTEOL /JUMP ON LF TAD (7653 /BACK ARROW OR RUBOUT ? SNA /SKIP IF NO JMP I GETC /JUMP IF YES TAD (77 /BAD CONTROL CHARACTER ? SPA /SKIP IF NO JMP PUTEOL+1 /YES,THROW IT AWAY TAD (40 /RESTORE CHARACTER AND (77 /JUST IN CASE PUTEOL, JMS I (XP6CH /PUT OUT THE CHAR CLA /JUST IN CASE JMP I GETC /GO GET NEXT INEOF, STA /INDICATE CLOSE JMS I LPQWRITE /CLOSE THE FILE JMP I (7600 /BOOTSTRAP,WE'RE DONE DOFORM, TAD EJCTPTR /SETUP DCA PTR /POINTER TAD I PTR /GET A LETTER JMS I (XP6CH /PUT IT OUT TAD I PTR /GET IT BACK ISZ PTR /BUMP TO NEXT L7640, SZA CLA /END OF LIST? JMP DOFORM+2 /NO,GO BACK TAD I (6776 /GET FILE POINTER FULCON, CIA /INVERT FOR TEST TAD I (6777 /COMPARE TO LENGTH POINTER TAD FULCON /ADD ON SAFETY OFFSET SMA CLA /SKIP IF FULL NOCHEK, JMP PUTEOL+1 /OK;0000 IF /N STA /INDICATE CLOSE JMP PUTEOL /FINISH FILE EJCTPTR,EJCTLST /LIST OF CHARACTERS IN "EJECT" EJCTLST,37 / "E&77 /E "J&77 /J "E&77 /E "C&77 /C "T&77 /T 0 / LPQWRIT,PQWRITE /POINTER TO P?S WRITE ROUTINE PTR, 0 PAGE INIT, TAD I POINTER RAR CLA IAC TAD POINTER DCA TEMP TAD I TEMP RTR;RTR;RTR JMS I (GETC TAD I POINTER RTR JMS I (GETC ISZ POINTER ISZ TEMP TAD I TEMP JMS I (GETC TAD I POINTER AND (7 CLL RAR DCA TEMP2 TAD I TEMP AND (7400 TAD TEMP2 RAL;RTL;RTL ISZ POINTER ISZ POINTER JMS I (GETC TAD POINTER TAD (-3000 SZA CLA JMP INIT TAD (4 TAD RTBLK DCA RTBLK RTSTRT, DCA POINTER TAD (7200 DCA I (7747 JMS I (SYSIO POINTER,0 4^100+7 RTBLK, .-. TAD (7600 DCA I (7747 JMP INIT TEMP, 0 TEMP2, 0 PAGE /P?S MONITOR FILE CREATOR /ENTRY POINT FOR INITIALIZE ROUTINE PQINIT, 0 /PARAMETER INITIALIZER PQ7770, SPA SNA SZL CLA /THIS DEFINITELY CLEARS AC PQ7, 7 /THIS MIGHT BE HARMLESSLY SKIPPED TAD I PQINIT /GET FIRST ARG AND PQ7770 /JUST FILE BITS DCA PQFILE /SAVE AS FILE PTR TAD I PQINIT /GET FILE ARG AGAIN AND PQ7 /JUST UNIT BITS TAD PQ6000 /20 BLOCKS DCA PQFUN /PUT INTO CALL ISZ PQINIT /BUMP TO NEXT ARG TAD I PQINIT /GET NEXT ARG ISZ PQINIT /BUMP PAST DCA PQNUM /SAVE AS STARTING LINE NUMBER TAD I PQINIT /GET NEXT ARG ISZ PQINIT /BUMP PAST ARGUMENT DCA PQINC /SAVE AS LINE NUMBER INCREMENT TAD PQBUFF /GET BUFFER POINTER DCA PQPTR /RESET TAD PQLFT1 /RESET DCA PQPUT /CO-ROUTINE TAD PQ6777 /FIZZY CONSTANT DCA PQWORK /TO PLACE HOLDER JMS PQLINE /FINISH EMPTY LINE JMP I PQINIT /RETURN /ENTRY POINT FOR PQS FILE CREATOR PQWRITE,0 /WRITE A FILE SPA /EOF ? JMP PQCLOSE /YES,DUMP FILE AND PQ77 /JUST TO MAKE SURE SNA /SKIP IF NON-C.R. JMP PQEOL /PUT IN LINE ON C.R. JMS PQSTORE /PUSH IT IN PQSRET, ISZ PQWRITE /BUMP TO BEYOND ARGS JMP I PQWRITE /RETURN TO SENDER PQEOL, JMS PQSTORE /PUT A ZERO IN ISZ PQPTR /BUMP TO NEXT PAIR DCA I PQPTR /CLOSE FILE IN CASE LAST TAD PQLFT1 /RESET DCA PQPUT /CO-ROUTINE TAD PQNUM /GET LINE NUMBER ENTRY DCA I PQWORK /STORE IN NUMBER WORD TAD PQNUM /GET LINE NUMBER TAD PQINC /UPDATE DCA PQNUM /PUT BACK JMS PQLINE /GO FINISH LINE TAD I PQ6776 /CHECK FOR FULL TAD PQPROT /PROTECTION VALUE CIA /SUBTRACT TAD I PQ6777 /FROM SECOND POINTER PQCLOSE,SMA CLA /OK ? JMP PQSRET /YES JMS I PQSYS /\ PQBUFF, 3000 / \WRITE OUT PQFUN, 20^100+WRITE / /1 FILE PQFILE, 40 // JMS PQINIT /\ 40 / \INITIALIZE FOR PQPROT, 310 / /NEXT TIME 12 // JMP I PQWRITE /RETURN TO CALLER PQLINE, 0 /LINE FINISHING ROUTINE NL7775 /BACKUP 3 TAD PQWORK /ADD ON CURRENT POINTER DCA PQWORK /SAVE IT BACK TAD PQWORK /GET IT AGAIN DCA I PQ6777 /SAVE AS LINE INFO POINTER TAD PQPTR /GET CURRENT BUFFER POINTER DCA I PQ6776 /SAVE AS FILE POINTER TAD PQPTR /GET AGAIN DCA I PQWORK /SAVE IN DUMMY PAIR ISZ PQWORK /BUMP TO DUMMY LINE STA /-1 IS DUMMY LINE VALUE DCA I PQWORK /SAVE DUMMY LINE NUMBER JMP I PQLINE /RETURN PQSTORE,0 /STORE ROUTINE JMP I PQPUT /GO WHEREVER PQPUT, PQLEFT+1 /EXIT ROUTINE DCA I PQPTR /STORE PAIR JMP I PQSTORE /RETURN TO MAIN PQLEFT, ISZ PQPTR /BUMP TO NEXT PAIR STL RTL /SHIFT LEFT STL RTL /WITH SOME STL RTL /NICE BITS JMS PQPUT /STORE IT DCA PQINIT /SAVE PASSED CHARACTER TAD I PQPTR /GET PREVIOUS CHARACTER AND PQCLOSE /JUST BITS 0-5 TAD PQINIT /ADD ON LATEST CHARACTER JMS PQPUT /STORE BACK JMP PQLEFT /KEEP GOING PQINC, 12 /10 DEC. A GOOD VALUE PQNUM, 144 /100 DEC ALSO GOOD PQPTR, 3000 /FILE BUFFER POINTER PQWORK, 0 /REAR FILE POINTER PQSYS, SYSIO /POINTER TO SYSIO ENTRY PQ6000, 6000 /CONSTANT 6000 PQ6776, 6776 /CONSTANT 6776 PQ6777, 6777 /CONSTANT 6777 PQ77, 77 /CONSTANT 0077 PQLFT1, PQLEFT+1 /ADDRESS CONSTANT NL7775= CLA CLL CMA RTL /LOAD AC WITH 7775 /END OF P?S FILE CREATOR XP6CH, RTSTRT /SIX-BIT OUTPUT ROUTINE JMS PQWRITE /PUT A CHAR SKP /SKIP IF IT CLOSED JMP I XP6CH /RETURN IF OK ISZ FILPTR /\ INRT11, TAD I FILPTR / \GET NEXT FILE SNA / /BARF IF NONE JMP BAD // DCA INBLK2 /SAVE FILE IN LINE JMS PQINIT /\ INBLK2, 0 / \INITIALIZE 144 / /NEXT FILE 12 // JMP I XP6CH /RETURN FILPTR, 7757 /FILE POINTER BAD, CLA /CLEAN UP TAD (7 /GET A BELL TLS /RING IT HLT /STOP JMP I (7600 /GOODBYE