d3cc23c1c678ec98116aa89ab8ac48a3c8094b48
[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 *** AB HIER ABGESCHRIEBENER CODE!
161 WIDH DEC 36 (2-CHAR) WORDS PER LINE
162 CC4 OCT 40000
163 T1 DAC **
164 STX XR
165 JST ASUP START TTY
166 LDA* T1
167 ADD WIDH
168 ADD CC4
169 STA T6
170 IRS T1
171 LDA WIDH
172 TCA
173 STA 0
174 T3 LDA* T6
175 CAS CS1
176 JMP *+2
177 *
178 JMP T8
179 T4 JST T14
180 IRS 0
181 JMP T3
182 LDX XR
183 JMP* T1
184 T6 *** **
185 *
186 T8 LDA 0
187 STA T12
188 T10 IRS 0
189 JMP *+2
190 JMP* T1
191 LDA* T6
192 CAS CS1
193 JMP *+2
194 JMP T10
195 LDA T12
196 STA 0
197 LDA CS1
198 JMP T4
199 CS1 OCT 120240
200 T12 *** **
201 *
202 T14 DAC **
203 NOP
204 NOP
205 NOP
206 LRL 8
207 OTA 4
208 JMP *-1
209 LLL 8
210 OTA 4
211 JMP *-1
212 JMP* T14
213 *
214 *
215 ********************************************************************************
216 *
217 C13 DEC 13
218 T20 DAC **
219 JST ASUP START TTY
220 LDA C13 CARRIAGE RETURN
221 OTA 4
222 JMP *-1
223 OTA 4
224 JMP *-1
225 JMP* T20
226 *
227 ********************************************************************************
228 *
229 T30 DAC **
230 JST ASUP START TTY
231 LDA =10 LINE FEED
232 OTA 4
233 JMP *-1
234 JMP* T30
235 *
236 *
237 FIN WRITE OUT LITERALS
238 *
239 * PUH.....
240 END (O$AL)
241