mirror of
https://github.com/davidgiven/fluxengine.git
synced 2025-10-31 11:17:01 -07:00
Refactor disk layout information out of ImgReaderWriterProto into a new
top-level config paragraph.
This commit is contained in:
19
Makefile
19
Makefile
@@ -92,6 +92,7 @@ all: binaries tests
|
||||
|
||||
PROTOS = \
|
||||
arch/aeslanier/aeslanier.proto \
|
||||
arch/agat/agat.proto \
|
||||
arch/amiga/amiga.proto \
|
||||
arch/apple2/apple2.proto \
|
||||
arch/brother/brother.proto \
|
||||
@@ -100,25 +101,25 @@ PROTOS = \
|
||||
arch/fb100/fb100.proto \
|
||||
arch/ibm/ibm.proto \
|
||||
arch/macintosh/macintosh.proto \
|
||||
arch/micropolis/micropolis.proto \
|
||||
arch/mx/mx.proto \
|
||||
arch/northstar/northstar.proto \
|
||||
arch/tids990/tids990.proto \
|
||||
arch/victor9k/victor9k.proto \
|
||||
arch/zilogmcz/zilogmcz.proto \
|
||||
arch/tids990/tids990.proto \
|
||||
arch/micropolis/micropolis.proto \
|
||||
arch/northstar/northstar.proto \
|
||||
arch/agat/agat.proto \
|
||||
lib/common.proto \
|
||||
lib/config.proto \
|
||||
lib/decoders/decoders.proto \
|
||||
lib/drive.proto \
|
||||
lib/encoders/encoders.proto \
|
||||
lib/fl2.proto \
|
||||
lib/fluxsink/fluxsink.proto \
|
||||
lib/fluxsource/fluxsource.proto \
|
||||
lib/imagereader/imagereader.proto \
|
||||
lib/imagewriter/imagewriter.proto \
|
||||
lib/usb/usb.proto \
|
||||
lib/common.proto \
|
||||
lib/fl2.proto \
|
||||
lib/config.proto \
|
||||
lib/layout.proto \
|
||||
lib/mapper.proto \
|
||||
lib/drive.proto \
|
||||
lib/usb/usb.proto \
|
||||
tests/testproto.proto \
|
||||
|
||||
PROTO_HDRS = $(patsubst %.proto, $(OBJDIR)/%.pb.h, $(PROTOS))
|
||||
|
||||
@@ -10,12 +10,15 @@ import "lib/usb/usb.proto";
|
||||
import "lib/drive.proto";
|
||||
import "lib/mapper.proto";
|
||||
import "lib/common.proto";
|
||||
import "lib/layout.proto";
|
||||
|
||||
// NEXT_TAG: 17
|
||||
// NEXT_TAG: 18
|
||||
message ConfigProto {
|
||||
optional string comment = 8;
|
||||
optional bool is_extension = 13;
|
||||
|
||||
optional LayoutProto layout = 17;
|
||||
|
||||
optional ImageReaderProto image_reader = 12;
|
||||
optional ImageWriterProto image_writer = 9;
|
||||
|
||||
|
||||
@@ -3,38 +3,6 @@ syntax = "proto2";
|
||||
import "lib/common.proto";
|
||||
|
||||
message ImgInputOutputProto {
|
||||
enum Order {
|
||||
UNDEFINED = 0;
|
||||
CHS = 1;
|
||||
HCS = 2;
|
||||
}
|
||||
|
||||
message SectorsProto {
|
||||
repeated int32 sector = 1 [(help) = "sector ID"];
|
||||
}
|
||||
|
||||
message SectorRangeProto {
|
||||
optional int32 start_sector = 1 [default=0, (help) = "first sector ID"];
|
||||
optional int32 sector_count = 2 [default=1, (help) = "total number of sectors"];
|
||||
}
|
||||
|
||||
message TrackdataProto {
|
||||
optional int32 track = 1 [(help) = "if present, this format only applies to this track"];
|
||||
optional int32 up_to_track = 5 [(help) = "if present, forms a range with track"];
|
||||
optional int32 side = 2 [(help) = "if present, this format only applies to this side"];
|
||||
|
||||
optional int32 sector_size = 3 [default=512, (help) = "number of bytes per sector"];
|
||||
|
||||
oneof sectors_oneof {
|
||||
SectorsProto sectors = 4 [(help) = "use a list of sector IDs"];
|
||||
SectorRangeProto sector_range = 6 [(help) = "use a range of contiguous IDs"];
|
||||
}
|
||||
}
|
||||
|
||||
repeated TrackdataProto trackdata = 4 [(help) = "per-track format information (repeatable)"];
|
||||
optional int32 tracks = 5 [default=0, (help) = "number of tracks in image"];
|
||||
optional int32 sides = 6 [default=0, (help) = "number of sides in image"];
|
||||
optional Order order = 9 [default=CHS, (help) = "the order in which to emit tracks in the image"];
|
||||
}
|
||||
|
||||
message DiskCopyInputProto {}
|
||||
|
||||
@@ -6,6 +6,8 @@
|
||||
#include "logger.h"
|
||||
#include "mapper.h"
|
||||
#include "lib/config.pb.h"
|
||||
#include "lib/layout.pb.h"
|
||||
#include "lib/proto.h"
|
||||
#include "imginputoutpututils.h"
|
||||
#include "fmt/format.h"
|
||||
#include <algorithm>
|
||||
@@ -24,12 +26,13 @@ public:
|
||||
if (!inputFile.is_open())
|
||||
Error() << "cannot open input file";
|
||||
|
||||
if (!_config.img().tracks() || !_config.img().sides())
|
||||
auto layout = config.layout();
|
||||
if (!layout.tracks() || !layout.sides())
|
||||
Error() << "IMG: bad configuration; did you remember to set the "
|
||||
"tracks, sides and trackdata fields?";
|
||||
"tracks, sides and trackdata fields in the layout?";
|
||||
|
||||
std::unique_ptr<Image> image(new Image);
|
||||
for (const auto& p : getTrackOrdering(_config.img()))
|
||||
for (const auto& p : getTrackOrdering(layout))
|
||||
{
|
||||
int track = p.first;
|
||||
int side = p.second;
|
||||
@@ -37,10 +40,9 @@ public:
|
||||
if (inputFile.eof())
|
||||
break;
|
||||
|
||||
ImgInputOutputProto::TrackdataProto trackdata;
|
||||
getTrackFormat(_config.img(), trackdata, track, side);
|
||||
auto trackdata = getTrackFormat(layout, track, side);
|
||||
|
||||
for (int sectorId : getSectors(trackdata))
|
||||
for (int sectorId : getTrackSectors(trackdata))
|
||||
{
|
||||
Bytes data(trackdata.sector_size());
|
||||
inputFile.read((char*)data.begin(), data.size());
|
||||
@@ -48,7 +50,8 @@ public:
|
||||
const auto& sector = image->put(track, side, sectorId);
|
||||
sector->status = Sector::OK;
|
||||
sector->logicalTrack = track;
|
||||
sector->physicalTrack = Mapper::remapTrackLogicalToPhysical(track);
|
||||
sector->physicalTrack =
|
||||
Mapper::remapTrackLogicalToPhysical(track);
|
||||
sector->logicalSide = sector->physicalHead = side;
|
||||
sector->logicalSector = sectorId;
|
||||
sector->data = data;
|
||||
@@ -63,36 +66,6 @@ public:
|
||||
inputFile.tellg() / 1024);
|
||||
return image;
|
||||
}
|
||||
|
||||
std::vector<unsigned> getSectors(
|
||||
const ImgInputOutputProto::TrackdataProto& trackdata)
|
||||
{
|
||||
std::vector<unsigned> sectors;
|
||||
switch (trackdata.sectors_oneof_case())
|
||||
{
|
||||
case ImgInputOutputProto::TrackdataProto::SectorsOneofCase::
|
||||
kSectors:
|
||||
{
|
||||
for (int sectorId : trackdata.sectors().sector())
|
||||
sectors.push_back(sectorId);
|
||||
break;
|
||||
}
|
||||
|
||||
case ImgInputOutputProto::TrackdataProto::SectorsOneofCase::
|
||||
kSectorRange:
|
||||
{
|
||||
int sectorId = trackdata.sector_range().start_sector();
|
||||
for (int i = 0; i < trackdata.sector_range().sector_count();
|
||||
i++)
|
||||
sectors.push_back(sectorId + i);
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
Error() << "no list of sectors provided in track format";
|
||||
}
|
||||
return sectors;
|
||||
}
|
||||
};
|
||||
|
||||
std::unique_ptr<ImageReader> ImageReader::createImgImageReader(
|
||||
|
||||
@@ -3,8 +3,10 @@
|
||||
#include "sector.h"
|
||||
#include "imagewriter/imagewriter.h"
|
||||
#include "image.h"
|
||||
#include "lib/proto.h"
|
||||
#include "lib/config.pb.h"
|
||||
#include "imginputoutpututils.h"
|
||||
#include "lib/layout.pb.h"
|
||||
#include "fmt/format.h"
|
||||
#include "logger.h"
|
||||
#include <algorithm>
|
||||
@@ -14,85 +16,58 @@
|
||||
class ImgImageWriter : public ImageWriter
|
||||
{
|
||||
public:
|
||||
ImgImageWriter(const ImageWriterProto& config):
|
||||
ImageWriter(config)
|
||||
{}
|
||||
ImgImageWriter(const ImageWriterProto& config): ImageWriter(config) {}
|
||||
|
||||
void writeImage(const Image& image)
|
||||
{
|
||||
const Geometry geometry = image.getGeometry();
|
||||
void writeImage(const Image& image)
|
||||
{
|
||||
const Geometry geometry = image.getGeometry();
|
||||
|
||||
int tracks = _config.img().has_tracks() ? _config.img().tracks() : geometry.numTracks;
|
||||
int sides = _config.img().has_sides() ? _config.img().sides() : geometry.numSides;
|
||||
auto& layout = config.layout();
|
||||
int tracks = layout.has_tracks() ? layout.tracks() : geometry.numTracks;
|
||||
int sides = layout.has_sides() ? layout.sides() : geometry.numSides;
|
||||
|
||||
std::ofstream outputFile(_config.filename(), std::ios::out | std::ios::binary);
|
||||
if (!outputFile.is_open())
|
||||
Error() << "cannot open output file";
|
||||
std::ofstream outputFile(
|
||||
_config.filename(), std::ios::out | std::ios::binary);
|
||||
if (!outputFile.is_open())
|
||||
Error() << "cannot open output file";
|
||||
|
||||
for (const auto& p : getTrackOrdering(_config.img(), tracks, sides))
|
||||
{
|
||||
int track = p.first;
|
||||
int side = p.second;
|
||||
for (const auto& p : getTrackOrdering(layout, tracks, sides))
|
||||
{
|
||||
int track = p.first;
|
||||
int side = p.second;
|
||||
|
||||
ImgInputOutputProto::TrackdataProto trackdata;
|
||||
getTrackFormat(_config.img(), trackdata, track, side);
|
||||
auto trackdata = getTrackFormat(layout, track, side);
|
||||
auto sectors = getTrackSectors(trackdata, geometry.numSectors);
|
||||
if (sectors.empty())
|
||||
{
|
||||
int maxSector = geometry.firstSector + geometry.numSectors - 1;
|
||||
for (int i = geometry.firstSector; i <= maxSector; i++)
|
||||
sectors.push_back(i);
|
||||
}
|
||||
|
||||
auto sectors = getSectors(trackdata, geometry.numSectors);
|
||||
if (sectors.empty())
|
||||
{
|
||||
int maxSector = geometry.firstSector + geometry.numSectors - 1;
|
||||
for (int i=geometry.firstSector; i<=maxSector; i++)
|
||||
sectors.push_back(i);
|
||||
}
|
||||
int sectorSize = trackdata.has_sector_size()
|
||||
? trackdata.sector_size()
|
||||
: geometry.sectorSize;
|
||||
|
||||
int sectorSize = trackdata.has_sector_size() ? trackdata.sector_size() : geometry.sectorSize;
|
||||
for (int sectorId : sectors)
|
||||
{
|
||||
const auto& sector = image.get(track, side, sectorId);
|
||||
if (sector)
|
||||
sector->data.slice(0, sectorSize).writeTo(outputFile);
|
||||
else
|
||||
outputFile.seekp(sectorSize, std::ios::cur);
|
||||
}
|
||||
}
|
||||
|
||||
for (int sectorId : sectors)
|
||||
{
|
||||
const auto& sector = image.get(track, side, sectorId);
|
||||
if (sector)
|
||||
sector->data.slice(0, sectorSize).writeTo(outputFile);
|
||||
else
|
||||
outputFile.seekp(sectorSize, std::ios::cur);
|
||||
}
|
||||
}
|
||||
|
||||
Logger() << fmt::format("IMG: wrote {} tracks, {} sides, {} kB total",
|
||||
tracks, sides,
|
||||
outputFile.tellp() / 1024);
|
||||
}
|
||||
|
||||
std::vector<unsigned> getSectors(const ImgInputOutputProto::TrackdataProto& trackdata, unsigned numSectors)
|
||||
{
|
||||
std::vector<unsigned> sectors;
|
||||
switch (trackdata.sectors_oneof_case())
|
||||
{
|
||||
case ImgInputOutputProto::TrackdataProto::SectorsOneofCase::kSectors:
|
||||
{
|
||||
for (int sectorId : trackdata.sectors().sector())
|
||||
sectors.push_back(sectorId);
|
||||
break;
|
||||
}
|
||||
|
||||
case ImgInputOutputProto::TrackdataProto::SectorsOneofCase::kSectorRange:
|
||||
{
|
||||
int sectorId = trackdata.sector_range().start_sector();
|
||||
if (trackdata.sector_range().has_sector_count())
|
||||
numSectors = trackdata.sector_range().sector_count();
|
||||
for (int i=0; i<numSectors; i++)
|
||||
sectors.push_back(sectorId + i);
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return sectors;
|
||||
}
|
||||
Logger() << fmt::format("IMG: wrote {} tracks, {} sides, {} kB total",
|
||||
tracks,
|
||||
sides,
|
||||
outputFile.tellp() / 1024);
|
||||
}
|
||||
};
|
||||
|
||||
std::unique_ptr<ImageWriter> ImageWriter::createImgImageWriter(
|
||||
const ImageWriterProto& config)
|
||||
const ImageWriterProto& config)
|
||||
{
|
||||
return std::unique_ptr<ImageWriter>(new ImgImageWriter(config));
|
||||
}
|
||||
|
||||
@@ -1,57 +1,92 @@
|
||||
#include "globals.h"
|
||||
#include "lib/imagereader/imagereader.pb.h"
|
||||
#include "lib/layout.pb.h"
|
||||
#include "imginputoutpututils.h"
|
||||
|
||||
std::vector<std::pair<int, int>> getTrackOrdering(const ImgInputOutputProto& config,
|
||||
unsigned numTracks, unsigned numSides)
|
||||
std::vector<std::pair<int, int>> getTrackOrdering(
|
||||
const LayoutProto& config, unsigned numTracks, unsigned numSides)
|
||||
{
|
||||
int tracks = config.has_tracks() ? config.tracks() : numTracks;
|
||||
int sides = config.has_sides() ? config.sides() : numSides;
|
||||
int tracks = config.has_tracks() ? config.tracks() : numTracks;
|
||||
int sides = config.has_sides() ? config.sides() : numSides;
|
||||
|
||||
std::vector<std::pair<int, int>> ordering;
|
||||
switch (config.order())
|
||||
{
|
||||
case ImgInputOutputProto::CHS:
|
||||
{
|
||||
for (int track = 0; track < tracks; track++)
|
||||
{
|
||||
for (int side = 0; side < sides; side++)
|
||||
ordering.push_back(std::make_pair(track, side));
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case ImgInputOutputProto::HCS:
|
||||
{
|
||||
for (int side = 0; side < sides; side++)
|
||||
{
|
||||
for (int track = 0; track < tracks; track++)
|
||||
ordering.push_back(std::make_pair(track, side));
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
Error() << "IMG: invalid track ordering";
|
||||
}
|
||||
std::vector<std::pair<int, int>> ordering;
|
||||
switch (config.order())
|
||||
{
|
||||
case LayoutProto::CHS:
|
||||
{
|
||||
for (int track = 0; track < tracks; track++)
|
||||
{
|
||||
for (int side = 0; side < sides; side++)
|
||||
ordering.push_back(std::make_pair(track, side));
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return ordering;
|
||||
case LayoutProto::HCS:
|
||||
{
|
||||
for (int side = 0; side < sides; side++)
|
||||
{
|
||||
for (int track = 0; track < tracks; track++)
|
||||
ordering.push_back(std::make_pair(track, side));
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
Error() << "IMG: invalid track ordering";
|
||||
}
|
||||
|
||||
return ordering;
|
||||
}
|
||||
|
||||
void getTrackFormat(const ImgInputOutputProto& config,
|
||||
ImgInputOutputProto::TrackdataProto& trackdata, unsigned track, unsigned side)
|
||||
LayoutProto::TrackdataProto getTrackFormat(const LayoutProto& config,
|
||||
unsigned track,
|
||||
unsigned side)
|
||||
{
|
||||
trackdata.Clear();
|
||||
for (const ImgInputOutputProto::TrackdataProto& f : config.trackdata())
|
||||
{
|
||||
if (f.has_track() && f.has_up_to_track() && ((track < f.track()) || (track > f.up_to_track())))
|
||||
continue;
|
||||
if (f.has_track() && !f.has_up_to_track() && (track != f.track()))
|
||||
continue;
|
||||
if (f.has_side() && (f.side() != side))
|
||||
continue;
|
||||
LayoutProto::TrackdataProto trackdata;
|
||||
|
||||
trackdata.MergeFrom(f);
|
||||
}
|
||||
for (const auto& f : config.trackdata())
|
||||
{
|
||||
if (f.has_track() && f.has_up_to_track() &&
|
||||
((track < f.track()) || (track > f.up_to_track())))
|
||||
continue;
|
||||
if (f.has_track() && !f.has_up_to_track() && (track != f.track()))
|
||||
continue;
|
||||
if (f.has_side() && (f.side() != side))
|
||||
continue;
|
||||
|
||||
trackdata.MergeFrom(f);
|
||||
}
|
||||
|
||||
return trackdata;
|
||||
}
|
||||
|
||||
std::vector<unsigned> getTrackSectors(
|
||||
const LayoutProto::TrackdataProto& trackdata, unsigned numSectors)
|
||||
{
|
||||
std::vector<unsigned> sectors;
|
||||
switch (trackdata.sectors_oneof_case())
|
||||
{
|
||||
case LayoutProto::TrackdataProto::SectorsOneofCase::kSectors:
|
||||
{
|
||||
for (int sectorId : trackdata.sectors().sector())
|
||||
sectors.push_back(sectorId);
|
||||
break;
|
||||
}
|
||||
|
||||
case LayoutProto::TrackdataProto::SectorsOneofCase::
|
||||
kSectorRange:
|
||||
{
|
||||
int sectorId = trackdata.sector_range().start_sector();
|
||||
if (trackdata.sector_range().has_sector_count())
|
||||
numSectors = trackdata.sector_range().sector_count();
|
||||
for (int i = 0; i < numSectors; i++)
|
||||
sectors.push_back(sectorId + i);
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return sectors;
|
||||
}
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
#ifndef IMGINPUTOUTPUTUTILS_H
|
||||
#define IMGINPUTOUTPUTUTILS_H
|
||||
|
||||
extern std::vector<std::pair<int, int>> getTrackOrdering(const ImgInputOutputProto& config,
|
||||
unsigned numTracks = 0, unsigned numSides = 0);
|
||||
extern std::vector<std::pair<int, int>> getTrackOrdering(
|
||||
const LayoutProto& config,
|
||||
unsigned numTracks = 0,
|
||||
unsigned numSides = 0);
|
||||
|
||||
extern void getTrackFormat(const ImgInputOutputProto& config,
|
||||
ImgInputOutputProto::TrackdataProto& trackdata, unsigned track, unsigned side);
|
||||
extern LayoutProto::TrackdataProto getTrackFormat(const LayoutProto& config,
|
||||
unsigned track,
|
||||
unsigned side);
|
||||
|
||||
extern std::vector<unsigned> getTrackSectors(
|
||||
const LayoutProto::TrackdataProto& trackdata, unsigned numSectors = 0);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
39
lib/layout.proto
Normal file
39
lib/layout.proto
Normal file
@@ -0,0 +1,39 @@
|
||||
syntax = "proto2";
|
||||
|
||||
import "lib/common.proto";
|
||||
|
||||
message LayoutProto {
|
||||
enum Order {
|
||||
UNDEFINED = 0;
|
||||
CHS = 1;
|
||||
HCS = 2;
|
||||
}
|
||||
|
||||
message SectorsProto {
|
||||
repeated int32 sector = 1 [(help) = "sector ID"];
|
||||
}
|
||||
|
||||
message SectorRangeProto {
|
||||
optional int32 start_sector = 1 [default=0, (help) = "first sector ID"];
|
||||
optional int32 sector_count = 2 [default=1, (help) = "total number of sectors"];
|
||||
}
|
||||
|
||||
message TrackdataProto {
|
||||
optional int32 track = 1 [(help) = "if present, this format only applies to this track"];
|
||||
optional int32 up_to_track = 5 [(help) = "if present, forms a range with track"];
|
||||
optional int32 side = 2 [(help) = "if present, this format only applies to this side"];
|
||||
|
||||
optional int32 sector_size = 3 [default=512, (help) = "number of bytes per sector"];
|
||||
|
||||
oneof sectors_oneof {
|
||||
SectorsProto sectors = 4 [(help) = "use a list of sector IDs"];
|
||||
SectorRangeProto sector_range = 6 [(help) = "use a range of contiguous IDs"];
|
||||
}
|
||||
}
|
||||
|
||||
repeated TrackdataProto trackdata = 1 [(help) = "per-track format information (repeatable)"];
|
||||
optional int32 tracks = 2 [default=0, (help) = "number of tracks in image"];
|
||||
optional int32 sides = 3 [default=0, (help) = "number of sides in image"];
|
||||
optional Order order = 4 [default=CHS, (help) = "the order of sectors in the filesystem"];
|
||||
}
|
||||
|
||||
@@ -1,96 +1,7 @@
|
||||
image_reader {
|
||||
img {
|
||||
tracks: 80
|
||||
sides: 1
|
||||
trackdata {
|
||||
sector_size: 524
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 0
|
||||
up_to_track: 15
|
||||
sector_range {
|
||||
sector_count: 12
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 16
|
||||
up_to_track: 31
|
||||
sector_range {
|
||||
sector_count: 11
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 32
|
||||
up_to_track: 47
|
||||
sector_range {
|
||||
sector_count: 10
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 48
|
||||
up_to_track: 63
|
||||
sector_range {
|
||||
sector_count: 9
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 64
|
||||
up_to_track: 79
|
||||
sector_range {
|
||||
sector_count: 8
|
||||
}
|
||||
}
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
image_writer {
|
||||
img {
|
||||
tracks: 80
|
||||
sides: 1
|
||||
trackdata {
|
||||
sector_size: 524
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 0
|
||||
up_to_track: 15
|
||||
sector_range {
|
||||
sector_count: 12
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 16
|
||||
up_to_track: 31
|
||||
sector_range {
|
||||
sector_count: 11
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 32
|
||||
up_to_track: 47
|
||||
sector_range {
|
||||
sector_count: 10
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 48
|
||||
up_to_track: 63
|
||||
sector_range {
|
||||
sector_count: 9
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 64
|
||||
up_to_track: 79
|
||||
sector_range {
|
||||
sector_count: 8
|
||||
}
|
||||
}
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,97 +1,9 @@
|
||||
image_reader {
|
||||
img {
|
||||
tracks: 80
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 524
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 0
|
||||
up_to_track: 15
|
||||
sector_range {
|
||||
sector_count: 12
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 16
|
||||
up_to_track: 31
|
||||
sector_range {
|
||||
sector_count: 11
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 32
|
||||
up_to_track: 47
|
||||
sector_range {
|
||||
sector_count: 10
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 48
|
||||
up_to_track: 63
|
||||
sector_range {
|
||||
sector_count: 9
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 64
|
||||
up_to_track: 79
|
||||
sector_range {
|
||||
sector_count: 8
|
||||
}
|
||||
}
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
image_writer {
|
||||
img {
|
||||
tracks: 80
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 524
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 0
|
||||
up_to_track: 15
|
||||
sector_range {
|
||||
sector_count: 12
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 16
|
||||
up_to_track: 31
|
||||
sector_range {
|
||||
sector_count: 11
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 32
|
||||
up_to_track: 47
|
||||
sector_range {
|
||||
sector_count: 10
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 48
|
||||
up_to_track: 63
|
||||
sector_range {
|
||||
sector_count: 9
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 64
|
||||
up_to_track: 79
|
||||
sector_range {
|
||||
sector_count: 8
|
||||
}
|
||||
}
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -2,11 +2,13 @@ comment: 'Acorn ADFS L/D/E/F 640kB/800kB/1600kB 3.5" or 5.25" 80-track DS (ro)'
|
||||
|
||||
image_writer {
|
||||
filename: "acornadfs.img"
|
||||
img {
|
||||
trackdata {
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
layout {
|
||||
trackdata {
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,11 +2,13 @@ comment: 'Acorn DFS 100kB/200kB 3.5" or 5.25" 40- or 80-track SS (ro)'
|
||||
|
||||
image_writer {
|
||||
filename: "acorndfs.img"
|
||||
img {
|
||||
trackdata {
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
layout {
|
||||
trackdata {
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,11 +2,13 @@ comment: 'Agat 840kB 5.25" 80-track DS (ro)'
|
||||
|
||||
image_writer {
|
||||
filename: "agat.img"
|
||||
img {
|
||||
trackdata {
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
layout {
|
||||
trackdata {
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,30 +2,22 @@ comment: 'Amiga 880kB 3.5" DSDD'
|
||||
|
||||
image_reader {
|
||||
filename: "amiga.adf"
|
||||
img {
|
||||
tracks: 80
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
sector_count: 11
|
||||
}
|
||||
}
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
image_writer {
|
||||
filename: "amiga.adf"
|
||||
img {
|
||||
tracks: 80
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
sector_count: 11
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
layout {
|
||||
tracks: 80
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
sector_count: 11
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,11 +2,13 @@ comment: 'Ampro 400kB/800kB 5.25" 40/80 track SSDD/DSDD (ro)'
|
||||
|
||||
image_writer {
|
||||
filename: "ampro.img"
|
||||
img {
|
||||
trackdata {
|
||||
sector_range {
|
||||
start_sector: 17
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
layout {
|
||||
trackdata {
|
||||
sector_range {
|
||||
start_sector: 17
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,15 +2,17 @@ comment: 'Apple II 140kB DOS 3.3 5.25" 40 track SSSD'
|
||||
|
||||
image_reader {
|
||||
filename: "apple2.img"
|
||||
img {
|
||||
tracks: 40
|
||||
sides: 1
|
||||
trackdata {
|
||||
sector_size: 256
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
sector_count: 16
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
layout {
|
||||
tracks: 40
|
||||
sides: 1
|
||||
trackdata {
|
||||
sector_size: 256
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
sector_count: 16
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,30 +2,22 @@ comment: 'Atari ST 360kB 3.5" 80-track 9-sector SSDD'
|
||||
|
||||
image_reader {
|
||||
filename: "atarist360.st"
|
||||
img {
|
||||
tracks: 80
|
||||
sides: 1
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 9
|
||||
}
|
||||
}
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
image_writer {
|
||||
filename: "atarist360.st"
|
||||
img {
|
||||
tracks: 80
|
||||
sides: 1
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 9
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
layout {
|
||||
tracks: 80
|
||||
sides: 1
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 9
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,30 +2,22 @@ comment: 'Atari ST 370kB 3.5" 82-track 9-sector SSDD'
|
||||
|
||||
image_reader {
|
||||
filename: "atarist370.st"
|
||||
img {
|
||||
tracks: 82
|
||||
sides: 1
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 9
|
||||
}
|
||||
}
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
image_writer {
|
||||
filename: "atarist370.st"
|
||||
img {
|
||||
tracks: 82
|
||||
sides: 1
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 9
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
layout {
|
||||
tracks: 82
|
||||
sides: 1
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 9
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,30 +2,22 @@ comment: 'Atari ST 400kB 3.5" 80-track 10-sector SSDD'
|
||||
|
||||
image_reader {
|
||||
filename: "atarist400.st"
|
||||
img {
|
||||
tracks: 80
|
||||
sides: 1
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 10
|
||||
}
|
||||
}
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
image_writer {
|
||||
filename: "atarist400.st"
|
||||
img {
|
||||
tracks: 80
|
||||
sides: 1
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 10
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
layout {
|
||||
tracks: 80
|
||||
sides: 1
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 10
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,30 +2,22 @@ comment: 'Atari ST 410kB 3.5" 82-track 10-sector SSDD'
|
||||
|
||||
image_reader {
|
||||
filename: "atarist410.st"
|
||||
img {
|
||||
tracks: 82
|
||||
sides: 1
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 10
|
||||
}
|
||||
}
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
image_writer {
|
||||
filename: "atarist410.st"
|
||||
img {
|
||||
tracks: 82
|
||||
sides: 1
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 10
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
layout {
|
||||
tracks: 82
|
||||
sides: 1
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 10
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,30 +2,22 @@ comment: 'Atari ST 720kB 3.5" 80-track 9-sector DSDD'
|
||||
|
||||
image_reader {
|
||||
filename: "atarist720.st"
|
||||
img {
|
||||
tracks: 80
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 9
|
||||
}
|
||||
}
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
image_writer {
|
||||
filename: "atarist720.st"
|
||||
img {
|
||||
tracks: 80
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 9
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
layout {
|
||||
tracks: 80
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 9
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,30 +2,22 @@ comment: 'Atari ST 740kB 3.5" 82-track 9-sector DSDD'
|
||||
|
||||
image_reader {
|
||||
filename: "atarist740.st"
|
||||
img {
|
||||
tracks: 82
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 9
|
||||
}
|
||||
}
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
image_writer {
|
||||
filename: "atarist740.st"
|
||||
img {
|
||||
tracks: 82
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 9
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
layout {
|
||||
tracks: 82
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 9
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,30 +2,22 @@ comment: 'Atari ST 800kB 3.5" 80-track 10-sector DSDD'
|
||||
|
||||
image_reader {
|
||||
filename: "atarist800.st"
|
||||
img {
|
||||
tracks: 80
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 10
|
||||
}
|
||||
}
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
image_writer {
|
||||
filename: "atarist800.st"
|
||||
img {
|
||||
tracks: 80
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 10
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
layout {
|
||||
tracks: 80
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 10
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,30 +2,22 @@ comment: 'Atari ST 820kB 3.5" 82-track 10-sector DSDD'
|
||||
|
||||
image_reader {
|
||||
filename: "atarist820.st"
|
||||
img {
|
||||
tracks: 82
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 10
|
||||
}
|
||||
}
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
image_writer {
|
||||
filename: "atarist820.st"
|
||||
img {
|
||||
tracks: 82
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 10
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
layout {
|
||||
tracks: 82
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 10
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,17 +2,7 @@ comment: 'BK 800kB 5.25"/3.5" 80-track 10-sector DSDD'
|
||||
|
||||
image_reader {
|
||||
filename: "bk800.img"
|
||||
img {
|
||||
tracks: 80
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 10
|
||||
}
|
||||
}
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
image_writer {
|
||||
@@ -20,6 +10,18 @@ image_writer {
|
||||
img {}
|
||||
}
|
||||
|
||||
layout {
|
||||
tracks: 80
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 10
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
encoder {
|
||||
ibm {
|
||||
trackdata {
|
||||
|
||||
@@ -2,30 +2,22 @@ comment: 'Brother 120kB 3.5" 39-track SS GCR'
|
||||
|
||||
image_reader {
|
||||
filename: "brother120.img"
|
||||
img {
|
||||
tracks: 39
|
||||
sides: 1
|
||||
trackdata {
|
||||
sector_size: 256
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
sector_count: 12
|
||||
}
|
||||
}
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
image_writer {
|
||||
filename: "brother120.img"
|
||||
img {
|
||||
tracks: 39
|
||||
sides: 1
|
||||
trackdata {
|
||||
sector_size: 256
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
sector_count: 12
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
layout {
|
||||
tracks: 39
|
||||
sides: 1
|
||||
trackdata {
|
||||
sector_size: 256
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
sector_count: 12
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,30 +2,22 @@ comment: 'Brother 240kB 3.5" 78-track SS GCR'
|
||||
|
||||
image_reader {
|
||||
filename: "brother240.img"
|
||||
img {
|
||||
tracks: 78
|
||||
sides: 1
|
||||
trackdata {
|
||||
sector_size: 256
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
sector_count: 12
|
||||
}
|
||||
}
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
image_writer {
|
||||
filename: "brother240.img"
|
||||
img {
|
||||
tracks: 78
|
||||
sides: 1
|
||||
trackdata {
|
||||
sector_size: 256
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
sector_count: 12
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
layout {
|
||||
tracks: 78
|
||||
sides: 1
|
||||
trackdata {
|
||||
sector_size: 256
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
sector_count: 12
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,30 +2,22 @@ comment: 'Commodore 1581 800kB 3.5" DSDD'
|
||||
|
||||
image_reader {
|
||||
filename: "commodore1581.d81"
|
||||
img {
|
||||
tracks: 80
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
sector_count: 10
|
||||
}
|
||||
}
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
image_writer {
|
||||
filename: "commodore1581.d81"
|
||||
img {
|
||||
tracks: 80
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
sector_count: 10
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
layout {
|
||||
tracks: 80
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
sector_count: 10
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,33 +2,35 @@ comment: 'VDS Eco1 1210kB 77-track mixed format DSHD (ro)'
|
||||
|
||||
image_writer {
|
||||
filename: "eco1.img"
|
||||
img {
|
||||
tracks: 77
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 16
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
layout {
|
||||
tracks: 77
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 16
|
||||
}
|
||||
trackdata {
|
||||
track: 0
|
||||
side: 0
|
||||
sector_size: 128
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 26
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 0
|
||||
side: 0
|
||||
sector_size: 128
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 26
|
||||
}
|
||||
trackdata {
|
||||
track: 0
|
||||
side: 1
|
||||
sector_size: 256
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 26
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 0
|
||||
side: 1
|
||||
sector_size: 256
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 26
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,15 +2,17 @@ comment: 'Hewlett-Packard 9121 264kB 3.5" SSDD'
|
||||
|
||||
image_reader {
|
||||
filename: "hp9121.img"
|
||||
img {
|
||||
tracks: 66
|
||||
sides: 1
|
||||
trackdata {
|
||||
sector_size: 256
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
sector_count: 16
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
layout {
|
||||
tracks: 66
|
||||
sides: 1
|
||||
trackdata {
|
||||
sector_size: 256
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
sector_count: 16
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,15 +7,17 @@ drive {
|
||||
|
||||
image_reader {
|
||||
filename: "hplif770.img"
|
||||
img {
|
||||
tracks: 77
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 1024
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 5
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
layout {
|
||||
tracks: 77
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 1024
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 5
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,17 +2,7 @@ comment: 'PC 1200kB 5.25" 80-track 15-sector DSHD'
|
||||
|
||||
image_reader {
|
||||
filename: "ibm1200.img"
|
||||
img {
|
||||
tracks: 80
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 15
|
||||
}
|
||||
}
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
image_writer {
|
||||
@@ -20,6 +10,18 @@ image_writer {
|
||||
img {}
|
||||
}
|
||||
|
||||
layout {
|
||||
tracks: 80
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 15
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
encoder {
|
||||
ibm {
|
||||
trackdata {
|
||||
|
||||
@@ -2,17 +2,7 @@ comment: 'Japanese PC 1232kB 5.25"/3.5" 77-track 8-sector DSHD'
|
||||
|
||||
image_reader {
|
||||
filename: "ibm1232.img"
|
||||
img {
|
||||
tracks: 77
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 1024
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 8
|
||||
}
|
||||
}
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
image_writer {
|
||||
@@ -20,6 +10,18 @@ image_writer {
|
||||
img {}
|
||||
}
|
||||
|
||||
layout {
|
||||
tracks: 77
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 1024
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 8
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
encoder {
|
||||
ibm {
|
||||
trackdata {
|
||||
|
||||
@@ -2,17 +2,7 @@ comment: 'PC 1440kB 3.5" 80-track 18-sector DSHD'
|
||||
|
||||
image_reader {
|
||||
filename: "ibm1440.img"
|
||||
img {
|
||||
tracks: 80
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 18
|
||||
}
|
||||
}
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
image_writer {
|
||||
@@ -20,6 +10,18 @@ image_writer {
|
||||
img {}
|
||||
}
|
||||
|
||||
layout {
|
||||
tracks: 80
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 18
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
encoder {
|
||||
ibm {
|
||||
trackdata {
|
||||
|
||||
@@ -2,17 +2,7 @@ comment: 'PC 180kB 5.25" 40-track 9-sector SSDD'
|
||||
|
||||
image_reader {
|
||||
filename: "ibm180.img"
|
||||
img {
|
||||
tracks: 40
|
||||
sides: 1
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 9
|
||||
}
|
||||
}
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
image_writer {
|
||||
@@ -20,6 +10,18 @@ image_writer {
|
||||
img {}
|
||||
}
|
||||
|
||||
layout {
|
||||
tracks: 40
|
||||
sides: 1
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 9
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
encoder {
|
||||
ibm {
|
||||
trackdata {
|
||||
|
||||
@@ -2,17 +2,7 @@ comment: 'PC 360kB 5.25" 40-track 9-sector DSDD'
|
||||
|
||||
image_reader {
|
||||
filename: "ibm360.img"
|
||||
img {
|
||||
tracks: 40
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 9
|
||||
}
|
||||
}
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
image_writer {
|
||||
@@ -20,6 +10,18 @@ image_writer {
|
||||
img {}
|
||||
}
|
||||
|
||||
layout {
|
||||
tracks: 40
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 9
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
encoder {
|
||||
ibm {
|
||||
trackdata {
|
||||
|
||||
@@ -2,17 +2,7 @@ comment: 'PC 720kB 5.25"/3.5" 80-track 9-sector DSDD'
|
||||
|
||||
image_reader {
|
||||
filename: "ibm720.img"
|
||||
img {
|
||||
tracks: 80
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 9
|
||||
}
|
||||
}
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
image_writer {
|
||||
@@ -20,6 +10,18 @@ image_writer {
|
||||
img {}
|
||||
}
|
||||
|
||||
layout {
|
||||
tracks: 80
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 9
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
encoder {
|
||||
ibm {
|
||||
trackdata {
|
||||
|
||||
@@ -2,98 +2,56 @@ comment: 'Macintosh 400kB 3.5" SSDD GCR'
|
||||
|
||||
image_reader {
|
||||
filename: "mac400.dsk"
|
||||
img {
|
||||
tracks: 80
|
||||
sides: 1
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 0
|
||||
up_to_track: 15
|
||||
sector_range {
|
||||
sector_count: 12
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 16
|
||||
up_to_track: 31
|
||||
sector_range {
|
||||
sector_count: 11
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 32
|
||||
up_to_track: 47
|
||||
sector_range {
|
||||
sector_count: 10
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 48
|
||||
up_to_track: 63
|
||||
sector_range {
|
||||
sector_count: 9
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 64
|
||||
up_to_track: 79
|
||||
sector_range {
|
||||
sector_count: 8
|
||||
}
|
||||
}
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
image_writer {
|
||||
filename: "mac400.dsk"
|
||||
img {
|
||||
tracks: 80
|
||||
sides: 1
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
layout {
|
||||
tracks: 80
|
||||
sides: 1
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
}
|
||||
trackdata {
|
||||
track: 0
|
||||
up_to_track: 15
|
||||
sector_range {
|
||||
sector_count: 12
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 0
|
||||
up_to_track: 15
|
||||
sector_range {
|
||||
sector_count: 12
|
||||
}
|
||||
trackdata {
|
||||
track: 16
|
||||
up_to_track: 31
|
||||
sector_range {
|
||||
sector_count: 11
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 16
|
||||
up_to_track: 31
|
||||
sector_range {
|
||||
sector_count: 11
|
||||
}
|
||||
trackdata {
|
||||
track: 32
|
||||
up_to_track: 47
|
||||
sector_range {
|
||||
sector_count: 10
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 32
|
||||
up_to_track: 47
|
||||
sector_range {
|
||||
sector_count: 10
|
||||
}
|
||||
trackdata {
|
||||
track: 48
|
||||
up_to_track: 63
|
||||
sector_range {
|
||||
sector_count: 9
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 48
|
||||
up_to_track: 63
|
||||
sector_range {
|
||||
sector_count: 9
|
||||
}
|
||||
trackdata {
|
||||
track: 64
|
||||
up_to_track: 79
|
||||
sector_range {
|
||||
sector_count: 8
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 64
|
||||
up_to_track: 79
|
||||
sector_range {
|
||||
sector_count: 8
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,103 +2,60 @@ comment: 'Macintosh 800kB 3.5" DSDD GCR'
|
||||
|
||||
image_reader {
|
||||
filename: "mac800.dsk"
|
||||
img {
|
||||
tracks: 80
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 0
|
||||
up_to_track: 15
|
||||
sector_range {
|
||||
sector_count: 12
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 16
|
||||
up_to_track: 31
|
||||
sector_range {
|
||||
sector_count: 11
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 32
|
||||
up_to_track: 47
|
||||
sector_range {
|
||||
sector_count: 10
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 48
|
||||
up_to_track: 63
|
||||
sector_range {
|
||||
sector_count: 9
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 64
|
||||
up_to_track: 79
|
||||
sector_range {
|
||||
sector_count: 8
|
||||
}
|
||||
}
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
image_writer {
|
||||
filename: "mac800.dsk"
|
||||
img {
|
||||
tracks: 80
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
layout {
|
||||
tracks: 80
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
}
|
||||
trackdata {
|
||||
track: 0
|
||||
up_to_track: 15
|
||||
sector_range {
|
||||
sector_count: 12
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 0
|
||||
up_to_track: 15
|
||||
sector_range {
|
||||
sector_count: 12
|
||||
}
|
||||
trackdata {
|
||||
track: 16
|
||||
up_to_track: 31
|
||||
sector_range {
|
||||
sector_count: 11
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 16
|
||||
up_to_track: 31
|
||||
sector_range {
|
||||
sector_count: 11
|
||||
}
|
||||
trackdata {
|
||||
track: 32
|
||||
up_to_track: 47
|
||||
sector_range {
|
||||
sector_count: 10
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 32
|
||||
up_to_track: 47
|
||||
sector_range {
|
||||
sector_count: 10
|
||||
}
|
||||
trackdata {
|
||||
track: 48
|
||||
up_to_track: 63
|
||||
sector_range {
|
||||
sector_count: 9
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 48
|
||||
up_to_track: 63
|
||||
sector_range {
|
||||
sector_count: 9
|
||||
}
|
||||
trackdata {
|
||||
track: 64
|
||||
up_to_track: 79
|
||||
sector_range {
|
||||
sector_count: 8
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 64
|
||||
up_to_track: 79
|
||||
sector_range {
|
||||
sector_count: 8
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
encoder {
|
||||
macintosh {}
|
||||
}
|
||||
|
||||
@@ -6,29 +6,21 @@ drive {
|
||||
|
||||
image_reader {
|
||||
filename: "micropolis.img"
|
||||
img {
|
||||
tracks: 35
|
||||
sides: 1
|
||||
trackdata {
|
||||
sector_size: 256
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
sector_count: 16
|
||||
}
|
||||
}
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
image_writer {
|
||||
filename: "micropolis.img"
|
||||
img {
|
||||
tracks: 35
|
||||
trackdata {
|
||||
sector_size: 256
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
sector_count: 16
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
layout {
|
||||
tracks: 35
|
||||
trackdata {
|
||||
sector_size: 256
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
sector_count: 16
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,29 +6,21 @@ drive {
|
||||
|
||||
image_reader {
|
||||
filename: "micropolis.img"
|
||||
img {
|
||||
tracks: 35
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 256
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
sector_count: 16
|
||||
}
|
||||
}
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
image_writer {
|
||||
filename: "micropolis.img"
|
||||
img {
|
||||
tracks: 35
|
||||
trackdata {
|
||||
sector_size: 256
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
sector_count: 16
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
layout {
|
||||
tracks: 35
|
||||
trackdata {
|
||||
sector_size: 256
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
sector_count: 16
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,29 +6,21 @@ drive {
|
||||
|
||||
image_reader {
|
||||
filename: "micropolis.img"
|
||||
img {
|
||||
tracks: 77
|
||||
sides: 1
|
||||
trackdata {
|
||||
sector_size: 256
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
sector_count: 16
|
||||
}
|
||||
}
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
image_writer {
|
||||
filename: "micropolis.img"
|
||||
img {
|
||||
tracks: 77
|
||||
trackdata {
|
||||
sector_size: 256
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
sector_count: 16
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
layout {
|
||||
tracks: 77
|
||||
trackdata {
|
||||
sector_size: 256
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
sector_count: 16
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,29 +6,21 @@ drive {
|
||||
|
||||
image_reader {
|
||||
filename: "micropolis.img"
|
||||
img {
|
||||
tracks: 77
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 256
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
sector_count: 16
|
||||
}
|
||||
}
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
image_writer {
|
||||
filename: "micropolis.img"
|
||||
img {
|
||||
tracks: 77
|
||||
trackdata {
|
||||
sector_size: 256
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
sector_count: 16
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
layout {
|
||||
tracks: 77
|
||||
trackdata {
|
||||
sector_size: 256
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
sector_count: 16
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,48 +6,31 @@ drive {
|
||||
|
||||
image_reader {
|
||||
filename: "n88basic.img"
|
||||
img {
|
||||
tracks: 77
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 256
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 26
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 0
|
||||
side: 0
|
||||
sector_size: 128
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 26
|
||||
}
|
||||
}
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
image_writer {
|
||||
filename: "n88basic.img"
|
||||
img {
|
||||
tracks: 77
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 256
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 26
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
layout {
|
||||
tracks: 77
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 256
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 26
|
||||
}
|
||||
trackdata {
|
||||
track: 0
|
||||
side: 0
|
||||
sector_size: 128
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 26
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 0
|
||||
side: 0
|
||||
sector_size: 128
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 26
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,17 +6,7 @@ drive {
|
||||
|
||||
image_reader {
|
||||
filename: "rx50.img"
|
||||
img {
|
||||
tracks: 80
|
||||
sides: 1
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 10
|
||||
}
|
||||
}
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
image_writer {
|
||||
@@ -24,6 +14,18 @@ image_writer {
|
||||
img {}
|
||||
}
|
||||
|
||||
layout {
|
||||
tracks: 80
|
||||
sides: 1
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 1
|
||||
sector_count: 10
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
encoder {
|
||||
ibm {
|
||||
trackdata {
|
||||
|
||||
@@ -2,17 +2,7 @@ comment: 'Texas Instruments DS990 1126kB 8" DSSD'
|
||||
|
||||
image_reader {
|
||||
filename: "tids990.img"
|
||||
img {
|
||||
tracks: 77
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 288
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
sector_count: 26
|
||||
}
|
||||
}
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
image_writer {
|
||||
@@ -20,6 +10,18 @@ image_writer {
|
||||
img {}
|
||||
}
|
||||
|
||||
layout {
|
||||
tracks: 77
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 288
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
sector_count: 26
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
encoder {
|
||||
tids990 {}
|
||||
}
|
||||
|
||||
@@ -3,19 +3,17 @@ is_extension: true
|
||||
|
||||
image_reader {
|
||||
filename: "micropolis.vgi"
|
||||
img {
|
||||
trackdata {
|
||||
sector_size: 275
|
||||
}
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
image_writer {
|
||||
filename: "micropolis.vgi"
|
||||
img {
|
||||
trackdata {
|
||||
sector_size: 275
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
layout {
|
||||
trackdata {
|
||||
sector_size: 275
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2,284 +2,149 @@ comment: 'Victor 9000 / Sirius One 1224kB DSHD GCR variable sector)'
|
||||
|
||||
image_reader {
|
||||
filename: "victor9k_ds.img"
|
||||
img {
|
||||
tracks: 80
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
side: 0
|
||||
track: 0
|
||||
up_to_track: 3
|
||||
sector_range {
|
||||
sector_count: 19
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
side: 0
|
||||
track: 4
|
||||
up_to_track: 15
|
||||
sector_range {
|
||||
sector_count: 18
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
side: 0
|
||||
track: 16
|
||||
up_to_track: 26
|
||||
sector_range {
|
||||
sector_count: 17
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
side: 0
|
||||
track: 27
|
||||
up_to_track: 37
|
||||
sector_range {
|
||||
sector_count: 16
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
side: 0
|
||||
track: 38
|
||||
up_to_track: 47
|
||||
sector_range {
|
||||
sector_count: 15
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
side: 0
|
||||
track: 48
|
||||
up_to_track: 59
|
||||
sector_range {
|
||||
sector_count: 14
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
side: 0
|
||||
track: 60
|
||||
up_to_track: 70
|
||||
sector_range {
|
||||
sector_count: 13
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
side: 0
|
||||
track: 71
|
||||
up_to_track: 79
|
||||
sector_range {
|
||||
sector_count: 12
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
side: 1
|
||||
track: 0
|
||||
up_to_track: 7
|
||||
sector_range {
|
||||
sector_count: 18
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
side: 1
|
||||
track: 8
|
||||
up_to_track: 18
|
||||
sector_range {
|
||||
sector_count: 17
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
side: 1
|
||||
track: 19
|
||||
up_to_track: 29
|
||||
sector_range {
|
||||
sector_count: 16
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
side: 1
|
||||
track: 30
|
||||
up_to_track: 39
|
||||
sector_range {
|
||||
sector_count: 15
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
side: 1
|
||||
track: 40
|
||||
up_to_track: 51
|
||||
sector_range {
|
||||
sector_count: 14
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
side: 1
|
||||
track: 52
|
||||
up_to_track: 62
|
||||
sector_range {
|
||||
sector_count: 13
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
side: 1
|
||||
track: 63
|
||||
up_to_track: 74
|
||||
sector_range {
|
||||
sector_count: 12
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
side: 1
|
||||
track: 75
|
||||
up_to_track: 79
|
||||
sector_range {
|
||||
sector_count: 11
|
||||
}
|
||||
}
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
image_writer {
|
||||
filename: "victor9k_ds.img"
|
||||
img {
|
||||
tracks: 80
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
layout {
|
||||
tracks: 80
|
||||
sides: 2
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
}
|
||||
trackdata {
|
||||
side: 0
|
||||
track: 0
|
||||
up_to_track: 3
|
||||
sector_range {
|
||||
sector_count: 19
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
side: 0
|
||||
track: 0
|
||||
up_to_track: 3
|
||||
sector_range {
|
||||
sector_count: 19
|
||||
}
|
||||
trackdata {
|
||||
side: 0
|
||||
track: 4
|
||||
up_to_track: 15
|
||||
sector_range {
|
||||
sector_count: 18
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
side: 0
|
||||
track: 4
|
||||
up_to_track: 15
|
||||
sector_range {
|
||||
sector_count: 18
|
||||
}
|
||||
trackdata {
|
||||
side: 0
|
||||
track: 16
|
||||
up_to_track: 26
|
||||
sector_range {
|
||||
sector_count: 17
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
side: 0
|
||||
track: 16
|
||||
up_to_track: 26
|
||||
sector_range {
|
||||
sector_count: 17
|
||||
}
|
||||
trackdata {
|
||||
side: 0
|
||||
track: 27
|
||||
up_to_track: 37
|
||||
sector_range {
|
||||
sector_count: 16
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
side: 0
|
||||
track: 27
|
||||
up_to_track: 37
|
||||
sector_range {
|
||||
sector_count: 16
|
||||
}
|
||||
trackdata {
|
||||
side: 0
|
||||
track: 38
|
||||
up_to_track: 47
|
||||
sector_range {
|
||||
sector_count: 15
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
side: 0
|
||||
track: 38
|
||||
up_to_track: 47
|
||||
sector_range {
|
||||
sector_count: 15
|
||||
}
|
||||
trackdata {
|
||||
side: 0
|
||||
track: 48
|
||||
up_to_track: 59
|
||||
sector_range {
|
||||
sector_count: 14
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
side: 0
|
||||
track: 48
|
||||
up_to_track: 59
|
||||
sector_range {
|
||||
sector_count: 14
|
||||
}
|
||||
trackdata {
|
||||
side: 0
|
||||
track: 60
|
||||
up_to_track: 70
|
||||
sector_range {
|
||||
sector_count: 13
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
side: 0
|
||||
track: 60
|
||||
up_to_track: 70
|
||||
sector_range {
|
||||
sector_count: 13
|
||||
}
|
||||
trackdata {
|
||||
side: 0
|
||||
track: 71
|
||||
up_to_track: 79
|
||||
sector_range {
|
||||
sector_count: 12
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
side: 0
|
||||
track: 71
|
||||
up_to_track: 79
|
||||
sector_range {
|
||||
sector_count: 12
|
||||
}
|
||||
trackdata {
|
||||
side: 1
|
||||
track: 0
|
||||
up_to_track: 7
|
||||
sector_range {
|
||||
sector_count: 18
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
side: 1
|
||||
track: 0
|
||||
up_to_track: 7
|
||||
sector_range {
|
||||
sector_count: 18
|
||||
}
|
||||
trackdata {
|
||||
side: 1
|
||||
track: 8
|
||||
up_to_track: 18
|
||||
sector_range {
|
||||
sector_count: 17
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
side: 1
|
||||
track: 8
|
||||
up_to_track: 18
|
||||
sector_range {
|
||||
sector_count: 17
|
||||
}
|
||||
trackdata {
|
||||
side: 1
|
||||
track: 19
|
||||
up_to_track: 29
|
||||
sector_range {
|
||||
sector_count: 16
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
side: 1
|
||||
track: 19
|
||||
up_to_track: 29
|
||||
sector_range {
|
||||
sector_count: 16
|
||||
}
|
||||
trackdata {
|
||||
side: 1
|
||||
track: 30
|
||||
up_to_track: 39
|
||||
sector_range {
|
||||
sector_count: 15
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
side: 1
|
||||
track: 30
|
||||
up_to_track: 39
|
||||
sector_range {
|
||||
sector_count: 15
|
||||
}
|
||||
trackdata {
|
||||
side: 1
|
||||
track: 40
|
||||
up_to_track: 51
|
||||
sector_range {
|
||||
sector_count: 14
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
side: 1
|
||||
track: 40
|
||||
up_to_track: 51
|
||||
sector_range {
|
||||
sector_count: 14
|
||||
}
|
||||
trackdata {
|
||||
side: 1
|
||||
track: 52
|
||||
up_to_track: 62
|
||||
sector_range {
|
||||
sector_count: 13
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
side: 1
|
||||
track: 52
|
||||
up_to_track: 62
|
||||
sector_range {
|
||||
sector_count: 13
|
||||
}
|
||||
trackdata {
|
||||
side: 1
|
||||
track: 63
|
||||
up_to_track: 74
|
||||
sector_range {
|
||||
sector_count: 12
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
side: 1
|
||||
track: 63
|
||||
up_to_track: 74
|
||||
sector_range {
|
||||
sector_count: 12
|
||||
}
|
||||
trackdata {
|
||||
side: 1
|
||||
track: 75
|
||||
up_to_track: 79
|
||||
sector_range {
|
||||
sector_count: 11
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
side: 1
|
||||
track: 75
|
||||
up_to_track: 79
|
||||
sector_range {
|
||||
sector_count: 11
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,140 +2,77 @@ comment: 'Victor 9000 / Sirius One 612kB SSHD GCR variable sector)'
|
||||
|
||||
image_reader {
|
||||
filename: "victor9k.img"
|
||||
img {
|
||||
tracks: 80
|
||||
sides: 1
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 0
|
||||
up_to_track: 3
|
||||
sector_range {
|
||||
sector_count: 19
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 4
|
||||
up_to_track: 15
|
||||
sector_range {
|
||||
sector_count: 18
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 16
|
||||
up_to_track: 26
|
||||
sector_range {
|
||||
sector_count: 17
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 27
|
||||
up_to_track: 37
|
||||
sector_range {
|
||||
sector_count: 16
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 38
|
||||
up_to_track: 47
|
||||
sector_range {
|
||||
sector_count: 15
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 48
|
||||
up_to_track: 59
|
||||
sector_range {
|
||||
sector_count: 14
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 60
|
||||
up_to_track: 70
|
||||
sector_range {
|
||||
sector_count: 13
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 71
|
||||
up_to_track: 79
|
||||
sector_range {
|
||||
sector_count: 12
|
||||
}
|
||||
}
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
image_writer {
|
||||
filename: "victor9k.img"
|
||||
img {
|
||||
tracks: 80
|
||||
sides: 1
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
}
|
||||
img {}
|
||||
}
|
||||
|
||||
layout {
|
||||
tracks: 80
|
||||
sides: 1
|
||||
trackdata {
|
||||
sector_size: 512
|
||||
sector_range {
|
||||
start_sector: 0
|
||||
}
|
||||
trackdata {
|
||||
track: 0
|
||||
up_to_track: 3
|
||||
sector_range {
|
||||
sector_count: 19
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 0
|
||||
up_to_track: 3
|
||||
sector_range {
|
||||
sector_count: 19
|
||||
}
|
||||
trackdata {
|
||||
track: 4
|
||||
up_to_track: 15
|
||||
sector_range {
|
||||
sector_count: 18
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 4
|
||||
up_to_track: 15
|
||||
sector_range {
|
||||
sector_count: 18
|
||||
}
|
||||
trackdata {
|
||||
track: 16
|
||||
up_to_track: 26
|
||||
sector_range {
|
||||
sector_count: 17
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 16
|
||||
up_to_track: 26
|
||||
sector_range {
|
||||
sector_count: 17
|
||||
}
|
||||
trackdata {
|
||||
track: 27
|
||||
up_to_track: 37
|
||||
sector_range {
|
||||
sector_count: 16
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 27
|
||||
up_to_track: 37
|
||||
sector_range {
|
||||
sector_count: 16
|
||||
}
|
||||
trackdata {
|
||||
track: 38
|
||||
up_to_track: 47
|
||||
sector_range {
|
||||
sector_count: 15
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 38
|
||||
up_to_track: 47
|
||||
sector_range {
|
||||
sector_count: 15
|
||||
}
|
||||
trackdata {
|
||||
track: 48
|
||||
up_to_track: 59
|
||||
sector_range {
|
||||
sector_count: 14
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 48
|
||||
up_to_track: 59
|
||||
sector_range {
|
||||
sector_count: 14
|
||||
}
|
||||
trackdata {
|
||||
track: 60
|
||||
up_to_track: 70
|
||||
sector_range {
|
||||
sector_count: 13
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 60
|
||||
up_to_track: 70
|
||||
sector_range {
|
||||
sector_count: 13
|
||||
}
|
||||
trackdata {
|
||||
track: 71
|
||||
up_to_track: 79
|
||||
sector_range {
|
||||
sector_count: 12
|
||||
}
|
||||
}
|
||||
trackdata {
|
||||
track: 71
|
||||
up_to_track: 79
|
||||
sector_range {
|
||||
sector_count: 12
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user