|
GE-115 Emulator
An Emulator of the General Electrics GE-115 computer
|
Modules | |
| Arithmetic-unit function decode | |
| cp06 ch.087 "ARITHMETICAL UNIT, CONCENTRATOR" (dwg 14013 0651): the mode block in the sheet's bottom-left corner, nine gates turning the three command lines CI45/CI46/CI47 into the function code the concentrator consumes. | |
Functions | |
| SIG (DI01A) | |
| SIG (DI011) | |
| SIG (DI02A) | |
| SIG (DI021) | |
| SIG (DI03A) | |
| SIG (DI031) | |
| SIG (DI06A) | |
| SIG (DI062) | |
| SIG (DI061) | |
| SIG (DI10A) | |
| SIG (DI101) | |
| SIG (DI11A) | |
| SIG (DI111) | |
| SIG (DI12A) | |
| SIG (DI121) | |
| SIG (DI14A) | |
| SIG (DI141) | |
| SIG (DI15A) | |
| SIG (DI151) | |
| SIG (DI17A) | |
| SIG (DI18A) | |
| SIG (DI181) | |
| SIG (DI18B) | |
| SIG (DI19A) | |
| SIG (DI20A) | |
| SIG (DI201) | |
| SIG (DI13A) | |
| SIG (DI64A) | |
| SIG (DI65A) | |
| SIG (DI66A) | |
| SIG (DI67A) | |
| SIG (DI21A) | |
| SIG (DI211) | |
| SIG (DI22A) | |
| SIG (DI23A) | |
| SIG (DI231) | |
| SIG (DI24A) | |
| SIG (DI25A) | |
| SIG (DI27A) | |
| SIG (DI271) | |
| SIG (DI28A) | |
| SIG (DI281) | |
| SIG (DI28B) | |
| SIG (DI29A) | |
| SIG (DI291) | |
| SIG (DI48A) | |
| SIG (DI481) | |
| SIG (DI58A) | |
| SIG (DI581) | |
| SIG (DI69A) | |
| SIG (DI691) | |
| SIG (DI57A) | |
| SIG (DI572) | |
| SIG (DI57B) | |
| SIG (DI79A) | |
| SIG (DI82A) | |
| SIG (DI83A) | |
| SIG (DI84A) | |
| SIG (DI85A) | |
| SIG (DI86A) | |
| SIG (DI87A) | |
| SIG (DI91A) | |
| SIG (DI931) | |
| SIG (DI93A) | |
| SIG (DI94A) | |
| SIG (DI95A) | |
| SIG (DI971) | |
| SIG (DI97A) | |
| SIG (DO01A) | |
| SIG (DO011) | |
| SIG (DO02A) | |
| SIG (DO021) | |
| SIG (DO04A) | |
| SIG (DO041) | |
| SIG (FUL26) | |
| SIG (FUL36) | |
| SIG (FEL06) | |
| SIG (FEL16) | |
| SIG (INES3) | |
| SIG (INES4) | |
| static uint16_t | ge_cpu_version_uce (const struct ge *ge) |
| Processor version: 466, 467 or 468 (cp06 ch.002 TAB.1). | |
| static uint16_t | ge_cycle_period_ns (const struct ge *ge) |
| Cycle period in nanoseconds for the strapped version. | |
| SIG (VAMC2) | |
| SIG (VEMB6) | |
| SIG (VAMA2) | |
| SIG (VAMA1) | |
| SIG (VAMB1) | |
| SIG (VAMC1) | |
| static uint8_t | ge_mem_in_bounds (struct ge *ge, uint16_t addr) |
| Installed memory, in K. | |
| static uint16_t | ge_memory_capacity_k (struct ge *ge) |
| SIG (FUL4G) | |
| SIG (FUL4F) | |
| SIG (FUL2) | |
| SIG (FUL3) | |
| SIG (FUL4) | |
| SIG (DO07A) | |
| SIG (DO071) | |
| SIG (DO00A) | |
| SIG (DO001) | |
| SIG (DO06A) | |
| SIG (DO061) | |
| SIG (DE00A) | |
| SIG (DE06A) | |
| SIG (DE11A) | |
| SIG (DE13A) | |
| SIG (DE001) | |
| SIG (CM011) | |
| SIG (CM01A) | |
| SIG (CM01A0) | |
| SIG (DE07A) | |
| SIG (DE23A) | |
| SIG (DE231) | |
| SIG (DA25A) | |
| SIG (PC011) | |
| Channel 1 is selected. | |
| SIG (PC111) | |
| SIG (PC211) | |
| Integrated printer on channel 2. | |
| SIG (DU161) | |
| SIG (DU18A) | |
| SIG (DU19A) | |
| SIG (DU201) | |
| SIG (EC56A) | |
| SIG (EC69A) | |
| SIG (EC70A) | |
| SIG (ED70A) | |
| SIG (ED75A) | |
| SIG (ED79A) | |
| SIG (ED91A) | |
| SIG (DE00A0) | |
| SIG (DE07A0) | |
| SIG (DE08A0) | |
| SIG (DA25A0) | |
| SIG (DI11A0) | |
| SIG (DI12A0) | |
| SIG (DI13A0) | |
| SIG (DI17A0) | |
| SIG (DI18A0) | |
| SIG (DI18B0) | |
| SIG (DI19A0) | |
| SIG (DI20A0) | |
| SIG (DI21A0) | |
| SIG (DI22A0) | |
| SIG (DI24A0) | |
| SIG (DI25A0) | |
| SIG (DI28A0) | |
| SIG (DI28B0) | |
| SIG (DI29A0) | |
| SIG (DI57A0) | |
| SIG (DI57B0) | |
| SIG (DI60A) | |
| SIG (DI60A0) | |
| SIG (DI64A0) | |
| SIG (DI65A0) | |
| SIG (DI66A0) | |
| SIG (DI67A0) | |
| SIG (DI79A0) | |
| SIG (DI82A0) | |
| SIG (DI83A0) | |
| SIG (DI84A0) | |
| SIG (DI85A0) | |
| SIG (DI86A0) | |
| SIG (DI87A0) | |
| SIG (DI91A0) | |
| SIG (DI93A0) | |
| SIG (DI94A0) | |
| SIG (DI95A0) | |
| SIG (DI97A0) | |
| SIG (EC56A0) | |
| SIG (EC69A0) | |
| SIG (EC70A0) | |
| SIG (ED70A0) | |
| SIG (ED75A0) | |
| SIG (ED79A0) | |
| SIG (ED91A0) | |
|
inlinestatic |
Processor version: 466, 467 or 468 (cp06 ch.002 TAB.1).
Independent of the memory capacity, which is ge_memory_capacity_k() from ch.001 – a machine is one of 466-468 AND one of 460-464.
|
inlinestatic |
|
inlinestatic |
Installed memory, in K.
NOT ENFORCED: gemu allocates a flat MEM_SIZE (64K) and never bounds an access against this. A real machine would behave differently above its installed capacity, so anything relying on that is not modelled – this reports the strapped configuration only. Is a memory address within the strapped capacity?
cp06 ch.080 "MEMORY STARTING LOGIC / LOGICA PARTENZA MEMORIA" (p156), transcribed gate for gate. Four NANDs watch the address knot's bits 12-14 (NO121/NO131/NO141) against the selection signals, and VAMEA – the memory START – is a NAND that fires only when none of them objects. An out-of-bounds address does not read garbage: the memory cycle never starts.
g3 VAM51 = NAND(VAMA1, VAMB1, VAMC1) g2 VAM5A = /VAM51 g6 VAM11 = NAND(VAM5A, NO131) bit13 . (A.B.C) g7 VAM21 = NAND(NO141, VAMA1) bit14 . A g5 VAM31 = NAND(VAMB1, NO121, NO131) bit13 . bit12 . B g4 VAM41 = NAND(NO141, NO131, VAMC1) bit14 . bit13 . C g1 VAMEA = NAND(TO252, VAM11, VAM21, VAM31, VAM41, COME1)
This reproduces every printed ch.001 row (8/12/16/24/32K), defines the bound for every OFF-table strap combination as well, and – because it reads the S42-switched VAMA1/VAMB1/VAMC1 forms – makes DIAG force a 16K bound regardless of the straps, which is the diagnostic option's documented address ceiling.
|
inlinestatic |