N.>&>& >A simple question: when I change the video mode with: > >mov
N.>&>& >ax,0003 >int 10h > >I have the screen cleared. Is there a way to
N.>&>& >change the video mode >(mode 03h) without clearing the screen ? >
N.>&>& That question is a good one, and I believe I know how to do what
N.>&>& you want. Hmmmm... set the high bit of AL. I believe you would
N.>&>& use:
N.>&>& mov ah,0003h mov al,1000b int 10h
That isn't a mode-change! That is function 03h, which is Get Cursor Position
and Size. According to my reference (_PC_Interrupts_ by Ralf Brown & Jim
Kyle), setting the high bit of AL will suppress the initial screen clearing,
so try this:
mov ax, 00083h
int 10h
However, be careful about using this with an AT&T VDC... it means something
different for that adapter.
N.>This is the same solution I found on a book but doesn't work very well,
N.>in fact after setting the bit in AL (I use OR AL,1000000B) the screen
N.>is locked up. That's to say that CLS, for example, doesn't work. The last
N.>image to be displayed on screen just before changing the video mode
N.>stays there and there is no way to kick it away.
I'm not sure why it would do that
N.>I'd need a solution to get back to 03h int10h viedo mode without
N.>clearing the screen, but keeping the PC still usable :)
What you could do is reserve an area for storing & recalling the information
stored onscreen:
********
push ds
mov ax, 0B800h
mov ds, ax
mov ax, 08800h ; this may not be the best memory to use, but
; it's easier for the example.
mov es, ax
xor si, si
mov di, si
mov cx, 04000h ; make sure to get whatever size buffer, even
; if it's more than 80x25.
rep movsw ; save entire screen
mov ax, 00003h
int 10h ; change the mode, clearing the screen
push es
push ds
pop es
pop ds
mov cx, 04000h
rep movsw ; restore saved screen
********
((Cloud))
MauveCloud@juno.com
* OLX 2.2 * I disagree with what you say, but will defend to the deat
--- PCBoard (R) v15.3/M 10
---------------
* Origin: Next time, Dial The Wrong Number! (209) 943-1880 (1:208/205)
|