[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]