Windows NT 4 Source Compiled! version 2

Discuss Windows 2000, NT, XP and Windows Server 2000, 2003, SBS 2003.
Stephanos
Posts: 297
Joined: Fri Dec 26, 2014 5:38 am
Contact:

Re: Windows NT 4 Source Compiled! version 2

Post by Stephanos »

Update 2015-01-12:
1. A new build profile named 'x86tst' was added. x86tst is an x86fre build with optimisation disabled and full debug symbols.
2. x86chk NTOSKRNL seems to have an issue. It will generate #PF during boot. For now, we're using x86tst build profile.
3. x86tst debug symbols are verified to be functional. This allows the full C source level debugging on the entire NTOS source tree.

The following is WinDbg in kernel debug mode, breakpoint on NtCreateProcess, debugging at C source level using full private debug symbols:
Image

Ludacris
User avatar
Donator
Posts: 601
Joined: Sat Jan 27, 2007 10:56 pm
Location: Vienna, Austria
Contact:

Re: Windows NT 4 Source Compiled! version 2

Post by Ludacris »

Jajan131 wrote:But I wonder...

After getting a source code, how can I convert them to compatible executable ? 8-)

a) you won't get an executable out of this
b) ever tried to compile it or actually heared about compiling?

yourepicfailure
User avatar
Donator
Posts: 1256
Joined: Mon Jul 23, 2012 9:40 pm
Location: Flying high in a DC10

Re: Windows NT 4 Source Compiled! version 2

Post by yourepicfailure »

Ludacris wrote:
Jajan131 wrote:But I wonder...

After getting a source code, how can I convert them to compatible executable ? 8-)

a) you won't get an executable out of this
b) ever tried to compile it or actually heared about compiling?
I don't really think he has.
Anyways, there's a specialized build environment that you utilize to navigate to the directory which contains the source code to the executable/module you want to compile. Say the progman. Navigate to that directory, and execute the build command inside the environment. If all goes well, you won't have to compile other dependencies to resolve that executable/module requires. Then, navigate to the output folder and run what you compiled.
Also, you might want a development IDE to edit the c files because Notepad doesn't seem to register the text formatting in the code.
That's how you convert some code to an executable/module. Questions?
"C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off"
Image
You will never tear me from the grasp of the Pentium M!

Stephanos
Posts: 297
Joined: Fri Dec 26, 2014 5:38 am
Contact:

Re: Windows NT 4 Source Compiled! version 2

Post by Stephanos »

Update 2015-01-12-2:
NTDETECT.COM issue has been resolved.

\nt\private\ntos\boot\detect\i386\diskc.c: line 207

Code: Select all

            mov     al, CMOS_FLOPPY_CONFIG_BYTE
            mov     dx, CMOS_CONTROL_PORT   ; address port
            out     dx, al
            jmp     $ + 2                   ; I/O DELAY
            mov     dx, CMOS_DATA_PORT      ; READ IN REQUESTED CMOS DATA
            in      al, dx
            jmp     $ + 2                   ; I/O DELAY
changed to

Code: Select all

            mov     al, CMOS_FLOPPY_CONFIG_BYTE
            mov     dx, CMOS_CONTROL_PORT   ; address port
            out     dx, al
            jmp     CmosTest_Delay1         ; I/O DELAY
        CmosTest_Delay1:
            mov     dx, CMOS_DATA_PORT      ; READ IN REQUESTED CMOS DATA
            in      al, dx
            jmp     CmosTest_Delay2         ; I/O DELAY
        CmosTest_Delay2:
Our build environment was producing a near jump for jmp $ + 2, and this was causing the target address to be invalid. The new implementation ensures that this issue is completely eliminated.

yourepicfailure
User avatar
Donator
Posts: 1256
Joined: Mon Jul 23, 2012 9:40 pm
Location: Flying high in a DC10

Re: Windows NT 4 Source Compiled! version 2

Post by yourepicfailure »

Stephanos wrote:Update 2015-01-12-2:
NTDETECT.COM issue has been resolved.

\nt\private\ntos\boot\detect\i386\diskc.c: line 207

Code: Select all

            mov     al, CMOS_FLOPPY_CONFIG_BYTE
            mov     dx, CMOS_CONTROL_PORT   ; address port
            out     dx, al
            jmp     $ + 2                   ; I/O DELAY
            mov     dx, CMOS_DATA_PORT      ; READ IN REQUESTED CMOS DATA
            in      al, dx
            jmp     $ + 2                   ; I/O DELAY
changed to

Code: Select all

            mov     al, CMOS_FLOPPY_CONFIG_BYTE
            mov     dx, CMOS_CONTROL_PORT   ; address port
            out     dx, al
            jmp     CmosTest_Delay1         ; I/O DELAY
        CmosTest_Delay1:
            mov     dx, CMOS_DATA_PORT      ; READ IN REQUESTED CMOS DATA
            in      al, dx
            jmp     CmosTest_Delay2         ; I/O DELAY
        CmosTest_Delay2:
Our build environment was producing a near jump for jmp $ + 2, and this was causing the target address to be invalid. The new implementation ensures that this issue is completely eliminated.
So basically, two measly jump lines messed up the whole dang thing? I'd expect that out of a push or move, but jump?
And THAT'S why I love ASM.

What was the equivalent in c? Before and after?
"C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off"
Image
You will never tear me from the grasp of the Pentium M!

Stephanos
Posts: 297
Joined: Fri Dec 26, 2014 5:38 am
Contact:

Re: Windows NT 4 Source Compiled! version 2

Post by Stephanos »

yourepicfailure wrote:
Stephanos wrote:Update 2015-01-12-2:
NTDETECT.COM issue has been resolved.

\nt\private\ntos\boot\detect\i386\diskc.c: line 207

Code: Select all

            mov     al, CMOS_FLOPPY_CONFIG_BYTE
            mov     dx, CMOS_CONTROL_PORT   ; address port
            out     dx, al
            jmp     $ + 2                   ; I/O DELAY
            mov     dx, CMOS_DATA_PORT      ; READ IN REQUESTED CMOS DATA
            in      al, dx
            jmp     $ + 2                   ; I/O DELAY
changed to

Code: Select all

            mov     al, CMOS_FLOPPY_CONFIG_BYTE
            mov     dx, CMOS_CONTROL_PORT   ; address port
            out     dx, al
            jmp     CmosTest_Delay1         ; I/O DELAY
        CmosTest_Delay1:
            mov     dx, CMOS_DATA_PORT      ; READ IN REQUESTED CMOS DATA
            in      al, dx
            jmp     CmosTest_Delay2         ; I/O DELAY
        CmosTest_Delay2:
Our build environment was producing a near jump for jmp $ + 2, and this was causing the target address to be invalid. The new implementation ensures that this issue is completely eliminated.
So basically, two measly jump lines messed up the whole dang thing? I'd expect that out of a push or move, but jump?
And THAT'S why I love ASM.
In x86, a short jump (8-bit relative) is encoded as a 2-byte instruction and a near jump (16-bit relative) is encoded as a 3-byte instruction. Since our compiler was producing a near jump, jmp $ + 2 would jump to the second byte of the 3 byte near jump instruction; thereby, completely messing up the instruction decoder.

There was no equivalent in C. It was inline asm block.
Last edited by Stephanos on Wed Jan 14, 2015 6:32 pm, edited 1 time in total.

yourepicfailure
User avatar
Donator
Posts: 1256
Joined: Mon Jul 23, 2012 9:40 pm
Location: Flying high in a DC10

Re: Windows NT 4 Source Compiled! version 2

Post by yourepicfailure »

Which essentially caused the loot when detecting floppy. No information sent back.
"C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off"
Image
You will never tear me from the grasp of the Pentium M!

Stephanos
Posts: 297
Joined: Fri Dec 26, 2014 5:38 am
Contact:

Re: Windows NT 4 Source Compiled! version 2

Post by Stephanos »

Update 2015-01-14, rc4c.c re-implemented:

Code: Select all

/*++

Copyright (c) 2015  Microsoft Corporation

Module Name:

    rc4c.c

Abstract:

    This module implements the RC4 cryptographic functions.

Author:

    Stephanos Io (Stephanos) 13-Jan-2015

Notes:

Revision History:

--*/

#include "rc4.h"

_inline void Swap(BYTE *x, BYTE *y);

/*++

 void
 rc4_key (
    struct RC4_KEYSTRUCT *pKS,
    DWORD dwLen,
    PUCHAR pbKey
    )

 Routine Description:

    Implements the RC4 Key Scheduling Algorithm (KSA)
   
 Arguments:

    pKS    - Pointer to the key struct
    
    dwLen  - Length of the key buffer
    
    pbKey  - Pointer to the key buffer

 Return Value:
 
    None.

--*/

void rc4_key(struct RC4_KEYSTRUCT *pKS, DWORD dwLen, PUCHAR pbKey)
{
    register WORD   Index;
    register BYTE   Temp;
    BYTE swap;
	
    //
    // Initialise the identity permutation
    //
    
	for (Index = 0; Index < 256; Index++)
		pKS->S[Index] = (BYTE)Index;

    //
    // Set indices
    //
    
    pKS->i = 0;
    pKS->j = 0;

    //
    // Compute the key permutation
    //
    
	for (Temp = 0, Index = 0; Index < 256; Index++) 
	{
		Temp = Temp + pKS->S[Index] + pbKey[Index % dwLen];
        Swap(&pKS->S[Index], &pKS->S[Temp]);
	}
}


/*++

 void
 rc4 (
    struct RC4_KEYSTRUCT *pKS,
    DWORD dwLen,
    PUCHAR pbKey
    )

 Routine Description:

    Implements the RC4 Pseudo-Random Generation Algorithm (PRGA)
   
 Arguments:

    pKS    - Pointer to the key struct
    
    dwLen  - Length of the buffer data
    
    pBuf   - Pointer to the buffer

 Return Value:
 
    None.

--*/

void rc4(struct RC4_KEYSTRUCT *pKS, DWORD dwLen, PUCHAR pBuf)
{
	register DWORD  Index;
	register BYTE   K;
    register BYTE   Loci, Locj;
    
    //
    // Localise key struct i and j
    //
    
    Loci = pKS->i;
    Locj = pKS->j;
    
    //
    // Encrypt
    //
    
	for (Index = 0; Index < dwLen; Index++)
	{
        Loci++;
        Locj += pKS->S[Loci];
		Swap(&pKS->S[Loci], &pKS->S[Locj]);
		K = pKS->S[Loci] + pKS->S[Locj];
		pBuf[Index] = pBuf[Index] ^ pKS->S[K];
	}
	
    //
    // Restore local i and j back to the key struct
    //
    
    pKS->i = Loci;
    pKS->j = Locj;
}

_inline void Swap(BYTE *x, BYTE *y)
{
    BYTE temp;
    
    temp = *x;
    *x = *y;
    *y = temp;
}

Stephanos
Posts: 297
Joined: Fri Dec 26, 2014 5:38 am
Contact:

Re: Windows NT 4 Source Compiled! version 2

Post by Stephanos »

Random Screenshots

Image

Image

Image

Image

Image

Terra854
User avatar
FTP Access
Posts: 555
Joined: Tue Oct 04, 2011 5:57 am
Location: Singapore

Re: Windows NT 4 Source Compiled! version 2

Post by Terra854 »

So what is still not implemented in your NT4?

Stephanos
Posts: 297
Joined: Fri Dec 26, 2014 5:38 am
Contact:

Re: Windows NT 4 Source Compiled! version 2

Post by Stephanos »

Terra854 wrote:So what is still not implemented in your NT4?
1. DES cryptographic functions (I finished writing them yesterday, but haven't finished testing them)
2. cryptapi.c in ADVAPI32, aka. Microsoft Cryptographic API.
3. sadapi.lib from nt\private\exchange, required to build some stuff under utils- not critical
4. soedhspa.lib, required to build digsig under advapi- not critical

Besides the unimplemented stuff, I still have quite a few issues to resolve:
1. Full refactoring of CRT. For now, the CRT build process is partially incomplete and broken at many different levels. I managed to get a working CRT out by manually tweaking with it, but eventually we will need to refactor and automate the process.
2. OLE32/OLEAUTO/OLETOOLS/OLEUTEST need major troubleshooting to complete the build
3. Several components under nt\private\net and nt\private\inet require troubleshooting. Some headers seem to be corrupted.
4. NTMFC is mostly working, but some functions seem to be broken. This might be because of the partially faulty CRT

the following components fully build:
nt\private\csr
nt\private\dcomidl
nt\private\eventlog
nt\private\lsa
nt\private\mvdm
nt\private\newsam
nt\private\newsam2 (we don't use newsam2)
nt\private\nlsecutl
nt\private\ntos
nt\private\nullsrv
nt\private\nw (it basically builds, but can't link due to one missing lib)
nt\private\os2
nt\private\posix
nt\private\rpc
nt\private\rpcutil
nt\private\sam
nt\private\sdktools (most components successfully build, except a few)
nt\private\sm
nt\private\tapi
nt\private\types
nt\private\types2
nt\private\unimodem
nt\private\urtl
nt\private\utils (everything here builds except one or two components that depend on exchange libs, exchange tree is completely missing by the way)
nt\private\windbg
nt\private\windows (everything except ADVAPI32 at this moment. cryptapi.c will be implemented soon.)

That pretty much sums up the current repository build status.

Stephanos
Posts: 297
Joined: Fri Dec 26, 2014 5:38 am
Contact:

Re: Windows NT 4 Source Compiled! version 2

Post by Stephanos »

Update 2015-01-15, des.c implemented:

Code: Select all

/*++

Copyright (c) 2015  Microsoft Corporation

Module Name:

    des.c

Abstract:

    This module Implements the internal DES cryptographic functions used by
    the ECB and CBC wrappers.

Author:

    Stephanos Io (Stephanos) 13-Jan-2015

Notes:

    This module was re-implemented from the scratch based on the des.i16 object
    file provided under \nt\private\rpc\runtime\security\ntlmssp.

Revision History:

--*/


#include <windef.h>
#include <windowsx.h>

#include "des.h"

/*==============================================================================
                           Internal Function Prototypes
==============================================================================*/

void key_table(const char FAR *key);
void des_cipher(unsigned char FAR *block, int crypt_mode);
_inline void Swap(BYTE *x, BYTE *y);

/*==============================================================================
                                Internal Variables
==============================================================================*/

char FAR C[28];
char FAR D[28];
char FAR KS[768];

char FAR L[64];
char FAR tempL[32];
char FAR preS[48];
char FAR f[32];

char FAR KeyBuilder[64];

/*==============================================================================
                                    DES Tables
==============================================================================*/

//
// Initial Permutation (IP)
//

unsigned char IP[] = {
    57, 49, 41, 33, 25, 17,  9,  1,
    59, 51, 43, 35, 27, 19, 11,  3,
    61, 53, 45, 37, 29, 21, 13,  5,
    63, 55, 47, 39, 31, 23, 15,  7,
    56, 48, 40, 32, 24, 16,  8,  0,
    58, 50, 42, 34, 26, 18, 10,  2,
    60, 52, 44, 36, 28, 20, 12,  4,
    62, 54, 46, 38, 30, 22, 14,  6
};

//
// Final Permutation (FP)
//

unsigned char FP[] = {
    39,  7, 47, 15, 55, 23, 63, 31,
    38,  6, 46, 14, 54, 22, 62, 30,
    37,  5, 45, 13, 53, 21, 61, 29,
    36,  4, 44, 12, 52, 20, 60, 28,
    35,  3, 43, 11, 51, 19, 59, 27,
    34,  2, 42, 10, 50, 18, 58, 26,
    33,  1, 41,  9, 49, 17, 57, 25,
    32,  0, 40,  8, 48, 16, 56, 24
};

//
// Expansion Function (E)
//

unsigned char E[] = {
    31,  0,  1,  2,  3,  4,
     3,  4,  5,  6,  7,  8,
     7,  8,  9, 10, 11, 12,
    11, 12, 13, 14, 15, 16,
    15, 16, 17, 18, 19, 20,
    19, 20, 21, 22, 23, 24,
    23, 24, 25, 26, 27, 28,
    27, 28, 29, 30, 31,  0
};

//
// Permutation (P)
//

unsigned char P[] = {
    15,  6, 19, 20, 28, 11, 27, 16,
     0, 14, 22, 25,  4, 17, 30,  9,
     1,  7, 23, 13, 31, 26,  2,  8,
    18, 12, 29,  5, 21, 10,  3, 24
};

//
// Permuted Choice 1 - Left (PC1_C)
//

unsigned char PC1_C[] = {
    56, 48, 40, 32, 24, 16,  8,
     0, 57, 49, 41, 33, 25, 17,
     9,  1, 58, 50, 42, 34, 26,
    18, 10,  2, 59, 51, 43, 35
};

//
// Permuted Choice 1 - Right (PC1_D)
//

unsigned char PC1_D[] = {
    62, 54, 46, 38, 30, 22, 14,
     6, 61, 53, 45, 37, 29, 21,
    13,  5, 60, 52, 44, 36, 28,
    20, 12,  4, 27, 19, 11,  3
};

//
// Permuted Choice 2 - Left (PC2_C)
//

unsigned char PC2_C[] = {
    13, 16, 10, 23,  0,  4,  2, 27,
    14,  5, 20,  9, 22, 18, 11,  3,
    25,  7, 15,  6, 26, 19, 12,  1
};

//
// Permuted Choice 2 - Right (PC2_D)
//

unsigned char PC2_D[] = {
    12, 23,  2,  8, 18, 26,  1, 11,
    22, 16,  4, 19, 15, 20, 10, 27,
     5, 24, 17, 13, 21,  7,  0,  3
};

//
// Substitution Boxes (S)
//

char S[] = {
    // ============================ S1 ============================
    14,  4, 13,  1,  2, 15, 11,  8,  3, 10,  6, 12,  5,  9,  0,  7,
     0, 15,  7,  4, 14,  2, 13,  1, 10,  6, 12, 11,  9,  5,  3,  8,
     4,  1, 14,  8, 13,  6,  2, 11, 15, 12,  9,  7,  3, 10,  5,  0,
    15, 12,  8,  2,  4,  9,  1,  7,  5, 11,  3, 14, 10,  0,  6, 13,

    // ============================ S2 ============================
    15,  1,  8, 14,  6, 11,  3,  4,  9,  7,  2, 13, 12,  0,  5, 10,
     3, 13,  4,  7, 15,  2,  8, 14, 12,  0,  1, 10,  6,  9, 11,  5,
     0, 14,  7, 11, 10,  4, 13,  1,  5,  8, 12,  6,  9,  3,  2, 15,
    13,  8, 10,  1,  3, 15,  4,  2, 11,  6,  7, 12,  0,  5, 14,  9,

    // ============================ S3 ============================
    10,  0,  9, 14,  6,  3, 15,  5,  1, 13, 12,  7, 11,  4,  2,  8,
    13,  7,  0,  9,  3,  4,  6, 10,  2,  8,  5, 14, 12, 11, 15,  1,
    13,  6,  4,  9,  8, 15,  3,  0, 11,  1,  2, 12,  5, 10, 14,  7,
     1, 10, 13,  0,  6,  9,  8,  7,  4, 15, 14,  3, 11,  5,  2, 12,
    
    // ============================ S4 ============================
     7, 13, 14,  3,  0,  6,  9, 10,  1,  2,  8,  5, 11, 12,  4, 15,
    13,  8, 11,  5,  6, 15,  0,  3,  4,  7,  2, 12,  1, 10, 14,  9,
    10,  6,  9,  0, 12, 11,  7, 13, 15,  1,  3, 14,  5,  2,  8,  4,
     3, 15,  0,  6, 10,  1, 13,  8,  9,  4,  5, 11, 12,  7,  2, 14,
    
    // ============================ S5 ============================
     2, 12,  4,  1,  7, 10, 11,  6,  8,  5,  3, 15, 13,  0, 14,  9,
    14, 11,  2, 12,  4,  7, 13,  1,  5,  0, 15, 10,  3,  9,  8,  6,
     4,  2,  1, 11, 10, 13,  7,  8, 15,  9, 12,  5,  6,  3,  0, 14,
    11,  8, 12,  7,  1, 14,  2, 13,  6, 15,  0,  9, 10,  4,  5,  3,

    // ============================ S6 ============================
    12,  1, 10, 15,  9,  2,  6,  8,  0, 13,  3,  4, 14,  7,  5, 11,
    10, 15,  4,  2,  7, 12,  9,  5,  6,  1, 13, 14,  0, 11,  3,  8,
     9, 14, 15,  5,  2,  8, 12,  3,  7,  0,  4, 10,  1, 13, 11,  6,
     4,  3,  2, 12,  9,  5, 15, 10, 11, 14,  1,  7,  6,  0,  8, 13,
    
    // ============================ S7 ============================
     4, 11,  2, 14, 15,  0,  8, 13,  3, 12,  9,  7,  5, 10,  6,  1,
    13,  0, 11,  7,  4,  9,  1, 10, 14,  3,  5, 12,  2, 15,  8,  6,
     1,  4, 11, 13, 12,  3,  7, 14, 10, 15,  6,  8,  0,  5,  9,  2,
     6, 11, 13,  8,  1,  4, 10,  7,  9,  5,  0, 15, 14,  2,  3, 12,

    // ============================ S8 ============================
    13,  2,  8,  4,  6, 15, 11,  1, 10,  9,  3, 14,  5,  0, 12,  7,
     1, 15, 13,  8, 10,  3,  7,  4, 12,  5,  6, 11,  0, 14,  9,  2,
     7, 11,  4,  1,  9, 12, 14,  2,  0,  6, 10, 13, 15,  3,  5,  8,
     2,  1, 14,  7,  4, 10,  8, 13, 15, 12,  9,  0,  3,  5,  6, 11
};

//
// Round Shift Table
//

unsigned char shifts[] = {
    1, 1, 2, 2, 2, 2, 2, 2,
    1, 2, 2, 2, 2, 2, 2, 1
};

/*==============================================================================
                                Internal Functions
==============================================================================*/

void key_table(const char FAR *key)
{
    register unsigned char  Temp;
    register int            ShiftIndex;
    register int            i, j;

    //
    // Initialise C and D
    //

    for (i = 0; i < 28; i++)
    {
        C[i] = key[PC1_C[i]];
        D[i] = key[PC1_D[i]];
    }

    //
    // Generate key schedule
    //

    for (i = 0; i < 16; i++)
    {
        //
        // Shift C and D
        //
        
        for (ShiftIndex = 0; ShiftIndex < shifts[i]; ShiftIndex++)
        {
            //
            // Shift C
            //
            
            Temp = C[0];

            for (j = 0; j < 27; j++)
                C[j] = C[j + 1];

            C[27] = Temp;

            //
            // Shift D
            //
            
            Temp = D[0];

            for (j = 0; j < 27; j++)
                D[j] = D[j + 1];

            D[27] = Temp;
        }

        //
        // Update KS
        //
        
        for (j = 0; j < 24; j++)
        {
            KS[i * 48 + j] = C[PC2_C[j]];
            KS[24 + i * 48 + j] = D[PC2_D[j]];
        }
    }
}

void des_cipher(unsigned char FAR *block, int crypt_mode)
{
    register unsigned char  Temp;
    register int            SIndex;
    register int            i, j;

    //
    // Apply initial permutation
    //

    for (i = 0; i < 64; i++)
        L[i] = block[IP[i]];

    //
    // Perform cipher operations
    //

    for (i = 0; i < 16; i++)
    {
        //
        // Duplicate high L to tempL
        //
        
        for (j = 0; j < 32; j++)
            tempL[j] = L[32 + j];

        //
        // Apply key schedule and compute pre-substitution schedule
        //
        
        for (j = 0; j < 48; j++)
        {
            Temp = L[32 + E[j]];
            Temp ^= KS[(crypt_mode != 0 ? 15 - i : i) * 48 + j];
            preS[j] = Temp;
        }

        //
        // Substitute
        //
        
        for (j = 0; j < 8; j++)
        {
            SIndex = preS[j * 6 + 0];
            SIndex += j * 2;
            SIndex *= 2;
            SIndex += preS[j * 6 + 5];
            SIndex *= 2;
            SIndex += preS[j * 6 + 1];
            SIndex *= 2;
            SIndex += preS[j * 6 + 2];
            SIndex *= 2;
            SIndex += preS[j * 6 + 3];
            SIndex *= 2;
            SIndex += preS[j * 6 + 4];

            f[j * 4 + 0] = (S[SIndex] >> 3) & 0x01;
            f[j * 4 + 1] = (S[SIndex] >> 2) & 0x01;
            f[j * 4 + 2] = (S[SIndex] >> 1) & 0x01;
            f[j * 4 + 3] = (S[SIndex] >> 0) & 0x01;
        }

        //
        // Update high L
        //
        
        for (j = 0; j < 32; j++)
            L[32 + j] = f[P[j]] ^ L[j];

        //
        // Update low L
        //
        
        for (j = 0; j < 32; j++)
            L[j] = tempL[j];
    }

    //
    // Swap high and low L
    //

    for (i = 0; i < 32; i++)
        Swap(&L[i], &L[i + 32]);

    //
    // Apply final permutation
    //

    for (i = 0; i < 64; i++)
        block[i] = L[FP[i]];
}

_inline void Swap(BYTE *x, BYTE *y)
{
    BYTE temp;
    
    temp = *x;
    *x = *y;
    *y = temp;
}

/*==============================================================================
                            Public Interface Functions
==============================================================================*/

void des(unsigned char *inbuf, unsigned char *outbuf, int crypt_mode)
{
    unsigned char   Block[64];
    register int    i, j;

    //
    // Initialise the block buffer
    //
    
    _fmemset(Block, 0, sizeof(Block));

    //
    // Expand inbuf bits into the block buffer
    //

    for (i = 0; i < 8; i++)
    {
        for (j = 0; j < 8; j++)
        {
            Block[i * 8 + j] = (inbuf[i] >> (7 - j)) & 0x01;
        }
    }

    //
    // Call the cipher function
    //

    des_cipher(Block, crypt_mode);

    //
    // Restore block buffer bits into outbuf
    //

    for (i = 0; i < 8; i++)
    {
        outbuf[i] = 0;
        
        for (j = 0; j < 8; j++)
        {
            outbuf[i] <<= 1;
            outbuf[i] |= Block[i * 8 + j];
        }
    }
}

void desf(unsigned char FAR *inbuf, unsigned char FAR *outbuf, int crypt_mode)
{
    unsigned char   Block[64];
    register int    i, j;

    //
    // Initialise the block buffer
    //
    
    _fmemset(Block, 0, sizeof(Block));

    //
    // Expand inbuf bits into the block buffer
    //

    for (i = 0; i < 8; i++)
    {
        for (j = 0; j < 8; j++)
        {
            Block[i * 8 + j] = (inbuf[i] >> (7 - j)) & 0x01;
        }
    }

    //
    // Call the cipher function
    //

    des_cipher(Block, crypt_mode);

    //
    // Restore block buffer bits into outbuf
    //

    for (i = 0; i < 8; i++)
    {
        outbuf[i] = 0;
        
        for (j = 0; j < 8; j++)
        {
            outbuf[i] <<= 1;
            outbuf[i] |= Block[i * 8 + j];
        }
    }

}

void setkey(const char FAR *key)
{
    // NOTE: NOT IMPLEMENTED
}


void InitLanManKey(const char FAR *Key)
{
    char            LanManKey[64];
    register int    Index;
    register char   Current;
    register int    i, j;

    //
    // Initialise the local key buffer
    //

    Index = 0;
    _fmemset(LanManKey, Index, sizeof(LanManKey));

    //
    // Expand the key bits into the local key buffer
    //

    for (i = 0; i < 8; i++)
    {
        for (j = 0; j < 7; j++)
        {
            Current = Key[Index / 8];
            Current >>= 7 - (Index & 0x07);
            Current &= 0x01;

            LanManKey[i * 8 + j] = Current;
            
            Index++;
        }
    }

    //
    // Generate the key table
    //

    key_table(LanManKey);
}

void InitNormalKey(const char FAR *Key)
{
    register int    i, j;
    register char   Current;

    //
    // Initialise the local key buffer
    //
    
    _fmemset(KeyBuilder, 0, 64);

    //
    // Expand the key bits into the local key buffer
    //
    
    for (i = 0; i < 8; i++)
    {
        //
        // Get the current byte
        //
        
        Current = Key[i];

        //
        // Expand the current byte value into individual bits
        //
        
        for (j = 0; j < 8; j++)
        {
            KeyBuilder[i * 8 + j] = Current & 0x01;
            Current >>= 1;
        }
    }

    //
    // Generate the key table
    //

    key_table(KeyBuilder);
}


/*

< Reverse Engineering Note >

; ===== key_table =====
; BP + 8    WORD    KEY_SEG     Key Pointer Segment Address
; BP + 6    WORD    KEY_OFFS    Key Pointer Offset Address
    
_key_table:
	mov	ax,ds
	nop
	inc	bp
	push	bp
	mov	bp,sp
	push	ds
	mov	ds,ax
	sub	sp,+006h                    ; Local frame size = 6
	push	di
	push	si

	xor	si,si                       ; SI = 0, LOOP COUNT REGISTER
$L3:	assume	ds: DGROUP          ; {
	mov	bl,[si+_PC1_C]              ; BL = *(PC1_C + SI)
	sub	bh,bh                       ; BH = 0
	mov	es,word ptr [bp+008h]       ; ES = KEY_SEG
	add	bx,[bp+006h]                ; BX += KEY_OFFS
                                    ; >NOTE: BX is set to *(PC1_C)
                                    ;        BX = KEY_OFFS + *(PC1_C)
	mov	al,es:[bx]                  ; AL = Key[PC1_C[i]]
	mov	es,word ptr $S1             ; ES = _C segment
	mov	es:[si+_C],al               ; C[i] = Key[PC1_C[i]]
	mov	bl,[si+_PC1_D]              ; BL = *(PC1_D + SI)
	sub	bh,bh                       ; BH = 0
	mov	es,word ptr [bp+008h]
	add	bx,[bp+006h]
	mov	al,es:[bx]                  ; AL = Key[PC1_D[i]]
	mov	es,word ptr $S2             ; ES = _D segment
	mov	es:[si+_D],al               ; D[i] = Key[PC1_D[i]]
	inc	si                          ; i++
	cmp	si,+01Ch
	jl	$L3                         ; } while (i < 28)
	xor	si,si                       ; SI = 0, another loop
	jmp	$L4
$L7:	mov	es,word ptr $S1         ; C segment
	mov	al,es:_C                    ; AL = C[0]
	sub	ah,ah                       ; AH = 0
	mov	[bp-006h],ax                ; Temp = C[0]
	xor	di,di                       ; Inner loop, j = 0
$L5:	mov	al,es:[di+_C + 00001h]  ; { AL = C[j + 1]
	mov	es:[di+_C],al               ; C[j] = C[j + 1]
	inc	di                          ; j++
	cmp	di,+01Bh
	jl	$L5                         ; } while (j < 27)
	mov	al,[bp-006h]                ; AL = Temp
	mov	es:_C + 0001Bh,al           ; C[27] = Temp
	mov	es,word ptr $S2             ; D segment
	mov	al,es:_D                    ; AL = D[0]
	sub	ah,ah                       ; AH = 0
	mov	[bp-006h],ax                ; Temp = D[0]
	xor	di,di                       ; Yet another inner loop, j = 0
$L6:	mov	al,es:[di+_D + 00001h]  ; { AL = D[j + 1]
	mov	es:[di+_D],al               ; D[j] = D[j + 1]
	inc	di                          ; j++
	cmp	di,+01Bh
	jl	$L6                         ; } while (j < 27)
	mov	al,[bp-006h]                ; AL = Temp
	mov	es:_D + 0001Bh,al           ; D[27] = Temp
	inc	word ptr [bp-004h]          ; BP - 4?
$L11:	mov	al,[si+_shifts]                 ; Outer loop
                                            ; AL = shifts[i]
	sub	ah,ah                               ; AH = 0
	cmp	ax,[bp-004h]                        ; Counter
	jnbe	$L7                             ; If Counter < shift[i], go to $L7
    ; else
	xor	di,di                               ; DI inner loop = 0
$L9:	mov	bl,[di+_PC2_C]                  ; BL = PC2_C[j]
	sub	bh,bh                               ; BH = 0
	mov	es,word ptr $S1                     ; _C segment
	mov	al,es:[bx+_C]                       ; AL = C[PC2_C[j]]
	mov	es,word ptr $S8                     ; _KS segment
	imul	bx,si,+030h                     ; BX = i * 48
	add	bx,di                               ; BX += j
	mov	es:[bx+_KS],al                      ; KS[i * 48 + j] = C[PC2_C[j]]
	mov	ax,bx                               ; AX = i * 48 + j
	mov	bl,[di+_PC2_D]                      ; BL = PC2_D[j]
	sub	bh,bh
	mov	es,word ptr $S2                     ; _D segment
	mov	cl,es:[bx+_D]                       ; CL = D[PC2_D[j]]
	mov	bx,ax                               ; BX = i * 48 + j
	mov	es,word ptr $S8                     ; _KS segment
	mov	es:[bx+_KS + 00018h],cl             ; KS[24 + i * 48 + j] = D[PC2_D[j]]
	inc	di                                  ; j++
	cmp	di,+018h
	jl	$L9                                 ; If j < 24, go to L9
	inc	si                                  ; inner loop end, i++
$L4:	cmp	si,+010h                    ; Loop outer, SI
	jnl	$L10                            ; If SI >= 16, go to $L10
	mov	word ptr [bp-004h],0000h        ; Counter = 0
	jmp	short $L11
$L10:	pop	si
	pop	di
	lea	sp,[bp-002h]
	pop	ds
	pop	bp
	dec	bp
	retf


_des_cipher:
	mov	ax,ds
	nop
	inc	bp
	push	bp
	mov	bp,sp
	push	ds
	mov	ds,ax
	sub	sp,+010h                            ; Stack frame size = 16 bytes
	push	di
	push	si

	xor	di,di                               ; Loop DI = 0
$L13:	mov	bl,[di+_IP]                     ; { BL = IP[i]
	sub	bh,bh                               ; BH = 0
	mov	es,word ptr [bp+008h]               ; BP + 8 = Buf seg
	add	bx,[bp+006h]                        ; BP + 6 = Buf offs
	mov	al,es:[bx]                          ; AL = Buf[IP[i]]
	mov	es,word ptr $S12                    ; _L segment
	mov	es:[di+_L],al                       ; L[i] = Buf[IP[i]]
	inc	di                                  ; i++
	cmp	di,+040h
	jl	$L13                                ; } while (i < 64)
	mov	word ptr [bp-004h],0000h            ; BP - 4 = 0 // Counter
	jmp	$L14

; If crypt_mode is 0
$L26:	mov	si,[bp-004h]                 
$L27:	xor	di,di                           ; Loop, j = 0
$L16:	mov	es,word ptr $S12                ; { _L segment
	mov	al,es:[di+_L + 00020h]              ; AL = L[32 + j]
	mov	es,word ptr $S15                    ; _tempL
	mov	es:[di+_tempL],al                   ; _tempL[j] = L[32 + j]
	inc	di                                  ; j++
	cmp	di,+020h
	jl	$L16                                ; } while (j < 32)
	xor	di,di                               ; Another loop, j = 0
$L18:	mov	bl,[di+_E]                      ; { BL = E[j]
	sub	bh,bh                               ; BH = 0
	mov	es,word ptr $S12                    ; _L segment
	mov	al,es:[bx+_L + 00020h]              ; AL = L[32 + E[j]]
	imul	bx,si,+030h                     ; BX = crypt_mode dependent BP - 4, SI * 48
	add	bx,di                               ; BX += j
	mov	es,word ptr $S8                     ; _KS segment
	xor	al,es:[bx+_KS]                      ; AL ^= KS[(crypt_mode != 0) ? 15 - i : i) * 48 + j]
	mov	es,word ptr $S17                    ; _preS segment
	mov	es:[di+_preS],al                    ; preS[j] = KS[(crypt_mode != 0) ? 15 - i : i) * 48 + j]
	inc	di                                  ; j++
	cmp	di,+030h
	jl	$L18                                ; } while (j < 48)
	xor	di,di                               ; Yet another loop, j = 0
$L21:	mov	es,word ptr $S17                ; { _preS segment
	imul	bx,di,+006h                     ; BX = j * 6
	mov	al,es:[bx+_preS + 00004h]           ; AL = preS[j * 6 + 4]
	mov	cl,es:[bx+_preS + 00003h]           ; CL = preS[j * 6 + 3]
	mov	dl,es:[bx+_preS + 00002h]           ; DL = preS[j * 6 + 2]
	mov	[bp-00Ch],ax                        ; BP - C = Temp1 = AL (high byte ignored)
	mov	al,es:[bx+_preS + 00001h]           ; AL = preS[j * 6 + 1]
	mov	[bp-00Eh],ax                        ; BP - E = Temp2 = AL (high byte ignored)
	mov	al,es:[bx+_preS + 00005h]           ; AL = preS[j * 6 + 5]
	mov	bl,es:[bx+_preS]                    ; BL = preS[j * 6 + 0]
	sub	bh,bh                               ; BH = 0
	mov	[bp-010h],ax                        ; BP - 10 = Temp3 = AL (high byte ignored)
	mov	ax,di                               ; AX = j
	shl	ax,1                                ; AX = j * 2;
	add	bx,ax                               ; BX = preS[j * 6 + 0] + j * 2
	shl	bx,1                                ; BX = (preS[j * 6 + 0] + j * 2) * 2
	mov	al,[bp-010h]                        ; AL = preS[j * 6 + 5]
	sub	ah,ah                               ; AH = 0
	add	bx,ax                               ; BX += preS[j * 6 + 5]
	shl	bx,1                                ; BX *= 2
	mov	al,[bp-00Eh]                        ; AL = preS[j * 6 + 1]
	add	bx,ax                               ; BX += preS[j * 6 + 1]
	shl	bx,1                                ; BX *= 2
	sub	dh,dh                               ; DH = 0
	add	bx,dx                               ; BX += preS[j * 6 + 2]
	shl	bx,1                                ; BX *= 2
	sub	ch,ch                               ; CH = 0
	add	bx,cx                               ; BX += preS[j * 6 + 3]
	shl	bx,1                                ; BX *= 2
	mov	al,[bp-00Ch]                        ; AL = preS[j * 6 + 4]
	add	bx,ax                               ; BX += preS[j * 6 + 4]
	mov	al,[bx+_S]                          ; AL = S[BX]
	mov	[bp-00Ah],ax                        ; BP - A = Temp = S[BX]
	mov	ax,di                               ; AX = j
	shl	ax,02h                              ; AX = j * 4
	mov	[bp-008h],ax                        ; BP - 8 = j * 4
	mov	bx,ax                               ; BX = j * 4
	mov	es,word ptr $S19                    ; _f segment
	mov	cx,[bp-00Ah]                        ; CX = S[BX]
	sar	cx,03h                              ; CX >>= 3
	and	cl,01h                              ; CL = (S[BX] >> 3) & 1
	mov	es:[bx+_f],cl                       ; f[0] = (S[BX] >> 3) & 1
	mov	cx,[bp-00Ah]
	sar	cx,02h
	and	cl,01h
	mov	es:[bx+_f + 00001h],cl              ; f[1] = (S[BX] >> 2) & 1
	mov	cx,[bp-00Ah]
	sar	cx,1
	and	cl,01h
	mov	es:[bx+_f + 00002h],cl              ; f[2] = (S[BX] >> 1) & 1
	mov	cl,[bp-00Ah]
	and	cl,01h
	mov	es:[bx+_f + 00003h],cl              ; f[3] = S[BX] & 1
	inc	di                                  ; j++
	cmp	di,+008h
	jnl	$L20
	jmp	$L21                                ; } while (j < 8)
$L20:	xor	di,di                           ; Even more loop, j = 0
$L22:	mov	bl,[di+_P]                      ; { BL = P[j]
	sub	bh,bh                               ; BH = 0
	mov	es,word ptr $S19                    ; _f segment
	mov	al,es:[bx+_f]                       ; AL = f[P[j]]
	mov	es,word ptr $S12                    ; _L segment
	xor	al,es:[di+_L]                       ; AL = f[P[j]] ^ L[j]
	mov	es:[di+_L + 00020h],al              ; L[32 + j] = f[P[j]] ^ L[j]
	inc	di                                  ; j++
	cmp	di,+020h
	jl	$L22                                ; } while (j < 32)
	xor	di,di                               ; Another damned loop, j = 0
$L23:	mov	es,word ptr $S15                ; { _tempL segment
	mov	al,es:[di+_tempL]                   ; AL = tempL[j]
	mov	es,word ptr $S12                    ; _L segment
	mov	es:[di+_L],al                       ; L[j] = tempL[j]
	inc	di                                  ; j++
	cmp	di,+020h
	jl	$L23                                ; } while (j < 32)
	inc	word ptr [bp-004h]
$L14:	cmp	word ptr [bp-004h],+010h        ; BP - 4 = Counter
	jnl	$L24                                ; If Counter >= 16, go to $L24
	cmp	word ptr [bp+00Ah],+000h            ; BP + A = crypt_mode
	jnz	$L25                                ; If crypt_mode != 0, go to $L25
	jmp	$L26                                ; else, go to 6
; If crypt_mode is not 0
$L25:	mov	si,000Fh
	sub	si,[bp-004h]                        ; SI = 15 - Counter
	jmp	$L27

; We're done and out of BP - 4 loop
$L24:	xor	di,di                           ; Loop, i = DI = 0
$L28:	mov	al,es:[di+_L]                   ; { AL = L[i]
	sub	ah,ah                               ; AH = 0
	mov	[bp-008h],ax                        ; BP - 8 = L[i], Temp
	mov	al,es:[di+_L + 00020h]              ; AL = L[i + 32]
	mov	es:[di+_L],al                       ; L[i] = L[i + 32]
	mov	al,[bp-008h]                        ; AL = Temp = L[i]
	mov	es:[di+_L + 00020h],al              ; L[i + 32] = Temp = L[i]
	inc	di                                  ; i++
	cmp	di,+020h
	jl	$L28                                ; } while (i < 32)
	xor	di,di                               ; Another loop, i = DI = 0
$L29:	mov	bl,[di+_FP]                     ; { BL = FP[i]
	sub	bh,bh                               ; BH = 0
	mov	es,word ptr $S12                    ; _L segment
	mov	al,es:[bx+_L]                       ; AL = L[FP[i]]
	les	bx,dword ptr [bp+006h]              ; ES:BX = block, parameter
	mov	es:[bx+di],al                       ; block[i] = L[FP[i]]
	inc	di                                  ; i++
	cmp	di,+040h
	jl	$L29                                ; } while (i < 64)
	pop	si
	pop	di
	lea	sp,[bp-002h]
	pop	ds
	pop	bp
	dec	bp
	retf
	nop


_des:	mov	ax,ds
	nop
	inc	bp
	push	bp
	mov	bp,sp
	push	ds
	mov	ds,ax
	sub	sp,+042h                            ; Stack frame size = 66 bytes
	push	di
	push	si

	xor	si,si                               ; Loop, i = 0
$L36:	mov	byte ptr [bp+si-042h],00h       ; { BP - 42 thru BP - 2 is local buffer, LocBuf[i] = 0
	inc	si                                  ; i++
	cmp	si,+040h
	jl	$L36                                ; } while (i < 64)
	xor	si,si                               ; Another loop, i = 0
	jmp	short $L37
$L39:	inc	di
$L41:	cmp	di,+008h                        ; Inner loop begin
	jnl	$L38
	les	bx,dword ptr [bp+006h]              ; ES:BX = BP + 6/ + 8 = inbuf
	mov	al,es:[bx+si]                       ; AL = inbuf[i]
	mov	cl,07h                              ; CL = 7
	mov	dx,di                               ; DX = j
	sub	cl,dl                               ; CL = 7 - j
	shr	al,cl                               ; AL = inbuf[i] >> (7 - j)
	and	al,01h                              ; AL = (inbuf[i] >> (7 - j)) & 0x01
	mov	bx,si                               ; BX = i
	shl	bx,03h                              ; BX = i * 8
	add	bx,di                               ; BX = i * 8 + j
	lea	cx,[bp-042h]                        ; CX = &LocBuf
	add	bx,cx                               ; BX += &LocBuf + i * 8 + j
	mov	ss:[bx],al                          ; LocBuf[i * 8 + j] = (inbuf[i] >> (7 - j)) & 0x01
	jmp	short $L39
$L38:	inc	si
; Loop common point
$L37:	cmp	si,+008h
	jnl	$L40                        ; Outer loop, i < 8
	xor	di,di                       ; Inner loop, j = 0
	jmp	short $L41
$L40:	push	[bp+00Eh]           ; PARAM2 = crypt_mode
	lea	ax,[bp-042h]                ; AX = &LocBuf
	push	ss                      ; PARAM1(SEG) = SS
	push	ax                      ; PARAM1(OFFS) = &LocBuf
	call	far ptr _des_cipher     ; Call des_cipher
	add	sp,+006h
	xor	si,si                       ; Loop i = 0
	jmp	short $L42
$L44:	inc	di
$L46:	cmp	di,+008h                ; Inner loop j < 8
	jnl	$L43
	les	bx,dword ptr [bp+00Ah]      ; ES:BX = outbuf
	shl	byte ptr es:[bx+si],1       ; outbuf[i] <<= 1
	mov	bx,si                       ; BX = i
	shl	bx,03h                      ; BX = i * 8
	add	bx,di                       ; BX = i * 8 + j
	lea	ax,[bp-042h]                ; AX = &LocBuf
	add	bx,ax                       ; BX = &LocBuf + i * 8 + j
	mov	al,ss:[bx]                  ; AL = LocBuf[i * 8 + j]
	les	bx,dword ptr [bp+00Ah]      ; ES:BX = outbuf
	or	es:[bx+si],al               ; outbuf[i] |= LocBuf[i * 8 + j]
	jmp	short $L44
$L43:	inc	si
$L42:	cmp	si,+008h                ; Outer loop i < 8
	jnl	$L45
	les	bx,dword ptr [bp+00Ah]      ; ES:BX = outbuf
	xor	di,di                       ; Inner loop j = 0
	mov	byte ptr es:[bx+si],00h     ; outbuf[i] = 0
	jmp	short $L46
$L45:	pop	si
	pop	di
	lea	sp,[bp-002h]
	pop	ds
	pop	bp
	dec	bp
	retf
	nop


_InitLanManKey:
	mov	ax,ds
	nop
	inc	bp
	push	bp
	mov	bp,sp
	push	ds
	mov	ds,ax
	sub	sp,+044h                        ; Stack frame size = 68 bytes
	push	di
	push	si

	push	+040h                       ; len = 64 bytes
	xor	ax,ax
	mov	[bp-044h],ax                    ; [BP - 44h] = val (purpose TBD)
	push	ax                          ; val = 0
	lea	cx,[bp-042h]                    ; BP - 42h through BP - 2 is our local key buffer
	push	ss                          ; Our buffer is on the stack
	push	cx                          ; buf = BP - 42h
	call	far ptr __fmemset
	add	sp,+008h
	xor	si,si                           ; SI = 0, it is outer count variable i
	jmp	short $L58
$L60:	inc	di
$L62:	cmp	di,+007h
	jnl	$L59
	mov	cl,07h
	and	cl,[bp-044h]                    ; [BP - 44] is some sort of counter, we name it Index
                                        ; CL = Index & 0x07
	mov	ax,cx                           ; Save CL into AX for now
	mov	cl,07h
	sub	cl,al                           ; CL = 0x07 - AL
                                        ; AL contains the previous CL value, Index & 0x07
	mov	bx,[bp-044h]                    ; BX = Index, again
	sar	bx,03h                          ; BX >>= 3
	mov	es,word ptr [bp+008h]           ; BP + 8 is the key parameter seg
	add	bx,[bp+006h]                    ; BP + 6 is the key parameter offs
                                        ; BX now contains (OFFS(Key) + Index >> 3)
	mov	al,es:[bx]                      ; AL = Key[Index >> 3]
	sar	al,cl                           ; AL >>= 0x07 - (Index & 0x07)
	and	al,01h                          ; AL &= 0x01
	mov	bx,si
	shl	bx,03h
	add	bx,di                           ; BX = i * 8 + j
	lea	cx,[bp-042h]                    ; CX = OFFS(LocalKey)
	add	bx,cx
	mov	ss:[bx],al                      ; LocalKey[i * 8 + j] = AL
	inc	word ptr [bp-044h]
	jmp	short $L60
$L59:	inc	si
$L58:	cmp	si,+008h
	jnl	$L61
	xor	di,di
	jmp	short $L62
$L61:	lea	ax,[bp-042h]
	push	ss
	push	ax
	call	far ptr _key_table
	add	sp,+004h
	pop	si
	pop	di
	lea	sp,[bp-002h]
	pop	ds
	pop	bp
	dec	bp
	retf


_InitNormalKey:
	mov	ax,ds
	nop
	inc	bp
	push	bp
	mov	bp,sp
	push	ds
	mov	ds,ax
	sub	sp,+004h
	push	di
	push	si

	push	+040h                   ; size = 64
	xor	ax,ax
	mov	[bp-004h],ax
	push	ax                      ; value = 0
	push	seg _KeyBuilder         ; targetseg
	push	offset _KeyBuilder      ; targetoffs
	call	far ptr __fmemset
	add	sp,+008h                    ; apparently we need to clean up the stack
	                                ; for this call convention
	xor	si,si                       ; SI = 0, it is now our count variable
	jmp	short $L63
$L66:	inc	di
$L68:	cmp	di,+008h
	jnl	$L64                        ; If DI >= 8, go to L64
	mov	al,[bp-004h]                ; AL = Current
	and	al,01h                      ; AL &= 0x01
	mov	es,word ptr $S65
	mov	bx,si                       
	shl	bx,03h                          
	add	bx,di                       
	mov	es:[bx+_KeyBuilder],al
	sar	word ptr [bp-004h],1
	jmp	short $L66
$L64:	inc	si
$L63:	cmp	si,+008h
	jnl	$L67                        ; goto L67 if SI >= 8
	les	bx,dword ptr [bp+006h]      ; Load key far pointer into ES:BX
	mov	al,es:[bx+si]               ; AL = Key[SI], SI is our count register
	cbw                             ; sign extend AL to AX
	mov	[bp-004h],ax                ; BP - 4 = SOMEVARIABLE, CONTAINS CURRENT
	xor	di,di                       ; DI = 0
	jmp	short $L68
$L67:	push	seg _KeyBuilder
	push	offset _KeyBuilder
	call	far ptr _key_table
	add	sp,+004h
	pop	si
	pop	di
	lea	sp,[bp-002h]
	pop	ds
	pop	bp
	dec	bp
	retf

*/

yourepicfailure
User avatar
Donator
Posts: 1256
Joined: Mon Jul 23, 2012 9:40 pm
Location: Flying high in a DC10

Re: Windows NT 4 Source Compiled! version 2

Post by yourepicfailure »

Stephanos, I should remark that some PowerPc exclusives inside nt/private/windows fail to compile miserably. But they're not essential right now.
"C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off"
Image
You will never tear me from the grasp of the Pentium M!

Stephanos
Posts: 297
Joined: Fri Dec 26, 2014 5:38 am
Contact:

Re: Windows NT 4 Source Compiled! version 2

Post by Stephanos »

yourepicfailure wrote:Stephanos, I should remark that some PowerPc exclusives inside nt/private/windows fail to compile miserably. But they're not essential right now.
Do you have a PowerPC machine running Windows? or cross compiling? and what components are you referring to?
Besides cryptapi.c, there is 0 error compiling nt\private\windows for x86tst and x86fre.

Code: Select all

Total of 4 source files (1,382 lines) to compile in 14 directories

BUILD: Compiling w:\nt\private\windows\base\server directory
BUILD: Compiling w:\nt\private\windows\base\advapi\wintrust directory
BUILD: Compiling w:\nt\private\windows\base\advapi\daytona directory
BUILD: Compiling w:\nt\private\windows\shell\oledbshl\daytona directory
BUILD: Compiling w:\nt\private\windows\shell\fontfldr\ole2map directory
BUILD: Compiling w:\nt\private\windows\spooler\prtprocs\winprint\km directory
BUILD: Compiling w:\nt\private\windows\spooler\splexts directory
BUILD: Compiling w:\nt\private\windows\media\drivers\necsnd directory
BUILD: Compiling w:\nt\private\windows\media\msacm\msacm directory
BUILD: Compiling w:\nt\private\windows\media\dplay\dplay directory
BUILD: Compiling w:\nt\private\windows\gina\winlogon directory
BUILD: Compiling w:\nt\private\windows\richedit\src directory
BUILD: Compiling w:\nt\private\windows\ole\client directory
BUILD: Compiling w:\nt\private\windows\ole\server directory
9>Binplacing - media\msacm\msacm\msacm.dll for Unknown Target
10>Compiling - media\dplay\dplay\dllmain.c for i386
11>Compiling - gina\winlogon\i386\os2ssmig.c for i386
9>Binplacing - media\msacm\msacm\msacm.sym for Unknown Target
10>Building Library - w:\nt\public\sdk\lib\i386\dplay.lib for i386
11>Compiling - gina\winlogon\i386\os2ssrtl.c for i386
BUILD: Linking w:\nt\private\windows\screg\winreg\prflbmsg directory
BUILD: Linking w:\nt\private\windows\screg\sc\server\daytona directory
BUILD: Linking w:\nt\private\windows\screg\sc\bootvrfy directory
BUILD: Linking w:\nt\private\windows\screg\sc\bootok directory
BUILD: Linking w:\nt\private\windows\screg\sc\sc directory
BUILD: Linking w:\nt\private\windows\base\client\daytona directory
BUILD: Linking w:\nt\private\windows\base\server directory
BUILD: Linking w:\nt\private\windows\base\advapi\wintrust directory
BUILD: Linking w:\nt\private\windows\base\advapi\daytona directory
BUILD: Linking w:\nt\private\windows\base\ntcrypto\programs\init directory
BUILD: Linking w:\nt\private\windows\base\ntcrypto\programs\install directory
BUILD: Linking w:\nt\private\windows\base\ntcrypto\programs\sign directory
BUILD: Linking w:\nt\private\windows\base\ntcrypto\programs\stress directory
BUILD: Linking w:\nt\private\windows\mpr\daytona directory
BUILD: Linking w:\nt\private\windows\cmd\cmd directory
BUILD: Linking w:\nt\private\windows\cmd\win95cmd directory
BUILD: Linking w:\nt\private\windows\diamond\tools directory
BUILD: Linking w:\nt\private\windows\shell\common\comctl32\winnt directory
BUILD: Linking w:\nt\private\windows\shell\shelldll\base directory
BUILD: Linking w:\nt\private\windows\shell\shelldll\basealt directory
BUILD: Linking w:\nt\private\windows\shell\comdlg directory
BUILD: Linking w:\nt\private\windows\shell\quikview\qvstub directory
BUILD: Linking w:\nt\private\windows\shell\quikview\stream\work\asc8 directory
BUILD: Linking w:\nt\private\windows\shell\quikview\stream\work\bmp directory
BUILD: Linking w:\nt\private\windows\shell\quikview\stream\work\drw directory
BUILD: Linking w:\nt\private\windows\shell\quikview\stream\work\exe2 directory
BUILD: Linking w:\nt\private\windows\shell\quikview\stream\work\gif directory
BUILD: Linking w:\nt\private\windows\shell\quikview\stream\work\mp directory
BUILD: Linking w:\nt\private\windows\shell\quikview\stream\work\msw directory
BUILD: Linking w:\nt\private\windows\shell\quikview\stream\work\pp directory
BUILD: Linking w:\nt\private\windows\shell\quikview\stream\work\rtf directory
BUILD: Linking w:\nt\private\windows\shell\quikview\stream\work\tiff directory
BUILD: Linking w:\nt\private\windows\shell\quikview\stream\work\w6 directory
BUILD: Linking w:\nt\private\windows\shell\quikview\stream\work\wks directory
BUILD: Linking w:\nt\private\windows\shell\quikview\stream\work\wmf directory
BUILD: Linking w:\nt\private\windows\shell\quikview\stream\work\word directory
BUILD: Linking w:\nt\private\windows\shell\quikview\stream\work\work directory
BUILD: Linking w:\nt\private\windows\shell\quikview\stream\work\wp5 directory
BUILD: Linking w:\nt\private\windows\shell\quikview\stream\work\wp6 directory
BUILD: Linking w:\nt\private\windows\shell\quikview\stream\work\wpf directory
BUILD: Linking w:\nt\private\windows\shell\quikview\stream\work\xl5 directory
BUILD: Linking w:\nt\private\windows\shell\quikview\viewer\ut directory
BUILD: Linking w:\nt\private\windows\shell\quikview\viewer\sccview directory
BUILD: Linking w:\nt\private\windows\shell\quikview\viewer\debmp directory
BUILD: Linking w:\nt\private\windows\shell\quikview\viewer\dehex directory
BUILD: Linking w:\nt\private\windows\shell\quikview\viewer\demet directory
BUILD: Linking w:\nt\private\windows\shell\quikview\viewer\dess directory
BUILD: Linking w:\nt\private\windows\shell\quikview\viewer\dewp directory
BUILD: Linking w:\nt\private\windows\shell\control\console directory
BUILD: Linking w:\nt\private\windows\shell\control\scrnsave\bezier directory
BUILD: Linking w:\nt\private\windows\shell\control\scrnsave\default directory
BUILD: Linking w:\nt\private\windows\shell\control\scrnsave\marquee directory
BUILD: Linking w:\nt\private\windows\shell\control\scrnsave\mystify directory
BUILD: Linking w:\nt\private\windows\shell\control\scrnsave\stars directory
BUILD: Linking w:\nt\private\windows\shell\control\scrnsave\logon directory
BUILD: Linking w:\nt\private\windows\shell\control\mmsys directory
BUILD: Linking w:\nt\private\windows\shell\control\joy directory
BUILD: Linking w:\nt\private\windows\shell\control\multimed directory
BUILD: Linking w:\nt\private\windows\shell\control\t1instal directory
BUILD: Linking w:\nt\private\windows\shell\control\devapps\cpl directory
BUILD: Linking w:\nt\private\windows\shell\control\ups directory
BUILD: Linking w:\nt\private\windows\shell\cpls\appwiz directory
BUILD: Linking w:\nt\private\windows\shell\cpls\desk directory
BUILD: Linking w:\nt\private\windows\shell\cpls\intl directory
BUILD: Linking w:\nt\private\windows\shell\cpls\main directory
BUILD: Linking w:\nt\private\windows\shell\cpls\plus directory
BUILD: Linking w:\nt\private\windows\shell\cpls\ports directory
BUILD: Linking w:\nt\private\windows\shell\cpls\system directory
BUILD: Linking w:\nt\private\windows\shell\cpls\access directory
BUILD: Linking w:\nt\private\windows\shell\cpls\utc directory
BUILD: Linking w:\nt\private\windows\shell\internat\dll directory
BUILD: Linking w:\nt\private\windows\shell\internat\exe directory
BUILD: Linking w:\nt\private\windows\shell\fontfldr\fontext\src directory
BUILD: Linking w:\nt\private\windows\shell\fontfldr\fontview directory
BUILD: Linking w:\nt\private\windows\shell\fontfldr\ole2map directory
BUILD: Linking w:\nt\private\windows\shell\lz\lzexpand directory
BUILD: Linking w:\nt\private\windows\shell\lz\dos\expand directory
BUILD: Linking w:\nt\private\windows\shell\lz\dos\compress directory
BUILD: Linking w:\nt\private\windows\shell\progman directory
BUILD: Linking w:\nt\private\windows\shell\taskman directory
BUILD: Linking w:\nt\private\windows\shell\version directory
BUILD: Linking w:\nt\private\windows\shell\sysmon directory
BUILD: Linking w:\nt\private\windows\shell\winfile directory
BUILD: Linking w:\nt\private\windows\shell\winver directory
BUILD: Linking w:\nt\private\windows\shell\grptoreg directory
BUILD: Linking w:\nt\private\windows\shell\convgrp directory
BUILD: Linking w:\nt\private\windows\shell\upedit directory
BUILD: Linking w:\nt\private\windows\shell\cabinet\base directory
BUILD: Linking w:\nt\private\windows\shell\cabinet\basealt directory
BUILD: Linking w:\nt\private\windows\shell\runonce directory
BUILD: Linking w:\nt\private\windows\shell\rundll32 directory
BUILD: Linking w:\nt\private\windows\shell\ctrlfldr directory
BUILD: Linking w:\nt\private\windows\shell\grpconv directory
BUILD: Linking w:\nt\private\windows\shell\docprop directory
BUILD: Linking w:\nt\private\windows\shell\shole directory
BUILD: Linking w:\nt\private\windows\shell\regedit directory
BUILD: Linking w:\nt\private\windows\shell\diskcopy directory
BUILD: Linking w:\nt\private\windows\shell\security\rshx directory
BUILD: Linking w:\nt\private\windows\shell\shcompui directory
BUILD: Linking w:\nt\private\windows\shell\pifmgr directory
BUILD: Linking w:\nt\private\windows\shell\lmui\ntshrui directory
BUILD: Linking w:\nt\private\windows\shell\lmui\netobjs directory
BUILD: Linking w:\nt\private\windows\shell\lmui\shareui directory
BUILD: Linking w:\nt\private\windows\shell\migrate directory
BUILD: Linking w:\nt\private\windows\shell\applets\systray directory
BUILD: Linking w:\nt\private\windows\shell\welcome directory
BUILD: Linking w:\nt\private\windows\shell\tools\lnkdump directory
BUILD: Linking w:\nt\private\windows\shell\tools\fixlinks directory
BUILD: Linking w:\nt\private\windows\shell\tools\pifdump directory
BUILD: Linking w:\nt\private\windows\shell\tools\clipdump directory
BUILD: Linking w:\nt\private\windows\shell\accesory\clipbook\datasrv directory
BUILD: Linking w:\nt\private\windows\shell\accesory\clipbook\clipview directory
BUILD: Linking w:\nt\private\windows\shell\accesory\clock directory
8>Binplacing - shell\lmui\shareui\shareui.inf for Unknown Target
BUILD: Linking w:\nt\private\windows\shell\accesory\notepad directory
BUILD: Linking w:\nt\private\windows\shell\accesory\packager directory
BUILD: Linking w:\nt\private\windows\shell\accesory\mspaint directory
BUILD: Linking w:\nt\private\windows\shell\accesory\hypertrm\ext directory
BUILD: Linking w:\nt\private\windows\shell\accesory\hypertrm\tdll directory
BUILD: Linking w:\nt\private\windows\shell\accesory\hypertrm\htrn_jis directory
BUILD: Linking w:\nt\private\windows\shell\accesory\hypertrm\term directory
BUILD: Linking w:\nt\private\windows\shell\accesory\terminal directory
BUILD: Linking w:\nt\private\windows\shell\accesory\calc directory
BUILD: Linking w:\nt\private\windows\shell\accesory\spechars directory
BUILD: Linking w:\nt\private\windows\shell\accesory\winchat directory
BUILD: Linking w:\nt\private\windows\shell\accesory\kbdswtch\dll directory
9>Preprocessing - shell\accesory\hypertrm\tdll\ver_dll.i for unknown target
BUILD: Linking w:\nt\private\windows\shell\accesory\kbdswtch\src directory
1>Preprocessing - shell\accesory\hypertrm\term\ver_exe.i for unknown target
BUILD: Linking w:\nt\private\windows\shell\accesory\sublocal directory
BUILD: Linking w:\nt\private\windows\shell\accesory\access\skdll directory
BUILD: Linking w:\nt\private\windows\shell\accesory\access\skeys directory
BUILD: Linking w:\nt\private\windows\shell\accesory\access\access directory
BUILD: Linking w:\nt\private\windows\shell\accesory\pbrush directory
BUILD: Linking w:\nt\private\windows\shell\accesory\wordpad directory
BUILD: Linking w:\nt\private\windows\shell\accesory\quickres directory
BUILD: Linking w:\nt\private\windows\shell\accesory\write directory
BUILD: Linking w:\nt\private\windows\shell\accesory\netclip\proxy directory
BUILD: Linking w:\nt\private\windows\shell\accesory\netclip\netclip directory
BUILD: Linking w:\nt\private\windows\shell\games\reversi directory
BUILD: Linking w:\nt\private\windows\shell\games\sol directory
BUILD: Linking w:\nt\private\windows\spooler\spoolss\dll directory
BUILD: Linking w:\nt\private\windows\spooler\spoolss\client\km directory
BUILD: Linking w:\nt\private\windows\spooler\spoolss\server\km directory
BUILD: Linking w:\nt\private\windows\spooler\spoolss\win32\km directory
13>Binplacing - shell\accesory\wordpad\conv\i386\write32.wpc for Unknown Target
BUILD: Linking w:\nt\private\windows\spooler\localspl\km directory
BUILD: Linking w:\nt\private\windows\spooler\printman\km directory
BUILD: Linking w:\nt\private\windows\spooler\prtprocs\winprint\km directory
13>Binplacing - shell\accesory\wordpad\conv\i386\mswd6_32.wpc for Unknown Target

BUILD: Linking w:\nt\private\windows\spooler\monitors\local directory
BUILD: Linking w:\nt\private\windows\spooler\monitors\pjlmon directory
BUILD: Linking w:\nt\private\windows\spooler\monitors\lmmon directory
BUILD: Linking w:\nt\private\windows\spooler\splsetup\base directory
BUILD: Linking w:\nt\private\windows\spooler\splsetup\basealt directory
BUILD: Linking w:\nt\private\windows\spooler\printui\base directory
BUILD: Linking w:\nt\private\windows\spooler\printui\basealt directory
BUILD: Linking w:\nt\private\windows\spooler\splexts directory
BUILD: Linking w:\nt\private\windows\spooler\exts directory
BUILD: Linking w:\nt\private\windows\media\winmm directory
BUILD: Linking w:\nt\private\windows\media\mmdrv directory
BUILD: Linking w:\nt\private\windows\media\mciwave directory
BUILD: Linking w:\nt\private\windows\media\mciseq directory
BUILD: Linking w:\nt\private\windows\media\mcicda directory
BUILD: Linking w:\nt\private\windows\media\mciole directory
BUILD: Linking w:\nt\private\windows\media\drivers\joystick\dll directory
BUILD: Linking w:\nt\private\windows\media\drivers\sidewndr\dll directory
BUILD: Linking w:\nt\private\windows\media\drivers\sndsys32\dll directory
BUILD: Linking w:\nt\private\windows\media\drivers\mvaudio\dll directory
BUILD: Linking w:\nt\private\windows\media\drivers\necsnd directory
BUILD: Linking w:\nt\private\windows\media\drivers\mpu401 directory
BUILD: Linking w:\nt\private\windows\media\msacm\msacm directory
BUILD: Linking w:\nt\private\windows\media\msacm\msacmmap directory
BUILD: Linking w:\nt\private\windows\media\msacm\imaadpcm directory
BUILD: Linking w:\nt\private\windows\media\msacm\msadpcm directory
BUILD: Linking w:\nt\private\windows\media\msacm\gsm610 directory
BUILD: Linking w:\nt\private\windows\media\msacm\g711 directory
BUILD: Linking w:\nt\private\windows\media\dsound directory
BUILD: Linking w:\nt\private\windows\media\avi\video directory
8>Binplacing - media\msacm\msacm\msacm.dll for Unknown Target
BUILD: Linking w:\nt\private\windows\media\avi\msvidc directory
BUILD: Linking w:\nt\private\windows\media\avi\msrle directory
BUILD: Linking w:\nt\private\windows\media\avi\avifile directory
8>Binplacing - media\msacm\msacm\msacm.sym for Unknown Target
BUILD: Linking w:\nt\private\windows\media\avi\avicap.io directory
BUILD: Linking w:\nt\private\windows\media\avi\mciavi32 directory
BUILD: Linking w:\nt\private\windows\media\avi\vidcap32 directory
BUILD: Linking w:\nt\private\windows\media\synth directory
BUILD: Linking w:\nt\private\windows\media\mixerapp directory
BUILD: Linking w:\nt\private\windows\media\sndrec32\soundrec directory
BUILD: Linking w:\nt\private\windows\media\mplayer2 directory
BUILD: Linking w:\nt\private\windows\media\midimap directory
BUILD: Linking w:\nt\private\windows\media\cdplayer directory
BUILD: Linking w:\nt\private\windows\media\dplay\dplay directory
BUILD: Linking w:\nt\private\windows\media\dplay\serial directory
BUILD: Linking w:\nt\private\windows\media\dplay\dpwsock directory
11>Binplacing - media\avi\mciavi32\vfw16\msvideo.dll for Unknown Target
BUILD: Linking w:\nt\private\windows\netdde\src\nddenb32 directory
BUILD: Linking w:\nt\private\windows\netdde\src\ndeapi\server directory
11>Binplacing - media\avi\mciavi32\vfw16\mciavi.drv for Unknown Target
BUILD: Linking w:\nt\private\windows\netdde\src\ndeapi\client directory
BUILD: Linking w:\nt\private\windows\netdde\src\ddeshare directory
8>Linking Executable - w:\nt\public\sdk\lib\i386\dplay.dll for i386
11>Binplacing - media\avi\mciavi32\vfw16\mciseq.drv for Unknown Target
1>Binplacing - media\midimap\midimap.cfg for Unknown Target
BUILD: Linking w:\nt\private\windows\netdde\src\nddeagnt directory
11>Binplacing - media\avi\mciavi32\vfw16\mciwave.drv for Unknown Target
BUILD: Linking w:\nt\private\windows\netdde\src\netdde directory
1>Binplacing - media\midimap\general.idf for Unknown Target
BUILD: Linking w:\nt\private\windows\netdde\src\nddeexts directory
BUILD: Linking w:\nt\private\windows\gina\msgina directory
1>Binplacing - media\midimap\hindered.idf for Unknown Target
BUILD: Linking w:\nt\private\windows\gina\winlogon directory
BUILD: Linking w:\nt\private\windows\gina\userinit directory
BUILD: Linking w:\nt\private\windows\gina\mpnotify directory
BUILD: Linking w:\nt\private\windows\gina\savedump directory
1>Binplacing - media\midimap\msadlib.idf for Unknown Target
BUILD: Linking w:\nt\private\windows\gina\userenv directory
BUILD: Linking w:\nt\private\windows\gina\delprof directory
BUILD: Linking w:\nt\private\windows\gina\policy\poledit\ansi directory
BUILD: Linking w:\nt\private\windows\gina\policy\polsetup directory
13>Linking Executable - gina\winlogon\obj\i386\winlogon.exe for i386
BUILD: Linking w:\nt\private\windows\win4help\winhelp directory
BUILD: Linking w:\nt\private\windows\win4help\ftsrch directory
BUILD: Linking w:\nt\private\windows\win4help\compiler\hwdll directory
BUILD: Linking w:\nt\private\windows\win4help\compiler\hcw directory
BUILD: Linking w:\nt\private\windows\win4help\compiler\hcrtf directory
BUILD: Linking w:\nt\private\windows\win4help\winhstb directory
BUILD: Linking w:\nt\private\windows\rover\filesync\linkinfo directory
BUILD: Linking w:\nt\private\windows\rover\filesync\core directory
BUILD: Linking w:\nt\private\windows\rover\filesync\syncui directory
BUILD: Linking w:\nt\private\windows\rover\filesync\syncapp directory
BUILD: Linking w:\nt\private\windows\richedit\src directory
BUILD: Linking w:\nt\private\windows\pnp\umpnpmgr directory
BUILD: Linking w:\nt\private\windows\pnp\cfgmgr32 directory
BUILD: Linking w:\nt\private\windows\setup\setupapi directory
BUILD: Linking w:\nt\private\windows\setup\syssetup directory
BUILD: Linking w:\nt\private\windows\setup\bom\size directory
BUILD: Linking w:\nt\private\windows\setup\bom\infs directory
BUILD: Linking w:\nt\private\windows\setup\bom\makedisk directory
BUILD: Linking w:\nt\private\windows\setup\bom\layout directory
BUILD: Linking w:\nt\private\windows\setup\bom\cats directory
BUILD: Linking w:\nt\private\windows\setup\bom\acllist directory
BUILD: Linking w:\nt\private\windows\setup\bom\dcomp directory
BUILD: Linking w:\nt\private\windows\setup\bom\filter directory
BUILD: Linking w:\nt\private\windows\setup\bom\msize directory
BUILD: Linking w:\nt\private\windows\setup\bom\mbytes directory
BUILD: Linking w:\nt\private\windows\setup\bom\mlayout directory
BUILD: Linking w:\nt\private\windows\setup\bom\mcpyfile directory
BUILD: Linking w:\nt\private\windows\setup\bom\mtc directory
BUILD: Linking w:\nt\private\windows\setup\bom\mcopy directory
BUILD: Linking w:\nt\private\windows\setup\bom\infsize directory
BUILD: Linking w:\nt\private\windows\setup\bom\files directory
BUILD: Linking w:\nt\private\windows\setup\bom\autorun directory
BUILD: Linking w:\nt\private\windows\setup\legacy\dll directory
BUILD: Linking w:\nt\private\windows\setup\legacy\exe directory
BUILD: Linking w:\nt\private\windows\setup\moricons directory
BUILD: Linking w:\nt\private\windows\setup\textmode\user directory
BUILD: Linking w:\nt\private\windows\setup\textmode\spddlang\sbcs directory
BUILD: Linking w:\nt\private\windows\setup\textmode\kernel directory
BUILD: Linking w:\nt\private\windows\setup\winnt32 directory
BUILD: Linking w:\nt\private\windows\setup\patch directory
BUILD: Linking w:\nt\private\windows\setup\patchdll directory
BUILD: Linking w:\nt\private\windows\setup\stripinf directory
BUILD: Linking w:\nt\private\windows\setup\localinf directory
BUILD: Linking w:\nt\private\windows\setup\oeminf directory
BUILD: Linking w:\nt\private\windows\setup\inf\win4\tools\prodfilt directory
BUILD: Linking w:\nt\private\windows\setup\inf\win4\tools\xdosnet directory
BUILD: Linking w:\nt\private\windows\setup\books directory
BUILD: Linking w:\nt\private\windows\setup\basewin directory
BUILD: Linking w:\nt\private\windows\setup\oempre\sysdiff directory
BUILD: Linking w:\nt\private\windows\setup\oempre\sprestrt directory
BUILD: Linking w:\nt\private\windows\setup\oempre\rollback directory
BUILD: Linking w:\nt\private\windows\setup\oempre\lfn directory
BUILD: Linking w:\nt\private\windows\setup\oempre\devpre directory
BUILD: Linking w:\nt\private\windows\ole\client directory
BUILD: Linking w:\nt\private\windows\ole\server directory
BUILD: Linking w:\nt\private\windows\ep\aboutwep directory
BUILD: Linking w:\nt\private\windows\ep\carddll directory
BUILD: Linking w:\nt\private\windows\ep\cruel directory
BUILD: Linking w:\nt\private\windows\ep\golf directory
BUILD: Linking w:\nt\private\windows\ep\oldtp directory
BUILD: Linking w:\nt\private\windows\ep\pegged directory
BUILD: Linking w:\nt\private\windows\ep\snake directory
BUILD: Linking w:\nt\private\windows\ep\tictac directory
BUILD: Linking w:\nt\private\windows\ep\winmine directory
BUILD: Linking w:\nt\private\windows\ep\freecell directory
BUILD: Linking w:\nt\private\windows\opengl\client directory
BUILD: Linking w:\nt\private\windows\opengl\mcd\client directory
BUILD: Linking w:\nt\private\windows\opengl\mcd\server directory
BUILD: Linking w:\nt\private\windows\opengl\glu\glu32 directory
BUILD: Linking w:\nt\private\windows\opengl\gls\lib directory
BUILD: Linking w:\nt\private\windows\opengl\scrsave\3dfo\km directory
BUILD: Linking w:\nt\private\windows\opengl\scrsave\flwbox\km directory
BUILD: Linking w:\nt\private\windows\opengl\scrsave\maze\km directory
BUILD: Linking w:\nt\private\windows\opengl\scrsave\pipes\km directory
BUILD: Linking w:\nt\private\windows\opengl\scrsave\text3d\km directory
BUILD: Done

    5 files compiled -     0 LPS
    1 libraries built
    2 executables built

ADVAPI also 'compiles' now because I wrote placeholder functions for the cryptapi.c.

yourepicfailure
User avatar
Donator
Posts: 1256
Joined: Mon Jul 23, 2012 9:40 pm
Location: Flying high in a DC10

Re: Windows NT 4 Source Compiled! version 2

Post by yourepicfailure »

I can't remember for sure, but the log files kept mentioning shell32.dll, shell.dll, and some other critical dlls. It was one component under /windows/shell. I'll look through my list of go's and nogo's to be sure.
I also need to send you a file required for winver to compile.

EDIT: MSCTLS as one that failed:
Build Log wrote: btnlist.c(121) : error C2143: syntax error : missing ')' before '*'
btnlist.c(121) : error C2081: 'CREATELISTBUTTON' : name in formal parameter list illegal
btnlist.c(121) : error C2143: syntax error : missing '{' before '*'
btnlist.c(121) : error C2370: 'BOOL' : redefinition; different storage class
btnlist.c(121) : error C2146: syntax error : missing ';' before identifier 'fAnsi'
btnlist.c(121) : error C2059: syntax error : ')'
btnlist.c(143) : error C2065: 'BUTTONLISTBOX' : undeclared identifier
btnlist.c(143) : error C2099: initializer is not a constant
btnlist.c(297) : error C2065: 'BL_ADDBUTTONA' : undeclared identifier
btnlist.c(297) : error C2051: case expression not constant
btnlist.c(298) : error C2065: 'BL_ADDBUTTONW' : undeclared identifier
btnlist.c(298) : error C2051: case expression not constant
btnlist.c(301) : error C2065: 'BL_ERR' : undeclared identifier
btnlist.c(309) : error C2065: 'CREATELISTBUTTONW' : undeclared identifier
btnlist.c(309) : error C2059: syntax error : ')'
btnlist.c(312) : error C2065: 'BL_ERRSPACE' : undeclared identifier
btnlist.c(317) : error C2065: 'BL_DELETEBUTTONA' : undeclared identifier
btnlist.c(317) : error C2051: case expression not constant
btnlist.c(318) : error C2065: 'BL_DELETEBUTTONW' : undeclared identifier
btnlist.c(318) : error C2051: case expression not constant
btnlist.c(321) : error C2065: 'BL_GETCARETINDEX' : undeclared identifier
btnlist.c(321) : error C2051: case expression not constant
btnlist.c(324) : error C2065: 'BL_GETCOUNT' : undeclared identifier
btnlist.c(324) : error C2051: case expression not constant
btnlist.c(327) : error C2065: 'BL_GETCURSEL' : undeclared identifier
btnlist.c(327) : error C2051: case expression not constant
btnlist.c(330) : error C2065: 'BL_GETITEMDATA' : undeclared identifier
btnlist.c(330) : error C2051: case expression not constant
btnlist.c(337) : error C2065: 'BL_GETITEMRECT' : undeclared identifier
btnlist.c(337) : error C2051: case expression not constant
btnlist.c(341) : error C2065: 'BL_GETTEXTA' : undeclared identifier
btnlist.c(341) : error C2051: case expression not constant
btnlist.c(342) : error C2065: 'BL_GETTEXTW' : undeclared identifier
btnlist.c(342) : error C2051: case expression not constant
btnlist.c(375) : error C2065: 'BL_GETTEXTLEN' : undeclared identifier
btnlist.c(375) : error C2051: case expression not constant
btnlist.c(382) : error C2065: 'BL_GETTOPINDEX' : undeclared identifier
btnlist.c(382) : error C2051: case expression not constant
btnlist.c(386) : error C2065: 'BL_INSERTBUTTONA' : undeclared identifier
btnlist.c(386) : error C2051: case expression not constant
btnlist.c(387) : error C2065: 'BL_INSERTBUTTONW' : undeclared identifier
btnlist.c(387) : error C2051: case expression not constant
btnlist.c(394) : error C2065: 'CREATELISTBUTTON' : undeclared identifier
btnlist.c(394) : error C2059: syntax error : ')'
btnlist.c(400) : error C2065: 'BL_RESETCONTENT' : undeclared identifier
btnlist.c(400) : error C2051: case expression not constant
btnlist.c(403) : error C2065: 'BL_SETCARETINDEX' : undeclared identifier
btnlist.c(403) : error C2051: case expression not constant
btnlist.c(406) : error C2065: 'BL_SETCURSEL' : undeclared identifier
btnlist.c(406) : error C2051: case expression not constant
btnlist.c(409) : error C2065: 'BL_SETITEMDATA' : undeclared identifier
btnlist.c(409) : error C2051: case expression not constant
btnlist.c(414) : error C2065: 'BL_OKAY' : undeclared identifier
btnlist.c(419) : error C2065: 'BL_SETTOPINDEX' : undeclared identifier
btnlist.c(419) : error C2051: case expression not constant
btnlist.c(456) : error C2282: 'BOOL' is followed by 'BL_OnCreate' (missing ','?)
btnlist.c(594) : error C2059: syntax error : '}'
btnlist.c(1561) : error C2143: syntax error : missing ')' before '*'
btnlist.c(1561) : error C2081: 'CREATELISTBUTTON' : name in formal parameter list illegal
btnlist.c(1561) : error C2143: syntax error : missing '{' before '*'
btnlist.c(1561) : error C2370: 'BOOL' : redefinition; different storage class
btnlist.c(1561) : error C2146: syntax error : missing ';' before identifier 'fAnsi'
btnlist.c(1561) : error C2059: syntax error : ')'
btnlist.c(1562) : error C2054: expected '(' to follow 'fAnsi'
header.c(5) : error C2065: 'HEADERCLASSNAMEW' : undeclared identifier
header.c(5) : error C2099: initializer is not a constant
header.c(6) : error C2065: 'HEADERCLASSNAMEA' : undeclared identifier
header.c(6) : error C2099: initializer is not a constant
header.c(120) : error C2065: 'HBT_SPRING' : undeclared identifier
header.c(230) : error C2065: 'HBN_BEGINADJUST' : undeclared identifier
header.c(315) : error C2065: 'HBN_ENDADJUST' : undeclared identifier
header.c(357) : error C2065: 'CCS_NOHILITE' : undeclared identifier
header.c(472) : error C2065: 'HBN_BEGINDRAG' : undeclared identifier
header.c(493) : error C2065: 'HBN_DRAGGING' : undeclared identifier
header.c(496) : error C2065: 'HBN_ENDDRAG' : undeclared identifier
header.c(587) : error C2065: 'SB_SETBORDERS' : undeclared identifier
header.c(587) : error C2051: case expression not constant
header.c(606) : error C2065: 'HB_SAVERESTORE' : undeclared identifier
header.c(606) : error C2051: case expression not constant
header.c(638) : error C2065: 'HB_ADJUST' : undeclared identifier
header.c(638) : error C2051: case expression not constant
header.c(642) : error C2065: 'HB_GETPARTS' : undeclared identifier
header.c(642) : error C2051: case expression not constant
header.c(663) : error C2065: 'HB_SHOWTOGGLE' : undeclared identifier
header.c(663) : error C2051: case expression not constant
menuhelp.c(128) : error C2065: 'HBN_BEGINDRAG' : undeclared identifier
menuhelp.c(128) : error C2051: case expression not constant
menuhelp.c(133) : error C2065: 'HBN_BEGINADJUST' : undeclared identifier
menuhelp.c(133) : error C2051: case expression not constant
menuhelp.c(156) : error C2065: 'HBN_ENDDRAG' : undeclared identifier
menuhelp.c(156) : error C2051: case expression not constant
menuhelp.c(157) : error C2065: 'HBN_ENDADJUST' : undeclared identifier
menuhelp.c(157) : error C2051: case expression not constant
status.c(168) : error C2065: 'SB_SETBORDERS' : undeclared identifier
status.c(379) : error C2065: 'CCS_NOHILITE' : undeclared identifier
status.c(840) : error C2051: case expression not constant
tbcust.c(245) : error C2065: 'LPADJUSTINFO' : undeclared identifier
tbcust.c(245) : error C2146: syntax error : missing ';' before identifier 'lpInfo'
tbcust.c(245) : error C2065: 'lpInfo' : undeclared identifier
tbcust.c(308) : error C2065: 'TBN_ADJUSTINFO' : undeclared identifier
tbcust.c(313) : error C2146: syntax error : missing ';' before identifier 'hInfo'
tbcust.c(317) : error C2223: left of '->tbButton' must point to struct/union
tbcust.c(320) : error C2223: left of '->szDescription' must point to struct/union
tbcust.c(321) : error C2223: left of '->szDescription' must point to struct/union
tbcust.c(321) : error C2198: 'lstrlenW' : too few actual parameters
tbcust.c(321) : error C2198: 'GetTextExtentPointW' : too few actual parameters
tbcust.c(328) : error C2223: left of '->tbButton' must point to struct/union
tbcust.c(328) : error C2198: 'PositionFromID' : too few actual parameters
tbcust.c(333) : error C2223: left of '->tbButton' must point to struct/union
tbcust.c(335) : error C2223: left of '->szDescription' must point to struct/union
tbcust.c(335) : error C2198: 'SendMessageW' : too few actual parameters
tbcust.c(339) : error C2223: left of '->tbButton' must point to struct/union
tbcust.c(339) : error C2198: 'SendMessageW' : too few actual parameters
tbcust.c(351) : error C2223: left of '->szDescription' must point to struct/union
tbcust.c(351) : error C2198: 'SendMessageW' : too few actual parameters
tbcust.c(532) : error C2146: syntax error : missing ';' before identifier 'lpInfo'
tbcust.c(533) : error C2275: 'INT' : illegal use of this type as an expression
tbcust.c(533) : error C2146: syntax error : missing ';' before identifier 'iTopDst'
tbcust.c(533) : error C2065: 'iTopDst' : undeclared identifier
tbcust.c(617) : error C2088: '&' : illegal for struct
tbcust.c(627) : error C2146: syntax error : missing ';' before identifier 'hInfo'
tbcust.c(631) : error C2223: left of '->tbButton' must point to struct/union
tbcust.c(631) : error C2198: 'SendMessageW' : too few actual parameters
tbcust.c(1127) : error C2146: syntax error : missing ';' before identifier 'lpInfo'
tbcust.c(1128) : error C2275: 'PTBBUTTON' : illegal use of this type as an expression
tbcust.c(1128) : error C2146: syntax error : missing ';' before identifier 'ptbButton'
tbcust.c(1128) : error C2065: 'ptbButton' : undeclared identifier
tbcust.c(1129) : error C2275: 'PTBSTATE' : illegal use of this type as an expression
tbcust.c(1129) : error C2146: syntax error : missing ';' before identifier 'pTemp'
tbcust.c(1129) : error C2065: 'pTemp' : undeclared identifier
tbcust.c(1152) : error C2223: left of '->fsStyle' must point to struct/union
tbcust.c(1154) : error C2223: left of '->fsState' must point to struct/union
tbcust.c(1160) : error C2223: left of '->idCommand' must point to struct/union
tbcust.c(1195) : error C2223: left of '->fsStyle' must point to struct/union
tbcust.c(1196) : error C2223: left of '->iBitmap' must point to struct/union
tbcust.c(1198) : error C2223: left of '->fsState' must point to struct/union
tbcust.c(1200) : error C2223: left of '->fsState' must point to struct/union
tbcust.c(1204) : error C2223: left of '->idCommand' must point to struct/union
tbcust.c(1205) : error C2223: left of '->iBitmap' must point to struct/union
tbcust.c(1223) : error C2146: syntax error : missing ';' before identifier 'hInfo'
tbcust.c(1225) : error C2223: left of '->tbButton' must point to struct/union
tbcust.c(1227) : error C2223: left of '->tbButton' must point to struct/union
tbcust.c(1227) : error C2198: 'PositionFromID' : too few actual parameters
tbcust.c(1229) : error C2223: left of '->tbButton' must point to struct/union
toolbar.c(1138) : error C2065: 'TB_SETBUTTON' : undeclared identifier
toolbar.c(1138) : error C2051: case expression not constant
toolbar.c(1158) : error C2065: 'TB_GETBUTTONRECT' : undeclared identifier
toolbar.c(1158) : error C2051: case expression not constant
lib() : error LNK1181: cannot open input file "obj\i386\btnlist.obj"
link() : error LNK1181: cannot open input file "obj\i386\btnlist.obj"
binplace() : error BNP0000: Unable to place file W:\NT\public\sdk\lib\i386\comctl32.dll - exiting
So comctls.dll will not compile.

And for that PowerPc Exclusive. (dag nab, didn't write the folder name)
The log wrote: stubs.c(88) : error C2065: 'HRESULT' : undeclared identifier
stubs.c(88) : error C2143: syntax error : missing ')' before 'unsigned long constant'
stubs.c(88) : error C2059: syntax error : ')'
stubs.c(89) : error C4035: 'SHGetDesktopFolder' : no return value
stubs.c(106) : error C2143: syntax error : missing ')' before 'unsigned long constant'
stubs.c(106) : error C2059: syntax error : ')'
stubs.c(107) : error C4035: 'SHGetInstanceExplorer' : no return value
stubs.c(112) : error C2143: syntax error : missing ')' before 'unsigned long constant'
stubs.c(112) : error C2059: syntax error : ')'
stubs.c(113) : error C4035: 'SHGetMalloc' : no return value
stubs.c(130) : error C2143: syntax error : missing ')' before 'unsigned long constant'
stubs.c(130) : error C2059: syntax error : ')'
stubs.c(131) : error C4035: 'SHGetSpecialFolderLocation' : no return value
stubs.c(136) : error C2143: syntax error : missing ')' before 'unsigned long constant'
stubs.c(136) : error C2059: syntax error : ')'
stubs.c(137) : error C4035: 'SHLoadInProc' : no return value
stubs.c(192) : error C2143: syntax error : missing ')' before 'unsigned long constant'
stubs.c(192) : error C2059: syntax error : ')'
stubs.c(193) : error C4035: 'DllGetClassObject' : no return value
lib() : error LNK1181: cannot open input file "obj\i386\stubs.obj"
link() : error LNK1181: cannot open input file "obj\i386\shell32.lib"
lib() : error LNK1181: cannot open input file "obj\i386\stubs.obj"
link() : error LNK1181: cannot open input file "obj\i386\shell32.exp"
binplace() : error BNP0000: Unable to place file obj\i386\shell32.dll - exiting
"C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off"
Image
You will never tear me from the grasp of the Pentium M!

Stephanos
Posts: 297
Joined: Fri Dec 26, 2014 5:38 am
Contact:

Re: Windows NT 4 Source Compiled! version 2

Post by Stephanos »

yourepicfailure wrote:I can't remember for sure, but the log files kept mentioning shell32.dll, shell.dll, and some other critical dlls. It was one component under /windows/shell. I'll look through my list of go's and nogo's to be sure.
I also need to send you a file required for winver to compile.

EDIT: MSCTLS as one that failed:
Build Log wrote: btnlist.c(121) : error C2143: syntax error : missing ')' before '*'
btnlist.c(121) : error C2081: 'CREATELISTBUTTON' : name in formal parameter list illegal
btnlist.c(121) : error C2143: syntax error : missing '{' before '*'
btnlist.c(121) : error C2370: 'BOOL' : redefinition; different storage class
btnlist.c(121) : error C2146: syntax error : missing ';' before identifier 'fAnsi'
btnlist.c(121) : error C2059: syntax error : ')'
btnlist.c(143) : error C2065: 'BUTTONLISTBOX' : undeclared identifier
btnlist.c(143) : error C2099: initializer is not a constant
btnlist.c(297) : error C2065: 'BL_ADDBUTTONA' : undeclared identifier
btnlist.c(297) : error C2051: case expression not constant
btnlist.c(298) : error C2065: 'BL_ADDBUTTONW' : undeclared identifier
btnlist.c(298) : error C2051: case expression not constant
btnlist.c(301) : error C2065: 'BL_ERR' : undeclared identifier
btnlist.c(309) : error C2065: 'CREATELISTBUTTONW' : undeclared identifier
btnlist.c(309) : error C2059: syntax error : ')'
btnlist.c(312) : error C2065: 'BL_ERRSPACE' : undeclared identifier
btnlist.c(317) : error C2065: 'BL_DELETEBUTTONA' : undeclared identifier
btnlist.c(317) : error C2051: case expression not constant
btnlist.c(318) : error C2065: 'BL_DELETEBUTTONW' : undeclared identifier
btnlist.c(318) : error C2051: case expression not constant
btnlist.c(321) : error C2065: 'BL_GETCARETINDEX' : undeclared identifier
btnlist.c(321) : error C2051: case expression not constant
btnlist.c(324) : error C2065: 'BL_GETCOUNT' : undeclared identifier
btnlist.c(324) : error C2051: case expression not constant
btnlist.c(327) : error C2065: 'BL_GETCURSEL' : undeclared identifier
btnlist.c(327) : error C2051: case expression not constant
btnlist.c(330) : error C2065: 'BL_GETITEMDATA' : undeclared identifier
btnlist.c(330) : error C2051: case expression not constant
btnlist.c(337) : error C2065: 'BL_GETITEMRECT' : undeclared identifier
btnlist.c(337) : error C2051: case expression not constant
btnlist.c(341) : error C2065: 'BL_GETTEXTA' : undeclared identifier
btnlist.c(341) : error C2051: case expression not constant
btnlist.c(342) : error C2065: 'BL_GETTEXTW' : undeclared identifier
btnlist.c(342) : error C2051: case expression not constant
btnlist.c(375) : error C2065: 'BL_GETTEXTLEN' : undeclared identifier
btnlist.c(375) : error C2051: case expression not constant
btnlist.c(382) : error C2065: 'BL_GETTOPINDEX' : undeclared identifier
btnlist.c(382) : error C2051: case expression not constant
btnlist.c(386) : error C2065: 'BL_INSERTBUTTONA' : undeclared identifier
btnlist.c(386) : error C2051: case expression not constant
btnlist.c(387) : error C2065: 'BL_INSERTBUTTONW' : undeclared identifier
btnlist.c(387) : error C2051: case expression not constant
btnlist.c(394) : error C2065: 'CREATELISTBUTTON' : undeclared identifier
btnlist.c(394) : error C2059: syntax error : ')'
btnlist.c(400) : error C2065: 'BL_RESETCONTENT' : undeclared identifier
btnlist.c(400) : error C2051: case expression not constant
btnlist.c(403) : error C2065: 'BL_SETCARETINDEX' : undeclared identifier
btnlist.c(403) : error C2051: case expression not constant
btnlist.c(406) : error C2065: 'BL_SETCURSEL' : undeclared identifier
btnlist.c(406) : error C2051: case expression not constant
btnlist.c(409) : error C2065: 'BL_SETITEMDATA' : undeclared identifier
btnlist.c(409) : error C2051: case expression not constant
btnlist.c(414) : error C2065: 'BL_OKAY' : undeclared identifier
btnlist.c(419) : error C2065: 'BL_SETTOPINDEX' : undeclared identifier
btnlist.c(419) : error C2051: case expression not constant
btnlist.c(456) : error C2282: 'BOOL' is followed by 'BL_OnCreate' (missing ','?)
btnlist.c(594) : error C2059: syntax error : '}'
btnlist.c(1561) : error C2143: syntax error : missing ')' before '*'
btnlist.c(1561) : error C2081: 'CREATELISTBUTTON' : name in formal parameter list illegal
btnlist.c(1561) : error C2143: syntax error : missing '{' before '*'
btnlist.c(1561) : error C2370: 'BOOL' : redefinition; different storage class
btnlist.c(1561) : error C2146: syntax error : missing ';' before identifier 'fAnsi'
btnlist.c(1561) : error C2059: syntax error : ')'
btnlist.c(1562) : error C2054: expected '(' to follow 'fAnsi'
header.c(5) : error C2065: 'HEADERCLASSNAMEW' : undeclared identifier
header.c(5) : error C2099: initializer is not a constant
header.c(6) : error C2065: 'HEADERCLASSNAMEA' : undeclared identifier
header.c(6) : error C2099: initializer is not a constant
header.c(120) : error C2065: 'HBT_SPRING' : undeclared identifier
header.c(230) : error C2065: 'HBN_BEGINADJUST' : undeclared identifier
header.c(315) : error C2065: 'HBN_ENDADJUST' : undeclared identifier
header.c(357) : error C2065: 'CCS_NOHILITE' : undeclared identifier
header.c(472) : error C2065: 'HBN_BEGINDRAG' : undeclared identifier
header.c(493) : error C2065: 'HBN_DRAGGING' : undeclared identifier
header.c(496) : error C2065: 'HBN_ENDDRAG' : undeclared identifier
header.c(587) : error C2065: 'SB_SETBORDERS' : undeclared identifier
header.c(587) : error C2051: case expression not constant
header.c(606) : error C2065: 'HB_SAVERESTORE' : undeclared identifier
header.c(606) : error C2051: case expression not constant
header.c(638) : error C2065: 'HB_ADJUST' : undeclared identifier
header.c(638) : error C2051: case expression not constant
header.c(642) : error C2065: 'HB_GETPARTS' : undeclared identifier
header.c(642) : error C2051: case expression not constant
header.c(663) : error C2065: 'HB_SHOWTOGGLE' : undeclared identifier
header.c(663) : error C2051: case expression not constant
menuhelp.c(128) : error C2065: 'HBN_BEGINDRAG' : undeclared identifier
menuhelp.c(128) : error C2051: case expression not constant
menuhelp.c(133) : error C2065: 'HBN_BEGINADJUST' : undeclared identifier
menuhelp.c(133) : error C2051: case expression not constant
menuhelp.c(156) : error C2065: 'HBN_ENDDRAG' : undeclared identifier
menuhelp.c(156) : error C2051: case expression not constant
menuhelp.c(157) : error C2065: 'HBN_ENDADJUST' : undeclared identifier
menuhelp.c(157) : error C2051: case expression not constant
status.c(168) : error C2065: 'SB_SETBORDERS' : undeclared identifier
status.c(379) : error C2065: 'CCS_NOHILITE' : undeclared identifier
status.c(840) : error C2051: case expression not constant
tbcust.c(245) : error C2065: 'LPADJUSTINFO' : undeclared identifier
tbcust.c(245) : error C2146: syntax error : missing ';' before identifier 'lpInfo'
tbcust.c(245) : error C2065: 'lpInfo' : undeclared identifier
tbcust.c(308) : error C2065: 'TBN_ADJUSTINFO' : undeclared identifier
tbcust.c(313) : error C2146: syntax error : missing ';' before identifier 'hInfo'
tbcust.c(317) : error C2223: left of '->tbButton' must point to struct/union
tbcust.c(320) : error C2223: left of '->szDescription' must point to struct/union
tbcust.c(321) : error C2223: left of '->szDescription' must point to struct/union
tbcust.c(321) : error C2198: 'lstrlenW' : too few actual parameters
tbcust.c(321) : error C2198: 'GetTextExtentPointW' : too few actual parameters
tbcust.c(328) : error C2223: left of '->tbButton' must point to struct/union
tbcust.c(328) : error C2198: 'PositionFromID' : too few actual parameters
tbcust.c(333) : error C2223: left of '->tbButton' must point to struct/union
tbcust.c(335) : error C2223: left of '->szDescription' must point to struct/union
tbcust.c(335) : error C2198: 'SendMessageW' : too few actual parameters
tbcust.c(339) : error C2223: left of '->tbButton' must point to struct/union
tbcust.c(339) : error C2198: 'SendMessageW' : too few actual parameters
tbcust.c(351) : error C2223: left of '->szDescription' must point to struct/union
tbcust.c(351) : error C2198: 'SendMessageW' : too few actual parameters
tbcust.c(532) : error C2146: syntax error : missing ';' before identifier 'lpInfo'
tbcust.c(533) : error C2275: 'INT' : illegal use of this type as an expression
tbcust.c(533) : error C2146: syntax error : missing ';' before identifier 'iTopDst'
tbcust.c(533) : error C2065: 'iTopDst' : undeclared identifier
tbcust.c(617) : error C2088: '&' : illegal for struct
tbcust.c(627) : error C2146: syntax error : missing ';' before identifier 'hInfo'
tbcust.c(631) : error C2223: left of '->tbButton' must point to struct/union
tbcust.c(631) : error C2198: 'SendMessageW' : too few actual parameters
tbcust.c(1127) : error C2146: syntax error : missing ';' before identifier 'lpInfo'
tbcust.c(1128) : error C2275: 'PTBBUTTON' : illegal use of this type as an expression
tbcust.c(1128) : error C2146: syntax error : missing ';' before identifier 'ptbButton'
tbcust.c(1128) : error C2065: 'ptbButton' : undeclared identifier
tbcust.c(1129) : error C2275: 'PTBSTATE' : illegal use of this type as an expression
tbcust.c(1129) : error C2146: syntax error : missing ';' before identifier 'pTemp'
tbcust.c(1129) : error C2065: 'pTemp' : undeclared identifier
tbcust.c(1152) : error C2223: left of '->fsStyle' must point to struct/union
tbcust.c(1154) : error C2223: left of '->fsState' must point to struct/union
tbcust.c(1160) : error C2223: left of '->idCommand' must point to struct/union
tbcust.c(1195) : error C2223: left of '->fsStyle' must point to struct/union
tbcust.c(1196) : error C2223: left of '->iBitmap' must point to struct/union
tbcust.c(1198) : error C2223: left of '->fsState' must point to struct/union
tbcust.c(1200) : error C2223: left of '->fsState' must point to struct/union
tbcust.c(1204) : error C2223: left of '->idCommand' must point to struct/union
tbcust.c(1205) : error C2223: left of '->iBitmap' must point to struct/union
tbcust.c(1223) : error C2146: syntax error : missing ';' before identifier 'hInfo'
tbcust.c(1225) : error C2223: left of '->tbButton' must point to struct/union
tbcust.c(1227) : error C2223: left of '->tbButton' must point to struct/union
tbcust.c(1227) : error C2198: 'PositionFromID' : too few actual parameters
tbcust.c(1229) : error C2223: left of '->tbButton' must point to struct/union
toolbar.c(1138) : error C2065: 'TB_SETBUTTON' : undeclared identifier
toolbar.c(1138) : error C2051: case expression not constant
toolbar.c(1158) : error C2065: 'TB_GETBUTTONRECT' : undeclared identifier
toolbar.c(1158) : error C2051: case expression not constant
lib() : error LNK1181: cannot open input file "obj\i386\btnlist.obj"
link() : error LNK1181: cannot open input file "obj\i386\btnlist.obj"
binplace() : error BNP0000: Unable to place file W:\NT\public\sdk\lib\i386\comctl32.dll - exiting
So comctls.dll will not compile.

And for that PowerPc Exclusive. (dag nab, didn't write the folder name)
The log wrote: stubs.c(88) : error C2065: 'HRESULT' : undeclared identifier
stubs.c(88) : error C2143: syntax error : missing ')' before 'unsigned long constant'
stubs.c(88) : error C2059: syntax error : ')'
stubs.c(89) : error C4035: 'SHGetDesktopFolder' : no return value
stubs.c(106) : error C2143: syntax error : missing ')' before 'unsigned long constant'
stubs.c(106) : error C2059: syntax error : ')'
stubs.c(107) : error C4035: 'SHGetInstanceExplorer' : no return value
stubs.c(112) : error C2143: syntax error : missing ')' before 'unsigned long constant'
stubs.c(112) : error C2059: syntax error : ')'
stubs.c(113) : error C4035: 'SHGetMalloc' : no return value
stubs.c(130) : error C2143: syntax error : missing ')' before 'unsigned long constant'
stubs.c(130) : error C2059: syntax error : ')'
stubs.c(131) : error C4035: 'SHGetSpecialFolderLocation' : no return value
stubs.c(136) : error C2143: syntax error : missing ')' before 'unsigned long constant'
stubs.c(136) : error C2059: syntax error : ')'
stubs.c(137) : error C4035: 'SHLoadInProc' : no return value
stubs.c(192) : error C2143: syntax error : missing ')' before 'unsigned long constant'
stubs.c(192) : error C2059: syntax error : ')'
stubs.c(193) : error C4035: 'DllGetClassObject' : no return value
lib() : error LNK1181: cannot open input file "obj\i386\stubs.obj"
link() : error LNK1181: cannot open input file "obj\i386\shell32.lib"
lib() : error LNK1181: cannot open input file "obj\i386\stubs.obj"
link() : error LNK1181: cannot open input file "obj\i386\shell32.exp"
binplace() : error BNP0000: Unable to place file obj\i386\shell32.dll - exiting
I think you are either still using the older version of the repository (and therefore SDK headers) or your local object output directory (obj) and generated headers are corrupted. The latter can happen if the build process gets interrupted. In that case, you need to purge problematic header files and build -c (headers will be re-created from headername.x files). Hint: look for files (in particular, header files) that have the size of 0.

Also shell32.dll, comctl32.dll and everything else under nt\private\windows compiles just fine for me. You should try updating your local SVN repository. As for winver.exe, I've already added the stub required to build it and it is verified to be working.

Basically, everything under nt\private\windows successfully builds with 0 error, except nt\private\windows\base\advapi. I'm slowly working on the missing cryptapi.c right now.

And about "PowerPC exclusive," what do you exactly mean? If you are referring to the components that should be built for PowerPC targets, they shouldn't be built on x86* configuration/host, but rather ppc* (i.e ppcfre, ppcchk). There is no known cross compiler available (that Microsoft used internally for NT 4) for building PPC from x86.

The options available for compiling PPC targets are the following:
1. Get an actual PPC machine that has ARC firmware support
2. Use an x86-PPC cross compiler

As far as Visual C++ goes, there is no x86-PPC cross compiler available (though, I'm not completely sure and I stand to be corrected). I'm considering OpenWatcom as an alternative to the Visual C++ for future builds.

GCC would not be the best alternative as it will require A LOT of work to get NT source to compile on GCC. Watcom should be more compatible than the GCC.

Stephanos
Posts: 297
Joined: Fri Dec 26, 2014 5:38 am
Contact:

Re: Windows NT 4 Source Compiled! version 2

Post by Stephanos »

Code: Select all

[IDW1] Fri 01/16/2015  8:02:57.01
W:\binaries\nt

>ls
    W:\binaries\nt\*.*
4mmdat.sys    ega80woa.fon  mdmdicom.inf  oemnade3.inf  sfmuam.ifo
8514a.dll     elnk16.sys    mdmdisco.inf  oemnadee.inf  sfmuam.rsc
8514a.sys     elnk3.sys     mdmdsi.inf    oemnadem.inf  sfmuam.txt
8514fix.fon   elnkii.sys    mdmdyna.inf   oemnaden.inf  SFMUTIL.dll
8514fixe.fon  elnkmc.sys    mdmeiger.inf  oemnadep.inf  sfmwshat.dll
8514fixg.fon  epson24.dll   mdmelink.inf  oemnadfd.inf  share.exe
8514fixr.fon  epson9.dll    mdmelpro.inf  oemnadim.inf  shcompui.dll
8514fixt.fon  ESCP2E.dll    mdmelsa.inf   oemnadin.inf  shell.dll
8514oem.fon   escp2ms.dll   mdmeric.inf   oemnadlb.inf  shell32.dll
8514oeme.fon  et4000.sys    mdmetech.inf  oemnadlm.inf  shmgrate.exe
8514oemg.fon  eventlog.dll  mdmexp.inf    oemnadlt.inf  shrpubw.exe
8514oemr.fon  exabyte1.sys  mdmeyp.inf    oemnadma.inf  shscrap.dll
8514oemt.fon  exabyte2.sys  mdmgal.inf    oemnadn1.inf  SIDEWNDR.dll
8514sys.fon   exe2bin.exe   mdmgar.inf    oemnadn2.inf  sidewndr.sys
8514syse.fon  expand.exe    mdmgatew.inf  oemnadne.inf  simptcp.dll
8514sysg.fon  explorer.exe  mdmgen.inf    oemnadnf.inf  skdll.dll
8514sysr.fon  fastfat.sys   mdmgv.inf     oemnadni.inf  skeys.exe
8514syst.fon  fastopen.exe  mdmgvc.inf    oemnadnm.inf  smae1257.fon
85775.fon     fc.exe        mdmgvcd.inf   oemnadnp.inf  smaf1257.fon
85f1257.fon   fd7000ex.sys  mdmhaeu.inf   oemnadp3.inf  smalle.fon
85s1257.fon   feather.bmp   mdmhaeus.inf  oemnadp9.inf  smallee.fon
[dlibbin]     fidlhead.bmp  mdmhandy.inf  oemnadpm.inf  smalleg.fon
[dump]        find.exe      mdmhay2.inf   oemnadt2.inf  smaller.fon
[idw]         findstr.exe   mdmhayes.inf  oemnadtk.inf  smallet.fon
[inetsrv]     floppy.sys    mdmico.inf    oemnadtm.inf  smallf.fon
[jetadmin]    fmifs.dll     mdminfot.inf  oemnadub.inf  smallfe.fon
[joyport]     font.inf      mdminsys.inf  oemnadum.inf  smallfg.fon
[mstools]     fontext.dll   mdmintel.inf  oemnadwd.inf  smallfr.fon
[Routing]     fontview.exe  mdmintpc.inf  oemnadwm.inf  smallft.fon
[sbpnp]       forcedos.exe  mdmitex.inf   oemnadzz.inf  smcisa.sys
[srvinf]      format.com    mdmke.inf     oemnsvbh.inf  smss.exe
[Symbols]     fpnwclnt.dll  mdmkortx.inf  oemnsvbr.inf  snakeskn.bmp
[system32]    framebuf.dll  mdmlasat.inf  oemnsvcu.inf  sndblst.sys
[up]          freecell.exe  mdmlasno.inf  oemnsvdh.inf  SndRec32.exe
[winnt32]     fs_rec.sys    mdmlce.inf    oemnsvdn.inf  sndsys.sys
abiosdsk.sys  ftdisk.sys    mdmlight.inf  oemnsvin.inf  sndsys32.dll
access.cpl    ftpctrs.dll   mdmlngsh.inf  oemnsvir.inf  sndvol32.exe
accessor.inf  ftpsmx.dll    mdmmart.inf   oemnsvnb.inf  snmp.exe
acledit.dll   ftpsvapi.dll  mdmmcom.inf   oemnsvnw.inf  snmpapi.dll
addgrpw.exe   ftpsvc.dll    mdmmetri.inf  oemnsvra.inf  snmptrap.exe
addusrw.exe   ftsrch.dll    mdmmhrtz.inf  oemnsvri.inf  softpub.dll
advapi32.dll  fuji24.dll    mdmmix.inf    oemnsvrp.inf  sol.exe
afd.sys       fuji9.dll     mdmmoto.inf   oemnsvrr.inf  solstice.bmp
aha154x.sys   furry16.bmp   mdmmoton.inf  oemnsvsa.inf  sonic.sys
aha174x.sys   furrydog.bmp  mdmmotou.inf  oemnsvsm.inf  sort.exe
alrsvc.dll    games.inf     mdmmtd.inf    oemnsvsn.inf  sortkey.nls
always.sys    gdi.exe       mdmmts.inf    oemnsvsp.inf  sorttbls.nls
ansi.sys      gdi32.dll     mdmmulog.inf  oemnsvsv.inf  sound.drv
app775.fon    general.idf   mdmneuhs.inf  oemnsvtp.inf  space.gif
app850.fon    genflpy.sys   mdmniss.inf   oemnsvwi.inf  spddlang.sys
app852.fon    geometrx.bmp  mdmnokia.inf  oemnsvwk.inf  spinit.exe
app857.fon    glmf32.dll    mdmnokno.inf  oemnxpdl.inf  splayout.inf
app866.fon    glu32.dll     mdmnova.inf   oemnxpip.inf  spock.sys
append.exe    gonefish.bmp  mdmnovfx.inf  oemnxpnb.inf  spoolss.dll
apps.inf      gorilla.bas   mdmolic.inf   oemnxppp.inf  spoolss.exe
appwiz.cpl    gotodlg.frm   mdmolive.inf  oemnxpsm.inf  sprestrt.exe
archqic.sys   graftabl.com  mdmopt1.inf   oemnxpst.inf  srv.sys
arial.ttf     graphics.com  mdmoptn.inf   oemnxptc.inf  srvmgr.cpl
arialbd.ttf   graphics.pro  mdmosi.inf    oiadm400.dll  srvsvc.dll
arialbi.ttf   grnstone.bmp  mdmpace.inf   oicom400.dll  ss3dfo.scr
ariali.ttf    grpconv.exe   mdmpbit.inf   oidis400.dll  ssbezier.scr
asyncmac.sys  hal.dll       mdmpcsi.inf   oiprt400.dll  ssee1257.fon
at.exe        hal486c.dll   mdmpctel.inf  oislb400.dll  ssef1257.fon
atapi.sys     halapic.dll   mdmphils.inf  oissq400.dll  sserife.fon
atdisk.sys    halast.dll    mdmpn1.inf    oitwa400.dll  sserifee.fon
ati.dll       halcbus.dll   mdmpnb.inf    oki24.dll     sserifeg.fon
ati.sys       halcbusm.dll  mdmpp.inf     oki9.dll      sserifer.fon
atkctrs.dll   halmca.dll    mdmprodm.inf  oki9ibm.dll   sserifet.fon
atsvc.exe     halmps.dll    mdmquant.inf  ole2.dll      sseriff.fon
attrib.exe    halmpsm.dll   mdmracal.inf  ole32.dll     sseriffe.fon
autochk.exe   halncr.dll    mdmrfi.inf    OLECLI.DLL    sseriffg.fon
autoconv.exe  haloli.dll    mdmrock.inf   olecli32.dll  sseriffr.fon
autoexec.nt   halsp.dll     mdmrock2.inf  olecnv32.dll  sserifft.fon
autolfn.exe   halwyse7.dll  mdmrock3.inf  oledlg.dll    ssflwbox.scr
autorun.exe   hardware.inf  mdmrock4.inf  olesvr.dll    ssmarque.scr
avicap.dll    hazy16.bmp    mdmrock5.inf  olesvr32.dll  ssmaze.scr
avicap32.dll  help.exe      mdmsecdy.inf  olethk32.dll  ssmyst.scr
avifil32.dll  hikingbt.bmp  mdmsier.inf   OLIDM24.dll   sspipes.scr
avifile.dll   himem.sys     mdmsimpl.inf  OLIDM9.dll    ssstars.scr
backgrnd.gif  hindered.idf  mdmsmart.inf  oliscsi.sys   sstext3d.scr
backup.exe    home.htm      mdmsmplt.inf  opengl32.dll  STAR24E.dll
basesrv.dll   hours.ocx     mdmsnit1.inf  optional.inf  STAR9E.dll
beep.sys      hpdskjet.dll  mdmsnitn.inf  optra.dll     STARJET.dll
bios1.rom     hppcl.dll     mdmsonix.inf  os2.exe       stdole.tlb
bios4.rom     hprasdd.dll   mdmspec.inf   os2srv.exe    storage.dll
blueday.bmp   hprasdui.dll  mdmspq28.inf  os2ss.exe     subroutn.inf
blulac16.bmp  hpscan16.sys  mdmsrt.inf    oso001.007    subst.exe
blumon16.bmp  hpscan32.dll  mdmsupr3.inf  oso001.009    symbol.ttf
bootok.exe    hpt4qic.sys   mdmsupra.inf  oso001.010    symbole.fon
bootvrfy.exe  hticons.dll   mdmsuprv.inf  oso001.012    symbolf.fon
BRHJ770.dll   htui.dll      mdmtaicm.inf  oso001.016    symc810.sys
BROTHER9.dll  HYPERTRM.dll  mdmtdk.inf    oso001.029    syncapp.exe
BROTHR24.dll  HYPERTRM.exe  mdmtelbt.inf  other.inf     synceng.dll
browser.dll   i8042prt.sys  mdmtelin.inf  packager.exe  syncui.dll
bubbles.bmp   ibm238x.dll   mdmtelnk.inf  paintjet.dll  synth.dll
buslogic.sys  ibm239x.dll   mdmtexas.inf  panmap.dll    synth.sys
busmouse.sys  ibm5204.dll   mdmtger.inf   panson24.dll  sysdm.cpl
c_037.nls     IBMPORT.dll   mdmti.inf     panson9.dll   syssetup.dll
c_10000.nls   ibmppdsl.dll  mdmtkr.inf    parallel.sys  syssetup.inf
c_10006.nls   ibmtok.sys    mdmtorn.inf   parport.sys   system.drv
c_10007.nls   ibmtok2i.sys  mdmtosh.inf   parvdm.sys    system.ini
c_10010.nls   iccvid.dll    mdmtripl.inf  passfilt.dll  systray.exe
c_10017.nls   ieepro.sys    mdmtron.inf   pax.exe       t128.sys
c_10029.nls   iexplore.inf  mdmtrust.inf  pbrush.exe    t13b.sys
c_10079.nls   ifsutil.dll   mdmucom.inf   pcimac.sys    t1instal.dll
c_10081.nls   imaadp32.acm  mdmusrcr.inf  pcl5ems.dll   tandqic.sys
c_10082.nls   imagehlp.dll  mdmusrf.inf   pcl5ms.dll    tape.inf
c_1026.nls    imagevue.inf  mdmusrg.inf   pcmcia.sys    tape.sys
c_1250.nls    imgadmin.ocx  mdmusrsp.inf  pentnt.exe    tapi.dll
c_1251.nls    imgedit.ocx   mdmusrwp.inf  perfc009.dat  tapi32.dll
c_1252.nls    imgsamp.frm   mdmvayrs.inf  perfctrs.dll  tapiperf.dll
c_1253.nls    imgsampl.vbp  mdmvdot.inf   perfh009.dat  tapisrv.exe
c_1254.nls    imgscan.ocx   mdmvict.inf   perfmon.exe   taskman.exe
c_1255.nls    imm32.dll     mdmvv.inf     perfnw.dll    taskmgr.exe
c_1256.nls    indicdll.dll  mdmwell.inf   perms.inf     tcpcfg.dll
c_1257.nls    INETCPL.cpl   mdmwhql0.inf  pglyph16.bmp  tcpip.sys
c_1258.nls    inetins.exe   mdmwoer.inf   pifmgr.dll    tcpsvcs.exe
c_20261.nls   inport.sys    mdmyorik.inf  pinball.inf   tdi.sys
c_20866.nls   internat.exe  mdmzoom.inf   pjlmon.dll    telephon.cpl
c_28592.nls   intl.cpl      mdmzyp.inf    plotter.dll   tga.dll
c_437.nls     intl.inf      mdmzyxel.inf  plotui.dll    tga.sys
c_500.nls     iologmsg.dll  mdmzyxld.inf  plustab.dll   thinkjet.dll
c_737.nls     ipadrdll.dll  mdmzyxlg.inf  PMSPL.DLL     ti850.dll
c_775.nls     ipinfo.inf    mdmzyxln.inf  poledit.exe   timedate.cpl
c_850.nls     ipxcfg.dll    mem.exe       polsetup.exe  timer.drv
c_852.nls     ipxroute.exe  mf3216.dll    pool.bmp      times.ttf
c_855.nls     ir32_32.dll   mga.dll       ports.cpl     timesbd.ttf
c_857.nls     jet.dll       mga.sys       posix.exe     timesbi.ttf
c_860.nls     jetconv.exe   mga_mil.sys   prairie.bmp   timesi.ttf
c_861.nls     jetpack.exe   mgmtapi.dll   prflbmsg.dll  tmv1.sys
c_863.nls     joy.cpl       mib.bin       print.exe     toolhelp.dll
c_865.nls     JP350.dll     midimap.cfg   printer.wri   tree.com
c_866.nls     jpeg1x32.dll  midimap.dll   printui.dll   trident.sys
c_869.nls     jpeg2x32.dll  miniqic.sys   probrep.txt   txtonly.dll
c_870.nls     kb16.com      mitsumi.sys   prod128.ini   txtsetup.sif
c_875.nls     kbd.inf       mmdrv.dll     prodspec.ini  ubnei.bin
cacls.exe     kbdal.dll     mmopt.inf     profext.dll   ubnei.sys
calc.exe      kbdbe.dll     mmsys.cpl     profile.spc   ufat.dll
canon330.dll  kbdbene.dll   mmsystem.dll  progman.exe   ulib.dll
canon800.dll  kbdblr.dll    mmtask.tsk    proprint.dll  ultra124.sys
canonlbp.dll  kbdbr.dll     mode.com      proprn24.dll  ultra14f.sys
cards.dll     kbdbu.dll     modem.cpl     ps1.dll       ultra24f.sys
ccfapi32.dll  kbdca.dll     modem.sys     pscript.dll   umpnpmgr.dll
cdaudio.sys   kbdclass.sys  modemui.dll   pscrptui.dll  unicode.nls
cdfs.sys      kbdcr.dll     modern.fon    psxdll.dll    unimdm.TSP
cdplayer.exe  kbdcz.dll     money.bas     psxss.exe     unlodctr.exe
cdrom.sys     kbdcz1.dll    monitor.inf   qbasic.exe    untfs.dll
cfgmgr32.dll  kbdda.dll     more.com      qbasic.hlp    ups.cpl
cfm30.dll     kbddll.dll    moricons.dll  qic117.sys    ups.exe
cfm30u.dll    kbddv.dll     mouclass.sys  qic157.sys    upstrm16.bmp
cfmo30.dll    kbdes.dll     mouse.drv     ql10wnt.sys   ureg.dll
cfmo30u.dll   kbdest.dll    MPlay32.exe   QUIETJET.dll  URL.dll
cga40737.fon  kbdfc.dll     mpltrail.bmp  quikview.exe  user.exe
cga40850.fon  kbdfi.dll     mpnotify.exe  qv.dll        user32.dll
cga40852.fon  kbdfr.dll     mpr.dll       qv.sys        userenv.dll
cga40857.fon  kbdgkl.dll    mprui.dll     qwiii.dll     userinit.exe
cga40866.fon  kbdgr.dll     mpu401.dll    rasacd.sys    usetup.exe
cga40869.fon  kbdgr1.dll    mpu401.sys    rasadhlp.dll  utility.inf
cga40woa.fon  kbdhe.dll     msacm.dll     rasadmin.dll  v7vga.rom
cga80737.fon  kbdhe220.dll  msacm32.dll   rasapi16.dll  v7vram.sys
cga80850.fon  kbdhe319.dll  msacm32.drv   rasapi32.dll  vcdex.dll
cga80852.fon  kbdhela2.dll  msadlib.idf   rasarp.sys    vdmdbg.dll
cga80857.fon  kbdhela3.dll  msadp32.acm   rasauto.dll   vdmredir.dll
cga80866.fon  kbdhu.dll     msafd.dll     rasautou.exe  VER.DLL
cga80869.fon  kbdhu1.dll    msaudite.dll  rascauth.dll  version.dll
cga80woa.fon  kbdic.dll     mscdexnt.exe  rascbcp.dll   vga.dll
changer.sys   kbdir.dll     msfs.sys      RASCCP.dll    vga.drv
charmap.exe   kbdit.dll     msg711.acm    rascfg.dll    vga.sys
chcp.com      kbdit142.dll  msgina.dll    raschap.dll   vga256.dll
chkdsk.exe    kbdla.dll     msgsm32.acm   rascpl.cpl    vga64k.dll
chkntfs.exe   kbdlt.dll     msgsvc.dll    rasctrs.dll   vga737.fon
cirrus.dll    kbdlv.dll     msmail.inf    rasdd.dll     vga775.fon
cirrus.sys    kbdlv1.dll    msmouse.inf   rasddui.dll   vga850.fon
cit24us.dll   kbdne.dll     msnauth.cnt   rasdial.exe   vga852.fon
cit9us.dll    kbdno.dll     msnauth.hlp   rasdlg.dll    vga857.fon
citoh.dll     kbdpl.dll     msncdet.dll   rasfil32.dll  vga860.fon
class2.sys    kbdpl1.dll    msobjs.dll    rasgprxy.dll  vga861.fon
clb.dll       kbdpo.dll     mspaint.exe   rasgtwy.dll   vga863.fon
client.gif    kbdro.dll     mspdb41.dll   rasipcp.dll   vga865.fon
CLIPBRD.exe   kbdru.dll     msprivs.dll   rasiphlp.dll  vga866.fon
CLIPSRV.exe   kbdru1.dll    msrle32.dll   rasipxcp.dll  vga869.fon
clock.exe     kbdsel.exe    msv1_0.dll    rasman.dll    vgaf1257.fon
cmd.exe       kbdsf.dll     msvcrt.dll    rasman.exe    vgafix.fon
cmos.ram      kbdsg.dll     msvcrt40.dll  rasmon.exe    vgafixe.fon
cnvfat.dll    kbdsl.dll     msvfw32.dll   rasmsg.dll    vgafixg.fon
coffee16.bmp  kbdsl1.dll    msvidc32.dll  rasmxs.dll    vgafixr.fon
coffeebn.bmp  kbdsp.dll     msvideo.dll   rasnbfcp.dll  vgafixt.fon
comctl32.dll  kbdsw.dll     msviewut.dll  rasnbipc.dll  vgaoem.fon
comdlg32.dll  kbdtuf.dll    mswd6_32.wpc  raspap.dll    vgas1257.fon
comm.drv      kbdtuq.dll    mswsock.dll   rasphone.exe  vgasys.fon
command.com   kbduk.dll     MT735.dll     RASPPPEN.dll  vgasyse.fon
commdlg.dll   kbdur.dll     multimed.inf  raspptpf.sys  vgasysg.fon
common.adm    kbdurs.dll    mup.sys       rassauth.dll  vgasysr.fon
communic.inf  kbdus.dll     MVAUDIO.dll   rasscrpt.dll  vgasyst.fon
comp.exe      kbdusl.dll    MVAUDIO.sys   rasser.dll    videoprt.sys
compact.exe   kbdusr.dll    nbf.sys       rasshell.dll  videosim.sys
compobj.dll   kbdusx.dll    nbinfo.inf    rassprxy.exe  vmmreg32.dll
compstui.dll  kbdycc.dll    ncadmin.exe   rassrv.exe    vsasc8.dll
conexts.dll   kbdycl.dll    ncpa.cpl      rastapi.dll   vsbmp.dll
config.nt     kernel32.dll  ncparam.inf   rdisk.exe     vsdrw.dll
console.cpl   keyb.com      ncpashel.inf  rdr.sys       vsexe.dll
control.exe   keyboard.drv  ncr53c9x.sys  readme.wri    vsexe2.dll
convert.exe   keyboard.inf  ncr77c22.sys  recover.exe   vsmp.dll
coue1257.fon  keyboard.sys  nddeagnt.exe  redir.exe     vsmsw.dll
couf1257.fon  kmddsp.TSP    nddeapi.dll   regedit.exe   vspp.dll
country.sys   krnl386.exe   nddeapir.exe  regedt16.exe  vsrtf.dll
cour.ttf      ksecdd.sys    nddenb32.dll  regedt32.exe  vstiff.dll
courbd.ttf    KYOCERA.dll   ndis.sys      registry.inf  vsw6.dll
courbi.ttf    kyocerax.dll  ndistapi.sys  remline.bas   vswks.dll
coure.fon     l_10646.ttf   ndiswan.sys   replace.exe   vswmf.dll
couree.fon    l_except.nls  ne1000.sys    restore.exe   vsword.dll
coureg.fon    l_intl.nls    ne2000.sys    rhody.bmp     vswork.dll
courer.fon    label.exe     ne3200.bin    riched20.dll  vswp5.dll
couret.fon    lance.sys     ne3200.sys    rnr20.dll     vswp6.dll
courf.fon     lanma256.bmp  nec24pin.dll  roman.fon     vswpf.dll
courfe.fon    lanman.drv    net.exe       rpcltc1.dll   vsxl5.dll
courfg.fon    lanmannt.bmp  net1.exe      rpcltc8.dll   vwipxspx.dll
courfr.fon    layout.inf    NETAPI.DLL    rpcltccm.dll  vwipxspx.exe
courft.fon    lcwiz.exe     netapi32.dll  rpclts1.dll   w32.dll
couri.ttf     leaves16.bmp  netbios.sys   rpclts8.dll   wangcmn.dll
cpqarray.sys  legacy.inf    netbond.inf   rpcltscm.dll  wangimg.cnt
csrsrv.dll    lether16.bmp  netbt.sys     RpcNs4.dll    wangimg.hlp
csrss.exe     liccpa.cpl    netcfg.dll    rpcrt4.dll    wangocx.cnt
ctl3dv2.dll   lights.exe    netdde.exe    rpcss.exe     wangocx.hlp
ctype.nls     linkinfo.dll  netdefs.inf   rplcmd.exe    wangocxd.cnt
dac960nt.sys  llsmgr.exe    netdtect.dll  rsabase.dll   wangocxd.hlp
dc21x4.hlp    llsrpc.dll    netdtect.inf  rsabase.sig   wangqic.sys
DC21X4.sys    llssrv.exe    netdtect.sys  rshx32.dll    wangshl.cnt
dciman32.dll  lmmib2.dll    netevent.dll  rundll32.exe  wangshl.dll
dcomcnfg.exe  LmRepl.exe    netflx.dll    runonce.exe   wangshl.hlp
ddeml.dll     loadfix.com   neth.dll      rvrsumid.bmp  wd33c93.sys
ddeshare.exe  loadperf.dll  netlogon.dll  s3.dll        wd90c24a.dll
debmp.dll     locale.nls    netmsg.dll    s3.sys        wdvga.sys
debug.exe     localmon.dll  netoemdh.inf  samlib.dll    weitekp9.dll
DEC24PIN.dll  localspl.dll  NetRap.dll    samsrv.dll    weitekp9.sys
DEC3200.dll   locator.exe   netsetup.dll  santafe.bmp   welcome.exe
DEC9PIN.dll   lodctr.exe    netui0.dll    savedump.exe  wfwnet.drv
dehex.dll     logon.scr     netui1.dll    sccview.dll   win.com
dell_dgx.sys  logview.exe   netui2.dll    script.fon    win.ini
delldsa.sys   loop.sys      networks.wri  scrnsave.scr  win32k.sys
demet.dll     lpdsvc.dll    networkw.wri  scsi.inf      win32spl.dll
desk.cpl      lsasrv.dll    nibbles.bas   scsiport.sys  win87em.dll
desktop.ini   lsass.exe     nlsfunc.exe   scsiprnt.sys  winchat.exe
dess.dll      lt200.sys     notepad.exe   scsiscan.sys  windisk.exe
devapps.cpl   lucon.ttf     npfs.sys      seaside.bmp   windows.adm
dewp.dll      lz32.dll      ntbooks.exe   SECBASIC.dll  winfile.exe
dgconfig.dll  LZEXPAND.DLL  ntctl3d.dll   SECSSPI.dll   wingding.ttf
dhcpadmn.exe  MacFile.exe   ntcx.sys      security.dll  winhelp.exe
dhcpcsvc.dll  main.cpl      ntdetect.com  seiko.dll     winhlp32.exe
dhcpmib.dll   MANTAL24.dll  ntdll.dll     SEIKO24E.dll  winhstb.exe
dhcpsapi.dll  MANTAL90.dll  ntdos.sys     SEIKOSH9.dll  winlogon.exe
dialer.exe    marlett.ttf   ntepc.sys     sere1257.fon  winmine.exe
diconix.dll   mcd32.dll     ntfs.sys      serf1257.fon  winmm.dll
digifep5.sys  mcdsrv32.dll  ntio.sys      serial.sys    winmsd.exe
digiinst.dll  mciavi.drv    ntkrnlmp.exe  serialui.dll  winnt.adm
disk.sys      mciavi32.dll  ntlanman.dll  serife.fon    winnt.bmp
diskcomp.com  mcicda.dll    ntlanui.dll   serifee.fon   winnt256.bmp
diskcopy.com  mciole16.dll  ntlanui2.dll  serifeg.fon   winoldap.mod
diskcopy.dll  mciole32.dll  NTLDR         serifer.fon   winprint.dll
diskdump.sys  mciseq.dll    ntlmssps.dll  serifet.fon   winsadmn.exe
diskperf.exe  mciseq.drv    ntlsapi.dll   seriff.fon    winsctrs.dll
diskperf.sys  mciwave.dll   ntoskrnl.exe  seriffe.fon   winsevnt.dll
display.inf   mciwave.drv   ntprint.dll   seriffg.fon   winsmib.dll
dispoem.inf   MDGMPDLG.dll  ntprint.inf   seriffr.fon   winsock.dll
dlc.sys       mdgmpdlg.hlp  ntshrui.dll   serifft.fon   winspool.drv
dlcapi.dll    mdgmport.bin  ntvdm.exe     sermouse.sys  winspool.exe
dlttape.sys   MDGMPORT.sys  ntxall.sys    services.exe  winsrpc.dll
docprop.dll   mdgncdet.dll  ntxem.sys     seside16.bmp  winsrv.dll
dos737.fon    mdm3com.inf   null.sys      setup.exe     winstrm.dll
dos869.fon    mdm3x.inf     nw16.exe      setup.txt     WinTrust.dll
dosapp.fon    mdmaceex.inf  nwapi16.dll   setup16.inf   winver.exe
doskey.exe    mdmadc.inf    nwapi32.dll   setupapi.dll  wizmgr.exe
dosnet.inf    mdmadtn.inf   nwc.cpl       setupdd.sys   wkssvc.dll
dosx.exe      mdmairte.inf  nwcfg.dll     setupdll.dll  wordpad.exe
dplay.dll     mdmar1.inf    nwconv.exe    setupldr.bin  wordpad.inf
dpserial.dll  mdmarch.inf   nwevent.dll   setupp.ini    wow32.dll
dpwsock.dll   mdmarcht.inf  nwlnkipx.sys  setupreg.hiv  wowdeb.exe
drwatson.exe  mdmarn.inf    nwlnknb.sys   setver.exe    wowexec.exe
drwtsn32.exe  mdmati.inf    nwlnkrip.sys  sfloppy.sys   wowfax.dll
dsound.dll    mdmatt.inf    nwlnkspx.sys  sfmapi.dll    wowfaxui.dll
dtc329x.sys   mdmaus.inf    nwprovau.dll  sfmatalk.sys  write.exe
edit.com      mdmblatz.inf  nwsap.dll     sfmatcfg.dll  write32.wpc
edit.hlp      mdmboca.inf   nwscript.exe  sfmatmsg.dll  ws2_32.dll
edlin.exe     mdmbsb.inf    nwwks.dll     sfmctrs.dll   ws2help.dll
ega.cpi       mdmbsch.inf   oemnadam.inf  sfmicon.vol   ws2map.dll
ega40737.fon  mdmcm28.inf   oemnadap.inf  sfmicons.inf  wshisn.dll
ega40850.fon  mdmcmcm.inf   oemnadar.inf  sfmmap.inf    wshnetbs.dll
ega40852.fon  mdmcodex.inf  oemnadd1.inf  sfmmgr.cpl    wshtcpip.dll
ega40857.fon  mdmcom1.inf   oemnadd2.inf  sfmmon.dll    wsock32.dll
ega40866.fon  mdmcomm1.inf  oemnadd3.inf  sfmprint.exe  x42xxpcl.dll
ega40869.fon  mdmcommu.inf  oemnadd4.inf  sfmpsdib.dll  xactsrv.dll
ega40woa.fon  mdmcpi.inf    oemnadde.inf  sfmpsexe.exe  xcopy.exe
ega80737.fon  mdmcpq.inf    oemnaddf.inf  sfmpsfnt.dll  xeroxpcl.dll
ega80850.fon  mdmcpqpr.inf  oemnaddi.inf  sfmpsprt.dll  xga.dll
ega80852.fon  mdmcpv.inf    oemnadds.inf  sfmreg.exe    xga.sys
ega80857.fon  mdmcrtix.inf  oemnaddt.inf  SFMRES.dll    zapotec.bmp
ega80866.fon  mdmdefd.inf   oemnade1.inf  sfmsrv.sys    zaptec16.bmp
ega80869.fon  mdmdgitn.inf  oemnade2.inf  SfmSvc.exe
    101371904 (98181782) bytes in 1475 files

[IDW1] Fri 01/16/2015  8:02:57.85
W:\binaries\nt

>ls -l shell32.dll comctl32.dll
    W:\binaries\nt\shell32.dll comctl32.dll
--a--    474896 Thu Jan 15 08:08:54 2015 comctl32.dll
--a--   1592592 Thu Jan 15 08:08:59 2015 shell32.dll
    2068480 (2067488) bytes in 2 files

yourepicfailure
User avatar
Donator
Posts: 1256
Joined: Mon Jul 23, 2012 9:40 pm
Location: Flying high in a DC10

Re: Windows NT 4 Source Compiled! version 2

Post by yourepicfailure »

This was last weeks repo, and I just updated it. Everything works right except for those few ppc hiccups.
But I'm more interested now in the MVDM issue.
"C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off"
Image
You will never tear me from the grasp of the Pentium M!

Stephanos
Posts: 297
Joined: Fri Dec 26, 2014 5:38 am
Contact:

Re: Windows NT 4 Source Compiled! version 2

Post by Stephanos »

yourepicfailure wrote:This was last weeks repo, and I just updated it. Everything works right except for those few ppc hiccups.
But I'm more interested now in the MVDM issue.
You still haven't explained what the "ppc" issues are. What are you exactly referring to?

And it seems I haven't written an update here. The MVDM issue has been "resolved." I've decided to not keep the kernel31 d386 build as it is not of our interest to make the Windows 3.1 kernel debuggable. This is what we know so far:

1. d386 build reports IGROUP oversize error (exceeds 64K).
2. The error is likely because of all the additional code added when compiling with debug flag. There's quite a bit of extra code compiled conditionally under DEBUG.
3. The extra debug symbols may also contribute to this issue. Refer to the makefile for the details.

Besides the cryptapi.c issue, which I am implementing at the moment, we need to resolve nt\private\net and nt\private\inet compilation issues. If you try to compile it, you will get bombarded with errors, possibly due to corrupted headers. It'd be great if you could look into that.

yourepicfailure
User avatar
Donator
Posts: 1256
Joined: Mon Jul 23, 2012 9:40 pm
Location: Flying high in a DC10

Re: Windows NT 4 Source Compiled! version 2

Post by yourepicfailure »

General compilation issues, probably related to me attempting to cross-compile.
I'll look into the net and inet issues.
"C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off"
Image
You will never tear me from the grasp of the Pentium M!

Stephanos
Posts: 297
Joined: Fri Dec 26, 2014 5:38 am
Contact:

Re: Windows NT 4 Source Compiled! version 2

Post by Stephanos »

One more thing, I had disabled the nt\private\windows\base\advapi\digsig build as I previously mentioned
4. soedhspa.lib, required to build digsig under advapi- not critical
digsig, as the directory name suggests, produces digsig.dll. I marked it to be not critical because this is not a critical system file that we will ever need to modify; however, just for the sake of completeness, it'd be nice to be able to build it as well.

Today, in the middle of all the craps going on with the build process, I found out that the missing soedhspa.lib is the OSS ASN.1/C library. For more details, refer to http://www.oss.com/asn1/products/manual ... me_api.pdf.

If you have the binary or source of it, please contact me through the PM. If none is found, I might just integrate an open source ASN.1 implementation into it. But once again, this issue is not critical and for later.

yourepicfailure
User avatar
Donator
Posts: 1256
Joined: Mon Jul 23, 2012 9:40 pm
Location: Flying high in a DC10

Re: Windows NT 4 Source Compiled! version 2

Post by yourepicfailure »

rc.exe keeps throwing off errors during compilation.
Image
and NO, NOT FRICKEN ATOMSMASHER.(to the ones who had choice stuff to say last time I used it)
EDIT: Progman compiles, but won't run. And guess why? Resource compilation error. I could've sworn it compiled and ran with last week's revision. In fact, the snapshots on the front prove it. Did you do anything with the resource compiler?
Last edited by yourepicfailure on Sun Jan 18, 2015 2:21 pm, edited 1 time in total.
"C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off"
Image
You will never tear me from the grasp of the Pentium M!

Stephanos
Posts: 297
Joined: Fri Dec 26, 2014 5:38 am
Contact:

Re: Windows NT 4 Source Compiled! version 2

Post by Stephanos »

yourepicfailure wrote:rc.exe keeps throwing off errors during compilation.
Image
and NO, NOT FRICKEN ATOMSMASHER.(to the ones who had choice stuff to say last time I used it)
Are you using the standard SDK tools I provided? (\tools) or using some other rc.exe?
Also what were you building when you got that error? and what OS are you running the SDK tools on?

yourepicfailure
User avatar
Donator
Posts: 1256
Joined: Mon Jul 23, 2012 9:40 pm
Location: Flying high in a DC10

Re: Windows NT 4 Source Compiled! version 2

Post by yourepicfailure »

I'm using your compiler, with your tools, on your reccomended Os. Server 2003 SP1. Like I said, everything worked fine until I updated the code.
"C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off"
Image
You will never tear me from the grasp of the Pentium M!

Stephanos
Posts: 297
Joined: Fri Dec 26, 2014 5:38 am
Contact:

Re: Windows NT 4 Source Compiled! version 2

Post by Stephanos »

yourepicfailure wrote:I'm using your compiler, with your tools, on your reccomended Os. Server 2003 SP1. Like I said, everything worked fine until I updated the code.
There has been no change to rc.exe. It is still at the initial revision. Once again, what were you building when you got that error? ... actually, please post the build log.

Locked