home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------- *)
- (* DRAW_BOX.PAS *)
- (* (C) 1991 Timo Becker & DMV-Verlag *)
- (* Sprache: Turbo Pascal *)
- (*-------------------------------------------------- *)
-
- PROGRAM Draw_Box;
-
- USES Crt;
-
- CONST
- VidPortMono = $03B4;
- VidPortColor = $03D4;
-
- VAR
- Columns : WORD ABSOLUTE $40:$4A;
- PageMem : WORD ABSOLUTE $40:$4C;
- VidPort : WORD ABSOLUTE $40:$63;
- s : WORD;
- yo, yu, xl, xr: BYTE;
-
- FUNCTION Ofs(x,y: BYTE): WORD;
- BEGIN
- Ofs := (y - 1) * Columns * 2 + (x - 1) * 2;
- END;
-
- PROCEDURE DrawBox(xli, yob, xre, yun: BYTE;
- Title: STRING; TitleAttr: BYTE);
- VAR
- SaveAttr, i: BYTE;
- BEGIN
- MemW[s:Ofs(xli, yob)] := 201 OR TextAttr SHL 8;
- MemW[s:Ofs(xre, yob)] := 187 OR TextAttr SHL 8;
- MemW[s:Ofs(xli, yun)] := 200 OR TextAttr SHL 8;
- MemW[s:Ofs(xre, yun)] := 188 OR TextAttr SHL 8;
- FOR i := xli + 1 TO xre - 1 DO BEGIN
- MemW[s:Ofs(i, yob)] := 205 OR TextAttr SHL 8;
- MemW[s:Ofs(i, yun)] := 205 OR TextAttr SHL 8;
- END;
- FOR i := yob + 1 TO yun - 1 DO BEGIN
- MemW[s:Ofs(xli, i)] := 186 OR TextAttr SHL 8;
- MemW[s:Ofs(xre, i)] := 186 OR TextAttr SHL 8;
- END;
- Window(xli, yob, xre, yun);
- IF (Title <> '') AND
- (xre - xli - 1 >= Length(Title) + 2) THEN BEGIN
- SaveAttr := TextAttr;
- TextAttr := TitleAttr;
- GotoXY((xre - xli + 1 - Length(Title)) DIV 2, 1);
- Write(' ', Title, ' ');
- TextAttr := SaveAttr
- END;
- Window(xli + 1, yob + 1, xre - 1, yun - 1);
- ClrScr;
- END;
-
- BEGIN
- IF VidPort = VidPortColor THEN s := $B800
- ELSE s := $B000;
- TextAttr := White;
- REPEAT
- yo := 1;
- yu := PageMem DIV (Columns * 2);
- xl := 1;
- xr := Columns;
- REPEAT
- DrawBox(xl, yo, xr, yu, 'DrawBox',
- White OR Blue SHL 4);
- Inc(yo); Dec(yu); Inc(xl); Dec(xr);
- Delay(20)
- UNTIL yo > yu;
- Inc(TextAttr)
- UNTIL KeyPressed;
- Window(1, 1, 80, 25);
- TextAttr := White;
- ClrScr
- END.
-
- (* ------------------------------------------------- *)
- (* Ende von DRAW_BOX.PAS *)
-