Subversion Repositories SvarDOS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1556 mateusz.vi 1
/*
2
 * replacement for a couple of libc functions
3
 */
4
 
5
#include <i86.h>
6
#include <stddef.h>
7
 
8
#include "libc.h"
9
 
10
 
11
unsigned short mdr_dos_write(unsigned short handle, const void far *buf, unsigned short count, unsigned short *bytes) {
12
  unsigned short res = 0;
13
  unsigned short resax = 0;
14
  unsigned short buf_seg = FP_SEG(buf);
15
  unsigned short buf_off = FP_OFF(buf);
16
 
17
  _asm {
18
    push bx
19
    push cx
20
    push dx
21
 
22
    mov ah, 0x40
23
    mov bx, handle
24
    mov cx, count
25
    mov dx, buf_off
26
    push ds
27
    mov ds, buf_seg
28
 
29
    int 0x21
30
    pop ds
31
    jnc done
32
    mov res, ax
33
 
34
    done:
35
    mov resax, ax
36
 
37
    pop dx
38
    pop cx
39
    pop bx
40
  }
41
 
42
  *bytes = resax;
43
  return(res);
44
}