OpenCores
URL https://opencores.org/ocsvn/yacc/yacc/trunk

Subversion Repositories yacc

[/] [yacc/] [trunk/] [bench/] [c_src/] [count/] [count_tak.BAK] - Diff between revs 2 and 4

Only display areas with differences | Details | Blame | View Log

Rev 2 Rev 4
//Apr.1.2005 for ram16k
//Apr.1.2005 for ram16k
//count_tak.c
//count_tak.c
#define print_port 0x3ff0
#define print_port 0x3ff0
#define print_char_port 0x3ff1
#define print_char_port 0x3ff1
#define print_int_port 0x3ff2
#define print_int_port 0x3ff2
#define print_long_port 0x3ff4
#define print_long_port 0x3ff4
#define uart_port               0x03ffc //for 16KRAM
#define uart_port               0x03ffc //for 16KRAM
#define uart_wport uart_port
#define uart_wport uart_port
#define uart_rport uart_port
#define uart_rport uart_port
#define int_set_address 0x03ff8 //for 16KRAM
#define int_set_address 0x03ff8 //for 16KRAM
char *name[]={
char *name[]={
   "","one","two","three","four","five","six","seven","eight","nine",
   "","one","two","three","four","five","six","seven","eight","nine",
   "ten","eleven","twelve","thirteen","fourteen","fifteen",
   "ten","eleven","twelve","thirteen","fourteen","fifteen",
      "sixteen","seventeen","eighteen","nineteen",
      "sixteen","seventeen","eighteen","nineteen",
   "","ten","twenty","thirty","forty","fifty","sixty","seventy",
   "","ten","twenty","thirty","forty","fifty","sixty","seventy",
      "eighty","ninety"
      "eighty","ninety"
};
};
void print_uart(unsigned char* ptr)//
void print_uart(unsigned char* ptr)//
{
{
        unsigned int uport;
        unsigned int uport;
        #define WRITE_BUSY 0x0100
        #define WRITE_BUSY 0x0100
        while (*ptr) {
        while (*ptr) {
                do {
                do {
                  uport=*(volatile unsigned*)   uart_port;
                  uport=*(volatile unsigned*)   uart_port;
                } while (uport & WRITE_BUSY);
                } while (uport & WRITE_BUSY);
                *(volatile unsigned char*)uart_wport=*(ptr++);
                *(volatile unsigned char*)uart_wport=*(ptr++);
        }
        }
        //*(volatile unsigned char*)uart_wport=0x00;//Write Done
        //*(volatile unsigned char*)uart_wport=0x00;//Write Done
}
}
void putc_uart(unsigned char c)//
void putc_uart(unsigned char c)//
{
{
        unsigned int uport;
        unsigned int uport;
        do {
        do {
                  uport=*(volatile unsigned*)   uart_port;
                  uport=*(volatile unsigned*)   uart_port;
        } while (uport & WRITE_BUSY);
        } while (uport & WRITE_BUSY);
        *(volatile unsigned char*)uart_wport=c;
        *(volatile unsigned char*)uart_wport=c;
}
}
unsigned char read_uart()//Verilog Test Bench Use
unsigned char read_uart()//Verilog Test Bench Use
{
{
                unsigned uport;
                unsigned uport;
                uport= *(volatile unsigned *)uart_rport;
                uport= *(volatile unsigned *)uart_rport;
                return uport;
                return uport;
}
}
void print(unsigned char* ptr)//Verilog Test Bench Use
void print(unsigned char* ptr)//Verilog Test Bench Use
{
{
        while (*ptr) {
        while (*ptr) {
                *(volatile unsigned char*)print_port=*(ptr++);
                *(volatile unsigned char*)print_port=*(ptr++);
        }
        }
        *(volatile unsigned char*)print_port=0x00;//Write Done
        *(volatile unsigned char*)print_port=0x00;//Write Done
}
}
void print_char(unsigned char val)//Little Endian write out 16bit number
void print_char(unsigned char val)//Little Endian write out 16bit number
{
{
        *(volatile unsigned char*)print_port=(unsigned char)val ;
        *(volatile unsigned char*)print_port=(unsigned char)val ;
}
}
char *itoa(unsigned long num)
char *itoa(unsigned long num)
{
{
   static char buf[12];
   static char buf[12];
   int i;
   int i;
   buf[10]=0;
   buf[10]=0;
   for(i=9;i>=0;--i) {
   for(i=9;i>=0;--i) {
      buf[i]=(char)((num%10)+'0');
      buf[i]=(char)((num%10)+'0');
      num/=10;
      num/=10;
   }
   }
   return buf;
   return buf;
}
}
void number_text(unsigned long number)
void number_text(unsigned long number)
{
{
   int digit;
   int digit;
   print(itoa(number));
   print(itoa(number));
   print(": ");
   print(": ");
   if(number>=1000000000) {
   if(number>=1000000000) {
      digit=number/1000000000;
      digit=number/1000000000;
      print(name[digit]);
      print(name[digit]);
      print(" billion ");
      print(" billion ");
      number%=1000000000;
      number%=1000000000;
   }
   }
   if(number>=100000000) {
   if(number>=100000000) {
      digit=number/100000000;
      digit=number/100000000;
      print(name[digit]);
      print(name[digit]);
      print(" hundred ");
      print(" hundred ");
      number%=100000000;
      number%=100000000;
      if(number<1000000) {
      if(number<1000000) {
         print("million ");
         print("million ");
      }
      }
   }
   }
   if(number>=20000000) {
   if(number>=20000000) {
      digit=number/10000000;
      digit=number/10000000;
      print(name[digit+20]);
      print(name[digit+20]);
      print_char(' ');
      print_char(' ');
      number%=10000000;
      number%=10000000;
      if(number<1000000) {
      if(number<1000000) {
         print("million ");
         print("million ");
      }
      }
   }
   }
   if(number>=1000000) {
   if(number>=1000000) {
      digit=number/1000000;
      digit=number/1000000;
      print(name[digit]);
      print(name[digit]);
      print(" million ");
      print(" million ");
      number%=1000000;
      number%=1000000;
   }
   }
   if(number>=100000) {
   if(number>=100000) {
      digit=number/100000;
      digit=number/100000;
      print(name[digit]);
      print(name[digit]);
      print(" hundred ");
      print(" hundred ");
      number%=100000;
      number%=100000;
      if(number<1000) {
      if(number<1000) {
         print("thousand ");
         print("thousand ");
      }
      }
   }
   }
   if(number>=20000) {
   if(number>=20000) {
      digit=number/10000;
      digit=number/10000;
      print(name[digit+20]);
      print(name[digit+20]);
      print_char(' ');
      print_char(' ');
      number%=10000;
      number%=10000;
      if(number<1000) {
      if(number<1000) {
         print("thousand ");
         print("thousand ");
      }
      }
   }
   }
   if(number>=1000) {
   if(number>=1000) {
      digit=number/1000;
      digit=number/1000;
      print(name[digit]);
      print(name[digit]);
      print(" thousand ");
      print(" thousand ");
      number%=1000;
      number%=1000;
   }
   }
   if(number>=100) {
   if(number>=100) {
      digit=number/100;
      digit=number/100;
      print(name[digit]);
      print(name[digit]);
      print(" hundred ");
      print(" hundred ");
      number%=100;
      number%=100;
   }
   }
   if(number>=20) {
   if(number>=20) {
      digit=number/10;
      digit=number/10;
      print(name[digit+20]);
      print(name[digit+20]);
      print_char(' ');
      print_char(' ');
      number%=10;
      number%=10;
   }
   }
   print(name[number]);
   print(name[number]);
   print_char('\r');
   print_char('\r');
   print_char('\n');
   print_char('\n');
}
}
void main()
void main()
{
{
   unsigned long number,i;
   unsigned long number,i;
#ifdef RTL_SIM
#ifdef RTL_SIM
        print("This program is based on Steve Rhoards-san,author of plasma.\n");
        print("This program is based on Steve Rhoards-san,author of plasma.\n");
#endif
#endif
   print("Mult by 3\r\n");
   print("Mult by 3\r\n");
   for (i=0;i<3;i=i+1)   print_uart("uart port test\n");
   for (i=0;i<3;i=i+1)   print_uart("uart port test\n");
   number=3;
   number=3;
   for(i=0;;++i) {
   for(i=0;;++i) {
      number_text(number);
      number_text(number);
      number*=3;
      number*=3;
      #ifdef RTL_SIM
      #ifdef RTL_SIM
        if (i==15){
        if (i==15){
                        print(" ");//flush
                        print(" ");//flush
                print("$finish");
                print("$finish");
        }
        }
          #endif
          #endif
   }
   }
}
}
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.