Initial port to 68040 (WIP)

Not fully working, but it's starting to boot. Interrupts and the Mo keyboard seem not to be working yet.
This commit is contained in:
Peter Weingartner 2021-11-27 18:49:47 -05:00
parent 6b8e2204f6
commit 60c40b750f
29 changed files with 13026 additions and 17362 deletions

1
.gitignore vendored
View file

@ -65,3 +65,4 @@ src/foenixmcp_ram.bin
src/foenixmcp_flash.bin
src/bin/archive/foenixmcp_u_flash_20211111_03.bin
src/bin/archive/foenixmcp_u_flash_20211112_06.bin
src/Shit2Flash.bin

View file

@ -1,4 +1,4 @@
[DEFAULT]
port=COM6
port=COM9
labels=sample.lbl
flash_address=380000

View file

@ -0,0 +1,21 @@
assign CS0 = ( Internal_Address[31:21] == 11'b0000_0000_000 ) & ( UserData | UserProgram | SuperData | SuperProgram ); //$00 (2M)
// System RAM
assign CS_MERA = ( Internal_Address[31:24] == 7'b0000_001 ) & ( UserData | UserProgram | SuperData | SuperProgram ); //$02000000 - $05FFFFFF 64Meg
// Video RAM
assign CS_VRAM_A = ( Internal_Address[31:21] == 11'b0000_0000_100 ) & ( UserData | SuperData ); //$080000 - 09FFFF (2M) (out of 8M)
assign CS_VRAM_B = ( Internal_Address[31:21] == 11'b0000_0000_101 ) & ( UserData | SuperData ); //$0A0000 - 0BFFFF (2M) (out of 8M)
assign CS_GABE = ( Internal_Address[31:17] == 15'b1111_1110_1100_000 ) & ( UserData | SuperData ); //$FEC0
assign CS_BEATRIX = ( Internal_Address[31:17] == 15'b1111_1110_1100_001 ) & ( UserData | SuperData ); //$FEC2
// Vicky Channel A
assign CS_VICKY_A = ( Internal_Address[31:17] == 15'b1111_1110_1100_010 ) & ( UserData | SuperData ); //$FEC4
assign CS_VICKY_MEM_A = ( Internal_Address[31:17] == 15'b1111_1110_1100_011 ) & ( UserData | SuperData ); //$FEC6
//$00C6_8000 - $00C9_FFFF - Reserved
// Vicky Channel B
assign CS_VICKY_B = ( Internal_Address[31:17] == 15'b1111_1110_1100_100 ) & ( UserData | SuperData ); //$FEC8
assign CS_VICKY_MEM_B = ( Internal_Address[31:17] == 15'b1111_1110_1100_101 ) & ( UserData | SuperData ); //$FECA
assign FLASH0 = ( Internal_Address[31:21] == 11'b1111_1111_111 ) & ( SuperData | SuperProgram ); //$FFE0_0000
VICKY_MASTER_REG[8] <= 32'h1008_1008; // FONT Manager - Font Container Size and FONT Size
VICKY_MASTER_REG[9] <= 32'h0000_1E50; // FONT - Horizontal # of Character, Vertical # FONT Line

View file

@ -6,7 +6,7 @@
# CPU_M68030 0x23 /* CPU code for the Motorola 68030 */
# CPU_M68040 0x24 /* CPU code for the Motorola 68040 */
# CPU_I486DX 0x34 /* CPU code for the Intel 486DX */
export CPU=32
export CPU=36
# MODEL_FOENIX_FMX 0
# MODEL_FOENIX_C256U 1
@ -22,12 +22,12 @@ export VER_MINOR = 1
export VER_BUILD = 11
export AS = vasmm68k_mot
export ASFLAGS = -quiet -Fvobj -nowarn=62
export ASFLAGS = -m68040 -quiet -Fvobj -nowarn=62
export CC = vc
export DEFINES = -DCPU=$(CPU) -DMODEL=$(MODEL) -DVER_MAJOR=$(VER_MAJOR) -DVER_MINOR=$(VER_MINOR) -DVER_BUILD=$(VER_BUILD) # -DKBD_POLLED
ifeq ($(OS),Windows_NT)
export CFLAGS = +$(VBCC)/config/m68k-foenix -I. -I$(CURDIR)/include -I$(CURDIR)
export CFLAGS = -cpu=68040 +$(VBCC)/config/a2560k_ram -I. -I$(CURDIR)/include -I$(CURDIR)
# export CFLAGS = +$(VBCC)/config/a2560u_flash -I. -I$(CURDIR)/include -I$(CURDIR)
export RM = cmd /C del /Q /F
else
@ -36,7 +36,7 @@ else
export RM = rm -f
endif
cpu = m68k
cpu = m68040
cpu_assembly_src := $(wildcard $(cpu)/*.s)
cpu_c_src := $(wildcard $(cpu)/*.c)
cpu_assembly_obj := $(subst .s,.o,$(cpu_assembly_src))

View file

@ -504,7 +504,7 @@ short con_read_b(p_channel chan) {
#if MODEL == MODEL_FOENIX_A2560K
#ifdef KBD_POLLED
ps2_mouse_get_packet();
//ps2_mouse_get_packet();
c = kbdmo_getc_poll();
#else
c = kbdmo_getc();

View file

@ -12,8 +12,8 @@
#include "ring_buffer.h"
#include "gabe_reg.h"
#define KBD_MO_DATA ((volatile unsigned short *)0x00C00040) /* Data register for the keyboard (scan codes will be here) */
#define KBD_MO_STAT ((volatile unsigned short *)0x00C00042) /* Status register for the keyboard */
#define KBD_MO_DATA ((volatile unsigned short *)0xFEC00040) /* Data register for the keyboard (scan codes will be here) */
#define KBD_MO_STAT ((volatile unsigned short *)0xFEC00042) /* Status register for the keyboard */
#define KBD_MO_EMPTY 0x8000 /* Status flag that will be set if the keyboard buffer is empty */
#define KBD_MO_FULL 0x4000 /* Status flag that will be set if the keyboard buffer is full */

View file

@ -17,8 +17,15 @@ static long rtc_ticks;
void rtc_handle_int() {
unsigned char flags;
short x = 0;
short y = 10;
short z = y / x;
volatile char * screen = 0xFEC60000;
/* Periodic interrupt: increment the ticks counter */
rtc_ticks++;
screen[0]++;
}
/*
@ -42,16 +49,17 @@ void rtc_init() {
* the SOF A interrupt as a surrogate for the RTC jiffie timer
*/
// /* Set the periodic interrupt to 15 millisecs */
// *RTC_RATES = RTC_RATE_15ms;
/* Set the periodic interrupt to 15 millisecs */
*RTC_RATES = RTC_RATE_15ms;
// int_register(INT_RTC, rtc_handle_int);
int_register(INT_RTC, rtc_handle_int);
/* Enable the periodic interrupt */
// flags = *RTC_FLAGS;
// *RTC_ENABLES = RTC_PIE;
flags = *RTC_FLAGS;
*RTC_ENABLES = RTC_PIE;
rtc_ticks = 0;
// int_enable(INT_RTC);
int_enable(INT_RTC);
}
/*
@ -232,5 +240,5 @@ void rtc_get_time(p_time time) {
* the number of jiffies since the last reset
*/
long rtc_get_jiffies() {
return timers_jiffies();
return rtc_ticks;
}

View file

@ -8,6 +8,7 @@
#include "simpleio.h"
#include "sys_general.h"
#include "rsrc/font/MSX_CP437_8x8.h"
#include "rsrc/font/BM437_IBM_Model3_Alt4.h"
#define MAX_TEXT_CHANNELS 2
@ -16,6 +17,7 @@
*/
typedef struct s_text_channel {
unsigned char current_color;
unsigned char * font_ptr;
volatile unsigned long * master_control;
volatile char * text_cells;
@ -23,11 +25,14 @@ typedef struct s_text_channel {
volatile unsigned long * cursor_settings;
volatile unsigned long * cursor_position;
volatile unsigned long * border_control;
volatile unsigned long * font_size_ctrl;
volatile unsigned long * font_count_ctrl;
short columns_max;
short rows_max;
short columns_visible;
short rows_visible;
short font_size; /* 0 = 8x8, 1 = 8x16 */
short x;
short y;
@ -114,15 +119,23 @@ int text_init() {
text_channel[i].y = 0;
}
#if MODEL == MODEL_FOENIX_A2560K
// Init CLUT for the Color Memory
for (i = 0; i < 16; i++) {
unsigned long fg_color = fg_color_lut[2*i + 1] << 16 | fg_color_lut[2*i];
unsigned long bg_color = bg_color_lut[2*i + 1] << 16 | bg_color_lut[2*i];
FG_CLUT_A[i] = fg_color;
BG_CLUT_A[i] = bg_color;
FG_CLUT_B[i] = fg_color;
BG_CLUT_B[i] = bg_color;
}
#else
// Init CLUT for the Color Memory
for (i = 0; i<32; i++) {
FG_CLUT_A[i] = fg_color_lut[i];
BG_CLUT_A[i] = bg_color_lut[i];
#if MODEL == MODEL_FOENIX_A2560K
FG_CLUT_B[i] = fg_color_lut[i];
BG_CLUT_B[i] = bg_color_lut[i];
#endif
}
#endif
/* Initialize everything... only do a screen if it's present */
@ -135,26 +148,63 @@ int text_init() {
chan_a->cursor_position = CursorControlReg_H_A;
chan_a->border_control = BorderControlReg_L_A;
#if MODEL == MODEL_FOENIX_A2560K
/* A2560K has support for 8x16 characters and therefore font sizes */
chan_a->font_size_ctrl = FONT_Size_Ctrl_A;
chan_a->font_count_ctrl = FONT_Count_Ctrl_A;
need_hires = 1;
#else
/* All other models do not have this feature */
chan_a->font_size_ctrl = 0;
chan_a->font_count_ctrl = 0;
#endif
if (need_hires) {
*chan_a->master_control = VKY3_MCR_800x600 | VKY3_MCR_TEXT_EN; /* Set to text only mode: 800x600 */
} else {
*chan_a->master_control = VKY3_MCR_640x480 | VKY3_MCR_TEXT_EN; /* Set to text only mode: 640x480 */
}
/* Set the font for channel A */
for (i = 0; i < 0x800; i++) {
unsigned char b = MSX_CP437_8x8_bin[i];
VICKY_TXT_FONT_A[i] = b;
}
text_set_border(0, 1, 0x20, 0x10, border_color);
text_setsizes(0);
text_set_color(0, 0xf, 4);
text_set_cursor(0, 0xF3, 0x7F, 1, 1);
text_set_xy(0, 0, 0);
text_clear(0, 2);
if (chan_a->font_size_ctrl) {
*chan_a->font_size_ctrl = 0x10081008; /* 8x16... and ... something? */
*chan_a->font_count_ctrl = 0x00002564; /* Ehhh? */
chan_a->font_size = 1; /* Set 8x16 */
} else {
/* Set 8x8 */
chan_a->font_size = 0;
}
/* Set the font for channel A */
if (chan_a->font_size == 1) {
/* Load the 8x16 font */
for (i = 0; i < 0x1000; i++) {
unsigned char b = BM437_IBM_Model3_Alt4[i];
VICKY_TXT_FONT_A[i] = b;
}
/* Cursor for this font */
text_set_cursor(0, 0xF3, 0xB0, 1, 1);
} else {
/* Load the 8x8 font */
for (i = 0; i < 0x800; i++) {
unsigned char b = MSX_CP437_8x8_bin[i];
VICKY_TXT_FONT_A[i] = b;
}
/* Cursor for this font */
text_set_border(0, 1, 0x20, 0x10, border_color);
}
#if MODEL == MODEL_FOENIX_A2560K
chan_b->master_control = MasterControlReg_B;
@ -163,6 +213,8 @@ int text_init() {
chan_b->cursor_settings = CursorControlReg_L_B;
chan_b->cursor_position = CursorControlReg_H_B;
chan_b->border_control = BorderControlReg_L_B;
chan_b->font_size_ctrl = 0;
chan_b->font_count_ctrl = 0;
if (need_hires) {
*chan_b->master_control = VKY3_MCR_800x600 | VKY3_MCR_TEXT_EN; /* Set to text only mode: 800x600 */
@ -334,6 +386,10 @@ void text_setsizes(short screen) {
chan->rows_max /= 2;
}
if (chan->font_size == 1) {
chan->rows_max /= 2;
}
/* Calculate visible rows and columns assuming no border */
chan->rows_visible = chan->rows_max;
chan->columns_visible = chan->columns_max;
@ -351,6 +407,10 @@ void text_setsizes(short screen) {
rows_reduction /= 2;
}
if (chan->font_size == 1) {
rows_reduction /= 2;
}
chan->columns_visible -= columns_reduction;
chan->rows_visible -= rows_reduction;
}

View file

@ -156,7 +156,7 @@ void initialize() {
short res;
/* Set the logging level */
log_setlevel(LOG_ERROR);
log_setlevel(LOG_DEBUG);
// /* Hide the mouse */
mouse_set_visible(0);
@ -164,9 +164,9 @@ void initialize() {
/* Initialize the text channels */
text_init();
/* Initialize the indicators, and turn on the power indicator */
/* Initialize the indicators */
ind_init();
ind_set(IND_POWER, IND_ON);
log(LOG_INFO, "Indicators initialized");
/* Initialize the interrupt system */
int_init();
@ -204,19 +204,17 @@ void initialize() {
rtc_init();
target_jiffies = sys_time_jiffies() + 300; /* 5 seconds minimum */
log(LOG_TRACE, "target_jiffies assigned");
log_num(LOG_DEBUG, "target_jiffies assigned: ", target_jiffies);
/* Enable all interrupts */
int_enable_all();
log(LOG_TRACE, "Interrupts enabled");
/* Display the splash screen */
load_splashscreen();
// /* Display the splash screen */
// load_splashscreen();
/* Play the SID test bong on the Gideon SID implementation */
sid_test_internal();
// sid_test_internal();
if (res = pata_install()) {
log_num(LOG_ERROR, "FAILED: PATA driver installation", res);
@ -230,21 +228,21 @@ void initialize() {
log(LOG_INFO, "SDC driver installed.");
}
#if MODEL == MODEL_FOENIX_A2560K
if (res = fdc_install()) {
log_num(LOG_ERROR, "FAILED: Floppy drive initialization", res);
} else {
log(LOG_INFO, "Floppy drive initialized.");
}
#endif
// #if MODEL == MODEL_FOENIX_A2560K
// if (res = fdc_install()) {
// log_num(LOG_ERROR, "FAILED: Floppy drive initialization", res);
// } else {
// log(LOG_INFO, "Floppy drive initialized.");
// }
// #endif
// At this point, we should be able to call into to console to print to the screens
if (res = ps2_init()) {
print_error(0, "FAILED: PS/2 keyboard initialization", res);
} else {
DEBUG("PS/2 keyboard initialized.");
}
//
// if (res = ps2_init()) {
// print_error(0, "FAILED: PS/2 keyboard initialization", res);
// } else {
// DEBUG("PS/2 keyboard initialized.");
// }
#if MODEL == MODEL_FOENIX_A2560K
if (res = kbdmo_init()) {
@ -265,17 +263,17 @@ void initialize() {
} else {
log(LOG_INFO, "File system initialized.");
}
/* Wait until the target duration has been reached _or_ the user presses a key */
while (target_jiffies > sys_time_jiffies()) {
short scan_code = sys_kbd_scancode();
if (scan_code != 0) {
break;
}
}
/* Go back to text mode */
text_init();
//
// /* Wait until the target duration has been reached _or_ the user presses a key */
// while (target_jiffies > sys_time_jiffies()) {
// short scan_code = sys_kbd_scancode();
// if (scan_code != 0) {
// break;
// }
// }
//
// /* Go back to text mode */
// text_init();
}
int main(int argc, char * argv[]) {
@ -319,13 +317,6 @@ int main(int argc, char * argv[]) {
sprintf(welcome, "Foenix/MCP v%02d.%02d-alpha+%04d\n\nType \"HELP\" or \"?\" for command summary.", VER_MAJOR, VER_MINOR, VER_BUILD);
sys_chan_write(0, welcome, strlen(welcome));
// #if MODEL == MODEL_FOENIX_A2560K
// fdc_init();
// if (fdc_ioctrl(FDC_CTRL_MOTOR_ON, 0, 0)) {
// log(LOG_ERROR, "Could not turn on the floppy drive motor.");
// }
// #endif
cli_repl(0);
log(LOG_INFO, "Stopping.");

File diff suppressed because it is too large Load diff

View file

@ -9,7 +9,7 @@
* Screen Channel A
*/
#define MasterControlReg_A ((volatile uint32_t *)0x00C40000)
#define MasterControlReg_A ((volatile int *)0xFEC40000)
#define VKY3_MCR_TEXT_EN 0x00000001 /* Text Mode Enable */
#define VKY3_MCR_TEXT_OVRLY 0x00000002 /* Text Mode overlay */
#define VKY3_MCR_GRAPH_EN 0x00000004 /* Graphic Mode Enable */
@ -26,100 +26,103 @@
/* Access to DIP switch information (read only) */
#define VKY3_DIP_REG ((volatile unsigned short *)0x00C40002)
#define VKY3_DIP_REG ((volatile unsigned short *)0xFEC40002)
/* Bits 0 - 12: Master Control Register data */
#define VKY3_DIP_GAMMA 0x2000 /* DIP switch indication for Gamma correction */
#define VKY3_DIP_HIRES 0x4000 /* DIP switch for high resolution mode */
#define VKY3_PLL_ACTIVE_CLK 0x8000 /* Active Clock --- 0: 25.175Mhz, 1: 40Mhz */
#define BorderControlReg_L_A ((volatile uint32_t *)0x00C40004)
#define BorderControlReg_L_A ((volatile int *)0xFEC40004)
#define VKY3_BRDR_EN 0x00000001 /* Border Enable */
#define VKY3_X_SCROLL_MASK 0x00000070 /* X Scroll */
#define VKY3_X_SIZE_MASK 0x00003f00 /* X Size */
#define VKY3_Y_SIZE_MASK 0x003f0000 /* Y Size */
#define BorderControlReg_H_A ((volatile uint32_t *)0x00C40008)
#define BackGroundControlReg_A ((volatile uint32_t *)0x00C4000C)
#define CursorControlReg_L_A ((volatile uint32_t *)0x00C40010)
#define CursorControlReg_H_A ((volatile uint32_t *)0x00C40014)
#define BorderControlReg_H_A ((volatile int *)0xFEC40008)
#define BackGroundControlReg_A ((volatile int *)0xFEC4000C)
#define CursorControlReg_L_A ((volatile int *)0xFEC40010)
#define CursorControlReg_H_A ((volatile int *)0xFEC40014)
#define LineInterrupt0_A ((volatile uint16_t *)0x00C40018)
#define LineInterrupt1_A ((volatile uint16_t *)0x00C4001A)
#define LineInterrupt2_A ((volatile uint16_t *)0x00C4001C)
#define LineInterrupt3_A ((volatile uint16_t *)0x00C4001E)
#define LineInterrupt0_A ((volatile uint16_t *)0xFEC40018)
#define LineInterrupt1_A ((volatile uint16_t *)0xFEC4001A)
#define LineInterrupt2_A ((volatile uint16_t *)0xFEC4001C)
#define LineInterrupt3_A ((volatile uint16_t *)0xFEC4001E)
#define MousePointer_Mem_A ((volatile uint16_t *)0x00C40400)
#define MousePtr_A_CTRL_Reg ((volatile uint16_t *)0x00C40C00)
#define FONT_Size_Ctrl_A ((volatile int *)0xFEC40020)
#define FONT_Count_Ctrl_A ((volatile int *)0xFEC40024)
#define MousePointer_Mem_A ((volatile uint16_t *)0xFEC40400)
#define MousePtr_A_CTRL_Reg ((volatile uint16_t *)0xFEC40C00)
#define MousePtr_En 0x0001
#define MousePtr_A_X_Pos ((volatile uint16_t *)0x00C40C02)
#define MousePtr_A_Y_Pos ((volatile uint16_t *)0x00C40C04)
#define MousePtr_A_Mouse0 ((volatile uint16_t *)0x00C40C0A)
#define MousePtr_A_Mouse1 ((volatile uint16_t *)0x00C40C0C)
#define MousePtr_A_Mouse2 ((volatile uint16_t *)0x00C40C0E)
#define MousePtr_A_X_Pos ((volatile uint16_t *)0xFEC40C02)
#define MousePtr_A_Y_Pos ((volatile uint16_t *)0xFEC40C04)
#define MousePtr_A_Mouse0 ((volatile uint16_t *)0xFEC40C0A)
#define MousePtr_A_Mouse1 ((volatile uint16_t *)0xFEC40C0C)
#define MousePtr_A_Mouse2 ((volatile uint16_t *)0xFEC40C0E)
#define ScreenText_A ((volatile char *)0x00C60000) /* Text matrix */
#define ColorText_A ((volatile uint8_t *)0x00C68000) /* Color matrix */
#define FG_CLUT_A ((volatile uint16_t *)0x00C6C400) /* Foreground LUT */
#define BG_CLUT_A ((volatile uint16_t *)0x00C6C440) /* Background LUT */
#define ScreenText_A ((volatile char *)0xFEC60000) /* Text matrix */
#define ColorText_A ((volatile uint8_t *)0xFEC68000) /* Color matrix */
#define FG_CLUT_A ((volatile unsigned long *)0xFEC6C400) /* Foreground LUT */
#define BG_CLUT_A ((volatile unsigned long *)0xFEC6C440) /* Background LUT */
/*
* Screen Channel B
*/
#define MasterControlReg_B ((volatile uint32_t *)0x00C80000)
#define BorderControlReg_L_B ((volatile uint32_t *)0x00C80004)
#define BorderControlReg_H_B ((volatile uint32_t *)0x00C80008)
#define BackGroundControlReg_B ((volatile uint32_t *)0x00C8000C)
#define CursorControlReg_L_B ((volatile uint32_t *)0x00C80010)
#define CursorControlReg_H_B ((volatile uint32_t *)0x00C80014)
#define MasterControlReg_B ((volatile int *)0xFEC80000)
#define BorderControlReg_L_B ((volatile int *)0xFEC80004)
#define BorderControlReg_H_B ((volatile int *)0xFEC80008)
#define BackGroundControlReg_B ((volatile int *)0xFEC8000C)
#define CursorControlReg_L_B ((volatile int *)0xFEC80010)
#define CursorControlReg_H_B ((volatile int *)0xFEC80014)
#define LineInterrupt0_B ((volatile uint16_t *)0x00C80018)
#define LineInterrupt1_B ((volatile uint16_t *)0x00C8001A)
#define LineInterrupt2_B ((volatile uint16_t *)0x00C8001C)
#define LineInterrupt3_B ((volatile uint16_t *)0x00C8001E)
#define LineInterrupt0_B ((volatile uint16_t *)0xFEC80018)
#define LineInterrupt1_B ((volatile uint16_t *)0xFEC8001A)
#define LineInterrupt2_B ((volatile uint16_t *)0xFEC8001C)
#define LineInterrupt3_B ((volatile uint16_t *)0xFEC8001E)
#define MousePointer_Mem_B ((volatile uint16_t *)0x00C80400)
#define MousePtr_B_CTRL_Reg ((volatile uint16_t *)0x00C80C00)
#define MousePointer_Mem_B ((volatile uint16_t *)0xFEC80400)
#define MousePtr_B_CTRL_Reg ((volatile uint16_t *)0xFEC80C00)
#define MousePtr_B_X_Pos ((volatile uint16_t *)0x00C80C02)
#define MousePtr_B_Y_Pos ((volatile uint16_t *)0x00C80C04)
#define MousePtr_B_Mouse0 ((volatile uint16_t *)0x00C80C0A)
#define MousePtr_B_Mouse1 ((volatile uint16_t *)0x00C80C0C)
#define MousePtr_B_Mouse2 ((volatile uint16_t *)0x00C80C0E)
#define MousePtr_B_X_Pos ((volatile uint16_t *)0xFEC80C02)
#define MousePtr_B_Y_Pos ((volatile uint16_t *)0xFEC80C04)
#define MousePtr_B_Mouse0 ((volatile uint16_t *)0xFEC80C0A)
#define MousePtr_B_Mouse1 ((volatile uint16_t *)0xFEC80C0C)
#define MousePtr_B_Mouse2 ((volatile uint16_t *)0xFEC80C0E)
#define ScreenText_B ((volatile char *)0x00CA0000) /* Text matrix */
#define ColorText_B ((volatile uint8_t *)0x00CA8000) /* Color matrix */
#define FG_CLUT_B ((volatile uint16_t *)0x00CAC400) /* Foreground LUT */
#define BG_CLUT_B ((volatile uint16_t *)0x00CAC440) /* Background LUT */
#define ScreenText_B ((volatile char *)0xFECA0000) /* Text matrix */
#define ColorText_B ((volatile uint8_t *)0xFECA8000) /* Color matrix */
#define FG_CLUT_B ((volatile unsigned long *)0xFECAC400) /* Foreground LUT */
#define BG_CLUT_B ((volatile unsigned long *)0xFECAC440) /* Background LUT */
#define BM0_Control_Reg ((volatile uint16_t *)0x00C80100)
#define BM0_Addy_Pointer_Reg ((volatile uint16_t *)0x00C80104)
#define BM0_Control_Reg ((volatile uint16_t *)0xFEC80100)
#define BM0_Addy_Pointer_Reg ((volatile uint16_t *)0xFEC80104)
#define Sprite_0_CTRL ((volatile uint16_t *)0x00C81000)
#define Sprite_0_ADDY_HI ((volatile uint16_t *)0x00C81002)
#define Sprite_0_POS_X ((volatile uint16_t *)0x00C81004)
#define Sprite_0_POS_Y ((volatile uint16_t *)0x00C81006)
#define Sprite_0_CTRL ((volatile uint16_t *)0xFEC81000)
#define Sprite_0_ADDY_HI ((volatile uint16_t *)0xFEC81002)
#define Sprite_0_POS_X ((volatile uint16_t *)0xFEC81004)
#define Sprite_0_POS_Y ((volatile uint16_t *)0xFEC81006)
/*
* Color lookup tables
*/
#define LUT_0 ((volatile uint8_t *)0x00C82000)
#define LUT_1 ((volatile uint8_t *)0x00C82400)
#define LUT_2 ((volatile uint8_t *)0x00C82800)
#define LUT_3 ((volatile uint8_t *)0x00C82C00)
#define LUT_4 ((volatile uint8_t *)0x00C83000)
#define LUT_5 ((volatile uint8_t *)0x00C83400)
#define LUT_6 ((volatile uint8_t *)0x00C83800)
#define LUT_7 ((volatile uint8_t *)0x00C83C00)
#define LUT_0 ((volatile uint8_t *)0xFEC82000)
#define LUT_1 ((volatile uint8_t *)0xFEC82400)
#define LUT_2 ((volatile uint8_t *)0xFEC82800)
#define LUT_3 ((volatile uint8_t *)0xFEC82C00)
#define LUT_4 ((volatile uint8_t *)0xFEC83000)
#define LUT_5 ((volatile uint8_t *)0xFEC83400)
#define LUT_6 ((volatile uint8_t *)0xFEC83800)
#define LUT_7 ((volatile uint8_t *)0xFEC83C00)
/*
* Text mode font memory
*/
#define VICKY_TXT_FONT_A ((volatile unsigned char *)0x00C48000) /* $00C48000..$00C48FFF - FONT MEMORY Channel A */
#define VICKY_TXT_FONT_B ((volatile unsigned char *)0x00C88000) /* $00C88000..$00C88FFF - FONT MEMORY Channel B */
#define VICKY_TXT_FONT_A ((volatile unsigned char *)0xFEC48000) /* $00C48000..$00C48FFF - FONT MEMORY Channel A */
#define VICKY_TXT_FONT_B ((volatile unsigned char *)0xFEC88000) /* $00C88000..$00C88FFF - FONT MEMORY Channel B */
/*
* Location of VRAM

View file

@ -5,8 +5,8 @@
#ifndef __FDC_A2560K_H
#define __FDC_A2560K_H
#define FDC_BASE ((volatile unsigned char *)0x00C023F0)
#define FDC_DOR ((volatile unsigned char *)0x00C023F2) /* Read/Write - Digital Output Register */
#define FDC_BASE ((volatile unsigned char *)0xFEC023F0)
#define FDC_DOR ((volatile unsigned char *)0xFEC023F2) /* Read/Write - Digital Output Register */
// FDC_DOR_DSEL0 = $01 ; Drive 0 Select
// FDC_DOR_DSEL1 = $02 ; Drive 1 Select
// FDC_DOR_NRESET = $04 ; Reset the FDC
@ -16,7 +16,7 @@
// FDC_DOR_MOT2 = $40 ; Turn on motor 2
// FDC_DOR_MOT3 = $80 ; Turn on motor 3
#define FDC_MSR ((volatile unsigned char *)0x00C023F4) /* Read - Main Status Register */
#define FDC_MSR ((volatile unsigned char *)0xFEC023F4) /* Read - Main Status Register */
// FDC_MSR_DRV0BSY = $01 ; Indicates if drive 0 is busy
// FDC_MSR_DRV1BSY = $02 ; Indicates if drive 1 is busy
// FDC_MSR_CMDBSY = $10 ; Indicates if a command is in progress
@ -24,20 +24,20 @@
// FDC_MSR_DIO = $40 ; Data direction: 1 = read, 0 = write
// FDC_MSR_RQM = $80 ; 1 = host can transfer data, 0 = host must wait
#define FDC_DSR ((volatile unsigned char *)0x00C023F4) /* Write - Data Select Register */
#define FDC_DSR ((volatile unsigned char *)0xFEC023F4) /* Write - Data Select Register */
// ; Bit[0..1] = data rate
// ; Bit[2..4] = precompensation select
// FDC_DSR_LOPWR = $40 ; Turn on low power mode
// FDC_DSR_RESET = $80 ; Software reset of the FDC
#define FDC_DATA ((volatile unsigned char *)0x00C023F5) /* Read/Write - Data - FIFO */
#define FDC_DATA ((volatile unsigned char *)0xFEC023F5) /* Read/Write - Data - FIFO */
#define FDC_RSV ((volatile unsigned char *)0x00C023F6) /* Reserved */
#define FDC_RSV ((volatile unsigned char *)0xFEC023F6) /* Reserved */
#define FDC_DIR ((volatile unsigned char *)0x00C023F7) /* Read - Digital Input Register */
#define FDC_DIR ((volatile unsigned char *)0xFEC023F7) /* Read - Digital Input Register */
// FDC_DIR_DSKCHG = $80 ; Indicates if the disk has changed
#define FDC_CCR ((volatile unsigned char *)0x00C023F7) /* Write - Configuration Control Register */
#define FDC_CCR ((volatile unsigned char *)0xFEC023F7) /* Write - Configuration Control Register */
// ; Bit[0..1] = Data rate
#endif

View file

@ -5,14 +5,14 @@
#ifndef __PATA_A2560K_H
#define __PATA_A2560K_H
#define PATA_DATA_16 ((volatile unsigned short *)0x00C00400)
#define PATA_DATA_8 ((volatile unsigned char *)0x00C00400)
#define PATA_ERROR ((volatile unsigned char *)0x00C00402)
#define PATA_SECT_CNT ((volatile unsigned char *)0x00C00404)
#define PATA_SECT_SRT ((volatile unsigned char *)0x00C00406)
#define PATA_CLDR_LO ((volatile unsigned char *)0x00C00408)
#define PATA_CLDR_HI ((volatile unsigned char *)0x00C0040A)
#define PATA_HEAD ((volatile unsigned char *)0x00C0040C)
#define PATA_CMD_STAT ((volatile unsigned char *)0x00C0040E)
#define PATA_DATA_16 ((volatile unsigned short *)0xFEC00400)
#define PATA_DATA_8 ((volatile unsigned char *)0xFEC00400)
#define PATA_ERROR ((volatile unsigned char *)0xFEC00402)
#define PATA_SECT_CNT ((volatile unsigned char *)0xFEC00404)
#define PATA_SECT_SRT ((volatile unsigned char *)0xFEC00406)
#define PATA_CLDR_LO ((volatile unsigned char *)0xFEC00408)
#define PATA_CLDR_HI ((volatile unsigned char *)0xFEC0040A)
#define PATA_HEAD ((volatile unsigned char *)0xFEC0040C)
#define PATA_CMD_STAT ((volatile unsigned char *)0xFEC0040E)
#endif

View file

@ -5,10 +5,10 @@
* Ports for the PS/2 keyboard and mouse on the A2560K
*/
#define PS2_STATUS ((unsigned char *)0x00C02064)
#define PS2_CMD_BUF ((unsigned char *)0x00C02064)
#define PS2_OUT_BUF ((unsigned char *)0x00C02060)
#define PS2_INPT_BUF ((unsigned char *)0x00C02060)
#define PS2_DATA_BUF ((unsigned char *)0x00C02060)
#define PS2_STATUS ((unsigned char *)0xFEC02064)
#define PS2_CMD_BUF ((unsigned char *)0xFEC02064)
#define PS2_OUT_BUF ((unsigned char *)0xFEC02060)
#define PS2_INPT_BUF ((unsigned char *)0xFEC02060)
#define PS2_DATA_BUF ((unsigned char *)0xFEC02060)
#endif

View file

@ -5,31 +5,31 @@
#ifndef __SDC_A2560K_H
#define __SDC_A2560K_H
#define GABE_SDC_REG ((volatile unsigned short *)0x00C0051A)
#define GABE_SDC_REG ((volatile unsigned short *)0xFEC0051A)
#define GABE_SDC_PRESENT 0x0010 /* Is an SD card present? --- 0:Yes, 1:No */
#define GABE_SDC_WPROT 0x0020 /* Is the SD card write protected? --- 0:Yes, 1:No */
#define SDC_VERSION_REG ((unsigned char *)0x00C00300)
#define SDC_CONTROL_REG ((unsigned char *)0x00C00301)
#define SDC_TRANS_TYPE_REG ((unsigned char *)0x00C00302)
#define SDC_VERSION_REG ((unsigned char *)0xFEC00300)
#define SDC_CONTROL_REG ((unsigned char *)0xFEC00301)
#define SDC_TRANS_TYPE_REG ((unsigned char *)0xFEC00302)
#define SDC_TRANS_CONTROL_REG ((unsigned char *)0x00C00303)
#define SDC_TRANS_STATUS_REG ((unsigned char *)0x00C00304)
#define SDC_TRANS_ERROR_REG ((unsigned char *)0x00C00305)
#define SDC_DIRECT_ACCESS_REG ((unsigned char *)0x00C00306)
#define SDC_SD_ADDR_7_0_REG ((unsigned char *)0x00C00307)
#define SDC_SD_ADDR_15_8_REG ((unsigned char *)0x00C00308)
#define SDC_SD_ADDR_23_16_REG ((unsigned char *)0x00C00309)
#define SDC_SD_ADDR_31_24_REG ((unsigned char *)0x00C0030A)
#define SDC_TRANS_CONTROL_REG ((unsigned char *)0xFEC00303)
#define SDC_TRANS_STATUS_REG ((unsigned char *)0xFEC00304)
#define SDC_TRANS_ERROR_REG ((unsigned char *)0xFEC00305)
#define SDC_DIRECT_ACCESS_REG ((unsigned char *)0xFEC00306)
#define SDC_SD_ADDR_7_0_REG ((unsigned char *)0xFEC00307)
#define SDC_SD_ADDR_15_8_REG ((unsigned char *)0xFEC00308)
#define SDC_SD_ADDR_23_16_REG ((unsigned char *)0xFEC00309)
#define SDC_SD_ADDR_31_24_REG ((unsigned char *)0xFEC0030A)
#define SDC_SPI_CLK_DEL_REG ((unsigned char *)0x00C0030B)
#define SDC_SPI_CLK_DEL_REG ((unsigned char *)0xFEC0030B)
#define SDC_RX_FIFO_DATA_REG ((unsigned char *)0x00C00310)
#define SDC_RX_FIFO_DATA_CNT_HI ((unsigned char *)0x00C00312)
#define SDC_RX_FIFO_DATA_CNT_LO ((unsigned char *)0x00C00313)
#define SDC_RX_FIFO_CTRL_REG ((unsigned char *)0x00C00314)
#define SDC_RX_FIFO_DATA_REG ((unsigned char *)0xFEC00310)
#define SDC_RX_FIFO_DATA_CNT_HI ((unsigned char *)0xFEC00312)
#define SDC_RX_FIFO_DATA_CNT_LO ((unsigned char *)0xFEC00313)
#define SDC_RX_FIFO_CTRL_REG ((unsigned char *)0xFEC00314)
#define SDC_TX_FIFO_DATA_REG ((unsigned char *)0x00C00320)
#define SDC_TX_FIFO_CTRL_REG ((unsigned char *)0x00C00324)
#define SDC_TX_FIFO_DATA_REG ((unsigned char *)0xFEC00320)
#define SDC_TX_FIFO_CTRL_REG ((unsigned char *)0xFEC00324)
#endif

View file

@ -5,13 +5,13 @@
#ifndef __SOUND_A2560K_H
#define __SOUND_A2560K_H
#define PSG_PORT ((volatile unsigned char *)0x00C20100) /* Control register for the SN76489 */
#define OPL3_PORT ((volatile unsigned char *)0x00C20200) /* Access port for the OPL3 */
#define OPM_EXT_BASE ((volatile unsigned char *)0x00C20600) /* External OPM base address */
#define OPN2_EXT_BASE ((volatile unsigned char *)0x00C20400) /* External OPN2 base address */
#define OPM_INT_BASE ((volatile unsigned char *)0x00C20C00) /* Internal OPM base address */
#define OPN2_INT_BASE ((volatile unsigned char *)0x00C20A00) /* Internal OPN2 base address */
#define CODEC ((volatile unsigned short *)0x00C20E00) /* Control register for the CODEC */
#define PSG_PORT ((volatile unsigned char *)0xFEC20100) /* Control register for the SN76489 */
#define OPL3_PORT ((volatile unsigned char *)0xFEC20200) /* Access port for the OPL3 */
#define OPM_EXT_BASE ((volatile unsigned char *)0xFEC20600) /* External OPM base address */
#define OPN2_EXT_BASE ((volatile unsigned char *)0xFEC20400) /* External OPN2 base address */
#define OPM_INT_BASE ((volatile unsigned char *)0xFEC20C00) /* Internal OPM base address */
#define OPN2_INT_BASE ((volatile unsigned char *)0xFEC20A00) /* Internal OPN2 base address */
#define CODEC ((volatile unsigned short *)0xFEC20E00) /* Control register for the CODEC */
/*
* A2560K supports two external, physical SID chips.
@ -28,185 +28,185 @@
* External SID Left Channel
*/
#define SID_EXT_L_V1_FREQ_LO ((unsigned char *)0x00C20800)
#define SID_EXT_L_V1_FREQ_HI ((unsigned char *)0x00C20801)
#define SID_EXT_L_V1_PW_LO ((unsigned char *)0x00C20802)
#define SID_EXT_L_V1_PW_HI ((unsigned char *)0x00C20803)
#define SID_EXT_L_V1_CTRL ((unsigned char *)0x00C20804)
#define SID_EXT_L_V1_ATCK_DECY ((unsigned char *)0x00C20805)
#define SID_EXT_L_V1_SSTN_RLSE ((unsigned char *)0x00C20806)
#define SID_EXT_L_V2_FREQ_LO ((unsigned char *)0x00C20807)
#define SID_EXT_L_V2_FREQ_HI ((unsigned char *)0x00C20808)
#define SID_EXT_L_V2_PW_LO ((unsigned char *)0x00C20809)
#define SID_EXT_L_V2_PW_HI ((unsigned char *)0x00C2080A)
#define SID_EXT_L_V2_CTRL ((unsigned char *)0x00C2080B)
#define SID_EXT_L_V2_ATCK_DECY ((unsigned char *)0x00C2080C)
#define SID_EXT_L_V2_SSTN_RLSE ((unsigned char *)0x00C2080D)
#define SID_EXT_L_V3_FREQ_LO ((unsigned char *)0x00C2080E)
#define SID_EXT_L_V3_FREQ_HI ((unsigned char *)0x00C2080F)
#define SID_EXT_L_V3_PW_LO ((unsigned char *)0x00C20810)
#define SID_EXT_L_V3_PW_HI ((unsigned char *)0x00C20811)
#define SID_EXT_L_V3_CTRL ((unsigned char *)0x00C20812)
#define SID_EXT_L_V3_ATCK_DECY ((unsigned char *)0x00C20813)
#define SID_EXT_L_V3_SSTN_RLSE ((unsigned char *)0x00C20814)
#define SID_EXT_L_FC_LO ((unsigned char *)0x00C20815)
#define SID_EXT_L_FC_HI ((unsigned char *)0x00C20816)
#define SID_EXT_L_RES_FILT ((unsigned char *)0x00C20817)
#define SID_EXT_L_MODE_VOL ((unsigned char *)0x00C20818)
#define SID_EXT_L_POT_X ((unsigned char *)0x00C20819)
#define SID_EXT_L_POT_Y ((unsigned char *)0x00C2081A)
#define SID_EXT_L_OSC3_RND ((unsigned char *)0x00C2081B)
#define SID_EXT_L_ENV3 ((unsigned char *)0x00C2081C)
#define SID_EXT_L_NOT_USED0 ((unsigned char *)0x00C2081D)
#define SID_EXT_L_NOT_USED1 ((unsigned char *)0x00C2081E)
#define SID_EXT_L_NOT_USED2 ((unsigned char *)0x00C2081F)
#define SID_EXT_L_V1_FREQ_LO ((unsigned char *)0xFEC20800)
#define SID_EXT_L_V1_FREQ_HI ((unsigned char *)0xFEC20801)
#define SID_EXT_L_V1_PW_LO ((unsigned char *)0xFEC20802)
#define SID_EXT_L_V1_PW_HI ((unsigned char *)0xFEC20803)
#define SID_EXT_L_V1_CTRL ((unsigned char *)0xFEC20804)
#define SID_EXT_L_V1_ATCK_DECY ((unsigned char *)0xFEC20805)
#define SID_EXT_L_V1_SSTN_RLSE ((unsigned char *)0xFEC20806)
#define SID_EXT_L_V2_FREQ_LO ((unsigned char *)0xFEC20807)
#define SID_EXT_L_V2_FREQ_HI ((unsigned char *)0xFEC20808)
#define SID_EXT_L_V2_PW_LO ((unsigned char *)0xFEC20809)
#define SID_EXT_L_V2_PW_HI ((unsigned char *)0xFEC2080A)
#define SID_EXT_L_V2_CTRL ((unsigned char *)0xFEC2080B)
#define SID_EXT_L_V2_ATCK_DECY ((unsigned char *)0xFEC2080C)
#define SID_EXT_L_V2_SSTN_RLSE ((unsigned char *)0xFEC2080D)
#define SID_EXT_L_V3_FREQ_LO ((unsigned char *)0xFEC2080E)
#define SID_EXT_L_V3_FREQ_HI ((unsigned char *)0xFEC2080F)
#define SID_EXT_L_V3_PW_LO ((unsigned char *)0xFEC20810)
#define SID_EXT_L_V3_PW_HI ((unsigned char *)0xFEC20811)
#define SID_EXT_L_V3_CTRL ((unsigned char *)0xFEC20812)
#define SID_EXT_L_V3_ATCK_DECY ((unsigned char *)0xFEC20813)
#define SID_EXT_L_V3_SSTN_RLSE ((unsigned char *)0xFEC20814)
#define SID_EXT_L_FC_LO ((unsigned char *)0xFEC20815)
#define SID_EXT_L_FC_HI ((unsigned char *)0xFEC20816)
#define SID_EXT_L_RES_FILT ((unsigned char *)0xFEC20817)
#define SID_EXT_L_MODE_VOL ((unsigned char *)0xFEC20818)
#define SID_EXT_L_POT_X ((unsigned char *)0xFEC20819)
#define SID_EXT_L_POT_Y ((unsigned char *)0xFEC2081A)
#define SID_EXT_L_OSC3_RND ((unsigned char *)0xFEC2081B)
#define SID_EXT_L_ENV3 ((unsigned char *)0xFEC2081C)
#define SID_EXT_L_NOT_USED0 ((unsigned char *)0xFEC2081D)
#define SID_EXT_L_NOT_USED1 ((unsigned char *)0xFEC2081E)
#define SID_EXT_L_NOT_USED2 ((unsigned char *)0xFEC2081F)
/*
* External SID Right Channel
*/
#define SID_EXT_R_V1_FREQ_LO ((unsigned char *)0x00C20900)
#define SID_EXT_R_V1_FREQ_HI ((unsigned char *)0x00C20901)
#define SID_EXT_R_V1_PW_LO ((unsigned char *)0x00C20902)
#define SID_EXT_R_V1_PW_HI ((unsigned char *)0x00C20903)
#define SID_EXT_R_V1_CTRL ((unsigned char *)0x00C20904)
#define SID_EXT_R_V1_ATCK_DECY ((unsigned char *)0x00C20905)
#define SID_EXT_R_V1_SSTN_RLSE ((unsigned char *)0x00C20906)
#define SID_EXT_R_V2_FREQ_LO ((unsigned char *)0x00C20907)
#define SID_EXT_R_V2_FREQ_HI ((unsigned char *)0x00C20908)
#define SID_EXT_R_V2_PW_LO ((unsigned char *)0x00C20909)
#define SID_EXT_R_V2_PW_HI ((unsigned char *)0x00C2090A)
#define SID_EXT_R_V2_CTRL ((unsigned char *)0x00C2090B)
#define SID_EXT_R_V2_ATCK_DECY ((unsigned char *)0x00C2090C)
#define SID_EXT_R_V2_SSTN_RLSE ((unsigned char *)0x00C2090D)
#define SID_EXT_R_V3_FREQ_LO ((unsigned char *)0x00C2090E)
#define SID_EXT_R_V3_FREQ_HI ((unsigned char *)0x00C2090F)
#define SID_EXT_R_V3_PW_LO ((unsigned char *)0x00C20910)
#define SID_EXT_R_V3_PW_HI ((unsigned char *)0x00C20911)
#define SID_EXT_R_V3_CTRL ((unsigned char *)0x00C20912)
#define SID_EXT_R_V3_ATCK_DECY ((unsigned char *)0x00C20913)
#define SID_EXT_R_V3_SSTN_RLSE ((unsigned char *)0x00C20914)
#define SID_EXT_R_FC_LO ((unsigned char *)0x00C20915)
#define SID_EXT_R_FC_HI ((unsigned char *)0x00C20916)
#define SID_EXT_R_RES_FILT ((unsigned char *)0x00C20917)
#define SID_EXT_R_MODE_VOL ((unsigned char *)0x00C20918)
#define SID_EXT_R_POT_X ((unsigned char *)0x00C20919)
#define SID_EXT_R_POT_Y ((unsigned char *)0x00C2091A)
#define SID_EXT_R_OSC3_RND ((unsigned char *)0x00C2091B)
#define SID_EXT_R_ENV3 ((unsigned char *)0x00C2091C)
#define SID_EXT_R_NOT_USED0 ((unsigned char *)0x00C2091D)
#define SID_EXT_R_NOT_USED1 ((unsigned char *)0x00C2091E)
#define SID_EXT_R_NOT_USED2 ((unsigned char *)0x00C2091F)
#define SID_EXT_R_V1_FREQ_LO ((unsigned char *)0xFEC20900)
#define SID_EXT_R_V1_FREQ_HI ((unsigned char *)0xFEC20901)
#define SID_EXT_R_V1_PW_LO ((unsigned char *)0xFEC20902)
#define SID_EXT_R_V1_PW_HI ((unsigned char *)0xFEC20903)
#define SID_EXT_R_V1_CTRL ((unsigned char *)0xFEC20904)
#define SID_EXT_R_V1_ATCK_DECY ((unsigned char *)0xFEC20905)
#define SID_EXT_R_V1_SSTN_RLSE ((unsigned char *)0xFEC20906)
#define SID_EXT_R_V2_FREQ_LO ((unsigned char *)0xFEC20907)
#define SID_EXT_R_V2_FREQ_HI ((unsigned char *)0xFEC20908)
#define SID_EXT_R_V2_PW_LO ((unsigned char *)0xFEC20909)
#define SID_EXT_R_V2_PW_HI ((unsigned char *)0xFEC2090A)
#define SID_EXT_R_V2_CTRL ((unsigned char *)0xFEC2090B)
#define SID_EXT_R_V2_ATCK_DECY ((unsigned char *)0xFEC2090C)
#define SID_EXT_R_V2_SSTN_RLSE ((unsigned char *)0xFEC2090D)
#define SID_EXT_R_V3_FREQ_LO ((unsigned char *)0xFEC2090E)
#define SID_EXT_R_V3_FREQ_HI ((unsigned char *)0xFEC2090F)
#define SID_EXT_R_V3_PW_LO ((unsigned char *)0xFEC20910)
#define SID_EXT_R_V3_PW_HI ((unsigned char *)0xFEC20911)
#define SID_EXT_R_V3_CTRL ((unsigned char *)0xFEC20912)
#define SID_EXT_R_V3_ATCK_DECY ((unsigned char *)0xFEC20913)
#define SID_EXT_R_V3_SSTN_RLSE ((unsigned char *)0xFEC20914)
#define SID_EXT_R_FC_LO ((unsigned char *)0xFEC20915)
#define SID_EXT_R_FC_HI ((unsigned char *)0xFEC20916)
#define SID_EXT_R_RES_FILT ((unsigned char *)0xFEC20917)
#define SID_EXT_R_MODE_VOL ((unsigned char *)0xFEC20918)
#define SID_EXT_R_POT_X ((unsigned char *)0xFEC20919)
#define SID_EXT_R_POT_Y ((unsigned char *)0xFEC2091A)
#define SID_EXT_R_OSC3_RND ((unsigned char *)0xFEC2091B)
#define SID_EXT_R_ENV3 ((unsigned char *)0xFEC2091C)
#define SID_EXT_R_NOT_USED0 ((unsigned char *)0xFEC2091D)
#define SID_EXT_R_NOT_USED1 ((unsigned char *)0xFEC2091E)
#define SID_EXT_R_NOT_USED2 ((unsigned char *)0xFEC2091F)
/*
* Internal SID Left Channel
*/
#define SID_INT_L_V1_FREQ_LO ((unsigned char *)0x00C21000)
#define SID_INT_L_V1_FREQ_HI ((unsigned char *)0x00C21001)
#define SID_INT_L_V1_PW_LO ((unsigned char *)0x00C21002)
#define SID_INT_L_V1_PW_HI ((unsigned char *)0x00C21003)
#define SID_INT_L_V1_CTRL ((unsigned char *)0x00C21004)
#define SID_INT_L_V1_ATCK_DECY ((unsigned char *)0x00C21005)
#define SID_INT_L_V1_SSTN_RLSE ((unsigned char *)0x00C21006)
#define SID_INT_L_V2_FREQ_LO ((unsigned char *)0x00C21007)
#define SID_INT_L_V2_FREQ_HI ((unsigned char *)0x00C21008)
#define SID_INT_L_V2_PW_LO ((unsigned char *)0x00C21009)
#define SID_INT_L_V2_PW_HI ((unsigned char *)0x00C2100A)
#define SID_INT_L_V2_CTRL ((unsigned char *)0x00C2100B)
#define SID_INT_L_V2_ATCK_DECY ((unsigned char *)0x00C2100C)
#define SID_INT_L_V2_SSTN_RLSE ((unsigned char *)0x00C2100D)
#define SID_INT_L_V3_FREQ_LO ((unsigned char *)0x00C2100E)
#define SID_INT_L_V3_FREQ_HI ((unsigned char *)0x00C2100F)
#define SID_INT_L_V3_PW_LO ((unsigned char *)0x00C21010)
#define SID_INT_L_V3_PW_HI ((unsigned char *)0x00C21011)
#define SID_INT_L_V3_CTRL ((unsigned char *)0x00C21012)
#define SID_INT_L_V3_ATCK_DECY ((unsigned char *)0x00C21013)
#define SID_INT_L_V3_SSTN_RLSE ((unsigned char *)0x00C21014)
#define SID_INT_L_FC_LO ((unsigned char *)0x00C21015)
#define SID_INT_L_FC_HI ((unsigned char *)0x00C21016)
#define SID_INT_L_RES_FILT ((unsigned char *)0x00C21017)
#define SID_INT_L_MODE_VOL ((unsigned char *)0x00C21018)
#define SID_INT_L_POT_X ((unsigned char *)0x00C21019)
#define SID_INT_L_POT_Y ((unsigned char *)0x00C2101A)
#define SID_INT_L_OSC3_RND ((unsigned char *)0x00C2101B)
#define SID_INT_L_ENV3 ((unsigned char *)0x00C2101C)
#define SID_INT_L_NOT_USED0 ((unsigned char *)0x00C2101D)
#define SID_INT_L_NOT_USED1 ((unsigned char *)0x00C2101E)
#define SID_INT_L_NOT_USED2 ((unsigned char *)0x00C2101F)
#define SID_INT_L_V1_FREQ_LO ((unsigned char *)0xFEC21000)
#define SID_INT_L_V1_FREQ_HI ((unsigned char *)0xFEC21001)
#define SID_INT_L_V1_PW_LO ((unsigned char *)0xFEC21002)
#define SID_INT_L_V1_PW_HI ((unsigned char *)0xFEC21003)
#define SID_INT_L_V1_CTRL ((unsigned char *)0xFEC21004)
#define SID_INT_L_V1_ATCK_DECY ((unsigned char *)0xFEC21005)
#define SID_INT_L_V1_SSTN_RLSE ((unsigned char *)0xFEC21006)
#define SID_INT_L_V2_FREQ_LO ((unsigned char *)0xFEC21007)
#define SID_INT_L_V2_FREQ_HI ((unsigned char *)0xFEC21008)
#define SID_INT_L_V2_PW_LO ((unsigned char *)0xFEC21009)
#define SID_INT_L_V2_PW_HI ((unsigned char *)0xFEC2100A)
#define SID_INT_L_V2_CTRL ((unsigned char *)0xFEC2100B)
#define SID_INT_L_V2_ATCK_DECY ((unsigned char *)0xFEC2100C)
#define SID_INT_L_V2_SSTN_RLSE ((unsigned char *)0xFEC2100D)
#define SID_INT_L_V3_FREQ_LO ((unsigned char *)0xFEC2100E)
#define SID_INT_L_V3_FREQ_HI ((unsigned char *)0xFEC2100F)
#define SID_INT_L_V3_PW_LO ((unsigned char *)0xFEC21010)
#define SID_INT_L_V3_PW_HI ((unsigned char *)0xFEC21011)
#define SID_INT_L_V3_CTRL ((unsigned char *)0xFEC21012)
#define SID_INT_L_V3_ATCK_DECY ((unsigned char *)0xFEC21013)
#define SID_INT_L_V3_SSTN_RLSE ((unsigned char *)0xFEC21014)
#define SID_INT_L_FC_LO ((unsigned char *)0xFEC21015)
#define SID_INT_L_FC_HI ((unsigned char *)0xFEC21016)
#define SID_INT_L_RES_FILT ((unsigned char *)0xFEC21017)
#define SID_INT_L_MODE_VOL ((unsigned char *)0xFEC21018)
#define SID_INT_L_POT_X ((unsigned char *)0xFEC21019)
#define SID_INT_L_POT_Y ((unsigned char *)0xFEC2101A)
#define SID_INT_L_OSC3_RND ((unsigned char *)0xFEC2101B)
#define SID_INT_L_ENV3 ((unsigned char *)0xFEC2101C)
#define SID_INT_L_NOT_USED0 ((unsigned char *)0xFEC2101D)
#define SID_INT_L_NOT_USED1 ((unsigned char *)0xFEC2101E)
#define SID_INT_L_NOT_USED2 ((unsigned char *)0xFEC2101F)
/*
* Internal SID Right Channel
*/
#define SID_INT_R_V1_FREQ_LO ((unsigned char *)0x00C21200)
#define SID_INT_R_V1_FREQ_HI ((unsigned char *)0x00C21201)
#define SID_INT_R_V1_PW_LO ((unsigned char *)0x00C21202)
#define SID_INT_R_V1_PW_HI ((unsigned char *)0x00C21203)
#define SID_INT_R_V1_CTRL ((unsigned char *)0x00C21204)
#define SID_INT_R_V1_ATCK_DECY ((unsigned char *)0x00C21205)
#define SID_INT_R_V1_SSTN_RLSE ((unsigned char *)0x00C21206)
#define SID_INT_R_V2_FREQ_LO ((unsigned char *)0x00C21207)
#define SID_INT_R_V2_FREQ_HI ((unsigned char *)0x00C21208)
#define SID_INT_R_V2_PW_LO ((unsigned char *)0x00C21209)
#define SID_INT_R_V2_PW_HI ((unsigned char *)0x00C2120A)
#define SID_INT_R_V2_CTRL ((unsigned char *)0x00C2120B)
#define SID_INT_R_V2_ATCK_DECY ((unsigned char *)0x00C2120C)
#define SID_INT_R_V2_SSTN_RLSE ((unsigned char *)0x00C2120D)
#define SID_INT_R_V3_FREQ_LO ((unsigned char *)0x00C2120E)
#define SID_INT_R_V3_FREQ_HI ((unsigned char *)0x00C2120F)
#define SID_INT_R_V3_PW_LO ((unsigned char *)0x00C21210)
#define SID_INT_R_V3_PW_HI ((unsigned char *)0x00C21211)
#define SID_INT_R_V3_CTRL ((unsigned char *)0x00C21212)
#define SID_INT_R_V3_ATCK_DECY ((unsigned char *)0x00C21213)
#define SID_INT_R_V3_SSTN_RLSE ((unsigned char *)0x00C21214)
#define SID_INT_R_FC_LO ((unsigned char *)0x00C21215)
#define SID_INT_R_FC_HI ((unsigned char *)0x00C21216)
#define SID_INT_R_RES_FILT ((unsigned char *)0x00C21217)
#define SID_INT_R_MODE_VOL ((unsigned char *)0x00C21218)
#define SID_INT_R_POT_X ((unsigned char *)0x00C21219)
#define SID_INT_R_POT_Y ((unsigned char *)0x00C2121A)
#define SID_INT_R_OSC3_RND ((unsigned char *)0x00C2121B)
#define SID_INT_R_ENV3 ((unsigned char *)0x00C2121C)
#define SID_INT_R_NOT_USED0 ((unsigned char *)0x00C2121D)
#define SID_INT_R_NOT_USED1 ((unsigned char *)0x00C2121E)
#define SID_INT_R_NOT_USED2 ((unsigned char *)0x00C2121F)
#define SID_INT_R_V1_FREQ_LO ((unsigned char *)0xFEC21200)
#define SID_INT_R_V1_FREQ_HI ((unsigned char *)0xFEC21201)
#define SID_INT_R_V1_PW_LO ((unsigned char *)0xFEC21202)
#define SID_INT_R_V1_PW_HI ((unsigned char *)0xFEC21203)
#define SID_INT_R_V1_CTRL ((unsigned char *)0xFEC21204)
#define SID_INT_R_V1_ATCK_DECY ((unsigned char *)0xFEC21205)
#define SID_INT_R_V1_SSTN_RLSE ((unsigned char *)0xFEC21206)
#define SID_INT_R_V2_FREQ_LO ((unsigned char *)0xFEC21207)
#define SID_INT_R_V2_FREQ_HI ((unsigned char *)0xFEC21208)
#define SID_INT_R_V2_PW_LO ((unsigned char *)0xFEC21209)
#define SID_INT_R_V2_PW_HI ((unsigned char *)0xFEC2120A)
#define SID_INT_R_V2_CTRL ((unsigned char *)0xFEC2120B)
#define SID_INT_R_V2_ATCK_DECY ((unsigned char *)0xFEC2120C)
#define SID_INT_R_V2_SSTN_RLSE ((unsigned char *)0xFEC2120D)
#define SID_INT_R_V3_FREQ_LO ((unsigned char *)0xFEC2120E)
#define SID_INT_R_V3_FREQ_HI ((unsigned char *)0xFEC2120F)
#define SID_INT_R_V3_PW_LO ((unsigned char *)0xFEC21210)
#define SID_INT_R_V3_PW_HI ((unsigned char *)0xFEC21211)
#define SID_INT_R_V3_CTRL ((unsigned char *)0xFEC21212)
#define SID_INT_R_V3_ATCK_DECY ((unsigned char *)0xFEC21213)
#define SID_INT_R_V3_SSTN_RLSE ((unsigned char *)0xFEC21214)
#define SID_INT_R_FC_LO ((unsigned char *)0xFEC21215)
#define SID_INT_R_FC_HI ((unsigned char *)0xFEC21216)
#define SID_INT_R_RES_FILT ((unsigned char *)0xFEC21217)
#define SID_INT_R_MODE_VOL ((unsigned char *)0xFEC21218)
#define SID_INT_R_POT_X ((unsigned char *)0xFEC21219)
#define SID_INT_R_POT_Y ((unsigned char *)0xFEC2121A)
#define SID_INT_R_OSC3_RND ((unsigned char *)0xFEC2121B)
#define SID_INT_R_ENV3 ((unsigned char *)0xFEC2121C)
#define SID_INT_R_NOT_USED0 ((unsigned char *)0xFEC2121D)
#define SID_INT_R_NOT_USED1 ((unsigned char *)0xFEC2121E)
#define SID_INT_R_NOT_USED2 ((unsigned char *)0xFEC2121F)
/*
* Internal SID Neutral Channel - When writting here, the value is written in R and L Channel at the same time
*/
#define SID_INT_N_V1_FREQ_LO ((unsigned char *)0x00C41200)
#define SID_INT_N_V1_FREQ_HI ((unsigned char *)0x00C41201)
#define SID_INT_N_V1_PW_LO ((unsigned char *)0x00C41202)
#define SID_INT_N_V1_PW_HI ((unsigned char *)0x00C41203)
#define SID_INT_N_V1_CTRL ((unsigned char *)0x00C41204)
#define SID_INT_N_V1_ATCK_DECY ((unsigned char *)0x00C41205)
#define SID_INT_N_V1_SSTN_RLSE ((unsigned char *)0x00C41206)
#define SID_INT_N_V2_FREQ_LO ((unsigned char *)0x00C41207)
#define SID_INT_N_V2_FREQ_HI ((unsigned char *)0x00C41208)
#define SID_INT_N_V2_PW_LO ((unsigned char *)0x00C41209)
#define SID_INT_N_V2_PW_HI ((unsigned char *)0x00C4120A)
#define SID_INT_N_V2_CTRL ((unsigned char *)0x00C4120B)
#define SID_INT_N_V2_ATCK_DECY ((unsigned char *)0x00C4120C)
#define SID_INT_N_V2_SSTN_RLSE ((unsigned char *)0x00C4120D)
#define SID_INT_N_V3_FREQ_LO ((unsigned char *)0x00C4120E)
#define SID_INT_N_V3_FREQ_HI ((unsigned char *)0x00C4120F)
#define SID_INT_N_V3_PW_LO ((unsigned char *)0x00C41210)
#define SID_INT_N_V3_PW_HI ((unsigned char *)0x00C41211)
#define SID_INT_N_V3_CTRL ((unsigned char *)0x00C41212)
#define SID_INT_N_V3_ATCK_DECY ((unsigned char *)0x00C41213)
#define SID_INT_N_V3_SSTN_RLSE ((unsigned char *)0x00C41214)
#define SID_INT_N_FC_LO ((unsigned char *)0x00C41215)
#define SID_INT_N_FC_HI ((unsigned char *)0x00C41216)
#define SID_INT_N_RES_FILT ((unsigned char *)0x00C41217)
#define SID_INT_N_MODE_VOL ((unsigned char *)0x00C41218)
#define SID_INT_N_POT_X ((unsigned char *)0x00C41219)
#define SID_INT_N_POT_Y ((unsigned char *)0x00C4121A)
#define SID_INT_N_OSC3_RND ((unsigned char *)0x00C4121B)
#define SID_INT_N_ENV3 ((unsigned char *)0x00C4121C)
#define SID_INT_N_NOT_USED0 ((unsigned char *)0x00C4121D)
#define SID_INT_N_NOT_USED1 ((unsigned char *)0x00C4121E)
#define SID_INT_N_NOT_USED2 ((unsigned char *)0x00C4121F)
#define SID_INT_N_V1_FREQ_LO ((unsigned char *)0xFEC41200)
#define SID_INT_N_V1_FREQ_HI ((unsigned char *)0xFEC41201)
#define SID_INT_N_V1_PW_LO ((unsigned char *)0xFEC41202)
#define SID_INT_N_V1_PW_HI ((unsigned char *)0xFEC41203)
#define SID_INT_N_V1_CTRL ((unsigned char *)0xFEC41204)
#define SID_INT_N_V1_ATCK_DECY ((unsigned char *)0xFEC41205)
#define SID_INT_N_V1_SSTN_RLSE ((unsigned char *)0xFEC41206)
#define SID_INT_N_V2_FREQ_LO ((unsigned char *)0xFEC41207)
#define SID_INT_N_V2_FREQ_HI ((unsigned char *)0xFEC41208)
#define SID_INT_N_V2_PW_LO ((unsigned char *)0xFEC41209)
#define SID_INT_N_V2_PW_HI ((unsigned char *)0xFEC4120A)
#define SID_INT_N_V2_CTRL ((unsigned char *)0xFEC4120B)
#define SID_INT_N_V2_ATCK_DECY ((unsigned char *)0xFEC4120C)
#define SID_INT_N_V2_SSTN_RLSE ((unsigned char *)0xFEC4120D)
#define SID_INT_N_V3_FREQ_LO ((unsigned char *)0xFEC4120E)
#define SID_INT_N_V3_FREQ_HI ((unsigned char *)0xFEC4120F)
#define SID_INT_N_V3_PW_LO ((unsigned char *)0xFEC41210)
#define SID_INT_N_V3_PW_HI ((unsigned char *)0xFEC41211)
#define SID_INT_N_V3_CTRL ((unsigned char *)0xFEC41212)
#define SID_INT_N_V3_ATCK_DECY ((unsigned char *)0xFEC41213)
#define SID_INT_N_V3_SSTN_RLSE ((unsigned char *)0xFEC41214)
#define SID_INT_N_FC_LO ((unsigned char *)0xFEC41215)
#define SID_INT_N_FC_HI ((unsigned char *)0xFEC41216)
#define SID_INT_N_RES_FILT ((unsigned char *)0xFEC41217)
#define SID_INT_N_MODE_VOL ((unsigned char *)0xFEC41218)
#define SID_INT_N_POT_X ((unsigned char *)0xFEC41219)
#define SID_INT_N_POT_Y ((unsigned char *)0xFEC4121A)
#define SID_INT_N_OSC3_RND ((unsigned char *)0xFEC4121B)
#define SID_INT_N_ENV3 ((unsigned char *)0xFEC4121C)
#define SID_INT_N_NOT_USED0 ((unsigned char *)0xFEC4121D)
#define SID_INT_N_NOT_USED1 ((unsigned char *)0xFEC4121E)
#define SID_INT_N_NOT_USED2 ((unsigned char *)0xFEC4121F)
#endif

View file

@ -13,23 +13,22 @@
#define MANUAL_RESET 0x8000 // Make sure the word "DEAD" is written in GABE_RESET_ID
#if MODEL == MODEL_FOENIX_A2560K
#define GABE_CTRL_REG ((volatile unsigned short *)0x00C00000)
#define GABE_RESET_ID ((volatile unsigned short *)0x00C00002)
#define GABE_LFSR_REG0 ((volatile unsigned short *)0x00C00004)
#define GABE_LFSR_REG1 ((volatile unsigned short *)0x00C00006)
#define GABE_CTRL_REG ((volatile unsigned short *)0xFEC00000)
#define GABE_RESET_ID ((volatile unsigned short *)0xFEC00002)
#define GABE_LFSR_REG0 ((volatile unsigned short *)0xFEC00004)
#define GABE_LFSR_REG1 ((volatile unsigned short *)0xFEC00006)
#define RGB_LED_L ((volatile unsigned short *)0x00C00008) // Writing Only - A2560K Only - 0x__RR
#define RGB_LED_H ((volatile unsigned short *)0x00C0000A) // Writing Only - A2560K Only - 0xGGBB
#define RGB_LED ((volatile unsigned int *)0xFEC00008) // Writing Only - A2560K Only - 0x__RRGGBB
#define GABE_LFSR_DATA ((volatile unsigned short *)0x00C00008) // Read Only
#define GABE_LFSR_STAT ((volatile unsigned short *)0x00C0000A) // Read Only
#define GABE_MACHINE_ID ((volatile unsigned short *)0x00C0000C) // Machine ID - Read Only
#define GABE_LFSR_DATA ((volatile unsigned short *)0xFEC00008) // Read Only
#define GABE_LFSR_STAT ((volatile unsigned short *)0xFEC0000A) // Read Only
#define GABE_MACHINE_ID ((volatile unsigned short *)0xFEC0000C) // Machine ID - Read Only
#define GABE_CHIP_SUBREV ((volatile unsigned short *)0x00C0000E)
#define GABE_CHIP_VERSION ((volatile unsigned short *)0x00C00010)
#define GABE_CHIP_NUMBER ((volatile unsigned short *)0x00C00012)
#define GABE_CHIP_SUBREV ((volatile unsigned short *)0xFEC0000E)
#define GABE_CHIP_VERSION ((volatile unsigned short *)0xFEC00010)
#define GABE_CHIP_NUMBER ((volatile unsigned short *)0xFEC00012)
#define GABE_DIP_REG ((volatile unsigned short *)0x00C00518)
#define GABE_DIP_REG ((volatile unsigned short *)0xFEC00518)
#define GABE_DIP_BOOT_MASK 0x0003 /* Mask for the boot mode: */
#define GABE_DIP_USER_MASK 0x0300 /* Mask for the user switches: */
@ -37,7 +36,7 @@
* 16-bit register controlling the key of the A2560K built-in keyboard
*/
#define GABE_MO_LEDS ((volatile unsigned short *)0x00C0000C)
#define GABE_MO_LEDS ((volatile unsigned short *)0xFEC0000C)
#define GABE_MO_LED_0_B 0x0001 /* LED 0 (Close to DEL key) -- Blue ON */
#define GABE_MO_LED_0_G 0x0002 /* LED 0 (Close to DEL key) -- Green ON */
#define GABE_MO_LED_0_R 0x0004 /* LED 0 (Close to DEL key) -- Red ON */

View file

@ -8,9 +8,9 @@
#include "sys_general.h"
#if MODEL == MODEL_FOENIX_A2560K
#define MIDI_DATA ((volatile unsigned char *)0x00C02330)
#define MIDI_STAT ((volatile unsigned char *)0x00C02331)
#define MIDI_CMD ((volatile unsigned char *)0x00C02331)
#define MIDI_DATA ((volatile unsigned char *)0xFEC02330)
#define MIDI_STAT ((volatile unsigned char *)0xFEC02331)
#define MIDI_CMD ((volatile unsigned char *)0xFEC02331)
#define MIDI_STAT_TX_BUSY 0x80
#define MIDI_STAT_RX_EMPTY 0x40

View file

@ -9,23 +9,23 @@
#if MODEL == MODEL_FOENIX_A2560K
#define RTC_BASE ((volatile unsigned char *)0x00C00080)
#define RTC_SEC ((volatile unsigned char *)0x00C00080)
#define RTC_ALRM_SEC ((volatile unsigned char *)0x00C00081)
#define RTC_MIN ((volatile unsigned char *)0x00C00082)
#define RTC_ALRM_MIN ((volatile unsigned char *)0x00C00083)
#define RTC_HOUR ((volatile unsigned char *)0x00C00084)
#define RTC_ALRM_HOUR ((volatile unsigned char *)0x00C00085)
#define RTC_DAY ((volatile unsigned char *)0x00C00086)
#define RTC_ALRM_DAY ((volatile unsigned char *)0x00C00087)
#define RTC_DAY_OF_WEEK ((volatile unsigned char *)0x00C00088)
#define RTC_MONTH ((volatile unsigned char *)0x00C00089)
#define RTC_YEAR ((volatile unsigned char *)0x00C0008A)
#define RTC_RATES ((volatile unsigned char *)0x00C0008B)
#define RTC_ENABLES ((volatile unsigned char *)0x00C0008C)
#define RTC_FLAGS ((volatile unsigned char *)0x00C0008D)
#define RTC_CTRL ((volatile unsigned char *)0x00C0008E)
#define RTC_CENTURY ((volatile unsigned char *)0x00C0008F)
#define RTC_BASE ((volatile unsigned char *)0xFEC00080)
#define RTC_SEC ((volatile unsigned char *)0xFEC00080)
#define RTC_ALRM_SEC ((volatile unsigned char *)0xFEC00081)
#define RTC_MIN ((volatile unsigned char *)0xFEC00082)
#define RTC_ALRM_MIN ((volatile unsigned char *)0xFEC00083)
#define RTC_HOUR ((volatile unsigned char *)0xFEC00084)
#define RTC_ALRM_HOUR ((volatile unsigned char *)0xFEC00085)
#define RTC_DAY ((volatile unsigned char *)0xFEC00086)
#define RTC_ALRM_DAY ((volatile unsigned char *)0xFEC00087)
#define RTC_DAY_OF_WEEK ((volatile unsigned char *)0xFEC00088)
#define RTC_MONTH ((volatile unsigned char *)0xFEC00089)
#define RTC_YEAR ((volatile unsigned char *)0xFEC0008A)
#define RTC_RATES ((volatile unsigned char *)0xFEC0008B)
#define RTC_ENABLES ((volatile unsigned char *)0xFEC0008C)
#define RTC_FLAGS ((volatile unsigned char *)0xFEC0008D)
#define RTC_CTRL ((volatile unsigned char *)0xFEC0008E)
#define RTC_CENTURY ((volatile unsigned char *)0xFEC0008F)
#elif MODEL_FOENIX_A2560U || MODEL == MODEL_FOENIX_A2560U_PLUS

View file

@ -9,102 +9,102 @@
#ifndef __SUPERIO_H
#define __SUPERIO_H
#define PME_STS_REG ((volatile unsigned char *)0x00C02100)
#define PME_EN_REG ((volatile unsigned char *)0x00C02102)
#define PME_STS_REG ((volatile unsigned char *)0xFEC02100)
#define PME_EN_REG ((volatile unsigned char *)0xFEC02102)
#define PME_STS1_REG ((volatile unsigned char *)0x00C02104)
#define PME_STS2_REG ((volatile unsigned char *)0x00C02105)
#define PME_STS3_REG ((volatile unsigned char *)0x00C02106)
#define PME_STS4_REG ((volatile unsigned char *)0x00C02107)
#define PME_STS5_REG ((volatile unsigned char *)0x00C02108)
#define PME_STS1_REG ((volatile unsigned char *)0xFEC02104)
#define PME_STS2_REG ((volatile unsigned char *)0xFEC02105)
#define PME_STS3_REG ((volatile unsigned char *)0xFEC02106)
#define PME_STS4_REG ((volatile unsigned char *)0xFEC02107)
#define PME_STS5_REG ((volatile unsigned char *)0xFEC02108)
#define PME_EN1_REG ((volatile unsigned char *)0x00C0210A)
#define PME_EN2_REG ((volatile unsigned char *)0x00C0210B)
#define PME_EN3_REG ((volatile unsigned char *)0x00C0210C)
#define PME_EN4_REG ((volatile unsigned char *)0x00C0210D)
#define PME_EN5_REG ((volatile unsigned char *)0x00C0210E)
#define PME_EN1_REG ((volatile unsigned char *)0xFEC0210A)
#define PME_EN2_REG ((volatile unsigned char *)0xFEC0210B)
#define PME_EN3_REG ((volatile unsigned char *)0xFEC0210C)
#define PME_EN4_REG ((volatile unsigned char *)0xFEC0210D)
#define PME_EN5_REG ((volatile unsigned char *)0xFEC0210E)
#define SMI_STS1_REG ((volatile unsigned char *)0x00C02110)
#define SMI_STS2_REG ((volatile unsigned char *)0x00C02111)
#define SMI_STS3_REG ((volatile unsigned char *)0x00C02112)
#define SMI_STS4_REG ((volatile unsigned char *)0x00C02113)
#define SMI_STS5_REG ((volatile unsigned char *)0x00C02114)
#define SMI_STS1_REG ((volatile unsigned char *)0xFEC02110)
#define SMI_STS2_REG ((volatile unsigned char *)0xFEC02111)
#define SMI_STS3_REG ((volatile unsigned char *)0xFEC02112)
#define SMI_STS4_REG ((volatile unsigned char *)0xFEC02113)
#define SMI_STS5_REG ((volatile unsigned char *)0xFEC02114)
#define SMI_EN1_REG ((volatile unsigned char *)0x00C02116)
#define SMI_EN2_REG ((volatile unsigned char *)0x00C02117)
#define SMI_EN3_REG ((volatile unsigned char *)0x00C02118)
#define SMI_EN4_REG ((volatile unsigned char *)0x00C02119)
#define SMI_EN5_REG ((volatile unsigned char *)0x00C0211A)
#define SMI_EN1_REG ((volatile unsigned char *)0xFEC02116)
#define SMI_EN2_REG ((volatile unsigned char *)0xFEC02117)
#define SMI_EN3_REG ((volatile unsigned char *)0xFEC02118)
#define SMI_EN4_REG ((volatile unsigned char *)0xFEC02119)
#define SMI_EN5_REG ((volatile unsigned char *)0xFEC0211A)
#define MSC_ST_REG ((volatile unsigned char *)0x00C0211C)
#define FORCE_DISK_CHANGE ((volatile unsigned char *)0x00C0211E)
#define FLOPPY_DATA_RATE ((volatile unsigned char *)0x00C0211F)
#define MSC_ST_REG ((volatile unsigned char *)0xFEC0211C)
#define FORCE_DISK_CHANGE ((volatile unsigned char *)0xFEC0211E)
#define FLOPPY_DATA_RATE ((volatile unsigned char *)0xFEC0211F)
#define UART1_FIFO_CTRL_SHDW ((volatile unsigned char *)0x00C02120)
#define UART2_FIFO_CTRL_SHDW ((volatile unsigned char *)0x00C02121)
#define DEV_DISABLE_REG ((volatile unsigned char *)0x00C02122)
#define UART1_FIFO_CTRL_SHDW ((volatile unsigned char *)0xFEC02120)
#define UART2_FIFO_CTRL_SHDW ((volatile unsigned char *)0xFEC02121)
#define DEV_DISABLE_REG ((volatile unsigned char *)0xFEC02122)
#define GP10_REG ((volatile unsigned char *)0x00C02123)
#define GP11_REG ((volatile unsigned char *)0x00C02124)
#define GP12_REG ((volatile unsigned char *)0x00C02125)
#define GP13_REG ((volatile unsigned char *)0x00C02126)
#define GP14_REG ((volatile unsigned char *)0x00C02127)
#define GP15_REG ((volatile unsigned char *)0x00C02128)
#define GP16_REG ((volatile unsigned char *)0x00C02129)
#define GP17_REG ((volatile unsigned char *)0x00C0212A)
#define GP10_REG ((volatile unsigned char *)0xFEC02123)
#define GP11_REG ((volatile unsigned char *)0xFEC02124)
#define GP12_REG ((volatile unsigned char *)0xFEC02125)
#define GP13_REG ((volatile unsigned char *)0xFEC02126)
#define GP14_REG ((volatile unsigned char *)0xFEC02127)
#define GP15_REG ((volatile unsigned char *)0xFEC02128)
#define GP16_REG ((volatile unsigned char *)0xFEC02129)
#define GP17_REG ((volatile unsigned char *)0xFEC0212A)
#define GP20_REG ((volatile unsigned char *)0x00C0212B)
#define GP21_REG ((volatile unsigned char *)0x00C0212C)
#define GP22_REG ((volatile unsigned char *)0x00C0212D)
#define GP23_REG ((volatile unsigned char *)0x00C0212E)
#define GP24_REG ((volatile unsigned char *)0x00C0212F)
#define GP25_REG ((volatile unsigned char *)0x00C02130)
#define GP26_REG ((volatile unsigned char *)0x00C02131)
#define GP27_REG ((volatile unsigned char *)0x00C02132)
#define GP20_REG ((volatile unsigned char *)0xFEC0212B)
#define GP21_REG ((volatile unsigned char *)0xFEC0212C)
#define GP22_REG ((volatile unsigned char *)0xFEC0212D)
#define GP23_REG ((volatile unsigned char *)0xFEC0212E)
#define GP24_REG ((volatile unsigned char *)0xFEC0212F)
#define GP25_REG ((volatile unsigned char *)0xFEC02130)
#define GP26_REG ((volatile unsigned char *)0xFEC02131)
#define GP27_REG ((volatile unsigned char *)0xFEC02132)
#define GP30_REG ((volatile unsigned char *)0x00C02133)
#define GP31_REG ((volatile unsigned char *)0x00C02134)
#define GP32_REG ((volatile unsigned char *)0x00C02135)
#define GP33_REG ((volatile unsigned char *)0x00C02136)
#define GP34_REG ((volatile unsigned char *)0x00C02137)
#define GP35_REG ((volatile unsigned char *)0x00C02138)
#define GP36_REG ((volatile unsigned char *)0x00C02139)
#define GP37_REG ((volatile unsigned char *)0x00C0213A)
#define GP30_REG ((volatile unsigned char *)0xFEC02133)
#define GP31_REG ((volatile unsigned char *)0xFEC02134)
#define GP32_REG ((volatile unsigned char *)0xFEC02135)
#define GP33_REG ((volatile unsigned char *)0xFEC02136)
#define GP34_REG ((volatile unsigned char *)0xFEC02137)
#define GP35_REG ((volatile unsigned char *)0xFEC02138)
#define GP36_REG ((volatile unsigned char *)0xFEC02139)
#define GP37_REG ((volatile unsigned char *)0xFEC0213A)
#define GP40_REG ((volatile unsigned char *)0x00C0213B)
#define GP41_REG ((volatile unsigned char *)0x00C0213C)
#define GP42_REG ((volatile unsigned char *)0x00C0213D)
#define GP43_REG ((volatile unsigned char *)0x00C0213E)
#define GP40_REG ((volatile unsigned char *)0xFEC0213B)
#define GP41_REG ((volatile unsigned char *)0xFEC0213C)
#define GP42_REG ((volatile unsigned char *)0xFEC0213D)
#define GP43_REG ((volatile unsigned char *)0xFEC0213E)
#define GP50_REG ((volatile unsigned char *)0x00C0213F)
#define GP51_REG ((volatile unsigned char *)0x00C02140)
#define GP52_REG ((volatile unsigned char *)0x00C02141)
#define GP53_REG ((volatile unsigned char *)0x00C02142)
#define GP54_REG ((volatile unsigned char *)0x00C02143)
#define GP55_REG ((volatile unsigned char *)0x00C02144)
#define GP56_REG ((volatile unsigned char *)0x00C02145)
#define GP57_REG ((volatile unsigned char *)0x00C02146)
#define GP50_REG ((volatile unsigned char *)0xFEC0213F)
#define GP51_REG ((volatile unsigned char *)0xFEC02140)
#define GP52_REG ((volatile unsigned char *)0xFEC02141)
#define GP53_REG ((volatile unsigned char *)0xFEC02142)
#define GP54_REG ((volatile unsigned char *)0xFEC02143)
#define GP55_REG ((volatile unsigned char *)0xFEC02144)
#define GP56_REG ((volatile unsigned char *)0xFEC02145)
#define GP57_REG ((volatile unsigned char *)0xFEC02146)
#define GP60_REG ((volatile unsigned char *)0x00C02147)
#define GP61_REG ((volatile unsigned char *)0x00C02148)
#define GP60_REG ((volatile unsigned char *)0xFEC02147)
#define GP61_REG ((volatile unsigned char *)0xFEC02148)
#define GP1_REG ((volatile unsigned char *)0x00C0214B)
#define GP2_REG ((volatile unsigned char *)0x00C0214C)
#define GP3_REG ((volatile unsigned char *)0x00C0214D)
#define GP4_REG ((volatile unsigned char *)0x00C0214E)
#define GP5_REG ((volatile unsigned char *)0x00C0214F)
#define GP6_REG ((volatile unsigned char *)0x00C02150)
#define GP1_REG ((volatile unsigned char *)0xFEC0214B)
#define GP2_REG ((volatile unsigned char *)0xFEC0214C)
#define GP3_REG ((volatile unsigned char *)0xFEC0214D)
#define GP4_REG ((volatile unsigned char *)0xFEC0214E)
#define GP5_REG ((volatile unsigned char *)0xFEC0214F)
#define GP6_REG ((volatile unsigned char *)0xFEC02150)
#define FAN1_REG ((volatile unsigned char *)0x00C02156)
#define FAN2_REG ((volatile unsigned char *)0x00C02157)
#define FAN_CTRL_REG ((volatile unsigned char *)0x00C02158)
#define FAN1_TACH_REG ((volatile unsigned char *)0x00C02159)
#define FAN2_TACH_REG ((volatile unsigned char *)0x00C0215A)
#define FAN1_PRELOAD_REG ((volatile unsigned char *)0x00C0215B)
#define FAN2_PRELOAD_REG ((volatile unsigned char *)0x00C0215C)
#define FAN1_REG ((volatile unsigned char *)0xFEC02156)
#define FAN2_REG ((volatile unsigned char *)0xFEC02157)
#define FAN_CTRL_REG ((volatile unsigned char *)0xFEC02158)
#define FAN1_TACH_REG ((volatile unsigned char *)0xFEC02159)
#define FAN2_TACH_REG ((volatile unsigned char *)0xFEC0215A)
#define FAN1_PRELOAD_REG ((volatile unsigned char *)0xFEC0215B)
#define FAN2_PRELOAD_REG ((volatile unsigned char *)0xFEC0215C)
#define LED1_REG ((volatile unsigned char *)0x00C0215D)
#define LED2_REG ((volatile unsigned char *)0x00C0215E)
#define KEYBOARD_SCAN_CODE ((volatile unsigned char *)0x00C0215F)
#define LED1_REG ((volatile unsigned char *)0xFEC0215D)
#define LED2_REG ((volatile unsigned char *)0xFEC0215E)
#define KEYBOARD_SCAN_CODE ((volatile unsigned char *)0xFEC0215F)
#endif

View file

@ -8,8 +8,8 @@
#include "sys_general.h"
#if MODEL == MODEL_FOENIX_A2560K
#define UART1_BASE 0x00C023F8 /* Base address for UART 1 (COM1) */
#define UART2_BASE 0x00C022F8 /* Base address for UART 2 (COM2) */
#define UART1_BASE 0xFEC023F8 /* Base address for UART 1 (COM1) */
#define UART2_BASE 0xFEC022F8 /* Base address for UART 2 (COM2) */
#elif MODEL == MODEL_FOENIX_A2560U || MODEL == MODEL_FOENIX_A2560U_PLUS
#define UART1_BASE 0x00B028F8 /* Base address for UART 1 (COM1) */

View file

@ -15,21 +15,6 @@
#include "dev/kbd_mo.h"
#endif
/*
* Initialize the indicators
*
* Generally, this means the indicators will all be turned off
*/
void ind_init() {
#if MODEL == MODEL_FOENIX_A2560K
/* The keyboard LEDs will be initialized by the keyboard code */
/* Turn off the power LED */
*RGB_LED_L = 0x0000;
*RGB_LED_H = 0x0000;
#endif
}
#if MODEL == MODEL_FOENIX_A2560K
short ind_state_color(short state) {
switch (state) {
@ -50,21 +35,18 @@ short ind_state_color(short state) {
void ind_set_power(short state) {
switch (state) {
case IND_ON:
/* Purple for on */
*RGB_LED_L = 0x00FF;
*RGB_LED_H = 0x00FF;
/* Dark green for on */
*RGB_LED = 0x00004000;
break;
case IND_ERROR:
/* Red for error */
*RGB_LED_L = 0x0000;
*RGB_LED_H = 0x0000;
*RGB_LED = 0x00FF0000;
break;
default:
/* Anything else is off */
*RGB_LED_L = 0x0000;
*RGB_LED_H = 0x0000;
*RGB_LED = 0;
break;
}
}
@ -128,3 +110,15 @@ void ind_set(short ind_number, short state) {
break;
}
}
/*
* Initialize the indicators
*
* Generally, this means the indicators will all be turned off
*/
void ind_init() {
ind_set(IND_POWER, IND_ON);
ind_set(IND_FDC, IND_OFF);
ind_set(IND_SDC, IND_OFF);
ind_set(IND_HDC, IND_OFF);
}

View file

@ -16,21 +16,21 @@ typedef void (*p_int_handler)();
#if MODEL == MODEL_FOENIX_A2560K
#define PENDING_GRP0 ((volatile unsigned short *)0x00C00100)
#define PENDING_GRP1 ((volatile unsigned short *)0x00C00102)
#define PENDING_GRP2 ((volatile unsigned short *)0x00C00104)
#define PENDING_GRP0 ((volatile unsigned short *)0xFEC00100)
#define PENDING_GRP1 ((volatile unsigned short *)0xFEC00102)
#define PENDING_GRP2 ((volatile unsigned short *)0xFEC00104)
#define POL_GRP0 ((volatile unsigned short *)0x00C00108)
#define POL_GRP1 ((volatile unsigned short *)0x00C0010A)
#define POL_GRP2 ((volatile unsigned short *)0x00C0010C)
#define POL_GRP0 ((volatile unsigned short *)0xFEC00108)
#define POL_GRP1 ((volatile unsigned short *)0xFEC0010A)
#define POL_GRP2 ((volatile unsigned short *)0xFEC0010C)
#define EDGE_GRP0 ((volatile unsigned short *)0x00C00110)
#define EDGE_GRP1 ((volatile unsigned short *)0x00C00112)
#define EDGE_GRP2 ((volatile unsigned short *)0x00C00114)
#define EDGE_GRP0 ((volatile unsigned short *)0xFEC00110)
#define EDGE_GRP1 ((volatile unsigned short *)0xFEC00112)
#define EDGE_GRP2 ((volatile unsigned short *)0xFEC00114)
#define MASK_GRP0 ((volatile unsigned short *)0x00C00118)
#define MASK_GRP1 ((volatile unsigned short *)0x00C0011A)
#define MASK_GRP2 ((volatile unsigned short *)0x00C0011C)
#define MASK_GRP0 ((volatile unsigned short *)0xFEC00118)
#define MASK_GRP1 ((volatile unsigned short *)0xFEC0011A)
#define MASK_GRP2 ((volatile unsigned short *)0xFEC0011C)
#elif MODEL == MODEL_FOENIX_A2560U || MODEL == MODEL_FOENIX_A2560U_PLUS

View file

@ -17,9 +17,9 @@
; PENDING_GRP1 = $00B00102
; PENDING_GRP2 = $00B00104
PENDING_GRP0 = $00C00100
PENDING_GRP1 = $00C00102
PENDING_GRP2 = $00C00104
PENDING_GRP0 = $FEC00100
PENDING_GRP1 = $FEC00102
PENDING_GRP2 = $FEC00104
section "vectors",code
@ -123,16 +123,17 @@ PENDING_GRP2 = $00C00104
code
coldboot: lea ___STACK,sp
coldboot: move.w $2700,SR ; Supervisor mode, Interrupt mode (68040), disable all interrupts
lea ___STACK,sp
bsr _int_disable_all
lea ___BSSSTART,a0
move.l #___BSSSIZE,d0
beq callmain
; clrloop: clr.l (a0)+
; subq.l #4,d0
; bne clrloop
clrloop: move.l #0,(a0)+
subq.l #4,d0
bne clrloop
; Set TRAP #15 vector handler
lea h_trap_15,a0 ; Address of the handler
@ -209,10 +210,14 @@ interrupt_x12:
;
interrupt_x1F:
move.w #$8000,(PENDING_GRP1) ; Clear the flag for INT 1F
movem.l d0-d7/a0-a6,-(a7) ; Save affected registers
move.w #($1f<<2),d0 ; Get the offset to interrupt 0x1f
bra int_dispatch ; And process the interrupt
clr.w d0
divu.w d0,d1
; movem.l d0-d7/a0-a6,-(a7) ; Save affected registers
; move.w #($1f<<2),d0 ; Get the offset to interrupt 0x1f
; bra int_dispatch ; And process the interrupt
jsr _rtc_handle_int
; movem.l (a7)+,d0-d7/a0-a6 ; Save affected registers
rte
;
; Interrupt Vector 0x21 -- SDCard Insert
;

14339
src/mapfile

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,268 @@
// Filename : BM437_IBM_Alt4_RevB.c
// Font Size : 8x16
// Memory usage : 4085 bytes
// # characters : 255
// Byte packing : Row
// Byte order : First pixel in first byte
// Bit order : First pixel MSB
// Built with TFT Font Factory, (c) TSX Software
// Please note: array data format is similar, but incompatible with UTFT library!
const unsigned char BM437_IBM_Model3_Alt4[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #0
0x00, 0x00, 0x00, 0x00, 0x7C, 0x82, 0xAA, 0x82, 0x82, 0xBA, 0x82, 0x7C, 0x00, 0x00, 0x00, 0x00, // #1
0x00, 0x00, 0x00, 0x00, 0x3C, 0x7E, 0x5A, 0x7E, 0x7E, 0x42, 0x7E, 0x3C, 0x00, 0x00, 0x00, 0x00, // #2
0x00, 0x00, 0x00, 0x00, 0x44, 0xEE, 0xFE, 0xFE, 0x7C, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // #3
0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x7C, 0xFE, 0x7C, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // #4
0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x10, 0x54, 0xFE, 0x54, 0x10, 0x38, 0x00, 0x00, 0x00, 0x00, // #5
0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x7C, 0xFE, 0xFE, 0x54, 0x10, 0x38, 0x00, 0x00, 0x00, 0x00, // #6
0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3C, 0x3C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #7
0x00, 0xFE, 0xFE, 0xFE, 0xFE, 0xEE, 0xC6, 0xC6, 0xEE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x00, // #8
0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x66, 0x42, 0x42, 0x66, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, // #9
0x00, 0xFE, 0xFE, 0xFE, 0xFE, 0xC6, 0x92, 0xBA, 0xBA, 0x92, 0xC6, 0xFE, 0xFE, 0xFE, 0xFE, 0x00, // #10
0x00, 0x00, 0x00, 0x1E, 0x06, 0x0A, 0x10, 0x78, 0x84, 0x84, 0x84, 0x78, 0x00, 0x00, 0x00, 0x00, // #11
0x00, 0x00, 0x00, 0x3C, 0x42, 0x42, 0x42, 0x3C, 0x18, 0x7E, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, // #12
0x00, 0x00, 0x00, 0x1E, 0x10, 0x1E, 0x10, 0x10, 0x10, 0x70, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00, // #13
0x00, 0x00, 0x00, 0x3E, 0x22, 0x3E, 0x22, 0x22, 0x22, 0x2E, 0xEE, 0xEC, 0xC0, 0x00, 0x00, 0x00, // #14
0x00, 0x00, 0x00, 0x10, 0x92, 0x54, 0x38, 0xEE, 0x38, 0x54, 0x92, 0x10, 0x00, 0x00, 0x00, 0x00, // #15
0x00, 0x00, 0x00, 0x40, 0x60, 0x70, 0x78, 0x7C, 0x78, 0x70, 0x60, 0x40, 0x00, 0x00, 0x00, 0x00, // #16
0x00, 0x00, 0x00, 0x04, 0x0C, 0x1C, 0x3C, 0x7C, 0x3C, 0x1C, 0x0C, 0x04, 0x00, 0x00, 0x00, 0x00, // #17
0x00, 0x00, 0x00, 0x10, 0x38, 0x54, 0x10, 0x10, 0x10, 0x54, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, // #18
0x00, 0x00, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x00, 0x44, 0x44, 0x00, 0x00, 0x00, 0x00, // #19
0x00, 0x00, 0x00, 0x7E, 0x92, 0x92, 0x92, 0x72, 0x12, 0x12, 0x12, 0x12, 0x00, 0x00, 0x00, 0x00, // #20
0x00, 0x00, 0x3C, 0x42, 0x20, 0x3C, 0x42, 0x42, 0x42, 0x3C, 0x04, 0x42, 0x3C, 0x00, 0x00, 0x00, // #21
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, // #22
0x00, 0x00, 0x10, 0x38, 0x54, 0x10, 0x10, 0x10, 0x54, 0x38, 0x10, 0x7C, 0x00, 0x00, 0x00, 0x00, // #23
0x00, 0x00, 0x00, 0x10, 0x38, 0x54, 0x92, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, // #24
0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x92, 0x54, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, // #25
0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x04, 0xFE, 0x04, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // #26
0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x40, 0xFE, 0x40, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, // #27
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #28
0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x42, 0xFF, 0x42, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #29
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #30
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #31
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #32
0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, // #33
0x00, 0x00, 0x24, 0x24, 0x24, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #34
0x00, 0x00, 0x00, 0x44, 0x44, 0xFE, 0x44, 0x44, 0x44, 0xFE, 0x44, 0x44, 0x00, 0x00, 0x00, 0x00, // #35
0x00, 0x00, 0x10, 0x7C, 0x92, 0x90, 0x90, 0x7C, 0x12, 0x12, 0x92, 0x7C, 0x10, 0x00, 0x00, 0x00, // #36
0x00, 0x00, 0x00, 0x62, 0x92, 0x64, 0x08, 0x10, 0x20, 0x4C, 0x92, 0x8C, 0x00, 0x00, 0x00, 0x00, // #37
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #38
0x00, 0x00, 0x30, 0x10, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #39
0x00, 0x00, 0x08, 0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, // #40
0x00, 0x00, 0x20, 0x10, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, // #41
0x00, 0x00, 0x00, 0x10, 0x54, 0x38, 0xFE, 0x38, 0x54, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #42
0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0xFE, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #43
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x10, 0x20, 0x00, 0x00, // #44
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #45
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, // #46
0x00, 0x00, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, // #47
0x00, 0x00, 0x3C, 0x42, 0x42, 0x46, 0x4A, 0x52, 0x62, 0x42, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, // #48
0x00, 0x00, 0x04, 0x0C, 0x14, 0x24, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, // #49
0x00, 0x00, 0x3C, 0x42, 0x02, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x7E, 0x00, 0x00, 0x00, 0x00, // #50
0x00, 0x00, 0x3C, 0x42, 0x02, 0x02, 0x1C, 0x02, 0x02, 0x02, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, // #51
0x00, 0x00, 0x04, 0x0C, 0x14, 0x24, 0x44, 0x84, 0xFE, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, // #52
0x00, 0x00, 0x7E, 0x40, 0x40, 0x40, 0x7C, 0x02, 0x02, 0x02, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, // #53
0x00, 0x00, 0x3C, 0x40, 0x40, 0x40, 0x7C, 0x42, 0x42, 0x42, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, // #54
0x00, 0x00, 0x7E, 0x02, 0x02, 0x04, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, // #55
0x00, 0x00, 0x38, 0x44, 0x82, 0x44, 0x38, 0x44, 0x82, 0x82, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00, // #56
0x00, 0x00, 0x3C, 0x42, 0x42, 0x42, 0x42, 0x3E, 0x02, 0x02, 0x02, 0x3C, 0x00, 0x00, 0x00, 0x00, // #57
0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #58
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x08, 0x10, 0x00, 0x00, // #59
0x00, 0x00, 0x00, 0x04, 0x08, 0x10, 0x20, 0x40, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, // #60
0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #61
0x00, 0x00, 0x00, 0x40, 0x20, 0x10, 0x08, 0x04, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, // #62
0x00, 0x00, 0x3C, 0x42, 0x02, 0x02, 0x04, 0x08, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, // #63
0x00, 0x00, 0x00, 0x7C, 0x82, 0xBA, 0xAA, 0xAA, 0xAA, 0x9C, 0x80, 0x7C, 0x00, 0x00, 0x00, 0x00, // #64
0x00, 0x00, 0x18, 0x24, 0x42, 0x42, 0x42, 0x7E, 0x42, 0x42, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00, // #65
0x00, 0x00, 0x7C, 0x42, 0x42, 0x42, 0x7C, 0x42, 0x42, 0x42, 0x42, 0x7C, 0x00, 0x00, 0x00, 0x00, // #66
0x00, 0x00, 0x3C, 0x42, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, // #67
0x00, 0x00, 0x78, 0x44, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x44, 0x78, 0x00, 0x00, 0x00, 0x00, // #68
0x00, 0x00, 0x7E, 0x40, 0x40, 0x40, 0x7C, 0x40, 0x40, 0x40, 0x40, 0x7E, 0x00, 0x00, 0x00, 0x00, // #69
0x00, 0x00, 0x7E, 0x40, 0x40, 0x40, 0x7C, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, // #70
0x00, 0x00, 0x3E, 0x40, 0x40, 0x40, 0x4E, 0x42, 0x42, 0x42, 0x42, 0x3E, 0x00, 0x00, 0x00, 0x00, // #71
0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x7E, 0x42, 0x42, 0x42, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00, // #72
0x00, 0x00, 0x1C, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x1C, 0x00, 0x00, 0x00, 0x00, // #73
0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x42, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, // #74
0x00, 0x00, 0x42, 0x44, 0x48, 0x50, 0x60, 0x60, 0x50, 0x48, 0x44, 0x42, 0x00, 0x00, 0x00, 0x00, // #75
0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7E, 0x00, 0x00, 0x00, 0x00, // #76
0x00, 0x00, 0x82, 0xC6, 0xAA, 0x92, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x00, 0x00, 0x00, 0x00, // #77
0x00, 0x00, 0x82, 0xC2, 0xA2, 0xA2, 0x92, 0x92, 0x8A, 0x8A, 0x86, 0x82, 0x00, 0x00, 0x00, 0x00, // #78
0x00, 0x00, 0x3C, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, // #79
0x00, 0x00, 0x7C, 0x42, 0x42, 0x42, 0x42, 0x7C, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, // #80
0x00, 0x00, 0x3C, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x52, 0x4A, 0x3C, 0x04, 0x02, 0x00, 0x00, // #81
0x00, 0x00, 0x7C, 0x42, 0x42, 0x42, 0x42, 0x7C, 0x48, 0x44, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00, // #82
0x00, 0x00, 0x3E, 0x40, 0x40, 0x40, 0x3C, 0x02, 0x02, 0x02, 0x02, 0x7C, 0x00, 0x00, 0x00, 0x00, // #83
0x00, 0x00, 0xFE, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, // #84
0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, // #85
0x00, 0x00, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x44, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, // #86
0x00, 0x00, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x92, 0xAA, 0xC6, 0x82, 0x00, 0x00, 0x00, 0x00, // #87
0x00, 0x00, 0x82, 0x82, 0x44, 0x28, 0x10, 0x10, 0x28, 0x44, 0x82, 0x82, 0x00, 0x00, 0x00, 0x00, // #88
0x00, 0x00, 0x82, 0x82, 0x82, 0x44, 0x28, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, // #89
0x00, 0x00, 0xFE, 0x02, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0xFE, 0x00, 0x00, 0x00, 0x00, // #90
0x00, 0x00, 0x3C, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x00, 0x00, 0x00, 0x00, // #91
0x00, 0x00, 0x40, 0x40, 0x20, 0x20, 0x10, 0x10, 0x08, 0x08, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, // #92
0x00, 0x00, 0x3C, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x3C, 0x00, 0x00, 0x00, 0x00, // #93
0x00, 0x00, 0x10, 0x28, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #94
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, // #95
0x00, 0x00, 0x10, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #96
0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x02, 0x02, 0x3E, 0x42, 0x42, 0x3E, 0x00, 0x00, 0x00, 0x00, // #97
0x00, 0x00, 0x40, 0x40, 0x40, 0x7C, 0x42, 0x42, 0x42, 0x42, 0x42, 0x7C, 0x00, 0x00, 0x00, 0x00, // #98
0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x40, 0x40, 0x40, 0x40, 0x40, 0x3E, 0x00, 0x00, 0x00, 0x00, // #99
0x00, 0x00, 0x02, 0x02, 0x02, 0x3E, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3E, 0x00, 0x00, 0x00, 0x00, // #100
0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x42, 0x42, 0x7E, 0x40, 0x40, 0x3E, 0x00, 0x00, 0x00, 0x00, // #101
0x00, 0x00, 0x0E, 0x10, 0x10, 0x7E, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, // #102
0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3E, 0x02, 0x02, 0x3C, 0x00, // #103
0x00, 0x00, 0x40, 0x40, 0x40, 0x7C, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00, // #104
0x00, 0x00, 0x08, 0x08, 0x00, 0x38, 0x08, 0x08, 0x08, 0x08, 0x08, 0x3E, 0x00, 0x00, 0x00, 0x00, // #105
0x00, 0x00, 0x04, 0x04, 0x00, 0x1C, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x78, 0x00, // #106
0x00, 0x00, 0x40, 0x40, 0x40, 0x42, 0x44, 0x48, 0x70, 0x48, 0x44, 0x42, 0x00, 0x00, 0x00, 0x00, // #107
0x00, 0x00, 0x38, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x3E, 0x00, 0x00, 0x00, 0x00, // #108
0x00, 0x00, 0x00, 0x00, 0x00, 0xEC, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x00, 0x00, 0x00, 0x00, // #109
0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00, // #110
0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, // #111
0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x42, 0x42, 0x42, 0x42, 0x42, 0x7C, 0x40, 0x40, 0x40, 0x00, // #112
0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3E, 0x02, 0x02, 0x02, 0x00, // #113
0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x60, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, // #114
0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x40, 0x40, 0x3C, 0x02, 0x02, 0x7C, 0x00, 0x00, 0x00, 0x00, // #115
0x00, 0x00, 0x00, 0x10, 0x10, 0x7E, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0E, 0x00, 0x00, 0x00, 0x00, // #116
0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3E, 0x00, 0x00, 0x00, 0x00, // #117
0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, // #118
0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x6C, 0x00, 0x00, 0x00, 0x00, // #119
0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x42, 0x24, 0x18, 0x24, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00, // #120
0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3E, 0x02, 0x02, 0x3C, 0x00, // #121
0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x04, 0x08, 0x10, 0x20, 0x40, 0x7E, 0x00, 0x00, 0x00, 0x00, // #122
0x00, 0x00, 0x0C, 0x10, 0x10, 0x10, 0x20, 0x20, 0x10, 0x10, 0x10, 0x0C, 0x00, 0x00, 0x00, 0x00, // #123
0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, // #124
0x00, 0x00, 0x30, 0x08, 0x08, 0x08, 0x04, 0x04, 0x08, 0x08, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00, // #125
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x92, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #126
0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0x44, 0x82, 0x82, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, // #127
0x00, 0x00, 0x3C, 0x42, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x42, 0x3C, 0x04, 0x02, 0x3C, 0x00, // #128
0x00, 0x00, 0x00, 0x24, 0x24, 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, // #129
0x00, 0x00, 0x04, 0x08, 0x10, 0x00, 0x3C, 0x42, 0x42, 0x7E, 0x40, 0x3E, 0x00, 0x00, 0x00, 0x00, // #130
0x00, 0x00, 0x10, 0x28, 0x44, 0x00, 0x3C, 0x02, 0x3E, 0x42, 0x42, 0x3E, 0x00, 0x00, 0x00, 0x00, // #131
0x00, 0x00, 0x00, 0x24, 0x24, 0x00, 0x3C, 0x02, 0x3E, 0x42, 0x42, 0x3E, 0x00, 0x00, 0x00, 0x00, // #132
0x00, 0x00, 0x10, 0x08, 0x04, 0x00, 0x3C, 0x02, 0x3E, 0x42, 0x42, 0x3E, 0x00, 0x00, 0x00, 0x00, // #133
0x00, 0x00, 0x1C, 0x22, 0x1C, 0x00, 0x3C, 0x02, 0x3E, 0x42, 0x42, 0x3E, 0x00, 0x00, 0x00, 0x00, // #134
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x42, 0x40, 0x40, 0x42, 0x3C, 0x08, 0x04, 0x78, 0x00, // #135
0x00, 0x00, 0x18, 0x24, 0x42, 0x00, 0x3C, 0x42, 0x7E, 0x40, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, // #136
0x00, 0x00, 0x00, 0x24, 0x24, 0x00, 0x3C, 0x42, 0x7E, 0x40, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, // #137
0x00, 0x00, 0x20, 0x10, 0x08, 0x00, 0x3C, 0x42, 0x7E, 0x40, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, // #138
0x00, 0x00, 0x00, 0x22, 0x22, 0x00, 0x38, 0x08, 0x08, 0x08, 0x08, 0x3E, 0x00, 0x00, 0x00, 0x00, // #139
0x00, 0x00, 0x08, 0x14, 0x22, 0x00, 0x38, 0x08, 0x08, 0x08, 0x08, 0x3E, 0x00, 0x00, 0x00, 0x00, // #140
0x00, 0x00, 0x10, 0x08, 0x04, 0x00, 0x38, 0x08, 0x08, 0x08, 0x08, 0x3E, 0x00, 0x00, 0x00, 0x00, // #141
0x00, 0x66, 0x00, 0x18, 0x24, 0x42, 0x42, 0x7E, 0x42, 0x42, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00, // #142
0x00, 0x18, 0x24, 0x18, 0x24, 0x42, 0x42, 0x7E, 0x42, 0x42, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00, // #143
0x00, 0x0C, 0x30, 0x00, 0x7C, 0x40, 0x40, 0x78, 0x40, 0x40, 0x40, 0x7C, 0x00, 0x00, 0x00, 0x00, // #144
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x12, 0x7C, 0x90, 0x92, 0x7C, 0x00, 0x00, 0x00, 0x00, // #145
0x00, 0x00, 0x00, 0x3E, 0x48, 0x88, 0x88, 0xFE, 0x88, 0x88, 0x88, 0x8E, 0x00, 0x00, 0x00, 0x00, // #146
0x00, 0x00, 0x00, 0x18, 0x24, 0x00, 0x3C, 0x42, 0x42, 0x42, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, // #147
0x00, 0x00, 0x00, 0x24, 0x42, 0x00, 0x3C, 0x42, 0x42, 0x42, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, // #148
0x00, 0x00, 0x20, 0x10, 0x08, 0x00, 0x3C, 0x42, 0x42, 0x42, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, // #149
0x00, 0x00, 0x18, 0x24, 0x42, 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3E, 0x00, 0x00, 0x00, 0x00, // #150
0x00, 0x00, 0x20, 0x10, 0x08, 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3E, 0x00, 0x00, 0x00, 0x00, // #151
0x00, 0x00, 0x24, 0x24, 0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3E, 0x02, 0x3C, 0x00, 0x00, // #152
0x00, 0xC6, 0x00, 0x7C, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x7C, 0x00, 0x00, 0x00, 0x00, // #153
0x00, 0xC6, 0x00, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x7C, 0x00, 0x00, 0x00, 0x00, // #154
0x00, 0x00, 0x10, 0x10, 0x7C, 0x82, 0x80, 0x80, 0x82, 0x7C, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, // #155
0x00, 0x00, 0x38, 0x44, 0x44, 0x40, 0xF0, 0x40, 0x40, 0x60, 0xD6, 0xCC, 0x00, 0x00, 0x00, 0x00, // #156
0x00, 0x00, 0x82, 0x44, 0x28, 0x10, 0x10, 0x7C, 0x10, 0x7C, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, // #157
0x00, 0x00, 0xF8, 0x84, 0x84, 0x84, 0xF8, 0x80, 0x88, 0x9E, 0x88, 0x88, 0x06, 0x00, 0x00, 0x00, // #158
0x00, 0x00, 0x0C, 0x12, 0x10, 0x10, 0x10, 0x7C, 0x10, 0x10, 0x10, 0x90, 0x60, 0x00, 0x00, 0x00, // #159
0x00, 0x00, 0x08, 0x10, 0x20, 0x00, 0x3C, 0x02, 0x3E, 0x42, 0x42, 0x3E, 0x00, 0x00, 0x00, 0x00, // #160
0x00, 0x00, 0x04, 0x08, 0x10, 0x00, 0x38, 0x08, 0x08, 0x08, 0x08, 0x3E, 0x00, 0x00, 0x00, 0x00, // #161
0x00, 0x00, 0x08, 0x10, 0x20, 0x00, 0x3C, 0x42, 0x42, 0x42, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, // #162
0x00, 0x00, 0x08, 0x10, 0x20, 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3E, 0x00, 0x00, 0x00, 0x00, // #163
0x00, 0x00, 0x00, 0x32, 0x4C, 0x00, 0x7C, 0x42, 0x42, 0x42, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00, // #164
0x00, 0x32, 0x4C, 0x00, 0x82, 0xC2, 0xA2, 0x92, 0x8A, 0x86, 0x82, 0x82, 0x00, 0x00, 0x00, 0x00, // #165
0x00, 0x00, 0x00, 0x3C, 0x44, 0x44, 0x3E, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #166
0x00, 0x00, 0x00, 0x3C, 0x42, 0x42, 0x3C, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #167
0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x10, 0x20, 0x40, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, // #168
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #169
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #170
0x00, 0x20, 0x60, 0x20, 0x22, 0x24, 0x08, 0x10, 0x20, 0x4C, 0x92, 0x04, 0x08, 0x1E, 0x00, 0x00, // #171
0x00, 0x20, 0x60, 0x20, 0x22, 0x24, 0x08, 0x10, 0x22, 0x46, 0x8A, 0x1E, 0x02, 0x02, 0x00, 0x00, // #172
0x00, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, // #173
0x00, 0x00, 0x00, 0x09, 0x12, 0x24, 0x48, 0x90, 0x48, 0x24, 0x12, 0x09, 0x00, 0x00, 0x00, 0x00, // #174
0x00, 0x00, 0x00, 0x90, 0x48, 0x24, 0x12, 0x09, 0x12, 0x24, 0x48, 0x90, 0x00, 0x00, 0x00, 0x00, // #175
0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, // #176
0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, // #177
0x77, 0xDD, 0x77, 0xDD, 0x77, 0xDD, 0x77, 0xDD, 0x77, 0xDD, 0x77, 0xDD, 0x77, 0xDD, 0x77, 0xDD, // #178
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, // #179
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, // #180
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xF8, 0x18, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, // #181
0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xF6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, // #182
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, // #183
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x18, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, // #184
0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xF6, 0x06, 0xF6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, // #185
0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, // #186
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x06, 0xF6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, // #187
0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xF6, 0x06, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #188
0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #189
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xF8, 0x18, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #190
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, // #191
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #192
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #193
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, // #194
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, // #195
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #196
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, // #197
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x18, 0x1F, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, // #198
0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, // #199
0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x30, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #200
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x30, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, // #201
0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xF7, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #202
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xF7, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, // #203
0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x30, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, // #204
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #205
0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xF7, 0x00, 0xF7, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, // #206
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #207
0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #208
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, // #209
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, // #210
0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #211
0x1C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x18, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #212
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x18, 0x1F, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, // #213
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, // #214
0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xFF, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, // #215
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0x18, 0xFF, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, // #216
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #217
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, // #218
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // #219
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // #220
0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, // #221
0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, // #222
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #223
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x88, 0x88, 0x88, 0x76, 0x00, 0x00, 0x00, 0x00, // #224
0x00, 0x00, 0x00, 0x1C, 0x22, 0x42, 0x42, 0x7C, 0x42, 0x42, 0x42, 0x7C, 0x40, 0x40, 0x00, 0x00, // #225
0x00, 0x00, 0x00, 0xFE, 0x42, 0x42, 0x40, 0x40, 0x40, 0x40, 0x40, 0xE0, 0x00, 0x00, 0x00, 0x00, // #226
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x24, 0x24, 0x24, 0x64, 0x00, 0x00, 0x00, 0x00, // #227
0x00, 0x00, 0x00, 0xFE, 0x82, 0x40, 0x20, 0x10, 0x20, 0x40, 0x82, 0xFE, 0x00, 0x00, 0x00, 0x00, // #228
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x44, 0x44, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00, // #229
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x7C, 0x40, 0x40, 0x80, 0x00, // #230
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x10, 0x10, 0x10, 0x10, 0x20, 0x00, 0x00, 0x00, // #231
0x00, 0x00, 0x00, 0x10, 0x10, 0x38, 0x54, 0x92, 0x92, 0x92, 0x54, 0x38, 0x10, 0x10, 0x00, 0x00, // #232
0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0x82, 0xFE, 0x82, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00, // #233
0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0x82, 0x82, 0x82, 0x44, 0xC6, 0x00, 0x00, 0x00, 0x00, // #234
0x00, 0x00, 0x00, 0x1C, 0x22, 0x20, 0x10, 0x18, 0x24, 0x42, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00, // #235
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xAA, 0x92, 0xAA, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, // #236
0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x44, 0x8A, 0x92, 0xA2, 0x44, 0xB8, 0x00, 0x00, 0x00, 0x00, // #237
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x40, 0x7C, 0x40, 0x3E, 0x00, 0x00, 0x00, 0x00, // #238
0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x00, 0x00, 0x00, 0x00, // #239
0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #240
0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x7C, 0x10, 0x10, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, // #241
0x00, 0x00, 0x00, 0x20, 0x10, 0x08, 0x04, 0x08, 0x10, 0x20, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, // #242
0x00, 0x00, 0x00, 0x04, 0x08, 0x10, 0x20, 0x10, 0x08, 0x04, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, // #243
0x00, 0x00, 0x00, 0x0E, 0x11, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, // #244
0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x90, 0x60, 0x00, 0x00, 0x00, // #245
0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, // #246
0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x92, 0x0C, 0x60, 0x92, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, // #247
0x00, 0x00, 0x30, 0x48, 0x48, 0x48, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #248
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #249
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #250
0x00, 0x00, 0x00, 0x00, 0x3E, 0x20, 0x20, 0x20, 0x20, 0xA0, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00, // #251
0x00, 0x00, 0x70, 0x48, 0x48, 0x48, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #252
0x00, 0x00, 0x30, 0x48, 0x10, 0x20, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #253
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #254
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // #255
};

View file

@ -600,7 +600,7 @@ short sys_fsys_register_loader(const char * extension, p_file_loader loader) {
* Returns:
* the number of jiffies since the last reset
*/
extern long sys_time_jiffies() {
long sys_time_jiffies() {
return syscall(KFN_TIME_JIFFIES);
}

13
vbcc/config/a2560k_ram Normal file
View file

@ -0,0 +1,13 @@
-cc=vbccm68k -quiet %s -o= %s %s -O=%ld -I%%VBCC%%\targets\m68k-foenix\include
-ccv=vbccm68k %s -o= %s %s -O=%ld -I%%VBCC%%\targets\m68k-foenix\include
-as=vasmm68k_mot -quiet -Fvobj -nowarn=62 %s -o %s
-asv=vasmm68k_mot -Fvobj -nowarn=62 %s -o %s
-rm=del %s
-rmv=del %s
-ld=vlink -bsrec28 -x -Cvbcc m68040\startup_m68040.o %s %s -L%%VBCC%%\targets\m68k-foenix\lib -T%%VBCC%%\targets\m68k-foenix\vlink.cmd -lvc -o %s -Mmapfile
-l2=vlink -bsrec28 -x -Cvbcc %s %s -L%%VBCC%%\targets\m68k-foenix\lib -T%%VBCC%%\targets\m68k-foenix\vlink.cmd -o %s -Mmapfile
-ldv=vlink -bsrec28 -t -x -Cvbcc m68040\startup.o %s %s -L%%VBCC%%\targets\m68k-foenix\lib -T%%VBCC%%\targets\m68k-foenix\vlink.cmd -lvc -o %s -Mmapfile
-l2v=vlink -bsrec28 -t -x -Cvbcc %s %s -L%%VBCC%%\targets\m68k-foenix\lib -T%%VBCC%%\targets\m68k-foenix\vlink.cmd -o %s -Mmapfile
-ul=-l%s
-cf=-F%s
-ml=1000