home *** CD-ROM | disk | FTP | other *** search
/ Otherware / Otherware_1_SB_Development.iso / amiga / misc / amoner04.dms / amoner04.adf / Autoexec.AMOS / Autoexec.amosSourceCode next >
Encoding:
AMOS Source Code  |  1992-06-19  |  4.9 KB  |  216 lines

  1. Screen Open 0,640,200,8,Hires
  2. Flash Off : Colour 3,$2D9
  3. DISKNAME$="AmoNER004:"
  4. Dim MEN$(40),DESC$(40),TYPE$(40),NAME$(40)
  5. Global MEN$(),DESC$(),TYPE$(),NAME$()
  6. Global CURRENT_MENU$,CURRENT_ITEM,HIGH_ITEM,DISKNAME$
  7. DISPLAY_INTRO
  8. BUILD_SCREEN
  9. DATBASE_READ
  10. DEF_MEN_READ
  11. MENU_READER:
  12. DISPLAY_MENU
  13. Copper On 
  14. MOUSE_READER:
  15. CHECK_ICON
  16. Repeat : Until Mouse Click
  17. If Mouse Zone=0 Then Goto MOUSE_READER
  18. If Mouse Zone=CURRENT_ITEM Then Goto MOUSE_READER
  19. If Mouse Zone>HIGH_ITEM and Mouse Zone<9 Then Goto MOUSE_READER
  20. If Mouse Zone<9
  21.    CURRENT_ITEM=Mouse Zone
  22.    DISPLAY_MENU
  23.    Goto MOUSE_READER
  24. End If 
  25. If Mouse Zone=9
  26.    ENTRY_CHECK
  27.    Goto MENU_READER
  28. End If 
  29. Rem
  30. End 
  31. ' This displays mikes intro. 
  32. Procedure DISPLAY_INTRO
  33.    Open In 1,DISKNAME$+"intro.def"
  34.    Input #1,CHECKER
  35.    Close 1
  36.    If CHECKER=0
  37.       Open Out 1,DISKNAME$+"intro.def"
  38.       Print #1,"1"
  39.       Close 1
  40.       Copper Off 
  41.       Run DISKNAME$+"Amoner.Amos"
  42.    End If 
  43. End Proc
  44. ' This builds the Screen Face. 
  45. Procedure BUILD_SCREEN
  46.    Cls 0
  47.    Ink 2
  48.    For A=0 To 96 Step 12
  49.       Box 0,A To 620,0
  50.    Next A
  51.    Draw 20,0 To 20,96
  52.    NUM=0
  53.    Reserve Zone 9
  54.    For A=120 To 160 Step 20
  55.       For B=0 To 40 Step 20
  56.          Ink 5,0
  57.          Inc NUM
  58.          NUM$=Str$(NUM)
  59.          If NUM=9 Then NUM$=" R"
  60.          Text B-4,A+10,NUM$
  61.          Ink 2,0
  62.          Box B,A To B+15,A+14
  63.          Set Zone NUM,B,A To B+15,A+14
  64.       Next B
  65.    Next A
  66.    Ink 6,0
  67.    For A=1 To 8
  68.       Text 6,(A-1)*12+9,Right$(Str$(A),1)
  69.    Next A
  70.    Ink 2
  71.    Box 100,105 To 300,195
  72.    Ink 4 : Text 105,114,"AmoNER No 4/ 1-JUL-1992"
  73.    Draw 105,116 To 296,116
  74.    Text 105,126,"Editor:  Gal-on Broner"
  75.    Text 105,136,"Assistant Editor:"
  76.    Text 105,145,"           Michael Cox"
  77.    Text 105,154,""
  78.    Text 105,163,"Distributors:"
  79.    Text 105,172,"       Voodoo Softwere"
  80.    Text 105,181,"     Niklas Konstenius"
  81.    Text 105,190,"                      "
  82.    Ink 2 : Box 350,105 To 550,195
  83. End Proc
  84. ' This reads the files database from the disk. 
  85. Procedure DATBASE_READ
  86.    Open Random 1,DISKNAME$+"files.db"
  87.    Field 1,8 As MEN$,72 As DESC$,1 As TYPE$,20 As NAME$
  88.    For LOO=1 To 40
  89.       Get 1,LOO
  90.       MEN$(LOO)=MEN$
  91.       DESC$(LOO)=DESC$
  92.       TYPE$(LOO)=TYPE$
  93.       NAME$(LOO)=NAME$
  94.    Next LOO
  95.    Close 1
  96. End Proc
  97. ' This reads menu information from the disk. 
  98. Procedure DEF_MEN_READ
  99.    Open In 1,DISKNAME$+"menu.def"
  100.    Input #1,CURRENT_MENU$
  101.    Input #1,CURRENT_ITEM
  102.    Close 1
  103. End Proc
  104. ' This display the menu. 
  105. Procedure DISPLAY_MENU
  106.    SIZE=Len(CURRENT_MENU$)
  107.    PLACE=0
  108.    For LOO=1 To 40
  109.       If Left$(MEN$(LOO),SIZE)=CURRENT_MENU$
  110.          If PLACE+1=CURRENT_ITEM
  111.             Ink 4,0
  112.          Else 
  113.             Ink 2,0
  114.          End If 
  115.          Text 26,PLACE*12+9,DESC$(LOO)
  116.          Inc PLACE
  117.       End If 
  118.    Next LOO
  119.    HIGH_ITEM=PLACE
  120. End Proc
  121. ' what icon to display?
  122. Procedure CHECK_ICON
  123.    Ink 0
  124.    If CURRENT_MENU$="main" and CURRENT_ITEM=4
  125.       Bar 356,108 To 543,191
  126.       Paste Icon 356,108,2
  127.       Pop Proc
  128.    End If 
  129.    If CURRENT_MENU$="main" and CURRENT_ITEM=5
  130.       Bar 356,108 To 543,191
  131.       Paste Icon 356,108,3
  132.       Pop Proc
  133.    End If 
  134.    Bar 356,108 To 543,191
  135.    Paste Icon 356,108,1
  136. End Proc
  137. ' This cleans up the menu. 
  138. Procedure CLEAN_MENU
  139.    Ink 0
  140.    CLEAN$=Space$(72)
  141.    For PLACE=0 To 7
  142.       Text 26,PLACE*12+9,CLEAN$
  143.    Next PLACE
  144. End Proc
  145. ' Now come the most importent procedure. 
  146. ' This check the entry.
  147. Procedure ENTRY_CHECK
  148.    SIZE=Len(CURRENT_MENU$)
  149.    PLACE=1
  150.    ENTRY_TYPE$="" : Rem The entry type.  
  151.    ENTRY_NAME$="" : Rem the entry name.
  152.    Rem
  153.    Rem this loop gets the entry name and type.
  154.    Rem
  155.    For LOO=1 To 40
  156.       If Left$(MEN$(LOO),SIZE)=CURRENT_MENU$
  157.          If PLACE=CURRENT_ITEM
  158.             ENTRY_TYPE$=TYPE$(LOO)
  159.             ENTRY_NAME$=NAME$(LOO)
  160.             Goto ENTRY_FOUND
  161.          End If 
  162.          Inc PLACE
  163.       End If 
  164.    Next LOO
  165.    ENTRY_FOUND:
  166.    Rem
  167.    Rem Trim off the spaces in the entry_name$ 
  168.    Rem
  169.    For LOO=1 To Len(ENTRY_NAME$)
  170.       If Mid$(ENTRY_NAME$,LOO,1)=" "
  171.          ENTRY_NAME$=Left$(ENTRY_NAME$,LOO-1)
  172.          Goto ENTRY_TRIMED
  173.       End If 
  174.    Next LOO
  175.    End 
  176.    ENTRY_TRIMED:
  177.    Rem
  178.    Rem M type items are menus 
  179.    Rem
  180.    If ENTRY_TYPE$="m"
  181.       CURRENT_MENU$=ENTRY_NAME$
  182.       CURRENT_ITEM=1
  183.       CLEAN_MENU
  184.       Pop Proc
  185.    End If 
  186.    Rem  
  187.    Rem P type are to print on screen using Amore. 
  188.    Rem
  189.    If ENTRY_TYPE$="p"
  190.       BUILD_AMORE_FILE[ENTRY_NAME$]
  191.       BUILD_MENU_FILE
  192.       Copper Off 
  193.       Run DISKNAME$+"Amore.Amos"
  194.    End If 
  195.    Rem  
  196.    Rem and R type to run
  197.    Rem
  198.    If ENTRY_TYPE$="r"
  199.       BUILD_MENU_FILE
  200.       Copper Off 
  201.       Run DISKNAME$+ENTRY_NAME$
  202.    End If 
  203. End Proc
  204. ' This buils proper data file for Amore. 
  205. Procedure BUILD_AMORE_FILE[FILENAME$]
  206.    Open Out 1,DISKNAME$+"Editor/Filename.dat"
  207.    Print #1,FILENAME$
  208.    Close 1
  209. End Proc
  210. ' And last, this file keeps the menu and item area.
  211. Procedure BUILD_MENU_FILE
  212.    Open Out 1,DISKNAME$+"menu.def"
  213.    Print #1,CURRENT_MENU$
  214.    Print #1,CURRENT_ITEM
  215.    Close 1
  216. End Proc