|
|
1.1 ! root 1: /* WAKEUP.C -- Popup Alarm ! 2: ! 3: ! 4: WAKEUP ! 5: ------ ! 6: ! 7: This program takes a time parameter. It goes into a ! 8: DOSSLEEP and uses VIOPOPUP to wakeup you up. It will interrupt ! 9: any protected mode or real mode screen group. The VIOPOPUP call ! 10: always causes an automatic save of the existing screen and turns ! 11: over the screen to the program doing VIOPOPUP. After a VIOENDPOPUP, ! 12: the original screen is restored. ! 13: ! 14: Even after it's in the DOSSLEEP, you can abort the program ! 15: with a Ctrl-Break. ! 16: ! 17: You can devote a whole screen group to WAKEUP by executing ! 18: just: ! 19: ! 20: WAKEUP time ! 21: ! 22: or you can run it in the background of a screen group using DETACH: ! 23: ! 24: DETACH WAKEUP time ! 25: ! 26: */ ! 27: ! 28: #include <doscalls.h> /* Part of 286DOS Development Kit */ ! 29: #include <subcalls.h> ! 30: #include <stdio.h> ! 31: ! 32: #define BYTE unsigned char ! 33: #define WORD unsigned int ! 34: #define DWORD unsigned long ! 35: ! 36: main (argc, argv) ! 37: int argc ; ! 38: char *argv [] ; ! 39: { ! 40: struct DateTime datetime ; ! 41: static char delim [] = ":" ; ! 42: int hour, min, col, len, i ; ! 43: long wakeup, current ; ! 44: WORD waitflags ; ! 45: static char msg [] = "\xBA WAKE UP! WAKE UP! WAKE UP! \xBA" ; ! 46: ! 47: if (argc < 2 || 23 < (hour = atoi (strtok (argv [1], delim))) || ! 48: 59 < (min = atoi (strtok (NULL, delim)))) ! 49: { ! 50: puts ("\nSyntax: WAKEUP hour:minute (24-hour format)") ; ! 51: exit (0) ; ! 52: } ! 53: ! 54: DOSGETDATETIME (&datetime) ; ! 55: ! 56: wakeup = (hour * 60 + min) * 60000L ; ! 57: current = ((datetime.hour * 60 + ! 58: datetime.minutes) * 60L + ! 59: datetime.seconds) * 1000L ; ! 60: ! 61: if (wakeup < current) ! 62: wakeup += 24 * 3600000L ; ! 63: ! 64: wakeup -= current ; ! 65: ! 66: puts ("\n\n\n\n\n\t\tWAKEUP scheduled ... \n\n\n\n") ; ! 67: ! 68: DOSSLEEP (wakeup) ; ! 69: ! 70: waitflags = 1 ; ! 71: ! 72: VIOPOPUP (&waitflags, 0) ; ! 73: ! 74: col = (80 - sizeof (msg)) / 2 ; ! 75: len = sizeof (msg) - 3 ; ! 76: ! 77: VIOSETCURPOS (10, col, 0) ; ! 78: border (len, 201, 187) ; ! 79: ! 80: VIOSETCURPOS (11, col, 0) ; ! 81: VIOWRTTTY (msg, sizeof (msg), 0) ; ! 82: ! 83: VIOSETCURPOS (12, col, 0) ; ! 84: border (len, 200, 188) ; ! 85: ! 86: while (kbhit ()) ! 87: getch () ; ! 88: ! 89: while (!kbhit ()) ! 90: { ! 91: for (i = 1 ; i < 10 ; i++) ! 92: { ! 93: DOSBEEP (500, 50) ; ! 94: DOSBEEP (1000, 50) ; ! 95: } ! 96: for (i = 1 ; i < 10 ; i++) ! 97: { ! 98: DOSBEEP (1000, 50) ; ! 99: DOSBEEP (2000, 50) ; ! 100: } ! 101: } ! 102: } ! 103: ! 104: border (len, left, right) ! 105: int len ; ! 106: char left, right ; ! 107: { ! 108: char line = 205 ; ! 109: int i ; ! 110: ! 111: VIOWRTTTY (&left, 1, 0) ; ! 112: ! 113: for (i = 0 ; i < len ; i++) ! 114: VIOWRTTTY (&line, 1, 0) ; ! 115: ! 116: VIOWRTTTY (&right, 1, 0) ; ! 117: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.