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 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
|
/*****************************************************************************/
/* */
/* supervision.h */
/* */
/* Supervision specific definitions */
/* */
/* */
/* */
/* 2003 Peter Trauner (trap@utanet.at) */
/* */
/* */
/* 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 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's documentation, */
/* would be appreciated, but is not required. */
/* 2. Alterred source versions must be marked plainly as such, */
/* and must not be misrepresented as being the original software. */
/* 3. This notice may not be removed or alterred */
/* from any source distribution. */
/* */
/*****************************************************************************/
#ifndef _SUPERVISION_H
#define _SUPERVISION_H
/* Check for errors */
#if !defined(__SUPERVISION__)
# error This module may only be used when compiling for the Supervision!
#endif
/*****************************************************************************/
/* Data */
/*****************************************************************************/
struct __sv_lcd {
unsigned char width;
unsigned char height;
unsigned char xpos;
unsigned char ypos;
};
#define SV_LCD (*(struct __sv_lcd*)0x2000)
struct __sv_tone {
unsigned delay;
unsigned char control;
unsigned char timer;
};
#define SV_RIGHT (*(struct __sv_tone*)0x2010)
#define SV_LEFT (*(struct __sv_tone*)0x2014)
struct __sv_noise {
unsigned char volume; /* and frequency */
unsigned char timer;
unsigned char control;
};
#define SV_NOISE (*(struct __sv_noise*)0x2028)
struct __io_port {
unsigned char in;
unsigned char out;
};
#define IO_PORT (*(struct __io_port*)0x2021)
struct __sv_dma {
unsigned start;
unsigned char size;
unsigned char control;
unsigned char on;
};
#define SV_DMA (*(struct __sv_dma*)0x2018)
#define SV_CONTROL (*(unsigned char*)0x2020)
#define SV_BANK (*(unsigned char*)0x2026)
#define SV_BANK_COMBINE(nmi,irq_timer,irq_dma,lcd_on, timer_prescale, bank) \
((nmi)?1:0)|((irq_timer)?2:0)|((irq_dma)?4:0)|((lcd_on)?8:0) \
|((timer_prescale)?0x10:0)|((bank)<<5)
#define SV_VIDEO ((unsigned char*)0x4000)
#define SV_TIMER_COUNT (*(unsigned char*)0x2023)
/* Counters incremented asynchronously!
** If you want more complex, copy the crt0.s file from the libsrc/supervision
** directory and code them yourself (in assembler)
*/
extern unsigned char sv_nmi_counter;
extern unsigned char sv_timer_irq_counter;
extern unsigned char sv_timer_dma_counter;
/* Masks for joy_read */
#define JOY_UP_MASK 0x08
#define JOY_DOWN_MASK 0x04
#define JOY_LEFT_MASK 0x02
#define JOY_RIGHT_MASK 0x01
#define JOY_BTN_1_MASK 0x20
#define JOY_BTN_2_MASK 0x10
#define JOY_BTN_3_MASK 0x80
#define JOY_BTN_4_MASK 0x40
#define JOY_BTN_A_MASK JOY_BTN_1_MASK
#define JOY_BTN_B_MASk JOY_BTN_2_MASK
#define JOY_START_MASK JOY_BTN_3_MASK
#define JOY_SELECT_MASK JOY_BTN_4_MASK
#define JOY_BTN_A(v) ((v) & JOY_BTN_A_MASK)
#define JOY_BTN_B(v) ((v) & JOY_BTN_B_MASK)
#define JOY_START(v) ((v) & JOY_START_MASK)
#define JOY_SELECT(v) ((v) & JOY_SELECT_MASK)
/* No support for dynamically loadable drivers */
#define DYN_DRV 0
/* The addresses of the static drivers */
extern void supervision_stdjoy_joy[]; /* Referred to by joy_static_stddrv[] */
/* End of supervision.h */
#endif
|