home *** CD-ROM | disk | FTP | other *** search
- extern unsigned long rdvct();
- extern unsigned long peekl();
-
- unsigned long default_nval_mul = 10l;
-
- char *nval( s, np )
- char *s;
- unsigned long *np;
- {
- unsigned long l;
- int hex;
- unsigned long mul;
- int first;
- int dptr;
- int i;
- unsigned char *s1;
-
- l = 0l;
- hex = 0;
- mul = default_nval_mul;
- first = 1;
- dptr = 0;
-
- if( mul == 16 ) hex = 1;
-
- while(*s)
- {
- if( (*s) == '&' )
- dptr = 1;
- else if( (toupper(*s)&0x0FF) == 'X' )
- {
- hex = 1;
- mul = 16;
- }
- else if( isdigit( *s ) )
- l = l*mul + *s - '0';
- else if( hex && ((toupper(*s)&0x0FF) >= 'A') && ((toupper(*s)&0x0FF) <= 'F') )
- l = l*mul + (toupper(*s)&0x0FF) - 'A' + 10;
- else
- {
- if( first ) return(0l);
- s++;
- break;
- }
- first = 0;
- s++;
- }
-
- if( dptr )
- {
- *np = peekl( rdvct(0x049) + l );
- for( i=0; i<4; i++ )
- {
- s1 = peekl( rdvct(0x049) + 17 + i ); /* serial number */
- if( (!isspace( s1 )) && (!isdigit( s1 )) )
- {
- pmsg( "ROM bad or not found\r\n" );
- *np = 0l;
- break;
- }
- }
- }
- else
- *np = l;
-
- return( s );
- }
-
- extern char *strstr();
-
- do_one_arg( cmd, cmds, lptr, len )
- char *cmd;
- char *cmds;
- unsigned long *lptr;
- int len;
- {
- char *s;
- unsigned long n;
- unsigned char *cptr;
- unsigned int *iptr;
- int j;
-
- iptr = cptr = lptr;
-
- if( s = strstr( cmd, cmds ) )
- {
- s += strlen( cmds );
- if( s = nval( s, &n ) )
- {
- if( len == 1 )
- *cptr = n;
- else if( len == 2 )
- *iptr = n;
- else if( len == 3 )
- {
- *iptr = (n & 0x0FFFFl);
- cptr += 2;
- *cptr = (n & 0x00FF0000l) >> 16;
- }
- else if( len == 4 )
- {
- *lptr = n;
- if( s && *s )
- {
- for( j=1; (j<4) && s; j++ )
- {
- if( !(s = nval( s, &n ) ) ) break;
- *lptr = *lptr | (n << (j*8));
- }
- }
- }
- else
- return(0);
- return(1);
- }
- }
-
- return(0);
- }