home *** CD-ROM | disk | FTP | other *** search
- ; **********************************************************
- ; * ASTOOL01.ASM *
- ; * Vergleich zwischen Funktion 48h des Interrupts 21h *
- ; * und der Funktion 09h des XMM-Treibers - 8/11/90 *
- ; * (c) 1991 bei Peter Monadjemi & toolbox *
- ; **********************************************************
-
- .model small
- .stack 100h
- .data
- xmm_control label dword
- dw ?
- dw ?
-
- text1 db 10,13,'Konventioneller Arbeitsspeicher : ','$'
- text2 db ' Paragraphen (16 Byte)','$'
- text3 db 10,13,'Extended-Memory : ','$'
- text4 db ' KByte','$'
- err01 db 10,13,'Kein XMM-Treiber vorhanden!',10,13,'$'
- err02 db 10,13,'Fehler bei der Speicherverwaltung!'
- db 10,13,'$'
-
- .code
- mov dx,@data ; Datensegment initialisieren
- mov ds,dx
-
- mov ah,49h ; Gesamten Speicher freigeben
- int 21h
- jc mem_err ; Fehler bei der Freigabe
-
- mov ah,48h ; Maximalen Speicher anfordern
- mov bx,0FFFFh
- int 21h
- jnc @f ; Kein Fehler, dann weiter
- cmp al,08 ; Lag es an zu wenig Speicher?
- jne mem_err ; Nein, dann haben wir ein Problem
-
- @@:
- mov dx,offset text1 ; Einen Text ausgeben
- mov ah,09
- int 21h
- mov ax,bx
-
- call print_num ; Anzahl der reservierten
- ; Paragraphen ausgeben
-
- mov dx,offset text2 ; Einen Text ausgeben
- mov ah,09
- int 21h
- mov ax,bx
-
-
- mov ax,4300h ; Ist XMM-Treiber vorhanden?
- int 2Fh
- cmp al,80h
- jne NoDriver ; Nein, dann Schluß
-
- mov ax,4310h ; Eintrittsadresse ermitteln
- int 2Fh
- mov word ptr XMM_CONTROL,bx
- mov word ptr XMM_CONTROL+2,es
-
- mov ah,08 ; Speichergröße feststellen
- call XMM_CONTROL
- push dx
- mov dx,offset text3 ; Einen Text ausgeben
- mov ah,09
- int 21h
- pop ax
- call print_num ; Anzahl der verfügbaren KBytes
- ; ausgeben
-
- mov dx,offset text4 ; Einen Text ausgeben
- mov ah,09
- int 21h
- mov ax,bx
-
- ende:
- mov ah,4ch ; Zurück zu DOS
- int 21h
-
- print_num proc ; Ausgabe einer 16-Bit-Zahl
- MOV BX,10
- XOR CX,CX
- @@:
- XOR DX,DX
- DIV BX
- ADD DL,30h
- PUSH DX
- INC CX
- OR AX,AX
- JNE @B
-
- MOV AH,02
- @@:
- POP DX
- INT 21h
- LOOP @B
- ret
- print_num endp
-
- mem_err:
- mov dx,offset err02
- jmp short @f
- NoDriver:
- mov dx,offset err01
- @@:
- mov ah,09
- int 21h
- jmp ende
-
- end
- ; **********************************************************
- ; * Ende von ASTOOL01.ASM *