Mercurial > hg > ede
view emulator/iset.c @ 14:2b8eb2c86602
Major update to assembler design, now handles labels proper.
Next step unit test
Added boot procedure and experimental function look up table to emulator
Started implementing operations
tested SET and CLR operations with success
author | james <jb302@eecs.qmul.ac.uk> |
---|---|
date | Wed, 29 Jan 2014 20:11:07 +0000 |
parents | e9dc055a0f8b |
children | 256d24488e3f |
line wrap: on
line source
/* iset.c * op functions */ #include <stdlib.h> #include <stdio.h> // debug #include "iset.h" #include "mem.h" //implement me void JNS(void) { registers.PC = registers.PC + 1; } //implement me void LJMP(void) { registers.PC = registers.PC + 1; } /* * 0x08 - SET C * 0x0A - SET BS * 0x0c - SET IE */ void SET(void) { switch (op) { case 0x08: registers.flags = registers.flags | 0x80; break; case 0x0A: registers.flags = registers.flags | 0x01; break; case 0x0C: registers.flags = registers.flags | 0x02; break; } registers.PC = registers.PC + 1; } void RESERVED(void) { registers.PC = registers.PC + 1; } //implement me void JPO(void) { registers.PC = registers.PC + 1; } //implement me void ANL(void) { registers.PC = registers.PC + 1; } //implement me void JNZ(void) { registers.PC = registers.PC + 1; } /* 0xFF - HLT */ void HLT(void) { exit(0); } //implement me void RRC(void) { registers.PC = registers.PC + 1; } //implement me void POP(void) { registers.PC = registers.PC + 1; } //implement me void JNC(void) { registers.PC = registers.PC + 1; } //implement me void SUBB(void) { registers.PC = registers.PC + 1; } //implement me void PCALL(void) { registers.PC = registers.PC + 1; } //implement me void IN(void) { registers.PC = registers.PC + 1; } //implement me void INC(void) { registers.PC = registers.PC + 1; } //implement me void XRL(void) { registers.PC = registers.PC + 1; } //implement me void SUB(void) { registers.PC = registers.PC + 1; } //implement me void RR(void) { registers.PC = registers.PC + 1; } //implement me void SJMP(void) { registers.PC = registers.PC + 1; } //implement me void RETI(void) { registers.PC = registers.PC + 1; } //implement me void RET(void) { registers.PC = registers.PC + 1; } //implement me void INT(void) { registers.PC = registers.PC + 1; } //implement me void ADD(void) { registers.PC = registers.PC + 1; } //implement me void ADDC(void) { registers.PC = registers.PC + 1; } //implement me void RL(void) { registers.PC = registers.PC + 1; } //implement me void MUL(void) { registers.PC = registers.PC + 1; } //implement me void JC(void) { registers.PC = registers.PC + 1; } //implement me void JMP(void) { registers.PC = registers.PC + 1; } //implement me void DJNZ(void) { registers.PC = registers.PC + 1; } /* 0x09 - CLR C * 0x0B - CLR BS * 0x0D - CLR IE */ void CLR(void) { switch (op) { case 0x09: registers.flags = registers.flags ^ 0x80; break; case 0x0B: registers.flags = registers.flags ^ 0x01; break; case 0x0D: registers.flags = registers.flags ^ 0x02; break; } registers.PC = registers.PC + 1; } //implement me void JZ(void) { registers.PC = registers.PC + 1; } //implement me void JPE(void) { registers.PC = registers.PC + 1; } //implement me void LAF(void) { registers.PC = registers.PC + 1; } //implement me void MOV(void) { registers.PC = registers.PC + 1; } //implement me void RLC(void) { registers.PC = registers.PC + 1; } //implement me void JS(void) { registers.PC = registers.PC + 1; } //implement me void ORL(void) { registers.PC = registers.PC + 1; } //implement me void CJNE(void) { registers.PC = registers.PC + 1; } //implement me void XCSD(void) { registers.PC = registers.PC + 1; } //implement me void LCALL(void) { registers.PC = registers.PC + 1; } //implement me void DA(void) { registers.PC = registers.PC + 1; } //implement me void NOP(void) { registers.PC = registers.PC + 1; } //implement me void SFA(void) { registers.PC = registers.PC + 1; } //implement me void CPL(void) { registers.PC = registers.PC + 1; } //implement me void PUSH(void) { registers.PC = registers.PC + 1; } //implement me void DIV(void) { registers.PC = registers.PC + 1; } //implement me void DEC(void) { registers.PC = registers.PC + 1; } //implement me void OUT(void) { registers.PC = registers.PC + 1; } //implement me void PJMP(void) { registers.PC = registers.PC + 1; }