Subversion Repositories pentevo

Rev

Rev 798 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed | ?url?

  1. #include "std.h"
  2.  
  3. #include "emul.h"
  4. #include "vars.h"
  5.  
  6. #include "util.h"
  7.  
  8. static const unsigned char sn0[] = { 1, 2, 3, 4, 9 };
  9. static const unsigned char sn[] = { 1, 2, 3, 4, 5 };
  10.  
  11. void FDD::format_pro()
  12. {
  13.    newdisk(80, 2);
  14.  
  15.    for(unsigned c = 0; c < cyls; c++)
  16.    {
  17.       for (unsigned h = 0; h < 2; h++)
  18.       {
  19.          t.seek(this, c, h, JUST_SEEK);
  20.          t.s = 5;
  21.          for(unsigned s = 0; s < 5; s++)
  22.          {
  23.             unsigned n = (c == 0 && h == 0) ? sn0[s] : sn[s];
  24.             t.hdr[s].n = u8(n); t.hdr[s].l = 3;
  25.             t.hdr[s].c = u8(c); t.hdr[s].s = u8(h);
  26.             t.hdr[s].c1 = t.hdr[s].c2 = 0;
  27.             t.hdr[s].data = (unsigned char*)1;
  28.             t.hdr[s].datlen = 0;
  29.          }
  30.          t.format();
  31.       }
  32.    }
  33. }
  34.  
  35. int FDD::read_pro()
  36. {
  37.    format_pro();
  38.  
  39.    for(unsigned c = 0; c < cyls; c++)
  40.    {
  41.       for (unsigned h = 0; h < 2; h++)
  42.       {
  43.          for (unsigned s = 0; s < 5; s++)
  44.          {
  45.             t.seek(this, c, h, LOAD_SECTORS);
  46.             t.write_sector((c == 0 && h == 0) ? sn0[s] : sn[s], 3, snbuf+(c*10 + h*5 + s)*1024);
  47.          }
  48.       }
  49.    }
  50.    return 1;
  51. }
  52.  
  53. int FDD::write_pro(FILE *ff)
  54. {
  55.    for(unsigned c = 0; c < 80; c++)
  56.    {
  57.       for(unsigned h = 0; h < 2; h++)
  58.       {
  59.           t.seek(this, c, h, LOAD_SECTORS);
  60.           for(unsigned s = 0; s < 5; s++)
  61.           {
  62.               if (fwrite(t.hdr[s].data, 1, 1024, ff) != 1024)
  63.                  return 0;
  64.           }
  65.       }
  66.    }
  67.    return 1;
  68. }
  69.