home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / 301-325 / apd301 / a.f.p / a.f.amosSourceCode
AMOS Source Code  |  1989-09-27  |  9KB  |  368 lines

  1. Rem ****************************************************** 
  2. Rem ** ASCII FILE PRINTER - BY DAVID BOUCHER - (C) 1991 ** 
  3. Rem **                    VERSION 1.1                   ** 
  4. Rem **         RIPOFFWARE SOFTWARE PRODUCTIONS          ** 
  5. Rem ****************************************************** 
  6. Rem
  7. Rem See .doc file for more info    
  8. Rem
  9. Set Buffer 10
  10. Break Off 
  11. Procedure BX[X,Y,XX,YY,T,Z]
  12.    If T=1 Then Ink 1 Else Ink 3
  13.    Box X,Y To XX-1,YY-1
  14.    If T=1 Then Ink 3 Else Ink 1
  15.    Box X+1,Y+1 To XX,YY
  16.    If T<3 Then Ink 2 : Else Ink 0
  17.    Bar X+1,Y+1 To XX-1,YY-1
  18.    If Z>0 Then Set Zone Z,X,Y To XX,YY
  19. End Proc
  20. Procedure TBOX[X,Y,TXT$,MD,Z]
  21.    If MD>0 Then BX[X-3,Y-9,X+(Len(TXT$)*8)+2,Y+3,MD,Z]
  22.    If MD=3 Then Ink 1,0 : Else Ink 0,2
  23.    Text X,Y,TXT$
  24. End Proc
  25. Procedure XINPUT[TXT$,ML,POS,CX,CY]
  26.    Do 
  27.       Home 
  28.       NOC=Len(TXT$)
  29.       Locate CX,CY
  30.       Print TXT$+Space$(ML-(NOC-1))
  31.       Locate CX+POS,CY
  32.       Do 
  33.          LTR$=Upper$(Inkey$)
  34.          Exit If LTR$<>""
  35.       Loop 
  36.       CC=Asc(LTR$)
  37.       SC=Scancode
  38.       If CC=13 Then Exit 
  39.       If CC>31 and NOC<=ML
  40.          If POS=NOC
  41.             TXT$=TXT$+LTR$
  42.          Else 
  43.             TXT$=Left$(TXT$,POS)+LTR$+Right$(TXT$,NOC-POS)
  44.          End If 
  45.          Inc POS
  46.       End If 
  47.       If CC=29 and POS>0
  48.          Dec POS
  49.       End If 
  50.       If CC=28 and POS<NOC
  51.          Inc POS
  52.       End If 
  53.       If CC=8 and POS>0 and NOC>0
  54.          If POS=NOC
  55.             TXT$=Left$(TXT$,NOC-1)
  56.          Else 
  57.             TXT$=Left$(TXT$,POS-1)+Right$(TXT$,NOC-POS)
  58.          End If 
  59.          Dec POS
  60.       End If 
  61.       If SC=70 and POS<NOC and NOC>0
  62.          If POS=0
  63.             TXT$=Right$(TXT$,NOC-1)
  64.          Else 
  65.             TXT$=Left$(TXT$,POS)+Right$(TXT$,NOC-(POS+1))
  66.          End If 
  67.       End If 
  68.    Loop 
  69. End Proc[TXT$]
  70. Procedure NUM_INPUT[X,Y,LL,NUM]
  71.    NUM$=Right$("00"+Str$(NUM)-" ",2)
  72.    Locate X,Y
  73.    Print NUM$;
  74.    Do 
  75.       CHAR$=""
  76.       While CHAR$=""
  77.          CHAR$=Inkey$
  78.          If Mouse Click Then Exit 
  79.       Wend 
  80.       L=Len(NUM$)
  81.       CHAR$=Upper$(CHAR$)
  82.       CC=Asc(CHAR$)
  83.       If CC=13 Then Exit 
  84.       If CC>47 and CC<58 and L<LL Then Print CHAR$; : NUM$=NUM$+CHAR$
  85.       If CC=8 and L>0 Then Print Cleft$;" ";Cleft$; : NUM$=Left$(NUM$,L-1)
  86.    Loop 
  87.    NUM=Val(NUM$)
  88. End Proc[NUM]
  89. Procedure MESSAGE[E$]
  90.    E$=Left$(Space$((77-Len(E$))/2)+E$+Space$(78),78)
  91.    TBOX[8,62,E$,2,0]
  92. End Proc
  93. Procedure BUTTON[X,Y,TXT$,M,Z]
  94.    If M<3
  95.       BX[X,Y,X+53,Y+12,M,Z]
  96.       Ink 0,2
  97.       I=(6-Len(TXT$))*8/2
  98.       Text X+3+I,Y+9,TXT$
  99.    Else 
  100.       BX[X,Y,X+53,Y+12,1,Z]
  101.    End If 
  102. End Proc
  103. Procedure SET_BUTTON[B,M]
  104.    If M=0 Then M=3
  105.    If B=1 Then BUTTON[194,21,"LOAD",M,3]
  106.    If B=2 Then BUTTON[256,21,"PRINT",M,4]
  107.    If B=3 Then BUTTON[318,21,"OK",M,5]
  108.    If B=4 Then BUTTON[380,21,"CANCEL",M,6]
  109.    If B=5 Then BUTTON[442,21,"ABOUT",M,7]
  110.    If B=6 Then BUTTON[504,21,"F.INFO",M,8]
  111.    If B=7 Then BUTTON[566,21,"QUIT",M,9]
  112. End Proc
  113. Procedure REQ[TXT$]
  114.    MESSAGE[TXT$]
  115.    SET_BUTTON[3,1]
  116.    SET_BUTTON[4,1]
  117.    Do 
  118.       Z=Mouse Zone
  119.       Exit If Mouse Click=1 and(Z=5 or Z=6)
  120.    Loop 
  121.    If Z=5 Then SET_BUTTON[3,2] : Wait 10 : OK=True
  122.    If Z=6 Then SET_BUTTON[4,2] : Wait 10 : OK=False
  123. End Proc[OK]
  124. Procedure SETUP
  125.    Screen Open 0,640,71,4,Hires
  126.    Screen Display 0,128,100,640,71
  127.    Reserve Zone 10
  128.    Curs Off 
  129.    Flash Off 
  130.    Limit Mouse 128,99 To 447,170
  131.    Palette 0,$FFF,$888,$333
  132.    Colour 17,$AAA
  133.    Colour 18,$DDD
  134.    Colour 19,0
  135.    Pen 1
  136.    Paper 0
  137.    Cls 
  138.    BX[0,0,639,70,1,0]
  139.    TBOX[116,15," ASCII FILE PRINTER - Version 1.1 - by David Boucher ",1,0]
  140. End Proc
  141. Procedure FILE_DISP
  142.    Shared FILE$
  143.    F$=Left$("FILE:"+FILE$+Space$(73),78)
  144.    TBOX[8,46,F$,3,1]
  145. End Proc
  146. Procedure PAGE_DISP
  147.    Shared PLINES
  148.    L$=Right$("00"+Str$(PLINES)-" ",2)+" "
  149.    TBOX[8,30,"PAGE LENGTH:"+L$,3,2]
  150. End Proc
  151. Procedure PITCH_DISP
  152.    Shared PITCH
  153.    If PITCH=0 Then L$="ELITE" Else L$="PICA "
  154.    TBOX[142,30,L$,3,10]
  155. End Proc
  156. Procedure RESET_BUTTONS
  157.    Shared FL
  158.    SET_BUTTON[1,1]
  159.    SET_BUTTON[2,FL]
  160.    SET_BUTTON[3,0]
  161.    SET_BUTTON[4,0]
  162.    SET_BUTTON[5,1]
  163.    SET_BUTTON[6,FL]
  164.    SET_BUTTON[7,1]
  165.    MESSAGE["WELCOME TO The ASCII FILE PRINTER by BOUCH (C) 1991.  RIPOFFWARE"]
  166. End Proc
  167. Procedure ENTER_NAME
  168.    Shared FILE$
  169.    For A=1 To 7
  170.       SET_BUTTON[A,0]
  171.    Next 
  172.    MESSAGE["ENTER NAME OF FILE TO LOAD"]
  173.    Pen 1
  174.    Paper 0
  175.    Curs On 
  176.    Clear Key 
  177.    XINPUT[FILE$,70,Len(FILE$),6,5]
  178.    Curs Off 
  179.    FILE$=Param$
  180.    FILE_DISP
  181.    RESET_BUTTONS
  182. End Proc
  183. Procedure ENTER_LENGTH
  184.    Shared PLINES,FL
  185.    For A=1 To 7
  186.       SET_BUTTON[A,0]
  187.    Next 
  188.    MESSAGE["ENTER NEW PAGE LENGTH"]
  189.    Ink 1,0
  190.    Curs On 
  191.    Clear Key 
  192.    NUM_INPUT[13,3,2,PLINES]
  193.    PLINES=Param
  194.    Curs Off 
  195.    If PLINES=0 : PLINES=1 : End If 
  196.    PAGE_DISP
  197.    RESET_BUTTONS
  198.    If FL=1 Then INFO
  199. End Proc
  200. Procedure CHANGE_PITCH
  201.    Shared PITCH,FL
  202.    If PITCH=0 Then PITCH=1 : Else PITCH=0
  203.    PITCH_DISP
  204.    If FL=1 Then INFO
  205. End Proc
  206. Procedure NEW_FILE[TITLE$]
  207.    Shared FL
  208.    SET_BUTTON[1,2]
  209.    Wait 10
  210.    If TITLE$=""
  211.       RESET_BUTTONS
  212.       MESSAGE["ERROR:NO FILENAME SELECTED"]
  213.       Pop Proc
  214.    End If 
  215.    For A=1 To 7
  216.       SET_BUTTON[A,0]
  217.    Next 
  218.    Do 
  219.       If Exist(TITLE$)
  220.          MESSAGE["LOADING..."]
  221.          Erase 1
  222.          Open In 1,TITLE$
  223.          L=Lof(1)
  224.          Close 1
  225.          Reserve As Work 1,L
  226.          Bload TITLE$,Start(1)
  227.          FL=1
  228.          OK=True
  229.          Exit 
  230.       Else 
  231.          REQ["ERROR:CAN'T FIND FILE. TRY AGAIN? (OK/CANCEL)"]
  232.          Z=Param
  233.          If Z=False : Exit : End If 
  234.       End If 
  235.    Loop 
  236.    If Not OK Then RESET_BUTTONS : Pop Proc
  237.    INFO
  238. End Proc
  239. Procedure FILE_PRINT
  240.    Shared PLINES,PR,PITCH
  241.    SET_BUTTON[2,2]
  242.    Wait 10
  243.    For A=1 To 7
  244.       SET_BUTTON[A,0]
  245.    Next 
  246.    REQ["PRINT TEXT? ARE YOU SURE (OK/CANCEL)"]
  247.    Z=Param
  248.    If Z=False Then RESET_BUTTONS : Pop Proc
  249.    If PR=0
  250.       Do 
  251.          Exit If Exist("SYS:")
  252.          REQ["PLEASE INSERT YOUR BOOT DISK IN ANY DRIVE (OK/CANCEL)"]
  253.          Z=Param
  254.          If Z=False : Exit : End If 
  255.       Loop 
  256.       If Not Exist("SYS:") : RESET_BUTTONS : MESSAGE["ERROR:CANNOT PRINT"] : Pop Proc : End If 
  257.    End If 
  258.    If PITCH=0 Then V=77 : Else V=80
  259.    Lprint Chr$(27)+Chr$(64)+Chr$(27)+Chr$(V)+Chr$(27)+Chr$(108)+Chr$(5);
  260.    PR=1
  261.    REQ["CONFIRM EACH PAGE? (OK/CANCEL)"]
  262.    Z=Param
  263.    If Z=True Then CON=1
  264.    If Z=False Then CON=0
  265.    SET_BUTTON[3,0]
  266.    SET_BUTTON[4,0]
  267.    LOOK=Start(1)
  268.    LINES=0
  269.    PAGE=1
  270.    OK=1
  271.    If PITCH=0 Then LL=90 : Else LL=75
  272.    Do 
  273.       OLDLOOK=LOOK
  274.       If LINES=0 and CON=1
  275.          REQ["PRINT PAGE "+Str$(PAGE)+"? (OK/CANCEL)"]
  276.          Z=Param
  277.          If Z=True : OK=1 : End If 
  278.          If Z=False : OK=0 : End If 
  279.          SET_BUTTON[3,0]
  280.          SET_BUTTON[4,0]
  281.       End If 
  282.       If LINES=0
  283.          If OK=1 : MESSAGE["PRINTING PAGE "+Str$(PAGE)+".."] : End If 
  284.          Inc PAGE
  285.       End If 
  286.       LOOK=Hunt(LOOK+1 To Start(1)+Length(1),Chr$(10))
  287.       Exit If LOOK=0
  288.       If OLDLOOK+LL<LOOK Then LOOK=OLDLOOK+LL
  289.       ST$=""
  290.       If OK=1
  291.          For S=OLDLOOK To LOOK-1
  292.             ST$=ST$+Chr$(Peek(S))
  293.          Next 
  294.          Lprint ST$-Chr$(10)
  295.       End If 
  296.       Inc LINES
  297.       Exit If LOOK=Start(1)+Length(1)
  298.       If LINES=PLINES : LINES=0 : If OK=1 : Lprint Chr$(12); : End If : End If 
  299.    Loop 
  300.    If OK=1 Then Lprint Chr$(12)
  301.    RESET_BUTTONS
  302.    MESSAGE["FINISHED PRINTING"]
  303. End Proc
  304. Procedure INFO
  305.    Shared PLINES,PITCH
  306.    MESSAGE["COUNTING LINES"]
  307.    LOOK=Start(1)
  308.    LINES=0
  309.    If PITCH=0 Then LL=90 : Else LL=75
  310.    Do 
  311.       OLDLOOK=LOOK
  312.       LOOK=Hunt(LOOK+1 To Start(1)+Length(1),Chr$(10))
  313.       Exit If LOOK=0
  314.       If OLDLOOK+LL<LOOK Then LOOK=OLDLOOK+LL
  315.       Inc LINES
  316.       Exit If LOOK=Start(1)+Length(1)
  317.    Loop 
  318.    L$="FILE SIZE: "+Str$(Length(1))+" BYTES  "+Str$(LINES)+" LINES  "+Str$((LINES/PLINES)+1)+" PAGE"
  319.    If(LINES/PLINES)+1=1 Then L$=L$+"." : Else L$=L$+"S."
  320.    RESET_BUTTONS
  321.    MESSAGE[L$]
  322. End Proc
  323. Procedure ABOUT
  324.    BX[0,0,639,70,1,0]
  325.    TBOX[116,15," ASCII FILE PRINTER - Version 1.1 - by David Boucher ",1,0]
  326.    BX[5,20,634,65,2,0]
  327.    Pen 1
  328.    Paper 2
  329.    Print At(6,3);"ASCII FILE PRINTER V1.1 (C) 1991 David Boucher - RIPOFFWARE SOFTWARE"
  330.    Pen 0
  331.    Print At(10,4);"AMOS file printer sutable for ANY EPSON compatable printer."
  332.    Pen 1
  333.    Print At(5,5);"Any comments, suggestions, bug reports or *MONEY* should be sent to:-"
  334.    Pen 0
  335.    Print At(13,6);"DAVID BOUCHER, 37, SMITH STREET, LONGTON, STOKE-ON-TRENT, "
  336.    Print At(23,7);"STAFFORDSHIRE. ST3 1DR ENGLAND.";
  337.    Do 
  338.       Exit If Mouse Click=1
  339.    Loop 
  340.    BX[0,0,639,70,1,0]
  341.    TBOX[116,15," ASCII FILE PRINTER - Version 1.1 - by David Boucher ",1,0]
  342.    PAGE_DISP
  343.    FILE_DISP
  344.    PITCH_DISP
  345.    RESET_BUTTONS
  346. End Proc
  347. PLINES=60
  348. SETUP
  349. FILE_DISP
  350. PAGE_DISP
  351. PITCH_DISP
  352. RESET_BUTTONS
  353. Do 
  354.    DUMMY=Free
  355.    PZ=Z
  356.    Do 
  357.       Z=Mouse Zone
  358.       Exit If Mouse Click=1
  359.    Loop 
  360.    If Z=1 Then ENTER_NAME
  361.    If Z=2 Then ENTER_LENGTH
  362.    If Z=3 Then NEW_FILE[FILE$]
  363.    If Z=4 and FL=1 Then FILE_PRINT
  364.    If Z=7 Then SET_BUTTON[5,2] : Wait 10 : ABOUT
  365.    If Z=8 and FL=1 Then SET_BUTTON[6,2] : Wait 10 : INFO
  366.    If Z=9 Then SET_BUTTON[7,2] : Wait 10 : Screen Close 0 : End 
  367.    If Z=10 Then CHANGE_PITCH
  368. Loop