Fix some mistakes
This commit is contained in:
@@ -95,7 +95,7 @@ mke_t mke;
|
|||||||
|
|
||||||
#define mke_log(x, ...)
|
#define mke_log(x, ...)
|
||||||
|
|
||||||
#define CHECK_READY() { if (mke.cdrom_dev->image_path[0] == 0) { fifo8_push(&mke.errors_fifo, 0x03); return; } }
|
#define CHECK_READY() { if (mke.cdrom_dev->cd_status == CD_STATUS_EMPTY) { fifo8_push(&mke.errors_fifo, 0x03); return; } }
|
||||||
|
|
||||||
static uint8_t temp_buf[65536];
|
static uint8_t temp_buf[65536];
|
||||||
|
|
||||||
@@ -178,12 +178,12 @@ uint8_t mke_cdrom_status(cdrom_t *dev, mke_t* mke) {
|
|||||||
uint8_t status = 0;
|
uint8_t status = 0;
|
||||||
status |= 2;//this bit seems to always be set?
|
status |= 2;//this bit seems to always be set?
|
||||||
//bit 4 never set?
|
//bit 4 never set?
|
||||||
if(dev->cd_status == CD_STATUS_PLAYING) status |= STAT_PLAY;
|
if (dev->cd_status == CD_STATUS_PLAYING) status |= STAT_PLAY;
|
||||||
if(dev->cd_status == CD_STATUS_PAUSED) status |= STAT_PLAY;
|
if (dev->cd_status == CD_STATUS_PAUSED) status |= STAT_PLAY;
|
||||||
if(fifo8_num_used(&mke->errors_fifo)) status |= 0x10;
|
if (fifo8_num_used(&mke->errors_fifo)) status |= 0x10;
|
||||||
status |= 0x20;//always set?
|
status |= 0x20;//always set?
|
||||||
status |= STAT_TRAY;
|
status |= STAT_TRAY;
|
||||||
if(dev->image_path[0] != 0) {
|
if (mke->cdrom_dev->cd_status != CD_STATUS_EMPTY) {
|
||||||
status |= STAT_DISK;
|
status |= STAT_DISK;
|
||||||
status |= STAT_READY;
|
status |= STAT_READY;
|
||||||
}
|
}
|
||||||
@@ -191,6 +191,7 @@ uint8_t mke_cdrom_status(cdrom_t *dev, mke_t* mke) {
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint8_t ver[10] = "CR-5630.75";
|
||||||
void MKE_COMMAND(uint8_t value) {
|
void MKE_COMMAND(uint8_t value) {
|
||||||
uint16_t i,len;
|
uint16_t i,len;
|
||||||
uint8_t x[12];//this is wasteful handling of buffers for compatibility, but will optimize later.
|
uint8_t x[12];//this is wasteful handling of buffers for compatibility, but will optimize later.
|
||||||
@@ -213,6 +214,7 @@ void MKE_COMMAND(uint8_t value) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!mke.command_buffer_pending && mke.command_buffer[0]) {
|
if (!mke.command_buffer_pending && mke.command_buffer[0]) {
|
||||||
|
mke.command_buffer_pending=7;
|
||||||
switch (mke.command_buffer[0]) {
|
switch (mke.command_buffer[0]) {
|
||||||
case 06: {
|
case 06: {
|
||||||
fifo8_reset(&mke.info_fifo);
|
fifo8_reset(&mke.info_fifo);
|
||||||
@@ -405,8 +407,7 @@ void MKE_COMMAND(uint8_t value) {
|
|||||||
SB2CD Expects 12 bytes, but drive only returns 11.
|
SB2CD Expects 12 bytes, but drive only returns 11.
|
||||||
*/
|
*/
|
||||||
fifo8_reset(&mke.info_fifo);
|
fifo8_reset(&mke.info_fifo);
|
||||||
mke_log("CMD: READ VER\n");
|
//pclog("CMD: READ VER\n");
|
||||||
uint8_t ver[10] = "CR-5631.02";
|
|
||||||
fifo8_push_all(&mke.info_fifo, ver, 10);
|
fifo8_push_all(&mke.info_fifo, ver, 10);
|
||||||
fifo8_push(&mke.info_fifo, mke_cdrom_status(mke.cdrom_dev, &mke));
|
fifo8_push(&mke.info_fifo, mke_cdrom_status(mke.cdrom_dev, &mke));
|
||||||
break;
|
break;
|
||||||
@@ -450,18 +451,20 @@ void MKE_WRITE(uint16_t address, uint8_t value, void* priv) {
|
|||||||
uint8_t MKE_READ(uint16_t address, void* priv) {
|
uint8_t MKE_READ(uint16_t address, void* priv) {
|
||||||
uint8_t x;
|
uint8_t x;
|
||||||
if(mke.enable_register ) {
|
if(mke.enable_register ) {
|
||||||
pclog("Ignore Read Unit %u\n",mke.enable_register);
|
//pclog("Ignore Read Unit %u\n",mke.enable_register);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
pclog("MKEREAD: 0x%X\n", address & 0xf);
|
//pclog("MKEREAD: 0x%X\n", address & 0xf);
|
||||||
switch(address & 0xF) {
|
switch(address & 0xF) {
|
||||||
case 0://Info
|
case 0://Info
|
||||||
if(mke.data_select) {
|
if(mke.data_select) {
|
||||||
return fifo8_pop(&mke.data_fifo); //cdrom_fifo_read(&cdrom.data_fifo);
|
x = fifo8_num_used(&mke.data_fifo) ? fifo8_pop(&mke.data_fifo) : 0; //cdrom_fifo_read(&cdrom.data_fifo);
|
||||||
} else {
|
} else {
|
||||||
return fifo8_pop(&mke.info_fifo);
|
x = fifo8_num_used(&mke.info_fifo) ? fifo8_pop(&mke.info_fifo) : 0;
|
||||||
//return cdrom_fifo_read(&cdrom.info_fifo);
|
//return cdrom_fifo_read(&cdrom.info_fifo);
|
||||||
}
|
}
|
||||||
|
//pclog("Read FIFO 0x%X, %d\n", x, mke.data_select);
|
||||||
|
return x;
|
||||||
break;
|
break;
|
||||||
case 1://Status
|
case 1://Status
|
||||||
/*
|
/*
|
||||||
@@ -506,17 +509,14 @@ mke_cdrom_insert(void *priv)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
if (dev->cdrom_dev->ops == NULL) {
|
if (dev->cdrom_dev->ops == NULL) {
|
||||||
dev->unit_attention = 0;
|
//dev->unit_attention = 0;
|
||||||
dev->cdrom_dev->cd_status = CD_STATUS_EMPTY;
|
dev->cdrom_dev->cd_status = CD_STATUS_EMPTY;
|
||||||
fifo8_push(&dev->errors_fifo, 0x11);
|
fifo8_push(&dev->errors_fifo, 0x11);
|
||||||
} else if (dev->cdrom_dev->cd_status & CD_STATUS_TRANSITION) {
|
} else {
|
||||||
dev->unit_attention = 1;
|
//dev->unit_attention = 1;
|
||||||
/* Turn off the medium changed status. */
|
/* Turn off the medium changed status. */
|
||||||
dev->cdrom_dev->cd_status &= ~CD_STATUS_TRANSITION;
|
dev->cdrom_dev->cd_status &= ~CD_STATUS_TRANSITION;
|
||||||
fifo8_push(&dev->errors_fifo, 0x11);
|
fifo8_push(&dev->errors_fifo, 0x11);
|
||||||
} else {
|
|
||||||
dev->unit_attention = 0;
|
|
||||||
dev->cdrom_dev->cd_status |= CD_STATUS_TRANSITION;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -538,6 +538,9 @@ void* mke_init(const device_t* info)
|
|||||||
fifo8_create(&mke.info_fifo, 128);
|
fifo8_create(&mke.info_fifo, 128);
|
||||||
fifo8_create(&mke.data_fifo, 624240);
|
fifo8_create(&mke.data_fifo, 624240);
|
||||||
fifo8_create(&mke.errors_fifo, 8);
|
fifo8_create(&mke.errors_fifo, 8);
|
||||||
|
fifo8_reset(&mke.info_fifo);
|
||||||
|
fifo8_reset(&mke.data_fifo);
|
||||||
|
fifo8_reset(&mke.errors_fifo);
|
||||||
mke.cdrom_dev = dev;
|
mke.cdrom_dev = dev;
|
||||||
mke.command_buffer_pending = 7;
|
mke.command_buffer_pending = 7;
|
||||||
mke.sector_type = 0x08 | (1 << 4);
|
mke.sector_type = 0x08 | (1 << 4);
|
||||||
|
|||||||
Reference in New Issue
Block a user