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