software: Added more and more
[pdp8.git] / sw / os8 / v3d / sources / system / dectapes / dectape3 / CR8E.PA
CommitLineData
7af5ad59
PH
1/3 CARD READER FOR BUILD
2/
3/
4/
5/
6/
7/
8/
9/
10/
11/COPYRIGHT (C) 1974 BY DIGITAL EQUIPMENT CORPORATION
12/
13/
14/
15/
16/
17/
18/
19/
20/
21/
22/THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE
23/AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
24/CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
25/FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT.
26/
27/THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER
28/UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED
29/(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH
30/SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL.
31/
32/DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
33/OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
34/DIGITAL.
35/
36/
37/
38/
39/
40/
41/
42/
43/
44/
45\f *0
46 -1
47DEVICE CR8E;DEVICE CDR;2030;4000;ZBLOCK 2
48
49 CDRVERSION="C&77
50
51/V3 CHANGES:
52
53/1. VERSION # IS NOW 1
54/2. FIXED BUG FOR CARDS WITH ODD NUMBER OF COLUMNS
55/3. CARD DONE FLAG IS CLEARED AT END
56
57 *200
58
59RCSF=6631
60RCRA=6632
61RCSP=6671
62RCSE=6672
63RCRD=6674
64
65CDR, CDRVERSION /ENTRY POINT RELATIVE ZERO
66CDR770, 7700 /"SMA CLA" CLEARS THE AC
67CDRTMP, 0 /LESS THAN 400 - PROTECTS THE "SMA CLA"
68 JMP CDRSET /INITIALIZATION - BECOMES "RDF"
69 TAD CDRCIF /FORM "CIF CDF N" TO CALLING FIELDS
70 DCA CDRXIT /SAVE CALLING FIELDS
71 TAD CDRCCF-1
72 DCA CDRXIT-1 /RESTORE THE "ISZ CDR"
73 TAD I CDR /GET FUNCTION WORD
74 AND CDR070 /GET BUFFER FIELD BITS
75 TAD CDRCCF /MAKE A "CDF N"
76 DCA CDBCDF /SAVE IT IN THE GET CHAR LOOP
77 TAD I CDR /GET FUNCTION WORD AGAIN
78 ISZ CDR
79 SPA /IS IT A WRITE FUNCTION?
80 JMP CDRERR /YES - HARD ERROR
81 AND CDR770 /GET COUNT BITS
82 CIA
83 DCA CDRWC /SAVE WORD COUNT (DIVIDED BY 2)
84 TAD I CDR /GET BUFFER ADDRESS
85 DCA CDRCA /AND SAVE IT
86 ISZ CDR /THE BLOCK NUMBER IS IGNORED
87CDRCCF, CDF /WE ARE IN FIELD 0
88 DCA I CDRIN2 /RESET ^Z FLAG TO ZERO
89CDRLP, JMS I CDRIN4 /GET A CHARACTER
90 DCA CDRTM1 /DATA FIELD STILL ZERO ON RETURN!
91 JMS I CDRIN4 /GET NEXT CHARACTER
92 DCA CDRTMP /AND SAVE IT
93 JMS I CDRIN4 /GET NEXT CHARACTER
94 RTL
95 RTL /GET THE FIRST FOUR BITS OF IT
96 DCA CDRTM2 /SAVE THE REST FOR LATER
97 TAD CDRTM2
98 AND CDR740 /ONLY 4 BITS
99 TAD CDRTM1 /ADD THOSE BITS TO THE 1ST CHAR
100CDBCDF, HLT /CDF TO BUFFER FIELD
101 DCA I CDRCA /STORE 1ST CHARACTER
102 ISZ CDRCA /BUMP POINTER TO BUFFER
103CDR740, 7400 /PROTECT THE ISZ AGAINST SKIPS
104 TAD CDRTM2
105 RTL
106 RTL /NOW GET LOW ORDER 4 BITS
107 AND CDR7400 /AND ONLY 4 BITS
108 TAD CDRTMP /ADD IN THE 2ND CHARACTER
109 DCA I CDRCA /AND STORE THE WORD
110 ISZ CDRCA /BUMP POINTER AGAIN
111CDR070, 70 /PROTECT THE ISZ
112 CDF 0 /CDRGCH NEEDS 0 DF ON ENTRY!
113 ISZ CDRWC /DONE?
114 JMP CDRLP /NO - LOOP
115CDRERR, ISZ CDR /HERE WITH NEGATIVE AC ON WRITE - FATAL ERROR
116 ISZ CDR /IF ^Z THIS IS ZEROED
117CDRXIT, HLT /RESTORE CALLING FIELDS
118 JMP I CDR /EXIT
119
120CDRCA, 0 /BUFFER POINTER
121CDRWC, 0 /WORD COUNT DIVIDED BY 2
122CDRTM1, 0
123CDRTM2, 0 /SPLIT WORD TEMPORARY
124CDRCIF, CIF CDF 0 /TO FORM EXIT WORD
125
126CDRIN2, CDRJMP-CDRLOC /CORRECTED AT INITIALIZATION TIME
127CDRIN4, CDRGCH-CDRLOC
128
129 0 /** FREE LOCATIONS - COME AND GET 'EM !
130 0
131 IFNZRO .-277 <RESORC,_ERROR_> /BUT THERE'S A CATCH
132CDRTBL, 0021;2223;2425;2627;3031;3203;4007;3502
133 2017;6364;6566;6770;7172;7514;0577;3637
134 1552;5354;5556;5760;6162;0104;1211;3374
135 0641;4243;4445;4647;5051;7316;3410;1376
136
137/DO NOT INSERT ANYTHING BETWEEN "CDRTBL" AND "CDRBUF"!!
138
139CDRBUF=. /CARD BUFFER
140
141CDRSET, RDF /INITIALIZATION CODE
142 TAD CDRCCF
143 DCA CDRSE1 /SAVE CALLING FIELDS
144 CDF /WE ARE IN FIELD 0
145 JMS . /FIND OUT OUR LOCATION
146CDRLOC, TAD CDRSE2 /ADDRESS TO MODIFY
147 TAD CDRLOC-1 /CORRECT IT
148 DCA CDRSE3 /SAVE IT
149 TAD I CDRSE3 /GET DATA TO MODIFY
150 TAD CDRLOC-1 /CORRECT IT
151 DCA I CDRSE3 /AND RESTORE IT
152 ISZ CDRLOC /NEXT ADDRESS
153 ISZ CDRSE4 /MORE?
154 JMP CDRLOC /YES - LOOP
155 TAD CDRSET
156 DCA CDR+3 /SET THE "RDF"
157CDRSE1, HLT /RESTORE CALLING FIELDS
158 JMP CDR+3 /AND BACK TO NORMAL
159
160CDRSE3, 0 /MODIFY POINTER
161CDRSE4, -5 /FIVE LOCATIONS TO MODIFY
162
163CDRSE2, CDRIN2-CDRLOC /LOCATIONS TO MODIFY
164 CDRIN4-CDRLOC
165 CDRIN5-CDRLOC
166 CDRABF-CDRLOC
167 CDRTAD-CDRLOC
168\f*CDRBUF+50 /END OF THE BUFFER
169
170CDRGCH, 0 /GET A CHARACTER ROUTINE - ENTER WITH DF=0
171CDRJMP, 0 /THIS IS "JMP I CDRGCH" AFTER A ^Z
172 ISZ CDRCNT /MORE CHARACTERS IN THE INTERNAL BUFFER?
173 JMP CDRGET /YES - GET ONE
174CDRGE4, ISZ CDRCT2 /GIVE A 215, 212 FOR EVERY CARD
175 JMP CDRCLF /215, 212 ROUTINE
176 CLL CLA CMA RTL
177 DCA CDRCT2 /RESET COUNT TO -3
178CDRGNC, TAD CDRABF
179 DCA CDRPT /SET POINTER TO INTERNAL BUFFER
180CDRGE0, KSF /KEYBORAD FLAG UP?
181 JMP CDRGE7 /NO - TRY TO READ A CARD
182 TAD CDR760 /FORCE THE PARITY BIT ON
183 KRS /READ STATIC FROM KEYBOARD
184 TAD CDR175 /IS IT ^C?
185 SNA
186 JMP I CDR760 /YES - TO MONITOR VIA 07600
187 TAD CDRM27 /IS IT ^Z?
188 SZA CLA
189 JMP CDRGE7 /NO - GET A CARD
190 KCC /KILL FLAG
191CDRGEZ, CLA CMA
192 DCA CDRCNT /RESET COUNTS TO SKIP
193 CLA CMA
194 DCA CDRCT2
195 TAD CDRMOD
196 DCA CDRJMP /SET TO GIVE 0'S
197 DCA I CDRIN5 /AND A SOFT ERROR
198 TAD CDR232 /^Z
199 JMP I CDRGCH /EXIT
200
201CDRGE7, RCSE /SELECT A CARD
202 JMP CDRGE0 /NO GO - TRY AGAIN
203 DCA CDRSW /SET PACKING SWITCH
204CDRGCL, DCA CDRTIM /INITIALIZE TIMEOUT COUNTER
205CDRGE1, RCSP /CARD DONE?
206 JMP CDRGE2 /NO - TRY FOR DATA READY
207 RCRD /CLEAR CARD DONE FLAG
208CDRGE3, TAD I CDRPT /GET LAST TWO CHARACTERS
209 SZA /BOTH SPACES?
210 JMP CDRGE5 /NO
211 CLA CMA
212 TAD CDRPT
213 DCA CDRPT /BACK UP POINTER ONE
214 ISZ CDRCNT
215 ISZ CDRCNT /AND TAKE COUNT DOWN BY 2
216 JMP CDRGE3 /TEST AGAIN OR...
217 JMP CDRGE4 /IF COUNT IS ZERO THE A BLANK CARD
218
219CDRGE5, AND CDR077 /IS RIGHT HAND CHARACTER A SPACE?
220 SNA CLA
221 ISZ CDRCNT /YES A SPACE - REDUCE COUNT
222 TAD I CDRPT /GET LAST NON-SPACE
223 TAD CDR077 /THIS FORMS 7777 IFF WORD CONTAINS "_"
224 AND CDRCNT /THIS MAINTAINS 7777 IFF CDRCNT IS -1
225 CMA
226 SNA CLA /ARE BOTH CONDITIONS TRUE?
227 JMP CDRGEZ /YES - MUST BE END OF FILE
228CDRGE6, TAD CDR077
229 DCA CDRSW /SET OFFSET FROM "CDRTBL"
230CDRGET, ISZ CDRSW /BUMP OFFSET
231 TAD CDRSW /OFFSET INTO AC
232 JMS CDRGE8 /GET A CHARACTER
233 TAD CDR240 /MAKE IT ASCII
234CDRMOD, JMP I CDRGCH
235
236CDRGE8, 0 /GET FROM BUFFER ROUTINE
237 CLL RAR /DIVIDE BY 2 - AND INTO LINK IS INDICATOR
238 TAD CDRTAD /ADDRESS OF "CDRTBL"
239 DCA CDRTM3 /SET POINTER
240 TAD I CDRTM3 /GET WORD
241 SZL /SHIFT?
242 JMP .+4 /NO
243 RTR /YES
244 RTR
245 RTR
246 AND CDR077 /GET 6 BITS
247 JMP I CDRGE8
248
249CDRGE2, RCSF /DATA READY?
250 JMP CDRGEX /NO - TRY FOR TIME OUT
251 RCRA /READ ALPHA
252 JMS CDRGE8 /GET TABLE ENTRY
253 ISZ CDRSW /WHICH SIDE?
254 JMP CDRGE9 /LEFT SIDE
255 TAD I CDRPT
256 DCA I CDRPT /FORM RIGHT SIDE
257 JMP CDRGCL /CONTINUE
258
259CDRGE9, CLL RTL /SHIFT LEFT
260 RTL
261 RTL
262 ISZ CDRPT /BUMP POINTER
263 DCA I CDRPT /STORE LEFT SIDE
264 CLA CLL CMA RAL /-2 V3 FROM SIS BULLETING JAN 73
265 TAD CDRCNT
266 DCA CDRCNT /COUNT THE CHARACTERS
267 CLA CMA
268 JMP CDRGCL-1 /CONTINUE - SET SWITCH
269\fCDRCLF, CLA CMA
270 DCA CDRCNT /SET MAIN COUNT TO SKIP
271 TAD CDRCT2
272 CLL CMA RTL /ALL THIS DOES IS...
273 TAD CDRCT2 /MAKE A 2 OR -1
274 TAD CDR213 /SO THIS MAKES A 215 OR 212
275 JMP I CDRGCH
276
277CDRGEX, /TEST TIME OUT - FIRST DELAY USING CONSTANTS
278CDR760, 7600 /MONITOR ADDRESS
279CDR077, 77 /SIX BIT MASK
280CDRM77, -7700 /-"_ "
281CDR175, 175
282CDR240, 240 /ASCII SPACE
283CDR213, 213 /215, 212 CORRECTION FACTOR
284CDR232, 232 /ASCII ^Z
285 ISZ CDRTIM /THIS LOOP TAKES AT LEAST 100MS ON AN 8/E
286 JMP CDRGE1
287 DCA CDRCNT /CLEAR COUNT IN CASE PARTIAL CARD READ (E.G. JAM)
288 JMP CDRGNC /TIMED OUT - RESTART CARD
289
290CDRTM3,
291CDRTIM, 0 /TIMEOUT COUNTER
292CDRM27, -27 /-27-3=-32 ^Z TEST
293CDRCNT, -1 /MAIN COUNT
294CDRCT2, -1 /215, 212 COUNT
295CDRPT, 0 /BUFFER POINTER
296CDRSW, 0 /SWITCH
297
298CDRABF, CDRBUF-1-CDRLOC /MODIFIED LOCATIONS
299CDRTAD, CDRTBL-CDRLOC
300CDRIN5, CDRXIT-1-CDRLOC
301 $
302\f