/"T4" (V2): OS-8 OUTPUT HANDLER FOR TTY /SIMULATES LINE PRINTER (FORM, TABS) & EJECTS /11-INA THIRD JMS ESCAPE ARG THIRD KSF JMP NOSIG /NO SIGNAL FROM USER /------- SIGNAL, KRB /SOMETHING. AND MASK / (7 BITS ONLY) TAD MCTRLO /^O ?? SNA JMP EXITO /YES. EXIT. TAD K14 /NO. SEE IF IT'S ^C. SZA CLA / ^C JMP NOSIG /NEITHER. CONTINUE. KCDI, CDF CIF 0 JMP I EXIT /TO MONITOR (^C) EXITO, JMS ESCAPE ARG VTAB JMP EXIT /^O FEEDS FRESH LINE, /AND THEN EXITS. MASK, 177 MCTRLO, -17 VTAB, 213 K14, 14 /------- NOSIG, ISZ COUNT1 /DOUBLE WORD JMP LOOPCH /HAVEN'T DONE 128 YET // RECORD FINISHED: ISZ RECRDS /DONE ALL RECORDS? JMP LOOPRC /NO, GET NEXT. JMP EXIT /YES, BUFFER EMPTIED. *374 ESCAPE, 0 / LINKAGE TO "OUTPUT" SUBR.: TAD .-1 /FOR LATER RETURN KCDF, CDF /DATA FLD. 0 SKP /BUST OUT OF STIR OUTPUT, 0 / RETURN ADRS. GOES HERE DCA .-1 TAD OUTPUT AND K7600 /N*200 = PG. 1 BOTM. TAD M200 DCA AUGMNT /RELOCATION CONST. TAD I OUTPUT TAD AUGMNT /REAL ARG. ADDRESS DCA PTR2 ISZ OUTPUT /FOR CORRECT RETURN /FIX UP "EXITF" POINTER: TAD XEXITF / RELATIVE ADDRESS TAD AUGMNT DCA PEXITF / TRUE ADDRESS TAD I PTR2 /GET ARGUMENT AND K177 /7 BITS ONLY SNA JMP RETURN /IGNORE BLANKS TAD M32 /^Z ? SNA JMP I PEXITF /YES, E.O.F. TAD K15 /C.R.? SNA JMS CR /C.R., SNA JMP RETURN /...EXIT IF C.R. IAC /FORM FEED? SNA JMP FORM /YES. IAC SNA JMP CRLF /VERT. TAB. = CR/LF IAC /LINE FEED? SNA JMP LFEED /YES IAC /NO. TAB? SZA /YES, PRINT SPACES JMP NEITHR /NO, PLAIN OLE CHAR. DOTAB, TAD TABCTR /CHARS. ON LINE SO FAR AND K7 TAD M10 /TO NEXT TAB STOP DCA CTR2 TAD SPACE JMS TYPE ISZ TABCTR /NEW CHARACTERS ISZ CTR2 JMP .-4 JMP CHECKL /LINE TOO LONG? /------- LFEED, ISZ FORMFL /L.F. ALLOWED? SKP /YES. JMP NOFORM /NO, FOLLOWS FORM ISZ LINCTR /61? SKP /NO, NOT YET. EJCT, JMP FORM+4 /YES. EJECT. IAC /------- /FORM FEED, WHETHER PROGRAMMED (214) OR A /DEFAULT EJECTION (61 LINES), INHIBITS /FURTHER FORM OR LINE FEEDS. NEITHR, TAD M162 /TOO LARGE (RBT.) ? SMA JMP RETURN /YES. IGNORE. TAD K133 /PRINTING CHAR.? SMA /NO, DON'T COUNT IT ISZ TABCTR /YES, ONE MORE TAD SPACE /RESTORE CHAR. JMS TYPE /(CLEARS FORM FLAG) CHECKL, TAD TABCTR TAD MWIDTH /MARGIN SPA CLA JMP RETURN /STILL ROOM ON LINE CRLF, JMS CR /OVERFLOW, ISSUE CR JMP LFEED /ISSUE L.F. (OR FORM) FORM, ISZ FORMFL /2 FORMS IN A ROW? SKP /NO, DO THIS ONE JMP NOFORM /YES. EXIT. CLA IAC TAD VMARGN /-6 [OR...] TAD LINCTR DCA CTR2 JMS CR /JUST TO BE SURE. TAD K212 /LINE FEEDS ONLY JMS TYP ISZ CTR2 JMP .-3 /LOOP SPACE, NOFORM, CLA CMA DCA FORMFL /INHIBIT FORM SUBR. TAD VSIZE DCA LINCTR /RESET JMP RETURN TYP, 0 / TYPE ONLY: TSF JMP .-1 TLS M200, K7600, 7600 JMP I TYP TYPE, 0 / NORMAL ROUTINE: JMS TYP DCA FORMFL /ENABLE FORM & L.F. JMP I TYPE CR, 0 TAD K15 JMS TYP /FORM FLAG UNCHANGED / JMS TYP -- OPTIONAL. CURES SOME DEVICE / TIMING PROBLEMS. DCA TABCTR /CLEAR CHAR. CTR. JMP I CR RETURN, CLA CLL /GO BACK CLEAN JMP I OUTPUT K7, 7 K15, 15 K133, 133 K177, 177 K212, 212 M10, -10 M162, -162 M32, -32 RELADR= .-200 /USE WITH 'ALTER'; CF. BELOW MWIDTH, -MARGIN / CURRENTLY -72 (DECIMAL) /ABOVE CAN BE CHANGED WITH 'ALTER' COMMAND IN /BUILD. DECIMAL -80 = 7660 OCTAL. VMARGN, -6 / 6+60 LINE FEEDS = 11 INCHES DECIMAL VSIZE, -61 / 61 LINES BEFORE EJECTION OCTAL AUGMNT, 0 / RELOCATION CONSTANT PTR2, 0 CTR2, 0 TABCTR, 0 / CHARS. ON ONE LINE LINCTR, 7703 / LINES PER PAGE FORMFL, 0 / -1 AFTER PAGE EJECTION /POINTERS, RELATIVE & TRUE, TO PG. #1.: XEXITF, EXITF PEXITF, 0 / (GETS TRUE ADRS.) $$$$ PAS REV. 2/75 $$$$