# HG changeset patch # User Richard M. Stallman # Date 774161882 0 # Node ID d48c2b01fba5a7903c9c2cc1207bbc0dab4ddb45 # Parent b743577d12c29499425b2da9efe326a1569f09ed (mouse_init1): Use alternate mouse detection for old mouse drivers. (mouse_get_pos): Downscale coordinates by 8. diff -r b743577d12c2 -r d48c2b01fba5 src/msdos.c --- a/src/msdos.c Thu Jul 14 03:46:11 1994 +0000 +++ b/src/msdos.c Thu Jul 14 04:58:02 1994 +0000 @@ -1147,8 +1147,8 @@ *f = selected_frame; *bar_window = Qnil; gettimeofday (&tv, NULL); - *x = make_number (regs.x.cx); - *y = make_number (regs.x.dx); + *x = make_number (regs.x.cx / 8); + *y = make_number (regs.x.dx / 8); *time = tv.tv_usec; mouse_moved = 0; } @@ -1174,9 +1174,22 @@ union REGS regs; int present; + if (!internal_terminal) + return 0; + regs.x.ax = 0x0021; int86 (0x33, ®s, ®s); - present = internal_terminal && (regs.x.ax & 0xffff) == 0xffff; + present = (regs.x.ax & 0xffff) == 0xffff; + if (!present) + { + /* Reportedly, the above doesn't work for some mouse drivers. There + is an additional detection method that should work, but might be + a little slower. Use that as an alternative. */ + regs.x.ax = 0x0000; + int86 (0x33, ®s, ®s); + present = (regs.x.ax & 0xffff) == 0xffff; + } + if (present) { if (regs.x.bx == 3)