home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 2 / crawlyvol2.bin / program / basic / qpug_s / qbbs_pug.gfa (.txt) < prev    next >
Encoding:
GFA-BASIC Atari  |  1992-10-12  |  12.5 KB  |  564 lines

  1. version$="v1.2"
  2. main
  3. > PROCEDURE main
  4.   CLS
  5.   rez|=XBIOS(4)
  6.   PRINT "p";SPC(32);"q"
  7.   PRINT "p         QBBS PUG ";version$;"          q"
  8.   PRINT "p     (Protocol Usage Graph)     q"
  9.   PRINT "p   Copyright © 1992 M.J.Matts   q"
  10.   PRINT "p";SPC(32);"q"
  11.   maxchk|=20
  12.   DIM chk$(maxchk|),chkd$(maxchk|),chk#(maxchk|,1),txtov#(maxchk|,1)
  13.   ctl
  14.   reg_info
  15.   PRINT
  16.   PRINT register$
  17.   PRINT
  18.   PRINT "Sorting LOG files..."
  19.   QSORT chk$(-)
  20.   r#=0
  21.   DO
  22.     IF chk$(0)=""
  23.       DELETE chk$(0)
  24.       DEC maxchk|
  25.     ENDIF
  26.     EXIT IF chk$(0)<>""
  27.   LOOP
  28.   FOR r#=0 TO maxchk|
  29.     IF INSTR(chk$(r#),",")
  30.       chkd$(r#)=MID$(chk$(r#),INSTR(chk$(r#),",")+1)
  31.       chk$(r#)=UPPER$(LEFT$(chk$(r#),INSTR(chk$(r#),",")-1))
  32.     ELSE
  33.       chk$(r#)=UPPER$(chk$(r#))
  34.       chkd$(r#)=UPPER$(chk$(r#))
  35.     ENDIF
  36.   NEXT r#
  37.   @download.log
  38.   @upload.log
  39.   @overall.log
  40.   @overall.txt
  41.   CLS
  42.   END
  43. RETURN
  44. > PROCEDURE ctl
  45.   dlgraph$="DL_GRAPH"
  46.   ulgraph$="UL_GRAPH"
  47.   ovgraph$="OV_GRAPH"
  48.   ovtext$="OV_TEXT"
  49.   IF EXIST("QBBS_PUG.CTL")
  50.     DIM ctw$(100)
  51.     OPEN "I",#1,"QBBS_PUG.CTL"
  52.     RECALL #1,ctw$(),-1,ctl#
  53.     CLOSE #1
  54.     chek#=0
  55.     FOR r#=0 TO ctl#
  56.       ctl$=UPPER$(ctw$(r#))
  57.       IF LEFT$(ctl$,11)="SYSTEMPATH="
  58.         syspath$=MID$(ctl$,12)
  59.         IF RIGHT$(syspath$,1)<>"\"
  60.           syspath$=syspath$+"\"
  61.         ENDIF
  62.       ENDIF
  63.       IF LEFT$(ctl$,9)="TEXTPATH="
  64.         textpath$=MID$(ctl$,10)
  65.         IF RIGHT$(textpath$,1)<>"\"
  66.           textpath$=textpath$+"\"
  67.         ENDIF
  68.       ENDIF
  69.       IF LEFT$(ctl$,8)="DLGRAPH="
  70.         dlgraph$=MID$(ctl$,9)
  71.       ENDIF
  72.       IF LEFT$(ctl$,8)="ULGRAPH="
  73.         ulgraph$=MID$(ctl$,9)
  74.       ENDIF
  75.       IF LEFT$(ctl$,8)="OVGRAPH="
  76.         ovgraph$=MID$(ctl$,9)
  77.       ENDIF
  78.       IF LEFT$(ctl$,7)="OVTEXT="
  79.         ovtext$=MID$(ctl$,8)
  80.       ENDIF
  81.       IF LEFT$(ctl$,5)="HORIZ"
  82.         horiz%=TRUE
  83.       ENDIF
  84.       IF LEFT$(UPPER$(ctw$(r#)),4)="INC=" AND chek#<17
  85.         chk$(chek#)=MID$(ctw$(r#),5)
  86.         INC chek#
  87.       ENDIF
  88.     NEXT r#
  89.   ELSE
  90.     PRINT
  91.     PRINT "I cannot find QBBS_PUG.CTL.. Please correct this then try again.."
  92.     PAUSE 50
  93.     END
  94.   ENDIF
  95. RETURN
  96. '
  97. > PROCEDURE reg_info
  98.   IF EXIST(syspath$+"QCONFIG.BBS")
  99.     syspath%=TRUE
  100.     OPEN "R",#25,syspath$+"QCONFIG.BBS",2048
  101.     FIELD #25,831 AS void$,40 AS sysop$,40 AS bbsname$
  102.     GET #25
  103.     CLOSE #25
  104.     sysop$=TRIM$(MID$(sysop$,1))
  105.     bbsname$=TRIM$(MID$(bbsname$,1))
  106.     IF RIGHT$(sysop$)=CHR$(0)
  107.       sysop$=LEFT$(sysop$,LEN(sysop$)-1)
  108.     ENDIF
  109.     IF RIGHT$(bbsname$)=CHR$(0)
  110.       bbsname$=LEFT$(bbsname$,LEN(bbsname$)-1)
  111.     ENDIF
  112.     register$="Registered To "+bbsname$
  113.   ELSE
  114.     register$="*** UNREGISTERED ***"
  115.   ENDIF
  116. RETURN
  117. '
  118. > PROCEDURE download.log
  119.   IF EXIST(syspath$+"DOWNLOAD.LOG")
  120.     ov#=0
  121.     INC overall#
  122.     ERASE dl$()
  123.     DIM dl$(4000)
  124.     OPEN "I",#1,syspath$+"DOWNLOAD.LOG"
  125.     RECALL #1,dl$(),-1,dl#
  126.     CLOSE #1
  127.     convert_log
  128.     dltot#=totdl#
  129.     totov#=totov#+totdl#
  130.     IF horiz%
  131.       make_hori_graph(textpath$+dlgraph$,"Download Protocol Graph")
  132.     ELSE
  133.       make_vert_graph(textpath$+dlgraph$,"Download Protocol Graph")
  134.     ENDIF
  135.   ENDIF
  136. RETURN
  137. > PROCEDURE upload.log
  138.   IF EXIST(syspath$+"UPLOAD.LOG")
  139.     ov#=1
  140.     INC overall#
  141.     ERASE dl$()
  142.     DIM dl$(4000)
  143.     OPEN "I",#1,syspath$+"UPLOAD.LOG"
  144.     RECALL #1,dl$(),-1,dl#
  145.     CLOSE #1
  146.     convert_log
  147.     ultot#=totdl#
  148.     totov#=totov#+totdl#
  149.     IF horiz%
  150.       make_hori_graph(textpath$+ulgraph$,"Upload Protocol Graph")
  151.     ELSE
  152.       make_vert_graph(textpath$+ulgraph$,"Upload Protocol Graph")
  153.     ENDIF
  154.   ENDIF
  155. RETURN
  156. > PROCEDURE overall.log
  157.   IF overall#>1
  158.     ' ### Work out each xfer's overall percentage ###
  159.     FOR xfer#=0 TO maxchk|
  160.       IF chk$(xfer#)<>""
  161.         chk#(xfer#,1)=((txtov#(xfer#,0)+txtov#(xfer#,1))/totov#)*100
  162.         chk#(xfer#,0)=txtov#(xfer#,0)+txtov#(xfer#,1)
  163.       ENDIF
  164.     NEXT xfer#
  165.     IF horiz%
  166.       make_hori_graph(textpath$+ovgraph$,"Overall Protocol Graph")
  167.     ELSE
  168.       make_vert_graph(textpath$+ovgraph$,"Overall Protocol Graph")
  169.     ENDIF
  170.   ENDIF
  171. RETURN
  172. > PROCEDURE overall.txt
  173.   IF overall#>1
  174.     message$="Overall Protocol Chart"
  175.     OPEN "O",#1,textpath$+ovtext$+".ASC"
  176.     OPEN "O",#2,textpath$+ovtext$+".ANS"
  177.     OPEN "O",#3,textpath$+ovtext$+".VTC"
  178.     OPEN "O",#4,textpath$+ovtext$+".VTM"
  179.     CLS
  180.     title$="QBBS PUG (Protocol Usage Graph) "+version$+"   Copyright (c) 1992 M.J.Matts"
  181.     hd1$="                    Download          Upload       Overall Totals"
  182.     hd2$="Protocol Used    Files     Perc   Files     Perc   Files     Perc"
  183.     hd3$=STRING$(65,"-")
  184.     IF rez|=1
  185.       PRINT "E"+@ctr$("c3b2 "+title$+" c0b3",12)
  186.       PRINT @ctr$("b1"+message$+" : "+register$+"b3",6)
  187.     ELSE
  188.       PRINT "E"+@ctr$("p "+title$+" q",4)
  189.       PRINT @ctr$(message$+" : "+register$,0)
  190.     ENDIF
  191.     PRINT
  192.     PRINT @ctr$(hd1$,0)
  193.     PRINT @ctr$(hd2$,0)
  194.     PRINT @ctr$(hd3$,0)
  195.     PRINT #1,@ctr$(title$,0)
  196.     PRINT #1,@ctr$(message$+" : "+register$,0)
  197.     PRINT #1
  198.     PRINT #1,@ctr$(hd1$,0)
  199.     PRINT #1,@ctr$(hd2$,0)
  200.     PRINT #1,@ctr$(hd3$,0)
  201.     PRINT #2,""+@ctr$(" "+title$+" ",8)
  202.     PRINT #2,@ctr$(message$+" : "+register$,0)
  203.     PRINT #2
  204.     PRINT #2,@ctr$(hd1$,0)
  205.     PRINT #2,@ctr$(hd2$,0)
  206.     PRINT #2,@ctr$(hd3$,0)
  207.     PRINT #3,"E"+@ctr$("c3b2 "+title$+" c0b3",12)
  208.     PRINT #3,@ctr$("b1"+message$+" : "+register$+"b3",6)
  209.     PRINT #3
  210.     PRINT #3,@ctr$(hd1$,0)
  211.     PRINT #3,@ctr$(hd2$,0)
  212.     PRINT #3,@ctr$(hd3$,0)
  213.     PRINT #4,"E"+@ctr$("p "+title$+" q",4)
  214.     PRINT #4,@ctr$(message$+" : "+register$,0)
  215.     PRINT #4
  216.     PRINT #4,@ctr$(hd1$,0)
  217.     PRINT #4,@ctr$(hd2$,0)
  218.     PRINT #4,@ctr$(hd3$,0)
  219.     dlc$="    "
  220.     ulc$="    "
  221.     ovc$="    "
  222.     dlp$="     "
  223.     ulp$="     "
  224.     ovp$="     "
  225.     FOR r#=0 TO maxchk|
  226.       IF chk$(r#)<>""
  227.         RSET dlc$=STR$(txtov#(r#,0))
  228.         RSET ulc$=STR$(txtov#(r#,1))
  229.         RSET ovc$=STR$(txtov#(r#,0)+txtov#(r#,1))
  230.         dlp#=((txtov#(r#,0)/dltot#)*100)
  231.         ulp#=((txtov#(r#,1)/ultot#)*100)
  232.         ovp#=(((txtov#(r#,0)+txtov#(r#,1))/totov#)*100)
  233.         RSET dlp$=STR$(TRUNC(dlp#))+"."+MID$(STR$(FRAC(dlp#)),3,2)
  234.         RSET ulp$=STR$(TRUNC(ulp#))+"."+MID$(STR$(FRAC(ulp#)),3,2)
  235.         RSET ovp$=STR$(TRUNC(ovp#))+"."+MID$(STR$(FRAC(ovp#)),3,2)
  236.         IF RIGHT$(dlp$,1)="."
  237.           RSET dlp$=LEFT$(dlp$,LEN(dlp$)-1)
  238.         ENDIF
  239.         IF RIGHT$(ulp$,1)="."
  240.           RSET ulp$=LEFT$(ulp$,LEN(ulp$)-1)
  241.         ENDIF
  242.         IF RIGHT$(ovp$,1)="."
  243.           RSET ovp$=LEFT$(ovp$,LEN(ovp$)-1)
  244.         ENDIF
  245.         line$=LEFT$(chkd$(r#)+SPACE$(16),16)
  246.         line$=line$+RIGHT$(SPACE$(10)+dlc$,6)+"   "+LEFT$(dlp$+"%"+SPACE$(10),8)
  247.         line$=line$+RIGHT$(SPACE$(10)+ulc$,6)+"   "+LEFT$(ulp$+"%"+SPACE$(10),8)
  248.         line$=line$+RIGHT$(SPACE$(10)+ovc$,6)+"   "+LEFT$(ovp$+"%"+SPACE$(10),8)
  249.         PRINT @ctr$(line$,2)
  250.         PRINT #1,@ctr$(line$,2)
  251.         PRINT #2,@ctr$(line$,2)
  252.         PRINT #3,@ctr$(line$,2)
  253.         PRINT #4,@ctr$(line$,2)
  254.       ENDIF
  255.     NEXT r#
  256.   ENDIF
  257.   CLOSE
  258. RETURN
  259. '
  260. > PROCEDURE convert_log
  261.   ARRAYFILL chk#(),0
  262.   totdl#=0
  263.   ' ### Work out the count for each xfer ###
  264.   FOR xfer#=0 TO maxchk|
  265.     FOR r#=0 TO dl#
  266.       IF LEFT$(UPPER$(dl$(r#)),LEN(chk$(xfer#)))=UPPER$(chk$(xfer#)) AND chk$(xfer#)<>""
  267.         dl$(r#)=""
  268.         INC chk#(xfer#,0)
  269.         INC txtov#(xfer#,ov#)
  270.       ENDIF
  271.     NEXT r#
  272.   NEXT xfer#
  273.   ' ### Work out total download count ###
  274.   FOR xfer#=0 TO maxchk|
  275.     IF chk$(xfer#)<>""
  276.       totdl#=totdl#+chk#(xfer#,0)
  277.     ENDIF
  278.   NEXT xfer#
  279.   ' ### Work out each xfer's percentage ###
  280.   FOR xfer#=0 TO maxchk|
  281.     IF chk$(xfer#)<>""
  282.       chk#(xfer#,1)=(chk#(xfer#,0)/totdl#)*100
  283.     ENDIF
  284.   NEXT xfer#
  285. RETURN
  286. > PROCEDURE make_vert_graph(fname$,message$)
  287.   OPEN "O",#1,fname$+".ASC"
  288.   OPEN "O",#2,fname$+".ANS"
  289.   OPEN "O",#3,fname$+".VTC"
  290.   OPEN "O",#4,fname$+".VTM"
  291.   CLS
  292.   title$="QBBS PUG (Protocol Usage Graph) "+version$+"   Copyright (c) 1992 M.J.Matts"
  293.   IF rez|=1
  294.     PRINT "E"+@ctr$("c3b2 "+title$+" c0b3",12)
  295.     PRINT @ctr$("b1"+message$+" : "+register$+"b3",6)
  296.   ELSE
  297.     PRINT "E"+@ctr$("p "+title$+" q",4)
  298.     PRINT @ctr$(message$+" : "+register$,4)
  299.   ENDIF
  300.   PRINT #1,@ctr$(title$,0)
  301.   PRINT #1,@ctr$(message$+" : "+register$,0)
  302.   PRINT #2,""+@ctr$(" "+title$+" ",8)
  303.   PRINT #2,@ctr$(message$+" : "+register$,0)
  304.   PRINT #3,"E"+@ctr$("c3b2 "+title$+" c0b3",12)
  305.   PRINT #3,@ctr$("b1"+message$+" : "+register$+"b3",6)
  306.   PRINT #4,"E"+@ctr$("p "+title$+" q",4)
  307.   PRINT #4,@ctr$(message$+" : "+register$,0)
  308.   pe$="   "
  309.   pert$="   PERCENTAGE%   "
  310.   pro#=0
  311.   ab$="  "
  312.   rr#=0
  313.   maxchrs|=0
  314.   FOR xfer#=0 TO maxchk|
  315.     IF chk$(xfer#)<>""
  316.       INC maxchrs|
  317.     ENDIF
  318.   NEXT xfer#
  319.   FOR r#=100 TO 0.1 STEP -6.25
  320.     ans#=0
  321.     vtm#=0
  322.     vtc#=0
  323.     asc$=""
  324.     ans$=""
  325.     vtc$=""
  326.     vtm$=""
  327.     RSET pe$=STR$(INT(r#))
  328.     INC rr#
  329.     IF pe$="100" OR pe$=" 75" OR pe$=" 50" OR pe$=" 25"
  330.       asc$=asc$+MID$(pert$,rr#,1)+pe$+"| "
  331.       ans$=ans$+MID$(pert$,rr#,1)+pe$+"| "
  332.       vtc$=vtc$+MID$(pert$,rr#,1)+pe$+"c1 c0 "
  333.       vtm$=vtm$+MID$(pert$,rr#,1)+pe$+"p|q "
  334.     ELSE
  335.       asc$=asc$+MID$(pert$,rr#,1)+"  -"+"| "
  336.       ans$=ans$+MID$(pert$,rr#,1)+"  -"+"| "
  337.       vtc$=vtc$+MID$(pert$,rr#,1)+"  -"+"c1 c0 "
  338.       vtm$=vtm$+MID$(pert$,rr#,1)+"  -"+"p|q "
  339.     ENDIF
  340.     ADD ans#,8
  341.     ADD vtc#,6
  342.     ADD vtm#,4
  343.     FOR xfer#=0 TO maxchk|
  344.       IF chk$(xfer#)<>""
  345.         IF chk#(xfer#,1)>r#-6.25
  346.           asc$=asc$+"∞∞ "
  347.           ans$=ans$+"   "
  348.           vtc$=vtc$+"c2  c0 "
  349.           vtm$=vtm$+"p  q "
  350.           ADD ans#,8
  351.           ADD vtc#,6
  352.           ADD vtm#,4
  353.         ELSE
  354.           asc$=asc$+"   "
  355.           ans$=ans$+"   "
  356.           vtc$=vtc$+"   "
  357.           vtm$=vtm$+"   "
  358.         ENDIF
  359.       ENDIF
  360.     NEXT xfer#
  361.     IF chkd$(pro#)<>""
  362.       RSET ab$=STR$(pro#+1)
  363.       chkd$(pro#)=chkd$(pro#)
  364.       asc$=asc$+"|"+ab$+":"+LEFT$(chkd$(pro#)+" ("+STR$(chk#(pro#,0))+")"+SPACE$(15),15)
  365.       ans$=ans$+"|"+ab$+":"+LEFT$(chkd$(pro#)+" ("+STR$(chk#(pro#,0))+")"+SPACE$(15),15)
  366.       vtc$=vtc$+"c1 c0"+ab$+":"+LEFT$(chkd$(pro#)+" ("+STR$(chk#(pro#,0))+")"+SPACE$(15),15)
  367.       vtm$=vtm$+"p|q"+ab$+":"+LEFT$(chkd$(pro#)+" ("+STR$(chk#(pro#,0))+")"+SPACE$(15),15)
  368.     ELSE
  369.       asc$=asc$+"|"+SPACE$(18)
  370.       ans$=ans$+"|"+SPACE$(18)
  371.       vtc$=vtc$+"c1 c0"+SPACE$(18)
  372.       vtm$=vtm$+"p|q"+SPACE$(18)
  373.     ENDIF
  374.     ADD ans#,8
  375.     ADD vtc#,6
  376.     ADD vtm#,4
  377.     IF rez|=1
  378.       PRINT @ctr$(vtc$,vtc#)
  379.     ELSE
  380.       PRINT @ctr$(vtm$,vtm#)
  381.     ENDIF
  382.     PRINT #1,@ctr$(asc$,0)
  383.     PRINT #2,@ctr$(ans$,ans#)
  384.     PRINT #3,@ctr$(vtc$,vtc#)
  385.     PRINT #4,@ctr$(vtm$,vtm#)
  386.     INC pro#
  387.   NEXT r#
  388.   asc$=""
  389.   ans$=""
  390.   vtc$=""
  391.   vtm$=""
  392.   ans#=0
  393.   vtc#=0
  394.   vtm#=0
  395.   asc$=asc$+"   0+"
  396.   ans$=ans$+"   0+"
  397.   vtc$=vtc$+"   0c1 "
  398.   vtm$=vtm$+"   0p+"
  399.   FOR xfer#=0 TO maxchk|
  400.     IF chk$(xfer#)<>""
  401.       asc$=asc$+"---"
  402.       ans$=ans$+"---"
  403.       vtc$=vtc$+"   "
  404.       vtm$=vtm$+"---"
  405.     ENDIF
  406.   NEXT xfer#
  407.   asc$=asc$+"-+"
  408.   ans$=ans$+"-+"
  409.   vtc$=vtc$+"  c0"
  410.   vtm$=vtm$+"-+q"
  411.   ADD ans#,9
  412.   ADD vtc#,6
  413.   ADD vtm#,4
  414.   IF chkd$(pro#)<>""
  415.     RSET ab$=STR$(pro#+1)
  416.     chkd$(pro#)=chkd$(pro#)
  417.     asc$=asc$+ab$+":"+LEFT$(chkd$(pro#)+" ("+STR$(chk#(pro#,0))+")"+SPACE$(15),15)
  418.     ans$=ans$+ab$+":"+LEFT$(chkd$(pro#)+" ("+STR$(chk#(pro#,0))+")"+SPACE$(15),15)
  419.     vtc$=vtc$+ab$+":"+LEFT$(chkd$(pro#)+" ("+STR$(chk#(pro#,0))+")"+SPACE$(15),15)
  420.     vtm$=vtm$+ab$+":"+LEFT$(chkd$(pro#)+" ("+STR$(chk#(pro#,0))+")"+SPACE$(15),15)
  421.   ELSE
  422.     asc$=asc$+SPACE$(18)
  423.     ans$=ans$+SPACE$(18)
  424.     vtc$=vtc$+SPACE$(18)
  425.     vtm$=vtm$+SPACE$(18)
  426.   ENDIF
  427.   IF rez|=1
  428.     PRINT @ctr$(vtc$,vtc#)
  429.   ELSE
  430.     PRINT @ctr$(vtm$,vtm#)
  431.   ENDIF
  432.   PRINT #1,@ctr$(asc$,0)
  433.   PRINT #2,@ctr$(ans$,ans#)
  434.   PRINT #3,@ctr$(vtc$,vtc#)
  435.   PRINT #4,@ctr$(vtm$,vtm#)
  436.   nn#=0
  437.   pe$="  "
  438.   ans#=0
  439.   vtc#=0
  440.   vtm#=0
  441.   asc$="       "
  442.   ans$="       "
  443.   vtc$="       "
  444.   vtm$="       "
  445.   FOR xfer#=0 TO maxchk|
  446.     IF chk$(xfer#)<>""
  447.       INC nn#
  448.       RSET pe$=STR$(nn#)
  449.       asc$=asc$+pe$+" "
  450.       ans$=ans$+pe$+" "
  451.       vtc$=vtc$+pe$+" "
  452.       vtm$=vtm$+pe$+" "
  453.     ENDIF
  454.   NEXT xfer#
  455.   IF rez|=1
  456.     PRINT @ctr$(vtc$+SPACE$(20),0)
  457.   ELSE
  458.     PRINT @ctr$(vtm$+SPACE$(20),0)
  459.   ENDIF
  460.   PRINT #1,@ctr$(asc$+SPACE$(20),0)
  461.   PRINT #2,@ctr$(ans$+SPACE$(20),ans#)
  462.   PRINT #3,@ctr$(vtc$+SPACE$(20),vtc#)
  463.   PRINT #4,@ctr$(vtm$+SPACE$(20),vtm#)
  464.   CLOSE
  465. RETURN
  466. > PROCEDURE make_hori_graph(fname$,message$)
  467.   OPEN "O",#1,fname$+".ASC"
  468.   OPEN "O",#2,fname$+".ANS"
  469.   OPEN "O",#3,fname$+".VTC"
  470.   OPEN "O",#4,fname$+".VTM"
  471.   CLS
  472.   title$="QBBS PUG (Protocol Usage Graph) "+version$+"   Copyright (c) 1992 M.J.Matts"
  473.   IF rez|=1
  474.     PRINT "E"+@ctr$("c3b2 "+title$+" c0b3",12)
  475.     PRINT @ctr$("b1"+message$+" : "+register$+"b3",6)
  476.   ELSE
  477.     PRINT "E"+@ctr$("p "+title$+" q",4)
  478.     PRINT @ctr$(message$+" : "+register$,4)
  479.   ENDIF
  480.   PRINT #1,@ctr$(title$,0)
  481.   PRINT #1,@ctr$(message$+" : "+register$,0)
  482.   PRINT #2,""+@ctr$(" "+title$+" ",8)
  483.   PRINT #2,@ctr$(message$+" : "+register$,0)
  484.   PRINT #3,"E"+@ctr$("c3b2 "+title$+" c0b3",12)
  485.   PRINT #3,@ctr$("b1"+message$+" : "+register$+"b3",6)
  486.   PRINT #4,"E"+@ctr$("p "+title$+" q",4)
  487.   PRINT #4,@ctr$(message$+" : "+register$,0)
  488.   pe$="   "
  489.   asc$=CHR$(10)+CHR$(13)+SPACE$(20)
  490.   FOR r#=0 TO 100 STEP 6.25
  491.     RSET pe$=STR$(INT(r#))
  492.     IF pe$="100" OR pe$=" 75" OR pe$=" 50" OR pe$=" 25" OR pe$="  0"
  493.       asc$=asc$+pe$
  494.     ELSE
  495.       asc$=asc$+"   "
  496.     ENDIF
  497.   NEXT r#
  498.   PRINT asc$
  499.   PRINT #1,asc$
  500.   PRINT #2,asc$
  501.   PRINT #3,asc$
  502.   PRINT #4,asc$
  503.   '
  504.   asc$=SPACE$(20)+"+"+STRING$(50,"-")
  505.   ans$=SPACE$(20)+"+"+STRING$(50,"-")+""
  506.   vtc$=SPACE$(20)+"c1"+STRING$(51," ")+"c0"
  507.   vtm$=SPACE$(20)+"p+"+STRING$(50,"-")+"q"
  508.   IF rez|=1
  509.     PRINT vtc$
  510.   ELSE
  511.     PRINT vtm$
  512.   ENDIF
  513.   PRINT #1,asc$
  514.   PRINT #2,ans$
  515.   PRINT #3,vtc$
  516.   PRINT #4,vtm$
  517.   FOR ho#=0 TO maxchk|
  518.     IF chkd$(ho#)<>""
  519.       asc$=""
  520.       ans$=""
  521.       vtc$=""
  522.       vtm$=""
  523.       asc$=RIGHT$(SPACE$(20)+chkd$(ho#)+" ("+STR$(chk#(ho#,0))+")",19)+" |"
  524.       asc$=asc$+STRING$(chk#(ho#,1)/2,"∞")
  525.       ans$=RIGHT$(SPACE$(20)+chkd$(ho#)+" ("+STR$(chk#(ho#,0))+")",19)+" | "
  526.       ans$=ans$+""+STRING$(chk#(ho#,1)/2,"#")+""
  527.       vtc$=RIGHT$(SPACE$(20)+chkd$(ho#)+" ("+STR$(chk#(ho#,0))+")",19)+" c1  c0"
  528.       vtc$=vtc$+"c2"+STRING$(chk#(ho#,1)/2," ")+"c0"
  529.       vtm$=RIGHT$(SPACE$(20)+chkd$(ho#)+" ("+STR$(chk#(ho#,0))+")",19)+" p| q"
  530.       vtm$=vtm$+"p"+STRING$(chk#(ho#,1)/2,"∞")+"q"
  531.       PRINT #1,asc$
  532.       PRINT #2,ans$
  533.       PRINT #3,vtc$
  534.       PRINT #4,vtm$
  535.       IF rez|=1
  536.         PRINT vtc$
  537.       ELSE
  538.         PRINT vtm$
  539.       ENDIF
  540.     ENDIF
  541.   NEXT ho#
  542.   asc$=SPACE$(20)+"+"+STRING$(50,"-")
  543.   ans$=SPACE$(20)+"+"+STRING$(50,"-")+""
  544.   vtc$=SPACE$(20)+"c1"+STRING$(51," ")+"c0"
  545.   vtm$=SPACE$(20)+"p+"+STRING$(50,"-")+"q"
  546.   IF rez|=1
  547.     PRINT vtc$
  548.   ELSE
  549.     PRINT vtm$
  550.   ENDIF
  551.   PRINT #1,asc$
  552.   PRINT #2,ans$
  553.   PRINT #3,vtc$
  554.   PRINT #4,vtm$
  555.   CLOSE
  556. RETURN
  557. '
  558. > FUNCTION ctr$(tmptxt$,ofset#)
  559.   ofset#=ofset#/2
  560.   tmptxt$=SPACE$((40+ofset#)-(LEN(tmptxt$)/2))+tmptxt$
  561.   ofset#=0
  562.   RETURN tmptxt$
  563. ENDFUNC
  564.