1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-06-09 01:29:44 +00:00

Eliminates all emdashes in cross-platform code.

This commit is contained in:
Thomas Harte 2018-05-13 15:34:31 -04:00
parent 0b771ce61a
commit 5d6b5d9f10
55 changed files with 82 additions and 82 deletions

View File

@ -15,7 +15,7 @@ namespace Activity {
/*!
Provides a purely virtual base class for anybody that wants to receive notifications of
'activity' any feedback from an emulated system which a user could perceive other than
'activity': any feedback from an emulated system which a user could perceive other than
through the machine's native audio and video outputs.
So: status LEDs, drive activity, etc. A receiver may choose to make appropriate noises

View File

@ -24,10 +24,10 @@ class ConfidenceCounter: public ConfidenceSource {
/*! @returns The computed probability, based on the history of events. */
float get_confidence() override;
/*! Records an event that implies this is the appropriate class pushes probability up towards 1.0. */
/*! Records an event that implies this is the appropriate class: pushes probability up towards 1.0. */
void add_hit();
/*! Records an event that implies this is not the appropriate class pushes probability down towards 0.0. */
/*! Records an event that implies this is not the appropriate class: pushes probability down towards 0.0. */
void add_miss();
/*!

View File

@ -16,7 +16,7 @@ namespace Analyser {
namespace Static {
namespace Acorn {
/// Describes a DFS- or ADFS-format catalogue(/directory) the list of files available and the catalogue's boot option.
/// Describes a DFS- or ADFS-format catalogue(/directory): the list of files available and the catalogue's boot option.
struct Catalogue {
std::string name;
std::vector<File> files;

View File

@ -50,7 +50,7 @@ static std::vector<std::shared_ptr<Storage::Cartridge::Cartridge>>
// 1/(2^32) *
// ( ((2^24)-1)/(2^24)*(1/4) + 1/(2^24) ) *
// 1/4
// = something very improbable around 1/16th of 1 in 2^32, but not exactly.
// = something very improbable, around 1/16th of 1 in 2^32, but not exactly.
acorn_cartridges.push_back(cartridge);
}

View File

@ -21,7 +21,7 @@ namespace Static {
namespace MOS6502 {
/*!
Describes a 6502 instruciton its address, the operation it performs, its addressing mode
Describes a 6502 instruciton: its address, the operation it performs, its addressing mode
and its operand, if any.
*/
struct Instruction {

View File

@ -121,7 +121,7 @@ template <class T> class WrappedInt {
inline int as_int() const { return length_; }
/*!
Severs from @c this the effect of dividing by @c divisor @c this will end up with
Severs from @c this the effect of dividing by @c divisor; @c this will end up with
the value of @c this modulo @c divisor and @c divided by @c divisor is returned.
*/
inline T divide(const T &divisor) {
@ -147,7 +147,7 @@ template <class T> class WrappedInt {
int length_;
};
/// Describes an integer number of whole cycles pairs of clock signal transitions.
/// Describes an integer number of whole cycles: pairs of clock signal transitions.
class Cycles: public WrappedInt<Cycles> {
public:
inline Cycles(int l) : WrappedInt<Cycles>(l) {}
@ -155,7 +155,7 @@ class Cycles: public WrappedInt<Cycles> {
inline Cycles(const Cycles &cycles) : WrappedInt<Cycles>(cycles.length_) {}
};
/// Describes an integer number of half cycles single clock signal transitions.
/// Describes an integer number of half cycles: single clock signal transitions.
class HalfCycles: public WrappedInt<HalfCycles> {
public:
inline HalfCycles(int l) : WrappedInt<HalfCycles>(l) {}
@ -184,7 +184,7 @@ class HalfCycles: public WrappedInt<HalfCycles> {
}
/*!
Severs from @c this the effect of dividing by @c divisor @c this will end up with
Severs from @c this the effect of dividing by @c divisor; @c this will end up with
the value of @c this modulo @c divisor and @c divided by @c divisor is returned.
*/
inline Cycles divide_cycles(const Cycles &divisor) {

View File

@ -10,7 +10,7 @@
#define Sleeper_hpp
/*!
A sleeper is any component that sometimes requires a clock but at other times is 'asleep' i.e. is not doing
A sleeper is any component that sometimes requires a clock but at other times is 'asleep', i.e. is not doing
any clock-derived work, so needn't receive a clock. A disk controller is an archetypal example.
A sleeper will signal sleeps and wakes to an observer.

View File

@ -522,7 +522,7 @@ void WD1770::posit_event(int new_event_type) {
type2_write_loop:
/*
This deviates from the data sheet slightly since that would prima facie request one more byte
of data than is actually written the last time around the loop it has transferred from the
of data than is actually written; the last time around the loop it has transferred from the
data register to the data shift register, set data request, written the byte, checked that data
request has been satified, then finally considers whether all bytes are done. Based on both
natural expectations and the way that emulated machines responded, I believe that to be a

View File

@ -35,7 +35,7 @@ class BusHandler {
void perform_bus_cycle_phase1(const BusState &) {}
/*!
Performs the second phase of a 6845 bus cycle. Some bus state including sync is updated
Performs the second phase of a 6845 bus cycle. Some bus state, including sync, is updated
directly after phase 1 and hence is visible to an observer during phase 2. Handlers may therefore
implement @c perform_bus_cycle_phase2 to be notified of the availability of that state without
having to wait until the next cycle has begun.

View File

@ -434,7 +434,7 @@ void i8272::posit_event(int event_type) {
ClearControlMark();
if(event_type == static_cast<int>(Event::Token)) {
if(get_latest_token().type != Token::Data && get_latest_token().type != Token::DeletedData) {
// Something other than a data mark came next impliedly an ID or index mark.
// Something other than a data mark came next, impliedly an ID or index mark.
SetMissingAddressMark();
SetMissingDataAddressMark();
goto abort; // TODO: or read_next_data?
@ -828,7 +828,7 @@ void i8272::posit_event(int event_type) {
goto post_result;
// Posts whatever is in result_stack_ as a result phase. Be aware that it is a stack the
// Posts whatever is in result_stack_ as a result phase. Be aware that it is a stack, so the
// last thing in it will be returned first.
post_result:
printf("Result to %02x, main %02x: ", command_[0] & 0x1f, main_status_);

View File

@ -56,7 +56,7 @@ class TMS9918: public TMS9918Base {
/*!
Runs the VCP for the number of cycles indicate; it is an implicit assumption of the code
that the input clock rate is 3579545 Hz the NTSC colour clock rate.
that the input clock rate is 3579545 Hz, the NTSC colour clock rate.
*/
void run_for(const HalfCycles cycles);

View File

@ -103,7 +103,7 @@ void AY38910::get_samples(std::size_t number_of_samples, int16_t *target) {
noise_shift_register_ >>= 1;
}
// ... and the envelope generator. Table based for pattern lookup, with a 'refill' step a way of
// ... and the envelope generator. Table based for pattern lookup, with a 'refill' step: a way of
// implementing non-repeating patterns by locking them to table position 0x1f.
if(envelope_divider_) envelope_divider_--;
else {
@ -130,7 +130,7 @@ void AY38910::evaluate_output_volume() {
// The output level for a channel is:
// 1 if neither tone nor noise is enabled;
// 0 if either tone or noise is enabled and its value is low.
// The tone/noise enable bits use inverse logic — 0 = on, 1 = off — permitting the OR logic below.
// The tone/noise enable bits use inverse logic; 0 = on, 1 = off; permitting the OR logic below.
#define tone_level(c, tone_bit) (tone_outputs_[c] | (output_registers_[7] >> tone_bit))
#define noise_level(c, noise_bit) (noise_output_ | (output_registers_[7] >> noise_bit))

View File

@ -34,7 +34,7 @@ void BestEffortUpdater::update() {
if(has_previous_time_point_) {
// If the duration is valid, convert it to integer cycles, maintaining a rolling error and call the delegate
// if there is one. Proceed only if the number of cycles is positive, and cap it to the per-second maximum
// if there is one. Proceed only if the number of cycles is positive, and cap it to the per-second maximum as
// it's possible this is an adjustable clock so be ready to swallow unexpected adjustments.
const int64_t integer_duration = std::chrono::duration_cast<std::chrono::nanoseconds>(elapsed).count();
if(integer_duration > 0) {

View File

@ -277,7 +277,7 @@ class CRTCBusHandler {
}
/*!
The CRTC entry function for phase 2 of each bus cycle in which the next sync line state becomes
The CRTC entry function for phase 2 of each bus cycle, in which the next sync line state becomes
visible early. The CPC uses changes in sync to clock the interrupt timer.
*/
void perform_bus_cycle_phase2(const Motorola::CRTC::BusState &state) {
@ -818,7 +818,7 @@ class ConcreteMachine:
*cycle.value &= fdc_.get_register(address & 1);
}
// Check for a CRTC access; the below is not a typo the CRTC can be selected
// Check for a CRTC access; the below is not a typo, the CRTC can be selected
// for writing via an input, and will sample whatever happens to be available
if(!(address & 0x4000)) {
switch((address >> 8) & 3) {

View File

@ -172,11 +172,11 @@ class ConcreteMachine:
/*
There are five distinct zones of memory on an Apple II:
0000 0200 : the zero and stack pages, which can be paged independently on a IIe
0200 c000 : the main block of RAM, which can be paged on a IIe
c000 d000 : the IO area, including card ROMs
d000 e000 : the low ROM area, which can contain indepdently-paged RAM with a language card
e000 : the rest of ROM, also potentially replaced with RAM by a language card
0000 to 0200 : the zero and stack pages, which can be paged independently on a IIe
0200 to c000 : the main block of RAM, which can be paged on a IIe
c000 to d000 : the IO area, including card ROMs
d000 to e000 : the low ROM area, which can contain indepdently-paged RAM with a language card
e000 onward : the rest of ROM, also potentially replaced with RAM by a language card
*/
MemoryBlock *block = nullptr;
if(address < 0x200) block = &memory_blocks_[0];
@ -267,7 +267,7 @@ class ConcreteMachine:
if(address >= 0xc100 && address < 0xc800) {
/*
Decode the area conventionally used by cards for ROMs:
0xCn00 0xCnff: card n.
0xCn00 to 0xCnff: card n.
*/
const size_t card_number = (address - 0xc100) >> 8;
if(cards_[card_number]) {
@ -277,7 +277,7 @@ class ConcreteMachine:
} else if(address >= 0xc090 && address < 0xc100) {
/*
Decode the area conventionally used by cards for registers:
C0n0--C0nF: card n - 8.
C0n0 to C0nF: card n - 8.
*/
const size_t card_number = (address - 0xc090) >> 4;
if(cards_[card_number]) {

View File

@ -63,8 +63,8 @@ template<class T> class Cartridge:
uint8_t returnValue = 0xff;
int cycles_run_for = 3;
// this occurs as a feedback loop the 2600 requests ready, then performs the cycles_run_for
// leap to the end of ready only once ready is signalled because on a 6502 ready doesn't take
// this occurs as a feedback loop: the 2600 requests ready, then performs the cycles_run_for
// leap to the end of ready only once ready is signalled because on a 6502 ready doesn't take
// effect until the next read; therefore it isn't safe to assume that signalling ready immediately
// skips to the end of the line.
if(operation == CPU::MOS6502::BusOperation::Ready)
@ -129,7 +129,7 @@ template<class T> class Cartridge:
tia_->reset_horizontal_counter();
horizontal_counter_resets_++;
break;
// TODO: audio will now be out of synchronisation — fix
// TODO: audio will now be out of synchronisation. Fix.
case 0x04:
case 0x05: update_video(); tia_->set_player_number_and_size(decodedAddress - 0x04, *value); break;

View File

@ -14,7 +14,7 @@
namespace Atari2600 {
// This should be a divisor of 38; audio counters are updated every 38 cycles though lesser dividers
// This should be a divisor of 38; audio counters are updated every 38 cycles, though lesser dividers
// will give greater resolution to changes in audio state. 1, 2 and 19 are the only divisors of 38.
const int CPUTicksPerAudioTick = 2;

View File

@ -23,7 +23,7 @@ namespace Commodore {
namespace C1540 {
/*!
An implementation of the serial-port VIA in a Commodore 1540 the VIA that facilitates all
An implementation of the serial-port VIA in a Commodore 1540: the VIA that facilitates all
IEC bus communications.
It is wired up such that Port B contains:
@ -35,7 +35,7 @@ namespace C1540 {
Bits 5/6: device select input; the 1540 will act as device 8 + [value of bits]
Bit 7: attention input; 1 if the line is low, 0 if it is high
The attention input is also connected to CA1, similarly inverted the CA1 wire will be high when the bus is low and vice versa.
The attention input is also connected to CA1, similarly invertedl; the CA1 wire will be high when the bus is low and vice versa.
*/
class SerialPortVIA: public MOS::MOS6522::IRQDelegatePortHandler {
public:
@ -60,7 +60,7 @@ class SerialPortVIA: public MOS::MOS6522::IRQDelegatePortHandler {
};
/*!
An implementation of the drive VIA in a Commodore 1540 the VIA that is used to interface with the disk.
An implementation of the drive VIA in a Commodore 1540: the VIA that is used to interface with the disk.
It is wired up such that Port B contains:
Bits 0/1: head step direction

View File

@ -75,8 +75,8 @@ enum ROM {
};
/*!
Models the user-port VIA, which is the Vic's connection point for controlling its tape recorder
sensing the presence or absence of a tape and controlling the tape motor and reading the current
Models the user-port VIA, which is the Vic's connection point for controlling its tape recorder;
sensing the presence or absence of a tape and controlling the tape motor; and reading the current
state from its serial port. Most of the joystick input is also exposed here.
*/
class UserPortVIA: public MOS::MOS6522::IRQDelegatePortHandler {

View File

@ -48,7 +48,7 @@ class Machine {
/*!
Sets the contents of @c slot to @c data. If @c is_writeable is @c true then writing to the slot
is enabled it acts as if it were sideways RAM. Otherwise the slot is modelled as containing ROM.
is enabled: it acts as if it were sideways RAM. Otherwise the slot is modelled as containing ROM.
*/
virtual void set_rom(ROMSlot slot, const std::vector<uint8_t> &data, bool is_writeable) = 0;
};

View File

@ -58,8 +58,8 @@ class AYPortHandler: public GI::AY38910::PortHandler {
void set_port_output(bool port_b, uint8_t value) {
if(port_b) {
// Bits 03: touchpad handshaking (?)
// Bit 45: monostable timer pulses
// Bits 0-3: touchpad handshaking (?)
// Bit 4-5: monostable timer pulses
// Bit 6: joystick select
// Bit 7: code LED, if any
}

View File

@ -422,7 +422,7 @@ template <Analyser::Static::Oric::Target::DiskInterface disk_interface> class Co
}
}
// $02df is where the Oric ROMs — all of them, including BASIC 1.0, 1.1 and the Pravetz — have the
// $02df is where the Oric ROMs; all of them, including BASIC 1.0, 1.1 and the Pravetz; have the
// IRQ routine store an incoming keystroke in order for reading to occur later. By capturing the
// read rather than the decode and write: (i) nothing is lost while BASIC is parsing; and
// (ii) keyboard input is much more rapid.

View File

@ -141,7 +141,7 @@ static void audioOutputCallback(
// Since the audio callback receives a void * pointer that identifies the class it should branch into,
// it's therefore unsafe to pass 'self'. Instead I pass a CSWeakAudioQueuePointer which points to the actual
// queue. The lifetime of that class is the lifetime of this instance plus 1 second, as effected by the
// artificial dispatch_after below it serves only to keep pointerSaviour alive for an extra second.
// artificial dispatch_after below; it serves only to keep pointerSaviour alive for an extra second.
//
// Why a second? That's definitely quite a lot longer than any amount of audio that may be queued. So
// probably safe. As and where Apple's audio queue works properly, CSAudioQueueDeallocLock should provide

View File

@ -31,7 +31,7 @@
@end
struct LockProtectedDelegate {
// Contractual promise is: machine — the pointer **and** the object ** — may be accessed only
// Contractual promise is: machine, the pointer **and** the object **, may be accessed only
// in sections protected by the machineAccessLock;
NSLock *machineAccessLock;
__unsafe_unretained CSMachine *machine;

View File

@ -216,7 +216,7 @@ class CRT {
/*! Sets the current phase of the colour subcarrier used by output_default_colour_burst.
@param phase The normalised instantaneous phase 0.0f is the start of a colour cycle, 1.0f is the
@param phase The normalised instantaneous phase. 0.0f is the start of a colour cycle, 1.0f is the
end of a colour cycle, 0.25f is a quarter of the way through a colour cycle, etc.
*/
void set_immediate_default_phase(float phase);
@ -267,7 +267,7 @@ class CRT {
/*! Tells the CRT that the next call to draw_frame will occur on a different OpenGL context than
the previous.
@param should_delete_resources If @c true then all resources textures, vertex arrays, etc
@param should_delete_resources If @c true then all resources, textures, vertex arrays, etc,
currently held by the CRT will be deleted now via calls to glDeleteTexture and equivalent. If
@c false then the references are simply marked as invalid.
*/
@ -313,7 +313,7 @@ class CRT {
DiscreteFourSamplesPerCycle
};
/*! Provides information about the type of output the composite sampling function provides discrete or continuous.
/*! Provides information about the type of output the composite sampling function provides, discrete or continuous.
This is necessary because the CRT implementation samples discretely and therefore can use fewer intermediate
samples if it can exactly duplicate the sampling rate and placement of the composite sampling function.

View File

@ -15,7 +15,7 @@
namespace Outputs {
namespace CRT {
// Output vertices are those used to copy from an input buffer whether it describes data that maps directly to RGB
// Output vertices are those used to copy from an input buffer, whether it describes data that maps directly to RGB
// or is one of the intermediate buffers that we've used to convert from composite towards RGB.
const GLsizei OutputVertexOffsetOfHorizontal = 0;
const GLsizei OutputVertexOffsetOfVertical = 4;

View File

@ -157,7 +157,7 @@ void OpenGLOutputBuilder::draw_frame(unsigned int output_width, unsigned int out
{nullptr, nullptr}
};
// for s-video, there are two steps it's like composite but skips separation
// for s-video, there are two steps: it's like composite but skips separation
const RenderStage svideo_render_stages[] = {
{svideo_input_shader_program_.get(), separated_texture_.get(), {0.0, 0.5, 0.5}},
{composite_chrominance_filter_shader_program_.get(), filtered_texture_.get(), {0.0, 0.0, 0.0}},

View File

@ -125,7 +125,7 @@ public:
void set_colour_conversion_matrices(float *fromRGB, float *toRGB);
/*!
Sets the proportions of the input and output areas that should be considered the whole width 1.0 means use all available
Sets the proportions of the input and output areas that should be considered the whole width: 1.0 means use all available
space, 0.5 means use half, etc.
*/
void set_width_scalers(float input_scaler, float output_scaler);

View File

@ -83,7 +83,7 @@ public:
void set_gamma_ratio(float ratio);
/*!
Sets the proportion of the input area that should be considered the whole width 1.0 means use all available
Sets the proportion of the input area that should be considered the whole width: 1.0 means use all available
space, 0.5 means use half, etc.
*/
void set_input_width_scaler(float input_scaler);

View File

@ -40,7 +40,7 @@ namespace CRT {
(iii) call retain_latest to add the most recently written write area to the flush queue.
The flush queue contains provisional data, that can sit in the CPU's memory space indefinitely. This facility
is provided because it is expected that a texture will be built alontside some other collection of data
is provided because it is expected that a texture will be built alontside some other collection of data;
that data in the flush queue is expected to become useful in coordination with something else but should
be retained at least until then.
@ -55,7 +55,7 @@ namespace CRT {
(i) call submit to move data to the GPU and free up its CPU-side resources.
The latest data is now on the GPU, regardless of where the data provider may be in its process only data
The latest data is now on the GPU, regardless of where the data provider may be in its process; only data
that has entered the submission queue is uploaded.
*/

View File

@ -80,7 +80,7 @@ class BusHandler {
Announces that the 6502 has performed the cycle defined by operation, address and value. On the 6502,
all bus cycles take one clock cycle so the amoutn of time advanced is implicit.
@param operation The type of bus cycle read, read opcode (i.e. read, with sync active),
@param operation The type of bus cycle: read, read opcode (i.e. read, with sync active),
write or ready.
@param address The value of the address bus during this bus cycle.
@param value If this is a cycle that puts a value onto the data bus, *value is that value. If this is

View File

@ -17,7 +17,7 @@ namespace Data {
namespace BitReverse {
/*!
Reverses the order of the bits in every byte of the vector
Reverses the order of the bits in every byte of the vector:
bit 7 exchanges with bit 0, bit 6 exchanges with bit 1, 5 with 2,
and 4 with 3.
*/

View File

@ -21,7 +21,7 @@ namespace Storage {
namespace Disk {
/*!
Provides the shell for emulating a disk controller something that is connected to a disk drive and uses a
Provides the shell for emulating a disk controller: something that is connected to a disk drive and uses a
phase locked loop ('PLL') to decode a bit stream from the surface of the disk.
Partly abstract; it is expected that subclasses will provide methods to deal with receiving a newly-recognised

View File

@ -120,8 +120,8 @@ class MFMController: public Controller {
void write_n_bytes(int quantity, uint8_t value);
/*!
Writes everything that should, per the spec, appear prior to the address contained
in an ID mark proper gaps and the ID mark and appropriate seeds the CRC generator.
Writes everything that should per the spec appear prior to the address contained
in an ID mark (i.e. proper gaps and the ID mark) and appropriate seeds the CRC generator.
*/
void write_id_joiner();

View File

@ -29,7 +29,7 @@ class Disk {
@returns the number of discrete positions that this disk uses to model its complete surface area.
This is not necessarily a track count. There is no implicit guarantee that every position will
return a distinct track, or e.g. if the media is holeless will return any track at all.
return a distinct track, or, e.g. if the media is holeless, will return any track at all.
*/
virtual HeadPosition get_maximum_head_position() = 0;

View File

@ -38,7 +38,7 @@ class DiskImage {
@returns the distance at which there stops being any further content.
This is not necessarily a track count. There is no implicit guarantee that every position will
return a distinct track, or e.g. if the media is holeless will return any track at all.
return a distinct track, or, e.g. if the media is holeless, will return any track at all.
*/
virtual HeadPosition get_maximum_head_position() = 0;

View File

@ -17,7 +17,7 @@ namespace Storage {
namespace Disk {
/*!
Provides a @c Disk containing an ADF disk image a decoded sector dump of an Acorn ADFS disk.
Provides a @c Disk containing an ADF disk image: a decoded sector dump of an Acorn ADFS disk.
*/
class AcornADF: public MFMSectorDump {
public:

View File

@ -18,7 +18,7 @@ namespace Storage {
namespace Disk {
/*!
Provides a @c DiskImage containing an Apple DSK disk image a representation of sector contents,
Provides a @c DiskImage containing an Apple DSK disk image: a representation of sector contents,
implicitly numbered and located.
*/
class AppleDSK: public DiskImage {

View File

@ -20,7 +20,7 @@ namespace Storage {
namespace Disk {
/*!
Provides a @c Disk containing an Amstrad CPC-type disk image some arrangement of sectors with status bits.
Provides a @c Disk containing an Amstrad CPC-type disk image: some arrangement of sectors with status bits.
*/
class CPCDSK: public DiskImage {
public:

View File

@ -19,7 +19,7 @@ using namespace Storage::Disk;
D64::D64(const std::string &file_name) :
file_(file_name) {
// in D64, this is it for validation without imposing potential false-negative tests check that
// in D64, this is it for validation without imposing potential false-negative tests: check that
// the file size appears to be correct. Stone-age stuff.
if(file_.stats().st_size != 174848 && file_.stats().st_size != 196608)
throw Error::InvalidFormat;

View File

@ -16,7 +16,7 @@ namespace Storage {
namespace Disk {
/*!
Provides a @c Disk containing a D64 disk image a decoded sector dump of a C1540-format disk.
Provides a @c Disk containing a D64 disk image: a decoded sector dump of a C1540-format disk.
*/
class D64: public DiskImage {
public:

View File

@ -139,7 +139,7 @@ std::shared_ptr<::Storage::Disk::Track> DMK::get_track_at_position(::Storage::Di
// Now at the IDAM, which will always be an FE regardless of FM/MFM encoding,
// presumably through misunderstanding of the designer? Write out a real IDAM
// for the current density, then the rest of the ID four bytes for the address
// for the current density, then the rest of the ID: four bytes for the address
// plus two for the CRC. Keep a copy of the header while we're here, so that the
// size of the sector is known momentarily.
std::size_t step_rate = (!is_double_density && !is_purely_single_density_) ? 2 : 1;

View File

@ -18,7 +18,7 @@ namespace Storage {
namespace Disk {
/*!
Provides a @c DiskImage containing a DMK disk image mostly a decoded byte stream, but with
Provides a @c DiskImage containing a DMK disk image: mostly a decoded byte stream, but with
a record of IDAM locations.
*/
class DMK: public DiskImage {

View File

@ -18,7 +18,7 @@ namespace Storage {
namespace Disk {
/*!
Provides a @c Disk containing a G64 disk image a raw but perfectly-clocked GCR stream.
Provides a @c Disk containing a G64 disk image: a raw but perfectly-clocked GCR stream.
*/
class G64: public DiskImage {
public:

View File

@ -18,7 +18,7 @@ namespace Storage {
namespace Disk {
/*!
Provides a @c DiskImage containing an HFE a bit stream representation of a floppy.
Provides a @c DiskImage containing an HFE: a bit stream representation of a floppy.
*/
class HFE: public DiskImage {
public:

View File

@ -18,7 +18,7 @@ namespace Storage {
namespace Disk {
/*!
Provides a @c Disk containing an Oric MFM-stype disk image a stream of the MFM data bits with clocks omitted.
Provides a @c Disk containing an Oric MFM-stype disk image: a stream of the MFM data bits with clocks omitted.
*/
class OricMFMDSK: public DiskImage {
public:

View File

@ -15,7 +15,7 @@ namespace Storage {
namespace Disk {
/*!
Provides a @c Disk containing a DSD or SSD disk image a decoded sector dump of an Acorn DFS disk.
Provides a @c Disk containing a DSD or SSD disk image: a decoded sector dump of an Acorn DFS disk.
*/
class SSD: public MFMSectorDump {
public:

View File

@ -18,7 +18,7 @@ namespace Storage {
namespace Disk {
/*!
Provides a @c DiskImage containing a WOZ a bit stream representation of a floppy.
Provides a @c DiskImage containing a WOZ: a bit stream representation of a floppy.
*/
class WOZ: public DiskImage {
public:

View File

@ -135,7 +135,7 @@ class Drive: public Sleeper, public TimedEventLoop {
bool has_disk_ = false;
// Contains the multiplier that converts between track-relative lengths
// to real-time lengths — so it's the reciprocal of rotation speed.
// to real-time lengths. So it's the reciprocal of rotation speed.
Time rotational_multiplier_;
// A count of time since the index hole was last seen. Which is used to

View File

@ -33,7 +33,7 @@ struct Sector {
};
Address address;
uint8_t size = 0; // Size is stored in ordinary MFM form the number of bytes included in this sector
uint8_t size = 0; // Size is stored in ordinary MFM form: the number of bytes included in this sector
// is 2^(7 + size), or 128 << size.
// Multiple samplings of the underlying data are accepted, to allow weak and fuzzy data to be communicated.

View File

@ -86,10 +86,10 @@ class Track {
};
/*!
Describes a detectable track event either a flux transition or the passing of the index hole,
Describes a detectable track event: either a flux transition or the passing of the index hole,
along with the length of time between the previous event and its occurance.
The sum of all lengths of time across an entire track should be 1 if an event is said to be
The sum of all lengths of time across an entire track should be 1; if an event is said to be
1/3 away then that means 1/3 of a rotation.
*/
struct Event {

View File

@ -23,7 +23,7 @@ namespace Disk {
This feature is offered for the benefit of various parts of the code that need to make
sense of a track **other than emulation**, as it renders a one-off image of the track,
which can be inaccurate. However there are many occasions where a single rendering is
desireable e.g. file formats that apply that constraint, or static analysis prior to
desireable, e.g. file formats that apply that constraint, or static analysis prior to
emulation launch, which works with broad strokes.
@param track The track to serialise.

View File

@ -39,7 +39,7 @@ class FileHolder final {
ReadWrite attempt to open this file for random access reading and writing. If that fails,
will attept to open in Read mode.
Read attempts to open this file for reading only.
Rewrite opens the file for rewriting none of the original content is preserved; whatever
Rewrite opens the file for rewriting; none of the original content is preserved; whatever
the caller outputs will replace the existing file.
@raises ErrorCantOpen if the file cannot be opened.
@ -113,7 +113,7 @@ class FileHolder final {
/*! Writes @c buffer one byte at a time in order, writing @c size bytes in total. */
std::size_t write(const uint8_t *buffer, std::size_t size);
/*! Moves @c bytes from the anchor indicated by @c whence SEEK_SET, SEEK_CUR or SEEK_END. */
/*! Moves @c bytes from the anchor indicated by @c whence: SEEK_SET, SEEK_CUR or SEEK_END. */
void seek(long offset, int whence);
/*! @returns The current cursor position within this file. */
@ -184,7 +184,7 @@ class FileHolder final {
bool check_signature(const char *signature, std::size_t length = 0);
/*!
Determines and returns the file extension everything from the final character
Determines and returns the file extension: everything from the final character
back to the first dot. The string is converted to lowercase before being returned.
*/
std::string extension();

View File

@ -35,7 +35,7 @@ struct Time {
}
/*!
Reduces this @c Time to its simplest form eliminates all common factors from @c length
Reduces this @c Time to its simplest form; eliminates all common factors from @c length
and @c clock_rate.
*/
void simplify() {

View File

@ -25,9 +25,9 @@ namespace Storage {
until a next event; @c process_next_event will be called when that event occurs, with progression
determined via @c run_for.
Due to the aggregation of total timing information between events e.g. if an event loop has
Due to the aggregation of total timing information between events, e.g. if an event loop has
a clock rate of 1000 ticks per second and a steady stream of events that occur 10,000 times a second,
bookkeeping is necessary to ensure that 10 events are triggered per tick subclasses should call
bookkeeping is necessary to ensure that 10 events are triggered per tick. Subclasses should call
@c reset_timer if there is a discontinuity in events.
Subclasses may also call @c jump_to_next_event to cause the next event to be communicated instantly.