|
|
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:
42: virtual bool MonitorUpdate();
43:
44: private:
45: bool en = false; // Enable
46: bool rw = false; // R/~W
47: int rs = 0; // レジスタセレクト
48:
49: bool addr_inc = false; // アドレス・インクリメント
50: bool disp_char = false; // 文字表示をするか
51: int addr = 0; // アドレスカウンタ
52: uint8 ddram[0x40 * 2] {};
53: };
54:
55: extern LCDDevice *gLCD;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.