Convert the Micropolis decoder.

This commit is contained in:
David Given
2021-05-15 14:10:08 +02:00
parent 1149ad86a2
commit f46e444aa2
7 changed files with 43 additions and 28 deletions

View File

@@ -5,10 +5,12 @@
class Sector;
class Fluxmap;
class MicropolisInputProto;
class MicropolisDecoder : public AbstractDecoder
{
public:
MicropolisDecoder(const MicropolisInputProto&) {}
virtual ~MicropolisDecoder() {}
RecordType advanceToNextRecord();

View File

@@ -0,0 +1,4 @@
syntax = "proto2";
message MicropolisInputProto {}

View File

@@ -11,6 +11,7 @@
#include "arch/f85/f85.h"
#include "arch/ibm/ibm.h"
#include "arch/macintosh/macintosh.h"
#include "arch/micropolis/micropolis.h"
#include "decoders/fluxmapreader.h"
#include "record.h"
#include "protocol.h"
@@ -49,6 +50,9 @@ std::unique_ptr<AbstractDecoder> AbstractDecoder::create(const DecoderProto& con
case DecoderProto::kMacintosh:
return std::unique_ptr<AbstractDecoder>(new MacintoshDecoder(config.macintosh()));
case DecoderProto::kMicropolis:
return std::unique_ptr<AbstractDecoder>(new MicropolisDecoder(config.micropolis()));
default:
Error() << "no input disk format specified";
}

View File

@@ -9,6 +9,7 @@ import "arch/f85/f85.proto";
import "arch/fb100/fb100.proto";
import "arch/ibm/ibm.proto";
import "arch/macintosh/macintosh.proto";
import "arch/micropolis/micropolis.proto";
import "lib/common.proto";
message DecoderProto {
@@ -31,6 +32,7 @@ message DecoderProto {
Fb100InputProto fb100 = 11;
MacintoshInputProto macintosh = 12;
Apple2InputProto apple2 = 13;
MicropolisInputProto micropolis = 14;
}
}

View File

@@ -266,6 +266,7 @@ buildproto libproto.a \
arch/fb100/fb100.proto \
arch/ibm/ibm.proto \
arch/macintosh/macintosh.proto \
arch/micropolis/micropolis.proto \
lib/common.proto \
lib/config.proto \
lib/decoders/decoders.proto \
@@ -357,6 +358,7 @@ READABLES="\
fb100 \
ibm \
macintosh \
micropolis \
"
WRITABLES="\
@@ -407,8 +409,6 @@ buildlibrary libfrontend.a \
src/fe-writeflux.cc \
src/fluxengine.cc \
# src/fe-readapple2.cc \
# src/fe-readmicropolis.cc \
# src/fe-readmx.cc \
# src/fe-readtids990.cc \
# src/fe-readvictor9k.cc \

View File

@@ -1,26 +0,0 @@
#include "globals.h"
#include "flags.h"
#include "reader.h"
#include "fluxmap.h"
#include "encoders/encoders.h"
#include "decoders/decoders.h"
#include "sector.h"
#include "sectorset.h"
#include "record.h"
#include "micropolis/micropolis.h"
#include "fmt/format.h"
static FlagGroup flags { &readerFlags };
int mainReadMicropolis(int argc, const char* argv[])
{
setReaderDefaultSource(":t=0-76");
setReaderDefaultOutput("micropolis.img");
setReaderHardSectorCount(16);
flags.parseFlags(argc, argv);
MicropolisDecoder decoder;
readDiskCommand(decoder);
return 0;
}

View File

@@ -0,0 +1,29 @@
input {
disk {
drive {
hard_sector_count: 16
}
}
}
output {
file {
filename: "micropolis.img"
img {}
}
}
decoder {
micropolis {}
}
cylinders {
start: 0
end: 76
}
heads {
start: 0
end: 1
}