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