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 | { |