1
0
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:
Gyorgy Szombathelyi 2022-03-29 18:52:48 +02:00
parent 07985e9ec0
commit bf3c1df30b
2 changed files with 57 additions and 32 deletions

86
tos.c
View File

@ -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:

3
tos.h
View File

@ -72,7 +72,8 @@
#define TOS_CONTROL_STE 0x00800000
#define TOS_CONTROL_MSTE 0x01000000
#define TOS_CONTROL_ETHERNET 0x02000000
#define TOS_CONTROL_CUBASE 0x40000000
// USB redirection modes
// (NONE=0, RS232=1, PARALLEL=2, MIDI=3)
#define TOS_CONTROL_REDIR0 0x04000000