[Back to CURSOR SWAG index] [Back to Main SWAG index] [Original]

    {===========================================================================
    Date: 08-27-93 (14:17)
    From: LIM FUNG
    Subj: cursor control

    WD>Hi All,
    WD>   Hey, someone put a couple of little proc. on here which control the
    WD>cursor (turn it on/off) and they were written in assembler.  I had a
    WD>brain fade and forgot to save the name of the person who created these
    WD>routines.  I was wondering if they might know how to get a big cursor
    WD>also using assembler.  Also, do they work on monochrome monitors, or was
    WD>that what you meant about the 8x8 scan lines?

    Okay, a simple procedure to turn on and off the cursor would be as
    follows: }

    Uses DOS;

    Procedure CursorOn;
    Begin
            asm
                    mov        ax,0100h
                    mov        cx,0607h
                    int        10h
            end;
    end;

    Procedure CursorOff;
    Begin
            asm
                    mov        ax,0100h
                    mov        cx,2020h
                    int        10h
            end;
    end;

    end.

    ===========================================================================
     BBS: Canada Remote Systems
    Date: 10-23-93 (07:59)             Number: 9355
    From: LOU DUCHEZ                   Refer#: NONE
      To: JESSE MACGREGOR               Recvd: NO
    Subj: help                           Conf: (1617) L-Pascal
    ---------------------------------------------------------------------------
    JM>I need help I need a function that when I give it a screen coordiante
    JM>and it returns the charachter at that coordinate on a text screen
    JM>(80x25) and possibly the color...

    Try this:

    -------------------------------------------------------------------------------

    type  videolocation = record                  { video memory locations }
              videodata: char;                    { character displayed }
              videoattribute: byte;               { attributes }
              end;

    ---------------

    procedure getvideodata(x, y: byte; var result: videolocation);

    { Returns the attribute byte of a video character. }

    var vidptr: ^videolocation;
    begin
      if memw[$0040:$0049] = 7 then vidptr := ptr($b000, 2*(80*(y-1) + (x-1)))
                               else vidptr := ptr($b800, 2*(80*(y-1) + (x-1)));
      result := vidptr^;
      end;

    -------------------------------------------------------------------------------

    JM>also, a procedure to make that icky
    JM>cursor go away would be greatly appreciated...

    There's not really a procedure to make it "go away", just to change it.
    You CAN change it so that it's undisplayable, but you'll want to store
    the previous config first.  Like so:

    -------------------------------------------------------------------------------

    var crstyp: word;

    ---------------

    procedure cursoff;
    const ffff: word = $ffff;

    { Turns the cursor off.  Stores its format for later redisplaying. }

    begin
      asm
        mov ah, 03h
        mov bh, 00h
        int 10h
        mov crstyp, cx
        mov ah, 01h
        mov cx, ffff
        int 10h
        end;
      end;

    ---------------

    procedure curson;

    { Turns the cursor back on, using the cursor display previously stored. }

    begin
      asm
        mov ah, 01h
        mov cx, crstyp
        int 10h
        end;
      end;

    -------------------------------------------------------------------------------

    How's that, o evil masters?
    ---
     þ KingQWK 1.05 # 182 þ "Bob" -- the Doc Savage of holy men
     þ RoseMail 2.10á: ILink: PC-Ohio * Cleveland, OH * 216-381-3320

[Back to CURSOR SWAG index] [Back to Main SWAG index] [Original]