AlarmDetails

Enum AlarmDetails 

Source
pub enum AlarmDetails {
    PSAL(u32, String),
    OCSAL(Instruction, String),
    QSAL(Instruction, BadMemOp, String),
    IOSAL {
        unit: Unsigned6Bit,
        operand: Option<Unsigned18Bit>,
        message: String,
    },
    MISAL {
        affected_unit: Unsigned6Bit,
    },
    ROUNDTUITAL {
        explanation: String,
        bug_report_url: &'static str,
    },
    DEFERLOOPAL {
        address: Unsigned18Bit,
    },
    BUGAL {
        activity: BugActivity,
        diagnostics: CurrentInstructionDiagnostics,
        message: String,
    },
}
Expand description

AlarmsDetails variant names are from User’s Handbook section 5-2.2; full names are taken from section 10-2.5.1 (vol 2) of the Technical Manual.

These acrronyms are upper case to follow the names in the TX-2 documentation.

§Unimplemented Alarms

Alarms we have not implemented:

MnemonicDescriptionReason why It’s not Included
SYAL1Sync System Alarm (see User Handbook page 5-21).Not yet implemented.
SYAL2Sync System Alarm (see User Handbook page 5-21).Not yet implemented.
MPALM memory Parity AlarmParity errors are not emulated.
NPALN memory Parity AlarmParity errors are not emulated.
FPALF memory Parity AlarmParity errors are not emulated.
XPALX memory Parity AlarmParity errors are not emulated.
TSALT memory selection alarmIndicates overcurrent in the T Memory. We have no hardware, so no overcurrent.
USALU memory selection alarmIndicates overcurrent in the T Memory. We have no hardware, so no overcurrent.
MousetrapStops the computer when there is a malfunction in the setting of the S-memory flip-flops (or perhaps other reasons chosen by the system maintainers).Not required.

L. G. Roberts memo of 1965-01-07 seems to indicate that another alarm, SPAL, was introduced later; see http://www.bitsavers.org/pdf/mit/tx-2/rcsri.org_library_tx2/TX2-Memos-General_196407.pdf.

Variants§

§

PSAL(u32, String)

P Memory Cycle Selection Alarm. This fires when we attempt to fetch an instruction (but not an operand) from an invalid address.

§

OCSAL(Instruction, String)

Operation Code Alarm. This fires when an instruction word containing an undefined operation code is read out of memory.

Section 10-2.5.3 of the TX-2 Technical Manual (Volume 2) states that this can also happen when an AOP instruction specifies an undefined op code in bits N₂.₆-N₂.₁. An AOP instruction is has opcode number 4, but with bits N₂.₈=0 and N₂.₇=1 (instead of 00 which is the case for an IOS instruction). So far however, we have not found any further information about the interpretation of bits N₂.₆-N₂.₁ for AOP.

§

QSAL(Instruction, BadMemOp, String)

Q Memory Cycle Selecttion Alarm. Q register (i.e. data fetch address) is set to an invalid address.

§

IOSAL

In-Out Selection Alarm. I/O Alarm in IOS instruction; device broken/maintenance/nonexistent.

Fields

§unit: Unsigned6Bit

The affected unit (as opposed to the sequence number currently executing).

§operand: Option<Unsigned18Bit>
§message: String
§

MISAL

In-Out Miss Indication Alarm. Fires when some I/O unit has missed a data item. This generally indicates that the program is too slow for an I/O device. For example because it uses too many hold bits.

Fields

§affected_unit: Unsigned6Bit
§

ROUNDTUITAL

Indicates that something is not implemented in the emulator. This alarm didn’t exist in the real TX-2.

Fields

§explanation: String
§bug_report_url: &'static str
§

DEFERLOOPAL

Loop in deferred addressing (detection of this is not a feature of the TX-2, this occurs only in the emulator).

Fields

§address: Unsigned18Bit

address is some address within the loop.

§

BUGAL

There is a bug in the simulator.

Fields

§activity: BugActivity

What were we doing?

§diagnostics: CurrentInstructionDiagnostics

What instruction was executing?

§message: String

What went wrong?

Implementations§

Trait Implementations§

Source§

impl Clone for AlarmDetails

Source§

fn clone(&self) -> AlarmDetails

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for AlarmDetails

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for AlarmDetails

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<Src, Scheme> ApproxFrom<Src, Scheme> for Src
where Scheme: ApproxScheme,

§

type Err = NoError

The error type produced by a failed conversion.
§

fn approx_from(src: Src) -> Result<Src, <Src as ApproxFrom<Src, Scheme>>::Err>

Convert the given value into an approximately equivalent representation.
§

impl<Dst, Src, Scheme> ApproxInto<Dst, Scheme> for Src
where Dst: ApproxFrom<Src, Scheme>, Scheme: ApproxScheme,

§

type Err = <Dst as ApproxFrom<Src, Scheme>>::Err

The error type produced by a failed conversion.
§

fn approx_into(self) -> Result<Dst, <Src as ApproxInto<Dst, Scheme>>::Err>

Convert the subject into an approximately equivalent representation.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
§

impl<T, Dst> ConvAsUtil<Dst> for T

§

fn approx(self) -> Result<Dst, Self::Err>
where Self: Sized + ApproxInto<Dst>,

Approximate the subject with the default scheme.
§

fn approx_by<Scheme>(self) -> Result<Dst, Self::Err>
where Self: Sized + ApproxInto<Dst, Scheme>, Scheme: ApproxScheme,

Approximate the subject with a specific scheme.
§

impl<T> ConvUtil for T

§

fn approx_as<Dst>(self) -> Result<Dst, Self::Err>
where Self: Sized + ApproxInto<Dst>,

Approximate the subject to a given type with the default scheme.
§

fn approx_as_by<Dst, Scheme>(self) -> Result<Dst, Self::Err>
where Self: Sized + ApproxInto<Dst, Scheme>, Scheme: ApproxScheme,

Approximate the subject to a given type with a specific scheme.
§

fn into_as<Dst>(self) -> Dst
where Self: Sized + Into<Dst>,

Convert the subject to a given type.
§

fn try_as<Dst>(self) -> Result<Dst, Self::Err>
where Self: Sized + TryInto<Dst>,

Attempt to convert the subject to a given type.
§

fn value_as<Dst>(self) -> Result<Dst, Self::Err>
where Self: Sized + ValueInto<Dst>,

Attempt a value conversion of the subject to a given type.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
§

impl<Src> TryFrom<Src> for Src

§

type Err = NoError

The error type produced by a failed conversion.
§

fn try_from(src: Src) -> Result<Src, <Src as TryFrom<Src>>::Err>

Convert the given value into the subject type.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
§

impl<Src, Dst> TryInto<Dst> for Src
where Dst: TryFrom<Src>,

§

type Err = <Dst as TryFrom<Src>>::Err

The error type produced by a failed conversion.
§

fn try_into(self) -> Result<Dst, <Src as TryInto<Dst>>::Err>

Convert the subject into the destination type.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<Src> ValueFrom<Src> for Src

§

type Err = NoError

The error type produced by a failed conversion.
§

fn value_from(src: Src) -> Result<Src, <Src as ValueFrom<Src>>::Err>

Convert the given value into an exactly equivalent representation.
§

impl<Src, Dst> ValueInto<Dst> for Src
where Dst: ValueFrom<Src>,

§

type Err = <Dst as ValueFrom<Src>>::Err

The error type produced by a failed conversion.
§

fn value_into(self) -> Result<Dst, <Src as ValueInto<Dst>>::Err>

Convert the subject into an exactly equivalent representation.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<T> ErasedDestructor for T
where T: 'static,