#define VER 0.10 #define DEFAULT_PORT "/dev/cuaa0" /* デフォルト通信ポート(デバイス) */ #define DEFAULT_BPS 19200L /* デフォルト通信速度(bps) */ #define DEFAULT_CAPA 1 /* デフォルト L: 容量 1 -> 容量 128 kB, 5 -> 容量 512 kB */ #define DEFAULT_OUTPUTDIR "." /* デフォルト出力ディレクトリ */ /* カレントディレクトリは "" でも "." */ /* でもよい */ #define ON 1 #define OFF 0 #define DEFAULT_RMODE ON /* ファイル探索モードのデフォルト値 */ /* ON -> 再帰探索する */ /* OFF -> 再帰探索しない */ #define REC_BETA 2 #define REC_DIR 3 #define DEFAULT_MDIR ON /* ファイル読み込み時に L: に */ /* ディレクトリを作成するかどうかの */ /* デフォルト値 */ /* ON -> 作成する */ /* OFF -> 作成しない */ /* (L: のルートにファイルを格納する) */ #define DEFAULT_TAKEIMG OFF /* L: にファイルを取り込む順番の */ /* デフォルト値 */ /* ON -> DOS のディスクイメージ順 */ /* OFF -> 起動時引数に与えた順 */ #define DEFAULT_LOGBUF_LINE 128 /* ログバッファ行数デフォルト値 */ #define DEFAULT_REWRITE 32767 /* ファイルリスト書換え間隔 */ /* ポケコンからのリクエストチェック 空振り回数 */ #define WRI_PRO_W 0x01 /* WRITE PROTECTED file skip 警告 On */ #define DEFAULT_WARN WRI_PRO_W /* デフォルト表示警告 */ #define DEFAULT_WTIMES ON /* デフォルト書き出しファイルタイムスタンプ */ /* ON -> L: でのタイムスタンプを反映する */ /* OFF-> 現在の時刻をタイムスタンプとする */ #define DEFAULT_DELETED_SHOW ON /* 削除痕跡ありファイル表示のデフォルト */ /* ON -> 表示, OFF -> 非表示 */ #define DEFAULT_UPTHISDIR_SHOW OFF /* '.', '..' 表示のデフォルト設定 */ /* ON -> 表示, OFF -> 非表示 */ #define DEFAULT_DIR_INDENT 4 /* ディレクトリ内ファイル表示時の */ /* 字下げ数のデフォルト値 */ #define DEFAULT_ANIM ON /* オープニング Signature animation 表示の */ /* デフォルト値 */ /* ON -> 表示する。OFF -> 表示しない。 */ #define MAX_DIR_LEN 512 /* ディレクトリ名最大文字数 */ #define MAX_FILE_LEN 256 /* ファイル名最大文字数 */ #define MEDIA_DESC 0xf0 /* メディアディスクリプタ */ #define ATTR_OFFS 0x0b /* ファイル属性 dir エントリオフセット */ #define DIR_ATTR 0x10 /* ディレクトリであることを表す属性 */ #define NORM_ATTR 0x20 /* 通常ファイルであることを表す属性 */ #define WRI_PROTECT 0x01 /* 書き込み禁止ファイル属性 bit */ #define INVISIBLE 0x02 /* 不可視ファイル属性 bit */ #define DEVICEDRV 0x04 /* デバイスドライバ属性 bit */ #define OTHERS 0x08 /* その他の常駐プログラム属性 bit */ #define FILESIZE_LL 0x1c /* ファイルサイズ下位バイト dir エントリオフセット */ #define FILESIZE_MM 0x1d /* ファイルサイズ中位バイト dir エントリオフセット */ #define FILESIZE_HH 0x1e /* ファイルサイズ上位バイト dir エントリオフセット */ #define FAT_LL 0x1a /* 先頭セクタ番号下位 8 bit の dir エントリオフセット */ #define FAT_HH 0x1b /* 先頭セクタ番号上位 4 bit の dir エントリオフセット */ #define SECTOR_SIZE 128 /* 容量 128 kB mode 定数 */ #define FAT_SIZE_128 12 #define DIR_SIZE_128 32 /* 32 * 4 = 128 files 格納できる */ #define DATA_SIZE_128 980 /* 容量 512 kB mode 定数 */ #define FAT_SIZE_512 (FAT_SIZE_128 * 4) #define DIR_SIZE_512 32 /* 32 * 4 = 128 files 格納できる */ #define DATA_SIZE_512 (((FAT_SIZE_128 + DIR_SIZE_128 + DATA_SIZE_128) * 4) \ - FAT_SIZE_512 - DIR_SIZE_512) #define SECTOR_MAP_Y 6 /* セクタマップを表示しはじめる行(最上行ならば 1) */ #define FAT_MAP_Y SECTOR_MAP_Y #define DIR_MAP_Y (SECTOR_MAP_Y + 1) #define DATA_MAP_Y (SECTOR_MAP_Y + 2) #define SEC_PER_P 16 /* データセクタマップの . 1 個あたりのセクタ数 */ #define ALLOC_COLOR 5 /* メモリを割り当てることができたセクタの色(水色) */ #define BAD_COLOR 2 /* メモリを割り当てることができなかったセクタの色(赤)*/ #define READ_COLOR 6 /* 読み出されているセクタの色(黄色) */ #define WRITE_COLOR 2 /* 書き込まれているセクタの色(赤) */ #define PORT_X 1 /* 接続ポート名を表示する桁(最左桁ならば 1) */ #define PORT_Y 3 /* 接続ポート名を表示する行(最上行ならば 1) */ #define PORT_COLOR 5 #define STAT_X (PORT_X + 22) /* ステータスを表示する桁(最左桁ならば 1) */ #define STAT_Y PORT_Y /* ステータスを表示する行(最上行ならば 1) */ #define ONLINE_COLOR -1 /* Online ステータスの表示色(白) */ #define BPS_X 34 /* 通信速度を表示する桁(最左行ならば 1) */ #define BPS_Y PORT_Y /* 通信速度を表示する行(最上行ならば 1) */ #define BPS_COLOR 4 /* 通信速度を表示する色(白) */ #define CAPA_X 60 /* 容量を表示する桁(最左桁ならば 1) */ #define CAPA_Y PORT_Y /* 容量を表示する行(最上行ならば 1) */ #define CAPA_COLOR 6 /* 容量を表示する色(白) */ #define OUTD_X 1 /* 容量を表示する桁(最左桁ならば 1) */ #define OUTD_Y (PORT_Y + 1) /* 容量を表示する行(最上行ならば 1) */ #define OUTD_COLOR 5 /* 容量を表示する色(白) */ #define LAST_X 1 /* セクタへの最終アクセス状態を表示する桁 */ #define LAST_Y (PORT_Y + 2) /* セクタへの最終アクセス状態を表示する行 */ #define FILENAME_COLOR -1 /* File list でのファイル名表示色 */ #define FILEATTR_COLOR 5 /* File list でのファイル属性表示色 */ #define FILESIZE_COLOR 4 /* File list でのファイルサイズ()表示色 */ #define FILEDATE_COLOR 6 /* File list でのファイル作成年月日表示色 */ #define FILETIME_COLOR -1 /* File list でのファイル作成時分秒表示色 */ #define DELETED_COLOR 1 /* File list での削除痕跡のあるファイルの情報の 表示色 */ #define UNCHAIN_COLOR 2 /* メモリを確保できなかったセクタにファイルの 一部があるファイルの情報の表示色 */ #define DEL_UNCHAIN_COLOR 3 /* 削除痕跡のあるファイルで、 メモリを確保できなかったセクタにファイルの 一部があるファイルの情報の表示色 */ #define SFILE_NUM 32 /* DIR エントリ中におけるタイムスタンプ関連定数 */ #define TIME_LL 0x16 #define TIME_HH 0x17 #define DATE_LL 0x18 #define DATE_HH 0x19 #define YEAR_MASK 0xfe00 #define YEAR_SHIFT 9 #define MON_MASK 0x01e0 #define MON_SHIFT 5 #define DAY_MASK 0x001f #define HOUR_MASK 0xf800 #define HOUR_SHIFT 11 #define MIN_MASK 0x07e0 #define MIN_SHIFT 5 #define SEC_MASK 0x001f #define ON 1 #define OFF 0 #define SHOWDATE ON #define SHOWTIME ON #ifdef UNIX #define DIR_DELIM '/' #define DIR_DELIM_STR "/" #else #define DIR_DELIM '\\' #define DIR_DELIM_STR "\\" #endif /* 構造体の定義 */ /* FAT の範囲をおぼえておくための構造体 */ typedef struct fat_range{ int start; int end; }FAT_RANGE; /* DIR エントリの範囲をおぼえておくための構造体 */ typedef struct dir_range{ int start; int end; }DIR_RANGE; /* DATA セクタの範囲をおぼえておくための構造体 */ typedef struct data_range{ int start; int end; }DATA_RANGE; #if 0 /* DIR エントリ内の File list を格納するための構造体 */ typedef struct filelist{ char *fullpathname; /* ディレクトリ名を含んだ full-path */ char *dir_name; /* ディレクトリ名 */ char *filename; /* 本当のファイル名 + 拡張子 */ char basename[9]; /* 8 文字以内に縮めたファイル名 (ドットファイルは . 以降の文字列) */ char ext[4]; /* 3 文字以内に縮めたファイル名 */ int attr; /* L: におけるファイル属性 */ }FILELIST; #endif typedef struct namelist{ char *org_name; char *Lname; struct namelist *next; }NAMELIST; /* File list 表示を管理するための構造体(素直に curse を使えばよかったかな) */ typedef struct displist{ char *linebuf; struct displist *pre; struct displist *next; }DISPLIST; /* 関数プロトタイプ宣言 */ int title(void); int chk_mode(int argc, char *argv[]); int set_mode(int mode, FAT_RANGE *fat_range, DIR_RANGE *dir_range, DATA_RANGE *data_range); int init_sector(unsigned char *fat_buffer[], unsigned char *dir_buffer[], unsigned char *data_buffer[], FAT_RANGE fat_range, DIR_RANGE dir_range, DATA_RANGE data_range, int m_column); int free_sector(unsigned char *fat_buffer[], unsigned char *dir_buffer[], unsigned char *data_buffer[], FAT_RANGE fat_range, DIR_RANGE dir_range, DATA_RANGE data_range); int set_port_name(int argc, char *argv[], char *port_name); int open_port(char *port_name, unsigned int bps); int close_port(void); /* unsigned int get_port(void); */ unsigned char get_port(void); unsigned char nowait_get_port(void); int put_port(unsigned char data); int put_sector(unsigned char *buffer[], unsigned int sector); int get_sector(unsigned char *buffer[], unsigned int sector); int chk_bps(int argc, char *argv[], unsigned int *bps); int make_filelist(void); int disp_filelist(unsigned char *fat_buffer[], unsigned char *dir_buffer[], unsigned char *data_buffer[], DIR_RANGE dir_range, int deleted, int ut_dir, int dir_indent); int disp_fileinfo(unsigned char fileinfo[], int deleted_show, unsigned char parent_dir_name0, unsigned char *fat_buffer[], unsigned char *data_buffer[]); int disp_dirinfo(int deleted, int ut_dir, int sec_num, unsigned char *fat_buffer[], unsigned char *data_buffer[], int level, int dir_indent, unsigned char parent_dir_name0); /* takedir.c */ #if 0 int take_file(int rmode, char *fullpathname, FILELIST filelist[], int nfile, int max_nfile, unsigned char *fat_buffer[], unsigned char *dir_buffer[], unsigned char *data_buffer[], FAT_RANGE fat_range, DIR_RANGE dir_range, DATA_RANGE data_range); int set_filelist(FILELIST filelist[], int nfile, char *fullpathname); #endif int get_drv_dirname(char fullpathname[], char drv[], char dir_name[]); int get_filename(char *fullpathname, char *filename); int make_base_ext(char filename[], char basename[], char ext[], int *attr); int put_fat(int fat_num, int value, unsigned char *fat_buffer[], FAT_RANGE fat_range); #if 0 int free_filelist(int max_nfile, FILELIST filelist[]); #endif int takedir(char *sdir, int sfile_num, char *sfile[], unsigned char *fat_buffer[], unsigned char *dir_buffer[], unsigned char *data_buffer[], FAT_RANGE fat_range, DIR_RANGE dir_range, DATA_RANGE data_range, int rmode, int mdir, int timg); /* int set_dirent_info(unsigned char *direntbuffer, int dirent_bias, char *fullpathname); */ int set_dirent_info(unsigned char *dirent_buffer, int dirent_bias, char *basename, char *ext, int attr); int count_file(char *fullpathname); int read_file(char *fullpathname, unsigned char *dirent_buffer, int dirent_ds_bias, unsigned char *fat_buffer[], unsigned char *data_buffer[], DATA_RANGE data_range, FAT_RANGE fat_range, int mdir); /* chk_rec.c */ int chk_recur(int argc, char *argv[], int *rmode); int get_winsize(int *m_column, int *m_row); /* display.c */ int init_displist(int m_column, int m_row, int logbuf_line, DATA_RANGE data_range); int alloc_displist(DISPLIST **displist, int m_column); int displist_c_printf(int c, char *format, ...); int except_esc_len(char *str, int *loc); int free_displist(void); int scrl_up(void); int scrl_down(void); int usage(int argc, char *argv[]); int usage_disp(void); int set_outdir(int argc, char *argv[], char *output_dir); int get_filetime(char *fullpathname, unsigned int *dateword, unsigned int *timeword); int set_filetime(char *filename, unsigned int dateword, unsigned int timeword); int epilogue(char *output_dir, unsigned char *fat_buffer[], unsigned char *dir_buffer[], unsigned char *data_buffer[], DIR_RANGE dir_range, int wtimes); int make_name(char *output_dir, unsigned char fileinfo[], char pathfilename[], char filename[]); int get_fat(int fat_num, unsigned char *fat_buffer[]); int write_file(unsigned char fileinfo[], char *output_dir, unsigned char *fat_buffer[], unsigned char*data_buffer[], int wtimes); int write_dir(char *output_dir, unsigned char fileinfo[], int sec_num, unsigned char *fat_buffer[], unsigned char *data_buffer[], int wtimes, int *wdir); int get_fs_num_bias(int fat_loc, int *fs_num_l, int *fs_bias_l, int *fs_num_h, int *fs_bias_h); int chk_w_timestamp(int argc, char *argv[], int *wtimes); /* keyevent.c */ int key_event(void); /* bell.c */ int bell(void); /* execaloc.c */ /* int exec_alloc(int size); */ int exec_alloc(unsigned int size); int exec_free(void); /* chainchk.c */ int chain_chk(int sec_num, unsigned char *fat_buffer[], unsigned char *data_buffer[]); /* chk_mdir.c */ int chk_makedir(int argc, char *argv[], int *mdir); /* chk_timg.c */ int chk_takeimg(int argc, char *argv[], int *timg); /* set_sdf.c */ int set_sdir_sfile(char *argv, char *sdir, char *sfile); /* cm_dir.c */ long chg_make_dir(char *sdir, int mdir, int *last_fat_num, DIR_RANGE dir_range, unsigned char *dir_buffer[], FAT_RANGE fat_range, unsigned char *fat_buffer[], unsigned char *data_buffer[]); int get_topdir(char *org_dir, char head[], char *topdir, char *nextdir); int chk_get_Lname(char org_fullpathname[], char org_name[], char Lname[], int mdir); int to_name8(char org_name[], char name8[]); int to_name_num(char *name8); int free_namelist(void); int haveto_chg(char *sdir); /* sig_anim.c */ int chk_anim(int argc, char *argv[]); int sig_anim(int anim, int m_colum, int m_row); int disp_cup(void); int anim_coffee(void); int anim_surface(void); int anim_steam(void); int disp_noike(void); int anim_signboard(void);