summaryrefslogtreecommitdiffstatshomepage
path: root/trunk/src/emu/sound/pokey.h
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/src/emu/sound/pokey.h')
-rw-r--r--trunk/src/emu/sound/pokey.h95
1 files changed, 95 insertions, 0 deletions
diff --git a/trunk/src/emu/sound/pokey.h b/trunk/src/emu/sound/pokey.h
new file mode 100644
index 00000000000..39ac7f4bcb6
--- /dev/null
+++ b/trunk/src/emu/sound/pokey.h
@@ -0,0 +1,95 @@
+/*****************************************************************************
+ *
+ * POKEY chip emulator 4.3
+ * Copyright Nicola Salmoria and the MAME Team
+ *
+ * Based on original info found in Ron Fries' Pokey emulator,
+ * with additions by Brad Oliver, Eric Smith and Juergen Buchmueller.
+ * paddle (a/d conversion) details from the Atari 400/800 Hardware Manual.
+ * Polynome algorithms according to info supplied by Perry McFarlane.
+ *
+ * This code is subject to the MAME license, which besides other
+ * things means it is distributed as is, no warranties whatsoever.
+ * For more details read mame.txt that comes with MAME.
+ *
+ *****************************************************************************/
+
+#pragma once
+
+#ifndef __POKEY_H__
+#define __POKEY_H__
+
+#include "devlegcy.h"
+
+/* CONSTANT DEFINITIONS */
+
+/* POKEY WRITE LOGICALS */
+#define AUDF1_C 0x00
+#define AUDC1_C 0x01
+#define AUDF2_C 0x02
+#define AUDC2_C 0x03
+#define AUDF3_C 0x04
+#define AUDC3_C 0x05
+#define AUDF4_C 0x06
+#define AUDC4_C 0x07
+#define AUDCTL_C 0x08
+#define STIMER_C 0x09
+#define SKREST_C 0x0A
+#define POTGO_C 0x0B
+#define SEROUT_C 0x0D
+#define IRQEN_C 0x0E
+#define SKCTL_C 0x0F
+
+/* POKEY READ LOGICALS */
+#define POT0_C 0x00
+#define POT1_C 0x01
+#define POT2_C 0x02
+#define POT3_C 0x03
+#define POT4_C 0x04
+#define POT5_C 0x05
+#define POT6_C 0x06
+#define POT7_C 0x07
+#define ALLPOT_C 0x08
+#define KBCODE_C 0x09
+#define RANDOM_C 0x0A
+#define SERIN_C 0x0D
+#define IRQST_C 0x0E
+#define SKSTAT_C 0x0F
+
+/* exact 1.79 MHz clock freq (of the Atari 800 that is) */
+#define FREQ_17_EXACT 1789790
+
+
+/*****************************************************************************
+ * pot0_r to pot7_r:
+ * Handlers for reading the pot values. Some Atari games use
+ * ALLPOT to return dipswitch settings and other things.
+ * serin_r, serout_w, interrupt_cb:
+ * New function pointers for serial input/output and a interrupt callback.
+ *****************************************************************************/
+
+typedef struct _pokey_interface pokey_interface;
+struct _pokey_interface
+{
+ devcb_read8 pot_r[8];
+ devcb_read8 allpot_r;
+ devcb_read8 serin_r;
+ devcb_write8 serout_w;
+ void (*interrupt_cb)(device_t *device, int mask);
+};
+
+
+READ8_DEVICE_HANDLER( pokey_r );
+WRITE8_DEVICE_HANDLER( pokey_w );
+
+/* fix me: eventually this should be a single device with pokey subdevices */
+READ8_HANDLER( quad_pokey_r );
+WRITE8_HANDLER( quad_pokey_w );
+
+void pokey_serin_ready (device_t *device, int after);
+void pokey_break_w (device_t *device, int shift);
+void pokey_kbcode_w (device_t *device, int kbcode, int make);
+
+DECLARE_LEGACY_SOUND_DEVICE(POKEY, pokey);
+
+#endif /* __POKEY_H__ */