From 8d0f46d4e62af5d66ff3cce872256163a41b54bf Mon Sep 17 00:00:00 2001 From: mrb0nk500 Date: Fri, 6 Dec 2019 17:25:13 -0500 Subject: Delete opcode.c, since I added all the functions from it into sux.c. --- opcode.c | 242 --------------------------------------------------------------- 1 file changed, 242 deletions(-) delete mode 100644 opcode.c (limited to 'opcode.c') diff --git a/opcode.c b/opcode.c deleted file mode 100644 index 847ff80..0000000 --- a/opcode.c +++ /dev/null @@ -1,242 +0,0 @@ -#include "opcode.h" - -void setps(struct sux *cpu, uint8_t thread) { - (cpu->c[thread]) ? (cpu->ps |= (C << 8*thread)) : (cpu->ps &= ~(C << 8*thread)); - (cpu->z[thread]) ? (cpu->ps |= (Z << 8*thread)) : (cpu->ps &= ~(Z << 8*thread)); - (cpu->i[thread]) ? (cpu->ps |= (I << 8*thread)) : (cpu->ps &= ~(I << 8*thread)); - (cpu->s[thread]) ? (cpu->ps |= (S << 8*thread)) : (cpu->ps &= ~(S << 8*thread)); - (cpu->v[thread]) ? (cpu->ps |= (V << 8*thread)) : (cpu->ps &= ~(V << 8*thread)); - (cpu->n[thread]) ? (cpu->ps |= (N << 8*thread)) : (cpu->ps &= ~(N << 8*thread)); -} - -void mul(struct sux *cpu, uint64_t adr, uint8_t thread, uint8_t regsize) { - uint64_t value; - value = (uint64_t)addr[adr]; - if (regsize >= 2) - value += (uint64_t)addr[adr+1] << 8; - if (regsize >= 4) { - value += (uint64_t)addr[adr+2] << 16; - value += (uint64_t)addr[adr+3] << 24; - } - if (regsize >= 8) { - value += (uint64_t)addr[adr+4] << 32; - value += (uint64_t)addr[adr+5] << 40; - value += (uint64_t)addr[adr+6] << 48; - value += (uint64_t)addr[adr+7] << 56; - } - uint64_t sum = cpu->a[thread]*value+cpu->c[thread]; - cpu->z[thread] = (sum == 0); - cpu->n[thread] = (sum >> 63); - cpu->v[thread] = !((cpu->a[thread]^value) & 0x8000000000000000) && ((cpu->a[thread]^sum) & 0x8000000000000000); - cpu->c[thread] = (!((cpu->a[thread]^sum) && (cpu->a[thread]^value)) && (cpu->a[thread] >= ((uint64_t)1 << 32) && value >= ((uint64_t)1 << 32))); - cpu->a[thread] = sum; - setps(cpu, thread); -} - -void divd(struct sux *cpu, uint64_t adr, uint8_t thread, uint8_t regsize) { - uint64_t value; - value = (uint64_t)addr[adr]; - if (regsize >= 2) - value += (uint64_t)addr[adr+1] << 8; - if (regsize >= 4) { - value += (uint64_t)addr[adr+2] << 16; - value += (uint64_t)addr[adr+3] << 24; - } - if (regsize >= 8) { - value += (uint64_t)addr[adr+4] << 32; - value += (uint64_t)addr[adr+5] << 40; - value += (uint64_t)addr[adr+6] << 48; - value += (uint64_t)addr[adr+7] << 56; - } - uint64_t sum = cpu->a[thread]/value; - cpu->z[thread] = (sum == 0); - cpu->v[thread] = !((cpu->a[thread]^value) & 0x8000000000000000) && ((cpu->a[thread]^sum) & 0x8000000000000000); - cpu->a[thread] = sum; - setps(cpu, thread); -} - -void and_addr(struct sux *cpu, uint64_t* const reg, uint64_t adr, uint8_t thread, uint8_t regsize) { - uint64_t value; - value = (uint64_t)addr[adr]; - if (regsize >= 2) - value += (uint64_t)addr[adr+1] << 8; - if (regsize >= 4) { - value += (uint64_t)addr[adr+2] << 16; - value += (uint64_t)addr[adr+3] << 24; - } - if (regsize >= 8) { - value += (uint64_t)addr[adr+4] << 32; - value += (uint64_t)addr[adr+5] << 40; - value += (uint64_t)addr[adr+6] << 48; - value += (uint64_t)addr[adr+7] << 56; - } - *reg &= value; - cpu->z[thread] = (*reg == 0); - cpu->n[thread] = (*reg >> 63); - setps(cpu, thread); -} - -void or_addr(struct sux *cpu, uint64_t* const reg, uint64_t adr, uint8_t thread, uint8_t regsize) { - uint64_t value; - value = (uint64_t)addr[adr]; - if (regsize >= 2) - value += (uint64_t)addr[adr+1] << 8; - if (regsize >= 4) { - value += (uint64_t)addr[adr+2] << 16; - value += (uint64_t)addr[adr+3] << 24; - } - if (regsize >= 8) { - value += (uint64_t)addr[adr+4] << 32; - value += (uint64_t)addr[adr+5] << 40; - value += (uint64_t)addr[adr+6] << 48; - value += (uint64_t)addr[adr+7] << 56; - } - *reg |= value; - cpu->z[thread] = (*reg == 0); - cpu->n[thread] = (*reg >> 63); - setps(cpu, thread); -} - -void xor_addr(struct sux *cpu, uint64_t* const reg, uint64_t adr, uint8_t thread, uint8_t regsize) { - uint64_t value; - value = (uint64_t)addr[adr]; - if (regsize >= 2) - value += (uint64_t)addr[adr+1] << 8; - if (regsize >= 4) { - value += (uint64_t)addr[adr+2] << 16; - value += (uint64_t)addr[adr+3] << 24; - } - if (regsize >= 8) { - value += (uint64_t)addr[adr+4] << 32; - value += (uint64_t)addr[adr+5] << 40; - value += (uint64_t)addr[adr+6] << 48; - value += (uint64_t)addr[adr+7] << 56; - } - *reg ^= value; - cpu->z[thread] = (*reg == 0); - cpu->n[thread] = (*reg >> 63); - setps(cpu, thread); -} - -void stt(struct sux* const cpu, uint8_t value) { - uint16_t tv = 0xFF50; /* Thread Vector. */ - uint8_t t = addr[value]; - cpu->crt |= t; - for (uint8_t i = 0; i < 7; i++) - if ((t >> i) & 1) { - uint64_t adr = (uint64_t)addr[tv+(8*i)] - | (uint64_t)addr[tv+1+(8*i)] << 8 - | (uint64_t)addr[tv+2+(8*i)] << 16 - | (uint64_t)addr[tv+3+(8*i)] << 24 - | (uint64_t)addr[tv+4+(8*i)] << 32 - | (uint64_t)addr[tv+5+(8*i)] << 40 - | (uint64_t)addr[tv+6+(8*i)] << 48 - | (uint64_t)addr[tv+7+(8*i)] << 56; - cpu->pc[i+1] = adr; - } -} - -void ent(struct sux *cpu, uint8_t value) { - uint8_t t = addr[value]; - cpu->crt &= ~t; - for (uint8_t i = 0; i < 7; i++) - if ((t >> i) & 1) - cpu->pc[i+1] = cpu->pc[0]+(i+1); -} - -void ld(struct sux *cpu, uint64_t *reg, uint64_t adr, uint8_t thread, uint8_t regsize) { - *reg = (uint64_t)addr[adr]; - if (regsize >= 2) - *reg += (uint64_t)addr[adr+1] << 8; - if (regsize >= 4) { - *reg += (uint64_t)addr[adr+2] << 16; - *reg += (uint64_t)addr[adr+3] << 24; - } - if (regsize >= 8) { - *reg += (uint64_t)addr[adr+4] << 32; - *reg += (uint64_t)addr[adr+5] << 40; - *reg += (uint64_t)addr[adr+6] << 48; - *reg += (uint64_t)addr[adr+7] << 56; - } - cpu->z[thread] = (*reg == 0); - cpu->n[thread] = (*reg >> 63); - setps(cpu, thread); -} - -void st(struct sux *cpu, uint64_t *reg, uint64_t adr, uint8_t thread, uint8_t regsize) { - addr[adr] = *reg & 0xFF; - if (regsize >= 2) - addr[adr+1] = *reg >> 8; - if (regsize >= 4) { - addr[adr+2] = *reg >> 16; - addr[adr+3] = *reg >> 24; - } - if (regsize >= 8) { - addr[adr+4] = *reg >> 32; - addr[adr+5] = *reg >> 40; - addr[adr+6] = *reg >> 48; - addr[adr+7] = *reg >> 56; - } -} - -void push(struct sux *cpu, uint8_t value) { - addr[STK_STADDR+cpu->sp] = value; - cpu->sp--; - addr[0xFF90] = cpu->sp & 0xFF; - addr[0xFF91] = cpu->sp >> 8; -} - -uint8_t pull(struct sux *cpu) { - cpu->sp++; - addr[0xFF90] = cpu->sp & 0xFF; - addr[0xFF91] = cpu->sp >> 8; - return addr[STK_STADDR+cpu->sp]; -} - -uint64_t immaddr(struct sux *cpu, uint8_t thread, uint8_t size) { - uint64_t adr = cpu->pc[thread]; - cpu->pc[thread]+=size; - return adr; -} - -uint64_t absaddr(struct sux *cpu, uint8_t thread) { - uint64_t adr = (uint64_t)addr[cpu->pc[thread]] - | (uint64_t)addr[cpu->pc[thread]+1] << 8 - | (uint64_t)addr[cpu->pc[thread]+2] << 16 - | (uint64_t)addr[cpu->pc[thread]+3] << 24 - | (uint64_t)addr[cpu->pc[thread]+4] << 32 - | (uint64_t)addr[cpu->pc[thread]+5] << 40 - | (uint64_t)addr[cpu->pc[thread]+6] << 48 - | (uint64_t)addr[cpu->pc[thread]+7] << 56; - cpu->pc[thread]+=8; - return adr; -} - -uint32_t zeromtx(struct sux *cpu, uint8_t thread) { - uint32_t adr = (uint32_t)addr[cpu->pc[thread]] - | (uint32_t)addr[cpu->pc[thread]+1] << 8 - | (uint32_t)addr[cpu->pc[thread]+2] << 16 - | (uint32_t)addr[cpu->pc[thread]+3] << 24; - cpu->pc[thread]+=4; - return adr; -} - -uint32_t zeromx(struct sux *cpu, uint8_t thread) { - uint32_t adr = (uint32_t)addr[cpu->pc[thread]] - | (uint32_t)addr[cpu->pc[thread]+1] << 8 - | (uint32_t)addr[cpu->pc[thread]+2] << 16 - | (uint32_t)addr[cpu->pc[thread]+3] << 24; - adr += cpu->x[thread]; - cpu->pc[thread]+=4; - return adr; -} - -uint32_t zeromy(struct sux *cpu, uint8_t thread) { - uint32_t adr = (uint32_t)addr[cpu->pc[thread]] - | (uint32_t)addr[cpu->pc[thread]+1] << 8 - | (uint32_t)addr[cpu->pc[thread]+2] << 16 - | (uint32_t)addr[cpu->pc[thread]+3] << 24; - adr += cpu->y[thread]; - cpu->pc[thread]+=4; - return adr; -} -- cgit v1.2.3-13-gbd6f