home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / PWC-WINDOW.SDA / WINDOW.DOC < prev    next >
Encoding:
Text File  |  2019-04-13  |  5.6 KB  |  240 lines

  1. ╒SE THESE FUNCTIONS LIKE ANY OTHERLIBRARY FUNCTIONS. 
  2. ╘O INCLUDE THEM WITH YOUR OBJECT MODULE, LINKTHE LIBRARY WINDOW.L
  3. BEFORE YOU LINK THE STANDARD LIBRARIES. ╔F YOUR APPLIACATION IS TO RUN
  4. WITHOUT THE SHELL, LINK WITH WINDOW2.L INSTEAD. 
  5.  
  6. ╘HESE ROUTINES MAKE IT VERY EASY TO INCLUDE POP UP WINDOWS IN YOUR
  7. ╨OWER ├ APPLICATIONS. ╘HE POWER IS NOT WITHOUT A PRICE, THOUGH...
  8. USING THESE ROUTINES WILL ADD ABOUT 3K ON TO THE SIZE OF YOUR APPLICATION.
  9. ╘HERE MUST ALSO BE ENOUGH FREE MEMORY ABOVE THE RUNTIME STACK TO STORE
  10. THE SCREEN DATA YOUR WINDOWS COVER UP.
  11.  
  12. ╘HE ROUTINES ARE FOR THE ├128 VERSION OF ╨OWER ├, 80 ├╧╠╒═╬ ═╧─┼ ╧╬╠┘!
  13.  
  14. ┼╪┴═╨╠┼
  15.  
  16.  
  17. $ LINK
  18.  
  19. > DEMO.O
  20. > WINDOW.L
  21. > ^
  22. >
  23.  
  24. OUTPUT FILE NAME:DEMO
  25.  
  26. ---------------------------------------------------------------
  27.  
  28. ╞UNCTION DESCRIPTIONS
  29.  
  30. ╬╧╘┼ *  ╔ APOLOGIZE FOR THESE DESCRIPTIONS RIVALING THE FUNCTION
  31.         DESCRIPTIONS IN THE ╨OWER ├ DOCUMENTATION FOR BEING
  32.         CONFUSING. ╔F ONLY ╔ WAS A BETTER WRITER. ╧H ╫ELL.
  33.  
  34.  
  35.  
  36. ╬┴═┼
  37.  
  38.     PLOT
  39.  
  40. ╙┘╬╧╨╙╔╙
  41.  
  42.     PLOT(Y,X)
  43.     INT Y,X;
  44.  
  45. ─┼╙├╥╔╨╘╔╧╬
  46.  
  47.     ╨LOT MOVES THE CURSOR TO THE RELATIVE COORDINATES SPECIFIED BY
  48.     THE INTEGER ARGUMENTS Y AND X. ╬OTE THAT THESE ARGUMENTS ARE IN
  49.     SCREEN ╥╧╫ AND SCREEN ├╧╠╒═╬ ORDER, ONLY BECAUSE THAT IS THE WAY
  50.     THE AUTHOR LIKES TO DEAL WITH SCREEN COORDINATES. ╥OW 0, ├OLUMN 0
  51.     IS THE UPPER LEFT BOX IN THE WINDOW.
  52.  
  53. ┼╪┴═╨╠┼
  54.  
  55.     /* PLOT EXAMPLE  */
  56.  
  57.     PLOT(4,10);
  58.     PRINTF("╘HIS TEXT WILL BE 5 ROWS DOWN AND 11 COLUMNS OVER");
  59.  
  60.  
  61. ╬┴═┼
  62.  
  63.     GETCH
  64.  
  65. ╙┘╬╧╨╙╔╙
  66.  
  67.     CHAR GETCH()
  68.  
  69. ─┼╙├╥╔╨╘╔╧╬
  70.       
  71.     ╟ETCH RETURNS A KEYSTROKE FROM THE KEYBOARD WITHOUT ECHOING
  72.     THE CHARACTER OR TURNING ON THE CURSOR. ╔F NO KEYSTROKE IS
  73.     READY, ZERO IS RETURNED.
  74.  
  75. ┼╪┴═╨╠┼
  76.  
  77.     CHAR C, GETCH(); 
  78.     WHILE ((C=GETCH()==0);   /*WAIT FOR KEYSTROKE */
  79.     PUTCHAR(C);              /*ECHO KEYSTROKE     */
  80.  
  81.  
  82. ╬┴═┼
  83.  
  84.     VDCPOKE, VDCPEEK
  85.  
  86. ╙┘╬╧╨╙╔╙
  87.  
  88.     VDCPOKE(A,C)
  89.     INT A;
  90.     CHAR C;
  91.  
  92.     CHAR VDCPEEK(A)
  93.     INT A;
  94.  
  95. ─┼╙├╥╔╨╘╔╧╬
  96.  
  97.     ╓DCPOKE PLACES INFORMATION DIRECTLY INTO THE 8563 ╓─├ MEMORY.
  98.     
  99.     ╓DCPEEK READS INFORMATION FROM THE 8563 ╓─├ MEMORY.
  100.  
  101. ┼╪┴═╨╠┼
  102.     /* PUT AN "@" CHARACTER IN THE UPPER LEFT HAND CORNER OF SCREEN */
  103.     INT A;
  104.     CHAR C;
  105.      
  106.     C=0;
  107.     A=0;
  108.     VDCPOKE(A,C);
  109.  
  110.     /* READ THE VALUE OF THE BOTTOM LEFT HAND CHARACTER          */
  111.     CHAR C,VDCPEEK();
  112.     INT A;
  113.     A=2000;
  114.     C=VDCPEEK(A);
  115.  
  116. ╬┴═┼
  117.  
  118.     FRAMESET
  119.  
  120. ╙┘╬╧╨╙╔╙
  121.      
  122.     FRAMESET()
  123.  
  124. ─┼╙├╥╔╨╘╔╧╬
  125.  
  126.     ╞RAMESET REDFINES THE CMDR-C CHARACTER TO BE A HORIZONTAL BAR,
  127.     AND REDEFINES THE CMDR-B CHARACTER TO BE A VERTICAL BAR. ╘HESE
  128.     THE CHARACTERS ARE ONLY REDFINED IN 80 COLUMN MEMORY. ╔T HAS
  129.     NO EFFECT ON THE 40 COLUMN SCREEN. ╔F YOU ARE GOING TO LINK
  130.     YOUR PROGRAM TO RUN ╫╔╘╚╧╒╘ THE ╨OWER ├ SHELL, LINK WITH
  131.     THE LIBRARY WINDOW2.L INSTEAD OF WINDOW.L.
  132.  
  133.  
  134. ╬┴═┼
  135.  
  136.     BORDER
  137.  
  138. ╙┘╬╧╨╙╔╙
  139.  
  140.      BORDER(Y1,X1,Y2,X2)
  141.      INT Y1,X1,Y2,X2;
  142.  
  143. ─┼╙├╥╔╨╘╔╧╬
  144.  
  145.      ┬ORDER USES THE CHARACTERS REDEFINED BY FRAMESET TO DRAW A BOX
  146.      WITH UPPER LEFT CORNER Y1, X1  AND BOTTOM RIGHT CORNER Y2,X2;
  147.      ╒NLIKE PLOT, THE COORDINATE PAIRS ARE ┴┬╙╧╠╒╘┼ COORDINATES.
  148.      ╘HE WINDOW SETTING(IF ANY) REMAINS UNCHANGED. ├HARACTERS INSIDE
  149.      THE BOX ARE UNCHANGED.
  150.  
  151. ┼╪┴═╨╠┼
  152.  
  153.     /* DRAW AN OUTLINE AROUND THE ENTIRE SCREEN */
  154.  
  155.       BORDER(0,0,24,79);
  156.  
  157.  
  158. ╬┴═┼
  159.  
  160.     OPENWINDOW, CLOSEWINDOW, REOPEN
  161.  
  162. ╙┘╬╧╨╙╔╙
  163.      
  164.     CHAR *OPENWINDOW(Y1,X1,Y2,X2)
  165.     INT Y1,X1,Y2,X2;
  166.  
  167.     CLOSEWINDOW(PTR)
  168.     CHAR *PTR;
  169.  
  170.     REOPEN(PTR)
  171.     CHAR *PTR;
  172.  
  173. ─┼╙├╥╔╨╘╔╧╬
  174.  
  175.     ╧PENWINDOW, LIKE BORDER, DRAWS A BOX ON THE SCREEN, DEFINED BY
  176.     THE CORDINATES PASSED TO IT. ╔T SAVES THE CONDITION OF THE
  177.     SCREEN ╒╬─┼╥ THE AREA THE WINDOW WILL BE DRAWN ON. ┴FTER THE
  178.     BORDER IS DRAWN, IT SIZES THE SCREEN TO ABSOLUTE COORDINATES:
  179.     Y1+1,X1+1  Y2-1,X2-1. ┴ POINTER TO THE SCREEN SAVE DATA IS
  180.     RETURNED TO THE CALLING PROGRAM. ╔F THERE IS NOT ENOUGH FREE 
  181.     MEMORY REMAINING,  ╬╒╠╠ IS RETURNED.
  182.  
  183.     ├LOSEWINDOW RESTORES THE SCREEN TO THE CONDITION IT WAS IN
  184.     BEFORE THE WINDOW DATA POINTED TO BY PTR WAS DRAWN. ╬╧╘┼:
  185.     ╘╚┼ ╙├╥┼┼╬ ╔╘╙┼╠╞ ╔╙ ╬╧╘ ╥┼╙╔┌┼─, YOU MUST TAKE CARE OF
  186.     DOING THAT YOURSELF. ├LOSEWINDOW FREES UP THE SPACE THAT WAS
  187.     ALLOCATED BY OPENWINDOW.
  188.  
  189.     ╥EOPEN RESIZES THE SCREEN TO THE SIZE OF THE WINDOW POINTED
  190.     TO BY PTR. 
  191.  
  192. ┼╪┴═╨╠┼
  193.  
  194. #INCLUDE <STDIO.H>
  195.  
  196. /* OPEN AND CLOSE SOME WINDOWS */
  197.  
  198. CHAR *OPENWINDOW(), *WINDOW1, *WINDOW2;
  199.  
  200. WINDOW1=OPENWINDOW(5,10,10,70);   /*OPEN UP A SHORT WIDE WINDOW  */
  201. IF(WINDOW1=╬╒╠╠)
  202.     RETURN(-1);                   /* OH OH, OUT OF MEMORY        */
  203. PRINTF("╘HIS IS SOME JUNK IN MY FIRST WINDOW");
  204.  
  205. WINDOW2=OPENWINDOW(2,4,22,20);    /* OPEN UP A LONG NARROW WINDOW*/
  206. IF(WINDOW2=╬╒╠╠)
  207.     RETURN(-1);                   /* OH OH, OUT OF MEMORY        */
  208.  
  209. PRINTF("╙TUFF IN MY NARROW WINDOW");
  210.  
  211. CLOSEWINDOW(WINDOW2);             /*  CLOSE WINDOW 2             */
  212. REOPEN(WINDOW1);                  /*  REOPEN WINDOW 1            */
  213.  
  214. .....                             /*  DO SOME OTHER STUFF        */
  215.                                                                
  216. CLOSEWINDOW(WINDOW1);             /*  CLOSE WINDOW 1             */
  217.  
  218.  
  219.  
  220. --------------------------------------------------------------------
  221.  
  222. ╔F YOU HAVE ANY QUESTIONS ABOUT USING THESE ROUTINES, CONTACT
  223. USERNAME ┬├ ╨UCKETT ON ╤UANTUMLINK.
  224.  
  225. ╘HE OBJECT MODULES: VDCPOKE.OBJ, GETCH.OBJ, PLOT.OBJ, SETCHAR.O SETCHARN.O
  226.                     OPENWINDOW.O, BORDER.O AND SAVE.OBJ
  227.  
  228. ARE ├OPYRIGHT 1988 BY ╦EN ╫ALTHEW. 
  229. ┴LL RIGHTS RESERVED. 
  230.  
  231. ┘OU MAY INCLUDE THEM IN YOUR COMPILED PROGRAMS WITHOUT RESTRICTION.
  232.  
  233. ┘OU MAY FREELY DISTRIBUTE THE ORIGINAL WINDOW.SDA FILE.
  234.  
  235. ┘OU ═┴┘ ╬╧╘ DISTRIBUTE THE INDIVIDUAL MODULES IN ANY FORM.
  236.  
  237. ╔ HOPE YOU FIND THESE ROUTINES USEFUL.
  238.  
  239. ╦EN ╫ALTHEW, ─ECEMBER 3, 1988.
  240.