home *** CD-ROM | disk | FTP | other *** search
/ ftp.pasteur.org/FAQ/ / ftp-pasteur-org-FAQ.zip / FAQ / msdos-programmer-faq / part1 next >
Internet Message Format  |  2004-05-09  |  38KB

  1. Path: senator-bedfellow.mit.edu!dreaderd!not-for-mail
  2. Message-ID: <msdos-programmer-faq/part1_1084010824@rtfm.mit.edu>
  3. Supersedes: <msdos-programmer-faq/part1_1081511793@rtfm.mit.edu>
  4. Expires: 19 Jun 2004 10:07:04 GMT
  5. X-Last-Updated: 2003/08/14
  6. From: jeffrey@carlyle.org (Jeffrey Carlyle)
  7. Sender: jeffrey@carlyle.org (Jeffrey Carlyle)
  8. Reply-To: jeffrey@carlyle.org (Jeffrey Carlyle)
  9. Approved: news-answers-request@MIT.edu
  10. Organization: JeffC.org
  11. Subject: comp.os.msdos.programmer FAQ part 1/5
  12. Newsgroups: comp.os.msdos.programmer,alt.msdos.programmer,comp.answers,alt.answers,news.answers
  13. Followup-To: poster
  14. Summary: Frequently asked questions from DOS programmers with tested answers.
  15. Originator: faqserv@penguin-lust.MIT.EDU
  16. Date: 08 May 2004 10:07:52 GMT
  17. Lines: 855
  18. NNTP-Posting-Host: penguin-lust.mit.edu
  19. X-Trace: 1084010872 senator-bedfellow.mit.edu 574 18.181.0.29
  20. Xref: senator-bedfellow.mit.edu comp.os.msdos.programmer:127442 alt.msdos.programmer:54820 comp.answers:57097 alt.answers:72785 news.answers:270985
  21.  
  22. Archive-name: msdos-programmer-faq/part1
  23. Comp-os-msdos-programmer-archive-name: dos-faq-pt1.txt
  24. Posting-frequency: 28 days
  25. Last-modified: 14 Aug 2003
  26.  
  27. comp.os.msdos.programmer FAQ Version 2003.08.14
  28.  
  29. This is the Frequently Asked Questions list for the newsgroup
  30. comp.os.msdos.programmer.
  31.  
  32. COPYRIGHT
  33.  
  34. Copyright 2003 by Jeffrey Carlyle. All rights reserved. This article is
  35. not in the public domain, but it may be redistributed so long as this
  36. notice, the acknowledgments, and the information on obtaining the latest
  37. copy of this list are retained and no fee is charged. The code fragments
  38. may be used freely; credit to the FAQ would be polite. This FAQ is not to
  39. be included in any static: archive (e.g. CD-ROM or book); however, a
  40. pointer to the FAQ may be included. See <Q:01.14> [Where can I get the
  41. latest copy of this FAQ list?] for a link to the latest version of the
  42. FAQ.)
  43.  
  44. This is part 1 of 5 parts.
  45.  
  46. TABLE OF CONTENTS
  47.  
  48. PART 1: (this part)
  49. Section 1.  General FAQ and Newsgroup Information
  50.   <Q:01.01> - Is MS-DOS Dead?
  51.   <Q:01.02> - What is this article for?
  52.   <Q:01.03> - Who has contributed to this article?
  53.   <Q:01.04> - How can I search this article for a particular topic?
  54.   <Q:01.05> - Are the answers guaranteed to be correct and complete?
  55.   <Q:01.06> - What is comp.os.msdos.programmer about?
  56.   <Q:01.07> - Is comp.os.msdos.programmer just for C programmers?
  57.   <Q:01.08> - What is comp.sys.ibm.pc.programmer?
  58.   <Q:01.09> - Is comp.os.msdos.programmer available as a mailing list?
  59.   <Q:01.10> - What's this netiquette?
  60.   <Q:01.11> - How can I learn more about Usenet?
  61.   <Q:01.12> - What other technical newsgroups should I know about?
  62.   <Q:01.13> - Where are FAQ lists archived?
  63.   <Q:01.14> - Where can I get the latest copy of this FAQ list?
  64.  
  65. Section 2.  General Reference
  66.   <Q:02.01> - Are there any good on-line references for PC hardware
  67.               components?
  68.   <Q:02.02> - Are there any good on-line references for PC interrupts?
  69.   <Q:02.03> - What and where is Ralf Brown's interrupt list?
  70.   <Q:02.04> - Where can I find lex, yacc, and language grammars?
  71.   <Q:02.05> - What's the best book to learn programming?
  72.   <Q:02.06> - Why won't my code work?
  73.   <Q:02.07> - Are there any good sources of example code?
  74.   <Q:02.08> - What and where is SNIPPETS?
  75.   <Q:02.09> - Is the source code MS-DOS available?
  76.   <Q:02.10> - What are my alternatives for MS-DOS compatible OSes?
  77.   <Q:02.11> - What and where is FreeDOS?
  78.   <Q:02.12> - Where can I find out about batch files?
  79.  
  80. PART 2: 
  81. Section 3.  Compile and link
  82.   <Q:03.01> - What the heck is DGROUP > 64K?
  83.   <Q:03.02> - How do I fix 'automatic data segment exceeds 64K' or 'stack
  84.               plus data exceed 64K'?
  85.   <Q:03.03> - Will Borland C code and Microsoft C code link together?
  86.   <Q:03.04> - Why did my program bomb at run time with 'floating point
  87.               formats not linked' or 'floating point not loaded'?
  88.   <Q:03.05> - How can I change the stack size in Borland's C compilers?
  89.   <Q:03.06> - What's the format of an .OBJ file?
  90.   <Q:03.07> - What's the format of an .EXE header?
  91.   <Q:03.08> - What's the difference between .COM and .EXE formats?
  92.   <Q:03.09> - How do I create a .COM file?
  93.   <Q:03.10> - Where is EXE2BIN located?
  94.   <Q:03.11> - What does this message mean: 'A20 already enabled so test
  95.               is meaning less?'
  96.  
  97. Section 4.  Keyboard
  98.   <Q:04.01> - How can I read a character without echoing it to the
  99.               screen, and without waiting for the user to press the Enter
  100.               key?
  101.   <Q:04.02> - How can I find out whether a character has been typed,
  102.               without waiting for one?
  103.   <Q:04.03> - How can I disable Ctrl-C/Ctrl-Break and/or Ctrl-Alt-Del?
  104.   <Q:04.04> - How can I disable the print screen function?
  105.   <Q:04.05> - How can my program turn NumLock (CapsLock, ScrollLock) on
  106.               or off?
  107.   <Q:04.06> - How can I speed up the keyboard's auto-repeat?
  108.   <Q:04.07> - What is the SysRq key for?
  109.   <Q:04.08> - How can my program tell what kind of keyboard is on the
  110.               system?
  111.   <Q:04.09> - How can I tell if input, output, or stderr has been
  112.               redirected?
  113.   <Q:04.10> - How can I increase the size of the keyboard buffer?
  114.   <Q:04.11> - How can I stuff characters into the keyboard buffer?
  115.  
  116. PART 3: 
  117. Section 5.  Disks and files
  118.   <Q:05.01> - What drive was the PC booted from?
  119.   <Q:05.02> - How can I boot from drive B:?
  120.   <Q:05.03> - Which real and virtual disk drives are valid?
  121.   <Q:05.04> - How can I make my single floppy drive both a: and b:?
  122.   <Q:05.05> - How can I disable access to a drive?
  123.   <Q:05.06> - How can a batch file test existence of a directory?
  124.   <Q:05.07> - Why won't my C program open a file with a path?
  125.   <Q:05.08> - How can I redirect printer output to a file?
  126.   <Q:05.09> - How can I redirect the output of a batch file?
  127.   <Q:05.10> - How can I redirect stderr?
  128.   <Q:05.11> - How can my program open more files than DOS's limit of 20?
  129.   <Q:05.12> - How can I read, create, change, or delete the volume label?
  130.   <Q:05.13> - How can I get the disk serial number?
  131.   <Q:05.14> - What's the format of .OBJ, .EXE., .COM files?
  132.   <Q:05.15> - How can I flush the software disk cache?
  133.   <Q:05.16> - How can I see if a drive is a RAM drive?
  134.   <Q:05.17> - How can I determine a hard drive's manufacturer?
  135.   <Q:05.18> - Where can I find information about the ATA/ATAPI
  136.               specification?
  137.   <Q:05.19> - How can I copy files to or from filenames containing date
  138.               information?
  139.  
  140. Section 6.  Serial ports (COM ports)
  141.   <Q:06.01> - How do I set my machine up to use COM3 and COM4?
  142.   <Q:06.02> - How do I find the I/O address of a COM port?
  143.   <Q:06.03> - But aren't the COM ports always at I/O addresses 3F8, 2F8,
  144.               3E8, and 2E8?
  145.   <Q:06.04> - How do I configure a COM port and use it to transmit data?
  146.  
  147. PART 4: 
  148. Section 7.  Other hardware questions and problems
  149.   <Q:07.01> - Which 80x86 CPU is running my program?
  150.   <Q:07.02> - How can a C program send control codes to my printer?
  151.   <Q:07.03> - How can I redirect printer output?
  152.   <Q:07.04> - Which video adapter is installed?
  153.   <Q:07.05> - How do I switch to 43- or 50-line mode?
  154.   <Q:07.06> - How can I find the Microsoft mouse position and button
  155.               status?
  156.   <Q:07.07> - How can I access a specific address in the PC's memory?
  157.   <Q:07.08> - How can I read or write my PC's CMOS memory?
  158.   <Q:07.09> - How can I access memory beyond 640K?
  159.   <Q:07.10> - How can I use the protected mode?
  160.   <Q:07.11> - How can I tell if my program is running on a PS/2-style
  161.               machine.
  162.   <Q:07.12> - Is there a 80x87 math unit installed?
  163.   <Q:07.13> - How can I power off the computer from a batch file?
  164.  
  165. Section 8.  Other software questions and problems
  166.   <Q:08.01> - How can a program reboot my PC?
  167.   <Q:08.02> - How can I time events with finer resolution than the system
  168.               clock's 55 ms (about 18 ticks a second)?
  169.   <Q:08.03> - How can I find the error level of the previous program?
  170.   <Q:08.04> - How can a program set DOS environment variables?
  171.   <Q:08.05> - How can I change the switch character to - from /?
  172.   <Q:08.06> - How can I write a TSR (terminate-stay-resident utility)?
  173.   <Q:08.07> - Why does my interrupt function behave strangely?
  174.   <Q:08.08> - How can I write a device driver?
  175.   <Q:08.09> - What can I use to manage versions of software?
  176.   <Q:08.10> - What's this 'null pointer assignment' after my C program
  177.               executes?
  178.   <Q:08.11> - How can a batch file tell whether it's being run in a DOS
  179.               box under Windows?
  180.   <Q:08.12> - How can my program tell if it's running under Windows?
  181.   <Q:08.13> - How can a program tell whether ANSI.SYS is installed?
  182.   <Q:08.14> - How do I copyright software that I write?
  183.   <Q:08.15> - How can I place date and time information into environment
  184.               variables?
  185.  
  186. PART 5: 
  187. Section 9.  Downloading
  188.   <Q:09.01> - What are SimTel and Garbo?
  189.   <Q:09.02> - Can I get archives on CD-ROM?
  190.   <Q:09.03> - Where do I find program <mumble>?
  191.  
  192. Section 10.  Vendors and products
  193.   <Q:10.01> - How can I contact Borland?
  194.   <Q:10.02> - How can I contact Microsoft?
  195.   <Q:10.03> - What is the current version of DJGPP?
  196.   <Q:10.04> - What and where is DJGPP?
  197.   <Q:10.05> - Are there any good shareware/freeware compilers?
  198.   <Q:10.06> - Where is QBASIC?
  199.   <Q:10.07> - What is a vendor's web site address?
  200.  
  201. ------------------------------
  202.  
  203. Subject: Section 1. General FAQ and Newsgroup Information
  204. Date: 5 Feb 2002 22:03:03 -0400
  205.  
  206.  The General FAQ and Newsgroup Information section contains information
  207.  about how to use the FAQ and the newsgroup.
  208.  
  209. ------------------------------
  210.  
  211. Subject: <Q:01.01> - Is MS-DOS Dead?
  212. Date: 7 Feb 2002 14:31:56 -0400
  213.  
  214.  No. Though Microsoft may not be actively developing MS-DOS there are
  215.  still many computers that are not capable of running Microsoft Windows.
  216.  The current versions of Microsoft Windows will also run most MS-DOS
  217.  programs; therefore, MS-DOS is not dead, and will most- likely never die
  218.  just as Commodore-64s and Amigas have not completely died.
  219.  
  220.  Indeed, DOS has found a new life in embedded systems. Other parties
  221.  continue to develop MS-DOS compatible operating systems for more
  222.  information see <Q:02.10> [What are my alternatives for MS-DOS
  223.  compatible OSes?]
  224.  
  225.  Windows NT, 2000, and XP all have a "Command Prompt" which is similar to
  226.  the orignal MS-DOS command prompt. The new Windows command prompt has
  227.  some differences from the original MS-DOS command prompty; see <Q:01.12>
  228.  [What other technical newsgroups should I know about?] for pointers on
  229.  where to learn about these diffences.
  230.  
  231. ------------------------------
  232.  
  233. Subject: <Q:01.02> - What is this article for?
  234. Date: 5 Feb 2002 22:03:03 -0400
  235.  
  236.  This is the FAQ (Frequently Asked Questions) list for the newsgroup
  237.  comp.os.msdos.programmer.
  238.  
  239.  FAQ lists are intended to reduce the noise level in their newsgroups
  240.  that results from the repetition of the same questions, correct answers,
  241.  wrong answers, corrections to the wrong answers, corrections to the
  242.  corrections, debate, etc.
  243.  
  244.  This list should serve as a repository of the canonical "best" answers
  245.  to the questions in it. The names of folks who have helped to improve
  246.  this FAQ list are listed in <Q:01.03> [Who has contributed to this
  247.  article?]
  248.  
  249. ------------------------------
  250.  
  251. Subject: <Q:01.03> - Who has contributed to this article?
  252. Date: 27 Jun 2003 07:18:11 -0400
  253.  
  254.  This list is maintained and edited by Jeffrey Carlyle. To contact him
  255.  send email to <mailto:jeffrey@carlyle.com> or visit his website at
  256.  <http://www.jeffc.org/> for more information.
  257.  
  258.  Stan Brown, as the former list maintainer, has been the major
  259.  contributor: Stan wrote most of this list.
  260.  
  261.  Many articles posted in comp.os.msdos.programmer sparked ideas or
  262.  provided information for the first version of this list. Though they are
  263.  not responsible for any errors, thanks are due to the following persons
  264.  for posted articles or private email that led to improvements in this
  265.  FAQ list:
  266.  
  267.  Jamshid Afshar, Mark Aitchison, Sanjay Aiyagari, George Almasi, Aaron
  268.  Auseth, Robert Baker, Preston Bannister, Scott Barman, Denis Beauregard,
  269.  Per Bergland, Mike Black, Chris Blum, Ron Bodkin, Mark Brader, Jon
  270.  Brinkmann, Andrew James Bromage, Glynn Brooks, Paul Brooks, Ralf Brown,
  271.  Stan Brown, Shaun Burnett, D'Arcy J.M. Cain, Jeffrey Carlyle, Raymond
  272.  Chen, Dale Curtis, Denny de Jonge, Eric DeVolder, Alan Drew, Paul
  273.  Ducklin, Gary Dueck, Dave Dunfield, Roland Eriksson, Mark Evans, Markus
  274.  Fischer, George Forsman, Roger Fulton, Vincent Giovannone, Robert
  275.  Grunloh, B.Haible, Janos Haide, Klaus Hartnegg, Kris Heidenstrom, Tom
  276.  Haapanen, Joel Hoffman, Ari Hovila, Chin Huang, Daniel P Hudson, Joe
  277.  Huffman, Michael Holin, Mike Iarrobino, Byrial Jensen, Rune Jorgensen,
  278.  Ajay Kamdar, Everett Kaser, Tim Kannel, JJ Keijser, Jeff Kellam, Igor
  279.  Kerp, Jen Kilmer, Reinhard Kirchner, Dave Kirsch, Chad Knudsen, Samuel
  280.  Ko, Jan Kotas, Janne Kukonlehto, Robert Luursema, Benjamin Lee, Stephen
  281.  Lee, Jim Lynch, Greg Malknecht, Sidney Markowitz, Jim Marks, Dimitri
  282.  Matzarakis, Fred McCall, Ken McKee, Doug Merrett, Tom Milner, Bill
  283.  Moore, Duncan Murdoch, Steve Murphy, Daniel Neri, Mert Nickerson, David
  284.  Nugent, John Oldenburg, David Pape, Keith Petersen, Kevin D. Quitt, Karl
  285.  Riedling, Arthur Rubin, Gerald Ruderman, Timo Salmi, Tapio Sand, Charles
  286.  Sandmann, John Schmid, Russell Schulz, Paul Schylter, Huseyin Sevay,
  287.  Adam Seychell, Ajay Shah, Bob Smith, John Stockton, Bob Stout, Sean
  288.  Sullivan, Steve Summit, Tom Swingle, Anders Thulin, Curt Tilmes, Rick
  289.  Watkins, Ya-Gui Wei, Morten Welinder, Joe Wells, Scott Winder, Gregory
  290.  Youngblood, Eli Zaretski, ceison@lis.net.au, khill@vax1.umkc.edu
  291.  
  292. ------------------------------
  293.  
  294. Subject: <Q:01.04> - How can I search this article for a particular
  295.         topic?
  296. Date: 5 Feb 2002 22:03:03 -0400
  297.  
  298.  To locate a certain word or phrase use your newsreader's, browser's, or
  299.  editor's search function.
  300.  
  301. ------------------------------
  302.  
  303. Subject: <Q:01.05> - Are the answers guaranteed to be correct and
  304.         complete?
  305. Date: 5 Feb 2002 22:03:03 -0400
  306.  
  307.  There has been an attempt to check all facts, but THERE IS NO WARRANTY
  308.  ON THE CODE OR ON THE TECHNIQUES DESCRIBED HEREIN. Please send
  309.  corrections to <mailto:jeffrey@carlyle.org>. All the code has been
  310.  tested; but the testing may not have been perfect, and machines and
  311.  configurations vary. (Except where otherwise noted, C code was tested
  312.  with MSC 5, BC++ 2.0, BC++ 4.x, MSVC 5, or MSVC 6.)
  313.  
  314.  The mention of particular books or programs must not be construed to
  315.  reflect unfavorably on any that are not mentioned.
  316.  
  317.  If you encounter any errors in the FAQ please contact me via email.
  318.  
  319. ------------------------------
  320.  
  321. Subject: <Q:01.06> - What is comp.os.msdos.programmer about?
  322. Date: 5 Feb 2002 22:03:03 -0400
  323.  
  324.  Comp.os.msdos.programmer (comp.sys.ibm.pc.programmer until September
  325.  1990) concerns programming for MS-DOS systems. The article "USENET
  326.  Readership report for Jul 94" in news.lists shows 120,000 readers of
  327.  this newsgroup worldwide. Traffic (exclusive of crossposts) was 1981
  328.  articles aggregating 3.1 Megabytes. It ranked as the 79th most popular
  329.  newsgroup.
  330.  
  331.  More programming topics in the newsgroup focus on C than on any one
  332.  other language, but we are not just for C programmers (see <Q:01.07> [Is
  333.  comp.os.msdos.programmer just for C programmers?]).
  334.  
  335.  Since most MS-DOS systems run on hardware that is roughly compatible
  336.  with the IBM PC, on Intel 8088, 80188, or 80x86 chips, we tend to get a
  337.  lot of questions and answers about programming other parts of the
  338.  hardware.
  339.  
  340. ------------------------------
  341.  
  342. Subject: <Q:01.07> - Is comp.os.msdos.programmer just for C programmers?
  343. Date: 7 Feb 2002 14:40:59 -0400
  344.  
  345.  No, it is for all programmers who want to share information about
  346.  programming in MS-DOS and DOS replacements like 4DOS. Programs and
  347.  questions are also posted in Pascal, assembly, and other languages
  348.  (including MS-DOS batch programming).
  349.  
  350.  Why does the newsgroup seem to be so C-oriented sometimes? There are two
  351.  reasons. First, comp.lang.c and comp.lang.pascal have evolved in
  352.  different directions. Comp.lang.pascal has split into discussions about
  353.  individual Pascal compilers. comp.lang.pascal.borland welcomes
  354.  discussion specific to Turbo Pascal, and the other new groups likewise.
  355.  Turbo Pascal programmers tend to find DOS questions welcomed in
  356.  comp.lang.pascal.borland, so that comp.os.msdos.programmer gets less of
  357.  the "DOS in Turbo Pascal" traffic. On the other hand, comp.lang.c has
  358.  stayed closer to talking only about the C language, and vendor-specific
  359.  or operating-system-specific questions are not welcome. This tends to
  360.  push questions about disks, DOS file structure, video, the keyboard,
  361.  TSRs, etc. to comp.os.msdos.programmer even when those programs are
  362.  written in C.
  363.  
  364.  This FAQ is definitely C-oriented, not because that's necessarily best
  365.  but because I tried to stick to what I could verify personally. As a C
  366.  programmer (with some assembler), I could most carefully verify
  367.  solutions in C or assembler. I felt that short, clear programs could be
  368.  published in just one language and programmers could translate them into
  369.  their languages of choice. But the FAQ list also contains several long
  370.  programs written only in C; this is a defect with no obvious remedy.
  371.  Most answers that point to source code at archive sites include both C-
  372.  and Pascal- language source when available.
  373.  
  374. ------------------------------
  375.  
  376. Subject: <Q:01.08> - What is comp.sys.ibm.pc.programmer?
  377. Date: 5 Feb 2002 22:03:03 -0400
  378.  
  379.  The newsgroup comp.sys.ibm.pc.programmer is the old name of the modern
  380.  newsgroup comp.os.msdos.programmer, and the old name has been obsolete
  381.  since September 1990; however, some systems may not have removed the old
  382.  group, or may have removed it but aliased it to the new name.This means
  383.  that some people still think they're posting to
  384.  comp.sys.ibm.pc.programmer even though they're actually posting to
  385.  comp.os.msdos.programmer.
  386.  
  387.  You can easily verify the non-existence of comp.sys.ibm.pc.programmer by
  388.  reference to the "List of Active Newsgroups" posted to news.groups. It's
  389.  available at:
  390.  
  391.  <ftp://rtfm.mit.edu/pub/usenet-by-group/news.answers/active-newsgroups>
  392.  
  393.  (For RTFM usage instructions see <Q:01.13> [Where are FAQ lists
  394.  archived?])
  395.  
  396. ------------------------------
  397.  
  398. Subject: <Q:01.09> - Is comp.os.msdos.programmer available as a mailing
  399.         list?
  400. Date: 5 Feb 2002 22:03:03 -0400
  401.  
  402.  Sorry, the newsgroup is not available as a mailing list.
  403.  
  404. ------------------------------
  405.  
  406. Subject: <Q:01.10> - What's this netiquette?
  407. Date: 5 Feb 2002 22:03:03 -0400
  408.  
  409.  Netiquette is good Usenet etiquette. It includes basic rules like the
  410.  ones below. (See also <Q:01.11> [How can I learn more about Usenet?])
  411.  
  412.  * Always read a newsgroup for a reasonable time before you post an
  413.    article to it.
  414.  
  415.  * Pick the one right group for your article; don't crosspost unless
  416.    absolutely necessary. If you absolutely must post an article to more
  417.    than one group, do crosspost it and don't post the same article
  418.    separately to each group. See <Q:01.12> [What other technical
  419.    newsgroups should I know about?] when considering where to post an
  420.    article.
  421.  
  422.  * Before you post a question, make sure you're posting to the right
  423.    newsgroup; the best way to do that is to observe the proceeding rule.
  424.    Check the group's FAQ list (if it has one) to make sure that your
  425.    question isn't already answered there; see <Q:01.13> [Where are FAQ
  426.    lists archived?]
  427.  
  428.  * When you post a question, if you ask for email responses then promise
  429.    to post a summary. Keep your promise. And make it a real summary:
  430.    don't just append all the email you got. Instead, write your own
  431.    (brief) description of the solution: this is the best way to make sure
  432.    you really understand it.
  433.  
  434.  * Before you post a follow-up, read the other follow-ups. Very often
  435.    you'll find that someone else has already made the point you had in
  436.    mind.
  437.  
  438.  * When someone posts a question, if you want to know the answer don't
  439.    post a "me, too". Instead send email to the poster asking him or her
  440.    to share responses with you.
  441.  
  442.  * When posting a follow-up to another posted article, remove all headers
  443.    and signature lines from the old article; just keep the line "In
  444.    <article>, so-and-so writes:". Also cut the original article down as
  445.    much as possible; just keep enough of it to remind readers of the
  446.    context.
  447.  
  448.  * Keep lines in posted articles to 72-75 characters. Many newsreaders
  449.    chop off column 81 or arbitrarily insert a newline there, which makes
  450.    longer lines difficult or impossible to read. But you need to keep
  451.    well below 80 characters per line to allow for the > characters that
  452.    get inserted when other people post follow-ups to your article.
  453.  
  454.  * Keep your signature to 4 lines or less (including any graphics) and
  455.    for heaven's sake make sure it doesn't get posted twice in your
  456.    article.
  457.  
  458.  * Don't post email without first obtaining the permission of the sender.
  459.  
  460. ------------------------------
  461.  
  462. Subject: <Q:01.11> - How can I learn more about Usenet?
  463. Date: 5 Feb 2002 22:03:03 -0400
  464.  
  465.  There are two important newsgroups for learning about how Usenet and
  466.  newsreader software works:
  467.  
  468.  * News.announce.newusers contains periodic postings that everybody is
  469.    asked to read before posting anything to Usenet. (In theory, all new
  470.    users are subscribed to news.announce.newusers automatically. But in
  471.    practice not all newsreader software does that, so that many people
  472.    violate the guidelines given there simply because they don't know
  473.    about them.)
  474.  
  475.  * News.newusers.questions is described as "Q & A for users new to the
  476.    Usenet". But new and long-time users can ask or answer questions about
  477.    Usenet and newsreader software there. There's an important article,
  478.    "Welcome to news.newusers.questions! (Weekly posting)", that everyone
  479.    is asked to read before posting to news.newusers.questions. (See below
  480.    for ways to get a copy of that article.)
  481.  
  482.  The following postings in news.announce.newusers might be considered the
  483.  "mandatory course" for new users:
  484.  
  485.  * Introduction to news.announce.newusers
  486.  
  487.  * What is Usenet
  488.  
  489.  * Answers to Frequently Asked Questions
  490.  
  491.  * Rules for posting to Usenet
  492.  
  493.  * A Primer on How to Work with the Usenet Community
  494.  
  495.  * Hints on writing style for Usenet
  496.  
  497.  * Emily Postnews Answers Your Questions on Netiquette
  498.  
  499.  The articles mentioned above are downloadable via ftp from rtfm.mit.edu
  500.  in the following files:
  501.  
  502.  Welcome to news.newusers.questions (Weekly posting):
  503.  <ftp://rtfm.mit.edu/pub/usenet-by-group/news.answers/news-newusers-intro>
  504.  
  505.  Introduction to news.announce.newusers:
  506.  <ftp://rtfm.mit.edu/pub/usenet-by-group/news.answers/news-announce/introduction/part1>
  507.  
  508.  What is Usenet:
  509.  <ftp://rtfm.mit.edu/pub/usenet-by-group/news.answers/usenet/what-is/part1>
  510.  <ftp://rtfm.mit.edu/pub/usenet-by-group/news.answers/usenet/what-is/part2>
  511.  
  512.  Answers to Frequently Asked Questions:
  513.  <ftp://rtfm.mit.edu/pub/usenet-by-group/news.answers/usenet/faq/part1>
  514.  
  515.  Rules for posting to Usenet:
  516.  <ftp://rtfm.mit.edu/pub/usenet-by-group/news.answers/usenet/posting-rules/part1>
  517.  
  518.  A Primer on How to Work with the Usenet Community:
  519.  <ftp://rtfm.mit.edu/pub/usenet-by-group/news.answers/usenet/primer/part1>
  520.  
  521.  Hints on writing style for Usenet:
  522.  <ftp://rtfm.mit.edu/pub/usenet-by-group/news.answers/usenet/writing-style/part1>
  523.  
  524.  Emily Postnews Answers Your Questions on Netiquette:
  525.  <ftp://rtfm.mit.edu/pub/usenet-by-group/news.answers/usenet/emily-postnews/part1>
  526.  
  527.  For rtfm.mit.edu instructions, see <Q:01.13> [Where are FAQ lists
  528.  archived?]
  529.  
  530. ------------------------------
  531.  
  532. Subject: <Q:01.12> - What other technical newsgroups should I know about?
  533. Date: 7 Feb 2002 14:35:45 -0400
  534.  
  535.  It is impractical to attempt to list all relevant newsgroups here. The
  536.  few that are listed are some of the older newsgroups. To find additional
  537.  groups use your newsreader's newsgroup search facility.
  538.  
  539.  Caution: Some of these newsgroups have specialized charters; you'll
  540.  probably get flamed (and deserve it) if you post to an inappropriate
  541.  group. Most groups have FAQ lists that will tell you what's appropriate.
  542.  Don't post a request for the FAQ list; instead, retrieve it yourself:
  543.  see <Q:01.13> [Where are FAQ lists archived?]
  544.  
  545.  * The various misc.forsale.computers.* are where you post notices of
  546.    equipment, software, or computer books that you want to sell. Please
  547.    don't post or crosspost those notices to comp.os.msdos.programmer.
  548.  
  549.  * The various comp.os.ms-windows.programmer.* groups (formerly
  550.    comp.windows.ms.programmer) are for articles specifict to the various
  551.    Microsoft Windows platforms.
  552.  
  553.  * The various comp.sys.ibm.pc.hardware.* groups are for more
  554.    hardware-oriented discussions of the machines that run DOS.
  555.  
  556.  * The various comp.lang.* groups for articles and questions on the
  557.    programming languages. Caution: some groups welcome discussions that
  558.    are operating-system dependent or vendor specific; others do not. For
  559.    example, comp.lang.c is definitely _not_ for questions about
  560.    programming DOS or PC system features, even if the programs are
  561.    written in C.
  562.  
  563.  * comp.binaries.ibm.pc.wanted: AFTER you have looked in the other
  564.    groups, this is the place to post a request for a particular binary
  565.    program.
  566.  
  567.  * comp.archives.msdos.announce (moderated) explains how to use the
  568.    archive sites, especially Garbo and SimTel, and lists files uploaded
  569.    to them. Discussions belong in comp.archives.msdos.d, which replaced
  570.    comp.binaries.ibm.pc.archives in December 1992.
  571.  
  572.  * comp.binaries.ibm.pc.d is for discussions about programs posted in
  573.    comp.binaries.ibm.pc, and only those programs. This is a good place to
  574.    report bugs in the programs, but not to ask where to find them (see
  575.    cbip.wanted, above). comp.binaries.ibm.pc.d is NOT supposed to be a
  576.    general PC discussion group.
  577.  
  578.  * comp.sources.misc: a moderated group for source code for many computer
  579.    systems. It tends to get lots of Unix stuff, but you may also pick up
  580.    some DOS-compatible code here.
  581.  
  582.  * alt.sources: an unmoderated group for source code. Guidelines are
  583.    posted periodically.
  584.  
  585.  * comp.os.msdos.djgpp is specifically for support of DJGPP. For more
  586.    information on DJGPP see <Q:10.04> [What and where is DJGPP?]
  587.  
  588.  * comp.os.msdos.programmer.turbovision is specifically for programming
  589.    in Turbo Vision.
  590.  
  591.  * rec.games.programmer discusses many graphics programming topics.
  592.  
  593.  * alt.msdos.batch specializes in the discussion of MS-DOS batch files.
  594.  
  595.  * alt.msdos.batch.nt specializes in the discussion of batch files for
  596.    Windows NT, 2000, and XP.
  597.  
  598. ------------------------------
  599.  
  600. Subject: <Q:01.13> - Where are FAQ lists archived?
  601. Date: 5 Feb 2002 22:03:03 -0400
  602.  
  603.  Very possibly the FAQ list you want is already at your site. Check the
  604.  newsgroup news.answers; if your site doesn't carry news.answers, check
  605.  comp.answers, rec.answers, etc., according to the top-level name in the
  606.  FAQ list's "home" newsgroup. Articles are posted to the *.answers groups
  607.  in a way that should make them last until the next versions are posted.
  608.  If they expire sooner at your site, you might want to lobby your
  609.  sysadmin to treat the moderated *.answers groups as a special case and
  610.  grant them longer expiration times than other groups.
  611.  
  612.  To ftp most FAQ lists, connect to
  613.  <ftp://rtfm.mit.edu/pub/usenet-by-group/news.answers>. The name of the
  614.  file that you want is the Archive-name from the top of the article. For
  615.  instance, if the Archive-name were software-eng/part1 you would retrieve
  616.  <ftp://rtfm.mit.edu/pub/usenet-by-group/news.answers/software-eng/part1>.
  617.  
  618.  By email (only if you have no ftp access, please), the server is
  619.  <mailto:mail-server@rtfm.mit.edu>. It accepts "send" commands that omit
  620.  the leading "/pub/" from file names; for example:
  621.  
  622.  send usenet-by-group/news.answers/software-eng/part1
  623.  
  624.  For full instructions about the mail server, send it a message
  625.  consisting of these two lines:
  626.  
  627.      help
  628.      index
  629.  
  630.  Not just FAQ lists, but every article listed in the "List of Periodic
  631.  Informational Postings" (LoPIP) can be obtained by ftp or email from
  632.  rtfm.mit.edu. If you have an old copy of an informational article, look
  633.  for an "Archive-name" at the beginning. The article is stored under that
  634.  name at <ftp://rtfm.mit.edu/pub/usenet-by-group/news.answers>. If the
  635.  article has no Archive-name, check the first name on the Newsgroups line
  636.  and change to that directory under
  637.  <ftp://rtfm.mit.edu/pub/usenet-by-group>.
  638.  
  639.  Stan Brown also maintains a FAQ on finding FAQs. It can be found at
  640.  <http://www.mindspring.com/~brahms/faqget.htm>.
  641.  
  642. ------------------------------
  643.  
  644. Subject: <Q:01.14> - Where can I get the latest copy of this FAQ list?
  645. Date: 14 Aug 2003 06:46:14 -0400
  646.  
  647.  The FAQ's home page is at <http://www.jeffc.org/msdos/>. The latest
  648.  version of the FAQ can always be found there.
  649.  
  650.  Additionally there are several sites that archive the FAQ list. A couple
  651.  of the more popular FAQ archives are
  652.  <ftp://rtfm.mit.edu/pub/usenet-by-group/news.answers/msdos-programmer-faq>
  653.  and
  654.  <http://www.faqs.org/faqs/by-newsgroup/comp/comp.os.msdos.programmer.html>.
  655.  
  656.  For more information on the FAQ archives, see <Q:01.13> [Where are FAQ
  657.  lists archived?]
  658.  
  659. ------------------------------
  660.  
  661. Subject: Section 2. General Reference
  662. Date: 5 Feb 2002 22:03:03 -0400
  663.  
  664.  The General Reference section contains information about finding popular
  665.  online MS-DOS reference materials.
  666.  
  667. ------------------------------
  668.  
  669. Subject: <Q:02.01> - Are there any good on-line references for PC
  670.         hardware components?
  671. Date: 8 Feb 2002 19:36:40 -0400
  672.  
  673.  Good reports of HELPPC21 have been posted. It is downloadable as:
  674.  <ftp://garbo.uwasa.fi/pc/programming/helppc21.zip>
  675.  
  676.  This hypertext system contains much information on ports and other
  677.  hardware, as well as some overlap with Ralf Brown's interrupt list
  678.  <Q:02.03> [What and where is Ralf Brown's interrupt list?]. It is
  679.  shareware ($25).
  680.  
  681.  Additional information (and more recent) information can be found in
  682.  Ralf Brown's interrupt list; see <Q:02.03> [What and where is Ralf
  683.  Brown's interrupt list?] for information on locating the list.
  684.  
  685. ------------------------------
  686.  
  687. Subject: <Q:02.02> - Are there any good on-line references for PC
  688.         interrupts?
  689. Date: 5 Feb 2002 22:03:03 -0400
  690.  
  691.  The definitive work is Ralf Brown's interrupt list. For more information
  692.  see <Q:02.03> [What and where is Ralf Brown's interrupt list?].
  693.  
  694. ------------------------------
  695.  
  696. Subject: <Q:02.03> - What and where is Ralf Brown's interrupt list?
  697. Date: 8 Feb 2002 19:37:16 -0400
  698.  
  699.  Ralf Brown's Interrupt List contains megabytes of information on
  700.  documented and (officially) undocumented BIOS and DOS interrupts, DOS
  701.  tables, and interrupts hooked by many software packages.
  702.  
  703.  The distribution files contain not only the actual list, but also a
  704.  collection of utilities and conversion programs for the list.
  705.  
  706.  Ralf Brown's Interrupt List can be downloaded from his page at:
  707.  <http://www.cs.cmu.edu/~ralf/files.html>
  708.  
  709.  HTML versions of Ralf Brown's Interrupt List can be found at:
  710.  
  711.  * <http://www.delorie.com/djgpp/doc/rbinter/>
  712.  
  713.  * <http://ctyme.com/rbrown.htm>
  714.  
  715.  Updates are announced in comp.archives.msdos.announce and on Ralf
  716.  Brown's web page at: <http://www.cs.cmu.edu/~ralf/>
  717.  
  718.  Ralf's web page contains the somewhat unassuming line: "[h]e is
  719.  well-known in cyberspace for maintaining the Interrupt List..." Ralf has
  720.  done astounding work as the maintainer of the list; his work has been
  721.  greatly appreciated by thousands of programmers.
  722.  
  723. ------------------------------
  724.  
  725. Subject: <Q:02.04> - Where can I find lex, yacc, and language grammars?
  726. Date: 5 Feb 2002 22:03:03 -0400
  727.  
  728.  The FAQ list of the comp.compilers newsgroup answers this for BASIC, C,
  729.  Pascal, and other languages. See <Q:01.13> [Where are FAQ lists
  730.  archived?]
  731.  
  732. ------------------------------
  733.  
  734. Subject: <Q:02.05> - What's the best book to learn programming?
  735. Date: 5 Feb 2002 22:03:03 -0400
  736.  
  737.  Sorry, this FAQ list cannot settle religious arguments.
  738.  
  739.  Much of the heat over this topic arises because each person believes
  740.  that the book that he or she learned from is the best book, but
  741.  different people have very different experiences of the same book. The
  742.  only person who can tell you which is the best book for learning a given
  743.  topic is you.
  744.  
  745.  Your best bet is to go to a fairly well stocked bookstore when you have
  746.  a couple of hours to spare. Start at one end of the shelf and work your
  747.  way methodically through every book that looks like it might cover what
  748.  you want to learn. Look at the tables of contents; read a page or two
  749.  from each book. Then make your decision. If money is a problem or if
  750.  you're not sure of your choice, check out your top two or three from
  751.  your library.
  752.  
  753. ------------------------------
  754.  
  755. Subject: <Q:02.06> - Why won't my code work?
  756. Date: 7 Feb 2002 14:44:40 -0400
  757.  
  758.  First you need to try to determine whether the problem is in your use of
  759.  the programming language or in your use of MS-DOS and your PC hardware.
  760.  (Your manual should tell you which features are standard and which are
  761.  vendor- or MS DOS- or PC-specific. You have read your manual carefully,
  762.  haven't you?)
  763.  
  764.  If the feature that seems to be working wrong is something related to
  765.  your PC hardware or to the internals of MS-DOS, this group is the right
  766.  place to ask. (Please check this FAQ list first, to make sure your
  767.  question isn't already answered here.)
  768.  
  769.  On the other hand, if your problem is with the programming language, the
  770.  comp.lang hierarchy (including comp.lang.pascal.* and comp.lang.c) is
  771.  probably a better resource. Please read the other group's FAQ list
  772.  thoroughly before posting. (These exist in comp.lang.c, comp.lang.c++,
  773.  comp.lang.modula3, comp.lang.lisp, comp.lang.perl; they may exist in
  774.  other groups as well. comp.lang.pascal.borland has a Mini-FAQ.) It's
  775.  almost never a good idea to crosspost between comp.os.msdos.programmer
  776.  and a language group.
  777.  
  778.  Before posting in either place, try to make your program as small as
  779.  possible while still exhibiting the bad behavior. Sometimes this alone
  780.  is enough to show you where the trouble is. Also edit your description
  781.  of the problem to be as short as possible. This makes it look more like
  782.  you tried to solve the problem on your own, and makes people more
  783.  inclined to try to help you. See also <Q:01.10> [What's this
  784.  netiquette?]
  785.  
  786. ------------------------------
  787.  
  788. Subject: <Q:02.07> - Are there any good sources of example code?
  789. Date: 5 Feb 2002 22:03:03 -0400
  790.  
  791.  Bob Stout maintains a very large archive called SNIPPETS. For more
  792.  information see <Q:02.08> [What and where is SNIPPETS?].
  793.  
  794. ------------------------------
  795.  
  796. Subject: <Q:02.08> - What and where is SNIPPETS?
  797. Date: 6 Feb 2002 00:00:45 -0400
  798.  
  799.  Excerpt from the SNIPPETS FAQ follows:
  800.  
  801.      The  SNIPPETS archive, maintained by Bob Stout, contains  public
  802.      domain/freeware portable C/C++ source code & instructional text.
  803.      There are more than 500 files, including:
  804.   
  805.        Approx.  56,000  lines  of  code + approx.  10,000  lines  of
  806.        tutorials.
  807.        Approx. 30% PC-specific, 70% portable
  808.        Approx. 6% C++-specific, 94% C/C++
  809.   
  810.      The  PC-specific functions are system-level utility  code  -  no
  811.      multimedia or GUI code. Tested on all popular PC compilers  plus
  812.      Unix  compilers  where  possible. An  eclectic  collection  with
  813.      everything  from  macros  to complete cut-and-paste  C/C++  code
  814.      solutions & utilities, along with FAQ and instructional files.
  815.  
  816.  Official SNIPPETS sites: <ftp://ftp.snippets.org/>
  817.  <http://www.snippets.org/>
  818.  
  819. ------------------------------
  820.  
  821. Subject: <Q:02.09> - Is the source code MS-DOS available?
  822. Date: 5 Feb 2002 22:03:03 -0400
  823.  
  824.  No, the source code to MS-DOS is not currently available; however, the
  825.  source code to an MS-DOS alternative known as FreeDOS is freely
  826.  available; see <Q:02.11> [What and where is FreeDOS?] for more
  827.  information.
  828.  
  829. ------------------------------
  830.  
  831. Subject: <Q:02.10> - What are my alternatives for MS-DOS compatible OSes?
  832. Date: 5 Feb 2002 22:03:03 -0400
  833.  
  834.  The FreeDOS Project (see <Q:02.11> [What and where is FreeDOS?]) has
  835.  created an open source MS-DOS compatible operating system known as
  836.  FreeDOS. Additionly, IBM has released an updated version of their PC-DOS
  837.  known as PC-DOS 2000.
  838.  
  839.  Lineo currently owns the rights to DR-DOS, but they appear to no longer
  840.  be developing or supporting it; however, one can still find DR-DOS and
  841.  even CP/M on their FTP site: <ftp://ftp.lineo.com/pub/drdos/>
  842.  
  843. ------------------------------
  844.  
  845. Subject: <Q:02.11> - What and where is FreeDOS?
  846. Date: 7 Feb 2002 00:49:45 -0400
  847.  
  848.  The FreeDOS Project creates and maintains FreeDOS an open source
  849.  operating system covered by the GNU General Public License. FreeDOS is a
  850.  functional operating system; however, they have not yet reached their
  851.  stated of goal of being able to run Windows and DOOM. The FreeDOS
  852.  Project has not accessed any Microsoft source code and is creating
  853.  FreeDOS from scratch.
  854.  
  855.  More information and the FreeDOS distribution itself can be found at:
  856.  <http://www.freedos.org>
  857.  
  858. ------------------------------
  859.  
  860. Subject: <Q:02.12> - Where can I find out about batch files?
  861. Date: 7 Feb 2002 12:59:56 -0400
  862.  
  863.  If the question is not answered elsewhere in this FAQ, it may be
  864.  answered in Timo Salmi's "Frequently Asked Questions about MS-DOS
  865.  batches." This list can be found at
  866.  <ftp://garbo.uwasa.fi/pc/link/tsbat.zip>.
  867.  
  868. ------------------------------
  869.  
  870. Subject: Conclusion
  871.  
  872. This is the end of part 1 of 5 parts.
  873.  
  874. This text is copyright 2003 by Jeffrey Carlyle. All rights reserved.
  875. Please see the top of this article for additional copyright information.
  876.  
  877.