NT4/private/ntos/fw/mips/jzsetup.c

308 lines
5.0 KiB
C
Raw Normal View History

2001-01-01 00:00:00 +01:00
/*++
Copyright (c) 1991, 1992 Microsoft Corporation
Module Name:
jzsetup.c
Abstract:
This program loads up the Jazz non-volatile ram.
Author:
David M. Robinson (davidro) 9-Aug-1991
Revision History:
--*/
#include "jzsetup.h"
//
// Routine prototypes.
//
BOOLEAN
JzInitializationMenu(
VOID
);
VOID
JzBootMenu(
VOID
);
VOID
JzEnvironmentMenu(
VOID
);
//
// Static data.
//
ULONG ScsiHostId;
PCHAR Banner1 = " JAZZ Setup Program Version 0.17";
PCHAR Banner2 = " Copyright (c) 1993 Microsoft Corporation";
ULONG
JzInitializeScsiHostId (
VOID
)
/*++
Routine Description:
This routine gets the ScsiHostId from the configuration database if if
exists.
Arguments:
None.
Return Value:
The ScsiHostId is read from the ScsiController configuration component
if it exists. If not, a value of 7 is returned.
--*/
{
PCONFIGURATION_COMPONENT Component;
PCM_SCSI_DEVICE_DATA ScsiDeviceData;
UCHAR Buffer[sizeof(CM_PARTIAL_RESOURCE_LIST) +
(sizeof(CM_PARTIAL_RESOURCE_DESCRIPTOR) * 5) +
sizeof(CM_SCSI_DEVICE_DATA)];
PCM_PARTIAL_RESOURCE_LIST Descriptor = (PCM_PARTIAL_RESOURCE_LIST)&Buffer;
ULONG Count;
if (((Component = ArcGetComponent("scsi(0)")) != NULL) &&
(Component->Class == AdapterClass) && (Component->Type == ScsiAdapter) &&
(ArcGetConfigurationData((PVOID)Descriptor, Component) == ESUCCESS) &&
((Count = Descriptor->Count) < 6)) {
ScsiDeviceData = (PCM_SCSI_DEVICE_DATA)&Descriptor->PartialDescriptors[Count];
if (ScsiDeviceData->HostIdentifier > 7) {
return(7);
} else {
return(ScsiDeviceData->HostIdentifier);
}
}
return(7);
}
VOID
JzSetup (
VOID
)
/*++
Routine Description:
This routine is the top level of the setup program.
Arguments:
None.
Return Value:
None.
--*/
{
BOOLEAN Reboot;
LONG DefaultChoice = 0;
//
// Setup is running.
//
SetupIsRunning = TRUE;
//
// Initialize the ScsiHostId Value.
//
ScsiHostId = JzInitializeScsiHostId();
//
// Set up the screen.
//
JzSetScreenAttributes( TRUE, FALSE, FALSE);
JzSetScreenColor(ArcColorWhite, ArcColorBlue);
//
// Loop on choices until exit is selected.
//
Reboot = FALSE;
while (TRUE) {
DefaultChoice = JzGetSelection(JzSetupChoices,
NUMBER_OF_JZ_SETUP_CHOICES,
DefaultChoice);
//
// If the escape key was pressed, exit.
//
if (DefaultChoice == -1) {
DefaultChoice = 0x7fffffff;
}
//
// Switch based on the action.
//
switch (DefaultChoice) {
//
// Change or initialize the configuration.
//
case 0:
Reboot = Reboot || JzInitializationMenu();
break;
//
// Manage the boot process.
//
case 1:
JzBootMenu();
break;
//
// Exit.
//
default:
if (Reboot) {
ArcReboot();
}
return;
}
}
}
BOOLEAN
JzInitializationMenu(
VOID
)
/*++
Routine Description:
This routine displays the configuration menu.
Arguments:
None.
Return Value:
If a system reboot is required, TRUE is returned, otherwise FALSE is
returned.
--*/
{
BOOLEAN Reboot;
LONG DefaultChoice = 0;
//
// Loop on choices until exit is selected.
//
Reboot = FALSE;
while (TRUE) {
DefaultChoice = JzGetSelection(ConfigurationChoices,
NUMBER_OF_CONFIGURATION_CHOICES,
DefaultChoice);
//
// If the escape key was pressed, return.
//
if (DefaultChoice == -1) {
DefaultChoice = 0x7fffffff;
}
//
// Switch based on the action.
//
switch (DefaultChoice) {
//
// Load default configuration.
//
case 0:
Reboot = Reboot || JzMakeDefaultConfiguration();
break;
//
// Load default environment.
//
case 1:
JzMakeDefaultEnvironment();
break;
//
// Edit an environment variable
//
case 2:
JzEditVariable();
break;
//
// Set the RTC.
//
case 3:
JzSetTime();
break;
//
// Change the ethernet address.
//
case 4:
JzSetEthernet();
break;
//
// Run the debug monitor.
//
case 5:
SetupIsRunning = FALSE;
ArcEnterInteractiveMode();
SetupIsRunning = TRUE;
break;
//
// Return to main menu.
//
default:
return(Reboot);
}
}
}