//sved/trunk/libc.c |
---|
29,19 → 29,14 |
unsigned short mdr_dos_fopen(const char *fname, unsigned short *fhandle) { |
unsigned short res = 0; |
unsigned short handle = 0; |
unsigned short fname_seg = FP_SEG(fname); |
unsigned short fname_off = FP_OFF(fname); |
_asm { |
push cx |
push dx |
mov ax, 0x3d00 |
mov dx, fname_off |
mov dx, fname |
xor cl, cl |
push ds |
mov ds, fname_seg |
int 0x21 |
pop ds |
jc err |
mov handle, ax |
jmp done |
112,8 → 107,7 |
} |
unsigned short mdr_dos_resizeblock(unsigned short siz, unsigned short segn, unsigned short *maxsiz) { |
unsigned short resbx = 0; |
unsigned short mdr_dos_resizeblock(unsigned short siz, unsigned short segn) { |
unsigned short res = 0; |
_asm { |
125,7 → 119,6 |
mov es, segn |
int 0x21 |
jnc done |
mov resbx, bx |
mov res, ax |
done: |
134,7 → 127,6 |
pop bx |
} |
*maxsiz = resbx; |
return(res); |
} |
//sved/trunk/libc.h |
---|
11,7 → 11,7 |
unsigned short mdr_dos_fclose(unsigned short handle); |
unsigned short _dos_freemem(unsigned short segn); |
unsigned short mdr_dos_allocmem(unsigned short siz); |
unsigned short mdr_dos_resizeblock(unsigned short siz, unsigned short segn, unsigned short *maxsiz); |
unsigned short mdr_dos_resizeblock(unsigned short siz, unsigned short segn); |
unsigned short mdr_dos_read(unsigned short handle, void far *buf, unsigned short count, unsigned short *bytes); |
unsigned short mdr_dos_write(unsigned short handle, const void far *buf, unsigned short count, unsigned short *bytes); |
//sved/trunk/sved.c |
---|
114,11 → 114,10 |
static int curline_resize(struct file *db, unsigned short newsiz) { |
unsigned short maxavail; |
struct line far *newptr; |
/* try resizing the block (much faster) */ |
if (mdr_dos_resizeblock((sizeof(struct line) + newsiz + 15) / 16, FP_SEG(db->cursor), &maxavail) == 0) return(0); |
if (mdr_dos_resizeblock((sizeof(struct line) + newsiz + 15) / 16, FP_SEG(db->cursor)) == 0) return(0); |
/* create a new block and copy data over */ |
newptr = line_calloc(newsiz); |