308 lines
5.0 KiB
C
308 lines
5.0 KiB
C
|
/*++
|
|||
|
|
|||
|
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);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|