home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AMOS PD CD
/
amospdcd.iso
/
301-325
/
apd301
/
a.f.p
/
a.f.amosSourceCode
Wrap
AMOS Source Code
|
1989-09-27
|
9KB
|
368 lines
Rem ******************************************************
Rem ** ASCII FILE PRINTER - BY DAVID BOUCHER - (C) 1991 **
Rem ** VERSION 1.1 **
Rem ** RIPOFFWARE SOFTWARE PRODUCTIONS **
Rem ******************************************************
Rem
Rem See .doc file for more info
Rem
Set Buffer 10
Break Off
Procedure BX[X,Y,XX,YY,T,Z]
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
If Z>0 Then Set Zone Z,X,Y To XX,YY
End Proc
Procedure TBOX[X,Y,TXT$,MD,Z]
If MD>0 Then BX[X-3,Y-9,X+(Len(TXT$)*8)+2,Y+3,MD,Z]
If MD=3 Then Ink 1,0 : Else Ink 0,2
Text X,Y,TXT$
End Proc
Procedure XINPUT[TXT$,ML,POS,CX,CY]
Do
Home
NOC=Len(TXT$)
Locate CX,CY
Print TXT$+Space$(ML-(NOC-1))
Locate CX+POS,CY
Do
LTR$=Upper$(Inkey$)
Exit If LTR$<>""
Loop
CC=Asc(LTR$)
SC=Scancode
If CC=13 Then Exit
If CC>31 and NOC<=ML
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 NUM_INPUT[X,Y,LL,NUM]
NUM$=Right$("00"+Str$(NUM)-" ",2)
Locate X,Y
Print NUM$;
Do
CHAR$=""
While CHAR$=""
CHAR$=Inkey$
If Mouse Click Then Exit
Wend
L=Len(NUM$)
CHAR$=Upper$(CHAR$)
CC=Asc(CHAR$)
If CC=13 Then Exit
If CC>47 and CC<58 and L<LL Then Print CHAR$; : NUM$=NUM$+CHAR$
If CC=8 and L>0 Then Print Cleft$;" ";Cleft$; : NUM$=Left$(NUM$,L-1)
Loop
NUM=Val(NUM$)
End Proc[NUM]
Procedure MESSAGE[E$]
E$=Left$(Space$((77-Len(E$))/2)+E$+Space$(78),78)
TBOX[8,62,E$,2,0]
End Proc
Procedure BUTTON[X,Y,TXT$,M,Z]
If M<3
BX[X,Y,X+53,Y+12,M,Z]
Ink 0,2
I=(6-Len(TXT$))*8/2
Text X+3+I,Y+9,TXT$
Else
BX[X,Y,X+53,Y+12,1,Z]
End If
End Proc
Procedure SET_BUTTON[B,M]
If M=0 Then M=3
If B=1 Then BUTTON[194,21,"LOAD",M,3]
If B=2 Then BUTTON[256,21,"PRINT",M,4]
If B=3 Then BUTTON[318,21,"OK",M,5]
If B=4 Then BUTTON[380,21,"CANCEL",M,6]
If B=5 Then BUTTON[442,21,"ABOUT",M,7]
If B=6 Then BUTTON[504,21,"F.INFO",M,8]
If B=7 Then BUTTON[566,21,"QUIT",M,9]
End Proc
Procedure REQ[TXT$]
MESSAGE[TXT$]
SET_BUTTON[3,1]
SET_BUTTON[4,1]
Do
Z=Mouse Zone
Exit If Mouse Click=1 and(Z=5 or Z=6)
Loop
If Z=5 Then SET_BUTTON[3,2] : Wait 10 : OK=True
If Z=6 Then SET_BUTTON[4,2] : Wait 10 : OK=False
End Proc[OK]
Procedure SETUP
Screen Open 0,640,71,4,Hires
Screen Display 0,128,100,640,71
Reserve Zone 10
Curs Off
Flash Off
Limit Mouse 128,99 To 447,170
Palette 0,$FFF,$888,$333
Colour 17,$AAA
Colour 18,$DDD
Colour 19,0
Pen 1
Paper 0
Cls
BX[0,0,639,70,1,0]
TBOX[116,15," ASCII FILE PRINTER - Version 1.1 - by David Boucher ",1,0]
End Proc
Procedure FILE_DISP
Shared FILE$
F$=Left$("FILE:"+FILE$+Space$(73),78)
TBOX[8,46,F$,3,1]
End Proc
Procedure PAGE_DISP
Shared PLINES
L$=Right$("00"+Str$(PLINES)-" ",2)+" "
TBOX[8,30,"PAGE LENGTH:"+L$,3,2]
End Proc
Procedure PITCH_DISP
Shared PITCH
If PITCH=0 Then L$="ELITE" Else L$="PICA "
TBOX[142,30,L$,3,10]
End Proc
Procedure RESET_BUTTONS
Shared FL
SET_BUTTON[1,1]
SET_BUTTON[2,FL]
SET_BUTTON[3,0]
SET_BUTTON[4,0]
SET_BUTTON[5,1]
SET_BUTTON[6,FL]
SET_BUTTON[7,1]
MESSAGE["WELCOME TO The ASCII FILE PRINTER by BOUCH (C) 1991. RIPOFFWARE"]
End Proc
Procedure ENTER_NAME
Shared FILE$
For A=1 To 7
SET_BUTTON[A,0]
Next
MESSAGE["ENTER NAME OF FILE TO LOAD"]
Pen 1
Paper 0
Curs On
Clear Key
XINPUT[FILE$,70,Len(FILE$),6,5]
Curs Off
FILE$=Param$
FILE_DISP
RESET_BUTTONS
End Proc
Procedure ENTER_LENGTH
Shared PLINES,FL
For A=1 To 7
SET_BUTTON[A,0]
Next
MESSAGE["ENTER NEW PAGE LENGTH"]
Ink 1,0
Curs On
Clear Key
NUM_INPUT[13,3,2,PLINES]
PLINES=Param
Curs Off
If PLINES=0 : PLINES=1 : End If
PAGE_DISP
RESET_BUTTONS
If FL=1 Then INFO
End Proc
Procedure CHANGE_PITCH
Shared PITCH,FL
If PITCH=0 Then PITCH=1 : Else PITCH=0
PITCH_DISP
If FL=1 Then INFO
End Proc
Procedure NEW_FILE[TITLE$]
Shared FL
SET_BUTTON[1,2]
Wait 10
If TITLE$=""
RESET_BUTTONS
MESSAGE["ERROR:NO FILENAME SELECTED"]
Pop Proc
End If
For A=1 To 7
SET_BUTTON[A,0]
Next
Do
If Exist(TITLE$)
MESSAGE["LOADING..."]
Erase 1
Open In 1,TITLE$
L=Lof(1)
Close 1
Reserve As Work 1,L
Bload TITLE$,Start(1)
FL=1
OK=True
Exit
Else
REQ["ERROR:CAN'T FIND FILE. TRY AGAIN? (OK/CANCEL)"]
Z=Param
If Z=False : Exit : End If
End If
Loop
If Not OK Then RESET_BUTTONS : Pop Proc
INFO
End Proc
Procedure FILE_PRINT
Shared PLINES,PR,PITCH
SET_BUTTON[2,2]
Wait 10
For A=1 To 7
SET_BUTTON[A,0]
Next
REQ["PRINT TEXT? ARE YOU SURE (OK/CANCEL)"]
Z=Param
If Z=False Then RESET_BUTTONS : Pop Proc
If PR=0
Do
Exit If Exist("SYS:")
REQ["PLEASE INSERT YOUR BOOT DISK IN ANY DRIVE (OK/CANCEL)"]
Z=Param
If Z=False : Exit : End If
Loop
If Not Exist("SYS:") : RESET_BUTTONS : MESSAGE["ERROR:CANNOT PRINT"] : Pop Proc : End If
End If
If PITCH=0 Then V=77 : Else V=80
Lprint Chr$(27)+Chr$(64)+Chr$(27)+Chr$(V)+Chr$(27)+Chr$(108)+Chr$(5);
PR=1
REQ["CONFIRM EACH PAGE? (OK/CANCEL)"]
Z=Param
If Z=True Then CON=1
If Z=False Then CON=0
SET_BUTTON[3,0]
SET_BUTTON[4,0]
LOOK=Start(1)
LINES=0
PAGE=1
OK=1
If PITCH=0 Then LL=90 : Else LL=75
Do
OLDLOOK=LOOK
If LINES=0 and CON=1
REQ["PRINT PAGE "+Str$(PAGE)+"? (OK/CANCEL)"]
Z=Param
If Z=True : OK=1 : End If
If Z=False : OK=0 : End If
SET_BUTTON[3,0]
SET_BUTTON[4,0]
End If
If LINES=0
If OK=1 : MESSAGE["PRINTING PAGE "+Str$(PAGE)+".."] : End If
Inc PAGE
End If
LOOK=Hunt(LOOK+1 To Start(1)+Length(1),Chr$(10))
Exit If LOOK=0
If OLDLOOK+LL<LOOK Then LOOK=OLDLOOK+LL
ST$=""
If OK=1
For S=OLDLOOK To LOOK-1
ST$=ST$+Chr$(Peek(S))
Next
Lprint ST$-Chr$(10)
End If
Inc LINES
Exit If LOOK=Start(1)+Length(1)
If LINES=PLINES : LINES=0 : If OK=1 : Lprint Chr$(12); : End If : End If
Loop
If OK=1 Then Lprint Chr$(12)
RESET_BUTTONS
MESSAGE["FINISHED PRINTING"]
End Proc
Procedure INFO
Shared PLINES,PITCH
MESSAGE["COUNTING LINES"]
LOOK=Start(1)
LINES=0
If PITCH=0 Then LL=90 : Else LL=75
Do
OLDLOOK=LOOK
LOOK=Hunt(LOOK+1 To Start(1)+Length(1),Chr$(10))
Exit If LOOK=0
If OLDLOOK+LL<LOOK Then LOOK=OLDLOOK+LL
Inc LINES
Exit If LOOK=Start(1)+Length(1)
Loop
L$="FILE SIZE: "+Str$(Length(1))+" BYTES "+Str$(LINES)+" LINES "+Str$((LINES/PLINES)+1)+" PAGE"
If(LINES/PLINES)+1=1 Then L$=L$+"." : Else L$=L$+"S."
RESET_BUTTONS
MESSAGE[L$]
End Proc
Procedure ABOUT
BX[0,0,639,70,1,0]
TBOX[116,15," ASCII FILE PRINTER - Version 1.1 - by David Boucher ",1,0]
BX[5,20,634,65,2,0]
Pen 1
Paper 2
Print At(6,3);"ASCII FILE PRINTER V1.1 (C) 1991 David Boucher - RIPOFFWARE SOFTWARE"
Pen 0
Print At(10,4);"AMOS file printer sutable for ANY EPSON compatable printer."
Pen 1
Print At(5,5);"Any comments, suggestions, bug reports or *MONEY* should be sent to:-"
Pen 0
Print At(13,6);"DAVID BOUCHER, 37, SMITH STREET, LONGTON, STOKE-ON-TRENT, "
Print At(23,7);"STAFFORDSHIRE. ST3 1DR ENGLAND.";
Do
Exit If Mouse Click=1
Loop
BX[0,0,639,70,1,0]
TBOX[116,15," ASCII FILE PRINTER - Version 1.1 - by David Boucher ",1,0]
PAGE_DISP
FILE_DISP
PITCH_DISP
RESET_BUTTONS
End Proc
PLINES=60
SETUP
FILE_DISP
PAGE_DISP
PITCH_DISP
RESET_BUTTONS
Do
DUMMY=Free
PZ=Z
Do
Z=Mouse Zone
Exit If Mouse Click=1
Loop
If Z=1 Then ENTER_NAME
If Z=2 Then ENTER_LENGTH
If Z=3 Then NEW_FILE[FILE$]
If Z=4 and FL=1 Then FILE_PRINT
If Z=7 Then SET_BUTTON[5,2] : Wait 10 : ABOUT
If Z=8 and FL=1 Then SET_BUTTON[6,2] : Wait 10 : INFO
If Z=9 Then SET_BUTTON[7,2] : Wait 10 : Screen Close 0 : End
If Z=10 Then CHANGE_PITCH
Loop