small update and hand in
authorMart Lubbers <mart@martlubbers.net>
Mon, 12 Oct 2015 14:41:45 +0000 (16:41 +0200)
committerMart Lubbers <mart@martlubbers.net>
Mon, 12 Oct 2015 14:41:45 +0000 (16:41 +0200)
mart/ex11/ex11.c

index fade86c..3b95b92 100644 (file)
@@ -44,7 +44,6 @@ void taskd(void *arg)
        RTIME step = time/(2*MAXX+2);
        unsigned int i;
 
-       //To the right
        outb(0x00, 0x378);
        rt_task_sleep(step*2);
        for(i=0; i<MAXX; i++){
@@ -55,7 +54,7 @@ void taskd(void *arg)
        rt_task_sleep(step);
        outb(0x00, 0x378);
 
-  pointer = pointer > msglen ? 0 : pointer+1;
+       pointer = pointer > msglen ? 0 : pointer+1;
 }
 
 void taski(void *arg)
@@ -63,7 +62,6 @@ void taski(void *arg)
        //Register as interrupt handler
        RT_INTR intr;
        rt_intr_create(&intr, NULL, LPT1IRQ, 0);
-       //rt_printf("Interrupt created\n");
 
        //Initialize and declare the timer variables
        RTIME tick = rt_timer_read();
@@ -80,7 +78,6 @@ void taski(void *arg)
                        rt_task_create(&drawtask, NULL, 0, 50, 0);
                        period = ticks[TICKS]+tocks[TICKS];
                        rt_task_start(&drawtask, &taskd, &period);
-                       //rt_printf("tocks is the short stretch\n");
                }
                rt_intr_wait(&intr, TM_INFINITE);
 
@@ -94,148 +91,149 @@ void taski(void *arg)
                        rt_task_create(&drawtask, NULL, 0, 50, 0);
                        period = ticks[TICKS]+tocks[TICKS];
                        rt_task_start(&drawtask, &taskd, &period);
-                       //rt_printf("ticks is the short stretch\n");
                }
                rt_intr_wait(&intr, TM_INFINITE);
-               //Print average
-               //rt_printf("avgtick: %lluns, avgtock: %lluns, avgticktock: %lluns\n",
-               //              ticks[TICKS], tocks[TICKS], (ticks[TICKS]+tocks[TICKS])/2);
        }
 }
 
 void make_message(char *msg)
 {
-  unsigned int i=20;
-  unsigned char s = 0; 
-  while(i<BANNERWIDTH && s < strlen(msg)){
-    char c = msg[s];
-    switch(c){
-      case 'A':
-      case 'a':
-        data[i++] = 0x1e; data[i++] = 0x5; data[i++] = 0x1e; break;
-      case 'B':
-      case 'b':
-        data[i++] = 0x1f; data[i++] = 0x15; data[i++] = 0xe; break;
-      case 'C':
-      case 'c':
-        data[i++] = 0xe; data[i++] = 0x11; break;
-      case 'D':
-      case 'd':
-        data[i++] = 0x1f; data[i++] = 0x11; data[i++] = 0xe; break;
-      case 'E':
-      case 'e':
-        data[i++] = 0x1f; data[i++] = 0x15; break;
-      case 'F':
-      case 'f':
-        data[i++] = 0x1f; data[i++] = 0x05; break;
-      case 'G':
-      case 'g':
-        data[i++] = 0xe; data[i++] = 0x11, data[i++] = 0x1d; break;
-      case 'H':
-      case 'h':
-        data[i++] = 0x1f; data[i++] = 0x4, data[i++] = 0x1f; break;
-      case 'I':
-      case 'i':
-        data[i++] = 0x1f; break;
-      case 'J':
-      case 'j':
-        data[i++] = 0x10; data[i++] = 0x1f; break;
-      case 'K':
-      case 'k':
-        data[i++] = 0x1f; data[i++] = 0x04; data[i++] = 0x1b; break;
-      case 'L':
-      case 'l':
-        data[i++] = 0x1f; data[i++] = 0x10; break;
-      case 'M':
-      case 'm':
-        data[i++] = 0x1f; data[i++] = 0x2; data[i++] = 0x7; data[i++] = 0x2; data[i++] = 0x1f; break;
-      case 'N':
-      case 'n':
-        data[i++] = 0x1f; data[i++] = 0x2; data[i++] = 0x4; data[i++] = 0x1f; break;
-      case 'O':
-      case 'o':
-        data[i++] = 0xe; data[i++] = 0x11; data[i++] = 0xe; break;
-      case 'P':
-      case 'p':
-        data[i++] = 0x1f; data[i++] = 0x5; data[i++] = 0x2; break;
-      case 'Q':
-      case 'q':
-        data[i++] = 0xe; data[i++] = 0x11; data[i++] = 0x19; data[i++] = 0x1e; break;
-      case 'R':
-      case 'r':
-        data[i++] = 0x1f; data[i++] = 0x5; data[i++] = 0x1a; break;
-      case 'S':
-      case 's':
-        data[i++] = 0x12; data[i++] = 0x15; data[i++] = 0xd; break;
-      case 'T':
-      case 't':
-        data[i++] = 0x1; data[i++] = 0x1f; data[i++] = 0x1; break;
-      case 'U':
-      case 'u':
-        data[i++] = 0x1f; data[i++] = 0x10; data[i++] = 0x1f; break;
-      case 'V':
-      case 'v':
-        data[i++] = 0xf; data[i++] = 0x10; data[i++] = 0xf; break;
-      case 'W':
-      case 'w':
-        data[i++] = 0xf; data[i++] = 0x10; data[i++] = 0xc; data[i++] = 0x10; data[i++] = 0xf; break;
-      case 'X':
-      case 'x':
-        data[i++] = 0x11; data[i++] = 0xe; data[i++] = 0x11; break;
-      case 'Y':
-      case 'y':
-        data[i++] = 0x17; data[i++] = 0x14; data[i++] = 0xf; break;
-      case 'Z':
-      case 'z':
-        data[i++] = 0x19; data[i++] = 0x15; data[i++] = 0x13; break;
-      case '0':
-        data[i++] = 0xe; data[i++] = 0x11; data[i++] = 0xe; break;
-      case '1':
-        data[i++] = 0x12; data[i++] = 0x1f; data[i++] = 0x10; break;
-      case '2':
-        data[i++] = 0x12; data[i++] = 0x19; data[i++] = 0x16; break;
-      case '3':
-        data[i++] = 0x15; data[i++] = 0xa; break;
-      case '4':
-        data[i++] = 0x7; data[i++] = 0x4; data[i++] = 0x1f; break;
-      case '5':
-        data[i++] = 0x17; data[i++] = 0x15; data[i++] = 0x9; break;
-      case '6':
-        data[i++] = 0xe; data[i++] = 0x15; data[i++] = 0x9; break;
-      case '7':
-        data[i++] = 0x1; data[i++] = 0x1f; break;
-      case '8':
-        data[i++] = 0x1f; data[i++] = 0x15; data[i++] = 0x1f; break;
-      case '9':
-        data[i++] = 0x12; data[i++] = 0x15; data[i++] = 0x1e; break;
-      case '.':
-        data[i++] = 0x10; break;
-      case ',':
-        data[i++] = 0x10; data[i++] = 0x8; break;
-      case '\'':
-      case '"':
-        data[i++] = 0x1; break;
-      case ':':
-        data[i++] = 0xa; break;
-      case '(':
-        data[i++] = 0xe; data[i++] = 0x11; break;
-      case ')':
-        data[i++] = 0x11; data[i++] = 0xe; break;
-      case '-':
-        data[i++] = 0x4; data[i++] = 0x4; break;
-      case ' ':
-        i++;
-        break;
-      case '!':
-        data[i++] = 0x17; break;
-      default:
-        break;
-    }
-    i++;
-    s++;
-  }
-  msglen = i;
-  pointer = 0;
+       unsigned int i;
+       for(i=0; i<BANNERWIDTH; i++){
+               data[i] = 0;
+       }
+       i = 20;
+       unsigned char s = 0; 
+       while(i<BANNERWIDTH && s < strlen(msg)){
+               char c = msg[s];
+               // Yes, we hardcoded all letters, digits and some symbols...
+               switch(c){
+                       case 'A':
+                       case 'a':
+                               data[i++] = 0x1e; data[i++] = 0x5; data[i++] = 0x1e; break;
+                       case 'B':
+                       case 'b':
+                               data[i++] = 0x1f; data[i++] = 0x15; data[i++] = 0xe; break;
+                       case 'C':
+                       case 'c':
+                               data[i++] = 0xe; data[i++] = 0x11; break;
+                       case 'D':
+                       case 'd':
+                               data[i++] = 0x1f; data[i++] = 0x11; data[i++] = 0xe; break;
+                       case 'E':
+                       case 'e':
+                               data[i++] = 0x1f; data[i++] = 0x15; break;
+                       case 'F':
+                       case 'f':
+                               data[i++] = 0x1f; data[i++] = 0x05; break;
+                       case 'G':
+                       case 'g':
+                               data[i++] = 0xe; data[i++] = 0x11, data[i++] = 0x1d; break;
+                       case 'H':
+                       case 'h':
+                               data[i++] = 0x1f; data[i++] = 0x4, data[i++] = 0x1f; break;
+                       case 'I':
+                       case 'i':
+                               data[i++] = 0x1f; break;
+                       case 'J':
+                       case 'j':
+                               data[i++] = 0x10; data[i++] = 0x1f; break;
+                       case 'K':
+                       case 'k':
+                               data[i++] = 0x1f; data[i++] = 0x04; data[i++] = 0x1b; break;
+                       case 'L':
+                       case 'l':
+                               data[i++] = 0x1f; data[i++] = 0x10; break;
+                       case 'M':
+                       case 'm':
+                               data[i++] = 0x1f; data[i++] = 0x2; data[i++] = 0x7; data[i++] = 0x2; data[i++] = 0x1f; break;
+                       case 'N':
+                       case 'n':
+                               data[i++] = 0x1f; data[i++] = 0x2; data[i++] = 0x4; data[i++] = 0x1f; break;
+                       case 'O':
+                       case 'o':
+                               data[i++] = 0xe; data[i++] = 0x11; data[i++] = 0xe; break;
+                       case 'P':
+                       case 'p':
+                               data[i++] = 0x1f; data[i++] = 0x5; data[i++] = 0x2; break;
+                       case 'Q':
+                       case 'q':
+                               data[i++] = 0xe; data[i++] = 0x11; data[i++] = 0x19; data[i++] = 0x1e; break;
+                       case 'R':
+                       case 'r':
+                               data[i++] = 0x1f; data[i++] = 0x5; data[i++] = 0x1a; break;
+                       case 'S':
+                       case 's':
+                               data[i++] = 0x12; data[i++] = 0x15; data[i++] = 0xd; break;
+                       case 'T':
+                       case 't':
+                               data[i++] = 0x1; data[i++] = 0x1f; data[i++] = 0x1; break;
+                       case 'U':
+                       case 'u':
+                               data[i++] = 0x1f; data[i++] = 0x10; data[i++] = 0x1f; break;
+                       case 'V':
+                       case 'v':
+                               data[i++] = 0xf; data[i++] = 0x10; data[i++] = 0xf; break;
+                       case 'W':
+                       case 'w':
+                               data[i++] = 0xf; data[i++] = 0x10; data[i++] = 0xc; data[i++] = 0x10; data[i++] = 0xf; break;
+                       case 'X':
+                       case 'x':
+                               data[i++] = 0x11; data[i++] = 0xe; data[i++] = 0x11; break;
+                       case 'Y':
+                       case 'y':
+                               data[i++] = 0x17; data[i++] = 0x14; data[i++] = 0xf; break;
+                       case 'Z':
+                       case 'z':
+                               data[i++] = 0x19; data[i++] = 0x15; data[i++] = 0x13; break;
+                       case '0':
+                               data[i++] = 0xe; data[i++] = 0x11; data[i++] = 0xe; break;
+                       case '1':
+                               data[i++] = 0x12; data[i++] = 0x1f; data[i++] = 0x10; break;
+                       case '2':
+                               data[i++] = 0x12; data[i++] = 0x19; data[i++] = 0x16; break;
+                       case '3':
+                               data[i++] = 0x15; data[i++] = 0xa; break;
+                       case '4':
+                               data[i++] = 0x7; data[i++] = 0x4; data[i++] = 0x1f; break;
+                       case '5':
+                               data[i++] = 0x17; data[i++] = 0x15; data[i++] = 0x9; break;
+                       case '6':
+                               data[i++] = 0xe; data[i++] = 0x15; data[i++] = 0x9; break;
+                       case '7':
+                               data[i++] = 0x1; data[i++] = 0x1f; break;
+                       case '8':
+                               data[i++] = 0x1f; data[i++] = 0x15; data[i++] = 0x1f; break;
+                       case '9':
+                               data[i++] = 0x12; data[i++] = 0x15; data[i++] = 0x1e; break;
+                       case '.':
+                               data[i++] = 0x10; break;
+                       case ',':
+                               data[i++] = 0x10; data[i++] = 0x8; break;
+                       case '\'':
+                       case '"':
+                               data[i++] = 0x1; break;
+                       case ':':
+                               data[i++] = 0xa; break;
+                       case '(':
+                               data[i++] = 0xe; data[i++] = 0x11; break;
+                       case ')':
+                               data[i++] = 0x11; data[i++] = 0xe; break;
+                       case '-':
+                               data[i++] = 0x4; data[i++] = 0x4; break;
+                       case ' ':
+                               i++;
+                               break;
+                       case '!':
+                               data[i++] = 0x17; break;
+                       default:
+                               break;
+               }
+               i++;
+               s++;
+       }
+       msglen = i;
+       pointer = 0;
 }
 
 int main(int argc, char* argv[])
@@ -243,28 +241,27 @@ int main(int argc, char* argv[])
        rt_print_auto_init(1);
        mlockall(MCL_CURRENT | MCL_FUTURE);
 
-  unsigned int i;
-  for(i=0; i<BANNERWIDTH; i++){
-    data[i] = 0;
-  }
-  
-       // Get permission to write to parallel port
+       unsigned int i;
+       for(i=0; i<BANNERWIDTH; i++){
+               data[i] = 0;
+       }
+
        ioperm(0x37A, 1, 1);
        ioperm(0x378, 1, 1);
        outb(inb(0x37A) | 0x10, 0x37A);
 
-  make_message("abcdefghijklmnopqrstuvwxyz1234567890,.\"()");
+       make_message("abcdefghijklmnopqrstuvwxyz1234567890,.\"()");
 
        rt_task_create(&intrtask, NULL, 0, 50, 0);
        rt_task_start(&intrtask, &taski, 0);
 
-  printf("CRTL+C to exit\n");
-  printf("legal characters: abcdefghijklmnopqrstuvwxyz1234567890,.\"()\n");
-  while(1){
-    printf("Type your message(max %d chars): ", MSGMAX);
-    scanf("%[^\n]", inputmsg);
-    getchar();
-    make_message(inputmsg);
-    sleep(0.1);
-  }
+       printf("CRTL+C to exit\n");
+       printf("legal chars: abcdefghijklmnopqrstuvwxyz1234567890,.\"()\n");
+       while(1){
+               printf("Type your message(max %d chars): ", MSGMAX);
+               scanf("%[^\n]", inputmsg);
+               getchar();
+               make_message(inputmsg);
+               sleep(0.1);
+       }
 }