2 FUJITSU FMR-50 Emulator 'eFMR-50'
3 FUJITSU FMR-60 Emulator 'eFMR-60'
5 Author : Takeda.Toshiya
14 #define PHASE_BUSFREE 0
15 #define PHASE_ARBITRATION 1
16 #define PHASE_SELECTION 2
17 #define PHASE_RESELECTION 3
18 #define PHASE_COMMAND 4
19 #define PHASE_EXECUTE 5
20 #define PHASE_MSG_IN 6
21 #define PHASE_MSG_OUT 7
22 #define PHASE_DATA_IN 8
23 #define PHASE_DATA_OUT 9
24 #define PHASE_STATUS 10
28 #define CTRL_IMSK 0x40
31 #define CTRL_DMAE 0x02
39 #define STAT_BUSY 0x08
41 #define STAT_PERR 0x01
43 // DMA: SIG_UPD71071_CH1
44 // IRQ: SIG_I8259_CHIP1 | SIG_I8259_IR0
46 void SCSI::initialize()
48 phase = PHASE_BUSFREE;
49 ctrlreg = datareg = statreg = 0;
52 void SCSI::write_io8(uint32 addr, uint32 data)
54 switch(addr & 0xffff) {
61 if((ctrlreg & CTRL_RST) && ~(data & CTRL_RST)) {
65 if(~(ctrlreg & CTRL_SEL) && (data & CTRL_SEL)) {
75 uint32 SCSI::read_io8(uint32 addr)
79 switch(addr & 0xffff) {
93 void SCSI::write_dma_io8(uint32 addr, uint32 data)
95 write_io8(0xc30, data);
98 uint32 SCSI::read_dma_io8(uint32 addr)
100 return read_io8(0xc30);