Implement RTC #1
|
@ -505,8 +505,8 @@ pub const Clock = struct {
|
||||||
cpu.sched.push(.RealTimeClock, 1 << 24); // Every Second
|
cpu.sched.push(.RealTimeClock, 1 << 24); // Every Second
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn updateTime(self: *This) void {
|
pub fn updateTime(self: *This, late: u64) void {
|
||||||
self.cpu.sched.push(.RealTimeClock, 1 << 24); // Reschedule
|
self.cpu.sched.push(.RealTimeClock, (1 << 24) -| late); // Reschedule
|
||||||
|
|
||||||
const now = DateTime.now();
|
const now = DateTime.now();
|
||||||
self.year = toBcd(u8, @intCast(u8, now.date.year - 2000));
|
self.year = toBcd(u8, @intCast(u8, now.date.year - 2000));
|
||||||
|
|
|
@ -66,7 +66,7 @@ pub const Scheduler = struct {
|
||||||
if (device.kind != .Rtc or device.ptr == null) return;
|
if (device.kind != .Rtc or device.ptr == null) return;
|
||||||
|
|
||||||
const clock = @ptrCast(*Clock, @alignCast(@alignOf(*Clock), device.ptr.?));
|
const clock = @ptrCast(*Clock, @alignCast(@alignOf(*Clock), device.ptr.?));
|
||||||
clock.updateTime();
|
clock.updateTime(late);
|
||||||
},
|
},
|
||||||
.FrameSequencer => cpu.bus.apu.tickFrameSequencer(late),
|
.FrameSequencer => cpu.bus.apu.tickFrameSequencer(late),
|
||||||
.SampleAudio => cpu.bus.apu.sampleAudio(late),
|
.SampleAudio => cpu.bus.apu.sampleAudio(late),
|
||||||
|
|
Loading…
Reference in New Issue