Sint32 buSaveFile( drive, fname, buf, nblock, time, flag )
Sint32 drive
const char *fname
const void *buf
Uint32 nblock
BUS_TIME *time
Uint32 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
通常のアプリケーションであればこの関数でファイルをまるごとセーブします。
同名のファイルがある場合、古いファイルは消去されます。 ただし同名のファイルが実行ファイルであった場合は、エラーとなります。
また、読み込むアドレス*bufには必ず 4バイトバウンダリでアドレスを与えるようにしてください。
フラグflagにはファイルの属性を指定します。
定義 意味 BUD_FLAG_VERIFY ベリファイあり BUD_FLAG_COPY(n) コピーフラグ(nはコピーフラグ値)
Sint32 ret; Sint32 blocks, flag; BUS_TIME time; SYS_RTC_DATE rtc; /* Data to be saved (512*10 bytes) */ extern char SaveData[]; : /* File size is 10 blocks */ blocks = 10; /* Verify enabled | Set copy flag to 00H */ flag = BUD_FLAG_VERIFY | BUD_FLAG_COPY(0x00); syRtcGetDate( &rtc ); /* Time stamp setting */ time = ( BUS_TIME )rtc; ret = buSaveFile(BUD_DRIVE_A1, "SAVEDATA", SaveData, blocks, &time, flag); if (ret == BUD_ERR_OK) { /* Save request was successful */ } else { /* Save request failed (busy) */ } :
ベリファイエラーが発生した場合でも、ファイルはセーブされています。buStat関数によるこの関数の完了ステータスは以下のとおりです。
定義 意味 BUD_ERR_OK 正常終了 BUD_ERR_NO_DISK メモリーカードがない BUD_ERR_UNFORMAT フォーマットされていない BUD_ERR_DISK_FULL メモリーカードに空きがない BUD_ERR_EXECFILE_EXIST 同名の実行ファイルが存在する BUD_ERR_CANNOT_CREATE ファイルが作成できない BUD_ERR_VERIFY ベリファイエラー
セーブには、(セーブブロック数×5 Int)の時間を必要とします(他の拡張ソケットの状態等によっては、多少時間は変動します)。