Added upstream from http://ftp.icm.edu.pl/pub/loglan/
[loglan.git] / sources / new-s5r4 / dosgraf1.c
1 /*     Loglan82 Compiler&Interpreter
2      Copyright (C) 1993 Institute of Informatics, University of Warsaw
3      Copyright (C)  1993, 1994 LITA, Pau
4      
5      This program is free software; you can redistribute it and/or modify
6      it under the terms of the GNU General Public License as published by
7      the Free Software Foundation; either version 2 of the License, or
8      (at your option) any later version.
9      
10      This program is distributed in the hope that it will be useful,
11      but WITHOUT ANY WARRANTY; without even the implied warranty of
12      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13      GNU General Public License for more details.
14      
15              You should have received a copy of the GNU General Public License
16              along with this program; if not, write to the Free Software
17              Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18
19  contacts:  Andrzej.Salwicki@univ-pau.fr
20
21 or             Andrzej Salwicki
22                 LITA   Departement d'Informatique
23                 Universite de Pau
24                 Avenue de l'Universite
25                 64000 Pau   FRANCE
26                  tel.  ++33 59923154    fax. ++33 59841696
27
28 =======================================================================
29 */
30
31 #include <dos.h>
32 #include "graf\graf.h"
33
34
35 static union REGS r;
36
37 #ifndef NO_PROTOTYPES
38 static char *normalize(char *);
39 static int mouse(int,word *,word *,word *);
40 #else
41 static char *normalize();
42 static int mouse();
43 #endif
44
45
46
47 static char *normalize(addr)    /* Normalize segmented address */
48     char *addr;
49 {
50     union{
51         char *address;
52         unsigned int words[2];
53     } conv;
54     conv.address = addr;
55 #if !WORD_32BIT
56     conv.words[1] += conv.words[0] / 16;
57     conv.words[0] %= 16;
58 #endif
59     return (conv.address);
60 }
61
62
63
64 static int mouse(func, bx, cx, dx)      /* Call mouse driver INT 33H */
65 int func;
66 word *bx, *cx, *dx;
67 {
68     union REGS r;
69     r.x.ax = func;
70     r.x.bx = *bx;
71     r.x.cx = *cx;
72     r.x.dx = *dx;
73     int86(0x33, &r, &r);
74     *bx = (int) r.x.bx;
75     *cx = (int) r.x.cx;
76     *dx = (int) r.x.dx;
77     return(r.x.ax);
78 }
79