Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
98058eb1
Commit
98058eb1
authored
Nov 24, 2002
by
Jukka Heinonen
Committed by
Alexandre Julliard
Nov 24, 2002
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Moved handlers for int11, int15 and int5c to winedos.
parent
710b86e4
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
184 additions
and
137 deletions
+184
-137
kernel32.spec
dlls/kernel/kernel32.spec
+0
-3
Makefile.in
dlls/ntdll/Makefile.in
+0
-3
Makefile.in
dlls/winedos/Makefile.in
+4
-1
dosexe.h
dlls/winedos/dosexe.h
+9
-0
int11.c
dlls/winedos/int11.c
+141
-0
int15.c
dlls/winedos/int15.c
+16
-6
int5c.c
dlls/winedos/int5c.c
+3
-4
interrupts.c
dlls/winedos/interrupts.c
+0
-6
miscemu.h
include/miscemu.h
+0
-9
dpmi.c
msdos/dpmi.c
+11
-0
int11.c
msdos/int11.c
+0
-105
No files found.
dlls/kernel/kernel32.spec
View file @
98058eb1
...
...
@@ -1051,11 +1051,8 @@
@ cdecl DOSMEM_GetBlock(long ptr) DOSMEM_GetBlock
@ cdecl DOSMEM_GetDPMISegments() DOSMEM_GetDPMISegments
@ cdecl DOSMEM_Init(long) DOSMEM_Init
@ stdcall INT_Int11Handler(ptr) INT_Int11Handler
@ stdcall INT_Int15Handler(ptr) INT_Int15Handler
@ stdcall INT_Int25Handler(ptr) INT_Int25Handler
@ stdcall INT_Int26Handler(ptr) INT_Int26Handler
@ stdcall NetBIOSCall16(ptr) NetBIOSCall16
@ cdecl LOCAL_Alloc(long long long) LOCAL_Alloc
@ cdecl LOCAL_Compact(long long long) LOCAL_Compact
@ cdecl LOCAL_CountFree(long) LOCAL_CountFree
...
...
dlls/ntdll/Makefile.in
View file @
98058eb1
...
...
@@ -50,12 +50,9 @@ C_SRCS = \
$(TOPOBJDIR)
/msdos/dosconf.c
\
$(TOPOBJDIR)
/msdos/dosmem.c
\
$(TOPOBJDIR)
/msdos/dpmi.c
\
$(TOPOBJDIR)
/msdos/int11.c
\
$(TOPOBJDIR)
/msdos/int15.c
\
$(TOPOBJDIR)
/msdos/int21.c
\
$(TOPOBJDIR)
/msdos/int25.c
\
$(TOPOBJDIR)
/msdos/int26.c
\
$(TOPOBJDIR)
/msdos/int5c.c
\
$(TOPOBJDIR)
/msdos/ioports.c
\
$(TOPOBJDIR)
/msdos/ppdev.c
\
$(TOPOBJDIR)
/msdos/vxd.c
\
...
...
dlls/winedos/Makefile.in
View file @
98058eb1
...
...
@@ -3,7 +3,7 @@ TOPOBJDIR = ../..
SRCDIR
=
@srcdir@
VPATH
=
@srcdir@
MODULE
=
winedos.dll
IMPORTS
=
user32 kernel32 ntdll
IMPORTS
=
user32
advapi32
kernel32 ntdll
ALTNAMES
=
winedos16.dll
EXTRALIBS
=
$(LIBUNICODE)
...
...
@@ -18,8 +18,10 @@ C_SRCS = \
fpu.c
\
int09.c
\
int10.c
\
int11.c
\
int12.c
\
int13.c
\
int15.c
\
int16.c
\
int17.c
\
int19.c
\
...
...
@@ -33,6 +35,7 @@ C_SRCS = \
int33.c
\
int41.c
\
int4b.c
\
int5c.c
\
int67.c
\
interrupts.c
\
ioports.c
\
...
...
dlls/winedos/dosexe.h
View file @
98058eb1
...
...
@@ -116,12 +116,18 @@ extern BYTE WINAPI DOSVM_Int09ReadScan(BYTE*ascii);
extern
void
WINAPI
DOSVM_Int10Handler
(
CONTEXT86
*
);
extern
void
WINAPI
DOSVM_PutChar
(
BYTE
ascii
);
/* int11.c */
extern
void
WINAPI
DOSVM_Int11Handler
(
CONTEXT86
*
);
/* int12.c */
extern
void
WINAPI
DOSVM_Int12Handler
(
CONTEXT86
*
);
/* int13.c */
extern
void
WINAPI
DOSVM_Int13Handler
(
CONTEXT86
*
);
/* int15.c */
extern
void
WINAPI
DOSVM_Int15Handler
(
CONTEXT86
*
);
/* int1a.c */
extern
void
WINAPI
DOSVM_Int1aHandler
(
CONTEXT86
*
);
...
...
@@ -169,6 +175,9 @@ extern void WINAPI DOSVM_Int41Handler(CONTEXT86*);
/* int4b.c */
extern
void
WINAPI
DOSVM_Int4bHandler
(
CONTEXT86
*
);
/* int5c.c */
extern
void
WINAPI
DOSVM_Int5cHandler
(
CONTEXT86
*
);
/* int67.c */
extern
void
WINAPI
DOSVM_Int67Handler
(
CONTEXT86
*
);
extern
void
WINAPI
EMS_Ioctl_Handler
(
CONTEXT86
*
);
...
...
dlls/winedos/int11.c
0 → 100644
View file @
98058eb1
/*
* BIOS interrupt 11h handler
*
* Copyright 1996 Alexandre Julliard
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "config.h"
#include "wine/port.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "windef.h"
#include "winreg.h"
#include "miscemu.h"
#include "msdos.h"
#include "file.h"
#include "wine/unicode.h"
#include "wine/debug.h"
/**********************************************************************
* DOSVM_Int11Handler (WINEDOS16.117)
*
* Handler for int 11h (get equipment list).
*
*
* Borrowed from Ralph Brown's interrupt lists:
*
* bits 15-14: number of parallel devices
* bit 13: [Conv] Internal modem
* bit 12: reserved
* bits 11- 9: number of serial devices
* bit 8: reserved
* bits 7- 6: number of diskette drives minus one
* bits 5- 4: Initial video mode:
* 00b = EGA,VGA,PGA
* 01b = 40 x 25 color
* 10b = 80 x 25 color
* 11b = 80 x 25 mono
* bit 3: reserved
* bit 2: [PS] =1 if pointing device
* [non-PS] reserved
* bit 1: =1 if math co-processor
* bit 0: =1 if diskette available for boot
*
*
* Currently the only of these bits correctly set are:
*
* bits 15-14 } Added by William Owen Smith,
* bits 11-9 } wos@dcs.warwick.ac.uk
* bits 7-6
* bit 2 (always set) ( bit 2 = 4 )
* bit 1 } Robert 'Admiral' Coeyman
* All *nix systems either have a math processor or
* emulate one.
*/
void
WINAPI
DOSVM_Int11Handler
(
CONTEXT86
*
context
)
{
int
diskdrives
=
0
;
int
parallelports
=
0
;
int
serialports
=
0
;
int
x
;
if
(
GetDriveTypeA
(
"A:
\\
"
)
==
DRIVE_REMOVABLE
)
diskdrives
++
;
if
(
GetDriveTypeA
(
"B:
\\
"
)
==
DRIVE_REMOVABLE
)
diskdrives
++
;
if
(
diskdrives
)
diskdrives
--
;
for
(
x
=
0
;
x
<
9
;
x
++
)
{
HKEY
hkey
;
char
option
[
10
];
char
temp
[
256
];
/* serial port name */
strcpy
(
option
,
"COMx"
);
option
[
3
]
=
'1'
+
x
;
option
[
4
]
=
'\0'
;
/* default value */
strcpy
(
temp
,
"*"
);
if
(
!
RegOpenKeyA
(
HKEY_LOCAL_MACHINE
,
"Software
\\
Wine
\\
Wine
\\
Config
\\
serialports"
,
&
hkey
))
{
DWORD
type
;
DWORD
count
=
sizeof
(
temp
);
RegQueryValueExA
(
hkey
,
option
,
0
,
&
type
,
temp
,
&
count
);
RegCloseKey
(
hkey
);
}
if
(
strcmp
(
temp
,
"*"
)
&&
*
temp
!=
'\0'
)
serialports
++
;
/* parallel port name */
strcpy
(
option
,
"LPTx"
);
option
[
3
]
=
'1'
+
x
;
option
[
4
]
=
'\0'
;
/* default value */
strcpy
(
temp
,
"*"
);
if
(
!
RegOpenKeyA
(
HKEY_LOCAL_MACHINE
,
"Software
\\
Wine
\\
Wine
\\
Config
\\
parallelports"
,
&
hkey
))
{
DWORD
type
;
DWORD
count
=
sizeof
(
temp
);
RegQueryValueExA
(
hkey
,
option
,
0
,
&
type
,
temp
,
&
count
);
RegCloseKey
(
hkey
);
}
if
(
strcmp
(
temp
,
"*"
)
&&
*
temp
!=
'\0'
)
parallelports
++
;
}
if
(
serialports
>
7
)
/* 3 bits -- maximum value = 7 */
serialports
=
7
;
if
(
parallelports
>
3
)
/* 2 bits -- maximum value = 3 */
parallelports
=
3
;
SET_AX
(
context
,
(
diskdrives
<<
6
)
|
(
serialports
<<
9
)
|
(
parallelports
<<
14
)
|
0x06
);
}
ms
dos/int15.c
→
dlls/wine
dos/int15.c
View file @
98058eb1
...
...
@@ -21,16 +21,17 @@
#include <stdlib.h>
#include "miscemu.h"
#include "wine/debug.h"
#include "wine/winbase16.h"
WINE_DEFAULT_DEBUG_CHANNEL
(
int
);
/**********************************************************************
*
INT_Int15Handler (WPROCS
.121)
*
DOSVM_Int15Handler (WINEDOS16
.121)
*
* Handler for int 15h
*/
void
WINAPI
INT
_Int15Handler
(
CONTEXT86
*
context
)
void
WINAPI
DOSVM
_Int15Handler
(
CONTEXT86
*
context
)
{
switch
(
AH_reg
(
context
))
{
...
...
@@ -55,7 +56,6 @@ void WINAPI INT_Int15Handler( CONTEXT86 *context )
}
RESET_CFLAG
(
context
);
break
;
case
0x88
:
/* get size of memory above 1 M */
...
...
@@ -64,14 +64,23 @@ void WINAPI INT_Int15Handler( CONTEXT86 *context )
break
;
case
0xc0
:
/* GET CONFIGURATION */
if
(
ISV86
(
context
))
/* real */
if
(
ISV86
(
context
))
{
/* real mode segment */
context
->
SegEs
=
0xf000
;
}
else
context
->
SegEs
=
DOSMEM_BiosSysSeg
;
{
/* KERNEL.194: __F000H - protected mode selector */
FARPROC16
proc
=
GetProcAddress16
(
GetModuleHandle16
(
"KERNEL"
),
(
LPCSTR
)(
ULONG_PTR
)
194
);
context
->
SegEs
=
LOWORD
(
proc
);
}
SET_BX
(
context
,
0xe6f5
);
SET_AH
(
context
,
0x0
);
RESET_CFLAG
(
context
);
break
;
case
0xc2
:
switch
(
AL_reg
(
context
))
{
...
...
@@ -98,7 +107,8 @@ void WINAPI INT_Int15Handler( CONTEXT86 *context )
break
;
case
0x04
:
/* Get Pointing Device Type */
FIXME
(
"Get Pointing Device Type - not implemented
\n
"
);
SET_BH
(
context
,
0x01
);
/*Device id FIXME what is it supposed to be?*/
/* FIXME: BH = Device id, What is it supposed to be? */
SET_BH
(
context
,
0x01
);
break
;
default:
INT_BARF
(
context
,
0x15
);
...
...
ms
dos/int5c.c
→
dlls/wine
dos/int5c.c
View file @
98058eb1
...
...
@@ -25,12 +25,11 @@ WINE_DEFAULT_DEBUG_CHANNEL(int);
/***********************************************************************
* NetBIOSCall (KERNEL.103)
* INT_Int5cHandler (WPROCS.192)
* DOSVM_Int5cHandler (WINEDOS16.192)
*
*
Also handler for interrupt 5c
.
*
Called from NetBIOSCall16
.
*/
void
WINAPI
NetBIOSCall16
(
CONTEXT86
*
context
)
void
WINAPI
DOSVM_Int5cHandler
(
CONTEXT86
*
context
)
{
BYTE
*
ptr
;
ptr
=
MapSL
(
MAKESEGPTR
(
context
->
SegEs
,
BX_reg
(
context
))
);
...
...
dlls/winedos/interrupts.c
View file @
98058eb1
...
...
@@ -25,21 +25,15 @@
WINE_DEFAULT_DEBUG_CHANNEL
(
int
);
/***********************************************************************
* DOSVM_Int11Handler (WINEDOS16.117)
* DOSVM_Int15Handler (WINEDOS16.121)
* DOSVM_Int25Handler (WINEDOS16.137)
* DOSVM_Int26Handler (WINEDOS16.138)
* DOSVM_Int5cHandler (WINEDOS16.192)
*
* FIXME: Interrupt handlers for interrupts implemented in other DLLs.
* These functions should be removed when the interrupt handlers have
* been moved to winedos.
*/
void
WINAPI
DOSVM_Int11Handler
(
CONTEXT86
*
context
)
{
INT_Int11Handler
(
context
);
}
void
WINAPI
DOSVM_Int15Handler
(
CONTEXT86
*
context
)
{
INT_Int15Handler
(
context
);
}
void
WINAPI
DOSVM_Int25Handler
(
CONTEXT86
*
context
)
{
INT_Int25Handler
(
context
);
}
void
WINAPI
DOSVM_Int26Handler
(
CONTEXT86
*
context
)
{
INT_Int26Handler
(
context
);
}
void
WINAPI
DOSVM_Int5cHandler
(
CONTEXT86
*
context
)
{
NetBIOSCall16
(
context
);
}
static
FARPROC16
DOSVM_Vectors16
[
256
];
static
FARPROC48
DOSVM_Vectors48
[
256
];
...
...
include/miscemu.h
View file @
98058eb1
...
...
@@ -196,21 +196,12 @@ extern BOOL INSTR_EmulateInstruction( CONTEXT86 *context );
extern
DWORD
IO_inport
(
int
port
,
int
count
);
extern
void
IO_outport
(
int
port
,
int
count
,
DWORD
value
);
/* msdos/int11.c */
extern
void
WINAPI
INT_Int11Handler
(
CONTEXT86
*
);
/* msdos/int15.c */
extern
void
WINAPI
INT_Int15Handler
(
CONTEXT86
*
);
/* msdos/int25.c */
extern
void
WINAPI
INT_Int25Handler
(
CONTEXT86
*
);
/* msdos/int26.c */
extern
void
WINAPI
INT_Int26Handler
(
CONTEXT86
*
);
/* msdos/int5c.c */
extern
void
WINAPI
NetBIOSCall16
(
CONTEXT86
*
);
/* msdos/dpmi.c */
extern
BOOL
DPMI_LoadDosSystem
(
void
);
...
...
msdos/dpmi.c
View file @
98058eb1
...
...
@@ -55,3 +55,14 @@ BOOL DPMI_LoadDosSystem(void)
#undef GET_ADDR
return
TRUE
;
}
/***********************************************************************
* NetBIOSCall (KERNEL.103)
*
*/
void
WINAPI
NetBIOSCall16
(
CONTEXT86
*
context
)
{
if
(
Dosvm
.
CallBuiltinHandler
||
DPMI_LoadDosSystem
())
Dosvm
.
CallBuiltinHandler
(
context
,
0x5c
);
}
msdos/int11.c
deleted
100644 → 0
View file @
710b86e4
/*
* BIOS interrupt 11h handler
*
* Copyright 1996 Alexandre Julliard
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "config.h"
#include "wine/port.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "windef.h"
#include "miscemu.h"
#include "msdos.h"
#include "file.h"
#include "wine/unicode.h"
#include "wine/debug.h"
/**********************************************************************
* INT_Int11Handler (WPROCS.117)
*
* Handler for int 11h (get equipment list).
*/
void
WINAPI
INT_Int11Handler
(
CONTEXT86
*
context
)
{
int
diskdrives
=
0
;
int
parallelports
=
0
;
int
serialports
=
0
;
int
x
;
/* borrowed from Ralph Brown's interrupt lists
bits 15-14: number of parallel devices
bit 13: [Conv] Internal modem
bit 12: reserved
bits 11- 9: number of serial devices
bit 8: reserved
bits 7- 6: number of diskette drives minus one
bits 5- 4: Initial video mode:
00b = EGA,VGA,PGA
01b = 40 x 25 color
10b = 80 x 25 color
11b = 80 x 25 mono
bit 3: reserved
bit 2: [PS] =1 if pointing device
[non-PS] reserved
bit 1: =1 if math co-processor
bit 0: =1 if diskette available for boot
*/
/* Currently the only of these bits correctly set are:
bits 15-14 } Added by William Owen Smith,
bits 11-9 } wos@dcs.warwick.ac.uk
bits 7-6
bit 2 (always set) ( bit 2 = 4 )
bit 1 } Robert 'Admiral' Coeyman
All *nix systems either have a math processor or
emmulate one.
*/
if
(
GetDriveTypeA
(
"A:
\\
"
)
==
DRIVE_REMOVABLE
)
diskdrives
++
;
if
(
GetDriveTypeA
(
"B:
\\
"
)
==
DRIVE_REMOVABLE
)
diskdrives
++
;
if
(
diskdrives
)
diskdrives
--
;
for
(
x
=
0
;
x
<
9
;
x
++
)
{
WCHAR
temp
[
16
];
WCHAR
comW
[]
=
{
'C'
,
'O'
,
'M'
,
'?'
,
0
};
WCHAR
lptW
[]
=
{
'L'
,
'P'
,
'T'
,
'?'
,
0
};
static
const
WCHAR
serialportsW
[]
=
{
's'
,
'e'
,
'r'
,
'i'
,
'a'
,
'l'
,
'p'
,
'o'
,
'r'
,
't'
,
's'
,
0
};
static
const
WCHAR
parallelportsW
[]
=
{
'p'
,
'a'
,
'r'
,
'a'
,
'l'
,
'l'
,
'e'
,
'l'
,
'p'
,
'o'
,
'r'
,
't'
,
's'
,
0
};
static
const
WCHAR
asteriskW
[]
=
{
'*'
,
0
};
comW
[
3
]
=
'0'
+
x
;
PROFILE_GetWineIniString
(
serialportsW
,
comW
,
asteriskW
,
temp
,
16
);
if
(
strcmpW
(
temp
,
asteriskW
))
serialports
++
;
lptW
[
3
]
=
'0'
+
x
;
PROFILE_GetWineIniString
(
parallelportsW
,
lptW
,
asteriskW
,
temp
,
16
);
if
(
strcmpW
(
temp
,
asteriskW
))
parallelports
++
;
}
if
(
serialports
>
7
)
/* 3 bits -- maximum value = 7 */
serialports
=
7
;
if
(
parallelports
>
3
)
/* 2 bits -- maximum value = 3 */
parallelports
=
3
;
SET_AX
(
context
,
(
diskdrives
<<
6
)
|
(
serialports
<<
9
)
|
(
parallelports
<<
14
)
|
0x06
);
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment