Files
cc65/libsrc/rp6502/read.c
rumbledethumps b17c4d3434 add rp6502 target
2023-11-16 18:46:16 -08:00

32 lines
686 B
C

/*
* Copyright (c) 2023 Rumbledethumps
*
* SPDX-License-Identifier: Zlib
* SPDX-License-Identifier: BSD-3-Clause
* SPDX-License-Identifier: Unlicense
*/
#include <rp6502.h>
#include <unistd.h>
int __fastcall__ read(int fildes, void *buf, unsigned count)
{
int total = 0;
while (count)
{
unsigned blockcount = (count > 256) ? 256 : count;
int bytes_read = read_xstack(&((char *)buf)[total], blockcount, fildes);
if (bytes_read < 0)
{
return bytes_read;
}
total += bytes_read;
count -= bytes_read;
if (bytes_read < blockcount)
{
break;
}
}
return total;
}