|
|
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: #pragma once
8:
9: #include "device.h"
10:
11: class LCDDevice : public Device
12: {
1.1.1.3 ! root 13: using inherited = Device;
1.1 root 14: public:
15: LCDDevice();
1.1.1.3 ! root 16: ~LCDDevice() override;
1.1 root 17:
1.1.1.3 ! root 18: bool PowerOff() override;
! 19: bool MonitorUpdate() override;
1.1 root 20:
21: // リセット信号はない
22:
1.1.1.3 ! root 23: // R/~W を val にセットする。%1=R、%0=W
1.1 root 24: void SetRW(bool val);
25:
1.1.1.3 ! root 26: // RS を val にセットする。
1.1 root 27: // %0=コマンド(W)/ステータス(R)レジスタ
28: // %1=データレジスタ
29: void SetRS(int);
30:
1.1.1.3 ! root 31: // E を val にセットする。
1.1 root 32: void SetE(bool);
33:
34: // E, RS, R/W 線の状態を取得する。
35: // PIO1 のポートC 読み込み用。
36: uint8 Get() const;
37:
1.1.1.3 ! root 38: // 読み込む。
1.1 root 39: uint8 Read();
40:
1.1.1.3 ! root 41: // 書き込む。
1.1 root 42: void Write(uint8 data);
43:
1.1.1.2 root 44: // PIO1 のポートA ピーク用
45: uint8 Peek() const;
46:
1.1 root 47: private:
48: bool en = false; // Enable
49: bool rw = false; // R/~W
50: int rs = 0; // レジスタセレクト
51:
52: bool addr_inc = false; // アドレス・インクリメント
53: bool disp_char = false; // 文字表示をするか
54: int addr = 0; // アドレスカウンタ
55: uint8 ddram[0x40 * 2] {};
56: };
57:
1.1.1.2 root 58: extern std::unique_ptr<LCDDevice> gLCD;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.