X-Git-Url: http://4ch.mooo.com/gitweb/?a=blobdiff_plain;f=src%2Flib%2F16_head.c;h=b015902ad898188731bcf9ef2ee3b70c622dd553;hb=6021fc3f27b895d382fbd30488ead35657e39196;hp=2d26ca3b379b236f1e1a6f8104a0f1a4b9b0dd0d;hpb=1de8b6541c48f02c1c5430b9938ece2a7b480149;p=16.git diff --git a/src/lib/16_head.c b/src/lib/16_head.c old mode 100644 new mode 100755 index 2d26ca3b..b015902a --- a/src/lib/16_head.c +++ b/src/lib/16_head.c @@ -1,5 +1,5 @@ /* Project 16 Source Code~ - * Copyright (C) 2012-2015 sparky4 & pngwen & andrius4669 + * Copyright (C) 2012-2018 sparky4 & pngwen & andrius4669 & joncampbell123 & yakui-lover * * This file is part of Project 16. * @@ -22,21 +22,14 @@ #include "src/lib/16_head.h" -/* Function: Wait ********************************************************** -* -* Parameters: wait - time in microseconds -* -* Description: pauses for a specified number of microseconds. -* -*/ -void wait(clock_t wait){ - clock_t goal; - - if(!wait) return; +//cpu reg stuff for _AX, _BX, _CX, _DX +#ifdef __WATCOMC__ +union regs CPURegs; +#endif - goal = wait + clock(); - while((goal > clock()) && !kbhit()) ; -} /* End of wait */ +// big global status text buffer +char global_temp_status_text[512]; +char global_temp_status_text2[512]; long int filesize(FILE *fp) @@ -50,6 +43,80 @@ filesize(FILE *fp) return(size_of_file); } +// clrstdin() clear any leftover chars tha may be in stdin stream // +void clrstdin() +{ + int ch = 0; + while( ( ch = getchar() ) != '\n' && ch != EOF ); +} + +//from http://stackoverflow.com/questions/2736753/how-to-remove-extension-from-file-name +// remove_ext: removes the "extension" from a file spec. +// mystr is the string to process. +// dot is the extension separator. +// sep is the path separator (0 means to ignore). +// Returns an allocated string identical to the original but +// with the extension removed. It must be freed when you're +// finished with it. +// If you pass in NULL or the new string can't be allocated, +// it returns NULL. + +char *remove_ext (char* mystr, char dot, char sep) { + char *retstr, *lastdot, *lastsep; + + // Error checks and allocate string. + if (mystr == NULL) + return NULL; + if ((retstr = malloc(strlen (mystr) + 1)) == NULL) + return NULL; + + // Make a copy and find the relevant characters. + + strcpy (retstr, mystr); + lastdot = strrchr (retstr, dot); + lastsep = (sep == 0) ? NULL : strrchr (retstr, sep); + + // If it has an extension separator. + + if (lastdot != NULL) { + // and it's before the extenstion separator. + + if (lastsep != NULL) { + if (lastsep < lastdot) { + // then remove it. + + *lastdot = '\0'; + } + } else { + // Has extension separator with no path separator. + + *lastdot = '\0'; + } + } + + // Return the modified string. + free(mystr); + return retstr; +} + + +//from http://quiz.geeksforgeeks.org/c-program-cyclically-rotate-array-one/ +void rotateR(byte *arr, byte n) +{ + byte x = arr[n-1], i; + for (i = n-1; i > 0; i--) + arr[i] = arr[i-1]; + arr[0] = x; +} + +void rotateL(byte *arr, byte n) +{ + byte x = arr[n+1], i; + for (i = n+1; i > 0; i++) + arr[i] = arr[i+1]; + arr[0] = x; +} + void printmeminfoline(byte *strc, const byte *pee, size_t h_total, size_t h_used, size_t h_free) { byte str[64]; @@ -95,65 +162,56 @@ US_CheckParm(char *parm,char **strings) return(-1); } -/* -========================== -= -= Quit -= -========================== -*/ - -/*void Quit(char *error, ...) +// for input test // +byte dirchar(byte in) { - short exit_code=0; - unsigned finscreen; - - va_list ap; - - va_start(ap,error); - -#ifndef CATALOG - if (!error) + byte out; + switch(in) { - CA_SetAllPurge (); - CA_CacheGrChunk (PIRACY); - finscreen = (unsigned)grsegs[PIRACY]; + case 0: //up + out = 0x1E; + break; + case 4: //down + out = 0x1F; + break; + case 1: //left + out = 0x11; + break; + case 3: //right + out = 0x10; + break; + default: //null + out = 0xB3; + break; } -#endif - - //ShutdownId (); + return out; +} - if (error && *error) - { - vprintf(error,ap); - exit_code = 1; - } -#ifndef CATALOG - else - if (!NoWait) +//from: http://stackoverflow.com/questions/5349896/print-a-struct-in-c +void print_mem(void const *vp, size_t n) +{ + size_t i; + unsigned char const *p = vp; + for (i=0; i