2 * FM77AV/FM16β ALU [mb61vh010.h]
4 * Author: K.Ohta <whatisthis.sowhat _at_ gmail.com>
7 * Mar 28, 2015 : Initial
11 #ifndef _VM_FM77AV_16beta_ALU_H_
12 #define _VM_FM77AV_16beta_ALU_H_
15 #include "../device.h"
16 #include "../memory.h"
17 #include "fm7_common.h"
31 ALU_LINEPATTERN_REG_HIGH,
32 ALU_LINEPATTERN_REG_LO,
33 ALU_LINEPOS_START_X_HIGH,
34 ALU_LINEPOS_START_X_LOW,
35 ALU_LINEPOS_START_Y_HIGH,
36 ALU_LINEPOS_START_Y_LOW,
37 ALU_LINEPOS_END_X_HIGH,
38 ALU_LINEPOS_END_X_LOW,
39 ALU_LINEPOS_END_Y_HIGH,
40 ALU_LINEPOS_END_Y_LOW,
41 ALU_CMPDATA_REG = 0x10000,
42 ALU_WRITE_PROXY = 0x20000,
50 EVENT_MB61VH010_BUSY_ON = 0,
51 EVENT_MB61VH010_BUSY_OFF
54 class MB61VH010: public DEVICE {
62 uint8 command_reg; // D410 (RW)
63 uint8 color_reg; // D411 (RW)
64 uint8 mask_reg; // D412 (RW)
65 uint8 cmp_status_reg; // D413 (RO)
66 uint8 cmp_color_data[8]; // D413-D41A (WO)
67 uint8 bank_disable_reg; // D41B (RW)
68 uint8 tile_reg[4]; // D41C-D41F (WO)
70 pair line_addr_offset; // D420-D421 (WO)
71 pair line_pattern; // D422-D423 (WO)
72 pair line_xbegin; // D424-D425 (WO)
73 pair line_ybegin; // D426-D427 (WO)
74 pair line_xend; // D428-D429 (WO)
75 pair line_yend; // D42A-D42B (WO)
91 uint8 do_read(uint32 addr, uint32 bank);
92 uint8 do_write(uint32 addr, uint32 bank, uint8 data);
93 uint8 do_pset(uint32 addr);
94 uint8 do_blank(uint32 addr);
95 uint8 do_or(uint32 addr);
96 uint8 do_and(uint32 addr);
97 uint8 do_xor(uint32 addr);
98 uint8 do_not(uint32 addr);
99 uint8 do_tilepaint(uint32 addr);
100 uint8 do_compare(uint32 addr);
101 uint8 do_alucmds(uint32 addr);
102 void do_alucmds_dmyread(uint32 addr);
103 bool put_dot(int x, int y);
108 MB61VH010(VM *parent_vm, EMU *parent_emu);
111 void event_callback(int event_id, int err);
112 void write_data8(uint32 id, uint32 data);
113 uint32 read_data8(uint32 addr);
114 uint32 read_signal(int id);
115 void initialize(void);
117 //void update_config(void);
119 void set_context_memory(DEVICE *p)
126 #endif // _VM_FM77AV_16beta_ALU_H_