MAGAZINE\VOL1.C ·
C ·
1005 B ·
1991-07-02 ·
from PCPlus_Issue-61_October-1991_FluxEngine-360Kb
#include <stdio.h>
#include <int.h>
#include <stdlib.h>
union REGS steve; /*for int calls*/
struct SREGS setregs; /*to set the segment registers*/
int far *vol;
char wildcard[]={"*.*"}; /*wildcard name to search for*/
char far *vol_name; /*pointer for vol name*/
main()
{
int temp, count=0;
vol=malloc(64*sizeof(char)); /*buffer for Int 21, funct 1a*/
steve.x.dx=FP_OFF(vol); /*buffer offset in dx*/
steve.h.ah=0x1a; /*function 26 in AH*/
setregs.ds=FP_SEG(vol); /*ds to buffer segment*/
int86(0x21,&steve,&steve); /*call int 21 to set buffer*/
steve.x.dx=FP_OFF(wildcard); /*offset of wildcard string*/
steve.x.cx=8; /*vol name attribute in cx*/
steve.h.ah=0x4e; /*find first function 4e in ah*/
setregs.ds=FP_SEG(wildcard); /*seg offset of string*/
int86(0x21,&steve,&steve); /*call int 21*/
vol_name=(char far *) vol; /*point vol_name at buffer*/
vol_name+=0x1e; /*add offset*/
printf("\n%s\n",vol_name); /*print name, compare it or whatever*/
}