#DEFINE CR CHR(13)
#DEFINE PROCESSOR_INTEL_386 386
#DEFINE PROCESSOR_INTEL_486 486
#DEFINE PROCESSOR_INTEL_PENTIUM 586
#DEFINE PROCESSOR_MIPS_R4000 4000
#DEFINE PROCESSOR_ALPHA_21064 21064
DECLARE GetSystemInfo IN win32api STRING @SystemInfo
DECLARE GlobalMemoryStatus IN win32api STRING @MemStat
SystemInfo = SPACE(36)
m.stru = LongToStr(32) + REPLICATE(CHR(0), 28)
=GetSystemInfo(@SystemInfo)
=GlobalMemoryStatus(@m.stru)
m.oem_id = StrToLong(LEFT(SystemInfo, 4))
m.page_size = StrToLong(SUBSTR(SystemInfo, 5, 4))
m.minappaddr = StrToLong(SUBSTR(SystemInfo, 9, 4))
m.maxappaddr = StrToLong(SUBSTR(SystemInfo, 13, 4))
m.processormask = StrToLong(SUBSTR(SystemInfo, 17, 4))
m.num_processors = StrToLong(SUBSTR(SystemInfo, 21, 4))
m.processortype = StrToLong(SUBSTR(SystemInfo, 25, 4))
m.processorname = ""
m.memoryload = StrToLong(SUBSTR(m.stru, 5, 4))
m.totalphys = StrToLong(SUBSTR(m.stru, 9, 4))
m.availphys = StrToLong(SUBSTR(m.stru, 13, 4))
m.totalpagefile = StrToLong(SUBSTR(m.stru, 17, 4))
m.availpagefile = StrToLong(SUBSTR(m.stru, 21, 4))
m.totalvirtual = StrToLong(SUBSTR(m.stru, 25, 4))
m.availvirtual = StrToLong(SUBSTR(m.stru, 29, 4))
DO CASE
CASE m.processortype = PROCESSOR_INTEL_386
m.processorname = "INTEL 386"
CASE m.processortype = PROCESSOR_INTEL_486
m.processorname = "INTEL 486"
CASE m.processortype = PROCESSOR_INTEL_PENTIUM
m.processorname = "INTEL Pentium"
CASE m.processortype = PROCESSOR_MIPS_R4000
m.processorname = "MIPS R4000"
CASE m.processortype = PROCESSOR_ALPHA_21064
m.processorname = "ALPHA 21064"
ENDCASE
m.allocationgranularity = StrToLong(SUBSTR(SystemInfo, 29, 4))
m.reserved = StrToLong(SUBSTR(SystemInfo, 33, 4))
=MESSAGEBOX("OEM ID:" + STR(m.oem_id) + CR + ;
"Page Size: " + STR(m.page_size) + CR + ;
"Minimum application address: " + STR(m.minappaddr) + CR +;
"Maximum application address: " + STR(m.maxappaddr) + CR + ;
"Processor mask: " + STR(m.processormask) + CR + ;
"Number of processors: " + STR(m.num_processors) + CR + ;
"Allocation granularity: " + STR(m.allocationgranularity) + CR + ;
"Percent memory in use: " + STR(m.memoryload) + CR + ;
"Bytes of physical memory present: " + STR(m.totalphys) + CR + ;
"Bytes available physical memory: " + STR(m.availphys) + CR + ;
"Bytes of paging file: " + STR(m.totalpagefile) + CR + ;
"Bytes available paging file: " + STR(m.availpagefile) + CR + ;
"Total virtual memory: " + STR(m.totalvirtual) + CR + ;
"Available bytes virtual memory: " + STR(m.availvirtual),0+64+0)
*-- The following function converts a long integer to an ASCII
*-- character representation of the passed value in low-high format.
******************
FUNCTION LongToStr
******************
* Passed : 32-bit non-negative numeric value (lnLongval)
* Returns : ascii character representation of passed value in low-high
* format (lcRetstr)
* Example :
* m.long = "999999"
* m.longstr = long2str(m.long)
PARAMETERS lnLongval
PRIVATE i, lcRetstr
lcRetstr = ""
FOR i = 24 TO 0 STEP -8
lcRetstr = CHR(INT(lnLongval/(2^i))) + lcRetstr
lnLongval = MOD(lnLongval, (2^i))
NEXT
RETURN lcRetstr
*-- The following function converts a string in low-high format to a
*-- long integer.
******************
FUNCTION StrToLong
******************
* Passed: 4-byte character string (lcLongstr) in low-high ASCII format
* Returns: long integer value
* Example:
* m.longstr = "1111"
* m.longval = str2long(m.longstr)
PARAMETERS lcLongstr
PRIVATE i, lnRetval
lnRetval = 0
FOR i = 0 TO 24 STEP 8
lnRetval = lnRetval + (ASC(lcLongstr) * (2^i))
lcLongstr = RIGHT(lcLongstr, LEN(lcLongstr) - 1)
NEXT
RETURN lnRetval