Skip to content

Commit

Permalink
[i8048] Cleanup instruction table
Browse files Browse the repository at this point in the history
  • Loading branch information
tgtakaoka committed Apr 20, 2024
1 parent 5de8b3a commit 6ff2ea5
Showing 1 changed file with 15 additions and 41 deletions.
56 changes: 15 additions & 41 deletions src/table_i8048.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -227,15 +227,15 @@ static constexpr uint8_t INDEX_I8048[] PROGMEM = {
1, // TEXT_OUTL
};

static constexpr Entry TABLE_I80C48[] PROGMEM = {
static constexpr Entry TABLE_I80C39[] PROGMEM = {
E0(0x01, TEXT_HALT),
};

static constexpr uint8_t INDEX_I80C48[] PROGMEM = {
static constexpr uint8_t INDEX_I80C39[] PROGMEM = {
0, // TEXT_HALT
};

static constexpr Entry TABLE_MSM80C48[] PROGMEM = {
static constexpr Entry TABLE_MSM80C39[] PROGMEM = {
E2(0x63, TEXT_MOV, M_A, M_P1),
E2(0x73, TEXT_MOV, M_A, M_P2),
E1(0xC0, TEXT_DEC, M_IR),
Expand All @@ -248,7 +248,7 @@ static constexpr Entry TABLE_MSM80C48[] PROGMEM = {
E0(0xE2, TEXT_FRES),
};

static constexpr uint8_t INDEX_MSM80C48[] PROGMEM = {
static constexpr uint8_t INDEX_MSM80C39[] PROGMEM = {
2, // TEXT_DEC
3, // TEXT_DJNZ
7, // TEXT_FLT
Expand All @@ -264,48 +264,22 @@ static constexpr uint8_t INDEX_MSM80C48[] PROGMEM = {

using EntryPage = entry::TableBase<Entry>;

static constexpr EntryPage I8039_PAGES[] PROGMEM = {
{ARRAY_RANGE(TABLE_I8039), ARRAY_RANGE(INDEX_I8039)},
};

static constexpr EntryPage I8048_PAGES[] PROGMEM = {
{ARRAY_RANGE(TABLE_I8048), ARRAY_RANGE(INDEX_I8048)},
{ARRAY_RANGE(TABLE_I8039), ARRAY_RANGE(INDEX_I8039)},
};

static constexpr EntryPage I80C39_PAGES[] PROGMEM = {
{ARRAY_RANGE(TABLE_I8039), ARRAY_RANGE(INDEX_I8039)},
{ARRAY_RANGE(TABLE_I80C48), ARRAY_RANGE(INDEX_I80C48)},
};

static constexpr EntryPage I80C48_PAGES[] PROGMEM = {
{ARRAY_RANGE(TABLE_I8048), ARRAY_RANGE(INDEX_I8048)},
{ARRAY_RANGE(TABLE_I8039), ARRAY_RANGE(INDEX_I8039)},
{ARRAY_RANGE(TABLE_I80C48), ARRAY_RANGE(INDEX_I80C48)},
};

static constexpr EntryPage MSM80C39_PAGES[] PROGMEM = {
{ARRAY_RANGE(TABLE_I8039), ARRAY_RANGE(INDEX_I8039)},
{ARRAY_RANGE(TABLE_I80C48), ARRAY_RANGE(INDEX_I80C48)},
{ARRAY_RANGE(TABLE_MSM80C48), ARRAY_RANGE(INDEX_MSM80C48)},
};

static constexpr EntryPage MSM80C48_PAGES[] PROGMEM = {
{ARRAY_RANGE(TABLE_I8048), ARRAY_RANGE(INDEX_I8048)},
{ARRAY_RANGE(TABLE_I8039), ARRAY_RANGE(INDEX_I8039)},
{ARRAY_RANGE(TABLE_I80C48), ARRAY_RANGE(INDEX_I80C48)},
{ARRAY_RANGE(TABLE_MSM80C48), ARRAY_RANGE(INDEX_MSM80C48)},
static constexpr EntryPage INST_PAGES[] PROGMEM = {
{ARRAY_RANGE(TABLE_I8048), ARRAY_RANGE(INDEX_I8048)}, // 0
{ARRAY_RANGE(TABLE_I8039), ARRAY_RANGE(INDEX_I8039)}, // 1
{ARRAY_RANGE(TABLE_I80C39), ARRAY_RANGE(INDEX_I80C39)}, // 2
{ARRAY_RANGE(TABLE_MSM80C39), ARRAY_RANGE(INDEX_MSM80C39)}, // 3
};

using Cpu = entry::CpuBase<CpuType, EntryPage>;

static constexpr Cpu CPU_TABLE[] PROGMEM = {
{I8039, TEXT_CPU_8039, ARRAY_RANGE(I8039_PAGES)},
{I8048, TEXT_CPU_8048, ARRAY_RANGE(I8048_PAGES)},
{I80C39, TEXT_CPU_80C39, ARRAY_RANGE(I80C39_PAGES)},
{I80C48, TEXT_CPU_80C48, ARRAY_RANGE(I80C48_PAGES)},
{MSM80C39, TEXT_CPU_MSM80C39, ARRAY_RANGE(MSM80C39_PAGES)},
{MSM80C48, TEXT_CPU_MSM80C48, ARRAY_RANGE(MSM80C48_PAGES)},
{I8039, TEXT_CPU_8039, &INST_PAGES[1], &INST_PAGES[2]},
{I80C39, TEXT_CPU_80C39, &INST_PAGES[1], &INST_PAGES[3]},
{MSM80C39, TEXT_CPU_MSM80C39, &INST_PAGES[1], &INST_PAGES[4]},
{I8048, TEXT_CPU_8048, &INST_PAGES[0], &INST_PAGES[2]},
{I80C48, TEXT_CPU_80C48, &INST_PAGES[0], &INST_PAGES[3]},
{MSM80C48, TEXT_CPU_MSM80C48, &INST_PAGES[0], &INST_PAGES[4]},
};

static const Cpu *cpu(CpuType cpuType) {
Expand Down

0 comments on commit 6ff2ea5

Please sign in to comment.