[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]