コード例 #1
0
ファイル: test.c プロジェクト: ConcoMB/CF-OS
int test(int a, char** v){


	/* la forma de ejecutar es qemu -kernel bin/kernel.bin -hda disk.img 
	** o tambien con -hda disk0.img que tiene cosas escritas parece y es mas facil ver cosas*/

	char buffer2[512],buffer[512];
	int i;
	for(i=0;i<512;i++){
		buffer[i]='C';
	}
	printf("\n");

	

	ata_write(ATA0, buffer, 512, 1, 256);
	ata_read(ATA0, buffer2, 512, 1, 0);
	printf("lei esto\n");
	for(i=0 ; i<512 ;i++){
		printf("%c", buffer2[i]);
	}
	printf("\n");
	ata_read(ATA0, buffer2, 512, 2, 0);
	printf("lei esto\n");
	for(i=0 ; i<512 ;i++){
		printf("%c", buffer2[i]);
	}
	return 0;
}
コード例 #2
0
ファイル: fat16.c プロジェクト: cyrusmaintea/N64HDD
uint32_t test1() {

//ata_read(boot_start_lba,1,tmp,1);
	ata_write(boot_start_lba,1,(uint16_t *)&fat_boot,1);
	//ata_write(uint32_t start_sector, uint32_t num_sectors, uint16_t* buf, uint32_t byteswap)
	return 0;//fat[0x10];//__SWAP16(fat_boot.fat_size_sectors)* __SWAP16(fat_boot.sector_size);
}
コード例 #3
0
ファイル: fat16.c プロジェクト: cyrusmaintea/N64HDD
void write_file(char *name, uint8_t *buf, uint32_t len, fat_entry *dirinfo) {
	uint32_t num_clusters = fat16_bytes_to_cluster_size(len);
	uint32_t *clusters = (uint32_t*)malloc(num_clusters*sizeof(uint32_t));
	get_free_clusters(clusters, num_clusters);

	//create an entry in the root dir
	int root_idx = get_free_root_dir_space(dirinfo);
	if(root_idx==-1)
		return; //no free space in rootdir..
	
	fat_entry *entry = &dirinfo[root_idx];
	memcpy(entry->filename,name,8);
	entry->filename_ext[0]= 'S';
	entry->filename_ext[1]= 'A';
	entry->filename_ext[2]= 'V';
	entry->file_attrib = 0;
	entry->time_created_updated = 0;
	entry->date_created_updated = 0;
	entry->start_cluster = __SWAP16(clusters[0]);
	entry->file_size_bytes = __SWAP32(len);

	//update dirlist on disk
	int k;
	uint16_t *p = (uint16_t *)dirinfo;
	for(k=0;k<(((__SWAP16(fat_boot.root_dir_entries))*0x20)/512);k++) {
		ata_write(root_dir_start_lba+k,1,p,1);
		p+=256;
	}
	

	//ONLY WRITES ONE CLUSTER FOR NOW!!
	uint32_t cluster_offs = fat16_cluster_to_lba_offset(entry->start_cluster);
	for(k=0;k<fat16_get_file_lba_size(entry);k++) {
		ata_write(cluster_offs+k,1,(uint16_t *)buf,1);
		buf += 512;
	}

	//write FAT to disk
	p = &fat[0];
	fat[clusters[0]] = 0xFFFF; //end of file
	for(k=0;k<((__SWAP16(fat_boot.fat_size_sectors)* __SWAP16(fat_boot.sector_size))/512);k++) {
		ata_write(fat_start_lba+k,1,p,1);
		p +=256;
    }

}