GE-115 Emulator
An Emulator of the General Electrics GE-115 computer
Public Types | Data Fields
ge Struct Reference

The entire state of the emulated system, including registers, memory, peripherals and timings. More...

#include <ge.h>

Public Types

enum  { MC_NONE , MC_READ , MC_WRITE }
 

Data Fields

enum clock current_clock
 
uint8_t halted
 
uint8_t powered
 
struct pulse_eventon_pulse [END_OF_STATUS]
 
uint16_t rPO
 Program addresser. More...
 
uint16_t rV1
 Addresser for the first operand. More...
 
uint16_t rV2
 Addresser for the second operand. More...
 
uint16_t rV3
 Addresser for external instructions using channel 3. More...
 
uint16_t rV4
 Addresser for external instructions using channel 2. More...
 
uint8_t rRI
 Photoprint register 8-bit register used to store the photodisc codes. More...
 
uint16_t rL1
 Length of the operand. More...
 
uint8_t rL2
 Auxiliary register. More...
 
uint16_t rL3
 Length of operands involving channel 3. More...
 
struct ge_knot_no kNO
 
struct ge_knot_ni kNI
 Knot driven by counting network, or by the UA to store the result of the operation. More...
 
uint16_t rRO
 Multipurpose 8+1 bit register. More...
 
uint16_t rVO
 Default memory addresser. More...
 
uint16_t rBO
 Default operator. More...
 
uint8_t rFO
 Current function code. More...
 
uint8_t rSO
 Main sequencer. More...
 
uint8_t rSI
 Peripheral unit sequencer. More...
 
uint8_t rSA
 Future state configuration. More...
 
uint8_t rRE
 
uint8_t rRA
 
uint8_t ffFI
 Special conditions register 1. More...
 
uint8_t ffFA
 Special conditions register 2. More...
 
uint8_t RETO:1
 
uint8_t RET2:1
 
uint8_t AINI:1
 Program Loading. More...
 
uint8_t ALOI:1
 Load connector selection. More...
 
uint8_t ALTO:1
 Stops internal cycles. More...
 
uint8_t PODI:1
 Slow delay line. More...
 
uint8_t ACIC:1
 Recycle delay line. More...
 
uint8_t ALAM:1
 Operator Call. More...
 
uint8_t AVER:1
 Jump Condition Verified. More...
 
uint8_t ADIR:1
 Disable Step By Step. More...
 
uint8_t RINT:1
 
uint8_t JS1:1
 Console jump condition 1. More...
 
uint8_t JS2:1
 Console jump condition 2. More...
 
uint8_t JE:1
 JE/AVER jump instruction exectuted. More...
 
uint8_t INTE:1
 Interruption present. More...
 
uint8_t PB06:1
 Unconditionally stores L106. More...
 
uint8_t PB07:1
 Unconditionally stores L106. More...
 
uint8_t PB26:1
 Stores L106 if channel 2 is selected. More...
 
uint8_t PB36:1
 
uint8_t PB37:1
 
uint8_t PIC1:1
 Selection Channel 1. More...
 
uint8_t RASI:1
 Channel 1 in transfer. More...
 
uint8_t PUC2:1
 Channel 2 in transfer. More...
 
uint8_t PUC3:1
 Channel 3 in transfer. More...
 
uint8_t PEC1:1
 
uint8_t RUF1:1
 
uint8_t URPE:1
 
uint8_t URPU:1
 
uint8_t RC00:1
 Asynchronous CPU Cycle Request. More...
 
uint8_t RC01:1
 Asynchronous Channel 1 Cycle Request. More...
 
uint8_t RC02:1
 Asynchronous Channel 2 Cycle Request. More...
 
uint8_t RC03:1
 Asynchronous Channel 3 Cycle Request. More...
 
uint8_t RIA0:1
 Synchronous CPU Cycle Request. More...
 
uint8_t RESI:1
 Synchronous Channel 1 Cycle Request. More...
 
uint8_t RIA2:1
 Synchronous Channel 2 Cycle Request. More...
 
uint8_t RIA3:1
 Synchronous Channel 3 Cycle Request. More...
 
uint8_t RECE:1
 Selection Check Byte. More...
 
uint8_t RIG1:1
 End from controller 1. More...
 
uint8_t RIG3:1
 
uint8_t RACI:1
 Rejected Command. More...
 
uint8_t RAVI:1
 VICU Support. More...
 
uint8_t RT121:1
 
uint8_t RT131:1
 
uint8_t future_state
 Future state. More...
 
enum ge_console_rotary register_selector
 The current state of the console register rotary switch. More...
 
struct ge_console_switches console_switches
 The current state of the console switches. More...
 
uint8_t step_by_step:1
 Step by step execution. More...
 
enum ge:: { ... }  memory_command
 
uint8_t mem [MEM_SIZE]
 The memory of the emulated system. More...
 
struct ge_counting_network counting_network
 
struct ge_integrated_reader integrated_reader
 The I/O interface for the integrated reader (RI) More...
 
struct ge_connector ST3
 The I/O interface for the ST3 connector. More...
 
struct ge_connector ST4
 The I/O interface for the ST4 connector. More...
 
struct ge_periperi
 
uint8_t TO50_did_CI32_or_CI33:1
 Workaround for pulse TO50. More...
 

Detailed Description

The entire state of the emulated system, including registers, memory, peripherals and timings.

Definition at line 94 of file ge.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
MC_NONE 
MC_READ 
MC_WRITE 

Definition at line 522 of file ge.h.

Field Documentation

◆ ACIC

uint8_t ACIC

Recycle delay line.

Initially is set by "CLEAR", after that it is reset cyclicly. The reset pulse is TO10, the normal setting pulse is TO90 if a LOLL instruction has not been performed, in this case it is set by TI05, with a delay of about 130ns. (cpu fo. 96).

NOTE: documentation differs at cpu fo. 99 that states:

The ACIC1 FF is reset by the TO10 pulse and it is set by the TO901 with the condition PODIB == 1.

PODI is the FF which stores the LOLL diagnostic instruction performance causing an increase of the cycle of about 130 ns.

In fact, if PODIB == 0 the recycling occurs with the pulse TI05 instead of TO90.

Definition at line 298 of file ge.h.

◆ ADIR

uint8_t ADIR

Disable Step By Step.

Set with CI77 by the INS instruction, reset with CI78 issued by ENS, or with "CLEAR" (cpu fo. 97).

Definition at line 327 of file ge.h.

◆ AINI

uint8_t AINI

Program Loading.

Set by pressing the "LOAD" button of the console, and it is reset by pressing "CLEAR", or with the command CI39 (in the alpha phase of the E0 state).

Definition at line 254 of file ge.h.

◆ ALAM

uint8_t ALAM

Operator Call.

It commands the switching on of the "Operator call" lamp. It is set with CI87 issued by the LON and LOLL instructions. It is reset with CI88 issued by the LOFF instruction, or by pressing the "CLEAR" button (cpu fo. 96).

Definition at line 308 of file ge.h.

◆ ALOI

uint8_t ALOI

Load connector selection.

Set by toggling the bistable switch "LOAD 1"/"LOAD 2" button of the console.

Definition at line 261 of file ge.h.

◆ ALTO

uint8_t ALTO

Stops internal cycles.

If set, stops the performance of the internal processing cycles, without stopping the timing generation (cpu fo. 98).

Definition at line 269 of file ge.h.

◆ AVER

uint8_t AVER

Jump Condition Verified.

Reset in the E0 status of the alpha phase, together with AINI, with the CI39 command (cpu fo. 96).

Set in the E6 status of the alpha phase of the jump instructions (CI38) if signal DC16 (verified condition) is present (cpu fo. 96).

Definition at line 319 of file ge.h.

◆ console_switches

struct ge_console_switches console_switches

The current state of the console switches.

Definition at line 508 of file ge.h.

◆ counting_network

struct ge_counting_network counting_network

Definition at line 528 of file ge.h.

◆ current_clock

enum clock current_clock

Definition at line 50 of file ge.h.

◆ ffFA

uint8_t ffFA

Special conditions register 2.

7 Flip-Flops containing special conditions which occur during the performance of an instruction. Loaded from ffFI in T010.

Faults (from pp. 139-141)

Definition at line 239 of file ge.h.

◆ ffFI

uint8_t ffFI

Special conditions register 1.

7 Flip-Flops containing special conditions which occur during the performance of an instruction. Unloaded in ffFA in T010

Definition at line 229 of file ge.h.

◆ future_state

uint8_t future_state

Future state.

Ad-hoc logic, at the end of the cycle contains the result of the future state network.

Definition at line 508 of file ge.h.

◆ halted

uint8_t halted

Definition at line 97 of file ge.h.

◆ INTE

uint8_t INTE

Interruption present.

Definition at line 334 of file ge.h.

◆ integrated_reader

struct ge_integrated_reader integrated_reader

The I/O interface for the integrated reader (RI)

Definition at line 528 of file ge.h.

◆ JE

uint8_t JE

JE/AVER jump instruction exectuted.

Definition at line 333 of file ge.h.

◆ JS1

uint8_t JS1

Console jump condition 1.

Definition at line 331 of file ge.h.

◆ JS2

uint8_t JS2

Console jump condition 2.

Definition at line 332 of file ge.h.

◆ kNI

struct ge_knot_ni kNI

Knot driven by counting network, or by the UA to store the result of the operation.

UA may store MSB or LSB depending on the operation.

Definition at line 132 of file ge.h.

◆ kNO

struct ge_knot_no kNO

Definition at line 132 of file ge.h.

◆ mem

uint8_t mem[MEM_SIZE]

The memory of the emulated system.

Definition at line 528 of file ge.h.

◆ 

enum { ... } memory_command

◆ on_pulse

struct pulse_event* on_pulse[END_OF_STATUS]

Definition at line 103 of file ge.h.

◆ PB06

uint8_t PB06

Unconditionally stores L106.

Definition at line 338 of file ge.h.

◆ PB07

uint8_t PB07

Unconditionally stores L106.

Definition at line 339 of file ge.h.

◆ PB26

uint8_t PB26

Stores L106 if channel 2 is selected.

Definition at line 340 of file ge.h.

◆ PB36

uint8_t PB36

Definition at line 341 of file ge.h.

◆ PB37

uint8_t PB37

Definition at line 342 of file ge.h.

◆ PEC1

uint8_t PEC1

Definition at line 383 of file ge.h.

◆ peri

struct ge_peri* peri

Definition at line 547 of file ge.h.

◆ PIC1

uint8_t PIC1

Selection Channel 1.

Used during the general B phase for command forwarding or condition examination. Unconditionally set by command CE02 which enables the channel selection even if the interested channels are 2 or 3. When a character transfer in output has been initiated with channel 1, signal PAP4A resets PUC1 at the start of the transper phase, when the first transfer is done from RO in to RA (CE00) unless signal PAR21 had already absolved this function. (cpu fo. 235).

Note: the above GE docs refers to PUC2, however in intermediate block diagram fo. 10, it's shown the real flipflop is PIC1, and PUC2 is derived combinatorially from it.

Definition at line 360 of file ge.h.

◆ PODI

uint8_t PODI

Slow delay line.

Increases the delay line cycle by about 130ns. It is set together with ALAM by the LOLL diagnostic instruction (cpu fo. 96).

Definition at line 277 of file ge.h.

◆ powered

uint8_t powered

Definition at line 98 of file ge.h.

◆ PUC2

uint8_t PUC2

Channel 2 in transfer.

(cpu fo. 236)

Definition at line 374 of file ge.h.

◆ PUC3

uint8_t PUC3

Channel 3 in transfer.

(cpu fo. 236)

Definition at line 381 of file ge.h.

◆ RACI

uint8_t RACI

Rejected Command.

Definition at line 494 of file ge.h.

◆ RASI

uint8_t RASI

Channel 1 in transfer.

(cpu fo. 236)

Definition at line 367 of file ge.h.

◆ RAVI

uint8_t RAVI

VICU Support.

Definition at line 497 of file ge.h.

◆ rBO

uint16_t rBO

Default operator.

16-bit register automatically loaded from NO, used to drive the UA (aka ALU) and used to visualize the content of other registers on the operating panel of the console

Definition at line 164 of file ge.h.

◆ RC00

uint8_t RC00

Asynchronous CPU Cycle Request.

It is reset with CE18 (enable RIAP) while a cycle is performed for the CPU (RIUC=1). The CPU is thus waiting for the external triggers of the command received. It is set by the clear signal (CAGUF=0) with the signal of command received by the peripheral unit (RBII1=1) with the insertion of the SITE key which frees the waitings (RAITI=1) and finally with the disselection of channel 1 (PU16 = 0) (cpu fo. 114).

Definition at line 407 of file ge.h.

◆ RC01

uint8_t RC01

Asynchronous Channel 1 Cycle Request.

It is set with the OR of the channel 1 request triggers (RAI01) if the executing instruction is not over (RIVEF=1). Also, when the SITE key is inserted during a during a transfer of channel 1 (RAISI2=1). It is reset during a cycle of channel 1 with CE18 (enable RIAP), or at the end of a transfer on channel 1 (cpu fo. 114)

Definition at line 420 of file ge.h.

◆ RC02

uint8_t RC02

Asynchronous Channel 2 Cycle Request.

It is set with the trigger LU08 from the integrated reader, or when the SITE key is inserted (RAITI1=1) during the transfers on channel 2.

Request from printer do not act on RC02, but are derived from it with an OR (RIMZA).

It is reset during a cycle of channel 2 with CE18 (enable RIAP), or at the end of a transfer on channel 2 (cpu fo. 114).

Definition at line 435 of file ge.h.

◆ RC03

uint8_t RC03

Asynchronous Channel 3 Cycle Request.

It is set with the OR of the cycle request triggers relative to channel 3 (RA301=1) if the executing instruction is not over (RIVAF=1) and additional performances of the GE-130 are enabled (FUL4F=1).

It is reset during a cycle of channel 3 with CE18 (enable RIAP), also, it is reset when the SITE key is inserted (RAITI=1) during a data transfer on channel 3 (RES36=1), or at the end of transfer on channel 3 (PIC32=0) (cpu fo. 114).

Definition at line 450 of file ge.h.

◆ RECE

uint8_t RECE

Selection Check Byte.

Definition at line 486 of file ge.h.

◆ register_selector

enum ge_console_rotary register_selector

The current state of the console register rotary switch.

Definition at line 508 of file ge.h.

◆ RESI

uint8_t RESI

Synchronous Channel 1 Cycle Request.

Transfered from RC01 at pulse TO00 (cpu fo. 114).

Definition at line 469 of file ge.h.

◆ RET2

uint8_t RET2

Definition at line 246 of file ge.h.

◆ RETO

uint8_t RETO

Definition at line 245 of file ge.h.

◆ rFO

uint8_t rFO

Current function code.

8-bit register storing the function code of the instruction being executed.

Definition at line 171 of file ge.h.

◆ RIA0

uint8_t RIA0

Synchronous CPU Cycle Request.

Is conditioned by the signals ALTOF and RAM02.

When the FF ALTOF is reset, the cycle requests from the CPU are not serverd, therefore the internal calculation is stopped. This counter consists of the FF RAMO and RAMI and counts with the pulse TO10.

Definition at line 462 of file ge.h.

◆ RIA2

uint8_t RIA2

Synchronous Channel 2 Cycle Request.

Transfered from RC02 at pulse TO00 (cpu fo. 114).

Definition at line 476 of file ge.h.

◆ RIA3

uint8_t RIA3

Synchronous Channel 3 Cycle Request.

Transfered from RC03 at pulse TO00 (cpu fo. 114).

Definition at line 483 of file ge.h.

◆ RIG1

uint8_t RIG1

End from controller 1.

Definition at line 489 of file ge.h.

◆ RIG3

uint8_t RIG3

Definition at line 491 of file ge.h.

◆ RINT

uint8_t RINT

Definition at line 329 of file ge.h.

◆ rL1

uint16_t rL1

Length of the operand.

16-bit used to store the length of the operands or for information in transit.

Definition at line 130 of file ge.h.

◆ rL2

uint8_t rL2

Auxiliary register.

Definition at line 131 of file ge.h.

◆ rL3

uint16_t rL3

Length of operands involving channel 3.

Definition at line 132 of file ge.h.

◆ rPO

uint16_t rPO

Program addresser.

The register used to scan the positions of the memory in which the program instructions are recorded. (p.118).

Definition at line 111 of file ge.h.

◆ rRA

uint8_t rRA

Definition at line 221 of file ge.h.

◆ rRE

uint8_t rRE

Definition at line 220 of file ge.h.

◆ rRI

uint8_t rRI

Photoprint register 8-bit register used to store the photodisc codes.

Definition at line 122 of file ge.h.

◆ rRO

uint16_t rRO

Multipurpose 8+1 bit register.

Stores the read signal from memory (e.g. the result of transfer command MEM).

Definition at line 147 of file ge.h.

◆ rSA

uint8_t rSA

Future state configuration.

Register that drives the MLS and the logic to generate future status configuration

Definition at line 218 of file ge.h.

◆ rSI

uint8_t rSI

Peripheral unit sequencer.

4-bit sequencer used for data xechange with peripheral units through channel 2.

Drives the NA knot when the cycle has been attributed to channel 2.

Loaded with the first 4 bits of the future status network

  • after the execution of a channel 2 cycle
  • when forcing a status in SI using CU20 (DC status of general beta phase)

Definition at line 210 of file ge.h.

◆ rSO

uint8_t rSO

Main sequencer.

Drives the NA knot when the cycle has been attributed to the CPU or channel 1.

It is used to establish the sequence for:

  • alpha phase for all internal and external instructions
  • beta phase of internal instructions
  • organisation phase (general beta) of external instructions
  • program loading

Loaded from the future status network when signal SOC01 is activated, provided the RICI key is not active, in the following cases:

  • the FF ARES has been set thru "CLEAR". This causes the machine to execute the status 00, and setting of SO07 using CU07, this will set the configuration of SO to 80.
  • the rotary switch is in forcing of SO. When a cycle is attributed to the CPU pressing "START", the AM00-07 keys are forced in SO.
  • at the end of a cycle attributed to the CPU, when the rotary switch is in normal position, the future status network is stored in SO. (cpu fo. 127)

Definition at line 196 of file ge.h.

◆ RT121

uint8_t RT121

Definition at line 499 of file ge.h.

◆ RT131

uint8_t RT131

Definition at line 500 of file ge.h.

◆ RUF1

uint8_t RUF1

Definition at line 385 of file ge.h.

◆ rV1

uint16_t rV1

Addresser for the first operand.

Definition at line 113 of file ge.h.

◆ rV2

uint16_t rV2

Addresser for the second operand.

Definition at line 114 of file ge.h.

◆ rV3

uint16_t rV3

Addresser for external instructions using channel 3.

Definition at line 115 of file ge.h.

◆ rV4

uint16_t rV4

Addresser for external instructions using channel 2.

Definition at line 116 of file ge.h.

◆ rVO

uint16_t rVO

Default memory addresser.

16-bit register which is loaded in TO20 from NO, used to address memory for read and write operations.

Definition at line 155 of file ge.h.

◆ ST3

struct ge_connector ST3

The I/O interface for the ST3 connector.

Definition at line 528 of file ge.h.

◆ ST4

struct ge_connector ST4

The I/O interface for the ST4 connector.

Definition at line 528 of file ge.h.

◆ step_by_step

uint8_t step_by_step

Step by step execution.

Todo:
replace with signal name

Definition at line 520 of file ge.h.

◆ TO50_did_CI32_or_CI33

uint8_t TO50_did_CI32_or_CI33

Workaround for pulse TO50.

Currently we first run the common machine logic, then the MSL states. However in certain cases (e.g. display state 00) the common TO50 implementation is conditioned on the activation of the MSL TO50... So, until we figure out a better way of factoring the MSL, let's store here the conditions for the common machine TO50, and delay its excecution to a fake TO50-1 clock pulse.

Definition at line 560 of file ge.h.

◆ URPE

uint8_t URPE

Definition at line 387 of file ge.h.

◆ URPU

uint8_t URPU

Definition at line 388 of file ge.h.