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

    {All of these procedures work in any screen mode, so do not require
     Pascal's annoying BGI and INITGRAPH stuff, which I've never used,
     anyway.

    LOCATE -- Move text cursor to desired point on screen (x,y).
    PRINT  -- Print SR (string) in color COL. Will work from the
               current cursor location. May be slow, but it works
               well. Haven't really optimized it.
    SETSCREENMODE -- Returns true or false whether it was successful in
                      setting the screen mode. Use $13 for VGA, or any
                      of the standard INT 10h numbers.
    PSET -- Put a pixel on X,Y in color COL in any screen mode. Slower
             than direct memory writes, but a procedure using direct
             memory writing for any screen mode would be enormous.
    POINT -- Returns pixel value for (x,y). Such as if there is a color
              15 pixel at 100,100 and you do X:=POINT(100,100), it will
              return 15.

    Any questions? E-mail me:

    Sean O'Malley
    frog@star2.opsys.com

    Author of the Shareware Base64 programs available on FTP sites
    worldwide. (Especially SimTel.)
    }

    Function Point(x,y:word):byte; assembler;
    asm
     mov ah,$d
     xor bh,bh
     mov cx,[x]
     mov dx,[y]
     int $10
    end;
    procedure pset(x,y:word;col:byte); assembler;
    asm
     mov ah,$c
     xor bh,bh
     mov al,[col]
     mov cx,[x]
     mov dx,[y]
     int $10
    end;
    Procedure print(sr:string;col:byte); assembler;
    asm
     les di,sr
     mov cl,es:[di]
     xor ch,ch
     jcxz @ender
     inc di
     mov ah,$e
     mov bl,[col]
     xor bh,bh
    @loop1:
     mov al,es:[di]
     inc di
     int $10
     loop @loop1
     mov al,13
     int $10
     mov al,10
     int $10
    @ender:
    end;
    function setscreenmode(mode:byte):boolean; assembler;
    asm
     mov al,[mode]
     xor ah,ah
     int $10
     mov ah,$f
     int $10
     cmp al,[mode]
     je @itworked
     xor al,al
     jmp @end
    @itworked:
     mov al,1
    @end:
    end;
    Procedure Locate(x,y:byte); assembler;
    asm
     xor bh,bh
     mov ah,2
     mov dh,[y]
     mov dl,[x]
     int $10
    end;

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