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++)
66 ge->
mem[(uint16_t)(a + i)] &
ge->
mem[(uint16_t)(b + i)]);
74void alu_oc(
struct ge *
ge, uint16_t a, uint16_t b, uint8_t len)
77 for (i = 0; i < len; i++)
79 ge->
mem[(uint16_t)(a + i)] |
ge->
mem[(uint16_t)(b + i)]);
87void alu_xc(
struct ge *
ge, uint16_t a, uint16_t b, uint8_t len)
92 for (i = 0; i < len; i++) {
94 ge->
mem[(uint16_t)(a + i)] ^
ge->
mem[(uint16_t)(b + i)]);
95 if (
ge->
mem[(uint16_t)(a + i)] != 0)
123 uint8_t result = (uint8_t)(
ge->
mem[addr] | imm);
141 uint8_t result = (uint8_t)(
ge->
mem[addr] ^ imm);
170 for (i = 0; i < len; i++) {
171 ba =
ge->
mem[(uint16_t)(a + i)];
172 bb =
ge->
mem[(uint16_t)(b + i)];
185 uint8_t mem_byte =
ge->
mem[addr];
196 else if (mem_byte == imm)
206void alu_tr(
struct ge *
ge, uint16_t a, uint8_t len, uint16_t table)
218 for (i = 0; i < len; i++) {
219 uint8_t b =
ge->
mem[(uint16_t)(a + i)];
231 uint8_t result =
ge->
mem[addr] & mask;
void alu_set_cc(struct ge *ge, uint8_t cc)
void alu_ni(struct ge *ge, uint16_t addr, uint8_t imm)
alu_ni – AND Immediate (NI, §5.6.3.2)
void alu_tr(struct ge *ge, uint16_t a, uint8_t len, uint16_t table)
alu_tr – Translate (TR, opcode 0xDC, §5.5.3.3)
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_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_cmi(struct ge *ge, uint16_t addr, uint8_t imm)
alu_cmi – Compare Immediate (CMI, opcode 0x95, §5.5.5.1)
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.