home *** CD-ROM | disk | FTP | other *** search
- (* ****************************************************** *)
- (* INT13.PAS *)
- (* Interrupt 13h Routinen *)
- (* (c) 1993 Andres Cvitkovich & DMV *)
- (* ****************************************************** *)
- UNIT Int13;
-
- INTERFACE
-
- VAR
- Int13Err : BOOLEAN;
- { TRUE, wenn ein Fehler aufgetreten ist }
- Int13ErrCode : BYTE;
- { Fehlercode (disk status byte), 0=kein Fehler }
-
- PROCEDURE RecalibrateDrive(Drv : BYTE);
- FUNCTION GetState(Drv : BYTE) : BYTE;
- FUNCTION ReadSectors(Drv, Track, Head, Sector,
- Sectors : BYTE;
- Buf : Pointer) : BYTE;
- FUNCTION WriteSectors(Drv, Track, Head, Sector,
- Sectors : BYTE;
- Buf : Pointer) : BYTE;
- FUNCTION VerifySectors(Drv, Track, Head, Sector,
- Sectors : BYTE;
- Buf : Pointer) : BYTE;
- PROCEDURE FormatSectors(Drv, Track, Head, Sector,
- Sectors : BYTE;
- AdrField : Pointer);
- PROCEDURE GetDriveParams(Drv : BYTE;
- VAR Drvtype, tracks,
- spt, heads : BYTE;
- VAR pparam : Pointer);
- FUNCTION DiskChanged(Drv: BYTE): Boolean; { erst ab AT }
- PROCEDURE SetDASD(Drv, DASD : BYTE); { erst ab AT }
- PROCEDURE SetMediaType(Drv, Tracks, Sectors : BYTE);
- PROCEDURE ParkHeads(Drv : BYTE);
-
- IMPLEMENTATION
-
- PROCEDURE RecalibrateDrive(Drv : BYTE); ASSEMBLER;
- ASM
- MOV Int13Err, 0
- XOR AH, AH
- MOV DL, Drv
- INT 13h
- JNC @@1
- INC Int13Err
- @@1:
- MOV Int13ErrCode, AH
- END;
-
- FUNCTION GetState(Drv : BYTE) : BYTE; ASSEMBLER;
- ASM
- MOV Int13Err, 0
- MOV AH, 1
- MOV DL, Drv
- INT 13h
- JNC @@1
- INC Int13Err
- @@1:
- MOV Int13ErrCode, AH
- MOV AL, AH
- END;
-
- FUNCTION ReadSectors(Drv, Track, Head, Sector,
- Sectors : BYTE;
- Buf : Pointer) : BYTE; ASSEMBLER;
- ASM
- MOV Int13Err, 0
- MOV AH, 2
- MOV AL, Sectors
- MOV CH, Track
- MOV CL, Sector
- MOV DH, Head
- MOV DL, Drv
- LES BX, Buf
- INT 13h
- JNC @@1
- INC Int13Err
- @@1:
- MOV Int13ErrCode, AH
- END;
-
- FUNCTION WriteSectors(Drv, Track, Head, Sector,
- Sectors : BYTE;
- Buf : Pointer): BYTE; ASSEMBLER;
- ASM
- MOV Int13Err, 0
- MOV AH, 3
- MOV AL, Sectors
- MOV CH, Track
- MOV CL, Sector
- MOV DH, Head
- MOV DL, Drv
- LES BX, Buf
- INT 13h
- JNC @@1
- INC Int13Err
- @@1:
- MOV Int13ErrCode, AH
- END;
-
- FUNCTION VerifySectors(Drv, Track, Head, Sector,
- Sectors : BYTE;
- Buf : Pointer) : BYTE; ASSEMBLER;
- ASM
- MOV Int13Err, 0
- MOV AH, 4
- MOV AL, Sectors
- MOV CH, Track
- MOV CL, Sector
- MOV DH, Head
- MOV DL, Drv
- LES BX, Buf
- INT 13h
- JNC @@1
- INC Int13Err
- @@1:
- MOV Int13ErrCode, AH
- END;
-
- PROCEDURE FormatSectors(Drv, Track, Head, Sector,
- Sectors : BYTE;
- AdrField : Pointer); ASSEMBLER;
- ASM
- MOV Int13Err, 0
- MOV AH, 5
- MOV AL, Sectors
- MOV CH, Track
- MOV CL, Sector
- MOV DH, Head
- MOV DL, Drv
- LES BX, AdrField
- INT 13h
- JNC @@1
- INC Int13Err
- @@1:
- MOV Int13ErrCode, AH
- END;
-
- PROCEDURE GetDriveParams(Drv : BYTE;
- VAR Drvtype, tracks, spt,
- heads : BYTE;
- VAR pparam : Pointer); ASSEMBLER;
- ASM
- MOV Int13Err, 0
- MOv AH, 8
- MOV DL, Drv
- INT 13h
- JNC @@1
- INC Int13Err
- @@1:
- MOV Int13ErrCode, AH
- PUSH DS
- LDS SI, pparam
- MOV DS:[SI], DI
- MOV DS:[SI+2], ES
- POP DS
- LES DI, Drvtype
- MOV ES:[DI], BL
- LES DI, tracks
- MOV ES:[DI], CH
- LES DI, spt
- MOV ES:[DI], CL
- LES DI, heads
- MOV ES:[DI], DH
- END;
-
- FUNCTION DiskChanged(Drv : BYTE) : BOOLEAN; ASSEMBLER;
- ASM
- MOV Int13Err, 0
- MOV Int13ErrCode, 0
- MOV AH, 16h
- MOV DL, Drv
- INT 13h
- JNC @@1
- INC Int13Err
- MOV Int13ErrCode, AH
- @@1:
- MOV AL, AH
- OR AL, AL
- JZ @@2
- MOV AL, TRUE
- @@2:
- END;
-
- PROCEDURE SetDASD(Drv, DASD : BYTE); ASSEMBLER;
- ASM
- MOV Int13Err, 0
- MOV AH, 17h
- MOV AL, DASD
- MOV DL, Drv
- INT 13h
- JNC @@1
- INC Int13Err
- @@1:
- MOV Int13ErrCode, AH
- END;
-
- PROCEDURE SetMediaType(Drv, tracks, sectors : BYTE);
- ASSEMBLER;
- ASM
- MOV Int13Err, 0
- MOV AH, 18h
- MOV CH, tracks
- MOV CL, sectors
- MOV DL, Drv
- INT 13h
- JNC @@1
- INC Int13Err
- @@1:
- MOV Int13ErrCode, AH
- END;
-
- PROCEDURE ParkHeads(Drv : BYTE); ASSEMBLER;
- ASM
- MOV Int13Err, 0
- MOV AH, 19h
- MOV DL, Drv
- INT 13h
- JNC @@1
- INC Int13Err
- @@1:
- MOV Int13ErrCode, AH
- END;
-
- End.
- (* ****************************************************** *)
- (* Ende von INT13.PAS *)