davy (12/09/82)
#N:pur-ee:9200005:000:6242 pur-ee!davy Dec 8 10:57:00 1982 /**** DO NOT DELETE BELOW THIS LINE !!! Yes folks, it's the newest thing in Christmas gift giving, "Christmas by mail"! At the end of this letter, you will find your gift in the form of a 'C' program. Simply follow the instructions below, and then sit back and enjoy your gift. ASSEMBLY INSTRUCTIONS (no tools needed): 1) Save this letter in a file called "gift.c". Then, edit the file and delete all lines before the "DO NOT..." line above. If you are on one of the Purdue University VAX computers, do the following: 1) Exit the editor, if you haven't already. 2) Type the following command: cc. -O -s -N -o gift gift.c -lcurses -ltermcap 3) Run your program by typing "gift". If you are not on one of the Purdue University VAX computers, do the following: 1) If your system does not have the "nap()" system call (a 1/60 second sleep()), delete that call from the "output()" routine. 2) If your system does not have the Berkeley "curses" library, you must do the following: [a] delete the lines: #include <curses.h> initscr(); endwin(); [b] write a routine called "move(y, x)" which will position the cursor on your terminal at the given (x, y) coordinates. Note that the 'y' coordinate is the first argu- ment. The top left corner of your screen should be (0,0). If you have an "adm3a", "adm3a+", or "adm5" terminal, there is a routine at the end of this program which will do this for you. [c] write a routine called "clear()" to clear your terminal's screen. If you have one of the terminals mentioned above, there is a routine at the end of this program to do this for you. [d] Un-comment the routines supplied at the end of the program. 4) If your system DOES have the "curses" library, compile your program as follows: cc -O -s -o gift gift.c -lcurses -ltermcap NOTE: You may have to substitute "-ltermlib" for "-ltermcap". If your system DOES NOT have the "curses" library, compile your program as follows: cc -O -s -o gift gift.c 5) Execute your program, and enjoy. Please feel free to give copies of this to all your friends. Merry Christmas, --Dave Curry pur-ee!davy */ #include <curses.h> main() { int x, y; /* * If you don't have the Berkeley "curses" library, delete * this routine call. */ initscr(); clear(); refresh(); sleep(1); output(2, 15, '*'); output(1, 15, '|'); output(1, 16, '/'); output(2, 16, '-'); output(3, 16, '\\'); output(3, 15, '|'); output(3, 14, '/'); output(2, 14, '-'); output(1, 14, '\\'); output(0, 15, '|'); output(2, 17, '-'); output(4, 15, '|'); output(2, 13, '-'); output(5, 15, '|'); move(0,0); refresh(); sleep(2); for (x=40, y=0; y < 16; x--, y++) output(y, x, '*'); for (x=26; x < 39; x++) output(15, x, '*'); for (y=16; y < 19; y++) output(y, 38, '*'); for (x=39; x < 44; x++) output(18, x, '*'); for (y=18; y > 15; y--) output(y, 43, '*'); for (x=43; x < 55; x++) output(15, x, '*'); for (y=15, x=55; y > (-1); y--, x--) output(y, x, '*'); move(0,0); refresh(); sleep(2); output2(11, 48, '+'); output2(9, 36, '+'); output2(14, 37, '+'); output2(2, 41, '+'); output2(13, 51, '+'); output2(11, 30, '+'); output2(8, 39, '+'); output2(7, 36, '+'); output2(10, 31, '+'); output2(11, 43, '+'); output2(14, 34, '+'); output2(4, 41, '+'); output2(3, 39, '+'); output2(14, 30, '+'); output2(9, 47, '+'); output2(13, 29, '+'); output2(13, 29, '+'); output2(6, 40, '+'); output2(12, 43, '+'); output2(6, 35, '+'); output2(14, 28, '+'); output2(11, 39, '+'); output2(12, 32, '+'); output2(5, 37, '+'); output2(14, 40, '+'); output2(11, 49, '+'); output2(10, 36, '+'); output2(13, 46, '+'); output2(13, 32, '+'); output2(8, 33, '+'); output2(14, 43, '+'); output2(8, 45, '+'); output2(14, 47, '+'); output2(12, 51, '+'); output2(7, 42, '+'); output2(10, 43, '+'); output2(11, 34, '+'); output2(8, 38, '+'); output2(14, 53, '+'); output2(8, 45, '+'); output2(12, 35, '+'); output2(9, 41, '+'); output2(6, 44, '+'); output2(10, 38, '+'); output2(12, 38, '+'); output2(13, 35, '+'); output2(5, 43, '+'); output2(10, 48, '+'); output2(12, 47, '+'); move(0,0); refresh(); sleep(2); output(19, 10, 'M'); output(19, 12, 'E'); output(19, 14, 'R'); output(19, 16, 'R'); output(19, 18, 'Y'); output(21, 5, 'C'); output(21, 7, 'H'); output(21, 9, 'R'); output(21, 11, 'I'); output(21, 13, 'S'); output(21, 15, 'T'); output(21, 17, 'M'); output(21, 19, 'A'); output(21, 21, 'S'); output(21, 23, '!'); move(0,0); refresh(); sleep(2); output(19, 62, 'H'); output(19, 64, 'A'); output(19, 66, 'P'); output(19, 68, 'P'); output(19, 70, 'Y'); output(21, 57, 'N'); output(21, 59, 'E'); output(21, 61, 'W'); output(21, 67, 'Y'); output(21, 69, 'E'); output(21, 71, 'A'); output(21, 73, 'R'); output(21, 75, '!'); move(0,0); refresh(); sleep(5); move(23, 0); refresh(); /* * If you don't have the Berkeley "curses" library, delete * this routine call. */ endwin(); } output(y, x, c) int y, x; char c; { mvaddch(y, x, c); refresh(); /* * If your system doesn't have the "nap()" system call, * delete this line. */ nap(15); } output2(y, x, c) int y, x; char c; { mvaddch(y, x, c); refresh(); } /* * Routines to use if you don't have the Berkeley "curses" library. * This version of "move" will work for adm3a, adm3a+, and adm5 terminals, * along with this version of "clear". * * Note: the adm terminals above use the following sequence for cursor * control: * 033=YX * where: * 033 = escape character * Y = number between 0 and 23 added to 040 (space) * X = number between 0 and 79 added to 040 (space) * * And a control-Z (ASCII 032) to clear the screen. * */ /************** DELETE THIS LINE TO USE THESE ROUTINES ********************* #include <stdio.h> move(y, x) int y, x; { printf("\033=%c%c", (y+' '), (x+' ')); } clear() { putchar('\032'); } mvaddch(y, x, c) int y, x; char c; { move(y, x); putchar(c); } refresh() { fflush(stdout); } ************** DELETE THIS LINE TO USE THESE ROUTINES *********************/