8#include "../dumper/dumper.h"
9#include "../linker/module.h"
10#include "../linker/options.h"
11#include "../linker/reader.h"
12#include "../linker/segment.h"
13#include "../linker/writer.h"
30 AppleFormat(uint64_t default_base_address = 0x0803, std::string default_extension =
"",
bool dos33_header =
true)
31 : GenericBinaryFormat(default_base_address, default_extension), dos33_header(dos33_header)
35 void ReadFile(
const std::shared_ptr<Linker::Reader>& rd)
override;
38 offset_t
WriteFile(
const std::shared_ptr<Linker::Writer>& wr)
const override;
50 std::shared_ptr<Linker::Contents> optional_header;
54 SOSFormat(uint64_t default_base_address = 0x9000, std::string default_extension =
"")
55 : GenericBinaryFormat(default_base_address, default_extension)
61 void ReadFile(
const std::shared_ptr<Linker::Reader>& rd)
override;
64 offset_t
WriteFile(
const std::shared_ptr<Linker::Writer>& wr)
const override;
84 std::shared_ptr<Linker::OutputFormat> data_fork;
97 file_type_t file_type;
108 : GSOutputDriver(
target, 0),
116 void OnReadFile(
const std::shared_ptr<Linker::Reader>& rd)
override;
117 offset_t
OnWriteFile(
const std::shared_ptr<Linker::Writer>& wr)
const override;
121 void SetAppleSingleDoubleVersion(offset_t version);
131 InitializeFields(asver, adver);
135 std::shared_ptr<Linker::OptionCollector>
GetOptions()
override;
136 void SetOptions(std::map<std::string, std::string>& options)
override;
138 void ReadFile(
const std::shared_ptr<Linker::Reader>& rd)
override;
145 uint8_t GetFileType()
const;
146 uint16_t GetAuxiliaryFileType()
const;
148 bool UseDOS33Header()
const
182 AtariFormat(uint64_t default_base_address = 0, std::string default_extension =
".xex")
183 : GenericBinaryFormat(default_base_address, default_extension)
259 std::shared_ptr<Linker::Contents>
image;
283 void ReadFile(
const std::shared_ptr<Linker::Reader>& rd);
288 void WriteFile(
const std::shared_ptr<Linker::Writer>& wr)
const;
320 void OnNewSegment(std::shared_ptr<Linker::Segment> segment)
override;
324 void ReadFile(
const std::shared_ptr<Linker::Reader>& rd)
override;
327 offset_t
WriteFile(
const std::shared_ptr<Linker::Writer>& wr)
const override;
343 uint16_t line_address = 0;
344 uint16_t line_number = 0;
345 uint16_t next_address = 0;
346 std::vector<uint8_t> tokens;
431 void AddToken(Token token);
432 void AddString(std::string text);
433 void AddDecimal(
int value);
436 void ReadFile(
const std::shared_ptr<Linker::Reader>& rd)
override;
438 offset_t
WriteFile(
const std::shared_ptr<Linker::Writer>& wr)
const override;
439 void CalculateValues();
441 void Dump(
Dumper::Dumper& dump, std::optional<uint16_t> line_index,
int display_flags)
const;
447 uint16_t load_address = 0;
448 std::vector<BASICLine> lines;
449 uint16_t end_address = 0;
451 void ReadFile(
const std::shared_ptr<Linker::Reader>& rd)
override;
454 offset_t
WriteFile(
const std::shared_ptr<Linker::Writer>& wr)
const override;
455 void CalculateValues();
492 CommodoreOptionCollector()
494 InitializeFields(system, load_address);
498 uint16_t load_address = 0;
499 std::shared_ptr<Linker::Contents> loader;
501 uint16_t GetLoadAddress()
const;
503 void Clear()
override;
510 void SetupDefaultLoader();
511 uint16_t GetImagePaddingSize()
const;
513 std::shared_ptr<Linker::OptionCollector>
GetOptions()
override;
514 void SetOptions(std::map<std::string, std::string>& options)
override;
518 void ReadFile(
const std::shared_ptr<Linker::Reader>& rd)
override;
522 offset_t
WriteFile(
const std::shared_ptr<Linker::Writer>& wr)
const override;
530namespace DigitalResearch
547 InitializeFields(rsx_file_names);
569 std::shared_ptr<PRLFormat>
module;
577 void Clear()
override;
580 : GenericBinaryFormat(0x0100,
".com")
589 std::shared_ptr<Linker::OptionCollector>
GetOptions()
override;
591 void SetOptions(std::map<std::string, std::string>& options)
override;
593 void ReadFile(
const std::shared_ptr<Linker::Reader>& rd)
override;
596 offset_t
WriteFile(
const std::shared_ptr<Linker::Writer>& wr)
const override;
615 InitializeFields(banked);
674 std::shared_ptr<Linker::OptionCollector>
GetOptions()
override;
675 void SetOptions(std::map<std::string, std::string>& options)
override;
677 std::unique_ptr<Script::List> GetScript(
Linker::Module& module)
override;
679 void OnNewSegment(std::shared_ptr<Linker::Segment> segment)
override;
685 void ReadFile(
const std::shared_ptr<Linker::Reader>& rd)
override;
688 offset_t
WriteFile(
const std::shared_ptr<Linker::Writer>& wr)
const override;
691 void ReadWithoutHeader(
const std::shared_ptr<Linker::Reader>& rd, uint16_t image_size);
715 std::shared_ptr<Linker::Contents> image;
717 void WriteFile(
const std::shared_ptr<Linker::Writer>& wr)
const;
720 std::vector<std::unique_ptr<Segment>> segments;
722 void OnNewSegment(std::shared_ptr<Linker::Segment> segment)
override;
725 offset_t
WriteFile(
const std::shared_ptr<Linker::Writer>& wr)
const override;
748 offset_t
WriteFile(
const std::shared_ptr<Linker::Writer>& wr)
const override;
761 std::shared_ptr<Linker::Contents> code, data;
763 void OnNewSegment(std::shared_ptr<Linker::Segment> segment)
override;
768 offset_t
WriteFile(
const std::shared_ptr<Linker::Writer>& wr)
const override;
This is not actually a file format, but an interface to permit generating multiple binary outputs for...
Definition 8bitexe.h:82
offset_t OnWriteFile(const std::shared_ptr< Linker::Writer > &wr) const override
Called if there is no container allocated.
Definition 8bitexe.cc:262
std::string GetDefaultExtension(Linker::Module &module, std::string filename) const override
Appends a default extension to the filename.
Definition 8bitexe.cc:298
void CalculateValues() override
Intermediate step between processing module and generating output file to set up headers and manageme...
Definition 8bitexe.cc:245
void SetOptions(std::map< std::string, std::string > &options) override
Passes command line parameters as settings over to format object.
Definition 8bitexe.cc:141
void Dump(Dumper::Dumper &dump) const override
Display file contents in a nice manner.
Definition 8bitexe.cc:310
void GenerateFile(std::string filename, Linker::Module &module) override
The main function that handles processing, calculating and generating the final image.
Definition 8bitexe.cc:201
void OnReadFile(const std::shared_ptr< Linker::Reader > &rd) override
Called if there is no container allocated.
Definition 8bitexe.cc:250
void OnContainerCreated() override
Called after the container is created.
Definition 8bitexe.cc:238
void ReadFile(const std::shared_ptr< Linker::Reader > &rd) override
Loads file into memory.
Definition 8bitexe.cc:191
void OnDump(Dumper::Dumper &dump) const override
Called if there is no container allocated.
Definition 8bitexe.cc:267
header_format_t
Definition 8bitexe.h:87
@ HEADER_RAW
For a BIN file, there is no DOS 3.3 header (even if no "+naps" is specified)
Definition 8bitexe.h:93
@ HEADER_BIN
For a BIN file, there may or may not be a DOS 3.3 header (if no "+naps" is specified)
Definition 8bitexe.h:89
@ HEADER_DOS33
For a BIN file, the DOS 3.3 header is included (even if "+naps" is specified)
Definition 8bitexe.h:91
std::shared_ptr< Linker::OptionCollector > GetOptions() override
Returns object containing a sequence of option fields provided with the -S command line flag.
Definition 8bitexe.cc:136
This is not actually a file format, but an interface to permit generating multiple binary outputs for...
Definition gsos.h:783
target_format_t
Represents the file type of the main file.
Definition gsos.h:787
@ TARGET_DATA_FORK
Main file is a data fork, typically empty.
Definition gsos.h:791
@ PRODUCE_NAPS_SUFFIX
NuLib2 attribute preservation string suffix, such as #06xxxx (Apple II, III, IIgs only)
Definition apple.h:741
target_format_t target
Format of "filename".
Definition apple.h:746
@ TARGET_DATA_FORK
Main file is a data fork, typically empty.
Definition apple.h:717
produce_format_t produce
Bitset of other files to produce.
Definition apple.h:749
An abstract interface that separates structure and presentation of the data inside a file.
Definition dumper.h:1009
A representation of an enumeration with associated string representations for each value.
Definition options.h:15
std::map< value_type, std::string > descriptions
An empty dictionary that explains the value types in detail.
Definition options.h:20
Encodes an object module file as a collection of sections, symbols and relocations.
Definition module.h:24
Helper class that contains the options interpreted by the format.
Definition options.h:499
Documents and handles command line options.
Definition options.h:306
A representation of a value within some binary data that has to be fixed up once the exact position o...
Definition relocation.h:28
Representing a resolved relocation.
Definition resolution.h:17