mirror of
https://github.com/mist-devel/mist-firmware.git
synced 2026-01-13 15:17:43 +00:00
TOS: add Cubase dongle support to the menu
This commit is contained in:
parent
07985e9ec0
commit
bf3c1df30b
86
tos.c
86
tos.c
@ -1074,13 +1074,12 @@ void tos_upload(const char *name) {
|
||||
// let cpu run (release reset)
|
||||
config.system_ctrl &= ~TOS_CONTROL_CPU_RESET;
|
||||
|
||||
// send ethernet config, too
|
||||
if (eth_present)
|
||||
config.system_ctrl |= TOS_CONTROL_ETHERNET;
|
||||
else
|
||||
config.system_ctrl &= ~TOS_CONTROL_ETHERNET;
|
||||
unsigned long system_ctrl = config.system_ctrl;;
|
||||
|
||||
mist_set_control(config.system_ctrl);
|
||||
// adjust for detected ethernet adapter
|
||||
if (!eth_present) system_ctrl &= ~TOS_CONTROL_ETHERNET;
|
||||
|
||||
mist_set_control(system_ctrl);
|
||||
}
|
||||
|
||||
|
||||
@ -1395,6 +1394,7 @@ static const char* atari_chipset[]={"ST","STE","MegaSTE","STEroids"};
|
||||
static const char *config_tos_mem[] = {"512 kB", "1 MB", "2 MB", "4 MB", "8 MB", "14 MB", "--", "--" };
|
||||
static const char *config_tos_wrprot[] = {"none", "A:", "B:", "A: and B:"};
|
||||
static const char *config_tos_usb[] = {"none", "control", "debug", "serial", "parallel", "midi"};
|
||||
static const char *config_tos_cart[] = {"File", "Ethernec", "Cubase"};
|
||||
|
||||
static char tos_file_selected(uint8_t idx, const char *SelectedName) {
|
||||
|
||||
@ -1413,7 +1413,7 @@ static char tos_file_selected(uint8_t idx, const char *SelectedName) {
|
||||
case 16: // TOS
|
||||
tos_upload(SelectedName);
|
||||
break;
|
||||
case 17: // Cart
|
||||
case 18: // Cart
|
||||
tos_load_cartridge(SelectedName);
|
||||
break;
|
||||
}
|
||||
@ -1447,8 +1447,8 @@ static char tos_getmenuitem(uint8_t idx, char action, menu_item_t *item) {
|
||||
item->item = "";
|
||||
if(idx<=6) item->page = 0;
|
||||
else if(idx<=13) item->page = 1;
|
||||
else if(idx<=20) item->page = 2;
|
||||
else if(idx<=27) item->page = 3;
|
||||
else if(idx<=21) item->page = 2;
|
||||
else if(idx<=28) item->page = 3;
|
||||
else if(idx<=33) item->page = 6;
|
||||
else if(idx<=39) item->page = 4;
|
||||
else if(idx<=45) item->page = 5;
|
||||
@ -1539,33 +1539,45 @@ static char tos_getmenuitem(uint8_t idx, char action, menu_item_t *item) {
|
||||
strcat(s, tos_get_image_name());
|
||||
item->item = s;
|
||||
break;
|
||||
case 17:
|
||||
case 17: {
|
||||
uint8_t cartport = ((tos_system_ctrl() & TOS_CONTROL_ETHERNET) ? 1 : 0) |
|
||||
((tos_system_ctrl() & TOS_CONTROL_CUBASE) ? 2 : 0);
|
||||
strcpy(s, " Cart.port: ");
|
||||
strcat(s, config_tos_cart[cartport]);
|
||||
item->item = s;
|
||||
}
|
||||
break;
|
||||
case 18:
|
||||
strcpy(s, " Cartridge: ");
|
||||
strcat(s, tos_get_cartridge_name());
|
||||
item->item = s;
|
||||
if (tos_system_ctrl() & (TOS_CONTROL_ETHERNET | TOS_CONTROL_CUBASE)) {
|
||||
item->active = 0;
|
||||
item->stipple = 1;
|
||||
}
|
||||
break;
|
||||
case 18:
|
||||
case 19:
|
||||
strcpy(s, " USB I/O: ");
|
||||
strcat(s, config_tos_usb[tos_get_cdc_control_redirect()]);
|
||||
item->item = s;
|
||||
break;
|
||||
case 19:
|
||||
case 20:
|
||||
item->item = " Reset";
|
||||
break;
|
||||
case 20:
|
||||
case 21:
|
||||
item->item = " Cold boot";
|
||||
break;
|
||||
|
||||
// Page 3 - A/V
|
||||
case 1:
|
||||
case 21:
|
||||
case 22:
|
||||
strcpy(s, " Screen: ");
|
||||
if (idx==1) strcat(s, " ");
|
||||
if(tos_system_ctrl() & TOS_CONTROL_VIDEO_COLOR) strcat(s, "Color");
|
||||
else strcat(s, "Mono");
|
||||
item->item = s;
|
||||
break;
|
||||
case 22: // Viking card can only be enabled with max 8MB RAM
|
||||
case 23: // Viking card can only be enabled with max 8MB RAM
|
||||
enable = (tos_system_ctrl()&0xe) <= TOS_MEMCONFIG_8M;
|
||||
strcpy(s, " Viking/SM194: ");
|
||||
strcat(s, ((tos_system_ctrl() & TOS_CONTROL_VIKING) && enable)?"on":"off");
|
||||
@ -1573,7 +1585,7 @@ static char tos_getmenuitem(uint8_t idx, char action, menu_item_t *item) {
|
||||
item->active = enable;
|
||||
item->stipple = !enable;
|
||||
break;
|
||||
case 23:
|
||||
case 24:
|
||||
// Blitter is always present in >= STE
|
||||
enable = (tos_system_ctrl() & (TOS_CONTROL_STE | TOS_CONTROL_MSTE))?1:0;
|
||||
strcpy(s, " Blitter: ");
|
||||
@ -1582,13 +1594,13 @@ static char tos_getmenuitem(uint8_t idx, char action, menu_item_t *item) {
|
||||
item->active = !enable;
|
||||
item->stipple = enable;
|
||||
break;
|
||||
case 24:
|
||||
case 25:
|
||||
strcpy(s, " Chipset: ");
|
||||
// extract TOS_CONTROL_STE and TOS_CONTROL_MSTE bits
|
||||
strcat(s, atari_chipset[(tos_system_ctrl()>>23)&3]);
|
||||
item->item = s;
|
||||
break;
|
||||
case 25:
|
||||
case 26:
|
||||
if(user_io_core_type() == CORE_TYPE_MIST) {
|
||||
item->item = " Video adjust";
|
||||
item->newpage = 6;
|
||||
@ -1598,12 +1610,12 @@ static char tos_getmenuitem(uint8_t idx, char action, menu_item_t *item) {
|
||||
item->item = s;
|
||||
}
|
||||
break;
|
||||
case 26:
|
||||
case 27:
|
||||
strcpy(s, " YM-Audio: ");
|
||||
strcat(s, stereo[(tos_system_ctrl() & TOS_CONTROL_STEREO)?1:0]);
|
||||
item->item = s;
|
||||
break;
|
||||
case 27:
|
||||
case 28:
|
||||
if(user_io_core_type() == CORE_TYPE_MIST) {
|
||||
item->item = "";
|
||||
item->active = 0;
|
||||
@ -1718,49 +1730,61 @@ static char tos_getmenuitem(uint8_t idx, char action, menu_item_t *item) {
|
||||
case 16: // TOS
|
||||
SelectFileNG("IMG", SCAN_LFN, tos_file_selected, 0);
|
||||
break;
|
||||
case 17: // Cart
|
||||
case 17: {
|
||||
unsigned long system_ctrl = tos_system_ctrl();
|
||||
uint8_t cartport = ((system_ctrl & TOS_CONTROL_ETHERNET) ? 1 : 0) |
|
||||
((system_ctrl & TOS_CONTROL_CUBASE) ? 2 : 0);
|
||||
cartport += 1;
|
||||
if (cartport>2) cartport = 0;
|
||||
system_ctrl &= ~(TOS_CONTROL_ETHERNET | TOS_CONTROL_CUBASE);
|
||||
if (cartport & 1) system_ctrl |= TOS_CONTROL_ETHERNET;
|
||||
if (cartport & 2) system_ctrl |= TOS_CONTROL_CUBASE;
|
||||
tos_update_sysctrl(system_ctrl);
|
||||
}
|
||||
break;
|
||||
case 18: // Cart
|
||||
// if a cart name is set, then remove it
|
||||
if(tos_cartridge_is_inserted()) {
|
||||
tos_load_cartridge("");
|
||||
} else
|
||||
SelectFileNG("IMG", SCAN_LFN, tos_file_selected, 0);
|
||||
break;
|
||||
case 18:
|
||||
case 19:
|
||||
if(tos_get_cdc_control_redirect() == CDC_REDIRECT_MIDI)
|
||||
tos_set_cdc_control_redirect(CDC_REDIRECT_NONE);
|
||||
else
|
||||
tos_set_cdc_control_redirect(tos_get_cdc_control_redirect()+1);
|
||||
break;
|
||||
case 19: // Reset
|
||||
case 20: // Reset
|
||||
tos_reset(0);
|
||||
CloseMenu();
|
||||
break;
|
||||
case 20: // Cold Boot
|
||||
case 21: // Cold Boot
|
||||
tos_reset(1);
|
||||
CloseMenu();
|
||||
break;
|
||||
|
||||
case 1:
|
||||
case 21:
|
||||
case 22:
|
||||
tos_update_sysctrl(tos_system_ctrl() ^ TOS_CONTROL_VIDEO_COLOR);
|
||||
break;
|
||||
case 22:
|
||||
case 23:
|
||||
// viking/sm194
|
||||
tos_update_sysctrl(tos_system_ctrl() ^ TOS_CONTROL_VIKING);
|
||||
break;
|
||||
case 23:
|
||||
case 24:
|
||||
if(!(tos_system_ctrl() & TOS_CONTROL_STE)) {
|
||||
tos_update_sysctrl(tos_system_ctrl() ^ TOS_CONTROL_BLITTER );
|
||||
}
|
||||
break;
|
||||
case 24: {
|
||||
case 25: {
|
||||
unsigned long chipset = (tos_system_ctrl() >> 23)+1;
|
||||
if(chipset == 4) chipset = 0;
|
||||
tos_update_sysctrl(tos_system_ctrl() & ~(TOS_CONTROL_STE | TOS_CONTROL_MSTE) |
|
||||
(chipset << 23));
|
||||
}
|
||||
break;
|
||||
case 25:
|
||||
case 26:
|
||||
if(user_io_core_type() == CORE_TYPE_MIST) {
|
||||
item->newpage = 6;
|
||||
} else {
|
||||
@ -1769,10 +1793,10 @@ static char tos_getmenuitem(uint8_t idx, char action, menu_item_t *item) {
|
||||
tos_update_sysctrl((tos_system_ctrl() & ~TOS_CONTROL_SCANLINES) | (scan << 20));
|
||||
}
|
||||
break;
|
||||
case 26:
|
||||
case 27:
|
||||
tos_update_sysctrl(tos_system_ctrl() ^ TOS_CONTROL_STEREO);
|
||||
break;
|
||||
case 27:
|
||||
case 28:
|
||||
tos_update_sysctrl(tos_system_ctrl() ^ TOS_CONTROL_BLEND);
|
||||
break;
|
||||
case 29:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user