92 lines
5.8 KiB
C
92 lines
5.8 KiB
C
/****************************************************************/
|
|
/* */
|
|
/* lol.h */
|
|
/* */
|
|
/* DOS List of Lists structure */
|
|
/* */
|
|
/* Copyright (c) 2003 */
|
|
/* Bart Oldeman */
|
|
/* All Rights Reserved */
|
|
/* */
|
|
/* This file is part of DOS-C. */
|
|
/* */
|
|
/* DOS-C 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, or (at your option) any later version. */
|
|
/* */
|
|
/* DOS-C 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 DOS-C; if not, write to the Free Software */
|
|
/* Foundation, Inc., 59 Temple Place, Suite 330, */
|
|
/* Boston, MA 02111-1307 USA. */
|
|
/****************************************************************/
|
|
|
|
enum {LOC_CONV=0, LOC_HMA=1};
|
|
|
|
/* note: we start at DOSDS:0, but the "official" list of lists starts a
|
|
little later at DOSDS:26 (this is what is returned by int21/ah=52) */
|
|
|
|
struct lol {
|
|
char filler[0x22];
|
|
char *inputptr; /* -4 Pointer to unread CON input */
|
|
unsigned short first_mcb; /* -2 Start of user memory */
|
|
struct dpb far *DPBp; /* 0 First drive Parameter Block */
|
|
struct sfttbl far *sfthead; /* 4 System File Table head */
|
|
struct dhdr far *clock; /* 8 CLOCK$ device */
|
|
struct dhdr far *syscon; /* c console device */
|
|
unsigned short maxsecsize; /* 10 max bytes per sector for any blkdev */
|
|
void far *inforecptr; /* 12 pointer to disk buffer info record */
|
|
struct cds far *CDSp; /* 16 Current Directory Structure */
|
|
struct sfttbl far *FCBp; /* 1a FCB table pointer */
|
|
unsigned short nprotfcb; /* 1e number of protected fcbs */
|
|
unsigned char nblkdev; /* 20 number of block devices */
|
|
unsigned char lastdrive; /* 21 value of last drive */
|
|
struct dhdr nul_dev; /* 22 NUL device driver header(no pointer!)*/
|
|
unsigned char njoined; /* 34 number of joined devices */
|
|
unsigned short specialptr; /* 35 pointer to list of spec. prog(unused)*/
|
|
void far *setverPtr; /* 37 pointer to SETVER list */
|
|
void (*a20ptr)(void); /* 3b pointer to fix A20 ctrl */
|
|
unsigned short recentpsp; /* 3d PSP of most recently exec'ed prog */
|
|
unsigned short nbuffers; /* 3f Number of buffers */
|
|
unsigned short nlookahead; /* 41 Number of lookahead buffers */
|
|
unsigned char BootDrive; /* 43 bootdrive (1=A:) */
|
|
unsigned char cpu; /* 44 CPU family [was unused dword moves] */
|
|
unsigned short xmssize; /* 45 extended memory size in KB */
|
|
struct buffer far *firstbuf; /* 47 head of buffers linked list */
|
|
unsigned short dirtybuf; /* 4b number of dirty buffers */
|
|
struct buffer far *lookahead;/* 4d pointer to lookahead buffer */
|
|
unsigned short slookahead; /* 51 number of lookahead sectors */
|
|
unsigned char bufloc; /* 53 BUFFERS loc (1=HMA) */
|
|
char far *deblock_buf; /* 54 pointer to workspace buffer */
|
|
char filler2[5]; /* 58 ???/unused */
|
|
unsigned char int24fail; /* 5d int24 fail while making i/o stat call*/
|
|
unsigned char memstrat; /* 5e memory allocation strat during exec */
|
|
unsigned char a20count; /* 5f nr. of int21 calls for which a20 off */
|
|
unsigned char VgaSet; /* 60 bitflags switches=/w, int21/4b05 */
|
|
unsigned short unpack; /* 61 offset of unpack code start */
|
|
unsigned char uppermem_link; /* 63 UMB Link flag */
|
|
unsigned short min_pars; /* 64 minimum para req by program execed */
|
|
unsigned short uppermem_root;/* 66 Start of umb chain (usually 9fff) */
|
|
unsigned short last_para; /* 68 para: start scanning during memalloc */
|
|
/* ANY ITEM BELOW THIS POINT MAY CHANGE */
|
|
/* FreeDOS specific entries */
|
|
unsigned char os_setver_minor;/*6a settable minor DOS version */
|
|
unsigned char os_setver_major;/*6b settable major DOS version */
|
|
unsigned char os_minor; /* 6c minor DOS version */
|
|
unsigned char os_major; /* 6d major DOS version */
|
|
unsigned char rev_number; /* 6e DOS revision#, only 3 bits */
|
|
unsigned char version_flags; /* 6f DOS version flags */
|
|
char *os_release; /* 70 near pointer to os_release string */
|
|
#ifdef WIN31SUPPORT
|
|
unsigned short winInstanced; /* WinInit called */
|
|
unsigned long winStartupInfo[4];
|
|
unsigned short instanceTable[5];
|
|
#endif
|
|
};
|
|
|