home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AMOS PD CD
/
amospdcd.iso
/
551-575
/
apd561
/
textdis_iv
/
textdis_iv.amosSourceCode
< prev
Wrap
AMOS Source Code
|
1991-07-19
|
7KB
|
225 lines
Set Buffer 100
STRT:
Screen Open 0,100,100,2,Lowres
Limit Mouse 128,49 To 448,289 : P$="TEXTDIS_IV" : Get Rom Fonts
'FILE DISPLAYER for files up to 70000 Bytes
'BY K. R. SHARKEY
'19 July 1991
Screen Open 1,640,200,8,Hires : Screen Close 0
LL=%1001001001 : Set Curs LL,,LL,,LL,,LL,
NUMSCRNS=2
Palette $78,$78,$0,,$10,$100 : Curs Off : Pen 2 : Paper 1 : Cls
Colour Back $78 : Screen Open 2,640,50,8,Hires : Flash Off
Palette $78,$0,$78,$F76,$999,$F33,$FB0,$FFF,$FFF : Screen 2 : Curs Off : Cls : Set Text %11
Set Slider 4,5,1,,1,5,1,
Vslider Screen Width(2)-20,0 To Screen Width(2)-2,Screen Height(2),NUMSTRNGS,STRNG,1
Reserve Zone 1 : Set Font 1
Set Zone 1,Screen Width(2)-20,0 To Screen Width(2)-2,Screen Height :
Set Text %11
TITL$=P$+" TEXT DISPLAY by K.SHARKEY" : T=Text Length(TITL$)
Ink 5 : Text Screen Width(2)/2-T/2,10,TITL$ : Pen 2 : Set Text %100
Screen Display 2,132,230,, : Set Font 0
Ink 7 : Box 1,1 To Screen Width(2)-22,Screen Height(2)-1
Box 0,0 To Screen Width(2)-21,Screen Height(2)-2
Screen 1
NAME:
NAME$=Fsel$("*.doc","","TEXTDIS_IV","Select a file to view")
If(NAME$="") and(CURRFILE$="") Then Goto NAME
If NAME$>""
CURRFILE$=NAME$
Else
NAME$=CURRFILE$
End If
Set Input 10,-1
Open In 1,NAME$
FILE_LENGTH=Lof(1) : TL=FILE_LENGTH
If FILE_LENGTH>80000 Then FILE_LENGTH=80000 : TRUNCATE=True
E=0 : NUMSTRNGS=(FILE_LENGTH/80)+3000
Dim TXT$(NUMSTRNGS)
For X=1 To NUMSTRNGS : TXT$(X)=Space$(1) : Next
Close 1
Erase 16
If Chip Free+Fast Free>FILE_LENGTH+1024
Reserve As Work 16,FILE_LENGTH
Bload NAME$,Start(16)
End If
L=Start(16) : STRNG=1 : COUNT=1
Screen 2 : Pen 3 : Print : Print : Centre "WAIT-Formatting text" :
Print : Centre "<ESC> to abort" : Screen 1
Pen 2
For X=L To L+FILE_LENGTH
Screen 1
D=Peek(X)
If D=10 or D=13 Then D=13
If D<>13 Then Print Chr$(D); Else Print
If Y Curs=24 and X Curs=0 Then Goto FMAT
Next
FMAT:
For X=0 To 0+FILE_LENGTH
D=Peek(X+L) : If Key State(69) Then ABORT=True : Goto MAIN
If D=10 or D=13
TXT$(STRNG)=TXT$(STRNG)+Chr$(13) : COUNT=79 : Goto NXTSTRNG
End If
TXT$(STRNG)=TXT$(STRNG)+Chr$(D)
NXTSTRNG:
Inc COUNT : If COUNT=80 Then COUNT=1 : Inc STRNG : TXT$(STRNG)=""
Next
NUMSTRNGS=STRNG-1 : Screen 1
If TRUNCATE
TXT$(NUMSTRNGS-1)=" "
TXT$(NUMSTRNGS)=Chr$(15)+"File too long - FILE TRUNCATED"
End If
MAIN:
If NUMSTRNGS<=25
NUMSCRNS=1 : NUMSTRNGS=25
End If
If ABORT
TXT$(STRNG-1)=" "
TXT$(STRNG)=Chr$(15)+"FILE ABORTED" : NUMSTRNGS=STRNG
End If
Screen 2 : Set Text 0 : Ink 5 : Text 20,40,"LINE" : Set Text %100 :
Screen Open 0,640,200,8,Hires : Get Palette 1 : Screen Copy 1 To 0
Screen To Front 0 : Screen To Front 2
Gosub FILETOP : Screen To Front 1 : Screen Close 0 : Screen To Front 2
Screen 2 : Cls
Set Font 1 : Set Text %11
Ink 5 : Text Screen Width(2)/2-T/2,10,TITL$ : Pen 2
Set Font 0 : Set Text %0 : Ink 5 : Text 20,20,"FILE"
Set Text %100 : Ink 2 : Text 80,20,Left$(NAME$,60) : Set Text %0 : Ink 5
Text 20,29,"LENGTH" : Text 20,40,"LINE" :
Text 605,40,"%"
Set Text %100
Ink 2 : Text 80,29,Str$(FILE_LENGTH)+" Bytes"
Ink 7 : Box 1,1 To Screen Width(2)-22,Screen Height(2)-1
Box 0,0 To Screen Width(2)-21,Screen Height(2)-2
Do
If NUMSCRNS>1
While Scin(X Mouse,Y Mouse)=2 : Gosub GADG : Wend
End If
If(Key State(76) and STRNG>0) or(Mouse Key=2 and STRNG>0)
Screen Display 2,132,230,Screen Width-1,Screen Height-1 : Screen 1
CUE=Y Curs : STRNG=STRNG-CUE : MDE=0 : Gosub FWARD : Rem up arrow
End If
If(Key State(77) and STRNG<NUMSTRNGS) or(Mouse Key=1 and STRNG<NUMSTRNGS)
Screen Display 2,132,50,Screen Width,Screen Height : Screen 1
STRNG=STRNG+1 : MDE=1 : Gosub FWARD : Rem down arrow
End If
If Key State(16) Then Screen Close 1 : Erase 16 : Default : End : Rem Q
If Key State(80) Then Cls : Run P$ : Rem F1
If Key State(25) Then Gosub PRNTIT
If Key State(20) Then Gosub FILETOP
If Key State(53) Then Gosub FILEBOT
If Key State(95) Then Gosub HELP
Loop
FWARD:
If NUMSCRNS>1
Screen 1 : Curs On
If STRNG=>NUMSTRNGS : STRNG=NUMSTRNGS : End If
If STRNG=<0 : STRNG=0 : End If
If MDE=0
Locate 0,0 : Vscroll 1
Print TXT$(STRNG) : Dec STRNG : Locate 0,0
End If
If MDE=1
Print TXT$(STRNG)
End If
RET1:
Gosub DETAIL
End If
Return
BWARD:
Screen 1 : Cls : STRNG=STRNG-24
Gosub FWARD
Return
PRNTIT:
For PR=Start(16) To Start(16)+TL
K=Peek(PR) : If K=10 Then K=13
If K=13 Then Lprint Chr$(K) Else Lprint Chr$(K);
Next
Return
FILETOP:
STRNG=1
FILEMID:
Limit Mouse 128,160 To 448,190
Screen 1 : Cls
For F=0 To 24
Gosub DETAIL
Locate 0,F : Print TXT$(STRNG);
Inc STRNG
Next
Dec STRNG : Dec STRNG
Limit Mouse 128,49 To 448,289
Screen Display 2,132,230,Screen Width-1,Screen Height-1 : Screen 1
Return
FILEBOT:
Limit Mouse 128,160 To 448,190
STRNG=NUMSTRNGS-24
Screen 1 : Cls
For F=0 To 24
Gosub DETAIL
Locate 0,F : Print TXT$(STRNG);
Inc STRNG
Next
Dec STRNG : Dec STRNG
Limit Mouse 128,49 To 448,289
Screen Display 2,132,50,Screen Width,Screen Height : Screen 1
Return
DETAIL:
Screen 2 : Ink 3,1,0 : Set Font 0 : Set Text 0
Text 80,40,Space$(15)
Text 80,40,Str$(STRNG+1)+" of"+Str$(NUMSTRNGS+1)
P#=STRNG
FILE_LENGTH#=NUMSTRNGS
P#=Int((P#*100)/FILE_LENGTH#)
Text 570,40,String$(" ",4)
Text 570,40,Str$(P#)
Gosub GADG
Screen 1
Return
GADG:
Screen 2 : Screen Show 2
QW=STRNG
If QW<0 Then QW=1
If QW>=NUMSTRNGS Then QW=NUMSTRNGS
Vslider Screen Width(2)-20,0 To Screen Width(2)-2,Screen Height(2),NUMSTRNGS,QW,1
While Mouse Zone
If Mouse Key=1
POS#=Y Screen(2,Y Mouse) : FIL_LENGTH#=NUMSTRNGS
STRNG=Int(FIL_LENGTH#*POS#)/Screen Height(2)
If STRNG<=1 : STRNG=1 : End If
If STRNG>=NUMSTRNGS : STRNG=NUMSTRNGS : End If
If STRNG<=NUMSTRNGS-24
Gosub FILEMID
Else
Gosub FILEBOT
End If
End If
Wend
Screen 1
Return
HELP:
Screen Open 3,640,200,8,Hires : Curs Off : Screen Hide 2
Screen 3 : Palette $0,$A0,$A00,$FFF,$66F,$F66,$6F6
Cls 0 : Ink 2 : Pen 2 : Paper 0 : Set Pattern 5
Locate 0,0 : Print "TEXTDIS-IV" : Print : Ink 2
Zoom 3,0,0,12*9,8 To 3,220,10,185+300,40 : 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 "TEXT FILE DISPLAYER v4" : Print
Print : Centre "by" : Print
Print : Centre "K.SHARKEY"
Print : Print
Centre "KEY FUNCTIONS" : Print
Centre "<esc> Aborts formatting & displays aborted file." : 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
Centre "<Help> This screen. " : Print
Print : Ink 7 : Centre "PRESS A MOUSE KEY"
While Mouse Key=0 or Key State(0) : Wend
Screen Close 3 : Screen Show 2 : Curs Off
Return