home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FreeWare Collection 2
/
FreeSoftwareCollection2pd199x-jp.img
/
ms_dos
/
xscrfm51
/
xsave.c
< prev
next >
Wrap
C/C++ Source or Header
|
1990-06-14
|
2KB
|
92 lines
/*
save the transcript buffer (Ver 1.4)
written by Oka / Feb. 7, 1988
modified by SHU
Ver 1.1 on Mar.7,1990
using LSIC-86 試食版
*/
#include <stdio.h>
#include <stdlib.h>
#include <dos.h>
#define XSERV_INT 0xF9
#define RBUFSIZ 1024
#define WBUFSIZ 256
main(ac, av)
int ac;
char *av[];
{
FILE *fptr;
char rbuf[RBUFSIZ];
char wbuf[WBUFSIZ];
char c;
unsigned int rptr, rcnt, i, j;
unsigned int xread(char *, unsigned int, unsigned int);
if (ac < 2)
{
puts("XSAVE : xscript buffer saver ver 1.1");
puts("Usage : xsave filename");
exit(1);
}
if ( (fptr = fopen(av[1], "w")) == NULL ) /* textモードを使用 */
{
printf("Can not create .. %s \n", av[1]);
exit(2);
}
rptr = 0;
while ( (rcnt = xread(rbuf, RBUFSIZ, rptr)) > 0 )
{
rptr += rcnt;
i = 0;
while ( i < rcnt )
{
for (j=0; j<WBUFSIZ-1; ++j)
{
if ( i >= rcnt ) break;
if ( (c = rbuf[i++]) == 0x0d )
{
wbuf[j++] = '\n';
break;
}
wbuf[j] = c;
}
wbuf[j] = '\0';
if ( fputs( wbuf, fptr ) == EOF )
{
printf("Can not write .. %s \n", av[1]);
exit(3);
}
}
}
fclose( fptr );
printf("function complete.\n");
exit(0);
}
/* read the transcript buffer */
unsigned int
xread(buf, size, ptr)
char *buf;
unsigned int size;
unsigned int ptr;
{
union REGS regs;
regs.h.ah = 7; /* transcript buffer read function code */
regs.x.bx = ptr;
regs.x.cx = size;
regs.x.dx = (unsigned int) buf;
int86( XSERV_INT, ®s, ®s );
return( regs.x.ax );
}