www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1996/08/16/00:30:07

Xref: news2.mv.net comp.os.msdos.djgpp:7338
From: John Luebs <jkluebs AT sprynet DOT com>
Newsgroups: comp.os.msdos.djgpp
Subject: Screen Fill routine, mode 13h
Date: Thu, 15 Aug 1996 14:42:51 -0400
Organization: EpiCenter Software
Lines: 20
Message-ID: <32136FAB.39@sprynet.com>
Reply-To: jkluebs AT sprynet DOT com
NNTP-Posting-Host: ad08-015.compuserve.com
Mime-Version: 1.0
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp

Here is a fast way to write a screen in mode 13h
The amount of screen to fill can be adjusted by altering ECX
long* data;

data = (long*)image->buffer;
__asm__ __volatile__ ("pushw %%es\n //save ES for proper restoring
                movl $0xa0000h, %%edi\n //set the dos protected offset
                movw %0, %%es\n //move the selector
                movl %1, %%esi\n //set the source offset, DS is already
set
                movl $16000, %%ecx\n //loop 16000 times for 16000 long
transfers
                cld\n //set direction to forward
                rep\n //repeat 
                movsl\n //transfers from DS:ESI to ES:EDI 16000 times
                popw %%es\n" //restore ES
                :
                : "g" (_dos_ds), "g" (data)
                : "cx", "di", "si" //clobbered registers
        );

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019