diff options
| author | 2016-08-14 21:47:12 +0200 | |
|---|---|---|
| committer | 2016-08-14 21:48:23 +0200 | |
| commit | bec5bd50227b9cca0a4bdffed89ce60f0dd02eca (patch) | |
| tree | 5944b386e595affea50cf197322237fd7576692e /src/lib | |
| parent | 449814b77d1340b5315b25eaece1f8eaa25f21ea (diff) | |
hdc92x4: Added 9224 emulation; ti99_dsk: Fixed issue with deleted data marks in FM
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/formats/ti99_dsk.cpp | 47 |
1 files changed, 24 insertions, 23 deletions
diff --git a/src/lib/formats/ti99_dsk.cpp b/src/lib/formats/ti99_dsk.cpp index 8315bcafd91..9e9288cbc5f 100644 --- a/src/lib/formats/ti99_dsk.cpp +++ b/src/lib/formats/ti99_dsk.cpp @@ -40,7 +40,7 @@ #include <time.h> #include <assert.h> -#include "emu.h" // osd_printf_verbose +#include "emu.h" // osd_printf_* (in osdcore.h) #include "imageutl.h" #include "ti99_dsk.h" @@ -113,17 +113,17 @@ bool ti99_floppy_format::load(io_generic *io, UINT32 form_factor, floppy_image * int track_size = get_track_size(cell_size, sector_count); int track_count = file_size / (track_size*heads); - if (TRACE) osd_printf_verbose("ti99_dsk: track count = %d\n", track_count); + if (TRACE) osd_printf_info("ti99_dsk: track count = %d\n", track_count); if (track_count > maxtrack) { - osd_printf_verbose("ti99_dsk: Floppy disk has too many tracks for this drive.\n"); + osd_printf_error("ti99_dsk: Floppy disk has too many tracks for this drive.\n"); return false; } bool doubletracks = (track_count * 2 <= maxtrack); - if (doubletracks) osd_printf_verbose("ti99_dsk: 40-track image in an 80-track drive. On save, image size will double.\n"); + if (doubletracks) osd_printf_warning("ti99_dsk: 40-track image in an 80-track drive. On save, image size will double.\n"); // Read the image for(int head=0; head < heads; head++) @@ -224,7 +224,7 @@ bool ti99_floppy_format::save(io_generic *io, floppy_image *image) else maxsect = 9; } } - if (TRACE) osd_printf_verbose("ti99_dsk: Sectors/track: %d\n", maxsect); + if (TRACE) osd_printf_info("ti99_dsk: Sectors/track: %d\n", maxsect); // We try different cell sizes until we find a fitting size. // If this fails, we fall back to a size of 2000 ns @@ -245,12 +245,12 @@ bool ti99_floppy_format::save(io_generic *io, floppy_image *image) { if (min_heads()==1) { - if (TRACE) osd_printf_verbose("ti99_dsk: We don't have a second side and the format allows for single-sided recording.\n"); + if (TRACE) osd_printf_info("ti99_dsk: We don't have a second side and the format allows for single-sided recording.\n"); return true; } else { - osd_printf_verbose("ti99_dsk: No second side, but this format requires two-sided recording. Saving empty tracks.\n"); + osd_printf_warning("ti99_dsk: No second side, but this format requires two-sided recording. Saving empty tracks.\n"); } } } @@ -262,8 +262,8 @@ bool ti99_floppy_format::save(io_generic *io, floppy_image *image) { if (head == 0 && track == 0) { - if (marks >=6) { if (TRACE) osd_printf_verbose("ti99_dsk: Decoding with cell size %d successful.\n", cell_size); } - else osd_printf_verbose("ti99_dsk: No address marks found on track 0. Assuming MFM format.\n"); + if (marks >=6) { if (TRACE) osd_printf_info("ti99_dsk: Decoding with cell size %d successful.\n", cell_size); } + else osd_printf_info("ti99_dsk: No address marks found on track 0. Assuming MFM format.\n"); } } // Save to the file @@ -299,7 +299,7 @@ void ti99_floppy_format::generate_track_fm(int track, int head, int cell_size, U if (check_for_address_marks(trackdata, floppy_image::FM)==false) { - if (head==0 && track==0) osd_printf_verbose("ti99_dsk: Cannot find FM address marks on track %d, head %d; likely broken or unformatted.\n", track, head); + if (head==0 && track==0) osd_printf_warning("ti99_dsk: Cannot find FM address marks on track %d, head %d; likely broken or unformatted.\n", track, head); return; } @@ -323,7 +323,8 @@ void ti99_floppy_format::generate_track_fm(int track, int head, int cell_size, U if (((i-start-30)%334==0) && (i < start + 9*334)) { // DAM - raw_w(buffer, 16, 0xf56f); + // FB (1111010101101111) = normal data, F8 (1111010101101010)= deleted data + raw_w(buffer, 16, (trackdata[i]==0xf8)? 0xf56a : 0xf56f); } else { @@ -343,7 +344,7 @@ void ti99_floppy_format::generate_track_fm(int track, int head, int cell_size, U } if (crc1 != found_crc) { - osd_printf_verbose("ti99_dsk: Warning: CRC1 does not match (track=%d, head=%d). Found = %04x, calc = %04x\n", track, head, found_crc& 0xffff, crc1& 0xffff); + osd_printf_error("ti99_dsk: Warning: CRC1 does not match (track=%d, head=%d). Found = %04x, calc = %04x\n", track, head, found_crc& 0xffff, crc1& 0xffff); } } else @@ -363,7 +364,7 @@ void ti99_floppy_format::generate_track_fm(int track, int head, int cell_size, U } if (crc2 != found_crc) { - osd_printf_verbose("ti99_dsk: Warning: CRC2 does not match (track=%d, head=%d). Found = %04x, calc = %04x\n", track, head, found_crc& 0xffff, crc2& 0xffff); + osd_printf_error("ti99_dsk: Warning: CRC2 does not match (track=%d, head=%d). Found = %04x, calc = %04x\n", track, head, found_crc& 0xffff, crc2& 0xffff); } } } @@ -391,7 +392,7 @@ void ti99_floppy_format::generate_track_mfm(int track, int head, int cell_size, if (check_for_address_marks(trackdata, floppy_image::MFM)==false) { - if (track==0 && head==0) osd_printf_verbose("ti99_dsk: Cannot find MFM address marks on track %d, head %d; likely broken or unformatted.\n", track, head); + if (track==0 && head==0) osd_printf_error("ti99_dsk: Cannot find MFM address marks on track %d, head %d; likely broken or unformatted.\n", track, head); return; } @@ -439,7 +440,7 @@ void ti99_floppy_format::generate_track_mfm(int track, int head, int cell_size, } if (crc1 != found_crc) { - osd_printf_verbose("ti99_dsk: Warning: CRC1 does not match (track=%d, head=%d). Found = %04x, calc = %04x\n", track, head, found_crc & 0xffff, crc1& 0xffff); + osd_printf_error("ti99_dsk: Warning: CRC1 does not match (track=%d, head=%d). Found = %04x, calc = %04x\n", track, head, found_crc & 0xffff, crc1& 0xffff); } } else @@ -459,7 +460,7 @@ void ti99_floppy_format::generate_track_mfm(int track, int head, int cell_size, } if (crc2 != found_crc) { - osd_printf_verbose("ti99_dsk: Warning: CRC2 does not match (track=%d, head=%d). Found = %04x, calc = %04x\n", track, head, found_crc& 0xffff, crc2& 0xffff); + osd_printf_error("ti99_dsk: Warning: CRC2 does not match (track=%d, head=%d). Found = %04x, calc = %04x\n", track, head, found_crc& 0xffff, crc2& 0xffff); } } } @@ -735,7 +736,7 @@ int ti99_sdf_format::identify(io_generic *io, UINT32 form_factor) // as a bad sector map if ((file_size / SECTOR_SIZE) % 10 == 3) { - if (TRACE) osd_printf_verbose("ti99_dsk: Stripping map of bad sectors at image end\n"); + if (TRACE) osd_printf_info("ti99_dsk: Stripping map of bad sectors at image end\n"); file_size -= SECTOR_SIZE*3; } @@ -772,15 +773,15 @@ int ti99_sdf_format::identify(io_generic *io, UINT32 form_factor) // Check from contents if ((vib.id[0]=='D')&&(vib.id[1]=='S')&&(vib.id[2]=='K')) { - if (TRACE) osd_printf_verbose("ti99_dsk: Found formatted SDF disk medium\n"); + if (TRACE) osd_printf_info("ti99_dsk: Found formatted SDF disk medium\n"); vote = 100; } else { - if (TRACE) osd_printf_verbose("ti99_dsk: No valid VIB found; disk may be unformatted\n"); + if (TRACE) osd_printf_info("ti99_dsk: No valid VIB found; disk may be unformatted\n"); } } - else if (TRACE) osd_printf_verbose("ti99_dsk: Disk image is not a SDF image\n"); + else if (TRACE) osd_printf_info("ti99_dsk: Disk image is not a SDF image\n"); return vote; } @@ -816,7 +817,7 @@ void ti99_sdf_format::determine_sizes(io_generic *io, int& cell_size, int& secto if (vib.density < 4) cell_size = 2000; else cell_size = 1000; } - if (TRACE) osd_printf_verbose("ti99_dsk: VIB says that this disk is %s density with %d sectors per track, %d tracks, and %d heads\n", (cell_size==4000)? "single": ((cell_size==2000)? "double" : "high"), sector_count, vib.tracksperside, heads); + if (TRACE) osd_printf_info("ti99_dsk: VIB says that this disk is %s density with %d sectors per track, %d tracks, and %d heads\n", (cell_size==4000)? "single": ((cell_size==2000)? "double" : "high"), sector_count, vib.tracksperside, heads); have_vib = true; } @@ -855,13 +856,13 @@ void ti99_sdf_format::determine_sizes(io_generic *io, int& cell_size, int& secto { if (sector_count == 16 && sector_count1 == 18) { - osd_printf_verbose("ti99_dsk: Warning: Invalid 16-sector format. Assuming 18 sectors.\n"); + osd_printf_warning("ti99_dsk: Warning: Invalid 16-sector format. Assuming 18 sectors.\n"); sector_count = 18; } else { if (heads == 2 && ((cell_size1 != cell_size) || (sector_count1 != sector_count))) - osd_printf_verbose("ti99_dsk: Warning: Disk image size does not correspond with format information in VIB.\n"); + osd_printf_warning("ti99_dsk: Warning: Disk image size does not correspond with format information in VIB.\n"); } } else |
