Einzelnen Beitrag anzeigen

Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#2

Re: low-level timer-programmierung

  Alt 21. Nov 2006, 11:47
Direkte Hardwarezugriffe unter Windows NT und aufwärts funktionieren nur selten so wie man das aus DOS-Zeiten erwartet. Boote Deinen Rechner mal z.B. mit FreeDOS und führe Dein Programm dort aus. Die NTVDM (Dein "DOS-Prompt") unterstützt eine ganze Reihe Portzugriffe indem beim Portzugriff eine hochrangige Exception generiert wird und eine Emulation den Rest erledigt. Damit landen Deine Portzugriffe aber natuerlich nicht direkt auf der Hardware sondern nur in der NTVDM (NT Virtual Dos Machine) - daher kein Ton aus dem Speaker und seltsame Polling-Werte. Ich vermute dass das Auslesen immer Dummywerte liefert (egal was man setzt, immer abwechselnd 0 und 1) weil manche DOS-Programme sonst einfach nur gar nichts machen würden weil sie auf den Timer warten. Und eine echte Emulation wäre nur aufwändig ohne echten Nutzen zu haben - ergo wird bei jedem Auslesen ein Bit geflippt und fertig.
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat