* (O$PL) * * * COMPUTER: H316 * * PROGRAM CATEGORY: I/O LIBRARY * * PROGRAM TITLE: O$PL (O$PH) * PAPER TAPE LISTING ROUTINES * * REVISIONS: * 1.0 (2005-02.04) * * AUTHOR * * PHILIPP HACHTMANN * * * PURPOSE * * PUT LISTINGS ONTO PAPER TAPE. USAGE LIKE O$LA AND O$LH * * * STORAGE * * 266 (OCTAL) * 182 (DECIMAL) * * * USE * * THE LIBRARY ROUTINES ARE FOR GENERAL PURPOSE. * ********************************************************************** SUBR O$PL TYPE A COMPLETE LINE WITH CR/LF, HEADING ETC. SUBR O$PH INITIALISE HEADING SUBR O$PP,T1 TYPE A LINE, NO CR SUBR O$PC,T20 RETURN THE CARRIAGE SUBR O$PF,T30 ADVANCE TO NEXT LINE SUBR O$PE,SNP PUNCH FORM FEED * SUBR O$P1,HDS EMPTY LINES BETWEEN TOP OF PAGE AND HEADING SUBR O$P2,SPC EMPTY LINES BETWEEN HEADING AND MAIN TEXT SUBR O$P3,PGS PURE TEXT LINES PER PAGE ********************************************************************** REL RELOCATABLE ********************************************* * CONFIGURATION HDS DEC 1 EMPTY LINES BEFORE HEADING SPC DEC 5 EMPTY LINES BETWEEN HEADING AND TEXT PGS DEC 50 DATA LINES PER PAGE (WITHOUT HEADING ETC.) * * O$PL DAC ** LDA* O$PL BUFFER ADDRESS STA BUF1 STORE FOR LATER USE OCP 2 ACTIVATE PUNCH IRS LINE COUNT DOWN LEFT LINES ON PAGE JMP PGOK NO NEW PAGE LDA =12 FORM FEED OTA 2 SEND FORMFEED JMP *-1 WAIT JST NP NEW PAGE REQUIRED PGOK JST T1 PRINT THE LINE BUF1 DAC ** ADDRESS OF LINE BUFFER JST T20 CARRIAGE RETURN JST T30 LINE FEED IRS O$PL MAKE RETURN ADDRESS JMP* O$PL RETURN * * O$PH DAC ** INIT HEADING LDA* O$PH STA P1 POINTER TO SOURCE LDA HBUP STA P2 POINTER TO TARGET LDA =-60 LINE LENGTH STA CNT HL1 LDA* P1 STA* P2 IRS P1 IRS P2 IRS CNT READY? JMP HL1 NO JST NP INIT PAGE IRS O$PH ADJUST ADDRESS JMP* O$PH RETURN **********************************************++ * NP DAC ** PREPARE NEW PAGE LDA PGS LOAD LINES PER PAGE TCA NEGATE STA LINE STORE PAGE COUNTER LDA HDS SNZ JMP NHDS NO SPACE BEFORE HEADING TCA STA CNT S1 JST T30 IRS CNT JMP S1 NHDS JST T1 TYPE HBUF HBUP DAC HBUF ADDRESS OF HEADER BUFFER JST T20 CARRIAGE RETURN LDA SPC NUMBER OF SPACES BEFORE TEXT TCA NEGATE STA CNT TO COUNTER SP1 JST T30 LINE FEED IRS CNT DEC COUNTER, SKIP IF READY JMP SP1 NOT READY JMP* NP * ***********************************++ * **** FORM FEED ROUTINE SNP LDA =-1 STA LINE OCP 2 ACTIVATE PUNCH LDA =12 FORM FEED OTA 2 SEND FORMFEED JMP *-1 WAIT JMP* SNP RETURN ******** * * CNT DEC 0 HBUF BCI 20, BCI 20, BCI 20, P1 DEC 0 POINTER 1 P2 DEC 0 POINTER 2 LINE DEC -40 NEG LINES LEFT ON PAGE * * ************************************************************ * *** AB HIER ABGESCHRIEBENER CODE! T1 DAC ** LDA* T1 ADD T5 STA T6 IRS T1 LDA =-60 STA 0 T3 LDA* T6 CAS ='120240 JMP *+2 * JMP T8 T4 JST T14 IRS 0 JMP T3 JMP* T1 T5 DAC 60,1 T6 *** ** * T8 LDA 0 STA T12 T10 IRS 0 JMP *+2 JMP* T1 LDA* T6 CAS ='120240 JMP *+2 JMP T10 LDA T12 STA 0 LDA ='120240 JMP T4 T12 *** ** * T14 DAC ** OCP 2 ACTIVATE PUNCH NOP NOP LRL 8 OTA 2 JMP *-1 LLL 8 OTA 2 JMP *-1 JMP* T14 * * ************************************************** * T20 DAC ** LDA ='6400 CR+NULL JST T14 JMP* T20 * ************************************************** * T30 DAC ** LDA ='5000 LF+NULL JST T14 JMP* T30 * FIN WRITE OUT LITERALS * * PUH..... * END