]> git.sur5r.net Git - cc65/blob - include/_mikey.h
Atari: add support for BW-DOS. Initially contributed by Daniel Serpell.
[cc65] / include / _mikey.h
1 /*****************************************************************************/
2 /*                                                                           */
3 /*                                _mikey.h                                   */
4 /*                                                                           */
5 /* Atari Lynx, Mikey chip register hardware structures                       */
6 /*                                                                           */
7 /*                                                                           */
8 /* This software is provided 'as-is', without any expressed or implied       */
9 /* warranty.  In no event will the authors be held liable for any damages    */
10 /* arising from the use of this software.                                    */
11 /*                                                                           */
12 /* Permission is granted to anyone to use this software for any purpose,     */
13 /* including commercial applications, and to alter it and redistribute it    */
14 /* freely, subject to the following restrictions:                            */
15 /*                                                                           */
16 /* 1. The origin of this software must not be misrepresented; you must not   */
17 /*    claim that you wrote the original software. If you use this software   */
18 /*    in a product, an acknowledgment in the product documentation would be  */
19 /*    appreciated but is not required.                                       */
20 /* 2. Altered source versions must be plainly marked as such, and must not   */
21 /*    be misrepresented as being the original software.                      */
22 /* 3. This notice may not be removed or altered from any source              */
23 /*    distribution.                                                          */
24 /*                                                                           */
25 /*****************************************************************************/
26
27 #ifndef __MIKEY_H
28 #define __MIKEY_H
29
30 /* timer structure */
31 typedef struct _mikey_timer {
32   unsigned char reload;
33   unsigned char control;
34   unsigned char count;
35   unsigned char control2;
36 } _mikey_timer;
37
38 typedef struct _mikey_all_timers {
39   struct _mikey_timer timer[8];
40 } _mikey_all_timers;
41
42 /* audio channel structure */
43 typedef struct _mikey_audio {
44   unsigned char volume;
45   unsigned char feedback;
46   unsigned char dac;
47   unsigned char shiftlo;
48   unsigned char reload;
49   unsigned char control;
50   unsigned char count;
51   unsigned char other;
52 } _mikey_audio;
53
54 /* Define a structure with the mikey register offsets */
55 struct __mikey {
56   struct _mikey_timer timer0;       // 0xFD00
57   struct _mikey_timer timer1;       // 0xFD04
58   struct _mikey_timer timer2;       // 0xFD08
59   struct _mikey_timer timer3;       // 0xFD0C
60   struct _mikey_timer timer4;       // 0xFD10
61   struct _mikey_timer timer5;       // 0xFD14
62   struct _mikey_timer timer6;       // 0xFD18
63   struct _mikey_timer timer7;       // 0xFD1C
64   struct _mikey_audio channel_a;    // 0xFD20
65   struct _mikey_audio channel_b;    // 0xFD28
66   struct _mikey_audio channel_c;    // 0xFD30
67   struct _mikey_audio channel_d;    // 0xFD38
68   unsigned char     attena;         // 0xFD40  ?? not yet allocated?
69   unsigned char     attenb;         // 0xFD41      |
70   unsigned char     attenc;         // 0xFD42      |
71   unsigned char     attend;         // 0xFD43      |
72   unsigned char     panning;        // 0xFD44      |
73   unsigned char     unused0[11];    // 0xFD45 - 0xFD4F  not used
74   unsigned char     mstereo;        // 0xFD50  stereo control bits
75   unsigned char     unused1[47];    // 0xFD51 - 0xFD7F  not used
76   unsigned char     intrst;         // 0xFD80  interrupt poll 0
77   unsigned char     intset;         // 0xFD81  interrupt poll 1
78   unsigned char     unused2[2];     // 0xFD82 - 0xFD83  not used
79   unsigned char     magrdy0;        // 0xFD84  mag tape channel0 ready bit
80   unsigned char     magrdy1;        // 0xFD85  mag tape channel1 ready bit
81   unsigned char     audin;          // 0xFD86  audio in
82   unsigned char     sysctl1;        // 0xFD87  control bits
83   unsigned char     mikeyrev;       // 0xFD88  mikey hardware rev
84   unsigned char     mikeysrev;      // 0xFD89  mikey software rev
85   unsigned char     iodir;          // 0xFD8A  parallel i/o data dir
86   unsigned char     iodat;          // 0xFD8B  parallel data
87   unsigned char     serctl;         // 0xFD8C  serial control register
88   unsigned char     serdat;         // 0xFD8D  serial data
89   unsigned char     unused3[2];     // 0xFD8E - 0xFD8F  not used
90   unsigned char     sdoneack;       // 0xFD90  suzy done acknowledge
91   unsigned char     cpusleep;       // 0xFD91  cpu bus request disable
92   unsigned char     dispctl;        // 0xFD92  video bus request enable, viddma
93   unsigned char     pkbkup;         // 0xFD93  magic 'P' count
94   unsigned char     *scrbase;       // 0xFD94  start address of video display
95   unsigned char     unused4[6];     // 0xFD96 - 0xFD9B  not used
96   unsigned char     mtest0;         // 0xFD9C
97   unsigned char     mtest1;         // 0xFD9D
98   unsigned char     mtest2;         // 0xFD9E
99   unsigned char     unused5;        // 0xFD9F  not used
100   unsigned char     palette[32];    // 0xFDA0 - 0xFDBF  palette 32 bytes
101                                     // 0xFDC0 - 0xFDFF  not used
102 };
103
104
105 #endif
106