c08e22bb |
1 | * (I$PA) |
2 | * |
3 | * |
4 | * COMPUTER: H316 |
5 | * |
6 | * PROGRAM CATEGORY: I/O LIBRARY |
7 | * |
8 | * PROGRAM TITLE: I$PA (I$PI) |
9 | * |
10 | * |
11 | * REVISIONS: |
12 | * 0.1 (2005-02.04) |
2bb87817 |
13 | * 0.2 (2006-12.14) - ADDED REGISTER SAVE INSTRUCTIONS |
c08e22bb |
14 | * |
15 | * AUTHOR |
16 | * |
17 | * PHILIPP HACHTMANN |
18 | * |
19 | * |
20 | * PURPOSE |
21 | * |
9ae5cfca |
22 | * TO READ ASCII SOURCE TEXT FROM HIGH SPEED PAPER TAPE READER |
c08e22bb |
23 | * |
24 | * |
25 | * RESTRICTIONS |
26 | * |
27 | * NOT ALL FUNCTIONALITY MAY BE COMPLETELY RECOVERED BECAUSE |
28 | * OF MISSING INFORMATION. |
29 | * |
30 | * STORAGE |
31 | * |
32 | * 176 (OCTAL) |
33 | * 126 (DECIMAL) |
34 | * |
35 | * |
36 | * USE |
37 | * |
38 | * I$PA - READ LINE OF SOURCE CODE USING TAB CHARACTERS |
39 | * CALL I$PA |
40 | * DAC (BUFFER ADDRESS) |
41 | * |
f2cabac1 |
42 | * I$PI - CONFIGURE I$PA |
43 | * CALL I$PI |
c08e22bb |
44 | * DEC (NUMBER OF WORDS IN DATA BUFFER) |
45 | * DEC (NUMBER OF TABS IN FOLLOWING TABLE, IF ANY) |
46 | * DEC TAB (1) |
47 | * DEC TAB (2) |
48 | * . . |
49 | * . . |
50 | * . . |
51 | * DEC TAB (N) |
52 | * |
8acc03e2 |
53 | * NOTICE |
54 | * |
55 | * THE CHARACTER SEQUENCE 'ABS' HAS BEEN REPLACED BY 'DBS' BECAUSE THE |
56 | * ASSEMBLER SHOWED STRANGE BEHAVIOUR |
57 | * |
c08e22bb |
58 | ******************************************************************************** |
59 | * |
60 | * EXPORTED LABELS |
61 | SUBR I$PA |
62 | SUBR I$PI |
63 | * |
64 | * |
65 | * |
66 | REL RELOCATEABLE MODE |
67 | * |
68 | * |
69 | * SETUP READ ROUTINE |
70 | * |
71 | I$PI DAC ** SETUP READ ROUTINE |
2bb87817 |
72 | STA SRA SAVE A REGISTER |
73 | * |
c08e22bb |
74 | LDA* I$PI WORD COUNT PARAMETER |
75 | LGL 1 LEFT SHIFT 1 |
76 | STA LIM BUFFER LIMIT |
77 | * |
78 | IRS I$PI TALLY RETURN ADDRESS |
79 | LDA* I$PI TAB COUNT PARAMETER |
80 | STA NTAB TAB COUNT |
81 | * |
82 | LDA I$PI RETURN ADDRESS |
83 | AOA TALLY BY 1 |
84 | STA TABL TAB TABLE LINK |
85 | * |
86 | ADD NTAB TAB COUNT |
87 | STA I$PI RETURN ADDRESS |
2bb87817 |
88 | LDA SRA |
c08e22bb |
89 | JMP* I$PI EXIT |
90 | * |
91 | * |
92 | * READ ROUTINE |
93 | * |
94 | I$PA DAC ** READ ROUTINE |
2bb87817 |
95 | STA SRA SAVE A REGISTER |
96 | IAB |
97 | STA SRB SAVE B REGISTER |
98 | STX SRI SAVE INDEX REGISTER |
99 | * |
c08e22bb |
100 | LDA* I$PA BUFFER ADDRESS PARAMETER |
101 | LGL 1 LEFT SHIFT 1 |
102 | STA BUFL BUFFER LINK |
103 | * |
104 | RSTR LDA =1 POSITION 1 |
105 | STA CP CHARACTER POSITION |
106 | * |
107 | STSP LDA ='240 SPACE |
108 | JST NSRT INSERT IN CHARACTER POSITION |
109 | JMP STSP LOOP AGAIN |
110 | * |
111 | LDA =1 POSITION 1 |
112 | SCP STA CP CHARACTER POSITION |
113 | * |
114 | * INPUT AND TEST FOR SPECIAL CODES |
115 | READ NOP |
116 | RES LDX =-4 INDEX REGISTER = -4 |
117 | JST INPT READ ONE CHARACTER |
118 | * |
119 | CAS ='337 LEFT ARROW? |
120 | SKP NO, SKIP |
121 | JMP DLT YES, DELETE LINE |
122 | * |
123 | ISIT CAS IGNT+4,1 IGNORE TABLE |
124 | SKP NO, SKIP |
125 | JMP RES YES, IGNORE IT |
126 | * |
127 | IRS 0 TALLY INDEX REGISTER |
128 | JMP ISIT LOOP AGAIN |
129 | * |
130 | CAS ='215 CARRIAGE RETURN? |
131 | SKP NO, SKIP |
132 | JMP EXIT YES, END-OF-RECORD |
133 | * |
134 | CAS ='334 BACKSLASH? |
135 | SKP NO, SKIP |
136 | JMP TAB YES, TAB |
137 | * |
138 | CAS ='203 END-OF-TEXT? |
139 | SKP NO, SKP |
140 | JMP EXIT+1 YES, ETX |
141 | * |
142 | * NO ACTION CHARACTER |
143 | NAC JST NSRT INSERT IN CHARACTER POSITION |
144 | JMP READ BUFFER NOT FULL, LOOP AGAIN |
145 | JMP READ BUFFER NOW FULL, LOOP AGAIN |
146 | * |
147 | * TAB ROUTINE |
148 | TAB CRA CLEAR A-REGISTER |
149 | SUB NTAB TAB COUNT |
150 | SNZ NZ, SKIP |
18e3fabb |
151 | JMP NOTB Z, NO TABS |
c08e22bb |
152 | * |
153 | STA 0 INDEX REGISTER |
154 | LDA TABL TAB TABLE LINK |
155 | STA TABI TABLE POINTER |
156 | * |
157 | ITAB LDA* TABI TABLE POINTER |
158 | IRS TABI TALLY TABLE POINTER |
159 | CAS CP CHARACTER POSITION |
160 | JMP SCP GR, SET NEW CHARACTER POSITION |
161 | NOP EQ, LOOP AGAIN |
162 | IRS 0 LE, TALLY INDEX REGISTER |
163 | JMP ITAB LOOP AGAIN |
164 | * |
165 | NOTB LDA ='240 SPACE |
166 | JMP NAC RETURN TO INSERT CHARACTER |
167 | * |
168 | * INSERT IN CHARACTER POSITION |
169 | NSRT DAC ** INSERT IN CHARACTER POSITION |
170 | LRR 8 RIGHT ROTATE BOTH 8 |
171 | LDA CP CHARACTER POSITION |
172 | CAS LIM BUFFER LIMIT |
173 | JMP DNA GR, DO NOT ACCEPT |
174 | NOP EQ, ACCEPT AND PACK |
175 | * LE, ACCEPT AND PACK |
176 | SUB =1 SUBSTRACT 1 |
177 | ADD BUFL BUFFER LINK |
178 | LGR 1 RIGHT SHIFT 1 |
179 | STA TABI TABLE POINTER |
180 | * |
181 | LDA* TABI TABLE POINTER |
182 | SSC C SET, SKIP |
183 | IAB C RESET, INTERCHANGE A AND B |
184 | LGR 8 SHIFT RIGHT 8 |
185 | LLR 8 LEFT ROTATE BOTH 8 |
186 | STA* TABI TABLE POINTER |
187 | IRS CP TALLY CHARACTER POSITION |
188 | JMP* NSRT EXIT |
189 | * |
190 | DNA IRS NSRT TALLY RETURN ADDRESS |
191 | JMP* NSRT EXIT |
192 | * |
193 | * LEFT-ARROW ROUTINE |
194 | DLT JST INPT READ ONE CHARACTER |
195 | ERA ='215 CARRIAGE RETURN |
196 | SZE Z, SKIP |
197 | JMP DLT NZ, LOOP AGAIN |
198 | * |
199 | JMP RSTR RESTART |
200 | * |
201 | * RETURN TO CALLING PROGRAM |
202 | EXIT IRS I$PA TALLY RETURN ADDRESS |
203 | IRS I$PA TALLY RETURN ADDRESS |
204 | * |
2bb87817 |
205 | LDX SRI SAVED INDEX REGISTER |
206 | LDA SRB RESTORE B REGISTER |
207 | IAB |
208 | LDA SRA RESTORE A REGISTER |
c08e22bb |
209 | JMP* I$PA EXIT |
210 | * |
211 | * CHARACTER INPUT ROUTINE |
212 | INPT DAC ** |
213 | OCP 1 START READER |
214 | INA '1001 READ ONE CHARACTER |
215 | JMP *-1 WAIT FOR FINISH |
216 | OCP '101 TURN OFF READER |
217 | * |
218 | ANA ='177 BITS 10-16 |
219 | ERA ='200 TOGGLE BIT 9 |
220 | JMP* INPT RETURN |
221 | * |
222 | * |
223 | * VARIABLES AND CONSTANTS |
224 | * |
2bb87817 |
225 | SRI BSZ 1 SAVED INDEX REGISTER |
226 | SRA BSZ 1 SAVED A REGISTER |
227 | SRB BSZ 1 SAVED B REGISTER |
c08e22bb |
228 | BUFL BSZ 1 BUFFER LINK |
229 | CP BSZ 1 CHARACTER POSITION |
230 | TABI BSZ 1 TABLE POINTER |
231 | * |
232 | * CHANGEABLE PARAMETERS |
233 | LIM DEC 80 BUFFER LIMIT (DEFAULT IS 80) |
234 | NTAB DEC 4 TAB COUNT (DEFAULT IS 4) |
18e3fabb |
235 | TABL DAC TABS TAB TABLE LINK (DEFAULT IS TABS) |
c08e22bb |
236 | * |
237 | * DAP-16 TAB SETTINGS |
18e3fabb |
238 | TABS DEC 6 OPERATION FIELD |
c08e22bb |
239 | DEC 12 VARIABLE FIELD |
240 | DEC 30 COMMENTS FIELD |
241 | DEC 73 IDENTIFICATION FIELD |
242 | * |
243 | * IGNORABLE CHARACTERS |
244 | IGNT OCT 200 BLANK TAPE |
245 | OCT 212 LINE FEED |
246 | OCT 223 X-OFF |
247 | OCT 377 RUB-OUT |
248 | * |
249 | * LITERALS |
250 | FIN |
251 | * |
252 | * |
253 | END END OF I$PA 4.2.2005 |