aboutsummaryrefslogtreecommitdiff
path: root/tinycc/tests/tests2/32_led.c
diff options
context:
space:
mode:
authorUneven Prankster <unevenprankster@protonmail.com>2023-07-17 01:34:34 -0300
committerUneven Prankster <unevenprankster@protonmail.com>2023-07-17 01:34:34 -0300
commit88d82c6eaee88398af1de57cddca692a1f74b087 (patch)
treedf492c2002a1820959703f4f481172cceafeb0a1 /tinycc/tests/tests2/32_led.c
parent111c133b939c15c57c90cd474d55e84928c6307a (diff)
Cleanup feels good! Big work coming up this week.
Diffstat (limited to 'tinycc/tests/tests2/32_led.c')
-rw-r--r--tinycc/tests/tests2/32_led.c266
1 files changed, 0 insertions, 266 deletions
diff --git a/tinycc/tests/tests2/32_led.c b/tinycc/tests/tests2/32_led.c
deleted file mode 100644
index 5596cbf..0000000
--- a/tinycc/tests/tests2/32_led.c
+++ /dev/null
@@ -1,266 +0,0 @@
-/* example from http://barnyard.syr.edu/quickies/led.c */
-
-/* led.c: print out number as if on 7 line led display. I.e., write integer
- given on command line like this:
- _ _ _
- | _| _| |_| |_
- | |_ _| | _| etc.
-
- We assume the terminal behaves like a classical teletype. So the top
- lines of all digits have to be printed first, then the middle lines of
- all digits, etc.
-
- By Terry R. McConnell
-
-compile: cc -o led led.c
-
-If you just want to link in the subroutine print_led that does all the
-work, compile with -DNO_MAIN, and declare the following in any source file
-that uses the call:
-
-extern void print_led(unsigned long x, char *buf);
-
-Bug: you cannot call repeatedly to print more than one number to a line.
-That would require curses or some other terminal API that allows moving the
-cursor to a previous line.
-
-*/
-
-
-
-#include <stdlib.h>
-#include <stdio.h>
-
-#define MAX_DIGITS 32
-#define NO_MAIN
-
-
-/* Print the top line of the digit d into buffer.
- Does not null terminate buffer. */
-
-void topline(int d, char *p){
-
- *p++ = ' ';
- switch(d){
-
- /* all these have _ on top line */
-
- case 0:
- case 2:
- case 3:
- case 5:
- case 7:
- case 8:
- case 9:
- *p++ = '_';
- break;
- default:
- *p++=' ';
-
- }
- *p++=' ';
-}
-
-/* Print the middle line of the digit d into the buffer.
- Does not null terminate. */
-
-void midline(int d, char *p){
-
- switch(d){
-
- /* those that have leading | on middle line */
-
- case 0:
- case 4:
- case 5:
- case 6:
- case 8:
- case 9:
- *p++='|';
- break;
- default:
- *p++=' ';
- }
- switch(d){
-
- /* those that have _ on middle line */
-
- case 2:
- case 3:
- case 4:
- case 5:
- case 6:
- case 8:
- case 9:
- *p++='_';
- break;
- default:
- *p++=' ';
-
- }
- switch(d){
-
- /* those that have closing | on middle line */
-
- case 0:
- case 1:
- case 2:
- case 3:
- case 4:
- case 7:
- case 8:
- case 9:
- *p++='|';
- break;
- default:
- *p++=' ';
-
- }
-}
-
-/* Print the bottom line of the digit d. Does not null terminate. */
-
-void botline(int d, char *p){
-
-
- switch(d){
-
- /* those that have leading | on bottom line */
-
- case 0:
- case 2:
- case 6:
- case 8:
- *p++='|';
- break;
- default:
- *p++=' ';
- }
- switch(d){
-
- /* those that have _ on bottom line */
-
- case 0:
- case 2:
- case 3:
- case 5:
- case 6:
- case 8:
- *p++='_';
- break;
- default:
- *p++=' ';
-
- }
- switch(d){
-
- /* those that have closing | on bottom line */
-
- case 0:
- case 1:
- case 3:
- case 4:
- case 5:
- case 6:
- case 7:
- case 8:
- case 9:
- *p++='|';
- break;
- default:
- *p++=' ';
-
- }
-}
-
-/* Write the led representation of integer to string buffer. */
-
-void print_led(unsigned long x, char *buf)
-{
-
- int i=0,n;
- static int d[MAX_DIGITS];
-
-
- /* extract digits from x */
-
- n = ( x == 0L ? 1 : 0 ); /* 0 is a digit, hence a special case */
-
- while(x){
- d[n++] = (int)(x%10L);
- if(n >= MAX_DIGITS)break;
- x = x/10L;
- }
-
- /* print top lines of all digits */
-
- for(i=n-1;i>=0;i--){
- topline(d[i],buf);
- buf += 3;
- *buf++=' ';
- }
- *buf++='\n'; /* move teletype to next line */
-
- /* print middle lines of all digits */
-
- for(i=n-1;i>=0;i--){
- midline(d[i],buf);
- buf += 3;
- *buf++=' ';
- }
- *buf++='\n';
-
- /* print bottom lines of all digits */
-
- for(i=n-1;i>=0;i--){
- botline(d[i],buf);
- buf += 3;
- *buf++=' ';
- }
- *buf++='\n';
- *buf='\0';
-}
-
-int main()
-{
- char buf[5*MAX_DIGITS];
- print_led(1234567, buf);
- printf("%s\n",buf);
-
- return 0;
-}
-
-#ifndef NO_MAIN
-int main(int argc, char **argv)
-{
-
- int i=0,n;
- long x;
- static int d[MAX_DIGITS];
- char buf[5*MAX_DIGITS];
-
- if(argc != 2){
- fprintf(stderr,"led: usage: led integer\n");
- return 1;
- }
-
- /* fetch argument from command line */
-
- x = atol(argv[1]);
-
- /* sanity check */
-
- if(x<0){
- fprintf(stderr,"led: %d must be non-negative\n",x);
- return 1;
- }
-
- print_led(x,buf);
- printf("%s\n",buf);
-
- return 0;
-
-}
-#endif
-
-/* vim: set expandtab ts=4 sw=3 sts=3 tw=80 :*/