Initial revision
[h316.git] / lib / iolib / src / o$pl.asm
1 * (O$PL)
2 *
3 *
4 * COMPUTER: H316
5 *
6 * PROGRAM CATEGORY: I/O LIBRARY
7 *
8 * PROGRAM TITLE: O$PL (O$PH)
9 * PAPER TAPE LISTING ROUTINES
10 *
11 * REVISIONS:
12 * 1.0 (2005-02.04)
13 *
14 * AUTHOR
15 *
16 * PHILIPP HACHTMANN
17 *
18 *
19 * PURPOSE
20 *
21 * PUT LISTINGS ONTO PAPER TAPE. USAGE LIKE O$LA AND O$LH
22 *
23 *
24 *
25 * STORAGE
26 *
27 * 266 (OCTAL)
28 * 182 (DECIMAL)
29 *
30 *
31 * USE
32 *
33 * THE LIBRARY ROUTINES ARE FOR GENERAL PURPOSE.
34 *
35 **********************************************************************
36 SUBR O$PL TYPE A COMPLETE LINE WITH CR/LF, HEADING ETC.
37 SUBR O$PH INITIALISE HEADING
38 SUBR O$PP,T1 TYPE A LINE, NO CR
39 SUBR O$PC,T20 RETURN THE CARRIAGE
40 SUBR O$PF,T30 ADVANCE TO NEXT LINE
41 SUBR O$PE,SNP PUNCH FORM FEED
42 *
43 SUBR O$P1,HDS EMPTY LINES BETWEEN TOP OF PAGE AND HEADING
44 SUBR O$P2,SPC EMPTY LINES BETWEEN HEADING AND MAIN TEXT
45 SUBR O$P3,PGS PURE TEXT LINES PER PAGE
46 **********************************************************************
47 REL RELOCATABLE
48 *********************************************
49 * CONFIGURATION
50 HDS DEC 1 EMPTY LINES BEFORE HEADING
51 SPC DEC 5 EMPTY LINES BETWEEN HEADING AND TEXT
52 PGS DEC 50 DATA LINES PER PAGE (WITHOUT HEADING ETC.)
53 *
54 *
55 O$PL DAC **
56 LDA* O$PL BUFFER ADDRESS
57 STA BUF1 STORE FOR LATER USE
58 OCP 2 ACTIVATE PUNCH
59 IRS LINE COUNT DOWN LEFT LINES ON PAGE
60 JMP PGOK NO NEW PAGE
61 LDA =12 FORM FEED
62 OTA 2 SEND FORMFEED
63 JMP *-1 WAIT
64 JST NP NEW PAGE REQUIRED
65 PGOK JST T1 PRINT THE LINE
66 BUF1 DAC ** ADDRESS OF LINE BUFFER
67 JST T20 CARRIAGE RETURN
68 JST T30 LINE FEED
69 IRS O$PL MAKE RETURN ADDRESS
70 JMP* O$PL RETURN
71 *
72 *
73 O$PH DAC ** INIT HEADING
74 LDA* O$PH
75 STA P1 POINTER TO SOURCE
76 LDA HBUP
77 STA P2 POINTER TO TARGET
78 LDA =-60 LINE LENGTH
79 STA CNT
80 HL1 LDA* P1
81 STA* P2
82 IRS P1
83 IRS P2
84 IRS CNT READY?
85 JMP HL1 NO
86 JST NP INIT PAGE
87 IRS O$PH ADJUST ADDRESS
88 JMP* O$PH RETURN
89 **********************************************++
90 *
91 NP DAC ** PREPARE NEW PAGE
92 LDA PGS LOAD LINES PER PAGE
93 TCA NEGATE
94 STA LINE STORE PAGE COUNTER
95 LDA HDS
96 SNZ
97 JMP NHDS NO SPACE BEFORE HEADING
98 TCA
99 STA CNT
100 S1 JST T30
101 IRS CNT
102 JMP S1
103 NHDS JST T1 TYPE HBUF
104 HBUP DAC HBUF ADDRESS OF HEADER BUFFER
105 JST T20 CARRIAGE RETURN
106 LDA SPC NUMBER OF SPACES BEFORE TEXT
107 TCA NEGATE
108 STA CNT TO COUNTER
109 SP1 JST T30 LINE FEED
110 IRS CNT DEC COUNTER, SKIP IF READY
111 JMP SP1 NOT READY
112 JMP* NP
113 *
114 ***********************************++
115 *
116 **** FORM FEED ROUTINE
117 SNP LDA =-1
118 STA LINE
119 OCP 2 ACTIVATE PUNCH
120 LDA =12 FORM FEED
121 OTA 2 SEND FORMFEED
122 JMP *-1 WAIT
123 JMP* SNP RETURN
124 ********
125 *
126 *
127 CNT DEC 0
128 HBUF BCI 20,
129 BCI 20,
130 BCI 20,
131 P1 DEC 0 POINTER 1
132 P2 DEC 0 POINTER 2
133 LINE DEC -40 NEG LINES LEFT ON PAGE
134 *
135 *
136 ************************************************************
137 *
138 *** AB HIER ABGESCHRIEBENER CODE!
139 T1 DAC **
140 LDA* T1
141 ADD T5
142 STA T6
143 IRS T1
144 LDA =-60
145 STA 0
146 T3 LDA* T6
147 CAS ='120240
148 JMP *+2
149 *
150 JMP T8
151 T4 JST T14
152 IRS 0
153 JMP T3
154 JMP* T1
155 T5 DAC 60,1
156 T6 *** **
157 *
158 T8 LDA 0
159 STA T12
160 T10 IRS 0
161 JMP *+2
162 JMP* T1
163 LDA* T6
164 CAS ='120240
165 JMP *+2
166 JMP T10
167 LDA T12
168 STA 0
169 LDA ='120240
170 JMP T4
171 T12 *** **
172 *
173 T14 DAC **
174 OCP 2 ACTIVATE PUNCH
175 NOP
176 NOP
177 LRL 8
178 OTA 2
179 JMP *-1
180 LLL 8
181 OTA 2
182 JMP *-1
183 JMP* T14
184 *
185 *
186 *************************************************
187 *
188 T20 DAC **
189 LDA ='6400 CR+NULL
190 JST T14
191 JMP* T20
192 *
193 *******************************************************************************
194 *
195 T30 DAC **
196 LDA ='5000 LF+NULL
197 JST T14
198 JMP* T30
199 *
200 FIN WRITE OUT LITERALS
201 *
202 * PUH.....
203 *
204 END