home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / 226-250 / apd234 / snake / snake!.doc / snake!.amosSourceCode < prev    next >
AMOS Source Code  |  1990-03-25  |  5KB  |  221 lines

  1. Rem *********************************************************************  
  2. Rem ** AMOS Text by Bouch '91 (C) 1991 RIPOFFWARE SOFTWARE PRODUCTIONS **  
  3. Rem *********************************************************************  
  4. Rem    Instructions  
  5. Rem  
  6. Rem To load a new file:
  7. Rem (1) Change the variable "TITLE$" to the full pathname and title of your
  8. Rem     ASCII text file e.g. "TEXTPLUS:DOCUMENTS/RIPOFFWARE.TXP",  
  9. Rem (2) Un-comment the "NEW_FILE" line (line 31) , 
  10. Rem (3) Run the program and view the text file as normal,  
  11. Rem (4) When you are satisfied press E to exit the program,  
  12. Rem (5) Comment out the line "NEW_FILE", 
  13. Rem (6) Change the variable TITLE$ to something more suitable
  14. Rem     e.g. "RIPOFFWARE.doc", 
  15. Rem (7) Save the program and give it an icon.
  16. Rem
  17. Rem ***** Look out for a new version of AMOS Text soon! - Bouch *****  
  18. Rem  
  19. TITLE$="SNAKE!.doc"
  20. Dim LINES(1000)
  21. Procedure NEW_FILE
  22.    Shared TITLE$
  23.    Erase 9
  24.    Open In 1,TITLE$
  25.    L=Lof(1)
  26.    Close 1
  27.    Reserve As Data 9,L+2
  28.    Bload TITLE$,Start(9)
  29. End Proc
  30. Procedure SET_UP_SCREEN
  31.    Shared TITLE$
  32.    Unpack 10 To 1
  33.    Screen Display 1,130,250,320,40
  34.    Screen Open 0,640,200,2,Hires
  35.    Curs Off 
  36.    Palette 0,0
  37.    Set Rainbow 1,1,215,"(2,1,15)(1,0,150)(2,-1,15)","(2,1,15)(1,0,150)(2,-1,15)","(2,1,15)(1,0,150)(2,-1,15)"
  38.    Rainbow 1,0,40,215
  39.    Print Cdown$
  40.    Centre "-----AMOS TEXT READER-----(C) 1991 RIPOFFWARE-----BY DAVID BOUCHER-----"
  41.    Print Cdown$
  42.    Centre "DISPLAYING "+TITLE$
  43.    Print Cdown$
  44.    Centre "PLEASE WAIT WHILE I SORT THIS TEXT FILE OUT!"
  45.    Screen 1
  46.    Reserve Zone 7
  47.    For B=1 To 6
  48.       Read X
  49.       Set Zone B,X,15 To X+12,27
  50.    Next 
  51.    Data 161,175,196,210,231,245
  52.    Set Zone 7,263,4 To 273,37
  53.    Limit Mouse 
  54.    W$="A 0,(1,3)(2,3)(3,3)(4,3);A:L X=XM;L Y=YM-7;J A;"
  55.    P$="A 0,(5,3)(6,3)(7,3)(8,3)(7,3)(6,3);A:L X=XM;L Y=YM-7;J A;"
  56.    Screen 0
  57.    Colour 17,4095
  58.    Colour 18,15
  59.    Screen 1
  60.    Colour 17,4095
  61.    Colour 18,15
  62.    Sprite 8,0,0,1
  63.    Hide 
  64.    X Mouse=271
  65.    Y Mouse=272
  66.    Channel 1 To Sprite 8
  67.    Amal 1,W$
  68.    Amal On 1
  69.    DEF_LINES
  70.    Screen 0
  71.    Centre "OK! - PRESS A KEY OR MOUSE BUTTON TO CONTINUE"
  72.    Print 
  73.    Clear Key 
  74.    Do 
  75.       K$=Inkey$
  76.       Exit If K$<>""
  77.       Exit If Mouse Click=1
  78.    Loop 
  79.    Amal 1,P$
  80.    Amal On 1
  81. End Proc
  82. Procedure MAINLOOP
  83.    Shared L,LINE
  84.    L=0
  85.    PAGE_ON[24]
  86.    Screen 1
  87.    Do 
  88.       PANEL
  89.       CONTROL
  90.       C=Param
  91.       Screen 0
  92.       If C=2 and L<LINE Then PAGE_ON[24]
  93.       If C=1 and L>24 Then PAGE_BACK[24]
  94.       If C=4 and L<LINE Then PAGE_ON[1]
  95.       If C=3 and L>24 Then PAGE_BACK[1]
  96.       If C=5
  97.          Cls 0
  98.          L=0
  99.          LED[5,1]
  100.          Screen 0
  101.          PAGE_ON[24]
  102.          LED[5,0]
  103.       End If 
  104.       If C=6
  105.          Cls 0
  106.          L=LINE-25
  107.          LED[6,1]
  108.          Screen 0
  109.          PAGE_ON[24]
  110.          LED[6,0]
  111.       End If 
  112.       Exit If C=7
  113.       Screen 1
  114.       If L<24 Then L=24
  115.       If L=LINE Then L=LINE-1
  116.    Loop 
  117. End Proc
  118. Procedure CONTROL
  119.    While Z=0
  120.       Do 
  121.          K$=Inkey$
  122.          Z=Mouse Zone
  123.          If K$<>"" Then Z=0 : Exit 
  124.          Exit If Mouse Click=1
  125.       Loop 
  126.       Z$=Lower$(K$)
  127.       If Z$="u" Then Z=1
  128.       If Z$="d" Then Z=2
  129.       If Z$=Chr$(30) Then Z=3
  130.       If Z$=Chr$(31) Then Z=4
  131.       If Z$="t" Then Z=5
  132.       If Z$="b" Then Z=6
  133.       If Z$="e" Then Z=7
  134.    Wend 
  135. End Proc[Z]
  136. Procedure DEF_LINES
  137.    Shared LINES(),LINE
  138.    LINES(0)=Start(9)-1
  139.    LINE=1
  140.    L=0
  141.    For P=Start(9) To Start(9)+Length(9)
  142.       Inc L
  143.       If Peek(P)=10 or L=78 Then LINES(LINE)=P : Inc LINE : L=0
  144.    Next 
  145.    If LINE<25 Then LINE=25
  146. End Proc
  147. Procedure PRNT_LINE[PL]
  148.    Shared LINES()
  149.    If LINES(PL)>0
  150.       For CH=LINES(PL-1)+1 To LINES(PL)
  151.          L$=L$+Chr$(Peek(CH))
  152.       Next 
  153.    If L$=Chr$(10) : Print : Else Print L$-Chr$(10) : End If 
  154.    Else 
  155.       Print 
  156.    End If 
  157. End Proc
  158. Procedure PAGE_ON[NOL]
  159.    Shared L,LINE
  160.    If NOL=24 Then LED[2,1] : Else LED[4,1]
  161.    Screen 0
  162.    Locate ,24
  163.    P=0
  164.    Do 
  165.       Inc L
  166.       Inc P
  167.       If L=LINE Then E=True : Exit 
  168.       PRNT_LINE[L]
  169.       Exit If P=NOL
  170.    Loop 
  171.    If NOL=24 Then LED[2,0] : Else LED[4,0]
  172.    Screen 0
  173. End Proc
  174. Procedure PAGE_BACK[NOL]
  175.    Shared L,LINE
  176.    If NOL=24 Then LED[1,1] : Else LED[3,1]
  177.    Screen 0
  178.    P=0
  179.    Add L,-23
  180.    Do 
  181.       Dec L
  182.       Inc P
  183.       If L=0 Then E=True : Exit 
  184.       Home 
  185.       Print Cup$;
  186.       PRNT_LINE[L]
  187.       Exit If P=NOL
  188.    Loop 
  189.    Add L,23
  190.    If NOL=24 Then LED[1,0] : Else LED[3,0]
  191.    Screen 0
  192. End Proc
  193. Procedure LED[NO,MD]
  194.    Screen 1
  195.    Ink MD
  196.    If NO=1 Then Bar 163,8 To 171,11
  197.    If NO=2 Then Bar 177,8 To 185,11
  198.    If NO=3 Then Bar 198,8 To 206,11
  199.    If NO=4 Then Bar 212,8 To 220,11
  200.    If NO=5 Then Bar 233,8 To 241,11
  201.    If NO=6 Then Bar 247,8 To 255,11
  202.    If NO=7 Then Bar 280,7 To 288,10
  203.    If NO=8 Then Bar 280,20 To 288,23
  204. End Proc
  205. Procedure PANEL
  206.    Shared L,LINE
  207.    Ink 0,6
  208.    L#=L-24
  209.    LINE#=LINE-25
  210.    If LINE#>0
  211.       PC#=L#/LINE#
  212.    End If 
  213.    PC=Int(PC#*100)
  214.    PC$=Right$(("000"+Str$(PC)-" "),3)+"%"
  215.    Text 284,36,PC$
  216.    If L<25 Then LED[7,1] : Else LED[7,0]
  217.    If L=LINE-1 Then LED[8,1] : Else LED[8,0]
  218. End Proc
  219. 'NEW_FILE
  220. SET_UP_SCREEN
  221. MAINLOOP