'===========================================================================
' Subject: EMS TESTER                         Date: 03-02-97 (11:20)       
'  Author: Erik Bruggema                      Code: QB, PDS                
'  Origin: harryst@castel.nl                Packet: MEMORY.ABC
'===========================================================================
DEFINT A-Z

TYPE regtype
 AX AS INTEGER
 BX AS INTEGER
 cX AS INTEGER
 DX AS INTEGER
 bp AS INTEGER
 si AS INTEGER
 di AS INTEGER
 flags AS INTEGER
END TYPE

TYPE regtype2
 AX AS INTEGER
 BX AS INTEGER
 cX AS INTEGER
 DX AS INTEGER
 bp AS INTEGER
 si AS INTEGER
 di AS INTEGER
 flags AS INTEGER
 ds AS INTEGER
 es AS INTEGER
 END TYPE

DIM SHARED Inregs AS regtype2
DIM SHARED OutRegs AS regtype2

DIM SHARED Inregs2 AS regtype
DIM SHARED OutRegs2 AS regtype

DECLARE SUB Interrupt (intnum, inreg AS regtype, outreg AS regtype)
DECLARE SUB interruptX (intnum, inreg2 AS regtype2, outreg2 AS regtype2)
DECLARE SUB GetEms (TotalPages, FreePages, VerSion, SegmentAdres)
CALL GetEms(t, f, v, s)

PRINT "EMS Tester....... by Erik Bruggema"
PRINT
IF t = 0 AND f = 0 AND v = 0 AND s = 0 THEN PRINT "NO Ems INSTALLED": END
PRINT "ToTal Pages"; t
PRINT "Free pages "; f
PRINT "Version "; v
PRINT "Segment Adrses "; s


SUB GetEms (TotalPages, FreePages, VerSion, SegmentAdres)

Inregs.AX = &H4200

Interrupt &H67, Inregs2, OutRegs2

TotalPages = OutRegs.DX

IF TotalPages = 0 THEN
        FreePages = 0: VerSion = 0: SegmentAdres = 0: EXIT SUB
END IF

FreePages = OutRegs.BX

Inregs.AX = &H4100

Interrupt &H67, Inregs2, OutRegs2

SegmentAdres = OutRegs.BX

Inregs.AX = &H4600

Interrupt &H67, Inregs2, OutRegs2

hi = OutRegs.AX / 256
VerSion = OutRegs.AX - hi * 256

END SUB
