;/* ; * 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 *);