+-------------------------+ | Grafická myš v Textmodu | +-------------------------+ ..... ..... Viděli jste někdy Norton Utilities? Nebo Impulse Tracker? Určite jo. Já jsem si ze začátku myslel že to, jak se tam ta myš tak hezky plynule pohybuje, je grafika. Pak, když sem zjistil, jak se věci mají (hezký, ne?), tak sem se dal do vytváření takový unity na grafickou myš v textmodu. No a proto tady píšu tuhle blbost. .. . ....u....b....a....S...... Co je to textmode ? Takže jak to tam vlaste funguje? Je to úplne jednoduchý. Tady je takovej malej návod: (1)- určíte si pár znaku, který nebudete používat (asi 9). (2)- pak si uděláte nějakej buffer, kterej později použijete na editaci fontů. Buffer: +--------+--------+--------+ |XXXXXXXX|XXXXXXXX|XXXXXXXX| |XXXXXXXX|XXXXXXXX|XXXXXXXX| |XXXXXXXX|XXXXXXXX|XXXXXXXX| |XXXXXXXX|XXXXXXXX|XXXXXXXX| |XXXXXXXX|XXXXXXXX|XXXXXXXX| |XXXXXXXX|XXXXXXXX|XXXXXXXX| |XXXXXXXX|XXXXXXXX|XXXXXXXX| |XXXXXXXX|XXXXXXXX|XXXXXXXX| +--------+--------+--------+ |XXXXXXXX|XXXXXXXX|XXXXXXXX| |XXXXXXXX|XXXXXXXX|XXXXXXXX| |XXXXXXXX|XXXXXXXX|XXXXXXXX| |XXXXXXXX|XXXXXXXX|XXXXXXXX| |XXXXXXXX|XXXXXXXX|XXXXXXXX| |XXXXXXXX|XXXXXXXX|XXXXXXXX| |XXXXXXXX|XXXXXXXX|XXXXXXXX| |XXXXXXXX|XXXXXXXX|XXXXXXXX| +--------+--------+--------+ (3)- do něj hodíte hodnoty z ROM tabulky znaků pro znaky, který puvodně byli pod myší (viz bios fce 1130h, na zjištění pozice myši používám svůj handler, ale můžete použít i normální funkci myšího driveru via int 33h (to ale musíte oblbnout myší driver nastavením typu módu v bios tabulce (seg 40h) na grafický)). Buffer: +--------+ ... |XXX XXXX| |XX X XXX| |X XXX XX| | XXXXX X| | X| | XXXXX X| | XXXXX X| |XXXXXXXX| +--------+ ... . . (pod myší bylo písmeno 'A', kdyby to náhodou někdo nepochopil) (4)- přes to překopírujete myší kurzor posunutej (shr,shl) o (x-souřadnice mod 8). (To znamená posunutí uvnitř znaku). (Jestli nevíte vo co go, tak se mrkněte do mý unity...) Buffer: +--------+--------+--------+ |XXX XXXX| XX|XXXXXXXX| |XX X XXX| XXXXX X|XXXXXXXX| |X X XX| XXXXX X|XXXXXXXX| | XX X| XX|XXXXXXXX| | X| XXXXX X|XXXXXXXX| | XX | XXXXX X|XXXXXXXX| | XX | XX|XXXXXXXX| |XXX | XXXXXX|XXXXXXXX| +--------+--------+--------+ |XXX | XXXXX|XXXXXXXX| |XXX | XXXX|XXXXXXXX| |XXX | XXXXXX|XXXXXXXX| |XXXXXX | XXXXXX|XXXXXXXX| |XXXXXXXX|XXXXXXXX|XXXXXXXX| |XXXXXXXX|XXXXXXXX|XXXXXXXX| |XXXXXXXX|XXXXXXXX|XXXXXXXX| |XXXXXXXX|XXXXXXXX|XXXXXXXX| +--------+--------+--------+ (5)- ...a editnem buffer na hodnoty předem určenejch znaků. (viz funkce biosu (int10h,ax=1100h)) (6)- tyhle znaky pak napíšem na místo, kde je myš!!! (7)- A tohle opakujem do zblbnutí (znovu od bodu (3)). ...to je celý. Primitivní, ne? ...A tady je pár funkcí a portů, který se k týhle věci docela hodí. INT 10h :ax = 1130h bh = 0 : zjistí hodnotu int. 1Fh (pointer) 1 : zjistí hodnotu int. 43h 2 : zjistí adresu tabulky znaků 8*14 3 : zjistí adresu tabulky znaků 8*8 4 : zjistí adresu 2. poloviny tabulky znaků 8*8 (nechápu) 6 : zjistí adresu tabulky 8*16 výstup: es:bp = pointer na získávané info (podle bh) cx = výška znaku dl = počet řádek obrazovky zjistí nastavení generátoru znaků INT 10h : ax = 1100h bh = počet bytů k editaci. bl = číslo tabulky obrazu znaků (to sem nevymyslel já - to tady čtu) cx = ascii kód prvního definovaného znaku. edituje textový font Port TS (3C4h): index 03h výběr fontu : Bit 5,3,2 = výběr jednoho z 8 fontů A Bit 4,1,0 = výběr jednoho z 8 fontů B perfektní, použitý přeba ve Scream trackeru, Impulse Trackeru k roršíření počtu znaků. (Nějaký dotazy, nejasnosti atd. mi pište na email SEDLACEK@MBOX.CESNET.CZ nebo na Infimu id KubaS (Jenom mi, prosimvas nepište že v mý unitě je chyba, tu berte spíš jako ukázku, jak by se to dalo udělat. Ja vím že je to shit, jenom se mi to nechce předělávat)) Tady si muzete vytahnout moji unitu a testovaci program ... naschle KubaS výheň