You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
234 lines
6.5 KiB
234 lines
6.5 KiB
;/*
|
|
; * Microsoft Confidential
|
|
; * Copyright (C) Microsoft Corporation 1988 - 1991
|
|
; * All Rights Reserved.
|
|
; */
|
|
/* MEM.H - general equates and externals for the MEM command.
|
|
* Extracted from the original MEM.C file.
|
|
*/
|
|
|
|
/* Structure definitions */
|
|
|
|
struct DEVICEHEADER {
|
|
struct DEVICEHEADER far *NextDeviceHeader;
|
|
unsigned Attributes;
|
|
unsigned Strategy;
|
|
unsigned Interrupt;
|
|
char Name[8];
|
|
};
|
|
|
|
|
|
struct SYSIVAR {
|
|
char far *DpbChain;
|
|
char far *SftChain;
|
|
char far *Clock;
|
|
char far *Con;
|
|
unsigned MaxSectorSize;
|
|
char far *BufferChain;
|
|
char far *CdsList;
|
|
char far *FcbChain;
|
|
unsigned FcbKeepCount;
|
|
unsigned char BlockDeviceCount;
|
|
char CdsCount;
|
|
struct DEVICEHEADER far *DeviceDriverChain;
|
|
unsigned NullDeviceAttributes;
|
|
unsigned NullDeviceStrategyEntryPoint;
|
|
unsigned NullDeviceInterruptEntryPoint;
|
|
char NullDeviceName[8];
|
|
char SpliceIndicator;
|
|
unsigned DosParagraphs;
|
|
char far *DosServiceRntryPoint;
|
|
char far *IfsChain;
|
|
unsigned BufferValues;
|
|
unsigned LastDriveValue;
|
|
char BootDrive;
|
|
char MoveType;
|
|
unsigned ExtendedMemory;
|
|
};
|
|
|
|
|
|
struct ARENA {
|
|
char Signature;
|
|
unsigned Owner;
|
|
unsigned Paragraphs;
|
|
char Dummy[3];
|
|
char OwnerName[8];
|
|
};
|
|
|
|
struct sublistx {
|
|
unsigned char size; /* sublist size */
|
|
unsigned char reserved; /* reserved for future growth */
|
|
unsigned far *value; /* pointer to replaceable parm */
|
|
unsigned char id; /* type of replaceable parm */
|
|
unsigned char flags; /* how parm is to be displayed */
|
|
unsigned char max_width; /* max width of replaceable field */
|
|
unsigned char min_width; /* min width of replaceable field */
|
|
unsigned char pad_char; /* pad character for replaceable field */
|
|
};
|
|
|
|
struct mem_classif { /* M003 - struct for storing sizes */
|
|
unsigned int psp_add; /* acc. to PSPs */
|
|
unsigned int mem_conv; /* conv.mem for PSP */
|
|
unsigned int mem_umb; /* umb mem for PSP */
|
|
};
|
|
|
|
/* miscellaneous defines */
|
|
|
|
#define DA_TYPE 0x8000;
|
|
#define DA_IOCTL 0x4000;
|
|
|
|
#define a(fp) ((char) fp)
|
|
|
|
/* relevant DOS functions */
|
|
|
|
#define GET_VECT 0x35
|
|
#define GET_UMB_LINK_STATE 0x5802
|
|
#define SET_UMB_LINK_STATE 0x5803
|
|
#define LINK_UMBS 1
|
|
#define UNLINK_UMBS 0
|
|
|
|
#define EMS 0x67
|
|
|
|
#define CASSETTE 0x15 /* interrupt to get extended memory */
|
|
|
|
#define DOSEMSVER 0x40 /* EMS version */
|
|
|
|
#define EMSGetStat 0x4000 /* get stat */
|
|
#define EMSGetVer 0x4600 /* get version */
|
|
#define EMSGetFreePgs 0x4200 /* get free pages */
|
|
|
|
#define GetExtended 0x8800 /* get extended memory size */
|
|
|
|
|
|
/* defines used by total memory determination */
|
|
#define GET_PSP (unsigned char ) 0x62 /* get PSP function call */
|
|
|
|
#define MEMORY_DET 0x12 /* BIOS interrupt used to get total memory size */
|
|
|
|
#define FALSE (char)(1==0)
|
|
#define TRUE !(FALSE)
|
|
#define CR '\x0d'
|
|
#define LF '\x0a'
|
|
#define NUL (char) '\0'
|
|
#define TAB '\x09'
|
|
#define BLANK ' '
|
|
|
|
#define MAX_CLDATA_INDEX 100
|
|
/* max index no for mem_table array */
|
|
/* this is the max no of progs or free arenas that mem/c can used */
|
|
/* to process ; if the memory is fragmented and too many progs are */
|
|
/* loaded such that this no exceeds 100, we terminate with errmsg */
|
|
|
|
/* external variables */
|
|
|
|
extern unsigned DOS_TopOfMemory; /* PSP Top of memory from 'C' init code */ /* ;an005; */
|
|
extern unsigned far *ArenaHeadPtr;
|
|
extern struct SYSIVAR far *SysVarsPtr;
|
|
|
|
extern unsigned UMB_Head;
|
|
extern unsigned LastPSP;
|
|
|
|
extern char OwnerName[128];
|
|
extern char TypeText[128];
|
|
extern char cmd_line[128];
|
|
extern char far *cmdline;
|
|
|
|
extern char UseArgvZero;
|
|
extern char EMSInstalledFlag;
|
|
|
|
extern union REGS InRegs;
|
|
extern union REGS OutRegs;
|
|
extern struct SREGS SegRegs;
|
|
|
|
extern int DataLevel;
|
|
extern int Classify;
|
|
extern int i;
|
|
|
|
extern int BlockDeviceNumber;
|
|
extern char *Parse_Ptr; /* ;an003; dms; pointer to command */
|
|
extern struct mem_classif mem_table[MAX_CLDATA_INDEX];
|
|
extern int noof_progs;
|
|
|
|
extern struct sublistx sublist[5];
|
|
|
|
extern char *SingleDrive;
|
|
extern char *MultipleDrives;
|
|
extern char *UnOwned;
|
|
extern char *Ibmbio;
|
|
extern char *Ibmdos;
|
|
|
|
|
|
/* function prototypes */
|
|
|
|
int main(void);
|
|
int printf();
|
|
int sprintf();
|
|
int strcmp(const char *, const char *);
|
|
int sscanf();
|
|
void exit(int);
|
|
int kbhit();
|
|
char *OwnerOf(struct ARENA far *);
|
|
char *TypeOf(struct ARENA far *);
|
|
unsigned long AddressOf(char far *);
|
|
void CSwitch_init(void);
|
|
|
|
char EMSInstalled(void);
|
|
void DisplayEMSSummary(void);
|
|
void DisplayEMSDetail(void);
|
|
|
|
void DisplayBaseSummary(void);
|
|
void DisplayExtendedSummary(void);
|
|
unsigned CheckDOSHigh(void);
|
|
unsigned CheckVDisk(void);
|
|
|
|
unsigned int DisplayBaseDetail(void);
|
|
|
|
void DisplayClassification(void); /* M003 */
|
|
unsigned long DispMemClass(int); /* M003 */
|
|
void DispBigFree(char,unsigned int); /* M003 */
|
|
|
|
unsigned int AddMem_to_PSP(unsigned int,unsigned long,unsigned long); /* M003 */
|
|
|
|
void GetFromArgvZero(unsigned,unsigned far *);
|
|
|
|
void DisplayDeviceDriver(struct DEVICEHEADER far *,int);
|
|
|
|
void parse_init(void);
|
|
|
|
void Parse_Message(int,int,unsigned char,char far *);
|
|
void Sub0_Message(int,int,unsigned char);
|
|
void Sub1_Message(int,int,unsigned char,unsigned long int *);
|
|
void Sub2_Message(int,int,unsigned char,char *,int);
|
|
void Sub3_Message(int,int,unsigned char,
|
|
char *,
|
|
unsigned long int *,
|
|
int);
|
|
|
|
void Sub4_Message(int,int,unsigned char,
|
|
unsigned long int *,
|
|
int,
|
|
unsigned long int *,
|
|
int);
|
|
|
|
void Sub4a_Message(int,int,unsigned char,
|
|
unsigned long int *,
|
|
char *,
|
|
unsigned long int *,
|
|
char *);
|
|
|
|
void EMSPrint(int,int,unsigned char,
|
|
int *,
|
|
char *,
|
|
unsigned long int *);
|
|
|
|
void SubC2_Message(int,int,unsigned long int*,char*); /* M003 */
|
|
|
|
void SubC4_Message(int,int,char *,int, /* M003 */
|
|
unsigned long int *,
|
|
char *);
|
|
|
|
extern void sysloadmsg(union REGS *, union REGS *);
|
|
extern void sysdispmsg(union REGS *, union REGS *);
|
|
extern void sysgetmsg(union REGS *, struct SREGS *, union REGS *);
|
|
extern void parse(union REGS *, union REGS *);
|
|
|