home *** CD-ROM | disk | FTP | other *** search
- (*--------------------------------------------------------*)
- (* ABSOLUTE.PAS *)
- (* Unit für BOOT.PAS / PREP.PAS *)
- (* (c) 1991 J. Braun & TOOLBOX *)
- (*--------------------------------------------------------*)
- {$A-,B-,D+,E-,F-,G-,I-,L+,N-,O-,R-,S-,V-,X-}
- UNIT Absolute;
-
- INTERFACE
- CONST
- SysDir : STRING[9] = 'C:\SYSTEM';
- SysIDs : ARRAY[1..4] OF STRING[9] =
- ('IBMBIOCOM' ,'IOSYS', 'OS2LDR', 'DRBIOSSYS');
- Systems : ARRAY [1..4] OF STRING[3] =
- ('IBM', 'DOS', 'OS2', 'DRS');
- VAR
- BootSector: ARRAY[0..511] OF CHAR;
-
- PROCEDURE AbsoluteRead;
- PROCEDURE AbsoluteWrite;
- FUNCTION CheckOldSystem : BYTE;
-
- IMPLEMENTATION USES Dos;
- VAR Regs : Registers; i : WORD;
-
- PROCEDURE AbsoluteRead;
- BEGIN
- WITH Regs DO BEGIN
- AH := 2; (* Funktion 2: Absolutes Lesen *)
- AL := 1; (* Anzahl der Sektoren *)
- CH := 0; (* Zylinder *)
- CL := 1; (* Sektornummer *)
- DH := 1; (* Seite *)
- DL := $80; (* Laufwerk C: *)
- ES := Seg(BootSector); (* Segment Puffervariable *)
- BX := Ofs(BootSector); (* Offset Puffervariable *)
- Intr($13, Regs); (* BIOS-Intr.: Diskette/Platte *)
- END;
- END;
-
- PROCEDURE AbsoluteWrite;
- BEGIN
- WITH Regs DO BEGIN
- AH := 3; (* Funktion 3: Absolutes Lesen *)
- AL := 1; (* Anzahl der Sektoren *)
- CH := 0; (* Zylinder *)
- CL := 1; (* Sektornummer *)
- DH := 1; (* Seite *)
- DL := $80; (* Laufwerk C: *)
- ES := Seg(BootSector); (* Segment Puffervariable *)
- BX := Ofs(BootSector); (* Offset Puffervariable *)
- Intr($13, Regs); (* BIOS-Intr.: Diskette/Platte *)
- END;
- END;
-
- FUNCTION CheckOldSystem: BYTE; (* Überprüfung akt. System *)
- VAR
- i : WORD; k : BYTE; Buffer : STRING;
- BEGIN
- Buffer := ''; i := 0; AbsoluteRead;
- FOR i := 20 TO 511 DO IF BootSector[i] IN ['A'..'Z', '2'] THEN
- Buffer := Buffer + BootSector[i];
- CheckOldSystem := 0;
- FOR k := 1 TO 4 DO IF Pos(SysIDs[k], Buffer) > 0 THEN
- CheckOldSystem := k;
- END;
-
- BEGIN
- FOR i := 0 TO 511 DO BootSector[i] := #0; (* Initialis. *)
- END.
- (*--------------------------------------------------------*)
- (* Ende von ABSOLUTE.PAS *)