6 * PROGRAM CATEGORY: I/O LIBRARY
8 * PROGRAM TITLE: I$PA (I$PI)
13 * 0.2 (2006-12.14) - ADDED REGISTER SAVE INSTRUCTIONS
22 * TO READ ASCII SOURCE TEXT FROM HIGH SPEED PAPER TAPE READER
27 * NOT ALL FUNCTIONALITY MAY BE COMPLETELY RECOVERED BECAUSE
28 * OF MISSING INFORMATION.
38 * I$PA - READ LINE OF SOURCE CODE USING TAB CHARACTERS
40 * DAC (BUFFER ADDRESS)
42 * I$PI - CONFIGURE I$PA
44 * DEC (NUMBER OF WORDS IN DATA BUFFER)
45 * DEC (NUMBER OF TABS IN FOLLOWING TABLE, IF ANY)
55 * THE CHARACTER SEQUENCE 'ABS' HAS BEEN REPLACED BY 'DBS' BECAUSE THE
56 * ASSEMBLER SHOWED STRANGE BEHAVIOUR
58 ********************************************************************************
71 I$PI DAC ** SETUP READ ROUTINE
72 STA SRA SAVE A REGISTER
74 LDA* I$PI WORD COUNT PARAMETER
78 IRS I$PI TALLY RETURN ADDRESS
79 LDA* I$PI TAB COUNT PARAMETER
82 LDA I$PI RETURN ADDRESS
84 STA TABL TAB TABLE LINK
87 STA I$PI RETURN ADDRESS
94 I$PA DAC ** READ ROUTINE
95 STA SRA SAVE A REGISTER
97 STA SRB SAVE B REGISTER
98 STX SRI SAVE INDEX REGISTER
100 LDA* I$PA BUFFER ADDRESS PARAMETER
104 RSTR LDA =1 POSITION 1
105 STA CP CHARACTER POSITION
108 JST NSRT INSERT IN CHARACTER POSITION
112 SCP STA CP CHARACTER POSITION
114 * INPUT AND TEST FOR SPECIAL CODES
116 RES LDX =-4 INDEX REGISTER = -4
117 JST INPT READ ONE CHARACTER
119 CAS ='337 LEFT ARROW?
121 JMP DLT YES, DELETE LINE
123 ISIT CAS IGNT+4,1 IGNORE TABLE
125 JMP RES YES, IGNORE IT
127 IRS 0 TALLY INDEX REGISTER
130 CAS ='215 CARRIAGE RETURN?
132 JMP EXIT YES, END-OF-RECORD
138 CAS ='203 END-OF-TEXT?
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
148 TAB CRA CLEAR A-REGISTER
154 LDA TABL TAB TABLE LINK
155 STA TABI TABLE POINTER
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
162 IRS 0 LE, TALLY INDEX REGISTER
166 JMP NAC RETURN TO INSERT CHARACTER
168 * INSERT IN CHARACTER POSITION
169 NSRT DAC ** INSERT IN CHARACTER POSITION
170 LRR 8 RIGHT ROTATE BOTH 8
171 LDA CP CHARACTER POSITION
173 JMP DNA GR, DO NOT ACCEPT
174 NOP EQ, ACCEPT AND PACK
175 * LE, ACCEPT AND PACK
179 STA TABI TABLE POINTER
181 LDA* TABI TABLE POINTER
183 IAB C RESET, INTERCHANGE A AND B
185 LLR 8 LEFT ROTATE BOTH 8
186 STA* TABI TABLE POINTER
187 IRS CP TALLY CHARACTER POSITION
190 DNA IRS NSRT TALLY RETURN ADDRESS
194 DLT JST INPT READ ONE CHARACTER
195 ERA ='215 CARRIAGE RETURN
197 JMP DLT NZ, LOOP AGAIN
201 * RETURN TO CALLING PROGRAM
202 EXIT IRS I$PA TALLY RETURN ADDRESS
203 IRS I$PA TALLY RETURN ADDRESS
205 LDX SRI SAVED INDEX REGISTER
206 LDA SRB RESTORE B REGISTER
208 LDA SRA RESTORE A REGISTER
211 * CHARACTER INPUT ROUTINE
214 INA '1001 READ ONE CHARACTER
215 JMP *-1 WAIT FOR FINISH
216 OCP '101 TURN OFF READER
219 ERA ='200 TOGGLE BIT 9
223 * VARIABLES AND CONSTANTS
225 SRI BSZ 1 SAVED INDEX REGISTER
226 SRA BSZ 1 SAVED A REGISTER
227 SRB BSZ 1 SAVED B REGISTER
228 BUFL BSZ 1 BUFFER LINK
229 CP BSZ 1 CHARACTER POSITION
230 TABI BSZ 1 TABLE POINTER
232 * CHANGEABLE PARAMETERS
233 LIM DEC 80 BUFFER LIMIT (DEFAULT IS 80)
234 NTAB DEC 4 TAB COUNT (DEFAULT IS 4)
235 TABL DAC TABS TAB TABLE LINK (DEFAULT IS TABS)
237 * DAP-16 TAB SETTINGS
238 TABS DEC 6 OPERATION FIELD
239 DEC 12 VARIABLE FIELD
240 DEC 30 COMMENTS FIELD
241 DEC 73 IDENTIFICATION FIELD
243 * IGNORABLE CHARACTERS
244 IGNT OCT 200 BLANK TAPE
253 END END OF I$PA 4.2.2005