home *** CD-ROM | disk | FTP | other *** search
/ Computer Club Elmshorn Atari PD / CCE_PD.iso / pc / 0600 / CCE_0648.ZIP / CCE_0648.PD / ZEST / NEXT_AP8.GFA (.txt) < prev    next >
GFA-BASIC Atari  |  1989-08-07  |  51KB  |  2,399 lines

  1. GOSUB init
  2. > PROCEDURE init
  3.   rez#=XBIOS(4)
  4.   IF rez#<>2 THEN
  5.     ALERT 3,"| Monochrome only! ",1,"OK",ok%
  6.   ENDIF
  7.   OPTION BASE 1
  8.   slider1_x%=302
  9.   bsize%=1
  10.   cnt%=1
  11.   cfill%=14
  12.   '  year%=1991
  13.   '  month%=1
  14.   max%=500
  15.   DIM nms$(max%,12)
  16.   DIM temp$(max%,12)
  17.   DIM temp1$(12)
  18.   DIM v%(100)
  19.   r%=XBIOS(33,&X100)
  20.   '  VOID BIOS(11,BIOS(11,-1) AND &HEF)
  21.   month%=VAL(MID$(DATE$,4,2))
  22.   year%=VAL(MID$(DATE$,7,4))
  23.   IF year%<1991 OR year%>1999 OR month%<1 OR month%>12 THEN
  24.     year%=1991
  25.     month%=1
  26.   ENDIF
  27.   IF EXIST("database.dat")=-1 THEN
  28.     OPEN "I",#1,"database.dat"
  29.     q%=1
  30.     r%=1
  31.     WHILE EOF(#1)=0
  32.       WHILE EOF(#1)=0 AND q%<13
  33.         INPUT #1,nms$(r%,q%)
  34.         INC q%
  35.       WEND
  36.       q%=1
  37.       INC r%
  38.     WEND
  39.     CLOSE #1
  40.   ENDIF
  41.   GOSUB next_logo
  42.   GOSUB size
  43.   GOSUB circ
  44.   GOSUB tri
  45.   GOSUB rect
  46.   colour%=1
  47.   SETCOLOR 0,7,7,7
  48.   CLS
  49.   DEFTEXT 1,0,0,13
  50.   DEFMOUSE 0
  51.   BOUNDARY 0
  52.   DEFFILL 1,2,4
  53.   PBOX 0,0,639,399
  54.   GOSUB draw_icons
  55. RETURN
  56. > PROCEDURE draw_icons
  57.   GOSUB cal_logo
  58.   GOSUB next_button(559,21,613,71)
  59.   PUT 568,29,cal$
  60.   GOSUB dbase_logo
  61.   GOSUB next_button(559,73,613,123)
  62.   PUT 566,81,dbase$
  63.   GOSUB type_logo
  64.   GOSUB next_button(559,125,613,175)
  65.   PUT 562,133,type$
  66.   GOSUB pencil_logo
  67.   GOSUB next_button(559,177,613,227)
  68.   PUT 566,182,pencil$
  69.   GOSUB x_logo
  70.   GOSUB next_button(559,330,613,380)
  71.   PUT 562,332,x$
  72.   GOSUB credit_box
  73.   GOSUB monitor_icons
  74. RETURN
  75. > PROCEDURE monitor_icons
  76.   DO
  77.     calendar_open%=0
  78.     dbase_open%=0
  79.     SELECT MOUSEK
  80.     CASE 1
  81.       mxx%=MOUSEX
  82.       myy%=MOUSEY
  83.       SELECT mxx%
  84.       CASE 560 TO 612
  85.         SELECT myy%
  86.         CASE 21 TO 69
  87.           ' calendar
  88.           SGET putback$
  89.           GOSUB next_button_press(559,21,613,71)
  90.           GOSUB draw_calendar
  91.           SPUT putback$
  92.           return#=GRAF_SHRINKBOX(560,21,50,50,50,58,334,262)
  93.         CASE 74 TO 122
  94.           ' database
  95.           SGET putback$
  96.           GOSUB next_button_press(559,73,613,123)
  97.           GOSUB draw_database
  98.           SPUT putback$
  99.           return#=GRAF_SHRINKBOX(560,73,50,50,40,50,460,340)
  100.         CASE 126 TO 174
  101.           ' typewriter
  102.           SGET putback$
  103.           GOSUB next_button_press(559,125,613,175)
  104.           GOSUB draw_type
  105.           SPUT putback$
  106.           return#=GRAF_SHRINKBOX(560,125,50,50,10,260,620,100)
  107.         CASE 178 TO 226
  108.           ' paint
  109.           SGET putback$
  110.           GOSUB next_button_press(559,177,613,227)
  111.           GOSUB draw_paint
  112.           SPUT putback$
  113.           return#=GRAF_SHRINKBOX(560,177,50,50,10,10,528,380)
  114.         CASE 331 TO 379
  115.           GOSUB next_button_press(559,330,613,380)
  116.           GOSUB confirm_exit
  117.         ENDSELECT
  118.       ENDSELECT
  119.     CASE 2
  120.       GOSUB credit_box
  121.     ENDSELECT
  122.   LOOP
  123. RETURN
  124. > PROCEDURE next_button(upper_x%,upper_y%,lower_x%,lower_y%)
  125.   DEFLINE 1,1
  126.   DEFFILL 0,2,8
  127.   PBOX upper_x%,upper_y%,lower_x%,lower_y%
  128.   DEFFILL 1,2,4
  129.   PBOX upper_x%+1,upper_y%+1,lower_x%,lower_y%
  130.   LINE upper_x%+1,lower_y%,lower_x%,lower_y%
  131.   LINE upper_x%,lower_y%+1,lower_x%,lower_y%+1
  132.   LINE lower_x%,upper_y%+1,lower_x%,lower_y%
  133.   LINE lower_x%+1,upper_y%,lower_x%+1,lower_y%+1
  134. RETURN
  135. > PROCEDURE next_button_press(upper_x%,upper_y%,lower_x%,lower_y%)
  136.   DEFLINE 1,1
  137.   GET upper_x%-1,upper_y%-1,lower_x%+1,lower_y%+1,button$
  138.   GET upper_x%+1,upper_y%+1,lower_x%-2,lower_y%-2,shift_button$
  139.   PUT upper_x%+2,upper_y%+2,shift_button$
  140.   LINE upper_x%,upper_y%,lower_x%,upper_y%
  141.   LINE upper_x%,upper_y%,upper_x%,lower_y%
  142.   COLOR 0
  143.   LINE upper_x%+1,lower_y%,lower_x%,lower_y%
  144.   LINE upper_x%,lower_y%+1,lower_x%,lower_y%+1
  145.   LINE lower_x%,upper_y%+1,lower_x%,lower_y%
  146.   LINE lower_x%+1,upper_y%,lower_x%+1,lower_y%+1
  147.   COLOR 1
  148.   DO
  149.   LOOP UNTIL MOUSEK=0
  150.   PAUSE 3
  151.   PUT upper_x%-1,upper_y%-1,button$
  152. RETURN
  153. > PROCEDURE next_info_box(upper_x%,upper_y%,lower_x%,lower_y%)
  154.   DEFLINE 1,1
  155.   DEFFILL 1,2,4
  156.   PBOX upper_x%,upper_y%,lower_x%,lower_y%
  157.   LINE upper_x%,upper_y%,lower_x%,upper_y%
  158.   LINE upper_x%,upper_y%+1,lower_x%,upper_y%+1
  159.   LINE upper_x%,upper_y%,upper_x%,lower_y%
  160.   LINE upper_x%+1,upper_y%,upper_x%+1,lower_y%
  161.   COLOR 0
  162.   LINE upper_x%+1,lower_y%,lower_x%,lower_y%
  163.   LINE upper_x%,lower_y%+1,lower_x%,lower_y%+1
  164.   LINE lower_x%,upper_y%+1,lower_x%,lower_y%
  165.   LINE lower_x%+1,upper_y%,lower_x%+1,lower_y%+1
  166.   COLOR 1
  167. RETURN
  168. > PROCEDURE next_text_box(upper_x%,upper_y%,lower_x%,lower_y%)
  169.   DEFLINE 1,1
  170.   DEFFILL 1,2,4
  171.   PBOX upper_x%,upper_y%,lower_x%,lower_y%
  172.   LINE upper_x%,upper_y%,lower_x%,upper_y%
  173.   LINE upper_x%,upper_y%+1,lower_x%,upper_y%+1
  174.   LINE upper_x%,upper_y%,upper_x%,lower_y%
  175.   LINE upper_x%+1,upper_y%,upper_x%+1,lower_y%
  176.   COLOR 0
  177.   LINE upper_x%+1,lower_y%,lower_x%,lower_y%
  178.   LINE upper_x%,lower_y%+1,lower_x%,lower_y%+1
  179.   LINE lower_x%,upper_y%+1,lower_x%,lower_y%
  180.   LINE lower_x%+1,upper_y%,lower_x%+1,lower_y%+1
  181.   COLOR 1
  182.   DEFFILL 0,2,8
  183.   PBOX upper_x%+2,upper_y%+2,lower_x%-2,lower_y%-2
  184. RETURN
  185. > PROCEDURE next_horiz_line(upper_x%,upper_y%,lower_x%,lower_y%)
  186.   DEFLINE 1,1
  187.   LINE upper_x%,upper_y%,lower_x%,lower_y%
  188.   COLOR 0
  189.   LINE upper_x%,upper_y%+1,lower_x%,lower_y%+1
  190.   COLOR 1
  191. RETURN
  192. > PROCEDURE next_vert_line(upper_x%,upper_y%,lower_x%,lower_y%)
  193.   DEFLINE 1,1
  194.   LINE upper_x%,upper_y%,lower_x%,lower_y%
  195.   COLOR 0
  196.   LINE upper_x%+1,upper_y%,lower_x%+1,lower_y%
  197.   COLOR 1
  198. RETURN
  199. > PROCEDURE next_line_box(upper_x%,upper_y%,lower_x%,lower_y%)
  200.   DEFLINE 1,1
  201.   COLOR 0
  202.   BOX upper_x%,upper_y%,lower_x%,lower_y%
  203.   COLOR 1
  204.   LINE upper_x%-1,upper_y%,upper_x%-1,lower_y%
  205.   LINE upper_x%+2,lower_y%-1,lower_x%-2,lower_y%-1
  206.   LINE lower_x%-1,upper_y%+2,lower_x%-1,lower_y%-2
  207.   LINE upper_x%-1,upper_y%-1,lower_x%,upper_y%-1
  208. RETURN
  209. > PROCEDURE next_window(upper_x%,upper_y%,lower_x%,lower_y%)
  210.   ' title bar
  211.   GOSUB next_button(upper_x%,upper_y%,lower_x%,upper_y%+20)
  212.   ' window area
  213.   GOSUB next_button(upper_x%,upper_y%+22,lower_x%,lower_y%)
  214.   ' close button
  215.   GOSUB next_button(upper_x%+5,upper_y%+4,upper_x%+18,upper_y%+16)
  216. RETURN
  217. > PROCEDURE draw_paint
  218.   return#=GRAF_GROWBOX(560,177,50,50,10,10,528,380)
  219.   cmode%=0
  220.   DEFFILL 1,2,4
  221.   paint_open%=1
  222.   GOSUB next_window(10,10,538,390)
  223.   GOSUB next_text_box(128,38,528,380)
  224.   GET 200,100,220,120,eraser$
  225.   GOSUB next_button(17,38,67,82)
  226.   DEFTEXT 1,0,0,13
  227.   GRAPHMODE 2
  228.   TEXT 26,66,"Save"
  229.   GOSUB next_button(69,38,119,82)
  230.   TEXT 78,66,"Load"
  231.   GRAPHMODE 0
  232.   GOSUB next_button(17,84,67,128)
  233.   PUT 25,89,circ$
  234.   FILL 39,105
  235.   GOSUB next_button(69,84,119,128)
  236.   PUT 77,89,rect$
  237.   FILL 89,107
  238.   GOSUB next_button(17,130,67,174)
  239.   PUT 25,135,tri$
  240.   FILL 36,160
  241.   GOSUB next_button(69,130,119,174)
  242.   DEFLINE 1,1
  243.   LINE 93,140,93,164
  244.   LINE 94,140,94,164
  245.   GOSUB next_button(17,176,67,220)
  246.   PUT 27,182,size$
  247.   GOSUB next_button(69,176,119,220)
  248.   GRAPHMODE 2
  249.   TEXT 78,203,"Text"
  250.   GRAPHMODE 0
  251.   GOSUB next_button(17,222,67,266)
  252.   GRAPHMODE 2
  253.   TEXT 23,249,"Block"
  254.   GRAPHMODE 0
  255.   GOSUB next_button(69,222,119,266)
  256.   GRAPHMODE 2
  257.   TEXT 79,249,"Fill"
  258.   GRAPHMODE 0
  259.   GOSUB next_button(17,268,67,312)
  260.   GRAPHMODE 2
  261.   TEXT 23,295,"Erase"
  262.   GRAPHMODE 0
  263.   GOSUB next_button(69,268,119,312)
  264.   GOSUB next_text_box(77,275,110,304)
  265.   DEFFILL 1,2,cfill%
  266.   PBOX 79,277,109,303
  267.   GOSUB next_button(17,314,67,358)
  268.   GOSUB next_text_box(25,322,58,349)
  269.   GET 27,324,56,340,bb$
  270.   DEFTEXT 1,0,0,4
  271.   TEXT 30,346,"SIZE"
  272.   DEFTEXT 1,0,0,13
  273.   DEFFILL 1,2,8
  274.   PBOX 40,331,42,334
  275.   '  PBOX 37,328,46,337
  276.   DEFFILL 1,2,4
  277.   GOSUB next_button(69,314,119,358)
  278.   GOSUB next_text_box(77,322,110,349)
  279.   DEFTEXT 1,0,0,4
  280.   TEXT 83,346,"MODE"
  281.   DEFTEXT 1,0,0,13
  282.   TEXT 90,338,"0"
  283.   GET 130,40,525,378,pback$
  284.   PUT 130,40,picture$
  285.   GOSUB paint_test
  286. RETURN
  287. > PROCEDURE erase_paint
  288.   DEFLINE 2,1
  289.   GET 130,40,525,378,picture$
  290.   GRAPHMODE 0
  291.   CLIP 130,40 TO 525,378
  292.   DO
  293.   LOOP UNTIL MOUSEK=0
  294.   HIDEM
  295.   DO
  296.     IF MOUSEX<127 THEN
  297.       SHOWM
  298.       IF MOUSEK=1 AND MOUSEX>17 AND MOUSEX<67 AND MOUSEY>268 AND MOUSEY<312 THEN
  299.         CLIP OFF
  300.         DEFLINE 1,1
  301.         GOSUB next_button_press(17,268,67,312)
  302.         DEFLINE 2,1
  303.         lef%=419
  304.         cd$="Erase screen?"
  305.         GOSUB confirm_delete
  306.         CLIP 130,40 TO 525,378
  307.         IF go_ahead%=0 THEN
  308.           PUT 130,40,pback$
  309.           GET 130,40,525,378,picture$
  310.           EXIT IF 1=1
  311.         ENDIF
  312.       ENDIF
  313.     ELSE
  314.       HIDEM
  315.       vx%=MOUSEX-10
  316.       vy%=MOUSEY-10
  317.       IF vx%<130 THEN
  318.         vx%=130
  319.       ENDIF
  320.       IF vy%<40 THEN
  321.         vy%=40
  322.       ENDIF
  323.       IF vx%>505 THEN
  324.         vx%=505
  325.       ENDIF
  326.       IF vy%>358 THEN
  327.         vy%=358
  328.       ENDIF
  329.       IF vx%<>hm% OR vy%<>hy% OR MOUSEK=1 THEN
  330.         hm%=vx%
  331.         hy%=vy%
  332.         PUT 130,40,picture$
  333.         IF MOUSEK=1 THEN
  334.           PUT hm%,hy%,eraser$
  335.           GET 130,40,525,378,picture$
  336.         ENDIF
  337.         BOX hm%,hy%,hm%+20,hy%+20
  338.       ENDIF
  339.     ENDIF
  340.   LOOP UNTIL MOUSEK=2
  341.   PUT 130,40,picture$
  342.   SHOWM
  343.   CLIP OFF
  344.   DEFLINE 1,1
  345. RETURN
  346. > PROCEDURE degas_save
  347.   FILESELECT DIR$(0)+"\*.*","",f1$
  348.   IF TRIM$(f1$)<>"" THEN
  349.     SGET putback2$
  350.     GET 130,40,525,378,picture$
  351.     CLS
  352.     PUT 130,40,picture$
  353.     SGET putback3$
  354.     SPUT putback2$
  355.     OPEN "O",#1,f1$
  356.     PRINT #1,CHR$(0);
  357.     PRINT #1;CHR$(rez#);
  358.     FOR x#=0 TO 15
  359.       c_num1#=XBIOS(7,x#,-1)
  360.       cnum#=c_num1# AND &H777
  361.       ch#=INT(cnum#/256)
  362.       c_l#=cnum#-(ch#*256)
  363.       PRINT #1;CHR$(ch#);CHR$(c_l#);
  364.     NEXT x#
  365.     PRINT #1,putback3$
  366.     FOR x#=0 TO 31
  367.       PRINT #1,CHR$(0);
  368.     NEXT x#
  369.     CLOSE #1
  370.   ENDIF
  371. RETURN
  372. > PROCEDURE degas_load
  373.   FILESELECT DIR$(0)+"\*.*","",f1$
  374.   IF TRIM$(f1$)<>"" THEN
  375.     SGET putback2$
  376.     CLS
  377.     BLOAD f1$,XBIOS(2)-34
  378.     SGET putback3$
  379.     DEFLINE 2,1
  380.     DO
  381.       vx1%=MOUSEX-197
  382.       vy1%=MOUSEY-169
  383.       IF vx1%<0 THEN
  384.         vx1%=0
  385.       ENDIF
  386.       IF vy1%<0 THEN
  387.         vy1%=0
  388.       ENDIF
  389.       IF vx1%>243 THEN
  390.         vx1%=243
  391.       ENDIF
  392.       IF vy1%>61 THEN
  393.         vy1%=61
  394.       ENDIF
  395.       IF vx1%<>mx% OR vy1%<>my% THEN
  396.         mx%=vx1%
  397.         my%=vy1%
  398.         SPUT putback3$
  399.         BOX mx%,my%,mx%+395,my%+338
  400.       ENDIF
  401.     LOOP UNTIL MOUSEK=1
  402.     DEFLINE 1,1
  403.     SPUT putback3$
  404.     GET mx%,my%,mx%+395,my%+338,picture$
  405.     SPUT putback2$
  406.     PUT 130,40,picture$
  407.   ENDIF
  408. RETURN
  409. PROCEDURE paint_test
  410.   colour%=1
  411.   DO
  412.     KEYTEST key#
  413.     IF key#=6.35699E+06 THEN
  414.       PUT 130,40,safety$
  415.       GET 130,40,525,378,picture$
  416.     ENDIF
  417.     SELECT MOUSEK
  418.     CASE 1
  419.       GET 130,40,525,378,safety$
  420.       mxx%=MOUSEX
  421.       myy%=MOUSEY
  422.       IF mxx%>129 AND mxx%<526 AND myy%>39 AND myy%<378 THEN
  423.         GOSUB paint_draw
  424.       ENDIF
  425.       IF mxx%>559 AND mxx%<613 AND myy%>20 AND myy%<226 THEN
  426.         GOSUB icon_test
  427.         mxx%=0
  428.         myy%=0
  429.       ENDIF
  430.       IF mxx%>15 AND mxx%<28 AND myy%>14 AND myy%<26 THEN
  431.         GOSUB next_button_press(15,14,28,26)
  432.         paint_open%=0
  433.         COLOR 1
  434.         GRAPHMODE 0
  435.         EXIT IF 1=1
  436.       ENDIF
  437.       SELECT mxx%
  438.       CASE 18 TO 66
  439.         SELECT myy%
  440.         CASE 39 TO 81
  441.           GOSUB next_button_press(17,38,67,82)
  442.           ' save pic
  443.           '            BSAVE f1$,XBIOS(2),32000
  444.           GOSUB degas_save
  445.         CASE 85 TO 127
  446.           ' circle
  447.           GOSUB next_button_press(17,84,67,128)
  448.           GOSUB draw_circle
  449.         CASE 131 TO 173
  450.           ' k lines
  451.           GOSUB next_button_press(17,130,67,174)
  452.           GOSUB k_line
  453.         CASE 177 TO 219
  454.           ' colour change
  455.           GOSUB next_button_press(17,176,67,220)
  456.           IF colour%=1 THEN
  457.             COLOR 0
  458.             colour%=0
  459.           ELSE
  460.             COLOR 1
  461.             colour%=1
  462.           ENDIF
  463.         CASE 223 TO 265
  464.           ' block
  465.           GOSUB next_button_press(17,222,67,266)
  466.           GOSUB block_copy
  467.         CASE 269 TO 311
  468.           ' erase
  469.           GOSUB next_button_press(17,268,67,312)
  470.           GOSUB erase_paint
  471.         CASE 315 TO 357
  472.           ' brush size
  473.           GOSUB next_button_press(17,314,67,358)
  474.           GOSUB brush_size
  475.         ENDSELECT
  476.       CASE 70 TO 118
  477.         SELECT myy%
  478.         CASE 39 TO 81
  479.           GOSUB next_button_press(69,38,119,82)
  480.           ' load pic
  481.           GET 60,260,125,366,pbk$
  482.           GOSUB degas_load
  483.           GET 130,40,525,378,picture$
  484.           PUT 60,260,pbk$
  485.         CASE 85 TO 127
  486.           ' box
  487.           GOSUB next_button_press(69,84,119,128)
  488.           GOSUB draw_box
  489.         CASE 131 TO 173
  490.           ' line
  491.           GOSUB next_button_press(69,130,119,174)
  492.           GOSUB draw_line
  493.         CASE 177 TO 219
  494.           ' text
  495.           GOSUB next_button_press(69,176,119,220)
  496.           GOSUB paint_text
  497.         CASE 223 TO 265
  498.           ' fill
  499.           GOSUB next_button_press(69,222,119,266)
  500.           GOSUB fill_paint
  501.         CASE 269 TO 311
  502.           ' choose fill
  503.           GOSUB next_button_press(69,268,119,312)
  504.           GOSUB choose_fill
  505.         CASE 315 TO 357
  506.           ' mode
  507.           GOSUB next_button_press(69,314,119,358)
  508.           GOSUB choose_mode
  509.         ENDSELECT
  510.       ENDSELECT
  511.     ENDSELECT
  512.   LOOP
  513. RETURN
  514. > PROCEDURE brush_size
  515.   IF bsize%=1 THEN
  516.     DEFFILL 1,2,8
  517.     PBOX 37,328,46,337
  518.     DEFFILL 1,2,4
  519.     bsize%=3
  520.   ELSE
  521.     bsize%=1
  522.     DEFFILL 1,2,8
  523.     PUT 27,324,bb$
  524.     PBOX 40,331,42,334
  525.     DEFFILL 1,2,4
  526.   ENDIF
  527. RETURN
  528. > PROCEDURE choose_mode
  529.   INC cmode%
  530.   IF cmode%>4 THEN
  531.     cmode%=0
  532.   ENDIF
  533.   TEXT 90,338," "
  534.   TEXT 90,338,cmode%
  535.   DEFTEXT 1,0,0,13
  536. RETURN
  537. > PROCEDURE paint_text
  538.   GRAPHMODE cmode%
  539.   st$=""
  540.   CLIP 130,40 TO 525,378
  541.   HIDEM
  542.   GET 130,40,525,378,picture$
  543.   ' mxx%=MOUSEX
  544.   ' myy%=MOUSEY
  545.   keyprs%=0
  546.   DO
  547.     KEYTEST i|
  548.     '    PRINT i|
  549.     SELECT i|
  550.     CASE 8
  551.       ' backspace
  552.       IF LEN(st$)>0 THEN
  553.         st$=MID$(st$,1,LEN(st$)-1)
  554.         keyprs%=1
  555.       ENDIF
  556.     CASE 13
  557.       ' return
  558.     CASE 27
  559.       ' esc
  560.       st$=""
  561.       keyprs%=1
  562.     CASE 32 TO 126
  563.       IF LEN(st$)<72 THEN
  564.         st$=st$+CHR$(i|)
  565.         keyprs%=1
  566.       ENDIF
  567.     ENDSELECT
  568.     IF MOUSEX<>hm% OR MOUSEY<>hy% OR keyprs%=1 THEN
  569.       keyprs%=0
  570.       hm%=MOUSEX
  571.       hy%=MOUSEY
  572.       PUT 130,40,picture$
  573.       TEXT hm%,hy%,"|"+st$
  574.     ENDIF
  575.   LOOP UNTIL MOUSEK
  576.   IF MOUSEK=1 THEN
  577.     TEXT hm%,hy%," "+st$
  578.   ELSE
  579.     PUT 130,40,picture$
  580.   ENDIF
  581.   GET 130,40,525,378,picture$
  582.   DEFMOUSE 0
  583.   SHOWM
  584.   CLIP OFF
  585.   DO
  586.   LOOP UNTIL MOUSEK=0
  587.   GRAPHMODE 0
  588. RETURN
  589. > PROCEDURE choose_fill
  590.   INC cfill%
  591.   IF cfill%>24 THEN
  592.     cfill%=1
  593.   ENDIF
  594.   DEFFILL 1,2,cfill%
  595.   '  PBOX 69,268,119,312
  596.   PBOX 79,277,109,303
  597.   '  BOX 79,277,109,303
  598. RETURN
  599. > PROCEDURE fill_paint
  600.   CLIP 130,40 TO 525,378
  601.   DEFMOUSE 5
  602.   DO
  603.   LOOP UNTIL MOUSEK=0
  604.   DO
  605.   LOOP UNTIL MOUSEK
  606.   DEFFILL 1,2,cfill%
  607.   IF MOUSEK=1 THEN
  608.     FILL MOUSEX,MOUSEY
  609.     GET 130,40,525,378,picture$
  610.   ENDIF
  611.   DEFMOUSE 0
  612.   CLIP OFF
  613. RETURN
  614. > PROCEDURE draw_line
  615.   DEFLINE 1,bsize%
  616.   CLIP 130,40 TO 525,378
  617.   DEFMOUSE 5
  618.   GET 130,40,525,378,picture$
  619.   DO
  620.   LOOP UNTIL MOUSEK=0
  621.   DO
  622.   LOOP UNTIL MOUSEK=1
  623.   DO
  624.   LOOP UNTIL MOUSEK=0
  625.   mxx%=MOUSEX
  626.   myy%=MOUSEY
  627.   DO
  628.     IF MOUSEX<>hm% OR MOUSEY<>hy% THEN
  629.       hm%=MOUSEX
  630.       hy%=MOUSEY
  631.       PUT 130,40,picture$
  632.       LINE mxx%,myy%,hm%,hy%
  633.     ENDIF
  634.   LOOP UNTIL MOUSEK
  635.   IF MOUSEK=1 THEN
  636.     LINE mxx%,myy%,hm%,hy%
  637.   ELSE
  638.     PUT 130,40,picture$
  639.   ENDIF
  640.   GET 130,40,525,378,picture$
  641.   DEFMOUSE 0
  642.   CLIP OFF
  643.   DEFLINE 1,1
  644. RETURN
  645. > PROCEDURE block_copy
  646.   CLIP 130,40 TO 525,378
  647.   DEFMOUSE 5
  648.   GET 130,40,525,378,picture$
  649.   DO
  650.   LOOP UNTIL MOUSEK=0
  651.   DO
  652.   LOOP UNTIL MOUSEK
  653.   IF MOUSEK=1 THEN
  654.     mxx%=MOUSEX
  655.     myy%=MOUSEY
  656.     DEFLINE 2,1
  657.     DO
  658.       IF MOUSEX<>hm% OR MOUSEY<>hy% THEN
  659.         hm%=MOUSEX
  660.         hy%=MOUSEY
  661.         PUT 130,40,picture$
  662.         BOX mxx%,myy%,hm%,hy%
  663.       ENDIF
  664.     LOOP UNTIL MOUSEK=0
  665.     PUT 130,40,picture$
  666.     GET mxx%,myy%,hm%,hy%,block$
  667.     w%=mxx%-hm%
  668.     h%=myy%-hy%
  669.     wide%=INT(mxx%-hm%)/2
  670.     high%=INT(myy%-hy%)/2
  671.   ENDIF
  672.   DO
  673.   LOOP UNTIL MOUSEK=0
  674.   DEFMOUSE 4
  675.   DO
  676.     SHOWM
  677.     IF MOUSEX+wide%<>hm% OR MOUSEY+high%<>hy% THEN
  678.       hm%=MOUSEX+wide%
  679.       hy%=MOUSEY+high%
  680.       IF hm%>130 AND hm%-w%<525 AND hy%>40 AND hy%-h%<378 THEN
  681.         PUT 130,40,picture$
  682.         SELECT cmode%
  683.         CASE 0 TO 1
  684.           PUT hm%,hy%,block$
  685.         CASE 2
  686.           PUT hm%,hy%,block$,7
  687.         CASE 3
  688.           PUT hm%,hy%,block$,6
  689.         CASE 4
  690.           PUT hm%,hy%,block$,13
  691.         ENDSELECT
  692.       ENDIF
  693.     ENDIF
  694.     IF MOUSEK=1 THEN
  695.       GET 130,40,525,378,picture$
  696.     ENDIF
  697.   LOOP UNTIL MOUSEK=2
  698.   PUT 130,40,picture$
  699.   GET 130,40,525,378,picture$
  700.   DEFLINE 1,1
  701.   DEFMOUSE 0
  702.   CLIP OFF
  703.   GRAPHMODE 0
  704. RETURN
  705. > PROCEDURE k_line
  706.   DEFLINE 1,bsize%
  707.   CLIP 130,40 TO 525,378
  708.   DEFMOUSE 5
  709.   GET 130,40,525,378,picture$
  710.   DO
  711.   LOOP UNTIL MOUSEK=0
  712.   DO
  713.   LOOP UNTIL MOUSEK=1
  714.   DO
  715.   LOOP UNTIL MOUSEK=0
  716.   DO
  717.     mxx%=MOUSEX
  718.     myy%=MOUSEY
  719.     DO
  720.       IF MOUSEX<>hm% OR MOUSEY<>hy% THEN
  721.         hm%=MOUSEX
  722.         hy%=MOUSEY
  723.         PUT 130,40,picture$
  724.         LINE mxx%,myy%,hm%,hy%
  725.       ENDIF
  726.     LOOP UNTIL MOUSEK
  727.     IF MOUSEK=1 THEN
  728.       LINE mxx%,myy%,hm%,hy%
  729.       GET 130,40,525,378,picture$
  730.     ELSE
  731.       PUT 130,40,picture$
  732.     ENDIF
  733.   LOOP UNTIL MOUSEK=2
  734.   GET 130,40,525,378,picture$
  735.   DEFMOUSE 0
  736.   CLIP OFF
  737.   DEFLINE 1,1
  738. RETURN
  739. > PROCEDURE draw_box
  740.   DEFLINE 1,bsize%
  741.   CLIP 130,40 TO 525,378
  742.   DEFMOUSE 5
  743.   GET 130,40,525,378,picture$
  744.   DO
  745.   LOOP UNTIL MOUSEK=0
  746.   DO
  747.   LOOP UNTIL MOUSEK=1
  748.   DO
  749.   LOOP UNTIL MOUSEK=0
  750.   mxx%=MOUSEX
  751.   myy%=MOUSEY
  752.   DO
  753.     IF MOUSEX<>hm% OR MOUSEY<>hy% THEN
  754.       hm%=MOUSEX
  755.       hy%=MOUSEY
  756.       PUT 130,40,picture$
  757.       BOX mxx%,myy%,hm%,hy%
  758.     ENDIF
  759.   LOOP UNTIL MOUSEK
  760.   IF MOUSEK=1 THEN
  761.     BOX mxx%,myy%,hm%,hy%
  762.   ELSE
  763.     PUT 130,40,picture$
  764.   ENDIF
  765.   GET 130,40,525,378,picture$
  766.   DEFMOUSE 0
  767.   CLIP OFF
  768.   DEFLINE 1,1
  769. RETURN
  770. > PROCEDURE draw_circle
  771.   DEFLINE 1,bsize%
  772.   CLIP 130,40 TO 525,378
  773.   DEFMOUSE 5
  774.   GET 130,40,525,378,picture$
  775.   DO
  776.   LOOP UNTIL MOUSEK=0
  777.   DO
  778.   LOOP UNTIL MOUSEK=1
  779.   DO
  780.   LOOP UNTIL MOUSEK=0
  781.   mxx%=MOUSEX
  782.   myy%=MOUSEY
  783.   DO
  784.     IF MOUSEX-mxx%<>hm% OR MOUSEY-myy%<>hy% THEN
  785.       hm%=MOUSEX-mxx%
  786.       hy%=MOUSEY-myy%
  787.       PUT 130,40,picture$
  788.       ELLIPSE mxx%,myy%,hm%,hy%
  789.     ENDIF
  790.   LOOP UNTIL MOUSEK
  791.   IF MOUSEK=1 THEN
  792.     ELLIPSE mxx%,myy%,hm%,hy%
  793.   ELSE
  794.     PUT 130,40,picture$
  795.   ENDIF
  796.   GET 130,40,525,378,picture$
  797.   DEFMOUSE 0
  798.   CLIP OFF
  799.   DEFLINE 1,1
  800. RETURN
  801. PROCEDURE paint_draw
  802.   CLIP 130,40 TO 525,378
  803.   IF bsize%=1 THEN
  804.     DO
  805.       PLOT mxx%,myy%
  806.       mxx%=MOUSEX
  807.       myy%=MOUSEY
  808.     LOOP UNTIL MOUSEK=0
  809.   ELSE
  810.     DO
  811.       PLOT mxx%,myy%
  812.       PLOT mxx%+1,myy%
  813.       PLOT mxx%,myy%+1
  814.       PLOT mxx%+1,myy%+1
  815.       mxx%=MOUSEX
  816.       myy%=MOUSEY
  817.     LOOP UNTIL MOUSEK=0
  818.   ENDIF
  819.   GET 130,40,525,378,picture$
  820.   CLIP OFF
  821.   DEFLINE 1,1
  822. RETURN
  823. > PROCEDURE draw_type
  824.   return#=GRAF_GROWBOX(560,125,50,50,10,260,620,100)
  825.   type_open%=1
  826.   GOSUB next_window(10,260,630,360)
  827.   GOSUB next_text_box(20,290,620,310)
  828.   GET 21,291,619,309,back2$
  829.   GOSUB next_line_box(21,319,620,351)
  830.   GOSUB next_button(30,324,150,345)
  831.   GOSUB next_button(160,324,280,345)
  832.   GOSUB next_info_box(300,325,540,344)
  833.   GET 301,326,539,343,back1$
  834.   GOSUB next_button(302,327,352,342)
  835.   GOSUB next_vert_line(327,328,327,341)
  836.   GET 302,326,353,343,slider1$
  837.   GOSUB next_text_box(554,325,607,344)
  838.   DEFTEXT 1,0,0,13
  839.   GRAPHMODE 2
  840.   TEXT 55,340,"Form Feed"
  841.   TEXT 184,340,"Line Feed"
  842.   GRAPHMODE 0
  843.   TEXT 30,305,sti$+CHR$(95)
  844.   PUT 301,326,back1$
  845.   PUT slider1_x%,326,slider1$
  846.   psp%=INT(slider1_x%/2)-151
  847.   psp$=STR$(psp%)
  848.   IF LEN(psp$)=1 THEN
  849.     psp$=" "+psp$
  850.   ENDIF
  851.   TEXT 572,340,psp$
  852.   GOSUB test_type
  853. RETURN
  854. > PROCEDURE test_type
  855.   DO
  856.     kps$=INKEY$
  857.     IF kps$<>"" THEN
  858.       GOSUB type_entry
  859.     ENDIF
  860.     SELECT MOUSEK
  861.     CASE 1
  862.       mxx%=MOUSEX
  863.       myy%=MOUSEY
  864.       IF mxx%>559 AND mxx%<613 AND myy%>20 AND myy%<226 THEN
  865.         GOSUB icon_test
  866.       ENDIF
  867.       SELECT mxx%
  868.       CASE 16 TO 27
  869.         SELECT myy%
  870.           ' close button
  871.         CASE 265 TO 275
  872.           GOSUB next_button_press(15,264,28,276)
  873.           type_open%=0
  874.           EXIT IF 1=1
  875.         ENDSELECT
  876.       CASE 31 TO 149
  877.         ' formfeed
  878.         SELECT myy%
  879.         CASE 325 TO 344
  880.           GOSUB next_button_press(30,324,150,345)
  881.           IF GEMDOS(17) THEN
  882.             LPRINT CHR$(12)
  883.           ENDIF
  884.         ENDSELECT
  885.       CASE 161 TO 279
  886.         ' linefeed
  887.         SELECT myy%
  888.         CASE 325 TO 344
  889.           GOSUB next_button_press(160,324,280,345)
  890.           IF GEMDOS(17) THEN
  891.             LPRINT " "
  892.           ENDIF
  893.         ENDSELECT
  894.       CASE 302 TO 539
  895.         ' slider area
  896.         SELECT myy%
  897.         CASE 326 TO 343
  898.           GOSUB type_slider
  899.         ENDSELECT
  900.       ENDSELECT
  901.     ENDSELECT
  902.   LOOP
  903. RETURN
  904. > PROCEDURE type_entry
  905.   KEYPRESS ASC(kps$)
  906.   DO
  907.     KEYTEST i|
  908.     '    PRINT i|
  909.     SELECT i|
  910.     CASE 8
  911.       ' backspace
  912.       IF LEN(sti$)>0 THEN
  913.         sti$=MID$(sti$,1,LEN(sti$)-1)
  914.         TEXT 30,305,sti$+CHR$(95)+SPACE$(72-LEN(sti$))
  915.       ENDIF
  916.     CASE 13
  917.       ' return
  918.       IF TRIM$(sti$)<>"" THEN
  919.         IF GEMDOS(17) THEN
  920.           LPRINT SPACE$(psp%);sti$
  921.         ENDIF
  922.       ELSE
  923.         GOSUB next_button_press(160,324,280,345)
  924.         IF GEMDOS(17) THEN
  925.           LPRINT " "
  926.         ENDIF
  927.       ENDIF
  928.       sti$=""
  929.       TEXT 30,305,sti$+CHR$(95)+SPACE$(72-LEN(sti$))
  930.       EXIT IF 1=1
  931.     CASE 27
  932.       ' esc
  933.       sti$=""
  934.       TEXT 30,305,sti$+CHR$(95)+SPACE$(72-LEN(sti$))
  935.       EXIT IF 1=1
  936.     CASE 32 TO 126
  937.       IF LEN(sti$)<72 THEN
  938.         sti$=sti$+CHR$(i|)
  939.         TEXT 30,305,sti$+CHR$(95)
  940.       ENDIF
  941.     ENDSELECT
  942.   LOOP UNTIL MOUSEK
  943. RETURN
  944. > PROCEDURE type_slider
  945.   DEFTEXT 1,0,0,13
  946.   DO
  947.     SHOWM
  948.     xx%=MOUSEX-25
  949.     IF xx%<>slider1_x% AND xx%>301 AND xx%<489 THEN
  950.       slider1_x%=xx%
  951.       PUT 301,326,back1$
  952.       PUT slider1_x%,326,slider1$
  953.       psp%=INT(slider1_x%/2)-151
  954.       psp$=STR$(psp%)
  955.       IF LEN(psp$)=1 THEN
  956.         psp$=" "+psp$
  957.       ENDIF
  958.       TEXT 572,340,psp$
  959.     ENDIF
  960.   LOOP UNTIL MOUSEK=0
  961. RETURN
  962. > PROCEDURE draw_calendar
  963.   return#=GRAF_GROWBOX(560,21,50,50,50,58,334,262)
  964.   calendar_open%=1
  965.   GOSUB next_window(50,58,384,320)
  966.   GOSUB next_text_box(130,90,338,110)
  967.   GOSUB next_button(60,120,90,200)
  968.   GOSUB next_button(60,202,90,279)
  969.   GOSUB next_button(101,291,235,310)
  970.   GOSUB next_button(237,291,370,310)
  971.   GRAPHMODE 2
  972.   DEFTEXT 1,0,0,13
  973.   TEXT 71,164,CHR$(174)
  974.   TEXT 73,244,CHR$(175)
  975.   TEXT 163,307,"<"
  976.   TEXT 307,307,">"
  977.   GRAPHMODE 0
  978.   FOR v%=120 TO 268 STEP 28
  979.     FOR t%=100 TO 340 STEP 40
  980.       GOSUB next_text_box(t%,v%,t%+30,v%+20)
  981.     NEXT t%
  982.   NEXT v%
  983.   GET 95,80,376,287,blank1$
  984.   GOSUB fill_calendar
  985.   GOSUB test_calendar
  986. RETURN
  987. > PROCEDURE fill_calendar
  988.   SELECT month%
  989.   CASE 1
  990.     month$="January"
  991.     days%=31
  992.     SELECT year%
  993.     CASE 1991
  994.       start%=3
  995.     CASE 1992
  996.       start%=4
  997.     CASE 1993
  998.       start%=6
  999.     CASE 1994
  1000.       start%=7
  1001.     CASE 1995
  1002.       start%=1
  1003.     CASE 1996
  1004.       start%=2
  1005.     CASE 1997
  1006.       start%=4
  1007.     CASE 1998
  1008.       start%=5
  1009.     CASE 1999
  1010.       start%=6
  1011.     ENDSELECT
  1012.   CASE 2
  1013.     month$="February"
  1014.     days%=28
  1015.     SELECT year%
  1016.     CASE 1991
  1017.       start%=6
  1018.     CASE 1992
  1019.       days%=29
  1020.       start%=7
  1021.     CASE 1993
  1022.       start%=2
  1023.     CASE 1994
  1024.       start%=3
  1025.     CASE 1995
  1026.       start%=4
  1027.     CASE 1996
  1028.       days%=28
  1029.       start%=5
  1030.     CASE 1997
  1031.       start%=7
  1032.     CASE 1998
  1033.       start%=1
  1034.     CASE 1999
  1035.       start%=2
  1036.     ENDSELECT
  1037.   CASE 3
  1038.     month$="March"
  1039.     days%=31
  1040.     SELECT year%
  1041.     CASE 1991
  1042.       start%=6
  1043.     CASE 1992
  1044.       start%=1
  1045.     CASE 1993
  1046.       start%=2
  1047.     CASE 1994
  1048.       start%=3
  1049.     CASE 1995
  1050.       start%=4
  1051.     CASE 1996
  1052.       start%=6
  1053.     CASE 1997
  1054.       start%=7
  1055.     CASE 1998
  1056.       start%=1
  1057.     CASE 1999
  1058.       start%=2
  1059.     ENDSELECT
  1060.   CASE 4
  1061.     month$="April"
  1062.     days%=30
  1063.     SELECT year%
  1064.     CASE 1991
  1065.       start%=2
  1066.     CASE 1992
  1067.       start%=4
  1068.     CASE 1993
  1069.       start%=5
  1070.     CASE 1994
  1071.       start%=6
  1072.     CASE 1995
  1073.       start%=7
  1074.     CASE 1996
  1075.       start%=2
  1076.     CASE 1997
  1077.       start%=3
  1078.     CASE 1998
  1079.       start%=4
  1080.     CASE 1999
  1081.       start%=5
  1082.     ENDSELECT
  1083.   CASE 5
  1084.     month$="May"
  1085.     days%=31
  1086.     SELECT year%
  1087.     CASE 1991
  1088.       start%=4
  1089.     CASE 1992
  1090.       start%=6
  1091.     CASE 1993
  1092.       start%=7
  1093.     CASE 1994
  1094.       start%=1
  1095.     CASE 1995
  1096.       start%=2
  1097.     CASE 1996
  1098.       start%=4
  1099.     CASE 1997
  1100.       start%=5
  1101.     CASE 1998
  1102.       start%=6
  1103.     CASE 1999
  1104.       start%=7
  1105.     ENDSELECT
  1106.   CASE 6
  1107.     month$="June"
  1108.     days%=30
  1109.     SELECT year%
  1110.     CASE 1991
  1111.       start%=7
  1112.     CASE 1992
  1113.       start%=2
  1114.     CASE 1993
  1115.       start%=3
  1116.     CASE 1994
  1117.       start%=4
  1118.     CASE 1995
  1119.       start%=5
  1120.     CASE 1996
  1121.       start%=7
  1122.     CASE 1997
  1123.       start%=1
  1124.     CASE 1998
  1125.       start%=2
  1126.     CASE 1999
  1127.       start%=3
  1128.     ENDSELECT
  1129.   CASE 7
  1130.     month$="July"
  1131.     days%=31
  1132.     SELECT year%
  1133.     CASE 1991
  1134.       start%=2
  1135.     CASE 1992
  1136.       start%=4
  1137.     CASE 1993
  1138.       start%=5
  1139.     CASE 1994
  1140.       start%=6
  1141.     CASE 1995
  1142.       start%=7
  1143.     CASE 1996
  1144.       start%=2
  1145.     CASE 1997
  1146.       start%=3
  1147.     CASE 1998
  1148.       start%=4
  1149.     CASE 1999
  1150.       start%=5
  1151.     ENDSELECT
  1152.   CASE 8
  1153.     month$="August"
  1154.     days%=31
  1155.     SELECT year%
  1156.     CASE 1991
  1157.       start%=5
  1158.     CASE 1992
  1159.       start%=7
  1160.     CASE 1993
  1161.       start%=1
  1162.     CASE 1994
  1163.       start%=2
  1164.     CASE 1995
  1165.       start%=3
  1166.     CASE 1996
  1167.       start%=5
  1168.     CASE 1997
  1169.       start%=6
  1170.     CASE 1998
  1171.       start%=7
  1172.     CASE 1999
  1173.       start%=1
  1174.     ENDSELECT
  1175.   CASE 9
  1176.     month$="September"
  1177.     days%=30
  1178.     SELECT year%
  1179.     CASE 1991
  1180.       start%=1
  1181.     CASE 1992
  1182.       start%=3
  1183.     CASE 1993
  1184.       start%=4
  1185.     CASE 1994
  1186.       start%=5
  1187.     CASE 1995
  1188.       start%=6
  1189.     CASE 1996
  1190.       start%=1
  1191.     CASE 1997
  1192.       start%=2
  1193.     CASE 1998
  1194.       start%=3
  1195.     CASE 1999
  1196.       start%=4
  1197.     ENDSELECT
  1198.   CASE 10
  1199.     month$="October"
  1200.     days%=31
  1201.     SELECT year%
  1202.     CASE 1991
  1203.       start%=3
  1204.     CASE 1992
  1205.       start%=5
  1206.     CASE 1993
  1207.       start%=6
  1208.     CASE 1994
  1209.       start%=7
  1210.     CASE 1995
  1211.       start%=1
  1212.     CASE 1996
  1213.       start%=3
  1214.     CASE 1997
  1215.       start%=4
  1216.     CASE 1998
  1217.       start%=5
  1218.     CASE 1999
  1219.       start%=6
  1220.     ENDSELECT
  1221.   CASE 11
  1222.     month$="November"
  1223.     days%=30
  1224.     SELECT year%
  1225.     CASE 1991
  1226.       start%=6
  1227.     CASE 1992
  1228.       start%=1
  1229.     CASE 1993
  1230.       start%=2
  1231.     CASE 1994
  1232.       start%=3
  1233.     CASE 1995
  1234.       start%=4
  1235.     CASE 1996
  1236.       start%=6
  1237.     CASE 1997
  1238.       start%=7
  1239.     CASE 1998
  1240.       start%=1
  1241.     CASE 1999
  1242.       start%=2
  1243.     ENDSELECT
  1244.   CASE 12
  1245.     month$="December"
  1246.     days%=31
  1247.     SELECT year%
  1248.     CASE 1991
  1249.       start%=1
  1250.     CASE 1992
  1251.       start%=3
  1252.     CASE 1993
  1253.       start%=4
  1254.     CASE 1994
  1255.       start%=5
  1256.     CASE 1995
  1257.       start%=6
  1258.     CASE 1996
  1259.       start%=1
  1260.     CASE 1997
  1261.       start%=2
  1262.     CASE 1998
  1263.       start%=3
  1264.     CASE 1999
  1265.       start%=4
  1266.     ENDSELECT
  1267.   ENDSELECT
  1268.   PUT 95,80,blank1$
  1269.   d%=0
  1270.   t%=start%-1
  1271.   title$=month$+", "+STR$(year%)
  1272.   g$=SPACE$(INT(24-LEN(title$))/2)
  1273.   TEXT 140,105,g$+title$
  1274.   FOR z%=1 TO days%
  1275.     INC d%
  1276.     INC t%
  1277.     d$=STR$(d%)
  1278.     IF LEN(d$)=1 THEN
  1279.       d$=" "+d$
  1280.     ENDIF
  1281.     SELECT t%
  1282.     CASE 1
  1283.       TEXT 107,136,d$
  1284.     CASE 2
  1285.       TEXT 147,136,d$
  1286.     CASE 3
  1287.       TEXT 187,136,d$
  1288.     CASE 4
  1289.       TEXT 227,136,d$
  1290.     CASE 5
  1291.       TEXT 267,136,d$
  1292.     CASE 6
  1293.       TEXT 307,136,d$
  1294.     CASE 7
  1295.       TEXT 347,136,d$
  1296.     CASE 8
  1297.       TEXT 107,164,d$
  1298.     CASE 9
  1299.       TEXT 147,164,d$
  1300.     CASE 10
  1301.       TEXT 187,164,d$
  1302.     CASE 11
  1303.       TEXT 227,164,d$
  1304.     CASE 12
  1305.       TEXT 267,164,d$
  1306.     CASE 13
  1307.       TEXT 307,164,d$
  1308.     CASE 14
  1309.       TEXT 347,164,d$
  1310.     CASE 15
  1311.       TEXT 107,192,d$
  1312.     CASE 16
  1313.       TEXT 147,192,d$
  1314.     CASE 17
  1315.       TEXT 187,192,d$
  1316.     CASE 18
  1317.       TEXT 227,192,d$
  1318.     CASE 19
  1319.       TEXT 267,192,d$
  1320.     CASE 20
  1321.       TEXT 307,192,d$
  1322.     CASE 21
  1323.       TEXT 347,192,d$
  1324.     CASE 22
  1325.       TEXT 107,220,d$
  1326.     CASE 23
  1327.       TEXT 147,220,d$
  1328.     CASE 24
  1329.       TEXT 187,220,d$
  1330.     CASE 25
  1331.       TEXT 227,220,d$
  1332.     CASE 26
  1333.       TEXT 267,220,d$
  1334.     CASE 27
  1335.       TEXT 307,220,d$
  1336.     CASE 28
  1337.       TEXT 347,220,d$
  1338.     CASE 29
  1339.       TEXT 107,248,d$
  1340.     CASE 30
  1341.       TEXT 147,248,d$
  1342.     CASE 31
  1343.       TEXT 187,248,d$
  1344.     CASE 32
  1345.       TEXT 227,248,d$
  1346.     CASE 33
  1347.       TEXT 267,248,d$
  1348.     CASE 34
  1349.       TEXT 307,248,d$
  1350.     CASE 35
  1351.       TEXT 347,248,d$
  1352.     CASE 36
  1353.       TEXT 107,276,d$
  1354.     CASE 37
  1355.       TEXT 147,276,d$
  1356.     CASE 38
  1357.       TEXT 187,276,d$
  1358.     CASE 39
  1359.       TEXT 227,276,d$
  1360.     CASE 40
  1361.       TEXT 267,276,d$
  1362.     CASE 41
  1363.       TEXT 307,276,d$
  1364.     CASE 42
  1365.       TEXT 347,276,d$
  1366.     ENDSELECT
  1367.   NEXT z%
  1368. RETURN
  1369. > PROCEDURE test_calendar
  1370.   DO
  1371.     SELECT MOUSEK
  1372.     CASE 1
  1373.       mxx%=MOUSEX
  1374.       myy%=MOUSEY
  1375.       IF mxx%>559 AND mxx%<613 AND myy%>20 AND myy%<226 THEN
  1376.         GOSUB icon_test
  1377.       ENDIF
  1378.       SELECT mxx%
  1379.       CASE 56 TO 67
  1380.         SELECT myy%
  1381.         CASE 63 TO 73
  1382.           GOSUB next_button_press(55,62,68,74)
  1383.           calendar_open%=0
  1384.           EXIT IF 1=1
  1385.         ENDSELECT
  1386.       CASE 61 TO 89
  1387.         SELECT myy%
  1388.         CASE 121 TO 199
  1389.           GOSUB next_button_press(60,120,90,200)
  1390.           IF month%>1 THEN
  1391.             DEC month%
  1392.             GOSUB fill_calendar
  1393.           ENDIF
  1394.         CASE 203 TO 278
  1395.           GOSUB next_button_press(60,202,90,279)
  1396.           IF month%<12 THEN
  1397.             INC month%
  1398.             GOSUB fill_calendar
  1399.           ENDIF
  1400.         ENDSELECT
  1401.       CASE 102 TO 234
  1402.         SELECT myy%
  1403.         CASE 292 TO 309
  1404.           GOSUB next_button_press(101,291,235,310)
  1405.           IF year%>1991 THEN
  1406.             DEC year%
  1407.             GOSUB fill_calendar
  1408.           ENDIF
  1409.         ENDSELECT
  1410.       CASE 238 TO 369
  1411.         SELECT myy%
  1412.         CASE 292 TO 309
  1413.           GOSUB next_button_press(237,291,370,310)
  1414.           IF year%<1999 THEN
  1415.             INC year%
  1416.             GOSUB fill_calendar
  1417.           ENDIF
  1418.         ENDSELECT
  1419.       ENDSELECT
  1420.     ENDSELECT
  1421.   LOOP
  1422. RETURN
  1423. > PROCEDURE draw_database
  1424.   return#=GRAF_GROWBOX(560,73,50,50,40,50,460,340)
  1425.   changed%=0
  1426.   dbase_open%=1
  1427.   GOSUB next_window(40,50,500,390)
  1428.   GOSUB next_text_box(139,91,485,302)
  1429.   GET 142,94,482,299,bg$
  1430.   GOSUB next_button(55,311,123,336)
  1431.   GOSUB next_button(139,316,306,336)
  1432.   GOSUB next_button(308,316,485,336)
  1433.   GOSUB next_info_box(55,345,485,380)
  1434.   GOSUB next_button(70,351,195,374)
  1435.   GOSUB next_button(207,351,332,374)
  1436.   GOSUB next_button(345,351,470,374)
  1437.   a%=55
  1438.   b%=75
  1439.   ' -------
  1440.   c%=90
  1441.   d%=110
  1442.   FOR t%=1 TO 8
  1443.     FOR z%=1 TO 3
  1444.       GOSUB next_button(a%,c%,b%,d%)
  1445.       a%=b%+4
  1446.       b%=a%+20
  1447.     NEXT z%
  1448.     a%=55
  1449.     b%=75
  1450.     c%=d%+4
  1451.     d%=c%+20
  1452.   NEXT t%
  1453.   FOR z%=1 TO 2
  1454.     GOSUB next_button(a%,c%,b%,d%)
  1455.     a%=b%+4
  1456.     b%=a%+20
  1457.   NEXT z%
  1458.   DEFTEXT 1,0,0,13
  1459.   GRAPHMODE 2
  1460.   TEXT 216,332,"<"
  1461.   TEXT 396,332,">"
  1462.   TEXT 69,329,"Print"
  1463.   TEXT 122,368,"Add"
  1464.   TEXT 254,368,"Edit"
  1465.   TEXT 384,368,"Delete"
  1466.   TEXT 61,106,"A  B  C"
  1467.   TEXT 61,130,"D  E  F"
  1468.   TEXT 61,154,"G  H  I"
  1469.   TEXT 61,178,"J  K  L"
  1470.   TEXT 61,202,"M  N  O"
  1471.   TEXT 61,226,"P  Q  R"
  1472.   TEXT 61,250,"S  T  U"
  1473.   TEXT 61,274,"V  W  X"
  1474.   TEXT 61,298,"Y  Z"
  1475.   GRAPHMODE 0
  1476.   GOSUB database_view
  1477.   GOSUB test_database
  1478. RETURN
  1479. > PROCEDURE test_database
  1480.   DO
  1481.     SELECT MOUSEK
  1482.     CASE 1
  1483.       mxx%=MOUSEX
  1484.       myy%=MOUSEY
  1485.       IF mxx%>559 AND mxx%<613 AND myy%>20 AND myy%<226 THEN
  1486.         GOSUB icon_test
  1487.       ENDIF
  1488.       SELECT myy%
  1489.       CASE 21 TO 69
  1490.         SELECT mxx%
  1491.         CASE 46 TO 57
  1492.           ' close button
  1493.           IF myy%>55 AND myy%<66 THEN
  1494.             GOSUB next_button_press(45,54,58,66)
  1495.             dbase_open%=0
  1496.             IF changed%=1 AND TRIM$(nms$(1,1))<>"" THEN
  1497.               GOSUB database_sort
  1498.               OPEN "O",#1,"database.dat"
  1499.               FOR r%=1 TO cint%
  1500.                 FOR q%=1 TO 12
  1501.                   WRITE #1,nms$(r%,q%)
  1502.                 NEXT q%
  1503.               NEXT r%
  1504.               CLOSE #1
  1505.             ENDIF
  1506.             EXIT IF 1=1
  1507.           ENDIF
  1508.         ENDSELECT
  1509.       CASE 91 TO 109
  1510.         ' abc
  1511.         SELECT mxx%
  1512.         CASE 56 TO 74
  1513.           GOSUB next_button_press(55,90,75,110)
  1514.           alpha$="a"
  1515.           GOSUB letter_search
  1516.         CASE 80 TO 98
  1517.           GOSUB next_button_press(79,90,99,110)
  1518.           alpha$="b"
  1519.           GOSUB letter_search
  1520.         CASE 104 TO 122
  1521.           GOSUB next_button_press(103,90,123,110)
  1522.           alpha$="c"
  1523.           GOSUB letter_search
  1524.         ENDSELECT
  1525.       CASE 115 TO 133
  1526.         ' def
  1527.         SELECT mxx%
  1528.         CASE 56 TO 74
  1529.           GOSUB next_button_press(55,114,75,134)
  1530.           alpha$="d"
  1531.           GOSUB letter_search
  1532.         CASE 80 TO 98
  1533.           GOSUB next_button_press(79,114,99,134)
  1534.           alpha$="e"
  1535.           GOSUB letter_search
  1536.         CASE 104 TO 122
  1537.           GOSUB next_button_press(103,114,123,134)
  1538.           alpha$="f"
  1539.           GOSUB letter_search
  1540.         ENDSELECT
  1541.       CASE 139 TO 157
  1542.         ' ghi
  1543.         SELECT mxx%
  1544.         CASE 56 TO 74
  1545.           GOSUB next_button_press(55,138,75,158)
  1546.           alpha$="g"
  1547.           GOSUB letter_search
  1548.         CASE 80 TO 98
  1549.           GOSUB next_button_press(79,138,99,158)
  1550.           alpha$="h"
  1551.           GOSUB letter_search
  1552.         CASE 104 TO 122
  1553.           GOSUB next_button_press(103,138,123,158)
  1554.           alpha$="i"
  1555.           GOSUB letter_search
  1556.         ENDSELECT
  1557.       CASE 163 TO 181
  1558.         ' jkl
  1559.         SELECT mxx%
  1560.         CASE 56 TO 74
  1561.           GOSUB next_button_press(55,162,75,182)
  1562.           alpha$="j"
  1563.           GOSUB letter_search
  1564.         CASE 80 TO 98
  1565.           GOSUB next_button_press(79,162,99,182)
  1566.           alpha$="k"
  1567.           GOSUB letter_search
  1568.         CASE 104 TO 122
  1569.           GOSUB next_button_press(103,162,123,182)
  1570.           alpha$="l"
  1571.           GOSUB letter_search
  1572.         ENDSELECT
  1573.       CASE 187 TO 205
  1574.         ' mno
  1575.         SELECT mxx%
  1576.         CASE 56 TO 74
  1577.           GOSUB next_button_press(55,186,75,206)
  1578.           alpha$="m"
  1579.           GOSUB letter_search
  1580.         CASE 80 TO 98
  1581.           GOSUB next_button_press(79,186,99,206)
  1582.           alpha$="n"
  1583.           GOSUB letter_search
  1584.         CASE 104 TO 122
  1585.           GOSUB next_button_press(103,186,123,206)
  1586.           alpha$="o"
  1587.           GOSUB letter_search
  1588.         ENDSELECT
  1589.       CASE 211 TO 229
  1590.         ' pqr
  1591.         SELECT mxx%
  1592.         CASE 56 TO 74
  1593.           GOSUB next_button_press(55,210,75,230)
  1594.           alpha$="p"
  1595.           GOSUB letter_search
  1596.         CASE 80 TO 98
  1597.           GOSUB next_button_press(79,210,99,230)
  1598.           alpha$="q"
  1599.           GOSUB letter_search
  1600.         CASE 104 TO 122
  1601.           GOSUB next_button_press(103,210,123,230)
  1602.           alpha$="r"
  1603.           GOSUB letter_search
  1604.         ENDSELECT
  1605.       CASE 235 TO 253
  1606.         ' stu
  1607.         SELECT mxx%
  1608.         CASE 56 TO 74
  1609.           GOSUB next_button_press(55,234,75,254)
  1610.           alpha$="s"
  1611.           GOSUB letter_search
  1612.         CASE 80 TO 98
  1613.           GOSUB next_button_press(79,234,99,254)
  1614.           alpha$="t"
  1615.           GOSUB letter_search
  1616.         CASE 104 TO 122
  1617.           GOSUB next_button_press(103,234,123,254)
  1618.           alpha$="u"
  1619.           GOSUB letter_search
  1620.         ENDSELECT
  1621.       CASE 259 TO 277
  1622.         ' vwx
  1623.         SELECT mxx%
  1624.         CASE 56 TO 74
  1625.           GOSUB next_button_press(55,258,75,278)
  1626.           alpha$="v"
  1627.           GOSUB letter_search
  1628.         CASE 80 TO 98
  1629.           GOSUB next_button_press(79,258,99,278)
  1630.           alpha$="w"
  1631.           GOSUB letter_search
  1632.         CASE 104 TO 122
  1633.           GOSUB next_button_press(103,258,123,278)
  1634.           alpha$="x"
  1635.           GOSUB letter_search
  1636.         ENDSELECT
  1637.       CASE 283 TO 301
  1638.         ' yz
  1639.         SELECT mxx%
  1640.         CASE 56 TO 74
  1641.           GOSUB next_button_press(55,282,75,302)
  1642.           alpha$="y"
  1643.           GOSUB letter_search
  1644.         CASE 80 TO 98
  1645.           GOSUB next_button_press(79,282,99,302)
  1646.           alpha$="z"
  1647.           GOSUB letter_search
  1648.         ENDSELECT
  1649.       CASE 317 TO 335
  1650.         ' arrow buttons
  1651.         SELECT mxx%
  1652.         CASE 56 TO 122
  1653.           GOSUB next_button_press(55,311,123,336)
  1654.           IF GEMDOS(17) AND TRIM$(nms$(cnt%,1))<>"" THEN
  1655.             FOR ut%=1 TO 12
  1656.               LPRINT nms$(cnt%,ut%)
  1657.             NEXT ut%
  1658.           ENDIF
  1659.         CASE 140 TO 305
  1660.           GOSUB next_button_press(139,316,306,336)
  1661.           IF cnt%>1 THEN
  1662.             DEC cnt%
  1663.             GOSUB database_view
  1664.           ENDIF
  1665.         CASE 309 TO 484
  1666.           GOSUB next_button_press(308,316,485,336)
  1667.           IF TRIM$(nms$(cnt%+1,1))<>"" THEN
  1668.             INC cnt%
  1669.             GOSUB database_view
  1670.           ENDIF
  1671.         ENDSELECT
  1672.       CASE 352 TO 373
  1673.         SELECT mxx%
  1674.         CASE 71 TO 194
  1675.           ' add
  1676.           GOSUB next_button_press(70,351,195,374)
  1677.           GOSUB database_entry
  1678.         CASE 208 TO 331
  1679.           ' edit
  1680.           GOSUB next_button_press(207,351,332,374)
  1681.           IF TRIM$(nms$(cnt%,1))<>"" THEN
  1682.             GOSUB database_edit
  1683.           ENDIF
  1684.         CASE 346 TO 469
  1685.           ' delete
  1686.           GOSUB next_button_press(345,351,470,374)
  1687.           IF TRIM$(nms$(cnt%,1))<>"" THEN
  1688.             lef%=448
  1689.             cd$="Erase?"
  1690.             GOSUB confirm_delete
  1691.             IF go_ahead%=0 THEN
  1692.               GOSUB database_delete
  1693.             ENDIF
  1694.           ENDIF
  1695.         ENDSELECT
  1696.       ENDSELECT
  1697.     ENDSELECT
  1698.   LOOP
  1699. RETURN
  1700. > PROCEDURE confirm_delete
  1701.   GET 385,175,555,295,cover$
  1702.   GOSUB next_button(390,178,550,290)
  1703.   GOSUB next_info_box(400,188,540,280)
  1704.   GOSUB next_button(410,230,469,270)
  1705.   GOSUB next_button(471,230,530,270)
  1706.   GOSUB next_text_box(412,197,527,217)
  1707.   DEFTEXT 1,0,0,13
  1708.   GRAPHMODE 2
  1709.   '  TEXT 443,213,"Delete?"
  1710.   TEXT lef%,213,cd$
  1711.   TEXT 427,255,"Yes"
  1712.   TEXT 492,255,"No"
  1713.   GRAPHMODE 0
  1714.   DO
  1715.     IF MOUSEK=1 AND MOUSEX>410 AND MOUSEX<469 AND MOUSEY>230 AND MOUSEY<270 THEN
  1716.       GOSUB next_button_press(410,230,469,270)
  1717.       go_ahead%=0
  1718.       EXIT IF 1=1
  1719.     ENDIF
  1720.     IF MOUSEK=1 AND MOUSEX>471 AND MOUSEX<530 AND MOUSEY>230 AND MOUSEY<270 THEN
  1721.       GOSUB next_button_press(471,230,530,270)
  1722.       go_ahead%=1
  1723.       EXIT IF 1=1
  1724.     ENDIF
  1725.   LOOP
  1726.   PUT 385,175,cover$
  1727. RETURN
  1728. > PROCEDURE confirm_exit
  1729.   GET 35,25,255,145,cover$
  1730.   GOSUB next_button(40,28,200,140)
  1731.   GOSUB next_info_box(50,38,190,130)
  1732.   GOSUB next_button(60,80,119,120)
  1733.   GOSUB next_button(121,80,180,120)
  1734.   GOSUB next_text_box(62,47,177,67)
  1735.   DEFTEXT 1,0,0,13
  1736.   GRAPHMODE 2
  1737.   TEXT 93,63," Exit?"
  1738.   TEXT 77,105,"Yes"
  1739.   TEXT 142,105,"No"
  1740.   GRAPHMODE 0
  1741.   DO
  1742.     IF MOUSEK=1 AND MOUSEX>60 AND MOUSEX<119 AND MOUSEY>80 AND MOUSEY<120 THEN
  1743.       GOSUB next_button_press(60,80,119,120)
  1744.       END
  1745.     ENDIF
  1746.     IF MOUSEK=1 AND MOUSEX>121 AND MOUSEX<180 AND MOUSEY>80 AND MOUSEY<120 THEN
  1747.       GOSUB next_button_press(121,80,180,120)
  1748.       EXIT IF 1=1
  1749.     ENDIF
  1750.   LOOP
  1751.   PUT 35,25,cover$
  1752. RETURN
  1753. > PROCEDURE database_entry
  1754.   FOR n%=1 TO max%
  1755.     EXIT IF TRIM$(nms$(n%,1))=""
  1756.   NEXT n%
  1757.   PUT 142,94,bg$
  1758.   DO
  1759.     PRINT AT(20,8);
  1760.     FORM INPUT 39,nms$(n%,1)
  1761.     EXIT IF TRIM$(nms$(n%,1))=""
  1762.     PRINT AT(20,9);
  1763.     FORM INPUT 39,nms$(n%,2)
  1764.     EXIT IF TRIM$(nms$(n%,2))=""
  1765.     PRINT AT(20,10);
  1766.     FORM INPUT 39,nms$(n%,3)
  1767.     EXIT IF TRIM$(nms$(n%,3))=""
  1768.     PRINT AT(20,11);
  1769.     FORM INPUT 39,nms$(n%,4)
  1770.     EXIT IF TRIM$(nms$(n%,4))=""
  1771.     PRINT AT(20,12);
  1772.     FORM INPUT 39,nms$(n%,5)
  1773.     EXIT IF TRIM$(nms$(n%,5))=""
  1774.     PRINT AT(20,13);
  1775.     FORM INPUT 39,nms$(n%,6)
  1776.     EXIT IF TRIM$(nms$(n%,6))=""
  1777.     PRINT AT(20,14);
  1778.     FORM INPUT 39,nms$(n%,7)
  1779.     EXIT IF TRIM$(nms$(n%,7))=""
  1780.     PRINT AT(20,15);
  1781.     FORM INPUT 39,nms$(n%,8)
  1782.     EXIT IF TRIM$(nms$(n%,8))=""
  1783.     PRINT AT(20,16);
  1784.     FORM INPUT 39,nms$(n%,9)
  1785.     EXIT IF TRIM$(nms$(n%,9))=""
  1786.     PRINT AT(20,17);
  1787.     FORM INPUT 39,nms$(n%,10)
  1788.     EXIT IF TRIM$(nms$(n%,10))=""
  1789.     PRINT AT(20,18);
  1790.     FORM INPUT 39,nms$(n%,11)
  1791.     EXIT IF 1=1
  1792.   LOOP
  1793.   IF TRIM$(nms$(n%,1))<>"" THEN
  1794.     srtd%=1
  1795.     changed%=1
  1796.     find_again$=nms$(n%,1)
  1797.     cnt%=n%
  1798.   ELSE
  1799.     GOSUB database_view
  1800.   ENDIF
  1801. RETURN
  1802. > PROCEDURE database_delete
  1803.   srtd%=1
  1804.   changed%=1
  1805.   nms$(cnt%,1)=CHR$(240)
  1806.   FOR de%=2 TO 12
  1807.     nms$(cnt%,de%)=""
  1808.   NEXT de%
  1809.   GOSUB database_sort
  1810.   nms$(cint%,1)=""
  1811.   IF cnt%>1 THEN
  1812.     DEC cnt%
  1813.   ENDIF
  1814.   GOSUB database_view
  1815. RETURN
  1816. > PROCEDURE database_sort
  1817.   FOR n%=1 TO max%
  1818.     EXIT IF TRIM$(nms$(n%,1))=""
  1819.   NEXT n%
  1820.   IF n%>1 THEN
  1821.     cint%=n%-1
  1822.     FOR g%=1 TO cint%
  1823.       temp1$(g%)=nms$(g%,1)
  1824.       v%(g%)=g%
  1825.       FOR pl%=2 TO 12
  1826.         temp$(g%,pl%)=nms$(g%,pl%)
  1827.       NEXT pl%
  1828.     NEXT g%
  1829.     SSORT temp1$(),cint%,v%()
  1830.     FOR g%=1 TO cint%
  1831.       nms$(g%,1)=temp1$(g%)
  1832.       FOR pl%=2 TO 12
  1833.         nms$(g%,pl%)=temp$(v%(g%),pl%)
  1834.       NEXT pl%
  1835.     NEXT g%
  1836.   ENDIF
  1837. RETURN
  1838. > PROCEDURE database_edit
  1839.   srtd%=1
  1840.   changed%=1
  1841.   n%=cnt%
  1842.   DO
  1843.     rep$=nms$(n%,1)
  1844.     oks%=0
  1845.     DO
  1846.       PRINT AT(20,8);
  1847.       FORM INPUT 39 AS nms$(n%,1)
  1848.       IF TRIM$(nms$(n%,1))="" THEN
  1849.         nms$(n%,1)=rep$
  1850.       ELSE
  1851.         oks%=1
  1852.       ENDIF
  1853.     LOOP UNTIL oks%=1
  1854.     PRINT AT(20,9);
  1855.     FORM INPUT 39 AS nms$(n%,2)
  1856.     EXIT IF TRIM$(nms$(n%,2))=""
  1857.     PRINT AT(20,10);
  1858.     FORM INPUT 39 AS nms$(n%,3)
  1859.     EXIT IF TRIM$(nms$(n%,3))=""
  1860.     PRINT AT(20,11);
  1861.     FORM INPUT 39 AS nms$(n%,4)
  1862.     EXIT IF TRIM$(nms$(n%,4))=""
  1863.     PRINT AT(20,12);
  1864.     FORM INPUT 39 AS nms$(n%,5)
  1865.     EXIT IF TRIM$(nms$(n%,5))=""
  1866.     PRINT AT(20,13);
  1867.     FORM INPUT 39 AS nms$(n%,6)
  1868.     EXIT IF TRIM$(nms$(n%,6))=""
  1869.     PRINT AT(20,14);
  1870.     FORM INPUT 39 AS nms$(n%,7)
  1871.     EXIT IF TRIM$(nms$(n%,7))=""
  1872.     PRINT AT(20,15);
  1873.     FORM INPUT 39 AS nms$(n%,8)
  1874.     EXIT IF TRIM$(nms$(n%,8))=""
  1875.     PRINT AT(20,16);
  1876.     FORM INPUT 39 AS nms$(n%,9)
  1877.     EXIT IF TRIM$(nms$(n%,9))=""
  1878.     PRINT AT(20,17);
  1879.     FORM INPUT 39 AS nms$(n%,10)
  1880.     EXIT IF TRIM$(nms$(n%,10))=""
  1881.     PRINT AT(20,18);
  1882.     FORM INPUT 39 AS nms$(n%,11)
  1883.     EXIT IF 1=1
  1884.   LOOP
  1885. RETURN
  1886. > PROCEDURE database_view
  1887.   PUT 142,94,bg$
  1888.   PRINT AT(20,8);nms$(cnt%,1)
  1889.   PRINT AT(20,9);nms$(cnt%,2)
  1890.   PRINT AT(20,10);nms$(cnt%,3)
  1891.   PRINT AT(20,11);nms$(cnt%,4)
  1892.   PRINT AT(20,12);nms$(cnt%,5)
  1893.   PRINT AT(20,13);nms$(cnt%,6)
  1894.   PRINT AT(20,14);nms$(cnt%,7)
  1895.   PRINT AT(20,15);nms$(cnt%,8)
  1896.   PRINT AT(20,16);nms$(cnt%,9)
  1897.   PRINT AT(20,17);nms$(cnt%,10)
  1898.   PRINT AT(20,18);nms$(cnt%,11)
  1899. RETURN
  1900. > PROCEDURE letter_search
  1901.   sorted%=0
  1902.   IF srtd%=1 THEN
  1903.     GOSUB database_sort
  1904.     srtd%=0
  1905.     sorted%=1
  1906.   ENDIF
  1907.   FOR n%=1 TO max%
  1908.     EXIT IF TRIM$(nms$(n%,1))=""
  1909.   NEXT n%
  1910.   itis%=0
  1911.   FOR e%=1 TO n%
  1912.     IF alpha$=LEFT$(nms$(e%,1)) OR UPPER$(alpha$)=LEFT$(nms$(e%,1)) THEN
  1913.       itis%=e%
  1914.       EXIT IF 1=1
  1915.     ENDIF
  1916.   NEXT e%
  1917.   IF itis%=0 THEN
  1918.     IF sorted%=1 THEN
  1919.       cnt%=1
  1920.     ENDIF
  1921.   ELSE
  1922.     cnt%=itis%
  1923.     GOSUB database_view
  1924.   ENDIF
  1925. RETURN
  1926. > PROCEDURE icon_test
  1927.   SELECT mxx%
  1928.   CASE 560 TO 612
  1929.     SELECT myy%
  1930.     CASE 21 TO 69
  1931.       ' calendar
  1932.       GOSUB next_button_press(559,21,613,71)
  1933.       IF calendar_open%=0 THEN
  1934.         SGET putback2$
  1935.         GOSUB draw_calendar
  1936.         SPUT putback2$
  1937.         return#=GRAF_SHRINKBOX(560,21,50,50,50,58,334,262)
  1938.       ENDIF
  1939.     CASE 74 TO 122
  1940.       ' database
  1941.       GOSUB next_button_press(559,73,613,123)
  1942.       IF dbase_open%=0 THEN
  1943.         SGET putback3$
  1944.         GOSUB draw_database
  1945.         SPUT putback3$
  1946.         return#=GRAF_SHRINKBOX(560,73,50,50,40,50,460,340)
  1947.       ENDIF
  1948.     CASE 126 TO 174
  1949.       ' typewriter
  1950.       GOSUB next_button_press(559,125,613,175)
  1951.       IF type_open%=0 THEN
  1952.         SGET putback4$
  1953.         GOSUB draw_type
  1954.         SPUT putback4$
  1955.         return#=GRAF_SHRINKBOX(560,125,50,50,10,260,620,100)
  1956.       ENDIF
  1957.     CASE 178 TO 226
  1958.       ' paint
  1959.       GOSUB next_button_press(559,177,613,227)
  1960.       IF paint_open%=0 THEN
  1961.         SGET putback5$
  1962.         GOSUB draw_paint
  1963.         SPUT putback5$
  1964.         return#=GRAF_SHRINKBOX(560,177,50,50,10,10,528,380)
  1965.       ENDIF
  1966.     ENDSELECT
  1967.   ENDSELECT
  1968.   DO
  1969.   LOOP UNTIL MOUSEK=0
  1970.   mxx%=0
  1971.   myy%=0
  1972. RETURN
  1973. > PROCEDURE cal_logo
  1974.   cal$=""
  1975.   RESTORE cal
  1976.   REPEAT
  1977.     READ x#
  1978.     cal$=cal$+CHR$(x#)
  1979.   UNTIL x#=-1
  1980.   ' Sprite Data For CAL$
  1981. cal:
  1982.   DATA 0,35,0,32,0,1,85,85,85,85,88
  1983.   DATA 0,170,170,170,170,160,0,85,85,85,85
  1984.   DATA 88,0,171,174,186,234,160,0,86,219,109
  1985.   DATA 181,88,0,175,255,255,255,160,0,90,73
  1986.   DATA 36,145,216,0,169,36,146,73,160,0,88
  1987.   DATA 0,0,1,216,0,168,0,0,1,160,0
  1988.   DATA 95,255,255,255,216,0,169,36,146,73,160
  1989.   DATA 0,89,36,146,73,216,0,175,255,255,255
  1990.   DATA 160,0,89,36,146,73,216,0,169,36,146
  1991.   DATA 73,160,0,95,255,255,255,216,0,169,36
  1992.   DATA 146,73,160,0,89,36,146,73,216,0,175
  1993.   DATA 255,255,255,160,0,89,36,146,73,216,0
  1994.   DATA 169,36,146,73,160,0,95,255,255,255,216
  1995.   DATA 0,169,36,146,73,160,0,89,36,146,73
  1996.   DATA 216,0,175,255,255,255,160,0,89,36,146
  1997.   DATA 73,216,0,169,36,146,73,160,0,95,255
  1998.   DATA 255,255,216,0,175,255,255,255,160,0,85
  1999.   DATA 85,85,85,88,0,170,170,170,170,160,0
  2000.   DATA 85,85,85,85,88,0,-1
  2001.   '  To Display Sprite
  2002.   '   Put X,Y,CAL$  -Whereas   X= X Coordinate  Y= Y Coordinate
  2003. RETURN
  2004. > PROCEDURE pencil_logo
  2005.   pencil$=""
  2006.   RESTORE pencil
  2007.   REPEAT
  2008.     READ x#
  2009.     pencil$=pencil$+CHR$(x#)
  2010.   UNTIL x#=-1
  2011.   ' Sprite Data For PENCIL$
  2012. pencil:
  2013.   DATA 0,42,0,41,0,1,170,170,170,170,170
  2014.   DATA 160,85,85,85,85,85,64,170,170,170,170
  2015.   DATA 170,160,85,85,85,85,85,64,171,250,170
  2016.   DATA 170,170,160,87,253,85,85,85,64,175,254
  2017.   DATA 170,170,170,160,87,253,85,85,85,64,175
  2018.   DATA 251,170,170,170,160,87,247,85,85,85,64
  2019.   DATA 175,238,170,170,170,160,87,220,117,85,85
  2020.   DATA 64,171,184,234,170,170,160,85,113,221,85
  2021.   DATA 85,64,170,227,158,170,170,160,85,87,79
  2022.   DATA 85,85,64,170,174,231,170,170,160,85,92
  2023.   DATA 115,213,85,64,170,171,57,234,170,160,85
  2024.   DATA 87,156,245,85,64,170,171,206,122,170,160
  2025.   DATA 85,85,231,61,85,64,170,170,243,158,170
  2026.   DATA 160,85,85,121,207,85,64,170,170,188,231
  2027.   DATA 170,160,85,85,94,115,213,64,170,170,175
  2028.   DATA 57,234,160,85,85,87,157,213,64,170,170
  2029.   DATA 171,206,106,160,85,85,85,230,117,64,170
  2030.   DATA 170,170,248,106,160,85,85,85,120,53,64
  2031.   DATA 170,170,170,191,122,160,85,85,85,87,253
  2032.   DATA 64,170,170,170,170,250,160,85,85,85,85
  2033.   DATA 125,64,170,170,170,170,174,160,85,85,85
  2034.   DATA 85,85,64,170,170,170,170,170,160,85,85
  2035.   DATA 85,85,85,64,170,170,170,170,170,160,85
  2036.   DATA 85,85,85,85,64,-1
  2037.   '  To Display Sprite
  2038.   '   Put X,Y,PENCIL$  -Whereas   X= X Coordinate  Y= Y Coordinate
  2039. RETURN
  2040. > PROCEDURE x_logo
  2041.   x$=""
  2042.   RESTORE x
  2043.   REPEAT
  2044.     READ x#
  2045.     x$=x$+CHR$(x#)
  2046.   UNTIL x#=-1
  2047.   ' Sprite Data For X$
  2048. x:
  2049.   DATA 0,47,0,44,0,1,170,170,170,170,170
  2050.   DATA 170,85,85,85,85,85,85,170,170,170,170
  2051.   DATA 170,170,85,85,85,85,85,85,170,170,170
  2052.   DATA 170,170,186,87,85,85,85,85,245,171,170
  2053.   DATA 170,170,171,250,87,245,85,85,95,181,171
  2054.   DATA 250,170,170,190,58,87,255,85,85,248,53
  2055.   DATA 171,255,170,171,224,58,87,255,245,95,128
  2056.   DATA 53,171,255,250,190,0,58,87,255,255,248
  2057.   DATA 0,53,171,255,255,224,0,58,87,255,255
  2058.   DATA 224,0,53,171,255,254,248,0,58,87,255
  2059.   DATA 248,254,0,53,171,255,224,255,128,58,87
  2060.   DATA 255,128,255,224,53,171,254,0,255,248,58
  2061.   DATA 85,248,0,255,254,245,171,224,0,255,255
  2062.   DATA 234,87,128,0,255,255,213,174,0,0,255
  2063.   DATA 255,250,92,0,0,255,255,245,172,0,0
  2064.   DATA 255,255,250,92,0,0,255,255,245,172,0
  2065.   DATA 0,255,255,250,92,0,0,255,255,245,172
  2066.   DATA 0,3,255,255,250,92,0,15,255,255,245
  2067.   DATA 172,0,62,191,255,250,92,0,253,95,255
  2068.   DATA 245,172,3,234,171,255,250,92,15,213,85
  2069.   DATA 255,245,172,62,170,170,191,250,92,253,85
  2070.   DATA 85,95,245,175,234,170,170,171,250,95,213
  2071.   DATA 85,85,85,245,174,170,170,170,170,186,93
  2072.   DATA 85,85,85,85,85,170,170,170,170,170,170
  2073.   DATA 85,85,85,85,85,85,170,170,170,170,170
  2074.   DATA 170,-1
  2075.   '  To Display Sprite
  2076.   '   Put X,Y,X$  -Whereas   X= X Coordinate  Y= Y Coordinate
  2077. RETURN
  2078. > PROCEDURE type_logo
  2079.   type$=""
  2080.   RESTORE type
  2081.   REPEAT
  2082.     READ x#
  2083.     type$=type$+CHR$(x#)
  2084.   UNTIL x#=-1
  2085.   ' Sprite Data For TYPE$
  2086. type:
  2087.   DATA 0,49,0,32,0,1,85,85,85,85,85
  2088.   DATA 85,64,0,170,170,170,170,170,170,128,0
  2089.   DATA 85,85,85,85,85,85,64,0,160,0,0
  2090.   DATA 0,0,2,128,0,79,255,255,255,255,255
  2091.   DATA 64,0,168,0,0,0,0,6,128,0,72
  2092.   DATA 0,0,0,0,7,64,0,168,0,0,0
  2093.   DATA 0,6,128,0,72,255,255,255,255,135,64
  2094.   DATA 0,168,128,0,0,0,134,128,0,72,255
  2095.   DATA 255,255,255,135,64,0,168,0,0,0,0
  2096.   DATA 6,128,0,72,0,0,0,0,7,64,0
  2097.   DATA 168,119,119,119,119,6,128,0,72,119,119
  2098.   DATA 119,119,7,64,0,168,119,119,119,119,6
  2099.   DATA 128,0,72,0,0,0,0,7,64,0,168
  2100.   DATA 29,221,221,221,198,128,0,72,29,221,221
  2101.   DATA 221,199,64,0,168,29,221,221,221,198,128
  2102.   DATA 0,72,0,0,0,0,7,64,0,168,119
  2103.   DATA 119,119,119,6,128,0,72,119,119,119,119
  2104.   DATA 7,64,0,168,119,119,119,119,6,128,0
  2105.   DATA 72,0,0,0,0,7,64,0,168,0,0
  2106.   DATA 0,0,6,128,0,72,0,0,0,0,7
  2107.   DATA 64,0,168,0,0,0,0,6,128,0,79
  2108.   DATA 255,255,255,255,255,64,0,175,255,255,255
  2109.   DATA 255,254,128,0,85,85,85,85,85,85,64
  2110.   DATA 0,170,170,170,170,170,170,128,0,85,85
  2111.   DATA 85,85,85,85,64,0,-1
  2112.   '  To Display Sprite
  2113.   '   Put X,Y,TYPE$  -Whereas   X= X Coordinate  Y= Y Coordinate
  2114. RETURN
  2115. > PROCEDURE dbase_logo
  2116.   dbase$=""
  2117.   RESTORE dbase
  2118.   REPEAT
  2119.     READ x#
  2120.     dbase$=dbase$+CHR$(x#)
  2121.   UNTIL x#=-1
  2122.   ' Sprite Data For DBASE$
  2123. dbase:
  2124.   DATA 0,39,0,36,0,1,85,85,85,85,85
  2125.   DATA 0,170,170,170,170,170,0,85,85,85,85
  2126.   DATA 85,0,170,170,170,170,170,0,84,0,0
  2127.   DATA 0,21,0,161,255,255,255,138,0,87,0
  2128.   DATA 0,0,229,0,165,0,0,0,170,0,86
  2129.   DATA 248,24,31,165,0,165,100,0,37,106,0
  2130.   DATA 86,163,255,198,165,0,165,96,0,5,106
  2131.   DATA 0,86,160,0,6,165,0,165,96,0,5
  2132.   DATA 106,0,86,161,255,134,165,0,165,97,255
  2133.   DATA 133,106,0,86,161,255,134,165,0,165,97
  2134.   DATA 255,133,106,0,86,161,255,134,165,0,165
  2135.   DATA 97,255,133,106,0,86,161,255,134,165,0
  2136.   DATA 165,97,255,133,106,0,86,160,0,6,165
  2137.   DATA 0,165,96,0,5,106,0,86,160,0,6
  2138.   DATA 165,0,165,96,0,5,106,0,86,191,255
  2139.   DATA 254,165,0,165,85,85,85,106,0,86,170
  2140.   DATA 170,170,165,0,165,85,85,85,106,0,87
  2141.   DATA 255,255,255,229,0,160,0,0,0,10,0
  2142.   DATA 85,85,85,85,85,0,170,170,170,170,170
  2143.   DATA 0,85,85,85,85,85,0,170,170,170,170
  2144.   DATA 170,0,85,85,85,85,85,0,-1
  2145.   '  To Display Sprite
  2146.   '   Put X,Y,DBASE$  -Whereas   X= X Coordinate  Y= Y Coordinate
  2147. RETURN
  2148. > PROCEDURE next_logo
  2149.   next$=""
  2150.   RESTORE next
  2151.   REPEAT
  2152.     READ x#
  2153.     next$=next$+CHR$(x#)
  2154.   UNTIL x#=-1
  2155.   ' Sprite Data For NEXT$
  2156. next:
  2157.   DATA 0,92,0,92,0,1,0,0,0,0,0
  2158.   DATA 0,0,0,0,0,0,0,0,0,0,0
  2159.   DATA 0,0,0,0,0,0,0,0,0,0,0
  2160.   DATA 0,0,0,0,16,0,0,0,0,0,0
  2161.   DATA 0,0,0,0,0,120,0,0,0,0,0
  2162.   DATA 0,0,0,0,0,1,252,0,0,0,0
  2163.   DATA 0,0,0,0,0,0,7,252,0,0,0
  2164.   DATA 0,0,0,0,0,0,0,63,254,0,0
  2165.   DATA 0,0,0,0,0,0,0,0,255,255,0
  2166.   DATA 0,0,0,0,0,0,0,0,3,255,255
  2167.   DATA 0,0,0,0,0,0,0,0,0,15,192
  2168.   DATA 127,128,0,0,0,0,0,0,0,0,60
  2169.   DATA 0,15,192,0,0,0,0,0,0,0,1
  2170.   DATA 248,0,3,224,0,0,0,0,0,0,0
  2171.   DATA 7,224,255,193,224,0,0,0,0,0,0
  2172.   DATA 0,31,193,255,240,240,0,0,0,0,0
  2173.   DATA 0,0,127,199,255,240,120,0,0,0,0
  2174.   DATA 0,0,3,255,135,255,192,252,0,0,0
  2175.   DATA 0,0,0,15,255,143,254,3,254,0,0
  2176.   DATA 0,0,0,0,63,63,31,248,15,254,0
  2177.   DATA 0,0,0,0,0,252,63,31,224,127,223
  2178.   DATA 0,0,0,0,0,7,224,63,31,129,255
  2179.   DATA 31,128,0,0,0,0,31,128,63,28,7
  2180.   DATA 255,31,128,0,0,0,0,126,0,63,16
  2181.   DATA 31,255,31,192,0,0,0,1,248,12,63
  2182.   DATA 0,127,254,31,224,0,0,0,7,224,60
  2183.   DATA 127,131,255,254,31,240,0,0,0,63,192
  2184.   DATA 252,127,135,255,252,63,240,0,0,0,255
  2185.   DATA 195,252,127,195,255,248,63,248,0,0,3
  2186.   DATA 255,207,252,127,224,255,240,127,188,0,0
  2187.   DATA 1,255,255,248,127,240,63,192,254,60,0
  2188.   DATA 0,0,255,255,248,127,248,0,3,240,30
  2189.   DATA 0,0,2,255,255,248,255,254,0,7,192
  2190.   DATA 127,0,0,6,127,255,248,255,255,192,63
  2191.   DATA 1,255,128,0,7,63,255,248,255,255,255
  2192.   DATA 248,15,255,192,0,7,191,255,248,255,255
  2193.   DATA 255,224,63,255,192,0,7,223,255,248,255
  2194.   DATA 255,255,128,63,255,224,0,7,207,255,248
  2195.   DATA 255,159,254,0,63,255,240,0,7,231,255
  2196.   DATA 240,254,15,248,30,31,255,240,0,7,247
  2197.   DATA 255,241,248,15,224,127,15,255,248,0,15
  2198.   DATA 243,255,241,224,31,225,255,7,255,252,0
  2199.   DATA 15,249,255,241,128,127,247,255,135,255,254
  2200.   DATA 0,15,252,255,240,1,255,255,255,195,255
  2201.   DATA 254,0,15,254,255,240,7,195,255,255,225
  2202.   DATA 255,255,0,15,255,127,240,30,0,255,255
  2203.   DATA 240,255,255,128,15,255,63,240,120,0,255
  2204.   DATA 255,240,255,255,128,15,255,159,241,240,120
  2205.   DATA 127,255,248,127,255,192,31,255,223,247,225
  2206.   DATA 252,255,255,252,63,255,224,31,255,207,255
  2207.   DATA 227,255,255,255,252,63,255,128,31,255,231
  2208.   DATA 255,199,255,255,255,254,31,254,0,31,255
  2209.   DATA 243,255,199,255,255,255,255,15,248,192,31
  2210.   DATA 255,251,255,199,255,31,255,255,143,231,128
  2211.   DATA 31,255,249,255,199,240,3,255,255,191,31
  2212.   DATA 128,63,255,252,255,199,128,1,255,255,252
  2213.   DATA 127,128,63,255,254,255,224,0,1,255,255
  2214.   DATA 241,255,0,63,255,255,127,224,3,240,255
  2215.   DATA 255,207,255,0,31,255,255,63,248,63,248
  2216.   DATA 255,254,63,254,0,15,255,255,159,255,255
  2217.   DATA 248,255,248,255,254,0,7,255,255,223,255
  2218.   DATA 255,248,255,227,255,254,0,7,255,255,239
  2219.   DATA 255,255,248,255,143,255,252,0,3,255,255
  2220.   DATA 231,255,255,241,254,63,255,252,0,1,255
  2221.   DATA 255,243,255,223,193,241,255,255,248,0,1
  2222.   DATA 255,255,251,255,142,3,199,255,255,248,0
  2223.   DATA 0,255,255,249,255,0,15,31,255,255,248
  2224.   DATA 0,0,127,255,252,255,128,60,127,255,255
  2225.   DATA 240,0,0,63,255,254,127,224,227,255,255
  2226.   DATA 255,240,0,0,63,255,255,127,255,143,255
  2227.   DATA 255,255,224,0,0,31,255,255,63,254,63
  2228.   DATA 255,255,255,224,0,0,15,255,255,159,248
  2229.   DATA 255,255,255,255,192,0,0,7,255,255,223
  2230.   DATA 199,255,255,255,255,192,0,0,7,255,255
  2231.   DATA 239,63,255,255,255,255,192,0,0,3,255
  2232.   DATA 255,228,255,255,255,255,255,128,0,0,1
  2233.   DATA 255,255,241,255,255,255,255,252,0,0,0
  2234.   DATA 0,255,255,243,255,255,255,255,240,0,0
  2235.   DATA 0,0,255,255,247,255,255,255,255,192,0
  2236.   DATA 0,0,0,127,255,231,255,255,255,255,0
  2237.   DATA 0,0,0,0,63,255,231,255,255,255,252
  2238.   DATA 0,0,0,0,0,63,255,239,255,255,255
  2239.   DATA 240,0,0,0,0,0,31,255,207,255,255
  2240.   DATA 255,128,0,0,0,0,0,15,255,207,255
  2241.   DATA 255,254,0,0,0,0,0,0,7,255,223
  2242.   DATA 255,255,248,0,0,0,0,0,0,7,255
  2243.   DATA 159,255,255,224,0,0,0,0,0,0,3
  2244.   DATA 255,159,255,255,0,0,0,0,0,0,0
  2245.   DATA 1,255,191,255,252,0,0,0,0,0,0
  2246.   DATA 0,1,255,63,255,240,0,0,0,0,0
  2247.   DATA 0,0,0,255,63,255,192,0,0,0,0
  2248.   DATA 0,0,0,0,127,127,255,0,0,0,0
  2249.   DATA 0,0,0,0,0,62,127,248,0,0,0
  2250.   DATA 0,0,0,0,0,0,62,127,224,0,0
  2251.   DATA 0,0,0,0,0,0,0,30,255,128,0
  2252.   DATA 0,0,0,0,0,0,0,0,12,254,0
  2253.   DATA 0,0,0,0,0,0,0,0,0,4,248
  2254.   DATA 0,0,0,0,0,0,0,0,0,0,5
  2255.   DATA 192,0,0,0,0,0,0,0,0,0,0
  2256.   DATA 1,0,0,0,0,0,0,0,0,0,0
  2257.   DATA 0,0,0,0,0,0,0,0,0,0,0
  2258.   DATA 0,0,0,0,0,0,0,0,0,0,0
  2259.   DATA -1
  2260.   '  To Display Sprite
  2261.   '   Put X,Y,NEXT$  -Whereas   X= X Coordinate  Y= Y Coordinate
  2262. RETURN
  2263. > PROCEDURE circ
  2264.   circ$=""
  2265.   RESTORE circle
  2266.   REPEAT
  2267.     READ x#
  2268.     circ$=circ$+CHR$(x#)
  2269.   UNTIL x#=-1
  2270.   ' Sprite Data For CIRCLE$
  2271. circle:
  2272.   DATA 0,35,0,34,0,1,170,170,170,170,160
  2273.   DATA 0,85,85,85,85,80,0,170,170,170,170
  2274.   DATA 160,0,85,85,85,85,80,0,170,171,254
  2275.   DATA 170,160,0,85,95,255,213,80,0,170,252
  2276.   DATA 3,234,160,0,85,224,0,117,80,0,171
  2277.   DATA 192,0,58,160,0,87,128,0,29,80,0
  2278.   DATA 171,0,0,14,160,0,86,0,0,7,80
  2279.   DATA 0,174,0,0,6,160,0,86,0,0,7
  2280.   DATA 80,0,172,0,0,3,160,0,92,0,0
  2281.   DATA 3,80,0,172,0,0,3,160,0,92,0
  2282.   DATA 0,3,80,0,172,0,0,3,160,0,92
  2283.   DATA 0,0,3,80,0,172,0,0,3,160,0
  2284.   DATA 92,0,0,3,80,0,174,0,0,6,160
  2285.   DATA 0,86,0,0,7,80,0,174,0,0,6
  2286.   DATA 160,0,87,0,0,13,80,0,171,128,0
  2287.   DATA 30,160,0,85,192,0,61,80,0,170,224
  2288.   DATA 0,122,160,0,85,124,3,245,80,0,170
  2289.   DATA 191,255,170,160,0,85,87,253,85,80,0
  2290.   DATA 170,170,170,170,160,0,85,85,85,85,80
  2291.   DATA 0,170,170,170,170,160,0,-1
  2292.   '  To Display Sprite
  2293.   '   Put X,Y,CIRCLE$  -Whereas   X= X Coordinate  Y= Y Coordinate
  2294. RETURN
  2295. > PROCEDURE rect
  2296.   rect$=""
  2297.   RESTORE rect
  2298.   REPEAT
  2299.     READ x#
  2300.     rect$=rect$+CHR$(x#)
  2301.   UNTIL x#=-1
  2302.   ' Sprite Data For RECT$
  2303. rect:
  2304.   DATA 0,33,0,34,0,1,170,170,170,170,160
  2305.   DATA 0,85,85,85,85,80,0,170,170,170,170
  2306.   DATA 160,0,85,85,85,85,80,0,191,255,255
  2307.   DATA 254,160,0,95,255,255,255,80,0,184,0
  2308.   DATA 0,6,160,0,88,0,0,7,80,0,184
  2309.   DATA 0,0,6,160,0,88,0,0,7,80,0
  2310.   DATA 184,0,0,6,160,0,88,0,0,7,80
  2311.   DATA 0,184,0,0,6,160,0,88,0,0,7
  2312.   DATA 80,0,184,0,0,6,160,0,88,0,0
  2313.   DATA 7,80,0,184,0,0,6,160,0,88,0
  2314.   DATA 0,7,80,0,184,0,0,6,160,0,88
  2315.   DATA 0,0,7,80,0,184,0,0,6,160,0
  2316.   DATA 88,0,0,7,80,0,184,0,0,6,160
  2317.   DATA 0,88,0,0,7,80,0,184,0,0,6
  2318.   DATA 160,0,88,0,0,7,80,0,184,0,0
  2319.   DATA 6,160,0,88,0,0,7,80,0,184,0
  2320.   DATA 0,6,160,0,88,0,0,7,80,0,191
  2321.   DATA 255,255,254,160,0,95,255,255,255,80,0
  2322.   DATA 170,170,170,170,160,0,85,85,85,85,80
  2323.   DATA 0,170,170,170,170,160,0,-1
  2324.   '  To Display Sprite
  2325.   '   Put X,Y,RECT$  -Whereas   X= X Coordinate  Y= Y Coordinate
  2326. RETURN
  2327. > PROCEDURE tri
  2328.   tri$=""
  2329.   RESTORE tri
  2330.   REPEAT
  2331.     READ x#
  2332.     tri$=tri$+CHR$(x#)
  2333.   UNTIL x#=-1
  2334.   ' Sprite Data For TRI$
  2335. tri:
  2336.   DATA 0,35,0,33,0,1,170,170,170,170,160
  2337.   DATA 0,85,85,85,85,80,0,170,170,170,170
  2338.   DATA 160,0,85,85,117,85,80,0,170,170,234
  2339.   DATA 170,160,0,85,85,245,85,80,0,170,170
  2340.   DATA 250,170,160,0,85,85,157,85,80,0,170
  2341.   DATA 171,154,170,160,0,85,87,13,85,80,0
  2342.   DATA 170,171,14,170,160,0,85,86,7,85,80
  2343.   DATA 0,170,174,6,170,160,0,85,92,3,85
  2344.   DATA 80,0,170,172,3,170,160,0,85,88,1
  2345.   DATA 213,80,0,170,184,1,170,160,0,85,112
  2346.   DATA 0,213,80,0,170,176,0,234,160,0,85
  2347.   DATA 96,0,117,80,0,170,224,0,106,160,0
  2348.   DATA 85,192,0,53,80,0,170,192,0,58,160
  2349.   DATA 0,85,128,0,29,80,0,171,128,0,26
  2350.   DATA 160,0,87,0,0,13,80,0,171,0,0
  2351.   DATA 14,160,0,86,0,0,7,80,0,174,0
  2352.   DATA 0,6,160,0,95,255,255,255,80,0,175
  2353.   DATA 255,255,255,160,0,85,85,85,85,80,0
  2354.   DATA 170,170,170,170,160,0,85,85,85,85,80
  2355.   DATA 0,-1
  2356.   '  To Display Sprite
  2357.   '   Put X,Y,TRI$  -Whereas   X= X Coordinate  Y= Y Coordinate
  2358. RETURN
  2359. > PROCEDURE size
  2360.   size$=""
  2361.   RESTORE size
  2362.   REPEAT
  2363.     READ x#
  2364.     size$=size$+CHR$(x#)
  2365.   UNTIL x#=-1
  2366.   ' Sprite Data For SIZE$
  2367. size:
  2368.   DATA 0,30,0,29,0,1,85,85,85,84,170
  2369.   DATA 170,170,170,85,85,85,84,170,170,170,170
  2370.   DATA 85,87,255,244,170,170,0,26,85,86,255
  2371.   DATA 212,170,170,128,90,85,86,128,84,170,170
  2372.   DATA 128,90,85,86,128,84,170,170,128,90,85
  2373.   DATA 86,128,84,170,170,128,90,87,254,255,212
  2374.   DATA 172,2,0,26,85,255,255,244,173,255,170
  2375.   DATA 170,85,255,181,84,173,255,170,170,85,255
  2376.   DATA 181,84,173,255,170,170,85,255,181,84,173
  2377.   DATA 255,170,170,85,255,181,84,172,0,42,170
  2378.   DATA 87,255,245,84,170,170,170,170,85,85,85
  2379.   DATA 84,170,170,170,170,-1
  2380.   '  To Display Sprite
  2381.   '   Put X,Y,SIZE$  -Whereas   X= X Coordinate  Y= Y Coordinate
  2382. RETURN
  2383. > PROCEDURE credit_box
  2384.   SGET putback$
  2385.   GOSUB next_button(195,95,405,245)
  2386.   GOSUB next_text_box(204,104,395,235)
  2387.   PUT 252,110,next$
  2388.   GET 199,99,401,241,slid$
  2389.   DEFTEXT 1,0,0,6
  2390.   TEXT 216,213,"ALTERNATIVE INTERFACE"
  2391.   DEFTEXT 1,0,0,4
  2392.   TEXT 228,221,"1991, DAVID BECKER, v1.1"
  2393.   DEFTEXT 1,0,0,13
  2394.   DO
  2395.   LOOP UNTIL MOUSEK=1 AND MOUSEX>195 AND MOUSEX<405 AND MOUSEY>95 AND MOUSEY<245
  2396.   GOSUB next_button_press(195,95,405,245)
  2397.   SPUT putback$
  2398. RETURN
  2399.