|
|
1.1 ! root 1: // ! 2: // nono ! 3: // Copyright (C) 2017 [email protected] ! 4: // ! 5: ! 6: #pragma once ! 7: ! 8: #include "device.h" ! 9: #include "scheduler.h" ! 10: ! 11: struct CRTC ! 12: { ! 13: uint16 r[24]; ! 14: uint16 op; ! 15: ! 16: static const uint32 R00 = 0x00; // $E80000 ! 17: static const uint32 R01 = 0x01; // $E80002 ! 18: static const uint32 R02 = 0x02; // $E80004 ! 19: static const uint32 R03 = 0x03; // $E80006 ! 20: static const uint32 R04 = 0x04; // $E80008 ! 21: static const uint32 R05 = 0x05; // $E8000A ! 22: static const uint32 R06 = 0x06; // $E8000C ! 23: static const uint32 R07 = 0x07; // $E8000E ! 24: static const uint32 R08 = 0x08; // $E80010 ! 25: static const uint32 R09 = 0x09; // $E80012 ! 26: static const uint32 R10 = 0x0a; // $E80014 ! 27: static const uint32 R11 = 0x0b; // $E80016 ! 28: static const uint32 R12 = 0x0c; // $E80018 ! 29: static const uint32 R13 = 0x0d; // $E8001A ! 30: static const uint32 R14 = 0x0e; // $E8001C ! 31: static const uint32 R15 = 0x0f; // $E8001E ! 32: static const uint32 R16 = 0x10; // $E80020 ! 33: static const uint32 R17 = 0x11; // $E80022 ! 34: static const uint32 R18 = 0x12; // $E80024 ! 35: static const uint32 R19 = 0x13; // $E80026 ! 36: static const uint32 R20 = 0x14; // $E80028 ! 37: static const uint32 R21 = 0x15; // $E8002A ! 38: static const uint32 R22 = 0x16; // $E8002C ! 39: static const uint32 R23 = 0x17; // $E8002E ! 40: static const uint32 REG_END = 0x18; ! 41: static const uint32 REG_OP = 0x240; // $E80480 ! 42: }; ! 43: ! 44: class CRTCDevice ! 45: : public IODevice ! 46: { ! 47: typedef IODevice inherited; ! 48: public: ! 49: CRTCDevice(); ! 50: virtual ~CRTCDevice(); ! 51: ! 52: virtual void ResetHard(); ! 53: ! 54: virtual uint64 Read8(uint32 addr); ! 55: virtual uint64 Read16(uint32 addr); ! 56: virtual uint64 Write8(uint32 addr, uint32 data); ! 57: virtual uint64 Write16(uint32 addr, uint32 data); ! 58: virtual uint64 Peek8(uint32 addr); ! 59: ! 60: private: ! 61: void WriteReg(uint32 offset, uint32 data); ! 62: ! 63: // 垂直表示期間イベント ! 64: void VDispCallback(int arg); ! 65: ! 66: struct CRTC crtc {}; ! 67: ! 68: Event vdisp_event {}; ! 69: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.