
                          Ŀ
                         --[ VGA ohjelmointi ]-- 
                           --[ perus asiat ]--   
                          
                                 -- OSA 1 --

Tm on ensimmisen osan korjattu versio. Vanhassa 1 osaasa oli niin
jumalattomasti virheit, jotka olen nyt korjannut. Olen mys lisnnyt
muutamia asioita. Siis nyt se alkaa...

Hei! Tss se sitten jlleen tulee. Aloitamme VGA ohjelmoinnin oppaan ottaen
esiin perusksitteit. Niihin kuuluvat MCGA tilan kynnistmien ja
pikselien piirtminen. Joka osassa on pieni esimerkki ohjelma, joka
sislt kaiken sen mit olemme siihen asti oppineet.

------------------------------------------------------------------------------
                             --[ MCGA tila ]--

Turbo Pascal 7.0:n mukana tulevat BGI ajurit on ensimminen asia, jotka
pit unohtaa, sill ne ovat yksinkertaisesti niin huonoja ett hitaita.
Siis melkein heti tulee mieleen kysymys: miten saada MCGA tila ilman BGI
ajureita?

Ja vastaus skeiseen kysymykseen on seuraava: tietenkin Assembler kielel-
l. Koska Assembler kieli on periaatteessa keskitasoa nopeampi ohjel-
mointi kieli, niin tm kieli ky ihan sopivasti MCGA tilan ohjel-
mointiin.

MCGA tai 13h tila (320x200x256), johon mahtuu 64000 pikseli (320x200)
ja samaan aikaan 256 vri, on aika yleinen nytt tila ohjelmoitaessa
erilaisia grafiisia ohjelmia, kuten pelej, demoa yms.
Juuri mainitulla tilalla 13h on oma paikka muistissa, joka yleisimmiss
tapauksissa on $A000. Muilla nytt tiloilla on luonnollisesti eri
osoite (mm. teksti-tila $B800).

Siis tss on tarvittava ohjelma MCGA tilan kynnistmiseen:

POIKKI!POIKKI!POIKKI!POIKKI!

  Program MCGA_tila;

  Uses Crt;

  Procedure Video(Tila : Byte); Assembler;    { Meidn proseduuri            }
  Asm
       MOV    AH,00
       MOV    AL,Tila
       INT    10H
  End;

  Begin
    Video($13);                               { Asettaa nytn MCGA tilaan   }
    Delay(5000);                              { Odotta 5 sekuntia            }
    Video($3);                                { Asettaa nytn teksti tilaan }
  End.

POIKKI!POIKKI!POIKKI!POIKKI!

------------------------------------------------------------------------------
                       --[ pikselin piirtminen ]--

Pikselin piirtminen MCGA tilaan on odotettua helpompaa kuin ehk itse luulet.
Nimittin se tapahtuu kytten jo mainittua VGA rekisteri ($A000).

                        Vri, jolla piirretn
                      /
                    /
     Mem[$A000:5]:=1;
              
       Osoite  \
       (VGA)     Kohta josta aloitetaan. Esim 319 pirt pikselin ruudun
                 phn.

               1 2 3 4 5 6 7 8 9... 
              Ŀ  Jokainen ruutu vastaa yht
              Ĵ  pikseli. Siis nin tapahtuu
              Ĵ  komennolla Mem[$A000:5]:=1
              Ĵ  yksinkertaista, vai mit?
              Ĵ
              Ĵ
              Ĵ
              Ĵ
              

Siis esimerkiksi Mem[$A000:50] := 26 piirt pikselin 50 pikselin phn
ensimmisest rivist vrill 26. Yksinkertaista?

------------------------------------------------------------------------------

Tm ensimminen osa ei nyt viel ollut mikn kiinnostava, mutta kunhan
psemme eteenpin...
Seuraava osa, joka ilmestyy joskus 3-10.11.1995, ksittelee virtuaali-
nytt ja spritej. Anteeksi kaikki mahdolliset virheet.

  - Acro (Atte)
