Path: senator-bedfellow.mit.edu!dreaderd!not-for-mail Message-ID: Supersedes: Expires: 18 Jun 2006 04:18:05 GMT X-Last-Updated: 2003/08/14 From: jeffrey@carlyle.org (Jeffrey Carlyle) Sender: jeffrey@carlyle.org (Jeffrey Carlyle) Reply-To: jeffrey@carlyle.org (Jeffrey Carlyle) Approved: news-answers-request@MIT.edu Organization: JeffC.org Subject: comp.os.msdos.programmer FAQ part 1/5 Newsgroups: comp.os.msdos.programmer,alt.msdos.programmer,comp.answers,alt.answers,news.answers Followup-To: poster Summary: Frequently asked questions from DOS programmers with tested answers. Originator: faqserv@penguin-lust.mit.edu Date: 07 May 2006 04:18:07 GMT Lines: 855 NNTP-Posting-Host: penguin-lust.mit.edu X-Trace: 1146975487 senator-bedfellow.mit.edu 24622 18.181.0.29 Xref: senator-bedfellow.mit.edu comp.os.msdos.programmer:129714 alt.msdos.programmer:55965 comp.answers:63591 alt.answers:82211 news.answers:307543 Archive-name: msdos-programmer-faq/part1 Comp-os-msdos-programmer-archive-name: dos-faq-pt1.txt Posting-frequency: 28 days Last-modified: 14 Aug 2003 comp.os.msdos.programmer FAQ Version 2003.08.14 This is the Frequently Asked Questions list for the newsgroup comp.os.msdos.programmer. COPYRIGHT Copyright 2003 by Jeffrey Carlyle. All rights reserved. This article is not in the public domain, but it may be redistributed so long as this notice, the acknowledgments, and the information on obtaining the latest copy of this list are retained and no fee is charged. The code fragments may be used freely; credit to the FAQ would be polite. This FAQ is not to be included in any static: archive (e.g. CD-ROM or book); however, a pointer to the FAQ may be included. See [Where can I get the latest copy of this FAQ list?] for a link to the latest version of the FAQ.) This is part 1 of 5 parts. TABLE OF CONTENTS PART 1: (this part) Section 1. General FAQ and Newsgroup Information - Is MS-DOS Dead? - What is this article for? - Who has contributed to this article? - How can I search this article for a particular topic? - Are the answers guaranteed to be correct and complete? - What is comp.os.msdos.programmer about? - Is comp.os.msdos.programmer just for C programmers? - What is comp.sys.ibm.pc.programmer? - Is comp.os.msdos.programmer available as a mailing list? - What's this netiquette? - How can I learn more about Usenet? - What other technical newsgroups should I know about? - Where are FAQ lists archived? - Where can I get the latest copy of this FAQ list? Section 2. General Reference - Are there any good on-line references for PC hardware components? - Are there any good on-line references for PC interrupts? - What and where is Ralf Brown's interrupt list? - Where can I find lex, yacc, and language grammars? - What's the best book to learn programming? - Why won't my code work? - Are there any good sources of example code? - What and where is SNIPPETS? - Is the source code MS-DOS available? - What are my alternatives for MS-DOS compatible OSes? - What and where is FreeDOS? - Where can I find out about batch files? PART 2: Section 3. Compile and link - What the heck is DGROUP > 64K? - How do I fix 'automatic data segment exceeds 64K' or 'stack plus data exceed 64K'? - Will Borland C code and Microsoft C code link together? - Why did my program bomb at run time with 'floating point formats not linked' or 'floating point not loaded'? - How can I change the stack size in Borland's C compilers? - What's the format of an .OBJ file? - What's the format of an .EXE header? - What's the difference between .COM and .EXE formats? - How do I create a .COM file? - Where is EXE2BIN located? - What does this message mean: 'A20 already enabled so test is meaning less?' Section 4. Keyboard - How can I read a character without echoing it to the screen, and without waiting for the user to press the Enter key? - How can I find out whether a character has been typed, without waiting for one? - How can I disable Ctrl-C/Ctrl-Break and/or Ctrl-Alt-Del? - How can I disable the print screen function? - How can my program turn NumLock (CapsLock, ScrollLock) on or off? - How can I speed up the keyboard's auto-repeat? - What is the SysRq key for? - How can my program tell what kind of keyboard is on the system? - How can I tell if input, output, or stderr has been redirected? - How can I increase the size of the keyboard buffer? - How can I stuff characters into the keyboard buffer? PART 3: Section 5. Disks and files - What drive was the PC booted from? - How can I boot from drive B:? - Which real and virtual disk drives are valid? - How can I make my single floppy drive both a: and b:? - How can I disable access to a drive? - How can a batch file test existence of a directory? - Why won't my C program open a file with a path? - How can I redirect printer output to a file? - How can I redirect the output of a batch file? - How can I redirect stderr? - How can my program open more files than DOS's limit of 20? - How can I read, create, change, or delete the volume label? - How can I get the disk serial number? - What's the format of .OBJ, .EXE., .COM files? - How can I flush the software disk cache? - How can I see if a drive is a RAM drive? - How can I determine a hard drive's manufacturer? - Where can I find information about the ATA/ATAPI specification? - How can I copy files to or from filenames containing date information? Section 6. Serial ports (COM ports) - How do I set my machine up to use COM3 and COM4? - How do I find the I/O address of a COM port? - But aren't the COM ports always at I/O addresses 3F8, 2F8, 3E8, and 2E8? - How do I configure a COM port and use it to transmit data? PART 4: Section 7. Other hardware questions and problems - Which 80x86 CPU is running my program? - How can a C program send control codes to my printer? - How can I redirect printer output? - Which video adapter is installed? - How do I switch to 43- or 50-line mode? - How can I find the Microsoft mouse position and button status? - How can I access a specific address in the PC's memory? - How can I read or write my PC's CMOS memory? - How can I access memory beyond 640K? - How can I use the protected mode? - How can I tell if my program is running on a PS/2-style machine. - Is there a 80x87 math unit installed? - How can I power off the computer from a batch file? Section 8. Other software questions and problems - How can a program reboot my PC? - How can I time events with finer resolution than the system clock's 55 ms (about 18 ticks a second)? - How can I find the error level of the previous program? - How can a program set DOS environment variables? - How can I change the switch character to - from /? - How can I write a TSR (terminate-stay-resident utility)? - Why does my interrupt function behave strangely? - How can I write a device driver? - What can I use to manage versions of software? - What's this 'null pointer assignment' after my C program executes? - How can a batch file tell whether it's being run in a DOS box under Windows? - How can my program tell if it's running under Windows? - How can a program tell whether ANSI.SYS is installed? - How do I copyright software that I write? - How can I place date and time information into environment variables? PART 5: Section 9. Downloading - What are SimTel and Garbo? - Can I get archives on CD-ROM? - Where do I find program ? Section 10. Vendors and products - How can I contact Borland? - How can I contact Microsoft? - What is the current version of DJGPP? - What and where is DJGPP? - Are there any good shareware/freeware compilers? - Where is QBASIC? - What is a vendor's web site address? ------------------------------ Subject: Section 1. General FAQ and Newsgroup Information Date: 5 Feb 2002 22:03:03 -0400 The General FAQ and Newsgroup Information section contains information about how to use the FAQ and the newsgroup. ------------------------------ Subject: - Is MS-DOS Dead? Date: 7 Feb 2002 14:31:56 -0400 No. Though Microsoft may not be actively developing MS-DOS there are still many computers that are not capable of running Microsoft Windows. The current versions of Microsoft Windows will also run most MS-DOS programs; therefore, MS-DOS is not dead, and will most- likely never die just as Commodore-64s and Amigas have not completely died. Indeed, DOS has found a new life in embedded systems. Other parties continue to develop MS-DOS compatible operating systems for more information see [What are my alternatives for MS-DOS compatible OSes?] Windows NT, 2000, and XP all have a "Command Prompt" which is similar to the orignal MS-DOS command prompt. The new Windows command prompt has some differences from the original MS-DOS command prompty; see [What other technical newsgroups should I know about?] for pointers on where to learn about these diffences. ------------------------------ Subject: - What is this article for? Date: 5 Feb 2002 22:03:03 -0400 This is the FAQ (Frequently Asked Questions) list for the newsgroup comp.os.msdos.programmer. FAQ lists are intended to reduce the noise level in their newsgroups that results from the repetition of the same questions, correct answers, wrong answers, corrections to the wrong answers, corrections to the corrections, debate, etc. This list should serve as a repository of the canonical "best" answers to the questions in it. The names of folks who have helped to improve this FAQ list are listed in [Who has contributed to this article?] ------------------------------ Subject: - Who has contributed to this article? Date: 27 Jun 2003 07:18:11 -0400 This list is maintained and edited by Jeffrey Carlyle. To contact him send email to or visit his website at for more information. Stan Brown, as the former list maintainer, has been the major contributor: Stan wrote most of this list. Many articles posted in comp.os.msdos.programmer sparked ideas or provided information for the first version of this list. Though they are not responsible for any errors, thanks are due to the following persons for posted articles or private email that led to improvements in this FAQ list: Jamshid Afshar, Mark Aitchison, Sanjay Aiyagari, George Almasi, Aaron Auseth, Robert Baker, Preston Bannister, Scott Barman, Denis Beauregard, Per Bergland, Mike Black, Chris Blum, Ron Bodkin, Mark Brader, Jon Brinkmann, Andrew James Bromage, Glynn Brooks, Paul Brooks, Ralf Brown, Stan Brown, Shaun Burnett, D'Arcy J.M. Cain, Jeffrey Carlyle, Raymond Chen, Dale Curtis, Denny de Jonge, Eric DeVolder, Alan Drew, Paul Ducklin, Gary Dueck, Dave Dunfield, Roland Eriksson, Mark Evans, Markus Fischer, George Forsman, Roger Fulton, Vincent Giovannone, Robert Grunloh, B.Haible, Janos Haide, Klaus Hartnegg, Kris Heidenstrom, Tom Haapanen, Joel Hoffman, Ari Hovila, Chin Huang, Daniel P Hudson, Joe Huffman, Michael Holin, Mike Iarrobino, Byrial Jensen, Rune Jorgensen, Ajay Kamdar, Everett Kaser, Tim Kannel, JJ Keijser, Jeff Kellam, Igor Kerp, Jen Kilmer, Reinhard Kirchner, Dave Kirsch, Chad Knudsen, Samuel Ko, Jan Kotas, Janne Kukonlehto, Robert Luursema, Benjamin Lee, Stephen Lee, Jim Lynch, Greg Malknecht, Sidney Markowitz, Jim Marks, Dimitri Matzarakis, Fred McCall, Ken McKee, Doug Merrett, Tom Milner, Bill Moore, Duncan Murdoch, Steve Murphy, Daniel Neri, Mert Nickerson, David Nugent, John Oldenburg, David Pape, Keith Petersen, Kevin D. Quitt, Karl Riedling, Arthur Rubin, Gerald Ruderman, Timo Salmi, Tapio Sand, Charles Sandmann, John Schmid, Russell Schulz, Paul Schylter, Huseyin Sevay, Adam Seychell, Ajay Shah, Bob Smith, John Stockton, Bob Stout, Sean Sullivan, Steve Summit, Tom Swingle, Anders Thulin, Curt Tilmes, Rick Watkins, Ya-Gui Wei, Morten Welinder, Joe Wells, Scott Winder, Gregory Youngblood, Eli Zaretski, ceison@lis.net.au, khill@vax1.umkc.edu ------------------------------ Subject: - How can I search this article for a particular topic? Date: 5 Feb 2002 22:03:03 -0400 To locate a certain word or phrase use your newsreader's, browser's, or editor's search function. ------------------------------ Subject: - Are the answers guaranteed to be correct and complete? Date: 5 Feb 2002 22:03:03 -0400 There has been an attempt to check all facts, but THERE IS NO WARRANTY ON THE CODE OR ON THE TECHNIQUES DESCRIBED HEREIN. Please send corrections to . All the code has been tested; but the testing may not have been perfect, and machines and configurations vary. (Except where otherwise noted, C code was tested with MSC 5, BC++ 2.0, BC++ 4.x, MSVC 5, or MSVC 6.) The mention of particular books or programs must not be construed to reflect unfavorably on any that are not mentioned. If you encounter any errors in the FAQ please contact me via email. ------------------------------ Subject: - What is comp.os.msdos.programmer about? Date: 5 Feb 2002 22:03:03 -0400 Comp.os.msdos.programmer (comp.sys.ibm.pc.programmer until September 1990) concerns programming for MS-DOS systems. The article "USENET Readership report for Jul 94" in news.lists shows 120,000 readers of this newsgroup worldwide. Traffic (exclusive of crossposts) was 1981 articles aggregating 3.1 Megabytes. It ranked as the 79th most popular newsgroup. More programming topics in the newsgroup focus on C than on any one other language, but we are not just for C programmers (see [Is comp.os.msdos.programmer just for C programmers?]). Since most MS-DOS systems run on hardware that is roughly compatible with the IBM PC, on Intel 8088, 80188, or 80x86 chips, we tend to get a lot of questions and answers about programming other parts of the hardware. ------------------------------ Subject: - Is comp.os.msdos.programmer just for C programmers? Date: 7 Feb 2002 14:40:59 -0400 No, it is for all programmers who want to share information about programming in MS-DOS and DOS replacements like 4DOS. Programs and questions are also posted in Pascal, assembly, and other languages (including MS-DOS batch programming). Why does the newsgroup seem to be so C-oriented sometimes? There are two reasons. First, comp.lang.c and comp.lang.pascal have evolved in different directions. Comp.lang.pascal has split into discussions about individual Pascal compilers. comp.lang.pascal.borland welcomes discussion specific to Turbo Pascal, and the other new groups likewise. Turbo Pascal programmers tend to find DOS questions welcomed in comp.lang.pascal.borland, so that comp.os.msdos.programmer gets less of the "DOS in Turbo Pascal" traffic. On the other hand, comp.lang.c has stayed closer to talking only about the C language, and vendor-specific or operating-system-specific questions are not welcome. This tends to push questions about disks, DOS file structure, video, the keyboard, TSRs, etc. to comp.os.msdos.programmer even when those programs are written in C. This FAQ is definitely C-oriented, not because that's necessarily best but because I tried to stick to what I could verify personally. As a C programmer (with some assembler), I could most carefully verify solutions in C or assembler. I felt that short, clear programs could be published in just one language and programmers could translate them into their languages of choice. But the FAQ list also contains several long programs written only in C; this is a defect with no obvious remedy. Most answers that point to source code at archive sites include both C- and Pascal- language source when available. ------------------------------ Subject: - What is comp.sys.ibm.pc.programmer? Date: 5 Feb 2002 22:03:03 -0400 The newsgroup comp.sys.ibm.pc.programmer is the old name of the modern newsgroup comp.os.msdos.programmer, and the old name has been obsolete since September 1990; however, some systems may not have removed the old group, or may have removed it but aliased it to the new name.This means that some people still think they're posting to comp.sys.ibm.pc.programmer even though they're actually posting to comp.os.msdos.programmer. You can easily verify the non-existence of comp.sys.ibm.pc.programmer by reference to the "List of Active Newsgroups" posted to news.groups. It's available at: (For RTFM usage instructions see [Where are FAQ lists archived?]) ------------------------------ Subject: - Is comp.os.msdos.programmer available as a mailing list? Date: 5 Feb 2002 22:03:03 -0400 Sorry, the newsgroup is not available as a mailing list. ------------------------------ Subject: - What's this netiquette? Date: 5 Feb 2002 22:03:03 -0400 Netiquette is good Usenet etiquette. It includes basic rules like the ones below. (See also [How can I learn more about Usenet?]) * Always read a newsgroup for a reasonable time before you post an article to it. * Pick the one right group for your article; don't crosspost unless absolutely necessary. If you absolutely must post an article to more than one group, do crosspost it and don't post the same article separately to each group. See [What other technical newsgroups should I know about?] when considering where to post an article. * Before you post a question, make sure you're posting to the right newsgroup; the best way to do that is to observe the proceeding rule. Check the group's FAQ list (if it has one) to make sure that your question isn't already answered there; see [Where are FAQ lists archived?] * When you post a question, if you ask for email responses then promise to post a summary. Keep your promise. And make it a real summary: don't just append all the email you got. Instead, write your own (brief) description of the solution: this is the best way to make sure you really understand it. * Before you post a follow-up, read the other follow-ups. Very often you'll find that someone else has already made the point you had in mind. * When someone posts a question, if you want to know the answer don't post a "me, too". Instead send email to the poster asking him or her to share responses with you. * When posting a follow-up to another posted article, remove all headers and signature lines from the old article; just keep the line "In
, so-and-so writes:". Also cut the original article down as much as possible; just keep enough of it to remind readers of the context. * Keep lines in posted articles to 72-75 characters. Many newsreaders chop off column 81 or arbitrarily insert a newline there, which makes longer lines difficult or impossible to read. But you need to keep well below 80 characters per line to allow for the > characters that get inserted when other people post follow-ups to your article. * Keep your signature to 4 lines or less (including any graphics) and for heaven's sake make sure it doesn't get posted twice in your article. * Don't post email without first obtaining the permission of the sender. ------------------------------ Subject: - How can I learn more about Usenet? Date: 5 Feb 2002 22:03:03 -0400 There are two important newsgroups for learning about how Usenet and newsreader software works: * News.announce.newusers contains periodic postings that everybody is asked to read before posting anything to Usenet. (In theory, all new users are subscribed to news.announce.newusers automatically. But in practice not all newsreader software does that, so that many people violate the guidelines given there simply because they don't know about them.) * News.newusers.questions is described as "Q & A for users new to the Usenet". But new and long-time users can ask or answer questions about Usenet and newsreader software there. There's an important article, "Welcome to news.newusers.questions! (Weekly posting)", that everyone is asked to read before posting to news.newusers.questions. (See below for ways to get a copy of that article.) The following postings in news.announce.newusers might be considered the "mandatory course" for new users: * Introduction to news.announce.newusers * What is Usenet * Answers to Frequently Asked Questions * Rules for posting to Usenet * A Primer on How to Work with the Usenet Community * Hints on writing style for Usenet * Emily Postnews Answers Your Questions on Netiquette The articles mentioned above are downloadable via ftp from rtfm.mit.edu in the following files: Welcome to news.newusers.questions (Weekly posting): Introduction to news.announce.newusers: What is Usenet: Answers to Frequently Asked Questions: Rules for posting to Usenet: A Primer on How to Work with the Usenet Community: Hints on writing style for Usenet: Emily Postnews Answers Your Questions on Netiquette: For rtfm.mit.edu instructions, see [Where are FAQ lists archived?] ------------------------------ Subject: - What other technical newsgroups should I know about? Date: 7 Feb 2002 14:35:45 -0400 It is impractical to attempt to list all relevant newsgroups here. The few that are listed are some of the older newsgroups. To find additional groups use your newsreader's newsgroup search facility. Caution: Some of these newsgroups have specialized charters; you'll probably get flamed (and deserve it) if you post to an inappropriate group. Most groups have FAQ lists that will tell you what's appropriate. Don't post a request for the FAQ list; instead, retrieve it yourself: see [Where are FAQ lists archived?] * The various misc.forsale.computers.* are where you post notices of equipment, software, or computer books that you want to sell. Please don't post or crosspost those notices to comp.os.msdos.programmer. * The various comp.os.ms-windows.programmer.* groups (formerly comp.windows.ms.programmer) are for articles specifict to the various Microsoft Windows platforms. * The various comp.sys.ibm.pc.hardware.* groups are for more hardware-oriented discussions of the machines that run DOS. * The various comp.lang.* groups for articles and questions on the programming languages. Caution: some groups welcome discussions that are operating-system dependent or vendor specific; others do not. For example, comp.lang.c is definitely _not_ for questions about programming DOS or PC system features, even if the programs are written in C. * comp.binaries.ibm.pc.wanted: AFTER you have looked in the other groups, this is the place to post a request for a particular binary program. * comp.archives.msdos.announce (moderated) explains how to use the archive sites, especially Garbo and SimTel, and lists files uploaded to them. Discussions belong in comp.archives.msdos.d, which replaced comp.binaries.ibm.pc.archives in December 1992. * comp.binaries.ibm.pc.d is for discussions about programs posted in comp.binaries.ibm.pc, and only those programs. This is a good place to report bugs in the programs, but not to ask where to find them (see cbip.wanted, above). comp.binaries.ibm.pc.d is NOT supposed to be a general PC discussion group. * comp.sources.misc: a moderated group for source code for many computer systems. It tends to get lots of Unix stuff, but you may also pick up some DOS-compatible code here. * alt.sources: an unmoderated group for source code. Guidelines are posted periodically. * comp.os.msdos.djgpp is specifically for support of DJGPP. For more information on DJGPP see [What and where is DJGPP?] * comp.os.msdos.programmer.turbovision is specifically for programming in Turbo Vision. * rec.games.programmer discusses many graphics programming topics. * alt.msdos.batch specializes in the discussion of MS-DOS batch files. * alt.msdos.batch.nt specializes in the discussion of batch files for Windows NT, 2000, and XP. ------------------------------ Subject: - Where are FAQ lists archived? Date: 5 Feb 2002 22:03:03 -0400 Very possibly the FAQ list you want is already at your site. Check the newsgroup news.answers; if your site doesn't carry news.answers, check comp.answers, rec.answers, etc., according to the top-level name in the FAQ list's "home" newsgroup. Articles are posted to the *.answers groups in a way that should make them last until the next versions are posted. If they expire sooner at your site, you might want to lobby your sysadmin to treat the moderated *.answers groups as a special case and grant them longer expiration times than other groups. To ftp most FAQ lists, connect to . The name of the file that you want is the Archive-name from the top of the article. For instance, if the Archive-name were software-eng/part1 you would retrieve . By email (only if you have no ftp access, please), the server is . It accepts "send" commands that omit the leading "/pub/" from file names; for example: send usenet-by-group/news.answers/software-eng/part1 For full instructions about the mail server, send it a message consisting of these two lines: help index Not just FAQ lists, but every article listed in the "List of Periodic Informational Postings" (LoPIP) can be obtained by ftp or email from rtfm.mit.edu. If you have an old copy of an informational article, look for an "Archive-name" at the beginning. The article is stored under that name at . If the article has no Archive-name, check the first name on the Newsgroups line and change to that directory under . Stan Brown also maintains a FAQ on finding FAQs. It can be found at . ------------------------------ Subject: - Where can I get the latest copy of this FAQ list? Date: 14 Aug 2003 06:46:14 -0400 The FAQ's home page is at . The latest version of the FAQ can always be found there. Additionally there are several sites that archive the FAQ list. A couple of the more popular FAQ archives are and . For more information on the FAQ archives, see [Where are FAQ lists archived?] ------------------------------ Subject: Section 2. General Reference Date: 5 Feb 2002 22:03:03 -0400 The General Reference section contains information about finding popular online MS-DOS reference materials. ------------------------------ Subject: - Are there any good on-line references for PC hardware components? Date: 8 Feb 2002 19:36:40 -0400 Good reports of HELPPC21 have been posted. It is downloadable as: This hypertext system contains much information on ports and other hardware, as well as some overlap with Ralf Brown's interrupt list [What and where is Ralf Brown's interrupt list?]. It is shareware ($25). Additional information (and more recent) information can be found in Ralf Brown's interrupt list; see [What and where is Ralf Brown's interrupt list?] for information on locating the list. ------------------------------ Subject: - Are there any good on-line references for PC interrupts? Date: 5 Feb 2002 22:03:03 -0400 The definitive work is Ralf Brown's interrupt list. For more information see [What and where is Ralf Brown's interrupt list?]. ------------------------------ Subject: - What and where is Ralf Brown's interrupt list? Date: 8 Feb 2002 19:37:16 -0400 Ralf Brown's Interrupt List contains megabytes of information on documented and (officially) undocumented BIOS and DOS interrupts, DOS tables, and interrupts hooked by many software packages. The distribution files contain not only the actual list, but also a collection of utilities and conversion programs for the list. Ralf Brown's Interrupt List can be downloaded from his page at: HTML versions of Ralf Brown's Interrupt List can be found at: * * Updates are announced in comp.archives.msdos.announce and on Ralf Brown's web page at: Ralf's web page contains the somewhat unassuming line: "[h]e is well-known in cyberspace for maintaining the Interrupt List..." Ralf has done astounding work as the maintainer of the list; his work has been greatly appreciated by thousands of programmers. ------------------------------ Subject: - Where can I find lex, yacc, and language grammars? Date: 5 Feb 2002 22:03:03 -0400 The FAQ list of the comp.compilers newsgroup answers this for BASIC, C, Pascal, and other languages. See [Where are FAQ lists archived?] ------------------------------ Subject: - What's the best book to learn programming? Date: 5 Feb 2002 22:03:03 -0400 Sorry, this FAQ list cannot settle religious arguments. Much of the heat over this topic arises because each person believes that the book that he or she learned from is the best book, but different people have very different experiences of the same book. The only person who can tell you which is the best book for learning a given topic is you. Your best bet is to go to a fairly well stocked bookstore when you have a couple of hours to spare. Start at one end of the shelf and work your way methodically through every book that looks like it might cover what you want to learn. Look at the tables of contents; read a page or two from each book. Then make your decision. If money is a problem or if you're not sure of your choice, check out your top two or three from your library. ------------------------------ Subject: - Why won't my code work? Date: 7 Feb 2002 14:44:40 -0400 First you need to try to determine whether the problem is in your use of the programming language or in your use of MS-DOS and your PC hardware. (Your manual should tell you which features are standard and which are vendor- or MS DOS- or PC-specific. You have read your manual carefully, haven't you?) If the feature that seems to be working wrong is something related to your PC hardware or to the internals of MS-DOS, this group is the right place to ask. (Please check this FAQ list first, to make sure your question isn't already answered here.) On the other hand, if your problem is with the programming language, the comp.lang hierarchy (including comp.lang.pascal.* and comp.lang.c) is probably a better resource. Please read the other group's FAQ list thoroughly before posting. (These exist in comp.lang.c, comp.lang.c++, comp.lang.modula3, comp.lang.lisp, comp.lang.perl; they may exist in other groups as well. comp.lang.pascal.borland has a Mini-FAQ.) It's almost never a good idea to crosspost between comp.os.msdos.programmer and a language group. Before posting in either place, try to make your program as small as possible while still exhibiting the bad behavior. Sometimes this alone is enough to show you where the trouble is. Also edit your description of the problem to be as short as possible. This makes it look more like you tried to solve the problem on your own, and makes people more inclined to try to help you. See also [What's this netiquette?] ------------------------------ Subject: - Are there any good sources of example code? Date: 5 Feb 2002 22:03:03 -0400 Bob Stout maintains a very large archive called SNIPPETS. For more information see [What and where is SNIPPETS?]. ------------------------------ Subject: - What and where is SNIPPETS? Date: 6 Feb 2002 00:00:45 -0400 Excerpt from the SNIPPETS FAQ follows: The SNIPPETS archive, maintained by Bob Stout, contains public domain/freeware portable C/C++ source code & instructional text. There are more than 500 files, including: Approx. 56,000 lines of code + approx. 10,000 lines of tutorials. Approx. 30% PC-specific, 70% portable Approx. 6% C++-specific, 94% C/C++ The PC-specific functions are system-level utility code - no multimedia or GUI code. Tested on all popular PC compilers plus Unix compilers where possible. An eclectic collection with everything from macros to complete cut-and-paste C/C++ code solutions & utilities, along with FAQ and instructional files. Official SNIPPETS sites: ------------------------------ Subject: - Is the source code MS-DOS available? Date: 5 Feb 2002 22:03:03 -0400 No, the source code to MS-DOS is not currently available; however, the source code to an MS-DOS alternative known as FreeDOS is freely available; see [What and where is FreeDOS?] for more information. ------------------------------ Subject: - What are my alternatives for MS-DOS compatible OSes? Date: 5 Feb 2002 22:03:03 -0400 The FreeDOS Project (see [What and where is FreeDOS?]) has created an open source MS-DOS compatible operating system known as FreeDOS. Additionly, IBM has released an updated version of their PC-DOS known as PC-DOS 2000. Lineo currently owns the rights to DR-DOS, but they appear to no longer be developing or supporting it; however, one can still find DR-DOS and even CP/M on their FTP site: ------------------------------ Subject: - What and where is FreeDOS? Date: 7 Feb 2002 00:49:45 -0400 The FreeDOS Project creates and maintains FreeDOS an open source operating system covered by the GNU General Public License. FreeDOS is a functional operating system; however, they have not yet reached their stated of goal of being able to run Windows and DOOM. The FreeDOS Project has not accessed any Microsoft source code and is creating FreeDOS from scratch. More information and the FreeDOS distribution itself can be found at: ------------------------------ Subject: - Where can I find out about batch files? Date: 7 Feb 2002 12:59:56 -0400 If the question is not answered elsewhere in this FAQ, it may be answered in Timo Salmi's "Frequently Asked Questions about MS-DOS batches." This list can be found at . ------------------------------ Subject: Conclusion This is the end of part 1 of 5 parts. This text is copyright 2003 by Jeffrey Carlyle. All rights reserved. Please see the top of this article for additional copyright information.