Koodivinkeissä oli esimerkki siitä, miten pikselin piirto saadaan nopeammaksi POKE:lla ja PEEK:llä, mutta sama ei oikein toiminut kunnolla SCREEN 7:ssa. Mitenkähän sen saisi toimimaan oikein?
Veikkaisin että segmenttiosoite pitäisi olla jokin muu kuin A000, mutta paha mennä veikkaamaan, mikä se voisi olla.
Sain käyttäytymään tuon eritavalla kun käytin OUT käskyjä portteja 962, 963, 964. Mutta sen jälkeen sain myös tietokoneen hetken aikaa käyttäytymään eritavalla ;)
Itse sain piirrettyä vain mustia ja valkoisia pikseleitä. Segmenttinä oli A000 ja yksi tavu vastasi 8 pikseliä, eli yksi bitti yhtä pikseliä, en vain keksinyt miten niitä värejä saisi.
POKE 100, 5<----- '5' On väri. Ja jos suoraan piirtää näytölle toimii myös OUT 965, VÄRI.
Käsittääkseni homma menee seuraavasti. Näyttötilassa 7 on käytössä neljä bittitasoa, joista jokaisella yksi bitti vastaa yhtä pikseliä. Siksi pikselin väri muodostuu neljän bitin perusteella, jolloin mahdollisia värejä on 16. Muutettavat bittitasot eli käytännössä pikselin väri valitaan lähettämällä ensin porttiin &H3C4 luku 2 ja sen jälkeen porttiin &H3C5 luku väliltä 0 - 15. Sitten asetetaan POKElla ne bitit, joita vastaavat pikselit kahdeksan pikselin sarjassa halutaan muuttaa.
Tässä on esimerkki, joka muuttaa ensimmäiset kahdeksan pikseliä niin, että joka toinen on sininen ja joka toinen on vihreä.
SCREEN 7 DEF SEG = &HA000 'bittitasojen valinta OUT &H3C4, 2 'sininen väri OUT &H3C5, 1 'väritettävä osuus: 10101010 POKE 0, &HAA 'vihreä väri OUT &H3C5, 2 'väritettävä osuus: 01010101 POKE 0, &H55 DEF SEG
Aihe on jo aika vanha, joten et voi enää vastata siihen.