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