home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / 501-525 / apd520 / asstd_programs / menuprogram.amos / menuprogram.amosSourceCode < prev    next >
AMOS Source Code  |  1991-01-02  |  4KB  |  150 lines

  1. If Screen >-1
  2.    Screen Close Screen
  3. End If 
  4. Screen Open 1,320,256,8,Lowres
  5. Palette 0,$99F,$F00,$F0,$F00,$FF0,$66A,$CCF
  6. Break On : Hide On : Colour Back 0
  7. Change Mouse 1
  8. Cls 0 : Curs Off : Flash Off 
  9. Limit Mouse 129,43 To 430,280
  10. Pen 1 : Paper 0
  11. Key Speed 20,3
  12. Dim F$(31)
  13. Global F$()
  14. Unpack 7
  15. Wind Save 
  16. If Exist("Menu.Dat")
  17.    Open In 1,"Menu.Dat"
  18.    For X=1 To 30
  19.       Line Input #1,F$(X)
  20.    Next 
  21.    Close 1
  22. End If 
  23. DISPMENU[0]
  24. Do 
  25.    K$=Inkey$ : SC=Scancode : KS=Key Shift : MK=Mouse Key
  26.    If KS<8
  27.       Colour 4,$F00
  28.       DISPMENU[0]
  29.    End If 
  30.    If KS=8
  31.       Colour 4,$FF0
  32.       DISPMENU[10]
  33.    End If 
  34.    If KS=16 or KS=32
  35.       Colour 4,$F0
  36.       DISPMENU[20]
  37.    End If 
  38.    If KS=80 or KS=160 or MK=2
  39.       EDMENU
  40.       Hide On 
  41.    End If 
  42.    If SC>79 and SC<90 : PROGRUN[SC,KS] : End If 
  43. Loop 
  44. Procedure PROGRUN[SC,KS]
  45.    If KS=8 : P=10 : End If 
  46.    If KS=16 or KS=32 : P=20 : End If 
  47.    X=(SC-79)+P
  48.    If F$(X)<>""
  49.       If Exist(F$(X))
  50.          Cls 0 : Locate 0,11
  51.          Centre "Loading"+"  "
  52.          Print : Print : Centre F$(X)+"  "
  53.          Print : Print : Centre "Please Wait"+"  "
  54.          Run F$(X)
  55.       Else 
  56.          Wind Open 1,80,100,20,3
  57.          Curs Off : Paper 1 : Pen 0 : Clw 
  58.          Print : Centre "Can't Find Program"
  59.          Bell : Wait 100
  60.          Wind Close 
  61.       End If 
  62.    End If 
  63. End Proc
  64. Procedure DISPMENU[P]
  65.    Locate 2,9
  66.    For X=1 To 10
  67.       If X<6
  68.          Print At(5,);Left$("F"+(Str$(X)-" ")+" "+F$(X+P)-".amos"-".AMOS"-".Amos"-".Bak"+Space$(20),15)
  69.       Else 
  70.          Print At(21,);Left$("F"+(Str$(X)-" ")+" "+F$(X+P)-".amos"-".AMOS"-".Amos"-".Bak"+Space$(20),15)
  71.       End If 
  72.       Print : Print 
  73.       If X=5 : Locate 20,9 : End If 
  74.    Next 
  75. End Proc
  76. Procedure EDMENU
  77.    Wind Open 1,36,60,30,18
  78.    Paper 1 : Curs Off 
  79.    Clw : Show On 
  80.    Reserve Zone 2
  81.    Paper 6 : Pen 5
  82.    Print At(1,1);"  Edit Menu  -  Esc to Exit "
  83.    Pen 0 : Paper 1
  84.    Print At(1,3);"Press function key you wish"
  85.    Print At(1,4);"to store new program under."
  86.    Print At(1,6);"Type name of program."
  87.    Print At(1,8);"Then select SAVE, (Alt + S)"
  88.    Print At(1,9);"to store new Configuration."
  89.    Print At(4,16);Border$(Zone$("Save",1),1)
  90.    Print At(22,16);Border$(Zone$("Exit",2),1)
  91.    Do 
  92.       K$=Inkey$ : SC=Scancode : KS=Key Shift : MK=Mouse Click : MZ=Mouse Zone
  93.       Exit If SC=69 or(MZ=2 and MK=1)
  94.       If KS<8
  95.          Colour 4,$F00
  96.       End If 
  97.       If KS=8
  98.          Colour 4,$FF0
  99.       End If 
  100.       If KS=16 or KS=32
  101.          Colour 4,$F0
  102.       End If 
  103.       If SC>79 and SC<90
  104.          Gosub EDLINE
  105.       End If 
  106.       If((KS=16 or KS=32) and SC=33) or(MZ=1 and MK=1)
  107.          Print At(3,14);"** Saving 'Menu.Dat' **"
  108.          Open Out 1,"Menu.Dat"
  109.          For X=1 To 30
  110.             Print #1,F$(X)
  111.          Next 
  112.          Close 1
  113.          Wait 30
  114.          Wind Close : Pop Proc
  115.       End If 
  116.    Loop 
  117.    If CHANGED=1
  118.       Print At(3,14);"Data Has Not Been Saved"
  119.       Bell 
  120.       Do 
  121.          K$=Inkey$ : SC=Scancode : KS=Key Shift : MK=Mouse Click : MZ=Mouse Zone
  122.          Exit If SC=69 or(MZ=2 and MK=1)
  123.          If((KS=16 or KS=32) and SC=33) or(MZ=1 and MK=1)
  124.             Print At(3,14);"** Saving 'Menu.Dat' **"
  125.             Open Out 1,"Menu.Dat"
  126.             For X=1 To 30
  127.                Print #1,F$(X)
  128.             Next 
  129.             Close 1
  130.             Wait 30
  131.          End If 
  132.       Loop 
  133.    End If 
  134.    Wind Close 
  135.    Pop Proc
  136.    EDLINE:
  137.    P=0 : X$=""
  138.    If KS=8 : P=10 : X$="Control + " : End If 
  139.    If KS=16 or KS=32 : P=20 : X$="Alt + " : End If 
  140.    X=(SC-79)+P
  141.    Print At(3,11);"Key... ";X$;"F"+Str$(X-P)-" ";Space$(10)
  142.    Locate 1,13 : Print "Old Name. ";F$(X)
  143.    Locate 1,14 : Line Input "New Name. ";A$
  144.    Curs Off 
  145.    Print At(3,11);Space$(20)
  146.    Print At(1,13);Space$(30)
  147.    Print At(1,14);Space$(30)
  148.    If A$<>"" : F$(X)=A$ : CHANGED=1 : End If 
  149.    Return 
  150. End Proc