Roger wrote:
> I finished reading the "Why We Love FreeDOS" book a few nights
> ago.  A really good read, and led myself to a similar conclusion,
> DOS/FreeDOS is a really good platform for learning and implementing
> initial experimental engineering for experimental or working hardware
> due to simplicity and bare metal access.

I'm glad you liked the book!

I also think FreeDOS is a great platform to learn about computing. One
reason is it is so simple; DOS has very few "moving parts" to confuse
things. I recently wrote an article for Allthingsopen.org about "how
FreeDOS boots" to help people understand how a computer boots up. If
you can understand this for a simple operating system like DOS, you
can use that to figure out the more complex operating systems like
Linux, Windows, and Mac. For example, DOS computers essentially do
this:

1. The computer powers on and does a Power On Self Test ("POST") to
verify that the hardware is working, then loads the kernel (FreeDOS)

2. The FreeDOS kernel reads \FDCONFIG.SYS (or \CONFIG.SYS) to read its
configuration - this might include SHELL to tell the kernel which user
shell to use

3. The kernel starts the user shell (or \COMMAND.COM if the shell was
not specified)

4. COMMAND.COM executes commands in \AUTOEXEC.BAT (or another file
like FDAUTO.BAT, if given) to set the initial environment

5. The user gets the ">" prompt and can type commands


Once you understand those steps, you can start to understand how more
complex operating systems boot up.


> No wonder I had such a difficult time with DOS, DOS was a morphed
> incarnation of CP/M.  Main difference, instead of a ready prompt,
> put the user at the C:\ prompt.
>
> I more so enjoy the Unix/Linux platform, all the software tends to
> co-exist more peacefully than the intricate parts of DOS.  On the
> flip, DOS is assembly, whereas Unix/Linux is primarily C programming
> language.  Unix/Linux, when using the command line, typing just flows
> far better than typing DOS commands.

Well, Unix/Linux and DOS have very different origins to solve
different problems - and because of that, they grew up quite
differently.

The main thing about Unix is that it was created with the idea that
each program should be specific and do one thing really well, and you
can combine programs to do something really cool. That design idea
meant that you didn't have "applications" on Unix, you had a set of
tools.

DOS was created for a different purpose. When IBM created the IBM PC
5150 in 1981, they needed an operating system to run on it, so the
computer could run programs. I'll save the backstory, but Microsoft
licensed a "DOS" from Seattle Computing, and that became the PC's DOS.
But DOS was not intended to be a set of tools like Unix. Instead, the
DOS command line was something you might use to do a few things like
format a floppy or edit a file, or do basic file management, but
mostly you just ran an application (such as the BASIC interpreter).
DOS has always been very application-based.

--

I'm very off-topic with this, but here's an example: 'cat' will print
the contents of a file (or files) to the terminal. 'tr' will translate
one character set to another character set, or delete characters from
a set. 'uniq' will remove duplicate lines from a file. 'sort' will
sort the lines in a file. And 'comm' will compare two files and print
the lines that are unique to file1, file2, or both.

Individually, these are interesting commands that you can use to do a
lot of different things. And by combining them in a specific way, you
can do something like find misspelled words in a text file:

(The first command just makes sure you have a correctly sorted list)

> $ sort /usr/share/dict/words > words

> $ cat hello.txt
Hi there! This is a demnstration of how to find misspelled words.

> $ cat hello.txt | tr A-Z a-z | tr -d '.,:;()?!' | tr ' ' '\n' | sort | uniq | 
> comm -2 -3 - words
demnstration


In other words: convert uppercase to lowercase, remove punctuation,
turn spaces into new-lines (each word will be on a separate line),
sort the list, remove duplicates, compare to the dictionary (the
'words' file') and only show the lines (words) that do NOT appear in
the dictionary.

So that just shows how to combine tools to do different things, rather
than relying on a single application to do it all for you. There's
tradeoffs either way for "tools" v "applications," I'm just showing an
example of "tools."


*The sort command was an original program from Unix 1st Edition
(November 1971), uniq arrived in Unix 3rd Edition (February 1973), and
tr and comm were both introduced in Unix 4th Edition (November 1973).


_______________________________________________
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user

Reply via email to