示例#1
0
static void checkreceive_serial (void)
{
#ifdef SERIAL_PORT
	static int ninebitdata;
	int recdata;

	if (!canreceive())
		return;

	if (ninebit) {
		if (!readseravail())
			return;
		for (;;) {
			if (!readser (&recdata))
				return;
			if (ninebitdata) {
				serdatr = (ninebitdata & 1) << 8;
				serdatr |= recdata;
				serdatr |= 0x200;
				ninebitdata = 0;
				break;
			} else {
				ninebitdata = recdata;
				if ((ninebitdata & ~1) != 0xa8) {
					write_log (_T("SERIAL: 9-bit serial emulation sync lost, %02X != %02X\n"), ninebitdata & ~1, 0xa8);
					ninebitdata = 0;
					return;
				}
				continue;
			}
		}
	} else {
		if (!readseravail())
			return;
		if (!readser(&recdata))
			return;
		if (currprefs.serial_crlf) {
			if (recdata == 0 || (serial_recv_previous == 13 && recdata == 10)) {
				//write_log(_T(" [%02X] "), (uae_u8)recdata);
				serial_recv_previous = -1;
				return;
			}
		}
		//write_log(_T(" %02X "), (uae_u8)recdata);
		serial_recv_previous = recdata;
		serdatr = recdata;
		serdatr |= 0x100;
	}

	data_in_serdatr = 1;
	serdatr_last_got = 0;
	serial_check_irq ();
#if SERIALDEBUG > 2
	write_log (_T("SERIAL: received %02X (%c)\n"), serdatr & 0xff, dochar (serdatr));
#endif
#endif
}
示例#2
0
文件: gen.c 项目: joshuajnoble/sodec
int main(int args, char** argv) {
  int c;

  while((c = getchar()) != EOF) {
    dochar(c);
    printf("\n");
  } 
  
}
示例#3
0
文件: main.c 项目: michft/sparkfun
void dumpsect()
{
    u16 cnt;
    printf("\n=");
    for (cnt = 0; cnt < 512; cnt++) {
        if (!(cnt & 31))
            printf("\n");
        printf("%02X", filesectbuf[cnt]);
    }
    printf("\n-");
    for (cnt = 0; cnt < 512; cnt++) {
        if (!(cnt & 31))
            printf("\n");
        printf("%c", dochar(filesectbuf[cnt]));
    }
}
示例#4
0
static void checkreceive_enet (void)
{
#ifdef SERIAL_ENET
	uae_u16 recdata;

	if (!canreceive())
		return;
	if (!enet_readseravail ())
		return;
	if (!enet_readser (&recdata))
		return;
	serdatr = recdata & 0x1ff;
	if (recdata & 0x200)
		serdatr |= 0x200;
	else
		serdatr |= 0x100;
	data_in_serdatr = 1;
	serdatr_last_got = 0;
	serial_check_irq ();
#if SERIALDEBUG > 2
	write_log (_T("SERIAL: received %02X (%c)\n"), serdatr & 0xff, dochar (serdatr));
#endif
#endif
}
示例#5
0
文件: main.c 项目: michft/sparkfun
int main(int argc, char *argv[])
#endif
{
    u8 sta = 0, cmd;
    int i;

#ifndef __AVR__
    if (argc > 3 || argc < 2) {
        printf("Usage: (sudo) testfat rawdevice  e.g. fat32 /dev/sdb \r\n");
        return 1;
    }
    //    fcntl(0, F_SETFL, fcntl(0, F_GETFL) | O_NONBLOCK);
    if (initsec(argv[1]))
        return -1;
#endif

    hwinit();

    printf("\nFAT32 Test\n");
    i = sdhcinit();
    printf("init %d\n", i);
    if (!i) {
        printf( "%lu sects\n", sdnumsectors );
        i = mount(0);
        printf("Mount: %d\n", i);
        if (!i)
            seekfile(0, 0);
#if 1                           // show what is read
        else
            for (i = 0; i < 1; i++) {
                readsec(i);
                dumpsect();
            }
#endif
    }
    if (i)
        printf("Not Ready\n");

    for (;;) {
        cmd = tzgetchar();
        if (cmd >= 'a')
            cmd -= 32;
        switch (cmd) {
#ifdef __AVR__
        case '0':
        case '1':
        case '2':
        case '3':
        case '4':
        case '5':
        case '6':
        case '7':
        case '8':
        case '9':
            //            while (!tzkbhit()) {
                ADMUX = 0xe0 + cmd - '0';
                ADCSRA = 0xc7;
                while (ADCSRA & 0x40);
                printf("%c %04x\n", cmd, ADC);
                //            }
            break;
#endif
        case 3:
        case 26:
        case 'Q':
            exit(0);
        case 'Y':
            {
                u16 u;
                u = getdirent((u8 *) "");
                printf("%u entries in dir\n", u);
            }
            break;
        case 'I':
            sta = sdhcinit();
            printf("init %d\n", sta);
            if (sta)
                continue;
            printf( "%lu sects\n", sdnumsectors );
            sta = cardinfo(0);
            printf("inf %d\n", sta);
            if (sta)
                continue;
            for (sta = 0; sta < 18; sta++)
                printf("%02X", filesectbuf[sta]);
            printf(" ");
            for (sta = 0; sta < 18; sta++)
                printf("%c", dochar(filesectbuf[sta]));
            printf("\n");
            sta = cardinfo(1);
            printf("inf %d\n", sta);
            if (sta)
                continue;
            for (sta = 0; sta < 18; sta++)
                printf("%02X", filesectbuf[sta]);
            printf(" ");
            for (sta = 0; sta < 18; sta++)
                printf("%c", dochar(filesectbuf[sta]));
            printf("\n");
            break;
        case 'M':
            i = mount(0);
            if (!i)
                printf("Mounted\n");
            else
                printf("Error\n");
            break;
        case 'O':
            printf("Open:\n");
            i = getfname();
            if (i < 0) {
                printf("bad fname\n");
                break;
            }
            i = getdirent(filename);
            if (i == 2)
                printf("Entered Dir\n");
            else if (!i)
                printf("Opened\n");
            else
                printf("Not Found\n");
            break;
        case 'C':
            printf("Create:\n");
            i = getfname();
            if (i < 0) {
                printf("bad fname\n");
                break;
            }
            if (i == 1) {
                printf("Directory:\n");
                i = getfname();
                if (i) {
                    printf("bad fname\n");
                    break;
                }
                i = 0x10;       // directory attribute
            }
            i = newdirent(filename, i);
            if (!i)
                printf("Created\n");
            else if (i == 2)
                printf("Exists\n");
            else
                printf("Error\n");
            break;
        case 'N':
            i = newdirent(NULL, 0);
            if (!i)
                printf("Created Ser Log\n");
            else
                printf("Error\n");
            break;
        case 'L':
            resettodir();
            seekfile(0, 0);
            for (i = 0; i < 16; i++) {
                if (!filesectbuf[i << 5])
                    break;
                if (0xe5 == filesectbuf[i << 5]) {
                    printf("(del)\n");
                    continue;
                }
                if (0xf == filesectbuf[(i << 5) + 11]) {
                    printf("(lfn)\n");
                    continue;
                }
                printf("%8.8s.%3.3s %c\n", &filesectbuf[i << 5], &filesectbuf[(i << 5) + 8],
                  filesectbuf[(i << 5) + 11] & 0x10 ? '/' : ' ');
                if (i == 15) {
                    i = readnextsect();
                    if (i != 512)
                        break;
                    i = -1;
                }
            }
            break;
        case 'W':
            printf("Write: ^c|^z to exit\n");
            for (;;) {
                char cx;
                cx = tzgetchar();
                if (cx == 3 || cx == 26)
                    break;
                writebyte(cx);
                printf("%c", cx);
            }
            printf("\nWritten ");
            flushbuf();
            printf("Flushed ");
            syncdirent(0);
            printf("DSynced\n");
            break;
        case 'F':
            flushbuf();
            printf("Flushed\n");
            break;
        case 'E':
            syncdirent(0);
            printf("dirsynced\n");
            break;
        case 'P':
            syncdirent(1);
            printf("size pushed\n");
            break;
        case 'Z':
            zaphint();
            printf("hint zapped\n");
            break;
        case 'T':
            truncatefile();
            printf("Trunc-ed\n");
            break;
        case 'D':
            i = deletefile();
            if (i == 1)
                printf("no rmdir\n");
            else if (!i)
                printf("Deleted\n");
            else
                printf("Error\n");
            break;
            // will go away when seek is filled in
        case 'A':
            seekfile(0, 2);
            printf("At EOF\n");
            break;
        case 'S':
            {
                u32 x = 0;
                u8 y = 1;
                seekfile(x, y);
                printf("Rewound\n");
            }
            break;
        case 'R':
        case 'V':
        case 'X':
            sta = 0;
            while (!tzkbhit()) {
                i = readbyte();
                if (i < 0) {
                    printf("\n=EOF=\n");
                    break;
                }
                switch (cmd) {
                case 'R':
                    printf("%c", i);
                    break;
                case 'V':
                    printf("%c", dochar(i));
                    break;
                case 'X':
                    if (!(sta++ & 15))
                        printf("\n");
                    printf("%02X", i);
                    break;
                }
            }
            break;
        case 'U':
            resetrootdir();
            seekfile(0, 0);     // for list
            printf("At rootdir\n");
            break;
        case 'G':
            resettodir();
            seekfile(0, 0);     // for list
            printf("At curdir\n");
            break;

        default:
            // help message
            {
                char *c = mainmenu;
                while (pgm_read_byte(c))
                    putchar(pgm_read_byte(c++));
            }
            break;
        }
    }
}
示例#6
0
void dopage()
{

    while ((opcode = (int) get1()) != EOP) {    /* process page until eop */
        if (opcode <= LASTCHAR)
            dochar((char) opcode);
        else if ((opcode >= FONT_00) && (opcode <= FONT_63)) 
            setfont(opcode - FONT_00);
        else if (opcode > POST_POST)
            errorexit(illop);
        else
            switch (opcode) {
                case SET1     : setchar(get1()); break;
                case SET2     : setchar(get2()); break;
                case SET3     : setchar(get3()); break;
                case SET4     : setchar(get4()); break;
                case SET_RULE : { long height = sget4();
                                  rule(MOVE, sget4(), height); break;
                                }
                case PUT1     : putcharacter(get1()); break;
                case PUT2     : putcharacter(get2()); break;
                case PUT3     : putcharacter(get3()); break;
                case PUT4     : putcharacter(get4()); break;
                case PUT_RULE : { long height = sget4();
                                  rule(STAY, sget4(), height); break;
                                }
                case NOP      : break;  /* no-op */
                case BOP      : errorexit(bdbop); break;
/*              case EOP      : break;  strange place to have EOP */
                case PUSH     : if (sptr >= stackmax)            /* push */
                                     errorexit(stkof);
                                stack[sptr].hh = h;
                                stack[sptr].vv = v;
                                stack[sptr].ww = w;
                                stack[sptr].xx = x;
                                stack[sptr].yy = y;
                                stack[sptr].zz = z;
                                sptr++;
                                break;
                case POP      : if (sptr == 0)                   /* pop */
                                    errorexit(stkuf);
                                sptr--;
                                h = stack[sptr].hh;
                                v = stack[sptr].vv;
                                w = stack[sptr].ww;
                                x = stack[sptr].xx;
                                y = stack[sptr].yy;
                                z = stack[sptr].zz;
                                break;
                case RIGHT1   : (void) horizontalmove(sget1()); break;
                case RIGHT2   : (void) horizontalmove(sget2()); break;
                case RIGHT3   : (void) horizontalmove(sget3()); break;
                case RIGHT4   : (void) horizontalmove(sget4()); break;
                case W0       : h += w; break;
                case W1       : w = horizontalmove(sget1()); break;
                case W2       : w = horizontalmove(sget2()); break;
                case W3       : w = horizontalmove(sget3()); break;
                case W4       : w = horizontalmove(sget4()); break;
                case X0       : h += x; break;
                case X1       : x = horizontalmove(sget1()); break;
                case X2       : x = horizontalmove(sget2()); break;
                case X3       : x = horizontalmove(sget3()); break;
                case X4       : x = horizontalmove(sget4()); break;
                case DOWN1    : v += sget1(); break;
                case DOWN2    : v += sget2(); break;
                case DOWN3    : v += sget3(); break;
                case DOWN4    : v += sget4(); break;
                case Y0       : v += y; break;
                case Y1       : y = sget1(); v += y; break;
                case Y2       : y = sget2(); v += y; break;
                case Y3       : y = sget3(); v += y; break;
                case Y4       : y = sget4(); v += y; break;
                case Z0       : v += z; break;
                case Z1       : z = sget1(); v += z; break;
                case Z2       : z = sget2(); v += z; break;
                case Z3       : z = sget3(); v += z; break;
                case Z4       : z = sget4(); v += z; break;
                case FNT1     :
                case FNT2     :
                case FNT3     :
                case FNT4     : setfont(num(opcode - FNT1 + 1));
                                break;
                case XXX1     : mseek(DVIfile, get1(), relative); break;
                case XXX2     : mseek(DVIfile, get2(), relative); break;
                case XXX3     : mseek(DVIfile, get3(), relative); break;
                case XXX4     : mseek(DVIfile, get4(), relative); break;
                case FNT_DEF1 :
                case FNT_DEF2 :
                case FNT_DEF3 :
                case FNT_DEF4 : fontdef(opcode - FNT_DEF1 + 1);
                                break;
                case PRE      : errorexit(bdpre); break;
                case POST     : errorexit(bdpst); break;
                case POST_POST: errorexit(bdpp); break;
            }
    }

} /* dopage */
示例#7
0
void mainbody( void ) {
    
  initialize () ;
  opengffile () ;
  o = getbyte () ;
  if ( o != 247 ) 
  {
    fprintf ( stderr , "%s%s%c\n",  "Bad GF file: " , "First byte isn't start of preamble!"     , '!' ) ;
    uexit ( 1 ) ;
  } 
  o = getbyte () ;
  if ( o != 131 ) 
  {
    fprintf ( stderr , "%s%s%ld%s%ld%c\n",  "Bad GF file: " , "identification byte should be " ,     (long)131 , " not " , (long)o , '!' ) ;
    uexit ( 1 ) ;
  } 
  o = getbyte () ;
  putc ( '\'' ,  stdout );
  while ( o > 0 ) {
      
    o = o - 1 ;
    putc ( xchr [getbyte () ],  stdout );
  } 
  { putc ( '\'' ,  stdout );  putc ( '\n',  stdout ); }
  do {
      gfprevptr = curloc ;
    do {
	a = curloc ;
      o = getbyte () ;
      p = firstpar ( o ) ;
      if ( eof ( gffile ) ) 
      {
	fprintf ( stderr , "%s%s%c\n",  "Bad GF file: " , "the file ended prematurely" ,         '!' ) ;
	uexit ( 1 ) ;
      } 
      if ( o == 243 ) 
      {
	{
	  if ( wantsmnemonics ) 
	  {
	    putc ('\n',  stdout );
	    fprintf ( stdout , "%ld%s%s%ld%s",  (long)a , ": " , "yyy " , (long)p , " (" ) ;
	  } 
	  if ( wantsmnemonics ) 
	  {
	    printscaled ( p ) ;
	    putc ( ')' ,  stdout );
	  } 
	} 
	o = 244 ;
      } 
      else if ( ( o >= 239 ) && ( o <= 242 ) ) 
      {
	{
	  if ( wantsmnemonics ) 
	  {
	    putc ('\n',  stdout );
	    fprintf ( stdout , "%ld%s%s",  (long)a , ": " , "xxx '" ) ;
	  } 
	  badchar = false ;
	  b = 16 ;
	  if ( p < 0 ) 
	  {
	    putc ('\n',  stdout );
	    fprintf ( stdout , "%ld%s%s%s",  (long)a , ": " , "! " , "string of negative length!" ) 
	    ;
	    putc ('\n',  stdout );
	  } 
	  while ( p > 0 ) {
	      
	    q = getbyte () ;
	    if ( ( q < 32 ) || ( q > 126 ) ) 
	    badchar = true ;
	    if ( wantsmnemonics ) 
	    {
	      putc ( xchr [q ],  stdout );
	      if ( b < linelength ) 
	      b = b + 1 ;
	      else {
		  
		putc ('\n',  stdout );
		b = 2 ;
	      } 
	    } 
	    p = p - 1 ;
	  } 
	  if ( wantsmnemonics ) 
	  putc ( '\'' ,  stdout );
	  if ( badchar ) 
	  {
	    putc ('\n',  stdout );
	    fprintf ( stdout , "%ld%s%s%s",  (long)a , ": " , "! " ,             "non-ASCII character in xxx command!" ) ;
	    putc ('\n',  stdout );
	  } 
	} 
	o = 244 ;
      } 
      else if ( o == 244 ) {
	  
	if ( wantsmnemonics ) 
	{
	  putc ('\n',  stdout );
	  fprintf ( stdout , "%ld%s%s",  (long)a , ": " , "no op" ) ;
	} 
      } 
    } while ( ! ( o != 244 ) ) ;
    if ( o != 248 ) 
    {
      if ( o != 67 ) {
	  
	if ( o != 68 ) 
	{
	  fprintf ( stderr , "%s%s%ld%s%ld%c%c\n",  "Bad GF file: " , "byte " , (long)curloc - 1 ,           " is not boc (" , (long)o , ')' , '!' ) ;
	  uexit ( 1 ) ;
	} 
      } 
      putc ('\n',  stdout );
      fprintf ( stdout , "%ld%s",  (long)curloc - 1 , ": beginning of char " ) ;
      a = curloc - 1 ;
      totalchars = totalchars + 1 ;
      if ( o == 67 ) 
      {
	charactercode = signedquad () ;
	p = signedquad () ;
	c = charactercode % 256 ;
	if ( c < 0 ) 
	c = c + 256 ;
	minmstated = signedquad () ;
	maxmstated = signedquad () ;
	minnstated = signedquad () ;
	maxnstated = signedquad () ;
      } 
      else {
	  
	charactercode = getbyte () ;
	p = -1 ;
	c = charactercode ;
	q = getbyte () ;
	maxmstated = getbyte () ;
	minmstated = maxmstated - q ;
	q = getbyte () ;
	maxnstated = getbyte () ;
	minnstated = maxnstated - q ;
      } 
      fprintf ( stdout , "%ld",  (long)c ) ;
      if ( charactercode != c ) 
      fprintf ( stdout , "%s%ld",  " with extension " , (long)( charactercode - c ) / 256 ) ;
      if ( wantsmnemonics ) 
      fprintf ( stdout , "%s%ld%s%ld%c%ld%s%ld\n",  ": " , (long)minmstated , "<=m<=" , (long)maxmstated , ' ' ,       (long)minnstated , "<=n<=" , (long)maxnstated ) ;
      maxmobserved = -1 ;
      if ( charptr [c ]!= p ) 
      {
	fprintf ( stdout , "%ld%s%s%s%ld%s%ld%c",  (long)a , ": " , "! " ,         "previous character pointer should be " , (long)charptr [c ], ", not " , (long)p         , '!' ) ;
	putc ('\n',  stdout );
      } 
      else if ( p > 0 ) {
	  
	if ( wantsmnemonics ) 
	fprintf ( stdout , "%s%ld%c\n",          "(previous character with the same code started at byte " , (long)p , ')' ) 
	;
      } 
      charptr [c ]= gfprevptr ;
      if ( wantsmnemonics ) 
      fprintf ( stdout , "%s%ld%c",  "(initially n=" , (long)maxnstated , ')' ) ;
      if ( wantspixels ) 
      {
	maxcol = maxmstated - minmstated - 1 ;
	if ( maxcol > maxcols ) 
	maxcol = maxcols ;
	maxrow = maxnstated - minnstated ;
	if ( maxrow > maxrows ) 
	maxrow = maxrows ;
	if ( ( maxrow >= 0 ) && ( maxcol >= 0 ) ) 
	imagearray = xcallocarray ( pixel , maxcol , maxrow ) ;
      } 
      m = 0 ;
      n = 0 ;
      paintswitch = 0 ;
      if ( ! dochar () ) 
      {
	fprintf ( stderr , "%s%s%c\n",  "Bad GF file: " , "char ended unexpectedly" , '!' ) 
	;
	uexit ( 1 ) ;
      } 
      maxnobserved = n ;
      if ( wantspixels ) 
      {
	if ( ( maxmobserved > maxcol ) || ( maxnobserved > maxrow ) ) 
	fprintf ( stdout , "%s\n",          "(The character is too large to be displayed in full.)" ) ;
	if ( maxcol > maxmobserved ) 
	maxcol = maxmobserved ;
	if ( maxrow > maxnobserved ) 
	maxrow = maxnobserved ;
	if ( maxcol >= 0 ) 
	{
	  fprintf ( stdout , "%s%ld%c%ld%s\n",  ".<--This pixel's lower left corner is at (" ,           (long)minmstated , ',' , (long)maxnstated + 1 , ") in METAFONT coordinates" ) ;
	  n = 0 ;
	  while ( n <= maxrow ) {
	      
	    m = 0 ;
	    b = 0 ;
	    while ( m <= maxcol ) {
		
	      if ( imagearray [m + ( maxcol + 1 ) * n ]== 0 ) 
	      b = b + 1 ;
	      else {
		  
		while ( b > 0 ) {
		    
		  putc ( ' ' ,  stdout );
		  b = b - 1 ;
		} 
		putc ( '*' ,  stdout );
	      } 
	      m = m + 1 ;
	    } 
	    putc ('\n',  stdout );
	    n = n + 1 ;
	  } 
	  fprintf ( stdout , "%s%ld%c%ld%s\n",  ".<--This pixel's upper left corner is at (" ,           (long)minmstated , ',' , (long)maxnstated - maxrow , ") in METAFONT coordinates"           ) ;
	} 
	else
	fprintf ( stdout , "%s\n",  "(The character is entirely blank.)" ) ;
	if ( ( maxrow >= 0 ) && ( maxcol >= 0 ) ) 
	{
	  libcfree ( imagearray ) ;
	  imagearray = nil ;
	} 
      } 
      maxmobserved = minmstated + maxmobserved + 1 ;
      n = maxnstated - maxnobserved ;
      if ( minmstated < minmoverall ) 
      minmoverall = minmstated ;
      if ( maxmobserved > maxmoverall ) 
      maxmoverall = maxmobserved ;
      if ( n < minnoverall ) 
      minnoverall = n ;
      if ( maxnstated > maxnoverall ) 
      maxnoverall = maxnstated ;
      if ( maxmobserved > maxmstated ) 
      fprintf ( stdout , "%s%ld%c\n",  "The previous character should have had max m >= " ,       (long)maxmobserved , '!' ) ;
      if ( n < minnstated ) 
      fprintf ( stdout , "%s%ld%c\n",  "The previous character should have had min n <= " ,       (long)n , '!' ) ;
    } 
  } while ( ! ( o == 248 ) ) ;
  putc ('\n',  stdout );
  readpostamble () ;
  fprintf ( stdout , "%s%ld%s",  "The file had " , (long)totalchars , " character" ) ;
  if ( totalchars != 1 ) 
  putc ( 's' ,  stdout );
  fprintf ( stdout , "%s\n",  " altogether." ) ;
}