]> git.sur5r.net Git - cc65/blobdiff - include/supervision.h
Adds test code for the Atari (xex) linker file format.
[cc65] / include / supervision.h
index 85748e0a2948dea03fe64426f152625f1f5581eb..cce03791066f842e7b3bbf1d3b520b5d3066ec75 100644 (file)
@@ -2,7 +2,7 @@
 /*                                                                           */
 /*                               supervision.h                               */
 /*                                                                           */
-/*                    Supervision specific definitions                      */
+/*                     Supervision specific definitions                      */
 /*                                                                           */
 /*                                                                           */
 /*                                                                           */
 /*                                                                           */
 /* 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.                                   */
-/*                                                                          */
+/* 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:                           */
-/*                                                                          */
+/* 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.                                         */
+/*    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.                                          */
 /*                                                                           */
 /*****************************************************************************/
 
@@ -43,7 +43,7 @@
 
 
 /*****************************************************************************/
-/*                                  Data                                    */
+/*                                   Data                                    */
 /*****************************************************************************/
 
 
@@ -54,28 +54,28 @@ struct __sv_lcd {
     unsigned char       xpos;
     unsigned char       ypos;
 };
-#define SV_LCD  ((struct __sv_lcd*)0x2000)
+#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)
+#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)
+#define SV_NOISE (*(struct __sv_noise*)0x2028)
 
 struct __io_port {
     unsigned char       in;
     unsigned char       out;
 };
-#define IO_PORT  ((struct __io_port*)(0x2021)
+#define IO_PORT  (*(struct __io_port*)0x2021)
 
 struct __sv_dma {
     unsigned            start;
@@ -83,14 +83,14 @@ struct __sv_dma {
     unsigned char       control;
     unsigned char       on;
 };
-#define SV_DMA   ((struct __sv_dma*)0x2018)
+#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)
+        ((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)
@@ -98,16 +98,40 @@ struct __sv_dma {
 
 
 /* Counters incremented asynchronously!
- * If you want more complex, copy the crt0.s file from the libsrc/supervision
- * directory and code them yourself (in assembler)
- */
+** 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
 
-/* End of supervision.h */
-#endif
+#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