home *** CD-ROM | disk | FTP | other *** search
- (3045) Sat 12 Mar 94 10:58a
- By: James Vahn
- To: Terry Carmen
- Re: A20
- St: Rcvd
- ---------------------------------------------------------------------------
- @MSGID: 1:346/10.0 2d8210be
- Comments appreciated. If appropriate, please include this in the
- snippets file.
-
- ;--------------------
- ; a20.asm toggles the A20 line in a timed loop.
- ; Purpose: To test for the optimum setting of the A20 handler.
- ; Example: Himem.Sys allows /M:<1-14> and this might help determine which.
- ; This BENCHMARK <ugh> is exactly that- only a benchmark.
- ; My 386SX/16, UMBDRVR.SYS, HIMEM.SYS and DOS=HIGH,UMB shows 13.6 seconds.
- ; 3 megs o' RAM.
- ;
- ; By James Vahn - Email to:
- ; Fidonet 1:346/10.20
- ; WWIVnet #213 @5930
- ; Internet james_vahn@moonflower.spk.wa.us
- ;
-
- cseg segment
- assume cs:cseg, ds:cseg
- org 100h ; .COM, of course.
-
- Begin:
- mov ax,4300h
- int 2Fh ; A20 handler installed?
- cmp al,80h
- jne Exit
-
- mov ax,cs
- mov ds,ax
- mov dx,offset Msg ; Prints the message.
- mov ah,09h
- int 21h
-
- mov ah,0h
- int 1Ah ; get low order word of clock counter
- push dx ; and save it.
-
- mov ax,4310h
- int 2Fh ; Get the address in ES:BX
- mov word ptr [xms],bx
- mov word ptr [xms+2],es
-
- mov tmp, 02h ; increase this for faster machines.
- mov cx, 0FFFFh ; make a loop FFFF x 2 times
-
- lo1: mov ah,05h
- call cs:[xms] ; Enable A20
- mov ah,06h
- call cs:[xms] ; Disable A20
- loop lo1
- dec tmp
- jnz lo1
-
- mov ah,0h
- int 1Ah ; Get current time
- pop bx ; Get starting time
- sub dx,bx ; Find the difference
- mov ax,dx
- mov bx,10000d ; tenths of a second.
- mul bx ; ticks / 18.207
- mov bx,18207d
- div bx ; Answer in AX, seconds elapsed.
-
- ;------------------------
- ; Convert AX to unsigned decimal ASCII output
- ; Uses AX, BX, CX, DX
- ; Thanks Mitch!
-
- mov cx,5 ; maximum of 5 decimal digits
- mov bx,10d ; divisor
- bin2a1: xor dx,dx ; zero DX for 16 bit divide
- div bx ; leaves quotient in AX
- add dl,'0' ; convert remainder to ASCII
- push dx ; put on stack
- loop bin2a1 ; repeat
- mov cx,5
- mov bl,'0' ; suppress leading zeros
- bin2a2: pop ax ; pop most significant digit first
- or bl,al ; sets bits 0-4 after first non-zero digit
- test bl,0Fh ; skip leading zeros
- jz bin2a4
- mov dl,al ; Print results to screen.
- mov ah,2h
- int 21h
- bin2a4: loop bin2a2
- mov ax,4C00h
- int 21h
-
- Exit: mov ax,cs
- mov ds,ax
- mov dx,offset Msg2 ; Prints the message.
- mov ah,09h
- int 21h
- mov ax,4C00h
- int 21h
-
- xms dd ?
- tmp db ?
-
- msg db 'Tests the speed of the A20 handler.', 13,10
- db ' For reference, my 386SX/16 shows 136. Smaller is faster.',13,10
- db ' Testing- please wait. Tenths of a second: ',36
-
- msg2 db ' No A20 handler (like himem.sys) detected!',13,10,36
-
- cseg ends
- end Begin
-
-
- * SLMR 2.1a *
-
- --- Maximus 2.01wb
- * Origin: Inland Empire Archive (1:346/10)
-
- @PATH: 346/10 105/200 30 209/209 270/101 260/1 362
-