pcs/memtype.asm

52 lines
1.2 KiB
NASM
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

page 60,132
title MEMTYPE - MEMORY TYPE CHECKER
.286c ;; Utilize the expanded 80286 instruction set
CODE segment byte public
assume CS:CODE
org 100h
begin:
jmp start
EmmName db "EMMXXXX0"
start:
push CS
pop DS ;; Set up data segment
mov DX,0 ;; Default to conventional memory
;; See if this is a 286 machine
mov BX,SP ;; Set up BX with current stack pointer
pusha ;; 286 instruction, ignored on 808x
nop ;; Must be after pusha
cmp BX,SP ;; Were regs pushed?
je CHECKEXP ;; No...return
popa ;; Restore regs
mov AH,88h ;; Get number of contiguous 1k
int 15h ;; blocks starting at 1MByte
cmp AX,0 ;; If none available
je CHECKEXP ;; then jump
inc DX ;; else note extended memory available
;; Check to see if expanded memory available
CHECKEXP:
mov AH,35H ;; Get Interrupt Vector
mov AL,67H ;; "Vector"
int 21H
mov DI,000AH ;; ES:DI points to device name field
lea SI,EmmName ;; DS:SI points to device name
mov CX,8
cld
repe CMPSB ;; Compare the two strings
jne MEMRET ;; If not equal jump
or DX,0002h ;; Note EMM Present
MEMRET:
mov AX,DX
mov AH,4ch
int 21h
CODE ENDS
END begin