home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
assemblr
/
library
/
memory
/
himem
/
tests
/
hitest.asm
< prev
next >
Wrap
Assembly Source File
|
1988-07-14
|
8KB
|
269 lines
;****************************************************************************
;* *
;* HITEST.ASM - Chip Anderson *
;* *
;* DOS XMS Driver Testing Program *
;* *
;* Used to verify the functionality of any DOS XMS Driver. *
;* *
;****************************************************************************
name Test
title 'DOS XMS Test Program'
code segment byte public 'CODE'
assume cs:code, ds:code, es:code
org 100h
main proc near
mov ah,9h
mov dx,offset SignOn
int 21h
; Is an XMS Driver installed?
mov ax,4300h
int 2Fh
cmp al,80h
je HMMIn
mov ah,9h
mov dx,offset AintThere
int 21h
int 20h ; Terminate
HMMIn: mov ah,9h
mov dx,offset FoundOne
int 21h
; Get the HMM's control entry point
mov ax,4310h
int 2Fh
mov word ptr cs:[HMMEntryPt][0],bx
mov word ptr cs:[HMMEntryPt][2],es
; Get the HMM's version number
mov ax,0
call cs:[HMMEntryPt]
push bx ; Save driver internal number
call PrintAX
mov ah,9h
mov dx,offset InternalVer
int 21h
pop ax ; Restore driver internal number
call PrintAX
;*------------------------------------------------------------------*
;* Basic Function Check *
;*------------------------------------------------------------------*
StartTesting:
xor bx,bx
push cs
pop es
mov si,offset rgbCommands
cloop: mov bl,byte ptr es:[si]
cmp bl,'$'
je exit
; Print the command being executed
mov ch,bl
shl bx,1
mov dx,[rgszCommands+bx]
mov ah,9h
int 21h
cmp ch,cmdDivider
je isnop
push bx
mov ah,ch
mov dx,8192
call cs:[HMMEntryPt]
pop bx
; Print the result
or ax,ax
jz Fail
mov dx,offset Success
jmp short PrintIt
Fail: mov dx,offset Failure
PrintIt:mov ah,9
int 21h
; Now print the state of the A20 Line
mov dx,offset A20Msg
int 21h
mov ah,7h
call cs:[HMMEntryPt]
or ax,ax
jz NoA20
mov dx,offset A20On
jmp short PrntIt2
NoA20: mov dx,offset A20Off
PrntIt2:mov ah,9h
int 21h
isnop: inc si
jmp cloop
exit: ; Now do the extended memory test
mov dx,[rgszCommands+16]
mov ah,9h
int 21h
mov ah,08h
call cs:[HMMEntryPt]
call PrintAX
; Allocate alot of stuff
mov dx,[rgszCommands+18]
mov ah,9h
int 21h
mov dx,100h
mov ah,09h
call cs:[HMMEntryPt]
push dx
push dx
call PrintAX
pop ax
call PrintAX
mov dx,[rgszCommands+16]
mov ah,9h
int 21h
mov ah,08h
call cs:[HMMEntryPt]
call PrintAX
mov dx,[rgszCommands+20]
mov ah,9h
int 21h
pop dx
mov ah,10
call cs:[HMMEntryPt]
call PrintAX
mov dx,[rgszCommands+16]
mov ah,9h
int 21h
mov ah,08h
call cs:[HMMEntryPt]
call PrintAX
ret
main endp
PrintAX proc near
; Print it
mov bx,ax
mov ch,4
HexLoop:mov cl,4
rol bx,cl
mov al,bl
and al,0Fh
add al,30h
cmp al,3Ah
jl Output
add al,07h
Output: mov dl,al
mov ah,02h
int 21h
dec ch
jnz HexLoop
ret
PrintAX endp
;*--------------------------------------------------------------------------*
;* Data Area *
;*--------------------------------------------------------------------------*
cmdVersion equ 0
cmdRequest equ 1
cmdRelease equ 2
cmdGEnable equ 3
cmdGDisable equ 4
cmdTEnable equ 5
cmdTDisable equ 6
cmdA20Query equ 7
cmdExtQuery equ 8
cmdExtAlloc equ 9
cmdExtFree equ 10
cmdDivider equ 11
rgbCommands db cmdDivider
; Normal High Memory Area Test
db cmdRequest, cmdRelease, cmdDivider
; Nested High Memory Area Test
db cmdRequest, cmdRequest, cmdRelease, cmdRelease, cmdDivider
db cmdDivider
; Global vs Local A20 Test
db cmdGEnable
db cmdTEnable, cmdTDisable
db cmdGDisable, cmdDivider
; Local vs Global A20 Test
db cmdTEnable
db cmdGEnable, cmdGDisable
db cmdTDisable, cmdDivider
db '$'
rgszCommands dw szVer
dw szHighReq
dw szHighRel
dw szGEnable
dw szGDisable
dw szTEnable
dw szTDisable
dw szTestA20
dw szExtQuery
dw szExtAlloc
dw szExtFree
dw szDivider
szVer db 13,10,'Version: $'
szHighReq db 13,10,'Request High Memory Area: $'
szHighRel db 13,10,'Release High Memory Area: $'
szGEnable db 13,10,'Globally Enable A20 Line: $'
szGDisable db 13,10,'Globally Disable A20 Line: $'
szTEnable db 13,10,'Temp. Enable A20 Line: $'
szTDisable db 13,10,'Temp. Disable A20 Line: $'
szTestA20 db 13,10,'See if the A20 Line is On: $'
szExtQuery db 13,10,'Extended Memory Free: $'
szExtAlloc db 13,10,'Allocating 100K: $'
szExtFree db 13,10,'Freeing it: $'
szDivider db 13,10,'------------------------------------------------------$'
Success db 'Succeeded$'
Failure db 'Failed $'
A20Msg db ' - A20 Line is $'
A20On db 'On$'
A20Off db 'Off$'
SignOn db 13,10,'High Memory Manager Test Program 2.0 - 7/05/88'
db 13,10,'Copyright 1988, Microsoft Corp.'
db 13,10,'$'
FoundOne db 13,10,'High Memory Manager is Installed - Version $'
InternalVer db 13,10,' Internal Version $'
AintThere db 13,10,'High Memory Manager not Installed.$'
HMMEntryPt dd ?
code ends
end main