DataMuseum.dk

Presents historical artifacts from the history of:

Commodore CBM-900

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Commodore CBM-900

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦642f33cbf⟧ TextFile

    Length: 700 (0x2bc)
    Types: TextFile
    Notes: UNIX file
    Names: »sbrk.c«

Derivation

└─⟦f27320a65⟧ Bits:30001972 Commodore 900 hard disk image with partial source code
    └─⟦f4b8d8c84⟧ UNIX V7 Filesystem
        └─ ⟦this⟧ »libc/sys/sbrk.c« 

TextFile

/*
 * Sbrk - grow memory in data segment by
 * a specified increment.
 * Special version that does Commodore Large model Z8001
 */
#include <stdio.h>
#include <types.h>

extern	int	errno;
extern	vaddr_t	__end;

char *
sbrk(incr)
unsigned int	incr;
{
	extern	char	*brk();
	register vaddr_t send,
			rend;

#if 1		/* On the z8001 (at least) reduce the waste */
	rend = __end;
#else
	rend = brk(NULL);
#endif
	if (incr == 0)
		return (rend);
#if Z8001
	if (((unsigned)rend+incr) < (unsigned)rend)
		rend = rend - (unsigned)rend +0x01000000L;
	send = rend + incr;
#else
	send = rend + incr;
	if (send < rend)
		return (NULL);
#endif
	errno = 0;
	brk(send);
	if (errno)
		return (NULL);
	return (rend);
}