/*****************************************************************************/ /* */ /* _mikey.h */ /* */ /* Atari Lynx, Mikey chip register hardware structures */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ /* warranty. In no event will the authors be held liable for any damages */ /* arising from the use of this software. */ /* */ /* Permission is granted to anyone to use this software for any purpose, */ /* including commercial applications, and to alter it and redistribute it */ /* freely, subject to the following restrictions: */ /* */ /* 1. The origin of this software must not be misrepresented; you must not */ /* claim that you wrote the original software. If you use this software */ /* in a product, an acknowledgment in the product documentation would be */ /* appreciated but is not required. */ /* 2. Altered source versions must be plainly marked as such, and must not */ /* be misrepresented as being the original software. */ /* 3. This notice may not be removed or altered from any source */ /* distribution. */ /* */ /*****************************************************************************/ #ifndef __MIKEY_H #define __MIKEY_H /* timer structure */ typedef struct _mikey_timer { unsigned char reload; unsigned char control; unsigned char count; unsigned char control2; } _mikey_timer; typedef struct _mikey_all_timers { struct _mikey_timer timer[8]; } _mikey_all_timers; /* audio channel structure */ typedef struct _mikey_audio { unsigned char volume; unsigned char feedback; unsigned char dac; unsigned char shiftlo; unsigned char reload; unsigned char control; unsigned char count; unsigned char other; } _mikey_audio; /* Define a structure with the mikey register offsets */ struct __mikey { struct _mikey_timer timer0; // 0xFD00 struct _mikey_timer timer1; // 0xFD04 struct _mikey_timer timer2; // 0xFD08 struct _mikey_timer timer3; // 0xFD0C struct _mikey_timer timer4; // 0xFD10 struct _mikey_timer timer5; // 0xFD14 struct _mikey_timer timer6; // 0xFD18 struct _mikey_timer timer7; // 0xFD1C struct _mikey_audio channel_a; // 0xFD20 struct _mikey_audio channel_b; // 0xFD28 struct _mikey_audio channel_c; // 0xFD30 struct _mikey_audio channel_d; // 0xFD38 unsigned char attena; // 0xFD40 ?? not yet allocated? unsigned char attenb; // 0xFD41 | unsigned char attenc; // 0xFD42 | unsigned char attend; // 0xFD43 | unsigned char panning; // 0xFD44 | unsigned char unused0[11]; // 0xFD45 - 0xFD4F not used unsigned char mstereo; // 0xFD50 stereo control bits unsigned char unused1[47]; // 0xFD51 - 0xFD7F not used unsigned char intrst; // 0xFD80 interrupt poll 0 unsigned char intset; // 0xFD81 interrupt poll 1 unsigned char unused2[2]; // 0xFD82 - 0xFD83 not used unsigned char magrdy0; // 0xFD84 mag tape channel0 ready bit unsigned char magrdy1; // 0xFD85 mag tape channel1 ready bit unsigned char audin; // 0xFD86 audio in unsigned char sysctl1; // 0xFD87 control bits unsigned char mikeyrev; // 0xFD88 mikey hardware rev unsigned char mikeysrev; // 0xFD89 mikey software rev unsigned char iodir; // 0xFD8A parallel i/o data dir unsigned char iodat; // 0xFD8B parallel data unsigned char serctl; // 0xFD8C serial control register unsigned char serdat; // 0xFD8D serial data unsigned char unused3[2]; // 0xFD8E - 0xFD8F not used unsigned char sdoneack; // 0xFD90 suzy done acknowledge unsigned char cpusleep; // 0xFD91 cpu bus request disable unsigned char dispctl; // 0xFD92 video bus request enable, viddma unsigned char pkbkup; // 0xFD93 magic 'P' count unsigned char *scrbase; // 0xFD94 start address of video display unsigned char unused4[6]; // 0xFD96 - 0xFD9B not used unsigned char mtest0; // 0xFD9C unsigned char mtest1; // 0xFD9D unsigned char mtest2; // 0xFD9E unsigned char unused5; // 0xFD9F not used unsigned char palette[32]; // 0xFDA0 - 0xFDBF palette 32 bytes // 0xFDC0 - 0xFDFF not used }; #endif