RSS YES. JMP WAIT GO WAIT FOR NEXT ACTION. * JSB DREC DISPLAY RECORD COUNT. JMP NOWAT GO SIGNOFF SYSTEM SKP * * *** ROUTINE TO OBTAIN DESIRED STATUS * FROM THE REMOTE SYSTEM. *** * STAT LDA RSS STA .RSS1 LDB =D10 ASK FOR TYPE JSB CNSL OF STATUS DESIRED. JSB RESP CPA =A/E END OF STATUS? JMP DONE1 YES, SHUT DOWN LINE. CPA =A/S SEND FILE? JMP TRAN1 YES. CPA =A/R RECEIVE FILE? JMP RECV1 YES. * STB SAVE SAVE MESSAGE LENGTH. LDA DEFRP CONVERT 'NAMED' JOB JSB AS2EB TO EBCDIC. LDA DEFRP ADA SAVE LDB =B14403 APPEND ON "EM,ETX". STB A,I LDA SAVE ADA =B3 STA LNG * .RSS1 NOP JMP SSTAT LDB =D3 TELL OPERATOR TO JSB CNSL DIAL REMOTE. JSB SGNON SING-ON TO IBM SYSTEM. * SSTAT JSB .IOC. SEND 'ENQ' TO REMOTE. ABS 30300B+DATA JMP *-2 JSB DSTAT CLA STA .RSS1 * JSB .IOC. SEND STATUS ABS 20000B+DATA RECORD. JMP *-2 DEF RSP-2 LNG NOP JSB DSTAT * JSB .IOC. SEND EOT. ABS 31100B+DATA JMP *-2 JSB DSTAT * JSB .IOC. WAIT FOR 'ENQ' FROM REMOTE. ABS 30600B+DATA JMP *-2 JSB DSTAT * LDA RSS CONFIGURE OUTPUT ROUTINE STA .RSS FOR CONSOLE. * LOOP5 JSB .IOC. RECEIVE STATISTICS DATA. ABS 10000B+DATA JMP *-2 DEF4 DEF BUF1 DEC -430 JSB DSTAT ALF,ALF SSA EOT? JMP STAT+2 ADB =D-5 LDA DEF4 INA JSB UNBLK UNBLOCK & WRITE TO CONSOLE. JMP LOOP5 LOOP. * SKP * * *** ROUTINE TO UNBLOCK AND REFORMAT A RECORD * IN 2780 TERMINAL FORMAT. THE FOLLOWING * ITEMS ARE SCANNED FOR AND PROCESSED. * * 1. ESC (OCTAL 47). THE NEXT CHARACTER IS * TREATED AS FOLLOWS: * * A. "/" - SINGLE SPACE * B. "S" - DOUBLE SPACE * C. "T" - TRIPLE SPACE * D. "A" - SKIP TO CHANNEL 1 * E. "B" - CHANNEL 2 * F. "C" - CHANNEL 3 * G. "D" - CHANNEL 4 * H. "E" - CHANNEL 5 * I. "F" - CHANNEL 6 * 4. "G" - CHANNEL 7 * K. "H" - CHANNEL 8 * * 2. IUS (ITB) (OCTAL 37). THIS CHARACTER * AND THE NEXT TWO CHARS ARE REMOVED * FROM THE TEXT WITH NO OPERATION. * * UNBLOCKED RECORDS ARE WRITTEN TO MAG * TAPE IN A SPOOLED TAPE FORMAT. * * CALLING SEQUENCE IS: * * JSB UNBLK (A-REG = BLOCK S.A.) * (B-REG = BLOCK LENGTH IN WORDS) SKP UNBLK NOP CMB,INB NEG CHAR COUNT. STB CHARS STA SAVE SAVE STARTING ADDRESS. STA S.A. STA BUFA CLA INITIALIZE FLIP-FLOPS FOR STA FLIP CHARACTER HANDLING. STA FLOP * LOOPA JSB GET GET A CHAR FROM INPUT. ISZ CHARS INCREMENT COUNT. CPA IUS IUS CHARACTER? JMP .IUS YES, GO HANDLE. CPA ESC ESC CHARACTER? JMP .ESC YES, GO GET PRINTER FORMAT. JMP LOOPA NEITHER, IGNORE. SPC 3 .IUS JSB GET GET AND IGNORE THE NEXT ISZ CHARS TWO CHARS. (BCC CHARS) JSB GET ISZ CHARS JMP LOOPA SPC 3 .ESC JSB GET GET PRINTER CARRIAGE CONTROL. ISZ CHARS STA CCSAV LDB A LDA CODE1 IS OUTPUT TO BE SPOOLED SLA IN ASCII? JMP ASCII YES, CONFIGURE CARRIAGE CONTROL. CLA CPB =D97 "/"? LDA =D9 YES, SINGLE SPACE. CPB =D226 "S"? LDA =D17 YES, DOUBLE SPACE. CPB =D227 "T"? LDA =D25 YES, TRIPLE SPACE. CPB =D193 "A"? LDA =B211 SKIP TO CHAN 1. CPB =D194 "B" LDA =B221 CHANNEL 2. CPB =D195 "C" LDA =B231 CHANNEL 3. CPB =D196 "D" LDA =B241 CHANNEL 4. CPB =D197 "E" LDA =B251 CHANNEL 5 CPB =D198 "F" LDA =B261 CHANNEL 6 CPB =D199 "G" LDA =B271 CHANNEL 7 CPB =B200 "H" LDA =B301 CHANNEL 8. * SZA,RSS ANY OF THE ABOVE? LDA =D9 NO, ASSUME SINGLE SPACE. JMP LOOPB-3 CONTINUE. SPC 4 ASCII JSB ACC GET ASCII CARRIAGE CONTROL EQUIV JSB PUT PUT CARRIAGE CONTROL IN BUFFER. * CLA,INA STA COUNT INITIALIZE COUNT OF CHARS. LOOPB JSB GET GET PRINT LINE. ISZ CHARS END OF INPUT? RSS NO. JMP DONE YES, WRITE OUTPUT. CPA IUS IUS CHAR? JMP IUS. YES. CPA ESC ESC CHAR? JMP ESC. YES. ISZ COUNT NO, PUT IN OUTPUT BUFFER. JSB PUT JMP LOOPB NO, LOOP * IUS. JSB WRITE WRITE CURRENT LINE. JMP .IUS GO PROCESS IUS CHAR. * ESC. JSB WRITE GO WRITE CURRENT LINE. JMP .ESC GO PROCESS ESC CHAR. * DONE JSB PUT PUT LAST CHAR IN OUTPUT BUFF. ISZ COUNT BUMP COUNTER. JSB WRITE GO WRITE CURRENT LINE. JMP UNBLK,I RETURN TO CALLER. ACC NOP CLA CPB =D97 "/"? LDA =B100 YES, SINGLE SPACE. CPB =D226 "S"? LDA =B360 YES, DOUBLE SPACE. CPB =D227 "T"? LDA =B140 YES, TRIPLE SPACE. CPB =D193 "A"? LDA =B361 CHANNEL 8. CPB =D194 "B" LDA =B362 CHANNEL 7. CPB =D195 "C" LDA =B363 CHANNEL 6 CPB =D196 "D" LDA =B364 CHANNEL 5 CPB =D197 "E" LDA =B365 CHANNEL 4 CPB =D198 "F" LDA =B366 CHANNEL 3 CPB =D199 "G" LDA =B367 CHANNEL 2 CPB =B200 "H" LDA =B370 SKIP TO CHANNEL 1. * SZA,RSS ANY OF THE ABOVE? LDA =B100 NO, DEFAULT TO SINGLE SPACE. JMP ACC,I SKP * * *** WRITE RECORD TO MAG TAPE. *** * WRITE NOP LDB COUNT W1 SLB,RSS CHECK FOR ODD JMP W2 LENGTH RECORD. LDA =B100 YES, PAD WITH JSB PUT A BLANK. ISZ COUNT * W2 LDA COUNT GET CHAR COUNT. CMA,INA MAKE NEG. STA BUFA+1 CONFIGURE CALL. CLA STA FLOP REINITIALIZE OUTPUT LOGIC. LDA BUFA STA S.A. * .RSS NOP JMP TAPE GO WRITE TO TAPE. LDB BUFA+1 SET UP CALL CMB,INB FOR CONSOLE. SLB INB BRS STB BUFA1+1 STA BUFA1 JSB EB2AS CONVERT TO ASCII. * LDA BUFA1+1 DETERMINE HOW STA LNGTH MANY LINES ARE CLB DIV =D36 REQUIRED TO PRINT SZB MESSAGE. INA CMA,INA STA CNTR4 * NXTLN LDB =D36 DETERMINE SIZE LDA LNGTH OF CONSOLE WRITE. ADA =D-36 STA LNGTH SSA ADB A STB BUFA1+1 JSB .IOC. PRINT ON CONSOLE. OCT 20002 JMP *-2 BUFA1 NOP NOP JSB CSTAT * ISZ CNTR4 ALL LINES PRINTED YET? RSS NO JMP WRITE,I YES, RETURN. LDA BUFA1 MOVE POINTER ADA =D36 BY 72 CHARS. STA BUFA1 LDB =D19 TYPE 2 RUBBOUTS JSB CNSL SO CARRIAGE CAN RETURN IN TIME. JMP NXTLN * TAPE LDA CODE1 SLA,RSS JMP OUTPT LDA BUFA CONVERT TO ASCII LDB BUFA+1 IF REQUESTED. CMB,INB SLB INB BRS JSB EB2AS JSB CRGE GO DELAY CARRIAGE CONTROL * OUTPT LDA OUTIO RAR SLA,RSS TAPE OUTPUT? JMP NOCVT NO, JUST PRINT IT. * JSB .IOC. ABS 20100B+MAG JMP *-2 BUFA NOP NOP * LDA OUTIO PRINT OUTPUT SLA,RSS JMP NOPRT NO * * NOCVT LDA BUFA CONFIGURE PRINT OUT STA LP ROUTINE. LDA BUFA+1 GIVE IT A WORD COUNT. CMA,INA SLA INA ARS STA LP+1 JSB LINEP GO START LINE PRINTING. JSB LPST WAIT FOR LINE TO COMPLETE PRINTING. NOPRT ISZ REC BUMP RECORD COUNTER. JSB MAGST WAIT FOR MAG TAPE I/O TO COMPLETE. JMP WRITE,I RETURN. SPC 4 * * *** GET CHARACTER FROM INPUT STREAM. *** * GET NOP LDA SAVE,I GET TWO CHARS. LDB FLIP DECIDE WHICH ONE TO PROCESS. CMB,SZB ALF,ALF AND =B377 MASK STB FLIP RESET FLIP FLOP. SZB,RSS INCREMENT ADDRESS ISZ SAVE EVERY OTHER TIME. JMP GET,I RETURN. SPC 4 24380-18015 1402