[Coco] CMOC file-I/O examples?

Evan Wright evancwright at yahoo.com
Fri Jan 18 11:17:08 EST 2019


 Yes.  Thank you!  I should be able to make this work for me.
Thanks,
Evan
    On Friday, January 18, 2019, 8:58:50 AM CST, Brendan Donahe <brendan at polylith.com> wrote:  
 
 Evan,
Assuming you are talking about Pierre's decb_* functions, I have examples of CMOC file I/O (directory listing, file read, file write) in my CoCoVGA character set editor, CCVEDIT.  I can share my Git repository source with you if you want everything, otherwise, I've pasted a few code snippets below.
Hope this helps,Brendan
unsigned char save_repo(const char *filename,  unsigned char which_drive,  unsigned short load_addr,  unsigned char *charset_with_preamble) {  DECBFile file;    unsigned char err;
  // Open binary file for output  err = decb_createSectorFile(&file, which_drive, filename,       DECB_TYPE_MACHINE_CODE, DECB_FORMAT_BINARY);  if(err != DECB_OK) return err;
  // All 8x12x256 character sets are 12 sectors of data plus another  // with header/trailer (preamble/postamble) info  #define NUM_SECTORS 13
  // Header/preamble  charset_with_preamble[0] = 0x00;                                 // preamble flag 00  charset_with_preamble[1] = 0x0c;                                 // length of data block (MSbyte?)  charset_with_preamble[2] = 0x00;                                 // length of data block (LSbyte?)  charset_with_preamble[3] = (unsigned char)(load_addr >> 8);      // load address (MSbyte?)  charset_with_preamble[4] = (unsigned char)(load_addr & 0x00ff);  // load address (LSbyte?)
  // Trailer/postamble  charset_with_preamble[SIZE_OF_EDIT_CHARSET + 5 + 0] = 0xff;      // postamble flag  charset_with_preamble[SIZE_OF_EDIT_CHARSET + 5 + 1] = 0x00;      // zero byte  charset_with_preamble[SIZE_OF_EDIT_CHARSET + 5 + 2] = 0x00;      // zero byte  charset_with_preamble[SIZE_OF_EDIT_CHARSET + 5 + 3] = 0x00;      // exec addr  charset_with_preamble[SIZE_OF_EDIT_CHARSET + 5 + 4] = 0x00;      // exec addr
  // Write sectors  for(unsigned char file_sector_idx = 0; (file_sector_idx < NUM_SECTORS) && (err == DECB_OK); ++file_sector_idx) {    err = decb_writeSector(&file, &(charset_with_preamble[256*(unsigned short)file_sector_idx]), file_sector_idx);  }
  // Close file  if(err == DECB_OK) {    decb_setNumBytesUsedInLastSector(&file, 10);    err = decb_closeSectorFile(&file);  }      return err;}
unsigned char load_repo(const char *filename,  unsigned char which_drive,  unsigned char *charset_with_preamble) {  DECBFile file;
  unsigned char err;
  // Open binary file for input  err = decb_openSectorFile(&file, which_drive, filename);  if(err != DECB_OK) return err;
  // Read sectors  for(unsigned char file_sector_idx = 0; (file_sector_idx < NUM_SECTORS) && (err == DECB_OK); ++file_sector_idx) {    err = decb_readSector(&file, &(charset_with_preamble[256*(unsigned short)file_sector_idx]), file_sector_idx);  }
  // Close file  if(err == DECB_OK) {    err = decb_closeSectorFile(&file);  }      return err;  }

On Fri, Jan 18, 2019 at 8:48 AM Evan Wright via Coco <coco at maltedmedia.com> wrote:

Does anyone have an examples of file IO using CMOC?  I just need to read / write a binary file whose size will never change.
Evan

-- 
Coco mailing list
Coco at maltedmedia.com
https://pairlist5.pair.net/mailman/listinfo/coco

  


More information about the Coco mailing list