repo2/firmware_eclairexl/test_file.c
46 | markw | #include "simpledir.h"
|
|
#include "simplefile.h"
|
|||
49 | markw | #include "fileselector.h"
|
|
46 | markw | ||
//#include "fat/pff_file.h"
|
|||
// XXX - BEST NOT to include this?
|
|||
105 | markw | char USER_DIR[]="/";
|
|
char ROM_DIR[]="/";
|
|||
46 | markw | ||
#include "stdio.h"
|
|||
#include "stdlib.h"
|
|||
49 | markw | int debug_pos = 0;
|
|
105 | markw | int prev_debug_pos = 0;
|
|
49 | markw | int debug_adjust = 0;
|
|
void wait_us(int us)
|
|||
{
|
|||
usleep(us);
|
|||
}
|
|||
void char_out ( void* p, char c)
|
|||
{
|
|||
105 | markw | if (debug_pos!=prev_debug_pos)
|
|
{
|
|||
fprintf(stderr,"\n");
|
|||
}
|
|||
//fprintf(stderr,"\n%dWTFWTF\n", debug_pos);
|
|||
if (debug_adjust == 128)
|
|||
{
|
|||
putc('*',stderr);
|
|||
}
|
|||
49 | markw | putc(c, stderr);
|
|
105 | markw | ++debug_pos;
|
|
prev_debug_pos = debug_pos;
|
|||
49 | markw | }
|
|
55 | markw | struct SimpleFile * temp_file;
|
|
63 | markw | /*void loadrom(char const * path, int size, void * ram_address)
|
|
55 | markw | {
|
|
filter = 0;
|
|||
fprintf(stderr,"loadrom:%s\n",path);
|
|||
ram_address += 0x800000;
|
|||
if (SimpleFile_OK == file_open_name(path, temp_file))
|
|||
{
|
|||
int read = 0;
|
|||
63 | markw | //file_read(temp_file, ram_address, size, &read);
|
|
55 | markw | printf("file_read:%s %x %x\n",file_name(temp_file), ram_address,size);
|
|
}
|
|||
else
|
|||
{
|
|||
63 | markw | printf("%s:FAILED\n",path);
|
|
}
|
|||
}*/
|
|||
void loadromfile(struct SimpleFile * file, int size, void * ram_address)
|
|||
{
|
|||
ram_address += 0x800000;
|
|||
int read = 0;
|
|||
//file_read(file, ram_address, size, &read);
|
|||
printf("file_read:%s %x %x\n",file_name(temp_file), ram_address,size);
|
|||
}
|
|||
void loadrom(char const * path, int size, void * ram_address)
|
|||
{
|
|||
if (SimpleFile_OK == file_open_name(path, temp_file))
|
|||
{
|
|||
loadromfile(temp_file, size, ram_address);
|
|||
}
|
|||
else
|
|||
{
|
|||
printf("%s:FAILED\n",path);
|
|||
}
|
|||
}
|
|||
void loadrom_indir(struct SimpleDirEntry * entries, char const * filename, int size, void * ram_address)
|
|||
{
|
|||
if (SimpleFile_OK == file_open_name_in_dir(entries, filename, temp_file))
|
|||
{
|
|||
loadromfile(temp_file, size, ram_address);
|
|||
}
|
|||
else
|
|||
{
|
|||
55 | markw | printf("FAILED\n");
|
|
}
|
|||
}
|
|||
46 | markw | int main(void)
|
|
{
|
|||
49 | markw | init_printf(NULL, char_out);
|
|
55 | markw | char * mem = (char *)malloc(65536);
|
|
if (SimpleFile_OK != dir_init(mem, 65536))
|
|||
46 | markw | {
|
|
fprintf(stderr,"Failed to open dir!");
|
|||
return -1;
|
|||
}
|
|||
struct SimpleDirEntry * entry = dir_entries("");
|
|||
while (entry)
|
|||
{
|
|||
fprintf(stderr, "Path:%s", dir_path(entry));
|
|||
fprintf(stderr, " Name:%s", dir_filename(entry));
|
|||
fprintf(stderr, " Size:%d", dir_filesize(entry));
|
|||
fprintf(stderr, " Subdir:%d\n", dir_is_subdir(entry));
|
|||
entry = dir_next(entry);
|
|||
}
|
|||
fprintf(stderr,"\n\n");
|
|||
64 | markw | entry = dir_entries("/atari800");
|
|
46 | markw | while (entry)
|
|
{
|
|||
fprintf(stderr, "Path:%s", dir_path(entry));
|
|||
fprintf(stderr, " Name:%s", dir_filename(entry));
|
|||
fprintf(stderr, " Size:%d", dir_filesize(entry));
|
|||
fprintf(stderr, " Subdir:%d\n", dir_is_subdir(entry));
|
|||
entry = dir_next(entry);
|
|||
}
|
|||
fprintf(stderr,"\n\n");
|
|||
64 | markw | entry = dir_entries("/atari800/user");
|
|
46 | markw | while (entry)
|
|
{
|
|||
fprintf(stderr, "Path:%s", dir_path(entry));
|
|||
fprintf(stderr, " Name:%s", dir_filename(entry));
|
|||
fprintf(stderr, " Size:%d", dir_filesize(entry));
|
|||
fprintf(stderr, " Subdir:%d\n", dir_is_subdir(entry));
|
|||
entry = dir_next(entry);
|
|||
}
|
|||
55 | markw | /*
|
|
46 | markw | fprintf(stderr,"\n\n");
|
|
//enum SimpleFileStatus file_open_name(char const * path, struct SimpleFile * file);
|
|||
//enum SimpleFileStatus file_open_dir(struct SimpleDirEntry * filename, struct SimpleFile * file);
|
|||
entry = dir_entries("/UAE4ALL");
|
|||
49 | markw | entry = dir_next(entry);
|
|
46 | markw | fprintf(stderr, " Name:%s", dir_filename(entry));
|
|
struct SimpleFile * file = alloca(file_struct_size());
|
|||
file_open_dir(entry,file);
|
|||
//char const * file_name(struct SimpleFile * file);
|
|||
//enum SimpleFileStatus file_read(struct SimpleFile * file, void * buffer, int bytes, int * bytesread);
|
|||
//enum SimpleFileStatus file_write(struct SimpleFile * file, void * buffer, int bytes, int * byteswritten);
|
|||
//enum SimpleFileStatus file_seek(struct SimpleFile * file, int offsetFromStart);
|
|||
//int file_size(struct SimpleFile * file);
|
|||
49 | markw | fprintf(stderr, " Size:%d\n---\n", file_size(file));
|
|
46 | markw | ||
int read = 0;
|
|||
49 | markw | char buffer[2048];
|
|
file_seek(file,10);
|
|||
file_read(file,&buffer[0],2048,&read);
|
|||
46 | markw | int i;
|
|
for (i=0; i!=read; ++i)
|
|||
{
|
|||
//fprintf(stderr,"%02x", buffer[i]);
|
|||
fprintf(stderr,"%c", buffer[i]);
|
|||
}
|
|||
49 | markw | fprintf(stderr,"\n\n");
|
|
int written;
|
|||
file_seek(file,10);
|
|||
file_write(file,"Mark",4,&written); // in order to write 'mark' as position 10...
|
|||
//file_write_flush(); // Done automatically on next read, or can be forced with this...
|
|||
file_seek(file,512);
|
|||
55 | markw | // for (i=0;i!=130;++i)
|
|
// {
|
|||
// char towrite[9];
|
|||
// sprintf(&towrite[0],"Mark:%03d",i);
|
|||
// fprintf(stderr,"Writing \"%s\"\n",towrite);
|
|||
// file_write(file,towrite,8,&written);
|
|||
// }
|
|||
// file_write(file,"Blah",4,&written);
|
|||
49 | markw | ||
52 | markw | printf("\n*** WTF:%s - %s - %s\n",file_name(file), file_of("/WTF"),file_of("/BLAH/BOOP"));
|
|
49 | markw | // So... for write can only seek to nearest 512...
|
|
fprintf(stderr,"\n\n");
|
|||
file_seek(file,10);
|
|||
file_read(file,&buffer[0],2048,&read);
|
|||
for (i=0; i!=read; ++i)
|
|||
{
|
|||
//fprintf(stderr,"%02x", buffer[i]);
|
|||
fprintf(stderr,"%c", buffer[i]);
|
|||
}
|
|||
55 | markw | */
|
|
49 | markw | ||
55 | markw | temp_file = alloca(file_struct_size());
|
|
loadrom("ASTEROID.BIN",0x4000, (void *)0x704000);
|
|||
loadrom("asteroid.bin",0x4000, (void *)0x704000);
|
|||
loadrom("xlorig.rom",0x4000, (void *)0x704000);
|
|||
loadrom("xlhias.rom",0x4000, (void *)0x708000);
|
|||
loadrom("ultimon.rom",0x4000, (void *)0x70c000);
|
|||
loadrom("osbhias.rom",0x4000, (void *)0x710000);
|
|||
loadrom("osborig.rom",0x2800, (void *)0x715800);
|
|||
loadrom("osaorig.rom",0x2800, (void *)0x719800);
|
|||
loadrom("ataribas.rom",0x2000,(void *)0x700000);
|
|||
49 | markw | ||
105 | markw | /*{
|
|
63 | markw | printf("WTF\n");
|
|
64 | markw | struct SimpleDirEntry * entries = dir_entries("/system/rom/atari800");
|
|
entries = dir_next(entries);
|
|||
printf("WTF:%s\n",dir_filename(entries));
|
|||
63 | markw | ||
loadrom_indir(entries,"xlorig.rom",0x4000, (void *)0x704000);
|
|||
loadrom_indir(entries,"xlhias.rom",0x4000, (void *)0x708000);
|
|||
loadrom_indir(entries,"ultimon.rom",0x4000, (void *)0x70c000);
|
|||
loadrom_indir(entries,"osbhias.rom",0x4000, (void *)0x710000);
|
|||
loadrom_indir(entries,"osborig.rom",0x2800, (void *)0x715800);
|
|||
loadrom_indir(entries,"osaorig.rom",0x2800, (void *)0x719800);
|
|||
loadrom_indir(entries,"ataribas.rom",0x2000,(void *)0x700000);
|
|||
105 | markw | }*/
|
|
63 | markw | ||
64 | markw | //entry = dir_entries("/atari800/user");
|
|
//entry = dir_next(entry);
|
|||
//fprintf(stderr, " Name:%s", dir_filename(entry));
|
|||
62 | markw | struct SimpleFile * file = alloca(file_struct_size());
|
|
105 | markw | //file_open_name("/atari800/user/acid800.atr",file);
|
|
//fprintf(stderr, "XXX Name:%s", file_name(file));
|
|||
157 | markw | filter = filter_disks;
|
|
62 | markw | file_selector(file);
|
|
55 | markw | ||
46 | markw | return 0;
|
|
}
|
|||