*** empty log message ***
[h316.git] / lib / iolib / src / i$pa.asm
CommitLineData
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*
70I$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*
90I$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*
96RSTR LDA =1 POSITION 1
97 STA CP CHARACTER POSITION
98*
99STSP LDA ='240 SPACE
100 JST NSRT INSERT IN CHARACTER POSITION
101 JMP STSP LOOP AGAIN
102*
103 LDA =1 POSITION 1
104SCP STA CP CHARACTER POSITION
105*
106* INPUT AND TEST FOR SPECIAL CODES
107READ NOP
108RES 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*
115ISIT 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
135NAC 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
140TAB CRA CLEAR A-REGISTER
141 SUB NTAB TAB COUNT
142 SNZ NZ, SKIP
18e3fabb 143 JMP NOTB Z, NO TABS
c08e22bb 144*
145 STA 0 INDEX REGISTER
146 LDA TABL TAB TABLE LINK
147 STA TABI TABLE POINTER
148*
149ITAB 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*
157NOTB LDA ='240 SPACE
158 JMP NAC RETURN TO INSERT CHARACTER
159*
160* INSERT IN CHARACTER POSITION
161NSRT 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*
182DNA IRS NSRT TALLY RETURN ADDRESS
183 JMP* NSRT EXIT
184*
185* LEFT-ARROW ROUTINE
186DLT 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
194EXIT 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
201INPT 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*
214SIR BSZ 1 STORED INDEX REGISTER
215BUFL BSZ 1 BUFFER LINK
216CP BSZ 1 CHARACTER POSITION
217TABI BSZ 1 TABLE POINTER
218*
219* CHANGEABLE PARAMETERS
220LIM DEC 80 BUFFER LIMIT (DEFAULT IS 80)
221NTAB DEC 4 TAB COUNT (DEFAULT IS 4)
18e3fabb 222TABL DAC TABS TAB TABLE LINK (DEFAULT IS TABS)
c08e22bb 223*
224* DAP-16 TAB SETTINGS
18e3fabb 225TABS DEC 6 OPERATION FIELD
c08e22bb 226 DEC 12 VARIABLE FIELD
227 DEC 30 COMMENTS FIELD
228 DEC 73 IDENTIFICATION FIELD
229*
230* IGNORABLE CHARACTERS
231IGNT 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