|
|
1.1 root 1: //
2: // nono
1.1.1.3 ! root 3: // Copyright (C) 2020 nono project
! 4: // Licensed under nono-license.txt
1.1 root 5: //
6:
7: #include "header.h"
8: #include "mainapp.h"
1.1.1.3 ! root 9: #include "mpu680x0.h"
1.1 root 10: #include "pluto.h"
11: #include "rtc.h"
12: #include "vm.h"
13:
1.1.1.3 ! root 14: void cli_halt_callback(void *);
! 15:
1.1 root 16: // wxApp と相似にするためのクラス
17: class CLIApp
18: {
19: public:
20: bool OnInit();
21: bool Parse();
1.1.1.3 ! root 22: [[noreturn]] void OnCreate();
1.1 root 23:
24: int ac;
25: char **av;
26: };
27:
28: int
29: main(int ac, char *av[])
30: {
1.1.1.2 root 31: std::unique_ptr<CLIApp> app(new CLIApp());
1.1 root 32:
33: // wxApp とよく似せるため
34: app->ac = ac;
35: app->av = av;
1.1.1.2 root 36: if (!app->OnInit()) {
1.1 root 37: return 1;
38: }
39: return 0;
40: }
41:
42: // ここがエントリポイント(のつもり)
43: bool
44: CLIApp::OnInit()
45: {
1.1.1.2 root 46: if (!gMainApp.Init(true, ac, av)) {
1.1 root 47: return false;
48: }
1.1.1.2 root 49: if (!gMainApp.Start()) {
1.1 root 50: return false;
51: }
52:
53: // メインウィンドウに相当するところ
54: OnCreate();
55:
56: return true;
57: }
58:
59: // メインウィンドウ作成後のイベントに相当するところ
60: void
61: CLIApp::OnCreate()
62: {
1.1.1.3 ! root 63: // VM にコールバックを登録
! 64: if (gMPU680x0) {
! 65: gMPU680x0->SetHaltCallback(cli_halt_callback, NULL);
! 66: }
! 67:
1.1 root 68: // 時刻開始?
69: // なるべく VM が開始する直前にしたい。
70: gRTC->InitRTC();
71:
72: // VM 実行開始
73: gVM->PowerButton();
74:
75: // ?
76: for (;;) {
77: sleep(1);
78: }
79: }
1.1.1.3 ! root 80:
! 81: // m680x0 ダブルバスフォールト時に呼ばれるコールバック。
! 82: void
! 83: cli_halt_callback(void *dummy)
! 84: {
! 85: // どうする?
! 86: warnx("Double bus fault has occurred in VM");
! 87: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.