|
|
1.1 root 1: //
2: // nono
3: // Copyright (C) 2018 [email protected]
4: //
5:
6: #pragma once
7:
8: #include "device.h"
9:
10: class LCDDevice : public Device
11: {
12: typedef Device inherited;
13: public:
14: LCDDevice();
15: virtual ~LCDDevice();
16:
17: virtual bool PowerOff();
18:
19: // リセット信号はない
20:
21: // R/~W を val にセットします。%1=R、%0=W です。
22: void SetRW(bool val);
23:
24: // RS を val にセットします。
25: // %0=コマンド(W)/ステータス(R)レジスタ
26: // %1=データレジスタ
27: void SetRS(int);
28:
29: // E を val にセットします。
30: void SetE(bool);
31:
32: // E, RS, R/W 線の状態を取得する。
33: // PIO1 のポートC 読み込み用。
34: uint8 Get() const;
35:
36: // 読み込みます。
37: uint8 Read();
38:
39: // 書き込みます。
40: void Write(uint8 data);
41:
1.1.1.2 ! root 42: // PIO1 のポートA ピーク用
! 43: uint8 Peek() const;
! 44:
1.1 root 45: virtual bool MonitorUpdate();
46:
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.