Welcome to Schneider / Amstrad CPC Forum. Please login or sign up.

29. March 2024, 02:32:26

Login with username, password and session length

Shoutbox

TFM

2024-01-15, 17:06:57
Momentan billige Farbbänder auf Ebay für PCW

Devilmarkus

2023-07-09, 10:37:40
Zweiter 👋😂🤣

TFM

2023-06-13, 14:21:49
Sommerloch!

TFM

2023-05-30, 17:00:20
Erster ;-)

Recent

Members
Stats
  • Total Posts: 11,655
  • Total Topics: 1,329
  • Online today: 89
  • Online ever: 1,724
  • (16. January 2020, 00:18:45)
Users Online
Users: 0
Guests: 98
Total: 98

98 Guests, 0 Users

Counter gesucht

Started by LambdaMikel, 22. June 2021, 16:38:45

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

LambdaMikel

CPC-Freunde,
ich will was programmieren in Z80 und brauche dafür einen möglichst unabhängigen 16Bit counter. Haben wir nicht irgendwo im RAM einen Frameticker oder so, den ich nur auslesen muss, der automatisch hochzählt per Interupt? Interupts bleiben bei mir an. Ich kann natürlich auch selbst was aufsetzen, aber a) weiß ich gerade nicht wie das geht mit der Firmware (Frame Fly Ticker oder so), und b) könnte ich natürlich in meiner Anwendung in der "Hauptschleife" einen Zähler aufsetzen, aber schöner wäre halt wenn ich einen schon existierenden Interupt-Counter verwenden könnte der bereits von der Firmware aufgesetzt wurde. Der Kernel sollte doch sowas irgendwo haben? :)

TFM

Guck im Systembuch mal nach denen hier:

&BCE0 KL NEW FAST TICKER

&BCE3 KL ADD FAST TICKER

&BCE6 KL DEL FAST TICKER
TFM of FutureSoft
http://www.futureos.de --> Das Betriebssystem FutureOS (Update: 20.12.2023)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> RSX ROM für LambdaSpeak (Update: 26.12.2021)

LambdaMikel

#2
Ja ok, aber die muss ich ja selbst aufsetzen. Ich dachte, evtl. gibt's im RAM schon ne Addresse wo gezählt wird und die müsste ich nur auslesen dann? Wenn nicht, auch kein Problem, kann ich ja machen.

EDIT: OK, habe mal alle RAM-Addressen mit "count" im Namen aus hier angesehen:
http://www.cantrell.org.uk/david/tech/cpc/cpc-firmware/firmware.pdf

Da scheint wirklich keiner "automatisch zu zählen"  :gruebel:

Shining

Im CPC ist ein 32-Bit Zähler. Reicht dir der?

Unter Basic ist das der mit dem Befehl TIME.

In ASM:

BD0D KL TIME PLEASE

Erfrage den Stand des Interrupt-Zählers
Eingaben: keine
Ausgaben: DEHL enthält die Zeit in 1/300stel Sekunden
Unverändert: AF,BC,IX,IY
Für allgemeine Zeitmessungen lohnt es sich oft nicht, den CPC mit der Rechenzeit
für einen Eventblock zu belasten. Verbrauchte Zeit lässt sich mit diesem Vektor
bequem feststellen. In Basic wird dieser Vektor für die reservierte Variable 'TIME'
benutzt. Da dieser Zähler bei jedem Hardware-Interrupt weitergestellt wird, leidet
seine Genauigkeit mit jedem Kassetten- oder Diskettenzugriff.


BD10 KL TIME SET

Stelle den Interrupt-Zähler auf einen neuen Startwert
Eingaben: DEHL enthält den neuen Wert für den Interrupt-Zähler
Ausgaben: keine
Unverändert: BC,DE,HL,IX,IY
Der Zähler lässt sich auch stellen, um ihn beispielsweise an die Datums- und
Uhrzeit-Eingabe in einem Programm anzupassen. Der gesamte Zeit-Messumfang
des 4-Byte Zählers umfasst etwa 165 Tage.

LambdaMikel

Prima, besten Dank! Genau was ich suche!