#ifndef F256_H #define F256_H #ifdef __cplusplus extern "C" { #endif #include #include "stddclmr.h" #include "api.h" #include "f256_dma.h" #include "f256_intmath.h" #include "f256_irq.h" #include "f256jr.h" #include "f256_rtc.h" #include "f256_sprites.h" #include "f256_tiles.h" #include "f256_timers.h" #include "f256_via.h" #include "f256_xymath.h" /* #define MMU_MEM_CTRL 0x0000 #define MMU_IO_CTRL 0x0001 #define VICKY_MASTER_0 0xd000 #define VICKY_MASTER_1 0xd001 #define VICKY_GR_CLUT_0 0xd000 // I/O Page 1 #define VICKY_GR_CLUT_1 0xd400 // I/O Page 1 #define VICKY_GR_CLUT_2 0xd800 // I/O Page 1 #define VICKY_GR_CLUT_3 0xdc00 // I/O Page 1 */ typedef unsigned char byte; #define TEXT_MATRIX 0xc000 // I/O Page 2 /* #define TEXT_COLOR_MATRIX 0xc000 // I/O Page 3 #define TEXT_LUT_FOREGROUND 0xd800 // I/O Page 0 #define TEXT_LUT_BACKGROUND 0xd840 // I/O Page 0 #define TEXT_FONT_0 0xc000 // I/O Page 1 #define TEXT_FONT_1 0xc800 // I/O Page 1 #define CURSOR_SETTINGS 0xd010 #define CURSOR_CHARACTER 0xd012 #define CURSOR_X_LOW 0xd014 #define CURSOR_X_HIGH 0xd015 #define CURSOR_Y_LOW 0xd016 #define CURSOR_Y_HIGH 0xd017 */ #define PEEK(addy) ((byte)*(volatile byte *)(addy)) #define POKE(addy, value) (*(volatile byte *)(addy) = (value)) #define VECTOR(member) (size_t)(&((struct call *)0xff00)->member) #define EVENT(member) (size_t)(&((struct events *)0)->member) #define CALL(fn) \ asm("jsr %[addy] \n" \ "stz %[err] \n" \ "ror %[err]" \ : [err] "+m"(error) \ : [addy] "i"(VECTOR(fn)) \ : "a", "x", "y", "c", "v"); extern struct event_t event; // The event struct is allocated in crt0. extern char error; // Apple IIgs Colors, because that's how we roll. typedef enum textColorsE { BLACK = 0, DEEP_RED, DARK_BLUE, PURPLE, DARK_GREEN, DARK_GRAY, MEDIUM_BLUE, LIGHT_BLUE, BROWN, ORANGE, LIGHT_GRAY, PINK, LIGHT_GREEN, YELLOW, AQUAMARINE, WHITE, TEXTCOLORS_COUNT } textColorsT; typedef struct colorS { byte r; byte g; byte b; } colorT; extern colorT textColors[16]; void cls(void); void defineTextColor(byte slot, byte fr, byte fg, byte fb, byte br, byte bg, byte bb); void gotoxy(byte x, byte y); void print(char *message); void reset(void); void setTextColor(byte f, byte b); #ifdef __cplusplus } #endif #endif // F256_H