/* MS-DOS specific Lisp utilities. Coded by Manabu Higashida, 1991.
Major changes May-July 1993 Morten Welinder (only 10% original code left)
- Copyright (C) 1991, 1993, 1996, 1997, 1998, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 1991, 1993, 1996-1998, 2001-2012 Free Software Foundation, Inc.
This file is part of GNU Emacs.
#include <dos.h>
#include <setjmp.h>
#include "lisp.h"
+#include "character.h"
#include "buffer.h"
#include "termchar.h"
#include "frame.h"
#include "dosfns.h"
#include "msdos.h"
#include "dispextern.h"
-#include "character.h"
#include "coding.h"
#include "process.h"
#include <dpmi.h>
CHECK_NUMBER (interrupt);
no = (unsigned long) XINT (interrupt);
CHECK_VECTOR (registers);
- if (no < 0 || no > 0xff || XVECTOR (registers)-> size != 8)
+ if (no < 0 || no > 0xff || ASIZE (registers) != 8)
return Qnil;
for (i = 0; i < 8; i++)
- CHECK_NUMBER (XVECTOR (registers)->contents[i]);
+ CHECK_NUMBER (AREF (registers, i));
- inregs.x.ax = (unsigned long) XFASTINT (XVECTOR (registers)->contents[0]);
- inregs.x.bx = (unsigned long) XFASTINT (XVECTOR (registers)->contents[1]);
- inregs.x.cx = (unsigned long) XFASTINT (XVECTOR (registers)->contents[2]);
- inregs.x.dx = (unsigned long) XFASTINT (XVECTOR (registers)->contents[3]);
- inregs.x.si = (unsigned long) XFASTINT (XVECTOR (registers)->contents[4]);
- inregs.x.di = (unsigned long) XFASTINT (XVECTOR (registers)->contents[5]);
- inregs.x.cflag = (unsigned long) XFASTINT (XVECTOR (registers)->contents[6]);
- inregs.x.flags = (unsigned long) XFASTINT (XVECTOR (registers)->contents[7]);
+ inregs.x.ax = (unsigned long) XFASTINT (AREF (registers, 0));
+ inregs.x.bx = (unsigned long) XFASTINT (AREF (registers, 1));
+ inregs.x.cx = (unsigned long) XFASTINT (AREF (registers, 2));
+ inregs.x.dx = (unsigned long) XFASTINT (AREF (registers, 3));
+ inregs.x.si = (unsigned long) XFASTINT (AREF (registers, 4));
+ inregs.x.di = (unsigned long) XFASTINT (AREF (registers, 5));
+ inregs.x.cflag = (unsigned long) XFASTINT (AREF (registers, 6));
+ inregs.x.flags = (unsigned long) XFASTINT (AREF (registers, 7));
int86 (no, &inregs, &outregs);
- XVECTOR (registers)->contents[0] = make_number (outregs.x.ax);
- XVECTOR (registers)->contents[1] = make_number (outregs.x.bx);
- XVECTOR (registers)->contents[2] = make_number (outregs.x.cx);
- XVECTOR (registers)->contents[3] = make_number (outregs.x.dx);
- XVECTOR (registers)->contents[4] = make_number (outregs.x.si);
- XVECTOR (registers)->contents[5] = make_number (outregs.x.di);
- XVECTOR (registers)->contents[6] = make_number (outregs.x.cflag);
- XVECTOR (registers)->contents[7] = make_number (outregs.x.flags);
+ ASET (registers, 0, make_number (outregs.x.ax));
+ ASET (registers, 1, make_number (outregs.x.bx));
+ ASET (registers, 2, make_number (outregs.x.cx));
+ ASET (registers, 3, make_number (outregs.x.dx));
+ ASET (registers, 4, make_number (outregs.x.si));
+ ASET (registers, 5, make_number (outregs.x.di));
+ ASET (registers, 6, make_number (outregs.x.cflag));
+ ASET (registers, 7, make_number (outregs.x.flags));
return registers;
}
CHECK_NUMBER (address);
offs = (unsigned long) XINT (address);
CHECK_VECTOR (vector);
- len = XVECTOR (vector)-> size;
+ len = ASIZE (vector);
if (len < 1 || len > 2048 || offs < 0 || offs > 0xfffff - len)
return Qnil;
buf = alloca (len);
dosmemget (offs, len, buf);
for (i = 0; i < len; i++)
- XVECTOR (vector)->contents[i] = make_number (buf[i]);
+ ASET (vector, i, make_number (buf[i]));
return vector;
}
CHECK_NUMBER (address);
offs = (unsigned long) XINT (address);
CHECK_VECTOR (vector);
- len = XVECTOR (vector)-> size;
+ len = ASIZE (vector);
if (len < 1 || len > 2048 || offs < 0 || offs > 0xfffff - len)
return Qnil;
buf = alloca (len);
for (i = 0; i < len; i++)
{
- CHECK_NUMBER (XVECTOR (vector)->contents[i]);
- buf[i] = (unsigned char) XFASTINT (XVECTOR (vector)->contents[i]) & 0xFF;
+ CHECK_NUMBER (AREF (vector, i));
+ buf[i] = (unsigned char) XFASTINT (AREF (vector, i)) & 0xFF;
}
dosmemput (buf, len, offs);
return Qt;
}
\f
-/* country info */
-EMACS_INT dos_country_code;
-EMACS_INT dos_codepage;
-EMACS_INT dos_timezone_offset;
-EMACS_INT dos_decimal_point;
-EMACS_INT dos_keyboard_layout;
unsigned char dos_country_info[DOS_COUNTRY_INFO];
static unsigned char usa_country_info[DOS_COUNTRY_INFO] = {
0, 0, /* date format */
0, 0, 0, 0, 0, 0, 0, 0, 0, 0 /* reserved */
};
-EMACS_INT dos_hyper_key;
-EMACS_INT dos_super_key;
-EMACS_INT dos_keypad_mode;
-
-Lisp_Object Vdos_version;
-Lisp_Object Vdos_display_scancodes;
-
#ifndef HAVE_X_WINDOWS
static unsigned dos_windows_version;
-Lisp_Object Vdos_windows_version;
-
char parent_vm_title[50]; /* Ralf Brown says 30 is enough */
int w95_set_virtual_machine_title (const char *);
{
dpmiregs.x.ax = 0x168e;
dpmiregs.x.dx = 3; /* get VM title */
- dpmiregs.x.cx = sizeof(parent_vm_title) - 1;
+ dpmiregs.x.cx = sizeof (parent_vm_title) - 1;
dpmiregs.x.es = __tb >> 4;
dpmiregs.x.di = __tb & 15;
dpmiregs.x.sp = dpmiregs.x.ss = dpmiregs.x.flags = 0;
_go32_dpmi_simulate_int (0x2f, &dpmiregs);
if (dpmiregs.x.ax == 1)
- dosmemget (__tb, sizeof(parent_vm_title), parent_vm_title);
+ dosmemget (__tb, sizeof (parent_vm_title), parent_vm_title);
}
}
else
Fsymbol_value (intern ("before-init-time"))),
attrs);
attrs = Fcons (Fcons (Qvsize,
- make_fixnum_or_float ((unsigned long)sbrk(0)/1024)),
+ make_fixnum_or_float ((unsigned long)sbrk (0)/1024)),
attrs);
attrs = Fcons (Fcons (Qetime, tem), attrs);
#ifndef SYSTEM_MALLOC
defsubr (&Smsdos_mouse_p);
#endif
- DEFVAR_INT ("dos-country-code", &dos_country_code,
+ DEFVAR_INT ("dos-country-code", dos_country_code,
doc: /* The country code returned by Dos when Emacs was started.
Usually this is the international telephone prefix. */);
- DEFVAR_INT ("dos-codepage", &dos_codepage,
+ DEFVAR_INT ("dos-codepage", dos_codepage,
doc: /* The codepage active when Emacs was started.
The following are known:
437 United States
863 Canada (French)
865 Norway/Denmark */);
- DEFVAR_INT ("dos-timezone-offset", &dos_timezone_offset,
+ DEFVAR_INT ("dos-timezone-offset", dos_timezone_offset,
doc: /* The current timezone offset to UTC in minutes.
Implicitly modified when the TZ variable is changed. */);
- DEFVAR_LISP ("dos-version", &Vdos_version,
+ DEFVAR_LISP ("dos-version", Vdos_version,
doc: /* The (MAJOR . MINOR) Dos version (subject to modification with setver). */);
#ifndef HAVE_X_WINDOWS
- DEFVAR_LISP ("dos-windows-version", &Vdos_windows_version,
+ DEFVAR_LISP ("dos-windows-version", Vdos_windows_version,
doc: /* The (MAJOR . MINOR) Windows version for DOS session on MS-Windows. */);
#endif
- DEFVAR_LISP ("dos-display-scancodes", &Vdos_display_scancodes,
- doc: /* *Controls whether DOS raw keyboard events are displayed as you type.
+ DEFVAR_LISP ("dos-display-scancodes", Vdos_display_scancodes,
+ doc: /* Whether DOS raw keyboard events are displayed as you type.
When non-nil, the keyboard scan-codes are displayed at the bottom right
corner of the display (typically at the end of the mode line).
The output format is: scan code:char code*modifiers. */);
Vdos_display_scancodes = Qnil;
- DEFVAR_INT ("dos-hyper-key", &dos_hyper_key,
- doc: /* *If set to 1, use right ALT key as hyper key.
+ DEFVAR_INT ("dos-hyper-key", dos_hyper_key,
+ doc: /* If set to 1, use right ALT key as hyper key.
If set to 2, use right CTRL key as hyper key. */);
dos_hyper_key = 0;
- DEFVAR_INT ("dos-super-key", &dos_super_key,
- doc: /* *If set to 1, use right ALT key as super key.
+ DEFVAR_INT ("dos-super-key", dos_super_key,
+ doc: /* If set to 1, use right ALT key as super key.
If set to 2, use right CTRL key as super key. */);
dos_super_key = 0;
- DEFVAR_INT ("dos-keypad-mode", &dos_keypad_mode,
- doc: /* *Controls what key code is returned by a key in the numeric keypad.
+ DEFVAR_INT ("dos-keypad-mode", dos_keypad_mode,
+ doc: /* Controls what key code is returned by a key in the numeric keypad.
The `numlock ON' action is only taken if no modifier keys are pressed.
The value is an integer constructed by adding the following bits together:
0x200 ALT-0..ALT-9 in top-row produces shifted codes. */);
dos_keypad_mode = 0x75;
- DEFVAR_INT ("dos-keyboard-layout", &dos_keyboard_layout,
+ DEFVAR_INT ("dos-keyboard-layout", dos_keyboard_layout,
doc: /* Contains the country code for the current keyboard layout.
Use msdos-set-keyboard to select another keyboard layout. */);
dos_keyboard_layout = 1; /* US */
- DEFVAR_INT ("dos-decimal-point", &dos_decimal_point,
+ DEFVAR_INT ("dos-decimal-point", dos_decimal_point,
doc: /* The character to produce when kp-decimal key is pressed.
If non-zero, this variable contains the character to be returned when the
decimal point key in the numeric keypad is pressed when Num Lock is on.
}
#endif /* MSDOS */
-/* arch-tag: f5ea8847-a014-42c9-83f5-7738ad640b17
- (do not change this comment) */