/* Inverted (upside-down) characters */
#define CHACTL_CHAR_NORMAL 0x00
#define CHACTL_CHAR_INVERTED 0x04
+
/* Inverse (reverse-video) characters */
#define CHACTL_INV_TRANS 0x00 /* chars with high-bit shown */
#define CHACTL_INV_OPAQUE 0x01 /* chars with high-bit appear as space */
#define CHACTL_INV_PRESENT 0x02 /* chars with high-bit are reverse-video */
+
/* N.B. Default is "CHACTL_CHAR_NORMAL | CHACTL_INV_PRESENT", aka decimal 2 */
/* Modifiers to mode lines */
#define DL_HSCROL(x) ((unsigned char)((x) | 16)) /* enable smooth horizontal scrolling on this line; see HSCROL */
#define DL_VSCROL(x) ((unsigned char)((x) | 32)) /* enable smooth vertical scrolling on this line; see VSCROL */
-#define DL_LMS(x) ((unsigned char)((x) | 64)) /* Load Memory Scan (next two bytes must be the LSB/MSB of the data to load */
+#define DL_LMS(x) ((unsigned char)((x) | 64)) /* Load Memory Scan (next two bytes must be the LSB/MSB of the data to load) */
/* General modifier */
-#define DL_DLI(x) ((unsigned char)((x) | 128)) /* enable Display List Interrupt on this mode line; requires NMIEN set to enable DLIs */
-
+#define DL_DLI(x) ((unsigned char)((x) | 128)) /* enable Display List Interrupt on this mode line; requires NMIEN be set to enable DLIs */
-/* Macros for the beginning and end of functions used as Display List Interrupts */
-#define DLI_START asm("pha"); asm("txa"); asm("pha"); asm("tya"); asm("pha");
-#define DLI_END asm("pla"); asm("tay"); asm("pla"); asm("tax"); asm("pla"); asm("rti");
/* End of _antic.h */
#endif /* #ifndef __ANTIC_H */
/* Define a structure with the PIA register offsets */
struct __pia {
unsigned char porta; /* port A data r/w */
+
/* Paddle 0-3 triggers (per PORTA bits) */
#define PORTA_PTRIG3 0x80
#define PORTA_PTRIG2 0x40
unsigned char portb; /* port B data r/w */
+
/* Paddle 4-7 triggers (per PORTB bits); only 400/800 had four controller ports */
#define PORTB_PTRIG7 0x80
#define PORTB_PTRIG6 0x40
#define PORTB_PTRIG5 0x08
#define PORTB_PTRIG4 0x04
- /* See also: "JOY_xxx_MASK" in "atari.h" */
+/* See also: "JOY_xxx_MASK" in "atari.h" */
+
unsigned char pactl; /* port A control */
unsigned char pbctl; /* port B control */
-#define PxCTL_IRQ_ENABLE 0x01 /* (W) Peripheral A interrupt (IRQ) enable. */
- /* One equals enable. Set by the OS but available to the user;
- reset on powerup. */
-#define PxCTL_BIT1 0x02 /* "Set to zero" */
-#define PxCTL_ADDRESSING 0x04 /* (W) Controls PORTA addressing */
- /* One equals PORTA register; zero equals direction control register */
-#define PACTL_MOTOR_CONTROL 0x08 /* (W) Peripheral motor control line (turn the cassette on
- or off; zero equals on) */
-#define PBCTL_PERIPH_CMD_IDENT 0x08 /* Peripheral command identification (serial bus command) */
-#define PxCTL_BIT4 0x10 /* "Set to one" */
-#define PxCTL_BIT5 0x20 /* "Set to one" */
-#define PxCTL_BIT6 0x40 /* "Set to zero" */
-#define PxCTL_IRQ_STATUS 0x80 /* Peripheral interrupt (IRQ) status bit. */
- /* Set by Peripherals (PORTA / PORTB). Reset by reading PORTA / PORTB*/
-};
+#define PxCTL_IRQ_ENABLE 0x01 /* (W) Peripheral A interrupt (IRQ) enable. */
+/* One equals enable. Set by the OS but available to the user; reset on powerup. */
+#define PxCTL_BIT1 0x02 /* "Set to zero" */
+#define PxCTL_ADDRESSING 0x04 /* (W) Controls PORTA addressing */
+/* One equals PORTA register; zero equals direction control register */
+
+#define PACTL_MOTOR_CONTROL 0x08 /* (W) Peripheral motor control line */
+/* Turn the cassette on or off; zero equals on) */
+
+#define PBCTL_PERIPH_CMD_IDENT 0x08 /* Peripheral command identification (serial bus command) */
+
+#define PxCTL_BIT4 0x10 /* "Set to one" */
+#define PxCTL_BIT5 0x20 /* "Set to one" */
+#define PxCTL_BIT6 0x40 /* "Set to zero" */
+#define PxCTL_IRQ_STATUS 0x80 /* Peripheral interrupt (IRQ) status bit. */
+/* Set by Peripherals (PORTA / PORTB). Reset by reading PORTA / PORTB. */
+};
/* End of _pia.h */
#endif
unsigned char audctl; /* audio control */
-#define AUDCTL_CLOCKBASE_15HZ 0x01 /* Switch main clock base from 64 KHz to 15 KHz */
-#define AUDCTL_HIGHPASS_CHAN2 0x02 /* Insert high pass filter into channel two, clocked by channel four */
-#define AUDCTL_HIGHPASS_CHAN1 0x04 /* Insert high pass filter into channel one, clocked by channel two */
-#define AUDCTL_JOIN_CHAN34 0x08 /* Join channels four and three (16 bit) */
-#define AUDCTL_JOIN_CHAN12 0x10 /* Join channels two and one (16 bit) */
+#define AUDCTL_CLOCKBASE_15HZ 0x01 /* Switch main clock base from 64 KHz to 15 KHz */
+#define AUDCTL_HIGHPASS_CHAN2 0x02 /* Insert high pass filter into channel two, clocked by channel four */
+#define AUDCTL_HIGHPASS_CHAN1 0x04 /* Insert high pass filter into channel one, clocked by channel two */
+#define AUDCTL_JOIN_CHAN34 0x08 /* Join channels four and three (16 bit) */
+#define AUDCTL_JOIN_CHAN12 0x10 /* Join channels two and one (16 bit) */
#define AUDCTL_CLOCK_CHAN3_179MHZ 0x20 /* Clock channel three with 1.79 MHz */
#define AUDCTL_CLOCK_CHAN1_179MHZ 0x40 /* Clock channel one with 1.79 MHz */
-#define AUDCTL_9BIT_POLY 0x80 /* Makes the 17 bit poly counter into nine bit poly (see also: RANDOM) */
+#define AUDCTL_9BIT_POLY 0x80 /* Makes the 17 bit poly counter into nine bit poly (see also: RANDOM) */
unsigned char stimer; /* start pokey timers */
/* luminance values go from 0 (black) to 7 (white) */
-/* hue values (these can vary depending on TV standard (NTSC vs PAL), tint potentiometer settings, TV tint settings, emulator palette, etc. */
+/* hue values (these can vary depending on TV standard (NTSC vs PAL), tint potentiometer settings, TV tint settings, emulator palette, etc.) */
#define HUE_GREY 0
#define HUE_GOLD 1
#define HUE_GOLDORANGE 2