GE-115 Emulator
An Emulator of the General Electrics GE-115 computer
Data Structures | Macros | Typedefs | Enumerations | Functions
ge.h File Reference
#include <stdint.h>
#include "opcodes.h"
#include "console.h"
#include "reader.h"

Go to the source code of this file.

Data Structures

struct  ge_counting_network
 
struct  ge_counting_network::cmds
 
struct  ge_knot_no
 
struct  ge_knot_ni
 
struct  ge
 The entire state of the emulated system, including registers, memory, peripherals and timings. More...
 
struct  pulse_event
 
struct  ge_peri
 

Macros

#define CLOCK_PERIOD   14000 /* in usec, interval between pulse lines */
 
#define MEM_SIZE   65536
 
#define ENUMERATE_CLOCKS
 
#define X(name)   name ,
 

Typedefs

typedef void(* on_pulse_cb) (struct ge *)
 

Enumerations

enum  clock { ENUMERATE_CLOCKS }
 
enum  knot_ni_source {
  NS_CN1 , NS_CN2 , NS_CN3 , NS_CN4 ,
  NS_RO1 , NS_RO2 , NS_UA2 , NS_UA1
}
 

Functions

void ge_init (struct ge *ge)
 Initialize the emulator. More...
 
int ge_deinit (struct ge *ge)
 Deinitialize the emulator. More...
 
int ge_load_program (struct ge *ge, uint8_t *program, uint8_t size)
 Copy a program at the start of memory. More...
 
int ge_run (struct ge *ge)
 Run the emulator. More...
 
int ge_run_pulse (struct ge *ge)
 Run a single pulse (i.e. a single GE "mastri" clock periods) More...
 
int ge_run_cycle (struct ge *ge)
 Run all GE "mastri" clock periods until next clock cycle. More...
 
void ge_clear (struct ge *ge)
 Emulate the press of the "clear" button in the console. More...
 
void ge_load (struct ge *ge)
 Emulate the press of the "load" button in the console. More...
 
void ge_load_1 (struct ge *ge)
 Emulate the press of the "load 1" button in the console. More...
 
void ge_load_2 (struct ge *ge)
 Emulate the press of the "load 2" button in the console. More...
 
void ge_start (struct ge *ge)
 Emulate the press of the "start" button in the console. More...
 
void pulse (struct ge *ge)
 
int ge_register_peri (struct ge *ge, struct ge_peri *p)
 
void fsn_last_clock (struct ge *ge)
 Commit the future state. More...
 
void connectors_first_clock (struct ge *ge)
 
const char * ge_clock_name (enum clock c)
 The clock period name name. More...
 
void ge_print_registers_verbose (struct ge *ge)
 

Macro Definition Documentation

◆ CLOCK_PERIOD

#define CLOCK_PERIOD   14000 /* in usec, interval between pulse lines */

Definition at line 9 of file ge.h.

◆ ENUMERATE_CLOCKS

#define ENUMERATE_CLOCKS
Value:
X(TO00) \
X(TO10) \
X(TO11) \
X(TO15) \
X(TO19) \
X(TO20) \
X(TO25) \
X(TO30) \
X(TO40) \
X(TO50) \
X(TO50_1) \
X(TO60) \
X(TO64) \
X(TO65) \
X(TO70) \
X(TO80) \
X(TO89) \
X(TO90) \
X(TI05) \
X(TI06) \
X(TI10) \
X(END_OF_STATUS)
#define X(name)
Definition: ge.h:37

Definition at line 12 of file ge.h.

◆ MEM_SIZE

#define MEM_SIZE   65536

Definition at line 10 of file ge.h.

◆ X

#define X (   name)    name ,

Definition at line 37 of file ge.h.

Typedef Documentation

◆ on_pulse_cb

typedef void(* on_pulse_cb) (struct ge *)

Definition at line 596 of file ge.h.

Enumeration Type Documentation

◆ clock

enum clock
Enumerator
ENUMERATE_CLOCKS 

Definition at line 36 of file ge.h.

◆ knot_ni_source

Enumerator
NS_CN1 
NS_CN2 
NS_CN3 
NS_CN4 
NS_RO1 
NS_RO2 
NS_UA2 
NS_UA1 

Definition at line 72 of file ge.h.

Function Documentation

◆ connectors_first_clock()

void connectors_first_clock ( struct ge ge)

Definition at line 240 of file ge.c.

◆ fsn_last_clock()

void fsn_last_clock ( struct ge ge)

Commit the future state.

Transfers the results of the future state network in the various selectors. For now it's an ad hoc behaviour, not described in detail in the currently available docs.

Definition at line 248 of file ge.c.

◆ ge_clear()

void ge_clear ( struct ge ge)

Emulate the press of the "clear" button in the console.

Definition at line 25 of file ge.c.

◆ ge_clock_name()

const char* ge_clock_name ( enum clock  c)

The clock period name name.

Returns the string destribing the clock period

Definition at line 120 of file ge.c.

◆ ge_deinit()

int ge_deinit ( struct ge ge)

Deinitialize the emulator.

Definition at line 234 of file ge.c.

◆ ge_init()

void ge_init ( struct ge ge)

Initialize the emulator.

Definition at line 14 of file ge.c.

◆ ge_load()

void ge_load ( struct ge ge)

Emulate the press of the "load" button in the console.

Definition at line 62 of file ge.c.

◆ ge_load_1()

void ge_load_1 ( struct ge ge)

Emulate the press of the "load 1" button in the console.

Definition at line 72 of file ge.c.

◆ ge_load_2()

void ge_load_2 ( struct ge ge)

Emulate the press of the "load 2" button in the console.

Definition at line 89 of file ge.c.

◆ ge_load_program()

int ge_load_program ( struct ge ge,
uint8_t *  program,
uint8_t  size 
)

Copy a program at the start of memory.

Definition at line 49 of file ge.c.

◆ ge_print_registers_verbose()

void ge_print_registers_verbose ( struct ge ge)

Definition at line 143 of file ge.c.

◆ ge_register_peri()

int ge_register_peri ( struct ge ge,
struct ge_peri p 
)

Definition at line 55 of file peripherical.c.

◆ ge_run()

int ge_run ( struct ge ge)

Run the emulator.

◆ ge_run_cycle()

int ge_run_cycle ( struct ge ge)

Run all GE "mastri" clock periods until next clock cycle.

Definition at line 223 of file ge.c.

◆ ge_run_pulse()

int ge_run_pulse ( struct ge ge)

Run a single pulse (i.e. a single GE "mastri" clock periods)

Definition at line 177 of file ge.c.

◆ ge_start()

void ge_start ( struct ge ge)

Emulate the press of the "start" button in the console.

Definition at line 94 of file ge.c.

◆ pulse()

void pulse ( struct ge ge)

Definition at line 180 of file pulse.c.