11#define CLOCK_PERIOD 14000
14#define ENUMERATE_CLOCKS \
39 #define X(name) name ,
int ge_deinit(struct ge *ge)
Deinitialize the emulator.
void ge_seed_segment_bases(struct ge *ge)
Seed the eight change/segment-base registers (mem[240+2N]) to identity bases N<<12.
void ge_load_1(struct ge *ge)
Emulate the press of the "load 1" button in the console.
void ge_clear(struct ge *ge)
Emulate the press of the "clear" button in the console.
int ge_run(struct ge *ge)
Run the emulator.
int ge_run_cycle(struct ge *ge)
Run all GE "mastri" clock periods until next clock cycle.
static uint8_t ge_halted(const struct ge *ge)
Is the CPU stopped?
ge_pont
Backplane option connectors and the maintenance LAMPS switch.
const char * ge_clock_name(enum clock c)
The clock period name name.
void ge_mem_store8(struct ge *ge, uint16_t addr, uint8_t val)
Store a byte with generated odd parity + mark-written (for the hybrid ALU/SS write paths that write g...
void ge_load_2(struct ge *ge)
Emulate the press of the "load 2" button in the console.
void(* on_pulse_cb)(struct ge *)
void ge_enter(struct ge *ge, uint16_t entry)
Force the sequencer into the alpha (fetch) phase at entry.
void ge_init(struct ge *ge)
Initialize the emulator.
int ge_run_pulse(struct ge *ge)
Run a single pulse (i.e. a single GE "mastri" clock periods)
void fsn_last_clock(struct ge *ge)
Commit the future state.
int ge_register_peri(struct ge *ge, struct ge_peri *p)
void ge_print_registers_verbose(struct ge *ge)
void pulse(struct ge *ge)
void ge_load(struct ge *ge)
Emulate the press of the "load" button in the console.
void ge_log_options(struct ge *ge)
Report the strapped configuration and every level it produces (LOG_DEBUG).
int ge_load_image(struct ge *ge, const uint8_t *image, size_t size, uint16_t origin)
Write a flat image into core at origin, priming the parity store.
void connectors_first_clock(struct ge *ge)
void ge_start(struct ge *ge)
Emulate the press of the "start" button in the console.
Integrated printer / console typewriter (channel 2) — pragmatic model.
enum ge_knot_no::@1 force_mode
enum ge_pont E03
E03: machine version, paired with F04 (TAB.1) – FEL06 / FEL16.
enum ge_pont F03
F03: which connectors may raise an interruption (TAB.2).
enum ge_pont E04
E04: which two connectors are enabled for the initial LOAD (TAB.3).
uint8_t S42_diag
S42 "LAMPS" on the maintenance panel, in position DIAG.
enum ge_pont E05
E05 / F05: memory capacity (cp06 ch.001, "SELEZIONE CAPACITA MEMORIA") – 8K through 32K.
enum ge_pont F04
F04: machine version straps – cycle period and performance (TAB.1).
int(* on_pulse)(struct ge *, void *)
int(* init)(struct ge *, void *)
int(* deinit)(struct ge *, void *)
int(* on_clock)(struct ge *, void *)
The entire state of the emulated system, including registers, memory, peripherals and timings.
uint8_t ALAM
Operator Call.
uint8_t RET2
Channel-2 cycle-assignment memory.
uint8_t INTE
Interruption present.
uint16_t instr_pc
Instruction-start PC (display aid, not a real register).
uint8_t ALOI
Load connector selection.
void * std_core
Shared core for Standard-GE-100 controllers on connectors 3/4 (disk/tape).
uint8_t AINI
Program Loading.
struct ge_integrated_reader integrated_reader
The I/O interface for the integrated reader (RI)
uint8_t JS2
Console jump condition 2.
struct ge_connector ST4
The I/O interface for the ST4 connector.
uint8_t ALTO
Stops internal cycles.
uint8_t ffFA
Special conditions register 2.
uint16_t rPO
Program addresser.
uint8_t PIC1
Selection Channel 1.
uint8_t lamps_test
LAMPS CHECK held (CPU[4] §3.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 inject_chan1_status
Channel-1 peripheral status override for error injection.
uint8_t RIA2
Synchronous Channel 2 Cycle Request.
uint16_t rV1
Addresser for the first operand.
uint8_t mem_check
Parity fault flag: set when a READ finds a parity mismatch on a previously-written location.
uint8_t rSO
Main sequencer.
uint8_t mem_check_blank
Read never-written core as a parity error (default 0).
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.
struct ge_connector ST3
The I/O interface for the ST3 connector.
uint8_t RIA3
Synchronous Channel 3 Cycle Request.
uint8_t PUC3
Channel 3 in transfer.
uint8_t rL2
Auxiliary register.
struct pulse_event * on_pulse[END_OF_STATUS]
uint8_t PUC2
Channel 2 in transfer.
uint8_t ffFI
Special conditions register 1.
uint8_t RC00
Asynchronous CPU Cycle Request.
uint8_t ASIN
STEP-BY-STEP, the OPERATOR panel switch (signal ASIN).
uint8_t rRI
Photoprint register 8-bit register used to store the photodisc codes.
uint16_t rBO
Default operator.
uint8_t PB06
Unconditionally stores L106.
uint8_t RC01
Asynchronous Channel 1 Cycle Request.
enum ge::@3 memory_command
uint8_t RECE
Selection Check Byte.
struct ge_ua_controls ua_controls
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 AVER
Jump Condition Verified.
struct ge_channel channel2
Integrated channel 2 (CAN2) line bundle — shared by the integrated reader (input),...
uint8_t RAVI
VICU Support.
uint8_t RACI
Rejected Command.
uint16_t rV4
Addresser for external instructions using channel 2.
uint8_t RASI
Channel 1 in transfer.
uint16_t rL1
Length of the operand.
uint8_t rSA
Future state configuration.
uint16_t rV2
Addresser for the second operand.
uint8_t RC02
Asynchronous Channel 2 Cycle Request.
uint8_t ADIR
Disable Step By Step.
uint8_t RESI
Synchronous Channel 1 Cycle Request.
struct ge_options options
Backplane straps and maintenance-panel options (cp06 ch.002).
uint8_t RIG1
End from controller 1.
uint8_t rSI
Peripheral unit sequencer.
uint16_t rVO
Default memory addresser.
uint8_t RC03
Asynchronous Channel 3 Cycle Request.
uint8_t JE
JE/AVER jump instruction exectuted.
uint8_t step_by_step
Step by step execution.
uint8_t ACIC
Recycle delay line.
uint8_t PB26
Stores L106 if channel 2 is selected.
uint16_t rL3
Length of operands involving channel 3.
uint8_t rUA
UA (arithmetic unit) output latch.
uint8_t mem_parity[MEM_SIZE]
Stored odd-parity bit (1 bit per location) written alongside mem[].
uint8_t PB07
Unconditionally stores L106.
uint16_t rV3
Addresser for external instructions using channel 3.
uint8_t TO50_did_CI32_or_CI33
Workaround for pulse TO50.
uint8_t rFO
Current function code.
uint16_t cr_cache[8]
Change/segment-register cache (kept in sync by the register instructions via cr_wr16 and by ge_seed_s...
struct ge::ge_integrated_printer integrated_printer
uint8_t JS1
Console jump condition 1.
struct pulse_event * next