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