Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.
Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.
void set_tape_baud () {
//UBRR = (F_CPU/16/BAUD)-1 +U2X
USART_Init(F_CPU/16/(baud/2)-1);
}
unsigned int send_tape_block (unsigned int offset) {
unsigned char *p = atari_sector_buffer+BLOCK_LEN-1;
unsigned char i,r;
if (offset < FileInfo.vDisk->size) { //data record
sprintf_P((char*)atari_sector_buffer,PSTR("Block %u / %u "),offset/BLOCK_LEN+1,(FileInfo.vDisk->size-1)/BLOCK_LEN+1);
print_str(35,132,2,Yellow,window_bg, (char*) atari_sector_buffer);
//read block
r = faccess_offset(FILE_ACCESS_READ,offset,BLOCK_LEN);
//shift buffer 3 bytes right
for(i = 0; i < BLOCK_LEN; i++) {
*(p+3) = *p;
p--;
}
if(r < BLOCK_LEN) { //no full record?
atari_sector_buffer[2] = 0xfa; //mark partial record
atari_sector_buffer[130] = r; //set size in last byte
}
else
atari_sector_buffer[2] = 0xfc; //mark full record
offset += r;
}
else { //this is the last/end record
print_str_P(35,132,2,Yellow,window_bg, PSTR("End "));
Clear_atari_sector_buffer(BLOCK_LEN+3);
atari_sector_buffer[2] = 0xfe; //mark end record
offset = 0;
}
atari_sector_buffer[0] = 0x55; //sync marker
atari_sector_buffer[1] = 0x55;
USART_Send_Buffer(atari_sector_buffer,BLOCK_LEN+3);
USART_Transmit_Byte(get_checksum(atari_sector_buffer,BLOCK_LEN+3));
_delay_ms(300); //PRG(0-N) + PRWT(0.25s) delay
return(offset);
}
Od 1 do 39 z 39