newoswan/source/nec/necea.h
2021-04-05 14:19:35 +01:00

218 lines
5.0 KiB
C

/*
* NewOswan
* necea.h:
* Based on the original Oswan-unix
* Copyright (c) 2014-2021 986-Studio. All rights reserved.
*
*/
static uint32_t EA;
static uint16_t EO;
static uint16_t E16;
static unsigned EA_000(void)
{
EO = I.regs.w[BW] + I.regs.w[IX];
EA = DefaultBase(DS) + EO;
return EA;
}
static unsigned EA_001(void)
{
EO = I.regs.w[BW] + I.regs.w[IY];
EA = DefaultBase(DS) + EO;
return EA;
}
static unsigned EA_002(void)
{
EO = I.regs.w[BP] + I.regs.w[IX];
EA = DefaultBase(SS) + EO;
return EA;
}
static unsigned EA_003(void)
{
EO = I.regs.w[BP] + I.regs.w[IY];
EA = DefaultBase(SS) + EO;
return EA;
}
static unsigned EA_004(void)
{
EO = I.regs.w[IX];
EA = DefaultBase(DS) + EO;
return EA;
}
static unsigned EA_005(void)
{
EO = I.regs.w[IY];
EA = DefaultBase(DS) + EO;
return EA;
}
static unsigned EA_006(void)
{
EO = FETCH;
EO += FETCH << 8;
EA = DefaultBase(DS) + EO;
return EA;
}
static unsigned EA_007(void)
{
EO = I.regs.w[BW];
EA = DefaultBase(DS) + EO;
return EA;
}
static unsigned EA_100(void)
{
EO = (I.regs.w[BW] + I.regs.w[IX] + (int8_t)FETCH);
EA = DefaultBase(DS) + EO;
return EA;
}
static unsigned EA_101(void)
{
EO = (I.regs.w[BW] + I.regs.w[IY] + (int8_t)FETCH);
EA = DefaultBase(DS) + EO;
return EA;
}
static unsigned EA_102(void)
{
EO = (I.regs.w[BP] + I.regs.w[IX] + (int8_t)FETCH);
EA = DefaultBase(SS) + EO;
return EA;
}
static unsigned EA_103(void)
{
EO = (I.regs.w[BP] + I.regs.w[IY] + (int8_t)FETCH);
EA = DefaultBase(SS) + EO;
return EA;
}
static unsigned EA_104(void)
{
EO = (I.regs.w[IX] + (int8_t)FETCH);
EA = DefaultBase(DS) + EO;
return EA;
}
static unsigned EA_105(void)
{
EO = (I.regs.w[IY] + (int8_t)FETCH);
EA = DefaultBase(DS) + EO;
return EA;
}
static unsigned EA_106(void)
{
EO = (I.regs.w[BP] + (int8_t)FETCH);
EA = DefaultBase(SS) + EO;
return EA;
}
static unsigned EA_107(void)
{
EO = (I.regs.w[BW] + (int8_t)FETCH);
EA = DefaultBase(DS) + EO;
return EA;
}
static unsigned EA_200(void)
{
E16 = FETCH;
E16 += FETCH << 8;
EO = I.regs.w[BW] + I.regs.w[IX] + (int16_t)E16;
EA = DefaultBase(DS) + EO;
return EA;
}
static unsigned EA_201(void)
{
E16 = FETCH;
E16 += FETCH << 8;
EO = I.regs.w[BW] + I.regs.w[IY] + (int16_t)E16;
EA = DefaultBase(DS) + EO;
return EA;
}
static unsigned EA_202(void)
{
E16 = FETCH;
E16 += FETCH << 8;
EO = I.regs.w[BP] + I.regs.w[IX] + (int16_t)E16;
EA = DefaultBase(SS) + EO;
return EA;
}
static unsigned EA_203(void)
{
E16 = FETCH;
E16 += FETCH << 8;
EO = I.regs.w[BP] + I.regs.w[IY] + (int16_t)E16;
EA = DefaultBase(SS) + EO;
return EA;
}
static unsigned EA_204(void)
{
E16 = FETCH;
E16 += FETCH << 8;
EO = I.regs.w[IX] + (int16_t)E16;
EA = DefaultBase(DS) + EO;
return EA;
}
static unsigned EA_205(void)
{
E16 = FETCH;
E16 += FETCH << 8;
EO = I.regs.w[IY] + (int16_t)E16;
EA = DefaultBase(DS) + EO;
return EA;
}
static unsigned EA_206(void)
{
E16 = FETCH;
E16 += FETCH << 8;
EO = I.regs.w[BP] + (int16_t)E16;
EA = DefaultBase(SS) + EO;
return EA;
}
static unsigned EA_207(void)
{
E16 = FETCH;
E16 += FETCH << 8;
EO = I.regs.w[BW] + (int16_t)E16;
EA = DefaultBase(DS) + EO;
return EA;
}
static unsigned (*GetEA[192])(void) =
{
EA_000, EA_001, EA_002, EA_003, EA_004, EA_005, EA_006, EA_007, EA_000, EA_001, EA_002, EA_003, EA_004, EA_005,
EA_006, EA_007, EA_000, EA_001, EA_002, EA_003, EA_004, EA_005, EA_006, EA_007, EA_000, EA_001, EA_002, EA_003,
EA_004, EA_005, EA_006, EA_007, EA_000, EA_001, EA_002, EA_003, EA_004, EA_005, EA_006, EA_007, EA_000, EA_001,
EA_002, EA_003, EA_004, EA_005, EA_006, EA_007, EA_000, EA_001, EA_002, EA_003, EA_004, EA_005, EA_006, EA_007,
EA_000, EA_001, EA_002, EA_003, EA_004, EA_005, EA_006, EA_007,
EA_100, EA_101, EA_102, EA_103, EA_104, EA_105, EA_106, EA_107, EA_100, EA_101, EA_102, EA_103, EA_104, EA_105,
EA_106, EA_107, EA_100, EA_101, EA_102, EA_103, EA_104, EA_105, EA_106, EA_107, EA_100, EA_101, EA_102, EA_103,
EA_104, EA_105, EA_106, EA_107, EA_100, EA_101, EA_102, EA_103, EA_104, EA_105, EA_106, EA_107, EA_100, EA_101,
EA_102, EA_103, EA_104, EA_105, EA_106, EA_107, EA_100, EA_101, EA_102, EA_103, EA_104, EA_105, EA_106, EA_107,
EA_100, EA_101, EA_102, EA_103, EA_104, EA_105, EA_106, EA_107,
EA_200, EA_201, EA_202, EA_203, EA_204, EA_205, EA_206, EA_207, EA_200, EA_201, EA_202, EA_203, EA_204, EA_205,
EA_206, EA_207, EA_200, EA_201, EA_202, EA_203, EA_204, EA_205, EA_206, EA_207, EA_200, EA_201, EA_202, EA_203,
EA_204, EA_205, EA_206, EA_207, EA_200, EA_201, EA_202, EA_203, EA_204, EA_205, EA_206, EA_207, EA_200, EA_201,
EA_202, EA_203, EA_204, EA_205, EA_206, EA_207, EA_200, EA_201, EA_202, EA_203, EA_204, EA_205, EA_206, EA_207,
EA_200, EA_201, EA_202, EA_203, EA_204, EA_205, EA_206, EA_207
};