128d3bae65348c352c68f8bb2f2c25c10141f764
[h316.git] / lib / iolib / src / o$al.asm
1 * (O$AL) - TYPING ROUTINES
2 *
3 *
4 * PROGRAM TITLE: O$AL (O$AL,O$AE,O$AH,O$AC,O$AF)
5 * ASR TYPING ROUTINES
6 *
7 * REVISIONS:
8 * 1.0 (05.02.2005) - FIRST STABLE VERSION
9 * 1.1 (10.02.2005) - ADDED FORGOTTEN ASR START SEQUENCE
10 * 1.2 (25.07.2005) - CORRECTED ASR START SEQUENCE
11 * 1.2.1 (27.07.2005) - RECORRECTED START SEQUENCE
12 * 1.3 (03.04.2006) - SOME SORTING TO GET IT SMALLER
13 *
14 * AUTHOR
15 *
16 * PHILIPP HACHTMANN
17 *
18 *
19 * PURPOSE
20 *
21 * ASR OUTPUT ROUTINES FOR LISTING
22 *
23 *
24 * RESTRICTIONS
25 *
26 * THESE ARE NOT THE ORIGINAL ROUTINES
27 *
28 *
29 * STORAGE
30 *
31 * 310 (OCTAL)
32 * 200 (DECIMAL)
33 *
34 *
35 *
36 **********************************************************************
37 SUBR O$AL,OSAL TYPE A COMPLETE LINE WITH CR/LF, HEADING ETC.
38 SUBR O$AH,OSAH INITIALISE HEADING
39 SUBR O$LL,OSAL TYPE A COMPLETE LINE WITH CR/LF, HEADING ETC.
40 SUBR O$HH,OSAH INITIALISE HEADING
41 SUBR O$AP,T1 TYPE A LINE, NO CR
42 SUBR O$AC,T20 RETURN THE CARRIAGE
43 SUBR O$AF,T30 ADVANCE TO NEXT LINE
44 SUBR O$AE,FF EJECT PAGE
45 *
46 SUBR O$A1,HDS EMPTY LINES BETWEEN TOP OF PAGE AND HEADING
47 SUBR O$A2,SPC EMPTY LINES BETWEEN HEADING AND MAIN TEXT
48 SUBR O$A3,PGS PURE TEXT LINES PER PAGE
49 SUBR O$A4,WIDH PURE TEXT LINES PER PAGE
50 SUBR O$A5,SFF SKIPS TO SIMULATE FORM FEED
51 **********************************************************************
52 REL RELOCATABLE MODE
53 *********************************************
54 *
55 OSAL DAC **
56 STX XR
57 LDA* OSAL BUFFER ADDRESS
58 STA BUF1 STORE FOR LATER USE
59 LDA LINE LINE COUNTER
60 SZE STILL LINES LEFT?
61 JMP PGOK NO NEW PAGE
62 JST FF
63 JST NP NEW PAGE REQUIRED
64 PGOK IRS LINE BUMP COUNTER
65 NOP
66 JST T1 PRINT THE LINE
67 BUF1 DAC ** ADDRESS OF LINE BUFFER
68 JST T20 CARRIAGE RETURN
69 JST T30 LINE FEED
70 IRS OSAL MAKE RETURN ADDRESS
71 LDX XR
72 JMP* OSAL RETURN
73 *
74 *
75 XR DEC 0 SAVED X REGISTER
76 OSAH DAC ** INIT HEADING
77 STX XR
78 LDA* OSAH
79 STA P1 POINTER TO SOURCE
80 LDA HBUP
81 STA P2 POINTER TO TARGET
82 LDA WIDH LINE LENGTH
83 TCA COMPLEMENT
84 STA CNT
85 HL1 LDA* P1
86 STA* P2
87 IRS P1
88 IRS P2
89 IRS CNT READY?
90 JMP HL1 NO
91 JST NP INIT PAGE
92 IRS OSAH ADJUST ADDRESS
93 LDX XR
94 JMP* OSAH RETURN
95 ********************************************************************************
96 *
97 *
98 PGS DEC 50 DATA LINES PER PAGE (WITHOUT HEADING ETC.)
99 HDS DEC 1 EMPTY LINES BEFORE HEADING
100 NP DAC ** PREPARE NEW PAGE
101 LDA PGS LOAD LINES PER PAGE
102 TCA NEGATE
103 STA LINE STORE PAGE COUNTER
104 LDA HDS
105 SNZ
106 JMP NHDS NO SPACE BEFORE HEADING
107 TCA
108 STA CNT
109 S1 JST T30
110 IRS CNT
111 JMP S1
112 NHDS JST T1 TYPE HBUF
113 HBUP DAC HBUF ADDRESS OF HEADER BUFFER
114 JST T20 CARRIAGE RETURN
115 LDA SPC NUMBER OF SPACES BEFORE TEXT
116 TCA NEGATE
117 STA CNT TO COUNTER
118 SP1 JST T30 LINE FEED
119 IRS CNT DEC COUNTER, SKIP IF READY
120 JMP SP1 NOT READY
121 JMP* NP
122 SPC DEC 2 EMPTY LINES BETWEEN HEADING AND TEXT
123 *
124 ********************************************************************************
125 *
126 **** FORM FEED ROUTINE
127 SFF DEC 4 SKIPS TO SIMULATE FORM FEED
128 FF DAC **
129 JST ASUP OUTPUT MODE
130 LDA SFF
131 TCA
132 STA CNT
133 LDA =10
134 FF1 OTA 4 SEND LINE FEED
135 JMP *-1 WAIT
136 IRS CNT
137 JMP FF1
138 JMP* FF RETURN
139 *
140 *
141 * ASR START ROUTINE
142 ASUP DAC **
143 SKS '104
144 JMP *-1
145 OCP '104
146 JMP* ASUP
147 *
148 *
149 CNT DEC 0
150 HBUF BCI 20,
151 BCI 20,
152 BCI 20,
153 P1 DEC 0 POINTER 1
154 P2 DEC 0 POINTER 2
155 LINE DEC -40 NEG LINES LEFT ON PAGE
156 *
157 *
158 ********************************************************************************
159 *
160 *** FROM HERE COPIED ORIGINAL HONEYWELL CODE!
161 *
162 WIDH DEC 36 (2-CHAR) WORDS PER LINE
163 CC4 OCT 40000
164 T1 DAC **
165 STX XR
166 JST ASUP START TTY
167 LDA* T1
168 ADD WIDH
169 ADD CC4
170 STA T6
171 IRS T1
172 LDA WIDH
173 TCA
174 STA 0
175 T3 LDA* T6
176 CAS CS1
177 JMP *+2
178 *
179 JMP T8
180 T4 JST T14
181 IRS 0
182 JMP T3
183 LDX XR
184 JMP* T1
185 T6 *** **
186 *
187 T8 LDA 0
188 STA T12
189 T10 IRS 0
190 JMP *+2
191 JMP* T1
192 LDA* T6
193 CAS CS1
194 JMP *+2
195 JMP T10
196 LDA T12
197 STA 0
198 LDA CS1
199 JMP T4
200 CS1 OCT 120240
201 T12 *** **
202 *
203 T14 DAC **
204 NOP
205 NOP
206 NOP
207 LRL 8
208 OTA 4
209 JMP *-1
210 LLL 8
211 OTA 4
212 JMP *-1
213 JMP* T14
214 *
215 *
216 ********************************************************************************
217 *
218 C13 DEC 13
219 T20 DAC **
220 JST ASUP START TTY
221 LDA C13 CARRIAGE RETURN
222 OTA 4
223 JMP *-1
224 OTA 4
225 JMP *-1
226 JMP* T20
227 *
228 ********************************************************************************
229 *
230 T30 DAC **
231 JST ASUP START TTY
232 LDA =10 LINE FEED
233 OTA 4
234 JMP *-1
235 JMP* T30
236 *
237 *
238 FIN WRITE OUT LITERALS
239 *
240 * PUH.....
241 END (O$AL)
242