dosgame1/system/Timer.h

39 lines
552 B
C++

#ifndef TICKS_H
#define TICKS_H
#include <cstdint>
#include <dpmi.h>
class Timer {
public:
using Callback = void (*)();
Timer();
~Timer();
void setFrequency(uint16_t freq);
void setDivider(uint16_t div);
Callback setCallback(Callback);
[[nodiscard]] uint32_t getTicks() const;
private:
friend void timerISR();
_go32_dpmi_seginfo _oldIsr{}, _newIsr{};
uint32_t _ticks{0};
uint32_t _elapsed{0};
uint16_t _div{0};
void (*_callback)(){nullptr};
void update();
};
extern Timer timer;
#endif