3 * *********** MODIFIED MODIFIED !!!! *****************
5 * FOR VISIBLE PUNCHES !!!!!
7 * PROGRAM TITLE: O$LA (O$LA,O$LE,O$LH,O$LC,O$LF)
8 * LINE PRINTER ROUTINES
20 * THESE ARE THE LIBRARY ROUTINES FOR HACHTI'S LINE PRINTER INTERFACE
25 * DEPENDS ON HACHTI'S HARDWARE AND FORTRAN IV COMPILER TAPE
37 * DAC (BUFFER ADDRESS)
40 * THIS PRINTS ONE LINE OF LISING TEXT
41 * (60 2-CHAR WORDS MAX) TO THE LINE PRINTER.
45 * DAC (HEADING ADDRESS)
48 * SETUP THE LISTING HEADER
49 * RESETS THE PAGE COUNTER AND SPACES TO THE BEGINNING OF
54 * DAC (BUFFER ADDRESS)
57 * PRINT TEXT FROM BUFFER. NO CR OR LF IS OUTPUT.
62 * PRODUCE A CARRIAGE RETURN ON THE LINE PRINTER.
68 * SEND A LINE FEED COMMAND TO THE PRINTER.
75 * SPACES TO THE BEGINNING OF THE NEXT PAGE BY SENDING
76 * A FF CHARACTER TO THE PRINTER.
78 ********************************************************************************
80 SUBR O$LA TYPE A COMPLETE LINE WITH CR/LF, HEADING ETC.
81 SUBR O$LH INITIALISE HEADING
82 SUBR O$LP,T1 TYPE A LINE, NO CR
83 SUBR O$LC,T20 RETURN THE CARRIAGE
84 SUBR O$LF,T30 ADVANCE TO NEXT LINE
85 SUBR O$LE,FF EJECT PAGE
87 SUBR O$LSK1,SKP1 EMPTY LINES BETWEEN TOP OF PAGE AND HEADING
88 SUBR O$LSK2,SKP2 EMPTY LINES BETWEEN HEADING AND MAIN TEXT
89 SUBR O$LLPP,LPP PURE TEXT LINES PER PAGE
90 SUBR O$LRS,RS DISTANCE FROM PAGE NUMBERING TO RIGHT MARGIN
92 ********************************************************************************
97 SKP1 DEC 1 EMPTY LINES BEFORE HEADING
98 SKP2 DEC 3 EMPTY LINES BETWEEN HEADING AND TEXT
99 LPP DEC 60 DATA LINES PER PAGE (WITHOUT HEADING ETC.)
100 LNW DEC 60 LINE LENGTH IN 2-CHAR WORDS
101 RS DEC 1 RIGHT DISTANCE FOR PAGE NUMBERING (2-CHAR WORDS)
105 LDA* O$LA BUFFER ADDRESS
107 LDA LINE LEFT LINE COUNTER
108 SZE LINES LEFT ON PAGE?
109 JMP PGOK YES, JUMP AWAY
110 JST FF CALL FORM FEED ROUTINE
111 PGOK LDA LPP LINES PER PAGE
113 CAS LINES ARE WE ON THE FIRST LINE?
114 JMP *+2 NO, WE ARE NOT.
115 JST NP MAKE HEADER, SPACING ETC.
117 IRS LINE BUMP COUNTER
118 NOP WE DON'T CONTROL THAT HERE ANYMORE
119 JST T1 PRINT THE LINE
120 LBUF DAC ** ADDRESS OF LINE BUFFER
121 JST T20 CARRIAGE RETURN
123 IRS O$LA MAKE RETURN ADDRESS
127 O$LH DAC ** INIT HEADING
129 STA P1 POINTER TO SOURCE
131 STA P2 POINTER TO TARGET
141 LDA LPP LINES PER PAGE
143 STA LINE THE LINE COUNTER
144 IRS O$LH ADJUST ADDRESS
146 STA LN1 CLEAR PAGE NUMBERING
147 STA LN2 CLEAR PAGE NUMBERING
148 STA LN3 CLEAR PAGE NUMBERING
153 NP DAC ** PREPARE NEW PAGE
154 LDA SKP1 SPACES BEFORE HEADING
155 SNZ SPACING REQUIRED?
156 JMP NHDS NO SPACE BEFORE HEADING
162 NHDS JST LNNR PREPARE LINE NUMBERING
164 HBUP DAC HBUF ADDRESS OF HEADER BUFFER
165 JST T20 CARRIAGE RETURN
167 LDA SKP2 NUMBER OF SPACES BEFORE TEXT
168 SNZ SPACING REQUIRED?
169 JMP NSPC NO, IT'S NOT.
172 SP1 JST T30 LINE FEED
173 IRS CNT DEC COUNTER, SKIP IF READY
183 XR DEC 0 THE CALLER'S X REGISTER
191 LINE DEC -40 NEG LINES LEFT ON PAGE
193 PGSP DAC PGS POINTER TO PGS
196 ************************************************************
200 STX XR SAVE CALLER'S INDEX REGISTER
217 LDX XR RESTORE CALLER'S INDEX REGISTER
262 * PRINT LINE NUMBER TO BUFFER
263 LNNR DAC ** INCREMENT LINE NUMBER, PUT TO BUFFER
264 JST LNR INCREMENT DIGIT
265 LN1 DEC 0 LEAST SIGNIFICAND DIGIT
266 JMP RDY NO CARRY, COUNTING READY
267 JST LNR INCREMENT DIGIT
268 LN2 DEC 0 SECOND DIGIT
269 JMP RDY NO CARRY, COUNTING READY
270 JST LNR INCREMENT DIGIT
271 LN3 DEC 0 THIRT DIGIT
273 RDY NOP OVERFLOW, BUT WHAT SHOULD WE DO?
276 LDA LN3 LEFTMOST VALUE (100)
283 LDA LN1 RIGHTMOST DIGIT (1)
284 ADD =48 ZERO CHARACTER
286 LDA LN2 MIDDLE VALUE (10)
289 STA PGS+4 STORE INTO POSITION
292 LDA HBP HEADER BUFFER ADDRESS
295 ADD ='40000 SET INDEX BIT
297 LDA PGSP PAGE NUMBER BUFFER ADDRESS
298 ADD =5 ADD PAGE NUMBERING LENGTH
299 ADD ='40000 SET INDEX BIT
310 MDG DAC ** MAKE DIGIT FROM A
313 LDA =32 IS ZERO->SPACE
315 NZ ADD =48 THE ZERO CHARACTER
319 LNR DAC ** DIGIT SERVICE
320 IRS* LNR INCREMENT DIGIT
321 LDA* LNR LOAD NEW VALUE OF DIGIT
322 SUB =10 TEST IF OVERFLOW
324 JMP NOFL NO, TAKE FIRST RETURN
325 STA* LNR YES, CLEAR DIGIT (A WAS ZERO)
326 IRS LNR TALLY RETURN ADDRESS
327 NOFL IRS LNR TALLY RETURN ADDRESS
330 FIN WRITE OUT LITERALS