[Back to SCREEN SWAG index] [Back to Main SWAG index] [Original]
{
===========================================================================
BBS: Canada Remote Systems
Date: 08-17-93 (19:47) Number: 34561
From: JOHN GIESBRECHT Refer#: NONE
To: CHRIS PORTMAN Recvd: NO
Subj: DIRECT VIDEO WRITES Conf: (1221) F-PASCAL
---------------------------------------------------------------------------
Chris Portman (1:229/15) wrote to All on <15 Aug 10:38> :
CP> Can anyone write me a procedure that will write a character on
CP> the screen without moving the cursor (ie - DirWrite (80, 25,
CP> '!');). I just need this to write to the space at 80x25
CP> without scrolling the screen.
}
USES
crt;
PROCEDURE writechar (c : CHAR; attr, x, y : BYTE); assembler;
(* assumes video page 0
* upper left-hand corner is (1, 1)
*)
asm
mov ax, $0300 (* get cursor position *)
XOR bh, bh
INT $10
push dx (* and save it *)
mov ax, $0200 (* set cursor position *)
XOR bh, bh
mov dh, BYTE PTR y
DEC dh
mov dl, BYTE PTR x
DEC dl
INT $10
mov ah, $09 (* write char and attribute *)
mov al, BYTE PTR c
XOR bh, bh
mov bl, BYTE PTR attr
mov cx, $0001
INT $10 (* restore original cursor position *)
mov ax, $0200
XOR bh, bh
pop dx
INT $10
END;
PROCEDURE WriteString (Row, Col, Attr : BYTE; STR : STRING);
VAR Len : Byte ABSOLUTE Str;
I : Byte;
BEGIN
FOR I := 1 To Len DO writechar (STR[i], Attr, Col + i, Row);
END;
BEGIN
CLRSCR;
GOTOXY (40, 13);
writechar ('*', $0F, 1, 1);
writechar ('*', $0e, 80, 1);
writechar ('*', $0d, 1, 25);
writechar ('*', $0c, 80, 25);
WriteString(15,25,31,'Gayle Davis was here');
READKEY;
END.
- - - MSQ - EE 2.1a / e2
* Origin : * idiot savant * St. Catharines, ON, Canada * (1 : 247 / 128)
[Back to SCREEN SWAG index] [Back to Main SWAG index] [Original]