home *** CD-ROM | disk | FTP | other *** search
- /* Alpha-mode GREX function demonstration *\
- * *
- * Copyright (c) 1989 by MicroWay, Inc. All rights reserved. *
- \* */
-
- #include <stdio.h>
- #include <grex.h>
-
- char * malloc ();
-
- #define up_arrow -72
- #define down_arrow -80
- #define left_arrow -75
- #define right_arrow -77
- #define Home_key -71
- #define End_key -79
- #define PgUp_key -73
- #define PgDn_key -81
- #define Ins_key -82
- #define Del_key -83
-
- main()
- {
- int i,j,k,n;
- int ix,iy,jx,jy;
- int key;
- char * background, * window;
- int mode, max_row, max_column;
-
- /* The data to be scrolled consist, logically enough, of MicroWay *\
- \* product names. */
-
- static char words [20][20] =
- {
- "NDP Fortran-386","NDP C-386","NDP Pascal-386","Monoputer",
- "Quadputer","Videoputer","flickerFixer","SuperCache-286",
- "287 TurboPlus","386/387 Turbo-AT","Number Smasher/ECM",
- "87BASIC/INLINE","mW1167 (Weitek)","DCACHE V2.2","DOPTIMIZER",
- "MATRIXPAK","OBJ-ASM V3.0","NDP/FFT-386","NDP Hoops","MicroWay Prolog"
- };
-
- /* To try out the 43/50 line mode, activate the following lines */
-
- /* printf ("set43line() returns %d\n",set43line()); *\
- \* pause(); */
-
- mode = get_video_mode ( &max_row, &max_column );
- cls();
- home();
- printf("Video mode %d has %d rows, %d columns\n", mode, max_row, max_column);
- pause();
-
- for (j=0; j <= max_row; j++)
- {
- for (i=0; i <= max_column; i++)
- {
- locate (i,j);
- write_char_attr (i,1,i+1);
- }
- }
- pause();
-
- background = malloc (512);
- window = malloc (512);
-
- ix = 9;
- iy = 5;
- jx = 30;
- jy = 11;
-
- n = save_text_window (ix,iy,jx,jy,background);
-
- place_string_at ( ix, iy+0, "┌───── MicroWay ─────┐");
- place_string_at ( ix, iy+1, "│ │");
- place_string_at ( ix, iy+2, "│ │");
- place_string_at ( ix, iy+3, "│ │");
- place_string_at ( ix, iy+4, "│ │");
- place_string_at ( ix, iy+5, "│ │");
- place_string_at ( ix, iy+6, "└────────────────────┘");
-
- place_string_at ( ix+1, iy+1, words[0]);
- place_string_at ( ix+1, iy+2, words[1]);
- place_string_at ( ix+1, iy+3, words[2]);
- place_string_at ( ix+1, iy+4, words[3]);
- place_string_at ( ix+1, iy+5, words[4]);
-
- j = 0;
- k = jy - iy - 2;
-
- while ( ( (key = pause()) != 13)
- && (key != 10)
- && (key != 27) )
- {
- if (key == up_arrow)
- {
- k--;
- j--;
- if (j >= 0 )
- {
- scroll_active_page_down (ix+1, iy+1, jx-1, jy-1, 1, 7);
- place_string_at (ix+1, iy+1, words [j] );
- }
- if (j < 0)
- {
- beep();
- j = 0;
- k++;
- }
- }
- if (key == down_arrow)
- {
- j++;
- k++;
- if (k < 20)
- {
- scroll_active_page_up (ix+1, iy+1, jx-1, jy-1, 1, 7);
- place_string_at (ix+1, jy-1, words [k] );
- }
- if (k > 20)
- {
- beep();
- k = 20;
- j--;
- }
- }
- if (key == left_arrow)
- {
- if (ix > 0)
- {
- save_text_window (ix,iy,jx,jy,window);
- restore_text_window (ix,iy,background);
- ix--;
- jx--;
- save_text_window (ix,iy,jx,jy,background);
- restore_text_window (ix,iy,window);
- }
- else
- {
- beep();
- }
- }
- if (key == right_arrow)
- {
- if (jx < max_column)
- {
- save_text_window (ix,iy,jx,jy,window);
- restore_text_window (ix,iy,background);
- ix++;
- jx++;
- save_text_window (ix,iy,jx,jy,background);
- restore_text_window (ix,iy,window);
- }
- else
- {
- beep();
- }
- }
- if (key == Home_key)
- {
- if (ix > 0 && iy > 0)
- {
- save_text_window (ix,iy,jx,jy,window);
- restore_text_window (ix,iy,background);
- ix--;
- iy--;
- jx--;
- jy--;
- save_text_window (ix,iy,jx,jy,background);
- restore_text_window (ix,iy,window);
- }
- else
- {
- beep();
- }
- }
- if (key == End_key)
- {
- if (ix > 0 && jy < max_row)
- {
- save_text_window (ix,iy,jx,jy,window);
- restore_text_window (ix,iy,background);
- ix--;
- iy++;
- jx--;
- jy++;
- save_text_window (ix,iy,jx,jy,background);
- restore_text_window (ix,iy,window);
- }
- else
- {
- beep();
- }
- }
- if (key == PgUp_key)
- {
- if (jx < max_column && iy > 0)
- {
- save_text_window (ix,iy,jx,jy,window);
- restore_text_window (ix,iy,background);
- ix++;
- iy--;
- jx++;
- jy--;
- save_text_window (ix,iy,jx,jy,background);
- restore_text_window (ix,iy,window);
- }
- else
- {
- beep();
- }
- }
- if (key == PgDn_key)
- {
- if (jx < max_column && jy < max_row)
- {
- save_text_window (ix,iy,jx,jy,window);
- restore_text_window (ix,iy,background);
- ix++;
- iy++;
- jx++;
- jy++;
- save_text_window (ix,iy,jx,jy,background);
- restore_text_window (ix,iy,window);
- }
- else
- {
- beep();
- }
- }
- if (key == Ins_key)
- {
- set25line();
- pause();
- set43line();
- }
- }
-
- restore_text_window (ix,iy,background);
- free (background);
- free (window);
-
- home();
- /* If you activated set43line(), you may reset to 25 lines using
- the following:
- printf ("set25line() returns %d\n",set25line());
- */
-
- pause();
- cls();
- }