Код:
static UINT16 HR0 = 0, // Регистры MMU HALT-режима
HR1 = 0,
HR2 = 0,
HR3 = 0,
HR4 = 0,
HR5 = 0,
HR6 = 0,
HR7 = 0;
CPU_RgRdWProc[0x0280] = CPU_RdW_HR0; // Регистр HR0 (чтение)
CPU_RgWrWProc[0x0280] = CPU_WrW_HR0; // Регистр HR0
CPU_RgRdWProc[0x0282] = CPU_RdW_HR1; // Регистр HR1 (чтение)
CPU_RgWrWProc[0x0282] = CPU_WrW_HR1; // Регистр HR1
CPU_RgRdWProc[0x0284] = CPU_RdW_HR2; // Регистр HR2 (чтение)
CPU_RgWrWProc[0x0284] = CPU_WrW_HR2; // Регистр HR2
CPU_RgRdWProc[0x0286] = CPU_RdW_HR3; // Регистр HR3 (чтение)
CPU_RgWrWProc[0x0286] = CPU_WrW_HR3; // Регистр HR3
CPU_RgRdWProc[0x0288] = CPU_RdW_HR4; // Регистр HR4 (чтение)
CPU_RgWrWProc[0x0288] = CPU_WrW_HR4; // Регистр HR4
CPU_RgRdWProc[0x028A] = CPU_RdW_HR5; // Регистр HR5 (чтение)
CPU_RgWrWProc[0x028A] = CPU_WrW_HR5; // Регистр HR5
CPU_RgRdWProc[0x028C] = CPU_RdW_HR6; // Регистр HR6 (чтение)
CPU_RgWrWProc[0x028C] = CPU_WrW_HR6; // Регистр HR6
CPU_RgRdWProc[0x028E] = CPU_RdW_HR7; // Регистр HR7 (чтение)
CPU_RgWrWProc[0x028E] = CPU_WrW_HR7; // Регистр HR7
printf("HALT MMU: %03X, %03X, %03X, %03X, %03X, %03X, %03X, %03X\nUSER MMU: %03X, %03X, %03X, %03X, %03X, %03X, %03X, %03X\n",
HR0 >> 4, HR1 >> 4, HR2 >> 4, HR3 >> 4, HR4 >> 4, HR5 >> 4, HR6 >> 4, HR7 >> 4,
UR0 >> 4, UR1 >> 4, UR2 >> 4, UR3 >> 4, UR4 >> 4, UR5 >> 4, UR6 >> 4, UR7 >> 4);
static UINT16 FASTC CPU_RdW_HR0(void) // HR0
{
//printf("Read word from CPU register HR0 from location PC=0x%X\n",
// (UINT16)CPU->l.PC);
PPI_B |= 0x0002; // EF1 = 1
PPI_B |= 0x0001; // EF0 = 1
return(HR0);
}
static UINT16 FASTC CPU_RdW_HR1(void) // HR1
{
//printf("Read word from CPU register HR1 from location PC=0x%X\n",
// (UINT16)CPU->l.PC);
return(HR1);
}
static UINT16 FASTC CPU_RdW_HR2(void) // HR2
{
//printf("Read word from CPU register HR2 from location PC=0x%X\n",
// (UINT16)CPU->l.PC);
return(HR2);
}
static UINT16 FASTC CPU_RdW_HR3(void) // HR3
{
//printf("Read word from CPU register HR3 from location PC=0x%X\n",
// (UINT16)CPU->l.PC);
return(HR3);
}
static UINT16 FASTC CPU_RdW_HR4(void) // HR4
{
//printf("Read word from CPU register HR4 from location PC=0x%X\n",
// (UINT16)CPU->l.PC);
return(HR4);
}
static UINT16 FASTC CPU_RdW_HR5(void) // HR5
{
//printf("Read word from CPU register HR5 from location PC=0x%X\n",
// (UINT16)CPU->l.PC);
return(HR5);
}
static UINT16 FASTC CPU_RdW_HR6(void) // HR6
{
//printf("Read word from CPU register HR6 from location PC=0x%X\n",
// (UINT16)CPU->l.PC);
return(HR6);
}
static UINT16 FASTC CPU_RdW_HR7(void) // HR7
{
//printf("Read word from CPU register HR7 from location PC=0x%X\n",
// (UINT16)CPU->l.PC);
return(HR7);
}
static void FASTC CPU_WrW_HR0(UINT16 Data) // [T] HR0
{
//printf("Write word 0x%04X to CPU register HR0 from location PC = 0x%X\n",
// Data, (UINT16)CPU->l.PC);
HR0 = Data;
return;
}
static void FASTC CPU_WrW_HR1(UINT16 Data) // [T] HR1
{
//printf("Write word 0x%04X to CPU register HR1 from location PC = 0x%X\n",
// Data, (UINT16)CPU->l.PC);
HR1 = Data;
return;
}
static void FASTC CPU_WrW_HR2(UINT16 Data) // [T] HR2
{
//printf("Write word 0x%04X to CPU register HR2 from location PC = 0x%X\n",
// Data, (UINT16)CPU->l.PC);
HR2 = Data;
SetMMU_Halt(2, Data);
return;
}
static void FASTC CPU_WrW_HR3(UINT16 Data) // [T] HR3
{
//printf("Write word 0x%04X to CPU register HR3 from location PC = 0x%X\n",
// Data, (UINT16)CPU->l.PC);
HR3 = Data;
SetMMU_Halt(3, Data);
return;
}
static void FASTC CPU_WrW_HR4(UINT16 Data) // [T] HR4
{
//printf("Write word 0x%04X to CPU register HR4 from location PC = 0x%X\n",
// Data, (UINT16)CPU->l.PC);
HR4 = Data;
SetMMU_Halt(4, Data);
return;
}
static void FASTC CPU_WrW_HR5(UINT16 Data) // [T] HR5
{
//printf("Write word 0x%04X to CPU register HR5 from location PC = 0x%X\n",
// Data, (UINT16)CPU->l.PC);
HR5 = Data;
SetMMU_Halt(5, Data);
return;
}
static void FASTC CPU_WrW_HR6(UINT16 Data) // [T] HR6
{
//printf("Write word 0x%04X to CPU register HR6 from location PC = 0x%X\n",
// Data, (UINT16)CPU->l.PC);
HR6 = Data;
SetMMU_Halt(6, Data);
return;
}
static void FASTC CPU_WrW_HR7(UINT16 Data) // [T] HR7
{
//printf("Write word 0x%04X to unrealized CPU register HR7 from location PC = 0x%X\n",
// Data, (UINT16)CPU->l.PC);
HR7 = Data;
return;
}