Previous 199869 Revisions Next

r19888 Friday 28th December, 2012 at 11:13:31 UTC by O. Galibert
(mess) dsk: (minimally) complete the dsk support [O. Galibert]
[src/lib/formats]dsk_dsk.c
[src/mess/drivers]amstrad.c
[src/mess/includes]amstrad.h

trunk/src/lib/formats/dsk_dsk.c
r19887r19888
333333   UINT8   sector_size_code;
334334   UINT8   fdc_status_reg1;
335335   UINT8   fdc_status_reg2;
336   UINT16  data_lenght;
336   UINT16  data_length;
337337};
338338
339339#pragma pack()
r19887r19888
343343   UINT8 header[100];
344344   bool extendformat = FALSE;
345345
346   int image_size = io_generic_size(io);
347
346348   io_generic_read(io, &header, 0, sizeof(header));
347349   if ( memcmp( header, EXT_FORMAT_HEADER, 16 ) ==0) {
348350      extendformat = TRUE;
r19887r19888
377379   int counter = 0;
378380   for(int track=0; track < tracks; track++) {
379381      for(int side=0; side < heads; side++) {
380         // read location of
382         if(track_offsets[(track<<1)+side] >= image_size)
383            continue;
381384         track_header tr;
382385         io_generic_read(io, &tr,track_offsets[(track<<1)+side],sizeof(tr));
383         //printf("%d,%d %d, %d\n",track,side,tr.track_number, tr.gap3_length);
384         //int sec_location = track_offsets[(track<<1)+side] + 0x100;
385         for(int j=0;j<tr.number_of_sector;j++)
386         {
386         desc_pc_sector sects[256];
387         UINT8 sect_data[65536];
388         int sdatapos = 0;
389         int pos = track_offsets[(track<<1)+side] + 0x100;
390         for(int j=0;j<tr.number_of_sector;j++) {
387391            sector_header sector;
388392            io_generic_read(io, &sector,track_offsets[(track<<1)+side]+sizeof(tr)+(sizeof(sector)*j),sizeof(sector));
389            //printf("sec %02x %08x\n",sector.sector_id,sec_location);
390393
391            //sec_location += sector.data_lenght;
394            sects[j].track       = sector.track;
395            sects[j].head        = sector.side;
396            sects[j].sector      = sector.sector_id;
397            sects[j].size        = sector.sector_size_code;
398            sects[j].actual_size = sector.data_length;
399            sects[j].deleted     = sector.fdc_status_reg1 == 0xb2;
400            sects[j].bad_crc     = sector.fdc_status_reg1 == 0xb5;
401
402            if(!sects[j].deleted) {
403               sects[j].data = sect_data + sdatapos;
404               io_generic_read(io, sects[j].data, pos, sects[j].actual_size);
405               sdatapos += sects[j].actual_size;
406
407            } else
408               sects[j].data = NULL;
409
410            if(extendformat)
411               pos += sector.data_length;
412            else
413               pos += 128 << tr.sector_size_code;
392414         }
415         build_pc_track_mfm(track, side, image, 100000, tr.number_of_sector, sects, tr.gap3_length);
393416         counter++;
394417      }
395418   }
trunk/src/mess/drivers/amstrad.c
r19887r19888
105105#include "imagedev/cartslot.h"
106106#include "imagedev/cassette.h"
107107#include "formats/tzx_cas.h"
108#include "formats/dsk_dsk.h"
108109
109110#include "machine/ram.h"
110111
r19887r19888
883884   MCFG_RAM_DEFAULT_SIZE("128K")
884885MACHINE_CONFIG_END
885886
887FLOPPY_FORMATS_MEMBER( amstrad_state::floppy_formats )
888   FLOPPY_DSK_FORMAT
889FLOPPY_FORMATS_END
886890
887891static MACHINE_CONFIG_DERIVED( amstrad, amstrad_nofdc )
888892   MCFG_UPD765A_ADD("upd765", true, true)
889893
890   MCFG_FLOPPY_DRIVE_ADD("upd765:0", amstrad_floppies, "3ssdd", 0, floppy_image_device::default_floppy_formats)
891   MCFG_FLOPPY_DRIVE_ADD("upd765:1", amstrad_floppies, "3ssdd", 0, floppy_image_device::default_floppy_formats)
894   MCFG_FLOPPY_DRIVE_ADD("upd765:0", amstrad_floppies, "3ssdd", 0, amstrad_state::floppy_formats)
895   MCFG_FLOPPY_DRIVE_ADD("upd765:1", amstrad_floppies, "3ssdd", 0, amstrad_state::floppy_formats)
892896
893897   MCFG_SOFTWARE_LIST_ADD("flop_list","cpc_flop")
894898MACHINE_CONFIG_END
trunk/src/mess/includes/amstrad.h
r19887r19888
187187   DECLARE_WRITE8_MEMBER(amstrad_ppi_portc_w);
188188
189189   void aleste_interrupt(bool state);
190
191   DECLARE_FLOPPY_FORMATS( floppy_formats );
190192};
191193
192194

Previous 199869 Revisions Next


© 1997-2024 The MAME Team