1 /* 2 * sim_fio.h: simulator file I/O library headers 3 * 4 * vim: filetype=c:tabstop=4:ai:expandtab 5 * SPDX-License-Identifier: MIT 6 * scspell-id: c2fd7c81-f62a-11ec-b01e-80ee73e9b8e7 7 * 8 * --------------------------------------------------------------------------- 9 * 10 * Copyright (c) 1993-2008 Robert M. Supnik 11 * Copyright (c) 2021-2024 The DPS8M Development Team 12 * 13 * Permission is hereby granted, free of charge, to any person obtaining a 14 * copy of this software and associated documentation files (the "Software"), 15 * to deal in the Software without restriction, including without limitation 16 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 17 * and/or sell copies of the Software, and to permit persons to whom the 18 * Software is furnished to do so, subject to the following conditions: 19 * 20 * The above copyright notice and this permission notice shall be included 21 * in all copies or substantial portions of the Software. 22 * 23 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 24 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 25 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 26 * ROBERT M SUPNIK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 27 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF 28 * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 29 * SOFTWARE. 30 * 31 * Except as contained in this notice, the name of Robert M. Supnik shall not 32 * be used in advertising or otherwise to promote the sale, use or other 33 * dealings in this Software without prior written authorization from 34 * Robert M. Supnik. 35 * 36 * --------------------------------------------------------------------------- 37 */ 38 39 #if !defined(SIM_FIO_H_) 40 # define SIM_FIO_H_ 0 41 42 # define FLIP_SIZE (1 << 16) /* flip buf size */ 43 # define fxread(a,b,c,d) sim_fread (a, b, c, d) 44 # define fxwrite(a,b,c,d) sim_fwrite (a, b, c, d) 45 46 int32 sim_finit (void); 47 typedef t_int64 t_offset; 48 FILE *sim_fopen (const char *file, const char *mode); 49 int sim_fseek (FILE *st, t_addr offset, int whence); 50 int sim_fseeko (FILE *st, t_offset offset, int whence); 51 int sim_set_fsize (FILE *fptr, t_addr size); 52 int sim_set_fifo_nonblock (FILE *fptr); 53 size_t sim_fread (void *bptr, size_t size, size_t count, FILE *fptr); 54 size_t sim_fwrite (const void *bptr, size_t size, size_t count, FILE *fptr); 55 uint32 sim_fsize (FILE *fptr); 56 uint32 sim_fsize_name (const char *fname); 57 t_offset sim_ftell (FILE *st); 58 t_offset sim_fsize_ex (FILE *fptr); 59 t_offset sim_fsize_name_ex (const char *fname); 60 void sim_buf_swap_data (void *bptr, size_t size, size_t count); 61 void sim_buf_copy_swapped (void *dptr, const void *bptr, size_t size, size_t count); 62 extern t_bool sim_end; /* TRUE = little endian, FALSE = big endian */ 63 64 #endif