Release 941227
[wine/multimedia.git] / miscemu / int26.c
blobe6a7da877a38ce38465d98aa1d876d2aa068721e
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include "registers.h"
4 #include "msdos.h"
5 #include "segmem.h"
6 #include "wine.h"
7 #include "miscemu.h"
8 #include "stddebug.h"
9 /* #define DEBUG_INT */
10 #include "debug.h"
12 int do_int26(struct sigcontext_struct *context)
14 BYTE *dataptr = SAFEMAKEPTR(DS, BX);
15 DWORD begin, length;
17 if (CX == 0xffff) {
18 begin = getdword(dataptr);
19 length = getword(&dataptr[4]);
20 dataptr = (BYTE *) getdword(&dataptr[6]);
22 } else {
23 begin = DX;
24 length = CX;
27 dprintf_int(stdnimp,"int26: abs diskwrite, drive %d, sector %ld, "
28 "count %ld, buffer %d\n", EAX & 0xff, begin, length, (int) dataptr);
30 ResetCflag;
32 /* push flags on stack */
33 SP -= sizeof(WORD);
34 setword(SAFEMAKEPTR(SS,SP), (WORD) EFL);
36 return 1;