home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / 576-600 / apd588 / texview_source.amos / texview_source.amosSourceCode < prev   
AMOS Source Code  |  1992-08-06  |  20KB  |  575 lines

  1. 'TEXVIEW-II TEXT/PIC/MUSIC READER/VIEWER/PLAYER
  2. '         by 
  3. '     K.SHARKEY
  4. 'with Printer dump by A.Grant      
  5. 'JUNE 1   22:00   1992         
  6. If Screen=0 Then Cls 0
  7. _COPYRIGHT
  8. On Error Proc ERRR
  9. P$=Command Line$
  10. E_O_PAR=182 : T_A_B=187 : Rem change these to 182,187 to view control chars
  11. EOP_DUMMY=1 : T_A_B_DUMMY=False : Rem ALTERNATE = 1,0  
  12. FIRSTTIME=True : WORDWRAP=True : WRAPDUMMY=False : Rem CHANGE TO FALSE FOR NO WORDWRAP
  13. Dim PAGEADD(1000),STAT$(2)
  14. STAT$(1)="ON " : STAT$(0)="OFF"
  15. STRT:
  16. Rem the following variables set the printer dump preferences 
  17. XACROSS=8000 : YHIGH=4000 : MCOLS=$1 : MROWS=$2
  18. DEV$="PAR:" : Rem change to SER: if your printer is serial 
  19. CEN=$40 : RATIO=$80 : PATT$="YES" : Change Mouse 24
  20. Resume Label STRT
  21. Close Editor 
  22. Clear Key : Get Rom Fonts 
  23. RemLoad Fsel$("","textdis_sprites.abk","","LOAD A SPRITE BANK")
  24. Rem use above line to install new bobs   
  25. SIZE=9
  26. 'Default Palette $0,$36,$FFF,$900,$956,$950,$45F,$FFF
  27. Screen Open 0,640,60,8,Hires : Screen Display 0,,230,,
  28. Menu$(1)=" QUIT " : Menu$(1,1)=" TEXVIEW II [Esc]" : Menu Key(1,1) To 69
  29. On Menu Gosub QUITIT
  30. Get Sprite Palette 
  31. Set Slider 4,5,1,,1,5,1, : Curs Off : Flash Off 
  32. Reserve Zone 13 : Set Font 1
  33. TITL$="TEXVIEW II READER by K.SHARKEY"
  34. Set Zone 1,Screen Width(0)-20,0 To Screen Width(0)-2,Screen Height(0)
  35. XX=380 : YY=30
  36. For JJ=2 To 8 : Set Zone JJ,XX,YY To XX+32,YY+19 : XX=XX+32 : Next JJ
  37. If P$>"" and FIRSTTIME Then Goto GRABFILE
  38. P$="" : P$=Fsel$("","","TEXVIEW II","SELECT A FILE")
  39. Screen Open 1,640,180,8,Hires : Get Sprite Palette : Curs Off 
  40. GRABFILE:
  41. FIRSTTIME=False
  42. If P$="" Then Gosub IDLE : Goto STRT
  43. Get Sprite Palette 
  44. Colour Back Colour(0) : Set Font 1
  45. Curs Off : Screen To Front 0
  46. Limit Mouse 128,230 To 447,289
  47. Close : Open In 1,P$ : FILELENGTH=Lof(1)
  48. B$=Input$(1,30) : PICHERE=False : Close 1
  49. If Instr(B$,"FORM")
  50.    If Instr(B$,"ILBM")
  51.       PICHERE=True : Load Iff(P$),1 : Screen Hide 0 : Screen Show 1 : Limit Mouse 
  52.       Screen Display 1,,30,Screen Width(1),Screen Height(1)
  53.       Gosub PIXMANAGE : Goto STRT
  54.    End If 
  55. End If 
  56. If Instr(B$,"AmBk")
  57.    If Instr(B$,"Music")
  58.       Load(P$),3 : Music 1
  59.       Screen 0 : Screen Hide 1 : Locate ,4 : Centre "Playing :- "+Left$(P$,60)
  60.       Ink 3 : Locate ,5 : Centre "Left Mouse to Exit" : 
  61.       Screen Open 4,102,120,8,Hires : Screen Display 4,272,100,, : Get Sprite Palette 
  62.       Double Buffer : Colour 0,0 : Curs Off 
  63.       Set Rainbow 1,0,64,"","","(8,2,8)" : Rainbow 1,56,1,255
  64.       Gosub MUZMANAGE : Set Rainbow 1,0,64,"","","" : Goto STRT
  65.    End If 
  66. End If 
  67. RELOAD:
  68. Erase 16 : Reserve As Work 16,FILELENGTH+1024 : Bload P$,16 : T=Text Length(TITL$)
  69. BEGINFMAT:
  70. BEGIN=Start(16) : POZ=BEGIN : LIMIT=POZ+FILELENGTH : COUNTER=1
  71. Screen 0 : Cls : Print : Print : Centre "         -PROCESSING TEXT" : Locate 0,4
  72. On Menu On : Change Mouse 25
  73. Sprite 8,238,237,15 : Print "FILE NAME :";P$
  74. Locate 0,6 : Print "FILE SIZE :";FILELENGTH; : Screen 1
  75. FMAT:
  76. PAGENUM=2 : PAGEADD(1)=BEGIN : COUNT2=1 : LINE=1
  77. LINELENGTH=80 : LOWLIMIT=BEGIN
  78. Repeat 
  79.    FP=Hunt(LOWLIMIT To LIMIT,Chr$($9)) : Rem find and replace htabs 
  80.    If FP : Poke FP,T_A_B : LOWLIMIT=FP : End If : Rem with NULL  
  81. Until FP=0
  82. LOWLIMIT=BEGIN
  83. Repeat 
  84.    FP=Hunt(LOWLIMIT To LIMIT,Chr$($D)) : Rem find and replace crs   
  85.    If FP : Poke FP,E_O_PAR : LOWLIMIT=FP : End If : Rem with linefeeds 
  86. Until FP=0
  87. Repeat 
  88.    'this loop increments and records screen page numbers  
  89.    Repeat 
  90.       'this loop finds linefeeds and counts screen lines   
  91.       FQ=Hunt(POZ To POZ+LINELENGTH,Chr$($A))
  92.       If FQ=0
  93.          SPC=Hunt(POZ+(LINELENGTH-15) To POZ+LINELENGTH,Chr$($20))
  94.          If SPC and WORDWRAP
  95.             POZ=SPC : Rem course wordwrap  
  96.          Else 
  97.             Add POZ,LINELENGTH
  98.          End If 
  99.       Else 
  100.          POZ=FQ+1
  101.       End If 
  102.       Inc LINE
  103.    Until LINE=20
  104.    PAGEADD(PAGENUM)=POZ : Inc PAGENUM : LINE=1
  105. Until POZ=>LIMIT or Key State(69)
  106. If POZ<LIMIT : Bell : Locate ,5 : Change Mouse 24 : Rem must have aborted
  107.    Centre "FILE ABORTED!" : Sprite Off 8 : Wait 50 : Goto STRT
  108. End If 
  109. POZ=Start(16)-1 : CHAR=Peek(BEGIN)
  110. LINE=1 : HIGHPAGE=PAGENUM-1 : PAGEADD(HIGHPAGE)=LIMIT
  111. Bob Off 8 : Gosub STATS : Change Mouse 24
  112. MAINLOOP:
  113. Multi Wait 
  114. Screen 1 : Menu On 
  115. PAGENUM=0 : Gosub FILETOP
  116. Screen 0 : Z=Mouse Zone : Screen 1
  117. Timer=1 : XPOZ=X Mouse
  118. Do 
  119.    If Amos Here
  120.       If XPOZ<>X Mouse : Timer=1 : XPOZ=X Mouse : Screen Show : Screen Show 0 : End If 
  121.       If Timer>8000
  122.          Colour Back 0 : Screen Hide 0 : Screen Hide 1 : Hide On : BLANKED=True
  123.       Else 
  124.          If BLANKED
  125.             Screen Show 0 : Screen Show 1 : Show On : Colour Back Colour(0)
  126.             BLANKED=False
  127.          End If 
  128.       End If 
  129.       Screen 0 : Z=Mouse Zone : Screen 1
  130.       If Key State(77) or(Z=2 and Mouse Key=1)
  131.          Bob 1,,,8
  132.          If POZ<LIMIT and PAGENUM<HIGHPAGE : Inc PAGENUM : Gosub FWARD : End If 
  133.          Bob 1,,,1
  134.       End If 
  135.       If Key State(76) or(Z=3 and Mouse Key=1)
  136.          Bob 2,,,9
  137.          If POZ>BEGIN and PAGENUM>1 : Dec PAGENUM : Gosub FWARD : End If 
  138.          Bob 2,,,2
  139.       End If 
  140.       If Key State(80) or(Z=6 and Mouse Key=1)
  141.          REQUEST$=" LOAD A NEW FILE " : Gosub REQUEST
  142.          If FLAG1=True
  143.             Bell : Bob 5,,,14 : Wait 40 : Goto STRT
  144.          End If 
  145.       End If 
  146.       If Key State(20) or(Z=5 and Mouse Key=1) : Bell : Gosub FILETOP : End If 
  147.       If Key State(53) or(Z=4 and Mouse Key=1) : Bell : Gosub FILEBOT : End If 
  148.       If Key State(25) or(Z=7 and Mouse Key=1) : Bell : Gosub PRNTIT : End If 
  149.       If Key State(16) or(Z=8 and Mouse Key=1)
  150.          REQUEST$=" QUIT TEXVIEW II" : Gosub REQUEST
  151.          If FLAG1=True
  152.             Bell : Bob 7,,,12 : Wait 40 : Default : Erase 16 : End 
  153.          End If 
  154.       End If 
  155.       If Key State(95)
  156.          Bell : Gosub HELP
  157.       End If 
  158.       If Mouse Key
  159.          If Z=1 or Scin(X Mouse,Y Mouse)=1 : Gosub GADG : End If 
  160.       End If 
  161.       If Key State(17) or(Z=13 and Mouse Key=1)
  162.          Rem rough wordwrap 
  163.          Swap WORDWRAP,WRAPDUMMY : Bell : Wait 50
  164.          Goto BEGINFMAT
  165.       End If 
  166.       If Z=11 and Mouse Key=1
  167.          Bell : Swap E_O_PAR,EOP_DUMMY
  168.          Goto RELOAD
  169.       End If 
  170.       If Z=12 and Mouse Key=1
  171.          Bell : Swap T_A_B,T_A_B_DUMMY
  172.          Goto RELOAD
  173.       End If 
  174.    End If 
  175. Loop 
  176. FWARD:
  177. Screen 1 : Change Mouse 25
  178. Ink 0,1,2 : Cls : Pen 1 : Paper 0
  179. POZ=PAGEADD(PAGENUM)
  180. Repeat 
  181.    TXT=Peek(POZ)
  182.    If TXT=10
  183.       Print Chr$(13)
  184.    Else 
  185.       If(X Curs>=LINELENGTH-15) and(TXT=$20) and(WORDWRAP)
  186.          Print Chr$($D)
  187.       Else 
  188.          Print Chr$(TXT);
  189.       End If 
  190.    End If 
  191.    Inc POZ
  192. Until POZ=PAGEADD(PAGENUM+1) or POZ=>LIMIT
  193. Inc LINE
  194. Gosub UDATE
  195. Gosub GADG2
  196. Screen 1 : Screen Show 1 : Change Mouse 24
  197. Return 
  198. UDATE:
  199. Screen 0
  200. P#=POZ-BEGIN : FL#=FILELENGTH : P#=Int((P#*100)/FL#) : If P#<1 Then P#=0
  201. Text 5,45,String$(" ",35)
  202. Text 5,45,Str$(P#)+"%"+" Screen"+Str$(PAGENUM)+" of"+Str$(HIGHPAGE-1)
  203. Screen 1
  204. Return 
  205. FILETOP:
  206. Bob 4,,,11
  207. PAGENUM=1
  208. FILEMID:
  209. Screen 1 : Ink 0,1,2 : Cls : Pen 1 : Paper 0
  210. Gosub FWARD
  211. Bob 4,,,4 : Screen 1 : Screen Show 1 : Screen 0
  212. Return 
  213. FILEBOT:
  214. Bob 3,,,10
  215. PAGENUM=HIGHPAGE-1
  216. Screen 1 : Cls 
  217. Rem For NUM=0 To Screen Height/SIZE
  218. Gosub FWARD
  219. Bob 3,,,3 : Screen 1 : Screen Show 1 : Screen 0
  220. Return 
  221. PRNTIT:
  222. Screen 0 : Bob 6,,,13
  223. If PICHERE
  224.    Screen 1 : Screen Show 0 : Screen To Front 0 : Change Mouse 25
  225.    E= Extension_20_0030(0,0 To Screen Width(1),Screen Height(1),XACROSS,YHIGH,MCOLS or MROWS or CEN or RATIO) : DE$= Extension_20_0006 
  226.    Screen 0 : Cls : Screen To Front 0
  227.    If E : Bell 30 : End If 
  228.    Centre "Printer Status :- "+DE$+Str$(Screen)
  229.    Print : Centre "PRESS A KEY" : While Mouse Key=0 and(Inkey$="") : Wend 
  230.    Cls : Change Mouse 24 : Screen To Back 
  231.    Return 
  232. End If 
  233. Gosub PREQUEST
  234. If FLAG2=True
  235.    Cls : Text 10,25,"PRINTING-"+Left$(P$,50)
  236.    Text 10,45,"Press Esc to Abort printing."
  237.    Screen 1 : POZI=PAGEADD(FIRSTPAGE) : Change Mouse 25
  238.    Open Out 1,DEV$
  239.    PCOUNT=1
  240.    Repeat 
  241.       CHA=Peek(POZI)
  242.       If CHA=10
  243.          Print #1,Chr$(13) : PCOUNT=1
  244.       Else 
  245.          If PCOUNT>=LINELENGTH-15 and WORDWRAP and CHA=$20
  246.             Print #1,Chr$(13) : PCOUNT=1
  247.          Else 
  248.             If CHA=T_A_B
  249.                Print #1,Space$(8); : Add PCOUNT,8
  250.             Else 
  251.                If CHA<>E_O_PAR : Print #1,Chr$(CHA); : Inc PCOUNT : End If 
  252.             End If 
  253.          End If 
  254.       End If 
  255.       Inc POZI
  256.    Until POZI=>PAGEADD(LASTPAGE+1) or(Key State(69))
  257.    Print #1,Chr$(12)
  258.    Close 1 : Screen 0
  259.    Cls : Text 10,45,"PRINTING FINISHED" : Change Mouse 24
  260.    Bell : Wait 50
  261.    Screen 1 : Gosub STATS
  262. End If 
  263. Bob 6,,,6
  264. Return 
  265. HELP:
  266. Screen Open 3,640,200,8,Hires : Curs Off : Screen Hide 0
  267. Get Sprite Palette 
  268. Screen 3 : Palette $0,$A0,$A00,$FFF,$66F,$F66,$6F6
  269. Cls 0 : Ink 3,0 : Pen 2 : Paper 0 : Gr Writing %0
  270. Text 2,7,Left$(TITL$,10) : Print : Ink 2,0
  271. Text 1,7,Left$(TITL$,10) : Print 
  272. Zoom 3,0,0,12*9,8 To 3,220,10,185+300,38 : Pen 6 : Paper 0 : Locate 0,0 : Cline 
  273. Ink 3 : Flash Off : Box 0,0 To Screen Width(3),Screen Height(3)
  274. Box 1,1 To Screen Width(3)-1,Screen Height(3)-1 : Ink 3
  275. Print : Print : Print : Print : Print : Centre " FILE DISPLAYER   May 92" : Print 
  276. Print : Centre "by" : Print 
  277. Print : Centre "K.SHARKEY"
  278. Print : Print 
  279. Centre "KEY FUNCTIONS" : Print 
  280. Print : Centre "<curs up>         Scrolls text display up one line.         " : Print 
  281. Centre "<curs down>       Scrolls text display down one line.       " : Print 
  282. Centre "<p>               Prints the file to the printer device.    " : Print 
  283. Centre "<q>               Quits Program.                            " : Print 
  284. Centre "<b>               Scrolls text display to bottom of file.   " : Print 
  285. Centre "<t>               Scrolls text display to top of file.      " : Print 
  286. Centre "<F1>              Quits this file and re-runs program.      " : Print 
  287. Pen 3
  288. Centre "<F2>              While viewing a picture gives graphic dump" : Print 
  289. Pen 6
  290. Centre "<Help>            This screen.                              " : Print 
  291. Pen 1 : Centre "or click the icons!"
  292. Print : Ink 7 : Pen 2 : Centre " PRESS A KEY/MOUSE KEY "
  293. Clear Key : Repeat : Until Inkey$>"" or Mouse Key
  294. Screen Close 3 : Screen Show 0 : Screen 1 : Curs Off 
  295. Return 
  296. GADG:
  297. Screen 0 : Set Slider 1,1,1,,1,1,1,
  298. If Mouse Key=1 and Mouse Zone
  299.    POS#=Y Screen(0,Y Mouse) : FIL_LENGTH#=HIGHPAGE
  300.    STRNG=Int(FIL_LENGTH#*POS#)/Screen Height(0)
  301.    If STRNG<=1 : STRNG=1 : End If 
  302.    If STRNG>=HIGHPAGE : STRNG=HIGHPAGE : End If 
  303.    Screen 1 : Cls : PAGENUM=STRNG : Gosub FILEBOT
  304. End If 
  305. If STRNG<HIGHPAGE
  306.    Screen 1 : Cls : PAGENUM=STRNG : Gosub FILEMID
  307. End If 
  308. Screen 0 : Set Slider 4,5,1,,1,5,1, : Gosub GADG2
  309. Screen 1
  310. Return 
  311. STATS:
  312. Sprite Off 8
  313. Screen 0 : Get Sprite Palette : Cls 
  314. Set Font 0 : Set Text %100
  315. Pen 2
  316. Ink 5 : Text 10,25,"VIEWING -"+Left$(P$,50)
  317. Text 10,35,"BYTES -"+Str$(FILELENGTH)
  318. Ink 3 : Box 0,0 To Screen Width(0)-21,Screen Height(0)-1
  319. Box 1,1 To Screen Width(0)-22,Screen Height(0)-2
  320. Bar 0,Screen Height(0)-4 To Screen Width(0)-21,Screen Height(0)
  321. Box 3,14 To Screen Width(0)-22,50 : Ink 0
  322. Ink 0 : Set Pattern 2 : Paint 5,5
  323. Ink 7 : Set Font 1 : Set Text %10 : Gr Writing 0
  324. Text(Screen Width(0)/2-T/2)+10,10,TITL$
  325. Ink 3 : Text(Screen Width(0)/2-T/2)+11,10,TITL$
  326. Set Font 0 : Ink 5
  327. CONT1$="TAB "+Chr$(T_A_B) : CONT2$=" CR "+Chr$(E_O_PAR)
  328. WW1$=" WORDWRAP "+STAT$(Abs(WORDWRAP))
  329. Locate 1,6 : Print Zone$(CONT2$,11);
  330. Locate 7,6 : Print Zone$(CONT1$,12);
  331. Locate 13,6 : Print Zone$(WW1$,13);
  332. Set Text %100 : Gr Writing 1
  333. Screen 0
  334. SETUPBOBS:
  335. XX=380 : YY=30
  336. Bob 1,XX,YY,1
  337. XX=XX+32 : Bob 2,XX,YY,2
  338. XX=XX+32 : Bob 3,XX,YY,3
  339. XX=XX+32 : Bob 4,XX,YY,4
  340. XX=XX+32 : Bob 5,XX,YY,7
  341. XX=XX+32 : Bob 6,XX,YY,6
  342. XX=XX+32 : Bob 7,XX,YY,5
  343. Bob 13,140,2,19
  344. Return 
  345. GADG2:
  346. Screen 0 : Screen Show 0
  347. QW=PAGENUM : NUMSTRNGS=HIGHPAGE
  348. If QW<0 Then QW=1
  349. If QW>=NUMSTRNGS Then QW=NUMSTRNGS
  350. Vslider Screen Width(0)-20,0 To Screen Width(0)-2,Screen Height(0),NUMSTRNGS-1,QW-1,1
  351. Return 
  352. REQUEST:
  353. Bell 50 : Screen Open 2,300,60,8,Hires : Curs Off : Screen Display 2,,230,,
  354. Get Sprite Palette : Limit Mouse 128,230 To 447,289
  355. Flash Off : Colour 3,$FFF
  356. Set Pattern 2 : Ink 1,0 : Cls 0
  357. Bar 4,(Screen Height(2)-4)/2 To Screen Width(2)-5,(Screen Height(2)-4)
  358. FLAG1=False : Reserve Zone 2
  359. Pen 3 : Paper 0
  360. Print : Centre REQUEST$
  361. Print : Centre "ARE YOU SURE?"
  362. Inverse On : Locate 11,5 : Print Border$(Zone$("YES",1),1);
  363. Locate 22,5 : Print Border$(Zone$("NO!",2),1); : Inverse Off 
  364. Ink 1 : Box 0,0 To Screen Width(2)-1,Screen Height(2)-4
  365. Box 4,2 To Screen Width(2)-5,Screen Height(2)-6
  366. LUPE1:
  367. GG=Mouse Zone : MK=Mouse Key
  368. If(GG=1 and MK=1) or Key State(21) Then FLAG1=True : Goto GBAK
  369. If(GG=2 and MK=1) or Key State(54) Then FLAG1=False : Goto GBAK
  370. Goto LUPE1
  371. GBAK:
  372. Reset Zone : Screen Close 2
  373. Return 
  374. PREQUEST:
  375. Bell 50 : Screen Open 2,300,60,8,Hires : Curs Off : Screen Display 2,,230,,
  376. Get Sprite Palette 
  377. Flash Off : Colour 3,$FFF
  378. Set Pattern 2 : Ink 1,0 : Cls 0 : FIRSTPAGE=1 : LASTPAGE=HIGHPAGE-1
  379. Bar 4,(Screen Height(2)-4)/2 To Screen Width(2)-5,(Screen Height(2)-4)
  380. FLAG1=False : Reserve Zone 13
  381. Pen 3 : Paper 0
  382. Print : Centre "HOW MUCH DO YOU WANT TO PRINT?"
  383. Locate 12,2 : Print Zone$("<",4);
  384. Locate 13,2 : Print Zone$(">",5);
  385. Locate 24,2 : Print Zone$("<",6);
  386. Locate 25,2 : Print Zone$(">",7);
  387. Locate 14,2 : Print FIRSTPAGE; : Locate 26,2 : Print LASTPAGE;
  388. Locate 5,2 : Print "SCREEN"; : Locate 18,2 : Print "TO";
  389. Inverse On : Locate 16,5 : Print Border$(Zone$("ALL",1),1);
  390. Locate 30,5 : Print Border$(Zone$("NONE",2),1);
  391. Locate 2,5 : Print Border$(Zone$("OK",3),1); : Inverse Off 
  392. Ink 1 : Box 0,0 To Screen Width(2)-1,Screen Height(2)-4
  393. Box 4,2 To Screen Width(2)-5,Screen Height(2)-6
  394. LUPE2:
  395. GG=Mouse Zone : MK=Mouse Key
  396. If(GG=1 and MK=1) or Key State(21) Then FLAG2=True : LASTPAGE=HIGHPAGE-1 : Goto GBAK1
  397. If(GG=2 and MK=1) or Key State(54) Then FLAG2=False : Bell : Wait 25 : Goto GBAK1
  398. If GG=3 and MK=1 Then FLAG2=True : Goto GBAK1
  399. If GG=4 and MK=1
  400.    Dec FIRSTPAGE : Wait 15
  401.    If FIRSTPAGE<1 : FIRSTPAGE=1 : End If 
  402.    Locate 14,2 : Print "   " : Locate 14,2 : Print FIRSTPAGE;
  403. End If 
  404. If GG=5 and MK=1
  405.    Inc FIRSTPAGE : Wait 15
  406.    If FIRSTPAGE>LASTPAGE : FIRSTPAGE=LASTPAGE : End If 
  407.    Locate 14,2 : Print "   " : Locate 14,2 : Print FIRSTPAGE;
  408. End If 
  409. If GG=6 and MK=1
  410.    Dec LASTPAGE : Wait 15
  411.    If LASTPAGE<FIRSTPAGE : LASTPAGE=FIRSTPAGE : End If 
  412.    Locate 26,2 : Print "   " : Locate 26,2 : Print LASTPAGE;
  413. End If 
  414. If GG=7 and MK=1
  415.    Inc LASTPAGE : Wait 15
  416.    If LASTPAGE>HIGHPAGE-1 : LASTPAGE=HIGHPAGE-1 : End If 
  417.    Locate 26,2 : Print "   " : Locate 26,2 : Print LASTPAGE;
  418. End If 
  419. Goto LUPE2
  420. GBAK1:
  421. Reset Zone : Screen Close 2
  422. Return 
  423. Procedure ERRR
  424.    Screen Open 2,300,60,8,Lowres : Curs Off : Screen Display 2,,230,,
  425.    Get Sprite Palette 
  426.    Cls 
  427.    Q=Errn
  428.    While RED<>999
  429.       Read RED,ST$
  430.       If RED=Q Then ERR$=Str$(RED)+"-"+ST$
  431.    Wend 
  432.    Bell 40 : Wait 15 : Bell 30 : Pen 5 : Locate ,2 : Centre "OOPS: "+ERR$ : Locate ,4
  433.    Inverse On : Pen 3 : Centre "PRESS ANY KEY."
  434.    Ink 3 : Box 0,0 To Screen Width(2)-1,Screen Height(2)-4
  435.    Box 4,2 To Screen Width(2)-5,Screen Height(2)-6
  436.    Clear Key : Repeat : Until Inkey$>"" or Mouse Key
  437.    Inverse Off 
  438.    P$="" : Screen Close 2
  439.    Data 24,"Out of memory",11,"No variable space",33,"Out of data",93,"No disk in drive"
  440.    Data 29,"Overflow",47,"Screen not open",23,"Illegal funct",21,"String too long"
  441.    Data 96,"File already open",91,"Read protected file",97,"File not open"
  442.    Data 80,"Directory not found",83,"Unvalidated disk",20,"Division by zero"
  443.    Data 100,"End of file?",95,"Unidentified format",86,"Device not here!"
  444.    Data 30,"Bad IFF format",32,"Cannot fit picture",31,"IFF compression not known"
  445.    Data 82,"Illegal file name used",92,"Unrecognised disk format",94,"I/O Error"
  446.    Data 81,"File not found",999,"-----"
  447.    Resume Label 
  448. End Proc
  449. PIXMANAGE:
  450. On Menu Off : Menu Off : Timer=1 : XPOZ=X Mouse : FLAG2=False
  451. While Inkey$="" and Mouse Key=0 : 
  452.    If Timer>4000 Then Screen Hide Else Screen Show 
  453.    If XPOZ<>X Mouse Then Timer=1 : XPOZ=X Mouse : Screen Show 
  454. Wend 
  455. If Key State(81) Then Gosub SETPREFS
  456. If FLAG2 : Gosub PRNTIT : FLAG2=False : End If 
  457. If Mouse Key=1 or Key State(69)
  458.    REQUEST$=" FINISHED WITH PIC "
  459.    Gosub REQUEST : Screen 1
  460.    Wait 50 : Limit Mouse : If FLAG1=True : Goto RET6 : End If 
  461. End If 
  462. If Mouse Key=2
  463.    Screen Display 1,X Mouse,Y Mouse,Screen Width(1),Screen Height(1)
  464. End If 
  465. Goto PIXMANAGE
  466. RET6:
  467. Return 
  468. MUZMANAGE:
  469. On Menu On : Menu On : Screen 4
  470. V0=Vumeter(0)
  471. V1=Vumeter(1)
  472. V2=Vumeter(2)
  473. V3=Vumeter(3)
  474. Vslider 1,10 To 20,Screen Height-10,64,0,V0
  475. Vslider 25,10 To 45,Screen Height-10,64,0,V1
  476. Vslider 50,10 To 70,Screen Height-10,64,0,V2
  477. Vslider 75,10 To 95,Screen Height-10,64,0,V3
  478. If Timer>64 : Timer=0 : End If 
  479. Rainbow 1,Timer,40,255
  480. Screen Swap : Wait Vbl 
  481. If Mouse Key=1 or Key State(69)
  482.    REQUEST$=" FINISHED WITH MUSIC "
  483.    Gosub REQUEST : Wait 50 : If FLAG1=True : Goto RET7 : End If 
  484. End If 
  485. Goto MUZMANAGE
  486. RET7:
  487. Music Off : Screen Close 4 : Return 
  488. QUITIT:
  489. If Choice(2)=1 or FROM_IDL
  490.    REQUEST$=" FINISHED WITH TEXVIEW II" : Gosub REQUEST
  491.    If FLAG1=True
  492.       Bell : Fade 3 : Screen Hide 1 : Wait 40 : Default : Erase 16 : End 
  493.    End If 
  494.    On Menu On 
  495. End If 
  496. Return 
  497. IDLE:
  498. FROM_IDL=True
  499. Gosub HELP : Clear Key 
  500. Gosub QUITIT
  501. FROM_IDL=False
  502. Return 
  503. SETPREFS:
  504. QL=Screen : Screen 0 : Curs Off : Screen Show(0) : Cls 0 : Pen 2 : Paper 0
  505. Screen To Front(0) : Box 0,0 To Screen Width-1,Screen Height-1
  506. Centre "CLICK TO ALTER GRAPHIC DUMP SIZE PREFERENCES THEN ON OK"
  507. Locate 30,6 : Print "L/MOUSE X 1,R/MOUSE X 10,BOTH X 100";
  508. Pen 1 : Limit Mouse : Reserve Zone : Reserve Zone 13
  509. Gosub REFRESH
  510. Do 
  511.    If Mouse Key=1 and Mouse Zone
  512.       MZ=Mouse Zone
  513.       If MZ=1
  514.          Swap RATIO,STORED_RATIO
  515.          If RATIO
  516.             PATT$="YES" : Gosub REFRESH
  517.          Else 
  518.             PATT$="NO " : Gosub REFRESH
  519.          End If 
  520.          Bell Abs(80)
  521.          While Mouse Key : Wend 
  522.       End If 
  523.       If MZ=3
  524.          Locate 16,4 : 
  525.          Inverse On : Print Border$(Zone$("RESET TO DEFAULT PREFS",3),1)
  526.          Inverse Off : XACROSS=8000 : YHIGH=4000 : MCOLS=$1 : MROWS=$2
  527.          CEN=$40 : RATIO=$80 : STORED_RATIO=0 : PATT$="YES" : Bell 80
  528.          RT=Colour(0) : Colour 0,$F00 : Wait 5 : Colour 0,RT : Wait 100
  529.          Gosub REFRESH
  530.       End If 
  531.       If MZ=8 : Add XACROSS,1,0 To 10000 : Gosub REFRESH : End If 
  532.       If MZ=9 : Add XACROSS,-1,0 To 10000 : Gosub REFRESH : End If 
  533.       If MZ=10 : Add YHIGH,1,0 To 10000 : Gosub REFRESH : End If 
  534.       If MZ=11 : Add YHIGH,-1,0 To 10000 : Gosub REFRESH : End If 
  535.    If MZ=4 : FLAG2=False : MZ=12 Else FLAG2=True : End If 
  536.       If MZ=12 : Bell : Cls : Screen Hide 0
  537.          Screen QL
  538.          Return 
  539.       End If 
  540.    End If 
  541.    If Mouse Key=3 Then FACTOR=100 Else FACTOR=10
  542.    If Mouse Key=2 or Mouse Key=3 and MZ
  543.       If MZ=8 : Add XACROSS,FACTOR,0 To 10000 : Gosub REFRESH : End If 
  544.       If MZ=9 : Add XACROSS,-(FACTOR),0 To 10000 : Gosub REFRESH : End If 
  545.       If MZ=10 : Add YHIGH,FACTOR,0 To 10000 : Gosub REFRESH : End If 
  546.       If MZ=11 : Add YHIGH,-(FACTOR),0 To 10000 : Gosub REFRESH : End If 
  547.    End If 
  548. Loop 
  549. Return 
  550. REFRESH:
  551. Locate 16,4 : Print Border$(Zone$("WB/PREFS = other prefs",3),1)
  552. Locate 40,2 : Print Using "#####";XACROSS;
  553. Print " ACROSS X 1/1000 Inch ";
  554. Inverse On : Print Zone$(" + ",8); : Print Zone$(" - ",9);
  555. Inverse Off 
  556. Locate 40,4 : Print Using "#####";YHIGH;
  557. Print "   DOWN X 1/1000 Inch "; : Inverse On 
  558. Print Zone$(" + ",10); : Print Zone$(" - ",11);
  559. Locate 2,5 : Print Border$(Zone$(" OK ",12),1)
  560. Locate 8,5 : Print Border$(Zone$("CANCEL",4),1)
  561. Locate 1,2 : Print "CORRECT ASPECT "; : Locate 17,2
  562. Inverse On : Print Zone$((PATT$),1); : Inverse Off : Print " "+Hex$(RATIO)
  563. Return 
  564. Procedure _COPYRIGHT
  565.    Cls 0 : Screen Open 7,320,40,16,Lowres : Hide 
  566.    Get Sprite Palette : Colour 0,0 : Screen To Front 7
  567.    Pen 2 : Paper 1 : Cls : Curs Off 
  568.    Bob 1,133,17,20
  569.    Print : Centre "THIS PROGRAM WAS WRITTEN USING"
  570.    Box 0,0 To Screen Width-1,Screen Height-1
  571.    For TY=300 To 135 Step -1 : Screen Display 7,,TY,, : Wait 1 : Next 
  572.    Centre "GRAPHIC DUMP CREDIT - A.GRANT/F.Lionet"
  573.    For TY=135 To 30 Step -1 : Screen Display 7,,TY,, : Wait 1 : Next 
  574. Fade 5 : Wait 15 : Screen Close 7 : Show 
  575. End Proc