#include "fdisk.h"␊ |
#include "ramdisk.h"␊ |
#include "gui.h"␊ |
#include "term.h"␊ |
#include "embedded.h"␊ |
#include "pci.h"␊ |
␊ |
|
␊ |
static void updateBootArgs( int key )␊ |
{␊ |
key &= kASCIIKeyMask;␊ |
key = ASCII_KEY(key);␊ |
␊ |
switch ( key )␊ |
{␊ |
case kBackspaceKey:␊ |
case KEY_BKSP:␊ |
if ( gBootArgsPtr > gBootArgs )␊ |
{␊ |
*--gBootArgsPtr = '\0';␊ |
|
␉␉}␊ |
␊ |
␉␉switch (key) {␊ |
␉␉case kReturnKey:␊ |
␉␉case KEY_ENTER:␊ |
␉␉␉if (gui.menu.draw) { ␊ |
␉␉␉␉key=0;␊ |
␉␉␉␉break;␊ |
|
␉␉␉gBIOSDev = menuBVR->biosdev;␊ |
␉␉␉break;␊ |
␊ |
␉␉case kEscapeKey:␊ |
␉␉case KEY_ESC:␊ |
␉␉␉clearBootArgs();␊ |
␉␉␉break;␊ |
␊ |
␉␉case kF5Key:␊ |
␉␉case KEY_F5:␊ |
␉␉␉// New behavior:␊ |
␉␉␉// Clear gBootVolume to restart the loop␊ |
␉␉␉// if the user enabled rescanning the optical drive.␊ |
|
␉␉␉}␊ |
␉␉␉break;␊ |
␊ |
␉␉case kF10Key:␊ |
␉␉case KEY_F10:␊ |
␉␉␉gScanSingleDrive = false;␊ |
␉␉␉scanDisks(gBIOSDev, &bvCount);␊ |
␉␉␉gBootVolume = NULL;␊ |
␉␉␉clearBootArgs();␊ |
␉␉␉break;␊ |
␊ |
␉␉case kTabKey:␊ |
␉␉case KEY_TAB:␊ |
␉␉␉// New behavior:␊ |
␉␉␉// Switch between text & graphic interfaces␊ |
␉␉␉// Only Permitted if started in graphics interface␊ |
|
␉printf("Enter two-digit hexadecimal boot device [%02x]: ", bootdevice);␊ |
␉do {␊ |
␉␉key = getchar();␊ |
␉␉switch (key & kASCIIKeyMask) {␊ |
␉␉case kBackspaceKey:␊ |
␉␉switch (ASCII_KEY(key)) {␊ |
␉␉case KEY_BKSP:␊ |
␉␉␉if (digitsI > 0) {␊ |
␉␉␉␉int x, y, t;␊ |
␉␉␉␉getCursorPositionAndType(&x, &y, &t);␊ |
|
␉␉␉}␊ |
␉␉␉break;␊ |
␊ |
␉␉case kReturnKey:␊ |
␉␉case KEY_ENTER:␊ |
␉␉␉digits[digitsI] = '\0';␊ |
␉␉␉newbootdevice = strtol(digits, &end, 16);␊ |
␉␉␉if (end == digits && *end == '\0') {␊ |
|
␉␉␉break;␊ |
␊ |
␉␉default:␊ |
␉␉␉if (isxdigit(key & kASCIIKeyMask) && digitsI < 2) {␊ |
␉␉␉␉putchar(key & kASCIIKeyMask);␊ |
␉␉␉␉digits[digitsI++] = key & kASCIIKeyMask;␊ |
␉␉␉if (isxdigit(ASCII_KEY(key)) && digitsI < 2) {␊ |
␉␉␉␉putchar(ASCII_KEY(key));␊ |
␉␉␉␉digits[digitsI++] = ASCII_KEY(key);␊ |
␉␉␉} else {␊ |
␉␉␉␉// TODO: Beep or something␊ |
␉␉␉}␊ |
|
bool promptForRescanOption(void)␊ |
{␊ |
␉printf("\nWould you like to enable media rescan option?\nPress ENTER to enable or any key to skip.\n");␊ |
␉if (getchar() == kReturnKey) {␊ |
␉if (getchar() == KEY_ENTER) {␊ |
␉␉return true;␊ |
␉} else {␊ |
␉␉return false;␊ |