blob: 32ee1146caf05fcc789a6faabeaad10d6a79cbda [file] [log] [blame]
Alexandre Julliard17216f51997-10-12 16:30:17 +00001/*
2 * BIOS interrupt 15h handler
3 */
4
Alexandre Julliard17216f51997-10-12 16:30:17 +00005#include <stdlib.h>
6#include "miscemu.h"
Alexandre Julliard61fece01999-06-26 19:09:08 +00007#include "debugtools.h"
Alexandre Julliard17216f51997-10-12 16:30:17 +00008
Patrik Stridvallb4b9fae1999-04-19 14:56:29 +00009DEFAULT_DEBUG_CHANNEL(int)
10
Alexandre Julliard17216f51997-10-12 16:30:17 +000011
12/**********************************************************************
13 * INT_Int15Handler
14 *
15 * Handler for int 15h (old cassette interrupt).
16 */
Alexandre Julliard617955d1999-06-26 18:40:24 +000017void WINAPI INT_Int15Handler( CONTEXT86 *context )
Alexandre Julliard17216f51997-10-12 16:30:17 +000018{
19 switch(AH_reg(context))
20 {
21 case 0x88: /* get size of memory above 1 M */
22 AX_reg(context) = 64; /* FIXME: are 64K ok? */
23 RESET_CFLAG(context);
24 break;
25
Andreas Mohra7894d91999-01-24 09:32:10 +000026 case 0xc0: /* GET CONFIGURATION */
27 if (ISV86(context)) /* real */
28 ES_reg(context) = 0xf000;
29 else
30 ES_reg(context) = DOSMEM_BiosSysSeg;
31 BX_reg(context) = 0xe6f5;
32 AH_reg(context) = 0x0;
33 RESET_CFLAG(context);
34 break;
Jess Haasd11443e1999-03-17 15:15:14 +000035 case 0xc2:
36 switch(AL_reg(context))
37 {
38 case 0x00: /* Enable-Disable Pointing Device (mouse) */
39 /* BH = newstate, 00h = disabled 01h = enabled */
40 switch(BH_reg(context))
41 {
42 case 0x00:
Alexandre Julliard61fece01999-06-26 19:09:08 +000043 FIXME("Disable Pointing Device - not implemented\n");
Jess Haasd11443e1999-03-17 15:15:14 +000044 break;
45 case 0x01:
Alexandre Julliard61fece01999-06-26 19:09:08 +000046 FIXME("Enable Pointing Device - not implemented\n");
Jess Haasd11443e1999-03-17 15:15:14 +000047 break;
48 default:
49 INT_BARF( context, 0x15 );
50 break;
51 }
52 AH_reg(context) = 0x00; /* successful */
53 break;
54 case 0x02: /* Set Sampling Rate */
55 /* BH = sampling rate */
Alexandre Julliard61fece01999-06-26 19:09:08 +000056 FIXME("Set Sampling Rate - not implemented\n");
Jess Haasd11443e1999-03-17 15:15:14 +000057 AH_reg(context) = 0x00; /* successful */
58 break;
59 case 0x04: /* Get Pointing Device Type */
Alexandre Julliard61fece01999-06-26 19:09:08 +000060 FIXME("Get Pointing Device Type - not implemented\n");
Jess Haasd11443e1999-03-17 15:15:14 +000061 BH_reg(context) = 0x01;/*Device id FIXME what is it suposed to be?*/
62 break;
63 default:
64 INT_BARF( context, 0x15 );
65 }
66 break;
Andreas Mohra7894d91999-01-24 09:32:10 +000067
Alexandre Julliard17216f51997-10-12 16:30:17 +000068 default:
69 INT_BARF( context, 0x15 );
70 }
71}