mirror of
https://github.com/holub/mame
synced 2025-05-14 18:08:13 +03:00
Apple II dsk 35 to 40 track
Change Apple II dsk format 35 track to 40 track
This commit is contained in:
parent
b8df749e2d
commit
0e524aeb35
@ -496,19 +496,19 @@ static uint32_t apple2_get_track_size(floppy_image_legacy *floppy, int head, int
|
||||
LEGACY_FLOPPY_OPTIONS_START( apple2 )
|
||||
LEGACY_FLOPPY_OPTION( apple2_do, "do,dsk,bin", "Apple ][ DOS order disk image", apple2_dsk_identify, apple2_do_construct, nullptr,
|
||||
HEADS([1])
|
||||
TRACKS([35])
|
||||
TRACKS([APPLE2_TRACK_COUNT])
|
||||
SECTORS([16])
|
||||
SECTOR_LENGTH([256])
|
||||
FIRST_SECTOR_ID([0]))
|
||||
LEGACY_FLOPPY_OPTION( apple2_po, "po,dsk,bin", "Apple ][ ProDOS order disk image", apple2_dsk_identify, apple2_po_construct, nullptr,
|
||||
HEADS([1])
|
||||
TRACKS([35])
|
||||
TRACKS([APPLE2_TRACK_COUNT])
|
||||
SECTORS([16])
|
||||
SECTOR_LENGTH([256])
|
||||
FIRST_SECTOR_ID([0]))
|
||||
LEGACY_FLOPPY_OPTION( apple2_nib, "dsk,nib", "Apple ][ Nibble order disk image", apple2_nib_identify, apple2_nib_construct, nullptr,
|
||||
HEADS([1])
|
||||
TRACKS([35])
|
||||
TRACKS([APPLE2_TRACK_COUNT])
|
||||
SECTORS([16])
|
||||
SECTOR_LENGTH([256])
|
||||
FIRST_SECTOR_ID([0]))
|
||||
@ -562,10 +562,11 @@ bool a2_16sect_format::supports_save() const
|
||||
int a2_16sect_format::identify(io_generic *io, uint32_t form_factor)
|
||||
{
|
||||
uint64_t size = io_generic_size(io);
|
||||
uint32_t expected_size = 35 * 16 * 256;
|
||||
//uint32_t expected_size = 35 * 16 * 256;
|
||||
uint32_t expected_size = APPLE2_TRACK_COUNT * 16 * 256;
|
||||
|
||||
// check standard size plus some oddball sizes in our softlist
|
||||
if ((size == expected_size) || (size == 143403) || (size == 143363) || (size == 143358))
|
||||
if ((size == expected_size) || (size == 35 * 16 * 256) || (size == 143403) || (size == 143363) || (size == 143358))
|
||||
{
|
||||
return 50;
|
||||
}
|
||||
@ -608,7 +609,7 @@ bool a2_16sect_format::load(io_generic *io, uint32_t form_factor, floppy_image *
|
||||
m_prodos_order = false;
|
||||
|
||||
int fpos = 0;
|
||||
for(int track=0; track < 35; track++) {
|
||||
for(int track=0; track < APPLE2_TRACK_COUNT; track++) {
|
||||
std::vector<uint32_t> track_data;
|
||||
uint8_t sector_data[256*16];
|
||||
static const unsigned char pascal_block1[4] = { 0x08, 0xa5, 0x0f, 0x29 };
|
||||
@ -759,7 +760,7 @@ void a2_16sect_format::update_chk(const uint8_t *data, int size, uint32_t &chk)
|
||||
bool a2_16sect_format::save(io_generic *io, floppy_image *image)
|
||||
{
|
||||
int g_tracks, g_heads;
|
||||
int visualgrid[16][35]; // visualizer grid, cleared/initialized below
|
||||
int visualgrid[16][APPLE2_TRACK_COUNT]; // visualizer grid, cleared/initialized below
|
||||
|
||||
// lenient addr check: if unset, only accept an addr mark if the checksum was good
|
||||
// if set, accept an addr mark if the track and sector values are both sane
|
||||
@ -780,7 +781,7 @@ bool a2_16sect_format::save(io_generic *io, floppy_image *image)
|
||||
// data postamble is good
|
||||
#define DATAPOST 16
|
||||
for (auto & elem : visualgrid) {
|
||||
for (int j = 0; j < 35; j++) {
|
||||
for (int j = 0; j < APPLE2_TRACK_COUNT; j++) {
|
||||
elem[j] = 0;
|
||||
}
|
||||
}
|
||||
@ -790,7 +791,7 @@ bool a2_16sect_format::save(io_generic *io, floppy_image *image)
|
||||
|
||||
int pos_data = 0;
|
||||
|
||||
for(int track=0; track < 35; track++) {
|
||||
for(int track=0; track < APPLE2_TRACK_COUNT; track++) {
|
||||
uint8_t sectdata[(256)*16];
|
||||
memset(sectdata, 0, sizeof(sectdata));
|
||||
int nsect = 16;
|
||||
@ -962,7 +963,7 @@ bool a2_16sect_format::save(io_generic *io, floppy_image *image)
|
||||
// display a little table of which sectors decoded ok
|
||||
#ifdef VERBOSE_SAVE
|
||||
int total_good = 0;
|
||||
for (int j = 0; j < 35; j++) {
|
||||
for (int j = 0; j < APPLE2_TRACK_COUNT; j++) {
|
||||
printf("T%2d: ",j);
|
||||
for (int i = 0; i < 16; i++) {
|
||||
if (visualgrid[i][j] == NOTFOUND) printf("-NF- ");
|
||||
@ -1037,7 +1038,7 @@ bool a2_rwts18_format::supports_save() const
|
||||
int a2_rwts18_format::identify(io_generic *io, uint32_t form_factor)
|
||||
{
|
||||
uint64_t size = io_generic_size(io);
|
||||
uint32_t expected_size = 35 * 16 * 256;
|
||||
uint32_t expected_size = APPLE2_TRACK_COUNT * 16 * 256;
|
||||
return size == expected_size;
|
||||
}
|
||||
|
||||
@ -1084,7 +1085,7 @@ bool a2_rwts18_format::load(io_generic *io, uint32_t form_factor, floppy_image *
|
||||
|
||||
int head_count = 1;
|
||||
|
||||
for(int track=0; track < 35; track++) {
|
||||
for(int track=0; track < APPLE2_TRACK_COUNT; track++) {
|
||||
for(int head=0; head < head_count; head++) {
|
||||
for(int si=0; si<16; si++) {
|
||||
uint8_t *data = sector_data + (256)*si;
|
||||
@ -1124,7 +1125,7 @@ void a2_rwts18_format::update_chk(const uint8_t *data, int size, uint32_t &chk)
|
||||
bool a2_rwts18_format::save(io_generic *io, floppy_image *image)
|
||||
{
|
||||
int g_tracks, g_heads;
|
||||
int visualgrid[18][35]; // visualizer grid, cleared/initialized below
|
||||
int visualgrid[18][APPLE2_TRACK_COUNT]; // visualizer grid, cleared/initialized below
|
||||
// lenient addr check: if unset, only accept an addr mark if the checksum was good
|
||||
// if set, accept an addr mark if the track and sector values are both sane
|
||||
#undef LENIENT_ADDR_CHECK
|
||||
@ -1146,7 +1147,7 @@ bool a2_rwts18_format::save(io_generic *io, floppy_image *image)
|
||||
// data postamble is good
|
||||
#define DATAPOST 16
|
||||
for (auto & elem : visualgrid) {
|
||||
for (int j = 0; j < 35; j++) {
|
||||
for (int j = 0; j < APPLE2_TRACK_COUNT; j++) {
|
||||
elem[j] = 0;
|
||||
}
|
||||
}
|
||||
@ -1505,7 +1506,7 @@ bool a2_rwts18_format::save(io_generic *io, floppy_image *image)
|
||||
}
|
||||
// display a little table of which sectors decoded ok
|
||||
int total_good = 0;
|
||||
for (int j = 0; j < 35; j++) {
|
||||
for (int j = 0; j < APPLE2_TRACK_COUNT; j++) {
|
||||
printf("T%2d: ",j);
|
||||
for (int i = 0; i < (j==0?16:6); i++) {
|
||||
if (visualgrid[i][j] == NOTFOUND) printf("-NF- ");
|
||||
|
@ -23,7 +23,8 @@
|
||||
|
||||
#define APPLE2_NIBBLE_SIZE 416
|
||||
#define APPLE2_SMALL_NIBBLE_SIZE 374
|
||||
#define APPLE2_TRACK_COUNT 35
|
||||
//#define APPLE2_TRACK_COUNT 35
|
||||
#define APPLE2_TRACK_COUNT 40
|
||||
#define APPLE2_SECTOR_COUNT 16
|
||||
#define APPLE2_SECTOR_SIZE 256
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user