X-Git-Url: http://4ch.mooo.com/gitweb/?a=blobdiff_plain;f=src%2Flib%2F16_head.c;h=4e8d333540ab8c05dcefcf0ab668e769cafe6658;hb=f888d29c0ceaa48568b15f3269df70e6498c9dbc;hp=69f69db2c06d757abd653fcc690895f74cc2fd4b;hpb=0c47a862860b6ae769429092860ecd9ae1591ba9;p=16.git diff --git a/src/lib/16_head.c b/src/lib/16_head.c index 69f69db2..4e8d3335 100755 --- a/src/lib/16_head.c +++ b/src/lib/16_head.c @@ -1,5 +1,5 @@ /* Project 16 Source Code~ - * Copyright (C) 2012-2016 sparky4 & pngwen & andrius4669 & joncampbell123 & yakui-lover + * 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; +//cpu reg stuff for _AX, _BX, _CX, _DX +#ifdef __WATCOMC__ +union regs CPURegs; +#endif - if(!wait) return; - - 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,69 +162,7 @@ US_CheckParm(char *parm,char **strings) return(-1); } -//=========================================================================== - -/* -========================== -= -= Quit -= -========================== -*/ - -void Quit (char *error) -{ - unsigned finscreen; - memptr screen; - union REGS in, out; - - //ClearMemory (); - if (!*error) - { - //WriteConfig (); - } - else - { - //CA_CacheGrChunk (ERRORSCREEN); - //screen = grsegs[ERRORSCREEN]; - } - - //ShutdownId (); - //IN_Shutdown(); - //modexLeave(); - in.h.ah = 0x00; - in.h.al = 0x3; - int86(0x10, &in, &out); - - if (error && *error) - { - movedata ((unsigned)screen,7,0xb800,0,7*160); - //gotoxy (10,4); - puts(error); - //gotoxy (1,8); - exit(1); - } - else - if (!error || !(*error)) - { - //clrscr(); - //#ifndef JAPAN - movedata ((unsigned)screen,7,0xb800,0,4000); - //gotoxy(1,24); - //#endif -//asm mov bh,0 -//asm mov dh,23 // row -//asm mov dl,0 // collumn -//asm mov ah,2 -//asm int 0x10 - } - - exit(0); -} - -//=========================================================================== - - +// for input test // byte dirchar(byte in) { byte out; @@ -181,3 +186,150 @@ byte dirchar(byte in) } return out; } + +//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>8), BYTE_TO_BINARY(_cflag)); +// printf("cflag: %s\n",(_cflag)); + printf("dx: "NIBBLE_TO_BINARY_PATTERN""NIBBLE_TO_BINARY_PATTERN"\n", NIBBLE_TO_BINARY(_dx>>4), NIBBLE_TO_BINARY(_dx)); +#endif + printf("dx: "BYTE_TO_BINARY_PATTERN""BYTE_TO_BINARY_PATTERN"\n", BYTE_TO_BINARY(_dx>>8), BYTE_TO_BINARY(_dx)); + printf(" ---------------------------------------\n"); +#endif + + printf("for more info see\n http://stackoverflow.com/questions/9130349/how-many-registers-are-there-in-8086-8088\n"); + printf("================================================================================"); +}