예제 #1
0
파일: PRINTF.C 프로젝트: badcodes/c
int cmd_printf(int argc,char** argv) {
	char *fmt_buf,*fmt;
	int varc;
	if(argc==1)
		return help("printf");
	fmt_buf=strdup(argv[1]);
	varc=2;
	while(c=
}
int cmd_help(char* cmdname) {
	if(stricmp(cmdname,"printf")==0) {
		printf("%s V%s\n-    %s",cmdname,cmd_ver(cmdname),
	}
}
예제 #2
0
int main(void) {

  uint8_t c;
    
  DATA_OUT            // Шина данных (DDRD)
  DDRC  = 0b00000000; // Шина адреса
  DDRB  = 0b00101101; // Шина адреса, карта и светодиод
  PORTB = 0b00010001; // Подтягивающий резистор на MISO и светодиод  

  // Пауза, пока не стабилизируется питание
  _delay_ms(100);

//  while(1) {
//     error();
//  }

  // Запуск файловой системы
  if(fs_init()) error();
  strcpy_P((char*)buf, PSTR("boot/boot.rk"));
  if(fs_open()) error();
  if(fs_getfilesize()) error();
  if(fs_tmp < 7) error();
  if(fs_tmp > 128) error();
  if(fs_read0(rom, (WORD)fs_tmp)) error();  
                    
  // Гасим светодиод
  PORTB |= _BV(PB0);
  
  while(1) {

    // Эмуляция ПЗУ
    RomEmu();

    // Зажигаем светодиод
    PORTB |= _BV(PB0);

    // Проверяем наличие карты
    sendStart(ERR_START);
    send(ERR_WAIT);
    if(fs_check()) {
      send(ERR_DISK_ERR);
    } else {
      send(ERR_OK_DISK);
      recvStart();
      c = wrecv();
      
      // Сбрасываем ошибку
      lastError = 0;
    
      // Принимаем аргументы 
      switch(c) {
        case 0:  cmd_boot();         break; 
        case 1:  cmd_ver();          break;
        case 2:  cmd_exec();         break; 
        case 3:  cmd_find();         break;
        case 4:  cmd_open();         break;     
        case 5:  cmd_lseek();        break;     
        case 6:  cmd_read();         break;     
        case 7:  cmd_write();        break; 
        case 8:  cmd_move();         break;
        default: lastError = ERR_INVALID_COMMAND;      
      }
    
      // Вывод ошибки
      if(lastError) sendStart(lastError);
    }

    // Порт рабоатет на выход
    wait();
    DATA_OUT
    
    // Гасим светодиод
    PORTB &=~_BV(PB0);
    
    _delay_ms(500);
  } 
}