Support for TZX tape format.

This commit is contained in:
sorgelig
2017-09-01 04:08:42 +08:00
parent 5f194e5a7d
commit 2851c48b77
5 changed files with 1425 additions and 9 deletions

View File

@@ -56,6 +56,7 @@
<ClCompile Include="osd.c" />
<ClCompile Include="spi.c" />
<ClCompile Include="tos.c" />
<ClCompile Include="tzx2wav.c" />
<ClCompile Include="user_io.c" />
<ClCompile Include="x86.c" />
</ItemGroup>
@@ -85,6 +86,7 @@
<ClInclude Include="osd.h" />
<ClInclude Include="spi.h" />
<ClInclude Include="tos.h" />
<ClInclude Include="tzx2wav.h" />
<ClInclude Include="user_io.h" />
<ClInclude Include="x86.h" />
</ItemGroup>

View File

@@ -68,6 +68,9 @@
<ClCompile Include="x86.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="tzx2wav.c">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="archie.h">
@@ -151,6 +154,9 @@
<ClInclude Include="x86.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="tzx2wav.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="build.sh" />

1392
tzx2wav.c Normal file

File diff suppressed because it is too large Load Diff

3
tzx2wav.h Normal file
View File

@@ -0,0 +1,3 @@
#include "file_io.h"
int tzx2csw(fileTYPE *f);

View File

@@ -20,6 +20,7 @@
#include "config.h"
#include "menu.h"
#include "x86.h"
#include "tzx2wav.h"
#define BREAK 0x8000
@@ -656,20 +657,32 @@ int user_io_file_tx(char* name, unsigned char index)
spi8(0xff);
DisableFpga();
while (bytes2send)
if (strlen(f.name) > 4 && !strcasecmp(f.name + strlen(f.name) - 4, ".tzx"))
{
iprintf(".");
uint16_t chunk = (bytes2send>512) ? 512 : bytes2send;
FileReadSec(&f, buf);
printf("Processing TZX...\n");
EnableFpga();
spi8(UIO_FILE_TX_DAT);
spi_write(buf, chunk, fio_size);
tzx2csw(&f);
DisableFpga();
}
else
{
while (bytes2send)
{
iprintf(".");
bytes2send -= chunk;
uint16_t chunk = (bytes2send > 512) ? 512 : bytes2send;
FileReadSec(&f, buf);
EnableFpga();
spi8(UIO_FILE_TX_DAT);
spi_write(buf, chunk, fio_size);
DisableFpga();
bytes2send -= chunk;
}
}
FileClose(&f);