📄 bldr.h
字号:
/*++
THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
PARTICULAR PURPOSE.
Copyright (c) 1995-2000 Microsoft Corporation
Module Name: bldr.h
Abstract: Common boot loader definitions.
Functions: None.
Notes:
--*/
#ifndef BLDR_H
#define BLDR_H
#include <blcommon.h>
// Function prototypes.
//
void SpinForever(void);
DWORD OEMGetSecs(void);
USHORT printRev(void);
void EdbgOutputDebugString(const char *fmt, ...);
int __cdecl _inp (unsigned short);
unsigned short __cdecl _inpw (unsigned short);
unsigned long __cdecl _inpd (unsigned short);
int __cdecl _outp (unsigned short, int);
unsigned short __cdecl _outpw(unsigned short, unsigned short);
unsigned long __cdecl _outpd(unsigned short, unsigned long);
// ** Ethernet functions.
BOOL OEMEthPlatformInit(VOID);
VOID OEMEthLaunch(DWORD dwImageStart, DWORD dwImageLength, DWORD dwLaunchAddr, const ROMHDR *pRomHdr);
DWORD OEMEthPreDownload(VOID);
BOOL OEMEthReadData(DWORD cbData, LPBYTE pbData);
// ** ATA/IDE HDD functions.
BOOL OEMHDDPlatformInit(VOID);
VOID OEMHDDLaunch(DWORD dwImageStart, DWORD dwImageLength, DWORD dwLaunchAddr, const ROMHDR *pRomHdr);
DWORD OEMHDDPreDownload(VOID);
BOOL OEMHDDReadData(DWORD cbData, LPBYTE pbData);
// Type definitions.
//
typedef void (*PFN_LAUNCH)();
typedef enum // Supported image load/download methods.
{
BL_ENET = 0, // Ethernet.
BL_ATAHDD // ATA/IDE hard drive.
} IMG_LOC_ID;
typedef BOOL (*PFN_PLATFORM_INIT)(VOID);
typedef VOID (*PFN_LAUNCH)(VOID);
typedef DWORD (*PFN_PRE_DOWNLOAD)(VOID);
typedef BOOL (*PFN_READ_DATA)(DWORD cbData, LPBYTE pbData);
typedef struct // Boot loader environment variables.
{
ULONG nSig;
ULONG nChkSum;
USHORT nMajVer;
USHORT nMinVer;
ULONG nIPAddr;
ULONG nSubnetMask;
UCHAR nUseDHCP;
IMG_LOC_ID nImgLoc;
ULONG nAutoCount;
} LOADER_VARS, *PLOADER_VARS;
// Preprocessor defines.
//
#define DEBUG_ETHER_IRQ 0x5 // NIC interrupt line number.
#define KIMAGE_NAME "nk.bin" // Kernel image name.
#define ETHDMA_BUFF_BASE 0x4000 // *** Must match config.bib values ***
#define ETHDMA_BUFF_SIZE 0x20000 // Enet buffer base address and size.
#define BLDR_VERSION_MAJOR 1 // Loader version.
#define BLDR_VERSION_MINOR 0 //
#define TO_UPPER(a) (a >= 0x61 ? a - 0x20 : a)
// Image copy to RAM
// ** Note these numbers should match the BIB file numbers. ***
#define RAM_DEST_ADDR 0x60000
#define ROM_SOURCE_ADDR 0xFFFC0000
#define MAX_IMAGE_SIZE 0x40000
// Boot Args
#define BOOT_ARG_PTR_LOCATION_NP 0x001FFFFC
#define BOOT_ARG_LOCATION_NP 0x001FFF00
//
#undef TEXT
#define TEXT
#define NKDbgPrintfW EdbgOutputDebugString
#ifdef DEBUG
#define ZONE_PCICNFG DEBUGZONE(10)
#define ZONE_BOOTPROG DEBUGZONE(11)
#define ZONE_INFO DEBUGZONE(12)
#define ZONE_FUNCTION DEBUGZONE(13)
#define ZONE_WARN DEBUGZONE(14)
#define ZONE_ERROR DEBUGZONE(15)
#endif // DEBUG.
// Status bar
#define SB_BAR_WIDTH 50 // number of blocks that make up SB
typedef struct
{
ULONG sval;
ULONG cval;
ULONG eval;
unsigned char last_percent;
} STATUSBAR, *PSTATUSBAR;
#define BACKSPACE 0x08
#endif // BLDR_H.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -