changed reading hint
[gromacs/adressmacs.git] / src / gmxlib / delay.s
blob9a20698026e642ba68120efbfd2225314abf8fb3
1 //
2 // @(#) delay.s 1.5 11/5/92
3 //
4 //
5 // GROMACS - Groningen Machine for Chemical Simulation
6 // Copyright (c) 1990, 1991, 1992, Groningen University
7 //
8 // Delay routine for the SPC-i860 by A. Sijbers, (c) 1991,1992
9 //
10 // General description:
12 // The routine delay(ms) delays for the number of milli seconds, specified
13 // in the argument. This routine is written in assembler to be independent
14 // of compiler options and optimalisations. Caching effects are ignored.
16 // C-interface:
18 // extern void delay(int ms)
19 // Delays for ms milli seconds.
21 .globl _delay
22 .globl _delay01
24 // extern void delay(int ms)
25 // delays for ms milli seconds.
26 // extern void delay01(int ms01)
27 // delays for ms 0.01 milli seconds.
28 // in:
29 // r16 = ms
30 // modifies:
31 // r16,r17,r18
33 MS_LOOP = 6666 // Experimental value for loop count,
34 // accuracy: 1 percent
36 _delay:
37 adds 1,r0,r18 // decrement
38 subs 0,r16,r0
39 bnc delay_done
40 subs r16,r18,r16
41 mov MS_LOOP,r17
42 loop:
43 subs 0,r17,r0
44 bnc _delay
45 subs r17,r18,r17
46 br loop
47 nop
48 delay_done:
49 bri r1
50 nop
52 MS01_LOOP = 66 // Experimental value for loop count,
53 // accuracy: 1 percent
55 _delay01:
56 adds 1,r0,r18 // decrement
57 subs 0,r16,r0
58 bnc delay01_done
59 subs r16,r18,r16
60 mov MS01_LOOP,r17
61 loop01:
62 subs 0,r17,r0
63 bnc _delay01
64 subs r17,r18,r17
65 br loop01
66 nop
67 delay01_done:
68 bri r1
69 nop