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