19 return (__builtin_popcount(data) & 1) ? 0 : 1;
33 ge_log(
LOG_CYCLE,
" async: RC00: %d RC01: %d RC02: %d RC03: %d ALTO: %d\n",
40 RIUC(
ge), RES0(
ge), RES2(
ge), RES3(
ge));
113 if (
ge->
rVO >= size) {
130 "memory read: MEM CHECK parity error at %x\n",
164 if (
ge->
rVO >= size) {
183 ge_log(
LOG_STATES,
"memory write: mem[VO] = RO = mem[%x] = %x (parity %d)\n",
void(* on_pulse_cb)(struct ge *)
static uint16_t NO_knot(struct ge *ge)
Knot driven by P0, V1, V2, V4, L1, R1, V3 and L3.
static uint8_t NA_knot(struct ge *ge)
Knot driven by SO or SI.
void ge_log(ge_log_type type, const char *format,...)
Log message.
@ LOG_CYCLE
Cycle attribution debug.
static void on_TO70(struct ge *ge)
static void on_TO90(struct ge *ge)
static void on_TO89(struct ge *ge)
static void on_TO50(struct ge *ge)
static void on_TO20(struct ge *ge)
static void on_TI10(struct ge *ge)
static uint8_t odd_parity(uint8_t data)
Compute the odd-parity bit for an 8-bit data value.
static void on_TO10(struct ge *ge)
static void on_TO50_1(struct ge *ge)
static void on_TI06(struct ge *ge)
static void on_TO19(struct ge *ge)
static void on_TO11(struct ge *ge)
static void on_TI05(struct ge *ge)
static on_pulse_cb pulse_cb[END_OF_STATUS]
static void on_TO65(struct ge *ge)
static void on_TO40(struct ge *ge)
static void on_TO80(struct ge *ge)
static void on_TO60(struct ge *ge)
static void on_TO25(struct ge *ge)
static void on_TO30(struct ge *ge)
static void on_TO64(struct ge *ge)
void pulse(struct ge *ge)
static void on_TO00(struct ge *ge)
static void on_TO15(struct ge *ge)
uint16_t INCE
Do not error-correct external units input.
struct ge_counting_network::cmds cmds
enum ge_knot_no::@1 force_mode
The entire state of the emulated system, including registers, memory, peripherals and timings.
uint8_t ALTO
Stops internal cycles.
uint8_t ffFA
Special conditions register 2.
uint8_t future_state
Future state.
uint8_t inv_add
Invalid-address fault flag: set when rVO >= installed memory size.
uint8_t PODI
Slow delay line.
uint8_t mem_written[MEM_SIZE]
1 once a location has been written; prevents false MEM CHECK on cleared memory
enum ge_console_rotary register_selector
The current state of the console register rotary switch.
uint8_t RIA0
Synchronous CPU Cycle Request.
uint32_t mem_size
Installed memory size; 0 is treated as MEM_SIZE (full address space)
uint8_t RIA2
Synchronous Channel 2 Cycle Request.
uint8_t mem_check
Parity fault flag: set when a READ finds a parity mismatch on a previously-written location.
uint16_t rRO
Multipurpose 8+1 bit register.
struct ge_counting_network counting_network
struct ge_console_switches console_switches
The current state of the console switches.
uint8_t RIA3
Synchronous Channel 3 Cycle Request.
uint8_t ffFI
Special conditions register 1.
uint8_t RC00
Asynchronous CPU Cycle Request.
uint16_t rBO
Default operator.
uint8_t RC01
Asynchronous Channel 1 Cycle Request.
enum ge::@3 memory_command
uint8_t RECE
Selection Check Byte.
struct ge_knot_ni kNI
Knot driven by counting network, or by the UA to store the result of the operation.
uint8_t mem[MEM_SIZE]
The memory of the emulated system.
uint8_t RASI
Channel 1 in transfer.
uint8_t rSA
Future state configuration.
uint8_t RC02
Asynchronous Channel 2 Cycle Request.
uint8_t RESI
Synchronous Channel 1 Cycle Request.
uint16_t rVO
Default memory addresser.
uint8_t RC03
Asynchronous Channel 3 Cycle Request.
uint8_t ACIC
Recycle delay line.
uint8_t mem_parity[MEM_SIZE]
Stored odd-parity bit (1 bit per location) written alongside mem[].
uint8_t TO50_did_CI32_or_CI33
Workaround for pulse TO50.