mirror of https://github.com/JorjBauer/aiie.git
added basic About menu
This commit is contained in:
parent
fb670a1d36
commit
d001f6cc41
85
bios.cpp
85
bios.cpp
|
@ -24,11 +24,14 @@ enum {
|
||||||
ACT_RESTORE = 14,
|
ACT_RESTORE = 14,
|
||||||
ACT_PRIMODE = 15,
|
ACT_PRIMODE = 15,
|
||||||
ACT_SPEED = 16,
|
ACT_SPEED = 16,
|
||||||
|
ACT_ABOUT = 17,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define NUM_TITLES 3
|
#define NUM_TITLES 4
|
||||||
const char *menuTitles[NUM_TITLES] = { "VM", "Hardware", "Disks" };
|
const char *menuTitles[NUM_TITLES] = { "Aiie", "VM", "Hardware", "Disks" };
|
||||||
const uint8_t titleWidths[NUM_TITLES] = { 28, 80, 45 };
|
const uint8_t titleWidths[NUM_TITLES] = {45 , 28, 80, 45 };
|
||||||
|
|
||||||
|
const uint8_t aiieActions[] = { ACT_ABOUT };
|
||||||
|
|
||||||
const uint8_t vmActions[] = { ACT_EXIT, ACT_RESET, ACT_COLDBOOT, ACT_MONITOR,
|
const uint8_t vmActions[] = { ACT_EXIT, ACT_RESET, ACT_COLDBOOT, ACT_MONITOR,
|
||||||
ACT_DEBUG, ACT_SUSPEND, ACT_RESTORE };
|
ACT_DEBUG, ACT_SUSPEND, ACT_RESTORE };
|
||||||
|
@ -56,7 +59,7 @@ const char *staticPathConcat(const char *rootPath, const char *filePath)
|
||||||
|
|
||||||
BIOS::BIOS()
|
BIOS::BIOS()
|
||||||
{
|
{
|
||||||
selectedMenu = 0;
|
selectedMenu = 1;
|
||||||
selectedMenuItem = 0;
|
selectedMenuItem = 0;
|
||||||
|
|
||||||
selectedFile = -1;
|
selectedFile = -1;
|
||||||
|
@ -133,6 +136,9 @@ bool BIOS::runUntilDone()
|
||||||
g_displayType %= 4; // FIXME: abstract max #
|
g_displayType %= 4; // FIXME: abstract max #
|
||||||
((AppleDisplay*)g_display)->displayTypeChanged();
|
((AppleDisplay*)g_display)->displayTypeChanged();
|
||||||
break;
|
break;
|
||||||
|
case ACT_ABOUT:
|
||||||
|
showAbout();
|
||||||
|
break;
|
||||||
case ACT_SPEED:
|
case ACT_SPEED:
|
||||||
currentCPUSpeedIndex++;
|
currentCPUSpeedIndex++;
|
||||||
currentCPUSpeedIndex %= 4;
|
currentCPUSpeedIndex %= 4;
|
||||||
|
@ -310,15 +316,19 @@ int8_t BIOS::getCurrentMenuAction()
|
||||||
int8_t ret = -1;
|
int8_t ret = -1;
|
||||||
|
|
||||||
switch (selectedMenu) {
|
switch (selectedMenu) {
|
||||||
case 0: // VM
|
case 0: // Aiie
|
||||||
|
if (isActionActive(aiieActions[selectedMenuItem]))
|
||||||
|
return aiieActions[selectedMenuItem];
|
||||||
|
break;
|
||||||
|
case 1: // VM
|
||||||
if (isActionActive(vmActions[selectedMenuItem]))
|
if (isActionActive(vmActions[selectedMenuItem]))
|
||||||
return vmActions[selectedMenuItem];
|
return vmActions[selectedMenuItem];
|
||||||
break;
|
break;
|
||||||
case 1: // Hardware
|
case 2: // Hardware
|
||||||
if (isActionActive(hardwareActions[selectedMenuItem]))
|
if (isActionActive(hardwareActions[selectedMenuItem]))
|
||||||
return hardwareActions[selectedMenuItem];
|
return hardwareActions[selectedMenuItem];
|
||||||
break;
|
break;
|
||||||
case 2: // Disks
|
case 3: // Disks
|
||||||
if (isActionActive(diskActions[selectedMenuItem]))
|
if (isActionActive(diskActions[selectedMenuItem]))
|
||||||
return diskActions[selectedMenuItem];
|
return diskActions[selectedMenuItem];
|
||||||
break;
|
break;
|
||||||
|
@ -337,6 +347,7 @@ bool BIOS::isActionActive(int8_t action)
|
||||||
case ACT_MONITOR:
|
case ACT_MONITOR:
|
||||||
case ACT_DISPLAYTYPE:
|
case ACT_DISPLAYTYPE:
|
||||||
case ACT_SPEED:
|
case ACT_SPEED:
|
||||||
|
case ACT_ABOUT:
|
||||||
case ACT_DEBUG:
|
case ACT_DEBUG:
|
||||||
case ACT_PRIMODE:
|
case ACT_PRIMODE:
|
||||||
case ACT_DISK1:
|
case ACT_DISK1:
|
||||||
|
@ -357,6 +368,29 @@ bool BIOS::isActionActive(int8_t action)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BIOS::DrawAiieMenu()
|
||||||
|
{
|
||||||
|
if (selectedMenuItem < 0)
|
||||||
|
selectedMenuItem = sizeof(aiieActions)-1;
|
||||||
|
selectedMenuItem %= sizeof(aiieActions);
|
||||||
|
|
||||||
|
char buf[40];
|
||||||
|
for (int i=0; i<sizeof(aiieActions); i++) {
|
||||||
|
switch (aiieActions[i]) {
|
||||||
|
case ACT_ABOUT:
|
||||||
|
sprintf(buf, "About...");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isActionActive(aiieActions[i])) {
|
||||||
|
g_display->drawString(selectedMenuItem == i ? M_SELECTED : M_NORMAL, 10, 20 + 14 * i, buf);
|
||||||
|
} else {
|
||||||
|
g_display->drawString(selectedMenuItem == i ? M_SELECTDISABLED : M_DISABLED, 10, 20 + 14 * i,
|
||||||
|
buf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void BIOS::DrawVMMenu()
|
void BIOS::DrawVMMenu()
|
||||||
{
|
{
|
||||||
if (selectedMenuItem < 0)
|
if (selectedMenuItem < 0)
|
||||||
|
@ -570,13 +604,16 @@ void BIOS::DrawDisksMenu()
|
||||||
void BIOS::DrawCurrentMenu()
|
void BIOS::DrawCurrentMenu()
|
||||||
{
|
{
|
||||||
switch (selectedMenu) {
|
switch (selectedMenu) {
|
||||||
case 0: // VM
|
case 0: // Aiie
|
||||||
|
DrawAiieMenu();
|
||||||
|
break;
|
||||||
|
case 1: // VM
|
||||||
DrawVMMenu();
|
DrawVMMenu();
|
||||||
break;
|
break;
|
||||||
case 1: // Hardware
|
case 2: // Hardware
|
||||||
DrawHardwareMenu();
|
DrawHardwareMenu();
|
||||||
break;
|
break;
|
||||||
case 2: // Disks
|
case 3: // Disks
|
||||||
DrawDisksMenu();
|
DrawDisksMenu();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -726,3 +763,31 @@ uint8_t BIOS::GatherFilenames(uint8_t pageOffset)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BIOS::showAbout()
|
||||||
|
{
|
||||||
|
g_display->clrScr();
|
||||||
|
|
||||||
|
g_display->drawString(M_SELECTED,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
"Aiie! - an Apple //e emulator");
|
||||||
|
|
||||||
|
g_display->drawString(M_NORMAL,
|
||||||
|
15, 20,
|
||||||
|
"(c) 2017 Jorj Bauer");
|
||||||
|
|
||||||
|
g_display->drawString(M_NORMAL,
|
||||||
|
15, 38,
|
||||||
|
"https://github.com/JorjBauer/aiie/");
|
||||||
|
|
||||||
|
g_display->drawString(M_NORMAL,
|
||||||
|
0,
|
||||||
|
200,
|
||||||
|
"Press any key");
|
||||||
|
|
||||||
|
g_display->flush();
|
||||||
|
|
||||||
|
while (!g_keyboard->kbhit())
|
||||||
|
;
|
||||||
|
g_keyboard->read(); // throw out the keypress
|
||||||
|
}
|
||||||
|
|
3
bios.h
3
bios.h
|
@ -21,6 +21,7 @@ class BIOS {
|
||||||
private:
|
private:
|
||||||
void DrawMenuBar();
|
void DrawMenuBar();
|
||||||
void DrawCurrentMenu();
|
void DrawCurrentMenu();
|
||||||
|
void DrawAiieMenu();
|
||||||
void DrawVMMenu();
|
void DrawVMMenu();
|
||||||
void DrawHardwareMenu();
|
void DrawHardwareMenu();
|
||||||
void DrawDisksMenu();
|
void DrawDisksMenu();
|
||||||
|
@ -40,6 +41,8 @@ class BIOS {
|
||||||
|
|
||||||
void stripDirectory();
|
void stripDirectory();
|
||||||
|
|
||||||
|
void showAbout();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int8_t selectedFile;
|
int8_t selectedFile;
|
||||||
char fileDirectory[BIOS_MAXFILES][BIOS_MAXPATH+1];
|
char fileDirectory[BIOS_MAXFILES][BIOS_MAXPATH+1];
|
||||||
|
|
Loading…
Reference in New Issue