#include #include #include #include #include "toy.h" int32_t get2compl(uint16_t value) { int32_t sign_value = value; if(value>32767) { value=(~value)+1; sign_value = value*(-1); } return sign_value; } //assumes little endian //stackoverflow.com/questions/111928 void fprintBits(size_t const size, void const * const ptr, FILE *file_pointer) { //Beispiel: //printBits(sizeof(*ram), ram); unsigned char *b = (unsigned char*) ptr; unsigned char byte; int i, j; for (i=size-1;i>=0;i--) { for (j=7;j>=0;j--) { byte = (b[i] >> j) & 1; fprintf(file_pointer,"%u", byte); } } fputs("\n",file_pointer); } void makeHexDump(bool base_2, uint16_t ram[]) { time_t timer; struct tm *tm_timer; char timestamp[32]; FILE *fp; time(&timer); tm_timer=localtime(&timer); if(strftime(timestamp,sizeof(timestamp),"coredump_%d_%b_%y_%H-%M-%S.toy",tm_timer)==0) { fprintf(stderr,"Buffer for system-time fault! hexdump canceled\n"); return; } if(NULL==(fp=fopen(timestamp,"w"))) { fprintf(stderr,"File system access failed, hexdump canceled\n"); return; } if(base_2) { for(int i=0; i