home *** CD-ROM | disk | FTP | other *** search
- ----------CURSORI ON/OFF---------------------------------------------
- #include <conio.h> // tarvitaan getch-functiota varten
-
- void cursor_off(void);
- void cursor_on(void);
-
- void main(void)
- {
- cursor_off(); // call function
- getch(); // wait until keypressed
- cursor_on(); // call function
- getch(); // now, jump back to dos..
- }
-
- void cursor_off(void)
- {
- asm {
- mov cx,0x2000 // ch=20h, cl=00h
- mov ah,1
- int 0x10 // int 10h
- }
- }
-
- void cursor_on(void)
- {
- asm {
- mov ch,3 // arvo, alku, voit vaihtaa saaden erilaisia kursoreita
- mov cl,6 // arvo, loppu, -- || --
- mov ah,1
- int 0x10 // int 10h
- }
- }
- --------------------------------------------------------------------
- #include <conio.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <dos.h>
-
- void main(void)
- {
- int x;int y;
- char oo;
-
- // tekstitilassa segmentti = 0xb800
- // offsetti lasketaan seuraavalla kaavalla = y*160+x*2
-
- // muisti on järjestetty segmentteihin!
- x=40; y=12;
-
- pokeb(0xb800,y*160+x*2,'A'); // kirjoitus <-
- oo=peek(0xb800,y*160+x*2); // oo <- arvo 0xb800:y*160+x*2 = 'A' |
- // tuo rivi laittaa 'A' siihen ---
- printf("%c",oo); // tulostetaan se
- }
- -----------------------------------------------------------------------
-
- void pokeb(seg,offsetti,arvo)
-
- ei palauta mitään arvoa
- seg = segmentti, johon halutaan kirjoittaa
- 0xb800 = tekstimoodien seku
- 0xb000 = mustavalko moodien seku
- 0xa000 = yleisimpien grafiikkatilojen
- seku
-
- sitten offsetti on paikka sekussa(segmentissä), johon
- halutaan laittaa. Segmentin koko on 64 kiloa(yleensä),
- joten offsetti voi vaihdella (0-64000), tosin
- esim. tekstitilassa ei näy kuin 4000 merkkiä,
- 25*80*2 <-- ensimmäinen tavu = merkki, toinen = väri,yht. 2 merkkiä
- ^ ^
- | leveys
- |- korkeus
-
- Tekstitilassa pystyy tämän ansiossa olemaan useampia sivuja
-
- esim.
- vga 320x200x256 väriä on näkyvissä melkein koko 64 kiloa,
- mutta halutessa voi ohjelmoida CTRC-prossua, jolloin
- saa käyttöön koko 256 kiloa muistia
-
- 320*200*1 = 64000
- ^ ^ ^
- | | väri
- | korkeus
- leveys
-
- ofsetti = offset (0..64 kiloa)
-
- int peek(seg,ofs)
-
- palauttaa merkin, koko char(muistaakseni), kohdasta
- seg:ofs
-
- seg = segmentti
- ofs = offsetti
-
- lue ylempi teksti pokesta, niin ymmärrät.
-