RetroLinker
Linker for several 8-bit, 16-bit and 32-bit formats
|
Represents a loadable segment in the binary. More...
#include <8bitexe.h>
Public Types | |
enum | segment_type : uint16_t { SIGNATURE_LOW = 0xFFFA , SDX_FIXED = 0xFFFA , SDX_SYMREQ = 0xFFFB , SDX_SYMDEF = 0xFFFC , SDX_FIXUPS = 0xFFFD , SDX_RAMALLOC = 0xFFFE , SDX_POSIND = 0xFFFE , ATARI_SEGMENT = 0xFFFF } |
Types of segments, represented by their signature values. More... | |
enum | control_byte_type : uint8_t { CB_CONVRAM = 0x00 , CB_SYSEXTAREA = 0x02 , CB_PROGEXTAREA = 0x04 , CB_PAGEALIGNED = 0x40 , CB_RAMALLOC = 0x80 } |
Public Member Functions | |
Segment (bool header_type_optional=true) | |
Segment (uint16_t header_type) | |
offset_t | GetSize () const |
Retrieves the number of bytes in the segment body. | |
void | ReadFile (Linker::Reader &rd) |
Reads a segment from a file into this object. | |
void | WriteFile (Linker::Writer &wr) const |
Writes the segment into a file. | |
void | ReadRelocations (Linker::Reader &rd) |
Read relocations. | |
void | WriteRelocations (Linker::Writer &wr) const |
Writes relocations. | |
Public Attributes | |
segment_type | header_type = ATARI_SEGMENT |
Header type, Atari DOS uses only 0xFFFF, signature only obligatory for the first segment. | |
bool | header_type_optional = false |
Set if placing header type is optional, also set when signature is absent in file when reading. | |
uint16_t | address = 0 |
Address at which segment must be loaded. | |
uint8_t | block_number = 0 |
Only used for SDX_RAMALLOC/SDX_POSIND, SDX_SYMREQ. | |
control_byte_type | control_byte = control_byte_type(0) |
Only used for SDX_RAMALLOC/SDX_POSIND. | |
uint16_t | size = 0 |
Only used for SDX_RAMALLOC/SDX_POSIND. | |
char | symbol_name [8] = { } |
Only used for SDX_SYMREQ, SDX_SYMDEF. | |
std::shared_ptr< Linker::Image > | image |
The binary data in the segment. | |
std::set< uint16_t > | relocations |
Relocations, only used for SDX_SYMREQ and SDX_FIXUPS. | |
Represents a loadable segment in the binary.
enum Binary::AtariFormat::Segment::control_byte_type : uint8_t |
enum Binary::AtariFormat::Segment::segment_type : uint16_t |
Types of segments, represented by their signature values.