Moved file APIs in device/file
This commit is contained in:
parent
0523bcc06d
commit
13fd0d9724
|
@ -24,11 +24,12 @@ WITH REGARD TO THIS SOFTWARE.
|
||||||
static FILE *f;
|
static FILE *f;
|
||||||
static DIR *d;
|
static DIR *d;
|
||||||
static char *current_filename = "";
|
static char *current_filename = "";
|
||||||
|
static struct dirent *de;
|
||||||
|
|
||||||
static enum { IDLE,
|
static enum { IDLE,
|
||||||
FILE_READ,
|
FILE_READ,
|
||||||
FILE_WRITE,
|
FILE_WRITE,
|
||||||
DIR_READ } state;
|
DIR_READ } state;
|
||||||
static struct dirent *de;
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
reset(void)
|
reset(void)
|
||||||
|
@ -80,7 +81,7 @@ file_read_dir(char *dest, Uint16 len)
|
||||||
return p - dest;
|
return p - dest;
|
||||||
}
|
}
|
||||||
|
|
||||||
Uint16
|
static Uint16
|
||||||
file_init(void *filename)
|
file_init(void *filename)
|
||||||
{
|
{
|
||||||
reset();
|
reset();
|
||||||
|
@ -88,7 +89,7 @@ file_init(void *filename)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
Uint16
|
static Uint16
|
||||||
file_read(void *dest, Uint16 len)
|
file_read(void *dest, Uint16 len)
|
||||||
{
|
{
|
||||||
if(state != FILE_READ && state != DIR_READ) {
|
if(state != FILE_READ && state != DIR_READ) {
|
||||||
|
@ -105,7 +106,7 @@ file_read(void *dest, Uint16 len)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
Uint16
|
static Uint16
|
||||||
file_write(void *src, Uint16 len, Uint8 flags)
|
file_write(void *src, Uint16 len, Uint8 flags)
|
||||||
{
|
{
|
||||||
Uint16 ret = 0;
|
Uint16 ret = 0;
|
||||||
|
@ -121,7 +122,7 @@ file_write(void *src, Uint16 len, Uint8 flags)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
Uint16
|
static Uint16
|
||||||
file_stat(void *dest, Uint16 len)
|
file_stat(void *dest, Uint16 len)
|
||||||
{
|
{
|
||||||
char *basename = strrchr(current_filename, '/');
|
char *basename = strrchr(current_filename, '/');
|
||||||
|
@ -132,8 +133,23 @@ file_stat(void *dest, Uint16 len)
|
||||||
return get_entry(dest, len, current_filename, basename, 0);
|
return get_entry(dest, len, current_filename, basename, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
Uint16
|
static Uint16
|
||||||
file_delete(void)
|
file_delete(void)
|
||||||
{
|
{
|
||||||
return unlink(current_filename);
|
return unlink(current_filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* API */
|
||||||
|
|
||||||
|
void
|
||||||
|
file_deo(Device *d, Uint8 port)
|
||||||
|
{
|
||||||
|
switch(port) {
|
||||||
|
case 0x1: d->vector = peek16(d->dat, 0x0); break;
|
||||||
|
case 0x9: poke16(d->dat, 0x2, file_init(&d->mem[peek16(d->dat, 0x8)])); break;
|
||||||
|
case 0xd: poke16(d->dat, 0x2, file_read(&d->mem[peek16(d->dat, 0xc)], peek16(d->dat, 0xa))); break;
|
||||||
|
case 0xf: poke16(d->dat, 0x2, file_write(&d->mem[peek16(d->dat, 0xe)], peek16(d->dat, 0xa), d->dat[0x7])); break;
|
||||||
|
case 0x5: poke16(d->dat, 0x2, file_stat(&d->mem[peek16(d->dat, 0x4)], peek16(d->dat, 0xa))); break;
|
||||||
|
case 0x6: poke16(d->dat, 0x2, file_delete()); break;
|
||||||
|
}
|
||||||
|
}
|
|
@ -10,8 +10,4 @@ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
WITH REGARD TO THIS SOFTWARE.
|
WITH REGARD TO THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Uint16 file_init(void *filename);
|
void file_deo(Device *d, Uint8 port);
|
||||||
Uint16 file_read(void *dest, Uint16 len);
|
|
||||||
Uint16 file_write(void *src, Uint16 len, Uint8 flags);
|
|
||||||
Uint16 file_stat(void *dest, Uint16 len);
|
|
||||||
Uint16 file_delete(void);
|
|
13
src/uxncli.c
13
src/uxncli.c
|
@ -76,19 +76,6 @@ console_deo(Device *d, Uint8 port)
|
||||||
write(port - 0x7, (char *)&d->dat[port], 1);
|
write(port - 0x7, (char *)&d->dat[port], 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
file_deo(Device *d, Uint8 port)
|
|
||||||
{
|
|
||||||
switch(port) {
|
|
||||||
case 0x1: d->vector = peek16(d->dat, 0x0); break;
|
|
||||||
case 0x9: poke16(d->dat, 0x2, file_init(&d->mem[peek16(d->dat, 0x8)])); break;
|
|
||||||
case 0xd: poke16(d->dat, 0x2, file_read(&d->mem[peek16(d->dat, 0xc)], peek16(d->dat, 0xa))); break;
|
|
||||||
case 0xf: poke16(d->dat, 0x2, file_write(&d->mem[peek16(d->dat, 0xe)], peek16(d->dat, 0xa), d->dat[0x7])); break;
|
|
||||||
case 0x5: poke16(d->dat, 0x2, file_stat(&d->mem[peek16(d->dat, 0x4)], peek16(d->dat, 0xa))); break;
|
|
||||||
case 0x6: poke16(d->dat, 0x2, file_delete()); break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static Uint8
|
static Uint8
|
||||||
datetime_dei(Device *d, Uint8 port)
|
datetime_dei(Device *d, Uint8 port)
|
||||||
{
|
{
|
||||||
|
|
19
src/uxnemu.c
19
src/uxnemu.c
|
@ -291,27 +291,14 @@ screen_deo(Device *d, Uint8 port)
|
||||||
Uint8 *addr = &d->mem[peek16(d->dat, 0xc)];
|
Uint8 *addr = &d->mem[peek16(d->dat, 0xc)];
|
||||||
Uint8 twobpp = !!(d->dat[0xf] & 0x80);
|
Uint8 twobpp = !!(d->dat[0xf] & 0x80);
|
||||||
ppu_blit(&ppu, layer, x, y, addr, d->dat[0xf] & 0xf, d->dat[0xf] & 0x10, d->dat[0xf] & 0x20, twobpp);
|
ppu_blit(&ppu, layer, x, y, addr, d->dat[0xf] & 0xf, d->dat[0xf] & 0x10, d->dat[0xf] & 0x20, twobpp);
|
||||||
if(d->dat[0x6] & 0x04) poke16(d->dat, 0xc, peek16(d->dat, 0xc) + 8 + twobpp*8); /* auto addr+8 / auto addr+16 */
|
if(d->dat[0x6] & 0x04) poke16(d->dat, 0xc, peek16(d->dat, 0xc) + 8 + twobpp * 8); /* auto addr+8 / auto addr+16 */
|
||||||
if(d->dat[0x6] & 0x01) poke16(d->dat, 0x8, x + 8); /* auto x+8 */
|
if(d->dat[0x6] & 0x01) poke16(d->dat, 0x8, x + 8); /* auto x+8 */
|
||||||
if(d->dat[0x6] & 0x02) poke16(d->dat, 0xa, y + 8); /* auto y+8 */
|
if(d->dat[0x6] & 0x02) poke16(d->dat, 0xa, y + 8); /* auto y+8 */
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
file_deo(Device *d, Uint8 port)
|
|
||||||
{
|
|
||||||
switch(port) {
|
|
||||||
case 0x1: d->vector = peek16(d->dat, 0x0); break;
|
|
||||||
case 0x9: poke16(d->dat, 0x2, file_init(&d->mem[peek16(d->dat, 0x8)])); break;
|
|
||||||
case 0xd: poke16(d->dat, 0x2, file_read(&d->mem[peek16(d->dat, 0xc)], peek16(d->dat, 0xa))); break;
|
|
||||||
case 0xf: poke16(d->dat, 0x2, file_write(&d->mem[peek16(d->dat, 0xe)], peek16(d->dat, 0xa), d->dat[0x7])); break;
|
|
||||||
case 0x5: poke16(d->dat, 0x2, file_stat(&d->mem[peek16(d->dat, 0x4)], peek16(d->dat, 0xa))); break;
|
|
||||||
case 0x6: poke16(d->dat, 0x2, file_delete()); break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static Uint8
|
static Uint8
|
||||||
audio_dei(Device *d, Uint8 port)
|
audio_dei(Device *d, Uint8 port)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue