X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=include%2F_6526.h;h=aa3158dc8c3d69e53801f171ac08912f4ec36cde;hb=2cd4b5109a59c3743b38369359c389cc1b9edab4;hp=2e72aec48ed38523af42d1d04ca6a5a4cdced7fe;hpb=a17dee1a1c8b135377d40b2ca4dc56fb16fd4446;p=cc65 diff --git a/include/_6526.h b/include/_6526.h index 2e72aec48..aa3158dc8 100644 --- a/include/_6526.h +++ b/include/_6526.h @@ -1,8 +1,8 @@ /*****************************************************************************/ /* */ -/* _6526.h */ +/* _6526.h */ /* */ -/* Internal include file, do not use directly */ +/* Internal include file, do not use directly */ /* */ /* */ /* */ @@ -38,24 +38,28 @@ -/* Define a structure with the 6526 register offsets */ +/* Define a structure with the 6526 register offsets. +** NOTE: The timer registers are not declared as 16 bit registers, because +** the order in which the two 8 bit halves are written is important, and +** the compiler doesn't guarantee any order when writing 16 bit values. +*/ struct __6526 { - unsigned char pra; /* Port register A */ - unsigned char prb; /* Port register B */ - unsigned char ddra; /* Data direction register A */ - unsigned char ddrb; /* Data direction register B */ - unsigned char ta_lo; /* Timer A, low byte */ - unsigned char ta_hi; /* Timer A, high byte */ - unsigned char tb_lo; /* Timer B, low byte */ - unsigned char tb_hi; /* Timer B, high byte */ - unsigned char tod_10; /* TOD, 1/10 sec. */ - unsigned char tod_sec; /* TOD, seconds */ - unsigned char tod_min; /* TOD, minutes */ - unsigned char tod_hour; /* TOD, hours */ - unsigned char sdr; /* Serial data register */ - unsigned char icr; /* Interrupt control register */ - unsigned char cra; /* Control register A */ - unsigned char crb; /* Control register B */ + unsigned char pra; /* Port register A */ + unsigned char prb; /* Port register B */ + unsigned char ddra; /* Data direction register A */ + unsigned char ddrb; /* Data direction register B */ + unsigned char ta_lo; /* Timer A, low byte */ + unsigned char ta_hi; /* Timer A, high byte */ + unsigned char tb_lo; /* Timer B, low byte */ + unsigned char tb_hi; /* Timer B, high byte */ + unsigned char tod_10; /* TOD, 1/10 sec. */ + unsigned char tod_sec; /* TOD, seconds */ + unsigned char tod_min; /* TOD, minutes */ + unsigned char tod_hour; /* TOD, hours */ + unsigned char sdr; /* Serial data register */ + unsigned char icr; /* Interrupt control register */ + unsigned char cra; /* Control register A */ + unsigned char crb; /* Control register B */ };