2 Skelton for retropc emulator
4 Author : Takeda.Toshiya
7 [ SCSI base initiator ]
18 class SCSI_HOST : public DEVICE
21 outputs_t outputs_irq; // to adaptor
22 outputs_t outputs_drq;
24 outputs_t outputs_bsy;
27 outputs_t outputs_msg;
28 outputs_t outputs_req;
30 outputs_t outputs_dat; // to devices
31 outputs_t outputs_sel;
32 outputs_t outputs_atn;
33 outputs_t outputs_ack;
34 outputs_t outputs_rst;
37 uint32_t bsy_status, cd_status, io_status, msg_status, req_status, ack_status;
40 void __FASTCALL set_irq(bool value);
41 void __FASTCALL set_drq(bool value);
44 SCSI_HOST(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
46 initialize_output_signals(&outputs_irq);
47 initialize_output_signals(&outputs_drq);
49 initialize_output_signals(&outputs_bsy);
50 initialize_output_signals(&outputs_cd);
51 initialize_output_signals(&outputs_io);
52 initialize_output_signals(&outputs_msg);
53 initialize_output_signals(&outputs_req);
55 initialize_output_signals(&outputs_dat);
56 initialize_output_signals(&outputs_sel);
57 initialize_output_signals(&outputs_atn);
58 initialize_output_signals(&outputs_ack);
59 initialize_output_signals(&outputs_rst);
60 set_device_name(_T("SCSI HOST"));
67 void __FASTCALL write_dma_io16(uint32_t addr, uint32_t data);
68 uint32_t __FASTCALL read_dma_io16(uint32_t addr);
70 void __FASTCALL write_dma_io8(uint32_t addr, uint32_t data);
71 uint32_t __FASTCALL read_dma_io8(uint32_t addr);
73 void __FASTCALL write_signal(int id, uint32_t data, uint32_t mask);
74 uint32_t __FASTCALL read_signal(int id);
75 bool process_state(FILEIO* state_fio, bool loading);
78 void set_context_irq(DEVICE* device, int id, uint32_t mask)
80 register_output_signal(&outputs_irq, device, id, mask);
82 void set_context_drq(DEVICE* device, int id, uint32_t mask)
84 register_output_signal(&outputs_drq, device, id, mask);
86 void set_context_bsy(DEVICE* device, int id, uint32_t mask)
88 register_output_signal(&outputs_bsy, device, id, mask);
90 void set_context_cd(DEVICE* device, int id, uint32_t mask)
92 register_output_signal(&outputs_cd, device, id, mask);
94 void set_context_io(DEVICE* device, int id, uint32_t mask)
96 register_output_signal(&outputs_io, device, id, mask);
98 void set_context_msg(DEVICE* device, int id, uint32_t mask)
100 register_output_signal(&outputs_msg, device, id, mask);
102 void set_context_req(DEVICE* device, int id, uint32_t mask)
104 register_output_signal(&outputs_req, device, id, mask);
106 void set_context_ack(DEVICE* device, int id, uint32_t mask)
108 register_output_signal(&outputs_ack, device, id, mask);
110 void set_context_target(DEVICE* device)
112 #ifdef SCSI_HOST_WIDE
113 register_output_signal(&outputs_dat, device, SIG_SCSI_DAT, 0xffff);
115 register_output_signal(&outputs_dat, device, SIG_SCSI_DAT, 0xff);
117 register_output_signal(&outputs_sel, device, SIG_SCSI_SEL, 1);
118 register_output_signal(&outputs_atn, device, SIG_SCSI_ATN, 1);
119 register_output_signal(&outputs_ack, device, SIG_SCSI_ACK, 1);
120 register_output_signal(&outputs_rst, device, SIG_SCSI_RST, 1);