mirror of
https://github.com/Oibaf66/frodo-wii.git
synced 2024-11-22 19:39:24 +01:00
63 lines
1.8 KiB
C++
63 lines
1.8 KiB
C++
/*
|
|
* 1541t64.h - 1541 emulation in .t64/LYNX file
|
|
*
|
|
* Frodo (C) 1994-1997,2002 Christian Bauer
|
|
*/
|
|
|
|
#ifndef _1541T64_H
|
|
#define _1541T64_H
|
|
|
|
#include "IEC.h"
|
|
|
|
|
|
// Information for file inside a .t64 file
|
|
typedef struct {
|
|
char name[17]; // File name, PETSCII
|
|
uint8 type; // File type
|
|
uint8 sa_lo, sa_hi; // Start address
|
|
int offset; // Offset of first byte in .t64 file
|
|
int length; // Length of file
|
|
} FileInfo;
|
|
|
|
|
|
class T64Drive : public Drive {
|
|
public:
|
|
T64Drive(IEC *iec, char *filepath);
|
|
virtual ~T64Drive();
|
|
virtual uint8 Open(int channel, char *filename);
|
|
virtual uint8 Close(int channel);
|
|
virtual uint8 Read(int channel, uint8 *byte);
|
|
virtual uint8 Write(int channel, uint8 byte, bool eoi);
|
|
virtual void Reset(void);
|
|
|
|
private:
|
|
void open_close_t64_file(char *t64name);
|
|
bool parse_t64_file(void);
|
|
bool parse_lynx_file(void);
|
|
uint8 open_file(int channel, char *filename);
|
|
uint8 open_directory(int channel, char *filename);
|
|
void convert_filename(char *srcname, char *destname, int *filemode, int *filetype);
|
|
bool find_first_file(char *name, int type, int *num);
|
|
void close_all_channels(void);
|
|
void execute_command(char *command);
|
|
void cht64_cmd(char *t64path);
|
|
uint8 conv_from_64(uint8 c, bool map_slash);
|
|
|
|
FILE *the_file; // File pointer for .t64 file
|
|
bool is_lynx; // Flag: .t64 file is really a LYNX archive
|
|
|
|
char orig_t64_name[256]; // Original path of .t64 file
|
|
char dir_title[16]; // Directory title
|
|
FILE *file[16]; // File pointers for each of the 16 channels (all temporary files)
|
|
|
|
int num_files; // Number of files in .t64 file and in file_info array
|
|
FileInfo *file_info; // Pointer to array of file information structs for each file
|
|
|
|
char cmd_buffer[44]; // Buffer for incoming command strings
|
|
int cmd_len; // Length of received command
|
|
|
|
uint8 read_char[16]; // Buffers for one-byte read-ahead
|
|
};
|
|
|
|
#endif
|