mirror of
https://github.com/FDOS/kernel.git
synced 2025-07-23 13:54:30 +02:00
Move externs to header files; sft init cleanup (+3 files need to be low)
git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@623 6ac86273-5f31-0410-b378-82cca8765d1b
This commit is contained in:
parent
5bffd69d1d
commit
c5c7128a02
110
kernel/config.c
110
kernel/config.c
@ -29,9 +29,7 @@
|
|||||||
|
|
||||||
#include "portab.h"
|
#include "portab.h"
|
||||||
#include "init-mod.h"
|
#include "init-mod.h"
|
||||||
#include "init-dat.h"
|
|
||||||
#include "dyndata.h"
|
#include "dyndata.h"
|
||||||
#include "lol.h"
|
|
||||||
|
|
||||||
#ifdef VERSION_STRINGS
|
#ifdef VERSION_STRINGS
|
||||||
static BYTE *RcsId =
|
static BYTE *RcsId =
|
||||||
@ -45,27 +43,6 @@ static BYTE *RcsId =
|
|||||||
#endif
|
#endif
|
||||||
#define para2far(seg) ((mcb FAR *)MK_FP((seg), 0))
|
#define para2far(seg) ((mcb FAR *)MK_FP((seg), 0))
|
||||||
|
|
||||||
/*
|
|
||||||
These are the far variables from the DOS data segment that we need here. The
|
|
||||||
init procedure uses a different default DS data segment, which is discarded
|
|
||||||
after use. I hope to clean this up to use the DOS List of List and Swappable
|
|
||||||
Data Area obtained via INT21.
|
|
||||||
|
|
||||||
-- Bart
|
|
||||||
*/
|
|
||||||
|
|
||||||
extern struct dhdr
|
|
||||||
DOSTEXTFAR ASM blk_dev; /* Block device (Disk) driver */
|
|
||||||
extern struct buffer FAR *DOSFAR firstAvailableBuf; /* first 'available' buffer */
|
|
||||||
extern struct lol ASM DOSFAR DATASTART;
|
|
||||||
struct lol FAR *LoL = &DATASTART;
|
|
||||||
|
|
||||||
extern BYTE DOSFAR _HMATextAvailable, /* first byte of available CODE area */
|
|
||||||
FAR _HMATextStart[], /* first byte of HMAable CODE area */
|
|
||||||
FAR _HMATextEnd[], DOSFAR ASM break_ena, /* break enabled flag */
|
|
||||||
DOSFAR _InitTextStart, /* first available byte of ram */
|
|
||||||
DOSFAR ReturnAnyDosVersionExpected;
|
|
||||||
|
|
||||||
UWORD umb_start = 0, UMB_top = 0;
|
UWORD umb_start = 0, UMB_top = 0;
|
||||||
UWORD ram_top = 0; /* How much ram in Kbytes */
|
UWORD ram_top = 0; /* How much ram in Kbytes */
|
||||||
|
|
||||||
@ -273,22 +250,17 @@ void PreConfig(void)
|
|||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
{
|
{
|
||||||
extern BYTE FAR ASM internal_data[];
|
|
||||||
printf("SDA located at 0x%p\n", internal_data);
|
printf("SDA located at 0x%p\n", internal_data);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
/* Begin by initializing our system buffers */
|
/* Begin by initializing our system buffers */
|
||||||
/* the dms_scratch buffer is statically allocated
|
|
||||||
in the DSK module */
|
|
||||||
/* dma_scratch = (BYTE FAR *) KernelAllocDma(BUFFERSIZE); */
|
|
||||||
/* DebugPrintf(("Preliminary DMA scratchpad allocated at 0x%p\n",dma_scratch));*/
|
|
||||||
|
|
||||||
/* buffers = (struct buffer FAR *)
|
|
||||||
KernelAlloc(Config.cfgBuffers * sizeof(struct buffer)); */
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
/* printf("Preliminary %d buffers allocated at 0x%p\n", Config.cfgBuffers, buffers);*/
|
/* printf("Preliminary %d buffers allocated at 0x%p\n", Config.cfgBuffers, buffers);*/
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
LoL->DPBp =
|
||||||
|
DynAlloc("DPBp", blk_dev.dh_name[0], sizeof(struct dpb));
|
||||||
|
|
||||||
/* Initialize the file table */
|
/* Initialize the file table */
|
||||||
/* f_nodes = (f_node_ptr)
|
/* f_nodes = (f_node_ptr)
|
||||||
KernelAlloc(Config.cfgFiles * sizeof(struct f_node));*/
|
KernelAlloc(Config.cfgFiles * sizeof(struct f_node));*/
|
||||||
@ -305,19 +277,13 @@ void PreConfig(void)
|
|||||||
|
|
||||||
config_init_buffers(Config.cfgBuffers);
|
config_init_buffers(Config.cfgBuffers);
|
||||||
|
|
||||||
LoL->sfthead->sftt_next =
|
|
||||||
KernelAlloc(sizeof(sftheader) + (Config.cfgFiles - 5) * sizeof(sft), 'F', 0);
|
|
||||||
LoL->sfthead->sftt_next->sftt_next = (sfttbl FAR *) - 1;
|
|
||||||
LoL->sfthead->sftt_next->sftt_count = Config.cfgFiles - 5;
|
|
||||||
|
|
||||||
LoL->CDSp = KernelAlloc(sizeof(struct cds) * LoL->lastdrive, 'L', 0);
|
LoL->CDSp = KernelAlloc(sizeof(struct cds) * LoL->lastdrive, 'L', 0);
|
||||||
|
|
||||||
LoL->DPBp = KernelAlloc(blk_dev.dh_name[0] * sizeof(struct dpb), 'E', 0);
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
printf("Preliminary:\n f_node 0x%x", LoL->f_nodes);
|
printf("Preliminary:\n f_node 0x%x", LoL->f_nodes);
|
||||||
/* printf(" FCB table 0x%p\n",LoL->FCBp);*/
|
/* printf(" FCB table 0x%p\n",LoL->FCBp);*/
|
||||||
printf(" sft table 0x%p\n", LoL->sfthead->sftt_next);
|
printf(" sft table 0x%p\n", LoL->sfthead);
|
||||||
printf(" CDS table 0x%p\n", LoL->CDSp);
|
printf(" CDS table 0x%p\n", LoL->CDSp);
|
||||||
printf(" DPB table 0x%p\n", LoL->DPBp);
|
printf(" DPB table 0x%p\n", LoL->DPBp);
|
||||||
#endif
|
#endif
|
||||||
@ -355,13 +321,17 @@ void PreConfig2(void)
|
|||||||
mcb_init(LoL->first_mcb, ram_top * 64 - LoL->first_mcb - 1);
|
mcb_init(LoL->first_mcb, ram_top * 64 - LoL->first_mcb - 1);
|
||||||
if (UmbState == 2)
|
if (UmbState == 2)
|
||||||
umb_init();
|
umb_init();
|
||||||
|
|
||||||
|
LoL->sfthead->sftt_next = KernelAlloc(sizeof(sftheader) + 3 * sizeof(sft), 'F', 0);
|
||||||
|
LoL->sfthead->sftt_next->sftt_next = (sfttbl FAR *) - 1;
|
||||||
|
LoL->sfthead->sftt_next->sftt_count = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Do third pass initialization. */
|
/* Do third pass initialization. */
|
||||||
/* Also, run config.sys to load drivers. */
|
/* Also, run config.sys to load drivers. */
|
||||||
void PostConfig(void)
|
void PostConfig(void)
|
||||||
{
|
{
|
||||||
struct dpb FAR *old_dpbp;
|
sfttbl FAR *sp;
|
||||||
|
|
||||||
/* We could just have loaded FDXMS or HIMEM */
|
/* We could just have loaded FDXMS or HIMEM */
|
||||||
if (HMAState == HMA_REQ && MoveKernelToHMA())
|
if (HMAState == HMA_REQ && MoveKernelToHMA())
|
||||||
@ -374,8 +344,6 @@ void PostConfig(void)
|
|||||||
Config.cfgStacksHigh = TRUE;
|
Config.cfgStacksHigh = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* close all (device) files */
|
|
||||||
|
|
||||||
/* compute lastdrive ... */
|
/* compute lastdrive ... */
|
||||||
LoL->lastdrive = Config.cfgLastdrive;
|
LoL->lastdrive = Config.cfgLastdrive;
|
||||||
if (LoL->lastdrive < LoL->nblkdev)
|
if (LoL->lastdrive < LoL->nblkdev)
|
||||||
@ -395,19 +363,15 @@ void PostConfig(void)
|
|||||||
/* LoL->FCBp = (sfttbl FAR *)&FcbSft; */
|
/* LoL->FCBp = (sfttbl FAR *)&FcbSft; */
|
||||||
/* LoL->FCBp = KernelAlloc(sizeof(sftheader)
|
/* LoL->FCBp = KernelAlloc(sizeof(sftheader)
|
||||||
+ Config.cfgFiles * sizeof(sft)); */
|
+ Config.cfgFiles * sizeof(sft)); */
|
||||||
LoL->sfthead->sftt_next = (sfttbl FAR *)
|
sp = LoL->sfthead->sftt_next;
|
||||||
KernelAlloc(sizeof(sftheader) + (Config.cfgFiles - 5) * sizeof(sft), 'F',
|
sp = sp->sftt_next = (sfttbl FAR *)
|
||||||
|
KernelAlloc(sizeof(sftheader) + (Config.cfgFiles - 8) * sizeof(sft), 'F',
|
||||||
Config.cfgFilesHigh);
|
Config.cfgFilesHigh);
|
||||||
LoL->sfthead->sftt_next->sftt_next = (sfttbl FAR *) - 1;
|
sp->sftt_next = (sfttbl FAR *) - 1;
|
||||||
LoL->sfthead->sftt_next->sftt_count = Config.cfgFiles - 5;
|
sp->sftt_count = Config.cfgFiles - 8;
|
||||||
|
|
||||||
LoL->CDSp = KernelAlloc(sizeof(struct cds) * LoL->lastdrive, 'L', Config.cfgLastdriveHigh);
|
LoL->CDSp = KernelAlloc(sizeof(struct cds) * LoL->lastdrive, 'L', Config.cfgLastdriveHigh);
|
||||||
|
|
||||||
old_dpbp = LoL->DPBp;
|
|
||||||
LoL->DPBp = KernelAlloc(blk_dev.dh_name[0] * sizeof(struct dpb), 'E',
|
|
||||||
Config.cfgDosDataUmb);
|
|
||||||
fmemcpy(LoL->DPBp, old_dpbp, blk_dev.dh_name[0] * sizeof(struct dpb));
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
printf("Final: \n f_node 0x%x\n", LoL->f_nodes);
|
printf("Final: \n f_node 0x%x\n", LoL->f_nodes);
|
||||||
/* printf(" FCB table 0x%p\n",LoL->FCBp);*/
|
/* printf(" FCB table 0x%p\n",LoL->FCBp);*/
|
||||||
@ -951,8 +915,6 @@ STATIC VOID Dosmem(BYTE * pLine)
|
|||||||
BYTE *pTmp;
|
BYTE *pTmp;
|
||||||
BYTE UMBwanted = FALSE;
|
BYTE UMBwanted = FALSE;
|
||||||
|
|
||||||
/* extern BYTE FAR INITDataSegmentClaimed; */
|
|
||||||
|
|
||||||
pLine = GetStringArg(pLine, szBuf);
|
pLine = GetStringArg(pLine, szBuf);
|
||||||
|
|
||||||
for (pTmp = szBuf; *pTmp != '\0'; pTmp++)
|
for (pTmp = szBuf; *pTmp != '\0'; pTmp++)
|
||||||
@ -997,8 +959,6 @@ STATIC VOID DosData(BYTE * pLine)
|
|||||||
{
|
{
|
||||||
BYTE *pTmp;
|
BYTE *pTmp;
|
||||||
|
|
||||||
/* extern BYTE FAR INITDataSegmentClaimed; */
|
|
||||||
|
|
||||||
pLine = GetStringArg(pLine, szBuf);
|
pLine = GetStringArg(pLine, szBuf);
|
||||||
|
|
||||||
for (pTmp = szBuf; *pTmp != '\0'; pTmp++)
|
for (pTmp = szBuf; *pTmp != '\0'; pTmp++)
|
||||||
@ -1018,7 +978,6 @@ STATIC VOID CfgSwitchar(BYTE * pLine)
|
|||||||
|
|
||||||
STATIC VOID CfgSwitches(BYTE * pLine)
|
STATIC VOID CfgSwitches(BYTE * pLine)
|
||||||
{
|
{
|
||||||
extern unsigned char FAR kbdType;
|
|
||||||
pLine = skipwh(pLine);
|
pLine = skipwh(pLine);
|
||||||
if (commands[0].pass == 0) {
|
if (commands[0].pass == 0) {
|
||||||
if ('=' != *pLine)
|
if ('=' != *pLine)
|
||||||
@ -1201,8 +1160,6 @@ STATIC VOID CfgBreak(BYTE * pLine)
|
|||||||
|
|
||||||
STATIC VOID Numlock(BYTE * pLine)
|
STATIC VOID Numlock(BYTE * pLine)
|
||||||
{
|
{
|
||||||
extern VOID ASMCFUNC keycheck(void);
|
|
||||||
|
|
||||||
/* Format: NUMLOCK = (ON | OFF) */
|
/* Format: NUMLOCK = (ON | OFF) */
|
||||||
BYTE FAR *keyflags = (BYTE FAR *) MK_FP(0x40, 0x17);
|
BYTE FAR *keyflags = (BYTE FAR *) MK_FP(0x40, 0x17);
|
||||||
|
|
||||||
@ -1861,38 +1818,12 @@ STATIC VOID CfgMenuDefault(BYTE * pLine)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*********************************************************************************
|
/*********************************************************************************
|
||||||
National specific things.
|
National specific things.
|
||||||
this handles only Date/Time/Currency, and NOT codepage things.
|
this handles only Date/Time/Currency, and NOT codepage things.
|
||||||
Some may consider this a hack, but I like to see 24 Hour support. tom.
|
Some may consider this a hack, but I like to see 24 Hour support. tom.
|
||||||
*********************************************************************************/
|
*********************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
struct CountrySpecificInfo {
|
|
||||||
short CountryID; /* = W1 W437 # Country ID & Codepage */
|
|
||||||
short CodePage;
|
|
||||||
short DateFormat; /* Date format: 0/1/2: U.S.A./Europe/Japan */
|
|
||||||
char CurrencyString[5]; /* '$' ,'EUR' */
|
|
||||||
char ThousandSeparator[2]; /* ',' # Thousand's separator */
|
|
||||||
char DecimalPoint[2]; /* '.' # Decimal point */
|
|
||||||
char DateSeparator[2]; /* '-' */
|
|
||||||
char TimeSeparator[2]; /* ':' */
|
|
||||||
char CurrencyFormat; /* = 0 # Currency format (bit array)
|
|
||||||
0Fh BYTE currency format
|
|
||||||
bit 2 = set if currency symbol replaces decimal point
|
|
||||||
bit 1 = number of spaces between value and currency symbol
|
|
||||||
bit 0 = 0 if currency symbol precedes value
|
|
||||||
1 if currency symbol follows value
|
|
||||||
*/
|
|
||||||
char CurrencyPrecision; /* = 2 # Currency precision */
|
|
||||||
char TimeFormat; /* = 0 # time format: 0/1: 12/24 houres */
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
#define _DATE_MDY 0 /* mm/dd/yy */
|
#define _DATE_MDY 0 /* mm/dd/yy */
|
||||||
#define _DATE_DMY 1 /* dd.mm.yy */
|
#define _DATE_DMY 1 /* dd.mm.yy */
|
||||||
#define _DATE_YMD 2 /* yy/mm/dd */
|
#define _DATE_YMD 2 /* yy/mm/dd */
|
||||||
@ -2299,18 +2230,6 @@ struct CountrySpecificInfo specificCountriesSupported[] = {
|
|||||||
Aitor Santamara Merino (SP)
|
Aitor Santamara Merino (SP)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern struct {
|
|
||||||
char ThisIsAConstantOne;
|
|
||||||
short TableSize;
|
|
||||||
|
|
||||||
struct CountrySpecificInfo C;
|
|
||||||
|
|
||||||
} FAR nlsCountryInfoHardcoded;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
STATIC int LoadCountryInfoHardCoded(char *filename, COUNT ctryCode, COUNT codePage)
|
STATIC int LoadCountryInfoHardCoded(char *filename, COUNT ctryCode, COUNT codePage)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
@ -2440,7 +2359,6 @@ VOID DoInstall(void)
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
iregs r;
|
iregs r;
|
||||||
extern BYTE ASM _init_end[];
|
|
||||||
unsigned short installMemory;
|
unsigned short installMemory;
|
||||||
|
|
||||||
|
|
||||||
|
@ -38,7 +38,6 @@ additionally:
|
|||||||
#include "portab.h"
|
#include "portab.h"
|
||||||
#include "init-mod.h"
|
#include "init-mod.h"
|
||||||
#include "dyndata.h"
|
#include "dyndata.h"
|
||||||
#include "lol.h"
|
|
||||||
|
|
||||||
#if defined(DEBUG)
|
#if defined(DEBUG)
|
||||||
#define DebugPrintf(x) printf x
|
#define DebugPrintf(x) printf x
|
||||||
|
@ -20,6 +20,9 @@
|
|||||||
#include "nls.h"
|
#include "nls.h"
|
||||||
#include "buffer.h"
|
#include "buffer.h"
|
||||||
#include "dcb.h"
|
#include "dcb.h"
|
||||||
|
#include "lol.h"
|
||||||
|
|
||||||
|
#include "init-dat.h"
|
||||||
|
|
||||||
#include "kconfig.h"
|
#include "kconfig.h"
|
||||||
extern struct _KernelConfig InitKernelConfig;
|
extern struct _KernelConfig InitKernelConfig;
|
||||||
@ -49,6 +52,7 @@ void strcpy(char *dest, const char *src);
|
|||||||
/*inithma.c*/
|
/*inithma.c*/
|
||||||
extern BYTE DosLoadedInHMA;
|
extern BYTE DosLoadedInHMA;
|
||||||
int fmemcmp(BYTE far * s1, BYTE FAR * s2, unsigned len);
|
int fmemcmp(BYTE far * s1, BYTE FAR * s2, unsigned len);
|
||||||
|
void MoveKernel(unsigned NewKernelSegment);
|
||||||
|
|
||||||
#define setvec(n, isr) (void)(*(intvec FAR *)MK_FP(0,4 * (n)) = (isr))
|
#define setvec(n, isr) (void)(*(intvec FAR *)MK_FP(0,4 * (n)) = (isr))
|
||||||
|
|
||||||
@ -122,6 +126,7 @@ COUNT ASMCFUNC Umb_Test(void);
|
|||||||
COUNT ASMCFUNC UMB_get_largest(UCOUNT * seg, UCOUNT * size);
|
COUNT ASMCFUNC UMB_get_largest(UCOUNT * seg, UCOUNT * size);
|
||||||
BYTE * GetStringArg(BYTE * pLine, BYTE * pszString);
|
BYTE * GetStringArg(BYTE * pLine, BYTE * pszString);
|
||||||
void DoInstall(void);
|
void DoInstall(void);
|
||||||
|
UWORD GetBiosKey(int timeout);
|
||||||
|
|
||||||
/* diskinit.c */
|
/* diskinit.c */
|
||||||
COUNT dsk_init(VOID);
|
COUNT dsk_init(VOID);
|
||||||
@ -185,10 +190,83 @@ VOID init_fatal(BYTE * err_msg);
|
|||||||
WORD CDECL init_printf(CONST BYTE * fmt, ...);
|
WORD CDECL init_printf(CONST BYTE * fmt, ...);
|
||||||
WORD CDECL init_sprintf(BYTE * buff, CONST BYTE * fmt, ...);
|
WORD CDECL init_sprintf(BYTE * buff, CONST BYTE * fmt, ...);
|
||||||
|
|
||||||
void MoveKernel(unsigned NewKernelSegment);
|
/* initclk.c */
|
||||||
|
extern void Init_clk_driver(void);
|
||||||
|
|
||||||
extern UWORD HMAFree; /* first byte in HMA not yet used */
|
extern UWORD HMAFree; /* first byte in HMA not yet used */
|
||||||
|
|
||||||
extern unsigned CurrentKernelSegment;
|
extern unsigned CurrentKernelSegment;
|
||||||
|
extern struct _KernelConfig FAR ASM LowKernelConfig;
|
||||||
|
extern WORD days[2][13];
|
||||||
|
extern BYTE FAR *lpOldTop;
|
||||||
|
extern BYTE FAR *lpTop;
|
||||||
|
extern BYTE ASM _ib_start[], ASM _ib_end[], ASM _init_end[];
|
||||||
|
extern UWORD ram_top; /* How much ram in Kbytes */
|
||||||
|
extern char MenuSelected;
|
||||||
|
extern unsigned Menus;
|
||||||
|
extern char singleStep;
|
||||||
|
extern char SkipAllConfig;
|
||||||
|
|
||||||
|
extern struct lol FAR *LoL;
|
||||||
|
|
||||||
|
extern struct dhdr DOSTEXTFAR ASM blk_dev; /* Block device (Disk) driver */
|
||||||
|
|
||||||
|
extern struct buffer FAR *DOSFAR firstAvailableBuf; /* first 'available' buffer */
|
||||||
|
extern struct lol ASM DOSFAR DATASTART;
|
||||||
|
|
||||||
|
extern BYTE DOSFAR ASM _HMATextAvailable, /* first byte of available CODE area */
|
||||||
|
FAR ASM _HMATextStart[], /* first byte of HMAable CODE area */
|
||||||
|
FAR ASM _HMATextEnd[], DOSFAR ASM break_ena, /* break enabled flag */
|
||||||
|
DOSFAR _InitTextStart, /* first available byte of ram */
|
||||||
|
DOSFAR ReturnAnyDosVersionExpected;
|
||||||
|
|
||||||
|
extern BYTE FAR ASM internal_data[];
|
||||||
|
extern unsigned char FAR kbdType;
|
||||||
|
|
||||||
|
extern struct {
|
||||||
|
char ThisIsAConstantOne;
|
||||||
|
short TableSize;
|
||||||
|
|
||||||
|
struct CountrySpecificInfo C;
|
||||||
|
|
||||||
|
} FAR nlsCountryInfoHardcoded;
|
||||||
|
|
||||||
|
/*
|
||||||
|
data shared between DSK.C and INITDISK.C
|
||||||
|
*/
|
||||||
|
|
||||||
|
extern UWORD DOSFAR LBA_WRITE_VERIFY;
|
||||||
|
|
||||||
|
/* floppy parameter table, at 70:xxxx */
|
||||||
|
extern unsigned char DOSTEXTFAR ASM int1e_table[0xe];
|
||||||
|
|
||||||
|
struct RelocationTable {
|
||||||
|
UBYTE jmpFar;
|
||||||
|
UWORD jmpOffset;
|
||||||
|
UWORD jmpSegment;
|
||||||
|
UBYTE callNear;
|
||||||
|
UWORD callOffset;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct RelocatedEntry {
|
||||||
|
UBYTE callNear;
|
||||||
|
UWORD callOffset;
|
||||||
|
UBYTE jmpFar;
|
||||||
|
UWORD jmpOffset;
|
||||||
|
UWORD jmpSegment;
|
||||||
|
};
|
||||||
|
|
||||||
|
extern struct RelocationTable
|
||||||
|
DOSTEXTFAR ASM _HMARelocationTableStart[],
|
||||||
|
DOSTEXTFAR ASM _HMARelocationTableEnd[];
|
||||||
|
|
||||||
|
extern void FAR *DOSTEXTFAR ASM XMSDriverAddress;
|
||||||
|
extern VOID ASMCFUNC FAR _EnableA20(VOID);
|
||||||
|
extern VOID ASMCFUNC FAR _DisableA20(VOID);
|
||||||
|
|
||||||
|
extern void FAR * ASMCFUNC DetectXMSDriver(VOID);
|
||||||
|
extern int ASMCFUNC init_call_XMScall(void FAR * driverAddress, UWORD ax,
|
||||||
|
UWORD dx);
|
||||||
|
|
||||||
#if defined(WATCOM) && 0
|
#if defined(WATCOM) && 0
|
||||||
ULONG ASMCFUNC FAR MULULUS(ULONG mul1, UWORD mul2); /* MULtiply ULong by UShort */
|
ULONG ASMCFUNC FAR MULULUS(ULONG mul1, UWORD mul2); /* MULtiply ULong by UShort */
|
||||||
@ -197,5 +275,3 @@ ULONG ASMCFUNC FAR DIVULUS(ULONG mul1, UWORD mul2); /* DIVide ULong by UShor
|
|||||||
ULONG ASMCFUNC FAR DIVMODULUS(ULONG mul1, UWORD mul2, UWORD * rem); /* DIVide ULong by UShort */
|
ULONG ASMCFUNC FAR DIVMODULUS(ULONG mul1, UWORD mul2, UWORD * rem); /* DIVide ULong by UShort */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern struct lol FAR *LoL;
|
|
||||||
|
|
||||||
|
@ -28,8 +28,6 @@
|
|||||||
|
|
||||||
#include "portab.h"
|
#include "portab.h"
|
||||||
#include "init-mod.h"
|
#include "init-mod.h"
|
||||||
#include "init-dat.h"
|
|
||||||
#include "lol.h"
|
|
||||||
|
|
||||||
#ifdef VERSION_STRINGS
|
#ifdef VERSION_STRINGS
|
||||||
static char *RcsId =
|
static char *RcsId =
|
||||||
|
@ -26,9 +26,7 @@
|
|||||||
|
|
||||||
#include "portab.h"
|
#include "portab.h"
|
||||||
#include "init-mod.h"
|
#include "init-mod.h"
|
||||||
#include "init-dat.h"
|
|
||||||
#include "dyndata.h"
|
#include "dyndata.h"
|
||||||
#include "lol.h"
|
|
||||||
#ifdef VERSION_STRINGS
|
#ifdef VERSION_STRINGS
|
||||||
static BYTE *dskRcsId =
|
static BYTE *dskRcsId =
|
||||||
"$Id$";
|
"$Id$";
|
||||||
@ -37,15 +35,6 @@ static BYTE *dskRcsId =
|
|||||||
UBYTE InitDiskTransferBuffer[SEC_SIZE];
|
UBYTE InitDiskTransferBuffer[SEC_SIZE];
|
||||||
COUNT nUnits;
|
COUNT nUnits;
|
||||||
|
|
||||||
/*
|
|
||||||
data shared between DSK.C and INITDISK.C
|
|
||||||
*/
|
|
||||||
|
|
||||||
extern UWORD DOSFAR LBA_WRITE_VERIFY;
|
|
||||||
|
|
||||||
/* floppy parameter table, at 70:xxxx */
|
|
||||||
extern unsigned char DOSTEXTFAR ASM int1e_table[0xe];
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Rev 1.0 13 May 2001 tom ehlert
|
* Rev 1.0 13 May 2001 tom ehlert
|
||||||
* Initial revision.
|
* Initial revision.
|
||||||
|
@ -65,12 +65,6 @@
|
|||||||
|
|
||||||
#include "portab.h"
|
#include "portab.h"
|
||||||
#include "init-mod.h"
|
#include "init-mod.h"
|
||||||
#include "init-dat.h"
|
|
||||||
#include "lol.h"
|
|
||||||
|
|
||||||
extern BYTE FAR ASM _HMATextAvailable, /* first byte of available CODE area */
|
|
||||||
FAR ASM _HMATextStart[], /* first byte of HMAable CODE area */
|
|
||||||
FAR ASM _HMATextEnd[]; /* and the last byte of it */
|
|
||||||
|
|
||||||
#ifdef VERSION_STRINGS
|
#ifdef VERSION_STRINGS
|
||||||
static BYTE *RcsId =
|
static BYTE *RcsId =
|
||||||
@ -81,13 +75,6 @@ BYTE DosLoadedInHMA = FALSE; /* set to TRUE if loaded HIGH */
|
|||||||
BYTE HMAclaimed = FALSE; /* set to TRUE if claimed from HIMEM */
|
BYTE HMAclaimed = FALSE; /* set to TRUE if claimed from HIMEM */
|
||||||
UWORD HMAFree = 0; /* first byte in HMA not yet used */
|
UWORD HMAFree = 0; /* first byte in HMA not yet used */
|
||||||
|
|
||||||
extern void FAR *DOSTEXTFAR ASM XMSDriverAddress;
|
|
||||||
VOID ASMCFUNC FAR _EnableA20(VOID);
|
|
||||||
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);
|
STATIC void InstallVDISK(void);
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
@ -109,8 +96,6 @@ void int3()
|
|||||||
#define HMAInitPrintf(x)
|
#define HMAInitPrintf(x)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void MoveKernel(unsigned NewKernelSegment);
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
VOID hdump(BYTE FAR * p)
|
VOID hdump(BYTE FAR * p)
|
||||||
{
|
{
|
||||||
@ -381,24 +366,6 @@ void MoveKernel(unsigned NewKernelSegment)
|
|||||||
style table
|
style table
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct RelocationTable {
|
|
||||||
UBYTE jmpFar;
|
|
||||||
UWORD jmpOffset;
|
|
||||||
UWORD jmpSegment;
|
|
||||||
UBYTE callNear;
|
|
||||||
UWORD callOffset;
|
|
||||||
};
|
|
||||||
struct RelocatedEntry {
|
|
||||||
UBYTE callNear;
|
|
||||||
UWORD callOffset;
|
|
||||||
UBYTE jmpFar;
|
|
||||||
UWORD jmpOffset;
|
|
||||||
UWORD jmpSegment;
|
|
||||||
};
|
|
||||||
extern struct RelocationTable
|
|
||||||
DOSTEXTFAR ASM _HMARelocationTableStart[],
|
|
||||||
DOSTEXTFAR ASM _HMARelocationTableEnd[];
|
|
||||||
|
|
||||||
struct RelocationTable FAR *rp, rtemp;
|
struct RelocationTable FAR *rp, rtemp;
|
||||||
|
|
||||||
/* verify, that all entries are valid */
|
/* verify, that all entries are valid */
|
||||||
|
@ -29,7 +29,6 @@
|
|||||||
|
|
||||||
#include "portab.h"
|
#include "portab.h"
|
||||||
#include "init-mod.h"
|
#include "init-mod.h"
|
||||||
#include "lol.h"
|
|
||||||
|
|
||||||
#ifdef VERSION_STRINGS
|
#ifdef VERSION_STRINGS
|
||||||
static BYTE *RcsId =
|
static BYTE *RcsId =
|
||||||
|
@ -30,44 +30,20 @@
|
|||||||
#include "portab.h"
|
#include "portab.h"
|
||||||
#include "init-mod.h"
|
#include "init-mod.h"
|
||||||
#include "dyndata.h"
|
#include "dyndata.h"
|
||||||
#include "init-dat.h"
|
|
||||||
#include "lol.h"
|
|
||||||
|
|
||||||
char copyright[] =
|
|
||||||
"(C) Copyright 1995-2003 Pasquale J. Villani and The FreeDOS Project.\n"
|
|
||||||
"All Rights Reserved. This is free software and comes with ABSOLUTELY NO\n"
|
|
||||||
"WARRANTY; you can redistribute it and/or modify it under the terms of the\n"
|
|
||||||
"GNU General Public License as published by the Free Software Foundation;\n"
|
|
||||||
"either version 2, or (at your option) any later version.\n";
|
|
||||||
|
|
||||||
/*
|
|
||||||
These are the far variables from the DOS data segment that we need here. The
|
|
||||||
init procedure uses a different default DS data segment, which is discarded
|
|
||||||
after use. I hope to clean this up to use the DOS List of List and Swappable
|
|
||||||
Data Area obtained via INT21.
|
|
||||||
|
|
||||||
-- Bart
|
|
||||||
*/
|
|
||||||
|
|
||||||
extern struct dhdr ASM DOSTEXTFAR con_dev, /* console device drive */
|
|
||||||
DOSTEXTFAR ASM clk_dev, /* Clock device driver */
|
|
||||||
DOSTEXTFAR ASM blk_dev; /* Block device (Disk) driver */
|
|
||||||
extern BYTE FAR ASM _HMATextEnd[];
|
|
||||||
|
|
||||||
extern struct _KernelConfig FAR ASM LowKernelConfig;
|
|
||||||
|
|
||||||
#ifdef VERSION_STRINGS
|
#ifdef VERSION_STRINGS
|
||||||
static BYTE *mainRcsId =
|
static BYTE *mainRcsId =
|
||||||
"$Id$";
|
"$Id$";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
struct _KernelConfig InitKernelConfig = { "", 0, 0, 0, 0, 0, 0, 0 };
|
static char copyright[] =
|
||||||
|
"(C) Copyright 1995-2003 Pasquale J. Villani and The FreeDOS Project.\n"
|
||||||
|
"All Rights Reserved. This is free software and comes with ABSOLUTELY NO\n"
|
||||||
|
"WARRANTY; you can redistribute it and/or modify it under the terms of the\n"
|
||||||
|
"GNU General Public License as published by the Free Software Foundation;\n"
|
||||||
|
"either version 2, or (at your option) any later version.\n";
|
||||||
|
|
||||||
extern WORD days[2][13];
|
struct _KernelConfig InitKernelConfig = { "", 0, 0, 0, 0, 0, 0, 0 };
|
||||||
extern BYTE FAR *lpOldTop;
|
|
||||||
extern BYTE FAR *lpTop;
|
|
||||||
extern BYTE ASM _ib_start[], ASM _ib_end[], ASM _init_end[];
|
|
||||||
extern UWORD ram_top; /* How much ram in Kbytes */
|
|
||||||
|
|
||||||
STATIC VOID InitIO(void);
|
STATIC VOID InitIO(void);
|
||||||
|
|
||||||
@ -77,9 +53,7 @@ STATIC VOID signon(VOID);
|
|||||||
STATIC VOID kernel(VOID);
|
STATIC VOID kernel(VOID);
|
||||||
STATIC VOID FsConfig(VOID);
|
STATIC VOID FsConfig(VOID);
|
||||||
STATIC VOID InitPrinters(VOID);
|
STATIC VOID InitPrinters(VOID);
|
||||||
void CheckContinueBootFromHarddisk(void);
|
STATIC void CheckContinueBootFromHarddisk(void);
|
||||||
|
|
||||||
extern void Init_clk_driver(void);
|
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
BYTE _acrtused = 0;
|
BYTE _acrtused = 0;
|
||||||
@ -93,6 +67,8 @@ __segment DosTextSeg = 0;
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
struct lol FAR *LoL = &DATASTART;
|
||||||
|
|
||||||
/* little functions - could be ASM but does not really matter in this context */
|
/* little functions - could be ASM but does not really matter in this context */
|
||||||
void memset(void *s, int c, unsigned n)
|
void memset(void *s, int c, unsigned n)
|
||||||
{
|
{
|
||||||
@ -269,6 +245,7 @@ STATIC void init_kernel(void)
|
|||||||
/* and process CONFIG.SYS one last time for device drivers */
|
/* and process CONFIG.SYS one last time for device drivers */
|
||||||
DoConfig(2);
|
DoConfig(2);
|
||||||
|
|
||||||
|
|
||||||
/* Close all (device) files */
|
/* Close all (device) files */
|
||||||
for (i = 0; i < LoL->lastdrive; i++)
|
for (i = 0; i < LoL->lastdrive; i++)
|
||||||
close(i);
|
close(i);
|
||||||
@ -286,10 +263,8 @@ STATIC void init_kernel(void)
|
|||||||
|
|
||||||
STATIC VOID FsConfig(VOID)
|
STATIC VOID FsConfig(VOID)
|
||||||
{
|
{
|
||||||
REG COUNT i;
|
struct dpb FAR *dpb = LoL->DPBp;
|
||||||
struct dpb FAR *dpb;
|
int i;
|
||||||
|
|
||||||
dpb = LoL->DPBp;
|
|
||||||
|
|
||||||
/* Initialize the current directory structures */
|
/* Initialize the current directory structures */
|
||||||
for (i = 0; i < LoL->lastdrive; i++)
|
for (i = 0; i < LoL->lastdrive; i++)
|
||||||
@ -380,9 +355,6 @@ STATIC void kernel()
|
|||||||
CommandTail Cmd;
|
CommandTail Cmd;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
extern char MenuSelected;
|
|
||||||
extern unsigned Menus;
|
|
||||||
|
|
||||||
BYTE master_env[32];
|
BYTE master_env[32];
|
||||||
char *masterenv_ptr = master_env;
|
char *masterenv_ptr = master_env;
|
||||||
|
|
||||||
@ -415,8 +387,6 @@ STATIC void kernel()
|
|||||||
|
|
||||||
if (Cmd.ctCount < sizeof(Cmd.ctBuffer) - 3)
|
if (Cmd.ctCount < sizeof(Cmd.ctBuffer) - 3)
|
||||||
{
|
{
|
||||||
extern int singleStep;
|
|
||||||
extern int SkipAllConfig;
|
|
||||||
char *insertString = NULL;
|
char *insertString = NULL;
|
||||||
|
|
||||||
if (singleStep)
|
if (singleStep)
|
||||||
@ -581,10 +551,16 @@ BOOL init_device(struct dhdr FAR * dhp, char *cmdLine, COUNT mode,
|
|||||||
|
|
||||||
STATIC void InitIO(void)
|
STATIC void InitIO(void)
|
||||||
{
|
{
|
||||||
|
struct dhdr far *device = &LoL->nul_dev;
|
||||||
|
|
||||||
/* Initialize driver chain */
|
/* Initialize driver chain */
|
||||||
setvec(0x29, int29_handler); /* Requires Fast Con Driver */
|
setvec(0x29, int29_handler); /* Requires Fast Con Driver */
|
||||||
init_device(&con_dev, NULL, NULL, lpTop);
|
device = &LoL->nul_dev;
|
||||||
init_device(&clk_dev, NULL, NULL, lpTop);
|
do {
|
||||||
|
init_device(device, NULL, NULL, lpTop);
|
||||||
|
device = device->dh_next;
|
||||||
|
}
|
||||||
|
while (FP_OFF(device) != 0xffff);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* issue an internal error message */
|
/* issue an internal error message */
|
||||||
@ -630,8 +606,6 @@ STATIC VOID InitPrinters(VOID)
|
|||||||
booted from HD
|
booted from HD
|
||||||
*/
|
*/
|
||||||
|
|
||||||
extern UWORD GetBiosKey(int timeout);
|
|
||||||
|
|
||||||
EmulatedDriveStatus(int drive,char statusOnly)
|
EmulatedDriveStatus(int drive,char statusOnly)
|
||||||
{
|
{
|
||||||
iregs r;
|
iregs r;
|
||||||
@ -650,7 +624,7 @@ EmulatedDriveStatus(int drive,char statusOnly)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CheckContinueBootFromHarddisk(void)
|
STATIC void CheckContinueBootFromHarddisk(void)
|
||||||
{
|
{
|
||||||
char *bootedFrom = "Floppy/CD";
|
char *bootedFrom = "Floppy/CD";
|
||||||
iregs r;
|
iregs r;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user