53void alu_ap (
struct ge *
ge, uint16_t a, uint8_t alen, uint16_t b, uint8_t blen);
56void alu_sp (
struct ge *
ge, uint16_t a, uint8_t alen, uint16_t b, uint8_t blen);
61void alu_mp (
struct ge *
ge, uint16_t a, uint8_t alen, uint16_t b, uint8_t blen);
67void alu_dp (
struct ge *
ge, uint16_t a, uint8_t alen, uint16_t b, uint8_t blen);
71void alu_cmp(
struct ge *
ge, uint16_t a, uint8_t alen, uint16_t b, uint8_t blen);
74void alu_mvp(
struct ge *
ge, uint16_t a, uint8_t alen, uint16_t b, uint8_t blen);
83void alu_pk (
struct ge *
ge, uint16_t dst, uint8_t dlen, uint16_t src, uint8_t slen);
87void alu_upk(
struct ge *
ge, uint16_t dst, uint8_t dlen, uint16_t src, uint8_t slen);
91void alu_pks(
struct ge *
ge, uint16_t dst, uint8_t dlen, uint16_t src, uint8_t slen);
95void alu_upks(
struct ge *
ge, uint16_t dst, uint8_t dlen, uint16_t src, uint8_t slen);
111void alu_edt(
struct ge *
ge, uint16_t pattern, uint8_t plen, uint16_t src);
void alu_mvp(struct ge *ge, uint16_t a, uint8_t alen, uint16_t b, uint8_t blen)
MVP 0xE8 Move Packed: op1 = op2 (sign preserved from op2); CC set.
void alu_sp(struct ge *ge, uint16_t a, uint8_t alen, uint16_t b, uint8_t blen)
SP 0xEB Subtract Packed: op1 = op1 - op2; CC set.
void alu_upks(struct ge *ge, uint16_t dst, uint8_t dlen, uint16_t src, uint8_t slen)
UPKS 0xEF Unpack with Sign: packed op2 → zoned op1; zone always 0x4.
void alu_upk(struct ge *ge, uint16_t dst, uint8_t dlen, uint16_t src, uint8_t slen)
UPK 0xD8 Unpack: packed op2 → zoned op1 (no sign processing; zone of each result byte is taken from t...
void alu_pks(struct ge *ge, uint16_t dst, uint8_t dlen, uint16_t src, uint8_t slen)
PKS 0xEE Pack with Sign: zoned op2 → packed op1; sign from zone of rightmost source byte (zone 0xA → ...
void alu_mp(struct ge *ge, uint16_t a, uint8_t alen, uint16_t b, uint8_t blen)
MP 0xEC Multiply Packed: op1 = op1 * op2; CC set.
void alu_cmp(struct ge *ge, uint16_t a, uint8_t alen, uint16_t b, uint8_t blen)
CMP 0xE9 Compare Packed (algebraic, no operand change); CC set.
void alu_pk(struct ge *ge, uint16_t dst, uint8_t dlen, uint16_t src, uint8_t slen)
PK 0xDA Pack: zoned op2 → packed op1 (no sign processing).
void alu_edt(struct ge *ge, uint16_t pattern, uint8_t plen, uint16_t src)
EDT 0xDE Edit packed source into pattern at op1.
void alu_ap(struct ge *ge, uint16_t a, uint8_t alen, uint16_t b, uint8_t blen)
AP 0xEA Add Packed: op1 = op1 + op2; CC set.
void alu_dp(struct ge *ge, uint16_t a, uint8_t alen, uint16_t b, uint8_t blen)
DP 0xED Divide Packed: op1[left L1-L2 chars] = quotient, op1[right L2+1 chars] = remainder; CC set.
The entire state of the emulated system, including registers, memory, peripherals and timings.