mirror of
https://github.com/TomHarte/CLK.git
synced 2024-11-26 08:49:37 +00:00
Creates a virtual interface that can be adopted by classes that are able to provide some insight as to target machine.
This commit is contained in:
parent
9aa150c338
commit
56dd677e9c
@ -20,9 +20,11 @@ ZX80O81P::ZX80O81P(const char *file_name) :
|
||||
|
||||
// If it's a ZX81 file, prepend a file name.
|
||||
std::string type = extension();
|
||||
platform_type_ = TargetPlatform::ZX80;
|
||||
if(type == "p" || type == "81") {
|
||||
// TODO, maybe: prefix a proper file name; this is leaving the file nameless.
|
||||
data_.insert(data_.begin(), 0x80);
|
||||
platform_type_ = TargetPlatform::ZX81;
|
||||
}
|
||||
|
||||
std::shared_ptr<::Storage::Data::ZX8081::File> file = Storage::Data::ZX8081::FileFromData(data_);
|
||||
@ -100,3 +102,7 @@ Tape::Pulse ZX80O81P::virtual_get_next_pulse() {
|
||||
|
||||
return pulse;
|
||||
}
|
||||
|
||||
TargetPlatform::Type ZX80O81P::target_platform_type() {
|
||||
return platform_type_;
|
||||
}
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
#include "../Tape.hpp"
|
||||
#include "../../FileHolder.hpp"
|
||||
#include "../../TargetPlatforms.hpp"
|
||||
|
||||
#include <cstdint>
|
||||
#include <vector>
|
||||
@ -21,7 +22,7 @@ namespace Tape {
|
||||
/*!
|
||||
Provides a @c Tape containing a ZX80-format .O tape image, which is a byte stream capture.
|
||||
*/
|
||||
class ZX80O81P: public Tape, public Storage::FileHolder {
|
||||
class ZX80O81P: public Tape, public Storage::FileHolder, public TargetPlatform::TypeDistinguisher {
|
||||
public:
|
||||
/*!
|
||||
Constructs a @c ZX80O containing content from the file with name @c file_name.
|
||||
@ -34,10 +35,14 @@ class ZX80O81P: public Tape, public Storage::FileHolder {
|
||||
ErrorNotZX80O81P
|
||||
};
|
||||
|
||||
private:
|
||||
// implemented to satisfy @c Tape
|
||||
bool is_at_end();
|
||||
|
||||
private:
|
||||
// implemented to satisfy TargetPlatform::TypeDistinguisher
|
||||
TargetPlatform::Type target_platform_type();
|
||||
TargetPlatform::Type platform_type_;
|
||||
|
||||
void virtual_reset();
|
||||
Pulse virtual_get_next_pulse();
|
||||
bool has_finished_data();
|
||||
|
@ -26,6 +26,11 @@ enum Type: IntType {
|
||||
AllDisk = Acorn | AmstradCPC | Commodore | Oric,
|
||||
};
|
||||
|
||||
class TypeDistinguisher {
|
||||
public:
|
||||
virtual Type target_platform_type() = 0;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif /* TargetPlatforms_h */
|
||||
|
Loading…
Reference in New Issue
Block a user