home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AMOS PD CD
/
amospdcd.iso
/
576-600
/
apd588
/
texview_source.amos
/
texview_source.amosSourceCode
< prev
Wrap
AMOS Source Code
|
1992-08-06
|
20KB
|
575 lines
'TEXVIEW-II TEXT/PIC/MUSIC READER/VIEWER/PLAYER
' by
' K.SHARKEY
'with Printer dump by A.Grant
'JUNE 1 22:00 1992
If Screen=0 Then Cls 0
_COPYRIGHT
On Error Proc ERRR
P$=Command Line$
E_O_PAR=182 : T_A_B=187 : Rem change these to 182,187 to view control chars
EOP_DUMMY=1 : T_A_B_DUMMY=False : Rem ALTERNATE = 1,0
FIRSTTIME=True : WORDWRAP=True : WRAPDUMMY=False : Rem CHANGE TO FALSE FOR NO WORDWRAP
Dim PAGEADD(1000),STAT$(2)
STAT$(1)="ON " : STAT$(0)="OFF"
STRT:
Rem the following variables set the printer dump preferences
XACROSS=8000 : YHIGH=4000 : MCOLS=$1 : MROWS=$2
DEV$="PAR:" : Rem change to SER: if your printer is serial
CEN=$40 : RATIO=$80 : PATT$="YES" : Change Mouse 24
Resume Label STRT
Close Editor
Clear Key : Get Rom Fonts
RemLoad Fsel$("","textdis_sprites.abk","","LOAD A SPRITE BANK")
Rem use above line to install new bobs
SIZE=9
'Default Palette $0,$36,$FFF,$900,$956,$950,$45F,$FFF
Screen Open 0,640,60,8,Hires : Screen Display 0,,230,,
Menu$(1)=" QUIT " : Menu$(1,1)=" TEXVIEW II [Esc]" : Menu Key(1,1) To 69
On Menu Gosub QUITIT
Get Sprite Palette
Set Slider 4,5,1,,1,5,1, : Curs Off : Flash Off
Reserve Zone 13 : Set Font 1
TITL$="TEXVIEW II READER by K.SHARKEY"
Set Zone 1,Screen Width(0)-20,0 To Screen Width(0)-2,Screen Height(0)
XX=380 : YY=30
For JJ=2 To 8 : Set Zone JJ,XX,YY To XX+32,YY+19 : XX=XX+32 : Next JJ
If P$>"" and FIRSTTIME Then Goto GRABFILE
P$="" : P$=Fsel$("","","TEXVIEW II","SELECT A FILE")
Screen Open 1,640,180,8,Hires : Get Sprite Palette : Curs Off
GRABFILE:
FIRSTTIME=False
If P$="" Then Gosub IDLE : Goto STRT
Get Sprite Palette
Colour Back Colour(0) : Set Font 1
Curs Off : Screen To Front 0
Limit Mouse 128,230 To 447,289
Close : Open In 1,P$ : FILELENGTH=Lof(1)
B$=Input$(1,30) : PICHERE=False : Close 1
If Instr(B$,"FORM")
If Instr(B$,"ILBM")
PICHERE=True : Load Iff(P$),1 : Screen Hide 0 : Screen Show 1 : Limit Mouse
Screen Display 1,,30,Screen Width(1),Screen Height(1)
Gosub PIXMANAGE : Goto STRT
End If
End If
If Instr(B$,"AmBk")
If Instr(B$,"Music")
Load(P$),3 : Music 1
Screen 0 : Screen Hide 1 : Locate ,4 : Centre "Playing :- "+Left$(P$,60)
Ink 3 : Locate ,5 : Centre "Left Mouse to Exit" :
Screen Open 4,102,120,8,Hires : Screen Display 4,272,100,, : Get Sprite Palette
Double Buffer : Colour 0,0 : Curs Off
Set Rainbow 1,0,64,"","","(8,2,8)" : Rainbow 1,56,1,255
Gosub MUZMANAGE : Set Rainbow 1,0,64,"","","" : Goto STRT
End If
End If
RELOAD:
Erase 16 : Reserve As Work 16,FILELENGTH+1024 : Bload P$,16 : T=Text Length(TITL$)
BEGINFMAT:
BEGIN=Start(16) : POZ=BEGIN : LIMIT=POZ+FILELENGTH : COUNTER=1
Screen 0 : Cls : Print : Print : Centre " -PROCESSING TEXT" : Locate 0,4
On Menu On : Change Mouse 25
Sprite 8,238,237,15 : Print "FILE NAME :";P$
Locate 0,6 : Print "FILE SIZE :";FILELENGTH; : Screen 1
FMAT:
PAGENUM=2 : PAGEADD(1)=BEGIN : COUNT2=1 : LINE=1
LINELENGTH=80 : LOWLIMIT=BEGIN
Repeat
FP=Hunt(LOWLIMIT To LIMIT,Chr$($9)) : Rem find and replace htabs
If FP : Poke FP,T_A_B : LOWLIMIT=FP : End If : Rem with NULL
Until FP=0
LOWLIMIT=BEGIN
Repeat
FP=Hunt(LOWLIMIT To LIMIT,Chr$($D)) : Rem find and replace crs
If FP : Poke FP,E_O_PAR : LOWLIMIT=FP : End If : Rem with linefeeds
Until FP=0
Repeat
'this loop increments and records screen page numbers
Repeat
'this loop finds linefeeds and counts screen lines
FQ=Hunt(POZ To POZ+LINELENGTH,Chr$($A))
If FQ=0
SPC=Hunt(POZ+(LINELENGTH-15) To POZ+LINELENGTH,Chr$($20))
If SPC and WORDWRAP
POZ=SPC : Rem course wordwrap
Else
Add POZ,LINELENGTH
End If
Else
POZ=FQ+1
End If
Inc LINE
Until LINE=20
PAGEADD(PAGENUM)=POZ : Inc PAGENUM : LINE=1
Until POZ=>LIMIT or Key State(69)
If POZ<LIMIT : Bell : Locate ,5 : Change Mouse 24 : Rem must have aborted
Centre "FILE ABORTED!" : Sprite Off 8 : Wait 50 : Goto STRT
End If
POZ=Start(16)-1 : CHAR=Peek(BEGIN)
LINE=1 : HIGHPAGE=PAGENUM-1 : PAGEADD(HIGHPAGE)=LIMIT
Bob Off 8 : Gosub STATS : Change Mouse 24
MAINLOOP:
Multi Wait
Screen 1 : Menu On
PAGENUM=0 : Gosub FILETOP
Screen 0 : Z=Mouse Zone : Screen 1
Timer=1 : XPOZ=X Mouse
Do
If Amos Here
If XPOZ<>X Mouse : Timer=1 : XPOZ=X Mouse : Screen Show : Screen Show 0 : End If
If Timer>8000
Colour Back 0 : Screen Hide 0 : Screen Hide 1 : Hide On : BLANKED=True
Else
If BLANKED
Screen Show 0 : Screen Show 1 : Show On : Colour Back Colour(0)
BLANKED=False
End If
End If
Screen 0 : Z=Mouse Zone : Screen 1
If Key State(77) or(Z=2 and Mouse Key=1)
Bob 1,,,8
If POZ<LIMIT and PAGENUM<HIGHPAGE : Inc PAGENUM : Gosub FWARD : End If
Bob 1,,,1
End If
If Key State(76) or(Z=3 and Mouse Key=1)
Bob 2,,,9
If POZ>BEGIN and PAGENUM>1 : Dec PAGENUM : Gosub FWARD : End If
Bob 2,,,2
End If
If Key State(80) or(Z=6 and Mouse Key=1)
REQUEST$=" LOAD A NEW FILE " : Gosub REQUEST
If FLAG1=True
Bell : Bob 5,,,14 : Wait 40 : Goto STRT
End If
End If
If Key State(20) or(Z=5 and Mouse Key=1) : Bell : Gosub FILETOP : End If
If Key State(53) or(Z=4 and Mouse Key=1) : Bell : Gosub FILEBOT : End If
If Key State(25) or(Z=7 and Mouse Key=1) : Bell : Gosub PRNTIT : End If
If Key State(16) or(Z=8 and Mouse Key=1)
REQUEST$=" QUIT TEXVIEW II" : Gosub REQUEST
If FLAG1=True
Bell : Bob 7,,,12 : Wait 40 : Default : Erase 16 : End
End If
End If
If Key State(95)
Bell : Gosub HELP
End If
If Mouse Key
If Z=1 or Scin(X Mouse,Y Mouse)=1 : Gosub GADG : End If
End If
If Key State(17) or(Z=13 and Mouse Key=1)
Rem rough wordwrap
Swap WORDWRAP,WRAPDUMMY : Bell : Wait 50
Goto BEGINFMAT
End If
If Z=11 and Mouse Key=1
Bell : Swap E_O_PAR,EOP_DUMMY
Goto RELOAD
End If
If Z=12 and Mouse Key=1
Bell : Swap T_A_B,T_A_B_DUMMY
Goto RELOAD
End If
End If
Loop
FWARD:
Screen 1 : Change Mouse 25
Ink 0,1,2 : Cls : Pen 1 : Paper 0
POZ=PAGEADD(PAGENUM)
Repeat
TXT=Peek(POZ)
If TXT=10
Print Chr$(13)
Else
If(X Curs>=LINELENGTH-15) and(TXT=$20) and(WORDWRAP)
Print Chr$($D)
Else
Print Chr$(TXT);
End If
End If
Inc POZ
Until POZ=PAGEADD(PAGENUM+1) or POZ=>LIMIT
Inc LINE
Gosub UDATE
Gosub GADG2
Screen 1 : Screen Show 1 : Change Mouse 24
Return
UDATE:
Screen 0
P#=POZ-BEGIN : FL#=FILELENGTH : P#=Int((P#*100)/FL#) : If P#<1 Then P#=0
Text 5,45,String$(" ",35)
Text 5,45,Str$(P#)+"%"+" Screen"+Str$(PAGENUM)+" of"+Str$(HIGHPAGE-1)
Screen 1
Return
FILETOP:
Bob 4,,,11
PAGENUM=1
FILEMID:
Screen 1 : Ink 0,1,2 : Cls : Pen 1 : Paper 0
Gosub FWARD
Bob 4,,,4 : Screen 1 : Screen Show 1 : Screen 0
Return
FILEBOT:
Bob 3,,,10
PAGENUM=HIGHPAGE-1
Screen 1 : Cls
Rem For NUM=0 To Screen Height/SIZE
Gosub FWARD
Bob 3,,,3 : Screen 1 : Screen Show 1 : Screen 0
Return
PRNTIT:
Screen 0 : Bob 6,,,13
If PICHERE
Screen 1 : Screen Show 0 : Screen To Front 0 : Change Mouse 25
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
Screen 0 : Cls : Screen To Front 0
If E : Bell 30 : End If
Centre "Printer Status :- "+DE$+Str$(Screen)
Print : Centre "PRESS A KEY" : While Mouse Key=0 and(Inkey$="") : Wend
Cls : Change Mouse 24 : Screen To Back
Return
End If
Gosub PREQUEST
If FLAG2=True
Cls : Text 10,25,"PRINTING-"+Left$(P$,50)
Text 10,45,"Press Esc to Abort printing."
Screen 1 : POZI=PAGEADD(FIRSTPAGE) : Change Mouse 25
Open Out 1,DEV$
PCOUNT=1
Repeat
CHA=Peek(POZI)
If CHA=10
Print #1,Chr$(13) : PCOUNT=1
Else
If PCOUNT>=LINELENGTH-15 and WORDWRAP and CHA=$20
Print #1,Chr$(13) : PCOUNT=1
Else
If CHA=T_A_B
Print #1,Space$(8); : Add PCOUNT,8
Else
If CHA<>E_O_PAR : Print #1,Chr$(CHA); : Inc PCOUNT : End If
End If
End If
End If
Inc POZI
Until POZI=>PAGEADD(LASTPAGE+1) or(Key State(69))
Print #1,Chr$(12)
Close 1 : Screen 0
Cls : Text 10,45,"PRINTING FINISHED" : Change Mouse 24
Bell : Wait 50
Screen 1 : Gosub STATS
End If
Bob 6,,,6
Return
HELP:
Screen Open 3,640,200,8,Hires : Curs Off : Screen Hide 0
Get Sprite Palette
Screen 3 : Palette $0,$A0,$A00,$FFF,$66F,$F66,$6F6
Cls 0 : Ink 3,0 : Pen 2 : Paper 0 : Gr Writing %0
Text 2,7,Left$(TITL$,10) : Print : Ink 2,0
Text 1,7,Left$(TITL$,10) : Print
Zoom 3,0,0,12*9,8 To 3,220,10,185+300,38 : Pen 6 : Paper 0 : Locate 0,0 : Cline
Ink 3 : Flash Off : Box 0,0 To Screen Width(3),Screen Height(3)
Box 1,1 To Screen Width(3)-1,Screen Height(3)-1 : Ink 3
Print : Print : Print : Print : Print : Centre " FILE DISPLAYER May 92" : Print
Print : Centre "by" : Print
Print : Centre "K.SHARKEY"
Print : Print
Centre "KEY FUNCTIONS" : Print
Print : Centre "<curs up> Scrolls text display up one line. " : Print
Centre "<curs down> Scrolls text display down one line. " : Print
Centre "<p> Prints the file to the printer device. " : Print
Centre "<q> Quits Program. " : Print
Centre "<b> Scrolls text display to bottom of file. " : Print
Centre "<t> Scrolls text display to top of file. " : Print
Centre "<F1> Quits this file and re-runs program. " : Print
Pen 3
Centre "<F2> While viewing a picture gives graphic dump" : Print
Pen 6
Centre "<Help> This screen. " : Print
Pen 1 : Centre "or click the icons!"
Print : Ink 7 : Pen 2 : Centre " PRESS A KEY/MOUSE KEY "
Clear Key : Repeat : Until Inkey$>"" or Mouse Key
Screen Close 3 : Screen Show 0 : Screen 1 : Curs Off
Return
GADG:
Screen 0 : Set Slider 1,1,1,,1,1,1,
If Mouse Key=1 and Mouse Zone
POS#=Y Screen(0,Y Mouse) : FIL_LENGTH#=HIGHPAGE
STRNG=Int(FIL_LENGTH#*POS#)/Screen Height(0)
If STRNG<=1 : STRNG=1 : End If
If STRNG>=HIGHPAGE : STRNG=HIGHPAGE : End If
Screen 1 : Cls : PAGENUM=STRNG : Gosub FILEBOT
End If
If STRNG<HIGHPAGE
Screen 1 : Cls : PAGENUM=STRNG : Gosub FILEMID
End If
Screen 0 : Set Slider 4,5,1,,1,5,1, : Gosub GADG2
Screen 1
Return
STATS:
Sprite Off 8
Screen 0 : Get Sprite Palette : Cls
Set Font 0 : Set Text %100
Pen 2
Ink 5 : Text 10,25,"VIEWING -"+Left$(P$,50)
Text 10,35,"BYTES -"+Str$(FILELENGTH)
Ink 3 : Box 0,0 To Screen Width(0)-21,Screen Height(0)-1
Box 1,1 To Screen Width(0)-22,Screen Height(0)-2
Bar 0,Screen Height(0)-4 To Screen Width(0)-21,Screen Height(0)
Box 3,14 To Screen Width(0)-22,50 : Ink 0
Ink 0 : Set Pattern 2 : Paint 5,5
Ink 7 : Set Font 1 : Set Text %10 : Gr Writing 0
Text(Screen Width(0)/2-T/2)+10,10,TITL$
Ink 3 : Text(Screen Width(0)/2-T/2)+11,10,TITL$
Set Font 0 : Ink 5
CONT1$="TAB "+Chr$(T_A_B) : CONT2$=" CR "+Chr$(E_O_PAR)
WW1$=" WORDWRAP "+STAT$(Abs(WORDWRAP))
Locate 1,6 : Print Zone$(CONT2$,11);
Locate 7,6 : Print Zone$(CONT1$,12);
Locate 13,6 : Print Zone$(WW1$,13);
Set Text %100 : Gr Writing 1
Screen 0
SETUPBOBS:
XX=380 : YY=30
Bob 1,XX,YY,1
XX=XX+32 : Bob 2,XX,YY,2
XX=XX+32 : Bob 3,XX,YY,3
XX=XX+32 : Bob 4,XX,YY,4
XX=XX+32 : Bob 5,XX,YY,7
XX=XX+32 : Bob 6,XX,YY,6
XX=XX+32 : Bob 7,XX,YY,5
Bob 13,140,2,19
Return
GADG2:
Screen 0 : Screen Show 0
QW=PAGENUM : NUMSTRNGS=HIGHPAGE
If QW<0 Then QW=1
If QW>=NUMSTRNGS Then QW=NUMSTRNGS
Vslider Screen Width(0)-20,0 To Screen Width(0)-2,Screen Height(0),NUMSTRNGS-1,QW-1,1
Return
REQUEST:
Bell 50 : Screen Open 2,300,60,8,Hires : Curs Off : Screen Display 2,,230,,
Get Sprite Palette : Limit Mouse 128,230 To 447,289
Flash Off : Colour 3,$FFF
Set Pattern 2 : Ink 1,0 : Cls 0
Bar 4,(Screen Height(2)-4)/2 To Screen Width(2)-5,(Screen Height(2)-4)
FLAG1=False : Reserve Zone 2
Pen 3 : Paper 0
Print : Centre REQUEST$
Print : Centre "ARE YOU SURE?"
Inverse On : Locate 11,5 : Print Border$(Zone$("YES",1),1);
Locate 22,5 : Print Border$(Zone$("NO!",2),1); : Inverse Off
Ink 1 : Box 0,0 To Screen Width(2)-1,Screen Height(2)-4
Box 4,2 To Screen Width(2)-5,Screen Height(2)-6
LUPE1:
GG=Mouse Zone : MK=Mouse Key
If(GG=1 and MK=1) or Key State(21) Then FLAG1=True : Goto GBAK
If(GG=2 and MK=1) or Key State(54) Then FLAG1=False : Goto GBAK
Goto LUPE1
GBAK:
Reset Zone : Screen Close 2
Return
PREQUEST:
Bell 50 : Screen Open 2,300,60,8,Hires : Curs Off : Screen Display 2,,230,,
Get Sprite Palette
Flash Off : Colour 3,$FFF
Set Pattern 2 : Ink 1,0 : Cls 0 : FIRSTPAGE=1 : LASTPAGE=HIGHPAGE-1
Bar 4,(Screen Height(2)-4)/2 To Screen Width(2)-5,(Screen Height(2)-4)
FLAG1=False : Reserve Zone 13
Pen 3 : Paper 0
Print : Centre "HOW MUCH DO YOU WANT TO PRINT?"
Locate 12,2 : Print Zone$("<",4);
Locate 13,2 : Print Zone$(">",5);
Locate 24,2 : Print Zone$("<",6);
Locate 25,2 : Print Zone$(">",7);
Locate 14,2 : Print FIRSTPAGE; : Locate 26,2 : Print LASTPAGE;
Locate 5,2 : Print "SCREEN"; : Locate 18,2 : Print "TO";
Inverse On : Locate 16,5 : Print Border$(Zone$("ALL",1),1);
Locate 30,5 : Print Border$(Zone$("NONE",2),1);
Locate 2,5 : Print Border$(Zone$("OK",3),1); : Inverse Off
Ink 1 : Box 0,0 To Screen Width(2)-1,Screen Height(2)-4
Box 4,2 To Screen Width(2)-5,Screen Height(2)-6
LUPE2:
GG=Mouse Zone : MK=Mouse Key
If(GG=1 and MK=1) or Key State(21) Then FLAG2=True : LASTPAGE=HIGHPAGE-1 : Goto GBAK1
If(GG=2 and MK=1) or Key State(54) Then FLAG2=False : Bell : Wait 25 : Goto GBAK1
If GG=3 and MK=1 Then FLAG2=True : Goto GBAK1
If GG=4 and MK=1
Dec FIRSTPAGE : Wait 15
If FIRSTPAGE<1 : FIRSTPAGE=1 : End If
Locate 14,2 : Print " " : Locate 14,2 : Print FIRSTPAGE;
End If
If GG=5 and MK=1
Inc FIRSTPAGE : Wait 15
If FIRSTPAGE>LASTPAGE : FIRSTPAGE=LASTPAGE : End If
Locate 14,2 : Print " " : Locate 14,2 : Print FIRSTPAGE;
End If
If GG=6 and MK=1
Dec LASTPAGE : Wait 15
If LASTPAGE<FIRSTPAGE : LASTPAGE=FIRSTPAGE : End If
Locate 26,2 : Print " " : Locate 26,2 : Print LASTPAGE;
End If
If GG=7 and MK=1
Inc LASTPAGE : Wait 15
If LASTPAGE>HIGHPAGE-1 : LASTPAGE=HIGHPAGE-1 : End If
Locate 26,2 : Print " " : Locate 26,2 : Print LASTPAGE;
End If
Goto LUPE2
GBAK1:
Reset Zone : Screen Close 2
Return
Procedure ERRR
Screen Open 2,300,60,8,Lowres : Curs Off : Screen Display 2,,230,,
Get Sprite Palette
Cls
Q=Errn
While RED<>999
Read RED,ST$
If RED=Q Then ERR$=Str$(RED)+"-"+ST$
Wend
Bell 40 : Wait 15 : Bell 30 : Pen 5 : Locate ,2 : Centre "OOPS: "+ERR$ : Locate ,4
Inverse On : Pen 3 : Centre "PRESS ANY KEY."
Ink 3 : Box 0,0 To Screen Width(2)-1,Screen Height(2)-4
Box 4,2 To Screen Width(2)-5,Screen Height(2)-6
Clear Key : Repeat : Until Inkey$>"" or Mouse Key
Inverse Off
P$="" : Screen Close 2
Data 24,"Out of memory",11,"No variable space",33,"Out of data",93,"No disk in drive"
Data 29,"Overflow",47,"Screen not open",23,"Illegal funct",21,"String too long"
Data 96,"File already open",91,"Read protected file",97,"File not open"
Data 80,"Directory not found",83,"Unvalidated disk",20,"Division by zero"
Data 100,"End of file?",95,"Unidentified format",86,"Device not here!"
Data 30,"Bad IFF format",32,"Cannot fit picture",31,"IFF compression not known"
Data 82,"Illegal file name used",92,"Unrecognised disk format",94,"I/O Error"
Data 81,"File not found",999,"-----"
Resume Label
End Proc
PIXMANAGE:
On Menu Off : Menu Off : Timer=1 : XPOZ=X Mouse : FLAG2=False
While Inkey$="" and Mouse Key=0 :
If Timer>4000 Then Screen Hide Else Screen Show
If XPOZ<>X Mouse Then Timer=1 : XPOZ=X Mouse : Screen Show
Wend
If Key State(81) Then Gosub SETPREFS
If FLAG2 : Gosub PRNTIT : FLAG2=False : End If
If Mouse Key=1 or Key State(69)
REQUEST$=" FINISHED WITH PIC "
Gosub REQUEST : Screen 1
Wait 50 : Limit Mouse : If FLAG1=True : Goto RET6 : End If
End If
If Mouse Key=2
Screen Display 1,X Mouse,Y Mouse,Screen Width(1),Screen Height(1)
End If
Goto PIXMANAGE
RET6:
Return
MUZMANAGE:
On Menu On : Menu On : Screen 4
V0=Vumeter(0)
V1=Vumeter(1)
V2=Vumeter(2)
V3=Vumeter(3)
Vslider 1,10 To 20,Screen Height-10,64,0,V0
Vslider 25,10 To 45,Screen Height-10,64,0,V1
Vslider 50,10 To 70,Screen Height-10,64,0,V2
Vslider 75,10 To 95,Screen Height-10,64,0,V3
If Timer>64 : Timer=0 : End If
Rainbow 1,Timer,40,255
Screen Swap : Wait Vbl
If Mouse Key=1 or Key State(69)
REQUEST$=" FINISHED WITH MUSIC "
Gosub REQUEST : Wait 50 : If FLAG1=True : Goto RET7 : End If
End If
Goto MUZMANAGE
RET7:
Music Off : Screen Close 4 : Return
QUITIT:
If Choice(2)=1 or FROM_IDL
REQUEST$=" FINISHED WITH TEXVIEW II" : Gosub REQUEST
If FLAG1=True
Bell : Fade 3 : Screen Hide 1 : Wait 40 : Default : Erase 16 : End
End If
On Menu On
End If
Return
IDLE:
FROM_IDL=True
Gosub HELP : Clear Key
Gosub QUITIT
FROM_IDL=False
Return
SETPREFS:
QL=Screen : Screen 0 : Curs Off : Screen Show(0) : Cls 0 : Pen 2 : Paper 0
Screen To Front(0) : Box 0,0 To Screen Width-1,Screen Height-1
Centre "CLICK TO ALTER GRAPHIC DUMP SIZE PREFERENCES THEN ON OK"
Locate 30,6 : Print "L/MOUSE X 1,R/MOUSE X 10,BOTH X 100";
Pen 1 : Limit Mouse : Reserve Zone : Reserve Zone 13
Gosub REFRESH
Do
If Mouse Key=1 and Mouse Zone
MZ=Mouse Zone
If MZ=1
Swap RATIO,STORED_RATIO
If RATIO
PATT$="YES" : Gosub REFRESH
Else
PATT$="NO " : Gosub REFRESH
End If
Bell Abs(80)
While Mouse Key : Wend
End If
If MZ=3
Locate 16,4 :
Inverse On : Print Border$(Zone$("RESET TO DEFAULT PREFS",3),1)
Inverse Off : XACROSS=8000 : YHIGH=4000 : MCOLS=$1 : MROWS=$2
CEN=$40 : RATIO=$80 : STORED_RATIO=0 : PATT$="YES" : Bell 80
RT=Colour(0) : Colour 0,$F00 : Wait 5 : Colour 0,RT : Wait 100
Gosub REFRESH
End If
If MZ=8 : Add XACROSS,1,0 To 10000 : Gosub REFRESH : End If
If MZ=9 : Add XACROSS,-1,0 To 10000 : Gosub REFRESH : End If
If MZ=10 : Add YHIGH,1,0 To 10000 : Gosub REFRESH : End If
If MZ=11 : Add YHIGH,-1,0 To 10000 : Gosub REFRESH : End If
If MZ=4 : FLAG2=False : MZ=12 Else FLAG2=True : End If
If MZ=12 : Bell : Cls : Screen Hide 0
Screen QL
Return
End If
End If
If Mouse Key=3 Then FACTOR=100 Else FACTOR=10
If Mouse Key=2 or Mouse Key=3 and MZ
If MZ=8 : Add XACROSS,FACTOR,0 To 10000 : Gosub REFRESH : End If
If MZ=9 : Add XACROSS,-(FACTOR),0 To 10000 : Gosub REFRESH : End If
If MZ=10 : Add YHIGH,FACTOR,0 To 10000 : Gosub REFRESH : End If
If MZ=11 : Add YHIGH,-(FACTOR),0 To 10000 : Gosub REFRESH : End If
End If
Loop
Return
REFRESH:
Locate 16,4 : Print Border$(Zone$("WB/PREFS = other prefs",3),1)
Locate 40,2 : Print Using "#####";XACROSS;
Print " ACROSS X 1/1000 Inch ";
Inverse On : Print Zone$(" + ",8); : Print Zone$(" - ",9);
Inverse Off
Locate 40,4 : Print Using "#####";YHIGH;
Print " DOWN X 1/1000 Inch "; : Inverse On
Print Zone$(" + ",10); : Print Zone$(" - ",11);
Locate 2,5 : Print Border$(Zone$(" OK ",12),1)
Locate 8,5 : Print Border$(Zone$("CANCEL",4),1)
Locate 1,2 : Print "CORRECT ASPECT "; : Locate 17,2
Inverse On : Print Zone$((PATT$),1); : Inverse Off : Print " "+Hex$(RATIO)
Return
Procedure _COPYRIGHT
Cls 0 : Screen Open 7,320,40,16,Lowres : Hide
Get Sprite Palette : Colour 0,0 : Screen To Front 7
Pen 2 : Paper 1 : Cls : Curs Off
Bob 1,133,17,20
Print : Centre "THIS PROGRAM WAS WRITTEN USING"
Box 0,0 To Screen Width-1,Screen Height-1
For TY=300 To 135 Step -1 : Screen Display 7,,TY,, : Wait 1 : Next
Centre "GRAPHIC DUMP CREDIT - A.GRANT/F.Lionet"
For TY=135 To 30 Step -1 : Screen Display 7,,TY,, : Wait 1 : Next
Fade 5 : Wait 15 : Screen Close 7 : Show
End Proc