home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / 551-575 / apd561 / textdis_iv / textdis_iv.amosSourceCode < prev   
AMOS Source Code  |  1991-07-19  |  7KB  |  225 lines

  1. Set Buffer 100
  2. STRT:
  3. Screen Open 0,100,100,2,Lowres
  4. Limit Mouse 128,49 To 448,289 : P$="TEXTDIS_IV" : Get Rom Fonts 
  5. 'FILE DISPLAYER for files up to 70000 Bytes  
  6. 'BY K. R. SHARKEY  
  7. '19 July 1991  
  8. Screen Open 1,640,200,8,Hires : Screen Close 0
  9. LL=%1001001001 : Set Curs LL,,LL,,LL,,LL,
  10. NUMSCRNS=2
  11. Palette $78,$78,$0,,$10,$100 : Curs Off : Pen 2 : Paper 1 : Cls 
  12. Colour Back $78 : Screen Open 2,640,50,8,Hires : Flash Off 
  13. Palette $78,$0,$78,$F76,$999,$F33,$FB0,$FFF,$FFF : Screen 2 : Curs Off : Cls : Set Text %11
  14. Set Slider 4,5,1,,1,5,1,
  15. Vslider Screen Width(2)-20,0 To Screen Width(2)-2,Screen Height(2),NUMSTRNGS,STRNG,1
  16. Reserve Zone 1 : Set Font 1
  17. Set Zone 1,Screen Width(2)-20,0 To Screen Width(2)-2,Screen Height : 
  18. Set Text %11
  19. TITL$=P$+" TEXT DISPLAY by K.SHARKEY" : T=Text Length(TITL$)
  20. Ink 5 : Text Screen Width(2)/2-T/2,10,TITL$ : Pen 2 : Set Text %100
  21. Screen Display 2,132,230,, : Set Font 0
  22. Ink 7 : Box 1,1 To Screen Width(2)-22,Screen Height(2)-1
  23. Box 0,0 To Screen Width(2)-21,Screen Height(2)-2
  24. Screen 1
  25. NAME:
  26. NAME$=Fsel$("*.doc","","TEXTDIS_IV","Select a file to view")
  27. If(NAME$="") and(CURRFILE$="") Then Goto NAME
  28. If NAME$>""
  29.    CURRFILE$=NAME$
  30. Else 
  31.    NAME$=CURRFILE$
  32. End If 
  33. Set Input 10,-1
  34. Open In 1,NAME$
  35. FILE_LENGTH=Lof(1) : TL=FILE_LENGTH
  36. If FILE_LENGTH>80000 Then FILE_LENGTH=80000 : TRUNCATE=True
  37. E=0 : NUMSTRNGS=(FILE_LENGTH/80)+3000
  38. Dim TXT$(NUMSTRNGS)
  39. For X=1 To NUMSTRNGS : TXT$(X)=Space$(1) : Next 
  40. Close 1
  41. Erase 16
  42. If Chip Free+Fast Free>FILE_LENGTH+1024
  43.    Reserve As Work 16,FILE_LENGTH
  44.    Bload NAME$,Start(16)
  45. End If 
  46. L=Start(16) : STRNG=1 : COUNT=1
  47. Screen 2 : Pen 3 : Print : Print : Centre "WAIT-Formatting text" : 
  48. Print : Centre "<ESC> to abort" : Screen 1
  49. Pen 2
  50. For X=L To L+FILE_LENGTH
  51.    Screen 1
  52.    D=Peek(X)
  53.    If D=10 or D=13 Then D=13
  54.    If D<>13 Then Print Chr$(D); Else Print 
  55.    If Y Curs=24 and X Curs=0 Then Goto FMAT
  56. Next 
  57. FMAT:
  58. For X=0 To 0+FILE_LENGTH
  59.    D=Peek(X+L) : If Key State(69) Then ABORT=True : Goto MAIN
  60.    If D=10 or D=13
  61.       TXT$(STRNG)=TXT$(STRNG)+Chr$(13) : COUNT=79 : Goto NXTSTRNG
  62.    End If 
  63.    TXT$(STRNG)=TXT$(STRNG)+Chr$(D)
  64.    NXTSTRNG:
  65.    Inc COUNT : If COUNT=80 Then COUNT=1 : Inc STRNG : TXT$(STRNG)=""
  66. Next 
  67. NUMSTRNGS=STRNG-1 : Screen 1
  68. If TRUNCATE
  69.    TXT$(NUMSTRNGS-1)=" "
  70.    TXT$(NUMSTRNGS)=Chr$(15)+"File too long - FILE TRUNCATED"
  71. End If 
  72. MAIN:
  73. If NUMSTRNGS<=25
  74.    NUMSCRNS=1 : NUMSTRNGS=25
  75. End If 
  76. If ABORT
  77.    TXT$(STRNG-1)=" "
  78.    TXT$(STRNG)=Chr$(15)+"FILE ABORTED" : NUMSTRNGS=STRNG
  79. End If 
  80. Screen 2 : Set Text 0 : Ink 5 : Text 20,40,"LINE" : Set Text %100 : 
  81. Screen Open 0,640,200,8,Hires : Get Palette 1 : Screen Copy 1 To 0
  82. Screen To Front 0 : Screen To Front 2
  83. Gosub FILETOP : Screen To Front 1 : Screen Close 0 : Screen To Front 2
  84. Screen 2 : Cls 
  85. Set Font 1 : Set Text %11
  86. Ink 5 : Text Screen Width(2)/2-T/2,10,TITL$ : Pen 2
  87. Set Font 0 : Set Text %0 : Ink 5 : Text 20,20,"FILE"
  88. Set Text %100 : Ink 2 : Text 80,20,Left$(NAME$,60) : Set Text %0 : Ink 5
  89. Text 20,29,"LENGTH" : Text 20,40,"LINE" : 
  90. Text 605,40,"%"
  91. Set Text %100
  92. Ink 2 : Text 80,29,Str$(FILE_LENGTH)+" Bytes"
  93. Ink 7 : Box 1,1 To Screen Width(2)-22,Screen Height(2)-1
  94. Box 0,0 To Screen Width(2)-21,Screen Height(2)-2
  95. Do 
  96. If NUMSCRNS>1
  97.    While Scin(X Mouse,Y Mouse)=2 : Gosub GADG : Wend 
  98. End If 
  99.    If(Key State(76) and STRNG>0) or(Mouse Key=2 and STRNG>0)
  100.       Screen Display 2,132,230,Screen Width-1,Screen Height-1 : Screen 1
  101.       CUE=Y Curs : STRNG=STRNG-CUE : MDE=0 : Gosub FWARD : Rem up arrow 
  102.    End If 
  103.    If(Key State(77) and STRNG<NUMSTRNGS) or(Mouse Key=1 and STRNG<NUMSTRNGS)
  104.       Screen Display 2,132,50,Screen Width,Screen Height : Screen 1
  105.       STRNG=STRNG+1 : MDE=1 : Gosub FWARD : Rem down arrow   
  106.    End If 
  107.    If Key State(16) Then Screen Close 1 : Erase 16 : Default : End : Rem Q  
  108.    If Key State(80) Then Cls : Run P$ : Rem F1   
  109.    If Key State(25) Then Gosub PRNTIT
  110.    If Key State(20) Then Gosub FILETOP
  111.    If Key State(53) Then Gosub FILEBOT
  112.    If Key State(95) Then Gosub HELP
  113. Loop 
  114. FWARD:
  115. If NUMSCRNS>1
  116.    Screen 1 : Curs On 
  117.    If STRNG=>NUMSTRNGS : STRNG=NUMSTRNGS : End If 
  118.    If STRNG=<0 : STRNG=0 : End If 
  119.    If MDE=0
  120.       Locate 0,0 : Vscroll 1
  121.       Print TXT$(STRNG) : Dec STRNG : Locate 0,0
  122.    End If 
  123.    If MDE=1
  124.       Print TXT$(STRNG)
  125.    End If 
  126.    RET1:
  127.    Gosub DETAIL
  128. End If 
  129. Return 
  130. BWARD:
  131. Screen 1 : Cls : STRNG=STRNG-24
  132. Gosub FWARD
  133. Return 
  134. PRNTIT:
  135. For PR=Start(16) To Start(16)+TL
  136.    K=Peek(PR) : If K=10 Then K=13
  137.    If K=13 Then Lprint Chr$(K) Else Lprint Chr$(K);
  138. Next 
  139. Return 
  140. FILETOP:
  141. STRNG=1
  142. FILEMID:
  143. Limit Mouse 128,160 To 448,190
  144. Screen 1 : Cls 
  145. For F=0 To 24
  146.    Gosub DETAIL
  147.    Locate 0,F : Print TXT$(STRNG);
  148.    Inc STRNG
  149. Next 
  150. Dec STRNG : Dec STRNG
  151. Limit Mouse 128,49 To 448,289
  152.       Screen Display 2,132,230,Screen Width-1,Screen Height-1 : Screen 1
  153. Return 
  154. FILEBOT:
  155. Limit Mouse 128,160 To 448,190
  156. STRNG=NUMSTRNGS-24
  157. Screen 1 : Cls 
  158. For F=0 To 24
  159.    Gosub DETAIL
  160.    Locate 0,F : Print TXT$(STRNG);
  161.    Inc STRNG
  162. Next 
  163. Dec STRNG : Dec STRNG
  164. Limit Mouse 128,49 To 448,289
  165.       Screen Display 2,132,50,Screen Width,Screen Height : Screen 1
  166. Return 
  167. DETAIL:
  168. Screen 2 : Ink 3,1,0 : Set Font 0 : Set Text 0
  169. Text 80,40,Space$(15)
  170. Text 80,40,Str$(STRNG+1)+" of"+Str$(NUMSTRNGS+1)
  171. P#=STRNG
  172. FILE_LENGTH#=NUMSTRNGS
  173. P#=Int((P#*100)/FILE_LENGTH#)
  174. Text 570,40,String$(" ",4)
  175. Text 570,40,Str$(P#)
  176. Gosub GADG
  177. Screen 1
  178. Return 
  179. GADG:
  180. Screen 2 : Screen Show 2
  181. QW=STRNG
  182. If QW<0 Then QW=1
  183. If QW>=NUMSTRNGS Then QW=NUMSTRNGS
  184. Vslider Screen Width(2)-20,0 To Screen Width(2)-2,Screen Height(2),NUMSTRNGS,QW,1
  185. While Mouse Zone
  186.    If Mouse Key=1
  187.       POS#=Y Screen(2,Y Mouse) : FIL_LENGTH#=NUMSTRNGS
  188.       STRNG=Int(FIL_LENGTH#*POS#)/Screen Height(2)
  189.       If STRNG<=1 : STRNG=1 : End If 
  190.       If STRNG>=NUMSTRNGS : STRNG=NUMSTRNGS : End If 
  191.       If STRNG<=NUMSTRNGS-24
  192.          Gosub FILEMID
  193.       Else 
  194.          Gosub FILEBOT
  195.       End If 
  196.    End If 
  197. Wend 
  198. Screen 1
  199. Return 
  200. HELP:
  201. Screen Open 3,640,200,8,Hires : Curs Off : Screen Hide 2
  202. Screen 3 : Palette $0,$A0,$A00,$FFF,$66F,$F66,$6F6
  203. Cls 0 : Ink 2 : Pen 2 : Paper 0 : Set Pattern 5
  204. Locate 0,0 : Print "TEXTDIS-IV" : Print : Ink 2
  205. Zoom 3,0,0,12*9,8 To 3,220,10,185+300,40 : Pen 6 : Paper 0 : Locate 0,0 : Cline 
  206. Ink 3 : Flash Off : Box 0,0 To Screen Width(3),Screen Height(3)
  207. Box 1,1 To Screen Width(3)-1,Screen Height(3)-1 : Ink 3
  208. Print : Print : Print : Print : Print : Centre "TEXT FILE DISPLAYER v4" : Print 
  209. Print : Centre "by" : Print 
  210. Print : Centre "K.SHARKEY"
  211. Print : Print 
  212. Centre "KEY FUNCTIONS" : Print 
  213. Centre "<esc>             Aborts formatting & displays aborted file." : Print 
  214. Centre "<curs up>         Scrolls text display up one line.         " : Print 
  215. Centre "<curs down>       Scrolls text display down one line.       " : Print 
  216. Centre "<p>               Prints the file to the printer device.    " : Print 
  217. Centre "<q>               Quits Program.                            " : Print 
  218. Centre "<b>               Scrolls text display to bottom of file.   " : Print 
  219. Centre "<t>               Scrolls text display to top of file.      " : Print 
  220. Centre "<F1>              Quits this file and re-runs program.      " : Print 
  221. Centre "<Help>            This screen.                              " : Print 
  222. Print : Ink 7 : Centre "PRESS A MOUSE KEY"
  223. While Mouse Key=0 or Key State(0) : Wend 
  224. Screen Close 3 : Screen Show 2 : Curs Off 
  225. Return