annotate 3rdparty/packages/cc/sources/intercept.a @ 2609:9dd4f422aac7

Added NitrOS-9 ROM Kit from Cloud-9
author Boisy Pitre <boisy.pitre@nuance.com>
date Tue, 31 Jan 2012 13:57:35 -0600
parents 0198655f2552
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
867
0198655f2552 Added sources
boisy
parents:
diff changeset
1 * 'Signal' and 'intercept' are definitely incompatible and
0198655f2552 Added sources
boisy
parents:
diff changeset
2 * use of both in a program will have undefined results.
0198655f2552 Added sources
boisy
parents:
diff changeset
3 * In order to protect the programmer from this a dummy global
0198655f2552 Added sources
boisy
parents:
diff changeset
4 * label is declared in both relocatable modules which will produce
0198655f2552 Added sources
boisy
parents:
diff changeset
5 * an 'entry name clash' error in the loader if an attempt is made
0198655f2552 Added sources
boisy
parents:
diff changeset
6 * to use both.
0198655f2552 Added sources
boisy
parents:
diff changeset
7
0198655f2552 Added sources
boisy
parents:
diff changeset
8 use ..../defs/os9defs.a
0198655f2552 Added sources
boisy
parents:
diff changeset
9 psect intercept_a,0,0,1,0,0
0198655f2552 Added sources
boisy
parents:
diff changeset
10
0198655f2552 Added sources
boisy
parents:
diff changeset
11 vsect
0198655f2552 Added sources
boisy
parents:
diff changeset
12 intsave rmb 2 place for C routine address
0198655f2552 Added sources
boisy
parents:
diff changeset
13 endsect
0198655f2552 Added sources
boisy
parents:
diff changeset
14
0198655f2552 Added sources
boisy
parents:
diff changeset
15 _sigint:
0198655f2552 Added sources
boisy
parents:
diff changeset
16 * intercept(func)
0198655f2552 Added sources
boisy
parents:
diff changeset
17 intercep:
0198655f2552 Added sources
boisy
parents:
diff changeset
18 intercept:
0198655f2552 Added sources
boisy
parents:
diff changeset
19 pshs u save register variable
0198655f2552 Added sources
boisy
parents:
diff changeset
20
0198655f2552 Added sources
boisy
parents:
diff changeset
21 tfr y,u set data are pointer
0198655f2552 Added sources
boisy
parents:
diff changeset
22 ldx 4,s get C function address
0198655f2552 Added sources
boisy
parents:
diff changeset
23 stx intsave,y save it for the receiver
0198655f2552 Added sources
boisy
parents:
diff changeset
24 leax receiver,pcr get the address for OS-9
0198655f2552 Added sources
boisy
parents:
diff changeset
25
0198655f2552 Added sources
boisy
parents:
diff changeset
26 os9 F$ICPT call os9
0198655f2552 Added sources
boisy
parents:
diff changeset
27 puls u restore register variable
0198655f2552 Added sources
boisy
parents:
diff changeset
28
0198655f2552 Added sources
boisy
parents:
diff changeset
29 lbra _sysret
0198655f2552 Added sources
boisy
parents:
diff changeset
30
0198655f2552 Added sources
boisy
parents:
diff changeset
31 * This is where OS-9 will pass control when the process has been
0198655f2552 Added sources
boisy
parents:
diff changeset
32 * sent a signal. All that is needed is to run the intercept routine
0198655f2552 Added sources
boisy
parents:
diff changeset
33 * and execute 'rti'.
0198655f2552 Added sources
boisy
parents:
diff changeset
34 receiver
0198655f2552 Added sources
boisy
parents:
diff changeset
35 tfr u,y set the data pointer
0198655f2552 Added sources
boisy
parents:
diff changeset
36 clra clear the MSB
0198655f2552 Added sources
boisy
parents:
diff changeset
37 pshs d stack the signal number
0198655f2552 Added sources
boisy
parents:
diff changeset
38 jsr [intsave,y] go run the routine
0198655f2552 Added sources
boisy
parents:
diff changeset
39 leas 2,s reset the stack
0198655f2552 Added sources
boisy
parents:
diff changeset
40 rti and return
0198655f2552 Added sources
boisy
parents:
diff changeset
41 endsect