WITHOUT_* macros to disable unwanted portions of the library. Fix to return of fread() again.

This commit is contained in:
Scott Duensing 2024-02-08 20:48:13 -06:00
parent 7e1aee926e
commit 5260fa3b7c
3 changed files with 100 additions and 22 deletions

View file

@ -23,17 +23,40 @@
#include "f256.h" #include "f256.h"
#ifndef WITHOUT_KERNEL
#include "kernel.c" #include "kernel.c"
#endif
#ifndef WITHOUT_DMA
#include "dma.c" #include "dma.c"
#endif
#ifndef WITHOUT_MATH
#include "math.c" #include "math.c"
#endif
#ifndef WITHOUT_RANDOM
#include "random.c" #include "random.c"
#endif
#ifndef WITHOUT_TEXT
#include "text.c" #include "text.c"
#endif
#ifndef WITHOUT_BITMAP
#include "bitmap.c" #include "bitmap.c"
#endif
#ifndef WITHOUT_TILE
#include "tile.c" #include "tile.c"
#endif
#if !(defined WITHOUT_BITMAP || defined WITHOUT_TILE || defined WITHOUT_SPRITE)
#include "graphics.c" #include "graphics.c"
#endif
#ifndef WITHOUT_SPRITE
#include "sprite.c" #include "sprite.c"
#endif
#ifndef WITHOUT_FILE
#include "file.c" #include "file.c"
#endif
#ifndef WITHOUT_PLATFORM
#include "platform.c" #include "platform.c"
#endif
void f256Init(void) { void f256Init(void) {
@ -54,14 +77,30 @@ void f256Init(void) {
//POKE(MMU_MEM_BANK_6, 6); // Don't use this - it's for the micro kernel. //POKE(MMU_MEM_BANK_6, 6); // Don't use this - it's for the micro kernel.
//POKE(MMU_MEM_BANK_7, 7); // Don't use this - it's for the micro kernel. //POKE(MMU_MEM_BANK_7, 7); // Don't use this - it's for the micro kernel.
#ifndef WITHOUT_KERNEL
kernelReset(); kernelReset();
#endif
#if !(defined WITHOUT_BITMAP || defined WITHOUT_TILE || defined WITHOUT_SPRITE)
graphicsReset(); graphicsReset();
#endif
#ifndef WITHOUT_TEXT
textReset(); textReset();
#endif
#ifndef WITHOUT_BITMAP
bitmapReset(); bitmapReset();
#endif
#ifndef WITHOUT_TILE
tileReset(); tileReset();
#endif
#ifndef WITHOUT_SPRITE
spriteReset(); spriteReset();
#endif
#ifndef WITHOUT_FILE
fileReset(); fileReset();
#endif
#ifndef WITHOUT_RANDOM
randomReset(); randomReset();
#endif
} }

View file

@ -154,7 +154,58 @@ typedef struct colorS {
#define SET_BIT(x, pos) (x |= (1U << pos)) #define SET_BIT(x, pos) (x |= (1U << pos))
extern byte SOF; // Work out configuration DEFINEs.
#ifdef WITHOUT_GRAPHICS
#define WITHOUT_BITMAP
#define WITHOUT_TILE
#define WITHOUT_SPRITE
#endif
#ifndef WITHOUT_FILE // File requires Kernel
#undef WITHOUT_KERNEL
#endif
#ifndef WITHOUT_TEXT // Text requries Math
#undef WITHOUT_MATH
#endif
#ifndef WITHOUT_BITMAP // Bitmap requries Math
#undef WITHOUT_MATH
#endif
#ifndef WITHOUT_KERNEL
#include "kernel.h"
#endif
#ifndef WITHOUT_DMA
#include "dma.h"
#endif
#ifndef WITHOUT_MATH
#include "math.h"
#endif
#ifndef WITHOUT_RANDOM
#include "random.h"
#endif
#ifndef WITHOUT_TEXT
#include "text.h"
#endif
#ifndef WITHOUT_BITMAP
#include "bitmap.h"
#endif
#ifndef WITHOUT_TILE
#include "tile.h"
#endif
#if !(defined WITHOUT_BITMAP || defined WITHOUT_TILE || defined WITHOUT_SPRITE)
#include "graphics.h"
#endif
#ifndef WITHOUT_SPRITE
#include "sprite.h"
#endif
#ifndef WITHOUT_FILE
#include "file.h"
#endif
#ifndef WITHOUT_PLATFORM
#include "platform.h"
#endif
void f256Init(void); void f256Init(void);
@ -164,19 +215,6 @@ void FAR_POKE(uint32_t address, byte value);
void FAR_POKEW(uint32_t address, uint16_t value); void FAR_POKEW(uint32_t address, uint16_t value);
#include "kernel.h"
#include "dma.h"
#include "math.h"
#include "random.h"
#include "text.h"
#include "bitmap.h"
#include "tile.h"
#include "graphics.h"
#include "sprite.h"
#include "file.h"
#include "platform.h"
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View file

@ -178,17 +178,18 @@ char *fileOpenDir(char *name) {
int16_t fileRead(void *buf, uint16_t nbytes, uint16_t nmemb, uint8_t *fd) { int16_t fileRead(void *buf, uint16_t nbytes, uint16_t nmemb, uint8_t *fd) {
char *data = (char *)buf; char *data = (char *)buf;
int16_t gathered = 0; int16_t read = 0;
uint16_t bytes = nbytes * nmemb;
int16_t returned; int16_t returned;
uint16_t bytes = nbytes * nmemb;
while (gathered < bytes) { while (read < bytes) {
returned = kernelRead(*fd, data + gathered, bytes - gathered); returned = kernelRead(*fd, data + read, bytes - read);
if (returned <= 0) return -1; if (returned < 0) return -1;
gathered += returned; if (returned == 0) break;
read += returned;
} }
return nmemb; return read / nbytes;
} }
@ -384,7 +385,7 @@ int16_t fileWrite(void *buf, uint16_t nbytes, uint16_t nmemb, uint8_t *fd) {
bytes -= written; bytes -= written;
} }
return nmemb; return total / nbytes;
} }