Whitespace cleanups, formatting, license headers

This commit is contained in:
Jasmine Iwanek
2025-07-25 17:23:42 -04:00
parent 976516fa62
commit 188b6da202
5 changed files with 340 additions and 270 deletions

View File

@@ -1,3 +1,19 @@
/*
* 86Box A hypervisor and IBM PC system emulator that specializes in
* running old operating systems and software designed for IBM
* PC systems and compatibles from 1981 through fairly recent
* system designs based on the PCI bus.
*
* This file is part of the 86Box distribution.
*
* Mitsumi CD-ROM emulation for the ISA bus.
*
* Authors: Miran Grca, <mgrca8@gmail.com>
* Cacodemon345
*
* Copyright 2022-2025 Miran Grca.
* Copyright 2025 Cacodemon345.
*/
#include <inttypes.h>
#include <stdarg.h>
#include <stdint.h>
@@ -30,7 +46,6 @@ CR-562-B is classified as Family1 in this driver, so uses the CMD1_ prefix.
#define CDROM_STATUS_DOUBLE_SPEED 0x02
#define CDROM_STATUS_READY 0x01
// Status returned from device
#define STAT_READY 0x01
#define STAT_PLAY 0x08
@@ -38,7 +53,6 @@ CR-562-B is classified as Family1 in this driver, so uses the CMD1_ prefix.
#define STAT_DISK 0x40
#define STAT_TRAY 0x80 // Seems Correct
#define CMD1_PAUSERESUME 0x0D
#define CMD1_RESET 0x0a
#define CMD1_LOCK_CTL 0x0c
@@ -80,12 +94,14 @@ typedef struct mke_t {
uint8_t media_selected; // temporary hack
Fifo8 data_fifo, info_fifo;
Fifo8 data_fifo;
Fifo8 info_fifo;
Fifo8 errors_fifo;
cdrom_t *cdrom_dev;
uint32_t sector_type, sector_flags;
uint32_t sector_type;
uint32_t sector_flags;
uint32_t unit_attention;
@@ -95,14 +111,24 @@ mke_t mke;
#define mke_log(x, ...)
#define CHECK_READY() { if (mke.cdrom_dev->cd_status == CD_STATUS_EMPTY) { 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];
void mke_get_subq(cdrom_t *dev,uint8_t *b) {
//dev->ops->get_subchannel(dev, dev->seek_pos, &subc);
//cdrom_get_current_subchannel(dev, &subc);
//cdrom_get_current_subcodeq(dev, b);
void
mke_get_subq(cdrom_t *dev, uint8_t *b)
{
#if 0
dev->ops->get_subchannel(dev, dev->seek_pos, &subc);
cdrom_get_current_subchannel(dev, &subc);
cdrom_get_current_subcodeq(dev, b);
#endif
cdrom_get_current_subcodeq(dev, temp_buf);
b[0] = 0x80; //?
b[1] = ((temp_buf[0] & 0xf) << 4) | ((temp_buf[0] & 0xf0) >> 4);
@@ -117,7 +143,9 @@ void mke_get_subq(cdrom_t *dev,uint8_t *b) {
b[10] = 0; //??
}
uint8_t mke_read_toc(cdrom_t *dev, unsigned char *b, uint8_t track) {
uint8_t
mke_read_toc(cdrom_t *dev, unsigned char *b, uint8_t track)
{
track_info_t ti;
int first_track;
int last_track;
@@ -125,7 +153,8 @@ uint8_t mke_read_toc(cdrom_t *dev, unsigned char *b, uint8_t track) {
cdrom_read_toc(dev, temp_buf, CD_TOC_NORMAL, 0, 0, 65536);
first_track = temp_buf[2];
last_track = temp_buf[3];
if(track > last_track) return 0; //should we allow +1 here?
if (track > last_track)
return 0; // should we allow +1 here?
dev->ops->get_track_info(dev, track, 0, &ti);
b[0] = 0x0;
b[1] = ti.attr;
@@ -136,9 +165,11 @@ uint8_t mke_read_toc(cdrom_t *dev, unsigned char *b, uint8_t track) {
b[6] = ti.f;
b[7] = 0;
return 1;
}
uint8_t mke_disc_info(cdrom_t *dev, unsigned char *b) {
uint8_t
mke_disc_info(cdrom_t *dev, unsigned char *b)
{
track_info_t ti;
int first_track;
int last_track;
@@ -153,10 +184,11 @@ uint8_t mke_disc_info(cdrom_t *dev, unsigned char *b) {
b[4] = ti.s;
b[5] = ti.f;
return 1;
}
uint8_t mke_disc_capacity(cdrom_t *dev, unsigned char *b) {
uint8_t
mke_disc_capacity(cdrom_t *dev, unsigned char *b)
{
track_info_t ti;
int first_track;
int last_track;
@@ -171,16 +203,20 @@ uint8_t mke_disc_capacity(cdrom_t *dev, unsigned char *b) {
b[3] = 0x08;
b[4] = 0x00;
return 1;
}
uint8_t mke_cdrom_status(cdrom_t *dev, mke_t* mke) {
uint8_t
mke_cdrom_status(cdrom_t *dev, mke_t *mke)
{
uint8_t status = 0;
status |= 2; // this bit seems to always be set?
// bit 4 never set?
if (dev->cd_status == CD_STATUS_PLAYING) status |= STAT_PLAY;
if (dev->cd_status == CD_STATUS_PAUSED) status |= STAT_PLAY;
if (fifo8_num_used(&mke->errors_fifo)) status |= 0x10;
if (dev->cd_status == CD_STATUS_PLAYING)
status |= STAT_PLAY;
if (dev->cd_status == CD_STATUS_PAUSED)
status |= STAT_PLAY;
if (fifo8_num_used(&mke->errors_fifo))
status |= 0x10;
status |= 0x20; // always set?
status |= STAT_TRAY;
if (mke->cdrom_dev->cd_status != CD_STATUS_EMPTY) {
@@ -192,7 +228,10 @@ uint8_t mke_cdrom_status(cdrom_t *dev, mke_t* mke) {
}
uint8_t ver[10] = "CR-5630.75";
void MKE_COMMAND(uint8_t value) {
void
mke_command(uint8_t value)
{
uint16_t i, len;
uint8_t x[12]; // this is wasteful handling of buffers for compatibility, but will optimize later.
subchannel_t subc;
@@ -216,20 +255,23 @@ void MKE_COMMAND(uint8_t value) {
if (!mke.command_buffer_pending && mke.command_buffer[0]) {
mke.command_buffer_pending = 7;
switch (mke.command_buffer[0]) {
case 06: {
case 06:
{
fifo8_reset(&mke.info_fifo);
cdrom_stop(mke.cdrom_dev);
cdrom_eject(mke.cdrom_dev->id);
fifo8_push(&mke.info_fifo, mke_cdrom_status(mke.cdrom_dev, &mke));
break;
}
case 07: {
case 07:
{
fifo8_reset(&mke.info_fifo);
cdrom_reload(mke.cdrom_dev->id);
fifo8_push(&mke.info_fifo, mke_cdrom_status(mke.cdrom_dev, &mke));
break;
}
case CMD1_READ: {
case CMD1_READ:
{
// cdrom_readsector_raw(mke.cdrom_dev, )
uint32_t count = mke.command_buffer[6];
uint8_t *buf = mke.cdbuffer;
@@ -260,11 +302,11 @@ void MKE_COMMAND(uint8_t value) {
fifo8_reset(&mke.info_fifo);
// fifo8_push_all(&cdrom.info_fifo, x, 11);
fifo8_push_all(&mke.info_fifo, x, 11);
/*
#if 0
for (i=0; i < 11; i++) {
cdrom_fifo_write(&cdrom.info_fifo,x[i]);
}
*/
#endif
fifo8_push(&mke.info_fifo, mke_cdrom_status(mke.cdrom_dev, &mke));
break;
case CMD1_SETMODE: // Returns 1
@@ -300,34 +342,34 @@ void MKE_COMMAND(uint8_t value) {
CHECK_READY();
mke_disc_info(mke.cdrom_dev, (uint8_t *) &x);
fifo8_push_all(&mke.info_fifo, x, 6);
/*
#if 0
for (i=0; i<6; i++) {
mke_log("%02x ",x[i]);
cdrom_fifo_write(&cdrom.info_fifo,x[i]);
}
mke_log("\n");
*/
#endif
fifo8_push(&mke.info_fifo, mke_cdrom_status(mke.cdrom_dev, &mke));
break;
case CMD1_READTOC:
CHECK_READY();
fifo8_reset(&mke.info_fifo);
/*
#if 0
mke_log("READ TOC:");
for (i=0; i<6; i++) {
mke_log("%02x ",mke.command_buffer[i+1]);
}
mke_log(" | ");
*/
#endif
mke_read_toc(mke.cdrom_dev, (uint8_t *) &x, mke.command_buffer[2]);
fifo8_push_all(&mke.info_fifo, x, 8);
/*
#if 0
for (i=0; i<8; i++) {
mke_log("%02x ",x[i]);
cdrom_fifo_write(&cdrom.info_fifo,x[i]);
}
*/
/* mke_log("\n"); */
mke_log("\n");
#endif
fifo8_push(&mke.info_fifo, mke_cdrom_status(mke.cdrom_dev, &mke));
break;
case CMD1_PLAY_MSF:
@@ -338,14 +380,16 @@ void MKE_COMMAND(uint8_t value) {
mke_log("%02x ", mke.command_buffer[i + 1]);
}
mke_log("\n");
//cdrom_audio_playmsf(&cdrom,
// mke.command_buffer[1],
// mke.command_buffer[2],
// mke.command_buffer[3],
// mke.command_buffer[4],
// mke.command_buffer[5],
// mke.command_buffer[6]
//);
#if 0
cdrom_audio_playmsf(&cdrom,
mke.command_buffer[1],
mke.command_buffer[2],
mke.command_buffer[3],
mke.command_buffer[4],
mke.command_buffer[5],
mke.command_buffer[6]
);
#endif
{
int msf = 1;
int pos = (mke.command_buffer[1] << 16) | (mke.command_buffer[2] << 8) | mke.command_buffer[3];
@@ -424,8 +468,9 @@ void MKE_COMMAND(uint8_t value) {
}
}
void MKE_WRITE(uint16_t address, uint8_t value, void* priv) {
void
mke_write(uint16_t address, uint8_t value, void *priv)
{
pclog("MKEWRITE: 0x%X, 0x%02X\n", address & 0xf, value);
if (mke.enable_register && ((address & 0xF) != 3)) {
// mke_log("Ignore Write Unit %u\n",mke.enable_register);
@@ -434,7 +479,7 @@ void MKE_WRITE(uint16_t address, uint8_t value, void* priv) {
// mke_log("MKE WRITE: %02x => %03x\n",value,address);
switch (address & 0xF) {
case 0:
MKE_COMMAND(value);
mke_command(value);
break;
case 1:
mke.data_select = value;
@@ -448,7 +493,9 @@ 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;
if (mke.enable_register) {
// pclog("Ignore Read Unit %u\n",mke.enable_register);
@@ -475,9 +522,12 @@ uint8_t MKE_READ(uint16_t address, void* priv) {
*/
x = 0xFF;
// if(cdrom.media_changed) x ^= 1;
if(fifo8_num_used(&mke.data_fifo)) x ^= 2;//DATA FIFO
if(fifo8_num_used(&mke.info_fifo)) x ^= 4;//STATUS FIFO
if(fifo8_num_used(&mke.errors_fifo)) x ^=8;
if (fifo8_num_used(&mke.data_fifo))
x ^= 2; // DATA FIFO
if (fifo8_num_used(&mke.info_fifo))
x ^= 4; // STATUS FIFO
if (fifo8_num_used(&mke.errors_fifo))
x ^= 8;
return x;
break;
case 2: // Data
@@ -493,7 +543,8 @@ uint8_t MKE_READ(uint16_t address, void* priv) {
return 0xff;
}
void mke_close(void* priv)
void
mke_close(void *priv)
{
fifo8_destroy(&mke.info_fifo);
fifo8_destroy(&mke.data_fifo);
@@ -520,7 +571,8 @@ mke_cdrom_insert(void *priv)
}
}
void* mke_init(const device_t* info)
void *
mke_init(const device_t *info)
{
cdrom_t *dev;
memset(&mke, 0, sizeof(mke_t));
@@ -551,7 +603,7 @@ void* mke_init(const device_t* info)
dev->cached_sector = -1;
dev->sector_size = 2048;
io_sethandler(0x250, 16, MKE_READ, NULL, NULL, MKE_WRITE, NULL, NULL, &mke);
io_sethandler(0x250, 16, mke_read, NULL, NULL, mke_write, NULL, NULL, &mke);
return &mke;
}

View File

@@ -1,6 +1,23 @@
/*
* 86Box A hypervisor and IBM PC system emulator that specializes in
* running old operating systems and software designed for IBM
* PC systems and compatibles from 1981 through fairly recent
* system designs based on the PCI bus.
*
* This file is part of the 86Box distribution.
*
* Panasonic/MKE CD-ROM emulation for the ISA bus.
*
* Authors: Miran Grca, <mgrca8@gmail.com>
* Cacodemon345
*
* Copyright 2022-2025 Miran Grca.
* Copyright 2025 Cacodemon345.
*/
#ifndef CDROM_MKE_H
#define CDROM_MKE_H
extern const device_t mke_cdrom_device;
#endif /*CDROM_MITSUMI_H*/
#endif /*CDROM_MKE_H*/

View File

@@ -62,7 +62,8 @@ private:
uint64_t scsi_tracking[32] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
bool mitsumi_tracking, mke_tracking;
bool mitsumi_tracking;
bool mke_tracking;
};
#endif // QT_SETTINGS_BUS_TRACKING_HPP