Unit LW_Test;{
ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
º T E C H N I S C H E U N I V E R S I T Ž T C H E M N I T Z º
º º
º Programm zur Ansteuerung des AD/DA-Wandlermoduls mit Einchip- º
º rechner 68HC11 º
º º
º UNIT zur Ermittlung der logischen Laufwerke º
º º
º Programmierer: Torsten Levin º
º 03 AET 89 º
º TU Chemnitz-Zwickau º
º º
º Chemnitz, Januar-April 1993 º
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
h#s 12/01}
INTERFACE
Function LW_exist(LW:Char) : Boolean;
IMPLEMENTATION
Uses Dos;
Function LW_exist(LW:Char) : Boolean;
{$IFDEF LEVIN}
Type
DPB4Zeiger = ^DPB4Feld;
DPB4Feld = Record
LL : Byte; { Logisches Laufwerk }
LP : Byte; { Physisches Laufwerk }
BS : Word; { Bytes pro Sektor }
IL : Byte; { Interleave-Faktor }
SC : Byte; { Sektoren pro Cluster }
RS : Word; { Reservierte Sektoren }
AF : Byte; { Anzahl der FAT's }
AH : Word; { Eintr„ge im Hauptverzeichnis }
ES : Word; { Erster belegter Sektor }
LC : Word; { Letzter belegter Cluster }
SF : Word; { Sektoren pro FAT }
ED : Word; { Erster Datensektor }
ZGT : Pointer; { Zeiger auf den Anfang des entspr. Ger„tetreibers }
MD : Byte; { Media Descriptor }
UF : Byte; { Anzeige-Byte, ob auf das Ger„t bereits ein Zugriff erfolgte }
NDPB : Pointer; { Zeiger auf n„chsten DPB }
NFC : Word; { Suchstart }
FC : Word; { Freie Cluster }
End;
Var A,B : Byte;
Regs : Registers;
DIBZeiger : ^Pointer;
Feld4Zeiger : DPB4Zeiger;
Weiter : Boolean;
Begin
LW_exist:=False;
LW:=Upcase(LW);
If LW in ['A','B'] then
Begin
ASM
Mov AL,10H;
Out 70H,AL;
In AL,71H;
Mov (A),Al;
End;
B:=A mod 16;
A:=(A-B) div 16;
IF (LW ='A') and (A<>0) Then LW_exist:=True;
IF (LW ='B') and (B<>0) Then LW_exist:=True;
End
Else Begin
Regs.AH:=$52;
MSDOS(Regs);
DIBZeiger:=Ptr(Regs.ES,Regs.BX);
Feld4Zeiger:=DIBZeiger^;
Weiter:=True;
Repeat
If (Feld4Zeiger^.LL+65 = Ord(LW)) Then LW_exist:=True;
If Ofs(Feld4Zeiger^.NDPB^)=$FFFF Then Weiter:=False;
Feld4Zeiger:=Feld4Zeiger^.NDPB;
Until (Weiter=False);
End;
End;
{$ELSE}
begin
LW:=Upcase(LW);
LW_Exist:=false;
asm mov ah,19h
int 21h
push ax
mov ah,0Eh
mov dl,[lw]
sub dl,'A'
int 21h
mov ah,19h
int 21h
cmp al,dl
jne @@1
cmp al,1 {B:}
jne @@2
mov es,[Seg0040]
mov al,es:[10h]
test al,0C0h {Installierte Hardware: Floppys-1}
jz @@1
@@2: inc [@result]
@@1: pop dx
mov ah,0Eh
int 21h
end;
end;
{$ENDIF}
End.
Detected encoding: ANSI (CP1252) | 4
|
|