home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* CRSR.PAS *)
- (* Setzen der Cursorgröße auf einen beliebigen Wert und *)
- (* Abschalten des Bildschirms. *)
- (* Die Implementation unter Turbo Pascal 4.0 ist aus- *)
- (* kommentiert. *)
- (* (c) 1988 by Hubert Brentano & TOOLBOX *)
- (* ------------------------------------------------------ *)
- PROGRAM CRSR;
-
- (* USES Crt, Dos; *)
-
- VAR Fflag : BYTE;
- VAR Anfang, Ende, Code: INTEGER;
- VAR VideoMode : BYTE ABSOLUTE $40:$65;
-
- (* ---------- Deklarationen nur für Turbo 3.0 ----------- *)
- TYPE Registers = RECORD CASE INTEGER OF
- 1 : (ax, bx, cx, dx, bp, si,di, ds, es,
- flags: INTEGER);
- 2 : (al, ah, bl, bh, cl, ch, dl,
- dh: BYTE);
- END;
- (* ------------------------------------------------------ *)
-
- PROCEDURE Fehler;
- BEGIN
- WriteLn('Aufruf mit: CRSR [Anfangswert ',
- '(0-31)][Endwert (0-31)]');
- WriteLn('Aufruf mit: [off] = Bildschirm ',
- 'abschalten (Ein: Taste)');
- WriteLn('ohne Parameter: Cursor Standardgröße (11 12)');
- END;
-
- PROCEDURE Cursor(Anfang, Ende : INTEGER);
- VAR Regs : Registers;
- BEGIN
- WITH Regs DO BEGIN
- ah := 1;
- ch := Anfang;
- cl := Ende;
- Intr($10, Regs);
- (* Turbo 4.0: intr($10,Dos.Registers(Regs)); *)
- END;
- END;
-
- PROCEDURE Command;
- BEGIN
- IF ParamCount <> 0 THEN BEGIN
- IF ParamCount > 2 THEN Fflag := 1; (* Fehler ! *)
- Val(ParamStr(1), Anfang, Code);
- IF Code <> 0 THEN Fflag := 1;
- IF (Anfang < 0) OR (Anfang > 31) THEN Fflag := 1;
- Val(ParamStr(2), Ende, Code);
- IF Code <> 0 THEN Fflag := 1;
- IF (Ende < 0) OR (Ende > 31) THEN Fflag:= 1;
- END;
- END;
-
- PROCEDURE ScreenOff;
- BEGIN
- Port[$3b8] := VideoMode AND $f7; (* ausschalten *)
- REPEAT UNTIL KeyPressed;
- Port[$3b8] := VideoMode OR $08; (* einschalten *)
- END;
-
- BEGIN
- Fflag := 0;
- Anfang := 11;
- Ende := 12;
- IF ParamStr(1) = 'off' THEN ScreenOff
- ELSE BEGIN
- Command; (* Befehlszeile auswerten *)
- IF Fflag = 1 THEN Fehler
- ELSE Cursor(Anfang, Ende );
- END;
- END.
- (* ------------------------------------------------------ *)
- (* Ende von CRSR.PAS *)