initial
[fpgammix.git] / workloads / test-interval / test-interval.S
blobc49904f880fcbc11ebb7fbc68beb6422af492827
1 #define IOSPACE $250
2         .text
4 /*      LOC     #10000 */
6 Main:   seth    IOSPACE,1               /* IOSPACE pointer */
7         setl    $0,interruptvector
8         put     rTT,$0
9         setl    $0,#FFFF
10         put     rK,$0
11         get     $0,rK
13         setl    $0,100
14         put     rI,$0
16 loop:   addu    $255,$255,1
17         jmp     loop
19 #if 0
20 interruptvector:
21         setl    $255,0
22         put     rQ,$255
23         setl    $255,100
24         put     rI,$255
25         nxor    $255,$255,$255
26         resume  1
27 #else
29 interruptvector:
30         pushj   255,interrupthandler/* To allocate some free variables */
31         put     rJ,$255         /* Restore rJ */
32         nxor    $255,$0,$0      /* Set up new interrupt mask (enable all) */
33         resume  1
35 /* Must preserve $255 */
36 interrupthandler:
37         get     $0,rQ           /* All pending interrupts */
38         subu    $1,$0,1         /* This and the following ... */
39         sadd    $2,$1,$0        /* ... calculates the index of the highest priority */
40         and     $0,$0,$1        /* Clears just the highest priority one */
41         put     rQ,$0
43         setl    $0,100
44         put     rI,$0
46         addu    $2,$2,'A'
47         stbu    $2,IOSPACE      /* Do something with the index */
48         pop     0,0
49 #endif