blob: 81677afc06cbcf1adb7c5994018652f28f9101f4 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
// license:BSD-3-Clause
// copyright-holders:Sandro Ronco
/****************************************************************************
psion_pack.h
****************************************************************************/
#ifndef MAME_MACHINE_PSION_PACK_H
#define MAME_MACHINE_PSION_PACK_H
#include "imagedev/memcard.h"
/***************************************************************************
TYPE DEFINITIONS
***************************************************************************/
// ======================> datapack_device
class datapack_device : public device_t,
public device_memcard_image_interface
{
public:
// construction/destruction
datapack_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual ~datapack_device();
// image-level overrides
virtual image_init_result call_load() override;
virtual void call_unload() override;
virtual image_init_result call_create(int format_type, util::option_resolution *create_args) override;
virtual bool is_reset_on_load() const noexcept override { return false; }
virtual const char *image_interface() const noexcept override { return "psion_pack"; }
virtual const char *file_extensions() const noexcept override { return "opk"; }
virtual const char *image_type_name() const noexcept override { return "datapack"; }
virtual const char *image_brief_type_name() const noexcept override { return "dpak"; }
virtual const util::option_guide &create_option_guide() const override;
// specific implementation
uint8_t data_r();
void data_w(uint8_t data);
uint8_t control_r();
void control_w(uint8_t data);
protected:
// internal helper
void update();
// device-level overrides
virtual void device_start() override;
virtual void device_config_complete() override;
// device_image_interface implementation
virtual const software_list_loader &get_software_list_loader() const override;
private:
// internal device state
uint8_t m_id = 0; //datapack ID
uint8_t m_size = 0; //size in 8k blocks
uint8_t m_data = 0; //data lines
uint8_t m_control = 0; //control lines
uint16_t m_counter = 0; //address counter
uint8_t m_page = 0; //active page (only for paged Datapack)
uint8_t m_segment = 0; //active segment (only for segmented Datapack)
};
// device type definition
DECLARE_DEVICE_TYPE(PSION_DATAPACK, datapack_device)
#endif // MAME_MACHINE_PSION_PACK_H
|