|
|
#include <mytypes.h>
#include <misclib.h>
#include <diskio.h>
#include <partimag.h>
#include <msgfile.h>
#include <displib.h>
#include <partio.h>
#include <string.h>
#include <malloc.h>
#include <memory.h>
#include <ctype.h>
#include <errno.h>
#include <dos.h>
#include <share.h>
#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
//
// Global data
//
extern FPVOID IoBuffer,_IoBuffer; extern MASTER_DISK MasterDiskInfo; extern CMD_LINE_ARGS CmdLineArgs; extern PARTITION_IMAGE PartitionImage;
//
// Text
//
extern MESSAGE_STRING TextMessages[];
unsigned GetTextCount( VOID );
extern char *textCantLoadFont; extern char *textNoXmsManager; extern char *textXmsMemoryError; extern char *textFatalError1; extern char *textFatalError2; extern char *textReadFailedAtSector; extern char *textWriteFailedAtSector; extern char *textCantFindMasterDisk; extern char *textOOM; extern char *textCantOpenMasterDisk; extern char *textCantFindMPKBoot; extern char *textNoOsImages; extern char *textSelectLanguage; extern char *textConfirmLanguage1; extern char *textConfirmLanguage2; extern char *textRebootPrompt1; extern char *textRebootPrompt2; extern char *textSelectOsPrompt; extern char *textConfirmOs1; extern char *textConfirmOs2; extern char *textPleaseWaitRestoring; extern char *textValidatingImage; extern char *textChecksumFail; extern char *textChecksumOk;
//
// [10000]-[10009] are reserved for language names
// [11000]-[11009] are reserved for OS selection names,
// which override the names specified in the images'
// partition image header structures.
//
#define TEXT_LANGUAGE_NAME_BASE 10000
extern char *textLangName0; extern char *textLangName1; extern char *textLangName2; extern char *textLangName3; extern char *textLangName4; extern char *textLangName5; extern char *textLangName6; extern char *textLangName7; extern char *textLangName8; extern char *textLangName9; #define TEXT_LANGUAGE_NAME_END 10009
#define TEXT_OS_NAME_BASE 11000
extern char *textOsName0; extern char *textOsName1; extern char *textOsName2; extern char *textOsName3; extern char *textOsName4; extern char *textOsName5; extern char *textOsName6; extern char *textOsName7; extern char *textOsName8; extern char *textOsName9; #define TEXT_OS_NAME_END 11009
#define TEXT_OS_DESC_BASE 12000
extern char *textOsDesc0; extern char *textOsDesc1; extern char *textOsDesc2; extern char *textOsDesc3; extern char *textOsDesc4; extern char *textOsDesc5; extern char *textOsDesc6; extern char *textOsDesc7; extern char *textOsDesc8; extern char *textOsDesc9; #define TEXT_OS_DESC_END 12009
//
// Text positioning stuff
//
#define TEXT_LEFT_MARGIN 3
#define TEXT_TOP_LINE 0
//
// Constant that gives the number of clusters described in
// one sector of the cluster bitmap (sector size * bits per byte)
//
#define CLUSTER_BITS_PER_SECTOR 4096
//
// Top-level routine for restoring the user's disk.
//
VOID RestoreUsersDisk( IN HDISK DiskHandle );
VOID ExpandImage( IN HDISK DiskHandle, IN BYTE SectorsPerTrack, IN ULONG SourceStart, IN ULONG TargetStart );
//
// Misc routines
//
VOID UpdateMasterDiskState( IN HDISK DiskHandle, IN UINT NewState );
UINT LocateMasterDisk( IN UINT UserSpecifiedInt13Unit OPTIONAL );
VOID GetUserOsChoice( IN HDISK DiskHandle );
VOID FatalError( IN FPCHAR FormatString, ... );
//
// Keyboard reading stuff
//
USHORT GetKey( VOID );
#define DN_KEY_DOWN 0x0100
#define DN_KEY_UP 0x0200
#define DN_KEY_F8 0x1800
#define ASCI_CR 13
#define ASCI_ESC 27
VOID DrainKeyboard( VOID );
//
// Display routines
//
#define DEFAULT_TEXT_PIXEL_VALUE VGAPIX_LIGHT_GRAY
#define HIGHLIGHT_TEXT_PIXEL_VALUE VGAPIX_WHITE
VOID DispInitialize( VOID );
VOID DispReinitialize( VOID );
VOID DispClearClientArea( IN FPCHAR NewBannerBitmap OPTIONAL );
VOID DispSetCurrentPixelValue( IN BYTE PixelValue );
VOID DispPositionCursor( IN BYTE X, IN BYTE Y );
VOID DispGetCursorPosition( OUT FPBYTE X, OUT FPBYTE Y );
FPVOID DispSaveDescriptionArea( OUT USHORT *SaveTop, OUT USHORT *SaveHeight, OUT USHORT *SaveBytesPerRow, OUT USHORT *DescriptionTop );
VOID DispWriteChar( IN CHAR chr );
VOID DispWriteString( IN FPCHAR String );
VOID DispSetLeftMargin( IN BYTE X );
//
// Gas gauge routines
//
VOID GaugeInit( IN ULONG RangeMax );
VOID GaugeDelta( IN ULONG Delta );
//
// XMS i/o routines
//
VOID XmsInit( VOID );
VOID XmsTerminate( VOID );
VOID XmsIoDiskRead( IN HDISK DiskHandle, IN ULONG StartSector, IN ULONG SectorCount, OUT ULONG *SectorsRead, OUT BOOL *Xms );
VOID XmsIoDiskWrite( IN HDISK DiskHandle, IN ULONG StartSector, IN ULONG SectorOffset, IN ULONG SectorCount, IN BOOL Xms );
#if 0
//
// Inf routines
//
int LoadInf( IN FPCHAR Filename, OUT FPVOID *Handle, OUT FPUINT ErrorLineNumber );
VOID UnloadInf( IN FPVOID Handle );
BOOL InfSectionExists( IN FPVOID Handle, IN FPCHAR SectionName );
FPCHAR InfGetSectionLineIndex( IN FPVOID Handle, IN FPCHAR SectionName, IN unsigned LineIndex, IN unsigned ValueIndex );
FPCHAR InfGetSectionKeyIndex( IN FPVOID Handle, IN FPCHAR SectionName, IN FPCHAR Key, IN unsigned ValueIndex );
FPCHAR InfGetSectionLineKey( IN FPVOID Handle, IN FPCHAR SectionName, IN unsigned LineIndex ); #endif
|