mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-08-31 04:13:37 +00:00
Right now, if stars on the sky get in proper places and you are lucky, it will load Windows NT 4.0 to GUI (it will be unusable due to absence of mouse/keyboard though). Here are log messages from my local tree which I used to develop this initial version (just for reference): Revision: 8 Author: alekseyb Date: 22:56:15, 24 íîÿáðÿ 2006 ã. Message: - Initialize "ValidBootPartition" field of ArcDiskInfo (without it Windows thinks the partition is not good) - Zero ArcDiskInfo before usage - Load filesystem driver (fastfat.sys for now) Windows NT4 now boots, but of course there are no mouse/keyboard. ---- Modified : /freeldr/arch/i386/hardware.c Modified : /freeldr/windows/winldr.c Modified : /freeldr/windows/wlregistry.c Revision: 7 Author: alekseyb Date: 15:37:37, 24 íîÿáðÿ 2006 ã. Message: - Fix Disk Peripheral entries to really be of DiskPeripheral type and PeripheralClass - Add to PcHwDetect() proper Child/Sibling-isation (depending on what has been found) - Fixed PCI information recognizing (changed structure + properly filling HardwareMechanism field) - Creating of actual configuration descriptor for PCI bus added - Fix conversion of hardware configuration list to virtual addressing, also adding better debug prints - Remove annoying DbgPrints from PE loader - Remove memory map dumping ---- Modified : /freeldr/arch/i386/hardware.c Modified : /freeldr/arch/i386/hwpci.c Modified : /freeldr/include/arch/i386/hardware.h Modified : /freeldr/windows/conversion.c Modified : /freeldr/windows/peloader.c Modified : /freeldr/windows/winldr.c Revision: 6 Author: alekseyb Date: 1:42:20, 23 íîÿáðÿ 2006 ã. Message: - Add ISA bus configuration entry, Disk Controller and Peripherals - Comment about number of GDT entries - Changed order of boot drivers - now they should correspond to what NT awaits The compatibility with ReactOS booting is broken at this point, because hardware detection results are being placed into configuration list and not in-memory registry. ---- Modified : /freeldr/arch/i386/hardware.c Modified : /freeldr/include/winldr.h Modified : /freeldr/windows/wlregistry.c Revision: 5 Author: alekseyb Date: 23:37:40, 18 íîÿáðÿ 2006 ã. Message: - Modify number of GDT descriptors, since NT Kernel assumes space for 128 GDT descriptors, and if it is less - it overwrites IDT entries following them, which lead to a major fsckup, and how kernel booted to some stage is a mystery. - Slightly modified comments, removed unnecessary TODO WinDBG connects now and seems to work (don't forget to disable debug output of freeldr, otherwise WinDBG can't connect). ---- Modified : /freeldr/include/winldr.h Modified : /freeldr/windows/winldr.c Revision: 4 Author: alekseyb Date: 18:25:49, 16 íîÿáðÿ 2006 ã. Message: - Fix RegistryPath in boot drivers (appended service name) - Convert RegistryPath.Buffer and pointer to DTE to VirtualAddresses (fixes KMODE_EXCEPTION) ---- Modified : /freeldr/windows/winldr.c Modified : /freeldr/windows/wlregistry.c Revision: 3 Author: alekseyb Date: 17:10:21, 15 íîÿáðÿ 2006 ã. Message: - Implemented storing configuration data of disks. - Moved hardware detection to a later stage so that it doesn't write to an unitialized pointer and actually stores the data in LoaderBlock->ConfigurationRoot. InitializeHWConfig() function should go away soon. ---- Modified : /freeldr/arch/i386/hardware.c Modified : /freeldr/windows/conversion.c Modified : /freeldr/windows/winldr.c Revision: 2 Author: alekseyb Date: 16:54:12, 13 íîÿáðÿ 2006 ã. Message: Import of what has been already done so far by me (WinNT 4.0 says INACCESSIBLE_BOOT_DEVICE). Just started working on Configuration List. ---- Modified : /freeldr/arch/i386/hardware.c Modified : /freeldr/arch/i386/i386idt.S Modified : /freeldr/arch/i386/i386trap.S Modified : /freeldr/arch/i386/xboxhw.c Modified : /freeldr/debug.c Modified : /freeldr/freeldr_arch.rbuild Modified : /freeldr/freeldr_base.rbuild Modified : /freeldr/freeldr_base64k.rbuild Modified : /freeldr/freeldr_main.rbuild Modified : /freeldr/include/arch/i386/machpc.h Modified : /freeldr/include/arch/i386/machxbox.h Modified : /freeldr/include/machine.h Modified : /freeldr/include/mm.h Modified : /freeldr/include/winldr.h Modified : /freeldr/linuxboot.c Modified : /freeldr/machine.c Modified : /freeldr/mm/meminit.c Modified : /freeldr/mm/mm.c Modified : /freeldr/reactos/binhive.c Modified : /freeldr/reactos/reactos.c Modified : /freeldr/reactos/setupldr.c Modified : /freeldr/windows/peloader.c Modified : /freeldr/windows/winldr.c Modified : /freeldr/windows/wlmemory.c Modified : /freeldr/windows/wlregistry.c Revision: 1 Author: alekseyb Date: 16:45:55, 13 íîÿáðÿ 2006 ã. Message: FreeLdr import from ReactOS trunk r24725 ---- Added : /freeldr Added : /freeldr/CHANGELOG Added : /freeldr/arch Added : /freeldr/arch/i386 Added : /freeldr/arch/i386/_alloca.S Added : /freeldr/arch/i386/arch.S Added : /freeldr/arch/i386/archmach.c Added : /freeldr/arch/i386/boot.S Added : /freeldr/arch/i386/drvmap.S Added : /freeldr/arch/i386/fathelp.asm Added : /freeldr/arch/i386/hardware.c Added : /freeldr/arch/i386/hwacpi.c Added : /freeldr/arch/i386/hwapm.c Added : /freeldr/arch/i386/hwcpu.c Added : /freeldr/arch/i386/hwpci.c Added : /freeldr/arch/i386/i386cpu.S Added : /freeldr/arch/i386/i386disk.c Added : /freeldr/arch/i386/i386idt.S Added : /freeldr/arch/i386/i386pnp.S Added : /freeldr/arch/i386/i386rtl.c Added : /freeldr/arch/i386/i386trap.S Added : /freeldr/arch/i386/i386vid.c Added : /freeldr/arch/i386/int386.S Added : /freeldr/arch/i386/linux.S Added : /freeldr/arch/i386/loader.c Added : /freeldr/arch/i386/machpc.c Added : /freeldr/arch/i386/machxbox.c Added : /freeldr/arch/i386/mb.S Added : /freeldr/arch/i386/pccons.c Added : /freeldr/arch/i386/pcdisk.c Added : /freeldr/arch/i386/pcmem.c Added : /freeldr/arch/i386/pcrtc.c Added : /freeldr/arch/i386/pcvideo.c Added : /freeldr/arch/i386/portio.c Added : /freeldr/arch/i386/xboxcons.c Added : /freeldr/arch/i386/xboxdisk.c Added : /freeldr/arch/i386/xboxfont.c Added : /freeldr/arch/i386/xboxhw.c Added : /freeldr/arch/i386/xboxi2c.c Added : /freeldr/arch/i386/xboxmem.c Added : /freeldr/arch/i386/xboxrtc.c Added : /freeldr/arch/i386/xboxvideo.c Added : /freeldr/arch/powerpc Added : /freeldr/arch/powerpc/boot.s Added : /freeldr/arch/powerpc/mach.c Added : /freeldr/arch/powerpc/mboot.c Added : /freeldr/bootmgr.c Added : /freeldr/cache Added : /freeldr/cache/blocklist.c Added : /freeldr/cache/cache.c Added : /freeldr/cmdline.c Added : /freeldr/comm Added : /freeldr/comm/rs232.c Added : /freeldr/custom.c Added : /freeldr/debug.c Added : /freeldr/disk Added : /freeldr/disk/disk.c Added : /freeldr/disk/partition.c Added : /freeldr/drivemap.c Added : /freeldr/freeldr.c Added : /freeldr/freeldr.rbuild Added : /freeldr/freeldr_arch.rbuild Added : /freeldr/freeldr_base.rbuild Added : /freeldr/freeldr_base64k.rbuild Added : /freeldr/freeldr_main.rbuild Added : /freeldr/freeldr_startup.rbuild Added : /freeldr/fs Added : /freeldr/fs/ext2.c Added : /freeldr/fs/fat.c Added : /freeldr/fs/fs.c Added : /freeldr/fs/fsrec.c Added : /freeldr/fs/iso.c Added : /freeldr/fs/ntfs.c Added : /freeldr/include Added : /freeldr/include/arch Added : /freeldr/include/arch/i386 Added : /freeldr/include/arch/i386/hardware.h Added : /freeldr/include/arch/i386/i386.h Added : /freeldr/include/arch/i386/machpc.h Added : /freeldr/include/arch/i386/machxbox.h Added : /freeldr/include/arch.h Added : /freeldr/include/bootmgr.h Added : /freeldr/include/cache.h Added : /freeldr/include/cmdline.h Added : /freeldr/include/comm.h Added : /freeldr/include/debug.h Added : /freeldr/include/disk.h Added : /freeldr/include/drivemap.h Added : /freeldr/include/freeldr.h Added : /freeldr/include/fs Added : /freeldr/include/fs/ext2.h Added : /freeldr/include/fs/fat.h Added : /freeldr/include/fs/iso.h Added : /freeldr/include/fs/ntfs.h Added : /freeldr/include/fs.h Added : /freeldr/include/fsrec.h Added : /freeldr/include/inffile.h Added : /freeldr/include/inifile.h Added : /freeldr/include/keycodes.h Added : /freeldr/include/linux.h Added : /freeldr/include/machine.h Added : /freeldr/include/miscboot.h Added : /freeldr/include/mm.h Added : /freeldr/include/multiboot.h Added : /freeldr/include/of.h Added : /freeldr/include/options.h Added : /freeldr/include/oslist.h Added : /freeldr/include/portio.h Added : /freeldr/include/reactos.h Added : /freeldr/include/registry.h Added : /freeldr/include/rtl.h Added : /freeldr/include/ui Added : /freeldr/include/ui/gui.h Added : /freeldr/include/ui/tui.h Added : /freeldr/include/ui.h Added : /freeldr/include/ver.h Added : /freeldr/include/video.h Added : /freeldr/include/winldr.h Added : /freeldr/inffile Added : /freeldr/inffile/inffile.c Added : /freeldr/inifile Added : /freeldr/inifile/ini_init.c Added : /freeldr/inifile/inifile.c Added : /freeldr/inifile/parse.c Added : /freeldr/linuxboot.c Added : /freeldr/machine.c Added : /freeldr/math Added : /freeldr/math/i386.h Added : /freeldr/math/libgcc2.c Added : /freeldr/math/libgcc2.h Added : /freeldr/math/longlong.h Added : /freeldr/math/powerpc.h Added : /freeldr/miscboot.c Added : /freeldr/mm Added : /freeldr/mm/meminit.c Added : /freeldr/mm/mm.c Added : /freeldr/options.c Added : /freeldr/oslist.c Added : /freeldr/reactos Added : /freeldr/reactos/arcname.c Added : /freeldr/reactos/binhive.c Added : /freeldr/reactos/reactos.c Added : /freeldr/reactos/registry.c Added : /freeldr/reactos/setupldr.c Added : /freeldr/rtl Added : /freeldr/rtl/libsupp.c Added : /freeldr/rtl/list.c Added : /freeldr/setupldr.rbuild Added : /freeldr/setupldr_main.rbuild Added : /freeldr/ui Added : /freeldr/ui/gui.c Added : /freeldr/ui/tui.c Added : /freeldr/ui/tuimenu.c Added : /freeldr/ui/ui.c Added : /freeldr/version.c Added : /freeldr/video Added : /freeldr/video/bank.c Added : /freeldr/video/fade.c Added : /freeldr/video/palette.c Added : /freeldr/video/pixel.c Added : /freeldr/video/video.c Added : /freeldr/windows Added : /freeldr/windows/conversion.c Added : /freeldr/windows/peloader.c Added : /freeldr/windows/winldr.c Added : /freeldr/windows/wlmemory.c Added : /freeldr/windows/wlregistry.c svn path=/branches/winldr/; revision=25067
149 lines
7.5 KiB
C
149 lines
7.5 KiB
C
/* $Id$
|
|
*
|
|
* FreeLoader
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
*/
|
|
|
|
#ifndef __MACHINE_H_
|
|
#define __MACHINE_H_
|
|
|
|
#ifndef __DISK_H
|
|
#include "disk.h"
|
|
#endif
|
|
|
|
#ifndef __MEMORY_H
|
|
#include "mm.h"
|
|
#endif
|
|
|
|
typedef enum tagVIDEODISPLAYMODE
|
|
{
|
|
VideoTextMode,
|
|
VideoGraphicsMode
|
|
} VIDEODISPLAYMODE, *PVIDEODISPLAYMODE;
|
|
|
|
typedef struct tagMACHVTBL
|
|
{
|
|
VOID (*ConsPutChar)(int Ch);
|
|
BOOLEAN (*ConsKbHit)(VOID);
|
|
int (*ConsGetCh)(VOID);
|
|
|
|
VOID (*VideoClearScreen)(UCHAR Attr);
|
|
VIDEODISPLAYMODE (*VideoSetDisplayMode)(char *DisplayMode, BOOLEAN Init);
|
|
VOID (*VideoGetDisplaySize)(PULONG Width, PULONG Height, PULONG Depth);
|
|
ULONG (*VideoGetBufferSize)(VOID);
|
|
VOID (*VideoSetTextCursorPosition)(ULONG X, ULONG Y);
|
|
VOID (*VideoHideShowTextCursor)(BOOLEAN Show);
|
|
VOID (*VideoPutChar)(int Ch, UCHAR Attr, unsigned X, unsigned Y);
|
|
VOID (*VideoCopyOffScreenBufferToVRAM)(PVOID Buffer);
|
|
BOOLEAN (*VideoIsPaletteFixed)(VOID);
|
|
VOID (*VideoSetPaletteColor)(UCHAR Color, UCHAR Red, UCHAR Green, UCHAR Blue);
|
|
VOID (*VideoGetPaletteColor)(UCHAR Color, UCHAR* Red, UCHAR* Green, UCHAR* Blue);
|
|
VOID (*VideoSync)(VOID);
|
|
VOID (*VideoPrepareForReactOS)(VOID);
|
|
|
|
ULONG (*GetMemoryMap)(PBIOS_MEMORY_MAP BiosMemoryMap, ULONG MaxMemoryMapSize);
|
|
|
|
BOOLEAN (*DiskGetBootVolume)(PULONG DriveNumber, PULONGLONG StartSector, PULONGLONG SectorCount, int *FsType);
|
|
BOOLEAN (*DiskGetSystemVolume)(char *SystemPath, char *RemainingPath, PULONG Device, PULONG DriveNumber, PULONGLONG StartSector, PULONGLONG SectorCount, int *FsType);
|
|
BOOLEAN (*DiskGetBootPath)(char *BootPath, unsigned Size);
|
|
VOID (*DiskGetBootDevice)(PULONG BootDevice);
|
|
BOOLEAN (*DiskBootingFromFloppy)(VOID);
|
|
BOOLEAN (*DiskNormalizeSystemPath)(char *SystemPath, unsigned Size);
|
|
BOOLEAN (*DiskReadLogicalSectors)(ULONG DriveNumber, ULONGLONG SectorNumber, ULONG SectorCount, PVOID Buffer);
|
|
BOOLEAN (*DiskGetPartitionEntry)(ULONG DriveNumber, ULONG PartitionNumber, PPARTITION_TABLE_ENTRY PartitionTableEntry);
|
|
BOOLEAN (*DiskGetDriveGeometry)(ULONG DriveNumber, PGEOMETRY DriveGeometry);
|
|
ULONG (*DiskGetCacheableBlockCount)(ULONG DriveNumber);
|
|
|
|
VOID (*RTCGetCurrentDateTime)(PULONG Year, PULONG Month, PULONG Day, PULONG Hour, PULONG Minute, PULONG Second);
|
|
|
|
VOID (*HwDetect)(PCONFIGURATION_COMPONENT_DATA *ComponentRoot);
|
|
} MACHVTBL, *PMACHVTBL;
|
|
|
|
VOID MachInit(const char *CmdLine);
|
|
|
|
extern MACHVTBL MachVtbl;
|
|
|
|
VOID MachConsPutChar(int Ch);
|
|
BOOLEAN MachConsKbHit();
|
|
int MachConsGetCh();
|
|
VOID MachVideoClearScreen(UCHAR Attr);
|
|
VIDEODISPLAYMODE MachVideoSetDisplayMode(char *DisplayMode, BOOLEAN Init);
|
|
VOID MachVideoGetDisplaySize(PULONG Width, PULONG Height, PULONG Depth);
|
|
ULONG MachVideoGetBufferSize(VOID);
|
|
VOID MachVideoSetTextCursorPosition(ULONG X, ULONG Y);
|
|
VOID MachVideoHideShowTextCursor(BOOLEAN Show);
|
|
VOID MachVideoPutChar(int Ch, UCHAR Attr, unsigned X, unsigned Y);
|
|
VOID MachVideoCopyOffScreenBufferToVRAM(PVOID Buffer);
|
|
BOOLEAN MachVideoIsPaletteFixed(VOID);
|
|
VOID MachVideoSetPaletteColor(UCHAR Color, UCHAR Red, UCHAR Green, UCHAR Blue);
|
|
VOID MachVideoGetPaletteColor(UCHAR Color, UCHAR *Red, UCHAR *Green, UCHAR *Blue);
|
|
VOID MachVideoSync(VOID);
|
|
VOID MachVideoPrepareForReactOS(VOID);
|
|
ULONG MachGetMemoryMap(PBIOS_MEMORY_MAP BiosMemoryMap, ULONG MaxMemoryMapSize);
|
|
BOOLEAN MachDiskGetBootVolume(PULONG DriveNumber, PULONGLONG StartSector, PULONGLONG SectorCount, int *FsType);
|
|
BOOLEAN
|
|
MachDiskGetSystemVolume(char *SystemPath,
|
|
char *RemainingPath,
|
|
PULONG Device,
|
|
PULONG DriveNumber,
|
|
PULONGLONG StartSector,
|
|
PULONGLONG SectorCount,
|
|
int *FsType);
|
|
BOOLEAN MachDiskGetBootPath(char *BootPath, unsigned Size);
|
|
VOID MachDiskGetBootDevice(PULONG BootDevice);
|
|
BOOLEAN MachDiskBootingFromFloppy();
|
|
BOOLEAN MachDiskNormalizeSystemPath(char *SystemPath, unsigned Size);
|
|
BOOLEAN MachDiskReadLogicalSectors(ULONG DriveNumber, ULONGLONG SectorNumber, ULONG SectorCount, PVOID Buffer);
|
|
BOOLEAN MachDiskGetPartitionEntry(ULONG DriveNumber, ULONG PartitionNumber, PPARTITION_TABLE_ENTRY PartitionTableEntry);
|
|
BOOLEAN MachDiskGetDriveGeometry(ULONG DriveNumber, PGEOMETRY DriveGeometry);
|
|
ULONG MachDiskGetCacheableBlockCount(ULONG DriveNumber);
|
|
VOID MachRTCGetCurrentDateTime(PULONG Year, PULONG Month, PULONG Day, PULONG Hour, PULONG Minute, PULONG Second);
|
|
VOID MachHwDetect(PCONFIGURATION_COMPONENT_DATA *ComponentRoot);
|
|
|
|
#define MachConsPutChar(Ch) MachVtbl.ConsPutChar(Ch)
|
|
#define MachConsKbHit() MachVtbl.ConsKbHit()
|
|
#define MachConsGetCh() MachVtbl.ConsGetCh()
|
|
#define MachVideoClearScreen(Attr) MachVtbl.VideoClearScreen(Attr)
|
|
#define MachVideoSetDisplayMode(Mode, Init) MachVtbl.VideoSetDisplayMode((Mode), (Init))
|
|
#define MachVideoGetDisplaySize(W, H, D) MachVtbl.VideoGetDisplaySize((W), (H), (D))
|
|
#define MachVideoGetBufferSize() MachVtbl.VideoGetBufferSize()
|
|
#define MachVideoSetTextCursorPosition(X, Y) MachVtbl.VideoSetTextCursorPosition((X), (Y))
|
|
#define MachVideoHideShowTextCursor(Show) MachVtbl.VideoHideShowTextCursor(Show)
|
|
#define MachVideoPutChar(Ch, Attr, X, Y) MachVtbl.VideoPutChar((Ch), (Attr), (X), (Y))
|
|
#define MachVideoCopyOffScreenBufferToVRAM(Buf) MachVtbl.VideoCopyOffScreenBufferToVRAM(Buf)
|
|
#define MachVideoIsPaletteFixed() MachVtbl.VideoIsPaletteFixed()
|
|
#define MachVideoSetPaletteColor(Col, R, G, B) MachVtbl.VideoSetPaletteColor((Col), (R), (G), (B))
|
|
#define MachVideoGetPaletteColor(Col, R, G, B) MachVtbl.VideoGetPaletteColor((Col), (R), (G), (B))
|
|
#define MachVideoSync() MachVtbl.VideoSync()
|
|
#define MachVideoPrepareForReactOS() MachVtbl.VideoPrepareForReactOS()
|
|
#define MachGetMemoryMap(MMap, Size) MachVtbl.GetMemoryMap((MMap), (Size))
|
|
#define MachDiskGetBootVolume(Drv, Start, Cnt, FsType) MachVtbl.DiskGetBootVolume((Drv), (Start), (Cnt), (FsType))
|
|
#define MachDiskGetSystemVolume(SysPath, RemPath, Dev, Drv, Start, Cnt, FsType) MachVtbl.DiskGetSystemVolume((SysPath), (RemPath), (Dev), (Drv), (Start), (Cnt), (FsType))
|
|
#define MachDiskGetBootPath(Path, Size) MachVtbl.DiskGetBootPath((Path), (Size))
|
|
#define MachDiskGetBootDevice(BootDevice) MachVtbl.DiskGetBootDevice(BootDevice)
|
|
#define MachDiskBootingFromFloppy() MachVtbl.DiskBootingFromFloppy()
|
|
#define MachDiskNormalizeSystemPath(Path, Size) MachVtbl.DiskNormalizeSystemPath((Path), (Size))
|
|
#define MachDiskReadLogicalSectors(Drive, Start, Count, Buf) MachVtbl.DiskReadLogicalSectors((Drive), (Start), (Count), (Buf))
|
|
#define MachDiskGetPartitionEntry(Drive, Part, Entry) MachVtbl.DiskGetPartitionEntry((Drive), (Part), (Entry))
|
|
#define MachDiskGetDriveGeometry(Drive, Geom) MachVtbl.DiskGetDriveGeometry((Drive), (Geom))
|
|
#define MachDiskGetCacheableBlockCount(Drive) MachVtbl.DiskGetCacheableBlockCount(Drive)
|
|
#define MachRTCGetCurrentDateTime(Y, Mo, D, H, Mi, S) MachVtbl.RTCGetCurrentDateTime((Y), (Mo), (D), (H), (Mi), (S));
|
|
#define MachHwDetect(ConfigRoot) MachVtbl.HwDetect((ConfigRoot))
|
|
|
|
#endif /* __MACHINE_H_ */
|
|
|
|
/* EOF */
|