home *** CD-ROM | disk | FTP | other *** search
- /* Listing 4 - Test of STKDEV using standard I/O calls */
-
- #include "stdio.h"
-
- main() /* txstk.c - test XSTK device */
- {struct {int scs,sss,sds,ses; } sregs;
- struct {int ax,bx,cx,dx,si,di,ds,es; } callregs, retregs;
- int n, handle, flags;
- int setrecsize, chkrecsize;
- char *dev = "XSTK";
- char *outstr = "Hello";
- char *instr;
-
- segread(&sregs); /* sregs.sds = current ds */
- callregs.ds = sregs.sds;
-
- /* open XSTK in rw mode */
- callregs.ax = 0x3D02;
- callregs.dx = dev;
- flags = sysint21(&callregs,&retregs);
- if(flags & 1) printf("Open error %d\n",retregs.ax);
- else handle = retregs.ax;
-
- /* write outstr to XSTK one byte at a time */
- callregs.ax = 0x4000;
- callregs.cx = 5;
- callregs.bx = handle;
- callregs.dx = &outstr[0];
- flags = sysint21(&callregs,&retregs);
- if(flags & 1) printf("Write error %d on char %d\n",retregs.ax,n);
-
-
- /* read outstr from XSTK one byte at a time */
- callregs.ax = 0x3F00;
- callregs.cx = 5;
- callregs.bx = handle;
- callregs.dx = &instr[0];
- flags = sysint21(&callregs,&retregs);
- if(flags & 1) printf("Read error %d on char %d\n",retregs.ax,n);
- else puts(instr);
-
-
- /* change XSTK record size to 5 bytes with IOCTL calls */
-
- setrecsize = 5;
- callregs.ax = 0x4403; /* set rec size */
- callregs.cx = 2;
- callregs.bx = handle;
- callregs.dx = &setrecsize;
- flags = sysint21(&callregs,&retregs);
-
-
- callregs.ax = 0x4402; /* read rec size from XSTK */
- callregs.cx = 2;
- callregs.bx = handle;
- callregs.dx = &chkrecsize;
- flags = sysint21(&callregs,&retregs);
- printf("XSTK record size reset to %d bytes\n",chkrecsize);
-
-
- /* write outstr to XSTK as a 5-byte record */
- callregs.ax = 0x4000;
- callregs.cx = 5;
- callregs.bx = handle;
- callregs.dx = &outstr[0];
- flags = sysint21(&callregs,&retregs);
- if(flags & 1) printf("Write error %d on char %d\n",retregs.ax,n);
-
-
- /* read outstr from XSTK as a record */
- callregs.ax = 0x3F00;
- callregs.cx = 5;
- callregs.bx = handle;
- callregs.dx = &instr[0];
- flags = sysint21(&callregs,&retregs);
- if(flags & 1) printf("Read error %d on char %d\n",retregs.ax,n);
- else puts(instr);
-
-
-
- } /* end txstk */
- &retregs);
- if(flags & 1) printf("Read error %d on char %d\n",retregs.ax,n);
- else puts(instr);
-
-
-
-