Thread View: pl.comp.lang.pascal
4 messages
4 total messages
Started by Piotr Bochaczyk
Wed, 16 Dec 1998 10:00
Kursor textowy i porty komunikacyjne
Author: 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
Re: Kursor textowy i porty komunikacyjne
Author: Artur Jedlinski
Date: Wed, 16 Dec 1998 11:02
Date: Wed, 16 Dec 1998 11:02
102 lines
3912 bytes
3912 bytes
Piotr Bochaczyk <piotrb@mops.uci.agh.edu.pl> wrote:
: 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
--
Nataniel <nataniel@rpg.pl>
editor of "Nowe WIZJE"
"Co to za czasy, ze byle chlystek moze mowic NI do starej kobiety"
Re: Kursor textowy i porty komunikacyjne
Author: Piotr Bochaczyk
Date: Wed, 16 Dec 1998 17:15
Date: Wed, 16 Dec 1998 17:15
19 lines
1366 bytes
1366 bytes
Artur Jedlinski wrote:
>
> Piotr Bochaczyk <piotrb@mops.uci.agh.edu.pl> wrote:
> : Te dwie procedurki rozwi±zuj± chyba problem ukrywania kursora
> : tekstowego?
>
> : Procedure KursorOff; Assembler;
> : Asm
<CIACH!>
Nie rozumiem jednego. W jakim celu Pan Artur Jedlinski przyslal jeszcze
raz CALEGO(!!!) mojego posta bez zadnego komentarza?
--
__ Piotr ,,Neevor'' Bochaczyk
___ ___ __ ___ member of Team OS/2 Poland
_ _ _ __ _ _ & Asu'a Programmers Group
_ _ __ __ _
_ _ _ __ _ neevor@teamos2.org.pl
___ ___ __ ______
__ Uroda x Rozum = const
Re: Kursor textowy i porty komunikacyjne
Author: Artur Jedlinski
Date: Thu, 17 Dec 1998 00:00
Date: Thu, 17 Dec 1998 00:00
15 lines
1216 bytes
1216 bytes
Piotr Bochaczyk <pio...@mops.uci.agh.edu.pl> wrote:
: <CIACH!>
: Nie rozumiem jednego. W jakim celu Pan Artur Jedlinski przyslal jeszcze
: raz CALEGO(!!!) mojego posta bez zadnego komentarza
<SPLAT>
Suxx! Sorry wszystkim, przepraszam, naprawde nie wiem co sie zwalilo,
ale wycialem praktycznie wszystko i napisalem pascalowa wersje obu procedur
(tak dla scislosci, nie zeby assemblerowe byly zle). I gdzies to jak widze
wcielo... Sam dopiero zauwazylem.. Jeszcze raz przepraszam, musialem cos nie
tak wcisnac w ktoryms momencie :)
Nataniel <nata...@rpg.pl>
editor of "Nowe WIZJE"
"Co to za czasy, ze byle chlystek moze mowic NI do starej kobiety"
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads