2 Skelton for retropc emulator
4 Author : Takeda.Toshiya
7 [ SCSI base initiator ]
17 class SCSI_HOST : public DEVICE
20 outputs_t outputs_irq; // to adaptor
21 outputs_t outputs_drq;
22 outputs_t outputs_bsy;
24 outputs_t outputs_dat; // to devices
25 outputs_t outputs_sel;
26 outputs_t outputs_atn;
27 outputs_t outputs_ack;
28 outputs_t outputs_rst;
31 uint32_t bsy_status, cd_status, io_status, msg_status, req_status;
34 void set_irq(bool value);
35 void set_drq(bool value);
38 SCSI_HOST(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
40 initialize_output_signals(&outputs_irq);
41 initialize_output_signals(&outputs_drq);
42 initialize_output_signals(&outputs_bsy);
44 initialize_output_signals(&outputs_dat);
45 initialize_output_signals(&outputs_sel);
46 initialize_output_signals(&outputs_atn);
47 initialize_output_signals(&outputs_ack);
48 initialize_output_signals(&outputs_rst);
49 set_device_name(_T("SCSI HOST"));
56 void write_dma_io16(uint32_t addr, uint32_t data);
57 uint32_t read_dma_io16(uint32_t addr);
59 void write_dma_io8(uint32_t addr, uint32_t data);
60 uint32_t read_dma_io8(uint32_t addr);
62 void write_signal(int id, uint32_t data, uint32_t mask);
63 uint32_t read_signal(int id);
64 void save_state(FILEIO* state_fio);
65 bool load_state(FILEIO* state_fio);
68 void set_context_irq(DEVICE* device, int id, uint32_t mask)
70 register_output_signal(&outputs_irq, device, id, mask);
72 void set_context_drq(DEVICE* device, int id, uint32_t mask)
74 register_output_signal(&outputs_drq, device, id, mask);
76 void set_context_bsy(DEVICE* device, int id, uint32_t mask)
78 register_output_signal(&outputs_bsy, device, id, mask);
80 void set_context_target(DEVICE* device)
83 register_output_signal(&outputs_dat, device, SIG_SCSI_DAT, 0xffff);
85 register_output_signal(&outputs_dat, device, SIG_SCSI_DAT, 0xff);
87 register_output_signal(&outputs_sel, device, SIG_SCSI_SEL, 1);
88 register_output_signal(&outputs_atn, device, SIG_SCSI_ATN, 1);
89 register_output_signal(&outputs_ack, device, SIG_SCSI_ACK, 1);
90 register_output_signal(&outputs_rst, device, SIG_SCSI_RST, 1);