Add C support for Atari 2600 (VCS)

This commit is contained in:
Florent Flament
2017-01-08 19:12:55 +01:00
parent 1fc2dfb64f
commit c1aac0de0e
13 changed files with 456 additions and 0 deletions

26
include/_riot.h Normal file
View File

@@ -0,0 +1,26 @@
/*****************************************************************************/
/* */
/* Atari VCS 2600 RIOT registers addresses */
/* */
/* Source: DASM - vcs.h */
/* */
/* Florent Flament (contact@florentflament.com), 2017 */
/* */
/*****************************************************************************/
/* RIOT registers */
struct __riot {
unsigned char swcha;
unsigned char swacnt;
unsigned char swchb;
unsigned char swbcnt;
unsigned char intim;
unsigned char timint;
unsigned char unused[14];
unsigned char tim1t;
unsigned char tim8t;
unsigned char tim64t;
unsigned char t1024t;
};

100
include/_tia.h Normal file
View File

@@ -0,0 +1,100 @@
/*****************************************************************************/
/* */
/* Atari VCS 2600 TIA registers addresses */
/* */
/* Source: DASM - vcs.h */
/* */
/* Florent Flament (contact@florentflament.com), 2017 */
/* */
/*****************************************************************************/
/* TIA write / read registers */
struct __tia {
union {
unsigned char vsync;
unsigned char cxm0p;
};
union {
unsigned char vblank;
unsigned char cxm1p;
};
union {
unsigned char wsync;
unsigned char cxp0fb;
};
union {
unsigned char rsync;
unsigned char cxp1fb;
};
union {
unsigned char nusiz0;
unsigned char cxm0fb;
};
union {
unsigned char nusiz1;
unsigned char cxm1fb;
};
union {
unsigned char colup0;
unsigned char cxblpf;
};
union {
unsigned char colup1;
unsigned char cxppmm;
};
union {
unsigned char colupf;
unsigned char inpt0;
};
union {
unsigned char colubk;
unsigned char inpt1;
};
union {
unsigned char ctrlpf;
unsigned char inpt2;
};
union {
unsigned char refp0;
unsigned char inpt3;
};
union {
unsigned char refp1;
unsigned char inpt4;
};
union {
unsigned char pf0;
unsigned char inpt5;
};
unsigned char pf1;
unsigned char pf2;
unsigned char resp0;
unsigned char resp1;
unsigned char resm0;
unsigned char resm1;
unsigned char resbl;
unsigned char audc0;
unsigned char audc1;
unsigned char audf0;
unsigned char audf1;
unsigned char audv0;
unsigned char audv1;
unsigned char grp0;
unsigned char grp1;
unsigned char enam0;
unsigned char enam1;
unsigned char enabl;
unsigned char hmp0;
unsigned char hmp1;
unsigned char hmm0;
unsigned char hmm1;
unsigned char hmbl;
unsigned char vdelp0;
unsigned char vdelp1;
unsigned char vdelbl;
unsigned char resmp0;
unsigned char resmp1;
unsigned char hmove;
unsigned char hmclr;
unsigned char cxclr;
};

26
include/atari2600.h Normal file
View File

@@ -0,0 +1,26 @@
/*****************************************************************************/
/* */
/* Atari VCS 2600 TIA & RIOT registers addresses */
/* */
/* Source: DASM Version 1.05 - vcs.h */
/* */
/* Florent Flament (contact@florentflament.com), 2017 */
/* */
/*****************************************************************************/
#ifndef _ATARI2600_H
#define _ATARI2600_H
/* Check for errors */
#if !defined(__ATARI2600__)
# error This module may only be used when compiling for the Atari 2600!
#endif
#include <_tia.h>
#define TIA (*(struct __tia*)0x0000)
#include <_riot.h>
#define RIOT (*(struct __riot*)0x0280)
/* End of atari2600.h */
#endif /* #ifndef _ATARI2600_H */