1 // license:BSD-3-Clause
2 // copyright-holders:smf
3 /***************************************************************************
4 
5     cr589.h
6 
7     Matsushita CR589
8 
9 ***************************************************************************/
10 
11 #ifndef MAME_BUS_ATA_CR589_H
12 #define MAME_BUS_ATA_CR589_H
13 
14 #pragma once
15 
16 #include "atapicdr.h"
17 
18 class matsushita_cr589_device : public atapi_cdrom_device,
19 	public device_nvram_interface
20 {
21 public:
22 	matsushita_cr589_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
23 
24 	virtual void ExecCommand() override;
25 	virtual void WriteData( uint8_t *data, int dataLength ) override;
26 	virtual void ReadData( uint8_t *data, int dataLength ) override;
27 	// ksys573 changes discs without telling the cdrom_image_device
process_buffer()28 	virtual void process_buffer() override { atapi_hle_device::process_buffer(); }
29 
30 protected:
31 	// device-level overrides
32 	virtual void device_start() override;
33 	virtual void device_reset() override;
34 
35 	// device_nvram_interface overrides
36 	virtual void nvram_default() override;
37 	virtual void nvram_read(emu_file &file) override;
38 	virtual void nvram_write(emu_file &file) override;
39 
40 private:
41 	int download;
42 	uint8_t buffer[ 65536 ];
43 	int bufferOffset;
44 };
45 
46 // device type definition
47 DECLARE_DEVICE_TYPE(CR589, matsushita_cr589_device)
48 
49 #endif // MAME_BUS_ATA_CR589_H
50