]> git.sur5r.net Git - cc65/blobdiff - include/atari.h
Added SegDef struct and a few functions to the segdefs module
[cc65] / include / atari.h
index 365b69ff371a5e6337d315d1f2a247dda1feff0a..0840468fd0d56b8e4230d6b17338d8505eef414f 100644 (file)
@@ -1,16 +1,50 @@
-/*
- * atari.h
- *
- * Contributing authors:
- *     Mark Keates
- *     Freddy Offenga
- *     Christian Groessler
- */
+/*****************************************************************************/
+/*                                                                           */
+/*                                atari.h                                   */
+/*                                                                           */
+/*                     Atari system specific definitions                    */
+/*                                                                           */
+/*                                                                           */
+/*                                                                           */
+/* (C) 2000 Mark Keates <markk@dendrite.co.uk>                               */
+/*          Freddy Offenga <taf_offenga@yahoo.com>                           */
+/*          Christian Groessler <cpg@aladdin.de>                             */
+/*                                                                           */
+/*                                                                           */
+/* 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 _ATARI_H
 #define _ATARI_H
 
-/* Characters codes */
+
+
+/* Check for errors */
+#if !defined(__ATARI__)
+#  error This module may only be used when compiling for the Atari!
+#endif
+
+
+
+/* Character codes */
 #define CH_DEL                 0xFE
 #define CH_ESC                 0x1B
 #define CH_CURS_UP     28
@@ -19,7 +53,7 @@
 #define CH_CURS_RIGHT   31
 
 #define CH_TAB          0x7F   /* tabulator */
-#define CH_EOL          0x0B   /* end-of-line marker */
+#define CH_EOL          0x9B   /* end-of-line marker */
 #define CH_CLR          0x7D   /* clear screen */
 #define CH_BEL          0xFD   /* bell */
 #define CH_RUBOUT       0x7E   /* back space (rubout) */
 #define HUE_GREEN       12
 #define HUE_YELLOWGREEN 13
 #define HUE_YELLOW      14
-#define HUE_YELLOWRED   15
+#define HUE_YELLOWRED   15                                       
 
-/* Color defines, similar to c64 colors */
+/* Color defines, similar to c64 colors (untested) */
 #define COLOR_BLACK            _gtia_mkcolor(HUE_GREY,0)
 #define COLOR_WHITE            _gtia_mkcolor(HUE_GREY,7)
 #define COLOR_RED              _gtia_mkcolor(HUE_REDORANGE,1)
 /* color register functions */
 extern void __fastcall__ setcolor     (unsigned char color_reg, unsigned char hue, unsigned char luminace);
 extern void __fastcall__ setcolor_low (unsigned char color_reg, unsigned char color_value);
-extern unsigned char  __fastcall__ getcolor (unsigned char color_reg);
+extern unsigned char __fastcall__ getcolor (unsigned char color_reg);
 
 /* other screen functions */
+extern int  __fastcall__ graphics(unsigned char mode); /* mode value same as in BASIC */
 extern void __fastcall__ scroll (signed char numlines);
                                           /* numlines > 0  scrolls up */
                                           /* numlines < 0  scrolls down */
 
 /* misc. functions */
-extern void save_vecs(void);   /* save system vectors */
-extern void rest_vecs(void);   /* restore system vectors */
-
+extern void save_vecs(void);           /* save system vectors */
+extern void rest_vecs(void);           /* restore system vectors */
+extern unsigned char get_ostype(void); /* get ROM version */
+extern unsigned char get_tv(void);     /* get TV system */
+
+/* get_ostype return value defines (for explanation, see ostype.s) */
+/* masks */
+#define AT_OS_TYPE_MAIN  7
+#define AT_OS_TYPE_MINOR (7 << 3)
+/* AT_OS_TYPE_MAIN values */
+#define AT_OS_UNKNOWN  0
+#define AT_OS_400800   1
+#define AT_OS_1200XL   2
+#define AT_OS_XLXE     3
+/* AS_OS_TYPE_MINOR values */
+/* for 400/800 remember this are the ROM versions */
+/* to check whether the hw is PAL or NTSC, use get_tv() */
+#define AT_OS_400800PAL_A  1
+#define AT_OS_400800PAL_B  2
+#define AT_OS_400800NTSC_A 1
+#define AT_OS_400800NTSC_B 2
+#define AT_OS_1200_10  1
+#define AT_OS_1200_11  2
+#define AT_OS_XLXE_1   1
+#define AT_OS_XLXE_2   2
+#define AT_OS_XLXE_3   3
+#define AT_OS_XLXE_4   4
+
+/* get_tv return values */
+#define AT_NTSC     0
+#define AT_PAL      1
 
 /* Define hardware */
 #include <_gtia.h>
-#define GTIA (*(struct __gtia_write*)0xD000)
-#define GTIA (*(struct __gtia_read*)0xD000)
+#define GTIA_READ  (*(struct __gtia_read*)0xD000)
+#define GTIA_WRITE (*(struct __gtia_write*)0xD000)
 
 #include <_pbi.h>
 
 #include <_pokey.h>
-#define POKEY (*(struct __pokey_write*)0xD200)
-#define POKEY (*(struct __pokey_read*)0xD200)
+#define POKEY_READ  (*(struct __pokey_read*)0xD200)
+#define POKEY_WRITE (*(struct __pokey_write*)0xD200)
 
 #include <_pia.h>
 #define PIA (*(struct __pia*)0xD300)
@@ -125,5 +188,20 @@ extern void rest_vecs(void);   /* restore system vectors */
 #include <_antic.h>
 #define ANTIC (*(struct __antic*)0xD400)
 
+/* device control block */
+struct __dcb {
+    unsigned char device;     /* device id */
+    unsigned char unit;       /* unit number */
+    unsigned char command;    /* command */
+    unsigned char status;     /* command type / status return */
+    void          *buffer;    /* pointer to buffer */
+    unsigned char timeout;    /* device timeout in seconds */
+    unsigned char unused;
+    unsigned int  xfersize;   /* # of bytes to transfer */
+    unsigned char aux1;       /* 1st command auxiliary byte */
+    unsigned char aux2;       /* 2nd command auxiliary byte */
+};
+#define DCB (*(struct __dcb *)0x300)
+
 /* End of atari.h */
-#endif
+#endif /* #ifndef _ATARI_H */