🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: de.comp.lang.c++
2 messages
2 total messages Started by Philipp Kursawe Fri, 19 Jan 1996 18:03
PIT-Ports
#1140
Author: Philipp Kursawe
Date: Fri, 19 Jan 1996 18:03
69 lines
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
#1142
Author: J Wunsch
Date: Mon, 22 Jan 1996 22:47
41 lines
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