home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / SIMTEL / CPMUG / CPMUG050.ARK / CPMDIR.C < prev    next >
C/C++ Source or Header  |  1984-04-29  |  1KB  |  72 lines

  1. #define OSTRKS 2
  2.  
  3. int fd;  /* floppy disk file descriptor */
  4. int stt[26] = {
  5.          1,  7, 13, 19,
  6.         25,  5, 11, 17,
  7.         23,  3,  9, 15,
  8.         21,  2,  8, 14,
  9.         20, 26,  6, 12,
  10.         18, 24,  4, 10,
  11.         16, 22
  12.         };
  13. struct FCB {
  14.         char filetype;
  15.         char name[8];
  16.         char ext[3];
  17.         char reel;
  18.         char xx[2];
  19.         char rcnt;
  20.         char dm[16];
  21. };
  22. struct FCB dirbuf[4];
  23.  
  24. main()
  25. {
  26.         fd=open("/dev/floppy",0);
  27.         cpmDir();
  28. }
  29.  
  30. cpmDir()
  31. {
  32. int grp, rec;
  33.         for (grp=0 ; grp<2 ; grp++) {
  34.                 for (rec=0 ; rec <8 ; rec++) {
  35.                         rdsec(grp, rec, dirbuf);
  36.                         printsec();
  37.                 }
  38.         }
  39. }
  40.  
  41. printsec()
  42. {
  43. int i;
  44.         for (i=0 ; i<=3 ; i++) {
  45.                 printfn(dirbuf[i]);
  46.         }
  47. }
  48.  
  49. printfn(fcb)
  50. struct FCB fcb;
  51. {
  52. int i;
  53.         if (fcb.filetype==0) {
  54.                 for (i=0 ; i<=10 ; i++)
  55.                         printf("%c", fcb.name[i]);
  56.                 printf("\n");
  57.         }
  58. }
  59.  
  60. rdsec(group, rec, buf)
  61. int group, rec;
  62. char *buf;
  63. {
  64. int offset, voffset, sec, trk;
  65.         voffset = group*8+rec;
  66.         sec = stt[voffset % 26];
  67.         trk = voffset / 26 + OSTRKS;
  68.         offset = (trk*26+sec-1)*128;
  69.         lseek(fd, offset, 0);
  70.         read(fd, buf, 128);
  71. }
  72.