Add README.md
[pdp8.git] / sw / rescue / lab8e_goettingen / disk2_11 / rka / paroff / clock.ra
CommitLineData
81e70d48
PH
1/ \ eCLOCK.RA - DK8-EP HANDLER\r
2/\r
3/ TO ASSEMBLE DK8-EP HANDLER FOR FIRST CLOCK: NO SWITCHES\r
4/ TO ASSEMBLE DK8-EP HANDLER FOR 2 ND CLOCK: /1 SWITCH\r
5/ TO ENABLE TIME ROUTINE TO APPROPIATE CLOCK : /2 SWITCH \r
6/ TO ENABLE CLOCK STATUS TO GENERAL RTS ROUTINES: /3 SWITCH\r
7/ SO NORMALLY FOR FIRST CLOCK USE /3 SWITCH!\r
8/ TO ENABLE CLOCK TO SCHMITT TRIGGER EVENT USE /4 SWITCH\r
9/ DO NOT COMBINE /2 AND /4 SWITCHES!\r
10/ THIS GENERATES CLOCK4:\r
11/ NO PRESET TO DK8-EP\r
12/ MODE BITS: 11\r
13/ SELECT RATE: N/4096\r
14/ APPLICABLE FOR BOTH DK8-EP CLOCKS. BUT ONLY FOR ONE PER PROGRAM!\r
15/\r
16/\r
17/ 1.0 18-MAR-85 H.A. (COPY OF CLOCK.RA )\r
18/ 1.1 26-JUN-85 H.A.\r
19/\r
20 EXTERN #DISP /SYSTEM PAGE 0,NEEDED TO\r
21 /PUT CLOCK STATUS ON PG0\r
22 /(CSTAT) FOR USE BY GEN\r
23 /USER CLOCK SERVICE ROUTS\r
24 EXTERN #T812 /RTS CPTYP\r
25 EXTERN ONQI /INTERRUPT QUEUER\r
26/\r
27 IFNSW 1 <\r
28 ENTRY #CLINT /USER EXTENDED CLOCK ROUTINE\r
29 DEVICE=13*10\r
30 >\r
31 IFSW 3 <\r
32 CSTAT=157 /IDOCLK PUTS CLSA BITS OF FIRST CLOCK\r
33 /IN HERE FOR SOMEBODY ELSE\r
34 >\r
35 IFSW 2 <\r
36 ENTRY TIME / ENABLE TIME ROUTINE TO RTS\r
37 >\r
38 IFSW 1 <\r
39 ENTRY #CLIN1 /USER EXTENDED CLOCK ROUTINE\r
40 DEVICE=17*10\r
41 >\r
42 CLZE=6000!DEVICE /CLOCK IOTS\r
43 CLSK=6001!DEVICE\r
44 CLLR=6002!DEVICE /ALSO CLOE\r
45 CLAB=6003!DEVICE\r
46 CLEN=6004!DEVICE\r
47 CLSA=6005!DEVICE\r
48\f BASE FTMP0\r
49 INDEX FCNWD\r
50 IFNSW 2 <\r
51 IFSW 1 <\r
52 FIELD1 #SYNC >\r
53 IFSW 4 <\r
54 FIELD1 SYNC4 >\r
55 >\r
56 IFSW 2 <\r
57 FIELD1 SYNC >\r
58 BASE FTMP0\r
59 INDEX FCNWD\r
60 JSA SETUP /HERE TO READ A STRIG\r
61 /INITIALIZE ARGS\r
62 TRAP4 DOSYNC /FCNWD (XR) HOLDS STRIG\r
63 /TO READ\r
64 XTA FCNWD /=ANS=0,1\r
65 FSTA% FTMP1 /GIVE ANS TO CALLER\r
66 JA GOBAK\r
67FTMP0, F 0.0 /BASE PAGE\r
68FTMP1, F 0.0\r
69RPTR, 27;ADDR RTBL /PTR TO RATE TBL, ALSO\r
70 /USED TO FLT OVRCNT (NOTE\r
71 /THAT THE EXPONENT=27)\r
72MINRAT, F .02 /MIN ALLOWABLE RATE\r
73TOVR, F 0.0\r
74 IFNSW 4 <\r
75 IFNSW 1 <\r
76NAME, TEXT +CLOCK + >\r
77 IFSW 1 <\r
78NAME, TEXT +CLOCK1+ >\r
79 >\r
80 IFSW 4 <\r
81 IFNSW 1 <\r
82NAME, TEXT +CLOCK4+ >\r
83 IFSW 1 <\r
84NAME, TEXT +CLOC14+ >\r
85 >\r
86 ORG 10*3+FTMP0\r
87 FNOP\r
88 JA NAME+3\r
89 0\r
90GOBAK, JA .\r
91RTBL, F 16.0 /CONSTANT USED TO CHK FOR\r
92 /EXT CLK BIT IN FCNWD\r
93 /THIS CONST MUST BE NE 0\r
94MAXRAT,\r
95F4096, F 4096.0 /USED TO GET OVRFLO COUNT\r
96 F 100000.0 /FASTEST RATE IN HERTZ\r
97 F 10000.0 /NEXT FASTEST RATE\r
98 F 1000.0\r
99 F 100.0 /SLOWEST RATE\r
100 F 1.0 /USED BY TIME FOR EXT CLK\r
101\f BASE 0\r
102 \r
103SETUP, 0;0 /HERE TO INIT ALL FPP SUBS\r
104 STARTD\r
105 FLDA 30 /PICK UP RTN TO CALLER\r
106 FSTA GOBAK\r
107 FLDA 0 /GET PTR TO CALLERS ARGS\r
108 SETX FCNWD /CLOCK XR AND BASE\r
109 SETB FTMP0\r
110 BASE FTMP0\r
111 FSTA FTMP1\r
112 FLDA% FTMP1,P1\r
113 FSTA FTMP0 /PTR TO 1ST ARG\r
114 FLDA% FTMP1,P2\r
115 FSTA FTMP1 /PTR TO 2ND ARG\r
116 FLDA #T812 /TELLS PDP8,PDP12\r
117 ATX CPTYP /0=8=DK8ES,1=12=KW12A\r
118 STARTF\r
119 FLDA% FTMP0 /=1ST ARG\r
120 ATX FCNWD /ALWAYS IN FCNWD\r
121 JA SETUP\r
122\f IFNSW 4 <\r
123 IFNSW 2 <\r
124 IFNSW 1 <\r
125 ENTRY CLOCK\r
126CLOCK, > >\r
127 IFSW 1 <\r
128 ENTRY CLOCK1\r
129CLOCK1, >\r
130 >\r
131 IFSW 2 <\r
132 ENTRY CLOCK\r
133CLOCK, >\r
134 IFSW 4 <\r
135 IFNSW 1 <\r
136 ENTRY CLOCK4\r
137CLOCK4, >\r
138 IFSW 1 <\r
139 ENTRY CLOC14\r
140CLOC14, >\r
141 >\r
142 JSA SETUP /HERE FOR CLOCK START\r
143 FLDA% FTMP0\r
144 FSUB RTBL /FCNWD IS IN FAC,IF GE 16\r
145 JGE ITSEXT /(RTBL=16.0) THEN USER IS\r
146 /REQUESTING AN EXTERNAL\r
147 /CLOCK I.E. B8 OF FCNWD\r
148 /IS SET.\r
149 FLDA% FTMP1 /=REQUESTED RATE IN HERTZ\r
150 FSUB MINRAT /.LE. MINUMUM RATE\r
151 JLE GOTR-2 /MEANS STOP CLOCK.\r
152 FADD MINRAT\r
153 FSUB MAXRAT /CHK FOR TOO FAST\r
154 JGT GOTR-2\r
155 LDX -4,OVRFLO /THERE ARE 4 BASIC RATES\r
156 LDX 1,RATE /=INDEX INTO RTBL; UPON\r
157 /TRAP(CLOCK) RATE=(0,\r
158 /2,3,4,5,6) 0=STOP,\r
159 /6=EXTERNAL\r
160 /2-5=PROGRAMMABLE RATES\r
161LOP0, FLDA% RPTR,RATE+\r
162 /GET NEXT SLOWEST RATE\r
163 FDIV% FTMP1 /=REQUESTED RATE IN HZ.\r
164 /FAC=OVRFLO COUNT;\r
165 FSUB F4096 /MUST BE MODULO 12 BITS.\r
166 JLE GOTR /FOUND IT\r
167 JXN LOP0,OVRFLO+\r
168 LDX 0,RATE /RATE IS TOO SLOW, STOP\r
169 /CLOCK.\r
170GOTR, FADD F4096 /RESTORE\r
171 FSTA TOVR\r
172 ATX OVRFLO /OVER FLOW COUNT\r
173 TRAP4 SETCLK /GO START CLOCK\r
174 JA GOBAK /RTN TO CALLER\r
175ITSEXT, LDX 6,RATE /=RATE FOR EXT CLK\r
176 FLDA% FTMP1 /REQUESTED RATE IS\r
177 /INTERPRETED AS OVRFLO\r
178 JA GOTR+1 /WHEN RATE IS EXTERNAL\r
179\f/MAGIC TABLE USED BY SETCLK TO SET CLOCK ENABLE\r
180/BITS. EVEN NUMBERED ENTRIES ARE FOR THE DK8ES;\r
181/ODD NUMBERED ONES ARE FOR THE KW12A.\r
182 \r
183CLKTBL,\r
184 IFNSW 4 <\r
185 0675 > /"STANDARD" DK BITS\r
186 IFSW 4 <\r
187 0670 > / MODE BITS 10\r
188 300 /STND KW BITS\r
189 1 /DK STRIG1 BIT\r
190 60 /KW STRIG1 BITS\r
191 2 /DK S2\r
192 14 /KW S2\r
193 4 /S3\r
194P3, 3 /S3\r
195 40 /DK ADC ON OVR BIT\r
196 400 /KW ADC ON OVR BIT\r
197 \r
198 /IF NOT NEXT PAGE DO ORG\r
199 IFNEG .-200 < ORG .-SYNC&7600+200+SYNC >\r
200\fSETCLK, 0 /TRAP HERE TO START CLK\r
201 /THIS ROUT HANDLES BOTH\r
202 /DK8ES AND KW12A.\r
203 CLLR /STOP KW AND SET MODE 0;\r
204 /NOP FOR DK.\r
205 CLEN /CLR KW12 ENABLE OR\r
206 /READ DK ENABLE.\r
207 CLA\r
208 TAD P7540 /TOGGLE KW MODE 0 TO 1 TO\r
209 CLLR /CLR CLK COUNTER, OR SET\r
210 /DK ENABLE BITS, RATE FOR\r
211 CLA CMA /BOTH NOW=7=STOP.\r
212 CLZE /CLR ALL DK ENABLE BITS,\r
213 CLSA /CLR STATUS OF BOTH, ALL \r
214 CLA /IS NOW CLEAR.\r
215 TAD FCNTBL+1 /SET PTR TO CLKTBL FOR\r
216 /SETTING OF ENABLE REGS.\r
217 TAD CPTYP /=0 IF PDP8 =1 IF PDP12\r
218 DCA FCNPTR /TBL ENTRIES ALTERNATE\r
219 /FOR 8 AND 12. CPTYP SETS\r
220 /PTR TO 1ST 8 OR 1ST 12\r
221 /ENTRY\r
222 TAD IDOCLK /(AC=JMP AROUND). THE\r
223 /FOLLOWING IS ONCE ONLY\r
224 /CODE. THESE LOCS ARE\r
225 /SUBSEQUENTLY USED AS\r
226 /OPERANDS\r
227 DCA .-1\r
228 /THE TAG "ISVBIT" MUST BE\r
229 /IN FRONT OF THE STRIG\r
230 /FLAGS (STFLG) TO COVER\r
231 /THE ILLEGAL CASE OF\r
232 /STRIG 0 IN A FORT CALL\r
233 /TO SYNC.\r
234ISVBIT, TAD CPTYP /(AC=0,1) MAKE THE INST\r
235 /RAR CLL (FOR DK) OR THE\r
236 /INST RTR CLL FOR IDOCLK;\r
237STFLG, RAL CLL /BECAUSE STATUS BITS FOR\r
238 TAD RARCLL /STRIGS DIFFER ON DK,KW.\r
239 DCA LOP2+1 /SEE SUB IDOCLK.\r
240 /THE ABOVE 3 LOCS ARE\r
241 /SCHMITT TRIGGER FLAGS.\r
242 /THE ORDER IS S1,S2,S3\r
243 /FOR PDP8 AND S3,S2,S1\r
244 /FOR PDP12. THE MAIN\r
245 /REASON FOR REVERSING\r
246 /THE ORDER IS BECAUSE\r
247 /ENGINEERS NEVER CONSULT\r
248 /PROGRAMMERS WHEN THEY\r
249 /ARE BUILDING NEW \r
250 /HARDWARE (CHK THE STATUS\r
251 /BITS FOR DK AND KW).\r
252 JMS% KONQI+1 /PUT CLOCK ON THE\r
253ITMP0, CLSK /INTERRUPT QUE\r
254 /VIA ONQI.\r
255CLENAB, ADDR IDOCLK /THIS LOC WILL HOLD THE\r
256 /ENABLE BITS FOR DK,KW\r
257AROUND, TAD RATE /(AC=0,2,3,4,5,6) RATE IS\r
258 /SET BY FPP\r
259 RTR CLL /START TO POSITION RATE\r
260 RAR /BITS. B3-B5 FOR DK\r
261 /B0-B2 FOR KW\r
262 TAD CPTYP /(THIS IS TRICKY) NEED\r
263 RAR /CPTYP IN LNK BECAUSE\r
264 /POSITION OF RATE BITS\r
265 /DIFFER FOR DK KW.\r
266 TAD% FCNPTR /AC="STANDARD"\r
267 /ENABLE BITS FOR DK,KW.\r
268 SZL /IF ITS A KW THE RATE AND\r
269 /AND STND BITS ARE ALREADY\r
270 /POSITIONED AS FOLLOWS:\r
271 /RRR011000000\r
272 /B0-B3 AND B5 WILL GO TO\r
273 /KW CONTROL. B4,B5 WILL\r
274 /GO TO ENABLE. B3 IS ADC\r
275 /ON OVRFLO AND MAY BE SET\r
276 /BELOW. B5 ON CONTROL IS\r
277 /MODE 1. B4 AND B5 ON\r
278 /ENABLE ARE BUFF PRESET TO\r
279 /CLOCK COUNTER AND INTRUPT\r
280 /ON OVRFLO RESPECTIVELY.\r
281 JMP NOBIT-1 /ITS KW GO PUT IN CLENAB.\r
282 RAR STL /ITS DK; POSITION RATE TO\r
283 RTR /B3-B5. NOTE THAT THE LNK\r
284 /(CPTYP=0) IS BEING USED.\r
285 CMA /NOTE ALSO THAT THE RATE\r
286 /AND STND BITS ARE THE 1S\r
287 /COMP. OF WHAT THEY SHOULD\r
288 /BE, IE CPTYP=LNK=0\r
289 /BECOMES\r
290 /B2=1 OF ENABLE=BUFF\r
291 /PRESET TO CLK CNTR ON\r
292 /OVERFLO. LOOK AT THE RATE\r
293 /BITS IN THE HANDBOOK FOR\r
294 /BOTH DK,KW. R2,R5\r
295 /FOR DK IS 100HZ, 100KHZ\r
296 /RESPECTIVELY. R2,R5 FOR\r
297 /KW IS 100KHZ,100HZ.\r
298 /1S COMP.OF 2=5 ETC.\r
299 /SMARTEN UP STEVE!\r
300 /THE FINAL VALUE OF THE\r
301 /STND DK ENABLE BITS (1ST\r
302 /ENTRY IN CLKTBL) IS LEFT\r
303 /AS AN EXERCISE FOR THE\r
304 /PROGRAMMER.\r
305 JMP NOBIT-1 /GO PUT IN CLENAB\r
306LOP1, RAR CLL /ROT 1 FCN BIT INTO LNK.\r
307 /B7=EXT CLK AND IS\r
308 /IGNORED HERE. B8=ADC ON\r
309 /OVRFLO, B9-B11 ARE STRIG3\r
310 /-STRIG1 RESP. BX=1=ENABLE\r
311 /FCN. 0=DISABLE\r
312 DCA FCNWD /PUT IT BACK (FCNWD IS\r
313 /SET BY FPP)\r
314 SNL /ENABLE FCN ?\r
315 JMP NOBIT /NO\r
316 TAD% FCNPTR /GET BITS FROM THE MAGIC\r
317 TAD CLENAB /TABLE.\r
318 DCA CLENAB /UPDATE ENABLE WORD.\r
319NOBIT, ISZ FCNPTR /ADV TO NEXT\r
320 ISZ FCNPTR /TBL ENTRY.\r
321 TAD FCNWD /WHEN FCNWD GOES TO 0\r
322 AND P17 /WE ARE ALL DONE.\r
323 /THE "AND" IS DONE TO\r
324 /PROTECT AGAINST A BAD\r
325 /ARG FROM THE FORT CALL.\r
326 /IN A FRIENDLY ENIVORN,\r
327 /ITS NOT NECESSARY.\r
328 /NEVER TRUST A FORTRAN\r
329 /"PROGRAMMER".\r
330P7540, SMA SZA /SMA IS SUPERFLOUS TO\r
331 /THE ROUT; BUT IT\r
332 /CREATES A NICE CONST.\r
333 JMP LOP1 /MORE TO DO\r
334 DCA STFLG /CLR THE SCHMITT\r
335 DCA STFLG+1 /TRIGGER FLAGS.\r
336 DCA STFLG+2\r
337 TAD OVRFLO /SET BUFF PRESET\r
338 CIA /(FPP SET THIS ARG)\r
339 IFNSW 4 <\r
340 CLAB > / SET PRESET COUNTER\r
341 CLA\r
342 IFSW 4 < / ZERO PRESET COUNTER\r
343 CLAB >\r
344 TAD CLENAB /THIS IS FOR KW ONLY.\r
345 AND P377 /AC=3XX. 3= OR BUFF PRE\r
346 /INTO CLK CNTR AND ENAB\r
347 /INT ON OVRFLO.\r
348 /XX ARE THE STRIGS.\r
349 CLEN /SET KW ENABLE OR\r
350 CLA /READ DK ENABLE.\r
351 DCA OVRCNT+1 /CLR NUM OF CLK OVRFLOS\r
352 DCA OVRCNT /SINCE TIME 0.\r
353 TAD CPTYP /NEED TYPE IN ORDER TO\r
354RARCLL, RAR CLL /ISOLATE CONTROL\r
355 TAD CLENAB /BITS FOR\r
356 SZL /KW ?\r
357 AND P7540 /YES, B0-B2 IS RATE,\r
358 /B3 IS ADC, B5 IS BUFF\r
359 /PRE TO CLK CNTR ON\r
360 /OVRFLO, B6 IS MOX NIX.\r
361 /IF DK ALL BITS MAY HAVE\r
362 /MEANING\r
363 CLLR /START THE CLOCK\r
364 CLA\r
365 CIF CDF\r
366 JMP% SETCLK /RTN TO RTS\r
367\fDOSYNC, 0 /HERE TO DISPOSITION A\r
368 /A SCHMITT TRIGGER.\r
369 TAD CPTYP /DK AND KW FLAGS ARE IN\r
370 RAR CLL /REVERSE ORDER. IF DK\r
371 /ARG IS OK; IF KW THEN\r
372 /MUST SET 1=3, 2=2, 3=1\r
373 /TO GET INDEX TO\r
374 /CORRECT FLAG.\r
375 TAD FCNWD /=REQUESTED STRIG=1,2,3\r
376 /(SET BY FPP)\r
377 SZL /DK ?\r
378 CIA /NO KW\r
379 AND P3 /IE 1 GOES TO -1 GOES\r
380 /TO 3 ETC. "AND" ALSO\r
381 /INSURES RANGE IS 0-3.\r
382 /IF ARG IS 0 RESULT IS\r
383 /ALWAYS 0.\r
384 TAD KSTFLG+1 /GET PTR TO FLAG\r
385 DCA SETCLK\r
386 TAD% SETCLK /FLAG=0 IF TRIG HAS NOT\r
387 /TRIPPED SINCE THE LAST\r
388 /CALL TO SYNC; =1\r
389 /OTHERWISE IE RTN 0=FALSE\r
390 DCA FCNWD /,1=TRUE (FPP WILL PICK\r
391 / UP FCNWD)\r
392 DCA% SETCLK /CLR FLAG ANYWAY\r
393 CIF CDF\r
394 JMP% DOSYNC /RTN TO RTS\r
395\f/ INTERRUPT SERVICE ROUTINE\r
396/\r
397IDOCLK, JMP AROUND /HERE ON CLOCK INTERRUPT\r
398 /(JMP AROUND IS A ONCE\r
399 /ONLY CONSTANT).\r
400 TAD KSTFLG+1 /SET PTR TO STRIG FLAGS.\r
401 DCA ITMP0\r
402 CLSA /GET CLOCK BITS.\r
403 IFREF CSTAT <\r
404 DCAZ CSTAT /SAVE THEM FOR SOME\r
405 TADZ CSTAT /BODY ELSE.\r
406 >\r
407 IFNDEF CSTAT <\r
408 JMP .+2 / WE DO NOT SAVE STATUS OF SECOND CLOCK\r
409 NOP >\r
410 SPA /OVER FLOW ?\r
411 ISZ OVRCNT+1 /YES BUMP LO ORD CNTR\r
412 SKP\r
413 ISZ OVRCNT /BUMP HI ORD\r
414 JMP DOTRIG /(HI ORD ISZ SKP IS\r
415 /HARMLESS)\r
416LOP2, ISZ ITMP0 /ADV STRIG FLAG PTR.\r
417 RAR CLL /(OR RTR CLL IF KW)\r
418 /IE PUT STRIG BIT IN LNK.\r
419 /IF DK THE ORDER OF\r
420 /INTERROGATION IS S1,S2,S3\r
421 /IF KW THE ORDER IS S3,\r
422 /S2,S1. THE STATUS BITS\r
423 /FOR DK ARE ADJACENT IE\r
424 / B9(S3),B10(S2),B11(S1)\r
425 /FOR KW ITS EVERY OTHER,\r
426 /B6(S1),B8(S2),B10(S3).\r
427 DCA ISVBIT /SAVE WHATS LEFT.\r
428/ RAL /COPY LNK INTO FLAG IF=1\r
429/ SZA /IE DONT CLR FLAG WHEN\r
430/ DCA% ITMP0 /ITS SET.\r
431/\r
432 SZL / HERE WE COUNT THE NUMBER OF EVENTS BETWEEN\r
433 ISZ% ITMP0 / CALL TO SYNC ROUTINE (NO OVERFLOW PROTECTION!)\r
434 ISZ% ITMP0 / HERE TO PROTECT ISZ\r
435/\r
436 TAD ISVBIT\r
437DOTRIG, AND P377 /THE "AND" INSURES THAT\r
438 /THE HI ORD BITS ARE\r
439 /CLRED SO THAT ISVBIT\r
440 /GOES TO 0 WHEN ALL\r
441 /STRIGS HAVE BEEN\r
442 /DISPOSITIONED. IE\r
443 /CLR OVRFLO BIT FOR DK,KW\r
444 /AND CLR PRE-EVENT BIT\r
445 /ON KW IF IT IS SET\r
446 SZA /DONE ?\r
447 JMP LOP2 /NO\r
448 TAD CLINT /CALL USER EXTENDED\r
449 SZA CLA /CLOCK ROUT ?\r
450 JMS% CLINT+1 /YES\r
451 JMP% IDOCLK /RTN TO IHANDL\r
452\fFCNPTR,\r
453OVRCNT,\r
454KONQI, ADDR ONQI\r
455P17, 17\r
456P377, 377\r
457FCNWD, 0 /FPP XRS\r
458CPTYP, 0\r
459RATE, 0\r
460P1, 1\r
461P2, 2\r
462OVRFLO,\r
463FCNTBL, ADDR CLKTBL\r
464KSTFLG, ADDR STFLG-1\r
465 IFNSW 1 <\r
466#CLINT, 0;0\r
467CLINT= #CLINT >\r
468 IFSW 1 <\r
469#CLIN1, 0;0\r
470CLINT= #CLIN1 >\r
471 IFNSW 4 <\r
472 IFSW 2 <\r
473/ ENTRY TIME /FIGURE WHAT TIME IT IS\r
474TIME, >\r
475 >\r
476 JSA SETUP\r
477 FLDA RPTR /=27;X;X IS USED TO FLOAT\r
478 STARTD\r
479 FLDA# OVRCNT /NUM OF CLK OVRFLOS SINCE\r
480 STARTF /TIME 0\r
481 FNORM\r
482 FMUL TOVR /=NUM OF BASIC TICKS PER\r
483 /CLOCK OVER FLOW.\r
484 /FAC=NUM OF TICKS SINCE\r
485 /TIME 0.\r
486 FDIV% RPTR,RATE /DIV BY BASIC RATE IN HZ\r
487 /OR 1 IF EXTERNAL CLK.\r
488 FSTA% FTMP0 /GIVE ANS TO CALLER, ALSO\r
489 /LEAVE ANS IN FAC IN\r
490 /CASE TIME WAS A FCN\r
491 /CALL. ANS=ELAPSED TIME IN\r
492 /SECONDS SINCE TIME 0 OR\r
493 /NUM OF EXTERNAL UNIT\r
494 JA GOBAK /TICKS\r
495\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