write.c 869 Bytes

#include "ddwriteint.h"


s32 ddWrite(DDCmd *command)
{

  /*
   * 呼ばれるのがはじめてなら、初期化する
   */
  if (! __ddWriteActive)
  {
    __ddInit();
  
    if (__ddWriteError)
      return __ddWriteError;
  }
  
  /*
   * 必要ならフォーマットする(__ddInfo もセットする)
   */
  __ddFormatDisk(command);

  if (__ddWriteError)
    return __ddWriteError;
  
  /* ここから、グローバル変数 __ddInfo が使用可能 */

  /*
   * idAddr が 0 でなければ、diskID をセットする
   */
  if (command->idAddr != 0)
  {
    __ddSetID(command);
  
    if (__ddWriteError)
      return __ddWriteError;
  }
  
  /*
   * システム情報を取り込むためのダミーリード
   */
  __ddDummyRead();
  
  if (__ddWriteError)
    return __ddWriteError;

  /*
   * 実際に書き込む
   */
  __ddDoDiskWrite(command);
  
  if (__ddWriteError)
    return __ddWriteError;

  return 0;

} /* ddWrite() */