Migrate Atari800/5200 FW to Main (#1101)

* WIP Adding Atari800 side of things

* WIP Migrated some functionality from .sv to here

* WIP XEX file loading works, clean-ups

* WIP UART/SIO interface beginning

* WIP Adding Atari800 drive emulator

* WIP First version of the drive emulator working with ATR and XEX files

* WIP ATX files are working

* WIP HDD is now mounted separately

* WIP PBI/HDD is working too

* Cleaning up and adding supporting Atari ASM files

* Updated versioning information in the Atari800 FW

* WIP Adding support for the Atari 5200 core

* Atari 5200 support complete

* Atari800: fixed SIO timing bugs

* Atari800: sorting out SIO timing issues still

* Atari800: eliminate OSD lock up possibilities

* Atari800: Improved XEX loader
This commit is contained in:
Wojciech Mostowski
2026-02-24 05:51:17 +01:00
committed by GitHub
parent a9eb1f5c11
commit deb43cd870
19 changed files with 2999 additions and 2 deletions

View File

@@ -317,6 +317,20 @@ char is_c128()
return (is_c128_type == 1);
}
static int is_atari800_type = 0;
char is_atari800()
{
if (!is_atari800_type) is_atari800_type = strcasecmp(orig_name, "Atari800") ? 2 : 1;
return (is_atari800_type == 1);
}
static int is_atari5200_type = 0;
char is_atari5200()
{
if (!is_atari5200_type) is_atari5200_type = strcasecmp(orig_name, "Atari5200") ? 2 : 1;
return (is_atari5200_type == 1);
}
static int is_psx_type = 0;
char is_psx()
{
@@ -398,6 +412,8 @@ void user_io_read_core_name()
is_gba_type = 0;
is_c64_type = 0;
is_c128_type = 0;
is_atari800_type = 0;
is_atari5200_type = 0;
is_psx_type = 0;
is_cdi_type = 0;
is_st_type = 0;
@@ -1523,6 +1539,14 @@ void user_io_init(const char *path, const char *xml)
printf("Identified Archimedes core");
archie_init();
}
else if (is_atari800())
{
atari800_init();
}
else if (is_atari5200())
{
atari5200_init();
}
else
{
const char *home = HomeDir();
@@ -3667,6 +3691,8 @@ void user_io_poll()
uint16_t save_req = spi_uio_cmd(UIO_CHK_UPLOAD);
if (save_req) c64_save_cart(save_req >> 8);
}
if (is_atari800()) atari800_poll();
if (is_atari5200()) atari5200_poll();
process_ss(0);
}