]> git.sur5r.net Git - cc65/blobdiff - include/atari.h
Fixed wrong statements
[cc65] / include / atari.h
index 8afa647a5f1b5699169def42d9d6079c8b3d7a1d..315f883eea49e46e7d968f07812fbf0844f5c918 100644 (file)
 /*                                                                           */
 /*****************************************************************************/
 
+
+
 #ifndef _ATARI_H
 #define _ATARI_H
 
+
+
+/* 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_DELCHR      0xFE   /* delete char under the cursor */
 #define CH_ESC                 0x1B
 #define CH_CURS_UP     28
 #define CH_CURS_DOWN   29
@@ -45,7 +56,8 @@
 #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 CH_DEL          0x7E   /* back space (delete char to the left) */
+#define CH_RUBOUT       0x7E   /* back space (old, deprecated) */
 #define CH_DELLINE      0x9C   /* delete line */
 #define CH_INSLINE      0x9D   /* insert line */
 
@@ -69,7 +81,7 @@
 #define CH_BTEE        0x18
 #define CH_LTEE        0x01
 #define CH_RTEE        0x04
-#define CH_CROSS       0x19
+#define CH_CROSS       0x13
 #define CH_HLINE        0x12
 #define CH_VLINE        0x16
 
 #define HUE_YELLOWRED   15
 
 /* Color defines, similar to c64 colors (untested) */
+/* Note that the conio color implementation is monochrome (bgcolor and textcolor are only placeholders) */
+/* Use the defines with the setcolor() or _atari_xxxcolor() functions */
 #define COLOR_BLACK            _gtia_mkcolor(HUE_GREY,0)
 #define COLOR_WHITE            _gtia_mkcolor(HUE_GREY,7)
 #define COLOR_RED              _gtia_mkcolor(HUE_REDORANGE,1)
@@ -122,31 +136,37 @@ extern void __fastcall__ setcolor_low (unsigned char color_reg, unsigned char co
 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 unsigned int get_ostype(void); /* get ROM version */
+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 */
+extern char *getdefdev(void);          /* get default floppy device */
+
+/* global variables */
+extern unsigned char _dos_type;        /* the DOS flavour */
 
 /* get_ostype return value defines (for explanation, see ostype.s) */
 /* masks */
 #define AT_OS_TYPE_MAIN  7
-#define AT_OS_PALNTSC    (3 << 3)
-#define AT_OS_TYPE_MINOR (7 << 5)
+#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
-/* AT_OS_PALNTSC values */
-#define AT_OS_PAL      1
-#define AT_OS_NTSC     2
 /* AS_OS_TYPE_MINOR values */
-#define AT_OS_400800_A 1
-#define AT_OS_400800_B 2
+/* 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
@@ -154,16 +174,27 @@ extern unsigned int get_ostype(void); /* get ROM version */
 #define AT_OS_XLXE_3   3
 #define AT_OS_XLXE_4   4
 
+/* get_tv return values */
+#define AT_NTSC     0
+#define AT_PAL      1
+
+/* valid _dos_type values */
+#define ATARIDOS    0
+#define SPARTADOS   1
+#define OSADOS      2
+#define MYDOS       3     /* detection currently not implemented */
+#define NODOS       255   /* detection currently not implemented */
+
 /* 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)
@@ -171,5 +202,20 @@ extern unsigned int get_ostype(void); /* get ROM version */
 #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 /* #ifndef _ATARI_H */