home *** CD-ROM | disk | FTP | other *** search
/ C!T ROM 2 / ctrom_ii_b.zip / ctrom_ii_b / PROGRAM / C / C-FDC / SRDPB.C < prev    next >
Text File  |  1986-08-01  |  942b  |  40 lines

  1. /*    get & restore disk parameter blocks 
  2.  *
  3.  */
  4.  
  5. #include <stdio.h>
  6. #include "fdc.h"
  7.  
  8. struct dpb dsk_p_blk[MAXDRIVES];        /* disk parameter block for a: & b */
  9.  
  10. static int org_dpb_offset, org_dpb_segment;
  11.  
  12. int setdbp()    /* sets DISK_POINTER to our dpbs */
  13. {        /* return # of drives with dpbs (1 or 2) */
  14.  
  15.     int i;
  16.     char *p;
  17.  
  18.     org_dpb_offset = peek(DSK_PTR_SEG, DSK_PTR_OFF);            /* get dpb offset */
  19.     org_dpb_segment = peek(DSK_PTR_SEG, DSK_PTR_OFF + 2);    /* get dpb segment */
  20.  
  21.     p = dsk_p_blk;
  22.     for(i = 0; i < (sizeof(struct dpb) * MAXDRIVES); ++org_dpb_offset)
  23.         *p++ = peek(org_dpb_segment, org_dpb_offset);
  24.     poke(DSK_PTR_SEG, DSK_PTR_OFF, getds());
  25.     poke(DSK_PTR_SEG, DSK_PTR_OFF + 2, dsk_p_blk);
  26.     return(dsk_p_blk[0].first);
  27.  
  28. }
  29.  
  30. int restoredpb()        /* restores DISK_POINTER to original dbps */
  31. {
  32.     poke(DSK_PTR_SEG, DSK_PTR_OFF, org_dpb_offset);
  33.     poke(DSK_PTR_SEG, DSK_PTR_OFF + 2, org_dpb_segment);
  34. }
  35.  
  36.  
  37.      
  38.  
  39.  
  40.