--- nono/vm/crtc.h 2026/04/29 17:05:10 1.1.1.7 +++ nono/vm/crtc.h 2026/04/29 17:05:14 1.1.1.8 @@ -68,7 +68,7 @@ struct CRTC // // 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 // +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ - // R20 | - |SIZ| COL | - |HF | VD | HD | + // R20 | - |MEM|SIZ| COL | - |HF | VD | HD | // +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ // R21 | - |MEN|SA | AP | CP | // +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ @@ -109,6 +109,14 @@ struct CRTC static const uint32 REG_END = 0x18; static const uint32 REG_OP = 0x240; // $E80480 + // R20 + static const uint16 R20_MEM = 0x0800; + static const uint16 R20_SIZ = 0x0400; + static const uint16 R20_COL = 0x0300; + static const uint16 R20_HF = 0x0010; + static const uint16 R20_VD = 0x000c; + static const uint16 R20_HD = 0x0003; + // 動作ポート static const uint32 OP_RC = 0x08; // ラスターコピー開始(%1) static const uint32 OP_FC = 0x02; // 高速クリア開始(%1) @@ -137,12 +145,12 @@ class CRTCDevice : public IODevice // 動作ポートへの書き込み void WriteOp(uint32 data); - // テキスト画面のラスターコピー - void StartRasterCopy(); - // 水平同期信号イベント void HSyncCallback(Event& ev); + // ラスターコピー完了イベント + void RasterCallback(Event& ev); + // 垂直表示期間イベント void VDispCallback(Event& ev); @@ -150,8 +158,12 @@ class CRTCDevice : public IODevice struct CRTC crtc {}; + // ラスターコピー指示 + bool raster_copy {}; + Event hsync_event { this }; Event vdisp_event { this }; + Event raster_event { this }; Monitor monitor { this }; };