/*++ 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); } } }