home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 26 / AACD 26.iso / AACD / Programming / AllPlaton / Unsorted / AMOSMore.AMOS / AMOSMore.amosSourceCode next >
Encoding:
AMOS Source Code  |  2001-09-09  |  3.9 KB  |  168 lines

  1. Dim LINS(500)
  2. Global LINS(),LIN,LI
  3. While Screen>=0 : Screen Close Screen : Wend 
  4. AMOSMORE["S:Startup-sequence"]
  5. Procedure AMOSMORE[F$]
  6.   Gosub INIT
  7.   Gosub LEAFIL
  8.   Do 
  9.     XM=X Mouse-128 : YM=Y Screen(6,Y Mouse) : MM=Mouse Key : BU=0
  10.     Dec TIM : If TIM=0 Then M$="" : Gosub DISPLAYMESS
  11.     If XM>95 and MM=1 Then BU=(XM-80)/16
  12.     If BU and BUA=0 Then BUA=BU : Screen 6 : Paste Icon BU*16+80,0,BU+15 : Screen 7
  13.     If BUA=1 Then MO=1
  14.     If BUA=2 Then MO=0
  15.     If BUA=3 Then MO=2
  16.     If BUA=4 Then Gosub LINDOWN
  17.     If BUA=5 Then Gosub LINUP
  18.     If BUA=6 and MM=0 Then Gosub PAGEDOWN
  19.     If BUA=7 and MM=0 Then Gosub PAGEUP
  20.     If BUA=8 and MM=0 Then LIN=0 : Gosub PAGEDOWN
  21.     If BUA=9 and MM=0 Then LIN=LI-1 : Gosub PAGEUP
  22.     If BUA=11 and MM=0 Then F$="" : Gosub LEAFIL
  23.     If BU=0 and BUA>0 Then Screen 6 : Paste Icon BUA*16+80,0,BUA+1 : Screen 7 : BUA=0
  24.     On MO+1 Gosub SOFTSTOP,SOFTDOWN,SOFTUP
  25.   Loop 
  26.   End 
  27. SOFTSTOP:
  28.   Screen Offset 7,0,Y+8
  29.   If Y mod 8>0 and RD=1 Then Add Y,1,0 To 239
  30.   If Y mod 8>0 and RD=-1 Then Add Y,-1,0 To 239
  31.   If Timer<1 Then Wait Vbl 
  32.   Timer=0
  33. Return 
  34. SOFTDOWN:
  35.   RD=1
  36.   If Y mod 8=0 Then Gosub NEXLIN
  37.   If LIN<LI Then Screen Offset 7,0,Y+8 : Add Y,1,0 To 239
  38.   If Timer<1 Then Wait Vbl 
  39.   Timer=0
  40. Return 
  41. LINDOWN:
  42.   If LIN>LI Then Return 
  43.   Y=Y-(Y mod 8)+8
  44.   Gosub NEXLIN
  45.   Add Y,8,0 To 239
  46.   Screen Offset 7,0,Y+8
  47.   If Timer<1 Then Wait Vbl 
  48.   Timer=0
  49.   MO=0
  50. Return 
  51. NEXLIN:
  52.   A$="" : If LIN=LI Then Return 
  53.   P=LINS(LIN)
  54.   Repeat 
  55.     A=Peek(ST+P) : Inc P
  56.     If A<>10 Then A$=A$+Chr$(A)
  57.   Until A=10 or P=>LE or Len(A$)>79
  58.   Ink 0 : Bar 0,Y To 639,Y+7
  59.   Ink 1,0 : Text 0,Y+6,A$
  60.   Screen Copy 7,0,Y,639,Y+8 To 7,0,Y+240
  61.   Inc LIN
  62. Return 
  63. SOFTUP:
  64.   RD=-1
  65.   If Y mod 8=7 Then Gosub PRELIN
  66.   If LIN>0 Then Screen Offset 7,0,Y+8 : Add Y,-1,0 To 239
  67.   If Timer<1 Then Wait Vbl 
  68.   Timer=0
  69. Return 
  70. LINUP:
  71.   If LIN=0 Then Return 
  72.   Y=Y-(Y mod 8)
  73.   Gosub PRELIN
  74.   Add Y,-8,0 To 239
  75.   Screen Offset 7,0,Y+8
  76.   If Timer<1 Then Wait Vbl 
  77.   Timer=0
  78.   MO=0
  79. Return 
  80. PRELIN:
  81.   A$="" : If LIN<30 Then Return 
  82.   P=LINS(LIN-30)
  83.   Repeat 
  84.     A=Peek(ST+P) : Inc P
  85.     If A<>10 Then A$=A$+Chr$(A)
  86.   Until A=10 or P<0 or Len(A$)>79
  87.   Ink 0 : Bar 0,Y+1 To 639,Y+8
  88.   Ink 1,0 : Text 0,Y+7,A$
  89.   Screen Copy 7,0,Y+1,639,Y+9 To 7,0,Y+241
  90.   Dec LIN
  91. Return 
  92. PAGEDOWN:
  93.   Y=Y-(Y mod 8)+8
  94.   For SSS=LIN To Min(28+LIN,LI)
  95.     Gosub NEXLIN
  96.     Add Y,8,0 To 239 : Screen Offset 7,0,Y+8
  97.     If Timer<1 Then Wait Vbl 
  98.     Timer=0
  99.   Next 
  100.   MO=0
  101. Return 
  102. PAGEUP:
  103. Return 
  104. QUIT:
  105.   Screen Close 6 : Screen Close 7
  106.   Pop 
  107. Pop Proc
  108. LEAFIL:
  109.   Screen 7 : Cls 0
  110.   Repeat 
  111.     If F$=""
  112.       F$=Fsel$("","","AMOS More Request","Load an text file!")
  113.       If F$=""
  114.         M$="Quitting AMOS More..." : Gosub DISPLAYMESS : Wait 50
  115.         Pop : Gosub QUIT
  116.       End If 
  117.     End If 
  118.     If F$<>"" Then If Exist(F$)=0
  119.       M$="Error: File not found!" : Gosub DISPLAYMESS : Wait 100
  120.     End If 
  121.   Until F$<>""
  122.   M$="Loading "+Left$(F$,30) : Gosub DISPLAYMESS
  123.   Open In 7,F$
  124.     LE=Lof(7)+3
  125.     Reserve As Work 16,LE
  126.     ST=Start(16)
  127.      Extension_8_17A6 7 To ST+2,LE-1
  128.     Poke ST+1,10
  129.     Poke ST+LE-1,10
  130.   Close 7
  131.   M$="Counting lines..." : Gosub DISPLAYMESS
  132.   LI=0
  133.   For A=1 To LE-1
  134.     If Peek(ST+A)=10 Then LINS(LI)=A+1 : Inc LI
  135.   Next 
  136.   M$=Str$(LE)-" "+" bytes in"+Str$(LI)+" lines." : Gosub DISPLAYMESS
  137.   Screen Offset 7,0,8 : Y=0
  138.   P=2 : Gosub PAGEDOWN
  139. Return 
  140. INIT:
  141.   Screen Open 6,320,27,8,0
  142.   Curs Off : Flash Off : Paper 3 : Pen 1 : Cls 0
  143.   Screen Display 6,128,273,320,27
  144.   Get Icon Palette 
  145.   No Icon Mask 
  146.   Paste Icon 0,0,1
  147.   For A=0 To 13
  148.     Paste Icon 96+A*16,0,A+2
  149.   Next 
  150.   Ink 3 : Bar 1,16 To 318,25
  151.   Plot 0,26 : Plot 319,16
  152.   Ink 2 : Draw 0,25 To 0,16 : Draw To 318,16
  153.   Ink 4 : Draw 1,26 To 319,26 : Draw To 319,17
  154.   Limit Mouse 
  155.   Screen Open 7,640,496,2,$8000
  156.   Curs Off : Palette $FFF,0
  157.   Screen Display 7,128,40,320,232
  158.   Screen Offset 7,0,8
  159. Return 
  160. DISPLAYMESS:
  161.   SSS=Screen
  162.   Screen 6
  163.   Ink 3 : Bar 1,17 To 317,25
  164.   Ink 1,3 : Text 2,24,M$
  165.   TIM=100
  166.   Screen SSS
  167. Return 
  168. End Proc