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