31void alu_mvc(
struct ge *
ge, uint16_t dst, uint16_t src, uint16_t len)
42 for (i = 0; i < len; i++)
61void alu_nc(
struct ge *
ge, uint16_t a, uint16_t b, uint8_t len)
64 for (i = 0; i < len; i++)
65 ge->
mem[(uint16_t)(a + i)] &=
ge->
mem[(uint16_t)(b + i)];
73void alu_oc(
struct ge *
ge, uint16_t a, uint16_t b, uint8_t len)
76 for (i = 0; i < len; i++)
77 ge->
mem[(uint16_t)(a + i)] |=
ge->
mem[(uint16_t)(b + i)];
85void alu_xc(
struct ge *
ge, uint16_t a, uint16_t b, uint8_t len)
90 for (i = 0; i < len; i++) {
91 ge->
mem[(uint16_t)(a + i)] ^=
ge->
mem[(uint16_t)(b + i)];
92 if (
ge->
mem[(uint16_t)(a + i)] != 0)
120 uint8_t result = (uint8_t)(
ge->
mem[addr] | imm);
138 uint8_t result = (uint8_t)(
ge->
mem[addr] ^ imm);
167 for (i = 0; i < len; i++) {
168 ba =
ge->
mem[(uint16_t)(a + i)];
169 bb =
ge->
mem[(uint16_t)(b + i)];
182 uint8_t mem_byte =
ge->
mem[addr];
193 else if (mem_byte == imm)
203void alu_tl(
struct ge *
ge, uint16_t a, uint8_t len, uint16_t table)
215 for (i = 0; i < len; i++) {
216 uint8_t b =
ge->
mem[(uint16_t)(a + i)];
228 uint8_t result =
ge->
mem[addr] & mask;
void alu_set_cc(struct ge *ge, uint8_t cc)
void alu_tl(struct ge *ge, uint16_t a, uint8_t len, uint16_t table)
alu_tl – Translate (TL, §5.5.3.3, "TR" in manual)
void alu_ni(struct ge *ge, uint16_t addr, uint8_t imm)
alu_ni – AND Immediate (NI, §5.6.3.2)
void alu_nc(struct ge *ge, uint16_t a, uint16_t b, uint8_t len)
alu_nc – AND Characters (NC, §5.5.3.9)
void alu_oc(struct ge *ge, uint16_t a, uint16_t b, uint8_t len)
alu_oc – OR Characters (OC, §5.5.3.8)
void alu_cmc(struct ge *ge, uint16_t a, uint16_t b, uint8_t len)
alu_cmc – Compare Characters (CMC, §5.5.3.2)
void alu_ci(struct ge *ge, uint16_t addr, uint8_t imm)
alu_ci – Compare Immediate (CMI, §5.5.5.1)
void alu_xc(struct ge *ge, uint16_t a, uint16_t b, uint8_t len)
alu_xc – Exclusive-OR Characters (XC, §5.5.3.7)
void alu_oi(struct ge *ge, uint16_t addr, uint8_t imm)
void alu_mvc(struct ge *ge, uint16_t dst, uint16_t src, uint16_t len)
alu_mvc – Move Characters (MVC, §5.5.3.1)
void alu_xi(struct ge *ge, uint16_t addr, uint8_t imm)
alu_xi – Exclusive-OR Immediate (XI, §5.6.3.3)
void alu_mvi(struct ge *ge, uint16_t addr, uint8_t imm)
alu_mvi – Move Immediate (MVI, §5.5.5.2)
void alu_tm(struct ge *ge, uint16_t addr, uint8_t mask)
alu_tm – Test under Mask (TM, §5.6.3.4)
GE-120/130 ALU logical and string-move primitives.
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...
The entire state of the emulated system, including registers, memory, peripherals and timings.
uint8_t mem[MEM_SIZE]
The memory of the emulated system.