]> git.lizzy.rs Git - plan9front.git/blob - sys/src/boot/pc/apm.s
merge
[plan9front.git] / sys / src / boot / pc / apm.s
1 #include "x16.h"
2 #include "mem.h"
3
4 TEXT apm(SB), $0
5         MOVL id+4(SP), BX
6         CALL rmode16(SB)
7
8         PUSHR(rBX)
9         LWI(0x5300, rAX)
10         BIOSCALL(0x15)
11         POPR(rBX)
12         JC noapm
13
14         PUSHR(rBX)
15         LWI(0x5304, rAX)
16         BIOSCALL(0x15)
17         POPR(rBX)
18         CLC
19
20         /* connect */
21         LWI(0x5303, rAX)
22         BIOSCALL(0x15)
23         JC noapm
24
25         OPSIZE; PUSHR(rSI)
26         OPSIZE; PUSHR(rBX)
27         PUSHR(rDI)
28         PUSHR(rDX)
29         PUSHR(rCX)
30         PUSHR(rAX)
31
32         LWI(CONFADDR, rDI)
33
34         /*
35          * write APM data.  first four bytes are APM\0.
36          */
37         LWI(0x5041, rAX)
38         STOSW
39
40         LWI(0x004d, rAX)
41         STOSW
42
43         LWI(8, rCX)
44 apmmove:
45         POPR(rAX)
46         STOSW
47         LOOP apmmove
48
49 noapm:
50         CALL16(pmode32(SB))
51         RET