c08e22bb |
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: |
1cdd230d |
8 | * 1.0 (5.2.2005) - FIRST STABLE VERSION |
c3e0f81a |
9 | * 1.1 (10.2.2005) - ADDED FORGOTTEN ASR START SEQUENCE |
c08e22bb |
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 | * |
1cdd230d |
100 | * |
c08e22bb |
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 | * |
c3e0f81a |
139 | * ASR START ROUTINE |
140 | ASUP DAC ** |
141 | SKS '104 |
142 | JMP *-1 |
143 | OCP '104 |
144 | JMP* ASUP |
145 | * |
146 | * |
c08e22bb |
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 |
c3e0f81a |
162 | JST ASUP START TTY |
c08e22bb |
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 ** |
c3e0f81a |
214 | JST ASUP START TTY |
c08e22bb |
215 | LDA =13 |
216 | OTA 4 |
217 | JMP *-1 |
218 | OTA 4 |
219 | JMP *-1 |
220 | JMP* T20 |
221 | * |
222 | ******************************************************************************** |
223 | * |
224 | T30 DAC ** |
c3e0f81a |
225 | JST ASUP START TTY |
c08e22bb |
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 | |