home *** CD-ROM | disk | FTP | other *** search
/ No Fragments Archive 10: Diskmags / nf_archive_10.iso / MAGS / ATUPDATE / ATUPDT01.MSA / SPRINT / SPRINT.DOC < prev    next >
Text File  |  2010-04-22  |  8KB  |  171 lines

  1.                         Sprint V1.2
  2.              (c) Unicorn Publications 25-8-1993
  3.  
  4.                      By Kelvin Unsworth
  5.  
  6.  
  7.  
  8. There should be 4 files.
  9.  
  10.  SPRINT.PRG     Printer spooler
  11.  SPRINT.DOC     This file
  12.  SPCFG.ACC      Accessary to configure Sprint temporarily  
  13.  SPCFG.PRG      Configure Sprint Permanently 
  14.  
  15.          
  16.               *********WARNING**********
  17.  
  18. Do  not mix Sprint V1.1 files with Sprint V1.2 files as they  will 
  19. not recognise each other correctly
  20.  
  21.               **************************
  22.  
  23.  
  24.                Getting started.
  25.  
  26.  
  27.    If you want Sprint to load at boot up place SPRINT.PRG in  your 
  28. AUTO folder else run it from the desktop when you need it.  If you 
  29. run  the program from a shell of some type you will fragment  your 
  30. memory so run it from the desktop by double clicking on it. If you 
  31. think you might want to alter the configuration while running then 
  32. put  SPCFG.ACC in your root directory.  It is a good idea to  have 
  33. this  installed to start with until you have worked out  the  best 
  34. configuration for your system. SPCFG.PRG can be called at any time 
  35. from any place.
  36.  
  37.  
  38.                Brief overview.
  39.  
  40.  
  41.   Sprint is a configurable printer spooler.  It is configurable in 
  42. three ways:-
  43.  
  44. Buffer size.
  45.  This can be from 2 bytes to 4 Giga bytes (alas the ST only allows 
  46. up to approximately 3.7 meg). The pre-configured size is 32K.
  47.  
  48. Batch size.
  49.   All  the  spoolers  I have come across only send  one  byte  per 
  50. interupt,  thus the maximum through put is 50,  60 or 72 bytes per 
  51. second.  If  your printer can print faster than this then you  are 
  52. holding  your printer up.  Sprint can be configured to send up  to 
  53. 1000  bytes per interupt.  This works out at a maximum  of  72,000 
  54. bytes  per second.  The centronics port of your  printer  probably 
  55. doesn't work this fast though. The pre-configured size is 32. 
  56.  
  57. Time out.
  58.   This allows printing to the buffer even when the printer is  off 
  59. line  and maximises the performance when the printer has a  buffer 
  60. of it's own. The pre-configured time is 4mS per interupt.  
  61.  
  62. Clear.
  63.   This clears the buffer.  ie.  it clears out the spool buffer and 
  64. does  not  transmit what is left in there.  This is for  when  the 
  65. printer  throws a wobbly and you don't want to  continue  printing 
  66. what's left but would like to start again.
  67.  
  68. Off.
  69.   This will turn the spooler and faster through put off.  This  is 
  70. for  the odd program clash.  Programs with their own spoolers  are 
  71. the biggest culprits. 
  72.  
  73.  
  74.                More detail.
  75.  
  76.   Sprint is only of use if the program you are running can produce 
  77. output  faster  than your printer can print (ignore  the  printers 
  78. buffer it may fill).  The spool buffer may be any size you like so 
  79. you  can tailor it to your system,  it can only be  configured  by 
  80. SPCFG.PRG and not by SPCFG.ACC though.  If you set a large  buffer 
  81. and your program only produces output marginally faster than  your 
  82. printer  then  you  will  use hardly any  buffer  and  just  waste 
  83. memory.
  84.   The first part of Sprint links into the vector for sending  data 
  85. to  the printer port and redirects it to the buffer  instead.  The 
  86. second  part links into the VBI system and sends the data  to  the 
  87. printer 50 to 72 times a second.
  88.   This  is where things get a bit  complicated.  Both  halves  are 
  89. running  apparently  at the same time,  the first part  fills  the 
  90. buffer  while the second empties it.  When an interupt occurs  the 
  91. second  part  gets a byte to send and then checks to  see  if  the 
  92. printer  is ready.  If the printer is,  it sends it and  then  get 
  93. another byte to send and so on until the batch size is reached  or 
  94. the buffer is empty then returns from the interupt. If the printer 
  95. is  NOT ready then if there wasn't a time out the  computer  would 
  96. just sit there waiting for the printer stopping all operations ie. 
  97. the application you are running.  Also if the printer has a buffer 
  98. this  would allow a through put of say 10,000 bytes a  second  but 
  99. once it filled this would drop to say 200 bytes a second.  If  the 
  100. batch  size  was set to 4 then the printer buffer would  never  be 
  101. used  and you would have to increase the spool buffer to  get  the 
  102. same  results.  If the batch size was 200 the data would  transfer 
  103. fast  until the printer buffer filled and then stop  ALL  computer 
  104. activity  until all 200 bytes were sent at say 200 bytes a  second 
  105. (printer speed) and then return from the interupt for a maximum of 
  106. 20 mS.  Thus the activity you are trying to perform while printing  
  107. will have a maximum of 2% of the processor time (average 1%).
  108.   The  Time  out facility gets around this  allowing  the  maximum 
  109. through put to the printer at all times and maximum processor time 
  110. for you.  The second part only checks the printer to see if it  is 
  111. ready  for  a limited time and if it is not then it  abandons  the 
  112. rest of that batch to be transmitted (the effective batch size  is 
  113. dropped to the most efficient for the printer).  With a setting of 
  114. 4mS and the printer off line you get 80% of the processor time for 
  115. your  application.  When the spooler is not sending  or  receiving 
  116. data  it takes about 0.05% of the processor time in  checking  the 
  117. buffer (accessories take about 1% each).
  118.   If  you are to send graphics data then the printer  can  receive 
  119. this much faster. ie. an Epson 24pin receives ascii at 200 cps but 
  120. graphics  at about 1400 bytes per second,  thus a batch size of  4 
  121. will send text ok but will be very slow for graphics.  A value  of 
  122. 28 would be better as the time out facility would compensate  when 
  123. sending text if the printer buffer filled.  If your printer has  a 
  124. large buffer (mine has 71K) then a value higher than 28 may be  of 
  125. benefit.
  126.   If you have Sprint set up with a batch of say 4 and you start to 
  127. print  graphics then you can call the accessary and up  the  batch 
  128. size to say 30 even while you are printing.  Leaving the entry  in 
  129. the dialog empty will leave the setting as it is.
  130.   If when the printer buffer is full, the mouse is juddery, either 
  131. the  set the batch size smaller or reduce the timeout  (or  both). 
  132. If  this  happens the second part of the program  is  holding  the 
  133. interupt  too long and preventing the mouse driver  software  from 
  134. operating all the time. The code has been written to minimise this 
  135. but it can still happen if the batch size is too large or  timeout 
  136. too long. 
  137.  
  138.  
  139.        IMPORTANT NOTES
  140.  
  141.    If you use Fpprnt to speed up output to the printer  you  DON'T 
  142. need it with Sprint. Sprint also speeds up output. The TOS out put 
  143. code is very slow,  I can't imagine how they managed to get it  so 
  144. bad! The theoretical output of Sprint is not as high as Fpprnt due 
  145. to spooler overheads but the actual output is the same (if you are 
  146. configured  correct).      Fpprnt  will stop all activity  if  the 
  147. printer  is off line where as Sprint will continue and  just  save 
  148. the  data.  If you want Fpprnt installed all the time  and  Sprint 
  149. only  once in a while,  say if you are short of memory.  Then  run 
  150. Fpprnt  as  normal,  when you run Sprint later it  will  grab  the 
  151. vectors  off  Fpprnt thus disabling it.  If you run  Fpprnt  after 
  152. Sprint it will grab the vectors off Sprint disabling it  (although 
  153. the buffer will still empty it just won't fill!).
  154.  
  155.  
  156.   If there are any comment or problems you can contact me at:-
  157.  
  158.  
  159.  Unicorn Publications,
  160.  152,Palmerston Road,
  161.  South Stifford,
  162.  Grays,
  163.  Essex.
  164.  RM16-1YP
  165.  
  166. or as PI_RAT@CIX.compulink.co.uk
  167.  
  168.  
  169.  
  170.  
  171.