Article View: pl.comp.lang.pascal
Article #167Kursor textowy i porty komunikacyjne
From: Piotr Bochaczyk
Date: Wed, 16 Dec 1998 10:00
Date: Wed, 16 Dec 1998 10:00
95 lines
3445 bytes
3445 bytes
Te dwie procedurki rozwi±zuj± chyba problem ukrywania kursora
tekstowego?
Procedure KursorOff; Assembler;
Asm
MOV AH,01h
MOV CH,10h
MOV CL,00h
INT 10H
End;
Procedure KursorOn; Assembler;
Asm
MOV AH,01h
MOV CH,07h
MOV CL,07h
INT 10H
End;
Jak sprawdziæ jakie porty COM i LPT s± zainstalowane? Bardzo prosto!
COM1BaseAdr:word absolute $0:0400;
COM2BaseAdr:word absolute $0:0402;
COM3BaseAdr:word absolute $0:0404;
COM4BaseAdr:word absolute $0:0406;
LPT1BaseAdr:word absolute $0:0408;
LPT2BaseAdr:word absolute $0:040A;
LPT3BaseAdr:word absolute $0:040C;
LPT4BaseAdr:word absolute $0:040E;
Wiadomo o co chodzi? W odpowiednich zmiennych znajduj± siê adresy Portów
dla poszczególnych portów. Jak tego u¿ywaæ? Poczytajcie w literaturze. W
niektorych przypadkach lepiej bedzie uzyc typu pointer, ale to zalezy od
zastosowania.
Je¶li którego¶ z portów brakuje, to zmienna nie jest okre¶lona. Zwykle
oznacza to warto¶æ 0:0, ale czê¶ciej jest po prostu przypadkowy adres.
Jak wobec tego zdobyæ pewno¶æ, ¿e dany adres jest prawdziwy? Ano
odczytujemy zmienn± $0:0410, której zawarto¶æ wygl±da tak:
bity
0 : =0 Brak stacji dysków
1 : =1 obecno¶æ kooprocesora
2-3 : Pamiêæ RAM p³yty g³ównej
=01 16K; =10 32K; =11 64+K
4-5 : Aktywny tryb graficzny
=00 mo¿liwa EGA (nie zawsze prawda, lepiej u¿yæ przerwania
10h)
=01 40 kolumn kolor; =10 80 kolumn kolor; =11 TTL Mono
6-7 : Ca³kowita liczba napêdów
--- =00 1; =01 2; =10 3; =11 4
8 : Obecno¶æ DMA
9-11 : Porty RS232
=000 brak; =001 1; ... =111 7
12 : =1 obecno¶æ karty GAME
13 : =1 obecno¶æ drukarki szeregowej (zwykle drukarka jest
równoleg³a)
14-15 : Zainstalowane drukarki
=00 brak; =01 1; =10 2; =11 3
Te informacje zwraca tak¿e przerwanie 11h w rejestrze AX, np:
Label IsHere,Quit;
...
{Funkcja zwraca TRUE je¶li w systemie jest obecny}
{kooprocesor matematyczny, w przeciwnym przypadku zwraca FALSE}
Function Check4MathCoopr:Boolean; Assembler; Far;
Asm
MOV @Result,00
INT 11h
AND AX,0002h
JNE IsHere
JMP Quit
:IsHere
MOV @Result,01
:Quit
NOP
End;
W Linux'ie nie dzia³a F9, wiêc piszê z pamiêci. Wniosek - funkcja
mo¿e siê nie kompilowaæ. Ale to ju¿ chyba nie jest problem. Nie piszê
komenta¿y, bo chyba wszystko jest jasne.
O obs³udze myszki w tekstówce napiszê nastêpnym razem.
__ Piotr ,,Neevor'' Bochaczyk
___ ___ __ ___ member of Team OS/2 Poland
_ _ _ __ _ _ & Asu'a Programmers Group
_ _ __ __ _
_ _ _ __ _ neevor@teamos2.org.pl
___ ___ __ ______
__ Uroda x Rozum = const
Technical Details
Message-ID:
<367784A4.30191855@mops.uci.agh.edu.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!news.nask.pl!cyfronet!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!news.nask.pl!cyfronet!not-for-mail From: Piotr Bochaczyk <piotrb@mops.uci.agh.edu.pl> Newsgroups: pl.comp.lang.pascal Subject: Kursor textowy i porty komunikacyjne Date: Wed, 16 Dec 1998 11:00:04 +0100 Organization: Team OS/2 Poland Lines: 95 Message-ID: <367784A4.30191855@mops.uci.agh.edu.pl> NNTP-Posting-Host: mops1.uci.agh.edu.pl Mime-Version: 1.0 X-Mailer: Mozilla 3.01Gold (X11; I; Linux 2.0.27 i586) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit