Sint32 buSaveExecFile( drive, *fname, *buf, nblock, *time, flag ) Sint32 drive const char *fname const void *buf Uint32 nblock BUS_TIME *time Sint32 flag
drive | 拡張ソケットの番号 |
*fname | ファイル名 |
*buf | 読み込みアドレス |
nblock | 読み込むプロック数 |
*time | タイムスタンプ |
flag | フラグ |
BUD_ERR_OK | 処理要求を受けつけた |
BUD_ERR_BUSY | 処理中のため要求を受けつけられなかった |
拡張ソケットの番号driveには次の値が指定できます。
BUD_DRIVE_A1 | ポートAの拡張ソケット1 |
BUD_DRIVE_A2 | ポートAの拡張ソケット2 |
BUD_DRIVE_B1 | ポートBの拡張ソケット1 |
BUD_DRIVE_B2 | ポートBの拡張ソケット2 |
BUD_DRIVE_C1 | ポートCの拡張ソケット1 |
BUD_DRIVE_C2 | ポートCの拡張ソケット2 |
BUD_DRIVE_D1 | ポートDの拡張ソケット1 |
BUD_DRIVE_D2 | ポートDの拡張ソケット2 |
通常のアプリケーションであればこの関数でファイルを丸ごとセーブします。 実行ファイルが存在する場合、および同名ファイルが存在する場合はエラーとなります。
フラグflagにはファイルの属性を指定します。
BUD_FLAG_VERIFY | ベリファイあり |
BUD_FLAG_COPY(n) | コピーフラグ(nはコピーフラグ値) |
Sint32 ret; Sint32 blocks, flag; BUS_TIME time; SYS_RTC_DATE rtc; /* セーブするデータ(512*10バイト) */ extern char SaveData[]; /* ファイルサイズは10ブロック */ blocks = 10; /* ベリファイを行う | コピーフラグをFFHに設定する */ flag = BUD_FLAG_VERIFY | BUD_FLAG_COPY(0xff); syRtcGetDate( &rtc ); /* タイムスタンプの設定 */ time = ( BUS_TIME )rtc; ret = buSaveExecFile(BUD_DRIVE_A1, "SAVEDATA", SaveData, blocks, &time, flag); if (ret != BUD_ERR_OK) return NG; while (buStat(BUD_DRIVE_A1) == BUD_STAT_BUSY) { : } if (buGetLastError(BUD_DRIVE_A1) != BUD_ERR_OK){ return NG; } else { return OK; }
BUD_ERR_OK | 正常終了 |
BUD_ERR_UNFORMAT | フォーマットされていない |
BUD_ERR_NO_DISK | メモリーカードがない |
BUD_ERR_DISK_FULL | 実行ファイルはすでに存在する |
BUD_ERR_FILE_EXIST | 同名ファイルが存在する |
セーブには、(セーブブロック数×5 Int)かかります。(他のドライブの状態等によっては、多少時間は変動します。) また bufには必ず、4バイト境界でアドレスを与えるようにしてください。