A large commit.
[pdp8.git] / sw / rescue / lab8e_goettingen / disk2_11 / rkb / paroff / realtm.ra
CommitLineData
81e70d48
PH
1/ A-D CLOCKED, BUFFERED SAMPLING ROUTINE\r
2 ADSK=6534\r
3 ADRB=6533\r
4 ADST=6532\r
5 ADLM=6531\r
6 ADLE=6536\r
7 ADCL=6530\r
8 CLZE=6130\r
9 ESF=4\r
10 LINC=6141\r
11 PDP=2\r
12 SAM=100\r
13 CLEN=6134\r
14 FIELD1 SAMPLE\r
15 0 /INTERRUPT TIME AD SAMPLER\r
16 IFNSW 8 <\r
17 JMS LNCSAM /INITIATE SAMPLE\r
18NEXTCH, ISZ SAMINS /UPDATE SAM INST FOR NEXT CHAN\r
19 JMS LNCSAM /SAM AND INITIATE NEXT CHANNEL\r
20 >\r
21 TAD SAMPTR /SAVE THE OLD SAM BUFFER POINTER\r
22 DCA OLDPTR\r
23 TAD BUFFLD /AND THE FIELD\r
24 DCA OLDFLD\r
25 ISZ SAMPTR /BUMP BUFFER POINTER\r
26 JMP FLDOK /FIELD IS OK\r
27 TAD BUFFLD /BUMP FIELD\r
28 TAD L10\r
29 DCA BUFFLD\r
30FLDOK, ISZ SAMCNT /BUMP BUFFER COUNT\r
31 JMP BUFFLD /NOT END OF BUFFER\r
32 TAD ARRAY+2 /RESET POINTER TO START OF BUFFER\r
33 DCA SAMPTR\r
34 TAD FLDBUF /RESET BUFFER FIELD\r
35 DCA BUFFLD\r
36 TAD BUFSIZ /RESET COUNT\r
37 DCA SAMCNT\r
38BUFFLD, HLT /GET FIELD OF NEW ADB STOP CODE\r
39 TAD% SAMPTR /IS THIS THE SAM STOP CODE ?\r
40 TAD M3776 /(ILLEGAL AS A SAMPLE)\r
41 SZA CLA\r
42 JMP NOERR\r
43 ISZ TOOFAS /SET TOO FAST SWITCH\r
44SAMPLD, CDF 10\r
45 DCA% XCLINT+1 /STOP SAMPLING\r
46 JMP% SAMPLE\r
47NOERR, CLL CMA RAR /SET ADB STOP CODE\r
48 DCA% SAMPTR\r
49OLDFLD, HLT /GET TO FIELD OF SAMPLE\r
50 IFSW 8 <\r
51 ADRB /READ SAMPLE\r
52 >\r
53 IFNSW 8 <\r
54 TAD SAMTMP /GET PREVIOUSLY READ SAMPLE\r
55 >\r
56 DCA% OLDPTR /INTO BUFFER\r
57 ISZ NPOINT+2 /ANY MORE SAMPLES\r
58 SKP /YES\r
59 ISZ NPOINT+1 /MORE THAN 7777 ?\r
60 SKP /YES\r
61 JMP SAMPLD /NO\r
62 ISZ NCHANL+1 /ANY MORE CHANNELS TO SAMPLE ?\r
63 JMP NEXTCH /YES GO START SAMPLING\r
64 TAD CSTART+2 /STARTING CHANNEL\r
65 IFSW 8 <\r
66 ADLM\r
67 >\r
68 IFNSW 8 <\r
69 DCA SAMINS\r
70 JMS LNCSAM /SET CHANNEL TO START\r
71 /IN CASE CLOCK INITIATED\r
72 >\r
73 TAD NCHANL+2 /NUMBER OF CHANNELS\r
74 DCA NCHANL+1 /INTO COUNTER\r
75 CDF 10\r
76 JMP% SAMPLE\r
77 IFSW 8 <\r
78NEXTCH, ADST /SAMPLE NEXT CHANNEL\r
79 ADSK /WAIT FOR SAMPLE\r
80 JMP .-1\r
81 JMP SAMPLE+1\r
82 >\r
83 IFNSW 8 <\r
84LNCSAM, 0 /LINC SAM SUBROUTINE\r
85 LINC\r
86SAMINS, SAM 0 /SAMPLE AND SELECT NEXT CHANNEL\r
87 PDP\r
88 DCA SAMTMP /SAVE IT\r
89 JMP% LNCSAM\r
90 >\r
91ADSETU, 0 /SET UP ROUTINE\r
92 DCA TOOFAS /CLEAR TOO FAST SWITCH\r
93 TAD ARRAY+1 /GET FIELD OF BUFFER\r
94 AND L7\r
95 CLL RTL\r
96 RAL\r
97 TAD CDF0\r
98 DCA FLDBUF\r
99 TAD FLDBUF\r
100 DCA BUFFLD /SAVE IN SAMPLER CODE\r
101 TAD ARRAY+2 /SET SAMPLER BUFFER POINTER\r
102 IAC\r
103 DCA SAMPTR\r
104 TAD LENGTH+2 /SIZE OF BUFFER\r
105 CLL RAL\r
106 TAD LENGTH+2 /TIMES THREE\r
107 DCA BUFSIZ /SAVE IT\r
108 TAD BUFSIZ /SET INITIAL COUNT\r
109 IAC\r
110 DCA SAMCNT\r
111 TAD NCHANL+2 /SET CHANNEL COUNT\r
112 DCA NCHANL+1\r
113 IFSW 8 <\r
114 CLA CMA /STOP THE CLOCK\r
115 CLZE\r
116 CLA\r
117 ADCL /CLEAR AD LOGIC JUST IN CASE\r
118 TAD L300 /SET AD ENABLE BITS\r
119 ADLE\r
120 TAD CSTART+2 /STARTING CHANNEL NUMBER\r
121 ADLM\r
122 >\r
123 IFNSW 8 <\r
124 CLEN /STOP THE CLOCK\r
125 TAD CSTART+2 /SET UP INITIAL SAM INSTRUCTION\r
126 TAD L100\r
127 DCA CSTART+2\r
128 TAD CSTART+2\r
129 DCA SAMST /STARTING SAM\r
130 TAD SAMST /ALSO INTERRUPT TIME SAM\r
131 DCA SAMINS\r
132 TAD L100 /SET FAST SAM BIT\r
133 IOF /TURN OFF INTERRUPTS IN LINC MODE\r
134 LINC /ENTER LINC MODE\r
135 ESF\r
136SAMST, SAM 0 /SET INITIAL SAM CHANNEL\r
137 PDP\r
138 ION\r
139 CLA\r
140 >\r
141 CIF CDF\r
142 JMP% ADSETU\r
143BASEX, FNOP\r
144M3776, -3776\r
145L10, 10\r
146SAMPTR,\r
147ARRAY, 0;0;0\r
148LENGTH, 0;0\r
149BUFSIZ, 0\r
150SAMCNT,\r
151CSTART, 0\r
152OLDPTR, 0;0\r
153SAMTMP,\r
154NCHANL, 0;0;0\r
155NPOINT, 0;0;0\r
156FLDBUF,\r
157XCLINT, ADDR #CLINT\r
158 IFSW 8 <\r
159L300, 300\r
160 >\r
161 IFNSW 8 <\r
162L100, 100\r
163 >\r
164SAMXR, 0;0\r
165TOOFAS, 0\r
166 ORG 10*3+BASEX\r
167 0\r
168 JA NAME+3\r
169 0\r
170SAMRTN, JA .\r
171CDF0, CDF\r
172L7, 7\r
173\f SECT REALTM\r
174 BASE 0\r
175 STARTD\r
176 FLDA 30 /GET RETURN ADDR\r
177 FSTA SAMRTN\r
178 FLDA 0 /GET ARG POINTER\r
179 BASE BASEX\r
180 SETB BASEX\r
181 SETX SAMXR\r
182 FSTA NPOINT /SAVE ARG POINTER\r
183 FCLA\r
184 EXTERN #CLINT\r
185 FSTA #CLINT /STOP ANY SAMPLING NOW!\r
186 LDX 1,1\r
187 FLDA% NPOINT,1 /GET BUFFER ADDRESS\r
188 FSTA ARRAY\r
189 FLDA% NPOINT,1+ /GET ADDR OF LENGTH\r
190 FSTA LENGTH\r
191 FLDA% NPOINT,1+ /ADDR OFHANNEL START\r
192 FSTA CSTART\r
193 FLDA% NPOINT,1+ /ADDR OF # CHANNELS\r
194 FSTA NCHANL\r
195 FLDA% NPOINT,1+ /ADDR OF NUMBER OF POINTS\r
196 FSTA NPOINT\r
197 FLDA ARRAY /CREATE SETX INS\r
198 FADD STXMJA\r
199 FSTA BUFSTX\r
200 FSTA ADBSTX /AND SAVE IT IN TWO PLACES\r
201 STARTF\r
202 FLDA% LENGTH /INTEGERIZE AND NEGATE SOME ARGS\r
203 FNEG\r
204 ALN 0\r
205 FSTA LENGTH\r
206 FNORM\r
207 ATX 1 /SET BUFFER COUNT\r
208 FLDA% CSTART /GET STARTING CHANNEL\r
209 ALN 0\r
210 FSTA CSTART\r
211 FLDA% NCHANL\r
212 FNEG\r
213 ALN 0\r
214 FSTA NCHANL\r
215 FLDA% NPOINT\r
216 FNEG\r
217 ALN 0\r
218 FSTA NPOINT\r
219 LDX -1,2 /SET UP FOR BUFFER CLEAR\r
220 FCLA\r
221CLRBUF, FSTA% ARRAY,2+\r
222 JXN CLRBUF,1+\r
223 TRAP4 ADSETU /SET UP AD STUFF\r
224 FLDA LENGTH /RE-GET BUFFER SIZE\r
225 FNORM\r
226 ATX 1 /BUT NOW ITS TIMES THREE\r
227 FLDA STPCOD /STORE STOP CODES\r
228 FSTA% ARRAY /INTO FIRST 3 WORD\r
229 STARTD\r
230 FLDA SAMADR /SET UP SAMPLER INTERRUPT HANDLER\r
231 FSTA #CLINT\r
232 STARTF\r
233 JA SAMRTN /RETURN\r
234NAME, TEXT +RTMADB+\r
235SAMADR, ADDR SAMPLE\r
236STPCOD, 3776;3777;0\r
237STXMJA, 1100-1030;0\r
238L2047, F 2047.\r
239L511, F 511.\r
240\f ENTRY ADB\r
241ADB, BASE 0 /FETCH SAMPLE FROM BUFFER\r
242 STARTD\r
243 FLDA 30 /SAVE REUTRN\r
244 FSTA SAMRTN\r
245 SETB BASEX\r
246 SETX SAMXR\r
247 BASE BASEX\r
248 JXN SPEEDK,2 /CLOCK TOO FAST\r
249 FLDA ADBSTX /SAVE OLD SETX\r
250 FSTA OLDSTX\r
251 FADD L1 /ADD ONE TO IT\r
252 FSTA ADBSTX /AND SAVE IT BACK\r
253 JXN NORINQ,1+ /END OF BUFFER ?\r
254 FLDA BUFSTX /YES, RESTART\r
255 FSTA ADBSTX\r
256 FLDA LENGTH /RESET COUNT\r
257 ATX 1\r
258NORINQ, STARTF\r
259ADBSTX, SETX 0 /SET XR0 TO NEXT SAMPLE\r
260WAIT, XTA 0 /GET THE NEXT SAMPLE\r
261 FSUB L2047 /IS IT THE STOP CODE\r
262 JEQ WAIT /YES\r
263 XTA 0 /NO, FETCH THE SAMPLE\r
264 LDX 3776,0 /SET SAMPLE STOP CODE\r
265OLDSTX, SETX 0 /SET XR0 TO PREVIOUS STOP CODE\r
266 LDX 0,0 /NOW ZERO IT\r
267 JA SAMRTN /RETURN\r
268SPEEDK, EXTERN #WRITO /USE FORTRAN I/O\r
269 TRAP3 #WRITO /TO WRITE A MESSAGE\r
270 JA TTYUNT /ON THE TTY\r
271 JA MESSAG\r
272 EXTERN #RENDO\r
273 TRAP3 #RENDO /CLOSE THE RECORD\r
274 LDX 0,2 /KILL TOO FAST SWITCH\r
275 JA SAMRTN /RETURN FROM ADB\r
276TTYUNT, F 0.\r
277MESSAG, TEXT '(" SAMPLING TOO FAST")'\r
278BUFSTX, SETX 0\r
279L1, 0;1\r
280 END\r
281\f\1a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0