10 #define RELFILENAME_MAX (FILENAME_MAX + 4) // FOO,L,\xFF\0
12 uint8_t relfile_open(struct relfile *rf, char* name)
14 char namebuf[RELFILENAME_MAX];
16 if(strlen(name) > FILENAME_MAX)
18 snprintf(namebuf,RELFILENAME_MAX,"%s,l,%c",name,rf->recsize);
19 cbm_open(rf->fd, rf->devnr, rf->sa, namebuf);
23 cbm_open(rf->cmdfd,rf->devnr,15,NULL);
28 uint8_t relfile_is_split_record(struct relfile *rf, uint16_t recnum)
30 return ((recnum * rf->recsize) % 254) < rf->recsize;
33 uint8_t relfile_pos(struct relfile *rf, uint16_t recnum, uint8_t offset)
35 char cmdbuf[5]; // 'P' (SA) (RECLO) (RECHI) (OFFSET)
38 cmdbuf[1]=rf->sa + 0x60;
39 cmdbuf[2]=(uint8_t)(recnum & 0x00FF);
40 cmdbuf[3]=(uint8_t)(recnum >> 8);
43 //cprintf("CMD: %2X %2X %2X %2X %2X\r\n", cmdbuf[0], cmdbuf[1], cmdbuf[2], cmdbuf[3], cmdbuf[4]);
45 cbm_write(rf->cmdfd,cmdbuf, 5);
49 uint8_t relfile_read(struct relfile *rf, uint8_t *buf)
51 cbm_read(rf->fd, buf, rf->recsize);
55 uint8_t relfile_write(struct relfile *rf, uint8_t *buf)
57 cbm_write(rf->fd, buf, rf->recsize);
61 uint8_t relfile_clear(struct relfile *rf)
63 cbm_write(rf->fd, "\xFF", 1);
67 void relfile_close(struct relfile *rf)