]> git.lizzy.rs Git - plan9front.git/blobdiff - sys/src/cmd/scram.c
kernel: keep segment locked for data2txt
[plan9front.git] / sys / src / cmd / scram.c
index f61a0884159221d9c58a5437f57769d69d33859b..7bd2299fe3ad58ab8e1d3193e87e40e6b5011fac 100644 (file)
@@ -1,20 +1,36 @@
 #include <u.h>
 #include </386/include/ureg.h>
-typedef struct Ureg Ureg;
 #include <libc.h>
 
+struct Ureg u;
+int fd;
+
+void
+apm(void)
+{
+       seek(fd, 0, 0);
+       if(write(fd, &u, sizeof u) < 0)
+               sysfatal("write: %r");
+       seek(fd, 0, 0);
+       if(read(fd, &u, sizeof u) < 0)
+               sysfatal("read: %r");
+       if(u.flags & 1)
+               sysfatal("apm: %lux", (u.ax>>8) & 0xFF);
+}
+
 void
 main()
 {
-       Ureg ureg;
-       int fd;
-       
-       fd = open("/dev/apm", OWRITE);
-       if(fd < 0) sysfatal("%r");
-       memset(&ureg, 0, sizeof ureg);
-       ureg.ax = 0x5307;
-       ureg.bx = 0x0001;
-       ureg.cx = 0x0003;
-       ureg.trap = 0x15;
-       write(fd, &ureg, sizeof ureg);
+       if((fd = open("/dev/apm", ORDWR)) < 0)
+               if((fd = open("#P/apm", ORDWR)) < 0)
+                       sysfatal("open: %r");
+
+       u.ax = 0x530E;
+       u.bx = 0x0000;
+       u.cx = 0x0102;
+       apm();
+       u.ax = 0x5307;
+       u.bx = 0x0001;
+       u.cx = 0x0003;
+       apm();
 }