summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/coco/coco_dwsock.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/coco/coco_dwsock.cpp')
-rw-r--r--src/devices/bus/coco/coco_dwsock.cpp33
1 files changed, 16 insertions, 17 deletions
diff --git a/src/devices/bus/coco/coco_dwsock.cpp b/src/devices/bus/coco/coco_dwsock.cpp
index 2750f266998..fb2e18a23fb 100644
--- a/src/devices/bus/coco/coco_dwsock.cpp
+++ b/src/devices/bus/coco/coco_dwsock.cpp
@@ -68,14 +68,13 @@ beckerport_device::beckerport_device(const machine_config &mconfig, const char *
: device_t(mconfig, COCO_DWSOCK, "Virtual Becker Port", tag, owner, clock, "coco_dwsock", __FILE__), m_hostname(nullptr),
m_dwconfigport(*this, DRIVEWIRE_PORT_TAG), m_dwtcpport(0)
{
- m_pSocket = nullptr;
m_head = 0;
m_rx_pending = 0;
}
beckerport_device::~beckerport_device()
{
- if (m_pSocket != nullptr)
+ if (m_pSocket)
beckerport_device::device_stop();
}
@@ -93,8 +92,8 @@ void beckerport_device::device_start(void)
osd_printf_verbose("Connecting to Drivewire server on %s:%d... ", m_hostname, m_dwtcpport);
UINT64 filesize; // unused
- file_error filerr = osd_open(chAddress, 0, &m_pSocket, &filesize);
- if (filerr != FILERR_NONE)
+ osd_file::error filerr = osd_file::open(chAddress, 0, m_pSocket, filesize);
+ if (filerr != osd_file::error::NONE)
{
osd_printf_verbose("Error: osd_open returned error %i!\n", (int) filerr);
return;
@@ -109,11 +108,10 @@ void beckerport_device::device_start(void)
void beckerport_device::device_stop(void)
{
- if (m_pSocket != nullptr)
+ if (m_pSocket)
{
printf("Closing connection to Drivewire server\n");
- osd_close(m_pSocket);
- m_pSocket = nullptr;
+ m_pSocket.reset();
}
}
@@ -135,7 +133,7 @@ READ8_MEMBER(beckerport_device::read)
{
unsigned char data = 0x5a;
- if (m_pSocket == nullptr)
+ if (!m_pSocket)
return data;
switch (offset)
@@ -144,9 +142,9 @@ READ8_MEMBER(beckerport_device::read)
if (!m_rx_pending)
{
/* Try to read from dws */
- file_error filerr = osd_read(m_pSocket, m_buf, 0, sizeof(m_buf), &m_rx_pending);
- if (filerr != FILERR_NONE && filerr != FILERR_FAILURE) // FILERR_FAILURE means no data available, so don't throw error message
- fprintf(stderr, "coco_dwsock.c: beckerport_device::read() socket read operation failed with file_error %i\n", filerr);
+ osd_file::error filerr = m_pSocket->read(m_buf, 0, sizeof(m_buf), m_rx_pending);
+ if (filerr != osd_file::error::NONE && filerr != osd_file::error::FAILURE) // osd_file::error::FAILURE means no data available, so don't throw error message
+ fprintf(stderr, "coco_dwsock.c: beckerport_device::read() socket read operation failed with osd_file::error %i\n", int(filerr));
else
m_head = 0;
}
@@ -175,10 +173,11 @@ READ8_MEMBER(beckerport_device::read)
WRITE8_MEMBER(beckerport_device::write)
{
- char d = (char)data;
- file_error filerr;
+ char d = char(data);
+ osd_file::error filerr;
+ std::uint32_t written;
- if (m_pSocket == nullptr)
+ if (!m_pSocket)
return;
switch (offset)
@@ -187,9 +186,9 @@ WRITE8_MEMBER(beckerport_device::write)
//printf("beckerport_write: error: write (0x%02x) to status register\n", d);
break;
case DWS_DATA:
- filerr = osd_write(m_pSocket, &d, 0, 1, nullptr);
- if (filerr != FILERR_NONE)
- fprintf(stderr, "coco_dwsock.c: beckerport_device::write() socket write operation failed with file_error %i\n", filerr);
+ filerr = m_pSocket->write(&d, 0, 1, written);
+ if (filerr != osd_file::error::NONE)
+ fprintf(stderr, "coco_dwsock.c: beckerport_device::write() socket write operation failed with osd_file::error %i\n", int(filerr));
//printf("beckerport_write: data write one byte (0x%02x)\n", d & 0xff);
break;
default: