|
GE-115 Emulator
An Emulator of the General Electrics GE-115 computer
|
#include <stdint.h>#include <stddef.h>#include <string.h>#include <unistd.h>#include "ge.h"#include "signals.h"#include "msl.h"#include "console_socket.h"#include "peripherical.h"#include "log.h"Go to the source code of this file.
Macros | |
| #define | MAX_PROGRAM_STORAGE_WORDS 129 |
| #define | X(name) |
Functions | |
| void | ge_init (struct ge *ge) |
| Initialize the emulator. | |
| static const char * | pont_name (enum ge_pont p) |
| void | ge_log_options (struct ge *ge) |
| Report the strapped configuration and every level it produces (LOG_DEBUG). | |
| void | ge_clear (struct ge *ge) |
| Emulate the press of the "clear" button in the console. | |
| void | ge_seed_segment_bases (struct ge *ge) |
| Seed the eight change/segment-base registers (mem[240+2N]) to identity bases N<<12. | |
| static uint8_t | ge_odd_parity (uint8_t data) |
| 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 ge->mem[] directly). | |
| 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 | ge_enter (struct ge *ge, uint16_t entry) |
Force the sequencer into the alpha (fetch) phase at entry. | |
| void | ge_load (struct ge *ge) |
| Emulate the press of the "load" button in the console. | |
| void | ge_load_1 (struct ge *ge) |
| Emulate the press of the "load 1" button in the console. | |
| void | ge_load_2 (struct ge *ge) |
| Emulate the press of the "load 2" button in the console. | |
| void | ge_start (struct ge *ge) |
| Emulate the press of the "start" button in the console. | |
| static void | ge_print_well_known_states (uint8_t state) |
| const char * | ge_clock_name (enum clock c) |
| The clock period name name. | |
| void | ge_print_registers_nonverbose (struct ge *ge) |
| void | ge_print_registers_verbose (struct ge *ge) |
| void | ge_clock_increment (struct ge *ge) |
| uint8_t | ge_clock_is_first (struct ge *ge) |
| uint8_t | ge_clock_is_last (struct ge *ge) |
| int | ge_run_pulse (struct ge *ge) |
| Run a single pulse (i.e. a single GE "mastri" clock periods) | |
| int | ge_run_cycle (struct ge *ge) |
| Run all GE "mastri" clock periods until next clock cycle. | |
| int | ge_deinit (struct ge *ge) |
| Deinitialize the emulator. | |
| void | connectors_first_clock (struct ge *ge) |
| void | fsn_last_clock (struct ge *ge) |
| Commit the future state. | |
| #define X | ( | name | ) |
| void fsn_last_clock | ( | struct ge * | ge | ) |
| void ge_clear | ( | struct ge * | ge | ) |
| const char * ge_clock_name | ( | enum clock | c | ) |
| void ge_enter | ( | struct ge * | ge, |
| uint16_t | entry | ||
| ) |
| void ge_load | ( | struct ge * | ge | ) |
| void ge_load_1 | ( | struct ge * | ge | ) |
| void ge_load_2 | ( | struct ge * | ge | ) |
| int ge_load_image | ( | struct ge * | ge, |
| const uint8_t * | image, | ||
| size_t | size, | ||
| uint16_t | origin | ||
| ) |
| void ge_log_options | ( | struct ge * | ge | ) |
| void ge_mem_store8 | ( | struct ge * | ge, |
| uint16_t | addr, | ||
| uint8_t | val | ||
| ) |
| int ge_run_cycle | ( | struct ge * | ge | ) |
| int ge_run_pulse | ( | struct ge * | ge | ) |
| void ge_seed_segment_bases | ( | struct ge * | ge | ) |
Seed the eight change/segment-base registers (mem[240+2N]) to identity bases N<<12.
Called by ge_init at POWER-ON only – these are core cells and core retains across CLEAR. Re-apply by hand if a test image overwrote the 0x00F0-0x00FF window and wants the identity bases back.
| void ge_start | ( | struct ge * | ge | ) |