branches/saturn_cdblock/src/emu/machine/segacdblock.c
| r248535 | r248536 | |
| 215 | 215 | res = -1; |
| 216 | 216 | if(xfertype == CDDMA_INPROGRESS) |
| 217 | 217 | { |
| 218 | //if(m_ext_drdy == false) |
| 219 | // return res; |
| 220 | |
| 218 | 221 | //printf("%d %d %d %d\n",xfersect,xfersectnum,xferoffs,m_dma_size); |
| 219 | 222 | if (xfersect < xfersectnum) |
| 220 | 223 | { |
| 221 | 224 | // get next longword |
| 222 | | if(transpart->blocks[xfersectpos+xfersect] == (blockT *)NULL) |
| 223 | | { |
| 224 | | cd_drdy_cb(false); |
| 225 | | return res; |
| 226 | | } |
| 225 | //if(transpart->blocks[xfersectpos+xfersect] == (blockT *)NULL) |
| 227 | 226 | |
| 228 | 227 | res = (transpart->blocks[xfersectpos+xfersect]->data[xferoffs + 0]<<24) | |
| 229 | 228 | (transpart->blocks[xfersectpos+xfersect]->data[xferoffs + 1]<<16) | |
| r248535 | r248536 | |
| 787 | 786 | |
| 788 | 787 | void segacdblock_device::cd_cmd_end_transfer() |
| 789 | 788 | { |
| 790 | | m_TransferActive = false; |
| 791 | | m_cd_state &= ~CD_STAT_TRANS; |
| 792 | | |
| 793 | 789 | if(m_dma_size != 0) |
| 794 | 790 | { |
| 795 | 791 | m_dr[0] = m_cd_state | ((m_dma_size >> 17) & 0xff); |
| 796 | 792 | m_dr[1] = (m_dma_size>>1) & 0xffff; |
| 793 | |
| 794 | m_TransferActive = false; |
| 795 | m_cd_state &= ~CD_STAT_TRANS; |
| 797 | 796 | } |
| 798 | 797 | else |
| 799 | 798 | { |
| r248535 | r248536 | |
| 804 | 803 | m_dr[2] = 0; |
| 805 | 804 | m_dr[3] = 0; |
| 806 | 805 | |
| 807 | | if(DeleteSectorMode == true) |
| 806 | if(DeleteSectorMode == true && m_dma_size != 0) |
| 808 | 807 | { |
| 808 | m_dma_size = 0; |
| 809 | |
| 809 | 810 | if (transpart->size > 0) |
| 810 | 811 | { |
| 811 | 812 | INT32 i; |
| r248535 | r248536 | |
| 857 | 858 | else |
| 858 | 859 | set_flag(EHST); |
| 859 | 860 | |
| 860 | | m_dma_size = 0; |
| 861 | 861 | set_flag(CMOK); |
| 862 | 862 | } |
| 863 | 863 | |
| r248535 | r248536 | |
| 1915 | 1915 | printf("FAD %08x %08x %04x %d\n",m_FAD,m_FADEnd,m_hirq,p_ok); |
| 1916 | 1916 | |
| 1917 | 1917 | set_flag(CSCT); |
| 1918 | | cd_drdy_cb(true); |
| 1918 | |
| 1919 | printf("%d %d X\n",xfersect,xfersectnum); |
| 1919 | 1920 | |
| 1920 | 1921 | if(p_ok) |
| 1921 | 1922 | { |
| 1922 | 1923 | m_FAD ++; |
| 1923 | 1924 | m_FADEnd --; |
| 1924 | | set_flag(SCDQ); |
| 1925 | |
| 1926 | if (xfersect < xfersectnum) |
| 1927 | { |
| 1928 | m_ext_drdy = false; |
| 1929 | cd_drdy_cb(false); |
| 1930 | } |
| 1931 | else |
| 1932 | { |
| 1933 | m_ext_drdy = true; |
| 1934 | cd_drdy_cb(true); |
| 1935 | set_flag(SCDQ); |
| 1936 | } |
| 1925 | 1937 | |
| 1926 | 1938 | if(m_FADEnd <= 0) |
| 1927 | 1939 | { |