Thread View: de.comp.lang.c++
2 messages
2 total messages
Started by Philipp Kursawe
Fri, 19 Jan 1996 18:03
PIT-Ports
Author: Philipp Kursawe
Date: Fri, 19 Jan 1996 18:03
Date: Fri, 19 Jan 1996 18:03
69 lines
2394 bytes
2394 bytes
Hi All!
Ich habe mal versucht, mit dem PIT zu arbeiten (Ports 0x40-0x43);
herausgekommen ist dabei u.a. folgendes kleines Testprogramm, das den
Counter auf 0xFFFF setzt und anschließend gleich wieder ausliest;
Rückgabewert ist die Differenz von 0xFFFF und dem Ergebnis - normalerweise
also 0, wenn's mal lange dauert, 1.
Soweit, so gut, solange man das Programm nicht unter Windows laufen läßt,
werden auch solche Werte ausgegeben, nach Beendigung des Programmes gibt
es aber einige Probleme: Entweder stürzt der Rechner an dieser Stelle
gleich ab, oder spätestens, wenn man das nächste Mal versucht, Windows zu
starten.
Auch ein anderes Phänomen ist zu beobachten: Wenn es gelingt, das Programm
mehrmals hintereinander laufen zu lassen, so kommen in etwa einem von hundert
Fällen vollkommen falsche Werte heraus.
Und zum dritten: Unter Windows ergeben sich nur falsche Werte.
Meine Fragen also:
1. Gibt es irgendwelche Besonderheiten bei der Programmierung von Ports oder
speziell der Ports 0x40,0x43 ?
2. Wie funktioniert der PIT unter Windows ?
------------------------------------cut----------------->8----------------
#include <iostream.h>
#include <conio.h>
typedef unsigned char byte;
typedef unsigned short word;
word prb()
{
asm{
cli
mov al,0x34
out 0x43,al
mov al,0xFF
out 0x40,al
out 0x40,al
mov al,0x34
out 0x43,al
in al,0x40
mov bl,al
in al,0x40
mov bh,al
mov ax,0xFFFF
sub ax,bx
sti
}
return _AX;
}
void main()
{
cout << prb() << "\n";
getch();
}
------------------------------------cut----------------->8----------------
_
...und tschüß, |_)hilipp
|/
|\ursawe
+----------------------------------------+
Copy not found - Operator halted
+------------FIDO: 2:249/999-------------+
## CrossPoint v3.1 ##
Re: PIT-Ports
Author: J Wunsch
Date: Mon, 22 Jan 1996 22:47
Date: Mon, 22 Jan 1996 22:47
41 lines
1565 bytes
1565 bytes
philipp@top.east.de (Philipp Kursawe) writes:
> Ich habe mal versucht, mit dem PIT zu arbeiten (Ports 0x40-0x43);
Das hat aber alles nicht viel mit C zu tun... auch wenn es in dieser
Sprache geschrieben ist. 99 % eines Unix-Kernels sind in C
geschrieben, dennoch wäre es etwas unpassend, seine Architektur und
Probleme in dieser Gruppe zu diskutieren.
> word prb()
> {
> asm{
> cli
> mov al,0x34
> out 0x43,al
> mov al,0xFF
> out 0x40,al
> out 0x40,al
> mov al,0x34
> out 0x43,al
> in al,0x40
> mov bl,al
> in al,0x40
> mov bh,al
> mov ax,0xFFFF
> sub ax,bx
> sti
> }
> return _AX;
> }
Alles in allem hat das wohl mit C außer den geschweiften Klammern
absolut gar nichts gemein. Zumindest fürchte ich, daß mein C-Compiler
obige Konstruktion nicht mögen würde... :^]
--
cheers, J"org
joerg_wunsch@uriah.heep.sax.de -- http://www.sax.de/~joerg/ -- NIC: JW11-RIPE
Never trust an operating system you don't have sources for. ;-)
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