#include "zdevice.h"

zuint zmemory::store(const zuchar* data, const zuint& dataaddr, const zuint& datalen) {
	zuint datawritten;
	if (dataaddr + datalen <= 1024) {
		memcpy (memdevice+dataaddr, data, datalen);
		return datalen;
	} else {
		if (dataaddr <= 1023) {
			datawritten = 1024 - dataaddr;
			memcpy (memdevice+dataaddr, data, datawritten);
		} else {
			datawritten = 0;
		}
	}
	return datawritten;
}

zuint zmemory::read(zuchar * data, const zuint& dataaddr, const zuint& datalen) {
	zuint dataread;
	if (dataaddr + datalen <= 1024) {
		memcpy (data, memdevice+dataaddr, datalen);
		return datalen;
	} else {
		if (dataaddr <= 1023) {
			dataread = 1024 - dataaddr;
			memcpy (data, memdevice+dataaddr, dataread);
		} else {
			dataread = 0;
		}
	}
	return dataread;
}
