/* * Sample Program for microVIEW-G(x) * <<< samp2.c >>> * 1995 @ advice Yokogawa Digital Computer Corp. */ /* * Include Files */ #include "samp0.h" #include "samp1.h" #include "samp2.h" /* #include */ /* 98.08.04 */ /* * Counter function */ #define ADV0 0x0 #define ADV1 0x1 #define ADV2 0x2 #define ADV3 0x3 #define ADV4 0x4 #define ADV5 0x5 #define ADV6 0x6 #define ADV7 0x7 #define ADV8 0x8 #define ADV9 0x9 #define ADVa 0xa #define ADVb 0xb #define ADVc 0xc #define ADVd 0xd #define ADVe 0xe #define ADVf 0xf #define REAL_DEBUG 98765.4321 #define REAL_ZERO 0.0 #define ADVICE "advice" void Counter(void) { struct LBITFLD { /* LOCAL VARIABLE'S STRUCTER in FUNCTION */ int q1:5; int q2:4; int x3:3; } lbitfld; // union UBITFLD{ /* LOCAL VARIABLE'S UNION in FUNCTION */ // int x1:3; // int x2:4; // int q3:5; // } ubitfld; unsigned short cnt; int dummy; STRcpy(MasterStr,ADVICE); lbitfld.q2 = 0xA; bitfld.m2 = lbitfld.q2; // ubitfld.q3 = 0xb; // bitfld.m3 = ubitfld.q3; for (cnt = 0; cnt < COUNT_MAX; cnt++) { dummy = ADV0; dummy = ADV1; dummy = ADV2; dummy = ADV3; dummy = ADV4; dummy = ADV5; dummy = ADV6; dummy = ADV7; dummy = ADV8; dummy = ADV9; dummy = ADVa; dummy = ADVb; dummy = ADVc; dummy = ADVd; dummy = ADVe; dummy = ADVf; } SystemCounter = SystemCounter + 0.1; if (SystemCounter > REAL_DEBUG) { SystemCounter = REAL_ZERO; } if ((GlobalCounter--) == 0) { GlobalCounter = MAXSHORT; } if (++InterCounter > MAXLONG) { InterCounter = 0; } return; } /* * String copy */ int STRcpy( char d[], char s[]) { int i,j; for (i=0,j=0;;i++) { d[j++] = s[i]; if (s[i] == '\0') break; else if (s[i] < ' ') return(-1); } return(j); } /* * Sort data */ int Sortbybig(struct SAMP_DATA data[], int n) { int i, j, k; int rcd; for(i = 0; i < n; i++) { k = i; for(j = i + 1; j < n; j++) { rcd = BiggerThan( data[j].big, data[k].big ); if ( rcd < 0) { k = j; } } if(i != k) { SwapStr(data[i].big, data[k].big); SwapStr(data[i].small, data[k].small); } } return(0); } int Sortbysmall(struct SAMP_DATA data[], int n) { int i, j, k; int rcd; for(i = 0; i < n; i++) { k = i; for(j = i + 1; j < n; j++) { rcd = BiggerThan( data[j].small, data[k].small ); if (rcd < 0) { k = j; } } if(i != k) { SwapStr(data[i].big, data[k].big); SwapStr(data[i].small, data[k].small); } } return(0); } /* * Swap String Data */ int SwapStr(char *d1, char *d2) { char tmp[CHAR_SIZE]; strcpy(tmp,d1); strcpy(d1,d2); strcpy(d2,tmp); return(0); } /* * Compare Strings */ #define NULL '\0' int BiggerThan( char s1[], char s2[]) { int i; int rcd; for (i=0; ;i++) { if (s1[i] == NULL) { if (s2[i] == NULL) { rcd = 0; goto RET_FUNC; } else { rcd = -1; goto RET_FUNC; } } else { if (s2[i] == NULL) { rcd = 1; goto RET_FUNC; } } } RET_FUNC: return(rcd); } /* * Change Lower to Upper strings */ #define ASCa 'a' #define ASCz 'z' #define ASC_SP 0x20 int StrToUp( char s[]) { int i; for (i=0;;i++) { if ( ASCa <= s[i] && s[i] <= ASCz ) { s[i] = (char)(s[i] + ASC_SP); } else if (s[i] == NULL) { break; } else { ; } } return(i); } /* * Change Upper to Lower strings */ #define aASC 'A' #define zASC 'Z' int StrToLow( char s[]) { int i; for (i=0; ; i++) { if (aASC <= s[i] && s[i] <= zASC) { s[i] = (char)(s[i] - ASC_SP); } else if (s[i] == NULL) { break; } else { ; } } return(i); } /* * Compare Strings * if s1 bigger than s2, return positive. */ int CmpStr( char s1[], char s2[]) { int i, rcd; for (i=0;;i++) { if (s1[i] == s2[i]) { rcd = 0; } else if (s1[i] < s2[i]) { rcd = -1; break; } else { rcd = 1; break; } } return(rcd); } /* * Small Data Processing */ int SmallExec( struct SAMP_DATA *data) { int i; for (i=0; ismall ); } return(i); } /* * Big Data Processing */ /* double BigExec ( struct SAMP_DATA *data, double cnt, char c0, char c1, char c2, char c3) */ double BigExec ( struct SAMP_DATA *data, double cnt, char c0, char c1, char c2, char c3 ) { int i; for (i=0; ibig ); } } else { StrToLow ( data -> big ) ; } } return(cnt); } float Divide ( int s ) { double dret, seed ; float fret; seed = 2.0; dret = (double)( s ) / seed; fret = (float)dret; return(fret); } float Multiplication( int s ) { float fret; double dret, seed; seed = 2.0; dret = (double)( s ) * seed; fret = (float)dret; return (fret); } float Square( int s ) { float fret; double dret; dret = (double)( s * s ); fret = (float)dret; return(fret); } /* EOF */