🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.pascal
Article #167

Kursor textowy i porty komunikacyjne

#167
From: Piotr Bochaczyk
Date: Wed, 16 Dec 1998 10:00
95 lines
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-mail

Show 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