home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AMOS PD CD
/
amospdcd.iso
/
301-325
/
apd301
/
amos_text_v1.2
/
amos_text_v1.amosSourceCode
next >
Wrap
AMOS Source Code
|
1991-06-29
|
19KB
|
726 lines
Rem *********************************************************************
Rem ** AMOS Text by Bouch '91 (C) 1991 RIPOFFWARE SOFTWARE PRODUCTIONS **
Rem *********************************************************************
Rem
Rem VERSION 1.2
Rem
Set Buffer 11
Break Off
TITLE$=""
Dim LINES(2000),FILE$(50)
Procedure SET_UP_SCREEN
Shared TITLE$
Screen Open 1,320,50,8,Lowres
Curs Off
Flash Off
Unpack 10
Screen Display 1,130,250,320,50
Palette 0,$F00,$F0,$3F,$FFF,$BBB,$888,$444
Colour 17,$999
Colour 18,$555
Colour 19,$333
Screen Open 0,640,200,2,Hires
Colour 17,$999
Colour 18,$555
Colour 19,$333
Curs Off
Flash Off
Palette 0,$FFF
Pen 1
Paper 0
Cls
Set Rainbow 1,1,215,"(2,1,15)(1,0,150)(2,-1,15)","(2,1,15)(1,0,150)(2,-1,15)","(2,1,15)(1,0,150)(2,-1,15)"
Rainbow 1,0,40,215
Print Cdown$
Centre "-----AMOS TEXT READER-----(C) 1991 RIPOFFWARE-----BY DAVID BOUCHER-----"
Print Cdown$
Centre "LOADING FILE LIST....PLEASE WAIT..."
Print Cdown$
Screen 1
Reserve Zone 8
For B=1 To 6
Read X
Set Zone B,X,13 To X+12,25
Next
Data 149,163,184,198,219,232
Set Zone 7,265,2 To 275,35
Set Zone 8,253,2 To 263,35
Limit Mouse 128,50 To 447,290
INFO_LINE["WELCOME TO AMOS TEXT - BY DAVID BOUCHER"]
Do
P=0
LIST_DIR[":DOC_Files","*.DOC"]
If Param<0 Then REQUEST["ERROR:","CANNOT FIND "+Chr$(34)+":DOC_FILES"+Chr$(34),"DIRECTORY.","RETRY!","EXIT!"] : P=Param
If Param=0 Then REQUEST["ERROR:","CANNOT FIND ANY "+Chr$(34)+".DOC"+Chr$(34),"FILES.","RETRY!","EXIT!"] : P=Param
Exit If P=0
If P=2 Then Wait 10 : End
Loop
Screen 0
Cls
Bank To Menu 8
End Proc
Procedure SELECT_FILE
Shared TITLE$
Menu Off
INFO_LINE["LOAD TEXT FILE"]
Screen 0
Cls
Print Cdown$
Centre "-----AMOS TEXT READER-----(C) 1991 RIPOFFWARE-----BY DAVID BOUCHER-----"
Print Cdown$
If TITLE$<>"" Then ABORT$="ABORT!"
PT$=TITLE$
LIST_REQ["PICK A FILE TO LOAD","OK!",ABORT$]
T$=Param$
If T$="" Then Menu On : Pop Proc
Do
NEW_FILE[":DOC_Files/"+T$]
If Param=True
TITLE$=T$
Centre "DISPLAYING "+TITLE$
Print Cdown$
Centre "PLEASE WAIT WHILE I SORT THIS TEXT FILE OUT!"
Print Cdown$
INFO_LINE["WELCOME TO AMOS TEXT - BY DAVID BOUCHER"]
DEF_LINES
Exit
Else
REQUEST["ERROR:","COULD NOT LOAD",T$,"RETRY!","ABORT!"]
If Param=2 : Wait 10 : Pop Proc : End If
End If
Loop
Menu On
End Proc
Procedure MAINLOOP
Shared L,LINE,TITLE$,SEARCH$
If TITLE$="" Then Wait 10 : End
L=0
SEARCH$=""
PAGE_ON[24]
Menu$(5)=" "+TITLE$," "+TITLE$
Screen 1
Do
PANEL
If MES=0 Then INFO_LINE["PRESS HELP FOR MORE INFO"] : MES=2
CONTROL
DUMMY=Free
If MES=1 Then MES=0
C=Param
Screen 0
If C=2 and L<LINE-1 Then PAGE_ON[24] : C=0
If C=2 Then INFO_LINE["--END OF TEXT--"] : MES=1
If C=1 and L>24 Then PAGE_BACK[24] : C=0
If C=1 Then INFO_LINE["--START OF TEXT--"] : MES=1
If C=4 and L<LINE-1 Then PAGE_ON[1] : C=0
If C=4 Then INFO_LINE["--END OF TEXT--"] : MES=1
If C=3 and L>24 Then PAGE_BACK[1] : C=0
If C=5 and L>24
Cls
L=0
LED[5,1]
Screen 0
PAGE_ON[24]
LED[5,0]
C=0
End If
If C=5 Then INFO_LINE["--START OF TEXT--"] : MES=1
If C=6 and L<LINE-1
Cls
L=LINE-25
LED[6,1]
Screen 0
PAGE_ON[24]
LED[6,0]
End If
If C=6 Then INFO_LINE["--END OF TEXT--"] : MES=1
If C=7 Then Wait 10 : End
Screen 1
If L<24 Then L=24
If L=LINE Then L=LINE-1
If C=8 Then HELP[1] : MES=0
If C=9 Then HELP[2] : MES=0
If C=10 Then SEARCH : MES=0
If C=11 Then OUTPUT[1,LINE-1] : MES=1
Exit If C=12
Loop
End Proc
Procedure LIST_DIR[DR$,FILTER$]
Shared FILE$()
If Exist(DR$)
Dir$=DR$
FILE=1
FILTER$=Upper$(FILTER$)
FILE$=Upper$(Dir First$(FILTER$))
FILTER$=FILTER$-"*"
Do
Exit If FILE$=""
If Left$(FILE$,1)<>"*"
P=Instr(FILE$,FILTER$)+Len(FILTER$)-1
FILE$=Mid$(FILE$,2,P-1)
FILE$(FILE)=FILE$
Inc FILE
End If
FILE$=Upper$(Dir Next$)
Loop
End If
End Proc[FILE-1]
Procedure NEW_FILE[TITLE$]
If Exist(TITLE$)
Erase 9
Open In 1,TITLE$
L=Lof(1)
Close 1
Reserve As Work 9,L+2
Bload TITLE$,Start(9)
OK=True
End If
End Proc[OK]
Procedure DEF_LINES
Shared LINES(),LINE
For LINE=0 To 26
LINES(LINE)=0
Next
LINES(0)=Start(9)-1
LINE=1
L=Start(9)
Do
OL=L
L=Hunt(L+1 To Start(9)+Length(9),Chr$(10))
Exit If L=0
If OL+78<L Then L=OL+75
LINES(LINE)=L
Inc LINE
Exit If L>=Start(9)+Length(9)
Loop
LINES(LINE)=0
If LINE<25 Then LINE=25
End Proc
Procedure CONTROL
While Z=0
Clear Key
Do
K$=Inkey$
Z=Mouse Zone
M1=Choice(1)
M2=Choice(2)
If K$<>"" Then Z=0 : M2=0 : Exit
If Mouse Click=1 and Z>0 Then M2=0 : Exit
If Choice and M1=1 Then Z=0 : Z$="" : Exit
Loop
Z$=Lower$(K$)
SC=Scancode
If Z$="u" Then Z=1
If Z$="d" Then Z=2
If Z$=" " Then Z=2
If Z$=Chr$(30) Then Z=3
If Z$=Chr$(31) Then Z=4
If Z$="t" Then Z=5
If Z$="b" Then Z=6
If Z$="e" Then Z=7
If Z$=Chr$(27) Then Z=7
If M2=6 Then Z=7
If SC=95 Then Z=8
If M2=1 Then Z=8
If Z$="c" Then Z=9
If M2=2 Then Z=9
If Z$="s" Then Z=10
If M2=3 Then Z=10
If Z$="p" Then Z=11
If M2=4 Then Z=11
If Z$="l" Then Z=12
If M2=5 Then Z=12
Wend
End Proc[Z]
Procedure PRNT_LINE[PL]
Shared LINES()
If LINES(PL)>0
For CH=LINES(PL-1)+1 To LINES(PL)
L$=L$+Chr$(Peek(CH))
Next
Cline
If L$=Chr$(10) : Print : Else Print L$-Chr$(10) : End If
Else
Print
End If
End Proc
Procedure PAGE_ON[NOL]
Shared L,LINE
If NOL=24 Then LED[2,1] : Else LED[4,1]
Screen 0
Locate ,24
P=0
Do
Inc L
Inc P
Exit If L=LINE
PRNT_LINE[L]
Exit If P=NOL
Loop
If NOL=24 Then LED[2,0] : Else LED[4,0]
Screen 0
End Proc
Procedure PAGE_BACK[NOL]
Shared L,LINE
If NOL=24 Then LED[1,1] : Else LED[3,1]
Screen 0
P=0
Add L,-23
Do
Dec L
Inc P
Exit If L=0
Home
Print Cup$;
PRNT_LINE[L]
Exit If P=NOL
Loop
Add L,23
If NOL=24 Then LED[1,0] : Else LED[3,0]
Screen 0
End Proc
Procedure HELP[P]
Shared L
Screen 0
Cls
D=1
If P=1 Then Restore HELP : Else Restore CREDITS
If P=1 Then INFO_LINE["HELP SCREEN"] : Else INFO_LINE["CREDITS SCREEN"]
Do
Read DAT$
Exit If DAT$=""
Centre DAT$
Print
Loop
Clear Key
Do
Exit If Mouse Click<>0
Exit If Inkey$<>""
Loop
Cls
Add L,-24
PAGE_ON[24]
HELP:
Data "*************AMOS Text Version 1.2 - by David Boucher*************"
Data "* *"
Data "* Welcome to The AMOS Text text reader by David Boucher. *"
Data "* The program can be operated with either mouse or keyboard. *"
Data "* Use the mouse to select the icons on the panel below to move *"
Data "* Through the text. Extra options can be selected from a menu. *"
Data "* The program can also be operated using the following keys:- *"
Data "* *"
Data "* KEY TO PRESS... IN ORDER TO... *"
Data "* *"
Data "* D or SPACE Move down a page, *"
Data "* U Move up a page, *"
Data "* DOWN ARROW Move down a line, *"
Data "* UP ARROW Move up a line, *"
Data "* T Move to top of text, *"
Data "* B Move to bottom of text, *"
Data "* HELP Display this page, *"
Data "* C Display credits page, *"
Data "* S Search through text, *"
Data "* P Print, *"
Data "* L Load text file, *"
Data "* ESCAPE or E Exit AMOS Text. *"
Data "* *"
Data "***************************PRESS A KEY****************************"
Data ""
CREDITS:
Data " "
Data "************************************************"
Data "** AMOS Text Version 1.2 - by David Boucher **"
Data "** RIPOFFWARE SOFTWARE PRODUCTIONS **"
Data "************************************************"
Data " "
Data "AMOS Text Version 1.2 - (C) 1991 David Boucher."
Data " "
Data "AMOS TEXT - THE TEXT READER, DESIGNED AND CODED BY DAVID BOUCHER"
Data " "
Data "Placed in the Public Domain - FREELY DISTRIBUTABLE."
Data " "
Data " "
Data "Read "+Chr$(34)+"AMOS_TEXT.doc"+Chr$(34)+" for more info."
Data " "
Data " "
Data "Please send your comments, questions, suggestions,"
Data "bug-reports(?), PD software and MONEY to:"
Data " "
Data "DAVID BOUCHER, 37, SMITH STREET, LONGTON, STOKE-ON-TRENT,"
Data "STAFFORDSHIRE. ST3 1DR ENGLAND"
Data " "
Data " "
Data "PRESS A KEY"
Data ""
End Proc
Procedure OUTPUT[FIRST,LAST]
Shared LINES(),PRED
REQUEST["OUTPUT FILE TO PRINTER?","ARE YOU SURE?","","YES!","NO!"]
If Param=2 Then Pop Proc
Wait 20
If PRED=0
Do
Exit If Exist("SYS:")
REQUEST["PLEASE INSERT YOUR","BOOT DISK","IN ANY DRIVE","OK!","CANCEL!"]
If Param=2 : INFO_LINE["COULD NOT PRINT"] : Pop Proc : End If
Loop
End If
INFO_LINE["PRINTING..."]
For P=FIRST To LAST
L$=""
If LINES(P)>0
For CH=LINES(P-1)+1 To LINES(P)
L$=L$+Chr$(Peek(CH))
Next
If L$=Chr$(10) : Lprint : Else Lprint L$-Chr$(10) : End If
Else
Lprint
End If
Next
PRED=1
INFO_LINE["PRESS HELP FOR MORE INFO"]
End Proc
Procedure SEARCH
Shared SEARCH$,L,LINE,LINES(),PL,FOUND
Screen 0
STRING_REQ["ENTER STRING TO FIND","OK!","CANCEL!",SEARCH$]
S$=Param$
If S$="" Then Pop Proc
S$=Upper$(S$)
If S$=SEARCH$ Then PF=FOUND : Else PF=-1
SEARCH$=S$
PL=L-23
FOUND=0
Do
LINE$=""
L$=""
If LINES(PL)>0
For CH=LINES(PL-1)+1 To LINES(PL)
L$=L$+Chr$(Peek(CH))
Next
If L$=Chr$(10) : LINE$="" : Else LINE$=L$-Chr$(10) : End If
Else
LINE$=""
End If
LINE$=Upper$(LINE$)
If Instr(LINE$,SEARCH$)>0 and PL>PF Then FOUND=PL : Exit
Inc PL
If PL=LINE Then Exit
Loop
If FOUND=0 Then REQUEST["COULDN'T FIND STRING",SEARCH$,"","OK!",""] : Pop Proc
L=FOUND-1
If L>LINE-25 Then L=LINE-25
Cls
For NL=1 To 24
If L=FOUND-1 Then Pen 0 : Paper 1 : Else Pen 1 : Paper 0
PAGE_ON[1]
Next
Pen 1
Paper 0
Cline
End Proc
Procedure LED[NO,MD]
Screen 1
Ink MD
If NO=1 Then Bar 151,6 To 160,9
If NO=2 Then Bar 165,6 To 174,9
If NO=3 Then Bar 187,6 To 195,9
If NO=4 Then Bar 200,6 To 209,9
If NO=5 Then Bar 221,6 To 230,9
If NO=6 Then Bar 235,6 To 244,9
If NO=7 Then Bar 282,5 To 290,8
If NO=8 Then Bar 282,18 To 290,21
End Proc
Procedure PANEL
Shared L,LINE
Screen 1
Ink 0,6
L#=L-24
LINE#=LINE-25
If LINE#>0
PC#=L#/LINE#
End If
PC=Int(PC#*100)
PC$=Right$(("000"+Str$(PC)-" "),3)+"%"
Text 284,34,PC$
If L<25 Then LED[7,1] : Else LED[7,0]
If L=LINE-1 Then LED[8,1] : Else LED[8,0]
End Proc
Procedure INFO_LINE[TXT$]
TEMP=Screen
Screen 1
Ink 0
Bar 0,41 To 320,50
X=(320-Len(TXT$)*8)/2
Ink 5,0
Text X,47,TXT$
Screen TEMP
End Proc
Procedure BX[X,Y,XX,YY,T]
If T=1 Then Ink 1 Else Ink 3
Box X,Y To XX-1,YY-1
If T=1 Then Ink 3 Else Ink 1
Box X+1,Y+1 To XX,YY
If T<3 Then Ink 2 : Else Ink 0
Bar X+1,Y+1 To XX-1,YY-1
End Proc
Procedure XINPUT[TXT$,ML,POS,CX,CY,MD]
Shared ER,POS
Do
Home
NOC=Len(TXT$)
Locate CX,CY
Print TXT$+Space$(ML-(NOC-1))
Locate CX+POS,CY
Do
LTR$=Inkey$
Exit If LTR$<>""
If Mouse Click=1 and MD=1 Then ER=3 : Exit 2
Loop
CC=Asc(LTR$)
SC=Scancode
If CC=13 Then ER=1 : Exit
If CC=27 and MD=1 Then ER=2 : Exit
If Mouse Click=1 and MD=1 Then ER=3 : Exit
If CC>31 and NOC<=ML-1
If POS=NOC
TXT$=TXT$+LTR$
Else
TXT$=Left$(TXT$,POS)+LTR$+Right$(TXT$,NOC-POS)
End If
Inc POS
End If
If CC=29 and POS>0
Dec POS
End If
If CC=28 and POS<NOC
Inc POS
End If
If CC=8 and POS>0 and NOC>0
If POS=NOC
TXT$=Left$(TXT$,NOC-1)
Else
TXT$=Left$(TXT$,POS-1)+Right$(TXT$,NOC-POS)
End If
Dec POS
End If
If SC=70 and POS<NOC and NOC>0
If POS=0
TXT$=Right$(TXT$,NOC-1)
Else
TXT$=Left$(TXT$,POS)+Right$(TXT$,NOC-(POS+1))
End If
End If
Loop
End Proc[TXT$]
Procedure REQUEST[T1$,T2$,T3$,B1$,B2$]
If Len(T1$)>25 Then T1$=Left$(T1$,25)
If Len(T2$)>25 Then T2$=Left$(T2$,25)
If Len(T3$)>25 Then T3$=Left$(T3$,25)
If Len(B1$)>10 Then B1$=Left$(B1$,10)
If Len(B2$)>10 Then B2$=Left$(B2$,10)
If B1$<>"" Then B1=1
If B2$<>"" Then B2=1
If B1=0 and B2=0 Then Pop Proc
TEMP=Screen
Screen Open 7,640,61,4,Hires
Screen Display 7,128,120,640,64
Curs Off
Flash Off
Palette 0,$FFF,$888,$333
Colour 17,$999
Colour 18,$555
Colour 19,$333
Pen 1
Paper 0
Cls
BX[200,0,440,60,1]
If B1=1 Then BX[210,40,310,55,1]
If B2=1 Then BX[330,40,430,55,1]
BX[210,5,430,35,2]
Ink 0,2,2
Text 220,15,T1$
Text 220,23,T2$
Text 220,31,T3$
O=(80-Len(B1$)*8)/2
Text 220+O,50,B1$
O=(80-Len(B2$)*8)/2
Text 340+O,50,B2$
D=0
Do
Do
Z=Mouse Click
X=X Screen(X Mouse)
Y=Y Screen(Y Mouse)
Z$=Inkey$
Exit If Z$<>""
Exit If Z=1
Loop
If Z$=Chr$(13) and B1=1 Then D=1
If Z$=Chr$(27) and B2=1 Then D=2
If X>210 and X<310 and Y>40 and Y<55 and Z=1 and B1=1 Then D=1
If X>330 and X<430 and Y>40 and Y<55 and Z=1 and B2=1 Then D=2
Exit If D>0
Loop
If D=1
BX[210,40,310,55,2]
Ink 0,2,2
O=(80-Len(B1$)*8)/2
Text 220+O,50,B1$
Else
BX[330,40,430,55,2]
Ink 0,2,2
O=(80-Len(B2$)*8)/2
Text 340+O,50,B2$
End If
Wait 10
Screen Close 7
Screen TEMP
End Proc[D]
Procedure LIST_REQ[T$,B1$,B2$]
Shared FILE$()
If Len(T$)>10 Then T$=Left$(T$,25)
If Len(B1$)>10 Then B1$=Left$(B1$,10)
If Len(B2$)>10 Then B2$=Left$(B2$,10)
If B1$<>"" Then B1=1
If B2$<>"" Then B2=1
If B1=0 and B2=0 Then Pop Proc
TEMP=Screen
Screen Open 7,640,61,4,Hires
Screen Display 7,128,120,640,64
Curs Off
Flash Off
Palette 0,$FFF,$888,$333
Colour 17,$999
Colour 18,$555
Colour 19,$333
Pen 1
Paper 0
Cls
BX[200,0,440,60,1]
BX[210,10,400,35,3]
BX[410,5,430,15,2]
BX[410,25,430,35,2]
If B1=1 Then BX[210,40,310,55,1]
If B2=1 Then BX[330,40,430,55,1]
Ink 3
Polygon 414,13 To 420,7 To 426,13
Polygon 414,27 To 420,33 To 426,27
Ink 0,2,2
O=(80-Len(B1$)*8)/2
Text 220+O,50,B1$
O=(80-Len(B2$)*8)/2
Text 340+O,50,B2$
O=(200-Len(T$)*8)/2
Text 210+O,8,T$
ITEM=1
Do
Ink 2,0,0
DUMMY=Free
Text 215,17,Left$(FILE$(ITEM-1)+Space$(22),22)
Text 215,33,Left$(FILE$(ITEM+1)+Space$(22),22)
Ink 1,0,0
Text 215,25,Left$(FILE$(ITEM)+Space$(22),22)
If FILE$(ITEM+1)="" Then LAST=1 : Else LAST=0
D=0
Do
Z=Mouse Click
X=X Screen(X Mouse)
Y=Y Screen(Y Mouse)
Z$=Inkey$
Exit If Z$<>""
Exit If Z=1
Loop
If Z$=Chr$(31) and LAST=0 Then Inc ITEM
If Z$=Chr$(30) and ITEM>1 Then Dec ITEM
If Z$=Chr$(13) and B1=1 Then D=1
If Z$=Chr$(27) and B2=1 Then D=2
If X>210 and X<310 and Y>40 and Y<55 and Z=1 and B1=1 Then D=1
If X>330 and X<430 and Y>40 and Y<55 and Z=1 and B2=1 Then D=2
If X>410 and X<430 and Y>5 and Y<15 and Z=1 and ITEM>1 Then Dec ITEM
If X>410 and X<430 and Y>25 and Y<35 and Z=1 and LAST=0 Then Inc ITEM
Exit If D>0
Loop
If D=1
BX[210,40,310,55,2]
Ink 0,2,2
O=(80-Len(B1$)*8)/2
Text 220+O,50,B1$
FILE$=FILE$(ITEM)
Else
BX[330,40,430,55,2]
Ink 0,2,2
O=(80-Len(B2$)*8)/2
Text 340+O,50,B2$
End If
Wait 10
Screen Close 7
Screen TEMP
End Proc[FILE$]
Procedure STRING_REQ[T$,B1$,B2$,TXT$]
Shared POS,ER
If Len(T$)>25 Then T$=Left$(T$,25)
If Len(TXT$)>24 Then TXT$=Left$(TXT$,24)
If Len(B1$)>10 Then B1$=Left$(B1$,10)
If Len(B2$)>10 Then B2$=Left$(B2$,10)
If B1$<>"" Then B1=1
If B2$<>"" Then B2=1
If B1=0 and B2=0 Then Pop Proc
TEMP=Screen
Screen Open 7,640,61,4,Hires
Screen Display 7,128,120,640,64
Curs Off
Flash Off
Palette 0,$FFF,$888,$333
Colour 17,$999
Colour 18,$555
Colour 19,$333
Pen 1
Paper 0
Cls
BX[200,0,440,60,1]
BX[210,22,430,33,3]
If B1=1 Then BX[210,40,310,55,1]
If B2=1 Then BX[330,40,430,55,1]
Ink 0,2,2
O=(200-Len(T$)*8)/2
Text 220+O,15,T$
O=(80-Len(B1$)*8)/2
Text 220+O,50,B1$
O=(80-Len(B2$)*8)/2
Text 340+O,50,B2$
POS=0
Curs On
Do
XINPUT[TXT$,25,POS,27,3,1]
TXT$=Param$
X=X Screen(X Mouse)
Y=Y Screen(Y Mouse)
If X>210 and X<310 and Y>40 and Y<55 and ER=3 and B1=1 Then ER=1
If X>330 and X<430 and Y>40 and Y<55 and ER=3 and B2=1 Then ER=2
If ER=1
Curs Off
BX[210,40,310,55,2]
Ink 0,2,2
O=(80-Len(B1$)*8)/2
Text 220+O,50,B1$
Exit
End If
If ER=2
Curs Off
BX[330,40,430,55,2]
Ink 0,2,2
O=(80-Len(B2$)*8)/2
Text 340+O,50,B2$
TXT$=""
Exit
End If
Loop
Wait 10
Screen Close 7
Screen TEMP
End Proc[TXT$]
SET_UP_SCREEN
Do
SELECT_FILE
MAINLOOP
Loop