Previous 15994 Revisions Next

r8581 Thursday 22nd July, 2010 at 07:58:08 UTC by Miodrag Milanović
Fixed D88 handling of single side disks.
[src/mess/formats]d88_dsk.c

src/mess/formats/d88_dsk.c
r8580r8581
3939   UINT32 trackoffset[164];
4040   UINT8 write_protect;
4141   UINT8 disk_type;
42   UINT8 heads;
4243};
4344
4445static struct d88_tag *get_d88_tag(floppy_image *floppy)
r8580r8581
5354   UINT8 sector_hdr[16];
5455   int x;
5556
56   offset = tag->trackoffset[(track*2)+head];
57   offset = tag->trackoffset[(track*tag->heads)+head];
5758
5859   if(offset == 0)
5960      return 0;
r8580r8581
8081
8182static int d88_get_heads_per_disk(floppy_image *floppy)
8283{
83   return 2;  // 2 heads
84   struct d88_tag* tag = get_d88_tag(floppy);
85   return tag->heads;
8486}
8587
8688static int d88_get_sectors_per_track(floppy_image *floppy, int head, int track)
r8580r8581
8991   UINT32 offset;
9092   UINT8 sector_hdr[16];
9193
92   offset = tag->trackoffset[(track*2)+head];
94   offset = tag->trackoffset[(track*tag->heads)+head];
9395
9496   floppy_image_read(floppy,sector_hdr,offset,16);
9597
r8580r8581
104106   UINT32 len;
105107   int count,secs;
106108
107   offset = tag->trackoffset[(track*2)+head];
109   offset = tag->trackoffset[(track*tag->heads)+head];
108110
109111   floppy_image_read(floppy,sector_hdr,offset,16);
110112   secs = sector_hdr[4];
r8580r8581
143145   int count;
144146
145147   // get offset of the beginning of the track
146   offset = tag->trackoffset[(track*2)+head];
148   offset = tag->trackoffset[(track*tag->heads)+head];
147149
148150   floppy_image_read(floppy,sector_hdr,offset,16);
149151   secs = sector_hdr[4];
r8580r8581
171173   UINT8 sector_hdr[16];
172174   int x;
173175
174   offset = tag->trackoffset[(track*2)+head];
176   offset = tag->trackoffset[(track*tag->heads)+head];
175177
176178   if(offset == 0)
177179      return FLOPPY_ERROR_SEEKERROR;
r8580r8581
277279   if(prot)
278280      *prot = header[0x1a];
279281   if(type)
280      *prot = header[0x1b];
282      *type = header[0x1b];
281283   if(size)
282284   {
283285      s = 0;
r8580r8581
344346
345347   tag->write_protect = prot;
346348   tag->disk_type = type;
349   tag->heads = 2;
350   if (tag->disk_type==0x30 || tag->disk_type==0x40) tag->heads = 1;
351   
347352   tag->image_size = size;
348353   for(x=0;x<164;x++)
349354      tag->trackoffset[x] = offs[x];

Previous 15994 Revisions Next


© 1998-2018 The MESS Team