home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: SysTools / SysTools.zip / tp-134.zip / Enviro.HST < prev    next >
Text File  |  2000-05-24  |  23KB  |  566 lines

  1. LM78/Winbond Enviromental Monitor: Development History
  2. ======================================================
  3.  
  4. Legend:
  5. -------
  6. ! = bug-fix related information
  7. * = new feature/addition
  8. @ = change of sorts
  9.  
  10. Version Information:
  11. V1.00 = Build 000
  12. V1.01 = Build 001 and so on...
  13.  
  14.  
  15.  
  16. Version 1.00 (Sept. 6th, 1998) 
  17. ------------------------------
  18. For internal testing only.
  19.  
  20. *Based almost completely on the VPascal V2.0 beta 2 code of Christoph
  21.  Bratschi and Bj¢rn Mork's.
  22.  
  23.  
  24. Version 1.01 (Sept. 10th, 1998)
  25. -------------------------------
  26. For internal testing only.
  27.  
  28. *Major overhaul of the library functions and the main program; name 
  29.  changes; and most calculation code moved into the library to reduce
  30.  hard-to-read code in the main program and achieve what I call DDOR
  31.  (Direct Data Output Routines).  Aha!  One more useless acronym!  :)
  32.  
  33. *Added Bank-Switching support for Winbond W83781D.
  34.  
  35. *Added CPU Temperature Monitoring for Winbond W83781D.
  36.  
  37.  
  38. Version 1.02 (Sept. 13th, 1998)
  39. -------------------------------
  40. For internal testing only.
  41.  
  42. !BILLIONS of THANKS to Kevin Wu of EPoX: with his single e-mail
  43.  answer and a few minutes of compile and recompile I managed to get 
  44.  the Bank-Switching support for Winbond W83781D into perfect working
  45.  condition.
  46.  
  47. !Library functions will now REALLY clean up after themselves, so the
  48.  next time another program access the chip it will not be accessing a
  49.  complete mess that gives really weird results or sometimes just plays
  50.  dead.  :)
  51.  
  52. *If any other program that accesses the monitoring chip, and kind of
  53.  messes it up, Thermoprotect will reset the chip to its original
  54.  power-on default state.
  55.  
  56.  
  57. Version 1.03 (Oct. 15th, 1998)
  58. ------------------------------
  59.  
  60. !Occasionally the enviromental-monitoring chip (in my case the Winbond
  61.  W83781D) would give 1 as the time it took the fan for one revolution,
  62.  which in my case, caused the program to report a fan speed of 675,000
  63.  RPM--if that's true, I think I'm gonna run away from my computer VERY
  64.  QUICKLY.  :)  The program now performs a second check to see if
  65.  anything seems wrong with the RPMs and, if so, the reported RPM will
  66.  be 0 instead of some insanely high number.
  67.  
  68. !Bug Warning, it seems that after the Bank-Switching support was added
  69.  the LM78 chip took it personally and doesn't wanna work.  A fix for
  70.  this is coming soon, so don't worry.  In the meantime, if you use 
  71.  this program on LM78 chips you may get really weird readings.  :)
  72.  
  73.  
  74. Version 1.04 (Oct. 16th, 1998)
  75. ------------------------------
  76. For internal testing only.
  77.  
  78. !Found another bug regarding the display of fan speed... now instead of
  79.  the insanely high RPM, it gives me a couple 2 RPM reading after about
  80.  24 hrs of use... Added code to aid the detection of this bug.  Not
  81.  useful for general public, thus not released.
  82.  
  83.  
  84. Version 1.05 (Dec. 1st, 1998)
  85. -----------------------------
  86.  
  87. !LM78 incompatibility fixed, now it will disable Bank-Switching upon
  88.  detecting LM78 or LM78-J
  89.  
  90. *Now ThermoProtect will tell you what enviromental chip you have,
  91.  in somewhat plain English... :) Instead of code only, it will give
  92.  you both the Chip_ID number and their name. I only have data for
  93.  Winbond's W83781D and National Semiconductor's LM78/LM78-J. So
  94.  let me know if the program worked on your computer but is telling
  95.  you that it can't figure out what chip it is.
  96.  
  97. *Newly revised English document, thanks to Eric Walker
  98.  (ewalker@highboskage.com) for his effort. I hope those English docs
  99.  are easier on your eyes now... :)
  100.  
  101. *Now ThermoProtect have a Cute-O Icon, made by Klaus Staedtler
  102.  (stadt@ibm.net), I hope that ThermoProtect will now look nice and
  103.  fitting on your desktop.
  104.  
  105.  
  106. Version 1.06 (Dec. 5th, 1998)
  107. -----------------------------
  108.  
  109. !ThermoProtect is now about 2x as big as before, but fear not...
  110.  The increase in size is mainly due to the additional text required
  111.  for both English and Chinese display to fit in one program.  It
  112.  should actually be a little faster now, but uses about 10KB more
  113.  memory (as if you are gonna see any difference in system resource
  114.  useage :) ).
  115.  
  116. *Some routines in the library is now somewhat optimized, should have
  117.  a tad bit lower CPU requirement.  Since ThermoProtect already uses
  118.  so little, the result will be hard to see.
  119.  
  120. *Now ThermoProtect comes in ONE single file for both Chinese and
  121.  English version.  This is a complete overhaul of the display routines,
  122.  and will allow easier program maintance and easier to add support
  123.  for other languages.  ThermoProtect will automatically ID the code
  124.  page that it is under, or you can override the detection with command
  125.  line parameter.
  126.  
  127. *LM79 Identification code added, not that earlier ThermoProtect would
  128.  have any problem using LM79, but I figured it would be nice to have
  129.  ThermoProtect correctly ID the chip.
  130.  
  131. *Newly revised Chinese document, thanks to Amigo Chan
  132.  (amigoccs@tpts4.seed.net.tw) for going through my PITA of a doc. :)
  133.  
  134.  
  135. Version V1.07 (Dec. 11th, 1998)
  136. -------------------------------
  137.  
  138. !LM78 Detection routine will be triggered on some system with Winbond
  139.  W83781D chipset, causing the user to lose 2 of the thermal probe input.
  140.  The library is now updated and should be able to detect the proper chip.
  141.  (Thanks to Konzmann@swol.de for pointing this bug out...)
  142.  
  143. @Removed some useless lines of code from the library, those were intended
  144.  for some features that had been abandoned because of that I found better
  145.  ways of doing some of the stuff. Should be just a tiny bit faster... :)
  146.  
  147.  
  148. Version V1.08 (Dec. 11th, 1998)
  149. -------------------------------
  150.  
  151. @Added 500ms delay after the chip's initialization code, hopefully this
  152.  will clear up some abnormal reading that some people might have.
  153.  (Added Dec, 19, 1998)
  154.  User had confirmed that the bug was fixed by this measure.
  155.  
  156.  
  157. Version V1.09 (Dec. 19th, 1998)
  158. -------------------------------
  159.  
  160. *NEW ThermoAlarm feature in ThermoProtect, now the word "Protect" in the
  161.  name "ThermoProtect" is at least somewhat justified! :)  TP will monitor
  162.  specified values (fans' speed and temperatures) and warn you if anything
  163.  goes wrong with both graphical and audio warnings.
  164.  
  165. @Command line parameter is now handled by the Public Domain program CmdLin,
  166.  CmdLin is a "Command Line Parameter Processor" designed for ease of use.
  167.  However, some of the feature were rather limited, but I've found that
  168.  CmdLin is built on fairly solid and good foundations.  So I decided to
  169.  improve it a bit.  I had NO IDEA it could take me that long to just change
  170.  a few things... :)  But after the modification, the unit is no longer
  171.  100% compatible with the original (different style of parameter input),
  172.  and I do not know of any way to remain compatible while keeping the long
  173.  flag feature.  So, as a token of thanks to people who had worked on
  174.  CmdLin, I've decided to release my version as CmdLin2, which means that
  175.  it is quite a bit different from the original in a few areas.  CmdLin2.Pas
  176.  will be available in source code form, send E-Mail for requesting that
  177.  file.
  178.  
  179. @Different command line Parameter style, now it requires /Code: or /Code=
  180.  before entering the code page value.
  181.  
  182. @Getting rid of more garbage in my code, it should be pretty clean now,
  183.  
  184. @A major revision of the document, thanks to Eric Walker for proof reading
  185.  so much of my lousy writing.
  186.  
  187. @A few lines on the display is now changed to be more generic, to fit a
  188.  broader spectrum of motherboard configuration.
  189.  
  190.  
  191. Version V1.10 (Dec. 20th, 1998)
  192. -------------------------------
  193.  
  194. *ThermoAlarm did not indicate which input was being guarded, thus
  195.  sometimes a bad parameter could cause some "unprotected" inputs.
  196.  Now all of the guarded input will have a '*' symbole at the end of
  197.  the line, so it will be easy to tell if you missed anything or not.
  198.  
  199.  
  200. Version V1.11 (Dec. 20th, 1998)
  201. -------------------------------
  202. For internal testing only.
  203.  
  204. *Reduced the amount of branches during the executing loop, should
  205.  use a few bytes more memory space, but should at least be 10% faster.
  206.  (Removing 6 branches)
  207.  
  208.  
  209. Version V1.12 (Jan. 10th, 1999)
  210. -------------------------------
  211.  
  212. *The "Traditional" Beep warning have been replaced, because the
  213.  warning beep is too easily disabled by setting the system sound's
  214.  warning beep to Disabled status... Now I use the OS/2 API DOSBeep
  215.  to provide warning sound that is highly unlikely to be disabled by
  216.  other programs/settings. And while I'm at that, I also give the
  217.  program two distinct warning sound so you can tell either it is
  218.  the temperature or the fan's going wrong.
  219.  
  220. *Different Chip numbering scheme is in place, now I'm assigning
  221.  chip numbers to each chip myself, because different vendors
  222.  with different chip numbers are making it difficult for me to use
  223.  their own chip/vendor number.
  224.  They are assigned in the following fashion:
  225.  1:   Winbond W83781D.
  226.  2:   Winbond W83782D.
  227.  99:  Unknown Winbond Enviromental Monitor.
  228.  101: National Semiconductor LM78.
  229.  102: National Semiconductor LM78-J.
  230.  102: National Semiconductor LM79.
  231.  
  232. !The first temperature probe's warning sound was missed in the
  233.  earlier versions, now it is fixed.
  234.  
  235.  
  236. Version V1.13 (Jan. 18th, 1999)
  237. -------------------------------
  238. Okay, okay, V1.12 wasn't the last text mode version... :)
  239. V1.13 is reserved for internal testing and limited distribution.
  240. (Read: Sent to ONE person :) )
  241.  
  242. *This version adds the ability to output to file, this feature
  243.  does not allow custom file name at this time.
  244.  
  245. !Fixed bug in Chip_ID routine, should work without problem now.
  246.  
  247.  
  248. Version V1.14 (Jan. 23th, 1999)
  249. -------------------------------
  250. Private Beta, not released to public.
  251.  
  252. *False ThermoAlarm rejection added, Winbond's chip may sometimes give
  253.  you 0 RPM for fan speed, this problem with the hardware has been fixed
  254.  by ThermoProtect's internal false alarm rejection system. I'm surprised
  255.  no one had mentioned about this problem but it seems that some chips
  256.  would give a fluke value once in a while (seems like I'm reading the
  257.  chip while it is updating the variables.).
  258.  
  259. @Now using CmdLin3 command line parameter processor, joint effort
  260.  between Jim Walsh, Kevin McCoy and ME! :)
  261.  
  262. !The command line input for Fan #3's ThermoAlarm feature is now
  263.  corrected. Now incorrect command line input to ThermoAlarm will
  264.  be detected properly.
  265.  
  266. !ThermoAlarm might indicated some input are protected even when
  267.  they are NOT PROTECTED. This bug has been corrected.
  268.  
  269.  
  270. Version V1.15 (Jan. 30th, 1999)
  271. -------------------------------
  272. Private Beta.
  273.  
  274. !Chip detection bug fixed, now it should be able to accurately
  275.  identify all known chips.
  276.  
  277.  
  278. Version V1.16 (Feb. 20th, 1999)
  279. -------------------------------
  280. Private Beta
  281.  
  282. *ThermoProtect is the FIRST (AFAIK) enviromental monitor
  283.  that FULLY SUPPORTS Winbond W83782D's output feature!  Other
  284.  programs might be compatible with it, but they do not exploit
  285.  the extra features that it provides! Yeah, one more thing to brag
  286.  about... <GR&D> ThermoProtect can now provide you with information
  287.  about information on your system's CMOS battery, helping you to
  288.  identify mysterious CMOS setting loss.
  289.  
  290.  
  291. Version V1.17 (Feb. 20th, 1999)
  292. -------------------------------
  293. Since ThermoProtect is built with easy to upgrade code, I've decided
  294. to add support for additional hardware to the program first, instead
  295. of making the GUI version.  And fear not, all the work done here will
  296. be translated to an even better GUI version... <VBG>
  297.  
  298. !Bug fix, ThermoProtect may not write the proper value into the
  299.  lowest fan speed variable when it drops to zero or non existent...
  300.  
  301. !Numerious bugfix related to the newer CmdLin3's value extraction
  302.  problems.
  303.  
  304.  
  305. Version V1.18 (Mar. 12th, 1999)
  306. -------------------------------
  307. Sorry, I claimed ThermoProtect to be capable of reading all inputs of
  308. Winbond chip, I was wrong... Before V1.18, ThermoProtect was not able
  309. to read the case intrusion trigger... But now that feature had been
  310. added!!! :)
  311.  
  312. *Case introusion detection, I use the plain Boolean output of True and
  313.  False to reduce the extra code and possibly speed it up a tiny bit...
  314.  :)
  315.  
  316. *Now added a small .CMD script to add timed execution and file rename
  317.  ability to ThermoProtect.
  318.  
  319. !ThermoProtect used to read all those ultra-high temperatures... Well,
  320.  I was wrong with those numbers, it actually was a signed 8bit integer.
  321.  And now that's been corrected. It should now show negtive numbers
  322.  where needed.
  323.  
  324.  
  325. Version V1.19 (Mar. 13th, 1999)
  326. -------------------------------
  327.  
  328. !Bug fix for fan's lowest speed register, now it will correctly show the
  329.  lowest speed when the ThermoAlarm is triggered. Instead of displaying
  330.  0RPM for lowest fan speed.
  331.  
  332.  
  333. Version V1.20 (Mar. 16th, 1999)
  334. -------------------------------
  335.  
  336. @ThermoProtect now will not output a single byte of text to the screen
  337.  when running in the /file mode, this is to clear up the screen and save
  338.  a bit or two of resource... :) And as well, the initializing time have
  339.  been cut by 3/4. :)
  340.  
  341. !The file output option was originally implemented as a stop-gap measure,
  342.  thus the text output wasn't quite 100% standard. Now it should conform
  343.  to the stadnard with CR, EOL and EOF charactors in the proper places.
  344.  
  345. !Spelling mistake on the display screen... :)
  346.  
  347.  
  348. Version V1.21 (Date forgotten :) )
  349. ----------------------------------
  350. Internal testing only, not released.
  351.  
  352. !Sometimes the "*" mark indicating ThermoAlarm will sorta double, this has
  353.  been fixed.
  354.  
  355.  
  356. Version V1.22 (Date forgotten as well... :) )
  357. ---------------------------------------------
  358. Internal testing only, not released.
  359.  
  360. @Modification to see if code change are required to use W83782D to read
  361.  PII/Cleron/PIII's on die thermal diode. The result? I was surprised as
  362.  well... NO EFFECT... Weird, hum? :)
  363.  
  364.  
  365. Version V1.23 (May 27th, 1999)
  366. ------------------------------
  367. Internal testing only, not released.
  368.  
  369. !Remember that W83782D users often sees WEIRD voltage in place of their
  370.  -12V and -5V? Well, guess what? Winbond decided to get cute on us, and
  371.  changed the way that the value is calculated... Now ThermoProtect will
  372.  automatically detect which formula should be used.
  373.  
  374.  
  375. Version V1.24 (May 30th, 1999)
  376. ------------------------------
  377. Internal testing only, not released.
  378.  
  379. @Experiment with Named Pipe data transfer to make ThermoProtect more
  380.  versitle. Experiment failed but what I learned helped me greatly on
  381.  the next version.
  382.  
  383.  
  384. Version V1.25 (Jun. 4th, 1999)
  385. ------------------------------
  386. First almost-GUI version!!! Yipee!!!
  387.  
  388. *Now Named Pipe works PERFECTLY!!! A copy of pre-configured SysBar/2's
  389.  Pipe Monitor is bundled with ThermoProtect, it will give ThermoProtect an
  390.  ELEGENT GUI interface, for only about 100 lines of code on my part. :)
  391.  The Named Pipe will work with your own program as well, see doc for detail.
  392.  Millions of Thanks to Dmitry I. Platonoff, the author of SysBar/2 for
  393.  creating SysBar/2 AND for allowing me to bundle a copy of Pipe Monitor
  394.  with ThermoProtect.
  395.  
  396. *Now Winbond W83782D's Stand By Voltage monitoring is supported. If I
  397.  missed some monitoring feature of all those chips that I supported, please
  398.  remind me. :)
  399.  
  400.  
  401. Version V1.26 (Jun. 8th, 1999)
  402. ------------------------------
  403.  
  404. !Fixes some cosmetic problem when using ThermoProtect with W83782D under
  405.  Chinese mode.
  406.  
  407. @Improved document on using the bundled Pipe Monitor with ThermoProtect's
  408.  pipe mode.
  409.  
  410. @Improved Named Pipe program expamle and explanation.
  411.  
  412.  
  413. Version V1.27 (Aug. 14th, 1999)
  414. -------------------------------
  415.  
  416. !*@The removal of command line parameter function and replacing it with
  417.    my own in-house configuration file subroutines.  After some cola and
  418.    lots of curses (I was cursing my computer... :) ), it seems to be working
  419.    quite well. For V1.27, you will have to manually edit the config file,
  420.    and V1.28 and on should come with a small utility that does it for you.
  421.  
  422.  
  423. Version V1.28 (Aug. 19th, 1999)
  424. -------------------------------
  425.  
  426. *Now ThermoProtect allows you to modify the time delay that is inserted
  427.  into the loop, from 1 second to 30 seconds, in millisecond resolution. :)
  428.  I personally don't have much use for this, but some people might.
  429.  
  430. *EnvSetup.EXE was created to aid you in editing enviro.cfg, it would allow
  431.  you to easily edit the Envrio.cfg file without worries of damaging it.
  432.  Since I was trying to develop this program as fast as I could, some numerical
  433.  and alphanumerical input are not completely idiot proof... So don't try to
  434.  enter funny stuff in just yet. :)
  435.  
  436. @Some people complained about the pipe opening failure warnings showing up,
  437.  so I removed them. Not a big change.
  438.  
  439.  
  440. Version V1.29 (Sep. 11th, 1999)
  441. -------------------------------
  442.  
  443. *Now ThermoProtect allows you to add temperature modifier to any or all of
  444.  the thermal probes. Some user requested this because BIOS in motherboards
  445.  like Asus P5A add a few degrees to the actual reading to "compensate"
  446.  for the distance between the thermal probe and CPU. Only zero or positive
  447.  values are accepted, negtive value are automatically changed to zero instead.
  448.  Negtive value are rejected because it have the potenical of becoming a tool
  449.  for people to play jokes on another for them to think the temperature of the
  450.  CPU is remarkably low, while the CPU is actually overheating. So negtive value
  451.  are substitued by zero automatically.
  452.  
  453. *Now EnvSetup.EXE allows temperature of in both Celsius and Fahrenheit, the
  454.  Fahrenheit input are automatically converted to Celsius due to the fact that
  455.  Celsius standard is what Winbond/National Semiconductor designed their chip
  456.  to output. Not to mention this author is incapable of thinking in terms of
  457.  Fahrenheit. :)
  458.  
  459.  
  460. Version V1.30 (Sep. 28th, 1999)
  461. -------------------------------
  462.  
  463. @First of all, a terrible earthquake struck the mid section of Taiwan. I'd
  464.  like to thank all those people who had or at least tried to help in this
  465.  incident. To all those rescue teams, be it local or foreign; who have braved
  466.  the danger just to save one more life. THANK YOU. The people of Taiwan will
  467.  always remember this. As for China, the action they have taken is most
  468.  regrettable, not only they didn't help the matter, but they were casuing
  469.  extra delays and troubles to those who like to help Taiwan out. That I
  470.  believe, will also be remembered by the people of Taiwan.
  471.  
  472.  I would like to ask the users of this program to see if it is possible for
  473.  you to donate some money for Taiwan's earthquake relief fund. If you cannot,
  474.  that's okay, at least pray for their safty and speedy return to normal life.
  475.  (And no, I don't care what religion you believe in.)
  476.  You may donate to:
  477.  
  478.  Custody Account,
  479.  Ministry of the Interior, ROC
  480.  The International Commercial Bank of China
  481.  ICBCTWTP007 
  482.  00709085418 
  483.  
  484.  or
  485.  
  486.  The Red Cross Society of the ROC National Headquarter
  487.  Hua Nan Commercial Bank 
  488.  HNBKTWTP121 
  489.  102510021999
  490.  
  491.  Thank you, from the deepest part of my heart.
  492.  
  493. !Okay, back to ThermoProtect. Now ThermoProtect is fully compatible with LM79,
  494.  I thought it was, but some of the code messes up LM79, now it is fixed...
  495.  Thanks to Bob Babcock for finding it out.
  496.  
  497. !EnvSetup.EXE user interface bug fix, now allows smoother operation.
  498.  
  499. @Now default delay is changed to 1.6 second, the lowest delay value is still
  500.  1 second. If you do not delete your enviro.cfg file, it will stay where you
  501.  set it at.
  502.  
  503.  
  504. Version V1.31 (Oct. 3rd, 1999)
  505. ------------------------------
  506.  
  507. *Now ThermoAlarm feature have been expanded to cover PipeMonitor operating
  508.  mode. You can now have the comfort and efficiency of SysBar/2's unique GUI,
  509.  as well as the peace of mind provided by ThermoAlarm.
  510.  
  511. !A bug that will show all the fans are monitored even when it is not, is now
  512.  fixed. Came as a surprise to me that no one noticed it as well. :)
  513.  
  514.  
  515. Version V1.32 (May. 16th, 2000)
  516. ------------------------------
  517.  
  518. *Now ThermoProtect will show thermal sensor #2 and #3 with slightly better
  519.  detail, as it now increments in steps of 0.5C instead of 1.0C. Both I/O
  520.  core and the shell are modified to add this feature.
  521.  
  522. @Voltage output to both named pipes and file will have fixed decimal point,
  523.  it will show 3 digits after the decimal point, regardless if the last one
  524.  or two digits are zero or not. This makes the named pipe output seems neater.
  525.  
  526.  
  527. Version V1.33 (May. 16th, 2000)
  528. ------------------------------
  529.  
  530. *Due to the last Peltier/Water Cooling disaster that I have here. (The SETI@Home
  531.  ran out of things to do, and the Peltier/Water Cooling managed to lower the CPU's
  532.  temperature below freezing point. When SETI@Home finally got something to do, it
  533.  melted the ice formed on the CPU, which then caused a short... Good thing that
  534.  it does not appear to have done real damage.) I decided that I need to have a small
  535.  program that can create CPU load to heat up the CPU to prevent the CPU going below
  536.  a pre-defined temperature limit. Thus Temperature Watch function was created.
  537.  It runs a small timed loop that does intensive float point and integer calculation,
  538.  which will heat up the CPU quite nicely.
  539.  
  540. *EnvSetup.exe now have 2 pages for the main menu, because there's too much feature
  541.  to fit in one page. :)
  542.  
  543.  
  544. Version V1.34 (May. 23th, 2000)
  545. ------------------------------
  546.  
  547. *Because the ThermoProtect's heating code does not work to my satisfaction, so I
  548.  started by putting the heating code in a thread of its own.  Now ThermoProtect's
  549.  main program will start and stop the heating thread on command, no longer would a
  550.  timed loop be needed in for heating purposes, ThermoProtect will heat the CPU to
  551.  just over the prescribed temperature and stop right there.  Because now the
  552.  heating code is in a different thread, it is a lot easier to show visual
  553.  indication that the heating thread is activated. (Yellow text and red background
  554.  in text mode, or "H" showing up in named pipe mode) Not only this, but I have set
  555.  the heating thread to Idle Priority, Delta 1.  This makes the system work smooth
  556.  as silk even when the heating function is activated, unlike what ThermoProtect
  557.  V1.33 does. (Well, it was a quick hack. :) ) I set the Delta to 1 because most
  558.  CPU "sucker" program (RC5/DES, SETI@Home, prime number finder and whatever else)
  559.  usually have their delta set to 0, and if anything goes wrong with them, I would
  560.  want my heating thread to be able to outclass them in the priority ranking, so
  561.  that it can work properly.
  562.  
  563.  Yipee! This is my first multi-threaded (or should I say, DUAL THREADED?) program,
  564.  and it is also my first program that actually NEEDS to have more than one thread.
  565.  :)
  566. [end]