diff --git a/kernel/initdisk.c b/kernel/initdisk.c index 7a90ee7..5b1b5d7 100644 --- a/kernel/initdisk.c +++ b/kernel/initdisk.c @@ -581,8 +581,10 @@ void DosDefinePartition(struct DriveParamS *driveParam, pddt->ddt_WriteVerifySupported = driveParam->WriteVerifySupported; pddt->ddt_ncyl = driveParam->chs.Cylinder; +#ifdef DEBUG if (pddt->ddt_LBASupported) DebugPrintf(("LBA enabled for drive %c:\n", 'A' + nUnits)); +#endif pddt->ddt_offset = StartSector; @@ -761,8 +763,8 @@ ErrorReturn: converts physical into logical representation of partition entry */ -ConvPartTableEntryToIntern(struct PartTableEntry * pEntry, - UBYTE FAR * pDisk) +BOOL ConvPartTableEntryToIntern(struct PartTableEntry * pEntry, + UBYTE FAR * pDisk) { int i; @@ -797,7 +799,7 @@ ConvPartTableEntryToIntern(struct PartTableEntry * pEntry, return TRUE; } -ScanForPrimaryPartitions(struct DriveParamS * driveParam, int scan_type, +BOOL ScanForPrimaryPartitions(struct DriveParamS * driveParam, int scan_type, struct PartTableEntry * pEntry, ULONG startSector, int partitionsToIgnore, int extendedPartNo) { @@ -1249,7 +1251,7 @@ void ReadAllPartitionTables(void) setvec(0x1e, (intvec)int1e_table); /* Setup media info and BPBs arrays for floppies */ - for (Unit = 0; Unit < nUnits; Unit++) + for (Unit = 0; Unit < 2; Unit++) { pddt = DynAlloc("ddt", 1, sizeof(ddt)); @@ -1267,6 +1269,9 @@ void ReadAllPartitionTables(void) fmemcpy(&pddt->ddt_bpb, &pddt->ddt_defbpb, sizeof(bpb)); } + /* Initial number of disk units */ + nUnits = 2; + /* this is a quick patch - see if B: exists test for A: also, need not exist @@ -1364,9 +1369,6 @@ COUNT dsk_init() /* Reset the drives */ BIOS_drive_reset(0); - /* Initial number of disk units */ - nUnits = 2; - ReadAllPartitionTables(); return nUnits; diff --git a/kernel/inithma.c b/kernel/inithma.c index 3f5d9a8..5ba6296 100644 --- a/kernel/inithma.c +++ b/kernel/inithma.c @@ -87,6 +87,7 @@ VOID ASMCFUNC FAR _DisableA20(VOID); void FAR * ASMCFUNC DetectXMSDriver(VOID); int ASMCFUNC init_call_XMScall(void FAR * driverAddress, UWORD ax, UWORD dx); +STATIC void InstallVDISK(void); #ifdef DEBUG #ifdef __TURBOC__ @@ -239,14 +240,19 @@ int MoveKernelToHMA() DosLoadedInHMA = TRUE; } - /* report the fact we are running high thorugh int 21, ax=3306 */ + /* + on finalize, will install a VDISK + */ + + InstallVDISK(); + + /* report the fact we are running high through int 21, ax=3306 */ version_flags |= 0x10; return TRUE; } -/* not necessary anymore : BO */ /* now protect against HIMEM/FDXMS/... by simulating a VDISK FDXMS should detect us and not give HMA access to ohers @@ -254,8 +260,7 @@ int MoveKernelToHMA() so: we install this after all drivers have been loaded */ -#if 0 -void InstallVDISK(VOID) +STATIC void InstallVDISK(void) { static struct { /* Boot-Sektor of a RAM-Disk */ UBYTE dummy1[3]; /* HIMEM.SYS uses 3, but FDXMS uses 2 */ @@ -278,38 +283,12 @@ void InstallVDISK(VOID) if (!DosLoadedInHMA) return; - if (HMAclaimed) - return; fmemcpy(MK_FP(0xffff, 0x0010), &VDISK_BOOT_SEKTOR, sizeof(VDISK_BOOT_SEKTOR)); - setvec(0x19, MK_FP(0xffff, 0x0010)); /* let INT 19 point to VDISK */ - *(WORD FAR *) MK_FP(0xffff, 0x002e) = 1024 + 64; } -#endif - -/* - this should be called, after each device driver - has been loaded with FALSE - and on finished CONFIG processing with TRUE. - - will try to grab HMA; - - on finalize, will install a VDISK -*/ - -#if 0 /* not necessary anymore */ - -void HMAconfig(int finalize) -{ - ClaimHMA(); - - if (finalize) - InstallVDISK(); -} -#endif /* this allocates some bytes from the HMA area @@ -346,7 +325,6 @@ void MoveKernel(unsigned NewKernelSegment) UBYTE FAR *HMASource; unsigned len; - int3(); if (CurrentKernelSegment == 0) CurrentKernelSegment = FP_SEG(_HMATextEnd); diff --git a/kernel/initoem.c b/kernel/initoem.c index b9dbfbf..220b705 100644 --- a/kernel/initoem.c +++ b/kernel/initoem.c @@ -39,15 +39,15 @@ UWORD init_oem(void) { UWORD top_k = 0; -#ifndef __TURBOC__ +#ifdef __TURBOC__ + __int__(0x12); + top_k = _AX; +#elif defined(I86) asm { int 0x12; mov top_k, ax; } -#else - __int__(0x12); - top_k = _AX; #endif return top_k; }