[Back to EGAVGA SWAG index] [Back to Main SWAG index] [Original]
{ When you change modes, you lose the contents of the screen
(cleared). It's all IBM's fault. You see, there is also a change in
resolution and available colors and how video is used. It totally changes
and that's a way of life on the PC. Sorry, no way around it but to use
full graphics mode.
 FA> use, of course...) (I can't do it on a IBM, but ask me for C64-sources,
 FA> if you want to have a look <grin>)
320 x 200 x 256c, 13h, isn't the same as the resolution required for 80x50
text (640 x 400 x 256). In that case, I have seen graphics (simple) under
text in text mode. If you're forced to change resolution, kiss it all good
bye.
Run this under text: }
{$A+,B-,E-,F-,G+,I-,L-,N-,O-,R-,S-,V-,X-}
program RedBar;
VAR
  C:Byte;
  C2,C3,C4:Word;
  SINTAB:Array[0..127] of Word;
  HeadPtr:Word absolute $40:$1A;
  TailPtr:Word absolute $40:$1C;
begin;
  for c:=0 to 127 do
    sintab[c]:=Trunc((Sin((2*Pi/128)*C)+1)*135);
  C3:=0;
  REPEAT
    INLINE($FA);
    repeat until (port[$3da] and 8)>0;
    repeat until (port[$3da] and 8)=0;
    for c4:=0 to sintab[c3 and 127] do begin
      repeat until (port[$3da] and 1)=0;
      repeat until (port[$3da] and 1)>0;
    end;
    for c:=0 to 63 do begin
      repeat until (port[$3da] and 1)>0;
      Port[$3C8]:=0;
      Port[$3C9]:=C;
      Port[$3C9]:=0;
      Port[$3C9]:=0;
      repeat until (port[$3Da] and 1)=0;
    end;
    for c:=63 downto 0 do begin;
      repeat until (port[$3Da] and 1)>0;
      Port[$3C8]:=0;
      Port[$3C9]:=C;
      Port[$3C9]:=0;
      Port[$3C9]:=0;
      Repeat until (port[$3da] and 1)=0;
    end;
    port[$3C8]:=0;
    port[$3c9]:=0;port[$3c9]:=0;Port[$3c9]:=0;
    Inc(C3);
    inline($FB);
  until headptr<>tailptr;
  headptr:=tailptr;
end.
[Back to EGAVGA SWAG index] [Back to Main SWAG index] [Original]