--- nono/vm/sysclk.cpp 2026/04/29 17:04:32 1.1.1.3 +++ nono/vm/sysclk.cpp 2026/04/29 17:04:42 1.1.1.5 @@ -1,9 +1,11 @@ // // nono -// Copyright (C) 2018 isaki@NetBSD.org +// Copyright (C) 2020 nono project +// Licensed under nono-license.txt // #include "sysclk.h" +#include "mainapp.h" #include "mpu.h" SysClkDevice::SysClkDevice() @@ -15,7 +17,6 @@ SysClkDevice::SysClkDevice() event.dev = this; event.func = (DeviceCallback_t)&SysClkDevice::Callback; event.code = 0; - event.time = 16.666667_msec; event.SetName("System Clock"); } @@ -24,6 +25,15 @@ SysClkDevice::~SysClkDevice() } bool +SysClkDevice::Init() +{ + // クロックは機種ごとに異なる + const ConfigItem& item = gConfig->Find("!sysclk-period"); + event.time = item.AsInt(); + return true; +} + +bool SysClkDevice::PowerOn() { // 電源オンですぐ起動 @@ -67,10 +77,10 @@ SysClkDevice::GetInt() const // イベントハンドラ void -SysClkDevice::Callback(int arg) +SysClkDevice::Callback(Event& ev) { putlog(3, "システムクロック割り込み発生"); sysint = true; - gMPU->Interrupt(5); - event.Start(); + gMPU->Interrupt(this, 5); + ev.Start(); }