home *** CD-ROM | disk | FTP | other *** search
- /* DEV.C show installated device drivers, and related properties
- Public domain by Paolo Bevilacqua, Rome */
-
-
-
- #include <dos.h>
-
- #pragma pack(1)
-
- struct dev_t {
- struct dev_t far *next;
- unsigned short
- stdin :1,
- stdout :1,
- nul :1,
- clock :1,
- specl :1,
- :1,
- gioctl :1,
- :4,
- ocrm :1,
- network:1,
- ibm_otb:1,
- ioctl :1,
- chr :1;
- void near *strat,
- near *intr;
- char name[8];
- };
-
- struct lst_t {
- void far *lst_dskblk,
- far *lst_1,
- far *lst_clockdev,
- far *lst_condev;
- unsigned short lst_maxbyt;
- void far *lst_2,
- far *lst_3,
- far *lst_4;
- unsigned short lst_5;
- unsigned char lst_ndevblk,
- lst_lstdrv;
- struct dev_t far *lst_dev;
- };
- #pragma pack()
-
- struct lst_t far *getlst();
-
- main()
- {
-
- struct dev_t far *dev;
- struct lst_t far *lst;
-
- lst = getlst();
- dev = lst->lst_dev;
-
- printf(
- " Gioctl ──┐ ┌── Specl\n"
- " Ocrm ──┐ │ │ ┌── Clock\n"
- " Network ──┐ │ │ │ │ ┌── Nul\n"
- " NonIBM / Otb ──┐ │ │ │ │ │ │ ┌── Stdout\n"
- " Ioctl ──┐ │ │ │ │ │ │ │ │ ┌── Stdin\n"
- " Address Type │ │ │ │ │ │ │ │ │ │ Strat Intr Name/Units\n");
-
- do printdev(dev);
- while ((short)(dev=dev->next) != -1);
- }
-
-
- struct lst_t far *getlst() {
-
- union REGS regs;
- struct SREGS sregs;
-
- regs.h.ah = 0x52;
-
- intdosx(®s, ®s, &sregs);
-
- return (struct lst_t far *)(((long)sregs.es << 16) + regs.x.bx);
- }
-
- printdev(struct dev_t far *dev) {
-
- printf(
- "%Fp %s %c %c %c %c %c %c %c %c %c %c %04X %04X ",
- (void far *)dev,
- dev->chr ? "Char " : "Block",
- dev->ioctl ? 'X' : ' ',
- dev->ibm_otb ? 'X' : ' ',
- dev->network ? 'X' : ' ',
- dev->ocrm ? 'X' : ' ',
- dev->gioctl ? 'X' : ' ',
- dev->specl ? 'X' : ' ',
- dev->clock ? 'X' : ' ',
- dev->nul ? 'X' : ' ',
- dev->stdout ? 'X' : ' ',
- dev->stdin ? 'X' : ' ',
- dev->strat,
- dev->intr
- );
-
- if (dev->chr)
- printf("%8.8Fs\n", dev->name);
- else
- printf("%d Units\n", dev->name[0]);
- }