Add ocpu DEC instruction

This commit is contained in:
g1n 2021-11-06 19:58:16 +02:00
parent bf4b7feb29
commit 87f63a5afd
2 changed files with 81 additions and 0 deletions

View File

@ -572,6 +572,86 @@ void ocpu_execute() {
ocpu.F++;
break;
default:
printf("Wrong register: %02X\n", reg);
return;
}
break;
case INS_DEC:
reg = ocpu_fetch_byte();
switch(reg) {
case REG_AL:
ocpu.A--;
ocpu.AL = ocpu.A & 0xFF;
break;
case REG_AH:
ocpu.A--;
ocpu.AH = ocpu.A >> 8;
break;
case REG_A:
ocpu.A--;
break;
case REG_BL:
ocpu.B--;
ocpu.BL = ocpu.B & 0xFF;
break;
case REG_BH:
ocpu.B--;
ocpu.BH = ocpu.B >> 8;
break;
case REG_B:
ocpu.B--;
break;
case REG_CL:
ocpu.C--;
ocpu.CL = ocpu.C & 0xFF;
break;
case REG_CH:
ocpu.C--;
ocpu.CH = ocpu.C >> 8;
break;
case REG_C:
ocpu.C--;
break;
case REG_DL:
ocpu.D--;
ocpu.DL = ocpu.D & 0xFF;
break;
case REG_DH:
ocpu.D--;
ocpu.DH = ocpu.D >> 8;
break;
case REG_D:
ocpu.D--;
break;
case REG_EL:
ocpu.E--;
ocpu.EL = ocpu.E & 0xFF;
break;
case REG_EH:
ocpu.E--;
ocpu.EH = ocpu.E >> 8;
break;
case REG_E:
ocpu.E--;
break;
case REG_FL:
ocpu.F--;
ocpu.FL = ocpu.F & 0xFF;
break;
case REG_FH:
ocpu.F--;
ocpu.FH = ocpu.F >> 8;
break;
case REG_F:
ocpu.F--;
break;
default:
printf("Wrong register: %02X\n", reg);
return;

View File

@ -36,6 +36,7 @@
#define INS_ADD_IM 0x10
#define INS_ADD_REG 0xB0
#define INS_INC 0x15
#define INS_DEC 0x16
struct OCPU_MEMORY {
byte memory[MAX_MEMORY];