Release 940420
[wine] / miscemu / ioports.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <time.h>
4 #include "msdos.h"
5 #include "wine.h"
6
7 static BYTE cmosaddress;
8
9 static BYTE cmosimage[64] = {
10         0x27, 0x34, 0x31, 0x47, 0x16, 0x15, 0x00, 0x01,
11         0x04, 0x94, 0x26, 0x02, 0x50, 0x80, 0x00, 0x00,
12         0x40, 0xb1, 0x00, 0x9c, 0x01, 0x80, 0x02, 0x00,
13         0x1c, 0x00, 0x00, 0xad, 0x02, 0x10, 0x00, 0x00,
14         0x08, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00,
15         0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x03, 0x58,
16         0x00, 0x1c, 0x19, 0x81, 0x00, 0x0e, 0x00, 0x80,
17         0x1b, 0x7b, 0x21, 0x00, 0x00, 0x00, 0x05, 0x5f };
18
19 void inportb(struct sigcontext_struct *context)
20 {
21         fprintf(stderr, "IO: inb (%x)\n", EDX & 0xffff);
22
23         switch(EDX & 0xffff)
24         {
25                 case 0x70:
26                         EAX = (EAX & 0xffffff00L) | cmosaddress;
27                         break;
28                 case 0x71:
29                         EAX = (EAX & 0xffffff00L) | cmosimage[cmosaddress & 0x3f];
30                         break;
31                 default:
32         }
33 }
34
35 void inport(struct sigcontext_struct *context)
36 {
37         fprintf(stderr, "IO: in (%x)\n", EDX & 0xffff);
38
39         EAX = (EAX & 0xffff0000L) | 0xffff;
40 }
41
42 void outportb(struct sigcontext_struct *context)
43 {
44         fprintf(stderr, "IO: outb (%x), %x\n", EDX & 0xffff, EAX & 0xff);
45
46         switch (EDX & 0xffff)
47         {
48                 case 0x70:
49                         cmosaddress = EAX & 0xff;
50                         break;
51                 case 0x71:
52                         cmosimage[cmosaddress & 0x3f] = EAX & 0xff;
53                         break;
54                 default:
55         }
56 }
57
58 void outport(struct sigcontext_struct *context)
59 {
60         fprintf(stderr, "IO: out (%x), %x\n", EDX & 0xffff, EAX & 0xffff);
61 }