// ----------------------------------------------------------------------------
// Copyright (c) 1992 Olivetti
//
// File:            eisamisc.c
//
// Description:     Miscellaneous EISA routines.
// ----------------------------------------------------------------------------
//

#include "fwp.h"
#include "oli2msft.h"
#include "arceisa.h"
#include "inc.h"
#include "string.h"
#include "debug.h"



// ----------------------------------------------------------------------------
// PROCEDURE:           Fw2UcharToUlongLSB:
//
// DESCRIPTION:         This function converts 2 uchars to an ulong.
//
// ARGUMENTS:           String          String holding 2 uchars:
//
//                                      String[0] LSB
//                                      String[1] MSB
//
// RETURN:              ULONG           corrisponding ulong value:
//
//                                              0       +
//                                              0       +
//                                      String[1] <<  8 +
//                                      String[0]
//
//
//
// ASSUMPTIONS:         none
//
// CALLS:               none
//
// GLOBALS:             none
//
// NOTES:               none
// ----------------------------------------------------------------------------
//

ULONG
Fw2UcharToUlongLSB
    (
    IN PUCHAR String
    )
{
    PRINTDBG("Fw2UcharToUlongLSB\n\r"); // DEBUG SUPPORT

    return ((ULONG)(String[1]) << BITSXBYTE) + (ULONG)(String[0]);
}








// ----------------------------------------------------------------------------
// PROCEDURE:           Fw3UcharToUlongLSB:
//
// DESCRIPTION:         This function converts 3 uchars to an ulong.
//
// ARGUMENTS:           String          String holding 3 uchars:
//
//                                      String[0] LSB
//                                      String[1] 2nd
//                                      String[2] MSB
//
// RETURN:              ULONG           corrisponding ulong value:
//
//                                              0       +
//                                      String[2] << 16 +
//                                      String[1] <<  8 +
//                                      String[0]
//
//
//
// ASSUMPTIONS:         none
//
// CALLS:               none
//
// GLOBALS:             none
//
// NOTES:               none
// ----------------------------------------------------------------------------
//

ULONG
Fw3UcharToUlongLSB
    (
    IN PUCHAR String
    )
{
    PRINTDBG("Fw2UcharToUlongLSB\n\r"); // DEBUG SUPPORT

    return  ((ULONG)(String[2]) << 2*BITSXBYTE) +
            ((ULONG)(String[1]) <<   BITSXBYTE) +
             (ULONG)(String[0]);
}







// ----------------------------------------------------------------------------
// PROCEDURE:           Fw4UcharToUlongLSB:
//
// DESCRIPTION:         This function converts 4 uchars to an ulong.
//
// ARGUMENTS:           String          String holding 4 uchars:
//
//                                      String[0] LSB
//                                      String[1] 2nd
//                                      String[2] 3rd
//                                      String[3] MSB
//
// RETURN:              ULONG           corrisponding ulong value:
//
//                                      String[3] << 24 +
//                                      String[2] << 16 +
//                                      String[1] <<  8 +
//                                      String[0]
//
//
//
// ASSUMPTIONS:         none
//
// CALLS:
//
// GLOBALS:
//
// NOTES:
// ----------------------------------------------------------------------------
//

ULONG
Fw4UcharToUlongLSB
        (
        IN PUCHAR String
        )
{
    PRINTDBG("Fw4UcharToUlongLSB\n\r"); // DEBUG SUPPORT

    return  ((ULONG)(String[3]) << 3*BITSXBYTE) +
            ((ULONG)(String[2]) << 2*BITSXBYTE) +
            ((ULONG)(String[1]) <<   BITSXBYTE) +
             (ULONG)(String[0]);
}







// ----------------------------------------------------------------------------
// PROCEDURE:           Fw4UcharToUlongMSB:
//
// DESCRIPTION:         This function converts 4 uchars to an ulong.
//
// ARGUMENTS:           String          String holding 4 uchars:
//
//                                      String[0] MSB
//                                      String[1] 3rd
//                                      String[2] 2nd
//                                      String[3] LSB
//
// RETURN:              ULONG           corrisponding ulong value:
//
//                                      String[0] << 24 +
//                                      String[1] << 16 +
//                                      String[2] <<  8 +
//                                      String[3]
//
//
//
// ASSUMPTIONS:         none
//
// CALLS:
//
// GLOBALS:
//
// NOTES:
// ----------------------------------------------------------------------------
//

ULONG
Fw4UcharToUlongMSB
        (
        IN PUCHAR String
        )
{
    PRINTDBG("Fw4UcharToUlongMSB\n\r"); // DEBUG SUPPORT

    return  ((ULONG)(String[0]) << 3*BITSXBYTE) +
            ((ULONG)(String[1]) << 2*BITSXBYTE) +
            ((ULONG)(String[2]) <<   BITSXBYTE) +
             (ULONG)(String[3]);
}




